计算机组成原理(第三版)唐朔飞-第八章CPU的结构和功能-课后习题

目录

第八章

8.1CPU有哪些功能?画出其结构框图并简要说明每个部件的作用。

答:
CPU功能:CPU具有控制程序的顺序执行、产生完成每条指令所需的控制命令、对各种操作实施时间上的控制、对数据进行算术和逻辑运算以及处理中断等功能其框图如下。
在这里插入图片描述
图中寄存器包括专用寄存器(如程序计数器、指令寄存器、堆栈指示器、存储器地址寄存器、存储器数据寄存器、状态寄存器等)以及通用寄存器(存放操作数);
CU产生各种微操作命令序列;ALU完成算术和逻辑运算;中断系统用于处理各种中断。

8.2什么是指令周期?指令周期是否有一个固定值?为什么?

答:
指令周期是 CPU 每取出并执行一条指令所需的全部时间,也即 CPU 完成一条指令的时间。由于各种指令操作功能不同,因此各种指令的指令周期是不同的,指令周期的长短主要和指令在执行阶段的访存次数和执行阶段所需要完成的操作有关。

8.3画出指令周期的流程图,分别说明图中每个子周期的作用。

答:
如下图所示是指令周期的流程图,取指周期完成取指令和分析指令的操作;间址周期用于取操作数的有效地址;执行周期完成执行指令的操作;中断周期是当CPU响应中断时,由中断隐指令完成保护程序断点、硬件关中断和向量地址送PC(硬件向量法)的操作。
在这里插入图片描述

8.4设CPU内有这些部件:PC、IR、SP、AC、MAR、MDR和CU。

(1)画出完成间接寻址的取数指令“LDA@X”(将主存某地址单元的内容取至AC中)的数据流(从取指令开始)。
(2)画出中断周期的数据流。
答:
CPU中的数据流向与所采用的数据通路结构之间相关,不同的数据通路中的数据流是不一样的。常用的数据通路结构方式有直接连线、单总线、双总线、三总线等形式,目前大多采用总线结构,直接连线方式仅适用于结构特别简单的机器中。
为了简单起见,本题采用单总线结构将题中所给部件连接起来,框图如下:
在这里插入图片描述
(1)LDA@X指令周期数据流程图:
在这里插入图片描述
(2)中断周期流程图如下:
在这里插入图片描述

8.5中断周期前是什么阶段?中断周期后又是什么阶段?在中断周期CPU应完成什么操作?

答:
CPU中断周期前为执行周期,中断周期后为取指周期
一个完整的指令周期应包括取指、间址、执行和中断 4 个子周期。
中断周期 CPU 完成下列操作:CPU 访存操作;保存程序断点;硬件关中断;将向量地址送程序计数器(硬件向量法)或将中断识别程序入口地址送程序计数器(软件查询法)。

8.6 存储器中有若干数据类型:指令代码、运算数据、堆栈数据、字符代码和BCD码,计算机如何识别这些代码?

答:
CPU在取指阶段从存储器取出的信息为指令代码
CPU在执行阶段从存储器取出的可以是运算数据、字符代码或BCD码,具体是哪一种信息与指令的操作码有关。
凡是根据堆栈指示器SP所指示的地址访存时所获得的数据即为堆栈数据

8.7什么叫系统的并行性?粗粒度并行和细粒度并行有何区别?

答:
所谓并行包含同时性和并发性两个方面。前者是指两个或多个事件在同一时刻发生,后者是指两个或多个事件在同一时段发生。也就是说,在同一时刻或同一时段内完成两种或两种以上性质相同或不同的功能,只要在时间上相互重叠,就存在并行性。
并行性可分粗粒度并行和细粒度并行两类。
粗粒度并行性是在多个处理机上分别运行多个进程,由多台处理机合作完成一个程序,一般用算法(软件)实现。
细粒度并行性是指在处理机的操作级和指令级的并行性,一般用硬件实现,其中指令流水就是一项重要技术。

8.8 什么是指令流水?画出指令二级流水和四级流水的示意图,它们中哪一个更能提高处理器速度,为什么?

答:
指令流水就是改变各条指令按顺序串行执行的规则,使机器在执行上一条指令的同时,取出下一条指令,下图(a)和(b)分别是指令的二级流水和四级流水示意图。
在这里插入图片描述
把指令周期划分得更细,使更多的指令在同一时间内执行,更能提高处理器速度,故四级流水比二级流水的处理速度高。

8.9 当遇到什么情况时流水线将受阻?举例说明。

答:
流水线受阻一般有三种情况:
(1)在指令重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突。如在同一时间,几条重叠执行的指令分别要取指令、取操作数和存结果,都需要访存,就会发生访存冲突。
(2)在程序的相邻指令之间出现了某种关联,如当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行,就可能引发数据相关。
(3)当流水线遇到分支指令时,如一条指令要等前一条(或几条)指令做出转移方向的决定后才能进入流水线时,便发生控制相关。

