LINUX.ORG.RU

Опубликована ранняя версия неофициального эмулятора архитектуры Эльбрус 2000

 , , ,


7

2

Спустя нескольких месяцев разработки стала доступна первая версия набора патчей к QEMU, добавляющих поддержку отечественной архитектуры процессоров Эльбрус 2000.

На данный момент эмулятор поддерживает только 64-битные программы, скомпилированные под Linux. Реализованы почти 80% набора инструкций Эльбрус-8С.

Эмулятор был разработан используя:

Среди известных проблем:

  • эмулятор не является абсолютно точным. Полная документация на набор инструкций отсутствует, он был подвергнут методу обратной разработки, анализируя ассемблерный код, генерируемый компилятором, и его работу на реальном процессоре.
  • скорость работы эмулятора на Ryzen 2600X ниже Эльбрус-8С практически в 20 раз.
  • недостаток тестирования на реальных программах. На данный момент подтверждена работа busybox, coreutils, bash, некоторых бенчмарков и компилятора lcc.

Что примечательно, эмулятор разработан двумя участниками нашего форума: @numas13 и @a1batross.

>>> Исходный код

★★★★★

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

документация на процессор засекречена?

для чего?

заказчики - военные

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

а чем может похвастаться эльбрус?

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

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

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

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

чтобы вот так взять и похоронить наработки за 20-30 лет и начать всё с чистого листа

начинали бы они с чистого листа в топ500 попали лет через 20-30

Да, государство даёт деньги на ОКРы

чета мне кажется что эти деньги сравнимы с затратами на R&D какого-нибуть гиганта, разница в том что они окупают эти затраты

anonymous ()

вопрос

Так как же собрать платформу?

./configure –target-list=«e2k-softmmu»

не работает :(

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

но если ты можешь ответить, зачем военным процессор для «прямолинейных вычислений» - так не стесняйся, говори!

По-моему очевидно, что для начала им нужен хотя бы какой-то просто процессор, насколько возможно, собственной разработки. Так получилось, что кроме эльбрусов более-менее современных вариантов у РФ собственно и нет.

Байкалы с натяжкой можно назвать своими.

praseodim ★★★★★ ()

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

jekader ★★★★★ ()
Ответ на: Re: вопрос от anonymous

Re: вопрос

хотел под виндой в msys2 собрать…

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

Ещё сложнее ситуация с интерпретируемыми или транслируемыми в промежуточный код языками

В .Net всё делают компиляцию в llvm. Вроде и mono такое умела, и 3D движок Unity (через сторонний компилятор), но вроде всё пока нет возможности просто задать опцию компилятора «собрать под llvm»

Посмотрим, может и запилят

instant ()

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

tommy ★★★★★ ()

Не совсем понятно, что значит

эмулятор поддерживает только 64-битные программы, скомпилированные под Linux

Эмулятор же должен эмулировать процессор и давть возможность запускать произвольную ОС.

Или что эмулируется?

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

Релизована эмуляция только части архитектуры - регистры и команды процессора используемые в пользовательских приложениях (userspace) + используется функциональность qemu по трансляции системных вызовов из формата e2k-linux в x86_64-linux.
Эмуляции системных команд, регистров и таблиц, необходимой для запуска произвольной ОС нет.

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

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

внезапно «хотя бы какой-то» уже есть

Эльбрусы идеологически ближе к суперкомпьютерным системам, а для систем управления внезапно есть МЦСТ-R

МЦСТ-R1000 вроде бы «нормальный» (не VLIW), производится в россии и используется в комплексах СПРН (по данным википедии)

мой вопрос: для чего воякам процессор для «прямолинейных вычислений», когда есть нормальный RISC?
Что за задачи планируют решать на эльбрусе?

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

насколько возможно, собственной разработки

это ещё что за NIH-синдром? )))
если нужна гарантия отсутствия закладок, то достаточно понять устройство чужого проца и изготовить его клон на своём заводе

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

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

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

