2013-12-24 5 views
3

Я хочу, чтобы подтвердить, является ли правильным для стадии трубопровода MIPS, 5 (* = киосков) следующая временная диаграмма:MIPS времени трубопроводов Диаграмма

   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 
LW R1, 0(R4) | IF | ID | EX | M | W | | | | | | | | | | | | 
LW R2, 400(R4) | | IF | ID | EX | M | W | | | | | | | | | | | 
ADD1 R3,R1,R2 | | | IF | ID | * | * | EX | M | W | | | | | | | | 
SW R3, 0(R4) | | | | IF | * | * | ID | * | * | EX | M | W | | | | | 
SUB R4,R4,#4 | | | | | | | IF | * | * | ID | EX | M | W | | | | 
BNEZ R4, L1 | | | | | | | | | | IF | ID | * | * | EX | M | W | 

Комментарии:

1) ADDI: идентификатор остановленного 2 цикла, так предыдущий ВБ может завершить

2) SW: 2 киосков, потому что ID не может начинаться, более 2 киосков для ID для предыдущего ВБ завершить

3) SUB: ЕСЛИ не может начаться до CYC ле # 7, ID должен ждать до цикла 10 из предыдущей инструкции

4) BNEZ: IF не может начаться до цикла # 10, 2 стойла для ID, так предыдущий WB может завершить

+0

@Paul Спасибо. Я буду использовать этот путь в будущем. – Jake

+1

Почему голос? – Jake

ответ

6

Если инструкция результаты передаются только через файл регистра (без пересылки/обхода), и регистры читаются только перед EX, тогда ваша диаграмма выглядит правильно. (Вы можете рассмотреть пустые этапы до того, как IF для SUB и BNEZ будет циклом сваливания, так как обычно IF IF следующей команды будет немедленно следовать за этапом IF предыдущей инструкции. С другой стороны, это может рассматриваться как загромождение диаграммы.)

Однако 5-ступенчатый конвейер обычно оптимизирован, чтобы избежать большинства вышеперечисленных ларьков путем пересылки результатов непосредственно с конца этапа EX (или конца этапа M для нагрузок) команды, производящей результат, на начало этапа EX зависимой инструкции. (Для инструкций магазина значение, которое нужно сохранить в памяти, может потребоваться только с этапа M или даже с W, поэтому разработчик может рассмотреть возможность добавления пересылки для этого случая. С помощью этого простого конвейера это будет иметь значение только для пары инструкций обеспечивая перемещение памяти, так как нагрузки являются единственными инструкциями с латентностью, превышающей единицу. Для двухскалярного суперскаляра такое может позволить что-то вроде «ADD R3, R2, R1; SW R3, 0 (R4);», чтобы начать выполнение в тот же цикл.)

С таким оптимизированным конвейером ADD имеет только один цикл сваливания (после ID) путем перенаправления результата с конца этапа M «LW R2, 400 (R4)» в начало EXD EXD.

 
       | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
LW R1, 0(R4) | IF | ID | EX | M | W | | | | | | | 
LW R2, 400(R4) | | IF | ID | EX | M | W | | | | | | 
ADD1 R3,R1,R2 | | | IF | ID | * | EX | M | W | | | | 
SW R3, 0(R4) | | | | IF | * | ID | EX | M | W | | | 
SUB R4,R4,#4 | | | | | * | IF | ID | EX | M | W | | 
BNEZ R4, L1 | | | | | | | IF | ID | EX | M | W | 

Такая оптимизация усложняет дизайн, но избежать ненужных киосков может заметно повысить производительность.

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