Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100166
  • 博文数量: 64
  • 博客积分: 3050
  • 博客等级: 中校
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-22 18:16
文章分类
文章存档

2010年(56)

2009年(8)

我的朋友

分类:

2010-01-14 15:35:57

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

看一下流水线的来由, 大家都知道, 两个CPU会比一个CPU快, 但是为什么呢? 一个CPU,运行WORD,一个CPU,运行CS呀, 那是因为,把指令细分成线程后,他们可以分别运行,cyrix的MII,当时不是有个技术叫乱序运行, 就是提高运行效率的一个手段, 流水线也是这种目的, P4的时候, 就20级流水线了, 就是说CPU运行一次等于20个CPU(没有流水线)同时运行一样, 运行速度一下子提高了20倍

但是,事实上并不是这样, 为什么呢? 这20个东东运行完了, 得把它们再拼一起呀, 但如果拼错了, 它就认为, 这次的运行结果是错的, 说"重来"吧. 那么,有一个CPU, 只有10级流水线,但是由于他们的管理很好, 每次运行都不返工, 所以, 他们的生产效率反而更高! 现在问题来了, 要不要采取长流水线技术呢?

AMD和INTEL, 现在正是这种情况, 一个抓管理,管理上去了,下面的工人出错的才少(返工次数少), 一个抓技术,工人熟练了,生产的东西质量才高(每次出来的东西多). 当然又抓管理,又抓技术,两手都要抓,两手都要硬,这是中国人的想法,都抓的人,显然什么都没抓好,都破产了,现在只有这两家还存活着,......现在我想给流水线一个公正一点的说法, 如果你的CPU组装的水平很差, 那当然, 流水线越多你越乱, 就像你的水平不行, 管理了1000多个程序员高手, 项目组织的一团糟. 但是,如果你是一个管理经验丰富的人, 下面的人一个也不会做活, 那么,项目也是一个失败, 幸好,事实上并不是这样绝对,管理员也是差不多的水平, 程序员也是差不多的水平, 那么你建一个项目, 你选好的程序员? 还是好的管理员?

我说,不一定,我得看是什么项目, 如果项目是一般的项目, 一般的管理员就可以了,那么,我当然选好的程序员, 项目完成的又快又好, 一个程序,本身就可以乱序运行, 那么INTEL的CPU当然就是最好了, 反正大家都不会返工, 但是一个项目是很复杂的, 而代码量并不多, 那么,当然是选好的管理员, 如果一个程序,就是针对测试而测试的, 导致CPU运算不断的返工, 那当然就是AMD的CPU好, 比如,大浮点数的运行, AMD比INTEL的高50%, 现在看不到这种比较了, 但是你可以查一查以前的资料, 有PIII-1G与AMD速龙1G的比较, 这个差异到现在也没有改变, 这就是为什么AMD的CPU显卡得分会比INTEL的高, 3Dmark2001的得分一般都比INTEL的高, 而business stone, INTEL 一般都比AMD要高, SYSMARK也是INTEL 比AMD要高, 因为这些程序不复杂,(线程复杂,和程序本身复杂是两回事)

但是,我要为流水线正一正名, 并不是流水线长了,运行效率就低了, 流水线长了,运行效率绝对是高了, 但是,运行出错的代价是大了,流水线,这本身是一个提高效率的技术, 怎么现在的人都当成是因为提高频率所必须采用的手段呢? 当时没有流水线的时候, 流水线一出来的时候, 大家都认为这是提高效率的秘密武器呀!

越是实际的程序,越容易发生流水线返工,因此P4效能越差。倒是纯粹的理论测试, 比如sandra, pcmark还有3dmark之类P4表现不错(老实说P4在3dmark里面的表现相对于在bussiness winstone里面算好的了),而到了实际测试,特别是bussiness winstone(直接调用office源代码)或者sciencemark(直接编译的标准量子化学代码)里面,p4的表现那叫一个菜。连P4-3.2c 都不是同PR值的AthlonXP的对手。至于sysmark里面Intel的分高, 那是一个著名的bug, 因为sysmark认为AthlonXP不支持SSE,结果是AthlonXP用x87浮点对抗专门为SSE优化的多媒体代码,性能自然不成(即使这样Intel也没有多少优势)。 在bussiness winstone 2002的测试结果,看看就会发现,P4-3.2c的性能刚刚可以匹敌公认为虚标最严重的AthlonXP 3200+ 。 当然,多媒体性能上P4-3.2c还是毫无疑问的战胜AthlonXP 3200+ , 毕竟,AthlonXP不支持SSE2。

即使没有流水线返工,长流水线的性能也就和短流水线相同,因为每条流水线每周期就只能执行一条指令(p4有个怪异的设计就是如果跑配对的两个简单微指令, 那么两个可以并成一个执行,所以如果你反复执行完全相同的指令比如a=a+1一百亿次,那么P4比AthlonXP要快一倍),所以长流水在任何角度也不可能提升效率。
长流水的唯一好处就是,电路比较简单,设计起来比较容易.解释的详细一点就是,并不是说20级流水线每次执行的动作比10级流水线多一倍,相反,他们能执行的实际功能是一样的,只是每级执行的操作简单了一些。 
 
阅读(2793) | 评论(0) | 转发(0) |
0

上一篇:硬件相关知识

下一篇:硬件相关知识

给主人留下些什么吧!~~