前回プロセッサにおけるアウトオブオーダの考え方について(リネームレジスタの例外時の処理について) - FPGA開発日記の続き。引き続きプロセッサのアウトオブオーダの仕組みについてまとめていく。
リオーダバッファとは
リオーダバッファは、アウトオブオーダで発行され各種演算ユニットで処理された命令を、処理が完了した段階で回収し、最後に順番を命令順に揃えるユニットのことを言う。 つまり命令をインオーダ完了させるためのユニットというわけだ。
以下の例では、命令がID-AからID-Dまで順番に発行されていき、その際に命令のIDを順番にリオーダバッファに格納している。
この場合、命令がリオーダバッファに登録されると、以下のようになる。INFOの部分には、命令の種別情報や利用レジスタなどの情報が格納される。
その後命令は各種ユニットに渡り、処理されていくのだが、そのユニットの処理時間や依存関係によって、各命令で完了するタイミングがバラバラになる。 以下の図ではUnit-1、Unit-2、Unit-3が存在し、それぞれレイテンシが異なるために命令の完了時間が異なる。
例えば最初にID-Cの命令が完了したとしても、それより前の命令であるID-A,ID-Bの命令が完了していないため、ID-Cの命令はリオーダバッファに存在したままである。 ここでは、リオーダバッファの先頭のポインタをHEAD、リオーダバッファの後方のポインタはTAILとした。
リオーダバッファは格納順にしか処理されないFIFOなので、ID-A、ID-Bが処理完了してコミットレディになると、ようやくID-Cもコミットとなる。これにより、命令のインオーダ完了が保たれる。
一方で、例えばID-Bが例外を発生させたとすると、ID-Cのリオーダバッファは破棄される。
参考文献
- コンピュータアーキテクチャ 定量的アプローチ
ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版
- 作者: ジョン・L・ヘネシー,デイビッド・A・パターソン
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
コンピュータアーキテクチャのもっとも有名な本。自作プロセッサを開発するならば、シングルスレッドの高速化の章はマスターしておきたい。 メモリ階層についての知識も、基礎的な内容を理解するのに丁度よい。
- スーパスカラ マイクロプロセッサ
- 作者: マイクジョンソン
- 出版社/メーカー: 日経BP社
- 発売日: 1994/08/16
- メディア: 単行本
- この商品を含むブログ (2件) を見る
こちらもマスターしておきたい。絶版になってしまったが、古本で売られていた時にとっさに購入した。スーパスカラプロセッサに焦点を当てた高速化の技術について全般的に紹介している。 この本を読むと、サイクル精度の命令セットシミュレータによる性能評価がいかに大切かということとが分かる。
- 高性能コンピュータ技術の基礎
- 作者: Hisa Ando
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2011/06/24
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 260回
- この商品を含むブログ (5件) を見る
こちらも分かりやすい。しっかり書いてあるし、図も比較的多め。しっかり読むと基礎的な部分はカバーできる。
- Understanding the detailed Architecture of AMD's 64 bit Core
Chip Architect: Detailed Architecture of AMD's Opteron
こちらも実プロセッサをベースにアウトオブオーダの処理について書かれているので、一読することをお勧め。