Даешь порт 1801вм1 на Verilator, даешь новый backend в Verilator, который транслируется в kernel-функции CUDA. Так победим! :)
Вид для печати
Даешь порт 1801вм1 на Verilator, даешь новый backend в Verilator, который транслируется в kernel-функции CUDA. Так победим! :)
Это был не аргумент, эта была информация к размышлению - за эти 37 я повидал очень много чего в компах :) Так что меня теперь очень трудно чем то новым удивить - подавляющее большинство идей, которые преподносятся (сейчас) как новые - мне уже знакомы :) Может, не все - практически, но - знакомы
Конкретно именно с SSE - нет, но однажды пришлось писать модуль обработки массива данных под одну железяку, в которой у проца был очень похожий (по идее) набор команд. Так что в самой идее SSE для меня - ничего нового.
Ну и применимо это дело для определённого класса алгоритмов. А значит, на обычных задачах этот модуль (в проце) будет простаивать. То есть получается, как в современных программах - объём кода - гигантский, но (условно говоря) - 99 процентов его используется в 1 проценте случаев использования :) Как не нравится мне это в программах, так не будет нравится и в процах :)
- - - Добавлено - - -
Он уже есть.
Аха, конечно :)
Это была шутка, на самом деле. Тему эту поднимали лет 10 тому. Модель работы verilator плохо ложится на много мелких CPU, большие накладные расходны на синхронзацию.
Не, Юр. У меня есть интересная идея с динамической трансляцией инструкций PDP-11 в микроинструкции и параллельном out-of-order исполнении на CUDA. Даже в недорогом Jetsone ресурсов хватит чтобы пытаться одновременно десяток инструкций транслировать, отслеживать зависимость аргументов и прочее. В итоге конвейер будет длинный, на десяток тактов и достаточно простой, но их будет много - несколько десятков слотов и с исполнением нескольких веток (ложные выбросим, правильные закоммитим в реальность), в итоге ретайрить на выходе 1-2 инструкции PDP за такт может быть реально, а FPGA встанут на подсос :). Интересно потрогать идею и сделать не сильно сложную реализацию, на CUDA оно видится проще и быстрее чем на HDL.
А верилог ВМ1 - он довольно линейный и не особо архитектурно поражает. Одно АЛУ на все-про-все? Не, для того транзисторного бюджета что тогда был - оно великолепно вышло. Но сейчас ресурсы немножко другие, можно попробовать другой интересный подход, хотя и программный. В CUDA на самом деле много интересного и способного удивить даже после многих лет классического опыта. Ну - меня, по крайней мере. Я не утратил способность радоваться и удивляться? Так победим! :)
Ясно :)
Наверное, имелись ввиду GPU? Если да - для меня ничего удивительного - GPU и CUDA заточены под исходно параллельные алгоритмы, то есть, скажем, какой-нибудь CRAY, скорее всего, будет проще сделать (ибо всякие вопросы синхронизации уже решены - в нём). А много ли параллелизма в PDP-11? :) Вот и придётся самому решать их в реализации под CUDA :)
Надо использовать нативную синхронизацию по данным, в GPU все есть для построения сложных конвейеров, но оно реально на общий случай ложится неважно. А вот продумать алгоритм чтобы нативные средства GPU использовать и задействовать их в эмуляции - результат может быть поразительным.
- - - Добавлено - - -
Параллелизьму в любом старом кода маловато. Но даже если out-of-order окажется неподъемным, то 1 такт на инструкцию должен получится, и в итоге - 1801ВМ1 на Jetson с эквивалентной частотой 3GHz. Как, на FPGA осилишь? :)
Согласен, что надо нативные средства синхронизации SM в gpu использовать. И тут конвейеры между блоками pdp-11 cpu ложаться идеально, кмк