计算机系统结构张晨曦版课后答案 联系客服

发布时间 : 星期二 文章计算机系统结构张晨曦版课后答案更新完毕开始阅读21b93c69011ca300a6c39089

则称指令i和j发生了反相关。

输出相关:考虑两条指令i和j,i在j的前面,如果指令j和指令i所写的名相同,则称指令i和j发生了输出相关。

换名技术:名相关的两条指令之间并没有数据的传送,只是使用了相同的名。可以把其中一条指令所使用的名换成别的,以此来消除名相关。

结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。

数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。

控制冲突:流水线遇到分支指令或其它会改变PC值的指令所引起的冲突。

定向:用来解决写后读冲突的。在发生写后读相关的情况下,在计算结果尚未出来之前,后面等待使用该结果的指令并不见得是马上就要用该结果。如果能够将该计算结果从其产生的地方直接送到其它指令需要它的地方,那么就可以避免停顿。

写后读冲突:考虑两条指令i和j,且i在j之前进入流水线,指令j用到指令i的计算结果,而且在i将结果写入寄存器之前就去读该寄存器,因而得到的是旧值。

读后写冲突:考虑两条指令i和j,且i在j之前进入流水线,指令j的目的寄存器和指令i的源操作数寄存器相同,而且j在i读取该寄存器之前就先对它进行了写操作,导致i读到的值是错误的。

写后写冲突:考虑两条指令i和j,且i在j之前进入流水线,,指令j和指令i的结果单元(寄存器或存储器单元)相同,而且j在i写入之前就先对该单元进行了写入操作,从而导致写入顺序错误。这时在结果单元中留下的是i写入的值,而不是j写入的。

链接技术:具有先写后读相关的两条指令,在不出现功能部件冲突和Vi冲突的情况下,可以把功能部件链接起来进行流水处理,以达到加快执行的目的。

分段开采:当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段。

半性能向量长度:向量处理机的性能为其最大性能 的一半时所需的向量长度。

向量长度临界值:向量流水方式的处理速度优于标量串行方式的处理速度时所需的向量长度的最小值。

3.2 指令的执行可采用顺序执行、重叠执行和流水线三种方式,它们的主要区别是什么?各有何优缺点。 答:(1)指令的顺序执行是指指令与指令之间顺序串行。即上一条指令全部执行完后,才能开始执行下一条指令。

优点:控制简单,节省设备。缺点:执行指令的速度慢,功能部件的利用率低。

(2)指令的重叠指令是在相邻的指令之间,让第k条指令与取第k+l条指令同时进行。重叠执行不能加快单条指令的执行速度,但在硬件增加不多的情况下,可以加快相邻两条指令以及整段程序的执行速度。与顺序方式相比,功能部件的利用率提高了,控制变复杂了。 (3)指令的流水执行是把一个指令的执行过程分解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,每个子过程与其它的子过程并行进行。依靠提高吞吐率来提高系统性能。流水线中各段的时间应尽可能相等

3.3 简述先行控制的基本思想。 答:先行控制技术是把缓冲技术和预处理技术相结合。缓冲技术是在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作。预处理技术是指预取指令、对指令进行加工以及预取操作数等。

采用先行控制方式的处理机内部设置多个缓冲站,用于平滑主存、指令分析部件、运算器三者之间的工作。这样不仅使它们都能独立地工作,充分忙碌而不用相互等待,而且使指令分析部件和运算器分别能快速地取得指令和操作数,大幅度地提高指令的执行速度和部件的效率。这些缓冲站都按先进先出的方式工作,而且都是由一组若干个能快速访问的存储单元和相关的控制逻辑组成。

采用先行控制技术可以实现多条指令的重叠解释执行。

3.4 设一条指令的执行过程分成取指令、分析指令和执行指令三个阶段,每个阶段所需的时间分别为△t、△t和2△t 。分别求出下列各种情况下,连续执行N条指令所需的时间。 (1)顺序执行方式;

(2)只有“取指令”与“执行指令”重叠; (3)“取指令”、“分析指令”与“执行指令”重叠。 解:(1)每条指令的执行时间为:△t+△t+2△t=4△t 连续执行N条指令所需的时间为:4N△t

(2)连续执行N条指令所需的时间为:4△t+3(N-1)△t=(3N+1)△t (3)连续执行N条指令所需的时间为:4△t+2(N-1)△t=(2N+2)△t

3.5 简述流水线技术的特点。 答:流水技术有以下特点: (1) 流水线把一个处理过程分解为若干个子过程,每个子过程由一个专门的功能部件来实现。因此,流水线实际上是把一个大的处理功能部件分解为多个独立的功能部件,并依靠它们的并行工作来提高吞吐率。

