0%

计算机组成原理

计算机系统概论

img

计算机的基本组成

冯诺依曼计算机的特点

(1)计算机由运算器,存储器,控制器,输入设备,输出设备五大部件组成。

(2)指令和数据以同等地位存放于存储器内,可按地址访问。

(3)指令和数据均用二进制数表示。

(4)指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。

(5)指令在存储器内顺序存放。

(6)机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。

计算机的硬件框图

img

通常把运算器与控制器统称为中央处理器,即CPU。把输入/输出设备成为I/O设备,也可称为外部设备。

CPU与主存储器合起来称为主存。

img

控制元(CU)用来解释存储器中的指令,并发出各种操作命令来执行指令。

计算机硬件的主要技术指标

机器字长;

存储容量:MAR位数反映的存储单元的个数,MDR的位数反映了存储字长;

运算速度:MIPS(百万条指令每秒),CPI(执行一条指令所需的时钟周期);

附加

指令字长=存储字长=机器字长(三者可以相等也可以不等)

1
2
3
4
机器字长:CPU一次能处理的二进制数据的最大位数。通常与CPU内寄存器的位数有关。栗子:windows 64位/32位,这里的64位和32位指的就是该操作系统的机器字长。
存储字长指一个存储单元可存放的二进制代码的位数,即存储器中的MDR的位数。
指令字长是计算机指令字的位数,指令字是指用二进制表示的指令,
数据字长指的是计算机数据字的位数,数据字是指用二进制表示的数据

用以指定待执行指令所在地址的是程序计数器

磁盘驱动器具有输入及输出功能

完整的计算机系统应该包括配套的硬件设备和软件系统

计算机与日常使用的袖珍计算器的本质区别在于自动化程度的高低。

有些计算机将一部分软件永恒地存于只读存储器中,称为固件

计算机系统软件包括:

1
2
3
4
5
6
标准程序库,如监控程序,用于监视计算机工作
服务型程序,如连接、编辑、调试、诊断
语言处理程序,如编译程序、汇编程序、解释程序,将各种语言转换成机器语言
操作系统,用来控制和管理计算机
数据库管理系统
各种计算机网络软件

存储元件(又称存储基元、存储元)用来存放一位二进制信息。存储单元由若干个存储元件组成,能存放多位二进制信息。每个存储单元中二进制代码的组合即为存储字,它可代表数值、指令、地址或逻辑。每个存储单元中二进制代码的位数就是存储字长。

计算机系统量化分析基础

计算机体系结构的概念

计算机体系结构概念的演变

阿姆道尔首次明确计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性。

对于通用寄存器型机器,这些属性主要是指:

1
2
3
4
5
6
7
8
9
10
(1)数据表示:硬件能直接辨认和处理的数据类型
(2)寻址规则:最小寻址单元、寻址方式及其表示
(3)寄存器定义:寄存器的定义、数量和使用方式
(4)指令系统:机器指令的操作类型和格式、指令间的排序和控制机构等
(5)中断系统:中断的类型和中断响应硬件的功能等
(6)机器工作状态的定义和切换:如管态和目态等
(7)存储系统:程序员可用的最大存储容量
(8)信息保护:信息保护方式和硬件的支持
(9)I/O结构:I/O寻址方式、数据传送的方式等

计算机体系结构、组成和实现

体系结构包括以下三个方面

1
2
3
(1)计算机指令系统
(2)计算机组成
(3)计算机硬件实现

系列机

1
一种指令集结构可以有多种组成。同样,一种组成可以有多种物理实现。系列机就是指在一个厂家生产的具有相同的指令集结构,但具有不同组成和实现的一系列不同型号的机器。

兼容性

1
2
向上(下)兼容指的是按某档机器编制的程序,不加修改的就能运行于比它高(低)档的机器
向前(后)兼容指的是按某个时期投入市场的某种型号机器编制的程序,不加修改地就能运行于在它之前(后)投入市场的机器

image-20211214131042867

计算机体系结构的发展

并行性

1
计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。

从执行程序的角度来看,并行性等级从低到高可分为

