(57)【要約】  マイクロプロセッサ内のレジスタリソース共有化技術。本発明の実施例は、大きなハードウェアオーバーヘッドを受けることなく、最適な個数の物理的レジスタが所望の個数の論理レジスタにマッピングされることを容易にする複数の命令スレッドに対するマイクロプロセッサ内のレジスタ共有化技術に関する。【特許請求の範囲】
【請求項１】
コンピュータプログラムの命令に係るデータが、該命令を実行するプロセッサがマルチスレッド（ＭＴ）モードまたはシングルスレッド（ＳＴ）モードにあるかに関係ない順序により格納される物理的レジスタファイルを有することを特徴とする装置。
【請求項２】
請求項１記載の装置であって、さらに、
論理レジスタから前記物理的レジスタファイル内の物理的レジスタへのデータの割当てを示す少なくとも１つのレジスタ割当てテーブル（ＲＡＴ）を有することを特徴とする装置。
【請求項３】
請求項１記載の装置であって、さらに、
論理レジスタに割当てられていない前記物理的レジスタファイル内の物理的レジスタのリストを有し、
前記プロセッサがＳＴモードにある間は、前記リストのエントリは第１スレッドに完全に割当てられ、前記プロセッサがＭＴモードにある間は、前記リストのエントリは、該エントリの第１部分が第１スレッドに割当てられ、該エントリの第２部分が第２スレッドに割当てられるように分割されることを特徴とする装置。
【請求項４】
請求項３記載の装置であって、
前記プロセッサがＳＴモードにある場合、前記物理的レジスタファイルのすべての物理的レジスタの中の第１部分は前記第１スレッドに割当てられ、前記物理的レジスタファイルのすべての物理的レジスタの第２部分は前記第２スレッドに割当てられ、
前記第１部分は前記第２部分より大きい、
ことを特徴とする装置。
【請求項５】
請求項４記載の装置であって、
前記プロセッサがＳＴモードにある場合、前記第２スレッドは休止状態となることを特徴とする装置。
【請求項６】
請求項４記載の装置であって、
前記プロセッサがＭＴモードに移行した後、前記物理的レジスタファイル内のすべての物理的レジスタの第１部分内のデータに係る命令がリタイアされるまで、前記第１部分は前記第１スレッドに割当て維持されることを特徴とする装置。
【請求項７】
請求項６記載の装置であって、
前記物理的レジスタのリスト内において、前記リタイアされた命令に係る物理的レジスタが示されることを特徴とする装置。
【請求項８】
論理レジスタに割当てされないマイクロプロセッサによる利用に供される物理的レジスタファイル内のレジスタを示す第１手段と、
前記論理レジスタを前記物理的レジスタに割当てる第２手段と、
から構成される装置であって、
前記第１手段は、前記マイクロプロセッサの第２動作モード中に分割され、前記マイクロプロセッサの第１動作モード中には分割されないことを特徴とする装置。
【請求項９】
請求項８記載の装置であって、
前記論理レジスタは、前記論理レジスタ間の相対位置とは関係なく前記物理的レジスタに割当てられることを特徴とする装置。
【請求項１０】
請求項９記載の装置であって、
前記第２手段は、前記物理的レジスタへの前記論理レジスタの割当てを示すレジスタ割当テーブルを有することを特徴とする装置。
【請求項１１】
請求項９記載の装置であって、
前記第２手段は、前記物理的レジスタへの前記論理レジスタの割当てを示す複数のレジスタ割当テーブルを有し、
該複数のレジスタ割当テーブルの各々は、独立した命令スレッドに関連付けされる、
ことを特徴とする装置。
【請求項１２】
請求項１１記載の装置であって、
前記第１動作モードは、シングルスレッドモードであり、前記第２動作モードは、マルチスレッドモードであることを特徴とする装置。
【請求項１３】
請求項１２記載の装置であって、
前記第１手段は、前記論理レジスタに割当されない物理的レジスタのリストを有するレジスタファイルであることを特徴とする装置。
【請求項１４】
請求項１３記載の装置であって、
単一のスレッドに係る論理レジスタの個数と前記リストの物理的レジスタの個数の合計は、前記物理的レジスタファイル内の物理的レジスタの個数に等しいことを特徴とする装置。
【請求項１５】
請求項１４記載の装置であって、
第１物理的レジスタは、該第１物理的レジスタに格納されているデータに係る命令がリタイアされた後、前記リストに示されることを特徴とする装置。
【請求項１６】
第１及び第２命令スレッドを格納するメモリユニットと、
前記第１及び第２命令スレッドを実行するプロセッサと、
から構成されるシステムであって、
前記プロセッサは、前記第１及び第２命令スレッドに対応するデータが、前記プロセッサがマルチスレッド（ＭＴ）モードまたはシングルスレッド（ＳＴ）モードにあるかに関係ない順序で格納されている物理的レジスタファイルを有することを特徴とするシステム。
【請求項１７】
請求項１６記載のシステムであって、
前記プロセッサはさらに、論理レジスタから前記物理的レジスタファイル内の物理的レジスタへのデータの割当てを示す少なくとも１つのレジスタ割当テーブル（ＲＡＴ）を有することを特徴とするシステム。
【請求項１８】
請求項１６記載のシステムであって、さらに、
論理レジスタに割当てられていない物理的レジスタのリストを有し、
前記プロセッサがＳＴモードにある間、前記リストのエントリは前記第１スレッドに完全に割当てられ、前記プロセッサがＭＴモードにある間、前記エントリの第１部分が前記第１スレッドに割当てられ、前記エントリの第２部分が前記第２スレッドに割当てられるように、前記リストのエントリが分割されることを特徴とするシステム。
【請求項１９】
請求項１８記載のシステムであって、
前記プロセッサがＳＴモードにある場合、前記物理的レジスタファイルのすべての物理的レジスタの中の第１部分は前記第１スレッドに割当てられ、前記物理的レジスタファイルのすべての物理的レジスタの第２部分は前記第２スレッドに割当てられ、
前記第１部分は前記第２部分より大きい、
ことを特徴とするシステム。
【請求項２０】
請求項１９記載のシステムであって、
前記プロセッサがＳＴモードにある場合、前記第２スレッドは休止状態となることを特徴とするシステム。
【請求項２１】
請求項１９記載のシステムであって、
前記プロセッサがＭＴモードに移行した後、前記物理的レジスタファイル内のすべての物理的レジスタの第１部分内のデータに係る命令がリタイアされるまで、前記第１部分は前記第１スレッドに割当て維持されることを特徴とするシステム。
【請求項２２】
請求項２１記載のシステムであって、
前記物理的レジスタのリスト内において、前記リタイアされた命令に係る物理的レジスタが示されることを特徴とするシステム。
【請求項２３】
第１論理レジスタグループを第２物理的レジスタグループにマッピングするため、レジスタ割当テーブル（ＲＡＴ）を初期化するステップと、
レジスタのフリーリストに係るプロセッサがマルチスレッド（ＭＴ）モードにある場合、前記フリーリストを半分に分割するステップと、
前記プロセッサがシングルスレッド（ＳＴ）モードにある場合、前記レジスタのフリーリストを分割しないステップと、
から構成される方法。
【請求項２４】
請求項２３記載の方法であって、さらに、
ＳＴモードからＭＴモードに移行するステップを有し、
前記第２物理的レジスタグループは、物理的レジスタファイル全体に分散されることを特徴とする方法。
【請求項２５】
請求項２４記載の方法であって、
前記第２物理的レジスタグループは、前記ＳＴモードからＭＴモードへの移行後、前記物理的レジスタファイル全体に分散され続けることを特徴とする方法。
【請求項２６】
請求項２３記載の方法であって、さらに、
ＭＴモードからＳＴモードに移行するステップを有し、
前記第２物理的レジスタグループは、物理的レジスタファイル全体に分散されることを特徴とする方法。
【請求項２７】
請求項２６記載の方法であって、
前記第２物理的レジスタグループは、前記ＭＴモードからＳＴモードへの移行後、前記物理的レジスタファイル全体に分散され続けることを特徴とする方法。
【請求項２８】
請求項２３記載の方法であって、
前記論理レジスタは、該論理レジスタ間の相対位置に関係なく、前記物理的レジスタに割当てられることを特徴とする方法。
【請求項２９】
請求項２８記載の方法であって、
単一のスレッドに係る論理レジスタの個数と前記リストの物理的レジスタの個数の合計は、前記物理的レジスタファイル内の物理的レジスタの個数に等しいことを特徴とする方法。
【請求項３０】
請求項２９記載の方法であって、さらに、
前記第１物理的レジスタに格納されているデータに係る命令がリタイアされた後、前記フリーリストにおいて第１物理的レジスタを示すステップを有することを特徴とする方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［技術分野］
本発明の実施例は、マイクロプロセッサアーキテクチャに関する。より詳細には、本発明の実施例は、マイクロプロセッサ内のレジスタリソース共有化技術に関する。
［背景］
典型的なハイパフォーマンススーパースカラーマイクロプロセッサでは、パフォーマンスを向上させる１つの技術は、命令により参照される論理レジスタが大規模な物理的レジスタ群にマップされるレジスタリネーム処理である。この物理的レジスタマッピングは、論理レジスタマッピングに存在する偽依存性を解消するのに役立つ。従来、レジスタエイリアステーブル（ＲＡＴ）などの構成が論理物理マッピングを格納し、フリーリストテーブル（「ｆｒｅｅｌｉｓｔ」）などの他の構成が、リネームユニットによる割当て及び使用まで、未使用または「フリー」の物理的レジスタを保持する。
【０００２】
複数のスレッドを同時に実行可能なマルチスレッドプロセッサにおいて、フリーリストから物理的レジスタを割当てる技術は、ハードパーティションまたは共有化されたフリーリストを利用するかもしれない。共有フリーリスト技術は、より大きなフリーリストテーブルと関連する論理を通常は必要とするが、プロセッサがシングルスレッドモードで実行している場合、フリーリスト内のすべてのレジスタを１つのアクティブスレッドに対して利用可能にするパフォーマンス効果を有する。ハードパーティションフリーリスト技術は、より少ないハードウェアしか必要としないが、スレッドごとのレジスタ数が固定されているため、パフォーマンスを制限することができる。
【０００３】
図１において、２スレッドプロセッサの従来技術による共有レジスタ割当技術の一例が示される。一方または両方のスレッドにレジスタが割当てられているとき、それはフリーリスト１０５から読み出され、リネームレジスタとして適切なＲＡＴ１１０に書き込まれる。さらに、リオーダバッファ（ＲＯＢ）１１５などの独立した構成が、もはや必要でなくなるとフリーリストに返すことができるように、割当てられたレジスタを追跡する。
【０００４】
これら２つのスレッド間には保証されたリタイアメント順序（ｒｅｔｉｒｅｍｅｎｔ  ｏｒｄｅｒ）が存在しないため、共有フリーリスト自体がレジスタ割当解除を処理することは困難であろう。フリーリストのエントリ数は、物理的レジスタの個数に等しく、リセット時には、フリーリストは各物理的レジスタ番号により初期化される。このとき、これら初期化されたレジスタは、一方または両方のスレッドのＲＡＴに割当てられてもよい。
【０００５】
一定数の物理的レジスタに必要なハードウェア量は、ハードパーティションレジスタ割当技術により低減することが可能であるかもしれない。図２において、ハードパーティションレジスタ割当技術の従来技術の一例が示される。図２のハードパーティションレジスタ割当技術は、各スレッドに対してどのレジスタが利用可能かを割当てるものである。さらに、スレッドが休止状態（ｄｏｒｍａｎｔ）である場合、それの割当てされているレジスタは使用されておらず、物理的レジスタスペースを浪費することとなる。
【０００６】
図２の従来技術の一例では、ＲＡＴ２１０とフリーリスト２０５は、物理的レジスタ番号により初期化され、これにより、各フリーリストはＲＡＴにより現在使用されていないレジスタのみを追跡することができ、この結果、フリーリストのサイズを限定することができる。各スレッドがプログラム順序の命令をリタイアすると仮定すると、各フリーリストは、ＲＯＢなしでレジスタ割当解除を処理することができ、これにより、独立した構成が再割当を実行する必要性を低減することができる。
【０００７】
図１の従来技術による例は、あるスレッドに対して利用可能なフリーリストのサイズを最大化するが、余分なハードウェア、すなわちＲＯＢの使用がフリーリストのレジスタを再割当てすることを要求する。他方、図２の従来技術による例は、ＲＯＢを使用することなくフリーリストにおいてレジスタを再割当てすることを可能にするが、１つのスレッドに利用可能なフリーリストエントリの個数を減少させる。
［詳細な説明］
本発明の実施例は、マイクロプロセッサアーキテクチャに関する。より詳細には、本発明の実施例は、大きなハードウェアオーバーヘッドを被ることなく、最適な個数の物理的レジスタが所望の個数の論理レジスタにマッピングされることを容易にするマルチスレッド命令に対するマイクロプロセッサ内のレジスタ共有化技術に関する。
【０００８】
本発明の少なくとも１つの実施例では、ハードパーティションレジスタ共有化技術に係るハードウェアコストを受けるが、他のスレッドが休止状態であるとき、より多くのレジスタを１つのスレッドに利用可能にする技術が利用される。
【０００９】
図３は、本発明の少なくとも１つの実施例が利用可能なコンピュータシステムを示す。プロセッサ３０５は、キャッシュメモリ３１０とメインメモリ３１５からデータにアクセスする。図３のプロセッサの内部に、本発明の一実施例３０６が示される。しかしながら、本発明の他の実施例は、セパレートバスエージェントなどのシステム内部の他の装置の内部に実現されてもよく、あるいは、システム全体にハードウェア、ソフトウェアまたはこれらの組み合わせにより分散化されていてもよい。
【００１０】
メインメモリは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ハードディスクドライブ（ＨＤＤ）３２０、あるいは、ネットワークインタフェース３３０を介しコンピュータシステムから遠隔配置された各種記憶装置及び技術を含むメモリソースなどの各種メモリソースにより実現されてもよい。キャッシュメモリは、プロセッサ内部、またはプロセッサのローカルバス３０７上など、プロセッサに近接して配置されてもよい。さらに、キャッシュメモリは、６トランジスタ（６Ｔ）セルなどの比較的高速のメモリセル、あるいはほぼ等しい、またはより高速のアクセススピードの他のメモリセルを含むものであってもよい。
【００１１】
図４は、本発明の少なくとも１つの実施例が利用可能なマイクロプロセッサを示す。プロセッサ４００は、実行ユニット４２０、スケジューリングユニット４１５、リネームユニット４１０、リタイアメントユニット４２５及びデコーダユニット４０５を有する。
【００１２】
本発明の一実施例では、マイクロプロセッサは、直列及び／または並列構成により複数ステージの処理機能を含み得るパイプラインスーパースカラープロセッサである。従って、各パイプラインステージに１つの複数の命令が、プロセッサ内部で同時に処理されてもよい。さらに、実行ユニットは、遅延耐性などの類似のタイプまたは属性の命令を処理するため、実行クラスタの一部であってもよい。他の実施例では、実行ユニットは、単一の実行ユニットであってもよい。
【００１３】
スケジューリングユニットは、本発明の実施例を含む各種機能ユニット４１３を含むものであってもよい。図４のプロセッサアーキテクチャの何れかに、リネームユニット４０７を含む本発明の他の実施例が配置されるようにしてもよい。
【００１４】
図５は、完全共有フリーリストアーキテクチャのハードウェアコストを被ることなく、シングルスレッド実行モードにより利用可能なレジスタ数の増加を容易にする本発明の一実施例によるレジスタ共有アーキテクチャを示す。当該アーキテクチャは、プロセッサがシングルスレッド（ＳＴ）またはマルチスレッド（ＭＴ）モードであるか否かに関係なく、レジスタリネームによりスレッド０と１にそれぞれ対応するＲＡＴ５０１と５０２の両方を初期化する。フリーリスト５０５は、残りのリネームレジスタにより初期化され、プロセッサのモード（ＳＴかＭＴ）をチェックする。プロセッサがＭＴモードである場合、フリーリストは、フリーリストの半分それぞれが異なるスレッドに対して利用可能となるように、自らを分割する。ＳＴモードでは、フリーリストのすべてのレジスタが、アクティブ状態のスレッドに対して利用可能である。
【００１５】
２つのスレッド、スレッドごとの８つの論理レジスタ及び合計で２８個の物理的レジスタ５１０を含む図５の実施例では、ＳＴモード時のマシーンの初期状態がまた示される。特に、スレッド１（現在休止状態）には物理的レジスタスペースの最後の８つのエントリが使用され、スレッド０には最初の２０個のエントリが利用可能である。
【００１６】
プロセッサがＳＴからＭＴモードに切り替わる場合、フリーリストは半分に分割され、各半分は異なるスレッドに利用される。これは従来技術によるハードパーティションレジスタ共有化技術と類似しており、主要な相違点は、各スレッドに割当てられる物理的レジスタ群が、スレッドごとの所定の物理的レジスタ群ではなく、ＳＴからＭＴへの移行時のフリーリストの状態に依存するということである。このことは、物理的レジスタファイルの各スレッドにより用いられるレジスタは、物理的レジスタファイル全体にランダムに分布することを意味する。
【００１７】
図６は、本発明の一実施例によるＭＴからＳＴへの移行後のアーキテクチャの状態を示す。特に、ＭＴからＳＴへの移行では、フリーリスト６０１は分割されず、当該時点でフリーリストに残っているレジスタがアクティブ状態のスレッドにより割当てられることが可能となる。休止状態のスレッド６０５は依然として、ランダムな位置にある物理的レジスタファイルに割当てられた８つのレジスタを有することとなる（及びアクティブ状態のスレッドにより使用不可である）。アクティブ状態のスレッド６１０は、８つの論理レジスタをマッピングすべきものを有する２０個の物理的レジスタを再び有するであろう。
【００１８】
本発明の実施例の各種特徴は、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）回路及び論理装置（ハードウェア）を用いて実現可能であり、他方他の特徴は、プロセッサにより実行されると、プロセッサに本発明の実施例を実行するための方法を実行させる機械可読媒体（ソフトウェア）に格納された命令を用いて実現されてもよい。さらに、本発明の一部の実施例は、ハードウェアのみにより実現されてもよいし、他の実施例はソフトウェアのみにより実行されてもよい。
【００１９】
図７は、本発明の少なくとも１つの実施例を実行するための各処理を示すフローチャートである。処理７０１において、本発明の実施例はＳＴモードであり、物理的レジスタファイル内の８つのレジスタを割当て及びリネームするよう初期化される。さらに、アクティブ状態のスレッドにより使用されるように、物理的レジスタファイルの１２以上の未使用のレジスタがリストされる。図７の本発明の実施例が実行されるプロセッサが処理７０５においてＭＴモードに切り替わると、フリーリストは処理７１０において半分に分割され、第２スレッドはフリーリストのそれの半分に示されるレジスタを自由に使用する。レジスタの何れかがリタイアすると、フリーリストはＭＴまたはＳＴモードにいても処理７１５においてこれらのレジスタを反映する。図７に示される本発明の実施例がＭＴモードとＳＴモード間で切り替わらない場合、ＲＡＴ及びフリーリストは、処理７２０において以降の命令により用いられるレジスタに従って更新される。
【００２０】
本発明が例示的な実施例を参照して説明されたが、上記説明は限定的な意味で解釈されるべきではない。これら例示的実施例の各種改良と共に、本発明が属する技術分野の当業に明らかな他の実施例は、本発明の趣旨及び範囲に属するとみなされる。
【図面の簡単な説明】
【００２１】
【図１】図１は、シングルスレッドに対し利用可能なフリーリストスペースを最大化するマルチスレッドプロセッサの従来技術によるレジスタ共有化技術を示す。
【図２】図２は、フリーリストのリタイア命令を再割当てするため余分なハードウェア構成を使用することを低減する従来技術によるレジスタ共有化技術を示す。
【図３】図３は、本発明の少なくとも１つの実施例が利用可能なコンピュータシステムを示す。
【図４】図４は、本発明の少なくとも１つの実施例が利用可能なマイクロプロセッサアーキテクチャを示す。
【図５】図５は、本発明の一実施例によるシングルスレッドモードによるレジスタ共有化技術を示す。
【図６】図６は、本発明の一実施例によるマルチスレッドモードによるレジスタ共有化技術を示す。
【図７】図７は、実行すべき各種処理を示すフローチャートである。
【図１】
2007520768.tif 000002
【図２】
2007520768.tif 000003
【図３】
2007520768.tif 000004
【図４】
2007520768.tif 000005
【図５】
2007520768.tif 000006
【図６】
2007520768.tif 000007
【図７】
2007520768.tif 000008
【国際調査報告】
2007520768.tif 000009
2007520768.tif 000010