2009-2015年计算机组成原理考研大题 - 图文

更新时间:2023-10-08 06:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

43.(8 分)某计算机的 CPU 主频为 500MHz,CPI 为 5(即执行每条指令平均需 5 个时钟周期)。假定某外设的数据传输率为 0.5MB/s,采用中断方式与主机进行数据传送,以 32 位为传输单位,对应的中断服务程序包含 18 条指令,中断服务的其他开销相当于 2 条指

令的执行时间。请回答下列问题,要求给出计算过程。

(1) 在中断方式下,CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?

(2) 当该外设的数据传输率达到 5MB/s 时,改用 DMA 方式传送数据。假定每次 DMA 传送块大小为 5000B,且 DMA 预处理和后处理的总开销为 500 个时钟周期,则 CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?(假设 DMA 与 CPU 之间没有访存冲 突)

43.解答:

(1) 按题意,外设每秒传送 0.5MB,中断时每次传送 4B。中断方式下,CPU 每次用于数据传送的时钟周期为 5×18+5×2=100。

为达到外设 0.5MB/s 的数据传输率,外设每秒申请的中断次数为 0.5MB/4B=125 000。 1s 内用于中断的开销为 100×125 000=12 500 000=12.5M 个时钟周期。 CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比为 12.5M/500M=2.5%。

(2) 当外设数据传输率提高到 5MB/s 时,改用 DMA 方式传送,每次 DMA 传送 5 000B,

1s 内需产生的 DMA 次数为 5MB/5 000B=1 000。

CPU 用于 DMA 处理的总开销为 1 000×500=500 000=0.5M 个时钟周期。

CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比为 0.5M/500M=0.1%。

【评分说明】

如果考生只给出正确的计算结果,未给出计算过程,每个给 2 分。

44.(13 分)某计算机字长为 16 位,采用 16 位定长指令字结构,部分数据通路结构如图 A-2 所示,图中所有控制信号为 1 时表示有效、为 0 时表示无效。例如,控制信号 MDRinE 为 1 表示允许数据从 DB 打入 MDR,MDRin 为 1 表示允许数据从内总线打入 MDR。假设

MAR 的输出一直处于使能状态。加法指令“ADD (R1),R0”的功能为(R0)+((R1))→(R1),即将 R0 中的数据与 R1 的内容所指主存单元的数据相加,并将结果送入 R1 的内容所指主存单元中保存。

图 A-2

表 A-1 给出了上述指令取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号, 请按表中描述方式用表格列出指令执行阶段每个节拍的功能和有效控制信号。

.. ......

表A-1

时钟 C1 功能 MAR←(PC) 有效控制信号 PCout, MARin MDR←M(MDR) C2 PC←(PC)+1 C3 MDRout, IRin MemR, MDRinE, PC+1 IR←(MDR) 指令译码 C4 无

44.解答:

题干已给出取值和译码阶段每个节拍的功能和有效控制信号,我们应以弄清楚取指阶段 中数据通路的信息流动作为突破口,读懂每个节拍的功能和有效控制信号。然后应用到解题 思路中,包括划分执行步骤、确定完成的功能、需要的控制信号。

先分析题干中提供的示例(本部分解题时不做要求):

取指令的功能是根据PC的内容所指主存地址,取出指令代码,经过MDR,最终送至IR。

这部分和后面的指令执行阶段的取操作数、存运算结果的方法是相通的。

C1:(PC)→MAR

在读写存储器前,必须先将地址(这里为(PC))送至MAR。 C2:M(MAR)→MDR,(PC)+1→PC

读写的数据必须经过MDR,指令取出后PC自增1。 C3:(MDR)→IR

然后将读到MDR中指令代码送至IR进行后续操作。

指令―ADD (R1),R0‖的操作数一个在主存中,一个在寄存器中,运算结果在主存中。根据指令功能,要读出 R1 的内容所指的主存单元,必须先将 R1 的内容送至 MAR,即(R1)→ MAR。而读出的数据必须经过 MDR,即 M(MAR)→MDR。

因此,将 R1 的内容所指主存单元的数据读出到 MDR 的节拍安排如下: C5:(R1)→MAR C6:M(MAR)→MDR

