计组大题纯题目无间隙¶
第二章 数据的表示和运算¶
【2011-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) 计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?
【2020-43】¶
(13分)有实现x×y的两个C语言函数如下:
假定某计算机M中ALU只能进行加减运算和逻辑运算。请回答下列问题。
(1) 若M的指令系统中没有乘法指令,但有加法、减法和移位等指令,则在M上也能实现上述两个函数中的乘法运算,为什么?
(2) 若M的指令系统中有乘法指令,则基于ALU、移位器、寄存器以及相应控制逻辑实现乘法指令时,控制逻辑的作用是什么?
(3) 针对以下三种情况:①没有乘法指令;②有使用ALU和移位器实现的乘法指令;③有使用阵列乘法器实现的乘法指令,函数umul()在哪种情况下执行时间最长?哪种情况下执行的时间最短?说明理由。
(4) n位整数乘法指令可保存2n位乘积,当仅取低n位作为乘积时,其结果可能会发生溢出。当\(n=32、x= 2^{31}−1 、y=2\)时,带符号整数乘法指令和无符号整数乘法指令得到的x×y的2n位乘积分别是什么(用十六进制表示)?此时函数umul()和imul()的返回结果是否溢出?对于无符号整数乘法运算,当仅取乘积的低位作为乘法结果时,如何用2n位乘积进行溢出判断?
【2017-43】¶
(13分)已知\(f(n)=\sum_{i=0}^{n}2^i =2^{n+1}-1=\overbrace{11...1}B\) ,计算f(n)的C语言函数f1如下:
int f1(unsigned n) {
int sum=1, power=1;
for (unsigned i=0; i<=n-1; i++) {
power*=2;
sum+=power;
}
return sum;
}
将f1中的int都改为float,可得到计算f(n)的另一个函数f2。假设unsigned和int型数据都占32位,float采用IEEE754单精度标准。请回答下列问题。
(1) 当n=0时,f1会出现死循环,为什么?若将f1中的变量i和n都定义为int型,则f1是否还会出现死循环?为什么?
(2) f1(23)和f2(23)的返回值是否相等?机器数各是什么(用十六进制表示)?
(3) f1(24)和f2(24)的返回值分别为33554431和33554432.0,为什么不相等?
(4) \(f(31)= 2^{32}−1\) ,而f1(31)的返回值却为-1,为什么?若使f1(n)的返回值与f(n)相等,则最大的n是多少?
(5) f2(127)的机器数为7F80 0000H,对应的值是什么?若使f2(n)的结果不溢出,则最大的n是多少?若使f2(n)的结果精确(无舍入),则最大的n是多少?
第三章 存储器层次结构¶
【2010-44】¶
(12分)某计算机的主存地址空间大小为256MB,按字节编址,指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示:
int a[256][256]
...
int sum_array1()
{
int i, j, sum=0;
for (i=0; i<256; i++)
for (j=0; j<256; j++)
sum += a[i][j]
return sum;
}
int a[256][256]
...
int sum_array1()
{
int i, j, sum=0;
for (j=0; j<256; j++)
for (i=0; i<256; i++)
sum += a[i][j]
return sum;
}
假定int类型数据用32位补码表示,程序编译时i、j、sum均分配在寄存器中,数组a按行优先方式存放,首地址320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。
(1) 若不考虑用于Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多少?
(2) 数组数据a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?
(3) 程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?
【2014-45】¶
(12分)假设对于计算机M和程序段P的机器代码,M采用页式虚拟存储管理;P开始执行时,(R1)=(R2)=0,(R6)=1000,其机器代码已调入主存但不在Cache中;数组A未调入主存,且所有数组元素在同一页,并存储在磁盘同一个扇区。请回答下列问题并说明理由。\ \(\begin{array}{cccccc} \text{编号}&\text{地址}&\text{机器代码}&\text{汇编代码}&\text{注释}\\\hline 1&\text{08048100H}&\text{00022080H}&\text{loop: sll R4, R2, 2}&\text{(R2)<<2→R4}\ 2&\text{08048104H}&\text{00083020H}&\text{add R4, R4, R3}&\text{(R4)+(R3)→R4}\ 3&\text{08048108H}&\text{8C850000H}&\text{load R5, 0(R4)}&\text{((R4)+0)→R5}\ 4&\text{0804810CH}&\text{00250820H}&\text{add R1, R1, R5}&\text{(R1)+(R5)→R1}\ 5&\text{08048110H}&\text{20420001H}&\text{add R2, R2, 1}&\text{(R2)+1→R2}\ 6&\text{08048114H}&\text{1446FFFAH}&\text{bne R2, R6, loop}&\text{if (R2)!=(R6) goto loop}\ \end{array}\)
(1) P执行结束时,R2的内容是多少?
(2) M的指令Cache和数据Cache分离。若指令Cache共有16行,Cache和主存交换的块大小为32字节,则其数据区的容量是多少?若仅考虑程序段P的执行,则指令Cache的命中率为多少?
(3) P在执行过程中,哪条指令的执行可能发生溢出异常?哪条指令的执行可能产生缺页异常?对于数组A的访问,需要读磁盘和TLB至少各多少次?
【2020-44】¶
(10分)假定主存地址为32位,按字节编址,指令Cache和数据Cache与主存之间均采用8路组相联映射方式,直写(WriteThrough)写策略和LRU替换算法,主存块大小为64B,数据区容量各为32KB。开始时Cache均为空。请回答下列问题。
(1) Cache每一行中标记(Tag)、LRU位各占几位?是否有修改位?
(2) 有如下C语言程序段:
若数组s及其变量k均为int型,int型数据占4B,变量k分配在寄存器中,数组s在主存中的起始地址为008000C0H,则该程序段执行过程中,访问数组s的数据Cache缺失次数为多少?
(3) 若CPU最先开始的访问操作是读取主存单元00010003H中的指令,简要说明从Cache中访问该指令的过程,包括Cache缺失处理过程。
【2011-44】¶
(12分)某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为16MB,主存(物理)地址空间大小为1MB,页面大小为4KB:Cache采用直接映射方式,共8行:主存与Cache之间交换的块大小为32B。系统运行到某一时刻时,页表的部分内容和Cache的部分内容分别如题 44-a 图、题 44-b 图所示,图中页框号及标记字段的内容为十六进制形式。


