LINUX.ORG.RU

Опубликована система команд Эльбрус

 


1

4

http://elbrus.ru/efficient_elbrus_programming_book_2020-05

Кто хочет написать свой компилятор или доработать gcc/clang/whatever — велкам!

ЗЫ Кто хочет написать новость - тоже велкам.

Перемещено Zhbert из linux-hardware

★★★★★

Ответ на: комментарий от anonymous

Что-то деталей устройства системы кодирования команд я там не нашёл. Но зато там есть высокоуровневые описания принципов построения команд. При желании и наличии утилит из кросс-компилятора возможно отреверсить.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

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

МЦСТ кстати выпускали какие-нибудь эмуляторы, ну там патчи к QEMU нелицензионные, чтоб на x86-64 тестировать что-то, собранное под Эльбрусы?

SZT ★★★★ ()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от SZT

Только зачем это вообще надо

Ну не знаю. Ты вроде сам вопрошал про исходники binutils. Что-то с ними делать собирался?

эмуляторы

Не видел такое. Разве только в обрывочных интервью с разработчиками компилятора проскакивали упоминания о чрезвычайно тормозном и глючном симуляторе.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Ты вроде сам вопрошал про исходники binutils. Что-то с ними делать собирался?

Было интересно посмотреть, как у них кодируются инструкции. Кстати, опубликованная система команд эти детали не раскрывает.

SZT ★★★★ ()
Ответ на: комментарий от alexanius

Так изначально разговор про то что «нельзя написать компилятор потому что нет опкодов». Без опкодов компилятор пишется ничуть не хуже чем с ними.

Если что, то Эльбрусовский lcc точно также не знает опкодов :)

Компилятор-то написать конечно можно, если есть ассемблер. А если ассемблер тоже надо написать, что тогда? А JIT?

SZT ★★★★ ()
Ответ на: комментарий от SZT

Да ничего особо интересного. Выше аноним давал ссылку на http://mcst.ru/files/511cea/886487/1a8f40/000000/book_elbrus.pdf, где общих чертах описывается суть. Я немного поковырялся с objdump, скармливая ему разные последовательности байт, и получил примерно то же, что написано в приложении 4. Команды переменной длины. Начинаются с 32-битного заголовка, где указывается длина команды, число nop’ов и какие чанки есть в нагрузке. Дальше идут байты с нагрузкой. Последовательность видов чанков, похоже, фиксирована, поэтому достаточно выставленных битов, чтобы разобрать последовательность. Каждый чанк это 4 или 2 байта. Какие-то биты кодируют операции, туда я уже не копал. Видимо, команда может состоять из нескольких чанков, не обязательно лежащих подряд. Видимо, как-то группируются указания к действию и непосредственные значения операндов. Это описано в книжке, в том самом приложении 4, но вникать уже было лень.

Не знаю, чего я сам там особенного ожидал.

i-rinat ★★★★★ ()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от SZT

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

Но как минимум ядро останется под GPLv2, увы.

AS ★★★★★ ()
Ответ на: комментарий от SZT

Т.е. и сам комьютер, и бинарники, и исходники ты получаешь в любом случае только после подписания NDA.

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

Или нет, если NDA не распространяется на дальнейшее распространение исходников.

AS ★★★★★ ()
Ответ на: комментарий от SZT

Только зачем это вообще надо, учитывая непомерную стоимость самих Эльбрусов, и что домой его тебе просто так не продадут? Эмулятор разве что написать…

Если будет существовать независимый компилятор, то компьютеры можно будет продавать вообще без софта, и тогда не будет необходимости подписывать NDA.

Заодно он сможет стать дешевле.

МЦСТ кстати выпускали какие-нибудь эмуляторы, ну там патчи к QEMU нелицензионные, чтоб на x86-64 тестировать что-то, собранное под Эльбрусы?

Внутри МЦСТ он есть, но с ростом количества доступных процессоров как-то потерял актуальность. Может быть, с выходом свободного компилятора они снова им займутся и выложат, но это предположения.

Aceler ★★★★★ ()
Ответ на: комментарий от AS

