指令流水线技术研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指令流水线技术研究

摘要:流水线技术是当前指令集处理器设计中广泛采用的技术。首先介绍了有关流水线的基础知识,包括概念、特点、分类及其主要性能指标。然后提出了三条流水线理想假设,并由此得出了指令流水线设计的三大挑战,从而指出了在指令流水线设计时应重点解决的三大问题和设计方法。最后是对该技术的总结与展望。

关键字:指令流水线;概念;性能指标;理想假设;处理器设计;

前言

流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复设置硬件。20世界60年代早期的一些高端机器中第一次采用了流水线技术。第一个采用指令流水线的机器是IBM7030(又称作Stretch计算机)。后来的CDC 6600同时采用了流水线和多功能部件。

到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术之一。RISC设计方法的大部分技术都直接或者间接以提高流水线性能为目标。从此以后,流水线技术也被有效地应用到CISC处理器的设计中。Intel i486是IA32体系结构中的第一个流水线实现。Digital的VAX和Motorola的M68K的流水线版本在商业上也取得了成功。

流水线技术是当前指令集处理器设计中广泛采用的技术。在这里我们将重点放在(标量)流水线处理器的设计。流水线处理器设计中的许多方法和技术,例如用于检测和化解相关的流水线互锁机制,都是标量处理器设计的基本方法。

1 流水线基础

加快机器语言的解释过程提高机器的运算速度是设计计算机的基本任务之一。这可以通过两个途径来实现。一个途径是提高器件的速度,采用更好的算法,增加指令内各微操作的并行程度,减少解释过程所需要的拍数等多项措施来加快机器指令的解释。另一个途径则是采用重叠和流水方法,同时解释两条、多条以至整段程序,从而加快整个机器语言程序的解释。流水线技术是目前广泛应用于

微处理芯片中的一项关键技术,Intel公司更是这项技术在微处理器中应用的首先实现者。

1.1 流水线概念

指令的三种控制方法:顺序方法、重叠方式、流水方式。顺序方法是指各条机器指令之间顺序串行地执行,而且每条机器指令内部的各个微指令也是串行执行。这种方法虽然控制简单但速度上不去,机器各部件的利用率低。重叠方式是指在解释第K条指令的操作完成之前就开始解释第K+1条指令。通常都是采用一次重叠,即在任何时候,指令分析部件和指令执行部件都只有相邻两条指令在重叠解释。这种方式使指令的解释速度有所提高,控制也不太复杂但会出现冲突、转移、相关等问题,这些都需要在设计时想办法解决。流水方式就是把并行性或并发性镶嵌到计算机系统里的一中形式。它是把重叠的顺序处理过程分解为若干过程,每个过程能在专用的独立模块上有效地并发工作的技术。在概念上“流水”可以看成“重叠”的延伸。不同的是“一次重叠”只是把一条指令的解释分解成两个子过程,而“流水”则是分解为更多的子过程。

1.1.1指令重叠

一条指令的执行过程可分为取指令、分析与执行三个过程(如图1.1)。取指令,取出该指令送到指令寄存器。指令的分析指的是对指令的操作码进行译码,按寻址方式合地址字段形成操作数真地址,并用此真地址去取操作数,还要为准备取下一条指令提前形成下一条指令的地址等。指令的执行则是指对操作数进行运算、处理,或存储运算结果。指令的重叠解释方式指的是,在解释第k条指令的操作完成之前,就开始解释第k+1条指令。假设这三个过程分别在3个不同的硬件(指令控制器、分析器和执行部件)上进行,则当第k条指令处于分析阶段的时候,控制器就处于空闲状态,这个时候可以对第k+1条指令进行取指令操作,当第k条指令处于执行状态时,分析器就处于空闲状态,这时可以进行对第k+1条指令的分析(图1.2)。很显然,重叠解释的方式并不能加快一条指令的实现,但是可以加快两条相邻指令以至一段程序的解释。

图1.1 机器指令的顺序执行方式

图1.2 指令的重叠解释方式

1.1.2 流水线

流水其实就是重叠的引申,上面谈到的重叠模型实际上就是一个简单的3级流水模型。如果将分析与执行阶段再细分为指令解码、取操作数、执行运算和存储结果,当第k+1条指令在第k条指令执行去操作数的时候就可以开始解码,而不必等到分析k完全结束。这样子在一个指令周期内就可以同时执行5条指令。流水线工作方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工程中的生产流水线十分相似,因此,把他成为流水线工作方式。在处理机的各个部分几乎都可以采用流水线工作方式。指令的执行过程可以采用流水线,称为指令流水线。运算中的操作部件,如浮点加法器,浮点乘法器等可以采用流水线,成为操作部件流水线。访问主存储器部件也可以采用流水线。甚至在处理机之间,机器之间也可以采用流水线。

图1.3指令流水线

1.1.3 流水线的特点

从上面的分析中可以看到,在处理机中采用流水线方式与采用传统的串行方式相比,具有一下特点:

1.在流水线中处理的必须是连续任务,只有连续不断的提供任务才能

充分发挥流水线的效率。例如。要是浮点加法器充分发挥作用,需

要连续提供浮点加法运算。然而,由于程序本身的原因和程序设计

过程中人为造成的一些原因,入数据相关等,不可能为浮点加法器

连续的提供同一种操作。因此,在采用流水线工作方式的处理器中,

特别是当流水线的级数较多时,要在软件和硬件等多方面为流水线

提供连续的任务,以提高流水线的效率。

2.把一个任务分解成几个有联系的子任务,每个任务由一个专门的功

能部件来实现。因此,流水线实际上是把一个大的功能部件分解为

多个独立的功能部件,并依靠多个功能部件并行工作来缩短程序的

执行时间。在流水线中,一个子任务通常称为一个子过程,或者一

个功能段。

3.在流水线每一个功能部件后面都要有一个缓冲寄存器,或称为锁存

器等,用于保存本段执行的结果。这是因为流水线中每一段的延迟

一般都不可能相等,因此,在段与段之间传递子任务时,必须要通

过缓冲寄存器。当某一个功能段的时间变化范围比较大的时候,要

设置多个缓冲寄存器。

4.流水线中各个段要尽量匀称,即时间要求尽量相等,否则将容易引

起“阻塞”、“断流”等问题。执行时间最长的段将成为整个流水

线的“瓶颈”,这时,流水线中各段将受到限制而不能充分发挥作

用。只有当整个流水线完全充满时,整个流水线的效率才能得到充

分的发挥。

为了设计出高效率的流水线,要充分注意上述问题。

1.1.4 流水线的分类

从不同的角度,按照不同的观点,可以把流水线分成多种不同的类型。平时所说的某种流水线,往往是按照某种观点,或者从某一个特定的角度对流水线进行分类的结果。因此,从名称上只能反应出这种流水线在某一个方面的特点或者功能。

按照流水线的各功能段之间是否有反馈信号,可以把流水线分为线性流水线和非线性流水线。

线性流水线是将流水线各个功能段逐个串联起来,输入数据从流水线的一段进入,从另外一段流出。数据在流水线中经过时,没一个功能段都流过一次,且仅仅流过一次。

相关文档
最新文档