Впрочем, сорцы теперь открыты и о проекте знает весь мир. Может кто-то и найдется.

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

Что хуже проприетарной архитектуры? Правильно, засекреченная архитектура.

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

Благо, некоторая часть тривиальна и много времени не отняла.

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

А почему эльбрусы это не x86-совместим? Писать трансляторы, адаптировать компиляторы не просто.

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

a1batross ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

По такому эмулятору ISA можно будет определить степень оптимизации программы?

Если медленнее, значит более оптимизирована для реального железа. :) Эмуляция e2k не самая простая, поэтому бывали случаи когда неоптимизированная компилятором программа работала лучше, чем оптимизированная.

Или эмулятор просто обеспечивает возможность работы программ как таковых?

Скорее да. Эмуляции отдельных ALU нет, мы просто выполняем все инструкции одного бандла(длинной инструкции) последовательно.

Перефразирую, это такт в такт эмулятор?

Однозначно нет. В первую очередь наша работа – это фронтэнд к TCG, транслятору QEMU. Так работают все архитектуры, они переводятся в довольно ограниченный TCG IR, а затем компилируются в нативный код. К сожалению, не всё так можно транслировать, поэтому например целочисленные операции мы пытаемся транслировать , но вот для float или SIMD просто нет никакой возможности так сделать.

a1batross ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Хорошо бы закрыть новость для анонимов и удалить все анонимные сообщения

Не надо.

LongLiveUbuntu ★★★★★ ()

Ждите привет от товарища Майора!

Anonin ()

А теперь объясни каким боком это все касается реверса бинарника СВОЕЙ собственной программы?

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

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

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

МЦСТ-R1000 вроде бы «нормальный» (не VLIW), производится в россии и используется в комплексах СПРН (по данным википедии)

Эльбрус побыстрее будет.

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

это ещё что за NIH-синдром? ))) если нужна гарантия отсутствия закладок, то достаточно понять устройство чужого проца и изготовить его клон на своём заводе

Понять может быть сложнее своей разработки. Кроме того, эта разработка достаточно давно велась.

praseodim ★★★★★ ()

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

И вопрос такой: а насколько сложно реверснуть оставшиеся 20% инструкций?

И еще вопрос: какой смысл МЦСТ скрывать информацию о командах проца? Ведь рано или поздно реверс должен был появиться, вот он и появился. Еще немного, и будет практически полная спецификация в открытом доступе с растактовкой и всеми делами. Что скрывали - непонятно.

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

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

Хочется побыстрее всё сделать, а к делу надо подходить серьёзно. Моя тактика с «авось прокатит» в этот раз не прокатила. :)

В 3-й раз меня окончательно достало и я изучил что делает каждый бит getf.

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

И вопрос такой: а насколько сложно реверснуть оставшиеся 20% инструкций?

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

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

ты когда-нибудь сталкивался с двойным отказом ОЗУ? а с тройным? после вспышки на Солнце? так что ECC тебе никак не поможет?

и это в простом, сермяжном автозале IRL на этой Земле, без изысков, майора комбата, радиации от B61 и санитарок.

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

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

сразу видно, что ты полностью не в теме клонирования БИС!

начни с того, что поищи топологию склонированного Z80, там пасхалок хватало ;)

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

тебе уже ответили. и да, вопросы не ты будешь задавать,а тебе, «с моих слов записано верно, мною прочитано».

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

для радстойкого оборудования меньшие нм - это совсем не плюс

элюбрусы не радстойкие

http://www.mcst.ru/elbrus-8c

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

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

Вообще было бы хорошо если бы им кто объяснил то, что как только SiFive распространит свой Risc-V они не только упустят возможность занять транснациональную нишу со своим Эльбрусом

RISC-V ещё не скоро взлетит ИМХО. Там векторное расширение (которое позиционируется как альтернатива SIMD) ещё толком не задизайнено. А от того, что пока предлагают, плакать хочется. Простые операции вроде умножения массива вещественных чисел на другой массив вещественных чисел оно согласно своему концепту тянет, а вот по операции транспонирования матрицы есть масса вопросов.

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

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

