Было бы полезно создать аппаратные ускорители для перевода двоичных файлов между ISA? - PullRequest
0 голосов
/ 11 марта 2020

Можно ли создать аппаратный ускоритель, который помог бы программному обеспечению эмуляции переводить (перекомпилировать) двоичные файлы, например, из x86 в ARM, в режиме реального времени быстрее, чем это можно было бы сделать только программно?

Предполагая, что это возможно и рентабельно, может ли Intel / AMD предъявить иск компании, производящей эти ускорители, за нарушение патента?

1 Ответ

1 голос
/ 11 марта 2020

Можно ли создать аппаратный ускоритель, который помог бы программному обеспечению эмуляции переводить (перекомпилировать) двоичные файлы, например, из x86 в ARM в режиме реального времени, быстрее, чем это можно было бы сделать только программно?

Да. Многие современные процессоры в любом случае переводят инструкции во что-то другое (например, из инструкций 80x86 в микрооперации); таким образом, единственным существенным отличием (кроме языков исходного и конечного языков) будет сохранение переведенного кода после.

Основная проблема заключается в том, что это будет трудно и бесполезно. В частности, простой / прямой перевод будет неоптимизирован, и в результате переведенный код будет иметь серьезные проблемы с производительностью; и чем больше ускоритель пытается оптимизировать полученный код, тем больше сложность возрастает, пока вы не достигнете «слишком сложного для реализации на аппаратном уровне и все еще недостаточно оптимизированного». В качестве примера рассмотрим упорядочение памяти - ARM в основном «слабо упорядочен», а 80x86 в основном «строго упорядочено», что означает, что простой / прямой перевод будет вставлять ограждения / барьеры перед каждой загрузкой и хранением, и пытаться выяснить, Вы можете пропустить забор / барьер, который будет невероятно сложным.

Другая важная проблема - экономика. Требуется много долларов для финансирования исследований и проектирования, правильной проверки работоспособности микросхемы, покрытия затрат на улучшение производственных процессов, документации и маркетинга (попытка заставить людей реально использовать микросхему) и т. Д .; и чтобы быть устойчивым / прибыльным, чип должен иметь достаточное количество «проданных единиц * прибыли на чип», чтобы покрыть эти затраты.

Конечно, эти проблемы объединяются, чтобы сформировать обратную связь l oop (недостаточно $$ для ее улучшения). никто не хочет этого, что приводит к отсутствию продаж и прибыли, и для его улучшения не хватает $$), что, вероятно, станет смертельной спиралью к банкротству.

Предполагая, что это возможно и рентабельно, может ли Intel / AMD предъявить иск на эти ускорители за нарушение патента?

Это должно быть 2 вопроса:

  • Можете ли вы подать в суд? Да, кто угодно может подать в суд на кого угодно. Обратите внимание, что (по крайней мере, теоретически) существует тактика c использования «потенциально несерьезных» судебных исков для уничтожения прибыли и репутации компании. Подумайте о том, чтобы направить еще одну большую сумму в размере $$ на несколько лет работы юристов и одновременно направить большую сумму в размере «$$» в «спираль смерти к банкротству, которое ухудшилось (поскольку клиенты не уверены в случае нарушения патентных прав)».

  • Если Intel / AMD подаст на вас в суд за нарушение патента, выиграет ли Intel / AMD? Я не знаю (я не юрист); но я ожидаю, что это зависит от вашего продукта. Если вы поддерживаете только те вещи, которые настолько стары, что срок действия любых патентов истек (например, «32-битный 80x86 без SSE / AVX», аналогично тому, что Microsoft / Qualcomm делает со своим переводчиком программного обеспечения), тогда у вас будет много больше шансов избежать нарушения патента (и гораздо меньше шансов, что кто-то захочет получить чип, поддерживающий только устаревшие компоненты).

...