【手続補正書】
【提出日】平成17年7月15日(2005.7.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所定個のレジスタを持つ第１レジスタファイルと、
前記第１レジスタファイルのレジスタ数よりも多い個数のレジスタを持つ第２レジスタファイルと、
第１レジスタ指定領域を有する第１命令フォーマットで記述される命令と、第２レジスタ指定領域を有する第２命令フォーマットで記述される命令とを受け、この第１及び第２の命令フォーマットで記述される各命令を各々解読する命令解読器と、
前記命令解読器が前記第１命令フォーマットで記述される命令を解読すると、この命令を前記第１レジスタファイルに保持されたデータを用いて実行し、前記命令解読器が前記第２命令フォーマットで記述される命令を解読すると、この命令を前記第２レジスタファイルに保持されたデータを用いて実行する演算器と
を備えることを特徴とするデータ処理装置。
【請求項２】
前記請求項１に記載のデータ処理装置において、
前記第２レジスタ指定領域は、前記第１レジスタ指定領域よりも大きい
ことを特徴とするデータ処理装置。
【請求項３】
前記請求項１に記載のデータ処理装置において、
前記第１命令フォーマットで記述される命令と前記第２命令フォーマットで記述される命令との双方を保持する命令レジスタを備え、
前記命令解読器は、前記命令レジスタから命令が直接に供給される
ことを特徴とするデータ処理装置。
【請求項４】
前記請求項１に記載のデータ処理装置において、
前記命令解読器は、前記第１命令フォーマットで記述される命令を、前記第２命令フォーマットに変換することなく、解読する
ことを特徴とするデータ処理装置。
【請求項５】
前記請求項１に記載のデータ処理装置において、
前記命令解読器は、前記第２命令フォーマットで記述される命令を、前記第１命令フォーマットに変換することなく、解読する
ことを特徴とするデータ処理装置。
【請求項６】
前記請求項１に記載のデータ処理装置において、
複数個の演算器を有し、
前記第２命令フォーマットによって指定される複数の演算を、前記複数個の演算器を用いて並列に実行する
ことを特徴とするデータ処理装置。
【請求項７】
前記請求項１に記載のデータ処理装置において、
前記第２レジスタファイルは、前記第１レジスタファイルが持つ所定個のレジスタを含んで構成される
ことを特徴とするデータ処理装置。
【請求項８】
前記請求項７に記載のデータ処理装置において、
前記命令解読器は、前記第１命令フォーマットで記述される命令を受け、この命令が指定する第１レジスタファイルのレジスタのアドレスを、前記第２命令フォーマットで記述されるレジスタのアドレスに変換するアドレス変換部を備える
ことを特徴とするデータ処理装置。
【請求項９】
前記請求項８に記載のデータ処理装置において、
前記命令解読器は、各命令を記述する命令フォーマットが前記第１又は第２命令フォーマットであることを識別する識別手段を有し、
前記識別手段は、識別された命令フォーマットが前記第１命令フォーマットであるとき、前記アドレス変換部により変換されたアドレスを前記第１レジスタファイルに出力させる
ことを特徴とするデータ処理装置。
【請求項１０】
同一のデータ処理装置に与える命令の構成を示す２種の命令フォーマットであって、
所定個の命令フィールドを持つ第１命令フォーマットと、
前記第１命令フォーマットの命令フィールド数よりも多い命令フィールドを持つ第２命令フォーマットとを持ち、
前記第１命令フォーマットは、第１レジスタ指定領域を持ち、
前記第２命令フォーマットは、第２レジスタ指定領域を持ち、
前記相互にフォーマットが異なる第１及び第２の命令フォーマットで記述される各命令は、各々、直接的に解読される
ことを特徴とする命令フォーマット。
【請求項１１】
前記請求項１０に記載の命令フォーマットにおいて、
前記第２レジスタ指定領域は、前記第１レジスタ指定領域よりも大きい
ことを特徴とする命令フォーマット。
【請求項１２】
前記請求項１０に記載の命令フォーマットにおいて、
第１及び第２命令フォーマットで記述される各命令は、互いに他方のフォーマットに変換されずに、解読される
ことを特徴とする命令フォーマット。
【請求項１３】
前記請求項１０に記載の命令フォーマットにおいて、
第１及び第２命令フォーマットで記述される各命令は、可変長命令である
ことを特徴とする命令フォーマット。
【請求項１４】
所定ビット数の第１命令フォーマットで記述される命令と、前記第１命令フォーマットよりもビット数が多い第２命令フォーマットで記述される命令とを解読する命令解読方法であって、
前記第１命令フォーマットは、所定個のレジスタを持つ第１レジスタファイルからレジスタを選択するための第１レジスタ指定領域を持ち、
前記第２命令フォーマットは、前記第１レジスタファイルのレジスタ数よりも多い個数のレジスタを持つ第２レジスタファイルからレジスタを選択するためのレジスタ指定領域であって、第２レジスタ指定領域を持ち、
前記相互にフォーマットが異なる第１及び第２の命令フォーマットで記述される各命令を、各々、直接的に解読する
ことを特徴とする命令解読方法。
【請求項１５】
前記請求項１４に記載の命令解読方法において、
前記第２レジスタ指定領域は、前記第１レジスタ指定領域よりも大きい
ことを特徴とする命令解読方法。
【請求項１６】
前記請求項１４に記載の命令解読方法において、
前記第１及び第２命令フォーマットで記述される各命令を、互いに他方のフォーマットに変換せずに解読する
ことを特徴とする命令解読方法。
【請求項１７】
第１の命令セットと、前記第１の命令セットから互換性を有して拡張された第２の命令セットとを実行するデータ処理装置であって、
複数のレジスタからなる基本レジスタファイルと、
複数のレジスタからなる拡張レジスタファイルとを備え、
前記基本レジスタファイルの各レジスタは、前記第１の命令セットに含まれる命令及び前記第２の命令セットに含まれる命令によって指定され、
前記拡張レジスタファイルの各レジスタは、前記第２の命令セットのみに含まれる命令によって指定され、
前記第２の命令セットに含まれる幾つかの命令は、前記データ処理装置に複数の演算を並列に行わせる
ことを特徴とするデータ処理装置。
【請求項１８】
第１の命令コードを実行するデータ処理装置であって、
前記第１の命令コードによって指定される基本レジスタ及び拡張レジスタを備え、
前記第１の命令コードは、他のデータ処理装置によって実行される第２の命令コードと並列演算を実行するよう命令する少なくとも１つの命令コードを含み、前記第１の命令コードは前記第２の命令コードに対して互換性を有し、
前記他のデータ処理装置は、拡張レジスタを有さず、基本レジスタのみを有して、この基本レジスタを指定する前記第２の命令コードを実行し、
前記第２の命令コードは前記拡張レジスタを指定しない
ことを特徴とするデータ処理装置。
【請求項１９】
前記請求項１８に記載のデータ処理装置において、
前記第１の命令コードは、前記第２の命令コードに相当しない追加の命令コードを有し、
前記追加の命令コードは前記拡張レジスタを指定する
ことを特徴とするデータ処理装置。
【請求項２０】
前記請求項１８に記載のデータ処理装置において、
前記第１の命令コードは、モードを切り替えることなく実行される
ことを特徴とするデータ処理装置。
【請求項２１】
第１の命令コードを実行し、前記第１の命令コードは、他のデータ処理装置の第２の命令コードと互換性を有すると共に、前記第２の命令コードに含まれない少なくとも１つの並列演算命令コードを有するデータ処理装置であって、
前記第１の命令コードによって指定可能な基本レジスタと、
前記第１の命令コードによって指定可能な拡張レジスタとを備え、
前記第２の命令コードは、前記拡張レジスタを指定しない
ことを特徴とするデータ処理装置。
【請求項２２】
前記請求項２１に記載のデータ処理装置において、
前記第１の命令コードは、前記第２の命令コードに相当しない追加の命令コードを有し、
前記追加の命令コードは前記拡張レジスタを指定する
ことを特徴とするデータ処理装置。
【請求項２３】
前記請求項２１に記載のデータ処理装置において、
前記他のデータ処理装置は、
拡張レジスタを有さず且つ基本レジスタのみで構成された第２のレジスタセットを有し、
前記基本レジスタのみを有する第２のレジスタセットを指定する第２の命令セットを実行する
ことを特徴とするデータ処理装置。
【請求項２４】
前記請求項２１に記載のデータ処理装置において、
前記第１の命令コードは、モードを切り替えることなく実行される
ことを特徴とするデータ処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】データ処理装置、命令フォーマット及び命令解読方法
【技術分野】
【０００１】
本発明はＣＰＵ又はマイクロプロセッサ等と称されるデータ処理装置の改良に関し、より詳細には、プログラムの小型化に適した命令セットを有するデータ処理装置に関する。
【背景技術】
【０００２】
近年の半導体技術とプロセッサアーキテクチャ技術の進展に伴い、ＣＰＵと呼ばれるプログラム制御可能なデータ処理装置の性能は著しく向上している。このＣＰＵは、その応用分野によって、大きく２つに分類することができる。第１は汎用マイクロプロセッサであり、第２は各種制御機器や民生用途に用いられる組み込み用マイクロコントローラーである。第１の汎用マイクロプロセッサにおいて、最も重要視される項目は性能の向上であり、性能の向上を図るために、様々な技術が用いられている。これに対し、組み込み用マイクロコントローラーにおいては、性能向上も大きな項目の一つであるが、それにも増して、この性能向上に低コスト及び低消費電力を加えたこれ等３つの項目がバランスよく実現されることが重要である。この中で、特に重要な項目は、民生での応用の観点から、低コストの実現である。
【０００３】
低コストを実現するポイントは２点あり、第１はＣＰＵ自体（ＣＰＵコア面積）の縮小であり、第２はプログラムサイズ（ＲＯＭサイズ）の縮小である。ここで、近年では、ＣＰＵ性能の向上に伴い、同一のＣＰＵにおいて実現される機能が増大しており、それに応じてアプリケーションプログラムサイズも一層増大しているため、プログラムを格納するＲＯＭのサイズが、ＣＰＵコアの面積よりも、チップのコストに対して支配的になってきている。従って、如何にプログラムサイズの小さいＣＰＵを提供するかが、低コスト化を実現する大きな課題になっている。
【０００４】
この課題に対処する従来の技術を説明する。この技術は、汎用マイクロプロセッサの命令セットアーキテクチャに追加拡張を施し、プログラムサイズを縮小しようとするものである。
【０００５】
図２２に、この従来の技術によるMIPSアーキテクチャに基づくデータ処理装置の命令フォーマットの一例を示す。同図（ａ）の命令フォーマットは、レジスタ-レジスタ間演算命令について、基本命令語長が３２ビット固定のMIPSーII/IIIの命令フォーマットであり、同図（ｂ）の命令フォーマットは、基本命令語長が１６ビット固定の命令語長のMIPS１６の命令フォーマットである。
【０００６】
MIPSアーキテクチャは、３２個のレジスタを備えるため、MIPSーII/IIIの命令フォーマットにおいては、各５ビットのレジスタアドレス指定フィールドがあり、更に、３つのオペランドを指定する命令フォーマットであるため、３つのレジスタアドレス指定フィールドrs、rt、rdを備える。命令の動作及び機能については、６ビットのOPフィールド、５ビットのshamtフィールド、及び６ビットのfuncフィールドを用いて定義されており、全体で３２ビット固定長の命令となる。
【０００７】
これに対して、MIPS１６の命令セットでは、レジスタ-レジスタ間演算命令として、２種の命令フォーマットが定義されている。１つは、３ビットのレジスタアドレス指定フィールドｒｘ、ｒｙを２つ備え、５ビットのOPフィールド及び５ビットのfuncフィールドを用いて命令の動作及び機能を定義する２つのオペランド指定型の命令フォーマットである。他の一つは、３つの３ビットのレジスタアドレス指定フィールドｒｘ、ｒｙ、ｒｚを備え、５ビットのOPフィールド及び２ビットのFフィールドを用いて命令の動作及び機能を定義する３つのオペランド指定型の命令フォーマットである。
【０００８】
同図（ｂ）に示したMIPS１６の命令フォーマットでは、レジスタアドレス指定フィールドが３ビットしか使用できないため、元のMIPSーII/IIIのアーキテクチャが備える３２個のレジスタセットのうち、全てではなく、一部のレジスタしかアクセスすることができない。
【０００９】
MIPS１６の命令フォーマットの命令は、全てMIPSーII/IIIの命令フォーマットに置き換えることが可能であり、MIPS１６の命令フォーマットの命令をMIPSーII/IIIの命令フォーマットに置き換えることを命令の伸長と呼ぷ。
【００１０】
図２３は、前記MIPS１６の命令及びMIPSーII/IIIの命令を実行するデータ処理装置の要部を示すブロック図である。以下に、その動作を説明する。
【００１１】
命令フェッチユニット３００は、命令をフェッチするブロックであり、１６ビット固定長のMIPS１６の命令フォーマットによる命令列、又は、３２ビット固定長のMIPSーII/IIIの命令フォーマットによる命令列をフェッチして、命令伸長ユニット３１０に出力する。命令列がMIPS１６の命令フォーマットによるものか、MIPSーII/IIIの命令フォーマットによるものかは、モード設定信号によって常に指定される。
【００１２】
命令伸長ユニット３１０は、モード設定信号によって制御され、入力されたMIPS１６の命令フォーマットをMIPSーII/IIIの命令フォーマットに伸長するブロックであって、入力された命令がMIPSーII/IIIの命令フォーマットの場合には、伸長動作をせずに、そのまま出力する。伸長動作を行うか否かは、モード設定信号によって制御され、命令では判断することができない。モード設定信号は、プログラマブルに変更することが可能であり、任意のタイミングでモードを切り替えることができる。
【００１３】
命令解読器３２０は、命令伸長ユニット３１０から出力されたMIPSーII/IIIの命令フォーマットを解読して制御信号を生成するブロックである。この命令解読器３２０で生成された制御信号により、データ処理装置の動作が制御される。
【００１４】
以上のような構成を有するデータ処理装置においては、基本命令長が１６ビットのMIPS16の命令フォーマットによってプログラムされたプログラムと、基本命令長が３２ビットのMIPSーII/IIIの命令フォーマットによってプログラムされたプログラムとの双方が実行可能になる。従って、コード量を優先する場合には、１６ビット固定長のMIPS１６の命令フォーマットを用いてプログラムし、一方、性能を優先して多くのレジスタファイルをアクセスする必要がある場合には、MIPSーII/IIIの命令フォーマットを用いてプログラムすることが可能になり、性能とコードサイズとのトレードオフを取りながら、柔軟なプログラム開発が可能となる。但し、何れの命令フォーマットを使用するのかの選択は、システムによって固定か、又はタスク単位等のある程度の大きさのプログラム単位に限定されることになる。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ところで、マイクロプロセッサにおいて、信号処理等のように多くのレジスタを必要とするアプリケーションを実行する場合には、この信号処理等をより一層高速に行い得る高性能化を目差して、既存のレジスタに複数のレジスタを追加したい要求がある。この場合、既存の命令フォーマットよりも多数のレジスタを指定できる命令フォーマットを作成し、この命令フォーマットを既存の命令フォーマットに代えて使用することも考えられる。しかし、この考えはプログラムサイズが著しく増大する欠点がある。
【００１６】
そこで、前記従来技術を利用した次の技術が考えられる。即ち、既存の命令フォーマットに新たな命令フォーマットを追加し、この新たな命令フォーマットで多数のレジスタを指定する構成とし、この新たな命令フォーマットと既存の命令フォーマットとを前記従来技術のモード設定信号で切換える技術が考えられる。
【００１７】
しかしながら、前記従来技術のモード設定信号を用いる場合には、やはりコード量が増大する欠点を招く。即ち、命令フォーマットの切り換え時には、前記モード設定信号を発生させるための切換命令が必要であり、このため、前記両フォーマットで記述された命令を混在させようとすると、前記切換命令も多数必要とし、その結果、コード量が増大する欠点が生じる。
【００１８】
本発明の目的は、マイクロプロセッサにおいて、既存のレジスタに複数のレジスタを追加する場合に、複数種類の命令フォーマットを使用すると共に、これ等命令フォーマットで記述された混在する命令を前記従来技術のモード設定信号を用いることなく切換えて、コード量を有効に低減することにある。
【課題を解決するための手段】
【００１９】
前記課題を解決するために、本発明では、所定数のレジスタを指定可能な第１の命令フォーマットと、前記所定数を越える多数のレジスタを指定可能な第２の命令フォーマットとを使用し、これ等命令フォーマットをその命令フォーマットで記述された自己の命令自体で識別しながら、信号処理等を多数のレジスタを用いてより一層高速に行うこととする。
【００２０】
即ち、請求項１記載の発明のデータ処理装置は、所定個のレジスタを持つ第１レジスタファイルと、前記第１レジスタファイルのレジスタ数よりも多い個数のレジスタを持つ第２レジスタファイルと、第１レジスタ指定領域を有する第１命令フォーマットで記述される命令と、第２レジスタ指定領域を有する第２命令フォーマットで記述される命令とを受け、この第１及び第２の命令フォーマットで記述される各命令を各々解読する命令解読器と、前記命令解読器が前記第１命令フォーマットで記述される命令を解読すると、この命令を前記第１レジスタファイルに保持されたデータを用いて実行し、前記命令解読器が前記第２命令フォーマットで記述される命令を解読すると、この命令を前記第２レジスタファイルに保持されたデータを用いて実行する演算器とを備えることを特徴とする。
【００２１】
請求項２記載の発明は、前記請求項１に記載のデータ処理装置において、前記第２レジスタ指定領域は、前記第１レジスタ指定領域よりも大きいことを特徴とする。
【００２２】
請求項３記載の発明は、前記請求項１に記載のデータ処理装置において、前記第１命令フォーマットで記述される命令と前記第２命令フォーマットで記述される命令との双方を保持する命令レジスタを備え、前記命令解読器は、前記命令レジスタから命令が直接に供給されることを特徴とする。
【００２３】
請求項４記載の発明は、前記請求項１に記載のデータ処理装置において、前記命令解読器は、前記第１命令フォーマットで記述される命令を、前記第２命令フォーマットに変換することなく、解読することを特徴とする。
【００２４】
請求項５記載の発明は、前記請求項１に記載のデータ処理装置において、前記命令解読器は、前記第２命令フォーマットで記述される命令を、前記第１命令フォーマットに変換することなく、解読することを特徴とする。
【００２５】
請求項６記載の発明は、前記請求項１に記載のデータ処理装置において、複数個の演算器を有し、前記第２命令フォーマットによって指定される複数の演算を、前記複数個の演算器を用いて並列に実行することを特徴とする。
【００２６】
請求項７記載の発明は、前記請求項１に記載のデータ処理装置において、前記第２レジスタファイルは、前記第１レジスタファイルが持つ所定個のレジスタを含んで構成されることを特徴とする。
【００２７】
請求項８記載の発明は、前記請求項７に記載のデータ処理装置において、前記命令解読器は、前記第１命令フォーマットで記述される命令を受け、この命令が指定する第１レジスタファイルのレジスタのアドレスを、前記第２命令フォーマットで記述されるレジスタのアドレスに変換するアドレス変換部を備えることを特徴とする。
【００２８】
請求項９記載の発明は、前記請求項８に記載のデータ処理装置において、前記命令解読器は、各命令を記述する命令フォーマットが前記第１又は第２命令フォーマットであることを識別する識別手段を有し、前記識別手段は、識別された命令フォーマットが前記第１命令フォーマットであるとき、前記アドレス変換部により変換されたアドレスを前記第１レジスタファイルに出力させることを特徴とする。
【００２９】
請求項１０記載の発明の命令フォーマットは、同一のデータ処理装置に与える命令の構成を示す２種の命令フォーマットであって、所定個の命令フィールドを持つ第１命令フォーマットと、前記第１命令フォーマットの命令フィールド数よりも多い命令フィールドを持つ第２命令フォーマットとを持ち、前記第１命令フォーマットは、第１レジスタ指定領域を持ち、前記第２命令フォーマットは、第２レジスタ指定領域を持ち、前記相互にフォーマットが異なる第１及び第２の命令フォーマットで記述される各命令は、各々、直接的に解読されることを特徴とする。
【００３０】
請求項１１記載の発明は、前記請求項１０に記載の命令フォーマットにおいて、前記第２レジスタ指定領域は、前記第１レジスタ指定領域よりも大きいことを特徴とする。
【００３１】
請求項１２記載の発明は、前記請求項１０に記載の命令フォーマットにおいて、第１及び第２命令フォーマットで記述される各命令は、互いに他方のフォーマットに変換されずに、解読されることを特徴とする。
【００３２】
請求項１３記載の発明は、前記請求項１０に記載の命令フォーマットにおいて、第１及び第２命令フォーマットで記述される各命令は、可変長命令であることを特徴とする。
【００３３】
請求項１４記載の発明の命令解読方法は、所定ビット数の第１命令フォーマットで記述される命令と、前記第１命令フォーマットよりもビット数が多い第２命令フォーマットで記述される命令とを解読する命令解読方法であって、前記第１命令フォーマットは、所定個のレジスタを持つ第１レジスタファイルからレジスタを選択するための第１レジスタ指定領域を持ち、前記第２命令フォーマットは、前記第１レジスタファイルのレジスタ数よりも多い個数のレジスタを持つ第２レジスタファイルからレジスタを選択するためのレジスタ指定領域であって、第２レジスタ指定領域を持ち、前記相互にフォーマットが異なる第１及び第２の命令フォーマットで記述される各命令を、各々、直接的に解読することを特徴とする。
【００３４】
請求項１５記載の発明は、前記請求項１４に記載の命令解読方法において、前記第２レジスタ指定領域は、前記第１レジスタ指定領域よりも大きいことを特徴とする。
【００３５】
請求項１６記載の発明は、前記請求項１４に記載の命令解読方法において、前記第１及び第２命令フォーマットで記述される各命令を、互いに他方のフォーマットに変換せずに解読することを特徴とする。
【００３６】
請求項１７記載の発明のデータ処理装置は、第１の命令セットと、前記第１の命令セットから互換性を有して拡張された第２の命令セットとを実行するデータ処理装置であって、複数のレジスタからなる基本レジスタファイルと、複数のレジスタからなる拡張レジスタファイルとを備え、前記基本レジスタファイルの各レジスタは、前記第１の命令セットに含まれる命令及び前記第２の命令セットに含まれる命令によって指定され、前記拡張レジスタファイルの各レジスタは、前記第２の命令セットのみに含まれる命令によって指定され、前記第２の命令セットに含まれる幾つかの命令は、前記データ処理装置に複数の演算を並列に行わせることを特徴とする。
【００３７】
請求項１８記載の発明のデータ処理装置は、第１の命令コードを実行するデータ処理装置であって、前記第１の命令コードによって指定される基本レジスタ及び拡張レジスタを備え、前記第１の命令コードは、他のデータ処理装置によって実行される第２の命令コードと並列演算を実行するよう命令する少なくとも１つの命令コードを含み、前記第１の命令コードは前記第２の命令コードに対して互換性を有し、前記他のデータ処理装置は、拡張レジスタを有さず、基本レジスタのみを有して、この基本レジスタを指定する前記第２の命令コードを実行し、前記第２の命令コードは前記拡張レジスタを指定しないことを特徴とする。
【００３８】
請求項１９記載の発明は、前記請求項１８に記載のデータ処理装置において、前記第１の命令コードは、前記第２の命令コードに相当しない追加の命令コードを有し、前記追加の命令コードは前記拡張レジスタを指定することを特徴とする。
【００３９】
請求項２０記載の発明は、前記請求項１８に記載のデータ処理装置において、前記第１の命令コードは、モードを切り替えることなく実行されることを特徴とする。
【００４０】
請求項２１記載の発明のデータ処理装置は、第１の命令コードを実行し、前記第１の命令コードは、他のデータ処理装置の第２の命令コードと互換性を有すると共に、前記第２の命令コードに含まれない少なくとも１つの並列演算命令コードを有するデータ処理装置であって、前記第１の命令コードによって指定可能な基本レジスタと、前記第１の命令コードによって指定可能な拡張レジスタとを備え、前記第２の命令コードは、前記拡張レジスタを指定しないことを特徴とする。
【００４１】
請求項２２記載の発明は、前記請求項２１に記載のデータ処理装置において、前記第１の命令コードは、前記第２の命令コードに相当しない追加の命令コードを有し、前記追加の命令コードは前記拡張レジスタを指定することを特徴とする。
【００４２】
請求項２３記載の発明は、前記請求項２１に記載のデータ処理装置において、前記他のデータ処理装置は、拡張レジスタを有さず且つ基本レジスタのみで構成された第２のレジスタセットを有し、前記基本レジスタのみを有する第２のレジスタセットを指定する第２の命令セットを実行することを特徴とする。
【００４３】
請求項２４記載の発明は、前記請求項２１に記載のデータ処理装置において、前記第１の命令コードは、モードを切り替えることなく実行されることを特徴とする。
【００４４】
以上の構成により、請求項１ないし請求項２４記載の本発明では、命令自身が識別手段に入力されて、その命令のフォーマットの種類が識別される。この際、識別手段は、入力された命令自身、例えばその命令の第１番目の命令フィールドの内容に基づいて命令フォーマットの種類を識別する。従って、従来のようにモード設定信号等を発生させるための特別な命令を用いる必要がなく、コード量の無駄な増大がない。従って、異なるフォーマットで記述された複数の命令を混在させながら、プログラムサイズを有効に小さくすることが可能である。
【００４５】
しかも、第１の命令フォーマットで記述された命令では、第１のレジスタファイル内の個数の少ないレジスタのみを指定するのに対し、第２の命令フォーマットで記述された命令では、第２のレジスタファイル内の多数のレジスタを指定し、これにより、これ等多数のレジスタを用いた演算動作を１つの命令で記述できるので、メモリへのアクセス頻度が少なくなって、データ処理が高速化することになる。
【００４６】
以上のことから、プログラムサイズを有効に小さくしながら、使用するレジスタの個数を増やして、データ処理の高速化を図ることが可能である。
【００４７】
更に、本発明では、第３の命令フォーマットには複数の操作が記述されるので、１つの命令でこれ等複数の操作を並列に実行でき、データ処理がより一層高速化する。
【００４８】
加えて、本発明では、同一レジスタに対する命令コード上のビット割付けが、第１及び第２命令フォーマット間で異なる場合であっても、アドレス変換部でのアドレス変換により、同一レジスタのアドレスが同一にされるので、一方の命令フォーマットの命令セットをそのまま使用できる上位互換性が得られる。
【００４９】
更に、本発明では、第２の命令フォーマットが第１レジスタ指定領域よりも大きい第２レジスタ指定領域を有するので、前記第２の命令フォーマットにおいて複数の演算の並列操作を記述することができ、複数の演算の同時実行が可能である。
【発明の効果】
【００５０】
以上説明したように、請求項１ないし請求項２４記載の本発明によれば、第１の命令フォーマットと、この命令フォーマットよりも多数のレジスタを指定できる第２の命令フォーマットとを使用し、これ等の命令フォーマットを用いた命令を混在させつつ、その命令のフォーマットの種類を自己の命令自身で識別し、解読して、実行するので、従来のモード設定信号等を出力する特別の命令を用いる必要をなくして、プログラムサイズを有効に小さくしつつ、１つの命令で多数のレジスタを用いた動作を実行できて、信号処理等のデータ処理の処理速度を高速化できる。
【００５１】
更に、本発明によれば、複数の操作を記述する第３の命令フォーマットを用意したので、１つの命令で複数の操作を並列に実行でき、データ処理を一層高速化できると共に、プログラムサイズの更なる縮小が実現できる。
【００５２】
加えて、本発明によれば、同一レジスタに対する命令コード上のビット割付けが、第１及び第２命令フォーマット間で異なる場合であっても、アドレス変換により、同一レジスタのアドレスが同一にされるので、一方の命令フォーマットの命令セットをそのまま使用できる上位互換性が得られる。
【００５３】
更に、本発明によれば、第１レジスタ指定領域よりも大きい第２レジスタ指定領域を有する第２の命令フォーマットを追加したので、この第２の命令フォーマットにおいて複数の演算の並列操作を記述することができ、複数の演算の同時実行が可能である。
【発明を実施するための最良の形態】
【００５４】
以下、本発明の実施の形態について、図１から図２１を用いて説明する。先ず、データ処理装置の構成を説明する前に、本実施の形態で使用する３種の命令フォーマットについて説明する。
【００５５】
図１６から図１９は、本実施の形態のアーキテクチャに基づく第１の命令フォーマットの概要を示す。
【００５６】
前記第１の命令フォーマットは、最小命令語長を１バイトとした可変長命令であり、レジスタアドレス指定フィールド（レジスタ指定領域）としては、２ビットのフィールドが使用される。従って、１つのレジスタアドレス指定フィールドで４個のレジスタが指定可能である。本アーキテクチャでは、４個のアドレスレジスタと、４個のデータレジスタが定義される。命令動作として、アドレスレジスタを使用するか、データレジスタを使用するかを区別することにより、命令で前記合計８個のレジスタを使用できるように構成される。
【００５７】
図１６は、最小命令語長である１バイト目の第１の命令フィールドが、オペレーション指定フィールドと、任意の数のレジスタアドレス指定フィールドとから構成される第１の命令フォーマット（１）のビット割り付けを示したものである。以下、説明する。
【００５８】
第１の命令フォーマット（１)-(a）は、第１の命令フィールド内に２ビットのレジスタアドレス指定フィールドを２フィールド含み、最小命令語長である１バイトで構成される命令フォーマットであり、２つのオペランドが指定可能な命令フォーマットである。
【００５９】
第１の命令フォーマット（１)-(b）は、第１の命令フィールド内に２ビットのレジスタアドレス指定フィールドを２フィールド含み、更に付加情報フィールドを追加して、合計２バイト以上の命令語長を持つ命令フォーマットである。
【００６０】
第１の命令フォーマット（１)-(c）は、第１の命令フィールド内に２ビットのレジスタアドレス指定フィールドを１つ含み、最小命令語長である１バイトで構成される命令フォーマットであり、１つのオペランドが指定可能な命令フォーマットである。
【００６１】
第１の命令フォーマット（１)-(d）は、第１の命令フィールド内に２ビットのレジスタアドレス指定フィールドを１フィールド含み、更に付加情報フィールドを追加した２バイト以上の命令語長を持つ命令フォーマットである。
【００６２】
第１の命令フォーマット（１)-(e）は、第１の命令フィールド内にレジスタアドレス指定フィールドを含まず、最小命令語長である１バイトで構成される命令フォーマットであり、アドレスを用いたオペランド指定不可能な命令フォーマットである。
【００６３】
第１の命令フォーマット（１)-(f）は、第１の命令フィールド内にレジスタアドレス指定フィールドを含まず、更に付加情報フィールドを追加した２バイト以上の命令語長を持つ命令フォーマットである。
【００６４】
図１７は、図１６で示された個々のビット割り付けについて、具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。
【００６５】
図１８は、最小命令語長である１バイト目の第１の命令フィールドが命令語長指定フィールドからなり、第２の命令フィールドが、オペレーション指定フィールドと、任意の数のレジスタアドレス指定フィールドとから構成される第１の命令フォーマット（２）のビット割り付けを示したものである。以下、詳細に説明する。
【００６６】
第１の命令フォーマット（２)-(a）は、第２の命令フィールド内に２ビットのレジスタアドレス指定フィールドを２フィールド含み、２バイトで構成される命令フォーマットであり、２つのオペランドが指定可能な命令フォーマットである。
【００６７】
第１の命令フォーマット（２)-(b）は、第２の命令フィールド内に２ビットのレジスタアドレス指定フィールドを２フィールド含み、更に付加情報フィールドを追加して、合計３バイト以上の命令語長を持つ命令フォーマットである。
【００６８】
第１の命令フォーマット（２)-(c）は、第２の命令フィールド内に２ビットのレジスタアドレス指定フィールドを１つ含み、２バイトで構成される命令フォーマットであり、１つのオペランドが指定可能な命令フォーマットである。
【００６９】
第１の命令フォーマット（２)-(d）は、第２の命令フィールド内に２ビットのレジスタアドレス指定フィールドを１フィールド含み、更に付加情報フィールドを追加した３バイト以上の命令語長を持つ命令フォーマットである。
【００７０】
第１の命令フォーマット（２)-(e）は、第２の命令フィールド内にレジスタアドレス指定フィールドを含まず、２バイトで構成される命令フォーマットであり、アドレスを用いたオペランド指定が不可能な命令フォーマットである。
【００７１】
第１の命令フォーマット（２)-(f）は、第２の命令フィールド内にレジスタアドレス指定フィールド含まず、更に付加情報フィールドを追加した３バイト以上の命令語長を持つ命令フォーマットである。
【００７２】
図１９は、図１８で示された個々のビット割り付けについて、具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。
【００７３】
従って、前記図１６から図１９に示した第１の命令フォーマットでは、第１の命令フィールドは、第１から第Ｍの命令フィールドを最長命令語長Ｍとして、Ｎ命令語長（Ｎは１〜Ｍ間での整数）の可変長命令を特定するものである。また、この第１の命令フォーマットは、最小命令語長が１バイトであるという他にない特徴を備えるので、プログラムサイズの縮小に適した命令フォーマットとなっている。
【００７４】
図２０は、本データ処理装置に備える第１のレジスタファイル２２０を示す。この第１のレジスタファイル２２０は、４個のアドレスレジスタＡ０〜Ａ３と、４個のデータレジスタＤ０〜Ｄ３と、スタックポインタSP２２３と、内部のステータス情報及び制御情報を保持するPSW(Processor Status Word)２２４と、プログラムカウンタPC２２５とを含み、読み出しポートを２ポート、書き込みポートを１ポート有する。即ち、同時に２つのレジスタ（重複は可）の読み込みと、１つのレジスタの書き込みとを許す。
【００７５】
更に、図２１は、前記第１のレジスタファイル２２０のアドレスレジスタＡ０〜Ａ３及びデータレジスタＤ０〜Ｄ３へのアクセスについて、より詳細に示した図である。同図は、命令の中で指定されるレジスタ名と、レジスタアドレス指定フィールドで指定される命令コードでのビット割付と、物理的なレジスタにアクセスするための物理的なレジスタ番号、及びアクセスする対象となる物理的なレジスタ名を一覧にして示したものである。
【００７６】
図２１に示すように、第１の命令フォーマットにおいては、４個のアドレスレジスタＡ０〜Ａ３へアクセスするために命令内に指定される命令アドレス指定フィールドと、４個のデータレジスタＤ０〜Ｄ３へアクセスするために命令内に指定される命令アドレス指定フィールドとは、全く同一である。即ち、レジスタのアドレスを指定するために２ビット命令アドレス指定フィールドを使用し、命令動作そのものでアドレスレジスタにアクセスするか、データレジスタにアクセスするかを区別させている。
【００７７】
次に、本アーキテクチャの基本命令フォーマットである前記図１６及び図１８の第１の命令フォーマットに対して、追加拡張する第２の命令フォーマットのビット割り付けを図１に、更に追加拡張する第３の命令フォーマットのビット割付けを図３に示す。
【００７８】
図１に示した第２の命令フォーマットのビット割り付けは、最小命令語長である１バイト目の第１の命令フィールドが命令語長指定フィールドからなり、第２及び第３の命令フィールドが、オペレーション指定フィールドと、任意の数のレジスタアドレス指定フィールドとから構成される。第２の命令フォーマットにおけるレジスタアドレス指定フィールドは４ビットから構成される。以下、説明する。
【００７９】
図１において、第２の命令フォーマット（a）は、第３の命令フィールド内に４ビットのレジスタアドレス指定フィールドを２フィールド含み、３バイトで構成される命令フォーマットであり、２つのオペランドが指定可能な命令フォーマットである。
【００８０】
第２の命令フォーマット（b）は、第３の命令フィールド内に４ビットのレジスタアドレス指定フィールドを２フィールド含み、更に付加情報フィールドを追加して、合計４バイト以上の命令語長を持つ命令フォーマットである。
【００８１】
第２の命令フォーマット（c）は、第３の命令フィールド内に４ビットのレジスタアドレス指定フィールドを１つ含み、３バイトで構成される命令フォーマットであり、１つのオペランドが指定可能な命令フォーマットである。
【００８２】
第２の命令フォーマット（d）は、第３の命令フィールド内に４ビットのレジスタアドレス指定フィールドを１フィールド含み、更に付加情報フィールドを追加した４バイト以上の命令語長を持つ命令フォーマットである。
【００８３】
従って、前記第２の命令フォーマットにおいても、第１の命令フィールドは、第１から第Ｍの命令フィールドを最長命令語長Ｍとして、Ｎ命令語長（Ｎは１〜Ｍ間での整数）の可変長命令を特定する。
【００８４】
図２は、図１で示された個々のビット割り付けについて、具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。ニーモニックの中で、Rm、Rn、又はRiは、レジスタアドレスの指定を表すが、指定できるレジスタとして、４個のアドレスレジスタＡ０〜Ａ３、４個のデータレジスタＤ０〜Ｄ３、及び８個の拡張レジスタＥ０〜Ｅ７から構成される１６個の汎用レジスタである。詳細は、後にレジスタの構成と共に説明する。
【００８５】
図３に示した第３の命令フォーマットのビット割付けは、最小命令語長である１バイト目の第１の命令フィールドが命令語長指定フィールドから成り、第２の命令フィールドが４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーション指定フィールドとから構成される。第３及び第４の命令フィールドは、４ビットのレジスタアドレス指定フィールドが２つ、又は４ビットのレジスタアドレス指定フィールドと４ビットのオペレーション指定フィールドとから構成される。第３の命令フォーマットにおけるレジスタアドレス指定フィールドは、４ビットから構成される。この第３の命令フォーマットで記述される命令の中の第２の命令フィールドの第１及び第２のオペレーション指定フィールドで指定されるを、以下、「ユニット」と定義して、詳細に説明する。
【００８６】
前記第３の命令フォーマットで記述される命令を構成する各ユニットは、第２の命令フォーマットで記述される命令のうち、特に使用頻度の高い命令で構成される。これにより、第３の命令フォーマットでは、第２の命令フォーマットに比べて、オペレーション指定フィールドが８ビットから例えば４ビットへと縮小されて、並列実行させる２つの操作を１対のオペレーション指定フィールド内に記述することが可能になる。従って、第３の命令フォーマットでは、記述できる操作の種類は限定されるものの、そのコードサイズは、第２の命令フォーマットで命令を記述する場合に比べて小さくなる。
【００８７】
図３において、第３の命令フォーマット（a）は、４バイトで構成される命令フォーマットであって、第２の命令フィールドが４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーションフィールドとから構成され、第３の命令フィールド及び第４の命令フィールド内に４ビットのレジスタアドレス指定フィールドを各々２フィールド含み、４つのオペランドが指定可能な命令フォーマットである。
【００８８】
第３の命令フォーマット（b）は、４バイトで構成される命令フォーマットであって、第２の命令フィールドが４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーションフィールドとから構成され、第３の命令フィールドは４ビットのレジスタアドレス指定フィールドと４ビットの第１のオペレーション指定フィールドとから構成され、第４の命令フィールドは４ビットのレジスタアドレス指定フィールド２つから構成され、３つのオペランドが指定可能な命令フォーマットである。
【００８９】
第３の命令フォーマット（c）は、４バイトで構成される命令フォーマットであって、第２の命令フィールドは４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーションフィールドとから構成され、第３の命令フィールドは４ビットのレジスタアドレス指定フィールド２つから構成され、第４の命令フィールドは４ビットのレジスタアドレス指定フィールドと４ビットの第２のオペレーション指定フィールドとから構成され、３つのオペランドが指定可能な命令フォーマットである。
【００９０】
第３の命令フォーマット（d）は、４バイトで構成される命令フォーマットであって、第２の命令フィールドは４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーションフィールドとから構成され、第３の命令フィールドは４ビットのレジスタアドレス指定フィールドと４ビットの第１のオペレーション指定フィールドとから構成され、第４の命令フィールドは４ビットのレジスタアドレス指定フィールドと４ビットの第２のオペレーション指定フィールドとから構成され、２つのオペランドが指定可能な命令フォーマットである。
【００９１】
第３の命令フォーマット（e）は、４バイトで構成される命令フォーマットであって、第２の命令フィールドは４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーションフィールドとから構成され、第３の命令フィールドは４ビットのレジスタアドレス指定フィールド２つから構成され、第４の命令フィールドは４ビットの第１のオペレーション指定フィールドと４ビットの第２のオペレーション指定フィールドとから構成され、２つのオペランドが指定可能な命令フォーマットである。
【００９２】
ここで、第３の命令フォーマットの第２の命令フィールドの第１のオペレーション指定フィールドで指定される第１のユニットと、第２のオペレーション指定フィールドで指定される第２のユニットとは、図２に示した第２の命令フォーマット(a)で記述される命令、又は第２の命令フォーマット(d)で示される命令の即値のビット幅を４ビットに限定した第２の命令フォーマットの命令から構成される。
【００９３】
従って、前記第３の命令フォーマットでは、第１の命令フィールドは、第１から第４の命令フィールドの４命令語長の可変長命令を特定する。
【００９４】
図４は、前記図３で示された個々のビット割り付けについて具体的な命令のリストの一部を示したものである。左側に命令のニーモニックを、右側に命令の動作を各々示している。ニーモニックの中で、Rm1、Rn1、Rm2又はRn2と示されたものは、レジスタアドレスの指定を表すが、指定できるレジスタとしては、アドレスレジスタＡ０〜Ａ３、データレジスタＤ０〜Ｄ３、拡張レジスタＥ０〜Ｅ７から構成される１６個の汎用レジスタである。また、imm4は４ビットの即値を示している。更に、Rm1、Rn1は第２の命令フィールドの第１のオペレーション指定フィールドで指定される第１のユニットで使用され、Rm2、Rn2は第２の命令フィールドの第２のオペレーション指定フィールドで指定される第２のユニットで使用される。詳細は、以下の動作説明と共に説明する。
【００９５】
図５は、本発明における実施の形態のデータ処理装置の全体構成を示すブロック図である。
【００９６】
このデータ処理装置は、命令フェッチステージ（ＩＦステージ）、解読及びレジスタ読み出しステージ（ＤＥＣステージ）、実行ステージ（ＥＸステージ）、メモリアクセスステージ（ＭＥＭステージ）、レジスタ書き込みステージ（ＷＢステージ）の５つのステージからなる５段パイプライン構造を成している。
【００９７】
図５において、１０１はプログラムを格納する命令メモリ、１０２は前記命令メモリ１０１から前記第１又は第２又は第３の命令フォーマットで特定される可変長命令を読み出す命令フェッチ部、１０３は命令フェッチ部１０２を介して読み出された可変長命令を格納する命令レジスタである。
【００９８】
１１０は、前記命令レジスタ１０３に格納された可変長命令を受け、この可変長命令を解読する命令解読器であって、以下の回路部を持つ。
【００９９】
即ち、命令解読器１１０内において、１１１は、命令レジスタ１０３に格納された可変長命令を解読し、命令フォーマットが第１のフォーマットであるか第２のフォーマットであるか第３のフォーマットであるかを判定する命令型判定部（識別手段）、１１２は命令レジスタ１０３に格納された可変長命令が第１の命令フォーマットであるとして、２ビットのレジスタアドレスフィールドを抽出する第１のレジスタアドレス抽出部、１１３は、第１のレジスタアドレス抽出部１１２により抽出されたレジスタアドレスフィールドの値を４ビットのレジスタファイルの番号に変換するレジスタアドレス変換部、１１４は、命令レジスタ１０３に格納された可変長命令が第２の命令フォーマットであるとして、４ビットのレジスタアドレスフィールドを抽出する第２のレジスタアドレス抽出部、１１５は命令レジスタ１０３に格納された可変長命令が第３の命令フォーマットであるとして、４ビットのレジスタアドレスフィールドを抽出し、第１のユニットのレジスタアドレスを第１のレジスタアドレスセレクタ１１７に供給し、第２のユニットのレジスタアドレスを第２のレジスタアドレスセレクタ１１８に供給する第３のレジスタアドレス抽出部である。
【０１００】
１１６は命令レジスタ１０３に格納された可変長命令を受け、命令解読を行い、演算部に供給する制御信号を生成するオペレーション解読部、１１７は命令型判定部１１１の判定結果に従って、レジスタアドレス変換部１１３からの出力、第２のレジスタアドレス抽出部１１４からの出力、又は第３のレジスタアドレス抽出部１１５からの出力を選択的に出力する第１のレジスタアドレスセレクタ、１１８は前記第２のレジスタアドレス抽出部１１４からの出力、又は第３のレジスタアドレス抽出部１１５からの出力を選択的に出力する第２のレジスタアドレスセレクタである。尚、本実施の形態では、レジスタアドレス変換部１１３は、抽出されたレジスタアドレスを命令フォーマットの種類に拘わらず変換しているが、命令型判定部１１１の判定動作が早期に終了する場合には、第１の命令フォーマットであると判定された命令の場合にのみアドレス変換を行うように構成してもよいのは勿論である。
【０１０１】
レジスタファイル（第２のレジスタファイル）１２０は、前記図２０に示した第１のレジスタファイル２２０を含み、更に、８個の拡張レジスタＥ０〜Ｅ７を追加して、合計１６個の汎用レジスタＡ０〜Ａ３、Ｄ０〜Ｄ３、Ｅ０〜Ｅ７を備える。これ等のレジスタのアドレスは、第１の命令フォーマット又は第２の命令フォーマットの命令の場合、前記命令解読器１１０の第１のレジスタアドレスセレクタ１１７から入力され、更に第３の命令フォーマットの命令の場合は、第２のレジスタアドレスセレクタ１１８からも入力される。この第２のレジスタファイル１２０は、前記図２０に示した第１のレジスタファイル２２０とは、８個の拡張レジスタＥ０〜Ｅ７を備える点でのみ異なる。他の４個のアドレスレジスタＡ０〜Ａ３、及び４個のデータレジスタＤ０〜Ｄ３は両レジスタファイル１２０、２２０で共用される。
【０１０２】
１３１、１３２、１３４、１３５は、各々、レジスタファイル１２０からの出力を格納するＥＸステージのパイプラインレジスタＥ０レジスタ、Ｅ１レジスタ、Ｅ２レジスタ、Ｅ３レジスタ、１３３はＥ０レジスタ１３１及びＥ１レジスタ１３２の内容を用いて算術論理演算を実行する演算器、１３６はＥ２レジスタ１３４及びＥ３レジスタ１３５の内容を用いて算術論理演算を実行する演算器である。また、１４１は演算器１３３からの出力を格納するＭＥＭステージのパイプラインレジスタであるＭ０レジスタ、１４２は演算器１３６からの出力を格納するＭＥＭステージのパイプラインレジスタであるＭ１レジスタ、１４３はＭ０レジスタ１４１又はＭ１レジスタ１４２の内容でデータを格納するデータメモリ、１５１はデータメモリ１４３からの出力を格納するＷＢステージのパイプラインレジスタであるＷ０レジスタ、１５２はデータメモリ１４３からの出力を格納するＷＢステージのパイプラインレジスタであるＷ１レジスタである。
【０１０３】
図６は、前記第２のレジスタファイル１２０を取り出して示したものである。更に、そのうちの汎用レジスタ部分へのアクセスについてより詳細に示したものが図７及び図８である。
【０１０４】
図７は、第１の命令フォーマットで定義された命令を実行する際に、命令の中で指定されるレジスタ名と、レジスタアドレス指定フィールドで指定される命令コード上でのビット割り付けと、物理的なレジスタにアクセスするための物理的なレジスタ番号、及び、アクセスする対象となる物理的なレジスタ名を一覧にして示したものである。第１の命令フォーマットでは、レジスタ指定フィールドは２ビットしかないが、汎用レジスタは１６個で４ビットのアドレスでアクセスする必要がある関係から、アドレスの変換をする必要がある。例えば、アドレスレジスタＡ０をアクセスする際には、物理的なアドレス番号として“１０００”が、データレジスタＤ１をアクセスする際には、物理的なアドレス番号として、“１１０１”を生成し、汎用レジスタファイル１２１に出力する必要がある。
【０１０５】
図８は、第２の命令フォーマットで定義された命令を実行する際に、命令の中で指定されるレジスタ名と、レジスタアドレス指定フィールドで指定される命令コード上でのビット割り付けと、物理的なレジスタにアクセスするための物理的なレジスタ番号、及び、アクセスする対象となる物理的なレジスタ名を一覧にして示したものである。第２の命令フォーマットでは、４ビットのレジスタアドレス指定フィールドを有しているので、その４ビットをそのまま、物理的なレジスタ番号として指定することになる。
【０１０６】
以上のように構成された本実施の形態のデータ処理装置について、以下、図５から図８を用いて、その動作を説明する。
【０１０７】
図５の命令型判定部１１１に供給された命令は第１の命令フィールドの特定のビットをデコードすることにより、その命令が第１の命令フォーマットか第２の命令フォーマットか第３の命令フォーマットかを判断し、各々のフォーマットに応じて、制御信号を生成する。この命令フォーマットの種類の識別を以下具体的に説明する。
【０１０８】
図２４は命令フォーマットの具体例を示す。同図において、第１の命令フォーマット(1)はS0、S1、S2、S4、S6の５通りがあり、１バイトのオペレーションコードOPのみの最小のものと、オペレーションコードOPの後に８、１６、３２又は４８の即値imm、変位d、又は絶対absが配置される２、３、５及び７バイトのものとがある。第１の命令フォーマット(2)はD0、D1、D2、D4、D5の５通りがあり、２バイトのオペレーションコードOPのみの最小のものと、８、１６、３２又は４０の即値imm、変位d、又は絶対absが配置される３、４、６及び７バイトのものとがある。更に、第２の命令フォーマットはT0、T1、T3、T4の４通りがあり、３バイトのオペレーションコードOPのみの最小のものと、８、２４又は３２の即値imm、変位d、又は絶対absが配置される４、６、及び７バイトのものとがある。第３の命令フォーマットはQ0の１通りであり、４バイトのオペレーションコードOPのみである。図２４に示した命令フォーマットでは、オペレーションコードOPのみに着目すると、第２の命令フォーマットT0〜T4の命令フィールドの数(３個)は、第１の命令フォーマット(1)S0〜S6の数(１個)及び第１の命令フォーマット(2)D0〜D5の数(２個)よりも多い。また、第３の命令フォーマットQ0の命令フィールドの数(４個)は、第２の命令フォーマットT0〜T4の数よりも多い。第１の命令フォーマット(1)及び(2)では、少ない領域で記述でき且つ頻繁に使用する命令が割り当てられる。一方、第２の命令フォーマットでは、比較的多い領域を用いて記述され且つさほど使用されない命令が割り当てられる。
【０１０９】
図２４に示した可変長命令体系では、その種類S0〜S6、D0〜D5、T0〜T4、Q0別に、第１バイトのビットコードが同図に示すように割り当てられる。従って、この第１バイトのビットコードを認識することにより、受けた命令のフォーマットが第１、第２又は第３の命令フォーマットかを一意に識別することができる。尚、本実施の形態では、第１バイトのビットコードのみで命令フォーマットの種類を識別するが、本発明はこれに限定されず、例えば第１バイトに加えて第２バイトの第４ビット（下位ニブルの最上位ビット）等をも利用して識別したり、第１バイトの全体ではなくその一部で識別したり、更には第１バイトに限らず、予め決めた所定バイト目の全体又は一部で命令フォーマットの種類を識別してもよい。
【０１１０】
先ず、第１の命令フォーマットにおけるMOV  A0,D0  という命令を、実行する際のタイミングを含めて説明する。この命令は、アドレスレジスタＡ０の内容を読み出してデータレジスタＤ０に格納するというレジスタ間転送の命令である。
【０１１１】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１１２】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第１の命令フォーマットによる命令であることを出力する。第１のレジスタアドレス抽出部１１２は、ソースのレジスタアドレスとしてアドレスレジスタ“００”を、格納先のアドレスとしてデータレジスタのレジスタアドレス“００”を抽出する。レジスタアドレス変換部１１３は、アドレスレジスタのアドレス“００”を４ビットのアドレス“１０００”に、データレジスタのアドレス“００”を４ビットのアドレス“１１００”に変換する。第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、レジスタアドレス変換部１１３から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、アドレスレジスタＡ０からデータレジスタＤ０へのレジスタ間転送命令であることを解読し、その制御信号を生成する。
【０１１３】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“１０００”に対応したアドレスレジスタＡ０の内容が読み出され、Ｅ０レジスタ１３１に格納される。
【０１１４】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーして、Ｍ０レジスタ１４１に格納される。
【０１１５】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーして、Ｗ０レジスタ１５１に格納される。
【０１１６】
＜ＷＢステージ＞
Ｗ０レジスタに格納されたデータが、物理アドレス“１１００”に対応したデータレジスタＤ０に書き込まれる。
【０１１７】
以上説明したような動作により、第１の命令フォーマットによる命令が実行可能となる。
【０１１８】
続いて、第２の命令フォーマットにおけるMOV  A0,E7  という命令を、実行する際のタイミングを含めて説明する。この命令は、アドレスレジスタＡ０の内容を読み出して拡張レジスタＥ７に格納するというレジスタ間転送の命令である。
【０１１９】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１２０】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのレジスタアドレスとして“１０００”を、格納先のアドレスとしてレジスタアドレス“０１１１”を抽出する。第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、アドレスレジスタＡ０から拡張レジスタＥ７へのレジスタ間転送命令であることを解読し、その制御信号を生成する。
【０１２１】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“１０００”に対応したアドレスレジスタＡ０の内容が読み出され、Ｅ０レジスタ１３１に格納される。
【０１２２】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーして、Ｍ０レジスタ１４１に格納される。
【０１２３】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーして、Ｗ０レジスタ１５１に格納される。
【０１２４】
＜ＷＢステージ＞
Ｗ０レジスタに格納されたデータが、物理アドレス“０１１１”に対応した拡張レジスタＥ７に書き込まれる。
【０１２５】
以上説明したような動作により、第２の命令フォーマットによる命令が実行可能となる。
【０１２６】
更に、第３の命令フォーマットにおける  MOV#MOV E5,E6,E4,E7  という命令を実行する際のタイミングを含めて説明する。この命令は、拡張レジスタＥ５の内容を読み出して拡張レジスタＥ６に格納し、同時に拡張レジスタＥ４の内容を読み出して拡張レジスタＥ７に格納するという並列レジスタ間転送命令である。
【０１２７】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１２８】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第３の命令フォーマットによる命令であることを出力する。
【０１２９】
第３のレジスタアドレス抽出部１１５は、第１の転送命令のソースのレジスタアドレスとして“０１０１”と、格納先のアドレスとしてレジスタアドレス“０１１０”とを抽出する。更に、第２の転送命令のソースのレジスタアドレスとして“０１００”と、格納先のアドレスとしてレジスタアドレス“０１１１”とを抽出する。
【０１３０】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第３のレジスタアドレス抽出部１１５から出力される第１のアドレスをレジスタファイル１２０に出力する。更に、レジスタアドレスセレクタ１１８は命令型判定部１１１からの制御信号に応じて、第３のレジスタアドレス抽出部１１５から出力される第２のアドレスをレジスタファイル１２０に出力する。
【０１３１】
オペレーション解読部１１６は、拡張レジスタＥ５から拡張レジスタＥ６及び拡張レジスタＥ４から拡張レジスタＥ７への並列レジスタ間転送のＶＬＩＷ命令であることを解読し、制御信号を生成する。
【０１３２】
レジスタファイル１２０からは、第１のソースのオペランドとして、物理アドレス“０１０１”に対応した拡張レジスタＥ５の内容が読み出され、Ｅ０レジスタ１３１に格納される。同時に、第２のソースのオペランドとして、物理アドレス“０１００”に対応した拡張レジスタＥ４の内容が読み出され、Ｅ２レジスタ１３４に格納される。
【０１３３】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーしてＭ０レジスタ１４１に格納され、同時に、Ｅ２レジスタ１３１に格納されたデータが演算器１３６をスルーしてＭ１レジスタ１４２に格納される。
【０１３４】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーしてＷ０レジスタ１５１に格納され、同時にＭ１レジスタ１４２に格納されたデータがデータメモリ１４３をスルーしてＷ１レジスタ１５２に格納される。
【０１３５】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが、物理アドレス“０１１０”に対応した拡張レジスタＥ６に書き込まれ、同時にＷ１レジスタ１５２に格納されたデータが、物理アドレス“０１１１”に対応した拡張レジスタＥ７に書き込まれる。
【０１３６】
以上説明したような動作により、第３の命令フォーマットによる命令が実行される。
【０１３７】
これ等の説明により明確なように、本実施の形態のデータ処理装置は、第１の命令フォーマットと第２の命令フォーマットと更に第３の命令フォーマットとで記述された各命令を、モード等の切り替えなく、何れも実行可能であり、コードサイズ縮小に最適化された命令セットに対して、その上位互換性を保持しながら、使用できるレジスタ数を大幅に拡張したデータ処理装置となっている。
【０１３８】
次に、第１の命令フォーマットによる命令と第２の命令フォーマットによる命令との使い方について、例を上げて説明する。
【０１３９】
図９にＣ言語で書かれたプログラムの短い例を示す。変数ａの内容を変数ｂの内容と加算して変数ａに格納し、変数ｃの内容を変数ｄの内容と加算して変数ｃに格納するという簡単なものである。
【０１４０】
このプログラムが第１の命令フォーマットの命令にコンパイルされた結果の例を、図１０、図１１及び図１２に示す。
【０１４１】
図１０は、データレジスタに全ての変数が割り当てられた場合の命令列であり、変数ａをデータレジスタＤ０に、変数ｂをデータレジスタＤ１に、変数ｃをデータレジスタＤ２に、変数ｄをデータレジスタＤ３に割り付けできた場合の命令列である。この場合は、２つの加算命令で実現可能であるが、元々４個しかデータレジスタが存在しないため、全てがレジスタに割り付けられることは難しい。
【０１４２】
図１１は、データメモリ上のスタック領域に各変数が割り付けられた場合の命令列であり、変数ａを（ＳＰ＋＃４）に、変数ｂを（ＳＰ＋＃８）に、変数ｃを（ＳＰ＋＃１２）に、変数ｄを（ＳＰ＋＃１６）に割り付けできた場合の命令列である。この場合は、２つの加算命令に加えて、メモリレジスタ間でのデータ転送命令（命令１、命令２、命令４、命令５、命令６、命令８）が発生し、大きく処理性能を落とすことになる。
【０１４３】
図１２は、図１１の場合に、加算に使用しているデータレジスタＤ０、データレジスタＤ１の内容を退避、復帰するためのデータ転送命令（命令１、命令２、命令１１、命令１２）が追加されたものであり、非破壊レジスタしか使用できない場合は、このような命令列になる。
【０１４４】
これに対して、図１３は、第２の命令フォーマットを使用して、拡張レジスタに全ての変数を割り付けた場合の命令列を示している。変数ａを拡張レジスタＥ０に、変数ｂを拡張レジスタＥ１に、変数ｃを拡張レジスタＥ２に、変数ｄを拡張レジスタＥ３に割り付けできた場合の命令列である。この場合は、２つの加算命令で実現可能となる。拡張レジスタにも数量的な制限が存在するために、常に拡張レジスタで十分なレジスタを確保できるとは限らないが、使用可能なレジスタ数が大きく増加することにより、レジスタ数が少ないためにメモリアクセスが頻発して性能を落とすことが少なくなる。従って、信号処理のように多くのレジスタを必要とするアプリケーションプログラムを短時間で実行しようとする場合には、拡張レジスタＥ０〜Ｅ７を追加すると共に、第２の命令フォーマットの命令を使用することにより、メモリとのアクセス回数を少なく制限できて、処理性能の向上を図ることができる。
【０１４５】
しかも、本実施の形態では、同一のレジスタに対して、第１の命令フォーマットで指定するアドレスと、第２の命令フォーマットで指定するアドレスとが異なっていても、第１の命令フォーマットで指定するアドレスを変換して、前記第２の命令フォーマットで指定するアドレスに一致させたので、拡張レジスタを追加してレジスタ数を増加させた場合であっても、第１の命令フォーマットを使用できて、完全な上位互換性を保持しながら、第２の命令フォーマットを使用できて、レジスタの追加に柔軟に対応できるという顕著な効果も得られる。
【０１４６】
次に、第３の命令フォーマットによる命令の使い方について、例を挙げて説明する。
【０１４７】
図１４に第３の命令フォーマットの命令を使用せずに記述したソフトモデム等のメディア処理に用いられるＦＩＲフィルタの主要部のプログラムを示す。オペランド部の右に各々の命令のコードサイズを示している。
【０１４８】
命令１は第１の命令フォーマットのレジスタ-メモリ間のハーフワード転送命令（ストア）を示し、命令２は第２の命令フォーマットのハーフワードスワップ（入れ換え）命令を、命令３は第２の命令フォーマットのレジスタ-メモリ間のハーフワード転送命令（ストア）を示し、命令４は第２の命令フォーマットのハーフワード並列累積積和演算命令を、命令５は第２の命令フォーマットの減算命令、命令６及び命令７は第２の命令フォーマットのメモリ-レジスタ間の転送命令（ロード）、命令８は第１の命令フォーマットの条件分岐命令を各々示している。
【０１４９】
以下、詳細にその動作タイミングについて述べる。
【０１５０】
命令１  MOVH D0,(#-6,A3)  は、第１の命令フォーマットにおける命令でデータレジスタＤ０の値を、アドレスレジスタＡ３に格納されたアドレス値から“６”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令である。
【０１５１】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１５２】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第１の命令フォーマットによる命令であることを出力する。第１のレジスタアドレス抽出部１１２は、ソースのデータアドレスとして、データレジスタのアドレス“００”とアドレスレジスタのアドレス”１１”とを抽出する。レジスタアドレス変換部１１３は、データレジスタのアドレス“００”を４ビットのアドレス“１１００”に、アドレスレジスタのアドレス“１１”を４ビットのアドレス“１０１１”に変換する。
【０１５３】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、レジスタアドレス変換部１１３から出力されるデータレジスタの４ビットのアドレス“１１００”と、アドレスレジスタの４ビットのアドレス“１０１１”とを、レジスタファイル１２０に出力する。
【０１５４】
オペレーション解読部１１６は、データレジスタＤ０の値を、アドレスレジスタＡ３に格納されたアドレス値から“６”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令であることを解読し、その制御信号を生成する。
【０１５５】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“１１００”に対応したデータレジスタＤ０の内容が読み出され、その内容がＥ０レジスタ１３１に格納されると共に、物理アドレス“１０１１”に対応したアドレスレジスタＡ３の内容が読み出され、その内容がＥ１レジスタ１３２に格納される。
【０１５６】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーして、Ｍ０レジスタ１４１に格納され、Ｅ１レジスタ１３２に格納されたアドレスは、オペレーション解読部１１６からの制御信号によって“６”だけ減算処理され、その演算結果をデータメモリ１４３のアドレス入力部に出力する。
【０１５７】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータが、演算器１３３の演算結果で得られたアドレス値のデータメモリ１４３に格納される。
【０１５８】
＜ＷＢステージ＞
オペレーションはない。
【０１５９】
命令２  SWHW  E0,E2  は、第２の命令フォーマットにおける命令で拡張レジスタＥ０の上位ハーフワードと下位ハーフワードとを入れ換えたデータを拡張レジスタＥ２に格納する命令である。
【０１６０】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１６１】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”００００”を、格納先のアドレスとしてレジスタアドレス“００１０”を抽出する。
【０１６２】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタＥ０の上位ハーフワードと下位ハーフワードを入れ換えたデータを拡張レジスタ Ｅ２に格納する命令であることを解読し、その制御信号を生成する。
【０１６３】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“００００”に対応した拡張レジスタＥ０の内容が読み出され、この内容がＥ０レジスタ１３１に格納される。
【０１６４】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータを入力とし、演算器１３３はオペレーション解読部１１６から供給される制御信号を元に、その上位ハーフワードと下位ハーフワードとを入れ換えたデータを生成し、その結果をＭ０レジスタ１４１に格納する。
【０１６５】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。
【０１６６】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第２のレジスタアドレス抽出部１１２が出力する格納先アドレス”００１０”に格納される。
【０１６７】
命令３  MOVH E2,(#-4,A3)  は、第２の命令フォーマットにおける命令で拡張レジスタＥ２の値を、アドレスレジスタＡ３に格納されたアドレス値から“４”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令である。
【０１６８】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１６９】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第１のレジスタアドレス抽出部１１２は、ソースのデータアドレスとしてアドレスレジスタのアドレス”１１”を抽出する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして拡張レジスタのアドレス”００１０”を抽出する。レジスタアドレス変換部１１３は、アドレスレジスタのアドレス“１１”を４ビットのアドレス“１０１１”に 変換する。
【０１７０】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、レジスタアドレス変換部１１３から出力されるアドレスレジスタの４ビットのアドレス“１０１１”と、拡張レジスタの４ビットのアドレス“００１０”とを、レジスタファイル１２０に出力する。
【０１７１】
オペレーション解読部１１６は、拡張レジスタＥ２の値を、アドレスレジスタＡ３に格納されたアドレス値から“４”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令であることを解読し、その制御信号を生成する。
【０１７２】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“００１０”に対応した拡張レジスタＥ２の内容が読み出され、その内容がＥ０レジスタ１３１に格納されると共に、物理アドレス“１０１１”に対応したアドレスレジスタＡ３の内容が読み出され、その内容がＥ１レジスタ１３２に格納される。
【０１７３】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーして、Ｍ０レジスタ１４１に格納され、Ｅ１レジスタ１３２に格納されたアドレスは、オペレーション解読部１１６からの制御信号によって“４”だけ減算処理され、その演算結果をデータメモリ１４３のアドレス入力部に出力する。
【０１７４】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータが、演算器１３３の演算結果で得られたアドレス値のデータメモリ１４３に格納される。
【０１７５】
＜ＷＢステージ＞
オペレーションはない。
【０１７６】
命令４  DMACH  E6,E1  は、第２の命令フォーマットにおける命令で拡張レジスタＥ６の上位ハーフワードと拡張レジスタＥ１の上位ハーフワードとの乗算結果と、拡張レジスタＥ６の下位ハーフワードと拡張レジスタＥ１の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタＥ１に累算する演算命令である。
【０１７７】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１７８】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”０１１０”を、格納先のアドレスとしてレジスタアドレス“０００１”を抽出する。
【０１７９】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタＥ６の上位ハーフワードと拡張レジスタＥ１の上位ハーフワードとの乗算結果と、拡張レジスタＥ６の下位ハーフワードと拡張レジスタＥ１の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタＥ１に累算する演算命令であることを解読し、その制御信号を生成する。
【０１８０】
レジスタファイル１２０からは、ソースのオペランドとして物理アドレス“０１１０”に対応した拡張レジスタＥ６の内容が読み出され、その内容がＥ０レジスタ１３１に格納され、ソースのオペランドとして物理アドレス”０００１”に対応した拡張レジスタＥ１の内容が読み出される。
【０１８１】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータの上位ハーフワードとＥ１レジスタ１３２に格納されたデータの上位ハーフワードとが抽出され、これ等の乗算が実行され、同時に、Ｅ０レジスタ１３１に格納されたデータの下位ハーフワードとＥ１レジスタ１３２に格納されたデータの下位ハーフワードとが抽出され、これ等の乗算が実行され、この２つの乗算結果とＥ１レジスタ１３２に格納されたデータとの加算が実行され、その加算結果がＭ０レジスタ１４１に格納される。
【０１８２】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。
【０１８３】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”０００１”に格納される。
【０１８４】
命令5  SUB  1,E3  は、第２の命令フォーマットにおける命令で拡張レジスタ Ｅ３に格納された値から“１”の減算を実行し、その演算結果を拡張レジスタＥ３に格納する演算命令である。
【０１８５】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１８６】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”００１１”を、格納先のアドレスとしてレジスタアドレス“００１１”を抽出する。
【０１８７】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタ Ｅ３から“１”だけ減算する演算命令であることを解読し、その制御信号を生成する。
【０１８８】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“００１１”に対応した拡張レジスタＥ３の内容が読み出され、その内容がＥ０レジスタ１３１に格納される。
【０１８９】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータが読み出され、“１”の減算が実行され、その結果がＭ０レジスタ１４１に格納される。
【０１９０】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。
【０１９１】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”００１１”に格納される。
【０１９２】
命令6  MOV  (#4,E4+),E6  は、第２の命令フォーマットにおける命令で拡張レジスタＥ４で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタＥ６に格納し、データ格納後、拡張レジスタＥ４の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令である。
【０１９３】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０１９４】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”０１００”を、格納先のアドレスとしてレジスタアドレス“０１１０”を抽出する。
【０１９５】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタ Ｅ４で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタＥ６に格納し、データ格納後、拡張レジスタＥ４の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
【０１９６】
レジスタファイル１２０からは、ソースのオペランドとして物理アドレス”０１００”に対応した拡張レジスタＥ４の内容が読み出され、この内容がＥ０レジスタ１３１に格納される。
【０１９７】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータが読み出され、このデータをオペレーション解読部１１６からの制御信号によってデータメモリ１４３のアドレス入力部に出力する。また、“４”の加算を実行し、その結果がＭ０レジスタ１４１に格納される。
【０１９８】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。また、オペレーション解読部１１６からの制御信号により、指定されるメモリアドレスのデータメモリ１４３からデータを読み出し、Ｗ０レジスタ１５１に格納する。
【０１９９】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”０１１０”に格納される。
【０２００】
命令７  MOV  (#4,E5+),E1  は、第２の命令フォーマットにおける命令で拡張レジスタＥ５で示されるメモリアドレスからデータを読み出して、拡張レジスタＥ１に格納し、データ格納後、拡張レジスタＥ５の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令である。
【０２０１】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２０２】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”０１０１”を、格納先のアドレスとしてレジスタアドレス“０００１”を抽出する。
【０２０３】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタＥ５で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタＥ１に格納し、このデータ格納後、拡張レジスタＥ５の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
【０２０４】
レジスタファイル１２０からは、ソースのオペランドとして物理アドレス”０１０１”に対応した拡張レジスタＥ５の内容が読み出され、この内容がＥ０レジスタ１３１に格納される。
【０２０５】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータが読み出され、このデータが、オペレーション解読部１１６からの制御信号によってデータメモリ１４３のアドレス入力部に出力される。また、“４”の加算を実行し、その結果がＭ０レジスタ１４１に格納される。
【０２０６】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。また、オペレーション解読部１１６からの制御信号によって、指定されるメモリアドレスのデータメモリ１４３からデータを読み出し、このデータをＷ０レジスタ１５１に格納する。
【０２０７】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータは、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”０００１”に格納される。
【０２０８】
命令8  LGE  は、第１の命令フォーマットにおける命令で前記命令４で実行された減算命令の結果が“０”以上の値の場合には、前記命令１の前に示されるLOOP 番地にプログラムカウンタ１２４の値を変更し、ループ命令を実行する命令である。
【０２０９】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２１０】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第１の命令フォーマットによる命令であることを出力する。オペレーション解読部１１６はループ命令であることを解読し、その制御信号を生成する。
【０２１１】
オペレーション制御部１１６から出力される制御信号に基づいてレジスタファイル１２０内のプログラムカウンタ１２４の値がＥ０レジスタ１３１に格納される。
【０２１２】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータが読み出され、オペレーション解読部１１６から出力される制御信号に基づいて、ループの飛び先アドレス値がＭ０レジスタ１４１に格納される。
【０２１３】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。
【０２１４】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが、レジスタファイル１２０内のプログラムカウンタ１２４に格納される。
【０２１５】
以上、図１４で示した命令において、命令３及び命令５は４バイト命令、命令１、命令２、命令４、命令６及び命令７は３バイト命令、命令８は１バイト命令である。図１４で示した命令はトータルで２４バイトのコードサイズとなっている。
【０２１６】
図１５は、前記図１４に示した命令を第３の命令フォーマットを用いて書き換えた命令を示している。図１４の命令４及び命令５をマージして命令４”DMACH#SUB”に、図１４の命令７及び命令８をマージして命令６”MOV#LGE”に各々置き換えている。
【０２１７】
図１５で示した命令は、各々、命令１は第１の命令フォーマットのメモリへのハーフワード転送命令を示し、命令２は第２の命令フォーマットのハーフワードスワップ（入れ換え）命令を、命令３は第２の命令フォーマットのメモリへのハーフワード転送命令を示し、命令４はハーフワード並列積和演算命令及び即値減算命令の並列実行命令を、命令５は第２の命令フォーマットのメモリからの転送命令を、命令６はメモリからのデータ転送及びと条件分岐の並列実行命令を示している。
【０２１８】
以下、詳細にその動作タイミングについて述べる。
【０２１９】
命令１  MOVH D0,(#-6,A3)  は、第１の命令フォーマットにおける命令でデータレジスタＤ０の値を、アドレスレジスタＡ３に格納されたアドレス値から“６”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令である。
【０２２０】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２２１】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第１の命令フォーマットによる命令であることを出力する。第１のレジスタアドレス抽出部１１２は、ソースのデータアドレスとしてデータレジスタのアドレス“００”とアドレスレジスタのアドレス”１１”とを抽出する。レジスタアドレス変換部１１３は、データレジスタのアドレス“００”を４ビットのアドレス“１１００”に、アドレスレジスタのアドレス“１１”を４ビットのアドレス“１０１１”に各々変換する。
【０２２２】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、レジスタアドレス変換部１１３から出力されるデータレジスタの４ビットのアドレス“１１００”と、アドレスレジスタの４ビットのアドレス“１０１１”とを、レジスタファイル１２０に出力する。
【０２２３】
オペレーション解読部１１６は、データレジスタＤ０の値を、アドレスレジスタＡ３に格納されたアドレス値から“６”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令であることを解読し、その制御信号を生成する。
【０２２４】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“１１００”に対応したデータレジスタＤ０の内容が読み出され、その内容がＥ０レジスタ１３１に格納され、物理アドレス“１０１１”に対応したアドレスレジスタＡ３の内容が読み出され、その内容がＥ１レジスタ１３２に格納される。
【０２２５】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーして、Ｍレジスタ１４１に格納され、Ｅ１レジスタ１３２に格納されたアドレスは、オペレーション解読部１１６からの制御信号によって“６”だけ減算処理され、その演算結果をデータメモリ１４３のアドレス入力部に出力する。
【０２２６】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータが、演算器１３３の演算結果で得られたアドレス値のデータメモリ１４３に格納される。
【０２２７】
＜ＷＢステージ＞
オペレーションはない。
【０２２８】
命令２  SWHW  E0,E2  は、第２の命令フォーマットにおける命令で拡張レジスタ Ｅ０の上位ハーフワードと下位ハーフワードとを入れ換えたデータを拡張レジスタＥ２に格納する命令である。
【０２２９】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２３０】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”００００”を、格納先のアドレスとしてレジスタアドレス“００１０”を抽出する。
【０２３１】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタ Ｅ０の上位ハーフワードと下位ハーフワードとを入れ換えたデータを拡張レジスタＥ２に格納する命令であることを解読し、その制御信号を生成する。
【０２３２】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“００００”に対応した拡張レジスタＥ０の内容が読み出され、その内容がＥ０レジスタ１３１に格納される。
【０２３３】
＜ＥＸステージ＞
演算器１３３は、Ｅ０レジスタ１３１に格納されたデータを入力とし、演算器１３３はオペレーション解読部１１６から供給される制御信号を元に、その上位ハーフワードと下位ハーフワードとを入れ換えたデータを生成し、その結果をＭ０レジスタ１４１に格納する。
【０２３４】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。
【０２３５】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータがレジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”００１０”に格納される。
【０２３６】
命令３  MOVH E2,(#-4,A3)  は、第２の命令フォーマットにおける命令で拡張レジスタＥ２の値を、アドレスレジスタＡ３に格納されたアドレス値から“４”を引いたメモリアドレスに格納するというレジスタ->メモリ間転送（ストア）の命令である。
【０２３７】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２３８】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第１のレジスタアドレス抽出部１１２は、ソースのデータアドレスとしてアドレスレジスタのアドレス”１１”を抽出する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして拡張レジスタのアドレス”００１０”を抽出する。レジスタアドレス変換部１１３は、アドレスレジスタのアドレス“１１”を４ビットのアドレス“１０１１”に変換する。
【０２３９】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、レジスタアドレス変換部１１３から出力されるアドレスレジスタの４ビットのアドレス“１０１１”と、拡張レジスタの４ビットのアドレス“００１０”とを、レジスタファイル１２０に出力する。
【０２４０】
オペレーション解読部１１６は、拡張レジスタＥ２の値を、アドレスレジスタＡ３に格納されたアドレス値から“４”を引いたメモリアドレスに格納するというレジスタ-メモリ間転送（ストア）の命令であることを解読し、その制御信号を生成する。
【０２４１】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“００１０”に対応した拡張レジスタＥ２の内容が読み出され、その内容がＥ０レジスタ１３１に格納され、物理アドレス“１０１１”に対応したアドレスレジスタＡ３の内容が読み出され、その内容がＥ１レジスタ１３２に格納される。
【０２４２】
＜ＥＸステージ＞
Ｅ０レジスタ１３１に格納されたデータが演算器１３３をスルーして、Ｍ０レジスタ１４１に格納され、Ｅ１レジスタ１３２に格納されたアドレスは、オペレーション解読部１１６からの制御信号によって“４”だけ減算処理され、その演算結果をデータメモリ１４３のアドレス入力部に出力する。
【０２４３】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータが、演算器１３３の演算結果で得られたアドレス値のデータメモリ１４３に格納される。
【０２４４】
＜ＷＢステージ＞
オペレーションはない。
【０２４５】
命令4  DMACH#SUB E6,E1,1,E3  は、第３の命令フォーマットにおける命令で拡張レジスタＥ６の上位ハーフワードと拡張レジスタＥ１の上位ハーフワードとの乗算結果と、拡張レジスタＥ６の下位ハーフワードと拡張レジスタＥ１の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタＥ１に累算するユニットと、拡張レジスタＥ３から“１”だけ減算するユニットとから構成され、これ等のユニットを並列に実行する命令である。
【０２４６】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２４７】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第３の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”０１１０”を、格納先のアドレスとしてレジスタアドレス“０００１”を抽出する。また、第３のレジスタアドレス抽出部１１５は、ソース及び格納先のデータアドレスとして、”００１１”を抽出する。
【０２４８】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタＥ０の上位ハーフワードと拡張レジスタＥ１の上位ハーフワードとの乗算結果と、拡張レジスタＥ６の下位ハーフワードと拡張レジスタＥ１の下位ハーフワードとの乗算結果とを加算し、その加算結果を拡張レジスタＥ１に累算する演算命令であることを解読し、その制御信号を生成する。
【０２４９】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス“０１１０”に対応した拡張レジスタＥ６の内容が読み出され、その内容がＥ０レジスタ１３１に格納され、ソースのオペランドとして、物理アドレス”０００１”に対応した拡張レジスタＥ１の内容がＥ１レジスタ１３２に読み出される。また、並行して、レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス”００１１”に対応した拡張レジスタＥ３の値がＥ２レジスタ１３４に読み出される。
【０２５０】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータの上位ハーフワードとＥ１レジスタ１３２に格納されたデータの上位ハーフワードとが抽出され、それ等の乗算が実行され、同時に、Ｅ０レジスタ１３１に格納されたデータの下位ハーフワードとＥ１レジスタ１３２に格納されたデータの下位ハーフワードとが抽出され、それ等の乗算が実行され、この２つの乗算結果と、Ｅ１レジスタ１３２に格納されたデータとの加算が実行され、その結果がＭ０レジスタ１４１に格納される。また、並行して、Ｅ２レジスタ１３４に格納されたデータから、“１”の減算を実行し、その減算結果をＭ１レジスタ１４２に格納する。
【０２５１】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納されると共に、Ｍ１レジスタ１４２に格納されたデータがデータメモリ１４３をスルーし、Ｗ１レジスタに格納される。
【０２５２】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”０００１”に格納され、これに並行して、Ｗ１レジスタ１５２に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第３のレジスタアドレス抽出部１１５が出力する格納先アドレス”００１１”に格納される。
【０２５３】
命令5  MOV  (#4,E4+),E6  は、第２の命令フォーマットにおける命令で拡張レジスタＥ４で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタＥ６に格納し、データ格納後、拡張レジスタＥ４の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令である。
【０２５４】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２５５】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第２の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”０１００”を、格納先のアドレスとしてレジスタアドレス“０１１０”を抽出する。
【０２５６】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタ Ｅ４で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタＥ６に格納し、データ格納後、拡張レジスタＥ４の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
【０２５７】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス”０１００”に対応した拡張レジスタＥ４の内容が読み出され、その内容がＥ０レジスタ１３１に格納される。
【０２５８】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータが読み出され、このデータを、オペレーション解読部１１６からの制御信号によってデータメモリ１４３のアドレス入力部に出力する。また、“４”の加算を実行し、その結果がＭ０レジスタ１４１に格納される。
【０２５９】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。また、オペレーション解読部１１６からの制御信号によって、指定されるメモリアドレスのデータメモリ１４３からデータを読み出し、このデータをＷ０レジスタ１５１に格納する。
【０２６０】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”０１１０”に格納される。
【０２６１】
命令6  MOV#LGE  (#4,E5+),E1 は、第３の命令フォーマットにおける命令で拡張レジスタＥ５で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタＥ１に格納し、データ格納後、拡張レジスタＥ５の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であるユニットと、前記命令４で実行された減算命令の結果が“０”以上の値の場合には、前記命令１の前に示されるLOOP番地にプログラムカウンタ１２４の値を変更するループ命令であるユニットとを並列に実行する命令である。
【０２６２】
＜ＩＦステージ＞
命令フェッチ部１０２が命令メモリ１０１から命令を読み出して、命令レジスタ１０３に格納する。
【０２６３】
＜ＤＥＣステージ＞
命令型判定部１１１は、命令レジスタ１０３に格納された命令を解読して、この命令が第３の命令フォーマットによる命令であることを出力する。第２のレジスタアドレス抽出部１１４は、ソースのデータアドレスとして”０１０１”を、格納先のアドレスとしてレジスタアドレス“０００１”を抽出する。
【０２６４】
第１のレジスタアドレスセレクタ１１７は、命令型判定部１１１からの制御信号に応じて、第２のレジスタアドレス抽出部１１４から出力されるアドレスをレジスタファイル１２０に出力する。オペレーション解読部１１６は、拡張レジスタ Ｅ５で示されるメモリアドレスからデータを読み出し、このデータを拡張レジスタ Ｅ１に格納し、データ格納後、拡張レジスタＥ５の値を“４”だけ加算するポストインクリメントメモリ-レジスタ間転送命令であることを解読し、その制御信号を生成する。
【０２６５】
レジスタファイル１２０からは、ソースのオペランドとして、物理アドレス”０１０１”に対応した拡張レジスタＥ５の内容が読み出され、この内容がＥ０レジスタ１３１に格納される。
【０２６６】
更に、オペレーション解読部１１６は、もう一方のユニットがループ命令であることを解読し、その制御信号を生成する。
【０２６７】
オペレーション制御部１１６から出力される制御信号に基づいて、レジスタファイル１２０内のプログラムカウンタ１２４の値がＥ２レジスタ１３４に格納される。
【０２６８】
＜ＥＸステージ＞
演算器１３３において、Ｅ０レジスタ１３１に格納されたデータが読み出され、このデータを、オペレーション解読部１１６からの制御信号によってデータメモリ１４３のアドレス入力部に出力する。また、“４”の加算を実行し、その結果がＭ０レジスタ１４１に格納される。
【０２６９】
演算器１３６において、Ｅ２レジスタ１３４に格納されたデータが読み出され、オペレーション解読部１１６から出力される制御信号に基づいてループの飛び先アドレス値がＭ１レジスタ１４２に格納される。
【０２７０】
＜ＭＥＭステージ＞
Ｍ０レジスタ１４１に格納されたデータがデータメモリ１４３をスルーし、Ｗ０レジスタ１５１に格納される。また、オペレーション解読部１１６からの制御信号によって、指定されるメモリアドレスのデータメモリ１４３からデータを読み出し、このデータをＷ０レジスタ１５１に格納する。
【０２７１】
Ｍ１レジスタ１４２に格納されたデータがデータメモリ１４３をスルーし、Ｗ１レジスタ１５２に格納される。
【０２７２】
＜ＷＢステージ＞
Ｗ０レジスタ１５１に格納されたデータが読み出され、このデータが、レジスタファイル１２０の第２のレジスタアドレス抽出部１１４が出力する格納先アドレス”０００１”に格納される。
【０２７３】
Ｗ１レジスタ１５２に格納されたデータは、レジスタファイル１２０内のプログラムカウンタ１２４に格納される。
【０２７４】
図１５で示した命令において、命令３及び命令５は４バイト命令、命令１及び命令２は３バイト命令、命令４は４バイト命令、命令６は４バイト命令を示している。図１５で示した命令はトータルで２２バイトのコードサイズとなっている。
【０２７５】
このように、本実施の形態で示した第３の命令フォーマットを持つ命令により、コードサイズが２４バイトから２２バイトへとコードサイズの縮小を図れることが示された。更には、図１４から図１５へ命令を変更することにより、命令の数も８命令から６命令に削減でき、実行性能の向上も実現されることが示されている。
【０２７６】
尚、本発明は、以上で説明した実施の形態のデータ処理装置に限られないことは勿論である。例えば、本実施の形態では、アドレスレジスタ及びデータレジスタを拡張したが、汎用レジスタを拡張してもよい。また、本実施の形態では、アドレスレジスタを４個、データレジスタを４個、拡張レジスタを８個として説明したが、レジスタの個数は何個でもよい。更に、本実施の形態では、第１の命令フォーマットで第１のレジスタファイル２２０を指定し、第２の命令フォーマットで第１のレジスタファイル２２０を含んだ第２のレジスタファイル１２０を指定したが、本発明はこれに限定されず、第２のレジスタファイルのレジスタ数を第１のレジスタファイルのレジスタ数よりも多くし、第２の命令フォーマットでこの第２のレジスタファイルのみを指定し、第１のレジスタファイルは指定しない構成としても良い。
【０２７７】
また、第３の命令フォーマットとして、２つのユニットを並列実行する命令のフォーマットを採用したが、２つのユニットに限定されず、３つ以上のユニットを並列実行する命令のフォーマットとしてもよいのは勿論である。
【産業上の利用可能性】
【０２７８】
以上説明したように、本発明は、従来のモード設定信号等を出力する特別の命令を用いる必要をなくして、プログラムサイズを有効に小さくしつつ、１つの命令で多数のレジスタを用いた動作を実行できて、信号処理等のデータ処理の処理速度を高速化できるので、ＣＰＵ又はマイクロプロセッサ等のデータ処理装置として有用である。
【図面の簡単な説明】
【０２７９】
【図１】本発明の実施の形態によるデータ処理装置の第２の命令フォーマットを示す図である。
【図２】同データ処理装置の第２の命令フォーマットの命令のリストの一部を示す図である。
【図３】本発明の実施の形態によるデータ処理装置の第３の命令フォーマットを示す図である。
【図４】同データ処理装置の第３の命令フォーマットの命令のリストの一部を示す図である。
【図５】同データ処理装置の全体構成を示すブロック図である。
【図６】同データ処理装置のレジスタファイルの構成を示すブロック図である。
【図７】同データ処理装置において、第１の命令フォーマットの命令実行時のレジスタファイルのレジスタ番号を示す図である。
【図８】同データ処理装置において、第２の命令フォーマットの命令の実行時のレジスタファイルのレジスタ番号を示す図である。
【図９】Ｃ言語で記載したプログラムの一例を示す図である。
【図１０】図９のプログラムを第１の命令フォーマットを用いてコンパイルした第１の例を示す図である。
【図１１】図９のプログラムを第１の命令フォーマットを用いてコンパイルした第２の例を示す図である。
【図１２】図９のプログラムを第１の命令フォーマットを用いてコンパイルした第３の例を示す図である。
【図１３】図９のプログラムを第２の命令フォーマットを用いてコンパイルした例を示す図である。
【図１４】本発明の実施の形態による第３の命令フォーマットの命令を使用せず記述したＦＩＲフィルタ処理のプログラムを示す図である。
【図１５】本発明の実施の形態による第３の命令フォーマットの命令を使用して図１４で記述したＦＩＲフィルタ処理プログラムを書き換えたプログラムを示す図である。
【図１６】本発明の実施の形態によるデータ処理装置の第１の命令フォーマット（１）を示す図である。
【図１７】同データ処理装置の第１の命令フォーマット（１）の命令のリストの一部示す図である。
【図１８】同データ処理装置の第１の命令フォーマット（２）を示す図である。
【図１９】同データ処理装置の第１の命令フォーマット（２）の命令のリストの一部示す図である。
【図２０】同データ処理装置において、第１のレジスタファイルの構成を示すブロック図である。
【図２１】同データ処理装置の第１の命令フォーマットの命令の実行時のレジスタファイルのレジスタ番号を示す図である。
【図２２】従来のデータ処理装置の命令フォーマットを示す図である。
【図２３】従来のデータ処理装置の命令デコーダ周辺の要部構成を示すブロック図である。
【図２４】本発明の実施の形態で用いる第１、第２及び第３の命令フォーマットの具体例を示す図である。
【符号の説明】
【０２８０】
１０１            命令メモリ
１０２            命令フェッチ部
１０３            命令レジスタ
１１０            命令解読器
１１１            命令型判定部（識別手段）
１１２            第１のレジスタアドレス抽出部
１１３            レジスタアドレス変換部
１１４            第２のレジスタアドレス抽出部
１１５            第３のレジスタアドレス抽出部
１１６            オペレーション解読部
１１７            第１のレジスタアドレスセレクタ
１２０            レジスタファイル（第２のレジスタファイル）
１２１            汎用レジスタ
１２２            スタックポインタ
１２３            Processor Status Word
１２４            プログラムカウンター
Ｅ０〜Ｅ７        拡張レジスタ
１３３、１３６    演算器
２２０            第１のレジスタファイル