1
2
3
4
5
6
7
指令内部并行:单条指令中各微操作之间的并行。
指令级并行:并行执行两条或两条以上的指令。
线程级并行:并行执行两个或两个以上的线程。
通常是以一个进程内派生的多个线程为调度单位。
任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段), 以子程序或进程为调度单元。
作业或程序级并行:并行执行两个或两个以上的作业或程序。

从处理数据的角度来看,并行等级从低到高可分为:

1
2
3
4
5
6
7
8
9
10
11
字串位串:每次只对一个字的一位进行处理。
最基本的串行处理方式,不存在并行性。
字串位并:同时对一个字的全部位进行处理,不
同字之间是串行的。
开始出现并行性。
字并位串:同时对许多字的同一位(称为位片)
进行处理。
具有较高的并行性。
全并行:同时对许多字的全部位或部分位进行处理。
最高一级的并行。

按照指令和数据的关系,把计算机系统的结构分为4类。Flynn分类法

1
2
3
4
5
6
7
8
单指令流单数据流SISD
(Single Instruction stream Single Data stream)
单指令流多数据流SIMD
(Single Instruction stream Multiple Data stream)
多指令流单数据流MISD
(Multiple Instruction stream Single Data stream)
多指令流多数据流MIMD
(Multiple Instruction stream Multiple Data stream)

提高并行性的技术途径

1
2
3
4
5
6
(1)时间重叠
引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
(2)资源重复
引入空间因素,以数量取胜。通过重复设置硬件资源,大幅度地提高计算机系统的性能。
(3)资源共享
这是一种软件方法,它使多个任务按一定时间顺序轮流使用 同一套硬件设备。

耦合度 反映多机系统中各机器之间物理连接的紧密程度和交互作用能力的强弱。

量化设计的基本原则:

1
2
3
4
5
6
7
8
9
10
11
1.大概率事件优先原则
追求全局的最优结果

2.Amdahl定律
系统性能加速比,受限于该部件在系统中所占的重要性
可以定量计算

3.程序的局部性原理
程序执行时所访问存储器在时-空上是相对地簇聚
这种簇聚包括指令和数据两部分

具有高性能价格比的计算机系统是一个带宽平衡的系统,而不是看它使用的某些部件的性能

CPU性能公式

1
2
3
4
5
6
7
8
9
10
11
12
执行一个程序所需的CPU时间
CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
其中:时钟周期时间是系统时钟频率的倒数。
每条指令执行的平均时钟周期数CPI
CPI = 执行程序所需的时钟周期数/IC
IC:所执行的指令条数
程序执行的CPU时间可以写成
CPU时间 = IC ×CPI ×时钟周期时间
时钟周期时间:取决于硬件实现技术和计算机组成
CPI:取决于计算机组成和指令系统的结构;
IC:取决于指令系统的结构和编译技术

image-20211214135037288

总线

总线的基本概念

总线是连接多个部件的信息传输线,是各部件共享的传输介质。在某一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接受相同的信息。

image-20211214142344175

M总线:存储总线

I/O总线:输入输出总线

image-20211214142357607

image-20211214142444806

总线的分类

片内总线

芯片内部 的总线

系统总线

计算机各部件之间 的信息传输线

数据总线
1
2
用来传输各功能部件之间的数据信息
双向 与机器字长、存储字长有关
地址总线
1
2
用来指出数据总线上的源数据或目的数据在主存单元的地址或I/O设备的地址。
单向 与存储地址、 I/O地址有关
控制总线
1
2
发出各种控制信号的传输线。
中断请求,总线请求,存储器读,存储器写,总线允许,中断确认等

通信总线

用于 计算机系统之间 或 计算机系统与其他系统(如控制仪表、移动通信等)之间的通信

有串行通信和并行通信两种。

总线特性及性能指标

总线特性

image-20211214143223473

总线的性能指标

image-20211214143356321

总线结构

单总线结构

image-20211214143726811

双总线结构

image-20211214143750521

三总线结构

image-20211214143816307

