CPUの性能発揮を阻害する「パイプラインストール」
前回に続き、今回もCPUのパイプライン処理について解説する。前回の最後では、「パイプライン段数を無闇に増やしても問題」という話をした。理由のひとつは消費電力だが、これはまた別の話になるので、今回はもうひとつの理由である「パイプラインストール」と「パイプラインハザード」の方を取り上げてみたい。
この2つは時々混同されることもあるが、基本的には別の要因で発生する問題であり、対応方法もちょっと異なる。まず前提として図1のようなケースを考えてみる。パイプライン段数は10段となっているため(昨今のx86プロセッサーから言えば短め)、例えば15個の命令を処理するのに要する時間は、合計24サイクルを要する計算だ。
まずパイプラインストールだが、これはパイプラインが「止まる」(Stall)することを示す。よくありがちなのは、Data Fetchだ。これは要するにデータを取り込む処理である。
- C=A+B
例えば、命令3が上の命令「AとBを加算して、Cに結果を入れる」を実行する場合、加算に先立ってAとBの値を確定しなければならない。この値の格納にはCPU内部のレジスターが割り当てられることが多く、この場合は遅れが出ない。通常なら、内部レジスターは1サイクルでアクセスできるためだ。
ところがレジスターの数は必ずしも多くないし、レジスターにすべてのデータが入っているとも限らない。どこかでメモリーにアクセスする必要がある。上の命令のケースでは、「Aはレジスターが使えるが、Bはメモリーから値を取得する必要がある」と想定しよう。するとどうなるか? というのが、次の図2である。
7クロック目までは、順調にパイプラインの各ステージが動作する。ところが、7クロック目のData Fetchステージ(図中の黄色部分)でメモリーアクセスが発生すると、パイプラインはそのデータをメモリーから読み込むまで、待機することになる。図1を見直してもらうとわかるが、パイプラインの場合は「あるステージが待機すると、それ以後のステージも全部待機せざるをえない」という欠点がある。そのため命令3以降の処理は全部、メモリーアクセスから帰ってくるまで待機することになる。

この連載の記事
-
第830回
デジタル
HPCからAI向けに用途を変えたInstinct MI350X/400X AMD GPUロードマップ -
第829回
デジタル
2026年にInstinct MI400シリーズを投入し、サーバー向けGPUのシェア拡大を狙うAMD AMD GPUロードマップ -
第828回
PC
TOP500の4位に躍り出たJUPITER Boosterは効率と性能/消費電力比が驚嘆に値する -
第827回
PC
オーディオとモデムを普及させるのに一役買ったAMRとACR 消え去ったI/F史 -
第826回
PC
PCIeリリース直前に登場しわずか1年の短命に終わったCSA 消え去ったI/F史 -
第825回
PC
バッファがあふれると性能が低下する爆弾を抱えるもライセンスが無料で広く普及したAGP 消え去ったI/F史 -
第824回
PC
AT互換機が普及するきっかけとなったPCIは、MCAの失敗から生まれた 消え去ったI/F史 -
第823回
PC
Intel 18AはIntel 3と比較して性能/消費電力比が15%向上 インテル CPUロードマップ -
第822回
PC
爆発的に普及したことが逆に寿命を縮める結果になったVL-Bus 消え去ったI/F史 -
第821回
PC
IBMのMCAバスに対抗してAT互換機メーカー9社が共同で開発したEISA 消え去ったI/F史 -
第820回
PC
LEDが半導体の救世主に? チップレット同士の接続を電気信号から光信号へ ISSCC 2025詳報 - この連載の一覧へ