Мне нужно создать схему трубопровода, выполняющую следующий код MIPS. Это пятиступенчатый трубопровод. В инструкцияхи div
используются 4 команды выполнения. Цитирую задание для MUL инструкцииПопытка понять создание схемы трубопровода MIPS
Это означает, что многократно инструкция проходит через трубопровод следующим образом:
F-D-X0-X1-X2-X3-M-W
и до четырех умножают инструкции, может быть, в полете в то время. Все остальные типы команд блокируются с этапа выполнения, в то время как используется любая из многоступенчатых этапов.
и DIV
Это означает, что инструкция водораздел проходит через трубопровод следующим образом:
F-D-X0-X0-X0-X0-M-W
. Все остальные инструкции блокируются с этапа выполнения во время деления.
Адрес MIPS-код.
xor $r0, $r0, $r0
addiu $r1, $r0, 10
j L1
loop:
lw $r3, 0($r2)
mul $r4, $r3, $r3
mul $r3, $r3, $r1
addiu $r0, $r0, 1
div $r3, $r4, $r3
sw $r3, 0($r2)
addiu $r2, $r2, 4
L1:
bne $r0, $r1, -8
Полный вопрос я должен ответить на это:
Q: Нарисуйте схему трубопровода (таблицу), показывающее выполнение кода MIPS через первую итерацию цикла, без обхода. Предположим, что опасны данные и структурные опасности разрешены только при остановке. Предположим, что процессор предполагает, что ветви не принимаются, пока они не будут разрешены. Каков CPI всей программы?
Вот что я получил:
Моя самая большая загвоздка пришел от того, чтобы понять, что делать, когда дело дошло до команды перехода. Как вы можете видеть, я просто занимался бизнесом, как обычно, но я знаю, что, скорее всего, совсем не так. Я довольно уверен, что я обработал инструкции после mul
и div
правильно, это всего лишь инструкция j L1
. Я не уверен в отношении, так как у меня нет примеров для ссылки. CPI как мысль после того, как я предполагаю, что я просто беру общие циклы и деля их по количеству инструкций? Так что в этом случае это будет (32 cycles)/(11 instructions)
так CPI = 2.91
?
Спасибо за ваше время.
Я бы ответил на вопрос, потому что я думаю, что его хорошо спросили. Но я думаю, что ваш код MIPS ошибочен. Он перескакивает на 'L1', а затем бесконечно петляет по линии' bne', которая отходит назад '-8'. –
@ Konrad Это просто приведенный пример, код скопирован прямо из задания. Понимание его первой итерации достаточно хорошо. Все наши назначения всегда были основаны на первой итерации, если есть какие-либо петли, если не указано иное. Спасибо вам за помощь. – user5496677
Справа. Но первая итерация явно не делает то, что вы думаете. Инструкции 'mul' никогда не запускаются. –