1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-02-04 11:24:10 +08:00
Files
CS408/Computer-Organization/4-central-processing-unit-ex.md
2021-09-09 23:45:57 +08:00

1.1 MiB
Raw Permalink Blame History

中央处理器习题

CPU基本概念

例题 间址周期结束时,$CPU$内寄存器$MDR$中的内容为()。

$A.$指令

$B.$操作数地址

$C.$操作数

$D.$无法确定

解:$B$。结合指令周期。$MDR$存放的是指令或操作数或操作数地址。间址周期就是获取间接访问的地址,所以$MDR$得到的就是操作数地址。

指令执行

例题 假定不采用$Cache$和指令预取技术,且机器处于“开中断”状态,则在下列有关指令执行的叙述中,错误的是()。

$A.$每个指令周期中$CPU$都至少访问内存一次

$B.$每个指令周期一定大于等于一个$CPU$时钟周期

$C.$空操作指令的指令周期中任何寄存器的内容都不会被改变

$D.$当前程序在每条指令执行结束时都可能被外部中断打断

解:$C$。由于不采用指令预取技术,每个指令周期都需要取指令访问内存,因此每次取指令都至少要访问内存一次,$A$正确。时钟周期是$CPU$的最小时间单位,每个指令周期一定大于等于一个$CPU$时钟周期,$B$正确。即使是空操作指令,在取指操作后,$PC$也会自动加$1$$C$错误。由于机器处于“开中断”状态,在每条指令执行结束时都可能被外部中断打断,$D$正确。

例题 下列说法中,正确的是()。

.指令字长等于机器字长的前提下,取指周期等于机器周期

Ⅱ.指令字长等于存储字长的前提下,取指周期等于机器周期

Ⅲ.指令字长和机器字长的长度没有任何关系

Ⅳ.为了硬件设计方便,指令字长都和存储字长一样大

$A.$Ⅱ、Ⅲ

$B.$Ⅱ、Ⅲ、Ⅳ

$C.$Ⅰ、Ⅲ、Ⅳ

$D.$Ⅰ、Ⅳ

解:$A$。指令字长一般都取存储字长的整数倍,若指令字长等于存储字长的$2$倍,则需要两次访存,取指周期等于机器周期的$2$倍。若指令字长等于存储字长,则取指周期等于机器周期,因此Ⅰ错。根据Ⅰ的分析可知,Ⅱ正确。指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数,与机器字长没有必然的联系。但为了硬件设计方便,指令字长一般取字节或存储字长的整数倍,因此Ⅲ正确。根据前面的的分析可知,指令字长一般取字节或存储字长的整数倍,而不一定都和存储字长一样大,因此Ⅳ错误。

数据通路

CPU内部单总线方式

例题 在单总线的$CPU$中,()。

$A.ALU$的两个输入端及输出端都可与总线相连

$B.ALU$的两个输入端可与总线相连,但输出端需通过暂存器与总线相连

$C.ALU$的一个输入端可与总线相连,其输出端也可与总线相连

$D.ALU$只能有一个输入端可与总线相连,另一输入端需通过暂存器与总线相连

解:$D$。由于$ALU$是一个组合逻辑电路,因此其运算过程中必须保持两个输入端的内容不变。又由于$CPU$内部采用单总线结构,因此为了得到两个不同的操作数,$ALU$的一个输入端与总线相连,另一个输入端需通过一个寄存器与总线相连。此外,$ALU$的输出端也不能直接与内部总线相连,否则其输出又会通过总线反馈到输入端,影响运算结果,因此输出端需通过一个暂存器(用来暂存结果的寄存器)与总线相连。

例题 单周期处理器中所有指令的指令周期为一个时钟周期。下列关于单周期处理器的叙述中,错误的是()。

$A.$可以采用单总线结构数据通路

$B.$处理器时钟频率较低

$C.$在指令执行过程中控制信号不变

$D.$每条指令的$CPI$为1

