admin 管理员组

文章数量: 1086019


2024年4月16日发(作者:在电脑中table是什么意思)

摘要

流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复

设置硬件。20世界60年代早期的一些高端机器中第一次采用了流水线技术。第一

个采用指令流水线的机器是IBM7030(又称作Stretch计算机)。后来的CDC 6600

同时采用了流水线和多功能部件。

到了20世纪80年代,流水线技术成为RISC处理器设计方法中最基本的技术

之一。RISC设计方法的大部分技术都直接或者间接以提高流水线性能为目标。从

此以后,流水线技术也被有效地应用到CISC处理器的设计中。Intel i486是IA32

体系结构中的第一个流水线实现。Digital的VAX和Motorola的M68K的流水线版

本在商业上也取得了成功。

流水线技术是当前指令集处理器设计中广泛采用的技术。在这里我们将重点

放在(标量)流水线处理器的设计。流水线处理器设计中的许多方法和技术,例

如用于检测和化解相关的流水线互锁机制,都是标量处理器设计的基本方法。

当前的趋势是朝着超深度流水线的方向发展。流水线的深度已经从不到10发展到

超过20.深度流水是获得高速始终频率的必要条件,这是提高处理器性能的一个非

常有效的方法。有迹象表明。这种趋势还将持续下去。

[关键词] 流水线技术 猜测法 中断处理 吞吐率 指令重叠 加快短

循环程序的处理

Abstract

Pipeline technology is to improve the system throughput of a powerful

technology, and does not require repetitive set hardware. The 20 world early

60's some high-end machines used the first pipeline technology. The first

use of the instruction pipeline machine is IBM7030(also called Stretch

computer ). Later CDC6600at the same time lines and multiple functional

components.

In the nineteen eighties, pipeline technology to become the RISC

processor design method is one of the most basic techniques. The design

method of RISC most of the techniques are directly or indirectly to improve

performance as the goal line. Since then, assembly line techniques have

also been applied effectively to the CISC processor. Intel i486 is IA32

architecture is the first in a pipelined implementation. Digital VAX and

Motorola M68K pipelined version also achieved success in business.

Pipeline technology is the current instruction set processor is widely

used in the design of technology. Here we will focus on the ( scalar )

pipelined processor design. A pipelined processor in the design of many

methods and techniques, for example, used to detect and resolve the relevant

pipeline interlock mechanism, is a scalar processor design method.

The current trend is towards super depth line direction. Pipeline depth

has less than10 to the development of more than 20depth of water is always

necessary to obtain high speed frequency, which is to improve the

performance of a very effective method. There are signs. This trend will

continue.

Keywords:

Pipeline technology forecast method of interrupt processing

throughput instruction overlapping accelerate short cycle program

processing

目录

第一章 绪论 ................................................................................................................. 5

1.1 现代RISC中的流水线技术 ........................................................................... 5

1.1.1 超流水线技术 ....................................................................................... 5

1.1.2 超标量技术 ........................................................................................... 4

1.1.3 流水技术在Pentium系列微处理器中的实现 ................................... 6

第二章 流水线基础 ..................................................................................................... 8

2.1 流水线概念 ..................................................................................................... 8

2.1.1 指令重叠 ............................................................................................... 9

2.1.2 流水线 ................................................................................................. 10

2.1.3 流水线的特点 ..................................................................................... 10

2.1.4 流水线的分类 ..................................................................................... 11

2.2 流水线的主要性能 ....................................................................................... 12

2.2.1 吞吐率 ................................................................................................. 12

2.2.2 加速比和效率 ..................................................................................... 13

第三章 指令流水线设计 ........................................................................................... 14

3.1 流水线理想假设 ........................................................................................... 14

3.1.1 一致的运算分量 ................................................................................. 14

3.1.2 重复的运算 ......................................................................................... 15

3.1.3 独立的运算 ......................................................................................... 16

3.2 指令流水线 ................................................................................................... 17

3.2.1 指令流水线设计 ................................................................................. 17

3.2.2 指令集体系结构的影响 ..................................................................... 18

3.2.3 流水线分级的考虑 ............................................................................. 20

3.3 流水线处理器设计 ....................................................................................... 20

3.3.1 保持流水段均衡 ................................................................................. 20

3.3.2 统一指令类型 ..................................................................................... 21

3.3.3 减少流水线停顿 ................................................................................. 25

第四章 流水线中各种相关及中断处理 ................................................................... 26

4.1 流水线中相关 ............................................................................................... 26

4.2 资源相关 ....................................................................................................... 26

4.3 数据相关 ....................................................................................................... 27

4.3.1 指令相关 ............................................................................................. 27

4.3.2 主存空间操作数相关 ......................................................................... 28

4.3.3 通用寄存器组相关 ............................................................................. 28

4.4 控制相关 ....................................................................................................... 31

4.4.1 猜测法 ................................................................................................. 30

4.4.2 加快和提前形成条件码 ..................................................................... 31

4.4.3 采取转移延迟 ..................................................................................... 31

4.4.4 加快短循环程序的处理 ..................................................................... 31

第五章 中断处理与流水线调度 ............................................................................... 32

5.1 中断处理 ....................................................................................................... 32

5.2 流水线调度 ................................................................................................... 33

第六章 总结与展望 ................................................................................................... 35

致谢 ................................................................................................................................. 41

参考文献 ......................................................................................................................... 38

第一章 绪论

流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复

设置硬件。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 超流水线技术

超级流水线(超级流水线集)技术是用在一个并行处理技术。在他稀疏的水,增

加的数量和提高频率,从而在每个机器周期完成一个或2个浮点操作。其实质是

以时间换取空间。超纯水机的特点是在所有的功能单位只使用水,并具有更高的

时钟频率和更深的水的深度。

1.1.2 超标量技术

超标量(Super Scalar)技术是RISC采用的有一种处理技术。它通过内装多

条流水线来同时执行多个处理。其实质就是以空间换取时间。流水线实现中的问

题及解决:

这是一个问题的连续流动,这似乎并没有流下,从而获得更高的效率。停止的

原因很多,除了编译生成的目标程序可以发挥结构的作用,水,或存储系统可以

提供一个连续流动所需的指令和操作数,基本上还出现相关,转移和中断指令相

关的。解偏相关有2种方法:后退方法和路径的方法;解决全球相互关系有三种

方法:猜测转移,加快推进形成条件代码,加快短循环程序处理。

1.1.3 流水技术在Pentium系列微处理器中的实现

流水线技术早在英特尔凌动芯片已经实现。奔腾系列处理器产品是一个高级

的超标量处理器。它是建筑在一般整数流水线和一个浮点单元在线,这使处理器

执行整数指令。一对透明的软件动态分支预测机制可以使分支流水线堵塞最小化。

奔腾处理器可以在一个时钟周期内完成2指示,流水线完成命令。第一个逻辑管

叫“你”的流水线,一次电话“五”流水线。在任何一个给定的指令解码时,它

是安排后面的指令将被检查。和,如果可能的话,第一个指令被分配到“你”流

水线执行指令,其次是分配到“胜利”的流水线执行。如果不是,那么第一个指

令设置为“你”“五”流水线流水线执行,不安排指令操作。教学中的操作和流

