Intel系列CPU的流水线技术的发展

CPU(Central processing Unit),又称“微处理器(Microprocessor)”,是现代计算机的核心部件。对于PC而言,CPU的规格与频率常常被用来作为衡量一台电脑性能强弱重要指标。

在提高CPU计算能力的过程中,流水线技术对提高CPU的效率产生了显著作用,就像流水生产在汽车制造业中一样,它对处理器的发展影响深远。

Intel公司创于1968年美国,纵观IT发展史,很少能有公司能像Intel这样屹立多年仍旧保持强大生命力的。作为现今世界上最大的CPU研发和生产者,如今的Intel就像是信息时代的一根支柱,为推动信息技术的发展做出了卓越的贡献。

  接下来我将以个人眼光讲述Intel公司CPU流水线技术的发展历程和相关技术方法,分为四部分。

注:第一个采用指令流水线的机器是IBM7030 as known as Stretch

一  综述Inter系列CPU芯片中采用的流水线技术的发展过程

  流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。

经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。

Intel的初次流水线引入,i486五级流水线:

  1989 年推出的 i486 处理器引入了五级流水线。这时,在 CPU 中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。这个设计使得 i486 比同频率的 386 处理器性能提升了不止一倍。五级流水线中的取指阶段将指令从指令缓存中取出(i486 中的指令缓存为 8KB);第二级为译码阶段,将取出的指令翻译为具体的功能操作;第三级为转址阶段,用来将内存地址和偏移进行转换;第四级为执行阶段,指令在该阶段真正执行运算;第五级为退出阶段,运算的结果被写回寄存器或者内存。由于处理器同时运行了多条指令,大大提升了程序运行的性能。

  80486利用“数据旁路”解决数据相关问题。

  80486利用“预取转移目标”方法,加快指令分支操作。

  但是这个阶段的CPU在执行一些数据相关的指令时,会存在流水线阻塞问题。

奔腾(Pentium)处理器

1993 年 Intel 推出了奔腾(Pentium)处理器。奔腾处理器架构增加了第二条独立的超标量流水线。主流水线工作方式类似于 i486,第二条流水线则并行的运行一些较简单的指令,比如说定点算术,而且该流水线能更快的进行该运算

奔腾 Pro (Pentium Pro)处理器

1995 年 Intel 推出了奔腾 Pro (Pentium Pro)处理器。和之前的处理器相比,奔腾 Pro 采用了完全不同的设计。该处理器采用了诸多新特性以提高性能,包括乱序执行的部件以及猜测执行。流水线扩展到了 12 级,而且引入了“超标量流水线”的概念,使得许多指令可以被同时处理。。

奔腾 4 处理器

  2002 年发布的奔腾 4 处理器引入了超线程技术。乱序执行部件的设计使得指令被执行的速度比处理器能够提供指令的速度更快。因此对于大部分应用,CPU 的乱序执行部件在大部分时间处于空闲状态,甚至在高负载的情况下也不能充分利用。为了让指令流能充分的流入乱序执行部件,Intel 加入了第二套前端部件(注:在处理器结构中,前端是指取指,译码,寄存器重命名等模块,经过前端部件的处理后,指令等待发射进入乱序执行部件)。虽然实际上只有一个乱序执行部件,但对于操作系统来说,它能看到两个处理器。前端部件包含两组同样功能的 X86 寄存器,两个指令译码器根据两个指令指针指向的地址分别处理。所有的指令被一个共享的乱序执行部件执行,但对应用程序来说并不知情。当乱序执行部件执行完成,像之前一样退出流水线后,最终结果返回虚拟的两个处理器。

二 总结Intel CPU发展过程中,提高流水线性能及CPU性能的方法、相关技术

80486

Intel 80486整数处理部分实现了指令流水线,属于早期流水线技术,具有代表性。

整数指令采用了5个步骤的指令流水线,每个步骤一般需要一个时钟周期:

① PF步骤——指令预取(Prefetch)

② D1步骤——指令译码1(Decode Stage 1)

