レジスタリネーミング【register renaming】

概要

レジスタリネーミングとは、CPU内部で命令が使用するレジスタ名を別の物理レジスタに動的に割り当て直す仕組み。命令間の不要な依存関係を解消し、命令の並列実行や高速化を実現することができる。
レジスタリネーミングのイメージ画像

CPUプログラムを実行する際、命令列には同じレジスタを読み書きする箇所が頻繁に登場する。このとき、ある命令の書き込み先レジスタを後続の命令が参照している場合(RAW:Read After Write)は真のデータ依存であり順序を守る必要がある。

しかし、ある命令の書き込み後に後続の命令も書き込みしている場合(WAW:Write After Write)や、読み込み後に書き込みしている場合(WAR:Write After Read)については命令間でレジスタを介したデータのやり取りをしておらず、単に前後でレジスタ名が重複しているだけである。これを「偽依存」と呼び、レジスタリネーミングはこれを解消するための仕組みである。

具体的には、命令が指定する論理レジスタCPUアーキテクチャ上のレジスタ名)を、CPU内部に用意された多数の物理レジスタへと動的に対応づける。異なる命令が同じ論理レジスタ名を指名していても、それぞれ別の物理レジスタに割り当てることで依存関係がなくなり、順序を入れ替えて並列実行することが可能になる。この対応づけを管理するハードウェア構造は「RAT」(Register Alias Table)あるいは「レジスタマップ」(register map)と呼ばれる。

この技術は、「スーパースカラ」や「アウトオブオーダー実行」などの高速化技術を採用する多くの現代的なCPUで重要な役割を果たしている。内部では「リオーダバッファ」(ROB: Reorder Buffer)などの構造と組み合わせて実装され、プログラムの見かけ上の実行順序を保ちながら、CPU内部で効率的な並列処理を実現する。パソコンで主流のx86アーキテクチャプログラムから見えるレジスタ数が少ないため、レジスタリネーミングによる恩恵が特に大きいとされる。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。