話をアウトオブオーダーに戻す。アウトオブオーダーと一口で言っているが、実際には2種類ある。
- 命令発行のインオーダー/アウトオブオーダー
- 命令完了のインオーダー/アウトオブオーダー
アウトオブオーダー発行とは、スケジューラーで順序を入れ替えて命令を発行することを意味し、アウトオブオーダー完了とは、ALUなりLoad/Storeなりの出力が、本来の命令の並びと異なる順でRe-Order Bufferに入ることを意味する。
この組み合わせもいろいろある。インテルの「Pentium」やそれ以前のCPU、VIAなら「C7」あたりまでは、基本的にインオーダー発行/インオーダー完了である。一方、インテルの「Pentium Pro」やAMDの「K6」以降は、アウトオブオーダー発行/アウトオブオーダー完了である。
x86ではあまり見られないが、AMDの「Am29000」などは、インオーダー発行/アウトオブオーダー完了が一部で実装されていた。アウトオブオーダー発行/インオーダー完了のCPUは、さすがに見たことがない。これは実行ユニットの処理のレイテンシーに関係する部分だ。
これまでの例では、ALUやLoad/Storeの処理時間は、どの命令でも同じという前提で説明してきた。しかし実際には、命令によって処理時間が異なるのが一般的である。現在のx86プロセッサーでも命令によって、命令を受け取ってから処理が終わるまでの時間「レイテンシー」と、その命令を発効するための待ち時間「スループット」は異なる。レイテンシーが3クロックなら、その命令の処理に3クロックかかる。スループットが3クロックならば、3クロックごとにその命令を実行できるという意味になる。
図2は2つのALUが搭載された構成で、レイテンシが1~4クロックとばらばらな命令1~6を処理する場合を考えたものだ。まずスケジューラーの時点で、命令1~6は図左側のようなレイテンシをそれぞれ持つと仮定する。これをALU1とALU2に分散したのが中央だ。この例ではうまく2つのALUに命令を分散させたと仮定しているが※1、問題はその出力である。
※1 実際はALU内部もパイプライン化されているのが普通だから、こう単純にはならない。説明のために簡略化している。
各ALUからの出力は図2右側のように、まず処理時間の短い命令2の結果が出て、命令1と3が続く。その後は命令5、4と6が出るという具合に、順不同で結果が出てくる。アウトオブオーダー完了は、こうしたばらばらな順で処理を終わらせることを許す仕組み、と考えればいい。
この連載の記事
-
第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史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 - この連載の一覧へ