Эльбрус/архитектура: различия между версиями

Материал из ALT Linux Wiki
 
(не показано 6 промежуточных версий этого же участника)
Строка 4: Строка 4:
Оригинальная 64-битная Little Endian VLIW; также известна как "Эльбрус-2000" (сокращённо e2k).
Оригинальная 64-битная Little Endian VLIW; также известна как "Эльбрус-2000" (сокращённо e2k).


Не путать со SPARC и иными RISC, а также x86 (CISC).
[[эльбрус/faq|Не путать]] со SPARC и иными RISC, а также x86 (CISC).


[[Файл:E2k arch m.png|мини|right|Архитектура ядра Эльбрус]]
[[Файл:E2k arch m.png|мини|right|Архитектура ядра Эльбрус]]
Строка 10: Строка 10:
== Версии ==
== Версии ==


[[Модели процессоров Эльбрус|Микропроцессоры "Эльбрус"]] различаются версиями микроархитектуры и системы команд; на январь 2021 года известны следующие:
[[Модели процессоров Эльбрус|Микропроцессоры "Эльбрус"]] различаются версиями микроархитектуры и системы команд; на март 2022 года известны следующие:
* v2: "[[Эльбрус-2С+]]", "Эльбрус-2СМ" <small>(устарела с лета 2018<ref>нет поддержки в OSL после 3.0-rc35, где ядро 3.14.79 и компилятор 1.21.25</ref>)</small>
* v2: "[[Эльбрус-2С+]]", "Эльбрус-2СМ" <small>(устарела с лета 2018<ref>нет поддержки в OSL после 3.0-rc35, где ядро 3.14.79 и компилятор 1.21.25</ref>)</small>
* v3: "[[Эльбрус-4С]]" (уходящая) ''<small>e4c, он же e2s</small>''
* v3: "[[Эльбрус-4С]]" (уходящая) ''<small>e4c, он же e2s</small>''
* '''v4: "[[Эльбрус-8С]]", "[[Эльбрус-1С+]]" (актуальная)''' ''<small>e8c, он же p1; и e1cp, он же e1c+ или p2</small>''
* '''v4: "[[Эльбрус-8С]]", "[[Эльбрус-1С+]]"''' (предыдущая серийная) ''<small>e8c, он же p1; и e1cp, он же e1c+ или p2</small>''
* '''v5: "[[Эльбрус-8СВ]]"''' (серийная, расширенные векторные вычисления) ''<small>e8c2, он же p9</small>''
* '''v5: "[[Эльбрус-8СВ]]"''' (серийная, расширенные векторные вычисления) ''<small>e8c2, он же p9</small>''
* v6: "[[Эльбрус-16С]]", "[[Эльбрус-12С]]", "[[Эльбрус-2С3]]" (инженерные образцы, [https://www.youtube.com/watch?v=f_hwK0zM9y8&t=24m25s аппаратная] [http://wiki.elbrus.ru/virt виртуализация]) ''<small>e16c, e12c, e2c3</small>''
* '''v6: "[[Эльбрус-16С]]", "[[Эльбрус-12С]]", "[[Эльбрус-2С3]]"''' (инженерные образцы, [https://www.youtube.com/watch?v=f_hwK0zM9y8&t=24m25s аппаратная] [http://wiki.elbrus.ru/virt виртуализация]) ''<small>e16c, e12c, e2c3</small>''
* v7: "Эльбрус-32C", "Эльбрус-4C3" (перспективная) ''<small>e32c, e4c3</small>''
 
== Безопасность ==
 
Одной из ключевых особенностей e2k в любом режиме является наличие [http://habr.com/ru/company/embox/blog/447704/ трёх аппаратных стеков] -- с одной стороны это исключает срыв стека, с другой -- добавляет проблем при переносе ПО, которое пытается с предположительно единственным стеком крутить свои "штучки" (начиная с JIT).
 
В [[эльбрус/ptr128|защищённом режиме]] добавляется тегирование памяти, исключая ещё и переполнение массива.


== Совместимость ==
== Совместимость ==
Строка 22: Строка 29:


Также наблюдается хорошая совместимость v5-машин с кодом v4+ и достаточная как минимум для [[rescue]]-образа работоспособность кода v3+ на v6.
Также наблюдается хорошая совместимость v5-машин с кодом v4+ и достаточная как минимум для [[rescue]]-образа работоспособность кода v3+ на v6.
Это действительно для сборки с [[Эльбрус/оптимизация#-march/-mtune|<tt>-march</tt>, не <tt>-mtune</tt>]].


== Производительность ==
== Производительность ==
Строка 37: Строка 46:
** [http://ftp.altlinux.org/pub/people/mike/elbrus/docs/elbrus_prog/html/chapter10.html Система команд микропроцессора «Эльбрус»]
** [http://ftp.altlinux.org/pub/people/mike/elbrus/docs/elbrus_prog/html/chapter10.html Система команд микропроцессора «Эльбрус»]
* [http://www.elbrus.ru/elbrus_arch Краткое описание архитектуры Эльбрус]
* [http://www.elbrus.ru/elbrus_arch Краткое описание архитектуры Эльбрус]
* [http://mcst.ru/doc/book_121130.pdf Микропроцессоры и вычислительные комплексы семейства «Эльбрус»] (книга, [http://mcst.ru/files/511cea/886487/1a8f40/000000/book_elbrus.pdf PDF])
* [http://old.mcst.ru/doc/book_121130.pdf Микропроцессоры и вычислительные комплексы семейства «Эльбрус»] (книга, [http://mcst.ru/files/511cea/886487/1a8f40/000000/book_elbrus.pdf PDF])
* [http://mcst.ru/files/5c9c8f/e30cd8/509328/000000/t.r._mustafin_a._i._alyohin_e.m._kravtsunov_b.o._makaev_bezopasnaya_sreda_ispolneniya_kriticheskih_prilozheniy_vo_vstraivaemyh_sistemah_na_baze_vychislitelnyh_sredstv_semeystva_elbrus.pdf Безопасная среда исполнения критических приложений во встраиваемых системах на базе вычислительных средств семейства «Эльбрус»] (PDF)
* [http://mcst.ru/files/5c9c8f/e30cd8/509328/000000/t.r._mustafin_a._i._alyohin_e.m._kravtsunov_b.o._makaev_bezopasnaya_sreda_ispolneniya_kriticheskih_prilozheniy_vo_vstraivaemyh_sistemah_na_baze_vychislitelnyh_sredstv_semeystva_elbrus.pdf Безопасная среда исполнения критических приложений во встраиваемых системах на базе вычислительных средств семейства «Эльбрус»] (PDF)
* [http://mcst.ru/files/57571b/cf0cd8/50722d/000000/alfonsodemenkokozhin_i_dr-mikroarhitektura_vosmiyadernogo_mikroprotsessora.pdf Микроархитектура восьмиядерного универсального микропроцессора «Эльбрус-8C»]
* [http://mcst.ru/files/57571b/cf0cd8/50722d/000000/alfonsodemenkokozhin_i_dr-mikroarhitektura_vosmiyadernogo_mikroprotsessora.pdf Микроархитектура восьмиядерного универсального микропроцессора «Эльбрус-8C»]
Строка 58: Строка 67:
* [http://github.com/ilyakurdyukov/hello-asm hello-asm: примеры для Эльбруса на все режимы указателей (32, 64, 128)]
* [http://github.com/ilyakurdyukov/hello-asm hello-asm: примеры для Эльбруса на все режимы указателей (32, 64, 128)]
* [http://руни.рф/index.php/Эльбрус_(процессорная_архитектура) Эльбрус (процессорная архитектура)]
* [http://руни.рф/index.php/Эльбрус_(процессорная_архитектура) Эльбрус (процессорная архитектура)]
* [http://old.redstar.ru/2001/03/01_03/r_or21.html Покорение «Эльбруса»]


{{Category navigation|title=Модели процессоров Эльбрус|category=Модели процессоров Эльбрус|sortkey=*}}
{{Category navigation|title=Модели процессоров Эльбрус|category=Модели процессоров Эльбрус|sortkey=*}}
{{Category navigation|title=E2K|category=E2K|sortkey=*}}
{{Category navigation|title=E2K|category=E2K|sortkey=*}}
[[Category:Архитектура_Эльбрус]]

Текущая версия от 09:47, 11 сентября 2023

Elbrus arch.jpg

Архитектура "Эльбрус"

Оригинальная 64-битная Little Endian VLIW; также известна как "Эльбрус-2000" (сокращённо e2k).

Не путать со SPARC и иными RISC, а также x86 (CISC).

Архитектура ядра Эльбрус

Версии

Микропроцессоры "Эльбрус" различаются версиями микроархитектуры и системы команд; на март 2022 года известны следующие:

Безопасность

Одной из ключевых особенностей e2k в любом режиме является наличие трёх аппаратных стеков -- с одной стороны это исключает срыв стека, с другой -- добавляет проблем при переносе ПО, которое пытается с предположительно единственным стеком крутить свои "штучки" (начиная с JIT).

В защищённом режиме добавляется тегирование памяти, исключая ещё и переполнение массива.

Совместимость

В процессе портирования Альта была отмечена отличная практическая совместимость процессоров четвёртого поколения с бинарным кодом e2kv3, включая ядро, видеоподсистему и даже бинарный транслятор; официально она не гарантируется, хотя неофициально и подтверждается.

Также наблюдается хорошая совместимость v5-машин с кодом v4+ и достаточная как минимум для rescue-образа работоспособность кода v3+ на v6.

Это действительно для сборки с -march, не -mtune.

Производительность

При сборке под e2k для производительности и совместимости следует применять компилятор, настроенный под конкретную версию архитектуры (начиная с lcc 1.23 -- возможна настройка и под конкретный процессор).

При этом разница по 7za b, собранным под v3 и v4, на v4 составила у нас порядка процента.

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

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

Ссылки

  1. нет поддержки в OSL после 3.0-rc35, где ядро 3.14.79 и компилятор 1.21.25