72
計算機構成論 (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] [email protected] 0 情報システム学科 次世代コンピューティング研究室 山下

計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

計算機構成論 (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

情報システム学科 次世代コンピューティング研究室 山下 茂

Page 2: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 3: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

What to learn

• MIPSの命令セット(構成入門の復習)

• MIPS実現方式の概要 - 4.1節• デジタルシステム設計の基礎 – 4.2節、論理回路の復習

これから計算機構成論で扱う内容の基礎

教材

• MIPS命令セットの復習(計算機構成入門)• MIPS命令セットの復習(計算機構成入門)

• 論理回路の復習(クロック方式)

• 教科書P276~P282

2

• 教科書P276~P282

Page 4: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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…

Page 5: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

プログラム内蔵方式とは 復習

•ノイマン型とも呼ばれる•主記憶上に プログラムの命令列とデータが格納主記憶上に、プログラムの命令列とデ タが格納

具体的な実行イメージ•PC=現在、実行すべき命令が格納されているアドレスを格納•「PCのさすアドレスから命令を読んで実行」を繰り返す

MIPSでの命令の例: add $s1, $s2, $s3 アセンブリ言語

オペランド命令

*原則レジスタ

注意: 実際には 0と1の列である機械語をメモリに格納

4

注意: 実際には、0と1の列である機械語をメモリに格納

Page 6: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 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ビット

Page 7: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

番地 注意:機械語の値は適当

Page 8: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

7

Page 9: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

R形式の命令(1/2) 復習

add $t0, $s0, $s1

000000 10000 10001 01000 00000 100000

命令を ビ 符号化 主記憶 格納

命令語に符号化すべき情報:

1つの命令を32ビットに符号化して主記憶に格納

• 命令の種類: add• ディスティネーションレジスタ: $t0ディスティネ ションレジスタ: $t0• ソースレジスタ: $s0, $s1(他の命令では)定数やアドレスなどの情報もあり(他の命令では)定数やアドレスなどの情報もあり

8

Page 10: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 11: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

I形式の命令(1/2) 復習

lw $t0, 12($s0)lw $t0, 12($s0)

命令語に符号化すべき情報:

•命令の種類: lw•ディスティネーションレジスタ: $t0•ディスティネ ションレジスタ: $t0•ベースレジスタ: $s0オ•オフセット: +12

10

Page 12: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 13: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

別できる.

Page 14: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 15: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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:

Page 16: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 17: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

現可能

Page 18: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

Jump命令の補足(2/3) 復習

PC = 10000000000000000000000000010100

10000000000000000000000000010100番地の命令実行

同時にPCを10000000000000000000000000011000にセット

10000000000000000000000000011000 番地の命令実行10000000000000000000000000011000 番地の命令実行

10000000000000000000000000010100番地の命令がJump系の命令でない時

17

番地の命令がJump系の命令でない時

Page 19: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

Jump命令の補足(3/3) 復習

PC = 10000000000000000000000000010100

10000000000000000000000000010100番地の命令実行

同時にPCを10000000000000000000000000011000にセット

しかし、この場合はPCを以下の値に置き換える

10000000000000000000000000011000:ジャンプしない時のPC

0110000000000000000000010100 28ビット: 4 倍にする

しかし、この場合はPCを以下の値に置き換える

PCを10000110000000000000000000010100 にセット

10000000000000000000000000010100番地の命令が00001001100000000000000000000101の時

1826ビット

Page 20: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

19

Page 21: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 22: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

重要問題 その① 制限時間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

Page 23: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

What to learn

• MIPSの命令セット(構成入門の復習)

• MIPS実現方式の概要 - 4.1節• デジタルシステム設計の基礎 – 4.2節、論理回路の復習

これから計算機構成論で扱う内容の基礎

教材

• MIPS命令セットの復習(計算機構成入門)• MIPS命令セットの復習(計算機構成入門)

• 論理回路の復習(クロック方式)

• 教科書P276~P282

22

• 教科書P276~P282

Page 24: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

MIPSの単純な実現(の概念図)

図4.2(英語版)試験問題を出すとしたら、この英語版の図を使うでしょう

d

e l

c dj

b fh i

ka k

g

23

Page 25: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

24

Page 26: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

プロセッサの構成要素

プ デプロセッサ = データパス+制御

•PC

これらの構成要素をつなぐ経路をデータが通っていくことによ

•レジスタ・ファイル

•ALU(Arithmetic Logic Unit の略)

デ タメモリ り、所望の処理が行われる•データメモリ

•命令メモリ

制御回路(

ある処理をするときのデ タ処理のための上記の構

•制御回路(

ある処理をするときのデータ処理のための上記の構成要素をつなぐ経路をデータパスという

e g 図4 9(p287)は分岐命令を処理する時のデータパス

この構成要素をデータパス要素という

25

e.g., 図4.9(p287)は分岐命令を処理する時のデ タパス

Page 27: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

命令実行の手順

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 (分岐がない時)

Page 28: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

命令フェッチと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

Page 29: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

命令の解読と実行

•制御部分で、命令の意味を解読し実行

op rs rt rd shamt funct

100011 01001 01000 0000 0100 1011 0000

rs rt•opコードなどから命令の種類を解読

ALUopコ ドなどから命令の種類を解読

•それに従ってALUへの制御入力を決定•ALUの入力のつなぎ先を制御•ALUの出力のつなぎ先を制御

ALUで実行する.

rd•ALUの出力のつなぎ先を制御

→命令によって、レジスタなどのつなぎ方=データパスが異なる。

命令によって、データパスが具体的にどうなるかを詳しく見ていくのが今後のお勉強の中心

28

を詳しく見ていくのが今後のお勉強の中心

Page 30: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

29

Page 31: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

ちなみにマイクロプロセッサの始動• 実行する命令のメモリのアドレス

program counter(PC)に格納されている

• 最初の命令 => PC=0 ROMの最初の番地.

• ブートローダー: BIOSの一部.マシンを調べてOKならば、OSのカ ネルをロ ド して入力待ちになるカーネルをロード して入力待ちになる.

データ

PC 命令メモリ

アドレスレジスタ

データ・メ リ

ALU命令 レジスタ

番号

レジスタ番号

アドレス

メモリレジスタ番号

データ

30

Page 32: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

MIPS命令実現の概念図(制御を省略)

図4.1

31

図4.1

Page 33: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

1. メモリから命令をフェッチするために、プログラムカウンタの値を ドが 保持されているメモリに送るカウンタの値をコードが 保持されているメモリに送る

add $t0, $s1, $s2

図4.1 現在どの部分が論理的にactiveか?

32

図4.1 的にactiveか?

Page 34: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

2. 命令のレジスタフィールドに指定されるレジスタの値を読みだすを読みだす

add $t0, $s1, $s2

図4.1 現在どの部分が論理的にactiveか?

33

図4.1 的にactiveか?

Page 35: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

3. この後は命令によって処理が変わる。ほとんどの命令はALUを使う命令はALUを使う。

add $t0, $s1, $s2

図4.1 現在どの部分が論理的にactiveか?

34

図4.1 的にactiveか?

Page 36: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

35

Page 37: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

4. 次に演算結果の格納(命令により異なる)演算結果をレジスタに書き戻す(e g add)•演算結果をレジスタに書き戻す(e.g., add)

•sw/lwではデータを転送する•分岐命令ではPCを設定する分岐命令ではPCを設定する

add $t0, $s1, $s2

図4.1 現在どの部分が論理的にactiveか?

36

図4.1 的にactiveか?

Page 38: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

状況によりデータパスの構成やALUの使い方が変化

状況により選択

状況により異なる命令操作

図4 1図4.1

37

Page 39: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

実際には MUXと「制御」によりデータパスを選択実際には,MUXと「制御」によりデ タパスを選択

図4 2

38

図4.2

Page 40: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

39

Page 41: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 42: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 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変数になる)

Page 43: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

2-1 MUX の回路

2-1 MUXの論理式: out = (20)'(i0) + (20)(i1)

20

i0

i1i1

2 1 MUXの回路

制御信号で AND ゲートを開閉するという動作を考えれば 論理式を作らなくても直接回路を書けるはず

2-1 MUXの回路

42

ば、論理式を作らなくても直接回路を書けるはず

Page 44: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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が選択される。

Page 45: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

まとめ & 考える by 皆さん自身で

•2-1 MUXとは何か?

32ビットのデ タ2つを選択するようなMUX•32ビットのデータ2つを選択するようなMUXの構成方法を考えよう。(それをこれから使います )ます。)

44

Page 46: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

45

Page 47: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

What to learn

• MIPSの命令セット(構成入門の復習)

• MIPS実現方式の概要 - 4.1節• デジタルシステム設計の基礎 – 4.2節、論理回路の復習

これから計算機構成論で扱う内容の基礎

教材

• MIPS命令セットの復習(計算機構成入門)• MIPS命令セットの復習(計算機構成入門)

• 論理回路の復習(クロック方式)

• 教科書P276~P282

46

• 教科書P276~P282

Page 48: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

デジタルシステムの設計

FAQ t 情報の卒業生

論理回路の復習

FAQ to 情報の卒業生

• 組み合わせ回路と順序回路の違いを述べよ

答え

• 入力のみで出力が決まるのが、

• 記憶を持つのが、

47

Page 49: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

組み合わせ回路• 組み合わせ回路

– 入力に対する出力が一意、論理関数を実現

プ無– DAG (Directed Acyclic Graph) でループ無し

sumacin

bb

cout

入力が決まると出力が決まる

全加算器

48

入力が決まると出力が決まる

Page 50: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

順序回路• 順序回路

– 同じ入力に対して出力が異なる

順序回路 例 自動販売機• 順序回路の例:自動販売機

– 今まで投入されたコインの金額を記憶

同じコインに対して動作が異なる– 同じコインに対して動作が異なる

1円 5円 10円1円5円

10

10

01組合せ回路 出5円

10円 00

10

01

組合せ回路力

•今までに1円が入っていたら、次に1円が入ったら2円と表示•今までに5円が入っていたら、次に1円が入ったら6円と表示

49

今までに5円が入っていたら、次に1円が入ったら6円と表示

Page 51: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

順序回路• 順序回路

– 同じ入力に対して出力が異なる

記憶を持 回路 過去 入力や計算結果を記憶– 記憶を持つ回路、過去の入力や計算結果を記憶

– ループ(サイクル)を持つ回路

1円5円入

4出5円

10円入力

組合せ回路出力

現在の投入金額4

を記憶

50

Page 52: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

ループを使って記憶を実現

フリップフロップ Flip Flop (FF )

• RSフリップフロップ

(Flip Flop はシーソーのこと)

RSフリップフロップ

• JKフリップフロップ

ク ク付きRSフリ プフ プ• クロック付きRSフリップフロップ

• マスタースレーブ型RSフリップフロップ

• マスタースレーブ型Dフリップフロップ

• エッジトリガDフリップフロップエッジトリガDフリップフロップ

51

Page 53: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

QQ

1 0 1 01 1 (禁止)R

Q10 0 0

52

Page 54: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

順序回路• 順序回路順 回路

– 同じ入力に対して出力が異なる

– 記憶を持つ回路、過去の入力や計算結果を記憶

– ループ(サイクル)を持つ回路

円1円5円

10円S R

現在の投入金額を記憶を記憶

記憶は、SR-FFでできる!!しかし どのタイミングでS Rの値を使えばいいのかが難しい

53

しかし、どのタイミングでS,Rの値を使えばいいのかが難しい

Page 55: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

同期式順序回路順序回路• 順序回路

– 同じ入力に対して出力が異なる

記憶を持つ回路 過去の入力や計算結果を記憶– 記憶を持つ回路、過去の入力や計算結果を記憶

– ループ(サイクル)を持つ回路

– クロックのタイミングで記憶を更新– クロックのタイミングで記憶を更新

1円5円

10円

現在の投入金額

S RQ FFがS,Rの値

を取り込む現在の投入金額を記憶

クロック

を取り込む

54clock

Page 56: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

エッジトリガ D-FF 参考程度

Clock=1で値を取り込むと同時に次の値をすぐ出力(遅延は以下の回路を信号が伝播する程度の時間のみ)

presetTTL7474

ポジティブエ ジトリガ

clear Q

ポジティブエッジトリガ

clear Q

clockQ

D

Q

55

D

Page 57: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

レジスタ• レジスタは、Dフリップフロップで構成される.

• プロセッサは,主記憶に格納されているデータよりも,レジ デジスタに格納されているデータをより高速に読み書きできる.

頻繁に参照されるデ タを 時的に記憶する– 頻繁に参照されるデータを一時的に記憶する

– 演算の結果の一時的保存

プ セ サには限られた数のレジスタしかない• プロセッサには限られた数のレジスタしかない.

– MIPS の例: $s0, $s1, …, $s7, $t0, …, $t9 等の名前の32ビット幅のレジスタを32本(1ワ ド = 32bit)32ビット幅のレジスタを32本(1ワード = 32bit)

• 今から考える、レジスタファイルは、レジスタの集合で、書き込み制御信号もある(詳細は教科書図4 7で後日)書き込み制御信号もある(詳細は教科書図4.7で後日)

56

Page 58: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

57

Page 59: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

MIPSの機能ユニット

データパス部: データの値に何らかの操作を与える部分ALU ,PC,メモリ,レジスタなどからなる

制御部 状態を記憶し その状態と入力によりデ タパスを制御する制御部:状態を記憶し、その状態と入力によりデータパスを制御するメモリ、レジスタと制御ユニットなどからなる

PC 命令メモリ

アドレスレジスタ

ALU命令 レジスタ

番号

レジスタ

データ

アドレス

メモリデータ・メモリ

レジスタ番号

レジスタ番号

データ

状態論理要素-最低でも入力2、出力1が必要(デ タ入力 タイミング信号=クロック デ タ出力)

58

(データ入力、タイミング信号=クロック、データ出力)

Page 60: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

59

Page 61: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

読み出し・書き込みの一般的なモデル

状態論理要素

1組み合わせ論理回路

状態論理要素

21 2

状態論理要素は状態を記憶するためで、メモリやレジスタで実現

•クロック信号 : 書き込みのタイミングを規定クロック信号の周期は、最長パスで決まる。

•読出し可能・書込み可能かを定義する信号:読出し、書込みタイミングの分離

•このモデルの2つの状態論理素子が同じ実体のこともある

あるレジスタに値を書き込みたい時には、書き込む値を用意して、その書き込み制御信号をアサートする。そうすると クロックの立ち上がりのタイミングで値が更新される

60

そうすると、クロックの立ち上がりのタイミングで値が更新される。

Page 62: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

エッジトリガクロック方式

エッジトリガクロック方式 : クロック信号のエッジのみで状態更新を行う方式同一クロックサイクルで、読み出し・書込みを両方行える

状態更新

l k

(立ち上がり動作で、状態更新を行うとした場合)

clock

状態論理要素

組み合わせ論理回路

状態論理要素

書き込み 読み出し 組み合わせ論理回路

クロ クの立ち上がりで更新(立下りのシステムもあり)

61

クロックの立ち上がりで更新(立下りのシステムもあり)

Page 63: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

ミニクイズ①

add $t0, $s1, $s2

を実行しているときのデータパスを考える。この時、1つ前ページの、状態論理要素1、状態論理要素2、組み合わ

せ論理回路はそれぞれ具体的に何になるか?(以下の図は説明のためせ論理回路はそれぞれ具体的に何になるか?(以下の図は説明のために用いるためだけでこの問題に直接は関係ない)

デ タ

PC 命令メモリ

アドレスレジスタ

デ タ

ALU命令 レジスタ

番号

レジスタ

データ

アドレス

データ・メモリ

レジスタ番号

レジスタ番号

データ

62

Page 64: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

お絵かきスペース

63

Page 65: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

データパスの構築(全部終わったら後で復習してください)

すべての命令:クロック・エッジから実行を開始し,次のクロックエッジまでに実行を完了する ⇒ 一番実行時間が長い命令が実行できるように,実行を完了する ⇒ 番実行時間が長い命令が実行できるように,

クロック幅を長くする.

⇒長い実行時間の命令は複数クロックで実行するようにする⇒長い実行時間の命令は複数クロックで実行するようにする.

• 各命令ごとに,データを処理する部品を逐次的に並べる.各命令ごとに,デ タを処理する部品を逐次的に並べる.処理が似たものは同じような部品の配置になる.(R形式命令,...)

• 一時に 一つの命令しか実行しないので 共通に使える部品をまとめる• 時に, つの命令しか実行しないので,共通に使える部品をまとめる.

• 命令ごとに異なる処理は,場合わけを制御する.制御は後でまとめて設計することにし デ タの処理手順だけに注目制御は後でまとめて設計することにし,データの処理手順だけに注目

具体的には 次回以降で見ていくことになります

64

具体的には、次回以降で見ていくことになります。

Page 66: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

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

Page 67: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

Chap. 1の試験に出るかもしれない用語集

•R形式•I形式形式

•データメモリ•命令メモリ•J形式

•PC(何の略でしょう?)•レジスタ・ファイル

命令メモリ•制御部分•ディスティネーションレジスタ•レジスタ・ファイル

•ALU(何の略でしょう?)•MUX

•ソースレジスタ

•データパス•信号を”アサート”するク クと同期式•クロックと同期式

66

Page 68: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

重要問題②

• 2-1MUXのゲートレベル(AND/OR/NOTなど)2 1MUXのゲ トレベル(AND/OR/NOTなど)の実現を示せ。

(自力で解けるように)

• 重要問題 ①、②、③

• ミニクイズ①①

67

Page 69: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

重要問題③

図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

Page 70: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

図4.2(英語版)

試験問題を出すとしたら、この英語版の図を使うかも

d

e l

c dj

b fh i

ka k

g

69

Page 71: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

図4.2(英語版)

試験問題を出すとしたら、この英語版の図を使うかも

d

e l

c dj

b fh i

ka k

g

70

Page 72: 計算機構成論 (Chap 1) @C401(Chap. 1) @C401ger/Lectures/C-CompArch2012/...Chap. 1のセルフチェック 以下の文章の意味がわからないなら、今から,寝ないで

図4.2(英語版)

試験問題を出すとしたら、この英語版の図を使うかも

d

e l

c dj

b fh i

ka k

g

71