JP2004318437A - 中間レジスタ・タグを使用するプロセッサ - Google Patents
中間レジスタ・タグを使用するプロセッサ Download PDFInfo
- Publication number
- JP2004318437A JP2004318437A JP2003110768A JP2003110768A JP2004318437A JP 2004318437 A JP2004318437 A JP 2004318437A JP 2003110768 A JP2003110768 A JP 2003110768A JP 2003110768 A JP2003110768 A JP 2003110768A JP 2004318437 A JP2004318437 A JP 2004318437A
- Authority
- JP
- Japan
- Prior art keywords
- register
- tag
- instruction
- physical
- unused
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 239000000872 buffer Substances 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】命令を並行して実行するプロセッサにおいて、該当命令の指示する論理レジスタに対して、物理レジスタを割り当てる場合、従来より少ない物理レジスタでもプロセッサが効率を落とさず動作するようにする。
【解決手段】中間レジスタ・タグを使用し、書き込み結果が特定の値になった書き込み命令について、割り当てた物理レジスタを、命令完了を待たずに解放する仕組みとする。
【選択図】 図1
【解決手段】中間レジスタ・タグを使用し、書き込み結果が特定の値になった書き込み命令について、割り当てた物理レジスタを、命令完了を待たずに解放する仕組みとする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、ス−パ−スカラプロセッサに関し、より特定的には、論理レジスタへの書き込み命令を実行する時に、該当論理レジスタに対して未使用の物理レジスタを割り当てることに関するものである。
【0002】
【従来の技術】
従来、同一レジスタへの読み書きを伴う複数の命令を、同時に、もしくは順序を入れ替えて実行するプロセッサ(所謂、ス−パ−スカラプロセッサ)では、プログラムの順序通りに命令を発行し(イン・オ−ダ発行)、発行されたと同じ順序で結果が書き込まれる(イン・オ−ダ完了)保証はなく、アウト・オブ・オ−ダ発行、アウト・オブ・オ−ダ完了になることが発生する。
【0003】
この場合には、命令の対象となるハードウェア資源として、割り当てたレジスタに競合関係が生じ、プログラムの順序通りに命令が実行された結果の値を、後続命令が使用しなければならない「出力依存関係」や、先行命令が使う値を後続命令が破壊しないようにする「逆依存関係」に対応するための方策が必要となる。
【0004】
この逆依存関係と出力依存関係は、レジスタを含む同じメモリのアドレスを再利用することから生ずるものであるので、メモリ競合と呼ぶのが適切であるが、この対応としては、付加的なレジスタを設け、レジスタと値との間の対応関係を再構築することによりメモリ競合を除去できる。
上記のことは、ス−パ−スカラプロセッサに関する一般的概念の説明であるが、詳細は先行技術文献に挙げた、非特許文献1に記述されており、また、ス−パ−スカラプロセッサの概念に関する説明として、特許文献1及び2においても、非特許文献1が参照されている。
【0005】
さて、メモリ競合を除去する方法の一つとして、プログラム中で指定される論理レジスタに、物理レジスタを割り当てることが多い。この場合、論理レジスタへの書き込み命令を解釈した時に、該当論理レジスタに別の物理レジスタを割り当てることが行われる。このことにより、発行された命令がアウト・オブ・オ−ダ完了になり、レジスタ読み出し、書き込みの順序が変わっても、そのことによる不正な値の参照を防止できる。
【0006】
更に、上記の競合関係や依存関係にある命令を、実行可能か否かによらずに命令デコ−ドを続けられるよう、実行ステ−ジとデコ−ドステ−ジを分離し、この実行ステ−ジとデコ−ドステ−ジとの間に命令ウィンドウと呼ぶバッファが設けられる。プロセッサは命令をデコ−ドし、命令ウィンドウに空きがある限り、命令を命令ウィンドウに入れる。と同時に、命令ウィンドウの中から資源競合や依存関係のない、実行可能な命令を探す。つまり、命令ウィンドウは命令を貯めておく場所であり、元のプログラムの順序とは殆ど無関係に、アウト・オブ・オ−ダに、命令ウィンドウから命令が発行されることになる。
【0007】
このように、命令ウィンドウからアウト・オブ・オ−ダに発行された命令に、該当論理レジスタに別の物理レジスタを割り当てる方法として、図2に従来の仕組みでの、命令処理装置における各種レジスタ類の構成を示す。
図2の命令処理装置の構成において、命令デコ−ダによる命令のデコ−ド結果により、割当要求と論理レジスタアドレスの指示が論理レジスタ・マップになされる。論理レジスタ・マップは、対応づけた物理レジスタアドレスを保持するマップであり、論理レジスタに対応する物理レジスタへ出力選択を指示し、該当物理レジスタのデ−タを出力するものである。未使用物理レジスタ・リストは、命令デコ−ダからの割り当て要求に備えて、使用していない物理レジスタのアドレスをFIFOのバッファとして保持するものである。
【0008】
命令デコーダが割当要求信号を出すと、未使用物理レジスタ・リストは割当てる物理レジスタのアドレスを論理レジスタ・マップと命令ウィンドウに通知する。論理レジスタ・マップは命令デコーダが指定したアドレスに、未使用物理レジスタ・リストから入力した物理レジスタ・アドレスを格納し、以前に格納していた物理レジスタ・アドレスを更新元物理レジスタ・アドレスとして、命令ウィンドウに出力する。命令ウィンドウは更新元物理レジスタ・アドレスを命令と関連付けて保存する。命令デコーダが読み出し要求を出した場合、論理レジスタマップは読み出す物理レジスタのアドレスを出力し、物理レジスタ・ファイルがそのレジスタの値を命令ウィンドウに出力する。
【0009】
命令が完了すると、命令ウィンドウはその命令に関連付けられた更新元物理レジスタ・アドレスを、解放物理レジスタ・アドレスとして出力し、解放物理レジスタ・アドレスは未使用物理レジスタ・リストのFIFOバッファ−の末尾に登録される。
また、命令実行中は命令ウィンドウにレジスタ割当操作のリストを残しておき、命令が命令ウィンドウから掃きだされるとき、すなわち命令完了時にレジスタ割当操作情報をレジスタ確定状態(in−order state)に反映させる。このことにより、レジスタ確定状態の更新を停止させることを行うだけで、プログラム実行の中断が可能になり、プログラム実行を容易に中断させる一つの方法となる。
【0010】
なお、図中には示していないが、命令デコーダは命令ウィンドウや未使用物理レジスタ・リスト、各機構の空きポートなどの計算資源を監視し、処理可能な場合にのみレジスタ割当や読出の要求を出す。
上記のように従来は、レジスタ確定状態と実行中の書き込み命令の全てに物理レジスタを割り当てることになり、この場合には、論理レジスタ数より多く、論理レジスタ数と命令ウィンドウ幅の和以下の物理レジスタ数が必要であった。
【0011】
【特許文献1】
特開平7−334364号公報(第7−14頁)
【0012】
【特許文献2】
特開平8−504977号公報(第11頁)
【0013】
【非特許文献1】
マイク・ジョンソン(Mike Johnson)“ス−パ−スカラプロセッサ設計”(Superscalar microprocessorDesign):1991、プレンティスホ−ル(Prentice−Hall,Inc.)
【0014】
【発明が解決しようとする課題】
多数の論理レジスタを備え、多数の命令を同時に実行し、さらに複数のスレッド、実行パスを処理する高機能なプロセッサでは、多数のポートを備えた多数の物理レジスタが必要になる。しかし、多ポート、多エントリのレジスタは複雑で大規模な回路になるため高クロック動作が難しくなる問題を抱えていた。そこで本発明は、書き込み結果が特定の値になった書き込み命令について、割り当てた物理レジスタを、命令完了を待たずに解放する仕組みを提供することにより、従来より少ない物理レジスタでもプロセッサが効率を落とさず動作できるようにすることを目的とする。
【0015】
【課題を解決するための手段】
本発明によるプロセッサの原理図を、図1に示す。本発明では図1に示すように、物理レジスタ・ファイル4、物理レジスタを指すレジスタ中間レジスタ・タグ・テーブル8、未使用物理レジスタ・リスト6、中間レジスタ・タグを指す論理レジスタ・マップ5、中間レジスタ用の未使用タグ・リスト7で構成され、これらの構成に対応させた命令デコーダ1と命令ウィンドウ2、演算器3に接続する。
【0016】
本発明では、命令の流れに含まれる命令をデコ−ドし、論理レジスタへの書き込み命令を実行するときに、該当する論理レジスタに対して、未使用の物理レジスタを割り当てるプロセッサであって、未使用タグ・リストと未使用物理レジスタ・リストと物理レジスタ・ファイルを有し、前記、未使用タグ・リストと未使用物理レジスタ・リストの空きエントリを確認して、割当要求信号と論理レジスタ・アドレスを出力する命令デコーダと、命令デコーダからの論理レジスタ・アドレスと割当要求とタグ・アドレスを受けて中間レジスタ・タグ・テ−ブルに対してタグ・アドレスを出力すると共に保持する論理レジスタ・マップと、中間レジスタ・タグ・テ−ブルの未使用エントリ情報を管理し出力する未使用タグ・リストと、 演算結果が特定の値になったかの判定結果を、命令ウィンドウと物理レジスタファイルに出力する演算器と、中間レジスタ・タグ・テ−ブルからの物理レジスタアドレス出力選択を受けた物理レジスタ・ ファイルからのレジスタの値もしくは特定の値の出力を受けて、命令完了前に中間レジスタ・タグを操作して、物理レジスタを解放する、命令ウィンドウと、から構成されるプロセッサとする。
【0017】
中間レジスタ・タグ・テーブルはタグ・アドレスをキーとするテーブルで、各エントリは物理レジスタ・アドレスと出力選択を保持すると共に、論理レジスタ・マップ、未使用タグ・リストからタグ・アドレスを、未使用物理レジスタ・リストから物理レジスタ・アドレスを、命令デコーダから割当要求信号を、命令ウィンドウから出力変更信号を入力し、物理レジスタ・アドレス、出力選択信号及び解放物理レジスタ・アドレスを出力する。
【0018】
未使用タグ・リストは中間レジスタ・タグ・アドレスを保持するFIFOのバッファであり、命令ウィンドウから解放タグ・アドレスを、命令デコーダから割当要求信号を入力し、タグ・アドレスを出力する。
論理レジスタ・マップは論理レジスタ・アドレスをキーとするテーブルで、各エントリは中間レジスタ・タグ・アドレスを格納しており、論理レジスタ・マップは未使用タグ・リストからタグ・アドレスを受け、更新元タグ・アドレスを出力し、命令デコーダから論理レジスタ・アドレスと割当要求信号の入力を受け、タグ・アドレスを出力する。
【0019】
命令ウィンドウは従来構成に比べ、新たに未使用タグ・リストからタグ・アドレスを、演算器から結果判定信号の入力を受け、新たに解放タグ・アドレスを出力する。演算器は従来構成に比べ、新たに結果判定信号を出力する。命令デコーダは従来構成に比べ、新たに未使用タグ・リスト、中間レジスタ・タグ・テーブルの計算資源監視を行う。物理レジスタ・ファイルは従来構成に比べ、新たに出力選択を入力し、出力選択で指示された場合は特定の値を出力する。
【0020】
また、請求項3では、命令ウィンドウが物理レジスタを解放した後でも、中間レジスタ・タグ・テーブルは、物理レジスタが持っていた特定の値の情報を保持し、その値を出力可能にするプロセッサとする。
【0021】
【発明の実施の形態】
以下に、図1により、各段階での詳細動作説明を行う。
(1)物理レジスタ割当時の動作
命令デコーダが割当要求信号を出力すると、論理レジスタ・マップは命令デコーダが指定する論理レジスタ・アドレスに、未使用タグ・リストが出力しているタグ・アドレスを格納する。その際、格納前の値を更新元タグ・レジスタとして次のサイクルで出力する。中間レジスタ・タグ・テーブルは未使用タグ・リストが出力しているタグ・アドレスに、未使用物理レジスタ・リストが出力している物理レジスタ・アドレスを格納し、そのエントリの出力選択を初期化する。命令ウィンドウは未使用タグ・リストが出力しているタグ・アドレス、未使用物理レジスタ・リストが出力している物理レジスタ・アドレス、論理レジスタ・マップが次のサイクルで出力する更新元タグ・アドレスを、命令デコーダが出力する命令情報に関連付けて格納する。また、未使用タグ・リストと未使用物理レジスタ・リストは、出力したアドレスの入ったエントリを削除する。
(2)レジスタ読出し時の動作
命令デコーダが論理レジスタアドレスを指定すると、論理レジスタ・マップは次のサイクルでタグ・アドレスを出力する。中間レジスタ・タグ・テーブルはこれを入力し、さらに次のサイクルで指定されたタグ・アドレスに格納している物理レジスタ・アドレス、出力選択信号を出力する。物理レジスタ・ファイルは出力選択信号が初期値ならば物理レジスタ・アドレスで指定されたレジスタの値を出力し、出力選択信号が特定の値を指定していれば、その値を出力する。
(3)演算終了時の動作
演算器が計算を終えると、演算器は結果と格納すべき物理レジスタ・アドレスを物理レジスタ・ファイルに出力するとともに、結果が特定の値になっていた場合は結果判定信号を命令ウィンドウに出力する。命令ウィンドウは結果判定信号が入されると、中間レジスタ・タグ・テーブルに出力変更信号を出力する。中間レジスタ・タグ・テーブルは指定されたタグの出力選択を指定の値に変更し、タグに割当てていた物理レジスタ・アドレスを解放物理レジスタ・アドレスとして出力する。解放物理レジスタ・アドレスは未使用物理レジスタ・リストの末尾に登録される。
(4)命令完了時の動作
命令が完了すると、命令ウィンドウは格納してある更新元タグ・アドレスを解放タグ・アドレスとして出力する。未使用タグ・リストは解放タグ・アドレスをFIFOバッファに保存する。また、中間レジスタ・タグ・テーブルは指定されたタグのエントリを解放する。この際、割り当てられた物理レジスタが出力変更されていなければ、そのアドレスを解放物理レジスタ・アドレスとして出力する。解放物理レジスタ・アドレスは未使用物理レジスタ・リストの末尾に登録される。
【0022】
本発明の詳細動作は上記に述べた通りであるが、以下に、図3に従い、一実施例の説明を行う。本実施例では、63本の64ビットレジスタと96エントリの命令ウィンドウを持ち、4つのスレッドを同時に実行するプロセッサ上の実施とし、各機構のエントリ数、データ幅を模式的に表している。物理レジスタは64ビットで256本とし、中間レジスタ・タグ・テーブルは348エントリ、未使用タグ・リストは9ビット348エントリ、未使用物理レジスタ・リストは8ビット256エントリとする。中間レジスタ・タグ・テーブルのエントリは3ビットの出力選択と8ビットの物理レジスタ・アドレスで構成される。出力選択信号が、000,001,010,011,110,111の場合はそれぞれレジスタの値が2の補数で0,1,2,3,−2,−1であることを示し、出力選択が100の場合はまだ演算結果がでていないことを示す。出力選択が101の場合、物理レジスタに値が格納されている。なお、出力選択の初期値を100とする。
【0023】
従来方式のプロセッサでは、確定状態が〔スレッドあたりの論理レジスタ数〕×〔同時実行スレッド数〕の物理レジスタを保持し、さらに命令ウィンドウ上の命令が命令ウィンドウのエントリ数の物理レジスタを保持する。これらの合計に命令完了から物理レジスタ解放、再利用までの遅延を隠蔽するための余裕を加えた数が、従来方式で必要になる物理レジスタ数である。これに対して、本発明のレジスタ装置では、確定状態、命令ウィンドウ上を問わず、特定の値を持つ物理レジスタを解放する。このため、最悪の場合でも動作するために必要な〔(スレッドあたりの論理レジスタ数)×(同時実行スレッド数)+1〕以上の物理レジスタがあれば、特定の値を持つ物理レジスタの解放によって命令ウィンドウ上の命令に割り当てる物理レジスタや、性能上の問題で追加が必要な余分の物理レジスタが供給されることを期待できる。
【0024】
【発明の効果】
従来方式に比べて、物理レジスタ・ファイルの規模を小さくすることができるため、より高速に動作する回路の設計が可能になる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】従来技術の原理説明図
【図3】各機構のエントリ数、データ幅を模式的に表した一実施例
【符号の説明】
1 命令デコーダ
2 命令ウィンドウ
3 演算器
4 物理レジスタ・ファイル
5 論理レジスタ・マップ
6 未使用物理レジスタ・リスト
7 未使用タグ・リスト
8 中間レジスタ・タグ・テーブル
【発明の属する技術分野】
本発明は、ス−パ−スカラプロセッサに関し、より特定的には、論理レジスタへの書き込み命令を実行する時に、該当論理レジスタに対して未使用の物理レジスタを割り当てることに関するものである。
【0002】
【従来の技術】
従来、同一レジスタへの読み書きを伴う複数の命令を、同時に、もしくは順序を入れ替えて実行するプロセッサ(所謂、ス−パ−スカラプロセッサ)では、プログラムの順序通りに命令を発行し(イン・オ−ダ発行)、発行されたと同じ順序で結果が書き込まれる(イン・オ−ダ完了)保証はなく、アウト・オブ・オ−ダ発行、アウト・オブ・オ−ダ完了になることが発生する。
【0003】
この場合には、命令の対象となるハードウェア資源として、割り当てたレジスタに競合関係が生じ、プログラムの順序通りに命令が実行された結果の値を、後続命令が使用しなければならない「出力依存関係」や、先行命令が使う値を後続命令が破壊しないようにする「逆依存関係」に対応するための方策が必要となる。
【0004】
この逆依存関係と出力依存関係は、レジスタを含む同じメモリのアドレスを再利用することから生ずるものであるので、メモリ競合と呼ぶのが適切であるが、この対応としては、付加的なレジスタを設け、レジスタと値との間の対応関係を再構築することによりメモリ競合を除去できる。
上記のことは、ス−パ−スカラプロセッサに関する一般的概念の説明であるが、詳細は先行技術文献に挙げた、非特許文献1に記述されており、また、ス−パ−スカラプロセッサの概念に関する説明として、特許文献1及び2においても、非特許文献1が参照されている。
【0005】
さて、メモリ競合を除去する方法の一つとして、プログラム中で指定される論理レジスタに、物理レジスタを割り当てることが多い。この場合、論理レジスタへの書き込み命令を解釈した時に、該当論理レジスタに別の物理レジスタを割り当てることが行われる。このことにより、発行された命令がアウト・オブ・オ−ダ完了になり、レジスタ読み出し、書き込みの順序が変わっても、そのことによる不正な値の参照を防止できる。
【0006】
更に、上記の競合関係や依存関係にある命令を、実行可能か否かによらずに命令デコ−ドを続けられるよう、実行ステ−ジとデコ−ドステ−ジを分離し、この実行ステ−ジとデコ−ドステ−ジとの間に命令ウィンドウと呼ぶバッファが設けられる。プロセッサは命令をデコ−ドし、命令ウィンドウに空きがある限り、命令を命令ウィンドウに入れる。と同時に、命令ウィンドウの中から資源競合や依存関係のない、実行可能な命令を探す。つまり、命令ウィンドウは命令を貯めておく場所であり、元のプログラムの順序とは殆ど無関係に、アウト・オブ・オ−ダに、命令ウィンドウから命令が発行されることになる。
【0007】
このように、命令ウィンドウからアウト・オブ・オ−ダに発行された命令に、該当論理レジスタに別の物理レジスタを割り当てる方法として、図2に従来の仕組みでの、命令処理装置における各種レジスタ類の構成を示す。
図2の命令処理装置の構成において、命令デコ−ダによる命令のデコ−ド結果により、割当要求と論理レジスタアドレスの指示が論理レジスタ・マップになされる。論理レジスタ・マップは、対応づけた物理レジスタアドレスを保持するマップであり、論理レジスタに対応する物理レジスタへ出力選択を指示し、該当物理レジスタのデ−タを出力するものである。未使用物理レジスタ・リストは、命令デコ−ダからの割り当て要求に備えて、使用していない物理レジスタのアドレスをFIFOのバッファとして保持するものである。
【0008】
命令デコーダが割当要求信号を出すと、未使用物理レジスタ・リストは割当てる物理レジスタのアドレスを論理レジスタ・マップと命令ウィンドウに通知する。論理レジスタ・マップは命令デコーダが指定したアドレスに、未使用物理レジスタ・リストから入力した物理レジスタ・アドレスを格納し、以前に格納していた物理レジスタ・アドレスを更新元物理レジスタ・アドレスとして、命令ウィンドウに出力する。命令ウィンドウは更新元物理レジスタ・アドレスを命令と関連付けて保存する。命令デコーダが読み出し要求を出した場合、論理レジスタマップは読み出す物理レジスタのアドレスを出力し、物理レジスタ・ファイルがそのレジスタの値を命令ウィンドウに出力する。
【0009】
命令が完了すると、命令ウィンドウはその命令に関連付けられた更新元物理レジスタ・アドレスを、解放物理レジスタ・アドレスとして出力し、解放物理レジスタ・アドレスは未使用物理レジスタ・リストのFIFOバッファ−の末尾に登録される。
また、命令実行中は命令ウィンドウにレジスタ割当操作のリストを残しておき、命令が命令ウィンドウから掃きだされるとき、すなわち命令完了時にレジスタ割当操作情報をレジスタ確定状態(in−order state)に反映させる。このことにより、レジスタ確定状態の更新を停止させることを行うだけで、プログラム実行の中断が可能になり、プログラム実行を容易に中断させる一つの方法となる。
【0010】
なお、図中には示していないが、命令デコーダは命令ウィンドウや未使用物理レジスタ・リスト、各機構の空きポートなどの計算資源を監視し、処理可能な場合にのみレジスタ割当や読出の要求を出す。
上記のように従来は、レジスタ確定状態と実行中の書き込み命令の全てに物理レジスタを割り当てることになり、この場合には、論理レジスタ数より多く、論理レジスタ数と命令ウィンドウ幅の和以下の物理レジスタ数が必要であった。
【0011】
【特許文献1】
特開平7−334364号公報(第7−14頁)
【0012】
【特許文献2】
特開平8−504977号公報(第11頁)
【0013】
【非特許文献1】
マイク・ジョンソン(Mike Johnson)“ス−パ−スカラプロセッサ設計”(Superscalar microprocessorDesign):1991、プレンティスホ−ル(Prentice−Hall,Inc.)
【0014】
【発明が解決しようとする課題】
多数の論理レジスタを備え、多数の命令を同時に実行し、さらに複数のスレッド、実行パスを処理する高機能なプロセッサでは、多数のポートを備えた多数の物理レジスタが必要になる。しかし、多ポート、多エントリのレジスタは複雑で大規模な回路になるため高クロック動作が難しくなる問題を抱えていた。そこで本発明は、書き込み結果が特定の値になった書き込み命令について、割り当てた物理レジスタを、命令完了を待たずに解放する仕組みを提供することにより、従来より少ない物理レジスタでもプロセッサが効率を落とさず動作できるようにすることを目的とする。
【0015】
【課題を解決するための手段】
本発明によるプロセッサの原理図を、図1に示す。本発明では図1に示すように、物理レジスタ・ファイル4、物理レジスタを指すレジスタ中間レジスタ・タグ・テーブル8、未使用物理レジスタ・リスト6、中間レジスタ・タグを指す論理レジスタ・マップ5、中間レジスタ用の未使用タグ・リスト7で構成され、これらの構成に対応させた命令デコーダ1と命令ウィンドウ2、演算器3に接続する。
【0016】
本発明では、命令の流れに含まれる命令をデコ−ドし、論理レジスタへの書き込み命令を実行するときに、該当する論理レジスタに対して、未使用の物理レジスタを割り当てるプロセッサであって、未使用タグ・リストと未使用物理レジスタ・リストと物理レジスタ・ファイルを有し、前記、未使用タグ・リストと未使用物理レジスタ・リストの空きエントリを確認して、割当要求信号と論理レジスタ・アドレスを出力する命令デコーダと、命令デコーダからの論理レジスタ・アドレスと割当要求とタグ・アドレスを受けて中間レジスタ・タグ・テ−ブルに対してタグ・アドレスを出力すると共に保持する論理レジスタ・マップと、中間レジスタ・タグ・テ−ブルの未使用エントリ情報を管理し出力する未使用タグ・リストと、 演算結果が特定の値になったかの判定結果を、命令ウィンドウと物理レジスタファイルに出力する演算器と、中間レジスタ・タグ・テ−ブルからの物理レジスタアドレス出力選択を受けた物理レジスタ・ ファイルからのレジスタの値もしくは特定の値の出力を受けて、命令完了前に中間レジスタ・タグを操作して、物理レジスタを解放する、命令ウィンドウと、から構成されるプロセッサとする。
【0017】
中間レジスタ・タグ・テーブルはタグ・アドレスをキーとするテーブルで、各エントリは物理レジスタ・アドレスと出力選択を保持すると共に、論理レジスタ・マップ、未使用タグ・リストからタグ・アドレスを、未使用物理レジスタ・リストから物理レジスタ・アドレスを、命令デコーダから割当要求信号を、命令ウィンドウから出力変更信号を入力し、物理レジスタ・アドレス、出力選択信号及び解放物理レジスタ・アドレスを出力する。
【0018】
未使用タグ・リストは中間レジスタ・タグ・アドレスを保持するFIFOのバッファであり、命令ウィンドウから解放タグ・アドレスを、命令デコーダから割当要求信号を入力し、タグ・アドレスを出力する。
論理レジスタ・マップは論理レジスタ・アドレスをキーとするテーブルで、各エントリは中間レジスタ・タグ・アドレスを格納しており、論理レジスタ・マップは未使用タグ・リストからタグ・アドレスを受け、更新元タグ・アドレスを出力し、命令デコーダから論理レジスタ・アドレスと割当要求信号の入力を受け、タグ・アドレスを出力する。
【0019】
命令ウィンドウは従来構成に比べ、新たに未使用タグ・リストからタグ・アドレスを、演算器から結果判定信号の入力を受け、新たに解放タグ・アドレスを出力する。演算器は従来構成に比べ、新たに結果判定信号を出力する。命令デコーダは従来構成に比べ、新たに未使用タグ・リスト、中間レジスタ・タグ・テーブルの計算資源監視を行う。物理レジスタ・ファイルは従来構成に比べ、新たに出力選択を入力し、出力選択で指示された場合は特定の値を出力する。
【0020】
また、請求項3では、命令ウィンドウが物理レジスタを解放した後でも、中間レジスタ・タグ・テーブルは、物理レジスタが持っていた特定の値の情報を保持し、その値を出力可能にするプロセッサとする。
【0021】
【発明の実施の形態】
以下に、図1により、各段階での詳細動作説明を行う。
(1)物理レジスタ割当時の動作
命令デコーダが割当要求信号を出力すると、論理レジスタ・マップは命令デコーダが指定する論理レジスタ・アドレスに、未使用タグ・リストが出力しているタグ・アドレスを格納する。その際、格納前の値を更新元タグ・レジスタとして次のサイクルで出力する。中間レジスタ・タグ・テーブルは未使用タグ・リストが出力しているタグ・アドレスに、未使用物理レジスタ・リストが出力している物理レジスタ・アドレスを格納し、そのエントリの出力選択を初期化する。命令ウィンドウは未使用タグ・リストが出力しているタグ・アドレス、未使用物理レジスタ・リストが出力している物理レジスタ・アドレス、論理レジスタ・マップが次のサイクルで出力する更新元タグ・アドレスを、命令デコーダが出力する命令情報に関連付けて格納する。また、未使用タグ・リストと未使用物理レジスタ・リストは、出力したアドレスの入ったエントリを削除する。
(2)レジスタ読出し時の動作
命令デコーダが論理レジスタアドレスを指定すると、論理レジスタ・マップは次のサイクルでタグ・アドレスを出力する。中間レジスタ・タグ・テーブルはこれを入力し、さらに次のサイクルで指定されたタグ・アドレスに格納している物理レジスタ・アドレス、出力選択信号を出力する。物理レジスタ・ファイルは出力選択信号が初期値ならば物理レジスタ・アドレスで指定されたレジスタの値を出力し、出力選択信号が特定の値を指定していれば、その値を出力する。
(3)演算終了時の動作
演算器が計算を終えると、演算器は結果と格納すべき物理レジスタ・アドレスを物理レジスタ・ファイルに出力するとともに、結果が特定の値になっていた場合は結果判定信号を命令ウィンドウに出力する。命令ウィンドウは結果判定信号が入されると、中間レジスタ・タグ・テーブルに出力変更信号を出力する。中間レジスタ・タグ・テーブルは指定されたタグの出力選択を指定の値に変更し、タグに割当てていた物理レジスタ・アドレスを解放物理レジスタ・アドレスとして出力する。解放物理レジスタ・アドレスは未使用物理レジスタ・リストの末尾に登録される。
(4)命令完了時の動作
命令が完了すると、命令ウィンドウは格納してある更新元タグ・アドレスを解放タグ・アドレスとして出力する。未使用タグ・リストは解放タグ・アドレスをFIFOバッファに保存する。また、中間レジスタ・タグ・テーブルは指定されたタグのエントリを解放する。この際、割り当てられた物理レジスタが出力変更されていなければ、そのアドレスを解放物理レジスタ・アドレスとして出力する。解放物理レジスタ・アドレスは未使用物理レジスタ・リストの末尾に登録される。
【0022】
本発明の詳細動作は上記に述べた通りであるが、以下に、図3に従い、一実施例の説明を行う。本実施例では、63本の64ビットレジスタと96エントリの命令ウィンドウを持ち、4つのスレッドを同時に実行するプロセッサ上の実施とし、各機構のエントリ数、データ幅を模式的に表している。物理レジスタは64ビットで256本とし、中間レジスタ・タグ・テーブルは348エントリ、未使用タグ・リストは9ビット348エントリ、未使用物理レジスタ・リストは8ビット256エントリとする。中間レジスタ・タグ・テーブルのエントリは3ビットの出力選択と8ビットの物理レジスタ・アドレスで構成される。出力選択信号が、000,001,010,011,110,111の場合はそれぞれレジスタの値が2の補数で0,1,2,3,−2,−1であることを示し、出力選択が100の場合はまだ演算結果がでていないことを示す。出力選択が101の場合、物理レジスタに値が格納されている。なお、出力選択の初期値を100とする。
【0023】
従来方式のプロセッサでは、確定状態が〔スレッドあたりの論理レジスタ数〕×〔同時実行スレッド数〕の物理レジスタを保持し、さらに命令ウィンドウ上の命令が命令ウィンドウのエントリ数の物理レジスタを保持する。これらの合計に命令完了から物理レジスタ解放、再利用までの遅延を隠蔽するための余裕を加えた数が、従来方式で必要になる物理レジスタ数である。これに対して、本発明のレジスタ装置では、確定状態、命令ウィンドウ上を問わず、特定の値を持つ物理レジスタを解放する。このため、最悪の場合でも動作するために必要な〔(スレッドあたりの論理レジスタ数)×(同時実行スレッド数)+1〕以上の物理レジスタがあれば、特定の値を持つ物理レジスタの解放によって命令ウィンドウ上の命令に割り当てる物理レジスタや、性能上の問題で追加が必要な余分の物理レジスタが供給されることを期待できる。
【0024】
【発明の効果】
従来方式に比べて、物理レジスタ・ファイルの規模を小さくすることができるため、より高速に動作する回路の設計が可能になる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】従来技術の原理説明図
【図3】各機構のエントリ数、データ幅を模式的に表した一実施例
【符号の説明】
1 命令デコーダ
2 命令ウィンドウ
3 演算器
4 物理レジスタ・ファイル
5 論理レジスタ・マップ
6 未使用物理レジスタ・リスト
7 未使用タグ・リスト
8 中間レジスタ・タグ・テーブル
Claims (3)
- 論理レジスタへの書き込みを行う命令に対して、未使用の物理レジスタを割り当て、未使用タグ・リストと未使用物理レジスタ・リストとの、それぞれの空きエントリを確認して、該当する論理レジスタと物理レジスタとのアドレスの対応づけをさせる中間レジスタ・タグ・テ−ブルと、
演算結果により前記中間レジスタ・タグ・テ−ブルへの出力変更信号により、割り当てた物理レジスタを開放する命令ウィンドウと、からなることを特徴とするプロセッサ。 - 命令の流れに含まれる命令をデコ−ドし、論理レジスタへの書き込み命令を実行するときに、該当する論理レジスタに対して、未使用の物理レジスタを割り当てるプロセッサであって、
未使用タグ・リストと未使用物理レジスタ・リストと物理レジスタ・ファイルを有し、
前記、未使用タグ・リストと未使用物理レジスタ・リストの空きエントリを確認して、割当要求信号と論理レジスタ・アドレスを出力する命令デコーダと、
命令デコーダからの論理レジスタ・アドレスと割当要求とタグ・アドレスを受けて中間レジスタ・タグ・テ−ブルに対してタグ・アドレスを出力し、保持する論理レジスタ・マップと、
中間レジスタ・タグ・テ−ブルの未使用エントリ情報を管理し、出力する未使用タグ・リストと、
演算結果が特定の値になったか、の判定結果を命令ウィンドウと物理レジスタファイルに出力する演算器と、
中間レジスタ・タグ・テ−ブルからの物理レジスタアドレス出力選択を受けた物理レジスタ・ ファイルからの、レジスタの値もしくは特定の値の出力を受けて、命令完了前に中間レジスタ・タグを操作して、割り当てた物理レジスタを解放する、命令ウィンドウと、からなることを特徴とするプロセッサ。 - 命令ウィンドウが物理レジスタを解放した後でも、中間レジスタ・タグ・テーブルは、物理レジスタが持っていた特定の値の情報を保持し、その値を出力可能にする、ことを特徴とする請求項2に記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003110768A JP2004318437A (ja) | 2003-04-15 | 2003-04-15 | 中間レジスタ・タグを使用するプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003110768A JP2004318437A (ja) | 2003-04-15 | 2003-04-15 | 中間レジスタ・タグを使用するプロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004318437A true JP2004318437A (ja) | 2004-11-11 |
Family
ID=33471535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003110768A Withdrawn JP2004318437A (ja) | 2003-04-15 | 2003-04-15 | 中間レジスタ・タグを使用するプロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004318437A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117744570A (zh) * | 2023-12-15 | 2024-03-22 | 沐曦集成电路(南京)有限公司 | 一种寄存器的批量配置方法、电子设备及存储介质 |
-
2003
- 2003-04-15 JP JP2003110768A patent/JP2004318437A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117744570A (zh) * | 2023-12-15 | 2024-03-22 | 沐曦集成电路(南京)有限公司 | 一种寄存器的批量配置方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2818249B2 (ja) | 電子計算機 | |
US8418180B2 (en) | Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors | |
JP3724582B2 (ja) | 命令実行ユニットのためのレジスタ・リネーミング回路 | |
JP3797471B2 (ja) | マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置 | |
US5996068A (en) | Method and apparatus for renaming registers corresponding to multiple thread identifications | |
US20130117543A1 (en) | Low overhead operation latency aware scheduler | |
US7203820B2 (en) | Extending a register file utilizing stack and queue techniques | |
KR102524565B1 (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
JP2000148485A (ja) | レジスタ名称変更システム及び名称変更方法 | |
US20040268093A1 (en) | Cross-thread register sharing technique | |
JP2007200288A (ja) | 実行スレッドをグループ化するためのシステム及び方法 | |
US20160026463A1 (en) | Zero cycle move using free list counts | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
US20020124157A1 (en) | Method and apparatus for fast operand access stage in a CPU design using a cache-like structure | |
US8452948B2 (en) | Hybrid compare and swap/perform locked operation queue algorithm | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
JP6891596B2 (ja) | プロセッサ | |
EP3497558B1 (en) | System and method for load and store queue allocations at address generation time | |
WO2016201699A1 (zh) | 指令处理方法及设备 | |
JP2004318437A (ja) | 中間レジスタ・タグを使用するプロセッサ | |
JP7325437B2 (ja) | リソースインデックス置換を実施するデバイス及びプロセッサ | |
JP3701203B2 (ja) | 計算機システム | |
KR20220083812A (ko) | 선택 불가능한 스케줄러 큐 이후의 레지스터 재명명 | |
JP2883465B2 (ja) | 電子計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060704 |