ALU 一端是寄存器 A,MDR 或 R0 中必须有一个先写入 A 中,如 MDR。

C7:(MDR)→A

然后执行加法操作,并将结果送入寄存器 AC。 C8:(A)+(R0)→AC

之后将加法结果写回到 R1 的内容所指主存单元,注意 MAR 中的内容没有改变。 C9:(AC)→MDR C10:(MDR)→M(MAR)

有效控制信号的安排并不难,只需看数据是流入还是流出,如流入寄存器 X 就是 Xin,流出寄存器 X 就是 Xout。还需注意其他特殊控制信号,如 PC+1、Add 等。

于是得到参考答案如下:

时钟 C5 功能 MAR←(R1) 有效控制信号 R1out, MARin C6 MDR←M(MAR) A←(MDR) AC←(A)+(R0) MemR, MDRinE C7 C8 MDRout, Ain R0out, Add, ACin C9 MDR←(AC) ACout, MDRin C10 M(MAR)←(MDR) MDRoutE, MemW 本题答案不唯一,如果在 C6 执行 M(MAR)→MDR 的同时,完成(R0)→A(即选择将(R0) 写入 A),并不会发生总线冲突,这种方案可节省 1 个节拍,见下表。

时钟 C5 功能 MAR←(R1) MDR←M(MAR),A←(R0) 有效控制信号 R1out, MARin C6 MemR, MDRinE,R0out, Ain

C7 AC←(MDR)+(A) MDRout, Add, ACin C8 MDR←(AC) ACout, MDRin C9 M(MAR)←(MDR) MDRoutE, MemW

43.(11 分)某计算机字长为 16 位,主存地址空间大小为 128KB,按字编址。采用单字长指令格式,指令各字段定义如图 B-4 所示。

转移指令采用相对寻址方式,相对偏移量用补码表示,寻址方式定义见表 B-1。

15 12 11 6 5 0

OP

Ms Rs 源操作数

Md 目的操作数 图 B-4

Rd 表B-1

Ms/Md 000B 001B 010B 011B 寻址方式 寄存器直接 寄存器间接 寄存器间接、自增 相对 助记符 Rn (Rn) (Rn)+ D(Rn) 含义 操作数=(Rn) 操作数=((Rn)) 操作数=((Rn)),(Rn)+1→Rn 转移目标地址=(PC)+(Rn) 注:(X)表示存储器地址 X 或寄存器 X 的内容。

请回答下列问题: (1)

该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器?存储

器地址寄存器(MAR)和存储器数据寄存器(MDR)至少各需要多少位? (2)

转移指令的目标地址范围是多少?

(3) 若操作码 0010B 表示加法操作(助记符为 add),寄存器 R4 和 R5 的编号

