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