コンピュータハードウェア (4)

コンピュータハードウェア (4)
鈴木健一
東北工業大学情報通信工学科
http://www.ca.rsc.tohtech.ac.jp/~suzuki/lecture/hw.html
May 22, 2015
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
1 / 24
クロック信号に関する補足
1
CLK
(または 1)
t
デューティ比 =
t
T
デューティ比 = 50%
T
クロック周期の逆数 = クロック周波数
t
T
鈴木健一 (東北工大)
デューティ比
コンピュータハードウェア (4)
May 22, 2015
2 / 24
命令表現形式 (1)
オペコード: どんな処理をするか.
(cf: のこぎり,ドリル,ハンダごて, ...)
オペランド: 何に対して,処理を施すか.
(cf: 木の板,電線,アルミ板,しいたけ, ...)
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
3 / 24
命令表現形式 (2)
オペランドの種類
ソース (source) オペランド: 処理の入力
デスティネーション (destination) オペランド: 処理の出力
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
4 / 24
命令表現形式 (3)
命令の一般形
d ← op src1
d ← src1 op src2
ソースオペランドが 1 個の場合
ソースオペランドが 2 個の場合
d: デスティネーションオペランド
src1 と src2: ソースオペランド
op: 演算
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
5 / 24
この講義で使う命令形式
プロセッサの設計者が決定する
→ 設計方針によってさまざま
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
6 / 24
命令フィールド
操作の種類 → op フィールドのビット数
レジスタの本数 → rs, rt, rd フィールドのビット数
命令長 → ワード長 (2 ワード以上を許すこともある)
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
7 / 24
アセンブリ言語
命令の表現を人間に分かりやすい形で記述
命令と 1 対 1 に対応
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
8 / 24
命令セット
命令セット: そのプロセッサで使用できる命令の集合
この講義で使用する命令セットを,算術論理演算命令,データ移動
命令,分岐命令ごとに見ていく
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
9 / 24
命令セット: 算術論理演算命令 (1)
算術演算命令
R型
演算命令
加算
add
減算
sub
乗算
mul
除算
div
剰余
rem
abs
絶対値
算術左シフト sla
算術右シフト sra
I型
addi
subi
muli
divi
remi
—–
—–
—–
論理演算命令
演算命令
R型
論理積
and
or
論理和
否定
not
NOR
nor
NAND
nand
XOR
xor
eq
同値
論理左シフト sll
論理右シフト srl
I型
andi
ori
—–
nori
nandi
xori
eqi
—–
—–
このプロセッサでは,メモリにあるデータについての算術論理演算
を禁止 → A 型の算術論理演算命令は,ない
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
10 / 24
命令セット: 算術論理演算命令 (2)
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
11 / 24
命令セット: 算術論理演算命令 (3)
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
12 / 24
シフト命令についての補足
論理シフトと算術シフト (教科書 p.37)
左シフト (sla と sll) は同じ動作
右シフトは左から入ってくるビットが異なる
srl (論理右シフト): 左から 0 が入る
sra (算術右シフト): 左から 符号ビットが入る
←シフトによって正負が変わらないように
AUX 部分 (11 ビット) をシフト桁数の指定に使用
R 型命令にもかかわらず,シフト桁数を I 型のような即値で指定
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
13 / 24
命令セット: データ移動命令 (1)
レジスタ間の移動については addi rs, rt, 0 を使えばよい
メモリ ↔ レジスタ間の移動: ロード/ストア命令
移動量
64 ビット
32 ビット
16 ビット
8 ビット
鈴木健一 (東北工大)
メモリ→レジスタ
ld load double word
lw load word
lh load half word
lb load byte
レジスタ→メモリ
sd store double word
sw store word
sh store half word
sb store byte
コンピュータハードウェア (4)
May 22, 2015
14 / 24
命令セット: データ移動命令 (2)
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
15 / 24
命令セット: データ移動命令 (3)
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
16 / 24
命令セット: データ移動命令 (4)
問題:
ロード/ストア命令では,dpl と rs を加算している.
dpl にメモリアドレスを直接入れておいたほうが便利では?
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
17 / 24
命令セット: 分岐命令 (1)
命令
j
jr
jal
意味
jump
jump register
jump and link
命令
beq
意味
branch on
equal
branch on
not equal
branch on
less than
branch on
less than or eq.
bne
blt
ble
鈴木健一 (東北工大)
無条件分岐命令
形式 アセンブラ 動作
A
j addr
pc ← addr
R
jr rs
pc ← (rs)
A
jal addr
r31 ← (pc) + 4; pc ← addr
条件分岐命令
形式 アセンブラ
I
beq rs,rt,dpl
I
bne rs,rt,dpl
I
blt rs,rt,dpl
I
ble rs,rt,dpl
コンピュータハードウェア (4)
動作
rs=rt ならば,
pc=(pc)+4+dpl
rs 6= rt ならば
pc=(pc)+4+dpl
rs < rt ならば
pc=(pc)+4+dpl
rs ≤ rt ならば
pc=(pc)+4+dpl
May 22, 2015
18 / 24
命令セット: 分岐命令 (2)
無条件分岐命令の実行例
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
19 / 24
命令セット: 分岐命令 (2)
条件分岐命令の実行例
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
20 / 24
命令セット: その他の命令
命令
halt
意味
Halt the processor
形式
R
アセンブラ
halt
動作
実行停止
これがないと,プログラムの終わりをプロセッサが理解できない
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
21 / 24
命令セット: その他の条件
レジスタ本数: 32
データ語長: 32 ビット (=4 バイト)
メモリアドレス幅: 32 ビット
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
22 / 24
演習
次のプログラムを書け.
1
レジスタ R1 に値 0 をセットするプログラム
2
レジスタ R1 に値 0x1234 をセットするプログラム
3
レジスタ R1 に値 0x98765432 をセットするプログラム
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
23 / 24
まとめ
命令の表現形式
オペコード
オペランド
→ ソースオペランド
→ デスティネーションオペランド
この講義で使う命令形式
→ 命令セット
算術論理演算命令
データ移動命令
分岐命令
その他の命令
鈴木健一 (東北工大)
コンピュータハードウェア (4)
May 22, 2015
24 / 24