我不太了解CPU时钟,如3.4Ghz.我知道这是每秒3.4亿个时钟周期.
因此,如果机器使用单个时钟周期指令,那么它每秒可以执行大约3.4亿个指令.
但在流水线中,基本上每条指令需要更多周期,但每个周期长度都比单个时钟周期短.
但是虽然管道具有更高的吞吐量,但无论如何cpu每秒可以达到34亿个周期.因此,它可以执行3.4亿/ 5条指令(如果一条指令需要5个周期),这意味着不到单周期执行(3.4> 3.4/5).我错过了什么?
3.4Ghz等CPU时钟仅仅意味着基于流水线循环,而不是基于单周期实现吗?
流水线操作不涉及短于单个时钟周期的周期.以下是流水线的工作原理:
我们有一项复杂的任务要做.我们将这项任务分解为若干阶段,每个阶段都相对简单.我们研究每个阶段的工作量,以确保每个阶段花费的时间与其他阶段相同.
使用处理器,我们做了大致相同的事情 - 但在这种情况下,它不是"安装这些十四个螺栓",它就像获取和解码指令,读取操作数,执行(通常在这里的几个阶段),以及写回结果.
与汽车生产线一样,我们为管道的每个阶段提供了一套专门的工具,用于完全(并且仅)完成该阶段所需的工作.当我们在汽车/指令上完成一个阶段的处理时,它会移动到下一个阶段,这个阶段将获得下一个要处理的汽车/指令.
在理想情况下,该过程(大致)如下工作:
福特用了大约12个小时来制造一辆N型轿车(型号T的前身).主要是为了对生产线进行流水线操作,构建模型T只需要大约2个半小时.更重要的是,即使模型T从2.5小时开始完成,该时间也被分解为不少于84个不连续的步骤因此,当一切顺利进行时,整个生产线可以每两分钟生产一辆(约).
但这并不总是发生.如果一个阶段缺少部分,那么阶段之后就必须等待.如果暂停持续很长时间,它会支持事情,所以前面的阶段也必须等待.
在处理器管道中也会发生同样的情况.例如,当分支发生时,处理器可能必须等待一段时间才能获取下一条指令.如果指令需要来自内存的操作数,那么也可能导致暂停("管道泡沫").
为了防止他的管道暂停,亨利福特聘请人们研究这些阶段,找出每个阶段需要掌握的每种部件的数量,等等.我不确定,但我认为这是一个公平的猜测,可能有一些人被指定观察不同车站的零件供应,并派人跑去让仓库经理知道(无论出于何种原因)特定阶段的零件供应看起来很短,所以他们很快就需要更多.
处理器做了一些相同的事情 - 它们具有分支预测器和预取器之类的东西,它们试图提前确定正在执行的指令流所需的内容,并尝试确保所需的一切都在需要时(例如,使用缓存来临时存储看起来可能很快就需要的东西).
因此,与Model T一样,每条指令执行开始到结束需要相对较长的时间,但我们会以更短的时间间隔完成另一个产品 - 最好是一次一个时钟(但请参阅我的其他答案 - 现代设计)通常每个时钟执行多条指令).