Почему скорость конвейера переменной длины определяется самой медленной стадией + каково общее время выполнения программы?

98
8

Я новичок в конвейерной обработке, и мне нужна помощь в том, что


Скорость конвейерной обработки определяется скоростью самой медленной ступени



Не только это, если мне дается 5-этапный конвейер с длительностью 5 нс, 10 нс, 8 нс, 7 нс, 7 нс соответственно, говорят, что каждая инструкция займет 10 нс.
Могу ли я получить четкое объяснение этому?


(отредактированный)
Также пусть моя программа имеет 3 команды I1, I2, I3, и я принимаю 1 clk cycle duration = 1ns
так что вышеупомянутые этапы занимают соответственно 5, 10, 8, 7, 7 тактов.
Теперь, согласно теории, снимок трубопровода будет -


Simple Pipeline snapshot


Но это дает мне общее время, чтобы быть -no циклов clk * Продолжительность цикла clk = 62 * 1 = 62 нс
Но согласно теории общее время должно быть - (самая медленная ступень) * нет. инструкций = 10 * 3 = 30 нс
Хотя у меня есть идея, почему важна самая медленная стадия (каждый этап трубопровода должен ждать, поэтому 1 инструкция создается после каждых 10 циклов clk, но результат несовместим, когда я вычисляю его с использованием циклов clk. Почему эта несогласованность? Что мне не хватает??
(отредактирован)

спросил(а) 2021-01-25T16:28:16+03:00 4 месяца, 2 недели назад
1
Решение
88

Предположим, что процесс производства автомобилей. Предположим, что используется двухступенчатая футеровка. Скажем, для изготовления двигателя требуется 1 день. 2 дня для производства остальных. Вы можете выполнять обе стадии параллельно. Какова скорость вашего автомобиля? Это должен быть один автомобиль за 2 дня. Несмотря на то, что вы продлеваете остаток за 1 день, вам нужно подождать еще один день, чтобы получить двигатель.

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

ответил(а) 2021-01-25T16:28:16+03:00 4 месяца, 2 недели назад
63

Staging позволяет выполнять "части" одной и той же операции в onces.


Я создам здесь меньший пример, отменив последние 2 этапа вашего примера: 5, 10, 8 ns


Возьмем две операции:


5  10  8
5 10 8

| The first operation starts here
| At stage 2 the second operation can start it fist stage
| However, since the stages take different amount of times,
| the longest ones determines the runtime
| the thirds stage can only start after the 2nd has completed: after 15ns
| this is also true for the 2nd stage of the 2nd operation

ответил(а) 2021-01-25T16:28:16+03:00 4 месяца, 2 недели назад
45

Спасибо всем за ваши ответы


Я думаю, что у меня все ясно.
Вот что я считаю ответом -


Вопрос-1: - Почему выполнение конвейера зависит от самого медленного шага


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


Вопрос-2: - Каково общее время выполнения программы


Я хотел знать, как долго будет выполняться конкретная программа, содержащая 3 команды
НЕ, сколько времени потребуется для 3-х инструкций для выполнения, что, очевидно, составляет 30 нс, относящихся к факту
что каждая инструкция будет завершена каждые 10 нс.

Теперь предположим, что I1 выбирается в конвейере, тогда уже в нем выполняются еще 4 команды.
4 инструкции завершаются через 40 нс.
После этого I1, I2, I3 выполняются в порядке 30 нс. (Предполагая, что нет киосков конвейера)


Это дает 30 + 40 = 70 нс.


Фактически для n программы команд, k-stage трубопровод


Я думаю, что это (n + k-1) * C * T


где C = нет. циклов clk на самой медленной стадии
 T = время тактового цикла


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

ответил(а) 2021-01-25T16:28:16+03:00 4 месяца, 2 недели назад
45

Я не уверен насчет источника вашей путаницы. Если одна единица вашего конвейера займет больше времени, блоки, расположенные позади нее, не смогут продвинуть трубопровод вперед, пока это устройство не будет завершено, даже если они сами закончили свою работу. Как сказал DPG, попробуйте посмотреть на него из примера линии производства автомобилей. Это один из самых распространенных способов объяснить трубопровод. Если единицы AHEAD из самой медленной единицы после завершения быстрее, это все равно не имеет значения, потому что им приходится ждать, пока более медленная единица закончит свою работу. Итак, да, ваш конвейер выполняет 3 инструкции для общего времени выполнения 30ns.

ответил(а) 2021-01-25T16:28:16+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема