计算机系统结构第五章标量处理机.ppt
《计算机系统结构第五章标量处理机.ppt》由会员分享,可在线阅读,更多相关《计算机系统结构第五章标量处理机.ppt(216页珍藏版)》请在三一文库上搜索。
1、第五章 标量处理机,2019/6/6,2019/6/6,2,本章主要内容,5.1 先行控制技术 5.2 流水线技术 5.3 相关性分析技术 5.4 超标量处理机 5.5 超流水线处理机 5.6 超标量超流水线处理机,2019/6/6,3,标量处理机,只有标量数据表示和标量指令系统的处理机称为标量处理机,是最常用最普通的处理机。 设计处理机的主要任务就是缩短解释指令的时间,提高处理机指令的执行速度: 提高处理机的工作主频。5、60年代主要采用这种技术,每3、4年处理机的速度要提高一个数量级。 采用更好的算法和设计更好的功能部件,如采用RISC等。 多条指令并行执行。指令级的并行技术。 流水线技术
2、。 处理机中设置多个独立的功能部件,如浮点运算器,定点运算器,访存部件等。 超长指令技术。,2019/6/6,4,5.1 先行控制技术,先行控制技术的关键是采用缓冲技术和预处理技术,以及两者都采用,通过对指令流和数据流的预处理和缓冲,能够尽量使指令分析器和指令执行部件独立工作并始终处于忙碌状态。 5.1.1 指令的重叠执行方式 5.1.2 先行控制方式的原理 5.1.3 处理机结构 5.1.4 指令执行序列 5.1.5 先行缓冲栈 5.1.6 缓冲深度的设计方法,2019/6/6,5,指令的重叠执行方式,一条指令的执行可以分为多个阶段,具体分法视处理机而定,一般可以分为三个阶段: 取指令是指按
3、照指令计数器的内容访问主存,取出一条指令送到指令寄存器。 分析指令是指对指令的操作码进行译码,按照给定的寻址方式和地址字段内容形成操作数地址,并用这个地址读出操作数,操作数可以在主存也可以在寄存器。 执行指令是根据操作码的要求,完成指令规定的功能,把结果写到主存或者寄存器。 指令分析或者指令执行阶段还得修改指令计数器的更新,为下一条指令作准备。,2019/6/6,6,指令的重叠执行方式,1.顺序执行方式 执行n条指令所用的时间为: 如果每段时间都为t,则执行n条指令所用的时间为:T3 n t 主要优点:控制简单,节省设备。 主要缺点:速度慢,功能部件的利用率低。,2019/6/6,7,2.一次
4、重叠执行方式 如果两个过程的时间相等,则执行n条指令的时间为:T(1+2n)t 主要优点: 指令的执行时间缩短, 功能部件的利用率明显提高。 主要缺点: 需要增加一些硬件, 控制过程稍复杂。,指令的重叠执行方式(续),2019/6/6,8,3.二次重叠执行方式 如果三个过程的时间相等,执行n条指令的时间为:T(2n)t 在理想情况下,处理机中同时有三条指令在执行。 处理机的结构要作比较大的改变,需要采用先行控制技术。,指令的重叠执行方式(续),2019/6/6,9,先行控制方式的原理,1.采用二次重叠执行方式必须解决两个问题: (1)有独立的取指令部件、指令分析部件和指令执行部件 把一个集中的
5、指令控制器,分解成三个独立的控制器: 存储控制器、指令控制器、运算控制器。 (2)要解决访问主存储器的冲突问题 取指令、分析指令、执行指令都可能要访问存储器。,2019/6/6,10,2.解决访存冲突的方法: (1)采用低位交叉存取方式: 这种方法不能根本解决冲突问题。 取指令、读操作数、写结果。 (2)主存分为两个独立的存储器:独立的指令存储器和数据存储器。 如果再规定,执行指令所需要的操作数和执行结果只写到通用寄存器,则取指令、分析指令和执行指令就可以同时进行。 在许多高性能处理机中,有独立的指令Cache和数据Cache。这种结构被称为哈佛结构。,先行控制方式的原理(续),2019/6/
6、6,11,(3)采用先行控制技术 采用先行控制技术的关键是缓冲技术和预处理技术。 缓冲技术通常用在工作速度不固定的两个功能部件之间。设置缓冲栈的目的是用来以平滑功能部件之间的工作速度。 在采用了缓冲技术和预处理技术之后,运算器能够专心于数据的运算,从而大幅度提高程序的执行速度。,先行控制方式的原理(续),2019/6/6,12,处理机结构,1.三个独立的控制器: 存储控制器、指令控制器、运算控制器。 2.四个缓冲栈: 先行指令缓冲栈、先行读数缓冲栈、先行操作栈、后行写数栈。 3.处理机组成,2019/6/6,13,4.先行指令缓冲栈的组成 作用:只要指令缓冲栈没有充满,就自动发出取指令的请求。
7、 指令分析器每分析完一条指令,自动向指令缓冲栈发出取下一条指令的请求,指令取出后就把先行指令缓冲栈中的指令作废。 分析指令速度和从主存取指令的速度是随机的,指令缓冲栈的指令数目是动态的。 设置两个程序计数器: 先行程序计数器PC1,用来指示取指令, 现行程序计数器PC,记录指令分析器正在分析的指令地址。,处理机结构(续),2019/6/6,14,处理机结构(续),先行缓冲站的组成,指令缓冲存储器堆,采用先进先出的方式,保证指令的执行顺序不致混乱。,2019/6/6,15,处理机结构(续),先行控制方式中的一次重叠执行,重叠部分,无论谁先结束,都不能提前执行下一条指令,需要等待。 无论任何时刻,
8、在指令分析部件和指令执行部件内都只有相邻的两条指令重叠执行,处理机只需要设置一套指令分析部件,指令控制器;一套指令执行部件,运算控制器和运算器。控制方式简单。 所需要时间为T=(1+n)t,2019/6/6,16,处理机结构(续),5.存在的主要问题: 计算机指令系统复杂,各类指令“分析”和“执行”的时间相差很大,分析指令和执行指令常常相互等待,造成部件的浪费。 分析k+1操作所需要的操作数正好是执行k的结果,不能重叠执行,发生数据相关,还有控制相关,变址相关。 转移或转子程序指令时,程序的执行过程不是顺序的,先行指令缓冲栈中预取指令和分析的下一条指令都可能要作废。,2019/6/6,17,指
9、令执行时序,设置了指令缓冲栈,取指令的时间就可以忽略不计。 一条指令的执行可分为2个过程。 1.分析指令和执行指令时间不相等时的情况。,2019/6/6,18,指令执行时序,2.采用先行缓冲栈的指令执行过程 先行读数栈,先行操作栈,后行写数栈。 理想情况下,指令执行部件应该一直忙碌。 连续执行n条指令的时间为:,2019/6/6,19,先行缓冲栈,设置先行缓冲栈的目的:使指令分析器和指令执行部件能够独立工作。 1.先行指令缓冲栈: 处于主存储器与指令分析器之间。 用它来平滑主存储器取指令和指令分析器使用指令之间的速度差异。 RR型指令,不必处理,直接送先行缓冲栈。 RS型指令,主存有效地址送先
10、行读数栈,用该先行读数栈的寄存器编号替换指令中的主存地址码部分,形成RR*指令送先行缓冲栈。,2019/6/6,20,RI型指令,指令中的立即数送先行读数栈,用该先行读数栈的寄存器编号替换指令中的立即数部分,形成RR*指令送先行缓冲栈。 转移指令,一般在指令分析器中直接执行。 2.先行操作栈 处于指令分析器和运算控制器之间。 使指令分析器和运算器能够各自独立工作。 采用先进先出方式工作,由指令寄存器堆和控制逻辑组成。,先行缓冲栈(续),2019/6/6,21,3.先行读数栈 处于主存储器与运算器之间。 平滑运算器与主存储器的工作。 每个缓冲寄存器由地址寄存器、操作数寄存器和标志三部分组成。也可
11、以把地址寄存器和操作数寄存器合为一个。 当收到从指令分析器中送来的有效地址时,就向主存申请读操作数。 读出的操作数存放在操作数寄存器中或覆盖掉地址寄存器中的地址。,先行缓冲栈(续),2019/6/6,22,4.后行写数栈 每个后行缓冲寄存器由地址寄存器、数据寄存器和标志三部分组成。 指令分析器遇到向主存写结果的指令时,把形成的有效地址送入后行写数栈的地址寄存器中,并用该地址寄存器的编号替换指令的目的地址部分,形成RR*指令送入先行操作栈。 当运算器执行这条RR*型写数指令时, 只要把写到主存的数据送到后行写数栈的数据寄存器中即可。,先行缓冲栈(续),2019/6/6,23,先行缓冲栈(续),5
12、.采用先行控制方式时一个程序的执行情况:,2019/6/6,24,缓冲深度的设计方法,以静态分析为主,通过模拟来确定缓冲深度。 1.先行指令缓冲栈的设计 考虑两种极端情况:假设缓冲深度为DI (1)先行指令缓冲栈已经充满 指令流出的速度最快,例如连续分析RR型指令,设这种指令序列的最大长度为L1,平均分析一条这种指令的时间为t1。 指令流入的速度最慢,设平均取一条指令的时间为t2。从主存储器中取到先行指令缓冲栈中的指令条数是L1DI条。,2019/6/6,25,应该满足如下关系:L1 t1(LIDI) t2 计算出缓冲深度为: 如果这种指令流的连续长度超过L1,则先行指令缓冲栈被取空,指令分析
13、器没有指令可分析,被迫处于等待状态。缓冲栈失去作用。 (2)先行指令缓冲栈原来为空 输入端指令流入的速度最快,每次取指令的时间最短;设这种指令序列的最大长度为 L2,平均取一条这种指令的时间为 t2;,缓冲深度的设计方法(续),2019/6/6,26,输出端指令流出的速度最慢,指令分析器连续分析最难分析的指令;设平均分析一条指令的时间为 t1。分析的指令条数是L2DI条。 应该满足如下关系:(L2DI) t1LI t2 计算出缓冲深度为: 如果这种指令流的连续长度超过L2,先行指令缓冲栈被完全充满,失去缓冲作用。,缓冲深度的设计方法(续),2019/6/6,27,2.设计举例 在一般处理机中连
14、续执行短指令的概率大。 例:一个采用先行控制方式的处理机,指令分析器分析一条指令用一个周期,到主存储器中取一条指令装入先行指令缓冲栈平均用4个周期,如果这种指令的平均长度为9,即90的指令是执行时间短的指令。 解:计算先行指令缓冲栈的缓冲深度为:,缓冲深度的设计方法(续),2019/6/6,28,3.先行指令缓冲栈的工作时间关系 第1个周期,取走指令k+1,请求取指令。 第4个周期末尾,指令k+8取到先行指令缓冲栈。 第8个周期末尾,指令k+9取到先行指令缓冲栈。 第9个周期,分析指令k+9,先行指令缓冲栈空。 第10个周期,指令分析器等待。,缓冲深度的设计方法(续),2019/6/6,29,
15、4.其余缓冲栈的设计原则 一般有关系:DIDCDRDW 其中:DI是先行指令缓冲栈的缓冲深度, DC是先行操作栈的缓冲深度, DR是先行读数栈的缓冲深度, DW是后行写数栈的缓冲深度。 例如:IBM370/165机: DI4,DC3,DR2,DW1。 我国研制的两台大型计算机: DI8,DCDR4,DW2。 DI12,DCDR6,DW2。,缓冲深度的设计方法(续),2019/6/6,30,数据相关,数据相关: 在执行本条指令的过程中,如果用到的指令、操作数、变址量等是前面指令的执行结果,这种相关称为数据相关。 控制相关: 由条件分支指令、转子程序指令、中断等引起的相关。 解决数据相关的方法有两
16、种: 推后分析法,遇到相关数据,推后本条指令的分析,直至所需要的数据写入到相关的存储单元。 设置专用路径。不必等到所需要的数据写入到相关存储单元,而是经专门设置的数据通路读取所需要的数据。,2019/6/6,31,1.指令相关 发生指令相关的情况: n: STORE R1, n+1 n+1: 满足关系: 结果地址(n)指令地址(n+1) 当第n条指令还没有把执行结果写到主存之前,取出的第n+1条指令显然是错误的。 在k个流水段的流水线处理机中,第n条指令要修改从第n+1到第n+ k 指令中的任意一条指令,都可能造成程序执行结果发生错误。,数据相关(续),2019/6/6,32,在采用先行控制方
17、式的处理机中,如果执行部件正在执行第n条指令,与下述情况之一发生相关,都可能造成程序执行结果发生错误。 存放在先行操作栈中的指令 正在指令分析器中分析的指令 已经预取到先行指令缓冲栈中的指令 指令执行结果还在后行缓冲栈中的指令 更严重的是:有些分支指令,可能已经在指令分析器中执行完成。,数据相关(续),2019/6/6,33,解决指令相关的根本办法是: 在程序执行过程中不允许修改指令。 现代程序设计方法要求程序具有再入性,可以被递归调用等,也要求不修改指令。 在IBM370系列机中,用“执行指令”来解决:在程序执行过程中既能够修改指令,程序又具有再入性。 “执行指令”执行由第二地址(X2)+(
18、B2)+D2)决定的主存数据区中的指令。,数据相关(续),2019/6/6,34,2.主存操作数相关 发生主存操作数相关的指令序列: n:OP A1,A2,A3 ;A1(A2) OP (A3) n+1:OP A4,A1,A5 ;A4(A1) OP (A5) 出现下列情况之一,A1、A2、A3是主存地址,就发生主存操作数相关: A1(n) A2(n1) A1(n) A3(n1) 解决办法: 运算结果写到通用寄存器,而不写到主存 对于访问主存储器的请求,写结果的优先级高于读操作数。,数据相关(续),2019/6/6,35,有先行操作栈处理机中,分析指令、已经执行指令需要进入后行写数操作栈向主存写回
19、运算结果的指令之间可能相隔很多条指令。已经进入先行操作栈的任何一条指令在向主存申请读数时都可能与正在执行部件中执行的指令、正在后行写数栈中等待写结果到主存的指令,甚至还在先行操作栈中的指令发生主存操作数相关。 解决办法: 对于刚进入先行操作栈中的指令在向主存读数之前,首先把访问主存的地址与后行写数栈中的所有主存地址比较,如果发现有相等的,则先行栈的读数操作缓行,等到相关写操作数指令完成,并把结果写到主存之后再读数。,数据相关(续),2019/6/6,36,数据相关(续),3. 通用寄存器数据相关 发生寄存器数据相关的可能性很大,影响面也很大 n:OP R1,A2 ;R1(R1) OP (A2)
20、 n+1:OP R1,R2 ;R1(R1) OP (R2) 发生R1(n)R1(n1)称为R1数据相关。 发生R1(n)R2(n1)称为R2数据相关。,2019/6/6,37,解决通用寄存器数据相关的方法: 方法一:把读操作数、写运算结果与指令执行合在一个节拍。 从数据从通用寄存器读出,在运算器中完成运算,结果写回通用寄存器的整个回路中,只有通用寄存器是时序逻辑。 当发生下述情况时,不能采用这种方法: 当寄存器个数多时,读写寄存器的时间长。 当功能部件数量多时,寄存器的读写端口多。 当功能部件的执行时间比较长,或要求指令的执行时间短时 。,数据相关(续),2019/6/6,38,方法二:建立相
21、关专用通路(ByPass) 由于发生寄存器数据相关的情况很普遍,一般计算机系统都采用专用数据通路。 把读通用寄存器、执行操作和写结果分为3个周期,或2个周期。 采用专用数据通路能够缩短1至2个周期。,数据相关(续),2019/6/6,39,变址相关:在采用变址寻址方式的处理机中,由于变址量放在寄存器中,因此,可能发生与通用寄存器数据相关类似变址相关.,4. LOAD相关 LOAD操作的执行时间可能比较长 n: LOAD R1, A ;R1(A) n+1: ADD R1, R2 ;R1(R1) OP (R2) 如果 R1(n)R2(n1),或 R1(n)R1(n1), 则发生LOAD数据相关。,
22、数据相关(续),2019/6/6,40,解决方法: 方法一:由编译器在LOAD之后插入不发生数据相关的指令,由于LOAD的执行时间不确定,不能根本解决问题。 方法二:由硬件自动插入空操作,直到LOAD操作完成。 在单条流水线处理机中,也可以停止节拍发生器,直到数据从存储器中读出为止。,数据相关(续),2019/6/6,41,控制相关,因程序的执行方向可能被改变而引起的相关,也称为全局相关。 主要包括:无条件转移、一般条件转移、复合条件转移、中断等。 1. 无条件转移 在流水线处理机中,无条件转移指令不进入执行流水段,一般在指令译码阶段就实际执行完成。 如果在处理机中设置有指令先行缓冲栈,则要全
23、部或部分作废先行指令缓冲栈中的指令。,2019/6/6,42,如果转移目标指令L不在先行指令缓冲栈中,则要将先行指令缓冲栈中的所有指令全部作废,并等待取出转移目标指令L。 如果转移目标指令L在先行指令缓冲栈中,只要作废先行指令缓冲栈中的部分指令。 无条件转移指令一般对指令执行部件的工作不会造成影响。 为进一步减少无条件转移指令造成的影响,在先行指令缓冲栈的入口处增设一个专门处理无条件转移指令的指令分析器,控制相关(续),2019/6/6,43,2.一般条件转移 k: ;置条件码CC k+1:JMP(CC) L ;如果CC为真转向L L: 当条件码是上一条指令产生时,相关最严重,控制相关(续),
24、2019/6/6,44,无论转移是否成功,条转移指令都在指令分析阶段就已经执行完成。 无论转移不成功或不成功,指令分析器要停顿一段时间,等待条件码产生。,控制相关(续),2019/6/6,45,如果转移成功:指令L已经在先行指令缓冲栈,指令分析器接着“分析L”,如果指令L不在先行指令缓冲栈,指令分析器要等待一个周期。 转移不成功,对程序执行影响不大, 当转移成功时,不仅指令执行过程变成完全串行,而且要作废先行指令缓冲栈中的大量指令。 在采用流水线方式的处理机中,要通过软件与硬件的多种手段来近可能地降低转移成功的概率,减少转移成功造成的影响。,控制相关(续),2019/6/6,46,3.复合条件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 第五 标量 处理机
链接地址:https://www.31doc.com/p-2922585.html