请回答下列问题∶
(1) 虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号(物理页号)?
(2) 使用物理地址访问Cache时,物理地址应划分成哪几个字段?要求说明每个字段的位数及在物理地址中的位置。
(3) 虚拟地址001C60H所在的页面是否在主存中?若在主存中,则该虚拟地址对应的物理地址是什么?访问该地址时是否Cache命中?要求说明理由。
(4) 假定为该机配置一个4路组相连的TLB,该TLB共可存放8个页表项,若其当前内容(十六进制)如题 44-c 图所示,则此时虚拟地址024BACH所在的页面是否在主存中?要求说明理由。

| 计算 | 结果 | |
|---|---|---|
| 虚拟地址位数 | 16MB = 2²⁴ | 24位 |
| 物理地址位数 | 1MB = 2²⁰ | 20位 |
| 页内偏移 | 4KB = 2¹² | 12位 |
| 虚页号位数 | 24 - 12 | 12位(bits 23~12) |
| 物理页框号位数 | 20 - 12 | 8位(bits 19~12) |
| Cache块内偏移 | 32B = 2⁵ | 5位(bits 4~0) |
| Cache行索引 | 8行 = 2³ | 3位(bits 7~5) |
| Cache标记 | 20 - 5 - 3 | 12位(bits 19~8) |
【2016-45】¶
(14分)某计算机采用页式虚拟存储管理方式,按字节编址,虚拟地址为32位,物理地址为24位,页大小为8KB;TLB采用全相联映射;Cache数据区大小为64KB,按2路组相联方式组织,主存块大小为64B。存储访问过程的示意图如下。

请回答下列问题。
(1) 图中字段A~G的位数各是多少?TLB标记字段B中存放的是什么信息?
(2) 将块号为4099的主存块装入到Cache中时,所映射的Cache组号是多少?对应的H字段内容是什么?
(3) Cache缺失处理的时间开销大还是缺页处理的时间开销大?为什么?
(4) 为什么Cache可以采用直写 (Write Through) 策略,而修改页面内容时总是采用回写 (Write Back) 策略?
【2018-44】¶
(15分)某计算机采用页式虚拟存储管理方式,按字节编址。CPU进行存储访问的过程如题44图所示。

