(57)【要約】2つの命令セットをサポートするデータ処理装置(2)が提供される。これら2つの命令セットは、すべてのコプロセッサ命令など、少なくとも1クラスの命令を含む共通命令サブセットを共用する。この共通命令サブセットは、メモリ内の格納順序、たとえばエンディアンによるあらゆる違いが補償された後、同じ命令エンコードを有する。
2006527435.tif 000002
【特許請求の範囲】
【請求項１】
データ処理動作を実行するように動作可能なデータ処理ロジックと、
前記データ処理ロジックによって実行され、前記データ処理動作を実行するように前記データ処理ロジックを制御するデータ処理動作を指定するプログラム命令をデコードするように動作可能な命令デコーダとを含む装置であって、
前記命令デコーダは、第1命令セットのプログラム命令がデコードされる第1モードおよび第2命令セットのプログラム命令がデコードされる第2モードで動作可能であり、前記第1命令セットのプログラム命令のサブセットは、前記第2命令セットのプログラム命令のサブセットによる共通格納順序補償済みエンコードを有し、また少なくとも1クラスの命令を表す共通命令サブセットを形成し、前記共通命令サブセットは、前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに関係なく、同じデータ処理動作を実行するように前記データ処理ロジックを制御する、データを処理するための装置。
【請求項２】
前記命令デコーダが、前記共通命令サブセットの命令を実行するために前記データ処理ロジックの共通部分を使用するように動作可能である、請求項1に記載の装置。
【請求項３】
前記共通命令サブセットが、前記第1命令セットおよび前記第2命令セットに共通のコプロセッサロジックを用いてコプロセッサデータ処理動作を制御するように動作可能なコプロセッサ命令である1クラスの命令を含む、請求項1および2のいずれか一項に記載の装置。
【請求項４】
すべての無条件コプロセッサ命令が前記共通サブセット中にある、請求項3に記載の装置。
【請求項５】
前記第1命令セットが、Nビット命令の固定長命令セットである、請求項1から4のいずれか一項に記載の装置。
【請求項６】
Nが32または16の一方である、請求項5に記載の装置。
【請求項７】
前記第2命令セットが可変長命令セットである、請求項1から6のいずれか一項に記載の装置。
【請求項８】
前記共通命令サブセット中の少なくとも1つのプログラム命令が、前記第1モードまたは前記第2モードのどちらかで共通データ処理動作を実行するが、前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに応じて異なる結果データ値を生成する、請求項1から7のいずれか一項に記載の装置。
【請求項９】
互いに異なる結果データ値を生成する前記少なくとも1つのプログラム命令が、入力オペランドとしてのプログラムカウンタ値を含む、請求項8に記載の装置。
【請求項１０】
前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに応じて、前記プログラムカウンタ値と実行される命令のアドレスとの間で異なる関係が維持される、請求項9に記載の装置。
【請求項１１】
互いに異なる結果データ値を生成する前記少なくとも1つのプログラム命令が、入力オペランドとしてのプログラムステータスレジスタ値を含む、請求項8に記載の装置。
【請求項１２】
データ処理ロジックを用いてデータ処理動作を実行するステップと、
前記データ処理ロジックによって実行されるデータ処理動作を指定し、前記データ処理動作を実行するように前記データ処理ロジックを制御する、命令デコーダプログラム命令を用いてデコードするステップとを含むデータ処理方法であって、
第1モードでは第1命令セットのプログラム命令がデコードされ、第2モードでは第2命令セットのプログラム命令がデコードされ、
前記第1命令セットのプログラム命令のサブセットは、前記第2命令セットのプログラム命令のサブセットによる共通格納順序補償済みエンコードを有し、また少なくとも1クラスの命令を表す共通命令サブセットを形成し、前記共通命令サブセットは、前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに関係なく、同じデータ処理動作を実行するように前記データ処理ロジックを制御する方法。
【請求項１３】
前記データ処理ロジックの共通部分を使用して、前記共通命令サブセットの命令を実行する、請求項12に記載の方法。
【請求項１４】
前記共通命令サブセットが、前記第1命令セットおよび前記第2命令セットに共通のコプロセッサロジックを用いてコプロセッサデータ処理動作を制御するように動作可能なコプロセッサ命令である1クラスの命令を含む、請求項12および13のいずれか一項に記載の方法。
【請求項１５】
すべての無条件コプロセッサ命令が前記共通サブセット中にある、請求項14に記載の方法。
【請求項１６】
前記第1命令セットが、Nビット命令の固定長命令セットである、請求項12から15のいずれか一項に記載の方法。
【請求項１７】
Nが32または16の一方である、請求項16に記載の方法。
【請求項１８】
前記第2命令セットが可変長命令セットである、請求項12から17のいずれか一項に記載の方法。
【請求項１９】
前記共通命令サブセット中の少なくとも1つのプログラム命令が、前記第1モードまたは前記第2モードのどちらかで共通データ処理動作を実行するが、前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに応じて異なる結果データ値を生成する、請求項12から18のいずれか一項に記載の方法。
【請求項２０】
互いに異なる結果データ値を生成する前記少なくとも1つのプログラム命令が、入力オペランドとしてのプログラムカウンタ値を含む、請求項19に記載の方法。
【請求項２１】
前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに応じて、前記プログラムカウンタ値と実行される命令のアドレスとの間で異なる関係が維持される、請求項20に記載の方法。
【請求項２２】
互いに異なる結果データ値を生成する前記少なくとも1つのプログラム命令が、入力オペランドとしてのプログラムステータスレジスタ値を含む、請求項19に記載の方法。
【請求項２３】
データ処理動作を実行するように動作可能なデータ処理ロジックを含むデータ処理装置を制御するように動作可能なコンピュータプログラムを有するコンピュータプログラム製品であって、前記コンピュータプログラムが、
前記データ処理動作を実行するように前記データ処理ロジックを制御する、第1命令セットのプログラム命令および第2命令セットのプログラム命令を含み、
前記第1命令セットのプログラム命令のサブセットは、前記第2命令セットのプログラム命令のサブセットによる共通格納順序補償済みエンコードを有し、また少なくとも1クラスの命令を表す共通命令サブセットを形成し、前記共通命令サブセットは、前記第1命令セットの命令がデコードされているか、それとも前記第2命令セットの命令がデコードされているかに関係なく、同じデータ処理動作を実行するようにデータ処理ロジックを制御する、コンピュータプログラム製品。
【請求項２４】
前記データ処理ロジックの共通部分を使用して、前記共通命令サブセットの命令を実行する、請求項23に記載のコンピュータプログラム製品。
【請求項２５】
前記共通命令サブセットが、前記第1命令セットおよび前記第2命令セットに共通のコプロセッサロジックを用いてコプロセッサデータ処理動作を制御するように動作可能なコプロセッサ命令である1クラスの命令を含む、請求項23および24のいずれか一項に記載のコンピュータプログラム製品。
【請求項２６】
すべての無条件コプロセッサ命令が前記共通サブセット中にある、請求項25に記載のコンピュータプログラム製品。
【請求項２７】
前記第1命令セットが、Nビット命令の固定長命令セットである、請求項23から26のいずれか一項に記載のコンピュータプログラム製品。
【請求項２８】
Nが32または16の一方である、請求項27に記載のコンピュータプログラム製品。
【請求項２９】
前記第2命令セットが可変長命令セットである、請求項23から28のいずれか一項に記載のコンピュータプログラム製品。
【請求項３０】
前記共通命令サブセット中の少なくとも1つのプログラム命令は、前記第1命令セットの命令または前記第2命令セットの命令のどちらかがデコードされているとき、共通データ処理動作を実行するが、異なる結果データ値を生成する、請求項23から29のいずれか一項に記載のコンピュータプログラム製品。
【請求項３１】
互いに異なる結果データ値を生成する前記少なくとも1つのプログラム命令が、入力オペランドとしてのプログラムカウンタ値を含む、請求項30に記載のコンピュータプログラム製品。
【請求項３２】
前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに応じて、前記プログラムカウンタ値と実行される命令のアドレスとの間で異なる関係が維持される、請求項31に記載のコンピュータプログラム製品。
【請求項３３】
互いに異なる結果データ値を生成する前記少なくとも1つのプログラム命令が、入力オペランドとしてのプログラムステータスレジスタ値を含む、請求項30に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、複数の命令セットを有するデータ処理システム、およびかかる複数の命令セットをエンコードできる方法に関する。
【背景技術】
【０００２】
複数の命令セットをもつデータ処理システムを提供することが知られている。そのようなデータ処理システムの例には、英国ケンブリッジのARM社製の、ARMおよびThumbの両命令セットをサポートするプロセッサコアがある。ARM命令セットは32ビット命令セットであり、Thumb命令セットは16ビット命令セットである。複数の命令セットをサポートするデータ処理システムでは、プログラム動作をどう表現できるかにおける柔軟性の程度がより向上し、コード密度の向上などの利益をもたらすことができるが、通常は複数の命令セットをサポートするのに必要とされるハードウェアの総量が増加してしまう。
【非特許文献１】「ARM Architecture Reference Manual」
【発明の開示】
【課題を解決するための手段】
【０００３】
一態様から見ると、本発明は、データを処理するための装置を提供し、前記装置は、
データ処理動作を実行するように動作可能なデータ処理ロジックと、
前記データ処理ロジックによって実行され、前記データ処理動作を実行するように前記データ処理ロジックを制御するデータ処理動作を指定するプログラム命令をデコードするように動作可能な命令デコーダとを含む装置であって、
前記命令デコーダは、第1命令セットのプログラム命令がデコードされる第1モードおよび第2命令セットのプログラム命令がデコードされる第2モードで動作可能であり、前記第1命令セットのプログラム命令のサブセットは、前記第2命令セットのプログラム命令のサブセットによる共通格納順序補償済みエンコードを有し、また少なくとも1クラスの命令を表す共通命令サブセットを形成し、前記共通命令サブセットは、前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに関係なく、同じデータ処理動作を実行するように前記データ処理ロジックを制御する。
【０００４】
本発明は、(少なくとも、格納順序、たとえばエンディアンによるあらゆる相違が補償された後)共通サブセットが同じエンコードを共用するように命令セットのエンコードを定めることにより、そのようなシステムを、有利にもその実装において単純化することができ、その動作の他の諸側面も改善されることを認識したものである。一例として、指定された処理動作を実装するための共通デコードロジックおよび共通処理ロジックがより容易に利用できるようになり、複数命令セットをサポートするのに必要なハードウェアオーバヘッドが削減される。
【０００５】
本発明の好ましい諸実施形態では、共通命令サブセット中に含まれる1クラスの命令(クラスはたとえば、ロード/ストア命令、乗算命令など類似の機能をもつ命令群と見なされる)が、第1命令セットおよび第2命令セットの両方で同じコプロセッサロジックを使用することのできるコプロセッサ命令を含む。これは、多くのコプロセッサ設計が存在するが、1つの命令セットについてだけ開発されている可能性があり、さらなる命令セットにこの同じコプロセッサ設計を再利用できることが大きな利点であるので、非常に有利である。共通コプロセッサグループの完全な相互運用性がどちらの命令セットでも提供できるように、すべてのコプロセッサ命令が共通サブセット中にある場合は、特に好ましい。
【０００６】
第1命令セットおよび第2命令セットは多くの異なる特性を有することができることが理解されるであろうが、第1命令セットが好都合には32ビットまたは16ビット命令の固定長命令セットであり、第2命令セットが可変長命令セットであることが好ましい。
【０００７】
共通命令サブセットは共通データ処理動作を実行するが、必ずしもこれらの共通データ処理動作が常に同じ結果データ値を生成するのではないことが理解されよう。これは、ハードウェアの節約および上記の他の利点を損なうものではないが、どの命令セットが使用されているかに応じて入力オペランドとして使用されるあるデータ値に付随する、特有の特殊性の結果であり得る。命令セット特有の特殊性を有し得る、入力オペランドとして使用されるデータ値の例は、実行される命令に対して、使用される命令セットに応じて異なる値を有するように維持することができるプログラムカウンタ値、および/またはどの命令セットが使用されているかを示す1つまたは複数のビットを保持し、したがって、どの命令セットが使用されているかに応じて異なる値を有することができるプログラムステータスレジスタ値である。
【０００８】
もう1つの態様から見ると、本発明は、データを処理する方法を提供し、前記方法は、
データ処理ロジックを用いてデータ処理動作を実行するステップと、
前記データ処理ロジックによって実行されるデータ処理動作を指定し、前記データ処理動作を実行するように前記データ処理ロジックを制御する命令デコーダプログラム命令を用いてデコードするステップとを含むデータ処理方法であって、
第1モードでは第1命令セットのプログラム命令がデコードされ、第2モードでは第2命令セットのプログラム命令がデコードされ、前記第1命令セットのプログラム命令のサブセットは、前記第2命令セットのプログラム命令のサブセットによる共通格納順序補償済みエンコードを有し、また少なくとも1クラスの命令を表す共通命令サブセットを形成し、前記共通命令サブセットは、前記命令デコーダが前記第1モードで動作しているか、それとも前記第2モードで動作しているかに関係なく、同じデータ処理動作を実行するように前記データ処理ロジックを制御する。
【０００９】
さらなる一態様から見ると、本発明は、データ処理動作を実行するように動作可能なデータ処理ロジックを含むデータ処理装置を制御するように動作可能なコンピュータプログラムを有するコンピュータプログラム製品を提供し、前記コンピュータプログラムが、
前記データ処理動作を実行するように前記データ処理ロジックを制御する、第1命令セットのプログラム命令および第2命令セットのプログラム命令を含み、
前記第1命令セットのプログラム命令のサブセットは、前記第2命令セットのプログラム命令のサブセットによる共通格納順序補償済みエンコードを有し、また少なくとも1クラスの命令を表す共通命令サブセットを形成し、前記共通命令サブセットは、前記第1命令セットの命令がデコードされているか、それとも前記第2命令セットの命令がデコードされているかに関係なく、同じデータ処理動作を実行するようにデータ処理ロジックを制御する。
【００１０】
次に、本発明の一実施形態を、添付の図面を参照して例示のためにのみ説明する。
【発明を実施するための最良の形態】
【００１１】
図1は、データ処理装置2を示す。データ処理装置2はプロセッサコア3を含み、このプロセッサコア3は、レジスタバンク4、乗算器6、シフタ8、加算器10、(共通サブセット命令デコーダ13を含む)命令デコーダ12、命令プリフェッチバッファ14、命令プリフェッチユニット16、およびプログラムステータスレジスタ18を含んでいる。レジスタバンク4内のレジスタの1つは、現在実行されているプログラム命令のアドレス値と所定の関係を有するアドレス値を格納する、プログラムカウンタレジスタ20である。この関係は、現時点でどの命令セットが使用されているかに応じて、たとえば現在の命令アドレス+4、現在の命令アドレス+8などと変わり得る。図1にはただ1つのコプロセッサを示してあるが、複数のコプロセッサを接続することもでき、その場合、異なるプロセッサで実行することを意図する命令は各コプロセッサ命令内のコプロセッサ番号フィールドによって区別されることが理解されよう。
【００１２】
コプロセッサ22は、プロセッサコア3に結合されており、プロセッサコア3と命令ワードおよびデータワードを共用する。コプロセッサ22は、命令プリフェッチユニット16によってフェッチされる命令ストリーム中のコプロセッサ命令に応答する。
【００１３】
コプロセッサ命令は、コプロセッサ22と共にプロセッサコア3によって実行される。図示した装置では、コプロセッサ22は、内部レジスタバンクおよび内部データ処理ロジックを有する。コプロセッサ命令は、共通サブセット命令デコーダ12によって識別され、コプロセッサ命令をいつ実行すべきかを決定する制御信号と共にコプロセッサに渡される。
【００１４】
一部のコプロセッサ命令では、コプロセッサの内部レジスタバンクからそのすべてのオペランドを読み取り、そのすべての結果をコプロセッサの内部レジスタバンクに書き込むので、それ以上、プロセッサコア3とやり取りする必要はない。また一部のコプロセッサ命令では、データ値をコプロセッサ22に渡す必要がある。これらのデータ値の利用可能なソースには、レジスタバンク4、プログラムステータスレジスタ18、およびメモリ(図示せず)が含まれる。図示した装置では、プロセッサコア3が、所望のロケーションからそのようなデータ値を取得し、それらをデータインターフェースDを介してコプロセッサ22に転送する。さらに一部のコプロセッサ命令では、コプロセッサ22によって生成されたデータ値を、レジスタバンク4、プログラムステータスレジスタ18、メモリなど、コプロセッサ22の外部の宛先に転送する。図示した装置では、そのようなデータ値がデータインターフェースDを介してプロセッサコア3に転送され、プロセッサコア3はそれらを所望の宛先に書き込む。
【００１５】
この種のコプロセッサ動作に関する多くのバリエーションが可能であり、この技法に包含されることが理解されよう。たとえば、コプロセッサ22は内部レジスタバンクがなくてもよく、したがって、その内部データ処理ロジックが常にデータインターフェースDを介してプロセッサコア3から転送されたデータ値に作用し、その結果値をデータインターフェースDを介してプロセッサコア3に送り返す。第2の例では、コプロセッサ22は、メモリへの個別のインターフェースを有することができ、したがって、メモリからのデータ値をロードし、それらをプロセッサコア3が関与せずにメモリに格納することができる。このケースでは、データインターフェースDは、レジスタバンク4やプログラムステータスレジスタ18など、プロセッサコア3内のロケーションと行き来するデータ値についてのみ使用される。代わりに、データインターフェースDを完全に省くこともでき、したがって、まずデータ値を一方からメモリに格納し、次にそれらをメモリから他方にロードすることによってのみ、データ値をプロセッサコア3とコプロセッサ22の間で転送することができる。
【００１６】
動作において、プログラム命令がメモリ(図示せず)内のメモリアドレスからフェッチされ、命令プリフェッチバッファ14に渡されることが理解されよう。プログラム命令が命令プリフェッチバッファ14内のデコードステージに到達すると、命令デコーダ12が、これらの命令をデコードし、制御信号を生成する。この制御信号は、プロセッサコア3内の処理ロジックおよび必要があればコプロセッサ22に適用され、指定されたデータ処理動作を実行するようにこれらその他の要素を制御する。プロセッサコア3は、第1命令セットがデコードされる第1モード、および第2命令セットがデコードされる第2モードで動作可能である。プロセッサコア3がどちらのモードであるかを示す1つの方法は、プログラムステータスレジスタ18の1つの内部にあるフラグ値を使用することである。どの命令セットが現在アクティブであるかに応じて、命令デコーダ12は、現在アクティブな命令セットおよびそのエンコードに従って、受け取った命令を変換する。この技法によれば、サポートされる2つの命令セットが、すべての無条件コプロセッサ命令など少なくとも1クラスの命令を含む、共通命令サブセット用の共通エンコードを共用し、それにより、同じ物理的ハードウェアを容易に再利用して、それらの共通処理動作を実施することができる。エンディアンの違いや命令ワードサイズの違いなどにより、異なる命令セットからのプログラム命令の格納順序は変わり得るが、以下で論じるようにそのような格納順序の違いが補償された後、共通命令サブセットはエンコードを共用することが理解されよう。
【００１７】
この例示的な実施形態では、プロセッサコア3は、2つの命令セット、すなわちARM命令セットおよび拡張バージョンのThumb命令セットをサポートする(ARMおよびThumb命令セットの詳細については、「ARM Architecture Reference Manual」を参照のこと)。Thumb命令セットの拡張には、相当な数の32ビット命令の追加を可能にする、Thumb命令セットのBLおよびBLX命令の変更が含まれる。
【００１８】
Thumb命令セットの拡張前は、そのBLおよびBLX命令が、図2に示す形の命令ストリームにおける2つの連続したハーフワードからなる。有効なプログラムでは、最上位5ビットが11101、11110、または11111である命令ハーフワードは、この2つの形の対でのみ現れる。BLおよびBLX以外の他のすべての命令は、最上位5ビットが00000〜11100である1つのハーフワードからなる。
【００１９】
一実装形態では、BLまたはBLX命令の2つのハーフワードを連続して実行することができ、それらをこうして実行した効果が組み合わされると、Thumbサブルーチン(BL)またはARMサブルーチン(BLX)のサブルーチン呼出しを実行するという、BLまたはBLX命令の所望の効果が生じる。より詳細には、その効果は、対象アドレスに分岐し、命令がBLXの場合はARM命令セットに切り替わり、ARM/Thumb命令セットアーキテクチャ中のサブルーチンリンクレジスタであるレジスタ14中の、第2のハーフワードの後の命令にポインタを置くことである。
【００２０】
その代りに、一実施形態では、2つのハーフワードを32ビット命令として一緒にデコードすることができ、BLまたはBLX命令の所望の効果を直接に実現することができる。Thumb命令セットの非拡張バージョンでは、これはBLまたはBLX命令がより効率的に実行できるようにする最適化であるが、必須ではない。
【００２１】
Thumb命令セットの拡張バージョンでは、代わりに、(記載される条件下で)命令ストリームからの2つの連続したハーフワードが、互いに連続して実行される2つの16ビットハーフワードとしては扱われずに、32ビット命令として扱われる。具体的には、図3に示すように、実行される次のハーフワードの最上位5ビットが00000〜11100のどれかをとる場合、そのハーフワードは16ビット命令として扱われる。そのビットが11101、11110、および11111のうちの1つをとる場合、そのハーフワードと次のハーフワードはまとめて1つの32ビット命令として扱われる。したがって、既存のすべてのBLおよびBLX命令は、32ビット命令として扱われる必要がある。
【００２２】
非拡張Thumb命令セットのすべての命令は、拡張バージョンでも、BLおよびBLXが32ビット命令として、その他すべての命令が16ビットバージョンとして、利用可能である。図2を図3と比較すると、利用可能な32ビット命令のごく一部だけがBLおよびBLX命令であることが明らかである。その他の32ビット命令は、非拡張バージョンに存在しない追加機能を提供する拡張バージョンで使用することができる。特に、ARM命令セットは、非拡張Thumb命令セットで利用できない数多くの命令群を含んでおり、BLおよびBLX以外の32ビット命令を使用して、拡張Thumb命令セットにおけるそれらの命令のThumb等価物を提供することができる。
【００２３】
コプロセッサ命令は、そのような命令群の一例である。コプロセッサ命令は、ARM命令セットに存在するが、Thumb命令セットの非拡張バージョンにおける等価物をもたない。ARM命令は32ビットワードであり、そのような命令のビット[27:24]が、1100、1101、および1110のうちの1つをとるとき、その命令はコプロセッサ命令である。図4は、これらの命令の主要な群を示す。
【００２４】
LDC命令  データ値をメモリからコプロセッサに転送する。
STC命令  データ値をコプロセッサからメモリに転送する。
MCR命令  データ値をプロセッサコアレジスタからコプロセッサに転送する。
MCRR命令  2つのデータ値をプロセッサコアレジスタからコプロセッサに転送する。
MRC命令  データ値をコプロセッサからプロセッサコアレジスタに転送する。
MRRC命令  2つのデータ値をコプロセッサからプロセッサコアレジスタに転送する。
CDP命令  コプロセッサ内で、コプロセッサに転送されるまたはコプロセッサから転送されるデータ値を必要としない命令を実行する。
未定義命令  プロセッサコア3で未定義命令例外を発生させる。
これらすべてのコプロセッサ命令は、その命令が対象とするコプロセッサを識別するcpnumフィールドと、condフィールドとを含んでいる。condの値は、無条件コプロセッサ命令の場合は1110または1111であり、一方、範囲0000〜1101の値は、cond=1110である等価な命令の条件付きバージョンを生成する(cond=1111をもつ無条件命令は、条件付きバージョンをもたない)。
【００２５】
これらすべてのコプロセッサ命令は、上記の技法を用いてデータ処理装置2で実行することができる。
【００２６】
無条件ARMコプロセッサ命令に等価な命令は、図5に示すような拡張Thumb命令セットにエンコードされる。これを図4と比較し、無条件ARM命令の場合はcond=1110または1111であることに留意すると、各無条件Thumbコプロセッサ命令のエンコードは、格納順序の問題を除き、等価なARMコプロセッサ命令のエンコードに等しいことが理解されよう。さらに、これらすべての無条件Thumbコプロセッサ命令は、HW1[15:11]=11101または11111でエンコードされており、図3に示した規則によれば32ビット命令も同じである。
【００２７】
格納順序の問題は、ARM命令ワードおよびThumb命令ハーフワードが通常、リトルエンディアン順で、すなわちその最下位バイトが最下位メモリアドレスに格納されることにより生じる。一例として、メモリアドレスがAであるARM無条件CDP命令が、図6の左側に示すように、アドレスA、A+1、A+2、およびA+3に4バイトで保持されるものとする。拡張Thumb命令セットにおける等価な命令は、第1のハーフワードHW1がアドレスAに、第2のハーフワードHW2がアドレスA+2に保持され、したがってこの命令は、図6の右側に示すように4バイトで保持されることになる。両側を比べると、Thumb命令は、ARM命令と同じバイトから構成されているが、格納順序が異なっている。アドレスAにおけるバイトとA+2におけるバイトが互いに入れ替わっており、アドレスA+1におけるバイトとA+3におけるバイトも同様である。個々の命令タイプに関わらず、すべての無条件コプロセッサ命令について格納順序の同様の違いが存在することが理解されよう。
【００２８】
拡張Thumb命令セットは、可変長命令セットであり、16ビット命令と32ビット命令の両方を含む。このような命令セットをデコードする際の最初のステップは、命令プリフェッチバッファ14内の個々の命令を識別することである。この実施形態では、命令プリフェッチバッファ14内の各エントリは、命令プリフェッチユニット16によってあらかじめメモリからフェッチされた、ワード整合のワードである。バッファの先頭にあるエントリをWORD1、次のエントリをWORD2と表すと、命令デコーダ12に渡される命令は、以下の規則で決定される。
【００２９】
【表１】
2006527435.tif 000003
【００３０】
これにより、格納順序が補償されて、正しい命令が命令デコーダ12に送られる。これは常に32ビットとして送られ、16ビットのThumb命令の場合は最上位16ビットがゼロとなる。Thumb命令セットの場合、命令が16ビット命令であるかそれとも32ビット命令であるかを命令デコーダ12に伝えるのに別個のビットは必要とされないことが理解されよう。命令デコーダ12に送信される32ビットの最上位ビットは、16ビット命令の場合は常に0であり、32ビット命令の場合は1である。
【００３１】
プロセッサコアの実装形態は、命令をどのようにプリフェッチするか、およびいくつの命令を一時にデコードするかに関して著しく変わり、したがって個々の命令を識別するこの方法は、プロセッサコアの実装形態の上記その他の諸態様に応じて改変する必要が生じることが理解されよう。
【００３２】
ARM命令セットとThumb命令セットをどちらも扱えるように命令デコーダ12を実装するための既存の一般的な方法には2つある。図7に示す1つの方法では、Thumb/ARMコンバータが、各Thumb命令を対応するARM命令に変換するロジックを含んでいる。マルチプレクサは、ARMコードが実行されている場合は元の命令を選択し、またThumbコードが実行されている場合は変換された命令を選択する。次いで、マルチプレクサの出力は、ARMデコーダによってデコードされる。
【００３３】
この形の命令デコーダ12は、元の命令のビット[27:24]が1100、1101、または1110であった場合(これらのビットは、16ビットThumb命令の場合は常に0000となり、非コプロセッサの32ビットThumb命令の場合は1100、1101、または1110以外の何らかの値となる)、Thumb/ARMコンバータに元の命令を変更せずにそのままマルチプレクサに渡させることにより、拡張Thumb命令セットに含まれている無条件コプロセッサ命令をデコードするように改変することができる。拡張Thumb命令セットは、BL、BLX、および無条件コプロセッサ命令に加え、さらに32ビット命令を含むことができることが理解されよう。32ビット命令を含む場合は、それらの命令を扱うために、Thumb/ARMコンバータにさらなる改変も行う。
【００３４】
命令デコーダ12を実装するための、既存の一般的な第2の方法は、図8に示すように、ARM命令セット用とThumb命令セット用に別々のデコーダを使用することである。その場合、ARMコードが実行されている場合はARMデコーダの出力を選択し、またThumbコードが実行されている場合はThumbデコーダの出力を選択するためにマルチプレクサを使用する。
【００３５】
この形の命令デコーダ12は、図9に示すように、ARMデコーダを、コプロセッサ命令をデコードする部分と非コプロセッサARM命令をデコードする部分とに分割することにより、無条件コプロセッサ命令をデコードするように改変することができる。拡張Thumb命令セットが、BL、BLX、および無条件コプロセッサ命令に加え、さらに32ビット命令を含む場合は、それらを扱うように非コプロセッサThumbデコーダを改変する。その場合、最終的なマルチプレクサは、命令のビット[27:24]が1100、1101、または1110の場合はコプロセッサデコーダの出力を選択する。そうでない場合、ARMコードが実行されている場合は非コプロセッサARMデコーダの出力を選択し、またThumbコードが実行されている場合は非コプロセッサThumbデコーダの出力を選択する。
【００３６】
第1の形の命令デコーダ12では、共通サブセット命令デコーダ13が、コプロセッサ命令をデコードするARMデコーダの一部分である。第2の形では、それがコプロセッサデコーダである。
【００３７】
ARMおよび拡張Thumb命令セットにおける無条件コプロセッサ命令用に共通格納順序補償済みエンコードを使用すると、各命令セットで異なるエンコードを使用する場合と比べて、必要なロジック量および消費電力量を低減するという点で、どちらの形の命令デコーダ12の場合も大いに利点がある。さらなる利点として、コプロセッサ22は、Thumb命令セットを拡張する前に実行できたものと同じ命令を実行できさえすればよい。これは、コプロセッサが必要とするロジックおよび消費する電力の増大を回避できるだけでなく、既存のプロセッサを拡張Thumb命令セットから使用できるように改変する必要がないことも意味する。
【００３８】
上記の技法は、図7のThumb/ARMコンバータ内など、この設計中の他の場所で格納順序補償を行うように改変でき、他のあらゆる論理設計と同様に、論理的に等価な多くの設計に変換できることが理解されよう。この技法は、そのようなすべての改変および変換を含んでいる。
【００３９】
図10は、上記の技法によるプログラム命令を実装することができる汎用コンピュータ200を示す概略図である。汎用コンピュータ200は、中央処理装置202、ランダムアクセスメモリ204、読取り専用メモリ206、ネットワークインターフェースカード208、ハードディスクドライブ210、ディスプレイドライバ212およびモニタ214、ならびにキーボード218およびマウス220がついたユーザ入出力回路216を含んでおり、すべてが共通バス222を介して接続されている。動作においては、中央処理装置202は、コンピュータプログラム命令を実行し、その命令は、ランダムアクセスメモリ204、読取り専用メモリ206、およびハードディスクドライブ210のうちの1つまたは複数に格納されていることも、ネットワークインターフェースカード208を介して動的にダウンロードされることもある。実行された処理結果は、ディスプレイドライバ212およびモニタ214を介してユーザに表示することができる。汎用コンピュータ200の動作を制御するためのユーザ入力は、キーボード218またはマウス220からユーザ入出力回路216を介して受け取ることができる。コンピュータプログラムは、多種多様なコンピュータ言語で書けることが理解されよう。コンピュータプログラムは、記録媒体に格納し分配しておくことも、汎用コンピュータ200に動的にダウンロードすることもできる。汎用コンピュータ200は、適切なコンピュータプログラムの制御下で動作するとき、上記の技法を実現でき、上記の技法を実現するための装置を形成するものと見なすことができる。汎用コンピュータ200のアーキテクチャは、非常に様々であり得、図10は単なる一例である。
【図面の簡単な説明】
【００４０】
【図１】複数の命令セットを使用し、関連するコプロセッサを有するデータ処理装置の概略図である。
【図２】Thumb命令セットにおけるBLおよびBLX命令のエンコードを示す図である。
【図３】Thumb命令セットの拡張バージョンにおける16ビット命令のエンコードと32ビット命令のエンコードをどのようにして互いに区別するかを示す図である。
【図４】ARM命令セットにおけるコプロセッサ命令のエンコードを示す図である。
【図５】Thumb命令セットの拡張バージョンにおける、無条件コプロセッサ命令のエンコードを示す図である。
【図６】ARM命令セットおよび拡張Thumb命令セットにおける無条件CDPコプロセッサ命令の格納順序の違いを示す図である。
【図７】ARMおよびThumb命令セット用の命令デコーダを設計できる方法を示す図である。
【図８】ARMおよびThumb命令セット用の命令デコーダを設計できる第2の方法を示す図である。
【図９】ARMおよび拡張Thumb命令セットをデコードするために図8の命令デコーダをどのように改変するかを示す図である。
【図１０】上記の技法によるプログラム命令を実装することができる汎用コンピュータのアーキテクチャを示す概要図である。
【符号の説明】
【００４１】
2  データ処理装置
3  プロセッサコア
4  レジスタバンク
6  乗算器
8  シフタ
10  加算器
12  命令デコーダ
13  共通サブセット命令デコーダ
14  命令プリフェッチバッファ
16  命令プリフェッチユニット
18  プログラムステータスレジスタ
20  プログラムカウンタレジスタ
22  コプロセッサ
200  汎用コンピュータ
202  中央処理装置
204  ランダムアクセスメモリ
206  読取り専用メモリ
208  ネットワークインターフェースカード
210  ハードディスクドライブ
212  ディスプレイドライバ
214  モニタ
216  ユーザ入出力回路
218  キーボード
220  マウス
222  共通バス
【図１】
2006527435.tif 000004
【図２】
2006527435.tif 000005
【図３】
2006527435.tif 000006
【図４】
2006527435.tif 000007
【図５】
2006527435.tif 000008
【図６】
2006527435.tif 000009
【図７】
2006527435.tif 000010
【図８】
2006527435.tif 000011
【図９】
2006527435.tif 000012
【図１０】
2006527435.tif 000013
【国際調査報告】
2006527435.tif 000014
2006527435.tif 000015
2006527435.tif 000016