水线的顺序执行所产生的效果是完全一样的。当流水线堵塞,随后的指令指令是

阻止任何流水线。

技术的奔腾处理器的整数流水线增加一个额外的处理阶段。指令代码缓冲区

缓存预取,美联储的“预”(公积金)阶段,并在“提取”(女)阶段的教学语

法分析。此外,所有前缀的解码阶段。在教学第一先出(先进先出)指令缓冲区

中的语法分析和指令解码分开,缓冲区位于的阶段,the1stage(D 1)之间的解

码。先进先出缓冲空间指令处理最多四个指示。先进先出缓冲区是透明的,当它

是空的,没有额外的延迟。在每个时钟周期的指令,指令缓冲区(按有效代码字

节,和其他因素,如前缀)。然后,对指令的先进先出缓冲射出去,到d1stage。

由于指令的平均执行效率为每个时钟周期不超过2指令,所以通常全是先进先出。

只要是先进先出,你可以防止取指令和语法分析产生阻塞。如果这阻塞,先进先

出也可以使阻塞的执行管线阶段发生。但如果是先进先出空,因为没有指令流水

线操作,这可能导致执行一个块。长指令或一个前缀可以在先进先出入口产生阻

塞。

超流水线(Super Pipeline)在本质上仍为一种流水线技术,但它做了以下的

改进:

1、流水线条数从奔腾的两条增至三条,还有十一个独立的执行单元并行支持。

2、在实施无序执行(采取所有加工)技术。当一个指令需要一些数据并不能立即

执行,它将被删除线和等数据,处理器是立即执行的指示下,就像在装配线发现

产品不合格,但被淘汰,等原因。这样,可以防止无法执行命令影响整个生产线

的效率。

3、在p6instruction分为更细的相位,使逻辑设计,工艺等更为简化,提高了速

度。在486chip,指令一般分为五个部分,奔腾也是如此。在六,由于采用了类似

的精简指令集计算机技术,一个指令分为十四阶段。这大大提高了线速度。

六系列处理器使用动态执行结构。结构通过一个硬件寄存器重命名和分支预

测的方法,将乱序执行和投机执行的合成。这些处理器有一个有序的进入流水线,

它将英特尔386macro指令分为简单的微操作(或国外)和一个可以处理这些微操

作外序的超标量处理器核心。乱序处理器内核包含几行,连接整数,浮点数和跳

跃,内存执行单元。几种不同的执行单元可以集成在同一行。例如:一个整数地

址逻辑单元和浮点执行单元(加法器,乘法器和除法器)共用线。数据缓冲区缓

存由一个专用的读端口和其他存储端口交错成。最简单的手术(国际铝,浮点此

外,甚至浮点乘法)每时钟周期才能完成一个工作通量装配线。浮点除法不能进

入流水线,长和短延迟延迟操作可以在平行处理。六系列线由三部分组成:前端

(按序有序的组织单位,核心(前端)序序核心)单元和有序退出(有序退休)

单位。

英特尔最近推出的奔腾Ⅲ处理器使用的p6dynamic执行技术,包括多个分支

预测,数据流分析,推测执行。同时,奔腾Ⅲ处理器有一个流水线浮点单元(浮

点运算单元),可支持32位,64位和80位浮点运算。英特尔最近发表的奔腾4,

奔腾4basic指令管线长度达到20级,是六建筑2倍,更比AM DAth lon。时间线

可以使处理器运行在更高的频率,从而提高处理器的性能,但可能有一些指令执

行延迟。

第二章 流水线基础

加快机器语言的解释过程,提高机器的速度是一个基本任务的计算机设计。

这可以实现的方式。一种方法是增加了设备的速度,更好的算法,增加指令的微

平行度,减少解释过程需要击败多项措施加快机器指令的解释。另一种方法是使

用重叠和水的方法,同时,多个2解释整个过程,从而加快整个机器语言程序的

解释。流水线技术现已广泛应用于微处理芯片的关键技术,英特尔公司的微处理

器应用技术首次实现。

2.1 流水线概念

指挥控制方法三:序列的方法,重叠,运行模式。顺序法是指机器指令序列

之间的串行执行的机器指令,和每个微指令的执行顺序。虽然这种方法的优点是

控制简单但速度上不去,利用率低的机器零件。重叠模式是指解释第钾指令操作

完成之前开始的钾1instruction解释。通常使用的重叠,即,在任何时间,命令

解析单元和指令执行部只有相邻指令重叠的解释。这意味着指令解释速度增加,

控制不是很复杂,但出现冲突,转移,相关的问题,这些都是需要在设计解决。

水是一个并行或并行嵌入计算机系统中的一种形式。它是重叠的连续过程分解为

一个进程的个数,每个进程的特殊模块独立有效的并行工程技术。论“流”可以

被视为“重叠”的延伸。不同的是一个“重叠”只是一个指令的解释是分解成2

个过程,与“水”分解为多个子过程。

2.1.1 指令重叠

一个指令执行过程可以分为取指令,类型和执行一三个过程(图2.1)。取指

令,取出指令,指令寄存器。教学分析指指令的操作码进行译码,解决和地址字

段地址操作数的真正形成,这是地址读取操作,但准备取下一条指令是预先形成

的下一条指令的地址。指令执行是指一些操作,加工业务,或存储操作结果。指

令的重叠解释方法是指,在解释的指令操作完成之前,开始解释钾1instruction。

假设这三个过程,分别以不同的硬件(命令控制器,分析和执行单元),当K线

指令在分析阶段,该控制器在空闲状态,这个时候可以为钾1instruction到取指

令操作,当K线的指令被执行时,解析器在空闲状态,并可以进行钾1instruction

分析(图2.2)。显然,重叠的解释方式和不能加快指令来实现的,但可以加速相

邻的指令和程序的解释。

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

图2.2 指令的重叠解释方式

2.1.2 流水线

水实际上是重叠延伸,上面提到的重叠模型实际上是一个simple3水模型。

如果分析和执行阶段分为指令解码,执行操作,存储和计算结果,当钾

1instruction在指令执行的操作时可以开始解码,而不必等到分析钾完全结束。

这样一个指令周期可以同时executing5指令。装配线的工作方式是一个反复的过

程分解成几个子进程,每个进程可以与其他子过程在同一时间。由于这种工作方

法在工程和生产线是非常相似的,因此,他把工作流程。该处理器可以用在几乎

所有地区的工作流程。在指令执行使用线,到指令流水线。手术操作元件,如浮

点加法器,浮点乘法器可以被用来作为部分的流水线,流水线。访问主存储器单

元也可用于流水线。即使在处理器,机器也可以使用流水线。

图2.3 指令流水线

2.1.3 流水线的特点

从上面的分析中可以看到,在处理机中采用流水线方式与采用传统的串行方

式相比,具有一下特点:

1、在处理流水线必须是连续的任务,只有不断提供任务才能充分发挥效率的

流水线。比如说呢。如果浮点加法器的充分发挥,需要连续提供浮点加法器。然

而,由于程序本身的原因和程序设计过程所造成的一些原因,数据关联,不可能

为浮点加法器是提供一个连续运行。因此,在使用流水线的方式处理,尤其是当

