(57)【要約】【課題】多数組の命令セットを使用するデータ処理装置において、アプリケーションに対するコード密度を増加させながら、Nビット・データ通路のパフォーマンスを高める。【解決手段】２つの命令セットはプロセッサコア２内に完全なNビット・データ通路を用いて処理を制御する。一方の命令セットは３２ビットの命令セットであり、他方は１６ビットの命令セットである。両命令セットは永久的に設定され、かつ命令をデコードする関連のハードウェア３０、３６、３８を有する。【選択図】図３
2006079652.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する装置において、
Ｎビット・データ通路を有し、かつ複数のコア制御信号に応答するプロセッサ・コアと、
第１のパーマネント命令セットからのＸビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を用いる処理をトリガさせる第１のデコード手段と、
第２のパーマネント命令セットからのＹビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を用いる処理をトリガさせる第２のデコード手段であって、ＹがＸより小さい前記第２のデコード手段と、
受け取ったプログラム命令ワードに前記第１のデコード手段を用いる第１の処理モードか、又は受け取ったプログラム命令ワードに前記第２のデコード手段を用いる第２の処理モードを選択する命令セット・スイッチと
を含む前記装置。
【請求項２】
データを処理する方法において、
Ｎビット・データ通路を有し、かつ複数のコア制御信号に応答するプロセッサ・コアのために第１の処理モードか又は第２の処理モードかを選択するステップと、
前記第１の処理モードにおいて、第１のパーマネント命令セットからＸビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を用いる処理をトリガするステップと、
前記第２の処理モードにおいて、第２のパーマネント命令セットからのＹビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を用いる処理をトリガするステップであって、ＹがＸより小さいステップと
を含む前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関する。特に、本発明は、多数組のプログラム命令ワードを使用するデータ処理に関する。
データ処理システムは、プログラム命令ワードの制御により動作するプロセッサ・コアを使用しており、これらプログラム命令ワードはデコードされたときに、制御信号を発生してプロセッサ・コア内の異なる要素を制御し、必要な機能を実行することにより、プログラム命令ワードにより指定された処理を達成するために用いられる。
【０００２】
典型的なプロセッサ・コアは、与えられたビット幅のデータ通路を有するものとなり、このビット幅が与えられた命令に応答して操作することができるデータ・ワードの長さを制限している。データ処理の分野における傾向は、これらのデータ通路幅のたゆまなき増加、例えば、８ビット・アーキテクチャから１６ビット、３２ビット及び６４ビット・アーキテクチャへ漸次的な移行であった。これがデータ通路幅を増加させると同時に、命令セットは（ＣＩＳＣ及びＲＩＳＣフィロソフィーにおいて）可能とする命令数及びこれら命令のビット長を増加させた。例えば、１６ビット命令セットによる１６ビット・アーキテクチャの使用から３２ビット命令セットによる３２ビット・アーキテクチャの使用への移行があった。
【０００３】
増加したアーキテクチャ幅に向かう移行による問題は、前の世代の機械用に書かれたプログラム・ソフトウェアと逆互換性を保持したいことである。これに対処する１つの方法は、互換性モードにより新しいシステムを提供することであった。例えば、ディジタル・イクイップメント・コーポレーション（Ｄｉｇｉｔａｌ  Ｅｑｕｉｐｍｅｎｔ  Ｃｏｒｐｏｒａｔｉｏｎ）のＶＡＸ１１コンピュータは初期のＰＤＰ１１コンピュータ用の命令をデコードできるようにする互換性モードを有する。これは初期のプログラム・ソフトウェアを使用できるようにしているが、このような使用では、動作している新しい処理システムにおいて増大した機能を完全に活用するものではない。例えば、システムが実際に３２ビットの算術演算をサポートするハードウエアを有しているときに、多分、多段の１６ビットの算術演算のみを使用しているだけである。
【０００４】
このようなアーキテクチャ幅の変更に関連した他の問題は、新たに増大したビット幅の命令セットを使用するコンピュータ・プログラムの大きさが増大し勝ちということである（３２ビット・プログラム命令ワードは１６ビット・プログラム命令ワードの２倍のメモリ空間を占める。）。大きさにおけるこのような増大は、ある程度までは、単一の命令を実行して、従来、２つ以上の短い命令が必要と思われていた１オペレーションを指定することにより、相殺させることであるが、依然としてプログラム・サイズが増大する傾向にある。
【０００５】
この問題に対処する手法は、ユーザにそれ自身の命令セットを効果的に指定させることである。インターナショナル・ビジネス・マシン・コーポレーションにより製造されたＩＢＭ３７０コンピュータは、書き込み可能な制御ストアに関連するものであり、これを使用して、ユーザが所望の操作に対してプロセッサ・コアの異なる部分により命令プログラム・ワードをマッピングすることにより、それ自身に固有の命令セットを設定することができる。この手法は、良好な柔軟性が得られるが、高速度のオペレーションを得ることは困難であり、また都合悪いことに書き込み可能な制御メモリが集積回路の大きな領域を占める。更に、効率的な予約命令セットの設計がユーザにとって厄介なタスクである。
【０００６】
更に、単一の命令セットが異なる長さの複数のプログラム命令ワードを有しているシステムを設けることも知られている。この手法の１つの例はＭＯＳテクノロジーにより製造された６５０２マイクロプロセッサである。このプロセッサは、可変数のオペランド・バイトが続く８ビットのオペレーション・コードを使用している。このオペレーション・コードは、オペランドを識別し、かつ命令を実行することが可能となる前に、まずデコードされる必要がある。これは、多くのメモリ・フェッチを必要とし、また一定した既知長のプログラム命令ワード（即ち、オペレーション・コード及び任意のオペランド）に比較してシステム・パフォーマンスに大きな制約がある。
【０００７】
本発明は、１つの特徴から見ると、データを処理する装置を提供するものであって、前記装置は、
Ｎビット・データ通路を有し、複数のコア制御信号に応答するプロセッサ・コアと、
第１のパーマネント命令セットからＸビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を使用する処理をトリガさせる第１のデコード手段と、
第２のパーマネント命令セットからＹビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を使用する処理をトリガさせる第２のデコード手段であって、ＹがＸより小さい前記第２のデコード手段と、
受け取ったプログラム命令ワードにより前記第１のデコード手段を使用する第１の処理モードか、又は受け取ったプログラム命令ワードにより前記第２のデコード手段を使用する第２の処理モードかを選択する命令セット・スイッチとを含む。
【０００８】
本発明は、幅広基準のＸビット命令セット及びＮビット・データ通路（例えば、３２ビット・データ通路上で動作する３２ビット命令セット）を有するシステムにおいて、しばしば、Ｘビット命令セットの全機能が通常のプログラミングにおいて使用されていないことを認識している。その１例は、３２ビット分岐命令である。この分岐命令は、ごくまれにしか使用しない３２メガバイト・レンジを有している。従って、この分岐は、大抵の場合に、わずかな命令に対するものだけであって、３２ビット命令内の大抵のビットは何の情報も担うことがない。３２ビット命令セットを使用して書かれた多くのプログラムは、コード密度が低く、必要以上に多くのプログラム・メモリ空間を使用していることになる。
【０００９】
本発明は、完全Ｎビット・データ通路上で動作するのをそのままとする、別個のパーマネントＹビット命令セットを備えることにより、この問題に対処している。ただし、ＹはＸより小さい。従って、Ｘビット命令セットの複雑さを必要とすることなく、これらアプリケーションに対するコード密度を増加させながら、同時にＮビット・データ通路のパフォーマンスが得られる。
【００１０】
２つのパーマネント命令セットを備えることにおいて１つの共同作用が存在する。ユーザは、使用している命令セットを変更させてプログラムの環境を適合させる柔軟性が許容され、かつ製造者によって両命令セットが、Ｎビット・データ通路の使用を犠牲にすることなく、効率的に実施される（相対的なタイミングが臨界的になっているＲＩＳＣプロセッサのような高いパフォーマンスのシステムにおいて臨界的である。）。
【００１１】
この構成の他の利点は、Ｙビット命令セットにより動作するときは、単位時間当たりわずかなバイトのプログラム・コードが動作するので、プログラム・コードを記憶するメモリ・システムのデータ転送機能に課せられる要求の厳しさがそれだけ軽減される。これは複雑さ及びコストを軽減させるものである。
【００１２】
更に、本発明はこの分野における通常の傾向と逆方向に移行している。この傾向は、プロセッサの各新しい世代により、命令セットに更に多くの命令が付加され、かつ命令セットはこれに対応するためにますます広幅となる。これに対して、本発明は、完全な範囲の広幅の命令セットを必要としない状況で使用するように、広幅の複雑な命令セットから開始し、次いでより狭い命令セットを付加する（大きな数の命令に対して小さな空間による）。
【００１３】
第１の命令セット及び第２の命令セットが完全に従属していてもよいことは、理解されるであろう。しかし、本発明の好ましい実施例では、前記第２の命令セットが前記第１の命令セットにより提供されたオペレーションのサブセットを提供する。
【００１４】
前記プロセッサ・コアのハードウエア要素は両命令セットを容易に適合させるようにセットされてもよいので、前記第２の命令セットが前記第１の命令セットのサブセットであると仮定すると、更に効率的なオペレーションが可能になる。
【００１５】
既存のプログラム・命令セットに増大したビット長のプログラム命令ワードの命令セットを付加したときは、２つの命令セットからのプログラム命令ワードが直交していることを確認することが可能である。しかし、前記命令セット・スイッチは、この制約をなくすようにし、かつ前記第２の命令セットが前記第１の命令セットに対して非直交となるシステムを可能にする。
【００１６】
非直交の命令セットを使用できることは、システムの設計者の負担を軽減し、かつ他の点の命令セット設計をより効率的に処理できるようにする。
前記命令セット・スイッチは、何らかの手動介入によるハードウエア型式のスイッチであってもよい。しかし、本発明の好ましい実施例では、前記命令セット・スイッチが命令セット・フラグに対して応答する手段を備えているものであって、前記命令セット・フラグがユーザ・プログラム制御によりセット可能である。
【００１７】
前記命令セット・スイッチを使用してソフトウェア制御により第１の命令セットと第２の命令セットとの間で切り換えられるようにすると、かなり都合がよい。例えば、プログラマは、プログラムの大多数に関するコード密度を増加させるために、第２の命令セットをそのＹビット・プログラム命令に使用し、かつ電力の増大及び第１の命令セットの複雑さが要求されるプログラムの小部分についてはそのＸビット・プログラム命令ワードにより、第１の命令セットへ一時的に切り換えることもできる。
【００１８】
独立した２つの命令セットをサポートすると、システムに複雑さを付加させる恐れがある。本発明の好ましい実施例において、前記プロセッサ・コアは現在適用可能な処理ステータス・データを記憶するプログラム・ステータス・レジスタと、セーブしたプログラム・ステータス・レジスタとを備えるものであって、前記セーブしたプログラム・ステータス・レジスタは、プログラム例外が発生してプログラム処理例外の実行原因となるときに、メイン・プログラムに関連した処理ステータス・データを記憶するために用いられ、前記命令セット・フラグは前記処理ステータス・データの一部分である。
【００１９】
処理ステータス・データの一部として命令セット・フラグを設けると、例外が発生したときに、これをセーブするのが保証される。このようにして、１つの例外ハンドラが両処理モードにおける例外を処理することができ、また例外を処理する際にこれが重要なものであれば、セーブしたプログラム・ステータス・レジスタ内の前記セーブした命令セット・フラグをアクセスできるようにされてもよい。更に、前記例外ハンドラは、設計上の制約によりその速度又はコード密度を改善するように、いずれかの命令セットを使用できるようにされてもよい。
【００２０】
本発明の好ましい実施例は、命令セットが異なることによるビット長の相違に対処するために、前記プロセッサ・コアがプログラム・カウンタ・レジスタと、前記プログラム・カウンタ・レジスタ内に記憶されて次のプログラム命令ワードを指示するプログラム・カウントの値を増加させるプログラム・カウンタ・インクリメンタとを含むものであって、前記プログラム・カウンタ・インクリメンタは前記第１の処理モードに前記第２の処理モードと異なる増加ステップを適用する。
【００２１】
前記第２の命令セットの短いプログラム命令ワードは、前記第１の命令セットと同じような量の情報を含むことができないことを理解すべきである。これに適応するために、メモリ空間は、プログラム命令ワード内で指定することができるオペランド範囲を減少させることにより、第２の命令セット内で節減されることが好ましい。
【００２２】
本発明の好ましい実施例において、前記プロセッサ・コアは、前記第２の命令セットからのプログラム命令ワードが単一のフェッチ・サイクルを必要とし、かつ第１の命令セットからのプログラム命令ワードが複数のフェッチ・サイクルを必要とするように、Ｙビット・データ・バスによりメモリ・システムに接続される。
【００２３】
Ｙビット・データ・バス及びメモリ・システムの使用により、より費用の安価な総合システムを構築できるようにすると共に、少なくとも第２の命令セット用の各プログラム命令ワードのために単一のフェッチ・サイクルを利用可能にさせている。
【００２４】
第１のデコード手段及び第２のデコード手段は、完全に個別のものであってもよい。しかし、本発明の好ましい実施例において、前記第２のデコード手段は、前記第１のデコード手段の少なくとも一部分を再使用している。
【００２５】
前記第２のデコード手段により前記第１のデコード手段の少なくとも一部分を再使用することにより、総合回路領域を減少させている。更に、前記第１の命令セットが全般的に前記第２の命令セットほど複雑でなく、かつ同一のプロセッサ・コアを駆動しているので、再使用を可能とするかなりの量の前記第２のデコード手段が存在する。
【００２６】
本発明は、他の特徴から見ると、データを処理する方法を提供するものであって、前記方法は、
Ｎビット・データ通路を有するプロセッサ・コアのために第１の処理モードか又は第２の処理モードかを選択し、かつ複数のコア制御信号に応答するステップと、
前記第１の処理モードにおいて、第１のパーマネント命令セットからＸビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を使用する処理をトリガさせるステップと、
前記第２の処理モードにおいて、第２のパーマネント命令セットからＹビット・プログラム命令ワードをデコードして前記コア制御信号を発生し、前記Ｎビット・データ通路を使用する処理をトリガさせるステップであって、ＹがＸより小さい前記ステップと
を含む。
【００２７】
さて、添付図面を参照し、単なる例として本発明の一実施例を説明する。
図１はＹビット・メモリ・システム４に接続されたプロセッサ・コア２を含み、（集積回路の一部として形成される）データ処理システムを示す。この場合に、Ｙは１６に等しい。
【００２８】
プロセッサ・コア２はレジスタ・バンク６、ブース（Ｂｏｏｔｈｓ）乗算器８、バレル（ｂａｒｒｅｌ）シフタ１０、３２ビット算術論理演算器１２及び書き込みデータ・レジスタ１４を含む。プロセッサ・コア２とメモリ・システム４との間には、命令パイプライン１６、命令デコーダ１８及び読み出しデータ・レジスタ２０が配置されている。プロセッサ・コア２の一部分であり、メモリ・システム４をアドレス指定するプログラム・カウンタ・レジスタ２２が示されている。プログラム・カウンタ・インクリメンタ２４は、各命令を実行して、命令パイプライン１６のために新しい命令をフェッチしなければならないときに、プログラム・カウンタ・レジスタ２２内のプログラム・カウント値を増加させるため、使用される。
【００２９】
プロセッサ・コア２は種々の機能装置間のＮビット・データ通路（この場合には、３２ビット・データ通路）に関連している。動作において、命令パイプライン１６内の命令は命令デコーダ１８によりデコードされ、命令デコーダ１８はプロセッサ・コア２内の異なる機能要素に転送される種々のコア制御信号を発生する。プロセッサ・コアの異なる部分は、これらのコア制御信号に応答して、３２ビット乗算、３２ビット加算、及び３２ビット論理オペレーションのような３２ビットの処理オペレーションを実行する。
【００３０】
レジスタ・バンク６は現在のプログラミング・ステータス・レジスタ２６及びセーブしたプログラミング・ステータス・レジスタ２８とを含む。現在のプログラミング・ステータス・レジスタ２６はプロセッサ・コア２用の種々の条件及びステータス・フラグを保持している。これらのフラグは処理モード・フラグ（例えば、システム・モード、ユーザ・モード、メモリ破棄モード等）と共に、算術演算オペレーション、キャリー等において０結果の発生を表すフラグを含むものでもよい。セーブしたプログラミング・ステータス・レジスタ２８（このようにバンクされた複数のセーブしたプログラミング・ステータス・レジスタのうちの１つでよい。）は、処理モードスイッチをトリガする例外が発生すると、現在のプログラミング・ステータス・レジスタ２６の内容を一時的に記憶するために使用される。このようにして、例外処理はより高速かつより効率的に行われる。
【００３１】
現在のプログラミング・ステータス・レジスタ２６内には命令セット・フラグＴが含まれている。この命令セット・フラグは命令デコーダ１８及びプログラム・カウンタ・インクリメンタ２４に供給される。この命令セット・フラグＴがセットされると、システムは第２の命令セットの命令（即ち、Ｙビット・プログラム命令ワード、この場合では１６ビット・プログラム命令ワード）により動作する。命令セット・フラグＴは、第２の命令セットにより動作するときに、小さな増加ステップを取るようにプログラム・カウンタ・インクリメンタ２４を制御している。これは、第２の命令セットのプログラム命令ワードが小さいということと矛盾するものではなく、従ってメモリ・システム４のメモリ位置内により密に配置される。
【００３２】
先に述べたように、メモリ・システム４は１６ビット・データ・バスを介して読み出しデータ・レジスタ２０及び命令パイプライン１６に接続された１６ビット・メモリ・システムである。このような１６ビット・メモリ・システムは、高いパフォーマンスの３２ビット・メモリ・システムより簡単かつ安価である。このような１６ビット・メモリ・システムを使用すると、１６ビット・プログラム命令ワードは単一サイクルでフェッチされる。しかし、第２の命令セットからの３２ビット命令を使用すると（命令セット・フラグＴにより表示されている）、命令パイプライン１６用の単一３２ビット命令を復帰させるのに２つの命令フェッチを必要とする。
【００３３】
メモリ・システム４から必要とするプログラム命令ワードが復帰されると、命令デコーダ１８によりデコードされ、命令が１６ビット命令であるか又は３２ビット命令であるかに拘わらず、プロセッサ・コア２内で３２ビット処理を開始させる。
【００３４】
図１では、命令デコーダ１８が単一ブロックとして示されている。しかし、１以上の命令セットに対処するために、命令デコーダ１８は図２及び図３に関連して説明するように、もっと複雑な構造を有する。
【００３５】
図２は命令パイプライン１６及び単一命令セットによりコピーするための命令デコーダ１８を示す。この場合に、命令デコーダ１８は、３２ビット命令をデコードするように機能する第１のデコード手段３０のみを含む。この第１のデコード手段３０はプログラマブル・ロジック・アレー（ＰＬＡ）を使用して第１の命令セット（ＡＲＭ命令セット）をデコードして複数のコア制御信号３２を発生し、これらのコア制御信号をプロセッサ・コア２に供給している。更に、現在デコードされている（現在、コア制御信号３２を発生している）プログラム命令ワードは、命令レジスタ３４内にも保持される。プロセッサ・コア２内の各機能要素（例えば、ブース乗算器８又はレジスタ・バンク６）は、この命令レジスタ３４から直接それらの処理オペレーションに必要とされるオペランドを読み込む。
【００３６】
このような構成のオペレーションの特徴は、第１のデコード手段３０としてそれが動作するクロック・サイクルの初期においてその入力のうちの一定のもの（パイプＣのパイプライン段から出発する実線として示されているＰビット）を必要とすることである。これは、プロセッサ・コア２内の必要な要素を駆動するタイミングにより、コア制御信号３２が発生することを保証することにある。第１のデコード手段３０は比較的に大きく、かつ低速のプログラマブル・ロジック・アレー構造であり、従ってタイミングを考慮することが重要である。
【００３７】
命令のデコードを行わせるためにこのようなプログラマブル・ロジック・アレー構造を設計することは、当該技術分野において通常のことである。これらの入力から所望の出力を発生させることと共に、一組の入力が定義される。この場合に、指定された組の命令パイプラインから指定された組の出力を発生させるＰＬＡ構造を作り出すために、商業的に利用可能なソフトウェアが用いられている。
【００３８】
図３は第１の命令セット及び第２の命令セットを処理するように変更された図２のシステムを示す。命令セット・フラグＴにより第１の命令セットが選択されると、システムは図２に関連して説明されているように動作する。命令パイプライン１６における命令が第２の命令セットからのものであることを命令セット・フラグＴが表しているときは、第２のデコード手段３６が活性になる。
【００３９】
この第２のデコード手段は高速ＰＬＡ３８及び並列低速ＰＬＡ４０を使用して１６ビット命令（サム（Ｔｈｕｍｂ）命令）をデコードする。高速ＰＬＡ３８は、１６ビット・サム命令の複数ビット・サブセット（Ｑビット）を対応する３２ビットＡＲＭ命令のＰビットにマップさせるために使用され、これら３２ビットＡＲＭ命令は第１のデコード手段３０を駆動するために必要とされる。このマッピングの実行には比較的に小数のビットが要求されるだけなので、高速ＰＬＡ３８は比較的に浅くてもよく、従ってパイプＣの内容に応答して第１のデコード手段がコア制御信号３２を発生させるために十分な時間が得られるように、十分な速さで動作する。高速ＰＬＡ３８は、完全に命令をマッピングするために不必要に時間を費やすことなく、第１のデコード手段に対して対応する３２ビット命令の臨界的なビットを「だます」ように作用すると考えてよい。
【００４０】
しかし、完全３２ビット命令は、大幅な変更、及び大きな付加的な回路要素なしに動作することができるのであれば、プロセッサ・コア２が依然として必要としている。時間臨界的なマッピングを高速ＰＬＡ３８によって処理したことにより、並列に接続された低速ＰＬＡ４０は、１６ビット命令を対応する３２ビット命令にマッピングするために用いられる。このより複雑化したマッピングは、高速ＰＬＡ３８及び第１のデコード手段３０が動作するために費やす全時間に及ぶことがあり得る。重要なことは、３２ビット命令が、プロセッサ・コア２に作用するコア制御信号３２に応答して、十分な時間によりオペランドを読み取るために命令レジスタ３４内に存在しなければならないということである。
【００４１】
第２の命令セットをデコードするときに図３のシステムの総合的な動作は、第２の命令セットからの１６ビット命令を第１の命令セットからの３２ビット命令にこれらが命令パイプライン１６上を進行するに従って変換することにあることを理解すべきである。これは、第２の命令セットからの命令を第１の命令セット内の命令へ１対１でマッピングさせることが存在するのを保証するように、第２の命令セットを第１の命令セットのサブセットにすることにより、実施可能にされる。
【００４２】
命令セットフラグＴを設けると、第２の命令セットを第１の命令セットに対して非直交となるようにすることが可能である。これは、第１の命令セットが、何ら空きビットなしに、直交する更なる命令セットを検出してデコード可能にするために使用できる既存の命令セットとなる状況において、特に有用である。
【００４３】
図４は３２ビット命令のデコーディングを示す。図４の上端に、フェッチ・オペレーション、デコード・オペレーション、及び実行オペレーションを実行する連続的な処理クロック・サイクルが示されている。特定の命令（例えば、掛け算命令）が必要なときは、１以上の付加的な実行サイクルを付加することができる。
【００４４】
３２ビット命令４２は複数の異なるフィールドからなる。これらのフィールド間における境界は図７に後に示すように命令を区別するために異なる。
【００４５】
ビット命令４２内のいくつかのビットは、一次デコード・フェーズ内でデコードすることを必要とする。これらのＰビットはビット４〜７、２０及び２２〜２７である。第１のデコード手段３０が必要とし、かつ高速ＰＬＡ３８が「だまさ」なければならない複数のビットが存在する。これらのビットは第１のデコード手段に印加されてデコードされ、これによってデコード・サイクルの最初の部分の終りで適当なコア制御信号３２を発生させる必要がある。必要ならば、デコード・サイクルの終わりである限り、完全な命令のデコードを行うことができる。デコード・サイクルの終わりで、実行サイクル中にプロセッサ・コア２により命令レジスタ３４から命令内の複数のオペランドが読み出される。
【００４６】
図５は１６ビット命令を３２ビット命令にマッピングする１例を示す。太線が３２ビット命令内のＰビットにマッピングすることを必要とする１６ビット命令内のＱビットから、第１のデコード手段３０に印加することができるように出発している。これらのビットの大部分は直線的にコピーされるか、又は単純なマッピングに係わっていることが分かる。１６ビット命令内のオペランドＲｎ’、Ｒｄ及びイミディエイト（ｉｍｍｅｄｉａｔｅ、即値）は、それらの最上位ビットを０によりパディングして３２ビット命令を満たすことが必要である。このパディングは、３２ビット命令のオペランドが１６ビット命令のオペランドより大きな範囲を有する結果として必要とされるものである。
【００４７】
図５の最端に示す３２ビット命令の一般化したフォーマットにより、３２ビット命令は、１６ビット命令により表される命令のサブセットよりもかなり柔軟性があることが明らかである。例えば、３２ビット命令は、その命令を条件によって実行可能にさせる条件コードＣｏｎｄが先行している。これに対して、１６ビット命令はそれ自身、何の条件コードも有しておらず、マッピングされるべき３２ビット命令の条件コードは条件実行状態が「常に」と等価な「１１１０」値にセットされる。
【００４８】
図６はこのような命令の他のマッピングを示す。この場合に１６ビット命令は、図５に示したものと異なる形式のロード／ストア命令である。しかし、この命令も依然として３２ビット命令セットの単一データ転送命令のサブセットである。
【００４９】
図７は３２ビット命令セットに関する異なる１１形式の命令のフォーマットを示す。これらの命令は、順に、
１．データ処理ＰＳＲ転送、
２．乗算、
３．単一データのスワップ、
４．単一データの転送、
５．未定、
６．ブロック・データの転送、
７．分岐、
８．コ・プロセッサ・データの転送、
９．コ・プロセッサ・データのオペレーション、
１０．コ・プロセッサ・レジスタの転送、及び
１１．ソフトウェアの割込み
である。
【００５０】
この命令の詳細な説明は、アドバンスドＲＩＳＣマシン社により製造されたＡＲＭ６のデータ・シートに見い出すことができる。図７において太線枠内の命令は、図５及び図６に示されているものである。
【００５１】
図８は３２ビット命令セットに加えて設けられる１６ビット命令セットを示す。この命令セットの太線枠内の命令は、図５及び図６にそれぞれ示されているものである。この１６ビット命令セット内の命令は、単一の３２ビット命令セットに全てマッピングされてもよく、従って３２ビット命令セットのサブセットを形成する。
【００５２】
続いてこの命令セットにおける各命令間で転送されるフォーマットは、下記のことを指定する。即ち、
フォーマット１：Ｏｐ＝０，１．両オペレーションは条件コード・フラグをセットする。
2006079652.tif 000003
フォーマット２：Ｏｐ＝０，１．両オペレーションは条件コード・フラグをセットする。
2006079652.tif 000004
フォーマット３：３オペレーション・コード。大きなイミディエイトを構築するために使
用される。
2006079652.tif 000005
フォーマット４：Ｏｐは３オペレーション・コードを与え、全てのオペレーションはＭＯ
ＶＳ  Ｒｄ、Ｒｓ  ＳＨＩＦＴ＃Ｉｍｍｅｄｉａｔｅ５である。ただし
、ＳＨＩＦＴは
０はＬＳＬ、
１はＬＳＲ、
２はＡＳＲ
である。
ＡＲＭにより定義された０によりシフトする。
【００５３】
フォーマット５：Ｏｐ１＊８＋Ｏｐ２は３２ＡＬＵオペレーション・コードＲｄ＝Ｒｄｏ
ｐＲｎを与える。全てのオペレーションは条件コード・フラグをセット
する。オペレーションは、ＡＮＤ、ＯＲ、ＥＯＲ、ＢＩＣ（ＡＮＤ  Ｎ
ＯＴ）、ＮＥＧＡＴＥ、ＣＭＰ、ＣＭＮ、ＭＵＬ、ＴＳＴ、ＴＥＱ、Ｍ
ＯＶ、ＭＶＮ（ＮＯＴ）、ＬＳＬ、ＬＳＲ、ＡＳＲ、ＲＯＲ。
ＡＤＣ、ＳＢＣ、ＭＵＬＬの喪失。
０によりシフトし、ＡＲＭにより定義された３１より大である。
８特殊コード、ＬＯはレジスタ０〜７を指定し、ＨＩはレジスタ８〜１
５を指定する。
ＳＰＥＣＩＡＬはＣＰＳＲ又はＳＰＳＲである。
2006079652.tif 000006
８空コード
フォーマット６：Ｏｐは４オペレーション・コードを与える。全てのオペレーションは条
件コード・フラグをセットする。
2006079652.tif 000007
ＡＤＤをＡＤＤ  Ｒｄ，Ｒｓ，＃Ｉｍｍｅｄｉａｔｅ５と交換すること
ができる。
フォーマット７：ＰＣ＋オフセット（２５６ワード、１０２４バイト）をロードする。オ
フセットは整合されたワードでなければならないことに注意すべきであ
る。
2006079652.tif 000008
この命令は次の文字プールをアクセスするため、定数、アドレス等をロ
ードするために使用される。
フォーマット８：ＳＰ（ｒ７）＋２５６ワード（１０２４バイト）からのワードをロード
し、かつストアする。
：ＳＰ（ｒ７）＋２５６かバイトからのバイトをロードし、かつストアす
る。
2006079652.tif 000009
これらの命令はスタック及びフレーム・アクセス用のものである。
フォーマット９：ワード（又はバイト）、符号付きの３ビット
Ｉｍｍｅｄｉａｔｅオフセット（後処理による増加／減少）、強制再書
き込みをロードし、かつストアする。
Ｌはロード／ストアであり、Ｕはアップ／ダウン（加算／引算オフセッ
ト）、Ｂはバイト／ワードである。
2006079652.tif 000010
これらの命令はアレー・アクセスを目的とする。
オフセットはバイトに対して０〜７、またワードに対して０、４〜２８
を符号化する。
【００５４】
フォーマット１０：符号付きレジスタ・オフセット（前処理による増加／減少）によりワ
ード（又はバイト）をロード及びストアする。再書き込みなし。
Ｌはロード／ストア、Ｕはアップ／ダウン（加算／引算オフセット）
、Ｂはバイト／ワード
2006079652.tif 000011
これらの命令は、ベース＋オフセット・ポインタ・アクセスを目的と
し、また８ビットとの組合わせにより、ＭＯＶ、ＡＤＤ、ＳＵＢはか
なり速いイミディエイト・オフセット・アクセスを与える。
フォーマット１１：符号付き５ビット・イメディエイト・オフセット（前処理による増加
／減少）によりワード（又はバイト）をロード及びストアする。再書
き込みなし。
Ｌはロード／ストアであり、Ｂはバイト／ワードである。
2006079652.tif 000012
これらの命令は構造アクセス用を目的とする。
オフセットはバイトに対して０〜３１、またワードに対して０、４〜
１２４を符号化する。
フォーマット１２：多重ロード及びストア（強制再書き込み）
2006079652.tif 000013
Ｒｌｉｓｔはレジスタｒ０〜ｒ７を指定する。
これら命令のサブクラスは、一対のサブルーチン・コール命令及びリ
ターン命令である。
ｒ７がベースであり、かつビット７がｒｌｉｓｔにセットされるとき
のＬＭＤに対しては、ＰＣがロードされる。
ｒ７がベースであり、かつビット７がｒｌｉｓｔにセットされるとき
のＳＴＭに対しては、ＬＲがストアされる。
ｒ７がベース・レジスタとして使用されるときは、ｓｐが代わりに使
用される。
両者の場合には、フル下降スタックが実施される。即ち、
ＬＤＭはＡＲＭのＬＤＭＦＤと同様であり、ＳＴＭはＡＲＭのＳＴＭ
ＦＤと同様である。従ってブロック・コピーに対しては、エンド・ポ
インタとしてｒ７を使用する。ｒ７がベースでないときは、ＬＤＭ及
びＳＴＭはＡＲＭのＬＤＭＩＡ、ＳＴＭＩＡと同様である。
【００５５】
フォーマット１３：ロード・アドレス。この命令はＰＣ又はスタック・ポインタに８ビッ
トの符合なし定数を付加してその結果を宛先レジスタにストアする。
2006079652.tif 000014
ＳＰビットは、ＳＰ又はＰＣがソースであるか否かを表す。
ＳＰがソースであり、かつｒ７が宛先レジスタとして指定されている
ときは、ＳＰは宛先レジスタとして使用される。
フォーマット１４：条件分岐、＋／−１２８バイト。ただし、ｃｏｎｄは条件コード（Ａ
ＲＭに基づくものとして）定義され、ｃｏｎｄ＝１５はＳＷＩとして
符号化する（２５６のみがフルにされる必要がある。）。
フォーマット１５：長い分岐及びリンクのビット２２：１２をセットする。
フォーマット１６：長い分岐及びリンクを実行する。オペレーションはＳＵＢ  ｎｅｗｌ
ｒ、ｐｃ、＃４；ＯＲＲ  ｐｃ、ｏｌｄｌｒ、＃ｏｆｆｓｅｔ＜＜１
である。ｎｅｗｌｒ及びｏｌｄｒ手段はオペレーションの前後のｌｒ
レジスタを意味する。
【００５６】
前述のように、１６ビット命令セットは３２ビット命令セットに比較してオペランド範囲を減少させている。これに対して、１６ビット命令セットは、完全な３２ビットの命令セット用に設けられているレジスタ６のサブセット（図１を参照すること）を用いる。図９は１６ビット命令を設定することにより用いられるレジスタのサブセットを示す。
【図面の簡単な説明】
【００５７】
【図１】図１はプロセッサ・コア及びメモリ・システムに関連するデータ処理装置を概要的に示す。
【図２】図２は単一の命令セットを有するシステム用の命令及び命令デコードを概要的に示す。
【図３】図３は２つの命令セットを有するシステムに使用する命令パイプライン及び命令デコードを示す。
【図４】図４はＸビット・プログラム命令ワードのデコード処理を示す。
【図５】図５はＹビット・プログラム命令ワードをＸビット・プログラム命令ワードにマッピングする処理を示す。
【図６】図６はＹビット・プログラム命令ワードをＸビット・プログラム命令ワードにマッピングする処理を示す。
【図７】図７はＸビット命令セットを示す。
【図８】図８はＹビット命令セットを示す。
【図９】図９は第１の命令セット及び第２の命令セットに適用可能な処理レジスタを示す。
【図１】
2006079652.tif 000015
【図２】
2006079652.tif 000016
【図３】
2006079652.tif 000017
【図４】
2006079652.tif 000018
【図５】
2006079652.tif 000019
【図６】
2006079652.tif 000020
【図７】
2006079652.tif 000021
【図８】
2006079652.tif 000022
【図９】
2006079652.tif 000023