说明:本答案按照课程 PPT、目录中的练习题库以及试卷给出的符号约定整理。数学表达式统一使用 LaTeX。
变形补码使用双符号位;整数的符号位和数值位之间用逗号分隔。
已知:
X=−47,Y=+53
数值位为 6 位,因此真值表示范围为:
−64≤x≤63
首先写出绝对值的 6 位二进制形式:
47=(101111)2
53=(110101)2
正数的变形补码使用双符号位 00:
[Y]补=00,110101
求 −47 的补码:
所以:
[X]补=11,010001
同理,求 −Y=−53 的补码:
所以:
[−Y]补=11,001011
答案:
[X]补=11,010001
[Y]补=00,110101
[−Y]补=11,001011
[X]补+[Y]补=11,010001+00,110101=00,000110
双符号位为 00,没有溢出,结果为正数:
X+Y=(000110)2=6
答案:
X+Y=00,000110=(+6)10
减法转换为补码加法:
X−Y=X+(−Y)
[X]补+[−Y]补=11,010001+11,001011=10,011100
双符号位为 10,表示发生负溢出,也叫下溢。
从真值验证:
−47−53=−100
−100 超出了 6 位数值位可表示的范围 [−64,63]。
答案:
[X−Y]补=10,011100
X−Y 发生下溢(负溢)
已知:
X=+17.5,Y=−9
要求:
- 阶码 5 位,其中含双符号位;
- 尾数 8 位,其中含双符号位;
- 阶码和尾数均采用补码;
- 尾数数值位保持 6 位;
- 舍入采用截去法。
17.5=(10001.1)2
所以:
X=+0.100011×2101
即:
X=+0.100011×25
同理:
9=(1001)2
所以:
Y=−0.100100×2100
即:
Y=−0.100100×24
X 的阶码为 +5:
[EX]补=00101
X 的尾数为正:
[MX]补=00.100011
所以:
[X]浮=00101, 00.100011
Y 的阶码为 +4:
[EY]补=00100
Y=−0.100100,其尾数补码为:
[MY]补=11.011100
所以:
[Y]浮=00100, 11.011100
ΔE=EX−EY=5−4=1
Y 的阶码较小,因此将 Y 的尾数算术右移一位,阶码加 1:
11.011100⟶11.101110(0)
对阶后:
[Y]浮=00101, 11.101110(0)
括号中的 0 是移出的保护位。
00.100011+ 11.101110(0)00.010001(0)
因此:
[X+Y]浮=00101, 00.010001(0)
尾数 00.010001 不是规格化正数,需要左移一位,同时阶码减 1:
00.010001(0)⟶00.100010
00101⟶00100
所以:
[X+Y]浮=00100, 00.100010
采用截去法,直接舍去超出 6 位数值位的部分:
[X+Y]浮=00100, 00.100010
阶码没有溢出。
还原真值:
X+Y=+0.100010×24
=+(1000.10)2
=8.5
最终答案:
[X+Y]浮=00100, 00.100010
X+Y=(1000.1)2=8.5
已知:
T=400ns,τ=50ns
每字 64 位,连续读取 16 个字。
q=16×64=1024bit
顺序存储器每读一个字都需要一个完整存储周期:
t顺=nT
t顺=16×400=6400ns
带宽:
W顺=t顺q
W顺=6400ns1024bit=160Mbit/s
交叉存储器读出第一个字需要一个存储周期,后续各字按照总线传送周期连续输出:
t交=T+(n−1)τ
t交=400+15×50=1150ns
带宽:
W交=1150ns1024bit≈890.4Mbit/s
答案:
| 存储器组织方式 | 读取时间 | 带宽 |
|---|
| 顺序存储器 | 6400ns | 160Mbit/s |
| 交叉存储器 | 1150ns | 890.4Mbit/s |
已知:
- 计算机字长为 32 位,即每字 4B;
- 主存容量为 4MB;
- Cache 数据存储体容量为 8KB;
- 块长为 16 个字;
- 采用直接相联映射;
- 主存按字节编址。
主存容量:
4MB=222B
所以主存地址长度为 22 位。
每块包含 16 个字:
16×4B=64B=26B
因此块内偏移字段为 6 位,也可以进一步拆分为:
Cache 行数:
64B8KB=26213=27=128
所以行索引字段为 7 位。
标记字段:
22−7−6=9
主存地址划分为:
┌─────────┬───────────┬──────────────┐
│ Tag 9位 │ 行索引 7位 │ 块内偏移 6位 │
└─────────┴───────────┴──────────────┘
若把块内偏移继续拆开:
┌─────────┬───────────┬────────────┬──────────────┐
│ Tag 9位 │ 行索引 7位 │ 字偏移 4位 │ 字节偏移 2位 │
└─────────┴───────────┴────────────┴──────────────┘
CPU 每轮访问 0~199 号单元,共 200 个字。
每块有 16 个字,所以涉及的主存块数为:
⌈16200⌉=13
Cache 有 128 行,且这 13 个连续块映射到不同 Cache 行,不会发生冲突替换。
第一轮:
- 每个块第一次访问不命中,共 13 次不命中;
- 其余访问命中。
第一轮命中次数:
200−13=187
之后重复 4 轮,所需数据块都仍在 Cache 中:
4×200=800
总访问次数:
5×200=1000
总命中次数:
187+800=987
命中率:
h=1000987=0.987=98.7%
答案:
h=98.7%
按照课程题库采用的平均访问时间公式:
ta=htc+(1−h)tm
代入:
ta=0.987×10+0.013×50
ta=9.87+0.65=10.52ns
答案:
ta=10.52ns
补充:若某教材把“不命中”定义为先访问 Cache,再访问主存,则会写成
ta=tc+(1−h)tm=10.65ns。本课程此前题库采用前一种加权公式,因此本卷建议答 10.52ns。
机器字长为 16 位,各类指令格式为:
二地址:OP 4位 + A1 6位 + A2 6位
已知:
4 位操作码共有:
24=16
种编码。
二地址指令使用 14 种,还剩:
16−14=2
个 4 位前缀可扩展为一地址指令。
每个前缀再扩展 6 位,可以表示:
26=64
条一地址指令。
所以一地址指令区域最多有:
2×64=128
个 10 位操作码。
已使用 125 个,还剩:
128−125=3
个 10 位前缀可继续扩展为零地址指令。
每个前缀还能扩展 6 位:
N0=3×26=192
答案:
零地址指令最多有192条
N=14+125+192=331
答案:
整个指令系统最多有331条指令
每保留一个 4 位扩展前缀,最多可形成 64 条一地址指令。
247 条一地址指令至少需要:
⌈64247⌉=4
个扩展前缀。
因此二地址指令最多有:
24−4=16−4=12
答案:
二地址指令最多有12条
已知:
功能为:
R[rt]←M[R[rs]+SignExt(imm)]
题目表格中取指周期已经给出,需要补充计算周期和执行周期。
操作:
R[rs]→X
控制信号:
因为 Rs/Rt=0 时选择 rs,而表格只列高电平信号,所以不用列出 Rs/Rt。
操作:
SignExt(IR(I))+X→Z
控制信号:
操作:
Z→AR
控制信号:
题目已经给出:
M[AR]→DR
控制信号:
操作:
DR→R[rt]
控制信号:
由于 RegDst=0 时选择 rt,而题目只要求列高电平信号,因此不列 RegDst。
| 空号 | 答案 |
|---|
| ① | R[rs]→X |
| ② | IR(I)out,ADD |
| ③ | Z→AR |
| ④ | DR→R[rt] |
| ⑤ | DRout,Rin |
完整流程:
微指令字长为 32 位,各字段如下:
| 字段 | 位号 | 位数 | 编码方式 |
|---|
| W 组 | 31~27 | 5 | 编码表示 |
| X 组 | 26~24 | 3 | 编码表示 |
| Y 组 | 23~20 | 4 | 编码表示 |
| Z 组 | 19~12 | 8 | 直接表示 |
| 判别测试字段 | 11~7 | 5 | 题设可改为编码表示 |
| 下址字段 | 6~0 | 7 | 直接给出后继微地址 |
下址字段为 7 位,最多可寻址:
27=128
个微地址单元。
每条微指令为 32 位,所以控制存储器最大容量为:
128×32=4096bit
也可以写成:
4096bit=512B
答案:
4096bit
判别测试字段为 5 位,采用编码表示时共有:
25=32
种编码。
编码字段通常需要保留一种编码表示“不进行判别测试”,所以最多可表示:
25−1=31
个判别测试条件。
答案:
31个
微指令条数由下址字段的寻址范围决定:
27=128
答案:
128条
W、X、Y 三个字段采用编码表示,每个字段同一时刻最多发出一个微命令:
1+1+1=3
Z 组采用直接表示,8 位可以同时发出 8 个微命令。
因此:
3+8=11
答案:
11个
编码表示字段需要各保留一种“不发命令”的编码。
W 组:
25−1=31
X 组:
23−1=7
Y 组:
24−1=15
Z 组直接表示:
8
总数:
31+7+15+8=61
答案:
61种微命令
根据预约表:
对 S1:
3−1=2
6−3=3
6−1=5
所以 S1 产生禁止延迟:
{2,3,5}
对 S2:
4−2=2
产生禁止延迟:
{2}
S3 只使用一次,不产生禁止延迟。
合并后:
F={2,3,5}
令冲突向量按照:
C=(c5c4c3c2c1)
排列,其中 ci=1 表示延迟 i 禁止。
因此:
C0=(10110)
从初始状态 10110 出发:
- 延迟 1 允许;
- 延迟 4 允许;
- 延迟不小于 6 时也允许。
选择延迟 1:
C1=(10110>>1)∨10110
C1=01011∨10110=11111
状态 11111 的延迟 1~5 都被禁止,只能选择不小于 6 的延迟。
选择延迟 6 后回到初始状态:
10110 --1--> 11111 --6--> 10110
所以最小启动循环为:
(1,6)
最小平均启动间隔:
dˉmin=21+6=3.5
答案:
dˉmin=3.5 个时钟周期
可达状态包括:
状态转移关系:
状态图:
其中平均间隔最小的闭合回路为:
A1B6A
平均间隔为 3.5。
计算:
S=A1B1+A2B2+⋯+A64B64
已知:
- 一次乘法需要 4 个单位时间;
- 一次加法需要 2 个单位时间;
- 相邻 PE 传送一次数据需要 1 个单位时间。
64 项点积需要:
由于加法器和乘法器同一时刻只能使用其中一个,所以:
T串=64×4+63×2
T串=256+126=382
答案:
T串=382 个单位时间
共有 64 项,平均分配给 16 个 PE:
1664=4
每个 PE 先完成本地 4 项点积。
每个 PE 执行 4 次乘法:
4×4=16
个单位时间。
4 个乘积相加需要 3 次加法:
3×2=6
个单位时间。
本地计算总时间:
16+6=22
因为:
16=24
需要 4 级加法归约:
4×2=8
个单位时间。
在单向环上,关键路径的数据传送距离依次为:
1, 2, 4, 8
因此数据传送时间为:
1+2+4+8=15
个单位时间。
总时间:
TSIMD=22+8+15=45
答案:
TSIMD=45 个单位时间
在 8 个处理器上计算:
S=i=1∑200AiBi
已知:
N=8,m=200
tmulti=80ns,tadd=40ns
h=1,g=200ns,l=400ns
按课程公式,串行基准时间取:
T1=m(tmulti+tadd)
T1=200(80+40)=24000ns
BSP 时间公式:
TBSP=Nm(tmulti+tadd)+log2N(gh+l+tadd)
局部计算时间:
8200(80+40)=25×120=3000ns
归约、通信和同步时间:
log28(200×1+400+40)
=3×640=1920ns
所以:
TBSP=3000+1920=4920ns
加速比:
Sp=TBSPT1=492024000≈4.88
答案:
TBSP=4920ns
Sp,BSP≈4.88
PRAM 时间公式:
TPRAM=Nm(tmulti+tadd)+log2N⋅tadd
代入:
TPRAM=3000+3×40
TPRAM=3120ns
加速比:
Sp=TPRAMT1=312024000≈7.69
答案:
TPRAM=3120ns
Sp,PRAM≈7.69
| 题号 | 答案 |
|---|
| 1(1) | [X]补=11,010001;[Y]补=00,110101;[−Y]补=11,001011 |
| 1(2) | 00,000110,真值 +6,无溢出 |
| 1(3) | 10,011100,下溢(负溢) |
| 2 | [X+Y]浮=00100, 00.100010,真值 (1000.1)2=8.5 |
| 3 | 顺序:160Mbit/s;交叉:890.4Mbit/s |
| 4(1) | Tag 9 位,行索引 7 位,块内偏移 6 位 |
| 4(2) | 98.7% |
| 4(3) | 10.52ns |
| 题号 | 答案 |
|---|
| 1(1) | 192 条 |
| 1(2) | 331 条 |
| 1(3) | 12 条 |
| 2 | ① R[rs]→X;② IR(I)out、ADD;③ Z→AR;④ DR→R[rt];⑤ DRout、Rin |
| 3(1) | 4096bit |
| 3(2) | 31 个 |
| 3(3) | 128 条 |
| 3(4) | 11 个 |
| 3(5) | 61 种 |
| 题号 | 答案 |
|---|
| 1(1) | F={2,3,5},C0=10110 |
| 1(2) | 最小循环 (1,6),最小平均间隔 3.5 个时钟周期 |
| 2(1) | 382 个单位时间 |
| 2(2) | 45 个单位时间 |
| 3(1) | TBSP=4920ns,Sp≈4.88 |
| 3(2) | TPRAM=3120ns,Sp≈7.69 |