計算機構成論 (Chap 1) @C401計算機構成論 (Chap. 1) @C401
http://www.ngc.is.ritsumei.ac.jp/~ger/Lectures/CompArch2012/index.html(user=ganbare, passwd = 初回の講義で言いました)
講義に出るなら、分からないなら質問しよう。単位を取りたいなら、章末問題は自分で全部といておこう(レポートと考えればいいんです!)
ご意見、ご要望、ご質問は、山下個人か [email protected]
(レポ トと考えればいいんです!)
山下 茂
山下個人か受講者全員にメールください。
[email protected]@cs.ritsumei.ac.jp
0
情報システム学科 次世代コンピューティング研究室 山下 茂
Chap. 1のセルフチェック
以下の文章の意味がわからないなら、今から,寝ないで聞いてみましょう。聞いてみましょう。
1 MIPSの命令形式には、R形式、I形式、J形式などがある。
2 PCのさすアドレスから、命令をフェッチして実行する。
分岐がな ときは は + に更新される3 分岐がないときは、PCはPC+4に更新される。
4 プロセッサは制御とデータパスよりなる。
5 命令により、また処理の段階によりデータパスは異なる。
6 データパスの切り替えはMUXで行う。6 デ タ スの切り替えはMUXで行う。
7 組み合わせ回路と順序回路の違いを知っている。
8 D-FFとは何かを知っている。
9 クロック、同期式という言葉の意味を知っている。
長10 長パスでクロック周期がきまる。
1
What to learn
• MIPSの命令セット(構成入門の復習)
• MIPS実現方式の概要 - 4.1節• デジタルシステム設計の基礎 – 4.2節、論理回路の復習
これから計算機構成論で扱う内容の基礎
教材
• MIPS命令セットの復習(計算機構成入門)• MIPS命令セットの復習(計算機構成入門)
• 論理回路の復習(クロック方式)
• 教科書P276~P282
2
• 教科書P276~P282
C言語のプログラム実行の裏側 復習
a[i] = b[i] + c;アプリケーション・ソフトウェア
階層(抽象化)
高水準言語
下線つきの用語は全て理解すべし
コンパイラ
a[i] = b[i] + c;アプリケ ション ソフトウェア 高水準言語
lw $15, 0($2)add $16, $15, $14add $17 $15 $13システム・ソフトウェア add $17, $15, $13lw $18, 0($12)lw $19, 0($17)dd $20 $18 $19
システム ソフトウ ア(OS, compiler) アセンブリ言語
add $20, $18, $19sw $20, 0($16)
アセンブラ
ハードウェア000000101100000110100000100010
機械語
3…
プログラム内蔵方式とは 復習
•ノイマン型とも呼ばれる•主記憶上に プログラムの命令列とデータが格納主記憶上に、プログラムの命令列とデ タが格納
具体的な実行イメージ•PC=現在、実行すべき命令が格納されているアドレスを格納•「PCのさすアドレスから命令を読んで実行」を繰り返す
MIPSでの命令の例: add $s1, $s2, $s3 アセンブリ言語
オペランド命令
*原則レジスタ
注意: 実際には 0と1の列である機械語をメモリに格納
4
注意: 実際には、0と1の列である機械語をメモリに格納
区分 命令 形式 例 意味 備考
MIPS命令 付録:MIPSの命令
算術演算add R add $s0,$s1,$s2 $s0=$s1+$s2 3オペランド, レジスタ
subtract R sub $s0,Ss1,Ss2 $s0=$s1-$s2 3オペランド
データ転送load word I lw $s1,100($s2) $s1=メモリ[$s2+100] メモリからレジスタへ転送
デ タ転送store word I sw $s1,100($s2) メモリ[$s2+100]=$s1 レジスタからメモリへ転送
branch on equal
I beq $s1,$s2,L if($s1==$s2)go to L 等しいときに分岐
b h条件分岐
branch on not eq.l
I bne $s1,$s2,L if($s1!=$s2)go to L 等しくないときに分岐
set on less than
R slt $s1,$s2,$s3 if($s2<$s3) $s1=1;else $s1=0;
より小さいかの判定。beqやbneで利用。
無条件分岐
jump J j 10000 go to 10000 目的のアドレスへジャンプ
jump register
R jr $t1 go to $s1 switch文で利用
命令形式 op rs rt rd shamt funct
6ビット 5ビット 5ビット 5ビット 5ビット 6ビット
t dd
R形式(算術命令)
I形式
命令形式
op rs rt address
6ビット 5ビット 5ビット 16ビット(データ転送・ 分岐命令)
op addressJ形式
5
p
6ビット 26ビット
C → アセンブリ言語: 主記憶の様子(命令メモリ) 復習
0010101110110101
8bit1000 000016
1000 000016の一つ前 0fff ffff1610110101
010….00
・・・
lw $t1, 0($s1)010….00000….10
010….00000 10 l $ 0 8($ 4)
000….101命令は32ビット
0040 100016
010….00000….10
000….10 lw $t0, 8($s4)
・・・111….010040 000016
番地 注意 機械語の値は適当
6
番地 注意:機械語の値は適当
お絵かきスペース
7
R形式の命令(1/2) 復習
add $t0, $s0, $s1
000000 10000 10001 01000 00000 100000
命令を ビ 符号化 主記憶 格納
命令語に符号化すべき情報:
1つの命令を32ビットに符号化して主記憶に格納
• 命令の種類: add• ディスティネーションレジスタ: $t0ディスティネ ションレジスタ: $t0• ソースレジスタ: $s0, $s1(他の命令では)定数やアドレスなどの情報もあり(他の命令では)定数やアドレスなどの情報もあり
8
R形式の命令(2/2) 復習
add $t0, $s0, $s1add $t0, $s0, $s1
000000 10000
add $t0, $s0, $s1
10001 01000 00000 100000op rs rt rd shamt funct
000000 10000
add $t0, $s0, $s1
10001 01000 00000 100000op rs rt rd shamt funct
$s0 $s1 $t0000000 10000 10001 01000 00000 100000
100000のときは加算
add $s0 $s1 $t0000000 10000 10001 01000 00000 100000
add100000のときは加算,100010のときは減算を意味する.
加算または減算を
01000 $t001001 $t1
10000 $s010001 $s1
加算または減算を意味する.
$… …
01111 $t7
$… …
10111 $s7
9
I形式の命令(1/2) 復習
lw $t0, 12($s0)lw $t0, 12($s0)
命令語に符号化すべき情報:
•命令の種類: lw•ディスティネーションレジスタ: $t0•ディスティネ ションレジスタ: $t0•ベースレジスタ: $s0オ•オフセット: +12
10
I形式の命令(2/2) 復習
lw $t0, 12($s0)
100011
lw $t0, 12($s0)
00000000000011000100010000op rs rt address
100011 000000000000110001000$t0
10000$s0 +12lw
100011のときは lw,
16bit符号つき整数(2の補数表現)
32768(215) 32767101011のときは sw を意味する.
01000 $t0 10000 $s0
–32768(215)~+32767
$01001 $t1
… …
$10001 $s1
… …
11
01111 $t7 10111 $s7
R形式とI形式の違い 復習
op rs rt rd shamt funct000000 10000 10001 01000 00000 100000
6bit 5bit 5bit 5bit 5bit 6bit
R形式
100011 01000 10000 0000000000001100op rs rt address6bit 5bit 5bit 5bit 5bit 6bit
I形式 100011 01000 10000 0000000000001100
6bit 5bit 5bit 16bit
I形式
MIPS は命令語を32bit 幅で統 している• MIPS は命令語を32bit 幅で統一している.
• MIPS の命令形式は,R形式,I形式,J形式(後述)の3種類がある類がある.
• どの命令形式かは,op フィールド(命令操作コード)で判別できる
12
別できる.
I形式の別の命令
beq $s0, $t0, Label
000100
beq $s0, $t0, Label
00000000000011000100010000op rs rt address
000100 000000000000110001000$t0
10000$s0 +12beq
16bit符号つき整数(2の補数表現)
32768(215) 32767
if ($s0 == $t0) PC (PC 4) 12 4
01000 $t0 10000 $s0
–32768(215)~+32767PC = (PC+4) + 12 x4
$01001 $t1
… …
$10001 $s1
… …
13
01111 $t7 10111 $s7
J形式の命令(1) 復習
j Label
命令語に符号化すべき情報:命令語に符号化すべき情報:
•命令の種類: j• Jumpするアドレス(ラベルからアセンブラが計算して埋め込む、後述)算して埋め込む、後述)
Loop: sll $t1, $s3, 2add $t1, $t1, $s6add $t1, $t1, $s6lw $t0, 0($t1)slt $s1, $t0, $s5bne $t0 $zero Exitbne $t0, $zero, Exit addi $s3, $s3, 1
j LoopExit:
14
Exit:
J形式の命令(2) 復習
j Labelラベルのアドレスが40000のときは以下の機械語となる
000010 00000000000010011100010000op address
ラベルのアドレスが40000のときは以下の機械語となる
000010 0000000000001001110001000010000j
000010のときは j,000011のときは jal を意味する.
26bitのアドレス
•26ビットで28ビット分の情報を表せる(Why?)•厳密にはPC+4の下位28ビットをaddressで置き換え(次頁)厳密にはPC+4の下位28ビットをaddressで置き換え(次頁)
15
Jump命令の補足(1/3) 復習
•PC: Program Counter の略
現在実行中の命令が格納されているアドレスを保持–現在実行中の命令が格納されているアドレスを保持
MIPSの命令は 32ビットなので 今 PCが100MIPSの命令は、32ビットなので、今、PCが100なら、次の命令の格納されている番地は?
そ ため 通常は 命令実行時に 並列し C C とそのため、通常は1命令実行時に、並列してPC=PC+4という動作を(命令に関係なく自動で)行っている
しかし、j命令がくると、その指定した28ビットでPCの下位28ビットを置き換える
ちなみに28ビットで、-227から(227-1)の228の範囲の数を表現可能
16
現可能
Jump命令の補足(2/3) 復習
PC = 10000000000000000000000000010100
10000000000000000000000000010100番地の命令実行
同時にPCを10000000000000000000000000011000にセット
10000000000000000000000000011000 番地の命令実行10000000000000000000000000011000 番地の命令実行
10000000000000000000000000010100番地の命令がJump系の命令でない時
17
番地の命令がJump系の命令でない時
Jump命令の補足(3/3) 復習
PC = 10000000000000000000000000010100
10000000000000000000000000010100番地の命令実行
同時にPCを10000000000000000000000000011000にセット
しかし、この場合はPCを以下の値に置き換える
10000000000000000000000000011000:ジャンプしない時のPC
0110000000000000000000010100 28ビット: 4 倍にする
しかし、この場合はPCを以下の値に置き換える
が
PCを10000110000000000000000000010100 にセット
10000000000000000000000000010100番地の命令が00001001100000000000000000000101の時
1826ビット
お絵かきスペース
19
MIPSの命令のまとめ 復習
add $t0 $s1 $s2 # $s1 + $s2 の結果を $t0 に格納add $t0, $s1, $s2 # $s1 + $s2 の結果を $t0 に格納
sub $t0, $t0, $t1 # $t0 – $t1 の結果を $t0 に格納
addi $s3 $s3 4 # $s3 に $s3+4 を格納addi $s3, $s3, 4 # $s3 に $s3+4 を格納
lw $t0, 32($s0) # ($s0 + 32) 番地の内容を $t0 に格納lw $t0, 32($s0) # ($s0 32) 番地の内容を $t0 に格納
sw $t0, –8($s0) # ($s0 – 8) 番地に $t0 を格納
b $t0 $ 0 48 # 等しい時 PC相対分岐beq $t0, $s0, 48 # 等しい時、PC相対分岐
# 機械語として埋め込む値は1/4
j label # labelの番地をPCにセット
# 機械語として埋め込む値は1/4
20
重要問題 その① 制限時間5分 復習
次のアセンブリ言語を機械語に直せ、それぞれ何形式か?
op rs rt addresslw $t0, 8($s4) 100011 000000000000100001000
$t010100
$s4 +8
op s t add ess
lw
beq $t0, $s0, 48
$t0$s4 8lw
01000 10000 0000000000001100op rs rt address
000100 01000 10000 0000000000001100op rs rt address
add $t0 $t0 $t1 000000 10000 10001 01000 00000 100000op rs rt rd shamt funct
000000 01000 01001 01000 100000op rs rt rd shamt funct
$t0 $s0 +12$t0 $s0 +12beq
add $t0, $t0, $t1 $t0 $t1 $t0
000000 10000 10001 01000 00000 100000add $t0
000000 01000 01001 01000 100000addop address
j 200 000010 0000000000000000000011001050
op address
j
21
50j
What to learn
• MIPSの命令セット(構成入門の復習)
• MIPS実現方式の概要 - 4.1節• デジタルシステム設計の基礎 – 4.2節、論理回路の復習
これから計算機構成論で扱う内容の基礎
教材
• MIPS命令セットの復習(計算機構成入門)• MIPS命令セットの復習(計算機構成入門)
• 論理回路の復習(クロック方式)
• 教科書P276~P282
22
• 教科書P276~P282
MIPSの単純な実現(の概念図)
図4.2(英語版)試験問題を出すとしたら、この英語版の図を使うでしょう
d
e l
c dj
b fh i
ka k
g
23
お絵かきスペース
24
プロセッサの構成要素
プ デプロセッサ = データパス+制御
•PC
これらの構成要素をつなぐ経路をデータが通っていくことによ
•レジスタ・ファイル
•ALU(Arithmetic Logic Unit の略)
デ タメモリ り、所望の処理が行われる•データメモリ
•命令メモリ
制御回路(
ある処理をするときのデ タ処理のための上記の構
•制御回路(
ある処理をするときのデータ処理のための上記の構成要素をつなぐ経路をデータパスという
e g 図4 9(p287)は分岐命令を処理する時のデータパス
この構成要素をデータパス要素という
25
e.g., 図4.9(p287)は分岐命令を処理する時のデ タパス
命令実行の手順
lw $15, 0($2) •PC1000プロセッサ命令メモリ
$ , ($ )add $16, $15, $14add $17, $15, $13l $18 0($12)
•PC•レジスタ・ファイル
•ALUlw $18, 0($12)lw $19, 0($17)add $20 $18 $19
ALU•データメモリ
•命令メモリadd $20, $18, $19sw $20, 0($16)
命令 リ
•制御部分
以 を繰り返すだけ
命令メモリのPCアドレスから命令を読む
以下を繰り返すだけ!(単純な実現では、以下は“同じサイクル”で行われる)
•命令メモリのPCアドレスから命令を読む
•その命令を解釈して、実行する
•PC=PC+4 (分岐がない時)
26
•PC=PC+4 (分岐がない時)
命令フェッチとPCの更新
•命令を取り出すことをフェッチするというデ タパスの 部
加算
データパスの一部(図4.6)
命令 チ
命令メモリ
命令アドレス
PC
加算4•命令フェッチRead(PC)
デメモリ
命令
•PCの更新PC=PC+4
を行う レジスタレジスタ番号
レジスタ
データ
を行う
0:lw $t0,1200($t1)
レジスタ番号
レジスタ番号
op rs rt rd shamt funct
100011 01001 01000 0000 0100 1011 0000
27
命令の解読と実行
•制御部分で、命令の意味を解読し実行
op rs rt rd shamt funct
100011 01001 01000 0000 0100 1011 0000
rs rt•opコードなどから命令の種類を解読
ALUopコ ドなどから命令の種類を解読
•それに従ってALUへの制御入力を決定•ALUの入力のつなぎ先を制御•ALUの出力のつなぎ先を制御
ALUで実行する.
rd•ALUの出力のつなぎ先を制御
→命令によって、レジスタなどのつなぎ方=データパスが異なる。
命令によって、データパスが具体的にどうなるかを詳しく見ていくのが今後のお勉強の中心
28
を詳しく見ていくのが今後のお勉強の中心
お絵かきスペース
29
ちなみにマイクロプロセッサの始動• 実行する命令のメモリのアドレス
program counter(PC)に格納されている
• 最初の命令 => PC=0 ROMの最初の番地.
• ブートローダー: BIOSの一部.マシンを調べてOKならば、OSのカ ネルをロ ド して入力待ちになるカーネルをロード して入力待ちになる.
データ
PC 命令メモリ
アドレスレジスタ
データ・メ リ
ALU命令 レジスタ
番号
レジスタ番号
アドレス
メモリレジスタ番号
データ
30
MIPS命令実現の概念図(制御を省略)
図4.1
31
図4.1
1. メモリから命令をフェッチするために、プログラムカウンタの値を ドが 保持されているメモリに送るカウンタの値をコードが 保持されているメモリに送る
add $t0, $s1, $s2
図4.1 現在どの部分が論理的にactiveか?
32
図4.1 的にactiveか?
2. 命令のレジスタフィールドに指定されるレジスタの値を読みだすを読みだす
add $t0, $s1, $s2
図4.1 現在どの部分が論理的にactiveか?
33
図4.1 的にactiveか?
3. この後は命令によって処理が変わる。ほとんどの命令はALUを使う命令はALUを使う。
add $t0, $s1, $s2
図4.1 現在どの部分が論理的にactiveか?
34
図4.1 的にactiveか?
お絵かきスペース
35
4. 次に演算結果の格納(命令により異なる)演算結果をレジスタに書き戻す(e g add)•演算結果をレジスタに書き戻す(e.g., add)
•sw/lwではデータを転送する•分岐命令ではPCを設定する分岐命令ではPCを設定する
add $t0, $s1, $s2
図4.1 現在どの部分が論理的にactiveか?
36
図4.1 的にactiveか?
状況によりデータパスの構成やALUの使い方が変化
状況により選択
状況により異なる命令操作
図4 1図4.1
37
実際には MUXと「制御」によりデータパスを選択実際には,MUXと「制御」によりデ タパスを選択
図4 2
38
図4.2
お絵かきスペース
39
MUX: マルチプレクサ(Multiplexor)
入力を選択する回路
20 out0 i0
i0 i1 20
セレクタとも呼ぶ
• 入力を選択する回路
• 2-1 MUX1 i1 out
真理値表を書くと
– 二つの入力 i0, i1 を選択入力20 で選ぶ回路 20 i0 i1 out
0 0 0 0
真理値表を書くと
0 0 0 00 0 1 00 1 0 10 1 0 10 1 1 11 0 0 020などは一つの変数の意味です1 0 1 11 1 0 01 1 1 1
2 などは つの変数の意味です
40
1 1 1 1
マルチプレクサ
• 入力を選択する回路
• 2-1 MUX20 out0 i0
i0 i1 202 1 MUX
– 二つの入力 i0, i1 を選択入力20 で選ぶ回路
1 i12
out
真理値表を書くと選ぶ回路
• 4-1 MUX 20 i0 i1 out0 0 0 0
真理値表を書くと
0 0 0 00 0 1 00 1 0 1
21 20 out0 0 i0 0 1 0 1
0 1 1 11 0 0 0
0 1 i11 0 i21 1 i3 1 0 1 1
1 1 0 01 1 1 1
1 1 i3
真理値表を書くとどうなるか?
( 変数 なる)
41
1 1 1 1(6変数になる)
2-1 MUX の回路
2-1 MUXの論理式: out = (20)'(i0) + (20)(i1)
20
i0
i1i1
2 1 MUXの回路
制御信号で AND ゲートを開閉するという動作を考えれば 論理式を作らなくても直接回路を書けるはず
2-1 MUXの回路
42
ば、論理式を作らなくても直接回路を書けるはず
4-1 MUX の回路
• 制御信号で AND ゲートを開閉20
2121
i021 20 out0 0 i0
i10 0 i00 1 i11 0 i2
i21 1 i3
この真理値表を書くとどうな
i3
真 値表を書 うなるか?(6変数になる)
(21, 20)=(1,0)ならi2が選択される。
(21 20) (1 1)ならi3が選択される
43
(21, 20)=(1,1)ならi3が選択される。
まとめ & 考える by 皆さん自身で
•2-1 MUXとは何か?
32ビットのデ タ2つを選択するようなMUX•32ビットのデータ2つを選択するようなMUXの構成方法を考えよう。(それをこれから使います )ます。)
44
お絵かきスペース
45
What to learn
• MIPSの命令セット(構成入門の復習)
• MIPS実現方式の概要 - 4.1節• デジタルシステム設計の基礎 – 4.2節、論理回路の復習
これから計算機構成論で扱う内容の基礎
教材
• MIPS命令セットの復習(計算機構成入門)• MIPS命令セットの復習(計算機構成入門)
• 論理回路の復習(クロック方式)
• 教科書P276~P282
46
• 教科書P276~P282
デジタルシステムの設計
FAQ t 情報の卒業生
論理回路の復習
FAQ to 情報の卒業生
• 組み合わせ回路と順序回路の違いを述べよ
答え
• 入力のみで出力が決まるのが、
• 記憶を持つのが、
47
組み合わせ回路• 組み合わせ回路
– 入力に対する出力が一意、論理関数を実現
プ無– DAG (Directed Acyclic Graph) でループ無し
sumacin
bb
cout
入力が決まると出力が決まる
全加算器
48
入力が決まると出力が決まる
順序回路• 順序回路
– 同じ入力に対して出力が異なる
順序回路 例 自動販売機• 順序回路の例:自動販売機
– 今まで投入されたコインの金額を記憶
同じコインに対して動作が異なる– 同じコインに対して動作が異なる
1円 5円 10円1円5円
10
10
01組合せ回路 出5円
10円 00
10
01
組合せ回路力
•今までに1円が入っていたら、次に1円が入ったら2円と表示•今までに5円が入っていたら、次に1円が入ったら6円と表示
49
今までに5円が入っていたら、次に1円が入ったら6円と表示
順序回路• 順序回路
– 同じ入力に対して出力が異なる
記憶を持 回路 過去 入力や計算結果を記憶– 記憶を持つ回路、過去の入力や計算結果を記憶
– ループ(サイクル)を持つ回路
1円5円入
4出5円
10円入力
組合せ回路出力
現在の投入金額4
を記憶
50
ループを使って記憶を実現
フリップフロップ Flip Flop (FF )
• RSフリップフロップ
(Flip Flop はシーソーのこと)
RSフリップフロップ
• JKフリップフロップ
ク ク付きRSフリ プフ プ• クロック付きRSフリップフロップ
• マスタースレーブ型RSフリップフロップ
• マスタースレーブ型Dフリップフロップ
• エッジトリガDフリップフロップエッジトリガDフリップフロップ
51
RSフリップフロップ
• セットリセットフリップフロップ
– Set Reset Flip Flop (FF)p p ( )– Set は 1 にすること、Reset は 0 にすること
– Flip Flop はシーソーのことp p シ
– SR FFともいうQの値を記憶として利用!!
S R Q憶
SQ Q
1 1→0
0 0 Q (記憶)0 1 0 11 0 1 0
1 0 1 01 1 (禁止)R
Q10 0 0
52
順序回路• 順序回路順 回路
– 同じ入力に対して出力が異なる
– 記憶を持つ回路、過去の入力や計算結果を記憶
– ループ(サイクル)を持つ回路
円1円5円
10円S R
現在の投入金額を記憶を記憶
記憶は、SR-FFでできる!!しかし どのタイミングでS Rの値を使えばいいのかが難しい
53
しかし、どのタイミングでS,Rの値を使えばいいのかが難しい
同期式順序回路順序回路• 順序回路
– 同じ入力に対して出力が異なる
記憶を持つ回路 過去の入力や計算結果を記憶– 記憶を持つ回路、過去の入力や計算結果を記憶
– ループ(サイクル)を持つ回路
– クロックのタイミングで記憶を更新– クロックのタイミングで記憶を更新
1円5円
10円
現在の投入金額
S RQ FFがS,Rの値
を取り込む現在の投入金額を記憶
クロック
を取り込む
54clock
エッジトリガ D-FF 参考程度
Clock=1で値を取り込むと同時に次の値をすぐ出力(遅延は以下の回路を信号が伝播する程度の時間のみ)
presetTTL7474
ポジティブエ ジトリガ
clear Q
ポジティブエッジトリガ
clear Q
clockQ
D
Q
55
D
レジスタ• レジスタは、Dフリップフロップで構成される.
• プロセッサは,主記憶に格納されているデータよりも,レジ デジスタに格納されているデータをより高速に読み書きできる.
頻繁に参照されるデ タを 時的に記憶する– 頻繁に参照されるデータを一時的に記憶する
– 演算の結果の一時的保存
プ セ サには限られた数のレジスタしかない• プロセッサには限られた数のレジスタしかない.
– MIPS の例: $s0, $s1, …, $s7, $t0, …, $t9 等の名前の32ビット幅のレジスタを32本(1ワ ド = 32bit)32ビット幅のレジスタを32本(1ワード = 32bit)
• 今から考える、レジスタファイルは、レジスタの集合で、書き込み制御信号もある(詳細は教科書図4 7で後日)書き込み制御信号もある(詳細は教科書図4.7で後日)
56
お絵かきスペース
57
MIPSの機能ユニット
データパス部: データの値に何らかの操作を与える部分ALU ,PC,メモリ,レジスタなどからなる
制御部 状態を記憶し その状態と入力によりデ タパスを制御する制御部:状態を記憶し、その状態と入力によりデータパスを制御するメモリ、レジスタと制御ユニットなどからなる
PC 命令メモリ
アドレスレジスタ
ALU命令 レジスタ
番号
レジスタ
データ
アドレス
メモリデータ・メモリ
レジスタ番号
レジスタ番号
データ
状態論理要素-最低でも入力2、出力1が必要(デ タ入力 タイミング信号=クロック デ タ出力)
58
(データ入力、タイミング信号=クロック、データ出力)
お絵かきスペース
59
読み出し・書き込みの一般的なモデル
状態論理要素
1組み合わせ論理回路
状態論理要素
21 2
状態論理要素は状態を記憶するためで、メモリやレジスタで実現
•クロック信号 : 書き込みのタイミングを規定クロック信号の周期は、最長パスで決まる。
•読出し可能・書込み可能かを定義する信号:読出し、書込みタイミングの分離
•このモデルの2つの状態論理素子が同じ実体のこともある
あるレジスタに値を書き込みたい時には、書き込む値を用意して、その書き込み制御信号をアサートする。そうすると クロックの立ち上がりのタイミングで値が更新される
60
そうすると、クロックの立ち上がりのタイミングで値が更新される。
エッジトリガクロック方式
エッジトリガクロック方式 : クロック信号のエッジのみで状態更新を行う方式同一クロックサイクルで、読み出し・書込みを両方行える
状態更新
l k
(立ち上がり動作で、状態更新を行うとした場合)
clock
状態論理要素
組み合わせ論理回路
状態論理要素
書き込み 読み出し 組み合わせ論理回路
クロ クの立ち上がりで更新(立下りのシステムもあり)
61
クロックの立ち上がりで更新(立下りのシステムもあり)
ミニクイズ①
パ
add $t0, $s1, $s2
を実行しているときのデータパスを考える。この時、1つ前ページの、状態論理要素1、状態論理要素2、組み合わ
せ論理回路はそれぞれ具体的に何になるか?(以下の図は説明のためせ論理回路はそれぞれ具体的に何になるか?(以下の図は説明のために用いるためだけでこの問題に直接は関係ない)
デ タ
PC 命令メモリ
アドレスレジスタ
デ タ
ALU命令 レジスタ
番号
レジスタ
データ
アドレス
データ・メモリ
レジスタ番号
レジスタ番号
データ
62
お絵かきスペース
63
データパスの構築(全部終わったら後で復習してください)
すべての命令:クロック・エッジから実行を開始し,次のクロックエッジまでに実行を完了する ⇒ 一番実行時間が長い命令が実行できるように,実行を完了する ⇒ 番実行時間が長い命令が実行できるように,
クロック幅を長くする.
⇒長い実行時間の命令は複数クロックで実行するようにする⇒長い実行時間の命令は複数クロックで実行するようにする.
• 各命令ごとに,データを処理する部品を逐次的に並べる.各命令ごとに,デ タを処理する部品を逐次的に並べる.処理が似たものは同じような部品の配置になる.(R形式命令,...)
• 一時に 一つの命令しか実行しないので 共通に使える部品をまとめる• 時に, つの命令しか実行しないので,共通に使える部品をまとめる.
• 命令ごとに異なる処理は,場合わけを制御する.制御は後でまとめて設計することにし デ タの処理手順だけに注目制御は後でまとめて設計することにし,データの処理手順だけに注目
具体的には 次回以降で見ていくことになります
64
具体的には、次回以降で見ていくことになります。
Chap. 1のセルフチェック
以下の文章の意味がわからないなら、講義で寝ていた(笑)かもしれませんね。かもしれませんね。
1 MIPSの命令形式には、R形式、I形式、J形式などがある。
2 PCのさすアドレスから、命令をフェッチして実行する。
分岐がな ときは は + に更新される3 分岐がないときは、PCはPC+4に更新される。
4 プロセッサは制御とデータパスよりなる。
5 命令により、また処理の段階によりデータパスは異なる。
6 データパスの切り替えはMUXで行う。6 デ タ スの切り替えはMUXで行う。
7 組み合わせ回路と順序回路の違いを知っている。
8 D-FFとは何かを知っている。
9 クロック、同期式という言葉の意味を知っている。
長
ちゃんと聞いていたのに,わからなければ質問しましょう!
10 長パスでクロック周期がきまる。
65
Chap. 1の試験に出るかもしれない用語集
•R形式•I形式形式
•データメモリ•命令メモリ•J形式
•PC(何の略でしょう?)•レジスタ・ファイル
命令メモリ•制御部分•ディスティネーションレジスタ•レジスタ・ファイル
•ALU(何の略でしょう?)•MUX
•ソースレジスタ
•データパス•信号を”アサート”するク クと同期式•クロックと同期式
66
重要問題②
• 2-1MUXのゲートレベル(AND/OR/NOTなど)2 1MUXのゲ トレベル(AND/OR/NOTなど)の実現を示せ。
(自力で解けるように)
• 重要問題 ①、②、③
• ミニクイズ①①
67
重要問題③
図4.2(次ページ)に関して、以下の命令を実行する時のデータパス
で活性化されているデータパス上の構成要素を示せ。(図の記号で答えよ)答えよ)
1.beq $t0, $s0, 48で分岐する時2.lw $t0, 8($s4) 3.add $t0, $t0, $t14.sw $20, 0($16)$ , ($ )
さらに、それぞれ、レジスタファイルのどのレジスタからデータを読み出し どのレジスタにデータを書き込むか?(書き込まない命読み出し、どのレジスタにデ タを書き込むか?(書き込まない命令もあるが)
さらに 上記の命令の中での定数(即値)デ タである 48 8 0といさらに、上記の命令の中での定数(即値)データである、48, 8, 0というデータがどのように流れるかを示せ。
68
図4.2(英語版)
試験問題を出すとしたら、この英語版の図を使うかも
d
e l
c dj
b fh i
ka k
g
69
図4.2(英語版)
試験問題を出すとしたら、この英語版の図を使うかも
d
e l
c dj
b fh i
ka k
g
70
図4.2(英語版)
試験問題を出すとしたら、この英語版の図を使うかも
d
e l
c dj
b fh i
ka k
g
71