分别为 100B 和 101B,R4 的内容为 1234H,R5 的内容为 5678H,地址 1234H 中的内容为 5678H,地址 5678H 中的内容为 1234H,则汇编语言为“add(R4), (R5)+”(逗号前为源操作数,逗号后为

目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储 单元中的内容会改变?改变后的内容是什么?

43.解答:

(1) 操作码占 4 位,则该指令系统最多可有 24=16 条指令;操作数占 6 位,寻

址方式占 3 位,于是寄存器编号占 3 位,则该机最多有 23=8 个通用寄存器;主存容量为 128KB,按字编址,计算机字长为 16 位,划分为 128KB/2B=216 个存储单元,故 MDR 和 MAR 至少各需 16 位。 (2)

PC 和 Rn 可表示的地址范围均为 0~216-1,而主存地址空间为 216,故转移

指令的目标地址范围为 0000H~FFFFH(0~216-1)。 (3)

汇编语句“add (R4), (R5)+”,对应的机器码为 0010 0011 0001 0101B=2315H。

该指令执行后,寄存器 R5 和存储单元 5678H 的内容会改变。执行后,R5 的内容从 5678H 变成 5679H。存储单元 5678H 中的内容变成该加法指令计算的结果 5678H+1234H=68ACH。

44.(12 分)某计算机的主存地址空间大小为 256MB,按字节编址。指令 Cache 和数据 Cache 分离,均有 8 个 Cache 行,每个 Cache 行大小为 64B,数据 Cache 采用直接映射方

式。现有两个功能相同的程序 A 和 B,其伪代码如下:

程序A: int a[256][256] ?? 程序B: int a[256][256] ?? int sum_array1() { int for(i=0;i<256;i++) for(j=0;j<256;j++) sum+=a[i][j]; sum; int sum_array2() int i,j,sum=0; for(j=0;j<256;j++) for(i=0;i<256;i++) return i,j,sum=0; { return sum+=a[i][j]; sum; 假定 int 类型数据用 32 位补码表示,程序编译时 i、j、sum 均分配在寄存器中,数组 a 按行优先方式存放,其首地址为 320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。

(1)

若不考虑用于 Cache 一致性维护和替换算法的控制位,则数据 Cache 的总容

量为多

少?

(2)

数组元素 a[0][31]和 a[1][1]各自所在的主存块对应的 Cache 行号分别是多少

(Cache

行号从 0 开始)?

(3)

程序 A 和 B 的数据访问命中率各是多少?哪个程序的执行时间更短?

44.解答:

(1) 每个 Cache 行对应一个标记项,如下图所示。

不考虑用于 Cache 一致性维护和替换算法的控制位。地址总长度为 28 位(228=256M),块内地址 6 位(26=64),Cache 块号 3 位(23=8),故 Tag 的位数为 28-6-3=19 位,还需使用一个有效位,故题中数据 Cache 行的结构如下图所示。

数据 Cache 共有 8 行,因此数据 Cache 的总容量为 8×(64+20/8)B=532B。 (2)

数组 a 在主存的存放位置及其与 Cache 之间的映射关系如下图所示。

数组按行优先方式存放,首地址为 320,数组元素占 4 个字节。a[0][31]所在的主存块对应的 Cache 行号为(320+31×4)/64=6;a[1][1]所在的主存块对应的 Cache 行号为(320+256×4 +1×4)/64 % 8=5。

【另解】由(1)可知主存和 Cache 的地址格式如下图所示。

27 8 6 5 0

主存地址 标记 块号 块内地址 8 6 5 0

Cache地址 块号 块内地址 数组按行优先方式存放,首地址320,数组元素占4个字节。a[0][31]的地址为320+31×4=1 1011 1100B,故其对应的 Cache 行号为 110B=6;a[1][1]的地址为 320+256×4+1×4=1348=101

0100 0100B,故其对应的 Cache 行号为 101B=5。

(3)数组a的大小为 256×256×4B=218B,占用 218/64=212 个主存块,按行优先存放,程

序 A 逐行访问数组 a,共需访问的次数为 216 次,未命中次数为 212 次(即每个字块的第一个数未命中),因此程序 A 的命中率为(216-212)/216×100%=93.75%。

【另解】数组 a 按行存放,程序 A 按行存取。每个字块中存放 16 个 int 型数据,除访 问的第一个不命中,随后的 15 个全都命中,访问全部字块都符合这一规律,且数组大小为字块大小的整数倍,故程序 A 的命中率为 15/16=93.75%。

程序 B 逐列访问数组 a,Cache 总容量为 64B×8=512B,数组 a 一行的大小为 1KB,正好是 Cache 容量的 2 倍,可知不同行的同一列数组元素使用的是同一个 Cache 单元,故逐列访问每个数据时,都会将之前的字块置换出,也即每次访问都不会命中,命中率为 0。由于从 Cache 读数据比从主存读数据快很多,所以程序 A 的执行比程序 B 快得多。

43.(11 分)假定在一个 8 位字长的计算机中运行如下 C 程序段:unsigned int x=134; unsigned int y=246; int m=x; int n=y; unsigned int z1=x-y; unsigned int z2=x+y; int

k1=m-n; int k2=m+n;

若编译器编译时将 8 个 8 位寄存器 R1~R8 分别分配给变量 x、y、m、n、z1、z2、k1

和 k2。请回答下列问题。(提示:带符号整数用补码表示。)

(1) 执行上述程序段后,寄存器 R1、R5 和 R6 的内容分别是什么(用十六进制表示)?

(2) 执行上述程序段后,变量 m 和 k1 的值分别是多少(用十进制表示)?

(3) 上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用同一

个加法器辅助电路实现?简述理由。

(4) 计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,

哪些带符号整数运算语句的执行结果会发生溢出?

43.解答:

(1)134=128+6=1000 0110B,所以 x 的机器数为 1000 0110B,故 R1 的内容为 86H。 246=255-9=1111 0110B,所以 y 的机器数为 1111 0110B。x-y:1000 0110+0000

1010=(0)1001 0000,括弧中为加法器的进位,故 R5 的内容为 90H。

x+y:1000 0110+1111 0110=(1)0111 1100,括弧中为加法器的进位,故 R6 的内容为 7CH。 (2)m 的机器数与 x 的机器数相同,皆为 86H=1000 0110B,解释为带符号整数 m(用补码表示)时,其值为-111 1010B=-122。

m-n 的机器数与 x-y 的机器数相同,皆为 90H=1001 0000B,解释为带符号整数 k1(用补码表示)时,其值为-111 0000B=-112。

(3) 能。n 位加法器实现的是模 2n 无符号整数加法运算。对于无符号整数 a 和 b,a+b 可以直接用加法器实现,而 a-b 可用 a 加 b 的补数实现,即 a-b=a+[-b]补(mod 2n),所以 n

位无符号整数加/减运算都可在 n 位加法器中实现。

由于带符号整数用补码表示,补码加/减运算公式为:[a+b]补=[a]补+[b]补(mod 2n),[a-b]

=[a]补+[-b]补(mod 2n),所以 n 位带符号整数加/减运算都可在 n 位加法器中实现。

(4) 带符号整数加/减运算的溢出判断规则为:若加法器的两个输入端(加法)的符号

相同,且不同于输出端(和)的符号,则结果溢出,或加法器完成加法操作时,若次高位的 进位和最高位的进位不同,则结果溢出。

最后一条语句执行时会发生溢出。因为 1000 0110+1111 0110=(1)0111 1100,括弧中为加

法器的进位,根据上述溢出判断规则,可知结果溢出。

44.(12 分)某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为 16MB,主存(物理)地址空间大小为 1MB,页面大小为 4KB;Cache 采用直接映射方式,共 8 行;

主存与 Cache 之间交换的块大小为 32B。系统运行到某一时刻时,页表的部分内容和 Cache 的部分内容分别如题 44-a 图、题 44-b 图所示,图中页框号及标记字段的内容为十六进制形式。

虚页号

0 1 2 3 4 5 6 7 1 1 1 1 0 1 0 1 06 04 15 02 — 2B — 32 ? ? ? ? ? ? ? ?

0 1 2 3 4 5 6 7 1 0 1 1 1 1 0 1 020 — 01D 105 064 14D — 27A ? ? ? ? ? ? ? ? 有效位 页框号

?

题 44-a 图页表的部分内容题 44-b 图 Cache 的部分内容

请回答下列问题。

(1) 虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号(物

理页号)?

(2) 使用物理地址访问 Cache 时,物理地址应划分成哪几个字段?要求说明每个字段

位数及在物理地址中的位置。

(3) 虚拟地址 001C60H 所在的页面是否在主存中?若在主存中,则该虚拟地址对应的

物理地址是什么?访问该地址时是否 Cache 命中?要求说明理由。

(4) 假定为该机配置一个 4 路组相联的 TLB 共可存放 8 个页表项,若其当前内容

(十六进制)如题 44-c 图所示,则此时虚拟地址 024BACH 所在的页面是否存在主存中?要求说明理由。

44.解答:

(1)虚拟地址为 24 位,其中高 12 位为虚页号。物理地址为 20 位,其中高 8 位为物理页号。

(2)20 位物理地址中,最低 5 位为块内地址,中间 3 位为 Cache 行号,高 12 位为标志。

(3) 在主存中。虚拟地址 001C60H=0000 0000 0001 1100 0110 0000B,故虚页号为 0000 0000 0001B,查看 0000 0000 0001B=001H 处的页表项,由于对应的有效位为 1,故虚拟地

址 001C60H 所在的页面在主存中。

页表 001H 处的页框号(物理页号)为 04H=0000 0100B,与页内偏移 1100 0110 0000B 拼接成物理地址:0000 0100 1100 0110 0000B=04C60H。

对于物理地址 0000 0100 1100 0110 0000B,所在主存块只能映射到 Cache 的第 3 行(即第 011B 行);由于该行的有效位=1,≠04CH(物理地址高 12 位),标记(值为 105H)故访

问该地址时 Cache 不命中。

(4) 虚拟地址 024BACH=0000 0010 0100 1011 1010 1100B,故虚页号为 0000 0010 0100B;

由于 TLB 只有 8/4=2 个组,故虚页号中高 11 位为 TLB 标记,最低 1 位为 TLB 组号,它们的值分别为 0000 0010 010B(即 012H)和 0B,因此,该虚拟地址所对应物理页面只可能映射到 TLB 的第 0 组。

由于组 0 中存在有效位=1、标记=012H 的项,所以访问 TLB 命中,即虚拟地址 024BACH 所在的页面在主存中。

43.假定某计算机的 CPU 主频为 80MHz,CPI 为 4,平均每条指令访存 1.5 次,主存与 Cache 之间交换的块大小为 16B,Cache 的命中率为 99%,存储器总线宽带为 32 位。请

回答下列问题。

1) 该计算机的 MIPS 数是多少?平均每秒 Cache 缺失的次数是多少?在不考虑 DMA

传送的情况下,主存带宽至少达到多少才能满足 CPU 的访存要求?

2) 假定在 Cache 缺失的情况下访问主存时,存在 0.0005%的缺页率,则 CPU 平均每秒产生多少次缺页异常?若页面大小为 4KB,每次缺页都需要访问磁盘,访问磁盘时 DMA 传送采用周期挪用方式,磁盘 I/O 接口的数据缓冲寄存器为 32 位,则磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是多少?

3) CPU 和 DMA 控制器同时要求使用存储器总线时,哪个优先级更高?为什么?