Или нет, если NDA не распространяется на дальнейшее распространение исходников.

Ну это надо посмотреть текст этой самой NDA, что там можно и что нельзя. Я его лично не видел. Но исходников никто не выкладывал пока что, так что это там скорее всего запрещено.

SZT ★★★★ ()
Ответ на: комментарий от SZT

Но исходников никто не выкладывал пока что

Исходники binutils выложили. Правда, не особо официально. Видимо, просто забыли вычистить относящиеся к e2k файлы. Или просто надоело. Но они есть в публичном доступе.

i-rinat ★★★★★ ()
Ответ на: комментарий от SZT

Но исходников никто не выкладывал пока что, так что это там скорее всего запрещено.

Вот зачем кому-то их выкладывать? Очень может быть, что просто нет того, кто бы сделал это for fun. На самом деле интересен только lcc, но вот он не gpl.

AS ★★★★★ ()
Ответ на: комментарий от i-rinat

Исходники binutils выложили. Правда, не особо официально.

Альт для Эльбруса собирается из пакетов в Sisyphus, там всё в открытом доступе, и можно видеть патчи, которые делаются для Эльбруса (по крайней мере для пакетов актуальных версий; часть пакетов приходится держать старыми, их нет наверное). Толку? Это же для lcc патчи.

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от Aceler

Если будет существовать независимый компилятор, то компьютеры можно будет продавать вообще без софта, и тогда не будет необходимости подписывать NDA.

Ну компилятор-то написать наверное можно, но писать компиляторы для VLIW это весьма нетривиальная задача. По словам alexanius, в него-то как раз и вкладывается очень много усилий, чтобы Эльбрус кого-то мог удивить своей скоростью. Т.е. в каких-нибудь современных CISC архитектурах, вроде x86-64, там внешняя система команд декодируется на лету в какие-то микрооперации, а в VLIW эти микрооперации и есть сам ассемблер (поправьте, если я ошибаюсь). И за счет того, что эти преобразования не требуются, достигаются какие-то преимущества в энергопотреблении и прочем.

SZT ★★★★ ()
Ответ на: комментарий от AS

Вот зачем кому-то их выкладывать?

Для интересующихся системой команд. Ну и чтоб не было воплей по поводу того, что кто-то там не соблюдает лицензии GPL.

SZT ★★★★ ()
Ответ на: комментарий от i-rinat

Исходники binutils выложили. Правда, не особо официально. Видимо, просто забыли вычистить относящиеся к e2k файлы. Или просто надоело. Но они есть в публичном доступе.

Где конкретно? И что насчет исходников GDB и ядра?

SZT ★★★★ ()
Ответ на: комментарий от i-rinat

Я не нашёл в репах Альта исходников binutils с патчами для Эльбруса. Плохо искал?

Я про вообще: в %changelog разных пакетов, бывает, упоминается E2K.

AS ★★★★★ ()
Ответ на: комментарий от minihic112

А про влив я вообще ничего не говорил. Тебе лишь сообщили о его базовых свойствах.

«базовое свойство» VLIW только одно - тупой голый доступ к исполнительным устройствам, пушо планировщик команд выкинут нафиг - в данном случае пушо к.т.н. и д.т.н., защищавшие на нем свои «кирпичи», в сколь-либо сложный планировщик не осилили.

что никакой предсказатель ветвлений ничего не предсказывает и вообще никакого отношения к теме не имеет.

да-да, «не предсказывает», вот только - работает. в отличие от волшебного конпелятора, который пока существует только в фантазиях фанатов примитивных архитектур.

А если из данных можно вычленить какой-то паттерн доступный bp - у меня есть jit, да и вообще такая херня нахрен не нужна.

вот только пичаль в том, что «такая херня» дает % 30-40 прирост производительности по сравнению с тупыми архитектурами на сложных, ветвящихся алгоритмах.

ну а там где думать не надо - там да, тупые молотилки впереди планеты всей.

Влив - это 2 последних десятка развития суперскаляров.

бред же волшебный. пока что vliw в роли ЦП не использует НИКТО. кроме адептов секты «особого пути» и «лучшей школы», заряжавших воду перед экранами телевизоров каких-то 25-30 лет назад…

