1、第五章 标量处理机2本章主要内容本章主要内容5.1 5.1 先行控制技术先行控制技术5.2 5.2 流水线技术流水线技术5.3 5.3 相关性分析技术相关性分析技术5.4 5.4 超标量处理机超标量处理机5.5 5.5 超流水线处理机超流水线处理机5.6 5.6 超标量超流水线处理机超标量超流水线处理机3标量处理机标量处理机只有只有标量数据表示标量数据表示和和标量指令系统标量指令系统的处理机称为标量处的处理机称为标量处理机,是理机,是最常用最普通最常用最普通的处理机。的处理机。设计处理机的主要任务就是缩短解释指令的时间,提高设计处理机的主要任务就是缩短解释指令的时间,提高处理机指令的执行速度:
2、处理机指令的执行速度:提高处理机的工作主频提高处理机的工作主频。5、60年代主要采用这种技术,每年代主要采用这种技术,每3、4年处理机的速度要提高一个数量级。年处理机的速度要提高一个数量级。采用更好的算法和设计更好的功能部件采用更好的算法和设计更好的功能部件,如采用,如采用RISC等。等。多条指令并行执行多条指令并行执行。指令级的并行技术。指令级的并行技术。流水线技术。流水线技术。处理机中设置多个独立的功能部件,如浮点运算器,定点运算器,处理机中设置多个独立的功能部件,如浮点运算器,定点运算器,访存部件等。访存部件等。1.超长指令技术。超长指令技术。45.1 5.1 先行控制技术先行控制技术先
3、行控制技术的关键是采用缓冲技术和预处理技术,以及两者都采用,先行控制技术的关键是采用缓冲技术和预处理技术,以及两者都采用,通过对通过对指令流指令流和和数据流数据流的预处理和缓冲,能够尽量使指令分析器和指的预处理和缓冲,能够尽量使指令分析器和指令执行部件令执行部件独立工作独立工作并并始终处于忙碌状态始终处于忙碌状态。5.1.1 5.1.1 指令的重叠执行方式指令的重叠执行方式5.1.2 5.1.2 先行控制方式的原理先行控制方式的原理5.1.3 5.1.3 处理机结构处理机结构5.1.4 5.1.4 指令执行序列指令执行序列5.1.5 5.1.5 先行缓冲栈先行缓冲栈5.1.6 5.1.6 缓冲
4、深度的设计方法缓冲深度的设计方法5指令的重叠执行方式指令的重叠执行方式一条指令的执行可以分为多个阶段,具体分法视处理机而定,一般可一条指令的执行可以分为多个阶段,具体分法视处理机而定,一般可以分为三个阶段:以分为三个阶段:取指令取指令是指按照指令计数器的内容访问主存,取出一条指令送到指令寄是指按照指令计数器的内容访问主存,取出一条指令送到指令寄存器。存器。分析指令分析指令是指对指令的操作码进行译码,按照给定的寻址方式和地址字是指对指令的操作码进行译码,按照给定的寻址方式和地址字段内容形成操作数地址,并用这个地址读出操作数,操作数可以在主存段内容形成操作数地址,并用这个地址读出操作数,操作数可以
5、在主存也可以在寄存器。也可以在寄存器。执行指令执行指令是根据操作码的要求,完成指令规定的功能,把结果写到主存是根据操作码的要求,完成指令规定的功能,把结果写到主存或者寄存器。或者寄存器。指令分析或者指令执行阶段还得修改指令计数器的更新,为下一条指令指令分析或者指令执行阶段还得修改指令计数器的更新,为下一条指令作准备。作准备。6指令的重叠执行方式指令的重叠执行方式1.1.顺序执行方式顺序执行方式执行执行n n条指令所用的时间为:条指令所用的时间为:如果每段时间都为如果每段时间都为t t,则执行,则执行n n条指令所用的时间为:条指令所用的时间为:T T3 n t3 n t主要优点:主要优点:控制
6、简单,节省设备。控制简单,节省设备。主要缺点:主要缺点:速度慢,功能部件的利用率低。速度慢,功能部件的利用率低。Ttttiiiin(取指令分析执行)172.2.一次重叠执行方式一次重叠执行方式如果两个过程的时间相等,则执行如果两个过程的时间相等,则执行n n条指令的时间为:条指令的时间为:T T(1+2n)t(1+2n)t主要优点:主要优点:指令的执行时间缩短,指令的执行时间缩短,功能部件的利用率明显提高。功能部件的利用率明显提高。主要缺点:主要缺点:需要增加一些硬件,需要增加一些硬件,控制过程稍复杂。控制过程稍复杂。指令的重叠执行方式指令的重叠执行方式(续续)83.3.二次重叠执行方式二次重
7、叠执行方式如果三个过程的时间相等,执行如果三个过程的时间相等,执行n n条指令的时间为:条指令的时间为:T T(2(2n n)t t在理想情况下,处理机中同时有三条指令在执行。在理想情况下,处理机中同时有三条指令在执行。处理机的结构要作比较大的改变,需要采用先行控制技术。处理机的结构要作比较大的改变,需要采用先行控制技术。指令的重叠执行方式指令的重叠执行方式(续续)9先行控制方式的原理先行控制方式的原理1.1.采用二次重叠执行方式必须解决两个问题:采用二次重叠执行方式必须解决两个问题:(1)(1)有独立的取指令部件、指令分析部件和指令执行部件有独立的取指令部件、指令分析部件和指令执行部件 把一
8、个集中的指令控制器,分解成三个独立的控制器:把一个集中的指令控制器,分解成三个独立的控制器:存储控制器、指令控制器、运算控制器。存储控制器、指令控制器、运算控制器。(2)(2)要解决访问主存储器的冲突问题要解决访问主存储器的冲突问题 取指令、分析指令、执行指令都可能要访问存储器。取指令、分析指令、执行指令都可能要访问存储器。102.2.解决访存冲突的方法:解决访存冲突的方法:(1)(1)采用低位交叉存取方式:采用低位交叉存取方式:这种方法不能根本解决冲突问题。这种方法不能根本解决冲突问题。取指令、读操作数、写结果。取指令、读操作数、写结果。(2)(2)主存分为两个独立的存储器:主存分为两个独立
9、的存储器:独立的指令存储器和数据存储器。独立的指令存储器和数据存储器。如果再规定,执行指令所需要的操作数和执行结果只写到通用寄存器,如果再规定,执行指令所需要的操作数和执行结果只写到通用寄存器,则取指令、分析指令和执行指令就可以同时进行。则取指令、分析指令和执行指令就可以同时进行。在许多高性能处理机中,有独立的指令在许多高性能处理机中,有独立的指令CacheCache和数据和数据CacheCache。这种结构被。这种结构被称为哈佛结构。称为哈佛结构。先行控制方式的原理先行控制方式的原理(续)(续)11(3)(3)采用先行控制技术采用先行控制技术采用先行控制技术的关键是缓冲技术和预处理技术。采用
10、先行控制技术的关键是缓冲技术和预处理技术。缓冲技术通常用在工作速度不固定的两个功能部件之间。设置缓冲缓冲技术通常用在工作速度不固定的两个功能部件之间。设置缓冲栈的目的是用来以栈的目的是用来以平滑平滑功能部件之间的工作速度。功能部件之间的工作速度。在采用了缓冲技术和预处理技术之后,运算器能够专心于数据的运在采用了缓冲技术和预处理技术之后,运算器能够专心于数据的运算,从而大幅度提高程序的执行速度。算,从而大幅度提高程序的执行速度。先行控制方式的原理先行控制方式的原理(续)(续)12处理机结构处理机结构1.1.三个独立的控制器:三个独立的控制器:存储控制器、指令控制器、运算控制器。存储控制器、指令控
11、制器、运算控制器。2.2.四个缓冲栈:四个缓冲栈:先行指令缓冲栈、先行读数缓冲栈、先行操作栈、后行写数栈。先行指令缓冲栈、先行读数缓冲栈、先行操作栈、后行写数栈。3.3.处理机组成处理机组成134.4.先行指令缓冲栈的组成先行指令缓冲栈的组成作用:作用:只要指令缓冲栈没有充满,就自动发出取指令的请求。只要指令缓冲栈没有充满,就自动发出取指令的请求。指令分析器每分析完一条指令,自动向指令缓冲栈发出取下一条指令指令分析器每分析完一条指令,自动向指令缓冲栈发出取下一条指令的请求,指令取出后就把先行指令缓冲栈中的指令作废。的请求,指令取出后就把先行指令缓冲栈中的指令作废。分析指令速度和从主存取指令的速
12、度是随机的,指令缓冲栈的指令数分析指令速度和从主存取指令的速度是随机的,指令缓冲栈的指令数目是动态的。目是动态的。设置两个程序计数器:设置两个程序计数器:先行程序计数器先行程序计数器PCPC1 1,用来指示取指令,用来指示取指令,现行程序计数器现行程序计数器PCPC,记录指令分析器正在分析的指令地址。,记录指令分析器正在分析的指令地址。处理机结构处理机结构(续)(续)14处理机结构处理机结构(续)(续)先行缓冲站的组成先行缓冲站的组成指令缓冲存储器堆,采用先进先出的方式,保证指令的执行顺序不致混乱。指令缓冲存储器堆,采用先进先出的方式,保证指令的执行顺序不致混乱。15处理机结构处理机结构(续)
13、(续)先行控制方式中的一次重叠执行先行控制方式中的一次重叠执行重叠部分,无论谁先结束,都不能提前执行下一条指令,需要等待。重叠部分,无论谁先结束,都不能提前执行下一条指令,需要等待。无论任何时刻,在指令分析部件和指令执行部件内都只有相邻的两条指令重叠无论任何时刻,在指令分析部件和指令执行部件内都只有相邻的两条指令重叠执行,处理机只需要设置执行,处理机只需要设置一套指令分析部件一套指令分析部件,指令控制器;指令控制器;一套指令执行部一套指令执行部件件,运算控制器和运算器。控制方式简单。运算控制器和运算器。控制方式简单。所需要时间为所需要时间为T=(1+n)t16处理机结构处理机结构(续)(续)5
14、.5.存在的主要问题:存在的主要问题:计算机指令系统复杂,各类指令计算机指令系统复杂,各类指令“分析分析”和和“执行执行”的时间相差的时间相差很大,分析指令和执行指令常常相互等待,造成部件的浪费。很大,分析指令和执行指令常常相互等待,造成部件的浪费。分析分析k+1k+1操作所需要的操作数正好是执行操作所需要的操作数正好是执行k k的结果,不能重叠执行,的结果,不能重叠执行,发生发生数据相关数据相关,还有,还有控制相关控制相关,变址相关变址相关。转移或转子程序指令时,程序的执行过程不是顺序的,先行指令转移或转子程序指令时,程序的执行过程不是顺序的,先行指令缓冲栈中预取指令和分析的下一条指令都可能
15、要作废。缓冲栈中预取指令和分析的下一条指令都可能要作废。17指令执行时序指令执行时序设置了指令缓冲栈,取指令的时间就可以忽略不计。设置了指令缓冲栈,取指令的时间就可以忽略不计。一条指令的执行可分为一条指令的执行可分为2 2个过程。个过程。1.1.分析指令和执行指令时间不相等时的情况。分析指令和执行指令时间不相等时的情况。18指令执行时序指令执行时序2.2.采用先行缓冲栈的指令执行过程采用先行缓冲栈的指令执行过程先行读数栈先行读数栈,先行操作栈先行操作栈,后行写数栈。后行写数栈。理想情况下,指令执行部件应该一直忙碌。理想情况下,指令执行部件应该一直忙碌。连续执行连续执行n n条指令的时间为:条指
16、令的时间为:niiniitttT111执行执行分析先行19先行缓冲栈先行缓冲栈设置先行缓冲栈的目的:设置先行缓冲栈的目的:使指令分析器和指令执行部件能使指令分析器和指令执行部件能够独立工作。够独立工作。1.1.先行指令缓冲栈:先行指令缓冲栈:处于主存储器与指令分析器之间。处于主存储器与指令分析器之间。用它来平滑用它来平滑主存储器取指令主存储器取指令和和指令分析器指令分析器使用指令之间的速度差异。使用指令之间的速度差异。RRRR型指令型指令,不必处理,直接送先行缓冲栈。,不必处理,直接送先行缓冲栈。RSRS型指令型指令,主存有效地址送先行读数栈,用该先行读数栈的寄存器编号,主存有效地址送先行读数
17、栈,用该先行读数栈的寄存器编号替换指令中的主存地址码部分,形成替换指令中的主存地址码部分,形成RRRR*指令送先行缓冲栈。指令送先行缓冲栈。20RIRI型指令型指令,指令中的立即数送先行读数栈,用该先行读数栈的寄存器编,指令中的立即数送先行读数栈,用该先行读数栈的寄存器编号替换指令中的立即数部分,形成号替换指令中的立即数部分,形成RRRR*指令送先行缓冲栈。指令送先行缓冲栈。转移指令转移指令,一般在指令分析器中直接执行。,一般在指令分析器中直接执行。2.2.先行操作栈先行操作栈处于指令分析器和运算控制器之间。处于指令分析器和运算控制器之间。使指令分析器和运算器能够各自独立工作。使指令分析器和运
18、算器能够各自独立工作。采用先进先出方式工作,由指令寄存器堆和控制逻辑组成。采用先进先出方式工作,由指令寄存器堆和控制逻辑组成。先行缓冲栈先行缓冲栈(续)(续)213.3.先行读数栈先行读数栈处于主存储器与运算器之间。处于主存储器与运算器之间。平滑运算器与主存储器的工作。平滑运算器与主存储器的工作。每个缓冲寄存器由地址寄存器、操作数寄存器和标志三部分组成。每个缓冲寄存器由地址寄存器、操作数寄存器和标志三部分组成。也可以把地址寄存器和操作数寄存器合为一个。也可以把地址寄存器和操作数寄存器合为一个。当收到从指令分析器中送来的有效地址时,就向主存申请读操作数。当收到从指令分析器中送来的有效地址时,就向
19、主存申请读操作数。读出的操作数存放在操作数寄存器中或覆盖掉地址寄存器中的地址。读出的操作数存放在操作数寄存器中或覆盖掉地址寄存器中的地址。先行缓冲栈先行缓冲栈(续)(续)224.4.后行写数栈后行写数栈每个后行缓冲寄存器由地址寄存器、数据寄存器和标志三部分组成。每个后行缓冲寄存器由地址寄存器、数据寄存器和标志三部分组成。指令分析器遇到向主存写结果的指令时,把形成的有效地址送入后行指令分析器遇到向主存写结果的指令时,把形成的有效地址送入后行写数栈的地址寄存器中,并用该地址寄存器的编号替换指令的目的地写数栈的地址寄存器中,并用该地址寄存器的编号替换指令的目的地址部分,形成址部分,形成RRRR*指令
20、送入先行操作栈。指令送入先行操作栈。当运算器执行这条当运算器执行这条RRRR*型写数指令时,型写数指令时,只要把写到主存的数据送到后行写数栈的数据寄存器中即可。只要把写到主存的数据送到后行写数栈的数据寄存器中即可。先行缓冲栈先行缓冲栈(续)(续)23先行缓冲栈先行缓冲栈(续)(续)5.5.采用先行控制方式时一个程序的执行情况:采用先行控制方式时一个程序的执行情况:24缓冲深度的设计方法缓冲深度的设计方法以静态分析为主,通过模拟来确定缓冲深度。以静态分析为主,通过模拟来确定缓冲深度。1.1.先行指令缓冲栈的设计先行指令缓冲栈的设计考虑两种极端情况:假设缓冲深度为考虑两种极端情况:假设缓冲深度为D
21、 DI I(1)(1)先行指令缓冲栈已经充满先行指令缓冲栈已经充满指令流出指令流出的速度最快,例如连续分析的速度最快,例如连续分析RRRR型指令,设这种指令序列的最大型指令,设这种指令序列的最大长度为长度为L L1 1,平均分析一条这种指令的时间为,平均分析一条这种指令的时间为t t1 1。指令流入指令流入的速度最慢,设平均取一条指令的时间为的速度最慢,设平均取一条指令的时间为t t2 2。从主存储器中取。从主存储器中取到先行指令缓冲栈中的指令条数是到先行指令缓冲栈中的指令条数是L L1 1D DI I条。条。25应该满足如下关系:应该满足如下关系:L L1 1 t t1 1(L(LI ID
22、DI I)t)t2 2计算出缓冲深度为:计算出缓冲深度为:如果这种指令流的连续长度超过如果这种指令流的连续长度超过L L1 1,则先行指令缓冲栈,则先行指令缓冲栈被取空被取空,指令分析,指令分析器没有指令可分析,被迫处于等待状态。缓冲栈失去作用。器没有指令可分析,被迫处于等待状态。缓冲栈失去作用。(2)(2)先行指令缓冲栈原来为空先行指令缓冲栈原来为空输入端指令流入的速度最快,每次取指令的时间最短;设这种指令序列的输入端指令流入的速度最快,每次取指令的时间最短;设这种指令序列的最大长度为最大长度为 L L2 2,平均取一条这种指令的时间为,平均取一条这种指令的时间为 t t2 2;DLtttI
23、1212()缓冲深度的设计方法缓冲深度的设计方法(续)(续)26输出端指令流出的速度最慢输出端指令流出的速度最慢,指令分析器连续分析最难分析的指令;设平,指令分析器连续分析最难分析的指令;设平均分析一条指令的时间为均分析一条指令的时间为 t t1 1。分析的指令条数是。分析的指令条数是L L2 2D DI I条。条。应该满足如下关系:应该满足如下关系:(L(L2 2D DI I)t)t1 1L LI I t t2 2计算出缓冲深度为:计算出缓冲深度为:如果这种指令流的连续长度超过如果这种指令流的连续长度超过L L2 2,先行指令缓冲栈,先行指令缓冲栈被完全充满被完全充满,失去缓,失去缓冲作用。
24、冲作用。DLtttI2121()缓冲深度的设计方法缓冲深度的设计方法(续)(续)272.2.设计举例设计举例在一般处理机中连续执行短指令的概率大。在一般处理机中连续执行短指令的概率大。例:一个采用先行控制方式的处理机,指令分析器分析一条指令用例:一个采用先行控制方式的处理机,指令分析器分析一条指令用一个周期,到主存储器中取一条指令装入先行指令缓冲栈平均用一个周期,到主存储器中取一条指令装入先行指令缓冲栈平均用4 4个个周期,如果这种指令的平均长度为周期,如果这种指令的平均长度为9 9,即,即9090的指令是执行时间短的的指令是执行时间短的指令。指令。解:计算先行指令缓冲栈的缓冲深度为:解:计算
25、先行指令缓冲栈的缓冲深度为:DLtttI121294147()()缓冲深度的设计方法缓冲深度的设计方法(续)(续)283.3.先行指令缓冲栈的工作时间关系先行指令缓冲栈的工作时间关系第第1 1个周期,取走指令个周期,取走指令k+1k+1,请求取指令。,请求取指令。第第4 4个周期末尾,指令个周期末尾,指令k+8k+8取到先行指令缓冲栈。取到先行指令缓冲栈。第第8 8个周期末尾,指令个周期末尾,指令k+9k+9取到先行指令缓冲栈。取到先行指令缓冲栈。第第9 9个周期,分析指令个周期,分析指令k+9k+9,先行指令缓冲栈空。,先行指令缓冲栈空。第第1010个周期,指令分析器等待。个周期,指令分析器
26、等待。缓冲深度的设计方法缓冲深度的设计方法(续)(续)294.4.其余缓冲栈的设计原则其余缓冲栈的设计原则一般有关系:一般有关系:D DI IDDC CDDR RDDW W 其中:其中:D DI I是先行指令缓冲栈的缓冲深度,是先行指令缓冲栈的缓冲深度,D DC C是先行操作栈的缓冲深度,是先行操作栈的缓冲深度,D DR R是先行读数栈的缓冲深度,是先行读数栈的缓冲深度,D DW W是后行写数栈的缓冲深度。是后行写数栈的缓冲深度。例如:例如:IBM370/165IBM370/165机:机:D DI I4 4,D DC C3 3,D DR R2 2,D DW W1 1。我国研制的两台大型计算机:
27、我国研制的两台大型计算机:D DI I8 8,D DC CD DR R4 4,D DW W2 2。D DI I1212,D DC CD DR R6 6,D DW W2 2。缓冲深度的设计方法缓冲深度的设计方法(续)(续)30数据相关数据相关数据相关:数据相关:在执行本条指令的过程中,如果用到的指令、操作数、变址量等是前面指在执行本条指令的过程中,如果用到的指令、操作数、变址量等是前面指令的执行结果,这种相关称为数据相关。令的执行结果,这种相关称为数据相关。控制相关:控制相关:由条件分支指令、转子程序指令、中断等引起的相关。由条件分支指令、转子程序指令、中断等引起的相关。解决数据相关的方法有两种
28、:解决数据相关的方法有两种:推后分析法,推后分析法,遇到相关数据,推后本条指令的分析,直至所需要的数据写遇到相关数据,推后本条指令的分析,直至所需要的数据写入到相关的存储单元。入到相关的存储单元。设置专用路径。设置专用路径。不必等到所需要的数据写入到相关存储单元,而是经专门不必等到所需要的数据写入到相关存储单元,而是经专门设置的数据通路读取所需要的数据。设置的数据通路读取所需要的数据。311.1.指令相关指令相关发生指令相关的情况:发生指令相关的情况:n n:STORE R1,STORE R1,n n+1+1 n n+1+1:满足关系:满足关系:结果地址结果地址(n)n)指令地址指令地址(n
29、n+1)+1)当第当第n n条指令还没有把执行结果写到主存之前,取出的第条指令还没有把执行结果写到主存之前,取出的第n n+1+1条指令条指令显然是错误的。显然是错误的。在在k k个流水段的流水线处理机中,第个流水段的流水线处理机中,第n n条指令要修改从第条指令要修改从第n+n+1 1到第到第n+kn+k 指令中的任意一条指令,都可能造成程序执行结果发生错误。指令中的任意一条指令,都可能造成程序执行结果发生错误。数据相关数据相关(续)(续)32在采用先行控制方式的处理机中,如果执行部件正在执行在采用先行控制方式的处理机中,如果执行部件正在执行第第n n条指令,与下述情况之一发生相关,都可能造
30、成程序执条指令,与下述情况之一发生相关,都可能造成程序执行结果发生错误。行结果发生错误。存放在先行操作栈中的指令存放在先行操作栈中的指令正在指令分析器中分析的指令正在指令分析器中分析的指令已经预取到先行指令缓冲栈中的指令已经预取到先行指令缓冲栈中的指令指令执行结果还在后行缓冲栈中的指令指令执行结果还在后行缓冲栈中的指令更严重的是:有些分支指令,可能已经在指令分析器中执行完成。更严重的是:有些分支指令,可能已经在指令分析器中执行完成。数据相关数据相关(续)(续)33解决指令相关的根本办法是:解决指令相关的根本办法是:在程序执行过程中不允许修改指令。在程序执行过程中不允许修改指令。现代程序设计方法
31、要求程序具有再入性,可以被递归调用现代程序设计方法要求程序具有再入性,可以被递归调用等,也要求不修改指令。等,也要求不修改指令。在在IBM370IBM370系列机中,用系列机中,用“执行指令执行指令”来解决:在程序执行过程中既来解决:在程序执行过程中既能够修改指令,程序又具有再入性。能够修改指令,程序又具有再入性。“执行指令执行指令”执行由第二地址执行由第二地址(X(X2 2)+(B)+(B2 2)+D)+D2 2)决定的主存数据区中决定的主存数据区中的指令。的指令。数据相关数据相关(续)(续)342.2.主存操作数相关主存操作数相关发生主存操作数相关的指令序列:发生主存操作数相关的指令序列:
32、n n:OP AOP A1 1,A A2 2,A A3 3 ;A A1 1(A(A2 2)OP(A)OP(A3 3)n+1 n+1:OP AOP A4 4,A A1 1,A A5 5 ;A A4 4(A(A1 1)OP(A)OP(A5 5)出现下列情况之一,出现下列情况之一,A A1 1、A A2 2、A A3 3是主存地址,就发生主存操作数相关:是主存地址,就发生主存操作数相关:A A1 1(n n)A A2 2(n n1 1)A A1 1(n n)A A3 3(n n1 1)解决办法:解决办法:运算结果写到通用寄存器,而不写到主存运算结果写到通用寄存器,而不写到主存对于访问主存储器的请求,
33、写结果的优先级高于读操作数。对于访问主存储器的请求,写结果的优先级高于读操作数。数据相关数据相关(续)(续)35有先行操作栈处理机中,分析指令、已经执行指令需要进入后行写数操作栈有先行操作栈处理机中,分析指令、已经执行指令需要进入后行写数操作栈向主存写回运算结果的指令之间可能相隔很多条指令。已经进入先行操作栈向主存写回运算结果的指令之间可能相隔很多条指令。已经进入先行操作栈的任何一条指令在向主存申请读数时都可能与正在执行部件中执行的指令、的任何一条指令在向主存申请读数时都可能与正在执行部件中执行的指令、正在后行写数栈中等待写结果到主存的指令,甚至还在先行操作栈中的指令正在后行写数栈中等待写结果
34、到主存的指令,甚至还在先行操作栈中的指令发生主存操作数相关。发生主存操作数相关。解决办法:解决办法:对于刚进入先行操作栈中的指令在向主存读数之前,首先把访问主存的地址与后对于刚进入先行操作栈中的指令在向主存读数之前,首先把访问主存的地址与后行写数栈中的所有主存地址比较,如果发现有相等的,则先行栈的读数操作缓行,行写数栈中的所有主存地址比较,如果发现有相等的,则先行栈的读数操作缓行,等到相关写操作数指令完成,并把结果写到主存之后再读数。等到相关写操作数指令完成,并把结果写到主存之后再读数。数据相关数据相关(续)(续)36数据相关数据相关(续)(续)3.3.通用寄存器数据相关通用寄存器数据相关发生
35、寄存器数据相关的可能性很大,影响面也很大发生寄存器数据相关的可能性很大,影响面也很大 n n:OP ROP R1 1,A A2 2 ;R R1 1(R(R1 1)OP(A)OP(A2 2)n+1 n+1:OP ROP R1 1,R R2 2 ;R R1 1(R(R1 1)OP(R)OP(R2 2)发生发生R R1 1(n)(n)R R1 1(n(n1)1)称为称为R R1 1数据相关。数据相关。发生发生R R1 1(n)(n)R R2 2(n(n1)1)称为称为R R2 2数据相关。数据相关。37解决通用寄存器数据相关的方法:解决通用寄存器数据相关的方法:方法一:方法一:把读操作数、写运算结果
36、与指令执行合在一个节拍。把读操作数、写运算结果与指令执行合在一个节拍。从数据从通用寄存器读出,在运算器中完成运算,结果写回通用寄从数据从通用寄存器读出,在运算器中完成运算,结果写回通用寄存器的整个回路中,只有通用寄存器是时序逻辑。存器的整个回路中,只有通用寄存器是时序逻辑。当发生下述情况时,不能采用这种方法:当发生下述情况时,不能采用这种方法:当寄存器个数多时,读写寄存器的时间长。当寄存器个数多时,读写寄存器的时间长。当功能部件数量多时,寄存器的读写端口多。当功能部件数量多时,寄存器的读写端口多。当功能部件的执行时间比较长,或要求指令的执行时间短时当功能部件的执行时间比较长,或要求指令的执行时
37、间短时 。数据相关数据相关(续)(续)38方法二:方法二:建立建立相关专用通路相关专用通路(ByPass)(ByPass)由于发生寄存器数据相关的情况很普遍,一般计算机系统都采用专由于发生寄存器数据相关的情况很普遍,一般计算机系统都采用专用数据通路。用数据通路。把读通用寄存器、执行操作和写结果分为把读通用寄存器、执行操作和写结果分为3 3个周期,或个周期,或2 2个周期。个周期。采用专用数据通路能够缩短采用专用数据通路能够缩短1 1至至2 2个周期。个周期。数据相关数据相关(续)(续)39变址相关:变址相关:在采用变址寻址方式的处理机中,由于变址量在采用变址寻址方式的处理机中,由于变址量放在寄
38、存器中,因此,可能发生与通用寄存器数据相关类放在寄存器中,因此,可能发生与通用寄存器数据相关类似似变址相关变址相关.4.LOAD4.LOAD相关相关 LOADLOAD操作的执行时间可能比较长操作的执行时间可能比较长 n n:LOAD RLOAD R1 1,A A ;R R1 1(A)(A)n+1 n+1:ADD RADD R1 1,R R2 2 ;R R1 1(R(R1 1)OP(R)OP(R2 2)如果如果 R R1 1(n)(n)R R2 2(n(n1)1),或,或 R R1 1(n)(n)R R1 1(n(n1)1),则发生则发生LOADLOAD数据相关。数据相关。数据相关数据相关(续)
39、(续)40解决方法:解决方法:方法一:方法一:由编译器在由编译器在LOADLOAD之后插入不发生数据相关的指令,之后插入不发生数据相关的指令,由于由于LOADLOAD的执行时间不确定,不能根本解决问题。的执行时间不确定,不能根本解决问题。方法二:方法二:由硬件自动插入空操作,直到由硬件自动插入空操作,直到LOADLOAD操作完成。操作完成。在单条流水线处理机中,也可以停止节拍发生器,直到数据从存在单条流水线处理机中,也可以停止节拍发生器,直到数据从存储器中读出为止。储器中读出为止。数据相关数据相关(续)(续)41控制相关控制相关因程序的执行方向可能被改变而引起的相关,也称为因程序的执行方向可能
40、被改变而引起的相关,也称为全局全局相关相关。主要包括:主要包括:无条件转移、一般条件转移、复合条件转移、中断无条件转移、一般条件转移、复合条件转移、中断等。等。1.1.无条件转移无条件转移在流水线处理机中,无条件转移指令不进入执行流水段,一般在指在流水线处理机中,无条件转移指令不进入执行流水段,一般在指令译码阶段就实际执行完成。令译码阶段就实际执行完成。如果在处理机中设置有指令先行缓冲栈,则要全部或部分作废先行如果在处理机中设置有指令先行缓冲栈,则要全部或部分作废先行指令缓冲栈中的指令。指令缓冲栈中的指令。42如果转移目标指令如果转移目标指令L L不在先行指令缓冲栈中不在先行指令缓冲栈中,则要
41、将先行指令,则要将先行指令缓冲栈中的所有指令全部作废,并等待取出转移目标指令缓冲栈中的所有指令全部作废,并等待取出转移目标指令L L。如果转移目标指令如果转移目标指令L L在先行指令缓冲栈中在先行指令缓冲栈中,只要作废先行指令,只要作废先行指令缓冲栈中的部分指令。缓冲栈中的部分指令。无条件转移指令一般对指令执行部件的工作不会造成影响。无条件转移指令一般对指令执行部件的工作不会造成影响。为进一步减少无条件转移指令造成的影响,为进一步减少无条件转移指令造成的影响,在先行指令缓冲在先行指令缓冲栈的入口处增设一个专门处理无条件转移指令的指令分析器栈的入口处增设一个专门处理无条件转移指令的指令分析器控制
42、相关控制相关(续续)432.2.一般条件转移一般条件转移 k k:;置条件码置条件码CCCC k+1 k+1:JMP(CC)L ;JMP(CC)L ;如果如果CCCC为真转向为真转向L L L L:当条件码是上一条指令产生时,相关最严重当条件码是上一条指令产生时,相关最严重控制相关控制相关(续续)44无论转移是否成功,条转移指令都在指令分析阶段就已经执行完成。无论转移是否成功,条转移指令都在指令分析阶段就已经执行完成。无论转移不成功或不成功,指令分析器要停顿一段时间,等待条件无论转移不成功或不成功,指令分析器要停顿一段时间,等待条件码产生。码产生。控制相关控制相关(续续)45如果转移成功:指令
43、如果转移成功:指令L L已经在先行指令缓冲栈,指令分析器接着已经在先行指令缓冲栈,指令分析器接着“分析分析L”L”,如果指令,如果指令L L不在先行指令缓冲栈,指令分析器要等待一个周期。不在先行指令缓冲栈,指令分析器要等待一个周期。转移不成功,对程序执行影响不大,转移不成功,对程序执行影响不大,当转移成功时,不仅指令执行过程变成完全串行,而且要作废先行指令当转移成功时,不仅指令执行过程变成完全串行,而且要作废先行指令缓冲栈中的大量指令。缓冲栈中的大量指令。在采用流水线方式的处理机中,要通过软件与硬件的多种手段来近可能在采用流水线方式的处理机中,要通过软件与硬件的多种手段来近可能地降低转移成功的
44、概率,减少转移成功造成的影响。地降低转移成功的概率,减少转移成功造成的影响。控制相关控制相关(续续)463.3.复合条件转移复合条件转移 k k:OP L;OP L;产生条件码,并决定是否转向产生条件码,并决定是否转向L L L L:如果转移不成功:不造成任何影响,就象普通的运算型指令一样如果转移不成功:不造成任何影响,就象普通的运算型指令一样如果转移成功:造成的影响比一般条件转移指令还要大得多。如果转移成功:造成的影响比一般条件转移指令还要大得多。全部全部或部分作废先行指令缓冲栈、先行操作栈、先行读数栈和指令分析或部分作废先行指令缓冲栈、先行操作栈、先行读数栈和指令分析器中的指令。器中的指令
45、。必须采取策略,减小转移成功造成的影响。必须采取策略,减小转移成功造成的影响。控制相关控制相关(续续)47控制相关控制相关(续续)48转移预测技术转移预测技术转移预测技术包括:转移预测技术包括:静态分支预测:静态分支预测:在程序执行过程中转移预测方向不能改变在程序执行过程中转移预测方向不能改变动态分支预测:动态分支预测:在程序执行过程中能够改变转移预测方向在程序执行过程中能够改变转移预测方向49静态分支预测技术静态分支预测技术1.1.软件软件“猜测法猜测法”目标:目标:通过编译器尽量降低转移成功的概率。通过编译器尽量降低转移成功的概率。例如:对于循环程序,普通编译器生成的目标代码,转移成功的概
46、率例如:对于循环程序,普通编译器生成的目标代码,转移成功的概率很高,不成功的只有一次。这种编译结果对流水线极为不利。很高,不成功的只有一次。这种编译结果对流水线极为不利。优点:优点:不需要改变先行控制器的硬件结构,只需适当修改编译器就能够大幅度不需要改变先行控制器的硬件结构,只需适当修改编译器就能够大幅度降低条件转移指令对先行控制器产生的影响。其最终目标是提高处理机降低条件转移指令对先行控制器产生的影响。其最终目标是提高处理机执行程序的速度。执行程序的速度。50静态分支预测技术静态分支预测技术(续)(续)软件软件“猜测法猜测法”:通过编译器降低转移成功的概率通过编译器降低转移成功的概率512.
47、2.硬件硬件“猜测法猜测法”方法:方法:通过改变硬件结构来降低转移指令对流水线的影响通过改变硬件结构来降低转移指令对流水线的影响在先行指令缓冲栈的入口处设置一个简单的指令分析器,当检测到转在先行指令缓冲栈的入口处设置一个简单的指令分析器,当检测到转移指令时,就把转移目标地址移指令时,就把转移目标地址L L送入先行程序计数器送入先行程序计数器PCPC1 1中,同时保留中,同时保留当前当前PCPC1 1中的内容到另一寄存器中。中的内容到另一寄存器中。转移成功,猜测正确。对转移指令对流水线不造成影响。转移成功,猜测正确。对转移指令对流水线不造成影响。转移不成功,用保存下来的地址恢复转移不成功,用保存
48、下来的地址恢复PCPC1 1和和PCPC。软硬件共同配合,都往同一个方向去猜测。软硬件共同配合,都往同一个方向去猜测。静态分支预测技术静态分支预测技术(续)(续)523.3.两个先行指令缓冲栈两个先行指令缓冲栈向前条件转移,转移成功与不成功各向前条件转移,转移成功与不成功各50%50%在先行指令缓冲栈中在先行指令缓冲栈中增加一个先行目标缓冲栈增加一个先行目标缓冲栈按照转移成功的方向预取指令到先行目标缓冲栈中。按照转移成功的方向预取指令到先行目标缓冲栈中。先行指令缓冲栈仍然按照转移不成功的方向继续预取指令。先行指令缓冲栈仍然按照转移不成功的方向继续预取指令。如果转移不成功,则继续分析原来先行指令
49、缓冲栈中指令。如果转移不成功,则继续分析原来先行指令缓冲栈中指令。如果转移成功,则分析新增设的先行目标缓冲栈中的指令。如果转移成功,则分析新增设的先行目标缓冲栈中的指令。静态分支预测技术静态分支预测技术(续)(续)53静态分支预测技术静态分支预测技术(续)(续)AIB,新增先行指令,新增先行指令缓冲栈,缓冲栈,IB原先行指令原先行指令缓冲栈。缓冲栈。TR1,TR2,保存,保存PC1和和PC中的内容,转移不中的内容,转移不成功,恢复成功,恢复PC1和和PC。54短循环程序的处理短循环程序的处理在循环程序中存在大量的短循环程序,对于短循环程序,在循环程序中存在大量的短循环程序,对于短循环程序,一般
50、先行指令缓冲栈的效率很低,一种极端的情况是:一般先行指令缓冲栈的效率很低,一种极端的情况是:当循环体只有一条指令,先行缓冲栈失效。指令分析器当循环体只有一条指令,先行缓冲栈失效。指令分析器分析完该指令后就清除指令缓冲栈,重新到主存取指令。分析完该指令后就清除指令缓冲栈,重新到主存取指令。短循环程序的特点:短循环程序的特点:循环体的长度小于等于先行指令缓冲栈的深度。循环体的长度小于等于先行指令缓冲栈的深度。使得在循环程序执行过程中,整个循环体能够始终存放在先行指令使得在循环程序执行过程中,整个循环体能够始终存放在先行指令缓冲栈不被清除。循环程序可以多次重复使用减少访问主存的次数。缓冲栈不被清除。