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