JP2013539883A - 複数の命令セットからの命令の復号 - Google Patents

複数の命令セットからの命令の復号 Download PDF

Info

Publication number
JP2013539883A
JP2013539883A JP2013533281A JP2013533281A JP2013539883A JP 2013539883 A JP2013539883 A JP 2013539883A JP 2013533281 A JP2013533281 A JP 2013533281A JP 2013533281 A JP2013533281 A JP 2013533281A JP 2013539883 A JP2013539883 A JP 2013539883A
Authority
JP
Japan
Prior art keywords
instruction
instruction set
decoding
instructions
indicator value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013533281A
Other languages
English (en)
Inventor
ジョン クラスク、サイモン
Original Assignee
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2013539883A publication Critical patent/JP2013539883A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

異なる命令セットからの命令を復号することができる、データ処理装置、方法、およびコンピュータプログラムが記載される。本方法は、命令を受信することと、前記命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、前記基本的な命令のセットの復号規則によって前記命令を復号することと、前記命令の前記オペレーションコードが少なくとも1つのさらなる命令のセットからの命令のオペレーションコードである場合、前記少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって前記命令を復号することとを含む。

Description

本発明は、データ処理の分野に関し、より具体的には、異なる命令セットからの命令の復号に関する。
異なる命令セットからの命令を使用し得るプロセッサは既知である。例えば、英国、ケンブリッジのARM(登録商標)は、thumb命令の幅が16ビットであり、ARM(登録商標)命令の幅が32ビットである、ARM(登録商標)命令セットおよびthumb命令セットを使用するプロセッサを有する。復号器のためにどの命令セットが使用されているか知るために、命令の符号化内のフリービットは、命令がARM(登録商標)命令であるか、またはthumb命令であるかを示すために使用される。
一部のプロセッサアーキテクチャでは、アーキテクチャによって明示的に支援される命令を定義する符号化のセットがあり、このアーキテクチャのユーザにとって自身の命令を定義するために使用可能である、空いている符号化のセットがある。ユーザにとって自身の命令を定義するのに使用可能な符号化空間を提供するプロセッサアーキテクチャでは、特定の命令セットを指定するために使用される命令符号化のビットを有することは、それ自身の問題を引き起こす。
符号化空間を過度に増大せず、かつユーザが自身の命令を定義するための可能性を認めつつ、複数の命令セットを提供するのを可能にすることが望ましいであろう。
第1の態様から見ると、本発明は、命令を復号するための命令復号器と、該命令復号器によって復号された命令に応じてデータを処理するためのプロセッサとを備え、該命令復号器は、基本命令セットおよび少なくとも1つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも1つのさらなる命令セットは、それぞれの命令が該少なくとも1つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号器は、基本的な復号規則のセットによって該複数の定義済みのオペレーションコードのうちの1つを有する命令を復号し、かつ該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって該少なくとも1つのさらなる命令セットの該オペレーションコードのうちの1つを有する命令を復号するように構成される、データ処理装置を提供する。
本発明は、ユーザが自身の命令を定義できる符号化空間を提供するのが有利であることを認識するが、常に復号することができる基本的な命令セットがある場合、有利であることも認識する。
それは、命令復号器が基本的な規則のセットおよび少なくとも1つのさらなる命令セットによって復号し、この復号器がインジケータ値によって判定される規則のセットによって復号する、基本的な命令のセットを提供することによってこれらの競合する要求に対処する。
このようにして、インジケータ値の単純な使用によって、異なる規則によって復号される多くの異なる命令セットを提供することができる。これは、同一の符号化は、インジケータ値によって選択され、かつ示される命令セットによって、異なる命令を定義するために使用することができることを意味する。このようにして、システムのユーザは、自身の命令を定義することができ、これらの命令は、インジケータ値がこの使用を動作させる復号規則を有することができる。
基本的な命令のセットが常に復号することができるように、基本的な命令のセットを、およびインジケータビットが適切に設定される場合に復号することができる、さらなる命令を、提供することによって、常に定義される命令を有する有利性および非常に多数のさらなる命令を有する可能性は、符号化空間を過度に増大せずに提供される。
一部の実施形態では、該命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも2つのさらなる命令セットを復号するように構成される。
さらなる命令セットの符号化空間は、異なる命令セット内の命令のオペレーションコードが同一であるが異なる命令にマッピングするように共有される場合に有利である。これは、符号化空間の効果的な使用であり、インジケータ値の使用により、多くの異なる命令を定義することができることを意味する。
一部の実施形態では、該データ処理装置は、該インジケータ値を記憶するための状態レジスタを備える。
インジケータ値を多くの場所に記憶することができるが、一部の実施形態では、状態レジスタ内に記憶される。これは、それを記憶するための便利な場所であり、容易に設定され、かつ読み出されることを可能にする。
一部の実施形態では、該命令復号器は、該基本的な命令のセットからの命令である、命令セット更新命令に応じて、該状態レジスタ内に記憶された該インジケータ値を該命令内の指定された値に設定する。
インジケータ値は、命令セット更新命令によって更新されてよい。このようにして、特定の命令のセットを使用するのを望むプログラマは、この命令のセットを示すためにインジケータ値を単純に更新することができ、その後、復号器は、インジケータ値によって示された復号規則によってさらなる命令セットの復号空間内の命令を復号する。新しい命令のセットが必要とされるとき、次に命令セット更新命令は、新たな必要とされる命令セットを示すためのインジケータ値を変更するために再び単純に使用される。
一部の実施形態では、該プロセッサは、該プログラムストリームが分岐することを示す分岐命令に応じて構成され、戻りアドレスおよび該インジケータ値を、該分岐から戻ると、該戻りアドレスおよびインジケータ値を復元することができるように、記憶する。
このサブルーチンは異なるさらなる命令セットを使用するかもしれないので、プログラムがサブルーチンに分岐する場合に、潜在的な問題が生じる場合がある。この問題に対処するために、分岐が終了した後にプログラムが戻る必要がある次の命令のアドレスを示す戻りアドレスを記憶することに加えて、現在のインジケータ値はまた、インジケータ値がサブルーチンの間に変更される場合、プログラムがサブルーチンから戻るときに、その初期値にリセットされるように記憶される。
一部の実施形態では、該データ処理装置は、該分岐前に該インジケータ値をリセットするように構成される。
インジケータ値は分岐で変化がないままであるかもしれないが、一部の実施形態では、データ処理装置は、分岐前にそれをリセットするように構成される。サブルーチンは、プログラムが分岐するとき使用されているさらなる命令セットを使用しない場合があり、分岐する前にインジケータ値をリセットするのが便利である場合がある。しかし、基本的な命令のセットをさらに復号することができるとき、それをそのままにしておくことが便利である場合があり、異なるさらなる命令セットが必要とされる場合、いかなる場合でもインジケータ値がリセットされる必要がある。
一部の実施形態では、該戻りアドレスおよびインジケータ値は、同一のリンクレジスタ内に記憶される。
戻りアドレスおよびインジケータ値を記憶する1つの方法は、リンクレジスタ内でそれらを記憶することである。本発明の実施形態では、リンクレジスタは、インジケータ値および戻りアドレスの両方を記憶するのに十分な広さがあり、したがって、これは、アクセスするのに容易である位置にこれら2つの値を記憶する効率的かつ効果的な方法である。
一部の実施形態では、該リンクレジスタの該上位有効ビットが該インジケータ値を記憶し、該下位有効ビットが該戻りアドレスを記憶する。
リンクレジスタの最上位ビットは、戻りアドレスを記憶する必要がない場合があり、したがってインジケータ値を記憶するために便宜的に使用することができる。
他の実施形態では、該戻りアドレスおよびインジケータ値は、該分岐に応じてスタックに記憶され、該分岐から戻ると、該スタックから読み出される。
戻りアドレスおよびインジケータ値は、本実施形態がリンクレジスタを使用しない場合、分岐に応じてスタックから押し出される可能性がある。そのような場合、分岐から戻ると、それらは、スタックから読み直される。
一部の実施形態では、該命令復号器は、該少なくとも1つのさらなる命令セットのうちの1つを示す該インジケータ、および該少なくとも1つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する。
データ処理装置は、復号規則を有しないオペレーションコードがある命令セットを指定するインジケータ値にトラップを仕掛けて構成されてよい。そのような場合、例外が生成され、次に、処理装置は、復号規則がない命令によって指定されるオペレーションコードがある原因を特定することができる。
一部の実施形態では、該命令復号器は、該命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する該インジケータ値を検出することに応じて、例外を生成する。
代替的および/または追加的に、データ処理装置は、命令復号器が復号規則を有しない値にインジケータ値が遷移するとき、判定するために構成されてよい。そのような場合、例外が生成され、ここでもプロセッサは、このエラーが生じた原因を判定する。
一部の実施形態では、該基本的な命令のセット内の命令の該定義済みのオペレーションコードは、所定の基本符号化空間内にあり、該少なくとも1つのさらなる命令セットの該オペレーションコードは、所定の拡張符号化空間内にある。
命令セットおよびさらなる命令セットの両方の使用は、基本命令セットの基本符号化空間および複数のさらなる命令セットを符号化するために使用されるさらなる符号化空間を使用することによって便宜的に符号化されることができる。このようにして、さらなる命令空間からの任意のオペレーションコードは、どの命令セットがその中にあるのかに応じて特定の命令を指定するために使用することができる。それが中にある命令セットは、インジケータ値によって示され、このインジケータ値は、適切な復号規則のセットを使用するために復号器を動作させる。
一部の実施形態では、複数の異なるインジケータ値は、該少なくとも1つのさらなる命令セットのうちの1つを識別する。
一部の実施形態では、命令セットを識別するための単一のインジケータ値があってよいが、他の実施形態では、多くの異なるインジケータ値があってよい。例えば、プロセッサが負のアドレスを支援する場合、2によって示される命令セットが、負のアドレスまたは正のアドレスのいずれが現在、支援されているかどうかに応じて2または−2によって示すことができると便利であるかもしれない。
本発明の第2の態様は、命令を受信することと、該命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、該基本的な命令のセットの復号規則によって該命令を復号することと、該命令の該オペレーションコードが少なくとも1つのさらなる命令のセットからの命令のオペレーションコードである場合、該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって該命令を復号することとを含む、異なる命令セットから命令を復号する方法を提供する。
本発明の第3の態様は、データ処理装置上で実行するコンピュータプログラムによって提供され、本発明の第1の態様に記載の該データ処理装置によって命令実行環境を提供する、バーチャルマシンを提供する。
本発明の第4の態様は、データプロセッサ上で実行するとき、該データプロセッサを制御し、状態レジスタ内のインジケータ値を命令セット更新命令によって示された値に設定する、命令セット更新命令を備え、該データプロセッサの復号器が、基本的な復号規則のセットによって基本的な命令のセットからの命令を示すオペレーションコードを有する命令を復号し、かつ該インジケータ値によって判定される復号規則のセットによってさらなる命令のセットからの命令を示すオペレーションコードを有する命令を復号する、コンピュータプログラム製品を提供する。
本発明の第5の態様は、命令を復号するための命令復号手段と、命令復号手段によって復号された命令に応じて、データを処理するための処理手段とを含み、該命令復号手段は、基本命令セットおよび少なくとも1つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するためであり、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも1つのさらなる命令セットは、それぞれの命令が該少なくとも1つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号手段は、基本的な復号規則のセットによって前記複数の定義済みのオペレーションコードのうちの1つを有する命令を復号するため、かつ該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、該少なくとも1つのさらなる命令セットの該オペレーションコードのうちの1つを有する命令を復号するためである、データを処理するための手段を提供する。
例としてのみ、添付の図面に図示される本発明の実施形態を参照して、本発明がさらに記載される。
本発明の実施形態によるデータ処理装置を示す。 本発明の実施形態による命令復号器およびそれが使用する復号を図式的に示す。 本発明の実施形態によるプロセッサ復号器およびレジスタを図式的に示す。 例外が無効な命令セットインジケータ値に応じて生成される様子を図式的に示す。 分岐命令を含む命令ストリームを図式的に示す。 戻りアドレスおよび値がスタックに押し出される分岐を含む命令ストリームの実行を図式的に示す。 本発明の実施形態による命令を復号するための方法におけるステップを図示するフロー図を示す。 本発明の実施形態による分岐命令を含む命令のストリームの復号および実行を図式的に示す。 本発明の実施形態のバーチャルマシン実装を図示する。
図1は、プロセッサ12を有するデータ処理装置10を示す。命令を有するプログラムがデータストア20内に記憶され、これらの命令がフェッチユニット16によりフェッチされ、復号器14に送信される。復号器14は、命令を復号し、復号された命令を実行のためのプロセッサ12に送信する。
この実施形態では、復号器14は、基本的な復号規則のセットによって基本的な命令のセットからの命令を復号し、かつそれらの特定の命令のセットに固有の復号規則によって複数のさらなる命令のセットのうちの1つから命令を復号するように構成される。したがって、復号器14は、レジスタバンク30内の状態レジスタ32内に記憶される命令セットインジケータ値ISASELおよび異なるインジケータ値に関連する複数の復号規則へのアクセスを有する。インジケータ値は、さらなる命令のうちのどのセットが現在、復号器14によって復号されるべきかを示し、この値に応じて、復号器は、さらなる命令セット符号化空間内の命令に対する適切な復号規則を選択し、それに応じてそれらを復号する。
データ処理装置10は、後述の図に関して記載されるように分岐しているとき、プロセッサが戻りアドレスおよびインジケータ値を記憶するために使用するスタック40も備える。
図2は、本発明の実施形態による復号器14を図式的に示す。命令の符号化の符号化空間は、ブロック50によって図式的に示される。これは、基本的な命令のセットのオペレーションコードに使用される基本符号化空間があり、かつさらなる命令セットのオペレーションコードに使用される拡張符号化空間があることを図示する。したがって、それぞれのさらなる命令セットは、それのオペレーションコードに対する拡張符号化空間全体を使用することができる。
これは、拡張符号化空間内にある任意の命令を正しい規則によって復号することができるように、どの命令セットが現在、復号されているかの表示が復号器に提供される限り、可能になる。
これは、復号器内に記憶される基本復号規則60を有する復号器14によって図2に図式的に示される。これらの復号規則は、基本符号化空間内の符号化を復号し、復号器は常に、これらへのアクセスを有する。
拡張符号化空間内の符号化に関する他の復号規則は、62、64、および66としてこの図に図式的に示される。復号器14は、マルチプレクサ72を介してこれらの復号規則へのアクセスを有する。復号器14によって使用するための復号規則のセットは、図1の状態レジスタ32内に記憶される命令セット識別子またはインジケータ値70に応じてマルチプレクサ72によって選択される。この識別子は、どの特定の命令セットが現在、使用されているか、したがって、どの復号規則が拡張符号化空間内にある任意の命令に対して使用されるべきかを示す。このように、多くの異なる命令は、比較的小さな拡張符号化空間内で符号化することができ、インジケータ値が適切に設定される限り、復号器14によって復号されることができる。さらに、復号器14は常に、基本命令セットからの任意の命令を復号することができる。
図3は、本発明の実施形態によるデータ処理装置10の一部分を図式的に示す。この図では、どのように命令セットインジケータ値ISASELが状態レジスタ70内に位置されるか、かつどのようにプロセッサ12が命令セット更新命令に応じてこの値を設定できるかを知ることができる。したがって、命令セット更新命令に応じて、この命令によって示される値は、状態レジスタ70に書き込まれる。次に、この値は、復号器14によって使用され、拡張符号化空間内にある命令のための復号規則を選択し、それらが関係するさらなる命令セットを示す。
レジスタバンク30は、プログラムストリームが分岐するとき、現在の命令セットインジケータ値および戻りアドレスを記憶するために使用される分岐リンクレジスタ72も含む。プログラムが分岐するとき、それは、元のプログラムストリームに戻すことができるようにする必要があり、したがって、戻りアドレスが常に記憶される。しかし、本発明の実施形態では、復号することができる異なる命令セットがあるように、現在の命令セットインジケータ値は、プログラムが分岐し、それによりプログラムが元のストリームに戻るとき、復号器が正しい復号規則を使用することができるように、記憶されることが重要である。したがって、戻りアドレスを記憶することに加えて、命令セットインジケータ値もまた記憶される。分岐リンクレジスタのサイズおよびアドレスのサイズにより、戻りアドレスおよびインジケータ値の両方を記憶するための分岐リンクレジスタ内に便宜的に十分な空間がある。
この実施形態では、単一の分岐リンクレジスタ72のみがあり、したがって、プログラムが再び、分岐する場合、レジスタ内のデータがスタック40に書き込まれ、次に、分岐リンクレジスタは、分岐時に次の戻りアドレスおよび現在の命令セットインジケータ値で上書きされることに注目すべきである。
図4は、データ処理装置10の一部分を示し、プロセッサによって支援されない命令セットインジケータ値ISASELをどのように検出し、トラップを生成することができるかを示す。したがって、この実施形態では、命令セット更新命令に応じて、プロセッサ12は、新しいISASEL値をレジスタ72に送信し、記憶された値を更新する。この新しい値は、コンパレータ90を通過し、ストア80内に記憶されたISASEL値のセットで比較される。ストア80は、あらゆる可能な命令セット値を記憶し、したがって、一致がない場合、不一致信号がコンパレータ90によって送信され、これは、例外を生成する。一致がある場合、次に、コンパレータ90は、インジケータ値をレジスタ72に送信し、ISASELの新しい値が設定される。
図5は、分岐命令を含む実行されている命令のストリームを図式的に示す。したがって、この実施形態では、関数2で分岐があり、リンクレジスタが戻りアドレスを記憶し、この場合、0である現在の命令セットインジケータは、さらなる命令セットが現在、支援されていないことを示す。次に、分岐が飛び越すサブルーチンが実行され、このサブルーチンが命令セットインジケータ値を3に設定し、インジケータ値3によって指定されたさらなる命令セットからの命令を使用するのを望むことを示す。次に、命令セットは、再び分岐し、ここで、リンクレジスタは、この分岐の戻りアドレスを記憶するために更新され、3のインジケータは、プログラムが命令ストリームのこの部分に戻るとき、命令セットインジケータ値が3にリセットされるべきであることを示す。この実施形態では、単一リンクレジスタのみがあり、したがって、リンクレジスタ内にすでに記憶された値は、新しい値で上書きされているこのリンクレジスタより前にスタックに押し出されることに注目すべきである。
次に、飛び越されたサブルーチンが実行され、このサブルーチンは、4によって指定されたさらなる命令セットが使用されるべきであることを示す命令セット更新命令を含む。したがって、命令セットインジケータ値が4に設定される。このサブルーチンの最後部の戻り命令に応じて、リンクレジスタからの値は、戻りアドレスに関するプログラムカウンタ、および、この場合、3である、インジケータ値に関する状態レジスタにロードされる。
図6は、分岐リンクレジスタを有しない処理装置内の分岐サブルーチンを図式的に示す。この場合、元の命令ストリームは、命令セットインジケータ値を3に設定し、したがって、分岐命令に応じて、このインジケータ値は、戻りアドレスとともにスタックに押し出される。サブルーチンから戻ると、インジケータ値は、スタックから外へポップされ、状態レジスタ70に記憶され、戻りアドレスは、プログラムカウンタ内に記憶される。
図7は、本発明の実施形態による復号命令の方法を図示するフロー図を示す。命令が復号器で受信され、復号器は、命令のオペレーションコードから、命令が基本命令セットからであるか否かを判定する。命令が基本命令セットからである場合、復号器は、基本命令セット復号規則によって命令を復号する。命令が基本命令セットからでない場合、命令は、さらなる命令セットからである必要があり、復号器は、状態レジスタ内のインジケータ値を読み出し、この命令がどのさらなる命令セットから生じたか判定する。次に、復号器は、このインジケータ値によって示される復号規則によって命令を復号する。
図8は、本発明の実施形態による命令を処理しているとき、実施される方法におけるステップを示す。初めに、命令セット更新命令が受信され、この命令に応じて、インジケータ値が設定される。このインジケータ値に応じて、さらなる命令セット符号化空間からの命令は、インジケータによって識別された復号規則によって復号される。
次に、分岐命令が受信され、現在のインジケータ値および戻りアドレスが記憶される。分岐によって示された命令は、その後飛び越され、次の命令が実行される。これらの命令は、インジケータ値を更新するための命令を含み、したがって、インジケータ値が更新される。分岐からの戻りが示されるとき、インジケータ値は、記憶された値から、分岐および戻りアドレスもまたストアから読み出され、プログラムカウンタをリセットするために使用される前に、有した値に復元される。
図9は、使用される場合があるバーチャルマシン実装を図示する。先に記載された実施形態は、関心のある技法を支援する特定の処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装する一方、また、ハードウェアデバイスのいわゆるバーチャルマシン実装を提供することも可能である。これらのバーチャルマシン実装は、バーチャルマシンプログラム510を支援するホストオペレーティングシステム520を実行するホストプロセッサ530上で実行される。妥当な速度で実行するバーチャルマシン実装を提供するためには、典型的に、大きく強力なプロセッサが必要とされるが、そのような手法は、別のプロセッサに固有のコードを実行することを所望する際等の特定の状況においては、互換性または再利用の理由から正当化される。バーチャルマシンプログラム510は、アプリケーションプログラム500に、バーチャルマシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーションプログラムインターフェースと同一である、アプリケーションプログラムインターフェースを提供する。したがって、上述されるメモリアクセスの制御を含むプログラム命令は、それらのバーチャルマシンハードウェアとの対話をモデル化するために、バーチャルマシンプログラム510を使用して、アプリケーションプログラム500内から実行されてもよい。
本発明の様々なさらなる態様および特徴は、添付された特許請求の範囲に定義される。本発明の範囲から逸脱することなく、本明細書に上記される実施形態に様々な変更を行うことができる。
本発明は、データ処理の分野に関し、より具体的には、異なる命令セットからの命令の復号に関する。
異なる命令セットからの命令を使用し得るプロセッサは既知である。例えば、英国、ケンブリッジのARM(登録商標)は、thumb命令の幅が16ビットであり、ARM(登録商標)命令の幅が32ビットである、ARM(登録商標)命令セットおよびthumb命令セットを使用するプロセッサを有する。復号器のためにどの命令セットが使用されているか知るために、命令の符号化内のフリービットは、命令がARM(登録商標)命令であるか、またはthumb命令であるかを示すために使用される。
一部のプロセッサアーキテクチャでは、アーキテクチャによって明示的に支援される命令を定義する符号化のセットがあり、このアーキテクチャのユーザにとって自身の命令を定義するために使用可能である、空いている符号化のセットがある。ユーザにとって自身の命令を定義するのに使用可能な符号化空間を提供するプロセッサアーキテクチャでは、特定の命令セットを指定するために使用される命令符号化のビットを有することは、それ自身の問題を引き起こす。
特許文献1は、特定の命令セットが選択され使用されることを許す、マルチ命令セットアーキテクチャを開示する。これに関し、選択される命令セットに応じて特定の復号規則を適用することができるモード切替/復号ロジックが提供されている。
米国特許第7,149,878号公報
符号化空間を過度に増大せず、かつユーザが自身の命令を定義するための可能性を認めつつ、複数の命令セットを提供するのを可能にすることが望ましいであろう。
第1の態様から見ると、本発明は、命令を復号するための命令復号器と、該命令復号器によって復号された命令に応じてデータを処理するためのプロセッサとを備え、該命令復号器は、基本命令セットおよび少なくとも1つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも1つのさらなる命令セットは、それぞれの命令が該少なくとも1つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号器は、該基本的な復号規則のセットへのアクセスを常に有し、かつ該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットへのアクセスをさらに有するように動作可能なときに、基本的な復号規則のセットによって該複数の定義済みのオペレーションコードのうちの1つを有する命令を復号し、かつ該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって該少なくとも1つのさらなる命令セットの該オペレーションコードのうちの1つを有する命令を復号するように構成される、データ処理装置を提供する。
本発明は、ユーザが自身の命令を定義できる符号化空間を提供するのが有利であることを認識するが、常に復号することができる基本的な命令セットがある場合、有利であることも認識する。
それは、命令復号器が基本的な規則のセットおよび少なくとも1つのさらなる命令セットによって復号し、この復号器がインジケータ値によって判定される規則のセットによって復号する、基本的な命令のセットを提供することによってこれらの競合する要求に対処する。
このようにして、インジケータ値の単純な使用によって、異なる規則によって復号される多くの異なる命令セットを提供することができる。これは、同一の符号化は、インジケータ値によって選択され、かつ示される命令セットによって、異なる命令を定義するために使用することができることを意味する。このようにして、システムのユーザは、自身の命令を定義することができ、これらの命令は、インジケータ値がこの使用を動作させる復号規則を有することができる。
基本的な命令のセットが常に復号することができるように、基本的な命令のセットを、およびインジケータビットが適切に設定される場合に復号することができる、さらなる命令を、提供することによって、常に定義される命令を有する有利性および非常に多数のさらなる命令を有する可能性は、符号化空間を過度に増大せずに提供される。
一部の実施形態では、該命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも2つのさらなる命令セットを復号するように構成される。
さらなる命令セットの符号化空間は、異なる命令セット内の命令のオペレーションコードが同一であるが異なる命令にマッピングするように共有される場合に有利である。これは、符号化空間の効果的な使用であり、インジケータ値の使用により、多くの異なる命令を定義することができることを意味する。
一部の実施形態では、該データ処理装置は、該インジケータ値を記憶するための状態レジスタを備える。
インジケータ値を多くの場所に記憶することができるが、一部の実施形態では、状態レジスタ内に記憶される。これは、それを記憶するための便利な場所であり、容易に設定され、かつ読み出されることを可能にする。
一部の実施形態では、該命令復号器は、該基本的な命令のセットからの命令である、命令セット更新命令に応じて、該状態レジスタ内に記憶された該インジケータ値を該命令内の指定された値に設定する。
インジケータ値は、命令セット更新命令によって更新されてよい。このようにして、特定の命令のセットを使用するのを望むプログラマは、この命令のセットを示すためにインジケータ値を単純に更新することができ、その後、復号器は、インジケータ値によって示された復号規則によってさらなる命令セットの復号空間内の命令を復号する。新しい命令のセットが必要とされるとき、次に命令セット更新命令は、新たな必要とされる命令セットを示すためのインジケータ値を変更するために再び単純に使用される。
一部の実施形態では、該プロセッサは、該プログラムストリームが分岐することを示す分岐命令に応じて構成され、戻りアドレスおよび該インジケータ値を、該分岐から戻ると、該戻りアドレスおよびインジケータ値を復元することができるように、記憶する。
このサブルーチンは異なるさらなる命令セットを使用するかもしれないので、プログラムがサブルーチンに分岐する場合に、潜在的な問題が生じる場合がある。この問題に対処するために、分岐が終了した後にプログラムが戻る必要がある次の命令のアドレスを示す戻りアドレスを記憶することに加えて、現在のインジケータ値はまた、インジケータ値がサブルーチンの間に変更される場合、プログラムがサブルーチンから戻るときに、その初期値にリセットされるように記憶される。
一部の実施形態では、該データ処理装置は、該分岐前に該インジケータ値をリセットするように構成される。
インジケータ値は分岐で変化がないままであるかもしれないが、一部の実施形態では、データ処理装置は、分岐前にそれをリセットするように構成される。サブルーチンは、プログラムが分岐するとき使用されているさらなる命令セットを使用しない場合があり、分岐する前にインジケータ値をリセットするのが便利である場合がある。しかし、基本的な命令のセットをさらに復号することができるとき、それをそのままにしておくことが便利である場合があり、異なるさらなる命令セットが必要とされる場合、いかなる場合でもインジケータ値がリセットされる必要がある。
一部の実施形態では、該戻りアドレスおよびインジケータ値は、同一のリンクレジスタ内に記憶される。
戻りアドレスおよびインジケータ値を記憶する1つの方法は、リンクレジスタ内でそれらを記憶することである。本発明の実施形態では、リンクレジスタは、インジケータ値および戻りアドレスの両方を記憶するのに十分な広さがあり、したがって、これは、アクセスするのに容易である位置にこれら2つの値を記憶する効率的かつ効果的な方法である。
一部の実施形態では、該リンクレジスタの該上位有効ビットが該インジケータ値を記憶し、該下位有効ビットが該戻りアドレスを記憶する。
リンクレジスタの最上位ビットは、戻りアドレスを記憶する必要がない場合があり、したがってインジケータ値を記憶するために便宜的に使用することができる。
他の実施形態では、該戻りアドレスおよびインジケータ値は、該分岐に応じてスタックに記憶され、該分岐から戻ると、該スタックから読み出される。
戻りアドレスおよびインジケータ値は、本実施形態がリンクレジスタを使用しない場合、分岐に応じてスタックから押し出される可能性がある。そのような場合、分岐から戻ると、それらは、スタックから読み直される。
一部の実施形態では、該命令復号器は、該少なくとも1つのさらなる命令セットのうちの1つを示す該インジケータ、および該少なくとも1つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する。
データ処理装置は、復号規則を有しないオペレーションコードがある命令セットを指定するインジケータ値にトラップを仕掛けて構成されてよい。そのような場合、例外が生成され、次に、処理装置は、復号規則がない命令によって指定されるオペレーションコードがある原因を特定することができる。
一部の実施形態では、該命令復号器は、該命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する該インジケータ値を検出することに応じて、例外を生成する。
代替的および/または追加的に、データ処理装置は、命令復号器が復号規則を有しない値にインジケータ値が遷移するとき、判定するために構成されてよい。そのような場合、例外が生成され、ここでもプロセッサは、このエラーが生じた原因を判定する。
一部の実施形態では、該基本的な命令のセット内の命令の該定義済みのオペレーションコードは、所定の基本符号化空間内にあり、該少なくとも1つのさらなる命令セットの該オペレーションコードは、所定の拡張符号化空間内にある。
命令セットおよびさらなる命令セットの両方の使用は、基本命令セットの基本符号化空間および複数のさらなる命令セットを符号化するために使用されるさらなる符号化空間を使用することによって便宜的に符号化されることができる。このようにして、さらなる命令空間からの任意のオペレーションコードは、どの命令セットがその中にあるのかに応じて特定の命令を指定するために使用することができる。それが中にある命令セットは、インジケータ値によって示され、このインジケータ値は、適切な復号規則のセットを使用するために復号器を動作させる。
一部の実施形態では、複数の異なるインジケータ値は、該少なくとも1つのさらなる命令セットのうちの1つを識別する。
一部の実施形態では、命令セットを識別するための単一のインジケータ値があってよいが、他の実施形態では、多くの異なるインジケータ値があってよい。例えば、プロセッサが負のアドレスを支援する場合、2によって示される命令セットが、負のアドレスまたは正のアドレスのいずれが現在、支援されているかどうかに応じて2または−2によって示すことができると便利であるかもしれない。
本発明の第2の態様は、命令を受信することと、該命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、該基本的な命令のセットの復号規則によって該命令を復号することと、該命令の該オペレーションコードが少なくとも1つのさらなる命令のセットからの命令のオペレーションコードである場合、該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって該命令を復号することとを含む、異なる命令セットから命令を復号する方法を提供する。
本発明の第3の態様は、データ処理装置上で実行するコンピュータプログラムによって提供され、本発明の第1の態様に記載の該データ処理装置によって命令実行環境を提供する、バーチャルマシンを提供する。
本発明の第4の態様は、データプロセッサ上で実行するとき、該データプロセッサを制御し、状態レジスタ内のインジケータ値を命令セット更新命令によって示された値に設定する、命令セット更新命令を備え、該データプロセッサの復号器が、基本的な復号規則のセットによって基本的な命令のセットからの命令を示すオペレーションコードを有する命令を復号し、かつ該インジケータ値によって判定される復号規則のセットによってさらなる命令のセットからの命令を示すオペレーションコードを有する命令を復号する、コンピュータプログラム製品を提供する。
本発明の第5の態様は、命令を復号するための命令復号手段と、命令復号手段によって復号された命令に応じて、データを処理するための処理手段とを含み、該命令復号手段は、基本命令セットおよび少なくとも1つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するためであり、該基本命令セットは、それぞれの命令が該命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、該少なくとも1つのさらなる命令セットは、それぞれの命令が該少なくとも1つのさらなる命令セット内の該命令を識別するためのオペレーションコードを含む、複数の命令を含み、該命令復号手段は、基本的な復号規則のセットによって前記複数の定義済みのオペレーションコードのうちの1つを有する命令を復号するため、かつ該少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、該少なくとも1つのさらなる命令セットの該オペレーションコードのうちの1つを有する命令を復号するためである、データを処理するための手段を提供する。
例としてのみ、添付の図面に図示される本発明の実施形態を参照して、本発明がさらに記載される。
本発明の実施形態によるデータ処理装置を示す。 本発明の実施形態による命令復号器およびそれが使用する復号を図式的に示す。 本発明の実施形態によるプロセッサ復号器およびレジスタを図式的に示す。 例外が無効な命令セットインジケータ値に応じて生成される様子を図式的に示す。 分岐命令を含む命令ストリームを図式的に示す。 戻りアドレスおよび値がスタックに押し出される分岐を含む命令ストリームの実行を図式的に示す。 本発明の実施形態による命令を復号するための方法におけるステップを図示するフロー図を示す。 本発明の実施形態による分岐命令を含む命令のストリームの復号および実行を図式的に示す。 本発明の実施形態のバーチャルマシン実装を図示する。
図1は、プロセッサ12を有するデータ処理装置10を示す。命令を有するプログラムがデータストア20内に記憶され、これらの命令がフェッチユニット16によりフェッチされ、復号器14に送信される。復号器14は、命令を復号し、復号された命令を実行のためのプロセッサ12に送信する。
この実施形態では、復号器14は、基本的な復号規則のセットによって基本的な命令のセットからの命令を復号し、かつそれらの特定の命令のセットに固有の復号規則によって複数のさらなる命令のセットのうちの1つから命令を復号するように構成される。したがって、復号器14は、レジスタバンク30内の状態レジスタ32内に記憶される命令セットインジケータ値ISASELおよび異なるインジケータ値に関連する複数の復号規則へのアクセスを有する。インジケータ値は、さらなる命令のうちのどのセットが現在、復号器14によって復号されるべきかを示し、この値に応じて、復号器は、さらなる命令セット符号化空間内の命令に対する適切な復号規則を選択し、それに応じてそれらを復号する。
データ処理装置10は、後述の図に関して記載されるように分岐しているとき、プロセッサが戻りアドレスおよびインジケータ値を記憶するために使用するスタック40も備える。
図2は、本発明の実施形態による復号器14を図式的に示す。命令の符号化の符号化空間は、ブロック50によって図式的に示される。これは、基本的な命令のセットのオペレーションコードに使用される基本符号化空間があり、かつさらなる命令セットのオペレーションコードに使用される拡張符号化空間があることを図示する。したがって、それぞれのさらなる命令セットは、それのオペレーションコードに対する拡張符号化空間全体を使用することができる。
これは、拡張符号化空間内にある任意の命令を正しい規則によって復号することができるように、どの命令セットが現在、復号されているかの表示が復号器に提供される限り、可能になる。
これは、復号器内に記憶される基本復号規則60を有する復号器14によって図2に図式的に示される。これらの復号規則は、基本符号化空間内の符号化を復号し、復号器は常に、これらへのアクセスを有する。
拡張符号化空間内の符号化に関する他の復号規則は、62、64、および66としてこの図に図式的に示される。復号器14は、マルチプレクサ72を介してこれらの復号規則へのアクセスを有する。復号器14によって使用するための復号規則のセットは、図1の状態レジスタ32内に記憶される命令セット識別子またはインジケータ値70に応じてマルチプレクサ72によって選択される。この識別子は、どの特定の命令セットが現在、使用されているか、したがって、どの復号規則が拡張符号化空間内にある任意の命令に対して使用されるべきかを示す。このように、多くの異なる命令は、比較的小さな拡張符号化空間内で符号化することができ、インジケータ値が適切に設定される限り、復号器14によって復号されることができる。さらに、復号器14は常に、基本命令セットからの任意の命令を復号することができる。
図3は、本発明の実施形態によるデータ処理装置10の一部分を図式的に示す。この図では、どのように命令セットインジケータ値ISASELが状態レジスタ70内に位置されるか、かつどのようにプロセッサ12が命令セット更新命令に応じてこの値を設定できるかを知ることができる。したがって、命令セット更新命令に応じて、この命令によって示される値は、状態レジスタ70に書き込まれる。次に、この値は、復号器14によって使用され、拡張符号化空間内にある命令のための復号規則を選択し、それらが関係するさらなる命令セットを示す。
レジスタバンク30は、プログラムストリームが分岐するとき、現在の命令セットインジケータ値および戻りアドレスを記憶するために使用される分岐リンクレジスタ72も含む。プログラムが分岐するとき、それは、元のプログラムストリームに戻すことができるようにする必要があり、したがって、戻りアドレスが常に記憶される。しかし、本発明の実施形態では、復号することができる異なる命令セットがあるように、現在の命令セットインジケータ値は、プログラムが分岐し、それによりプログラムが元のストリームに戻るとき、復号器が正しい復号規則を使用することができるように、記憶されることが重要である。したがって、戻りアドレスを記憶することに加えて、命令セットインジケータ値もまた記憶される。分岐リンクレジスタのサイズおよびアドレスのサイズにより、戻りアドレスおよびインジケータ値の両方を記憶するための分岐リンクレジスタ内に便宜的に十分な空間がある。
この実施形態では、単一の分岐リンクレジスタ72のみがあり、したがって、プログラムが再び、分岐する場合、レジスタ内のデータがスタック40に書き込まれ、次に、分岐リンクレジスタは、分岐時に次の戻りアドレスおよび現在の命令セットインジケータ値で上書きされることに注目すべきである。
図4は、データ処理装置10の一部分を示し、プロセッサによって支援されない命令セットインジケータ値ISASELをどのように検出し、トラップを生成することができるかを示す。したがって、この実施形態では、命令セット更新命令に応じて、プロセッサ12は、新しいISASEL値をレジスタ72に送信し、記憶された値を更新する。この新しい値は、コンパレータ90を通過し、ストア80内に記憶されたISASEL値のセットで比較される。ストア80は、あらゆる可能な命令セット値を記憶し、したがって、一致がない場合、不一致信号がコンパレータ90によって送信され、これは、例外を生成する。一致がある場合、次に、コンパレータ90は、インジケータ値をレジスタ72に送信し、ISASELの新しい値が設定される。
図5は、分岐命令を含む実行されている命令のストリームを図式的に示す。したがって、この実施形態では、関数2で分岐があり、リンクレジスタが戻りアドレスを記憶し、この場合、0である現在の命令セットインジケータは、さらなる命令セットが現在、支援されていないことを示す。次に、分岐が飛び越すサブルーチンが実行され、このサブルーチンが命令セットインジケータ値を3に設定し、インジケータ値3によって指定されたさらなる命令セットからの命令を使用するのを望むことを示す。次に、命令セットは、再び分岐し、ここで、リンクレジスタは、この分岐の戻りアドレスを記憶するために更新され、3のインジケータは、プログラムが命令ストリームのこの部分に戻るとき、命令セットインジケータ値が3にリセットされるべきであることを示す。この実施形態では、単一リンクレジスタのみがあり、したがって、リンクレジスタ内にすでに記憶された値は、新しい値で上書きされているこのリンクレジスタより前にスタックに押し出されることに注目すべきである。
次に、飛び越されたサブルーチンが実行され、このサブルーチンは、4によって指定されたさらなる命令セットが使用されるべきであることを示す命令セット更新命令を含む。したがって、命令セットインジケータ値が4に設定される。このサブルーチンの最後部の戻り命令に応じて、リンクレジスタからの値は、戻りアドレスに関するプログラムカウンタ、および、この場合、3である、インジケータ値に関する状態レジスタにロードされる。
図6は、分岐リンクレジスタを有しない処理装置内の分岐サブルーチンを図式的に示す。この場合、元の命令ストリームは、命令セットインジケータ値を3に設定し、したがって、分岐命令に応じて、このインジケータ値は、戻りアドレスとともにスタックに押し出される。サブルーチンから戻ると、インジケータ値は、スタックから外へポップされ、状態レジスタ70に記憶され、戻りアドレスは、プログラムカウンタ内に記憶される。
図7は、本発明の実施形態による復号命令の方法を図示するフロー図を示す。命令が復号器で受信され、復号器は、命令のオペレーションコードから、命令が基本命令セットからであるか否かを判定する。命令が基本命令セットからである場合、復号器は、基本命令セット復号規則によって命令を復号する。命令が基本命令セットからでない場合、命令は、さらなる命令セットからである必要があり、復号器は、状態レジスタ内のインジケータ値を読み出し、この命令がどのさらなる命令セットから生じたか判定する。次に、復号器は、このインジケータ値によって示される復号規則によって命令を復号する。
図8は、本発明の実施形態による命令を処理しているとき、実施される方法におけるステップを示す。初めに、命令セット更新命令が受信され、この命令に応じて、インジケータ値が設定される。このインジケータ値に応じて、さらなる命令セット符号化空間からの命令は、インジケータによって識別された復号規則によって復号される。
次に、分岐命令が受信され、現在のインジケータ値および戻りアドレスが記憶される。分岐によって示された命令は、その後飛び越され、次の命令が実行される。これらの命令は、インジケータ値を更新するための命令を含み、したがって、インジケータ値が更新される。分岐からの戻りが示されるとき、インジケータ値は、記憶された値から、分岐および戻りアドレスもまたストアから読み出され、プログラムカウンタをリセットするために使用される前に、有した値に復元される。
図9は、使用される場合があるバーチャルマシン実装を図示する。先に記載された実施形態は、関心のある技法を支援する特定の処理ハードウェアを動作させるための装置および方法の観点から、本発明を実装する一方、また、ハードウェアデバイスのいわゆるバーチャルマシン実装を提供することも可能である。これらのバーチャルマシン実装は、バーチャルマシンプログラム510を支援するホストオペレーティングシステム520を実行するホストプロセッサ530上で実行される。妥当な速度で実行するバーチャルマシン実装を提供するためには、典型的に、大きく強力なプロセッサが必要とされるが、そのような手法は、別のプロセッサに固有のコードを実行することを所望する際等の特定の状況においては、互換性または再利用の理由から正当化される。バーチャルマシンプログラム510は、アプリケーションプログラム500に、バーチャルマシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されることになるアプリケーションプログラムインターフェースと同一である、アプリケーションプログラムインターフェースを提供する。したがって、上述されるメモリアクセスの制御を含むプログラム命令は、それらのバーチャルマシンハードウェアとの対話をモデル化するために、バーチャルマシンプログラム510を使用して、アプリケーションプログラム500内から実行されてもよい。
本発明の様々なさらなる態様および特徴は、添付された特許請求の範囲に定義される。本発明の範囲から逸脱することなく、本明細書に上記される実施形態に様々な変更を行うことができる。