主存总线用于CPU与主存之间的传输;I/O总线供CPU与各类I/O设备之间传递信息;DMA总线用于高速I/O设备(磁盘,磁带等)与主存之间直接交换信息。

另一种三总线结构

image-20211214144022838

Cache可通过系统总线与主存传递信息;且I/O设备与主存之间的传输也不必通过CPU,还有一条扩展总线。

SCSI:小型计算机接口;MODEM:调制解调器

四总线结构

image-20211214144314504

高速总线上挂了一些告诉的I/O设备。

总线控制

总线判优控制

总线上所连接的各类设备,按其对总线有无控制功能可分为主设备(模块)和从设备(模块)两种。

image-20211214144718951

集中式判优控制将控制逻辑集中在一处,如CPU;后者将控制逻辑分散在与总线连接的各个部件或设备上。

image-20211214145237060

1
特点:只需要很少几根线就能按一定优先次序实现总线控制,并且很容易扩展设备,但对电路故障很敏感,且优先级别低的设备很难获得请求

image-20211214145747620

1
对电路故障不如链式查询方法敏感,但增加了控制线(设备地址)数,控制也较复杂。

image-20211214145903975

1
响应速度快,优先次序控制灵活,但控制线数量多,总线控制更复杂。

总线通信控制

目的:解决通信双方 协调配合 问题

总线传输周期(一次总线操作的时间)

1
2
3
4
申请分配阶段 主模块申请,总线仲裁决定
寻址阶段 模块向从模块 给出地址 和 命令
传数阶段 主模块和从模块 交换数据
结束阶段 主模块 撤消有关信息

总线通信的四种方式

1
2
3
4
同步通信 由统一时标 控制数据传送
异步通信 采用 应答方式 ,没有公共时钟标准
半同步通信 同步,异步结合
分离式通信 充分挖掘系统总线每个瞬间的潜力

同步式

image-20211214150834077

image-20211214150845552

异步

应答方式又分为三种

1
2
3
4
5
不互锁方式:
主模块发出请求后,不必等待接到从模块的回答信号,而是经过一段时间,确认从模块已收到请求信号后,便撤销其请求信号;从模块接到请求信号后,在条件允许时发出回答信号,并且经过一段时间(这段时间对不同设备不同)确认主模块已收到回答信号后,自动撤销回答信号。eg:CPU向主存写信息
半互锁方式:
主模块发出请求后,不许接到从模块的回答后再撤销;而从模块则不必,一方互锁,一方不互锁
全互锁方式:双方互锁

异步串行通信的数据传送速率用波特率来衡量。波特率是指单位时间内传送二进制数据的位数,单位用bps(位/s),记作波特。

同步传送速度高于异步传送。

半同步

1
2
同步   发送方 用系统 时钟前沿 发信号,接收方 用系统 时钟后沿 判断、识别
异步 允许不同速度的模块和谐工作,增加一条 “等待”响应信号

image-20211214152257639

适用于系统工作速度不高但又包含了由许多工作速度差异较大的各类设备组成的简单系统。半同步通信比异步通信简单,可靠性高。缺点是对系统时钟频率不能要求太高,故从整体看,系统工作速度还不是很高。

image-20211214152647243

分离式通信

1
2
3
一个总线传输周期
子周期1 主模块 申请 占用总线,使用完后即 放弃总线 的使用权
子周期2 从模块 申请 占用总线,将各种信息送至总线上

特点

1
2
3
4
5
1. 各模块有权申请占用总线
2. 采用同步方式通信,不等对方回答
3. 各模块准备数据时,不占用总线
4. 总线被占用时,无空闲
充分提高了总线的有效占用

附加

影响总线带宽的因素:总线宽度,传输距离,总线发送和接受电路工作频率的限制以及数据传输形式。

PCI总线是一个与处理器时钟频率无关的告诉外部总线。

AGP总线是显卡专用的局部总线。

计算机之间的远距离通信除了直接由网卡经网线传输外,还可用RS-232总线通过载波电话线传输。

总线管理主要包括判优控制和通信控制。

