next up previous contents index
Next: 制御部 Up: データ処理部 Previous: 算術論理回路ALU   Contents   Index


制御コード

今まで,命令と制御という言葉をあまり区別なく用いてきたが, 制御部から制御線を経由してデータ処理部に渡されるものを 制御コード(control code)と呼ぼう。 一方,命令(instruction)または命令コード(instruction code)とは, 機械語のプログラムの形で書かれるものであり, 制御部はこれを解釈して,制御コードの形にしてデータ処理部に与えるものとする。

さてここで,制御部から与えられる制御コードの形を示しておこう。 制御コードはいずれも23bit幅で,$ \phi _1$にも$ \phi _2$にも与えられる。 命令コードのビット幅の16bitが,制御コードのビット幅の23bitに対し, やや短くて済むのは,一種の符号化がなされているからである。 命令コードは制御部で解釈,つまりデコードされ,この23bit幅に変換される。

まず$ \phi _1$のタイミングで与えられるのは, ALUに関する演算命令に絡む制御コードであり, $ \phi _2$で実行される。 そのコードは図 9.9のような意味を持っている。

Figure 9.9: 演算命令に関する制御コード($ \phi _1$で与えられ$ \phi _2$で実行)
\begin{figure}\begin{displaymath}\begin{array}{\vert r\vert l\vert}
\hline
\te...
..._2\text{でリテラルへ移動} \\
\hline
\end{array}\end{displaymath}
\end{figure}

$ \phi _2$のタイミングで与えられるのは,データ処理部内のデータ移動命令に関する制御コードであり, $ \phi _1$のタイミングで移動が実行される。 そのコードは2種類あり,MSBが0か1かでコードの割り当てが変わる。

MSBが0の場合は,リテラルの絡まない通常の移動であり, 概要を図 9.10に示す。 レジスタ,I/Oポート,ALUレジスタ間の移動を行う。 移動には二つのバスを独立に利用できるので, Aバス,Bバスのそれぞれの通信元と通信先を5bitで指定することになる。 Bバス経由でALUのB入力レジスタを通信先とした場合には, シフト量を指定して,シフト結果を送ることも,シフト量を送ることもできるよう, 6bitとしている。

Figure 9.10: リテラルの関係しない移動命令に関する制御コード($ \phi _2$で与えられ$ \phi _1$で実行)
\begin{figure}\begin{displaymath}\begin{array}{\vert l\vert l\vert}
\hline
\te...
...5-0 &\text{Aバスの通信先} \\
\hline
\end{array}\end{displaymath}
\end{figure}

MSBが1の場合は,リテラルの絡む移動であり, 概要を図 9.11に示す。 Aバスを経由して,レジスタ,I/Oポート,ALUレジスタ, フラグレジスタのいずれかとリテラル間の移動を行う。 行き先としてALUのA入力レジスタを指定する場合には, 1bit左シフトしたデータを送ることもできる。

Figure 9.11: リテラルとの移動命令に関する制御コード($ \phi _2$で与えられ$ \phi _1$で実行)
\begin{figure}\begin{displaymath}\begin{array}{\vert l\vert l\vert}
\hline
\te...
...\text{上記レジスタの詳細} \\
\hline
\end{array}\end{displaymath}
\end{figure}


next up previous contents index
Next: 制御部 Up: データ処理部 Previous: 算術論理回路ALU   Contents   Index
Yoichi OKABE 2010-04-20