(57)【特許請求の範囲】
【請求項１】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、メモリアドレスの演算が可能な第３ステージ、第３ステージで演算されたメモリアドレスを基にデータメモリに対するメモリアクセスが可能な第４ステージ、及び前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第４ステージ及び第５ステージで行う乗算手段を有し、
前記乗算手段は、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算の中間データを前記第４ステージで演算する第１乗算手段と、前記第５ステージで前記乗算の中間データを用いて前記乗算を完結する第２乗算手段とから成るものであるマイクロプロセッサ。
【請求項２】
前記第２乗算手段の出力に前記第５ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項１記載のマイクロプロセッサ。
【請求項３】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、メモリアドレスの演算が可能な第３ステージ、第３ステージで演算されたメモリアドレスを基にデータメモリに対するメモリアクセスが可能な第４ステージ、及び前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第４ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
【請求項４】
前記乗算手段の出力に前記第４ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項３記載のマイクロプロセッサ。
【請求項５】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、メモリアドレスの演算が可能な第３ステージ、第３ステージで演算されたメモリアドレスを基にデータメモリに対するメモリアクセスが可能な第４ステージ、及び前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第５ステージで完結する乗算手段と、
前記乗算手段の出力に前記第５ステージで選択されたデータを加算して出力する累算手段と、を有して成るものであるマイクロプロセッサ。
【請求項６】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、第１メモリと第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第１メモリから読み出したデータと第２メモリから読み出したデータとに対する乗算を前記第４ステージ及び第５ステージで行う乗算手段を有して成るものであるマイクロプロセッサ。
【請求項７】
前記乗算手段は、前記第１メモリから読み出したデータと第２メモリから読み出したデータとに対する乗算の中間データを前記第４ステージで演算する第１乗算手段と、前記第５ステージで前記乗算の中間データを用いて前記乗算を完結する第２乗算手段とから成るものである請求項６記載のマイクロプロセッサ。
【請求項８】
前記第２乗算手段の出力に前記第５ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項７記載のマイクロプロセッサ。
【請求項９】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、第１メモリと第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第１メモリから読み出したデータと第２メモリから読み出したデータとに対する乗算を前記第４ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
【請求項１０】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、第１メモリと第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第１メモリから読み出したデータと第２メモリから読み出したデータとに対する乗算を前記第５ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
【請求項１１】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共に第１レジスタファイルから乗数データと被乗数データとを読み出し可能な第２ステージ、第１メモリ及び第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを第１レジスタファイルに書き戻し又は第２レジスタファイルに書き込み可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第２レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第４ステージ及び第５ステージで行う乗算手段を有して成るものであるマイクロプロセッサ。
【請求項１２】
前記乗算手段は、前記第２レジスタファイルから読み出された乗数データと被乗数データとに対する乗算の中間データを前記第４ステージで演算する第１乗算手段と、前記第５ステージで前記乗算の中間データを用いて前記乗算を完結する第２乗算手段とから成るものである請求項１１記載のマイクロプロセッサ。
【請求項１３】
前記第２乗算手段の出力に前記第５ステージで選択されたデータを加算して出力する累算手段を更に設けて成るものである請求項１２記載のマイクロプロセッサ。
【請求項１４】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共に第１レジスタファイルから乗数データと被乗数データとを読み出し可能な第２ステージ、第１メモリ及び第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを第１レジスタファイルに書き戻し又は第２レジスタファイルに書き込み可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第２レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第４ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
【請求項１５】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共に第１レジスタファイルから乗数データと被乗数データとを読み出し可能な第２ステージ、第１メモリ及び第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを第１レジスタファイルに書き戻し又は第２レジスタファイルに書き込み可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第２レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第５ステージで完結する乗算手段を有して成るものであるマイクロプロセッサ。
【請求項１６】
命令をフェッチする第１ステージ、フェッチした命令を解読すると共に第１レジスタファイルから乗数データと被乗数データとを読み出し可能な第２ステージ、第１メモリ及び第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２のメモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを第１レジスタファイルに書き戻し又は第２レジスタファイルに書き込み可能な第５ステージを、パイプラインによるデータ処理ステージとして有するマイクロプロセッサであって、
前記第２レジスタファイルから読み出された乗数データと被乗数データとに対して第５ステージで乗算を行って当該乗算結果を第２レジスタファイルに出力する乗算手段と、前記第５ステージで第２レジスタファイルから読み出された乗算結果に第５ステージで選択されたデータを加算して出力する加算手段とを有して成るものであるマイクロプロセッサ。
【請求項１７】
レジスタファイル、演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、
前記積和演算器は２つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有し、
前記第１ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第２ラッチ回路に出力可能にされ、
前記第２ラッチ回路は、前記演算器の出力、第１ラッチ回路の出力、前記後半回路からのバイパス出力、又は前記第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記前半回路、又は前記第３ラッチ回路に出力可能にされ、
前記第３ラッチ回路は、前記メモリの出力、前記第２ラッチ回路の出力、前記前半回路の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
【請求項１８】
レジスタファイル、演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、
前記積和演算器は１つのパイプラインステ−ジで演算動作を完結するものであり、
前記第１ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は前記第２ラッチ回路に出力可能にされ、
前記第２ラッチ回路は、前記演算器の出力、第１ラッチ回路の出力又は第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、又は前記第３ラッチ回路に出力可能にされ、
前記第３ラッチ回路は、前記メモリの出力、前記第２ラッチ回路の出力、前記前積和演算器の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされて成るものであるマイクロプロセッサ。
【請求項１９】
レジスタファイル、演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、
前記積和演算器は１つのパイプラインステ−ジで演算動作を完結するものであり、
前記第１ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第２ラッチ回路に出力可能にされ、
前記第２ラッチ回路は、前記演算器の出力、第１ラッチ回路の出力、前記積和演算器からのバイパス出力又は第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ又は前記第３ラッチ回路に出力可能にされ、
前記第３ラッチ回路は、前記メモリの出力、前記第２ラッチ回路の出力、前記積和演算器からのバイパス出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイル又は積和演算器に出力可能にされ、前記積和演算器の出力は前記レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
【請求項２０】
レジスタファイル、第１演算器、第２演算器、メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、
前記積和演算器は１つのパイプラインステ−ジで演算動作を完結するものであり、
前記第１ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器又は第２ラッチ回路に出力可能にされ、
前記第２ラッチ回路は、前記第１演算器の出力、第１ラッチ回路の出力又は第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、前記第２演算器又は前記第３ラッチ回路に出力可能にされ、
前記第３ラッチ回路は、前記メモリの出力、前記第２演算器の出力、前記第２ラッチ回路の出力、前記前積和演算器の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされて成るものであるマイクロプロセッサ。
【請求項２１】
前記第１の演算器は前記メモリをアクセスするためのアドレス演算用とされ、前記第２演算器はデータ演算用とされるものである請求項２０記載のマイクロプロセッサ。
【請求項２２】
レジスタファイル、第１演算器、第２演算器、第１メモリ、第２メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、
前記積和演算器は２つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有し、
前記第１ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器と第２演算器又は第２ラッチ回路に出力可能にされ、
前記第２ラッチ回路は、前記第１演算器と第２演算器の出力をラッチして第１メモリと第２メモリに出力し、又は第１ラッチ回路の出力をラッチして前記前半回路に出力可能にされ、
前記第３ラッチ回路は、前記第１メモリと第２メモリの出力、前記第２ラッチ回路の出力、前記前半回路の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
【請求項２３】
第１レジスタファイル、第２レジスタファイル、第１演算器、第２演算器、第１メモリ、第２メモリ、及び積和演算器を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、  前記積和演算器は２つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有し、
前記第１ラッチ回路は、第１レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器及び第２演算器に出力可能にされ、
前記第２ラッチ回路は、前記第１演算器及び第２演算器の出力をラッチして第１メモリ及び第２メモリに出力し、且つ、第２レジスタファイルの出力をラッチして前記前半回路に出力可能にされ、
前記第３ラッチ回路は、前記第１メモリ及び第２メモリの出力をラッチして前記第２レジスタファイルに出力し、且つ、前記前半回路の出力をラッチして前記後半回路に出力可能にされ、前記後半回路の出力と第３ラッチ回路を介して第１及び第２メモリから入力したデータとは前記第２レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
【請求項２４】
第１レジスタファイル、第２レジスタファイル、第１演算器、第２演算器、第３演算器、第１メモリ、第２メモリ、及び乗算回路を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有するマイクロプロセッサであって、
前記第１ラッチ回路は、第１レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器及び第２演算器に出力可能にされ、
前記第２ラッチ回路は、前記第１及び第２演算器の出力をラッチして第１及び第２メモリに供給し、且つ第２レジスタファイルの出力を入力して前記第３ラッチ回路に出力可能にされ、
前記第３ラッチ回路は、前記第１及び第２メモリの出力、及び前記第２レジスタファイルの出力を入力可能にされ、且つラッチしたデータを第２レジスタファイル、第３演算器、及び前記乗算器に出力可能にされ、前記第３演算器及び前記乗算器の出力が前記第２レジスタファイルに入力可能にされて成るものであるマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パイプラインで乗算若しくは積和演算を実行可能なマイクロプロセッサに係り、例えばディジタル信号処理等を実行可能なＲＩＳＣプロセッサ、マイクロコンピュータ、若しくはデータプロセッサ等に適用して有効な技術に関するものである。
【０００２】
【従来の技術】
従来よりディジタル信号処理を実現するのに適したプログラマブルコントロ−ラとしてディジタル・シグナル・プロセッサ（ＤＳＰ）が用いられてきたが、近年コンパイル効率が高く、性能向上が容易でかつ安価な組み込み用途向けのＲＩＳＣ型マイクロコントロ−ラが登場した。このＲＩＳＣ型マイクロコントローラは、プログラムコ−ド効率を性能でカバ−することによって、換言すれば、処理の実行ステップ数は多くても動作速度を速くすることによって、従来はＤＳＰでしか実現できなかったディジタル信号処理の分野にも適用されるようになってきている。このＲＩＳＣ型マイクロコントローラにおいて、ディジタル信号処理を汎用の算術論理演算器を用いて行う場合には処理速度に限界が有る。この処理効率の点において、ＤＳＰと同様に乗算器や積和演算器をハ−ドウェアで搭載することにより、飛躍的に改善された例も出てきている。その具体例としては、日経エレクトロニクス１９９５年５月８日号（第１１１〜１２１ペ−ジ）記載のプロセッサがある。通常の算術論理演算器と同じように、乗算器または積和演算器を備えることにより、ディジタル信号処理の基本であるフィルタリング処理の積和動作を、ＤＳＰに匹敵する効率及び性能で実現することができる。
【０００３】
フィルタリング処理を実行する場合、積和演算を実行する毎に乗数、被乗数デ−タをメモリから供給する必要がある。図１３にＲＩＳＣ型マイクロコントロ−ラの代表的なパイプライン構造を概略的に示す。図中、ＩＦは命令フェッチステ−ジ、ＩＤは命令デコ−ドステージ、ＥＸは演算実行ステ−ジ、ＭＡはメモリアクセス（データフェッチ）ステ−ジ、ＷＢはデ−タのライトバックステ−ジを表している。ＩＦステ−ジでは、プログラムカウンタで指定されたアドレスから命令コ−ドデ−タを読み出し、フェッチする。ＩＤステ−ジでは、フェッチした命令コ−ドをデコ−ド（解読）し、動作に必要な制御信号を生成する。ＥＸステ−ジでは、制御信号によって指示された内容に基づいて、演算動作を実行する。制御信号によって指示された動作がメモリの読み出し又は書き込動作の場合は、アドレス生成及びアドレスバスへのアドレス出力動作を行う。ＭＡステ−ジでは、制御信号によって指示された動作がメモリの読み出し又は書き込動作の場合に、メモリアクセス動作を行う。ＷＢステ−ジでは、動作結果を指定されたデスティネ−ションに入力する動作を行う。演算動作の場合は、ＷＢステージで演算結果を格納し、メモリからのデ−タ読み出しやレジスタ間のデ−タ転送動作では、転送されてきたデ−タをＷＢステージで格納する。
【０００４】
上記従来技術では、乗算や積和演算を２．５サイクルのレイテンシ−で実行することができる。即ち、乗数と被乗数が入力された後、乗算結果を得るのに、マイクロプロセッサの動作基準クロック信号の２．５サイクル後に演算結果を得ることができる。更に、パイプライン構造若しくはパイプライン処理を利用することによって、１回の乗算又は積和演算を１サイクルのスループットで実行可能になっている。すなわち、積和演算をＥＸステージとＭＡステージで行うように、積和演算器を配置する。換言すれば、図１４に示すように積和演算器をＥＸとＭＡステ−ジの２段のパイプライン構成にして、サイクルＭ１及びＭ２で１回の積和演算を行う。ディジタル信号処理などにおける積和演算は繰返し行なわれ、前のパイプラインによるＭ１，Ｍ２の演算結果を次のパイプラインによる演算処理のソ−スデータとして使用する。そのためには、所謂フォワーディング若しくはバイパシング技術を利用すればよい。換言すれば、ＭＡステージのサイクルＭ２の演算結果がＷＢステージでレジスタファイルに書き戻されるのを待たずに、バイパス経路からマルチプレクサを介して次のパイプラインのＥＸステージにフィ−ドバックすればよい。これによって、１回の乗算又は積和演算を見かけ上、１サイクルのスループットで実行可能になる。
【０００５】
【発明が解決しようとする課題】
しかしながら、ＲＩＳＣ型マイクロコントロ−ラは、データ処理動作動作を上記５段パイプラインを一単位として逐次実行していくが、１回の積和演算処理を行うためにはただ単に積和演算を繰り返せばいいわけではなく、〔１〕被乗数デ−タをフェッチ、〔２〕乗数デ−タをフェッチ、〔３〕積和演算を実行、という３ステップの動作が必要となる。図１５に必要なデ−タの供給も考慮した場合の１回の積和演算処理の動作を示す。上記従来技術の１サイクル・スループット性能は、全てのソ−スデ−タがあらかじめレジスタファイルに格納されていて、初めて実現出来る。しかし実際にはソ−スデ−タをレジスタファイルにフェッチする動作も１デ−タ毎に有限のサイクル数が必要になるため、フォワ−ディング機能を利用しても結局図１５に示すように実行終了まで８サイクルのレイテンシ−と、４サイクルのスル−プットとなる。即ち、図１５に従えば、第１ステップのＭＡステージでメモリアクセスを行って乗数データを読み出し、読み出した乗数データをＷＢステージでレジスタファイルに書き込む。このＷＢステージに並行して、第２ステップでは、被乗数データがメモリから読み出される。第３ステップのＥＸステージには、前記第２ステップのＭＡステージで読み出された被乗数データがバイパス（フォワーディング）され、且つ、第１ステップで得られた乗数データがレジスタファイルから与えられる。これによって第３ステップのＥＸステージ（Ｍ１サイクル）及びＭＡステージ（Ｍ２サイクル）にて一つの積和演算が行なわれ、演算結果は、第３ステップのＷＢステージでレジスタファイルに書き戻される。
【０００６】
図１５から明らかな様に、第３ステップにおけるＩＤステージの後、乗算若しくは積和演算に必要な２つのソースデータを取得するには、フォワーディング構造を用いても２サイクル必要になる。しかも、乗算若しくは積和演算は、ＥＸステージとＭＡステージで行なわれる。このため、第３ステップに代表的に示されるように、ＩＤステージの後、ＥＸステージに２つのソースデータがロードされるまでに、１サイクルのオ−バヘッド（ｎｏｐサイクル）が生じてしまう。即ち、パイプラインストールを生じてしまう。その結果、積和演算処理のスル−プットは、積和演算を繰り返し実行させるためのル−プ制御に要するオ−バヘッドを考慮しないとしても、１回当たり命令ステップ数（３ステップ）を上回る４サイクル必要になってしまうことが本発明者によって明らかにされた。
【０００７】
また、図１５の例ではフォワーディング機能により、前の命令の実行結果に依存する演算命令の実行に際しても、前の命令がＷＢステ−ジまで完全に終了していなくてもソ−スオペランドとして利用可能になるため、図１５の第３ステップではオ−バヘッドが１サイクルだけで済んでいるが、フォワ−ディング機能を簡略化すると、ソ−スデ−タは必ず前もってＷＢステ−ジまで実行を完了していなければならないため、オ−バヘッドは図１６に示すように２サイクルになる。しかしどのように強力なフォワ−ディング機構を用意しても、ＥＸステージ及びＭＡステージで積和演算若しくは乗算を行う従来のパイプライン構造では、図１５に示されている１サイクルのオ−バヘッド（ｎｏｐサイクル）を解消することは不可能である。これがＲＩＳＣ型プロセッサにおけるディジタル信号処理性能の向上に大きな障害になっていることが本発明者によって明らかにされた。
【０００８】
また、本発明者の検討によれば、見掛け上、１サイクルのオ−バヘッドを解消する方法として、図１７に示すように２回分の処理をインライン展開して読み出したデ−タが直ちに演算命令のソ−スに使われないようにする方法がある。しかしこの手法では２回分のデ−タを保持する必要があるため、２倍のレジスタが必要になるという別の問題が生じていた。
【０００９】
本発明の目的は、デ−タメモリからデ−タを読み出す動作が完了するステ−ジ、もしくは動作が完了した直後のステ−ジから、そのデ−タをソ−スオペランドとして使用する演算動作を開始するようなパイプライン構造を採用したマイクロプロセッサを提供することにある。
【００１０】
本発明の更に詳しい目的は、乗算や積和演算処理を繰り返し実行する度に、ソ−スデ−タのロ−ドと積和演算動作（又は乗算動作）との間にオ−バヘッドが生じないようにできるマイクロプロセッサを提供することにある。
【００１１】
本発明の別の目的は、データレジスタなどのハードウェアの増大を極力抑えて、積和演算処理等のデ−タ演算動作と、それに必要なソ−スデ−タの読み出し動作との間のオ−バヘッドサイクルを解消することができるマイクロプロセッサを提供することにある。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１３】
【課題を解決するための手段】
《１》本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。すなわち、命令フェッチ（ＩＦ）、命令デコード（ＩＤ）、演算実行（ＥＸ）、メモリアクセス（ＭＡ）、ライトバック（ＷＢ）と称されるような５個のステージから成るパイプライン構造を備えたマイクロプロセッサにおいて、積和演算若しくは乗算演算をＭＡステ−ジから開始させ、或いはＷＢステ−ジで演算開始から演算結果のライトバックまで全てを完了させるようにする。これにより、積和演算処理等のデ−タ演算動作と、それに必要なソ−スデ−タの読み出し動作との間のオ−バヘッドサイクルを解消することができる。
【００１４】
《２》上記手段を更に詳しく説明する。第１に、マイクロプロセッサは、図１、図３、図５、図６に例示されるように、命令をフェッチする第１ステージ（ＩＦ）、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ（ＩＤ）、メモリアドレスの演算が可能な第３ステージ（ＥＸ）、第３ステージで演算されたメモリアドレスを基にメモリアクセスが可能な第４ステージ（ＭＡ）、及び前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージ（ＷＢ）を、パイプラインによるデータ処理ステージとして有する。このとき、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第４ステージ及び第５ステージの一方又は双方のステージで行う乗算手段を有する。
【００１５】
これによれば、図２に例示されるように、乗算演算のパイプラインにｎｏｐサイクルを挿入する必要はなく、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットを３サイクルに短縮することができる。従って、乗数と被乗数の乗算結果若しくは積和演算結果を３サイクルに１回の割合で得ることができる。
【００１６】
前記乗算手段は、図１に例示されるように、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算の中間データを前記第４ステージで演算する第１乗算手段（ＭＵ１）と、前記第５ステージで前記乗算の中間データを用いて前記乗算を完結する第２乗算手段（ＭＵ２）とによって構成することができる。これは、マイクロプロセッサの動作基準クロック信号の周波数が高い場合に、１サイクルで乗算を行うことができない場合に適用される構成である。
【００１７】
前記乗算手段は、図３、図６に例示されるように、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第４ステージで完結するものとすることができる。また、前記乗算手段は、図５に例示されるように、前記レジスタファイルから読み出したデータと前記データメモリから読み出したデータとに対する乗算を前記第５ステージで完結するもとすることができる。これらは、マイクロプロセッサの動作基準クロック信号周波数が左程高くない場合に適用される例である。
【００１８】
第２に、マイクロプロセッサは、図７に例示されるように、命令をフェッチする第１ステージ、フェッチした命令を解読すると共にレジスタファイルのデータを選択可能な第２ステージ、第１メモリと第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを前記レジスタファイルに書き戻し可能な第５ステージを、パイプラインによるデータ処理ステージとして有する。このとき、前記第１メモリから読み出したデータと第２メモリから読み出したデータとに対する乗算を前記第４ステージ及び第５ステージの一方又は双方のステージで行う乗算手段を有する。
【００１９】
前記乗算手段は、前記第１メモリから読み出したデータと第２メモリから読み出したデータとに対する乗算の中間データを前記第４ステージで演算する第１乗算手段と、前記第５ステージで前記乗算の中間データを用いて前記乗算を完結する第２乗算手段とによって構成することができる。
【００２０】
前記第２乗算手段の出力に前記第５ステージで選択されたデータを加算して出力する累算手段を更に設けて、積和演算に対処できる。
【００２１】
これによれば、図８に例示されるように、乗数データと被乗数データを並列アクセスし、双方のデータを乗算演算ステージにバイパスさせれば、乗数と被乗数を取得して乗算更には積和演算を行うときのスループットを２サイクルまで短縮することができる。従って、乗数と被乗数の乗算結果若しくは積和演算結果を２サイクルに１回の割合で得ることができる。
【００２２】
第３に、マイクロプロセッサは、図９に例示されるように、例命令をフェッチする第１ステージ、フェッチした命令を解読すると共に第１レジスタファイルから乗数データと被乗数データとを読み出し可能な第２ステージ、第１メモリ及び第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２メモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを第１レジスタファイルに書き戻し又は第２レジスタファイルに書き込み可能な第５ステージを、パイプラインによるデータ処理ステージとして有する。このとき、前記第２レジスタファイルから読み出された乗数データと被乗数データとに対する乗算を前記第４ステージ及び第５ステージの一方又は双方のステージで行う乗算手段を有する。
【００２３】
前記乗算手段は、前記第２レジスタファイルから読み出された乗数データと被乗数データとに対する乗算の中間データを前記第４ステージで演算する第１乗算手段と、前記第５ステージで前記乗算の中間データを用いて前記乗算を完結する第２乗算手段とによって構成することができる。
【００２４】
前記第２乗算手段の出力に前記第５ステージで選択されたデータを加算して出力する累算手段を更に設けて、積和演算に対処する。
【００２５】
上記によれば、図１０に例示されるように、乗数データと被乗数データを並列アクセスでき、しかも、そのとき乗算演算若しくは積和演算も並列化することができる。したがって、乗数データと被乗数データを並列アクセスしているとき、前回のステップで取得されてバイパス（フォワーディング）された乗数及び被乗数データを用いた乗算演算若しくは積和演算を行うことができるから、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットを１サイクルまで短縮することができる。乗数と被乗数の乗算結果若しくは積和演算結果を１サイクルに１回の割合で得ることができる。
【００２６】
第４に、マイクロプロセッサは、図１１に例示されるように、命令をフェッチする第１ステージ、フェッチした命令を解読すると共に第１レジスタファイルから乗数データと被乗数データとを読み出し可能な第２ステージ、第１メモリ及び第２メモリのアクセスアドレスを並列的に演算可能な第３ステージ、第３ステージで演算されたアクセスアドレスを基に第１メモリ及び第２のメモリを並列的にアクセス可能な第４ステージ、並びに前記第４ステージで得られたデータを第１レジスタファイルに書き戻し又は第２レジスタファイルに書き込み可能な第５ステージを、パイプラインによるデータ処理ステージとして有する。このとき、前記第２レジスタファイルから読み出された乗数データと被乗数データとに対して第５ステージで乗算を行って当該乗算結果を第２レジスタファイルに出力する乗算手段と、前記第５ステージで第２レジスタファイルから読み出された乗算結果に第５ステージで選択されたデータを加算して出力する加算手段とを有する。
【００２７】
上記によれば、図１２に例示されるように、乗数データと被乗数データを並列アクセスでき、しかも、そのとき乗算演算と加算演算も並列化することができる。したがって、乗数データと被乗数データを並列アクセスしているとき、前回のステップで取得されてバイパスされた乗数及び被乗数データを用いた乗算演算を行い、更に前回のステップで取得された乗算結果の加算演算を並行して行うことができるから、乗数と被乗数を取得して乗算更には積和演算を行うときのスループットを１サイクルまで短縮することができる。
【００２８】
《３》更に別の観点に立って上記手段を更に詳しく説明する。第１に、マイクロプロセッサは、図１に例示されるように、レジスタファイル（ＣＲＧ）、演算器（ＡＬＵ，ＳＦＴ）、メモリ（ＤＭＥＭ）、及び積和演算器（ＭＵ１，ＭＵ２，ＡＣＣ）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路（ＬＣＨ１，ＬＣＨ２，ＬＣＨ３）を有する。前記積和演算器は２つのパイプラインステ−ジにまたがって演算動作を実行する前半回路（ＭＵ１）及び後半回路（ＭＵ２，ＡＣＣ）を有する。前記第１ラッチ回路（ＬＣＨ１）は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第２ラッチ回路に出力可能にされる。前記第２ラッチ回路（ＬＣＨ２）は、前記演算器の出力、第１ラッチ回路の出力、前記後半回路からのバイパス出力、又は前記第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記前半回路、又は前記第３ラッチ回路に出力可能にされる。前記第３ラッチ回路（ＬＣＨ３）は、前記メモリの出力、前記第２ラッチ回路の出力、前記前半回路の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされる。
【００２９】
第２に、マイクロプロセッサは、図３に例示されるように、レジスタファイル、演算器、メモリ、及び積和演算器（ＭＵ３，ＡＣＣ）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有する。前記積和演算器は１つのパイプラインステ−ジで演算動作を完結するものである。前記第１ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は前記第２ラッチ回路に出力可能にされる。前記第２ラッチ回路は、前記演算器の出力、第１ラッチ回路の出力又は第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、又は前記第３ラッチ回路に出力可能にされる。前記第３ラッチ回路は、前記メモリの出力、前記第２ラッチ回路の出力、前記積和演算器の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされる。
【００３０】
第３に、マイクロプロセッサは、図５に例示されるように、レジスタファイル、演算器、メモリ、及び積和演算器（ＭＵ３，ＡＣＣ）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有する。このとき、前記積和演算器は１つのパイプラインステ−ジで演算動作を完結するものである。前記第１ラッチ回路は、前記レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記演算器又は第２ラッチ回路に出力可能にされる。前記第２ラッチ回路は、前記演算器の出力、第１ラッチ回路の出力、前記積和演算器からのバイパス出力又は第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ又は前記第３ラッチ回路に出力可能にされる。前記第３ラッチ回路は、前記メモリの出力、前記第２ラッチ回路の出力、前記積和演算器からのバイパス出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイル又は積和演算器に出力可能にされ、前記積和演算器の出力は前記レジスタファイルに入力可能にされる。
【００３１】
第４に、マイクロプロセッサは、図６に例示されるように、レジスタファイル、第１演算器（ＡＵ）、第２演算器（ＡＬＵ，ＳＦＴ）、メモリ、及び積和演算器（ＭＵ３，ＡＣＣ）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有する。このとき、前記積和演算器は１つのパイプラインステ−ジで演算動作を完結するものである。前記第１ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器又は第２ラッチ回路に出力可能にされる。前記第２ラッチ回路は、前記第１演算器の出力、第１ラッチ回路の出力又は第２ラッチ回路若しくは第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記メモリ、前記積和演算器、前記第２演算器又は前記第３ラッチ回路に出力可能にされる。前記第３ラッチ回路は、前記メモリの出力、前記第２演算器の出力、前記第２ラッチ回路の出力、前記前積和演算器の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータを前記レジスタファイルに出力可能にされる。
【００３２】
第５に、マイクロプロセッサは、図７に例示されるように、レジスタファイル（ＧＲＧ２）、第１演算器（ＡＵ）、第２演算器（ＡＬＵ，ＳＦＴ）、第１メモリ（ＤＭＹ）、第２メモリ（ＤＭＸ）、及び積和演算器（ＭＵ１，ＭＵ３，ＡＣＣ）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有する。このとき、前記積和演算器は２つのパイプラインステ−ジにまたがって演算動作を実行する前半回路（ＭＵ１）及び後半回路（ＭＵ３，ＡＣＣ）を有する。前記第１ラッチ回路は、レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器と第２演算器又は第２ラッチ回路に出力可能にされる。前記第２ラッチ回路は、前記第１演算器と第２演算器の出力をラッチして第１メモリと第２メモリに出力し、又は第１ラッチ回路の出力をラッチして前記前半回路に出力可能にされる。前記第３ラッチ回路は、前記第１メモリと第２メモリの出力、前記第２ラッチ回路の出力、前記前半回路の出力又は第３ラッチ回路からのバイパス出力を入力可能にされ、且つラッチしたデータをレジスタファイル又は前記後半回路に出力可能にされ、前記後半回路の出力は前記レジスタファイルに入力可能にされる。
【００３３】
第６に、マイクロプロセッサは、図９に例示されるように、第１レジスタファイル（ＧＲＧ３）、第２レジスタファイル（ＧＲＧ４）、第１演算器（ＡＵ）、第２演算器（ＡＬＵ，ＳＦＴ）、第１メモリ（ＤＭＹ２）、第２メモリ（ＤＭＸ２）、及び積和演算器（ＭＵ１，ＭＵ２，ＡＣＣ）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有する。このとき、前記積和演算器は２つのパイプラインステ−ジにまたがって演算動作を実行する前半回路及び後半回路を有する。前記第１ラッチ回路は、第１レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器及び第２演算器に出力可能にされる。前記第２ラッチ回路は、前記第１演算器及び第２演算器の出力をラッチして第１メモリ及び第２メモリに出力し、且つ、第２レジスタファイルの出力をラッチして前記前半回路に出力可能にされる。前記第３ラッチ回路は、前記第１メモリ及び第２メモリの出力をラッチして前記第２レジスタファイルに出力し、且つ、前記前半回路の出力をラッチして前記後半回路に出力可能にされ、前記後半回路の出力と第３ラッチ回路を介して第１及び第２メモリから入力したデータとは前記第２レジスタファイルに入力可能にされる。
【００３４】
第７に、マイクロプロセッサは、図１１に例示されるように、第１レジスタファイル（ＧＲＧ３）、第２レジスタファイル（ＧＲＧ４）、第１演算器（ＡＵ）、第２演算器（ＡＬＵ）、第３演算器（ＡＬＵ２，ＳＦＴ２）、第１メモリ（ＤＭＹ２）、第２メモリ（ＤＭＸ２）、及び乗算回路（ＭＵ３）を少なくとも具備し、複数のパイプラインステージによって命令を実行し、パイプラインステージの境界を構成する第１乃至第３ラッチ回路を有する。このとき、前記第１ラッチ回路は、第１レジスタファイルからの出力をラッチ可能にされ、且つラッチしたデータを前記第１演算器及び第２演算器に出力可能にされる。前記第２ラッチ回路は、前記第１及び第２演算器の出力をラッチして第１及び第２メモリに供給し、且つ第２レジスタファイルの出力を入力して前記第３ラッチ回路に出力可能にされる。前記第３ラッチ回路は、前記第１及び第２メモリの出力、及び前記第２レジスタファイルの出力を入力可能にされ、且つラッチしたデータを第２レジスタファイル、第３演算器、及び前記乗算器に出力可能にされ、前記第３演算器及び前記乗算器の出力が前記第２レジスタファイルに入力可能にされる。
【００３５】
【発明の実施の形態】
図１には本発明に係るマイクロプロセッサＭＰＵの一例が示される。同図に示されるマイクロプロセッサＭＰＵは、命令実行手順を制御する制御系回路部ＣＴとデータ及びアドレス演算などを行うデータパス部ＤＰ２に大別される。同図に示されるマイクロプロセッサＭＰＵの基本的なパイプラインステージは、図１３で説明した通りのＩＦ，ＩＤ，ＥＸ，ＭＡ，ＷＢの各ステージから成る５段パイプラインを基本とする。
【００３６】
図１において、プログラムアドレス生成回路ＰＡＤＲはプログラムアドレスを生成するための回路、プログラムアドレスレジスタＰＣはプログラムアドレス生成回路ＰＡＤＲで生成されたアドレスをラッチして命令アドレスバスＩＡＢにアドレスを出力するためのレジスタである。ＩＡＢは命令アドレスバス、ＰＭＥＭはプログラムメモリ、ＩＤＢはプログラムメモリＰＭＥＭから読み出された命令コ−ドを出力する命令バス、ＦＲＥＧは命令バスＩＤＢに出力された命令コ−ドをフェッチする命令フェッチレジスタである。ＩＤＥＣは命令フェッチレジスタＦＲＥＧでフェッチされた命令コ−ドを解読して、実行に必要な制御信号を生成する命令デコ−ダである。ＬＣＨ１、ＬＣＨ２、ＬＣＨ３はクロック信号に同期して入力イネーブル状態になる直前の入力信号の状態を取り込んで保持し、同時にその内容を出力するエッジトリガ型のラッチ回路（エッジトリガラッチ）である。ＣＮＴ１、ＣＮＴ２、ＣＮＴ３は所定のパイプラインステ−ジでの処理に必要な制御信号を生成するための制御信号生成回路である。ＧＲＧはレジスタファイルであり、ＭＸ１、ＭＸ２、ＭＸ３、ＭＸ４、ＭＸ７、ＭＸ８、ＭＸ９、ＭＸ１０はセレクタであり、ＡＬＵは算術論理演算器であり、ＳＦＴはシフタである。ＭＵ１は２段のパイプライン構造の乗算器の１段目の乗算回路であり、ＭＵ２は上記乗算器の２段目の乗算回路であり、ＡＣＣが積和演算の内の加算動作を行うための累算器である。ＤＡＢはデ−タメモリをアクセスするためのアドレスを出力するアドレスバス、ＤＭＥＭはデータメモリ、ＤＤＢはデ−タメモリへのデ−タの入出力を行うためのデ−タバスである。Ｓ１はセレクタＭＸ４からラッチ回路ＬＣＨ２を経て出力される信号、Ｓ２はセレクタＭＸ９の出力信号、Ｓ３はデータバスＤＤＢからラッチ回路ＬＣＨ３を経て出力される信号である。なお、この例ではプログラム用のバスやメモリとデ−タ用のバスやメモリを別々に構成するハ−バ−ド・ア−キテクチャ型を採用している。上記マイクロプロセッサＭＰＵは、単結晶シリコンのような１個の半導体基板（半導体チップ）に形成されている。
【００３７】
前記信号Ｓ１、Ｓ２、Ｓ３及びセレクタＭＸ１〜ＭＸ３、ＭＸ７、ＭＸ１０によって形成される経路は、フォワーディング（バイパシング）のための信号フィードバック経路である。フォワーディングとは、ＡＬＵやＭＵ１のような演算器の入力をその前段の回路から入力するだけでなく、後段のパイプラインステージ等任意のパイプラインステージから入力できるようにして、パイプラインをストールせずに処理を続行可能にする技術である。換言すれば、ＷＢステージで演算結果をレジスタファイルに書き込むのを待たずに中間結果を利用する技がフォワーディング技術である。
【００３８】
図１から明らかなように、乗算回路ＭＵ１、ＭＵ２及び累算器ＡＣＣを用いて行なわれる積和演算は、パイプラインのＭＡステージとＷＢステージで行なわれる。
【００３９】
ここで、マイクロプロセッサＭＰＵの機能を前記ステージＩＦ，ＩＤ，ＥＸ，ＭＡ，ＷＢ毎に詳述する。
【００４０】
〔ＩＦステージ：〕
ＩＦステージにおいて、制御系回路部ＣＴでは、プログラムアドレスレジスタＰＣからアドレスが命令アドレスバスＩＡＢに出力され、プログラムメモリＰＭＥＭ内の指定されたアドレス領域から命令コ−ドが読み出されて命令バスＩＤＢに出力される。同時に、プログラムアドレス生成回路ＰＡＤＲでは次の命令読み出しに必要なアドレスを生成する。
【００４１】
〔ＩＤステ−ジ：〕
ＩＤステ−ジにおいて、制御系回路部ＣＴでは、命令バスＩＤＢに出力された命令コ−ドが命令フェッチレジスタＦＲＥＧに取り込まれ、その出力が命令デコ−ダＩＤＥＣに入力されて必要な制御信号を生成する。なお、次段ステ−ジ以降に必要な制御信号は命令デコーダＩＤＥＣで最終的な制御信号として生成する必要は必ずしもなく、命令コ−ドのままか、あるいは一部デコ−ドした形で次段以降の制御信号生成回路ＣＮＴ１、ＣＮＴ２、ＣＮＴ３に送り、各段で最終的な制御信号を生成しても構わない。
【００４２】
デ−タパス部ＤＰ１では、命令で指定されたソ−スオペランドがレジスタファイルＧＲＧから選択され、ラッチ回路ＬＣＨ１に出力される。命令の内容によって、出力されるオペランド数は、特に制限されないが、１、２又は３である。
【００４３】
〔ＥＸステ−ジ：〕
ＥＸステ−ジにおいて、デ−タパス部ＤＰ２では、前段でレジスタファイルＧＲＧから選択されたソ−スオペランドがラッチ回路ＬＣＨ１を経てセレクタＭＸ１、ＭＸ２、ＭＸ３に入力される。これらのセレクタＭＸ１〜ＭＸ３は、フォワ−ディング機構の構成要素であり、他のラッチ回路ＬＣＨ２の出力信号Ｓ１、セレクタＭＸ９の出力信号Ｓ２、他のラッチ回路ＬＣＨ３の出力信号Ｓ３も入力され、１または２サイクル前に実行された命令に依存して適当な信号を選択する。命令で指定されたソ−スオペランドが１または２サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと異なる場合は、レジスタファイルＧＲＧから出力されてきた信号が選択される。命令で指定されたソ−スオペランドが１サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、１サイクル前に実行された命令の演算結果はまだレジスタファイルＧＲＧに格納されておらず、次段のＭＡステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてラッチ回路ＬＣＨ２から出力されてきた信号Ｓ１がセレクタＭＸ１、ＭＸ２、ＭＸ３で選択される。命令で指定されたソ−スオペランドが２サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、同様に２サイクル前に実行された命令の演算結果はまだＧＲＧに格納されておらず、次々段のＷＢステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてセレクタＭＸ９から出力されてきた信号Ｓ２又はラッチ回路ＬＣＨ３の出力信号Ｓ３がセレクタＭＸ１、ＭＸ２、ＭＸ３で選択される。Ｓ２は２サイクル前に実行された命令の算術論理演算器ＡＬＵ、シフタＳＦＴ又は累算器ＡＣＣの出力結果がソ−スオペランドになる場合に選択され、Ｓ３は２サイクル前に実行された命令がデ−タ読み出しで、読み出されたデ−タがソ−スオペランドになる場合に選択される。
【００４４】
実行命令が加減算、論理演算、アドレス演算或いはシフト命令の場合、算術論理演算器ＡＬＵ又はシフタＳＦＴが動作し、セレクタＭＸ２及びＭＸ３で選択されて出力されたデ−タを使って演算を実行する。演算動作自体はこのステ−ジで終了する。セレクタＭＸ４では実行された演算の内容によって算術論理演算器ＡＬＵ、シフタＳＦＴの演算結果のどちらか一方が選択されてラッチ回路ＬＣＨ２へ送られる。算術論理演算器ＡＬＵ、シフタＳＦＴのどちらの演算でもない命令の場合は、セレクタＭＸ４の出力は意味が無いのでデフォルトとしてどちらかを選択しておいても良いし、前回の動作時に選択した方をそのまま引き続き選択したままでも良い。
【００４５】
実行命令が乗算又は積和演算の場合は、このステ−ジではまだ演算を開始せず、セレクタＭＸ１、ＭＸ２、ＭＸ３で選択された信号はそのまま次段に送られる。デ−タメモリＤＭＥＭへのデ−タ書き込みの場合は、セレクタＭＸ１で選択されたデータが次段での累算又はデ−タ書き込み動作のために送られる。なお、デ−タメモリＤＥＭＥＭへのデ−タ書き込みに関しては、レジスタファイルＧＲＧからメモリＤＭＥＭへの書き込み動作として、例えばセレクタＭＸ１とは別の経路を設けてもよい。
【００４６】
〔ＭＡステ−ジ：〕
ＭＡステ−ジにおいて、デ−タパス部ＤＰ２では、５種類の動作に分かれる。
【００４７】
（１）デ−タメモリＤＭＥＭからのデ−タ読み出し命令の場合は、前段で生成されたアドレスがラッチ回路ＬＣＨ２、信号Ｓ１を経てアドレスバスＤＡＢに出力され、デ−タメモリＤＭＥＭをアクセスする。指定されたアドレスから読み出されたデ−タは、データメモリＤＭＥＭからデ−タバスＤＤＢに出力され、ラッチ回路ＬＣＨ３に送られる。信号Ｓ１は、アドレスポインタ更新のため、ラッチ回路ＬＣＨ３にも送られるか、又は次に実行される命令がこの演算結果をソ−スオペランドとしている場合は前段ステ−ジのセレクタＭＸ１、ＭＸ２又はＭＸ３へ送られる。
【００４８】
（２）デ−タメモリへのデ−タ書き込み命令の場合は、前段で生成されたアドレスがラッチ回路ＬＣＨ２を経てアドレスバスＤＡＢに出力され、デ−タメモリＤＭＥＭをアクセスする。同時にセレクタＭＸ１、ラッチ回路ＬＣＨ２を経てセレクタＭＸ１０に入力されたレジスタファイルＧＲＧからのデ−タが選択されてデータバスＤＤＢに出力され、データメモリＤＭＥＭに送られて書き込まれる。信号Ｓ１は、アドレスポインタ更新のため、ラッチ回路ＬＣＨ３にも送られるか、又は次に実行される命令がこの演算結果をソ−スオペランドとしている場合は前段ステ−ジのセレクタＭＸ１、ＭＸ２又はＭＸ３へ送られる。
【００４９】
（３）実行命令が加減算、論理演算或いはシフト命令の場合は、セレクタＭＸ４、ラッチ回路ＬＣＨ２を経た演算結果が、そのまま次のラッチ回路ＬＣＨ３へ送られるか、又は次に実行される命令がこの演算結果をソ−スオペランドとしている場合は前段ステ−ジのセレクタＭＸ１、ＭＸ２又はＭＸ３へ送られる。
【００５０】
（４）実行命令が乗算の場合、乗算回路ＭＵ１が動作し、ラッチ回路ＬＣＨ２及びセレクタＭＸ７から送られてきたデ−タを使って演算を実行する。演算はこのステ−ジでは終了せず、次段で引き続き演算を続行する。
【００５１】
前段のセレクタＭＸ２で選択されたソ−スオペランドがラッチ回路ＬＣＨ２を経てセレクタＭＸ７に入力される。セレクタＭＸ７はフォワ−ディング機構の構成要素であり、他のラッチ回路ＬＣＨ３の出力信号Ｓ３、セレクタＭＸ９の出力信号Ｓ２も入力され、１サイクル前に実行された命令に依存して適当な信号を選択する。なお、図１の例では乗算回路ＭＵ１の一方の入力にはセレクタが付いていないが、これはフォワーディングするのがどちらか一方の入力だけで演算のバリエ−ションとしては充分であるためであるが、双方の入力オペランドの選択の幅が異なっていたり、制御回路を単純にしたいときには、両方にセレクタを設けても良い。セレクタＭＸ７では、命令で指定されたソ−スオペランドが１サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと異なる場合は、セレクタＬＣＨ２から出力されてきた信号が選択される。命令で指定されたソ−スオペランドが１サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、１サイクル前に実行された命令の演算結果はまだレジスタファイルＧＲＧに格納されておらず、次段のＷＢステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてラッチ回路ＬＣＨ３又はセレクタＭＸ９から出力されてきた信号が選択される。ラッチ回路ＬＣＨ３の出力が選択されるのは、前の命令でデータメモリＤＭＥＭから読み出されたデ−タをソ−スオペランドとする場合であり、セレクタＭＸ９の出力が選択されるのは、前の命令の演算結果（デ−タ転送命令のアドレス演算を含む）をソ−スオペランドとする場合である。
【００５２】
（５）実行命令が積和演算の場合、乗算部分は先の（４）と同じである。同時にセレクタＭＸ１０で選択されたデータが次段での累算動作のために送られる。セレクタＭＸ１０もフォワ−ディング機構の構成要素であり、ラッチ回路ＬＣＨ２からの入力の他にセレクタＭＸ９及びラッチ回路ＬＣＨ３の出力信号も入力され、１サイクル前に実行された命令に依存して適当な信号を選択する。命令で指定されたソ−スオペランドが１サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと異なる場合は、ラッチ回路ＬＣＨ２から出力されてきた信号が選択される。命令で指定されたソ−スオペランドが１サイクル前に実行された命令の演算結果を格納するデスティネ−ションオペランドと一致する場合、１サイクル前に実行された命令の演算結果はまだレジスタファイルＧＲＧに格納されておらず、次段のＷＢステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてラッチ回路ＬＣＨ３又はセレクタＭＸ９から出力されてきた信号が選択される。ラッチ回路ＬＣＨ３の出力が選択されるのは、前の命令でデータメモリＤＭＥＭから読み出されたデ−タをソ−スオペランドとする場合であり、セレクタＭＸ９の出力が選択されるのは、前の命令の演算結果（デ−タ転送命令のアドレス演算を含む）をソ−スオペランドとする場合である。
【００５３】
〔ＷＢステ−ジ：〕
ＷＢステ−ジにおいて、デ−タパス部ＤＰ２では、４種類の動作に分かれる。
【００５４】
（１）デ−タメモリＤＭＥＭからのデ−タ読み出し命令の場合、前段のＭＡステ−ジでデータメモリＤＭＥＭから読み出されたデ−タがデータバスＤＤＢ及びラッチ回路ＬＣＨ３を経て信号Ｓ３が出力され、レジスタファイルＧＲＧ及び各フォワ−ディング機能のセレクタに送られる。
【００５５】
（２）実行命令が加減算、論理演算或いはシフト命令の場合、セレクタＭＸ４、ラッチ回路ＬＣＨ２及びＬＣＨ３を経てセレクタＭＸ９で選択されて信号Ｓ２が出力され、レジスタファイルＧＲＧ及び各フォワ−ディング機能のセレクタに送られる。
【００５６】
（３）実行命令が乗算の場合、乗算回路ＭＵ１からラッチ回路ＬＣＨ３を経て送られてきた乗算動作の中間デ−タを用いて、残りの演算動作を乗算回路ＭＵ２で続行する。一方セレクタＭＸ８ではゼロが選択され、その結果累算器ＡＣＣでは乗算回路ＭＵ２の演算結果がそのまま通過してセレクタＭＸ９で選択されて信号Ｓ２が出力され、レジスタファイルＧＲＧ及び各フォワ−ディング機能のセレクタに送られる。
【００５７】
（４）実行命令が積和演算の場合、まず乗算と同様に乗算回路１（ＭＵ１）からラッチ回路ＬＣＨ３を経て送られてきた乗算動作の中間デ−タを用いて、残りの演算動作を乗算回路ＭＵ２で続行する。一方セレクタＭＸ８では第３のソ−スオペランドが選択され、累算器ＡＣＣで乗算回路ＭＵ２の乗算結果に加算されてセレクタＭＸ９で選択され選択されて信号Ｓ２が出力され、レジスタファイルＧＲＧ及び各フォワ−ディング機能のセレクタに送られる。
【００５８】
図１の例では、パイプライン化された乗算又は積和演算の実行開始を他の演算の実行開始ステ−ジであるＥＸステ−ジではなく、ＭＡステ−ジから開始している。この結果、図２に示すように乗算や積和演算に必要なソ−スデ−タの読み出し動作を演算動作の直前に置いても、フォワ−ディング機構が有効に働いて、１サイクルのオ−バヘッドもなく演算が実行可能になる。
【００５９】
本発明者が検討した図１８の比較例（公知ではない）では、従来技術で説明したように、パイプライン化された乗算又は積和演算の実行開始を他の演算の実行開始ステ−ジであるＥＸステ−ジから開始している。前述のように図１８の構成では、図１５に代表されるように、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットが４サイクルになる。これに対して、図１のパイプライン構成では、図２に示されるように、乗算演算のパイプラインにｎｏｐサイクルを挿入する必要はなく、乗数と被乗数を取得して乗算演算若しくは積和演算を行うときのスループットを３サイクルに短縮することができる。従って、乗数と被乗数の乗算結果若しくは積和演算結果を３サイクルに１回の割合で得ることができる。
【００６０】
フォワ−ディング機構が備えられている場合、前述のように、ＭＡステ−ジ以降から演算を開始可能な構成になっていれば、乗算や積和演算動作を必要なソ−スデ−タのロ−ド動作と組み合わせてもオ−バヘッド無しに実行可能となる。従って、例えば乗算や積和演算器の動作速度が他の動作の実行速度に比べてシステム全体の動作速度性能のボトルネックにならない場合は、乗算に対してパイプライン構造を採用しなくても構わない。但し、その場合でも、他の演算器と同じＥＸステ−ジから乗算や積和演算を開始すべきではなく、ＭＡステージ以降で行わなければならない。
【００６１】
図３には乗算をパイプライン構造にしない場合のデータバス部の例が示される。図中、ＭＵ３はパイプライン構成無しで乗算動作を実行する乗算回路である。他の構成要素については、図１と同じであり、同一機能を有する回路要素には同一符号を付してその詳細な説明を省略する。
【００６２】
図３の例は、乗算及び積和演算動作がＭＡステ−ジのみで実行される他は、図１の実施例と同じである。従って、ＷＢステ−ジの構造は図１８の比較例と同じ構造に戻っている。図３の例では、セレクタＭＸ１０、ＭＸ７がフォワ−ディング機能を備えているので、乗算又は積和演算命令の実行直前のステップで演算に必要なデ−タをロ−ドする動作が指定されていても、図４に示すようにやはりオ−バヘッド無しで乗算動作を実行することができる。更に図３の構成によれば、次のステップで演算結果をメモリに書き込む命令を実行する場合も、図１８の比較例と同じようにオ−バヘッド無しで実行することが可能である。即ち、演算実行直後にそのデ−タをデ−タメモリＤＭＥＭに格納する場合、演算結果は未だレジスタファイルＧＲＧに格納されておらず、次段のＷＢステ−ジにソ−スオペランドが存在するので、フォワ−ディング機能が働いてセレクタＭＸ６から出力されてきた信号がセレクタＭＸ１０で選択され、データバスＤＤＢに出力されてデータメモリＤＭＥＭに送られる。
【００６３】
図５には本発明の第３の例が示されている。図中の各構成要素は全て今まで述べてきたものの組み合わせになっている。図５の例は、図３の例で述べた１ステ−ジで演算実行可能な乗算／積和演算器をＷＢステ−ジに構成したものである。この例によれば、図３のようにデ−タをメモリＤＭＥＭに格納する場合のオ−バヘッドは生じるが、図１の実施例と同様、デ−タロ−ド直後の演算実行時のオ−バヘッドは解消される。
【００６４】
ここまでの例では、ディジタル信号処理で重要な乗算又は積和演算実行時のオ−バヘッドの問題だけを解決しようとした。次に示す例は、乗算又は積和演算以外の汎用的な演算例えば算術論理演算などに対してもオーバヘッドを解決しようとするものである。
【００６５】
図６は一般的な演算である算術論理演算及びシフト演算実行時のオ−バヘッドをも解消する例である。図中、ＡＵはデ−タ転送動作に必要なアドレスを生成する演算器、ＭＸ１１はフォワ−ディング機能を備えたセレクタ、ＬＣＨ４はエッジトリガ型のラッチ回路、ＭＸ１２はセレクタである。図６の例では、デ−タ演算を行う演算器ＡＬＵ、ＳＦＴとアドレス演算を行う演算器ＡＵとを分離し、デ−タ演算を行う演算回路ＡＬＵ、ＳＦＴは全て演算開始をＭＡステ−ジに移動させている。その結果、乗算や積和演算動作と同様、他の演算でも必要なソ−スデータの読み出し命令の直後に演算命令を置いても、オ−バヘッド無しで実行することが可能となる。なお、この例は積和演算をＭＡステ−ジだけで完了する場合を示しているが、図５のようにＷＢステ−ジだけで完了させたり、図１のように両方のステ−ジにまたがって動作させる場合でも良いことは言うまでもない。
【００６６】
以上説明した例では、あくまでもＲＩＳＣプロセッサの基本である１命令で１動作を前提としていたが、汎用のディジタルシグナルプロセッサ（ＤＳＰ）のように複数の動作を並列に実行可能にした構造のプロセッサでも、本発明を適用できる。
【００６７】
図７にそのような一つの例を挙げる。図中、ＬＣＨ５、ＬＣＨ６、ＬＣＨ７はエッジトリガ型のラッチ回路であり、ＧＲＧ２はレジスタファイルであり、ＭＸ１３、ＭＸ１４、ＭＸ１５、ＭＸ１６、ＭＸ１７、ＭＸ１８、ＭＸ１９、ＭＸ２０はセレクタである。ＤＭＸ、ＤＭＹはデ−タメモリであり、ＤＡＢＸ、ＤＡＢＹはデ−タ用のアドレスバスであり、ＤＤＢＸ、ＤＤＢＹはデ−タバスであり、Ｓ４はラッチ回路ＬＣＨ６からのフォワ−ディング信号であり、Ｓ５、Ｓ６はラッチ回路ＬＣＨ７からのフォワ−ディング信号である。その他の回路要素は図１と同様である。
【００６８】
図７の例では、ＥＸステ−ジに従来の算術論理演算器ＡＬＵに加えて加算器ＡＵが備えられており、算術論理演算器ＡＬＵと加算器ＡＵは同時並列に動作可能になっている。また、ＭＡステ−ジにはデ−タメモリ、アドレスバス、デ−タバスも各々２つずつ備えられているので、同時に２つのデ−タ読み出し動作が実行出来るようになっている。その結果、図８に示すように第１ステップと第２ステップが同時に処理され、積和演算のスル−プットは２サイクルになっている。この時も積和演算はＭＡステ−ジから開始するようになっているので、デ−タ読み出し動作と積和演算動作との間にはオ−バヘッドサイクルは生じない。
【００６９】
なお、この例ではデ−タメモリＤＭＹにはアドレスバスＤＡＢＸ、ＤＡＢＹのどちらからでもアクセス可能な構造にしているが、これは単独デ−タアクセスの場合には常時算術論理演算器ＡＬＵでアドレス生成を行うようにすることを想定したものであるが、アドレスでデータメモリＤＭＸ、ＤＭＹを識別し、データメモリＤＭＹをアクセスする場合はいつでも加算器ＡＵにてアドレスを生成するように制御すれば、データメモリＤＭＹもＤＭＸと同じような構造にしてもいいことは言うまでもない。また、この例では積和演算回路をＭＡ、ＷＢの２ステ−ジにまたがって動作するような構成にしているが、図３や図５のように、どちらか１つのステ−ジのみで動作を完了するような演算器を用いても良いことは明らかである。さらに、図６のように、一般的な演算である算術論理演算及びシフト演算を実行する時のオ−バヘッドをも解消するために、アドレス演算器を別に設け、これらの演算器は積和演算器と同様にＭＡまたはＷＢステ−ジに移しても良いことも明らかである。
【００７０】
図９はさらに並列度を高めたマイクロプロセッサの例である。図中、ＧＲＧ３、４はレジスタファイルであり、ＬＣＨ８、ＬＣＨ９、ＬＣＨ１０はエッジトリガ型のラッチ回路であり、ＭＸ２１、ＭＸ２２、ＭＸ２３、ＭＸ２４、ＭＸ２５、ＭＸ２６、ＭＸ２７はセレクタである。Ｓ７、Ｓ８、Ｓ９、Ｓ１０、Ｓ１１はラッチ回路からの出力信号であり、Ｓ１２、Ｓ１３、Ｓ１４、Ｓ１５はレジスタファイルＧＲＧ４からの出力信号である。ＡＬＵ２は第２の算術論理演算器、ＳＦＴ２は第２のバレルシフタである。今まで説明した回路要素と同一機能を有するものには同一符号を付してその詳細な説明は省略する。
【００７１】
図９の例は、ディジタル信号処理向けのハ−ドウェアを完全に汎用演算モジュ−ルから切り離し、独立の演算器及びレジスタファイルを設けた例を示している。積和演算器ＭＵ１，ＭＵ２，ＡＣＣはディジタル信号処理向けのハ−ドウェアとして扱う。この結果、レジスタファイルＧＲＧ３、算術論理演算器ＡＬＵ、シフタＳＦＴ、加算器ＡＵから成るＥＸステ−ジで演算を実行する演算回路は、積和演算処理以外の算術論理演算等の処理と、積和演算等のディジタル信号処理動作に必要なデ−タアクセス動作のためのアドレス演算動作とに専ら用いられる。積和演算器ＭＵ１，ＭＵ２，ＡＣＣと新たに設けたレジスタファイルＧＲＧ４、算術論理演算器ＡＬＵ２及びシフタＳＦＴ２は、ＭＡ及びＷＢステ−ジで動作を実行する。なお、図９の例では算術論理演算器ＡＬＵとシフタＳＦＴは同時には動作せず、セレクタＭＸ２７によって毎サイクルどちらか一方のみ動作可能な構造になっているが、積和演算器と同様に、レジスタファイルＧＲＧ４と独立したソ−ス及びデスティネ−ションオペランドを転送可能にしても良いことは言うまでもない。
【００７２】
図９の例によれば、図１０に示すように、最初と最後に合計１ル−プ分のインライン展開が必要になるが、１回の積和演算動作のスル−プットを、必要なソ−スデ−タのロ−ド動作を含めて１サイクルで実現できる。この時も積和演算はＭＡステ−ジから開始するようになっているので、デ−タ読み出し動作と積和演算動作との間にはオ−バヘッドサイクルは生じない。なお、本実施例では２つのデ−タメモリＤＭＸ、ＤＭＹに対して３つ目のアドレスバスＤＡＢ及びデ−タバスＤＤＢを設けている。これは、レジスタファイルＧＲＧ３との間のデ−タ転送時にはアドレスバスＤＡＢ及びデータバスＤＤＢを使って図１８の構成と等価な動作を実現させ、レジスタファイルＧＲＧ４に対しては積和演算処理のスル−プットが１サイクルになるために２つのデ−タ転送動作が同時に実行可能になるようにしたものである。
【００７３】
なお、図９の例では積和演算器をＭＡ、ＷＢ両方のステ−ジにまたがって動作する構成にしているが、今迄の例と同様、どちらか一方のステ−ジのみで動作する回路で構成しても良いし、算術論理演算器ＡＬＵ２やシフタＳＦＴ２をＭＡステ−ジに移しても良いことは言うまでもない。
【００７４】
図１１の例は積和演算動作のスル−プットは図９の例と同様に１サイクルで実現可能であるが、図９に比べて回路規模を低減させている。図１１において、ＬＣＨ１１、ＬＣＨ１２、ＬＣＨ１３はエッジトリガ型ラッチ回路であり、ＭＸ２１、ＭＸ２２、ＭＸ２３、ＭＸ２４、ＭＸ２５、ＭＸ２６はセレクタであり、ＤＭＸ２，ＤＭＹ２はデ−タメモリである。Ｓ１６，Ｓ１７はレジスタファイルＧＲＧ４からの出力信号である。
【００７５】
図１１の例は積和演算回路を乗算回路ＭＵ３のみの構成とし、同時並列に動作可能な算術論理演算器ＡＬＵ２との連携動作により、積和演算処理を実現させるものである。また、乗算回路は図５の実施例と同様にＷＢステ−ジ１段で演算を実行できる例を示しているが、図９のように２段のパイプライン構成にしてもよいことは言うまでもない。
【００７６】
図１１の例では、乗算回路の１サイクル化とレジスタファイルＧＲＧ４により、積和演算機能に関するフォワ−ディング機構が不要になり、ハ−ドウェア構造が簡略化できている。また、レジスタファイルＧＲＧ３、算術論理演算器ＡＬＵ、加算器ＡＵから成る部分の演算パイプライン構造をＥＸステ−ジで終了とし、算術論理演算器ＡＬＵ、加算器ＡＵの出力信号Ｓ８、Ｓ９をフォワーディングさせずに、直ちにレジスタファイルＧＲＧ３へライトバックさせることにより、フォワ−ディング機構も大幅に簡略化し、残りはデ−タメモリＤＭＥＭ読み出し動作時のＷＢステ−ジからのフォワ−ディング回路のみとしている。また、シフト処理を全てＳＦＴ２で行うことで問題ないので、この例のように、ＥＸステ−ジでのシフト処理用のシフタ（図１のＳＦＴ）を省略しても構わない。
【００７７】
図１１の例によれば、図１２に示すように、１回の積和演算処理にかかるレイテンシ−は１サイクル延び、２回分のインライン展開が必要であるが、積和演算器を乗算器にしてハ−ドウェア規模を節約しても積和演算のスル−プットは依然として１サイクルを実現できる。
【００７８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、マイクロプロセッサは、Ｉ／Ｏポート、バスコントローラ、ＤＭＡＣなど、その他の回路ブロックを同一の半導体チップに含んでもよい。また、各パイプラインステージは１サイクルに限定されず、一部のステージ又は全部のステージを夫々２サイクル以上にしてもよい。
【００７９】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００８０】
すなわち、ＩＦ、ＩＤ、ＥＸ、ＭＡ、ＷＢのような５ステージから成るパイプライン構造を備えたマイクロプロセッサにおいて、積和演算若しくは乗算演算をＭＡステ−ジから開始させ、或いはＷＢステ−ジで演算開始から演算結果のライトバックまで全てを完了させるようにする。これにより、積和演算処理等のデ−タ演算動作と、それに必要なソ−スデ−タの読み出し動作との間のオ−バヘッドサイクルを解消することができる。したがって、デ−タメモリからデ−タを読み出す動作が完了するステ−ジ、もしくは動作が完了した直後のステ−ジから、そのデ−タをソ−スオペランドとして使用する演算動作を開始することができる。
【図面の簡単な説明】
【図１】本発明に係るマイクロプロセッサの一例を示すブロック図である。
【図２】図１のマイクロコンピュータにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図３】乗算を一つのＭＡステージで行うようにしたデータパス部の一例を示すブロック図である。
【図４】図３のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図５】乗算を一つのＷＢステージで行うようにしたデータパス部の一例を示すブロック図である。
【図６】積和演算や乗算以外の一般的な演算時のオ−バヘッドも解消するようにしたデータパス部の一例を示すブロック図である。
【図７】汎用のディジタルシグナルプロセッサのように複数の動作を並列に実行可能にした構造を採用したデータパス部のブロック図である。
【図８】図７のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図９】図７に対して更に演算処理の並列度を高めた構造を持つデータパス部のブロック図である。
【図１０】図９のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図１１】積和演算動作のスル−プットを図９と同等に維持しつつ図９に比べて回路規模を小さくしたデータパス部のブロック図である。
【図１２】図１１のデータパス部を採用したマイクロプロセッサにおける積和演算のパイプライン処理の一例が示されるタイミングチャートである。
【図１３】ＲＩＳＣ型マイクロプロセッサのパイプライン構造の概略説明図である。
【図１４】ソースデータの供給については考慮せず積和演算だけを単に連続実行するとしたときのパイプライン処理のタイミングチャートである。
【図１５】ソ−スデ−タの供給を考慮した場合の積和演算連続動作時におけるパイプライン処理のタイミングチャートである。
【図１６】図１５に対してフォワ−ディングを用いずに積和演算連続動作を行ったときのパイプライン処理のタイミングチャートである。
【図１７】２回分の処理をインライン展開して積和演算を行うようにしたときのパイプライン処理のタイミングチャートである。
【図１８】本発明者が検討したパイプライン構造とフォワ−ディング機構を持つ比較例としてのマイクロプロセッサのブロック図である。
【符号の説明】
ＩＦ  命令フェッチステ−ジ
ＩＤ  命令デコ−ドステージ
ＥＸ  演算実行ステ−ジ
ＭＡ  メモリアクセスステ−ジ
ＷＢ  デ−タのライトバックステ−ジ
ＰＡＤＲ  プログラムアドレスを生成するための回路
ＰＣ  命令アドレスバスにアドレスを出力するためのレジスタ
ＩＡＢ  命令アドレスバス
ＰＭＥＭ  プログラムメモリ
ＩＤＢ  命令バス
ＦＲＥＧ  命令フェッチレジスタ
ＩＤＥＣ  命令デコ−ダ
ＬＣＨ１〜ＬＣＨ１３  エッジトリガ型のラッチ
ＣＮＴ１〜ＣＮＴ３  制御信号生成回路
ＧＲＧ、ＧＲＧ２〜ＧＲＧ４  レジスタファイル
ＭＸ１〜ＭＸ２６  セレクタ
ＡＬＵ、ＡＬＵ２  算術論理演算器
ＳＦＴ、ＳＦＴ２  シフタ
ＭＵ１  ２段のパイプライン構造の乗算器の１段目の回路
ＭＵ２  ２段のパイプライン構造の乗算器の２段目の回路
ＭＵ３  乗算器
ＡＣＣ  累算器
ＤＡＢ、ＤＡＢＸ、ＤＡＢＹ  アドレスバス
ＤＭＥＭ  データメモリ
ＤＤＢ、ＤＤＢＸ、ＤＤＢＹ  デ−タバス
【図１】
0003669841.tif 000002
【図２】
0003669841.tif 000003
【図３】
0003669841.tif 000004
【図４】
0003669841.tif 000005
【図５】
0003669841.tif 000006
【図６】
0003669841.tif 000007
【図７】
0003669841.tif 000008
【図８】
0003669841.tif 000009
【図９】
0003669841.tif 000010
【図１０】
0003669841.tif 000011
【図１１】
0003669841.tif 000012
【図１２】
0003669841.tif 000013
【図１３】
0003669841.tif 000014
【図１４】
0003669841.tif 000015
【図１５】
0003669841.tif 000016
【図１６】
0003669841.tif 000017
【図１７】
0003669841.tif 000018
【図１８】
0003669841.tif 000019