http://en.wikipedia.org/wiki/File:MIPS_Architecture_%28Pipelined%29.svg
5-ступенчатый конвейер MIPS (с аннотацией, показывающей Write Reg Выбор и включение)
Нижняя строка через этапы конвейера представляет адрес порта записи (обратного) файла регистра и разрешение записи, а WB - данные из памяти.
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html
Инструкция загрузки слова
Описание:
Слово загружается в регистр с указанного адреса.
Операция: $ t = MEM [$ s + смещение]; advance_pc (4);
Синтаксис: lw $ t, смещение ($ s)
Кодирование:
1000 11sss tttt iiii iiii iiii iiii
Где ввод адреса регистра записи ($ t) считывается из адреса памяти данных, состоящего из смещения регистра регистра $ s с непосредственным значением i, которое получает знак расширения. Ваши $ 4 - это $ t выше, $ 1 или $ 2 - это $ s, в то время как оставшаяся полоса выходного файла регистра звучит как подчиненная для знака, расширенного немедленно.
Из вашего описания звучит так, будто вы не используете трехпортовый регистровый файл с одним портом только для записи.
При использовании трехпортового файла регистров конфликты возникают только в том случае, если вы пытаетесь использовать новое значение файла регистра из памяти до того, как оно будет считано из памяти и записано в файл реестра. Это может управляться компилятором, планирующим NOOP, до тех пор, пока не будет завершена незавершенная запись в регистровый файл, когда следующая инструкция пытается его использовать, или не остановит IF / ID в аппаратном обеспечении, когда его вывод содержит ссылку на ожидающую запись в регистровый файл.
Есть три инструкции, которые могут быть в полете справа от IF / ID, каждая с записью в адрес файла регистра и разрешением записи. Вам нужно будет сравнить адреса файлов регистров декодирования команд со всеми тремя из них и остановить IF / ID, пока они не очистятся. Разрешение записи, сохраненное на каждом из этих трех этапов конвейера, используется для определения того, следует ли сравнивать адрес регистра записи на этих этапах конвейера.
Поскольку адреса файлов регистров записи ID / EX, EX / MEM и MEM / WB нигде не используются, схема для сравнения может быть совмещена с IF / ID и файлом регистра, предотвращая ненужные задержки компоновки, влияющие на минимум тактовый цикл.
Использование двухпортового регистра-файла намного проще и выводит из строя IF / ID до тех пор, пока разрешение записи не возвращается из MEM / WB, эффективно превращая любые инструкции чтения из памяти в 3-тактовые инструкции (или более, память данных может зависнуть, если она кеш или медленно). Это делает регистровый файл с тремя портами более или менее необходимым по соображениям производительности. Существует неявный мультиплексор для источника, по крайней мере, для одного из двух элементов управления портом файла регистра (разрешение записи, адрес записи) со стадии MEM / WB, когда IF / ID остановлен (для памяти-> regfile).
Доступ к памяти данных может заблокировать MEM / WB, точно так же, как доступ к памяти команд также может заблокировать IF / ID. Остановленный IF / ID не выдает разрешение записи для файла регистра в ID / EX и не останавливает MEM / WB.