我在理解计算Pipelining的加速时遇到了很多麻烦。这是我的计算机组织类中为此提供的幻灯片。
我不太了解这个公式。
为什么是2n? 为什么是0.5n + 1.5?
我的教授开始解释1.5来自A开始和B开始之间的1.5小时......这很容易看到像这样的图片但是像......这样的问题...
假设您有一个带有10级管道和管道的流水线机器 程序包含1000个指令,其依赖关系是这样的 管道不会停滞。如果管道的每个阶段需要1个循环,那么 与执行相比,通过流水线获得的加速比 在没有利用管道的情况下在同一台机器上运行程序?
我不认为我可以画一幅画......而且我知道必须有一些比画画更好的方法。
任何人都可以通过管道解释加速和/或在线提供一些好的材料来理解这一点吗?
答案 0 :(得分:1)
我遇到的管道的经典示例是装配线! 所以说如果你有A-B-C-D-E作为完成的五个阶段,并且每个阶段涉及不同的资源; 当E正在处理可以使A-D空闲的资源时,这就是流水线操作以获得某种形式的并发性。
所以你的时间表看起来像 - 并说你有1000个工作项,每个工作项都做了以上 1.如果没有流水线,你基本上会重复A-B-C-D-E 1000次,导致时间为5000! 2.使用管道,您将获得第一轮的A-B-C-D-E,然后每隔一次打勾,您将得到一个输出,即
A-B-C-D-E // ends at t=5
__A-B-C-D-E // ends at t=6!
____A-B-C-D-E // ends at t=7!
.....
......
............
A-B-C-D-E // 1000th process ends at t=1005 (starts at t=1000)
我猜你也可以扩展10阶段流水线的情况。