根据题44图回答下列问题。
(1) 主存物理地址占多少位?
(2) TLB采用什么映射方式?TLB用SRAM还是DRAM实现?
(3) Cache采用什么映射方式?若Cache采用LRU替换算法和回写(Write Back)策略,则Cache每行中除数据(Data)、Tag和有效位外,还应有哪些附加位?Cache总容量是多少?Cache中有效位的作用是什么?
(4) 若CPU给出的虚拟地址为0008C040H,则对应的物理地址是多少?是否在Cache中命中?说明理由。若CPU给出的虚拟地址为0007C260H,则该地址所在主存块映射到的Cache组号是多少?
【2019-46】¶
若计算机M的主存地址为32位,釆用分页存储管理方式,页大小为4KB,则第1行的push指令和第30行的ret指令是否在同一页中(说明理由)?若指令Cache有64行,采用4路组相联映射方式,主存块大小为64B,则32位主存地址中,哪几位表示块内地址?哪几位表示Cache组号?哪几位表示标记(tag)信息?读取第16行的call指令时,只可能在指令Cache的哪一组中命中(说明理由)?
int f1(int n){
1 00401000 55 push ebp
... ... ...
if(n>1)
11 00401018 83 7D 08 01 cmp dword ptr [ebp+8],1
12 0040101C 7E 17 jle f1+35h (00401035)
return n*f1(n-1);
13 0040101E 8B 45 08 mov eax, dword ptr [ebp+8]
14 00401021 83 E8 01 sub eax, 1
15 00401024 50 push eax
16 00401025 E8 D6 FF FF FF call f1 (00401000)
... ... ...
19 00401030 0F AF C1 imul eax, ecx
20 00401033 EB 05 jmp f1+3Ah (0040103a)
else return 1;
21 00401035 B8 01 00 00 00 mov eax, 1
}
... ... ...
26 00401040 3B EC cmp ebp, esp
... ... ...
30 0040104A C3 ret
【2021-44】¶
(8分)假设计算机M的主存地址为24位,按字节编址;采用分页存储管理方式,虚拟地址为30位,页大小为4KB;TLB采用2路组相联方式和LRU替换策略,共8组。请回答下列问题。
(1) 虚拟地址中哪几位表示虚页号?哪几位表示页内地址?
(2) 已知访问TLB时虚页号高位部分用作TLB标记,低位部分用作TLB组号,M的虚拟地址中哪几位是TLB标记?哪几位是TLB组号?
(3) 假设TLB初始时为空,访问的虚页号依次为10、12、16、7、26、4、12和20,在此过程中,哪一个虚页号对应的TLB表项被替换?说明理由。
(4) 若将M中的虚拟地址位数增加到32位,则TLB表项的位数增加几位?
【2023-43】¶
(14 分)已知计算机M字长为32位,按字节编址,采用请求调页策略的虚拟存储管理方式,虚拟地址为32位,页面大小为4KB;数据Cache采用4路组相联映射,数据区大小为8KB,主存块大小为32B。现有C语言程序段如下:
已知二维数组a按行优先存放,在虚拟地址空间中分配的起始地址为0042 2000H,sizeof(int)=4,假定在M上执行上述程序段之前数组a不在主存,且在该程序段执行过程中不会发生页面置换。请回答下列问题。
(1) 数组a分为几个页面存储?对于数组a的访问,会发生几次缺页异常?页故障地址各是什么?
(2) 不考虑变量i和j,该程序段的数据访问是否具有时间局部性?为什么?
(3) 计算机M的虚拟地址(A31~A0)中哪几位用作块内地址?哪几位用作Cache组号?a[1][0]的虚拟地址是多少?其所在主存块对应的Cache组号是多少?
(4) 数组a占用多少主存块?假设上述程序段执行过程中数组a的访问不会和其他数据发生Cache访问冲突,则数组a的Cache命中率是多少?若将循环中i和j的次序按如下方式调换:
则数组a的Cache命中率又是多少?
【2024-44】¶
(本题10 分)对于题 43 中的计算机 M,C 语言程序 P 包含的语句 “sum += a[i];” 在 M 中对应的指令序列 S 如下。
slli r4, r2, 2 // R[r4]←R[r2]<<2
add r4, r3, r4 // R[r4]←R[r3]+R[r4]
lw r5, 0(r4) // R[r5]←M[R[r4]+0]
add r1, r1, r5 // R[r1]←R[r1]+R[r5]
已知变量 i、sum 和数组 a 都为 int 型,通用寄存器 r1~r5 的编号为 01 H ~ 05 H。
请回答下列问题。
(1) 根据指令序列 S 中每条指令的功能,写出存放数组 a 的首地址、变量 i、变量 sum 的通用寄存器编号。(3 分)
(2) 已知 M 为小端方式计算机,采用页式存储管理方式,页大小为 4 KB。若执行到指令序列 S 中第一条指令时,i=5,且 r1 和 r3 的内容分别为 0000 1332 H 和 0013 DFF0 H,从地址 0013 DFF0 H 开始的存储单元内容如题 44 图所示,则执行 “sum+=a[i];” 语句后,a[i] 的地址、a[i] 和 sum 的机器数分别是什么(用十六进制表示)?a[i] 所在页的页号是多少?此次执行中,数组 a 至少存放在几页中?(5 分)