线的多个系列,应该在软件和硬件方面的线提供连续的任务,为了提高效率,流

水线。

2、任务分解成几个相关的任务,每个任务由一个专门的功能组件实现。因此,线

实际上是一个功能成分分解成多个独立的功能部件,并依靠多个功能部件并行工

作缩短程序的执行时间。在流水线,任务通常被称为一个过程,或一个功能段。

3、在每一个功能单位线回有一个缓冲寄存器,或锁存器,用于保存所执行的结果。

这是因为在每一段的延迟可以不相等,因此,在转移的任务,必须通过缓冲寄存

器。当一个函数的时间范围较大,设立多个缓冲寄存器。

4、线段的对称性,即相同的时间要求尽可能,否则将造成“堵”,“停止”和其

他问题。执行时间最长的部分将成为整个线路的“瓶颈”,那么,线段将受到限

制,不能充分发挥作用。只有当全是满满的,整个流水线的效率可以得到充分发

挥。

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

2.1.4 流水线的分类

从不同的角度,根据不同的角度,可以分成许多不同类型的线。通常所说的

一些线路,通常按一定的角度,或从一个特定角度线的分类结果。因此,从名字

上只能反映一维线功能或特征。

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

合非线性流水线。

线性线是线各功能部分的每一个系列,输入数据从流水线部分进入,从另一

部分流出。数据流水线通过,没有一个功能部分流经的第一,只有通过A

线性线通常只能完成固定功能,在现代计算机系统,线性线已被广泛应用在

指令执行过程中,各种算术运算,内存访问操作。

图2.4 非线性流水线

非线性流水线经常用于递归调用,或者构成多功能流水线。

根据线使用不同层次,可以将流水线分成功能组件,处理器和处理器和其他

类型。

过程,每个子进程中的一个独立的功能部件。

特征线,又称为操作线,如浮点加法器流水线,浮点乘法器组件。

处理器间流水线也被称为流水线,一般是两年多处理器通过记忆的串行连接,

每个处理器在数据流的不同部分分别进行处理。

处理器的流水线阶段的指令流水线,他把一个指令执行过程分解成若干个子

图2.6 指令流水线

流水线又可分为单功能流水线和多功能流水线。顾名思义,单功能流水线只

能完成固定的单一功能,多流水线通过各个段间进行不同的连接,在不同的时间

内或者统一时间内通过不同的连接方式完成不同的功能。

多功能流水线,根据同一时间是否可以连接到各种不同的方式,并执行各种任

务,你可以把多功能流水线分为静态和动态线。静态线是在同一时间,多功能流

水线部分只有按照一定的固定连接,实现一个固定功能。只有当根据连接方式工

作的所有任务脱节,重新连接,完成其他功能。动态线的同时,可以根据不同的

连接方式,完成各种不同的功能。这一次请求行功能不能冲突。

除了以上几种分类方法外,还可以根据其他标准,从不同角度对流水线进行

分类。

2.2 流水线的主要性能

衡量流水线主要性能的指标主要有吞吐率,加速比和效率。

2.2.1 吞吐率

吞吐率是指在单位时间内流水线所完成的任务数量或者输出的结果数量。即:

n

TP(式2.1)

T

K

式(2.1)中,n为任务数,

T

k

是处理完成n个任务做用的时间。本式为计算吞吐率

最基本的公式。有的时候我们还需要求一条流水线的最大吞吐率:

1

TP

max

(式2.2)

max{t

1

,t

2

,...t

k

,...}

式(2.2)中

t

k

为第k个子过程所花费的时间。最大吞吐率受限于流水线中最慢子过

程即瓶颈子过程所需要的时间。为了提高流水线的最大吞吐率,首先要找出瓶颈,

然后设法消除此瓶颈。消除瓶颈有两种办法,一是将瓶颈子过程再细分,另一种

办法是通过重复设置多套瓶颈段并联,让他们交叉进行。后一种方法需要解决好

在各并行子过程之间的任务分配合同步控制,比起瓶颈子过程再细分控制要复杂、

设备量要多一些。

2.2.2 加速比和效率

完成一批任务,不使用流水线所花的时间与使用流水线所用时间直比即为流

水线的加速比。如果不使用流水线,即顺序执行所用时间为

T

0

,使用流水线的执

行时间为

T

K

,则流水线的加速比为:

T

0

(式2.3)

T

K

这是计算流水线加速比的基本公式。

S

流水线效率是指设备的利用率和流水线。在时空图,线效率定义为,任务时

间区域与钾功能区占用空间面积比。因此,效率线包含2个方面的时间和空间因

素。事实上,在任务的时间区域是顺序执行的任务使用的总时间。而一个流水线,

完整的总任务在颞区,这是一个对完成任务的总时间。是一个段线效率可表示为:

n个任务占用的时空区T

0

(式2.4)

k个流水段的总的时空区kT

k

此式是计算流水线效率的一般公式。

E

如果流水线各段执行时间均相等,且输入的n个任务是连续的,则一条k段

流水线的效率为:

E

kntn

(式2.5)

k(kn1)tkn1

从流水线的时空图上来看,上式分母部分是完成n个任务所用时间与k个功能段

所围成的总面积,而分子部分则是k个功能段实际所占有的面积。因此,利用时

空图来计算流水线的效率十分方便。

第三章 指令流水线设计

我们做任何事情,都希望能够达到理想状态,但这往往是不现实的,我们研

究理想状态的意义就在于给出一个衡量的标准,并且努力向这个标准靠近,这在

指令流水线的设计过程中也不例外。

3.1 流水线理想假设

为目的的指令流水线,我们希望能够最大限度地提高系统性能。然而在实践

中,但往往不这样做,因为只有在理想的条件下,等级度流水线设计可以提高吞

吐量的时间,理想的情况是主要基于三假说,我们称它为“线理想的假设”,他

是正确评估流水线设计。设计各种方案解决实际线和线之间的矛盾,理想的假设,

它们构成的主要工艺流水线的设计。流水线的理想假设包括:

1. 一致的运算分量:要完成的整个运算量可以均匀的分成延迟一只的若

干分量。

2.

3.

3.1.1 一致的运算分量

第一行的理想的假说解释,会使计算部分水均匀地分为钾延迟相同的组件。

这意味着以前的设计可以分为钾平衡水段。如果以前的总计算延迟,不是设计类

型的水循环,然后钾流水线设计风格的周期是钾,也就是流水在每一段的延迟。

基于这一假设,时钟频率可以增加,并提高吞吐量倍。

重复的运算:输入数据有大量相同的、重复的运算。

独立的运算:所有相同的重复运算之间没有相关性。

在实际的流水线设计,这种假设可能不成立。总操作组件完全均匀的分成几

个部分是不可能的。在3级流水线浮点加法器的例子,设置总延迟for500ns,线

分为3个部分,每个部分都200ns延迟,容错,200ns。显然,总延误是不均匀分

布在整个线路的三段。因为线路时钟周期决定推迟最长延迟时间较短,所以会有

一些无效或失败时。如浮点加法器的后半部分,这是100 ns的无效时间,我们可

以称它为“内部碎片”。由于内部分裂,执行同样的操作延迟将增加。

有一种内在的假设,即水段之间引入缓冲不会带来额外的延迟线时钟信号,

