360 likes | 472 Views
計算機システム Ⅱ 命令セットアーキテクチャ. 和田俊和. 講義計画. コンピュータ の歴史 1 コンピュータ の歴史 2 コンピュータ の歴史 3 論理 回路と記憶,計算:レジスタと ALU 主 記憶装置とALU,レジスタの 制御 命令セットアーキテクチャ ( ← 本日 ) 演習 問題 パイプライン 処理 メモリ 階層:キャッシュと仮想記憶 命令 レベル並列処理 命令 実行順序の変更 入出力 と周辺装置:DMA,割り込み処理 演習 問題 現代的 な計算機アーキテクチャの 解説 総括と試験
E N D
計算機システムⅡ命令セットアーキテクチャ 和田俊和
講義計画 • コンピュータの歴史1 • コンピュータの歴史2 • コンピュータの歴史3 • 論理回路と記憶,計算:レジスタとALU • 主記憶装置とALU,レジスタの制御 • 命令セットアーキテクチャ(←本日) • 演習問題 • パイプライン処理 • メモリ階層:キャッシュと仮想記憶 • 命令レベル並列処理 • 命令実行順序の変更 • 入出力と周辺装置:DMA,割り込み処理 • 演習問題 • 現代的な計算機アーキテクチャの解説 • 総括と試験 • 教科書:坂井修一著:電子情報通信学会レクチャーシリーズC−9,コンピュータアーキテクチャ,コロナ社 • 最終回の試験によって成績評価を行う.5回以上欠席で不合格とする.
本日の講義の範囲 命令という観点から,その構造と,各部の動きを解説
3.1.1 操作とオペランド • 命令=操作(operation)+操作の対象(operand) • 命令は2進数で表され,「命令語」に納められる • 操作の対象(operand)の分類 • ソースオペランド(source operand) • デスティネーションオペランド(destination operand) • 即値 (immediate) d ← op s1 d ← s1 op s2 d ← 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進数で人にとっては分かりにくい. • 英語に近い機械語プログラムの表記法 • 機械語と一対一の対応関係がある.(高級言語ではそうではない)
動作例 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.1 アドレッシングの種類 • データや命令の格納場所を示す方法 • ここで示されているのは基本的なものだけ
3.3.2 バイトアドレッシングとエンディアン • 通常は1語を単位としてデータにアクセスする. • バイト単位でのアクセスをするにはアドレスを指定する必要がある.
3.3.3 ゼロレジスタと定数の生成 • r0 ゼロレジスタ: 読み書きしても値がゼロのレジスタ • 定数の生成例 addi r0, r1, 0101010101010101 addi r0, r1, 28 sla r1, r1, 16 eq r1, r0, r1 ori r1, r1, 0000000011111111 (a)定数の生成 (b) 定数の生成 (c) ビット反転 (16bit) (32bit)
3.4.1 サブルーチンの基本 • C言語では関数,Fortranではサブルーチン,Pascalでは手続き
3.4.2 サブルーチンの手順 Caller Save方式,Callee Save方式 • レジスタ値の待避 • 戻り番地(次の命令番地)の待避 • サブルーチンの先頭番地へのジャンプ • サブルーチン本体の実行 • 戻り番地へのジャンプ • レジスタ値の復帰 • 元の命令列の実行再開
3.4.3 スタックによるサブルーチンの実現 sw r1, 0(sp) addi sp,sp,4 (a) push subi sp,sp,4 lw r1, 0(sp) (b) pop
サブルーチンのアセンブラプログラム sw r1, 0(sp) sw r2, 4(sp) … sw r31, 4*30(sp) addi sp,sp,4*30+4 jal address/*サブルーチン へのジャンプ r31←(pc)+4*/ subisp, 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
本日の講義の範囲 命令という観点から,その構造と,各部の動きを解説
次週の演習問題 • 次週は演習問題を行います. • 各章の「理解度の確認」問題をやっておいて下さい. • これ以外に講義でお話ししたことも出します.