(57)【特許請求の範囲】
【請求項１】
それぞれ演算の種類を指定する第１、第２および第３のオペレーションコードフィールドと、これら３つのオペレーションコードフィールドのそれぞれが指定する演算の実行順序を指定する実行順序指定フィールドとを含んだ命令をデコードする命令デコーダ、および、
この命令デコーダに接続され、その命令デコーダから出力されるデコード結果により制御され、前記実行順序指定フィールドで指定された実行順序に従って、前記第１、第２および第３のオペレーションコードフィールドによりそれぞれ指定された演算を実行する演算実行部を備え、前記命令デコーダは、前記実行順序指定フィールドが第１の値であることに従って第１のデコード結果を出力し、
前記演算実行部は、前記第１のデコード結果に従い、第１のサイクルで前記第１および第２のオペレーションコードフィールドのそれぞれが指定する演算を並列に実行し、前記第１のサイクルと連続する第２のサイクルで前記第３のオペレーションコードフィールドにより指定された演算を実行すべくなしてあること
を特徴とするデータ処理装置。
【請求項２】
命令デコーダは、実行順序指定フィールドが第１の値とは異なる第２の値であることに従って第２のデコード結果を出力し、
演算実行部は、前記第２のデコード結果に従い、第１、第２および第３のオペレーションコードフィールドのそれぞれが指定する演算を並列に実行すべくなしてあること
を特徴とする請求項１に記載のデータ処理装置。
【請求項３】
命令デコーダは、実行順序指定フィールドが第１の値とは異なる第３の値であることに従って第３のデコード結果を出力し、
演算実行部は、前記第３のデコード結果に従い、第１、第２および第３のオペレーションコードフィールドのそれぞれが指定する演算を所定の順番で逐次実行すべくなしてあること
を特徴とする請求項１に記載のデータ処理装置。
【請求項４】
演算実行部は、演算処理を行う複数の演算部を有し、
第３のデコード結果に従い、第１、第２および第３のオペレーションコードフィールドのそれぞれが指定する演算は前記複数の演算部のうちの同一の演算部で処理されるべくなしてあること
を特徴とする請求項３に記載のデータ処理装置。
【請求項５】
演算実行部は、演算の処理を行う第１および第２の演算部を有し、
第１のサイクルにおいて、前記第１の演算部は第１のオペレーションコードフィールドにより指定された演算を処理し、前記第２の演算部は前記第１の演算部と並列に動作するように第２のオペレーションコードフィールドにより指定された演算を処理し、
第２のサイクルにおいて、第３のオペレーションコードフィールドにより指定された演算を前記第１の演算部で処理するようにしたこと
を特徴とする請求項１に記載のデータ処理装置。
【請求項６】
命令デコーダは、命令の第１、第２および第３のオペレーションコードフィールドをそれぞれデコードし、そのデコード結果であるそれぞれ第１、第２および第３の制御信号を出力する第１、第２および第３のデコード部と、実行順序指定フィールドをデコードする第４のデコード部とを有し、この第４のデコード部から出力される第４の制御信号に従って前記第１、第２および第３の制御信号が前記命令デコーダから出力されるタイミングが制御されるように構成され、
前記演算実行部は、前記命令デコーダから出力される第１、第２および第３の制御信号に従って、第１、第２、第３のオペレーションコードフィールドによりそれぞれ指定された演算を実行すべくなしてあること
を特徴とする請求項１に記載のデータ処理装置。
【請求項７】
命令は、互いに同一の長さであり、各々命令の実行するための情報を有する第１、第２および第３の固定フィールドを有し、
第１、第２および第３のオペレーションコードフィールドは、それぞれ前記第１、第２および第３の固定フィールド内にあること
を特徴とする請求項１に記載のデータ処理装置。
【請求項８】
命令は、さらに、第１のオペレーションコードフィールドにより指定される演算の実行条件を指定する第１の条件指定フィールド、第２のオペレーションコードフィールドにより指定される演算の実行条件を指定する第２の条件指定フィールド、および第３のオペレーションコードフィールドにより指定される演算の実行条件を指定する第３の条件指定フィールドを有し、
前記第１、第２および第３のオペレーションコードフィールドによりそれぞれ指定された演算のうち、対応する条件指定フィールドの指定する実行条件を満たす演算のみを有効として実行するように構成されたこと
を特徴とする請求項１に記載のデータ処理装置。
【請求項９】
各々は演算の種類を指定する複数のオペレーションコードフィールドと、これらのオペレーションコードフィールドに対応して設けられ、各々は対応のオペレーションコードフィールドにより指定される演算の実行条件を指定する複数の条件指定フィールドと、前記複数のオペレーションコードフィールドによりそれぞれ指定される演算の少なくとも２つを並列に実行するかもしくは逐次に実行するかを指定する実行順序指定フィールドとを有する命令をデコードする命令デコーダ、および、
前記命令デコーダに接続され、この命令デコーダから出力されるデコード結果により制御され、前記実行順序指定フィールドに指定される実行順序に従って前記複数のオペレーションコードフィールドにより指定された各演算を実行することのできる演算実行部を備え、
前記命令デコード部は、前記複数のオペレーションコードフィールドの指定する演算のうち、対応する条件指定フィールドの指定する実行条件を満たす演算のみを有効として実行するように前記命令実行部を制御していること
を特徴とするデータ処理装置。
【請求項１０】
命令実行部は、複数のオペレーションコードフィールドの指定する演算のうち、対応する条件指定フィールドの指定する実行条件を満たす演算の演算結果のみをレジスタ、メモリあるいはフラグに反映するようにしたこと
を特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
命令の実行に際して参照されるべき情報を保持している複数のフラグを備え、
複数の条件指定フィールドの各々は、前記フラグのいずれか１つを指定し、
複数のオペレーションコード指定部によりそれぞれ指定された演算の有効もしくは無効は、その対応する条件指定フィールドの指定するフラグに保持された内容が所定の値であるか否かにより決定されるようにしたこと
を特徴とする請求項９に記載のデータ処理装置。
【請求項１２】
複数の条件指定フィールドの各々は、対応するオペレーションコードフィールドに指定される演算が無条件に有効であるとする条件を指定できるようにしたこと
を特徴とする請求項９に記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は複数の演算を並列実行するデータ処理装置に関する。特に、一命令で複数の演算を指定する所謂VLIW(Very Long Instruction Word:超長語命令) 型の命令を実行することにより、複数の演算を高効率で並列実行するデータ処理装置に関する。
【０００２】
【従来の技術】
命令レベルの並列性を利用して処理を高速実行するデータ処理装置としては、スーパースケーラ型あるいはVLIW型と称される並列処理技術を採り入れたデータ処理装置が既に提案されている。スーパースケーラとは、順次的に配列された命令列から命令レベルの並列性をハードウェアが検出して複数の命令を並列実行する並列処理技術である。
【０００３】
一方、VLIWは、従来の一命令を一演算と見做し、並列実行可能な複数の演算をコンパイル時にコンパイラが検出することにより複数の演算フィールドからなる１個の長語命令にエンコードし、この長語命令で指定された複数の演算をハードウェアが並列実行する並列処理技術である。これらの従来のデータ処理装置に関しては、たとえば「B. R. Rau and J. A. Fisher. ”Instruction-Level Parallelism" The Journal of Supercomputing Vol. 7, No. 1/2, 1993」に詳細に記述されている。
【０００４】
【発明が解決しようとする課題】
従来のスーパースケーラ型データ処理装置は過去のデータ処理装置の命令列を変換なしに実行できる利点がある。しかし、並列実行可能な命令列の数が一定でないため、並列実行可能な命令を特定するか、あるいは並列実行可能な命令数に従って次に命令デコーダに入力されるべき命令列を整置する必要があり、このためデコーダハードウェアの負荷が大きいという問題があった。
【０００５】
また、従来のVLIW型データ処理装置は各命令の長さが一定且つ一命令内に記述された複数の演算が全て並列実行可能なことが保証されているため、上述の従来のスーパスケーラ型データ処理装置のようなデコーダハードウェアの負荷増大の問題はないものの、並列実行可能な演算がない場合でも１個の命令を使用してしまうため、無効演算(No Operation:NOP)を指定する演算フィールドが多数存在して命令コード長が非常に長くなるという問題があった。また、従来のVLIW型データ処理装置では命令デコーダと演算機構を単純にするために各演算フィールドで指定できる演算の種類を制限し、演算の指定方法を画一的にしているため、一命令内の演算割り付けに自由度が少なく命令のコード効率が悪くなる問題があった。
【０００６】
本発明は上述のような従来技術の欠点を補うためになされたもので、基本的にはVLIW型でありながら、演算フィールドの数と演算の順序を指定するフォーマットフィールドとにより演算の数及び順序を柔軟に制御して無効演算の必要性を少なくし、かつ演算実行機構に依存した特定機能の演算のみをデコードする単純なデコーダを並列に動作させることにより、各演算フィールドを多数のデコーダで並列デコードするため、各演算フィールドで指定可能な演算の種類を増大させるため、命令のコード効率を良くしたデータ処理装置に関する。
【０００７】
【課題を解決するための手段】
本発明に係るデータ処理装置は、それぞれ演算の種類を指定する第１、第２および第３のオペレーションコードフィールドと、これら３つのオペレーションコードフィールドのそれぞれが指定する演算の実行順序を指定する実行順序指定フィールドとを含んだ命令をデコードする命令デコーダ、および、この命令デコーダに接続され、その命令デコーダから出力されるデコード結果により制御され、前記実行順序指定フィールドで指定された実行順序に従って、前記第１、第２および第３のオペレーションコードフィールドによりそれぞれ指定された演算を実行する演算実行部を備え、前記命令デコーダは、前記実行順序指定フィールドが第１の値であることに従って第１のデコード結果を出力し、前記演算実行部は、前記第１のデコード結果に従い、第１のサイクルで前記第１および第２のオペレーションコードフィールドのそれぞれが指定する演算を並列に実行し、前記第１のサイクルと連続する第２のサイクルで前記第３のオペレーションコードフィールドにより指定された演算を実行すべくなしてあることを特徴とする。
【０００８】
また本発明に係るデータ処理装置は命令デコーダは、実行順序指定フィールドが第１の値とは異なる第２の値であることに従って第２のデコード結果を出力し、演算実行部は、前記第２のデコード結果に従い、第１、第２および第３のオペレーションコードフィールドのそれぞれが指定する演算を並列に実行すべくなしてあることを特徴とする。
【０００９】
また本発明に係るデータ処理装置は命令デコーダは、実行順序指定フィールドが第１の値とは異なる第３の値であることに従って第３のデコード結果を出力し、演算実行部は、前記第３のデコード結果に従い、第１、第２および第３のオペレーションコードフィールドのそれぞれが指定する演算を所定の順番で逐次実行すべくなしてあることを特徴とする。
【００１０】
また本発明に係るデータ処理装置は演算実行部は、演算処理を行う複数の演算部を有し、第３のデコード結果に従い、第１、第２および第３のオペレーションコードフィールドのそれぞれが指定する演算は前記複数の演算部のうちの同一の演算部で処理されるべくなしてあることを特徴とする。
【００１１】
また本発明に係るデータ処理装置は演算実行部は、演算の処理を行う第１および第２の演算部を有し、第１のサイクルにおいて、前記第１の演算部は第１のオペレーションコードフィールドにより指定された演算を処理し、前記第２の演算部は前記第１の演算部と並列に動作するように第２のオペレーションコードフィールドにより指定された演算を処理し、第２のサイクルにおいて、第３のオペレーションコードフィールドにより指定された演算を前記第１の演算部で処理するようにしたことを特徴とする。
【００１２】
また本発明に係るデータ処理装置は命令デコーダは、命令の第１、第２および第３のオペレーションコードフィールドをそれぞれデコードし、そのデコード結果であるそれぞれ第１、第２および第３の制御信号を出力する第１、第２および第３のデコード部と、実行順序指定フィールドをデコードする第４のデコード部とを有し、この第４のデコード部から出力される第４の制御信号に従って前記第１、第２および第３の制御信号が前記命令デコーダから出力されるタイミングが制御されるように構成され、前記演算実行部は、前記命令デコーダから出力される第１、第２および第３の制御信号に従って、第１、第２、第３のオペレーションコードフィールドによりそれぞれ指定された演算を実行すべくなしてあることを特徴とする。
【００１３】
また本発明に係るデータ処理装置は、命令は、互いに同一の長さであり、各々命令の実行するための情報を有する第１、第２および第３の固定フィールドを有し、第１、第２および第３のオペレーションコードフィールドは、それぞれ前記第１、第２および第３の固定フィールド内にあることを特徴とする。
【００１４】
また本発明に係るデータ処理装置は、命令は、さらに、第１のオペレーションコードフィールドにより指定される演算の実行条件を指定する第１の条件指定フィールド、第２のオペレーションコードフィールドにより指定される演算の実行条件を指定する第２の条件指定フィールド、および第３のオペレーションコードフィールドにより指定される演算の実行条件を指定する第３の条件指定フィールドを有し、前記第１、第２および第３のオペレーションコードフィールドによりそれぞれ指定された演算のうち、対応する条件指定フィールドの指定する実行条件を満たす演算のみを有効として実行するように構成されたことを特徴とする。
【００１５】
また本発明に係るデータ処理装置は、各々は演算の種類を指定する複数のオペレーションコードフィールドと、これらのオペレーションコードフィールドに対応して設けられ、各々は対応のオペレーションコードフィールドにより指定される演算の実行条件を指定する複数の条件指定フィールドと、前記複数のオペレーションコードフィールドによりそれぞれ指定される演算の少なくとも２つを並列に実行するかもしくは逐次に実行するかを指定する実行順序指定フィールドとを有する命令をデコードする命令デコーダ、および、前記命令デコーダに接続され、この命令デコーダから出力されるデコード結果により制御され、前記実行順序指定フィールドに指定される実行順序に従って前記複数のオペレーションコードフィールドにより指定された各演算を実行することのできる演算実行部を備え、前記命令デコード部は、前記複数のオペレーションコードフィールドの指定する演算のうち、対応する条件指定フィールドの指定する実行条件を満たす演算のみを有効として実行するように前記命令実行部を制御していることを特徴とする。
【００１６】
また本発明に係るデータ処理装置は、命令実行部は、複数のオペレーションコードフィールドの指定する演算のうち、対応する条件指定フィールドの指定する実行条件を満たす演算の演算結果のみをレジスタ、メモリあるいはフラグに反映するようにしたことを特徴とする。
【００１７】
また本発明に係るデータ処理装置は、命令の実行に際して参照されるべき情報を保持している複数のフラグを備え、複数の条件指定フィールドの各々は、前記フラグのいずれか１つを指定し、複数のオペレーションコード指定部によりそれぞれ指定された演算の有効もしくは無効は、その対応する条件指定フィールドの指定するフラグに保持された内容が所定の値であるか否かにより決定されるようにしたことを特徴とする。
【００１８】
また本発明に係るデータ処理装置は、複数の条件指定フィールドの各々は、対応するオペレーションコードフィールドに指定される演算が無条件に有効であるとする条件を指定できるようにしたことを特徴とする。
【００１９】
【発明の実施の形態】
以下、本発明のデータ処理装置をその実施の形態を示す図面に基づいて詳述する。
【００２０】
〔発明の第１の実施の形態〕
(1) 「命令セットとレジスタ」
図１の模式図に本発明のデータ処理装置の第１の実施の形態の命令フォーマットを示す。なお、本発明のデータ処理装置の命令フォーマットには２種類のフォーマットが用意されている。
【００２１】
図１において、参照符号１は１個のフォーマットフィールド(FM)10と３個の演算フィールド11, 12, 13とからなる３演算命令のフォーマットを、参照符号２は１個のフォーマットフィールド10と２個の演算フィールド14, 15とからなる２演算命令のフォーマットをそれぞれ示している。なお、本発明のデータ処理装置の命令は８バイト（64ビット) の固定長であり、図１に示されているフォーマット１の３演算命令もフォーマット２の２演算命令も共に全体としては８バイト長である。
【００２２】
フォーマット１の３演算命令では、３個の演算フィールド11, 12, 13それぞれが20ビットの短型フォーマットの演算コード(operation＿0, operation＿1 又は operation＿2)を１個ずつ指定する。フォーマット２の２演算命令では、２個の演算フィールド14, 15の内の演算フィールド14が１個の20ビットの短型フォーマットの演算コード(operation＿0)と、演算フィールド15が１個の40ビットの長型フォーマットの演算コード(operation＿1)との計２個の演算コードを指定する。
【００２３】
図２の模式図にフォーマットフィールド10の内容、即ちその値と意味との詳細を示す。なお、この第１の実施の形態においては、フォーマットフィールド10は４ビット構成であり、16種類に分類される。ここで、”2-ops.”は２演算命令を、”3-ops.”は３演算命令を、”1st ”はその欄の演算(operation＿0, operation＿1 又は operation＿2)が最初に実行されるべきであることを、”2nd ”はその欄の演算が二番目に実行されるべきであることを、”3rd ”はその欄の演算が三番目に実行されるべきであることをそれぞれ意味している。また、”--- ”はその欄の演算が存在しないことを意味している。
【００２４】
フォーマットフィールド10は、３演算命令のフォーマット１と２演算命令のフォーマット２との区別のほか、それぞれの演算の順序を指定する。ここで演算の順序の指定とは、図２に示されているように、各演算を逐次実行する場合の順序を指定する以外に２個または３個の演算を並列実行する場合をも含む。
【００２５】
たとえば、フォーマットフィールド10の値が”FM=0100 ”である場合は、３演算命令であり、演算フィールド11で指定される operation＿0 と演算フィールド12で指定される operation＿1 とがまず同時に並列実行され、その後に演算フィールド13で指定される operation＿2 が実行される。この場合、 operation＿0 と operation＿1 とは並列実行されるため、相互のオペランドに競合がないことをソフトウェアが保証する必要がある。
【００２６】
一方、 operation＿0 と operation＿2 または operation＿1 と operation＿2 はいずれの場合も互いを逐次実行することをハードウェアが保証する。ここで逐次実行とは、命令を１個ずつ順次的に実行する従来のデータ処理装置と同様に、先に実行すべき命令の演算結果がその次に実行されるべき命令に反映されることを意味する。
【００２７】
図３の模式図に短型フォーマットの演算コードの詳細を示す。短型フォーマットには５種類のフォーマット、即ちSBフォーマット31, SRフォーマット32, SM-1フォーマット33, SM-2フォーマット34, SIフォーマット35がある。
【００２８】
これらの５種類のフォーマット31, 32, 33, 34, 35それぞれは、４ビットの実行条件フィールド(<cond>)20と、演算の種類を指定する５ビットのオペレーションコードフィールド21または６ビットのオペレーションコードフィールド23と、分岐命令の分岐幅を指定する11ビットのディスプレイスメント(DISP)フィールド22と、レジスタ上のオペランドを指定する５ビットのレジスタフィールド24と、５ビットのメモリ上のオペランドのアドレスを保持するレジスタ番号を指定する間接アドレスフィールド25, 26と、５ビットの即値を指定する５ビットの即値フィールド27とを組み合わせて構成されている。５種類のフォーマット31, 32, 33, 34, 35の全てに実行条件フィールド20が含まれており、全ての演算は実行条件フィールド20で指定された実行条件が真である場合にのみその演算が有効となる。ここで演算が有効とは、演算結果がレジスタ, メモリあるいはフラグに反映されることを意味する。
【００２９】
短型のSBフォーマット31で指定できる演算は、DISPフィールド22で指定される分岐幅が11ビットで表現可能な範囲の分岐及びサブルーチン分岐である。この第１の実施の形態においては、各命令が８バイト長であるため命令アドレスの下位３ビットは常時”０”になり、この場合、14 (＝３＋11) ビットで16Ｋバイトまでの分岐幅を指定出来る。
【００３０】
短型のSRフォーマット32で指定出来る演算は、加減算等の算術演算, 論理演算, シフト, ビット操作等、計16種類のレジスタ間演算である。
【００３１】
短型のSM-1フォーマット33で指定出来る演算は、16種類のロードあるいはストアであり、間接アドレスフィールド25に示されているレジスタ番号<Rb>のレジスタにメモリオペランドのアドレスが格納される。但し、間接アドレスフィールド25が示すレジスタ番号<Rb>が”０”である場合は、ロードに際してはメモリ側のオペランドのアドレッシングモードがスタックからのポップとなり、ストアに際してはメモリ側オペランドのアドレッシングモードがプッシュとなる。
【００３２】
短型のSM-2フォーマット34で指定できる演算は、16種類のロード及びストアであり、間接アドレスフィールド26が示すレジスタ番号<Rb>のレジスタの内容とそのレジスタ番号より”１”だけ大きなレジスタ番号のレジスタの内容との和がメモリオペランドのアドレスとなる。
【００３３】
短型のSIフォーマット35で指定できる演算は、即値フィールド27の５ビットの即値とレジスタ間の算術演算, 論理演算, ビット操作等の演算, 即値のロード, 無効演算等の12種類の演算である。
【００３４】
図４の模式図に長型フォーマットの演算コードの詳細を示す。長型フォーマットには８種類のフォーマット、即ちLBフォーマット71, LM-1フォーマット72, LM-2フォーマット73, LI-Rフォーマット74, LR-Rフォーマット75, LR-Cフォーマット76, LI-Cフォーマット77, MISCフォーマット78があり、ロード, ストア, 各種のレジスタ間の演算, 比較, ジャンプ等の多種多様の演算を行なう。各フォーマット71乃至78には実行条件フィールド20が含まれており、前述の短型フォーマット31乃至35で指定される演算と同様に、全ての演算は実行条件フィールド20で指定された実行条件が真である場合にのみ有効となる。
【００３５】
長型のLBフォーマット71は、分岐とサブルーチン分岐の演算のためのフォーマットである。
【００３６】
長型のLM-1フォーマット72は、ロード及びストア演算のためのフォーマットである。LM-1フォーマット72では、メモリオペランドのアドレスがフィールド35で示されるレジスタの内容にフィールド38で示される18ビットで表現された符号付き２進数値を加えた値で与えられる。
【００３７】
長型のLM-2フォーマット73も、ロード及びストア演算のためのフォーマットである。LM-2フォーマット73では、メモリオペランドのアドレスが２ビットのフィールド41で示されるアドレッシングモードに従って与えられる。図５の一覧図にフィールド41のアドレッシングモードの種類を示す。
【００３８】
図５において、フィールド41の値が”<ea>＝00”の場合はPC値とディスプレイスメント値を符号拡張した値との加算値、”<ea>＝01”の場合はPC値とレジスタRcの値との加算値、”<ea>＝10”の場合はPC値とレジスタRcの値との加算値がそれぞれアドレスとなり、”<ea>＝11”の場合はポップまたはプッシュモードである。
【００３９】
長型のLI-R, LR-Rフォーマット74, 75は、３オペランドの算術演算, 論理演算, シフト演算等のようなレジスタ間の３オペランド演算、あるいは16ビットで表現される１個の即値と２個のレジスタオペランド間の演算のためのフォーマットである。
【００４０】
長型のLR-Cフォーマット76は比較演算のためのフォーマットである。LR-Cフォーマット76では、フィールド48で示されるレジスタオペランドとフィールド55で示されるレジスタオペランドとの間の比較演算を指定する。
【００４１】
長型のLI-Cフォーマット77も比較演算のためのフォーマットである。LI-Cフォーマット77では、フィールド48で示されるレジスタオペランドとフィールド62で示される即値オペランドとの間の比較演算を指定する。フィールド57は比較演算の真偽判断条件を指定するフィールドであり、その詳細は図６の一覧図に示されている。２個のオペランドに対してこのフィールド57で示された条件の比較が行なわれ、その真偽が判断される。フィールド58は真偽結果を反映するフラグの番号を指定する。フラグは８個あり、フィールド58で指定された番号のフラグが”11”または”10”に変化する。フィールド59は複数の比較演算の条件判断結果を蓄積する際に使用するフィールドであり、フィールド58で指定された条件判断結果との論理積をとるフラグの番号及びそのフラグの真偽値の反転／非反転を指定する４ビットのフィールドである。ビット１〜３が論理積をとるフラグの番号を指定し、ビット０がその入力フラグ値を真偽反転して使用するか、または真偽反転せずに使用するかを指定する。
【００４２】
長型のMISCフォーマット78は、ビットマップ操作, ストリング操作等のような多数のオペランドを処理する演算、または無効演算, 制御レジスタ操作等の特権演算に使用するフォーマットである。
【００４３】
本発明のデータ処理装置では、命令デコードを単純にするためにジャンプ演算を一命令にたかだか１個のみ指定可能とする。また、２演算命令では２個の演算フィールドのいずれにもジャンプ演算を配置可能であるが、３演算命令では演算フィールド11にのみジャンプ演算を配置可能とする。
【００４４】
図７の模式図に本発明のデータ処理装置のレジスタ構成を示す。この第１の実施の形態においては、レジスタとしては、32個の32ビット長の汎用レジスタ (R0〜R31)81、32個の64ビット長の浮動小数点レジスタ(FR0〜FR31)83 、更に10個の32ビット長の制御レジスタ82が含まれる。
【００４５】
ゼロ番の汎用レジスタ(R0)80は書き込み値が無視され、読み出された場合に常に”０”を出力するレジスタである。31番の汎用レジスタ(R31)84 はスタックポインタでユーザ用(USP),システム用(SSP),割り込み処理用(ISP) の３個がモードにより切り替わる。
【００４６】
制御レジスタ82にはプロセッサステータスワード(PSW)85,プログラムカウンタ(PC)86, 浮動小数点演算例外制御レジスタ(FEIT)87, アドレス変換ベースレジスタ(UATB)88, 例外処理テーブルベースレジスタ(EITVB)89,デバッグサポートレジスタ(DBC, BPA0, BPA1, BMC)90がある。
【００４７】
浮動小数点レジスタ83は浮動小数点演算のオペランドとなる短精度の浮動小数点数（32ビット長）または倍精度の浮動小数点数（64ビット長）を格納する。
【００４８】
図８及び図９の模式図にプロセッサステータスワード(PSW)85 の詳細な内容を示す。なお、図８はプロセッサステータスワード(PSW)85 の前半の詳細な内容を、図９はプロセッサステータスワード(PSW)85 の後半の詳細な内容をそれぞれ示す。
【００４９】
図８において、２ビットの RNGフィールド91はプロセッサのモードを決定するフィールドであり、この第１の実施の形態においては”RNG=00”である場合に割り込み処理モードに、”RNG=10”である場合にシステムモードに、”RNG=11”である場合にユーザモードにそれぞれなる。ATフィールド92はアドレス変換機構のオンオフを切り替えるフィールドであり、１ビットのDBフィールド93はデバッグ機構のオンオフを切り替えるフィールドである。１ビットのＸフィールド96はキャリーフラグであり、整数の有効桁数拡張算術演算に使用される。１ビットのＶフィールド97はオーバフローフラグであり、整数の算術演算でオーバフローが生じた場合にセットされ、オーバフローが生じなければリセットされる。３ビットの IMASKフィールド94は外部割り込みのマスク状態を制御するフィールドである。８個の条件フラグ95は各フラグが２ビットで構成されており、比較命令で明示的にフラグ番号を指定することにより各フラグを読み出したり、あるいは各フラグに書き込みを行なったりする他、制御レジスタアクセス命令によりプロセッサステータスワード85の内容を読み出したり、あるいは書き換えたりすることにより、参照したりあるいは変更したりすることが可能である。
【００５０】
図９に示されている条件フラグ95は本発明のデータ処理装置の命令に含まれる各演算が有効であるか無効であるかを決定する重要な役割を有する。この第１の実施の形態では、命令の各フォーマットに含まれる４ビットの実行条件フィールド20の内のビット１〜３が条件フラグ95の８個のフラグの内の１個のフラグ番号を指定し、ビット０がビット１〜３で指定されたフラグが”偽=10 ”である場合に演算を有効にするか、または”真=11 ”である場合に演算を有効にするかを示す。ビット０〜３で指定されたフラグが”未定義=00 or 01 ”である場合、または指定内容とフラグ値とが異なる場合はその演算は無効になる。条件フラグ95のF0は初期値が”偽=10 ”で他のフラグは初期値が”未定義=00 ”である。ここで、F0フラグは初期状態で各命令フォーマットの条件フィールド20を”1000=F0 が偽なら演算有効”として各演算を無条件で有効にするために初期値が”10”になっている。各フラグはLR-C, LI-Cフォーマットのフィールド57が指定する真偽判断条件による演算結果を判定する変化対象フラグとしてフィールド58で指定された特定の１個のみが変化する。但し、加算または汎用比較演算等の結果に依存して３個のフラグが同時に変化することもある。また、VA(F4)フラグは特定時点の初期化以降に整数演算のオーバーフローがあった場合にも”真＝11”になる。
【００５１】
(2) 「ハードウェア構成」
本発明のデータ処理装置の第１の実施の形態の全体の構成を図10のブロック図に示す。
【００５２】
参照符号107 はバスインタフェイス部であり、本発明のデータ処理装置と外部のメモリとの間をアドレスバス, データバス及び制御信号で接続する。
【００５３】
参照符号105 は命令フェッチ部であり、命令キャッシュ及び命令用アドレス変換バッファ(ITLB)を備えている。命令フェッチ部105 は、命令を命令キャッシュから、またはバスインタフェイス部107 を介して外部のメモリからフェッチし、64ビットのIIバス108 を経由して命令マッパ101 へ転送する。
【００５４】
参照符号106 はオペランドアクセス部であり、データキャッシュ及びデータ用アドレス変換バッファ(DTLB)を備えている。オペランドアクセス部106 は、データをデータキャッシュから、またはバスインタフェイス部107 を介して外部のメモリからフェッチしてメモリアクセス部125 へ転送したり、あるいはメモリアクセス部125 から転送されたデータをバスインタフェイス部107 を介して外部のメモリに書き込む。
【００５５】
命令マッパ101 は命令フェッチ部105 から転送された64ビットの命令をその先頭の４ビットのフォーマットフィールド10の内容に従って演算フィールドに分解し、指定された順序で命令デコーダ102 へ転送する。この際、命令マッパ101 は演算の種類に応じて各演算フィールドを６個のデコーダ111 〜116 の内の対応するデコーダに再配置して転送する。
【００５６】
命令デコーダ102 は短型フォーマット31または長型フォーマット71等のジャンプ演算のフィールドをデコードするPCD111、短型フォーマット32, 34または長型フォーマット74〜78の整数の算術演算命令等の汎用レジスタにあるオペランドに関する演算のフィールドをデコードするIAD112, IBD113, ICD114、短型フォーマット33または長型フォーマット72, 73のロードストア演算のフィールドをデコードするMD115 、長型フォーマット72〜77の浮動小数点演算のフィールドをデコードするFD116 から構成される。
【００５７】
制御回路103 にはプロセッサステータスワード85のフラグ95が含まれており、命令デコーダ102 のデコード結果とフラグ95の内容とに従って演算部104 を制御する。
【００５８】
演算部104 は命令デコーダ102 の６つのデコーダ111 〜116 に対応して、PC部121,３部分からなる整数演算部120,メモリアクセス部125,浮動小数点演算部126 の６つの部分から構成される。
【００５９】
PC部121 はプログラムカウンタ及び加算器を含み、ジャンプ命令以外の命令では実行した命令のPC値に”８”を加算して次に実行すべき命令のPC値を計算し、ジャンプ命令では実行したジャンプ命令のPC値に分岐変位を加算するか、あるいは命令で指定されたアドレッシングモードに従って計算を行なうことにより、ジャンプ先命令のPC値を計算する。
【００６０】
整数演算部120 には前述の図７に示されている多ポートの汎用レジスタ81及び制御レジスタ82と、３個のシフタ及び３個のALU とが含まれており、３個の整数演算を並列に実行するための３個の整数演算機構(IA, IB, IC)122, 123, 124 にて構成される。
【００６１】
浮動小数点演算部126 には図７に示されている浮動小数点レジスタ83と、浮動小数点加算器及び浮動小数点乗算器等の演算機構とがあり、浮動小数点演算を実行する。PC部121 、整数演算機構122, 123, 124 、浮動小数点演算部126 はそれぞれ他と独立に動作するが、必要に応じてバスを経由して相互にデータを送受信することも可能である。
【００６２】
メモリアクセス部125 は演算部104 の他の部分121, 120, 126 と協調して動作し、オペランドアクセス部106 との間でデータを送受信する。
【００６３】
演算部104 と命令フェッチ部105,オペランドアクセス部106 とはJAバス, AAバス及びDDバスで結合されており、それぞれ演算部104 と命令アドレス, データアドレス及びデータを送受信する。
【００６４】
(3) 「命令マッパと命令デコーダ」
図11のブロック図に命令マッパ101 及び命令デコーダ102 の具体的な構成例を示す。命令マッパ101 は、IIバス108 へ出力されている64ビットの命令コードからフォーマットフィールド10, 各演算フィールド11〜15を抽出する演算フィールド抽出部200 と、フォーマットフィールド10をデコードするFMデコーダ221 とで構成される。
【００６５】
演算フィールド抽出部200 の各抽出部201 〜213 はそれぞれIIバス108 上の命令コードの一部のビットフィールドを抽出し、命令デコーダ102 を構成する各デコーダ111 〜116 に対応する各演算フィールドのビット列を出力する。64ビットのIIバス108 の内、抽出部201 はビット０〜３を、抽出部202 はビット４〜23を、抽出部203 はビット24〜63を、抽出部204 はビット４〜23を、抽出部205 はビット24〜43を、抽出部206 はビット24〜63を、抽出部207 はビット44〜63を、抽出部208 はビット４〜23を、抽出部209 はビット24〜43を、抽出部210 はビット44〜63を、抽出部211 はビット24〜63を、抽出部212 はビット４〜23を、抽出部213 はビット24〜63をそれぞれ抽出して命令デコーダ102 へ出力する。
【００６６】
命令デコーダ102(PCD111, IAD112, IBD113, ICD114, MD115, FD116) はデコーダ部220 と出力処理部240 とで構成されている。具体的には、PCD111は抽出部202 が抽出した短型フォーマットのジャンプ演算コードをデコードするPCS デコーダ222 と、抽出部203 が抽出した長型フォーマットのジャンプ演算コードをデコードする PCLデコーダ223 と、出力処理部241 とで構成される。出力処理部241 は、 PCSデコーダ222, PCLデコーダ223 及びFMデコーダ221 の３個のデコーダのデコード結果に従って、 PCSデコーダ222 または PCLデコーダ223 の出力に従うジャンプ演算, 現PC値に”８”を加算する非ジャンプ演算, 無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【００６７】
IAD112は抽出部204 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ224 と出力処理部242 とで構成される。出力処理部242 は、ISデコーダ224 のデコード結果とFMデコーダ221 のデコード結果とに従って、ISデコーダ224 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【００６８】
IBD113は抽出部205 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ225 と、抽出部206 が抽出した長型フォーマットの整数演算コードをデコードするILデコーダ226 と、出力処理部243 とで構成される。出力処理部243 は、ISデコーダ225 とILデコーダ226 とFMデコーダ221 との３個のデコーダのデコード結果に従って、ISデコーダ225 またはILデコーダ226 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【００６９】
ICD114は抽出部207 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ227 と、出力処理部244 とで構成される。出力処理部244 は、ISデコーダ227 のデコード結果とFMデコーダ221 のデコード結果とに従って、ISデコーダ227 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【００７０】
MD115 は抽出部208, 209, 210 が抽出した短型フォーマットのメモリアクセス演算コードをそれぞれデコードするMSデコーダ228, 229, 230 と、抽出部211 が抽出した長型フォーマットのメモリアクセス演算コードをデコードするMLデコーダ231 と、出力処理部245 とで構成される。出力処理部245 は、MSデコーダ228, 229, 230 とMLデコーダ231 とFMデコーダ221 との計５個のデコーダのデコード結果に従って、MSデコーダ228, 229, 230 またはMLデコーダ231 の出力に従うメモリアクセス演算と無効演算との内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【００７１】
FD116 は抽出部212 が抽出した短型フォーマットの浮動小数点演算コードをデコードするFSデコーダ232 と、抽出部213 が抽出した長型フォーマットの浮動小数点演算コードをデコードするFLデコーダ233 と、出力処理部246 とで構成される。出力処理部246 は、FSデコーダ232 とFLデコーダ233 とFMデコーダ221 とのデコード結果に従って、FSデコーダ232 またはFLデコーダ233 の出力に従う浮動小数点演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【００７２】
出力処理部240(241 〜246)の出力は制御回路103 に入力され、演算部104 の演算を制御するために用いられる。具体的には、出力処理部241 の出力はPC部121 でのPC計算の制御に使用される。出力処理部242, 243, 244 の出力はそれぞれ整数演算部120 の整数演算機構(IA, IB, IC)122, 123, 124 での整数演算の制御に使用される。出力処理部245 の出力はメモリアクセス部125 でのメモリアクセス動作の制御に使用される。出力処理部246 の出力は浮動小数点演算部126 での浮動小数点演算の制御に使用される。
【００７３】
FMデコーダ221 のデコード結果の一部は命令フェッチ部105 へも出力され、次の命令コードのIIバス108 への出力タイミングを制御する。命令が２個または３個の演算を逐次実行することを指定している場合には、IIバス108 の値がそれぞれ２クロックサイクルまたは３クロックサイクルの間保持され、フォーマットフィールド10で指定された演算順序に従って各出力処理部241 〜246 の出力が制御される。これにより、クロック毎にその時点で有効な演算フィールドに対応する演算部へはその演算フィールドのデコード結果に従う制御信号が、無効な演算フィールドに対応する演算部へは無効演算の制御信号が、それぞれ各出力処理部241 〜246 から出力される。
【００７４】
短型フォーマットでのみ指定可能な演算、短型と長型とのいずれのフォーマットでも指定可能な演算、長型フォーマットでのみ指定可能な演算の一覧をそれぞれの演算を処理するデコーダの情報と共に以下の一覧表に示す。
【００７５】
表１は短型フォーマットの演算コードのみで指定可能な演算の一覧であり、24種類ある。表２は短型フォーマットと長型フォーマットとのいずれでも指定可能な演算の一覧であり、19種類ある。表３乃至表７は長型フォーマットの演算コードのみで指定可能な演算の一覧であり、74種類ある。
【００７６】
【表１】
0003741551.tif 000002
【００７７】
【表２】
0003741551.tif 000003
【００７８】
【表３】
0003741551.tif 000004
【００７９】
【表４】
0003741551.tif 000005
【００８０】
【表５】
0003741551.tif 000006
【００８１】
【表６】
0003741551.tif 000007
【００８２】
【表７】
0003741551.tif 000008
【００８３】
表１乃至表７において、mnemonicは各演算の略号とそのオペランドを、functionは各演算の意味をそれぞれ示す。typeは各演算の命令マッパ101 での分配先となるデコーダの種類を示している。即ち、typeがPCである演算コードは PCSデコーダ222 または PCLデコーダ223 へ、typeがInteger である演算コードはISデコーダ224,ISデコーダ225,ILデコーダ226 またはISデコーダ227 へ、typeがMemoryである演算コードはMSデコーダ228,MSデコーダ229,MSデコーダ230 またはMLデコーダ231 へ、typeがFloating point(FP)である演算コードはFSデコーダ232 またはFLデコーダ233 へ、それぞれフォーマットの長短あるいは命令上のフィールド位置に依存して命令マッパ101 により分配される。
【００８４】
なお、formatの欄は、SRは”Short Register”を、SIは”Short Immediate ”を、SMは”Short Memory”を、SBは”Short Branch”を、LRは”Long Register ”を、LIは”Long Immediate”を、LMは”Long Memory ”を、LBは”Long Branch ”をそれぞれ示している。
【００８５】
(4) 「命令実行の例」
図12乃至図20の模式図に本発明のデータ処理装置のプログラムの例を示す。ここでは、フォートラン語, Ｃ言語によるソースプログラムと、そのソースプログラムを本発明のデータ処理装置のアセンブラ語で表現したアセンブラプログラムとの双方を示している。
【００８６】
各アセンブラプログラムでは２個または３個の演算を一組にまとめ、それぞれの組を空行で区切って示してある。各組の２個乃至３個の演算は図１の参照符号１または２で示されているフォーマットにエンコードされ、本発明のデータ処理装置で一命令として処理される。
【００８７】
図12に示されているのは、配列Ａ及び配列Ｂの各要素相互の積の合計を求めるフォートラン言語によるソースプログラムである。このソースプログラムをアセンブラ言語に翻訳すると図13に示されているようなアセンブラプログラムになる。アセンブラプログラムの前半の３個の命令がループの初期設定であり、後半の３個の命令がループを構成する。このプログラムの実行時間の大半はループの実行時間が占めるため、後半の３個の命令を高速実行することが重要である。本発明のデータ処理装置では、ループ内の８個の演算を３個の命令にエンコードし、それぞれの命令で３個または２個の演算を並列に処理するため、ループの演算が高速実行される。
【００８８】
命令301 は、浮動小数点レジスタFR1 へメモリから浮動小数点数をロードする演算(FLD)303（長型フォーマットにエンコードされる）と、汎用レジスタR1へ即値をロードする演算(LDI)304（短型フォーマットにエンコードされる）との２個の演算を並列実行する２演算命令である。また、命令302 は、浮動小数点レジスタFR2 へメモリから浮動小数点数をロードする演算(FLD)305（短型フォーマットにエンコードされる）と、汎用レジスタR1へ即値を加算する演算(ADDI)306(短型フォーマットにエンコードされる）と、汎用レジスタR2へ即値を加算する演算(ADDI)307(短型フォーマットにエンコードされる）との３個の演算を並列実行する３演算命令である。
【００８９】
参照符号313 で示されている”1C0F”は演算(FLD)303が実行されるタイミングと実行条件とを示すフィールドであり、最初の”１”はこの演算がデコード直後に発行されることを意味し、引き続く”C0F ”はこの演算が条件フラグF0が”偽＝10”である場合に有効であることを示す。また、フィールド313 の演算発行タイミング”１”は、フィールド314 の演算発行タイミング”１”及びこの命令が２演算命令であるということと共にフォーマット１の命令コードのフォーマットフィールド10にエンコードされる。フィールド313 及び314 の実行条件”C0F ”はそれぞれ演算(FLD)303及び(LDI)304に対応する実行条件フィールド20にエンコードされる。
【００９０】
命令301 を処理する際、演算(FLD)303の演算コードは命令マッパ101 の抽出部211 により切り出され、MLデコーダ231 によりデコードされて出力処理部245 を経て制御回路103 に送られ、メモリアクセス部125 で実行される。演算(LDI)304の演算コードは命令マッパ101 の抽出部204 により切り出され、ISデコーダ224 によりデコードされて出力処理部242 を経て制御回路103 に送られ、IA122 により実行される。ここで、フラグF0が”10”であるとすると、演算(FLD)303と演算(LDI)304とは共に有効であり、タイミング指定が共に”１”であるため、両演算(FLD)303及び(LDI)304はディレイなしに並列実行され、演算結果がレジスタFR1 及びR1に反映される。
【００９１】
命令301 はビット４〜23に短型フォーマットの演算フィールドを、ビット24〜63に長型フォーマットの演算フィールドをそれぞれ有する命令であるため、それ以外の演算フィールドに対応する抽出部205, 207, 209, 210で切り出されたビット列は有効な演算コードではない。このため、FMデコーダ221 から無効化信号が出力されることによりデコード結果が出力処理部240 で無効化される。また、抽出部202, 203, 206, 208, 212, 213で切り出されてデコーダ部220 に送られた演算コードは各デコーダが対象とする演算コードではないので、デコーダ部220 で無効演算に変換されて出力される。
【００９２】
命令302 を処理する際に、演算(FLD)305の演算コードは抽出部208 により切り出され、MSデコーダ228 によりデコードされて出力処理部245 を経て制御回路103 に送られ、メモリアクセス部125 で実行される。演算(ADDI)306 の演算コードと演算(ADDI)307 の演算コードとはそれぞれ、抽出部205 と抽出部207 により切り出され、ISデコーダ225 とISデコーダ227 とでデコードされて出力処理部243 と出力処理部244 とを経て制御回路103 に送られ、IB123 とIC124 とにより実行される。ここで、フラグF0が”10”であるとすると、演算(FLD)305, 演算(ADDI)306 及び演算(ADDI)307 は全て有効であり、且つタイミング指定が全て”１”であるため、３個の演算はディレイなしに並列実行され、演算結果がレジスタFR2, R1, R2 にそれぞれ反映される。
【００９３】
命令302 はビット４〜23, 24〜43, 44〜63に３個の短型フォーマットの演算フィールドを有する命令であるため、それ以外の演算フィールドに対応する抽出部203, 206, 211, 213で切り出されたビット列は有効な演算コードではない。このため、FMデコーダ221 からの無効化信号によりデコード結果が出力処理部240 で無効化される。また、抽出部202, 204, 209, 210, 212 で切り出されてデコーダ部220 に送られた演算コードは各デコーダが対象とする演算コードではないのでデコーダ部220 で無効演算に変換されて出力される。
【００９４】
図14は図12に示されているソースプログラムのループを展開してソースプログラムの４回のループが１回のループになるように翻訳したアセンブラプログラムである。ループを展開する目的はプログラムの実行時間を短縮することにある。図13に示されているアセンブラプログラムでは、３命令でソースプログラムのループ１回分の演算を行なうが、図14に示されているアセンブラプログラムでは６命令でソースプログラムのループ４回分の演算を行なう。
【００９５】
ここでの命令数の削減には、分岐演算BRA が減少したことと、４個のデータをメモリの連続領域から４個のレジスタにロードする演算(FLD4)309 を使用したことが寄与している。本発明のデータ処理装置では、４個のデータをメモリからロードする演算(FLD4)309 の実行時間が２クロックサイクルであるため、演算数を削減した効果がそのまま実行時間の削減に必ずしも寄与するものではない。しかし、図14に示されているアセンブラプログラムはソースプログラムのループ４回分の演算を９クロックサイクル (分岐演算BRA と演算FLD4とを２クロックサイクルで実行し、その他の演算を１クロックサイクルで実行する場合）で実行するため、ソースプログラムのループ１回分を５クロックサイクル (分岐演算BRA を２クロックサイクルで実行し、その他の演算を１クロックサイクルで実行する場合）で実行する図13に示されているアセンブラプログラムより２倍以上高速である。
【００９６】
図15及び図16の模式図には、配列Ｘの各要素を調べ、その値が一定値(XLIMIT)より大きい要素の数をカウントするプログラムが示されている。ソースプログラムを図15に、それを翻訳したアセンブラプログラムを図16にそれぞれ示す。
【００９７】
図16に示されているアセンブラプログラムの後半の３個の命令がループを形成する。ループ中の命令320 はレジスタR1に即値を加算する演算(ADDI)321 と分岐演算(BRA)323と無効演算(NOP)325とにより構成されている。演算(ADDI)321 は、実行条件フィールド322 の値”C4T ”に従ってフラグF4  が”真＝11”である場合に演算が有効となり、レジスタR3に新たな値が書き込まれる。フラグF4は、配列Ｘの要素の値がXLIMITより大きい場合は”11”に、XLIMIT以下である場合は”10”にそれぞれ演算(FCGT)326 によりなるため、演算(ADDI)321 は結果として配列Ｘの要素の内のXLIMITより大きい値を有する要素の数をカウントすることになる。また分岐演算(BRA)323は、実行条件324 の値”C3F ”によりフラグF3が”偽＝10”である場合にラベルL1へ分岐する。フラグF3は、演算(CMP)327により、配列Ｘの最後の要素に到達した時点で”11”に、その他の場合は”10”にそれぞれなる。つまり、分岐演算(BRA)323は図15のDOループを制御する分岐である。
【００９８】
図17はポインタ操作を行なうＣ言語によるソースプログラムを、図18はそれを翻訳したアセンブラプログラムをそれぞれ示す模式図である。
【００９９】
命令330 は３個のストア演算(STW)331, 333, 335を行なう命令である。この命令では、これら３個のストア演算(STW)331, 333, 335の発行タイミングをフィールド332, 334, 336 の最初でそれぞれ”１”, ”２”, ”３”と指定することにより、逐次実行する。演算331, 333, 335 はそれぞれ、命令マッパ101 の抽出部208, 209, 210 により切り出され、MSデコーダ228, 229, 230 によりデコードされて出力処理部245 へ出力される。出力処理部245 は、各演算の発行タイミングを指定するフォーマットフィールド10のFMデコーダ221 によるデコード結果に従って、MSデコーダ228, 229, 230 のデコード結果を１クロックサイクル遅延させつつ制御回路103 に送る。従って、３個のストア演算(STW)331, 333, 335は１クロックずつずれてメモリアクセス部125 で逐次実行される。
【０１００】
命令340 はロード演算(LDW)341と比較演算(CMP)343と分岐演算(BRA)345とを行なう命令である。この命令では、これら３個の演算の発行タイミングをフィールド342, 344, 346 の最初でそれぞれ”１”, ”２”, ”３”と指定することにより３個の演算を逐次実行する。演算341, 343, 345 はそれぞれ、フォーマット1 の３演算命令のフィールド12, 13, 14にエンコードされ、命令マッパ101 の抽出部209, 207, 202 により切り出され、MSデコーダ229,ISデコーダ227, PCSデコーダ222 によりデコードされて出力処理部245, 244, 241 へ出力される。出力処理部245, 244, 241 は、各演算の発行タイミングを指定するフォーマットフィールド10のFMデコーダ221 によるデコード結果に従って、３個のデコード結果を指定された順序に１クロックサイクルずつ遅延させつつ制御回路103 に送る。従って、まず演算(LDW)341が実行され、次に演算(CMP)343が実行され、最後に演算(BRA)345が実行される。演算(CMP)343は演算(LDW)341でレジスタR1にロードされた値を使用し、演算(BRA)345は演算(CMP)343の結果に従って変化するフラグF3の値に依存した処理を行なうため、並列実行した場合と逐次実行した場合とでは演算結果が異なる。
【０１０１】
図19は条件文 (if文) が入れ子になっているＣ言語によるソースプログラムを、図20はそれを翻訳したアセンブラプログラムをそれぞれ示す模式図である。
【０１０２】
このプログラムは配列の要素の値が”２”になる場合に特殊な処理を行なうが、その場合を除けば、２個の配列の要素を順次的に走査し、相互の値が異なっている場合にいずれが大きいかに応じて”１”または”-1”のいずれかを呼び出し、元へ返すプログラムである。
【０１０３】
演算(IFG)350はフラグを初期化する演算である。この演算が行なわれることにより、フラグF0のみが”偽＝10”の状態になり、他のフラグF1〜F7はいずれも”未定義＝00”の状態となる。本発明のデータ処理装置では、全ての演算が実行条件を伴うため、全フラグが”00”の状態では有効な演算が行なえない。このため、フラグF0のみは初期状態で”10”になるようにし、大半のプログラムではフラグF0が”10”であることを前提として演算を実行する。
【０１０４】
演算(CNE)351はレジスタR3の値とR4の値とが不一致(not equal) であるか否かを調べ、その結果をフラグF6に反映する演算である。
【０１０５】
演算(CLT)352はレジスタR3の値がレジスタR4の値より小であるか否か( ”less than ”) を調べ、その結果をフラグF7に反映する演算である。但し、この命令は実行条件として”C6T ”が指定されているため、フラグF6が”真＝11”である場合にのみフラグF7を”11”または”10”に変更する。即ち、フラグF6が”偽＝10”である場合は、フラグF7を”未定義＝00”の状態に維持する。
【０１０６】
演算(LDI)353はフラグF7が”11”である場合に演算結果が有効となり、”-1”をレジスタR15 に書き込む演算である。
【０１０７】
演算(LDI)354はフラグF7が”10”である場合に演算結果が有効となり、”１”をレジスタR15 に書き込む演算である。
【０１０８】
そして、演算(JMP)355はフラグF6が”11”である場合に呼び出されたルーチンへ制御を返す命令である。”aa≠bb”である場合にこれらの三つの演算により”１”または”-1”が呼び出し元へ返される。”aa＝bb”である場合はレジスタR15 には何も書き込まれないし、呼び出し元へ制御が返されることもない。
【０１０９】
〔他の実施の形態〕
上述の第１の実施の形態においては、命令のフォーマットフィールド10が４ビットであり、一命令で２個または３個の演算を指定する命令を処理するデータ処理装置について述べている。しかし、フォーマットフィールドのビット数または一命令で指定できる演算の数が上述の第１の実施の形態と異なる場合にも、命令のフォーマット及び演算の順序を指定するフォーマットフィールドを有する命令を処理するデータ処理装置を同様に実現することは可能である。
【０１１０】
図21はフォーマットフィールドが２ビットであり、一命令が１個または２個の演算フィールドを有する場合の本発明のデータ処理装置の第２の実施の形態の命令フォーマットを示す模式図である。
【０１１１】
この第２の実施の形態では、命令フォーマットは２種類である。参照符号401 は１個のフォーマットフィールド(FM)410 と２個の演算フィールド411, 412とで構成される２演算命令のフォーマットを示しており、参照符号402 は１個のフォーマットフィールド410 と１個の演算フィールド413 とで構成される１演算命令のフォーマットを示している。なお、本第２の実施の形態においては、命令は４バイト（32ビット) の固定長であり、図21に示されているフォーマット401 の２演算命令もフォーマット402 の１演算命令も共に全体としては４バイト長である。
【０１１２】
フォーマット401 の２演算命令では、２個の演算フィールド411, 412それぞれが15ビットの短型フォーマットの演算コードを１個ずつ指定する。フォーマット402 の１演算命令では、１個の演算フィールド413 が30ビットの長型フォーマットの演算コードを１個指定する。
【０１１３】
図22の模式図にフォーマットフィールド410 の内容、即ちその値と意味との詳細を示す。なお、この第２の実施の形態においては、フォーマットフィールド410 は２ビット構成であり、４種類に分類される。ここで、”1st ”, ”2nd ”及び”--- ”は前述の図２に示されている第１の実施の形態の場合と同様の意味を有する。
【０１１４】
フォーマットフィールド410 では、２演算命令のフォーマット401 と１演算命令のフォーマット402 との区別のほか、２演算命令の演算の順序を指定する。ここで演算の順序の指定とは、図22に示されているように、２個の演算を逐次実行する場合の順序を指定する以外に２個の演算を並列実行する場合をも含む。
【０１１５】
この第２の実施の形態のハードウェア構成は図23に示されているが、図10に示されている第１の実施の形態のハードウェアと類似した構成を有する。主な相違点は、整数演算に関する命令デコーダと整数演算部とが３個ではなく２個のサブブロックから構成されることである。具体的には、図10に参照符号112, 113, 114 及び122, 123, 124 で示されている３組の内の参照符号112, 113及び122, 123で示されている２組にて構成されること、及び浮動小数点演算に関する命令デコーダ116 及び演算部126 が備えられていないことである。
【０１１６】
また、図24のブロック図に図23のブロック図に対応する命令マッパ101 及び命令デコーダ102 の具体的な構成例を示す。
【０１１７】
命令マッパ101 は、IIバス108 へ出力されている32ビットの命令コードからフォーマットフィールド410,各演算フィールド411 〜413 を抽出する演算フィールド抽出部200 と、フォーマットフィールド410 をデコードするFMデコーダ621 とで構成される。
【０１１８】
演算フィールド抽出部200 の各抽出部601 〜613 はそれぞれIIバス108 上の命令コードの一部のビットフィールドを抽出し、命令デコーダ102 を構成する各デコーダ111 〜113, 115に対応する各演算フィールドのビット列を出力する。32ビットのIIバス108 の内、抽出部601 はビット０〜１を、抽出部602 はビット２〜16を、抽出部603 はビット17〜31を、抽出部604 はビット２〜31を、抽出部605 はビット２〜16を、抽出部606 はビット17〜31を、抽出部607 はビット２〜31を、抽出部608 はビット２〜16を、抽出部609 はビット17〜31を、抽出部610 はビット２〜31を、抽出部611 はビット２〜16を、抽出部612 はビット17〜31を、抽出部613 はビット２〜31をそれぞれ抽出して命令デコーダ102 へ出力する。
【０１１９】
命令デコーダ102(PCD111, IAD112, IBD113, MD115)はデコーダ部220 と出力処理部240 とで構成されている。具体的には、PCD111は抽出部602 が抽出した短型フォーマットのジャンプ演算コードをデコードするPCS デコーダ622 と、抽出部603 が抽出した短型フォーマットのジャンプ演算コードをデコードする PCSデコーダ623 と、抽出部604 が抽出した長型フォーマットのジャンプ演算コードをデコードする PCLデコーダ624 と、出力処理部641 とで構成される。出力処理部641 は、 PCSデコーダ622, 623,PCLデコーダ624 及びFMデコーダ621 の４個のデコーダのデコード結果に従って、 PCSデコーダ622, 623または PCLデコーダ624 の出力に従うジャンプ演算, 現PC値に”８”を加算する非ジャンプ演算, 無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１２０】
IAD112は抽出部605 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ625 と、抽出部606 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ626 と、抽出部607 が抽出した長型フォーマットの整数演算コードをデコードするILデコーダ627 と、出力処理部642 とで構成される。出力処理部642 は、ISデコーダ625, 626とILデコーダ627 とFMデコーダ621 との４個のデコーダのデコード結果に従って、ISデコーダ625, 626またはILデコーダ627 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１２１】
IBD113は抽出部608 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ628 と、抽出部609 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ629 と、抽出部610 が抽出した長型フォーマットの整数演算コードをデコードするILデコーダ630 と、出力処理部643 とで構成される。出力処理部643 は、ISデコーダ628, 629とILデコーダ630 とFMデコーダ621 との４個のデコーダのデコード結果に従って、ISデコーダ628, 629またはILデコーダ630 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１２２】
MD115 は抽出部611, 612が抽出した短型フォーマットのメモリアクセス演算コードをそれぞれデコードするMSデコーダ631, 632と、抽出部613 が抽出した長型フォーマットのメモリアクセス演算コードをデコードするMLデコーダ633 と、出力処理部644 とで構成される。出力処理部644 は、MSデコーダ631, 632とMLデコーダ633 とFMデコーダ621 との計４個のデコーダのデコード結果に従って、MSデコーダ631, 632またはMLデコーダ633 の出力に従うメモリアクセス演算と無効演算との内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１２３】
出力処理部640(641 〜644)の出力は制御回路103 に入力され、演算部104 の演算を制御するために用いられる。具体的には、出力処理部641 の出力はPC部121 でのPC計算の制御に使用される。出力処理部642, 643の出力はそれぞれ整数演算部120 の整数演算機構(IA, IB)122, 123での整数演算の制御に使用される。出力処理部644 の出力はメモリアクセス部125 でのメモリアクセス動作の制御に使用される。
【０１２４】
図25は１ビットのフォーマットフィールドを１個または２個有し、一命令が１個または２個の演算フィールドを含む本発明のデータ処理装置の第３の実施の形態の命令フォーマットを示す模式図である。
【０１２５】
この第３の実施の形態の命令フォーマットは２種類である。参照符号501 はそれぞれが１ビットの２個のフォーマットフィールド(FM)505, 506と、それぞれが15ビットの２個の演算フィールド511, 512とで構成される２演算命令のフォーマットであり、参照符号502 は１ビットの１個のフォーマットフィールド505 と、31ビットの１個の演算フィールド513 とで構成される１演算命令のフォーマットである。なお、この第３の実施の形態においては、命令は４バイト（32ビット) の固定長であり、図25に示されているフォーマット501 の２演算命令もフォーマッ5 402 の１演算命令も共に全体としては４バイト長である。
【０１２６】
フォーマット501 の２演算命令では、２個の演算フィールド511, 512がそれぞれ１個ずつの15ビットの短型フォーマットの演算コードを指定する。フォーマット502 の１演算命令では、１個の演算フィールド513 が31ビットの長型フォーマットの演算コードを１個指定する。
【０１２７】
図26の模式図にフォーマットフィールド505, 506の内容、即ちその値と意味との詳細を示す。なお、この第３の実施の形態においては、フォーマットフィールド505, 506はいずれも１ビット構成であり、命令フォーマット501 で２種類, 命令フォーマット502 で１種類、計３種類の指定をする。ここで、”1st ”, ”2nd ”及び”--- ”は前述の図２及び図22に示されている第１及び第２の実施の形態の場合と同様の意味を有する。
【０１２８】
ところで、この第３の実施の形態の命令フォーマットのフォーマットフィールド505, 506は前述の第２の実施の形態の命令フォーマットのフォーマットフィールド410 を縮退して一部を二分割したものである。この第３の実施の形態は前述の第２の実施の形態に比して、２演算命令のフォーマット501 のフォーマットフィールド(FM)が２個のフィールド505, 506に分離され、かつフォーマットフィールド505 で指定可能な命令のフォーマットと演算実行順序の組み合わせが４種類から３種類に減少している。しかし、それらの代わりに、長型フォーマット502 の演算フィールド513 の長さが30ビットから31ビットに増加し、かつ短型フォーマット501 の演算フィールド511, 512が16ビット境界であるビット15とビット16とをまたぐことなく配置されている。
【０１２９】
この第３の実施の形態のハードウェア構成は前述の図23に示されている第２の実施の形態と同様である。
【０１３０】
また、図27のブロック図に本第３の実施の形態のハードウェア構成に対応する命令マッパ101 及び命令デコーダ102 の具体的な構成例を示す。
【０１３１】
命令マッパ101 は、IIバス108 へ出力されている32ビットの命令コードからフォーマットフィールド505, 506, 各演算フィールド511 〜513 を抽出する演算フィールド抽出部200 と、フォーマットフィールド505, 506  をデコードするFMデコーダ721 とで構成される。
【０１３２】
演算フィールド抽出部200 の各抽出部701 〜713 はそれぞれIIバス108 上の命令コードの一部のビットフィールドを抽出し、命令デコーダ102 を構成する各デコーダ111 〜113, 115に対応する各演算フィールドのビット列を出力する。32ビットのIIバス108 の内、抽出部701 はビット０及び16を、抽出部702 はビット１〜15を、抽出部703 はビット17〜31を、抽出部704 はビット１〜31を、抽出部705 はビット１〜15を、抽出部706 はビット17〜31を、抽出部707 はビット１〜31を、抽出部708 はビット１〜15を、抽出部709 はビット17〜31を、抽出部710 はビット１〜31を、抽出部711 はビット１〜15を、抽出部712 はビット17〜31を、抽出部713 はビット１〜31をそれぞれ抽出して命令デコーダ102 へ出力する。
【０１３３】
命令デコーダ102(PCD111, IAD112, IBD113, MD115)はデコーダ部220 と出力処理部240 とで構成されている。具体的には、PCD111は抽出部702 が抽出した短型フォーマットのジャンプ演算コードをデコードするPCS デコーダ722 と、抽出部703 が抽出した短型フォーマットのジャンプ演算コードをデコードする PCSデコーダ723 と、抽出部704 が抽出した長型フォーマットのジャンプ演算コードをデコードする PCLデコーダ724 と、出力処理部741 とで構成される。出力処理部741 は、 PCSデコーダ722, 723,PCLデコーダ724 及びFMデコーダ721 の４個のデコーダのデコード結果に従って、 PCSデコーダ722, 723または PCLデコーダ724 の出力に従うジャンプ演算, 現PC値に”８”を加算する非ジャンプ演算, 無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１３４】
IAD112は抽出部705 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ725 と、抽出部706 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ726 と、抽出部707 が抽出した長型フォーマットの整数演算コードをデコードするILデコーダ727 と、出力処理部742 とで構成される。出力処理部742 は、ISデコーダ725, 726とILデコーダ727 とFMデコーダ721 との４個のデコーダのデコード結果に従って、ISデコーダ725, 726またはILデコーダ727 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１３５】
IBD113は抽出部708 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ728 と、抽出部709 が抽出した短型フォーマットの整数演算コードをデコードするISデコーダ729 と、抽出部710 が抽出した長型フォーマットの整数演算コードをデコードするILデコーダ730 と、出力処理部743 とで構成される。出力処理部743 は、ISデコーダ728, 729とILデコーダ730 とFMデコーダ721 との４個のデコーダのデコード結果に従って、ISデコーダ728, 729またはILデコーダ730 の出力に従う整数演算または無効演算の内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１３６】
MD115 は抽出部711, 712が抽出した短型フォーマットのメモリアクセス演算コードをそれぞれデコードするMSデコーダ731, 732と、抽出部713 が抽出した長型フォーマットのメモリアクセス演算コードをデコードするMLデコーダ733 と、出力処理部744 とで構成される。出力処理部744 は、MSデコーダ731, 732とMLデコーダ733 とFMデコーダ721 との計４個のデコーダのデコード結果に従って、MSデコーダ731, 732またはMLデコーダ733 の出力に従うメモリアクセス演算と無効演算との内のいずれか一つを行なう制御信号を制御回路103 へ出力する。
【０１３７】
出力処理部740(741 〜744)の出力は制御回路103 に入力され、演算部104 の演算を制御するために用いられる。具体的には、出力処理部741 の出力はPC部121 でのPC計算の制御に使用される。出力処理部742, 743の出力はそれぞれ整数演算部120 の整数演算機構(IA, IB)122, 123での整数演算の制御に使用される。出力処理部744 の出力はメモリアクセス部125 でのメモリアクセス動作の制御に使用される。
【０１３８】
なお、以上の各実施の形態においては、演算フィールドに配置される演算の種類に可能な限り制限を加えない場合を例としているが、演算フィールドに配置される演算の種類に制限が加えられてもよいのであれば、本発明のデータ処理装置を図10に示されているよりはるかに簡易なハードウェアで構成することも可能である。
【０１３９】
たとえば、第３の実施の形態の演算フィールド511 と512 とに配置可能な演算の対称性をなくし、フォーマットフィールド505, 506が共に”01”である場合には演算フィールド512 に無効演算命令のみを配置可能に制限することにより、一方が無効演算である場合にのみ並列実行演算を実行し（実際には演算がなく並列デコードのみ必要）、逐次実行演算である場合には一命令デコーダで演算フィールド511 と512 との双方の演算を時間をずらせて逐次的にデコードすることにより、演算フィールド511 と512 とに配置可能な演算が自由な場合に比して、ハードウェアの規模をほぼ半分程度に削減することが可能になる。
【０１４０】
以上のとおり、本発明のデータ処理装置では、実行すべき演算の種類を指定する少なくとも１個の演算フィールドと、演算フィールドの個数を指定するフォーマットフィールドとからなる命令コードをデコードして制御信号を出力する命令デコーダと、命令デコーダに接続しており、命令デコーダが出力する制御信号に従って命令を実行する複数の演算手段とを備え、第１の個数の演算フィールドを含む第１の命令コードを命令デコーダがデコードした場合に、命令デコーダは第１の制御信号を出力し、複数の演算手段は第１の制御信号に従って第１の個数の演算を実行し、第１の個数とは異なる第２の個数の演算フィールドを含み、第１の命令コードと同一コード長の第２の命令コードを命令デコーダがデコードした場合に、命令デコーダは第１の制御信号とは異なる第２の制御信号を出力し、複数の演算手段は第２の制御信号に従って第２の個数の演算を実行する。
たとえば２個の演算フィールドとフォーマットフィールドとからなる64ビット長の２演算命令を処理する際は、命令デコーダが２演算を行なうための制御信号を出力し、２個の演算手段が演算を実行し、３個の演算フィールドとフォーマットフィールドとからなる64ビット長の３演算命令を処理する際は、命令デコーダが３演算を行なうための制御信号を出力し、３個の演算手段が演算を実行する。このように本発明のデータ処理装置では、命令の長さは一定に維持しながらも一命令で指定可能な演算の個数を調整することにより、レジスタ番号及び即値等の必要情報が多く且つ演算コードが長い演算と、必要情報が少なく且つ演算コードが短い演算とを固定長の命令コードにエンコードすることが可能になる。このため、命令長を特定するための処理が不要になり、命令の切れ目が常に整置されたアドレス境界に位置するので、命令デコード処理が容易になると共に、コード化効率の良いプログラムを記述すことが可能になる。
【０１４１】
また、本発明のデータ処理装置は、命令コードをデコードする命令デコーダと、命令デコーダに接続しており、命令デコーダのデコード結果に従って制御信号を出力する制御部と、制御部に接続しており、制御部が出力する制御信号に従って命令を実行する第１の演算手段及び第２の演算手段とを備え、実行すべき演算の種類を指定する少なくとも第１及び第２の演算フィールドと、演算フィールドの個数と演算フィールドが指定する演算の実行順序とを指定するフォーマットフィールドとからなる命令コードを命令デコーダがデコードした場合に、制御部はフォーマットフィールドが指定する演算の実行順序と、第１及び第２の演算フィールドが指定する演算の種類とに従って第１の制御信号と第２の制御信号とを出力し、第１の演算手段は第１の制御信号に従って第１の演算を実行し、第２の演算手段は第２の制御信号に従って第２の演算を実行する。
たとえば２個または３個の演算フィールドと、演算フィールドの数と演算フィールドで指定された演算の実行順序を指定するフォーマットフィールドとからなる複数演算命令を処理する際に、命令デコーダが複数命令をデコードしてフォーマットフィールドで指定された順序で２個または３個の制御信号群を出力し、２個または３個の演算手段がそれぞれの制御信号群で指定された演算を実行する。このように本発明のデータ処理装置では、一命令にエンコード可能な演算の数とエンコードされた演算の実行順序とを可変にしている。このため、演算の実行順序を決定するための無駄な無効演算を用いる必要がない固定長の複数演算命令でコード化効率のよいプログラムを記述することが可能になる。
【０１４２】
また本発明に係るデータ処理装置は上述の構成において、第１の演算フィールドが指定する第１の演算と、第２の演算フィールドが指定する第２の演算とを逐次実行することをフォーマットフィールドにより指定された第１の命令コードを命令デコーダがデコードした場合に、命令デコーダは第１のデコード結果を出力し、制御部が第１のデコード結果に従って第１の時刻に第１の制御信号を、その後の第２の時刻に第２の制御信号を出力することにより、第１の演算手段が第１の制御信号に従って第１の演算を実行し、その後に第２の演算手段が第２の制御信号に従って第２の演算を実行し、第１の演算フィールドが指定する第３の演算と、第２の演算フィールドが指定する第４の演算とを同時実行することをフォーマットフィールドにより指定された第２の命令コードを命令デコーダがデコードした場合に、命令デコーダは第２のデコード結果を出力し、制御部が第２のデコード結果に従って第３の制御信号と第４の制御信号とを同時に出力することにより、第１の演算手段と第２の演算手段とが同時に第３の制御信号及び第４の制御信号に従って第３の演算及び第４の演算をそれぞれ実行する。
たとえば２個または３個の演算フィールドと、演算フィールドの数と演算フィールドで指定された演算の実行順序を指定するフォーマットフィールドとからなる複数演算命令を処理する際に、命令デコーダが複数命令をデコードしてフォーマットフィールドで指定された順序に従って２個または３個の制御信号群を出力し、２個または３個の演算手段がそれぞれの制御信号群で指定された演算を逐次実行したり、あるいは２個または３個の演算フィールドと、演算フィールドの数と演算フィールドで指定された演算を同時実行することを指定するフォーマットフィールドとからなる複数演算命令を処理する際に、命令デコーダが複数命令をデコードして同時に２個または３個の制御信号群を出力し、２個または３個の演算手段がそれぞれの制御信号群で指定された演算を同時実行する。このように本発明のデータ処理装置では、一命令にエンコードされる演算の数とエンコードされた演算を同時実行するかまたは逐次実行するかを指定できる。このため、固定長の複数演算命令で同時実行可能な演算は同時にエンコードして高速実行し、順序づけが必要な演算は無駄な無効演算を用いずにコード化効率よくエンコードして逐次実行することにより、高速かつコンパクトなプログラムを記述することが可能になる。
【０１４３】
また本発明に係るデータ処理装置は、命令コードの所定のフィールドをデコードして制御信号を出力する第１のデコーダと、第１のデコーダに接続しており、第１のデコーダが出力する制御信号に従って動作する第１の演算実行部と、所定のフィールドをデコードして制御信号を出力する第２のデコーダと、第２のデコーダに接続しており、第２のデコーダが出力する制御信号に従って動作する第２の演算実行部とを備え、第１の種類の演算が所定のフィールドにより指定されている第１の命令コードがデコード  された場合に、第１及び第２のコーダが同時に所定のフィールドをデコードし、第１のデコーダは第１の制御信号を、第２のデコーダは第１の制御信号とは異なる第２の制御信号をそれぞれ出力し、第１の演算実行部は第１の制御信号に従って第１の演算を実行し、第２の演算実行部は第２の制御信号に従って演算を実行せず、第２の種類の演算が所定のフィールドにより指定されている第２の命令コードがデコードされた場合に、第１及び第２のデコーダが同時に所定のフィールドをデコードし、第１のデコーダは第３の制御信号を、第２のデコーダは第３の制御信号とは異なる第４の制御信号をそれぞれ出力し、第１の演算実行部は第３の制御信号に従って演算を実行せず、第２の演算実行部は第４の制御信号に従って第２の演算を実行する。
たとえば命令の第１演算フィールドをデコードして整数演算に関する制御信号を出力する整数演算デコーダと、このデコーダに接続し整数演算に関する制御信号に従って動作する整数演算実行部と、命令の同じ演算フィールドをデコードしてメモリアクセスに関する制御信号を出力するメモリアクセス演算用デコーダと、このデコーダに接続し、メモリアクセスに関する制御信号に従って動作するメモリアクセス部とを備え、演算フィールドで整数加算を指定する命令を処理する際に、整数演算デコーダとメモリアクセス演算デコーダとが同時に整数加算を指定する演算フィールドをデコードし、整数演算デコーダが整数加算に関する制御信号を出力し、メモリアクセス演算デコーダが無効演算の制御信号を出力し、整数演算部が整数加算を実行し、メモリアクセス部が有効なメモリアクセス演算を行なわず、演算フィールドでメモリからレジスタへデータをロードするロード演算を指定する命令を処理する際に、整数演算デコーダとメモリアクセス演算デコーダとが同時にロード演算を指定する演算フィールドをデコードし、整数演算デコーダが無効演算の制御信号を出力し、メモリアドレスアクセス部がロード演算を実行する。このように本発明のデータ処理装置では、命令で指定された１個の演算フィールドを異なる２個の演算部の一方で有効な演算を行ない、他方では有効な演算を行なわないことで演算の種類に依存して２個の種類の演算実行部がそれぞれ専用のデコーダが出力する制御信号に従って動作して命令を処理する。このため、デコーダと演算実行部とを接続する制御信号の配線が単純で回路設計が容易になり、かつ各デコーダは機能が単純で高速なデコードが可能になる。
【０１４４】
また本発明に係るデータ処理装置は、命令コードの第１の演算フィールドをデコードして第１の制御信号を出力する第１のデコーダと、第１の演算フィールドとは異なる第２の演算フィールドをデコードして第２の制御信号を出力する第２のデコーダと、第１のデコーダと第２のデコーダとに接続しており、第１の制御信号と第２の制御信号との双方を入力していずれか一方を選択的に出力する出力処理部と、出力処理部に接続しており、出力処理部が出力した制御信号に従って動作する演算実行部とを備え、第１の演算フィールドにより第１の演算が、第２の演算フィールドにより第２の演算がそれぞれ指定されている第１の命令コードがデコードされた場合に、第１のデコーダが第１の演算フィールドを、第２のデコーダが第２の演算フィールドを同時にデコードし、第１のデコーダが第１の制御信号を、第２のデコーダが第２の制御信号をそれぞれ出力して出力処理部が第１の制御信号を選択的に演算実行部へ出力することにより、また、第１の演算フィールドにより第３の演算が、第２の演算フィールドにより第１の演算がそれぞれ指定されている第２の命令コードがデコードされた場合に、第１のデコーダが第１の演算フィールドを、第２のデコーダが第２の演算フィールドを同時にデコードし、第１のデコーダが第３の制御信号を、第２のデコーダが第４の制御信号をそれぞれ出力して出力処理部が第４の制御信号を選択的に演算実行部へ出力することにより、第１の演算が第１の演算フィールドまたは第２の演算フィールドのいずれで指定されている場合においても、演算実行部が第１の演算を実行する。
たとえば、第１演算フィールドでメモリからデータをロードするロード演算を指定し、第２演算フィールドで整数加算を指定する第１の命令を処理する際に、第１及び第２のデコーダが同時に第１演算フィールドと第２演算フィールドとをデコードし、第１のデコーダがロード演算に関する制御信号を出力し、第２のデコーダが無効演算の制御信号を出力し、出力処理部がロード演算に関する制御信号を選択的にメモリアクセス部へ出力し、メモリアクセス部がロード演算を実行し、第１演算フィールドで右シフトを指定し、第２演算フィールドでロード演算を指定する第２の命令を処理する際に、第１及び第２のデコーダが並列に第１演算フィールドと第２演算フィールドとをデコードし、第１のデコーダが無効演算の制御信号を出力し、第２のデコーダがロード演算に関する制御信号を出力し、出力処理部がロード演算に関する制御信号を選択的にメモリアクセス部へ出力し、メモリアクセス部がロード演算を実行する。このように本発明のデータ処理装置では、演算を複数の演算フィールドを含む命令のいずれの演算フィールドで指定したかには拘わらずに複数のデコーダが並列に演算フィールドをデコードし、出力処理部がデコード結果から無効な演算を排除して有効な演算を選択的に演算部へ送り、同一の演算実行部が指定された演算を実行する。このため、演算実行部の数より多数の演算フィールドで指定された演算を高速実行可能なデータ処理装置を安価に実現することが可能になる。
【図面の簡単な説明】
【図１】  本発明のデータ処理装置の第１の実施の形態による命令フォーマットを示す模式図である。
【図２】  図１に示されているフォーマットフィールドの値とその意味を示す模式図である。
【図３】  図１に示されている命令フォーマットの演算フィールドで指定可能な短型フォーマットの演算コードを示す模式図である。
【図４】  図１に示されている命令フォーマットの演算フィールドで指定可能な長型フォーマットの演算コードを示す模式図である。
【図５】  図４に示されている長型フォーマットの演算コードのフィールドで指定可能なアドレッシングモードを示す一覧図である。
【図６】  比較演算の真偽判定条件を指定するフィールドの内容を示す一覧図である。
【図７】  本発明のデータ処理装置のレジスタ構成を示す模式図である。
【図８】  本発明のデータ処理装置のプロセッサステータスワードの前半部の構成を示す模式図である。
【図９】  本発明のデータ処理装置のプロセッサステータスワードの後半部の構成を示す模式図である。
【図１０】  本発明のデータ処理装置の第１の実施の形態による全体の構成例を示すブロック図である。
【図１１】  本発明のデータ処理装置の第１の実施の形態による命令マッパ及び命令デコーダの構成例を示すブロック図である。
【図１２】  本発明のデータ処理装置により実行されるプログラムの一例として、配列Ａ及び配列Ｂの各要素相互の積の合計を求めるフォートラン言語によるソースプログラムを示す模式図である。
【図１３】  図１２に示されているソースプログラムをアセンブラ言語に翻訳したアセンブラプログラムを示す模式図である。
【図１４】  図１２に示されているソースプログラムのループを展開してソースプログラムの４回のループが１回のループになるように翻訳したアセンブラプログラムを示す模式図である。
【図１５】  本発明のデータ処理装置により実行されるプログラムの一例として、配列Ｘの各要素を調べ、その値が一定値(XLIMIT)より大きい要素の数をカウントするソースプログラムを示す模式図である。
【図１６】  図１５に示されているソースプログラムをアセンブラ言語に翻訳したアセンブラプログラムを示す模式図である。
【図１７】  本発明のデータ処理装置により実行されるプログラムの一例として、ポインタ操作を行なうＣ言語によるソースプログラムを示す模式図である。
【図１８】  図１７に示されているソースプログラムをアセンブラ言語に翻訳したアセンブラプログラムを示す模式図である。
【図１９】  本発明のデータ処理装置により実行されるプログラムの一例として、条件文 (if文) が入れ子になっているＣ言語によるソースプログラムを示す模式図である。
【図２０】  図１９に示されているソースプログラムをアセンブラ言語に翻訳したアセンブラプログラムを示す模式図である。
【図２１】  本発明のデータ処理装置の第２の実施の形態による命令フォーマットを示す模式図である。
【図２２】  図２１に示されているフォーマットフィールドの値とその意味を示す模式図である。
【図２３】  本発明のデータ処理装置の第２の実施の形態による全体の構成例を示すブロック図である。
【図２４】  本発明のデータ処理装置の第２の実施の形態による命令マッパ及び命令デコーダの構成例を示すブロック図である。
【図２５】  本発明のデータ処理装置の第３の実施の形態による命令フォーマットを示す模式図である。
【図２６】  図２５に示されているフォーマットフィールドの値とその意味を示す模式図である。
【図２７】  本発明のデータ処理装置の第３の実施の形態による命令マッパ及び命令デコーダの構成例を示すブロック図である。
【符号の説明】
１  短型フォーマット、２  長型フォーマット、10  フォーマットフィールド、11, 12, 13, 14, 15  演算フィールド、101   命令マッパ、102   命令デコーダ、103   制御回路、104   演算部、401   短型フォーマット、402   長型フォーマット、410   フォーマットフィールド、411, 412, 413   演算フィールド、501   短型フォーマット、502   長型フォーマット、505, 506  フォーマットフィールド、511, 512, 513   演算フィールド。
【図１】
0003741551.tif 000009
【図２】
0003741551.tif 000010
【図３】
0003741551.tif 000011
【図４】
0003741551.tif 000012
【図５】
0003741551.tif 000013
【図６】
0003741551.tif 000014
【図７】
0003741551.tif 000015
【図８】
0003741551.tif 000016
【図９】
0003741551.tif 000017
【図１０】
0003741551.tif 000018
【図１１】
0003741551.tif 000019
【図１２】
0003741551.tif 000020
【図１３】
0003741551.tif 000021
【図１４】
0003741551.tif 000022
【図１５】
0003741551.tif 000023
【図１６】
0003741551.tif 000024
【図１７】
0003741551.tif 000025
【図１８】
0003741551.tif 000026
【図１９】
0003741551.tif 000027
【図２０】
0003741551.tif 000028
【図２１】
0003741551.tif 000029
【図２２】
0003741551.tif 000030
【図２３】
0003741551.tif 000031
【図２４】
0003741551.tif 000032
【図２５】
0003741551.tif 000033
【図２６】
0003741551.tif 000034
【図２７】
0003741551.tif 000035