【手続補正書】
【提出日】平成17年2月8日(2005.2.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムシーケンスに記述されたコード化された複数の演算命令を順次デコードして、各演算命令に対応する制御信号を出力する命令デコーダ、および、
前記命令デコーダから出力される前記制御信号に従って、前記複数の演算命令によりそれぞれ指定された演算を実行する命令実行部を備え、
第１の期間において、前記命令デコーダが前記複数の演算命令のうちの第１の演算命令をデコードして第１の制御信号を出力し、前記第１の期間に続く第２の期間において、前記命令実行部が前記第１の制御信号に従って前記第１の演算命令で指定された演算を実行し、
第３の期間において、前記命令デコーダが、前記複数の演算命令のうちの所定の条件の基で演算が実行される第２の演算命令をデコードして第２の制御信号を出力し、前記第３の期間の終わりから前記第２の期間と同じ時間、あるいはそれより長い時間が経過した後に開始される第４の期間において、前記命令実行部が前記所定の条件を満たしているか否かを判断し、その判断結果に応じて前記第２の演算命令で指定された演算を実行する、データ処理装置。
【請求項２】
その保持される値を可変に設定できる遅延量指定レジスタを備え、
前記命令実行部は、前記遅延量指定レジスタに遅延量として保持されている値に応じて第２の演算命令が所定の条件を満たしているかの判断を開始する、請求項１に記載のデータ処理装置。
【請求項３】
コード化された第２の演算命令は、演算を指定する演算指定フィールドと、第３の期間の終わりから第４の期間の開始までの間隔を指定する遅延量指定フィールドとを有し、
遅延量指定レジスタには、前記遅延量指定フィールドに記述された内容に従って遅延量が設定される、請求項２に記載のデータ処理装置。
【請求項４】
複数の演算命令の各々に対応付けられたアドレスを順次カウントして保持するプログラムカウンタを備え、
前記遅延量指定レジスタは遅延量としてアドレス値を保持し、
前記命令実行部は、前記遅延量指定レジスタに保持されたアドレス値が前記プログラムカウンタの値と一致したことに応答して、第２の演算命令が所定の条件を満たしているかの判断を開始する、請求項２に記載のデータ処理装置。
【請求項５】
命令実行部は、第４の期間に含まれる第５の期間において、所定の条件を満たしているか否かを判断し、前記第４の期間に含まれ、且つ前記第５の期間が終了して第２の期間と同じ時間あるいはそれより長い時間が経過して開始する第６の期間に前記所定の条件を満たしたときに第２の演算命令で指定された演算を実行する、請求項１に記載のデータ処理装置。
【請求項６】
各々はその保持される値を可変に設定できる第１および第２の遅延量指定レジスタを備え、
前記命令実行部は、前記第１の遅延量指定レジスタに第１の遅延量として保持されている値に従って第２の演算命令が所定の条件を満たしているかの判断を開始し、
前記第２の遅延量指定レジスタに第２の遅延量として保持されている値に従って第２の演算命令所定の条件を満たしたときに第２の演算命令で指定された演算を開始して実行する、請求項５に記載のデータ処理装置。
【請求項７】
コード化された第２の演算命令は、演算を指定する演算指定フィールドと、第３の期間の終わりから第４の期間の開始までの時間を指定する第１の遅延量指定フィールドと、第５の期間の終わりから第６の期間の開始までの時間を指定する第２の遅延量指定フィールドとを有し、
第１の遅延量指定レジスタには、前記第１の遅延量指定フィールドに記述された内容に従って第１の遅延量が設定され、第２の遅延量指定レジスタには、前記第２の遅延量指定フィールドに記述された内容に従って第２の遅延量が設定される請求項６に記載のデータ処理装置。
【請求項８】
複数の演算命令の各々に対応付けられたアドレスを順次カウントして保持するプログラムカウンタを備え、
前記第１および第２の遅延量指定レジスタはそれぞれ第１および第２の遅延量としてアドレス値を保持し、
前記命令実行部は、前記第１の遅延量指定レジスタに保持されたアドレス値が前記プログラムカウンタの値と一致したことに応答して、所定の条件が満たされているかの判断を開始し、前記第２の遅延量指定レジスタに保持されたアドレス値が前記プログラムカウンタの値と一致したことに応答して、前記所定の条件を満たした場合に第２の演算命令で指定された演算を開始し実行する、請求項６に記載のデータ処理装置。
【請求項９】
命令デコーダは、第３の期間より後に開始される第７の期間において、複数の演算命令のうちの第３の演算命令をデコードして第３の制御信号を出力し、命令実行部は、前記第７の期間より後に開始される第８の期間において、前記第３の制御信号に従って前記第３の演算命令で指定された演算を実行してその演算結果を所定の記憶場所に書き込み、
第２の演算命令は、前記第３の演算命令の演算結果が所定の値を有している場合に実行される演算命令を指定しており、
前記命令実行部は、第４の期間の開始が少なくとも前記第８の期間の後になるように、前記所定の記憶場所を参照して前記第２の演算命令により指定される演算を実行すべきか否か決定する、請求項１に記載のデータ処理装置。
【請求項１０】
所定の記憶場所はフラグあるいはレジスタであり、
第３の演算命令は、２つのレジスタの値を比較して、その比較結果を前記所定の記憶場所に書き込む比較命令である、請求項９に記載のデータ処理装置。
【請求項１１】
第２の演算命令は、分岐命令、ジャンプ命令、あるいは加算命令である、請求項１に記載のデータ処理装置。
【請求項１２】
複数の演算命令の各々は、演算の内容を指定する演算指定フィールドと、その演算の実行条件を指定する条件指定フィールドと、その実行条件を判断するタイミングを遅延させる量を指定する遅延量指定フィールドとを有し、
第１の演算命令は無条件に実行される命令であり、前記第１の演算命令の条件指定フィールドに無条件であることを示す情報が記述され、
第２の演算命令の条件指定フィールドおよび遅延量指定フィールドに、それぞれ所定の条件を示す情報および第３の期間の終わりから第４の期間の開始までの間隔を示す情報が記述され、
前記命令デコーダは、前記第１の演算命令における演算指定フィールドに従って第１の制御信号を出力し、前記第１の演算命令における条件指定フィールドに基づき、前記命令実行部が第２の期間で前記第１の演算命令で指定された演算を実行するように前記命令実行部を制御し、
前記命令デコーダは、前記第２の演算命令における演算指定フィールドに従って第２の制御信号を出力し、前記第２の演算命令における遅延量指定フィールドに従って第４の期間で所定の条件を満たしているかを判断させるように前記命令実行部を制御し、前記第２の演算命令における条件指定フィールドに従って所定の条件を満たしたか否かを決定するように前記命令実行部を制御する、請求項１に記載のデータ処理装置。
【請求項１３】
複数の演算命令の各々は、各演算の内容を指定する演算指定フィールドと、その演算の実行条件を指定する条件指定フィールドと、その実行条件を判断するタイミングを遅延させる量を指定する遅延量指定フィールドとを有し、
第１の演算命令は条件付き命令であり、
前記第１の演算命令においては、前記条件指定フィールドおよび遅延量指定フィールドに、それぞれ第２の演算命令の所定の条件とは別の条件を示す情報、および第１の期間に前記別の条件を判断することを示す情報が記述され、
第２の演算命令において、前記条件指定フィールドおよび遅延量指定フィールドに、それぞれ所定の条件を示す情報および第３の期間の終わりから第４の期間の開始までの間隔を示す情報が記述されており、
前記命令デコーダは、前記第１の演算命令における演算指定フィールドに従って第１の制御信号を出力し、前記第１の演算命令における条件指定フィールドおよび遅延量指定フィールドに基づき、前記命令実行部が第２の期間で前記第１の演算命令で指定された演算を実行するように前記命令実行部を制御し、
前記命令デコーダは、前記第２の演算命令における条件指定フィールドおよび演算指定フィールドに従って第１の制御信号を出力し、前記第２の演算命令における遅延量指定フィールドに従って第４の期間で所定の条件を満たしているかを判断させるように前記命令実行部を制御し、前記第２の演算命令における条件指定フィールドに従って所定の条件を満たしたか否かを決定するように前記命令実行部を制御する、請求項１に記載のデータ処理装置。
【請求項１４】
プログラムシーケンスに記述されたコード化された複数の演算命令を順次デコードして、各演算命令に対応する制御信号を出力する命令デコーダ、および、
前記命令デコーダから出力される前記制御信号に従って、前記複数の演算命令によりそれぞれ指定された演算を実行する命令実行部を備え、
前記複数の演算命令のうちの１つが条件付きの演算命令である場合、
前記命令デコーダは、前記条件付きの演算命令をデコードして第１の制御信号を出力し、
前記命令実行部は、
前記命令デコーダから出力される第１の制御信号を保持させる第１のレジスタ、前記条件付き演算命令に指定される演算が実行される条件を示す第１の情報を保持させる第２のレジスタ、および、前記条件の判断を開始する時期を示す第２の情報を保持する第３のレジスタを含み、
前記命令実行部は、
前記第３のレジスタに保持された第２の情報に基づき、前記条件の判断が開始される時期であることを検出したことに応答して、前記第２のレジスタに保持された第１の情報に基づき前記条件が満たされているか否かの判断を開始し、その判断結果に応じて前記第１のレジスタに保持された第１の制御信号を読み出し、その読み出された第１の制御信号に従い前記演算命令に指定された演算の実行を開始するデータ処理装置。
【請求項１５】
第３のレジスタに保持される第２の情報を可変に設定することのできる、請求項１４に記載のデータ処理装置。
【請求項１６】
複数の演算命令の各々に対応付けられたアドレスを順次カウントして保持するプログラムカウンタを備え、
前記第３のレジスタには、第２の情報としてアドレス値が保持され、
前記命令実行部は、前記第３のレジスタに保持されたアドレス値が前記プログラムカウンタのアドレスと一致したことを検出し、その検出に応答して前記条件が満たされているか否かの判断を開始する、請求項１４に記載のデータ処理装置。
【請求項１７】
コード化された条件付き演算命令は、演算の内容を指定する演算指定フィールドと、その演算の実行条件を指定する条件指定フィールドと、その実行条件を判断する時期を指定する遅延量指定フィールドとを有し、
前記命令デコーダは、前記演算指定フィールドに記述された内容に基づいて前記第１の制御信号を生成し、前記条件指定フィールドに記述された内容を第１の情報として出力するとともに前記遅延量指定フィールドに記述された内容を出力し、
前記命令デコーダから出力された第１の情報は、前記第２のレジスタに保持され、
前記命令実行部は、前記命令デコーダから出力される前記遅延量指定フィールドに従って第２の情報を第３のレジスタに書き込む、請求項１５に記載のデータ処理装置。
【請求項１８】
命令実行部は、
さらに、演算命令で指定された演算を開始する時期を示す第３の情報を保持する第４のレジスタを有し、
この第３の情報に従って、前記演算命令で指定された演算が開始される時期であることを検出し、その検出結果に応答して条件が満たされているか否かを判断し、その判断結果に応じて前記演算命令で指定された演算を開始する、請求項１４に記載のデータ処理装置。
【請求項１９】
複数の演算命令の各々に対応付けられたアドレスを順次カウントして保持するプログラムカウンタを備え、
前記第３のレジスタには、第２の情報としてアドレス値が保持され、
前記第４のレジスタには、第３の情報として前記第２の情報とは異なるアドレス値が保持され、
前記命令実行部は、前記第３のレジスタに保持されたアドレス値が前記プログラムカウンタのアドレスと一致したことを検出し、その検出に応答して前記条件が満たされているか否かの判断を開始し、前記第４のレジスタに保持されたアドレス値が前記プログラムカウンタのアドレスと一致したことを検出し、その検出に応答して前記演算命令に指定された演算の実行を開始する、請求項１８に記載のデータ処理装置。
【請求項２０】
コード化された条件付き演算命令は、演算の内容を指定する演算指定フィールドと、その演算の実行条件を指定する条件指定フィールドと、その実行条件を判断する時期を指定する第１の遅延量指定フィールドと、その演算実行を開始する時期を指定する第２の遅延量指定フィールドを有し、
前記命令デコーダは、前記演算指定フィールドに記述された内容に基づいて前記第１の制御信号を生成し、前記条件指定フィールドに記述された内容を第１の情報として出力するとともに前記第１および第２の遅延量指定フィールドに記述された内容を出力し、
前記命令実行部は、前記命令デコーダから出力された前記第１の遅延量指定フィールドに記述された内容に従って第２の情報を第３のレジスタに書き込み、さらに前記命令デコーダから出力された前記第２の遅延量指定フィールドに記述された内容に従って第３の情報を第４のレジスタに書き込む、請求項１８に記載のデータ処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
命令Ｉ２の実行により1000番地への分岐が決定されたとしても、すでにパイプラインに投入され、処理されている命令Ｉ１は無効にすることなく実行すればよく、命令Ｉ２の実行される時点で２つ命令がパイプラインに投入されているアーキテクチャの場合、遅延スロットは２つの命令で埋められることになる。命令シーケンス２の場合、遅延スロットは命令Ｉ１、Ｉ５により構成される。命令Ｉ５はいわゆるNOP（no operation ）命令である。命令Ｉ２により分岐が決定されると命令Ｉ５の次には分岐先の命令がフェッチされる。この命令シーケンス１から命令シーケンス２へのスケジューリングはプログラマ自身あるいはコンパイラーにより行われる。このような命令のスケジューリングに関して、“Computer Architecture: A Quantitative Approach, Morgan Kaufmann 社, 1990年”で種々の手法が提案されている。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
ＶＬＩＷ（very long instruction word）タイプのマイクロプロセッサにおいては、並列に実行することのできる複数のサブ命令を１つの命令コードで表現している。このタイプではどの命令が並列に実行できるかを考慮した高度なスケジューリング技術が必要となり、条件付きの演算命令の存在により、いわゆるＮＯＰ（No Operation）命令というプログラム上意味のない命令を命令シーケンスに挿入しなければならないことが多くなる。ＮＯＰ（No Operation）命令を処理することもマイクロプロセッサの処理性能を低下させる原因でもある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
また、図２（ｂ）に示すフォーマットによる１演算命令１０２もまた、命令フェッチステージIF、命令デコードステージD/A、命令実行ステージE/M、ライトバックステージW においてそれぞれ１クロックサイクルでもって処理される。ステージIFにおいて、１演算命令１０２が命令ＲＡＭ６から命令デコードユニット２へフェッチされる。ステージD/A において、１演算命令１０２がデコーダ８、９の各々に入力される。１演算命令１０２で指定される演算の種類に応じて、デコーダ８、９のいずれか一方が１演算命令１０２をデコードする。デコーダ８がデコードしたならば制御信号１１を出力し、デコーダ９がデコードしたならば制御信号１２を出力する。ステージE/M において、制御信号１１（または１２）に従ってメモリユニット３（又は整数演算ユニット４）が、１演算命令１０２で指定された演算を実行する。ステージWにおいて、ステージE/Mで得られた演算結果が、１演算命令１０２で指定されたレジスタに書き込まれる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
次に、図２の命令フォーマット内のＣＤレジスタについて説明する。ＣＤフィールド４０４は、対応している演算フィールド１０６で指定されたoperation_0 のパイプラインでの処理において、対応している実行条件フィールド４０１で指定される実行条件を判定する時期を遅延させる遅延量を指定するもので、ユーザがＣＤフィールド４０４の値を適宜設定することによりその遅延量を可変に設定することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
ＰＣ制御部１３のレジスタ３２、メモリ制御部１４のレジスタ４２、ＡＬＵ１５のレジスタ５２、及びシフタ１６のレジスタ６２の各々は、operation_0 の演算の実行条件を判断する時期の情報を保持する。実際にはoperation_0 の演算の実行条件を判断するときのＰＣ値（アドレス値）が保持される。例えばＰＣ制御部１３がオフセット値を有するＣＤフィールド４０４に基づいて、そのレジスタ３２に保持されるべきアドレス値を生成する。ＰＣ制御部１３は命令デコードユニット２からＣＤフィールド４０４のオフセット値を受け取り、operation_0 の記述された命令フォーマット１０１のアドレスにそのオフセット値を加算し、その加算値をレジスタ３２にセットする。ＣＤフィールド４０４がレジスタ番号を指定している場合には、ＰＣ制御部１３は命令デコードユニットからそのレジスタ番号を受け取ったそのままレジスタ３２にセットする。レジスタ３２の保持するレジスタ番号で特定されるレジスタには、operation_0 の演算の実行条件を判断するときのＰＣ値（アドレス値）を保持されている。なお、レジスタ３２にＰＣ値が保持されているかレジスタ番号が保持されているかを識別するビットがレジスタ３２に設けられている。メモリ制御部１４、ＡＬＵ１５及びシフタ１６は、ＰＣ制御部１３と同様の方法により、ＰＣ値あるいはレジスタ番号を生成してそれぞれレジスタ４２、５２および６２へセットする。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
さらに、図１に示された整数演算ユニット４内の各レジスタについて説明する。乗算器１７のレジスタ７０、ＡＬＵ１９のレジスタ８０、及びシフタ２０のレジスタ９０の各々は、演算フィールド１０６で指定されるoperation_1 がデコードされて得られる制御信号１２をそのまま保持する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８７
【補正方法】変更
【補正の内容】
【００８７】
次に、図８に示されたプログラム例を用いてマイクロプロセッサ１の動作を説明する。このプログラムにおいて、各行における２つのサブ命令が、図２（ａ）の命令フォーマットの２演算命令１０１で記述され、サブ命令Ｉ０１、Ｉ１１、Ｉ２１、Ｉ３１、Ｉ４１、Ｉ５１及びＩ６１がoperation_0 として演算フィールド１０６で記述され、サブ命令Ｉ０２、Ｉ１２、Ｉ２２、Ｉ３２、Ｉ４２、Ｉ５２及びＩ６２がoperation_1 として演算フィールド１０７で記述されている。それぞれの２演算命令は、同じ行に記述されたメモリのアドレス番地によりアクセスされる。例えば、サブ命令Ｉ０１、Ｉ０２は１０００〜１００７番地のメモリの領域に格納され、１０００番地のアドレスでアクセスされる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
サブ命令Ｉ０１は、「フラグＦ０が偽（つまりフラグが０を保持している）」という分岐条件を満たしていれば、ｌｏｏｐの記述されたサブ命令Ｉ１１、Ｉ１２に分岐する分岐命令ＢＲＡで、この分岐条件をｅｎｄの記述されたサブ命令Ｉ４１、Ｉ４２の実行時に判断することのできる。また分岐命令ＢＲＡはディレイなしの通常の分岐命令である。サブ命令Ｉ２１は、レジスタＲ２とレジスタＲ３とのそれぞれ内容を加算してレジスタＲ２に格納する加算命令ＡＤＤである。サブ命令Ｉ３１は、レジスタＲ２とレジスタＲ４との内容が等しければフラグＦ０に“１”を書き込み、等しくなければ“０”を書き込む比較命令ＣＭＰＥＱである。サブ命令Ｉ１１、Ｉ４１、Ｉ５１、Ｉ６１は、メモリユニット３でステージE/M の処理がなされる任意の算術演算命令で、その他のサブ命令は整数演算ユニット４でステージE/Mの処理がなされる任意の算術演算命令である。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００９６
【補正方法】変更
【補正の内容】
【００９６】
一方サブ命令Ｉ０２に関し、命令デコードユニット２のデコーダ９が演算指定フィールド１０７を解析して、ＡＬＵ１８に算術演算を行わせるための制御信号１２が出力される。そして命令デコードユニット２はこのサブ命令Ｉ０２が条件指定フィールドに基づきサブ命令Ｉ０２が無条件命令であることを検知し無条件（ｃｃ＝０００）であることを示す情報も出力する。ＡＬＵ１８は無条件であることを示す情報を受けて、制御信号１２をレジスタ８０に保持することなく制御信号１２に従って加算演算を行う。また命令デコードユニット２からサブ命令Ｉ０１における実行条件フィールド４０２の値及びＣＤフィールド４０５の値が出力されるが、ＡＬＵ１８はこれらの値を無視してレジスタ８１、８２にはそれまで保持していた値をそのまま保持させる。以下に示す他の無条件実行のサブ命令についても同様である。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
サブ命令Ｉ３１、Ｉ３２に関し、命令フェッチステージIF、命令デコードステージD/A、命令実行ステージE/Mは、それぞれクロックｔ４、ｔ５、ｔ６で並列に処理される。サブ命令Ｉ３１である比較命令ＣＭＰＥＱにおいては、クロックｔ６のステージE/M で、レジスタＲ２とレジスタＲ４との内容がＡＬＵ１５により比較され、等しければフラグＦ０に‘１’を書き込み、等しくなければフラグＦ０に‘０’を書き込む。比較命令ＣＭＰＥＱの実行ステージE/M は、本来加算命令ＡＤＤによる演算結果がレジスタＲ５に書き込まれるクロックｔ６まで開始できないが、プロセッサ１内部に設けられたバイパス回路によってクロックｔ５で得られる加算命令ＡＤＤの演算結果を用いて処理される。なお、比較命令ＣＭＰＥＱの場合、ライトバックステージWは存在しない。一方サブ命令Ｉ３２のライトバックステージWはクロックｔ７で処理される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
図９に示されたマイクロプロセッサ１の動作において、比較命令ＣＭＰＥＱでフラグＦ０に‘０’が書き込まれとすると、ＰＣ制御部１３が実行条件を満たしたことを示す情報（例えば‘１’の論理値）を生成することにより条件判断が完了され、その情報に応答してレジスタ３０に保持された制御信号１１に基づき分岐が実行される。具体的には、制御信号１１の第３の情報に従いＰＣ制御部１３は分岐先アドレス（この場合１００８番地）をＩＡバスを介して命令ＲＡＭ６へ出力するとともに、その分岐先アドレスを次クロックサイクルでＰＣへセットする。さらに制御信号１１の第１の情報に従い、ＰＣ制御部１３は分岐先アドレス１００８に格納されている２演算命令（サブ命令Ｉ１１、Ｉ２１）を命令デコードユニット２へ与えるように命令ＲＡＭ６を制御する。ＰＣ制御部１３はこの第１の情報に従い、クロックｔ７ですでにステージIF、E/A が処理されているサブ命令Ｉ５１、Ｉ５２、及びすでにステージIFの処理がされているサブ命令Ｉ６１、Ｉ６２のパイプラインの処理をキャンセルするように命令デコードユニット２、メモリユニット３および整数演算ユニット４を制御する。但し、クロックｔ７でステージE/M の処理がなされたサブ命令Ｉ４１、Ｉ４２のライトバックステージWは、キャンセルされずに処理される。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１０９
【補正方法】変更
【補正の内容】
【０１０９】
サブ命令Ｉ０１は、「フラグＦ０が真（‘１’を保持している）」という実行条件を満たしていれば、レジスタＲ５に保持されているアドレス番地の命令にジャンプするジャンプ命令ＤＪＭＰであり、ジャンプ命令ＤＪＭＰは、図７に示されたフォーマットのディレイドジャンプ命令である。サブ命令Ｉ１１は、レジスタＲ１とレジスタＲ２との内容を加算して加算結果をレジスタＲ１へ書き込む加算命令ＡＤＤである。サブ命令Ｉ２１は、レジスタＲ１とレジスタＲ３との内容を比較し、等しければフラグＦ０に‘１’を書き込み、等しくなければフラグＦ０に‘０’を書き込む比較命令ＣＭＰＥＱである。サブ命令Ｉ３１は、レジスタＲ５とレジスタＲ６との内容を加算して加算結果をレジスタＲ５に書き込む加算命令ＡＤＤである。サブ命令Ｉ７１、Ｉ４１、Ｉ５１、Ｉ６１は、メモリユニット３でステージE/M の処理がなされる任意の算術演算命令で、その他のサブ命令は整数演算ユニット４でステージE/M の処理がなされる任意の算術演算命令である。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１１０
【補正方法】変更
【補正の内容】
【０１１０】
サブ命令Ｉ０１に対応する実行条件フィールド４０１には、“ＣＣ＝００１”が記述されており、サブ命令Ｉ０１以外のすべてのサブ命令は無条件に実行する命令であるとする。また、サブ命令Ｉ０１に対応するＣＤフィールド４０４にはオフセット値“１８”が記述されている。さらに、サブ命令Ｉ０１の実行遅延量指定フィールド３２２（図７）には即値としてオフセット値‘２８’が記述されている。また、各行に記述された２演算命令は、ＦＭフィールド１０３、１０４が００に設定されて２つのサブ命令の演算を並列に実行する命令であるとする。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
図１１は、図１０に示されたプログラムをパイプライン処理するマイクロプロセッサ１の動作を示している。図９と同じく、クロックｔ１ないしｔ１３は連続する１クロックサイクルを示し、各クロックサイクル内のすべてのパイプラインステージの処理は並列に行われる。ＰＣの値の意味も図９と同じである。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
サブ命令Ｉ０１であるディレイドジャンプ命令ＤＪＭＰは図１におけるデコーダ８でデコードされて、このデコード結果に応じた制御信号１１が出力される。この制御信号１１には、ジャンプ命令ＤＪＭＰを生じさせるようにＰＣ制御部１３を制御するための第１の情報、サブ命令Ｉ０１が実行の遅延を生じさせる命令であることを示す第２の情報、さらに分岐命令ＢＲＡの分岐先アドレスを示す第３の情報を含んでいる。第３の情報はジャンプ命令ＤＪＭＰで指定されているレジスタ番号である。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１１５
【補正方法】変更
【補正の内容】
【０１１５】
クロックｔ３において、ＰＣ制御部１３はジャンプ命令ＤＪＭＰに対する制御信号１１をレジスタ３０にそのまま保持し、その制御信号１１に基づき分岐を実行しない。命令デコードユニット２から出力されたジャンプ命令ＤＪＭＰの実行条件フィールドであるｃｃ＝００１の値がレジスタ３１にそのまま保持される。さらにＰＣ制御部１３は、クロックｔ３において命令デコードユニット２からジャンプ命令ＤＪＭＰのＣＤフィールド４０４のオフセット値“１８”を、ＰＣから１０００番地をそれぞれ受け取って加算し、レジスタ３２がその加算結果である１０１８番地を保持する。ＰＣ制御部１３はレジスタ３２に保持された値とＰＣの示す値とを比較している。ＰＣのアドレス値がレジスタ３２のアドレス値と等しいクロックサイクル、つまりクロックｔ６でレジスタ３１に保持されたｃｃ値に基づきＰＣ制御部１３が分岐命令ＢＲＡの実行条件を初めて判断する。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０１１６
【補正方法】変更
【補正の内容】
【０１１６】
さらにＰＣ制御部１３は、クロックｔ３において命令デコードユニット２からジャンプ命令ＤＪＭＰの実行遅延量指定フィールド３２２のオフセット値“２８”を、ＰＣから１０００番地をそれぞれ受け取って加算し、レジスタ３３がその加算結果である１０２８番地を保持する。ＰＣ制御部１３はレジスタ３３に保持された値とＰＣの示す値とを比較している。ＰＣのアドレス値がレジスタ３３のアドレス値と等しいクロックサイクル、つまりクロックｔ８でジャンプ命令ＤＪＭＰによるジャンプが初めて実行される。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０１１８
【補正方法】変更
【補正の内容】
【０１１８】
サブ命令Ｉ２１、Ｉ２２に関し、命令フェッチステージIF、命令デコードステージD/A、命令実行ステージE/Mは、それぞれクロックｔ３、ｔ４、ｔ５で並列に処理される。サブ命令Ｉ２１である比較命令ＣＭＰＥＱにおいては、クロックｔ５の実行ステージE/M で、レジスタＲ１とレジスタＲ３との内容がＡＬＵ１５により比較され、等しければフラグＦ０に‘１’を書き込み、等しくなければフラグＦ０に‘０’を書き込む。なお、比較命令ＣＭＰＥＱの場合、ライトバックステージWは存在しない。一方サブ命令Ｉ３２のライトバックステージWはクロックｔ７で処理される。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０１２４
【補正方法】変更
【補正の内容】
【０１２４】
具体的には、制御信号１１の第３の情報に従い、ＰＣ制御部１３は第３の情報で指定されているレジスタに保持されている分岐先アドレス（例えば２０００番地とする）をＩＡバスを介して命令ＲＡＭ６へ出力するとともに、その分岐先アドレスを次クロックサイクルでＰＣへセットする。さらに制御信号１１の第１の情報に従い、ＰＣ制御部１３は分岐先アドレス２０００に格納されている２演算命令を命令デコードユニット２へ与えるように命令ＲＡＭ６を制御する。さらに、ＰＣ制御部１３はこの第１の情報に従いクロックｔ８ですでにステージIF、E/A が処理されているサブ命令Ｉ６１、Ｉ６２、及びすでにステージIFの処理がされているサブ命令Ｉ７１、Ｉ７２のパイプラインの処理をキャンセルするように命令デコードユニット２、メモリユニット３および整数演算ユニット４を制御する。但し、クロックｔ８でステージE/M の処理がなされたサブ命令Ｉ５１、Ｉ５２のライトバックステージWは、キャンセルされずに処理される。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０１３７
【補正方法】変更
【補正の内容】
【０１３７】
例えば図８において、サブ命令Ｉ０１の分岐命令ＢＲＡに対応するＣＤフィールド４０４が命令デコードステージD/A で判断されることを示す情報を有している場合、命令デコードユニット２は、クロックｔ２において、ＣＤフィールド４０４に応答して実行条件の判断を開始し、条件指定フィールド４０１に従いＰＳＷ１０内の指定されたフラグＦ０の内容を参照する。そして命令デコードユニット２はサブ命令Ｉ０１が実行条件が満たされたか否かを示す第４の情報を出力する。また命令デコードユニット２はデコーダ８による分岐命令ＢＲＡの演算指定フィールドのデコード結果に基づき制御信号１１を作成する。この制御信号１１には分岐命令ＢＲＡを生じさせるようにＰＣ制御部１３を制御するための第１の情報、分岐実行の遅延を生じさせない通常の命令であることを示す第２の情報、さらに分岐命令ＢＲＡの分岐先アドレスを示す第３の情報を含んでいる。
【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】０１５０
【補正方法】変更
【補正の内容】
【０１５０】
例えば、
100番地：I01(BRA F0F #H30 110)
108番地：I11(BRA F1T #H18 118)
110番地：I21
118番地：I31
120番地：I41
128番地：I51
130番地：I61
というプログラムを考える。命令Ｉ０１は、フラグＦ０が偽ならば１１０番地に分岐する分岐命令で、実行条件が１３０番地の命令Ｉ６１の命令実行ステージのサイクルで判断されて分岐が実行されるものである。命令Ｉ１１は、フラグＦ１が真ならば１１８番地に分岐する分岐命令で、実行条件が１２０番地の命令Ｉ４１の命令実行ステージで判断されて分岐が実行される物である。このプログラムは、１１０番地から１３０番地で第１のループが形成され、かつ１１８番地から１２０番地で第２のループが形成されている。
【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】０１５８
【補正方法】変更
【補正の内容】
【０１５８】
また、別のデータ処理装置によると、条件付き演算命令を処理する際に使用される第１ないし第３のレジスタを命令実行部に備えている。第１のレジスタは命令デコーダから出力される制御信号を保持し、条件付き演算命令に指定される演算が実行される条件を示す第１の情報を保持し、第３のレジスタはその条件の判断を開始する時期を示す第２の情報を保持するものである。命令実行部がこれら２つの情報に基づき、デコードされて所定の時間を経過したのちに演算命令の実行条件が判断されて演算命令を実行するので、命令をスケジューリングする際にその遅延している間に第２の演算命令の実行条件を決定する演算命令を実行することができる。よって命令のスケジューリングの自由度が増す。
【手続補正２４】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
1999224194.tif 000001
【手続補正２５】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
1999224194.tif 000002