在高档PC机中,系统总线主要连接CPU和存储器;PCI总线主要连接多媒体卡,高速局域网适配器,高性能图形版等高速部件;ISA或EISA总线连接图文传真机、调制解调器,打印机等低速部件。系统总线和PCI通过PCI桥路相连,PCI总线又通过标准总线控制器与IS和EIS总线相连。

指令系统

机器指令

每一趟机器语言的语句称为机器指令,又将全部机器指令的集合称为机器的指令系统。

指令由地址码和操作码构成。操作码可固定可不固定。

1
扩展操作码技术:操作码的位数随地址数的减少而增加

四地址指令:image-20211215114537872

需进行四次访存,取指令一次,取两个操作数两次,存放结果一次

三地址指令:image-20211215114740842

下条指令地址隐藏在程序计数器PC中,同样也需要进行四次访存。

二地址指令:image-20211215114937575

一地址指令:image-20211215115213639

零地址指令:无地址码

早起计算机指令字长、机器字长和存储字长均相等。

操作数类型和操作类型

操作类型

1
2
3
4
5
6
数据传送;
算术逻辑操作;
移位;
转移;
输入输出;
其他:等待,停机,空等指令

寻址方式

分为数据寻址与指令寻址

指令寻址

分为顺序寻址和跳跃寻址。

数据寻址

指令地址码字段称为形式地址,记为A;而操作数的真实地址称为有效地址,记为EA。

立即寻址

1
2
3
形式地址A就是操作数
指令执行阶段不访存
A 的位数限制了立即数的范围

直接寻址

1
2
3
4
A=EA
执行阶段访问一次存储器
A 的位数决定了该指令操作数的寻址范围
操作数的地址不易修改(必须修改A)

隐含寻址

1
操作数地址隐含在操作码中

间接寻址

1
2
3
有效地址由形式地址间接提供
会多次访存
可扩大寻址范围,便于编制程序

寄存器寻址

1
2
3
4
EA=R_i
有效地址即为寄存器编号
执行阶段不访存,只访问寄存器,执行速度快
寄存器个数有限,可缩短指令字长

寄存器间接寻址

1
2
EA=(R_i)有效地址在寄存器中
操作数在存储器中,执行阶段访存

基址寻址

1
2
3
4
(1)采用专用寄存器作基址寄存器
EA = ( BR ) + A
BR 为基址寄存器
可扩大寻址范围,有利于多道程序,BR内容由操作系统或管理程序确定,在程序的执行过程中BR内容不变,形式地址A可变
1
2
3
4
(2) 采用通用寄存器作基址寄存器 R0 作基址寄存器
由用户指定哪个通用寄存器作为基址寄存器
基址寄存器的内容由操作系统确定
在程序的执行过程中 R0 内容不变,形式地址 A 可变

变址寻址

1
2
3
EA = ( IX ) +A IX 为变址寄存器(专用)
通用寄存器也可以作为变址寄存器
可扩大寻址范围,IX的内容由用户给定,在程序的执行过程中IX可变,形式地址A不变,便于处理数组问题

相对寻址

1
2
3
EA = ( PC ) + A
A 是相对于当前指令的位移量
A的位数决定操作数的寻址范围,程序浮动,广泛用于转移指令

堆栈寻址

多个寄存器可构成硬堆栈,指定的存储空间构成软堆栈。

image-20211215125935774

指令系统结构的分类

CPU中用来存储操作数的存储单元主要有

1
堆栈,累加器,一组寄存器

image-20211215131719796

寄存器-寄存器型

1
2
优点:指令字长固定,指令结构简洁,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。
缺点:与指令中含存储器操作数的指令系统结构相比,指令条数多,目标代码不够紧凑,因而程序占用的空间比较大。

寄存器-存储器型

1
2
优点:可以在ALU指令中直接对存储器操作数进行引用,而不必先用load指令进行加载,容易对指令进行编码,目标代码比较紧凑。
缺点:由于有一个操作数的内容将被破坏,所以指令中的两个操作数不对称。在一条指令中同时对寄存器操作数和存储器操作数进行编码,有可能限制指令所能够表示的寄存器个数。指令的执行时钟周期因操作数的来源(寄存器或存储器)的不同而差别比较大。

