(57)【要約】  異なる命令セットからの命令を復号することができる、データ処理装置、方法、およびコンピュータプログラムが記載される。本方法は、命令を受信することと、前記命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、前記基本的な命令のセットの復号規則によって前記命令を復号することと、前記命令の前記オペレーションコードが少なくとも１つのさらなる命令のセットからの命令のオペレーションコードである場合、前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって前記命令を復号することとを含む。
2013539883.tif 000002
【特許請求の範囲】
【請求項１】
命令を復号するための命令復号器と、
命令復号器によって復号される命令に応じてデータを処理するためのプロセッサと、を備え、
前記命令復号器は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、
前記基本命令セットは、それぞれの命令が前記命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、前記少なくとも１つのさらなる命令セットは、それぞれの命令が前記少なくとも１つのさらなる命令セット内に前記命令を識別するためのオペレーションコードを含む、複数の命令を含み、
前記命令復号器は、基本的な復号規則のセットによって、前記複数の定義済みのオペレーションコードのうちの１つを有する命令を復号し、
かつ前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって、前記少なくとも１つのさらなる命令セットの前記オペレーションコードのうちの１つを有する命令を復号するように構成される、データ処理装置。
【請求項２】
前記命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも２つのさらなる命令セットを復号するように構成される、請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理装置は、前記インジケータ値を記憶するための状態レジスタを備える、請求項１または２のいずれか１項に記載のデータ処理装置。
【請求項４】
前記命令復号器は、前記基本的な命令のセットからの命令である、命令セット更新命令に応じて、前記状態レジスタ内に記憶された前記インジケータ値を前記命令内で指定された値に設定する、請求項３に記載のデータ処理装置。
【請求項５】
前記プロセッサは、前記プログラムストリームが分岐するべきであることを示す分岐命令に応じて、戻りアドレスおよび前記インジケータ値を、前記分岐から戻ると、前記戻りアドレスおよびインジケータ値を復元することができるように、記憶するように構成される、請求項１〜４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記データ処理装置が前記分岐前に前記インジケータ値をリセットするように構成される、請求項５に記載のデータ処理装置。
【請求項７】
前記戻りアドレスおよびインジケータ値が同一のリンクレジスタ内に記憶される、請求項５に記載のデータ処理装置。
【請求項８】
前記リンクレジスタの前記上位有効ビットが前記インジケータ値を記憶し、前記下位有効ビットが前記戻りアドレスを記憶する、請求項７に記載のデータ処理装置。
【請求項９】
前記戻りアドレスおよびインジケータ値は、前記分岐に応じてスタックに記憶され、前記分岐から戻ると、前記スタックから読み出される、請求項７に記載のデータ処理装置。
【請求項１０】
前記命令復号器は、前記少なくとも１つのさらなる命令セットのうちの１つを示す前記インジケータ、および前記少なくとも１つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する、請求項１〜９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記命令復号器は、前記命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する前記インジケータ値を検出することに応じて、例外を生成する、請求項１〜１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記基本的な命令のセット内の命令の前記定義済みのオペレーションコードは、所定の基本符号化空間内にあり、前記少なくとも１つのさらなる命令セットの前記オペレーションコードは、所定の拡張符号化空間内にある、請求項１〜１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
複数の異なるインジケータ値が前記少なくとも１つのさらなる命令セットのうちの１つを識別する、請求項１〜１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
異なる命令セットから命令を復号する方法であって、
命令を受信することと、
前記命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、前記基本的な命令のセットの復号規則によって前記命令を復号することと、
前記命令の前記オペレーションコードが少なくとも１つのさらなる命令のセットからの命令のオペレーションコードである場合、前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、前記命令を復号することと、を含む、方法。
【請求項１５】
請求項１４に記載の異なる命令セットからの命令を復号し、かつ前記復号された命令を処理する方法であって、命令セット更新命令の受信に応じて、
前記基本的な命令のセットの復号規則によって前記命令を復号するステップと、
前記復号された命令セット更新命令に応じて、前記状態レジスタ内の前記インジケータ値を前記復号された命令によって示された値に設定するステップと、
を実施することを含む、方法。
【請求項１６】
前記プログラムストリームが分岐するべきであることを示す分岐命令の受信に応じて、
戻りアドレスおよび前記インジケータの現在の値を、前記分岐から戻ると、前記戻りアドレスおよびインジケータ値を復元することができるように、記憶する、請求項１４または１５に記載の方法。
【請求項１７】
前記戻りアドレスおよびインジケータ値を記憶する前記ステップは、同一のリンクレジスタ内に前記値を記憶することを含む、請求項１６に記載の方法。
【請求項１８】
前記戻りアドレスおよびインジケータ値を記憶する前記ステップは、前記値をスタックに記憶することと、分岐命令からの戻りに応じて、前記スタックから前記値を読み出すこととを含む、請求項１６に記載の方法。
【請求項１９】
前記少なくとも１つのさらなる命令セットのうちの１つを示す前記インジケータ、および前記少なくとも１つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成するステップを含む、請求項１４〜１８のいずれか１項に記載の方法。
【請求項２０】
前記命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する前記インジケータ値を検出することに応じて、例外を生成するステップを含む、請求項１４〜１９のいずれか１項に記載の方法。
【請求項２１】
データ処理装置上で実行するコンピュータプログラムによって提供されるバーチャルマシンであって、請求項１〜１２のいずれか１項に記載のデータ処理装置によって命令実行環境を提供する、バーチャルマシン。
【請求項２２】
データプロセッサ上で実行するとき、前記データプロセッサを制御し、状態レジスタ内のインジケータ値を命令セット更新命令によって示された値に設定する、命令セット更新命令を備え、前記データプロセッサの復号器が、基本的な復号規則のセットによって基本的な命令のセットからの命令を示すオペレーションコードを有する命令を復号し、前記インジケータ値によって判定される復号規則のセットによってさらなる命令のセットからの命令を示すオペレーションコードを有する命令を復号する、コンピュータプログラム製品。
【請求項２３】
命令を復号するための命令復号手段と、
命令復号手段によって復号された命令に応じて、データを処理するための処理手段と、を備え、
前記命令復号手段は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するためのものであり、
前記基本命令セットは、それぞれの命令が前記命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、前記少なくとも１つのさらなる命令セットは、それぞれの命令が前記少なくとも１つのさらなる命令セット内の前記命令を識別するためのオペレーションコードを含む、複数の命令を含み、
前記命令復号手段は、基本的な復号規則のセットによって前記複数の定義済みのオペレーションコードのうちの１つを有する命令を復号し、
かつ前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、前記少なくとも１つのさらなる命令セットの前記オペレーションコードのうちの１つを有する命令を復号するためである、データを処理するための手段。
【請求項２４】
図１〜９を参照して実質的に本明細書に上記される、データ処理装置。
【請求項２５】
図１〜９を参照して実質的に本明細書に上記される、方法。
【請求項２６】
図１〜９を参照して実質的に本明細書に上記される、バーチャルマシン。
【請求項２７】
図１〜９を参照して実質的に本明細書に上記される、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、より具体的には、異なる命令セットからの命令の復号に関する。
【背景技術】
【０００２】
異なる命令セットからの命令を使用し得るプロセッサは既知である。例えば、英国、ケンブリッジのＡＲＭ（登録商標）は、ｔｈｕｍｂ命令の幅が１６ビットであり、ＡＲＭ（登録商標）命令の幅が３２ビットである、ＡＲＭ（登録商標）命令セットおよびｔｈｕｍｂ命令セットを使用するプロセッサを有する。復号器のためにどの命令セットが使用されているか知るために、命令の符号化内のフリービットは、命令がＡＲＭ（登録商標）命令であるか、またはｔｈｕｍｂ命令であるかを示すために使用される。
【０００３】
一部のプロセッサアーキテクチャでは、アーキテクチャによって明示的に支援される命令を定義する符号化のセットがあり、このアーキテクチャのユーザにとって自身の命令を定義するために使用可能である、空いている符号化のセットがある。ユーザにとって自身の命令を定義するのに使用可能な符号化空間を提供するプロセッサアーキテクチャでは、特定の命令セットを指定するために使用される命令符号化のビットを有することは、それ自身の問題を引き起こす。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
符号化空間を過度に増大せず、かつユーザが自身の命令を定義するための可能性を認めつつ、複数の命令セットを提供するのを可能にすることが望ましいであろう。
【課題を解決するための手段】
【０００５】
第１の態様から見ると、本発明は、命令を復号するための命令復号器と、該命令復号器によって復号された命令に応じてデータを処理するためのプロセッサとを備え、該命令復号器は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも１つのさらなる命令セットは、それぞれの命令が該少なくとも１つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号器は、基本的な復号規則のセットによって該複数の定義済みのオペレーションコードのうちの１つを有する命令を復号し、かつ該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって該少なくとも１つのさらなる命令セットの該オペレーションコードのうちの１つを有する命令を復号するように構成される、データ処理装置を提供する。
【０００６】
本発明は、ユーザが自身の命令を定義できる符号化空間を提供するのが有利であることを認識するが、常に復号することができる基本的な命令セットがある場合、有利であることも認識する。
【０００７】
それは、命令復号器が基本的な規則のセットおよび少なくとも１つのさらなる命令セットによって復号し、この復号器がインジケータ値によって判定される規則のセットによって復号する、基本的な命令のセットを提供することによってこれらの競合する要求に対処する。
【０００８】
このようにして、インジケータ値の単純な使用によって、異なる規則によって復号される多くの異なる命令セットを提供することができる。これは、同一の符号化は、インジケータ値によって選択され、かつ示される命令セットによって、異なる命令を定義するために使用することができることを意味する。このようにして、システムのユーザは、自身の命令を定義することができ、これらの命令は、インジケータ値がこの使用を動作させる復号規則を有することができる。
【０００９】
基本的な命令のセットが常に復号することができるように、基本的な命令のセットを、およびインジケータビットが適切に設定される場合に復号することができる、さらなる命令を、提供することによって、常に定義される命令を有する有利性および非常に多数のさらなる命令を有する可能性は、符号化空間を過度に増大せずに提供される。
【００１０】
一部の実施形態では、該命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも２つのさらなる命令セットを復号するように構成される。
【００１１】
さらなる命令セットの符号化空間は、異なる命令セット内の命令のオペレーションコードが同一であるが異なる命令にマッピングするように共有される場合に有利である。これは、符号化空間の効果的な使用であり、インジケータ値の使用により、多くの異なる命令を定義することができることを意味する。
【００１２】
一部の実施形態では、該データ処理装置は、該インジケータ値を記憶するための状態レジスタを備える。
【００１３】
インジケータ値を多くの場所に記憶することができるが、一部の実施形態では、状態レジスタ内に記憶される。これは、それを記憶するための便利な場所であり、容易に設定され、かつ読み出されることを可能にする。
【００１４】
一部の実施形態では、該命令復号器は、該基本的な命令のセットからの命令である、命令セット更新命令に応じて、該状態レジスタ内に記憶された該インジケータ値を該命令内の指定された値に設定する。
【００１５】
インジケータ値は、命令セット更新命令によって更新されてよい。このようにして、特定の命令のセットを使用するのを望むプログラマは、この命令のセットを示すためにインジケータ値を単純に更新することができ、その後、復号器は、インジケータ値によって示された復号規則によってさらなる命令セットの復号空間内の命令を復号する。新しい命令のセットが必要とされるとき、次に命令セット更新命令は、新たな必要とされる命令セットを示すためのインジケータ値を変更するために再び単純に使用される。
【００１６】
一部の実施形態では、該プロセッサは、該プログラムストリームが分岐することを示す分岐命令に応じて構成され、戻りアドレスおよび該インジケータ値を、該分岐から戻ると、該戻りアドレスおよびインジケータ値を復元することができるように、記憶する。
【００１７】
このサブルーチンは異なるさらなる命令セットを使用するかもしれないので、プログラムがサブルーチンに分岐する場合に、潜在的な問題が生じる場合がある。この問題に対処するために、分岐が終了した後にプログラムが戻る必要がある次の命令のアドレスを示す戻りアドレスを記憶することに加えて、現在のインジケータ値はまた、インジケータ値がサブルーチンの間に変更される場合、プログラムがサブルーチンから戻るときに、その初期値にリセットされるように記憶される。
【００１８】
一部の実施形態では、該データ処理装置は、該分岐前に該インジケータ値をリセットするように構成される。
【００１９】
インジケータ値は分岐で変化がないままであるかもしれないが、一部の実施形態では、データ処理装置は、分岐前にそれをリセットするように構成される。サブルーチンは、プログラムが分岐するとき使用されているさらなる命令セットを使用しない場合があり、分岐する前にインジケータ値をリセットするのが便利である場合がある。しかし、基本的な命令のセットをさらに復号することができるとき、それをそのままにしておくことが便利である場合があり、異なるさらなる命令セットが必要とされる場合、いかなる場合でもインジケータ値がリセットされる必要がある。
【００２０】
一部の実施形態では、該戻りアドレスおよびインジケータ値は、同一のリンクレジスタ内に記憶される。
【００２１】
戻りアドレスおよびインジケータ値を記憶する１つの方法は、リンクレジスタ内でそれらを記憶することである。本発明の実施形態では、リンクレジスタは、インジケータ値および戻りアドレスの両方を記憶するのに十分な広さがあり、したがって、これは、アクセスするのに容易である位置にこれら２つの値を記憶する効率的かつ効果的な方法である。
【００２２】
一部の実施形態では、該リンクレジスタの該上位有効ビットが該インジケータ値を記憶し、該下位有効ビットが該戻りアドレスを記憶する。
【００２３】
リンクレジスタの最上位ビットは、戻りアドレスを記憶する必要がない場合があり、したがってインジケータ値を記憶するために便宜的に使用することができる。
【００２４】
他の実施形態では、該戻りアドレスおよびインジケータ値は、該分岐に応じてスタックに記憶され、該分岐から戻ると、該スタックから読み出される。
【００２５】
戻りアドレスおよびインジケータ値は、本実施形態がリンクレジスタを使用しない場合、分岐に応じてスタックから押し出される可能性がある。そのような場合、分岐から戻ると、それらは、スタックから読み直される。
【００２６】
一部の実施形態では、該命令復号器は、該少なくとも１つのさらなる命令セットのうちの１つを示す該インジケータ、および該少なくとも１つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する。
【００２７】
データ処理装置は、復号規則を有しないオペレーションコードがある命令セットを指定するインジケータ値にトラップを仕掛けて構成されてよい。そのような場合、例外が生成され、次に、処理装置は、復号規則がない命令によって指定されるオペレーションコードがある原因を特定することができる。
【００２８】
一部の実施形態では、該命令復号器は、該命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する該インジケータ値を検出することに応じて、例外を生成する。
【００２９】
代替的および／または追加的に、データ処理装置は、命令復号器が復号規則を有しない値にインジケータ値が遷移するとき、判定するために構成されてよい。そのような場合、例外が生成され、ここでもプロセッサは、このエラーが生じた原因を判定する。
【００３０】
一部の実施形態では、該基本的な命令のセット内の命令の該定義済みのオペレーションコードは、所定の基本符号化空間内にあり、該少なくとも１つのさらなる命令セットの該オペレーションコードは、所定の拡張符号化空間内にある。
【００３１】
命令セットおよびさらなる命令セットの両方の使用は、基本命令セットの基本符号化空間および複数のさらなる命令セットを符号化するために使用されるさらなる符号化空間を使用することによって便宜的に符号化されることができる。このようにして、さらなる命令空間からの任意のオペレーションコードは、どの命令セットがその中にあるのかに応じて特定の命令を指定するために使用することができる。それが中にある命令セットは、インジケータ値によって示され、このインジケータ値は、適切な復号規則のセットを使用するために復号器を動作させる。
【００３２】
一部の実施形態では、複数の異なるインジケータ値は、該少なくとも１つのさらなる命令セットのうちの１つを識別する。
【００３３】
一部の実施形態では、命令セットを識別するための単一のインジケータ値があってよいが、他の実施形態では、多くの異なるインジケータ値があってよい。例えば、プロセッサが負のアドレスを支援する場合、２によって示される命令セットが、負のアドレスまたは正のアドレスのいずれが現在、支援されているかどうかに応じて２または−２によって示すことができると便利であるかもしれない。
【００３４】
本発明の第２の態様は、命令を受信することと、該命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、該基本的な命令のセットの復号規則によって該命令を復号することと、該命令の該オペレーションコードが少なくとも１つのさらなる命令のセットからの命令のオペレーションコードである場合、該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって該命令を復号することとを含む、異なる命令セットから命令を復号する方法を提供する。
【００３５】
本発明の第３の態様は、データ処理装置上で実行するコンピュータプログラムによって提供され、本発明の第１の態様に記載の該データ処理装置によって命令実行環境を提供する、バーチャルマシンを提供する。
【００３６】
本発明の第４の態様は、データプロセッサ上で実行するとき、該データプロセッサを制御し、状態レジスタ内のインジケータ値を命令セット更新命令によって示された値に設定する、命令セット更新命令を備え、該データプロセッサの復号器が、基本的な復号規則のセットによって基本的な命令のセットからの命令を示すオペレーションコードを有する命令を復号し、かつ該インジケータ値によって判定される復号規則のセットによってさらなる命令のセットからの命令を示すオペレーションコードを有する命令を復号する、コンピュータプログラム製品を提供する。
【００３７】
本発明の第５の態様は、命令を復号するための命令復号手段と、命令復号手段によって復号された命令に応じて、データを処理するための処理手段とを含み、該命令復号手段は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するためであり、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも１つのさらなる命令セットは、それぞれの命令が該少なくとも１つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号手段は、基本的な復号規則のセットによって前記複数の定義済みのオペレーションコードのうちの１つを有する命令を復号するため、かつ該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、該少なくとも１つのさらなる命令セットの該オペレーションコードのうちの１つを有する命令を復号するためである、データを処理するための手段を提供する。
【図面の簡単な説明】
【００３８】
例としてのみ、添付の図面に図示される本発明の実施形態を参照して、本発明がさらに記載される。
【図１】本発明の実施形態によるデータ処理装置を示す。
【図２】本発明の実施形態による命令復号器およびそれが使用する復号を図式的に示す。
【図３】本発明の実施形態によるプロセッサ復号器およびレジスタを図式的に示す。
【図４】例外が無効な命令セットインジケータ値に応じて生成される様子を図式的に示す。
【図５】分岐命令を含む命令ストリームを図式的に示す。
【図６】戻りアドレスおよび値がスタックに押し出される分岐を含む命令ストリームの実行を図式的に示す。
【図７】本発明の実施形態による命令を復号するための方法におけるステップを図示するフロー図を示す。
【図８】本発明の実施形態による分岐命令を含む命令のストリームの復号および実行を図式的に示す。
【図９】本発明の実施形態のバーチャルマシン実装を図示する。
【発明を実施するための形態】
【００３９】
図１は、プロセッサ１２を有するデータ処理装置１０を示す。命令を有するプログラムがデータストア２０内に記憶され、これらの命令がフェッチユニット１６によりフェッチされ、復号器１４に送信される。復号器１４は、命令を復号し、復号された命令を実行のためのプロセッサ１２に送信する。
【００４０】
この実施形態では、復号器１４は、基本的な復号規則のセットによって基本的な命令のセットからの命令を復号し、かつそれらの特定の命令のセットに固有の復号規則によって複数のさらなる命令のセットのうちの１つから命令を復号するように構成される。したがって、復号器１４は、レジスタバンク３０内の状態レジスタ３２内に記憶される命令セットインジケータ値ＩＳＡＳＥＬおよび異なるインジケータ値に関連する複数の復号規則へのアクセスを有する。インジケータ値は、さらなる命令のうちのどのセットが現在、復号器１４によって復号されるべきかを示し、この値に応じて、復号器は、さらなる命令セット符号化空間内の命令に対する適切な復号規則を選択し、それに応じてそれらを復号する。
【００４１】
データ処理装置１０は、後述の図に関して記載されるように分岐しているとき、プロセッサが戻りアドレスおよびインジケータ値を記憶するために使用するスタック４０も備える。
【００４２】
図２は、本発明の実施形態による復号器１４を図式的に示す。命令の符号化の符号化空間は、ブロック５０によって図式的に示される。これは、基本的な命令のセットのオペレーションコードに使用される基本符号化空間があり、かつさらなる命令セットのオペレーションコードに使用される拡張符号化空間があることを図示する。したがって、それぞれのさらなる命令セットは、それのオペレーションコードに対する拡張符号化空間全体を使用することができる。
【００４３】
これは、拡張符号化空間内にある任意の命令を正しい規則によって復号することができるように、どの命令セットが現在、復号されているかの表示が復号器に提供される限り、可能になる。
【００４４】
これは、復号器内に記憶される基本復号規則６０を有する復号器１４によって図２に図式的に示される。これらの復号規則は、基本符号化空間内の符号化を復号し、復号器は常に、これらへのアクセスを有する。
【００４５】
拡張符号化空間内の符号化に関する他の復号規則は、６２、６４、および６６としてこの図に図式的に示される。復号器１４は、マルチプレクサ７２を介してこれらの復号規則へのアクセスを有する。復号器１４によって使用するための復号規則のセットは、図１の状態レジスタ３２内に記憶される命令セット識別子またはインジケータ値７０に応じてマルチプレクサ７２によって選択される。この識別子は、どの特定の命令セットが現在、使用されているか、したがって、どの復号規則が拡張符号化空間内にある任意の命令に対して使用されるべきかを示す。このように、多くの異なる命令は、比較的小さな拡張符号化空間内で符号化することができ、インジケータ値が適切に設定される限り、復号器１４によって復号されることができる。さらに、復号器１４は常に、基本命令セットからの任意の命令を復号することができる。
【００４６】
図３は、本発明の実施形態によるデータ処理装置１０の一部分を図式的に示す。この図では、どのように命令セットインジケータ値ＩＳＡＳＥＬが状態レジスタ７０内に位置されるか、かつどのようにプロセッサ１２が命令セット更新命令に応じてこの値を設定できるかを知ることができる。したがって、命令セット更新命令に応じて、この命令によって示される値は、状態レジスタ７０に書き込まれる。次に、この値は、復号器１４によって使用され、拡張符号化空間内にある命令のための復号規則を選択し、それらが関係するさらなる命令セットを示す。
【００４７】
レジスタバンク３０は、プログラムストリームが分岐するとき、現在の命令セットインジケータ値および戻りアドレスを記憶するために使用される分岐リンクレジスタ７２も含む。プログラムが分岐するとき、それは、元のプログラムストリームに戻すことができるようにする必要があり、したがって、戻りアドレスが常に記憶される。しかし、本発明の実施形態では、復号することができる異なる命令セットがあるように、現在の命令セットインジケータ値は、プログラムが分岐し、それによりプログラムが元のストリームに戻るとき、復号器が正しい復号規則を使用することができるように、記憶されることが重要である。したがって、戻りアドレスを記憶することに加えて、命令セットインジケータ値もまた記憶される。分岐リンクレジスタのサイズおよびアドレスのサイズにより、戻りアドレスおよびインジケータ値の両方を記憶するための分岐リンクレジスタ内に便宜的に十分な空間がある。
【００４８】
この実施形態では、単一の分岐リンクレジスタ７２のみがあり、したがって、プログラムが再び、分岐する場合、レジスタ内のデータがスタック４０に書き込まれ、次に、分岐リンクレジスタは、分岐時に次の戻りアドレスおよび現在の命令セットインジケータ値で上書きされることに注目すべきである。
【００４９】
図４は、データ処理装置１０の一部分を示し、プロセッサによって支援されない命令セットインジケータ値ＩＳＡＳＥＬをどのように検出し、トラップを生成することができるかを示す。したがって、この実施形態では、命令セット更新命令に応じて、プロセッサ１２は、新しいＩＳＡＳＥＬ値をレジスタ７２に送信し、記憶された値を更新する。この新しい値は、コンパレータ９０を通過し、ストア８０内に記憶されたＩＳＡＳＥＬ値のセットで比較される。ストア８０は、あらゆる可能な命令セット値を記憶し、したがって、一致がない場合、不一致信号がコンパレータ９０によって送信され、これは、例外を生成する。一致がある場合、次に、コンパレータ９０は、インジケータ値をレジスタ７２に送信し、ＩＳＡＳＥＬの新しい値が設定される。
【００５０】
図５は、分岐命令を含む実行されている命令のストリームを図式的に示す。したがって、この実施形態では、関数２で分岐があり、リンクレジスタが戻りアドレスを記憶し、この場合、０である現在の命令セットインジケータは、さらなる命令セットが現在、支援されていないことを示す。次に、分岐が飛び越すサブルーチンが実行され、このサブルーチンが命令セットインジケータ値を３に設定し、インジケータ値３によって指定されたさらなる命令セットからの命令を使用するのを望むことを示す。次に、命令セットは、再び分岐し、ここで、リンクレジスタは、この分岐の戻りアドレスを記憶するために更新され、３のインジケータは、プログラムが命令ストリームのこの部分に戻るとき、命令セットインジケータ値が３にリセットされるべきであることを示す。この実施形態では、単一リンクレジスタのみがあり、したがって、リンクレジスタ内にすでに記憶された値は、新しい値で上書きされているこのリンクレジスタより前にスタックに押し出されることに注目すべきである。
【００５１】
次に、飛び越されたサブルーチンが実行され、このサブルーチンは、４によって指定されたさらなる命令セットが使用されるべきであることを示す命令セット更新命令を含む。したがって、命令セットインジケータ値が４に設定される。このサブルーチンの最後部の戻り命令に応じて、リンクレジスタからの値は、戻りアドレスに関するプログラムカウンタ、および、この場合、３である、インジケータ値に関する状態レジスタにロードされる。
【００５２】
図６は、分岐リンクレジスタを有しない処理装置内の分岐サブルーチンを図式的に示す。この場合、元の命令ストリームは、命令セットインジケータ値を３に設定し、したがって、分岐命令に応じて、このインジケータ値は、戻りアドレスとともにスタックに押し出される。サブルーチンから戻ると、インジケータ値は、スタックから外へポップされ、状態レジスタ７０に記憶され、戻りアドレスは、プログラムカウンタ内に記憶される。
【００５３】
図７は、本発明の実施形態による復号命令の方法を図示するフロー図を示す。命令が復号器で受信され、復号器は、命令のオペレーションコードから、命令が基本命令セットからであるか否かを判定する。命令が基本命令セットからである場合、復号器は、基本命令セット復号規則によって命令を復号する。命令が基本命令セットからでない場合、命令は、さらなる命令セットからである必要があり、復号器は、状態レジスタ内のインジケータ値を読み出し、この命令がどのさらなる命令セットから生じたか判定する。次に、復号器は、このインジケータ値によって示される復号規則によって命令を復号する。
【００５４】
図８は、本発明の実施形態による命令を処理しているとき、実施される方法におけるステップを示す。初めに、命令セット更新命令が受信され、この命令に応じて、インジケータ値が設定される。このインジケータ値に応じて、さらなる命令セット符号化空間からの命令は、インジケータによって識別された復号規則によって復号される。
【００５５】
次に、分岐命令が受信され、現在のインジケータ値および戻りアドレスが記憶される。分岐によって示された命令は、その後飛び越され、次の命令が実行される。これらの命令は、インジケータ値を更新するための命令を含み、したがって、インジケータ値が更新される。分岐からの戻りが示されるとき、インジケータ値は、記憶された値から、分岐および戻りアドレスもまたストアから読み出され、プログラムカウンタをリセットするために使用される前に、有した値に復元される。
【００５６】
図９は、使用される場合があるバーチャルマシン実装を図示する。先に記載された実施形態は、関心のある技法を支援する特定の処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装する一方、また、ハードウェアデバイスのいわゆるバーチャルマシン実装を提供することも可能である。これらのバーチャルマシン実装は、バーチャルマシンプログラム５１０を支援するホストオペレーティングシステム５２０を実行するホストプロセッサ５３０上で実行される。妥当な速度で実行するバーチャルマシン実装を提供するためには、典型的に、大きく強力なプロセッサが必要とされるが、そのような手法は、別のプロセッサに固有のコードを実行することを所望する際等の特定の状況においては、互換性または再利用の理由から正当化される。バーチャルマシンプログラム５１０は、アプリケーションプログラム５００に、バーチャルマシンプログラム５１０によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーションプログラムインターフェースと同一である、アプリケーションプログラムインターフェースを提供する。したがって、上述されるメモリアクセスの制御を含むプログラム命令は、それらのバーチャルマシンハードウェアとの対話をモデル化するために、バーチャルマシンプログラム５１０を使用して、アプリケーションプログラム５００内から実行されてもよい。
【００５７】
本発明の様々なさらなる態様および特徴は、添付された特許請求の範囲に定義される。本発明の範囲から逸脱することなく、本明細書に上記される実施形態に様々な変更を行うことができる。
【図１】
2013539883.tif 000003
【図２】
2013539883.tif 000004
【図３】
2013539883.tif 000005
【図４】
2013539883.tif 000006
【図５】
2013539883.tif 000007
【図６】
2013539883.tif 000008
【図７】
2013539883.tif 000009
【図８】
2013539883.tif 000010
【図９】
2013539883.tif 000011
【手続補正書】
【提出日】平成24年8月10日(2012.8.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、より具体的には、異なる命令セットからの命令の復号に関する。
【背景技術】
【０００２】
異なる命令セットからの命令を使用し得るプロセッサは既知である。例えば、英国、ケンブリッジのＡＲＭ（登録商標）は、ｔｈｕｍｂ命令の幅が１６ビットであり、ＡＲＭ（登録商標）命令の幅が３２ビットである、ＡＲＭ（登録商標）命令セットおよびｔｈｕｍｂ命令セットを使用するプロセッサを有する。復号器のためにどの命令セットが使用されているか知るために、命令の符号化内のフリービットは、命令がＡＲＭ（登録商標）命令であるか、またはｔｈｕｍｂ命令であるかを示すために使用される。
一部のプロセッサアーキテクチャでは、アーキテクチャによって明示的に支援される命令を定義する符号化のセットがあり、このアーキテクチャのユーザにとって自身の命令を定義するために使用可能である、空いている符号化のセットがある。ユーザにとって自身の命令を定義するのに使用可能な符号化空間を提供するプロセッサアーキテクチャでは、特定の命令セットを指定するために使用される命令符号化のビットを有することは、それ自身の問題を引き起こす。
特許文献１は、特定の命令セットが選択され使用されることを許す、マルチ命令セットアーキテクチャを開示する。これに関し、選択される命令セットに応じて特定の復号規則を適用することができるモード切替／復号ロジックが提供されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７，１４９，８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
符号化空間を過度に増大せず、かつユーザが自身の命令を定義するための可能性を認めつつ、複数の命令セットを提供するのを可能にすることが望ましいであろう。
【課題を解決するための手段】
【０００５】
第１の態様から見ると、本発明は、命令を復号するための命令復号器と、該命令復号器によって復号された命令に応じてデータを処理するためのプロセッサとを備え、該命令復号器は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも１つのさらなる命令セットは、それぞれの命令が該少なくとも１つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号器は、該基本的な復号規則のセットへのアクセスを常に有し、かつ該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットへのアクセスをさらに有するように動作可能なときに、基本的な復号規則のセットによって該複数の定義済みのオペレーションコードのうちの１つを有する命令を復号し、かつ該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって該少なくとも１つのさらなる命令セットの該オペレーションコードのうちの１つを有する命令を復号するように構成される、データ処理装置を提供する。
【０００６】
本発明は、ユーザが自身の命令を定義できる符号化空間を提供するのが有利であることを認識するが、常に復号することができる基本的な命令セットがある場合、有利であることも認識する。
【０００７】
それは、命令復号器が基本的な規則のセットおよび少なくとも１つのさらなる命令セットによって復号し、この復号器がインジケータ値によって判定される規則のセットによって復号する、基本的な命令のセットを提供することによってこれらの競合する要求に対処する。
【０００８】
このようにして、インジケータ値の単純な使用によって、異なる規則によって復号される多くの異なる命令セットを提供することができる。これは、同一の符号化は、インジケータ値によって選択され、かつ示される命令セットによって、異なる命令を定義するために使用することができることを意味する。このようにして、システムのユーザは、自身の命令を定義することができ、これらの命令は、インジケータ値がこの使用を動作させる復号規則を有することができる。
【０００９】
基本的な命令のセットが常に復号することができるように、基本的な命令のセットを、およびインジケータビットが適切に設定される場合に復号することができる、さらなる命令を、提供することによって、常に定義される命令を有する有利性および非常に多数のさらなる命令を有する可能性は、符号化空間を過度に増大せずに提供される。
【００１０】
一部の実施形態では、該命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも２つのさらなる命令セットを復号するように構成される。
【００１１】
さらなる命令セットの符号化空間は、異なる命令セット内の命令のオペレーションコードが同一であるが異なる命令にマッピングするように共有される場合に有利である。これは、符号化空間の効果的な使用であり、インジケータ値の使用により、多くの異なる命令を定義することができることを意味する。
【００１２】
一部の実施形態では、該データ処理装置は、該インジケータ値を記憶するための状態レジスタを備える。
【００１３】
インジケータ値を多くの場所に記憶することができるが、一部の実施形態では、状態レジスタ内に記憶される。これは、それを記憶するための便利な場所であり、容易に設定され、かつ読み出されることを可能にする。
【００１４】
一部の実施形態では、該命令復号器は、該基本的な命令のセットからの命令である、命令セット更新命令に応じて、該状態レジスタ内に記憶された該インジケータ値を該命令内の指定された値に設定する。
【００１５】
インジケータ値は、命令セット更新命令によって更新されてよい。このようにして、特定の命令のセットを使用するのを望むプログラマは、この命令のセットを示すためにインジケータ値を単純に更新することができ、その後、復号器は、インジケータ値によって示された復号規則によってさらなる命令セットの復号空間内の命令を復号する。新しい命令のセットが必要とされるとき、次に命令セット更新命令は、新たな必要とされる命令セットを示すためのインジケータ値を変更するために再び単純に使用される。
【００１６】
一部の実施形態では、該プロセッサは、該プログラムストリームが分岐することを示す分岐命令に応じて構成され、戻りアドレスおよび該インジケータ値を、該分岐から戻ると、該戻りアドレスおよびインジケータ値を復元することができるように、記憶する。
【００１７】
このサブルーチンは異なるさらなる命令セットを使用するかもしれないので、プログラムがサブルーチンに分岐する場合に、潜在的な問題が生じる場合がある。この問題に対処するために、分岐が終了した後にプログラムが戻る必要がある次の命令のアドレスを示す戻りアドレスを記憶することに加えて、現在のインジケータ値はまた、インジケータ値がサブルーチンの間に変更される場合、プログラムがサブルーチンから戻るときに、その初期値にリセットされるように記憶される。
【００１８】
一部の実施形態では、該データ処理装置は、該分岐前に該インジケータ値をリセットするように構成される。
【００１９】
インジケータ値は分岐で変化がないままであるかもしれないが、一部の実施形態では、データ処理装置は、分岐前にそれをリセットするように構成される。サブルーチンは、プログラムが分岐するとき使用されているさらなる命令セットを使用しない場合があり、分岐する前にインジケータ値をリセットするのが便利である場合がある。しかし、基本的な命令のセットをさらに復号することができるとき、それをそのままにしておくことが便利である場合があり、異なるさらなる命令セットが必要とされる場合、いかなる場合でもインジケータ値がリセットされる必要がある。
【００２０】
一部の実施形態では、該戻りアドレスおよびインジケータ値は、同一のリンクレジスタ内に記憶される。
【００２１】
戻りアドレスおよびインジケータ値を記憶する１つの方法は、リンクレジスタ内でそれらを記憶することである。本発明の実施形態では、リンクレジスタは、インジケータ値および戻りアドレスの両方を記憶するのに十分な広さがあり、したがって、これは、アクセスするのに容易である位置にこれら２つの値を記憶する効率的かつ効果的な方法である。
【００２２】
一部の実施形態では、該リンクレジスタの該上位有効ビットが該インジケータ値を記憶し、該下位有効ビットが該戻りアドレスを記憶する。
【００２３】
リンクレジスタの最上位ビットは、戻りアドレスを記憶する必要がない場合があり、したがってインジケータ値を記憶するために便宜的に使用することができる。
【００２４】
他の実施形態では、該戻りアドレスおよびインジケータ値は、該分岐に応じてスタックに記憶され、該分岐から戻ると、該スタックから読み出される。
【００２５】
戻りアドレスおよびインジケータ値は、本実施形態がリンクレジスタを使用しない場合、分岐に応じてスタックから押し出される可能性がある。そのような場合、分岐から戻ると、それらは、スタックから読み直される。
【００２６】
一部の実施形態では、該命令復号器は、該少なくとも１つのさらなる命令セットのうちの１つを示す該インジケータ、および該少なくとも１つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する。
【００２７】
データ処理装置は、復号規則を有しないオペレーションコードがある命令セットを指定するインジケータ値にトラップを仕掛けて構成されてよい。そのような場合、例外が生成され、次に、処理装置は、復号規則がない命令によって指定されるオペレーションコードがある原因を特定することができる。
【００２８】
一部の実施形態では、該命令復号器は、該命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する該インジケータ値を検出することに応じて、例外を生成する。
【００２９】
代替的および／または追加的に、データ処理装置は、命令復号器が復号規則を有しない値にインジケータ値が遷移するとき、判定するために構成されてよい。そのような場合、例外が生成され、ここでもプロセッサは、このエラーが生じた原因を判定する。
【００３０】
一部の実施形態では、該基本的な命令のセット内の命令の該定義済みのオペレーションコードは、所定の基本符号化空間内にあり、該少なくとも１つのさらなる命令セットの該オペレーションコードは、所定の拡張符号化空間内にある。
【００３１】
命令セットおよびさらなる命令セットの両方の使用は、基本命令セットの基本符号化空間および複数のさらなる命令セットを符号化するために使用されるさらなる符号化空間を使用することによって便宜的に符号化されることができる。このようにして、さらなる命令空間からの任意のオペレーションコードは、どの命令セットがその中にあるのかに応じて特定の命令を指定するために使用することができる。それが中にある命令セットは、インジケータ値によって示され、このインジケータ値は、適切な復号規則のセットを使用するために復号器を動作させる。
【００３２】
一部の実施形態では、複数の異なるインジケータ値は、該少なくとも１つのさらなる命令セットのうちの１つを識別する。
【００３３】
一部の実施形態では、命令セットを識別するための単一のインジケータ値があってよいが、他の実施形態では、多くの異なるインジケータ値があってよい。例えば、プロセッサが負のアドレスを支援する場合、２によって示される命令セットが、負のアドレスまたは正のアドレスのいずれが現在、支援されているかどうかに応じて２または−２によって示すことができると便利であるかもしれない。
【００３４】
本発明の第２の態様は、命令を受信することと、該命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、該基本的な命令のセットの復号規則によって該命令を復号することと、該命令の該オペレーションコードが少なくとも１つのさらなる命令のセットからの命令のオペレーションコードである場合、該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって該命令を復号することとを含む、異なる命令セットから命令を復号する方法を提供する。
【００３５】
本発明の第３の態様は、データ処理装置上で実行するコンピュータプログラムによって提供され、本発明の第１の態様に記載の該データ処理装置によって命令実行環境を提供する、バーチャルマシンを提供する。
【００３６】
本発明の第４の態様は、データプロセッサ上で実行するとき、該データプロセッサを制御し、状態レジスタ内のインジケータ値を命令セット更新命令によって示された値に設定する、命令セット更新命令を備え、該データプロセッサの復号器が、基本的な復号規則のセットによって基本的な命令のセットからの命令を示すオペレーションコードを有する命令を復号し、かつ該インジケータ値によって判定される復号規則のセットによってさらなる命令のセットからの命令を示すオペレーションコードを有する命令を復号する、コンピュータプログラム製品を提供する。
【００３７】
本発明の第５の態様は、命令を復号するための命令復号手段と、命令復号手段によって復号された命令に応じて、データを処理するための処理手段とを含み、該命令復号手段は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するためであり、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも１つのさらなる命令セットは、それぞれの命令が該少なくとも１つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号手段は、基本的な復号規則のセットによって前記複数の定義済みのオペレーションコードのうちの１つを有する命令を復号するため、かつ該少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、該少なくとも１つのさらなる命令セットの該オペレーションコードのうちの１つを有する命令を復号するためである、データを処理するための手段を提供する。
【図面の簡単な説明】
【００３８】
例としてのみ、添付の図面に図示される本発明の実施形態を参照して、本発明がさらに記載される。
【図１】本発明の実施形態によるデータ処理装置を示す。
【図２】本発明の実施形態による命令復号器およびそれが使用する復号を図式的に示す。
【図３】本発明の実施形態によるプロセッサ復号器およびレジスタを図式的に示す。
【図４】例外が無効な命令セットインジケータ値に応じて生成される様子を図式的に示す。
【図５】分岐命令を含む命令ストリームを図式的に示す。
【図６】戻りアドレスおよび値がスタックに押し出される分岐を含む命令ストリームの実行を図式的に示す。
【図７】本発明の実施形態による命令を復号するための方法におけるステップを図示するフロー図を示す。
【図８】本発明の実施形態による分岐命令を含む命令のストリームの復号および実行を図式的に示す。
【図９】本発明の実施形態のバーチャルマシン実装を図示する。
【発明を実施するための形態】
【００３９】
図１は、プロセッサ１２を有するデータ処理装置１０を示す。命令を有するプログラムがデータストア２０内に記憶され、これらの命令がフェッチユニット１６によりフェッチされ、復号器１４に送信される。復号器１４は、命令を復号し、復号された命令を実行のためのプロセッサ１２に送信する。
【００４０】
この実施形態では、復号器１４は、基本的な復号規則のセットによって基本的な命令のセットからの命令を復号し、かつそれらの特定の命令のセットに固有の復号規則によって複数のさらなる命令のセットのうちの１つから命令を復号するように構成される。したがって、復号器１４は、レジスタバンク３０内の状態レジスタ３２内に記憶される命令セットインジケータ値ＩＳＡＳＥＬおよび異なるインジケータ値に関連する複数の復号規則へのアクセスを有する。インジケータ値は、さらなる命令のうちのどのセットが現在、復号器１４によって復号されるべきかを示し、この値に応じて、復号器は、さらなる命令セット符号化空間内の命令に対する適切な復号規則を選択し、それに応じてそれらを復号する。
【００４１】
データ処理装置１０は、後述の図に関して記載されるように分岐しているとき、プロセッサが戻りアドレスおよびインジケータ値を記憶するために使用するスタック４０も備える。
【００４２】
図２は、本発明の実施形態による復号器１４を図式的に示す。命令の符号化の符号化空間は、ブロック５０によって図式的に示される。これは、基本的な命令のセットのオペレーションコードに使用される基本符号化空間があり、かつさらなる命令セットのオペレーションコードに使用される拡張符号化空間があることを図示する。したがって、それぞれのさらなる命令セットは、それのオペレーションコードに対する拡張符号化空間全体を使用することができる。
【００４３】
これは、拡張符号化空間内にある任意の命令を正しい規則によって復号することができるように、どの命令セットが現在、復号されているかの表示が復号器に提供される限り、可能になる。
【００４４】
これは、復号器内に記憶される基本復号規則６０を有する復号器１４によって図２に図式的に示される。これらの復号規則は、基本符号化空間内の符号化を復号し、復号器は常に、これらへのアクセスを有する。
【００４５】
拡張符号化空間内の符号化に関する他の復号規則は、６２、６４、および６６としてこの図に図式的に示される。復号器１４は、マルチプレクサ７２を介してこれらの復号規則へのアクセスを有する。復号器１４によって使用するための復号規則のセットは、図１の状態レジスタ３２内に記憶される命令セット識別子またはインジケータ値７０に応じてマルチプレクサ７２によって選択される。この識別子は、どの特定の命令セットが現在、使用されているか、したがって、どの復号規則が拡張符号化空間内にある任意の命令に対して使用されるべきかを示す。このように、多くの異なる命令は、比較的小さな拡張符号化空間内で符号化することができ、インジケータ値が適切に設定される限り、復号器１４によって復号されることができる。さらに、復号器１４は常に、基本命令セットからの任意の命令を復号することができる。
【００４６】
図３は、本発明の実施形態によるデータ処理装置１０の一部分を図式的に示す。この図では、どのように命令セットインジケータ値ＩＳＡＳＥＬが状態レジスタ７０内に位置されるか、かつどのようにプロセッサ１２が命令セット更新命令に応じてこの値を設定できるかを知ることができる。したがって、命令セット更新命令に応じて、この命令によって示される値は、状態レジスタ７０に書き込まれる。次に、この値は、復号器１４によって使用され、拡張符号化空間内にある命令のための復号規則を選択し、それらが関係するさらなる命令セットを示す。
【００４７】
レジスタバンク３０は、プログラムストリームが分岐するとき、現在の命令セットインジケータ値および戻りアドレスを記憶するために使用される分岐リンクレジスタ７２も含む。プログラムが分岐するとき、それは、元のプログラムストリームに戻すことができるようにする必要があり、したがって、戻りアドレスが常に記憶される。しかし、本発明の実施形態では、復号することができる異なる命令セットがあるように、現在の命令セットインジケータ値は、プログラムが分岐し、それによりプログラムが元のストリームに戻るとき、復号器が正しい復号規則を使用することができるように、記憶されることが重要である。したがって、戻りアドレスを記憶することに加えて、命令セットインジケータ値もまた記憶される。分岐リンクレジスタのサイズおよびアドレスのサイズにより、戻りアドレスおよびインジケータ値の両方を記憶するための分岐リンクレジスタ内に便宜的に十分な空間がある。
【００４８】
この実施形態では、単一の分岐リンクレジスタ７２のみがあり、したがって、プログラムが再び、分岐する場合、レジスタ内のデータがスタック４０に書き込まれ、次に、分岐リンクレジスタは、分岐時に次の戻りアドレスおよび現在の命令セットインジケータ値で上書きされることに注目すべきである。
【００４９】
図４は、データ処理装置１０の一部分を示し、プロセッサによって支援されない命令セットインジケータ値ＩＳＡＳＥＬをどのように検出し、トラップを生成することができるかを示す。したがって、この実施形態では、命令セット更新命令に応じて、プロセッサ１２は、新しいＩＳＡＳＥＬ値をレジスタ７２に送信し、記憶された値を更新する。この新しい値は、コンパレータ９０を通過し、ストア８０内に記憶されたＩＳＡＳＥＬ値のセットで比較される。ストア８０は、あらゆる可能な命令セット値を記憶し、したがって、一致がない場合、不一致信号がコンパレータ９０によって送信され、これは、例外を生成する。一致がある場合、次に、コンパレータ９０は、インジケータ値をレジスタ７２に送信し、ＩＳＡＳＥＬの新しい値が設定される。
【００５０】
図５は、分岐命令を含む実行されている命令のストリームを図式的に示す。したがって、この実施形態では、関数２で分岐があり、リンクレジスタが戻りアドレスを記憶し、この場合、０である現在の命令セットインジケータは、さらなる命令セットが現在、支援されていないことを示す。次に、分岐が飛び越すサブルーチンが実行され、このサブルーチンが命令セットインジケータ値を３に設定し、インジケータ値３によって指定されたさらなる命令セットからの命令を使用するのを望むことを示す。次に、命令セットは、再び分岐し、ここで、リンクレジスタは、この分岐の戻りアドレスを記憶するために更新され、３のインジケータは、プログラムが命令ストリームのこの部分に戻るとき、命令セットインジケータ値が３にリセットされるべきであることを示す。この実施形態では、単一リンクレジスタのみがあり、したがって、リンクレジスタ内にすでに記憶された値は、新しい値で上書きされているこのリンクレジスタより前にスタックに押し出されることに注目すべきである。
【００５１】
次に、飛び越されたサブルーチンが実行され、このサブルーチンは、４によって指定されたさらなる命令セットが使用されるべきであることを示す命令セット更新命令を含む。したがって、命令セットインジケータ値が４に設定される。このサブルーチンの最後部の戻り命令に応じて、リンクレジスタからの値は、戻りアドレスに関するプログラムカウンタ、および、この場合、３である、インジケータ値に関する状態レジスタにロードされる。
【００５２】
図６は、分岐リンクレジスタを有しない処理装置内の分岐サブルーチンを図式的に示す。この場合、元の命令ストリームは、命令セットインジケータ値を３に設定し、したがって、分岐命令に応じて、このインジケータ値は、戻りアドレスとともにスタックに押し出される。サブルーチンから戻ると、インジケータ値は、スタックから外へポップされ、状態レジスタ７０に記憶され、戻りアドレスは、プログラムカウンタ内に記憶される。
【００５３】
図７は、本発明の実施形態による復号命令の方法を図示するフロー図を示す。命令が復号器で受信され、復号器は、命令のオペレーションコードから、命令が基本命令セットからであるか否かを判定する。命令が基本命令セットからである場合、復号器は、基本命令セット復号規則によって命令を復号する。命令が基本命令セットからでない場合、命令は、さらなる命令セットからである必要があり、復号器は、状態レジスタ内のインジケータ値を読み出し、この命令がどのさらなる命令セットから生じたか判定する。次に、復号器は、このインジケータ値によって示される復号規則によって命令を復号する。
【００５４】
図８は、本発明の実施形態による命令を処理しているとき、実施される方法におけるステップを示す。初めに、命令セット更新命令が受信され、この命令に応じて、インジケータ値が設定される。このインジケータ値に応じて、さらなる命令セット符号化空間からの命令は、インジケータによって識別された復号規則によって復号される。
【００５５】
次に、分岐命令が受信され、現在のインジケータ値および戻りアドレスが記憶される。分岐によって示された命令は、その後飛び越され、次の命令が実行される。これらの命令は、インジケータ値を更新するための命令を含み、したがって、インジケータ値が更新される。分岐からの戻りが示されるとき、インジケータ値は、記憶された値から、分岐および戻りアドレスもまたストアから読み出され、プログラムカウンタをリセットするために使用される前に、有した値に復元される。
【００５６】
図９は、使用される場合があるバーチャルマシン実装を図示する。先に記載された実施形態は、関心のある技法を支援する特定の処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装する一方、また、ハードウェアデバイスのいわゆるバーチャルマシン実装を提供することも可能である。これらのバーチャルマシン実装は、バーチャルマシンプログラム５１０を支援するホストオペレーティングシステム５２０を実行するホストプロセッサ５３０上で実行される。妥当な速度で実行するバーチャルマシン実装を提供するためには、典型的に、大きく強力なプロセッサが必要とされるが、そのような手法は、別のプロセッサに固有のコードを実行することを所望する際等の特定の状況においては、互換性または再利用の理由から正当化される。バーチャルマシンプログラム５１０は、アプリケーションプログラム５００に、バーチャルマシンプログラム５１０によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーションプログラムインターフェースと同一である、アプリケーションプログラムインターフェースを提供する。したがって、上述されるメモリアクセスの制御を含むプログラム命令は、それらのバーチャルマシンハードウェアとの対話をモデル化するために、バーチャルマシンプログラム５１０を使用して、アプリケーションプログラム５００内から実行されてもよい。
【００５７】
本発明の様々なさらなる態様および特徴は、添付された特許請求の範囲に定義される。本発明の範囲から逸脱することなく、本明細書に上記される実施形態に様々な変更を行うことができる。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令を復号するための命令復号器と、
命令復号器によって復号される命令に応じてデータを処理するためのプロセッサと、を備え、
前記命令復号器は、基本命令セットおよび少なくとも１つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、
前記基本命令セットは、それぞれの命令が前記命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、前記少なくとも１つのさらなる命令セットは、それぞれの命令が前記少なくとも１つのさらなる命令セット内に前記命令を識別するためのオペレーションコードを含む、複数の命令を含み、
前記命令復号器は、前記基本的な復号規則のセットへのアクセスを常に有し、かつ前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットへのアクセスをさらに有するように動作可能なときに、基本的な復号規則のセットによって、前記複数の定義済みのオペレーションコードのうちの１つを有する命令を復号し、
かつ前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって、前記少なくとも１つのさらなる命令セットの前記オペレーションコードのうちの１つを有する命令を復号するように構成される、データ処理装置。
【請求項２】
前記命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも２つのさらなる命令セットを復号するように構成される、請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理装置は、前記インジケータ値を記憶するための状態レジスタを備える、請求項１または２のいずれか１項に記載のデータ処理装置。
【請求項４】
前記命令復号器は、前記基本的な命令のセットからの命令である、命令セット更新命令に応じて、前記状態レジスタ内に記憶された前記インジケータ値を前記命令内で指定された値に設定する、請求項３に記載のデータ処理装置。
【請求項５】
前記プロセッサは、前記プログラムストリームが分岐するべきであることを示す分岐命令に応じて、戻りアドレスおよび前記インジケータ値を、前記分岐から戻ると、前記戻りアドレスおよびインジケータ値を復元することができるように、記憶するように構成される、請求項１〜４のいずれか１項に記載のデータ処理装置。
【請求項６】
前記データ処理装置が前記分岐前に前記インジケータ値をリセットするように構成される、請求項５に記載のデータ処理装置。
【請求項７】
前記戻りアドレスおよびインジケータ値が同一のリンクレジスタ内に記憶される、請求項５に記載のデータ処理装置。
【請求項８】
前記リンクレジスタの前記上位有効ビットが前記インジケータ値を記憶し、前記下位有効ビットが前記戻りアドレスを記憶する、請求項７に記載のデータ処理装置。
【請求項９】
前記戻りアドレスおよびインジケータ値は、前記分岐に応じてスタックに記憶され、前記分岐から戻ると、前記スタックから読み出される、請求項７に記載のデータ処理装置。
【請求項１０】
前記命令復号器は、前記少なくとも１つのさらなる命令セットのうちの１つを示す前記インジケータ、および前記少なくとも１つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する、請求項１〜９のいずれか１項に記載のデータ処理装置。
【請求項１１】
前記命令復号器は、前記命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する前記インジケータ値を検出することに応じて、例外を生成する、請求項１〜１０のいずれか１項に記載のデータ処理装置。
【請求項１２】
前記基本的な命令のセット内の命令の前記定義済みのオペレーションコードは、所定の基本符号化空間内にあり、前記少なくとも１つのさらなる命令セットの前記オペレーションコードは、所定の拡張符号化空間内にある、請求項１〜１１のいずれか１項に記載のデータ処理装置。
【請求項１３】
複数の異なるインジケータ値が前記少なくとも１つのさらなる命令セットのうちの１つを識別する、請求項１〜１２のいずれか１項に記載のデータ処理装置。
【請求項１４】
異なる命令セットから命令を復号する方法であって、
命令を受信することと、
前記命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、前記基本的な命令のセットの復号規則によって前記命令を復号することと、
前記命令の前記オペレーションコードが少なくとも１つのさらなる命令のセットからの命令のオペレーションコードである場合、前記少なくとも１つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、前記命令を復号することと、を含む、方法。
【請求項１５】
請求項１４に記載の異なる命令セットからの命令を復号し、かつ前記復号された命令を処理する方法であって、命令セット更新命令の受信に応じて、
前記基本的な命令のセットの復号規則によって前記命令を復号するステップと、
前記復号された命令セット更新命令に応じて、前記状態レジスタ内の前記インジケータ値を前記復号された命令によって示された値に設定するステップと、
を実施することを含む、方法。
【請求項１６】
前記プログラムストリームが分岐するべきであることを示す分岐命令の受信に応じて、
戻りアドレスおよび前記インジケータの現在の値を、前記分岐から戻ると、前記戻りアドレスおよびインジケータ値を復元することができるように、記憶する、請求項１４または１５に記載の方法。
【請求項１７】
前記戻りアドレスおよびインジケータ値を記憶する前記ステップは、同一のリンクレジスタ内に前記値を記憶することを含む、請求項１６に記載の方法。
【請求項１８】
前記戻りアドレスおよびインジケータ値を記憶する前記ステップは、前記値をスタックに記憶することと、分岐命令からの戻りに応じて、前記スタックから前記値を読み出すこととを含む、請求項１６に記載の方法。
【請求項１９】
前記少なくとも１つのさらなる命令セットのうちの１つを示す前記インジケータ、および前記少なくとも１つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成するステップを含む、請求項１４〜１８のいずれか１項に記載の方法。
【請求項２０】
前記命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する前記インジケータ値を検出することに応じて、例外を生成するステップを含む、請求項１４〜１９のいずれか１項に記載の方法。
【請求項２１】
データ処理装置上で実行するコンピュータプログラムによって提供されるバーチャルマシンであって、請求項１〜１２のいずれか１項に記載のデータ処理装置によって命令実行環境を提供する、バーチャルマシン。
【国際調査報告】
2013539883.tif 000012
2013539883.tif 000013
2013539883.tif 000014
2013539883.tif 000015
2013539883.tif 000016