打印

ARM9中的5级整数流水线

[复制链接]
5301|6
手机看帖
扫描二维码
随时随地手机跟帖
沙发
平常人| | 2007-4-13 21:23 | 只看该作者

“整数流水线”?哪看来的?肯定是翻译错误或者是抄错了

使用特权

评论回复
板凳
ayb_ice|  楼主 | 2007-4-14 07:50 | 只看该作者

<>

<<ARM体系结构与编程>>,清华大学出版社...
我在网上搜索过好象有这种说法,但不知是什么意思....

使用特权

评论回复
地板
xwj| | 2007-4-14 08:54 | 只看该作者

是指 整数运算核 的流水线,这是相对于有浮点协处理器的CPU

比如经典奔腾,就有整数运算核核浮点协处理器,它的每条整数流水线都分为四级流水,而浮点流水又分为八级流水。


流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的时钟频率,并通过不同单元的同时运行来提高整体运算速度。


流水线越长分的步骤越细,主频就可以做的越高,例如Pentium 4的流水线就长达20级。因此它的主频可以做的很高。但整体速度并不一定会随主频相应提高的

再说说怎样计算CPU、特别是流水线速度,以最简单的经典奔腾整数核来说吧:
它的整数核流水线 分为四级流水,即指令预取、译码、执行、写回结果,

我们来分析下流水线下的指令执行时间核步骤:
顺序执行时

 

CLK1

CLK2

CLK3

CLK4

CLK5

CLK6

CLK7

指令1

预取

译码

执行

写回

 

 

 

指令2

 

预取

译码

执行

写回

 

 

指令3

 

 

预取

译码

执行

写回

 

指令4

 

 

 

预取

译码

执行

写回

 

第一条开始

 

 

 

第一条执行完

 

 

 可以看出,顺序执行时除了前面几条指令后面的都能做到1CLk1条指令,确实很快;
 
 
有跳转时:

 

CLK1

CLK2

CLK3

CLK4

CLK5

CLK6

CLK7

CLK8

指令1

预取

译码

执行

写回

 

 

 

 

指令2跳转

 

预取

译码

执行

写回

 

 

 

 

 

 

 

 

 

 

 

 

指令3正确

 

 

预取

译码

执行

写回

 

 

指令3跳

 

 

 

 

预取

译码

执行

写回

 

第一条开始

 

 

 

第一条执行完

 

 

 

有跳转时,如果预测正确会在CLK5执行第三条指令(不影响速度)
如果预测错误,就得在CLK5重新启动指令3的预取、译码、执行、写回过程,这条指令就慢了2个CLK,
对于Pentium 4的20级流水线,那就不是慢一点点了,事实上也确实如此
 
但是流水线过长也带来了一定副作用,很可能会出现主频较高的CPU实际运算速度较低的现象,Intel的奔腾4就出现了这种情况,它的1.4G主频CPU ,其运算性能却远远比不上AMD 1.2G的速龙甚至奔腾III 1G。

呵呵,当初被INTEL忽悠了的人可真不少啊:-)



使用特权

评论回复
5
ayb_ice|  楼主 | 2007-4-14 09:01 | 只看该作者

谢谢 xwj...

谢谢 xwj...
还有个问题想请教一下,ARM里面由于流水线的原因,每条指令的执行时间并不是固定的,取决于程序是否发生了跳转等原因,但为什么有的MCU也是流水线的,但指令在任何情况都是固定的执行周期,比如很多改进51内核LPC900,XC800,ATMEL 89LPx,我觉得固定的比较好,特别是嵌入式...

使用特权

评论回复
6
xwj| | 2007-4-14 09:14 | 只看该作者

你了解CPU流水线吗? [转]

你了解CPU流水线吗?
作者:

让我们先来了解一下流水线(Pipeline)。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5??6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5??6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水(如图1)。 

流水线是CPU性能的一个重要参数。流水线设计的不同是由CPU本身的构架所决定的,而采用几级的流水线是由CPU设计的目的决定的。我们知道K7和PⅢ的流水线为10级,K8为12级的;P4既有20级的(Northwood和Willamette核心)也有31级的(Prescott核心),这取决于CPU的核心。可是还有一些问题是容易让人忽视的,下面就让笔者来谈一谈流水线带来的误区。 

处理器流水线基本可以划分为:指令预取→指令解码→指令执行→载入/储存→写回寄存器这五个部分。在一个周期内只能进行单一的“行为”,如“预取”、“解码”等,但不否认可以同时进行这五个操作。 