8.10举例说明流水线中的几种数据相关。

答:
流水线中的数据相关有三种类型:
(1)写后读(RAW)
如在下列一组指令中, I 1 I_1 I1指令运算结果应先写入 R 1 R_1 R1,然后再 I 2 I_2 I2指令中读出 R 2 R_2 R2的内容,即写数指令在前,读数指令在后。
I 1 A D D R 1 , R 2 , R 3 ; ( R 2 ) + ( R 3 ) → R 1 I 2 S U B R 4 , R 1 , R 5 ; ( R 1 ) − ( R 5 ) → R 4 I_1\quad ADD\quad R_1,R_2,R_3;(R_2)+(R_3)→R_1\\ I_2\quad SUB\quad R_4,R_1,R_5;(R_1)-(R_5)→R_4 I1ADDR1,R2,R3(R2)+(R3)R1I2SUBR4,R1,R5(R1)(R5)R4
(2)读后写(WAR)
如在下列这组指令中, I 3 I_3 I3指令应先读出 R 6 R_6 R6的内容并存入存储器,然后再 I 4 I_4 I4指令中将运算结果写入 R 6 R_6 R6,即读数指令在前,写数指令在后。
I 3 M O V R E S U L T , R 6 ; ( R 6 ) → R E S U L T I 4 S U B R 6 , R 7 , R 8 ; ( R 7 ) − ( R 8 ) → R 6 I_3\quad MOV\quad RESULT,R_6;(R6)→RESULT\\ I_4\quad SUB\quad R_6,R_7,R_8;(R_7)-(R_8)→R_6 I3MOVRESULT,R6(R6)RESULTI4SUBR6,R7,R8(R7)(R8)R6
(3)写后写(WAW)
在下列这组指令中,如果 I 6 I_6 I6指令的与运算结果早于 I 5 I_5 I5指令的除法结果,变成 I 6 I_6 I6指令在 I 5 I_5 I5指令写入 R 3 R_3 R3前就写入 R 3 R_3 R3,导致 R 3 R_3 R3内容错误,发生写后写相关。
I 5 D I V R 3 , R 4 , R 5 ; ( R 4 ) ÷ ( R 5 ) → R 3 I 6 A N D R 3 , R 9 , R 10 ; ( R 9 ) A N D ( R 10 ) → R 3 I_5\quad DIV\quad R_3,R_4,R_5;(R_4)\div(R_5)→R_3\\ I_6\quad AND\quad R_3,R_9,R_{10};(R_9)AND(R_{10})→R_3 I5DIVR3,R4,R5(R4)÷(R5)R3I6ANDR3,R9,R10(R9)AND(R10)R3

8.11 今有四级流水线,分别完成取指(IF)、译码并取数(ID)、执行(EX)、写结果(WR)4个步骤。假设完成各步操作的时间依次为 90ns、90ns、60 ns、45 ns。

(1)流水线的时钟周期应取何值?
(2)若相邻的指令发生数据相关,那么第2条指令安排推迟多少时间才能不发生错误?
(3)若相邻两指令发生数据相关,为了不推迟第2条指令的执行,可采取什么措施?
答:
(1)流水线的时钟周期应按各步操作的最大时间来考虑,即流水线的时钟周期应取 90ns。
(2)若相邻两条指令发生数据相关,需使第二条指令暂停执行,直到前面指令产生结果后,再执行第二条指令,因此至少要延迟两个时钟周期,即 180ns。
(3)若想不推迟第二条指令的执行,在硬件设计上可采取旁路技术,即设置直接传送数据的通路。其主要思想是不必待某条指令的执行结果送回到寄存器后,再从寄存器中取出该结果,作为下一条指令的源操作数,而是直接将执行结果送到其他指令所需要的地方。

8.12 在5个功能段的指令流水线中,假设每段的执行时间分别是10ns、8 ns、10ns、10ns和7ns。对于完成12条指令的流水线面言,其加速比为多少?该流水线的实际吞吐率为多少?

答:
加速比:流水线时钟周期至少为 10 n s 10ns 10ns.
流水线完成12条指令所需时间 ( 12 − 1 ) × 10 + 5 × 10 = 160 n s (12-1)\times10+5\times10=160ns (121)×10+5×10=160ns
非流水线完成12条指令所需时间 12 × ( 10 + 8 + 10 + 10 + 7 ) = 540 n s 12\times(10+8+10+10+7)=540ns 12×(10+8+10+10+7)=540ns
流水线加速比 540 + 160 = 3.375 540+160=3.375 540+160=3.375.
实际吞吐率是指流水线完成n条指令的实际吞吐率。
该流水线的实际吞叶率为 12 / [ ( 12 − 1 ) × Δ t + 5 × Δ t ] 12/[(12-1)\times \Delta t+5\times \Delta t] 12/[(121)×Δt+5×Δt]又因为 Δ t = 10 n s \Delta t=10ns Δt=10ns,所以实际吞吐率为: 0.075 条 / n s 0.075条/ns 0.075/ns

