(57)【特許請求の範囲】
【請求項１】
命令およびデータ用のキャッシュ・メモリを備えた階層メモリを有するコンピュータ・システムであって、
パイプライン・ステージごとに定義された長さと定義された遅延を有する少なくとも１つの命令パイプラインによって適正順序で命令を処理するための少なくとも１つの第１の処理要素と、
順不同で命令を前処理することができる第２の処理要素とを備え、
前記第１の処理要素と前記第２の処理要素が、命令およびデータを取り出すために前記キャッシュ・メモリにそれぞれ結合され、
前記第１の処理要素と前記第２の処理要素が、一の命令ストリームを処理するために協力して動作するように結合され、前記第１の処理要素がキャッシュ・ミスにより機能停止すると、前記第２の処理要素が前記第１の処理要素のリタイヤした命令から順不同で前記命令ストリームの前処理を開始し、前記第２の処理要素による前記命令ストリームの前処理の結果として前記キャッシュ・メモリに必要なデータが格納されると、前記第１の処理要素が前記データを使用して処理を再開することを特徴とする、コンピュータ・システム。
【請求項２】
前記第１の処理要素と前記第２の処理要素との同期を取るために、前記第１の処理要素と前記第２の処理要素との両方に結合された同期ユニットをさらに備える、請求項１に記載のコンピュータ・システム。
【請求項３】
前記第１の処理要素内にある汎用レジスタの更新コピーを前記第２の処理要素に伝達するために、当該汎用レジスタと前記第２の処理要素との間に汎用レジスタ・インタフェースが設けられ、当該汎用レジスタ・インタフェースを介して前記第１の処理要素と前記第２の処理要素の前記パイプライン・ステージの同期を取るために同期レジスタ割当てリストを有するレジスタ管理システムが設けられている、請求項１に記載のコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・システムに関し、特に、システム・パフォーマンスを改善し、改良されたマイクロプロセッサ・サポートを備えたマイクロプロセッサを提供するように、互いに結合されたマイクロプロセッサとコプロセッサとを備えたコンピュータ・システムに関する。
【０００２】
【従来の技術】
現行のマイクロプロセッサのパフォーマンスは、重要な作業負荷の大部分に関する有限キャッシュ効果によって厳密に制限されている。有限キャッシュ効果は、マイクロプロセッサの第１レベルのキャッシュが無限に大きくなっていれば解消するであろうパフォーマンス劣化のすべての誘因を含む。オフチップ記憶域からのオペランド・データを待っている間にマイクロプロセッサが機能停止する時間の量は、多くの場合に命令の実行に費やす時間と等しい。これは、データベースおよびトランザクション処理を含む作業負荷の場合に特に言えることである。
【０００３】
多くの現行のマイクロプロセッサ設計は、有限キャッシュの不利益の低減を目指している。大規模キャッシュ、複数レベルのキャッシュ、高速マルチチップ・モジュール、順不同（out-of-order）実行、命令事前取出しは広く使用されており、最も有用であると考えられている。オペランドの事前取出しも、通常の順不同処理の有無にかかわらず、所与の作業負荷に正常に使用されている。しかし、オペランドの事前取出しは、データベースおよびトランザクション作業負荷には特に効果的なわけではない。大規模キャッシュは有限キャッシュ効果の低減をもたらすが、この領域のさらなる改良は、ダイのサイズまたはチップ・カウントの増加が示すコスト・パフォーマンス上の意味によって制限されている。現行の順不同実行技法は、有限キャッシュ効果の大幅な低減をもたらすが、プロセッサ・クロック周波数の低減および設計の複雑さの増大という形の不利益を伴う。したがって、以前は好ましいと考えられていた順不同実行設計を実現するコストを大幅に削減できるようなマイクロプロセッサ設計の改良を提供する必要がある。
【０００４】
用語集
ＣＰＩは、命令当たりのマシン・サイクル数を意味する。
【０００５】
ＳＦＥは、本発明が提供する推論取出しエンジンである。
【０００６】
ｕＰＣｏｒｅは、サイクル時間と設計の複雑さと無限キャッシュＣＰＩとの兼ね合いに関してバランスを取ったマイクロプロセッサ設計を表す。
【０００７】
【発明が解決しようとする課題】
本発明は、コンピュータ・システムを設計するための方法を提供し、詳細には、順不同サポートを改善し、大規模キャッシュおよびマルチレベル・キャッシュを使用する能力をコンピュータ・システムに提供し、特に、マイクロプロセッサとこれに結合されたコプロセッサとを備え、当該コプロセッサの推論取出しエンジンを使用して、有限キャッシュの不利益の低減を達成し、それによりシステム・パフォーマンスの向上をもたらすコンピュータ・システムを提供する。
【０００８】
【課題を解決するための手段】
好ましい実施例の改良点は、複数のパイプラインの同期によるレジスタ管理を介してマイクロプロセッサ・サポートを改善する。このような改良点は、（必要に応じて先取出しおよび同時ロードの実行などのスーパスカラ技法を処理できるようになっているが）本質的に適正順序（in-order）で命令を処理するマイクロプロセッサ・コアと協力して動作する複数の実行要素を有する推論取出しエンジン（ＳＦＥ）と、順不同実行のための方法と、複数のマイクロプロセッサとの同期を取る方法と、ＳＦＥとマイクロプロセッサ・コア（ｕＰＣｏｒｅ）の両方によって共用される記憶階層への推論メモリ参照の生成を可能にするレジスタ管理プロセスとを提供することによって達成される。
【０００９】
ｕＰＣｏｒｅとＳＦＥは、どちらも処理要素と見なされる（この意味で、ｕＰＣｏｒｅを「第１の処理要素」ともいい、ＳＦＥを「第２の処理要素」または「コプロセッサ」ともいう）。第１および第２の処理要素を有するコンピュータ・システムは、その内部で順次命令ストリームを処理し、第１および第２の処理要素の各々はそれ自体の汎用レジスタおよび制御レジスタの設定によって決定されるそれ自体の状態を有する。処理中の任意の時点において、同じ順次命令ストリームの連続処理を第２の処理要素に引き継がせることが利益になる場合、第１および第２の処理要素は、順次命令ストリームを処理し、全く同じ命令を実行している可能性があるが、第１および第２の処理要素の状態の組合せによって決定される、前記コンピュータ・システムの全体的なアーキテクチャ状態を変更することができるのは、第１および第２の処理要素の一方だけ（好ましい実施例ではｕＰＣｏｒｅ）になる。
【００１０】
好ましい実施例では、第２の処理要素は、順不同実行を可能にし、それにより、有限キャッシュの不利益を低減してパフォーマンスを向上するために、適正順序処理用の第１の処理要素より多くのパイプライン・ステージを有する。第２の処理要素の結果を格納しても、好ましい実施例ではコンピュータ・システムのアーキテクチャ状態を変更することはない。結果は、その汎用レジスタまたはその専用ストア・バッファ内に格納される。２つの処理要素の状態の再同期化は、無効命令、機能停止、または順不同コプロセッサ（ＳＦＥ）による処理が計算済みの特定の利益をもたらすときに行われる。
【００１１】
ＳＦＥはｕＰＣｏｒｅとインタフェースし、したがって、本発明は同じシリコン・チップ上に設けたＳＦＥと第１の処理要素であるｕＰＣｏｒｅによって、より容易に実施される。また、マルチチップ実施態様も可能であり、本発明の現行実施例と一貫するものである。ｕＰＣｏｒｅは通常の構造を有し、好ましい実施例では、複合システムのアーキテクチャ状態を維持する。しかし、一般化されたミラー・バージョンでは、アーキテクチャ状態を維持する責任は、交互に果たされるかまたは両者によって共用される。ＳＦＥによって呼び出されたアクションは、好ましい実施例では、ｕＰＣｏｒｅのアーキテクチャ状態を直接変更することはない。ＳＦＥは、ｕＰＣｏｒｅがそれを使用する前に複合システムのキャッシュを命令およびオペランド・データで満たす記憶参照を生成するために使用する。このような改良点は、米国特許第４９０１２３３号（以下「Ｌｉｐｔａｙ特許」という）および米国特許第４５７４３４９号で開発されたものなどの従来のレジスタ・リネーム方式によって可能になったシステム・パフォーマンスを拡張する。
【００１２】
上記その他の改良点については以下の詳細な説明に示す。特に本出願人が最初に開発し広く実施されている従来の設計を上回る利点および特徴を備えた本発明をさらに理解するために、以下の説明および後述する図面を参照されたい。
【００１３】
【発明の実施の形態】
好ましい実施例を詳細に検討する前に、一例として、Ｌｉｐｔａｙ特許に記載されている典型的な従来技術の順不同マイクロプロセッサ設計を例示することは価値のあることだろう。図１および図２は、レジスタ管理システム（ＲＭＳ）３２の使用を教示するＬｉｐｔａｙ特許に記載された、典型的な従来技術の順不同マイクロプロセッサ設計を示している。ＲＭＳ３２により、アーキテクチャで定義されている以上の物理レジスタを汎用レジスタならびに精密な分岐後回復の両方に使用できるようになる。ＲＭＳ３２の使用は、順不同実行を使用可能にするために本質的なものである。順不同実行により、本発明の焦点である有限キャッシュの不利益を大幅に低減できることが分かっている。Ｌｉｐｔａｙ特許の好ましい実施例は、従来技術の適正順序実行用のプロセッサ設計の基本パイプラインの変更を含む。このような変更は、全体的なシステムにＲＭＳを統合する必要があり、その結果、長い、すなわち、ステージ数が多い命令パイプラインになるか、または適正順序設計の命令パイプラインよりステージ当たりの論理数が多い命令パイプラインになる。Ｌｉｐｔａｙ特許の好ましい実施例により、従来の適正順序設計に対する無限キャッシュＣＰＩと有限キャッシュＣＰＩの両方の改良が可能になる。本発明は、無限キャッシュＣＰＩを改善するための順不同技法の使用を排除するものではないが、主命令実行パイプラインにおける順不同サポートと設計の複雑さとのより良いバランスを達成するためにその使用を制限することができる。本発明は、ｕＰＣｏｒｅのパイプライン長またはパイプライン内の各ステージの長さを増加せずに、有限キャッシュＣＰＩを低減するための順不同技法の使用に集中するものである。全体的な結果として、Ｌｉｐｔａｙ特許よりシステム・パフォーマンスが向上する。というのは、データベースおよびトランザクション作業負荷の場合、サイクル時間の改善によって、Ｌｉｐｔａｙ特許によって得られる無限キャッシュＣＰＩの小規模の改善に比べ、パフォーマンスが向上するからである。さらに、本発明は、ｕＰＣｏｒｅを適正順序設計として実現する場合にＲＭＳ３２を主命令処理パイプラインから分離することにより、順不同命令処理に関連するすべての問題について設計の複雑さの大幅低減を見込んでいる。このような検討事項を念頭に置いて、Ｌｉｐｔａｙ特許によって実現された図１および図２について説明する。
【００１４】
Ｌｉｐｔａｙ特許の発明は、たとえば、ｎ個の汎用レジスタ（ＧＰＲ）などの指定の複数のアドレス可能（論理）レジスタのアーキテクチャ設計要件を有するコンピュータ・システム用のレジスタ管理システム（ＲＭＳ）３２であった。Ｌｉｐｔａｙ特許における設計の要素の多くは、後述するように本システムでも使用する。ｍ個のレジスタを有する汎用レジスタ・アレイ（ＲＡ）３０は、ｎ個のＧＰＲの諸機能を果たすために設けられている（但し、ｍはｎより大きい）。例示の実施例として、Ｌｉｐｔａｙ特許には、１６個のＧＰＲを有する周知のＩＢＭシステム／３７０アーキテクチャに従ったシステムが記載されており、このシステムは現在でも現行のＩＢＭシステム／３９０マシンに使用されている。ＲＡ３０は、ＧＰＲの諸機能を果たすために、特定のＲＡ位置の動的割当てを提供する。特定のレジスタ割当ての機能が完了すると、ＲＡ３０内のその位置は解放され、やがて同じかまたは他のＧＰＲとして再割当て可能になる。
【００１５】
レジスタ管理システム（ＲＭＳ）３２は、全体的なコンピュータ・アーキテクチャに依存しておらず、現行のマイクロプロセッサ設計で使用されているように、様々な環境で実現することができる。したがって、メインフレーム・プロセッサであるかマイクロプロセッサであるかにかかわらず、図１および図２に示すコンピュータ・システム１０は、キャッシュ・メモリ１４に接続されたメイン・メモリ１２を有する。キャッシュ・メモリ１４は、任意の数の容認できる方法で編成することができるが、この例では命令動作とデータ動作をそれぞれ別々に処理するために命令キャッシュ１６とデータ・キャッシュ１８がともにメイン・メモリ１２に接続された状態で示されている。階層メモリ設計は、カスケード配置においてメモリ・サイズとメモリ速度という両方の利点をもたらすためにキャッシュ・メモリに複数のレベルを設けるものであり、このようなメモリ設計は、図１および図２には示されていないが、図３に示すように本発明と一貫するものである。
【００１６】
図１および図２のように、命令は命令キャッシュ１６から命令バッファ２０を通って命令レジスタ２２に伝わる。例示のため、命令レジスタ２２は複数の別々の命令レジスタを有し、このような命令レジスタの望ましい数は２個ないし４個である。
【００１７】
実行ユニットとして機能する汎用実行ユニットは、算術または論理、スカラまたはベクトル、スカラまたは浮動小数点など、実行される機能のタイプに沿って設計することができる。その機能がどのようなものであれ、汎用実行ユニットは汎用レジスタ（ＧＰＲ）を使用するので、この発明は、コンピュータ内の汎用実行ユニットの数、機能、設計の点で多くの変形態様に応用可能である。
【００１８】
例示のため、Ｌｉｐｔａｙ特許のシステムは、それぞれ２４および２６という参照番号を付した汎用実行ユニット１および２とともに示されている。汎用実行ユニット２４の出力はストア・バッファ２８に接続され、当該ストア・バッファの出力はデータ・キャッシュ１８に接続されている。汎用実行ユニット２４は、実際には単一の実行ユニットである場合もあれば、複数の実行ユニットの組合せである場合もある。この実施例に示すように、汎用実行ユニット２４はストア・バッファ２８に送られる結果を生成するが、その結果は命令完了までストア・バッファ２８内に保持され、その後、メモリに格納することができる。他方、汎用実行ユニット２６の出力は、この発明による汎用レジスタ・アレイ（ＲＡ）３０に接続されている。汎用実行ユニット２６は命令について動作して結果を生成するが、その結果は、直ちに格納するのではなく、レジスタ内で使用可能である必要がある。命令待ち行列３１は、命令レジスタ２２から命令を受け取って、それを汎用実行ユニット２４または２６に適切に向けるために設けられている。単一のＲＡ３０およびレジスタ管理システム（ＲＭＳ）３２とともに、様々なタイプの複数の実行ユニットを使用することができる。ＲＡ３０は、このアーキテクチャによって認識される１６個のＧＰＲの諸機能を果たすために、動的に割当て可能な３２個の実（物理）レジスタを含む。
【００１９】
ＲＡ３０は、状況情報によって制御され、制御バス３４を介してレジスタ管理システム（ＲＭＳ）３２に状況情報を供給する。ＲＭＳ３２は、様々なタイプの状況情報を受け取ってこれを供給するようにシステムの他の幾つかの要素に接続されている。割込み制御要素３６は、命令レジスタ２２、ＲＭＳ３２、ＲＡ３０に接続され、割込みの適切な処理を行い、必要な状況情報を保存する。
【００２０】
ＲＭＳ３２は、発行から実行まで命令に従い、入力オペランドおよび出力オペランド用にレジスタを割り当てるために、命令レジスタ２２と汎用実行ユニット２４および２６に接続されている。
【００２１】
図２の命令待ち行列５０は、命令レジスタ２２から命令を受け取るように接続され、命令アドレス計算要素５２への出力を有する。また、命令アドレス計算要素５２は、ＲＡ３０から入力を直接受け取るように接続され、命令キャッシュ１６に接続された出力を有する。命令待ち行列５０は、状況情報を供給するようにＲＭＳ３２に接続されている。
【００２２】
図２のアドレス待ち行列６０は、命令レジスタ２２からの出力を受け取るように接続されている。アドレス待ち行列６０の出力は、データ・アドレス計算要素６２への入力として接続されている。データ・アドレス計算要素６２へのもう一方の入力は、ＲＡ３０からのものである。データ・アドレス計算要素６２は、状況情報を供給するようにＲＭＳ３２に接続されている。
【００２３】
データ・アドレス計算要素６２の出力はアドレス取出し待ち行列６４に接続され、この待ち行列はデータ・キャッシュ１８への入力として接続された第１の出力と、アドレス・ストア待ち行列６６への入力として接続された第２の出力とを有する。アドレス・ストア待ち行列６６は、データ・キャッシュ１８に接続された出力を有し、状況情報を供給するようにＲＭＳ３２との接続を有する。
【００２４】
浮動小数点（演算）ユニット７０は、同じく状況情報を供給するようにＲＭＳ３２に接続されている。後述するように、ＲＭＳ３２がＲＡ３０とは関連していないユニットおよびレジスタとともに機能できることは重要なことである。たとえば、１つのＲＭＳは、複数のＲＡとともに機能することができる。より具体的には、１つのＲＭＳが２つのＲＡを制御し、これらのＲＡを同じかまたは異なるタイプの複数の実行ユニットに接続することができる。
【００２５】
浮動小数点ユニット７０の入力は、浮動小数点命令待ち行列７２および浮動小数点データ・レジスタ７４によって供給される。浮動小数点命令待ち行列７２は、命令レジスタ２２からその入力を受け取る。浮動小数点データ・レジスタ７４は、データ・キャッシュ１８および浮動小数点ユニット７０からその入力を受け取る。浮動小数点ユニット７０の出力は、ストア・バッファ７６に接続され、当該ストア・バッファの出力は、データ・キャッシュ１８への入力として接続されている。
【００２６】
次に本発明をより詳細に検討すると、図３に示すように大規模キャッシュおよび複数レベルのキャッシュを設けることができる場合に使用するために、後述する本システムが有効である。本発明は既存のキャッシュのパフォーマンスに改良を加えるものであり、その推論取出しは各レベルのキャッシュのミス率を改善することになる。全パフォーマンス上の利益は、多くの場合に、ＳＦＥのシリコン・サイズによってオンチップ・キャッシュが増加した場合に得られたはずのものと比較して評価しなければならない。Ｌ１キャッシュの場合のように、この比較が必ずしも有効ではない場合がある。というのは、Ｌ１キャッシュにとっては、領域ではなくサイクル時間の制約が重要であるのが通常であるからである。予備的な結果によれば、オンチップの２次キャッシュのサイズの約１／４〜１／２であるＳＦＥを使用して、１５〜２０％のパフォーマンスの改善が得られる可能性がある。
【００２７】
図３の好ましい実施例
図３の好ましい実施例に示すように、諸要素の相互接続は、様々なインタフェース、たとえばｕＰＣｏｒｅ（２００）と、同期ユニット（ＳＵ  ２０１）と、ＳＦＥ（２０２）、命令およびデータ・キャッシュ（２０３）との間のインタフェースによって行われる。キャッシュ・メモリは、任意の数の容認できる方法で編成することができるが、この例では、この階層メモリのメイン・メモリ２０４に接続された複合式の命令およびデータ・キャッシュ（以下単に「キャッシュ」ともいう）２０３によって示されている。この階層メモリは、カスケード配置においてメモリ・サイズとメモリ速度という両方の利点をもたらすためにキャッシュ・メモリに複数のレベル（たとえば、２０３’、２０３”）を設けるものであり、このようなメモリ設計は本発明と一貫するものである。また、分割式の命令キャッシュとデータ・キャッシュも本発明と一貫するものである。
【００２８】
任意の数のＳＦＥ  ２０２、２０２’、２０２”とともに、任意の数のｕＰＣｏｒｅ  ２００、２００’、２００”を使用することができる。所与の時点では、一のＳＦＥを単一のｕＰＣｏｒｅに関連付けることができるが、同期機能が実行された後は、他のｕＰＣｏｒｅとの関連付けに変更することができる。各ＳＦＥは、１つのストア・バッファおよび１つのＳＵに関連付けられている。たとえば、必要なＳＦＥ機能を提供するために、ＳＵ  ２０１’とＳＦＥ  ２０２’とストア・バッファ２０５’とをまとめて使用する。任意の数のＳＦＥを単一のｕＰＣｏｒｅに同時に関連付けることができる。好ましい実施例は、単一のＳＦＥと複数のｕＰＣｏｒｅとを有する。
【００２９】
しかし、好ましい実施例のハードウェアの詳細説明に入る前に、図３では、一般化された代替実施例（すなわち、ｕＰＣｏｒｅがコンピュータ・システムのアーキテクチャ状態を交互に制御するように動作可能であるというもの）も認識することができるであろう。図３の一般化された代替実施例では、ここに示し説明する諸機能を２重にしているが、アーキテクチャ状態の制御権は、ｕＰＣｏｒｅ  ２００、２００’、２００”とＳＦＥ  ２０２、２０２’、２０２”との間で交互に切り替わり、以下で詳述するミラー・イメージとして同じ機能が実行される。
【００３０】
したがって、この好ましい実施例は、一般化された代替実施例の具体的な好ましい例である。後者の代替実施例では、第１の処理要素であるｕＰＣｏｒｅ  ２００、２００’、２００”と第２の処理要素であるＳＦＥ  ２０２、２０２’、２０２”とは、協力して動作しつつ、コンピュータ・システムのアーキテクチャ状態の制御権を交互に有する。これに対し、図３に示す好ましい実施例では、第１の処理要素が、アーキテクチャ状態の制御権を有し、順次命令ストリームのほとんどの命令を適正順序で処理する。したがって、一般に、第１および第２の処理要素を有し且つそれぞれの処理要素がそれ自体の汎用レジスタおよび制御レジスタの設定によって決定されるそれ自体の状態を有するようなコンピュータ・システム内で順次命令ストリームを処理するための方法は、第１の処理要素（たとえば、ｕＰＣｏｒｅ  ２００）に順次命令ストリームの初期命令を向けることから開始する。順次命令ストリームの処理は、第１の処理要素を使用して続行され、そして当該第１の処理要素は、コンピュータ・システムのアーキテクチャ状態の任意の変化を第２の処理要素に転送する。しかし、第１の処理要素（たとえば、ｕＰＣｏｒｅ  ２００）による順次命令ストリームの処理中の任意の時点において、同じ順次命令ストリームの連続処理を第２の処理要素（たとえば、ＳＦＥ  ２０２）に開始させることが利益になる場合、第２の処理要素は、転送された状態を復元し、同じ順次命令ストリームの連続処理を開始する。
【００３１】
次に、第２の処理要素は、第１の処理要素が必要とするコンピュータ・システムのアーキテクチャ状態の任意の変化を、第１の処理要素に転送する。
【００３２】
制御権が交互に切り替わる代替実施例と好ましい実施例のいずれでも、第１および第２の処理要素は全く同じ命令を実行している可能性があるが、第１および第２の処理要素の状態の組合せによって決定されるコンピュータ・システムの全体的なアーキテクチャ状態を変更できるのは、第１および第２の処理要素の一方だけになる。好ましい実施例では、この組合せは第１の処理要素によって決定され、第２の処理要素であるＳＦＥのアクションはコンピュータ・システムのアーキテクチャ状態を変更することはない。これに対し、代替実施例では、コンピュータ・システムのアーキテクチャ状態は、第２の処理要素の状態によって全部または一部が決定される可能性がある。好ましい実施例において有限キャッシュの不利益が低減されるのは、ｕＰＣｏｒｅ（のパイプライン）がほとんどすべての順次命令を適正順序で処理し、ＳＦＥがｕＰＣｏｒｅとＳＦＥによって共用されるキャッシュを準備するために使用する命令を前処理し、アーキテクチャ状態の制御権を有するｕＰＣｏｒｅとの再同期化を可能な限り頻繁に取り、ＳＦＥの結果が当該ＳＦＥに関連付けられたストア・バッファ２０５に格納されるようにＳＦＥが命令を前処理する場合である。
【００３３】
好ましい実施例には当てはまらないが、代替実施例では、アーキテクチャ状態の制御権は交互に切り替わる。
【００３４】
代替実施例では、第１および第２の処理要素の各々は、それ自体の汎用レジスタおよび制御レジスタの設定によって決定されるそれ自体の状態を有し、順次命令ストリームの処理中に全く同じ命令を実行している可能性があるが、第１および第２の処理要素の状態の一部の組合せによって決定されるコンピュータ・システムの全体的なアーキテクチャ状態を変更できるのは、第１および第２の処理要素の一方だけであり、またアーキテクチャ状態を制御する主体が第１の処理要素から第２の処理要素に切り替わり、その後に第２の処理要素から第１の処理要素に切り替わることができる。このプロセスは、まず第１の処理要素を使用して順次命令ストリームの処理を開始し、第２の処理要素が必要とするコンピュータ・システムのアーキテクチャ状態の変化を第２の処理要素に転送し、将来の時点で第２の処理要素がアーキテクチャ状態を制御するためにこのように転送された変化を蓄積することを含む。次に、第１の処理要素による順次命令ストリームの処理中の任意の時点において、同じ順次命令ストリームの連続処理を第２の処理要素に引き継がせることが利益になると判定された場合、第２の処理要素は、第１の処理要素から前に転送された蓄積済みのアーキテクチャ状態を復元し、順次命令ストリームを処理することにより、同じ順次命令ストリームの連続処理を引き継ぐ。第２の処理要素は、順次命令ストリームの処理の制御権を有している間、将来の時点で使用すべきアーキテクチャ状態に関する変化の蓄積と使用のために、第１の処理要素が必要とするコンピュータ・システムのアーキテクチャ状態の変化を第１の処理要素に転送する。次に、もう一度、制御権を切り替えることができる。すなわち、第２の処理要素による順次命令ストリームの処理中の任意の時点において、第１の処理要素に制御権を戻し、同じ順次命令ストリームの連続処理を第１の処理要素に引き継がせることが利益になる場合、第１の処理要素は、第２の処理要素から前に転送された蓄積済みのアーキテクチャ状態を復元し、順次命令ストリームを処理することにより、同じ順次命令ストリームの連続処理を引き継ぐ。
【００３５】
ここで、第１および第２の処理要素は、マルチプロセッサとして機能することができる。また、参照番号２００、２００’、２００”によって示すように、第１の処理要素は、１つ以上のＳＦＥとともにマルチプロセッサとして機能する複数の第１の処理要素を含むことができる。しかし、複数のＳＦＥは、単一のｕＰＣｏｒｅとともに使用されないはず
である。すなわち、マルチプロセッサは、１つ以上の第１の処理要素と少なくとも１つの第２の処理要素との組合せで以て機能することができるからである。好ましい実施例では、第２の処理要素の各々ごとに、１つの同期ユニット（ＳＵ  ２０１、２０１’、２０１”）という形の同期機能が設けられている。このＳＵは、第１の処理要素であるｕＰＣｏｒｅによって処理されている命令ストリームのうちの同じ命令の処理を第２の処理要素ＳＦＥ  ２０２、２０２’、２０２”が開始する時期を決定する。したがって、各ＳＦＥごとに１つの同期ユニットが設けられ、この同期ユニットは、制御権を有しているｕＰＣｏｒｅによって処理されている順次命令ストリームのうちの同じ命令または次の命令の処理を関連するＳＦＥが開始する時期を決定する。また、この同期ユニットは、関連するＳＦＥによる命令の処理を停止または無視すべき時期を決定する。この決定は、第１および第２の処理要素からこの同期ユニットに供給される入力を使用して、コンピュータ・システム全体の計算済み利益判定によって行われる。これらの入力は、その時点でこの同期ユニットに供給することができるか、または図５のカウンタ４０７および４０８のように、システム内に格納された情報からこの同期ユニットに供給することができる。
【００３６】
図８のステップ７０９のように、第１の処理要素による命令の処理中に機能停止判定が行われた場合、同期ユニットは、第１の処理要素が処理しているものと同じ命令の処理を第２の処理要素が開始する時期を決定する。第１の処理要素による命令の処理中に第２の処理要素が処理するよう設計されていない動作がある場合、すなわち、有効な命令が使用可能でない場合（ステップ７０７）、同期ユニットは、第２の処理要素の状態とコンピュータ・システムのアーキテクチャ状態との再同期化（好ましい実施例では、ＳＦＥとｕＰＣｏｒｅの状態の再同期化）を行う時期を決定する。命令ストリームの処理中に第２の処理要素がコンピュータ・システムに対していかなる利益ももたらさないと判定された場合（ステップ７０８）、同期ユニットは、第２の処理要素の状態とコンピュータ・システムのアーキテクチャ状態との再同期化を行う時期を決定する。図８に示すすべての判定ステップ７０７、７０８、７０９では、同期ユニットによって再同期化を行うべき時期を決定するだけでなく、どの処理要素との状態の再同期化を行うべきかも決定する。命令を前処理している第２の処理要素、すなわち、ＳＦＥは、その結果をそれ専用の結合済みストア・バッファ２０５、２０５’、２０５”に格納する。この格納は他の処理要素のアーキテクチャ状態に影響しないので、これらの別々の同期化によって、ＳＦＥは、順次命令ストリームのほとんどの命令を処理する第１の処理要素のパフォーマンスを改善することができる。一方、ＳＦＥは、第１の処理要素によって処理されている順次命令ストリームのうちの次の命令または同じ命令を処理することができ、ＳＵは、第２の処理要素による命令の処理を停止または無視すべき時期を決定することができる。第１の処理要素は、取出しのために第１および第２の処理要素の両方によって共用されるデータおよび命令キャッシュからデータを取り出す。
【００３７】
好ましい実施例によれば、第１の処理要素のためにキャッシュを満たし、順不同処理要素として前処理を行うために、ＳＦＥを使用して順次命令ストリームを前処理することができる。再同期化中および第２の処理要素による命令の処理を停止または無視すべき場合、第２の処理要素は、再同期化の前に第１の処理要素用の命令ストリームの前処理のすべての結果と部分結果を除去する。
【００３８】
したがって、好ましい実施例では、ＳＦＥ、同期ユニット、２つ以上のｕＰＣｏｒｅ、ならびにＳＦＥ用の１つ以上の専用ストア・バッファ２０５が図８に示す方法で使用されることが分かるだろう。同期ユニット２０１は、図８に示すように、ＳＦＥ  ２０２の状態を保持する。許容できる状態は、動作中（Ａ）、除去中（Ｂ）、ＳＦＥとｕＰＣｏｒｅ  ２００との再同期化中（Ｃ）、ＳＦＥとｕＰＣｏｒｅ  ２００’との再同期化中（Ｄ）である。ＳＦＥの初期状態は（Ｃ）である。状態Ｃでは、ＳＦＥは、ｕＰＣｏｒｅ  ２００から最新のリタイヤ済み命令のアドレスを受け取り、そのアドレスで順不同実行を開始するための用意をする。同期ユニット２０１は、キャッシュ・ミスのためにｕＰＣｏｒｅが機能停止したことを示す表示の有無について、ＳＦＥとともに機能する各ｕＰＣｏｒｅごとに、当該ｕＰＣｏｒｅとのＳＵのインタフェースを連続的に監視する。このｕＰＣｏｒｅは動作中であり、インタフェース２１０を介してキャッシュ２０３およびメイン・メモリ２０４を連続的に参照している。命令およびオペランド・データは、キャッシュ２０３からインタフェース２１０を介してこのｕＰＣｏｒｅに戻される。
【００３９】
再同期化中状態から動作中（Ａ）状態への状態変化は、ＳＦＥのレジスタ管理システム（ＲＭＳ）３０１がｕＰＣｏｒｅに関連する同期レジスタ割当てリスト（ＳＲＡＬ）の内容をＳＦＥのデコード・レジスタ割当てリスト（ＤＲＡＬ）にロードしたときに発生する。動作中（Ａ）状態に入ると、ＳＦＥは、ｕＰＣｏｒｅからインタフェース２０６を介して受け取った最新の命令アドレスで命令取出しと実行を開始する。ＳＦＥのＧＰＲ状態は、同じ命令アドレスによって指し示された命令のリタイヤ時にｕＰＣｏｒｅが持っていたのと同じ状態を反映する。ＳＦＥが動作中である間に、インタフェース２０６を介して受け取ったＧＰＲ結果はＳＦＥの汎用レジスタ・アレイ（ＲＡ）に継続的に書き込まれるが、レジスタ管理システムは当該ＧＰＲ結果を同期レジスタ割当てリスト（ＳＲＡＬ）に関連付ける。当該ＧＰＲ結果は、同期事象後にＳＦＥ内で実行される命令のみが使用することになる。このようにして、ＳＦＥは、それが関連付けられている各ｕＰＣｏｒｅのＧＰＲ状態の個別のイメージを維持し、このイメージを後でアクセスすることができる。一方、ＳＦＥのＲＭＳ３０１は、ＳＦＥによる命令ストリームの実行に使用するＧＰＲのイメージを更新するために、ＳＦＥの実行結果のみを使用する。
【００４０】
ＳＦＥは、動作中（Ａ）状態に入った直後に順不同命令の実行を開始することになるが、その間、ｕＰＣｏｒｅはそれ自体のペースで実行を続行し、その命令を取り出す。これらの命令は、ｕＰＣｏｒｅが使用する前にキャッシュ２０３に供給される、ＳＦＥの記憶参照に応じた命令を含む。好ましい実施例のｕＰＣｏｒｅは、適正順序処理のための処理要素として排他的に設計するか、または適正順序処理のために最適化するか、またはすべての命令の実質的に９５％未満が予測から利益を得られない場合に命令の処理を扱えるものにすることができる。したがって、ｕＰＣｏｒｅは、Ｌ１キャッシュ・ミスの場合にパイプライン機能停止を経験する可能性がある。ＳＦＥは、順不同実行を行うことができるので、機能停止を発生した命令以降も続行することができる。ＳＦＥは、動作中である間に取出し参照を生成し、これをインタフェース２０７を介してキャッシュ２０３に送るとともに、インタフェース２０８を介してストア・バッファ２０５に送る。キャッシュ２０３とストア・バッファ２０５の両方が所望のデータを持っていない場合に、キャッシュ・ミスが検出される。命令およびオペランドは、ストア・バッファ２０５内に関連項目がない場合には、インタフェース２０７を介してＳＦＥに戻され、ストア・バッファ２０５内に関連項目がある場合には、インタフェース２０８を介して戻される。ＳＦＥのストア参照は、キャッシュ２０３には送られず、むしろストア・バッファ２０５に送られる。このようにして、ＳＦＥのストア命令の結果は、ｕＰＣｏｒｅのアーキテクチャ状態およびキャッシュ２０３を変更せずに、ＳＦＥ上で実行される後続命令に使用可能なものにすることができる。ＳＦＥのすべてのストア命令の結果は、ストア・バッファ２０５内に保持される。
【００４１】
同期ユニットは、インタフェース２０９を介してＳＦＥの活動を監視する。ＳＦＥが実行すべきサポート済み命令を実行し尽くすか、または処理するように設計されていない割込みまたは例外あるいはそれ以外の点で無効の割込みまたは例外を検出した場合、これはインタフェース２０９上に示される。その場合、同期ユニットは、ＳＦＥを図８の除去中（Ｂ）状態に移行させる。また、同期ユニットは、ｕＰＣｏｒｅによる命令のデコードとＳＦＥによる命令のリタイヤの進行状況も監視する。有効な命令がそれ以上存在しない場合（ステップ７０７）、またはＳＦＥが推論事前取出しによる利益をもたらさないと判定された場合（ステップ７０８）、ＳＦＥは、ｕＰＣｏｒｅの実行よりはるかに遅れていると想定され、この場合も除去中（Ｂ）状態に移行する。現在このＳＦＥに関連付けられているｕＰＣｏｒｅが依然として判断点（ステップ７０９）で機能停止している場合、除去中（Ｂ）状態への移行はブロックされ、ＳＦＥは引き続き動作中（Ａ）状態になる。ＳＦＥの利益を示す他の多くの指示は、ＳＦＥが除去中（Ｂ）状態に入るべき時期を決定するために使用することができるが、本発明と一貫するものである。
【００４２】
ＳＦＥは、いったん除去中（Ｂ）状態に入ると、すべての命令、命令の一部、ならびに部分結果がＳＦＥのデータ経路および制御構造からクリアされるまで、この状態から出ない。この間、いかなる要求もキャッシュ２０３に送られない。ステップ７０６でこれが実施されると、ＳＦＥは除去中（Ｂ）状態を出て、２通りの再同期化中（ＣおよびＤ）状態のうちの一方に移行することができる。ＳＦＥは、ｕＰＣｏｒｅ  ２００またはｕＰＣｏｒｅ  ２００’のいずれか一方との再同期化を行うことができる。このような２通りのアクション間でＳＦＥによって決定される選択（ステップ７０４）は様々な要素に基づくことができ、そのすべては本発明と一貫するものである。好ましい実施例では、どのｕＰＣｏｒｅが最後にＳＦＥと同期化されたかを示す単純な指示を使用しているが、その場合、ＳＦＥはもう一方のｕＰＣｏｒｅを使用してこの同期化を行うことになる。他のアルゴリズムを使用すると、判断点（ステップ７０４）により同じｕＰＣｏｒｅが何回も選択される可能性がある。再同期化が完了すると、状態はもう一度動作中（Ａ）状態に戻され、サイクルが再び始まる。
【００４３】
推論取出しエンジン（ＳＦＥ）
ＳＦＥは、通常の順不同処理を使用し、さらに、推論的（投機的）なオペランドおよび命令取出しを生成するためにスーパスカラ技法と呼ばれる所与の機能または技法を使用する。このような技法は、レジスタのリネーム、命令のリオーダ、完了スコアボードなどを含む。ＳＦＥの実施態様としては広範な実施態様が考えられる。最適設計の基準は、現世代の順不同設計とは全く異なるようなサイクル時間および領域上の制約を含むことになる。図４は、ＳＦＥと、システムの他の要素とのインタフェースを示している。図４が単純化されているのは、新規のレジスタ管理システム（ＲＭＳ）３０１と汎用レジスタ・アレイ（ＲＡ）および命令処理パイプラインとの対話を強調するためである。図４は図１および図２と似ているが、重要な違いがある。第１に、ＧＰＲおよびｕＰＣｏｒｅとの間のインタフェース２０６の一部を形成する追加のインタフェース３０６が存在する。このインタフェース３０６は、ｕＰＣｏｒｅのＧＰＲ更新コピーをＳＦＥに伝達するために使用する。第２は、同期レジスタ割当てリスト（ＳＲＡＬ）の使用を含むように、本発明のＲＭＳ３０１が変更されていることである。第３は、Ｌｉｐｔａｙ特許に示すように、メモリ階層へのストアがキャッシュ２０３ではなく、ストア・バッファ２０５に送られることである。ＳＦＥ内のデータ・フローは、図４に示すように通過して、ストア・バッファ２０５に到達する。
【００４４】
インタフェース３０２ないし３０５は、インタフェース２０９の一部を構成し、同期命令アドレス、ＳＦＥ除去指示、再同期化指示、命令デコード済み指示をそれぞれ伝達する。インタフェース３０２上の同期命令アドレスは、ＳＦＥとｕＰＣｏｒｅのアーキテクチャ状態との再同期化が行われた直後に、命令取出しおよび実行のための開始点としてＳＦＥが使用する。インタフェース３０３上のＳＦＥ除去指示により、ＳＦＥはすべての命令結果と部分結果を廃棄して、ＳＦＥのストア・バッファ２０５の内容を除去する。インタフェース３０４上の再同期化指示は、ＳＦＥがどのｕＰＣｏｒｅとの同期を取るべきかならびに再同期化を行う時期を決定するためにＳＦＥが使用する。ＳＦＥは、インタフェース３０５上の命令デコード済み指示を使用して、命令が正常にデコードされたことをＳＵに示す。ＳＵは、この情報を使用して、ＳＦＥが推論取出しによる利益をもたらすかどうかを判定する。ＳＦＥは、インタフェース３０７および３０８を介してキャッシュ２０３およびストア・バッファ２０５の両方に命令およびオペランド取出し要求を送る。インタフェース３０７を介して送られる推論取出し要求は、機能停止後に実行を再開するときにｕＰＣｏｒｅが同じ取出し要求を生成する前に、ＳＦＥによって生成される。その結果、ｕＰＣｏｒｅは、このような取出し要求の待ち時間の改善を経験することになる。というのは、所望のラインが最近アクセスされ、最も近いレベルのキャッシュにインストールされたからである。
【００４５】
ＳＦＥは、ｕＰＣｏｒｅのアーキテクチャ状態とは無関係なので、その順不同命令処理の実施態様は多くのアーキテクチャ上の問題を免れる。このため、スケジュールが改善され、全体的な設計のサイクル時間に及ぼす影響が低減される。ＳＦＥに関連する実施上のリスクは、ｕＰＣｏｒｅから完全に切り離すことができる。ＳＦＥは、大規模かつ様々な命令セットの必要性を満たす必要があるｕＰＣｏｒｅにとって不可能なやり方で、推論取出し要求を生成するように最適化することができる。ＳＦＥは、たまに使用頻度の少ない命令、例外処理動作、または回復アルゴリズムを実現する必要はない。このようなめったに起こらない事象の場合、ＳＦＥは、命令ストリームの実行を停止し、これを同期ユニットに指示することになる。ｕＰＣｏｒｅは、結局、機能停止状態から出るが、このめったに起こらない事象が持続する場合は、適正順序設計のかなり単純な手法によりそれを処理することになる。
【００４６】
ＳＦＥの設計は、必ずしも無限キャッシュＣＰＩのためだけでなく、多数の命令を迅速にデコードし発行するように最適化されなければならない。ＳＦＥは、従来の設計に比べ、無限キャッシュ・パフォーマンスに及ぼす影響について同じように考慮せずに、命令パイプラインをより長くして設計することができる。システム全体、すなわち、ＳＦＥとｕＰＣｏｒｅの両方の無限キャッシュ・パフォーマンスは、ＳＦＥではなく、ｕＰＣｏｒｅのパイプラインのみに依存する。
【００４７】
本発明の設計では、ｕＰＣｏｒｅによってオペランド事前取出しを行う必要はない。したがって、ＳＦＥを使用すると、この機構およびそれに関連する複雑さが、必要に応じて、ｕＰＣｏｒｅから除去される。場合によっては、オペランド事前取出しをｕＰＣｏｒｅ内に保持する必要があるが、これは本発明と一貫するものである。
【００４８】
図６には、レジスタ管理システム（ＲＭＳ）に対して行った革新的な変更の詳細が示されている。好ましい実施例により、ＳＦＥは、当該ＳＦＥに関連する各ｕＰＣｏｒｅごとに同期レジスタ割当てリスト（ＳＲＡＬ）を維持する。本発明のＲＭＳ３０１は、ＳＲＡＬを使用するための拡張を含み、全体的なコンピュータ・アーキテクチャに依存せず、様々な環境で実現することができる。したがって、図４のＳＦＥは、ＩＢＭシステム／３９０アーキテクチャに従って、１６個の汎用レジスタ（ＧＰＲ）に対応するものとして記載されている。汎用レジスタ・アレイ（ＲＡ）は、ＲＭＳ３０１とともに、ＧＰＲの諸機能を果たすために、特定のＲＡ位置を特定のＧＲＰとして動的に割当てる。特定のＧＰＲの機能が完了すると、ＲＡ内のその位置は解放され、やがて同じかまたは他のＧＰＲとして再割当て可能になる。
【００４９】
ＲＡは、好ましい実施例のアーキテクチャによって認識される１６個のＧＰＲの諸機能を果たすために４８個の動的割当て可能な実（物理）レジスタを含む。ＧＰＲ割当てをＲＡ割当てに変換するために命令をデコードする場合、デコード・レジスタ割当てリスト（ＤＲＡＬ）を使用する。各命令をデコードすると、その命令が参照するＧＰＲをＤＲＡＬで調べ、どのＲＡ位置がＧＰＲに割り当てられているかを判定し、結果を受け取るために新しいＲＡ位置が割り当てられると、このような割当てを反映するようにＤＲＡＬが更新される。このようにして、ＧＰＲを使用する各命令は、そのＧＰＲを参照すべき最新の命令に割り当てられているＲＡ位置を見つけるよう、ＤＲＡＬによって指示される。
【００５０】
バックアップ・レジスタ割当てリスト（ＢＲＡＬ）により、待機せずに、１つないし３つの条件付き分岐をそれぞれ処理することができる。ＢＲＡＬは、ＤＲＡＬと同じ構造を有し、１サイクル中にＤＲＡＬの内容全体をＢＲＡＬにコピーするかまたはその逆を行えるように、ＤＲＡＬに接続されている。このような転送は、論理ユニット５０５によって制御される。ＢＲＡＬは、たとえば、分岐を行うかどうかの予測が間違っていると分かった場合に備えてＤＲＡＬの内容を保管するような条件付き分岐を検出したときに使用する。
【００５１】
アレイ制御リスト（ＡＣＬ）は、ＲＡおよびＳＦＥの残りから状況情報を受け取って制御情報を送るように接続されている。論理ユニット５０５は、ＡＣＬを制御し、ＡＣＬ、ＤＲＡＬ、ＢＲＡＬの動作を調整する。ＧＰＲをサポートするＲＡの各々ごとに、当該ＲＡに関連する状況情報を記憶するＡＣＬレジスタが１つずつ存在する。また、当該ＲＡの各レジスタ位置ごとに項目が１つずつ存在する。
【００５２】
レジスタ管理システム（ＲＭＳ）３０１にＳＲＡＬを追加することは、ＳＦＥの機能にとって、したがって、本発明にとって極めて重要である。ＳＲＡＬは、ＤＲＡＬと同じ構造を有し、１サイクル中にＳＲＡＬの内容全体をＤＲＡＬにコピーできるように、ＤＲＡＬに接続されている。
【００５３】
ＳＦＥが関連付けられている各ｕＰＣｏｒｅごとに、ＳＲＡＬが１つずつ用意されている。ｕＰＣｏｒｅがＧＰＲおよびＣＲ更新コピーを生成すると、その更新コピーはインタフェース２０６を介してＳＦＥに転送される。ｕＰＣｏｒｅに対するサイクル時間の影響を最小限にするために、その結果は１サイクル分、遅延することができる。ＧＰＲ更新コピーはＲＡに書き込まれ、（当該ＧＰＲ更新コピーのソースである）ｕＰＣｏｒｅに関連するＳＲＡＬはＲＡ位置を指し示すように更新される。本実施例のｕＰＣｏｒｅは通常、適正順序実行用の処理要素として機能するので、インタフェース２０６上のＧＰＲ更新コピーはリタイヤした命令に関するＧＰＲ更新コピーを反映し、したがって、ＳＲＡＬが現在示しているのと同じＲＡ位置に必ず書き込むことができる。ｕＰＣｏｒｅからの連続更新コピーを収容できることを保証するために、再同期化動作中に、ＳＲＡＬには１６個の新しいＲＡ項目を用意しなければならない。本実施例では、これは問題ではない。というのは、再同期化動作の前に必ず、ＳＲＡＬに関連するもの以外のすべてのＲＡ項目を解放するＳＦＥ除去が行われるからである。ＳＲＡＬ内のＳＦＥコピーにおけるｕＰＣｏｒｅのＧＰＲ状態は、必ず、最低１サイクル遅延している。ＳＦＥがｕＰＣｏｒｅとの同期を取る必要がある場合、ＳＲＡＬの内容をＤＲＡＬに移動するだけで、このタスクが達成される。この動作は、分岐予測が間違っていた場合にマイクロプロセッサの状態を復元するためにＬｉｐｔａｙ特許のＢＲＡＬを使用する方法に似ている。
【００５４】
本発明のＳＲＡＬの機能は、Ｌｉｐｔａｙ特許のＢＲＡＬとは相当異なっている。第１に、ＳＲＡＬには、ｕＰＣｏｒｅの場合のように他の命令処理パイプラインからのＧＰＲ状態が書き込まれることである。
【００５５】
第２に、ＳＲＡＬの内容をＤＲＡＬに移動させるトリガが、ＢＲＡＬの内容をＤＲＡＬに移動させるＬｉｐｔａｙ特許のトリガとは非常に異なることである。Ｌｉｐｔａｙ特許では、分岐予測の間違いがトリガになる。本発明では、事前取出し利益が一切ないという指示をトリガとして使用し、したがって、Ｌｉｐｔａｙ特許とその実施例は、本発明によるＳＲＡＬの機能とは全く異なることが分かるだろう。ＢＲＡＬはこの目的には使用できないが、本発明では、Ｌｉｐｔａｙ特許によって導入されたものと同じ機能、すなわち、分岐予測の指示が間違っているという判定後にプロセッサ状態を復元するために使用する。第３の重要な相違点は、ＳＲＡＬの内容をＤＲＡＬに移動したときに、ＳＲＡＬ内のすべての項目が１６個の新しいＲＡ位置を指し示すように直ちに変更されることである。Ｌｉｐｔａｙ特許では、未解決の分岐をデコードする場合に、ＢＲＡＬがＤＲＡＬから直接ロードされる。
【００５６】
複数のＳＲＡＬを使用すると、ＳＦＥは複数のｕＰＣｏｒｅとの同期を取ることができるようになる。２つ以上のｕＰＣｏｒｅが同じＳＦＥを使用して事前取出し利益をもたらすことができるが、両方のｕＰＣｏｒｅが同時にそのＳＦＥを使用することはできない。追加の各ＳＲＡＬは、同期化のために、関連するｕＰＣｏｒｅのＧＰＲ結果バスおよび関連するストア・バッファを伴わなければならない。
【００５７】
ｕＰＣｏｒｅ
好ましい実施例のｕＰＣｏｒｅ設計は、通常のマイクロプロセッサ（PowerPC 601などの現行のスーパスカラ設計の１つであることが好ましいが、Intel 286などのさらに古い設計でもよい）である。コンピュータ設計の分野では、１つのシステムが複数の汎用実行ユニットを有することは既知のことである。たとえば、汎用実行ユニットは、実行する機能のタイプに沿って設計することができる。本発明のｕＰＣｏｒｅ内には、このような汎用実行ユニットが２つだけ示されているが、汎用実行ユニットを幾つ使用してもその使用は本発明と一貫するものである。本発明のｕＰＣｏｒｅ部分は、図７に示すものを除き、通常のマイクロプロセッサ設計に対する特定の変更を必要としない。図７は、最新のリタイヤ済み命令のアドレスを６０４でどのようにラッチし、インタフェース６０４’を介してＳＦＥに駆動するかを示している。汎用実行ユニット６０１および６０２からのＧＰＲ結果バスも６０３でラッチされ、そのインタフェース６０３’を介してＳＦＥに駆動される。図７に示すｕＰＣｏｒｅは適正順序設計であるが、マイクロプロセッサとして現在商業使用されているものなどの順不同設計要素の使用も本発明の設計と一貫するものである。
【００５８】
同期ユニット
同期ユニット（ＳＵ  ２０１）は、ｕＰＣｏｒｅとＳＦＥとの対話を制御するために必要な論理機能のすべてを含んでいる。ＳＵは、状態マシンと、関連する入力レジスタ４０４、４０５、４０６とからなる。状態マシンの出力は、除去機能およびレジスタ管理システム（ＲＭＳ）３０１への入力を制御するようなＳＦＥへのインタフェース２０９からなる。ＲＭＳ３０１への線は、同期動作の場合に、ＳＲＡＬからＤＲＡＬへのロードを制御する。
【００５９】
同期ユニットは、ＳＦＥがシステム全体に事前取出し利益をもたらすかどうかを判定するために使用する論理機能を含んでいる。この実施例では、２つの命令カウンタ４０８、４０７を使用して、この機能を提供する。第１のカウンタ４０８は、ｕＰＣｏｒｅが命令をリタイヤするたびに増分される。第２のカウンタ４０７は、ＳＦＥが命令をデコードするたびに増分する。両方のカウンタは、再同期化動作中にゼロにリセットされる。再同期化後、両方のカウンタの比較を使用して、ＳＦＥがｕＰＣｏｒｅに役立つような推論取出し参照を生成する機会を有するかどうかを判定する。ｕＰＣｏｒｅの実行より十分先だってＳＦＥが命令をデコードしていない場合、利益を得る可能性は全くない。２つのカウンタを比較すると、図８の特定利益判断点（ステップ７０８）への入力として、利益を得る可能性を示す不正確だが十分な指示が得られる。本実施例では、この用途のために１０というしきい値を使用する。ＳＦＥデコード・カウント（４０７）がｕＰＣｏｒｅリタイヤ・カウント（４０８）より少なくとも１０大きくない場合、同期ユニットはいかなる利益も示さないことになる。
【００６０】
また、同期ユニットは、ＳＦＥが現在どのｕＰＣｏｒｅに関連付けられているかを示す指示も保持する。各ＳＦＥは単一の同期ユニットを有するが、各ＳＦＥは幾つのｕＰＣｏｒｅにも関連付けることができる。本実施例では、１つのＳＦＥが２つのｕＰＣｏｒｅに関連付けられている。
【００６１】
ＣＰとＳＥとの対話の代替的な拡張
ＣＰとＳＥとの対話の拡張として可能なものが他にもある。一例としては、ＳＥとＣＰの両方によって共用される分岐予測テーブルをＳＥに更新させることを含むだろう。また、ＳＥは、ＣＰがパイプライン崩壊を回避できるような潜在的な命令例外または他の条件に関するヒントもＣＰに提供できるだろう。ＳＦＥ取出し要求に応答して取り出された命令およびオペランド・データは、ｕＰＣｏｒｅに直接転送することができる。したがって、データは、推論要求が正確である場合、ｕＰＣｏｒｅの汎用実行ユニットおよび命令デコード論理回路により近いものになる。このため、実施態様によっては、有限キャッシュの不利益をさらに低減することができる。
【００６２】
本発明の好ましい実施例について記載してきたが、当業者であれば、現在ならびに将来、本発明の範囲内に該当する様々な改良および強化を行うことができることが分かるだろう。
【００６３】
様々な改良を行う当業者は、順不同（または適正順序）実行は無限キャッシュＣＰＩの低減に比べ、有限キャッシュＣＰＩの低減の際により大きい利益をもたらすことが本発明者のパフォーマンス分析によって示されていることが分かるだろう。現行技術は、有限キャッシュ効果が迅速に拡大し、それにより、有限キャッシュＣＰＩの利益が無限キャッシュＣＰＩの利益よりはるかに大きくなることを示す傾向にある。
【００６４】
これまで詳述したように、マイクロプロセッサ・コア（ｕＰＣｏｒｅ）をサポートする推論取出しエンジン（ＳＦＥ）を設けることと、協力アクションを通してアーキテクチャ状態を維持しながら、ＳＦＥとｕＰＣｏｒｅの両方によって共用される記憶階層への推論メモリ参照を可能にするようにコア・マイクロプロセッサと協力して対話することを要点とする本発明は、順不同実行を使用する従来技術の設計の大幅な単純化を希望するか、または順不同実行を使用しない従来技術の設計に対する大幅なパフォーマンスの改善を希望する当業者に利益をもたらすだろう。理論的には、本発明は、システム・パフォーマンスの向上を追求して順不同実行の使用に関連する設計上の兼ね合いをさらに最適化できるようにするものである。また、本発明では、最近の設計の一部で使用しているステージがますます深くなるのとは対照的に、メイン・パイプラインに対して順不同実行の複雑さを大幅に増加せずに、周波数が高く、複雑さが低く、無限キャッシュＣＰＩが低くなるようにマイクロプロセッサの設計を最適化することができる。
【００６５】
同時に、このコプロセッサは、マイクロプロセッサとコプロセッサの両方に関する有限キャッシュ効果の低減を追求して、かなりの程度まで順不同実行技法を使用することができる。コプロセッサ内の順不同実行の複雑さは、コプロセッサがアーキテクチャ化命令のフルセットまたは命令実行に関連する例外および割込みのフルセットをサポートする必要がないことによって軽減される。
【図面の簡単な説明】
【図１】Ｌｉｐｔａｙ特許（米国特許第４９０１２３３号）が示すものと同じ記述内容を示す図であり、従来のメインフレームや、マイクロプロセッサにおいて広く使用されてきた従来の努力の限界を示す図である。
【図２】Ｌｉｐｔａｙ特許が示すものと同じ記述内容を示す図であり、従来のメインフレームや、マイクロプロセッサにおいて広く使用されてきた従来の努力の限界を示す図である。
【図３】好ましい実施例の概要を示す概略図である。
【図４】推論取出しエンジン（ＳＦＥ）の詳細と、ＳＦＥとストア・バッファ、キャッシュ、マイクロプロセッサ・コア（ｕＰＣｏｒｅ）とのインタフェースを示す図である。また、ＳＦＥとｕＰＣｏｒｅによって共用されるキャッシュによりＳＦＥの命令およびオペランド取出しを経路指定するための好ましいハードウェアも示す。
【図５】ｕＰＣｏｒｅとＳＦＥとの間の同期ユニットをより詳細に示す図である。
【図６】ｕＰＣｏｒｅとＳＦＥとの同期に対応するために Ｌｉｐｔａｙ特許のレジスタ・リネーム方式に対して行った改良をより詳細に示す図である。
【図７】ｕＰＣｏｒｅの好ましいハードウェアを示す図である。
【図８】パフォーマンスを改善するために使用する方法を示すために、ＳＦＥとｕＰＣｏｒｅとの対話をデータ・フロー図としてより詳細に示す図である。
【図１】
0003564041.tif 000002
【図２】
0003564041.tif 000003
【図３】
0003564041.tif 000004
【図４】
0003564041.tif 000005
【図５】
0003564041.tif 000006
【図６】
0003564041.tif 000007
【図７】
0003564041.tif 000008
【図８】
0003564041.tif 000009