③ D2步骤——指令译码2(Decode Stage 2)

④ EX步骤——指令执行(Execute)

⑤ WB步骤——回写(Write Back)

  80486利用“数据旁路”解决数据相关问题,设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令不再读寄存器组,而是直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作变得可以继续执行,书本上称作『定向技术』。

  80486利用“分支预测”方法,加快指令分支操作。

  但是这个阶段的CPU在执行一些数据相关的指令时,会存在流水线阻塞问题。比如先写后读。

奔腾处理器

奔腾架构增加了第二条独立的超标量流水线,两条流水线可以并行运行,而且每条流水线可以同时有多条指令在不同流水级执行。它几乎可以同时执行比 i486 多一倍的指令。

奔腾 Pro (Pentium Pro)处理器

乱序执行:处理器在一个由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定。在这种方式下,可以避免因为获取下一条程序指令所引起的处理器等待,取而代之的处理下一条可以立即执行的指令。

奔腾 Pro 的乱序执行部件拥有 6 个执行单元:两个定点处理单元,一个浮点处理单元,一个取数单元,一个存地址单元,一个存数单元。这两个定点处理单元有所不同,一个能够处理复杂定点操作,一个能同时处理两个简单操作。在理想状况下,奔腾 Pro 的乱序执行部件可以在一个时钟周期内执行 7 条微指令。

猜测执行:通过提前判读并执行有可能需要的程序指令的方式提高执行速度。

12级流水线,超标量流水线:在一个时钟周期内一条流水线可执行一条以上的指令。一条指令分为十几段指令来由不同电路单元完成。

奔腾 4 处理器

引入超线程技术:利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高CPU的计算和运行效率。

三 展望Intel CPU提高流水线性能的技术方向

提高指令并行度,重复设置器件、流水线。
提高器件利用率,规划指令的执行顺序。
提高器件执行速率。

就像目前Intel执行的Tick-Tock研发战略一样,在架构和工艺两面轮流发力。

四 课程报告学习感受

我想说的是:

  在学习这些知识之前从没想到过CPU里在发生着什么事情,现在感觉到CPU就像一个奇妙的小世界,飞快的运算靠的不是magic,而是一代又一代科研和工程人员的不懈奋斗,CPU真像是一个人为创造出来的奇妙天地,凝结着人类的智慧和想象力。

  我每天都在使用计算机,享受着信息化带来的丰富知识和方便,如今的计算机相比过去而言,操作简单了很多,同时功能也大大丰富了,这不禁让人感觉使用计算机是一件再简单不过的事情,我曾经也一度这样认为。

  如今,终于有机会更深入地了解面前的PC里那块隐藏着的小小硅片。

  摩尔定律的推动了整个社会的信息化建设,为了提高运算速率人们创造出了许多奇妙而有效地方法,在架构和工艺上双管齐下,在硬件和软件上做优化。

  从单流水线到超流水线,从单核到多核,目睹了一个问题的解决竟有如此多的方案,这让我颇有感慨:面对一个问题,解决方案可能多到你想不到,一定要打开思路,不要让思想受到局限。

  《计算机系统结构》虽然是一门偏向硬件的专业课,但里面蕴含的哲理和思想启迪,一定会在未来的生活和工作中给我带来启发!

参考资料:

1.80486的指令流水线  钱晓捷

http://www5.zzu.edu.cn/qwfw/wjyl/9-xntgjs/4a44c05f3f5a870e013f70e4d3f4207c.html

2.A Journey Through the CPU Pipeline

http://www.gamedev.net/page/resources/_/technical/general-programming/a-journey-through-the-cpu-pipeline-r3115

