CPU中指令流水线技术研究计算机科学与技术专业.doc
《CPU中指令流水线技术研究计算机科学与技术专业.doc》由会员分享,可在线阅读,更多相关《CPU中指令流水线技术研究计算机科学与技术专业.doc(39页珍藏版)》请在沃文网上搜索。
1、1目录5第一章 绪论目录目录1第一章 绪论31.1现代RISC中的流水线技术31.1.1超流水线技术31.1.2超标量技术31.1.3流水技术在Pentium系列微处理器中的实现4第二章 流水线基础72.1流水线概念72.1.1指令重叠72.1.2流水线82.1.3流水线的特点92.1.4流水线的分类102.2流水线的主要性能112.2.1吞吐率122.2.2加速比和效率12第三章 指令流水线设计143.1流水线理想假设143.1.1一致的运算分量143.1.2重复的运算153.1.3独立的运算163.2指令流水线163.2.1指令流水线设计173.2.2指令集体系结构的影响183.2.3流水
2、线分级的考虑193.3流水线处理器设计203.3.1保持流水段均衡203.3.2统一指令类型213.3.3减少流水线停顿25第四章 流水线中各种相关及其处理264.1流水线中相关264.2资源相关264.3数据相关274.3.1指令相关274.3.2主存空间操作数相关284.3.3通用寄存器组相关284.4控制相关294.4.1猜测法304.4.2加快和提前形成条件码304.4.3采取转移延迟314.4.4加快短循环程序的处理31第五章 中断处理与流水线调度335.1中断处理335.2流水线调度33第六章 总结与展望37参考文献38第一章 绪论流水线技术是提高系统吞吐率的一项强大的实现技术,并
3、且不需要大量重复设置硬件。20世界60年代早期的一些高端机器中第一次采用了流水线技术。第一个采用指令流水线的机器是IBM7030(又称作Stretch计算机)。后来的CDC 6600同时采用了流水线和多功能部件。到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术之一。RISC设计方法的大部分技术都直接或者间接以提高流水线性能为目标。从此以后,流水线技术也被有效地应用到CISC处理器的设计中。Intel i486是IA32体系结构中的第一个流水线实现。Digital的VAX和Motorola的M68K的流水线版本在商业上也取得了成功。流水线技术是当前指令集处理器设计中广泛采
4、用的技术。在这里我们将重点放在(标量)流水线处理器的设计。流水线处理器设计中的许多方法和技术,例如用于检测和化解相关的流水线互锁机制,都是标量处理器设计的基本方法。当前的趋势是朝着超深度流水线的方向发展。流水线的深度已经从不到10发展到超过20.深度流水是获得高速始终频率的必要条件,这是提高处理器性能的一个非常有效的方法。有迹象表明。这种趋势还将持续下去。1.1 现代RISC中的流水线技术1.1.1 超流水线技术超流水线(Super Pipeline)技术是RISC采用的一种并行处理技术。他通过细化流水,增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质就是以时间换取空
5、间。超流水机器的特征就是在所有的功能单元都才用流水,并有更高的时钟频率和更深的流水深度。1.1.2 超标量技术超标量(Super Scalar)技术是RISC采用的有一种处理技术。它通过内装多条流水线来同时执行多个处理。其实质就是以空间换取时间。流水线实现中的问题及解决:流水线实现的一个问题是使流水线连续不断地流动,即不出现流断,才能获得高效率。断流的原因很多,除了编译生成的目标程序不能发挥流水结构的作用,或者存储系统不能及时供应连续流动所需的指令和操作数外,主要还与出现了相关、转移以及中断指令有关。解决局部性相关有两种方法:退后法和通路法;解决全局性相关有三种方法:猜测转移分支、加快和提前形
6、成条件码、加快短循环程序处理。1.1.3 流水技术在Pentium系列微处理器中的实现流水线技术早在Intel的X86芯片中均得到了实现。而Pentium系列CPU产品更是一个高级的超标量处理器。它是建筑在两个通用的整型流水线和一个可流水作业的浮点单元上的,这使处理器能够同时执行两条整型指令。一个对软件透明的动态分支预测机制能够使分支的流水线阻塞达到最小化。奔腾处理器可以在一个时钟周期内完成两条指令,一个流水线完成一条指令。第一个逻辑管道称之为“U”管道,第二个称之为“V”管道。在任何一条给定的指令译码期间,它安排的后面两条指令将被检查。并且,如果有可能,第一条指令被安排到“U”管道执行,第二
7、条指令被安排到“V”管道执行。如果不能,则第一条指令被安排到“U”管道执行,“V”管道中不安排指令运行。指令在两个管道中运行与它们顺序执行所产生的效果是完全一样的。当发生管道阻塞时,后继的指令无法通过被阻塞的指令所在的任一管道中。具有MMX技术的奔腾处理器为整型流水线增加了一个额外的处理阶段。指令从代码的高速缓冲区中预取出来,被送入到“预取”(PF)阶段,并且在“提取”(F)阶段中进行指令的语法分析。 另外, 全部的前缀译码都在F阶段中进行。 指令在先进先出(FIFO)的指令缓冲区中将语法分析与指令译码分开, 这个缓冲区位于F阶段与译码1(D1)阶段之间。FIFO缓冲区的空间能够将被处理的指令
8、上升到四条指令。FIFO缓冲区是透明的,当它为空时,不增加额外的迟延。在每个时钟周期内,可将两条指令压到指令的FIFO缓冲区中(根据有效的代码字节,以及其它因素,如前缀)。然后,再将成对的指令从FIFO缓冲区中弹出来,送到D1阶段中。由于指令的平均执行效率为每个时钟周期内不超过两条指令,所以FIFO通常是满的。只要FIFO是满的,就可以防止在指令提取和进行语法分析时产生的阻塞。如果发生了这样的阻塞,FIFO也可以使阻塞不在管道的执行阶段上发生。但如果FIFO空,由于流水线中无指令运行,则可能会导致一个执行阻塞。较长的指令或前缀可能会在FIFO入口处产生阻塞。超流水线(Super Pipelin
9、e)在本质上仍为一种流水线技术,但它做了以下的改进:1. 流水线条数从奔腾的两条增至三条,还有十一个独立的执行单元并行支持。2. 在执行中采取了无序执行(outoforder processing)技术。即当某条指令需要一些数据而未能立即执行完毕时,它将被剔出流水线并等待数据,CPU则马上执行下条指令,就好比在装配线上发现某件产品不太合格,而被淘汰,等待返工一个道理。这样,可以防止一条指令不能执行而影响了整个流水线的效率。3. 在P6中将指令划分成了更细的阶段,从而使逻辑设计、工序等等更为简化,提高了速度。在486芯片中,一条指令一般被划分为五个标准的部分,奔腾亦是如此。而在P6中,由于采用了
10、近似于RISC的技术,一条指令被划分成了创纪录的十四个阶段。这极大地提高了流水线的速度。P6系列处理器使用动态执行结构。该结构通过硬件寄存器重命名和分支预测的方法,将乱序执行和推测执行合成在一起。这些处理器有一个有序进入的流水线,它将Intel 386的宏指令支解成简单的微操作(或UOP)和一个可以处理这些微操作的乱序的超标量处理器内核。这个乱序的处理器内核包含了几条流水线,连接了整型、跳转、浮点和内存执行单元。几种不同的执行单元可以集成在同一条流水线上。例如:一个整型地址逻辑单元和浮点执行单元(加法器、乘法器和除法器)同享一个流水线。数据高速缓冲区由一个专用的读取端口和其它的存储端口交错而成
11、。大多数简单操作(整型ALU,浮点加法,甚至浮点乘法)可以按每时钟周期完成一至两个操作的吞吐量进行流水作业。浮点除法不可以进入流水线,长迟延操作可以和短迟延操作并行处理。P6系列的流水线由三部分构成:有序组织的前端(In-Order Issue Front-end)单元,乱序内核(Out-of-order Core)单元和有序的退出(In-Order Retirement)单元。Intel新近推出的奔腾处理器使用了P6中的动态执行技术,包括多分枝预测、数据流分析、投机执行。同时奔腾处理器具有一个流水线式的浮点运算单元(FPU),可支持32位、64位和80位的浮点运算。最近Intel又发表奔腾4
12、,奔腾4基本的指令流水线长度达到了20级,是 P6架构的2倍,也超过了AMD的Athlon。更长的流水线可以使处理器运行在更高的主频下,从而提高处理器的性能,但有可能带来一些指令执行上的延迟。13第二章 流水线基础第二章 流水线基础加快机器语言的解释过程提高机器的运算速度是设计计算机的基本任务之一。这可以通过两个途径来实现。一个途径是提高器件的速度,采用更好的算法,增加指令内各微操作的并行程度,减少解释过程所需要的拍数等多项措施来加快机器指令的解释。另一个途径则是采用重叠和流水方法,同时解释两条、多条以至整段程序,从而加快整个机器语言程序的解释。流水线技术是目前广泛应用于微处理芯片中的一项关键
13、技术,Intel公司更是这项技术在微处理器中应用的首先实现者。2.1 流水线概念指令的三种控制方法:顺序方法、重叠方式、流水方式。顺序方法是指各条机器指令之间顺序串行地执行,而且每条机器指令内部的各个微指令也是串行执行。这种方法虽然控制简单但速度上不去,机器各部件的利用率低。重叠方式是指在解释第K条指令的操作完成之前就开始解释第K+1条指令。通常都是采用一次重叠,即在任何时候,指令分析部件和指令执行部件都只有相邻两条指令在重叠解释。这种方式使指令的解释速度有所提高,控制也不太复杂但会出现冲突、转移、相关等问题,这些都需要在设计时想办法解决。流水方式就是把并行性或并发性镶嵌到计算机系统里的一中形
14、式。它是把重叠的顺序处理过程分解为若干过程,每个过程能在专用的独立模块上有效地并发工作的技术。在概念上“流水”可以看成“重叠”的延伸。不同的是“一次重叠”只是把一条指令的解释分解成两个子过程,而“流水”则是分解为更多的子过程。2.1.1 指令重叠一条指令的执行过程可分为取指令、分型与执行三个过程(如图2.1)。取指令,取出该指令送到指令寄存器。指令的分析指的是对指令的操作码进行译码,按寻址方式合地址字段形成操作数真地址,并用此真地址去取操作数,还要为准备取下一条指令提前形成下一条指令的地址等。指令的执行则是指对操作数进行运算、处理,或存储运算结果。指令的重叠解释方式指的是,在解释第k条指令的操
15、作完成之前,就开始解释第k+1条指令。假设这三个过程分别在3个不同的硬件(指令控制器、分析器和执行部件)上进行,则当第k条指令处于分析阶段的时候,控制器就处于空闲状态,这个时候可以对第k+1条指令进行取指令操作,当第k条指令处于执行状态时,分析器就处于空闲状态,这时可以进行对第k+1条指令的分析(图2.2)。很显然,重叠解释的方式并不能加快一条指令的实现,但是可以加快两条相邻指令以至一段程序的解释。图2.1 机器指令的顺序执行方式图2.2 指令的重叠解释方式2.1.2 流水线流水其实就是重叠的引申,上面谈到的重叠模型实际上就是一个简单的3级流水模型。如果将分析与执行阶段再细分为指令解码、取操作
16、数、执行运算和存储结果,当第k+1条指令在第k条指令执行去操作数的时候就可以开始解码,而不必等到分析k完全结束。这样子在一个指令周期内就可以同时执行5条指令。流水线工作方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工程中的生产流水线十分相似,因此,把他成为流水线工作方式。在处理机的各个部分几乎都可以采用流水线工作方式。指令的执行过程可以采用流水线,成为指令流水线。运算中的操作部件,如浮点加法器,浮点乘法器等可以采用流水线,成为操作部件流水线。访问主存储器部件也可以采用流水线。甚至在处理机之间,机器之间也可以采用流水线。图2.3 指令流水线2.1
17、.3 流水线的特点从上面的分析中可以看到,在处理机中采用流水线方式与采用传统的串行方式相比,具有一下特点:1. 在流水线中处理的必须是连续任务,只有连续不断的提供任务才能充分发挥流水线的效率。例如。要是浮点加法器充分发挥作用,需要连续提供浮点加法运算。然而,由于程序本身的原因和程序设计过程中人为造成的一些原因,入数据相关等,不可能为浮点加法器连续的提供同一种操作。因此,在采用流水线工作方式的处理器中,特别是当流水线的级数较多时,要在软件和硬件等多方面为流水线提供连续的任务,以提高流水线的效率。2. 把一个任务分解成几个有联系的子任务,每个任务由一个专门的功能部件来实现。因此,流水线实际上是把一
18、个大的功能部件分解为多个独立的功能部件,并依靠多个功能部件并行工作来缩短程序的执行时间。在流水线中,一个子任务通常称为一个子过程,或者一个功能段。3. 在流水线每一个功能部件后面都要有一个缓冲寄存器,或称为锁存器等,用于保存本段执行的结果。这是因为流水线中每一段的延迟一般都不可能相等,因此,在段与段之间传递子任务时,必须要通过缓冲寄存器。当某一个功能段的时间变化范围比较大的时候,要设置多个缓冲寄存器。4. 流水线中各个段要尽量匀称,即时间要求尽量相等,否则将容易引起“阻塞”、“断流”等问题。执行时间最长的段将成为整个流水线的“瓶颈”,这时,流水线中各段将受到限制而不能充分发挥作用。只有当整个流
19、水线完全充满时,整个流水线的效率才能得到充分的发挥。为了设计出高效率的流水线,要充分注意上述问题。2.1.4 流水线的分类从不同的角度,按照不同的观点,可以把流水线分成多种不同的类型。平时所说的某种流水线,往往是按照某种观点,或者从某一个特定的角度对流水线进行分类的结果。因此,从名称上只能反应出这种流水线在某一个方面的特点或者功能。按照流水线的各功能段之间是否有反馈信号,可以把流水线分为线性流水线合非线性流水线。线性流水线是将流水线各个功能段逐个串联起来,输入数据从流水线的一段进入,从另外一段流出。数据在流水线中经过时,没一个功能段都流过一次,且仅仅流过一次。一条线性流水线通常只完成固定的一种
20、功能,在现代计算机系统中,线性流水线已经被广泛的应用于指令执行过程、各种算术运算操作、存储器访问操作等。图2.4 非线性流水线非线性流水线经常用于递归调用,或者构成多功能流水线。按照流水线使用的不同级别,可以把流水线分为功能部件级、处理器级以及处理机之间等多种类型。处理机级流水线即指令流水线,他把一条指令执行过程分解为多个子过程,每一个子过程在一个独立的功能部件中完成。功能部件级流水线也称为运算操作流水线,如浮点加法器流水线、浮点乘法器流水线等。处理机间流水线又称为宏流水线,一般是两台以上处理机通过存储器串行连接起来,每一个处理机对一个数据流的不同部分分别进行处理。 图2.6 指令流水线流水线
21、又可分为单功能流水线和多功能流水线。顾名思义,单功能流水线只能完成固定的单一功能,多流水线通过各个段间进行不同的连接,在不同的时间内或者统一时间内通过不同的连接方式完成不同的功能。在多功能流水线中,根据同一时间内是否可以连接成多种方式,同时执行多种任务,可以把多功能流水线分为静态流水线合动态流水线。所谓静态流水线指的是在同一时间段内,多功能流水线各段只能按照一定固定的方式连接,实现一种固定的功能。只有当按照这种连接方式工作的所有任务都流出流水线之后,才能重新进行连接,完成其他功能。动态流水线则在同一时间段内,可以按照不同的连接方式,完成多种不同的功能。这个时候要求流水线中个功能部件之间不能发生
22、冲突。除了以上几种分类方法外,还可以根据其他标准,从不同角度对流水线进行分类。2.2 流水线的主要性能衡量流水线主要性能的指标主要有吞吐率,加速比和效率。2.2.1 吞吐率吞吐率是指在单位时间内流水线所完成的任务数量或者输出的结果数量。即: 式(2.1)中,n为任务数,是处理完成n个任务做用的时间。本式为计算吞吐率最基本的公式。有的时候我们还需要求一条流水线的最大吞吐率: 式(2.2)中为第k个子过程所花费的时间。最大吞吐率受限于流水线中最慢子过程即瓶颈子过程所需要的时间。为了提高流水线的最大吞吐率,首先要找出瓶颈,然后设法消除此瓶颈。消除瓶颈有两种办法,一是将瓶颈子过程再细分,另一种办法是通
23、过重复设置多套瓶颈段并联,让他们交叉进行。后一种方法需要解决好在各并行子过程之间的任务分配合同步控制,比起瓶颈子过程再细分控制要复杂、设备量要多一些。2.2.2 加速比和效率完成一批任务,不使用流水线所花的时间与使用流水线所用时间直比即为流水线的加速比。如果不使用流水线,即顺序执行所用时间为,使用流水线的执行时间为,则流水线的加速比为: 这是计算流水线加速比的基本公式。流水线的效率是指流水线的设备利用率。在时空图上,流水线的效率定义为n个任务所占的时空区域与k个功能区域所占时空区域之比。因此,流水线的效率包含有时间和空间两方面的因素。实际上,n个任务所占的时空区域就是顺序执行n个任务所用的总的
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPU 中指 流水线 技术研究 计算机科学 技术 专业