流水线可以被比喻为“楼梯”,不管采用几级流水线,一个周期内所达到的高度都是一个楼层的高度。也就是说楼梯采用的阶数越多,坡度越小,同时路程也越长;这样对于构架一定的情况下,楼梯的阶数必然有一个最佳值。CPU的主频,可以将其看成登楼梯的某人的速度,而在一定的时间内人所到达的高度便是CPU的性能。这样说,或许不够清晰,我们不妨用具体的数值来看一下。假设楼梯的阶数为10(K7),速度为1GHz,它完成一个周期的时间就是10/1=10。而如果楼梯的阶数为20(P4),速度为2GHz,完成一个周期的时间也是10(20/2)。也就是说采用20阶需要2倍的速度才可以在同样的时间内完成相同的任务。但这种计算方法过于简单,在实际运算中并不是这样的(如图2)。也就是说20阶楼梯的路程并不是10阶路程的2倍,但这个比方却能很形象地说明流水线的长短与频率之间的关系。 

那么既然如此,为什么CPU厂商还在不断加长CPU的流水线呢?Intel最新的Prescott核心的CPU流水线长达31级。增加的流水线级数,设计起来比较容易,电路比较简单,每级执行的操作也简单,同时有利于提升处理器的频率。“可提升处理器的频率”这一点对厂商来说很重要,可以让其在频率的竞争中处于领先的位置。但有一利就有一弊,超长流水线所带来的负面效应,就是分支预测性能的下降。分支误预测仍是Intel最弱的一环。分支预测发生在流水线的第一段,如果处理器误预测了一个分支,它必须从流水线中冲掉在错误分支方向上执行的全部指令,然后在正确的程序分支方向上重新启动指令执行和处理。流水线越长分支误预测造成的性能损失越大。简单地说Pentium 4处理器在运行中如果分支预测准确,运行速度会很快,如果预测错误,那么Pentium 4处理器将比AMD处理器受到更多周期的惩罚。 

前面笔者曾提到过“如何设计流水线是由CPU本身的构架决定的”。其实,关于流水线不仅仅只是文中开头的那几个数字。因为设计的不同,AMD的CPU包括整数流水线和浮点流水线。如K7构架的整数流水线为10级,而浮点流水线(又称“流水线深度”)15级;K8构架的整数流水线在K7的基础上增加了2级(即12级),浮点流水线也是如此(即17级)。而Intel的流水线就更为特殊,因为其特殊的构架它并不分整数和浮点流水线,而是将8级指令获取/解码的流水线分离出来,因此严格说起来,Northwood和Willamette核心有28级流水线,而Proscott有39级流水线,是现在Athlon 64(K8)架构流水线的两倍。 

CPU是一个整体单纯地看待某一个性能参数是不明智的,所以现在AMD和Intel都在提出各自对CPU性能评价的标准。AMD提出“TPI ??True Performance Initiative??理念”,即所谓真实性能标准理念,是指协助用户全面理解适合实际应用需求的电脑性能的一种理念。它既取决于CPU的时钟频率(以MHz或GHz计量),又取决于CPU在规定时钟周期内可以完成的工作量??以每时钟周期完成的指令数(IPC)计量??。真实性能就等于时钟频率与单位时间周期完成工作量的组合,即应用性能=??时钟频率/MHz??×??每时钟周期完成的工作量/IPC??。而Intel也提出用“耗电/性能”作为衡量CPU性能的标准。 

结论一:流水线的提出可以将复杂的操作或问题简单化(分成几个简单的部分,个个击破)。AMD CPU浮点运算比较强劲,与它单独设计浮点流水线不无关系,而Intel在整数和解码方面一直独占鳌头,与它“将8级指令获取/解码的流水线分离出来”有很大关系。 

结论二:文中提到楼梯的比喻并不贴切,因为它不能反映出同时进行的多个操作。不过,倒很能说明流水线越长就越需要高频率来支持。 

结论三:长流水线有利于提升CPU频率,但主频不是惟一衡量CPU性能的参数,对于此时CPU技术的高度发展,用其来衡量CPU的性能并不合理,这也是就Intel在频率竞争中放弃追求长流水线的原因。 

最后,笔者希望大家不要片面地将流水线作为衡量一款处理器的重要标准,毕竟CPU只有实际应用中获得出色的表现才能得到用户的认可。 

 

 

 

 

使用特权

评论回复
7
ayb_ice|  楼主 | 2007-4-14 09:23 | 只看该作者

再次感谢xwj...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

222

主题

15410

帖子

34

粉丝