計算機アーキテクチャ 第 11 回命令実行の流れ 2014 年 6 月 20 日 電気情報工学科 田島孝治 1
授業スケジュール ( 前期 ) 2 回日付タイトル 1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現 6 5/19 計算アーキテクチャ (ARU) 7 5/26 計算装置のハードウェア実装 8 6/2 文字コード 回日付タイトル 10 6/16 主記憶装置とレジスタ 11 6/20 命令実行の流れ 12 6/30 命令形式とアセンブリ言語 13 7/7 命令セット 14 7/14 サブルーチンの実現 15 7/28 PCSpimによるアセンブリ言語 プログラム 8/4? 期末試験 ( 日程は仮 ) 16 9/29? フォローアップ ( 日程は仮 ) 9 6/11 中間試験 (9:00-9:50) 5/5はこどもの日 7/21は海の日のため休講 授業変更 :6/23 1 時限 6/20 3 時限
今日の授業の目的 3 命令がどのように実行されるか理解する命令の実行時間の詳細な計算を理解する 今日の疑問 制御信号はどうやって作られるのか? 条件分岐と繰り返しはどう実現されているのか? 計算機の速さは何によって決まるのか?
命令 (instruction) とは何か 4 制御信号を生成し コンピュータの動作を決める ハードウェアとソフトウェアのインターフェース 命令は一つのデータ ( 命令語 ) として表現できる メモリ上に保存されている データは 32bit 程度の長さで表される 命令の長さを命令長と呼ぶ 0/1の割り当てはアーキテクチャによって異なる ハードウェアはこのデータを解釈し 実行している ( 機械語の ) プログラム 命令の集合で 順番に ( 逐次 ) 実行されていく
命令の種類と形式 5 算術論理演算命令 加減算や論理演算を行う ALU 制御 (+,-, AND, OR 等 ) 入力レジスタ 1 入力レジスタ 2 出力レジスタ メモリ操作命令 メモリの読み書きを行う メモリ操作 (load, store 等 ) レジスタ アドレス 条件分岐命令 プログラムの実行順を変更する 分岐操作 ( 条件分岐 ジャンプ等 ) アドレス
命令実行の手順 6 命令フェッチ (fetch) 命令が実行される最初の過程 命令メモリから命令レジスタにデータを読み込む 命令デコード (decode) 命令を解釈し制御信号を作り出す レジスタの操作 ( どのレジスタにアクセスするか ) メモリの操作 ( 読み込みまたは書き込み ) データセレクタの操作 ( どの信号線を接続するか ) 命令実行 (execute) ハードウェアの動作時間 メモリやレジスタに値が書き込まれる
命令実行のしくみ 7 1 命令フェッチ 命令レジスタ レジスタ番号 レジスタの管理ハードウェア 命令メモリ 命令デコーダ ALU 制御 2 命令デコード ( 制御信号の生成 ) ALU データメモリ メモリ制御 メモリアドレス 3 命令実行 ( 演算や書き込み ) データセレクタ 書き込みデータ 読み出しデータ
ALU と制御信号 8 現在の ALU は CPU に内蔵されていますが 昔は外付けもありました 教科書 P.10 参照
ALU(74181) の内部構造 9
算術論理演算命令の実行サイクル 10 命令メモリ 1 命令フェッチ + 入力 1 入力 2 出力 2 命令デコード 命令デコーダ 2 読み書きするレジスタアドレス 3 演算制御信号 3 命令実行 ( 演算や書き込み ) 3 演算実行 レジスタの管理ハードウェア ALU 4 結果の格納 メモリ制御 データセレクタ データメモリ メモリアドレス 書き込みデータ 読み出しデータ
メモリ操作命令の実行サイクル 11 命令メモリ 1 命令フェッチ L レジスタアドレス 命令デコーダ 2 読み書きするレジスタアドレス 2 命令デコード ALU 制御 レジスタの管理ハードウェア ALU 4 結果の格納 データメモリ メモリ制御 メモリアドレス 3 命令実行 ( ハードウェアのアクセス ) データセレクタ 書き込みデータ 読み出しデータ
シーケンサ (sequencer) 12 次に実行する命令を読み出すための回路 プログラムカウンタを制御するハードウェア 命令メモリからプログラムを順に実行するための仕組み 条件分岐や繰り返しの処理を行う際にも動作する シーケンサ 命令メモリ プログラムカウンタ セデレクータタ +1 命令レジスタ 分岐先命令アドレス
コンピュータの中枢部分の構成 13 プログラムカウンタ データセレクタ +1 分岐先命令アドレス 命令レジスタ レジスタ番号 レジスタの管理ハードウェア 命令メモリ データメモリ メモリ制御 命令デコーダ メモリアドレス ALU 制御 制御 読み出しデータ 書き込みデータ フラグレジスタ ALU データセレクタ
条件分岐命令の実行サイクル 14 プログラムカウンタ データセレクタ +1 分岐先命令アドレス レジスタ番号 J アドレス 1 命令フェッチ レジスタの管理ハードウェア 命令メモリ データメモリ メモリ制御 命令デコーダ メモリアドレス ALU 制御 読み出しデータ 書き込みデータ 2 命令デコード ALU 3 プログラムカウンタの書き換え データセレクタ
15 フラグレジスタを使った条件分岐 プログラムカウンタ データセレクタ +1 分岐先命令アドレス 命令メモリ データメモリ メモリ制御 = 入力 1 入力 2 アドレス 命令デコーダ メモリアドレス ALU 制御 制御 読み出しデータ 書き込みデータ フラグレジスタ レジスタの管理ハードウェア ALU データセレクタ
MEMO 16
演習問題 1 17 次のプログラムの各命令を分類せよ 命令の種類に C,M,J のいずれかを記入すること ただし C: 算術論理演算 M: メモリ操作 J: 条件分岐 番地 プログラムの内容 命令の種類 100 111 番地の内容をレジスタ1へ読み込み 101 112 番地の内容をレジスタ2へ読み込み 102 レジスタ 1 にレジスタ 2 の値を加算 ( レジスタ 1= レジスタ 1+ レジスタ 2) 103 レジスタ2から即値 1 を減算 104 レジスタ2が1 以上なら102 番地へ処理を移す 105 レジスタ1の値を113 番地に書き込み 106 114 番地の値をレジスタ2へ読み込み 107 レジスタ2からレジスタ1を減算 108 レジスタ2が0 以下なら110 番地へ処理を移す 109 113 番地にレジスタ1の内容を書き込み 110 プログラム終了
演習問題 2 18 各命令の実行時間を次の表に定めるとき 演習問題 1 のプログラムの実行時間を答えよ 処理内容 命令のフェッチ 命令のデコード 算術論理演算命令の実行 メモリ操作命令の実行 条件分岐命令の実行 処理時間 10 秒 3 秒 5 秒 10 秒 8 秒 ただし データは次の表のとおりとする メモリ番地データ 111 5 112 2 113-25684 114 7
命令機能の評価指数 19 早い計算機は何によって決まるか? 命令による実行時間の違い 同じ種類の命令でも 加算と乗算で実行時間は違う もちろん命令の種類によっても違う 計算機の動作周波数の違い 計算機の動作周波数が高ければ高速にハードウェアが動作できる 評価指標 :TPI( 平均命令実行時間 ) TPI = TPC CPI TPC: マシンサイクル時間 ( クロック周波数の逆数 ) CPI: 平均命令実行サイクル数 (1 命令を何クロックで実行できるか )
演習問題 3 20 同じ命令セットを持つコンピュータ A と B があるこのクロック周波数と CPI が表のようになっている 種類クロック周波数 CPI コンピュータ A 4GHz 40 コンピュータ B 1GHz 5 問 1:500 命令のプログラムを実行した場合の CPU 時間を計算せよ ただし CPU 時間 = 実行命令数 TPI 問 2: コンピュータ A,B ではどちらが何倍速いといえるか
ハードウェアのトレードオフ論争 21 複雑で高度な機能は高速なハードウェアに任せたい CISC(Complex Instruction Set Computer) ソフトウェアの互換性が高くなる ハードウェアを単純化することで高速化し 複雑な命令はソフトウェアで対応したい RISC(Reduced Instruction Set Computer) CPI をできるかぎり小さくし 高速化が図れる ハードウェアの小規模化 低価格化が図れる
ハードウェアとシステムプログラム 22 応用プログラム プログラミング言語 ソフトウェア コンパイラ OS 命令セットアーキテクチャ ( マシン語 ) ハードウェア 計算機アーキテクチャの対象範囲 適切な命令セットアーキテクチャの設計 システムプログラム ( コンパイラ OS) とどう連携するか
プログラミング言語とコンパイラ 23 機械語は人間が記述するには最適とは言い難い 機械語はハードウェアに合わせて作られた言語 ハードウェアが変わると 覚え直しが必要 人間にわかりやすい言語でプログラムを作りたい プログラミング言語の開発 機械語にまとめて変換しておいて実行 コンパイラコンパイル時に最適化処理が可能 プログラミング言語を解釈しながら実行 インタプリタ ユーザがシステムと対話的にプログラムを作れる
システムプログラムとの連携 24 連携における検討事項 コンパイラとのインタフェース データ型と内部表現形式 命令形式 命令機能 ( 命令セット ) アドレス指定方法 ( アドレッシング ) OS とのインタフェース プロセス管理 メモリ管理 入出力処理 割り込み 例外処理 来週議論する予定