WB(ダブリュービー)
英語表記: WB (Write Back)
概要
WB(ライトバック)は、CPUのパイプライン処理における、命令実行の成果を確定させるための最終段階の工程です。この段階の主な役割は、先行する実行ステージ(EX)やメモリアクセスステージ(MEM)で算出されたデータや読み出された情報を、CPU内部の高速な記憶領域であるレジスタファイルに書き戻すことです。これにより、命令の実行が完了し、その結果がCPUのアーキテクチャ状態として正式に確定し、後続の命令から利用可能になります。WBステージは、パイプラインの効率的な流れを完成させるために不可欠な「結果のコミット」を担当しています。
詳細解説
パイプラインにおけるWBの位置づけと目的
このWBステージは、「CPUの仕組み(命令セット, パイプライン) → パイプライン処理 → パイプライン段」という文脈において、命令がその役割を終える決定的な瞬間を提供します。一般的な5段パイプライン(IF, ID, EX, MEM, WB)において、WBは命令が実行される最終的なゲートウェイです。
パイプライン処理の最大の目標は、複数の命令を同時に並行して処理し、スループットを向上させることです。しかし、並行処理を行う上で最も重要な課題の一つが「結果の整合性」の維持です。例えば、命令Aが計算結果を出す前に、命令Bがその結果を使おうとしてしまうと、処理が破綻してしまいます。
WBステージの目的は、まさにこの整合性を保証することにあります。先行するEXステージで算術論理演算ユニット(ALU)が計算を終えた場合や、MEMステージでデータメモリから値が読み込まれた場合、その結果は一時的に保持されています。WBステージでは、この一時的な結果を、命令が指定したレジスタ番号へ正確に書き込みます。
処理の仕組みと重要性
WBステージの入力データは、主に以下の2種類です。
- ALUの結果(EXステージ由来): 加算、減算、論理演算などの結果です。
- メモリから読み出されたデータ(MEMステージ由来): ロード命令(Load Instruction)によって主記憶装置から取得されたデータです。
WBステージは、これらのデータを受け取り、どのレジスタに書き込むべきかを示す制御信号(通常はIDステージでデコードされたレジスタ番号)に従って、レジスタファイルにデータを書き込みます。
この「ライトバック」という行為は、命令が完了し、CPUのアーキテクチャ状態を永続的に変更したことを意味します。もし、何らかの理由(例えば割り込みや例外)で命令が途中で失敗した場合、このWBステージに到達する前にパイプラインがフラッシュ(破棄)されるため、不正なデータがレジスタに書き込まれることはありません。
WBステージが独立しているおかげで、CPUは実行結果を確定させる作業に専念でき、後続の命令は安心して次のサイクルでその結果を利用できます。これは、パイプライン処理の効率を最大限に高めるための、非常に洗練された設計だと言えるでしょう。
(文字数調整のため、さらに詳しく記述します。)
特に、パイプライン処理において発生しやすい「データハザード」を解決する手法の一つである「フォワーディング(またはバイパス)」は、WBステージで書き込まれる予定の結果を、まだWBに到達していない後続の命令のEXステージやMEMステージに直接供給することで実現されます。しかし、最終的にその結果を永続化し、すべての後続命令がアクセスできる状態にするのは、このWBステージの役割なのです。命令実行の「ゴールテープ」を切るのがWBステージだと考えると分かりやすいですね。
具体例・活用シーン
レストランの組み立てラインとしてのパイプライン
WBステージの役割を理解するために、CPUのパイプライン処理を「高級レストランの厨房における料理の組み立てライン」に例えてみましょう。この例は、初心者の方にもパイプライン段の働きが明確に伝わるかと思います。
| パイプライン段 | 厨房での役割 |
| :— | :— |
| IF (命令フェッチ) | お客様(利用者)からの注文(命令)を受け取る |
| ID (命令デコード) | 注文内容をレシピ(実行に必要な情報)に分解する |
| EX (実行) | 実際に調理(計算)を行う |
| MEM (メモリアクセス) | 冷蔵庫(主記憶)から材料(データ)を取り出す、または保管する |
| WB (ライトバック) | 完成した料理(計算結果)を、お客様のテーブル(レジスタ)に運んで提供する |
- 具体的なストーリー:
ある命令が「AとBを足して、結果をレジスタR1に保存せよ」という注文を出したとします。- IF, ID, EXステージを経て、EXステージで「A + B = 100」という計算結果が出ました。
- この「100」という結果は、まだ一時的なバケツに入っている状態です。
- MEMステージを経由した後、WBステージが担当します。WBステージは、この「100」という完成した料理を運びます。
- WBステージのウェイターは、注文書(制御信号)に従って、指定されたテーブル(レジスタR1)に「100」という料理を確実に置きます。
- この瞬間、レジスタR1の値は「100」に確定し、次にR1を使おうとする別の命令(お客様)は、この新しい値を利用できるようになるのです。
もしWBステージがなければ、料理は厨房の出口に放置され、お客様(後続命令)はいつその料理が使えるのか分からず、混乱が生じてしまいます。WBステージは、パイプライン処理全体が滞りなく、かつ正確に動作するための「結果の最終承認と引き渡し役」を担っているわけです。この確実な書き込み作業があるからこそ、CPUの仕組みは高速かつ安定して動作できるのですね。
資格試験向けチェックポイント
IT Passport試験や基本情報技術者試験、応用情報技術者試験において、「WB」はパイプライン処理の基礎知識として出題される可能性があります。「CPUの仕組み(命令セット, パイプライン) → パイプライン処理」の文脈で、以下の点をしっかり押さえておきましょう。
- 5段パイプラインの構成要素の暗記:
IF(命令フェッチ)、ID(命令デコード)、EX(実行)、MEM(メモリアクセス)、WB(ライトバック)の5つの段階とその略語を正確に覚えることが基本です。 - WBの機能の明確化:
WBステージの機能は「レジスタファイルへの結果の書き込み」であると明確に理解してください。特に、MEMステージ(データメモリとのやり取り)とWBステージ(レジスタファイルへの書き込み)の違いを問う選択肢問題が頻出します。 - 命令実行の終了点:
命令がCPUの状態を確定的に変更する最終段階である、という認識が重要です。例外処理や割り込み処理が発生した場合、WBに到達していない命令は破棄されるため、このステージは命令のコミットポイントとして機能します。 - パイプラインハザードとの関連:
直接WBの機能ではないものの、データハザード(特にRAWハザード:Read After Write)は、WBステージで書き込まれるべき結果を、後続の命令が待たずに読み込もうとすることで発生します。WBステージが結果を提供する側であることを意識しておくと、ハザード対策(フォワーディング)の理解が深まります。
関連用語
- 情報不足
(本来であれば、関連用語として「レジスタファイル (Register File)」「パイプラインハザード (Pipeline Hazard)」「フォワーディング (Forwarding)」「MEMステージ (Memory Access Stage)」などが挙げられますが、指定されたフォーマットに従い情報不足とします。)