现采用四级流水线结构分别完成一条指令的取指、指令译码和取数、运算,以及送回运算结果四个基本操作,每步操作时间依次为60ns,100ns,50ns和70ns。该流水线的操作周期应为(27)ns。若有一小段程序需要用20条基本指令完成(这些指令完全适合于流水线

admin2019-03-04  21

问题 现采用四级流水线结构分别完成一条指令的取指、指令译码和取数、运算,以及送回运算结果四个基本操作,每步操作时间依次为60ns,100ns,50ns和70ns。该流水线的操作周期应为(27)ns。若有一小段程序需要用20条基本指令完成(这些指令完全适合于流水线上执行),则得到第一条指令结果需(28)ns,完成该段程序需(29)ns。
   在流水线结构的计算机中,频繁执行(30)指令时会严重影响机器的效率。当有中断请求发生时,采用不精确断点法,则将(31)。

选项 A、仅影响中断响应时间,不影响程序的正确执行
B、不仅影响中断响应时间,还影响程序的正确执行
C、不影响中断响应时间,但影响程序的正确执行
D、不影响中断响应时间,也不影响程序的正确执行

答案B

解析 有关流水线执行时间的问题,请读者参考第2题的分析。
   在流水线结构的计算机中,影响流水线效率的因素主要有以下几个方面。
   1.条件转移指令(转移相关性)
   在存在转移指令的情况下,下一条需要执行的指令未必是程序计数器所指定的指令。只有在这条转移指令执行完成后,才能判断下一条指令是什么。
   如果在遇到转移指令时,关闭流水线的进入端口,防止错误发生,那么这种方法无疑会降低流水线的效率,而且程序中的条件转移是大量存在的,这势必使得流水线在很多时间内闲置,影响计算机的性能。
   为了解决这个问题,有的计算机采用猜测法,当发现条件转移指令时则系统猜测可能会跳转到的语句,如果猜测正确,则流水线正常运行,如果猜测错误,则需要清空当前流水线的内容。如图1-6(a)所示。
   还有一种需要编译系统的支持的方法,如图1-6(b)所示。方法是这样的:将必须执行的D指令提前执行,在D指令执行之后,条件转移指令的结果出来后,再判断是B或者C进入流水线。同样也可以把A指令前的指令滞后到A指令执行后执行,这样能保持流水线闲置的时间尽可能少。但是必须在D和B、C指令不存在前后依存关系的情况下采用。统计的结果还是不错的,50%的条件转移指令能够进行这样的优化。
   
   2.资源共享(数据相关性)
   由于使用流水线,因此当相邻的两条指令都对同一个资源进行操作时,或者前一条指令的输出是后一条指令的输入时,在没有流水线的情况下是正常的,在有流水线时就可能出现错误。例如:前一条指令是写,后一条指令是读,当前一条指令保存结果没有完成时,后一条指令的读操作数就已经开始,这样后一条指令读到的就是未改写的数据。
   为了解决这个问题,当遇到资源冲突时,就只好暂停后续指令进入流水线,这样也就降低了流水线的效率,显然,流水线步骤越多越容易引起资源冲突的发生。
   解决方法是:当发现相邻的语句存在资源共享冲突的时候,在两者之间插入其他语句,将两条指令进入流水线的时间拉开,以避免错误。
   3.寄存器相关(功能部件冲突)
   相邻的指令使用了相同的寄存器,也会使流水线失常。
   通常的解决方法是如果此时还有其他寄存器可用,则给两个指令分配不同的寄存器,以避免冲突的发生;
   4.中断系统
   当有中断发生时,和条件转移指令类似,流水线也不得不停止,以载入中断处理程序,由于中断的其他方面的优点,这种影响对流水线而言,是不可避免的。
   流水线响应中断有两种方式,一种是立即停止现有的流水线,称为精确断点法,这种方法能够立即响应中断,缩短了中断响应时间,但是增加了中央处理器的硬件复杂度。
   还有一种是在中断时,在流水线内的指令继续执行,停止流水线的入口,当所有流水线内的指令执行完毕后,再执行中断处理指令。这种方式中断响应时间较长,称为不精确断点法,优点是实现控制简单。
转载请注明原文地址:https://jikaoti.com/ti/Iix7FFFM
0

相关试题推荐
最新回复(0)