Jump to content

    

Вопрос по поводу перевода спецификации на RISC-V

Привет Всем! Задаю вопрос в здешней ветке т.к не знаю где лучше написать. Перевожу документацию на RISCV архитектуру. И возник вопрос что такое ABI application binary interface. как его следует понимать?

Share this post


Link to post
Share on other sites

https://ru.wikipedia.org/wiki/Двоичный_интерфейс_приложений

 

Добавлю, что, на мой взгляд, можно этот термин не переводить, потому что ABI - вполне сложившийся термин, такой же как GUI, API.

Share this post


Link to post
Share on other sites

А как понимать HART - Hardware thread используется при описании конвейера проца?

Share this post


Link to post
Share on other sites

это, по-моему, нужно развернуто пояснять

знаю, что подобная хрень применялась (впервые?) в UltraSPARC-ах - то есть вычисления параллелятся, то есть компилятор может пометить какие-то операции как независимые. а потом они выполняются последовательно - то есть вычислитель один и вот он считает, считает, а потом бац - обращение к памяти и остановка конвеера. а хитрая идея в том, чтобы в этот момент переключить регистры на другой поток и считать его... ну и так далее. при учете того, что из памяти выгодно вычитывать строку кэша и это занимает сотни  тактов процессора, то на этом казалось бы, можно сильно поднять производительность...

 

но интел со своими большими кэшами и аут-оф-ордер экзекьюшином сильно ультраспарк уделал... была у меня когда-то станция на ультраспарке - жалкое зрелище

 

Share this post


Link to post
Share on other sites
54 минуты назад, yes сказал:

а хитрая идея в том, чтобы в этот момент переключить регистры на другой поток и считать его... ну и так далее. при учете того, что из памяти выгодно вычитывать строку кэша и это занимает сотни  тактов процессора, то на этом казалось бы, можно сильно поднять производительность...

но интел со своими большими кэшами и аут-оф-ордер экзекьюшином сильно ультраспарк уделал... была у меня когда-то станция на ультраспарке - жалкое зрелище

У интела есть аналогичная фишка: "Hyper-threading". Работает подобным же образом.

Share this post


Link to post
Share on other sites
4 hours ago, jcxz said:

У интела есть аналогичная фишка: "Hyper-threading". Работает подобным же образом.

мне казалось, что у интела это разделено на уровне приложений / ОС. то есть как-бы "виртуальный процессор". в солярисе такого не видел - там внутри приложения, ну и там не удвоение, а увосьмирение, по-моему.

но спорить не буду, с таким софтом мало знаком. а привязано ли это к железу и почему интел ограничился только двумя "тредами" - самому интересно

 

 

Share this post


Link to post
Share on other sites

https://en.wikipedia.org/wiki/UltraSPARC_T1

он же OpenSPARC - то есть можно поковырять внутренности, но мне показался тяжелым Verilog, то есть либо писали "кодеры-макаки" под руководством архитекторов (а архитектурного описания в открытом коде не было), то ли вообще каким-то автоматическим тулом сгенерен, из более высокоуровневого

вот кстати статью нашел - то как в спарке и еще раньше было

https://en.wikipedia.org/wiki/Barrel_processor

то как в интеле

https://en.wikipedia.org/wiki/Simultaneous_multithreading

 

Share this post


Link to post
Share on other sites
On 7/15/2019 at 8:43 PM, yes said:

вот кстати статью нашел - то как в спарке и еще раньше было

https://en.wikipedia.org/wiki/Barrel_processor

то как в интеле

https://en.wikipedia.org/wiki/Simultaneous_multithreading

И какое это отношение имеет к HART ?

HART  - это чисто аппаратная поддержка потоков ни более и ни менее. А так как RISC это разработка студиозусов, то у них вся поддержка сведена к командам синхронизации. Даже однотактное переключение потоков не реализовано.

Share this post


Link to post
Share on other sites
22 minutes ago, Pavia said:

И какое это отношение имеет к HART ?

это два вариантк аппаратной поддержки потоков, которые используются в популярных архитектурах. хотелось бы узнать, как это сделано в Risc-V.

и если автор темы работает над переводом доки, то как он это объяснит там

Share this post


Link to post
Share on other sites

 

18 minutes ago, yes said:

хотелось бы узнать, как это сделано в Risc-V.

Дык, вроде никак не сделано. Единственное, что там упомянуто передача потоков от процессора к процессору через общую память.

Можно додумать, что от высоко производительного ядра к энергоэффективному.

Соответственно с чего вы решили что под HART понимается ниже следующее?

2 minutes ago, yes said:

это два вариантк аппаратной поддержки потоков

То что вы описали это разновидность параллельного конвейра, на основе внеочередного использования блоков АЛУ.

А как по мне HART, т.е аппаратная поддержка потоков, это совсем другое.

Share this post


Link to post
Share on other sites

так что это? если в двух словах возможно - объясните

я не готов читать спецификацию RISC-V, а википедия говорит

The privileged instruction set specification explicitly defines hardware threads, or harts. Multiple hardware threads are a common practice in more-capable computers. When one thread is stalled, waiting for memory, others can often proceed. Hardware threads can help make better use of the large number of registers and execution units in fast out-of-order CPUs. Finally, hardware threads can be a simple, powerful way to handle interrupts: No saving or restoring of registers is required, simply executing a different hardware thread. However, the only hardware thread required in a RISC-V computer is thread zero.

по моему, это очень соответствует тому как сделано в SPARC-е и возможно, что и интеловское HT подходит под такое описание

Share this post


Link to post
Share on other sites
4 hours ago, Pavia said:

То что вы описали это разновидность параллельного конвейра, на основе внеочередного использования блоков АЛУ.

если быть точным, то первый вариант (SPARC) как раз таки очередной, то есть in-order. и конвеер там один, в нем перемешаны инструкции из разных потоков. собственно эта была их "хитрая идея" и результат, как мне кажется, оказался не очень... в сопоставлении с труЪ оут-оф-ордер

 

Share this post


Link to post
Share on other sites

если уж офтопить: то из эмбедерского железа с аппаратными потоками можно столкнуться в XMOS-овских процах

https://www.xmos.com/products/general/silicon#xCORE-XS1

я пытался на такой некую замену ПЛИС сделать, но не получилось

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this