来自Tanenbaum的结构化计算机组织中的指令流水线部分:
流水线允许在延迟(执行指令需要多长时间)和处理器带宽( CPU有多少MIPS )之间进行权衡。由于每条指令都经过n个阶段,每条指令都要经过n个阶段,所以由于每条指令的循环时间为takes,且在流水线中有n个阶段,所以延迟为nT nsec。由于一条指令完成了每个时钟周期,并且有10^9/T时钟周期/秒,每秒执行的指令数为10^9/T,要得到MIPS的数目,必须将指令执行率除以100万,才能得到(10^9/T)/10^6 =1 000/ To。
我认为延迟越小越好,带宽越大越好。因为两者是相互联系的,所以它们总是同时向好的或坏的方向移动。那么这两种形式如何权衡呢?谢谢。
发布于 2015-02-11 23:36:07
简单的回答是,它们与往复无关。
假设您有一个非常无聊的CPU,其中一个指令需要1ns才能完成。因此你的延迟是1ns,你的带宽是每ns一个指令。
假设您添加了一个管道阶段,将该指令拆分为获取和执行阶段。每个阶段都可以在0.5 ns内完成,所以现在您可以提高时钟速度,但是不能加倍,因为您增加了流水线逻辑的开销。此外,各个阶段都必须使用相同的时钟,即使一个比另一个快。所以也许你可以做一个0.6毫秒的钟。您的延迟现在增加到1.2ns,但是您的带宽也增加到每ns 1.7个指令。
这种关系不是线性的,特别是当你已经接近半导体技术的极限时,但是延迟和带宽都会随着流水线阶段的增加而增加,直到某个点为止。
发布于 2015-02-11 23:18:34
他们不是回报。这些公式并没有给出延迟、MIPS和管道阶段之间的完整关系;在这段摘录中,它们只是用来定义他所说的“延迟”和"MIPS“的含义,这样他关于权衡的说法就更准确了。
Tanenbaum所指的折衷方法是,当您将CPU的管道划分为更多的阶段时,您可以并行执行更多的指令(更多的带宽),但是由于增加的复杂性(更多的延迟),每条指令都要花费更长的时间来完成。
https://softwareengineering.stackexchange.com/questions/272939
复制相似问题