Температурный диапазон от −60 до +85 градусов.

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

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

Впрочем, сорцы теперь открыты и о проекте знает весь мир. Может кто-то и найдется.

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

Для e2k есть документация и теперь эмулятор. Ждём новостей по компиляторам!

Ну и какой-то chroot, даже собранный lcc, но без МЦСТ-софта, надеюсь скоро появится возможность пощупать.

jekader ★★★★★ ()
Последнее исправление: jekader (всего исправлений: 1)

numas13 и a1batross просто молодцы! Желаю, чтобы ваш опенсорсный эмулятор был лучше официального!

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

поищи топологию склонированного Z80, там пасхалок хватало

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

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

С компиляторами и некоторыми GPL компонентами что-то обещали @cxqdev. У меня большие надежды на них.

Даже если это не кросс, то хотя бы можно будет запустить под эмулятором.

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

Чтобы улучшить ситуацию, в Эльбрусы собираются добавить предсказатель переходов, но это случится не ранее 7-го поколения

Предсказатель ковырять начали еще в 2013-2016-м году, вот только не в направлении ускорения выполнения, а в направлении снижения энергопотребления, что очень странно:

Опыт реализации предсказания переходов в микропроцессоре с архитектурой «Эльбрус»

С другой стороны, пишут, что «двухэтапная организация передачи управления в архитектуре Эльбрус (подготовка перехода и собственно переход) наряду с ограничениями предоставила и новую возможность, основанную на том, что адрес перехода заранее известен, что позволяет не предсказывать его на ходу». И типа это сильно упрощает передачу управления на новый адрес, например не нужно реализовывать Branch Target Buffer.

Вот только внедрение предсказателя замедлило систему на 2%.

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

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

я сравниваю нытьё разработчиков по отсутствию доступа к эмуляторам.. ситуации разные, нытьё одинаковое. -_-

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

90 градусов - это рабочая температура поверхности типового двигателя. А вообще, вот https://www.compel.ru/lib/54965

Все зависит от размещения вычислительного модуля. В автомобилях вполне допустимо использовать индустриальный диапазон, если вычислительный модуль находится, например, в салоне.

Даже для датчиков в моторах требование может быть выставлено вплоть до +150/200 °С, а для внутрикабинных датчиков рабочая температура может устанавливаться в пределах –30…+85 °С.

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

да понятно всё это нытьё, вкрации вся суть:

Милин Дмитрий 12 октября 2020 г. ·

(Из старого) [Злое из наболевшего, обстоятельства максимально изменены, поскольку мы с этим заказчиком всё-таки работаем]

Заказчик (З): Вот американцы делают такую фигнюшку за $1000 с такими вот параметрами. Вы нам такую сможете разработать (за собственный счет) и продать в количестве 100 штук за следующие 3-5 лет?

Мы (М): Да, сможем, хотя параметры будут чуть по хуже (но З. устроят и такие) и стоить это будет $7000.

З: КАК??? Как ваша российская продукция может стоить дороже американской у нас же ЗАРПЛАТА ИНЖЕНЕРОВ НА ПОРЯДОК НИЖЕ! Нам надо тоже самое, но по $700!!!

М: Так американцы продают этих фигнюшек 100 000 в год, по этому у них стоимость разработки размазывается по такому количеству и комплектующие в закупке на 100 000 шт. обходятся в разы дешевле, чем при закупке в 10-100 шт. Купите у нас 100 000 и будет вам по $700.

З: Нет, нам 100 000 не надо, нам надо 100 и частями по несколько десятков за 3-5 лет.

М: так купите у американцев!

З: Но у нас сейчас санкции нам не продают эти американские фигнюшки. поскольку они «двойного назначения».

[уходят обиженные]

[Возвращаются, соглашаемся на $3500, но мы уныло закрываем глаза на другие разработки, которые могли бы сделать на прибыль от этой]

[Конец соцреалистическрй драмы]

mumpster ★★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей