Как найти время выполнения для конвейерной машины?

Мы выполняем следующие инструкции на машине

Если машина конвейерная, это займет около 200 пс * 3 = 600 пс.

Хотелось бы узнать, сколько времени занимает выполнение, если конвейерная машина выполняет 1000 003 инструкций? Это 1 000 000 * 200 пс + 600 пс?

1 ответ

Диаграмма для классической 5-ступенчатой ​​конвейерной архитектуры MIPS. Современные чипы используют суперскалярный дизайн, но давайте проигнорируем это [по крайней мере, на данный момент].

Проблема здесь в том, что на диаграмме показано время для различных типов команд [для каждого T-состояния T1-T5], но нет примера программы для выполнения, если только диаграмма не является примером цикла. Если это так, продолжайте...

Другая проблема - "опасность" трубопровода. То есть конкретный этап (T-состояние) для конкретной инструкции должен "зависнуть", потому что это зависит от вывода предыдущей инструкции. Например:

L1: add $t1,$t2,$t3
L2: add $t6,$t4,$t1

Вторая инструкция должна остановить свое "чтение регистров" (T2), потому что она должна ждать завершения этапа "записи в регистр" предыдущей инструкции (T5), чтобы завершить [потому что ей нужно конечное значение для $t1].

Таким образом, вместо того, чтобы хорошо вести себя конвейер, как:

1:      L1:T1
2:      L1:T2       L2:T1
3:      L1:T3       L2:T2
4:      L1:T4       L2:T3
5:      L1:T5       L2:T4
6:                  L2:T5

Мы заканчиваем с:

1:      L1:T1
2:      L1:T2       L2:T1
3:      L1:T3       L2:stall
4:      L1:T4       L2:stall
5:      L1:T5       L2:stall
6:                  L2:T2
7:                  L2:T3
8:                  L2:T4
9:                  L2:T5

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


Мое лучшее предположение заключается в следующем...

Еще раз, если мы игнорируем опасности, нам нужна определенная программа / последовательность, чтобы выполнить вычисления.

Если мы предположим, что программа является диаграммой, то для 1 000 000 инструкций ее число итераций цикла равно 1,000,000 / 4 или же 250,000, И... Мы также игнорируем время задержки ветвления.

Временная диаграмма для одной итерации цикла выглядит следующим образом:

label   inst    start   exec    end
                time    time    time
-----   ----    -----   ----    ----

L1:     lw      0       800     800
L2:     sw      200     700     900
L3:     R       400     600     1000
L4:     beq     600     500     1100

Обратите внимание, что все инструкции завершены раньше, чем L4. Таким образом, доминирующее время - это время окончания L4. Таким образом, 250,000 * 1100 ps или 275 долларов США, более или менее.


ОБНОВИТЬ:

Но мой профессор говорит мне, что ответ: 1 000 000 * 200 пс + 1400 пс

Ну, ты должен [очевидно;-)] поверить, что твой проф не я (я подчеркивал "угадай").

Но, опять же, мы должны знать реализацию: предсказание ветвлений и т. Д. Мой предполагает, что L1 во 2-м цикле не может запуститься, пока не завершится L4 в 1-м цикле.

Если цикл / последовательность были развернуты полностью [и не было ветвления], например, lw, sw, R, R повторяется 250000 раз, было бы 1,000,000 * 200 psИМО.

Я думаю, что анализ профессора предполагает, что T1 L1 для цикла 2 может начинаться одновременно с T2 L4 для цикла 1.

Пример полезной последовательности может быть memmove последовательность с перекрытием источника / назначения [регистры уже заданы]:

L1:     lw      $t0,4($t1)
L2:     sw      $t0,0($t1)
L3:     addu    $t1,$t1,$t2
L4:     bne     $t1,$t3,L1

Опять же, это предполагает отсутствие интервалов задержки ветвления. Чтобы сделать эту работу с ними, а не просто добавить nopпоследовательность будет L1, L2, L4, L3

Тем не менее, я просто перечитал мелкий шрифт: этот расчет предполагает, что мультиплексоры, блок управления, доступ к ПК и блок расширения знака не имеют задержки.

Таким образом, это может быть ключом к тому, почему есть / было расхождение. Еще раз, если сомневаетесь, поверьте своему проф.

Другие вопросы по тегам