文章目录
计算机系统结构 -第5版-李学干
山大,本,闭卷考试:
划重点:
第一大题为概念题
,解释常用名词如SMP,MMP,LRU等等;占30分一般10个,一个3分
1问计算机体系结构,模拟、仿真,amodule定律
2各种数据表示:RISC,再定位等
3并行主存,中断系统,通道处理机,数组通道,数据宽度
4存储体系,页式管理,段式管理,LRU算法,页面失效概念,虚拟存储器,高速缓冲,透明性,概念,写回法,写直达法概念,内存的性能指标
5数据相关,动态、静态流水线;重叠原理;预留表,全局、局部相关,超标量、超长指令字,超流水线处理机
6向量流水处理机,链接技术,阵列处理机,互连函数,互联网络,各种单级网络,多级网络
7紧耦合、松耦合;静态优先级算法,等等4种算法;
第二大题简答题
5个,一个6分共30分
- 计算机层次结构;
- 》计算机组成,计算机系统结构,关系;
- amoudle定律;
- 并发性,同时性;
-
- 模拟与仿真的区别
-
- 数据表示与数据结构的关系
- RISC,CISC技术的特点,关系
-
存储体系相对应的几种算法
-
数据相关的处理方式及其对应的控制结构;
先行处理
超标量,超流水线,超长指令字关系
-
互联网络,左右谁连谁
-
紧耦合,多处理机多cache的一致性如何解决
三计算
4个计算题:
1,amdahl定律,计算加速比
2,操作码优化
3,内存优化,划分操作码和地址码,还有寻址
4,第三章通道处理机的流量设计
5,第四章各种替换算法的表,还有映射方式的图,要会画
6,第五章,重中之重;
给个流水线,求效率,吞吐率等等
给个预约表,找到最小循环,计算吞吐率,平均延迟
给几个指令,自己链接,计算时钟周期
X86机器数据存储是小端方式,字符串存储方式为大端方式
具体章节
1. 第一章 计算机系统结构基础及并行性的开发
1.1计算机系统的定量原理
1. *哈夫曼(********Huffman********)压缩原理*
2. Amdahl定律
• 假设T_0为改进前整个任务的执行时间
为改进前整个任务的执行时间,则改进后整个任务的执行时间为
• 改进后整个系统的加速比Sn
3. *CPU********性能公式*
- CPU的程序执行时间T_CPU
- 程序执行的总指令条数IC(Instruction Counter):取决于是指令集结构和编译技术
- 平均每条指令的时钟周期数CPI(Cycles Per Instruction):取决于计算机组成和指令集结构
- 时钟主频 f_c:取决于硬件实现技术和计算机组成
n种指令,每种指令的时钟周期数CPI_i,出现次数Ii
• 平均指令时钟周期数CPI
4. 访问的局部性原理
时间局部性:程序中近期被访问的信息项很可能马上将被再次访问。
空间局部性:指那些在访问地址上相邻近的信息项很可能会被一起访问。
1.3 计算机系统的评价标准
Fz为处理机的工作主频
CPI (Cycles Per Instruction)为每条指令所需的平均时钟周期数
IPC (Instruction Per Cycle)为每个时钟周期平均执行的指令条数
持续性能又称为实际性能,值往往是峰值性能的5%~3%
算数性能平均值 调和性能平均值
![img](https://i-blog.csdnimg.cn/blog_migrate/039dda529c73910fa4b9c27ac20ab661.jpeg)
几何性能平均值
1.4 计算机系统的发展
- 以运算器为中心,集中控制。
- 在存储器中,指令和数据同等对待。指令和数据一样可以进行运算,即由指令组成的程序是可以修改的。
- 存储器是按地址访问、按顺序线性编址的一维结构,每个单元的位数固定
- 指令的执行是顺序的。
- 指令由操作码和地址码组成。
- 指令和数据均以二进制编码表示,采用二进制运算。
- 要求软件具有可兼容性(或可移植性:
方法一:系列机方法p18
方法二:模拟和仿真P20
解释程序所存的位置不同:仿真存在控制寄存器,模拟存在主存中
模拟适用于运行时间不长、使用次数不多的程序
仿真提高速度,但难以仿真存储系统、I/O系统,只能适用于系统结构差异不大的机器间;
方法三:统一高级语言P17
2. 第二章 数据表示,寻址方式和指令系统
2.1 数据表示
2.1.1 数据表示与数据类型原则:
-
• 缩短程序的运行时间
-
• 减少CPU与主存储器之间的通信量
-
• 这种数据表示的通用性和利用率
2.1.2 高级数据表示
1 自定义(Self-defining)数据表示
- 标志符数据表示:
标志符由编译器或其它系统软件建立,对程序员透明
程序存储量分析:数据存储量增加,指令存储量减少
- 数据描述符:
数据描述符与标志符的区别:
标志符只作用于一个数据,而数据描述符要作用于一组数据。如向量,数组等等
2 向量、数组数据表示,即构成了向量机
对参加运算的源向量A、B以及结果向量C
都应指明其****基地址****、****位移量****、****向量长度*和*元素步距****等参数
3 堆栈数据表示P42
2.1.3 引入数据表示的原则
-
看系统的效率是否显著提高,包括实现时间和存储空间是否显著减少。
-
看引入这种数据表示后,其通用性和利用率是否提高。
2.1.4 浮点数的表示方法P44(会是一个考点)
尾数基值rm增大,会扩大浮点数表示范围,可表示最小值减小,可表示最大值增大, 增加可表示数的个数,数值的分布变稀疏, 减少移位次数,降低右移造成的精度损失,提高运算速度,但也会降低数据的表示精度;
浮点数尾数的下溢处理方法:截断,舍入,恒置一,查表舍入
2.2 寻址技术
2.2.1 编址方式
并行存储器的编址技术
高位交叉编址:主要用来扩大存储器容量。不同存储体的高位相同
低位交叉编址:主要是提高存储器速度。不同存储体的低位相同
2.2.2 寻址方式,面向4种存储位置
2.2.3 定位方式:主要研究程序的主存物理地址在什么时间确定,采用什么方式来实现
P52,三种定位方式 os内存管理
2.3 指令系统的优化设计
-
指令系统设计的基本原则P56
-
指令操作码的优化 操作码的三种编码方法:
固定长度: 规整性好,解码简单,空间大。
Huffman编码:空间小,规整性不好,解码复杂。
扩展编码: 折衷方案。
-
信息源熵:信息源包含的平均信息量。 
Pi 是概率
-
信息冗余量:
使用哈夫曼编码,减少冗余量
指令字格式的优化:
如何用最短的位数来表示指令的操作信息和地址信息,使程序中指 令的平均字长最短。地址码的优化等等
采用扩展操作码;采用多种寻址方式;采用0,1,2,3等多种地址制
2.4 指令系统的发展和改进
CISC ,RISC
3. 第三章 存储、中断、总线与I/O系统
1存储系统的基本要求和并行主存系统
要求:大容量、高速度和低价格
存储器的容量
- W:存储体的字长(位、字节)
- l: 每个存储体的字数
- m:并行工作的存储体个数
访问时间TA,存储周期TM 频带(带宽)BM
单体存储器频宽:
单体单字,单体多字,
多体单字交叉存储器
模m低位交叉编址
模m高位交叉编址 还有(混合编址)
P(k)表示申请长度为k,且不冲突的概率密度函数。显然k的平均值:也是每个存储周期能访问到的平均字节数:
2中断系统
- 内部中断:CPU内部异常引起
- 外部中断:中断信号
- 软件中断:自陷指令
中断分类:
- 机器校验中断:设备故障
- 访管中断:自陷
- 程序性中断:异常
- 外部中断;来自机器外部,包括定时器,外部信号等等
- I\O中断
中断响应次序,由排队器硬件实现,固定
中断处理次序;由中断屏蔽位控制
3总线系统
总线分类,
芯片级,板级(局部总线/内部总线),系统级总线
单向,双向;专用,非专用
这里讲,非专用总线的集中式控制:
优先次序的确定 P94页
- 串行链接
控制线数只有3根
- 定时查询
控制线数是, 2+LbN
- 独立请求
控制线有 2N+1 根
总线的类型、控制方式、通信技术、数据宽度、总线线数确定后,总线的使用方式就确定了。
4输入/输出系统
-
即程序控制IO(包括全软的、程序查询状态驱动的、 中断驱动的几种)
-
直接存贮器访问(DMA)
-
I/O处理机方式
-
通道处理机channel
-
外围处理机PPU
-
- 从目态转换为管态的唯一途径是中断。
通道流量设计
通道数据传送期中,信息传送方式的不同,分为:这些ppt上没有,书上有)
TS 是选择一次设备的时间,***TD***是传输一个字节时间
在PPt4-2中有
-
字节多路: 适用于字符类低速设备
多个子通道并行操作,以字节宽度分时进出通道
当这种通道上连接有P台外设,每一台都传送n个字节时,
总共需要时长****TBYTE=(TS+TD)*P*n****,它是分时服务,
-
数组多路
数组多路通道在一段时间内只能为一台高速设备传送数据,但同时,可以有多台高速设备在寻址,包括定位找扇区。一个数据块是传输K个字节
所以平均启动次数,总字节数,Pn / K
数组多路通路每连接一台高速设备,一般传送一个数据块,传送完成后,又与另一台设备连接,再传送一个块。当一个数组多路通道上连接有P台外设,每一台设备都传送n个字节时,
总共需要时长:TBLOCK=(TS/k+TD)*P*n
-
选择
在选择通道中,因为通道每连接一个设备,就把这个设备的n个字节全部传送完成,然后再连接另一个设备。当一个选择通道在连接有P台设备,每一台外设都传送n个字节时,
总共需要的时间:TSELECT=(TS/n+TD)*P*n
- 通道极限流量
- 通道实际最大流量
4. 第四章 存储体系
介绍虚拟存储器,cache存储器的原理;虚实地址映像与变换,替换算法,存储保护等等
(一) 概述
存储系统的关键是如何组织好速度、容量和价格均不相同的存储器
各级存储器的主要性能特性
解决速度 :(还有,容量、价格)
- CPU中设置通用寄存器
- 采用存储器的多体交叉并行存取
- 采用存储层次 Cache
存储体系的构成依据
- 要求未被访问信息的地址能预知;
- 时间和空间上的局部性
- 预知的准确性是存储层次设计的好坏的主要标志
- 取决于所用算法和地址映像变换的方式
性能参数
- 命中率H ; R i 为在Mi访问的次数
-
存储层次的等效访问时间,Ta1是访问cache时间,TA2是访问主存时间
-
访问效率e:r是两级存储器的速度相差倍数
(二) 虚拟存储器P115
参考操作系统课程—内存管理
- 映像方式:低层存储器的块按什么规则装入高层存储器。
- 映像机构:映像方式的实现。如何识别和查找高层存储器的信息块。
- 替换策略:访问失效后,如何淘汰信息块,而换新块。
- 写策略:写操作时采用何种策略以保持相邻两级存储器中数据的一致性,发生写操作失效时是否将被写的块从低层存储器取入高层存储器。
-
段式,
程序逻辑分段,段表常驻内存
段独立,有利于程序员灵活实现段的连接、段的扩大/缩小和修改,而不影响其他段,易于针对其特定类型实现保护,把共享的程序或数据单独构成一个段,从而易于实现多个用户、进程对共用段的管理,动态连接程序;
特点:访存两次。 -
页式
对应用程序员完全透明,由系统划分.
硬件较少,地址变换速度快,
调入操作简单,静态连接程序; -
段页式
把实存机械地等分成固定大小的页,程序按模块分段,每个段又分成与主存页面大小相同的页。
- 地址变换
全相联
组相联
-
替换算法
当发生页面失效时,要从磁盘中调入一页到主存。如果主存所有页面都已经被占用,必须从主存储器中淘汰掉一个不常使用的页面,以便腾出主存空间来存放新调入的页面。
- 虚拟存储器中,主存页面的替换,一般用软件实现
- Cache块替换一般用硬件实现
1随机算法(Random ,RAND),用软的或硬的随机数产生器来形成主存重要被替换页的页号。
简单,易于实现
没有利用历史信息
命中率低,很少使用2先进先出算法(First-In First-Out ,FIFO):选择最早装入主存的页作为被替换的页。
配置计数器字段
虽然利用历史信息,但不一定反映出程序的局部性3近期最少使用算法(Least Recently Used ,LRU):选择近期最少访问的页作为被替换的页。
配有计数器字段。
比较正确反映程序的局部性。4优化替换算法(Optimal Replacement Algorithm, OPT):是在时刻t找出主存中每个页将要用到时刻ti,然后选择其中ti-t最大的那一页作为替换页。
理想化算法
(三) Cache
用以弥补主存速度不足
1cache与虚拟存储器比较
2地址映象; 地址变换
- 全相联映象与变换 (主存中的任意一块都可以映象到Cache中的任意一块。
- 直接映象与变换 (主存中一块只能映象到Cache的一个特定的块中。
- 组相联映像与变换 (组间直接映像,组内全相联映像)
- 段相联映象 (组间全相联,组内直接映象)
3cache存储器的LRU替换算法的硬件实现
常采用LRU算法,LRU算法是堆栈型算法,替换算法全部采用硬件途径实现
A 堆栈法
B比较对法
4Cache存储器的透明性及性能分析
由于Cache存储器的地址变换和块替换算法全由硬件实现,因此Cache-主存存储层次对应用程序员和系统程序员都是透明的。
造成Cache与主存的不一致的原因:
由于CPU写Cache,没有立即写主存
由于IO处理机或IO设备写主存
写回法(抵触修改法,WB):是在CPU执行写操作时,信息只写入Cache,仅当需要被替换时,才将以被写入过的Cache块先送回主存,然后再调入新块。
写直达法(直达法,WT):利用Cache—主存存储层次在处理机和主存之间的直接通路,每当处理机写入Cache的同时,也通过此通路直接写入主存。 (较为可靠)
写Cache的两种方法:
- 不按写分配法:在写Cache不命中时,只把所要写的字写入主存。
- 按写分配法:在写Cache不命中时,还把一个块从主存读入Cache。
目前,在写回法中采用按写分配法,在写直达法中采用不按写分配法。
- 性能分析
设:tc 为Cache的访问时间, tm为主存周期, Hc为访Cache的命中率。
则:有Cache的等效存储周期
ta= Hc tc+(1- Hc) tm
因为:主存与CPU之间有直接通路,因此CPU对第二级的访问时间就是tm。
![image-20210322200810285](https://gitee.com/JLChenode/image/raw/master/img/20210322200810.png)
ρ < α+1;
三级存储体系; 存储保护
5. 第五章 标量处理机
(一) 指令重叠执行
1条件:指令分阶段执行,
- 取指令:
按照指令计数器的内容访问主存储器,取出一条指令送到指令寄存器- 指令分析:
对指令的操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数地址,并用这个地址读取操作数- 指令执行:
根据操作码要求,完成规定的功能,将运算结果写到寄存器或主存储器
顺序执行
执行n条指令所用的时间为:
一次重叠执行
如果两个过程的时间相等,则执行n条指令的时间为:T=(1+2n)t
二次重叠执行
如果三个过程的时间相等,执行n条指令的时间为:T=(2+n)t
2二次重叠必须解决两个问题:
- 有独立的取指令部件、指令分析部件和指令执行部件
把一个集中的指令控制器,分解成三个独立的控制器:存储控制器、指令控制器、运算控制器2) 要解决访问主存储器的冲突问题
取指令、分析指令、执行指令都可能要访问存储器
解决问题2)的方法如下:
(1)采用低位交叉存取方式:
这种方法不能根本解决冲突问题。
指令、读操作数、写结果。(2)两个独立的存储器:独立的指令存储器和数据存储器。
如果再规定,执行指令所需要的操作数和执行结果只写到通用寄存器,则取指令、分析指令和执行指令就可以同时进行。
在许多高性能处理机中,有独立的指令Cache和数据Cache。这种结构被称为***哈佛结构。***(3)采用先行控制技术
采用先行控制技术的关键是缓冲技术和预处理技术。
- 缓冲技术通常用在工作速度不固定的两个功能部件之间。设置缓冲栈的目的是用来以平滑功能部件之间的工作速度。
- 在采用了缓冲技术和预处理技术之后,运算器能够专心于数据的运算,从而大幅度提高程序的执行速度
3先行控制方式
设置先行缓冲栈的目的:使指令分析器和指令执行部件能够独立工作
采用先行控制方式时一个程序的执行情况
4缓冲深度的设计方法
以静态分析为主,通过模拟来确定缓冲深度
• 一般有关系:DI≥DC≥DR≥DW
-
DI是先行指令缓冲栈的缓冲深度,
-
DC是先行操作栈的缓冲深度,
-
DR是先行读数栈的缓冲深度,
-
DW是后行写数栈的缓冲深度
先行指令缓冲栈的设计
假设两种极端情况
*(1)先行指令缓冲栈已经充满*
• ****指令流出的速度最快****,例如连续分析RR型指令,设这种指令序列的最大长度为L_1,平均分析一条这种指令的时间为t_1;
• ****指令流入的速度最慢****,设平均取一条指令的时间为t_2。从主存储器中取到先行指令缓冲栈中的指令条数是L_1−D_I条。
应该满足如下关系:L_1* t_1=(L_1−D_I)*t_2
计算出缓冲深度为:D_I=⌈L_1⋅(t_2−t_1)/t_2⌉
如果这种指令流的连续长度超过L_1,则先行指令缓冲栈失去作用。
*(2)先行指令缓冲栈原来为空*
• ****输入端指令流入的速度最快****,每次取指令的时间最短,设这种指令序列的最大长度为L_2,平均取一条这种指令的时间为t_2′
• ****输出端指令流出的速度最慢****指令分析器连续分析最难分析的指令;设平均分析一条指令的时间为t_1′
分析的指令条数是L_2−D_1条
应该满足如下关系:
计算出缓冲深度为:
如果这种指令流的连续长度超过L_2,先行指令缓冲栈失去缓冲作用
ex:假设一条指令的执行过程分别为“取指令”、“分析”、“执行”三段,每一段的时间分别是Δt、 2Δt、 3Δt。在下列情况下,分别写出连续执行n条指令所需要的时间表达式
1:T=n*(Δt+2Δt+3Δt)
2: (n-1)*(2Δt+3Δt)+6Δt=
3: (n-1)*(3Δt)+6Δt=
4:
5数据相关,分以下三种情况,
总的解决方法,有两个,推后处理,设置专用路径*
- 数据相关
1指令相关,解决指令相关的根本办法是:在程序执行过程中不允许修改指令。
2主存操作数相关,解决办法:推后处理法
3通用寄存器相关,4种方法,
分析指令推后一个周期执行; 分析指令推后一个节拍; 设置专用通路
4变址相关; 推后分析;设置专用通路
- 控制相关:全局相关
• 因程序的执行方向可能被改变而引起的相关,也称为全局相关。
• 主要包括:无条件转移、一般条件转移、复合条件转移、中断等。
- 无条件转移
• 如果转移目标指令L不在先行指令缓冲栈中,则要将先行指令缓冲栈中的所有指令全部作废,并等待取出转移目标指令L。
• 如果转移目标指令L在先行指令缓冲栈中,只要作废先行指令缓冲栈中的部分指令。
• 无条件转移指令一般对指令执行部件的工作不会造成影响。
• 为进一步减少无条件转移指令造成的影响,在****先行指令缓冲栈****的入口处增设一个专门处理无条件转移指令的指令分析器
- 一般条件转移,前面指令产生条件码,后面指令转移
• 无论转移是否成功,这条转移指令都在指令分析阶段就已经执行完成。
• 无论转移不成功或不成功,指令分析器要停顿一段时间,等待条件码产生。
- 复合条件转移,一条指令产生条件码+转移
要采取: 转移预测技术
1软件猜测法:设计编译器
2硬件猜测法:方法:通过改变硬件结构来降低转移指令对流水线的影响
• 在先行指令缓冲栈的人口处设置一个简单的指令分析器,当检测到转移指令时,就把转移目标地址L送入先行程序计数器PC1中,同时保留当前PC1中的内容到另一寄存器中。
• 转移成功,猜测正确。对转移指令对流水线不造成影响。
• 转移不成功,用保存下来的地址恢复PC1和PC,清楚先行指令缓冲栈、先行操作栈和先行读数栈,重新开始取指令
3两个先行指令缓冲栈*
普通条件转移指令(如“IF”语句),转移成功与不成功各50%
在先行指令缓冲栈中增加一个先行目标缓冲栈
• 按照转移成功的方向预取指令到先行目标缓冲栈中。
• 先行指令缓冲栈仍然按照转移不成功的方向继续预取指令。
• 如果转移不成功,则继续分析原来先行指令缓冲栈中指令。
• 如果转移成功,则分析新增设的先行目标缓冲栈中的指令。
(二)流水线技术
空间并行性:设置多个独立的操作部件
时间并行性:分时使用同一个部件的不同部分
流水线方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行
1流水线的***主要特点***:
- 只有连续提供同类任务才能发挥流水线效率
尽量减少因条件分支造成的“断流”
通过编译技术提供连续的相同类型操作
- 每个流水线段都要设置一个流水寄存器
时间开销:流水线的执行时间加长
是流水线中需要增加的主要硬件
- 各流水段的时间应尽量相等
流水线处理机的基本时钟周期等于时间最长的流水段的时间长度。
流水线需要有“装入时间”和“排空时间”
2流水线分类
-
线性流水线(Linear Pipelining):
每一个流水段都流过一次,而且仅流过一次;能够用流水线连接图唯一表示
非线性流水线(Nonlinear Pipelining):
某些流水段之间有反馈回路或前馈回路,必须用流水线连接图和流水线预约表共同表示 -
按级别分类
处理机级流水线,又称为指令流水线。
部件级流水线(操作流水线)
浮点加法器流水线宏流水线(Macro Pipelining)
处理机之间的流水线称,每个处理机对同一个数据流的不同部分分别进行处理。 -
单功能流水线与多功能流水线
只能完成一种固定功能的流水线。多功能流水线
流水线的各段通过不同连接实现不同功能 -
静态流水线:同一段时间内,各个功能段只能按照一种方式连接,实现一种固定的功能。
动态流水线:在同一段时间内,各段可以按照不同的方式连接,同时执行多种功能。
-
按照数据表示方式:标量流水线和向量流水线
按照控制方式:同步流水线和异步流水线顺序流水线与乱序流水线,乱序流水线又称为无序流水线、错序流水线或异步流水线等。
3流水线性能分析
*1.吞吐率(Throughput)*
流水线吞吐率的最基本公式:
TP=n/T_k
其中:n为任务数,T_k为完成n个任务所用的时间。
各段执行时间相等,输入连续任务情况下,完成n个任务需要的总时间为:
T_k=(k+n−1)Δt
其中: k为流水线的段数,Δt为时钟周期。
吞吐率为:TP=n/(k+n−1)Δt
最大吞吐率为:TP_max=lim{n→∞}n/(k+n−1)Δt=1/Δt
各段时间不等,完成n个连续任务:
解决方法:
(1)将“瓶颈”部分再细分(如果可分的话)
(2)“瓶颈”流水段重复设置:增加分配器和收集器
2 加速比
当流水线段数增加时,需要连续输入的任务数也必须增加
3 效率
各段设备量或价格不等时,流水线的效率为:
4 流水线的吞吐率、加速比与效率的关系:
5 流水线最佳段数的选择
采用顺序执行方式完成一个任务的时间为t
在同等速度的 k 段流水线上执行一个任务的时间为:t/k+d
d为流水锁存器的延迟时间
流水线的最大吞吐率为:P=1/(t ∕ k+d)
流水线的总价格估计为:C=a+b k,
a为功能段身的总价格,b为每个锁存器的价格
A.G.Larson把流水线的性能价格比PCR定义为:
![image-20210323143225082](https://gitee.com/JLChenode/image/raw/master/img/20210323143225.png)
4非线性流水线调度
的任务是要找出一个最小的循环周期,按照这周期向流水线输入新任务,流水线的各个功能段都不会发生冲突,而且流水线的吞吐率和效率最高。
-
线性流水线能够用流水线连接图唯一表示
对于非线形流水线,连接图不能唯一表示工作流程,因此,引入流水线预约表 -
非线性流水线的冲突
• 启动距离:连续输入两个任务之间的时间间隔
• 流水线冲突:几个任务争用同一个流水段
*3.无冲突调度方法*
• 由E.S.Davidson及其学生于1971年提出
• *禁止向量:*预约表中每一行任意两个“×”之间距离的集合。上例中为*(3,4,6)*
![image-20210323143544971](https://gitee.com/JLChenode/image/raw/master/img/20210323143545.png)
冲突向量:C=(CmCm-1…C2C1)
其中:m是禁止向量中的最大值。
如果i在禁止向量中,则Ci=1,否则Ci=0。
上例中***C=(101100)***
根据初始冲突向量构造状态图
状态图:将冲突向量逻辑右移,若移出去的位是1,则表示用相应启动距离向流水线输入新任务时会产生功能段冲突;若移出去的位是0,则表示不会产生功能段冲突
举例说明如何构造:
![image-20210323143823786](https://gitee.com/JLChenode/image/raw/master/img/20210323143823.png)
![image-20210323144036462](https://gitee.com/JLChenode/image/raw/master/img/20210323144036.png)
简单循环 | 平均启动距离 |
---|---|
(1,7) | (1+7)/2=4 |
(1,1,7) | 3 |
(2,7) | 4.5 |
(2,5) | 3.5 |
(2,5,7) | 4.7 |
(5,7) | 6 |
(5) | 5 |
(5,2,7) | 4.7 |
(7) | 7 |
最小的启动循环为(1,7)、(5,3)和(3,5),平均启动距离为 4
启动距离最小的恒定循环为(5)
最小启动循环(1,1,7)的预约表
4流水线相关
- 局部相关
*1.顺序流动方式:任务按顺序流入流水线,也按顺序流出流水线*
*2.乱序流动方式:*
• 指令流出流水线的顺序与流入流水线的顺序不同。又称为错序流动方式、无序流动方式、异步流动方式等。
该方式可能发生三种数据相关
- 写读相关:指令k与指令k+1之间关于F1的相关,又称为数据相关、先写后读相关、流相关、WR相关、RAW相关等。
- 读写相关:指令k+1与指令k+2之间关于F1的相关,变量名相关、先读后写相关、反相关、RW相关、WAR相关等。
- 写写相关:指令k与指令k+2左边的F1之间的相关关系称为:输出相关、写写相关、WW相关、WAW相关或写后再写相关等
乱序流动中数据相关的避免方法
1 延迟执行
2建立专用数据通路
这三种数据相关,可以进行重定向,(即怎么设置专用通路)
写读相关,可以同时执行
写写相关,先后顺序无关
读写相关,先后顺序无关
实用的****动态调度算法****主要有两种:(用于上面重定向,也就是指令的执行顺序的调度)
- 集中控制:CDC计分牌(scorebord)算法,最先在CDC 6600大型机中采用。
- 分散控制:Tomasulo算法, 公共数据总线法,令牌法等。最早在大型机IBM 360/91的浮点处理部件中被采用
- 全局相关
由条件转移或程序中断引起
处理好条件转移和中断的关键问题有两个:
• 要确保流水线能够正常工作
• 减少因“断流”引起的吞吐率和效率的下降
条件转移的应对方法:
*(1)延迟转移技术和指令取消技术*
只能用于单流水线处理机中,且流水线的级数不能太多
****(2)动态分支预测技术****
• 根据近期转移是否成功的记录来预测下一次转移的方向。
• 所有的动态转移预测方法都能够随程序的执行过程动态地改变转移的预测方向。
• 记录转移历史信息的方法有三种:
(1)最近一次或几次转移是否成功的信息记录在转移指令中
(2)用一个高速缓冲栈保存条件转移指令的转移目标地址
(3)用Cache保存转移目标地址之后的n条指令
*(3)静态分支预测技术*
• 转移预测的方向是确定的,或者预测转移不成功,或者预测转移成功,
• 在程序实际执行过程中,转移预测的方向不能改变。
• 静态转移预测可以只用软件实现,也可用硬件来实现,还可以在转移的两个方向上都预取指令。
• TI公司的SuperSPARC处理机采用了静态转移预测技术,而且设置有转移目标缓冲栈,在两个方向上都预取指令。
*(3)提前形成条件码*
- 必要性:对提高流水线的性能非常有效
- 可能性:可在运算开始或中间产生条件码
- 对于乘除法,两个源操作数的符号相同结果为正,符号相反结果为负
对于乘法,有一个操作数为0,则乘积为0
被除数为0,商为0; 除数为0,除法结果溢出 - 同号加或异号减,结果符号与第一操作数相同
异号加或同号减,结果的符号与绝对值大的操作数相同 - 溢出及是否为0可以通过一个比较器提前产生
(三)超处理机
1超标量
- • 普通标量流水线处理机:一条指令流水线,一个多功能操作部件,每个时钟周期平均执行指令的条数小于1。
- • 多操作部件标量处理机:一条指令流水线,多个独立的操作部件,指令级并行度小于1。
- • 超标量处理机典型结构:多条并行工作的指令流水线,多个独立的操作部件,指令级并行度(ILP)大于1。
单发射处理机,即多操作部件标量处理机
多发射处理机,即超标量处理机 具有
• 超标量处理机(也是多流水线)****调度方法****:
先行指令窗口:能够从指令Cache中预取多条指令,能够对窗口内的指令进行数据相关性分析和功能部件冲突检测。
多流水线调度算法:
- • 顺序发射顺序完成
- • 顺序发射乱序完成
- • 乱序发射乱序完成
若超标量处理机的操作部件不采用流水线结构的话,会出现冲突
- 普通标量处理机,希望相同操作连续出现。
只有连续出现相同操作的指令序列时,流水线的效率才能得到充分发挥。
- 超标量处理机则正好相反,希望相同操作不要连续出现。
相同操作的指令序列连续出现时,会发生资源冲突;要求相同操作的指令能够相对均匀地分布在程序中。
超标量处理机的这种要求正好符合一般标量程序的特点
性能分析:
单流水线普通标量处理机的指令级并行度记作(1, 1),
超标量处理机的指令级并行度记作(m, 1),
超流水线处理机的指令级并行度记作(1, n),
而超标量超流水线处理机的指令级并行度记作(m, n)。
在理想情况下,N条指令在单流水线标量处理机上的执行时间为: T(1, 1)=(k+N-1)Δt
2超流水线处理机
两种定义:
在一个周期内分时发射多条指令的处理机
指令流水线的段数大于等于8的流水线处理机
提高处理机性能的两种方法:
通过增加硬件资源来提高处理机性能
通过各部分硬件的重叠工作来提高处理机性能
• 两种不同并行性:
• 超标量处理机采用的是空间并行性
• 超流水线处理机采用的是时间并行性。
每隔1/n个时钟周期发射一条指令,即处理机的流水线周期为1/n个时钟周期。
![image-20210323152817559](https://gitee.com/JLChenode/image/raw/master/img/20210323152817.png)
性能:
3***超标量超流水线处理机***
一个时钟周期发射m次,每次发射n条指令
性能:
三种标量处理机的性能比较
(1)超标量处理机功能部件的冲突比超流水线处理机小。在指令执行过程中的许多功能段,超标量处理机都重复设置有多个相同的指令执行部件,而超流水线处理机只是把同一个指令执行部件分解为多个流水级。
(2)条件转移等操作造成的损失,超流水线处理机要比超标量处理机大。由于超流水线处理机采用深度流水线结构,对条件转移等操作比超标量处理机敏感。
(3)超流水线处理机的启动延迟通常要比超标量处理机大。超标量处理机在每个时钟周期的一开始就同时发射多条指令,超流水线处理机把一个时钟周期平均分成多个流水线周期,每个流水线周期只发射一条指令。
6. 第六章 向量处理机
将向量数据表示和流水线技术结合起来,构成向量流水处理机,
简称向量处理机(Vector Processor)
1向量流水
1向量表示
- 等间距向量表示法
三个参数表示一个等间距向量:
向量起始地址:A
向量长度:L
向量间距:f
- 带位移量的向量表示法
用三个参数表示一个向量:
向量基地址:A
向量长度:L
向量位移量:f
向量有效长度:L-f
向量起始地址:A+f
- 稀疏向量表示法
2向量处理机结构
困难之处在于
- 使存储器系统能够提供给运算器连续不断的数据流以及接受来自运算器的连续不断的运算结果
- 如何设计一个能满足运算器带宽要求的存储系统
-
存储器-存储器结构:利用几个独立的存储器模块来支持相对独立的数据并发访问,从而达到所要求的存储器带宽
多个独立的存储器模块并行工作
处理机结构简单
对存储系统的访问速度要求很高 -
寄存器-寄存器结构:构造一个具有所要求带宽的高速中间存储器,并实现该高速中间存储器与主存储器之间的快速数据交换
运算通过向量寄存器进行
需要大量高速寄存器
对存储系统访问速度的要求降低
3向量处理工作方式
如:D=A×(B+C)
- 横向加工:bi+ci->k, k*ai->di
产生N次相关,2N次功能切换,适合标量循环
逐个求D向量元素的方法,先取出,ai,bi,ci,然后计算di
- 纵向加工:bi+ci->ki, ki*ai->di
产生1次相关,1次功能切换,可流水处理
i=1….N 计算bi+ci=ki,得到向量K,再A*k
- 纵横处理:对向量分组,组内纵向、组间横向处理
当向量长度N大于向量寄存器长度n时使用
4向量链接技术
当前一条指令的结果寄存器可以作为后继指令的操作数寄存器时,多条有数据相关的向量指令并行执行,这种技术称为两条流水线的链接技术
- 向量链接的一些主要要求
- (除了要保证无向量寄存器使用冲突和无向量功能部件使用冲突的条件外)
- 在进行链接的时候,只有在前一条向量指令的第一个结果元素送入结果向量寄存器的那一个时钟周期才可以进行链接,若错过该时刻就不能进行链接,只有当前一条向量指令全部执行完毕,释放相应的向量寄存器资源后才能执行后面的向量指令
- 当一条向量指令的两个源操作数分别是两条先行向量指令的结果寄存器时,要求先行的两条向量指令产生运算结果的时间必须相等,即要求有关向量功能部件的延迟时间相等
- 只有所有可以链接执行的向量指令的向量长度相等时,它们之间才能链接执行,否则它们之间也不能链接执行
向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,采用循环结构处理这个长向量,这种技术称为向量循环开采技术,也称为向量分段开采技术。
向量递归技术; 向量指令可以可以通过让源向量和结果向量使用同一个向量寄存器组,并控制分量计数器的修改,实现递归操作
5性能评价
向量指令处理时间T_vp
最大性能R_∞
半性能向量长度n_1/2
向量长度临界值n_v
执行一条长度为n的向量指令的时间T_vp表示为:
Tvp=Ts + Tvf + (n − 1)T_c
- T_s为向量流水线的建立时间,即为了使处理部件流水线能开始工作(即开始流入数据)所需要的准备时间
- T_vf为向量流水线的流过时间, 即第一对向量元素通过流水线并产生第一个结果所花的时间
- T_c为流水线的时钟周期时间。
将上式中的参数都折算成时钟周期个数,则有:
T_vp=[s+e+(n−1)]τ
- s为向量流水线建立所需的时钟周期数,
- e为向量流水线流过所需的时钟周期数,
- n为向量长度,
- τ为时钟周期长度
一组向量操作的执行时间主要取决于:
向量长度、向量操作之间是否存在流水线功能部件的冲突、数据的相关性
将几条能在一个时钟周期内一起开始执行的向量指令称为一个编队
- 向量处理机的峰值性能R_∞
- 半性能向量长度n_1/2
是指向量处理机的性能为其最大性能的一半所需要的向量长度
评价向量流水线的建立时间对性能影响的重要参数
- 向量长度临界值n_v
是指:对于某一计算任务而言,向量方式的处理速度优于标量串行方式处理速度时所需要的最小向量长度
2阵列处理机
也称 并行处理机
定义:
通过重复设置大量相同的处理单元PE(Processing Element),将它们按一定方式互连成阵列,在单一控制部件CU(Control Unit)控制下,对各自所分配的不同数据并行执行同一组指令规定的操作。操作级并行的SIMD计算机。
阵列处理机的构形与特点
- 分布式存储器的阵列处理机构形
- 集中式共享存储器的阵列处理机构形
一台阵列处理机由五个部分组成
- 多个处理单元PE
- 多个存储器模块M
- 一个控制器CU
- 一个互连网络ICN
- 一台输入输出处理机IOP
阵列处理机的特点
- 背景----科学计算
- 有限差分、矩阵、信号处理、线性规划
- 数组、向量处理
- 资源重复,利用并行性中的同时性
- 简单而规整的互联网络—设计重点
阵列处理机实质上是由
专门对付数组运算的处理单元阵列组成的处理机
专门从事处理单元阵列的控制及标量处理的处理机
专门从事系统输入输出及操作系统管理的处理机
组成的一个异构型多处理机系统
专用机 与并行算法紧密相联
ILLIAC IV的处理单元阵列结构
闭合螺线阵列
任意单元的最短距离不超过7步
一般来讲:N=根号N*根号N 个处理单元组成的阵列中,任意两个处理单元之间的最短距离不会超过 根号N—1 步
处理单元为通常的累加型运算器,把累加寄存器RGA中的数据和存储器来的数据进行操作
阵列处理机的缺点
许多问题不能很好地映射为严格的数据并行算法
在某一时刻,阵列处理机只能执行一条指令,当程序进入条件执行并行代码时,效率会下降
很大程度上是单用户系统,不容易处理多个用户要同时执行多个并行程序情况
不适合于小规模的系统
使用定制的VLSI,无法赶上通用CPU的性能和成本改进
控制单元相对成本高的价格不再有效
3 SIMD计算机的互连网络
互连网络是一种由开关元件按照一定的拓扑结构和控制方式构成的网络,用于实现计算机系统内部多个处理机或多个功能部件之间的相互连接。
在SIMD计算机中,处理单元与处理单元或存储分体之间要通过互连网络进行信息交换。
互连网络的作用
- 用来实现计算机系统内部多个处理机或多个功能部件之间的相互连接。
- 互连网络已成为并行处理系统的核心组成部分。
- 互连网络对整个计算机系统的性能价格比有着决定性的影响。
- 互连网络通常是用有向边或无向边连接有限个结点的组成
互连网络的主要特性有:
- 网络规模:网络中结点的个数
- 结点度:与结点相连接的边数称为结点度。包括入度和出度。进入结点的边数叫入度,从结点出来的边数则叫出度
- 距离:两个结点之间相连的最少边数
- 网络直径:网络中任意两个结点间距离的最大值。用结点间的连接边数表示
- 结点间的线长:两个结点间连线的长度。用米、公里等表示
- 对称性:从任何结点看到拓扑结构都是一样的网络称为对称网络。对称网络比较易实现,编程也较容易。
互连网络在传输方面的主要性能参数
频带宽度(Bandwidth):互连网络传输信息的最大速率。
传输时间(Transmission time):等于消息长度除以频宽。
飞行时间(Time of flight):第一位信息到达接收方所花费的时间。
传输时延(Transport latency):等于飞行时间与传输时间之和。
发送方开销(Sender overhead):处理器把消息放到互连网络的时间。
接收方开销(Receiver overhead):处理器把消息从网络取出来的时间。
一个消息的总时延可以用下面公式表示:
总时延=发送方开销+飞行时间+消息长度/频宽+接收方开销
4 互连网络的分类
操作方式:同步、异步、同步\异步
阵列处理机采用同步方式
多处理机采用异步、同步\异步组合方式控制方式:集中、分布
多数采用集中
交换方法:线路交换、包交换、线路交换/包交换
线路交换,建立实际通路,适合大批量数据传输,常采用。
包交换,建立虚电路,适合于短数据传送,常用于多处理机系统和计算机网络
网络上通常采用分组交换拓扑结构:互连网络入、出端可以实现连接的模式。
静态:连接固定。灵活性、适应性差。少使用。
一维线形
二维环形、星形、树形、胖树形、网格形、脉动阵列形
三维旋环形、立方体形、环立方体动态
单级:只有有限几种连接,循环网络。
多级:多个单级网络串联组合而成。
互连函数表示
循环表示
5基本的单级互连网络
立方体单级网络
PM2I单级网络
混洗交换单级网络
蝶性单级网络
6基本多级互联网络
能够实现结点到结点之间的任意互连是互连网络的一种基本功能。
多级互连网络采用多个相同的或不同的互连网络直接连接起来。属于组合逻辑线路,一个时钟周期就能够实现
任意结点到结点之间的互连。
多级互连网络采用的关键技术:交换开关
- 一个a×b交换开关有a个输入和b个输出。
最常用的二元开关:a=b=2。- 每个输入可与一个或多个输出相连,但是在输出端必须避免发生冲突。一对一和一对多映射是容许的;但不容许有多对一映射。
- 只容许一对一映射时称为置换连接,称这种开关为n×n交叉开关。
- 具有直通和交换两种功能的交换开关称为二功能开关,或交换开关。
- 用一位控制信号控制。
具有所有四种功能的交换开关称为四功能开关,用两位控制信号控制。
交换开关之间的拓扑连接
对交换开关的不同控制方式
控制方式
在多级互连网络中有多级交换开关,每一级又有多个交换开关。
通常有三种控制方式
- 级控制:同一级交换开关使用同一个控制信号控制。
- 单元级控制:每个交换开关分别控制。
- 部分级控制: 例如,第i级使用i+1个控制信号控制 (0 <=i <= n-1)。
同一个多级互连网络分别常用三种不同的控制方式,可以构成三种不同的互连网络
基本多级互连网络
多级立方网络(Single Stored Cube Network)
多级换洗交换网络
多级PM2I网络(Plus-minus 2i)
基准网络
多级交叉开关网络
多级碟式网络
4脉动阵列处理机
为要求计算量很大的信号/图像处理及科学计算的特定算法需要
卡内基-梅隆大学的美籍华人H.T.Kung于1978年提出脉动阵列处理(Systolic Array)机
具有较高的计算并行性
7. 第七章 多处理机
1概述
属于多指令流、多数据流系统 MIMD
- 结构上:要用多个指令部件分别控制,通过机间互联网络实现通信
- 算法上:不限于向量数组
- 系统管理上:依靠软件手段解决资源分配和管理,任务分配、处理机调度、进程同步和通讯
多处理机与并行处理机的主要差别
2多处理机的硬件结构
1构型
(1:紧耦合多处理机
(2:松耦合多处理机
2机间互连形式
(1总线形式,单总线,多总线p242
(2环形互连 token
(3交叉开关,是多总线朝总线数增加方向发展的极端情况
(4多端口存储器方式
(5蠕虫穿洞寻径网络
(6开关枢纽结构形式
3存储器的组织
3 多处理机的并行和性能
将大的程序分解成可由足够的并行处理的过程(进程、任务、程序段)
降低树高,增加并行性
用交换律、结合律、分配律来变换
先利用交换律把相同的运算集中起来,再用结合律把参加运算的操作数配对,尽可能并行运算,最后再把子树结合起来。