Claims (27)

  1. 命令を復号するための命令復号器と、
    命令復号器によって復号される命令に応じてデータを処理するためのプロセッサと、を備え、
    前記命令復号器は、基本命令セットおよび少なくとも1つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するように構成され、
    前記基本命令セットは、それぞれの命令が前記命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、前記少なくとも1つのさらなる命令セットは、それぞれの命令が前記少なくとも1つのさらなる命令セット内に前記命令を識別するためのオペレーションコードを含む、複数の命令を含み、
    前記命令復号器は、基本的な復号規則のセットによって、前記複数の定義済みのオペレーションコードのうちの1つを有する命令を復号し、
    かつ前記少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定される復号規則のセットによって、前記少なくとも1つのさらなる命令セットの前記オペレーションコードのうちの1つを有する命令を復号するように構成される、データ処理装置。
  2. 前記命令復号器は、共通する少なくともいくつかのオペレーションコードを有する、少なくとも2つのさらなる命令セットを復号するように構成される、請求項1に記載のデータ処理装置。
  3. 前記データ処理装置は、前記インジケータ値を記憶するための状態レジスタを備える、請求項1または2のいずれか1項に記載のデータ処理装置。
  4. 前記命令復号器は、前記基本的な命令のセットからの命令である、命令セット更新命令に応じて、前記状態レジスタ内に記憶された前記インジケータ値を前記命令内で指定された値に設定する、請求項3に記載のデータ処理装置。
  5. 前記プロセッサは、前記プログラムストリームが分岐するべきであることを示す分岐命令に応じて、戻りアドレスおよび前記インジケータ値を、前記分岐から戻ると、前記戻りアドレスおよびインジケータ値を復元することができるように、記憶するように構成される、請求項1〜4のいずれか1項に記載のデータ処理装置。
  6. 前記データ処理装置が前記分岐前に前記インジケータ値をリセットするように構成される、請求項5に記載のデータ処理装置。
  7. 前記戻りアドレスおよびインジケータ値が同一のリンクレジスタ内に記憶される、請求項5に記載のデータ処理装置。
  8. 前記リンクレジスタの前記上位有効ビットが前記インジケータ値を記憶し、前記下位有効ビットが前記戻りアドレスを記憶する、請求項7に記載のデータ処理装置。
  9. 前記戻りアドレスおよびインジケータ値は、前記分岐に応じてスタックに記憶され、前記分岐から戻ると、前記スタックから読み出される、請求項7に記載のデータ処理装置。
  10. 前記命令復号器は、前記少なくとも1つのさらなる命令セットのうちの1つを示す前記インジケータ、および前記少なくとも1つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成する、請求項1〜9のいずれか1項に記載のデータ処理装置。
  11. 前記命令復号器は、前記命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する前記インジケータ値を検出することに応じて、例外を生成する、請求項1〜10のいずれか1項に記載のデータ処理装置。
  12. 前記基本的な命令のセット内の命令の前記定義済みのオペレーションコードは、所定の基本符号化空間内にあり、前記少なくとも1つのさらなる命令セットの前記オペレーションコードは、所定の拡張符号化空間内にある、請求項1〜11のいずれか1項に記載のデータ処理装置。
  13. 複数の異なるインジケータ値が前記少なくとも1つのさらなる命令セットのうちの1つを識別する、請求項1〜12のいずれか1項に記載のデータ処理装置。
  14. 異なる命令セットから命令を復号する方法であって、
    命令を受信することと、
    前記命令のオペレーションコードが基本的な命令のセットからの命令のオペレーションコードである場合、前記基本的な命令のセットの復号規則によって前記命令を復号することと、
    前記命令の前記オペレーションコードが少なくとも1つのさらなる命令のセットからの命令のオペレーションコードである場合、前記少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、前記命令を復号することと、を含む、方法。
  15. 請求項14に記載の異なる命令セットからの命令を復号し、かつ前記復号された命令を処理する方法であって、命令セット更新命令の受信に応じて、
    前記基本的な命令のセットの復号規則によって前記命令を復号するステップと、
    前記復号された命令セット更新命令に応じて、前記状態レジスタ内の前記インジケータ値を前記復号された命令によって示された値に設定するステップと、
    を実施することを含む、方法。
  16. 前記プログラムストリームが分岐するべきであることを示す分岐命令の受信に応じて、
    戻りアドレスおよび前記インジケータの現在の値を、前記分岐から戻ると、前記戻りアドレスおよびインジケータ値を復元することができるように、記憶する、請求項14または15に記載の方法。
  17. 前記戻りアドレスおよびインジケータ値を記憶する前記ステップは、同一のリンクレジスタ内に前記値を記憶することを含む、請求項16に記載の方法。
  18. 前記戻りアドレスおよびインジケータ値を記憶する前記ステップは、前記値をスタックに記憶することと、分岐命令からの戻りに応じて、前記スタックから前記値を読み出すこととを含む、請求項16に記載の方法。
  19. 前記少なくとも1つのさらなる命令セットのうちの1つを示す前記インジケータ、および前記少なくとも1つのさらなる命令セット内に復号規則がないオペレーションコードを有する命令の受信に応じて、例外を生成するステップを含む、請求項14〜18のいずれか1項に記載の方法。
  20. 前記命令復号器が復号規則を有しないさらなる命令セットを示す値に遷移する前記インジケータ値を検出することに応じて、例外を生成するステップを含む、請求項14〜19のいずれか1項に記載の方法。
  21. データ処理装置上で実行するコンピュータプログラムによって提供されるバーチャルマシンであって、請求項1〜12のいずれか1項に記載のデータ処理装置によって命令実行環境を提供する、バーチャルマシン。
  22. データプロセッサ上で実行するとき、前記データプロセッサを制御し、状態レジスタ内のインジケータ値を命令セット更新命令によって示された値に設定する、命令セット更新命令を備え、前記データプロセッサの復号器が、基本的な復号規則のセットによって基本的な命令のセットからの命令を示すオペレーションコードを有する命令を復号し、前記インジケータ値によって判定される復号規則のセットによってさらなる命令のセットからの命令を示すオペレーションコードを有する命令を復号する、コンピュータプログラム製品。
  23. 命令を復号するための命令復号手段と、
    命令復号手段によって復号された命令に応じて、データを処理するための処理手段と、を備え、
    前記命令復号手段は、基本命令セットおよび少なくとも1つのさらなる命令セットを含む、複数の異なる命令セットからの命令を復号するためのものであり、
    前記基本命令セットは、それぞれの命令が前記命令を一意的に識別するための定義済みのオペレーションコードを含む、複数の命令を含み、前記少なくとも1つのさらなる命令セットは、それぞれの命令が前記少なくとも1つのさらなる命令セット内の前記命令を識別するためのオペレーションコードを含む、複数の命令を含み、
    前記命令復号手段は、基本的な復号規則のセットによって前記複数の定義済みのオペレーションコードのうちの1つを有する命令を復号し、
    かつ前記少なくとも1つのさらなる命令のセットのうちのどれが現在、復号されるべきであるかを示すインジケータ値によって判定された復号規則のセットによって、前記少なくとも1つのさらなる命令セットの前記オペレーションコードのうちの1つを有する命令を復号するためである、データを処理するための手段。
  24. 図1〜9を参照して実質的に本明細書に上記される、データ処理装置。
  25. 図1〜9を参照して実質的に本明細書に上記される、方法。
  26. 図1〜9を参照して実質的に本明細書に上記される、バーチャルマシン。
  27. 図1〜9を参照して実質的に本明細書に上記される、コンピュータプログラム製品。