也不引入额外的延迟。同样,假设在实践中是不成立的。在一些例子中,为了保

证信号的时钟信号准确地成立的,注册成立,所以总时钟周期延长,从而导致实

际业绩可能不到3次。

第一行的理想假设主要包含以下两点:以前的操作部件分为多个部分,不引入

一个无效的时间;一个缓冲和时钟不会带来额外的延迟介绍。在芯片级设计,可

以使用一些锁,如·锁可以使时钟产生延迟尽可能小。那么如何来操作均匀分成

各种水段构成的流水线设计的第一个挑战。我们的目标是,尽可能使所有水段保

持平衡,减少内部分裂。由于各水段不能完全平衡内部分裂是不满足第一行的理

想假设的主要原因,这将是一个架空,并导致钾级管线设计吞吐量增长达到理想

的倍。

3.1.2 重复的运算

第二线的理想的假说解释,线反复执行相同的操作。这意味着在一组输入数

据,一些运营商是相同的,这些操作执行。每次执行时,线路提供组件执行顺序

是相同的。因为浮点加法器的例子,将含有大量浮点数在一起,对每一个操作数

是通过same3线。这一集,每次重复计算可以使用所有的小节线。在我们的例子,

这显然是建立。

浮点加法满足这个假设,因为本线只完成一个功能,例如,浮点加法运算。

如果你想设计一个流水线完成多种功能,这种假设是不满意。例如,设计一个可

以计算加法和乘法运算流水线可以计算。多功能流水线,一个单独的功能可能不

需要所有的流动部分,可由水段的不同子集完成不同的功能。因为输入的数据在

一个同步的方式通过流水线,有些数据可能不需要一些水段,当他们经过一段,

什么也不做。这并没有使用或自由流动的部分带来另一种形式的流水线,可称为

“外碎片”。和内部分裂的外部碎片是类似的,一个流水线架空,应尽量减少。

第二线的理想假设所有水段总是充分利用。除了表明不存在外部碎片,这个

假设也说明了数据的处理是许多。第一数据线最后一段需要钾钾循环周期,称为

“填充”。最后的数据线的第一段,也需要钾定期排空流水线。在灌装和排空过

程中,并不是所有的流水线阶段的工作状态。如果有大量输入数据的处理,可以

使线的填充和排空时间只有一小部分的总时间。因此,许多水段可认为一直处于

工作状态。

3.1.3 独立的运算

第三线假说解释,线加工操作是相互独立的。这意味着,所有同一时间居住

在流水线的操作是不相关的,也就是说,任何两者之间不存在的数据或控制。这

一假设保证线在“流动”的工作方法,即后面操作不是因为存在相关性而等待操

作完成。因为浮点加法器的例子,这个假设是成立的。如果有更多的操作数在一

起,一对操作数的增加不是因为另一个加法的结果。这些操作可以依照“流”的

处理。

这一假设的一些行可能不成立。后面的操作可能需要在前面的结果,和2个

操作也可能居住在流水线。如果是后者的经营已进入了结果所需的水,但这次在

术前尚未到达产生的结果流动段,这是背后的操作必须等待期。这是被称为“流

水线摊位”。如果一个操作暂停线一定时间,随后的所有操作可能被迫停顿。流

水线摊位不可避免地导致一些处于闲置状态,它可被视为一个动态外部碎片,从

而使吞吐量率降低。如果相关是不可避免的,设计时,尽量多的停止线。

3.2 指令流水线

前三行是行的理想假设。在大多数情况下,算术流水线的实际情况与理想的

假设是不太大。然而,对指令流水线,和实际情况之间的差距会更理想的假设。

而连接过桥正式指令管线设计有趣和有挑战性的地方。设计中的流水线处理器,

三个假设成为三大挑战。三大挑战,同时与探索的流水线处理器的设计理念。

3.2.1 指令流水线设计

设计中的命令行,三行,成为设计目标。一个指令处理是精简业务,它必须

被分成多个作为辅助操作,得到的平衡线。处理指令延迟时间成为“指令周期”,

每一段时间延迟决定了机器周期。”。指令周期是一个逻辑概念,它指的是执行

的指令周期。一个程序,包括一个多元化的指令,程序的执行相当于相应的操作

重复执行。机器周期是一个物理概念,它包含了数字逻辑电路的存储单元的时钟,

同时它也是流水线时钟周期。

指令流水线设计的主要任务可以看作是将逻辑指令周期映射到物理机器周

期。换句话说,就是将指令周期所对应的运算分成一个子运算的序列,由流水线

的各段运行。要有效的进行这种分割或者映射,必须考虑三条流水线的理想假设。

符合业务的组成部分,我们将指令周期分为多个机器周期的过程称为“定量

水段”。在量化的流动部分,以尽量减少内部分裂。如果在量化流动部分是不充

分的考虑,将引入内部碎片,从而影响线的利用率。第一行的理想假设带来的指

令流水线设计的第一个挑战,称为平衡线。线平衡,减少内部分裂。

重复的运算 与单一功能的算术的流水线是不一样的,指令流水线是一种天然

多功能流水线,即它必须能够处理各种不同类型的指令。不同类型的指令需要稍

微不同的子操作序列,相应的硬件资源的不同。指令流水线的设计挑战二连接,

或整合不同类型不同的资源需求。线应该能够支持所有类型的指示;同时应尽量

减少对每种类型的指令是无效的或空的机器周期,也是降低外部碎片。

独立的运算 运算流水线是一个数组的数据,他们一般是不相关的。和算术流

水线是不同的,指令流水线处理指令不完全是相互独立的。因此,指令流水线必

须有一套内部机制,用来检测指令发生之间的相关和有关的指令不会导致错误。

相关的指令可能导致流水线摊位,导致失败。如前所述,流水线停滞在动态外部

碎片,这会降低流水线的吞吐量。因此,指令流水线设计的第三大挑战是减少流

水线摊位。

3.2.2 指令集体系结构的影响

在正式讨论指令流水线设计的三个主要挑战之前,简单的考虑一下指令集体

系结构对于指令流水线的影响,将很有启发意义。下面将一次考虑三条流水线理

想假设。

一致的运算分量 使水段保持均衡的第一个挑战,必须确保组件的延迟是一致的。

研究教学过程的所有操作元件,有部分的长期拖延,以及部分不易破碎成细计算

组件。在一个流水线处理器的设计,关键部件是访问内存。由于速度的差异之间

的处理器和内存,内存访问将成为关键运算部件。为使指令流水线的效率更高,

应在寻址模式进行优化,并应能够紧跟高速缓存的处理器速度。

重复的运算 第一个挑战是不同类型的指令的资源要求是统一的,它的主要目的

是精简指令集计算机系统结构。减少指令类型的复杂性和多样性的整合不同的指

令类型可以减少困难的任务。复杂寻址模式不仅需要额外的内存,并增加了对资

源的需求的多样性。所有这些资源整合到一个指令管线的看法相当困难,和线的

许多教学效率很低。这些指示将产生外部碎片,从而降低线路的利用率。一个精

简指令集计算机系统结构的流水线,整合资源,简单的把线更有效,减少外部碎

片。

独立的运算 第三个挑战是尽量减少相关指令所造成的流水线摊位,这可能是一

