LINUX.ORG.RU

Можно ли на RISC-V динамически имитировать х86?

 , ,


0

1

Как я понимаю, у RISC-V инструкции и данные очень мелко «нарезаны», нет аппаратной реализации больших и сложных инструкций, как у х86. Получается, на RISC-V можно в принципе «собрать» все или почти все инструкции х86?

Всё точно так же, как и на ARM/MIPS.

x86 даже на всяких AVR можно имитировать тащемта.

Правда, не очень понятно нафига вообще это делать, кроме как ради прикола.

Stanson ★★★★★
()

Эмулировать, ты это хотел сказать?

Эмулировать, да, можно. Потери только будут.

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

Что-то как-то не припомню никакой линуксовой проприетарщины (VariCAD какой-нибудь?) которую имело бы смысл запускать на неPC.

А вендовая проприетарщина потребует, очевидно, ещё и венду гонять, которой для не x86 нету, и вся её блоатварная требуха тоже будет через эмулятор выполняться. Запустить-то можно, конечно, qemu в зубы и вперёд. Вот только это малоюзабельно будет.

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

венду гонять, которой для не x86 нету

А как они винду на Snapdragon™-ах гоняют?

https://docs.microsoft.com/en-us/windows-hardware/design/minimum/supported/windows-11-supported-qualcomm-processors

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

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

no-dashi-v2 ★★★
()
Ответ на: комментарий от turbognida

Не только. Яблоось на армах умеет выполнять старые только интеловые бинарники (которые не universal binary). При этом срабатывает JIT-подобный механизм который транслирует интеловый код в армовый который уже нативно выполняется.

no-dashi-v2 ★★★
()
Ответ на: комментарий от greenman

Ну у мелкософта-то есть сырцы венды. Пересобрали для себя да и всё. ТС-то откуда возьмёт не x86 венду?

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

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

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

ТС-то откуда возьмёт не x86 венду?

Реактось будет пересобирать :)

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

Нет, не эмулировать. Именно имитировать, на ходу собирая из мелких инструкций risc-v большие инструкции х86.

alex1101
() автор топика
Ответ на: комментарий от tiinn

Наверное, ровно за тем же, зачем и на машине с x86. Что RISC-V не позволяет создать десктоп?

Позволяет. Но гонять на нём ненативный софт-то зачем? Тем более под линуксом. Если это для себя - то нет проблем найти альтернативу и допилить нужные фичи. Если это для заказчика - пусть он и предоставляет проприетарный софт который он хочет запускать собранный под RISC-V.

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

Затем, что без описания конкретной конечной цели описанного в ОП извращения, что-то разумное посоветовать нереально.

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

Ну да, о том и речь.

To access this page, you need to be a member of the Windows Insider program.

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

Но гонять на нём ненативный софт-то зачем? Тем более под линуксом. Если это для себя - то нет проблем найти альтернативу и допилить нужные фичи.

Ну, гоняю же я под линуксом, пусть нативный, но закрытый xnViewMP! Наверное, потому, что аналогов не нашёл, а фичи допиливать не способен? А ещё, наверное, потому, что xnViewMP мне на ЛОРе посоветовали?

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

Наверное, потому, что аналогов не нашёл, а фичи допиливать не способен?

Ну так запустить его на RISC-V с приемлемой юзабельностью намного сложнее чем допилить фичи в опенсурсный аналог.

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

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

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

Нет, не эмулировать. Именно имитировать, на ходу собирая из мелких инструкций risc-v большие инструкции х86.

Полностью транслировать произвольный софт из x86 в risc-v инструкции невозможно. Можно JIT (qemu так умеет через tcg), можно в какой-то степени сделать AOT части кода (вроде бы это делает rosetta2), можно кэшировать результаты JIT’а и получить примерно то же самое, что и в AOT. Но в любом случае нужен будет фоллбэк на интерпретацию же. Вся прочая разница в терминах — маркетинг.

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

Что-то как-то не припомню никакой линуксовой проприетарщины

Ansys, Siemens NX, и ещё ворох другого подобного софта.

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

Ну так запустить его на RISC-V с приемлемой юзабельностью намного сложнее чем допилить фичи в опенсурсный аналог.

Тут такая проблема: кто может допилить фичи - те считают, что «ненужно». А те, кому действительно нужно - не могут допилить. Это, как с far для линукс: 20 лет ждали. Хотя, казалось бы, что сложного: взять исходники mc, и перепилить в far?

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

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

Я ж говорю - эмулировать x86 можно на чём угодно, хоть на AVR, хоть на Z80. Но чисто в академических целях.

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

Тут такая проблема: кто может допилить фичи - те считают, что «ненужно». А те, кому действительно нужно - не могут допилить.

Ну то же самое и с запуском на другой архитектуре. Те, кто может - не понимают смысла этой охоты. Те, кому нужно - не смогут запустить.

Это, как с far для линукс: 20 лет ждали. Хотя, казалось бы, что сложного: взять исходники mc, и перепилить в far?

mc и far весьма системоспецифичны. Особенно если учесть упоротость вендовой консоли. Это как софтину на GTK зачем-то переписывать на Qt, тем более если уже есть аналогичная софтина на Qt.

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

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

Потому что помимо процессора есть ещё ОС и бмблиотеки и для разных архитектур формат структур которыми обменивается софт и система может быть разным - выравнивание всякое, наличие или отсутствие полей и т.п. Хорошо хоть BE/LE нынче уже история.

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

Жаль. А почему?

Потому, что произвольный софт нереально анализировать не запустив, как минимум автоматически. А если запускать — это уже динамическая трансляция (= эмуляция, с jit как правило).

Как, например, ты собираешься транслировать JIT-компилятор?

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

ЕМНИП, там ещё «проще» – с какого-то момента исходники far стали открыты. «Всего-то» переписать windows-специфичный код под linux. (ага)

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

В общем случае нельзя, поскольку трансляция в x86 байт-код спецификациями и конструктивно не предусмотрена. Но в частном случае, если имеются незадокументированные аппаратные возможности, то да, такой финт ушами проделать можно.
Оффтоп: знакомый разраб пишет софтину под заказ, а в ТЗ записано пожелание обеспечит невозможность копирования базы. В общем случае сделать без костыля нельзя, спецификация файла БД разрешает манипуляции в любом направлении. Но в дескрипторе файла имеется поле из 4 байтов, куда запихивается служебная информация. Возможно динамически освобождать эти четыре байта и записывать туда проверочный код и сравнивать его с кодом из фронтэнда. Будет работать, я проверял.

Транслировать на лету в байт-код x86 умеет Эльбрус.

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

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

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

Ну мы же о RICS-V говорим, нет?

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

На полочке книжечка стоит по ядру на PowerPC-машинах, я когда-то скупал всё, что попадалось под руку. Вот надо глянуть, там есть описание спецификаций. Наверное не сильно устарело.

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

Это называется динамическая бинарная трансляция. Для app level это может быть условная qemu или любой другой аналог, оно не требует аппаратной поддержки. Еще есть system level DBT типа трансметы или денвера или эльбруса.

Отвечая на вопрос из треда: никаких одобренных спецификаций для ускорения бинарной трансляции на riscv нет. В будушем, может, появятся, но явно не для системной бинарки.

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

java-байткод куда проще, чем х86 isa. К тому же java vm стековая.

Подушню, но

Транслировать на лету в байт-код x86 умеет Эльбрус.

байткод тут совсем не уместный термин

steeels
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.