4) 为了提高性能,主存采用 4 体低位交叉存储模式,工作时每 1/4 个存储周期启动一

个体。若每个体的存储周期为 50ns,则该主存能提供的最大带宽是多少?

43.解答:

(1) 平均每秒 CPU 执行的指令数为:80M/4=20M,故 MIPS 数为 20;(1 分) 平均每条指令访存 1.5 次,故平均每秒 Cache 缺失的次数=20M×1.5×(1-99%)=300k;(1 分)

当 Cache 缺失时,CPU 访问主存,主存与 Cache 之间以块为传送单位,此时,主存带宽为 16B×300k/s =4.8MB/s。在不考虑 DMA 传输的情况下,主存带宽至少达到 4.8MB/s 才

能满足 CPU 的访存要求。(2 分)

(2) 题中假定在 Cache 缺失的情况下访问主存,平均每秒产生缺页中断 300000 ×0.0005%=1.5 次。因为存储器总线宽度为 32 位,所以每传送 32 位数据,磁盘控制器发出一次 DMA 请求,故平均每秒磁盘 DMA 请求的次数至少为 1.5×4KB/4B=1.5K=1536。(3)CPU 和 DMA 控制器同时要求使用存储器总线(2 分)时,DMA 请求优先级更高;(1 分)

因为 DMA 请求得不到及时响应,I/O 传输数据可能会丢失。(1 分)