个流水线处理器的设计是最吸引人的地方。正确地完成操作,指令流水线必须检

测和解决相关的指令。复杂的处理方式,特别是与内存访问模式,因为内存地址

标识符问题引起了相关检测是非常困难的。一般来说,比较容易发现因为寄存器,

寄存器的指令是明确指出。简单和桩适合指令解码和相关检测。相关检测和解决

可以是静态的,也可以从本机运行的硬件动态完整。编译和运行分别决定如何处

理,在动静态界面(接口)定义。定义接口,将导致许多有趣的和微妙的平衡。

平衡,必须被编译,(微)结构和微处理器设计紧密结合起来。

3.2.3 流水线分级的考虑

理想流动性能和流水线的深度(即,线段)是成正比的,因此似乎是最好的设计,

增加行数。然而,由于时钟约束,线分段数总是有一个物理限制。线的每一部分

可以被视为一个组合逻辑加上最后锁存器,信号通过后的锁。定义的最大传输延

时,即通过长度的延迟信号路径;为的最小传输延迟,即通过短的信号路径延迟;

为建立正确的时钟信号所需的时间,包括必要的建立和保持时间,保证正确的锁

存器,同时也包括可能的时钟偏移,满足不同锁存时钟沿最大时间差。第一组信

号时的作用,假设在一个级别的输入,然后输出的最新有效。当另一组信号在时

间的输入端子,以最快的时间就可以存L保证二组信号不覆盖第一组的信号,必

须满足:

T

2

T

m

T

1

T

M

T

L

(式3.1)

该公式说明,信号

X

2

可能到达的最早时刻不能早于信号

X

1

正确锁存的时刻。该不

等式可以重写为:

T

2

T

1

T

M

T

m

T

L

(式3.2)

其中

T

2

T

1

就是最短时钟周期T。因此,时钟周期T必须比

T

M

T

m

T

L

大,而最大

时钟频率不能超过1/T。

从中我们可以看到,时钟最终决定管线深度,除了这一限制,如果考虑价格,

即流水线间接成本,最好的设计通常不是最大的流水线深度。在一个流水线系统

的硬件设计,必须考虑价格和性能的权衡。一般来说,价格相对深度的流水线流

水线成线性增长。

流水线深度一直是影响处理器效率的重要因素,流水线深度的增加可以让处

理器时钟频率进一步提高,但随着流水线深度的增长带来的处理器的单周期执行

效率降低、发热量上升,同时容易产生分支预测等问题反面影响也会加剧,因此

流水线长度的尺度把握一直是处理器设计中的一个重要核心问题。在设计流水线,

要综合各方面的因素,根据最佳性价比的要求来选择流水线的最佳段数。

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)

一个典型的指示,从取指令周期开始,然后解码,它决定了指令完成操作。

一个指令是通常带有一个或多个操作数,操作数在寄存器或内存,这取决于使用

的寻址方式。一旦所需的错误计数都准备好了,你可以执行指定的操作指令。实

施所产生的结果存储起来,就算结束指令周期。

分段指令周期是一个自然的方式是按照5个基本算术元件划分,每个业务组

件对应一个流动部分,造成a5stage指令流水线,我们称这些为基本指令流水线,

简称枪花线。在与流水线,逻辑指令周期将被映射到5个物理机器周期。机器周

期,指令周期的比例为5,这是反映了流动的程度和水段大小。

定量的水段设计成指令周期分割平衡水段,以便尽量减少一些内部分裂。定

量的水部分的自然功能分区开始。作为基本算术组件。多个延迟更小的组件可以

组合成一个新的组成部分,以获取更平衡线。另外一个平衡线方法是相反的,不

是有一个较短的延迟元件组合,但会延迟较长的操作部件被分成多个短时延的组

成部分。该方法延迟短的组成部分为参考,长潜伏期操作部件分成较小的部分,

使每一个组件的延迟和参考元件延迟几乎。这将导致在一个机器周期粒度更细,

在更高程度。

在具体进行指令流水线设计的时候,这两种方法可以结合起来使用。不管在

什么情况下,量化流水段的目标都是尽量减小内部碎片的开销。

3.3.2 统一指令类型

第二线的理想假设需要线应重复同样的操作。为广大的指令流水线,重复相

同的操作理想的假设是不成立的。指令流水线指令重复处理不同的指令类型。虽

然指令周期重复,但每次过程的不同类型的指令。不同的指令类型有不同的资源

要求,每个组成部分的业务订单可能不一样。指令流水线的要求,满足不同需求,

您必须提供所有类型的指令所需的所有操作元件的超集。一个单一的指令类型可

能不需要所有的流动剖面线。一个单一的指令类型,不需要水段为某种形式的失

败或架空,即外部碎片。目的的统一指挥,是尽量减少所有指令式外碎片。

要完成一次运算,计算机必须完成一下三个基本任务:

1. 算术操作

2. 数据移动

3. 指令定序

算术运算包括指定的操作执行算术和逻辑运算,它最突出的部分操作,所以

经常和整个操作是等同的。一个处理器能够支持大量的算术运算式。数据移动将

负责操作数和结果存储在地址的移动。通常是内存地址的层次和专业指示移动数

据。指令序列负责指令序列的测定。通常的运作程序,含有大量的指令,通过执

行一系列指令需要完成操作。该指令序列,或打电话程序,可以通过指令本身的

确定。

如何将这三个基本任务分派给ISA中的各种指令,是指令集实际中的关键问

题。受RISC体系结果的影响,现在的大多数指令集体系结构都有一些共同的特征。

这些体系结果包括Hewlett-Packard的Precision体系结构,IBM的Power体系结

构,IBM/Motorola的PowerPC体系结构,还有Digital的Alpha体系结构。这些

现代ISA倾向于采用定长指令、正交的指令格式、load/store型体系结构和简单

的寻址模式。这些体系结构中的大多数都能与指令流水线很好的协调起来。

在一个典型的现代RISC体系结构中,指令集采用一种专门的指令类型来完成

三个基本任务中的一个,也就是说,每一种指令类型只完成三个基本任务中的一

个。根据三个基本任务,可以将指令分成三种类型:

1. ALU指令 完成算术和逻辑运算

2. Load/store指令 完成数据在寄存器及存储器间的移动

3. 分支指令 控制执行指令的顺序

ALU指令所执行的算术逻辑操作严格地针对寄存器操作数进行,只有load和

store指令能访问数据存储器。Load/store指令和分支指令都采用比较简单的寻

址模式,通常只支持带偏移量的寄存器间接寻址模式。对于分支指令,还支持PC

相对寻址。在下面列出关于前两种指令类型的详细规范,其中假设使用了指令

cache(I-cache)和数据cache(D-cache)。

比较表3.1与表3.1中的两种主要指令类型规范,我们可以看到,两种指令

类型的初始化分量比较类似,然而后面的分量有些差异。这些语意上的差异将导

致不同的资源需求。

基本运算分量

IF

ID

OF

EX

OS

ALU指令类型

-取指令(访问I-cache)

-解码指令

-访问寄存器文件

-执行ALU操作

-回写寄存器文件

表3.1 ALU指令类型规范

基本运算分量

IF

