Я пытаюсь создать простой процессор в VHDL для FPGA Altera. Тем не менее я пытаюсь понять, как объяснить задержку, вызванную блоками ROM. Блоки ПЗУ сами могут иметь как входной адрес, так и выходные данные с синхронизацией или только тактовый сигнал ввода, дающий 1 или 2 такта синхронизации между запросом данных (установка адреса) и получением данных обратно.Как латентность ПЗУ учитывается при проектировании ЦП
Я могу понять, является ли ПЗУ по существу массивным мультиплексором данных, делая такие вещи, как прыжки, тривиально, потому что вы просто задаете адрес и следующий цикл тактовой синхронизации, там будет правильная инструкция! Я просто не совсем понимаю, как управлять этим с задержками между ПЗУ и ЦП. Из того, что я собираю, каждая инструкция должна знать, следует ли получать новую команду, изменять счетчик ПК (скачок) или срыв (сохраняйте ПК одинаково), но, конечно, если есть латентность в 2 цикла, инструкция потребуется знать за 2 цикла вперед?
Как можно писать ПК для такого рода систем?
Для справки, ширина данных памяти будет такого же размера, как и инструкции, поэтому каждая ячейка памяти хранит одну инструкцию.
Если вы выглядите достаточно далеко назад в микропроцессорном дизайне, многие процессоры занимали 4 такта на инструкцию, больше для сложных insts. Это дает вам один путь. Когда технология позволила более сложным проектам ЦП, они могли бы преодолеть это ограничение скорости путем «конвейерной обработки». Если вы посмотрите, вы найдете много литературы о конструкции конвейера ЦП. –