解:$A$。单周期处理器是指所有指令的指令周期为一个时钟周期的处理器,$D$正确。因为每条指令的$CPI$为$1$,要考虑比较慢的指令,所以处理器的时钟频率较低,$B$正确。单总线数据通路将所有寄存器的输入输出端都连接在一条公共通路上,一个时钟内只允许一次操作,无法完成指令的所有操作,$A$错误。控制信号是$CU$根据指令操作码发出的信号,对于单周期处理器来说,每条指令的执行只有一个时钟周期,而在一个时钟周期内控制信号并不会变化;若是多周期处理器,则指令的执行需要多个时钟周期,在每个时钟周期控制器会发出不同信号,$C$正确。

例题 设有如图所示的单总线结构,分析指令$ADD(R_0),R_1$的指令流程和控制信号。

CPU内部单总线

解:第一步分析指令功能和指令周期功能:$ADD(R_0),R_1$这条指令的意思是$R_0$在主存中保存着一个地址,这个地址保存一个操作数($R_0$为一级间址),需要将$R_0$的操作数与R_1的相加再保存到$R_0$中。即$((R_0))+(R_1)\rightarrow(R_0)$。

第二步写出各阶段的指令流程:

取指周期是一个公共操作,都需要用到。

时序 微操作 有效控制信号
1 (PC)→MAR PCoutMARin
2 M(MAR)→MDR MemRMARout,
3 (MDR)→IR MDRoutIRin
4 指令译码
5 (PC)+1→PC

间址周期是完成取数操作,被加数在主存中,加数已经放在寄存器$R1$中。

时序 微操作 有效控制信号
1 (R0)→MAR ROoutMARin
2 M(MAR)→MDR MemRMARoutMDRinE
3 (MDR)→Y MDRoutYin

执行周期是完成取数操作被加数在主存中加数已经放在寄存器R1中。

时序 微操作 有效控制信号
1 (R1)+(Y)→Z R1outALUinCU向ALU发ADD控制信号
2 (Z)→MDR ZoutMDRin
3 (MDR)→M(MAR) MemWMDRoutEMARout

例题 某$16$位计算机的主存按字节编码,存取单位为$16$位;采用$16$位定长指令字格式;$CPU$采用单总线结构,主要部分如下图所示。图中$R_0\sim R_3$为通用寄存器;$T$为暂存器;$SR$为移位寄存器,可实现直送($mov$)、左移一位($left$)和右移一位($right$)三种操作,控制信号为$SRop$$SR$的输出由信号$SRout$控制;$ALU$可实现直送$A$$mova$)、$A$加$B$$add$)、$A$减$B$$sub$)、$A$与$B$$and$)、$A$或$B$$or$)、非$A$$not$)、$A$加$1$$inc$)七种操作,控制信号为$ALUop$。 回答下列问题:

移位寄存器

1图中哪些寄存器是程序员可见的为何要设置暂存器$T$

2控制信号$ALUop$和$SRop$的位数至少各是多少?

3控制信号$SRout$所控制部件的名称或作用是什么?

4端点①~⑨中,哪些端点须连接到控制部件的输出端?

5为完善单总线数据通路需要在端点①~⑨中相应的端点之间添加必要的连线。写出连线的起点和终点,以正确表示数据的流动方向。

6为什么二路选择器$MUX$的一个输入端是$2$

解:

首先分析图片,最右边为主存总线与主存,这个题目提到的较少,中间的部分为控制器,控制器连接$CPU$内总线,里面的数据通过内总线传输到黑框的运算器进行运算。

1程序员可见寄存器为通用寄存器$R_0\sim R_3$)和$PC$。因为采用了单总线结构,因此若无暂存器$T$,则数据会同时流动,$ALU$的$A$、$B$端口会同时获得两个相同的数据,使数据通路不能正常工作。

2$ALU$共有$7$种操作,其操作控制信号$ALUop$至少需要$3$位来表示七种。移位寄存器有$3$种操作, 其操作控制信号$SRop$至少需要$2$位。

3首先$SRout$控制就代表这里控制的是$SR$的输出,所以这里的部件就是控制$SR$输出到总线的,是一个控制部件。