ID

OF

Load指令

-取指令(访问I-cache)

-解码指令

store指令

-取指令(访问I-cache)

-解码指令

-访问寄存器文件(基地址) -访问FP寄存器文件

-生成有效地址

(基地址+偏移量)

-访问(读)内存

(访问D-cache)

(寄存器操作数及基地址)

EX

OS

-

-回写寄存器文件

-

-生成有效地址

(基地址+偏移量)

-访问(写)内存

(访问D-cache)

表3.2 Load/store指令类型规范

统一不同指令类型主要是将不同资源需求有效的整合到一条指令流水线中

去,使得这条流水线适合于所有的指令类型。整合的目标是,尽量减少流水线所

需要的资源总数,同时尽量提高流水线中所有资源的利用率。通常,资源的整合

过程包含以下三个步骤。

1. 分析每种指令类型的运算分量序列,确定相应的资源需求。

2. 找出指令类型之间的共性,合并相同的运算分量,已使用相同的流水段。

3. 如果在不违背指令语意的情况下存在一定的灵活性,可以改变或者重新排

列分量的顺序,以便进一步的整合。

可以将这一过程应用到表3.1和表3.2中。ALU,load,store指令类型的规范

总结如图3.3所示。现在我们由上至下实施统一的过程,检查3个分量的序列合

要求提供支持的硬件资源。这个过程产生了指令流水线各段的定义。

ALU LOAD STORE

取指令 取指令 取指令

更新PC 更新PC 更新PC IF

解码 解码 解码 ID

读寄存器 读寄存器 读寄存器 RD

生成地址 生成地址 ALU

读内存 写内存 MEM

写寄存器 写寄存器 WB

图3.3 ALU,load,store指令类型的规范总结

所有3种指令类型都有相同的IF和ID分量,因此,这两个运算分量可以很容

易的合并起来,并用来定义流水线的前两个段,即IF和ID段,从而完成取指和

译码工作。

所有3种指令类型的OF分量都要读寄存器文件。ALU指令访问两个寄存器并

且获得寄存器操作数;load指令访问一个寄存器并获得地址;store指令访问一

个寄存器并且获得操作数,访问另外一个寄存器以获得基地址。在3中情况下都

要访问一个或者两个寄存器,这些相似的分量可以合并到流水线的第三段,成RD

段并从寄存器文件读取最多两个寄存器操作数。因此寄存器文件在每个时钟周期

内必须支持两个独立的并行操作数。

ALU指令要求有一个ALU功能单元来完成必要的算术逻辑运算。虽然

load,store指令不需要执行这样的操作,但是他们需要生成有效的地址来访存。

可以看出,地址生成可以由ALU功能单元来完成。因此,这些分量可以合并到流

水线第4段,成为ALU段并包含一个ALU功能单元,完成算术逻辑运算或者有效

地址的生成。

ALU和load指令都需要想寄存器写回结果,这是他们的最后一个运算分量。

ALU指令将寄存器操作的结果写回寄存器,load将访存的数据写入到目标寄存器。

ALU指令不需要访存,因此,理论上向目标寄存器回写这一过程可以在ALU段之后

立即进行。然而为了load指令回写分量统一起来,ALU指令的寄存器回写分量向

后推迟了一段,在流水线的第6段进行,成为WB段。这将导致ALU指令在MEM段

产生一个空闲周期。这是一种外部碎片并将给流水线带来一些效率损失。

通过对不同指令类型的整合,可以得到一条6级流水线,如图3.3右侧所示。

3.3.3 减少流水线停顿

第三线理想的假说认为,流水线执行的操作是相互独立的。在一个等级的流

水线,可能有不同的操作处理的指令流水线,具有最大钾不同的指示,同时在流

水线。这些指令可能不是相互独立的。事实上,这些指令通常与。如果流水线指

令不相关,将有助于流水线流动,或者说,指令通过线路没有任何流水线摊位。

如果指令相关的,它必须检测和解决有关。该解决方案可能需要流水线摊位。设

计的挑战,目的是减少流量减少流水线摊位,防止通量下降率。

关于具体怎样判断各种相关并且将其化解,将在下一章中进行讨论。

第四章 流水线中各种相关及其处理

我们知道级数为n的流水线,在理想情况下可以提高处理性能n倍。但是,

在实际中,有一些情况会阻止指令流中的下一条指令在预定的时钟周期内执行,

这些情况就称为“相关冒险”或者“相关”。这一章,我们详细的讨论流水线中

各种相关产生的原因及其处理方法。

4.1 流水线中相关

流水线相关阻止了流水线以理想的加速比改进处理器的性能。在流水线设计

中,我们需要考虑以下三种相关:

资源相关:当硬件无法支持所有可能,同时重叠执行指令组合,将有资源冲

突,导致相关资源,也被称为“结构”。

数据相关:在流水线重叠执行指令,如果指令依赖于前面的另一个指令执行

的结果,导致流水线摊位,你有数据相关。

控制相关:这种相关主要是由于转移指令和其他能够改变PC内容的指令,在

流水线进行处理时产生的。

在接下来几节中我们将对这三种相关分别进行讨论。

4.2 资源相关

通常,一些功能不完全流水线是产生资源相关的基本原因。然后,当一个指

令序列的许多指令都使用这一功能,该指令将不在流水线连续起动过程。另一个

原因,流水线冲突的主要原因是,在系统无行中的所有命令组合,提供了足够的

硬件资源。例如,一个机可能只有注册成立写端口,但是在某些情况下,可能需

要在一个循环寄存器写动作,这导致资源。当一个指令序列满足资源,流水线将

暂停一个指令的执行需要知道的资源闲置。

许多流水线处理器指令和数据访问只使用一个内存流水线。因此,当一个指

令是必要的操作数的内存访问操作,数据访问会占用内存端口,那么处理器将是

下一个指令存取,即线已暂停一个时钟周期,以便按照指令集。

我们在设计可以避免资源冲突。此外,在其他条件相同的情况下,没有资源

冲突处理器始终是更好地让资源冲突的处理器有一个较小的消费物价指数。然而,

在具体的设计中,在许多情况下,我们仍然可以存在资源冲突,主要有2个原因,

一是降低成本,此外,是降低单位延迟。所有过流部件可以使机器成本超出承受

能力。如果在实践中,一些冲突发生的频率较低,可能不值得我们完全避免他们

付出高昂的代价。此外,设置组件的流量或不完全流水线的成分,有可能会比完

全流水线部件产生较小的总延迟。例如,称重,疾病预防控制中心7600和聚合物

2012floating点单位完全放弃了流水线设计,并选择一个较小的延迟(每个操作

数周期)方案。允许某些资源冲突可以减少部件的等待时间,因此,设计师可以

在其他一些方面的机器的性能得到改善,从而弥补资源冲突不利。

4.3 数据相关

数据相关主要有3种,分别是指令相关、主存空间数相关和通用寄存器组相

关。解决数据相关的方法主要有两种,一种是退后分析法,在遇到数据相关时,

退后本条指令的分析,直至所需要的数据写入到相关的存储单元中。另一种方法

是设置专用通路,即不必等待所需要的数据写入到相关的存储单元中,而是经专

门设置的数据通路读取所需要的数据。