(4)4 体交叉存储模式能提供的最大带宽为 4×4B/50ns=320MB/s。(2 分)

44.某 16 位计算机中,带符号整数用补码表示,数据 Cache 和指令 Cache 分离。题 44 表给出了指令系统中部分指令格式,其中 Rs 和 Rd 表示寄存器,mem 表示存储单元地址,

(x)表示寄存器 x 或存储单元 x 的内容。

表指令系统中部分指令格式

名称 加法指令 算术/逻辑左移 算术右移 取数指令 存数指令 指令的汇编格式 指令功能 (Rs)+(Rd)->Rd 2*(Rd)->Rd (Rd)/2->Rd (mem)->Rd (Rs)->mem ADD Rs,Rd SHL Rd SHR Rd LOAD Rd, mem STORE Rs, mem 该计算机采用 5 段流水方式执行指令,各流水段分别是取指(IF)、译码/读寄存器(ID)、 执行/计算有效地址(EX)、访问存储器(M)和结果写回寄存器(WB),流水线采用―按序 发射,按序完成‖方式,没有采用转发技术处理数据相关,并且同一个寄存器的读和写操作 不能在同一个时钟周期内进行。请回答下列问题:

1) 若 int 型变量 x 的值为-513,存放在寄存器 R1 中,则执行指令―SHL R1‖后,R1 的

