計算機システム Ⅱ 命令セットアーキテクチャ

Preview:

DESCRIPTION

計算機システム Ⅱ 命令セットアーキテクチャ. 和田俊和. 講義計画. コンピュータ の歴史 1 コンピュータ の歴史 2  コンピュータ の歴史 3  論理 回路と記憶,計算:レジスタと ALU 主 記憶装置とALU,レジスタの 制御 命令セットアーキテクチャ ( ← 本日 ) 演習 問題 パイプライン 処理 メモリ 階層:キャッシュと仮想記憶 命令 レベル並列処理 命令 実行順序の変更 入出力 と周辺装置:DMA,割り込み処理 演習 問題 現代的 な計算機アーキテクチャの 解説 総括と試験 - PowerPoint PPT Presentation

Citation preview

計算機システムⅡ命令セットアーキテクチャ

和田俊和

講義計画1. コンピュータの歴史12. コンピュータの歴史2 3. コンピュータの歴史3 4. 論理回路と記憶,計算:レジスタとALU5. 主記憶装置とALU,レジスタの制御6. 命令セットアーキテクチャ(←本日)7. 演習問題8. パイプライン処理9. メモリ階層:キャッシュと仮想記憶10. 命令レベル並列処理11. 命令実行順序の変更12. 入出力と周辺装置:DMA,割り込み処理13. 演習問題14. 現代的な計算機アーキテクチャの解説15. 総括と試験

• 教科書:坂井修一著:電子情報通信学会レクチャーシリーズC−9,コンピュータアーキテクチャ,コロナ社

• 最終回の試験によって成績評価を行う.5回以上欠席で不合格とする.

本日の講義の範囲

命令という観点から,その構造と,各部の動きを

解説

3.1 命令セットアーキテクチャ

3.1.1  操作とオペランド• 命令=操作 (operation) +操作の対象 (operand)• 命令は 2 進数で表され,「命令語」に納められる• 操作の対象 (operand) の分類

– ソースオペランド (source operand)– デスティネーションオペランド (destination operand)– 即値 (immediate)

d ← op s1d ← s1 op s2d ← I

d: デスティネーションオペランド,s1 , s2 :ソースオペランド,

I :即値 op :オペレーション

3.1.2 命令の表現形式• 命令は,命令語という 2 進数で表される.• 命令語は,オペコード (operation code) とオペランド

(operand) から成る.• このテキストでは, 1 語の固定長命令のみを扱い,命

令の形式は R,I,A の 3 種のみを持つ仮想的な CPU を想定している.

dpl

3.1.3 命令フィールド• 命令語 32bit ,命令セット64個,レジスタ 32 個,

という条件で考えると以下の bit 割り当てになる.

op: オペコードrs,rt,rd: オペランドレジスタaux :実行細則imm/dpl: 即値または変位addr: メモリアドレス

アセンブリ言語による命令の表現1

• R 型の命令の例

アセンブリ言語による命令の表現2

• I 型の命令の例

アセンブリ言語による命令の表現3

• A 型の命令の例

3.1.4 アセンブリ言語• 機械語のプログラムは命令語の並び.• 命令語は 2 進数で人にとっては分かりにく

い.• 英語に近い機械語プログラムの表記法• 機械語と一対一の対応関係がある.(高

級言語ではそうではない)

命令セット

3.2.1 算術論理演算

動作例

R 命令の実行過程      I 命令の実行過程

補足• mul, div, shift 浮動小数点演算については,

ALU とは別に専用の乗算器,除算気,シフタ,浮動小数点演算器( floating point unit, FPU )が設けられるのが普通になっている.

• 現在では,これらは全て CPU の内部に取り込まれており,ものによっては ALU の内部に入れられているものもある.

算術シフト命令空いた上位ビットに符号 bit を入れる)

論理シフト命令• 空いた上位ビットに 0 を入れる

3.2.2 データ移動命令• メモリとレジスタ間のデータ移動– ロード命令– ストア命令

• メモリと入出力機器間のデータ移動は考える必要がない.

データ移動命令の例

データ移動命令の例

データ移動命令の例

3.2.3 分岐命令

• 無条件分岐→– j– jr– jal (明示的待避

を伴うサブルーチンコール)

• 条件分岐(次頁)

条件分岐

• 分岐先は相対的

• 絶対番地に飛ぶ際は,無条件分岐と組み合わせる.

3.3 アドレッシング

3.3.1 アドレッシングの種類

• データや命令の格納場所を示す方法• ここで示されているのは基本的なものだけ

アドレッシングの動作例

3.3.2 バイトアドレッシングとエンディアン

• 通常は 1 語を単位としてデータにアクセスする.• バイト単位でのアクセスをするにはアドレスを指

定する必要がある.

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 )

3.4 サブルーチンの実現

3.4.1 サブルーチンの基本• C 言語では関数, Fortran ではサブルーチ

ン, Pascal では手続き

3.4.2 サブルーチンの手順Caller Save方式, Callee Save方式1. レジスタ値の待避2. 戻り番地(次の命令番地)の待避3. サブルーチンの先頭番地へのジャンプ4. サブルーチン本体の実行5. 戻り番地へのジャンプ6. レジスタ値の復帰7. 元の命令列の実行再開

3.4.3 スタックによるサブルーチンの実現

sw r1, 0(sp)addi sp,sp,4

(a) push

subi sp,sp,4lw r1, 0(sp)

(b) pop

サブルーチンのアセンブラプログラム

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

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

本日の講義の範囲

命令という観点から,その構造と,各部の動きを

解説

次週の演習問題• 次週は演習問題を行います.• 各章の「理解度の確認」問題をやっておい

て下さい.• これ以外に講義でお話ししたことも出し

ます.

Recommended