4.3.1 指令相关

如果一个指令的内容取决于前一个指令执行的结果,可以产生相关的指令。

之所以会有相关的指令,关键是由于冯诺伊曼型机器指令允许修改的。如果规定

在程序运行过程中不允许修改的指令,不会出现相关的指令。此外,没有修改指

令也带来了重要的好处是可以实现的程序是折返和程序的递归调用。然而,为了

满足需要的程序设计的灵活性,有时需要在运行过程中的修改指令,可以通过设

置“执行”的指令来解决。”执行“370机指示提供一个命令。由於指令改为“执

行”操作的指令格式,指令相关变成几个相关的,那么根据统一编号与处理。

4.3.2 主存空间操作数相关

由于操作数可能存放于主存,也可能存放在寄存器中,因此数相关可以分为

主存空间操作数相关合通用寄存器组相关。

一些内存空间是相邻的指令要求出现在同一单位第一次到主存储器写入和读

出的协会。如果前面的“执行”和“分析”背后的相邻的指示,在时间上重叠,

将使“分析”的指令后,读取的操作不需要的程序指令执行完成之前,应该写的

结果,从而导致错误。这种情况下避免错误,只有回到下一条指令的“分析”读

操作。

为推动阅读后,常用的方法是通过控制读,写几个安排不同的访问优先解决。

因为中央处理器和一个以上的通道可以直接访问主内存,中央处理器访问可能被

预取指令,读取或写入,信道接入可以读,写数据,以控制通道,通道状态字。

这些访问请求,如果发出的同时,会有冲突,因此需要由锁存控制根据预先确定

的优先队列处理。只要写作水平高于阅读水平的反应,对自然的解决这个主内存

空间相关的数。

4.3.3 通用寄存器组相关

在寄存器-寄存器型(RR型)指令和寄存器-存储器型(RS)型指令的执行过

程中可能发生通用寄存器组数相关。看下面两条指令:

k: OP

R

1

,

A

2

R

1

= (

R

1

) OP (

A

2

)

K+1: OP

R

1

R

2

R

1

= (

R

1

) OP (

R

2

)

如果发生:

R

1

(k)R

1

(k1)

R

1

数相关。如果发生:

R

1

(k)R

2

(k1)

R

2

数相关。

发生通用寄存器数相关的情况与寄存器本身的结构合所采用的控制时序等也

有关系。解决通用寄存器数相关主要有以下几种方法:

1.

如果通用寄存器所使用的触发,但也在通用寄存器算术单元之间建立直接

数据路径,即不设置缓冲的注册或锁存器,不是通用寄存器数据的相关性。由于

触发器允许在同一节奏之间的循环移位寄存器。在这种情况下,不需要分析周期,

在节奏可以完成从通用寄存器的选择分别读取操作等操作,操作数的算术单元完

成操作,并将结果写回寄存器。

如果构成通用寄存器的不是D触发器,或者在通用寄存器到运算器之间设有

缓冲寄存器或者锁存器,则会发生寄存器数相关。

2.将分析指令推后一个周期执行。此方法跟前面处理主存空间数相关一样,

完全可以解决问题。

3.将分析指令推后一个节拍。这种方法跟方法2相似,只是分的更细了。与

方法2相比较,此方法在控制上稍嫌复杂,但是在速度上却要快一些。

4.设置“相关专用通路”。

在推动“分析”和“设置专用道”是解决了流水线处理2种基本方法。为减

少的速度,成本的硬件设备,基本不增加。后者是增加硬件成本和维修设备,流

水线效率。在流水线的设计过程,权衡之间运行速度和价格等因素,选择适当的

方法。

4.4 控制相关

相关的数据,控制将产生更大的性能损失。控制程序执行的方向可能造成的

相对变化,有时,我们也被称为全球相关。程序的执行可能改变方向的无条件转

移指令,一般条件转移,转移,复杂条件,中断子程序调用。这里有一些常用的

处理方法。

4.4.1 猜测法

设有条件转移指i,其两个分支分别为i和p,若转移成功时按原来的顺序从i

接着往下执行;若转移成功是则转向p执行。流水方式是同时解释多条指令,因

此,当指令i进入流水线,后面进i+1还是进p,只有等条件码建立才能知道,而

这一般要等这条条件转移指令快流出流水线时才行。如果在此期间让i后的指令

都等着,流水线就会“断流”,性能急剧下降。这种时候,绝大多数机器都采用

猜测法来解决这一问题。

所以,猜想法选择哪支比较好?如果两家分支概率接近,应保持原来的顺序,

继续执行我+ 1,因为这些指令预取指令缓冲区,可以迅速清除从指令缓冲区,进

入流水线不等待。如果你选择的成功转让的分支,该命令是不可能在缓冲区的指

令,这将需要很长的时间去,实际上停止线。

预测方法,应能保证预测错误恢复分支点原来的网站,通常有三种方式。一

个是在指令解码,好操作,转让条件代码之前出现的任何操作;一个是让他做完

手术,但不返回结果;另一个是让它和正常情况下,不分青红皂白地解释,只要

有可能破坏的原始状态是后备缓冲区储存期,一旦猜错了后备缓冲区的内容恢复

分支点。早期前用2种方法。现在,随着价格,体积,设备技术的进步,一般采

用第三种方法来确保效率。

为了在猜错时能尽快回复到原分支点,转入另一分支,在沿猜测路径向前流

动的同时,还可以由存贮器预取转移成功分支的头几条指令放在转移目标指令缓

冲器中。以便在猜错时,不必从访存取p开始,减少了流水线的等待时间。

4.4.2 加快和提前形成条件码

尽快、尽早获得条件码以便提前知道流向哪个分支,是会有利于流水机器简

化对转移的处理的。这可以从两方面采取措施。

一是加快质疑教学内部条件代码的形成,从指令执行前结束,形成反应结果的操作条件码。

例如,结果是积极的,消极的和无条件的代码可以在手术前形成。amdahl470v / 6英寸按照

这个思路,在流水线的操作输入装置设置运气,几乎可以确定其条件指令代码,以便具体操

作可操作的结果状态代码的指令发送到分析组件。

另一方面是在一个程序预先形成的条件代码,这是特别适合回收计划在判断

是否循环继续,转让的情况。例如,FOR TRAN做周期,执行循环终端语句,总是

对循环控制数减1,如果降低的结果for0out的回路,或继续循环身体的一部分,

这是通常使用的1和2等于零的条件转移指令的实现。为了使等于零的条件转移

指令的条件代码可以形成,可以减少to1of事前指示和不相关的其他指令之前,

甚至在推进到循环开始。

4.4.3 采取转移延迟

这是一个软件方法静态指令调度技术。没有额外的硬件,在编译目标教学计划,

将转移指令和前面不相关的一个或多个指令交换位置,让成功转移一直延迟到一

个或一个以上的指令执行后。这样,可以使转移造成的性能损失降低到0。

4.4.4 加快短循环程序的处理

一个小於长度的指令缓冲区容量可以短期循环程序整个一次性到指令缓冲

区,并暂停预取指令执行周期,避免指令预取指令缓冲区循环指令执行被开发,

可以减少内存存取重复取号;但因为循环分支概率高,所以退出循环结束的条件