JP2013533281A 2010-10-12 2011-09-29 複数の命令セットからの命令の復号 Pending JP2013539883A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1017177.5 2010-10-12
GB1017177.5A GB2484489A (en) 2010-10-12 2010-10-12 Instruction decoder using an instruction set identifier to determine the decode rules to use.
PCT/GB2011/051848 WO2012049475A1 (en) 2010-10-12 2011-09-29 Decoding instructions from multiple instruction sets

Publications (1)

Publication Number Publication Date
JP2013539883A true JP2013539883A (ja) 2013-10-28

Family

ID=43304420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013533281A Pending JP2013539883A (ja) 2010-10-12 2011-09-29 複数の命令セットからの命令の復号

Country Status (10)

Country Link
US (1) US9753730B2 (ja)
EP (1) EP2628074B1 (ja)
JP (1) JP2013539883A (ja)
KR (1) KR101799764B1 (ja)
CN (1) CN103154883B (ja)
GB (1) GB2484489A (ja)
IL (1) IL225159A (ja)
MY (1) MY158864A (ja)
TW (1) TWI506544B (ja)
WO (1) WO2012049475A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013045145A (ja) * 2011-08-22 2013-03-04 Fujitsu Semiconductor Ltd プロセッサ

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012010102A1 (de) * 2012-05-22 2013-11-28 Infineon Technologies Ag Verfahren und Vorrichtung zur Datenverarbeitung
CN104424128B (zh) * 2013-08-19 2019-12-13 上海芯豪微电子有限公司 变长指令字处理器系统和方法
CN103761071B (zh) * 2014-01-08 2017-07-18 东南大学 一种plc的指令编码及识别系统
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US10437596B2 (en) 2014-11-26 2019-10-08 Texas Instruments Incorporated Processor with a full instruction set decoder and a partial instruction set decoder
US10115175B2 (en) * 2016-02-19 2018-10-30 Qualcomm Incorporated Uniform predicates in shaders for graphics processing units
GB2551548B (en) * 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction
CN111273945A (zh) * 2018-12-05 2020-06-12 展讯通信(上海)有限公司 指令译码器批处理设计方法及装置
US20220413865A1 (en) * 2021-06-25 2022-12-29 Intel Corporation Apparatuses, methods, and systems for instructions for a hardware assisted heterogeneous instruction set architecture dispatcher

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844557A (ja) * 1994-06-10 1996-02-16 Advanced Risc Mach Ltd データ処理装置
WO1997037300A1 (en) * 1996-04-02 1997-10-09 Advanced Micro Devices, Inc. A microprocessor configured to detect an escape instruction indicating a switch between instruction sets
JP2004259143A (ja) * 2003-02-27 2004-09-16 Nec Electronics Corp プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
JP2009181312A (ja) * 2008-01-30 2009-08-13 Toshiba Corp プロセッサ
JP2010521748A (ja) * 2007-03-14 2010-06-24 クゥアルコム・インコーポレイテッド 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2289354B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5925124A (en) * 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US6014735A (en) * 1998-03-31 2000-01-11 Intel Corporation Instruction set extension using prefixes
TW477936B (en) * 1998-12-29 2002-03-01 Ind Tech Res Inst Instruction folding method and device used in a stack machine
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
EP1387252B1 (en) * 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
GB2414308B (en) 2004-05-17 2007-08-15 Advanced Risc Mach Ltd Program instruction compression
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844557A (ja) * 1994-06-10 1996-02-16 Advanced Risc Mach Ltd データ処理装置
WO1997037300A1 (en) * 1996-04-02 1997-10-09 Advanced Micro Devices, Inc. A microprocessor configured to detect an escape instruction indicating a switch between instruction sets
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
JP2004259143A (ja) * 2003-02-27 2004-09-16 Nec Electronics Corp プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体
JP2010521748A (ja) * 2007-03-14 2010-06-24 クゥアルコム・インコーポレイテッド 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
JP2009181312A (ja) * 2008-01-30 2009-08-13 Toshiba Corp プロセッサ

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015016826; 森誠: 'はじめての組み込みプログラミング 第2回 割り込み' C MAGAZINE 第11巻,第9号, 19990901, Pages:65〜69, ソフトバンクパブリッシング株式会社 *
JPN6015016828; 小林達也: 'ARM命令セットの詳細' Interface 第28巻,第11号, 20021101, Pages:76〜86, CQ出版株式会社 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013045145A (ja) * 2011-08-22 2013-03-04 Fujitsu Semiconductor Ltd プロセッサ
US9411594B2 (en) 2011-08-22 2016-08-09 Cypress Semiconductor Corporation Clock data recovery circuit and clock data recovery method

