(57)【要約】マルチスレッド・プロセッサによるスレッド・ベースのレジスタ・ファイル・アクセスのために技法が開示されている。マルチスレッド・プロセッサは、特定のプロセッサ・スレッドに関連付けられたスレッド識別子を決定し、対応するプロセッサ・スレッドによってアクセスされる関連のレジスタ・ファイルの特定部分を選択するためにスレッド識別子の少なくとも一部分を使用する。例示的な実施形態では、レジスタ・ファイルが偶数部分と奇数部分に分割され、スレッド識別子の最下位ビットまたは他の部分が、所与のプロセッサ・スレッドで使用されるその偶数または奇数部分を選択するために使用される。スレッド・ベースのレジスタ・ファイル選択は、トークン・トリガ・スレッディングおよび命令パイプライン化と共に使用することができる。有利には、本発明は、並行性の所望レベルを維持しつつ、レジスタ・ファイル・ポートの必要数を削減し、したがってプロセッサの電力消費を低減する。
2006502504.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッド・プロセッサに関連付けられたレジスタ・ファイルにアクセスする方法であって、
前記マルチスレッド・プロセッサの特定のスレッドに関連付けられたスレッド識別子を決定する工程と、
前記対応するプロセッサ・スレッドによってアクセスされる前記レジスタ・ファイルの特定部分を選択するために前記スレッド識別子の少なくとも一部分を使用する工程と
を含む方法。
【請求項２】
前記使用する工程がさらに、前記対応するプロセッサ・スレッドによりアクセスされる前記レジスタ・ファイルの偶数部分および奇数部分の一方を選択するために前記スレッド識別子の一部分を使用する工程を含む、請求項１に記載の方法。
【請求項３】
前記スレッド識別子の前記部分が、前記スレッド識別子の１つまたは複数の最下位ビットを含む、請求項２に記載の方法。
【請求項４】
前記レジスタ・ファイルが、レジスタの複数の偶数の組、およびレジスタの複数の奇数の組を含み、前記使用する工程がさらに、前記対応するプロセッサ・スレッドによってアクセスされるレジスタの前記複数の偶数の組、またはレジスタの前記複数の奇数の組をイネーブルにすることを含む、請求項２に記載の方法。
【請求項５】
前記スレッド識別子の前記部分が、前記レジスタ・ファイルの特定部分に対してイネーブル信号を生成する選択回路に適用される、請求項１に記載の方法。
【請求項６】
前記レジスタ・ファイルが、２ｎの異なる部分を含み、前記スレッド識別子のｎ個の最下位ビットが、前記対応するプロセッサ・スレッドによってアクセスされる前記レジスタ・ファイルの前記２ｎの異なる部分のうちの１つを選択するのに使用される、請求項１に記載の方法。
【請求項７】
前記レジスタ・ファイルが、汎用レジスタ・ファイルを含む、請求項１に記載の方法。
【請求項８】
前記マルチスレッド・プロセッサが、前記スレッド識別子を記憶するためのスレッド識別子レジスタを含む、請求項１に記載の方法。
【請求項９】
前記スレッド識別子レジスタが、前記マルチスレッド・プロセッサの前記特定のスレッドに対応したスレッド・キャッシュに関連付けられる、請求項８に記載の方法。
【請求項１０】
前記マルチスレッド・プロセッサが、トークン・トリガ・スレッディングを使用するように構成される、請求項１に記載の方法。
【請求項１１】
前記トークン・トリガ・スレッディングが、後続するクロック・サイクルに対する命令が発行可能になる特定のコンテキストを、カレントのプロセッサ・クロック・サイクルと関連して識別するためにトークンを使用する、請求項１０に記載の方法。
【請求項１２】
前記トークン・トリガ・スレッディングが、前記マルチスレッド・プロセッサの複数のスレッドのそれぞれに異なるトークンを割り当てる、請求項１０に記載の方法。
【請求項１３】
前記マルチスレッド・プロセッサが、パイプライン型命令処理用に構成されている、請求項１に記載の方法。
【請求項１４】
前記マルチスレッド・プロセッサが、プロセッサ・クロック・サイクルごとに各スレッドが単一の命令を発行する命令パイプラインを使用する、請求項１３に記載の方法。
【請求項１５】
前記マルチスレッド・プロセッサが、プロセッサ・クロック・サイクルごとに各スレッドが複数の命令を発行する命令パイプラインを使用する、請求項１３に記載の方法。
【請求項１６】
複数の前記スレッドのそれぞれが、前記複数のスレッドのいずれも停止することなく、対応する複数のプロセッサ・クロック・サイクルのそれぞれで、ロード命令とベクトル乗算命令を共に発行する、請求項１５に記載の方法。
【請求項１７】
前記レジスタ・ファイルが、単一のレジスタを含む、請求項１に記載の方法。
【請求項１８】
前記レジスタ・ファイルが、複数のレジスタを含む、請求項１に記載の方法。
【請求項１９】
少なくとも第１および第２の部分を含む関連するレジスタ・ファイルを有するマルチスレッド・プロセッサであって、前記マルチスレッド・プロセッサの特定のスレッドに関連付けられたスレッド識別子を決定し、前記対応するプロセッサ・スレッドによってアクセスされるレジスタ・ファイルの前記部分のうちの特定の１つを選択するために前記スレッド識別子の少なくとも一部分を使用するように動作可能なマルチスレッド・プロセッサ。
【請求項２０】
マルチスレッド・プロセッサに関連付けられたレジスタ・ファイルへのアクセスに用いるためのプログラム・コードが実施されたマシン可読記憶媒体を含む製品であって、前記プロセッサによって実行されたとき前記プログラム・コードが、
前記マルチスレッド・プロセッサの特定のスレッドに関連付けられたスレッド識別子を決定する工程と、
前記対応するプロセッサ・スレッドによってアクセスされる前記レジスタ・ファイルの特定の部分を選択するために前記スレッド識別子の少なくとも一部分を使用する工程と
を実施する製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、デジタル・データ・プロセッサの分野に関し、より詳細には、マルチスレッド・プロセッサにおけるレジスタ・ファイル・アクセス技法に関する。
【背景技術】
【０００２】
本発明は、本明細書とすべて同時に出願された、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｈｒｅａｄ−Ｂａｓｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  ｉｎ  ａ  Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ」と題する整理番号１００７−５、「Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ  Ｗｉｔｈ  Ｅｆｆｉｃｉｅｎｔ  Ｐｒｏｃｅｓｓｉｎｇ  Ｆｏｒ  Ｃｏｎｖｅｒｇｅｎｃｅ  Ｄｅｖｉｃｅ  Ａｐｐｌｉｃａｔｉｏｎｓ」と題する整理番号１００７−６、および「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｏｋｅｎ  Ｔｒｉｇｇｅｒｅｄ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ」と題する整理番号１００７−８の米国特許出願に記載された発明に関連し、それを参照により本明細書に組み込む。
【０００３】
コンピュータ・システムまたは他のプロセッサ・ベースのシステムにおける記憶スペースは、通常、メモリおよびレジスタに区分される。従来のレジスタ・ファイルの構成は、例えば、Ｍ．Ｊ．Ｆｌｙｎｎ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｐｉｐｅｌｉｎｅｄ  ａｎｄ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｏｒ  Ｄｅｓｉｇｎ」、Ｊｏｎｅｓ  ａｎｄ  Ｂａｒｔｌｅｔｔ  Ｐｕｂｌｉｓｈｅｒｓ、米国マサチューセッツ州ボストン、１９９５年、およびＧ．Ａ．Ｂｌａａｕｗ  ａｎｄ  Ｆｒｅｄｅｒｉｃｋ  Ｐ．Ｂｒｏｏｋｓ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｃｏｎｃｅｐｔｓ  ａｎｄ  Ｅｖｏｌｕｔｉｏｎ」、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ、米国マサチューセッツ州レディング、１９９７年に記載されており、それらを共に参照により本明細書に組み込む。
【０００４】
所与のレジスタ・ファイルは、いわゆる「汎用」レジスタ・ファイルとすることができ、通常、それは、プロセッサ内の複数の命令機能に関連付けられた中間的なまたは他の一時的な結果を記憶するために使用可能なレジスタ・ファイルのことをいう。以前は、プロセッサ・サイクルごとに必要なレジスタ・ポート数が最小となるように、１つの命令だけがアクティブで汎用レジスタ・ファイルにアクセスしていた。しかし、最近のプロセッサは、通常、所与のプロセッサ・サイクル中で多くの命令をアクティブにし、したがって、プロセッサ・サイクルごとに複数のレジスタ・ファイル・アクセスを有する。例えば、マルチスレッド・プロセッサは、一時的な結果をレジスタ・ファイルに記憶し、複数の異なる命令シーケンスまたは「スレッド」の同時実行により高い並行性（ｃｏｎｃｕｒｒｅｎｃｙ）を提供する。
【０００５】
最近のプロセッサにおけるこれらのおよび他の類似の構成は、「ポート・プレッシャ（ｐｏｒｔ  ｐｒｅｓｓｕｒｅ）」、すなわち、必要なレジスタ・ファイル・ポート数の大幅な増加をもたらすことになり得る。残念ながら、レジスタ・ファイルのポート・プレッシャに関連付けられた重大な問題は、レジスタ・ファイル・ポート数の増加によりプロセッサの電力損失も大幅に増加することである。通常、レジスタ・ファイル・ポートに関連付けられた電力消費は、主としてレジスタ・ファイルの書込みポートに起因すると考えられる。
【０００６】
汎用レジスタ・ファイルを含む最近のプロセッサの実施例は、ＴＭＳ３２０Ｃ６０００  ＣＰＵおよび命令セット参照ガイド、ＳＰＲＺ１６８Ｂ、ｈｔｔｐ：／／ｗｗｗ−ｓ．ｔｉ．ｃｏｍ／ｓｃ／ｐｓｈｅｅｔｓ／ｓｐｒｚ１６８ｂ／ｓｐｒｚ１６８ｂ．ｐｄｆに記載されたテキサス・インスツルメンツ（ＴＩ）社のＣ６４ｘであり、それを参照により本明細書に組み込む。ＴＩ社のＣ６４ｘは、サイクルごとに最高８つの命令を発行し、１つの命令がプロセッサの１つの実行ユニットを制御することができる一種のＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）アーキテクチャを使用する。そのプロセッサのレジスタ・ファイルは、６４のレジスタを含む。各命令が６４のレジスタすべてにアクセスできるようにＣ６４ｘを構成することは、２６の読取りポートと１８の書込みポート、すなわち合計４４ポートが必要である。しかし、このような構成は困難であるため、それに代わって、Ｃ６４ｘの設計者はレジスタ・ファイル・アクセスを半分に分割するよう決定し、その２つの半分の間でポートを分け、それによりプログラマに制限を設けるようにしている。それにもかかわらず、Ｃ６４ｘは、なお、合計４４のポートが必要である。
【特許文献１】米国特許出願整理番号１００７−５
【特許文献２】米国特許出願整理番号１００７−６
【特許文献３】米国特許出願整理番号１００７−８
【特許文献４】米国特許出願第１０／１６１７７４号
【特許文献５】米国特許出願第１０／１６１８７４号
【特許文献６】米国仮出願第６０／３４１２８９号
【非特許文献１】Ｍ．Ｊ．Ｆｌｙｎｎ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｐｉｐｅｌｉｎｅｄ  ａｎｄ  Ｐａｒａｌｌｅｌ  Ｐｒｏｃｅｓｓｏｒ  Ｄｅｓｉｇｎ」、Ｊｏｎｅｓ  ａｎｄ  Ｂａｒｔｌｅｔｔ  Ｐｕｂｌｉｓｈｅｒｓ、米国マサチューセッツ州ボストン、１９９５年
【非特許文献２】Ｇ．Ａ．Ｂｌａａｕｗ  ａｎｄ  Ｆｒｅｄｅｒｉｃｋ  Ｐ．Ｂｒｏｏｋｓ、「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ：Ｃｏｎｃｅｐｔｓ  ａｎｄ  Ｅｖｏｌｕｔｉｏｎ」、Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ、米国マサチューセッツ州レディング、１９９７年
【非特許文献３】ＴＭＳ３２０Ｃ６０００  ＣＰＵおよび命令セット参照ガイド、ＳＰＲＺ１６８Ｂ、ｈｔｔｐ：／／ｗｗｗ−ｓ．ｔｉ．ｃｏｍ／ｓｃ／ｐｓｈｅｅｔｓ／ｓｐｒｚ１６８ｂ／ｓｐｒｚ１６８ｂ．ｐｄｆ
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、ポート・プレッシャを削減することは、最近のプロセッサ設計、特に多くの命令が所与のプロセッサ・サイクル中でアクティブになり得るマルチスレッド・プロセッサおよび他のプロセッサに対する設計の重要な側面となっている。並行性の所望レベルに影響を与えることなくプロセッサの電力消費を減少させるために、ポート・プレッシャの低減を提供する技法が当技術分野で求められている。
【課題を解決するための手段】
【０００８】
本発明は、マルチスレッド・プロセッサのための改善されたレジスタ・ファイル構成および関連するスレッド・ベースのレジスタ・ファイル選択技法を提供する。
【０００９】
本発明によると、マルチスレッド・プロセッサは、特定のプロセッサ・スレッドに関連付けられたスレッド識別子を決定し、そのスレッド識別子の少なくとも一部分を使用して対応するプロセッサ・スレッドによってアクセスされるレジスタ・ファイルの特定の部分を選択する。例えば、スレッド識別子の最下位ビットまたは他の部分を、レジスタ・ファイルの偶数部分と奇数部分の一方を選択するのに使用することができる。
【００１０】
さらに特定の実施例として、所与の汎用レジスタ・ファイルを、レジスタの複数の偶数および奇数の組に構成し、そのレジスタの複数の偶数または奇数の組をイネーブルにする（有効にする）ために、スレッド識別子の一部分を使用することができる。
【００１１】
本発明の他の態様は、トークン・トリガ・スレッディング（ｔｏｋｅｎ  ｔｒｉｇｇｅｒｅｄ  ｔｈｒｅａｄｉｎｇ）およびパイプライン型命令処理（ｐｉｐｅｌｉｎｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ）に関する。例えば、マルチスレッド・プロセッサは、トークン・トリガ・スレッディングを実施するよう構成することができる。この種のスレッディングでは、現在のプロセッサ・クロック・サイクルに関連して、後続するクロック・サイクルのための命令を発行可能となる特定のハードウェア・スレッド・ユニット、またはコンテキストを識別するためにトークンが使用される。
【００１２】
本発明は、必要なレジスタ・ファイルの書込みポート数を大幅に削減し、したがって、プロセッサ性能への損失なしにプロセッサの電力消費を低減するため、有利である。例えば、例示的な実施形態では、レジスタ・ファイルへの複数の書込みアクセスを、単一の書込みポートだけを用いて単一のプロセッサ・サイクル中で達成することができる。
【発明を実施するための最良の形態】
【００１３】
関連する汎用レジスタ・ファイルを有するマルチスレッド・プロセッサ中で本発明が実施されるものとしてここに説明する。しかし、本発明は、例示的な実施形態による特定のマルチスレッド・プロセッサおよびレジスタ・ファイル構成の使用を必要とせず、より一般的に、必要なレジスタ・ファイルの書込みポート数の削減および電力消費の低減を提供することが望ましい、任意のマルチスレッド・プロセッサ・レジスタ・ファイル応用分野において使用されるのが適切であると理解されたい。
【００１４】
本発明によるスレッド・ベースのレジスタ・ファイル選択技法を実施する例示的な処理システム１００を図１、図２と共に説明する。
【００１５】
図１は、主メモリ１０４に結合されたマルチスレッド・プロセッサ１０２を含む処理システム１００を示す。マルチスレッド・プロセッサ１０２は、マルチスレッド・キャッシュ・メモリ１１０およびマルチスレッド・データ・メモリ１１２を含む。
【００１６】
図２は、マルチスレッド・プロセッサ１０２の可能な一実装形態のより詳細なビュー（ｖｉｅｗ）を示す。この実施形態では、マルチスレッド・プロセッサ１０２は、マルチスレッド・キャッシュ・メモリ１１０、データ・メモリ１１２、キャッシュ・コントローラ１１４、命令デコーダ１１６、レジスタ・ファイル１１８、および１組の算術論理演算装置（ＡＬＵ）１２０を含む。マルチスレッド・キャッシュ・メモリ１１０はまた、ここではマルチスレッド・キャッシュとも呼ぶ。
【００１７】
図１および図２で示された特定の構成は、説明を明確にするために簡略化されており、当業者には明らかなように、明示的に示されていない追加のまたは代替的なエレメントを含み得ることに留意されたい。
【００１８】
マルチスレッド・キャッシュ１１０は、複数のスレッド・キャッシュ１１０−１、１１０−２、・・・、１１０−Ｎを含む。ただし、Ｎは、マルチスレッド・プロセッサ１０２によってサポートされるスレッド数を示す。したがって、各スレッドは、それに関連付けられた対応するスレッド・キャッシュをマルチスレッド・キャッシュ１１０中に有する。同様に、データ・メモリ１１２は、図示のように、データ・メモリ１１２−１、１１２−２、・・・、１１２−Ｎで示されたＮ個の異なるデータ・メモリ・インスタンスを含む。
【００１９】
マルチスレッド・キャッシュ１１０中の各スレッド・キャッシュは、メモリ・ロケーションの１つまたは複数の組を有するメモリ・アレイを備えることができる。所与のスレッド・キャッシュはさらに、関連付けられたスレッド識別子を記憶するためのスレッド識別子レジスタを備えることができ、図７と共に以下でより詳細に説明する。
【００２０】
マルチスレッド・キャッシュ１１０は、キャッシュ・コントローラ１１４を介して主メモリ１０４とインターフェースする。キャッシュ・コントローラ１１４は、主メモリ１０４から適切な命令がマルチスレッド・キャッシュ１１０に確実にロードされるようにする。この例示的な実施形態におけるキャッシュ・コントローラ１１４は、個々のスレッド・キャッシュ１１０−１、１１０−２、・・・、１１０−Ｎに関連付けられた論理回路または他の処理要素と共に動作し、完全アソシエイティヴ・マッピング、直接マッピング、またはセット・アソシエイティブ・マッピングなどのアドレス・マッピング技法の少なくとも一部分を実施する。本発明と共に使用するのに適切な例示的なセット・アソシエイティブ・マッピング技法は、本出願と同一出願人である、２００２年６月４日出願の米国特許出願第１０／１６１７７４号および１０／１６１８７４号に記載されており、それらを共に参照により本明細書に組み込む。
【００２１】
一般に、マルチスレッド・キャッシュ１１０は、マルチスレッド・プロセッサ１０２により実行される命令を記憶するために使用され、一方、データ・メモリ１１２は、その命令が操作するデータを記憶する。命令は、命令デコーダ１１６によりマルチスレッド・キャッシュ１１０からフェッチされ、命令デコーダ１１６は、命令の実行を制御する場合、従来方法によりレジスタ・ファイル１１８およびＡＬＵ１２０と共に動作する。１１６および１２０などのマルチスレッド・プロセッサ・エレメントの動作は、当技術分野でよく理解されており、したがって、ここでさらなる詳細を説明しない。
【００２２】
データ・メモリ１１２は、通常、主メモリ１０４に直接接続されるが、図では、その接続を明示的に示していない。
【００２３】
１つまたは複数のメモリ１０４、１１０、および１１２はそれぞれ、複数のバンクまたは他の指示された部分を含むように構成することができる。例として、各バンクが、１つまたは複数のメモリ・モジュール、または単一のメモリ・モジュールの指定された部分から構成されているように見ることも可能である。
【００２４】
マルチスレッド・プロセッサに関連付けられたこれらのおよび他のメモリのスレッド・ベース・バンキング技法は、前に引用した、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔｈｒｅａｄ−Ｂａｓｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  ｉｎ  ａ  Ｍｕｌｔｉｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ」と題する整理番号１００７−５の米国特許出願に記載されている。
【００２５】
本発明は、図２に示す特定のマルチスレッド・プロセッサ構成を必要としないことを強調すべきである。本発明は、多種多様の他のマルチスレッド・プロセッサ構成で実施することができる。
【００２６】
図２に示され、本発明と共に使用するのに適切なタイプのマルチスレッド・プロセッサのより特定な実施例は、２００１年１２月２０日に出願の米国仮出願第６０／３４１２８９号に記載されており、それを参照により本明細書に組み込む。米国仮出願第６０／３４１２８９号に記載されたマルチスレッド・プロセッサの例示的な実施形態は、ＲＩＳＣベースの制御コード、ＤＳＰ（デジタル信号プロセッサ）、Ｊａｖａ（登録商標）コード、およびネットワーク処理コードを実行することができる。そのプロセッサは、ＳＩＭＤ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）ベクトル・ユニット、リダクション・ユニット、およびＬＩＷ（ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）複合命令の実行を含む。
【００２７】
本発明は、その一態様によると、図２のプロセッサ１０２などマルチスレッド・プロセッサのレジスタ・ファイル・ポート必要数の大幅な削減を提供する。より具体的には、以下でより詳細に説明するように、プロセッサ１０２は、レジスタ・ファイル・ポート必要数を削減するために、本発明の技法にしたがって、トークン・トリガ・スレッディングおよび命令のパイプライン化と共にレジスタ・ファイルのスレッド・ベースの区分化を用いるように構成される。その構成を用いると特に、複数の同時書込みが単一のレジスタ・ファイル書込みポートによりサポートされるという利点がある。
【００２８】
図３は、スレッド数Ｎが８個であるプロセッサ１０２を実施するためのトークン・トリガ・スレッディングの一実施例を示す。一般に、スレッドはすべて同時に動作し、それぞれがスレッド・キャッシュ１１０およびデータ・メモリ１１２の対応するインスタンスにアクセスする。図３に示すように、８個のスレッドは、スレッド０、スレッド１、スレッド２、・・・、スレッド７で示され、リングの形で相互に連続的に結合されて示されている。マルチスレッド・プロセッサでは、所与のスレッドは、一般に、ソフトウェアと同様にハードウェアの点からも見ることができる。したがって、所与のスレッドに関連付けられた特定のプロセッサのハードウェアは、本明細書ではより具体的に、ハードウェア・スレッド・ユニットまたは単に「コンテキスト」と呼ぶものとする。
【００２９】
図３に示すトークン・トリガ・スレッディングによると、ハードウェアのスレッド・ユニットまたはコンテキストのすべてが同時に命令を実行することが可能となるが、プロセッサの特定のクロック・サイクル中で１つのコンテキストだけが命令を発行することもできる。言い換えると、すべてのコンテキストは同時に実行されるが、ある特定のクロック・サイクルに対して１つのコンテキストだけがアクティブになる。したがって、合計Ｃ個のコンテキストがある場合、すべてのコンテキストから１つの命令を発行するためにはＣ個のクロック・サイクルが必要となる。各クロック・サイクルでは、コンテキストのうちの１つが１つの命令を発行し、命令を発行する次のスレッドはトークンによって示される。図３の実施例では、コンテキストが命令を連続して発行するように、トークンが連続的にまたはラウンド・ロビン方式で構成される。しかし、命令を発行することを次のコンテキストに示すトークンは、偶数／奇数の交互パターンなど他のパターンを用いて構成することもできる。また上記のように、他のタイプのスレッディングも本発明と共に使用することができる。
【００３０】
図４は、本発明によるマルチスレッド・プロセッサ１０２中で、例示的な命令機能をパイプライン化することができる方法を示す。本発明の例示的な実施形態では、このタイプのパイプライン化は、前に述べたトークン・トリガ・スレッディングと共に使用されることが好ましいが、パイプライン化およびスレッディングの数多くの他の組合わせを本発明を実施するのに使用できることも理解されたい。
【００３１】
図４のパイプラインは、図３の例示的なＮ＝８のトークン・トリガ・スレッディングと共に使用するように構成されている。図４の例示的な命令機能は、ロード／記憶（Ｌｄ／Ｓｔ）、ＡＬＵ、整数乗算（Ｉ＿Ｍｕｌ）、およびベクトル乗算（Ｖ＿Ｍｕｌ）を含み、それぞれ、９、６、７、および８個のパイプライン段を有するものとして示されている。
【００３２】
図４に示す例示的な各命令パイプラインは、少なくとも命令デコード段、レジスタ・ファイル（ＲＦ）読取り段、転送（Ｘｆｅｒ）段、およびライトバック（ＷＢ）段を含む。ＲＦ読取り段は、レジスタ・ファイル、例えばレジスタ・ファイル１１８からの読取りを含み、転送段は、通常、命令の結果を指示された保持レジスタへの転送を含み、またＷＢ段は、命令の結果をメモリまたはレジスタ・ファイルに書き戻すことを含む。
【００３３】
Ｌｄ／Ｓｔパイプラインはさらに、アドレス生成（Ａｇｅｎ）段、内部（Ｉｎｔ）もしくは外部（Ｅｘｔ）判定段、およびＭｅｍ０、Ｍｅｍ１、Ｍｅｍ２で示される３つの追加メモリ実行段を含む。したがって、Ｌｄ／Ｓｔパイプラインは、合計４つのメモリ実行段、すなわち、Ｍｅｍ０、Ｍｅｍ１、Ｍｅｍ２、およびＷＢを含む。内部または外部判定段は、関連するメモリ・アクセスが内部メモリまたは外部メモリのいずれに対するものであるかを判定し、パイプライン内の追加のデコード段として見ることができる。追加のメモリ実行段がいくつかの外部メモリ・アクセスに対して必要となり得ることに留意されたい。例えば、外部メモリ・アクセスのＷＢ段が、対応するスレッドがアクティブである時間期間中に完了しない場合、そのスレッドがアクティブな次の時間にＷＢ段が完了するようにそのスレッドを停止することができる。
【００３４】
ＡＬＵパイプラインはさらに、Ｅｘｅｃ１およびＥｘｅｃ２で示される２つの実行段を含む。
【００３５】
整数Ｉ＿Ｍｕｌパイプラインはさらに、Ｅｘｅｃ１、Ｅｘｅｃ２、およびＥｘｅｃ３で示される３つの実行段を含む。
【００３６】
ベクトルＶ＿Ｍｕｌパイプラインはさらに、２つの乗算段ＭＰＹ１とＭＰＹ２、および２つの追加段Ａｄｄ１とＡｄｄ２を含む。
マルチスレッド・プロセッサ１０２は、特定のコンテキストからの命令がその対応するパイプラインに入力された後、完了するまで動作するように構成されることが好ましい。
【００３７】
適切に構成されたパイプラインおよび十分な数のスレッドを用いると、すべてのハードウェア・コンテキストは、サイクルおよびコンテキストごとに単一の命令が発行されるだけであっても同時に実行され得る。前に示したように、スレッドおよびパイプライン段の特定の数は、説明のためだけであり好ましい実装形態を示すものではない。ここに提供された教示があれば、当業者なら特定の応用例のためのスレッドおよびパイプライン段の適切な数を容易に決定することができよう。
【００３８】
次に、図４のパイプライン動作のいくつかの実施例を、図５および図６を参照して説明する。図５および図６は、それぞれ特定のプロセッサ・スレッドによって発行された命令シーケンスを示し、その対応するスレッドにより、レジスタ・ファイル１１８の偶数（ｅ）部分を使用するのか、奇数（ｏ）部分を使用するのかを命令ごとに指示する。図７は、本発明の技法にしたがって、どのようにしてレジスタ・ファイル１１８を偶数および奇数部分に分離できるか、その部分のうちの特定の１つがスレッド識別子を用いて選択可能であることを用いたその実施例を示す。
【００３９】
図５および図６の諸実施例では、説明の簡略化と明確化のため、スレッド数Ｎが４に等しく、各スレッドが、図３のトークン・トリガ・スレッディングのラウンド・ロビンを実施することにより命令を発行するものと仮定する。より具体的には、これらの実施例における各スレッドは、多くの信号処理アプリケーションにおける典型的な命令シーケンスであるロード命令とベクトル乗算命令とを交互に発行する。ロードおよびベクトル乗算命令は、本質的に図４に示す命令機能パイプラインで説明するように構成される。
【００４０】
次に図５を参照すると、各スレッドがサイクルごとに１つの命令を発行する単一発行（ｓｉｎｇｌｅ  ｉｓｓｕｅ）パイプラインの実施例が示されている。発行された命令によってアクセスされるレジスタ・ファイル部分は、スレッドからスレッドに偶数（ｅ）と奇数（ｏ）の間を交互に変わることが図５から分る。それによって、スレッド４の最初のロード命令およびスレッド１のベクトル乗算命令のライトバック段に関連付けられたなどの隣接するレジスタのライトバック動作は、レジスタ・ファイルの異なる部分を対象とすることができる。より具体的には、スレッド４の最初のロード命令は、レジスタ・ファイルの偶数部分を対象とし、一方、スレッド１のベクトル乗算命令は、レジスタ・ファイルの奇数部分を対象とする。図に示す他の命令も同様に構成される。
【００４１】
図７で説明するように、スレッド識別子は、所与のスレッドによりレジスタ・ファイルの偶数部分をアクセスするのか奇数部分をアクセスするのかを選択するために使用される。例えば、図５および図６のＮ＝４の場合、スレッド識別子のＬＳＢ（最下位ビット）がレジスタ・ファイルの偶数部分と奇数部分の間を選択するために使用することができる。
【００４２】
図６は、各プロセッサ・スレッドがサイクルごとに２つの命令を発行する例示的な複数発行（ｍｕｌｔｉｐｌｅ  ｉｓｓｕｅ）パイプラインを示す。ここでは、単一のスレッドがサイクルごとにロード命令とベクトル乗算命令を共に発行している。サイクルごとに複数の命令を発行するため、図５の実施例に対して２つの追加のレジスタ・ファイル読取りポートが必要となる。しかし、図で分るように、この場合もすべての同時書込みが、スレッド識別子のＬＳＢに基づいて決定されたレジスタ・ファイルの偶数または奇数部分に対して行われるので、必要なレジスタ・ファイル書込みポート数が削減され、したがってプロセッサの電力消費を低減することができる。
【００４３】
図５および図６で示されたスレッドの特定な数は、例のためだけであり、本発明は、どんな特定のスレッド数の使用も制限しないことを強調すべきである。
【００４４】
図７は、マルチスレッド・プロセッサ１０２のレジスタ・ファイル１１８を、本発明の上記スレッド・ベースのレジスタ・ファイル選択技法にしたがって構成する方法を示す。レジスタ・ファイル１１８は、プロセッサ回路７００と関連して示されており、それはさらに、スレッド識別子レジスタ７０２および選択回路７０４を含む。この実施形態では、汎用レジスタ・ファイル、またはプロセッサ１０２に関連付けられた他のタイプのレジスタ・ファイルとすることができるレジスタ・ファイル１１８は、いくつかの、レジスタの偶数の組および奇数の組に構成される。より具体的には、レジスタ・ファイル１１８は、偶数レジスタの組Ｔ０とＴ２を含む偶数部分、および奇数レジスタの組Ｔ１とＴ３を含む奇数部分に分割される。
【００４５】
レジスタの各組Ｔ０、Ｔ１、Ｔ２、およびＴ３は、一般に、Ｎ＝４の実施形態における４個のスレッドのうちの１つと一致し、図示のように８個のベクトル・レジスタＶ０、Ｖ１、Ｖ２、・・・、Ｖ７を含む。８個のベクトル・レジスタＶ０、Ｖ１、Ｖ２、・・・、Ｖ７のそれぞれは、この図示例では、例えば、各４０ビットの４個のベクトル・エレメントを含む。例えば、レジスタの組Ｔ０のべクトル・レジスタＶ７は、Ｖ２８、Ｖ２９、Ｖ３０、およびＶ３１で示される４個のベクトル・エレメントを含む。もちろん、この特定の構成は、例のためだけに提供されており、数多くの他の構成を使用することもできる。
【００４６】
スレッド識別子レジスタ７０２に記憶されているスレッド識別子の一部分が、レジスタの偶数の組または奇数の組をイネーブルするために使用される。選択回路７０４はマルチプレクサを備えており、それは、そのｅｎａｂｌｅ＿ｅｖｅｎおよびｅｎａｂｌｅ＿ｏｄｄ出力の一方を、スレッド識別子に基づいて論理ハイレベルに駆動し、他方を論理ローレベルに駆動する。
【００４７】
図７に示されたものと同様のレジスタ・ファイル構成もまた、Ｎの他の値で使用することができる。例えば、その構成では、スレッド識別子の追加のビットが選択プロセスで使用され、Ｎ＝８の実施形態で使用することができる。
【００４８】
上記の構成により、レジスタ・ファイル１１８は、そうでなければ従来技法の使用が必要になる場合と比べて大幅に削減した書込みポート数を含むことが可能となり、したがって低電力消費とすることができる。図７に示す特定の構成および４個のスレッドの実装では、レジスタ・ファイルの各偶数および奇数部分は、単一の書込みポートだけを用いて構成することができる。
【００４９】
数多くの代替レジスタ・ファイル構成が本発明の技法を用いて可能である。例えば、１つの可能な代替構成は、レジスタ・ファイルを２以上の部分に分けることであり、その場合、所与のプロセッサ・スレッドによりアクセスされるレジスタ・ファイルの特定部分を選択するのにスレッド識別子の追加のビットを使用することができる。より一般的には、所与のレジスタ・ファイルの２ｎの異なる部分の１つを選択するために、スレッド識別子のｎ個の最下位ビットを使用することができる。
【００５０】
可能な他の代替の構成は、偶数または奇数部分のスレッド・ベース選択を用いて、単一のレジスタを少なくとも偶数および奇数部分に分けることである。より一般的には、単一のレジスタを２ｎの異なる部分に分離することができる。
【００５１】
したがって、ここで用いられる用語「レジスタ・ファイル」は、１つまたは複数のレジスタの任意の構成を含むものとする。したがって、所与のレジスタ・ファイルは、例としてかつ限定することなく、１つまたは複数の汎用レジスタ、補助レジスタ、分岐レジスタ、プログラム・レジスタなど、ならびにその部分もしくは組合わせを含むことができる。
【００５２】
スレッド識別子レジスタ７０２および関連する選択回路７０４は、マルチスレッド・プロセッサ１０２のエレメントとして実装されることが好ましい。例えば、そのエレメントを全体的もしくは部分的に、キャッシュ・コントローラ１１４あるいはマルチスレッド・プロセッサ１０２の他の部分に実装することができる。
【００５３】
スレッド識別子レジスタ７０２は、特定のスレッドを識別するためにマルチスレッド・プロセッサ１０２によって用いられるマルチビット・スレッド識別子を記憶する。このようなスレッド識別子は、当業者には明らかなように従来の方法で生成することができる。
【００５４】
ここで使用される用語「スレッド識別子」は、マルチスレッド・プロセッサ中の特定のスレッドまたは複数のスレッドの１組を識別するのに適切な任意の情報を含むものとする。そのスレッド識別子は、例としてかつ限定することなく、マルチスレッド・プロセッサ中のスレッド・カウンタ出力に一致することができる。より具体的には、所与のマルチスレッド・プロセッサは、実行される特定のスレッドを識別するためにスレッド・カウンタ出力を使用して、ラウンド・ロビン順など所定の順番でマルチスレッドが処理されるように構成することができる。このような実施形態では、処理される特定のスレッドを識別するために３ビット・カウンタ出力を使用できるようにし、各スレッドを３ビットの識別子によって識別することにより、図３に示すように、合計８個のスレッドをラウンド・ロビン順で処理することができる。他の実施形態では、スレッド識別子の、カウンタを使用しない実装形態を用いることもできる。本発明で使用するのに適切な多種多様の異なるスレッド識別子構成は、当業者なら容易に明らかとなろう。
【００５５】
上記のように、本発明のスレッド・ベースのレジスタ・ファイル選択技法は、従来の技法に対して大幅な改善を提供する。例えば、本技法は、必要なレジスタ・ファイルの書込みポート数を大幅に削減することができ、それにより、電力消費を低減することができる。さらに、その改善は、プロセッサの並行性またはプロセッサ性能の他の側面に影響を与えることなく提供される。
【００５６】
本発明の上記の実施形態は、説明のためだけであり、添付の特許請求の範囲内の数多くの代替実施形態が当業者には明らかであろう。例えば、先に示したように、所与のレジスタ・ファイルを、図５、図６、および図７のように、複数の偶数部分と奇数部分に分割する、すなわち、所与の部分を選択するのに用いるスレッド識別子のビット数を適切に増加させて、ｎ個の異なる部分に分割することができる。他の実施例として、選択プロセスを実施するのに使用される特定の選択回路構成は、代替的な構成と置き換えることもできる。さらに、マルチスレッド・プロセッサ構成、スレッド数、スレッド識別子構成、および例示の実施形態の他のパラメータを、所与の応用分野における特有の要求に対応するように変えることもできる。
【図面の簡単な説明】
【００５７】
【図１】本発明が実装される例示的な処理システムのブロック図である。
【図２】図１の処理システムのマルチスレッド・プロセッサの例示的な実施形態のより詳細なブロック図である。
【図３】本発明の技法による図２のマルチスレッド・プロセッサ中で使用するのに適切なトークン・トリガ・スレッディングの一実施例を示す図である。
【図４】本発明の技法による図２のマルチスレッド・プロセッサ中で例示的な命令機能がパイプライン化することができる方法を示す図である。
【図５】図２のプロセッサの各スレッドが、サイクルごとに１つの命令を発行する例示的な単一発行パイプラインを示す図である。
【図６】図２のプロセッサの各スレッドが、サイクルごとに２つの命令を発行する例示的な複数発行パイプラインを示す図である。
【図７】本発明のスレッド・ベースのレジスタ・ファイル選択技法にしたがって構成された図２のプロセッサのレジスタ・ファイルを示す図である。
【図１】
2006502504.tif 000003
【図２】
2006502504.tif 000004
【図３】
2006502504.tif 000005
【図４】
2006502504.tif 000006
【図５】
2006502504.tif 000007
【図６】
2006502504.tif 000008
【図７】
2006502504.tif 000009
【国際調査報告】
2006502504.tif 000010
2006502504.tif 000011