内容是多少?(用十六进制表示)

2) 若某个时间段中,有连续的 4 条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这 4 条指令所需的时钟周期数为多少?

3) 若高级语言程序中某赋值语句为 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 段被阻塞的原因各是什么?

4)若高级语言程序中某赋值语句为 x=x*2+a,x 和 a 均为 unsigned int 类型变量,它们的存储单元地址分别表示为[x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿题

44 图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。

44.解答:

(1)x 的机器码为[x]补=1111 1101 1111B,即指令执行前(R1)=FDFFH,右移 1 位后为 1111

1110 1111 1111B,即指令执行后(R1)=FEFFH。(2 分) 【评分说明】仅正确写出指令执行前的(R1)可给 1 分。

(2) 至少需要 4+(5-1)=8 个时钟周期数。(2 分)

(3) I3 的 ID 段被阻塞的原因:因为 I3 与 I1 和 I2 都存在数据相关,需等到 I1 和 I2 将结果写回寄存器后,I3 才能读寄存器内容,所以 I3 的 ID 段被阻塞。(1 分) I4 的 IF 段被阻塞的原因:因为 I4 的前一条指令 I3 在 ID 段被阻塞,所以 I4 的 IF 段被阻塞。(1 分)

(4) 因 2*x 操作有左移和加法两种实现方法,故 x=x*2+a 对应的指令序列为 I1 LOAD R1,[x] I2 LOAD R2,[a]

I3 SHL R1 //或者 ADD R1,R1 I4 ADD R1,R2 I5 STORE R2,[x]

【评分说明】指令正确给 2 分;其他正确答案同样给分;部分正确,酌情给分。

这 5 条指令在流水线中执行过程如下图所示。(3 分) 指令 I1 1 2 3 4 5 6 7 时间单元 8 9 10 11 12 13 14 15 16 17 IF ID EX M WB I2 IF ID EX M WB I3 IF ID EX M WB I4 IF ID EX M WB I5 IF ID EX M WB 故执行x=x*2+a 语句最少需要 17 个时钟周期。(1 分)

盘,把 A 调入内存,而以后数组 A 的元素都在内存中,则不会导致访盘,所以该程序一共访盘一次。(2 分)

每访问一次内存数据就会查 TLB 一次,共访问数组 1000 次,所以此时又访问 TLB1000 次,还要考虑到第一次访问数组 A,即访问 A[0]时,会多访问一次 TLB(第一次访问 A[0]会先查一次 TLB,然后产生缺页,处理完缺页中断后,会重新访问 A[0],此时又查 TLB),所以访问 TLB 的次数一共是 1001 次。(2 分)

【评分说明】

①对于第 1 问,若答案中除指令 4 外还包含其他运算类指令(即指令 1、2、5),则给 1 分,其他情况,则给 0 分。

②对于第 2 问,只要回答“load 指令”,即可得分。

③对于第 3 问,若答案中给出的读 TLB 的次数为 1002,同样给分。若直接给出正确的 TLB 及磁盘的访问次数,而未说明原因,给 3 分。若给出的 TLB 及磁盘访问次数不正确,但解题思路正确,可酌情给分。

43.(13 分)某 16 位计算机的主存按字节编码,存取单位为 16 位;采用 16 位定长指令字格式; CPU 采用单总线结构,主要部分如下图所示。图中 R0~R3 为通用寄存器;T 为暂存器;SR 为移位寄存器,可实现直送(mov)、左移一位(left)和右移一位(right)3 种操作,控制信号为 SRop,SR 的输出由信号 SRout 控制;ALU 可实现直送 A(mova)、A 加 B(add)、A 减 B(sub)、A 与 B(and)、

A 或 B(or)、非 A(not)、A 加 1(inc)7 种操作,控制信号为 ALUop。

请回

答下列问题。

1) 图中哪些寄存器是程序员可见的?为何要设置暂存器 T? 2) 控制信号 ALUop 和 SRop 的位数至少各是多少? 3) 控制信号 SRout 所控制部件的名称或作用是什么? 4) 端点①~⑨中,哪些端点须连接到控制部件的输出端?

