您的位置:首页 > 理论基础

计算机组成原理:流水CPU

2016-06-22 22:33 627 查看
写在前面

许多人在选择或了解 CPU时,常常忽略“流水线”这个指标。其实也难怪,在经常被介绍的CPU参数中,
关于流水线被提到的不多,即便提到,也相当简略和专业。非专业人士很难理解,有时也就不甚了了。
也许有人会说,我管它什么流水线不流水线的,型号越新、价格越高,就一定越好。这种想法不是没有道理。
可是,当面对市场时, 您一定会蒙圈的。 因为,确实有型号旧的 CPU因为流水线的原因,性能接近或超过新型
号的;确实有主频低的 CPU由于流水线的原因,性能接近或超过主频高的;确实有价格低的CPU由于流水线
的原因,性能接近或超过价格高的……
所以,了解 CPU的流水线技术,对非专业人士也是有益无害的。 其实,非专业人士并不一定了解的那么详】
细。 可偏偏您在选择或了解 CPU时,常会有人告诉您, 某某CPU采用了先进的“ 分支预测技术”啥的,整得
好像多神秘似的。 那就让我们看看“神秘”面纱的后面吧。
遗憾的是,非常遗憾的是,网上关于 CPU流水线的解释,大多都相当专业,使用了很多艰涩难懂的术语,
长篇大论的比比皆是。使许多非专业人士望而却步。
本文力图用通俗易懂的语言,简单明了地介绍一下 CPU的流水线技术,资料都来自网络。 因为很少使用专
业术语,难免有不严谨之处。好在又不是写学术论文给专家们看。纯属个人理解,绝非权威观点。
CPU 流水线(Pipeline)浅说
啥是
CPU
流水线
说到生产中的流水线,人们并不陌生。汽车组装流水线可以说是人们比较熟悉、比较典型的流水线(因为电
视中常看到)。
假设汽车组装流水线分 4个主要工序:
1、安装动力及其传动系统(发动机、变速箱等);
2、安装向内配置(座椅、仪表等);
3、安装车轮等;
4、安装外壳等。
假设完成 4道工序需要40分钟(每道工序需要10分钟)。
如果这4道工序按流水线的方式工作,当第1道
工序完成,下交给第 2道工序组装时,第·道工序又开始下一台车的安装。那么,每10分钟就有1台车上线开
始组装, 40分钟内将有4台车在被组装中(只不过组装的部位不同)。
如果再将 4道工序细分为8道工序(加长流水线),40分钟内会有8台车在线上组装,每5分钟就有一台车
上线开始组装。
可见,细分的工序越多,在线组装的车就越多。
CPU 流水线技术正是利用这个原理的。
在 CPU流水线技术中,“ 指令” 相当于“ 车”,“级” 相当于“工序”。
级数越多, 单位时间内“ 在线” 执行的指令就越多, 即 CPU执行指令速度越快。
如果将 CPU流水线设计为十几级、几十级, 速度提高程度可想而知。
当流水线级数( 深度) 在5级以上时,通常叫“ 超流水线” 。
啥叫“ 指令” ?
从现在开始,我们需要常用“ 指令” 这个词,所以先说说它吧。
我们对电脑下达的每一个命令都是在下达指令, CPU对于一条具体的指令执行过程,通常可以分为5个步
骤:取指令—指令译码—取操作数—运算—写结果。
流水线与主频
在许多资料中常会看到这样的话“ 由于流水线技术的进步,使 CPU主频得到提高” 。貌似主频的提高取决
于流水线技术。其实不是这样的。
首先,必须明白,主频是由外频和倍频决定的。 也可以说,即便没有流水线技术, 主频也可以做得很高。
但是,如果没有流水线技术,主频做得再高也没有实际意义,因为单位时间内无法提供那么多的指令、数据
供高速的 CPU去执行,相当一部分CPU资源会被闲置。所以,人们在设计主频时,主要考虑的是能够满足执
行指令、数据运算的需要就可以了。从这一点上理解,由于流水线技术的应用,使提供指令的数量得以大幅度提高,高主频设计成为有的放矢。所以说,流水线技术,促使人们提高主频,以满足大量指令、数据的执行、 运算需要。 也可以这样理解,有了流水线技术,主频做得不够高,
大量指令、数据的执行、 运算不能及时实现,结果就会出现小马拉大车的现象。所以说,流水线技术促进了主频的提高,主频的提高,才能满足流水线技术的需要。 不严谨的理解,如果主频表示着
CPU可达到的运算速度的话,那么,流水线技术可以使“ 可达到” 变为现实。因此, 自从
Intel首次在486芯片中开始使用流水线技术后,CPU主频蹦着高地窜。要说,流水线技术真是个好东西,但人们在使用过程中遇到了许多问题,在不断解决问题的过程中,
流水线技术也在不断地成熟。
如果您要了解,看看下面的内容吧。
分支预测与乱序执行
先得说说“ 相关”
前面讲到, CPU对于一条具体的指令执行过程,通常可以分为5个步骤: 取指令—指令译码—取操作数—
运算—写结果。在一个流水线中,如果下一条指令需要用到上一条指令的结果才能正确执行,这种情况叫做“ 相关”。 有人又叫它“ 条件转移”,指令
A在这里叫“ 条件指令”。
再说“预测”和“ 乱序”
假设现在有 A、B、C、D、E、F、G七条指令需要上一个5级流水线。
其中A和B是相关的。
一般流水线可不管你相关不相关,当 A执行完第1步时,就叫B马上上线。结果就会出现错误。咋办?科学家们弄出了“
分支预测” 与“ 乱序执行” 技术。要说这两个玩意儿可真够“ 聪明” 的。首先分支预测技术在
B还没有上线时,就预测到它现在还不能上线,就叫它靠边先候着。乱序执行(
out-of-orderprocessing)
技术紧接着让无相关的指令 C、D、E、F先上线,仍旧保证流水线在全负荷工作。在
A执行第5步时, 分支预测技术又提前预测出下一个该B上线了。到A执行完时,早就候命的
B便一步冲上前,在G之前加塞上线。现在的分支预测技术能够达到
90%以上的正确率, 进一步提高分支预测的准确率也是正在研究的一个课题。
级数与效率
首先要重复一下前面讲到的流水线“ 级数越多,单位时间内在线执行的指令就越多,即
CPU 执行指令速度越快。” 但是,可但是,理论和实际总是有差距的。 这就引出了流水线级数与效率的问题。 流水线技术有个很叫人郁闷的弊端,就是“错误”和“延迟”。
先说“ 错误”
一旦某一级出错的话, 就需要整条流水线停下来, 等待修正指令的修正,致使执行效率反而下降。流水线越长,级数越多,出错的机会也越大,出错的影响也越大。
虽然这种错误几率很小很小,但是不可避免,而且会被非常高的主频放大无数倍,带来的影响就是工作效率并没有随着级数的增加而明显提升。“聪明”的“分支测”与“乱序执行”技术也不是没有疤瘌眼的。出错总是难免的。而且,
高速运行的流水线出现

