(57)【要約】仮想ベクトルレジスタファイルを使用するシステム及び方法が説明される。具体的には、グラフィックスプロセッサは、論理ユニットと、論理ユニットに接続された仮想ベクトルレジスタファイルと、仮想ベクトルレジスタファイルに接続されたベクトルレジスタバッキングストアと、仮想ベクトルレジスタファイルに接続された仮想ベクトルレジスタファイル制御部と、を備える。仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい。仮想ベクトルレジスタファイル制御部は、少なくとも特定のベクトルレジスタに対するアクセス要求に応じて、深さＮのベクトルレジスタファイル、深さＭのベクトルレジスタファイル及びベクトルレジスタバッキングストア間でエビクション及び割り当てを行う。【選択図】図５
2019519843.tif 000002
【特許請求の範囲】
【請求項１】
論理ユニットと、
前記論理ユニットに接続された仮想ベクトルレジスタファイルであって、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい、仮想ベクトルレジスタファイルと、
前記仮想ベクトルレジスタファイルに接続されたベクトルレジスタバッキングストアと、
前記仮想ベクトルレジスタファイルに接続された仮想ベクトルレジスタファイル制御部と、を備え、
前記深さＮのベクトルレジスタファイル、前記深さＭのベクトルレジスタファイル及び前記ベクトルレジスタバッキングストア間のエビクション／割り当ては、少なくとも特定のベクトルレジスタに対するアクセス要求に依存する、
グラフィックスプロセッサ。
【請求項２】
前記仮想ベクトルレジスタファイル制御部は、
ベクトルレジスタ再マッピングテーブルと、
前記ベクトルレジスタ再マッピングテーブルと前記仮想ベクトルレジスタファイルと前記ベクトルレジスタバッキングストアとに接続された割り当て／割り当て解除モジュールと、を備える、
請求項１のグラフィックスプロセッサ。
【請求項３】
前記ベクトルレジスタ再マッピングテーブルは、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリには、ベクトルレジスタバッキングストア又は前記仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルへのポインタが格納されている、
請求項２のグラフィックスプロセッサ。
【請求項４】
各テーブルエントリは、ベクトルレジスタが前記仮想ベクトルレジスタファイル内に物理的に存在するかどうかを示す常駐ビットと、ベクトルレジスタ割り当て／割り当て解除のための置換アルゴリズムの使用を可能にするアクセスビットと、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するためのダーティビットと、を含む、
請求項３のグラフィックスプロセッサ。
【請求項５】
前記割り当て／割り当て解除モジュールは、複数のリストを使用して、エビクション候補を追跡し、エビクション／割り当て分析を行うために未割り当てのベクトルレジスタファイルを追跡する、
請求項２のグラフィックスプロセッサ。
【請求項６】
前記割り当て／割り当て解除モジュールは、リストを使用してスレッド毎のベクトルレジスタファイルの所有権を追跡することにより、エビクション／割り当て分析を行う、
請求項５のグラフィックスプロセッサ。
【請求項７】
前記仮想ベクトルレジスタファイル制御部は、全てのベクトルレジスタがハードウェアに物理的に実装されているという論理ビューを外部コンポーネントに提供する、
請求項１のグラフィックスプロセッサ。
【請求項８】
グラフィックスプロセッサにおいて仮想ベクトルレジスタファイルを使用する方法であって、
要求されたベクトルレジスタが、仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルに存在するか否かを判別することであって、前記仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい、ことと、
仮想ベクトルレジスタファイル制御部によって、前記要求されたベクトルレジスタを前記対応する物理ハードウェアベクトルレジスタファイルに取り込むためのスワッピングプロセスを開始することと、
前記要求されたベクトルレジスタが現在存在するという通知を送信することと、を含む、
方法。
【請求項９】
前記要求されたベクトルレジスタが、仮想ベクトルレジスタファイル内の前記対応する物理ハードウェアベクトルレジスタファイル内にあるかどうかを判別するためにベクトルレジスタ再マッピングテーブルをインデックスすることと、
割り当て／割り当て解除モジュールによって複数のリストをレビューして、前記要求されたベクトルレジスタを前記対応する物理ハードウェアベクトルレジスタファイルに取り込むことと、をさらに含む、
請求項８の方法。
【請求項１０】
前記ベクトルレジスタ再マッピングテーブルは、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリには、ベクトルレジスタバッキングストア又は前記仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルへのポインタが格納されている、
請求項９の方法。
【請求項１１】
各テーブルエントリは、ベクトルレジスタが前記仮想ベクトルレジスタファイル内に物理的に存在するかどうかを示す常駐ビットと、レジスタ割り当て／割り当て解除のための置換アルゴリズムの使用を可能にするアクセスビットと、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するためのダーティビットと、を含む、
請求項１０の方法。
【請求項１２】
前記複数のリストは、エビクション候補を追跡し、エビクション／割り当て分析を行うために未割り当てのベクトルレジスタファイルを追跡する、
請求項９の方法。
【請求項１３】
前記割り当て／割り当て解除モジュールは、リストを使用してスレッド毎のベクトルレジスタファイルの所有権を追跡することにより、エビクション／割り当て分析を行う、
請求項９の方法。
【請求項１４】
前記仮想ベクトルレジスタファイル制御部は、全てのベクトルレジスタがハードウェアに物理的に実装されているという論理ビューを外部コンポーネントに提供する、
請求項８の方法。
【請求項１５】
グラフィックスプロセッサで実行されると、仮想ベクトルレジスタファイルを使用する方法を前記グラフィックスプロセッサに実行させる命令を含むコンピュータ可読記憶媒体であって、
前記方法は、
要求されたベクトルレジスタが、前記仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルに存在するか否かを判別するステップであって、前記仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい、ステップと、
仮想ベクトルレジスタファイル制御部によって、前記要求されたベクトルレジスタを前記対応する物理ハードウェアベクトルレジスタファイルに取り込むためのスワッピングプロセスを開始するステップと、
前記要求されたベクトルレジスタが現在存在するという通知を送信するステップと、を含む、
コンピュータ可読記憶媒体。
【請求項１６】
前記方法は、
前記要求されたベクトルレジスタが、仮想ベクトルレジスタファイル内の前記対応する物理ハードウェアベクトルレジスタファイル内にあるかどうかを判別するためにベクトルレジスタ再マッピングテーブルをインデックスするステップと、
割り当て／割り当て解除モジュールによって複数のリストをレビューして、前記要求されたベクトルレジスタを前記対応する物理ハードウェアベクトルレジスタファイルに取り込むステップと、をさらに含む、
請求項１５のコンピュータ可読記憶媒体。
【請求項１７】
前記ベクトルレジスタ再マッピングテーブルは、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリには、ベクトルレジスタバッキングストア又は前記仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルへのポインタが格納されている、
請求項１６のコンピュータ可読記憶媒体。
【請求項１８】
各テーブルエントリは、ベクトルレジスタが前記仮想ベクトルレジスタファイル内に物理的に存在するかどうかを示す常駐ビットと、ベクトルレジスタ割り当て／割り当て解除のための置換アルゴリズムの使用を可能にするアクセスビットと、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するためのダーティビットと、を含む、
請求項１７のコンピュータ可読記憶媒体。
【請求項１９】
前記複数のリストは、エビクション候補を追跡し、エビクション／割り当て分析を行うために未割り当てのベクトルレジスタファイルを追跡する、
請求項１６のコンピュータ可読記憶媒体。
【請求項２０】
前記割り当て／割り当て解除モジュールは、リストを使用してスレッド毎のベクトルレジスタファイルの所有権を追跡することにより、エビクション／割り当て分析を行う、
請求項１６のコンピュータ可読記憶媒体。
【請求項２１】
前記仮想ベクトルレジスタファイル制御部は、全てのベクトルレジスタがハードウェアに物理的に実装されているという論理ビューを外部コンポーネントに提供する、
請求項１５のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
（関連出願の相互参照）
本願は、２０１６年６月２３日に出願された米国特許出願第１５／１９１，３３９号の利益を主張し、その内容は、本明細書に完全に記載されているものとして引用により本明細書に組み込まれている。
【０００２】
グラフィックスプロセッシングユニット（ＧＰＵ）は、多数の実行ユニットと広帯域幅のメモリチャネルを有する並列プロセッサであり、何千ものスレッドを同時に実行する。ＧＰＵアーキテクチャは、大規模な単一命令複数スレッド（ＳＩＭＴ）ユニットのアレイを中心に構成されており、各々がインオーダでスコアボードベースのスーパースカラマシンであり、命令フェッチ及びスケジューリングパイプラインと、超越関数のハードウェアサポートを含むベクトル演算論理ユニット（ＡＬＵ）と、メモリサブシステムと、ベクトルレジスタファイルと、といったフルセットの機能を備えている。ベクトルレジスタファイルは、コスト、面積、消費電力、タイミング等のＧＰＵ動作のあらゆる面で大きな課題を抱えているため、現代のＧＰＵアーキテクチャにおける大きなボトルネックとなっている。
【０００３】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【０００４】
【図１】特定の実施態様による、グラフィックスプロセッサの高レベルブロック図である。
【図２】特定の実施態様による、グラフィックス処理パイプラインの高レベルブロック図である。
【図３】特定の実施態様による、ベクトルレジスタファイルを有するグラフィックスプロセッサの論理ブロック図である。
【図４】特定の実施態様による、単一命令複数スレッド（ＳＩＭＴ）ユニットについての例示的なフローである。
【図５】特定の実施態様による、仮想ベクトルレジスタファイルの論理ブロック図である。
【図６】特定の実施態様による、仮想ベクトルレジスタファイルと共に使用するための仮想ベクトルレジスタファイル制御部の論理ブロック図である。
【図７】特定の実施態様による、仮想ベクトルレジスタファイルの動作フローを示す論理ブロック図である。
【図８】特定の実施態様による、仮想ベクトルレジスタファイルを使用するためのフローチャートである。
【図９】１つ以上の開示された実施形態を実装し得る例示的な装置のブロック図である。
【発明を実施するための形態】
【０００５】
仮想ベクトルレジスタファイルを使用するシステム及び方法が説明される。具体的には、グラフィックスプロセッサは、論理ユニットと、論理ユニットに接続された仮想ベクトルレジスタファイルと、仮想ベクトルレジスタファイルに接続されたベクトルレジスタバッキングストアと、仮想ベクトルレジスタファイルに接続された仮想ベクトルレジスタファイル制御部と、を備える。仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい。仮想ベクトルレジスタファイル制御部は、少なくとも特定のベクトルレジスタに対するアクセス要求に応じて、深さＮのベクトルレジスタファイル、深さＭのベクトルレジスタファイル及びベクトルレジスタバッキングストア間でエビクション（eviction）及び割り当てを行う。
【０００６】
図１は、グラフィックスプロセッサ又はＧＰＵ１００内のシェーダ計算部分の高レベルブロック図である。グラフィックスプロセッサ１００のシェーダ計算部分は、計算ユニット１０５を含み、各計算ユニット１０５は、シーケンサ１０７と、複数の単一命令複数スレッド（ＳＩＭＴ）ユニット１１０と、を含む。各ＳＩＭＴユニット１１０は、複数のＶＡＬＵ１１５を含むことができ、各ＶＡＬＵ１１５は、ベクトルレジスタファイル１２０に接続することができる。各計算ユニット１０５は、Ｌ１キャッシュ１３０に接続されており、Ｌ１キャッシュ１３０は、Ｌ２キャッシュ１４０に接続されている。Ｌ２キャッシュ１４０は、メモリ１５０に接続することができる。例えば、グラフィックスコアネクスト（ＧＣＮ）アーキテクチャでは、各計算ユニット１０５は、４つのＳＩＭＴユニットを含むことができ、各ＳＩＭＴユニットは、４つのＶＡＬＵを含むことができ、各ＶＡＬＵは、４つのＡＬＵを含むことができる。本明細書における説明は、例示的なアーキテクチャに関するものであるが、ＳＩＭＴ毎に異なるレベルのマルチスレッド、ＳＩＭＴ毎に異なる数のオペランド及び異なるハードウェア幅を、特許請求の範囲から逸脱することなく実装することができる。本明細書の説明は例示的なものである。
【０００７】
図２は、三次元シーンを二次元スクリーンに変換するグラフィックスプロセッサパイプライン２００の高レベルブロック図である。グラフィックスシェーダ計算処理パイプライン２００は、最初に、計算ユニット２０５内のシーケンサ２１０による命令フェッチ、デコード及びスケジュール処理を実行する。命令及びデータは、次に、計算ユニット２１０内の実行ユニットに供給される。実行ユニットは、４つのＳＩＭＴ２１５を含むことができ、各ＳＩＭＴ２１５は、４つのＶＡＬＵ２２０を含むことができる。各ＶＡＬＵ２２０は、４つのＡＬＵのグループとすることができる。計算ユニット２０５の出力を、ベクトルレジスタファイル２２５、Ｌ１キャッシュ２３０、Ｌ２キャッシュ２３５又はメモリ２４０に記憶することができる。
【０００８】
一般に、グラフィックス処理装置（ＧＰＵ）は、何千ものスレッドを同時に実行するための多数の実行ユニットと、高帯域幅のメモリチャネルと、を有する並列プロセッサである。ＧＰＵアーキテクチャは、大規模なＳＩＭＴユニットのアレイを中心に構成されており、各々がインオーダでスコアボードベースのスーパースカラーマシンであり、命令フェッチ及びスケジューリングパイプラインと、超越関数のハードウェアサポートを含むＶＡＬＵと、メモリサブシステムと、ベクトルレジスタファイルと、といったフルセットの機能を備えている。ベクトルレジスタファイルは、ＧＰＵ操作のあらゆる面（コスト、面積、消費電力及びタイミング）で大きな課題を抱えているため、現代のＧＰＵアーキテクチャにおける大きなボトルネックとなっている。
【０００９】
各ＳＩＭＴユニット２１５は、ハードウェアで広範囲の細粒度マルチスレッドを実施することができ、したがって、ＳＩＭＴユニット内で同時に実行される全てのスレッドについてランタイムコンテキストを維持するために、ベクトルレジスタファイル毎に多数のベクトルレジスタを必要とする場合がある。その結果、多くのＧＰＵ内のＳＩＭＴユニット２１５は、一般に、大きなベクトルレジスタファイルを実装する。ＳＩＭＴユニット２１５は、本質的にはベクトルマシンであるため、レジスタファイルは、各マシンクロックサイクルにおいて、３つのベクトルオペランドに対する読み出しアクセスと１つのベクトルオペランドに対する書き込みアクセスとを提供する必要がある。共有メモリ又はＧＰＵメモリの読み書きを処理するために、追加の読み書きポートも必要になることがある。いくつかのＧＰＵは、疑似デュアルポートスタティックランダムアクセスメモリ（ＳＲＡＭ）の複数のバンクとしてベクトルレジスタファイルを実装することによって、必要とされる広帯域幅を達成し、コストを管理下に維持する。シェーダコンパイラは、生成されたコードによって引き起こされるバンク間の競合の可能性を最小限に抑えるために、的確な命令順序付けを実行する。
【００１０】
図３は、ＶＡＬＵ３０５を含むグラフィックスプロセッサ又はＧＰＵ３００の論理ブロック図である。上述したように、ＶＡＬＵ３０５は、４つのＡＬＵ（図示省略）を有することができる。ＶＡＬＵ３０５は、クロスバースイッチ（ＸＢＡＲ）３１０を介して、例えばバンクＡ、バンクＢ、バンクＣ及びバンクＤ等の複数のバンクのベクトルレジスタファイル３１５に接続又は結合されている。ＸＢＡＲ３１０は、ベクトルレジスタファイルバンクからソース（読み出し）オペランドを受信し、ＶＡＬＵ３０５から書き込み（宛先）オペランドを受信することができる。ＸＢＡＲ３１０は、例えば、ＸＢＡＲ３１０をバンクＡ、バンクＢ、バンクＣ及びバンクＤの各々に接続するバンクＡリードポート、バンクＢリードポート、バンクＣリードポート及びバンクＤリードポートを含む、読み出し及び書き込み動作用の複数のポートを有することができる。
【００１１】
ベクトルレジスタファイル３１５は、ＧＰＵ動作のあらゆる面（コスト、面積、電力及びタイミング）で大きな課題を抱えているので、現代のＧＰＵアーキテクチャにおける大きなボトルネックとなっている。面積及びコストの面において、ＳＩＭＴベクトルレジスタファイルは殆どのＧＰＵの面積に大きな影響を与えており、面積の約１０％を占めている。ベクトルレジスタファイルの面積を減らすことにより、ＧＰＵの面積が大幅に減少する。面積に直接係わる問題点に加え、ベクトルレジスタファイルの面積は、本来容易且つ効果的な電力及び性能についてのいくつかの最適化を制限している。例えば、最適化は、電力削減のためのＲＡＭの更なるバンク化を含む（すなわち、ＲＡＭをいくつかの部分に分割し、アクセスされているものだけを動作状態にし、他を低電力状態にする）。ＳＲＡＭバンクの数を２倍にしただけでも、面積が２５％〜３０％増加する。他の最適化は、例えば、より高い周波数でＳＲＡＭを動作させることを含む。現在のベクトルレジスタファイルＳＲＡＭは、疑似デュアルポート（すなわち、両方のポートに対して一組のワードラインが使用される）として実装されており、これにより、ＳＲＡＭが達成し得る最高周波数が厳しく制限されている。２つのポートに別々のワードラインを用いて真のデュアルポート構造に移行することによって、ＳＲＡＭ最大動作周波数の望ましい増加がもたらされ、又は、一般的により低い電圧で同じ周波数の達成を可能にするが、面積及び消費電力の増加が引き起こされる。この観点によれば、ベクトルレジスタファイルの面積を減らすことによって、既存の構造に対する面積の中立性を維持しつつ、パフォーマンス及び／又は消費電力に対する他の最適化が可能になる。
【００１２】
電力の面では、ＳＩＭＴベクトルレジスタファイルは、面積に最大の影響を与える要因であることに加えて、ＧＰＵの有効電力の大きな要因であり、ＧＰＵの電力の１０〜１５％を占める。したがって、ベクトルレジスタファイルで消費される電力の削減が望まれる。ベクトルレジスタファイルの消費電力の大幅な削減は、更なるバンク化によって簡単に実現することができる。しかしながら、上述したように、この方法は、大きなエリアペナルティをもたらす可能性がある。
【００１３】
タイミングに関しては、ＳＩＭＴベクトルレジスタファイルは、必要な読み書き帯域幅を達成する低コストＳＲＡＭ構成を使用して実装される。しかしながら、これらのＳＲＡＭは、特に高速ではない可能性があり、したがって、ＳＩＭＴ設計によって達成される周波数（又は最小動作電圧）に対する制限が示される。より高速な真のデュアルポートＳＲＡＭを使用してベクトルレジスタファイルを実装すると、面積が大幅に増加する。
【００１４】
図１〜図３の例示的なアーキテクチャに示すように、グラフィックスプロセッサ１００は、６４のオペランド幅のＳＩＭＴユニット１１０（又は図２のＳＩＭＴ２１５）のアレイを中心にして配置することができ、各ＳＩＭＴユニット１１０は、１０ウェイ同時マルチスレッディング（各スレッドが６４のオペランド幅のＳＩＭＴ）に対するサポートを実装することができる。各ＳＩＭＴユニット１１０は、論理的に６４オペランド幅であるという事実にもかかわらず、ハードウェアではそれらは１６幅として実装され、単一のＳＩＭＴ命令を発行及び実行するのに４クロックサイクルかかる。各ＳＩＭＴユニット１１０内のベクトルレジスタファイルは、１６の単精度浮動小数点オペランド幅である。
【００１５】
ＳＩＭＴユニット１１０は、任意の所定のスレッドにおけるメモリアクセスに関連する長いレイテンシを隠すために、それらがいくつかの常駐スレッド（各スレッドは６４オペランド幅である）に対するサポートを有しているという事実に依拠している。例えば、現在実行中のＳＩＭＴスレッドが、メモリからのデータ返送を待機中のベクトルレジスタファイルへの依存関係に遭遇すると、それが中断され、新たなスレッドがアクティブになる。元のスレッドは、それを停止させた依存関係が解決されると（例えば、データがメモリから返送され、前述したベクトルレジスタが充たされると）再アクティブ化される。このメカニズムは、待機しているメモリデータが、ダイナミックＲＡＭ（ＤＲＡＭ）、キャッシュ又はローカルのスクラッチパッドメモリの何れから来るかに関係なく同じである。
【００１６】
ＳＩＭＴエンジンのＡＬＵを常に占有し続けることは、効率的な運用のための前提条件であり、いつでもＡＬＵに送り出す準備ができており且つ停止していないコードの存在を保証することに帰着する。サポートされている１０個のスレッドの全てが停止し、依存関係の解決を待機している状況では、ＳＩＭＴエンジンのアイドルサイクルと非効率的な動作とが発生する。図４は、１０個のスレッド４００，４０２，…，４１８が、ＳＩＭＴユニットを殆ど飽和させない構成でＳＩＭＴユニット上で動作しているシナリオの一例を示す図である。スレッド４００，４０２，…，４１８の１つにおいて計算／メモリ動作比率が減少した場合に、ＳＩＭＴユニットにおけるアイドルクロックサイクルが開始し、したがって、効率が１００％を下回るであろう。メモリからのデータ返送待機による実行の停止を減らすために、例えばデータプリフェッチ等の複数の方法がある。但し、これらの最適化方法では、多くの場合、ベクトルレジスタファイルの使用量が増える。
【００１７】
パフォーマンスを向上させるために、グラフィックスプロセッサでのレジスタファイルの使用量を調整することもできる。例えば、シェーダコードの一部がコンパイルされると、コンパイラは、そのコードに必要な適切な数のレジスタを決定する。コンパイラは、通常、使用するベクトルレジスタファイルの最大数を設定するユーザ指定の設定を使用する。但し、コンパイラは、最適化アルゴリズムに従って、ベクトルレジスタファイルを自由に割り当てることができる。元のシェーダコードが、コンパイラでの使用のために制限されているよりも多くのベクトルレジスタファイルを真に必要とする場合、ベクトルレジスタファイルとメモリとの間のスピルアンドフィル（Spill and fill）を行うコードが、コンパイラによって自動的に追加される。メモリへのスピルはパフォーマンスを低下させ、ハイパフォーマンスコードは、一般的に、ベクトルレジスタファイルのスピルアンドフィルの使用を回避する。
【００１８】
コンパイルされたシェーダがグラフィックスプロセッサ上で実行できるようになる前に、１つ以上のＳＩＭＴユニットが最初にリソースを割り当てる必要がある。ハードウェアスレッドスケジューリングブロック（例えば、シェーダパイプインターポレータ（ＳＰＩ））は、そのスケジューリング作業の一部としてリソース境界チェックを実行し、十分なリソースが利用可能なＳＩＭＴユニットにシェーダコードを割り当てる。この活動の結果として、所定のＳＩＭＴユニットにディスパッチされた全てのスレッドが、ＳＩＭＴユニットで利用可能なものより多くのベクトルレジスタを使用しないことが確実になる。スレッドによって使用されるＳＩＭＴユニットのハードウェア資源は、そのスレッドがその全ての命令の実行を完了するまで、同じスレッド専用である。このハードウェアスケジューリングの副作用は、一般に、ＳＩＭＴユニット内のいくつかのベクトルレジスタが未使用であるということである。例として、ＳＰＩが１０個の同一スレッドをスケジュールしており、それらの各スレッドが１００個のベクトルレジスタを必要とする場合、ＳＰＩは、何れのＳＩＭＴユニットにおいても一度に作業できるスレッドを２つしかスケジュールできない。（例えば、２５６個のレジスタを持つベクトルレジスタファイルを想定した場合）２つのスレッドは２００個のベクトルレジスタを使用し、５６個が未使用になる。未使用のベクトルレジスタの正確な数は、グラフィックスプロセッサで実行されているコードの組み合わせによって異なるが、何れの場合にも、この動作によってレジスタファイルの最適化が確実に行われる。
【００１９】
別の例では、常に、大量のベクトルレジスタ（メモリ階層の上位レベルから来るデータのステージングに使用される全てのベクトルレジスタ）がＬＯＡＤ命令のターゲットとして機能している。これらのベクトルレジスタに保持されている値は古く、ベクトルレジスタの記憶領域自体は、データを返すための予約された領域として以外に役に立たない。これは、最適化のためのもう一つの機会である。
【００２０】
別の例では、現代のゲーム開発エンジンは、多数の材料と、関連する双方向反射率分布関数（ＢＲＤＦ）及び様々な特性を有する種々の光源と、を用いて、多くの潜在的なユースケースをカバーすることを目的とした機能のスーパーセットを実装する「スーパーピクセルシェーダ」を利用することが多い。シェーダ開発におけるこの傾向は、シェーダコンパイラがベクトルレジスタに割り当てなければならない多くの変数をもたらす。このベクトルレジスタの割り当ては、ベクトルレジスタが全く使用されない（又は、非常に控えめに使用される）ことがあるので、不要な場合がある。これは、特定のシェーダ呼び出しで実際に使用されている材料／光／その他の特性の決定が、実行時に分岐を使用して動的に行われるために発生する。これは、最適化のためのもう一つの機会である。
【００２１】
一般的に、持続的な特性が、全てのグラフィックスプロセッサの作業負荷、グラフィックスのレンダリング、及び、レジスタ使用のための計算シナリオで見られる。これらの特性には、ベクトルレジスタの値が１回しかアクセスされないことが含まれ得る（約６０％の時間）。つまり、ＡＬＵ又はＬＯＡＤを実行すると、上書きされるか参照されなくなるまでに１回だけ読み出しが行われる。他の特徴は、９０％の場合でベクトルレジスタ値が１回若しくは２回アクセスされること、又は、一度だけ読み出されるベクトルレジスタ値の７０％が直ちに消費されないことであり得る。レジスタ値が複数回アクセスされる場合、連続アクセス間の平均時間は４００ＧＰＵクロックサイクルを超えており、多くの作業負荷では１０００クロックサイクルを超えている。
【００２２】
低レイテンシとレジスタ使用とのバランスをとりながら、より低いダイ面積、より低い電力、及び、より速いＳＩＭＴユニットをもたらすことによって、現在のレジスタファイルアーキテクチャによって提示される全てのボトルネックに対処し得る仮想ベクトルレジスタファイルを使用するシステム及び方法が説明される。仮想ベクトルレジスタファイルアーキテクチャは、可能な場合にはいつでも小さい構造を優先し、大きい構造のアクセスを回避することによって、かなりの電力上の利益を生み出すことができる２つのレベルの不均一ハードウェアベクトルレジスタファイル構造を含むことができる。２つのレベル間のベクトルレジスタ割り当ての管理は、より大きなベクトルレジスタファイルへのアクセス数を最小にするために提供される。特に、仮想ベクトルレジスタファイルアーキテクチャは、大きな割合のベクトルレジスタが所定の時間に使用不可能であることを回避し、ベクトルレジスタファイルサイズを低減することによって、ベクトルレジスタファイルストレージのより効率的な管理を提供する。例えば、「スーパーピクセルシェーダ」の場合、仮想ベクトルレジスタファイルは、未使用（又は、１、２回使用されてから使用されなくなった）ベクトルレジスタに高価な物理ベクトルレジスタストレージを費やすことを適切に回避する。
【００２３】
一般に、仮想化ベクトルレジスタファイル構造は、ソフトウェア及びＳＰＩに同じ論理ビュー（２５６の仮想ベクトルレジスタ）を提供するが、チップ内の２５６の仮想ベクトルレジスタのサブセット（例えば、１２８又は１９６）のみを実装する。ソフトウェア及びＳＰＩに対して２５６の利用可能なベクトルレジスタの完全な論理ビューを維持するために、ベクトルレジスタは、メモリ内のバッキングストアに対するスワップイン及びスワップアウトをサポートする必要がある。
【００２４】
図５は、仮想ベクトルレジスタファイル５０５を有するグラフィックスプロセッサ５００の一部の論理ブロック図である。グラフィックスプロセッサ５００は、クロスバースイッチ（ＸＢＡＲ）５１５を介して仮想ベクトルレジスタファイル５０５に接続又は結合されたＶＡＬＵ５１０を含む。特に、ＸＢＡＲ５１５は、ＶＡＬＵ５１０からオペランドを受信する。仮想ベクトルレジスタファイル５０５は、複数のバンク（例えばバンクＡ、バンクＢ、バンクＣ及びバンクＤ）のベクトルレジスタを有することができる。各バンクのベクトルレジスタは、小型の低電力ベクトルレジスタファイル５２０と、これより大型で電力をより消費するベクトルレジスタファイル５２５と、を含むことができる。両方のベクトルレジスタファイルは同じ幅である。ベクトルレジスタファイル５２０は、深さＮのベクトルレジスタ深さとすることができ、ベクトルレジスタファイル５２５は、深さＭのベクトルレジスタ深さとすることができ、ＭはＮより大きい。ＸＢＡＲ３１０は、読み出し及び書き込み動作用の複数のポート（例えば、ＸＢＡＲ３１０をベクトルレジスタファイル５２０の各バンクに接続するバンクＡリードポート、バンクＢリードポート、バンクＣリードポート及びバンクＤリードポートを含む）を有する。ベクトルレジスタファイル５２５は、ＤＲＡＭ等のメモリ内に実装することができるベクトルレジスタバッキングストア５３０に接続されている。
【００２５】
図６は、仮想ベクトルレジスタファイル６１０及びレジスタバッキングストア６１５と共に使用するための仮想ベクトルレジスタファイル制御部６０５を含むグラフィックスプロセッサ６００の一部の論理ブロック図である。仮想ベクトルレジスタファイル制御部６０５は、仮想化機能及び２レベルのベクトルレジスタファイルの機能を容易にする。特に、仮想ベクトルレジスタファイル制御部６０５は、全てのベクトルレジスタファイルが物理的に実装されているのと同じ論理ビューをソフトウェア及びＳＰＩに提供する。仮想ベクトルレジスタファイル制御部６０５は、割り当て／割り当て解除モジュール６２５に接続されたベクトルレジスタ再マッピングテーブル６２０を含む。仮想ベクトルレジスタファイル６１０は、深さＮのベクトルレジスタを有する小ベクトルレジスタファイル６３０と、深さＭのベクトルレジスタを有する大ベクトルレジスタファイル６３５と、を含む。
【００２６】
ベクトルレジスタ再マッピングテーブル６２０は、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリは、対応する物理ハードウェアベクトルレジスタファイル（小ベクトルレジスタファイル６３０若しくは大ベクトルレジスタファイル６３５など）、又は、ベクトルレジスタバッキングストア６１５へのポインタを格納する。各テーブルエントリは、（ベクトルレジスタバッキングストアに存在するのとは対照的に）ベクトルレジスタが物理ハードウェアベクトルレジスタファイルに存在するかどうかを示す「常駐」ビット、ベクトルレジスタの割り当て／割り当て解除の置換アルゴリズムの使用を可能にする「アクセス」ビット、及び、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するために使用できる「ダーティ」ビットも含むことができる。クロックアルゴリズムは、置換アルゴリズムの一例であってもよい。
【００２７】
ベクトルレジスタファイルの仮想化をサポートすることに加えて、ベクトルレジスタ再マッピングテーブル６２０を割り当て／割り当て解除モジュール６２５と共に使用して、小ベクトルレジスタファイル６３０及び大ベクトルレジスタファイル６３５に亘るベクトルレジスタ割り当てを管理することができる。特に、効率的なベクトルレジスタ割り当て／割り当て解除方式の定義は、仮想ベクトルレジスタファイルアーキテクチャの効率を促進する。物理レジスタの割り当ては、要求（命令は、バッキングストア内にあるベクトルレジスタ、メモリから返されたロード結果等が必要である）、物理ベクトルレジスタを小ベクトルレジスタファイル、大ベクトルレジスタファイルの何れに割り当てるかの決定、及び、ベクトルレジスタファイル内の既存のベクトルレジスタの何れをエビクトするかの決定によって行われ、これらは全て、要因の組み合わせ又は経験則（heuristics）に基づいていると予想される。
【００２８】
ＧＰＵのベクトルレジスタ使用において見られる一貫したパターンは、ベクトルレジスタ管理を最適化するためのいくつかの簡単な経験則の使用を可能にする。経験則の一例は、すぐにアクセスされることが期待できる、小ベクトルレジスタファイル６３０内に割り当てられたロード命令又はテクスチャアクセス命令から返されたデータであってもよい。別の例では、命令によってアクセスされようとしているが現在チップ上に存在していない（すなわち、ベクトルレジスタバッキングストア６１５内にある）仮想ベクトルレジスタが、すぐに読まれる可能性があるため、割り当てられ、小ベクトルレジスタファイル６３０に入れられる。入力される仮想ベクトルレジスタのベクトルレジスタファイル位置は、ベクトルレジスタの開始時に事前に割り当てられるのではなく、関連する値がメモリから到着するまで割り当てられない（すなわち、ジャストインタイム割り当てされる）。別の例では、ＳＴＯＲＥ命令の値を保持する仮想ベクトルレジスタは、その値がすぐには使用されない可能性があるので、小ベクトルレジスタファイル６３０から大ベクトルレジスタファイル６３５又はベクトルレジスタバッキングストア６１５に転送され得る。対照的に、ＡＬＵ命令の結果は、すぐに再びアクセスされる可能性があるので、小ベクトルレジスタファイル６３０に格納され得る。上記の経験則は、ベクトルレジスタファイルの割り当て及び割り当て解除を説明するものであり、他の方法も説明の範囲から逸脱することなく使用することができる。
【００２９】
仮想ベクトルレジスタファイル制御部６０５は、ベクトルレジスタファイル管理のための一組のリスト（又はデータ構造）を維持する。すなわち、これらのファイルをハードウェア管理リストとすることができる。例えば、ハードウェア仮想ベクトルレジスタファイル制御部は、ベクトルレジスタを異なるベクトルレジスタファイル又はバッキングストアに移動するために、異なるリストを維持することができる。各リストには、他のベクトルレジスタファイル又はバッキングストアに移動するのに最適な候補ベクトルレジスタを含めることができる。エビクション処理のために一組のリストを維持することができ、以下を含むことができる。１）小ベクトルレジスタファイル内に常駐し、ＡＬＵ命令又はＳＴＯＲＥ命令の何れかによってアクセスされるベクトルレジスタは、大ベクトルレジスタファイル（ＥＶＳ２ＬＡＲＧＥ）へのエビクションの候補であり、ＥＶＳ２ＬＡＲＧＥリストに追加される。２）異なる分岐先への分岐を示さない（全てのスレッドにより実行される）ＬＯＡＤ命令のターゲットであるベクトルレジスタは、バッキングストア（ＥＶＳ２ＢＳＴＲ又はＥＶＬ２ＢＳＴＲ）へのエビクションに適した候補であり、小ハードウェアベクトルレジスタファイル又は大ハードウェアベクトルレジスタファイルの何れに常駐するかによってＥＶＳ２ＢＳＴＲ又はＥＶＬ２ＢＳＴＲに追加される。
【００３０】
割り当て及び割り当て解除処理のために別の組のリストを維持することができ、以下を含むことができる。１）ＦＲＥＥＳＭＡＬＬ。現在割り当てられていない小ベクトルレジスタファイル内の物理ベクトルレジスタのリストを維持する。２）ＦＲＥＥＬＡＲＧＥ。現在割り当てられていない大ベクトルレジスタファイル内の物理ベクトルレジスタのリストを維持する。一般に、ＦＲＥＥＳＭＡＬＬ及びＦＲＥＥＬＡＲＧＥリストは、ＳＩＭＴユニットが初期化された後に動作するにつれて徐々に空になり得る。ＦＲＥＥＳＭＡＬＬリスト及びＦＲＥＥＬＡＲＧＥリストが空になると、以下の場合を除いて、これらが再び充たされることはない。１）ＳＩＭＴユニットが再初期化される。２）ＳＩＭＴユニットがスレッドの実行を終了し、そのスレッドに関連するベクトルレジスタが割り当て解除される。定常状態の動作条件下では、全てのベクトルレジスタ割り当て解除は、エビクション処理リスト及び例えばクロックアルゴリズム等の置換アルゴリズムによって支配されることが予想される。
【００３１】
別のリスト又はデータ構造を使用して、スレッドによるベクトルレジスタ管理を実装することができる。このリスト又はデータ構造は、スレッドによって仮想ベクトルレジスタ「所有権」を追跡することができ、特定のベクトルレジスタを所有するスレッドが中断されているかアクティブであるかに基づいて、ベクトルレジスタスワッピング及び大／小ハードウェアベクトルレジスタファイル常駐決定を修正することができる。例えば、スレッドが中断されている場合には、関連する全てのベクトルレジスタファイルをベクトルレジスタバッキングファイルに移動することができる。
【００３２】
動作上、大又は小ハードウェアベクトルレジスタファイルの何れかにおいて新たな仮想ベクトルレジスタファイルに物理スロットを割り当てる必要がある場合には、ＥＶＳ２ＬＡＲＧＥ、ＥＶＳ２ＢＳＴＲ及びＥＶＬ２ＢＳＴＲリストの各々がチェックされる。関連リストが空でない場合には、リストのヘッド値がデキューされ、ヘッドリスト要素に関連する物理ベクトルレジスタは、必要に応じて大ベクトルレジスタファイル又はベクトルレジスタバッキングストアにエビクトされる。新たに解放された物理ベクトルレジスタは、必要に応じて割り当てられる。物理ベクトルレジスタが複数のリスト（ＦＲＥＥ＊及びＥＶ＊）に存在しないように厳密に強制するルールを実装することができる。適切なエビクション候補（ＥＶ＊２＊）及びフリーキューが空であって、新たな物理ベクトルレジスタの割り当てが必要な場合には、何れのベクトルレジスタファイル（大又は小レジスタファイル）からエビクトするかを、置換アルゴリズムを使用して決定することができる。例示的な置換アルゴリズムでは、ベクトルレジスタファイルの値の寿命は、エビクション適合性の強力な指標であるため、ＣＬＯＣＫアルゴリズムは、エビクトするベクトルレジスタファイルを決定するための有効な方法となり得る。
【００３３】
動的割り当て又はデッドロックによる潜在的なリソース枯渇の回避は、任意の所定の計算ユニット（ＣＵ）／ＳＩＭＴユニット内のアクティブなシェーダが任意の時間に進行するとの保証を確実にすることによって達成され得る。これは、１つのアクティブなシェーダを特別なものとして指定することで実行することができる。この指定は、指定されたアクティブなシェーダに対して他より高い優先順位を与え（これは、発送の経過時間又は他のメタデータに基づいて行うことができる）、他のアクティブなシェーダの非効率性及びリソース枯渇を犠牲にしても、指定のニーズに必要な全てのリソースを保証する。
【００３４】
図７は、仮想ベクトルレジスタファイル７１０を含むグラフィックスプロセッサ７００の動作フローを示す論理ブロック図である。一般に、グラフィックスプロセッサ７００は、２つのシェーダペア（ＳＰ）を含み、各ＳＰは、１対のＳＩＭＴユニットを含む。各ＳＩＭＴユニットは、４つのＶＡＬＵを含み、各ＶＡＬＵは、４つのＡＬＵを含む。例示目的として、図７は、シーケンサ（ＳＱ）７０２に結合又は接続されたＳＰ７０５を有するグラフィックスプロセッサ７００を示している。ＳＰ７０５は、仮想ベクトルレジスタファイル７１０を含み、仮想ベクトルレジスタファイル７１０は、それぞれ大ベクトルレジスタファイル７１４のセットに接続された小ベクトルレジスタファイル７１２のセットから構成されている。小ベクトルレジスタファイル７１２の各々は、読み書きポートを介してＸＢＡＲ７１６に接続されており、ＸＢＡＲ７１６は、ＶＡＬＵ７１８からオペランドを受信するように接続されている。大ベクトルレジスタファイル７１４の各々は、ベクトルレジスタバッキングストア７２０に接続されている。
【００３５】
ＳＱ７０２は、仮想ベクトルレジスタファイル制御部７３０と、スレッド毎の命令バッファ７３２と、レジスタレディネスチェッカ７３４と、準備済ベクトルレジスタ付き命令バッファ７３６と、スレッドアービタ７３８と、を含む。スレッド毎の命令バッファ７３２は、命令キャッシュ７４０に接続されている。仮想ベクトルレジスタファイル制御部７３０は、割り当て／割り当て解除モジュール７４５及びレジスタ再マッピングテーブル７５０を含む。
【００３６】
動作上、スレッド毎の命令バッファ７３２には、命令キャッシュ７４０から命令が供給される。スレッド毎の命令バッファ７３２の先頭の命令は、発行するのに適格である。ベクトルレジスタレディネスチェッカ７３４は、先頭命令ベクトルレジスタが物理記憶装置「使用準備完了」にあるか（例えば、小ベクトルレジスタファイル７１２）、大ベクトルレジスタファイル７１４又はベクトルレジスタバッキングストア７２０にあるかを判別する。ベクトルレジスタを使用する準備ができている場合、命令は、準備済ベクトルレジスタ７３６を有する命令バッファに転送され、そこでスレッドアービタ７３８を介してＳＰ７０５（すなわち、ＶＡＬＵ７１８）に発行することが選択されるのを待つ。
【００３７】
命令によって必要とされるときにベクトルレジスタがハードウェアベクトルレジスタファイル内に常駐していない場合、ベクトルレジスタレディネスチェッカ７３４は、その旨通知され、アクセスをもたらした関連スレッドが中断され、別のスレッドが実行のために選択される。次に、仮想ベクトルレジスタファイル制御部７３０は、必要なベクトルレジスタを少なくとも小ベクトルレジスタファイル７１２に取り込むためにスワッピングプロセス（エビクション／割り当て分析）を実行する。割り当て／割り当て解除モジュール７４５及びベクトルレジスタ再マッピングテーブル７５０は、必要に応じて、何れの既存のベクトルレジスタをエビクトして、必要分を取り込むかを決定するために、エビクションリスト及びフリーリストをレビューする。この選択は、例えば、最長未使用時間（least recently used）等の標準的なエビクションポリシーに基づいて行うことができる。続いて、仮想ベクトルレジスタファイル制御部７３０は、欠けているベクトルレジスタをスワップインし、ベクトルレジスタを必要としていたスレッドが再びスケジュールされる準備ができていることをベクトルレジスタレディネスチェッカ７３４（そして最終的にＳＱ７０２のスケジューラ）に通知する。関連する命令は、次に、準備済ベクトルレジスタ７３６を有する命令バッファに転送され、発行を待つ。
【００３８】
準備済ベクトルレジスタ７３６を有する命令バッファ内の命令に関連する全てのベクトルレジスタは、デッドロックを招く可能性があるので、ベクトルレジスタバッキングストア７２０への送信対象からは失格となることに留意されたい。
【００３９】
本明細書に記載の仮想ファイルレジスタアーキテクチャは、ＳＩＭＴ毎又はＣＵ毎に実装することができる。これを前提として、仮想レジスタファイル制御部は、ＳＰ又はＳＱに実装することができる（図７を参照）。
【００４０】
図８は、特定の実施態様による、仮想ベクトルレジスタファイルを使用するためのフローチャート８００である。グラフィックスプロセッサは、メモリ要求を受信すると、要求されたベクトルレジスタが仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイル内に存在するかどうかを判別する。このとき、仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい（ブロック８０５）。ベクトルレジスタ再マッピングテーブルは、要求されたベクトルレジスタが仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイル内にあるかどうかを判別するためにインデックスされる（ブロック８１０）。割り当て／割り当て解除モジュールは、要求されたベクトルレジスタを対応する物理ハードウェアベクトルレジスタファイルに取り込むために、複数のリストをレビューする（ブロック８１５）。仮想ベクトルレジスタファイル制御部は、要求されたベクトルレジスタを対応する物理ハードウェアベクトルレジスタファイルに取り込むためのスワッピングプロセスを開始し（ブロック８２０）、要求されたベクトルレジスタが現在存在するという通知を送る（ブロック８２５）。
【００４１】
図９は、１つ以上の開示された実施形態の１つ以上の部分が実装され得る例示的な装置９００のブロック図である。装置９００は、例えば、ヘッドマウント装置、サーバ、コンピュータ、ゲーム装置、ハンドヘルド装置、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。装置９００は、プロセッサ９０２と、メモリ９０４と、ストレージ９０６と、１つ以上の入力デバイス９０８と、１つ以上の出力デバイス９１０と、を含む。また、装置９００は、入力ドライバ９１２及び出力ドライバ９１４を任意に含み得る。装置９００は、図９に示されていない追加の構成要素を含み得ることを理解されたい。
【００４２】
プロセッサ９０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含むことができ、各プロセッサコアは、ＣＰＵ又はＧＰＵとすることができる。メモリ９０４は、プロセッサ９０２と同じダイ上に配置されてもよいし、プロセッサ９０２とは別に配置されてもよい。メモリ９０４は、揮発性又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ、キャッシュ）を含み得る。
【００４３】
ストレージ９０６は、例えばハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ等の固定又は取り外し可能な記憶装置を含むことができる。入力デバイス９０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロホン、加速度計、ジャイロスコープ、バイオメトリックスキャナ、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／又はは受信用の無線ローカルエリアネットワークカード）を含むことができる。出力デバイス９１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、１つ以上のライト、アンテナ、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／又は受信用の無線ローカルエリアネットワークカード）を含むことができる。
【００４４】
入力ドライバ９１２は、プロセッサ９０２及び入力デバイス９０８と通信し、プロセッサ９０２が入力デバイス９０８から入力を受け取るのを可能にする。出力ドライバ９１４は、プロセッサ９０２及び出力デバイス９１０と通信し、プロセッサ９０２が出力デバイス９１０に出力を送るのを可能にする。入力ドライバ９１２及び出力ドライバ９１４は、オプションのコンポーネントであり、入力ドライバ９１２及び出力ドライバ９１４が存在しない場合には、デバイス９００は、同じように動作することに留意されたい。
【００４５】
概して、グラフィックスプロセッサは、論理ユニットと、論理ユニットに接続された仮想ベクトルレジスタファイルと、を含む。仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭ未満である。また、グラフィックスプロセッサは、仮想ベクトルレジスタファイルに接続されたベクトルレジスタバッキングストアと、仮想ベクトルレジスタファイルに接続された仮想ベクトルレジスタファイル制御部と、を含み、深さＮのベクトルレジスタファイル、深さＭのベクトルレジスタファイル及びベクトルレジスタバッキングストア間のエビクション／割り当ては、少なくとも特定のベクトルレジスタに対するアクセス要求に依存する。仮想ベクトルレジスタファイル制御部は、ベクトルレジスタ再マッピングテーブルと、ベクトルレジスタ再マッピングテーブルと仮想ベクトルレジスタファイルとベクトルレジスタバッキングストアとに接続された割り当て／割り当て解除モジュールと、を含む。
【００４６】
ベクトルレジスタ再マッピングテーブルは、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリには、ベクトルレジスタバッキングストア又は仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルへのポインタが格納されている。各テーブルエントリは、ベクトルレジスタが仮想ベクトルレジスタファイル内に物理的に存在するかどうかを示す常駐ビットと、ベクトルレジスタ割り当て／割り当て解除のための置換アルゴリズムの使用を可能にするアクセスビットと、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するためのダーティビットと、を含む。割り当て／割り当て解除モジュールは、複数のリストを使用して、エビクション候補を追跡し、エビクション／割り当て分析のために未割り当てのベクトルレジスタファイルを追跡する。割り当て／割り当て解除モジュールは、エビクション／割り当て分析のために、リストを使用してスレッド毎のベクトルレジスタファイルの所有権を追跡する。仮想ベクトルレジスタファイル制御部は、全てのベクトルレジスタがハードウェアに物理的に実装されているという論理ビューを外部コンポーネントに提供する。
【００４７】
概して、グラフィックスプロセッサにおいて仮想ベクトルレジスタファイルを使用する方法は、要求されたベクトルレジスタが、仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルに存在するか否かを判別する。仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい。また、方法は、仮想ベクトルレジスタファイル制御部によって、要求されたベクトルレジスタを対応する物理ハードウェアベクトルレジスタファイルに取り込むためのスワッピングプロセスを開始し、要求されたベクトルレジスタが現在存在するという通知を送信する。
【００４８】
さらに、方法は、要求されたベクトルレジスタが仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイル内にあるかどうかを判別するためにベクトルレジスタ再マッピングテーブルをインデックスし、割り当て／割り当て解除モジュールによって複数のリストをレビューして、要求されたベクトルレジスタを対応する物理ハードウェアベクトルレジスタファイルに取り込む。ベクトルレジスタ再マッピングテーブルは、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリには、ベクトルレジスタバッキングストア又は仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルへのポインタが格納されている。各テーブルエントリは、ベクトルレジスタが仮想ベクトルレジスタファイル内に物理的に存在するかどうかを示す常駐ビットと、レジスタ割り当て／割り当て解除のための置換アルゴリズムの使用を可能にするアクセスビットと、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するためのダーティビットと、を含む。複数のリストは、エビクション候補を追跡し、エビクション／割り当て分析を行うために未割り当てのベクトルレジスタファイルを追跡する。割り当て／割り当て解除モジュールは、リストを使用してスレッド毎のベクトルレジスタファイルの所有権を追跡することにより、エビクション／割り当て分析を行う。仮想ベクトルレジスタファイル制御部は、全てのベクトルレジスタがハードウェアに物理的に実装されているという論理ビューを外部コンポーネントに提供する。
【００４９】
概して、グラフィックスプロセッサで実行されると、仮想ベクトルレジスタファイルを使用する方法をグラフィックスプロセッサに実行させる命令を含む非一時的なコンピュータ可読記憶媒体であって、方法は、要求されたベクトルレジスタが、仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルに存在するか否かを判定することを含む。仮想ベクトルレジスタファイルは、深さＮのベクトルレジスタファイルと、深さＭのベクトルレジスタファイルと、を含み、ＮはＭより小さい。方法は、仮想ベクトルレジスタファイル制御部によって、要求されたベクトルレジスタを対応する物理ハードウェアベクトルレジスタファイルに取り込むためのスワッピングプロセスを開始し、要求されたベクトルレジスタが現在存在するという通知を送信する。さらに、方法は、要求されたベクトルレジスタが仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイル内にあるかどうかを判別するためにベクトルレジスタ再マッピングテーブルをインデックスし、割り当て／割り当て解除モジュールによって複数のリストをレビューして、要求されたベクトルレジスタを対応する物理ハードウェアベクトルレジスタファイルに取り込む。ベクトルレジスタ再マッピングテーブルは、仮想ベクトルレジスタ番号によってインデックスされ、各テーブルエントリには、ベクトルレジスタバッキングストア又は仮想ベクトルレジスタファイル内の対応する物理ハードウェアベクトルレジスタファイルへのポインタが格納されている。各テーブルエントリは、ベクトルレジスタが仮想ベクトルレジスタファイル内に物理的に存在するかどうかを示す常駐ビットと、ベクトルレジスタ割り当て／割り当て解除のための置換アルゴリズムの使用を可能にするアクセスビットと、次の上位レベルのベクトルレジスタファイル階層へのライトバックを最適化するためのダーティビットと、を含む。複数のリストは、エビクション候補を追跡し、エビクション／割り当て分析を行うために未割り当てのベクトルレジスタファイルを追跡する。割り当て／割り当て解除モジュールは、リストを使用してスレッド毎のベクトルレジスタファイルの所有権を追跡することにより、エビクション／割り当て分析を行う。仮想ベクトルレジスタファイル制御部は、全てのベクトルレジスタがハードウェアに物理的に実装されているという論理ビューを外部コンポーネントに提供する。
【００５０】
本明細書に記載の実施形態を限定することなく、概して、非一時的なコンピュータ可読記憶媒体は、処理システム内で実行されると、仮想ベクトルレジスタファイルを使用する方法を処理システムに実行させる命令を含む。
【００５１】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。特徴及び要素は特定の組み合わせで上述したように記載されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【００５２】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施され得る。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他の任意のタイプの集積回路（ＩＣ）、及び／又は、ステートマシン等が含まれる。かかるプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令の結果及びネットリストを含む他の中間データ（かかる命令は、コンピュータ可読媒体に記憶され得る）を使用して製造プロセスを構成することによって、製造され得る。かかる処理の結果は、実施形態の態様を実施するプロセッサを製造するために、半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００５３】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施され得る。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、光学媒体（例えばＣＤ―ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等）が含まれる。
【図１】
2019519843.tif 000003
【図２】
2019519843.tif 000004
【図３】
2019519843.tif 000005
【図４】
2019519843.tif 000006
【図５】
2019519843.tif 000007
【図６】
2019519843.tif 000008
【図７】
2019519843.tif 000009
【図８】
2019519843.tif 000010
【図９】
2019519843.tif 000011
【国際調査報告】
2019519843.tif 000012
2019519843.tif 000013