コンピュータアーキテクチャ 第 7 週命令セットアーキテクチャ ( 命令の表現 命令の実行の仕組 ) 2013 年 11 月 6 日 金岡晃
授業計画 第 1 週 (9/25) 第 2 週 (10/2) 第 3 週 (10/9) 第 4 週 (10/16) 第 5 週 (10/23) 第 6 週 (10/30) 第 7 週 (11/6) 授業概要 2 進数表現 論理回路の復習 2 進演算 ( 数の表現 ) 演算アーキテクチャ ( 演算アルゴリズムと回路 ) 休講 休講 ノイマン型コンピュータ 命令とは 命令の使い方 命令セットアーキテクチャ ( 命令の表現 命令の実行の仕組 ) 第 8 週 (11/13) 第 9 週 (11/20) 第 10 週 (11/27) 第 11 週 (12/4) 第 12 週 (12/11) 第 13 週 (12/18) 第 14 週 (1/8) 第 15 週 (1/17) 中間試験 休講 ハーバードアーキテクチャ RISC と CISC 制御アーキテクチャ メモリの仕組 キャッシュメモリと仮想メモリ 割込みアーキテクチャ パイプライン 1/22-2/8 期末試験 入出力アーキテクチャ まとめ 1
コンピュータアーキテクチャ 第 6 週 復習 ノイマン型コンピュータ 命令とは 命令の使い方 2
ノイマン型コンピュータの特徴 プログラム可変内蔵方式 プログラムを内部のメモリに記憶させることで プログラムの入力や変更が簡単に行える プログラム記憶方式とも 逐次処理方式 命令は 原則として実行順にメモリに格納されており この命令を順次取り出しながら処理を進める 取り出す命令のアドレスは プログラムカウンタに従って指示する 単一メモリ方式 プログラムとデータは 同じメモリ内に格納され メモリにはアドレスが割り振られている 一時的なデータ格納領域として 高速に動作する小容量メモリであるレジスタを備えている レジスタとメモリ間のデータ転送は プログラムで指示できるため メモリの効果的な利用が可能となる 3
ノイマン型コンピュータの基本構成 (1) 演算装置 (Arithmetic Unit) データの算術演算や論理演算を行う装置 制御装置 (Control Unit) すべての装置をコントロールする装置 一般的には 演算装置と制御装置を超大規模集積回路 (VLSI: Very Large Scale IC) として構成し 中央処理装置 (Central Processing Unit:CPU) ということが多い CPU は MPU(Micro Processor Unit) とも呼ばれる 4
ノイマン型コンピュータの基本構成 (2) 記憶装置 (Memory Unit) 入力装置 (Input Unit) データやプログラムを記憶しておく装置である CPU や入出力装置とデータのやり取りを高速に行う主記憶装置 (Main Memory Unit) と 大量のデータを長期間記憶しておく補助記憶装置 (Auxiliary Memory Unit) がある 主記憶装置は IC メモリが主流であり 補助記憶装置にはハードディスクや DVD などが使われている プログラムやデータを主記憶装置に入力する装置である キーボードやマウス イメージスキャナなどがある 出力装置 (Output Unit) コンピュータが処理したデータを出力する装置 ディスプレイやプリンタなどがある 5
基本動作 アドレスバス プログラムカウンタ PC 命令レジスタ IR 制御装置主記憶装置演算装置 OP opr メモリアドレスレジスタ MAR アドレス メモリ 命令 ALU 汎用レジスタ GR デコーダ DEC フラグレジスタ FR 制御信号 データバス 6
PC 用 CPU の構成と動作 ノースブリッジへ 32 ビット 汎用レジスタプログラムカウンタフラグレジスタ 8 BTB, BHT 命令 TLB 命令用 1 次キャッシュメモリ バスインタフェース 2 次キャッシュメモリ デコーダ 命令制御装置 整数演算用スケジューラ 浮動小数点演算用スケジューラ AGU AGU ALU ALU FPU SIMD SIMD データ用 1 次キャッシュメモリデータ TLB 7
PC の構成例 CPU グラフィックスカード CPU バス チップセット ( ノースブリッジ ) メモリ ハードディスク CD-ROM チップセット ( サウスブリッジ ) IEEE1394 対応機器 USB 対応機器 キーボード マウス プリンタ 8
コンピュータアーキテクチャ 第 7 週命令セットアーキテクチャ ( 命令の表現 命令の実行の仕組 ) 9
本日の到達目標と概要 到達目標 コンピュータで命令がどう行われるかを理解する 概要 命令と各種オペランド アドレッシングとその種類 10
機械語命令 コンピュータに動作を直接的に指示するためには 機械語命令を使用する必要がある 高級言語 (C や Fortran など ) で記述されたプログラム ( ソースプログラム ) コンパイル ( 翻訳 ) 機械語命令 (Machine Instruction) 2 進数で記述 人によっては扱いにくい ニーモニックコード 2 進数で表される機械語命令を記号としてあらわす 11
命令の形式 基本形式 操作命令を示す命令コード (Operation Code) と操作対象のデータを示すオペランド (Operand) からなる 命令コード (OP) オペランド (opr) 3 オペランド命令 分類 2 オペランド命令 1 オペランド命令 0 オペランド命令 12
3 オペランド命令 操作対象とするデータの格納元アドレスを示すオペランド 2 個と 操作後のデータを保存する格納先アドレスを示すオペランド 1 個をそのまま記述する命令 アドレス メモリ OP opr1 opr2 opr3 ソースオペランドソースオペランド (Source Operand) XXX YYY ZZZ a b c デスティネーションオペランド (Destination Operand) 13
2 オペランド命令 3 オペランド命令において ソースオペランドのどちらか 1 個とデスティネーションオペランドを兼用する命令 アドレス メモリ OP opr1 opr2 XXX YYY a b ソースオペランド ソースオペランド兼デスティネーションオペランド 14
1 オペランド命令 アキュムレータ (Accumulator: 累算器 略して Acc) と呼ばれる特別な格納領域を使用する命令 命令は 1 個のソースオペランドを記述し もう 1 個のソースオペランドとデスティネーションオペランドは兼用してアキュムレータを使用 アドレス メモリ OP opr1 XXX a ソースオペランド b c Acc ソースオペランド兼デスティネーションオペランド 15
0 オペランド命令 スタックを使用する命令命令としては命令コードのみを記述しオペランドは記述しない アドレス メモリ OP opr1 opr2 XXX YYY a b ソースオペランド opr3 ZZZ c デスティネーションオペランド スタック 16
命令セット CPU が備えているすべての命令の集まりを命令セット (Instruction Set) という COMET II で実行されるアセンブラ言語 CASL II の命令セット ロード ストア ロードアドレス命令 算術 論理演算命令 比較演算命令 シフト演算命令 分岐命令スタック操作命令コール リターン命令その他 17
CASL II の命令セット一覧 ( 命令コード ) ロード ストア ロードアドレス命令 ロード LoaD ストア Store ロードアドレス Load Address レジスタ レジスタ間やレジスタ メモリ間などでデータの移動を行う命令である LD ST LAD 算術 論理演算命令 加減算などの算術演算や AND OR などの論理演算を行う命令である 算術加算 ADD Arithmetic 論理加算 ADD Logical 算術減算 SUBtract Arithmetic 論理減算 SUBtract Logical 論理積 AND 論理和 OR 排他的論理和 exclusive OR ADDA ADDL SUBA SUBL AND OR XOR 18
CASL II の命令セット一覧 ( 命令コード ) 比較演算命令 2 個のデータの大小を比較し その結果をフラグレジスタ FR に反映させる命令 算術比較 ComPare Arithmetic 論理比較 ComPare Logical CPA CPL シフト演算命令 レジスタにあるデータを 右または左方向に指定したビット数だけシフトする命令 算術左シフト Shift Left Arithmetic 算術右シフト Shift Right Arithmetic 論理左シフト Shift Left Logical 論理右シフト Shift Right Logical SLA SRA SLL SRL 19
CASL II の命令セット一覧 ( 命令コード ) 分岐命令 フラグレジスタ FR の状態によって指定されたアドレスに格納されている命令を実行するかどうかを決める条件分岐命令と FR の状態によらずに分岐を行う無条件分岐命令がある 正分岐 Jump on Plus 負分岐 Jump on Minus 非零分岐 Jump on Non Zero 零分岐 Jump on Zero オーバーフロー分岐 Jump on Overflow 無条件分岐 unconditional JUMP JPL JMI JNZ JZE JOV JUMP 20
CASL II の命令セット一覧 ( 命令コード ) スタック操作命令 スタック領域にデータを格納する命令と スタックからデータを取り出す命令がある プッシュ PUSH ポップ POP PUSH POP コール リターン命令 サブルーチンの呼び出しと サブルーチンからの復帰を行う命令 その他 処理としては何もしていないが 時間を費やす NOP 命令などがある コール CALL subroutine リターン RETurn from subroutine スーパーバイザコール SuperVisor Call ノーオペレーション No Operation CALL RET SVC NOP 21
命令機能の評価 平均命令実行サイクル数 CPI(Cycles per Instruction) 命令セットの中の 1 命令を実行するために必要な平均のクロック数 クロック :CPU の動作基準となる時間の単位 TPI=CPI T (s) T(s): クロック信号の周期 22
アドレッシング メモリには格納領域ごとにアドレス ( 番地 ) と呼ばれる値が割り振られている 命令のオペランドにアドレスを記述すればその値に対応する格納領域を特定できる コンピュータでは各種のアドレスの指定法が用いられている 有効アドレス (Effective Address): 最終的に参照されるアドレス アドレッシング : 処理対象となるデータを決める操作 アドレス メモリ OP opr 操作 XXX a アドレッシング 有効アドレス 23
直接アドレッシング 命令のオペランドに記述した値が示すアドレスに格納されているデータを処理対象とする方式 OP opr 500 アドレス メモリ 500 99 有効アドレス 対象データ 24
間接アドレッシング オペランドに記述した値で示されるアドレスに格納されている値を有効アドレスとする方式 OP opr アドレス メモリ 500 500 600 600 99 有効アドレス 対象データ 25
指標アドレッシング オペランド opr1 で指定した指標レジスタに格納されている値と opr2 に記述した値を加算した結果を有効アドレスとする方式 OP opr1 opr2 アドレス メモリ 3 500 + 508 99 指標レジスタ 3 8 有効アドレス 対象データ 26
相対アドレッシング プログラムカウンタに格納されている値とオペランドに記述した値を加算した結果を有効アドレスとする方式 OP opr アドレス メモリ 500 + 524 99 プログラムカウンタ 24 有効アドレス 対象データ 27
基底アドレッシング 基底レジスタに格納されている値とオペランドに記述した値を加算した結果を有効アドレスとする方式 OP opr アドレス メモリ 500 + 562 99 基底レジスタ 62 有効アドレス 対象データ 28
即値アドレッシング オペランドに記述した値をそのまま処理対象データとする方式 OP opr 99 対象データ 29
本日の到達目標と概要 到達目標 コンピュータで命令がどう行われるかを理解する 概要 命令と各種オペランド アドレッシングとその種類 30