Забавный вопрос.
Одним из свойств архитектур RISC является операция регистр-регистр. То есть все операнды для команд вычислений, таких как ADD, уже должны быть в регистрах. Это позволяет реализациям RISC использовать обычный конвейер, такой как конвейер IF-ID-EX-MEM-WB, который вы упомянули в своем вопросе. Это ограничение также упрощает доступ к памяти и исключения. Например, если единственными инструкциями для чтения данных из памяти являются инструкции загрузки, и если эти инструкции имеют только простой режим адресации, такой как регистр + смещение, то данная инструкция может вызывать не более одного исключения защиты памяти.
В отличие от этого, архитектуры CISC обычно допускают режимы адресации богатых операндов, такие как косвенный регистр, и индексированные, как в вашем вопросе. Реализации этих архитектур часто имеют нерегулярный конвейер, который может зависнуть, когда происходит один или несколько обращений к памяти, прежде чем операнды станут доступны для вычисления (ADD и т. Д.).
Тем не менее, микроархитектуры успешно конвейеризировали архитектуры CISC. Например, у Intel 486 был конвейер, который позволял операндам и результатам считываться / записываться в память. Таким образом, при реализации ADD [eax], 42, был этап конвейера для чтения [eax] из d-кэша 8 КБ, этап конвейера для выполнения добавления и еще один этап конвейера для записи суммы в [eax] .
Поскольку использование команд и операндов CISC динамически довольно неоднозначно и нерегулярно, ваша схема конвейера должна быть достаточно длинной, чтобы учесть наихудший случай, например, множественные операции чтения в память для доступа к операндам и записи в память для обратной записи результата, иначе потребуется остановить конвейер для вставки дополнительных обращений к памяти при необходимости.
Таким образом, чтобы приспособиться к этим режимам адресации CISCy, вам может потребоваться конвейер IF-ID-EA-RD1-RD2-EX-WR (EA = eff addr, RD1 = read op 1, RD2 = read op 2, WR = write результат в RAM или reg файл).
Счастливого взлома.