(57)【特許請求の範囲】
【請求項１】
レジスタファイル（３２）を有するプロセッサ（１２）を備えるデータ処理システム（１０）であって、
前記レジスタファイル（３２）は、割込動作毎、プロセス動作毎、およびスレッド動作毎のうちの少なくとも一つに応じてそれぞれ前記プロセッサ（１２）によって切替えて用いられる複数のレジスタコンテキストを有し、
前記レジスタコンテキスト（７４）には、当該レジスタコンテキスト（７４）の汎用レジスタが他のレジスタコンテキスト（７２）の汎用レジスタにマップ（８２）されているか否かを示すコンテキスト制御レジスタ（７５）がそれぞれ対応付けられ、
前記プロセッサ（１２）がアクセスした前記汎用レジスタが他の汎用レジスタにマップ（８２）されている場合、前記プロセッサ（１２）は当該他の汎用レジスタにもアクセスすることを特徴とする、データ処理システム。
【請求項２】
複数の前記コンテキスト制御レジスタ（７５，７７，７９；１２８，１３０，１３２）は、それぞれ前記レジスタコンテキスト（７４，７０，７２；９４，９０，９２）に含まれる、請求項１記載のデータ処理システム。
【請求項３】
複数の前記コンテキスト制御レジスタ（７５，７７，７９；１２８，１３０，１３２）は、前記レジスタファイル（３２）が有する制御レジスタファイル（３８）に含まれる、請求項１記載のデータ処理システム。
【請求項４】
前記コンテキスト制御レジスタ（１４０）は更に、
スタックポインタのマッピングを有効にするスタックポインタコンテキストイネーブルフィールド（１５２）と；
前記スタックポインタに関するマップ先のレジスタコンテキストを選択するスタックポインタコンテキスト選択フィールド（１５４）と
を有する、請求項１〜３何れか一項記載のデータ処理システム。
【請求項５】
前記コンテキスト制御レジスタ（１４０）は更に、
アサートされることによって複数のレジスタコンテキストを有効にするイネーブルフィールド（１４２）を有する、請求項１〜４何れか一項記載のデータ処理システム。
【請求項６】
前記コンテキスト制御レジスタ（１４０）は更に、
現行のレジスタコンテキストの前に実行されていたレジスタコンテキストを特定するための保存済コンテキストフィールド（１４８）を含む、請求項１〜５何れか一項記載のデータ処理システム。
【請求項７】
レジスタファイル（３２）を有するプロセッサ（１２）におけるデータ処理方法であって、
前記レジスタファイル（３２）は、割込動作毎、プロセス動作毎、およびスレッド動作毎のうちの少なくとも一つに応じてそれぞれ前記プロセッサ（１２）によって切替えて用いられる複数のレジスタコンテキストを有し、
前記レジスタコンテキスト（７４）には、当該レジスタコンテキスト（７４）の汎用レジスタが他のレジスタコンテキスト（７２）の汎用レジスタにマップ（８２）されているか否かを示すコンテキスト制御レジスタ（７５）がそれぞれ対応付けられ、
前記プロセッサ（１２）がアクセスした前記汎用レジスタが他の汎用レジスタにマップ（８２）されている場合、前記プロセッサ（１２）は当該他の汎用レジスタにもアクセスすることを特徴とする、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理システムに関し、より詳細には、複数のレジスタ・コンテキストを有するデータ処理システムに関する。
【背景技術】
【０００２】
マイクロプロセッサなどのデータ処理システムでは、動作の実行および処理を制御するのにプロセッサが利用される。プロセッサは、通常の動作中および例外処理中にプロセッサによって利用されるレジスタ・コンテキストを格納するレジスタ群を含む。割り込み、またはプロセス切り替えが生じた場合、割り込み処理プログラムまたは新たなプロセスが同一のレジスタ群を使用し、レジスタ内の値の一部を変更する可能性があるため、レジスタ・コンテキスト情報が壊れる可能性がある。
【０００３】
上述の問題の１つの解決法は、割り込みの処理または新たなプロセスを開始するのに先立って、レジスタ・コンテキストの現在の値をメモリの中に保存し、割り込み処理が完了した時点、または現在のプロセスに戻る時点で、メモリからレジスタ群の中に保存されているレジスタ・コンテキスト値を再び読み込むことである。しかし、レジスタ・コンテキストを保存すること、および新たなコンテキストをロードすることのオーバーヘッドは、リアルタイム環境または高性能環境においては望ましくない。したがって、柔軟性があり、オーバーヘッドを減らすデータ処理システムにおけるレジスタ・コンテキスト選択方式の必要性が存在する。
【発明を実施するための最良の形態】
【０００４】
本発明を、例として、限定としてではなく、添付の図によって示す。図では、同様の符号は同様の要素を示す。
図における諸要素は、簡明にするために示しており、必ずしも原寸に比例して描かれているわけではないことは、当業者には理解されよう。例えば、図における諸要素の一部の寸法は、本発明の諸実施形態の理解を向上させるのに役立つよう、他の諸要素と比べて誇張されている可能性がある。
【０００５】
本明細書で使用する「バス」という用語は、データ、アドレス、制御、またはステータスなどの１つまたは複数の様々なタイプの情報を転送するのに使用することが可能な複数の信号または導体を指すのに使用する。「アサートする」および「ネゲートする」（または「デアサートする」）という用語は、信号、ステータス・ビット、または類似の装置を論理的に真の状態、または論理的に偽の状態にすることを指す場合にそれぞれ使用される。論理的に真の状態が論理レベル１である場合、論理的に偽の状態は論理レベル０である。また、論理的に真の状態が論理レベル０である場合、論理的に偽の状態は論理レベル１である。数の前に付いた記号「＄」は、その数が１６進形式で、つまり１６を基数とする形式で表されていることを示す。数の前に付いた記号「％」は、その数が２進形式、つまり２を基数とする形式で表されていることを示す。
【０００６】
図１は、データ・バス４およびアドレス・バス６を介して外部デバイス２に結合されたデータ処理システム１０を示している。データ処理システム１０は、プロセッサ１２を含む。一実施形態では、データ処理システム１０および外部デバイス２はそれぞれ、別々の集積回路として実装される。代替の実施形態では、データ処理システム１０および外部デバイス２は、単一の集積回路上に実装することが可能である。データ処理システム１０内部では、プロセッサ１２が、内部データ・バス１３および内部アドレス・バス１４でシス
テム集積回路２２に結合される。
【０００７】
本発明の一部の実施形態では、データ処理システム１０は、単一の集積回路上に形成されることに留意されたい。さらに、一部の実施形態では、データ処理システム１０は、シングル・チップ・マイクロコントローラ、マイクロプロセッサ、デジタル信号プロセッサ、または他の任意のタイプのデータ処理システムであることが可能である。さらに、データ処理システム１０は、任意のタイプの電気回路を使用して実装することが可能である。外部デバイス２は、メモリまたは任意のタイプの周辺デバイスを含め、あらゆるタイプの電気回路であることが可能である。代替の実施形態は、より多い、より少ない、または異なる外部集積回路群を含むことが可能である。さらに、バス４およびバス６は、任意の数のビットを使用して実装することが可能である。
【０００８】
動作の際、システム集積回路２２を使用して、プロセッサ１２と外部デバイス２の間の通信を可能にする。つまり、プロセッサ１２は、内部バス１４および１３を介してデータおよびアドレス情報をシステム集積回路２２に送り、システム集積回路２２は、データおよびアドレス情報を、外部デバイス２に適切な方法およびフォーマットで、バス４およびバス６を介して送る。プロセッサ１２について、図２を参照して以下により詳細に説明する。
【０００９】
図２は、本発明の一実施形態によるプロセッサ１２の一部分を示している。プロセッサ１２は、演算論理装置（ＡＬＵ）２４、アドレス・ジェネレータ２６、命令パイプライン２８、命令復号化回路３０、レジスタ・ファイル・セット３２、およびベクトル・オフセット・ジェネレータ３９を含む。レジスタ・ファイル３２は、コンテキスト０ ３４、コンテキスト１ ３５、およびコンテキストＮ ３６のような複数のレジスタ・コンテキストを含む。したがって、レジスタ・ファイル３２は、Ｎ＋１個のレジスタ・コンテキストを含み、３つだけを図２に示しているが、プロセッサ１２は、いくつのレジスタ・コンテキストをハードウェアがサポートすることが可能であるかに依存して、任意の数のレジスタ・コンテキストを含むことが可能である。また、レジスタ・ファイル３２は、制御レジスタ・ファイル３８も含む。内部アドレス・バス１４がアドレス・ジェネレータ２６に結合され、アドレス・ジェネレータ２６は、レジスタ・ソース・バス４０を介してレジスタ・ファイル３２に結合され、内部データ・バス１３にも結合される。ベクトル・オフセット・ジェネレータ３９は、ベクトル・オフセット・バス２７を介してアドレス・ジェネレータ２６に結合される。内部データ・バス１３は、命令パイプライン２８、ＡＬＵ２４、およびレジスタ・ファイル３２に結合される。命令復号化回路３０は、命令バス２９を介して命令パイプライン２８に双方向で結合される。レジスタ・ファイル３２は、フィールド情報バス４２を介してＡＬＵ２４に結合される。
【００１０】
図３は、本発明の一実施形態によるレジスタ・コンテキスト５１を示している。図３のレジスタ・コンテキスト５１は、図２のコンテキスト０〜Ｎのいずれか１つを表すことが可能である。図３の実施形態では、レジスタ・コンテキスト５１は、３２個の汎用レジスタ（ＧＰＲ）５０、リンク・レジスタ５４、カウント・レジスタ５６、条件レジスタ５８、整数例外レジスタ６０、マシン状態レジスタ６２、およびコンテキスト制御レジスタ６４を含む。リンク・レジスタ５４は、サブルーチンを呼び出す際、およびサブルーチンから戻る際、サブルーチン・リンケージ情報を保持するのに使用される。カウント・レジスタ５６は、命令のカウントされるループを処理するためのカウント情報を保持するのに使用される。条件レジスタ５８は、条件コード計算の結果を保持するのに使用される。整数例外レジスタ６０は、様々な例外ステータスを提供するのに使用される。マシン状態レジスタ６２は、プロセッサ１２内部の様々な機能のステータスを制御し、それらの機能のステータスを提供するのに使用される。コンテキスト制御レジスタ６４は、以下により詳細に説明するとおり、本発明の一実施形態に従ってコンテキスト切り替えを提供するのに使
用される。ＧＰＲ５０の１つは、現在のスタック・ポインタを格納するために確保されたスタック・ポインタ・レジスタ５２であることにも留意されたい。
【００１１】
したがって、レジスタ・コンテキストとは、前述したレジスタ群（コンテキスト５１のレジスタ群）の内容を指す。代替の実施形態は、レジスタ・コンテキスト５１の同一のレジスタ群のすべて、または一部を有するものとしてレジスタ・コンテキストを定義するか、またはレジスタ・コンテキスト５１のレジスタ群とは異なるレジスタ・セットを含むことが可能である。したがって、本明細書で使用するレジスタ・コンテキストは、任意の数の任意のタイプのレジスタを有するように定義することが可能である。通常、レジスタ・コンテキストは、プロセッサに関するプログラマのレジスタ・モデルの全部または一部を形成するレジスタ・リソース群を含む。通常の動作中、または電源投入またはリセットの後、データ処理システム１０は、デフォルトでコンテキスト０  ３４を利用することが可能である。（代替の実施形態では、通常の動作は、デフォルトで異なるコンテキストになることに留意されたい。）しかし、割り込みまたはプロセス切り替えが生じた場合、コンテキスト０  ３４内の値を壊さないように、データ処理システム１０は、その割り込みを処理するため、またはその新たなプロセスまたはスレッドを実行するために、新たなコンテキストを（コンテキスト１ないしＮから）選択する。したがって、割り込み処理およびプロセス切り替え（例えば、マルチスレッド）により、データ処理システム１０内部でレジスタ・コンテキストを切り替える必要が生じる可能性がある。また、一部の実施形態では、レジスタ・コンテキスト内のレジスタ群の一部を別のレジスタ・コンテキストと共有することが望ましい可能性がある。したがって、以下に説明するとおり、レジスタ・コンテキストの一部分を別のレジスタ・コンテキストにマップして、オーバーヘッドを減らし、コンテキスト切り替え中の速度を高めるのに役立てることが可能である。
【００１２】
データ処理システム１０では、例外および割り込みは、命令パイプライン２８の復号化段階または実行段階において認識される。このため、命令が命令復号化回路３０に与えられ、復号化された場合、通常の命令処理の代りに、割り込みが認識され、処理されることが可能である。本明細書で説明する一実施形態では、所与の割り込みが他の何らかの割り込みに優先されるかどうかを決める複数の割り込みレベルが存在する。このため、高い優先順位を有する割り込みは、より低い優先順位を有する割り込みより迅速に処理され、より低い優先順位を有する割り込みは、処理を待たなければならない。したがって、同一の優先順位を有する各割り込み、あるいは同一の優先順位を有する各割り込みまたは各タイプの割り込みは、所望される場合、同一のレジスタ・コンテキストを共有することが可能である。
【００１３】
割り込みが受け取られた場合、データ処理システム１０は、例外処理シーケンスを実行することを始める。このシーケンス中、ベクトル・オフセット・ジェネレータ３９は、ベクトル・オフセット・バス２７を介してベクトル・オフセット値をアドレス・ジェネレータ２６に与える。アドレス・ジェネレータ２６は、ベクトル・オフセット値を使用して、割り込みを処理するために実行が開始されるべき命令アドレスを形成する。一実施形態では、ベクトル・オフセット値に加えて、ベクトル・オフセット・ジェネレータは、割り込み処理のために使用されるべきレジスタ・コンテキストを示すコンテキスト・セレクタも与える。一実施形態では、コンテキスト・セレクタは、ベクトル・オフセット値の一部分であるか、またはベクトル・オフセット・ジェネレータ３９によって与えられる別個の値であることが可能である。また、コンテキスト・セレクタは、レジスタ・ファイル３２に直接に与えることも可能である。代替の実施形態では、コンテキスト・セレクタは、メモリ（図示せず）から読み取られる値であることが可能であり、あるいは命令を介して受け取られることが可能である。データ処理システム１０がレジスタ・ファイル３２の中に８つのレジスタ・コンテキストを有するケースでは、コンテキスト・セレクタは、レジスタ・コンテキストの１つを識別するのに使用される３ビットの値であることが可能である。
【００１４】
また、データ処理システム１０は、１つのプロセスから別のプロセス（それぞれのプロセスは異なるレジスタ・コンテキストで動作することが可能である）に、プロセッサ１２が切り替えることが可能である場合、プロセス切り替えを行うことが可能である。例えば、マルチスレッド・アプリケーションでは、プロセッサ１２は、異なる処理スレッド（または処理スレッドのグループ）が異なるレジスタ・コンテキストを使用する場合、様々な処理スレッドの間で絶えず切り替えを行うことが可能である。プロセス切り替えのケースでは、割り込みを使用して、プロセス切り替えをデータ処理システム１０に示すことが可能である（割り込み処理が切り替えプロセスを含む場合）。あるいは、他の方法を使用して、プロセス切り替えが必要であることをアドレス・ジェネレータ２６に示し、アドレス・ジェネレータ２６が新たなプロセスの開始アドレスを生成することが可能である。また、プロセス切り替え後、新たなプロセスにいずれのレジスタ・コンテキストが必要とされるかを示すようにコンテキスト・セレクタも与えられる。前述したとおり、コンテキスト・セレクタは、様々な異なる形で（すなわち、ベクトル・オフセット・ジェネレータ３９から、メモリから、ユーザ命令からなど）与えることが可能であり、正しいレジスタ・コンテキストが選択されることが可能であるように、レジスタ・ファイル３２に直接に、または間接的に（例えば、アドレス・ジェネレータ２６を介して）与えることが可能である。
【００１５】
レジスタ・コンテキストが確立されると、プロセッサ１２によって実行される命令は、現在、確立されているコンテキストに対応する適切な汎用レジスタ群（ＧＰＲ群５０）または専用レジスタ群（例えば、ＬＲ５４、ＣＴＲ５６、ＣＲ５８、ＸＥＲ６０、ＭＳＲ６２、またはＣＴＸＣＲ６４）を参照する。他のコンテキスト内のレジスタ群は、影響を受けず（以下に説明するとおり、マッピングが確立されていない限り）、このため、現在、確立されているコンテキストに関する命令の実行に先立って、メモリに代替のコンテキストを保存すること、または復元することを実行する必要は全くない。これにより、オーバーヘッドの節減が可能になる。
【００１６】
図４および図５は、データ処理システム１０内部で使用することが可能なレジスタ・コンテキスト内の典型的なマッピングを示している。図４は、３つのレジスタ・コンテキスト、すなわち、コンテキスト０  ７０、コンテキスト１  ７２、およびコンテキスト２  ７４を示している。以上のレジスタ・コンテキストは、図２のコンテキスト０〜Ｎの範囲内のコンテキストの３つを表すことが可能である。図４の例では、コンテキスト０  ７０は、データ処理システム１０の通常の動作に対応し、コンテキスト１  ７２は、重要な割り込み（最高優先順位）に対応し、コンテキスト２  ７４は、外部割込み（低い優先順位）に対応するものと想定する。前述したとおり、一部のケースでは、複数のレジスタ・コンテキストがレジスタ群の一部を「共有する」ことが望ましい。したがって、図４の例では、矢印８２で示すとおり、レジスタ・コンテキスト２  ７４のスタック・ポインタ・レジスタ８０が、レジスタ・コンテキスト１  ７２のスタック・ポインタ７８にマップされ、レジスタ・コンテキスト１  ７２とレジスタ・コンテキスト２  ７４が同一のスタック・ポインタを共有することが可能であり、両方のレジスタ・コンテキストにおいて同一のスタック・ポインタ値が使用されるようになっていることを示している。このマッピングは、オーバーヘッドを減らし、スタック・ポインタの整合性を保つのに役立つ。したがって、外部割り込みを処理するときには、コンテキスト２  ７４がデータ処理システム１０によって選択される。しかし、スタック・ポインタ・レジスタ８０がスタック・ポインタ・レジスタ７８にマップされているので、レジスタ・コンテキスト１  ７２内のスタック・ポインタ・レジスタ７８が、そのスタック・ポインタにアクセスするためにレジスタ・コンテキスト２  ７４における動作中にアクセスされる。つまり、レジスタ・コンテキスト２  ７４を選択する現在のコンテキスト値で動作している間、スタック・ポインタ・レジスタ８０にアクセスしようと試みる命令およびその他の動作は、レジスタ・コンテキス
ト１  ７２内のスタック・ポインタ・レジスタ７８にアクセスするように向けかえられる。これにより、別々のスタック・ポインタ・レジスタ８０と７８を同期させるオーバーヘッドなしに、コンテキスト１とコンテキスト２の間で単一の矛盾しないスタックおよびスタック・ポインタ値が共有されることが可能になる。
【００１７】
スタック・ポインタ・レジスタ７６（コンテキスト０  ７０の）とスタック・ポインタ・レジスタ７８（コンテキスト１  ７２の）はマップされていないことに留意されたい。したがって、これらのレジスタ・コンテキストで動作している場合、スタック・ポインタにアクセスする際に他のいずれのレジスタ・コンテキストにもアクセスする必要がない。レジスタ・コンテキスト７０、７２、および７４のそれぞれの中のコンテキスト制御レジスタ７７、７９、および７５はそれぞれ、対応するレジスタ・コンテキストのスタック・ポインタがマップされているかどうかを示し、マップされている場合、他のいずれのレジスタ・コンテキストにマップされているかを示す。コンテキスト制御レジスタの詳細を、図６を参照して以下により詳細に説明する。
【００１８】
図５は、別の例による３つのレジスタ・コンテキスト、すなわち、レジスタ・コンテキスト１  ９０、レジスタ・コンテキスト２  ９２、およびレジスタ・コンテキスト３  ９４を示している。図４の場合と同様に、図５のレジスタ・コンテキストは、図２のレジスタ・コンテキスト０〜Ｎのレジスタ・コンテキストの３つを表すことが可能である。図５の例では、レジスタ・コンテキスト１  ９０は、プロセスＡに対応し、レジスタ・コンテキスト２  ９２は、プロセスＢに対応し、レジスタ・コンテキスト３  ９４は、プロセスＣに対応する。したがって、データ処理システム１０は、プロセスＡを実行している場合、レジスタ・コンテキスト１  ９０で動作する。プロセス切り替え時（例えばプロセスＡからプロセスＢへの切り替え）、コンテキスト・セレクタにより、プロセスＢを実行する際に使用するためのレジスタ・コンテキスト２  ９２が選択される。図４に関連して前述したとおり、スタック・ポインタ・レジスタのそれぞれは、異なるレジスタ・コンテキストにマップされる能力を有する。例えば、図５で、レジスタ・コンテキスト１  ９０のスタック・ポインタ・レジスタ９６が、矢印１２４で示すとおり、レジスタ・コンテキスト２  ９２のスタック・ポインタ・レジスタ９８にマップされる。したがって、プロセスＡを実行している（レジスタ・コンテキスト１  ９０を使用して）場合、スタック・ポインタへのアクセスにより、実際には、異なるレジスタ・コンテキスト（すなわち、レジスタ・コンテキスト２  ９２）内のスタック・ポインタ・レジスタ９８へのアクセスがもたらされる。ただし、レジスタ・コンテキスト３  ９４のスタック・ポインタ・レジスタ１００はマップされていないことに留意されたい。また、一実施形態では、階層型マッピングを有することも可能である。例えば、スタック・ポインタ・レジスタ９６がスタック・ポインタ・レジスタ９８にマップされるのと同様に、スタック・ポインタ・レジスタ９８も、例えば、スタック・ポインタ・レジスタ１００にマップされることが可能である。また、特定のスタック・ポインタ・レジスタに、複数のスタック・ポインタ・レジスタがマップされることも可能である。例えば、スタック・ポインタ・レジスタ９８に、スタック・ポインタ・レジスタ１００とスタック・ポインタ・レジスタ９６がマップされることが可能である。その他のマッピングも同様に可能である。
【００１９】
図５のレジスタ・コンテキスト群は、レジスタのグループ化も含む。例えば、汎用レジスタ群は、４つのレジスタのグループにグループ化される。レジスタ・コンテキスト１  ９０において、ＧＰＲ４〜７が一緒にグループ化されてレジスタ・グループ１０２になり、ＧＰＲ８〜１１が一緒にグループ化されてレジスタ・グループ１０４になり、ＧＰＲ２８〜３１がグループ化されてレジスタ・グループ１０６になる。したがって、レジスタ・コンテキスト１  ９０は、図５の例では、それぞれ４つのレジスタの３つのグループ（グループ１０２、１０４、および１０６）を含み、これらのグループのそれぞれが、異なるレジスタ・コンテキストにマップされる（グループとして）ことが可能である。代替の実
施形態では、任意の数およびタイプのレジスタをグループ化することが可能である。あるいは、所望される細分性に依存して、それぞれの個別のレジスタを別個のグループと見なすことが可能である。同様に、レジスタ・コンテキスト２  ９２は、４つのレジスタの３つのグループ、すなわち、ＧＰＲ４〜７を有するグループ１１４、ＧＰＲ８〜１１を有するグループ１１６、およびＧＰＲ２８〜３１を有するグループ１１８）を含む。また、レジスタ・コンテキスト３  ９４も、４つのレジスタの３つのグループ、すなわち、ＧＰＲ４〜７を有するグループ１０８、ＧＰＲ８〜１１を有するグループ１１０、およびＧＰＲ２８〜３１を有するグループ１１２）を含む。以上のグループ化により、レジスタのグループが、異なるレジスタ・コンテキストの間でマッピングされることが可能になる。
【００２０】
例えば、矢印１２０で示すとおり、レジスタ・コンテキスト２  ９２のグループ１１８が、レジスタ・コンテキスト１  ９０のグループ１０６にマップされる。矢印１２６で示すとおり、レジスタ・コンテキスト３  ９４のグループ１１２も、レジスタ・コンテキスト１  ９０のグループ１０６にマップされる。つまり、グループ１０６のレジスタ群は、３つすべてのレジスタ・コンテキスト、すなわち、レジスタ・コンテキスト１  ９０、レジスタ・コンテキスト２  ９２、およびレジスタ・コンテキスト３  ９４によって共有される。したがって、プロセスＢまたはプロセスＣを実行している場合、現在のレジスタ・コンテキスト（それぞれ、レジスタ・コンテキスト２  ９２またはレジスタ・コンテキスト３  ９４）のＧＰＲ２８〜３１へのアクセスにより、実際には、レジスタ・コンテキスト１  ９０のＧＰＲ２８〜３１へのアクセスがもたらされる。やはり図５に示されていることとして、矢印１２２で示すとおり、レジスタ・コンテキスト１  ９０のグループ１０４が、レジスタ・コンテキスト２  ９２のグループ１１６にマップされている。つまり、グループ１１６のレジスタ群は、レジスタ・コンテキスト１  ９０とレジスタ・コンテキスト２  ９２の両方によって共有される。したがって、プロセスＡを実行している場合、現在のレジスタ・コンテキストのＧＰＲ８〜１１へのアクセスにより、実際には、レジスタ・コンテキスト２  ９２のＧＰＲ８〜１１へのアクセスがもたらされる。したがって、単一のレジスタ（スタック・ポインタ・レジスタ９６、９８、または１００のような）のマッピングであるか、レジスタのグループのマッピングであるかに関わらず、任意の数のマッピングが存在することが可能である。また、各レジスタ・コンテキストは、あるレジスタ群を１つのレジスタ・コンテキストにマップしており、他のレジスタ群をもう１つのレジスタ・コンテキストにマップしていることも可能である。また、レジスタ、またはグループのレジスタに、複数のレジスタ・コンテキストのレジスタ群がマップされていることも可能である。
【００２１】
各レジスタ・コンテキストのマッピングは、各レジスタ・コンテキストのコンテキスト制御レジスタ（例えば、図５のコンテキスト制御レジスタ１２８、１３０、および１３２）の中で定義される。したがって、図２の各レジスタ・コンテキスト０〜Ｎは、各レジスタ・コンテキストの中に含められることが可能である（図４および５のように）か、または別々に（図２の制御レジスタ・ファイル３８の中などに）格納されることが可能な、対応するコンテキスト制御レジスタを有する。図６は、本発明の一実施形態によるコンテキスト制御レジスタ１４０の内容を示している。コンテキスト制御レジスタ１４０は、図４のコンテキスト制御レジスタ７７、７９、７５、または図５のコンテキスト制御レジスタ１２８、１３０、および１３２を指すことが可能である。一実施形態では、コンテキスト制御レジスタ１４０は、レジスタ群のマッピングを制御する様々な異なるフィールドを有し、現在のコンテキスト情報、代替のコンテキスト情報、および保存されたコンテキスト情報を保持する専用３２ビット・レジスタである。
【００２２】
コンテキスト制御レジスタ１４０のビット０は、複数のレジスタ・コンテキストの使用を有効にするコンテキスト・イネーブル・フィールド１４２に対応する。例えば、コンテキスト・イネーブル・フィールド１４２がネゲートされた場合、単一のコンテキストだけ
が有効にされ、コンテキスト制御１４０内の他のすべての制御フィールドは無視され、現在のコンテキストは、既定のレジスタ・コンテキスト（図２に示した実施形態では、レジスタ・コンテキスト０  ３４である）に設定される。コンテキスト・イネーブル・フィールド１４２がアサートされた場合、複数のコンテキストが有効になる。ビット３〜５は、ハードウェアによってサポートされる最大コンテキスト数を示す読み取り専用フィールドであるコンテキスト数フィールド１４４に対応する。図６の例では、０００という値により、１つのコンテキストがサポートされることが示され、１１１という値により、８つのレジスタ・コンテキストがハードウェアによってサポートされることが示される。データ処理システム１０が、８つより多くのレジスタ・コンテキストをサポートすることが可能な場合、コンテキスト数フィールド１４４のために追加のビットを使用することが可能である。ただし、図６の実施形態では、最大で８つのレジスタ・コンテキストがサポートされるものと想定する。
【００２３】
ビット６〜８は、現在、有効にされているレジスタ・コンテキストを定義する現行コンテキスト・フィールド１４６に対応する。一実施形態では、このフィールドは、リセット時にクリアされて０になり、既定のレジスタ・コンテキストはレジスタ・コンテキスト０であることを示す。現行コンテキスト・フィールド１４６は、図２のベクトル・オフセット・ジェネレータ３９によって与えられるなど、様々な異なる形で与えられることが可能な前述したコンテキスト・セレクタに対応する。したがって、コンテキスト切り替え（割り込み、またはプロセス切り替えによって生じさせられる）時に、現行コンテキスト・フィールド１４６は、コンテキスト・セレクタによって示される新たなレジスタ・コンテキストに設定される。例えば、図５を参照すると、データ処理システム１０が現在、プロセスＡにおいて実行されている場合、プロセスＢへのコンテキスト切り替え時に、コンテキスト・セレクタによりレジスタ・コンテキスト２が示され、２という値が、レジスタ・コンテキスト２  ９２のコンテキスト制御レジスタの現行コンテキスト・フィールドに書き込まれる。
【００２４】
各レジスタ・コンテキストは、独自のコンテキスト制御レジスタを有し、フィールドのいくつかは、異なるコンテキスト制御レジスタの間で共有されることが可能であることに留意されたい。例えば、単一のコンテキスト・イネーブル・ビット、単一のコンテキスト数フィールド、および単一の現行コンテキスト・フィールドが実装されることが可能であり、すべてのコンテキスト制御レジスタによって使用される。というのは、値は、異なるコンテキスト制御レジスタの間で常に同一だからである。代替の実施形態は、各コンテキスト制御レジスタに関してコンテキスト・イネーブル・フィールドまたはコンテキスト数フィールド、または現行コンテキスト・フィールドを使用することも可能であるが、それぞれに関して単一の共有フィールドを使用することにより、ハードウェア要件が少なくなる。
【００２５】
ビット９〜１１は、前に有効にされたコンテキストを定義する保存済みコンテキスト・フィールド１４８に対応する。このフィールドも、リセット時にクリアされて０になることが可能であることに留意されたい。したがって、プロセスＡからプロセスＢに切り替える前述の例では（図５参照）、現行コンテキスト・フィールドは、２（レジスタ・コンテキスト２  ９２を表す）に設定され、保存済みコンテキスト・フィールドは、１（前のコンテキスト、レジスタ・コンテキスト１  ９０を表す）に設定される。
【００２６】
ビット１２〜１４は、レジスタ・グループに関するコンテキスト・マッピングを定義するのに使用される代替で有効にされるコンテキストを定義する代替コンテキスト・フィールド１５０に対応する。ビット１５〜１８は、マッピング・フィールド１５１に対応する。ビット１５は、レジスタ・グループＡ（ＧＰＲ４〜７と定義される）に対応し、ビット１６は、レジスタ・グループＢ（ＧＰＲ８〜１１と定義される）に対応し、ビット１７は
、レジスタ・グループＣ（ＧＰＲ１６〜２３と定義される）に対応し、ビット１８は、レジスタ・グループＤ（ＧＰＲ２７〜３１と定義される）に対応する。レジスタ・グループＡ〜Ｄのそれぞれは、対応するビットをアサートすることによって独立に有効にすることが可能である。例えば、ビット１５がアサートされた場合、グループＡが有効にされて、グループＡが代替コンテキスト・フィールドによって定義されたレジスタ・コンテキストにマップされるようになる。ビット１５がネゲートされた場合、グループＡはマップされない。同様に、ビット１６、ビット１７、またはビット１８がアサートされた場合、レジスタの対応するグループ（それぞれＢ、Ｃ、またはＤ）が、代替コンテキスト・フィールドによって定義されたレジスタ・コンテキストにマップされる。ビット１６、ビット１７、またはビット１８がネゲートされた場合、レジスタの対応するグループ（それぞれＢ、Ｃ、またはＤ）はマップされない。したがって、図５を参照すると、レジスタ・コンテキスト１  ９０のコンテキスト制御レジスタが、代替コンテキスト・フィールドの中に２を含み、レジスタの選択された１つまたは複数のグループがレジスタ・コンテキスト２  ９２にマップされることを示している。また、ビット１６（ＧＰＲ８〜１１を有するグループＢに対応する）がアサートされて、レジスタ・コンテキスト１  ９０のグループ１０４がレジスタ・コンテキスト２  ９２のグループ１１６にマップされるようになる。
【００２７】
図６の典型的なコンテキスト制御レジスタである、コンテキスト制御レジスタ１４０では、単一の代替コンテキスト・フィールドが利用可能であり、各グループ（Ａ〜Ｄ）がその同じ代替レジスタ・コンテキストにマップされるように有効にされることが可能である。つまり、グループＡが特定のレジスタ・コンテキストにマップされた場合、グループＣ〜Ｄは、その同じコンテキストにだけマップすることが可能である。ただし、代替の実施形態では、レジスタのそれぞれの別個のグループ（グループＡ〜Ｄのような）が、対応する代替コンテキスト・フィールドを有して、異なる代替レジスタ・コンテキストにマップされることが可能であるようになっていてもよい。あるいは、グループのグループに関して別個の代替コンテキスト・フィールド（例えば、グループＡおよびグループＢに関して１つの代替コンテキスト・フィールド、グループＣおよびグループＤに関して別の代替コンテキスト・フィールド）を使用することが可能である。また、グループは、任意の形で定義することが可能である。例えば、各グループは、４つのより多い、または少ないレジスタを有することが可能であり、各グループが単一のレジスタであること、または各グループが異なる数のレジスタを有することが可能である。また、代替の実施形態では、より多い、またはより少ないグループをより多い、またはより少ない代替コンテキスト・フィールドとともに使用することが可能である。したがって、図６のコンテキスト制御レジスタ１４０は、一例に過ぎない。また、各フィールドは、必要に応じて、より多い、またはより少ないビットを使用してフィールドの値を表すことも可能である。コンテキスト制御１４０は、未使用のビット１、２、１９〜２３、および２８〜３１を含むが、代替の実施形態は、未使用のビットを全く含まないこと、またはコンテキスト制御情報を格納するのに複数のレジスタを要することも可能である。
【００２８】
コンテキスト制御レジスタ１４０のビット２４は、図４と図５の両方に関連して説明したとおり、スタック・ポインタのマッピングを有効にするスタック・ポインタ・コンテキスト・イネーブル・フィールド１５２に対応する。ビット２５〜２７は、スタック・ポインタに関する代替レジスタ・コンテキストを選択するスタック・ポインタ・コンテキスト選択フィールド１５４に対応する。したがって、ビット２４がアサートされた場合、スタック・ポインタは、スタック・ポインタ・コンテキスト選択フィールド１５４によって示されるレジスタ・コンテキストにマップされるが、ビット２４がネゲートされた場合、スタック・ポインタはマップされない（すなわち、現行コンテキスト・フィールド１４６によって定義された現行コンテキストに留まる）。スタック・ポインタ・コンテキスト選択フィールド１５４は、データ処理システム１０内部の８つのレジスタ・コンテキストのいずれがスタック・ポインタに関する代替のコンテキストとして使用されるべきかを示すこ
とが可能な３ビットの値である。例えば、０００という値が、レジスタ・コンテキスト０に対応し、１１１がレジスタ・コンテキスト７に対応することが可能である。したがって、スタック・ポインタ・コンテキスト選択フィールド１５４が００１に設定されている場合、（かつスタック・ポインタ・コンテキスト・イネーブル・フィールド１５２がアサートされた場合）、現在のコンテキストのスタック・ポインタは、レジスタ・コンテキスト１にマップされる。例えば、図４を再び参照すると、レジスタ・コンテキスト２  ７４のコンテキスト制御レジスタのスタック・ポインタ・コンテキスト・イネーブル・フィールドがアサートされ、スタック・ポインタ・コンテキスト選択フィールドが００１に設定されて、スタック・ポインタ・レジスタ８０がレジスタ・コンテキスト１  ７２のスタック・ポインタ・レジスタ７８にマップされることを示す。また、代替の実施形態は、スタック・ポインタの共有を可能にするだけではない他の個々のレジスタのマッピングも可能にするフィールドを含むことが可能であることにも留意されたい。
【００２９】
コンテキスト制御レジスタは、様々な異なる形でプログラミングすることが可能である。例えば、一実施形態では、各コンテキスト制御レジスタを、直接にユーザによってプログラミングすることが可能である。あるいは、コンテキスト制御レジスタは、現在のコンテキスト制御レジスタの代替のコンテキスト・フィールドを使用して間接的にマップされることが可能である。例えば、一実施形態では、電源投入またはリセットの後、データ処理システムは、デフォルトでレジスタ・コンテキスト０になる。次に、代替コンテキスト・フィールドが、いずれのレジスタ・コンテキストのコンテキスト制御レジスタがプログラミングされるかを示す値に設定されることが可能である。例えば、レジスタ・コンテキスト０になっている間、レジスタ・コンテキスト０のコンテキスト制御レジスタの代替コンテキスト・フィールドに２という値を書き込むことにより、専用レジスタを介してレジスタ・コンテキスト２のコンテキスト制御レジスタのプログラミングへのアクセスが可能になる。コンテキスト制御フィールドのすべてがプログラミングされた後、それらのフィールドがすべて同時に有効にされる（単一の共有コンテキスト・イネーブル・フィールドを有するケースでは、そのビットをアサートすることによって行われる）ことが可能である。また、一実施形態では、コンテキスト制御レジスタ群のプログラミング中、割り込み処理をオフにすることが可能である。
【００３０】
コンテキスト制御レジスタ１４０は、特定のフィールドおよびビットの位置に関連して説明してきたことに留意されたい。代替の実施形態は、必要に応じて、より多い、またはより少ないフィールドを含むことが可能であり、各フィールドは、必要に応じて、より多い、またはより少ないビットを含むことが可能であることに留意されたい。また、代替の実施形態では、コンテキスト制御レジスタ群は、データ処理システム１０内部のいずれの場所に配置してもよいし、あるいはデータ処理システム１０の外部に配置してもよい。
【００３１】
かくして、オーバーヘッドのより少ない、柔軟性のあるコンテキスト選択を提供するために、どのようにコンテキスト制御レジスタを使用可能であるかを理解することが可能であろう。データ処理システム１０内部のコンテキスト切り替え時に、新たなレジスタ・コンテキストのコンテキスト制御レジスタが更新される。例えば、新たなレジスタ・コンテキストは、現行コンテキスト・フィールドに書き込まれ、前のコンテキストは、保存済みコンテキスト・フィールドに書き込まれ、新たなレジスタ・コンテキスト内で動作する際に、マッピング・フィールドの中で与えられるレジスタ・マッピングが使用される。レジスタ・マッピングにより、異なるレジスタ・コンテキストがレジスタ値を共有することが可能になる。また、レジスタ・マッピングにより、現在のレジスタ・コンテキストのコンテキスト制御レジスタによって定義される現在のレジスタ・コンテキスト外部の他のレジスタ・コンテキスト群のアクセスも可能になる。また、ユーザがプログラミング可能なコンテキスト制御レジスタ群により、どのようにマッピングを定義するかについて柔軟性が可能になる。したがって、本明細書で説明する本発明の一態様により、代替レジスタ・コ
ンテキストの一部分を現在のレジスタ・コンテキストにマップする（またその逆を行う）柔軟性のある機構が提供され、複数のコンテキストの間で共通のスタック・ポインタの柔軟性のある共有が可能になり、リアルタイム・パフォーマンスの向上がもたらされる。現在のコンテキストの一部分を代替のコンテキストにマップすることにより、動作コンテキスト間で情報値を転送することのオーバーヘッドを除く、またはなくすことが可能になり、パフォーマンスの向上および柔軟性がもたらされる。
【００３２】
以上の明細では、本発明を特定の実施形態に関連して説明した。しかし、添付の特許請求の範囲に記載する本発明の範囲を逸脱することなく、様々な改変および変更を行うことが可能であることが当業者には認められよう。例えば、ブロック図は、例示したブロックとは異なるブロックを有することが可能であり、より多い、またはより少ないブロックを有すること、または異なる形で構成されることも可能である。したがって、本明細書および図は、限定するものではなく、例示するものと考えられるべきであり、すべてのそのような改変形態が本発明の範囲に含まれるものとする。
【００３３】
特定の実施形態に関して、利点、その他の優位点、および問題解決法を説明してきた。しかし、これらの利点、優位点、問題解決法、ならびに何らかの利点、優位点、または問題解決法を生じさせる、またはより顕著し得る要素は、一部または全部の請求項の不可欠な、必要な、または本質的な特徴または要素と解釈すべきではない。本明細書で使用する「からなる（ｃｏｍｐｒｉｓｅｓ）」、「ｃｏｍｐｒｉｓｉｎｇ（からなる）」、またはこの用語の他のあらゆる変化形は、排他的でない包含を範囲に含むものとし、したがって、要素のリストからなるプロセス、方法、物品、または装置は、それらの要素を含むだけでなく、明確にリストアップされていない、またはそのようなプロセス、方法、物品、または装置に固有でない他の要素も含み得る。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施形態によるデータ処理システムを示すブロック図。
【図２】本発明の一実施形態によるプロセッサを示すブロック図。
【図３】本発明の一実施形態によるレジスタ・コンテキストを示す図。
【図４】本発明の様々な実施形態によるレジスタ・コンテキスト内の典型的なマッピングを示す図。
【図５】本発明の様々な実施形態によるレジスタ・コンテキスト内の典型的なマッピングを示す図。
【図１】
0004409427.tif 000002
【図２】
0004409427.tif 000003
【図３】
0004409427.tif 000004
【図４】
0004409427.tif 000005
【図５】
0004409427.tif 000006
【図６】
0004409427.tif 000007