(3) 指令 “slli r4, r2, 2” 的机器码是什么(用十六进制表示)?若数组 a 改为 short 类型,则指令序列 S 中 slli 指令的汇编形式应是什么?(2 分)
第四章 指令系统¶
【2010-43】¶
(11 分)
某计算机字长为 16 位,主存地址空间大小为 128 KB,按字编址,采用单字长指令格式,指令各字段定义如下图所示。

转移指令采用相对寻址,相对偏移量用补码表示,寻址方式定义如下:
注:(x) 表示有存储器地址 x 或寄存器 x 的内容。
请回答下列问题:
(1) 该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器?存储器地址寄存器 (MAR) 和存储器数据寄存器 (MDR) 至少各需要多少位?(4 分)
(2) 转移指令的目标地址范围是多少?(2 分)
(3) 若操作码 0010B 表示加法操作(助记符为 add),寄存器 R4 和 R5 的编号分别为 100B 和 101B,R4 的内容为 1234H,R5 的内容为 5678H,地址 1234H 中的内容为 5678H,地址 5678H 中的内容为 1234H,则汇编语句“add (R4),(R5)+”(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会改变?改变后的内容是什么?(5 分)
【2013-44】¶
(14 分)某计算机采用 16 位定长指令字格式,其 CPU 中有一个标志寄存器,其中包含进位/借位标志 CF、零标志 ZF 和符号标志 NF。假定为该机设计了条件转移指令,其格式如下:

其中,00000 为操作码 OP;C、Z 和 N 分别为 CF、ZF 和 NF 的对应检测位,某检测位为 1 时表示需检测对应标志,需检测的标志位中只要有一个为 1 就转移,否则就不转移,例如,若 C = 1,Z = 0,N = 1,则需检测 CF 和 NF 的值,当 CF = 1 或 NF = 1 时发生转移;OFFSET 是相对偏移量,用补码表示。转移执行时,转移目标地址为 (PC)+2+2×OFFSET;顺序执行时,下条指令地址为 (PC)+2。请回答下列问题。
(1) 该计算机存储器按字节编址,还是按字编址?该条件转移指令向后(反向)最多可跳转多少条指令?(3 分)
(2) 某条件转移指令的地址为 200CH,指令内容如下图所示,若该执行时 CF = 0,ZF = 0,NF = 1,则该指令执行后 PC 的值是多少?若该指令执行时 CF = 1,ZF = 0,NF = 0,则该指令执行后 PC 的值又是多少?请给出计算过程。(5 分)

(3) 实现“无符号数比较小于等时转移”功能的指令中,C、Z 和 N 应各是什么?(3 分)
(4) 以下是该指令对应的数据通路示意图,要求给出中部件 ①~③ 的名称或功能说明。(3 分)

【2014-44】¶
(12分)某程序中有如下循环代码段P:“for (int i=0; i<N; i++) sum += A[i];”。假设编译时变量sum和i分别分配在寄存器R1和R2中。常量N在寄存器R6中,数组A的首地址在寄存器R3中。程序段P起始地址为08048100H,对应的汇编代码和机器代码如下表所示。

执行上述代码的计算机M采用32位定长指令字,其中分支指令bne采用如下格式。

Op为操作码,Rs和Rd为寄存器编号,OFFSET为偏移量,用补码表示。请回答下列问题,并说明理由。
(1) M的存储器编址单位是什么?
(2) 已知sll指令实现左移功能,数组A中每个元素占多少位?
(3) 题44表中bne指令的OFFSET字段的值是多少?已知bne指令采用相对寻址方式,当前PC内容为bne指令地址,通过分析题44表中指令地址和bne指令内容,推断出bne指令的转移目标地址计算公式。
(4) 若M采用如下“按序发射、按序完成”的5级指令流水线:IF(取指)、ID(译码及取数)、EXE(执行)、MEM(访存)、WB(写回寄存器),且硬件不采取任何转发措施,分支指令的执行均引起3个时钟周期阻塞,则P中那些指令的执行会由于数据相关而发生流水线阻塞?哪条指令的执行会发生控制冒险?为什么指令1的执行不会因为与指令5的数据相关而发生阻塞?
【2021-43】¶
假定计算机M字长为16位,按字节编址,连接CPU和主存的系统总线中地址线为20位、数据线为8位,采用16位定长指令字,指令格式及其说明如下:

其中,op1~op3为操作码,rs、rt和rd为通用寄存器编号,R[r]表示寄存器r的内容,imm为立即数,target为转移目标的形式地址。请回答下列问题。
(1) ALU的宽度是多少位?可寻址主存空间大小为多少字节?指令寄存器、主存地址寄存器(MAR)和主存数据寄存器(MDR)分别应有多少位?
(2) R型格式最多可定义多少种操作?I型和J型格式总共最多可定义多少种操作?通用寄存器最多有多少个?
(3) 假定op1为0010和0011时,分别表示带符号整数减法和带符号整数乘法指令,则指令01B2H的功能是什么(参考上述指令功能说明的格式进行描述)?若1、2、3号通用寄存器当前内容分别为B052H、0008H、0020H,则分别执行指令01B2H和01B3H后,3号通用寄存器内容各是什么?各自结果是否溢出?
(4) 若采用I型格式的访存指令中imm(偏移量)为带符号整数,则地址计算时应对imm进行零扩展还是符号扩展?
(5) 无条件转移指令可以采用上述哪种指令格式?
【2017-44】¶
(10分)在按字节编址的计算机M上,题43中f1的部分源程序(阴影部分)与对应的机器级代码(包括指令的虚拟地址)如下图所示。
int f1(unsigned n)
1 00401020 55 push ebp
... ... ...
for (unsigned i = 0; i <= n-1; i++)
... ... ...
20 0040105E 39 4D F4 cmp dword ptr [ebp-0Ch],ecx
... ... ...
{ power *= 2;
... ... ...
23 00401066 D1 E2 shl edx,1
... ... ...
return sum;
... ... ...
35 0040107F C3 ret
其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令。
请回答下列问题。
(1) 计算机M是RISC还是CISC?为什么?
(2) f1的机器指令代码共占多少字节?要求给出计算过程。
(3) 第20条指令cmp通过i减n-1实现对i和n-1的比较。执行f1(0)过程中,当i=0时,cmp指令执行后,进/借位标志CF的内容是什么?要求给出计算过程。
(4) 第23条指令shl通过左移操作实现了power*2运算,在f2中能否也用shl指令实现power*2?为什么?
【2019-45】¶
(16分)已知\(f(n)=n!=n×(n-1)×(n-2)×…×2×1\),计算f(n)的C语言函数f1的源程序(阴影部分)及其在32位计算机M上的部分机器级代码如下:
int f1(int n){
1 00401000 55 push ebp
... ... ...
if(n>1)
11 00401018 83 7D 08 01 cmp dword ptr [ebp+8],1
12 0040101C 7E 17 jle f1+35h (00401035)
return n*f1(n-1);
13 0040101E 8B 45 08 mov eax, dword ptr [ebp+8]
14 00401021 83 E8 01 sub eax, 1
15 00401024 50 push eax
16 00401025 E8 D6 FF FF FF call f1 (00401000)
... ... ...
19 00401030 0F AF C1 imul eax, ecx
20 00401033 EB 05 jmp f1+3Ah (0040103a)
else return 1;
21 00401035 B8 01 00 00 00 mov eax, 1
}
... ... ...
26 00401040 3B EC cmp ebp, esp
... ... ...
30 0040104A C3 ret
其中,机器级代码行包括行号、虚拟地址、机器指令和汇编指令,计算机M按字节编址,int型数据占32位。请回答下列问题:
(1) 计算f(10)需要调用函数f1多少次?执行哪条指令会递归调用f1?
(2) 上述代码中,哪条指令是条件转移指令?哪几条指令一定会使程序跳转执行?
(3) 根据第16行的call指令,第17行指令的虚拟地址应是多少?已知第16行的call指令采用相对寻址方式,该指令中的偏移量应是多少(给出计算过程)?已知第16行的call指令的后4字节为偏移量,M是采用大端方式还是采用小端方式?
(4) f(13)=6227020800,但f1(13)的返回值为1932053504,为什么两者不相等?要使f1(13)能返回正确的结果,应如何修改f1的源程序?
(5) 第19行的imul指令(带符号整数乘)的功能是R[eax]←R[eax]×R[ecx],当乘法器输出的高、低32位乘积之间满足什么条件时,溢出标志OF=1?要使CPU在发生溢出时转异常处理,编译器应在imul指令后应加一条什么指令?
【2023-44】¶
(9 分)题43中C程序段在计算机M上的部分机器级代码如下,每个机器级代码行中依次包含指令序号、虚拟地址、机器指令和汇编指令。
for(i=0; i<24; i++)
1 00401072 C7 45 F8 00 00 00 00 mov[ebp-8], 0
2 00401079 EB 09 jmp 00401084h
3 0040107B 8B 55 F8 mov eax, [ebp-8]
... ... ...
7 00401088 7D 32 jge 004010bch
for(j=0; j<64; j++)
8 0040108A C7 45 FC 00 00 00 00 mov[ebp-4], 0
... ... ...
a[i][j]=10;
... ... ...
19 004010AE C7 84 82 00 20 42 00 0A 00 00 00 mov[ecx+edx*4+00422000h], 0Ah
20 ... ... ...
请回答下列问题。
(1) 第20条指令的虚拟地址是多少?
(2) 已知第2条jmp和第7条jge都是跳转指令,其操作码分别是EBH和7DH,跳转地址分别为0040 1084H、0040 10BCH,这两条指令都采用什么寻址方式?给出第2条指令jmp的跳转目标地址计算过程。
(3) 已知第19条mov指令的功能是“a[i][j]←10”,其中ecx和edx为寄存器名,0042 2000H是数组a的首地址,指令中源操作数采用什么寻址方式?已知edx中存放的是变量j,ecx中存放的是什么?根据该指令的机器码判断计算机M采用的是大端还是小端方式。
(4) 第一次执行第19条指令时,取指令过程中是否会发生缺页异常?为什么?
第五章 中央处理器¶
【2009-44】¶
某计算机字长16位,采用16位定长指令字结构,部分数据通路结构如下图所示(见下页),图中所有控制信号为1时表示有效、为0时表示无效,例如控制信号MDRinE为1表示允许数据从DB打入MDR,MDRin为1表示允许数据从内总线打入MDR。假设MAR的输出一直处于使能状态。加法指令“ADD (R1),R0”的功能为(R0)+((R1))→(R1),即将R0中的数据与R1的内容所指主存单元的数据相加,并将结果送入R1的内容所指主存单元中保存。

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

【2015-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。

题43图
注:已补充内总线到MAR的箭头和内总线到IR的箭头。
请回答下列问题。
(1) 图中哪些寄存器是程序员可见的?为何要设置暂存器T?
(2) 控制信号ALUop和SRop的位数至少各是多少?
(3) 控制信号SRout所控制部件的名称或作用是什么?
(4) 端点①~⑨中,哪些端点须连接到控制部件的输出端?
(5) 为完善单总线数据通路,需要在端点①~⑨中相应的端点之间添加必要的连线。写出连线的起点和终点,以正确表示数据的流动方向。
(6) 为什么二路选择器MUX的一个输入端是2?
【2015-44】¶
(10分)题43中描述的计算机,其部分指令执行过程的控制信号如题44图a所示。

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

请回答下列问题。
(1) 该机的指令系统最多可定义多少条指令?
(2) 假定inc、shl和sub指令的操作码分别为01H、02H和03H,则以下指令对应的机器代码各是什么?
- inc R1 ; (R1)+1→R1
- shl R2, R1; (R1)<<1→R2
- sub R3, (R1), R2; ((R1))–(R2)→R3
(3) 假设寄存器X的输入和输出控制信号分别为Xin和Xout,其值为1表示有效,为0表示无效(例如,PCout=1表示PC内容送总线);存储器控制信号为MEMop,用于控制存储器的读(read)和写(write)操作。写出题44图a中标号①~⑧处的控制信号或控制信号的取值。
(4) 指令“sub R1,R3,(R2)”和“inc R1”的执行阶段至少各需要多少个时钟周期?
【2022-43】¶
(15分)某CPU中部分数据通路如图所示,其中,GPRs为通用寄存器组;FR为标志寄存器,用于存放ALU产生的标志信息;带箭头虚线表示控制信号,如控制信号Read、Write分别表示主存读、主存写,MDRin表示内部总线上数据写入MDR,MDRout表示MDR的内容送内部总线。

题43图
(1) ALU的输入端A、B及输出端F的最高位分别为 A_{15} 、 B_{15} 及 F_{15} ,FR中的符号标志和溢出标志分别为SF和OF,则SF的逻辑表达式是什么?A加B、A减B时OF的逻辑表达式分别是什么?要求逻辑表达式的输入变量为A_{15} 、 B_{15} 及 F_{15} 。
(2) 为什么要设置暂存器Y和Z?
(3) 若GPRs的输入端rs、rd分别为所读、写的通用寄存器的编号,则GPRs中最多有多少个通用寄存器?rs和rd来自图中的哪个寄存器?已知GPRs内部有一个地址译码器和一个多路选择器,rd应该连接地址译码器还是多路选择器?
(4) 取指令阶段(不考虑PC增量操作)的控制信号序列是什么?若从发出主存读命令到主存读出数据并传送到MDR共需5个时钟周期,则取指令阶段至少需要几个时钟周期?
(5) 图中控制信号由什么部件产生?图中哪些寄存器的输出信号会连到该部件的输入端?、
【2024-43】¶
(严格来说不属于 mips,是 RISC-V 指令系统)假定计算机M字长32位,按字节编址,采用32位定长指令字。指令 add、slli 和 lw 的格式、编码和功能说明如题 43 图 (a) 所示。

其中,R[x] 表示通用寄存器 x 的内容,M[x] 表示地址为 x 的存储单元内容,shamt 为移位位数,imm 为补码表示的偏移量。题 43 图 (b) 给出了计算机 M 的部分数据通路及控制信号(用带箭头虚线表示),其中,A 和 B 分别表示从通用寄存器 rs1 和 rs2 中读出的内容;IR[31:20] 表示指令寄存器中的高 12 位;控制信号 Ext 为 0、1 时扩展器分别实现零扩展、符号扩展,ALUctr 为 000、001、010 时 ALU 分别实现加、减、逻辑左移运算。

请回答下列问题。
(1) 计算机 M 最多有几个通用寄存器?为什么 shamt 占 5 位?(2 分)
(2) 执行 add 指令时,控制信号 ALUBsrc 的取值应是什么?若 rs1 和 rs2 寄存器内容分别是 8765 4321 H 和 9876 5432 H,则 add 指令执行后,ALU 输出端 F、OF 和 CF 的结果分别是什么?若该 add 指令处理的是无符号整数,则应该根据哪个标志位判断是否溢出?(5 分)
(3) 执行 slli 指令时,控制信号 Ext 的取值可以是 0 也可以是 1,为什么?(2 分)
(4) 执行 lw 指令时,控制信号 Ext、ALUctr 的取值分别是什么?(2 分)
(5) 若一条指令的机器码是 A040 A103 H,则该指令一定是 lw 指令,为什么?若执行该指令时,R[01H] = FFFF A2D0 H,则所读取数据的存储地址是什么?(2 分)
【2012-44】¶
(13分)某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。下表给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,mem表示存储单元地址,(x)表示寄存器x或存储单元x的内容。
指令系统中部分指令格式

该计算机采用5段流水方式执行指令,各流水段分别是取指(IF)、译码/读寄存器(ID)、执行/计算有效地址(EX)、访问存储器(M)和结果写回寄存器(WB),流水线采用“按序发射,按序完成”方式,没有采用转发技术处理数据相关,并且同一个寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题:
(1) 若int型变量x的值为-513,存放在寄存器R1中,则执行指令“SHR R1” 后,R1的内容是多少(用十六进制表示)?
(2) 若某个时间段中,有连续的4条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这4条指令所需的时钟周期数为多少?
(3) 若高级语言程序中某赋值语句为x=a+b,x、a和b均为int型变量,它们的存储单元地址分别表示为[x]、[a]和[b]。该语句对应的指令序列及其在指令流水线中的执行过程如下图所示。

则这4条指令执行过程中,I3的ID段和I4的IF段被阻塞的原因各是什么?
(4) 若高级语言程序中某赋值语句为x=x*2+a,x和a均为unsigned int类型变量,它们的存储单元地址分别表示为[x]、[a],则执行这条语句至少需要多少个时钟周期?要求模仿题44图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。
第六章 总线和输入/输出系统¶
【2009-43】¶
某计算机的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之间没有访存冲突)?
【2012-43】¶
(11 分)假定某计算机的 CPU 主频为 80 MHz,CPI 为 4,平均每条指令访存 1.5 次,主存与 Cache 之间交换的块大小为 16 B,Cache 的命中率为 99%,存储器总线宽度为 32 位。请回答下列问题。
(1) 该计算机的 MIPS 数是多少?平均每秒 Cache 缺失的次数是多少?在不考虑 DMA 传送的情况下,主存带宽至少达到多少才能满足 CPU 的访存要求?(4 分)
(2) 假定在 Cache 缺失的情况下访问主存时,存在 0.0005% 的缺页率,则 CPU 平均每秒产生多少次缺页异常?若页面大小为 4 KB,每次缺页都需要访问磁盘,访问磁盘时 DMA 传送采用周期挪用方式,磁盘 I/O 接口的数据缓冲寄存器为 32 位,则磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是多少?(3 分)
(3) CPU 和 DMA 控制器同时要求使用存储器总线时,哪个优先级更高?为什么?(2 分)
(4) 为了提高性能,主存采用 4 体交叉存储模式,工作时每 1/4 个存储周期启动一个体。若每个体的存储周期为 50 ns,则该主存能提供的最大带宽是多少?(2 分)
【2013-43】¶
(9 分)某 32 位计算机,CPU 主频为 800 MHz,Cache 命中时的 CPI 为 4,Cache 块大小为 32 字节;主存采用 8 体交叉存储方式,每个体的存储字长为 32 位、存储周期是 40 ns;存储器总线宽度为 32 位,总线时钟频率为 200 MHz,支持突发传送总线事务。每次读突发传送总线事务的过程包括:送首地址和命令、存储器准备数据、传送数据。每次突发传送 32 字节,传送地址或者 32 位数据均需要一个总线时钟周期。请回答下列问题,要求给出理由或者计算过程。
(1) CPU 和总线的时钟周期各是多少?总线的带宽(即最大数据传输率)为多少?(3 分)
(2) Cache 缺失时,需要用几个读突发传送总线事务来完成一个主存块的读取?(1 分)
(3) 存储器总线完成一次读突发传送总线事务所需的时间是多少?(2 分)
(4) 若程序 BP 执行过程中,共执行了 100 条指令,平均每条指令需要 1.2 次访存,Cache 缺失率是 5%,不考虑替换等开销,则 BP 的 CPU 执行时间是多少?(3 分)
【2016-44】¶
(9分)假定CPU主频为50MHz,CPI为4。设备D采用异步串行通信方式向主机传送7位ASCII字符,通信规程中有1位奇校验位和1位停止位,从D接收启动命令到字符送入I/O端口需要0.5ms。请回答下列问题,要求说明理由。
(1) 每传送一个字符,在异步串行通信线上共需传输多少位?在设备D持续工作过程中,每秒钟最多可向I/O端口送入多少个字符?
(2) 设备D采用中断方式进行输入/输出,示意图如下∶

I/O端口每收到一个字符申请一次中断,中断响应需10个时钟周期,中断服务程序共有20条指令,其中第15条指令启动D工作。若CPU需从D读取1000个字符,则完成这一任务所需时间大约是多少个时钟周期?CPU用于完成这一任务的时间大约是多少个时钟周期?在中断响应阶段CPU进行了哪些操作?
【2018-43】¶
(8分)假定计算机的主频为500MHz,CPI为4。现有设备A和B,其数据传输率分别为2MBps和40MBps,对应I/O接口中各有一个32位数据缓冲寄存器。请回答下列问题,要求给出计算过程。
(1) 若设备A采用定时查询I/O方式,每次输入/输出都至少执行10条指令。设备A最多间隔多长时间查询一次才能不丢失数据?CPU用于设备A输入/输出的时间占CPU总时间的百分比至少是多少?
(2) 在中断I/O方式下,若每次中断响应和中断处理的总时钟周期数至少为400,则设备B能否采用中断I/O方式?为什么?
(3) 若设备B采用DMA方式,每次DMA传送的数据块大小1000B,CPU用于DMA预处理和后处理的总时钟周期数为500,则CPU用于设备B输入/输出的时间占CPU总时间的百分比最大是多少?
【2022-44】¶
(8分)假设某磁盘驱动器中有4个双面盘片,每个盘面有20000个磁道,每个磁道有500个扇区,每个扇区可记录512字节的数据,盘片转速为7200rpm(转/分),平均寻道时间为5ms,请回答下列问题。
(1) 每个扇区包含数据及地址信息,地址信息分为3个字段,这3个字段的名称格式什么?对于该磁盘,各字段至少占多少位?
(2) 一个扇区的平均访问时间约为多少?
(3) 若采用周期挪用DMA方式进行磁盘与主机之间的数据传送,磁盘控制器中的数据缓冲区大小为64位,则在一个扇区读写过程中,DMA控制器向CPU发送了多少次总线请求?若CPU检测到DMA控制器的总线请求信号时也需要访问主存,则DMA控制器是否可以获得总线使用权?为什么?