存储器-存储器型

1
2
优点:目标代码最紧凑,不需要设置存储器来保存变量。
缺点:指令字长变换很大,特别是3个操作数指令。而且每条指令完成的工作也差别很大。对存储器的频率访问会使存储器成为瓶颈。这种类型的指令系统现在已经不用了。

指令系统的设计和优化

基本原则

包括指令的功能设计和指令格式的设计

在确定哪些基本功能用硬件来实现时,主要考虑3个因素:速度,成本,灵活性

1
2
硬件实现:速度快,成本高。灵活性差
软件实现:速度慢,价格便宜,灵活性好

对指令系统的基本要求

1
2
3
4
5
6
完整性,规整性,正交性,高效率,兼容性
完整性:在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令系统所提供的指令足够使用。
规整性:主要包括对称性和均匀性。
正交性:在指令中各个不同含义的字段,如操作类型、数据类型、寻址方式字段等,在编码时应互不相关、相互独立。
高效率:指指令的执行速度快、使用频度高。
兼容性:主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。

控制指令

image-20211215133256789

1
2
“调用者保存”(caller saving)方法:如果采用调用者保存策略,那么在一个调用者调用别的过程时,必须保存调用者所要保存的寄存器,以备调用结束返回后,能够再次访问调用者。
“被调用者保存”(callee saving)方法:如果采用被调用者保存策略,那么被调用的过程必须保存它要用的寄存器,保证不会破坏过程调用者的程序执行环境,并在过程调用结束返回时,恢复这些寄存器的内容。

指令操作码的优化

等长扩展码

1
便于分级译码

定长操作码

1
2
3
固定长度的操作码:所有指令的操作码都是同一的长度。
保证操作码的译码速度、减少译码的复杂度。
以程序的存储空间为代价来换取硬件实现上的好处。

指令系统的发展和改进

一个方向是强化指令功能,实现软件功能向硬件功能转移,基于这种指令集结构而设计实现的计算机系统称为复杂指令集计算机(CISC)。
八十年代发展起来的精简指令集计算机(RISC),其目的是尽可能地降低指令集结构的复杂性,以达到简化实现,提高性能的目的。

面向目标程序增强指令功能
提高运算型指令功能;
提高传送指令功能;
增加程序控制指令功能。
面向高级语言和编译程序改进指令系统
增加对高级语言和编译系统支持的指令功能;
高级语言计算机指令系统。

附加

img

零操作数来自栈顶和次栈顶。

img

寄存器间址有利于编制循坏程序。

在非立即寻址的一地址格式指令中,其中一个操作数通过指令的地址字段安排在寄存器或存储器中。

一个较完善的指令系统应该包括数据传送,算术逻辑运算,程序控制,输入输出,其他。

变址寻址只要用于处理数组程序;基址寻址支持多道程序的应用。

RR型指令,执行指令时不访问存储器。

RS型指令,执行指令时需访问存储器,且通过变址运算,时间最长。

CPU设计与实现

CPU的结构

CPU的寄存器

用户可见寄存器

1
2
3
4
5
6
7
(1) 通用寄存器
存放操作数 可作 某种寻址方式所需的 专用寄存器
(2) 数据寄存器
存放操作数(满足各种数据类型) 两个寄存器拼接存放双倍字长数据
(3) 地址寄存器
存放地址,其位数应满足最大的地址范围 用于特殊的寻址方式 段基值 栈指针
(4) 条件码寄存器 存放条件码,可作程序分支的依据 如 正、负、零、溢出、进位等

控制寄存器

1
2
其中 MAR、MDR、IR            用户不可见
PC 用户可见

状态寄存器

1
PSW寄存器 存放程序状态字

运算方法与ALU

算数移位运算

image-20211216135626230

有符号数移位称为算数移位,无符号数移位称为逻辑移位。

单符号位判断溢出与双符号位判断溢出。

image-20211216142115187

