Как правильно реализовать CISC Pipelined CPU? - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю над проектом для моего выпуска в колледже.Я уже сделал один конвейерный ЦП и смоделировал его в программе Logisim для одного из моих курсов, но теперь мне нужно перепрограммировать ЦП на мою ПЛИС и написать игру для этого ЦП.Поэтому я подумал улучшить свою архитектуру, а также изменил некоторые функции, потому что не знал, как это должно работать.Проблема с доступом к памяти, на первом изображении вы видите мой первый процессор.Логика была такой: чтение кода операции-> декодирование и подготовка операндов-> чтение памяти, если это необходимо-> проверка, если JMP (CJE, CJNE ...) -> арифметические и логические вычисления-> запись ответа в регистр или в память (я задержался здесь для1 такт по всему конвейеру, если необходимо, чтобы не конфликтовать с операциями чтения памяти - предотвращение опасности памяти).

Pipe1

CPU Diagram

Теперь я хочу вставить графику для моей игры и добавил еще один сегмент, который будет взаимодействовать с PPU (Picture Processing Unit).

Pipe2

Кроме того, я видел много примеров в Интернете, которые помещают сегмент памяти после сегмента выполнения, и это не понятно для меня.Как я могу реализовать код операции, как ADD A, MEM, если мне нужно прочитать переменную MEM из памяти, а затем добавить его в A?Или я что-то упустил?Не могли бы вы помочь мне с этим?

...