Intel系列CPU的流水线技术的发展的更多相关文章

  1. intel 酷睿core系列cpu的类型:U M H HQ MQ

    相对于笔记本来说.一般我们说的intel系列cpu是指应用于desktop桌面版,embedded嵌入式版, mobile移动版 桌面版和移动版cpu对比 http://tieba.baidu.com ...

  2. Intel系列微处理器的三种工作模式

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  3. Intel X86 CPU 系列的寻址方式

    Intel X86 CPU 系列的寻址方式 数据总线和地址总线要尽量相同,这个是一个地址就是一个指针.

  4. 第一篇:GPU 编程技术的发展历程及现状

    前言 本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界. 冯诺依曼计算机架构的瓶颈 曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的.该系统架构 ...

  5. 剖析CPU温度监控技术【转】

    转自:http://blog.csdn.net/hunanchenxingyu/article/details/46476545 迄今为止还没有一种cpu散热系统能保证永不失效.失去了散热系统保护伞的 ...

  6. 剖析CPU温度监控技术

    转载 :剖析CPU温度监控技术   标签: CPU 温度控制技术 1805 具体温度检测调整代码(转载)        迄今为止还没有一种cpu散热系统能保证永不失效.失去了散热系统保护伞的“芯”,往 ...

  7. geotrellis使用(四十一)流水线技术

    前言 之前 GeoTrellis 为方便用户将数据(GeoTiff 等遥感影像)导入到 backend (包含 Accumulo.File.Hadoop 等格式)中,编写了一个 ETL 类,该类的输入 ...

  8. AMD和Intel的CPU对比

    http://www.lotpc.com/yjzs/5825.html 推荐文章:小白看AMD与intel的cpu架构,AMD慢的原因 CPU核心的发展方向是更低的电压.更低的功耗.更先进的制造工艺. ...

  9. FPGA技术的发展历史和动向

    本文关键字:fpga技术,fpga发展, fpga培训,FPGA应用开发入门与典型实例 一.FPGA技术的发展历史 纵观数字集成电路的发展历史,经历了从电子管.晶体管.小规模集成电路到大规模以及超大规 ...

随机推荐

  1. Android 的 Handler 总结

    <一> Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管 ...

  2. 六轴加速度传感器MPU6050官方DMP库到瑞萨RL78/G13的移植

    2015年的电赛已经结束了.赛前接到器件清单的时候,看到带防护圈的多旋翼飞行器赫然在列,又给了一个瑞萨RL78/G13的MCU,于是自然联想到13年的电赛,觉得多半是拿RL78/G13做四旋翼的主控, ...

  3. RAM,SRAM,DRAM,SDRAM,DDR RAM,ROM,PROM,EPROM,EEPROM,NAND FLASH,NOR FLASH的区别

    RAM:由字面意思就可以理解,SDRAM SRAM DRAM(下面蓝色字体的这几种)都可以统称RAM,random access memory(随机存取存储器)的缩写,下面是51hei.com为大家整 ...

  4. find 命令

    1.当前目录下查找"test.cpp"文件 find ./ -name test.cpp 2.当前查找含有"abcdef"字符串的文件 find ./ | xa ...

  5. 使用HTTP方式远程连接PowerShell

    借助Windows PowerShell,我们可以像管理Linux一样使用命令行来远程管理Windows服务器.但是默认情况下,我们只能在域环境中使用PowerShell Remoting.如果是通过 ...

  6. eclipse PermGen space解决方案

    转自网上 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garb ...

  7. Python教程[廖雪峰],主要是实践

  8. plain framework 1 参考手册 入门指引之 许可协议

    许可 介绍 Apache2 License 介绍 使用非常友好的阿帕奇2许可协议,你可以应用到你想用的任何应用上,如需修改源码,请保留原作者信息. Apache2 License Apache Lic ...

  9. 我的STL学习之路

    说起STL(标准模板库),相信了解C++的都不会陌生吧^_^.LZ是从大三开始学习C++(ps:不是科班出身),并慢慢接触使用STL的,在学校中使用STL比较多的情况是写数据结构代码,使用STL实现数 ...

  10. DPM检测模型 训练自己的数据集 读取接口修改

    (转载请注明作者和出处 楼燚(yì)航的blog :http://www.cnblogs.com/louyihang-loves-baiyan/ 未经允许请勿用于商业用途) 本文主要是针对上一篇基于D ...