Моя схема собрана целиком внутри FPGA. Процессор ВМ2 взят из референсной wishbone-схемы от VSLAV, оттуда же взят контроллер прерываний и уарт. Добавлено ПЗУ 055, контроллер DRAM, ИРПР, контроллер RK05, ну и некоторые интерфейсные схемы для подключения оборудования - это все на скорость не влияет, конечно. Все работает на wb_clk=100 МГц. Я думаю, что все действительно упирается в контроллер DRAM, это самое узкое место. Других источников тормозов мне трудно представить.
Для чистоты эксперимента надо бы запускать код из статической памяти, но в моей использованной FPGA EP4CE10 просто не хватит ресурсов, чтобы выделить 64К SRAM для системы. Там же еще лежит и ПЗУ, и дисковые буфера, и кое-что по мелочи, Плюс, в той же FPGA отдельным модулем работает терминал VT52.
Думаю, что ближе к выходным попробую перенести ради эксперимента схему в более емкую FPGA, EP4CE22, тогда картина будет более правильной.
Если бы... Контроллер DRAM ведь тратит кучу тактов на обращение к памяти. Там и RAS, и CAS, и такты ожидания всякие. А поскольку процессор кеша не имеет, то выборка каждой инструкции будет сопровождаться такими тормозами.Даже если предположить, что память внешняя и тормозит проц, то на регистр+регистр это не сильно должно сказываться.
Я вполне допускаю, что использованный мной контроллер DRAM не самый оптимальный. Собственно, я его взял из комплекта китайских демонстрационных модулей, идущих вместе с платой. Самому ну совсем уж лень его делать. Надо, конечно, среди готовых корок попробовать поискать.




Ответить с цитированием