(57)【特許請求の範囲】
【請求項１】
ａ）プロセス・スタックがメモリに格納される３２ビットマイクロプロセッサと、
ｂ）前記３２ビットマイクロプロセッサとバスを介して接続され、プロセス・スタックがレジスタに格納される６４ビットマイクロプロセッサと、
ｃ）前記バスを介して、前記２つのマイクロプロセッサの夫々に接続されたメイン・メモリと、
ｄ）前記２つのマイクロプロセッサのうちのプログラム制御を解放する一方から、獲得する他方に該プログラム制御を転送する手段と、
を含むコンピュータ・システムにおいて、
前記転送する手段が、
前記３２ビットマイクロプロセッサから前記６４ビットマイクロプロセッサに制御が転送される際に、前記３２ビットマイクロプロセッサの制御下への戻りアドレスを前記６４ビットマイクロプロセッサのレジスタに書込む手段と、
前記６４ビットマイクロプロセッサから前記３２ビットマイクロプロセッサに制御が転送される際に、前記６４ビットマイクロプロセッサの制御下への戻りアドレスの上位３２ビットと、下位３２ビットとを、前記３２ビットマイクロプロセッサのプロセス・スタックの所定位置に夫々書込む手段と、
を含むことを特徴とするシステム。
【請求項２】
前記下位３２ビットは、前記３２ビットマイクロプロセッサの制御下における戻りアドレス用スタックに書込まれ、上位３２ビットは基底アドレスのオフセット値用スタックに書込まれることを特徴とする請求項１記載のシステム。
【請求項３】
前記３２ビットマイクロプロセッサの制御下において使用される記述子が、前記２つのマイクロプロセッサのどちらが前記プログラム制御を有するかを示す情報フィールドを含む、請求項１または２に記載のシステム。
【請求項４】
前記情報フィールドが情報の１ビットを含み、前記ビットの状態が前記２つのマイクロプロセッサのどちらが前記プログラム制御を有するかを示す、請求項３記載のシステム。
【請求項５】
前記３２ビットマイクロプロセッサが前記情報フィールドの前記ビット値をメイン・メモリから読取る手段を有し、前記プログラム制御を転送する手段が、該ビット値に基き前記アドレスの上位ビット及び下位ビットをスタックからポップする手段を含む、請求項１〜４のいずれか１項記載のシステム。
【請求項６】
前記プログラム制御を転送する手段が、前記上位ビット及び下位ビットを連結して６４ビット・アドレスを形成する手段をさらに含む、請求項５記載のシステム。
【請求項７】
前記６４ビットマイクロプロセッサ・アーキテクチャのアドレス範囲が、前記第１のマイクロプロセッサ・アーキテクチャのアドレス範囲より大きい、請求項１〜６のいずれか１項記載のシステム。
【請求項８】
前記６４ビットマイクロプロセッサが、前記３２ビットマイクロプロセッサ・アーキテクチャをエミュレートする手段を更に含む、請求項１〜７のいずれか１項記載のシステム。
【請求項９】
前記３２ビットマイクロプロセッサがＣＩＳＣプロセッサである、請求項１〜８のいずれか１項記載のシステム。
【請求項１０】
前記６４ビットマイクロプロセッサがＲＩＳＣプロセッサである、請求項１〜９のいずれか１項記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータ・システムの制御転送に関し、特に２つの異なるコンピュータ・アーキテクチャ間におけるコンピュータ・システムの制御転送に関する。
【０００２】
【従来の技術】
最新のコンピュータ・アーキテクチャの多くは、一般に旧式のコンピュータ・アーキテクチャよりも大きな処理能力を実現している。たとえば、ＲＩＳＣプロセッサ・アーキテクチャを例にとると、Ｘ８６（商標）  ＣＩＳＣアーキテクチャを含むＣＩＳＣプロセッサ・アーキテクチャに対して明確な性能優越性を有する実施形態を生み出した。しかしながら、Ｘ８６アーキテクチャなどの旧式のアーキテクチャのために開発された膨大な量のソフトウェアは、市場の新たなプロセッサの導入に対して大きな障害となり、このソフトウェア・ベースを新たなアーキテクチャへ移行させるには莫大な時間と資金を要し、危険性が伴う。多数のＲＩＳＣプロセッサ及びシステムのベンダーは、ソフトウェアのＸ８６アーキテクチャをエミュレートして、Ｘ８６遺産のソフトウェアを現行製品に移行させようとしている。
【０００３】
ソフトウェア・エミュレーション技法においては重大な２つの欠点がある。１）ソフトウェア・エミュレーションはエミュレータ及びエミュレートされたプログラムを保持するのに必要なメモリにかなりの投資を必要とし、２）ソフトウェア・エミュレーションは本質的に速度が遅い。現在のソフトウェア・エミュレーション技術は、前の世代のＸ８６プロセッサのロー・エンド並の性能しか発揮せず、一般に１６メガバイトの物理的メモリを必要とする。
【０００４】
ソフトウェア・エミュレーションにおける速度の問題に対する解決策の１つは、２つ以上のマイクロコントローラを並列処理で使用することである。米国特許番号第４３７０７０９号”Ｃｏｍｐｕｔｅｒ  Ｅｍｕｌａｔｏｒ  Ｗｉｔｈ  Ｔｈｒｅｅ  Ｓｅｇｍｅｎｔ  Ｍｉｃｒｏｃｏｄｅ  Ｍｅｍｏｒｙ  Ａｎｄ  Ｔｗｏ  Ｓｅｐａｒａｔｅ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒｓ  Ｆｏｒ  Ｏｐｅｒａｎｄ  Ｄｅｒｉｖａｔｉｏｎ  Ａｎｄ  Ｅｘｅｃｕｔｉｏｎ  Ｐｈａｓｅｓ”（１９８３年１月、Ｆｏｓｄｉｃｋに付与、Ｔｒａｃｏｒ  Ｉｎｃ．に譲渡）で開示される複数の内蔵型マイクロコントローラは、マクロ命令を２つのフェーズに分類することによって、より大きなマクロコントローラ命令をエミュレートする。１つのマイクロコントローラがマクロ命令を２つのフェーズに分類し、それから代行して２つの他のマイクロコントローラを制御して２つのフェーズのそれぞれを操作する。しかしながら、このシステムは、大型のコンピュータ・ハードウェアを必要とし、エミュレーション・プログラム及びエミュレータのために物理的なメモリにかなりの投資が必要とされるため、非常に高価である。
【０００５】
複数のアーキテクチャ間のソフトウェア・プログラムの変換或いはエミュレーションをサポートする処理システムの他の例では米国特許番号第５２８０５８９号”Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ  Ｆｏｒ  Ｕｓｅ  Ｗｉｔｈ  Ａｓ  Ｒｅｌａｔｉｖｅｌｙ  Ｓｍａｌｌ  Ｓｉｚｅ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ”（１９９４年１月発行、株式会社東芝に譲渡）、同第４５１４８０３号”Ｍｅｔｈｏｄｓ  Ｆｏｒ  Ｐａｒｔｉｔｉｏｎｉｎｇ  Ｍａｉｎｆｒａｍｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔｓ  Ｔｏ  Ｉｍｐｌｅｍｅｎｔ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｂａｓｅｄ  Ｅｍｕｌａｔｉｏｎ  Ｔｈｅｒｅｏｆ”（１９８５年４月発行、ＩＢＭに譲渡）、同第５２４７５２０号”Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｎｔｅｒｆａｃｅ”（１９９３年９月発行、ＩＢＭに譲渡）等がある。上述の全特許が本発明に関連しているので参照されたい。
【０００６】
上述の開示されたコンピュータ・システムは、異なるアーキテクチャ間においてある種の通信が可能であるが、異なるワード長を有するアーキテクチャ間では通信はできない。PowerPC（商標）とＸ８６の場合、Ｘ８６アーキテクチャは現在３２ビット・アーキテクチャとして定義されており、一方PowerPCは３２ビット及び６４ビット・アーキテクチャの両方である。このことは、完全な制御転送を容易にするために３２ビットＸ８６コードを６４ビットPowerPC空間に戻すことができなければならないことを意味する。更に、上述の特許群は、内部または外部メモリの実質的使用を必要とし、これによりプロセッサの処理速度が遅くなる。特にＸ８６の互換性は、パラメータ及びプロセス戻り情報の転送のために、一般にメモリでプロセス・スタックが必要となる。プロセス・スタックの使用は、データをメモリに格納したり、またメモリからロードする必要があるため、しばしば処理が遅くなり、性能を落とすことになる。
【０００７】
【発明が解決しようとする課題】
従って本発明の目的は、異なるワード長及び連係方法（すなわちパラメータ、スタック・ポインタ及び戻りアドレスを送信する方法）を有するプロセッサ・アーキテクチャ間で、プログラム制御転送ができるコンピュータ・システムを提供することである。
【０００８】
本発明の別の目的は、パラメータ及びプロセス戻り情報を転送するためにメモリ内でプロセス・スタックの使用を必要としないコンピュータ・システムを提供することである。
【０００９】
本発明の別の目的は、制御転送に使用されるＸ８６アプリケーション或いは他の同様なアプリケーションに対して逆方向の互換性を提供することである。
【００１０】
【課題を解決するための手段】
前述の及び本発明の他の目的は、複数のアーキテクチャ間においてプログラム制御を転送するマイクロプロセッサによって実現され、例えばＲＩＳＣとＸ８６ＣＩＳＣにおいて、記述子テーブル・エントリの１ビットを使用することにより、ターゲット戻りセグメントが第１のアーキテクチャまたは第２のアーキテクチャからのソフトウェアを含んでいるかどうかを示すことができる。第１のアーキテクチャの連係方法に使用されたが第２のアーキテクチャによって事前に指定されなかったレジスタを、第２のアーキテクチャによって使用して過剰のワード・ビットを保持することにより、両方のアーキテクチャが異なるワード長を使用できるようにする。更に、呼び出しプログラムのスタック・ポインタ及び戻りアドレスはメモリではなくレジスタに残され、そのため制御転送の性能が改良される。
【００１１】
【発明の実施の形態】
図１を参照すると、本発明のコンピュータ・システムの概要が示されている。中央処理ユニット（ＣＰＵ）１はバス３を介してメイン・メモリ２と通信する。制御の転送中、ＣＰＵ１はメイン・メモリ２と要素の読出しまたは書込みを行い、或いは後で説明するレジスタ９と読出しまたは書込みを実行する。ＣＰＵ１は、バス及びキャッシュ・ユニット４、実行ユニット１１、命令エミュレーション・ユニット５、及び命令ディスパッチ及び完了ユニット８を有する。命令エミュレーション・ユニット５は適切な位置で命令を取り出すための命令フェッチ・ブロック６、及び命令がデコードされる命令デコード・ブロック７を有する。レジスタ９と命令ディスパッチ・ブロック１０は命令ディスパッチ及び完了ユニット８を形成する。
【００１２】
また、バス３はＣＰＵ１を第２のＣＰＵに接続する。第２のＣＰＵアーキテクチャは第１のＣＰＵアーキテクチャとは異なるワード長、及び（または）パラメータ、スタック・ポインタ及び戻りアドレスの送信を含む異なる方法の呼び出しプログラムを有する。プロセッサ間にはマスタ／スレーブ関係が存在する。
【００１３】
図５乃至図７はＸ８６アーキテクチャがどのようにインターレベル制御転送中、及びその前後においてプロセス・スタックの構造を指定するかを示す。特定の参照がＩＢＭのＰｏｗｅｒＰＣ  ＲＩＳＣ及びＸ８６  ＣＩＳＣプロセッサ・アーキテクチャに対して行われるが、当業者は２つのアーキテクチャ・プロセッサを設計する場合、本発明がこれらの特定の詳細及び他のプロセッサ・アーキテクチャなしで実行できることは当業者には容易に理解できよう。
【００１４】
制御転送が行われる前に、図５で示されるように呼び出しプログラムはパラメータ（最大３２バイトまで）をそのプロセス・スタックに置くことになる。このスタックの位置はスタック・ポインタＳＳ．ＥＳＰによって指定される。ここでＳＳはスタック・セレクタ・レジスタであり、ＥＳＰはスタックの基底アドレスからスタックまでのオフセットを保持するレジスタである。スタックの基底アドレスはセレクタＳＳによって参照されるスタックの記述子に含まれる。
【００１５】
図６で示されるように、Ｘ８６プログラムが他のＸ８６プログラムを呼び出す場合、幾つかの項目が呼び出されたプログラムのスタックにプッシュされる。最初に呼び出しプログラムのスタック・ポインタ（ＳＳ．ＥＳＰ）が新たなスタックにプッシュされ、古いスタックからのパラメータが引き続く。最後に、呼び出しプログラムの戻りアドレス（ＣＳ．ＥＩＰ）がスタックにプッシュされる。ＣＳはコード・セレクタ・レジスタであり、ＥＩＰはコード・セグメント基底アドレスからのオフセットをコード・セグメントに保持するレジスタである。基底アドレスはコード記述子に含まれ、セレクタＣＳによって参照される。ＳＳ．ＥＳＰレジスタは新たなスタックの位置によって更新され、及びＣＳ．ＥＩＰレジスタは呼び出されたプログラムのアドレスによって更新されることに注意されたい。
【００１６】
呼び出されたプログラムが呼び出し側に戻される場合、古いＣＳ．ＥＩＰの値は新たなスタックからポップオフされ、戻りアドレスによってＣＳ．ＥＩＰレジスタを更新するのに使用される。古いＳＳ．ＥＳＰ値はまた、新たなスタックからポップオフされ、最初に呼び出されたときのパラメータとして送信されたバイト数だけ減らされて、ＳＳ．ＥＳＰレジスタを更新するのに使用される。図７は、戻り後の古いスタックの最終状態を示す。
【００１７】
この形態のパラメータ、スタック・ポインタ、及び戻りアドレスを送信するプロセスは、まとめてＸ８６連係方法またはＸ８６連係規則と呼ぶことができる。
【００１８】
ＰｏｗｅｒＰＣアーキテクチャは、プログラム制御転送において連係規則を明白に指定しないので、あるオペレーティング・システムは、仕事を遂行するのに必要な最適なものとして任意の規則を指定する可能性がある。しかしながら、人工遺物として、ＰｏｗｅｒＰＣからＸ８６への制御転送には、呼び出しＰｏｗｅｒＰＣプログラムがＸ８６連係規則に従う必要がある。従ってそのような呼び出しは、古いスタックの存在に関係無く、直接呼び出されたＸ８６プログラムにプロセス・スタックを構築するためにＰｏｗｅｒＰＣプログラムを必要とする。技術的に、古いスタック・ポインタ（ＳＳ．ＥＳＰ）は新たなプロセス・スタック内に置く必要はない。これはＰｏｗｅｒＰＣアーキテクチャはＳＳまたはＥＳＰレジスタを指定しないからである。
【００１９】
古いＳＳ．ＥＳＰ値は、ＰｏｗｅｒＰＣ呼び出しの場合スタックに置く必要はないので、本発明ではその位置の目的を再指定し、３２ビットのＸ８６ソフトウェアから６４ビットのアドレス空間に戻る問題を解決する。再び図１を参照すると、呼び出しがＰｏｗｅｒＰＣコードからＸ８６コードに行われる場合、ＰｏｗｅｒＰＣコードは６４ビットの戻りアドレスの上位３２ビットを、Ｘ８６とＸ８６間の制御転送の古いＥＳＰ用の予約位置に置く。戻りアドレスの下位３２ビットは、古いＥＩＰ位置に置かれる。これらのアドレス要素は、ＣＰＵとメモリ間のバス３を介してスタックに置かれる。Ｘ８６プログラムがＰｏｗｅｒＰＣプログラムに戻る場合、プロセッサ・ハードウェアは、Ｘ８６プロセス・スタックの位置から再びバス３を介して戻りアドレスの上位及び下位をポップすることになる。バス・ユニット４は２つの要素を命令エミュレーション・ユニット５に転送し、ここでその２つの要素を連結して単一の６４ビット・アドレスを形成する。この６４ビット・アドレスは命令フェッチ・ブロック６によって使用されて新たな位置で命令を取り出し始め、効果的に制御をＰｏｗｅｒＰＣプログラムに転送して戻す。
【００２０】
図８はPowerPCプログラムがＸ８６プログラムを呼び出した後の再指定されたプロセス・スタック（呼び出し後の"新たな"スタック）を示す。
【００２１】
上述したように本発明において、プロセッサ・ハードウェアは、２つのメカニズムのうちのどちらを使用するかを、Ｘ８６プログラムから呼び出しプログラムに戻る際に決めねばならない。実質的には、戻りプログラムがＰｏｗｅｒＰＣかＸ８６かであるかはソフトウェアによって告げられる。これはハードウェアがプログラムの戻りを実行する際に古いＣＳセレクタ及び関連する記述子テーブル・エントリを調べることによって行われる。このようにＸ８６アーキテクチャは、ＣＳセレクタがプロセス・スタックから読出される際、古いＣＳセレクタ値がプロセッサによってロードされたメイン・メモリの記述子を参照して知ることができる。記述子テーブル・エントリは、ＣＳセレクタによって参照されたメモリのセグメントについての情報を有する。この記述子エントリの１ビット、特に記述子の上位４バイト（ダブルワード）のビット位置２１は、３２ビットＸ８６アーキテクチャによって指定されないまま残る。本発明では、上位のダブルワードのビット位置２１を、ターゲット戻りセグメントが標準のＸ８６ソフトウェア（この時のビットは０）か、またはＰｏｗｅｒＰＣソフトウェア（この時のビットは１）であるかどうかを示すものと定義する。ビット位置２１は以降、制御転送モード・ビットとして示される。図９、図１０及び図１１は、Ｘ８６アーキテクチャの３つの基本セグメント記述子、すなわち、データ・セグメント記述子、コード・セグメント記述子、及びシステムセグメント記述子のレイアウトを示す図である。また制御転送モード・ビット位置２１も示されている。
【００２２】
従って、Ｘ８６の戻りにより、メイン・メモリにある関連する記述子を読取るのと同様に、プロセッサ・ハードウェアがメイン・メモリのプロセス・スタックから古いＣＳセレクタ値を読取る。命令エミュレーション・ユニット５（図１参照）は、発生した制御転送の形態を確かめるために、新たに指定された制御転送モード・ビットを調べる。制御転送モード・ビットが０であれば標準Ｘ８６制御戻りが生じている。制御転送モード・ビットが１であれば、戻りＰｏｗｅｒＰＣアドレスの上位及び下位の３２ビットはプロセス・スタックから読取られ、フル６４ビットの戻りアドレスを形成する。それから制御はこのアドレスにある命令に転送される。
【００２３】
この本発明の第２の態様は、Ｘ８６プログラムからＰｏｗｅｒＰＣプログラムへの制御転送に関する。ＰｏｗｅｒＰＣアーキテクチャは固定された連係規則を指定しないので、Ｘ８６アーキテクチャの連係規則にも制限されない。Ｘ８６プロセス・スタックはＰｏｗｅｒＰＣプログラムに送信されるパラメータを有するが、パラメータ及び古いＳＳ．ＥＳＰ及びＣＳ．ＥＩＰ値を有するＰｏｗｅｒＰＣプログラムに対して新たなスタックを構築する必要はない。実際にこれらの値を、メモリに書込むのではなくプロセッサ・レジスタに直接残すことにより、Ｘ８６からＰｏｗｅｒＰＣへの呼び出し性能は改良することができる。ＰｏｗｅｒＰＣからＸ８６への戻りは、戻りアドレスを最初にメモリから読取るよりも、レジスタに保持しレジスタの戻りアドレスに直接分岐することによって改良できる。
【００２４】
従って、本発明の第２の態様は、呼び出しＸ８６プログラムのスタック・ポインタ及び戻りアドレスをメモリではなくレジスタに置くことである。これは呼び出されたプログラムのアーキテクチャ、この場合ＰｏｗｅｒＰＣであるが、Ｘ８６アーキテクチャの連係制限に拘束されないからである。プロセッサはＸ８６とＸ８６間の制御転送と、Ｘ８６とＰｏｗｅｒＰＣ間の制御転送とを識別できなければならない。この識別は、転送（Ｘ８６のジャンプまたは呼び出し）を開始するときに使用される命令により参照されるゲート記述子をプロセッサが調べることによって達成される。このようにＸ８６アーキテクチャは、ゲート記述子が、ターゲット・コード・セグメントを指すセレクタを保持することがわかる。命令エミュレーション・ユニットは、ゲート記述子のセレクタによって参照されたコード・セグメント記述子を読取るが、これらの両方はメイン・メモリにある。コード・セグメント記述子は命令エミュレーション・ユニットによって読取られた後、制御転送モード・ビットを参照して次に発生する転送の種類を決める。制御転送モード・ビットが０の場合、通常の制御転送が発生する。制御転送モード・ビットが１の場合、ＰｏｗｅｒＰＣコードへの転送が生じ、戻りアドレス及び古いスタック・ポインタはメモリではなくプロセッサ・レジスタに残る。この実施形態でこれらの値を保持するために指定されるレジスタが図１２に示されている。
【００２５】
本発明は、特に好適な実施例に対して図示、説明されたが、当業者は本発明の趣旨、及び範囲内で形状及び詳細を様々に変更できることが理解できよう。
【００２６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００２７】
（１）ａ）第１のマイクロプロセッサ・アーキテクチャと、
ｂ）前記第１のマイクロプロセッサ・アーキテクチャとは異なる第２のマイクロプロセッサ・アーキテクチャと、
ｃ）前記第１及び第２のマイクロプロセッサ・アーキテクチャの、プログラム制御を解放する一方から獲得する他方に該プログラム制御を転送する手段と、
を含み、前記プログラム制御を転送する手段が、該プログラム制御を解放するマイクロプロセッサ・アーキテクチャから情報を受け取り、該プログラム制御を獲得するマイクロプロセッサ・アーキテクチャに前記情報を提供する、マイクロプロセッサ。
（２）前記プログラム制御を転送する手段が、前記プログラム制御を獲得する前記マイクロプロセッサ・アーキテクチャが前記プログラム制御を解放する前記マイクロプロセッサ・アーキテクチャからのデータをメモリに必要としない場合、レジスタに該データを保持する手段を含む、前記（１）記載のマイクロプロセッサ。
（３）前記データを保持する手段が、前記プログラム制御を解放する前記マイクロプロセッサ・アーキテクチャの基底アドレスのオフセットを含む、前記（２）記載のマイクロプロセッサ。
（４）前記第２のマイクロプロセッサ・アーキテクチャが、前記第１のマイクロプロセッサ・アーキテクチャをエミュレートする手段を更に含む、前記（１）記載のマイクロプロセッサ。
（５）前記プログラム制御を転送する手段は、前記第１及び第２のマイクロプロセッサ・アーキテクチャのどちらが前記プログラム制御を有するかを示す情報フィールドを含む、前記（１）記載のマイクロプロセッサ。
（６）外部メモリにある前記情報フィールドが、バスによって前記マイクロプロセッサに転送される、前記（５）記載のマイクロプロセッサ。
（７）前記情報フィールドが情報の１ビットを含み、前記ビットの状態が、前記第１及び第２のマイクロプロセッサ・アーキテクチャのどちらが前記プログラム制御を有するかを示す、前記（５）記載のマイクロプロセッサ。
（８）前記第２のマイクロプロセッサ・アーキテクチャのアドレス範囲が、前記第１のマイクロプロセッサ・アーキテクチャのアドレス範囲より大きい、前記（１）記載のマイクロプロセッサ。
（９）前記第１のマイクロプロセッサ・アーキテクチャはＸ８６  ＣＩＳＣアーキテクチャである、前記（１）記載のマイクロプロセッサ。
（１０）前記第２のマイクロプロセッサ・アーキテクチャはＰｏｗｅｒＰＣ  ＲＩＳＣアーキテクチャである、前記（１）記載のマイクロプロセッサ。
（１１）第１及び第２のプロセッサ・アーキテクチャ間でプログラム制御を転送する方法であって、
ａ）前記第１のプロセッサ・アーキテクチャに対応する第１のプログラムを与えるステップと、
ｂ）前記第２のプロセッサ・アーキテクチャに対応する第２のプログラムを与えるステップと、
ｃ）前記第１及び第２のプロセッサ・アーキテクチャを示す複数の状態を有する制御転送モード手段を与えるステップと、
ｄ）次に実行される命令を有する前記プログラムに対応するプロセッサ・アーキテクチャを示す前記複数の状態の１つに、前記制御転送モード手段を設定するステップと、
ｅ）制御転送データをメイン・メモリまたはハードウェア・レジスタのどちらに送信するかを決めるために、前記制御転送モード手段の状態を使用するステップと、
ｆ）前記制御転送モード手段の状態に従って、前記第１及び第２のプログラム間で制御転送データを送信するステップと、
を有する方法。
（１２）前記制御転送モード手段は、情報の単一ビットの値にもとづいて前記第１及び第２のプロセッサ・アーキテクチャを示す、前記（１１）記載の方法。
（１３）前記第１のプロセッサ・アーキテクチャのアドレス範囲が前記第２のプロセッサ・アーキテクチャのアドレス範囲より小さい、前記（１１）記載の方法。
（１４）マイクロプロセッサ、及び外部バスで前記マイクロプロセッサに接続されている外部メモリを有するマイクロプロセッサ・システムの第１及び第２のプロセッサ・アーキテクチャ間にてプログラム制御を転送する方法であって、前記マイクロプロセッサは、前記外部メモリ、レジスタ及び実行ユニット間で接続されるバス及びキャッシュ・ユニットを有し、前記マイクロプロセッサは、自身が操作する前記レジスタにプロセス・スタックを格納するように構成され、前記方法は、
ａ）制御転送モード手段にて、前記第２のプロセッサ・アーキテクチャから前記第１のプロセッサ・アーキテクチャへの前記プログラム制御の転送を示すステップと、
ｂ）保持手段において前記第２のプロセッサ・アーキテクチャに関するデータを保持するステップと、
ｃ）前記プログラム制御を前記第２のプロセッサ・アーキテクチャから前記第１のプロセッサ・アーキテクチャに転送するステップと、
ｄ）前記第２のプロセッサ・アーキテクチャに関するデータを、前記プログラム制御の転送の際に前記保持手段から前記第２のプロセッサ・アーキテクチャに戻すステップと、
を含む方法。
（１５）ｅ）前記制御転送モード手段を、前記外部バスを介して前記外部メモリに適用するステップと、
を含む、前記（１４）記載の方法。
（１６）前記プログラム制御を前記第２のプロセッサ・アーキテクチャから前記第１のプロセッサ・アーキテクチャに転送するステップが、
ｃ１）プログラムのアーキテクチャに従って、前記制御転送モード手段の状態を設定するステップと、
ｃ２）制御転送データが外部メモリまたはハードウェア・レジスタのどちらに送信されるかを決めるために前記制御転送モード手段の状態を使用するステップと、
ｃ３）前記制御転送手段の前記状態に従って、プログラム間で制御転送データを送信するステップと、
を含む、前記（１４）記載の方法。
（１７）前記制御転送モード手段が情報の１ビットで前記プログラム制御の転送を示す、前記（１４）記載の方法。
（１８）前記第１のプロセッサ・アーキテクチャのアドレス範囲が前記第２のプロセッサ・アーキテクチャのアドレス範囲より小さい、前記（１４）記載の方法。
（１９）前記プログラム制御転送手段が前記第１のプロセッサ・アーキテクチャから前記第２のプロセッサ・アーキテクチャへの前記プログラム制御転送を示す場合、前記保持手段に前記第１のプロセッサ・アーキテクチャの基底アドレスのオフセットを保持するステップと、
前記プログラム制御転送手段が前記第２のプロセッサ・アーキテクチャから前記第１のプロセッサ・アーキテクチャへの前記プログラム制御転送を示す場合、前記保持手段に前記第２のプロセッサ・アーキテクチャのアドレス・ビットを保持するステップと、
を更に含む、前記（１４）記載の方法。
（２０）マイクロプロセッサと外部メモリとを有するマイクロプロセッサ・システムであって、前記マイクロプロセッサは、前記外部メモリ、レジスタ及び実行ユニット間で接続されるバス及びキャッシュ・ユニットとを有し、前記マイクロプロセッサは、自身が操作する前記レジスタにプロセス・スタックを格納するように構成され、前記マイクロプロセッサ・システムは、
ａ）第１の連係方法に従って第１の連係データを格納するように構成される第１のマイクロプロセッサ・アーキテクチャと、
ｂ）第２の連係方法に従って第２の連係データを格納するように構成される第２のマイクロプロセッサ・アーキテクチャと、
ｃ）前記第１の連係データを前記第２の連係データに変換する手段と、
を有する、マイクロプロセッサ・システム。
（２１）前記第２の連係データを前記第１の連係データに変換する手段を更に含む、前記（２０）記載のマイクロプロセッサ・システム。
（２２）前記連係データが第１及び第２のマイクロプロセッサ・アーキテクチャの一方によってメモリに記憶されることが必要ない場合、前記第１及び第２のマイクロプロセッサ・アーキテクチャの他方からの前記連係データをレジスタに保持する手段を更に含む、前記（２０）記載のマイクロプロセッサ・システム。
（２３）前記第２のマイクロプロセッサ・アーキテクチャは前記第１の連係方法をエミュレートする方法を更に含む、前記（２０）記載のマイクロプロセッサ・システム。
（２４）プログラム制御を転送する手段を含み、前記転送する手段が制御転送モード・フィールドを含み、前記フィールドが、前記第１及び第２のプロセッサ・アーキテクチャのどちらが前記プログラム制御を有するかを示す、前記（２０）記載のマイクロプロセッサ・システム。
（２５）前記制御転送モード・フィールドは、前記マイクロプロセッサにより外部バスを介して前記外部メモリに書込まれる、前記（２４）記載のマイクロプロセッサ・システム。
（２６）前記制御転送モード・フィールドが情報の１ビットを含み、前記１ビットが、どのアーキテクチャが前記プログラム制御を有するかを示す、前記（２４）記載のマイクロプロセッサ・システム。
（２７）前記第２のマイクロプロセッサ・アーキテクチャのアドレス範囲が、前記第１のマイクロプロセッサ・アーキテクチャのアドレス範囲より大きい、前記（２０）記載のマイクロプロセッサ・システム。
（２８）前記第１のマイクロプロセッサ・アーキテクチャがＸ８６  ＣＩＳＣアーキテクチャである、前記（２０）記載のマイクロプロセッサ・システム。
（２９）前記第２のマイクロプロセッサ・アーキテクチャがＰｏｗｅｒＰＣ  ＲＩＳＣアーキテクチャである、前記（２０）記載のマイクロプロセッサ・システム。
（３０）複数のマイクロプロセッサ及びメイン・メモリを有するマイクロプロセッサ・システムであって、前記マイクロプロセッサは、前記メイン・メモリ、レジスタ及び実行ユニット間で接続されるバス及びキャッシュ・ユニットを有し、自身が操作する前記レジスタにプロセス・スタックを格納するように構成され、前記マイクロプロセッサ・システムは、
ａ）第１のマイクロプロセッサ・アーキテクチャと、
ｂ）第２のマイクロプロセッサ・アーキテクチャと、
ｃ）前記第１及び第２のプロセッサ・アーキテクチャの、プログラム制御を解放する一方から獲得する他方に前記プログラム制御を転送する記憶手段と、
を含み、前記記憶手段が、前記プログラム制御を解放するプロセッサ・アーキテクチャからの情報を有し、該情報が、前記プログラム制御を獲得するプロセッサ・アーキテクチャによりアクセスされ得る、前記マイクロプロセッサ・システム。
（３１）前記記憶手段は、前記プログラム制御を獲得する前記プロセッサ・アーキテクチャによって前記情報がメモリに記憶されることを必要としない場合、少くとも１つのレジスタに前記情報を記憶する、前記（３０）記載のマイクロプロセッサ・システム。
（３２）前記第２のアーキテクチャが前記第１のアーキテクチャをエミュレートする手段を更に有する、前記（３０）記載のマイクロプロセッサ・システム。
（３３）前記記憶手段は、前記第１及び第２のマイクロプロセッサ・アーキテクチャのどちらが前記プログラム制御を有するかを示す制御転送モード・フィールドを有する、前記（３０）記載のマイクロプロセッサ・システム。
（３４）前記メイン・メモリにある前記制御転送モード・フィールドが、前記複数のマイクロプロセッサの１つに転送される、前記（３３）記載のマイクロプロセッサ・システム。
（３５）前記制御転送モード・フィールドが情報の１ビットを含み、前記１ビットが、どのアーキテクチャがプログラム制御を有するかを示す、前記（３３）記載のマイクロプロセッサ・システム。
（３６）前記第２のマイクロプロセッサ・アーキテクチャのアドレス範囲が、前記第１のマイクロプロセッサ・アーキテクチャのアドレス範囲より大きい、前記（３０）記載のマイクロプロセッサ・システム。
（３７）前記第１のマイクロプロセッサ・アーキテクチャがＸ８６  ＣＩＳＣアーキテクチャである、前記（３０）記載のマイクロプロセッサ・システム。
（３８）前記第２のマイクロプロセッサ・アーキテクチャがＰｏｗｅｒＰＣ  ＲＩＳＣアーキテクチャである、前記（３０）記載のマイクロプロセッサ・システム。
【図面の簡単な説明】
【図１】本発明のコンピュータ・システムを示すブロック図である。
【図２】本発明のバスに接続された異なるアーキテクチャのＣＰＵを示す図である。
【図３】従来技術のシステム概念図である。
【図４】本発明のシステム概念図である。
【図５】本発明のプロセス・スタックを示す図である。
【図６】本発明のプロセス・スタックを示す図である。
【図７】本発明のプロセス・スタックを示す図である。
【図８】本発明の再指定されたプロセス・スタックを説明する図である。
【図９】本発明の識別情報を示す図である。
【図１０】本発明の識別情報を示す図である。
【図１１】本発明の識別情報を示す図である。
【図１２】本発明のレジスタを示す図である。
【図１３】スタックの位置とレジスタの関係を示す図である。
【符号の説明】
１  ＣＰＵ
２  メイン・メモリ
３  バス
４  バス及びキャッシュ・ユニット
５  命令エミュレーション・ユニット
６  命令フェッチ・ブロック
７  命令デコード・ブロック
８  命令ディスパッチ及び完了ユニット
９  レジスタ
１０  命令ディスパッチ・ブロック
１１  実行ユニット
【図１】
0003552443.tif 000002
【図２】
0003552443.tif 000003
【図３】
0003552443.tif 000004
【図４】
0003552443.tif 000005
【図５】
0003552443.tif 000006
【図６】
0003552443.tif 000007
【図７】
0003552443.tif 000008
【図８】
0003552443.tif 000009
【図９】
0003552443.tif 000010
【図１０】
0003552443.tif 000011
【図１１】
0003552443.tif 000012
【図１２】
0003552443.tif 000013
【図１３】
0003552443.tif 000014