Длина регистров конвейера MIPS (IF / ID, ID / EX, EX / MEM, MEM / WB) - PullRequest
0 голосов
/ 09 мая 2018

В настоящее время я готовлюсь к экзамену по архитектуре компьютеров и натолкнулся на вопрос, в котором предлагается проиллюстрировать (по крупицам, я бы предположил) значения, содержащиеся в архитектуре mips конвейера после 3-го этапа sub (до часов). добирается) с учетом следующих инструкций.

add $t0,$t1,$t2 
sub $t3,$t3,$t5 
beq $t6,$t0,16 
add $t0,$t1,$t3 

Я не прошу решения этой проблемы, однако после некоторого исследования я не добился большого успеха, оборачиваясь вокруг него, поэтому я прошу помощи / совета.

Во-первых, у меня до сих пор нет четкого понимания размера регистров конвейера (IF / ID, ID / EX, EX / MEM, MEM / WB). Я понимаю, что они содержат коды блоков управления для следующих этапов и что они содержат результат предыдущего этапа, чтобы его можно было передать следующему. Так что это будет (пожалуйста, поправьте меня, если я ошибаюсь) +9 для ID / EX, +5 для EX / MEM и +2 для MEM / WB, но мне не удалось найти четкую схему данных, которые мы можно ожидать, что эти регистры будут содержать. Кроме того, я полагаю, что нам нужно будет использовать HW forwarding, чтобы переслать результат первого add в beq (из-за $t0) и переслать результат sub в последний add (потому что $t3). Относится ли это к тому, что содержится в регистрах?

Было бы здорово, если бы кто-то мог указать мне правильное направление.

Спасибо большое.

1 Ответ

0 голосов
/ 11 мая 2018

Цель каждого из этих промежуточных регистров состоит в том, чтобы хранить данные, которые могут понадобиться на ближайшем следующем этапе или на более поздних этапах. Я расскажу об одном возможном дизайне, но, как я объясню, действительно много возможных дизайнов.

На этапе выборки следующая команда, которая должна быть выполнена (на которую указывает текущий ПК), выбирается из памяти, и ПК обновляется, чтобы указывать на следующую инструкцию для выборки. Следовательно, IF / ID будет включать одно 4-байтовое поле для хранения извлеченной инструкции. Существует два способа вычисления нового ПК: текущий ПК + 4 или ПК + 4 + смещение в случае ответвления. Если извлеченная инструкция сама является инструкцией ветвления, то нам нужно будет передать новый ПК, чтобы целевой адрес ветвления можно было вычислить на этапе EX. Мы можем добавить 4-байтовое поле в IF / ID для хранения нового значения ПК, которое будет передаваться на стадию EX через стадию ID.

На этапе декодирования определяются код операции и его операнды. Код операции находится в фиксированном месте в инструкции в MIPS. Инструкция MIPS может работать с одним регистром источника, двумя регистрами источника, одним регистром источника и 32-битным непосредственным значением с расширенным знаком, 32-битным непосредственным значением с расширенным знаком или без операндов. Мы можем либо подготовить только необходимые операнды для стадии EX на основе кода операции, либо подготовить все операнды, которые могут потребоваться для любого кода операции. Последний дизайн проще, но требует большего регистра ID / EX. В частности, два 4-байтовых поля необходимы для хранения двух возможных значений исходного регистра (значения считываются из файла регистров на этапе декодирования) и 4-байтового поля для возможного немедленного значения с расширенным знаком. Никакой код операции не потребует всех этих полей, но давайте все равно подготовим их и сохраним в фиксированных местах в регистре ID / EX. Это упрощает дизайн.

Мы также передадим вычисление нового значения ПК на этапе выборки на этап выполнения на тот случай, если код операции окажется ветвью. Целевой адрес ветвления вычисляется относительно текущего значения ПК (ПК инструкции, следующей за ветвью в статическом программном порядке). Здесь возможны два варианта: либо добавить шину из нового поля ПК в IF / ID на сцену EX, либо добавить поле в ID / EX для хранения нового значения ПК, к которому затем можно получить доступ на стадии EX. Последний дизайн добавляет 4-байтовое поле в ID / EX.

EX требует код операции со стадии ID. Мы можем передать только код операции, а не всю инструкцию. Но на более поздних этапах могут потребоваться другие части инструкции. Как правило, в конвейерах RISC предпочтительно проходить, чтобы сделать всю инструкцию доступной для всех этапов. Таким образом, все части инструкции уже доступны, когда в будущем будут внесены изменения на любом этапе конвейера. Итак, давайте добавим 4-байтовое поле в ID / EX для хранения инструкции.

Этап EX считывает операнды и код операции из регистра ID / EX (код операции является частью инструкции) и выполняет операцию, указанную кодом операции. Регистр EX / MEM должен быть достаточно большим, чтобы вместить все возможные результаты, которые могут включать следующее: 4-байтовое значение, вычисленное ALU в результате арифметической или логической операции, 4-байтовое значение, представляющее вычисленный эффективный адрес для операция загрузки или сохранения памяти, 4-байтовое значение, представляющее целевой адрес перехода в случае инструкции перехода, и 1-битное условие в случае инструкции условного перехода. Мы можем использовать одно 4-байтовое поле в EX / MEM для результата (независимо от того, что оно представляет) и 1-битное поле для условия. Кроме того, как и прежде, нам нужно 4-байтовое поле для хранения инструкции. Также для инструкций сохранения нам нужно еще одно 4-байтовое поле для хранения значения, которое нужно сохранить. Одна из возможных альтернативных схем здесь заключается в том, что вместо сохранения 1-битного условия и 4-байтового целевого адреса ветвления в EX / MEM они могут быть переданы непосредственно на стадию IF.

На этапе MEM, в случае инструкции ветвления, целевой адрес ветвления и условие ветвления передаются обратно из EX / MEM в выборку IF для определения нового ПК. В случае операции сохранения памяти операция выполняется, и результат не передается на какой-либо этап. В случае операции загрузки памяти, 4-байтовое значение выбирается из памяти и сохраняется в поле в регистре MEM / WB. В случае операции ALU 4-байтовый результат будет просто передан в поле в регистре MEM / WB. Кроме того, как и прежде, нам нужно 4-байтовое поле в MEM / WB для хранения инструкции.

Наконец, на этапе WB 4-байтовый результат, загруженный из памяти или вычисленный ALU, сохраняется в регистре назначения. Это происходит только для инструкций, которые дают результаты. В противном случае этап WB можно пропустить.

Таким образом, в конструкции, которую я обсуждал, размеры промежуточных регистров следующие: IF / ID имеет размер 8 байтов, ID / EX имеет размер 20 байтов, EX / MEM имеет размер 25 бит, размер MEM / WB составляет 8 байт.

Проектное решение о том, требуется ли поле в промежуточном регистре для хранения какого-либо значения или может ли оно быть передано непосредственно на том же этапе в логику, которая требует значения, является решением "на уровне схемы". Если можно гарантировать, что сигналы не повреждены, и если возможно или удобно добавить выделенную шину, они могут быть подключены напрямую.

...