2015-10-28 3 views
2

Мне нужно создать схему трубопровода, выполняющую следующий код 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 всей программы?

Вот что я получил:

MIPS Pipeline Diagram

Моя самая большая загвоздка пришел от того, чтобы понять, что делать, когда дело дошло до команды перехода. Как вы можете видеть, я просто занимался бизнесом, как обычно, но я знаю, что, скорее всего, совсем не так. Я довольно уверен, что я обработал инструкции после mul и div правильно, это всего лишь инструкция j L1. Я не уверен в отношении, так как у меня нет примеров для ссылки. CPI как мысль после того, как я предполагаю, что я просто беру общие циклы и деля их по количеству инструкций? Так что в этом случае это будет (32 cycles)/(11 instructions) так CPI = 2.91?

Спасибо за ваше время.

+0

Я бы ответил на вопрос, потому что я думаю, что его хорошо спросили. Но я думаю, что ваш код MIPS ошибочен. Он перескакивает на 'L1', а затем бесконечно петляет по линии' bne', которая отходит назад '-8'. –

+0

@ Konrad Это просто приведенный пример, код скопирован прямо из задания. Понимание его первой итерации достаточно хорошо. Все наши назначения всегда были основаны на первой итерации, если есть какие-либо петли, если не указано иное. Спасибо вам за помощь. – user5496677

+0

Справа. Но первая итерация явно не делает то, что вы думаете. Инструкции 'mul' никогда не запускаются. –

ответ

1

Прежде чем ответить на ваш вопрос, вы должны сначала узнать о прогнозе ветвления. Филиалы могут вызывать выбор из нового местоположения или продолжать выборку, как обычно. Ожидание условия ветвления для разрешения того, какой адрес вы должны получать, часто вызывает остановку и отключение некоторых циклов. Чтобы преодолеть эти процессоры, используйте предсказание ветвей или спекуляцию, они предполагают, что ветвь берется или не принимается, и продолжает извлечение и выполнение на основе этого предположения. После того как условие ветвления будет разрешено, процессор знает, было ли его предположение правильным или неправильным, если правильно, вы продолжаете выполнение как обычно, и вы сохранили пару драгоценных циклов вместо остановки. если предположение окажется неправильным, вы очищаете неправильно выполненные инструкции от вашего конвейера, и штраф обычно такой же, как если бы вы застопорились, ожидая, пока ветка решится. Более эффективные алгоритмы прогнозирования ветвей имеют более высокую вероятность правильного угадывания ветви или нет.

Как указано в вашем вопросе

Предположим, что процессор принимает ветви не будут приняты, пока они не будут решены.

Ваш процессор использует предсказание статической ветви. Он всегда предполагает, что ветвь не берется. если предположение окажется ошибочным, инструкции сбрасываются из трубопровода.

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

Смежные вопросы