Доказательство того, что k-этапный конвейер может быть не более чем в k раз быстрее, чем у непайпированного - PullRequest
0 голосов
/ 07 ноября 2018

Я приблизительно (абстрактно) понимаю, почему конвейер в k раз быстрее, чем не конвейерный (например, так):

  1. К стадии газопровода, разделяющего цепь на k частей.
  2. Каждая ступень имеет одинаковую задержку транзистора (в идеале)
  3. Так что это в K раз быстрее (как при использовании системы конвейерных лент на автомобильном заводе)

Но я не могу понять это математическое выражение:

clock cycle time = t 
number of command = n  
speedup = (n*k*t)/((k-1)*t+n*t) = (n*k*t)/(k*t+(n-1)*t)

if n -> infinite: speedup is k  

Чего я не знаю: что ((k-1) t + n t) означает?

Я могу просто понять, (nkt) означает неконвейерное время, поэтому я считаю, что ((k-1)*t+n*t) должно быть конвейерным временем.

Но почему ((k-1)*t+n*t) является конвейерным временем?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы были правы - (k-1)*t+n*t - время выполнения команды n в конвейере.

Вы должны думать об этом следующим образом:

В первом цикле (k-1) (t) труба заполняется. По истечении этого времени 0 комментариев было полностью выполнено, но весь канал заполнен.

С этого момента в каждом цикле t у вас будет новая команда, которая завершится для выполнения (из-за эффекта конвейера) -> для этого n*t.

Всего после (k-1)*t + n*t - время выполнения команды n в конвейере.

Надеюсь, это прояснит ситуацию!

...