Тебе сообщили, что а) без компилятора суперскаляр не может ничего и сразу отказывается в 95. б) я нигде не говорил, что вливу нужен какой-то компилятор. Ты просто нажрался пропаганды, ко мне она отношения не имеет.

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

а VLIW - он даже на современных конпеляторах весьма уныл, а уж если конпелятор без оптимизаций - VLIW вообще откатывается в каменный век, конкурируя разве что с 486-м…

Ты опять обгадился. Никакие библиотеки никому не нужны, их крохи на фоне всего остального кода.

и опять вы тут публично обосрамшись.

идете в плэй маркет. выбираете десяток рандомных приложений посложнее калькулятора/блокнота. ищете их .apk (хоть с плеймаркета с бубном вытягиваете, хоть на сторонних ресурсах), открываете - и, о чудо, практически в каждом будет каталог /lib, в которой - наборы библиотек под разные ABI, пофасованные по каталогам.

К тому же, если одно совместимо с другим, то зачем нужно два? Ты опять обделался?

одно - 32бит, второе - 64. внезапно, не правда ли?

Абсолютно неважно то, что новое ядро обратно совместимо с базой. abi у них различаются, а то, что abi старого подмножество нового - ничего не значит.

хоть десяток, хоть два десятка новых ядер, хоть скалярные, хоть суперскалярные, хоть in-order, хоть out-of-order, хоть с 1 командой на такт, хоть с 4 - похрену, ABI один и тот же что для скалярного А5, что для суперскалярного 3-way OoO A15.

пушо есть планировщик команд, который решает. в отличие от тупого VLIW, где вместо планировщика - голые исполнительные устройства, высунутые попкой в жестокий внешний мир…

NiTr0 ★★★★★ ()
Ответ на: комментарий от minihic112

что бинарная трансляция костыль, тормозит и вообще «фу» и нужна для мусорного влива.

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

ну а использовать ее на и так тормозном (без волшебного конпелятора) VLIW - это будет эпик фейл. впрочем - «особый путь» он такой, да…

NiTr0 ★★★★★ ()
Ответ на: комментарий от NiTr0

да, программная бинарная трансляция - дикий тормоз.

Какое же нелепое трепло. Обделался, а теперь уже программная. А кто тебя, маня, про программную говорил? К тому же даже и тут обделался, потому как трансляция в интеле так же программная, т.е. программируемая.

особенно - если это трансляция на архитектуру с другим набором регистров

Ой, маня. Ты представляешь, а ведь у х86 так же другой набор геристров. Я тебе даже больше скажу - никаких регистров у х86 вообще нет.

и т.п. и поэтому никто в здравом уме ее не использует

Да, никто? Подожди, а как же х86? Ты там совсем поехал кукухой?

(и даже интел на последних эпиках, когда они вширь разрослись, таки аппаратные костыли для совместимости использовал а не программные).

Какие аппаратные, колхозник. Тебе никто ни про какие программные не говорил(хотя даже тут ты обделался). Тебе говорили про бинарную трансляцию, хардварную, маня. Внутри процессора которая, и приводили в пример эльбрус с его трансляцией, которая хардварная. Вернее программно-аппаратная, как и у интела. Да и везде.

К тому же, я тебе ещё большую тайну открою. Никаких тормозов у программной трансляции нет, потому как транслировать нужны лишь один раз. Везде и всюду существуют jit"ы и не тормозят, а тут наш гений нам сообщает, что они не работают.

ну а использовать ее на и так тормозном (без волшебного конпелятора) VLIW - это будет эпик фейл. впрочем - «особый путь» он такой, да…

Да, потуги достойные эникея запартного.

minihic112 ()
Ответ на: комментарий от NiTr0

«базовое свойство» VLIW только одно - тупой голый доступ к исполнительным устройствам, пушо планировщик команд выкинут нафиг - в данном случае пушо к.т.н. и д.т.н., защищавшие на нем свои «кирпичи», в сколь-либо сложный планировщик не осилили.