Also Published As

Publication number Publication date
CN103154883B (zh) 2016-08-31
US20120089818A1 (en) 2012-04-12
US9753730B2 (en) 2017-09-05
CN103154883A (zh) 2013-06-12
TWI506544B (zh) 2015-11-01
MY158864A (en) 2016-11-15
IL225159A (en) 2016-12-29
KR101799764B1 (ko) 2017-12-20
EP2628074A1 (en) 2013-08-21
WO2012049475A1 (en) 2012-04-19
GB201017177D0 (en) 2010-11-24
GB2484489A (en) 2012-04-18
KR20130101060A (ko) 2013-09-12
TW201224921A (en) 2012-06-16
EP2628074B1 (en) 2014-08-06

Similar Documents

Publication Publication Date Title
JP2013539883A (ja) 複数の命令セットからの命令の復号
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
TWI514135B (zh) 記憶體存取控制
JP2019504403A5 (ja)
GB2478726A (en) Instruction decoder for a processor able to deal with N-bit length data and 2N-bit length data using a set of registers.
JP7241689B2 (ja) インラインのデコードベースのマイクロオペレーション展開による文字列比較処理
TW201723809A (zh) 移動前綴指令
US10372448B2 (en) Selecting processing based on expected value of selected character
JP2007272353A (ja) プロセッサ装置及び複合条件処理方法
JP2020534599A (ja) サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測
US20180253304A1 (en) Dynamically selecting version of instruction to be executed
JP2020534596A (ja) Set Table of Contents(TOC)Register命令
US20180253303A1 (en) String sequence operations with arbitrary terminators
KR20160065144A (ko) 데이터 처리장치 및 추론적 벡터 액세스 연산의 수행방법
JP6073392B2 (ja) 命令としてデータ値を評価するシステムおよび方法
EP3803577A1 (en) Storing incidental branch predictions to reduce latency of misprediction recovery
GB2540944A (en) Vector operand bitsize control
JP3858013B2 (ja) 複数の個別記憶アドレス領域内に記憶された可変長命令の実行
JP4159586B2 (ja) 情報処理装置および情報処理の高速化方法
JP2689894B2 (ja) マイクロプログラム制御型情報処理装置
EP4275114A1 (en) Background processing during remote memory access
JP3057732B2 (ja) 情報処理装置
JP2001184227A (ja) シミュレーション装置
JP2003177805A (ja) シーケンサ
JP2006011886A (ja) 情報処理装置

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20130411

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150421

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150428

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151001