计算机科学与技术专业毕业论文_第1页
计算机科学与技术专业毕业论文_第2页
计算机科学与技术专业毕业论文_第3页
计算机科学与技术专业毕业论文_第4页
计算机科学与技术专业毕业论文_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录 1 计算机科学与技术专业毕业论文 .目录 第一章 绪论 . 3 1.1 现代 RISC 中的流水线技术 . 3 1.1.1 超流水线技术 . 3 1.1.2 超标量技术 . 4 1.1.3 流水技术在 Pentium 系列微处理器中的实现 . 4 第二章 流水线基础 . 7 2.1 流水线概念 . 7 2.1.1 指令重叠 . 7 2.1.2 流水线 . 8 2.1.3 流水线的特点 . 9 2.1.4 流水线的分类 . 10 2.2 流水线的主要性能 . 11 2.2.1 吞吐率 . 12 2.2.2 加速比和效率 . 12 第三章 指令流水线设计 . 15 3.1 流水线理想假设 . 15 3.1.1 一致的运算分量 . 15 3.1.2 重复的运算 . 16 3.1.3 独立的运算 . 17 3.2 指令流水线 . 18 3.2.1 指令流水线设计 . 18 3.2.2 指令集体系结构的影响 . 19 3.2.3 流水线分级的考虑 . 20 3.3 流水线处理器设计 . 21 3.3.1 保持流水段均衡 . 21 3.3.2 统一指令类型 . 22 CPU 中指令流水线技术研究 2 3.3.3 减少流水线停顿 . 26 第四章 流水线中各种相关及中断处理 . 27 4.1 流水线中相关 . 27 4.2 资源相关 . 27 4.3 数据相关 . 28 4.3.1 指令相关 . 28 4.3.2 主存空间操作数相关 . 29 4.3.3 通用寄存器组相关 . 29 4.4 控制相关 . 31 4.4.1 猜测法 . 31 4.4.2 加快和提前形成条件码 . 32 4.4.3 采取转移延迟 . 32 4.4.4 加快短循环程序的处理 . 32 第五章 中断处理与流水线调度 . 35 5.1 中断处理 . 35 5.2 流水线调度 . 35 第六章 总结与展望 . 39 致谢 . 41 参考文献 . 42 第一章 绪论 3 第一章 绪论 流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复设置硬件。 20 世界 60 年代早期的一些高端机器中第一次采用了流水线技术。第一个采用指令流水线的机器是 IBM7030(又称作 Stretch 计算机)。后来的 CDC 6600同时采用了流水线和多功能部件。 到了 20 世纪 80 年代,流水线技术成为 RISC 处理器设计方 法中最基本的技术之一。 RISC 设计方法的大部分技术都直接或者间接以提高流水线性能为目标。从此以后,流水线技术也被有效地应用到 CISC 处理器的设计中。 Intel i486 是 IA32体系结构中的第一个流水线实现。 Digital 的 VAX 和 Motorola 的 M68K 的流水线版本在商业上也取得了成功。 流水线技术是当前指令集处理器设计中广泛采用的技术。在这里我们将重点放在(标量)流水线处理器的设计。流水线处理器设计中的许多方法和技术,例如用于检测和化解相关的流水线互锁机制,都是标量处理器设计的基本方法。 当前的趋势是 朝着超深度流水线的方向发展。流水线的深度已经从不到 10发展到超过 20.深度流水是获得高速始终频率的必要条件,这是提高处理器性能的一个非常有效的方法。有迹象表明。这种趋势还将持续下去。 1.1 现代 RISC 中的流水线技术 1.1.1 超流水线技术 超流水线( Super Pipeline)技术是 RISC 采用的一种并行处理技术。他通过细化流水,增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质就是以时间换取空间。超流水机器的特征就是在所有的功能单元都才用流水,并有更高的时钟频率和更深的流水深度。 CPU 中指令流水线技术研究 4 1.1.2 超标量技术 超标量( Super Scalar)技术是 RISC 采用的有一种处理技术。它通过内装多条流水线来同时执行多个处理。其实质就是以空间换取时间。流水线实现中的问题及解决 : 流水线实现的一个问题是使流水线连续不断地流动,即不出现流断,才能获得高效率。断流的原因很多,除了编译生成的目标程序不能发挥流水结构的作用,或者存储系统不能及时供应连续流动所需的指令和操作数外,主要还与出现了相关、转移以及中断指令有关。解决局部性相关有两种方法:退后法和通路法;解决全局性相关有三种方法:猜测转移分支、加快和提前形成条件 码、加快短循环程序处理。 1.1.3 流水技术在 Pentium 系列微处理器中的实现 流水线技术早在 Intel 的 X86 芯片中均得到了实现。而 Pentium 系列 CPU 产品更是一个高级的超标量处理器。它是建筑在两个通用的整型流水线和一个可流水作业的浮点单元上的,这使处理器能够同时执行两条整型指令。一个对软件透明的动态分支预测机制能够使分支的流水线阻塞达到最小化。奔腾处理器可以在一个时钟周期内完成两条指令,一个流水线完成一条指令。第一个逻辑管道称之为“ U”管道,第二个称之为“ V”管道。在任何一条给定的指令译码期间,它安排 的后面两条指令将被检查。并且,如果有可能,第一条指令被安排到“ U”管道执行,第二条指令被安排到“ V”管道执行。如果不能,则第一条指令被安排到“ U”管道执行,“ V”管道中不安排指令运行。指令在两个管道中运行与它们顺序执行所产生的效果是完全一样的。当发生管道阻塞时,后继的指令无法通过被阻塞的指令所在的任一管道中。 具有 MMX?技术的奔腾处理器为整型流水线增加了一个额外的处理阶段。指令从代码的高速缓冲区中预取出来,被送入到“预取” (PF)阶段,并且在“提取”(F)阶段中进行指令的语法分析。 另外, 全部的前缀译码 都在 F阶段中进行。 指令在先进先出 (FIFO)的指令缓冲区中将语法分析与指令译码分开, 这个缓冲区位于 F 阶段与译码 1(D1)阶段之间。 FIFO 缓冲区的空间能够将被处理的指令上升到四条指令。 FIFO 缓冲区是透明的,当它为空时,不增加额外的迟延。在每个时钟第一章 绪论 5 周期内,可将两条指令压到指令的 FIFO 缓冲区中 (根据有效的代码字节,以及其它因素,如前缀 )。然后,再将成对的指令从 FIFO 缓冲区中弹出来,送到 D1 阶段中。由于指令的平均执行效率为每个时钟周期内不超过两条指令,所以 FIFO 通常是满的。只要 FIFO 是满的,就可以防 止在指令提取和进行语法分析时产生的阻塞。如果发生了这样的阻塞, FIFO 也可以使阻塞不在管道的执行阶段上发生。但如果FIFO 空,由于流水线中无指令运行,则可能会导致一个执行阻塞。较长的指令或前缀可能会在 FIFO 入口处产生阻塞。 超流水线 (Super Pipeline)在本质上仍为一种流水线技术,但它做了以下的改进: 1. 流水线条数从奔腾的两条增至三条,还有十一个独立的执行单元并行支持。 2. 在执行中采取了无序执行 (out of order processing)技术。即当某条指令需要一些数据而未能立即执行完毕时,它将 被剔出流水线并等待数据, CPU 则马上执行下条指令,就好比在装配线上发现某件产品不太合格,而被淘汰,等待返工一个道理。这样,可以防止一条指令不能执行而影响了整个流水线的效率。 3. 在 P6 中将指令划分成了更细的阶段,从而使逻辑设计、工序等等更为简化,提高了速度。在 486 芯片中,一条指令一般被划分为五个标准的部分,奔腾亦是如此。而在 P6 中,由于采用了近似于 RISC 的技术,一条指令被划分成了创纪录的十四个阶段。这极大地提高了流水线的速度。 P6 系列处理器使用动态执行结构。该结构通过硬件寄存器重命名和分支预测的方法,将乱 序执行和推测执行合成在一起。这些处理器有一个有序进入的流水线,它将 Intel 386 的宏指令支解成简单的微操作 (或 UOP)和一个可以处理这些微操作的乱序的超标量处理器内核。这个乱序的处理器内核包含了几条流水线,连接了整型、跳转、浮点和内存执行单元。几种不同的执行单元可以集成在同一条流水线上。例如:一个整型地址逻辑单元和浮点执行单元 (加法器、乘法器和除法器 )同享一个流水线。数据高速缓冲区由一个专用的读取端口和其它的存储端口交错而成。大多数简单操作 (整型 ALU,浮点加法,甚至浮点乘法 )可以按每时钟周期完成一至两 个操作的吞吐量进行流水作业。浮点除法不可以进入流水线,长迟延操作可以和短迟延操作并行处理。 P6 系列的流水线由三部分构成:有序组织的前CPU 中指令流水线技术研究 6 端 (In-Order Issue Front-end)单元,乱序内核( Out-of-order Core)单元和有序的退出( In-Order Retirement)单元。 Intel 新近推出的奔腾处理器使用了 P6 中的动态执行技术,包括多分枝预测、数据流分析、投机执行。同时奔腾处理器具有一个流水线式的浮点运算单元 (FPU),可支持 32位、 64位和 80位的浮点运算。最近 Intel 又发表奔腾 4,奔腾 4 基本的指令流水线长度达到了 20 级,是 P6 架构的 2 倍,也超过了 AMD 的Athlon。更长的流水线可以使处理器运行在更高的主频下,从而提高处理器的性能,但有可能带来一些指令执行上的延迟。 第二章 流水线基础 7 第二章 流水线基础 加快机器语言的解释过程提高机器的运算速度是设计计算机的基本任务之一。这可以通过两个途径来实现。一个途径是提高器件的速度,采用更好的算法,增加指令内各微操作的并行程度,减少解释过程所需要的拍数等多项措施来加快机器指令的解释。另一个途径则是采用重叠和流水方法, 同时解释两条、多条以至整段程序,从而加快整个机器语言程序的解释。流水线技术是目前广泛应用于微处理芯片中的一项关键技术 ,Intel 公司更是这项技术在微处理器中应用的首先实现者。 2.1 流水线概念 指令的三种控制方法:顺序方法、重叠方式、流水方式。顺序方法是指各条机器指令之间顺序串行地执行,而且每条机器指令内部的各个微指令也是串行执行。这种方法虽然控制简单但速度上不去,机器各部件的利用率低。重叠方式是指在解释第 K 条指令的操作完成之前就开始解释第 K+1 条指令。通常都是采用一次重叠,即在任何时候,指令分析部件和指令 执行部件都只有相邻两条指令在重叠解释。这种方式使指令的解释速度有所提高,控制也不太复杂但会出现冲突、转移、相关等问题,这些都需要在设计时想办法解决。流水方式就是把并行性或并发性镶嵌到计算机系统里的一中形式。它是把重叠的顺序处理过程分解为若干过程,每个过程能在专用的独立模块上有效地并发工作的技术。在概念上“流水”可以看成“重叠”的延伸。不同的是“一次重叠”只是把一条指令的解释分解成两个子过程,而“流水”则是分解为更多的子过程。 2.1.1 指令重叠 CPU 中指令流水线技术研究 8 一条指令的执行过程可分为取指令、分型与执行三个过程(如图 2.1)。 取指令,取出该指令送到指令寄存器。指令的分析指的是对指令的操作码进行译码,按寻址方式合地址字段形成操作数真地址,并用此真地址去取操作数,还要为准备取下一条指令提前形成下一条指令的地址等。指令的执行则是指对操作数进行运算、处理,或存储运算结果。指令的重叠解释方式指的是,在解释第 k 条指令的操作完成之前,就开始解释第 k+1 条指令。假设这三个过程分别在 3 个不同的硬件(指令控制器、分析器和执行部件)上进行,则当第 k 条指令处于分析阶段的时候,控制器就处于空闲状态,这个时候可以对第 k+1 条指令进行取指令操作,当第 k 条指令 处于执行状态时,分析器就处于空闲状态,这时可以进行对第 k+1条指令的分析(图 2.2)。很显然,重叠解释的方式并不能加快一条指令的实现,但是可以加快两条相邻指令以至一段程序的解释。 图 2.1 机器指令的顺序执行方式 图 2.2 指令的重叠解释方式 2.1.2 流水线 流水其实就是重叠的引申,上面谈到的重叠模型实际上就是一个简单的 3 级流水模型。如果将分析与执行阶段再细分为指令解码、取操作数、执行运算和存储结果,当第 k+1 条指令在第 k 条指令执行去操作数的时候就可以开始解码,而不必等到分析 k 完全结束。这样子 在一个指令周期内就可以同时执行 5 条指令。流水线工作方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工程中的生产流水线十分相似,因此,第二章 流水线基础 9 把他成为流水线工作方式。在处理机的各个部分几乎都可以采用流水线工作方式。指令的执行过程可以采用流水线,成为指令流水线。运算中的操作部件,如浮点加法器,浮点乘法器等可以采用流水线,成为操作部件流水线。访问主存储器部件也可以采用流水线。甚至在处理机之间,机器之间也可以采用流水线。 图 2.3 指令流水线 2.1.3 流水线的特点 从上面 的分析中可以看到,在处理机中采用流水线方式与采用传统的串行方式相比,具有一下特点: 1. 在流水线中处理的必须是连续任务,只有连续不断的提供任务才能充分发挥流水线的效率。例如。要是浮点加法器充分发挥作用,需要连续提供浮点加法运算。然而,由于程序本身的原因和程序设计过程中人为造成的一些原因,入数据相关等,不可能为浮点加法器连续的提供同一种操作。因此,在采用流水线工作方式的处理器中,特别是当流水线的级数较多时,要在软件和硬件等多方面为流水线提供连续的任务,以提高流水线的效率。 2. 把一个任务分解成几个有联系的子任务,每个 任务由一个专门的功能部件来实现。因此,流水线实际上是把一个大的功能部件分解为多个独立的功能部件,并依靠多个功能部件并行工作来缩短程序的执行时间。在流水线中,一个子任务通常称为一个子过程,或者一个功能段。 3. 在流水线每一个功能部件后面都要有一个缓冲寄存器,或称为锁存器等,用于保存本段执行的结果。这是因为流水线中每一段的延迟一般都不可能相等,因此,在段与段之间传递子任务时,必须要通CPU 中指令流水线技术研究 10 过缓冲寄存器。当某一个功能段的时间变化范围比较大的时候,要设置多个缓冲寄存器。 4. 流水线中各个段要尽量匀称,即时间要求尽量相等,否则将容 易引起“阻塞”、“断流”等问题。执行时间最长的段将成为整个流水线的“瓶颈”,这时,流水线中各段将受到限制而不能充分发挥作用。只有当整个流水线完全充满时,整个流水线的效率才能得到充分的发挥。 为了设计出高效率的流水线,要充分注意上述问题。 2.1.4 流水线的分类 从不同的角度,按照不同的观点,可以把流水线分成多种不同的类型。平时所说的某种流水线,往往是按照某种观点,或者从某一个特定的角度对流水线进行分类的结果。因此,从名称上只能反应出这种流水线在某一个方面的特点或者功能。 按照流水线的各功能段之间是否有反馈信号, 可以把流水线分为线性流水线合非线性流水线。 线性流水线是将流水线各个功能段逐个串联起来,输入数据从流水线的一段进入,从另外一段流出。数据在流水线中经过时,没一个功能段都流过一次,且仅仅流过一次。 一条线性流水线通常只完成固定的一种功能,在现代计算机系统中,线性流水线已经被广泛的应用于指令执行过程、各种算术运算操作、存储器访问操作等。 前馈回路输入 S 1 S 2 S 3 输出反馈回路一种简单的非线性流水线图 2.4 非线性流水线 非线性流水线经常用于递归调用,或者构成多功能流水线。 第二章 流水线基础 11 按照流水线使用的不同级别,可以把流水线分为功能部件级、处理器级以及处理机之间等多种类型。 处理机级流水线即指令流水线,他把一条指令执行过程分解为多个子过程,每一个子过程在一个独立的功能部件中完成。 功能部件级流水线也称为运算操作流水线,如浮点加法器流水线、浮点乘法器流水线等。 处理机间流水线又称为宏流水线,一般是两台以上处理机通过存储器串行连接起来,每一个处理机对一个数据流的不同部分分别进行处理。 输入 先行指令 缓冲栈 先行指令 分析器 先行读数栈 先行操作栈 指令 执行部件 后行 写数栈 输出 功能 : 取指令 指令译码 , 形成操作数地址 取操作数 形成 RR* 指令 执行算术 逻辑运算 向存储器 写结果 先行控制方式中的指令流水线 图 2.6 指令流水线 流水线又可分为单功能流水线和多功能流水线。顾名思义,单功能流水线只能完成固定的单一功能,多流水线通过各个段间进行不同的连接,在不同的时间内或者统一时间内通过不同的 连接方式完成不同的功能。 在多功能流水线中,根据同一时间内是否可以连接成多种方式,同时执行多种任务,可以把多功能流水线分为静态流水线合动态流水线。所谓静态流水线指的是在同一时间段内,多功能流水线各段只能按照一定固定的方式连接,实现一种固定的功能。只有当按照这种连接方式工作的所有任务都流出流水线之后,才能重新进行连接,完成其他功能。动态流水线则在同一时间段内,可以按照不同的连接方式,完成多种不同的功能。这个时候要求流水线中个功能部件之间不能发生冲突。 除了以上几种分类方法外,还可以根据其他标准,从不同角度对流 水线进行分类。 2.2 流水线的主要性能 CPU 中指令流水线技术研究 12 衡量流水线主要性能的指标主要有吞吐率,加速比和效率。 2.2.1 吞吐率 吞吐率是指在单位时间内流水线所完成的任务数量或者输出的结果数量。即: )1.2(式KTnTP 式 (2.1)中, n 为任务数, kT 是处理完成 n个任务做用的时间。本式为计算吞吐率最基本的公式。有的时候我们还需要求一条流水线的最大吞吐率: )2.2(,.,.,m a x 1 21m a x 式ktttTP 式 (2.2)中 kt 为第 k个子过程所花费的时间。最大吞吐率受限于流水线中最慢子过程即瓶颈子过程所需要的时间。为了提高流水线的最大吞吐率,首先要找出瓶颈,然后设法消除此瓶颈。消除瓶颈有两种办法,一是将瓶颈子过程再细分,另一种办法是通过重复设置多套瓶颈段并联,让他们交叉进行。后一种方法需要解决好在各并行子过程之间的任务分配合同步控制,比起瓶颈子过程再细分控制要复杂、设备量要多一些。 2.2.2 加速比和效率 完成一批任务,不使用流水线所花的时间与使用流水线所用时间直比即为流水线的加速比。如果不使用流水线,即顺序执行所用 时间为 0T ,使用流水线的执行时间为 KT ,则流水线的加速比为: )3.2(0 式KTTS 这是计算流水线加速比的基本公式。 流水线的效率是指流水线的设备利用率。在时空图上,流水线的效率定义为 n个任务所占的时空区域与 k个功能区域所占时空区域之比。因此,流水线的效率包含有时间和空间两方面的因素。实际上, n 个任务所占的时空区域就是顺序执行第二章 流水线基础 13 n个任务所用的总的时间 0T 。而一条 k段流水线完成 n个任务总的时空区域为 kkT ,其中 kT 是流水线完成 n 个任务所用的 总时间。则一条 k段流水线的效率可表示为: )(式个流水段的总的时空区 个任务占用的时空区 4.20 kTk Tk nE 此式是计算流水线效率的一般公式。 如果流水线各段执行时间均相等,且输入的 n个任务是连续的,则一条 k段流水线的效率为: )5.2(1)1( 式 nk ntnkk tnkE从流水线的时空图上来看,上式分母部分是完成 n 个任务所用时间与 k 个功能段所围成的总面积,而分子部分则是 k 个功能段实际所占有的面积。因此,利用时空图来计算流水线的效率十分方便。 CPU 中指令流水线技术研究 14 第三章 指令流水线设计 15 第三章 指令流水线设计 我们做任何事情,都希望能够达到理想状态,但这往往是不现实的,我们研究理想状态的意义就在于给出一个衡量的标准,并且努力向这个标准靠近,这在指令流水线的设计过程中也不例外。 3.1 流水线理想假设 对于指令流水线的目的,我们是希望能最大限度的提高系统的性能。然而在实际中却往往做不到,因为只有在理想状态下, k 级流水线的设计才能将提高 k 倍的吞吐率,理想状况主要基于 3 条假设,我们称之为“流水线理想假设”,他是正确评估流水线设计的关键。设计各种方案解决实际流水线与流水线理想假设之间的矛盾,这就组 成了流水线设计的主要技术。流水线理想假设包括: 1. 一致的运算分量:要完成的整个运算量可以均匀的分成延迟一只的若干分量。 2. 重复的运算:输入数据有大量相同的、重复的运算。 3. 独立的运算:所有相同的重复运算之间没有相关性。 3.1.1 一致的运算分量 第一条流水线的理想假设说明,将要进行流水化的运算分量均匀的分成 k个延迟相同的分量。这意味着以前的设计可以均匀的分成 k个均衡的流水段。如果以前总的运算延迟,也就是非流水设计的式中周期为 T,那么 k级流水线的设计式中周期就是 T/k,也就是流水段中每一段的延迟。基于这个理想假设,时钟 频率能够提高 k倍,并且吞吐率也提高了 k倍。 在实际的流水线设计中,这个理想假设可能并不成立。将总的运算分量完全均匀的分成若干分量是不可能的。在一个具有 3级流水线的浮点加法器的例子中,CPU 中指令流水线技术研究 16 设总的延迟为 500ns,流水线分 3 段,每一段的延迟分别为 200ns,100ns,200ns.显然,总的延迟并没有均匀的分布到流水线的三段当中。由于流水线的时钟周期决定于延迟最长的那一段,因此延迟较短的段会有一些无效或者失效的时间。比如浮点加法器的第二段,它就有 100ns 的无效时间,我们可以把它称之为“内部碎片”。由于内部碎片的存 在,完成同样的运算的延迟将会增加。 还有一个内在的假设,即流水段之间引入的缓冲不会带来额外的延迟,并且流水线的时钟信号也不会引入额外的延迟。同样,这一假设在实际当中也是不能成立的。在相应的例子中,为了保证信号的时钟信号的准确建立,设置了暂存器,因此总的时钟周期又延长了,从而导致了实际性能不可能提高 3 倍。 第一条流水线理想假设主要包含了以下两种观点:在将以前的运算分量分成若干分量是时,没有引入无效时间;段间缓冲的引入及时钟没有带来额外的延迟。在芯片级的设计中,可以采用一些锁存器,比如 Earle 锁存器可以使流水 线时钟产生的延迟尽可能地小。因此如何将总的运算量均匀的分到各流水段中构成了流水线设计的第一个挑战。我们的目标是,尽可能使各个流水段保持均衡,以减少内部碎片。由于各个流水段不能完全均衡内部碎片是不满足第一条流水线理想假设的主要原因,这将成为一种开销,并导致 k级流水线设计的吞吐率提高达不到理想的 k倍。 3.1.2 重复的运算 第二条流水线理想假设说明,流水线不断地重复执行相同的运算。这意味着在多组输入数据中,有些运算是相同的并且这些运算要反复执行。每次执行时,流水线提供的分量执行顺序都是一样的。对于浮点加法器的例子, 将包含大量的浮点数对要进行相加,每一对操作数都要通过相同的 3级流水线。这以一设说明,每一次的重复运算都会 使用流水线中的所有段。对于我们的例子这显然是成立的。 浮点加法器满足这条假设,是因为该流水线只完成了一个功能,即浮点加法运算。如果你要设计的流水线要完成多个功能,这一假设就不满足了。例如,设计一条既可以计算加法又可以计算乘法的算术流水线。在多功能流水线中,单独一项功能可能并不需要所有的流水段,而可能由流水段的不同子集来完成不同功第三章 指令流水线设计 17 能。由于输入数据以同步方式通过流水线,有些数据可能不需要某些流水段,当他们通 过这些段的时候,将什么也不执行。这种没有使用或者空闲的流水段带来了另一种形式的流水线失效,可以称之为“外部碎片”。与内部碎片相似,外部碎片也是一种流水线开销,应该尽量减小。 第二条流水线理想假设认为所有的流水段总是被充分利用。除了说明不存在外部碎片之外,这条假设还说明要处理的数据是大量的。第一个数据达到流水线的最后一个段需要 k个周期,这 k 个周期称为流水线的“填充时间”。最后一个数据进入流水线的第一个段后,还需要 k 个周期排空流水线。在填充合排空过程中,不是所有的流水段都处于工作状态。如果有大量的输入数据要进行 处理,可以使流水线的填充和排空时间只占总时间的很小一部分。因此,多有流水段都可以认为总是处于工作状态的。 3.1.3 独立的运算 第三条流水线假设说明,流水线要处理的运算是彼此独立的。这意味着,所有同时间驻留在流水线中的运算是不相关的,也就是说,任何两个运算之间不存在数据或者是控制相关。这一假设保证流水线处于“流动”的工作方式,即后面的运算不会因为存在相关性而等待前面运算的完成。对于浮点加法器的例子中,这一假设是成立的。如果有多对操作数要进行相加,一对操作数的相加不会以来另一个加法的结果。这些操作数可以按照“流动 ”的方式进行处理。 这一条假设对于一些流水线可能不成立。后面的运算可能需要前面的结果,而这两条运算可能同时驻留流水线中。如果后面的运算已经进入到需要结果的流水段,而这时候前面的运算还没有到达产生结果的流水段,哪么后面的运算必须在那一段等待。这种等待称为“流水线停顿”。如果某一运算停顿在流水线的某一段,所有后续的运算可能都要被迫停顿。流水线停顿不可避免地导致某些段处于空闲状态,这可以看作是一种动态的外部碎片,因此会导致流水线吞吐率降低。如果相关是不可避免的,那么再设计流水线的时候,就要尽量减少流水线的停顿次数 。 CPU 中指令流水线技术研究 18 3.2 指令流水线 前面三条流水线是流水线的理想假设。在大多数情况下,算术流水线的实际情况与理想假设相差不是太大。然而,对于指令流水线,实际情况与理想假设之间的差距就要大一些。而连接这一差距的桥梁正式指令流水线设计的趣味性合挑战性所在。在设计流水线处理器时,这三条假设成为三个主要的挑战。这三大挑战同时也提供了一条探索流水线处理器设计技术的思路。 3.2.1 指令流水线设计 在设计指令流水线时,三条流水线假设成为设计的目标。一条指令的处理过程就是要流水化的运算,它必须被划分成多个尽量一只的子运算,以获得尽量均衡的 流水线。处理一条指令的时间延迟成为“指令周期”,每一段的时间延迟决定了“机器周期”。指令周期是一个逻辑概念,它是指指令的执行周期。一个程序包含多条指令,程序的执行相当于相应运算的反复执行。机器周期是一个物理的概念,它包含数字逻辑电路中存储单元的时钟等,同时它也是流水线的时钟周期。 指令流水线设计的主要任务可以看作是将逻辑指令周期映射到物理机器周期。换句话说,就是将指令周期所对应的运算分成一个子运算的序列,由流水线的各段运行。要有效的进行这种分割或者映射,必须考虑三条流水线的理想假设。 一致的运算分量 我们将指令周期分解成多个机器周期的过程称为“量化流水段”。在进行量化流水段时,要尽量减少内部碎片。如果在量化流水段时考虑不充分,就会引入内部碎片,从而影响流水线的利用率。第一条流水线理想假设带来了指令流水线设计的第一个挑战,称之为流水线的均衡。流水线越均衡,内部碎片越少。 重复的运算 与单一功能的算术流水线不一样的是,指令流水线天生就是多功能流水线,即它必须能处理多种不同的指令类型。不同的指令类型需要子运算序列稍微不同,所对应的硬件资源也有所不同。指令流水线设计的第二个挑战就是,连接或者整合不同指令类 型对不同资源的需求。流水线应能够支持所有的第三章 指令流水线设计 19 指令类型;同时应该尽量减少每种指令类型的无效或者空闲的机器周期,也就是减少外部碎片。 独立的运算 算术流水线处理的是数组数据,他们一般都不相关。与算术流水线不同的是,指令流水线所处理的指令彼此不是完全独立的。因此,指令流水线必须要有一套内部机制,用来检测指令间发生的相关并保证指令相关不会导致错误。指令相关可能会导致流水线停顿,从而引起失效。前面提到过,流水线停顿是是一种动态的外部碎片,它会降低流水线的吞吐率。因此,指令流水线设计的第三个挑战就是尽量减少流水线停 顿。 3.2.2 指令集体系结构的影响 在正式讨论指令流水线设计的三个主要挑战之前,简单的考虑一下指令集体系结构对于指令流水线的影响,将很有启发意义。下面将一次考虑三条流水线理想假设。 一致的运算分量 使流水段保持均衡的第一个挑战说明,必须保证分量的延迟是一致的。考察一条指令处理过程中的所有运算分量,其中一定有一个分量的延迟最长,并且这个分量不容易再分解成细的运算分量。在流水线处理器设计中,这样的关键分量是对存储器的访问。由于处理器和存储器的速度差异,存储器访问将成为关键的运算分量。为了近况使指令流水线效率更高 ,应该对寻址模式进行优化,并且应该采用能够跟上处理器速度的快速 cache。 重复的运算 第一个挑战是将不同的指令类型对资源的要求统一起来,这是RISC 体系结构的主要目的之一。降低指令类型的复杂性和多样性可以降低整合不同指令类型任务的难度。复杂的寻址模式不仅需要额外的访存,而且增加了资源需求的多样性。将所有这些资源需求整合到一条指令流水线当中是意见相当困难的事情,并且所得到的流水线对于很多指令其效率很低。这些指令将会产生外部碎片,从而降低了流水线的利用率。对于一个 RISC 体系结构的流水线而言,资源整合要简单 一些并且得到的流水线效率更高,外部碎片更少。 独立的运算 第三个挑战是尽量减少由于指令的相关而引起的流水线停顿,这可能是流水线处理器设计中最吸引人的地方。要正确地完成操作,指令流水线必须检测并化解指令相关。复杂寻址模式,尤其是与存储器访问有关的模式,会CPU 中指令流水线技术研究 20 因为存储器地址标识符的问题而导致相关检测非常困难。一般来说,寄存器相关比较容易检测,因为寄存器在指令中是明确指出来的。简单而且堆成的指令合适便于进行译码和相关检测。相关的检测和化解可以由编译器静态完成,也可以在运行时由硬件动态完成。在编译和运行时分别进行怎样 的处理决定于动态静态界面( DSI)的定义。 DSI 的定义将导致许多有趣而微妙的权衡。在进行权衡时,必须将编译器、(微)体系结构和微处理器设计紧密结合起来。 3.2.3 流水线分级的考虑 理想流水化设计所获得的性能与流水线的深度(即流水线的段数)是成正比的,因此似乎最好的设计就是尽量增加流水线的段数。但是,由于时钟的限制,流水线划分的段数总是有一个物理局限的。流水线的每一个段可以看作一个组合逻辑 F 加上一个锁存器 L,信号通过 F之后在 L 出锁存。定义 MT 为通过 F的最大传输延迟,即通过最长信号路径的延迟; mT 为通过 F的最小传输延 迟,即通过最短信号路径的延迟; LT 为正确建立时钟信号所需要的额外时间,包括必要的建立和保持时间,以保证正确的锁存,同时还包括可能的时钟扭曲,即达到不同锁存器的时钟沿的最大时间差。假设第一组信号 1X 在 1T 时刻作用在某一级的输入端,那么 F 的输出最迟将在 mTT 1 时刻有效。当第二组信号 2X 在 2T 时刻作用的 F的输入端时,最快只要 mTT 2 时刻就能传到锁存器 L。要保证第二组信号不覆盖第一组信号,必须满足: )1.3(12 式LMm TTTTT 该公式说明,信号 2X 可能到达的最早时刻不能早于 信号 1X 正确锁存的时刻。该不等式可以重写为: )2.3(12 式LmM TTTTT 其中 12 TT 就是最短时钟周期 T。因此,时钟周期 T 必须比 LmM TTT 大,而最大时钟频率不能超过 1/T。 第三章 指令流水线设计 21 由此我们可以看到,时钟限制最终决定了流水线的深度,除了这一限制外,如果考虑价格,即流水线的费用开销,最佳设计通常也不会采用最大的流水线深度。在流水线系统的硬件设计中,必须考虑价格和性能的权衡。一般来说,流水线的价格相对于流水线的深度成线性增长。 流水线深度一直是影响处理器效率的重要因素,流水线深度的增加可以让处理器时钟频率进一 步提高,但随着流水线深度的增长带来的处理器的单周期执行效率降低、发热量上升,同时容易产生分支预测等问题反面影响也会加剧,因此流水线长度的尺度把握一直是处理器设计中的一个重要核心问题。在设计流水线,要综合各方面的因素,根据最佳性价比的要求来选择流水线的最佳段数。 3.3 流水线处理器设计 流水线处理器设计中的主要问题就是缩小实际情况与理想假设之间的差异。所有关于流水线处理器的设计技术,都可以看作是为解决这三个挑战而进行的努力。 3.3.1 保持流水段均衡 要流水化的运算就是每个指令周期所要进行的工作。一个典型的指令周 期可以根据功能划分成以下 5个基本分量: 1. 取指( IF,Instruction fetch) 2. 译码( ID,Instruction decode) 3. 取操作数( OF,Operand(ds) fetch) 4. 执行( EX, Instruction execution) 5. 存储( OS, Operand store) 典型的指令周期从指令的取指开始,然后进行译码,以决定这条指令完成什么操作。一条指令通常带有一个或者多个操作数,这些操作数存放在寄存器或者存储器中,这取决于所使用的寻址方式。一旦所需要的错作数已准备好,就可以CPU 中指令流水线技术研究 22 执行这条指 令所规定的操作。将执行所产生的结果存储起来之后,指令周期就算结束了。 分割指令周期的一种很自然的方法就是按照 5 个基本运算分量来划分,即将每一个运算分量对应到一个流水段,从而得到一个 5 级指令流水线,我们称这条流水线为基本指令流水线,简称 GNR 流水线。在 GNR 流水线中,逻辑指令周期将映射到 5个物理机器周期中。机器周期与指令周期之比为 5,这个值反应了流水化的程度以及流水段的粒度。 量化流水段的目的是将指令周期分割到均衡的流水段中,以尽量减少内部碎片的数目。量化流

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论