計算機システム Ⅱ 命令セットアーキテクチャ
DESCRIPTION
計算機システム Ⅱ 命令セットアーキテクチャ. 和田俊和. 講義計画. コンピュータ の歴史 1 コンピュータ の歴史 2 コンピュータ の歴史 3 論理 回路と記憶,計算:レジスタと ALU 主 記憶装置とALU,レジスタの 制御 命令セットアーキテクチャ ( ← 本日 ) 演習 問題 パイプライン 処理 メモリ 階層:キャッシュと仮想記憶 命令 レベル並列処理 命令 実行順序の変更 入出力 と周辺装置:DMA,割り込み処理 演習 問題 現代的 な計算機アーキテクチャの 解説 総括と試験 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/1.jpg)
計算機システムⅡ命令セットアーキテクチャ
和田俊和
![Page 2: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/2.jpg)
講義計画1. コンピュータの歴史12. コンピュータの歴史2 3. コンピュータの歴史3 4. 論理回路と記憶,計算:レジスタとALU5. 主記憶装置とALU,レジスタの制御6. 命令セットアーキテクチャ(←本日)7. 演習問題8. パイプライン処理9. メモリ階層:キャッシュと仮想記憶10. 命令レベル並列処理11. 命令実行順序の変更12. 入出力と周辺装置:DMA,割り込み処理13. 演習問題14. 現代的な計算機アーキテクチャの解説15. 総括と試験
• 教科書:坂井修一著:電子情報通信学会レクチャーシリーズC−9,コンピュータアーキテクチャ,コロナ社
• 最終回の試験によって成績評価を行う.5回以上欠席で不合格とする.
![Page 3: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/3.jpg)
本日の講義の範囲
命令という観点から,その構造と,各部の動きを
解説
![Page 4: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/4.jpg)
3.1 命令セットアーキテクチャ
![Page 5: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/5.jpg)
3.1.1 操作とオペランド• 命令=操作 (operation) +操作の対象 (operand)• 命令は 2 進数で表され,「命令語」に納められる• 操作の対象 (operand) の分類
– ソースオペランド (source operand)– デスティネーションオペランド (destination operand)– 即値 (immediate)
d ← op s1d ← s1 op s2d ← I
d: デスティネーションオペランド,s1 , s2 :ソースオペランド,
I :即値 op :オペレーション
![Page 6: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/6.jpg)
3.1.2 命令の表現形式• 命令は,命令語という 2 進数で表される.• 命令語は,オペコード (operation code) とオペランド
(operand) から成る.• このテキストでは, 1 語の固定長命令のみを扱い,命
令の形式は R,I,A の 3 種のみを持つ仮想的な CPU を想定している.
dpl
![Page 7: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/7.jpg)
3.1.3 命令フィールド• 命令語 32bit ,命令セット64個,レジスタ 32 個,
という条件で考えると以下の bit 割り当てになる.
op: オペコードrs,rt,rd: オペランドレジスタaux :実行細則imm/dpl: 即値または変位addr: メモリアドレス
![Page 8: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/8.jpg)
アセンブリ言語による命令の表現1
• R 型の命令の例
![Page 9: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/9.jpg)
アセンブリ言語による命令の表現2
• I 型の命令の例
![Page 10: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/10.jpg)
アセンブリ言語による命令の表現3
• A 型の命令の例
![Page 11: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/11.jpg)
3.1.4 アセンブリ言語• 機械語のプログラムは命令語の並び.• 命令語は 2 進数で人にとっては分かりにく
い.• 英語に近い機械語プログラムの表記法• 機械語と一対一の対応関係がある.(高
級言語ではそうではない)
![Page 12: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/12.jpg)
命令セット
![Page 13: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/13.jpg)
3.2.1 算術論理演算
![Page 14: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/14.jpg)
動作例
R 命令の実行過程 I 命令の実行過程
![Page 15: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/15.jpg)
補足• mul, div, shift 浮動小数点演算については,
ALU とは別に専用の乗算器,除算気,シフタ,浮動小数点演算器( floating point unit, FPU )が設けられるのが普通になっている.
• 現在では,これらは全て CPU の内部に取り込まれており,ものによっては ALU の内部に入れられているものもある.
![Page 16: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/16.jpg)
算術シフト命令空いた上位ビットに符号 bit を入れる)
![Page 17: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/17.jpg)
論理シフト命令• 空いた上位ビットに 0 を入れる
![Page 18: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/18.jpg)
3.2.2 データ移動命令• メモリとレジスタ間のデータ移動– ロード命令– ストア命令
• メモリと入出力機器間のデータ移動は考える必要がない.
![Page 19: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/19.jpg)
データ移動命令の例
![Page 20: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/20.jpg)
データ移動命令の例
![Page 21: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/21.jpg)
データ移動命令の例
![Page 22: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/22.jpg)
3.2.3 分岐命令
• 無条件分岐→– j– jr– jal (明示的待避
を伴うサブルーチンコール)
• 条件分岐(次頁)
![Page 23: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/23.jpg)
条件分岐
• 分岐先は相対的
• 絶対番地に飛ぶ際は,無条件分岐と組み合わせる.
![Page 24: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/24.jpg)
3.3 アドレッシング
![Page 25: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/25.jpg)
3.3.1 アドレッシングの種類
• データや命令の格納場所を示す方法• ここで示されているのは基本的なものだけ
![Page 26: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/26.jpg)
アドレッシングの動作例
![Page 27: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/27.jpg)
3.3.2 バイトアドレッシングとエンディアン
• 通常は 1 語を単位としてデータにアクセスする.• バイト単位でのアクセスをするにはアドレスを指
定する必要がある.
![Page 28: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/28.jpg)
3.3.3 ゼロレジスタと定数の生成
• r0 ゼロレジスタ : 読み書きしても値がゼロのレジスタ
• 定数の生成例
addi r0, r1, 0101010101010101addi r0, r1, 28 sla r1, r1, 16 eq r1, r0, r1 ori r1, r1, 0000000011111111
(a) 定数の生成 (b) 定数の生成 (c) ビット反転 ( 16bit ) ( 32bit )
![Page 29: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/29.jpg)
3.4 サブルーチンの実現
![Page 30: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/30.jpg)
3.4.1 サブルーチンの基本• C 言語では関数, Fortran ではサブルーチ
ン, Pascal では手続き
![Page 31: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/31.jpg)
3.4.2 サブルーチンの手順Caller Save方式, Callee Save方式1. レジスタ値の待避2. 戻り番地(次の命令番地)の待避3. サブルーチンの先頭番地へのジャンプ4. サブルーチン本体の実行5. 戻り番地へのジャンプ6. レジスタ値の復帰7. 元の命令列の実行再開
![Page 32: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/32.jpg)
3.4.3 スタックによるサブルーチンの実現
sw r1, 0(sp)addi sp,sp,4
(a) push
subi sp,sp,4lw r1, 0(sp)
(b) pop
![Page 33: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/33.jpg)
サブルーチンのアセンブラプログラム
sw r1, 0(sp)sw r2, 4(sp)…sw r31, 4*30(sp)addi sp,sp,4*30+4jal address /* サブルーチンへのジャンプ r31←(pc)
+4*/
subi sp, sp, 4*30+4 lw r1, 0(sp) lw r2, 4(sp)… lw r31, 4*30(sp)元の処理の続き
address:…. jr r31
![Page 34: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/34.jpg)
RISC と CISC
• CISC (complex instruction set computer) と RISC (reduced instruction set computer)
• CISC が先行( IBM メインフレーム, DEC VAX-11, Intel 80486 など)
• 1980年以降, RISC が主流. (Sparc, MIPS, Power PC, Alpha など )Pentiumも表面上はCISCだが,内部は RISC
![Page 35: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/35.jpg)
本日の講義の範囲
命令という観点から,その構造と,各部の動きを
解説
![Page 36: 計算機システム Ⅱ 命令セットアーキテクチャ](https://reader036.vdocuments.mx/reader036/viewer/2022062315/56814e80550346895dbc1d30/html5/thumbnails/36.jpg)
次週の演習問題• 次週は演習問題を行います.• 各章の「理解度の確認」問題をやっておい
て下さい.• これ以外に講義でお話ししたことも出し
ます.