Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3006390
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类:

2009-06-20 17:32:11

对于CPU来说,它的工作可分为获取指令、解码、运算、结果几个步骤。其中前两步由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令按顺序执行,先由指令控制器工作,完成一条指令的前两步,然后运算器工作,完成后两步,依此类推……很明显,当指令控制器工作时运算器基本上处于闲置状态,当运算器在工作时指令控制器又在休息,这样就造成了相当大的资源浪费。于是CPU借鉴了工业生产中被广泛应用的流水线设计,当指令控制器完成了第一条指令的前两步后,直接开始第二条指令的操作,运算器单元也是,这样就形成了流水线。流水线设计可最大限度地利用了CPU资源,使每个部件在每个时钟周期都在工作,从而提高了CPU的运算频率。 
  工业生产中采用增设工人的方法加长流水线作业可有效提高单位时间的生产量,而CPU采用级数更多的流水线设计可使它在同一时间段内处理更多的指令,有效提高其运行频率。如IntelNorthwood核心Pentium 4处理器中设计的流水线为20级,而在Prescott核心Pentium 4处理器中其流水线达到了31级,而正是超长流水线的使用,使得Pentium 4在和Athlon XP(整数流水线10级,浮点流水线15级)的频率大战中取得了优势。
  CPU工作时,指令并不是孤立的,许多指令需要按一定顺序才能完成任务,一旦某个指令在运算过程中发生了错误,就可能导致整条流水线停顿下来,等待修正指令的修正,流水线越长级数越多,出错的几率自然也变得更大,旦出错影响也越大。在一条流水线中,如果第二条指令需要用到第一条指令的结果,这种情况叫做相关,一旦某个指令在运算过程中发生了错误,与之相关的指令也都会变得无意义。
 最后,由于导电体都会产生延时,流水线级数越长导电延迟次数就越多,总延时自然也就越长,CPU完成单个任务的时间就越长。因此,流水线设计也不是越长越好的。 
阅读(728) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-07-01 03:07:38

好文章,学习了 自我介绍一下,我是ARM技术论坛 www.armjishu.com 的一名嵌入式老师 我的QQ号码是7819226,咱们有空切磋一下啊,很高兴能认识你啊