image-20211216142130087

浮点四则运算

浮点加减法

1
2
3
对阶:求阶差,小阶向大阶对其
尾数求和

image-20211216143446776

image-20211216143528988

image-20211216143806564

image-20211216144000786

多级时序系统

指令周期

取出并执行一条指令所需的全部时间

image-20211216144414073

微指令分析

1
2
3
4
取指阶段:
PC->MAR 1->R (MAR)->MDR MDR->IR OP(IR)->CU (PC)+1->PC
间址周期:

image-20211216145209138

image-20211216145229814

image-20211216145259482

image-20211216145315443

在机器周期所含时钟周期数 相同 的前提下,
两机 平均指令执行速度之比 等于 两机主频之比

一个指令周期包含若干个机器周期

一个机器周期包含若干个时钟周期

附加

流水线

概述

流水线特点

1
2
3
4
5
流水过程由多个相关的子过程组成,这些子过程称为流水线的“级”或“段”。段的数目称为流水线的“深度”。
每个子过程由专用的功能段实现。
各功能段的时间应基本相等,通常为1个时钟周期(1拍)。
流水线需要经过一定的通过时间才能稳定。
流水技术适合于大量重复的时序过程。

分类

1
2
3
4
5
6
7
单功能流水线和多功能流水线
按流水线所完成的功能分类
单功能流水线,是指只能完成一种固定功能的流水线。
例如:功能单元流水线
多功能流水线,是指各段可以进行不同的连接,从而完成不同的功能。
例如:TI ASC多功能流水线

1
2
3
4
5
6
7
静态流水线和动态流水线
按同一时间内流水段的连接方式划分
静态流水线,是指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
例如:TI ASC的流水线
适合于处理一串相同的运算操作
动态流水线,是指在同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算,会使流水线的控制变得很复杂

1
2
3
4
5
6
部件级、处理机级及处理机间流水线 
按流水的级别划分
部件级流水线,又叫运算操作流水线,是把处理机的算术逻辑部件分段,使得各种数据类型的操作能够进行流水。
处理机级流水线,又叫指令流水线,是把解释指令的过程按照流水方式处理。
处理机间流水线,又叫宏流水线,是由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。

1
2
3
4
5
6
7
标量流水处理机和向量流水处理机
按照数据表示来进行分类
标量流水处理机,是指处理机不具有向量数据表示,仅对标量数据进行流水处理。
例如:IBM 360/91,Amdahl 470V/6等
向量流水处理机,是指处理机具有向量数据表示,并通过向量指令对向量的各元素进行处理。
例如:TI ASC、STAR-100、CYBER-205、CRAY-1、YH-1等

1
2
3
4
5
6
7
线性流水线和非线性流水线
按照是否有反馈回路来进行分类
线性流水线是指流水线的各段串行连接,没有反馈回路。
非线性流水线是指流水线中除有串行连接的通路外,还有反馈回路。
存在流水线调度问题。
确定什么时候向流水线引进新的输入,从而使新输入的数据和先前操作的反馈数据在流水线中不产生冲突,此即所谓流水线调度问题。

基本流水线

image-20211219111100347

image-20211219111939127

image-20211219111951893

性能分析

吞吐率

1
2
3
4
吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量。
最大吞吐率TPmax是指流水线在达到稳定状态后所得到的吞吐率。
设流水线由m段组成,完成n个任务的吞吐率称为实际吞吐率,记作TP。

1
2
3
4
最大吞吐率取决于流水线中最慢一段所需的时间,该段成为流水线的瓶颈
消除瓶颈的方法
细分瓶颈段
重复设置瓶颈段

image-20211219123308211

加速比

1
流水线速度与等功能的非流水线速度之比

效率

1
流水线的设备利用率

image-20211219123457264

效率是实际加速比S与最大加速比m之比。

当△t0不变时,流水线的效率与吞吐率呈正比。为提高效率而采取的措施,也有助于提高吞吐率。

