|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。
Tomasulo のアルゴリズムとは、1967 年にIBMのRobert Tomasuloによって考案されたコンピュータハードウェアのためのアルゴリズムで、連続した複数の命令が互いの依存関係が解けるまで実行できないような状況で、順序を入れ替えることにより実行できるようにする (アウト・オブ・オーダー実行)ためのものである。このアルゴリズムは、IBM System/360 Model 91 の浮動小数点演算ユニットで最初に実装された。 このアルゴリズムは レジスタ・リネーミングを用いるという点で、CDC 6600のScoreboardingとは異なる。Scoreboardingは、書き込み後の書き込み (WAW) と 読み込み後の書き込み (WAR) によるハザードを、命令の実行を一時停止させることで解決するが、レジスタリネーミングでは命令を連続して発行し続けることが可能である。また、Tomasuloのアルゴリズムは計算結果を必要するすべての Reservation Station に対してブロードキャストを行うcommon data bus (CDB) と呼ばれる仕組みを用いる。これによって、Scoreboardingを用いた場合には停止してしまうような命令列が、より多く並列実行可能になる。 Robert Tomasuloは、1997年このアルゴリズムによりエッカート・モークリー賞を受賞した。 ==実装に必要な考え方== 以下は、Tomasulo のアルゴリズムを実装する上で必要となる考え方である。 *命令列の及ぼす結果(例外の発生など)がパイプライン化されないプロセッサと同一であるよう、命令は順序どおりに発行される(ただし、実行は順序どおりではない)。 *全ての汎用レジスタおよび Reservation Station レジスタは、「実際の値(real value)」あるいは「仮想的な値(virtual value)」を格納する。命令の発行の過程で、演算結果を出力するレジスタが利用できない場合、最初は仮想的な値が用いられる。また実際の値を計算している機能ユニットは、仮想的な値として割り当てられ、機能ユニットが演算を完了すると、仮想レジスタの値が実際の値に変換される。 *機能ユニットはReservation Stationを複数のスロットで使用する。各スロットは、演算の種類や、演算対象のデータなど、一つの命令を実行するために必要な情報を保持する。機能ユニットは命令に必要な入力データが全て「実際の値」になると実行を開始する。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Tomasuloのアルゴリズム」の詳細全文を読む スポンサード リンク
|