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

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

在这里插入图片描述

(1)M的存储器编址单位是什么?

(2)已知sll指令实现左移功能,数组A中每个元素占多少位?

(3)题44表中 bne指令的OFFSET字段的值是多少?己知 bne指令采用相对寻址方式,当前PC内容为bne 指令地址,通过分析题44表中指令地址和 bne 指令内容,推断出 bne指令的转移目标地址计算公式。

(4)若M采用如下“按序发射、按序完成”的5级指令流水线:F(取值)、ID(译码及取数)、EXE(执行)、MEM(访存)、WB(写回寄存器),且硬件不采取任何转发措施,分支指令的执行均引起3个时钟周期的阻塞,则Р中哪些指令的执行会由于数据相关而发生流水线阻塞?哪条指令的执行会发生控制冒险?为什么指令1的执行不会因为与指令5的数据相关而发生阻塞?

【第一步:信息提取】

OP:6位,可以有64条操作码

Rs:5位,可以有32个寄存器

Rd:5位,可以有32个寄存器

OFFSET:16位,

【第二步:具体解答】

第一小题:

(1)M的存储器编址单位是什么?

已知计算机M采用32位定长指令字,即一条指令占4B,观察表中各指令的地址可知,每条指令的地址差为4个地址单位,即4个地址单位代表4B,一个地址单位就代表了1B,所以该计算机是按字节编址的。

第二小题:

(1)已知sll指令实现左移功能,数组A中每个元素占多少位?

在二进制中某数左移两位相当于乘以4,由该条件可知,数组间的数据间隔为4个地址单位,而计算机按字节编址,所以数组A中的每个元素占4B。

第三小题:

(1)题44表中 bne指令的OFFSET字段的值是多少?己知 bne指令采用相对寻址方式,当前PC内容为bne 指令地址,通过分析题44表中指令地址和 bne 指令内容,推断出 bne指令的转移目标地址计算公式。

由表可知,bne指令的机器代码为1446FFFAH,根据题目给出的指令格式,后2B的内容为OFFSET字段,所以该指令的OFFSET字段为FFFAH,用补码表示,值为-6。

系统执行到 bne指令时,PC自动加4,PC的内容为08048118H,而跳转的目标是08048100H,两者相差了18H,即24个单位的地址间隔,所以偏移地址的一位即是真实跳转地址的-24/-6=4位(1分)。可知 bne指令的转移目标地址计算公式为 ( P C ) + 4 + O F F S E T × 4 (PC)+4+ OFFSET×4 (PC)+4+OFFSET×4

第四小题:

(1)若M采用如下“按序发射、按序完成”的5级指令流水线:F(取值)、ID(译码及取数)、EXE(执行)、MEM(访存)、WB(写回寄存器),且硬件不采取任何转发措施,分支指令的执行均引起3个时钟周期的阻塞,则Р中哪些指令的执行会由于数据相关而发生流水线阻塞?

由于数据相关而发生阻塞的指令为第2、3、4、6条,因为第2、3、4、6条指令都与各自前一条指令发生数据相关。

注:解题点看前一条的右边和后一条的左边

(2)哪条指令的执行会发生控制冒险?

第6条指令会发生控制冒险。

(3)为什么指令1的执行不会因为与指令5的数据相关而发生阻塞?

当前循环的第5条指令与下次循环的第1条指令虽然有数据相关,但由于第6条指令后有3个时钟周期的阻塞,因而消除了该数据相关。

【计算机组成原理2014年真题45题-8分】

假设对于4题中的计算机M和程序Р的机器代码,M采用页式虚拟存储管理;P开始执行时,(R1)=(R2)=0,(R6)=1000,其机器代码已调入主存但不在Cache中;数组A未调入主存,且所有数组元素在同一页,并存储在磁盘同一个扇区。请回答下列问题并说明理由。

(1)P执行结束时,R2的内容是多少?

(2)M的指令Cache和数据Cache分离。若指令Cache共有16行,Cache和主存交换的块大小为32字节,则其数据区的容量是多少?若仅考虑程序段Р的执行,则指令Cache的命中率为多少?

(3)P在执行过程中,哪条指令的执行可能发生溢出异常?哪条指令的执行可能产生缺页异常?对于数组A的访问,需要读磁盘和TLB至少各多少次?

【第一步:信息提取】

同上

【第二步:具体解答】

第一小题:

(1)P执行结束时,R2的内容是多少?

R2里装的是i的值,循环条件是i<N (1000),即当i自增到不满足这个条件时跳出循环,程序结束,所以此时i的值为1000。

第二小题:

(1)M的指令Cache和数据Cache分离。若指令Cache共有16行,Cache和主存交换的块大小为32字节,则其数据区的容量是多少?

Cache共有16块,每块32字节,所以 Cache数据区的容量为16x32B=512B。

(2)若仅考虑程序段Р的执行,则指令Cache的命中率为多少?

P共有6条指令,占24字节,小于主存块大小(32B),其起始地址为08048100H,对应一块的开始位置,由此可知所有指令都在一个主存块内。

读取第一条指令时会发生Cache缺失,故将Р所在的主存块调入Cache某一块,以后每次读取指令时,都能在指令Cache中命中。因此在1000次循环中,只会发生1次指令访问缺失,所以指令Cache的命中率为(1000×6-1)/(1000*6)= 99.98%。

第三小题:

(1)P在执行过程中,哪条指令的执行可能发生溢出异常?

指令4为加法指令,即对应sum+=A[i],当数组A中元素的值过大时,则会导致这条加法指令发生溢出异常

而指令2、5虽然都是加法指令,但它们分别为数组地址的计算指令和存储变量i的寄存器进行自增的指令,而i最大到达1000,所以它们都不会产生溢出异常。

(2)哪条指令的执行可能产生缺页异常?

只有访存指令可能产生缺页异常,即指令3可能产生缺页异常。

(3)对于数组A的访问,需要读磁盘和TLB至少各多少次?

因为数组A在磁盘的一页上,而一开始数组并不在主存中,第一次访问数组时会导致访盘,把A调入内存,而后数组A的元素都在内存中,不会导致访盘,所以该程序一共访盘一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_之桐_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值