Во-первых, это был не стековый процессор, а "стеково ориентированный". Два регистра, организованных в виде стека. Остальное в памяти. Смысл стековой организации резко стремится к нулю - при изменении глубины стека сразу идет обмен с памятью. Ожидалось, что проблема "решится компилятором", но это такая завлекательная фраза, и настолько общая, что когда она возникает, на 90% это источник проблем в дальнейшем.
Во-вторых, разработка для FPGA, и прототип на FPGA с целью последующего изготовления кремния - это все же разные вещи. На первых этапах людей убеждают, что HDL идут везде, но для профессиональной работы надо понимать разницу. FPGA представляют собой fine-grained устройства, и в этом качестве они образуют своеобразные опорные точки проекта. Существует отдельный термин targeting FPGA family (что было сделано, например, в моих уже довольно давних ядрах) - при описании на HDL имеются в виду конкретные компоненты FPGA и работа ячеек в определенных, удобных им режимах. Проблема в том, что на кремнии ничего этого нет, а есть вентили. С одной стороны, мелкие узлы схем так и будут мелкими, а с другой - крупные клубки лягут в FPGA предопределенными шаблонами, а на кремний - в виде мешанины. Тут работает второй миф - "топологи поправят, у них же кремний, он быстрый". А на деле он далеко не везде быстрее FPGA в N раз, потому что в FPGA тоже есть аппаратные блоки, идущие крупным куском. Они при переносе в ASIC не ускоряются. Поэтому когда приносят проект, работающий в FPGA, у топологов есть масса возможностей скорректировать его и масса советов, что править. И вот Технофорт встал в этом вопросе насмерть, потому что в проекте TF16 было много "полезных оптимизаций", которые на деле в ASIC никакими оптимизациями не являлись, и только добавляли мороки. А поправить было нельзя, потому что вместо, допустим, if cmd = 123, а еще лучше if cmd = CMD_ADD, в тексте была описана мешанина вентилей, которая делала то же самое, но, по замыслу авторов TF, была "оптимизирована". См. выше - она была оптимизирована разве что под конкретное семейство FPGA, а для разработчика топологии это все или нейтрально, или даже негативно.
В-третьих, при взгляде на систему команд у всех возникал один и тот же вопрос - "а Форт-то где?". От стекового процессора ожидается, что будет что-то уровня DUP DROP + , вплоть до IF WHILE REPEAT. Там же были отдельные куски, из которых должны собираться слова Форта. Да, компилятором. Да, его надо написать. Нет, при обоснованной необходимости что-то поправить ничего правиться не будет - чип уже запущен в производство.
В итоге все пошло по кругу: 1. "Почему ваш процессор медленный и неудобный?" - "Ну, зато это Форт-процессор!" 2. "Хорошо, а зачем Форт-процессор?" - "Чтобы было быстро и удобно!" И переходим к п. 1.
|