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