(57)【特許請求の範囲】
【請求項１】
第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置であって、
前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えることを特徴とするパイプライン演算装置。
【請求項２】
第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞１）の複数演算ステージを有するパイプライン演算装置であって、
前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えることを特徴とするパイプライン演算装置。
【請求項３】
第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置であって、
前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第１の演算手段および前記第２の演算手段に対して、それぞれの演算に関して前記第１の演算手段の演算結果を前記第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第２の演算手段が単独で演算を行う場合に、前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えることを特徴とするパイプライン演算装置。
【請求項４】
第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞ｙ＞ｘ≧１）の複数演算ステージを有するパイプライン演算装置であって、
前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第１演算手段乃至第ｎ演算手段のうち、ｍ段（ｍ＜ｎ）からなる第ｒ演算手段（ｒ＞１）乃至第ｓ演算手段（ｒ＜ｓ＜ｎ）に対して、前段の演算手段の演算結果を次段の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えることを特徴とするパイプライン演算装置。
【請求項５】
第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置を含む情報処理装置であって、
前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えるパイプライン演算装置を含むことを特徴とする情報処理装置。
【請求項６】
第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞１）の複数演算ステージを有するパイプライン演算装置を含む情報処理装置であって、
前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えるパイプライン演算装置を含むことを特徴とする情報処理装置。
【請求項７】
第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置を含む情報処理装置であって、
前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第１の演算手段および前記第２の演算手段に対して、それぞれの演算に関して前記第１の演算手段の演算結果を前記第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第２の演算手段が単独で演算を行う場合に、前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えるパイプライン演算装置を含むことを特徴とする情報処理装置。
【請求項８】
第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞ｙ＞ｘ≧１）の複数演算ステージを有するパイプライン演算装置を含む情報処理装置であって、
前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、
前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、
前記第１演算手段乃至第ｎ演算手段のうち、ｍ段（ｍ＜ｎ）からなる第ｒ演算手段（ｒ＞１）乃至第ｓ演算手段（ｒ＜ｓ＜ｎ）に対して、前段の演算手段の演算結果を次段の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、
を備えるパイプライン演算装置を含むことを特徴とする情報処理装置。
【請求項９】
第１の命令を実行する第１の演算手段を含む第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算手段を含む第２の演算ステージとを有するパイプライン演算装置の演算方法であって、
前記第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の命令が用いる単一の被演算データのみを前記第１の演算ステージにおいてスルーするステップと、
前記スルーした被演算データを用いて、前記第２の演算ステージにおいて前記第２の命令を実行するステップと、
を有することを特徴とするパイプライン演算装置の演算方法。
【請求項１０】
第１の命令を実行する第１の演算手段を含む第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算手段を含む第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞１）の複数演算ステージを有するパイプライン演算装置の演算方法であって、
前記第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の命令が用いる単一の被演算データのみを前記第ｘ演算ステージにおいてスルーするステップと、
前記スルーした被演算データを用いて、前記第ｙ演算ステージにおいて前記第２の命令を実行するステップと、
を有することを特徴とするパイプライン演算装置の演算方法。
【請求項１１】
第１の命令を実行する第１の演算手段を含む第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算手段を含む第２の演算ステージとを有するパイプライン演算装置の演算方法であって、
前記第１の演算手段及び前記第２の演算手段に対して、それぞれの演算に関して前記第１の演算手段の演算結果を前記第２の演算手段の被演算データとするような相関関係がある第３の命令を実行するステップ、又は、前記第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の命令が用いる単一の被演算データのみを前記第１の演算ステージにおいてスルーするステップと、
前記スルーした被演算データを用いて、前記第２の演算ステージにおいて前記第２の命令を実行するステップと、
を有することを特徴とするパイプライン演算装置の演算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パイプライン処理を用いたパイプライン演算装置、情報処理装置およびパイプライン演算装置の演算方法に関するものであり、特に、ステージラッチ回路、ステージ間配線、制御回路等のハードウェア量、消費電力の低減が可能なパイプライン演算装置に関するものである。
【０００２】
近時においては、より複雑な演算を高速で実行するためのマイクロプロセッサが求められており、このような高速化を実現するためのマイクロプロセッサとしては、パイプライン処理を用いたパイプライン演算装置が用いられる。このパイプライン処理は、複数の命令実行の開始時点を１クロックづつずらすことでオーバラップさせ、等価的に命令実行を高速化するための処理である。ここで、パイプライン演算装置をコンピュータシステムに実装する際には、実装面積、消費電力、価格等が検討の要素として重要な意味をもっており、小型、低消費電力、低価格という条件を満たすパイプライン演算装置が要請されている。
【０００３】
【従来の技術】
図２７は、従来のパイプライン演算装置の構成を示す図である。この図に示したパイプライン演算装置は、第１演算ステージおよび第２演算ステージという２段の演算ステージを有している。これら第１演算ステージおよび第２演算ステージには、後述する演算器２２1 および演算器１２2 がそれぞれ設けられている。被演算データ用レジスタ１０は、パイプラインパスＰ10に対応して設けられており、第１被演算データ（ソース・オペランド）を保持する。被演算データ用レジスタ２０は、パイプラインパスＰ20に対応して設けられており、第２被演算データ（ソース・オペランド）を保持する。命令用レジスタ３０は、命令パイプラインパスＰ30に対応して設けられており、命令ＩＮＳＴ1 、命令ＩＮＳＴ2 を保持する。命令ＩＮＳＴ1 は、演算器２２1 に対して発行される演算命令であり、命令ＩＮＳＴ2 は、演算器１２2 に対して発行される演算命令である。
【０００４】
また、従来のパイプライン演算装置は、２段の演算ステージの入力段、第１演算ステージと第２演算ステージとの間（演算ステージ間）、および２段の演算ステージの出力段には、データ、命令等を一時的に保持する複数のステージラッチ回路がそれぞれ設けられている。具体的には、入力段には、ステージラッチ回路１１1 、ステージラッチ回路２１1 およびステージラッチ回路３１1 が並列的にそれぞれ設けられており、演算ステージ間には、ステージラッチ回路１１2 、ステージラッチ回路２１2 およびステージラッチ回路３１2 が並列的にそれぞれ設けられている。出力段には、ステージラッチ回路１１3 が設けられている。また、これらのステージラッチ回路１１1 、ステージラッチ回路１１2 等は、入力段→演算ステージ間→出力段という具合に、１クロックサイクルをおいて順次駆動される。
【０００５】
第１演算ステージにおいて、ステージラッチ回路１１1 は、被演算データ用レジスタ１０に対応して設けられており、被演算データ用レジスタ１０からの第１被演算データを保持する。ステージラッチ回路２１1 は、被演算データ用レジスタ２０に対応して設けられており、被演算データ用レジスタ２０からの第２被演算データを保持する。ステージラッチ回路３１1 は、命令用レジスタ３０に対応して設けられており、命令用レジスタ３０からの命令ＩＮＳＴ1 、命令ＩＮＳＴ2 を保持する。命令デコーダ３２1 は、ステージラッチ回路３１1 からの命令ＩＮＳＴ1 をデコードする。演算器２２1 は、命令ＩＮＳＴ1 がデコードされたとき、ステージラッチ回路１１1 の値（第１被演算データ）およびステージラッチ回路２１1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ1 に対応する演算を行い演算結果をパイプラインパスＰ20を介してステージラッチ回路２１2 へ出力する。
【０００６】
第２演算ステージにおいて、ステージラッチ回路１１2 は、被演算データ用レジスタ１０に対応して設けられており、ステージラッチ回路１１1 の値（第１被演算データ）を保持する。ステージラッチ回路２１2 は、被演算データ用レジスタ２０に対応して設けられており、演算器２２1 の演算結果を保持する。ステージラッチ回路３１2 は、命令用レジスタ３０に対応して設けられており、ステージラッチ回路３１1 の値（命令ＩＮＳＴ1 、命令ＩＮＳＴ2 ）を保持する。命令デコーダ３２2 は、ステージラッチ回路３１2 からの命令ＩＮＳＴ2 をデコードする。演算器１２2 は、命令ＩＮＳＴ2 がデコードされたとき、ステージラッチ回路１１2 の値（第１被演算データ）を用いて、命令ＩＮＳＴ2 に対応する演算を行い演算結果をパイプラインパスＰ10を介して出力する。
【０００７】
マルチプレクサ４０2 は、命令デコーダ３２2 により切り替え制御される２入力１出力型の切替器であり、演算器１２2 の演算結果、ステージラッチ回路２１2 の値（演算器２２1 の演算結果）のうちいずれか一方を出力する。具体的には、マルチプレクサ４０2 は、命令デコーダ３２2 により命令ＩＮＳＴ2 がデコードされたとき演算器１２2 の演算結果を出力する。一方、マルチプレクサ４０2 は、命令ＩＮＳＴ2 以外の命令（たとえば、命令ＩＮＳＴ1 ）が命令デコーダ３２2 に入力されたとき、ステージラッチ回路２１2 の値を出力する。ステージラッチ回路１１3 は、マルチプレクサ４０2 の切り替え状態に応じて、演算器１２2 の演算結果またはステージラッチ回路２１2 の値（演算器２２1 の演算結果）を保持する。演算結果用レジスタ５０は、ステージラッチ回路１１3 の値、すなわち、パイプライン演算装置における演算結果（デスティネーション・オペランド）を保持する。
【０００８】
つぎに上述した従来のパイプライン演算装置の動作について説明する。はじめに、命令ＩＮＳＴ1 が発行された場合の動作について説明する。最初のクロックにおいて、被演算データ用レジスタ１０、被演算データ用レジスタ２０および命令用レジスタ３０に、第１被演算データ、第２被演算データおよび命令ＩＮＳＴ1 がそれぞれ保持されると、つぎのクロックでは、上記第１被演算データ、第２被演算データおよび命令ＩＮＳＴ1 がステージラッチ回路１１1 、ステージラッチ回路２１1 およびステージラッチ回路３１1 にそれぞれ保持される。これにより、命令デコーダ３２1 は、ステージラッチ回路３１1 からの命令ＩＮＳＴ1 をデコードする。演算器２２1 は、ステージラッチ回路１１1 の値（第１被演算データ）と、ステージラッチ回路２１1 の値（第２被演算データ）とを用いて、命令ＩＮＳＴ1 に応じた演算を行う。
【０００９】
そして、つぎのクロックでは、ステージラッチ回路１１1 の値（第１被演算データ）、演算器２２1 の演算結果およびステージラッチ回路３１1 の値（命令ＩＮＳＴ1 ）が、ステージラッチ回路１１2 、ステージラッチ回路２１2 およびステージラッチ回路３１2 にそれぞれ保持される。このとき、命令デコーダ３２2 は、ステージラッチ回路３１2 の値（命令ＩＮＳＴ1 ）が、演算器１２2 に応じた命令と無関係であるため、マルチプレクサ４０2 にステージラッチ回路２１2 を選択させる。
【００１０】
そして、つぎのクロックでは、ステージラッチ回路１１3 には、マルチプレクサ４０2 を介して、ステージラッチ回路２１2 の値（演算器２２1 の演算結果）が保持される。これにより、演算結果用レジスタ５０には、パイプライン演算装置の演算結果として、演算器２２1 の演算結果が保持される。
【００１１】
つぎに、命令ＩＮＳＴ2 が発行された場合の動作について説明する。最初のクロックにおいて、被演算データ用レジスタ１０、被演算データ用レジスタ２０および命令用レジスタ３０に、第１被演算データ、第２被演算データおよび命令ＩＮＳＴ2 がそれぞれ保持されると、つぎのクロックでは、上述した動作と同様にして、上記第１被演算データ、第２被演算データおよび命令ＩＮＳＴ2 がステージラッチ回路１１1 、ステージラッチ回路２１1 およびステージラッチ回路３１1 にそれぞれ保持される。このとき、命令デコーダ３２1 は、ステージラッチ回路３１1 の値（命令ＩＮＳＴ2 ）が演算器２２1 に無関係な命令であるため、デコードを行わない。したがって、この場合には、演算器２２1 は、いずれの演算も行わない。
【００１２】
そして、つぎのクロックでは、ステージラッチ回路１１1 の値（第１被演算データ）、ステージラッチ回路３１1 の値（命令ＩＮＳＴ2 ）が、ステージラッチ回路１１2 、およびステージラッチ回路３１2 にそれぞれ保持される。このとき、命令デコーダ３２2 は、ステージラッチ回路３１2 からの命令ＩＮＳＴ2 をデコードするとともに、マルチプレクサ４０2 において演算器１２2 側を選択させる。これにより、演算器１２2 は、ステージラッチ回路１１2 の値（第１被演算データ）を用いて、命令ＩＮＳＴ2 に応じた演算を行う。
【００１３】
そして、つぎのクロックでは、ステージラッチ回路１１3 には、マルチプレクサ４０2 を介して、演算器１２2 の演算結果が保持される。これにより、演算結果用レジスタ５０には、パイプライン演算装置の演算結果として、演算器１２2 の演算結果が保持される。
【００１４】
【発明が解決しようとする課題】
ところで、前述したように、従来のパイプライン演算装置においては、図２７に示した被演算データ用レジスタ１０からの第１被演算データ（ソース・オペランド）を保持するステージラッチ回路１１2 が設けられているとともに、演算器２２1 の演算結果を保持するステージラッチ回路２１2 が上記ステージラッチ回路１１2 とは独立して設けられている。したがって、このような構成では、被演算データ用レジスタ１０に保持された第１被演算データは、ステージラッチ回路１１1 およびステージラッチ回路１１2 をスルーして演算器１２2 に入力される。一方、演算器２２1 の演算結果は、ステージラッチ回路２１2 をスルーしてマルチプレクサ４０2 に入力される。
【００１５】
このように、従来のパイプライン演算装置においては、第１演算ステージと第２演算ステージとの間に設けられているステージラッチ回路１１2 およびステージラッチ回路２１2 がそれぞれ独立しているため、おのずと回路構成（ステージラッチ回路、配線、制御回路）が冗長になってしまう。したがって、従来のパイプライン演算装置においては、冗長構成が採られていることにより、ハードウェア量、消費電力が大きいという問題があった。
【００１６】
本発明は、上記に鑑みてなされたもので、ハードウェア量、消費電力を低減することができるパイプライン演算装置、情報処理装置およびパイプライン演算装置の演算方法を提供することを目的とする。
【００１７】
【課題を解決するための手段】
上記目的を達成するために、請求項１にかかる発明は、第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置であって、前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えることを特徴とする。
【００１８】
この請求項１にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。これにより、被演算データは、上記出力段のラッチ手段に保持される。そして、第２の演算手段は、入力段の上記ラッチ手段に保持された被演算データを用いて、命令に応じた演算を行う。
【００１９】
このように、請求項１にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみのスルーを第１の演算手段に実行させるようにしたので、第１の演算手段と第２の演算手段との間で、ラッチ手段の共有、および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００２０】
また、請求項２にかかる発明は、第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞１）の複数演算ステージを有するパイプライン演算装置であって、前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えることを特徴とする。
【００２１】
この請求項２にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。
【００２２】
このように、請求項２にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみのスルーを第１の演算手段に実行させるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００２３】
また、請求項３にかかる発明は、第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置であって、前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第１の演算手段および前記第２の演算手段に対して、それぞれの演算に関して前記第１の演算手段の演算結果を前記第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第２の演算手段が単独で演算を行う場合に、前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えることを特徴とする。
【００２４】
この請求項３にかかる発明によれば、第１の演算手段および第２の演算手段に対して、それぞれの演算に関して第１の演算手段の演算結果を第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、第２の演算手段が単独で演算を行う場合に、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。これにより、被演算データは、上記出力段のラッチ手段に保持される。そして、第２の演算手段は、入力段の上記ラッチ手段に保持された被演算データを用いて、命令に応じた演算を行う。
【００２５】
このように、請求項３にかかる発明によれば、第１の演算手段および第２の演算手段に対して、それぞれの演算に関して第１の演算手段の演算結果を第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、第２の演算手段が単独で演算を行う場合に、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみのスルーを第１の演算手段に実行させるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００２６】
また、請求項４にかかる発明は、第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞ｙ＞ｘ≧１）の複数演算ステージを有するパイプライン演算装置であって、前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第１演算手段乃至第ｎ演算手段のうち、ｍ段（ｍ＜ｎ）からなる第ｒ演算手段（ｒ＞１）乃至第ｓ演算手段（ｒ＜ｓ＜ｎ）に対して、前段の演算手段の演算結果を次段の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えることを特徴とする。
【００２７】
この請求項４にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。
【００２８】
このように、請求項４にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００２９】
また、請求項５にかかる発明は、第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置を含む情報処理装置であって、前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えるパイプライン演算装置を含むことを特徴とする。
【００３０】
この請求項５にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。これにより、被演算データは、上記出力段のラッチ手段に保持される。そして、第２の演算手段は、入力段の上記ラッチ手段に保持された被演算データを用いて、命令に応じた演算を行う。
【００３１】
このように、請求項５にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段それぞれに保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみをスルーさせるようにしたので、第１の演算手段と第２の演算手段との間で、ラッチ手段の共有、および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００３２】
また、請求項６にかかる発明は、第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞１）の複数演算ステージを有するパイプライン演算装置を含む情報処理装置であって、前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えるパイプライン演算装置を含むことを特徴とする。
【００３３】
この請求項６にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。
【００３４】
このように、請求項６にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００３５】
また、請求項７にかかる発明は、第１の命令を実行する第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算ステージとを有するパイプライン演算装置を含む情報処理装置であって、前記第１の演算ステージに設けられ、前記第１の演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第２の演算ステージに設けられ、前記第２の演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第１の演算手段および前記第２の演算手段に対して、それぞれの演算に関して前記第１の演算手段の演算結果を前記第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第２の演算手段が単独で演算を行う場合に、前記第１の演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えるパイプライン演算装置を含むことを特徴とする。
【００３６】
この請求項７にかかる発明によれば、第１の演算手段および第２の演算手段に対して、それぞれの演算に関して第１の演算手段の演算結果を第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、第２の演算手段が単独で演算を行う場合に、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。これにより、被演算データは、上記出力段のラッチ手段に保持される。そして、第２の演算手段は、入力段の上記ラッチ手段に保持された被演算データを用いて、命令に応じた演算を行う。
【００３７】
このように、請求項７にかかる発明によれば、第１の演算手段および第２の演算手段に対して、それぞれの演算に関して第１の演算手段の演算結果を第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、第２の演算手段が単独で演算を行う場合に、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算ステージの出力段におけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減する。
【００３８】
また、請求項８にかかる発明は、第１の命令を実行する第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞ｙ＞ｘ≧１）の複数演算ステージを有するパイプライン演算装置を含む情報処理装置であって、前記第ｘ演算ステージに設けられ、前記第ｘ演算ステージにおける入力段に設けられた被演算データを保持する複数のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第１の命令に応じた演算を行い、演算結果を出力する第１の演算手段と、前記第ｙ演算ステージに設けられ、前記第ｙ演算ステージにおける入力段に設けられた被演算データを保持する単一のラッチ手段を有し、前記入力段の前記ラッチ手段に保持された前記被演算データを用いて、第２の命令に応じた演算を行い、演算結果を出力する第２の演算手段と、前記第１演算手段乃至第ｎ演算手段のうち、ｍ段（ｍ＜ｎ）からなる第ｒ演算手段（ｒ＞１）乃至第ｓ演算手段（ｒ＜ｓ＜ｎ）に対して、前段の演算手段の演算結果を次段の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、前記第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる被演算データのみのスルーを前記第１の演算手段に実行させる制御手段と、を備えるパイプライン演算装置を含むことを特徴とする。
【００３９】
この請求項８にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーで出力段のラッチ手段へ出力する。
【００４０】
このように、請求項８にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００４１】
また、請求項９にかかる発明は、第１の命令を実行する第１の演算手段を含む第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算手段を含む第２の演算ステージとを有するパイプライン演算装置の演算方法であって、前記第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の命令が用いる単一の被演算データのみを前記第１の演算ステージにおいてスルーするステップと、前記スルーした被演算データを用いて、前記第２の演算ステージにおいて前記第２の命令を実行するステップと、を有することを特徴とする。
【００４２】
この請求項９にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第１の演算ステージにおいてスルーし、スルーした被演算データを用いて、第２の演算ステージにおいて第２の命令を実行する。
【００４３】
このように、請求項９にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第１の演算ステージにおいてスルーし、スルーした被演算データを用いて、第２の演算ステージにおいて第２の命令を実行するようにしたので、第１の演算ステージの出力段におけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減する。
【００４４】
また、請求項１０にかかる発明は、第１の命令を実行する第１の演算手段を含む第ｘ演算ステージ（ｘ≧１）と、前記第ｘ演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算手段を含む第ｙ演算ステージ（ｙ＞ｘ）とを含む第１演算ステージ乃至第ｎ演算ステージ（ｎ＞１）の複数演算ステージを有するパイプライン演算装置の演算方法であって、前記第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の命令が用いる単一の被演算データのみを前記第ｘ演算ステージにおいてスルーするステップと、前記スルーした被演算データを用いて、前記第ｙ演算ステージにおいて前記第２の命令を実行するステップと、を有することを特徴とする。
【００４５】
この請求項１０にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第ｘ演算ステージにおいてスルーし、スルーした被演算データを用いて、第ｙ演算ステージにおいて第２の命令を実行する。
【００４６】
このように請求項１０にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第ｘ演算ステージにおいてスルーし、スルーした被演算データを用いて、第ｙ演算ステージにおいて第２の命令を実行するようにしたので、第ｘ演算ステージの出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
また、請求項１１にかかる発明は、第１の命令を実行する第１の演算手段を含む第１の演算ステージと、前記第１の演算ステージの後段ステージ以降に位置し、第２の命令を実行する第２の演算手段を含む第２の演算ステージとを有するパイプライン演算装置の演算方法であって、前記第１の演算手段及び前記第２の演算手段に対して、それぞれの演算に関して前記第１の演算手段の演算結果を前記第２の演算手段の被演算データとするような相関関係がある第３の命令を実行するステップ、又は、前記第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の命令が用いる単一の被演算データのみを前記第１の演算ステージにおいてスルーするステップと、前記スルーした被演算データを用いて、前記第２の演算ステージにおいて前記第２の命令を実行することを特徴とする。
この請求項１１にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第１の演算ステージにおいてスルーし、スルーした被演算データを用いて、第２の演算ステージにおいて第２の命令を実行する。
このように、請求項１１にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第１の演算ステージにおいてスルーし、スルーした被演算データを用いて、第２の演算ステージにおいて第２の命令を実行するようにしたので、第１の演算ステージの出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減する。
【００４７】
以下、図面を参照して本発明にかかるパイプライン演算装置、情報処理装置およびパイプライン演算装置の演算方法の実施の形態１〜８について詳細に説明する。
【００４８】
（実施の形態１）
図１は、本発明にかかる実施の形態１の構成を示すブロック図である。この図に示したパイプライン演算装置は、第１演算ステージおよび第２演算ステージという２段の演算ステージを有している。この第１演算ステージには、演算器１２０1 が設けられており、第２演算ステージには、演算器１２０2 が設けられている。被演算データ用レジスタ１００は、第１被演算データ（ソース・オペランド）ＳＯＵＲＣＥ1 を保持する。被演算データ用レジスタ２００は、第２被演算データ（ソース・オペランド）を保持する。命令用レジスタ３００は、命令パイプラインパスＰ300 に対応して設けられており、命令ＩＮＳＴ1 、命令ＩＮＳＴ2 を保持する。命令ＩＮＳＴ1 は、演算器１２０1 に対して発行される演算命令であり、命令ＩＮＳＴ2 は、演算器１２０2 に対して発行される演算命令である。
【００４９】
また、実施の形態１のパイプライン演算装置は、２段の演算ステージの入力段、第１演算ステージと第２演算ステージとの間（演算ステージ間）、および２段の演算ステージの出力段には、データ、命令等を一時的に保持するステージラッチ回路がそれぞれ設けられている。具体的には、入力段には、ステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 が並列的にそれぞれ設けられており、演算ステージ間には、ステージラッチ回路１１０2 、およびステージラッチ回路３１０2 が並列的にそれぞれ設けられている。出力段には、ステージラッチ回路１１０3 が設けられている。また、これらのステージラッチ回路１１０1 、ステージラッチ回路１１０2 等は、入力段→演算ステージ間→出力段という具合に、１クロックサイクルをおいて順次駆動される。
【００５０】
ここで、前述した従来のパイプライン演算装置の構成を示した図２７と図１とにおいて演算ステージ間（第１演算ステージと第２演算ステージとの間）のステージラッチ回路の数を比較すると、図２７では、ステージラッチ回路の数が３個（ステージラッチ回路１１2 、ステージラッチ回路２１2 およびステージラッチ回路３１2 ）であるのに対して、図１では、ステージラッチ回路の数が２個（ステージラッチ回路１１０2 およびステージラッチ回路３１０2 ）である。
【００５１】
第１演算ステージにおいて、ステージラッチ回路１１０1 は、被演算データ用レジスタ１００（パイプラインパスＰ100）に対応して設けられており、被演算データ用レジスタ１００からの第１被演算データＳＯＵＲＣＥ1 を保持する。ステージラッチ回路２１０1 は、被演算データ用レジスタ２００に対応して設けられており、被演算データ用レジスタ２００からの第２被演算データを保持する。ステージラッチ回路３１０1 は、命令用レジスタ３００に対応して設けられており、命令用レジスタ３００からの命令ＩＮＳＴ1 、命令ＩＮＳＴ2 を保持する。命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ1 をデコードする。演算器１２０1 は、命令ＩＮＳＴ1 がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ1 に対応する演算を行い演算結果をステージラッチ回路１１０2 へ出力する。
【００５２】
また、命令デコーダ３２０1 は、命令ＩＮＳＴ1 以外の命令（この場合、命令ＩＮＳＴ2 ）が入力された場合、これをスルー命令ＳＲＣ1 としてデコードし、演算器１２０1 を制御する。演算器１２０1 は、上記スルー命令ＳＲＣ1 が入力された場合、二つの被演算データ（第１被演算データＳＯＵＲＣＥ1 、第２被演算データ）のうち、第１被演算データＳＯＵＲＣＥ1 のみをスルーさせる。
【００５３】
第２演算ステージにおいて、ステージラッチ回路１１０2 は、被演算データ用レジスタ１００に対応して設けられており、演算器１２０1 の演算結果、または演算器１２０1 の出力値（第１被演算データＳＯＵＲＣＥ1 ）を保持する。ステージラッチ回路３１０2 は、命令用レジスタ３００に対応して設けられており、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ1 、命令ＩＮＳＴ2 ）を保持する。命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ2 をデコードする。演算器１２０2 は、命令ＩＮＳＴ2 がデコードされたとき、ステージラッチ回路１１０2 の値を用いて、命令ＩＮＳＴ2 に対応する演算を行い演算結果を出力する。バイパスラインＢ2 は、演算器１２０2 に対して並列的に設けられており、ステージラッチ回路１１０2 の値を、演算器１２０2 を経由させることなく、スルーでマルチプレクサ４００2 に導く役目をしている。
【００５４】
マルチプレクサ４００2 は、命令デコーダ３２０2 により切り替え制御される２入力１出力型の切替器であり、演算器１２０2 の演算結果、ステージラッチ回路１１０2 の値のうちいずれか一方を出力する。具体的には、マルチプレクサ４００2 は、命令デコーダ３２０2 により命令ＩＮＳＴ2 がデコードされたとき演算器１２０2 の演算結果を出力する。一方、マルチプレクサ４００2 は、命令ＩＮＳＴ2 以外の命令（この場合、命令ＩＮＳＴ1 ）が命令デコーダ３２０2 に入力されたとき、ステージラッチ回路１１０2 の値を出力する。ステージラッチ回路１１０3 は、マルチプレクサ４００2 の切り替え状態に応じて、演算器１２０2 の演算結果またはステージラッチ回路１１０2 の値を保持する。演算結果用レジスタ５００は、ステージラッチ回路１１０3 の値、すなわち、パイプライン演算装置における演算結果（デスティネーション・オペランド）を保持する。
【００５５】
また、実施の形態１において、第１演算ステージの演算器１２０1 と、第２演算ステージの演算器１２０2 とは、互いに相関関係がない命令（命令ＩＮＳＴ1 、命令ＩＮＳＴ2 ）に基づいて演算をそれぞれ行う。つまり、相関関係がない場合には、演算器１２０1 の演算と、演算器１２０2 の演算とがそれぞれ単独で行われる。さらに、実施の形態１においては、第１演算ステージでスルー命令ＳＲＣ1 がデコードされることで、第１被演算データＳＯＵＲＣＥ1 がスルーされる。
【００５６】
つぎに、上述した実施の形態１の動作について図２に示したフローチャートを参照しつつ説明する。はじめに、命令ＩＮＳＴ1 が発行された場合の動作について説明する。図２に示したステップＳＡ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ1 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【００５７】
つぎのステップＳＡ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０1 に命令ＩＮＳＴ1 が保持されているため、命令デコーダ３２０1 は、ステップＳＡ３へ進む。ステップＳＡ３では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ1 をデコードする。これにより、演算器１２０1 はステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ1 に応じた演算を行う。
【００５８】
つぎのステップＳＡ４では、演算器１２０1 の演算結果がステージラッチ回路１１０2 に保持される。このとき、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ1 ）がステージラッチ回路３１０2 に保持される。つぎのステップＳＡ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０2 に命令ＩＮＳＴ1 が保持されているため、命令デコーダ３２０2 は、ステップＳＡ１１へ進む。
【００５９】
ステップＳＡ１１では、命令デコーダ３２０2 は、マルチプレクサ４００2 にステージラッチ回路１１０2 を選択させる。これにより、ステップＳＡ１２では、演算器１２０2 が動作せず、ステップＳＡ１３では、ステージラッチ回路１１０2 の値（演算器１２０1 の演算結果）が、バイパスラインＢ2 およびマルチプレクサ４００2 を介してステージラッチ回路１１０3 に保持される。つぎのステップＳＡ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０1 の演算結果が保持される。
【００６０】
つぎに、命令ＩＮＳＴ2 が発行された場合の動作について説明する。図２に示したステップＳＡ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ2 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ2 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【００６１】
つぎのステップＳＡ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０1 に命令ＩＮＳＴ2 が保持されているため、命令デコーダ３２０1 は、ステップＳＡ５へ進む。ステップＳＡ５では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ2 をスルー命令ＳＲＣ1 に変換した後、ステップＳＡ６へ進む。ステップＳＡ６では、命令デコーダ３２０1 は、スルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０1 は、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）をスルーで通過させる。
【００６２】
つぎのステップＳＡ７では、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）がステージラッチ回路１１０2 に保持される。このとき、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ2 ）がステージラッチ回路３１０2 に保持される。つぎのステップＳＡ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０2 に命令ＩＮＳＴ2 が保持されているため、命令デコーダ３２０2 は、ステップＳＡ９へ進む。
【００６３】
ステップＳＡ９では、命令デコーダ３２０2 は、マルチプレクサ４００2 に演算器１２０2 を選択させる。また、命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ2 をデコードする。これにより、演算器１２０2 は、ステージラッチ回路１１０2 の値（第１被演算データＳＯＵＲＣＥ1 ）を用いて、命令ＩＮＳＴ2 に応じた演算を行う。つぎのステップＳＡ１０では、演算器１２０2 の演算結果がステージラッチ回路１１０3 に保持される。つぎのステップＳＡ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０2 の演算結果が保持される。
【００６４】
以上説明したように、実施の形態１によれば、命令デコーダ３２０1 において命令ＩＮＳＴ1 以外の命令をスルー命令ＳＲＣ1 に変換し、演算器１２０1 で第１被演算データＳＯＵＲＣＥ1 をスルーさせるとともに、第２演算ステージにバイパスラインＢ2 を設けたので、演算器１２０1 と演算器１２０2 との間でステージラッチ回路１１０2 の共有、および配線量の低減が可能となる。したがって、実施の形態１によれば、ステージラッチ回路１１０2 の共有化により、ハードウェア量および消費電力が低減する。
【００６５】
（実施の形態２）
図３は、本発明にかかる実施の形態２の構成を示すブロック図である。この図において、図１の各部にそれぞれ対応する部分には同一の符号を付ける。ただし、図３に示した命令デコーダ３２０1 および命令デコーダ３２０2 の機能は、後述するように、図１に示した命令デコーダ３２０1 および命令デコーダ３２０2 の機能とは異なる。図３においては、第１演算ステージにマルチプレクサ４００1 およびバイパスラインＢ1 が新たに設けられている。さらに、図３においては、第２演算ステージに、図１に示したマルチプレクサ４００2 およびバイパスラインＢ2 が設けられていない。
【００６６】
図３において、第１演算ステージの命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ1 をデコードする。演算器１２０1 は、命令ＩＮＳＴ1 がデコードされたとき、ステージラッチ回路１１０1 の値、およびステージラッチ回路２１０1 の値を用いて、命令ＩＮＳＴ1 に対応する演算を行い演算結果ＲＥＳＵＬＴ1 を出力する。バイパスラインＢ1 は、演算器１２０1 に対して並列的に設けられており、ステージラッチ回路１１０1 の値を、演算器１２０1 を経由させることなく、スルーでマルチプレクサ４００1 に導く役目をしている。
【００６７】
マルチプレクサ４００1 は、命令デコーダ３２０1 により切り替え制御される２入力１出力型の切替器であり、演算器１２０1 の演算結果ＲＥＳＵＬＴ1 、ステージラッチ回路１１０1 の値のうちいずれか一方を出力する。具体的には、マルチプレクサ４００1 は、命令デコーダ３２０1 により命令ＩＮＳＴ1 がデコードされたとき演算器１２０1 の演算結果ＲＥＳＵＬＴ1 を出力する。一方、マルチプレクサ４００1 は、命令ＩＮＳＴ1 以外の命令（たとえば、命令ＩＮＳＴ2 ）が命令デコーダ３２０1 に入力されたとき、ステージラッチ回路１１０1 の値を出力する。
【００６８】
命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ2 をデコードし、演算器１２０2 を制御する。演算器１２０2 は、命令ＩＮＳＴ2 がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データ）を用いて、命令ＩＮＳＴ2 に対応する演算を行い演算結果をステージラッチ回路１１０3 へ出力する。
【００６９】
また、命令デコーダ３２０2 は、命令ＩＮＳＴ2 以外の命令（この場合、命令ＩＮＳＴ1 ）が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 をデコードする。演算器１２０2 は、上記スルー命令ＳＲＣ1 が入力された場合、ステージラッチ回路１１０2 の値（この場合、演算結果ＲＥＳＵＬＴ1 ）をスルーさせる。ステージラッチ回路１１０3 は、マルチプレクサ４００1 の切り替え状態に応じて、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）または演算器１２０2 の演算結果を保持する。演算結果用レジスタ５００は、ステージラッチ回路１１０3 の値、すなわち、パイプライン演算装置における演算結果（デスティネーション・オペランド）を保持する。
【００７０】
また、実施の形態２において、第１演算ステージの演算器１２０1 と、第２演算ステージの演算器１２０2 とは、実施の形態１と同様にして、互いに相関関係がない命令（命令ＩＮＳＴ1 、命令ＩＮＳＴ2 ）に基づいて演算をそれぞれ行う。つまり、相関関係がない場合には、演算器１２０1 の演算と、演算器１２０2 の演算とがそれぞれ単独で行われる。さらに、実施の形態２においては、第２演算ステージでスルー命令ＳＲＣ1 がデコードされることで、第１演算ステージにおける演算器１２０1 の演算結果ＲＥＳＵＬＴ1 がスルーされる。
【００７１】
つぎに、上述した実施の形態２の動作について図４に示したフローチャートを参照しつつ説明する。はじめに、命令ＩＮＳＴ1 が発行された場合の動作について説明する。図４に示したステップＳＢ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データ、第２被演算データおよび命令ＩＮＳＴ1 がそれぞれ保持される。これにより、上記第１被演算データ、第２被演算データおよび命令ＩＮＳＴ1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【００７２】
つぎのステップＳＢ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０1 に命令ＩＮＳＴ1 が保持されているため、命令デコーダ３２０1 は、ステップＳＢ３へ進む。ステップＳＢ３では、命令デコーダ３２０1 は、マルチプレクサ４００1 に演算器１２０1 を選択させる。また、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ1 をデコードし、演算器１２０1 を制御する。これにより、演算器１２０1 は、ステージラッチ回路１１０1 の値（第１被演算データ）、およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ1 に応じた演算を行う。つぎのステップＳＢ４では、演算器１２０1 の演算結果ＲＥＳＵＬＴ1 がマルチプレクサ４００1 を介して、ステージラッチ回路１１０2 に保持される。これに並行して、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ1 ）がステージラッチ回路３１０2 に保持される。
【００７３】
つぎのステップＳＢ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０2 に命令ＩＮＳＴ2 以外の命令、すなわち、命令ＩＮＳＴ1 が保持されているため、命令デコーダ３２０2 は、ステップＳＢ１１へ進む。ステップＳＢ１１では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 の値（命令ＩＮＳＴ1 ）を解読し、命令ＩＮＳＴ1 をスルー命令ＳＲＣ1 に変換した後、ステップＳＢ１２へ進む。
【００７４】
ステップＳＢ１２では、命令デコーダ３２０2 は、スルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０2 は、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）をスルーで通過させる。つぎのステップＳＢ１３では、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）がステージラッチ回路１１０3 に保持される。つぎのステップＳＢ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０1 の演算結果ＲＥＳＵＬＴ1 が保持される。
【００７５】
つぎに、命令ＩＮＳＴ2 が発行された場合の動作について説明する。図４に示したステップＳＢ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データ、第２被演算データおよび命令ＩＮＳＴ2 がそれぞれ保持される。これにより、上記第１被演算データ、第２被演算データおよび命令ＩＮＳＴ2 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【００７６】
つぎのステップＳＢ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に命令ＩＮＳＴ2 が保持されているため、ステップＳＢ５へ進む。ステップＳＢ５では、命令デコーダ３２０1 は、マルチプレクサ４００1 にステージラッチ回路１１０1 を選択させる。ステップＳＢ６では、演算器１２０1 が動作せず、ステップＳＢ７では、ステージラッチ回路１１０1 の値（第１被演算データ）が、バイパスラインＢ1 およびマルチプレクサ４００1 を介してステージラッチ回路１１０2 に保持される。
【００７７】
つぎのステップＳＢ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に命令ＩＮＳＴ2 が保持されているため、ステップＳＢ９へ進む。ステップＳＢ９では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 のからの命令ＩＮＳＴ2 ）をデコードする。演算器１２０2 は、ステージラッチ回路１１０2 の値（第１被演算データ）を用いて、命令ＩＮＳＴ2 に応じた演算を実行する。つぎのステップＳＢ１０では、演算器１２０2 の演算結果がステージラッチ回路１１０3 に保持され、ステップＳＢ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０2 の演算結果が保持される。
【００７８】
以上説明したように、実施の形態２によれば、第１演算ステージにマルチプレクサ４００1 を設けて、ステージラッチ回路１１０1 の値または演算器１２０1 の演算結果のいずれかをステージラッチ回路１１０2 に保持させるとともに、命令デコーダ３２０2 において命令ＩＮＳＴ2 以外の命令をスルー命令ＳＲＣ1 に変換し、演算器１２０2 で演算結果ＲＥＳＵＬＴ1 をスルーさせるようにしたので、演算器１２０2 の下流のステージラッチ回路および配線量の低減が可能となる。したがって、実施の形態２によれば、ハードウェア量および消費電力が低減する。
【００７９】
（実施の形態３）
図５は、本発明にかかる実施の形態３の構成を示すブロック図である。この図においては、図１の各部に対応する部分には同一の符号をそれぞれ付ける。この図に示したパイプライン演算装置は、第１演算ステージ〜第ｎ演算ステージというｎ段の演算ステージを有している。ただし、図５には、第１演算ステージ、第ｘ−１（１＜ｘ＜ｎ）演算ステージ、第ｘ演算ステージ、第ｘ＋１演算ステージおよび第ｎ演算ステージが図示されており、他の演算ステージの図示が省略されている。
【００８０】
また、実施の形態３においては、ｎ段の演算ステージの入力段、演算ステージ間、およびｎ段の演算ステージの出力段には、データ、命令等を一時的に保持する複数のステージラッチ回路がそれぞれ設けられている。具体的には、入力段には、ステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 が並列的にそれぞれ設けられており、出力段には、ステージラッチ回路１１０n+1 が設けられている。なお、演算ステージ間のステージラッチ回路については後述する。
【００８１】
図５において、被演算データ用レジスタ１００は、第１被演算データ（ソース・オペランド）ＳＯＵＲＣＥ1 を保持する。被演算データ用レジスタ２００は、第２被演算データ（ソース・オペランド）ＳＯＵＲＣＥ2 を保持する。命令用レジスタ３００は、各演算ステージにおいて用いられる命令ＩＮＳＴ11、命令ＩＮＳＴ12、命令ＩＮＳＴx-11、・・・、命令ＩＮＳＴn をそれぞれ保持する。
【００８２】
第１演算ステージにおいて、ステージラッチ回路１１０1 は、被演算データ用レジスタ１００からの第１被演算データＳＯＵＲＣＥ1 を保持し、ステージラッチ回路２１０1 は、被演算データ用レジスタ２００からの第２被演算データＳＯＵＲＣＥ2 を保持する。ステージラッチ回路３１０1 は、命令用レジスタ３００に対応して設けられており、命令用レジスタ３００からの命令ＩＮＳＴ11、命令ＩＮＳＴ12等を保持する。命令デコーダ３２０11は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ11 をデコードする。
【００８３】
上記演算器１２０1 は、命令ＩＮＳＴ11がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）を用いて、命令ＩＮＳＴ11に対応する演算を行い演算結果をステージラッチ回路１１０2 へ出力する。また、命令デコーダ３２０11は、命令ＩＮＳＴ11以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 をデコードする。演算器１２０1 は、上記スルー命令ＳＲＣ1 が入力された場合、第１被演算データＳＯＵＲＣＥ1 をスルーさせる。
【００８４】
命令デコーダ３２０12は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ12をデコードする。この演算器２２０1 は、命令ＩＮＳＴ12がデコードされたとき、ステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴ12に対応する演算を行い演算結果をステージラッチ回路２１０2 へ出力する。また、命令デコーダ３２０12は、命令ＩＮＳＴ12以外の命令が入力された場合、これをスルー命令ＳＲＣ2 に変換し、このスルー命令ＳＲＣ2 をデコードする。演算器２２０1 は、上記スルー命令ＳＲＣ2 が入力された場合、第２被演算データＳＯＵＲＣＥ2 をスルーさせる。
【００８５】
ステージラッチ回路１１０2 、ステージラッチ回路２１０2 およびステージラッチ回路３１０2 は、第１演算ステージと第２演算ステージ（図示略）との間にそれぞれ設けられており、演算器１２０1 の出力値、演算器２２０1 の出力値およびステージラッチ回路３１０1 の値をそれぞれ保持する。以下、第２演算ステージ〜第ｘ−１演算ステージまでは、上述した第１演算ステージと同一構成とされている。
【００８６】
すなわち、第ｘ−１演算ステージにおいて、ステージラッチ回路１１０x-1 は、第１被演算データＳＯＵＲＣＥ1 または第ｘ−２演算ステージ（図示略）の演算器の演算結果を保持する。ステージラッチ回路２１０x-1 は、第２被演算データＳＯＵＲＣＥ2 または第ｘ−２演算ステージ（図示略）の演算器の演算結果を保持する。ステージラッチ回路３１０x-1 は、第ｘ−２演算ステージにおけるステージラッチ回路の値（命令ＩＮＳＴ11、命令ＩＮＳＴ12等）を保持する。命令デコーダ３２０x-11は、ステージラッチ回路３１０x-1 からの命令ＩＮＳＴx-11をデコードする。
【００８７】
上記演算器１２０x-1 は、命令ＩＮＳＴx-11がデコードされたとき、ステージラッチ回路１１０x-1 の値を用いて、命令ＩＮＳＴx-11に対応する演算を行い演算結果をステージラッチ回路１１０x へ出力する。また、命令デコーダ３２０x-11は、命令ＩＮＳＴx-11以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０x-1 に対してデコードする。演算器１２０x-1 は、上記スルー命令ＳＲＣ1 が入力された場合、ステージラッチ回路１１０x-1 の値をスルーさせる。
【００８８】
命令デコーダ３２０x-12は、ステージラッチ回路３１０x-1 からの命令ＩＮＳＴx-12をデコードする。この演算器２２０x-1 は、命令ＩＮＳＴx-12がデコードされたとき、ステージラッチ回路２１０x-1 の値を用いて、命令ＩＮＳＴx-12に対応する演算を行い演算結果をステージラッチ回路２１０x へ出力する。また、命令デコーダ３２０x-12は、命令ＩＮＳＴx-12以外の命令が入力された場合、これをスルー命令ＳＲＣ2 に変換し、このスルー命令ＳＲＣ2 を演算器２２０x-1 に対してデコードする。演算器２２０x-1 は、上記スルー命令ＳＲＣ2 が入力された場合、ステージラッチ回路２１０x-1 の値をスルーさせる。
【００８９】
第ｘ演算ステージにおいて、ステージラッチ回路１１０x は、第１被演算データＳＯＵＲＣＥ1 または第ｘ−１演算ステージにおける演算器１２０x-1 の演算結果を保持する。ステージラッチ回路２１０x は、第２被演算データＳＯＵＲＣＥ2 または第ｘ−１演算ステージにおける演算器２２０x-1 の演算結果を保持する。ステージラッチ回路３１０x は、ステージラッチ回路３１０x-1 の値（命令ＩＮＳＴ11、命令ＩＮＳＴ12等）を保持する。命令デコーダ３２０x は、ステージラッチ回路３１０x からの命令ＩＮＳＴx をデコードする。
【００９０】
上記演算器１２０x は、命令ＩＮＳＴx がデコードされたとき、ステージラッチ回路１１０x の値、およびステージラッチ回路２１０x の値を用いて、命令ＩＮＳＴx に対応する演算を行い演算結果をステージラッチ回路１１０x+1 へ出力する。また、命令デコーダ３２０x は、命令ＩＮＳＴx 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０x に対してデコードする。演算器１２０x は、ステージラッチ回路１１０x の値、ステージラッチ回路２１０x の値のうち、ステージラッチ回路１１０x の値のみをスルーさせる。
【００９１】
ここで、第ｘ＋１演算ステージ〜第ｎ演算ステージのそれぞれの構成は、前述した図１に示した第２演算ステージの構成と同様である。すなわち、第ｘ＋１演算ステージにおいて、ステージラッチ回路１１０x+1 は、第１被演算データＳＯＵＲＣＥ1 または第ｘ演算ステージにおける演算器１２０x の演算結果を保持する。ステージラッチ回路３１０x+1 は、ステージラッチ回路３１０x の値（命令ＩＮＳＴ11、命令ＩＮＳＴ12等）を保持する。命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 からの命令ＩＮＳＴx+1 をデコードする。演算器１２０x+1 は、命令ＩＮＳＴx+1 がデコードされたとき、ステージラッチ回路１１０x+1 の値を用いて、命令ＩＮＳＴx+1 に対応する演算を行い演算結果を出力する。バイパスラインＢx+1 は、演算器１２０x+1 に対して並列的に設けられており、ステージラッチ回路１１０x+1 の値を、演算器１２０x+1 を経由させることなく、スルーでマルチプレクサ４００x+1 に導く役目をしている。
【００９２】
マルチプレクサ４００x+1 は、命令デコーダ３２０x+1 により切り替え制御される２入力１出力型の切替器であり、演算器１２０x+1 の演算結果、ステージラッチ回路１１０x+1 の値のうちいずれか一方を出力する。具体的には、マルチプレクサ４００x+1 は、命令デコーダ３２０x+1 により命令ＩＮＳＴx+1 がデコードされたとき演算器１２０x+1 の演算結果を出力する。一方、マルチプレクサ４００x+1 は、命令ＩＮＳＴx+1 以外の命令が命令デコーダ３２０x+1 に入力されたとき、ステージラッチ回路１１０x+1 の値を出力する。ステージラッチ回路１１０x+2 は、マルチプレクサ４００x+1 の切り替え状態に応じて、演算器１２０x+1 の演算結果またはステージラッチ回路１１０x+1 の値を保持する。ステージラッチ回路１１０x+2 、およびステージラッチ回路３１０x+2 は、第ｘ＋１演算ステージと第ｘ＋２演算ステージ（図示略）との間にそれぞれ設けられており、マルチプレクサ４００x+1 の出力値、およびステージラッチ回路３１０x+1 の値をそれぞれ保持する。以下、第ｘ＋２演算ステージ〜第ｎ演算ステージまでは、上述した第ｘ＋１演算ステージと同一構成とされている。
【００９３】
すなわち、第ｎ演算ステージにおいて、ステージラッチ回路１１０n は、第１被演算データＳＯＵＲＣＥ1 または第ｎ−１演算ステージ（図示略）における演算器の演算結果を保持する。ステージラッチ回路３１０n は、第ｎ−１演算ステージにおけるステージラッチ回路の値を保持する。命令デコーダ３２０n は、ステージラッチ回路３１０n からの命令ＩＮＳＴn をデコードする。演算器１２０n は、命令ＩＮＳＴn がデコードされたとき、ステージラッチ回路１１０n の値を用いて、命令ＩＮＳＴn に対応する演算を行い演算結果を出力する。バイパスラインＢn は、演算器１２０n に対して並列的に設けられており、ステージラッチ回路１１０n の値を、演算器１２０n を経由させることなく、スルーでマルチプレクサ４００n に導く役目をしている。
【００９４】
マルチプレクサ４００n は、命令デコーダ３２０n により切り替え制御され、命令デコーダ３２０n により命令ＩＮＳＴn がデコードされたとき演算器１２０n の演算結果を出力する。一方、マルチプレクサ４００n は、命令ＩＮＳＴn 以外の命令が命令デコーダ３２０n に入力されたとき、ステージラッチ回路１１０n の値を出力する。ステージラッチ回路１１０n+1 は、マルチプレクサ４００n の切り替え状態に応じて、演算器１２０n の演算結果またはステージラッチ回路１１０n の値を保持する。演算結果用レジスタ５００は、ステージラッチ回路１１０n+1 の値、すなわち、パイプライン演算装置における演算結果（デスティネーション・オペランド）を保持する。
【００９５】
また、実施の形態３において、第１演算ステージ〜第ｎ演算ステージまでのそれぞれの演算器は、互いに相関関係がない命令に基づいて演算をそれぞれ行う。つまり、相関関係がない場合には、それぞれの演算器における演算が単独で行われる。さらに、実施の形態３においては、第１演算ステージ〜第ｘ−１演算ステージでスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がデコードされることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がスルーされる。
【００９６】
つぎに、上述した実施の形態３の動作について図６〜図８に示したフローチャートを参照しつつ説明する。はじめに、第ｘ演算ステージの演算器１２０x に対して命令ＩＮＳＴx が発行された場合の動作について説明する。図６に示したステップＳＣ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 に保持される。
【００９７】
つぎのステップＳＣ２では、命令デコーダ３２０11および命令デコーダ３２０12は、ステージラッチ回路３１０1 に保持された命令の種類を判断する。この場合、ステージラッチ回路３１０1 に命令ＩＮＳＴx が保持されているため、命令デコーダ３２０11および命令デコーダ３２０12は、ステップＳＣ５へ進む。なお、ステージラッチ回路３１０1 に命令ＩＮＳＴ11および命令ＩＮＳＴ12が保持されている場合、命令デコーダ３２０11および命令デコーダ３２０12は、ステップＳＣ３へ進み、命令ＩＮＳＴ11  および命令ＩＮＳＴ12を演算器１２０1 および演算器２２０1 に対してそれぞれデコードする。これにより、演算器１２０1 および演算器２２０1 はステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴ11および命令ＩＮＳＴ12に応じた演算をそれぞれ行う。これにより、ステップＳＣ４では、演算器１２０1 の演算結果、および演算器２２０1 の演算結果がステージラッチ回路１１０2 およびステージラッチ回路２１０2 に保持される。
【００９８】
この場合、ステップＳＣ５では、命令デコーダ３２０11および命令デコーダ３２０12は、ステージラッチ回路３１０1 の値（命令ＩＮＳＴx ）をそれぞれ解読し、命令ＩＮＳＴx をスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 にそれぞれ変換した後、ステップＳＣ６へ進む。ステップＳＣ６では、命令デコーダ３２０11および命令デコーダ３２０12は、演算器１２０1 および演算器２２０1 に対してスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 をそれぞれデコードする。これにより、演算器１２０1 および演算器２２０1 は、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）をスルーでそれぞれ通過させる。
【００９９】
つぎのステップＳＣ７では、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）がステージラッチ回路１１０2 およびステージラッチ回路２１０2 にそれぞれ保持される。このとき、ステージラッチ回路３１０1 の値（命令ＩＮＳＴx ）がステージラッチ回路３１０2 に保持される。以後、第２演算ステージ〜第ｘ−２演算ステージ（いずれも図示略）においては、第１演算ステージの場合と同様にして、スルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がそれぞれデコードされることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第２演算ステージ〜第ｘ−２演算ステージにおいては、命令ＩＮＳＴx がステージラッチ回路に順次保持される。
【０１００】
そして、第ｘ−１演算ステージにおいて、ステップＳＣ８では、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、ステージラッチ回路３１０x-1 に命令ＩＮＳＴx が保持されているため、ステップＳＣ１１へ進む。なお、ステージラッチ回路３１０x-1 に命令ＩＮＳＴx-11および命令ＩＮＳＴx-12が保持されている場合、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、ステップＳＣ９へ進み、命令ＩＮＳＴx-11  および命令ＩＮＳＴx-12を演算器１２０x-1 および演算器２２０x-1 に対してそれぞれデコードする。これにより、演算器１２０x-1 および演算器２２０x-1 は、ステージラッチ回路１１０x-1 の値、およびステージラッチ回路２１０x-1 の値を用いて、命令ＩＮＳＴx-11および命令ＩＮＳＴx-12に応じた演算をそれぞれ行う。そして、ステップＳＣ１０では、演算器１２０x-1 および演算器２２０x-1 の演算結果がステージラッチ回路１１０x およびステージラッチ回路２１０x に保持される。
【０１０１】
この場合、ステップＳＣ１１では、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、ステージラッチ回路３１０x-1 の値（命令ＩＮＳＴx ）をそれぞれ解読し、命令ＩＮＳＴx をスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 にそれぞれ変換した後、ステップＳＣ１２へ進む。ステップＳＣ１２では、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、演算器１２０x-1 および演算器２２０x-1 に対してスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 をそれぞれデコードする。これにより、演算器１２０x-1 および演算器２２０x-1 は、ステージラッチ回路１１０x-1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０x-1 の値（第２被演算データＳＯＵＲＣＥ2 ）をスルーでそれぞれ通過させる。
【０１０２】
つぎのステップＳＣ１３では、ステージラッチ回路１１０x-1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０x-1 の値（第２被演算データＳＯＵＲＣＥ2 ）がステージラッチ回路１１０x およびステージラッチ回路２１０x にそれぞれ保持される。このとき、ステージラッチ回路３１０x-1 の値（命令ＩＮＳＴx ）がステージラッチ回路３１０x に保持される。
【０１０３】
つぎの第ｘ演算ステージにおいて、ステップＳＣ１４（図７参照）では、命令デコーダ３２０x は、ステージラッチ回路３１０x に命令ＩＮＳＴx が保持されているため、ステップＳＣ１５へ進む。なお、ステージラッチ回路３１０x に命令ＩＮＳＴx 以外の命令が保持されている場合、命令デコーダ３２０x は、ステップＳＣ１７へ進み、ＩＮＳＴx 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＣ１８へ進む。ステップＳＣ１８では、命令デコーダ３２０x は、演算器１２０x に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０x は、ステージラッチ回路１１０x の値をスルーで通過させる。つぎのステップＳＣ１９では、ステージラッチ回路１１０x の値がステージラッチ回路１１０x+1 に保持される。
【０１０４】
この場合、ステップＳＣ１５では、命令デコーダ３２０x は、ステージラッチ回路３１０x からの命令ＩＮＳＴx を演算器１２０x に対してデコードする。これにより、演算器１２０x はステージラッチ回路１１０x の値（第１被演算データＳＯＵＲＣＥ1 ）、およびステージラッチ回路２１０x の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴx に応じた演算を行う。これにより、ステップＳＣ１６では、演算器１２０x の演算結果がステージラッチ回路１１０x+1 に保持される。このとき、ステージラッチ回路３１０x の値（命令ＩＮＳＴx ）がステージラッチ回路３１０x+1 に保持される。
【０１０５】
つぎの第ｘ＋１演算ステージにおいて、ステップＳＣ２０では、命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 に命令ＩＮＳＴx が保持されているため、ステップＳＣ２３へ進む。なお、ステージラッチ回路３１０x+1 に命令ＩＮＳＴx+1 が保持されている場合、命令デコーダ３２０x+1 は、ステップＳＣ２１へ進み、マルチプレクサ４００x+1 に演算器１２０x+1 を選択させる。また、命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 からの命令ＩＮＳＴx+1 ）を解読デコードする。これにより、演算器１２０x+1 は、ステージラッチ回路１１０x+1 の値を用いて、命令ＩＮＳＴx+1 に応じた演算を行う。つぎのステップＳＣ２２では、演算器１２０x+1 の演算結果がステージラッチ回路１１０x+2 に保持される。
【０１０６】
この場合、ステップＳＣ２３では、命令デコーダ３２０x+1 は、マルチプレクサ４００x+1 にステージラッチ回路１１０x+1 を選択させる。これにより、ステップＳＣ２４では、演算器１２０x+1 が動作せず、ステップＳＣ２５では、ステージラッチ回路１１０x+1 の値（演算器１２０x の演算結果）が、バイパスラインＢx+1 およびマルチプレクサ４００x+1 を介してステージラッチ回路１１０x+2 に保持される。以後、第ｘ＋２演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、第ｘ＋１演算ステージの場合と同様にして、マルチプレクサによりステージラッチ回路が選択されることで、演算器１２０x の演算結果がそれぞれの演算ステージをスルーで順次通過する。また、第ｘ＋２演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴx がステージラッチ回路に順次保持される。
【０１０７】
そして、第ｎ演算ステージにおいて、ステップＳＣ２６（図８参照）では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴx が保持されているため、ステップＳＣ２９へ進む。なお、ステージラッチ回路３１０n に命令ＩＮＳＴn が保持されている場合、命令デコーダ３２０n は、ステップＳＣ２７へ進み、マルチプレクサ４００n に演算器１２０n を選択させる。また、命令デコーダ３２０n は、ステージラッチ回路３１０n からの命令ＩＮＳＴn をデコードする。これにより、演算器１２０n は、ステージラッチ回路１１０n の値を用いて、命令ＩＮＳＴn に応じた演算を行う。つぎのステップＳＣ２８では、演算器１２０n の演算結果がステージラッチ回路１１０n+1 に保持される。
【０１０８】
この場合、ステップＳＣ２９では、命令デコーダ３２０n は、マルチプレクサ４００n にステージラッチ回路１１０n を選択させる。これにより、ステップＳＣ３０では、演算器１２０n が動作せず、ステップＳＣ３１では、ステージラッチ回路１１０n の値（演算器１２０x の演算結果）が、バイパスラインＢn およびマルチプレクサ４００n を介してステージラッチ回路１１０n+1 に保持される。つぎのステップＳＣ３２では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０x の演算結果が保持される。
【０１０９】
つぎに、第ｘ＋１演算ステージの演算器１２０x+1 に対して命令ＩＮＳＴx+1 が発行された場合の動作について説明する。図６に示したステップＳＣ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx+1 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx+1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 に保持される。
【０１１０】
以後、第１演算ステージ〜第ｘ−１演算ステージにおいては、前述した動作（ステップＳＣ２、ステップＳＣ５〜ステップＳＣ８、ステップＳＣ１１〜ステップＳＣ１３）と同様にして、スルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がそれぞれデコードされる。つまり、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第１演算ステージ〜第ｘ−１演算ステージにおいては、命令ＩＮＳＴx+1 がステージラッチ回路に順次保持される。これにより、第ｘ演算ステージにおいて、ステージラッチ回路１１０x 、ステージラッチ回路２１０x およびステージラッチ回路３１０x には、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx+1 がそれぞれ保持される。
【０１１１】
第ｘ演算ステージにおいて、ステップＳＣ１４（図７参照）では、命令デコーダ３２０x は、ステージラッチ回路３１０x に命令ＩＮＳＴx+1 が保持されているため、ステップＳＣ１７へ進む。ステップＳＣ１７では、命令デコーダ３２０x は、命令ＩＮＳＴx+1 をスルー命令ＳＲＣ1 に変換した後、ステップＳＣ１８へ進む。ステップＳＣ１８では、命令デコーダ３２０x は、演算器１２０x に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０x は、ステージラッチ回路１１０x の値をスルーで通過させる。つぎのステップＳＣ１９では、ステージラッチ回路１１０x の値がステージラッチ回路１１０x+1 に保持される。このとき、ステージラッチ回路３１０x の値（命令ＩＮＳＴx+1 ）がステージラッチ回路３１０x+1 に保持される。
【０１１２】
つぎの第ｘ＋１演算ステージにおいて、ステップＳＣ２０では、命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 に命令ＩＮＳＴx+1 が保持されているため、ステップＳＣ２１へ進み、マルチプレクサ４００x+1 に演算器１２０x+1 を選択させる。また、命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 からの命令ＩＮＳＴx+1 をデコードする。これにより、演算器１２０x+1 は、ステージラッチ回路１１０x+1 の値を用いて、命令ＩＮＳＴx+1 に応じた演算を行う。つぎのステップＳＣ２２では、演算器１２０x+1 の演算結果がステージラッチ回路１１０x+2 に保持される。
【０１１３】
以後、第ｘ＋２演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、ステップＳＣ２３〜ステップＳＣ２５と同様の動作が行われ、マルチプレクサによりステージラッチ回路が選択されることで、第ｘ＋１演算ステージの演算器１２０x+1 の演算結果がそれぞれの演算ステージをスルーで順次通過する。また、第ｘ＋２演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴx+1 がステージラッチ回路に順次保持される。
【０１１４】
そして、第ｎ演算ステージにおいて、ステップＳＣ２６（図８参照）では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴx+1 が保持されているため、ステップＳＣ２９へ進む。ステップＳＣ２９では、命令デコーダ３２０n は、マルチプレクサ４００n にステージラッチ回路１１０n を選択させる。これにより、ステップＳＣ３０では、演算器１２０n が動作せず、ステップＳＣ３１では、ステージラッチ回路１１０n の値（演算器１２０x+1 の演算結果）が、バイパスラインＢn およびマルチプレクサ４００n を介してステージラッチ回路１１０n+1 に保持される。つぎのステップＳＣ３２では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０x+1 の演算結果が保持される。
【０１１５】
以上説明したように、実施の形態３によれば、第ｘ演算ステージにおける演算実行時に、第１演算ステージ〜第ｘ−１演算ステージにおいてスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 をそれぞれデコードすることで第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 をスルーさせるようにしたので、第１演算ステージ〜第ｘ−１演算ステージにおけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減する。
【０１１６】
（実施の形態４）
図９は、本発明にかかる実施の形態４の構成を示すブロック図である。この図においては、図５の各部に対応する部分には同一の符号をそれぞれ付ける。この図に示したパイプライン演算装置は、第１演算ステージ〜第ｎ演算ステージというｎ段の演算ステージを有している。ただし、図９には、第１演算ステージ、第ｘ−１（１＜ｘ＜ｎ）演算ステージ、第ｘ演算ステージ、第ｘ＋１演算ステージおよび第ｎ演算ステージが図示されており、他の演算ステージの図示が省略されている。
【０１１７】
また、図９に示した命令デコーダ３２０11、命令デコーダ３２０12等の機能は、後述するように、図５に示した命令デコーダ３２０11、命令デコーダ３２０12等の機能とは異なる。図９においては、第１演算ステージにマルチプレクサ７００1 、マルチプレクサ８００1 、バイパスラインＢ11、バイパスラインＢ12が新たに設けられている。同様にして、図９においては、第ｘ−１演算ステージにマルチプレクサ７００x-1 、マルチプレクサ８００x-1 、バイパスラインＢx-11、バイパスラインＢx-12が新たに設けられている。また、図９においては、第ｘ＋１演算ステージに、図５に示したマルチプレクサ４００x+1 およびバイパスラインＢx+1 が設けられておらず、さらに第ｎ演算ステージに、図５に示したマルチプレクサ４００n およびバイパスラインＢn が設けられていない。
【０１１８】
図９において、第１演算ステージの命令デコーダ３２０11は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ11をデコードする。演算器１２０1 は、命令ＩＮＳＴ11がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）を用いて、命令ＩＮＳＴ11に対応する演算を行う。バイパスラインＢ11は、演算器１２０1 に対して並列的に設けられており、ステージラッチ回路１１０1 の値を、演算器１２０1 を経由させることなく、マルチプレクサ７００1 に導く役目をしている。
【０１１９】
マルチプレクサ７００1 は、命令デコーダ３２０11により切り替え制御される２入力１出力型の切替器であり、演算器１２０1 の演算結果、ステージラッチ回路１１０1 の値のうちいずれか一方を出力する。具体的には、マルチプレクサ７００1 は、命令デコーダ３２０11により命令ＩＮＳＴ11がデコードされたとき演算器１２０1 の演算結果を出力する。一方、マルチプレクサ７００1 は、命令ＩＮＳＴ11以外の命令が命令デコーダ３２０11に入力されたとき、ステージラッチ回路１１０1 の値を出力する。
【０１２０】
命令デコーダ３２０12は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ12をデコードする。演算器２２０1 は、命令ＩＮＳＴ12がデコードされたとき、ステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴ12に対応する演算を行う。バイパスラインＢ12は、演算器２２０1 に対して並列的に設けられており、ステージラッチ回路２１０1 の値を、演算器２２０1 を経由させることなく、マルチプレクサ８００1 に導く役目をしている。
【０１２１】
マルチプレクサ８００1 は、命令デコーダ３２０12により切り替え制御される２入力１出力型の切替器であり、演算器２２０1 の演算結果、ステージラッチ回路２１０1 の値のうちいずれか一方を出力する。具体的には、マルチプレクサ８００1 は、命令デコーダ３２０12により命令ＩＮＳＴ12がデコードされたとき演算器２２０1 の演算結果を出力する。一方、マルチプレクサ８００1 は、命令ＩＮＳＴ12以外の命令が命令デコーダ３２０12に入力されたとき、ステージラッチ回路２１０1 の値を出力する。ステージラッチ回路１１０2 、ステージラッチ回路２１０2 およびステージラッチ回路３１０2 は、マルチプレクサ７００1 、マルチプレクサ８００1 およびステージラッチ回路３１０1 の出力値をそれぞれ保持する。以下、第２演算ステージ（図示略）〜第ｘ−１演算ステージまでは、上述した第１演算ステージと同一構成とされている。
【０１２２】
すなわち、第ｘ−１演算ステージにおいて、命令デコーダ３２０x-11は、ステージラッチ回路３１０x-1 からの命令ＩＮＳＴx-11をデコードする。演算器１２０x-1 は、命令ＩＮＳＴx-11がデコードされたとき、ステージラッチ回路１１０x-1 の値を用いて、命令ＩＮＳＴx-11に対応する演算を行う。バイパスラインＢx-11は、演算器１２０x-1 を経由させることなく、ステージラッチ回路１１０x-1 の値をマルチプレクサ７００x-1 に導く役目をしている。
【０１２３】
マルチプレクサ７００x-1 は、命令デコーダ３２０x-11により切り替え制御され、命令デコーダ３２０x-11により命令ＩＮＳＴx-11がデコードされたとき演算器１２０x-1 の演算結果を出力する。一方、マルチプレクサ７００x-1 は、命令ＩＮＳＴx-11以外の命令が命令デコーダ３２０x-11に入力されたとき、ステージラッチ回路１１０x-1 の値を出力する。
【０１２４】
命令デコーダ３２０x-12は、ステージラッチ回路３１０x-1 からの命令ＩＮＳＴx-12をデコードする。演算器２２０x-1 は、命令ＩＮＳＴx-12がデコードされたとき、ステージラッチ回路２１０x-1 の値を用いて、命令ＩＮＳＴx-12に対応する演算を行う。バイパスラインＢx-12は、演算器２２０x-1 を経由させることなく、ステージラッチ回路２１０x-1 の値をマルチプレクサ８００x-1 に導く役目をしている。マルチプレクサ８００x-1 は、命令デコーダ３２０x-12により命令ＩＮＳＴx-12がデコードされたとき演算器２２０x-1 の演算結果を出力し、命令ＩＮＳＴx-12以外の命令が命令デコーダ３２０x-12に入力されたとき、ステージラッチ回路２１０x-1 の値を出力する。
【０１２５】
つぎの第ｘ演算ステージにおいて、ステージラッチ回路１１０x 、ステージラッチ回路２１０x 、およびステージラッチ回路３１０x は、マルチプレクサ７００x-1 の出力値、マルチプレクサ８００x-1 の出力値、およびステージラッチ回路３１０x-1 の値をそれぞれ保持する。命令デコーダ３２０x は、ステージラッチ回路３１０x からの命令ＩＮＳＴx をデコードする。上記演算器１２０x は、命令ＩＮＳＴx がデコードされたとき、ステージラッチ回路１１０x の値、およびステージラッチ回路２１０x の値を用いて、命令ＩＮＳＴx に対応する演算を行い演算結果をステージラッチ回路１１０x+1 へ出力する。また、命令デコーダ３２０x は、命令ＩＮＳＴx 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０x に対してデコードする。演算器１２０x は、スルー命令ＳＲＣ1 がデコードされた場合、ステージラッチ回路１１０x の値、ステージラッチ回路２１０x の値のうち、ステージラッチ回路１１０x の値のみをスルーさせる。
【０１２６】
つぎの第ｘ＋１演算ステージにおいて、ステージラッチ回路１１０x+1 は、ステージラッチ回路１１０x の値または演算器１２０x の演算結果を保持する。ステージラッチ回路３１０x+1 は、ステージラッチ回路３１０x の値を保持する。命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 からの命令ＩＮＳＴx+1 をデコードする。演算器１２０x+1 は、命令ＩＮＳＴx+1 がデコードされたとき、ステージラッチ回路１１０x+1 の値を用いて、命令ＩＮＳＴx+1 に対応する演算を行い演算結果をステージラッチ回路１１０x+2 へ出力する。また、命令デコーダ３２０x+1 は、命令ＩＮＳＴx+1 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０x+1 に対してデコードする。演算器１２０x+1 は、スルー命令ＳＲＣ1 がデコードされた場合、ステージラッチ回路１１０x+1 の値をスルーさせる。以下、第ｘ＋２演算ステージ（図示略）〜第ｎ演算ステージまでは、上述した第ｘ＋１演算ステージと同一構成とされている。
【０１２７】
すなわち、第ｎ演算ステージにおいて、ステージラッチ回路１１０n は、第ｎ−１演算ステージ（図示略）のステージラッチ回路の値または演算器の演算結果を保持する。ステージラッチ回路３１０n は、第ｎ−１演算ステージのステージラッチ回路の値を保持する。命令デコーダ３２０n は、ステージラッチ回路３１０n からの命令ＩＮＳＴn をデコードする。演算器１２０n は、命令ＩＮＳＴn がデコードされたとき、ステージラッチ回路１１０n の値を用いて、命令ＩＮＳＴn に対応する演算を行い演算結果をステージラッチ回路１１０n+1 へ出力する。また、命令デコーダ３２０n は、命令ＩＮＳＴn 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０n に対してデコードする。演算器１２０n は、スルー命令ＳＲＣ1 がデコードされた場合、ステージラッチ回路１１０n の値をスルーさせる。演算結果用レジスタ５００は、ステージラッチ回路１１０n+1 の値、すなわち、パイプライン演算装置における演算結果（デスティネーション・オペランド）を保持する。
【０１２８】
また、実施の形態４において、第１演算ステージ〜第ｎ演算ステージまでのそれぞれの演算器は、実施の形態３と同様にして、互いに相関関係がない命令に基づいて演算をそれぞれ行う。つまり、相関関係がない場合には、それぞれの演算器における演算が単独で行われる。さらに、実施の形態４においては、第ｘ＋１演算ステージ〜第ｎ演算ステージでスルー命令ＳＲＣ1 がそれぞれデコードされることで、第ｘ演算ステージにおける演算器１２０x の演算結果がスルーされる。
【０１２９】
つぎに、上述した実施の形態４の動作について図１０〜図１２に示したフローチャートを参照しつつ説明する。はじめに、命令ＩＮＳＴx が発行された場合の動作について説明する。図１０に示したステップＳＤ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０１３０】
つぎのステップＳＤ２では、命令デコーダ３２０11および命令デコーダ３２０12  は、ステージラッチ回路３１０1 に命令ＩＮＳＴx が保持されているため、ステップＳＤ５へ進む。なお、ステージラッチ回路３１０1 に命令ＩＮＳＴ11および命令ＩＮＳＴ12が保持されている場合、命令デコーダ３２０11および命令デコーダ３２０12は、ステップＳＤ３へ進み、マルチプレクサ７００1 およびマルチプレクサ８００1 に演算器１２０1 および演算器２２０1 を選択させる。
【０１３１】
また、命令デコーダ３２０11および命令デコーダ３２０12は、命令ＩＮＳＴ11および命令ＩＮＳＴ12を演算器１２０1 および演算器２２０1 に対してそれぞれデコードする。これにより、演算器１２０1 および演算器２２０1 は、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴ11および命令ＩＮＳＴ12に応じた演算を行う。つぎのステップＳＤ４では、演算器１２０1 および演算器２２０1 の演算結果がステージラッチ回路１１０2 およびステージラッチ回路２１０2 にそれぞれ保持される。
【０１３２】
この場合、ステップＳＤ５では、命令デコーダ３２０11および命令デコーダ３２０12は、マルチプレクサ７００1 およびマルチプレクサ８００1 にステージラッチ回路１１０1 およびステージラッチ回路２１０1 を選択させる。ステップＳＤ６では、演算器１２０1 および演算器２２０1 が動作せず、ステップＳＤ７では、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）が、バイパスラインＢ11およびマルチプレクサ７００1 を介してステージラッチ回路１１０2 に保持される。同様にして、ステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）が、バイパスラインＢ12およびマルチプレクサ８００1 を介してステージラッチ回路２１０2 に保持される。
【０１３３】
以後、第２演算ステージ〜第ｘ−２演算ステージ（いずれも図示略）においては、第１演算ステージの場合と同様にして、マルチプレクサによりステージラッチ回路が選択されることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第２演算ステージ〜第ｘ−２演算ステージにおいては、命令ＩＮＳＴx がステージラッチ回路に順次保持される。
【０１３４】
そして、第ｘ−１演算ステージにおいて、ステップＳＤ８では、命令デコーダ３２０x-11および命令デコーダ３２０x-12  は、ステージラッチ回路３１０x-1 に命令ＩＮＳＴx が保持されているため、ステップＳＤ１１へ進む。なお、ステージラッチ回路３１０x-1 に命令ＩＮＳＴx-11および命令ＩＮＳＴx-12が保持されている場合、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、ステップＳＤ９へ進み、マルチプレクサ７００x-1 およびマルチプレクサ８００x-1 に演算器１２０x-1 および演算器２２０x-1 を選択させる。
【０１３５】
また、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、命令ＩＮＳＴx-11および命令ＩＮＳＴx-12を演算器１２０x-1 および演算器２２０x-1 に対してそれぞれデコードする。これにより、演算器１２０x-1 および演算器２２０x-1 は、ステージラッチ回路１１０x-1 の値およびステージラッチ回路２１０x-1 の値を用いて、命令ＩＮＳＴx-11および命令ＩＮＳＴx-12に応じた演算を行う。つぎのステップＳＤ１０では、演算器１２０x-1 および演算器２２０x-1 の演算結果がステージラッチ回路１１０x およびステージラッチ回路２１０x にそれぞれ保持される。
【０１３６】
この場合、ステップＳＤ１１では、命令デコーダ３２０x-11および命令デコーダ３２０x-12は、マルチプレクサ７００x-1 およびマルチプレクサ８００x-1 にステージラッチ回路１１０x-1 およびステージラッチ回路２１０x-1 を選択させる。ステップＳＤ１２では、演算器１２０x-1 および演算器２２０x-1 が動作せず、ステップＳＤ１３では、ステージラッチ回路１１０x-1 の値（第１被演算データＳＯＵＲＣＥ1 ）が、バイパスラインＢx-11およびマルチプレクサ７００x-1 を介してステージラッチ回路１１０x に保持される。同様にして、ステージラッチ回路２１０x-1 の値（第２被演算データＳＯＵＲＣＥ2 ）が、バイパスラインＢx-12およびマルチプレクサ８００x-1 を介してステージラッチ回路１１０x に保持される。このとき、ステージラッチ回路３１０x-1 の値がステージラッチ回路３１０x に保持される。
【０１３７】
つぎの第ｘ演算ステージにおいて、ステップＳＤ１４（図１１参照）では、命令デコーダ３２０x は、ステージラッチ回路３１０x に命令ＩＮＳＴx が保持されているため、ステップＳＤ１５へ進む。なお、ステージラッチ回路３１０x に命令ＩＮＳＴx 以外の命令が保持されている場合、命令デコーダ３２０x は、ステップＳＤ１７へ進み、命令ＩＮＳＴx 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＤ１８へ進む。ステップＳＤ１８では、命令デコーダ３２０x は、演算器１２０x に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０x は、ステージラッチ回路１１０x の値をスルーで通過させる。つぎのステップＳＤ１９では、ステージラッチ回路１１０x の値がステージラッチ回路１１０x+1 に保持される。
【０１３８】
この場合、ステップＳＤ１５では、命令デコーダ３２０x は、命令ＩＮＳＴx を演算器１２０x に対してデコードする。これにより、演算器１２０x はステージラッチ回路１１０x の値（第１被演算データＳＯＵＲＣＥ1 ）、およびステージラッチ回路２１０x の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴx に応じた演算を行う。これにより、ステップＳＤ１６では、演算器１２０x の演算結果がステージラッチ回路１１０x+1 に保持される。このとき、ステージラッチ回路３１０x の値（命令ＩＮＳＴx ）がステージラッチ回路３１０x+1 に保持される。
【０１３９】
つぎの第ｘ＋１演算ステージにおいて、ステップＳＤ２０では、命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 に命令ＩＮＳＴx が保持されているため、ステップＳＤ２３へ進む。なお、ステージラッチ回路３１０x+1 に命令ＩＮＳＴx+1 が保持されている場合、命令デコーダ３２０x+1 は、ステップＳＤ２１へ進み、演算器１２０x+1 に対して命令ＩＮＳＴx+1 をデコードする。これにより、演算器１２０x+1 は、ステージラッチ回路１１０x+1 の値を用いて、命令ＩＮＳＴx+1 に応じた演算を行う。つぎのステップＳＤ２２では、演算器１２０x+1 の演算結果がステージラッチ回路１１０x+2 に保持される。
【０１４０】
この場合、ステップＳＤ２３では、命令デコーダ３２０x+1 は、ＩＮＳＴx+1 以外の命令（命令ＩＮＳＴx ）をスルー命令ＳＲＣ1 に変換した後、ステップＳＤ２４へ進む。ステップＳＤ２４では、演算器１２０x+1 に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０x+1 は、ステージラッチ回路１１０x+1 の値（演算器１２０x の演算結果）をスルーで通過させる。つぎのステップＳＤ２５では、ステージラッチ回路１１０x+1 の値がステージラッチ回路１１０x+2 に保持される。このとき、ステージラッチ回路３１０x+1 の値がステージラッチ回路３１０x+2 に保持される。以後、第ｘ＋２演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、第ｘ＋１演算ステージの場合と同様にして、スルー命令ＳＲＣ1 がデコードされることで、演算器１２０x の演算結果がそれぞれの演算ステージをスルーで順次通過する。また、第ｘ＋２演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴx がステージラッチ回路に順次保持される。
【０１４１】
そして、第ｎ演算ステージにおいて、ステップＳＤ２６（図１２参照）では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴx が保持されているため、ステップＳＤ２９へ進む。なお、ステージラッチ回路３１０n に命令ＩＮＳＴn が保持されている場合、命令デコーダ３２０n は、ステップＳＤ２７へ進み、演算器１２０n に対して命令ＩＮＳＴn をデコードする。これにより、演算器１２０n は、ステージラッチ回路１１０n の値を用いて、命令ＩＮＳＴn に応じた演算を行う。つぎのステップＳＤ２８では、演算器１２０n の演算結果がステージラッチ回路１１０n+1 に保持される。
【０１４２】
この場合、ステップＳＤ２９では、命令デコーダ３２０n は、ＩＮＳＴn 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＤ３０へ進む。ステップＳＤ３０では、命令デコーダ３２０n は、演算器１２０n に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０n は、ステージラッチ回路１１０n の値（演算器１２０x の演算結果）をスルーで通過させる。つぎのステップＳＤ３１では、ステージラッチ回路１１０n の値がステージラッチ回路１１０n+1 に保持される。つぎのステップＳＤ３２では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０x の演算結果が保持される。
【０１４３】
つぎに第ｘ＋１演算ステージの演算器１２０x+1 に対して命令ＩＮＳＴx+1 が発行された場合の動作について説明する。図１０に示したステップＳＤ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx+1 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx+1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０１４４】
以後、第１演算ステージ〜第ｘ−１演算ステージにおいては、前述した動作（ステップＳＤ２、ステップＳＤ５〜ステップＳＤ８、ステップＳＤ１１〜ステップＳＤ１３）と同様にして、マルチプレクサにおいてステージラッチ回路が選択されることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第１演算ステージ〜第ｘ−１演算ステージにおいては、命令ＩＮＳＴx+1 がステージラッチ回路に順次保持される。これにより、第ｘ演算ステージにおいて、ステージラッチ回路１１０x 、ステージラッチ回路２１０x およびステージラッチ回路３１０x には、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴx+1 がそれぞれ保持されている。
【０１４５】
第ｘ演算ステージにおいて、ステップＳＤ１４（図１１参照）では、命令デコーダ３２０x は、ステージラッチ回路３１０x に命令ＩＮＳＴx+1 が保持されているため、ステップＳＤ１７へ進む。ステップＳＤ１７では、命令デコーダ３２０x は、命令ＩＮＳＴx+1 をスルー命令ＳＲＣ1 に変換した後、ステップＳＤ１８へ進む。ステップＳＤ１８では、命令デコーダ３２０x は、演算器１２０x に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０x は、ステージラッチ回路１１０x の値をスルーで通過させる。つぎのステップＳＤ１９では、ステージラッチ回路１１０x の値がステージラッチ回路１１０x+1 に保持される。
【０１４６】
つぎの第ｘ＋１演算ステージにおいて、ステップＳＤ２０では、命令デコーダ３２０x+1 は、ステージラッチ回路３１０x+1 に命令ＩＮＳＴx+1 が保持されているため、ステップＳＤ２１へ進み、演算器１２０x+1 に対して命令ＩＮＳＴx+1 をデコードする。これにより、演算器１２０x+1 は、ステージラッチ回路１１０x+1 の値を用いて、命令ＩＮＳＴx+1 に応じた演算を行う。つぎのステップＳＤ２２では、演算器１２０x+1 の演算結果がステージラッチ回路１１０x+2 に保持される。
【０１４７】
そして、第ｎ演算ステージにおいて、ステップＳＤ２６（図１２参照）では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴx+1 が保持されているため、ステップＳＤ２９へ進む。ステップＳＤ２９では、命令デコーダ３２０n は、命令ＩＮＳＴx+1 をスルー命令ＳＲＣ1 に変換した後、ステップＳＤ３０へ進む。ステップＳＤ３０では、命令デコーダ３２０n は、演算器１２０n に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０n は、ステージラッチ回路１１０n の値（演算器１２０x+1 の演算結果）をスルーで通過させる。つぎのステップＳＤ３１では、ステージラッチ回路１１０n の値がステージラッチ回路１１０n+1 に保持される。つぎのステップＳＤ３２では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０x+1 の演算結果が保持される。
【０１４８】
以上説明したように、実施の形態４によれば、第ｘ演算ステージにおける演算実行時に、第ｘ＋１演算ステージ〜第ｎ演算ステージにおいてスルー命令ＳＲＣ1 をそれぞれデコードすることで第ｘ演算ステージにおける演算器１２０x の演算結果をスルーさせるようにしたので、第ｘ＋１演算ステージ〜第ｎ演算ステージにおけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減する。
【０１４９】
（実施の形態５）
さて、前述した実施の形態１においては、図１に示した第１演算ステージの演算器１２０1 と、第２演算ステージの演算器１２０2 とが、互いに相関関係がない命令（命令ＩＮＳＴ1 、命令ＩＮＳＴ2 ）に基づいて演算をそれぞれ行う場合について説明したが、相関関係がある命令に基づいて演算を行う複数の演算器を備えるようにしてもよい。ここで、相関関係がある命令とは、演算器１２０1 および演算器１２０2 の双方に対して発行される命令であって、演算器１２０1 の演算結果を用いて、演算器１２０2 において演算を行わせるための命令をいう。以下においては、この場合を実施の形態５として詳述する。
【０１５０】
図１３は、本発明にかかる実施の形態５の構成を示すブロック図である。この図において、図１の各部にそれぞれ対応する部分には同一の符号を付け、その説明を省略する。ただし、図１３に示した第１演算ステージの命令デコーダ３２０1 および演算器１２０1 、第２演算ステージの命令デコーダ３２０2 および演算器１２０2 のそれぞれの機能は、これらに対応する図１に示したものの機能と異なる。
【０１５１】
すなわち、図１３に示した第１演算ステージにおいて、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ12をデコードする。ここで命令ＩＮＳＴ12は、演算器１２０1 および演算器１２０2 の双方に対して発行される命令であって、演算器１２０1 の演算結果を用いて、演算器１２０2 において演算を行わせるための命令である。つまり、命令ＩＮＳＴ12は、演算器１２０1 と演算器１２０2 との間で、演算に関して相関関係を持たせるための命令である。また、演算器１２０1 は、命令ＩＮＳＴ12がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ12に対応する演算を行い演算結果をステージラッチ回路１１０2 へ出力する。
【０１５２】
また、命令デコーダ３２０1 は、命令ＩＮＳＴ12以外の命令（この場合、命令ＩＮＳＴ2 ）が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０1 に対してデコードする。演算器１２０1 は、上記スルー命令ＳＲＣ1 がデコードされた場合、二つの被演算データ（第１被演算データＳＯＵＲＣＥ1 、第２被演算データ）のうち、第１被演算データＳＯＵＲＣＥ1 のみをスルーさせる。
【０１５３】
第２演算ステージにおいて、命令デコーダ３２０2 は、上述した命令ＩＮＳＴ12に加えて、命令ＩＮＳＴ2 のデコードも行う。すなわち、命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの上述した命令ＩＮＳＴ12をデコードする。演算器１２０2 は、命令ＩＮＳＴ12がデコードされたとき、ステージラッチ回路１１０2 の値（演算器１２０1 の演算結果）を用いて、命令ＩＮＳＴ12に対応する演算を行い演算結果を出力する。
【０１５４】
また、命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ2 をデコードする。ここで、命令ＩＮＳＴ2 は、演算器１２０1 とは独立して演算器１２０2 において演算を行わせるための命令である。演算器１２０2 は、命令ＩＮＳＴ2 がデコードされたとき、ステージラッチ回路１１０2 の値（第１被演算データＳＯＵＲＣＥ1 ）を用いて、命令ＩＮＳＴ2 に対応する演算を行い演算結果を出力する。
【０１５５】
マルチプレクサ４００2 は、命令デコーダ３２０2 により命令ＩＮＳＴ12または命令ＩＮＳＴ2 がデコードされたとき演算器１２０2 の演算結果を出力する。一方、マルチプレクサ４００2 は、命令ＩＮＳＴ12および命令ＩＮＳＴ2 以外の命令が命令デコーダ３２０2 に入力されたとき、ステージラッチ回路１１０2 の値を出力する。ステージラッチ回路１１０3 は、マルチプレクサ４００2 の切り替え状態に応じて、演算器１２０2 の演算結果またはステージラッチ回路１１０2 の値を保持する。演算結果用レジスタ５００は、ステージラッチ回路１１０3 の値、すなわち、パイプライン演算装置における演算結果（デスティネーション・オペランド）を保持する。
【０１５６】
つぎに、上述した実施の形態５の動作について図１４に示したフローチャートを参照しつつ説明する。はじめに、命令ＩＮＳＴ12が発行された場合の動作について説明する。図１４に示したステップＳＥ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ12がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ12がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０１５７】
つぎのステップＳＥ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に保持されている命令の種類を判断し、この場合、命令ＩＮＳＴ12が保持されているため、ステップＳＥ３へ進む。ステップＳＥ３では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ12をデコードする。これにより、演算器１２０1 はステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ12に応じた演算を行う。
【０１５８】
つぎのステップＳＥ４では、演算器１２０1 の演算結果がステージラッチ回路１１０2 に保持される。このとき、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ12）がステージラッチ回路３１０2 に保持される。つぎのステップＳＥ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に命令ＩＮＳＴ12が保持されているため、ステップＳＥ９へ進む。なお、ステージラッチ回路３１０2 に命令ＩＮＳＴ12および命令ＩＮＳＴ2 以外の命令が保持されている場合、命令デコーダ３２０2 は、ステップＳＥ１１へ進む。ステップＳＥ１１では、命令デコーダ３２０2 は、マルチプレクサ４００2 にステージラッチ回路１１０2 を選択させる。これにより、ステップＳＥ１２では、演算器１２０2 が動作せず、ステップＳＥ１３では、ステージラッチ回路１１０2 の値が、バイパスラインＢ2 およびマルチプレクサ４００2 を介してステージラッチ回路１１０3 に保持される。
【０１５９】
この場合、ステップＳＥ９では、命令デコーダ３２０2 は、マルチプレクサ４００2 に演算器１２０2 を選択させる。また、命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ12をデコードする。これにより、演算器１２０2 は、ステージラッチ回路１１０2 の値（演算器１２０1 の演算結果）を用いて、命令ＩＮＳＴ12に応じた演算を行う。つぎのステップＳＥ１０では、演算器１２０2 の演算結果がステージラッチ回路１１０3 に保持される。つぎのステップＳＥ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０2 の演算結果が保持される。
【０１６０】
つぎに、命令ＩＮＳＴ2 が発行された場合の動作について説明する。図１４に示したステップＳＥ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ2 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データおよび命令ＩＮＳＴ2 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０１６１】
つぎのステップＳＥ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に命令ＩＮＳＴ2 が保持されているため、ステップＳＥ５へ進む。ステップＳＥ５では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ2 ）を解読し、命令ＩＮＳＴ2 をスルー命令ＳＲＣ1 に変換した後、ステップＳＥ６へ進む。ステップＳＥ６では、命令デコーダ３２０1 は、演算器１２０1 に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０1 は、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）をスルーで通過させる。
【０１６２】
つぎのステップＳＥ７では、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）がステージラッチ回路１１０2 に保持される。このとき、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ2 ）がステージラッチ回路３１０2 に保持される。つぎのステップＳＥ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に命令ＩＮＳＴ2 が保持されているため、ステップＳＥ９へ進む。
【０１６３】
ステップＳＥ９では、命令デコーダ３２０2 は、マルチプレクサ４００2 に演算器１２０2 を選択させる。また、命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ2 をデコードする。これにより、演算器１２０2 は、ステージラッチ回路１１０2 の値（第１被演算データＳＯＵＲＣＥ1 ）を用いて、命令ＩＮＳＴ2 に応じた演算を行う。つぎのステップＳＥ１０では、演算器１２０2 の演算結果がステージラッチ回路１１０3 に保持される。つぎのステップＳＥ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０2 の演算結果が保持される。
【０１６４】
以上説明したように、実施の形態５によれば、命令デコーダ３２０1 において命令ＩＮＳＴ12および命令ＩＮＳＴ２ 以外の命令をスルー命令ＳＲＣ1 に変換し、演算器１２０1 で第１被演算データＳＯＵＲＣＥ1 をスルーさせるとともに、第２演算ステージにバイパスラインＢ2 を設けたので、演算器１２０1 と演算器１２０2 との間でステージラッチ回路１１０2 の共有、および配線量の低減が可能となる。したがって、実施の形態５によれば、ステージラッチ回路１１０2 の共有化により、ハードウェア量および消費電力が低減する。また、実施の形態５によれば、第２演算ステージの演算器１２０2 において、第１演算ステージの演算器１２０1 とは独立して演算を行うことができる。
【０１６５】
（実施の形態６）
さて、前述した実施の形態２においては、図３に示した第１演算ステージの演算器１２０1 と、第２演算ステージの演算器１２０2 とが、互いに相関関係がない命令（命令ＩＮＳＴ1 、命令ＩＮＳＴ2 ）に基づいて演算をそれぞれ行う場合について説明したが、実施の形態５と同様にして、相関関係がある命令に基づいて演算を行う複数の演算器を備えるようにしてもよい。以下においては、この場合を実施の形態６として詳述する。
【０１６６】
図１５は、本発明にかかる実施の形態６の構成を示すブロック図である。この図において、図３の各部にそれぞれ対応する部分には同一の符号を付け、その説明を省略する。ただし、図１５に示した第１演算ステージの命令デコーダ３２０1 および演算器１２０1 、第２演算ステージの命令デコーダ３２０2 および演算器１２０2 のそれぞれの機能は、これらに対応する図３に示したものの機能と異なる。
【０１６７】
すなわち、図１５に示した第１演算ステージにおいて、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの命令ＩＮＳＴ12をデコードする。ここで命令ＩＮＳＴ12は、演算器１２０1 および演算器１２０2 の双方に対して発行される命令であって、演算器１２０1 の演算結果を用いて、演算器１２０2 において演算を行わせるための命令である。つまり、命令ＩＮＳＴ12は、演算器１２０1 と演算器１２０2 との間で、演算に関して相関関係を持たせるための命令である。演算器１２０1 は、命令ＩＮＳＴ12がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データ）、およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ12に対応する演算を行い演算結果ＲＥＳＵＬＴ1 をステージラッチ回路１１０2 へ出力する。
【０１６８】
また、命令デコーダ３２０1 は、上述した命令ＩＮＳＴ12に加えて、命令ＩＮＳＴ1 のデコードも行う。ここで、命令ＩＮＳＴ1 は、演算器１２０2 とは独立して演算器１２０1 において演算を行わせるための命令である。すなわち、命令デコーダ３２０1 は、ステージラッチ回路３１０1 からの上述した命令ＩＮＳＴ1 をデコードする。演算器１２０1 は、命令ＩＮＳＴ1 がデコードされたとき、ステージラッチ回路１１０1 の値（第１被演算データ）、およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ1 に対応する演算を行い演算結果ＲＥＳＵＬＴ1 を出力する。
【０１６９】
マルチプレクサ４００1 は、命令デコーダ３２０1 により切り替え制御され、命令デコーダ３２０1 により命令ＩＮＳＴ12または命令ＩＮＳＴ1 がデコードされたとき演算器１２０1 の演算結果ＲＥＳＵＬＴ1 を出力する。一方、マルチプレクサ４００1 は、命令ＩＮＳＴ12および命令ＩＮＳＴ1 以外の命令が命令デコーダ３２０1 に入力されたとき、ステージラッチ回路１１０1 の値を出力する。
【０１７０】
第２演算ステージにおいて、命令デコーダ３２０2 は、ステージラッチ回路３１０2 からの命令ＩＮＳＴ12をデコードする。演算器１２０2 は、命令ＩＮＳＴ12がデコードされたとき、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）を用いて、命令ＩＮＳＴ12に対応する演算を行い演算結果をステージラッチ回路１１０3 へ出力する。
【０１７１】
また、命令デコーダ３２０2 は、命令ＩＮＳＴ12以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０2 に対してデコードする。演算器１２０2 は、上記スルー命令ＳＲＣ1 がデコードされた場合、ステージラッチ回路１１０2 の値をスルーさせる。
【０１７２】
つぎに、上述した実施の形態５の動作について図１６に示したフローチャートを参照しつつ説明する。はじめに、命令ＩＮＳＴ12が発行された場合の動作について説明する。図１６に示したステップＳＦ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データ、第２被演算データおよび命令ＩＮＳＴ12がそれぞれ保持される。これにより、上記第１被演算データ、第２被演算データおよび命令ＩＮＳＴ12がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０１７３】
つぎのステップＳＦ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に保持された命令の種類を判断し、この場合、ステージラッチ回路３１０1 に命令ＩＮＳＴ12が保持されているため、ステップＳＦ３へ進む。なお、ステージラッチ回路３１０1 に命令ＩＮＳＴ12および命令ＩＮＳＴ1 以外の命令が保持されている場合、命令デコーダ３２０1 は、ステップＳＦ５へ進む。ステップＳＦ５では、命令デコーダ３２０1 は、マルチプレクサ４００1 にステージラッチ回路１１０1 を選択させる。ステップＳＦ６では、演算器１２０1 が動作せず、ステップＳＦ７では、ステージラッチ回路１１０1 の値（第１被演算データ）が、バイパスラインＢ1 およびマルチプレクサ４００1 を介してステージラッチ回路１１０2 に保持される。
【０１７４】
この場合、ステップＳＦ３では、命令デコーダ３２０1 は、マルチプレクサ４００1 に演算器１２０1 を選択させる。また、命令デコーダ３２０1 は、命令ＩＮＳＴ12を演算器１２０1 に対してデコードする。これにより、演算器１２０1 は、ステージラッチ回路１１０1 の値（第１被演算データ）、およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ12に応じた演算を行う。つぎのステップＳＦ４では、演算器１２０1 の演算結果ＲＥＳＵＬＴ1 がマルチプレクサ４００1 を介して、ステージラッチ回路１１０2 に保持される。これに並行して、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ12）がステージラッチ回路３１０2 に保持される。
【０１７５】
つぎのステップＳＦ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に保持された命令の種類を判断し、この場合、ステージラッチ回路３１０2 に命令ＩＮＳＴ12が保持されているため、ステップＳＦ９へ進む。ステップＳＦ９では、命令デコーダ３２０2 は、演算器１２０2 に対して命令ＩＮＳＴ12をデコードする。演算器１２０2 は、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）を用いて、命令ＩＮＳＴ12に応じた演算を実行する。つぎのステップＳＦ１０では、演算器１２０2 の演算結果がステージラッチ回路１１０3 に保持され、ステップＳＦ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０2 の演算結果が保持される。
【０１７６】
つぎに、命令ＩＮＳＴ1 が発行された場合の動作について説明する。図１６に示したステップＳＦ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データ、第２被演算データおよび命令ＩＮＳＴ1 がそれぞれ保持される。これにより、上記第１被演算データ、第２被演算データおよび命令ＩＮＳＴ1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０１７７】
つぎのステップＳＦ２では、命令デコーダ３２０1 は、ステージラッチ回路３１０1 に命令ＩＮＳＴ1 が保持されているため、ステップＳＦ３へ進み、マルチプレクサ４００1 に演算器１２０1 を選択させる。また、命令デコーダ３２０1 は、命令ＩＮＳＴ1 を演算器１２０1 に対してデコードする。これにより、演算器１２０1 は、ステージラッチ回路１１０1 の値（第１被演算データ）、およびステージラッチ回路２１０1 の値（第２被演算データ）を用いて、命令ＩＮＳＴ1 に応じた演算を行う。つぎのステップＳＦ４では、演算器１２０1 の演算結果ＲＥＳＵＬＴ1 がマルチプレクサ４００1 を介して、ステージラッチ回路１１０2 に保持される。これに並行して、ステージラッチ回路３１０1 の値（命令ＩＮＳＴ1 ）がステージラッチ回路３１０2 に保持される。
【０１７８】
つぎのステップＳＦ８では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 に命令ＩＮＳＴ1 が保持されているため、ステップＳＦ１１へ進む。ステップＳＦ１１では、命令デコーダ３２０2 は、ステージラッチ回路３１０2 の値（命令ＩＮＳＴ1 ）を解読し、命令ＩＮＳＴ1 をスルー命令ＳＲＣ1 に変換した後、ステップＳＦ１２へ進む。ステップＳＦ１２では、命令デコーダ３２０2 は、演算器１２０2 に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０2 は、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）をスルーで通過させる。つぎのステップＳＦ１３では、ステージラッチ回路１１０2 の値（演算結果ＲＥＳＵＬＴ1 ）がステージラッチ回路１１０3 に保持される。つぎのステップＳＦ１４では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０1 の演算結果ＲＥＳＵＬＴ1 が保持される。
【０１７９】
以上説明したように、実施の形態６によれば、第１演算ステージにマルチプレクサ４００1 を設けて、ステージラッチ回路１１０1 の値または演算器１２０1 の演算結果のいずれかをステージラッチ回路１１０2 に保持させるとともに、命令デコーダ３２０2 において命令ＩＮＳＴ12以外の命令をスルー命令ＳＲＣ1 に変換し、演算器１２０2 で演算器１２０1 の演算結果ＲＥＳＵＬＴ1 をスルーさせるようにしたので、演算器１２０2 の下流のステージラッチ回路および配線量の低減が可能となる。したがって、実施の形態６によれば、ハードウェア量および消費電力が低減する。また、実施の形態６によれば、第１演算ステージの演算器１２０1 において、第２演算ステージの演算器１２０2 とは独立して演算を行うことができる。
【０１８０】
（実施の形態７）
さて、前述した実施の形態３において、図５に示した第１演算ステージ〜第ｎ演算ステージでは、互いに相関関係がない命令に基づいて演算をそれぞれ行う場合について説明したが、相関関係がある命令に基づいて演算を行う複数の演算器を備えるようにしてもよい。以下においては、この場合を実施の形態７として詳述する。
【０１８１】
図１７および図１８は、本発明にかかる実施の形態７の構成を示すブロック図である。この図において、図５の各部にそれぞれ対応する部分には同一の符号を付け、その説明を省略する。図１７においては、図５に示した第ｘ−１演算ステージ〜第ｘ＋１演算ステージに代えて、第ｒ−１演算ステージ、第ｒ演算ステージ、第ｒ＋１演算ステージおよび第ｓ演算ステージ（ただし、１＜ｒ＜ｓ＜ｎ）がそれぞれ図示されている。図１７に示した第ｒ−１演算ステージ、第ｒ演算ステージおよび第ｒ＋１演算ステージ（第ｓ演算ステージ）のそれぞれの構成は、図５に示した第ｘ−１演算ステージ、第ｘ演算ステージおよび第ｘ＋１演算ステージのそれぞれの構成と同様である。ただし、図１７に示した第ｒ−１演算ステージ、第ｒ演算ステージおよび第ｒ＋１演算ステージにおける命令デコーダの機能が、図５に示した命令デコーダの機能と異なる。
【０１８２】
すなわち、図１７に示した第ｒ−１演算ステージにおいて、ステージラッチ回路１１０r-1 は、第１被演算データＳＯＵＲＣＥ1 または第ｒ−２演算ステージ（図示略）の演算器の演算結果を保持する。ステージラッチ回路２１０r-1 は、第２被演算データＳＯＵＲＣＥ2 または第ｒ−２演算ステージ（図示略）の演算器の演算結果を保持する。ステージラッチ回路３１０r-1 は、第ｒ−２演算ステージ（図示略）におけるステージラッチ回路の値を保持する。命令デコーダ３２０r-11は、ステージラッチ回路３１０r-1 からの命令ＩＮＳＴr-11をデコードする。
【０１８３】
上記演算器１２０r-1 は、命令ＩＮＳＴr-11がデコードされたとき、ステージラッチ回路１１０r-1 の値を用いて、命令ＩＮＳＴr-11に対応する演算を行い演算結果をステージラッチ回路１１０r へ出力する。また、命令デコーダ３２０r-11は、命令ＩＮＳＴr-11以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０r-1 に対してデコードする。演算器１２０r-1 は、スルー命令ＳＲＣ1 がデコードされた場合、ステージラッチ回路１１０r-1 の値をスルーさせる。
【０１８４】
命令デコーダ３２０r-12は、ステージラッチ回路３１０r-1 からの命令ＩＮＳＴr-12をデコードする。この演算器２２０r-1 は、命令ＩＮＳＴr-12がデコードされたとき、ステージラッチ回路２１０r-1 の値を用いて、命令ＩＮＳＴr-12に対応する演算を行い演算結果をステージラッチ回路２１０r へ出力する。また、命令デコーダ３２０r-12は、命令ＩＮＳＴr-12以外の命令が入力された場合、これをスルー命令ＳＲＣ2 に変換し、このスルー命令ＳＲＣ2 を演算器２２０r-1 に対してデコードする。演算器２２０r-1 は、上記スルー命令ＳＲＣ2 がデコードされた場合、ステージラッチ回路２１０r-1 の値をスルーさせる。
【０１８５】
第ｒ演算ステージにおいて、ステージラッチ回路１１０r は、第１被演算データＳＯＵＲＣＥ1 または第ｒ−１演算ステージにおける演算器１２０r-1 の演算結果を保持する。ステージラッチ回路２１０r は、第２被演算データＳＯＵＲＣＥ2 または第ｒ−１演算ステージにおける演算器２２０r-1の演算結果を保持する。ステージラッチ回路３１０r は、ステージラッチ回路３１０r-1 の値を保持する。
【０１８６】
命令デコーダ３２０r は、ステージラッチ回路３１０r からの命令ＩＮＳＴrsをデコードする。ここで命令ＩＮＳＴrsは、第ｒ演算ステージ〜第ｓ演算ステージ（図１８参照）における演算器１２０r 〜演算器１２０s に対して発行される命令であって、演算器１２０r 〜演算器１２０s における演算に関して相関関係を持たせるための命令である。ここで、第ｒ演算ステージ〜第ｓ演算ステージの段数は、ｍ（ｓ−ｒ＋１）段である。
【０１８７】
すなわち、命令ＩＮＳＴrsは、図１７および図１８に示したｎ段（第１演算ステージ〜第ｎ演算ステージ）の演算ステージのうち、ｍ段（第ｒ演算ステージ〜第ｓ演算ステージ）の演算ステージ間において演算に関して相関関係を持たせるための命令である。演算器１２０r は、命令ＩＮＳＴrsがデコードされたとき、ステージラッチ回路１１０r の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０r の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴrsに対応する演算を行い演算結果をステージラッチ回路１１０r+1 へ出力する。
【０１８８】
また、命令デコーダ３２０r は、ステージラッチ回路３１０r からの命令ＩＮＳＴr をデコードする。ここで、命令ＩＮＳＴr は、他の演算ステージにおける演算器とは独立して演算器１２０r において演算を行わせるための命令である。演算器１２０r は、命令ＩＮＳＴr がデコードされたとき、ステージラッチ回路１１０r の値を用いて、命令ＩＮＳＴr に対応する演算を行い演算結果を出力する。
【０１８９】
さらに、命令デコーダ３２０r は、命令ＩＮＳＴrsおよび命令ＩＮＳＴr 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０r に対してデコードする。演算器１２０r は、スルー命令ＳＲＣ1 がデコードされた場合、ステージラッチ回路１１０r の値、ステージラッチ回路２１０r の値のうち、ステージラッチ回路１１０r の値のみをスルーさせる。
【０１９０】
ここで、第ｒ＋１演算ステージ〜第ｓ演算ステージ〜第ｎ−１演算ステージ（図示略）のそれぞれの構成は、前述した図５に示した第ｘ＋１演算ステージの構成と同様である。ただし、図１７および図１８に示した命令デコーダ３２０r+1 〜命令デコーダ３２０s の機能は、後述するように、図５に示した命令デコーダ３２０x+1 の機能とは異なる。
【０１９１】
第ｒ＋１演算ステージにおいて、ステージラッチ回路１１０r+1 は、第１被演算データＳＯＵＲＣＥ1 または第ｒ演算ステージにおける演算器１２０r の演算結果を保持する。ステージラッチ回路３１０r+1 は、ステージラッチ回路３１０r の値を保持する。命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 からの上述した命令ＩＮＳＴrsをデコードする。演算器１２０r+1 は、命令ＩＮＳＴrsがデコードされたとき、ステージラッチ回路１１０r+1 の値（演算器１２０r の演算結果）を用いて、命令ＩＮＳＴrsに対応する演算を行い演算結果をマルチプレクサ４００r+1 へ出力する。
【０１９２】
また、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 からの命令ＩＮＳＴr+1 をデコードする。ここで、命令ＩＮＳＴr+1 は、他の演算ステージにおける演算器とは独立して演算器１２０r+1 において演算を行わせるための命令である。演算器１２０r+1 は、命令ＩＮＳＴr+1 がデコードされたとき、ステージラッチ回路１１０r+1 の値を用いて、命令ＩＮＳＴr+1 に対応する演算を行い演算結果を出力する。バイパスラインＢr+1 は、演算器１２０r+1 に対して並列的に設けられており、ステージラッチ回路１１０r+1 の値を、演算器１２０r+1 を経由させることなく、スルーでマルチプレクサ４００r+1 に導く役目をしている。
【０１９３】
マルチプレクサ４００r+1 は、命令デコーダ３２０r+1 により切り替え制御され、演算器１２０r+1 の演算結果、ステージラッチ回路１１０r+1 の値のうちいずれか一方を出力する。具体的には、マルチプレクサ４００r+1 は、命令デコーダ３２０r+1 により命令ＩＮＳＴrsまたは命令ＩＮＳＴr+1 がデコードされたとき演算器１２０r+1 の演算結果を出力する。一方、マルチプレクサ４００r+1 は、命令ＩＮＳＴrsおよび命令ＩＮＳＴr+1 以外の命令が命令デコーダ３２０r+1 に入力されたとき、ステージラッチ回路１１０r+1 の値を出力する。ステージラッチ回路１１０r+2 は、マルチプレクサ４００r+1 の切り替え状態に応じて、演算器１２０r+1 の演算結果またはステージラッチ回路１１０r+1 の値を保持する。ステージラッチ回路１１０r+2 およびステージラッチ回路３１０r+2 は、第ｒ＋１演算ステージと第ｒ＋２演算ステージ（図示略）との間にそれぞれ設けられており、マルチプレクサ４００r+1 の出力値、およびステージラッチ回路３１０r+1 の値をそれぞれ保持する。以下、第ｒ＋２演算ステージ〜第ｓ演算ステージまでは、上述した第ｒ＋１演算ステージと同一構成とされている。
【０１９４】
すなわち、図１８に示した第ｓ演算ステージにおいて、ステージラッチ回路１１０s は、第１被演算データＳＯＵＲＣＥ1 または第ｓ−１演算ステージ（図示略）における演算器の演算結果を保持する。ステージラッチ回路３１０s は、ステージラッチ回路３１０s-1 （図示略）の値を保持する。命令デコーダ３２０s は、ステージラッチ回路３１０s からの上述した命令ＩＮＳＴrsをデコードする。演算器１２０s は、命令ＩＮＳＴrsがデコードされたとき、ステージラッチ回路１１０s の値を用いて、命令ＩＮＳＴrsに対応する演算を行い演算結果をマルチプレクサ４００s へ出力する。
【０１９５】
また、命令デコーダ３２０s は、ステージラッチ回路３１０s からの命令ＩＮＳＴs をデコードする。ここで、命令ＩＮＳＴs は、他の演算ステージにおける演算器とは独立して演算器１２０s において演算を行わせるための命令である。演算器１２０s は、命令ＩＮＳＴs がデコードされたとき、ステージラッチ回路１１０s の値を用いて、命令ＩＮＳＴs に対応する演算を行い演算結果を出力する。バイパスラインＢs は、演算器１２０s に対して並列的に設けられており、ステージラッチ回路１１０s の値を、演算器１２０s を経由させることなく、スルーでマルチプレクサ４００s に導く役目をしている。
【０１９６】
マルチプレクサ４００s は、命令デコーダ３２０s により切り替え制御され、演算器１２０s の演算結果、ステージラッチ回路１１０s の値のうちいずれか一方を出力する。具体的には、マルチプレクサ４００s は、命令デコーダ３２０s により命令ＩＮＳＴrsまたは命令ＩＮＳＴs がデコードされたとき演算器１２０s の演算結果を出力する。一方、マルチプレクサ４００s は、命令ＩＮＳＴrsおよび命令ＩＮＳＴs 以外の命令が命令デコーダ３２０s に入力されたとき、ステージラッチ回路１１０s の値を出力する。ステージラッチ回路１１０s+1 は、マルチプレクサ４００s の切り替え状態に応じて、演算器１２０s の演算結果またはステージラッチ回路１１０s の値を保持する。ステージラッチ回路１１０s+1 、およびステージラッチ回路３１０s+1 は、第ｓ演算ステージと第ｓ＋１演算ステージ（図示略）との間にそれぞれ設けられており、マルチプレクサ４００s の出力値、およびステージラッチ回路３１０s の値をそれぞれ保持する。
【０１９７】
つぎに、上述した実施の形態７の動作について図１９〜図２１に示したフローチャートを参照しつつ説明する。はじめに、第ｒ演算ステージの演算器１２０r 〜第ｓ演算ステージの演算器１２０s に対して命令ＩＮＳＴrsが発行された場合の動作について説明する。図１９に示したステップＳＧ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴrsがそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴrsがステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 に保持される。
【０１９８】
つぎのステップＳＧ２では、命令デコーダ３２０11および命令デコーダ３２０12は、ステージラッチ回路３１０1 に命令ＩＮＳＴrsが保持されているため、ステップＳＧ５へ進む。なお、ステージラッチ回路３１０1 に命令ＩＮＳＴ11および命令ＩＮＳＴ12が保持されている場合、命令デコーダ３２０11および命令デコーダ３２０12は、ステップＳＧ３へ進む。この場合、ステップＳＧ３およびステップＳＧ４では、前述したステップＳＣ３およびステップＳＣ４（図６参照）の処理が行われる。
【０１９９】
この場合、ステップＳＧ５では、命令デコーダ３２０11および命令デコーダ３２０12は、命令ＩＮＳＴrsをスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 にそれぞれ変換した後、ステップＳＧ６へ進む。ステップＳＧ６では、命令デコーダ３２０11および命令デコーダ３２０12は、演算器１２０1 および演算器２２０1 に対してスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 をそれぞれデコードする。これにより、演算器１２０1 および演算器２２０1 は、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）をスルーでそれぞれ通過させる。
【０２００】
つぎのステップＳＧ７では、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）がステージラッチ回路１１０2 およびステージラッチ回路２１０2 にそれぞれ保持される。このとき、ステージラッチ回路３１０1 の値（命令ＩＮＳＴrs）がステージラッチ回路３１０2 に保持される。以後、第２演算ステージ〜第ｒ−２演算ステージ（いずれも図示略）においては、第１演算ステージの場合と同様にして、スルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がそれぞれデコードされることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第２演算ステージ〜第ｒ−２演算ステージにおいては、命令ＩＮＳＴrsがステージラッチ回路に順次保持される。
【０２０１】
そして、第ｒ−１演算ステージにおいて、ステップＳＧ８では、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、ステージラッチ回路３１０r-1 に命令ＩＮＳＴrsが保持されているため、ステップＳＧ１１へ進む。なお、ステージラッチ回路３１０r-1 に命令ＩＮＳＴr-11および命令ＩＮＳＴr-12が保持されている場合、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、ステップＳＧ９へ進み、命令ＩＮＳＴr-11  および命令ＩＮＳＴr-12を演算器１２０r-1 および演算器２２０r-1 に対してそれぞれデコードする。これにより、演算器１２０r-1 および演算器２２０r-1 はステージラッチ回路１１０r-1 の値およびステージラッチ回路２１０r-1 の値を用いて、命令ＩＮＳＴr-11および命令ＩＮＳＴr-12に応じた演算をそれぞれ行う。これにより、ステップＳＧ１０では、演算器１２０r-1 および演算器２２０r-1 の演算結果がステージラッチ回路１１０r およびステージラッチ回路２１０r に保持される。
【０２０２】
この場合、ステップＳＧ１１では、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、命令ＩＮＳＴrsをスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 にそれぞれ変換した後、ステップＳＧ１２へ進む。ステップＳＧ１２では、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、演算器１２０r-1 および演算器２２０r-1 に対してスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 をそれぞれデコードする。これにより、演算器１２０r-1 および演算器２２０r-1 は、ステージラッチ回路１１０r-1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０r-1 の値（第２被演算データＳＯＵＲＣＥ2 ）をスルーでそれぞれ通過させる。
【０２０３】
つぎのステップＳＧ１３では、ステージラッチ回路１１０r-1 の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０r-1 の値（第２被演算データＳＯＵＲＣＥ2 ）がステージラッチ回路１１０r およびステージラッチ回路２１０r にそれぞれ保持される。このとき、ステージラッチ回路３１０r-1 の値（命令ＩＮＳＴrs）がステージラッチ回路３１０r に保持される。
【０２０４】
つぎの第ｒ演算ステージにおいて、ステップＳＧ１４（図２０参照）では、命令デコーダ３２０r は、ステージラッチ回路３１０r に命令ＩＮＳＴrsが保持されているため、ステップＳＧ１５へ進む。なお、ステージラッチ回路３１０r に命令ＩＮＳＴrsおよび命令ＩＮＳＴr 以外の命令が保持されている場合、命令デコーダ３２０r は、ステップＳＧ１７へ進み、命令ＩＮＳＴrsおよびＩＮＳＴr 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＧ１８へ進む。ステップＳＧ１８では、命令デコーダ３２０r は、演算器１２０r に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０r は、ステージラッチ回路１１０r の値をスルーで通過させる。つぎのステップＳＧ１９では、ステージラッチ回路１１０r の値がステージラッチ回路１１０r+1 に保持される。
【０２０５】
この場合、ステップＳＧ１５では、命令デコーダ３２０r は、命令ＩＮＳＴrsを演算器１２０r に対してデコードする。これにより、演算器１２０r はステージラッチ回路１１０r の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０r の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴrsに応じた演算を行う。これにより、ステップＳＧ１６では、演算器１２０r の演算結果がステージラッチ回路１１０r+1 に保持される。このとき、ステージラッチ回路３１０r の値（命令ＩＮＳＴrs）がステージラッチ回路３１０r+1 に保持される。
【０２０６】
つぎの第ｒ＋１演算ステージにおいて、ステップＳＧ２０では、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 に命令ＩＮＳＴrsが保持されているため、ステップＳＧ２１へ進む。なお、ステージラッチ回路３１０r+1 に命令ＩＮＳＴrsおよび命令ＩＮＳＴr+1 以外の命令が保持されている場合、命令デコーダ３２０r+1 は、ステップＳＧ２３へ進み、マルチプレクサ４００r+1 にステージラッチ回路１１０r+1 を選択させる。これにより、ステップＳＧ２４では、演算器１２０r+1 が動作せず、ステップＳＧ２５では、ステージラッチ回路１１０r+1 の値が、バイパスラインＢr+1 およびマルチプレクサ４００r+1 を介してステージラッチ回路１１０r+2 に保持される。
【０２０７】
この場合、ステップＳＧ２１では、命令デコーダ３２０r+1 は、マルチプレクサ４００r+1 に演算器１２０r+1 を選択させる。また、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 の値を解読した後、命令ＩＮＳＴrsを演算器１２０r+1 に対してデコードする。これにより、演算器１２０r+1 は、ステージラッチ回路１１０r+1 の値を用いて、命令ＩＮＳＴrsに応じた演算を行う。つぎのステップＳＧ２２では、演算器１２０r+1 の演算結果がステージラッチ回路１１０r+2 に保持される。以後、第ｒ＋２演算ステージ〜第ｓ−１演算ステージ（いずれも図示略）においては、第ｒ＋１演算ステージの場合と同様にして、命令ＩＮＳＴrsがデコードされるとともに、マルチプレクサにより演算器が選択されることで、それぞれの演算ステージにおいて命令ＩＮＳＴrsに基づく演算が行われる。また、第ｒ＋２演算ステージ〜第ｓ−１演算ステージにおいては、命令ＩＮＳＴrsがステージラッチ回路に順次保持される。
【０２０８】
そして、図１８に示した第ｓ演算ステージにおいて、ステップＳＧ２６（図２１参照）では、命令デコーダ３２０s は、ステージラッチ回路３１０s に命令ＩＮＳＴrsが保持されているため、ステップＳＧ２７へ進む。なお、ステージラッチ回路３１０s に命令ＩＮＳＴrsおよび命令ＩＮＳＴs 以外の命令が保持されている場合、命令デコーダ３２０s は、ステップＳＧ２９へ進み、マルチプレクサ４００s にステージラッチ回路１１０s を選択させる。これにより、ステップＳＧ３０では、演算器１２０s が動作せず、ステップＳＧ３１では、ステージラッチ回路１１０s の値が、バイパスラインＢs およびマルチプレクサ４００s を介してステージラッチ回路１１０s+1 に保持される。
【０２０９】
この場合、ステップＳＧ２７では、命令デコーダ３２０s は、マルチプレクサ４００s に演算器１２０s を選択させる。また、命令デコーダ３２０s は、命令ＩＮＳＴrsを演算器１２０s に対してデコードする。これにより、演算器１２０s は、ステージラッチ回路１１０s の値（第ｓ−１演算ステージにおける演算器の演算結果）を用いて、命令ＩＮＳＴrs に応じた演算を行う。つぎのステップＳＧ２８では、演算器１２０s の演算結果がステージラッチ回路１１０s+1 に保持される。ここで、演算器１２０s の演算結果は、演算器１２０r 〜演算器１２０s におけるそれぞれの演算に基づくものである。以後、第ｓ＋２演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、マルチプレクサによりステージラッチ回路が選択されることで、演算器１２０s の演算結果がそれぞれの演算ステージにおいて順次スルーされる。また、第ｓ＋２演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴrsがステージラッチ回路に順次保持される。
【０２１０】
そして、第ｎ演算ステージにおいて、ステップＳＧ３２では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴrsが保持されているため、ステップＳＧ３５へ進む。なお、ステージラッチ回路３１０n に命令ＩＮＳＴn が保持されている場合、命令デコーダ３２０n は、ステップＳＧ３３へ進み、マルチプレクサ４００n に演算器１２０n を選択させるとともに、命令ＩＮＳＴn を演算器１２０n に対してデコードする。これにより、演算器１２０n は、ステージラッチ回路１１０n の値を用いて、命令ＩＮＳＴn に応じた演算を行う。つぎのステップＳＧ３４では、演算器１２０n の演算結果がステージラッチ回路１１０n+1 に保持される。
【０２１１】
この場合、ステップＳＧ３５では、命令デコーダ３２０n は、マルチプレクサ４００n にステージラッチ回路１１０n を選択させる。これにより、ステップＳＧ３６では、演算器１２０n が動作せず、ステップＳＧ３７では、ステージラッチ回路１１０n の値（演算器１２０s の演算結果）が、バイパスラインＢn およびマルチプレクサ４００n を介してステージラッチ回路１１０n+1 に保持される。つぎのステップＳＧ３８では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０s の演算結果が保持される。
【０２１２】
つぎに、図１７および図１８に示したｍ段（第ｒ演算ステージ〜第ｓ演算ステージ）の演算ステージの中に存在する一つの演算ステージ（以下、第ｘ演算ステージと称する）における演算器に対して、他の演算器とは独立に演算を実行させるための命令（以下、命令ＩＮＳＴx と称する）が発行された場合の動作について説明する。以下の説明においては、一例として、上記第ｘ演算ステージおよび命令ＩＮＳＴx を、図１７に示した第ｒ＋１演算ステージおよび命令ＩＮＳＴr+1 とした場合について説明する。図１９に示したステップＳＧ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴr+1 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴr+1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 に保持される。
【０２１３】
つぎのステップＳＧ２では、命令デコーダ３２０11および命令デコーダ３２０12は、ステージラッチ回路３１０1 に命令ＩＮＳＴr+1 が保持されているため、ステップＳＧ５へ進む。ステップＳＧ５〜ステップＳＧ７においては、前述と同様にして、スルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がそれぞれデコードされることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がステージラッチ回路１１０2 およびステージラッチ回路２１０2 にそれぞれ保持される。また、ステージラッチ回路３１０2 には、命令ＩＮＳＴr+1 が保持される。
【０２１４】
以後、第２演算ステージ〜第ｒ−２演算ステージ（いずれも図示略）においては、第１演算ステージの場合と同様にして、スルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がそれぞれデコードされることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第２演算ステージ〜第ｒ−２演算ステージにおいては、命令ＩＮＳＴr+1 がステージラッチ回路に順次保持される。
【０２１５】
そして、第ｒ−１演算ステージにおいて、ステップＳＧ８では、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、ステージラッチ回路３１０r-1 に命令ＩＮＳＴr+1 が保持されているため、ステップＳＧ１１へ進む。ステップＳＧ１１〜ステップＳＧ１３においては、前述と同様にして、スルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 がそれぞれデコードされることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がステージラッチ回路１１０r およびステージラッチ回路２１０r にそれぞれ保持される。また、ステージラッチ回路３１０r には、命令ＩＮＳＴr+1 が保持される。
【０２１６】
つぎの第ｒ演算ステージにおいて、ステップＳＧ１４（図２０参照）では、命令デコーダ３２０r は、ステージラッチ回路３１０r に命令ＩＮＳＴr+1 が保持されているため、ステップＳＧ１７へ進む。ステップＳＧ１７〜ステップＳＧ１９においては、前述と同様にして、スルー命令ＳＲＣ1 がデコードされることにより、第１被演算データＳＯＵＲＣＥ1 がステージラッチ回路１１０r+1 に保持される。このとき、ステージラッチ回路３１０r+1 には、命令ＩＮＳＴr+1 が保持される。
【０２１７】
つぎの第ｒ＋１演算ステージにおいて、ステップＳＧ２０では、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 に命令ＩＮＳＴr+1 が保持されているため、ステップＳＧ２１へ進む。ステップＳＧ２１では、命令デコーダ３２０r+1 は、マルチプレクサ４００r+1 に演算器１２０r+1 を選択させる。また、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 の値を解読した後、命令ＩＮＳＴr+1 を演算器１２０r+1 に対してデコードする。これにより、演算器１２０r+1 は、ステージラッチ回路１１０r+1 の値を用いて、命令ＩＮＳＴr+1 に応じた演算を行う。つぎのステップＳＧ２２では、演算器１２０r+1 の演算結果がステージラッチ回路１１０r+2 に保持される。以後、第ｒ＋２演算ステージ〜第ｓ−１演算ステージ（いずれも図示略）においては、マルチプレクサによりステージラッチ回路が選択されることで、それぞれの演算ステージにおいて第ｒ＋１演算ステージにおける演算器１２０r+1 の演算結果が順次スルーされる。また、第ｒ＋２演算ステージ〜第ｓ−１演算ステージにおいては、命令ＩＮＳＴr+1 がステージラッチ回路に順次保持される。
【０２１８】
そして、第ｓ演算ステージにおいて、ステップＳＧ２６（図２１参照）では、命令デコーダ３２０s は、ステージラッチ回路３１０s に命令ＩＮＳＴr+1 が保持されているため、ステップＳＧ２９へ進む。ステップＳＧ２９〜ステップＳＧ３１においては、前述と同様にしてマルチプレクサ４００s によりステージラッチ回路１１０s が選択されることで、第ｒ＋１演算ステージにおける演算器１２０r+1 の演算結果がステージラッチ回路１１０s+1 に保持される。以後、第ｓ＋１演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、マルチプレクサによりステージラッチ回路が選択されることで、第ｒ＋１演算ステージにおける演算器１２０r+1 の演算結果がそれぞれのステージにおいて順次スルーされる。また、第ｓ＋１演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴr+1 がステージラッチ回路に順次保持される。
【０２１９】
そして、第ｎ演算ステージにおいて、ステップＳＧ３２では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴr+1 が保持されているため、ステップＳＧ３５へ進む。ステップＳＧ３５〜ステップＳＧ３８においては、前述と同様にして、マルチプレクサ４００n によりステージラッチ回路１１０n が選択されることで、第ｒ＋１演算ステージにおける演算器１２０r+1 の演算結果が、演算結果用レジスタ５００に保持される。
【０２２０】
以上説明したように、実施の形態７によれば、第ｒ演算ステージ〜第ｓ演算ステージにおける演算実行時に、第１演算ステージ〜第ｒ−１演算ステージにおいてスルー命令ＳＲＣ1 およびスルー命令ＳＲＣ2 をそれぞれデコードすることで第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 をスルーさせるようにしたので、第１演算ステージ〜第ｒ−１演算ステージにおけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減する。また、実施の形態７によれば、第ｒ演算ステージ〜第ｓ演算ステージのうちいずれか一つの演算ステージにおける演算器の演算を、他の演算器とは独立させて行うことができる。
【０２２１】
なお、上述した実施の形態７においては、図１７および図１８に示したｍ段の第ｒ演算ステージ〜第ｓ演算ステージのうちいずれか一つの演算ステージの演算器で演算を単独実行するように構成した例について説明したが、特定の一つの演算ステージにおける演算器のみで演算を実行するようにしてもよい。また、実施の形態７においては、ｍ段の第ｒ演算ステージ〜第ｓ演算ステージのうち、第ｘ演算ステージ〜第ｘ＋ｐ（ｐ≦ｓ−ｒ）演算ステージのそれぞれの演算器で演算を単独実行するようにしてもよい。
【０２２２】
（実施の形態８）
さて、前述した実施の形態４において、図９に示した第１演算ステージ〜第ｎ演算ステージでは、互いに相関関係がない命令に基づいて演算をそれぞれ行う場合について説明したが、相関関係がある命令に基づいて演算を行う複数の演算器を備えるようにしてもよい。以下においては、この場合を実施の形態８として詳述する。
【０２２３】
図２２および図２３は、本発明にかかる実施の形態８の構成を示すブロック図である。この図において、図９の各部にそれぞれ対応する部分には同一の符号を付け、その説明を省略する。図２２および図２３においては、図９に示した第ｘ−１演算ステージ〜第ｘ＋１演算ステージに代えて、第ｒ−１演算ステージ、第ｒ演算ステージ、第ｒ＋１演算ステージおよび第ｓ演算ステージ（ただし、１＜ｒ＜ｓ＜ｎ）がそれぞれ図示されている。図２２および図２３に示した第ｒ−１演算ステージ、第ｒ演算ステージおよび第ｒ＋１演算ステージ（第ｓ演算ステージ）のそれぞれの構成は、図９に示した第ｘ−１演算ステージ、第ｘ演算ステージおよび第ｘ＋１演算ステージのそれぞれの構成と同様である。ただし、図２２および図２３に示した第ｒ−１演算ステージ、第ｒ演算ステージおよび第ｒ＋１演算ステージ（第ｓ演算ステージ）における命令デコーダの機能が、図９に示した命令デコーダの機能と異なる。
【０２２４】
すなわち、図２２に示した第ｒ−１演算ステージにおいて、ステージラッチ回路１１０r-1 は、第１被演算データＳＯＵＲＣＥ1 または第ｒ−２演算ステージ（図示略）の演算器の演算結果を保持する。ステージラッチ回路２１０r-1 は、第２被演算データＳＯＵＲＣＥ2 または第ｒ−２演算ステージ（図示略）の演算器の演算結果を保持する。ステージラッチ回路３１０r-1 は、第ｒ−２演算ステージ（図示略）におけるステージラッチ回路の値を保持する。命令デコーダ３２０r-11は、ステージラッチ回路３１０r-1 からの命令ＩＮＳＴr-11をデコードする。演算器１２０r-1 は、命令ＩＮＳＴr-11がデコードされたとき、ステージラッチ回路１１０r-1 の値を用いて、命令ＩＮＳＴr-11に対応する演算を行う。バイパスラインＢr-11は、演算器１２０r-1 を経由させることなく、ステージラッチ回路１１０r-1 の値をマルチプレクサ７００r-1 に導く役目をしている。
【０２２５】
マルチプレクサ７００r-1 は、命令デコーダ３２０r-11により切り替え制御され、命令デコーダ３２０r-11により命令ＩＮＳＴr-11がデコードされたとき演算器１２０r-1 の演算結果を出力する。一方、マルチプレクサ７００r-1 は、命令ＩＮＳＴr-11以外の命令が命令デコーダ３２０r-11に入力されたとき、ステージラッチ回路１１０r-1 の値を出力する。
【０２２６】
命令デコーダ３２０r-12は、ステージラッチ回路３１０r-1 からの命令ＩＮＳＴ12をデコードする。演算器２２０r-1 は、命令ＩＮＳＴr-12がデコードされたとき、ステージラッチ回路２１０r-1 の値を用いて、命令ＩＮＳＴr-12に対応する演算を行う。バイパスラインＢr-12は、演算器２２０r-1 を経由させることなく、ステージラッチ回路２１０r-1 の値をマルチプレクサ８００r-1 に導く役目をしている。マルチプレクサ８００r-1 は、命令デコーダ３２０r-12により命令ＩＮＳＴr-12がデコードされたとき演算器２２０r-1 の演算結果を出力し、命令ＩＮＳＴr-12以外の命令が命令デコーダ３２０r-12に入力されたとき、ステージラッチ回路２１０r-1 の値を出力する。
【０２２７】
つぎの第ｒ演算ステージにおいて、ステージラッチ回路１１０r 、ステージラッチ回路２１０r およびステージラッチ回路３１０r は、マルチプレクサ７００r-1 の出力値、マルチプレクサ８００r-1 の出力値およびステージラッチ回路３１０r-1 の値をそれぞれ保持する。命令デコーダ３２０r は、ステージラッチ回路３１０r からの命令ＩＮＳＴrsをデコードする。ここで命令ＩＮＳＴrsは、前述した実施の形態７と同様にして、第ｒ演算ステージ〜第ｓ演算ステージ（図２３参照）における演算器１２０r 〜演算器１２０s に対して発行される命令であって、演算器１２０r 〜演算器１２０s における演算に関して相関関係を持たせるための命令である。ここで、第ｒ演算ステージ〜第ｓ演算ステージの段数は、ｍ（ｓ−ｒ＋１）段である。
【０２２８】
すなわち、命令ＩＮＳＴrsは、ｎ段（第１演算ステージ〜第ｎ演算ステージ）の演算ステージのうち、ｍ段（第ｒ演算ステージ〜第ｓ演算ステージ）の演算ステージ間において演算に関して相関関係を持たせるための命令である。演算器１２０r は、命令ＩＮＳＴrsがデコードされたとき、ステージラッチ回路１１０r の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０r の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴrsに対応する演算を行い演算結果をステージラッチ回路１１０r+1 へ出力する。
【０２２９】
また、命令デコーダ３２０r は、ステージラッチ回路３１０r からの命令ＩＮＳＴr をデコードする。ここで、命令ＩＮＳＴr は、他の演算ステージにおける演算器とは独立して演算器１２０r において演算を行わせるための命令である。演算器１２０r は、命令ＩＮＳＴr がデコードされたとき、ステージラッチ回路１１０r の値を用いて、命令ＩＮＳＴr に対応する演算を行い演算結果を出力する。
【０２３０】
さらに、命令デコーダ３２０r は、命令ＩＮＳＴrsおよび命令ＩＮＳＴr 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０r に対してデコードする。演算器１２０r は、ステージラッチ回路１１０r の値、ステージラッチ回路２１０r の値のうち、ステージラッチ回路１１０r の値のみをスルーさせる。
【０２３１】
ここで、第ｒ＋１演算ステージ〜第ｓ演算ステージのそれぞれの構成は、前述した図９に示した第ｘ＋１演算ステージの構成と同様である。ただし、図２２および図２３に示した命令デコーダ３２０r+1 〜命令デコーダ３２０s の機能は、後述するように、図９に示した命令デコーダ３２０x+1 の機能とは異なる。
【０２３２】
第ｒ＋１演算ステージにおいて、ステージラッチ回路１１０r+1 は、ステージラッチ回路１１０r の値または演算器１２０r の演算結果を保持する。ステージラッチ回路３１０r+1 は、ステージラッチ回路３１０r の値を保持する。命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 からの命令ＩＮＳＴrsをデコードする。演算器１２０r+1 は、命令ＩＮＳＴrsがデコードされたとき、ステージラッチ回路１１０r+1 の値を用いて、命令ＩＮＳＴrsに対応する演算を行い演算結果をステージラッチ回路１１０r+2 へ出力する。
【０２３３】
また、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 からの命令ＩＮＳＴr+1 をデコードする。ここで、命令ＩＮＳＴr+1 は、他の演算ステージにおける演算器とは独立して演算器１２０r+1 において演算を行わせるための命令である。演算器１２０r+1 は、命令ＩＮＳＴr+1 がデコードされたとき、ステージラッチ回路１１０r+1 の値を用いて、命令ＩＮＳＴr+1 に対応する演算を行い演算結果を出力する。
【０２３４】
さらに、命令デコーダ３２０r+1 は、命令ＩＮＳＴrsおよび命令ＩＮＳＴr+1 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０r+1 に対してデコードする。演算器１２０r+1 は、ステージラッチ回路１１０r+1 の値をスルーさせる。以下、第ｒ＋２演算ステージ（図示略）〜第ｓ演算ステージまでは、上述した第ｒ＋１演算ステージと同一構成とされている。
【０２３５】
すなわち、図２３に示した第ｓ演算ステージにおいて、ステージラッチ回路１１０s は、第ｓ−１演算ステージ（図示略）におけるステージラッチ回路の値または演算器の演算結果を保持する。命令デコーダ３２０s は、ステージラッチ回路３１０s からの命令ＩＮＳＴrsをデコードする。演算器１２０s は、命令ＩＮＳＴrsがデコードされたとき、ステージラッチ回路１１０s の値を用いて、命令ＩＮＳＴrsに対応する演算を行い演算結果をステージラッチ回路１１０s+1  へ出力する。
【０２３６】
また、命令デコーダ３２０s は、ステージラッチ回路３１０s からの命令ＩＮＳＴs をデコードする。ここで、命令ＩＮＳＴs は、他の演算ステージにおける演算器とは独立して演算器１２０s において演算を行わせるための命令である。演算器１２０s は、命令ＩＮＳＴs がデコードされたとき、ステージラッチ回路１１０s の値を用いて、命令ＩＮＳＴs に対応する演算を行い演算結果を出力する。
【０２３７】
さらに、命令デコーダ３２０s は、命令ＩＮＳＴrsおよび命令ＩＮＳＴs 以外の命令が入力された場合、これをスルー命令ＳＲＣ1 に変換し、このスルー命令ＳＲＣ1 を演算器１２０s に対してデコードする。演算器１２０s は、ステージラッチ回路１１０s の値をスルーさせる。ステージラッチ回路１１０s+1 およびステージラッチ回路３１０s+1 は、演算器１２０s の出力値およびステージラッチ回路３１０s の値をそれぞれ保持する。
【０２３８】
つぎに、上述した実施の形態８の動作について図２４〜図２６に示したフローチャートを参照しつつ説明する。はじめに、第ｒ演算ステージの演算器１２０r 〜第ｓ演算ステージの演算器１２０s に対して命令ＩＮＳＴrsが発行された場合の動作について説明する。図２４に示したステップＳＨ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴrsがそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴrsがステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０２３９】
つぎのステップＳＨ２では、命令デコーダ３２０11および命令デコーダ３２０12  は、ステージラッチ回路３１０1 に命令ＩＮＳＴrsが保持されているため、ステップＳＨ５へ進む。なお、ステージラッチ回路３１０1 に命令ＩＮＳＴ11および命令ＩＮＳＴ12が保持されている場合、命令デコーダ３２０11および命令デコーダ３２０12は、ステップＳＨ３へ進む。この場合、ステップＳＨ３およびステップＳＨ４では、前述したステップＳＤ３およびステップＳＤ４（図１０参照）の処理が行われる。
【０２４０】
この場合、ステップＳＨ５では、命令デコーダ３２０11および命令デコーダ３２０12は、マルチプレクサ７００1 およびマルチプレクサ８００1 にステージラッチ回路１１０1 およびステージラッチ回路２１０1 を選択させる。ステップＳＨ６では、演算器１２０1 および演算器２２０1 が動作せず、ステップＳＨ７では、ステージラッチ回路１１０1 の値（第１被演算データＳＯＵＲＣＥ1 ）が、バイパスラインＢ11およびマルチプレクサ７００1 を介してステージラッチ回路１１０2 に保持される。同様にして、ステージラッチ回路２１０1 の値（第２被演算データＳＯＵＲＣＥ2 ）が、バイパスラインＢ12およびマルチプレクサ８００1 を介してステージラッチ回路２１０2 に保持される。また、ステージラッチ回路３１０2 には、命令ＩＮＳＴrsが保持される。
【０２４１】
以後、第２演算ステージ〜第ｒ−２演算ステージ（いずれも図示略）においては、第１演算ステージの場合と同様にして、マルチプレクサによりステージラッチ回路が選択されることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第２演算ステージ〜第ｒ−２演算ステージにおいては、命令ＩＮＳＴrsがステージラッチ回路に順次保持される。
【０２４２】
そして、第ｒ−１演算ステージにおいて、ステップＳＨ８では、命令デコーダ３２０r-11および命令デコーダ３２０r-12  は、ステージラッチ回路３１０r-1 に命令ＩＮＳＴrsが保持されているため、ステップＳＨ１１へ進む。なお、ステージラッチ回路３１０r-1 に命令ＩＮＳＴr-11および命令ＩＮＳＴr-12が保持されている場合、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、ステップＳＨ９へ進み、マルチプレクサ７００r-1 およびマルチプレクサ８００r-1 に演算器１２０r-1 および演算器２２０r-1 を選択させる。
【０２４３】
また、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、命令ＩＮＳＴr-11および命令ＩＮＳＴr-12を演算器１２０r-1 および演算器２２０r-1 に対してそれぞれデコードする。これにより、演算器１２０r-1 および演算器２２０r-1 は、ステージラッチ回路１１０r-1 の値およびステージラッチ回路２１０r-1 の値を用いて、命令ＩＮＳＴr-11および命令ＩＮＳＴr-12に応じた演算を行う。つぎのステップＳＨ１０では、演算器１２０r-1 および演算器２２０r-1 の演算結果がステージラッチ回路１１０r およびステージラッチ回路２１０r にそれぞれ保持される。
【０２４４】
この場合、ステップＳＨ１１では、命令デコーダ３２０r-11および命令デコーダ３２０r-12は、マルチプレクサ７００r-1 およびマルチプレクサ８００r-1 にステージラッチ回路１１０r-1 およびステージラッチ回路２１０r-1 を選択させる。ステップＳＨ１２では、演算器１２０r-1 および演算器２２０r-1 が動作せず、ステップＳＨ１３では、ステージラッチ回路１１０r-1 の値（第１被演算データＳＯＵＲＣＥ1 ）が、バイパスラインＢr-11およびマルチプレクサ７００r-1 を介してステージラッチ回路１１０r に保持される。同様にして、ステージラッチ回路２１０r-1 の値（第２被演算データＳＯＵＲＣＥ2 ）が、バイパスラインＢr-12およびマルチプレクサ８００r-1 を介してステージラッチ回路２１０r に保持される。
【０２４５】
つぎの第ｒ演算ステージにおいて、ステップＳＨ１４（図２５参照）では、命令デコーダ３２０r は、ステージラッチ回路３１０r に命令ＩＮＳＴrsが保持されているため、ステップＳＨ１５へ進む。なお、ステージラッチ回路３１０r に命令ＩＮＳＴrsおよび命令ＩＮＳＴr 以外の命令が保持されている場合、命令デコーダ３２０r は、ステップＳＨ１７へ進み、命令ＩＮＳＴrsおよびＩＮＳＴr 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＨ１８へ進む。ステップＳＨ１８では、命令デコーダ３２０r は、演算器１２０r に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０r は、ステージラッチ回路１１０r の値をスルーで通過させる。つぎのステップＳＨ１９では、ステージラッチ回路１１０r の値がステージラッチ回路１１０r+1 に保持される。
【０２４６】
この場合、ステップＳＨ１５では、命令デコーダ３２０r は、命令ＩＮＳＴrsを演算器１２０r に対してデコードする。これにより、演算器１２０r はステージラッチ回路１１０r の値（第１被演算データＳＯＵＲＣＥ1 ）およびステージラッチ回路２１０r の値（第２被演算データＳＯＵＲＣＥ2 ）を用いて、命令ＩＮＳＴrsに応じた演算を行う。これにより、ステップＳＨ１６では、演算器１２０r の演算結果がステージラッチ回路１１０r+1 に保持される。このとき、ステージラッチ回路３１０r の値（命令ＩＮＳＴrs）がステージラッチ回路３１０r+1 に保持される。
【０２４７】
つぎの第ｒ＋１演算ステージにおいて、ステップＳＨ２０では、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 に命令ＩＮＳＴrsが保持されているため、ステップＳＨ２１へ進む。なお、ステージラッチ回路３１０r+1 に命令ＩＮＳＴrsおよび命令ＩＮＳＴr+1 以外の命令が保持されている場合、命令デコーダ３２０r+1 は、ステップＳＨ２３へ進み、命令ＩＮＳＴrsおよびＩＮＳＴr+1 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＨ２４へ進む。ステップＳＨ２４では、命令デコーダ３２０r+1 は、演算器１２０r+1 に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０r+1 は、ステージラッチ回路１１０r+1 の値をスルーで通過させる。つぎのステップＳＨ２５では、ステージラッチ回路１１０r+1 の値がステージラッチ回路１１０r+2 に保持される。
【０２４８】
この場合、ステップＳＨ２１では、命令デコーダ３２０r+1 は、命令ＩＮＳＴrsを演算器１２０r+1 に対してデコードする。これにより、演算器１２０r+1 はステージラッチ回路１１０r+1 の値（第ｒ演算ステージの演算器１２０r の演算結果）を用いて、命令ＩＮＳＴrsに応じた演算を行う。これにより、ステップＳＨ２２では、演算器１２０r+1 の演算結果がステージラッチ回路１１０r+2 に保持される。このとき、ステージラッチ回路３１０r+1０の値（命令ＩＮＳＴrs）がステージラッチ回路３１０r+2 に保持される。以後、第ｒ＋２演算ステージ〜第ｓ−１演算ステージ（いずれも図示略）においては、第ｒ＋１演算ステージと同様にして、命令ＩＮＳＴrsがデコードされることで、それぞれの演算ステージにおいて命令ＩＮＳＴrsに基づく演算が行われる。また、第ｒ＋２演算ステージ〜第ｓ−１演算ステージにおいては、命令ＩＮＳＴrsがステージラッチ回路に順次保持される。
【０２４９】
そして、図２３に示した第ｓ演算ステージにおいて、ステップＳＨ２６（図２６参照）では、命令デコーダ３２０s は、ステージラッチ回路３１０s に命令ＩＮＳＴrsが保持されているため、ステップＳＨ２７へ進む。なお、ステージラッチ回路３１０s に命令ＩＮＳＴrsおよび命令ＩＮＳＴs 以外の命令が保持されている場合、命令デコーダ３２０s は、ステップＳＨ２９へ進み、命令ＩＮＳＴrsおよび命令ＩＮＳＴs 以外の命令をスルー命令ＳＲＣ1 に変換した後、ステップＳＨ３０へ進む。ステップＳＨ３０では、演算器１２０s に対してスルー命令ＳＲＣ1 をデコードする。これにより、演算器１２０s は、ステージラッチ回路１１０s の値をスルーで通過させる。つぎのステップＳＨ３１では、ステージラッチ回路１１０s の値がステージラッチ回路１１０s+1 に保持される。
【０２５０】
この場合、ステップＳＨ２７では、命令デコーダ３２０s は、命令ＩＮＳＴrsを演算器１２０s に対してデコードする。これにより、演算器１２０s はステージラッチ回路１１０s の値（第ｓ−１演算ステージにおける演算器の演算結果）を用いて、命令ＩＮＳＴrsに応じた演算を行う。これにより、ステップＳＨ２８では、演算器１２０s の演算結果がステージラッチ回路１１０s+1 に保持される。このとき、ステージラッチ回路３１０s の値（命令ＩＮＳＴrs）がステージラッチ回路３１０s+1 に保持される。以後、第ｓ＋１演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、スルー命令ＳＲＣ1 がデコードされることで、演算器１２０s の演算結果がそれぞれの演算ステージにおいて順次スルーされる。また、第ｓ＋１演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴrsがステージラッチ回路に順次保持される。
【０２５１】
そして、第ｎ演算ステージにおいて、ステップＳＨ３２では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴrsが保持されているため、ステップＳＨ３５へ進む。なお、ステージラッチ回路３１０n に命令ＩＮＳＴn が保持されている場合、命令デコーダ３２０n は、ステップＳＨ３３へ進み、演算器１２０n に対して命令ＩＮＳＴn をデコードする。これにより、演算器１２０n は、ステージラッチ回路１１０n の値を用いて、命令ＩＮＳＴn に応じた演算を行う。つぎのステップＳＨ３４では、演算器１２０n の演算結果がステージラッチ回路１１０n+1 に保持される。
【０２５２】
この場合、ステップＳＨ３５では、命令デコーダ３２０n は、命令ＩＮＳＴrsをスルー命令ＳＲＣ1 に変換した後、ステップＳＨ３６へ進む。ステップＳＨ３６では、命令デコーダ３２０n は、演算器１２０n に対してスルー命令ＳＲＣ1をデコードする。これにより、演算器１２０n はステージラッチ回路１１０n の値（演算器１２０s 演算結果）をスルーさせる。ステップＳＨ３７では、ステージラッチ回路１１０n の値がステージラッチ回路１１０n+1 に保持される。つぎのステップＳＨ３８では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０s の演算結果が保持される。
【０２５３】
つぎに、図２２および図２３に示したｍ段（第ｒ演算ステージ〜第ｓ演算ステージ）の演算ステージの中に存在する一つの演算ステージ（以下、第ｘ演算ステージと称する）における演算器に対して、他の演算器とは独立に演算を実行させるための命令（以下、命令ＩＮＳＴx と称する）が発行された場合の動作について説明する。以下の説明においては、一例として、上記第ｘ演算ステージおよび命令ＩＮＳＴx を、図２２に示した第ｒ＋１演算ステージおよび命令ＩＮＳＴr+1 とした場合について説明する。図２４に示したステップＳＨ１では、被演算データ用レジスタ１００、被演算データ用レジスタ２００および命令用レジスタ３００に、第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴr+1 がそれぞれ保持される。これにより、上記第１被演算データＳＯＵＲＣＥ1 、第２被演算データＳＯＵＲＣＥ2 および命令ＩＮＳＴr+1 がステージラッチ回路１１０1 、ステージラッチ回路２１０1 およびステージラッチ回路３１０1 にそれぞれ保持される。
【０２５４】
つぎのステップＳＨ２では、命令デコーダ３２０11および命令デコーダ３２０12  は、ステージラッチ回路３１０1 に命令ＩＮＳＴr+1 が保持されているため、ステップＳＨ５へ進む。ステップＳＨ５〜ステップＳＨ７においては、前述と同様にして、マルチプレクサ７００1 およびマルチプレクサ８００1 によりステージラッチ回路１１０1 およびステージラッチ回路２１０1 が選択されることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がステージラッチ回路１１０2 およびステージラッチ回路２１０2 にそれぞれ保持される。また、ステージラッチ回路３１０2 には、命令ＩＮＳＴr+1 が保持される。
【０２５５】
以後、第２演算ステージ〜第ｒ−２演算ステージ（いずれも図示略）においては、第１演算ステージの場合と同様にして、マルチプレクサによりステージラッチ回路が選択されることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 がそれぞれの演算ステージをスルーで順次通過する。また、第２演算ステージ〜第ｒ−２演算ステージにおいては、命令ＩＮＳＴr+1 がステージラッチ回路に順次保持される。
【０２５６】
そして、第ｒ−１演算ステージにおいて、ステップＳＨ８では、命令デコーダ３２０r-11および命令デコーダ３２０r-12  は、ステージラッチ回路３１０r-1 に命令ＩＮＳＴr+1 が保持されているため、ステップＳＨ１１へ進む。ステップＳＨ１１〜ステップＳＨ１３では、前述と同様にして、マルチプレクサ７００r-1 およびマルチプレクサ８００r-1 によりステージラッチ回路１１０r-1 およびステージラッチ回路２１０r-1 が選択されることで、第１被演算データＳＯＵＲＣＥ1 および第２被演算データＳＯＵＲＣＥ2 が、ステージラッチ回路１１０r およびステージラッチ回路２１０r にそれぞれ保持される。このとき、ステージラッチ回路３１０r には、ステージラッチ回路１１０r-1 の値（命令ＩＮＳＴr+1 ）が保持される。
【０２５７】
つぎの第ｒ演算ステージにおいて、ステップＳＨ１４（図２５参照）では、命令デコーダ３２０r は、ステージラッチ回路３１０r に命令ＩＮＳＴr+1 が保持されているため、ステップＳＨ１７へ進む。ステップＳＨ１７〜ステップＳＨ１９においては、前述と同様にして、命令ＩＮＳＴr+1 がスルー命令ＳＲＣ1 に変換されることで、ステージラッチ回路１１０r の値（第１被演算データＳＯＵＲＣＥ1 ）がステージラッチ回路１１０r+1 に保持される。このとき、ステージラッチ回路３１０r の値（命令ＩＮＳＴr+1 ）がステージラッチ回路３１０r+1 に保持される。
【０２５８】
つぎの第ｒ＋１演算ステージにおいて、ステップＳＨ２０では、命令デコーダ３２０r+1 は、ステージラッチ回路３１０r+1 に命令ＩＮＳＴr+1 が保持されているため、ステップＳＨ２１へ進む。ステップＳＨ２１では、命令デコーダ３２０r+1 は、命令ＩＮＳＴr+1 を演算器１２０r+1 に対してデコードする。これにより、演算器１２０r+1 はステージラッチ回路１１０r+1 の値（第１被演算データＳＯＵＲＣＥ1 ）を用いて、命令ＩＮＳＴr+1 に応じた演算を行う。これにより、ステップＳＨ２２では、演算器１２０r+1 の演算結果がステージラッチ回路１１０r+2 に保持される。このとき、ステージラッチ回路３１０r+1 の値（命令ＩＮＳＴr+1 ）がステージラッチ回路３１０r+2 に保持される。以後、第ｒ＋２演算ステージ〜第ｓ−１演算ステージ（いずれも図示略）においては、それぞれの演算ステージにおいてスルー命令ＳＲＣ1 がデコードされることで、演算器１２０r+1 の演算結果が順次スルーされる。
【０２５９】
そして、図２３に示した第ｓ演算ステージにおいて、ステップＳＨ２６（図２６参照）では、命令デコーダ３２０s は、ステージラッチ回路３１０s に命令ＩＮＳＴr+1 が保持されているため、ステップＳＨ２９へ進む。ステップＳＨ２９〜ステップＳＨ３１においては、前述と同様にして、スルー命令ＳＲＣ1 がデコードされることで、ステージラッチ回路１１０s の値（演算器１２０r+1 の演算結果）がステージラッチ回路１１０s+1 に保持される。以後、第ｓ＋１演算ステージ〜第ｎ−１演算ステージ（いずれも図示略）においては、スルー命令ＳＲＣ1 がデコードされることで、演算器１２０r+1 の演算結果がそれぞれの演算ステージにおいて順次スルーされる。また、第ｓ＋１演算ステージ〜第ｎ−１演算ステージにおいては、命令ＩＮＳＴr+1 がステージラッチ回路に順次保持される。
【０２６０】
そして、第ｎ演算ステージにおいて、ステップＳＨ３２では、命令デコーダ３２０n は、ステージラッチ回路３１０n に命令ＩＮＳＴr+1 が保持されているため、ステップＳＨ３５へ進む。ステップＳＨ３５〜ステップＳＨ３７においては、前述と同様にして、スルー命令ＳＲＣ1 がデコードされることで、ステージラッチ回路１１０n の値（演算器１２０r+1 の演算結果）がステージラッチ回路１１０n+1 に保持される。つぎのステップＳＨ３８では、演算結果用レジスタ５００には、パイプライン演算装置の演算結果として演算器１２０r+1 の演算結果が保持される。
【０２６１】
以上説明したように、実施の形態８によれば、第ｘ演算ステージにおける演算実行時に、第ｘ＋１演算ステージ〜第ｎ演算ステージにおいてスルー命令ＳＲＣ1 をそれぞれデコードすることで第ｘ演算ステージにおける演算器１２０x の演算結果をスルーさせるようにしたので、第ｘ＋１演算ステージ〜第ｎ演算ステージにおけるハードウェア量および消費電力が低減する。また、実施の形態８によれば、第ｒ演算ステージ〜第ｓ演算ステージのうちいずれか一つの演算ステージにおける演算器の演算を、他の演算器とは独立させて行うことができる。
【０２６２】
なお、上述した実施の形態８においては、図２２および図２３に示したｍ段の第ｒ演算ステージ〜第ｓ演算ステージのうちいずれか一つの演算ステージの演算器で演算を単独実行するように構成した例について説明したが、特定の一つの演算ステージの演算器のみで演算を実行するようにしてもよい。また、実施の形態８においては、ｍ段の第ｒ演算ステージ〜第ｓ演算ステージのうち、第ｘ−ｐ（ｐ≦ｓ−ｒ）演算ステージ〜第ｘ演算ステージのそれぞれの演算器で演算を単独実行するようにしてもよい。
【０２６３】
以上本発明にかかる実施の形態１〜８について図面を参照して詳述してきたが、具体的な構成例はこの実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。たとえば、実施の形態１〜８においては、演算ステージの段数、ステージラッチ回路、演算器、命令デコーダ、マルチプレクサの個数、組み合わせとして一例を説明した。したがって、実施の形態１〜８においては、スルー命令ＳＲＣ1 （スルー命令ＳＲＣ2 ）を用いる構成であれば、必要に応じて、上記段数、個数、組み合わせを変えてもよい。
【０２６４】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段と第２の演算手段との間で、ラッチ手段の共有、および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２６５】
また、請求項２にかかる発明によれば、第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる単一の被演算データのみを前記第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２６６】
また、請求項３にかかる発明によれば、第１の演算手段および第２の演算手段に対して、それぞれの演算に関して第１の演算手段の演算結果を第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、第２の演算手段が単独で演算を行う場合に、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２６７】
また、請求項４にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２６８】
また、請求項５にかかる発明によれば、第２の演算手段に対して単独で演算を行う命令が発行された場合に、第１の演算手段に対しては、第１の演算ステージの入力段における複数のラッチ手段それぞれに保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみをスルーさせるようにしたので、第１の演算手段と第２の演算手段との間で、ラッチ手段の共有、および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２６９】
また、請求項６にかかる発明によれば、第ｘ演算ステージの前記入力段における複数のラッチ手段に保持される被演算データのうち、前記第２の演算手段が用いる単一の被演算データのみを前記第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２７０】
また、請求項７にかかる発明によれば、第１の演算手段および第２の演算手段に対して、それぞれの演算に関して第１の演算手段の演算結果を第２の演算手段の被演算データとするような相関関係がある第３の命令を実行させ、又、第２の演算手段が単独で演算を行う場合に、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算ステージの出力段におけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減するという効果を奏する。
【０２７１】
また、請求項８にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の演算手段が用いる単一の被演算データのみを第１の演算手段にスルーさせるようにしたので、第１の演算手段の出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【０２７２】
また、請求項９にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第１の演算ステージにおいてスルーし、スルーした被演算データを用いて、第２の演算ステージにおいて第２の命令を実行するようにしたので、第１の演算ステージの出力段におけるステージラッチ回路、配線が従来の場合に比して減るため、ハードウェア量および消費電力が低減するという効果を奏する。
【０２７３】
また、請求項１０にかかる発明によれば、第ｘ演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第ｘ演算ステージにおいてスルーし、スルーした被演算データを用いて、第ｙ演算ステージにおいて第２の命令を実行するようにしたので、第ｘ演算ステージの出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
また、請求項１１にかかる発明によれば、第１の演算ステージの入力段における複数のラッチ手段に保持される被演算データのうち、第２の命令が用いる単一の被演算データのみを第１の演算ステージにおいてスルーし、スルーした被演算データを用いて、第２の演算ステージにおいて第２の命令を実行するようにしたので、第１の演算ステージの出力段におけるラッチ手段および配線量の低減が可能となることから、ハードウェア量および消費電力が低減するという効果を奏する。
【図面の簡単な説明】
【図１】本発明にかかる実施の形態１の構成を示すブロック図である。
【図２】同実施の形態１の動作を説明するフローチャートである。
【図３】本発明にかかる実施の形態２の構成を示すブロック図である。
【図４】同実施の形態２の動作を説明するフローチャートである。
【図５】本発明にかかる実施の形態３の構成を示すブロック図である。
【図６】同実施の形態３の動作を説明するフローチャートである。
【図７】同実施の形態３の動作を説明するフローチャートである。
【図８】同実施の形態３の動作を説明するフローチャートである。
【図９】本発明にかかる実施の形態４の構成を示すブロック図である。
【図１０】同実施の形態４の動作を説明するフローチャートである。
【図１１】同実施の形態４の動作を説明するフローチャートである。
【図１２】同実施の形態４の動作を説明するフローチャートである。
【図１３】本発明にかかる実施の形態５の構成を示すブロック図である。
【図１４】同実施の形態５の動作を説明するフローチャートである。
【図１５】本発明にかかる実施の形態６の構成を示すブロック図である。
【図１６】同実施の形態６の動作を説明するフローチャートである。
【図１７】本発明にかかる実施の形態７の構成を示すブロック図である。
【図１８】同実施の形態７の構成を示すブロック図である。
【図１９】同実施の形態７の動作を説明するフローチャートである。
【図２０】同実施の形態７の動作を説明するフローチャートである。
【図２１】同実施の形態７の動作を説明するフローチャートである。
【図２２】本発明にかかる実施の形態８の構成を示すブロック図である。
【図２３】同実施の形態８の構成を示すブロック図である。
【図２４】同実施の形態８の動作を説明するフローチャートである。
【図２５】同実施の形態８の動作を説明するフローチャートである。
【図２６】同実施の形態８の動作を説明するフローチャートである。
【図２７】従来のパイプライン演算装置の構成を示す図である。
【符号の説明】
１１０1 、１１０2 、１１０3 ステージラッチ回路
１１０x-1 、１１０x 、１１０x+1 、１１０x+2 ステージラッチ回路
１１０r-1 、１１０r 、１１０r+1 、１１０r+2 ステージラッチ回路
１１０s 、１１０s+1 ステージラッチ回路
１１０n 、１１０n+1 ステージラッチ回路
１２０1 、１２０2 演算器
１２０x-1 、１２０x 、１２０x+1 、１２０n 演算器
１２０r-1 、１２０r 、１２０r+1 、演算器
１２０s 演算器
２１０1 、２１０2   ステージラッチ回路
２１０x-1 、２１０x ステージラッチ回路
２１０r-1 、２１０r ステージラッチ回路
２２０r-1 演算器
３１０1 、３１０2 ステージラッチ回路
３１０x-1 、３１０x 、３１０x+1 、３１０x+2 ステージラッチ回路
３１０r-1 、３１０r 、３１０r+1 、３１０r+2 ステージラッチ回路
３１０s 、３１０n ステージラッチ回路
３２０1 、３２０2 命令デコーダ
３２０r-11、３２０r-12  、３２０r 、３２０r+1 命令デコーダ
３２０s、３２０n 命令デコーダ
【図１】
0003776644.tif 000002
【図２】
0003776644.tif 000003
【図３】
0003776644.tif 000004
【図４】
0003776644.tif 000005
【図５】
0003776644.tif 000006
【図６】
0003776644.tif 000007
【図７】
0003776644.tif 000008
【図８】
0003776644.tif 000009
【図９】
0003776644.tif 000010
【図１０】
0003776644.tif 000011
【図１１】
0003776644.tif 000012
【図１２】
0003776644.tif 000013
【図１３】
0003776644.tif 000014
【図１４】
0003776644.tif 000015
【図１５】
0003776644.tif 000016
【図１６】
0003776644.tif 000017
【図１７】
0003776644.tif 000018
【図１８】
0003776644.tif 000019
【図１９】
0003776644.tif 000020
【図２０】
0003776644.tif 000021
【図２１】
0003776644.tif 000022
【図２２】
0003776644.tif 000023
【図２３】
0003776644.tif 000024
【図２４】
0003776644.tif 000025
【図２５】
0003776644.tif 000026
【図２６】
0003776644.tif 000027
【図２７】
0003776644.tif 000028