5) 为完善单总线数据通路,需要在端点①~⑨中相应的端点之间添加必要

的连线。写出连线的起点和终点,以正确表示数据的流动方向。

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

43.解答:

1) 程序员可见寄存器为通用寄存器(R0~R3)和 PC。因为采用了单总线结构,

因此,若无暂存器 T,则 ALU 的 A、B 端口会同时获得两个相同的数据,使数据通路不能正常工作。

【评分说明】回答通用寄存器(R0~R3),给分;回答 PC,给分;部分正确,酌情给分。设置暂存器 T 的原因若回答用于暂时存放端口 A 的数据,则给分,其他答案,酌情给分。

2) ALU 共有 7 种操作,故其操作控制信号 ALUop 至少需要 3 位;移位寄存

器有 3 种操作,其操作控制信号 SRop 至少需要 2 位。

3) 信号 SRout 所控制的部件是一个三态门,用于控制移位器与总线之间数据通

路的连接与断开。

【评分说明】只要回答出三态门或者控制连接/断开,即给分。

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

【评分说明】答案包含④、⑥、⑦、⑨中任意一个,不给分;答案不全酌情给分。

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

【评分说明】回答除上述连线以外的其他连线,酌情给分。

6) 因为每条指令的长度为 16 位,按字节编址,所以每条指令占用 2 个内存单

元,顺序执行时,下条指令地址为(PC)+2。MUX 的一个输入端为 2,可便于执行(PC)+2 操作。

44.(10 分)题 43 中描述的计算机,其部分指令执行过程的控制信号如下图所示。

·006·

题图 a 部分指令控制信号

该机指令格式如下图所示,支持寄存器直接和寄存器间接两种寻址方式,寻址方式位分别为 0 和 1,通用寄存器 R0~R3 的编号分别为 0、1、2 和 3。

题图 b 指令格式

请回答下列问题。

1) 该机的指令系统最多可定义多少条指令?

2) 假定 inc、shl 和 sub 指令的操作码分别为 01H、02H 和 03H,则以下指令对应的机器代码各是什么? ① inc R1 ③ sub R3, (R1),R2

; R1 + 1→R1 ; ((R1)) – (R2) → R3

② shl R2,R1 ; (R1) << 1→R2

3) 假设寄存器 X 的输入和输出控制信号分别为 Xin 和 Xout,其值为 1 表示有效,为 0 表示无效(例如,PCout=1 表示 PC 内容送总线);存储器控制信号为 MEMop,用于控制存储器的读(read)和写(write)操作。写出题图 a 中标号①~⑧处的控制信号或控制信号的取值。

4) 指令“sub R1,R3,(R2)”和“inc R1”的执行阶段至少各需要多少个时钟周期? 44.解答:

1) 指令操作码有 7 位,因此最多可定义 2=128 条指令。 2) 各条指令的机器代码分别如下:

7

①“inc R1”的机器码为:0000001 0 01 0 00 0 00,即0240H。

②“shl R2,R1”的机器码为:0000010 0 10 0 01 0 00,即0488H。

③“sub R3,(R1),R2”的机器码为:0000011 0 11 1 01 0 10,即06EAH。

3) 各标号处的控制信号或控制信号取值如下:

①0;②mov;③mova;④left;⑤read;⑥sub;⑦mov;⑧Srout。 【评分说明】答对两个给分。

指令“sub R1,R3,(R2)”的执行阶段至少包含 4 个时钟周期;指令“inc R1”的执行阶段至少包含 2 个时钟周期。

本文来源:https://www.bwwdw.com/article/ubud.html

Top