(2) 流水线中各段的时间应尽可能相等,否则将引起流水线堵塞和断流。 (3) 流水线每一个功能部件的前面都要有一个缓冲寄存器,称为流水寄存器。

(4) 流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。

(5) 流水线需要有通过时间和排空时间。在这两个时间段中,流水线都不是满负荷工作。

3.6 解决流水线瓶颈问题有哪两种常用方法? 答:细分瓶颈段与重复设置瓶颈段

3.7 减少流水线分支延迟的静态方法有哪些?

答:(1)预测分支失败:沿失败的分支继续处理指令,就好象什么都没发生似的。当确定分支是失败时,说明预测正确,流水线正常流动;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行。

(2)预测分支成功:当流水线ID段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行。

(3)延迟分支:主要思想是从逻辑上“延长”分支指令的执行时间。把延迟分支看成是由原来的分支指令和若干个延迟槽构成。不管分支是否成功,都要按顺序执行延迟槽中的指令。 3种方法的共同特点:它们对分支的处理方法在程序的执行过程中始终是不变的。它们要么总是预测分支成功,要么总是预测分支失败。

3.8 简述延迟分支方法中的三种调度策略的优缺点。 调度策略 对调度的要求 对流水线性能改善的影响 从前调度 分支必须不依赖于被调度的指令 总是可以有效提高流水线性能 从目标处调度 如果分支转移失败,必须保证被调度的指令对程序的执行没有影响,可能需要复制被调度指令 分支转移成功时,可以提高流水线性能。但由于复制指令,可能加大程序空间 从失败处调度 如果分支转移成功,必须保证被调度的指令对程序的执行没有影响 分支转移失败时,可以提高流水线性能

3.9列举出下面循环中的所有相关,包括输出相关、反相关、真相关。 for (i=2; i<100; i=i+1) a[i]=b[i]+a[i] ;/* s1 */ c[i+1]=a[i]+d[i] ; /* s2 */ a[i-1]=2*b[i] ; /* s3 */ b[i+1]=2*b[i] ;/* s4 */ 解:展开循环两次:

a[i] = b[i] + a[i] ; /* s1 */ c[i+1] = a[i] + d[i] ; /* s2 */ a[i-1] = 2 * b[i] ; /* s3 */ b[i+1] = 2 * b[i] ; /* s4 */

a[i+1] = b[i+1] + a[i+1] ; /* s1’ */ c[i+2] = a[i+1] + d[i+1] ; /* s2 ‘*/ a[i] = 2 * b[i+1] ; /* s3 ‘*/ b[i+2] = 2 * b[i+1] ; /* s4 ‘*/

输出相关:无 反相关:无 真相关:S1&S2

由于循环引入的相关:S4&S4’(真相关)、S1’&S4(真相关)、S3’&S4(真相关)、S1&S3’(输出相关、反相关)、S2&S3’(反相关)。

3.10 简述三种向量处理方式,它们对向量处理机的结构要求有何不同?

答 (1)横向处理方式:若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水

线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。 (2)纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算。适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M型的运算流水线。 (3)纵横处理方式:把长度为N的向量分为若干组,每组长度为n,组内按纵向方式处理,依次处理各组,组数为「N/n」,适合流水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R型运算流水线。

3.11 可采用哪些方法来提高向量处理机的性能? 答:可采用多种方法:

(1) 设置多个功能部件,使它们并行工作; (2) 采用链接技术,加快一串向量指令的执行; (3) 采用循环开采技术,加快循环的处理; (4) 采用多处理机系统,进一步提高性能。

3.12 有一指令流水线如下所示

(1) 求连续输入10条指令,该流水线的实际吞吐率和效率;

(2) 该流水线的“瓶颈”在哪一段?请采取两种不同的措施消除此“瓶颈”。对于你所给出的两种新的流水线,连续输入10条指令时,其实际吞吐率和效率各是多少? 解:(1)

(2)瓶颈在3、4段。

? 变成八级流水线(细分)

? 重复设置部件

3.13有一个流水线由4段组成,其中每当流经第3段时,总要在该段循环一次,然后才能流到第4段。如果每段经过一次所需要的时间都是 ,问:

(1) 当在流水线的输入端连续地每 时间输入任务时,该流水线会发生什么情况? (2) 此流水线的最大吞吐率为多少?如果每 输入一个任务,连续处理10个任务时的实际吞吐率和效率是多少?

(3) 当每段时间不变时,如何提高该流水线的吞吐率?仍连续处理10个任务时,其吞