(57)【要約】【課題】データ処理システムは、第１命令セットエンコーディングを有する第１命令セットを使用するよう第１状態で動作可能である。【解決手段】データ処理システムはまた、第２命令エンコーディングを有する第２命令セットを使用するよう第２状態で動作可能である。２種類の命令セット内で提供されている条件付分岐命令は、同一の命令エンコーディングを使用するよう設定されている。【選択図】図２
2006285996.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、前記装置は：
第１命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードするよう第１状態と、第２命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードするよう第２状態とで動作可能な命令デコーダを具備し；
少なくとも前記第１命令セットの条件付分岐命令と前記第２命令セットの条件付分岐命令とが、実質的に共通の命令エンコーディングを共有することを特徴とする装置。
【請求項２】
前記第２命令セットは、前記第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する少なくとも１つの非条件付分岐命令を含むことを特徴とする請求項１に記載の装置。
【請求項３】
前記第１命令セットは、前記第２命令セットによりサポートされていないデータ処理動作に対応する１つ以上のプログラム命令を有し、前記第２命令セットは、前記第１命令セットによりサポートされていないデータ処理動作に対応する１つ以上のプログラム命令を有することを特徴とする請求項１に記載の装置。
【請求項４】
前記第１状態で動作しかつ前記第１エンコーディングに従いプログラム命令をデコードするか又は前記第２状態で動作しかつ前記第２エンコーディングに従いプログラム命令をデコードするよう前記命令デコーダを制御する１つ以上の状態ビットを記憶するカレントプロセッサ状態レジスタを具備することを特徴とする請求項１に記載の装置。
【請求項５】
分岐予測メカニズムを具備し、前記共通の命令エンコーディングは、前記装置が前記第１状態又は前記第２状態のいずれでも無関係に前記分岐予測メカニズムを動作可能とすることを特徴とする請求項１に記載の装置。
【請求項６】
前記分岐予測メカニズムは、以前出現しテイクンされた分岐命令のアドレスを記憶するよう動作可能な分岐先バッファを含むことを特徴とする請求項５に記載の装置。
【請求項７】
前記分岐予測メカニズムは、以前出現した分岐命令のシーケンスに関して各分岐結果を示すヒストリ値を記憶する少なくとも１つのヒストリレジスタを含み、前記分岐予測メカニズムが、前記ヒストリ値の更新のために予測されずテイクンされなかった分岐命令を識別するようプログラム命令を少なくとも部分的にデコードするよう動作可能であることを特徴とする請求項６に記載の装置。
【請求項８】
前記第２命令セットは、前記第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する少なくとも１つの非条件付分岐命令を含み、前記ヒストリ値が、前記第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する任意のテイクンされなかった分岐命令について更新されないことを特徴とする請求項７に記載の装置。
【請求項９】
前記第１命令セット及び前記第２命令セットの少なくとも１つは、１つ以上の次のプログラム命令をプリディケートするよう動作可能な１つ以上のプリディケーション命令を含むことを特徴とする請求項１に記載の装置。
【請求項１０】
前記第１命令セットの条件付及び非条件付分岐命令の両方と、前記第２命令セットの条件付及び非条件付分岐命令の両方は、実質的に共通の命令エンコーディングを共有することを特徴とする請求項１に記載の装置。
【請求項１１】
データ処理方法であって、前記方法は：
第１状態で、第１命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードし、かつ
第２状態で、第２命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードすることを具備し；
少なくとも前記第１命令セットの条件付分岐命令と前記第２命令セットの条件付分岐命令とが、実質的に共通の命令エンコーディングを共有するものであることを特徴とする方法。
【請求項１２】
前記第２命令セットは、前記第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する少なくとも１つの非条件付分岐命令を含むものであることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第１命令セットは、前記第２命令セットによりサポートされていないデータ処理動作に対応する１つ以上のプログラム命令を有し、前記第２命令セットは、前記第１命令セットによりサポートされていないデータ処理動作に対応する１つ以上のプログラム命令を有するものであることを特徴とする請求項１１に記載の方法。
【請求項１４】
カレントプロセッサ状態レジスタは、前記第１状態及び前記第２状態のうち１つで動作を選択するために１つ以上の状態ビットを記憶するものであることを特徴とする請求項１１に記載の方法。
【請求項１５】
前記共通の命令エンコーディングは、前記Ａ方法が前記第１状態又は前記第２状態のいずれでも無関係に分岐予測メカニズムを動作可能とするものであることを特徴とする請求項１１に記載の方法。
【請求項１６】
前記分岐予測メカニズムは、以前出現しテイクンされていない分岐命令のアドレスを記憶するよう動作可能な分岐先バッファを含むものであることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記分岐予測メカニズムは、以前出現した分岐命令のシーケンスに関して各分岐結果を示すヒストリ値を記憶する少なくとも１つのヒストリレジスタを含み、前記分岐予測メカニズムが、前記ヒストリ値を更新するために予測されずテイクンされなかった分岐予測を識別するようプログラム命令を少なくとも部分的にデコードするよう動作可能であることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記第２命令セットは、前記第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する少なくとも１つの非条件付分岐命令を含み、前記ヒストリ値が、前記第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する任意のテイクンされなかった非条件付分岐命令について更新されないものであることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第１命令セット及び前記第２命令セットの少なくとも１つは、１つ以上の次のプログラム命令をプリディケートするよう動作可能な１つ以上のプリディケーション命令を含むものであることを特徴とする請求項１１に記載の方法。
【請求項２０】
前記第１命令セットの条件付及び非条件付分岐命令の両方と、前記第２命令セットの条件付及び非条件付分岐命令の両方とは、実質的に共通の命令エンコーディングを共有するものであることを特徴とする請求項１１に記載の方法。
【請求項２１】
請求項１１に記載の方法に従いデータを処理するためにデータ処理装置を制御するよう動作可能なコンピュータプログラムを含むコンピュータプログラム製品。
【請求項２２】
データ処理装置であって、前記装置は：
第１命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードするよう第１状態と、第２命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードするよう第２状態とで動作する命令デコーダ手段を具備し；
少なくとも前記第１命令セットの条件付分岐命令と前記第２命令セットの条件付分岐命令とは、実質的に共通の命令エンコーディングを共有することを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムに関する。より具体的には、本発明は複数のプログラム命令セットをサポートするデータ処理システムに関する。
【背景技術】
【０００２】
複数の命令セットのプログラム命令に対するネイティブ制御下でデータ処理操作可能なデータ処理システムを使用することが知られている。そのようなシステムの一例として、英国ケンブリッジのＡＲＭリミテッドにより製造されたＡＲＭ／Ｔｈｕｍｂ命令セットをサポートするマイクロプロセッサ設計が挙げられる。これらのマイクロプロセッサは、３２ビットのＡＲＭ命令を実行するＡＲＭ状態と１６ビット又は３２ビットのＴｈｕｍｂ命令を実行するＴｈｕｍｂ状態とで動作可能である。ＡＲＭ／Ｔｈｕｍｂ命令の命令セットが関連付けられる一方で、使用される命令エンコーディングが異なり、通常分離した命令デコーダが各命令セットに提供される。
【０００３】
そのようなシステムの高度にパイプライン化された装置内では、命令のデコーディングがパイプライン上のいくつかの異なる段階で発生しうる。例えば、あるデコーディングは、分岐予測と関連したパイプラインで初期に発生しうる。こういった環境では、初期のパイプライン段階でそれら命令に基づき適切に動作させるだけでなく、パイプライン上を通過する命令に関連してプロセッサのカレント状態を追跡しなければならないため、余計に負担がかかる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
１態様によると、本発明はデータ処理装置を提供し、前記装置は、第１命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードするよう第１状態と、第２命令セットの命令エンコーディングに従いデータ処理動作を制御するためにプログラム命令をデコードするよう第２状態とで動作可能な命令デコーダを具備し、少なくとも前記第１命令セットの条件付分岐命令と前記第２命令セットの条件付分岐命令とが、実質的に共通の命令エンコーディングを共有することを特徴とする。
【０００５】
命令エンコーディングは、命令／動作を実行するようプロセッサを制御するために、実行するプログラマにより選択された命令／動作とプロセッサに供給されたビットパターンとの間にマッピングを提供する。複数の命令セットをサポートするシステム内では、それぞれがプロセッサの状態毎にアクティブとなり、分離した命令エンコーディングを使用すると、少なくとも第１命令セットの条件付分岐命令及び第２命令セットの条件付分岐命令が実質的に共通の命令エンコーディングを共有している場合に好都合であることが現在の技術で知られている。性能上の理由として、条件付分岐命令は、命令パイプラインの初期段階で頻繁に、例えばパイプラインストールを低減しようとして予測に制約されやすくなる等識別に制約されやすくシステムの振る舞いを左右するような働きをする。これら条件付分岐命令に対し実質的に共通の命令エンコーディングを使用することで、パイプライン内で初期にこれら条件付分岐命令に基づくアクションをサポートすることが必要とされるオーバヘッドで有利な低減を可能とする。所定の命令により指定された動作の僅少な差異は、命令エンコーディングを変更しないとみなされ、例えば各種命令セットのＬＤＲ  Ｒｄ、［Ｒｍ、Ｒｎ］命令は、Ｒｍ＋Ｒｎ又はＲｍ＋Ｒｎ＊４のいずれか一方でアドレスを計算してもよい。これは、実質的に同じデコーディングハードウェアでデコードされうるため、実質的に共通のエンコーディングとみなされることはいうまでもない。実質的に共通のエンコーディングを共有するのは条件付分岐命令だけかもしれないが、各種設計目的を考えると、条件付及び非条件付分岐命令の両方が実質的に共通のエンコーディングを共有できることはいうまでもない。
【０００６】
プロセッサの各種状態でアクティブな各種命令セットが、それら全ての分岐命令エンコーディングを共有できる一方で、所定の分岐命令が命令セットのどれか１つで正当化されうるだけなので、命令エンコーディングビットスペースを最も有効に利用する必要がない。これに従い、ある実施態様では、第２命令セットが第１命令セットで各種データ処理動作に対応する命令エンコーディングを有する少なくとも１つの非条件付分岐命令を含む。
【０００７】
故に、命令セットのうち１つで必要とされうるだけの所定タイプの非条件付分岐命令は、他の命令セットにとってより有益な各種データ処理動作のためにその命令エンコーディングビットスペースを再利用することができる。
【０００８】
２つの命令セット間の関係は、可変な機能上のオーバラップ及び使用中の命令エンコーディング間のオーバラップを提供しうる。１つの効果的な実装としては、２つの命令セットの命令エンコーディング間に高い共通性があり、それにより、両命令セットにより通常必要とされるそれら処理動作のためにシステム内でリソース再利用を可能とし、なおかつ、各命令セットは、他の命令セットにおけるその命令セット及び各種処理動作のために独自の処理動作に対応する少なくとも所定の命令エンコーディングを備えている。
【０００９】
使用中の命令セット間をスイッチするためにシステムの状態間のスイッチングは、１つ以上の状態ビットを記憶するカレントプロセッサ状態レジスタにより好適に制御される。
【００１０】
各種命令セット内で条件付分岐命令に関して共通のエンコーディングを共有する実用性は、様々な利点を有する一方で、分岐予測メカニズムの動作を最も左右しそうな命令のエンコーディングが共有されることから分かるように、そのような分岐予測メカニズムはその時、システムが第１状態又は第２状態か否かに関係なく作動しうるため、分岐予測メカニズムを有するシステムでは特に役立つ。非条件付分岐命令は常にテイクン（Ｔａｋｅｎ）されるため、それらは容易に予測され同じ問題に直面しない。
【００１１】
そのような分岐予測メカニズムは：分岐先バッファ；以前出現した分岐命令のシーケンスに関して各分岐結果を示すヒストリ値を記憶する１つ以上のヒストリレジスタ；及びその他を含むような、様々な形式を有することができる。分岐予測メカニズム内でヒストリ値を含み、かつ命令エンコーディングが第１命令セットで各種データ処理動作に対応している少なくとも１つの非条件付分岐命令を含む第２命令セットを有するシステムにおいて、ヒストリ値がそのような非条件付分岐命令について更新されない場合に好都合である。テイクンされたものを除く（例えば、プリディケーション命令によりテイクンされない）そのような非条件付分岐命令は、統計上稀であり、それによりヒストリ値でのこの正確性欠如は重要ではなく実装を容易にする。
【００１２】
他の態様によると、本発明はデータ処理方法を提供し、前記方法は、第１状態で、第１命令セットの命令エンコーディングに従いデータ処理動作を制御するようプログラム命令をデコードし、かつ第２状態で、第２命令セットの命令エンコーディングに従いデータ処理動作を制御するようプログラム命令をデコードすることを具備し、少なくとも前記第１命令セットの条件付分岐命令と前記第２命令セットの条件付分岐命令とが、実質的に共通の命令エンコーディングを共有するものであることを特徴とする。
【００１３】
本発明の補足的態様は、２つの命令セットからそれぞれ少なくとも１つの命令を含むコンピュータプログラム等の、上記技術に従い動作するようデータ処理装置を制御するコンピュータプログラムを含むコンピュータプログラム製品を提供することである。コンピュータプログラム製品は例えば、物理的媒体により含まれてもよいし、送信されてもよい。
【００１４】
本発明の上述した目的と他の目的、特長及び利点は、添付図面を参照して以下に詳述した実施態様から明らかとなろう。
【発明を実施するための最良の形態】
【００１５】
図１は、命令デコーダ１２（分離した命令デコーダを各命令セットに使用してもよい。）の制御下で全て作動するマルチプライヤ６、シフタ８及びアダー１０を使用するレジスタバンク４内に記憶されているデータ値に基づきデータ処理動作をなしうるデータ処理システム２を説明している。図１は簡易表示であって、マイクロプロセッサのような、通常のデータ処理システムはさらに多くの回路素子を包含する。命令デコーダ１２は、それ自体分離した素子として提供される必要はないが、その命令デコーディングは、他の回路素子／ブロック内でなされてもよい。そのような代替は、本明細書中に含まれる。プログラム命令は、メモリシステムから命令フェッチユニット１６により命令パイプライン１４へフェッチされる。命令パイプライン１４内のプログラム命令は、レジスタバンク４、マルチプライヤ６、シフタ８及びアダー１０を設定する制御信号を発生するために命令デコーダ１２によりデコードされる。
【００１６】
カレントプロセッサ状態レジスタ１１は、現在アクティブな複数の命令セットのいずれかに対応するデータ処理システム２の状態を示す１つ以上の状態ビットを含む値を記憶する。これらの命令セットは、第１命令セット及び第２命令セットでもよい。またシステムは、２個より多い命令セットを有しうる。カレント状態に応じて、命令デコーダ１２は、命令パイプライン１４内でプログラム命令をインタープリトしかつ適切な制御信号を発生するために各種命令エンコーディングを使用する。本技術において第１命令セット及び第２命令セットはそれぞれ、各種命令セットエンコーディングを有するが、これらは、条件付分岐命令に対する共通の命令エンコーディングを有するように各命令セットの少なくとも条件付分岐命令に関してオーバラップしている。
【００１７】
図２は、第１命令セットと第２命令セットとのエンコーディング間の関係を説明しているベン図である。説明のように、命令セット間の共通部分は、各命令セットの少なくとも条件付分岐命令を含む。その結合部分は、少なくとも１つのプリディケーション命令（後述する）だけでなく少なくともいくつかの非条件付分岐命令も含む。各命令セットは、他の命令セットで存在しないか又は別個使用されている特定の処理動作に対応する命令エンコーディングを含む固有部分を有する。例示では、第２命令セットは、少なくともいくつかの固有の非条件付分岐命令を含む。全ての非条件付分岐命令のエンコーディングが共通しかつ共通部分の範囲にあることも他の実施態様において可能である。
【００１８】
図３は、命令フェッチユニット１６内の分岐予測メカニズムを概略的に説明している。命令キャッシュ１７は、フェッチアドレスレジスタ１８内に記憶されているフェッチアドレスから命令をフェッチする。フェッチアドレスレジスタ１８は、プログラム命令が命令パイプライン１４に発行される時それらプログラム命令と関連付けられるアドレスを示すプログラムカウンタ値を記憶する。命令キャッシュ１７は、パイプラインに発行される僅少なプログラム命令を局所的に記憶する小型のキャッシュである。プログラム命令と関連付けられたフェッチアドレス（プログラムカウンタ値）は、それらが関連するプログラム命令と共に命令パイプラインに伝達される。実際、命令キューが提供されてもよいが、これは、紙面の都合上本明細書中に説明されていない。
【００１９】
本発明の当業者なら分かるように、先行する命令の最終結果が確定する前に命令フェッチユニット１６は、命令をプリフェッチしてこれらを命令パイプライン１４に発行する。従って、フェッチされた命令のシーケンスは、先のプログラムフローの予測に基づいている。プログラムフローは通常シーケンシャルであるが、分岐命令はこれを変更できるため、分岐命令が識別され、予測が先の分岐に関係なくなされることが重要である。
【００２０】
図３で説明されている分岐命令メカニズムは、プログラムフロー内で以前出現した分岐命令のシーケンスのテイクンされた又はテイクンされなかった結果を記憶するグローバルヒストリレジスタ２０を含む。このパターン結果は、出現した分岐命令を識別するために、及びその出現した分岐命令に対するテイクン存否予測を記憶できるグローバルヒストリバッファ２２（他の可能な実施態様では複数のヒストリバッファ又はレジスタを有してもよい）にアドレス指定するために使用される。グローバルヒストリバッファ２２のアドレス指定は、命令アドレスの一部に依存してもよい。グローバルヒストリレジスタ２０はその時、予測された結果を用いてヒストリ更新回路３１で更新され、次回フェッチされる条件付分岐命令と以前出現した分岐の結果との間の相関関係に基づく次回出現する条件付分岐命令に対する結果を予測するために使用される。グローバルヒストリ値を更新する試みにより予測精度が明らかに向上する。行われた予測が不適当と判明した場合、その時グローバルヒストリレジスタ値２０は引続き訂正され、グローバルヒストリバッファ内に記憶された予測が修復される。所望の予測ヒステリシス度を提供するために、予測は例えば、強い分岐成立状態（ｓｔｒｏｎｇｌｙ  ｔａｋｅｎ）又は弱い分岐成立状態（ｗｅａｋｌｙ  ｔａｋｅｎ）、弱い分岐不成立状態（ｗｅａｋｌｙ  ｎｏｔ  ｔａｋｅｎ）及び強い分岐不成立状態（ｓｔｒｏｎｇｌｙ  ｎｏｔ  ｔａｋｅｎ）のようにマルチレベルにすることができる。
【００２１】
分岐予測のもう１つの態様では、出現した分岐先命令の分岐先アドレスを可能な限り迅速に確定し、又は少なくとも予測できる。分岐先アドレスは、関連した分岐命令がフェッチされる時に確定されなくてもよいが、その分岐命令が以前出現した場合、その時分岐先は、その分岐命令により以前使用された分岐先と同一であることを十分に予測させる。従って、分岐先バッファ２４は、分岐先アドレス又はテイクンされた分岐をキャッシュするような働きをする。これらのキャッシュされた分岐先アドレスはその時、予測された分岐先アドレスに基づく分岐先位置からプリフェッチユニットが命令のフェッチを開始できるよう使用されうる。
【００２２】
分岐識別回路２６は、その部分的ハードワイヤードなデコーディングに基づくプログラム命令ストリームでフェッチされた分岐命令を識別するような働きをする。これらの分岐命令は、両方の命令セットに共通な条件付分岐命令及び非条件付分岐命令を含む。（共通しない非条件付分岐命令エンコーディングはデコードされないが、それらが稀にプリディケートされた場合にはテイクンされないだけである。）このデコーディングは、第１及び第２命令セットが共通のエンコーディングを共有するために簡略化される。分岐命令識別回路２６はまた、他の分岐予測メカニズムが関連する分岐命令について以前出現したことを示さない場合に使用されるいずれかの分岐命令形式で出現した分岐命令に関してテイクンされなかったインディケーションをデフォルトする。分岐命令識別回路２６による分岐命令の識別はまた、グローバルヒストリレジスタ２０、グローバルヒストリバッファ２２及び分岐先バッファ２４のアクションをトリガーするために使用されて前述した命令フェッチアドレスレジスタ１８内に記憶された命令フェッチアドレスに基づいてそれらの各種参照及び更新をなす。予測生成回路３０は、分岐のテイクンされた予測を命令パイプラインに発行する。（命令セット内にプリディケーション命令が無い場合、非条件付分岐はその時、そのような分岐が予測されずにテイクンされた場合にフラッシュされるため、分岐命令識別回路２６によりデコードされる必要がない。予測されたものがテイクンされた場合、分岐先バッファ２４はその時、テイクンされた結果を生成してグローバルヒストリレジスタ２０に転送する。）
【００２３】
図４は、任意数の次のプログラム命令（それ自身が条件付であってもなくてもよい）をプリディケートする（例えば、条件をレンダリングする）ために使用されうるプリディケーション命令ＩＴを概略的に説明している。プリディケーション命令ＩＴは、自身の演算を制御する条件コードｃｃを指定する。これらの条件コードは、ゼロフラグの状態、キャリーフラグの状態等にすることができる。ＩＴ命令はまた、プリディケートされた個々のプログラム命令が条件コードがパス時又は条件コードがフェイル時のいずれかに関係なく実行されることに関するインディケーションと共にプリディケートする次のプログラム命令の数を指定する。
【００２４】
本発明の実施態様が添付図面を参照して本明細書中に詳述されたが、本発明がそれらの態様のみに限定されず、当業者によって、特許請求の範囲で定義されている本発明の範囲及び精神から逸脱することなく、そこに様々な変更や改良をもたらしうることが理解されよう。
【図面の簡単な説明】
【００２５】
【図１】図１は、処理動作を制御するために対応する命令セットをそれぞれ有する複数の状態をサポートするデータ処理装置を概略的に説明している。
【図２】図２は、第１命令セットと第２命令セットとの間の関係を説明しているベン図である。
【図３】図３は、図１のシステム内で分岐予測メカニズムを概略的に説明している図である。
【図４】図４は、プリディケーション命令を概略的に説明している図である。
【符号の説明】
【００２６】
１２  命令デコーダ
１４  パイプライン
１８  フェッチアドレス
２０  グローバルヒストリレジスタ
３１  ヒストリ更新
【図１】
2006285996.tif 000003
【図２】
2006285996.tif 000004
【図３】
2006285996.tif 000005
【図４】
2006285996.tif 000006
【外国語明細書】
2006285996.tif 000007
2006285996.tif 000008
2006285996.tif 000009
2006285996.tif 000010
2006285996.tif 000011
2006285996.tif 000012
2006285996.tif 000013
2006285996.tif 000014
2006285996.tif 000015
2006285996.tif 000016
2006285996.tif 000017
2006285996.tif 000018
2006285996.tif 000019
2006285996.tif 000020
2006285996.tif 000021
2006285996.tif 000022
2006285996.tif 000023
2006285996.tif 000024