コンピュータアーキテクチャ
第
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)
制御装置
(
Control 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 週 命令セットアーキテクチャ
(命令の表現・命令の実行の仕組)
コンピュータアーキテクチャ
9 2013/11/6 コンピュータアーキテクチャ
本日の到達目標と概要
•
到達目標
–
コンピュータで命令がどう行われるかを理解する
•
概要
–
命令と各種オペランド
–
アドレッシングとその種類
高級言語(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個 のソースオペランドとデスティネーションオペランドは兼用してアキュム レータを使用
ソースオペランド 兼
デスティネーションオペランド ソースオペランド
Acc
0 オペランド命令
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 CPL2個のデータの大小を比較し、その結果をフラグレ ジスタFRに反映させる命令
比較演算命令
レジスタにあるデータを、右または左方向に指定し たビット数だけシフトする命令
シフト演算命令
CASL II の命令セット一覧(命令コード)
正分岐
Jump on Plus JPL負分岐
Jump on Minus JMI非零分岐
Jump on Non Zero JNZ零分岐
Jump on Zero JZEオーバーフロー分岐
Jump on OverflowJOV
無条件分岐
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の動作基準となる時間の単位
T(s):クロック信号の周期
アドレッシング
2013/11/6 コンピュータアーキテクチャ
23
OP opr
アドレス メモリ
XXX a
操作
メモリには格納領域ごとにアドレス(番地)と呼ばれる値が割り振られている 命令のオペランドにアドレスを記述すれば
その値に対応する格納領域を特定できる コンピュータでは各種のアドレスの指定法が用いられている
有効アドレス(Effective Address):
最終的に参照されるアドレス アドレッシング:
処理対象となるデータを決める操作
アドレッシング 有効アドレス
直接アドレッシング
500
アドレス メモリ
500 99
命令のオペランドに記述した値が示すアドレスに格納されているデータを処 理対象とする方式
OP opr
有効アドレス
対象データ
間接アドレッシング
2013/11/6 コンピュータアーキテクチャ
25
アドレス メモリ
500 600
600 99
オペランドに記述した値で示されるアドレスに格納されている値を有効アド レスとする方式
500
OP opr
有効アドレス
対象データ
指標アドレッシング
アドレス メモリ
508 99
オペランドopr1で指定した指標レジスタに格納されている値とopr2に記述 した値を加算した結果を有効アドレスとする方式
3
OP opr1
500 opr2
+
8
有効アドレス
対象データ
指標レジスタ3
相対アドレッシング
2013/11/6 コンピュータアーキテクチャ
27
プログラムカウンタに格納されている値とオペランドに記述した値を加算し た結果を有効アドレスとする方式
アドレス メモリ
524 99
500
OP opr
+
24
有効アドレス
対象データ
プログラムカウンタ
基底アドレッシング
基底レジスタに格納されている値とオペランドに記述した値を加算した結果 を有効アドレスとする方式
アドレス メモリ
562 99
500
OP opr
+
62
有効アドレス
対象データ
基底レジスタ
即値アドレッシング
2013/11/6 コンピュータアーキテクチャ
29
オペランドに記述した値をそのまま処理対象データとする方式
99
OP opr
対象データ
本日の到達目標と概要
•
到達目標
–
コンピュータで命令がどう行われるかを理解する
•
概要
–
命令と各種オペランド
–