信号$SRout$所控制的部件是一个三态门,用于控制移位器与总线之间数据通路的连接与断开。(三态电路可提供三种不同的输出值:逻辑“$0$”,逻辑“$1$”和高阻态。高阻态主要用来将逻辑门同系统的其他部分加以隔离。)

后面三个问题都是与控制信号有关,所以需要整体分析。

现在控制器中里面还有一些线没有连接起来,影响对这个系统的分析。其中最关键的就是$MUX$是什么?$A$已经与主线连接,$B$是应该从主线来的数据,如何连接?

$MUX$是一个多路选择开关,本质还是一个开关,一般在$CPU$中使用是与$PC$进行配合,因为$PC$自增有两种选择,一种是正常的加一,另一种是转移指令自加还要加上偏移量,所以此题目的$0$就代表是正常的自增,$1$代表要输入转移指令。而进行运算$MUX$如何控制呢?肯定还是走$1$这一端,数据直接通过此段传递到$B$。

所以很明显⑥⑨连接起来,⑦④连接起来。

当$PC$需要自加就通过内总线到$T$进入$A$作为一个加数,$MUX$通过$0$端口提供$2$输入到④到$B$作为另一个加数到$ALU$加,然后$SR$直通回到$PC$,若是转移指令,就先加一,然后再加上转移偏移量。

同理寄存器进行加法等操作时,也通过总线,进入$T$或$MUX$的$1$端口。

4

问哪些端口用来控制部件的,那么题目所提到的带有$op$的端口就肯定是控制部件,有①、②、③、⑧,那么还有谁?

  • ①:用来控制运算结果输出到总线。
  • ②:用来控制移位寄存器计算计算的类型。
  • ③:用来控制$ALU$计算的类型。
  • ④:用来连接$MUX$与$ALU$,传输$B$值。
  • ⑤:用来控制$T$是否接收总线的输入。($T$已经有了一条总线的输入数据线,所以⑤必然不是数据线只能是控制线)。
  • ⑥:连接总线与$MUX$,传输$B$值。
  • ⑦:同④。
  • ⑧:控制$MUX$的开关类型,是$PC$自加操作还是传输值。
  • ⑨:同⑥。

端口①、②、③、⑤、⑧须连接到控制部件输出端。

5连线$1$,⑥→⑨;连线$2$,⑦→④。

6因为每条指令的长度为$16$位,按字节编址,所以每条指令占用$2$个内存单元,顺序执行时,下条指令地址为$(PC)+2$。$MUX$的一个输入端默认为$2$,可便于执行$(PC)+2$操作。

专用数据通路方式

例题 下图是一个简化了的$CPU$与主存连接结构示意图(图中省略了所有的多路选择器)。其中有一个累加寄存器($ACC$、一个状态数据寄存器和其他4个寄存器主存地址寄存器$MAR$)、主存数据寄存器($MDR$)、程序寄存器($PC$)和指令寄存器($IR$),各部件及其之间的连线表示数据通路,箭头表示信息传递方向。

专用数据通路

要求:

1请写出图中$a$、$b$、$c$、$d,4$个寄存器的名称。

解:$a$、$b$、$c$、$d$分别对应主存地址寄存器($MAR$)、主存数据寄存器($MDR$)、程序寄存器($PC$)和指令寄存器($IR$)四个。

首先从$d$入手,如果是$+1$就一定是$PC$。

然后在取指周期的时候$PC$要把地址送到$MAR$中,所以与$d$直接相连的$c$就是$MAR$。

而剩下的$a$是与$ALU$直接相连的,代表要直接参与运算,则一定是存储数据的$MDR$。

而$b$是与$MDR$直接相连的,所以$b$从$MDR$直接获取数据,就是$IR$将数据放入指令。或$b$与微操作信号发生器产生连接,则一定只有指令才能发生微操作,所以一定是$IR$。

2简述图中取指令的数据通路。

解:

$(PC)\rightarrow MAR$:将$PC$指令送到$MAR$中开始寻址。

