レジスタ・リネーミング
プログラムは、何らかの値に何らかの操作をする命令が並んだものである。 命令がそれらの値を区別するために、それぞれの値に名前をつける。 たとえば、「X と Y を足して、結果を Z に置く」という命令では、X、Y、Zが格納場所の名前である。
命令をコンパクトにまとめるため、多くのプロセッサの命令セットでは直接名前を指定でき、かつ高速に読み書きできる特別な場所を少しだけ用意している。これをレジスタと呼ぶ。
たとえば、x86命令セットアーキテクチャでは8個の整数レジスタがあり、x86の64ビット版(AMD64)では16個、PowerPCや多くのRISCでは32個、そしてIA-64では128個用意している。 小さなプロセッサでは、これらの場所の名前は直接レジスタファイルの中の場所に対応している。
一方、命令の種類が違えば、その処理にかかる時間も異なる。 たとえばプロセッサはメモリからロードしようとしている間に何百という命令を実行できるかもしれない。 短い命令を時間のかかるロードを待っている間に行うと、命令がプログラムが本来指定している順番とは違った順番で進行していることになる。 このようなアウト・オブ・オーダー実行は性能向上のために最近の高性能CPUでよく行われている。