8.13 为什么说超长指令字比超标量更能提高并行处理能力?

答:
超长指令字技术和超标量技术都是采用多条指令在多个处理部件中并行处理的体系结构,在一个时钟周期内能流出多少指令。
超标量的指令来自同一标准的指令流,超长指令字则由编译程序在编译时挖掘出指令间潜在的并行性后,把多条能并行操作的指令组合成一条具有多个操作码字段的超长指令,由这条超长指令控制超长指令字机中多个独立工作的功能部件,由每个操作码字段控制一个功能部件,相当于同时执行多条指令,所以超长指令字技术比超标另具有更高的并行处理能力。

8.14指令流水线和运算流水线在结构上有何共同之处?

答:
指令流水线是将指令的整个执行过程用流水线进行分段处理,典型的指令执行过程分为取指令、指令译码、形成地址、取操作数、执行指令、回写结果、修改指令指针这几个阶段,
指令流水线和运算流水线的共同点是:由于相邻两段在执行不同的操作,所需的时间可能不相同,因此在相邻两段之间必须设置锁存器或寄存器以保证在一个时钟周期内流水线各段的输出信号不变。

8.15什么是中断?设计中断系统需考虑哪些主要问题?

答:
CPU在程序运行过程中,遇到异常情况或特殊请求,需暂停现行程序,转至对这些异常情况或特殊请求的处理,处理完后再返回到原程序断点处继续执行,这一过程即为中断。设计中断系统需考虑如下几个问题。
(1)中断源如何向CPU提出请求
(2)当多个中断源同时提出请求时,CPU如何确定响应的优先次序
(3)CPU在什么情况(时间、条件)下响应中断
(4)如何保护现场
(5)如何寻找中断服务程序的入口地址
(6)如何恢复现场
(7)当出现中断嵌套时如何处理

8.16 计算机为了管理中断,在硬件上通常有哪设置?各有何作用?对指令系统有何考虑?

答:
在计算机系统中,为了管理中断需设置下列这些硬件,以及它们的作用分别是:
(1)中断请求触发器,其个数与中断源个数相等,用以标志某个中断源项 CPU 提出中断请求:
(2)中断屏蔽触发器,其个数与中断请求触发器相等,当其为1时,表示该中断源的中断请求被屏蔽,CPU不能响应;
(3)排队器,用来进行中断判优。当多个中断源同时请求时,排队器可选中优先级最高的中断请求;
(4)向量地址形成部件,用以产生中断源的向量地址,从而可找到中断服务程序的入口地址
(5)允许中断触发器,当其为1时,CPU 允许处理中断;
(6)中断标志触发器,标志该系统进入中断周期;
(7)堆栈,用来保护现场;
(8)中断查询信息号电路。在每条指令执行周期结束时刻,该电路向各中断源发查询信号在计算机系统中,为了管理中断,指令系统应设有开中断、关中断、置屏蔽字及中断返回等指令。

8.17在中断系统中,INTR、INT、EINT这3个触发器各有何作用?

答:
INTR是中断请求触发器,每个中断源都对应一个 INTR,当其为“1”状态时,表示该中断源有请求。
EINT 是允许中断触发器,当其为“1”时,表示 CPU 允许响应中断源的请求;当其为“0”时,意味着 CPU 禁止响应中断。
INT是中断标记触发器,当其为“1”时,表示 CPU 进入中断周期。

8.18什么是中断隐指令,有哪些功能?

正确答案:中断隐指令是指令系统中没有的指令它由CPU在中断响应周期自动完成。其功能是保护程序断点、硬件关中断、向量地址送PC(硬件向量法)或中断识别程序入口地址送PC(软件查询法)。

8.19 中断系统中采用屏蔽技术有何作用?

答:
采用屏蔽技术的作用是:
(1)在多重中断系统中,CPU响应中断后不希望有级别低的其他中断请求的干扰,采用屏蔽技术可屏蔽本级和更低级的中断请求,使中断处理可靠进行。
(2)改变中断处理的优先级。
(3)有选择地封锁部分中断请求,使程序控制更灵活。

8.20为实现多重中断,需有哪些硬件支持?