$M(MAR)\rightarrow MDR$:将$MAR$地址指向的主存指令送到$MDR$中。

$(MDR)\rightarrow IR$:将$MDR$中的指令送到$IR$中。

$(PC)+1\rightarrow PC$$PC$自动加一。

3简述数据在运算器和主存之间进行存/取访问的数据通路。

解:

取:

因为是运算器与主存之间进行存取,所以数据取入$ACC$中。

$M(MAR)\rightarrow MDR$:将$MAR$所指向的指令从主存中取出放到$MDR$中。

$(MDR)\rightarrow ALU\rightarrow ACC$要把MDR的内容放入$ACC$进行存储,但是$MDR$与$ACC$没有直接连接的线路,所以必须通过$ALU$进行连接。

存:

$(ACC)\rightarrow MDR$:将$ACC$中的数据传送到$MDR$中。

$(MDR)\rightarrow M(MAR)$:将$MDR$的数据送到$MAR$所指向的主存地址中。

4简述完成指令$LDA,X$的数据通路($X$为主存地址,$LDA$的功能为$(X)\rightarrow ACC$)。

解:就是将$X$地址的数据送到$ACC$中。

$X\rightarrow MAR$:将$X$的地址放到$MAR$中。

$M(MAR)\rightarrow MDR$:将$MAR$地址指向的数据放入$MDR$中。

$(MDR)\rightarrow ALU\rightarrow ACC$:要把$MDR$的内容放入$ACC$进行存储,但是$MDR$与$ACC$没有直接连接的线路,所以必须通过$ALU$进行连接。

5简述完成指令$ADD,Y$的数据通路($Y$为主存地址,$ADD$的功能为$(ACC)+(Y)\rightarrow ACC$)。

解:

$Y\rightarrow MAR$:将$Y$的地址放到$MAR$中。

$M(MAR)\rightarrow MDR$:取出指向的值放入$MDR$中。

$(MDR)\rightarrow ALU(ACC)\rightarrow ALU$:将$MDR$的数据与ACC的数据都送入ALU中相加。

$(ALU)\rightarrow ACC$:将结果送到$ACC$中。

6简述完成指令$STA,Z$的数据通路($Z$为主存地址,$STA$的功能为$(ACC)\rightarrow Z$)。

解:即将$ACC$中的内容存到主存$Z$中。

$Z\rightarrow MAR$:将$Z$地址送到$MAR$中。

$(ACC)\rightarrow MDR$:将$ACC$的数据送到$MDR$中。

$(MDR)\rightarrow M(MAR)$:将$MDR$的数据送到$MAR$地址中保存。

控制器

微程序

微指令格式

例题 某微程序控制器中,采用水平型直接控制(编码)方式的微指令格式,后续微指令地址由微指令的下地址字段给出。已知机器共有$28$个微命令,$6$个互斥的可判定的外部条件,控制存储器的容量为$512\times40$位。试设计其微指令的格式,并说明理由。

解:水平型微指令由操作控制字段、判别测试字段和下地址字段三部分构成。因为微指令采用直接控制(编码)方式,所以其操作控制字段的位数等于微命令数,为$28$位。又由于后继微指令地址由下地址字段给出,因此其下地址字段的位数可根据控制存储器的容量($512\times40$位)确定为$9$位($512=2^9$)。当微程序出现分支时,后续微指令地址的形成取决于状态条件—$6$个互斥的可判定外部条件,因此状态位应编码成$3$位。非分支时的后续微指令地址由微指令的下地址字段直接给出。

微指令的格式:操作控制字段$28$位+判别测试字段$3$位+后继地址字段$9$位。

微指令编码

例题 某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有$33$个微命令,构成$5$个互斥类,分别包含$7$、$3$、$12$、$5$和$6$个微命令,则操作控制字段至少有多少位?

解:一共五个互斥类,所以一共要分为五段控制段。

每个段还要留出一个状态表示不操作,所以每个段能表示的微指令数为$8$、$4$、$13$、$6$、$7$。

所以对应的二进制位数分别为$3$、$2$、$4$、$3$、$3$。