转移指令不断猜测循环分支,由于减少了条件分支线断线造成机会。

有些机器也要执行,让预取指令都在正常使用的指令缓冲区,转移到目标指

令缓冲区。在检测周期,可以转移到指令缓冲区的内容作为短周期控制程序,消

除了第一个周期,再从主内存和短周期中的程序指令操作的开销。有些机器允许

的指令缓冲寄存器连接使用,允许更大的循环程序也可以加速处理。

第五章 中断处理与流水线调度

中断处理和非线性流水线及多功能流水线调度问题也是设计指令流水线时非

常值得注意的两个大问题,在本章,我们将对这两大问题进行初步的研究。

5.1 中断处理

中断导致线路断开。然而,它的概率比条件的概率要低得多,这也是一个随

机事件。因此,机加工中断是如何处理现场的保护和断点恢复,而不是如何缩短

线路断开时间。

在执行指令在我中断,应在执行结束指令指示我,我+1已经没有开始执行的

地方,但水是在同一时间机器解释多个指令,指示我,我+ + 1„可能已进入流水

线和部分解释。一个流,其中的一些指令流的命令我吧。

早期水机,如360/ 91,为简化中断处理,采用不精确断点”方法。无论是否

命令我,线路中断,不再允许后续指令尚未进入进入,但已在流水线不断流动的

所有指令执行,然后转移到中断处理程序。在这方面,断点当然不会是我,可能

背后我+ 1,2 + 1„断点是不确定的。只有当指令在第一段中断时,我的反应,

断点是准确的。

这种“不精确断点”方法不好的编程和程序的调试。后来,水机多采用“精

确断点”的方法,如amdahl470/ 6。无论我在教学中,响应中断,中断处理程序

领域所有相应的我,我到流水线指令的原始场均可以恢复。这种方法需要许多支

持注册,保证线路的每个指令能够恢复原来的领域。如前所述,这些寄存器也”

指令重试”,不需要另外设置。

5.2 流水线调度

由于线性线在每个任务的执行,每个通过只有一个,所以每个镜头都是一个

新的任务,这些任务的线,没有竞争相同的水段。非线性流水线是不同的。因为

部分是安排之间的反馈回路,一个任务在运行过程中,可反复通过同一段或在一

定的时期。所以,如果每一次的线到一个新的任务,将产生几个任务竞争同一时

期使用的功能冲突现象。为了不冲突,有适当的间隔数目的节拍,以进入下一个

任务。什么间隔几个电影和进入下一个任务,既不能正常使用的部分的冲突,而

且还可以使线有一个较高的吞吐量和效率,这是流水线调度问题需要解决。

为了能对流水线的任务进行优化调度和控制,1971年 son 提出使

用一个二维的预约表。(如图5.1)

图5.1 预约表示例

根据预定表可以很容易地得出一个任务使用所需的间隔数目的节拍。为例一

节分隔的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)的。因此,

根据前面的一个向量的冲突和冲突后,向量。

按照这样的思路,以各种可能的拍数流入新的任务,从而又可以产生新的冲

突向量,一直进行到不再产生不同的冲突向量为止。由此可以画出用冲突向量表

示的流水线状态转移图。本例的流水线状态转移图如图(5.2)

图5.2 状态转移图

因此,只要按流水线状态图中由初始状态出发,能构成一种间隔拍数呈周期

性重复的方案来进行流水线调度,都不会发生功能段的使用冲突。然而,我们还

希望能寻找一种最佳的调度方案,以便使流水线的吞吐率最高。显然,只需要分

别计算出每种调度方案的平均间隔拍数,或者称之为平均启动距离,找出其中最

小者,就是流水线各后续任务流入流水线所用间隔的最佳调度。本例的几种调度

方案如图(5.3)

简单循环

(1,7)

(3,7)

(5,7)

(3,5,7)

(5,3,7)

(3,5)

(5)

(7)

图5.3 调度方案

平均启动距离

4

5

6

5

5

4

5

7

以上只是结合单功能流水线讨论了有关流水线调度的基本思想和方法。在此

基础上不难解决多个功能流水线的调度。对于一个多功能流水线,只需要将对应

每种功能的预约表都重叠在一起,组成一张新的预约表,然后在按照此方法进行

调度即可。

第六章 总结与展望

流水线技术是一项可以应用于任何ISA的微体系结构技术。RISC体系结构的

特性确定确实能够使流水线的设计更加容易。流水线技术已经被证明是提高处理

器性能的一项十分强大的技术,并且在流水线深度方面仍然有很多上升空间。不

难想象,以后还会有更深的流水线出现。

流水线性能的主要障碍是指令相关引起的流水线停顿。其中,控制相关引起

的分支开销是最主要的部分。随着流水线深度的增加,分支开销也会增大并成为

主要的挑战。另外,流水线处理器设计将传统CPU设计中的数据通路设计和控制

通路设计放到了一起进行处理,它们可以被合并到一条流水线来实现。

CPU中指令流水线技术是现代计算机中提高处理机运行速度的关键性技术,也

是超标量流水线技术与超流水线技术的基础。在目前,国内计算机硬件技术,特

别是CPU的研究起步较晚,技术相对比较落后。在这种形势下进行CPU中指令流

水线技术进行学习研究,其意义是及其重要的,同时困难和挑战也是比较大的。

对我来说,这是一个非常好学习的过程,很多的基本知识,基础理论都让我受益

匪浅。无论在以后的工作或者是学习中,这些宝贵的经验都将一直伴随着我。虽

然我们国家目前在此领域的研究还比较落后,但是我相信以后会有更多的人投入

进来,我们的资料和技术也会一天天的发展起来,最后达到甚至超过国际先进水

平也未可知。

在此次毕业设计过程中,学习资料比较少,内容比较浅,经过去图书室,上

网等多种途径基本解决了这一问题。在此过程中,我经历了困难,也享受了知识

所带来的乐趣。

致谢

在此,我要感谢我的同学和老师们。在我面对没有资料,没有例子的情况下,

我的指导老师杨全锁老师耐心指导我怎么去做;我的同学们也都帮着我找一些资

料,感谢他们对我的帮助。

参考文献

[1] 李学干.计算机系统结构(第三版).西安:西安电子科技大学出版社,2000年。

[2] 王闵.计算机组成原理.北京:电子工业出版社,2005年。

[3] 郑纬民,汤志忠.计算机系统结构(第二版).北京:清华大学出版社。

[4] 现代处理器的核心技术与基本结构。

[5] 金兰等.并行处理计算机结构.北京:国防工业出版社,1982年。

[6] Tannenbaun A S. Structured Computer Organization. Holland:

Prentice-Hall,1984.

[7] John Paul Shen ,Mikko i (著),邓宇,王蕾等译.现代处理器设计——

超标量处理器基础,2004年。

[8] 邹逢兴,陈立刚.计算机硬件技术基础(第二版).北京:高等教育出版社,2005年。

[9] 张昆藏.奔腾Ⅱ/Ⅲ处理器系统结构.北京:电子工业出版社,2000年。

[10] 邓洪涛等.全面破解计算机硬件.西安:西安电子科学技术大学出版社,2003。


本文标签: 流水线 指令 执行 设计 相关