1
2
3
4
5
6
7
流水线并不能减少(而且一般是增加)单条指令的执行时间,但能够提高吞吐率
增加流水线的深度可以提高流水线性能
流水线深度受限于流水线的延迟和额外开销
需要用高速锁存器作为流水线寄存器
Earle锁存器
指令之间存在的相关,产生了流水线的冲突,进而限制了流水线的性能

流水线冲突

流水线冲突是指相邻或相近的两条指令因存在某种关联,后一条指令不能在原先指定的时钟周期开始执行。

三种不同类型的冲突

1
2
3
结构冲突(Structural Hazard):当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求而发生的冲突。
数据冲突(Data Hazard):因一条指令需要用到前面指令的结果,而无法与产生结果的指令重叠执行时发生的冲突。
控制冲突(Control Hazard):当流水线遇到分支指令和其它会改变PC值的指令所引起的冲突。

导致结构冲突的常见原因:

1
2
功能部件不是全流水
重复设置的资源数量不足

避免结构冲突的方法:

1
2
3
所有功能单元完全流水化
设置足够多的硬件资源
但是,硬件代价很大!

有些设计方案允许结构冲突存在

1
2
降低成本
减少功能单元的延迟

数据冲突

1
2
产生原因:当指令在流水线中重叠执行时,流水线有可能改变指令读/写操作数的顺序,使之不同于它们在非流水实现时的顺序,这将导致数据冲突。
消除方法:向流水线中插入暂停周期
1
2
3
4
5
通过定向技术减少数据冲突带来的暂停
进一步推广:一个结果不仅可以从某一功能单元的输出定向到其自身的输入,而且还可以定向到其它功能单元的输入。 (举例)
在MIPS中,任何流水寄存器到任何功能单元的输入都可能需要定向路径,将形成复杂的旁路网络。
两条指令访问同一存储单元,也可能引起数据冲突,例如访问数据Cache失效时。

编译调度

1
编译器可以通过重新排列代码的顺序来消除这种暂停,这种技术就是“流水线调度”或“指令调度”
1
2
3
4
5
6
指令发射(Issue):指令从流水线的译码段进入执行段的过程称为指令发射。
检测数据冲突
ID段可以检测所有数据冲突
也可以在使用一个操作数的时钟周期的开始(EX和MEM段的开始)检测相关,并确定必需的定向
流水线相关硬件可以检测到的各种冲突情况

指令级并行

记分牌的性能受限于以下几个方面:

1
2
3
4
5
6
7
8
程序代码中可开发的并行性,即是否存在可以并行执行的不相关的指令。
记分牌的容量。
记分牌的容量决定了流水线能在多大范围内寻找不相关指令。流水线中可以同时容纳的指令数量称为指令窗口。
功能部件的数目和种类。
功能部件的总数决定了结构冲突的严重程度。
反相关和输出相关。
它们引起计分牌中更多的WAR和WAW冲突 。

Tomasulo算法的优点

1
2
3
4
5
6
分布式硬件冲突检测。
利用寄存器换名,彻底消除WAW和WAR这两种名相关
如果多个保留站等待同一个操作数,当操作数在CDB上广播时,他们可以同时获得所需的数据
对于存储器访问,动态存储器地址判别技术可解决RAW冲突(取操作数时判断)、WAR和WAW冲突(存操作数时判断)。
能够达到很高的性能。

缺点

1
2
3
4
5
高复杂性:需要大量硬件
存在瓶颈:单个公共数据总线(CDB)引发竞争
额外的CDB:在每个保留站上需要为每条CDB设置重复的硬件接口
为了保证正确的异常行为,对指令的执行有一个限制:一旦有一条分支指令还没有执行完,其后的指令是不允许进入执行段

分支预测

1
2
3
4
5
6
最简单的分支预测策略
BPB也被称为BHT(Branch History Table,BHT)
分支预测缓冲是一个小的存储器阵列
每个单元最小可以只有1位,记录最近一次分支是否成功的信息
预测位为1时,表示预测分支成功,并从目标位置开始取指令
在预测错误时,要作废已经预取和分析的指令,恢复现场,并从另一条分支路径重新取指令。