コンピュータアーキテクチャ 第 10 回
制御部 (Controller) 命令の解読(デコード) ⇒ 命令解読回路(デコーダ) 制御信号の生成 ⇒ マイクロ操作の実行タイミングを決定 アセンブリプログラマからは見えない 今回の内容 レジスタ間命令(テキスト参照)の取り込み: 次回,全命令を含む制御部に拡張 デコーダの設計 レジスタの選択回路 命令を実現するマイクロ操作の制御 レジスタ間命令の制御信号生成回路 * 命令解読回路(デコーダ) 制御信号生成回路 * * 命令フェッチ (Instruction fetch)
ハードウェアモデルにおける位置付け * レジスタ間命令 のデコーダ * レジスタ 選択回路 * レジスタ間命令 の制御信号 生成回路
プロセッサの命令処理の流れ 命令フェッチ (instruction fetch): 命令解読 (instruction decode): メモリアドレス設定 ⇒ マイクロ操作 A データ読み込み⇒ マイクロ操作 R 命令レジスタへの転送⇒ マイクロ操作 T 命令解読 (instruction decode): 実行 (execution): PR の指すメモリアドレスから命令を読み出す操作 * 次に実行すべき命令の解釈 ⇒ マイクロ操作 D * 演算・データ転送,メモリアクセス等の操作 ⇒ マイクロ操作 E
レジスタ間命令の実行制御 状態 F1, F2, F3, Dec, Exe ⇒ 対応するクロックサイクル, あるいはステップ: 状態と同じ あるいはステップ: 状態と同じ F1, F2, F3, Dec-Exe で表記 * 命令フェッチのステップ: F1, F2, F3 * 命令の : Dec-Exe 実行ステップ レジスタ間命令ではひとつの クロックサイクルからなる
状態を決定する制御信号 状態 F1, F2, F3, Dec, Exe をどのように決定するのか? ⇒ 対応する信号 Q1, Q2, Q3, Q4 が順にハイレベルとなって状態を決定 * シフトレジスタを環状接続 ⇒リングカウンタ リングカウンタの 1 ビットだけハイレベルにして使用 ⇒ワンホットステートカウンタ 実現方法 2 ビットカウンタと 2 ビット入力 4 ビット出力デコーダの組合せ (フリップフロップを直列接続) シフトレジスタ *
COMETⅡのマイクロアーキテクチャと制御信号
命令フェッチ第1ステップ F1: MAR ← PR *
命令フェッチ第2ステップ F2: MDR ← mem(MAR) *
命令フェッチ第3ステップ F3: IR ← MDR *
命令フェッチの タイムチャート
命令フェッチのために生成される 制御信号 略記 マイクロ操作 bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw F1: 000 010000 00010000 000 0001000000 000; F2: 000 000000 00000000 000 0000110000 010; F3: 101 000000 00000000 000 0000000000 000; マイクロ操作 * MAR←PR MDR←mem(MAR) * IR←MDR *
命令の読解(デコード) * レジスタ間命令をデコードする命令デコーダの例 * * 汎用レジスタ r1 を割付け 汎用レジスタ r2 を割付け
演習問題 10.1 レジスタ間の SUBL 命令および AND 命令をデコード する命令デコーダを設計しなさい.
バス A に接続するレジスタ選択回路 本アーキテクチャ: 汎用レジスタ r1 ⇒ RA 信号 → GRA (GR0 ~ GR7) * * レジスタをマルチプレクサで選択 GRAout = 0, かつ MDRout_a = 0 のとき,バス A に値 0 を出力するようマルチプレクサを設計
バス B に接続するレジスタ選択回路 本アーキテクチャ: 汎用レジスタ r2 ⇒ RB 信号→ GRB (GR0 ~ GR7) * * レジスタをマルチプレクサで選択 6つの制御信号がすべて 0 のときバス B に値 0 を出力するようマルチプレクサを設計
レジスタ間命令の実行ステップの制御 機械語命令が ADDA GR0, GR1 の場合
ADDA r1,r2 命令 の実行ステップ: Dec-Adda * ADDA r1,r2 命令 の実行ステップ: Dec-Adda bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Dec-Adda: 010 100000 00111100 100 1110000000 000; if ADDA_r = 1 then GRA←GRA+GRB, PR←PR+1
LD r1,r2 命令 の実行ステップ: Dec-Ld * LD r1,r2 命令 の実行ステップ: Dec-Ld bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Dec-Ld: 000 100000 00010000 101 1110000000 000; if LD_r = 1 then GRA←GRB, PR←PR+1
CPL r1,r2 命令 の実行ステップ: Dec-Cpl * CPL r1,r2 命令 の実行ステップ: Dec-Cpl bA bB A/S_op F bC Mem IAa BPAbSD c0123aLR Fcn GiPAmDdSsD srw Dec-Cpl: 010 100000 11111000 111 0110000000 000; if CPL_r = 1 then GRA-GRB, PR←PR+1
演習問題 10.2 ADDL r1,r2 命令の実行ステップの制御信号と タイムチャートを示せ.
演習問題 10.3 以下の命令の実行ステップのマイクロ操作と 制御信号を示せ. (1) SUBA r1,r2 (2) OR r1,r2 (3) CPA r1,r2
制御信号生成回路の構成 配線論理制御(wired logic control)方式 目的の を実現する順序回路 論理合成の効率の観点から最近多 ⇒ 本講義でも採用 マイクロプログラム制御(microprogrammed control)方式 に格納された命令ごとの制御情報を読み出す * 状態遷移 ROM * ☆ シフトレジスタ *
レジスタ間命令の制御回路例 (スライド 12, 17 参照)