レジスタ・リネーミング
読み込み後の書き込み
レジスタやメモリからの読み込みでは最後にその場所に書かれた内容が得られなければならず、プログラム上その読み込みより後の書き込みの内容が読み込まれたりしてはならない。このような偽の依存性はリネーミングで対処できる。
全ての読み込みが終わるまで書き込みを遅らせる代わりに、その場所に関してふたつのコピーを用意し、一方に古い値を格納し、もう一方に新しい値を格納する。(プログラム上の順番で)新しい値を書き込む前の読み込みは古い値を格納した方を使い、書き込み後の読み込みは新しい値を格納した方を使用する。偽の依存性はなくなり、アウト・オブ・オーダー実行がさらに効果的に行われるようになった。古い値を必要とする読み込みが全て実行し終えたら、そのコピーを捨てればよい。これがレジスタ・リネーミングの基本的な概念である。
読み書き可能なものは何でもリネーミング可能である。一般には汎用レジスタや浮動小数点レジスタが議論されるが、フラグやステータスレジスタ、さらに個別のステータスビットまでリネーミングが可能である。
メモリもリネーミングが可能であるが、レジスタ・リネーミングのように一般的に行われているわけではない。