Ещё раз, эникей. Я понимаю, повторюсь, что ты после наката маздайке очередной домохозяйки википедию увидел и решил срывать покровы.

Никаких «исполнительных устройств» не существует, никакого голого доступа нет и никакой влив так не работает. И никакого планировщика нигде нет, а то что им называет интел - это, представляешь, тот же самый влив, который и находится внутри х86 и занимается всем.

да-да, «не предсказывает», вот только - работает. в отличие от волшебного конпелятора, который пока существует только в фантазиях фанатов примитивных архитектур.

Он не работает, эникей ты балаболистый. К тому же, тебе нужно отвечать не за работает, а за своё балабольство.

В целом ситуацию следующая. Сидит эникей и вылизывает жопу Васи, орёт «ко-ко-ко - я вылизываю потому, что солнце существовало, потому как если перестану - всё сломается», и ты просишь этого поехавшего обосновать за вылизывание жопы. И он начинает орать «ты что, солнце же существует. А миры без солнца только в волшебных сказках существуют».

Да, уровень аргументации и, самое важное, развития - поражает.

вот только пичаль в том, что «такая херня» дает % 30-40 прирост производительности по сравнению с тупыми архитектурами на сложных, ветвящихся алгоритмах.

Не даёт, ты обгадился.

ну а там где думать не надо - там да, тупые молотилки впереди планеты всей.

Ога, только почему-то полы моешь ты. Ну так бывает.

бред же волшебный. пока что vliw в роли ЦП не использует НИКТО.

Эникей с помойки, а что ты вообще знаешь о ЦП и о том, что там используется? Твоя задача жевать, а не думать и кукарекать - ты не для этого рождён был.

В целом ситуация такая же как и с бинарной трансляции. Так пердел, нигде не используется - тормозит и костыли, а потом такой факап. В школу.

кроме адептов секты «особого пути» и «лучшей школы», заряжавших воду перед экранами телевизоров каких-то 25-30 лет назад…

Ну да, особый пусть ведь. Очередной поломой с помойки ошибаться не может.

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

В общем потуги клоуна сродни тем, что кукарекали дошколята в районе 90/00. Так же орали про «а кому и зачем нужны ваши риски - всё это протухло, устарело». «софтварное всё для лохов, какой ещё компилятор - всё в железо засунем и будет круто».

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

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

Всё, ни на что кроме кодогена это не влияет. Ты обдегадился, опять.

а VLIW - он даже на современных конпеляторах весьма уныл, а уж если конпелятор без оптимизаций - VLIW вообще откатывается в каменный век, конкурируя разве что с 486-м…

Колхозник, давай пойдём поиграем в игру - используем компилятор без оптимизаций. Покажешь мне всю силу суперскаляра. Опять обгадишься?

идете в плэй маркет. выбираете десяток рандомных приложений посложнее калькулятора/блокнота. ищете их .apk (хоть с плеймаркета с бубном вытягиваете, хоть на сторонних ресурсах), открываете - и, о чудо, практически в каждом будет каталог /lib, в которой - наборы библиотек под разные ABI, пофасованные по каталогам.

О боже, трепло эникейное. Ты же кукарекало, что abi одно?

А я тебе сообщал, что никакого одного нет и 95% кода - жава, которой насрать. А нативный код собирается под десятки процессоров, и без проблем будет собираться под новое abi.

Ты побежал, загуглил и обделался? К тому же, тебе говорили не про использование библиотек, а о кол-ве этих самых библиотек. Потому как меня нужно её, а где и как она используется - хоть в каждом пакте - всем насрать.

одно - 32бит, второе - 64. внезапно, не правда ли?

И что, маня? Ты кукарекал, что abi одно и если его поменять - всё встанет и никто этого не допустит. Но в реальности все всё меняют и никаких проблем нет?

Проблемы есть только на маздае бездарном. Но он никого не интересует.

хоть десяток, хоть два десятка новых ядер, хоть скалярные, хоть суперскалярные, хоть in-order, хоть out-of-order, хоть с 1 командой на такт, хоть с 4 - похрену, ABI один и тот же что для скалярного А5, что для суперскалярного 3-way OoO A15.

