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