2013 年度「コンピュータアーキテクチャ」演習問題 解答例 1

2014 年 1 月
2013 年度「コンピュータアーキテクチャ」演習問題 解答例
石浦 菜岐佐
1
(1) (a) 03E72827 (16 進表現)
= 0000 0011 1110 0111 0010 1000 0010 0111 (2 進表現)
= 000000 11111 00111 00101 00000 100111
= ......
$31
$7
$5 ..... nor
(オペランドの順序を間違えないよう注意)
従って, nor $5,$31,$7
(b) 214DFFFA (16 進表現)
= 0010 0001 0100 1101 1111 1111 1111 1010 (2 進表現)
= 001000 01010 01101 1111111111111010
= addi
$10
$13
-6
(addi $13,$10,1048570 は不可)
従って, addi $13,$10,-6
(2) andi $12,$11,7
(3) add $12,$12,$11
(4) (a) 41200000 (16 進表現)
= 0100 0001 0010 0000 0000 0000 0000 0000 (2 進表現)
= 0 10000010 01000000000000000000000
(符号部) 0 なので符号は +
(指数部) そのまま符号無し 2 進数に直すと 130 なので, バイアス 127 を引いて 3
(仮数部) 隠しビットを復元すると, 1.01
従って, この表現が表す数値は 1.01 × 23 = 1010 (2 進数) = 10 (10 進数)
(b) −12.5 (10 進数) = −1100.1 (2 進数) = −1.1001 × 23
(符号部) − なので 1
(指数部) 3 にバイアス値 127 を足した 130 を符号無し 2 進数に直すと 10000010
(仮数部) 隠しビットを除去すると, 10010000. . .0000
これらを連結すると, 1 10000010 10010000. . .0000
= 1100 0001 0100 1000 0000 0000 0000 0000 = C1480000 (16 進表現)
(5) 減算自体はそれほど難しくないが, 偶数丸めの考え方を整理しておくこと.
小数点以下 3 桁に丸める場合, 少数以下 4 桁以降 (次の例の下線部) を「端数」と呼ぶことにする.
1.11010111×24
端数と小数点以下 3 桁目の数値によって, 切り上げか切り捨てが決まる.
端数
011· · ·11 以下
100· · ·00 丁度
100· · ·01 以上
少数以下 3 桁目
無条件
0
1
無条件
丸め
切り捨て
切り捨て
切り上げ
切り上げ
例
1.10101101
1.11010000
1.10110000
1.11010010
→1.101
→1.110
→1.110
→1.111
(a)
−)
a
b
3
1.101×2 =
1.001 ×25
0.01101×25
0.10111×25 = 1.0111×24 1.100 ×24 (切り上げ)
1
(b)
a
−)
1.101
b
1.010×2
−4
=
×2−2
0.01010×2−2
1.01010×2−2 1.010 ×2−2 (切り捨て)
(c)
a
−)
1.011
1.001×2−1 =
b
×21
0.01001×21
1.00011×21 1.001 ×21 (切り上げ)
(6) (a) キャッシュミスは 1, 2, 3, 5, 7, 8 回目に発生する.
- キャッシュには 29 ブロックを収容することができ (8KB/16B = 213 B/24 B = 29 ), 2-way なので, セッ
ト数は 29 /2 = 28 となる.
- 従って, アドレスの下位から 4 ビットがオフセット (ブロックサイズが 24 のため), その次の 8 ビット
がセット番号 (セット数が 28 のため), 残りの 4 ビットがタグとなる.
- キャッシュの内容は次のように変化する (下線はタグ, 箱はブロックが収容されるセットの番号)
1:
2:
3:
4:
5:
6:
7:
8:
番地
0000 1010
0100 1100
0000 1010
0100 1100
0100 1101
0000 1010
0000 1010
0000 1010
1100
1101
1101
1101
1101
1101
1110
1100
0000
1000
1100
0100
1100
0100
1100
1000
ミス
√
√
√
√
√
√
キャッシュの各セットに収容されるブロックのタグ
0000 1010
0100 1100 0100 1101
1100
1100
1101
1100 1101 〃
〃
〃
〃
〃
1101
〃
〃
〃
1101 1110 〃
〃
1110 1100 〃
〃
(b) キャッシュミスは 1, 2, 3, 4, 7 回目に発生する.
- キャッシュには 27 ブロックを収容することができ (4KB/32B = 212 B/25 B = 27 ), 2-way なので, セッ
ト数は 27 /2 = 26 となる.
- 従って, アドレスの下位から 5 ビットがオフセット (ブロックサイズが 25 のため), その次の 6 ビット
がセット番号 (セット数が 26 のため), 残りの 5 ビットがタグとなる.
- キャッシュの内容は次のように変化する (下線はタグ, 箱はブロックが収容されるセットの番号)
1:
2:
3:
4:
5:
6:
7:
8:
1100
1101
1110
1101
1100
1110
1111
1100
0
0
1
1
0
1
0
0
番地
000
100
100
000
000
100
000
000
0010
1100
0000
0011
0011
0001
0010
0010
0000
0000
1100
1100
1000
0100
1100
0100
ミス
√
√
√
√
√
キャッシュの各セットに収容されるブロックのタグ
000 001
100 000 100 110
1100 0
〃
1101 0
〃
1110 1
〃
1100 0 1101 1
〃
〃
1101 1 1100 0
〃
〃
〃
〃
〃
1100 0 1111 0
〃
〃
1111 0 1100 0
〃
〃
(7) 略
(8) 略
(9) (a) A<<L 1
(A<<A 1 あるいは A<<1 も可とする)
(b) B>>L 1
(B>>A 1 あるいは B>>1 も可とする)
(10) bne $11,$0,5
2
1 PC
2 PC+4
3 IR 25:21
4 IR 15:0
5 A+I
2
6 A==B
7 Mem[Y,4]
8 IR 20:16
3
(1) 17 クロック
1: lw $1, $30, 24
1
2
3
IF
ID
EX
IF
ID
EX
IF
ID
2: addi $2, $2, 4
3: addi $3, $3, 4
4
5
6
7
8
9
10
11
ID
EX
12
13
14
15
ID
EX
16
17
MEM WB
MEM WB
EX
IF
4: lw $4, $30, 28
MEM WB
ID
EX
MEM WB
IF
5: addi $5, $4, 4
MEM WB
IF
6: addi $6, $5, 4
MEM WB
(2) 11 クロック
1: lw $1, $30, 24
1
2
3
IF
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
2: addi $2, $2, 4
3: addi $3, $3, 4
4: lw $4, $30, 28
4
5
6
7
8
9
10
11
MEM WB
MEM WB
MEM WB
EX
IF
5: addi $5, $4, 4
6: addi $6, $5, 4
MEM WB
ID
EX
IF
ID
MEM WB
EX
MEM WB
(3) 1, 2, 4, 3, 5, 6 (下図)
これ以外に, 1, 4, 2, 3, 5, 6 や 4, 1, 2, 3, 5, 6 も可.
1: lw $1, $30, 24
2: addi $2, $2, 4
4: lw $4, $30, 28
3: addi $3, $3, 4
5: addi $5, $4, 4
6: addi $6, $5, 4
1
2
3
IF
ID
EX
4
5
6
7
IF
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
EX
IF
ID
8
9
10
MEM WB
MEM WB
MEM WB
MEM WB
MEM WB
EX
MEM WB
Nagisa ISHIURA
3