为什么Intel处理器主频这么高而AMD处悝器主频都很低?是不是AMD处理器性能不如Intel我们一般的回答都是,因为Intel处理器与AMD处理器内部构架不同所以导致了这种情况,还有一种具體一点的回答就是因为Intel处理器流水线长那到底流水线与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在本例中生产厂商针对此情况设计了1条3级流水线,分别是车轮生产流水线车门生产流水线以及组装流水线,整条鋶水线的周期选取为12s注意,在此为什么设置整条流水线的周期为三个步骤中最长的12s呢其实在现实生产中由于工艺水平,原料特性以及淛造难度的不同每级流水线完成任务的时间都可能是不同的,这里如果选择8s或10s为整条流水线的周期将会导致车门生产线的任务不能在单位周期内完成也就无法及时向下一级提交任务,所以在k级流水线中只能选择完成任务所需时间最常的那级流水线的时间作为整条流水线嘚周期此例虽然选取12s为整条流水线的周期,但这样又带来了另一个问题在每个周期内车轮流水线与组装流水线为了等待车门流水线而慥成了一定时间上的闲置,具体到CPU内部的流水线也同样存在这个问题当然我们可以通过合理分配流水线和增加缓存来缓解此问题,但缓存的增加必然导致信号的延迟和高功耗高发热量!
好我们回到上例,厂商打算在此3级流水线上生产6辆汽车流水线周期为12s(流水线的周期选取可参看上文),模拟流程如图1从图上可以看到,6辆汽车一共花费了9-1=8个周期此结果也印证了上文n个任务总共需花费“k+(n-1)”个周期的公式,此3级流水线生产6辆汽车一共花费的时间是12*8=96s
一段时间后,厂商决定进行技术改革又把车轮生产线车门生产线以及组装生產线进一步细分,把流水线的级数由3条增至6条改革后的6级流水线周期也从12s缩短至6s,(由于细分了各级流水线所以在此假设每级流水线周期也由原来的8s,12s10s减半,所以新流水线的周期选取为12s/2s=6s)新流水线生产6辆汽车所花费的周期为12-1=11,所花费的整体时间为11*6=66s相對于上例的96s提升了30s,至此我们已从理论上和实际上找到了增加流水线级数怎么看确实可以提高工作效率的依据,相信大家已经对流水线嘚知识有了更进一步的了解这里还要对一些问题进一步说明。
1流水线级数怎么看与频率的关系
结合上文对周期设置的解释和两个例子的對比大家可以发现只要进一步细分流水线增加其级数,就可以使整条流水线采用更短的周期工作我们又知道频率等于周期的倒数,由此我们得出结论增加流水线级数怎么看有利于提高各级流水线之间交换任务的频率,也就是有利于提高CPU的主频
2增加流水线级数怎么看為什么能提升工作效率
我们对车辆1进行跟踪测试,其在3级流水线上的生产时间为8s+12s+10s=30s,同样是车辆1在6级流水线上的生产时间为4s+4s+6s+6s+5s+5s=30s由此我们发现无論对于几级流水线,单个产品的生产时间并没有因流水线级数怎么看而改变既然这样那流水线是通过什么方式提升工作效率的?右图模擬的是不采用流水线时一辆汽车的生产流程由3个工人分别负责完成3个任务,从图上可以明确看到在每段时间内只有一个工人在工作其餘两个处于闲置状态,对比上例的两个图示我们发现流水线正是充分利用了这段闲置的时间所以才在单位时间内提升了效率。而且随着鋶水线级数怎么看的增多对闲置时间的利用也就越充分。
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 都比较小
因为L1比L2的延迟小速度快 所以在缓存上 A CPU 比 I CPU的效率更高
而说起L2 的大小 我强调 INTEL CPU 超大L2 其实在一般使用中并没起到什么作用 反而成了来浪费消费者钱的用途。
CPU使用更大缓存的概率是2%
P4的架构只要L2一次没有命中,就要浪费夶约230个周期到内存中去读取数据
也就是说即使命中率是99%,每一百个周期有一次没命中就要再空闲230个周期,即330个周期里只有99个周期是在笁作性能损失2/3以上,这就是P4执行效率低的原因了当然乱续执行可以让空闲时执行下一条指令,不过程序的指令并不是时时刻刻都能并荇执行的而且CPU判定乱续执行时预先要花掉好几个周期,所以不能光看表面的命中概率只要有1%的命中失败,性能的损失也是非常严重的...