FE EXAM

制御装置(命令デコードと制御信号)

命令を解読して各装置に制御信号を送り出すCPUの司令塔

INTERACTIVE VISUALIZATION
制御装置
メモリ
レジスタ
ALU
命令
ADD 101
フェーズ
fetch
進捗
1 / 7
命令(シナリオ)
ステップ1 / 7
解読中の命令
ADD101オペコード / オペランド
STEP 1/7命令の取り出し制御装置はPC(プログラムカウンタ)が指す番地をメモリに伝え、命令「ADD 101」を取り出してIR(命令レジスタ=実行中の命令を入れる場所)に格納します。
命令読出要求制御装置司令塔メモリ主記憶レジスタPC/IR/ACCALU演算装置
解説

📌
制御装置とは

制御装置メモリレジスタALU制御信号

制御装置(Control Unit)とは、メモリから取り出した命令を解読し、CPU内外の各装置に「いつ・何をするか」を指示する制御信号を送り出すCPUの司令塔です。演算装置(ALU)やレジスタ、メモリは、すべてこの制御装置の指示に従って動きます。

身近な例で考えると、制御装置はオーケストラの指揮者です。指揮者自身は楽器を演奏しません(計算しません)が、楽譜(命令)を読み、各奏者(演算装置・レジスタ・メモリ)に「ここで入れ」「この音を出せ」とタイミングと内容を指示します。指揮者がいるからこそ、バラバラの楽器が1つの曲を奏でられるのです。

上のツールで命令を選んで▶ボタンを押すと、制御装置が命令をデコード(解読)し、メモリ・レジスタ・ALUへ順番に制御信号を送り出していく流れが1ステップずつ見られます。矢印の向きが「制御装置から各装置への指令」を表しています。

📌
命令デコードの仕組み

IR(命令レジスタ)ADD 101オペコードADDオペランド101命令デコーダが命令語を分解して意味を判別

デコード(decode=解読)とは、命令レジスタ(IR)に入った命令語を「何をする命令か」「どのデータに対してか」に分解して意味を判別する処理です。この役割を担うのが制御装置の中にある命令デコーダという回路です。

命令語は2つの部分に分かれています。
オペコード(命令部):操作の種類を表す(ADD=加算、LOAD=読込 など)
オペランド(番地部):操作の対象を表す(メモリの番地や値 など)
たとえば「ADD 101」なら、オペコード=ADD、オペランド=番地101 と解読され、「番地101の値をALUで加算せよ」という意味だと判明します。

デコードは計算そのものではない点が重要です。あくまで「次のステップで誰に何をさせるか」を決める段階で、実際の計算は次に制御信号を受け取ったALUが行います。「デコード=命令の解読」と「実行=ALUによる演算」は別の段階として切り分けて理解しましょう。

📌
各装置への指令の流れ

メモリへ読み出せレジスタへ値を出せALUへ加算せよ制御装置が順番に制御信号を送出正しい順序・タイミングで指令することで1命令が完了

デコードが終わると、制御装置は解読結果に従って各装置へ制御信号を順番に送り出します。たとえば「ADD 101」では、おおむね次の順序で指令が飛びます。
メモリへ:「番地101のデータを読み出せ」
レジスタへ:「ACCとMDRの値をALUへ渡せ」
ALUへ:「加算を実行せよ」
レジスタへ:「ALUの結果をACCに格納せよ」

ここで大切なのは順序とタイミングです。メモリからデータが届く前にALUに加算を命じても材料が揃いません。制御装置はクロック(一定間隔の信号)に合わせて、各装置が正しい順番で動くように指揮します。これは料理で「材料を切る→炒める→盛り付ける」の順番を守るのと同じで、順番を間違えると正しい結果になりません。

命令が完了すると、制御装置はPC(プログラムカウンタ)を+1して、再び次の命令の取り出しに戻ります。上のツールでLOADやSTOREも選んでみると、命令の種類によって指令を送る相手や順序が変わることが分かります。STOREでは演算装置を使わない、といった違いに注目してください。

📌
命令サイクル:フェッチ→デコード→実行の繰り返し

フェッチメモリから命令取得デコード命令を解読実行ALUで演算次の命令へ(繰り返し)

CPUは電源が入っている間、「フェッチ→デコード→実行」の3ステップを延々と繰り返します。この繰り返しを命令サイクル(インストラクションサイクル)と呼び、制御装置がすべての手順を仕切っています。
フェッチ(取り出し):PC(プログラムカウンタ=次の命令の番地を指すポインタ)が示すアドレスのメモリから命令を読み取り、IR(命令レジスタ=読み取った命令を一時保存する場所)に置く
デコード(解読):IRに入った命令を制御装置が解読し「何を・誰に・どの順でさせるか」を決める
実行(エグゼキュート):解読結果に従って各装置に制御信号を送り、ALUが計算・メモリが読み書きなどを行う

なぜこの3ステップを繰り返すのか。プログラムとは命令の集まりで、1命令ずつ順番に処理することで複雑な仕事を実現します。このサイクルを回す速さの指標がクロック周波数(=1秒間に何回サイクルできるかの目安)です。3GHzのCPUなら1秒間に約30億回このサイクルを繰り返しています。制御装置はこの高速サイクルの「指揮者」として、すべてのステップを正しく順番に動かし続けます。

📌
制御装置がなければどうなる?なぜ必要か

制御装置なし各装置がバラバラに動こうとする誰も正しく動けない制御装置あり正しい順序・タイミングで各装置に指令を出す命令が正確に実行されるvs制御装置は「順序とタイミング」を保証する

制御装置がなければ、ALUもメモリもレジスタも「いつ動けばよいか」がわかりません。ALUが計算しようとしてもデータがレジスタに届いていない、メモリが読み出し中なのにALUが結果を要求するといった「すれ違い」が起きてしまいます。

なぜ制御装置が必要なのか。それは「各装置が正しい順番で・正しいタイミングで」動く保証が必要だからです。制御装置が各装置に「今やれ」「次はお前の番」と指令を出すことで初めて、1つの命令が正しく完了します。

アナロジーで考えると、信号機のない交差点です。車(各装置)はそれぞれ進みたいのに、信号(制御装置)がなければいつ行けばいいかわからず、衝突(処理の矛盾)が起きます。制御装置は交差点の信号のように、各装置が「今動いてよい」タイミングを管理します。この役割があるからこそ、CPUは何億もの命令を正確に、矛盾なく処理し続けられるのです。

関連コンテンツ