Не один - ты обгадился. Они разные. Просто одно(более новое) может эмулировать abi более старого.

К тому же, эникей, а чего ты обделался на a15 - ты дальше кукарекай. Расскажи какое там одинаковое abi.

пушо есть планировщик команд, который решает. в отличие от тупого VLIW, где вместо планировщика - голые исполнительные устройства, высунутые попкой в жестокий внешний мир…

Ещё раз, ты уже в дерьмо нырнул, когда кукарекал. Повторю ещё раз- какое право очередной эникей имеет кукарекать о вливах, процессорах? Если максимум, что ему доступно - это мытьё полов?

Ты уже обгадился и вся совместимость как раз таки и работает на бинарной трансляции.

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

minihic112 ()
Ответ на: комментарий от NiTr0

бред же волшебный. пока что vliw в роли ЦП не использует НИКТО. кроме адептов секты «особого пути» и «лучшей школы», заряжавших воду перед экранами телевизоров каких-то 25-30 лет назад…

Nvidia.

  • Denver (2014).
  • Denver2 (2016).
  • Carmel (2018).
anonymous ()
Ответ на: комментарий от i-rinat

Я не нашёл в репах Альта исходников binutils с патчами для Эльбруса. Плохо искал?

А я нашёл кое-что: https://sourceware.org/git/?p=binutils-gdb.git;a=blob_plain;f=include/elf/com...
Тут есть строчка «#define EM_MCST_ELBRUS 175». Может и ещё что-то есть. Зачем-то же добавили...

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

Ну это да. Возьми какой-нибудь бинарник, собранный под e2k, и натрави на него file. Он тебе скажет, что это ELF для «MCST Elbrus». Но вот дизассемблера в исходниках нет.

i-rinat ★★★★★ ()
Ответ на: комментарий от SZT

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

mumpster ★★★★★ ()
Ответ на: комментарий от anonymous

по-моему нормальной информации на этот счёт нет. внешне это arm суперскалярный, там есть динамический транслятор, но это прям как в обычных процах micro-op cache

anonymous ()
Ответ на: комментарий от mumpster

GPL разрешает с исходниками делать всё, что угодно (что не запрещает GPL), даже можно распечать и запускать самолётики на балкон соседа.

А что там написано в NDA? Если запрещает (запускать самолетики с исходниками), то одно противоречит другому.

anonymous ()
Ответ на: комментарий от anonymous

написано что он in-order, но при этом

instructions can be reordered, removed if they do not contribute to the end result, or otherwise optimized

поделили на ноль

и что там есть

hardware translator

anonymous ()
Ответ на: комментарий от anonymous

поделили на ноль

Нет. Просто никакого «order» не существует - это птушный базворд. И сложно колхознику что-то объяснить. Его представления настолько нелепы, а способности настолько низки, что осилить он может только лозунги. И в нюансы никто вдаваться не будет.

hardware translator

Из этого ничего не следует. Очевидно, что дефолтные птушные архитектуры являются целиком и полностью несостоятельными, а что-то адекватное птушник просто не осилит. Поэтому приходится маневрировать.

minihic112 ()
Ответ на: комментарий от anonymous

VLIW с бинарной трансляцией, как Crusoe только для ARM, и простым аппаратным декодером. Декодер можно сравнить с интерпретатором в JVM, есть и работает, но для критичных участков есть JIT (DCO). Другими словами всё то, что @NiTr0 поливает говном.

Внимательно посмотри на формат инструкций Stanford Seminar - Dynamic Code Optimization and the NVIDIA Denver Processor

как в обычных процах micro-op cache

Нужен для снятия ограничения по декодеру (для x86 – 16 байт с оговорками) и уменьшению потреблению энергии в циклах умещаются в кеше.

anonymous ()
Ответ на: комментарий от Gorthauer

Реально. Но местные «списилисты» лучше в 100500й раз пошутят про «товарища майора» и китайцев (рили, парни, шутка, повторенная в миллионный раз, вызывает блёв), разведут срач про особенности кодогенерации gcc, помянут распил и прочее. Потому что там думать надо и программированием владеть.

anonymous ()