(57)【特許請求の範囲】
【請求項１】
複数個の演算論理装置オペレーションのうちのひとつを指定する第１のフィールドと、該第１のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第２のフィールドとを有するデータ処理命令語に応答してデータを処理する装置であって、
該複数個の演算論理オペレーションのうちどれか該第１のフィールドにより指定されるかにより決まる処理サイクル数で、該第１のフィールドにより指定された演算論理装置オペレーションを実行する演算論理装置と、
該複数個のシフトオペレーションのうちどれが該第２のフィールドにより指定されるかにより決まる処理サイクル数で、該第２のフィールドにより指定されたシフトオペレーションを実行するシフタと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクルの数を、該第１のフィールドと該第２のフィールドの両方に依存して変える命令デコーダと、
を含むデータ処理装置。
【請求項２】
請求項１記載の装置において、演算論理オペレーションとシフトオペレーションとの１個または複数の組合せに対して、前記演算論理装置と前記シフタとが前記演算論理オペレーションと前記シフトオペレーションとを順次実行する、データ処理装置。
【請求項３】
請求項１、２記載の装置において、前記シフトオペレーションは、
シフト量があらかじめ決められたレベル以上であるフルシフトオペレーションと、
シフト量があらかじめ決められたレベル未満である単純シフトオペレーションと、
のうちの一方である、データ処理装置。
【請求項４】
請求項１、２、３記載の装置において、前記演算論理装置オペレーションは、
１個または複数のオペランドによる論理オペレーションと、
１個または複数のオペランドによる算術オペレーションと、
のうちの一方である、データ処理装置。
【請求項５】
請求項３、４記載の装置において、
フルシフトオペレーションと論理オペレーション、または単純シフトオペレーションと算術オペレーションを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に、前記命令デコーダはＸ処理サイクルを許容することと、
フルシフトオペレーションと算術オペレーションとを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に、前記命令デコーダはＸより大きいＹ処理を許容することと、
を含む、データ処理装置。
【請求項６】
請求項５記載の装置において、Ｙ＝２でＸ＝１である、データ処理装置。
【請求項７】
複数個の演算論理装置オペレーションのうちのひとつを指定する第１のフィールドと、該第１のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第２のフィールドとを有するデータ処理命令語に応答してデータを処理する方法であって、
該複数個の演算論理オペレーションのうちどれが該第１のフィールドにより指定されるかにより決まる処理サイクル数で、該第１のフィールドにより指定された演算論理装置オペレーションを実行するステップと、
該複数個のシフトオペレーションのうちどれが該第２のフィールドにより指定されるかにより決まる処理サイクル数で、該第２のフィールドにより指定されたシフトオペレーションを実行するステップと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクル数を、該第１のフィールドと該第２のフィールドの両方に依存して変えるステップと、を含む、データ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ処理の分野に関するものである。特に本発明はデータ処理システム内で命令の実行に許容される処理サイクルの数を制御することに関するものである。
【０００２】
【従来の技術】
異なるデータ処理命令語は、次の命令を始めることができる前に実行するのに要する処理サイクル（クロックサイクル）の数が異なることが、データ処理システムの分野では知られている。システムが実行するのに要する処理量が極めて少ない命令語もあれば（たとえばスワップレジスタデータ命令）、完了するのに非常に多くの処理サイクルを要する命令語もある（たとえば多重ロード命令）。
【０００３】
シングルタイプの命令の場合、いくつかの特定の命令は他の命令よりも高速で実行することが可能であることも知られている。たとえば、命令の中の定数により直接指定される少ないビット数を動く単純なシフトは、レジスタから読出された値により指定される多くのビット数を通る複雑な演算シフトよりも少ない処理数で実行することができる。
【０００４】
コンピュータに関するもうひとつの傾向は、プログラム命令語に含まれるビット数が増えていることである。８ビットまたは１６ビットの命令語から３２ビットまたは６４ビットの命令語へと動いてきた。このような大きな命令に関して命令セットのスペースを効率よく使うために、アドバンストＲＩＳＣマシーンズ社（Ａｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅｓ  Ｌｉｍｉｔｅｄ）製のＡＲＭ６のようなマイクロプロセッサにおいて、２個以上のフィールドを有するプログラム命令語を含み、各フィールドは特定の型の演算論理装置オペレーション、またはシフトオペレーションを指定することが提案された。このようにして、符号化密度を改良することができる。この技術は特に簡略命令セットコンピュータに適しており、このコンピュータでは、多数のもっと複雑で特化された命令を提供するために、多くの命令セットビットスペースを使うという代替案は不適当なのである。
【０００５】
２個以上のフィールドを有し、各フィールドがひとつの命令タイプを指定するというプログラム命令語に関しては、異なるタイプの命令が共に、たとえばシフタとか加算器とかのプロセッサ内の１個しかないハードウエア資源を使いたがるという別の問題が生じる。そのため、ハードウエア資源に対して衝突する要求をすべて満足させるために、プログラム命令語を実行するのに許容されなければならない処理サイクルの数が多くなる。このことは実行をもっと高速にするという処理システムの絶えざる狙いに逆行することである。
【０００６】
【発明が解決すべき課題】
本発明の課題はデータ処理システムにおいて、命令を実行するのに許容される処理サイクルの数を制御することにより、実行の高速化を図ることである。
【０００７】
【課題を解決するための手段】
一側面から見ると、本発明は、複数個の演算論理装置オペレーションのうちのひとつを指定する第１のフィールドと、該第１のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第２のフィールドとを有するデータ処理命令語に応答してデータを処理する装置を提供する。
該データ処理装置は、
該複数個の演算論理オペレーションのうちどれが該第１のフィールドにより指定されるかにより決まる処理サイクル数で、該第１のフィールドにより指定された演算論理装置オペレーションを実行する演算論理装置と、
該複数個のシフトオペレーションのうちどれが該第２のフィールドにより指定されるかにより決まる処理サイクル数で、該第２のフィールドにより指定されたシフトオペレーションを実行するシフタと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクルの数を、該第１のフィールドと該第２のフィールドの両方に依存して変える命令デコーダと、
を含む。
【０００８】
本発明では、演算論理装置オペレーションとシフトオペレーションとを独立に指定する複数のフィールドをデータ処理命令語が有するデータ処理システムにおいて、たとえこれらのオペレーションが共通のハードウエア資源を共有したとしても、両方のフィールドに依存して許容される処理サイクル数を選択することができる。このように、演算論理装置オペレーションとシフトオペレーションの組合せの最悪の場合のみ多くの処理数が許されるのを必要とするが、もっと一般的で単純な組合せの場合には、少ない処理数を使うことが許される。
【０００９】
上述の技術は、演算論理オペレーションとシフトオペレーションとが全く独立しているが、ある組合せが他の組合せより長い作動時間を要するという環境で使うことができよう。しかしながら本発明は、演算論理オペレーションとシフトオペレーションとの１個または複数個の組合せに対して、前記演算論理装置と前記シフタとが前記演算論理オペレーションと前記シフトオペレーションとを順次実行するという実施例において、特に有用である。
【００１０】
そのデータ処理命令語が必要とする処理サイクルの合計数を増やす必要があるかどうかを決定するとき、演算論理オペレーションとシフトオペレーションを順次実行すると、各々は他方が完了するのに要する時間に、より敏感になる。
【００１１】
シフトオペレーションに速いのと遅いのとの違いがあるのは、シフトオペレーションが以下の一方であると考えてよい。
シフト量があらかじめ決められたレベル以上であるフルシフトオペレーションと、
シフト量があらかじめ決められたレベル未満である単純シフトオペレーション。
【００１２】
あらかじめ決められたレベルよりもシフト量が少いシフトオペレーションは、他のオペレーションと共有されない自分専用のシフタにより処理することができる。このようにしてシフト量の少ないものはもっと高速で処理することができる。自分専用のシフタにより処理すべく選択されるシフトオペレーションは、典型的なデータ処理オペレーションの中で比較的一般的であるが、比較的簡単に解読して実行できるのが選ばれる。
【００１３】
演算論理装置オペレーションには多くの異なる形式がある。これらのオペレーションを分けるひとつの方法として、演算論理装置オペレーションは以下のうちの一方であるとする。
１個または複数のオペランドによる論理オペレーションと、
１個または複数のオペランドによる算術オペレーション。
典型的には、算術オペレーションの方が論理オペレーションよりかなり複雑なので、処理に要する時間が長い（たとえば、一連のビット値に沿って桁上げを処理することが必要な場合）。
【００１４】
演算論理装置オペレーションとシフトオペレーションとを上述のように分けることが有効な例として、
フルシフトオペレーションと論理オペレーション、または単紙シフトオペレーションと算術オペレーションを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に前記命令デコーダはＸ処理サイクルを許容する場合と、
フルシフトオペレーションと算術オペレーションとを含むデータ処理命令に応答して、次の処理命令語の実行を始める前に、前記命令デコーダはＸより大きいＹ処理を許容する場合と、
がある。
ＹがＸより大きいという条件で、ＸとＹの値は何種類もの値を取り得ることが理解されよう。しかしながら、典型的な高度に最適化された処理装置（たとえばＲＩＳＣプロセッサ）では、Ｙ＝２でＸ＝１である。
【００１５】
もうひとつの側面として本発明は、複数個の演算論理装置オペレーションのうちのひとつを指定する第１のフィールドと、該第１のフィールドからは独立していて複数個のシフトオペレーションのうちのひとつを指定する第２のフィールドとを有するデータ処理命令語に応答してデータを処理する方法であって、以下のステップを含むものを提供する。
該複数個の演算論理オペレーションのうちどれが該第１のフィールドにより指定されるかにより決まるサイクル数で、該第１のフィールドにより指定された演算論理装置オペレーションを実行するステップと、
該複数個のシフトオペレーションのうちどれが該第２のフィールドにより指定されるかにより決まる処理サイクル数で、該第２のフィールドにより指定されたシフトオペレーションを実行するステップと、
次の処理命令語の実行を始める前に、該データ処理命令語の実行に許される処理サイクル数を、該第１のフィールドと該第２のフィールドの両方に依存して変えるステップ。
【００１６】
【発明の実施の形態】
次に、本発明について図面を参照しながら説明する。
図１はマイクロプロセッサ回路２を示す。マイクロプロセッサ回路２には、アドレスバス（図示せず）上に現在現われているアドレスを記憶するためのアドレスレジスタ４が含まれている。アドレスインクレメンタ回路６は、アドレスレジスタ４の中に記憶されるアドレスを高速で増分する役目を果たす。このことはメモリロケーションなどに高速で逐次アクセスを行うために望ましいことである。命令パイプラインと読出しデータレジスタのユニット８は、マイクロプロセッサ回路２に加えるためにメモリから読出したデータ処理命令語を記憶する役を果たす。命令パイプライン８の上部にあるデータ処理命令語は、命令デコーダと制御論理装置のユニット１０に加えられ、ここで少なくとも部分的に解読される。この解読は、そのデータ処理命令語を完全に処理するために、マイクロプロセッサ回路２の中の他の要素を命令デコーダと制御論理装置のユニット１０が適切に駆動することができる程度に行われる。レジスタバンク１２は処理すべきデータ語を記憶するために設けられている。所定の機能を果たすために最適化されている特別の処理ユニットとして、マイクロプロセッサ回路２の中に、乗算器１４、バレルシフタ１６および演算論理装置１８が含まれている。これらの機能ユニットはマイクロプロセッサ回路２の中で必要とされる処理操作の大部分を扱う。デバッグ回路２０は、開発中にマイクロプロセッサ回路を組込んだシステムのハードウェアのデバッグを支援するためのものである。書込みデータレジスタバンク２２はマイクロプロセッサ回路２から出力されるデータ値をバッファする役を果たす。
【００１７】
図２は複数個の演算論理装置のオペレーションのうちのひとつを指定する第１のフィールド３２と、複数個のシフトオペレーションのうちのひとつを指定する第２のフィールド２８とを有するデータ処理命令語を示す。この命令の例はアドバンストＲＩＳＣマシンズ社（Ａｄｖａｎｃｅｄ  ＲＩＳＣ  ＭａｃｈｉｎｅｓＬｉｍｉｔｅｄ）製のＡＲＭ６プロセッサの命令セットから取ったものである。以下、このデータ処理命令語が解読されて適用されるやり方に修正を加えることにより、本発明のオペレーションの一例を説明する。
【００１８】
データ処理命令語の中で３１ビットから２８ビットまでは条件フィールド２４が占めている。この条件フィールド２４はデータ処理命令語全体の条件付実行を可能にするものであって、それはマイクロプロセッサ回路２の中の状態フラグが条件フィールド２４の中に特定されている条件に整合しているか否かに依る。
【００１９】
ビット２７と２６はこの特別のデータ処理命令語の場合、常に共にゼロである。
ビット２５はＩビットと呼ばれるもので、データ処理命令語の最下位の１２ビット（すなわちビット１１から０）が解読される方法、すなわち即時の値を使うのか、それともレジスタ内に記憶されている値を使うのかを指定する。
【００２０】
第１のフィールド３２（ビット２４から２１）は、演算論理装置１８とマイクロプロセッサ回路２内の他の要素との組によって実行される複数個の演算論理装置のオペレーションのうちの１個を選択するオペレーションコード（オペコード）を指定する。可能な演算論理装置オペレーションは１６種類あって、この形式を図２に示す。１６個の演算論理装置オペレーションのうち、８個は算術オペレーション（ＳＵＢ、ＲＳＢ、ＡＤＤ、ＡＤＣ、ＳＢＣ、ＲＳＣ、ＣＭＰ、ＣＭＮ）であり、８個は論理オペレーション（ＡＮＤ、ＥＯＲ、ＴＳＴ、ＴＥＱ、ＯＲＲ、ＭＯＶ、ＢＩＣ、ＭＶＮ）である。
【００２１】
ビット２０はＳビット３３と呼ばれ、条件フィールド２４が応答する条件フラグが、現在のデータ処理命令語により変えられるか否かを指示する。
次の４ビット３４（ビット１９から１６まで）は、このデータ処理命令語の第１のオペランドを提供するレジスタバンク１２の中のレジスタの数を指定する。
次の４ビット３６（ビット１５から１２まで）は、データ処理命令語の結果を書込むためのレジスタバンク１２内のレジスタを指定する。
【００２２】
最後の１２ビット２８（ビット１１から０まで）は実行すべきシフトオペレーションを指定している。前述のように、最下位の１２ビット２８の解読方法はＩビット３０に依存する。もしＩ＝０ならば、最下位の４ビット（ビット３から０まで）はレジスタバンク１２内のどのレジスタから値を取ってきて、それをシフトして第２のオペランドをつくるかを指定する。最上位の８ビット４０（ビット１１から４まで）は実行すべきシフトの性質と量とを指定する。シフトにはフィールド４０の中のビットに依存して、左論理シフト、右論理シフト、算術右シフトまたは右回転シフトがある。フィールド４０はまた実行すべきシフト量の値を保持するレジスタバンク１２内のレジスタを指定するか、またはこのシフト量を即時値として直接明記するかのいずれかを行う。Ｉ＝１のとき、最下位の８ビット（ビット７から０まで）は実行すべきシフト量を表わす即時値を明記する。このシフトは残りの４ビット（ビット１１から８まで）によって指定される。
【００２３】
この実施例では、０、１、２、３ビットのいずれかの値だけ位置をシフトする左論理シフトは、専用のシフタにより敏速に実行される単純シフトとして扱われる。残りのシフトはすべて実行時間がもっと長くかかるフルシフトとして扱われる。
【００２４】
図３は命令デコーダと制御論理装置１０が、演算論理装置オペレーションを指定する第１のフィールド３２と、シフトオペレーションを指定する第２のフィールド２８とをどのような方法で解読するかを示す。これらのフィールドの関連ビットはそれぞれの組合せ論理ブロック４２、４４に供給され、これらのブロックは論理オペレーションと算術オペレーションのいずれが指定されているのかということを示す出力と、単純シフトとフルシフトのいずれが指定されているのかを示す出力を供給する。これらの２個の出力はアンドゲート４６に供給され、ゲート４６はもしフルシフトと算術オペレーションとが共に指定されていれば、１という値を出力する。その他の組合せの場合はすべてアンドゲート４６の出力は０である。アンドゲート４６の出力は命令パイプラインに沿って命令の進行を制御する、すなわち次の命令が命令デコードと制御論理装置１０に加えられる前に、現在の命令を実行するのに許される時間を制御するのに使われる。
【００２５】
表１はそれぞれのサイクルカウントを生ずる演算オペレーションとシフトオペレーションの各種組合せを示す。
【００２６】
【表１】
0003619343.tif 000002
【００２７】
簡略命令セット計算回路のような高度に最適化されたマイクロプロセッサ回路２では、ほとんどすべての命令が１サイクル内で実行可能である。算術オペレーションとフルシフトとが同時に指定される最悪の場合だけは、マイクロプロセッサが完了するのに２クロックサイクルを許容しなければならない。
【図面の簡単な説明】
【図１】マイクロプロセッサ内の機能的要素を示す図。
【図２】演算論理装置オペレーションとシフトオペレーションとを指定する独立のフィールドを有する、データ処理命令語の形式と内容を示す図。
【図３】データ処理命令語の実行を完了するのに許される処理サイクル数を決めるために、図２の命令の解読を示す図。
【符号の説明】
２  マイクロプロセッサ
１８  演算論理装置
２８  第２のフィールド
３２  第１のフィールド
【図１】
0003619343.tif 000003
【図２】
0003619343.tif 000004
【図３】
0003619343.tif 000005