流水线设计中的关键技术研究.docx_第1页
流水线设计中的关键技术研究.docx_第2页
流水线设计中的关键技术研究.docx_第3页
流水线设计中的关键技术研究.docx_第4页
流水线设计中的关键技术研究.docx_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

流水线设计中的关键技术研究1摘要1第1章 流水线简介21.1 流水线产生背景21.2 流水线概念21.2.1 指令重叠31.2.1 流水线的特点41.2.3 时空图41.3 流水线的具体分类51.4 流水线的相关问题及解决办法61.4.1 资源相关61.4.2 数据相关71.4.3 控制相关91.5 流水线的主要性能91.5.1 吞吐率91.5.2 实际吞吐率和加速比101.5.3 效率111.6 影响因素12第2章 现代RISC中的流水线技术132.1 超流水线技术132.2 超标量技术132.3 超长指令字142.4 向量机152.5 SIMD技术152.6流水技术在Pentium系列微处理器中的实现15第3章 中断处理与流水线调度173.1 中断处理173.2 流水线调度17第4章 指令流水线设计204.1流水线理想假设204.1.1一致的运算分量214.1.2 重复的运算214.1.3 独立的运算224.2 指令流水线224.2.1 指令流水线设计224.2.2 指令集体系结构的影响234.2.3 流水线分级的考虑244.3 流水线处理器设计254.3.1 保持流水段均衡254.3.2 统一指令类型254.3.3 减少流水线停顿28第5章 总结与展望29参考文献30流水线设计中的关键技术研究摘要本文详细阐述了流水线技术的产生背景、概念、特点、具体分类、主要性能以及相关问题和解决办法。其中针对流水线的时空图、吞吐率、加速比和效率结合图和数学公式进行了深刻而详细的说明。同时对现代RISC中的流水线技术进行了多方面介绍。然后就流水线的中断与流水线调度进行了研究,其中关于调度问题主要讲了非流水线技术的调度,结合预约表来详细说明非流水线是如何调度的。最后主要介绍了指令流水线设计,包括流水线理想设计、指令流水线、流水线处理器设计等。流水线是指在程序执行时多条指令重叠进行操作的一种技术,指令流水执行是将指令执行分成几个子过程,每个子过程对应一个工位,称为流水级或流水节拍,这个工位在计算机里就是可以重叠工作的功能部件,称为流水部件。这些不同的功能部件同时处理不同指令的 同子过程。流水级一个连着一个形成一个流水线 ,一条指令流过所有的流水级,就完成了他的任务。他通过提高各流水部件的利用率提高指令的平均执行速度,在CPU流水线中,有一些称为冲突的情形, 他使得指令流中下一条指令无法在设计的时钟周期内执行,这些冲突将会降低流水线可能获得的理想性关键字:流水线技术;RISC;中断处理;流水线调度;指令流水线设计;第1章 流水线简介1.1 流水线产生背景借鉴了工业流水线制造的思想,现代CPU也采用了流水线设计。在工业制造中采用流水线可以提高单位时间的生产量;同样在CPU中采用流水线设计也有助于提高CPU的频率。先以汽车装配为例来解释流水线的工作方式。假设装配一辆汽车需要4个步骤:1.冲压:制作车身外壳和底盘等部件,2.焊接:将冲压成形后的各部件焊接成车身,3.涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干,4.总装:将各部件(包括发动机和向外采购的零部件)组装成车;同时对应地需要冲压、焊接、涂装和总装四个工人。采用流水线的制造方式,同一时刻四辆汽车在装配。如果不采用流水线,那么第一辆汽车依次经过上述四个步骤装配完成之后,下一辆汽车才开始进行装配,最早期的工业制造就是采用的这种原始的方式。未采用流水线的原始制造方式,同一时刻只有一辆汽车在装配。不久之后就发现,某个时段中一辆汽车在进行装配时,其它三个工人处于闲置状态,显然这是对资源的极大浪费!于是开始思考能有效利用资源的方法:在第一辆汽车经过冲压进入焊接工序的时候,立刻开始进行第二辆汽车的冲压,而不是等到第一辆汽车经过全部四个工序后才开始。之后的每一辆汽车都是在前一辆冲压完毕后立刻进入冲压工序,这样在后续生产中就能够保证四个工人一直处于运行状态,不会造成人员的闲置。这样的生产方式就好似流水川流不息,因此被称为流水线。CPU的工作也可以大致分为指令的获取、解码、运算和结果的写入四个步骤,采用流水线设计之后,指令(好比待装配的汽车)就可以连续不断地进行处理。在同一个较长的时间段内,显然拥有流水线设计的CPU能够处理更多的指令。1.2 流水线概念计算机中的流水线是把一个重复的过程分解为若干个子过程,每个子过程与其他子过程并行进行。由于这种工作方式与工厂中的生产流水线十分相似,因此称为流水线技术。流水线技术是一种非常经济、对提高计算机的运算速度非常有效的技术。采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,成为计算机中普遍使用的一种并行处理技术。计算机各个部分几乎都可以采用流水线技术,运算器中的操作部件,如浮点加法器、浮点乘法器等可以采用流水线,称为操作部件流水线。多个计算机之间,通过存储器连接,也可以采用流水线,称为宏流水线。 如果指令的执行过程可以采用流水线,那么称为指令流水线1。 图1.1 浮点加法流水线的时空图如图1.1只用1-8八个时钟周期就完成了 1-5 五条指令的运行。流水线技术的指挥控制方法有三种:序列的方法,重叠,运行模式。顺序法是指机器指令序列之间的串行执行的机器指令,和每个微指令的执行顺序。虽然这种方法的优点是控制简单但速度上不去,利用率低的机器零件。重叠模式是指解释第钾指令操作完成之前开始的钾解释。通常使用的重叠,即在任何时间,命令解析单元和指令执行部只有相邻指令重叠的解释。这意味着指令解释速度增加,控制不是很复杂,但出现冲突,转移,相关的问题,这些都是需要在设计解决。水是一个并行或并行嵌入计算机系统中的一种形式。它是重叠的连续过程分解为一个进程的个数,每个进程的特殊模块独立有效的并行工程技术。“流”可以被视为“重叠”的延伸。不同的是一个“重叠”只是一个指令的解释是分解成2个过程,与“水”分解为多个子过程。1.2.1 指令重叠一个指令执行过程可以分为取指令,类型和执行一三个过程(图1.2)。取指令,取出指令,指令寄存器。教学分析指指令的操作码进行译码,解决和地址字段地址操作数的真正形成,这是地址读取操作,但准备取下一条指令是预先形成的下一条指令的地址。指令执行是指一些操作,加工业务,或存储操作结果。指令的重叠解释方法是指,在解释的指令操作完成之前,开始解释钾。假设这三个过程,分别以不同的硬件(命令控制器,分析和执行单元),当K线指令在分析阶段,该控制器在空闲状态,这个时候可以为钾到取指令操作,当K线的指令被执行时,解析器在空闲状态,并可以进行钾分析(图1.3)。显然,重叠的解释方式和不能加快指令来实现的,但可以加速相邻的指令和程序的解释2。取指令k分析k执行k取指令k+1分析k+1执行k+1图1.2 机器指令的顺序执行方式取指令k+2分析k+2执行k+2图1.3 指令的重叠解释方式1.2.1 流水线的特点流水线技术的采用的目的只有一个: 使指令的执行速度或数据的处理速度更快。在处理机采用流水线方式与采用传统的串行方式相比, 具有如下特点:1、在流水线中处理的必须是连续任务, 只有连续不断地提供任务才能充分发挥流水线的效率。2、把一个任务(一条指令或一个操作)分解为几个有联系的子任务, 每个子任务由一个专门的功能部件 来实现。因此, 流水线实际上是把一个大的功能部件分解为多个独立的功能部件, 并依靠多个功能部件并行 工作来缩短程序的执行时间。在流水线中, 一个子任务通常称为一个子过程, 或流水线中的一个功能段。3、在流水线的每一个功能部件的后面都要有一个缓冲寄存器, 用于保存本段的执行结果。4、流水线中各段的时间应尽量相等, 否则将引起“堵塞”、“断流”等。在理想情况下, 各流水线所需要的 时间是相等的, 流水线填满后每隔t时间就会有一个结果流出流水线。5、流水线的工作一般分为3个阶段, 即建立(填入)、填满和排空。简单地说, 流水线技术是一种将每条指令分解为多步, 并让各步操作重叠, 从而实现几条指令并行处理 的技术。程序中的指令仍是一条条顺序执行, 但可以预先取若干条指令, 并在当前指令尚未执行完时, 提前启动后续指令的另一些操作步骤。这样显然可加速一段程序的运行过程。1.2.3 时空图描述流水线的工作, 最常用的方法是采用“时空图”,即解释指令的时(间)-空(间)关系。 图1.4 描述流水线工作过程的时空图在时空图中, 横坐标表示时间, 也就是输入到流水线中的各个任务在流水线中所经过的时间。当流水线中的各个功能部件的执行时间都相等时, 横坐标被分割成相等长度的时间段。纵坐标表示空间, 即流水线的各个子过程。在时空图中, 流水线中一个子过程通常称为“功能段”。从图1.4的流水线时空图中可以看出各个任务在流水线的各段中流动的过程。图中的1、2表示处理机所处理的第1、2条指令, 从横坐标方向看, 流水线中的各个功能部件在逐个部件地完成自己的任务, 例如, 在完成 “1”任务之后, 紧接着完成任务“2”、任务“3”、任务“4”;从纵坐标方向看, 在同一个时间段内有多的功能段在 同时工作, 例如, 在第二个时间段期间, 规格化部件在做第1个任务的第2个子任务的同时, 也在做第2个任务的第1个子任务。用图3的时空图就可以非常清楚地看出, 非流水方式与流水线方式的效率差别很大:图1.5 顺序方式和流水方式的时空图从图1.5可以清楚地计算出, 同样完成4个任务, 顺序方式用16个时间段, 但流水方式却只用7个时间段。1.3 流水线的具体分类流水线功能繁杂,种类也非常多;如果按照处理级别来分类,流水线可以有操作部件级、指令级和处理机级;如果按照流水线可以完成的动作的数量来分类,又可以分为单功能和多功能流水线;如果按照流水线内部的功能部件的连接方式来分类,则有线性流水线和非线性流水线;按照可处理对象来分类,还可以有标量流水线和向量流水线。流水线的分类:1、 按处理级别分:(1)功能部件级:在实现较为复杂的运算时采用。(2)指令级:将一条指令执行过程分为多个阶段。(3)处理器间级:每个处理器完成其专门的任务。2、按完成的功能分类:(1)单功能流水线:只完成一种如乘法或浮点运算等,多用于数字信号处理器(DSP),各处理器可并行完成各自的功能,加快整机处理速度。(2)多功能流水线:在不同情况下可完成不同功能。3、按连接的方式分类:(1)静态流水线:同一时间内,多功能结构只能按一种功能的连接方式工作。(1)动态流水线:同一时间内,可以有多种功能的连接方式同时工作。4、按处理的数据类型分类:(1)标量流水线:一般数据。(2)向量流水线:矢量数据。X+Y=Z每一个代表一维数据。5、流水线结构上分类:(1)线性流水线:指各功能模块顺序串行连接,无反馈回路,如前面介绍的。(2)非线性流水线:带有反馈回路的流水线。1.4 流水线的相关问题及解决办法在指令流水线中经常有一些被称为相关的情况发生,它 使得指令序列中下一条指令无法按照设计的时钟周期执行,这 些相关可能会降低流水线可以获得的理想性能。流水线中的相关可以分为以下三种类型:第一种是资源相关,是指令在重叠执行的过程中,硬件资源满足不了指令重叠执行的要求, 发生硬件资源冲突而产生的相关。第二种是数据相关,是指在同时重叠执行的几条指令中,一 条指令依赖于前面指令执行结果数据,但是又得不到时发生的相关。第三种是控制相关, 它是指流水线中的分支指令或者其他需要改写 PC 的指令造成的相关。流水线相关问题是流水线执行过程中的主要障碍, 会给流水线中指令序列的顺利执行带来许多不利的影响。 如果不能较 好的处理流水线相关问题,就可能影响流水线的性能,甚至使程序运行产生错误的结果3。1.4.1 资源相关资源相关是指多条指令进入流水线后在同一个t内争用同一功能部件所发生的相关。 假设在程序次序中指令I2紧跟指令I1,如果两条指令之间存在资源相关,则用“”表示。解决存储器资源相关的方法主要有以下五种: (1)从时间上推后下一条指令的访存操作。 (2)让操作数和指令分别存放于两个独立编址且可同时访问的主存储器中。 (3)仍然维持指令和操作数混存,但采用多模块交叉主存结构。(4)在CPU内增设指令Cache。(5)在CPU内增设指令Cache和数据Cache。 1.4.2 数据相关数据相关是指由于相邻的两条或多条指令使用了相同的数据地址(包括寄存器地址和存储单元地址)而发生的关联,它用来说明指令间的有序关系。常见的数据相关包括先写后读(RAW)相关、先读后写(WAR)相关和写写(WAW)相关。(1)先写后读相关 如果指令I1到指令I2存在执行通路,即I1执行完后,一定可以执行I2,而且如果I1的输出(寄存器或赋值变量)与I2的某一个输入(用作操作数)相同,则称指令I2与指令I1存在先写后读相关,用“”表示。(2)先读后写相关 如果在程序次序中,指令I2在指令I1之后,而且如果I2的输出(寄存器或赋值变量)与I1的某一个输入(用作操作数)相同,则称指令I2与指令I1存在先读后写相关,用“”表示。(3)写写相关在流水解释指令时,若是按指令顺序逐条顺序发射顺序解释,则在解决数据相关时只需要考虑先写后读相关,而不必考虑先读后写相关和写写相关;在指令乱序解释时,除了考虑先写后读相关外,还必须考虑先读后写相关和写写相关。例如,有如图1.6所示是三条指令依次流入的流水线:图1.6 三条指令依次流入的流水线I1: ADD R1,R2,R3/(R2)+(R3)R1/I2: SUB R1,R4,R5/(R4)-(R5)R1/I3: AND R4,R1,R7/(R1)(R7)R4/I1: ADD R1,R2,R3I2: SUB R1,R4,R5I3: AND R4,R1,R7如图1.7 三条指令流水解释的时空图解决先写后读相关的方法主要有以下两种:(1)推后相关单元的读。这里所指相关单元既包括寄存器也包括存储单元。图1.8三条指令流水解释的时空图(用方法1解决数据相关)I1: ADD R1,R2,R3I2: SUB R1,R4,R5I3: AND R4,R1,R7图1.9 三条指令流水解释的时空图(用方法2解决数据相关)1.4.3 控制相关控制相关是指由转移指令引起的相关。解决控制相关的方法主要有以下两种:(1)延迟转移技术。由编译程序重排指令序列来实现,它将转移指令与其前面的与转移指令无关的一条或几条指令对换位置,让成功转移总是在紧跟的指令被执行之后发生,从而使预取的指令不作废。(2)转移预测技术。直接由硬件来实现,转移预测技术可分为静态转移预测和动态转移预测两种。 1.5 流水线的主要性能1.5.1 吞吐率吞吐率指单位时间内流水线能处理的指令条数或能输出的数据量。吞吐率越高,计算机系统的处理能力就越强。对流水线而言,吞吐率就是单位时间内能流出的任务数或能流出的结果数。最大吞吐率是指在流水线正常满负荷工作时,单位时间内机器所能处理的最多指令条数或机器能输出的最多结果数。如图1.10所是一个简单流水线的过程。图1.10 简单流水线的过程如果指令的解释细分为n个子过程,且各个子过程所需的时间分别为t1、t2、t3、tn,时钟周期应当为maxt1、t2、t3、tn,对应于流水线的最大吞吐率为: 由此可以看出,流水线的最大吞吐率取决于最慢子过程所需要的时间。我们把流水线中经过时间最长的子过程称为“瓶颈”子过程。为了提高流水线的最大吞吐率,应当设法消除此瓶颈子过程。消除瓶颈子过程的方法有两种:(1)将瓶颈子过程再细分;(2)重复设置多套瓶颈段并联。1.5.2 实际吞吐率和加速比流水线的实际吞吐率是指从启动流水线处理机开始到流水线操作结束,在单位时间内能流出的任务数或能流出的结果数。加速比是指流水线工作相对于等效的非流水线顺序串行工作方式,速度提高的比值。(1)设指令流水线由m段组成,且各段经过的时间均为t,在不发生任何相关的前提下完成n条指令的解释1)流水线的实际吞吐率为:由以上表达式可以看出,实际吞吐率总是小于最大吞吐率,并且只有当nm 时,才能使实际吞吐率趋近于最大吞吐率。2)流水线的加速比为:由以上表达式可以看出,当nm时,流水线的加速比Sp才接近于流水线的段数m,也就是说,当流水线各段时间都一样时,其最大加速比等于流水线的段数m。因此,在nm的前提下,增大流水线的段数m,可以提高流水线的加速比Sp。(2) 设指令流水线由m段组成,但各段经过的时间不相等,其中“瓶颈”段时间为,在不发生任何相关的前提下完成n条指令的解释。1)流水线的实际吞吐率为:2)流水线的加速比为:1.5.3 效率效率是指流水线的设备利用率。由于流水线需要有建立时间和排空时间,在连续完成n个任务的时间里,各段并不是满负荷工作的,因此流水线的效率一定小于1。以下分两种情况来讨论整个流水线的效率: (1)设指令流水线由m段组成,且各段经过的时间均为t,在不发生任何相关的前提下完成n条指令的解释,如图1.11所示。图1.11 m段指令流水线(2)设指令流水线由m段组成,但各段经过的时间不相等,其中“瓶颈”段时间为,在不发生任何相关的前提下完成n条指令的解释由于流水线的效率实 际上就是n个任务占用的时空区和m个段总的时空区面积之比,因此,整个流水线的效率为:比较各种公式,可以得出如下三个结论:1.6 影响因素流水线处理方式是一种时间重叠并行处理的处理技术,具体地说,就是流水线可以在同一个时间启动2个或以上的操作,借此来提高性能。为了实现这一点,流水线必须要时时保存畅通,让任务充分流水,但在实际中,会出现2种情况使流水线停顿下来或不能启动:1、多个任务在同一时间周期内争用同一个流水段。例如,假如在指令流水线中,如果数据和指令是放在同一个储存器中,并且访问接口也只有一个,那么,两条指令就会争用储存器;在一些算数流水线中,有些运算会同时访问一个运算部件。2、数据依赖。比如,A运算必须得到B运算的结果,但是,B运算还没有开始,A运算动作就必须等待,直到B运算完成,两次运算不能同时执行。解决方案:第一种情况,增加运算部件的数量来使他们不必争用同一个部件;第二种情况,用指令调度的方法重新安排指令或运算的顺序。第2章 现代RISC中的流水线技术2.1 超流水线技术超级流水线(SuperPipeline)又叫做深度流水线,它是提高cpu速度通常采取的一种技术。CPU处理指令是通过Clock来驱动的,每个clock完成一级流水线操作。每个周期所做的操作越少,需要的时间就越短,时间越短,频率就可以提得越高。超级流水线就是将cpu处理指令是得操作进一步细分,增加流水线级数来提高频率。频率高了,当流水线开足马力运行时平均每个周期完成一条指令(单发射情况下),这样cpu处理得速度就提高了。当然,这是理想情况下,一般是流水线级数越多,重叠执行的执行就越多,那么发生竞争冲突得可能性就越大,对流水线性能有一定影响现在很多cpu都是将超标量和超级流水线技术一起使用,例如pentiumIV,流水线达到20级,频率最快已经超过3GHZ。教科书上用于教学的经典MIPS只有5级流水。超级流水线(超级流水线集)技术是用在一个并行处理技术。在他稀疏的水,增加的数量和提高频率,从而在每个机器周期完成一个或2个浮点操作。其实质是以时间换取空间。超纯水机的特点是在所有的功能单位只使用水,并具有更高的时钟频率和更深的水的深度4。2.2 超标量技术超标量(Super Scalar)技术是RISC采用的有一种处理技术。它通过内装多条流水线来同时执行多个处理。其实质就是以空间换取时间。将一条指令分成若干个周期处理以达到多条指令重叠处理,从而提高cpu部件利用率的技术叫做标量流水技术。超级标量是指cpu内一般能有多条流水线,这些流水线能够并行处理。在单流水线结构中,指令虽然能够重叠执行,但仍然是顺序的,每个周期只能发射(issue)或退休(retire)一条指令。超级标量结构的cpu支持指令级并行,每个周期可以发射多条指令(2-4条居多)。可以使得cpu的IPC(InstructionPerClock),从而提高cpu处理速度。超级标量机能同时对若干条指令进行译码,将可以并行执行的指令送往不同的执行部件,在程序运行期间,由硬件(通常是状态记录部件和调度部件)来完成指令调度。超级标量机主要是借助硬件资源重复(例如有两套译码器和ALU等)来实现空间的并行操作。熟知的pentium系列(可能是p-II开始),还有SUNSPARC系列的较高级型号,以及MIPS若干型号等都采用了超级标量技术。流水线实现中的问题及解决:这是一个问题的连续流动,这似乎并没有流下,从而获得更高的效率。停止的原因很多,除了编译生成的目标程序可以发挥结构的作用,水,或存储系统可以提供一个连续流动所需的指令和操作数,基本上还出现相关,转移和中断指令相关的。解偏相关有2种方法:后退方法和路径的方法;解决全球相互关系有三种方法:猜测转移,加快推进形成条件代码,加快短循环程序处理。2.3 超长指令字超长指令字(VLIW:VeryLongInstructionWord)是由美国Yale大学教授Fisher提出的。它有点类似于超级标量,是一条指令来实现多个操作的并行执行,之所以放到一条指令是为了减少内存访问。通常一条指令多达上百位,有若干操作数,每条指令可以做不同的几种运算。那些指令可以并行执行是由编译器来选择的。通常VLIW机只有一个控制器,每个周期启动一条长指令,长指令被分为几个字段,每个字段控制相应的部件。由于编译器需要考虑数据相关性,避免冲突,并且尽可能利用并行,完成指令调度,所以硬件结构较简单。如图2.1所示是VLIW的流水执行。图2.1 超长指令字(VLIW)的流水执行VLIW机的工作很像超标量机,但有三点区别:(1)VLIW指令译码比超标量指令更容易;(2)当超标量机可用的指令级并行性比由VLIW机可开发的相应值小时,超标量机的代码密度更为紧凑;(3)超标量机可做到和很多非并行机系列的目标代码兼容。相反,VLIW机开发不同数量的并行性时总是需要不同的指令系统。VLIW处理机的优点:VLIW机对超标量机在以下几个方面做了改进:(1)VLIW指令中并行操作的同步全在编译时间完成,这可使它比超标量处理机有更高的处理机效率;(2)当短格式用户代码中有高的可用ILP时,VLIW程序的代码长度要短得多;这就意味着经编译的VLIW程序有短得多的执行时间。(3)大大简化了运行时的资源调度,因为VLIW体系结构中的指令并行性和数据移动完全是在编译时间说明的。VLIW的主要缺陷:(1)需要智能编译器的支持;(2)软件兼容性差;(3)软件的可移植性差。如下表2.2是对VLIW与超标量体系结构性能的比较表2.2 VLIW与超标量体系结构性能的比较体系结构硬件支持并行性开发时间代码密度平均CPI兼容性可移植性VLIW简单编译时差低无无超标量复杂运行时好高有有2.4 向量机平时接触的计算机都是标量机,向量机都是大型计算机,一般用于军事工业,气象预报,以及其他大型科学计算领域,这也说明了向量机都很贵。国产的银河计算机就是向量机普通的计算机所做的计算,例如加减乘除,只能对一组数据进行操作,被称为标量运算。向量运算一般是若干同类型标量运算的循环。向量运算通常是对多组数据成批进行同样运算,所得结果也是一组数据。很多做科学计算的大(巨)型机都是向量机。2.5 SIMD技术单指令多数据(SingleInstructionMultipleData)简称SIMD。SIMD结构的CPU有多个执行部件,但都在同一个指令部件的控制下。SIMD在性能优势呢:以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使得SIMD特别适合于多媒体应用等数据密集型运算。AMD公司的3DNOW!技术其实质就是SIMD,这使K62处理器在音频解码、视频回放、3D游戏等应用中显示出优异性能。2.6流水技术在Pentium系列微处理器中的实现流水线技术早在英特尔凌动芯片已经实现。奔腾系列处理器产品是一个高级的超标量处理器。它是建筑在一般整数流水线和一个浮点单元在线,这使处理器执行整数指令。一对透明的软件动态分支预测机制可以使分支流水线堵塞最小化。奔腾处理器可以在一个时钟周期内完成2指示,流水线完成命令。第一个逻辑管叫“你”的流水线,一次电话“五”流水线。在任何一个给定的指令解码时,它是安排后面的指令将被检查。和,如果可能的话,第一个指令被分配到“你”流水线执行指令,其次是分配到“胜利”的流水线执行。如果不是,那么第一个指令设置为“你”“五”流水线流水线执行,不安排指令操作。教学中的操作和流水线的顺序执行所产生的效果是完全一样的。当流水线堵塞,随后的指令指令是阻止任何流水线。技术的奔腾处理器的整数流水线增加一个额外的处理阶段。指令代码缓冲区缓存预取,美联储的“预”(公积金)阶段,并在“提取”(女)阶段的教学语法分析。此外,所有前缀的解码阶段。在教学第一先出(先进先出)指令缓冲区中的语法分析和指令解码分开,缓冲区位于的阶段,the1stage(D 1)之间的解码。先进先出缓冲空间指令处理最多四个指示。先进先出缓冲区是透明的,当它是空的,没有额外的延迟。在每个时钟周期的指令,指令缓冲区(按有效代码字节,和其他因素,如前缀)。然后,对指令的先进先出缓冲射出去,到d1stage。由于指令的平均执行效率为每个时钟周期不超过2指令,所以通常全是先进先出。只要是先进先出,你可以防止取指令和语法分析产生阻塞。如果这阻塞,先进先出也可以使阻塞的执行管线阶段发生。但如果是先进先出空,因为没有指令流水线操作,这可能导致执行一个块。长指令或一个前缀可以在先进先出入口产生阻塞。超流水线(Super Pipeline)在本质上仍为一种流水线技术,但它做了以下的改进:1、流水线条数从奔腾的两条增至三条,还有十一个独立的执行单元并行支持。2、在实施无序执行(采取所有加工)技术。当一个指令需要一些数据并不能立即执行,它将被删除线和等数据,处理器是立即执行的指示下,就像在装配线发现产品不合格,但被淘汰,等原因。这样,可以防止无法执行命令影响整个生产线的效率。3、在p6instruction分为更细的相位,使逻辑设计,工艺等更为简化,提高了速度。在486chip,指令一般分为五个部分,奔腾也是如此。在六,由于采用了类似的精简指令集计算机技术,一个指令分为十四阶段。这大大提高了线速度。第3章 中断处理与流水线调度中断处理和非线性流水线及多功能流水线调度问题也是设计指令流水线时非常值得注意的两个大问题,在本章,我们将对这两大问题进行初步的研究。 3.1 中断处理中断导致线路断开。然而,它的概率比条件的概率要低得多,这也是一个随机事件。因此,机加工中断是如何处理现场的保护和断点恢复,而不是如何缩短线路断开时间。在执行指令在我中断,应在执行结束指令指示我,我+1已经没有开始执行的地方,但水是在同一时间机器解释多个指令,指示我,我+1可能已进入流水线和部分解释。一个流,其中的一些指令流的命令我吧。早期水机,如360/ 91,为简化中断处理,采用不精确断点”方法。无论是否命令我,线路中断,不再允许后续指令尚未进入进入,但已在流水线不断流动的所有指令执行,然后转移到中断处理程序。在这方面,断点当然不会是我,可能背后我+ 1,2 + 1断点是不确定的。只有当指令在第一段中断时,我的反应,断点是准确的。这种“不精确断点”方法不好的编程和程序的调试。后来,水机多采用“精确断点”的方法,如amdahl470/ 6。无论我在教学中,响应中断,中断处理程序领域所有相应的我,我到流水线指令的原始场均可以恢复。这种方法需要许多支持注册,保证线路的每个指令能够恢复原来的领域。如前所述,这些寄存器也”指令重试”,不需要另外设置。 3.2 流水线调度由于线性线在每个任务的执行,每个通过只有一个,所以每个镜头都是一个新的任务,这些任务的线,没有竞争相同的水段。非线性流水线是不同的。如图3.1表示的是非线性流水线的流程。因为部分是安排之间的反馈回路,一个任务在运行过程中,可反复通过同一段或在一定的时期。所以,如果每一次的线到一个新的任务,将产生几个任务竞争同一时期使用的功能冲突现象。为了不冲突,有适当的间隔数目的节拍,以进入下一个任务。什么间隔几个电影和进入下一个任务,既不能正常使用的部分的冲突,而且还可以使线有一个较高的吞吐量和效率,这是流水线调度问题需要解决。 图3.1 非线性流水线为了能对流水线的任务进行优化调度和控制,1971年 E.S.Ddavidson 提出使用一个二维的预约表。(如图3.2)图3.2 预约表示例预约表用于非线性流水线,是一张二维的表格,其横坐标表示流水线工作的时钟周期,纵坐标表示流水线的功能段,中间画“”表示该功能段在这一时钟周期处于工作状态,空白的地方表示该功能段在这个时钟周期不工作。 值得说明的是:(1)一张非线性流水线的预约表可能与多个非线性流水线连接图相对应;(2)一个非线性流水线的连接图也可能对应多张预约表。 因此,一条非线性流水线一般需要一个各功能段之间的连接图和一张预约表来共同表示。根据预定表可以很容易地得出一个任务使用所需的间隔数目的节拍。为例一节分隔的3pat,2segments分隔3beat。然后的任务是打到流水线将与the1section和2节。我们将在所有章节的桌子上一个任务流将竞争同一时期的时间间隔几个在一起,构成一个延迟表F如为3.4。也就是说,如果线不会出现在每一节的争夺冲突,相邻的任务线间距击败不能是3,4,间隔应被禁止使用击败。另一个冲突向量的概念,这是一个n-1bit向量(),我位状态表明,我拍线区间为后继任务是否发生的功能部分使用冲突。如果不发生冲突,使位是“0”;否则,该位是“1”,表示禁令。不难看出,进入后续任务拍摄所需的数量和任务的流水线已进行了几个电影。当第一个任务的第一枪进入流水线,根据禁止形式= 2 , 4,可以形成碰撞矢量丙(101010),表示这只是流入线时,碰撞初始向量。由此可以看出,从第一次task1,3,5shot任务为线,因为冲突向量对应于“0”,表示将不再有冲突。当次任务,应该有一个新的碰撞矢量。在决定第三个任务可以分开的许多射进线,不仅进入了一个行的第一次任务,功能区,这样的顺序类推。怎样判断一个向量的冲突?与线第一个任务在每个推进,原本从二任务为线在不同的时间间隔对应观看心跳。这意味着,碰撞初始向量移位,抓住每一个逻辑right1,左移到空的“0”,表示如果间隔6拍到后续任务,一个任务必须是脱节的无功能组件使用冲突。因此,随着任务的路线前进,将继续构成的动态冲突矢量。如果你选择在第一次任务的间隔1shooting进线,次任务,冲突矢量右移1became(010101)。因此为了使第三个任务为线,既不与第一个任务冲突,也不与任务冲突,新的冲突矢量应该是第一任务目前的初始向量冲突(010101)和一次任务中的碰撞初始向量(101010)由一个“,或”的结果(111111)的。因此,根据前面的一个向量的冲突和冲突后,向量。按照这样的思路,以各种可能的拍数流入新的任务,从而又可以产生新的冲突向量,一直进行到不再产生不同的冲突向量为止。由此可以画出用冲突向量表示的流水线状态转移图。本例的流水线状态转移图如图3.2所示。 图3.2 状态转移图因此,只要按流水线状态图中由初始状态出发,能构成一种间隔拍数呈周期性重复的方案来进行流水线调度,都不会发生功能段的使用冲突。然而,我们还希望能寻找一种最佳的调度方案,以便使流水线的吞吐率最高。显然,只需要分别计算出每种调度方案的平均间隔拍数,或者称之为平均启动距离,找出其中最小者,就是流水线各后续任务流入流水线所用间隔的最佳调度。本例的几种调度方案如图3.3所示。简单循环平均启动距离(1,7)4(3,7)5(5,7)6(3,5,7)5(5,3,7)5(3,5)4(5)5(7)7图3.3 调度方案以上只是结合单功能流水线讨论了有关流水线调度的基本思想和方法。在此基础上不难解决多个功能流水线的调度。对于一个多功能流水线,只需要将对应每种功能的预约表都重叠在一起,组成一张新的预约表,然后在按照此方法进行调度即可5。第4章 指令流水线设计我们做任何事情,都希望能够达到理想状态,但这往往是不现实的,我们研究理想状态的意义就在于给出一个衡量的标准,并且努力向这个标准靠近,这在指令流水线的设计过程中也不例外。4.1流水线理想假设为目的的指令流水线,我们希望能够最大限度地提高系统性能。然而在实践中,但往往不这样做,因为只有在理想的条件下,等级度流水线设计可以提高吞吐量的时间,理想的情况是主要基于三假说,我们称它为“线理想的假设”,他是正确评估流水线设计。设计各种方案解决实际线和线之间的矛盾,理想的假设,它们构成的主要工艺流水线的设计6。流水线的理想假设包括:(1)一致的运算分量:要完成的整个运算量可以均匀的分成延迟一只的若干分量。(2)重复的运算:输入数据有大量相同的、重复的运算。(3)独立的运算:所有相同的重复运算之间没有相关性。4.1.1一致的运算分量第一行的理想的假说解释,会使计算部分水均匀地分为钾延迟相同的组件。这意味着以前的设计可以分为钾平衡水段。如果以前的总计算延迟,不是设计类型的水循环,然后钾流水线设计风格的周期是钾,也就是流水在每一段的延迟。基于这一假设,时钟频率可以增加,并提高吞吐量倍。在实际的流水线设计,这种假设可能不成立。总操作组件完全均匀的分成几个部分是不可能的。在3级流水线浮点加法器的例子,设置总延迟for500ns,线分为3个部分,每个部分都200ns延迟,容错,200ns。显然,总延误是不均匀分布在整个线路的三段。因为线路时钟周期决定推迟最长延迟时间较短,所以会有一些无效或失败时。如浮点加法器的后半部分,这是100 ns的无效时间,我们可以称它为“内部碎片”。由于内部分裂,执行同样的操作延迟将增加。有一种内在的假设,即水段之间引入缓冲不会带来额外的延迟线时钟信号,也不引入额外的延迟。同样,假设在实践中是不成立的。在一些例子中,为了保证信号的时钟信号准确地成立的,注册成立,所以总时钟周期延长,从而导致实际业绩可能不到3次。第一行的理想假设主要包含以下两点:以前的操作部件分为多个部分,不引入一个无效的时间;一个缓冲和时钟不会带来额外的延迟介绍。在芯片级设计,可以使用一些锁,如锁可以使时钟产生延迟尽可能小。那么如何来操作均匀分成各种水段构成的流水线设计的第一个挑战。我们的目标是,尽可能使所有水段保持平衡,减少内部分裂。由于各水段不能完全平衡内部分裂是不满足第一行的理想假设的主要原因,这将是一个架空,并导致钾级管线设计吞吐量增长达到理想的倍。4.1.2 重复的运算第二线的理想的假说解释,线反复执行相同的操作。这意味着在一组输入数据,一些运营商是相同的,这些操作执行。每次执行时,线路提供组件执行顺序是相同的。因为浮点加法器的例子,将含有大量浮点数在一起,对每一个操作数是通过same3线。这一集,每次重复计算可以使用所有的小节线。在我们的例子,这显然是建立。浮点加法满足这个假设,因为本线只完成一个功能,例如,浮点加法运算。如果你想设计一个流水线完成多种功能,这种假设是不满意。例如,设计一个可以计算加法和乘法运算流水线可以计算。多功能流水线,一个单独的功能可能不需要所有的流动部分,可由水段的不同子集完成不同的功能。因为输入的数据在一个同步的方式通过流水线,有些数据可能不需要一些水段,当他们经过一段,什么也不做。这并没有使用或自由流动的部分带来另一种形式的流水线,可称为“外碎片”。和内部分裂的外部碎片是类似的,一个流水线架空,应尽量减少。第二线的理想假设所有水段总是充分利用。除了表明不存在外部碎片,这个假设也说明了数据的处理是许多。第一数据线最后一段需要钾钾循环周期,称为“填充”。最后的数据线的第一段,也需要钾定期排空流水线。在灌装和排空过程中,并不是所有的流水线阶段的工作状态。如果有大量输入数据的处理,可以使线的填充和排空时间只有一小部分的总时间。因此,许多水段可认为一直处于工作状态。4.1.3 独立的运算第三线假说解释,线加工操作是相互独立的。这意味着,所有同一时间居住在流水线的操作是不相关的,也就是说,任何两者之间不存在的数据或控制。这一假设保证线在“流动”的工作方法,即后面操作不是因为存在相关性而等待操作完成。因为浮点加法器的例子,这个假设是成立的。如果有更多的操作数在一起,一对操作数的增加不是因为另一个加法的结果。这些操作可以依照“流”的处理。这一假设的一些行可能不成立。后面的操作可能需要在前面的结果,和2个操作也可能居住在流水线。如果是后者的经营已进入了结果所需的水,但这次在术前尚未到达产生的结果流动段,这是背后的操作必须等待期。这是被称为“流水线摊位”。如果一个操作暂停线一定时间,随后的所有操作可能被迫停顿。流水线摊位不可避免地导致一些处于闲置状态,它可被视为一个动态外部碎片,从而使吞吐量率降低。如果相关是不可避免的,设计时,尽量多的停止线。4.2 指令流水线前三行是行的理想假设。在大多数情况下,算术流水线的实际情况与理想的假设是不太大。然而,对指令流水线,和实际情况之间的差距会更理想的假设。而连接过桥正式指令管线设计有趣和有挑战性的地方。设计中的流水线处理器,三个假设成为三大挑战。三大挑战,同时与探索的流水线处理器的设计理念。4.2.1 指令流水线设计设计中的命令行,三行,成为设计目标。一个指令处理是精简业务,它必须被分成多个作为辅助操作,得到的平衡线。处理指令延迟时间成为“指令周期”,每一段时间延迟决定了机器周期。”。指令周期是一个逻辑概念,它指的是执行的指令周期。一个程序,包括一个多元化的指令,程序的执行相当于相应的操作重复执行。机器周期是一个物理概念,它包含了数字逻辑电路的存储单元的时钟,同时它也是流水线时钟周期。指令流水线设计的主要任务可以看作是将逻辑指令周期映射到物理机器周期。换句话说,就是将指令周期所对应的运算分成一个子运算的序列,由流水线的各段运行。要有效的进行这种分割或者映射,必须考虑三条流水线的理想假设。符合业务的组成部分,我们将指令周期分为多个机器周期的过程称为“定量水段”。在量化的流动部分,以尽量减少内部分裂。如果在量化流动部分是不充分的考虑,将引入内部碎片,从而影响线的利用率。第一行的理想假设带来的指令流水线设计的第一个挑战,称为平衡线。线平衡,减少内部分裂。重复的运算与单一功能的算术的流水线是不一样的,指令流水线是一种天然多功能流水线,即它必须能够处理各种不同类型的指令。不同类型的指令需要稍微不同的子操作序列,相应的硬件资源的不同。指令流水线的设计挑战二连接,或整合不同类型不同的资源需求。线应该能够支持所有类型的指示;同时应尽量减少对每种类型的指令是无效的或空的机器周期,也是降低外部碎片。独立的运算 运算流水线是一个数组的数据,他们一般是不相关的。和算术流水线是不同的,指令流水线处理指令不完全是相互独立的。因此,指令流水线必须有一套内部机制,用来检测指令发生之间的相关和有关的指令不会导致错误。相关的指令可能导致流水线摊位,导致失败。如前所述,流水线停滞在动态外部碎片,这会降低流水线的吞吐量。因此,指令流水线设计的第三大挑战是减少流水线摊位。4.2.2 指令集体系结构的影响在正式讨论指令流水线设计的三个主要挑战之前,简单的考虑一下指令集体系结构对于指令流水线的影响,将很有启发意义。下面将一次考虑三条流水线理想假设。一致的运算分量 使水段保持均衡的第一个挑战,必须确保组件的延迟是一致的。研究教学过程的所有操作元件,有部分的长期拖延,以及部分不易破碎成细计算组件。在一个流水线处理器的设计,关键部件是访问内存。由于速度的差异之间的处理器和内存,内存访问将成为关键运算部件。为使指令流水线的效率更高,应在寻址模式进行优化,并应能够紧跟高速缓存的处理器速度。重复的运算 第一个挑战是不同类型的指令的资源要求是统一的,它的主要目的是精简指令集计算机系统结构。减少指令类型的复杂性和多样性的整合不同的指令类型可以减少困难的任务。复杂寻址模式不仅需要额外的内存,并增加了对资源的需求的多样性。所有这些资源整合到一个指令管线的看法相当困难,和线的许多教学效率很低。这些指示将产生外部碎片,从而降低线路的利用率。一个精简指令集计算机系统结构的流水线,整合资源,简单的把线更有效,减少外部碎片。独立的运算 第三个挑战是尽量减少相关指令所造成的流水线摊位,这可能是一个流水线处理器的设计是最吸引人的地方。正确地完成操作,指令流水线必须检测和解决相关的指令。复杂的处理方式

温馨提示

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

评论

0/150

提交评论