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以降の処理は全部、メモリーアクセスから帰ってくるまで待機することになる。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第883回
PC
TSMCのA16プロセスの詳細が判明! 性能向上の主因はトランジスタではなく裏面電源供給(SPR)にあり? -
第882回
PC
IBMが0.7nmチップの製造に成功! 変態的CFET構造NanoStackの凄みと、あまりに高すぎる製造コストの壁 -
第881回
PC
同一周波数で消費電力18%削減! 進化した「Intel 18A-P」はどこが変わったのか? -
第880回
PC
次世代NVLinkの布石か? TSMCの光電融合技術「COUPE」がもたらすAIサーバーの光接続 -
第879回
PC
なぜAIには「光」が必要なのか? NVIDIAが解説するスケールアップネットワークの低遅延・省電力化戦略 -
第878回
PC
もはや銅配線は限界? 3200Gイーサネット実現に立ちはだかる200GT/秒の壁 -
第877回
PC
「不良品ゼロ」と「水冷NG」の狭間で。ルネサスが明かした車載チップレットSoCのリアル -
第876回
PC
このままではメモリーが燃える! HBM4/5世代に向けた電力供給の限界と、Samsungが示すパッケージ協調設計の解 -
第875回
PC
1000A超のAIプロセッサーをどう動かすか? Googleが実践する垂直給電(VPD)の最前線 -
第874回
PC
AIの未来は「電力」で決まる? 巨大GPUを支える裏面給電とパッケージ革命 -
第873回
PC
「銅配線はまだ重要か? 答えはYesだ」 NVIDIA CEOジェンスンが語った2028年ロードマップとNVLink 8の衝撃 - この連載の一覧へ











