分岐命令で発生するパイプライン処理のやりなおし
パイプラインハザード
問題のもうひとつはパイプラインハザード(Pipeline Hazard)である。Hazardには「危険、偶然、運、障害」などの意味があるが、ここでの意味は「事故」が一番適切だろう。ではどんな事故か? というのは、図3のようなケースがわかりやすい。いわゆる「分岐命令」が登場するシーンで、ある値によって処理を分ける、なんてケースに必ず利用されるものだ。
図3の例では、命令5~7ではなく命令8~10を処理する方向に分岐すると仮定しよう。この場合のパイプラインの動作は図4のようになる。
パイプラインは命令1から順にどんどんFetchを行ないながら、順次処理してゆく。命令1~3については問題ない。ところが分岐処理をする命令4については、その分岐方向が確定するのはExecuteが終り、Writebackのステージに入ってからになる。サイクルで言えば12サイクル目でようやく、「命令4の後で命令8がこなければいけない」ことが確定するわけだ。
ところが、パイプラインはすでに命令5~7を順次処理している。そのため、13サイクル目にパイプラインフラッシュが発生する。つまりパイプラインを一度まっさらに戻すわけだ。その後、14サイクルから改めて、命令8以降のDecodeを開始する形になる。こうしてパイプライン処理のやり直しが発生するのが、パイプラインハザードである。
このパイプラインハザードもまた、一度起きると大幅に処理性能が落ちることになる。もしパイプラインハザードが一切起きずに処理できれば、命令1~命令13まで合計10命令だから(命令5~7は処理しないので)、理論上は19サイクルあれば処理が完了するはずだ。だが実際には28サイクルを要しているわけで、メモリーアクセスに起因するパイプラインストールほどの悪影響ではないものの、動作周波数が3割減ったのと同じ程度に性能が低下するわけだ。
特にこのパイプラインストールの場合、パイプラインが長くなるほど性能への悪影響が大きくなるという特徴があり、性能を引き上げるためにパイプライン段数を増やすと、むしろ性能が落ちかねない状況になっている。
この連載の記事
-
第769回
PC
HDDのコントローラーとI/Fを一体化して爆発的に普及したIDE 消え去ったI/F史 -
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 - この連載の一覧へ