首页 > 编程知识 正文

cpu多级流水线(cpu流水线技术)

时间:2023-05-04 20:05:14 阅读:73856 作者:474

为什么英特尔处理器运行频率高,AMD处理器运行频率低呢? AMD处理器的性能比不上英特尔吗? 我们的常见回答是,由于英特尔处理器和AMD处理器的内部框架不同,出现了这种情况,但另一个具体回答是,由于英特尔处理器的流水线很长。 流水线和CPU的主频率具体有什么关系呢? 今天给你送上我以前刊登在《电脑报》硬件板块科技大礼堂纸面上的原创文章。 (由于坛子的一些限制,文章中照片的布局与原著略有不同。) )。

许多报纸杂志都介绍了有关CPU流水线的知识,但许多传统文章对一些问题的解释还不够充分。 例如,报纸杂志多次提到增加流水线级数有助于提高CPU时钟,但很少涉及其原因的说明。 另外,管线级数与其循环的关系是什么? CPU管道和工厂管道的区别和联系等问题的说明也不够充分。 本文介绍了这些问题的答案。 虽然本文不讨论流水线的基本原理,但对于增加流水线级数有利于提高CPU时钟的观点,将在理论论证和实例两方面进行说明。

首先给出了管线级数与其周期的关系公式。 一条k级管线处理n个任务总共需要“k(n-1 )”个循环。 这是因为首先需要k个时钟周期来处理第一个任务,在k个循环后管线变满,剩下的n-1个任务在n-1个循环内完成。 如果不处理相同数量的n个任务的管线,则需要n*k个循环。 比较两者,得到另一个概念。 被称为流水线加速比c。 因此,如果c=n*k/[k(n-1 ) ],且n远大于k,则c的值将前进到k。 也就是说,理论上k级流水线几乎可以提高k倍的速度,但这是有限的。看到这一点,一些读者可能会感到困惑,但不用着急,下面就举例进一步说明。

在举例之前,先分析一下管线循环的选择问题。 假设整车生产过程分为车轮生产、车门生产和最后组装三个步骤。 每辆车的车轮生产需要8s,车门生产需要12s,最后组装需要10s。 在本例中,生产制造商针对这种情况设计了一条三级流水线。 分别为车轮生产线、车门生产线及装配线,生产线整体周期选择为12s。 请注意,在实际生产中,根据工艺水平、配料特性和制造难度的不同,各级管线完成任务的时间可能不同。 现在,如果选择8s或10s作为整个管线的循环,则门线上的任务将无法在单位循环内完成,并且不能立即将任务提交到下一级。 因此,k级管线只能选择完成任务所需时间最长的整个管线级别的时间。 这个例子为整个管线的循环选择了12s,这样带来了另一个问题。 在每个周期内,车轮线和装配线为等待门线带来了一定时间的空闲。 具体来说,CPU内部的流水线也同样存在这个问题。 当然,我们可以通过合理分配流水线和增加缓存来缓解这个问题,但缓存的增加必然导致信号延迟和高功耗的发热量。

好了,让我们回到前面的例子。 制造商打算用这三级流水线生产六辆汽车。 管线循环为12s。 管线的循环选择见上文。 模拟流程如图1所示,6辆汽车共计9-1=8个周期。 从这个结果也可以看出,上述n个任务需要总计“k(n-1 )”循环的公式。 这个三级流水线总共生产了六辆汽车

不久,制造商决定进行技术改革,进一步细分车轮生产线的门生产线和装配线,将生产线的级数从3条增加到6条,改革后的六级生产线周期也从12s缩短到6s。 (由于细分了各级线,这里假设各级线循环也从原来的8s、12s、10s减半,新线的循环为12s/2s=6s ) ),用新的流水线生产6辆汽车所需的循环至此,我们找到了无论在理论上还是实际上,增加流水线级数都会确实提高生产率的依据。 我相信大家已经对流水线知识有了更好的了解,这里将对一些问题做进一步的说明。

1流水线级数与频率的关系

