计算机系统导论——第四章测验
第一题
答案: 错
理解: 流水线加速只是提高时钟处理的频率,并不会加速单条指令的执行时间,甚至会使执行时间变长
第二题
答案: 4GIPS
理解:
T
h
r
o
u
g
h
o
u
t
=
1
i
n
s
t
r
u
c
t
i
o
n
(
200
+
50
)
×
1
0
−
12
s
e
c
o
n
d
=
1000
250
×
G
I
P
S
=
4
G
I
P
S
Throughout=\frac{1 \ instruction}{(200+50) \times 10^{-12} second} = \frac{1000}{250} \times GIPS = 4GIPS
Throughout=(200+50)×10−12second1 instruction=2501000×GIPS=4GIPS
ppt上给的是GIPS,书上给的是GOPS,有点小疑惑,instruction == operation ?
instrcution我的理解是一条指令(movq %eax,%rax),而operation是其中一个流水线阶段(FDEMW),所以instruction != operation
这里的选项改成GOPS会不会更好一点?
第三题
答案: 函数返回,数据相关,有条件跳转
理解: 当ret通过流水线时,暂停取指阶段,同时ret流过译码、执行和内存阶段。为啥不等待ret流过写回阶段呢?因为内存阶段一结束,其实W_valM(W寄存器文件传回Select PC的那条线),已经可以参与F阶段了,而W_valM和W_valE更新寄存器文件跟F阶段无关
第四题
答案: 对
理解: Y86-64指令集包括了CISC和RISC二者的属性可以看成采用CISC指令集(x86-64)同时应用RISC一些原则进行了简化
在CISC这方面,条件码、可变长指令,使用栈存储返回值
在RISC方面,装载/存储 体系结构,规整的指令编码,通过寄存器传递过程参数
第五题
答案: a、b、c、d
- a——RISC指令是定长的,便于加载和解码
- b——ARM是采用RISC指令集
- c——CISC指令集延迟较长,指令延迟差异性较大
- d——只允许 Load 和 Store 指令执行存储器操作,其余指令均对寄存器操作。
理解:
ARM处理器 CISC(复杂指令集)与RISC(精简指令集)
复杂指令集 CISC
- 复杂指令集计算机
- IA32就是例子
面向栈的指令集
- 使用栈传递参数,保存程序计数器
- 显式的入栈和出栈指令
运算指令能够访问内存
- 需要内存读和写
- 复杂的地址计算方式
条件码
- 作为算术和逻辑运算指令的副作用设置条件码
哲学
- 增加指令执行“典型的”编程任务
精简指令集 RISC
- 精简指令集计算机
指令更少,更简单
- 为了完成任务可能需要更多指令
- 可以执行指令用小且快速的硬件
面向寄存器的指令集
- 有更多的寄存器(典型32个)
- 用于参数传递、返回指针和临时变量存储
只有load和store指令能够访问内存
- 类似于Y86-64的mrmovq和rmmovq指令
没有条件码
- 测试指令返回0/1在寄存器中
第六题
答案: a、b、c、d
- a——根据当前PC和指令计算,PC increment(PC递增)
- b——内存,W_valM(栈顶)
- c——指令中得立即数,val_C(call 立即数)
- d——根据当前指令和PC预测,predPC
理解:
第七题
答案: a、b、d
理解:
- 组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合,而与电路以前状态无关,而与其他时间的状态无关。
- c——寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。
第八题
答案: a、b、c、d
理解: push、pop、ret都需要访问栈(位于内存)
阶段 | c a l l D e s t call \ Dest call Dest |
---|---|
取指 | i c o d e : i f u n ← M 1 [ P C ] v a l C ← M 4 [ P C + 1 ] v a l P ← P C + 5 icode:ifun \leftarrow M_1[PC] \\ valC \leftarrow M_4[PC+1] \\ valP \leftarrow PC+5 icode:ifun←M1[PC]valC←M4[PC+1]valP←PC+5 |
解码 | v a l B ← R [ % e s p ] valB \leftarrow R[\%esp] valB←R[%esp] |
执行 | v a l E ← v a l B + ( − 4 ) valE \leftarrow valB+(-4) valE←valB+(−4) |
访存 | M 4 [ v a l E ] ← v a l P M_4[valE] \leftarrow valP M4[valE]←valP |
写回 | R [ % e s p ] ← v a l E R[\%esp]\leftarrow valE R[%esp]←valE |
更新PC | P C ← v a l C PC\leftarrow valC PC←valC |
call将下一条指令的地址(valP == PC+5)压栈,将Dest赋值给PC,还是要访问栈
ret将当前栈顶的值(4字节)赋值给PC指针,栈顶指针+4
push、pop是对立统一的过程
ret、call也是如此
第九题
答案: a、b
理解: 异常——在这种情景下处理器不能继续正常操作
非法指令——异常
内存访问错误——异常
Cache丢失——缓存不命中处理
分支预测错误——丢弃预测分支,继续执行
第十题
答案: a、b、c、d
理解: 写回寄存器文件(push,irmov),写回PC指针(ret、call)