其它错误也是难免的。
再说“ 延迟”

由于任何电导体都会产生延时。 流水线越长、级数越多, 延迟次数就越多,总延时就越长, CPU 完成单个指令的时间就会越长。 也就影响着 CPU 的实际工作效率, 还会带来高功耗和高发热量。错误和延迟告诉我们, 流水线并不是越长越好!

例如, 近年来 Intel 的奔 4 处理器经过了三个阶段的发展。

最早的奔 4 只有 13 级的流水线, 普遍主频未达到 2G, 速度一般。第二代奔 4 有 20 级流水线, 由于级数比较合适, 所以速度得到大幅度提升了, 又未影响执行效率。 当时的奔 4-2.4A 是一款经典产品。尝到了甜头 Intel 很快就推出了第三代奔 4,有 31 级流水线。 但很快发现,这个奔 4 的实际运行效率还不如

老奔 4。 发热和功耗都很大。 “高频低能”的美名,终止了 Intel 对第四代奔 4 的开发。因此, 科学家们总是在不断地研究级数与效率的合理搭配,以取得最佳级/效比。级数不能太高, 速度又要提高。为了这,聪明的科学家弄出了个“超标量”。
超标量
超级标量是一种多流水线技术。 就是在一个 CPU 内弄几条流水线。 在每条流水线级数不多的情况下,增加

同时执行的指令数, 从而提高 CPU 的执行、运算速度。

通常, 传统的 Intel 走的是少条、 长流水线的路子。 AMD 走的是多条、 短流水线的路子。由于 AMD 由于流水线级数较少, 所以主频较低。 所以,有些人认为低主频的 AMD 速度不如高主频 Intel快。 其实 Intel 和AMD 只是走了两条不同的提高 CPU 性能的路而已。实践证明,多条、短流水线技术的确有许多长处。因此,Intel 的 Pentium MIntel 也开始采用这种流水线结构了。

可以说,当前流行的 CPU,都包括“超流水线”“ 超标量”“分支预测”“乱序执

行”等技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: