(57)【要約】  【課題】  割込みを処理する際の遅延を最小限に抑える方法およびシステムを提供する。  【解決手段】  プロセッサ内のプロセスを実行するために重要でないキャッシュメモリ内容およびアドレス変換情報等、ストアされたソフト状態情報を管理するための方法およびシステムを開示する。アイドルプロセスのソフト状態を、システムメモリ内のバーチャルキャッシュにストアする。システムメモリ内のバーチャルキャッシュに対してキルタイプ動作をスヌープすることによって、ソフト状態のキャッシュコヒーレンシを維持する。  【選択図】  図２
2004185604.tif 000002
【特許請求の範囲】
【請求項１】
メモリにおいてセーブされたプロセス状態を管理する方法であって、
揮発性メモリ階層の最低レベルにおいてシステムメモリ内にアイドルプロセスのソフト状態をストアするステップと、
前記システムメモリのメモリコントローラがアドレスを指定するキルタイプ（ｋｉｌｌ  ｔｙｐｅ）の動作を受信したことに応答して、前記システムメモリ内の前記ソフト状態に対して前記キルタイプの動作をスヌープするステップと、
前記スヌープによってスヌープヒットが生じたことに応答して、前記アドレスに関連する前記ソフト状態内のデータを無効化するステップと、
を具備することを特徴とする、方法。
【請求項２】
前記アドレスはある数のビットを有し、前記無効化ステップは、前記全数未満のビット数に基づいて決定したスヌープヒットに応答して前記データを無効化することを含むことを特徴とする、請求項１の方法。
【請求項３】
前記ストアするステップは、前記システムメモリ内にバーチャルキャッシュディレクトリをストアすることを含み、前記スヌープステップは、前記バーチャルキャッシュメモリに対して前記アドレスをスヌープし、正しいＳＬＩＨの実行を停止し、予測された割込みハンドラの実行を完了することを含むことを特徴とする、請求項１の方法。
【請求項４】
前記ストアするステップはバーチャルキャッシュアレイをストアすることを含み、前記無効化するステップは前記バーチャルキャッシュアレイ内のバーチャルキャッシュラインを無効化することを含むことを特徴とする、請求項１の方法。
【請求項５】
処理ユニットであって、
揮発性メモリ階層の最低レベルにおいてシステムメモリ内にアイドルプロセスのソフト状態をストアするための手段と、
アドレスを指定するキルタイプ動作を受信したことに応答して、前記システムメモリ内の前記ソフト状態に対して前記キルタイプ動作をスヌープするための手段と、
前記スヌープによってスヌープヒットが生じたことに応答して、前記アドレスに関連する前記ソフト状態内のデータを無効化するための手段と、
を具備することを特徴とする、処理ユニット。
【請求項６】
前記アドレスはある数のビットを有し、前記無効化するための手段は、前記全数未満のビット数に基づいて決定したスヌープヒットに応答して前記データを無効化するための手段を含むことを特徴とする、請求項５の処理ユニット。
【請求項７】
前記ストアするための手段は、前記システムメモリ内にバーチャルキャッシュディレクトリをストアするための手段を含み、前記スヌープするための手段は、バーチャルキャッシュメモリに対して前記アドレスをスヌープするための手段を含むことを特徴とする、請求項５の処理ユニット。
【請求項８】
前記ストアするための手段はバーチャルキャッシュアレイをストアするための手段を含み、前記無効化するための手段は前記バーチャルキャッシュアレイ内のバーチャルキャッシュラインを無効化するための手段を含むことを特徴とする、請求項５の処理ユニット。
【請求項９】
データ処理システムであって、
請求項５による処理ユニットを含む複数のプロセッサと、
前記複数のプロセッサに結合された揮発性メモリ階層と、
前記複数のプロセッサを結合する相互接続と、
を具備することを特徴とするデータ処理システム。
【請求項１０】
処理ユニットであって、
少なくとも１つの実行ユニットと、
前記少なくとも１つの実行ユニットに結合され、前記少なくとも１つの実行ユニットに命令を発する命令順序付けユニットと、
前記少なくとも１つの実行ユニットに結合されたキャッシュメモリと、
前記キャッシュメモリに結合されたメモリコントローラと、
を具備し、前記処理ユニットが割込みを受信したことに応答して、前記メモリコントローラはプロセッサのソフト状態を関連するメモリにセーブし、前記メモリコントローラは、アドレスを指定するキルタイプ動作を受信したことに応答して、前記関連するメモリ内の前記ソフト状態に対して前記キルタイプ動作をスヌープし、前記スヌープによってスヌープヒットが生じたことに応答して、前記アドレスに関連する前記ソフト状態内のデータを無効化することを特徴とする処理ユニット。
【請求項１１】
前記アドレスはある数のビットを有し、前記メモリコントローラは前記全数未満のビット数に基づいて前記スヌープヒットを決定することを特徴とする、請求項１０の処理ユニット。
【請求項１２】
前記メモリコントローラは、前記関連するメモリ内にバーチャルキャッシュディレクトリをストアし、前記メモリコントローラは、バーチャルキャッシュメモリに対して前記アドレスをスヌープすることを特徴とする、請求項１０の処理ユニット。
【請求項１３】
前記メモリコントローラはバーチャルキャッシュアレイをストアし、前記メモリコントローラは前記スヌープヒットに応答して前記バーチャルキャッシュアレイ内のバーチャルキャッシュラインを無効化することを特徴とする、請求項１０の処理ユニット。
【請求項１４】
データ処理システムであって、
請求項１０による処理ユニットを含む複数のプロセッサと、
前記複数のプロセッサに結合された揮発性メモリ階層と、
前記複数のプロセッサを結合する相互接続と、
を具備することを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理の分野に関し、具体的には、割込みを処理するための改良されたデータ処理システムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ命令集合を実行する場合、プロセッサは頻繁に中断される。この中断は、割込みまたは例外によって生じる場合がある。
【０００３】
割込みは、非同期中断イベントであり、この割込みが起こった時に実行中である命令とは関連しない。すなわち、割込みは、多くの場合、入力／出力（Ｉ／Ｏ）デバイスからの入力や、別のプロセッサからの動作のための呼び出し等、プロセッサ外部の何らかのイベントによって生じる。他の割込みは、例えば、タスク切り替えを制御するタイマが切れることによって、内部で生じる場合がある。
【０００４】
例外は、同期イベントであり、この例外が起こった時に実行中である命令の実行から直接生じる。すなわち、例外は、算術あふれ、定期的な保守チェック、内部性能モニタ、ボード上作業負荷マネージャ等、プロセッサ内からのイベントである。通常、例外は、割込みよりもはるかに高い頻度で生じる。
【０００５】
「割込み」および「例外」という言葉は、取り替えられることが多い。この開示の目的のため、「割込み」という言葉を用いて、「割込み」および「例外」による中断の双方を説明する。
【０００６】
コンピュータソフトウエアおよびハードウエアはいっそう複雑になっており、割込みの数および頻度は劇的に増大している。これらの割込みは、多重プロセスの実行、多数の周辺装置の処理、および様々な構成要素の性能監視をサポートするので、必要なものである。かかる機能は有益であるが、割込みによる計算機能力の消費が飛躍的に増大して、プロセッサ（複数のプロセッサ）の処理速度の向上を追い越すまでになっている。このため、多くの場合、プロセッサクロック周波数が高くなっているにも関わらず、実際の状況においては、システム性能は低下している。
【０００７】
図１は、従来のプロセッサコア１００を示す。プロセッサコア１００内で、レベル１命令キャッシュ（Ｌ１  Ｉ−キャッシュ）１０２が、命令順序付け論理１０４に命令を供給する。命令順序付け論理１０４は、その命令を実行させるために適切な実行ユニット１０８に送出する。実行ユニット１０８は、浮動小数点実行ユニット、固定小数点実行ユニット、分岐実行ユニット等を含むことができ、ロード／ストアユニット（ＬＳＵ）１０８ａを含む。ＬＳＵ１０８ａは、命令をロードおよびストアし、レベル１データキャッシュ（Ｌ１  Ｄ−キャッシュ）１１２からアーキテクチャ（ａｒｃｈｉｔｅｃｔｅｄ）レジスタ１１０内にデータをロードすると共に、アーキテクチャレジスタ１１０からＬ１  Ｄ−キャッシュ１１２にデータをストアする。Ｌ１キャッシュ１０２および１１２に存在しないデータおよび命令に対する要求は、メモリバス１１６を介してシステムメモリ１１８にアクセスすることによって解決（ｒｅｓｏｌｖｅ）することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のように、プロセッサコア１００は、外部割込みライン１１４によって表される多数のソースから割込みを受ける。プロセッサコア１００によって（例えば割込みライン１１４のうち１本を介して）割込み信号が受信されると、現在のプロセス（複数のプロセス）の実行は一時停止され、割込みハンドラとして知られる割込み専用ソフトウエアによって、その割込みを処理する。様々な活動の中でもとりわけ、割込みハンドラは、ＬＳＵ１０８ａによって命令のストアおよびロードを実行することで割込み時に実行中であったプロセスのアーキテクチャ状態をセーブしリストアする。このようにＬＳＵ１０８ａを用いてシステムメモリ１１８との間でアーキテクチャ状態を転送する場合、状態転送が完了するまで、割込みハンドラによって、他のメモリアクセス命令の実行（または、スーパースカラーコンピュータの場合には別のプロセス）は阻止される。結果として、プロセッサの実行ユニットを通してプロセスのアーキテクチャ状態をセーブし、その後でリストアすることは、割込みのかかったプロセスおよび割込みハンドラの双方の実行において遅延を招く。この遅延は、プロセッサの全体的な性能を低下させることになる。このため、本発明は、特に割込みに応じてアーキテクチャ状態をセーブしリストアすることによって生じる処理遅延を最小限に抑える方法およびシステムに対する要望があることを認識している。
【課題を解決するための手段】
【０００９】
本発明は、データ処理システムのプロセッサ内での割込み処理を改良するための方法およびシステムを対象とする。
【００１０】
プロセッサにおいて割込み信号を受信すると、現在実行中のプロセスのハード（ｈａｒｄ）アーキテクチャ状態を、１つ以上の専用シャドーレジスタ内にロードする。ハードアーキテクチャ状態は、割込みのかかったプロセスの実行に不可欠なプロセッサ内の情報を含む。このハードアーキテクチャ状態をセーブする有益な方法は、通常のロード／ストア経路およびプロセッサの実行ユニットを用いる（従って、接続する）ことなく、高帯域幅バスを用いて、シャドーレジスタ（複数のレジスタ）からシステムメモリにハードアーキテクチャ状態を直接転送することを含む。ハードアーキテクチャ状態をシャドーレジスタ（複数のレジスタ）内にロードした後、すぐに割込みハンドラが実行を始める。
【００１１】
また、キャッシュ内容を含むプロセスのソフト状態（ｓｏｆｔ  ｓｔａｔｅ）も、少なくとも部分的にシステムメモリにセーブする。ソフト状態のセーブを速めるため、および、実行中の割込みハンドラとのデータ衝突を回避するため、ソフト状態は、スキャンチェーン経路（ｓｃａｎ  ｃｈａｉｎ  ｐａｔｈｗａｙ）を用いてプロセッサから転送すると好ましい。この経路は、従来技術では通常、製造業者の試験中にのみ用いられ、通常動作中は用いられない。システムメモリにストアされている間、ソフト状態は、キャッシュ階層と同様の方法で、キャッシュとのコヒーレンシを維持する。すなわち、ソフト状態は、システムメモリにおいて、「バーチャルキャッシュ」と考えられるものにストアされる。好ましくは、バーチャルキャッシュに対してスヌープする（ｓｎｏｏｐｅｄ）動作によって、バーチャルキャシュラインのアドレスと同じ最上位ビットを有するいずれかのアドレスが指定された場合はいつでも、ソフト状態内のバーチャルキャッシュラインは無効になる。
【００１２】
割込みハンドラの完了後、ハードアーキテクチャ状態およびソフト状態を、割込みのかかったプロセスのためにリストアする。このプロセスは、ハードアーキテクチャ状態がロードされるとすぐに実行することができる。
【００１３】
異なるオペレーティングシステムを実行している可能性のある他のプロセッサおよび他のパーティションに対するアクセスを可能とするために、ハードおよびソフト状態の双方を、どのプロセッサおよび／またはパーティションにもアクセス可能なシステムメモリの予約領域にストアすることができる。
【００１４】
本発明の、上述ならびにそれ以外の目的、特徴、および利点は、以下の詳細な記述的説明から明らかになろう。
【００１５】
本発を特徴付けると考えられる新規の特徴は、添付の特許請求の範囲において述べられる。しかしながら、本発明自体、ならびにその好適な使用の形態、更に別の目的および利点は、添付図面と関連付けて、例示的な実施形態の以下の詳細な説明を読んで参照することによって、最も良く理解されよう。
【発明を実施するための最良の形態】
【００１６】
ここで図２を参照すると、多重プロセッサ（ＭＰ）データ処理システム２０１の例示的な実施形態の高レベルのブロック図が示されている。ＭＰデータ処理システム２０１は対称的多重プロセッサ（ＳＭＰ）として描かれているが、本発明は、非一様メモリアクセス（ＮＵＭＡ）ＭＰまたはキャッシュオンリメモリアーキテクチャ（ＣＯＭＡ）ＭＰを含むがこれらに限定されない、コンピュータアーキテクチャの分野に精通した者に既知のいかなるＭＰデータ処理システムによっても利用可能である。
【００１７】
本発明によれば、ＭＰデータ処理システム２０１は、処理ユニット２００ａないし２００ｎとして図示され、相互接続２２２によって通信のために結合された複数の処理ユニット２００を含む。好適な実施形態では、ＭＰデータ処理システム２０１において、処理ユニット２００ａおよび処理ユニット２００ｎを含む各処理ユニット２００は、アーキテクチャの点で同様または同一であることは理解されよう。処理ユニット２００ａは、単一の集積回路スーパースカラープロセッサであり、これは、以下で更に論じるように、様々な実行ユニット、レジスタ、バッファ、メモリ、およびその他の機能ユニットを含み、これらは全て集積回路によって形成される。ＭＰデータ処理システム２０１において、各処理ユニット２００は、高帯域幅プライベートバス１１６によって各システムメモリ１１８に結合されている。これは、処理ユニット２００ａのためのシステムメモリ１１８ａ、および処理ユニット２００ｎのための処理ユニット１１８ｎとして図示されている。
【００１８】
処理ユニット２００ａは、命令順序付けユニット（ＩＳＵ）２０２を含む。これは、実行ユニット（ＥＵ）２０４によって実行される命令のフェッチ、スケジューリング、および送出を行うための論理を含む。ＩＳＵ２０２およびＥＵ２０４の詳細は、図３に例示的な形態で与える。
【００１９】
ＥＵ２０４に関連付けられているのは、「ハード」状態レジスタ２０６であり、これは、現在実行中のプロセスを実行するために不可欠な処理ユニット２００ａ内の情報を含む。ハード状態レジスタ２０６に結合されているのは、次のハード状態レジスタ２１０であり、これは、例えば現在のプロセスが終了したか中断した場合に実行される次のプロセスのためのハード状態を含む。また、ハード状態レジスタ２０６には、シャドーレジスタ２０８が関連付けられている。これは、現在実行中のプロセスが終了したか中断した場合にハード状態レジスタ２０６の内容のコピーを含む（または含むことになっている）。
【００２０】
各処理ユニット２００は、更に、多レベルのキャッシュメモリを含むことができるキャッシュ階層２１２を含む。システムメモリ１１８からロードされた命令およびデータのオンチップ記憶は、例えばキャッシュ階層２１２によって実現することができる。キャッシュ階層２１２は、図３に示すように、レベル１命令キャッシュ（Ｌ１  Ｉ−キャッシュ）１８、レベル１データキャッシュ（Ｌ１  Ｄ−キャッシュ）２０、および一体化レベル２キャッシュ（Ｌ２キャッシュ）１６を備えることができる。キャッシュ階層２１２は、キャッシュデータ経路２１８を介して、システムメモリ１１８のためのオンチップ統合メモリコントローラ（ＩＭＣ）２２０に結合されており、少なくとも１つの実施形態では、スキャンチェーン経路２１４を介する。スキャンチェーン経路２１４は直列経路であるので、スキャンチェーン経路２１４とＩＭＣ２２０との間に直列−並列インタフェース２１６が結合されている。処理ユニット２００ａの図示した構成要素の機能については、以下で説明する。
【００２１】
ここで、処理ユニット２００を更に詳細に示す図３を参照する。処理ユニット２００は、一体化レベル２（Ｌ２）キャッシュ１６および二叉分岐レベル１（Ｌ１）命令（Ｉ）およびデータ（Ｄ）キャッシュ１８および２０をそれぞれ含むオンチップ多レベルキャッシュ階層を含む。当業者には周知のように、キャッシュ１６、１８、および２０によって、システムメモリ１１８内のメモリ位置に対応するキャッシュラインに対して待ち時間の短いアクセスが提供される。
【００２２】
命令フェッチアドレスレジスタ（ＩＦＡＲ）３０内にある有効アドレス（ＥＡ）に応答して、Ｌ１  Ｉ−キャッシュ１８から、処理のために命令をフェッチする。各サイクルの間、新しい命令フェッチアドレスを、３つのソースのうち１つからＩＦＡＲ３０にロードすることができる。すなわち、条件付き分岐命令の予測の結果として生じる投機的（ｓｐｅｃｕｌａｔｉｖｅ）ターゲット経路および順次アドレスを提供する分岐予測ユニット（ＢＰＵ）３６、フラッシュ（ｆｌｕｓｈ）および割込みアドレスを提供するグローバル完了テーブル（ＧＣＴ）３８、予測条件付き分岐命令の解決の結果として生じた非投機的アドレスを提供する分岐実行ユニット（ＢＥＵ）９２である。ＢＰＵ３６に関連付けられているのは、分岐履歴テーブル（ＢＨＴ）３５であり、この中には、今後の分岐命令の予測に役立つ条件付き分岐命令の解決が記録されている。
【００２３】
ＩＦＡＲ３０内の命令フェッチアドレス等の有効アドレス（ＥＡ）は、プロセッサが発生するデータまたは命令のアドレスである。ＥＡは、セグメント内のセグメントレジスタおよびオフセット情報を特定する。メモリ内のデータ（命令を含む）にアクセスするために、ＥＡは、データまたは命令がストアされている物理的な位置に関連付けて、１以上のレベルの変換により実アドレス（ＲＡ）に変換される。
【００２４】
処理ユニット２００内では、メモリ管理ユニット（ＭＭＵ）および関連するアドレス変換機構によって、有効−実アドレス変換を行う。好ましくは、命令アクセスおよびデータアクセスのために、別個のＭＭＵが設けられている。図３では、明確さのために単一のＭＭＵ１１２を示し、ＩＳＵ２０２のみに対する接続を示す。しかしながら、ＭＭＵ１１２は、好ましくは、ロード／ストアユニット（ＬＳＵ）９６および９８ならびにメモリアクセスを管理するために必要な他の構成要素に対する接続（図示せず）を含むことは、当業者には理解されよう。ＭＭＵ１１２は、データ変換索引バッファ（ＤＴＬＢ）１１３および命令変換索引バッファ（ＩＴＬＢ）１１５を含む。各ＴＬＢは、最近参照したページテーブルエントリを含み、これにアクセスすることで、データ（ＤＴＬＢ１１３）または命令（ＩＴＬＢ１１５）のため、ＥＡをＲＡに変換する。ＩＴＬＢ１１５から最近参照したＥＡ−ＲＡ変換は、ＥＯＰ有効−実アドレステーブル（ＥＲＡＴ）３２にキャッシュされる。
【００２５】
ＥＲＡＴ３２によってＩＦＡＲ３０に含まれるＥＡを変換し、Ｉ−キャッシュディレクトリ３４において実アドレス（ＲＡ）を参照した後、ヒット／ミス論理２２が、ＩＦＡＲ３０内のＥＡに対応する命令のキャッシュラインがＬ１  Ｉ−キャッシュ１８に存在しないという判定を行うと、ヒット／ミス論理２２は、Ｉ−キャッシュ要求バス２４を介して、Ｌ２キャッシュ１６に要求アドレスとしてＲＡを供給する。また、かかる要求アドレスは、最近のアクセスパターンに基づいて、Ｌ２キャッシュ１６内でプリフェッチ論理（ｐｒｅｆｅｔｃｈ  ｌｏｇｉｃ）によって発生することも可能である。要求アドレスに応答して、Ｌ２キャッシュ１６は、命令のキャッシュラインを出力し、これは、おそらくはオプションのプレデコード論理（ｐｒｅｄｅｃｏｄｅ  ｌｏｇｉｃ）１４４を通過した後、Ｉ−キャッシュリロードバス２６を介してプリフェッチバッファ（ＰＢ）２８およびＬ１  Ｉ−キャッシュ１８内にロードされる。
【００２６】
ＩＦＡＲ３０内のＥＡが指定したキャッシュラインがＬ１キャッシュ１８に存在する場合、Ｌ１  Ｉ−キャッシュ１８は、そのキャッシュラインを、分岐予測ユニット（ＢＰＵ）３６および命令フェッチバッファ（ＩＦＢ）４０の双方に出力する。ＢＰＵ３６は、分岐命令を探して命令のキャッシュラインを走査し、存在する場合には、条件付き分岐命令の結果を予測する。分岐予測の後、ＢＰＵ３６は、上述のように、ＩＦＡＲ３０に投機的命令フェッチアドレスを提供し、予測を分岐命令キュー６４に渡すので、この後、分岐実行ユニット９２によって条件付き分岐命令を解決した場合に、予測の精度を決定することができる。
【００２７】
命令のキャッシュラインが命令変換ユニット（ＩＴＵ）４２によって変換可能となるまで、ＩＦＢ４０は、Ｌ１  Ｉ−キャッシュ１８から受信した命令のキャッシュラインを一時的にバッファに入れる。処理ユニット２００の例示的な実施形態では、ＩＴＵ４２は、この命令を、ユーザ命令セットアーキテクチャ（ＵＩＳＡ）命令から、処理ユニット２００の実行ユニットが直接実行可能な、おそらくは異なる数の内部ＩＳＡ（ＩＩＳＡ）命令に変換する。かかる変換は、例えば、読み出し専用メモリ（ＲＯＭ）テンプレートにストアされたマイクロコードを参照することによって実行可能である。少なくともいくつかの実施形態では、このＵＩＳＡ−ＩＩＳＡ変換によって、ＵＩＳＡ命令とは異なる数のＩＩＳＡ命令が生じ、および／または、対応するＵＩＳＡ命令とは異なる長さのＩＩＳＡ命令が生じる。次いで、結果として生じたＩＩＳＡ命令を、グローバル完了テーブル３８によって、命令グループに割り当てる。このグループのメンバは、互いに順不同で送出し実行することが可能である。グローバル完了テーブル３８は、好ましくは命令グループにおいて最も古い命令のＥＡである少なくとも１つの関連するＥＡによる実行が完了していない各命令グループを追跡する。
【００２８】
ＵＩＳＡ−ＩＩＳＡ命令変換の後、命令を、おそらくは順不同で、命令タイプに基づいて、ラッチ４４、４６、４８、および５０のうち１つに送出する。すなわち、分岐命令および命令を変更する他の条件レジスタ（ＣＲ）をラッチ４４に送出し、固定小数点およびロード−ストア命令を、ラッチ４６および４８のいずれかに送出し、浮動小数点命令をラッチ５０に送出する。そして、ＣＲマッパ（ｍａｐｐｅｒ）５２、リンクおよびカウント（ＬＣ）レジスタマッパ５４、実行レジスタ（ＸＥＲ）マッパ５６、汎用レジスタ（ＧＰＲ）マッパ５８、および浮動小数点レジスタ（ＦＰＲ）マッパ６０のうち適切な１つによって、一時的に実行結果をストアするためのリネーム（ｒｅｎａｍｅ）レジスタを必要とする各命令に、１つ以上のリネームレジスタを割り当てる。
【００２９】
次いで、ＣＲ発行キュー（ＣＲＩＱ）６２、分岐発行キュー（ＢＩＱ）６４、固定小数点発行キュー（ＦＸＩＱ）６６および６８、ならびに浮動小数点発行キュー（ＦＰＩＱ）７０および７２のうち適切な１つに、送出された命令を一時的に配置する。データ依存性および非依存性が観察される限り、発行キュー６２、６４、６６、６８、７０および７２から、実行のため、処理ユニット２００の実行ユニットに、都合良く命令を送出することができる。しかしながら、命令のいずれかを再送出する必要がある場合に備えて、命令の実行が完了し、もしあればその結果データがライトバック（ｗｒｉｔｔｅｎ  ｂａｃｋ）されるまで、命令を発行キュー６２ないし７２内に維持する。
【００３０】
例示したように、処理ユニット２０４の実行ユニットは、ＣＲ変更命令を実行するためのＣＲユニット（ＣＲＵ）９０、分岐命令を実行するための分岐実行ユニット（ＢＥＵ）９２、固定小数点命令を実行するための２つの固定小数点ユニット（ＦＸＵ）９４および１００、命令のロードおよびストアを実行するための２つのロード−ストアユニット（ＬＳＵ）９６および９８、ならびに、浮動小数点命令を実行するための２つの浮動小数点ユニット（ＦＰＵ）１０２および１０４を含む。実行ユニット９０ないし１０４の各々は、好ましくは、多数のパイプライン段を有する実行パイプラインとして実施される。
【００３１】
実行ユニット９０ないし１０４のうち１つの内部で実行される間、命令は、実行ユニットに結合されたレジスタファイル内の１つ以上のアーキテクチャおよび／またはリネームレジスタから、もしあればオペランドを受信する。ＣＲ変更またはＣＲ依存命令を実行している場合、ＣＲＵ９０およびＢＥＵ９２は、ＣＲレジスタファイル８０にアクセスする。これは、好適な実施形態では、ＣＲと、各々が１つ以上のビットから形成される多数の別個のフィールドから成る多数のＣＲリネームレジスタとを含む。これらのフィールドの中には、ＬＴ、ＧＴ、およびＥＱフィールドがあり、これらは、それぞれ、値（通常、命令の結果またはオペランド）がゼロ未満であるか、ゼロより大きいか、またはゼロに等しいかを示す。リンクおよびカウントレジスタ（ＬＣＲ）レジスタファイル８２は、カウントレジスタ（ＣＴＲ）、リンクレジスタ（ＬＲ）、および各々のリネームレジスタを含み、これによって、ＢＥＵ９２は、条件付き分岐を解決して経路アドレスを得ることができる。同期している汎用レジスタファイル（ＧＰＲ）８４および８６は、レジスタファイルを複製し、ＦＸＵ９４および１００ならびにＬＳＵ９６および９８によってアクセスされ生成された固定小数点および整数の値をストアする。浮動小数点レジスタファイル（ＦＰＲ）８８は、ＧＰＲ８４および８６と同様、同期レジスタの複製セットとして実施することができ、ＦＰＵ１０２および１０４による浮動小数点命令の実行ならびにＬＳＵ９６および９８による浮動小数点ロード命令の結果である浮動小数点値を含む。
【００３２】
実行ユニットが命令の実行を行った後、実行ユニットは、命令の完了をプログラム順にスケジューリングするＧＣＴ３８に通知する。ＣＰＵ９０、ＦＸＵ９４および１００、またはＦＰＵ１０２および１０４のうち１つによって実行される命令を完了するため、ＧＣＴ３８は、実行ユニットに信号を送り、もしあれば結果データを、割り当てたリネームレジスタ（複数のレジスタ）から適切なレジスタファイル内の１つ以上のアーキテクチャレジスタにライドバックする。次いで、命令を発行キューから除去し、いったんその命令グループ内の全ての命令が完了したなら、ＧＣＴ３８から除去する。しかしながら、他のタイプの命令は異なる方法で完了する。
【００３３】
ＢＥＵ９２が条件付き分岐命令を解決し、取るべき実行経路の経路アドレスを決定すると、経路アドレスは、ＢＰＵ３６が予測した投機的経路アドレスと比較される。経路アドレスが一致すると、これ以上の処理は必要ない。しかしながら、計算された経路アドレスが予測経路アドレスと一致しない場合、ＢＥＵ９２は、正しい経路アドレスをＩＦＡＲ３０に供給する。いずれの場合でも、分岐命令はＢＩＱ６４から除去され、同じ命令グループ内の他の全ての命令が完了すると、ＧＣＴ３８から除去される。
【００３４】
ロード命令を実行した後、ロード命令の実行によって計算された有効アドレスをデータＥＲＡＴ（図示せず）によって実アドレスに変換し、次いでＬ１  Ｄ−キャッシュ２０に要求アドレスとして供給する。この時点で、ロード命令は、ＦＸＩＱ６６および６８から除去され、指示されたロードを実行するまで、ロードリオーダキュー（ＬＲＱ：ｌｏａｄ  ｒｅｏｒｄｅｒ  ｑｕｅｕｅ）１１４に配置される。要求アドレスがＬ１  Ｄ−キャッシュ２０において見出せない場合、要求アドレスをロードミスキュー（ＬＭＱ：ｌｏａｄ  ｍｉｓｓ  ｑｕｅｕｅ）１１６に配置し、ここから要求データはＬ２キャッシュ１６から検索されるが、失敗すると、別の処理ユニット２００からまたはシステムメモリ１１８から検索される（図２に示す）。ＬＲＱ１１４は、排他的アクセス要求をスヌープし（例えば変更する意図で読む）、進行中の（ｉｎ  ｆｌｉｇｈｔ）ロードに対して相互接続２２２の機構（図２に示す）上でフラッシュ（ｆｌｕｓｈ）またはキル（ｋｉｌｌ）し、ヒットがあれば、ロード命令をキャンセルおよび再発行する。ストア命令は、同様に、ストアキュー（ＳＴＱ）１１０を利用して完了させる。このキューの中に、ストア命令の実行後にストアのための有効アドレスをロードする。ＳＴＱ１１０から、Ｌ１  Ｄ−キャッシュ２０およびＬ２キャッシュ１６のどちらかまたは双方にデータをストアすることができる。
【００３５】
プロセッサ状態
プロセッサの状態は、特定の時点でのストアされたデータ、命令、およびハードウエア状態を含み、これを本明細書中では「ハード」または「ソフト」のいずれかとして規定する。「ハード」状態は、プロセッサがプロセス中の現時点からプロセスを実行するためにアーキテクチャに関して必要なプロセッサ内の情報として規定される。これに対して、「ソフト」状態は、プロセス実行の効率を改善するがアーキテクチャに関して正しい結果を達成するために必要ではないプロセッサ内の情報である。図３の処理ユニット２００において、ハード状態は、ＣＲＲ８０、ＬＣＲ８２、ＧＰＲ８４および８６、ＦＰＲ８８等のユーザレベルレジスタ、ならびにスーパーバイザレベルレジスタ５１の内容を含む。処理ユニット２００のソフト状態は、Ｌ−１  Ｉ−キャッシュ１８、Ｌ−１  Ｄ−キャッシュ２０の内容、ＤＴＬＢ１１３およびＩＴＬＢ１１５等のアドレス変換情報等の「性能に影響を及ぼす」情報、ならびに、ＢＨＴ３５およびＬ２キャッシュ１６の内容の全てまたは一部等、重要性の低い情報の双方を含む。
【００３６】
レジスタ
上述の説明において、ＧＰＲ８６、ＦＰＲ８８、ＣＲＲ８０、およびＬＣＲ８２等の処理ユニット２００のレジスタファイルは、一般に「ユーザレベルレジスタ」として規定される。なぜなら、これらのレジスタは、ユーザまたはスーパーバイザのいずれかの特権により全てのソフトウエアによってアクセス可能であるからである。スーパーバイザレベルレジスタ５１は、メモリ管理、構成、および例外処理のような動作のために、典型的にオペレーティングシステムカーネルにおいて、通常オペレーティングシステムによって用いられるレジスタを含む。このため、スーパーバイザレベルレジスタ５１に対するアクセスは、一般に、十分なアクセス許可のある小数のみのプロセス（すなわちスーパーバイザレベルプロセス）に制限されている。
【００３７】
図５に示すように、スーパーバイザレベルレジスタ５１は、一般に、構成レジスタ３０２、メモリ管理レジスタ３０８、例外処理レジスタ３１４、および各種レジスタ３２２を含む。これらについては以下で更に詳細に説明する。
【００３８】
構成レジスタ３０２は、機械状態レジスタ（ＭＳＲ）３０６およびプロセッサバージョンレジスタ（ＰＶＲ）３０４を含む。ＭＳＲ３０６は、プロセッサの状態を規定する。すなわち、ＭＳＲ３０６は、命令割込み（例外）を処理した後にどこで命令実行が再開するかを識別する。ＰＶＲ３０４は、処理ユニット２００の特定のタイプ（バージョン）を識別する。
【００３９】
メモリ管理レジスタ３０８は、ブロックアドレス変換（ＢＡＴ）レジスタ３１０を含む。ＢＡＴレジスタ３１０は、ソフトウエア制御アレイであり、オンチップで利用可能なブロックアドレス変換をストアする。好ましくは、ＩＢＡＴ３０９およびＤＢＡＴ３１１として示すように、別個の命令用およびデータ用ＢＡＴレジスタがある。また、メモリ管理レジスタは、セグメントレジスタ（ＳＲ）３１２も含む。これは、ＢＡＴ変換が失敗した場合にＥＡをバーチャルアドレス（ＶＡ）に変換するために用いられる。
【００４０】
例外処理レジスタ３１４は、データアドレスレジスタ（ＤＡＲ）３１６、特別目的レジスタ（ＳＰＲ）３１８、および機械状態セーブ／リストア（ＳＳＲ）レジスタ３２０を含む。ＤＡＲ３１６は、アクセスによって位置合わせ例外等の例外が起こった場合にメモリアクセス命令によって発生される有効アドレスを含む。ＳＰＲは、オペレーティングシステムが規定する特別な目的のために用いられ、例えば、第１レベル例外ハンドラ（ＦＬＩＨ）が用いるために予約されたメモリの領域を識別する。このメモリ領域は、好ましくは、システムにおける各プロセッサごとに一意である。ＳＰＲ３１８を、ＦＬＩＨによってスクラッチレジスタとして用いて、汎用レジスタ（ＧＰＲ）の内容をセーブすることができる。ＧＰＲは、ＳＰＲ３１８からロードしてベースレジスタとして用いて、他のＧＰＲをメモリにセーブすることができる。ＳＳＲレジスタ３２０は、例外（割込み）時の機械状態をセーブし、割込み命令からのリターンが実行されると機械状態をリストアする。
【００４１】
各種レジスタ３２２は、時刻を維持するための時間基準（ＴＢ）レジスタ３２４、カウントを減らすための減分レジスタ（ＤＥＣ）３２６、およびデータアドレスブレークポイントレジスタ（ＤＡＢＲ）３２８を含み、指定されたデータアドレスが発生した場合にブレークポイントを生じさせる。更に、各種レジスタ３２２は、時間基準割込みレジスタ（ＴＢＩＲ）３３０を含み、所定の時間期間後に割込みを開始させる。かかる時間基準の割込みは、処理ユニット２００上で実行される定期的な保守ルーチンと共に使用可能である。
【００４２】
ソフトウエア編成
図２のＭＰデータ処理システム２０１等のＭＰデータ処理システムにおいて、おそらくは異なるオペレーティングシステムのもとで、多重アプリケーションを同時に実行することができる。図５は、本発明によるＭＰデータ処理システム２０１の例示的なソフトウエア構成の層図を示す。
【００４３】
図示のように、ソフトウエア構成は、ハイパーバイザ４０２を含む。これは、ＭＰデータ処理システム２０１のリソースを多数のパーティションに割り当て、次いで、多数のパーティション内で多数の（おそらくは異なる）オペレーティングシステムの実行を連係させるスーパーバイザリーソフトウエアである。例えば、ハイパーバイザ４０２は、処理ユニット２００ａ、システムメモリ１１８ａの第１の領域、および他のリソースを、オペレーティグシステム４０４ａが動作する第１のパーティションに割り当てることができる。同様に、ハイパーバイザ４０２は、処理ユニット２００ｎ、システムメモリ１１８ｎの第２の領域、および他のリソースを、オペレーティングシステム４０４ｎが動作する第２のパーティションに割り当てることができる。
【００４４】
オペレーティングシステム４０４の制御のもとで、ワードプロセッサ、表計算、ブラウザ等の多数のアプリケーション４０６が実行可能である。例えば、アプリケーション４０６ａないし４０６ｘは、全てオペレーティングシステム４０４ａの制御のもとで実行する。
【００４５】
各オペレーティングシステム４０４およびアプリケーション４０６は、通常、多数のプロセスから成る。例えば、アプリケーション４０６ａを、多数のプロセス４０８ａないし４０８ｚを有するものとして示す。処理ユニット２００が、プロセスのために必要な命令、データ、および状態情報を有するならば、各処理ユニット２００は、プロセスを独立して実行することができる。
【００４６】
割込み処理
ここで図６および図７を参照すると、本発明に従って、処理ユニット２００等の処理ユニットが割込みを処理する例示的な方法のフローチャートが示されている。ブロック５０２に示すように、プロセッサによって割込みを受信する。この割込みは、例外（例えばオーバーフロー）、外部割込み（例えばＩ／Ｏデバスからの）、または内部割込みである場合がある。
【００４７】
割込みを受けると、現在実行中のプロセスのハードアーキテクチャ状態（ブロック５０４）およびソフト状態（ブロック５０５）をセーブする。本発明に従ってハードおよびソフト状態をセーブおよび管理するための好適なプロセスの詳細については、図８（ハード）および図９（ソフト）を参照して以下で説明する。プロセスのハード状態をメモリにセーブした後、少なくとも第１レベル割込みハンドラ（ＦＬＩＨ）および第２レベル割込みハンドラ（ＳＬＩＨ）を実行して割込みを処理する。
【００４８】
ＦＬＩＨは、割込みの結果としてプロセッサの制御を受けるルーチンである。割込みの通知があると、ＦＬＩＨは、割込みコントローラファイルを読むことによって、割込みの原因を特定する。好ましくは、この特定は、ベクトルレジスタを用いることによって行う。すなわち、ＦＬＩＨは、テーブルを読み込んで、割込みを、割込みの初期処理を扱う例外ベクトルアドレスに合致させる。
【００４９】
ＳＬＩＨは、特定の割込みソースからの割込みの処理を扱う割込み依存ルーチンである。すなわち、ＦＬＩＨはＳＬＩＨを呼び出し、ＳＬＩＨはデバイス割込みを処理するが、デバイスドライバ自体ではない。
【００５０】
図６において、円５０６内に示すステップは、ＦＬＩＨによって実行される。ブロック５０８に示すように、割込みを、好ましくはベクトルレジスタを用いて、上述のように一意に識別する。この割込み識別によって、プロセッサは、どの割込みが受け取られたかに応じて、メモリ内の特定のアドレスにジャンプする。
【００５１】
当業者には良く理解されているように、いかなるＳＬＩＨでも、入力／出力（Ｉ／Ｏ）デバイスまたは別のプロセッサ（外部割込み）によって通信手順を確立することができ、または、割込みのかかったプロセッサを制御するオペレーティングシステムもしくはハイパーバイザの制御のもとで、命令集合を実行することができる。例えば、第１の割込みによってプロセッサがベクトルアドレス１にジャンプし、この結果、ブロック５１０および５１６に示すようにＳＬＩＨ  Ａが実行される。図示のように、ＳＬＩＨ  Ａは、追加のソフトウエアルーチンを何も呼び出すことなく、割込みの処理を完了させる。同様に、ブロック５１２、５２０、および５２６に示すように、ベクトルアドレス３への分岐によって、例示的なＳＬＩＨ  Ｃが実行され、次いで、オペレーティングシステム４０４またはハイパーバイザ４０２（双方とも図５に示す）に属する１つ以上の命令を実行して割込みを処理する。あるいは、割込みがプロセッサにベクトルアドレス２にジャンプするよう命令した場合、ブロック５１４および４１８に示すように、例示的なＳＬＩＨ  Ｂを実行する。次いで、ＳＬＩＨ  Ｂは、割込みを発したデバイスのためのデバイスドライバを呼び出す（ブロック５２４）。
【００５２】
ブロック５１６、５２４、または５２６のいずれかの後に、プロセスはページコネクタ「Ａ」を通って図７のブロック５２８に進む。いったん割込みを処理したなら、ＳＬＩＨおよびＦＬＩＨを解決し、再び確立して、ブロック５２８および５３０に示すように、割込みの実行および完了を反映させる。その後、ブロック５３２ないし５３６に示すように、次のプロセスをロードし実行する。そして、割込み処理プロセスは終了する。
【００５３】
通常、プロセッサのオペレーティングシステムによって、または、プロセッサが一部として含まれるＭＰコンピュータシステムのハイパーバイザによって、どのプロセスを次に実行するか（ブロック５３２）およびどのプロセッサ上で実行するか（ブロック５３４）（ＭＰコンピュータシステム内である場合）について選択を行う。選択されたプロセスは、現プロセッサ上で割込みのかかったプロセスである場合があり、または、新しい別のプロセスであるか、現プロセッサまたは別のプロセッサ上で実行されている間に割込みのかかった別のプロセスである場合がある。
【００５４】
ブロック５３６に示すように、いったんプロセスおよびプロセッサを選択すると、図２に示す次のハード状態レジスタ２１０を用いて、実行される次のプロセスの状態によって、その選択したプロセッサを初期化する。次のハード状態レジスタ２１０は、次に「ホットな（ｈｏｔｔｅｓｔ）」プロセスのハードアーキテクチャ状態を含む。通常、この次にホットなプロセスは、以前に割込みのかかったプロセスであり、この時点で再開する。まれに、次にホットなプロセスは、以前に割込みのかかったことのない新しいプロセスである場合がある。
【００５５】
次にホットなプロセスは、最高の実行優先度を有すると判定されたプロセスである。優先度は、アプリケーション全体にとってこのプロセスがどれだけ重要であるか、プロセスからの結果に対する必要性、またはいずれかの他の優先順位付けの理由に基づいたものとすることができる。多重プロセスを実行するので、再開を待っている各プロセスの優先度は頻繁に変動する。このため、ハードアーキテクチャ状態に、更新した優先度レベルを動的に割り当てる。すなわち、いずれの所与の瞬間でも、次のハード状態レジスタ２１０は、システムメモリ１１８から連続的かつ動的に更新されたハードアーキテクチャ状態を含み、実行する必要がある、次に「ホットな」プロセスを含む。
【００５６】
ハードアーキテクチャ状態のセーブ
従来技術では、ハードアーキテクチャ状態を、プロセッサコアのロード／ストアユニットを介してシステムメモリにストアし、これが、多数のプロセッサクロックサイクルの間、割込みハンドラまたは別のプロセスの実行を阻止する。本発明では、図６のブロック５０４に示すような、ハード状態をセーブするステップは、図８に示す方法に従っていっそう迅速に行う。これについて、図２に概略的に示したハードウエアを参照して説明する。
【００５７】
割込みを受けると、処理ユニット２００は、ブロック６０２に示すように、現在実行中のプロセスの実行を一時停止する。次いで、ブロック６０４に示すように、ハード状態レジスタ２０６にストアされたハードアーキテクチャ状態を、直接シャドーレジスタ２０８にコピーする。（あるいは、現在のハードアーキテクチャ状態で頻繁にシャドーレジスタ２０８を更新するプロセスによって、シャドーレジスタ２０８はすでにハードアーキテクチャ状態のコピーを有する。）そして、ブロック６０６に示すように、処理ユニット２００が見た場合に実行不能であると好ましいハードアーキテクチャ状態のシャドーコピーを、ＩＭＣ２２０の制御のもとでシステムメモリ１１８にストアする。ハードアーキテクチャ状態のシャドーコピーは、高帯域幅メモリバス１１６を介してシステムメモリ１１８に転送される。現在のハードアーキテクチャ状態のコピーのシャドーレジスタ２０８へのストアは、長くても数クロックサイクルしかかからないので、処理ユニット２００は、割込みの処理または次プロセスの実行の「実作業」を素早く開始することができる。
【００５８】
好ましくは、ハードアーキテクチャ状態のシャドーコピーは、システムメモリ１１８内の特別メモリ領域にストアされる。これは、図１５に関連付けて以下で説明するように、ハードアーキテクチャ状態のために予約される。
【００５９】
ソフト状態のセーブ
従来のプロセッサによって割込みハンドラを実行する場合、割込まれたプロセスのソフト状態は通常汚染（ｐｏｌｌｕｔｅｄ）される。すなわち、割込みハンドラソフトウエアの実行は、プロセッサのキャッシュ、アドレス変換機構、および履歴テーブルを、割込みハンドラが用いるデータ（命令を含む）によってポピュレート（ｐｏｐｕｌａｔｅ）する。このため、割込みを処理した後に割込みのかかったプロセスが再開すると、プロセスでは、命令およびデータキャッシュの失敗、変換の失敗、および分岐誤予測が増大する。かかる失敗および誤予測は、プロセス性能を著しく低下させるが、これは、割込み処理に関する情報がプロセッサおよびキャッシュからパージされ、プロセスのソフト状態をストアしている他の構成要素がプロセスに関する情報によって再ポピュレートされるまで続く。従って、本発明は、割込み処理に関連した性能の犠牲を小さくするために、プロセスのソフト状態の少なくとも一部をセーブしリストアする。
【００６０】
ここで図９を参照し、更に図２および図３に示した対応するハードウエアを参照すると、ブロック６１０に示すように、Ｌ１  Ｉ−キャッシュ１８およびＬ１  Ｄ−キャッシュ２０の全内容を、システムメモリ１１８の専用領域にセーブする。同様に、ＢＨＴ３５（ブロック６１２）、ＩＴＬＢ１１５およびＤＴＬＢ１１３（ブロック６１４）、ＥＲＡＴ３２（ブロック６１６）、およびＬ２キャッシュ１６（ブロック６１８）の内容をシステムメモリ１１８にセーブする。
【００６１】
Ｌ２キャッシュ１６は極めて大きい（例えば数メガバイトのサイズ）場合があるので、Ｌ２キャシュ１６を全てストアすることは、システムメモリにおける設置面積およびデータ転送に必要な時間／帯域幅の双方の観点から、不可能であり得る。従って、好適な実施形態では、各合同クラス内に、最も最近用いた（ＭＲＵ）集合のうちの副集合（例えば２つ）のみをセーブする。
【００６２】
図９は、プロセスのソフト状態の多数の異なる要素の各々をセーブすることを示すが、セーブされるこれらの要素の数および要素をセーブする順序は、実施に応じて変動する可能性があり、ソフトウエアプログラム可能またはハードウエアモードビットによって制御可能であることは理解されよう。
【００６３】
このため、本発明は、割込みハンドラルーチン（または次のプロセス）が実行されている間に、ソフト状態を送出する。この（割込みハンドラの実行から独立した）非同期動作では、結果として、ソフト状態が混合する場合がある（割込みのかかったプロセスのものおよび割込みハンドラのもの）。それにもかかわらず、かかるデータ混合は許容可能である。なぜなら、アーキテクチャ（ａｒｃｈｉｔｅｃｔｅｄ）の正確さにはソフト状態の精密な保存は必要ではなく、割込みハンドラを実行する際の遅延が短くなるために性能改善が達成されるからである。
【００６４】
再び図２を参照すると、Ｌ１  Ｉ−キャッシュ１８、Ｌ１  Ｄ−キャッシュ２０、およびＬ２キャッシュ１６からのソフト状態は、キャッシュデータ経路２１８を介してＩＭＣ２２０に送信される一方、ＢＨＴ３５等の他のソフト状態は、類似の内部データ経路（図示せず）を介してＩＭＣ２２０に送信される。この代わりに、またはこれに加えて、好適な実施形態では、少なくともいくつかのソフト状態要素を、スキャンチェーン経路２１４を介してＩＭＣ２２０に送信する。
【００６５】
スキャンチェーン経路を介したソフト状態のセーブ
複雑さのため、プロセッサおよび他のＩＣは、通常、ＩＣの試験を容易にする回路を含む。試験回路は、電気電子技術者協会（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ（ＩＥＥＥ））規格１１４９．１−１９９０、「Ｓｔａｎｄａｒｄ  Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ  ａｎｄ  Ｂｏｕｎｄａｒｙ  Ｓｃａｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ」に記載されているようなバウンダリ（ｂｏｕｎｄａｒｙ）スキャンチェーンを含む。これは、引用により本願にもその全体が含まれるものとする。典型的にパッケージ集積回路上の専用ピン介してアクセスされるバウンダリスキャンチェーンは、集積回路の構成要素間に試験データ用経路を提供する。
【００６６】
ここで図１０を参照すると、本発明による集積回路７００の図に従ったブロックが示されている。集積回路７００は、好ましくは、図２の処理ユニット２００等のプロセッサである。集積回路７００は、３つの論理要素（論理）７０２、７０４、および７０６を含み、これらは、本発明を説明する目的のため、プロセスのソフト状態をストアするメモリ要素の３つから成る。例えば、論理７０２は、図３に示すＬ１  Ｄ−キャッシュ２０とすることができ、論理７０４はＥＲＡＴ３２とすることができ、論理７０６は上述のようなＬ２キャッシュ１６の一部とすることができる。
【００６７】
製造業者による集積回路７００の試験の間、好ましくはクロック制御のラッチであるスキャンチェーンバウンダリセル７０８を介して信号を送出する。スキャンチェーンバウンダリセル７０８ａによって出力された信号は、論理７０２に対して試験入力を供給し、これが次いでスキャンチェーンバウンダリセル７０８ｂに信号を出力する。信号がスキャンチェーンバウンダリ７０８ｃに達するまで、他のスキャンチェーンバウンダリセル７０８を通って他の論理（７０４および７０６）を介して試験信号が送出される。このため、スキャンチェーンバウンダリセル７０８ｃから予想出力が受信された場合にのみ論理７０２ないし７０６が試験に合格するというドミノ効果がある。
【００６８】
従来、集積回路のバウンダリスキャンチェーンは、製造後には用いられない。しかしながら、本発明は、説明した試験経路を経路として利用して、キャッシュ／レジスタポートを妨げない方法で、図２のＩＭＣ２２０にソフトアーキテクチャ状態を転送する。すなわち、スキャンチェーン試験経路を用いることによって、ソフトアーキテクチャ状態をキャッシュ／レジスタから送出することができ、一方で、ＩＨまたは次のプロセスは、キャッシュ／レジスタへのアクセスが阻止されることなく、実行している。
【００６９】
スキャンチェーン２１４は直列経路であるので、図２に示す直列−並列論理２１６によって、ＩＣＭ２２０に並列データを供給し、ソフト状態をシステムメモリ１１８に適切に送信する。好適な実施形態では、直列−並列論理２１６は、どのデータがどのレジスタ／キャッシュからのものであるかを識別するための論理も含む。かかる識別は、直列データ上の先頭の識別タグの識別等を含む、当業者に既知のいかなる方法によっても実行可能である。ソフト状態データを並列形式に変換した後、ＩＭＣ２２０は、高帯域幅メモリバス２２２を介してソフト状態をシステムメモリ１１８に送信する。
【００７０】
これらの同じスキャンチェーン経路は、更に、図２に示すシャドウレジスタ２０８に含まれるようなハードアーキテクチャ状態を送信するためにも使用可能であることを注記しておく。
【００７１】
ＳＬＩＨ／ＦＬＩＨフラッシュＲＯＭ
従来技術のシステムでは、第１レベル割込みハンドラ（ＦＬＩＨ）および第２レベル割込みハンドラ（ＳＬＩＨ）をシステムメモリにストアし、呼び出された場合にキャッシュメモリ階層をポピュレートする。従来のシステムにおいてシステムメモリからＦＬＩＨまたはＳＬＩＨを最初に呼び出すと、長いアクセス待ち時間が生じる（キャッシュミスの後にシステムメモリからＦＬＩＨ／ＳＬＩＨの位置を特定しロードするため）。キャッシュメモリをＦＬＩＨ／ＳＬＩＨ命令およびデータによってポピュレートすると、以降のプロセスでは必要でないデータおよび命令によってキャッシュを「汚染させる」ことになる。
【００７２】
ＦＬＩＨおよびＳＬＩＨのアクセス待ち時間を減らし、キャッシュ汚染を回避するため、処理ユニット２００は、図３および図１１に示すように、少なくともいくつかのＦＬＩＨおよびＳＬＩＨを、特別のオンチップメモリ（例えばフラッシュ読み出し専用メモリ（ＲＯＭ）８０２）にストアする。ＦＬＩＨ８０４およびＳＬＩＨ８０６は、製造時にフラッシュＲＯＭ８０２に焼き付けることができ、または、当業者に周知の方法で、フラッシュプログラミング技法によって製造後に焼き付けることができる。処理ユニット２００が割込みを受信すると（図２に示す）、ＦＬＩＨ／ＳＬＩＨは、システムメモリ１１８またはキャッシュ階層２１２からではなく、直接フラッシュＲＯＭ８０２からアクセスされる。
【００７３】
ＳＬＩＨ予測
通常、処理ユニット２００において割込みが発生すると、ＦＬＩＨを呼び出し、次いでＦＬＩＨがＳＬＩＨを呼び出し、割込みの処理を完了する。どのＳＬＩＨを呼び出し、そのＳＬＩＨをどのように実行するかは、一様でなく、送出するパラメータ、条件状態等を含む様々なファクタに依存する。例えば、図１２において、ＦＬＩＨ８１２を呼び出すと、ＳＬＩＨ８１４を呼び出して実行することになり、結果として点Ｂに位置する命令が実行される。
【００７４】
プログラムの挙動は反復的であるので、割込みが多数回生じ、この結果同じＦＬＩＨおよびＳＬＩＨ（例えばＦＬＩＨ８１２およびＳＬＩＨ８１４）が実行されるということが頻繁に起こる。結果として、本発明は、続いて起こる割込みのための割込み処理をいっそう迅速に行うには、割込み処理プロセスの制御グラフが反復されると予測し、更に、ＦＬＩＨを最初に実行することなくＳＬＩＨの部分を投機的に実行すれば良いことを認識している。
【００７５】
割込み処理予測を容易にするため、処理ユニット２００には、図１３に更に詳細に示す割込みハンドラ予測テーブル（ＩＨＰＴ）８０８が備えられている。ＩＨＰＴ８０８は、多数のＦＬＩＨのベースアドレス８１６（割込みベクトル）のリストを含む。ＩＨＰＴ８０８は、各ＦＬＩＨアドレス８１６に関連付けて、関連するＦＬＩＨが以前に呼び出した１つ以上のＳＬＩＨアドレス８１８の各集合をストアしている。特定のＦＬＩＨのベースアドレスによってＩＨＰＴ８０８がアクセスされると、予測論理８２０は、ＩＨＰＴ８０８における特定のＦＬＩＨアドレス８１６に関連したＳＬＩＨアドレス８１８を、特定のＦＬＩＨが呼び出す可能性のあるＳＬＩＨのアドレスとして選択する。図示した予測ＳＬＩＨアドレスは、図１２に示すようなＳＬＩＨ８１４のベースアドレスとすることができるが、アドレスは、開始点（例えば点Ｂにおける）に続くＳＬＩＨ８１４内の命令のアドレスである場合もあることを注記しておく。
【００７６】
予測論理８２０は、特定のＦＬＩＨによってどのＳＬＩＨが呼び出されるかを予測するアルゴリズムを用いる。好適な実施形態では、このアルゴリズムは、最も最近に用いられた特定のＦＬＩＨに関連付けられたＳＬＩＨを選ぶ。別の好適な実施形態では、このアルゴリズムは、履歴上、最も頻繁に呼び出された特定のＦＬＩＨに関連付けられたＳＬＩＨを選ぶ。前述の好適な実施形態のいずれにおいても、アルゴリズムは、予測ＳＬＩＨの要求があると実行することができ、または、予測ＳＬＩＨは、ＩＨＰＴ８０８において連続的に更新しストアすることができる。
【００７７】
本発明は、当技術分野において既知の分岐予想方法とは異なることを注記しておくのは重要である。第１に、上述の方法は、結果として特定の割込みハンドラへのジャンプを引き起こし、分岐命令アドレスには基づいていない。すなわち、従来技術において用いられる分岐予想方法が分岐動作の結果を予想するのに対し、本発明は、（おそらくは）非分岐命令に基づいて特定の割込みハンドラへのジャンプを予想する。これによって、第２の相違が生じる。これは、従来技術の分岐予想と比較して、本発明によって教示されるように、割込みハンドラ予測により多量のコードをスキップすることができる。なぜなら、本発明は、いかなる数の命令を飛び越すことも可能である（ＦＬＩＨにおけるように）のに対し、分岐予想では、従来の分岐予想機構によって走査可能な命令ウインドウの大きさに固有の制限があるために、予想された分岐の前に、限られた数の命令しか飛び越すことができないからである。第３に、本発明による割込みハンドラ予測は、従来技術において既知の選択／非選択の分岐予測のような２者択一の判定に限定されない。このため、再び図１３を参照すると、予測論理８２０は、いかなる数の履歴ＳＬＩＨアドレス８１８からでも予測ＳＬＩＨアドレス８２２を選択可能であるが、分岐予測方式では、連続的な実行経路および分岐経路のみから選択を行う。
【００７８】
ここで図１４を参照すると、本発明に従って割込みハンドラを予測する例示的な方法のフローチャートが示されている。プロセッサが割込みを受信すると（ブロック９０２）、割込みによって呼び出されるＦＬＩＨ（ブロック９０４）および、以前の実行履歴に基づいてＩＨＰＴ８０８が示す予測ＳＬＩＨ（ブロック９０６）の双方で、同時マルチスリーディング（ＳＭＴ）による同時実行が開始する。
【００７９】
好適な実施形態では、割込みを受信した際、呼び出されたＦＬＩＨの監視に応答して、予測ＳＬＩＨへのジャンプを実行することができる（ブロック９０６）。例として、再び図８に示すＩＨＰＴ８０８を参照する。割込みが受信されると、ＦＬＩＨを、ＩＨＰＴ８０８にストアされたＦＬＩＨアドレス８１６と比較する。ＩＨＰＴ８０８におけるストアされたＦＬＩＨアドレス８１６の比較から、割込みによって同じＦＬＩＨアドレスが呼び出されたことが明らかとなった場合、ＩＨＰＴ８０８は予測ＳＬＩＨアドレス８２２を供給し、予測ＳＬＩＨアドレス８２２のアドレスで開始するコード実行がすぐに始まる。
【００８０】
その後、既知の正しいＳＬＩＨを予測ＳＬＩＨと比較するが、この比較は、好ましくは、予測フラグと共にＦＬＩＨアドレスを含むＳＬＩＨ予測レジスタに、ＩＨＰＴ８０８を用いて呼び出した予測ＳＬＩＨアドレス８２２をストアすることによって実行する。本発明の好適な実施形態では、「ジャンプ」命令等、ＦＬＩＨからＳＬＩＨを呼び出すことがわかっている命令が実行されると、ジャンプによって呼び出されたアドレスを、予測レジスタに位置する（更に、予測フラグによって予測されており現在実行されていると識別される）予測ＳＬＩＨアドレス８２２のアドレスと比較する。予測レジスタからの予測ＳＬＩＨアドレス８２２を、実行中のＦＬＩＨが選択したＳＬＩＨと比較する（ブロック９１０）。正しいＳＬＩＨが予測されていれば、予測ＳＬＩＨは実行を完了し（ブロック９１４）、これによって割込み処理が迅速に行われる。しかしながら、ＳＬＩＨの予測を誤ると、予測ＳＬＩＨのこれ以上の実行を中止し、代わりに正しいＳＬＩＨを実行する（ブロック９１６）。
【００８１】
状態管理
ここで図１５を参照すると、システムメモリおよび様々なプロセッサおよび例示的なＭＰデータ処理システムのメモリ部分にストアされたハードおよびソフト状態間の論理関係を図で示す概念図が示されている。図１５に示すように、全てのハードアーキテクチャ状態およびソフト状態は、いかなるパーティション内でもプロセッサによってアクセス可能なハイパーバイザ４０２が割り当てた特別なメモリ領域にストアされる。すなわち、プロセッサＡおよびプロセッサＢはハイパーバイザ４０２によって最初に構成されてパーティションＸ内のＳＭＰとして機能することができるが、プロセッサＣおよびプロセッサＤは、パーティションＹ内のＳＭＰとして構成することができる。実行の間、プロセッサＡないしＤに割込みをかけて、プロセッサＡないしＤの各々に、上述のように、ハード状態ＡないしＤおよびソフト状態ＡないしＤの各１つをメモリにストアさせることができる。異なるパーティションのプロセッサが同じメモリ空間にアクセスすることができない従来技術のシステムとは異なり、いかなるプロセッサでも、ハードまたはソフト状態ＡないしＤのいずれにもアクセスして、関連する割込みのかかったプロセスを再開することができる。例えば、プロセッサＤは、そのパーティション内に生成されたハードおよびソフト状態ＣおよびＤに加えて、ハードおよびソフト状態ＡおよびＢにもアクセスすることができる。このため、いかなるパーティションまたはプロセッサ（複数のプロセッサ）によっても、いかなるプロセス状態にもアクセスすることができる。結果として、ハイパーバイザ４０２は、パーティション間の負荷バランスにおける自由度および柔軟性を増している。
【００８２】
ソフト状態キャッシュコヒーレンシ
上述のように、割込みのかかったプロセスのソフト状態は、図３に示すＬ１  Ｉ−キャッシュ１８、Ｌ２  Ｄ−キャッシュ２０、およびＬ２キャッシュ１６等のキャッシュメモリの内容を含むことができる。図９を参照して上述したように、これらのソフト状態はシステムメモリにストアされるが、ソフト状態から成るデータの少なくとも一部は、他のプロセスが行ったデータ変更のために、新鮮でなくなる可能性がある。従って、本発明は、システムメモリにストアされたソフト状態をキャッシュコヒーレントに保つための機構を提供する。
【００８３】
図１６に示すように、システムメモリ１１８にストアされたソフト状態は、「バーチャルキャッシュ」にストアされているものとしてコンセプト化することができる。例えば、Ｌ２キャッシュ１６のソフト状態は、Ｌ２バーチャルキャッシュ１１０２内にある。Ｌ２バーチャルキャッシュは、Ｌ２キャッシュ１６からセーブされたデータ１１１０の各キャッシュラインのタグ１１０４およびインデクス１１０６を含むアドレス部分から成る。同様に、Ｌ１バーチャルＩ−キャッシュ１１１２は、Ｌ１  Ｉ−キャッシュ１８からセーブされた命令１１２０のタグ１１１４およびインデクス１１１６を含むアドレス部分から成り、Ｌ１バーチャルＤ−キャッシュ１１２２は、Ｌ１  Ｄ−キャッシュ２０からセーブされたデータ１１３０の各キャッシュラインのタグ１１２４およびインデクス１１２６を含むアドレス部分から成る。これらの「バーチャルキャッシュ」の各々は、統合メモリコントローラ（ＩＭＣ）２２０によって相互接続２２２を介して管理されてコヒーレンシを維持する。
【００８４】
ＩＭＣ２２０は、システム相互接続２２２上の各動作をスヌープする。動作をスヌープして、キャッシュラインの無効化を必要とし得る場合はいつでも、ＩＭＣ２２０は、バーチャルキャッシュディレクトリ１１３２に対して動作をスヌープする。スヌープヒットが検出されると、ＩＭＣ２２０は、適切なバーチャルキャッシュディレクトリを更新することによって、システムメモリ１１８においてバーチャルキャッシュラインを無効化する。スヌープ無効化のために正確なアドレス一致（すなわち、タグおよびインデクスの双方の一致）を必要とする可能性があるが、精密なアドレス一致の実施は、ＩＭＣ２２０内の大量の回路を必要とする（特に６４ビットおよびそれより大きなアドレス）。従って、好適な実施形態では、スヌープ無効化は精密ではなく、スヌープされたアドレスと一致する選択された最上位ビット（ＭＳＢ）を有する全てのバーチャルキャッシュラインを無効化する。バーチャルキャッシュメモリにおいて、どのＭＳＢを用いてどのキャッシュラインを無効化するかは、各実施に限定されており、モードビットによってソフトウエア制御可能またはハードウエア制御可能とすることができる。このため、アドレスは、タグまたはタグの一部のみ（最上位１０ビット等）に対してスヌープすることができる。かかるバーチャルキャッシュメモリの無効化方式は、有効データを含むキャッシュラインを無効化するという不利点が認められているが、この不利点よりも、バーチャルキャッシュラインのコヒーレンシを維持する極めて高速な方法を提供することによって達成される性能の利点の方が重要である。
【００８５】
製造レベル試験
製造の間、集積回路は、様々な動作条件のもとで一連の試験を受ける。かかる試験の１つはデータ試験である。この試験では、集積回路の全ての内部ゲートを、上述のＩＥＥＥ１１４９．１試験スキャンチェーンを用いて試験データストリームによって試験する。従来技術では、動作環境において集積回路を設置した後、かかる試験プログラムは再び実行しない。その理由は、一つには、ほとんどの動作環境において、集積回路を試験取付具に接続して試験を行うことは実行不可能であるからであり、また一つには、かかる試験によって意図した目的に集積回路を用いることが妨げられるからである。例えば、プロセッサ１００において、ハードアーキテクチャ状態を、ロード／ストア実行経路を介してシステムメモリにセーブすると共にシステムメモリからリストアすることによって、試験中に多くの作業の達成が妨げられ、長い待ち時間を招く。
【００８６】
しかしながら、上述のハードアーキテクチャ状態の格納方法を用いると、プロセッサを通常の動作環境（例えばコンピュータシステム）に設置している間に、プロセッサは製造レベル試験プログラムを定期的に実行することができる。なぜなら、ハードアーキテクチャ状態をセーブしリストアするための時間は極めて短く、好ましくはわずか数クロックサイクルであるからである。
【００８７】
ここで図１７を参照すると、本発明による製造レベル試験プログラムの例示的な方法のフローチャートが示されている。試験プログラムは、定期的に実行すると好ましい。このため、ブロック１２０２および１２０４に示すように、所定の時間量が経過すると、プロセッサにおいて割込みを開始する（ブロック１２０６）。本発明を用いるいかなる割込みについても、試験プログラムが実行を開始し割込みを送出すると、ブロック１２０８に示すように、ハードアーキテクチャ状態をセーブするための上述の好適な方法を用いて、すぐに（一般に２〜３クロックサイクル内に）現在実行中のプロセスのハードアーキテクチャ状態をセーブする。同時に、好ましくは図９において上述したように、現在実行中のプロセスのソフト状態の少なくとも一部をセーブする（ブロック１２１０）。
【００８８】
オプションとして、ブロック１２１２に示すように、製造試験プログラムのためのハードアーキテクチャ状態をプロセッサ内にロードする。本発明の好適な実施形態では、製造レベル試験プログラムは、図１１に示すフラッシュＲＯＭ８０２からロードした製造レベル試験プログラム（複数のプログラム）８１０からロードする。製造レベル試験プログラム（複数のプログラム）８１０は、処理ユニット２００を最初に製造した時にフラッシュＲＯＭ８０２に焼き付けることができ、またはそれ以降に、製造レベル試験プログラム（複数のプログラム）８１０を焼き付けることができる。多数の製造レベル試験プログラムがフラッシュＲＯＭ８０２にストアされている場合、製造レベル試験プログラムのうち１つを実行のために選択する。本発明の好適な実施形態では、ブロック１２０２および１２０４について上述したように、タイマ割込みを実行するたびに、製造レベル試験プログラムを実行する。
【００８９】
ハードアーキテクチャ状態をプロセッサ内にロードするとすぐ、好ましくは上述したＩＥＥＥ１１４９．１試験スキャンチェーンを用いて、製造レベル試験プログラムは実行を開始する（ブロック１２１４）。同時に、好ましくはソフト状態の更新について上述したように（図９）、ソフトアーキテクチャ状態はプロセッサ内に送出させる（ブロック１２１６）。製造レベル試験プログラムの実行の完了後、割込みは完了し、次のプロセスのためにハードアーキテクチャ状態およびソフト状態をロードすることによって、次のプロセスを実行する（ブロック１２１８）。
【００９０】
ハードアーキテクチャ状態のロードは数クロックサイクルしか必要としないので、製造レベル試験プログラムは、試験プログラム自体を実行するために必要な時間の制約内で、設計者が望む回数だけ実行することができる。製造試験プログラムの実行は、ユーザ、オペレーティングシステム、またはハイパーバイザによって開始することができる。
【００９１】
このため、本発明は、とりわけ、割込みに関連する待ち時間の問題に対処する方法およびシステムを提供する。例えば、従来技術において、割込みハンドラがまれにしか呼び出されるプロセスである場合、低いキャシュレベルおよびシステムメモリを検索して適切な割込みハンドラを見つける際に、通常長い待ち時間がかかっていた。割込みハンドラが実行している場合、これは、プロセッサのキャッシュ階層を、割込みを処理するために必要な命令／データによってポピュレートし、このため、割込みのかかったプロセスが実行のためにリストアされると、キャッシュ階層は「汚染」される。本発明は、本明細書中で説明した発明的なプロセスを利用して、これらの問題を解決する。
【００９２】
本発明の態様について、コンピュータプロセッサおよびソフトウエアに関して説明したが、本発明の少なくともいくつかの態様は、代替的に、データ格納システムまたはコンピュータシステムと共に用いるプログラムプロダクトとして実施可能であることは理解されよう。本発明の機能を規定するプログラムは、様々な信号搬送媒体によって、データ格納システムまたはコンピュータシステムに送出可能である。この信号搬送媒体には、限定ではないが、非書き込み可能格納媒体（例えばＣＤ−ＲＯＭ）、書き込み可能格納媒体（例えばフレキシブルディスク、ハードディスクドライブ、読み取り／書き込みＣＤ−ＲＯＭ、光学媒体）、ならびに、イーサネット（登録商標）を含むコンピュータおよび電話ネットワーク等の通信媒体が含まれる。従って、かかる信号搬送媒体は、本発明の方法機能を指示するコンピュータ読み取り可能命令を搬送または符号化している場合、本発明の代替的な実施形態を表すことは理解されよう。更に、本発明は、本明細書中もしくはそれらの均等物で記載するような、ハードウエア、ソフトウエア、またはソフトウエアおよびハードウエアの組み合わせの形態の手段を有するシステムによって実施可能であることは理解されよう。
【００９３】
本発明について、好適な実施形態を参照して具体的に図示し説明したが、当業者には、本発明の精神および範囲から逸脱することなく、形態および詳細において様々な変更を加え得ることは理解されよう。
【００９４】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００９５】
（１）メモリにおいてセーブされたプロセス状態を管理する方法であって、
揮発性メモリ階層の最低レベルにおいてシステムメモリ内にアイドルプロセスのソフト状態をストアするステップと、
前記システムメモリのメモリコントローラがアドレスを指定するキルタイプ動作を受信したことに応答して、前記システムメモリ内の前記ソフト状態に対して前記キルタイプ動作をスヌープするステップと、
前記スヌープによってスヌープヒットが生じたことに応答して、前記アドレスに関連する前記ソフト状態内のデータを無効化するステップと、
を具備することを特徴とする、方法。
（２）前記アドレスはある数のビットを有し、前記無効化ステップは、前記全数未満のビット数に基づいて決定したスヌープヒットに応答して前記データを無効化することを含むことを特徴とする、（１）の方法。
（３）前記ストアするステップは、前記システムメモリ内にバーチャルキャッシュディレクトリをストアすることを含み、前記スヌープステップは、前記バーチャルキャッシュメモリに対して前記アドレスをスヌープし、正しいＳＬＩＨの実行を停止し、予測された割込みハンドラの実行を完了することを含むことを特徴とする、（１）の方法。
（４）前記ストアするステップはバーチャルキャッシュアレイをストアすることを含み、前記無効化するステップは前記バーチャルキャッシュアレイ内のバーチャルキャッシュラインを無効化することを含むことを特徴とする、（１）の方法。
（５）処理ユニットであって、
揮発性メモリ階層の最低レベルにおいてシステムメモリ内にアイドルプロセスのソフト状態をストアするための手段と、
アドレスを指定するキルタイプ動作を受信したことに応答して、前記システムメモリ内の前記ソフト状態に対して前記キルタイプ動作をスヌープするための手段と、
前記スヌープによってスヌープヒットが生じたことに応答して、前記アドレスに関連する前記ソフト状態内のデータを無効化するための手段と、
を具備することを特徴とする、処理ユニット。
（６）前記アドレスはある数のビットを有し、前記無効化するための手段は、前記全数未満のビット数に基づいて決定したスヌープヒットに応答して前記データを無効化するための手段を含むことを特徴とする、（５）の処理ユニット。
（７）前記ストアするための手段は、前記システムメモリ内にバーチャルキャッシュディレクトリをストアするための手段を含み、前記スヌープするための手段は、バーチャルキャッシュメモリに対して前記アドレスをスヌープするための手段を含むことを特徴とする、（５）の処理ユニット。
（８）前記ストアするための手段はバーチャルキャッシュアレイをストアするための手段を含み、前記無効化するための手段は前記バーチャルキャッシュアレイ内のバーチャルキャッシュラインを無効化するための手段を含むことを特徴とする、（５）の処理ユニット。
（９）データ処理システムであって、
（５）による処理ユニットを含む複数のプロセッサと、
前記複数のプロセッサに結合された揮発性メモリ階層と、
前記複数のプロセッサを結合する相互接続と、
を具備することを特徴とするデータ処理システム。
（１０）処理ユニットであって、
少なくとも１つの実行ユニットと、
前記少なくとも１つの実行ユニットに結合され、前記少なくとも１つの実行ユニットに命令を発する命令順序付けユニットと、
前記少なくとも１つの実行ユニットに結合されたキャッシュメモリと、
前記キャッシュメモリに結合されたメモリコントローラと、
を具備し、前記処理ユニットが割込みを受信したことに応答して、前記メモリコントローラはプロセッサのソフト状態を関連するメモリにセーブし、前記メモリコントローラは、アドレスを指定するキルタイプ動作を受信したことに応答して、前記関連するメモリ内の前記ソフト状態に対して前記キルタイプ動作をスヌープし、前記スヌープによってスヌープヒットが生じたことに応答して、前記アドレスに関連する前記ソフト状態内のデータを無効化することを特徴とする処理ユニット。
（１１）前記アドレスはある数のビットを有し、前記メモリコントローラは前記全数未満のビット数に基づいて前記スヌープヒットを決定することを特徴とする、（１０）の処理ユニット。
（１２）前記メモリコントローラは、前記関連するメモリ内にバーチャルキャッシュディレクトリをストアし、前記メモリコントローラは、バーチャルキャッシュメモリに対して前記アドレスをスヌープすることを特徴とする、（１０）の処理ユニット。
（１３）前記メモリコントローラはバーチャルキャッシュアレイをストアし、前記メモリコントローラは前記スヌープヒットに応答して前記バーチャルキャッシュアレイ内のバーチャルキャッシュラインを無効化することを特徴とする、（１０）の処理ユニット。
（１４）データ処理システムであって、
（１０）による処理ユニットを含む複数のプロセッサと、
前記複数のプロセッサに結合された揮発性メモリ階層と、
前記複数のプロセッサを結合する相互接続と、
を具備することを特徴とするデータ処理システム。
【図面の簡単な説明】
【００９６】
【図１】ロード／ストアユニットを用いてプロセッサのアーキテクチャ状態をセーブするために従来技術の方法を採用する従来のコンピュータシステムのブロック図である。
【図２】本発明によるデータ処理システムの例示的な実施形態のブロック図である。
【図３】図２に示す処理ユニットの付加的な詳細を示す。
【図４】図２に示す処理ユニットの付加的な詳細を示す。
【図５】本発明による例示的なソフトウエア構成の層図を示す。
【図６】図７と共に、本発明による例示的な割込み処理プロセスのフローチャートを形成する。
【図７】図６と共に、本発明による例示的な割込み処理プロセスのフローチャートを形成する。
【図８】本発明に従ってハードアーキテクチャ状態およびソフト状態をセーブするための、図６に示すステップの更なる詳細を示すフローチャートである。
【図９】本発明に従ってハードアーキテクチャ状態およびソフト状態をセーブするための、図６に示すステップの更なる詳細を示すフローチャートである。
【図１０】プロセスの少なくともソフト状態をメモリに伝達するために本発明が用いるスキャンチェーン経路を示す。
【図１１】少なくとも第１レベル割込みハンドラ（ＦＬＩＨ）、第２レベル割込みハンドラ（ＳＬＩＨ）、および製造レベル試験命令をストアするために、本発明に従って用いられる図２に示すフラッシュＲＯＭの付加的な詳細を示す。
【図１２】少なくとも第１レベル割込みハンドラ（ＦＬＩＨ）、第２レベル割込みハンドラ（ＳＬＩＨ）、および製造レベル試験命令をストアするために、本発明に従って用いられる図２に示すフラッシュＲＯＭの付加的な詳細を示す。
【図１３】少なくとも第１レベル割込みハンドラ（ＦＬＩＨ）、第２レベル割込みハンドラ（ＳＬＩＨ）、および製造レベル試験命令をストアするために、本発明に従って用いられる図２に示すフラッシュＲＯＭの付加的な詳細を示す。
【図１４】本発明による、プロセッサが割込みを受信した際の予測ＳＬＩＨへのジャンプを説明するフローチャートである。
【図１５】ストアされたハードアーキテクチャ状態、ストアされたソフト状態、メモリパーティション、およびプロセッサ間の論理的および通信的関係を示す。
【図１６】ソフト状態をメモリにストアするための例示的なデータ構造を示す。
【図１７】コンピュータシステムの通常動作の間に製造レベル試験プログラムを実行することによってプロセッサを試験するための例示的な方法のフローチャートである。
【図１】
2004185604.tif 000003
【図２】
2004185604.tif 000004
【図３】
2004185604.tif 000005
【図４】
2004185604.tif 000006
【図５】
2004185604.tif 000007
【図６】
2004185604.tif 000008
【図７】
2004185604.tif 000009
【図８】
2004185604.tif 000010
【図９】
2004185604.tif 000011
【図１０】
2004185604.tif 000012
【図１１】
2004185604.tif 000013
【図１２】
2004185604.tif 000014
【図１３】
2004185604.tif 000015
【図１４】
2004185604.tif 000016
【図１５】
2004185604.tif 000017
【図１６】
2004185604.tif 000018
【図１７】
2004185604.tif 000019