计算机考研 | 2010年 | 计算机组成原理真题

文章目录

  • 【计算机组成原理2010年真题43题-11分】
    • 【第一步:信息提取】
    • 【第二步:具体解答】
  • 【计算机组成原理2010年真题44题-12分】
    • 【第一步:信息提取】
    • 【第二步:具体解答】

【计算机组成原理2010年真题43题-11分】

计算机考研 | 2010年 | 计算机组成原理真题_第1张图片

请回答下列问题:

(1)该指令系统最多可有多少指令?该计算机最多有多少个通用寄存器﹖存储器地址寄存器(MAR)和存储器数据寄存器(MDR)至少各需要多少位?

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

(3)若操作码0010B表示加法操作(助记符为add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H中的内容为5678H,地址5678H中的内容为1234H,则汇编语句"add(R4),(R5)+"(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元中的内容会改变?改变后的内容是什么?

【第一步:信息提取】

计算机字长为16位:2B

主存地址空间大小为128KB:7位

按字编址:2B

【第二步:具体解答】

第一小题:

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

操作码占4位,该指令系统最多可有 2 4 = 16 2^4=16 24=16条指令。

操作数占6位,其中寻址方式占3位、寄存器编号占3位,因此该机最多有 2 3 = 8 2^3=8 23=8个通用寄存器。

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

主存地址空间大小为128KB,按字编址,字长为16位,共有 128 K B / 2 B = 2 16 128KB/2B =2^{16} 128KB/2B=216个存储单元,因此MAR至少为16位;

因为字长为16位,故MDR至少为16位。

第二小题:

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

寄存器字长为16位,PC可表示的地址范围为0 ~ 2 16 − 1 2^{16}-1 2161,Rn可表示的相对偏移量范围为 − 2 15 -2^{15} 215 ~ 2 15 − 1 2^{15}-1 2151

而主存地址空间为 2 16 2^{16} 216,故转移指令的目标地址范围为0000H~FFFFH (0~ 2 16 − 1 2^{16}-1 2161)。

第三小题:

(1)若操作码0010B表示加法操作(助记符为add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H中的内容为5678H,地址5678H中的内容为1234H,则汇编语句"add(R4),(R5)+"(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?

在这里插入图片描述

将对应的机器码写成十六进制形式为0010 0011 0001 0101B = 2315H。

(2)该指令执行后,哪些寄存器和存储单元中的内容会改变?改变后的内容是什么?

该指令的功能是将R4的内容所指存储单元的数据与R5的内容所指存储单元的数据相加,并将结果送入R5的内容所指存储单元中。

(R4)= 1234H, (1234H)=5678H;

(R5)=5678H,(5678H)= 1234H

执行加法操作5678H +1234H =68ACH,之后R5自增。

该指令执行后,R5和存储单元5678H的内容会改变,R5的内容从5678H变为5679H,存储单元5678H中的内容变为该指令的计算结果68ACH。

【计算机组成原理2010年真题44题-12分】

某计算机的主存地址空间大小为256MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示:

计算机考研 | 2010年 | 计算机组成原理真题_第2张图片

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

(1)若不考虑用于Cache一致维护和替换算法的控制位,则数据Cache的总容量为多少?

(2)数组元素 a[0][31]a[1][1] 各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?

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

【第一步:信息提取】

主存地址空间大小为256MB:28位

按字节编址:字节编址

指令Cache和数据Cache分离:两种cache内容

每个Cache行大小为64B,数据Cache采用直接映射方式:cache内主存块6位

【第二步:具体解答】

第一小题:

(1)若不考虑用于Cache一致维护和替换算法的控制位,则数据Cache的总容量为多少?

每个Cache行对应一个标记项,有效位+脏位+替换控制位+标记位。

不考虑用于Cache 一致性维护和替换算法的控制位。地

址总长度为28位( 2 28 = 256 M 2^{28}=256M 228=256M),块内地址6位( 2 6 = 64 2^6= 64 26=64),Cache块号3位( 2 3 = 8 2^3=8 23=8),故Tag 的位数为28-6-3 = 19位,还需使用一个有效位,故题中数据Cache行的结构:有效位(1bit)+标记位(19bit)+每行存储(64B=512bit)。

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

第二小题:

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

直接映射方式,取余。

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

第三小题:

(1)程序A和B的数据访问命中率各是多少?

数组a的大小为256×256×4B=2B,占用 2 18 / 64 = 2 12 2^{18}/64 =2^{12} 218/64=212个主存块,按行优先存放,程序A逐行访问数组a,共需访问的次数为21次,未命中次数为22次(即每个字块的第一个数未命中),

因此程序A的命中率为 ( 2 16 − 2 12 ) / 2 16 ∗ 100 (2^{16}-2^{12})/2^{16}*100% (216212)/216100=93.75%

(2)哪个程序的执行时间更短?

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

由于从 Cache读数据比从:主存读数据快很多,所以程序A的执行比程序B快得多。

你可能感兴趣的:(——,计算机考研,——,考研)