微指令地址

例题 某计算机采用微程序控制器,共有$32$条指令,公共的取指令微程序包含$2$条微指令,各指令对应的微程序平均由$4$条微指令组成,采用断定法(下地址字段法)确定下条微指令地址,则微指令中下地址字段的位数至少是多少位?

解:求微指令中下地址字段的位数,即求微指令的条数。

一共有$32$条机器指令,而平均$4$条微指令,所以有$32\times4=128$,再加上公共取指令微程序的$2$条,所以一共$130$条。

对$130$以$2$为底取对数,所以至少$8$位。

微程序个数

例题 某带中断的计算机指令系统共有$101$种操作,采用微程序控制方式时,控制存储器中相应最少有()个微程序。

A.101

B.102

C.103

D.104

解:$C$。若指令系统中具有$n$种机器指令,则控制存储器中的微程序数至少是$n+1$个,因为取指微程序必然是公共的,题目谈到了带中断,所以还要一个中断微程序。因此,控制存储器中的微程序数可以为$n+2=103$个。

指令流水线

流水线影响因素

例题 下列关于指令流水线数据通路的叙述中,错误的是()。

$A.$包含生成控制信号的控制部件

$B.$包含算术逻辑运算部件ALU

$C.$包含通用寄存器组和取指部件

$D.$由组合逻辑电路和时序逻辑电路组合而成

解:$A$。五阶段流水线可分为取指$IF$、译码/取数$ID$、执行$EXC$、存储器读$MEM$、写回 $WB$。数字系统中,各个子系统通过数据总线连接形成的数据传送路径称为数据通路,包括程序计数器、算术逻辑运算部件、通用寄存器组、取指部件等,不包括控制部件,选$A$。

例题 假设某指令流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。若高级语言程序中某赋值语句为x=a+b$x$、$a$和$b$均为$int$型变量,它们的存储单元地址分别表示为$[x]$、$[a]$和$[b]$。该语句对应的指令序列及其在指令流中的执行过程:

I1 LOAD R1, [a]

I2 LOAD R2, [b]

I3 ADD R1, R2

I4 STORE R2, [x]

则这$4$条指令执行过程中$I3$的$ID$段和$I4$的$IF$段被阻塞的原因各是什么?

指令 1 2 3 4 5 6 7 8 9 10 11 12 13 14
I1 IF ID EX M WB
I2 IF ID EX M WB
I3 IF ID EX M WB
I4 IF ID EX M WB

解:机器周期一般分为五段:取指$IF$、译码$ID$、执行$EX$、访存$M$、写回$WB$。

题目中提到指令流水线采用“按序发射,按序完成”方式,也就是说这里无法使用编译优化技术,没有采用转发技术处理数据,也就是说无法使用数据旁路技术,所以处理方式就只能等。

同时同一寄存器的读和写操作不能在同一个时钟周期内进行,也就是没有使用多个硬件资源的方式。

问题问$I3$的$ID$段和$I4$的$IF$段被阻塞的原因,就是$I3$和$I4$的$IF$后都空了三个格子的原因。

然后分析执行过程,$R1$和$R2$都是寄存器,I1 LOAD R1, [a]就是指将$a$所对应地址的数据放入$R1$中,同理I2 LOAD R2, [b]就是将$b$放入$R2$中,I3 ADD R1, R2将$R1$和$R2$相加,根据$I4$可以看出是结果存到$R2$中,I4 STORE R2, [x]将$R2$的值存到$x$指向的地址。

所以分析为什么$I3$阻塞,因为$I3$执行的是相加,所以一定要等待$R1$和$R2$的值都有了才能相加,所以$I3$取指$IF$后要等到有数据才能译码$ID$,从而必须等到$I1$、$I2$的$WB$完成即时间单元$6$之后才能开始。所以$I3$与$I1$、$I2$数据相关。

同样$I4$需要将结果计算出来了才能存,所以$I4$的$ID$译码必然等到$I3$的$WB$完成之后才能开始,即$10$之后才能开始。所以$I4$与$I3$数据相关。