さて、前回の説明では「これらの結果がWritebackされる」といきなりまとめてしまったのだが、実際はもう少し複雑だ。演算の結果が本当にメモリーに格納されるのであれば、ここで書き戻しに入る。だが、上の例ではR1/R2/R4/R5といったレジスターに結果が格納され、しかもその値は次の命令で利用されることになるため、これをいちいちキャッシュに書き戻していては間に合わない。そこでレジスターへの書き戻しはRe-Order Bufferに対して行なう。
なぜこれがRe-Order Bufferと呼ばれるかというと、これも前回説明したRegister Renamingに関係している。前回の例では、表の左列を右列に変換して実行すると説明した。
変換前 | 変換後 | |
---|---|---|
命令1 | R1=Data1 | R101=Data1 |
命令2 | R2=Data2 | R102=Data2 |
命令3 | R3=R1+R2 | R3=R101+R102 |
命令4 | R1=Data3 | R103=Data3 |
命令5 | R2=Data4 | R104=Data4 |
命令6 | R4=R1+R2 | R4=R103+R104 |
実はこれも多少説明を端折っている。Register Renamingをきちんと行なうと、内部的には以下のように登録されるのが普通だ。
- 命令1 R101=Data1
- 命令2 R102=Data2
- 命令3 R103=Data3
- 命令4 R104=Data4
- 命令5 R3=R105+R106(=R101+R102)
- 命令6 R4=R107+R108(=R103+R104)
Re-Order Bufferでは、基本的にひとつの命令に対してひとつずつ、結果を格納する新規のエントリーが作られ、そこに結果が割り当てられる仕組みになる。そのため命令5と命令6は「命令1~4が完了するのを待つ」のではなく、「R105~R108が埋められて利用可能になるのを待つ」という形でスケジューラーで待機する。
一方で、命令1~4によりR101~R104が埋められると、これが命令5、6ではR105~R108に値が埋まったように見えるという仕組みだ。こんな感じで「レジスターの名前が変わる」ことから、Re-Order Bufferという名前になっている。
この連載の記事
-
第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史 -
第757回
PC
「RISC-VはArmに劣る」と主張し猛烈な批判にあうArm RISC-Vプロセッサー遍歴 - この連載の一覧へ