(57)【特許請求の範囲】
【請求項１】
命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有するとともに、１つの基準命令に含まれる複数の前記命令を並列的に処理する並列処理プロセッサであって、
各々が、対応する前記命令を処理する複数の機能ユニットを備え、
前記各機能ユニットは、連続的に投入される前記対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有し、
前記並列処理プロセッサは、
前記複数の機能ユニットにおける複数の前記処理ステージに存在する複数の前記処理結果を、選択的に、前記複数の機能ユニットにおける複数の最初の前記処理ステージに供給するためのバイパス手段と、
前記レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、前記エントリに対応する前記デスティネーション・アドレスを持つ前記命令が、いずれの前記機能ユニットのいずれの前記処理ステージに存在するかを管理し、前記複数の機能ユニットの前記複数の処理ステージのいずれかに存在する前記命令が持つ前記デスティネーション・アドレスと、前記機能ユニットの前記最初の処理ステージで処理しようとする前記命令が持つソース・アドレスとが一致する場合は、前記一致するソース・アドレスを持つ前記命令を処理しようとする前記最初の処理ステージに、前記一致するデスティネーション・アドレスを持つ前記命令の前記処理結果を、前記一致するデスティネーション・アドレスを持つ前記命令が存在する前記処理ステージから供給するように、前記バイパス手段を制御するバイパス制御手段とをさらに備え、
前記バイパス制御手段は、あるデスティネーション・アドレスを持つ前記命令を管理している場合において、前記あるデスティネーション・アドレスと同じ前記デスティネーション・アドレスを持つ新たな前記命令が、前記複数の機能ユニットのいずれかに投入されるときは、その新たに投入される前記命令を前記あるデスティネーション・アドレスに対応する前記エントリによって管理する、並列処理プロセッサ。
【請求項２】
前記バイパス制御手段は、
管理する前記命令が、いずれの前記機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する前記命令が、いずれの前記処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、前記機能ユニットフィールドおよび前記処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効／無効フィールドとからなる命令管理手段を含み、
前記命令管理手段は、前記複数のエントリに分かれ、
前記バイパス制御手段は、新たな前記命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記有効／無効フィールドをセットし、その命令が投入される前記機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記機能ユニットフィールドをセットし、
前記バイパス制御手段は、新たに投入される前記命令が、前記最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記処理ステージフィールドをリセットし、
前記バイパス制御手段は、前記エントリの前記処理ステージフィールドを、そのエントリに対応する前記デスティネーション・アドレスを持つ前記命令が、前記各処理ステージへ移行するごとに新しくセットする、請求項１に記載の並列処理プロセッサ。
【請求項３】
前記バイパス制御手段は、
管理する前記命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する前記命令がいずれの前記処理ステージに存在するかを示すデータを持つ処理ステージフィールドとからなる命令管理手段を含み、
前記命令管理手段は、前記複数のエントリに分かれ、
前記機能ユニットフィールドにおいては、前記複数の機能ユニットと同数のビット数を有するビット・ベクタによって、前記命令がいずれの機能ユニットに存在するかを示し、
前記バイパス制御手段は、前記機能ユニットに新たな前記命令が投入される場合には、その命令が持つ前記デスティネーション・アドレスに対応する前記エントリの前記機能ユニットフィールドにおいて、その命令が投入される前記機能ユニットに対応する、前記ビット・ベクタのビットをセットし、新たに投入される前記命令が前記最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記処理ステージフィールドをリセットし、
前記バイパス制御手段は、前記エントリの前記処理ステージフィールドを、そのエントリに対応する前記デスティネーション・アドレスを持つ前記命令が、前記各処理ステージへ移行するごとに新しくセットし、前記エントリの前記機能ユニットフィールドにおいて、前記ビット・ベクタのいずれか１つのビットがセットされているときは、そのエントリの前記機能ユニットフィールドおよび前記処理ステージフィールドのデータが有効とし、前記ビット・ベクタのいずれのビットもセットされていないときは、そのエントリの前記機能ユニットフィールドおよび前記処理ステージフィールドは無効とする、請求項１に記載の並列処理プロセッサ。
【請求項４】
命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有するとともに、１つの基準命令に含まれる複数の前記命令を並列的に処理する並列処理プロセッサであって、
各々が、対応する前記命令を処理する複数の機能ユニットを備え、
前記各機能ユニットは、連続的に投入される前記対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有し、
前記並列処理プロセッサは、
前記複数の機能ユニットにおける複数の前記処理ステージに存在する複数の前記処理結果を、選択的に、前記複数の機能ユニットにおける複数の最初の前記処理ステージに供給するためのバイパス手段と、
前記レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、前記エントリに対応する前記デスティネーション・アドレスを持つ前記命令が、いずれの前記機能ユニットに存在するかを管理し、前記複数の機能ユニットの前記複数の処理ステージのいずれかに存在する前記命令が持つ前記デスティネーション・アドレスと、前記機能ユニットの前記最初の処理ステージで処理しようとする前記命令が持つソース・アドレスとが一致する場合は、前記一致するソース・アドレスを持つ前記命令を処理しようとする前記最初の処理ステージに、前記一致するデスティネーション・アドレスを持つ前記命令の前記処理結果を、前記一致するデスティネーション・アドレスを持つ前記命令が存在する前記処理ステージから供給するように、前記バイパス手段を制御するバイパス制御手段とをさらに備え、
前記バイパス制御手段は、あるデスティネーション・アドレスを持つ前記命令を管理している場合において、前記あるデスティネーション・アドレスと同じ前記デスティネーション・アドレスを持つ新たな前記命令が、前記複数の機能ユニットのいずれかに投入されるときは、その新たに投入される前記命令を前記あるデスティネーション・アドレスに対応する前記エントリによって管理する、並列処理プロセッサ。
【請求項５】
前記バイパス制御手段は、
管理する前記命令が、いずれの前記機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、前記機能ユニットフィールドのデータが有効か無効かを示すデータを持つ有効／無効フィールドとからなる命令管理手段を含み、
前記命令管理手段は、前記複数のエントリに分かれ、
前記バイパス制御手段は、前記機能ユニットに新たな前記命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記有効／無効フィールドをセットし、その命令が投入される前記機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記機能ユニットフィールドをセットし、
前記バイパス制御手段は、
１つの前記基準命令に含まれる前記複数の命令の複数の前記ソース・アドレスに対応して設けられ、各々が、新たに投入される前記命令の対応するソース・アドレスが、前記複数の機能ユニットの前記複数の処理ステージのいずれに存在する前記命令のデスティネーション・アドレスと一致するか否かを判断するための複数の判断手段をさらに含み、
前記判断手段は、
前記各機能ユニットの前記複数の処理ステージに対応して設けられる複数の選択手段を含み、
前記選択手段には、前記複数の機能ユニットの、前記選択手段に対応する複数の前記処理ステージに存在する複数の前記命令の複数の前記デスティネーション・アドレスと、新たに投入される前記命令の前記ソース・アドレスに対応する前記エントリの前記機能ユニットフィールドのデータとが入力され、
前記選択手段は、入力された前記機能ユニットフィールドのデータが示す前記機能ユニットに対応する前記処理ステージに存在する命令のデスティネーション・アドレスを出力し、
前記判断手段は、
前記複数の選択手段に対応して設けられる複数の比較手段をさらに含み、
前記比較手段は、対応する前記選択手段から出力された前記デスティネーション・アドレスと、新たに投入される前記命令が持つ前記ソース・アドレスとを比較し、新たに投入される前記命令が持つ前記ソース・アドレスが、対応する前記選択手段から出力された前記デスティネーション・アドレスと一致するか否かを判断する、請求項４に記載の並列処理プロセッサ。
【請求項６】
命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有するとともに、１つの基準命令に含まれる複数の前記命令を並列的に処理する並列処理プロセッサであって、
各々が、対応する前記命令を処理する複数の機能ユニットを備え、
前記各機能ユニットは、連続的に投入される前記対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有し、
前記並列処理プロセッサは、
前記複数の機能ユニットにおける複数の前記処理ステージに存在する複数の前記処理結果を、選択的に、前記複数の機能ユニットにおける複数の最初の前記処理ステージに供給するためのバイパス手段と、
前記レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、前記エントリに対応する前記デスティネーション・アドレスを持つ前記命令が、いずれの前記処理ステージに存在するかを管理し、前記複数の機能ユニットの前記複数の処理ステージのいずれかに存在する前記命令が持つ前記デスティネーション・アドレスと、前記機能ユニットの前記最初の処理ステージで処理しようとする前記命令が持つソース・アドレスとが一致する場合は、前記一致するソース・アドレスを持つ前記命令を処理しようとする前記最初の処理ステージに、前記一致するデスティネーション・アドレスを持つ前記命令の前記処理結果を、前記一致するデスティネーション・アドレスを持つ前記命令が存在する前記処理ステージから供給するように、前記バイパス手段を制御するバイパス制御手段とをさらに備え、
前記バイパス制御手段は、あるデスティネーション・アドレスを持つ前記命令を管理している場合において、前記あるデスティネーション・アドレスと同じ前記デスティネーション・アドレスを持つ新たな前記命令が、前記複数の機能ユニットのいずれかに投入されるときは、その新たに投入される前記命令を前記あるデスティネーション・アドレスに対応する前記エントリによって管理する、並列処理プロセッサ。
【請求項７】
前記バイパス制御手段は、
管理する前記命令が、いずれの前記処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、前記処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効／無効フィールドとからなる命令管理手段を含み、
前記命令管理手段は、前記複数のエントリに分かれ、
前記バイパス制御手段は、
前記機能ユニットに新たな前記命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記有効／無効フィールドをセットし、
前記バイパス制御手段は、新たに投入される前記命令が、前記最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応する前記エントリの前記処理ステージフィールドをリセットし、
前記バイパス制御手段は、前記エントリの前記処理ステージフィールドを、そのエントリに対応する前記デスティネーション・アドレスを持つ前記命令が前記各処理ステージへ移行するごとに新しくセットし、
前記バイパス制御手段は、
１つの前記基準命令に含まれる複数の前記命令の複数の前記ソース・アドレスに対応して設けれ、各々が、新たに投入される前記命令の対応するソース・アドレスが前記複数の機能ユニットの前記複数の処理ステージのいずれに存在する前記命令のデスティネーション・アドレスと一致するか否かを判断するための複数の判断手段をさらに含み、
前記判断手段は、
前記複数の機能ユニットに対応して設けられる複数の選択手段を含み、
前記選択手段には、対応する前記機能ユニットの前記複数の処理ステージに存在する複数の前記命令のデスティネーション・アドレスと、新たに投入される前記命令のソース・アドレスに対応するエントリの前記処理ステージフィールドのデータとが入力され、
前記選択手段は、入力された前記処理ステージフィールドのデータが示す前記処理ステージに対応する前記処理ステージに存在する前記命令の前記デスティネーション・アドレスを出力し、
前記判断手段は、
前記複数の選択手段に対応して設けられる複数の比較手段をさらに含み、
前記比較手段は、対応する前記選択手段から出力された前記デスティネーション・アドレスと、新たに投入される前記命令が持つ前記ソース・アドレスとを比較し、新たに投入される前記命令が持つソース・アドレスが、対応する前記選択手段から出力された前記デスティネーション・アドレスと一致するか否かを判断する、請求項６に記載の並列処理プロセッサ。
【請求項８】
前記機能ユニットフィールドにおいては、前記複数の機能ユニットと同数のビット数を有するビット・ベクタによって、前記命令がいずれの前記機能ユニットに存在するかを示す、請求項２または５に記載の並列処理プロセッサ。
【請求項９】
前記処理ステージフィールドにおいては、前記各機能ユニットにおける前記複数の処理ステージと同数のビット数を有するビット・ベクタによって、前記命令がいずれの前記処理ステージに存在するかを示し、
前記命令管理手段は、前記命令が存在する前記処理ステージに対応する、前記ビット・ベクタのビットをセットする、請求項２、３または７のいずれか１項に記載の並列処理プロセッサ。
【請求項１０】
前記各機能ユニットの最後の前記処理ステージは、そこに存在する前記処理結果を前記デスティネーション・アドレスに従って、前記レジスタ・ファイルに書込むものであり、前記バイパス手段は適用されず、
前記命令管理手段は、
前記複数のエントリに対応して設けられ、各々が、対応する前記エントリの前記処理ステージフィールドを管理するための複数の処理ステージフィールド管理手段を含み、
前記処理ステージフィールド管理手段は、
対応する前記エントリの前記処理ステージフィールドの前記データを、前記命令が前記各処理ステージへ移行するごとに、その移行した前記処理ステージに対応したものにセットする更新手段と、
前記最後の処理ステージに対応する参照データを持つ参照手段と、
前記処理ステージフィールドのデータと、前記参照手段の前記参照データとを比較し、両者が一致したときに、対応する前記エントリの前記有効／無効フィールドをリセットするデータ比較手段とを含む、請求項２または７に記載の並列処理プロセッサ。
【請求項１１】
前記各機能ユニットの最後の前記処理ステージは、そこに存在する前記処理結果を、前記デスティネーション・アドレスに従って書込むものであり、前記バイパス手段は、適用されず、
前記ビット・ベクタは、前記各機能ユニットにおける前記複数の処理ステージと同数より１つ多いビット数を有し、
前記ビット・ベクタの１つのビットは、前記命令が前記最初の処理ステージに移行する前の前記ステージに存在することを示すためのものであり、
前記命令管理手段は、
前記複数のエントリに対応して設けられ、各々が、対応する前記エントリの前記処理ステージフィールドを管理するための複数の処理ステージフィールド管理手段を含み、
前記処理ステージフィールド管理手段は、ビット・シフタであり、前記命令が前記ステージまたは前記各処理ステージへ移行するごとに、移行した前記ステージまたは前記各処理ステージに対応する、前記ビット・ベクタのビットをセットする、請求項９に記載の並列処理プロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列処理プロセッサに関し、特に、バイパス制御を高速に行なうことのできる並列処理プロセッサに関する。
【０００２】
【従来の技術】
プロセッサの性能向上を図るため、複数のパイプラインを備えている並列処理プロセッサがある。まず、１つのパイプラインを備える従来のスカラ・プロセッサについて、パイプライン処理およびハザードについて説明する。
【０００３】
パイプライン処理について説明する。パイプライン処理は、複数の命令をオーバーラップさせて同時実行する技術である。現在、パイプライン処理は、ＣＰＵ（Central Processing Unit ）の高速化のための基本技術となっている。パイプライン処理では、パイプラインの１ステップで命令の一部分を担当し、実行する。１個の命令の処理過程は、複数の小さな処理単位に分割する。この処理単位をパイプライン・ステージ（以下、「ステージ」と呼ぶ）と呼ぶ。各ステージが順に接続されて、１本のパイプを形成する。
【０００４】
パイプライン処理のスループットは、命令がパイプラインを出ていく速度で決まる。各ステージは、お互いに連結しているので、すべてのステージが同時に処理を完了しなければならない。１ステージにおいて、処理に要する時間がマシン・サイクルと呼ばれるものである。このマシン・サイクルは、最も処理が遅いステージの処理時間によって決まる。
【０００５】
ハザードについて説明する。パイプライン処理では、命令を適切なマシン・サイクルで実行できない状況が存在する。このような状況をハザードと呼ぶ。ハザードは、パイプライン・ストールの原因となる。パイプライン・ストールの発生は、プロセッサの性能低下を引き起こす。ハザードの１つであるデータ・ハザードについて説明する。
【０００６】
パイプライン処理では、命令の実行をオーバーラップするので、命令の相対的な実行タイミングが変わってしまう。このことを原因として生じるハザードが、データ・ハザードである。以下、詳しく説明する。データ・ハザードは、命令の逐次実行とパイプライン実行とでオペランドへのアクセス順序が異なる場合に生じる。ここで、１つの例として、命令の実行過程を（１）命令フェッチステージＩＦ、（２）命令デコードステージＩＤ、（３）実行ステージＥＸ、（４）メモリ・アクセスステージＭＥＭ、（５）書戻しステージＷＢの５ステップとする場合を考える。そして、クロック・サイクルごとに新しい命令をフェッチするとする。そして、さらに、命令は演算命令を考える。第１番目の命令フェッチステージＩＦにおいては、命令が命令キャッシュ（図示せず）から命令デコーダ（図示せず）へフェッチされる。第２番目の命令デコードステージＩＤにおいては、そのフェッチされた命令が命令デコーダによってデコードされ、さらにそのデコードされた命令に従ってレジスタファイル（図示せず）からオペランドがフェッチされる。第３番目の実行ステージＥＸにおいては、命令が実行され、オペランドに対して演算が施される。この演算結果は、実行ステージＥＸにおける結果バッファ（図示せず）に保持される。第４番目のメモリ・アクセスステージＭＥＭにおいては、実行ステージＥＸにおける結果バッファに保持された演算結果を、メモリ・アクセスステージＭＥＭにおける結果バッファ（図示せず）に保持する。第５番目の書戻しステージＷＢにおいては、メモリ・アクセスステージＭＥＭにおける結果バッファに保持された演算結果をレジスタ・ファイルに書込む。以下の２つの演算命令（加算命令ａｄｄおよび減算命令ｓｕｂ）をパイプライン処理する場合を考える。
【０００７】
ａｄｄ  ａ１、ａ２、ａ３
ｓｕｂ  ａ４、ａ１、ａ５
加算命令ａｄｄおよび減算命令ｓｕｂにおいて、１番左側は、デスティネーション・アドレス（演算結果を格納するレジスタ・ファイルのアドレス）を示し、真ん中および１番左側は、ソース・アドレス（オペランドが格納されているレジスタ・ファイルのアドレス）を示す。減算命令ｓｕｂは、加算命令ａｄｄのデスティネーション・アドレスａ１を、ソースアドレスａ１としている。このような場合に、データ・ハザードが生じる。
【０００８】
図２６は、データ・ハザードを説明するための図である。図２６を参照して、加算命令ａｄｄは、第１番目のクロックで、命令フェッチステージＩＦに存在し、第２番目のクロックで命令デコードステージＩＤに存在し、第３番目のクロックで実行ステージＥＸに存在し、第４番目のクロックでメモリ・アクセスステージＭＥＭに存在し、第５番目のクロックでは書戻しステージＷＢに存在する。減算命令ｓｕｂは、第２番目のクロックで命令フェッチステージＩＦに存在し、第３番目のクロックでは命令デコードステージＩＤに存在し、第４番目のクロックでは実行ステージＥＸに存在し、第５番目のクロックではメモリ・アクセスステージＭＥＭに存在し、第６番目のクロックでは書戻しステージＷＢに存在する。加算命令ａｄｄは、書戻しステージＷＢ（第５番目のクロック）で、デスティネーション・アドレスａ１に従って、演算結果を、レジスタ・ファイルに書込む（矢印Ａ）。一方、減算命令ｓｕｂは、命令デコードステージＩＤで（第３番目のクロック）、ソース・アドレスａ１に従って、レジスタ・ファイルからオペランドをフェッチする（矢印Ｂ）。減算命令ｓｕｂは、加算命令ａｄｄの演算結果を使用するが、減算命令ｓｕｂがレジスタ・ファイルからオペランドをフェッチする命令デコードステージＩＤ（第３番目のクロック）においては、加算命令ａｄｄの演算結果はレジスタ・ファイルには書込まれていない。このような状況をデータ・ハザードと呼ぶ。もし、データ・ハザードを回避しないと、減算命令ｓｕｂは、間違ったオペランドをフェッチして、使用してしまう。すなわち、減算命令ｓｕｂは、加算命令ａｄｄの演算結果がレジスタ・ファイルに書込まれる前のデータを、レジスタ・ファイルのアドレスａ１から読出してしまい、減算命令ｓｕｂが正しく処理されないことになる。
【０００９】
データ・ハザードは、以下に示すバイパスと呼ぶ簡単なハードウェア技術で解決できる。まず、２つのラッチ回路と、２つのラッチ回路に保持されている２つのオペランドに対して演算を施すＡＬＵ（Arithmetic and Logic Unit ）を含むプロセッサを考える。そして、ＡＬＵの演算結果を、必ず、２つのラッチ回路にフィードバックするようにしておく。そして、さらに、ＡＬＵの演算結果が、これから行なうＡＬＵでの演算に用いるオペランドに等しい場合、レジスタ・ファイルから読出したオペランドではなく、ＡＬＵでの演算結果を、これから行なうＡＬＵの入力として用いるようにする。このような仕組みがバイパス機構と呼ばれるものである。データ・ハザードを解決するバイパス機構については、たとえば、“Computer Architecture A Quantitative Approach"、David A.Patterson 、John L.Hennessy 、MORGAN KAUFMANN PUBLISHERS, inc.に開示されている。
【００１０】
図２７は、バイパス機構を説明するための図である。図２７を参照して、１番上は、デスティネーション・アドレスａ１およびソースアドレスａ２，ａ３を持つ加算命令ａｄｄのパイプライン処理を示し、真ん中は、デスティネーション・アドレスａ４およびソース・アドレスａ１，ａ５を持つ減算命令ｓｕｂのパイプライン処理を示し、１番下はデスティネーション・アドレスａ６およびソース・アドレスａ１，ａ７を持つ加算命令ａｄｄのパイプライン処理を示す。図２７に示すような５段構成のパイプライン構成では、命令（add a1, a2, a3）の演算結果を、次に投入される命令（sub a4, a1, a5）に対してのみならず、その次に投入される命令（add a6, a1, a7）に対してもバイパスする必要がある。ここで、命令デコードステージＩＤの後半で、オペランドのフェッチ（データの読出）Ｒを行ない、書戻しステージＷＢの前半で演算結果の書込を行なっている。このため、命令（add a1, a2, a3）の演算結果を、命令（add a6, a1, a7）の次に投入される命令に対してはバイパスをする必要はない。なぜならば、命令（add a6, a1, a7）の次に投入される命令が実行ステージＥＸにくるときには、命令（add a1, a2, a3）の演算結果は既にレジスタ・ファイルに書込まれているからである。
【００１１】
図２８は、バイパス機構を有する従来のスカラ・プロセッサを示す概略ブロック図である。図２８を参照して、従来のスカラ・プロセッサは、レジスタ・ファイル５、マルチプレクサ２１１，２１３、ＡＬＵ２１５、結果バッファ２１７，２１９、２個のラッチ回路（図示せず）および４個の比較器（図示せず）を含む。ここで、パイプライン構成は、上述した５段構成とする。
【００１２】
命令が、書戻しステージＷＢに進むまでの、その命令の演算結果を保持するために、２個の結果バッファ２１７，２１９を設けている。先行する命令（１つ先にＡＬＵ２１５で実行される命令または２つ先にＡＬＵ２１５で実行される命令）の演算結果を、オペランドとする命令が実行ステージＥＸに入った際、オペランドとなる演算結果を生成した先行する命令は、実行ステージＥＸからメモリ・アクセスステージＭＥＭに（１つ先にＡＬＵ２１５で実行される命令の場合）、または、メモリ・アクセスステージＭＥＭから書戻しステージＷＢに（２つ先にＡＬＵ２１５で実行された命令の場合）、進んでいる（図２７参照）。
【００１３】
２個の結果バッファ２１７，２１９に保持されている２個の演算結果は、２個のマルチプレクサ２１１，２１３を介して、ＡＬＵ２１５の２つのポートのいずれの入力にもなり得る。マルチプレクサ２１１，２１３の制御は、実行ステージＥＸに投入されようとする命令のソース・アドレスが、先行する２つの命令のデスティネーション・アドレスと等しいか否かを判定して行なう。もし、実行ステージＥＸに投入されようとする命令のソース・アドレスと、先行する命令のデスティネーション・アドレスとが等しい場合は、レジスタ・ファイル５からではなく、そのデスティネーション・アドレスを持つ命令の演算結果が存在する結果バッファ（結果バッファ２１７または結果バッファ２１９）から、オペランドを入力するように、マルチプレクサ２１１，２１３の制御が行なわれる。
【００１４】
また、実行ステージＥＸに投入されようとする命令のソース・アドレスが、先行する２つの命令の２つのデスティネーション・アドレスの両方に等しい場合は、１つ先にＡＬＵ２１５で実行された命令の演算結果を、結果バッファ２１７からオペランドを入力するようにマルチプレクサ２１１，２１３の制御が行なわれる。このように、ソース・アドレスが、先行する２つの命令の２つのデスティネーション・アドレスの両方に等しい場合において、先行する２つの命令のうち、最も新しい命令の演算結果が存在する結果バッファからオペランドを入力するようにすることを、優先順位付き選択と呼ぶ。
【００１５】
マルチプレクサ２１１，２１３を制御するために行なう、実行ステージＥＸに投入されようとする命令のソース・アドレスと、先行する２つの命令の２つのデスティネーション・アドレスとの比較は、２つの比較器によって行なわれる。ここで、上述したように２個のラッチ回路と、４個の比較器が設けられているが、ソース・アドレスは２つであるため、１つのソース・アドレスに対して、１個のラッチ回路および２個の比較器が用いられる。また、ＡＬＵ２１５は、１ステージで演算を完了するので、バイパスさえ行なわれれば任意の命令の組合せに対してパイプラインがストールすることはない。
【００１６】
従来の並列処理プロセッサについて説明する。並列処理プロセッサは、上述したように、複数のパイプラインを設けて、１クロック・サイクル当りに複数の命令の実行を開始するものである。たとえば、１クロック・サイクルで、複数の演算命令に基づき複数の演算を行なう。ここで、命令の実行を開始することを、命令を発行すると呼ぶ場合もある。並列処理プロセッサを通して、ＶＬＩＷ（Very Long Instruction Word）プロセッサがある。ＶＬＩＷプロセッサでは、１個の命令内に並列に動作可能な複数のオペレーションを指定する。すなわち、ＶＬＩＷプロセッサでは、１個の命令で、複数のスカラ命令に相当する複数のオペレーションを指定する。このため、ＶＬＩＷプロセッサでは、スカラ・プロセッサに比べて１個のプログラムの実行に要する命令数が減少する。ＶＬＩＷプロセッサでは、１個の命令で指定された複数のオペレーションを複数の独立した機能ユニットを用いて実行する。この機能ユニットには、ＡＬＵが含まれている。以下、ＶＬＩＷプロセッサにおいて、複数のオペレーションを含む命令を「基準命令」と呼び、１個の基準命令に含まれているオペレーションを、単に「命令」と呼ぶことにする。
【００１７】
【発明が解決しようとする課題】
ＶＬＩＷプロセッサにおいても、各機能ユニットはパイプライン化されている。このため、データ・ハザードが生じる。このため、バイパス機構を設けている。ＶＬＩＷプロセッサでは、並列に実行されている命令数が多い。このため、スカラ・プロセッサに比べて、どの演算結果をバイパスするかを決定するバイパス制御が複雑になる。ここで、各機能ユニットのパイプライン構成が、上述した５段構成の場合を考える。この場合、スカラ・プロセッサでは、実行ステージＥＸおよびメモリ・アクセスステージＭＥＭに存在する２つの命令の２つのデスティネーション・アドレスと、命令デコードステージＩＤに存在する命令の２つのソース・アドレスとを比較するために、４つの比較器が必要になる。しかし、４つの命令を発行するＶＬＩＷプロセッサでは、４つの機能ユニットが設けられるため、６４個の比較器が必要になる。すなわち、１つのソース・アドレスに対して、８つの比較器が必要になる。
【００１８】
さらに、最も新しい命令の演算結果をバイパスするために、優先順位付き選択を行なわなければならない。スカラ・プロセッサの場合では、２つの演算結果に対して優先順位付き選択を行なえばよい。しかし、４つの命令を発行するＶＬＩＷプロセッサでは、４つの機能ユニットを設けるため、８つの演算結果に対して優先順位付き選択を行なわなければならない。
【００１９】
以上のように、従来のＶＬＩＷプロセッサでは、並列に発行できる命令数が増加すればするほど、必要となる比較器が増加するとともに、優先順位付き選択の対象も増加する。このため、並列に発行できる命令数が増加すればするほど指数関数的に処理の複雑度が増加する。処理が複雑になると、処理に要する時間が増加する。マシン・サイクルは、最も遅いステージの処理時間によって決まってしまう。このため、バイパス制御に時間がかかることによって１ステージの処理に要する時間が増加し、マシン・サイクルが増加してしまう。このようなマシン・サイクルの増加は、プロセッサの性能に直接影響し、プロセッサの性能低下につながる。
【００２０】
以上のように、従来の並列処理プロセッサとしてのＶＬＩＷプロセッサでは、並列に発行できる命令数が増加すればするほど、処理が複雑化し、バイパス制御に時間がかかるため、性能が低下するという問題点があった。
【００２１】
この発明は、以上のような問題点を解決するためになされたもので、バイパス制御を高速に行なうことのできる並列処理プロセッサを提供することを目的とする。
【００２２】
【課題を解決するための手段】
本発明の請求項１の並列処理プロセッサは、命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有している。そして、１つの基準命令に含まれる複数の命令を並列的に処理するものである。この並列処理プロセッサは、複数の機能ユニット、バイパス手段およびバイパス制御手段を備える。各機能ユニットは、対応する命令を処理する。また、各機能ユニットは、連続的に投入される対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有している。バイパス手段は、複数の機能ユニットにおける複数の処理ステージに存在する複数の処理結果を、選択的に、複数の機能ユニットにおける複数の最初の処理ステージに供給するためのものである。バイパス制御手段は、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、エントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットのいずれの処理ステージに存在するかを管理する。そして、バイパス制御手段は、複数の機能ユニットの複数の処理ステージのいずれかに存在する命令が持つデスティネーション・アドレスと、機能ユニットの最初の処理ステージで処理しようとする命令が持つソース・アドレスとが一致する場合は、一致するソース・アドレスを持つ命令を処理しようとする最初の処理ステージに、一致するデスティネーション・アドレスを持つ命令の処理結果を、一致するデスティネーション・アドレスを持つ命令が存在する処理ステージから供給するように、バイパス手段を制御する。さらに、バイパス制御手段は、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。
【００２３】
本発明の請求項２の並列処理プロセッサは、請求項１に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する命令が、いずれの処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、機能ユニットフィールドおよび処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効／無効フィールドとからなる。命令管理手段は、複数のエントリに分かれている。また、バイパス制御手段は、新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの有効／無効フィールドをセットし、その命令が投入される機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応するエントリの機能ユニットフィールドをセットする。さらに、バイパス制御手段は、新たに投入される命令が、最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応するエントリの処理ステージフィールドをリセットする。さらに、バイパス制御手段は、エントリの処理ステージフィールドを、そのエントリに対応するデスティネーション・アドレスを持つ命令が、各処理ステージへ移行するごとに新しくセットする。
【００２４】
本発明の請求項３の並列処理プロセッサは、請求項１に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、管理する命令がいずれの処理ステージに存在するかを示すデータを持つ処理ステージフィールドとからなる。命令管理手段は、複数のエントリに分かれる。機能ユニットフィールドにおいては、複数の機能ユニットと同数のビット数を有するビット・ベクタによって、命令がいずれの機能ユニットに存在するかを示す。バイパス制御手段は、機能ユニットに新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの機能ユニットフィールドにおいて、その命令が投入される機能ユニットに対応する、ビット・ベクタのビットをセットし、新たに投入される命令が最初の処理ステージの前のステージに存在するときに、その命令が持つデスティネーション・アドレスに対応するエントリの処理ステージフィールドをリセットする。バイパス制御手段は、エントリの処理ステージフィールドを、そのエントリに対応するデスティネーション・アドレスを持つ命令が、各処理ステージへ移行するごとに新しくセットし、エントリの機能ユニットフィールドにおいて、ビット・ベクタのいずれか１つのビットがセットされているときは、そのエントリの機能ユニットフィールドおよび処理ステージフィールドのデータが有効とし、ビット・ベクタのいずれのビットもセットされていないときは、そのエントリの機能ユニットフィールドおよび処理ステージフィールドは無効とする。
本発明の請求項５の並列処理プロセッサは、命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有している。そして、１つの基準命令に含まれる複数の命令を並列的に処理するものである。この並列処理プロセッサは、複数の機能ユニット、バイパス手段およびバイパス制御手段を備える。各機能ユニットは、対応する命令を処理する。また、各機能ユニットは、連続的に投入される対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有している。バイパス手段は、複数の機能ユニットにおける複数の処理ステージに存在する複数の処理結果を、選択的に、複数の機能ユニットにおける複数の最初の処理ステージに供給するためのものである。バイパス制御手段は、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、エントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットに存在するかを管理する。そして、バイパス制御手段は、複数の機能ユニットの複数の処理ステージのいずれかに存在する命令が持つデスティネーション・アドレスと、機能ユニットの最初の処理ステージで処理しようとする命令が持つソース・アドレスとが一致する場合は、一致するソース・アドレスを持つ命令を処理しようとする最初の処理ステージに、一致するデスティネーション・アドレスを持つ命令の処理結果を、一致するデスティネーション・アドレスを持つ命令が存在する処理ステージから供給するように、バイパス手段を制御する。さらに、バイパス制御手段は、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。
【００２５】
本発明の請求項５の並列処理プロセッサは、請求項４に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの機能ユニットに存在するかを示すデータを持つ機能ユニットフィールドと、機能ユニットフィールドのデータが有効か無効かを示すデータを持つ有効／無効フィールドとからなる。命令管理手段は、複数のエントリに分かれている。バイパス制御手段は、機能ユニットに新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの有効／無効フィールドをセットし、その命令が投入される機能ユニットを表わすように、その命令が持つデスティネーション・アドレスに対応するエントリの機能ユニットフィールドをセットする。バイパス制御手段は、複数の判断手段をさらに含む。複数の判断手段は、１つの基準命令に含まれる複数の命令の複数のソース・アドレスに対応して設けられる。各判断手段は、新たに投入される命令の対応するソース・アドレスが、複数の機能ユニットの複数の処理ステージのいずれに存在する命令のデスティネーション・アドレスと一致するか否かを判断するためのものである。判断手段は、複数の選択手段を含む。複数の選択手段は、各機能ユニットの複数の処理ステージに対応して設けられる。選択手段には、複数の機能ユニットの、選択手段に対応する複数の処理ステージに存在する複数の命令の複数のデスティネーション・アドレスと、新たに投入される命令のソース・アドレスに対応するエントリの機能ユニットフィールドのデータとが入力される。選択手段は、入力された機能ユニットフィールドのデータが示す機能ユニットに対応する処理ステージに存在する命令のデスティネーション・アドレスを出力する。判断手段は、複数の比較手段をさらに含む。複数の比較手段は、複数の選択手段に対応して設けられる。比較手段は、対応する選択手段から出力されたデスティネーション・アドレスと、新たに投入される命令が持つソース・アドレスとを比較し、新たに投入される命令が持つソース・アドレスが、対応する選択手段から出力されたデスティネーション・アドレスと一致するか否かを判断する。
【００２６】
本発明請求項６の並列処理プロセッサは、命令の処理結果を、その命令のデスティネーション・アドレスに従って格納するレジスタ・ファイルを有している。そして、１つの基準命令に含まれる複数の命令を並列的に処理するものである。この並列処理プロセッサは、複数の機能ユニット、バイパス手段およびバイパス制御手段を備える。各機能ユニットは、対応する命令を処理する。また、各機能ユニットは、連続的に投入される対応する命令に対して、パイプライン処理を行なう複数の処理ステージを有している。バイパス手段は、複数の機能ユニットにおける複数の処理ステージに存在する複数の処理結果を、選択的に、複数の機能ユニットにおける複数の最初の処理ステージに供給するためのものである。バイパス制御手段は、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、エントリに対応するデスティネーション・アドレスを持つ命令が、いずれの処理ステージに存在するかを管理する。そして、バイパス制御手段は、複数の機能ユニットの複数の処理ステージのいずれかに存在する命令が持つデスティネーション・アドレスと、機能ユニットの最初の処理ステージで処理しようとする命令が持つソース・アドレスとが一致する場合は、一致するソース・アドレスを持つ命令を処理しようとする最初の処理ステージに、一致するデスティネーション・アドレスを持つ命令の処理結果を、一致するデスティネーション・アドレスを持つ命令が存在する処理ステージから供給するように、バイパス手段を制御する。さらに、バイパス制御手段は、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。
【００２７】
本発明の請求項７の並列処理プロセッサは、請求項６に記載のものであって、バイパス制御手段は、命令管理手段を含む。命令管理手段は、管理する命令が、いずれの処理ステージに存在するかを示すデータを持つ処理ステージフィールドと、処理ステージフィールドのデータが有効か無効かを示すデータを持つ有効／無効フィールドとからなる。命令管理手段は、複数のエントリに分かれている。バイパス制御手段は、機能ユニットに新たな命令が投入される場合には、その命令が持つデスティネーション・アドレスに対応するエントリの有効／無効フィールドをセットする。バイパス制御手段は、新たに投入される命令が、最初の処理ステージの前のステージに存在するときに、その命令の持つデスティネーション・アドレスに対応するエントリの処理ステージフィールドをリセットする。バイパス制御手段は、エントリの処理ステージフィールドを、そのエントリに対応するデスティネーション・アドレスを持つ命令が各処理ステージへ移行するごとに新しくセットする。バイパス制御手段は、複数の判断手段をさらに含む。複数の判断手段は、１つの基準命令に含まれる複数の命令の複数のソース・アドレスに対応して設けられる。各判断手段は、新たに投入される命令の対応するソース・アドレスが複数の機能ユニットの複数の処理ステージのいずれに存在する命令のデスティネーション・アドレスと一致するか否かを判断するためのものである。判断手段は、複数の選択手段を含む。複数の選択手段は、複数の機能ユニットに対応して設けられる。選択手段には、対応する機能ユニットの複数の処理ステージに存在する複数の命令のデスティネーション・アドレスと、新たに投入される命令のソース・アドレスに対応するエントリの処理ステージフィールドのデータとが入力される。選択手段は、入力された処理ステージフィールドのデータが示す処理ステージに対応する処理ステージに存在する命令のデスティネーション・アドレスを出力する。判断手段は、複数の比較手段をさらに含む。複数の比較手段は、複数の選択手段に対応して設けられる。比較手段は、対応する選択手段から出力されたデスティネーション・アドレスと、新たに投入される命令が持つソース・アドレスとを比較し、新たに投入される命令が持つソース・アドレスが、対応する選択手段から出力されたデスティネーション・アドレスと一致するか否かを判断する。
【００２８】
本発明の請求項８の並列処理プロセッサは、請求項２または５に記載のものであって、機能ユニットフィールドにおいては、複数の機能ユニットと同数のビット数を有するビット・ベクタによって、命令がいずれの機能ユニットに存在するかを示す。
【００２９】
本発明の請求項９の並列処理プロセッサは、請求項２、３または７のいずれか１項に記載のものであって、処理ステージフィールドにおいては、各機能ユニットにおける複数の処理ステージと同数のビット数を有するビット・ベクタによって、命令がいずれの処理ステージに存在するかを示す。命令管理手段は、命令が存在する処理ステージに対応する、ビット・ベクタのビットをセットする。
【００３０】
本発明の請求項１０の並列処理プロセッサは、請求項２または７に記載のものであって、各機能ユニットの最後の処理ステージは、そこに存在する処理結果をデスティネーション・アドレスに従って、レジスタ・ファイルに書込むものであり、バイパス手段は適用されない。命令管理手段は、複数の処理ステージフィールド管理手段を含む。複数の処理ステージフィールド管理手段は、複数のエントリに対応して設けられる。各処理ステージフィールド管理手段は、対応するエントリの処理ステージフィールドを管理するためのものである。処理ステージフィールド管理手段は、更新手段と、参照手段と、データ比較手段とを含む。更新手段は、対応するエントリの処理ステージフィールドのデータを、命令が各処理ステージへ移行するごとにその移行した処理ステージに対応したものにセットする。参照手段は、最後の処理ステージに対応する参照データを持つ。データ比較手段は、処理ステージフィールドのデータと、参照手段の参照データとを比較し、両者が一致したときに、対応するエントリの有効／無効フィールドをリセットする。
【００３１】
本発明の請求項１１の並列処理プロセッサは、請求項９に記載のものであって、各機能ユニットの最後の処理ステージは、そこに存在する処理結果を、デスティネーション・アドレスに従って書込むものであり、バイパス手段は、適用されない。ビット・ベクタは、各機能ユニットにおける複数の処理ステージと同数より１つ多いビット数を有している。ビット・ベクタの１つのビットは、命令が最初の処理ステージに移行する前のステージに存在することを示すためのものである。命令管理手段は、複数の処理ステージフィールド管理手段を含む。複数の処理ステージフィールド管理手段は、複数のエントリに対応して設けられる。各処理ステージフィールド管理手段は、対応するエントリの処理ステージフィールドを管理するためのものである。処理ステージフィールド管理手段は、ビット・シフタであり、命令がステージまたは各処理ステージへ移行するごとに、移行したステージまたは各処理ステージに対応する、ビット・ベクタのビットをセットする。
【００３２】
【発明の実施の形態】
以下、本発明による並列処理プロセッサとしてのＶＬＩＷプロセッサについて図面を参照しながら説明する。ＶＬＩＷプロセッサは、一般には、上述したように、１つの基準命令に含まれる複数の命令を並列的に処理するものである。なお、以下に記載の信号pipe［０］，pipe［１］，pipe［２］，pipe［３］，stage ［０］，stage ［１］，stage ［２］は、それぞれ、図中に記載のpipe（０），pipe（１），pipe（２），pipe（３），stage （０），stage （１），stage （２）と同じである。
【００３３】
（実施の形態１）
図１は、本発明の実施の形態１によるＶＬＩＷプロセッサを示す概略ブロック図である。図１を参照して、本発明の実施の形態１によるＶＬＩＷプロセッサは、命令キャッシュ１、デコーダ３、レジスタ・ファイル５、機能ユニット７−１，７−２，７−３，７−４、データ・キャッシュ９およびバイパス制御回路１３を含む。機能ユニット７−１〜７−４は、どのような命令も実行できると仮定する。レジスタ・ファイル５からは、一度に、４個の命令の８個のソース・アドレスに対応する８個のデータ（オペランド）を読出すことができる。さらに、レジスタ・ファイル５には、バス１１を介して、一度に４個の命令の処理結果を書込むことができる。データ・キャッシュ９には、４つのアドレスａｄｄｒに従って、一度に４つのデータｄａｔａの書込ができる。さらに、データ・キャッシュ９からは、４つのアドレスａｄｄｒに従って、１度に、４つのデータｄａｔａの読出ができる。
【００３４】
パイプライン処理について説明する。パイプライン構成は、５段構成で、第１番目の命令フェッチステージＩＦと、第２番目の命令デコードステージＩＤと、第３番目の実行ステージＥＸと、第４番目のメモリ・アクセスステージＭＥＭと、第５番目の書戻しステージＷＢとからなる。命令フェッチステージＩＦにおいては、命令キャッシュ１から、基準命令がフェッチされる（読出される）。命令デコードステージＩＤにおいては、デコーダ３によって、基準命令がデコードされる。デコードされた基準命令に含まれる４つの命令は、４つの機能ユニット７−１〜７−４に投入され処理される。
【００３５】
図２は、デコードされた基準命令の形式を示した概略図である。図２を参照して、基準命令は、オペコードｏｐ１，デスティネーション・アドレスｄｅｓ１およびソース・アドレスｓｒｃ１−１，ｓｒｃ１−２からなる命令（機能ユニット７−１に投入される命令）と、オペコードｏｐ２，デスティネーション・アドレスｄｅｓ２およびソース・アドレスｓｒｃ２−１，ｓｒｃ２−２からなる命令（機能ユニット７−２に投入される命令）と、オペコードｏｐ３，デスティネーション・アドレスｄｅｓ３，ソース・アドレスｓｒｃ３−１，ｓｒｃ３−２からなる命令（機能ユニット７−３に投入される命令）と、オペコードｏｐ４，デスティネーション・アドレスｄｅｓ４およびソース・アドレスｓｒｃ４−１，ｓｒｃ４−２からなる命令（機能ユニット７−４に投入される命令）とからなる。オペコードｏｐ１〜ｏｐ４は、操作の種類を示す。
【００３６】
再び図１を参照して説明する。実行ステージＥＸ、メモリ・アクセスステージＭＥＭおよび書戻しステージＷＢにおける処理については、命令の種類に分けて説明する。まず、命令が、演算命令の場合について説明する。実行ステージＥＸにおいては、演算命令が実行され、すなわち、演算が行なわれ、その演算結果（処理結果）が、実行ステージＥＸの結果バッファ（図示せず）に保持される。メモリ・アクセスステージＭＥＭにおいては、実行ステージＥＸの結果バッファに保持された演算結果が、メモリ・アクセスステージＭＥＭの結果バッファ（図示せず）に保持される。書戻しステージＷＢにおいては、メモリ・アクセスステージＭＥＭの結果バッファに保持された演算結果を、レジスタ・ファイル５に書込む。次に、命令が、メモリ・アクセス命令の場合について説明する。実行ステージＥＸにおいては、アドレスが計算され、実行ステージＥＸの結果バッファに保持される。メモリ・アクセスステージＭＥＭにおいては、実行ステージＥＸの結果バッファに保持されたアドレスに基づき、データ・キャッシュ９またはレジスタ・ファイル５をアクセスする。メモリ・アクセス命令がロード命令の場合には、データ・キャッシュ９からデータを読出して、メモリアクセスステージＭＥＭの結果バッファに保持する。メモリ・アクセス命令がストア命令の場合には、レジスタ・ファイル５からデータを読出して、メモリ・アクセスステージＭＥＭの結果バッファに保持する。書戻しステージＷＢにおいては、メモリ・アクセス命令がロード命令の場合、メモリ・アクセスステージＭＥＭの結果バッファに保持されているデータをレジスタ・ファイル５に書込み、メモリ・アクセス命令がストア命令の場合は、メモリ・アクセスステージＭＥＭの結果バッファに保持されているデータをデータ・キャッシュ９に書込む。
【００３７】
命令デコードステージＩＤにおいては、各命令の各オペランドを得るために、レジスタ・ファイル５をアクセスする。得られた各オペランド（レジスタ・ファイル５内の各データ）は、実行ステージＥＸで、各機能ユニット７−１〜７−４に供給される。
【００３８】
図３は、図１のＶＬＩＷプロセッサの一部を示す概略ブロック図である。なお、図１と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【００３９】
図３を参照して、図１のＶＬＩＷプロセッサの一部は、レジスタ・ファイル５、バイパス制御回路１３、ラッチ回路Ｌ１〜Ｌ８、ＡＬＵａ１〜ａ４、結果バッファｅ１〜ｅ４，ｍ１〜ｍ４、トライ・ステート・バッファＴ１〜Ｔ７２およびバス１−１〜４−２を含む。ここで、ラッチ回路Ｌ１，Ｌ２、ＡＬＵａ１および結果バッファｅ１，ｍ１は、機能ユニット７−１を構成する。ラッチ回路Ｌ３，Ｌ４、ＡＬＵａ２および結果バッファｅ２，ｍ２は、機能ユニット７−２を構成する。ラッチ回路Ｌ５，Ｌ６、ＡＬＵａ３および結果バッファｅ３，ｍ３は、機能ユニット７−３を構成する。ラッチ回路Ｌ７，Ｌ８、ＡＬＵａ４および結果バッファｅ４，ｍ４は、機能ユニット７−４を構成する。
【００４０】
ラッチ回路Ｌ１は、バス１−１およびトライ・ステート・バッファＴ１を介して結果バッファｅ１と接続され、バス１−１およびトライ・ステート・バッファＴ９を介して結果バッファｅ１と接続され、バス１−１およびトライ・ステート・バッファＴ１７を介して結果バッファｅ２と接続され、バス１−１およびトライ・ステート・バッファＴ２５を介して結果バッファｍ２と接続され、バス１−１およびトライ・ステート・バッファＴ３３を介して結果バッファｅ３と接続され、バス１−１およびトライ・ステート・バッファＴ４１を介して結果バッファｍ３と接続され、バス１−１およびトライ・ステート・バッファＴ４９を介して結果バッファｅ４と接続され、バス１−１およびトライ・ステート・バッファＴ５７を介して結果バッファｍ４と接続される。
【００４１】
同様に、ラッチ回路Ｌ２は、バス１−２およびトライ・ステート・バッファＴ２，Ｔ１０，Ｔ１８，Ｔ２６，Ｔ３４，Ｔ４２，Ｔ５０，Ｔ５８を介して、結果バッファｅ１，ｍ１，ｅ２，ｍ２，ｅ３，ｍ３，ｅ４，ｍ４と接続される。同様に、ラッチ回路Ｌ３は、バス２−１およびトライ・ステート・バッファＴ３，Ｔ１１，Ｔ１９，Ｔ２７，Ｔ３５，Ｔ４３，Ｔ５１，Ｔ５９を介して、結果バッファｅ１〜ｅ４，ｍ１〜ｍ４と接続される。ラッチ回路Ｌ４も同様に、バス２−２およびトライ・ステート・バッファＴ４，Ｔ１２，Ｔ２０，Ｔ２８，Ｔ３６，Ｔ４４，Ｔ５２，Ｔ６０を介して結果バッファｅ１〜ｅ４，ｍ１〜ｍ４と接続される。ラッチ回路Ｌ５も同様に、バス３−１およびトライ・ステート・バッファＴ５，Ｔ１３，Ｔ２１，Ｔ２９，Ｔ３７，Ｔ４５，Ｔ５３，Ｔ６１を介して結果バッファｅ１〜ｅ４，ｍ１〜ｍ４と接続される。ラッチ回路Ｌ６も同様に、バス３−２およびトライ・ステート・バッファＴ６，Ｔ１４，Ｔ２２，Ｔ３０，Ｔ３８，Ｔ４６，Ｔ５４，Ｔ６２を介して結果バッファｅ１〜ｅ４，ｍ１〜ｍ４と接続される。ラッチ回路Ｌ７も同様に、バス４−１およびトライ・ステート・バッファＴ７，Ｔ１５，Ｔ２３，Ｔ３１，Ｔ３９，Ｔ４７，Ｔ５５，Ｔ６３を介して結果バッファｅ１〜ｅ４，ｍ１〜ｍ４と接続される。ラッチ回路Ｌ８も同様に、バス４−２およびトライ・ステート・バッファＴ８，Ｔ１６，Ｔ２４，Ｔ３２，Ｔ４０，Ｔ４８，Ｔ５６，Ｔ６４を介して結果バッファｅ１〜ｅ４，ｍ１〜ｍ４と接続される。
【００４２】
ラッチ回路Ｌ１は、バス１−１およびトライ・ステート・バッファＴ６５を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ２は、バス１−２およびトライ・ステート・バッファＴ６６を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ３は、バス２−１およびトライ・ステート・バッファＴ６７を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ４は、バス２−２およびトライ・ステート・バッファＴ６８を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ５は、バス３−１およびトライ・ステート・バッファＴ６９を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ６は、バス３−２およびトライ・ステート・バッファＴ７０を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ７は、バス４−１およびトライ・ステート・バッファＴ７１を介してレジスタ・ファイル５と接続される。ラッチ回路Ｌ８は、バス４−２およびトライ・ステート・バッファＴ７２を介してレジスタ・ファイル５と接続される。
【００４３】
トライ・ステート・バッファＴ１〜Ｔ７２は、バイパス制御回路１３からの対応する制御信号ｅ１−１−１〜ｒ−４−２によって、オン／オフが制御される。
【００４４】
トライ・ステート・バッファが、対応する制御信号によりオンとなった場合には、そのトライ・ステート・バッファと対応するラッチ回路へ、そのトライ・ステート・バッファに対応する結果バッファまたはレジスタ・ファイルからデータが転送される。
【００４５】
図４は、バイパス制御回路１３が生成する、トライ・ステート・バッファＴ１〜Ｔ７２を制御する制御信号ｅ１−１−１〜ｒ−４−２と、トライ・ステート・バッファＴ１〜Ｔ７２との対応関係を示す図である。図４を参照して、Ｔ１〜Ｔ７２は、図２のトライ・ステート・バッファＴ１〜Ｔ７２を示す。なお、図４においては、トライ・ステート・バッファを「ＴＳＢ」と表わしている。また、図４を参照して、ｅ１−１−１〜ｒ−４−２は、トライ・ステート・バッファＴ１〜Ｔ７２を制御する制御信号を示す。そして、図４において、１つの枠内に記載されているトライ・ステート・バッファと制御信号とは対応している。たとえば、トライ・ステート・バッファＴ１のオン／オフを制御するのは制御信号ｅ１−１−１である。
【００４６】
再び図３を参照して、バイパス制御について簡単に説明する。ここで、ラッチ回路Ｌ１が必要とするデータのソース・アドレスをｓｒｃ１−１とし、ラッチ回路Ｌ２が必要とするデータのソース・アドレスをｓｒｃ１−２とし、ラッチ回路Ｌ３が必要とするデータのソース・アドレスをｓｒｃ２−１とし、ラッチ回路Ｌ４が必要とするデータのソース・アドレスをｓｒｃ２−２とし、ラッチ回路Ｌ５が必要とするデータのソース・アドレスをｓｒｃ３−１とし、ラッチ回路Ｌ６が必要とするデータのソース・アドレスをｓｒｃ３−２とし、ラッチ回路Ｌ７が必要とするデータのソース・アドレスをｓｒｃ４−１とし、ラッチ回路Ｌ８が必要とするデータのソース・アドレスをｓｒｃ４−２とする。
【００４７】
バイパス制御回路１３は、そこで管理している命令が、いずれの機能ユニットのいずれのステージに存在するかを管理している。そして、バイパス制御回路１３は、４つの機能ユニット７−１〜７−４の８つのステージのいずれかに存在する命令が持つデスティネーション・アドレスと、実行ステージＥＸで実行される命令のソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２とが一致する場合は、一致するソース・アドレスに対応するラッチ回路へ、一致するデスティネーション・アドレスを持つ命令が存在するステージの結果バッファから、そこに保持されている命令の処理結果（演算結果）を転送する。すなわち、バイパス制御回路１３は、一致するソース・アドレスに対応するラッチ回路と、一致するデスティネーション・アドレスを持つ命令が存在するステージの結果バッファとの間にあるトライ・ステート・バッファを、制御信号によってオンさせる。
【００４８】
一方、バイパス制御回路１３は、ソース・アドレスが、管理している命令のいずれのデスティネーション・アドレスとも一致しない場合には、そのソース・アドレスに対応するラッチ回路へ、そのソース・アドレスに従って、レジスタ・ファイル５からデータが転送される。すなわち、バイパス制御回路１３は、管理している命令のいずれのデスティネーション・アドレスとも一致しないソース・アドレスに対応するラッチ回路と、レジスタ・ファイル５との間にあるトライ・ステート・バッファを、制御信号によってオンさせる。
【００４９】
図３および図４を参照して、具体例を挙げながらバイパス制御について説明する。結果バッファｅ４に保持されているＡＬＵａ４の演算結果（データ）と、これからラッチ回路Ｌ１で保持されるデータのソース・アドレスとが一致しているとする。この一致は、バイパス制御回路１３によって検出され、バイパス制御回路１３は、制御信号ｅ４−１−１を“１”とする。このような、“１”となっている制御信号ｅ４−１−１は、トライ・ステート・バッファＴ４９をオンにする。このため、結果バッファｅ４に保持されているＡＬＵａ４の演算結果（データ）が、バス１−１によって、ラッチ回路Ｌ１に転送される。
【００５０】
ＶＬＩＷプロセッサでは、スカラ・プロセッサと異なり、４つの機能ユニット７−１〜７−４の８つの結果バッファｅ１〜ｅ４，ｍ１〜ｍ４に保持されている８つの演算結果（データ）が、４つの機能ユニット７−１〜７−４の４つのＡＬＵａ１〜ａ４のいずれの入力ともなり得る。
【００５１】
図５は、図３のバイパス制御回路１３を示す概略ブロック図である。図５を参照して、バイパス制御回路は、フィールド制御回路２１−１，２１−２，２１−３，２１−４、命令管理回路１５、アドレスデコーダ１７および制御信号発生回路１９を含む。命令管理回路１５は、有効／無効フィールド（以下、「valid フィールド」という）２３、機能ユニットフィールド（以下、「pipeフィールド」という）２５およびステージフィールド（以下、「stage 値フィールド」という）２７からなる。
【００５２】
図６は、図５の命令管理回路１５を示す概略ブロック図である。なお、図５と同様の部分については同一の参照符号を付しその説明を適宜省略する。図６を参照して、命令管理回路は、複数のエントリｆ１〜ｆｎに分けられる。エントリｆ１〜ｆｎは、図３のレジスタ・ファイル５のアドレスに対応して設けられ、その数は、図３のレジスタ・ファイル５のアドレスの数と同じである。たとえば、図３のレジスタ・ファイル５のアドレス“１”に対応するのが、エントリｆ１である。また、デスティネーション・アドレス“１”は、図３のレジスタ・ファイル５のアドレス“１”を示すため、デスティネーション・アドレス“１”に対応するのはエントリｆ１である。さらに、ソース・アドレス“１”は図３のレジスタ・ファイル５のアドレス“１”を示すため、ソース・アドレス“１”に対応するのはエントリｆ１である。
【００５３】
再び図５を参照して説明する。フィールド制御回路２１−１は、機能ユニット７−１に投入される命令のデスティネーション・アドレスｄｅｓ１を受取る。そして、フィールド制御回路２１−１は、受取ったデスティネーション・アドレスｄｅｓ１に対応するエントリ（図６参照）のデータを更新するための複数の信号を生成する。この複数の信号は、信号address 、信号pipe set、信号valid set および信号stage rsetである。フィールド制御回路２１−２は、機能ユニット７−２へ投入される命令のデスティネーション・アドレスｄｅｓ２を受取り、フィールド制御回路２１−３は、機能ユニット７−３に投入される命令のデスティネーション・アドレスｄｅｓ３を受取り、フィールド制御回路２１−４は機能ユニット７−４に投入される命令のデスティネーション・アドレスｄｅｓ４を受取る。フィールド制御回路２１−２〜２１−４の動作は、フィールド制御回路２１−１と同様である。
【００５４】
命令管理回路１５は、エントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、どの機能ユニットのどのステージに存在するかを管理する。すなわち、命令管理回路１５は、エントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果（演算結果）が現在どの機能ユニットのどの結果バッファに存在するかを管理する。valid フィールド２３は、pipeフィールド２５およびstage フィールド２７のデータが有効か無効かを示すものである。pipeフィールド２５は、エントリに対応するデスティネーション・アドレスを持つ命令が、現在どの機能ユニットに存在するかを示すものである。すなわち、エントリに対応するデスティネーション・アドレスを持つ命令の処理結果（演算結果）がどの機能ユニットにあるかを示すものである。stage フィールド２７は、エントリに対応するデスティネーション・アドレスを持つ命令が現在どのステージに存在するかを示すものである。すなわち、エントリに対応するデスティネーション・アドレスを持つ命令の処理結果（演算結果）がどの結果バッファに存在するかを示すものである。
【００５５】
valid フィールド２３、pipeフィールド２５およびstage フィールド２７は、フィールド制御回路２１−１〜２１−４が生成した複数の信号に従ってセットまたはリセットされる。信号address は、これからセットまたはリセットしようとするエントリを、フィールド制御回路に入力されたデスティネーション・アドレスに従って決定する。すなわち、信号address は、フィールド制御回路に入力されたデスティネーション・アドレスに対応するエントリを選択するものである。信号valid set は、信号address に従ったエントリのvalid フィールド２３をセットする。これによって、信号address に従ったエントリのpipeフィールド２５およびstage フィールドのデータが有効であることが示される。信号pipe setは、信号address に従ったエントリのpipeフィールド２５をセットする。すなわち、信号pipe setは、フィールド制御回路に入力されたデスティネーション・アドレスを持つ命令が投入される機能ユニットを示すようにpipeフィールド２５をセットする。信号stage reset は、信号address に従ったエントリのstage フィールド２７をリセットする。そして、信号address に従ったエントリのstage フィールド２７は、そのエントリに対応するデスティネーション・アドレスを持つ命令がステージを移行するごとに新しくセットされる。このことについては後で詳しく説明する。
【００５６】
アドレスデコーダ１７は、図１のデコーダ３から、４つの命令の８個のソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２を受取り、デコードして、命令管理回路１５に転送する。命令管理回路１５は、アドレスデコーダ１７から転送された８個のソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２に対応するエントリのフィールド（valid フィールド２３，pipeフィールド２５およびstage フィールド２７）のデータを制御信号発生回路１９に転送する。８個のソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２が入力されているため、valid フィールド２３からは、８個の１ビットのデータ（信号valid ）が、pipeフィールド２５からは、２ビットの８個のデータ（信号pipe）が、stage フィールド２７からは２ビットの８個のデータ（信号stage ）が、制御信号発生回路１９に入力されることになる。制御信号発生回路１９は、命令管理回路１５の３つのフィールド２３，２５，２７から入力されたデータに基づき、トライ・ステート・バッファＴ１〜Ｔ７２を制御する制御信号ｅ１−１−１〜ｒ−４−２（図４参照）を発生する。
【００５７】
図７は、図５の制御信号発生回路１９を示す概略ブロック図である。図７を参照して、制御信号発生回路は、８つの制御回路Ｓ１−１，Ｓ１−２，Ｓ２−１，Ｓ２−２，Ｓ３−１，Ｓ３−２，Ｓ４−１，Ｓ４−２を含む。８つの制御回路Ｓ１−１〜Ｓ４−２は、８つのソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２に対応して設けられている。たとえば、ソース・アドレスｓｒｃ１−１に対応して設けられるのが制御回路Ｓ１−１である。図３，図４，図５および図７を参照して、制御回路Ｓ１−１に注目して説明する。制御回路Ｓ１−１は、ソース・アドレスｓｒｃ１−１に対応するエントリの３つのフィールド２３，２５，２７から３つの信号を受取る。すなわち、valid フィールド２３からは、１ビットの信号valid を、pipeフィールド２５からは２ビットの信号pipeを、stage フィールド２７からは２ビットの信号stage を受取る。信号valid は、信号pipeおよび信号stage が有効か無効かを示すものである。信号pipeは、ソース・アドレスｓｒｃ１−１と同じデスティネーション・アドレスを持つ命令（命令の処理結果）がどの機能ユニットに存在するかを示すものである。信号stage は、ソース・アドレスｓｒｃ１−１と同じデスティネーション・アドレスを持つ命令（命令の処理結果）がどのステージに存在するかを示すものである。制御回路Ｓ１−１は、このような信号valid 、信号pipeおよび信号stage に基づいて、バス１−１に接続されたトライ・ステート・バッファＴ１，Ｔ９，Ｔ１７，Ｔ２５，Ｔ３３，Ｔ４１，Ｔ４９，Ｔ５７，Ｔ６５を制御する制御信号ｅ１−１−１〜ｅ４−１−１、ｍ１−１−１〜ｍ４−１−１、ｒ１−１−１を生成する。
【００５８】
制御回路Ｓ１−２〜Ｓ４−２の動作は、制御回路Ｓ１−１の動作と同様である。すなわち、制御回路Ｓ１−２は、ソース・アドレスｓｒｃ１−２に対応して用いられ、ソース・アドレスｓｒｃ１−２に対応するエントリのフィールド２３，２５，２７から信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ１−２は、制御信号ｅ１−１−２〜ｅ２−１−２，ｍ１−１−２〜ｍ４−１−２，ｒ−１−２を生成する。制御回路Ｓ２−１は、ソース・アドレスｓｒｃ２−１に対応して用いられ、ソース・アドレスｓｒｃ２−１に対応するエントリのフィールド２３，２４，２７からの信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ２−１は、制御信号ｅ１−２−１〜ｅ４−２−１，ｍ１−２−１〜ｍ４−２−１，ｒ−２−１を生成する。制御回路Ｓ２−２は、ソース・アドレスｓｒｃ２−２に対応して用いられ、ソース・アドレスｓｒｃ２−２に対応するエントリのフィールド２３，２５，２７から、信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ２−２は、制御信号ｅ１−２−２〜ｅ４−２−２，ｍ１−２−２〜ｍ４−２−２，ｒ−２−２を受ける。制御回路Ｓ３−１は、ソース・アドレスｓｒｃ３−１に対応して用いられ、ソース・アドレスｓｒｃ３−１に対応するエントリのフィールド２３，２５，２７から、信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ３−１は、制御信号ｅ１−３−１〜ｅ４−３−１，ｍ１−３−１〜ｍ４−３−１，ｒ−３−１を生成する。
【００５９】
制御回路Ｓ３−２は、ソース・アドレスｓｒｃ３−２に対応して用いられ、ソース・アドレスｓｒｃ３−２に対応するエントリのフィールド２３，２５，２７から、信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ３−２は、制御信号ｅ１−３−２〜ｅ４−３−２，ｍ１−３−２〜ｍ４−３−２，ｒ−３−２を生成する。制御回路Ｓ４−１は、ソース・アドレスｓｒｃ４−１に対応して用いられ、ソース・アドレスｓｒｃ４−１に対応するエントリのフィールド２３，２５，２７から、信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ４−１は、制御信号ｅ１−４−１〜ｅ４−４−１，ｍ１−４−１〜ｍ４−４−１，ｒ−４−１を生成する。制御回路Ｓ４−２は、ソース・アドレスｓｒｃ４−２に対応して用いられ、ソース・アドレスｓｒｃ４−２に対応するエントリのフィールド２３，２４，２７から、信号valid ，信号pipeおよび信号stage を受ける。そして、制御回路Ｓ４−２は、制御信号ｅ１−４−２〜ｅ４−４−２，ｍ１−４−２〜ｍ４−４−２，ｒ−４−２を生成する。
【００６０】
図８は、図７の制御回路Ｓ１−１の詳細を示す回路図である。図８を参照して、制御回路Ｓ１−１は、３入力のＡＮＤ回路２９〜５１およびＮＯＲ回路５３を含む。ＡＮＤ回路２９〜３３，３７〜５１の入力に付されている丸印（○）は、反転された信号がＡＮＤ回路に入力されることを表わす。信号pipe［０］は、２ビットの信号pipeの第１ビット目を示すものであり、信号pipe［１］は、２ビットの信号pipeの第２ビット目を示すものである。信号stage ［０］は、２ビットの信号stage の第１ビット目を示すものであり、信号stage ［１］は、２ビットの信号stage の第２ビット目を示すものである。
【００６１】
ＡＮＤ回路２９〜３５には、信号valid 、信号pipe［０］および信号pipe［１］が入力される。ＡＮＤ回路３７〜５１には、信号stage ［０］および信号stage ［１］が入力される。ＡＮＤ回路３７，３９には、ＡＮＤ回路２９の出力信号が入力される。ＡＮＤ回路４１，４３には、ＡＮＤ回路３１の出力信号が入力される。ＡＮＤ回路４５，４７には、ＡＮＤ回路３３の出力信号が入力される。ＡＮＤ回路４９，５１には、ＡＮＤ回路３５の出力信号が入力される。ＮＯＲ回路５３には、ＡＮＤ回路３７〜５１の出力信号が入力される。
ＡＮＤ回路２９〜３５は、機能ユニットを識別するためのものである。すなわち、ソース・アドレスｓｒｃ１−１に対応するエントリで管理している命令（命令の処理結果）がどの機能ユニットに存在するかを識別するためのものである。ソース・アドレスｓｒｃ１−１に対応するエントリのpipeフィールド２５およびstage フィールド２７のデータが有効な場合、すなわち、信号pipe［０］，信号pipe［１］，信号stage ［０］，信号stage ［１］が有効なときは、信号valid は“１”となっている。ＡＮＤ回路３７〜５１は、ステージを識別するためのものである。すなわち、ソース・アドレスｓｒｃ１−１に対応するエントリによって管理している命令（命令の処理結果）がどのステージにあるのかを識別するためのものである。
【００６２】
このようにＡＮＤ回路２９〜５１によって、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令がどの機能ユニットのどのステージに存在するかを特定する。すなわち、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果がどの機能ユニットのどの結果バッファに存在するかを特定する。そして、特定された結果バッファに保持されている命令の処理結果を、バス１−１を介して、ラッチ回路Ｌ１に転送するため、バス１−１に接続され、特定された結果バッファに対応するトライ・ステート・バッファをオンにするための制御信号ｅ１−１−１〜ｅ４−１−１，ｍ１−１−１〜ｍ４−１−１を発生する。
【００６３】
図３および図８を参照して、具体的な例を挙げて説明する。ここで、信号pipeが“０”のときは機能ユニット７−１を示し、信号pipeが“１”のときは機能ユニット７−２を示し、信号pipeが“２”のときは機能ユニット７−３を示し、信号pipeが“３”のときは機能ユニット７−４を示すとする。また、信号stage が“０”のときは命令デコードステージＩＤを示し、信号stage が“１”のときは実行ステージＥＸを示し、信号stage が“２”のときはメモリ・アクセスステージＭＥＭを示し、信号stage が“３”のときは書戻しステージＷＢを示すとする。信号pipeが“０”で信号stage が“１”の場合は、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令（命令の処理結果）が、機能ユニット７−１の実行ステージＥＸの結果バッファｅ１に存在することを示す。このため、トライ・ステート・バッファＴ１をオンにして、結果バッファｅ１に格納されている命令の処理結果を、ラッチ回路Ｌ１へバイパスする必要がある。そこで、信号pipeが“０”であるため、信号pipe［０］および信号pipe［１］が“０”となっている。そして、信号valid が“１”の場合は、ＡＮＤ回路２９の出力のみが“１”となる。また、信号stage が“１”であるため、信号stage ［０］が“０”であり、信号stage ［１］が“１”となっている。このため、ＡＮＤ回路３７の出力のみが“１”となる。すなわち、制御信号ｅ１−１−１のみが“１”となる。この“１”となった制御信号ｅ１−１−１によって、トライ・ステート・バッファＴ１がオンになる。
【００６４】
ソース・アドレスｓｒｃ１−１に対応するエントリのpipeフィールド２５およびstage フィールド２７のデータが無効である場合、すなわち、信号pipe［０］，信号pipe［１］，信号stage ［０］，信号stage ［１］が無効の場合には、信号valid は“０”となっている。ソース・アドレスｓｒｃ１−１に対応するエントリのpipeフィールド２５およびstage フィールド２７のデータが無効であるということは、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果が、いずれの機能ユニットのいずれの結果バッファにも存在しないことを示す。したがって、このような場合には、レジスタ・ファイル５からソース・アドレスｓｒｃ１−１に対応するデータをラッチ回路Ｌ１へ読出す必要がある。すなわち、トライ・ステート・バッファＴ６５をオンにする制御信号を発生する必要がある。ここで、信号valid が“０”であるため、ＡＮＤ回路２９〜３５のすべての出力信号は“０”となる。さらに、ＡＮＤ回路２９〜３５のすべての出力信号が“０”であるため、ＡＮＤ回路３７〜５１のすべての出力信号も“０”となる。これによって、ＮＯＲ回路５３の出力信号のみが“１”となる。すなわち、制御信号ｒ−１−１のみが“１”となり、トライ・ステート・バッファＴ６５をオンにする。なお、図７の制御回路Ｓ１−２〜Ｓ４−２の構成は、図８に示した制御回路Ｓ１−１の構成と同じである。
【００６５】
図９は、図５のstage フィールド２７の一部およびstage フィールド２７の一部を管理するためのstage フィールド管理回路を示す概略ブロック図である。図９を参照して、stage フィールド５５は、図５のstage フィールド２７のうち、１つのエントリに対応するものである。すなわち、stage フィールド５５は、１つのエントリのstage フィールドである。そして、stage フィールド５５に対応して、stage フィールド管理回路５４が設けられる。すなわち、命令管理回路１５（図６）は、複数のエントリｆ１〜ｆｎに対応して複数のstage フィールド管理回路５４を備えていることになる。
【００６６】
stage フィールド管理回路５４は、加算回路５７、データ比較器５９および参照回路６１を含む。
【００６７】
エントリのstage フィールド５５は、そのエントリに対応するデスティネーション・アドレスを持つ命令がどのステージに存在するかを示すものである。すなわち、エントリのstage フィールド５５は、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果がどの結果バッファに存在するかを示すためのものである。ここで、stage フィールド５５が初期状態または信号stage reset によってリセットされた状態の場合には、stage フィールド５５は“０”となっている。すなわち、エントリのstage フィールド５５は、そのエントリに対応するデスティネーション・アドレスを持つ命令が命令デコードステージＩＤに存在するときは、“０”となっている。エントリのstage フィールド５５は、そのエントリに対応するデスティネーション・アドレスを持つ命令が実行ステージＥＸに存在するときは、すなわち、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果が実行ステージＥＸの結果バッファに存在するときは、“１”となっている。エントリのstage フィールド５５は、そのエントリに対応するデスティネーション・アドレスを持つ命令がメモリ・アクセスステージＭＥＭに存在するときは、すなわち、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果がメモリ・アクセスステージＭＥＭの結果バッファに存在するときは、“２”となっている。エントリのstage フィールド５５は、そのエントリに対応するデスティネーション・アドレスを持つ命令が書戻しステージＷＢに存在するときは、すなわち、そのエントリに対応するデスティネーション・アドレスを持つ命令の処理結果が書戻しステージＷＢに存在するときは、“３”となっている。
【００６８】
このようにstage フィールド５５のデータをセットしていくのは（更新していくのは）は、stage フィールド管理回路５４である。stage フィールド５５の値には、クロック・サイクルごとに、すなわち、命令がステージを移行するごとに、加算回路５７によって、“１”が加算される。そして、その加算値は、再びstage フィールド５５に格納される。データ比較器５９は、stage フィールド５５の値と、参照回路６１に格納されている値“３”とを比較する。そして、データ比較器５９は、stage フィールド５５の値が“３”のときは、信号valid reset を生成する。すなわち、命令が、書戻しステージＷＢに移行した場合には、データ比較器５９から信号valid reset が出力され、stage フィールド管理回路５４に対応するエントリのvalid フィールドがリセットされる。リセットされたvalid フィールドは、pipeフィールドおよびstage フィールドが無効であることを示す。このように、命令が書戻しステージＷＢに存在するときに、信号valid reset を出力するのは、命令が書戻しステージＷＢに存在するときはバイパスする必要がなく、レジスタ・ファイル５から直接データを読出せばよいからである。
【００６９】
再び図３，図５および図６を参照して、命令管理回路１５のセットまたはリセットについて、具体例を挙げながら説明する。機能ユニット７−１に投入される命令のデスティネーション・アドレスｄｅｓ１が“１”とする。このとき、フィールド制御回路２１−１は、信号address を“１”とする。信号address “１”は、デスティネーション・アドレスｄｅｓ１“１”に対応するエントリｆ１を選択する。すなわち、この選択されたエントリｆ１の３つのフィールド２３，２５，２７がセットまたはリセットされることになる。そして、フィールド制御回路２１−１は、エントリｆ１のvalid フィールド２３を“１”にセットするための信号valid set を発生する。なお、valid フィールド２３が“１”のときには、pipeフィールド２５およびstage フィールド２７のデータが有効であることを示し、valid フィールド２３が“０”の場合には、pipeフィールド２５およびstage フィールド２７のデータが無効であることを示す。
【００７０】
また、フィールド制御回路２１−１は、エントリｆ１のpipeフィールド２５を“０”にセットするための信号pipe setを発生する。なお、pipeフィールド２５が“０”のときは、機能ユニット７−１を示し、pipeフィールド２５が“１”のときは機能ユニット７−２を示し、pipeフィールド２５が“２”のときは機能ユニット７−３を示し、pipeフィールド２５が“３”のときは機能ユニット７−４を示す。さらに、フィールド制御回路２１−１は、エントリｆ１のstage フィールド２７をリセットするための信号stage reset を発生する。なお、stage フィールド２７に、信号stage reset が与えられた場合には、stage フィールド２７は“０”となる。また、stage フィールド２７が“０”の場合は、命令が命令デコードステージＩＤに存在することを示し、stage フィールド２７が“１”の場合は、命令が実行ステージＥＸに存在することを示し、stage フィールド２７が“２”の場合には、命令がメモリ・アクセスステージＭＥＭに存在することを示し、stage フィールド２７が“３”のときは命令が書戻しステージＷＢに存在することを示す。
【００７１】
次に、図３、図５、図７、図８、図６を参照して、具体例を挙げながら、バイパス制御回路１３が行なうバイパス制御について説明する。アドレスデコーダ１７に入力されるソース・アドレスｓｒｃ１−１が“２”とする。アドレスデコーダ１７は、ソース・アドレスｓｒｃ１−１“２”に対応する命令管理回路１５のエントリｆ２を読出し、ソース・アドレスｓｒｃ１−１“２”に対応するエントリｆ２のvalid フィールド２３、pipeフィールド２５およびstage フィールド２７のデータを制御信号発生回路１９に送信する。すなわち、制御回路Ｓ１−１（図７）には、valid フィールド２３から信号valid が入力され、pipeフィールド２５からは信号pipeが入力され、stage フィールド２７からは信号stage が入力されることになる。ここで、信号valid が“１”、信号pipeが“１”、信号stage が“１”とする。すなわち、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令（命令の処理結果）は、機能ユニット７−２の結果バッファｅ２に存在することになる。この場合において、信号valid が“１”、信号pipe［０］が“０”、信号pipe［１］が“１”であるため、ＡＮＤ回路３１（図８）の出力のみが“１”となる。また、信号stage ［０］が“０”、信号stage ［１］が“１”であるため、ＡＮＤ回路４１の出力のみが“１”となる。すなわち、制御信号ｅ２−１−１のみが“１”となる。これによって図３のトライ・ステート・バッファＴ１７がオンし、結果バッファｅ２に保持されている命令の処理結果がバス１−１を介してラッチ回路Ｌ１に転送されることになる。
【００７２】
図５および図６を参照して、実施の形態１によるＶＬＩＷプロセッサでは、優先順位付選択（比較）が不要な理由を説明する。命令管理回路１５が、あるエントリによって、命令を管理している場合において、そのエントリに対応するデスティネーション・アドレスを持つ命令が、機能ユニット７−１〜７−４のいずれかに投入されるときは、すなわち、フィールド制御回路２１−１〜２１−４のいずれかに、そのエントリに対応するデスティネーション・アドレスが新たに入力されるときは、そのエントリは新たに投入される命令を管理する。たとえば、デスティネーション・アドレス“１”に対応するエントリは、エントリｆ１ひとつであるため、現在管理している命令のデスティネーション・アドレスが“１”である場合において、次に投入される命令のデスティネーション・アドレスも“１”である場合には、エントリｆ１に上書きされることになるのである。このように、命令管理回路１５では、上書きされるので、優先順位付選択は不要になる。
【００７３】
以上のように、実施の形態１によるＶＬＩＷプロセッサでは、バイパス制御回路によって、命令の処理結果がいずれの機能ユニットのいずれの結果バッファに存在するかを管理して、バイパス制御を行なっている。このため、デスティネーション・アドレスとソース・アドレスとを比較するための比較器が不要になるとともに、優先順位付選択をも不要になる。その結果、実施の形態１によるＶＬＩＷプロセッサでは、回路が簡単になり、高速にバイパス制御を行なうことができる。
【００７４】
（実施の形態２）
実施の形態２による並列処理プロセッサとしてのＶＬＩＷプロセッサの構成は、図１および図３に示した実施の形態１によるＶＬＩＷプロセッサの構成と同様である。実施の形態２によるＶＬＩＷプロセッサの命令デコードステージＩＤでデコードされた基準命令の形式は図２のものと同様である。実施の形態２によるＶＬＩＷプロセッサにおいて、トライ・ステート・バッファＴ１〜Ｔ７２と、トライ・ステート・バッファＴ１〜Ｔ７２を制御する制御信号ｅ１−１−１〜ｒ４−２との関係は、図４に示したものと同様である。実施の形態２によるＶＬＩＷプロセッサのバイパス制御回路は、図４に示した実施の形態１によるバイパス制御回路と同様である。
【００７５】
実施の形態２によるＶＬＩＷプロセッサの命令管理回路は、図６に示した実施の形態１によるＶＬＩＷプロセッサの命令管理回路と同様である。ただし、以下の点が異なる。実施の形態１によるＶＬＩＷプロセッサの命令管理回路は、pipeフィールド２５において、４つの機能ユニット７−１〜７−４を、２ビットで表現している。これに対し、実施の形態２によるＶＬＩＷプロセッサでは、pipeフィールド２５において、４つの機能ユニット７−１〜７−４を、４ビットのビット・ベクタで表現している。たとえば、実施の形態２によるＶＬＩＷプロセッサの命令管理回路では、pipeフィールド２５の第１ビットが“１”の場合は、管理している命令が、機能ユニット７−１に存在することを示し、pipeフィールド２５の第２ビットが“１”の場合は、管理している命令が、機能ユニット７−２に存在することを示し、pipeフィールド２５の第３ビットが“１”の場合は、管理している命令が、機能ユニット７−３に存在することを示し、pipeフィールド２５の第４ビットが“１”の場合は、管理している命令が、機能ユニット７−４に存在することを示す。このように、実施の形態２によるＶＬＩＷプロセッサでは、機能ユニット７−１〜７−４と同数のビット数を有するビット・ベクタで、各機能ユニットを表現する。pipeフィールド２５において、４ビットのビット・ベクタで、各機能ユニットを表現しているため、pipeフィールド２５から、制御信号発生回路１９（図５）に与えられる信号pipeのビット数も４ビットになる。
【００７６】
実施の形態２によるＶＬＩＷプロセッサの制御信号発生回路は、図７に示した実施の形態１によるＶＬＩＷプロセッサの制御信号発生回路と同様である。ただし、異なるのは以下の点である。上述のように、pipeフィールド２５（図６）において、各機能ユニット７−１〜７−４を、４ビットのビット・ベクタで表現しているため、pipeフィールド２５から制御回路Ｓ１−１〜Ｓ４−２に与えられる信号pipeが４ビットになる。これによって、実施の形態２によるＶＬＩＷプロセッサの制御回路Ｓ１−１〜Ｓ４−２の具体的な回路構成は、図８に示した実施の形態１によるＶＬＩＷプロセッサの制御回路Ｓ１−１〜Ｓ４−２の具体的な回路構成と異なってくる。
【００７７】
図１０は、実施の形態２によるＶＬＩＷプロセッサの制御回路Ｓ１−１（図７）の詳細を示す回路図である。なお、図８と同様な部分については同様の参照符号を付し、その説明は適宜省略する。図１０を参照して、制御回路Ｓ１−１は、ＡＮＤ回路６３〜６９，３７〜５１およびＮＯＲ回路５３を含む。ＡＮＤ回路６３〜６９には、信号valid が入力される。ＡＮＤ回路６３には、信号pipe［０］が入力される。ＡＮＤ回路６５には、信号pipe［１］が入力される。ＡＮＤ回路６７には、信号pipe［２］が入力される。ＡＮＤ回路６９には、信号pipe［３］が入力される。
【００７８】
図５も参照して、信号pipe［０］は、pipeフィールドの第１ビット目に対応し、すなわち、信号pipeの第１ビット目を示し、信号pipe［１］は、pipeフィールドの第２ビット目に対応し、すなわち、信号pipeの第２ビット目を示し、信号pipe［２］は、pipeフィールドの第３ビット目に対応し、すなわち、信号pipeの第３ビット目を示し、信号pipe［３］は、pipeフィールドの第４ビット目に対応し、すなわち、信号pipeの第４ビット目を示すものである。すなわち、信号pipe［０］が“１”のときには、管理する命令（命令の処理結果）が機能ユニット７−１に存在することを示し、信号pipe［１］が“１”の場合は、管理する命令（命令の処理結果）が機能ユニット７−２に存在することを示し、信号pipe［２］が“１”の場合は、管理する命令（命令の処理結果）が機能ユニット７−３に存在することを示し、信号pipe［４］が“１”の場合は、管理する命令（命令の処理結果）が機能ユニット７−４に存在することを示す。したがって、ＡＮＤ回路６３〜６９によって、管理している命令がどの機能ユニットに存在するかを識別できる。なお、制御回路Ｓ１−２〜Ｓ４−２の具体的な回路構成は図１０に示した制御回路Ｓ１−１と同じである。
【００７９】
実施の形態２によるＶＬＩＷプロセッサのstage フィールドおよびstage フィールド管理回路は、図９に示した実施の形態１によるstage フィールドおよびstage フィールド管理回路と同様である。
【００８０】
以上のように、実施の形態２によるＶＬＩＷプロセッサでは、バイパス制御回路のpipeフィールド２５（図５）において、４つの機能ユニット７−１〜７−４（図３）を４ビットのビット・ベクタで表現している。すなわち、機能ユニットと同数のビット数を有するビット・ベクタで、機能ユニットを表現している。このため、制御回路（図１０）が、実施の形態１によるＶＬＩＷプロセッサの制御回路（図８）より簡単になる。その結果、実施の形態２によるＶＬＩＷプロセッサでは、実施の形態１によるＶＬＩＷプロセッサに比し、さらに高速に、バイパス制御を行なうことができる。
【００８１】
（実施の形態３）
実施の形態３による並列処理プロセッサとしてのＶＬＩＷプロセッサの構成は、図１および図３に示した実施の形態１によるＶＬＩＷプロセッサと同様である。実施の形態３によるＶＬＩＷプロセッサの命令デコードステージＩＤでデコードされた基準命令の形式は図２に示したものと同様である。
【００８２】
実施の形態３によるＶＬＩＷプロセッサのトライ・ステート・バッファＴ１〜Ｔ７２と、制御信号ｅ１−１−１〜ｒ−４−２との対応関係は、図４に示したのと同様である。実施の形態４によるＶＬＩＷプロセッサのバイパス制御回路は、図５に示した実施の形態１によるＶＬＩＷプロセッサのバイパス制御回路と同様である。
【００８３】
実施の形態３によるＶＬＩＷプロッセサの命令管理回路は、図６に示した実施の形態１によるＶＬＩＷプロセッサの命令管理回路と同様である。ただし、以下の点が異なる。実施の形態１によるＶＬＩＷプロセッサのstage フィールド２７では、管理している命令が存在するステージを、２ビットで表現している。これに対し、実施の形態３によるＶＬＩＷプロセッサの命令管理回路のstage フィールド２７では、管理している命令が存在するステージを４ビットのビット・ベクタで表現している。たとえば、命令デコードステージＩＤに、命令が存在する場合は、stage フィールド２７の第１ビットを“１”にセットし、実行ステージＥＸに命令が存在する場合は、stage フィールド２７の第２ビットを“１”にセットし、メモリ・アクセスステージＭＥＭに命令が存在する場合は、stage フィールド２７の第３ビットを“１”にセットし、書戻しステージＷＢに命令が存在する場合は、stage フィールド２７の第４ビットを“１”にセットする。このように、stage フィールド２７においては、４つのステージを４ビットのビット・ベクタで表現しているため、stage フィールド２７から制御信号発生回路１９（図５）へ与えられる信号stage も４ビットとなる。
【００８４】
実施の形態３によるＶＬＩＷプロセッサの制御信号発生回路は、図７に示した実施の形態１によるＶＬＩＷプロセッサの制御信号発生回路と同様である。ただし以下の点が異なる。上述したように、実施の形態３によるＶＬＩＷプロセッサでは、stage フィールド２７において、４つのステージを４つのビット・ベクタで表現しているため、stage フィールド２７から制御回路Ｓ１−１〜Ｓ４−２に与えられる信号stage も４ビットになる。このため、制御回路Ｓ１−１〜Ｓ４−２の具体的な回路構成が実施の形態１によるＶＬＩＷプロセッサの制御回路Ｓ１−１〜Ｓ４−２と異なってくる。
【００８５】
図１１は、本発明の実施の形態３によるＶＬＩＷプロセッサの制御回路（図７）の詳細を示す回路図である。なお、図８と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【００８６】
図１１を参照して、制御回路Ｓ１−１は、ＡＮＤ回路２９〜３５，７１〜８５およびＮＯＲ回路５３を含む。ＡＮＤ回路７１，７３には、ＡＮＤ回路２９の出力信号が入力される。ＡＮＤ回路７５，７７には、ＡＮＤ回路３１の出力信号が入力される。ＡＮＤ回路７９，８１には、ＡＮＤ回路３３からの出力信号が入力される。ＡＮＤ回路８３，８５には、ＡＮＤ回路３５からの出力信号が入力される。ＡＮＤ回路７１，７５，７９，８３には、信号stage ［１］が入力される。ＡＮＤ回路７３，７７，８１，８５には、信号stage ［２］が入力される。
【００８７】
ここで、信号stage ［１］は、stage フィールド２７（図５）の第２ビット目の値、すなわち、信号stage の第２ビット目を示している。すなわち、信号stage ［１］は、管理している命令が、命令実行ステージＥＸに存在するか否かを示す信号である。信号stage ［２］は、stage フィールド２７の第３ビット目の値、すなわち、信号stage の第３ビット目を示している。すなわち、stage ［２］は、管理している命令が、メモリ・アクセスステージＭＥＭに存在するか否かを示す信号である。具体的に言うと、信号［１］が、“１”のときは、管理している命令が、命令実行ステーションＥＸに存在することを示す。また、信号［２］が“１”のときは、管理している命令が、メモリ・アクセスステージＭＥＭに存在することを示す。なお、制御回路Ｓ１−１では、実行ステージＥＸの結果バッファｅ１〜ｅ４およびメモリ・アクセスステージＭＥＭの結果バッファｍ１〜ｍ４に保持されている命令の処理結果をバイパスすることを目的としているため、stage フィールド２７の第１ビット目に対応する信号stage ［０］および、stage フィールド２７の第４ビット目に対応する信号stage ［３］は、制御回路Ｓ１−１に入力する必要はない。ここで、図８（実施の形態１）では、ステージを識別するためのＡＮＤ回路３７〜５１は、３入力となっているが、図１１において、ステージを識別するためのＡＮＤ回路７１〜８５は、２入力となっている。
【００８８】
図３および図１１を参照して、具体例を挙げて動作について説明する。ラッチ回路Ｌ１が必要とするデータのソース・アドレスと、結果バッファｅ３に存在する命令の処理結果（データ）のデスティネーション・アドレスとが一致する場合を考える。この場合、信号valid および信号pipe［０］は“１”であり、信号pipe［１］は０である。このため、ＡＮＤ回路３３の出力信号のみが“１”となる。そして、stage ［１］が“１”であり、信号stage ［２］が“０”である。このため、ＡＮＤ回路７９の出力信号のみが“１”となる。すなわち、制御信号ｅ３−１−１のみが“１”となる。これによってトライ・ステート・バッファＴ３３がオンになり、結果バッファｅ３に保持されている命令の処理結果がラッチ回路Ｌ１に転送されることになる。
【００８９】
また、ラッチ回路Ｌ１にこれから投入されるデータのソース・アドレスが８つの結果バッファｅ１〜ｅ４，ｍ１〜ｍ４に保持されている８つの命令の処理結果の８つのデスティネーション・アドレスのいずれとも一致しない場合には、信号valid が“０”である。このため、ＡＮＤ回路７１〜８５の出力信号はすべて“０”になる。これによって、ＮＯＲ回路５３の出力が、“１”となる。すなわち、制御信号ｒ−１−１が“１”となる。これによって、トライ・ステート・バッファＴ６５がオンし、レジスタ・ファイル５からデータがラッチ回路Ｌ１に投入される。なお、制御回路Ｓ１−２〜Ｓ４−２の回路構成は、図１１に示した制御回路と同じである。
【００９０】
図１２は、実施の形態３によるＶＬＩＷプロセッサのstage フィールド２７（図５）の一部およびstage フィールド２７の一部を管理するビット・シフタを示す概略ブロック図である。図１２を参照して、stage フィールドの一部８７は、stage フィールド２７（図５）の一部であって、１つのエントリに対応するものである。したがって、stage フィールドの一部８７に対応して設けられるビット・シフタ８９もまた、１つのエントリに対応するものである。stage フィールドの一部８７では、４ビットのビット・ベクタで、ステージを識別している。したがって、ビット・シフタ８９によって、命令が命令デコードステージＩＤに存在するときには、stage フィールドの一部８７の第１ビット目［０］を“１”にセットし、命令が実行ステージＥＸに存在するときには、stage フィールドの一部８７の第２ビット目［１］を“１”にセットし、命令がメモリ・アクセスステージＭＥＭに存在するときは、stage フィールドの一部８７の第３ビット目［２］を“１”にセットし、命令が書戻しステージＷＢに存在するときは、stage フィールドの一部８７の第４ビット目［３］を“１”にセットする。
【００９１】
すなわち、ビット・シフタ８９は、各ステージへ移行するごとに、すなわち、クロック・サイクルごとに、移行したステージに対応する、ビット・ベクタのビットをセットする。たとえば、命令が、実行ステージＥＸに存在するときは、stage フィールドの一部８７のビット・ベクタは、０１００になっている。valid フィールド２３（図５）をリセットするための信号valid reset は、命令が、書戻しステージＷＢに進んだときに発生すればよい。このため、stage フィールドの一部８７の第４ビット［３］の値をそのまま信号valid reset とする。
【００９２】
以上のように、実施の形態３によるＶＬＩＷプロセッサでは、ステージをビット・ベクタで表わしている。すなわち、４つのステージを４ビットのビット・ベクタで表わしている。このため、制御回路（図１１）およびstage フィールド２７（図５）を管理する回路（図１２のビット・シフタ８９）が、実施の形態１によるＶＬＩＷプロセッサの制御回路（図８）およびstage フィールド２７を管理する回路（図９のstage フィールド管理回路５４）に比し、簡単になる。その結果、実施の形態３によるＶＬＩＷプロセッサでは、さらに、高速に、制御信号ａ１−１−１〜ｒ−４−２および信号valid reset を発生することができ、さらに、高速にバイパス制御を行なうことができる。
【００９３】
また、実施の形態２によるＶＬＩＷプロセッサの特徴部分と、実施の形態３によるＶＬＩＷプロセッサの特徴部分とを組合せることができる。すなわち、４つの機能ユニット７−１〜７−４を４ビットのビット・ベクタで表わし、かつ、４つのステージ（命令デコードステージＩＤ、実行ステージＥＸ、メモリ・アクセスステージＭＥＭおよび書戻しステージＷＢ）を４ビットのビット・ベクタで表わす。このようにした場合、制御回路Ｓ１−１〜Ｓ４−２（図７）の具体例な回路構成が異なってくる。
【００９４】
図１３は、実施の形態２によるＶＬＩＷプロセッサの特徴部分と実施の形態３によるＶＬＩＷプロセッサの特徴部分とを組合せた場合の制御回路Ｓ１−１（図７）の詳細を示す回路図である。図１３を参照して、制御回路Ｓ１−１は、ＡＮＤ回路６３〜６９，７１〜８５およびＮＯＲ回路５３を含む。なお、図１０および図１１と同様の部分については同一の参照符号を付し説明は省略する。また、制御回路Ｓ１−２〜Ｓ４−２の具体的な回路構成も、図１３の制御回路Ｓ１−１と同じである。このように、実施の形態２によるＶＬＩＷプロセッサの特徴部分と実施の形態３によるＶＬＩＷプロセッサの特徴部分を組合せた場合には、実施の形態２によるＶＬＩＷプロセッサの制御回路（図１０）または実施の形態３によるＶＬＩＷプロセッサの制御回路（図１１）に比し、制御回路が簡単になる。その結果、実施の形態２によるＶＬＩＷプロセッサまたは実施の形態３によるＶＬＩＷプロセッサよりもさらに高速にバイパス制御を行なうことができる。
【００９５】
（実施の形態４）
実施の形態４による並列処理プロセッサとしてのＶＬＩＷプロセッサの構成は、図１および図３に示した実施の形態１によるＶＬＩＷプロセッサの構成と同様である。実施の形態４によるＶＬＩＷプロセッサの命令デコードステージＩＤでデコードされた基準命令の形式は、図２に示したものと同様である。実施の形態４によるＶＬＩＷプロセッサのトライ・ステート・バッファＴ１〜Ｔ７２と、制御信号ｅ１−１−１〜ｒ−４−２との対応関係は、図４に示したものと同様である。
【００９６】
図１４は、実施の形態４によるＶＬＩＷプロセッサのバイパス制御回路１３（図３）を示す概略ブロック図である。なお、図５と同様の部分については同一の参照符号を付しその説明を適宜省略する。図１４を参照して、バイパス制御回路は、フィールド制御回路２１−１〜２１−４、命令管理回路８８、アドレスデコーダ１７および制御信号発生回路９０を含む。命令管理回路８８は、機能ユニットフィールド（以下、「pipeフィールド」という）２５およびステージフィールド（以下、「stage フィールド」という）２７を含む。
【００９７】
図５のバイパス制御回路と、図１４のバイパス制御回路が異なるのは、図１４のバイパス制御回路には、図５のバイパス制御回路のようなvalid フィールド２３がないことである。実施の形態４によるＶＬＩＷプロセッサのバイパス制御回路では、以下のようにして、pipeフィールド２５およびstage フィールド２７のデータが有効か無効かを判断している。
【００９８】
なお、命令管理回路８８は、図６の命令管理回路と同様に、複数のエントリｆ１〜ｆｎに分かれている。
【００９９】
pipeフィールド２５は、実施の形態２によるＶＬＩＷプロセッサのpipeフィールドと同様のものである。すなわち、４つの機能ユニット７−１〜７−４を、４ビットのビット・ベクタで表わしている。そして、あるエントリのpipeフィールド２５において、ビット・ベクタの第１ビット〜第４ビットの値のうちいずれか１つが“１”の場合は、そのエントリのpipeフィールド２５およびstage フィールド２７のデータは有効であるとする。一方、あるエントリのpipeフィールド２５において、ビット・ベクタの第１ビット〜第４ビットの値のすべてが“０”の場合は、そのエントリのpipeフィールド２５およびstage フィールド２７のデータは無効であるとする。
【０１００】
このようにする場合には、一番最初にpipeフィールド２５のビット・ベクタのすべてのビットを“０”に初期化しておく必要がある。また、命令が書戻しステージＷＢに存在する場合は、その命令が持つデスティネーション・アドレスに対応するエントリのpipeフィールド２５において、ビット・ベクタのすべてのビットをリセットする必要がある。なぜならば、命令（命令の処理結果）が書戻しステージＷＢに存在するときには、レジスタ・ファイルから直接データを読出せばよく、バイパスする必要がないからである。また、stage フィールド２７を管理するstage フィールド管理回路は、図９に示したものと同様である。したがって、pipeフィールド２５において、ビット・ベクタのすべてのビットのリセットは、図９のstage フィールド管理回路５４が発生する信号valid reset によって行なわれる。
【０１０１】
pipeフィールド２５では、４ビットのビット・ベクタによって機能ユニットを表わしているため、制御信号発生回路９０には、それに対応して４ビットの信号pipeがpipeフィールド２５から与えられることになる。なお、ソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２は８個であるため、pipeフィールド２５からは、４ビットの８個の信号pipeが制御信号発生回路９０に与えられる。
【０１０２】
図１５は、図１４の制御信号発生回路９０を示す概略ブロック図である。なお、図７と同様の部分については同一の参照符号を付しその説明は適宜省略する。図１５を参照して、制御回路Ｓ１−１には、４ビットの信号pipeおよび２ビットの信号stage が与えられる。これに応じて、制御回路Ｓ１−１は制御信号ｅ１−１−１〜ｅ４−１−１，ｍ１−１−１〜ｍ４−１−１，ｒ−１−１を発生する。なお、制御回路Ｓ１−２〜Ｓ４−２についても制御回路Ｓ１−１と同様である。
【０１０３】
図１６は、図１５の制御回路Ｓ１−１の詳細を示す回路図である。図１６を参照して、制御回路Ｓ１−１は、ＡＮＤ回路９１〜１０５およびＮＯＲ回路５３を含む。ＡＮＤ回路９１〜１０５には、信号stage ［０］および信号stage ［１］が入力される。ＡＮＤ回路９１，９３には、信号pipe［０］が入力される。ＡＮＤ回路９５，９７には、信号pipe［１］が入力される。ＡＮＤ回路９９，１０１には、信号pipe［２］が入力される。ＡＮＤ回路１０３，１０５には、信号pipe［３］が入力される。ここで、信号pipe［０］、信号pipe［１］、信号pipe［２］および信号pipe［３］は、それぞれ、図１０（実施の形態２）に示した信号pipe［０］、信号pipe［１］、信号pipe［２］および信号pipe［３］と同様である。信号stage ［０］および信号stage ［１］は、それぞれ、図１０に示した信号stage ［０］および信号stage ［１］と同様のものである。
【０１０４】
図１６の制御回路Ｓ１−１の動作について、図３も参照しながら具体例を挙げて説明する。ラッチ回路Ｌ１でこれから必要とされるデータのソース・アドレスと、結果バッファｅ３に保持されている命令の処理結果（データ）のデスティネーション・アドレスとが一致している場合を考える。この場合には、信号pipe［０］、信号pipe［１］および信号pipe［３］は“０”であり、信号pipe［２］は“１”である。また、信号stage ［０］は“０”であり、信号stage ［１］は“１”である。このため、ＡＮＤ回路９９の出力信号のみが“１”となる。すなわち制御信号ｅ３−１−１のみが“１”となる。このため、トライ・ステート・バッファＴ３３がオンになり、結果バッファｅ３に保持されている命令の処理結果がラッチ回路Ｌ１に転送されることになる。
また、ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスが、結果バッファｅ１〜ｅ４，ｍ１〜ｍ４に存在する命令の処理結果（データ）のデスティネーション・アドレスのいずれとも一致しない場合、すなわち、ラッチ回路Ｌ１でこれから必要とされるデータのソース・アドレスに対応するエントリのpipeフィールドおよびstage フィールドのデータが無効である場合は、信号pipe［０］〜pipe［３］のすべてが“０”となる。したがって、ＡＮＤ回路９１〜１０５の出力信号はすべて“０”となる。これによって、ＮＯＲ回路５３から出力される制御信号ｒ−１−１は“１”となる。これに応じて、トライ・ステート・バッファＴ６５がオンになり、レジスタ・ファイル５から直接データがラッチ回路Ｌ１に読出されることになる。なお、制御回路ｓ１−２〜ｓ４−２の回路構成も、図１６に示した制御回路ｓ１−１の回路構成と同じである。
【０１０５】
以上のように、実施の形態４によるＶＬＩＷプロセッサでは、pipeフィールド２５において、４つの機能ユニットを４ビットのビット・ベクタで表わし、pipeフィールド２５に、図５に示したようなvalid フィールド２３の役割を果たさせている。このため、実施の形態４によるＶＬＩＷプロセッサでは、その命令管理回路８８が、実施の形態１による命令管理回路１５（図５）に比し小さくなる。
【０１０６】
また、実施の形態４によるＶＬＩＷプロセッサでは、４つの機能ユニットを４ビットのビットベクタで表わすことで、pipeフィールド２５に、図５に示したようなvalid フィールド２３の役割を果たさせている。このため、図５で示したようなvalid フィールド２３からの信号valid がなくなる。これによって、制御回路Ｓ１−１〜Ｓ４−２が、実施の形態１によるＶＬＩＷプロセッサの制御回路Ｓ１−１〜Ｓ４−２（図８）に比し、簡単になる。その結果、実施の形態４によるＶＬＩＷプロセッサでは、実施の形態１によるＶＬＩＷプロセッサに比し、バイパス制御をさらに高速に行なうことができる。
【０１０７】
また、実施の形態４によるＶＬＩＷプロセッサは、実施の形態３によるＶＬＩＷプロセッサの特徴部分と組合せることができる。すなわち、実施の形態４によるＶＬＩＷプロセッサのstage フィールド２７において、４つのステージを４ビットのビット・ベクタで表わす。こうすることで、制御回路Ｓ１−１〜Ｓ４−２が図１６の制御回路に比し簡単になる。
【０１０８】
図１７は、実施の形態４によるＶＬＩＷプロセッサと、実施の形態３によるＶＬＩＷプロセッサの特徴部分を組合せた場合の制御回路Ｓ１−１（図１５）の詳細を示す回路図である。なお、図１６と同様の部分については同一の参照符号を付しその説明は適宜省略する。図１７を参照して、制御回路Ｓ１−１は、ＡＮＤ回路１０７〜１２１およびＮＯＲ回路５３を含む。ＡＮＤ回路１０７，１１１，１１５，１１９には、信号stage ［１］が入力される。ＡＮＤ回路１０９，１１３，１１７，１２１には、信号stage ［２］が入力される。信号stage ［１］は、図１１の信号stage ［１］と同様のものであり、信号stage ［２］は、図１１の信号stage ［２］と同様のものである。
【０１０９】
図１７の制御回路Ｓ１−１の動作について具体例を挙げて説明する。ラッチ回路Ｌ１でこれから必要とされるデータのソース・アドレスと、結果バッファｅ３に保持されている命令の処理結果（データ）のデスティネーション・アドレスとが一致する場合を考える。この場合には、信号pipe［０］、信号pipe［１］および信号pipe［３］が“０”であり、信号pipe［２］が“１”である。さらに、信号stage ［１］が“１”であり、信号stage ［２］が“０”である。このため、ＡＮＤ回路１１５の出力信号のみが“１”となる。すなわち制御信号ｅ３−１−１のみが“１”となる。これによって、トライ・ステート・バッファＴ３３がオンし、結果バッファｅ３に保持されている命令の処理結果（データ）が、ラッチ回路Ｌ１に転送される。
【０１１０】
また、ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスが、８個の結果バッファｅ１〜ｅ４，ｍ１〜ｍ４に保持されている８個の命令の処理結果（データ）のデスティネーション・アドレスのいずれとも一致しない場合は、すなわち、ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスに対応するエントリのpipeフィールド２５およびstage フィールド２７のデータが無効である場合は、信号pipe［０］〜pipe［３］がすべて“０”となる。このため、ＡＮＤ回路１０７〜１２１の出力信号はすべて“０”となる。これによって、ＮＯＲ回路５３から出力される制御信号ｒ−１−１は“１”となる。これによって、トライ・ステート・バッファＴ６５がオンになり、レジスタ・ファイル５から直接ラッチ回路Ｌ１にデータが読出されることになる。なお、制御回路Ｓ１−２〜Ｓ４−２の回路構成も、図１７に示した制御回路Ｓ１−１の回路構成と同じである。
【０１１１】
以上のように、実施の形態４によるＶＬＩＷプロセッサと、実施の形態３によるＶＬＩＷプロセッサの特徴部分を組合せた場合には、制御回路Ｓ１−１〜Ｓ４−２（図１７）が、実施の形態４によるＶＬＩＷプロセッサの制御回路Ｓ１−１〜Ｓ４−２（図１６）より簡単になる。その結果、実施の形態４によるＶＬＩＷプロセッサと実施の形態３によるＶＬＩＷプロセッサの特徴部分を組合せた場合には、実施の形態４によるＶＬＩＷプロセッサよりもさらに高速にバイパス制御を行なうことができる。
【０１１２】
（実施の形態５）
実施の形態５による並列プロセッサとしてのＶＬＩＷプロセッサの全体構成は、図１に示した実施の形態１によるＶＬＩＷプロセッサの全体構成と同様である。
【０１１３】
図１８は、実施の形態５によるＶＬＩＷプロセッサの一部を示す概略ブロック図である。なお、図３と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【０１１４】
図１８を参照して、結果バッファｅ１〜ｅ４，ｍ１〜ｍ４に対応して、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４が設けられる。アドレス保持回路ｅｅ１は、結果バッファｅ１に保持されている命令の処理結果のデスティネーション・アドレスｅ１−ａを保持している。アドレス保持回路ｅｅ２は、結果バッファｅ２に保持されている命令の処理結果のデスティネーション・アドレスｅ２−ａを保持している。アドレス保持回路ｅｅ３は、結果バッファｅ３に保持されている命令の処理結果のデスティネーション・アドレスｅ３−ａを保持している。アドレス保持回路ｅｅ４は、結果バッファｅ４に保持されている命令の処理結果のデスティネーション・アドレスｅ４−ａを保持している。
【０１１５】
アドレス保持回路ｍｍ１は、結果バッファｍ１に保持されている命令の処理結果のデスティネーション・アドレスｍ１−ａを保持している。アドレス保持回路ｍｍ２は、結果バッファｍ２に保持されている命令の処理結果のデスティネーション・アドレスｍ２−ａを保持している。アドレス保持回路ｍｍ３は、結果バッファｍ３に保持されている命令の処理結果のデスティネーション・アドレスｍ３−ａを保持している。アドレス保持回路ｍｍ４は、結果バッファｍ４に保持されている命令の処理結果のデスティネーション・アドレスｍ４−ａを保持している。
【０１１６】
ここで、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４は、図３のＶＬＩＷプロセッサにおいても、図示していないが、設けられているものである。したがって、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４は、実施の形態４によるＶＬＩＷプロセッサのために特別に設けたわけではない。後で詳しく説明するが、バイパス制御回路１２３には、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４に保持されているデスティネーション・アドレスｅ１−ａ〜ｅ４−ａ，ｍ１−ａ〜ｍ４−ａが入力される。
【０１１７】
図１９は、図１８のバイパス制御回路１２３を示す概略ブロック図である。なお、図５と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【０１１８】
図１９を参照して、バイパス制御回路は、フィールド制御回路２１−１〜２１−４、命令管理回路１２５、アドレスデコーダ１７および制御信号発生回路１２７を含む。命令管理回路１２５は、有効／無効フィールド（以下、「valid フィールド」という）２３および機能ユニットフィールド（以下、「pipeフィールド」という）２５を含む。命令管理回路１２５は、図６に示した命令管理回路と同様に、複数のエントリｆ１〜ｆｎに分かれている。図１９のバイパス制御回路が、図５のバイパス制御回路と異なるのは、図１９のバイパス制御回路には、図５のようなstage フィールド２７が存在しないことである。したがって、図１９の命令管理回路１２５には、図９に示すようなstage フィールド管理回路５４も設けられていない。制御信号発生回路１２７には、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４に保持されているデスティネーション・アドレスｅ１−ａ〜ｅ４−ａ，ｍ１−ａ〜ｍ４−ａおよびラッチ回路Ｌ１〜Ｌ８がこれから必要とするデータのソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２が入力される。
【０１１９】
図２０は、図１９の制御信号発生回路１２７を示す概略ブロック図である。なお、図７と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【０１２０】
図２０を参照して、制御信号発生回路１２７は、制御回路Ｓ１−１〜Ｓ４−２を含む。制御回路Ｓ１−１〜Ｓ４−２には、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４に保持されているデスティネーション・アドレスｅ１−ａ〜ｅ４−ａ，ｍ１−ａ〜ｍ４−ａが入力される。そして、制御回路Ｓ１−１には、対応するソース・アドレスｓｒｃ１−１およびソース・アドレスｓｒｃ１−１に対応するエントリからの信号valid 、信号pipeが入力される。制御回路Ｓ１−２〜Ｓ４−２についても同様に、対応するソース・アドレスｓｒｃ１−２〜ｓｒｃ４−２およびソース・アドレスｓｒｃ１−２〜ｓｒｃ４−２に対応するエントリからの信号valid ，信号pipeが入力される。
【０１２１】
図２１は、図２０の制御回路Ｓ１−１の詳細を示す回路図である。なお、図８と同様の部分については同一の参照符号を付しその説明を適宜省略する。また、図２１の信号pipe［０］および信号pipe［１］は、図８の信号pipe［０］および信号pipe［１］と同様のものである。
【０１２２】
図２１を参照して、制御回路Ｓ１−１は、判断回路１２８、ＡＮＤ回路１３７〜１５５およびＮＯＲ回路５３含む。判断回路１２８は、選択回路１２９，１３１および比較器１３３，１３５を含む。判断回路１２８は、ラッチ回路Ｌ１がこれから必要とするデータのソース・アドレスｓｒｃ１−１が、４つの機能ユニット７−１〜７−４の８つの結果バッファｅ１〜ｅ４，ｍ１〜ｍ４のいずれに存在する命令の処理結果のデスティネーション・アドレスｍ１−ａ〜ｍ４−ａ，ｅ１−ａ〜ｅ４−ａと一致するか否かを判断するものである。詳しく説明する。
【０１２３】
選択回路１２９は、デスティネーション・アドレスｍ１−ａ〜ｍ４−ａを受ける。そして、選択回路１２９は、信号pipeが“０”のときはデスティネーション・アドレスｍ１−ａを選択し、信号pipeが“１”のときはデスティネーション・アドレスｍ２−ａを選択し、信号pipeが“２”のときはデスティネーション・アドレスｍ３−ａを選択し、信号pipeが“３”のときはデスティネーション・アドレスｍ４−ａを選択する。選択回路１３１は、信号pipeが“０”のときはデスティネーション・アドレスｅ１−ａを選択し、信号pipeが“１”のときはデスティネーション・アドレスｅ２−ａを選択し、信号pipeが“２”のときはデスティネーション・アドレスｅ３−ａを選択し、信号pipeが“３”のときはデスティネーション・アドレスｅ４−ａを選択する。
【０１２４】
比較器１３３は、選択回路１２９で選択されたデスティネーション・アドレスと、ソース・アドレスｓｒｃ１−１とを比較する。そして、比較器１３３は、選択回路１２９で選択されたデスティネーション・アドレスと、ソース・アドレスｓｒｃ１−１とが一致する場合には、ＡＮＤ回路１３７に出力信号“１”を出力し、一致しない場合には出力信号“０”を出力する。比較器１３５は、選択回路１３１で選択されたデスティネーション・アドレスとソース・アドレスｓｒｃ１−１とを比較する。そして、比較器１３５は、選択回路１３１で選択されたデスティネーション・アドレスとソース・アドレスｓｒｃ１−１とが一致する場合には、出力信号“１”を出力し、一致しない場合には出力信号“０”を出力する。
【０１２５】
ＡＮＤ回路１３７，１３９は、信号valid が入力されているため、ソース・アドレスｓｒｃ１−１に対応するエントリのpipeフィールド２５のデータが有効か否かを調べるためのものである。信号valid が“１”の場合、すなわち、pipeフィールドのデータが有効である場合を考えると、比較器１３３の出力信号のみが“１”の場合は、ＡＮＤ回路１３７の出力信号が“１”となり、比較器１３５の出力信号のみが“１”のときは、ＡＮＤ回路１３９の出力信号のみが“１”となる。信号valid が“１”の場合に、比較器１３３，１３５の両方から出力信号“１”が出力された場合を考える。このときには、比較器１３５の出力信号は、ＡＮＤ回路１３７に反転して入力されているため、ＡＮＤ回路１３７の出力信号は“０”となり、ＡＮＤ回路１３９の出力信号のみが“１”となる。すなわち、命令実行ステージＥＸの結果バッファｅ１〜ｅ４に保持されている命令の処理結果（データ）を、メモリ・アクセスステージＭＥＭの結果バッファｍ１〜ｍ４に保持されている命令の処理結果よりも、優先的にバイパスするためである。
【０１２６】
ＡＮＤ回路１４１〜１４７には、ＡＮＤ回路１３７からの出力信号が入力される。ＡＮＤ回路１４９〜１５５には、ＡＮＤ回路１３９からの出力信号が入力される。ＡＮＤ回路１４１〜１５５には、信号pipe［０］および信号pipe［１］が入力される。ＮＯＲ回路５３には、ＡＮＤ回路１４１〜１５５からの出力信号が入力される。ＡＮＤ回路１４１〜１５５は、制御信号ｍ１−１−１〜ｍ４−１−１，ｅ１−１−１〜ｅ４−１−１を出力し、ＮＯＲ回路５３は制御信号ｒ−１−１を出力する。
【０１２７】
図２１の制御回路Ｓ１−１の動作について図１８も参照しながら具体例を挙げて説明する。ラッチ回路Ｌ１がこれから必要とするデータのソース・アドレスｓｒｃ１−１が、結果バッファｅ３に保持されている命令の処理結果（データ）のデスティネーション・アドレスｅ３−ａと一致する場合を考える。なお、このとき信号valid は“１”である。選択回路１２９は、デスティネーション・アドレスｍ３−ａを選択し、選択回路１３１は、デスティネーション・アドレスｅ３−ａを選択する。比較器１３３は、デスティネーション・アドレスｍ３−ａとソース・アドレスｓｒｃ１−１とを比較し、“０”を出力する。比較器１３５は、デスティネーション・アドレスｅ３−ａとソース・アドレスｓｒｃ１−１を比較し、出力信号“１”を出力する。このため、ＡＮＤ回路１３７の出力信号は“０”になり、ＡＮＤ回路１３９の出力信号は“１”となる。信号pipe［０］は“１”であり、信号pipe［１］は“０”である。このため、ＡＮＤ回路１５３の出力信号のみが“１”となる。すなわち、制御信号ｅ３−１−１のみが“１”となる。これによって、トライ・ステート・バッファＴ３３がオンになり、結果バッファｅ３に保持されている命令の処理結果（データ）はラッチ回路Ｌ１に転送される。
【０１２８】
ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスｓｒｃ１−１が４つの機能ユニット７−１〜７−４の８つの結果バッファｅ１〜ｅ４，ｍ１〜ｍ４のいずれに存在する命令の処理結果のデスティネーション・アドレスとも一致しない場合、すなわち、ソース・アドレスｓｒｃ１−１に対応するエントリのpipeフィールド２５のデータが無効の場合には、信号valid が“０”であるため、ＡＮＤ回路１３７，１３９の出力信号は“０”となり、ＡＮＤ回路１４１〜１５５の出力信号も“０”となる。このため、ＮＯＲ回路５３の信号が“１”となる。すなわち、制御信号ｒ−１−１のみが１となる。これによって、トライ・ステータス・バッファＴ６５がオンになり、レジスタ・ファイル５から直接ラッチ回路Ｌ１にデータが読出される。なお、制御回路Ｓ１−２〜Ｓ４−２についても、図２１に示す制御回路Ｓ１−１と同じ回路構成である。
【０１２９】
以上のように、実施の形態５によるＶＬＩＷプロセッサでは、バイパス制御回路によって、命令の処理結果がいずれの機能ユニットに存在するかを管理して、バイパス制御を行なっている。このため、１つのソース・アドレスに対して、２個の比較器１３３，１３５を設ければ足りる。また、１つのソース・アドレスに対して２個のデータの優先順位付選択を行なえば足りる。これに対し、従来のＶＬＩＷプロセッサでは、１つのソース・アドレスに対して８個の比較器が必要となる。また、従来のＶＬＩＷプロセッサでは、８個のデータの優先順位付選択が必要となる。このように、実施の形態５によるＶＬＩＷプロセッサでは、従来のＶＬＩＷプロセッサに比し、回路が簡単になり、優先順位付選択も簡単になる。このため、従来のＶＬＩＷプロセッサに比し、高速にバイパス制御を行なうことができる。
【０１３０】
実施の形態５によるＶＬＩＷプロセッサと、実施の形態２によるＶＬＩＷプロセッサの特徴部分とを組合せることができる。すなわち、図１９のpipeフィールド２５において、４つの機能ユニットを２ビットで表わすのではなく、４つの機能ユニットを４ビットのビット・ベクタで表わすものである。これによって、pipeフィールド２５から出力される信号pipeも４ビットとなる。したがって、図２０に示す制御回路Ｓ１−１〜Ｓ４−２の具体的な回路構成が、図２１の回路構成と異なってくる。
【０１３１】
図２２は、実施の形態５によるＶＬＩＷプロセッサと、実施の形態２によるＶＬＩＷプロセッサの特徴部分とを組合せた場合の制御回路Ｓ１−１（図２０）の詳細を示す回路図である。なお、図２１と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【０１３２】
図２２を参照して、制御回路は、判断回路１２８、ＡＮＤ回路１３７，１３９，１５７〜１７１およびＮＯＲ回路５３を含む。
【０１３３】
図２２を参照して、ＡＮＤ回路１５７〜１６３には、ＡＮＤ回路１３７からの出力信号が入力される。ＡＮＤ回路１６５〜１７１には、ＡＮＤ回路１３９からの出力信号が入力される。ＡＮＤ回路１５７，１６５には、信号pipe［０］が入力される。ＡＮＤ回路１５９，１６７には、信号pipe［１］が入力される。ＡＮＤ回路１６１，１６９には、信号pipe［２］が入力される。ＡＮＤ回路１６３，１７１には、信号pipe［３］が入力される。なお、信号pipe［０］〜信号pipe［３］は、図１０の信号pipe［０］〜信号pipe［３］（実施の形態２）と同様のものである。ＡＮＤ回路１５７〜１７１の出力信号は、ＮＯＲ回路１５３に入力される。ＡＮＤ回路１５７〜１７１は、制御信号ｍ１−１−１〜ｍ４−１−１，ｅ１−１−１〜ｅ３−１−１を出力し、ＮＯＲ回路５３は、制御信号ｒ−１−１を出力する。
【０１３４】
図２２の制御回路Ｓ１−１の動作について、図１８も参照しながら具体例を挙げて説明する。ラッチ回路Ｌ１がこれから必要とするデータのソース・アドレスｓｒｃ−１−１が、結果バッファｅ３に保持されている命令の処理結果（データ）のデスティネーション・アドレスｅ３−ａと一致する場合を考える。このとき信号valid は“１”である。判断回路１２８の処理については、図２１において具体例を挙げた場合と同様であるため説明を省略する。ＡＮＤ回路１３７の出力は“０”となり、ＡＮＤ回路１３９の出力信号のみが“１”となる。信号pipe［０］、信号pipe［１］および信号pipe［３］は“０”で、信号pipe［２］だけが“１”である。なぜならば、結果バッファｅ３は、機能ユニット７−３に存在するからである。したがって、ＡＮＤ回路１６９の出力信号のみが１となる。すなわち制御信号ｅ３−１−１のみが“１”となる。これによってトライ・ステート・バッファＴ３３がオンし、結果バッファｅ３に保持されている命令の処理結果（データ）が、ラッチ回路Ｌ１へ転送される。
【０１３５】
なお、ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスｓｒｃ１−１が４つの機能ユニット７−１〜７−４の８つの結果バッファｅ１−ｅ４，ｍ１−ｍ４に保持されているいずれの命令の処理結果のデスティネーション・アドレスとも一致しない場合（信号valid が“０”の場合）の、図２２の制御回路Ｓ１−１の動作については、図２１の制御回路Ｓ１−１の場合と同様である。また、他の制御回路Ｓ１−２〜Ｓ４−２の回路構成は、図２２の制御回路Ｓ１−１と同じものである。
【０１３６】
以上のように、実施の形態５によるＶＬＩＷプロセッサと実施の形態２によるＶＬＩＷプロセッサの特徴とを組合せた場合には、制御回路Ｓ１−１〜Ｓ４−２が、実施の形態４によるＶＬＩＷプロセッサの制御回路Ｓ１−１〜Ｓ４−２よりも簡単になる。したがって、実施の形態５によるＶＬＩＷプロセッサと実施の形態２によるＶＬＩＷプロセッサの特徴部分を組合せた場合には、実施の形態４によるＶＬＩＷプロセッサよりもさらに高速にバイパス制御を行なうことができる。
【０１３７】
（実施の形態６）
実施の形態６による並列処理プロセッサとしてのＶＬＩＷプロセッサの構成は、図１および図１８のＶＬＩＷプロセッサの構成と同様である。実施の形態６によるＶＬＩＷプロセッサのデコードステージＩＤでデコードされた基準命令の形式は、図２に示したものと同様である。実施の形態６によるＶＬＩＷプロセッサにおいて、トライ・ステート・バッファＴ１〜Ｔ７２と、トライ・ステート・バッファＴ１〜Ｔ７２を制御する制御信号ｅ１−１−１〜ｒ−４−２との対応関係は、図４に示したものと同様である。
【０１３８】
図２３は、実施の形態６によるＶＬＩＷプロセッサのバイパス制御回路１２３（図１８）を示す概略ブロック図である。なお、図５と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【０１３９】
図２３を参照して、バイパス制御回路は、フィールド制御回路２１−１〜２１−４、命令管理回路１７３、アドレスデコーダ１７および制御信号発生回路１７５を含む。命令管理回路１７３は、valid フィールド２３およびstage フィールド２７を含む。
【０１４０】
命令管理回路１７３は、図６の命令管理回路と同様に、複数のエントリｆ１〜ｆｎに分かれている。図２３の命令管理回路１７３が、図５の命令管理回路１５と異なるのは、図２３の命令管理回路１７３には、図５のpipeフィールド２５がないことである。したがって、フィールド制御回路２１−１〜２１−４から与えられる信号pipe setもない。制御信号発生回路１７５は、ラッチ回路Ｌ１〜Ｌ８にこれから入力されようとする８つのデータのソース・アドレスｓｒｃ１−１〜ｓｒｃ４−２を受ける。また、制御信号発生回路１７５は、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４に保持されているデスティネーション・アドレスｅ１−ａ〜ｅ４−ａ，ｍ１−ａ〜ｍ４−ａを受ける。
【０１４１】
図２４は、図２３の制御信号発生回路１７５を示す概略ブロック図である。なお、図７と同様の部分については同一の参照符号を付しその説明を適宜省略する。
【０１４２】
図２４を参照して、制御信号発生回路１７５は、制御回路Ｓ１−１〜Ｓ４−２を含む。制御回路Ｓ１−１〜Ｓ４−２は、デスティネーション・アドレスｅ１−ａ〜ｅ４−ａ，ｍ１−ａ〜ｍ４−ａを受ける。制御回路Ｓ１−１は、対応するソース・アドレスｓｒｃ１−１およびソース・アドレスｓｒｃ１−１に対応するエントリからの信号valid 、信号pipeを受ける。同様に、制御回路Ｓ１−２〜Ｓ４−２も、対応するソース・アドレスｓｒｃ１−２〜ｓｒｃ４−２およびソース・アドレスｓｒｃ１−２〜ｓｒｃ４−２に対応するエントリからの信号valid 、信号pipeを受ける。
【０１４３】
図２５は、図２４の制御回路Ｓ１−１の詳細を示す回路図である。なお、図８と同様の部分については同一の参照符号を付しその説明を適宜省略する。図２５を参照して、制御回路Ｓ１−１は、判断回路１７７、ＡＮＤ回路１９５〜２０９およびＮＯＲ回路５３を含む。判断回路１７７は、選択回路１７９〜１８５および比較器１８７〜１９３を含む。判断回路１７７は、ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスｓｒｃ１−１が、４つの機能ユニット７−１〜７−４の８つの結果バッファｅ１〜ｅ４，ｍ１〜ｍ４のいずれに存在する命令の処理結果（データ）のデスティネーション・アドレスと一致するか否かを判断するためのものである。以下詳しく説明する。
【０１４４】
比較回路１７９には、デスティネーション・アドレスｅ１−ａ，ｍ１−ａが入力され、比較回路１８１にはデスティネーション・アドレスｅ２−ａ，ｍ２−ａが入力され、比較回路１８３には、デスティネーション・アドレスｅ３−ａ，ｍ３−ａが入力され、比較回路１８５にはデスティネーション・アドレスｅ４−ａ，ｍ４−ａが入力される。また、比較回路１７９〜１８５には、信号stage が入力される。信号stage が“１”の場合は、すなわち、信号stage が実行ステージＥＸを表わしている場合は、比較回路１７９はデスティネーション・アドレスｅ１−ａを、比較回路１８１はデスティネーション・アドレスｅ２−ａを、比較回路１８３はデスティネーション・アドレスｅ３−ａを、比較回路１８５はデスティネーション・アドレスｅ４−ａを選択する。信号stage が“２”の場合は、すなわち信号stage がメモリ・アクセスステージＭＥＭを表わしている場合は、比較回路１７９はデスティネーション・アドレスｍ１−ａを、比較回路１８１はデスティネーション・アドレスｍ２−ａを、比較回路１８３はデスティネーション・アドレスｍ３−ａを、比較回路１８５はデスティネーション・アドレスｍ４−ａを選択する。信号stage が“１”および“２”以外の場合は、比較器１７９〜１８５は、“０”を出力する。
【０１４５】
比較器１８７は、選択回路１７９が選択したデスティネーション・アドレスとソース・アドレスｓｒｃ１−１を比較し、一致した場合には“１”を出力し、一致しない場合には“０”を出力する。比較器１８９は、選択回路１８１で選択されたデスティネーション・アドレスとソース・アドレスｓｒｃ１−１を比較し、一致した場合は“１”を出力し、一致しない場合は“０”を出力する。比較器１９１は、選択回路１８３で選択されたデスティネーション・アドレスとソース・アドレスｓｒｃ１−１とを比較し、一致した場合には“１”を出力し、一致しない場合は“０”を出力する。比較器１９３は、選択回路１８５が選択したデスティネーション・アドレスとソース・アドレスｓｒｃ１−１とを比較し、一致した場合には“１”を出力し、一致しない場合には“０”を出力する。
【０１４６】
このように、判断回路１７７は、ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスｓｒｃ１−１が、４つの機能ユニット７−１〜７−４の８つの結果バッファｅ１−ｅ４，ｍ１−ｍ４のいずれに存在する命令の処理結果（データ）のデスティネーション・アドレスと一致するか否かを判断することによって、ラッチ回路Ｌ１がこれから必要とするデータのソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果がどの機能ユニットに存在するかを識別している。
【０１４７】
すなわち、比較器１８７の出力信号が“１”のときには、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット７−１にあることを示し、比較器１８９の出力信号が“１”のときは、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット７−２にあることを示し、比較器１９１の出力信号が“１”のときは、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット７−３にあることを示し、比較器１９３の出力信号が“１”のときは、ソース・アドレスｓｒｃ１−１と一致するデスティネーション・アドレスを持つ命令の処理結果が機能ユニット７−４にあることを示す。
【０１４８】
信号stage ［０］が“１”のときには、信号stage は“２”または“３”である。そして、信号stage が“２”のときは、実行ステージＥＸを表わす。このため、信号stage ［０］は、実行ステージＥＸの結果バッファｅ１〜ｅ４に対応するトライ・ステート・バッファＴ１，Ｔ１７，Ｔ３３，Ｔ４９を制御するための制御信号ｍ１−１−１，ｍ２−１−１，ｍ３−１−１，ｍ４−１−１を発生するＡＮＤ回路１９７，２０１，２０５，２０９に入力される。信号stage ［１］が“１”のときは信号stage は“１”または“３”である。そして、信号stage が“１”のときは、メモリ・アクセスステージＭＥＭを表わす。このため、信号stage ［１］は、メモリ・アクセスステージＭＥＭの結果バッファｍ１〜ｍ４に対応するトライ・ステート・バッファＴ９，Ｔ２５，Ｔ４１，Ｔ５７を制御する制御信号ｅ１−１−１，ｅ２−１−１，ｅ３−１−１，ｅ４−１−１を発生するＡＮＤ回路１９５，１９９，２０３，２０７に入力される。
【０１４９】
このように、ＡＮＤ回路１９５〜２０９のすべてに、信号stage ［０］および信号stage ［１］を入力する必要はない。ここで、信号stage ［０］が“１”のときや、信号stage ［１］が“１”のときは、信号stage が“３”のときもあるが、このことは問題にならない。なぜならば、すべてのＡＮＤ回路１９５〜２０９に信号valid が入力されているからである。すなわち、信号stage が“３”のときは、命令の処理結果が書戻しステージＷＢに存在することを示しており、この場合には、レジスタ・ファイル５から直接データを読出せばよいので、信号valid が“０”にされるからである。
【０１５０】
制御回路Ｓ１−１では、機能ユニット７−１の結果バッファｅ１，ｍ１に保持されている命令の処理結果よりも、機能ユニット７−２の結果バッファｅ２，ｍ２に保持されている命令の処理結果を、機能ユニット７−２の結果バッファｅ２，ｍ２に保持されている命令の処理結果よりも、機能ユニット７−３の結果バッファｅ３，ｍ３に保持されている命令の処理結果を、機能ユニット７−３の結果バッファｅ３，ｍ３に保持されている命令の処理結果よりも、機能ユニット７−４の結果バッファｅ４，ｍ４に保持されている命令の処理結果を、ラッチ回路Ｌ１にバイパスするようにしている。このため、ＡＮＤ回路１９５，１９７には、比較器１８７，１８９，１９１，１９３の出力信号が入力され、ＡＮＤ回路１９９，２０１には、比較器１８９，１９１，１９３の出力信号が入力され、ＡＮＤ回路２０３，２０５には、比較器１９１，１９３から出力信号が入力され、ＡＮＤ回路２０７，２０９には比較器１９３からの出力信号が入力される。
【０１５１】
制御回路Ｓ１−１の動作について、図１８も参照しながら、具体例を挙げて説明する。ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスｓｒｃ１−１が、アドレス保持回路ｅ１に保持されているデスティネーション・アドレスｅ１−ａとのみ一致する場合を考える。このとき、信号stage は、“１”である。このため、選択回路１７９からは、デスティネーション・アドレスｅ１−ａが出力され、選択回路１８１からはデスティネーション・アドレスｅ２−ａが出力され、選択回路１８３からはデスティネーション・アドレスｅ３−ａが出力され、選択回路１８５からはデスティネーション・アドレスｍ４−ａが出力されることになる。そして、比較器１８７の出力のみが“１”になり、比較器１８９〜１９３の出力は“０”となる。そして、信号stage ［０］は、“０”であり、信号stage ［１］は“１”である。また、信号valid を“１”とする。このような場合には、ＡＮＤ回路１９５の出力信号のみが“１”となる。すなわち制御信号ｅ１−１−１のみが“１”となる。これによって、トライ・ステート・バッファＴ１がオンになり、結果バッファｅ１に保持されている命令の処理結果がラッチ回路Ｌ１に転送されることになる。
【０１５２】
ラッチ回路Ｌ１にこれから必要とされるデータのソース・アドレスｒｓｃ１−１が、アドレス保持回路ｅｅ１〜ｅｅ４，ｍｍ１〜ｍｍ４に保持されているデスティネーション・アドレスｅ１−ａ〜ｅ４−ａ，ｍ１−ａ〜ｍ４−ａのいずれとも一致しない場合は、すなわち、信号valid が“０”の場合には、ＡＮＤ回路１９５〜２０９の出力信号はすべて“０”となる。このため、ＮＯＲ回路５３から出力される制御信号ｒ−１−１のみが“１”となる。これにより、トライ・ステート・バッファＴ６５がオンし、レジスタ・ファイル５から直接ラッチ回路Ｌ１にデータが読出される。なお、制御回路Ｓ１−２〜Ｓ４−２についても、図２５の制御回路Ｓ１−１と同じ回路構成である。
【０１５３】
以上のように、実施の形態６によるＶＬＩＷプロセッサでは、命令管理回路１７３のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、どのステージに存在するかを管理している。このため、１つのソース・アドレスに対して、４つの比較器１８７〜１９３を設ければ足りる。これに対して、従来のＶＬＩＷプロセッサでは、１つのソース・アドレスに対して８つの比較器が必要になる。さらに、実施の形態６によるＶＬＩＷプロセッサでは、１つのソース・アドレスに対して、４つの比較器１８７〜１９３を設ければ足りることから、４つの比較器１８７〜１９３から出力される４つの出力信号に対して優先順位付選択をすれば足りる。これに対して従来のＶＬＩＷプロセッサでは、１つのソース・アドレスにつき８個のデータの優先順位付選択をする必要がある。以上のように、実施の形態６によるＶＬＩＷプロセッサでは、回路が簡単になるとともに優先順位付選択をする対象も少ないため、高速にバイパス制御を行なうことができる。
【０１５４】
実施の形態６によるＶＬＩＷプロセッサと、実施の形態３によるＶＬＩＷプロセッサの特徴部分とを組合せることもできる。すなわち、stage フィールド２７において、４つのステージを４ビットのビット・ベクタで表わす。こうすることで、stage フィールド２７を管理するために、stage フィールド管理回路５４（図９）ではなく、ビット・シフタ８９（図１２）を設けることができる。このため、実施の形態６によるＶＬＩＷプロセッサに比し、さらに回路を簡単化でき、さらに高速にバイパス制御を行なうことができる。
【０１５５】
【発明の効果】
この発明の第１の発明に係る並列処理プロセッサでは、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットのいずれの処理ステージに存在するかを管理している。また、あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。このため、アドレス比較のための比較器が不要になるとともに、優先順位付選択も不要になる。その結果、この発明の第１の発明に係る並列処理プロセッサでは、回路が簡単になり、高速にバイパス制御を行なうことができる。
【０１５６】
この発明の第２の発明に係る並列処理プロセッサでは、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、いずれの機能ユニットに存在するかを管理している。あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。このため、アドレス比較のための比較器が従来の並列処理プロセッサに比し、少なくて済む。これに伴い、従来の並列処理プロセッサに比し、優先順位付選択のための比較も少なくて済む。その結果、この発明の第２の発明に係る並列処理プロセッサでは、高速にバイパス制御を行なうことができる。
【０１５７】
この発明の第３の発明に係る並列処理プロセッサでは、レジスタ・ファイルの複数のアドレスに対応する複数のエントリによって、そのエントリに対応するデスティネーション・アドレスを持つ命令が、いずれの処理ステージに存在するかを管理する。あるデスティネーション・アドレスを持つ命令を管理している場合において、あるデスティネーション・アドレスと同じデスティネーション・アドレスを持つ新たな命令が、複数の機能ユニットのいずれかに投入されるときは、その新たに投入される命令をあるデスティネーション・アドレスに対応するエントリによって管理する。このため、従来の並列処理プロセッサに比し、アドレス比較のための比較器が少なくて済む。これに伴い、優先順位付選択のための比較も、従来の並列処理プロセッサに比し少なくなる。その結果、この発明の第３の発明に係る並列処理プロセッサでは、高速にバイパス制御を行なうことができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態１によるＶＬＩＷプロセッサを示す概略ブロック図である。
【図２】  図１のＶＬＩＷプロセッサの命令デコードステージＩＤでデコードされた基準命令の形式を示す図である。
【図３】  図１のＶＬＩＷプロセッサの一部を示す概略ブロック図である。
【図４】  トライ・ステート・バッファ（図３）と、トライ・ステート・バッファを制御する制御信号との対応関係を示す図である。
【図５】  図３のバイパス制御回路を示す概略ブロック図である。
【図６】  図５の命令管理回路を示す概略ブロック図である。
【図７】  図５の制御信号発生回路を示す概略ブロック図である。
【図８】  図７の制御回路Ｓ１−１の詳細を示す回路図である。
【図９】  stage フィールド（図５）の一部およびstage フィールドの一部を管理するstage フィールド管理回路を示す概略ブロック図である。
【図１０】  本発明の実施の形態２によるＶＬＩＷプロセッサの制御回路Ｓ１−１（図７）の詳細を示す回路図である。
【図１１】  本発明の実施の形態３によるＶＬＩＷプロセッサの制御回路Ｓ１−１（図７）の詳細を示す回路図である。
【図１２】  本発明の実施の形態３によるＶＬＩＷプロセッサにおいて、stage フィールド（図５）の一部およびstage フィールドの一部を管理するビット・シフタを示す概略ブロック図である。
【図１３】  本発明の実施の形態２によるＶＬＩＷプロセッサの特徴部分と実施の形態３によるＶＬＩＷプロセッサの特徴部分とを組合せた場合において、制御回路Ｓ１−１（図７）の詳細を示す回路図である。
【図１４】  本発明の実施の形態４によるＶＬＩＷプロセッサのバイパス制御回路（図３）を示す概略ブロック図である。
【図１５】  図１４の制御信号発生回路を示す概略ブロック図である。
【図１６】  図１５の制御回路Ｓ１−１の詳細を示す回路図である。
【図１７】  本発明の実施の形態３によるＶＬＩＷプロセッサの特徴部分と、本発明の実施の形態４によるＶＬＩＷプロセッサとを組合せた場合において、制御回路Ｓ１−１（図１５）の詳細を示す回路図である。
【図１８】  本発明の実施の形態５によるＶＬＩＷプロセッサの一部を示す概略ブロック図である。
【図１９】  図１８のバイパス制御回路を示す概略ブロック図である。
【図２０】  図１９の制御信号発生回路を示す概略ブロック図である。
【図２１】  図２０の制御回路Ｓ１−１の詳細を示す回路図である。
【図２２】  本発明の実施の形態２によるＶＬＩＷプロセッサの特徴部分と、本発明の実施の形態５によるＶＬＩＷプロセッサとを組合せた場合において、制御回路Ｓ１−１（図２０）の詳細を示す回路図である。
【図２３】  本発明の実施の形態６によるＶＬＩＷプロセッサのバイパス制御回路（図１８）を示す概略ブロック図である。
【図２４】  図２３の制御信号発生回路を示す概略ブロック図である。
【図２５】  図２４の制御回路Ｓ１−１の詳細を示す回路図である。
【図２６】  従来のスカラ・プロセッサにおいて、データ・ハザードを説明するための図である。
【図２７】  従来のスカラ・プロセッサにおいて、バイパス機構を説明するための図である。
【図２８】  バイパス機構を有する従来のスカラ・プロセッサを示す概略ブロック図である。
【符号の説明】
１  命令キャッシュ、３  デコーダ、５  レジスタ・ファイル、７−１〜７−４  機能ユニット、９  データ・キャッシュ、１１  バス、１３，１２３  バイパス制御回路、１５，８８，１２５，１７３  命令管理回路、１７  アドレスデコーダ、１９，９０，１２７，１７５  制御信号発生回路、２１−１〜２１−４フィールド制御回路、２３  valid フィールド、２５  pipeフィールド、２７  stage フィールド、２９〜５１，６３〜８５，９１〜１２１，１３７〜１７１，１９５〜２０９  ＡＮＤ回路、５３  ＮＯＲ回路、５４  stage フィールド管理回路、５５，８７  stage フィールドの一部、５７  加算回路、５９  データ比較器、６１  参照回路、８９  ビット・シフタ、１２８，１７７  判断回路、１２９，１３１，１７９〜１８５  選択回路、１３３，１３５，１８７〜１９３比較器、２１１，２１３  マルチプレクサ、２１５  ＡＬＵ、２１７，２１９結果バッファ、１−１〜４−２  バス、ａ１〜ａ４  ＡＬＵ、Ｌ１〜Ｌ８  ラッチ回路、ｅ１〜ｅ４，ｍ１〜ｍ４  結果バッファ、ｏｐ１〜ｏｐ４  オペコード、ｓｒｃ１−１〜ｓｒｃ４−２  ソース・アドレス、ｅ１−１−１〜ｒ−４−２  制御信号、ｄｅｓ１〜ｄｅｓ４  デスティネーション・アドレス、ＩＦ  命令フェッチステージ、ＩＤ  命令デコードステージ、ＥＸ  実行ステージ、ＭＥＭ  メモリ・アクセスステージ、ＷＢ  書戻しステージ、pipe, valid, stage, address, pipe set, valid set, stage reset, valid reset, pipe［０］，pipe［１］，pipe［２］，pipe［３］，stage ［０］，stage ［１］，stage ［２］，stage ［３］  信号、Ｓ１−１〜Ｓ４−２  制御回路、ｅｅ１〜ｅｅ４，ｍｍ１〜１ｍｍ４  アドレス保持回路。
【図１】
0003745450.tif 000002
【図２】
0003745450.tif 000003
【図３】
0003745450.tif 000004
【図４】
0003745450.tif 000005
【図５】
0003745450.tif 000006
【図６】
0003745450.tif 000007
【図７】
0003745450.tif 000008
【図８】
0003745450.tif 000009
【図９】
0003745450.tif 000010
【図１０】
0003745450.tif 000011
【図１１】
0003745450.tif 000012
【図１２】
0003745450.tif 000013
【図１３】
0003745450.tif 000014
【図１４】
0003745450.tif 000015
【図１５】
0003745450.tif 000016
【図１６】
0003745450.tif 000017
【図１７】
0003745450.tif 000018
【図１８】
0003745450.tif 000019
【図１９】
0003745450.tif 000020
【図２０】
0003745450.tif 000021
【図２１】
0003745450.tif 000022
【図２２】
0003745450.tif 000023
【図２３】
0003745450.tif 000024
【図２４】
0003745450.tif 000025
【図２５】
0003745450.tif 000026
【図２６】
0003745450.tif 000027
【図２７】
0003745450.tif 000028
【図２８】
0003745450.tif 000029