答:
当 CPU 正在执行某个中断服务程序时,另一个中断源又提出了新的中断请求,而 CPU 又响应了这个新的请求,暂时停止正在运行的服务程序,转去执行新的中断服务程序,这称为多重中断,又称中断嵌套。
为实现多重中断,需设置中断请求触发器、屏蔽触发器、排队器、向量地址形成部件、中断标志触发器、允许中断触发器、堆栈及中断查询信号电路等。

8.21 CPU在处理中断过程中,有几种方法找到中断服务程序的入口地址?举例说明。

答:
CPU 在处理中断过程中有两种方法找到中断服务程序的入口地址。
(1)硬件向量法是由硬件电路产生对应某中断源的向量地址,在向量地址内可设一条无条件转移指令,转向中断服务程序的入口地址。只需在中断响应周期将向量地址送至 PC,在 CPU进入下一取指周期时,就可取出无条件转移指令,执行该指令即可转至中断服务程序。也可以在向量地址内直接存放服务程序的入口地址,通过访问向量地址的存储单元,采用间址的方法找到服务程序的入口地址。
(2)软件查询法是在主存中存有一段中断识别程序,它通过程序判断是哪个中断源提出请求,并转至相应的入口地址。只要在中断响应周期将中断识别程序的首地址送至 PC,在 CPU 进入下一取指周期时,就可取出中断识别程序的第一条指令,逐条执行指令,便可找到相应的服务程序入口地址。

8.22在中断处理过程中,为什么要进行中断判优?有几种实现方法?若想改变原定的优先顺序,可采取什么措施?

答:
任何一个中断系统,在任一时刻,只能响应一个中断源的请求。但许多中断源提出请求都是随机的,当某一时刻有多个中断源提出中断请求时,中断系统必须按其优先顺序予以响应,这称为中断判优
CPU 在某一时刻只能响应一个中断故必须中断判优,以解决相响应的优先次序。
中断判优有两种方法实现:硬件排队和软件排队。前者用组合逻辑电路实现,后者用程序按优先级别(从高到低)顺序查询各中断源,以实现排队。
欲想改变优先顺序,可采用屏蔽技术,重新设置屏蔽字,封锁级别高的请求源,开放级别低的请求源。

8.23在中断处理过程中,“保护现场”需要完成哪些任务?如何实现?

答:
中断处理过程中,保护现场包括以下操作:
(1)将程序断点保存起来,可用中断隐指令完成。
(2)将各通用寄存器及状态寄存器的内容保存起来,可在中断服务程序中用机器指令编程完成。

8.24现有A、B、C、D4个中断源,其优先级由高向低按 A→B→C→D顺序排列。若中断服务程序的执行时同为20μs,根据下图所示时间轴给出的中断源请求中断的时刻,画出 CPU执行程序的轨迹。

答:
A、B、C、D的响应优先级即处理优先级。CPU执行程序的轨迹图如下:
在这里插入图片描述

8.25某机有五个中断源 L 0 、 L 1 、 L 2 、 L 3 、 L 4 L_0、L_1、L_2、L_3、L_4 L0L1L2L3L4,按中断响应的优先次序由高向低排序为 L 0 → L 1 → L 2 → L 3 → L 4 L_0→L_1→L_2→L_3→L_4 L0L1L2L3L4,现要求中断处理次序改为 L 1 → L 4 → L 2 → L 0 → L 3 L_1→L_4→L_2→L_0→L_3 L1L4L2L0L3,现要求中断处理次序改为,根据下面的格式,写出各中断源的屏蔽字。

答:
各中断源屏蔽状态见下表:
在这里插入图片描述
表中:设屏蔽位=1,表示屏蔽;屏蔽位=0,表示中断开放。

8.26设某机配有A、B、C3台设备,其优先级按A→B→C降序排列,为改变中断处理次序,它们的中断屏蔽字设置如下:

设备 屏蔽字
A 1 1 1
B 0 1 0
C 0 1 1

按下图所示时间轴给出的设备请求中断的时刻,画出CPU执行程序的轨迹。设A、B、C中断服务程序的执行时间均为 20 μ s 20\mu s 20μs
答:
在这里插入图片描述

8.27 设某机有3个中断源.其优先级按 1→2→3降序排列。假设中断处理时间均为 τ \tau τ,在下图所示的时间内共发生5次中断请求,图中①表示1级中断源发出中断请求信号,其余类推,画出 CPU 执行程序的轨迹。

答:
根据题意,CPU执行程序的轨迹如图所示:
在这里插入图片描述

8.28设某机有4个中断源1、2、3、4,其优先级按 1→2→3→4降序排列,现要求中断处理次序改为 4→1→3→2。根据下图给出的4个中断源的请求时刻,画出 CPU 执行程序的轨迹。假设中断源的中断服务程序时间均为 20 μ s 20\mu s 20μs

答:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45735391/article/details/127178704