将以上循环设定的解释与两个例子的对比结合起来发现,只要进一步细分管线并增加其级数,就可以使整个管线以更短的循环动作,频率等于循环的倒数。 由此得出增加流水线级数有利于提高各级流水线之间交换任务的频率,也就是提高CPU的主频。

2为什么增加管线级数会提高工作效率?

我们对车辆1进行了跟踪测试,其3级生产线的生产时间为8s 12s 10s=30s,同样车辆1的6级生产线的生产时间为4s4s6s5s=30s,因此对于几个等级生产线,各个产品的生产时间都取决于生产线级数右图模拟了未采用流水线时的一辆汽车的生产流程,三个工人分别负责三项任务。 从图中可以看出,每个时间只有一个工人在工作,剩下的两个人处于空闲状态。 与上例中的两幅图进行比较,可以看出,由于流水线充分利用了该空闲时间,所以提高了每单位时间的效率。 另外,随着流水线级数的增加,空闲时间的利用也变得充分。

3CPU内部管线与工厂管线的区别和联系

CPU流水线是工厂流水线的一种,具有流水线的共性,但与工厂流水线也有一些区别。 文中得到了增加流水线级数有助于提高CPU主频的结

论,那为什么intel的贝瑞特大叔还要放弃冲击4GHz的计划呢?我们知道任何一种产品的生产都存在良品率这个问题,就如本文所举的例子,如果在汽车的生产过程中轮胎流水线上的一级轮胎报废了,这时我们可以在轮胎流水线的末端增加一个任务,然后用本属于第2辆车的轮胎组装给第1辆车,依次类推,这样对整条流水线效率的影响很小,而且对于同一型号的汽车只要使用的是相应型号的轮胎就行,不用计较具体使用的是哪个轮胎。但具体到CPU流水线,问题就不这么简单了,CPU的工作基理可以大致分为指令寻址,指令分析,指令执行,以及指令上报,假设一旦指令流水线中的某个指令的地址出错,是无法像换轮胎一样用另一个地址来顶替的,因为每条指令只唯一的对应一个地址,而且一些指令的执行是具有前后次序的,所以并不能简单的对出错的指令进行摒弃作罢,必须整条流水线退回重来,对于intel拥有冗长的31级流水线的处理器来说,这种情况的发生将大大拖累CPU的工作效率,虽然intel不断通过改进分支预测技术以及增大缓存来改善此问题,但收效甚微,反而由于缓存的增加和漏电流控制不利,铸造了具有火热胸膛的Prescort。
由此可见,主频能代表:高发热和高功耗! 但性能与执行效率并不高
目前,P4处理器采用31级流水线工位,而A64则是12级流水线工位。。。



有些朋友会问:Intel的二级缓存能直接比AMD处理器的缓存么?

INTEL的 L1 是数据代码指令追存缓存 AMD L1是实数据读写缓存
I L1的概念是 I L1里存着 数据在L2里的地址 L1 不存实际数据 所以大家看到 P4等 I CPU的 L1 都比较小。
A L1的概念是 A L1 里存着实际数据 当L1 满了时 再存L2 所以大家看到A CPU 的L1比较的大 为128K
因为L1比L2的延迟小速度快 所以在缓存上 A CPU 比 I CPU的效率更高
而说起L2 的大小 我强调 INTEL CPU 超大L2 其实在一般使用中并没起到什么作用 反而成了来浪费消费者钱的用途。
CPU处理数据概率
CPU使用0-128K缓存的概率是80%
CPU使用128-256K缓存的概率是10%
CPU使用256-512K缓存的概率是5%
CPU使用512-1M缓存的概率是3%
CPU使用更大缓存的概率是2%
P4的架构,只要L2一次没有命中,就要浪费大约230个周期到内存中去读取数据

也就是说,即使命中率是99%,每一百个周期有一次没命中,就要再空闲230个周期,即330个周期里只有99个周期是在工作,性能损失2/3以上,这就是P4执行效率低的原因了,当然乱续执行可以让空闲时执行下一条指令,不过程序的指令并不是时时刻刻都能并行执行的,而且CPU判定乱续执行时预先要花掉好几个周期,所以不能光看表面的命中概率,只要有1%的命中失败,性能的损失也是非常严重的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。