(57)【特許請求の範囲】
【請求項１】
チップ上の第１位置にある第１レジスタファイルであって、第１スレッドに関連付けられた第１レジスタファイルと、
前記チップ上の第２位置にある第２レジスタファイルであって、第２スレッドに関連付けられた第２レジスタファイルと、
前記第１及び第２レジスタファイルによって共有される第１ハードウェアリソースと、
前記チップ上の第３位置にある第３レジスタファイルとを具備し、
前記第１位置は前記第２位置に物理的に隣接し、
前記第１スレッドは、１つのパイプライン内の前記第２スレッドの第２パイプラインアクセス位置に対して、前方であり且つシーケンシャルでない第１パイプラインアクセス位置を有し、
前記第１レジスタファイルへのデータアクセスと前記第２レジスタファイルへのデータアクセスとは並行でなく、
前記第３レジスタファイルは第３スレッドに関連付けられ、
前記第３位置は、前記第１位置に物理的に隣接せず、
前記第１スレッドの前記第１パイプラインアクセス位置は、前記パイプライン内の前記第３スレッドの第３パイプラインアクセス位置に対して、前方であり且つシーケンシャルであり、
前記第１レジスタファイルへの第１データアクセスと前記第３レジスタファイルへの第２データアクセスとは少なくとも並行であるマルチスレッドプロセッサ。
【請求項２】
前記第１ハードウェアリソースは、論理素子とバス配線と論理リード素子と論理ライト素子の内の少なくとも一つを含む請求項１記載のプロセッサ。
【請求項３】
前記第１及び第２レジスタファイルを含む第１セットのレジスタファイルは、第１電力損失領域内に置かれ、
複数のレジスタファイルを含む第２セットのレジスタファイルは、前記第１電力損失領域から分離された第２電力損失領域内に置かれ、
前記第１及び第２レジスタファイルの内の一つは、前記第２セットのレジスタファイル内の前記複数のレジスタファイルの内の一つが第２ハードウェアリソースを並行して使用している間に、前記第１ハードウェアリソースを使用することができる請求項１記載のプロセッサ。
【請求項４】
前記第１ハードウェアリソースは、第１データリードバスを含み、前記第２ハードウェアリソースは、第２データリードバスを含む請求項３記載のプロセッサ。
【請求項５】
前記第１ハードウェアリソースは、前記第１電力損失領域内のレジスタファイルの各々の間の共有リソースである請求項３記載のプロセッサ。
【請求項６】
前記第２ハードウェアリソースは、前記第２セットのレジスタファイルの内の各レジスタファイルの間の共有リソースである請求項３記載のプロセッサ。
【請求項７】
前記第１セットのレジスタファイルは、偶数の番号が付けられたスレッドに対応し、前記第２セットのレジスタファイルは、奇数の番号が付けられたスレッドに対応する請求項３記載のプロセッサ。
【請求項８】
前記第１ハードウェアリソースは、第１データライトバスを含む第１データライトリソースを含み、前記第２ハードウェアリソースは、第２データライトバスを含む第２データライトリソースを含む請求項３記載のプロセッサ。
【請求項９】
前記第１及び第２電力損失領域の両方を含むエリアは、各レジスタファイルが少なくとも一つの他のレジスタファイルに隣接し、且つ隣接する２つのレジスタファイルが並列にアクセスされるエリアよりも、低い電力密度を有する請求項３記載のプロセッサ。
【請求項１０】
第１レジスタファイルと第２レジスタファイルとを含む第１レジスタファイルセットであって、前記第１レジスタファイルと前記第２レジスタファイルとは物理的に隣接するものである、第１レジスタファイルセットと、
第３レジスタファイルを含む第２レジスタファイルセットとを具備し、
前記第１レジスタファイルは、第１命令実行ストリームに関連付けられ、
前記第２レジスタファイルは、第２命令実行ストリームに関連付けられ、
前記第３レジスタファイルは、第３命令実行ストリームに関連付けられ、
前記第３レジスタファイルは、前記第１レジスタファイルと前記第２レジスタファイルの両方に対して、チップ上の物理的に隣接しない位置に配置され、
前記第３命令実行ストリームは、前記第１命令実行ストリームに対して、後方であり且つシーケンシャルであるパイプラインアクセス位置を有し、
前記第２命令実行ストリームは、前記第１レジスタファイルと第２レジスタファイルとの間のハードウェアリソース共有を可能にするために、前記第３命令実行ストリームに対して、後方であり且つシーケンシャルである第２パイプラインアクセス位置を有し、
前記第１レジスタファイルへの第１データアクセスと前記第３レジスタファイルへの第２データアクセスとは少なくとも並行であり、
前記第１レジスタファイルへのデータアクセスと前記第２レジスタファイルへのデータアクセスとは並行でないプロセッサ。
【請求項１１】
前記ハードウェアリソースは、論理素子とバス配線とを含む請求項１０記載のプロセッサ。
【請求項１２】
前記ハードウェアリソースは、前記第３レジスタファイルと共有されない第１データリードバスを含む請求項１０記載のプロセッサ。
【請求項１３】
前記第２レジスタファイルセットの内の第４レジスタファイルであって、前記第３レジスタファイルに物理的に隣接し、前記第１レジスタファイルと前記第２レジスタファイルいずれか一方に物理的に隣接しない第４レジスタファイルと、
前記第３レジスタファイル及び前記第４レジスタファイルによって共有されるが、前記第１レジスタファイル及び前記第２レジスタファイルによって共有されない第２データリードバスとをさらに具備する請求項１２記載のプロセッサ。
【請求項１４】
プロセッサの実行パイプライン内で、第１期間に第２ハードウェアリソースを使用して第２レジスタファイルからデータを読むことと並行して、第１ハードウェアリソースを使用して第１レジスタファイルからデータを読むことと、
前記プロセッサの前記実行パイプライン内で、前記第１期間に対して、後に発生し且つシーケンシャルである第２期間に、前記第１ハードウェアリソースを使用して第３レジスタファイルからデータを読むことと並行して、前記第２ハードウェアリソースを使用して前記第２レジスタファイルからデータを読むこととを具備し、
前記第１レジスタファイルは第１命令ストリームに関連付けられ、
前記第２レジスタファイルは第２命令ストリームに関連付けられ、
前記第１命令ストリームは、プロセッサの実行パイプライン内の前記第２命令ストリームに対して、前方にあり且つシーケンシャルであるパイプラインアクセス位置を有し、
前記第１レジスタファイルは前記第２レジスタファイルに対して隣接していない位置にあり、
前記第３レジスタファイルは第３命令ストリームに関連付けられ、
前記第２命令ストリームは、前記プロセッサの実行パイプライン内の前記第３命令ストリームに対して、前方であり且つシーケンシャルである第２パイプラインアクセス位置を有し、
前記第１レジスタファイルは、前記第３レジスタファイルに対して隣接する位置にあり、
前記第３レジスタファイルは、前記第２レジスタファイルに対して隣接しない位置にある方法。
【請求項１５】
前記第１レジスタファイル及び前記第２レジスタファイルにデータを書くことをさらに具備する請求項１４記載の方法。
【請求項１６】
前記チップ上の第４位置にある第４レジスタファイルをさらに具備し、
前記第４レジスタファイルは第４スレッドに関連付けられ、
前記第４位置は、前記第２位置に物理的に隣接せず、
前記第４スレッドの第４パイプラインアクセス位置は、前記パイプライン内の前記第２スレッドの前記第２パイプラインアクセス位置に対して、後方であり且つシーケンシャルであり、
前記第２レジスタファイルへの第３データアクセスと前記第４レジスタファイルへの第４データアクセスとは少なくとも並行である請求項１記載のプロセッサ。
【請求項１７】
前記第１レジスタファイルセットの内の、第１の複数のレジスタファイルは、第１セットのハードウェアリソースを共有し、前記第２レジスタファイルセットの内の、第２の複数のレジスタファイルは、第２セットのハードウェアリソースを共有する請求項１０記載のプロセッサ。
【請求項１８】
前記第１及び第２レジスタファイルセットにデータを書き込むための、前記第１及び第２レジスタファイルセットにつながれた単一のデータライトバスをさらに具備し、前記並行である第１データアクセスと第２データアクセスとはデータリードアクセスである請求項１０記載のプロセッサ。
【請求項１９】
前記第１レジスタファイルセットは、第１電力損失領域内に位置し、前記第２レジスタファイルセットは、第２電力損失領域内に位置する請求項１０記載のプロセッサ。
【請求項２０】
第２ハードウェアリソースをさらに具備し、
前記第２ハードウェアリソースは、前記第２レジスタファイルセットによって共有されるが、前記第１レジスタファイルセットによって共有されない第２データリードバスを含む請求項１２記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にパイプライン処理のためのレジスタファイルシステム及び方法に関する。
【背景技術】
【０００２】
技術の進歩は、より小さくより強力なパーソナルコンピューティングデバイスをもたらす。例えば、小さく、軽量で、ユーザによって容易に運ばれる、携帯無線電話機、携帯情報端末（ＰＤＡ）、及びページングデバイスのような無線コンピューティングデバイスを含む様々なポータブルパーソナルコンピューティングデバイスが現在存在する。より具体的には、携帯電話及びＩＰ電話のような携帯無線電話機は、無線ネットワーク上で、音声及びデータパケットを通信することができる。さらに、複数のそのような無線電話が、その中に組み込まれる他のタイプのデバイスを含む。例えば、無線電話は、ディジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、及びオーディオファイルプレーヤを含むこともできる。さらに、そのような無線電話は、インターネットにアクセスするために使用することができるウェブブラウザアプリケーションのようなソフトウェアアプリケーションを含む、実行可能な命令を処理することができる。そのため、これら無線電話は、重要な（significant）コンピューティング能力を含むことができる。
【０００３】
デジタル信号プロセッサ（ＤＳＰ）は、無線電話のようなポータブルパーソナルコンピューティングデバイス内で頻繁に使用される。そのようなＤＳＰは、ビデオ及びオーディオ機能を提供するか、受信データを処理するか、又は他の機能を実行するために利用することができる。そのようなＤＳＰは、パイプライン化された又は並列の実行ユニットを使用することができる。
【０００４】
最新の（modern）マイクロプロセッサ又はＤＳＰ内のレジスタファイルは、その相対的な大きさ、そのデータバスの幅及びその配線（wire traces）の長さにより、かなりの電力（power）を消費する。あるプロセッサでは、多数のレジスタファイルが使用され、また、そのようなレジスタファイルは、デバイスの全体的な電力消費の一因となる。さらに、回路デバイスの隣接エリア内における複数のレジスタファイルの配置は、電力消費密度を増加させ、回路加熱による非効率の一因となり得る。したがって、強化された（enhanced）レジスタファイル構造及びレジスタファイルを使用する方法に対する要求がある。
【発明の概要】
【０００５】
ある実施形態では、マルチスレッドプロセッサが開示される。プロセッサは、第１スレッドに関連付けられた第１レジスタファイルと、第２スレッドに関連付けられた第２レジスタファイルとを含む。少なくとも１つのハードウェアリソースは、第１及び第２レジスタファイルによって共有される。さらに、第１スレッドは、第２スレッドにシーケンシャルでない（non-sequential）パイプラインアクセス位置を有する。
【０００６】
他のある実施形態では、プロセッサは、第１命令実行ストリームに関連付けられた第１レジスタファイルと、第２命令実行ストリームに関連付けられた第２レジスタファイルとを含む。第１及び第２実行ストリームは、シーケンシャルな方法でパイプライン化され、第１レジスタファイルは、第１レジスタファイルと第３レジスタファイルとの間のハードウェアリソースの共有を許可するための第２レジスタファイルに対して、隣接しない位置に置かれる。
【０００７】
他のある実施形態では、プロセッサは、第１命令ストリームを実行する第１実行パイプライン、第２命令ストリームを実行する第２実行パイプライン、第１命令ストリームに関連付けられた第１レジスタファイル、及び第２命令ストリームに関連付けられた第２レジスタファイルを含む。第１及び第２命令ストリームは、第１及び第２レジスタファイルのシーケンシャルでないアクセスを有する、第１及び第２実行パイプライン内で、第１及び第２レジスタファイルに少なくとも１つのハードウェアリソースを共有することを可能にするように構成される。
【０００８】
他のある実施形態では、複数のレジスタファイルにアクセスする方法が開示される。方法は、第２レジスタファイルからデータを読むことと同時に、第１レジスタファイルからデータを読むことを含む。第１レジスタファイルは第１命令ストリームに関連付けられ、第２レジスタファイルは第２命令ストリームに関連付けられる。第１命令ストリームは、プロセッサの実行パイプライン内の第２命令ストリームにシーケンシャルであり、第１レジスタファイルは、第２レジスタファイルに対して隣接しない場所にある。
【０００９】
他のある実施形態では、アクセスするレジスタファイルを選択する方法が開示される。方法は、第２セットのレジスタファイルの少なくとも１つをアクセス可能にすることと同時に、第１セットのレジスタファイルの少なくとも１つを選択的にアクセス可能にすることを含む。方法は、第１セットのレジスタファイルの少なくとも１つから、第１命令ストリームに関連付けられた第１命令ユニットにデータを供給することと、第２セットのレジスタファイルの少なくとも１つから、第２命令ストリームに関連付けられた第２命令ユニットにデータを供給することと、少なくとも１つのパイプライン実行ユニットを使用して、第１及び第２命令ストリームを実行することとをさらに含む。第１セットのレジスタファイルは、第１セットのハードウェアリソースを共有し、第２セットのレジスタファイルは、第２セットのハードウェアリソースを共有する。
【００１０】
レジスタファイルシステム及びパイプライン処理のための方法の実施形態によってもたらされる１つの特別な利点は、製造のコスト削減、動作中の電力密度（power density）の削減、又はその両方において与えられる。
【００１１】
本開示の他の態様、利点及び特徴は、後続する節、すなわち、図面の簡単な説明、詳細な説明及び特許請求の範囲を含む出願全体の検討後に明らかになるだろう。
【図面の簡単な説明】
【００１２】
【図１】図１は、パイプライン処理のためのレジスタファイルシステムを含むプロセッサの実施形態のブロック図である。
【図２】図２は、パイプライン処理のためのレジスタファイルシステムの物理的なレイアウトの実施形態の一部のブロック図である。
【図３】図３は、パイプライン処理のためのレジスタファイルシステムを使用して実行され得るパイプライン処理動作を示す一般的な図である。
【図４】図４は、パイプライン処理のためのレジスタファイルを使用する方法の実施形態のフローチャートである。
【図５】図５は、パイプライン処理のためのレジスタファイルシステムを含む携帯通信装置のブロック図である。
【発明を実施するための形態】
【００１３】
図１を参照して、プロセッサ１００が開示される。ある実例となる（illustrative）実施形態では、プロセッサ１００はマルチスレッド化された（multi-threaded）デジタル信号プロセッサであり得る。プロセッサ１００は、命令キュー１３４を有するメモリ１０２、メモリバス１０７、シーケンサユニット１０４、複数の実行ユニット１０８−１１４、第１バス１１８、ハードウェアリソース１１６を共有するための構造を有するレジスタファイル、及び第２バス１２０を含む。シーケンサ１０４は、制御レジスタ１０３に連結される。メモリ１０２は、第２バス１２０に連結され、シーケンサ１０４も第２バス１２０に連結される。
【００１４】
ある実施形態では、メモリバス１０７は６４ビットバスになり得、シーケンサ１０４はメモリ１０２から命令を検索するように構成することができる。ある実例となる実施形態では、各命令は、３２ビットの長さを有し得る。シーケンサ１０４は、第１パス（スロット０）を介して第１命令実行ユニット１０８に、第２パス（スロット１）を介して第２命令実行ユニット１１０に、第３パス（スロット２）を介して第３命令実行ユニット１１２に、そして第４パス（スロット３）を介して第４命令実行ユニット１１４に連結される。各命令実行ユニット１０８，１１０，１１２，及び１１４は、第１バス１１８を介して、構造化されたレジスタファイル１１６のセットに連結されることができる。レジスタファイル１１６も、第２バス１２０を介して、シーケンサ１０４及びメモリ１０２に連結されることができる。
【００１５】
ある実施形態では、メモリ１０２は、第１命令キャッシュ１２２、第２命令キャッシュ１２４、第３命令キャッシュ１２６、第４命令キャッシュ１２８、第５命令キャッシュ１３０、及び第６命令キャッシュ１３２を含む連想記憶装置（content addressable memory）（ＣＡＭ）であり得る。動作中に、シーケンサ１０４は、命令キャッシュ１２２，１２４，１２６，１２８，１３０，及び１３２の各々にアクセスすることができる。さらに、ある実施形態では、各命令キャッシュ１２２，１２４，１２６，１２８，１３０，及び１３２は、複数の命令、各命令に対する命令操縦（steering）データ、及び各命令に対する命令事前復号（pre-decode）データを含む。メモリ１０２内の命令キュー１３４は、キャッシュ１２２，１２４，１２６，１２８，１３０，及び１３２に対応する各命令のための命令キュー１３６，１３８，１４０，１４２，１４４，及び１４６を含み得る。
【００１６】
レジスタファイル１１６は、第１セットのレジスタファイルと第２セットのレジスタファイルとを含む。第１セットのレジスタファイルは、少なくとも一つの第１ハードウェアリソースを共有し、第２セットのレジスタファイルは、少なくとも一つの第２ハードウェアリソースを共有する。ハードウェアリソースが共有される例は、データリードポート、データライトポート、データリードバス、データライトバス、アクセスロジック、及び配線接続を含む。ある実施形態では、レジスタファイル１１６は、６つのレジスタファイルの各々が、メモリ１０２内で、それぞれ命令キャッシュ１２２，１２４，１２６，１２８，１３０，及び１３２のうちの１つに対応する、６つの異なるレジスタファイルを含む。さらに、ある実施形態では、レジスタファイルの各々は同一の構造を有し得、等しい数のデータオペランド及びアドレスオペランドを含み得る。
【００１７】
図１は、マルチスレッドプロセッサ１００が、シーケンサ１０４に連結される制御レジスタ１０３をさらに含むことができることを示す。図のように、制御レジスタ１０３はスタンドアロンのレジスタであり得る。
【００１８】
マルチスレッドプロセッサ１００の動作中に、命令は、シーケンサ１０４によってメモリ１０２からフェッチされ（fetched）、選択された命令実行ユニット１０８，１１０，１１２，及び１１４に送信され、命令実行ユニット１０８，１１０，１１２，及び１１４で実行される。各命令実行ユニット１０８，１１０，１１２，及び１１４で実行された命令からの結果は、汎用レジスタファイル１１６のうちの一つに書き込まれ得る。ある実施形態では、プロセッサ１００がマルチプログラムスレッドを実行することができる。さらに、ある実施形態では、プロセッサ１００は、インターリーブされた方式で６つまでの異なるプログラムスレッドを実行するように構成されることができる。プログラムスレッドの各々は、命令ストリームを含み得、各命令ストリームは、１つ以上の実行ユニット１０８，１１０，１１２，又は１１４を使用して、パイプライン化された方法で実行され得る。
【００１９】
図２を参照すると、パイプライン処理のためのレジスタファイルシステムの物理的な配置の実施形態の一部は、一般に２００に指定され、描かれる。システム２００は、第１セットのレジスタファイル２０２と第２セットのレジスタファイル２０４とを含む。第１セットのレジスタファイル２０２は、レジスタファイルＲ０（２０６）、Ｒ２（２０８）、及びＲ４（２１０）を含む。第２セットのレジスタファイル２０４は、Ｒ３（２１２）、Ｒ５（２１４）、及びＲ１（２１６）を含む。第１バス２２０は、第１セットのレジスタファイル２０２のレジスタファイルの各々に、リードアクセス、ライトアクセス、又はそれらの任意の組合せを提供するために、Ｒ０（２０６）、Ｒ２（２０８）、及びＲ４（２１０）の各々に連結される。第２バス２３０は、第２セットのレジスタファイル２０４のレジスタファイルの各々に、リードアクセス、ライトアクセス、又はそれらの任意の組合せを提供するために、Ｒ３（２１２）、Ｒ５（２１４）、及びＲ１（２１６）の各々に連結される。アクセスバス２４０は、第１バス２２０及び第２バス２３０に連結される。アクセスバス２４０は、１つ以上の実行ユニット２６０にさらに連結される。第１のイネーブル回路２５０は、第１セットのレジスタファイル２０２の各レジスタファイルに連結される。第２のイネーブル回路２５２は、第２セットのレジスタファイル２０４の各レジスタファイルに連結される。
【００２０】
ある実施形態では、第１セットのレジスタファイル２０２及び第２セットのレジスタファイル２０４内の各レジスタファイルは、独立した命令実行ストリームに関連付けられる。
【００２１】
例えば、Ｒ０（２０６）は第１実行ストリームに関連付けられ得、Ｒ１（２１６）は第２命令実行ストリームに関連付けられ得、Ｒ２（２０８）は第３命令実行ストリームに関連付けられ得、Ｒ３（２１２）は第４命令実行ストリームに関連付けられ得、Ｒ４（２１０）は第５命令実行ストリームに関連付けられ得、Ｒ５（２１４）は第６命令実行ストリームに関連付けられ得る。示される実施形態では、命令実行ストリームの各々は、マルチスレッドプロセッサの特定のスレッドに対応し得る。他の実施形態では、命令実行ストリームの各々は、パイプライン化され得、インターリーブされ得る。命令ストリームは超長命令語（Very Long Instruction Word）（ＶＬＩＭ）タイプ命令、スーパースカラータイプ命令、パイプライン化され得る他のタイプの命令、又はそれらの任意の組み合わせを含み得る。
【００２２】
ある実施形態では、シーケンシャルなパイプライン命令実行ストリームは、隣接していないレジスタファイル２０６−２１６に関連付けられる。例えば、第１実行ストリームに関連付けられたＲ０（２０６）、及び第２実行ストリームに関連付けられたＲ１（２１６）は、シーケンシャルなパイプラインアクセス位置を有するが、隣接していない物理的な位置に置かれる。さらに、物理的に隣接するレジスタファイル２０６−２１６は、シーケンシャルでないパイプラインアクセス位置を有する。例えば、Ｒ２が、第１実行ストリームにシーケンシャルでないパイプラインアクセス位置を有する第３実行ストリームに関連付けられている間、Ｒ０（２０６）は、Ｒ２（２０８）に物理的に隣接するが、第１実行ストリームに関連付けられる。
【００２３】
示される実施形態では、Ｒ０（２０６）のような第１レジスタファイルに関連付けられる第１実行ストリーム、及びＲ１（２１６）のような第２レジスタファイルに関連付けられる第２実行ストリームは、第１及び第２レジスタファイルが物理的に隣接しないとき、シーケンシャルなパイプラインアクセスを有し得る。Ｒ２（２０８）のような第３実行ストリームに関連付けられる第３のレジスタファイルは、第３実行ストリームが第１実行ストリームに対して非シーケンシャルにパイプライン化されるとき、第１レジスタファイルに物理的に隣接し得る。
【００２４】
ある実施形態では、複数のレジスタファイルへのデータアクセスが並行して生じ得る。例えば、Ｒ０（２０６）を使用して、第１命令実行ストリームで実行するデータリード命令は、Ｒ１（２１６）を使用して、第２命令ストリームで実行するデータリード操作（operation）と並行して、データリード操作を行い得る。
【００２５】
ある実施形態では、命令実行ストリームは、操作の１つ以上の予め定義されたシーケンスを含み得る。例えば、命令のストリームは、関連するレジスタファイルからの２つのシーケンシャルなデータリード操作を含み得、１つ以上のデータ実行操作が続く。したがって、データは、シーケンシャルな命令実行ストリームに関連付けられる、２つのレジスタファイルから並行して読まれ得る。レジスタファイル２０２及び２０４のセットは、シーケンシャルな命令実行ストリームに関連付けられたレジスタファイルが、レジスタファイル２０２及び２０４の異なるセット内に置かれるように配置される。特に、レジスタファイル２０２及び２０４のセットは、偶数の番号が付けられた命令実行ストリームと奇数の番号が付けられた命令実行ストリームとによってグループ化される。
【００２６】
第１セットのレジスタファイル２０２のレジスタファイルＲ０（２０６）、Ｒ２（２０８）及びＲ４（２１０）は、互いに対して非連続に実行される、それぞれの命令実行ストリームに関連付けられる。同様に、第２セットのレジスタファイル２０４のレジスタファイルＲ３（２１２）、Ｒ５（２１４）及びＲ１（２１６）も、互いに対して非連続に実行される、それぞれの命令実行ストリームに関連付けられる。したがって、命令実行ストリームのための並列データアクセス操作は、第１セットのレジスタファイル２０２内で共有されるハードウェアリソース、又は第２セットのレジスタファイル２０４内で共有されるハードウェアリソースにおける競合を生じない。
【００２７】
ある実施形態では、第１セットのレジスタファイル２０２は、第１セットのハードウェアリソースを共有するために配置され、第２セットのレジスタファイル２０４は、第２セットのハードウェアリソースを共有するために配置される。例えば、第１セットのレジスタファイル２０２は、第１イネーブル回路２５０を共有する。さらに、第１セットのレジスタファイル２０２は、データリードロジック又はデータライトロジックのような１つ以上の論理素子を含む第１の共通データアクセスリソースと、第１バス２２０に関連付けられたバス配線とを共有する。第１セットのレジスタファイル２０２は、他のデータ配線、制御線、他のハードウェアリソース、又はそれらの任意の組合せも共有し得る。同様に、第２セットのレジスタファイル２０４は、第２のイネーブル回路２５２を共有する。さらに、第２セットのレジスタファイル２０４は、データリードロジック又はデータライトロジックのような１つ以上の論理素子を含む第２の共通データアクセスリソースと、第２バス２３０に関連付けられたバス配線とを共有する。第２セットのレジスタファイル２０４は、他のデータ配線、制御線、他のハードウェアリソース、又はそれらの任意の組合せも共有し得る。
【００２８】
ある実施形態では、ハードウェアリソースは、第１セットのレジスタファイル２０２内で共有され得るが、そのようなハードウェアリソースは、第２セットのレジスタファイル２０４のレジスタファイルによって共有されないかもしれない。同様に、ハードウェアリソースは、第２セットのレジスタファイル２０４内で共有され得るが、第１セットのレジスタファイル２０２のレジスタファイルによって共有されないかもしれない。例えば、第１バス２２０は、Ｒ０（２０６）のような第１レジスタファイル及びＲ２（２０８）のような第３レジスタファイルによって共有される第１のデータリードバスを含み得るが、第１バス２２０は、Ｒ１（２１６）のような第２レジスタファイル又はＲ３（２１２）のような第４のレジスタファイルによって共有されない。同様に、第２バス２３０は、第２レジスタファイルＲ１（２１６）及び第４のレジスタファイルＲ３（２１２）によって共有される第２のデータリードバスを含み得るが、第２バス２３０は、第１レジスタファイルＲ０（２０６）及び第３のレジスタファイルＲ２（２０８）によって共有されない。したがって、シーケンシャル実行ストリームが、第１及び第２レジスタファイル、第２及び第３レジスタファイル、又は第３及び第４レジスタファイルへのリードアクセスのような、並列データリード操作を行うとき、第１データリードバス及び第２データリードバスの両方は利用され得、競合は導入され（introduced）ない。
【００２９】
複数の命令実行ストリームの操作の実行の間に、電力密度（power density）を削減するために、第１セットのレジスタファイル２０２及び第２セットのレジスタファイル２０４は、個別の領域に物理的に配置される。例えば、第１の領域に置かれた第１セットのレジスタファイル２０２、及び第２領域に置かれた第２セットのレジスタファイル２０４は、シーケンシャルな命令実行ストリームに関連付けられたレジスタファイルで並行して生じるデータリードの間に、総電力損失（dissipation）を削減するために配置される。第１及び第２領域の両方を含むエリアが、各レジスタファイルが、少なくとも１つの他のレジスタファイルに隣接する比較可能なエリアより低い電力密度を有するように、第１領域は第１電力損失エリアに置かれ得、第２領域は、第２電力損失エリアに置かれ得る。例えば、Ｒ０（２０６）及びＲ１（２１６）で行われる並列データリードが、物理的に分離され、隣接していない場所で生じて、物理的に隣接したレジスタファイルで行われるデータリードと比較して、総電力密度を削減し、チップ性能を改良する。他の例として、Ｒ３（２１２）及びＲ４（２１０）の並列データリードが、第１領域及び第２領域の物理的に分離され、隣接していない場所で生じて、それにより、総電力密度を削減し、チップ性能を改良する。
【００３０】
ある実施形態では、システム２００の構成は、共有リソースを越えて（across）、競合を削減又は消去することにより、レジスタファイル２０２及び２０４の各セット内のハードウェアリソースの共有を可能にするために、レジスタファイルを設定することによって製造コストをより低くすることを可能にする。さらに、性能の利点は、レジスタファイルの各々へのシーケンシャルアクセスの順序に対する、個々のレジスタファイルの物理的な位置により得られ、削減された電力密度及び改良されたチップ性能を可能にする。
【００３１】
図３を参照して、パイプライン処理操作の実例となる実施形態は、一般に３００に指定され、描かれるレジスタファイルシステムで実行され得る。操作３００は、シーケンシャルな期間Ｔ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５，及びＴ６を示す列と、パイプライン命令ストリーム１−６を示す行とを備える表のフォーマットで描かれる。実例となる例として命令ストリーム１を用いて、第１リード操作  
【数１】
0005420545.tif 000002
【００３２】
がＴ１で行われ、Ｔ２で行われる第２リード操作  
【数２】
0005420545.tif 000003
【００３３】
が後に続く。第１実行操作  
【数３】
0005420545.tif 000004
【００３４】
がＴ３で行われ、Ｔ４で行われる第２実行操作  
【数４】
0005420545.tif 000005
【００３５】
及びＴ５で行われる第３実行操作  
【数５】
0005420545.tif 000006
【００３６】
が後に続く。データライト操作Ｗ１はＴ６で行われる。同様に、命令ストリーム２は、Ｔ２で第１リード操作  
【数６】
0005420545.tif 000007
【００３７】
を、Ｔ３で第２リード操作  
【数７】
0005420545.tif 000008
【００３８】
を、Ｔ４で実行操作  
【数８】
0005420545.tif 000009
【００３９】
を、Ｔ５で実行操作  
【数９】
0005420545.tif 000010
【００４０】
を、Ｔ６で実行操作  
【数１０】
0005420545.tif 000011
【００４１】
を行う。
【００４２】
リード操作が、パイプライン処理中に、ストリーム１のためのＴ１及びＴ２のような、シーケンシャルな期間で行われるので、リード操作はシーケンシャルなパイプラインアクセスを有するストリームに並行して行われる。例えば、期間Ｔ２に、リード操作  
【数１１】
0005420545.tif 000012
【００４３】
を行うストリーム２に並行して、ストリーム１はリード操作  
【数１２】
0005420545.tif 000013
【００４４】
を行う。他の例として、第３の期間Ｔ３に、リード操作  
【数１３】
0005420545.tif 000014
【００４５】
を行うストリーム３に並行して、ストリーム２はリード操作  
【数１４】
0005420545.tif 000015
【００４６】
を行う。同様に、各命令実行ストリームが３つのシーケンシャル実行ステップを含むので、複数のストリームは実行ステップを並行して行う。例えば、期間Ｔ６で、ストリーム２は実行操作  
【数１５】
0005420545.tif 000016
【００４７】
を処理し、ストリーム３は実行操作  
【数１６】
0005420545.tif 000017
【００４８】
を処理し、ストリーム４は実行操作  
【数１７】
0005420545.tif 000018
【００４９】
を処理している。
【００５０】
ある実施形態では、命令ストリーム１−６は、パイプラインプロセッサの多数の実行パイプラインを介して実行され得る。実例となる実施形態では、命令ストリーム１−６は、インターリーブされたマルチスレッドプロセッサによって実行され得る。ある実施形態では、命令ストリーム１−６の各々は、超長命令語（ＶＬＩＭ）タイプ命令であり得る。他の実施形態では、命令ストリーム１−６の各々は、スーパースカラータイプ命令であり得る。
【００５１】
ある実施形態では、図２のシステム２００のようなパイプライン処理のためのレジスタファイルシステムは、ストリーム１−６に関連付けられたレジスタファイル間で共有されるハードウェアリソースの使用を可能にし得る。例えば、シーケンシャルなストリームに関連付けられたレジスタファイルで、並列データリード操作が単に行われるので、同時に起こるリードが、競合を導入することなく行われ得るように、レジスタファイルは、各グループが個別のデータリードバスを共有するグループ内に配置され得る。他の例として、同時データライト操作が行われないため、単一のデータライトバスは、ライト競合を導入することなく、第１命令ストリームのための第１レジスタファイルと、第１命令ストリームにシーケンシャルな第２の命令ストリームのための第２レジスタファイルとで、データを書き込むことに用いられ得る。
【００５２】
図４を参照すると、レジスタファイルをパイプライン処理に使用する方法の実例となる実施形態は、一般に４００に指定され、描かれる。４０２において、第２セットのレジスタファイルの少なくとも１つがアクセス可能にされると同時に、第１セットのレジスタファイルの少なくとも１つは選択的にアクセス可能にされる。例えば、レジスタファイルＲ２（２０８）は、レジスタファイルＲ１（２１６）と並行してアクセスされ得る。ある実施形態では、第１セットのレジスタファイルは、第１セットのハードウェアリソースを共有し、第２セットのレジスタファイルは、第２セットのハードウェアリソースを共有する。例えば、第１セットのハードウェアリソースは、データリードバスを含み得る。実例となる実施形態では、第１セットのレジスタファイルは、第１セットのレジスタファイル２０２であり得、第２セットのレジスタファイルは、図２の第２セットのレジスタファイル２０４、又は図１に描かれた実行ユニット１０８−１１４であり得る。
【００５３】
４０４において、データは、第１セットのレジスタファイルの少なくとも１つから、第１命令ストリームに関連付けられた第１命令ユニットに供給され得る。４０６において、データは、第２セットのレジスタファイルの少なくとも１つから、４０６で第２命令ストリームに関連付けられた第２命令ユニットに供給され得る。４０８において、第１及び第２命令ストリームは、少なくとも１つのパイプライン実行ユニットを使用して実行され得る。ある実施形態では、第１命令ユニット、第２命令ユニット及び実行ユニットは、パイプライン実行ストリームを処理するように構成される実行ユニットであり得る。実例となる実施形態では、実行ユニットは図２に描かれた実行ユニット２６０である。
【００５４】
実例となる実施形態では、命令は、所定の順序でパイプライン実行ユニット内で実行され得る。ある実施形態では、命令の各々は、超長命令語（ＶＬＩＭ）タイプ命令としてパイプライン実行ユニット内で実行され得る。他の実施形態では、命令の各々は、スーパースカラータイプ命令としてパイプライン実行ユニット内で実行され得る。
【００５５】
図５は、パイプライン処理にレジスタファイルシステムを使用する、携帯通信装置のブロック図である。携帯通信装置５００は、デジタル信号プロセッサ５１０のようなパイプラインプロセッサを含む、オンチップシステム５２２を含む。デジタル信号プロセッサ５１０は、共有されるハードウェアリソースを備えるレジスタファイル５７０を含む。例えば、プロセッサ５１０及び共有されるハードウェアリソースを備えるレジスタファイル５７０は、図１又は２のシステムの部分を含み得、図３もしくは４に記述された操作、又はそれらの任意の組み合わせを利用し得る。ある実例となる実施形態では、共有されるハードウェアリソースを備えるレジスタファイル５７０は、デジタル信号プロセッサ５１０のようなパイプラインプロセッサのサポートのために、削減された電力密度、削減された製造コスト、又はその両方を可能にし得る。
【００５６】
ある実施形態では、隣接したレジスタファイルが、シーケンシャルな命令実行ストリームによって、データ操作のためにアクセスされないように、共有されるハードウェアリソースを備えるレジスタファイル５７０を構成することにより、電力密度は処理中に削減され得、それにより、隣接するレジスタファイルの場所での同時データアクセス操作を防ぐ。同様に、共有されるハードウェアリソースを備えるレジスタファイル５７０を、同じタイプの同時データアクセス操作と少なくとも同数のレジスタファイルのセットに分割することにより、製造コストは削減され得る。例えば、図３に示すように、２つのパイプライン命令実行ストリームが、関連するレジスタファイルで並行してデータリード操作を行う場合、少なくとも２セットのレジスタファイルが、図２に示すように、競合を生じることなく、レジスタファイルの各セットが、そのセットのレジスタファイルの間でデータアクセスハードウェアリソースを共有して、定義され得る。他の例として、３つのパイプライン命令実行ストリームが、関連するレジスタファイルで並行してデータリード操作を行う場合、少なくとも３セットのレジスタファイルが、各セット内で競合を生じることなく、そのセットのレジスタファイルの間で、レジスタファイルの各セットがデータアクセスハードウェアリソースを共有して、定義され得る。
【００５７】
図５は、デジタル信号プロセッサ５１０とディスプレイ５２８とに連結されるディスプレイコントローラ５２６も示す。さらに、入力デバイス５３０はデジタル信号プロセッサ５１０に連結される。さらに、メモリ５３２はデジタル信号プロセッサ５１０に連結される。符号化器／復号器（ＣＯＤＥＣ）５３４は、デジタル信号プロセッサ５１０に連結されることもできる。スピーカー５３６及びマイクロホン５３８は、ＣＯＤＥＣ５３４に連結されることができる。
【００５８】
図５は、無線コントローラ５４０がデジタル信号プロセッサ５１０及び無線アンテナ５４２に連結され得ることも示す。ある実施形態では、電源５４４はオンチップシステム５２２に連結される。さらに、ある実施形態では、図５に示されるように、ディスプレイ５２８、入力デバイス５３０、スピーカー５３６、マイクロホン５３８、無線アンテナ５４２、及び電源５４４は、オンチップシステム５２２の外側にある。しかしながら、各々はオンチップシステム５２２の部品（component）に連結される。
【００５９】
ある実例となる実施形態では、共有されるハードウェアリソースを備えるレジスタファイル５７０は、携帯通信デバイス５００の総合的なパフォーマンスを向上させるために使用されてもよい。特に、共有されるハードウェアリソースを備えるレジスタファイル５７０は、電力密度を削減し得、それにより、より速い処理速度を可能にし、また、デバイス５００の性能を下げることなく共通のハードウェアを共有することによって製造コストを削減し得る。
【００６０】
当業者は更に、本明細書に開示された実施形態に関連して記載された、様々な実例となる論理ブロック、コンフィギュレーション、モジュール、回路、及びアルゴリズムステップが、電子工学的ハードウェア、コンピュータソフトウェア、又はそれらの組合せとして実現されうることをよく理解するであろう。ハードウェアとソフトウェアとの相互置換性を明確に説明するために、様々な実例となる構成要素、ブロック、コンフィギュレーション、モジュール、回路、及びステップが、それらの機能の観点から一般的に説明された。このような機能が、ハードウェアとして実現されるかソフトウェアとして実現されるかは、システム全体に課された設計制約及び特定のアプリケーションによる。当業者は、各特定のアプリケーションのために上述した機能を様々な方法で実装することができるが、このような実装の決定は、本開示の範囲から逸脱させるものとして解釈されてはならない。
【００６１】
本明細書に開示された実施形態に関連して記述された方法やアルゴリズムのステップは、ハードウェアによって直接、プロセッサによって実行されるソフトウェア・モジュールによって、又は、これらの組み合わせによって具現化されうる。ソフトウェア・モジュールは、ＲＡＭメモリ、フラッシュ・メモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハード・ディスク、リムーバブル・ディスク、ＣＤ−ＲＯＭ、又は当該技術分野で知られているその他任意の形式の記憶媒体に収納されうる。典型的な記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるように、プロセッサに連結される。あるいは、記憶媒体はプロセッサに統合され得る。このプロセッサと記憶媒体とは、ＡＳＩＣ内に存在し得る。ＡＳＩＣは、コンピューティングデバイス又はユーザ端末内に存在し得る。あるいはこのプロセッサと記憶媒体とは、コンピューティングデバイス又はユーザ端末内の個別（discrete）部品として存在することができる。
【００６２】
本開示の実施形態における上記記載は、当業者をして、本開示の実施形態の製造又は利用を可能とするために提供される。これら実施形態への様々な変形例もまた、当業者には明らかであり、本明細書で定義された一般原理は、本開示の精神又は範囲から逸脱することなく他の実施形態にも適用されうる。従って本開示は、本明細書で説明された実施形態に限定することは意図されておらず、後続する特許請求の範囲に定義されるような原理及び新規特徴と整合が取れた最も広い範囲と一致するように意図される。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］第１スレッドに関連付けられた第１レジスタファイルと、
第２スレッドに関連付けられた第２レジスタファイルと、
前記第１及び第２レジスタファイルによって共有されるハードウェアリソースとを具備し、
前記第１スレッドが前記第２スレッドに非シーケンシャルであるパイプラインアクセス位置を有するマルチスレッドプロセッサ。
［２］前記第１レジスタファイルは、前記第２レジスタファイルに物理的に隣接する［１］記載のプロセッサ。
［３］前記第１レジスタファイルは、前記第２レジスタファイルに物理的に隣接せず、前記第１及び第２レジスタファイルは、前記パイプラインにおけるシーケンシャルアクセスを有する［１］記載のプロセッサ。
［４］前記ハードウェアリソースは、論理素子とバス配線を含む［１］記載のプロセッサ。
［５］前記論理素子は、論理リード素子を含む［４］記載のプロセッサ。
［６］前記論理素子は、論理ライト素子を含む［４］記載のプロセッサ。
［７］第１セットのレジスタファイルは、第１領域内に置かれ、第２セットのレジスタファイルは、前記第１領域から分離された第２領域内に置かれ、前記第２領域内の前記第２レジスタファイルが第２データアクセスリソースを使用すると同時に、前記第１領域内の前記第１レジスタファイルは、前記第１データアクセスリソースを使用することができる［１］記載のプロセッサ。
［８］前記第１データアクセスリソースは、第１データリードバスを含み、前記第２データアクセスリソースは、第２データリードバスを含む［７］記載のプロセッサ。
［９］前記第１データアクセスリソースは、前記第１領域内のレジスタファイルの各々の間の共有リソースである［７］記載のプロセッサ。
［１０］前記第２データアクセスリソースは、前記第２セットのレジスタファイルの各々の間の共有リソースである［７］記載のプロセッサ。
［１１］前記第１セットのレジスタファイルは、偶数の番号が付けられたスレッドに対応し、前記第２セットのレジスタファイルは、奇数の番号が付けられたスレッドに対応する［７］記載のプロセッサ。
［１２］前記第１データアクセスリソースは、第１データライトバスを含む第１データライトリソースを含み、前記第２データアクセスリソースは、第２データライトバスを含む第２データライトリソースを含む［７］記載のプロセッサ。
［１３］前記第１及び第２領域を含むエリアが、各レジスタファイルが少なくとも一つの他のレジスタファイルに隣接する比較可能なエリアよりも、低い電力密度を有するように、前記第１領域は、第１電力損失エリア内に置かれ、前記第２領域は、第２電力損失エリア内に置かれる［７］記載のプロセッサ。
［１４］第１命令実行ストリームに関連付けられた第１レジスタファイルと、
第２命令実行ストリームに関連付けられた第２レジスタファイルとを具備し、
前記第１及び第２実行ストリームは、シーケンシャルな方法でパイプライン化され、前記第１レジスタファイルは、前記第１レジスタファイルと第３レジスタファイルとの間のハードウェアリソース共有を可能にするために、前記第２レジスタファイルに対して隣接しない位置に置かれるプロセッサ。
［１５］前記第３レジスタファイルは、前記第１命令実行ストリームに対して非シーケンシャルにパイプライン化される第３命令実行ストリームに関連付けられる［１４］記載のプロセッサ。
［１６］前記第１レジスタファイルは、前記第３レジスタファイルに物理的に隣接する［１４］記載のプロセッサ。
［１７］前記ハードウェアリソースは、論理素子とバス配線とを含む［１４］記載のプロセッサ。
［１８］前記ハードウェアリソースは、前記第２レジスタファイルと共有されない第１データリードバスを含む［１４］記載のプロセッサ。
［１９］第４レジスタファイルと、
前記第２レジスタファイル及び前記第４レジスタファイルによって共有されるが、前記第１レジスタファイル又は前記第３レジスタファイルによって共有されない第２データリードバスとをさらに具備する［１８］記載のプロセッサ。
［２０］第１命令ストリームを実行する第１実行パイプラインと、
第２命令ストリームを実行する第２実行パイプラインと、
前記第１命令ストリームに関連付けられた第１レジスタファイルと、
前記第２命令ストリームに関連付けられた第２レジスタファイルとを具備し、
前記第１及び第２命令ストリームは、前記第１及び第２レジスタファイルの非シーケンシャルアクセスを備える前記第１及び第２実行パイプライン内で、前記第１及び第２レジスタファイルが、少なくとも１つのハードウェアリソースを共有することを可能にするように構成されるプロセッサ。
［２１］前記少なくとも１つのハードウェアリソースは、データリードバスを含む［２０］記載のプロセッサ。
［２２］命令は、所定の順序で、前記第１実行パイプライン内で実行される［２０］記載のプロセッサ。
［２３］前記第１実行パイプライン内で実行される前記命令の各々は、超長命令語タイプの命令である［２０］記載のプロセッサ。
［２４］前記第１実行パイプライン内で実行される前記命令の各々は、スーパースカラータイプの命令である［２０］記載のプロセッサ。
［２５］複数のレジスタファイルにアクセスする方法であって、
第２レジスタファイルからデータを読むことと同時に、第１レジスタファイルからデータを読むことを具備し、前記第１レジスタファイルは第１命令ストリームに関連付けられ、前記第２レジスタファイルは第２命令ストリーム関連付けられ、前記第１命令ストリームはプロセッサの実行パイプライン内の前記第２命令ストリームにシーケンシャルであり、前記第１レジスタファイルは前記第２レジスタファイルに対して隣接していない場所にある方法。
［２６］前記第１レジスタファイル及び前記第２レジスタファイルにデータを書くことをさらに具備する［２５］記載の方法。
［２７］アクセスするレジスタファイルを選択する方法であって、
第１セットのレジスタファイルは、第１セットのハードウェアリソースを共有し、第２セットのレジスタファイルは、第２セットのハードウェアリソースを共有し、前記第２セットのレジスタファイルの少なくとも１つをアクセス可能にすることと同時に、前記第１セットのレジスタファイルの少なくとも１つを選択的にアクセス可能にすることと、
前記第１セットのレジスタファイルの少なくとも１つから、第１命令ストリームに関連付けられた第１命令ユニットにデータを供給することと、
前記第２セットのレジスタファイルの少なくとも１つから、第２命令ストリームに関連付けられた第２命令ユニットにデータを供給することと、
少なくとも１つのパイプライン実行ユニットを使用して、前記第１及び第２命令ストリームを実行することとを具備する方法。
［２８］前記第１セットのハードウェアリソースは、データリードバスを含む［２７］記載の方法。
［２９］命令は、所定の順序で、前記少なくとも１つのパイプライン実行ユニット内で実行される［２７］記載の方法。
［３０］前記少なくとも１つのパイプライン実行ユニット内で実行された前記命令の各々は、超長命令語タイプの命令である［２７］記載の方法。
【図１】
0005420545.tif 000019
【図２】
0005420545.tif 000020
【図３】
0005420545.tif 000021
【図４】
0005420545.tif 000022
【図５】
0005420545.tif 000023