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 参照)