(57)【要約】      （修正有）【課題】ＳＭＴ（同時マルチスレッド化）システムにおいて、できるかぎり早急に新たな命令グループをディスパッチして発行しうるようにする。【解決手段】ＳＭＴシステム１１９は動的共用ＧＣＴ（グループ完了テーブル）３０１を備えている。各スレッドが出す命令グループが同時に完了しうるようにＧＣＴを構成することにより、ＳＭＴの性能を向上させる。ＧＣＴは当該完了テーブルの命令／アドレス・アレイに対応するリード・ポート３０４、３５４を各スレッド用に備え、完了時における同時更新に備えている。完了時に各スレッド用に次の命令グループを発見するために、順方向リンク・アレイも各スレッド用にリード・ポートを備えている。各スレッド用の逆方向リンクを同時に更新するために、逆方向リンク・アレイは各スレッド用に逆方向リンク・ライト・ポートを備えている。ＧＣＴは各スレッド用に独立のポインタ管理手段３３６、３３４を備えている。【選択図】図３
2004326738.tif 000002
【特許請求の範囲】
【請求項１】
同時スレッド化（ＳＭＴ）型のプロセッサであって、
第１のスレッド用の第１のリード・ポートおよび第２のスレッド用の第２のリード・ポートを備えた動的共用グループ完了テーブル（ＧＣＴ）と、
前記第１のリード・ポートおよび前記第２のリード・ポートに接続された完了ユニット論理回路を備えた完了ユニットと
を備え、
命令グループが完了したら前記ＧＣＴを同時に更新する、
プロセッサ。
【請求項２】
さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第３のリード・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第４のリード・ポートを備えた順方向リンクアレイ
を備えた、
請求項１に記載のプロセッサ。
【請求項３】
さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第１のライト・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第２のライト・ポートを備えた逆方向リンクアレイ
を備えた、
請求項２に記載のプロセッサ。
【請求項４】
さらに、
前記完了ユニット論理回路および前記第３のリード・ポートに接続された、前記第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路と、
前記完了ユニット論理回路および前記第４のリード・ポートに接続された、前記第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路と        を備え、
命令グループが完了したら前記ＧＣＴを各スレッドによって同時に走査する、
請求項２に記載のプロセッサ。
【請求項５】
さらに、
前記完了ユニット論理回路に接続されたリソース計算論理回路、命令ディスパッチ・ユニット、およびレジスタ・ファイル・マッパ回路と、
前記ＳＭＴプロセッサにおいてリネームした結果レジスタの同時コミットを行う回路と、
前記ＳＭＴプロセッサにおいてロード／ストア命令ＩＤ（ＬタグおよびＳタグ）使用率を同時に更新する回路と
を備えた、
請求項４に記載のプロセッサ。
【請求項６】
中央処理装置（ＣＰＵ）と、
ランダム・アクセス・メモリ（ＲＡＭ）と、
入出力（Ｉ／Ｏ）アダプタと、
通信アダプタと、
前記ＣＰＵ、前記ＲＡＭ、前記Ｉ／Ｏアダプタ、および前記通信アダプタを接続するバスと、
前記ＣＰＵに設けられた同時マルチスレッド化（ＳＭＴ）プロセッサと、
第１のスレッド用の第１のリード・ポートおよび第２のスレッド用の第２のリード・ポートを備えた、前記ＳＭＴプロセッサ内に設けられた動的共用グループ完了テーブル（ＧＣＴ）と、
前記第１のリード・ポートおよび前記第２のリード・ポートに接続された完了ユニット論理回路を備えた完了ユニットと
を備え、
命令グループが完了したら前記ＧＣＴを同時に更新する、
データ処理システム。
【請求項７】
さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第３のリード・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第４のリード・ポートを備えた順方向リンクアレイ
を備えた、
請求項６に記載のデータ処理システム。
【請求項８】
さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第１のライト・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第２のライト・ポートを備えた逆方向リンクアレイ
を備えた、
請求項７に記載のデータ処理システム。
【請求項９】
さらに、
前記完了ユニット論理回路および前記第３のリード・ポートに接続された、前記第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路と、
前記完了ユニット論理回路および前記第４のリード・ポートに接続された、前記第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路と        を備え、
命令グループが完了したら前記ＧＣＴを各スレッドによって同時に走査する、
請求項８に記載のデータ処理システム。
【請求項１０】
さらに、
前記完了ユニット論理回路に接続されたリソース計算論理回路、命令ディスパッチ・ユニット、および命令シーケンサ・ユニットと、
前記ＳＭＴプロセッサにおいてリネームした結果レジスタの同時コミットを行う回路と、
前記ＳＭＴプロセッサにおいてロード／ストア命令タグ使用率を同時に更新する回路と
を備えた、
請求項９に記載のデータ処理システム。
【請求項１１】
完了ユニットに接続された動的共用グループ完了テーブル（ＧＣＴ）を用いて同時スレッド化（ＳＭＴ）プロセッサの性能を改善する方法であって、
第１のスレッド用の第１のリード・ポートおよび第２のスレッド用の第２のリード・ポートを用いて前記動的共用ＧＣＴを準備するステップと、
前記完了ユニット内の完了ユニット論理回路を前記第１のリード・ポートおよび前記第２のリード・ポートに接続するステップと
を備え、
命令グループが完了したら前記ＧＣＴを同時に更新する、
方法。
【請求項１２】
さらに、
前記第１のスレッド用の第３のリード・ポートを用いて順方向リンク・アレイを前記処理ユニットに接続するステップと、
前記第２のスレッド用の第４のリード・ポートを用いて前記順方向リンク・アレイを前記処理ユニットに接続するステップと
を備えた、
請求項１１に記載の方法。
【請求項１３】
さらに、
前記第１のスレッド用の第１のライト・ポートを用いて逆方向リンク・アレイを前記処理ユニットに接続するステップと、
前記第２のスレッド用の第２のライト・ポートを用いて前記逆方向リンク・アレイを前記処理ユニットに接続するステップと
を備えた、
請求項１２に記載の方法。
【請求項１４】
さらに、
前記第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路を前記処理ユニット論理回路および前記第３のリード・ポートに接続するステップと、
前記第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路を前記処理ユニット論理回路および前記第４のリード・ポートに接続するステップと、
命令グループが完了したら前記ＧＣＴをスレッドによって同時に走査するステップと
を備えた、
請求項１３に記載の方法。
【請求項１５】
さらに、
前記完了ユニット論理回路にリソース計算論理回路を接続するとともに、命令ディスパッチ・ユニットおよび命令シーケンサ・ユニットを接続するステップと、
前記ＳＭＴプロセッサにおいて各スレッド用のリネームした結果レジスタを同時にコミットするステップと、
前記ＳＭＴプロセッサにおいて各スレッド用のロード／ストア命令タグ使用率を同時に更新するステップと
を備えた、
請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に同時マルチスレッド化（simultaneous multithreading:ＳＭＴ）オペレーション・モードと単一スレッド・オペレーション・モードを備えたプロセッサ用の方法と回路に関する。
【背景技術】
【０００２】
長い間、性能を高める秘訣は１サイクル当りの命令実行数を多くすることであった。これは命令レベル並列処理（Instruction Level Parallelism:ＩＬＰ）とも呼ばれている。すなわち、命令の待ち時間を短くすることである。１サイクル当りの命令実行数を多くするには、機能ユニット（たとえば整数ユニット、不動小数点ユニット、ロード／ストア・ユニットなど）をより多く付加する必要がある。複数の命令を無矛盾に実行するには、アウト・オブ・オーダ処理（out-of-order processing:ＯＯＰ）と呼ばれる処理パラダイムを用いる。実際、この種の処理は主流になっている。
【０００３】
ＯＯＰが主流になったのは、処理パイプラインに送付済みの他の命令の結果に依存する命令が多いからである。この問題を軽減するには、直ちに実行しうるように多数の命令を格納しておくことである。こうする理由は、互いに依存しない命令をより多く発見するためである。直ちに実行可能な命令を格納するのに使用する記憶領域は再配置バッファと呼ばれている。再配置バッファの大きさは最新の商用コンピュータ・アーキテクチャでは増大し続け、一部のシステムでは１２６個もの命令を格納することができる。再配置バッファを大きくし続ける理由は単純である。すなわち、（複雑な構造のアレイとリンクしたリストをできるかぎり取り除くと）実行の観点からは、空間的に関連するコードは時間的にも関連する傾向があるからである。唯一の問題はこれらの命令が先行命令の結果にも依存する傾向があるということである。ＣＰＵが必要とするコードの量は増大し続けているから、独立した命令をより多く発見するために現在とりうる唯一の方法は再配置バッファのサイズを大きくすることである。
【０００４】
しかしながら、この手法を使うことにより、性能が向上するのと同じ速さでかなりの反動が生じている。事実、この手法を使うことによる見返りは低減し始めている。すなわち、今や同じ速さで性能の向上を達成するのにますます多くのトランジスタを使用している。ユニプロセッサ型のＩＬＰによって性能を引き出すことに過度に注視するのではなく、マルチスレッド化（マルチプロセス化）によって、しかしシステム・バスを主要な制約とすることなく、命令レベルまたはスレッド・レベルで性能を引き出すよりきめの粗い形態に注視すべきである。
【０００５】
単一のチップ上により多くのトランジスタを集積できるようになった結果、オンチップ・マルチプロセス化（on-chip multiprocessing:ＣＭＰ）が実現した。潜在的な性能の向上を利用するには、アーキテクチャはこれら複数のプロセッサをユニプロセッサ群として使用するのではなく、並列形態での命令実行を基にするマルチプロセス化を使用する必要がある。これには、ＣＭＰ上で実行するプログラムも純粋なシリアル形態すなわち逐次形態ではなく並列形態で実行しうるように作成する必要がある。アプリケーションを（マルチスレッド化した）並列形態で実行しうるように作成するものとすると、この形態で作成したプログラムを、付加したプロセッサの個数に比例した速度で実行するには固有の困難がある。
【０００６】
１つのダイ上に形成した複数のコアを使用することの背景にある一般概念は一度に２つのスレッドを実行することにより、性能を向上させることである。そうすることにより、ＣＰＵ群はともに機能ユニット総体の大部分に対して常に有益な仕事を行わせることができる。１つのプロセッサが多くの機能ユニットを保持していても、それら機能ユニットのうち常に有益な仕事をしているのは一部のものに過ぎない。オンチップ・マルチプロセッサでは、プロセッサ当りの機能ユニットの個数を少なくすることができる。各プロセッサには個別のタスク（すなわちスレッド）を配分する。このように、組み合わされた両タスクについてスループットを向上させることができる。比較対象のユニプロセッサはＣＭＰチップより高速にスレッド（すなわちタスク）を処理することができる。なぜなら、無駄な機能ユニットがあるけれども、ユニプロセッサが同時に複数個のデータを処理するとともに、利用可能な機能ユニットをすべて使用すると、アクティビティの「バースト（burst 、激発）」が生じるからである。マルチプロセッサの背景にある１つの概念は個々のプロセッサにこのようにアクティビティが激発する時間を経験させずに、各プロセッサにそれが利用可能なリソースをより頻繁に、したがって効率的に使用させることである。１クロック・サイクルの間に一部の機能ユニットを使用しないことは「水平方向の無駄（horizontal waste）」と呼ばれており、ＣＭＰが避けようとしているものである。
【０００７】
しかしながら、ＣＭＰには問題がある。伝統的なＣＭＰチップは２個以上のスレッドを迅速に完了させるために、単一スレッドの性能を犠牲にしている。このようにＣＭＰチップは一般的な用途には比較的柔軟性に欠けるが、それはスレッドが１つしかない場合、割り当てたリソースの半分がまったく使用されず完全に無用になる（これはちょうど伝統的なマルチプロセッサ（ＭＰ）システムにおいて、単一スレッドのプログラムを使用しているシステムに新たなプロセッサを付加するのと同じである）からである。ＣＭＰにおいて機能ユニットをより効率的にする１つの方法は粗粒度のマルチスレッド化（course(coarse)-grained multithreading:ＣＭＴ）を使用することである。ＣＭＴによれば、一定のクロック・サイクルの間、１つのスレッドを実行することにより、機能ユニットの使用効率を改善することができる。この使用効率の改善は「垂直方向の無駄（vertical waste）」が低減することによる。垂直方向の無駄とは１つのスレッドがストールしただけで動作する機能ユニットが無くなるという状況のことである。
【０００８】
別のスレッドに切り替えるとき、プロセッサは当該スレッドの状態を保存し（すなわちパイプライン中に存在する命令の場所や使用中のユニット名を保存し）、その後、別のスレッドに切り替える。これは複数のレジスタ・セットを使用して行う。このことの利点は、スレッドはキャッシュ・ミスが発生する前に、あるいは実行すべき独立の命令から逸脱して実行される前にあまり先に進むことができない場合が多いという事実によっている。このように、ＣＭＴプロセッサは自身がサポートしている個数のスレッドしか実行することができない。したがって、ＣＭＴプロセッサはこれらのスレッドの各々がその実行状態を格納する物理的な場所が存在する個数のスレッドしか格納することができない。それゆえ、ＮウエイのＣＭＴプロセッサはＮ個のスレッドの状態を格納する能力を保持している必要がある。
【０００９】
この概念に関する変形例として、キャッシュ・ミス（通常、Ｌ２（２次）キャッシュ・ミス）を経験するまで１つのスレッドを実行し、その時点でシステムが別のスレッドに切り替えるものがある。これにはプロセッサ中でスレッドを回転させるのに必要な論理回路を簡単化できるという利点がある。なぜなら、先行スレッドがストールしたら直ちに別のスレッドに切り替えるだけでよいからである。この結果、キャッシュに戻すべく要求されたブロックを待ち受けるペナルティが軽減される。これは一部のプロセッサが使用しているミス下のヒット（または複数ミス下のヒット）キャッシュ方式と類似しているが、命令ではなくスレッドに対して機能する点で異なる。ＣＭＴがＣＭＰに勝る利点はＣＭＴが単一スレッドの性能を犠牲にしない点である。そして、ハードウェアの重複が少ない（すなわち２つのプロセッサを対応するＣＭＴと「等しくする」のに半分以下のハードウェアで済む）。
【００１０】
マルチスレッド化に対するより積極的な手法は細粒度マルチスレッド化（fine-grained multithreading:ＦＭＴ）と呼ばれているものである。ＣＭＴと同様に、ＦＭＴの基礎はスレッド間における迅速な切り替えである。しかしながら、ＣＭＴと異なり、その概念は各サイクルごとに切り替えることである。ＣＭＴおよびＦＭＴの双方とも実際には１つのスレッドの完了は遅れるが、ＦＭＴは処理しているすべてのスレッドを迅速に完了させる。最大の関心事は全体のスループットである。
【００１１】
ＣＭＰはそれ自体で水平方向の無駄を一部取り除くことができる。ＣＭＴとＦＭＴは垂直方向の無駄を一部（または全部）取り除くことができる。しかしながら、水平方向の無駄および垂直方向の無駄の双方を低減するには、同時マルチスレッド化（Simultaneous Multithreading:ＳＭＴ）と呼ばれる最新形態のマルチスレッド化を使用する。ＳＭＴの主目標は様々なスレッドが出す命令を任意の所定時間に任意の所定機能ユニットで実行しうるようにすることである。ＳＭＴアーキテクチャはスレッド中で回転することによりＦＭＴと同様に動作し、様々なスレッドが出す命令を同時に実行することによりＣＭＰと同様に動作する。このため、アーキテクトは見返りの減少を心配することなくより広いコアを設計することができる。「不使用」の機能ユニットを異なるスレッド間で共用しうるから、ＳＭＴがＦＭＴより良好な効率を達成するのは道理にかなっている。このように、ＳＭＴはＣＭＰマシンの効率を達成している。しかしながら、ＣＭＰシステムと異なり、ＳＭＴシステムは単一スレッドの性能をほとんど、あるいはまったく犠牲にしない（少しの犠牲については後述する）。この理由は簡単である。単一のスレッドを実行しているときＣＭＰプロセッサの大部分は不使用のままであり、ＣＭＰチップ上の多くのプロセッサがこの問題を際立たせているが、ＳＭＴプロセッサでは機能ユニットがすべて単一のスレッドに専念する。これは明らかに、複数のスレッドを実行しうることほど重要ではないが、単一スレッド環境とマルチスレッド環境との間のバランスをとる能力はきわめて有用な機能である。すなわち、ＳＭＴプロセッサは、スレッド・レベル並列処理（thread-level parallelism: ＴＬＰ）が存在する場合にはそれを利用し、それが存在しない場合には命令レベル並列処理（instruction level parallelism:ＩＬＰ）に注意を集中させる。
【００１２】
複数のスレッドをサポートするために、ＳＭＴプロセッサは伝統的なスーパースカラー・プロセッサより多くのレジスタを必要とする。一般的な目標はサポートする各スレッド用にユニプロセッサの場合と同じ個数のレジスタを準備することである。これは、伝統的なＲＩＳＣ（reduced instruction set computer）チップの場合、Ｎの３２倍個のレジスタ、および何らかのリネーミング・レジスタを必要とする、ということを意味する（ただし、ＮはＳＭＴプロセッサが１サイクルで処理しうるスレッドの個数である）。４ウエイＳＭＴプロセッサ型ＲＩＳＣプロセッサの場合、これは１２８個のレジスタ、および何らかのリネーミング・レジスタを必要とする、ということを意味する。
【００１３】
大部分のＳＭＴモデルは既存のアウト・オブ・オーダー型プロセッサを単純に拡張したものである。スループットが実際に増大すると、命令発行幅に対する要求が大きくなる。そして、命令発行幅はそれ相応に増大される。上述したようにレジスタ・ファイルのサイズが増大するから、ＳＭＴパイプライン長を２ステージだけ長くしてクロック・サイクル長を長くしないようにする。したがって、レジスタ・リード・ステージとレジスタ・ライト・ステージは２つのパイプライン・ステージに分割する（１つのステージでレジスタ・バンクを選択し、残りのステージでリードまたはライトを実行する）。
【００１４】
１つのスレッドがパイプラインを支配できないようにするために、残りのスレッドが実行時間とリソースの現実的な部分を取得しうるように努力すべきである。機能ユニットがなすべき仕事を要求しているとき、フェッチ機構はパイプラインへの既投入命令が最も少ないようなスレッドにより高い優先度を付与する。無論、残りのスレッドになしうることがほとんど無い場合、前記スレッドが出す命令はパイプラインを既に支配している。
【００１５】
ＳＭＴでは共用できるものは何でも共用しようとする。しかしながら、一部の例ではこれにより、データの伝統的な構成および命令フローが混乱する。分岐予測ユニットは共用すると、効果的でなくなる。なぜなら、正確な予測をしようとすると、分岐予測ユニットはより多くの命令を備えたより多くのスレッドを追跡する必要があるので、効率が落ちるからである。すなわち、パイプラインは予測ミスによってフラッシュするが、上記欠陥を補償して余りあるスレッドを実行しうることによってより頻繁にフラッシュする必要がある。
【００１６】
ＳＭＴアーキテクチャでは、かなり大きなレジスタ・ファイルを必要とするから、使用するパイプラインが（２ステージ分だけ）長くなるので、予測ミスに対するペナルティが大きくなる。しかしながら、ＳＭＴアーキテクチャにおいて１スレッド当りに必要なレジスタの個数を最小化する手法が開発されている。これは次に示すものによって行う。すなわち、より効率的なオペレーティング・システム（ＯＳ）、レジスタの割り振り解除を良好に行うハードウェアによるサポート、および、別のスレッドがレジスタをまったく使用していない場合に当該別のスレッドとレジスタを共用する機能である。
【００１７】
別の課題はキャッシュのサイズ、キャッシュ・ラインのサイズ、およびそれらが提供する帯域幅に関連するスレッドの個数である。単一スレッドのプログラムの場合と同様に、キャッシュ・ラインのサイズを大きくすると、ミス率は小さくなるが、ミス・ペナルティは大きくなる。異なるデータをより多く使用するスレッドをより多くサポートすると、この問題が悪化する結果、各スレッドに対して効果的に機能するキャッシュは少なくなる。キャッシュに関するこの論点はマルチスレッド化した作業負荷よりもマルチプログラム化した作業負荷を扱うときにより顕著になる。したがって、使用するスレッドが多くなったら、キャッシュを大きくする必要がある。このことはＬ２キャッシュを備えたＣＭＰプロセッサにも当てはまる。
【００１８】
より多くのスレッドを使用すると、全体性能が向上するとともに、メモリ・データのアソシエーションにおける相違点がより迅速に明らかになる。明らかになっている点を挙げると、Ｌ１（主）キャッシュのサイズが一定の場合、よりアソシアティブ度の大きなキャッシュを使用すると、アクセス時間が長くなるにもかかわらず最高レベルの性能を達成することができる。アソシアティブ度の異なるブロックのサイズを変化させて性能を測定する試験を、スレッドの個数を変化させながら行った。上述したように、ブロックのアソシアティブ度を大きくすると、性能は常に向上した。しかし、２個を超えるスレッドを使用した場合、ブロックのサイズを大きくすると性能が低下した。したがって、ブロックのアソシアティブ度を大きくしても、ブロック・サイズが大きいことに起因する大きなミス・ペナルティという欠点を補償することはできない。
【００１９】
同時並列的に実行している各スレッドが出す命令をサポートしているＳＭＴプロセッサでは、各スレッドが同じサイクルで命令を完了する手段を備えるように性能を最適化するのが望ましい。動的共用完了テーブル（completion table: ＣＴ）の従来技術には、所定の時点で「イン・フライト（in flight)」状態にある各スレッドが出す命令を保持することをサポートする完了テーブルの構造が詳述されているが、単一のプロセッサ・サイクルで各スレッド用の命令から成るグループを完了させる機能または手段は記載されていない。
【発明の開示】
【発明が解決しようとする課題】
【００２０】
したがって、ＳＭＴシステムにおいて２つのスレッド間で単一のグループ完了テーブル（group completion table: ＧＣＴ）を動的に共用して完了テーブル、レジスタ・ファイル・マッパ、および未決のロード／ストア・タグの効果的な枯渇を可能にし、できるかぎり早急に新たな命令グループをディスパッチして発行しうるようにする方法が求められている。
【課題を解決するための手段】
【００２１】
動的共用グループ完了テーブル（ＧＣＴ）は当該完了テーブルの命令／アドレス・アレイに対応する次完了グループ（Next-to-Complete-Group: ＮＴＣＧ）リード・ポートを各スレッド用に備え、完了時における同時更新に備えている。完了時に各スレッド用に次の命令グループを発見するために、順方向リンク・アレイも各スレッド用にＮＴＣＧリード・ポートを備えている。各スレッド用の逆方向リンクを同時にＮＵＬＬ（ヌル）状態に更新するために、逆方向リンク・アレイは各スレッド用に逆方向リンク・ライト・ポートを備えている。ＧＣＴは独立にリンクを列挙したヘッド／テール・ポインタ管理手段を備えている。これにより、完了時における各スレッドによるＧＣＴの同時走査が可能になる。各スレッドはリネームした結果レジスタを同時にコミットするとともに、未決のロード／ストア・タグ使用率を同時に更新する。これにより、２つのスレッド・グループが１クロック・サイクルで同時に完了することが可能になるとともに、上記共用ＧＣＴ、レジスタ・ファイル・マッパ、および未決のロード／ストア・タグを効率的に枯渇させることが可能になる。この結果、新たな命令グループをできるかぎり速やかにディスパッチして発行することが可能になるから、ＳＭＴプロセッサの性能が向上する。
【発明を実施するための最良の形態】
【００２２】
以下の記述では、本発明の完全な理解を提供するために、個別の詳細を多数提示した。しかしながら、そのような個別の詳細がなくなとも本発明を実施しうることは当業者にとって明らかである。他の例として、不必要に詳細に提示して本発明を不明瞭にしないように、周知の回路はブロック図で示す。また、大部分の場合、タイミングに関する詳細や通信プロトコル内のデータ・フォーマットなどは、そのような詳細は本発明の完全な理解を得るのに不必要であるとともに、関連する技術分野の当業者の技能の範囲内のものであるから、省略してある。
【００２３】
次に、図面を参照する。図示した構成要素は必ずしも縮尺通りには示されていない。また、いくつかの図面を通じて同一または同様の構成要素には同じ参照符号が付してある。
【００２４】
図１を参照する。図１はＣＰＵ４１０の詳細を示す図である。ＣＰＵ４１０は１クロック・サイクル当り複数の命令を実行しうるように設計されている。したがって、任意の１クロック・サイクルの間に任意の実行ユニット（固定小数点ユニット（ＦＸＵ）１１４、浮動小数点ユニット（ＦＰＵ）１１８、およびロード／ストア・ユニット（ＬＳＵ）１１６）で複数の命令を実行することができる。同様に、ＣＰＵ４１０はＳＭＴモードにおいて複数のスレッドが出す命令を同時に実行することができる。
【００２５】
プログラム・カウンタ（ＰＣ）１３４は実行用の命令を有するスレッド０（Ｔ０）とスレッド１（Ｔ１）に対応している。スレッド・セクタ１３３はＴＯとＴ１を交互に選択して命令アドレスを命令フェッチ・ユニット（ＩＦＵ）１０８に送付する。命令アドレスは命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）１０３にロードする。ＩＦＡＲ１０３は命令キャッシュ（Ｉ−キャッシュ）１０４から各スレッドごとに交互に命令をフェッチする。命令は命令キュー（ＩＱ）にバッファする。ＩＱ１３５はＴ０用、ＩＱ１３６はＴ１用である。ＩＱ１３５とＩＱ１３６は命令ディスパッチ・ユニット（ＩＤＵ）１３２に接続されている。命令はスレッド優先度セクタ１３７の制御の下でＩＱ１３５およびＩＱ１３６から選択したのちリードする。通常、スレッド優先度セクタ１３７は各スレッドのプログラム制御された優先度に実質的に比例して、ＩＱ１３５およびＩＱ１３６から命令をリードする。
【００２６】
命令はＩＤＵ１３２内のデコーダ（図示せず）でデコードする。次いで、命令シーケンサ１１３が命令を様々なアルゴリズムで決められた順序にグループ化する。命令のグループは命令発行キュー（ＩＩＱ）１３１へ転送する。命令シーケンサ１１３は両スレッドからプログラム順に命令を受領するが、ＩＩＱ１３１からの命令の発行はプログラム順をはずれ、かつ両スレッドから行う。汎用レジスタ（ＧＰＲ）ファイル１１５と浮動小数点レジスタ（ＦＰＲ）ファイル１１７は複数の実行ユニットによって使用されるとともに、システムのプログラム状態を表わしている。これらのハードウェア・レジスタは「アーキテクチャ上の（architected)」レジスタと呼ばれている。命令を発行キューに投入したら、各アーキテクチャ上のレジスタをリネーム（名称変更）する。変更する各アーキテクチャ上のレジスタには物理レジスタを割り当て、対応するルックアップ・テーブルによってアーキテクチャ上のレジスタに付随する物理レジスタを特定する。したがって、発行キューにおいては、アーキテクチャ上のレジスタはリネームされている。この結果、１つのアーキテクチャ上のレジスタの複数のコピーが同時に存在しうる。これにより、ソース・オペランドが利用可能なかぎり命令をアウト・オブ・オーダーに実行することが可能になる。レジスタ・リネーミング・ユニット１４０はレジスタをリネームしてマップすることにより、特定の物理レジスタを参照しているすべての命令が完了し、当該特定の物理レジスタがアーキテクチャ上の最新の状態を格納していないときには不使用の物理レジスタを再割り当てしうるようにする。
【００２７】
命令はＩＩＱ１３１にキュー入れして適切な実行ユニットでの実行の用に供する。命令が固定小数点オペレーションを含んでいたら、複数の固定小数点ユニット（ＦＸＵ）１１４のうちの任意のものを使用する。すべての実行ユニット（ＦＸＵ１１４、ＦＰＵ１１８、およびＬＳＵ１１６）は完了テーブル（図示せず）を備えた完了ユニット１１９に接続されている。完了テーブルはどの発行済み命令が完了したかという情報、および他の状態情報を表わしている。完了ユニット１１９が出す情報はＩＦＵ１０８に転送する。ＩＤＵ１３２も完了ユニット１１９に情報を送付する。ＬＳＵ１１６が出すストア・オペレーションのデータはデータ・キャッシュ（Ｄ−キャッシュ）１０２に送付される。このデータは短期使用用にＤ−キャッシュ１０２に格納し、および／または、バス・インタフェース・ユニット（ＢＩＵ）１０１へ転送する。（「Ａおよび／またはＢ」は「ＡおよびＢ、Ａ、またはＢ」を表わす。）ＢＩＵ１０１はこのデータをバス４１２を介してメモリ１３９に送付する。また、ＬＳＵ１１６はＤ−キャッシュ１０２からデータをロードして実行ユニット（たとえばＦＸＵ１１４）による実行の用に供する。
【００２８】
ＳＭＴプロセッサにおける共用グループ完了テーブル（ＧＣＴ）のオペレーションは「処理システムにおいて複数のスレッドをサポートする動的共用完了テーブルのための方法とシステム（Method and System for Dynamically Shared Completion Table Supporting Multiple Threads In A Processing System）」なる名称の米国特許出願（シリアル番号０９／６８７０７８、２０００年１０月１２日出願）に詳細に記載されている。
【００２９】
図２は１クロック・サイクル当り１つの命令グループしか完了しない、ＩＤＵ２５１に接続されたＧＣＴ２０１を備えた、ＳＭＴプロセッサの完了ユニット２００のブロック図である。ＧＣＴ２０１は様々なエントリを備えているように示されている。ＧＣＴのエントリは通常、行基準に書き込む。行アドレス２０６は命令の１つのグループに対応し、マイクロコード２０７、分岐命令ＩＤ（Ｂタグ）２０８、ロード命令ＩＤ（Ｌタグ）２０９、ストア命令ＩＤ（Ｓタグ）２１０、終了ビット２１１、その他ビット２１２、および例外状態２１３から成る。行アドレス２０６にはスレッドＩＤ（ＴＩＤ）２１４と有効ビット２１５が付随しているが、それらは時々、列としてアクセスされるから、ＧＣＴ２０１の外部のレジスタにマップされている。また、ＧＣＴ２０１は１つのディスパッチ・ライト・ポート２０２と少なくとも１つの終了ライト・ポート２０３も備えている。さらに、完了ユニット２５９にはリード・ポート２０４が接続されている。また、フラッシュ要求に応答してフラッシュすべき命令を指示するフラッシュ・マスクを生成するフラッシュ・アレイ（図示せず）には少なくとも１つのリード・ポート２０５が接続されている。
【００３０】
完了ユニット２００はヘッド／テール・ポインタ管理用の論理回路２５９、Ｌタグ／Ｓタグ管理論理回路、例外処理論理回路、ファイル・マッパ・リソース管理論理回路、ストア・キュー管理論理回路、および分岐命令キュー管理論理回路を備えている。リソース計算論理回路ブロック２３８はＩＤＵ２５１と通信する。完了ユニット論理回路２５９は完了有効２２１、スレッド完了２２２、およびＧタグ完了２２３をレジスタ・ファイル・マッパ２２４に送付する。レジスタ・ファイル・マッパ２２４は信号２５０を介してＩＤＵ２５１と通信する。完了ユニット論理回路２５９は１サイクルで１つのグループを完了させるから、所定のクロック・サイクルでは、完了有効２２１、スレッド完了２２２、およびＧタグ完了２２３は１つのスレッドに対応している。また、完了ユニット論理回路２５９はＧタグ完了２２３とスレッド完了２２２をＧＣＴ２０１へ送付し、完了リード・データ２１８を受領する。
【００３１】
命令はプログラム順をはずれてディスパッチするが、プログラム順に完了しなければならない。完了していない命令は共用リソースを解放しないから、新たな命令のディスパッチ速度が低下するので、システムの動作が遅くなる。１サイクル当り１つのグループしか完了できない場合、ＳＭＴモードの動作では様々なオペレーションが遅くなる。たとえば、ロード・／ストア・ユニット（たとえば１１６）が、メモリに送付すべきストアを指示しているデータを保持している場合、ロード・／ストア・ユニットはストア再配列キュー（ＳＲＱ）のエントリを速やかに解放してストア命令を発行しうるようにしなければならない。同様に、１サイクル当り１つのグループしか完了できない場合、エントリ（たとえばロード・ミス・キュー（ＬＭＱ）エントリや分岐命令キュー（ＢＩＱ）エントリなど）を解放する他のオペレーションによってもシステムの性能は制限される。命令が完了したら、レジスタ・リネームを解放する。リネーム・レジスタは汎用レジスタ（ＧＰＲ）、浮動小数点レジスタ（ＦＰＲ）、制御レジスタ（ＣＴＲ）、およびストア・レジスタ（ＳＲ）とともに使用する。リネーム・レジスタが命令の完了を待ち受けている場合、ディスパッチする他の命令が必要とするリソースは利用することができない。また、命令の実行中には例外状態が発生する。命令の例外状態は実行ユニットがＧＣＴに送付する。例外状態を知るのが早いほど、例外処理論理回路は素早く問題を解決して実行用の命令フローを改善することができる。
【００３２】
図３は本発明の実施形態により１クロック・サイクル当り２つの命令グループ（１スレッド当り１つ）が完了する、ＩＤＵ１３２に接続されたＧＣＴ３０１を備えた、ＳＭＴプロセッサ４１０の完了ユニット１１９のブロック図である。ＧＣＴ３０１は図２のＧＣＴ２０１と同様に様々なエントリを備えているように示されている。ＧＣＴのエントリは通常、行基準に書き込む。行アドレス３０６は命令の１つのグループに対応し、マイクロコード３０７、分岐命令ＩＤ（Ｂタグ）３０８、ロード命令ＩＤ（Ｌタグ）３０９、ストア命令ＩＤ（Ｓタグ）３１０、終了ビット３１１、その他ビット３１２、および例外状態３１３から成る。行アドレス３０６にはスレッドＩＤ（ＴＩＤ）３１４と有効ビット３１５が付随しているが、それらは時々、列としてアクセスされるから、ＧＣＴ３０１の外部のレジスタにマップされている。また、ＧＣＴ３０１は１つのディスパッチ・ライト・ポート３０２と少なくとも１つの終了ライト・ポート３０３も備えている。本発明の実施形態によると、ＧＣＴ３０１はＴ０専用のリード・ポート３０４とＴ１専用のリード・ポート３５４を備えている。リード・ポート３０４、３５４は各スレッド専用であるから、完了ユニット論理回路３５９はＴ０用の信号３２３とＴ１用の信号３１８を同時にＧＣＴ３０１に送付することができる。したがって、（３２３と３１８における）両スレッド用のスレッド完了とＧタグ完了はＧＣＴ３０１に送付され、両スレッドは完了リード・データ（信号３１８）を同時に受領する。
【００３３】
また、完了ユニット論理回路３５９はＴ０用の信号３２１とＴ１用の信号３２２もレジスタ・ファイル・マッパ３２４に同時に送付する。レジスタ・ファイル・マッパ３２４も信号３５０を介してＩＤＵ１３２に接続されている。信号３２１はスレッドＴ０用のＣｏｍｐ＿Ｖａｌｉｄ  Ｔ０、Ｃｏｍｐ＿Ｔｈｒｅａｄ  Ｔ０、Ｃｏｍｐ＿Ｇｔａｇ  Ｔ０から成る。信号３２２はスレッドＴ１用のＣｏｍｐ＿Ｖａｌｉｄ  Ｔ１、Ｃｏｍｐ＿Ｔｈｒｅａｄ  Ｔ１、Ｃｏｍｐ＿Ｇｔａｇ  Ｔ１から成る。リソース計算論理回路ブロック３３８はＩＤＵ１３２が解放されたリソースを信号３３７によって知得しうるように、Ｔ０およびＴ１双方用のリソースの計算を同時に扱えるように変更されている。
【００３４】
完了ユニット１１９がＮＵＬＬ（ヌル）状態への逆方向リンクをスレッドによって同時に更新しうるように、ＧＣＴリンク・アレイ３３０は完了ユニット論理回路３５９に接続されたライト・ポートを二重に備えている。すなわち、Ｔ０用のＷＰ３２７とＴ１用のＷＰ３３１とである。また、完了ユニット論理回路３５９はＴ０用のヘッド（Ｈ）／テール（Ｔ）ポインタ管理論理回路３３６とＴ１用のヘッド（Ｈ）／テール（Ｔ）ポインタ管理論理回路３３４も備えている。これにより、完了時に各スレッドがＧＣＴ３０１を同時に走査することが可能になる。二重のＨ／Ｔポインタ管理論理回路３３６、３３４をサポートするために、ＧＣＴリンク・アレイ３３０は二重の次完了リード・ポート（next to complete read port）を備えている。すなわち、Ｔ０用のＲＰ３３２とＴ１用のＲＰ３３３とである。これにより、データ３３５中に各スレッド用の次の命令グループを送付することが可能になる。二重のＨ／Ｔポインタ管理論理回路３３６、３３４、ならびに、ＲＰ３３２およびＲＰ３３３によって、各スレッドのリネームした結果レジスタの同時コミットが可能になるとともに、未決のロード／ストア・タグ使用率のスレッドによる同時更新が可能になる。
【００３５】
上述したように、ポートを二重に設けることにより、ＩＤＵ１３２に接続された完了ユニット１１９が１サイクル当り２つの命令グループを完了させることが可能になる。１サイクルで２つの命令グループを完了できると、ＬＳＵ１１６はメモリに送付すべきデータ・ストアをより早く知ることが可能になるから、ＬＳＵ１１６内のＳＲＱエントリをより早く解放することが可能になる。同様に、ＬＳＵ１１６内のＬＭＱエントリ、ＩＤＵ１３２内の分岐命令ユニット（図示せず）内のＢＩＱエントリ、およびレジスタ・リネーム１４０内のレジスタ・リネーム・エントリをより早く解放することが可能になる。また、完了命令が速くなると、例外条件および例外状態の検出も早くなる。
【００３６】
図５は本発明の実施形態で使用する方法ステップ群のフローチャートを示す図である。ステップ５０１では、ＳＭＴプロセッサ４１０が第１のスレッド用の第１のリード・ポートと第２のスレッド用の第２のリード・ポートとを備えた動的共用ＧＣＴ３０１を完了ユニット１１９に取り込む。ステップ５０２では、第１のリード・ポートと第２のリード・ポートを用いて完了ユニット論理回路３５９をＧＣＴ３０１に接続する。ステップ５０３では、第１のスレッド用の第３のリード・ポート３３２と第２のスレッド用の第４のリード・ポート３３３とを用いてＧＣＴリンク・アレイ３３０内の順方向リンク・アレイを完了ユニット論理回路に接続する。ステップ５０４では、第１のスレッド用の第１のライト・ポート３２７と第２のスレッド用の第２のライト・ポート３３１とを用いてＧＣＴリンク・アレイ３３０内の逆方向リンク・アレイを完了ユニット論理回路３５９に接続する。ステップ５０５では、第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路３３６を完了ユニット論理回路３５９と第３のリード・ポート３３２に接続する。同様に、第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路３３４を完了ユニット論理回路３５９と第４のリード・ポート３３３に接続する。ステップ５０６では、命令グループが完了したら、ＧＣＴ３０１をスレッドによって同時に走査する。ステップ５０７では、リソース計算論理回路３３８をＩＤＵ１３２とレジスタ・ファイル・マッパ３２４に接続する。ステップ５０８では、各スレッド用のリネームした結果レジスタを同時にコミットする。ステップ５０９では、各スレッド用のロード／ストア命令使用率タグを同時に更新する。
【００３７】
本発明を実施するための代表的なハードウェア環境を図４に示す。図４は本発明によるワークステーションの典型的なハードウェア構成を示す図である。前記ワークステーションは同時マルチスレッド（ＳＭＴ）処理を備えた中央処理装置（ＣＰＵ）４１０、およびシステム・バス４１２を介して相互接続された多数の他の装置を備えている。図４に示すワークステーションはＲＡＭ（random access memory）４１４、ＲＯＭ（read only memory）４１６、周辺装置（たとえばディスク装置４２０やテープ装置４４０）をバス４１２に接続する入出力（Ｉ／Ｏ）アダプタ４１８、キーボード４２４、マウス４２６、スピーカ４２８、マイクロフォン４３２、および／またはユーザ・インタフェース装置（たとえばタッチ画面装置（図示せず））をバス４１２に接続するユーザ・インタフェース・アダプタ４２２、ワークステーションをデータ処理ネットワーク４５１に接続する通信アダプタ４３４、ならびに、バス４１２を表示装置４３８に接続するディスプレイ・アダプタ４３６を備えている。
【００３８】
以上、本発明およびその利点を詳細に説明したが、理解すべき点を挙げると、特許請求の範囲によって定義した本発明の本旨と範囲の内で様々な変形、置換、および変更をなすことができる。
【００３９】
まとめとして以下の事項を開示する。
（１）
同時スレッド化（ＳＭＴ）型のプロセッサであって、
第１のスレッド用の第１のリード・ポートおよび第２のスレッド用の第２のリード・ポートを備えた動的共用グループ完了テーブル（ＧＣＴ）と、
前記第１のリード・ポートおよび前記第２のリード・ポートに接続された完了ユニット論理回路を備えた完了ユニットと
を備え、
命令グループが完了したら前記ＧＣＴを同時に更新する、
プロセッサ。
（２）  さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第３のリード・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第４のリード・ポートを備えた順方向リンクアレイ
を備えた、
上記（１）に記載のプロセッサ。
（３）  さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第１のライト・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第２のライト・ポートを備えた逆方向リンクアレイ
を備えた、
上記（２）に記載のプロセッサ。
（４）  さらに、
前記完了ユニット論理回路および前記第３のリード・ポートに接続された、前記第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路と、
前記完了ユニット論理回路および前記第４のリード・ポートに接続された、前記第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路と        を備え、
命令グループが完了したら前記ＧＣＴを各スレッドによって同時に走査する、
上記（２）に記載のプロセッサ。
（５）  さらに、
前記完了ユニット論理回路に接続されたリソース計算論理回路、命令ディスパッチ・ユニット、およびレジスタ・ファイル・マッパ回路と、
前記ＳＭＴプロセッサにおいてリネームした結果レジスタの同時コミットを行う回路と、
前記ＳＭＴプロセッサにおいてロード／ストア命令ＩＤ（ＬタグおよびＳタグ）使用率を同時に更新する回路と
を備えた、
上記（４）に記載のプロセッサ。
（６）
中央処理装置（ＣＰＵ）と、
ランダム・アクセス・メモリ（ＲＡＭ）と、
入出力（Ｉ／Ｏ）アダプタと、
通信アダプタと、
前記ＣＰＵ、前記ＲＡＭ、前記Ｉ／Ｏアダプタ、および前記通信アダプタを接続するバスと、
前記ＣＰＵに設けられた同時マルチスレッド化（ＳＭＴ）プロセッサと、
第１のスレッド用の第１のリード・ポートおよび第２のスレッド用の第２のリード・ポートを備えた、前記ＳＭＴプロセッサ内に設けられた動的共用グループ完了テーブル（ＧＣＴ）と、
前記第１のリード・ポートおよび前記第２のリード・ポートに接続された完了ユニット論理回路を備えた完了ユニットと
を備え、
命令グループが完了したら前記ＧＣＴを同時に更新する、
データ処理システム。
（７）  さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第３のリード・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第４のリード・ポートを備えた順方向リンクアレイ
を備えた、
上記（６）に記載のデータ処理システム。
（８）  さらに、
前記完了ユニット論理回路に接続された、前記第１のスレッド用の第１のライト・ポート、および前記完了ユニット論理回路に接続された、前記第２のスレッド用の第２のライト・ポートを備えた逆方向リンクアレイ
を備えた、
上記（７）に記載のデータ処理システム。
（９）  さらに、
前記完了ユニット論理回路および前記第３のリード・ポートに接続された、前記第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路と、
前記完了ユニット論理回路および前記第４のリード・ポートに接続された、前記第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路と        を備え、
命令グループが完了したら前記ＧＣＴを各スレッドによって同時に走査する、
上記（８）に記載のデータ処理システム。
（１０）  さらに、
前記完了ユニット論理回路に接続されたリソース計算論理回路、命令ディスパッチ・ユニット、および命令シーケンサ・ユニットと、
前記ＳＭＴプロセッサにおいてリネームした結果レジスタの同時コミットを行う回路と、
前記ＳＭＴプロセッサにおいてロード／ストア命令タグ使用率を同時に更新する回路と
を備えた、
上記（９）に記載のデータ処理システム。
（１１）
完了ユニットに接続された動的共用グループ完了テーブル（ＧＣＴ）を用いて同時スレッド化（ＳＭＴ）プロセッサの性能を改善する方法であって、
第１のスレッド用の第１のリード・ポートおよび第２のスレッド用の第２のリード・ポートを用いて前記動的共用ＧＣＴを準備するステップと、
前記完了ユニット内の完了ユニット論理回路を前記第１のリード・ポートおよび前記第２のリード・ポートに接続するステップと
を備え、
命令グループが完了したら前記ＧＣＴを同時に更新する、
方法。
（１２）  さらに、
前記第１のスレッド用の第３のリード・ポートを用いて順方向リンク・アレイを前記処理ユニットに接続するステップと、
前記第２のスレッド用の第４のリード・ポートを用いて前記順方向リンク・アレイを前記処理ユニットに接続するステップと
を備えた、
上記（１１）に記載の方法。
（１３）  さらに、
前記第１のスレッド用の第１のライト・ポートを用いて逆方向リンク・アレイを前記処理ユニットに接続するステップと、
前記第２のスレッド用の第２のライト・ポートを用いて前記逆方向リンク・アレイを前記処理ユニットに接続するステップと
を備えた、
上記（１２）に記載の方法。
（１４）  さらに、
前記第１のスレッド用の第１のヘッド／テール・ポインタ管理論理回路を前記処理ユニット論理回路および前記第３のリード・ポートに接続するステップと、
前記第２のスレッド用の第２のヘッド／テール・ポインタ管理論理回路を前記処理ユニット論理回路および前記第４のリード・ポートに接続するステップと、
命令グループが完了したら前記ＧＣＴをスレッドによって同時に走査するステップと
を備えた、
上記（１３）に記載の方法。
（１５）  さらに、
前記完了ユニット論理回路にリソース計算論理回路を接続するとともに、命令ディスパッチ・ユニットおよび命令シーケンサ・ユニットを接続するステップと、
前記ＳＭＴプロセッサにおいて各スレッド用のリネームした結果レジスタを同時にコミットするステップと、
前記ＳＭＴプロセッサにおいて各スレッド用のロード／ストア命令タグ使用率を同時に更新するステップと
を備えた、
上記（１４）に記載の方法。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施形態によるＳＭＴプロセッサ内の機能ユニットのブロック図である。
【図２】ＳＭＴプロセッサにおいて１クロック・サイクル当り単一の命令グループを完了させる回路のブロック図である。
【図３】ＳＭＴプロセッサにおいて１クロック・サイクル当り１スレッド当り１つの命令グループを完了させる、２つの命令グループを完了させる回路のブロック図である。
【図４】本発明を実施する代表的なハードウェア環境を示す図である。
【図５】本発明の実施形態による方法ステップのフローチャートを示す図である。
【符号の説明】
【００４１】
１０１  バス・インタフェース・ユニット（ＢＩＵ）
１０２  Ｄ−キャッシュ
１０３  命令フェッチ・アドレス・レジスタ（ＩＦＡＲ）
１０４  命令キャッシュ（Ｉ−キャッシュ）
１０８  命令フェッチ・ユニット（ＩＦＵ）
１１３  命令シーケンサ
１１４  固定小数点ユニット（ＦＸＵ）
１１６  ロード／ストア・ユニット（ＬＳＵ）
１１８  浮動小数点ユニット（ＦＰＵ）
１１９  完了ユニット
１３１  命令発行キュー（ＩＩＱ）
１３２  ＩＤＵ
１３３  スレッド・セクタ
１３４  プログラム・カウンタ（ＰＣ）
１３５  命令キュー（ＩＱ）
１３６  命令キュー（ＩＱ）
１３７  スレッド優先度セクタ
１３９  メモリ
１４０  レジスタ・リネーム
２００  完了ユニット
２０１  グループ完了テーブル（ＧＣＴ）
２０２  ディスパッチ・ライト・ポート
２０３  終了ライト・ポート
２０４  リード・ポート（ＲＰ）
２０５  リード・ポート（ＲＰ）
２０６  行アドレス
２０７  マイクロコード
２０８  分岐命令ＩＤ（Ｂタグ）
２０９  ロード命令ＩＤ（Ｌタグ）
２１０  ストア命令ＩＤ（Ｓタグ）
２１１  終了ビット
２１２  その他ビット
２１３  例外状態
２１４  スレッドＩＤ（ＴＩＤ）
２１５  有効ビット
２１８  完了リード・データ
２２１  完了有効
２２２  スレッド完了
２２３  Ｇタグ完了
２２４  レジスタ・ファイル・マッパ
２３８  リソース計算論理回路ブロック
２５０  信号
２５１  ＩＤＵ
３０１  グループ完了テーブル（ＧＣＴ）
３０２  ディスパッチ・ライト・ポート
３０３  終了ライト・ポート
３０４  リード・ポート（ＲＰ）
３０５  リード・ポート（ＲＰ）
３０６  行アドレス
３０７  マイクロコード
３０８  分岐命令ＩＤ（Ｂタグ）
３０９  ロード命令ＩＤ（Ｌタグ）
３１０  ストア命令ＩＤ（Ｓタグ）
３１１  終了ビット
３１２  その他ビット
３１３  例外状態
３１４  スレッドＩＤ（ＴＩＤ）
３１５  有効ビット
３１８  完了リード・データ
３２１  信号
３２２  信号
３２４  レジスタ・ファイル・マッパ
３３８  リソース計算論理回路ブロック
３５０  信号
３５４  リード・ポート（ＲＰ）
４１０  ＣＰＵ
４１２  バス
４１４  ＲＡＭ
４１６  ＲＯＭ
４２０  ディスク装置
４４０  テープ装置
４１８  入出力（Ｉ／Ｏ）アダプタ
４２２  ユーザ・インタフェース・アダプタ
４２４  キーボード
４２６  マウス
４２８  スピーカ
４３２  マイクロフォン
４３４  通信アダプタ
４３６  ディスプレイ・アダプタ
４５１  データ処理ネットワーク
【図１】
2004326738.tif 000003
【図２】
2004326738.tif 000004
【図３】
2004326738.tif 000005
【図４】
2004326738.tif 000006
【図５】
2004326738.tif 000007