(57)【要約】【課題】  ベクトル処理をより効率的に実行する。【解決手段】  ベクトル処理装置１は、演算レジスタ２と、選択部３と、演算器４と、バイパス経路５と、制御部６とを有する。演算レジスタ２は、演算器４が演算する演算対象のデータを格納する。バイパス経路５は、演算器４による演算結果を演算レジスタ２を通す経路９ではなく、演算レジスタ２を通さずに前記演算結果を演算対象のデータとして演算器４に供給する経路である。選択部３は、演算レジスタ２から演算対象のデータを演算器４に供給する経路と、バイパス経路５から演算対象のデータを演算器４に供給する経路との一方を選択する。制御部６は、演算器４の演算処理に関わる実行前の複数の命令情報に基づいて、ベクトル処理の対象と成り得る前記演算結果が複数あることを検知すると、それらベクトル処理対象の複数の前記演算結果がベクトル処理中にバイパス経路で競合することを回避する機能を備えている。【選択図】      図１
2014170384.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を実行する演算器と、
前記演算器が演算する演算対象となるデータを格納する演算レジスタと、
前記演算器による演算結果を前記演算レジスタを通す経路ではなく、前記演算レジスタを通さずに前記演算結果を演算対象のデータとして前記演算器に供給するバイパス経路と、
前記演算レジスタから前記演算対象のデータを前記演算器に供給する経路と、前記バイパス経路から前記演算対象のデータを前記演算器に供給する経路との一方を選択する選択部と、
前記選択部を制御することによって、前記演算器による演算結果を前記バイパス経路を通して演算対象のデータとして前記演算器に供給するベクトル処理を制御する制御部と
を有し、
前記制御部は、
前記演算器の演算処理に関わる実行前の複数の命令情報に基づいて、前記ベクトル処理の対象と成り得る前記演算結果が複数あることを検知する機能を備えたベクトル認識部と、
前記ベクトル認識部の検知結果および前記命令情報に基づいて、前記検知されたベクトル処理対象の複数の前記演算結果が前記ベクトル処理中に前記バイパス経路で競合することを回避する競合回避部と
を有するベクトル処理装置。
【請求項２】
前記ベクトル認識部は、さらに、前記検知されたベクトル処理対象の前記演算結果が前記ベクトル処理中に競合する可能性があることを検知する競合検知機能と、この検知結果を考慮して前記演算結果を前記ベクトル処理により前記演算器に供給するバイパスタイミングを検出する機能とを備えている請求項１記載のベクトル処理装置。
【請求項３】
前記競合回避部は、前記ベクトル認識部における前記競合検知機能によって競合が検知された場合には、その競合の基になる前記命令情報を実行するタイミングを調整する機能を備えている請求項２記載のベクトル処理装置。
【請求項４】
前記競合回避部は、前記命令情報に基づいた前記演算レジスタの使用状況の情報と前記バイパス経路の使用状況の情報に基づいて、前記競合が生じない前記演算結果を前記ベクトル処理の対象と確定することによって、前記競合を回避する機能を備えている請求項１又は請求項２又は請求項３記載のベクトル処理装置。
【請求項５】
前記演算器から前記演算結果が出力されてから、前記バイパス経路を通して前記演算器に前記演算結果が供給されるまでの時間を調整するベクトル調整部をさらに有し、
前記競合回避部は、前記ベクトル認識部の機能により検出されたバイパスタイミングに基づいて、前記ベクトル調整部を制御することによって、前記競合を回避する機能を備えている請求項２又は請求項３又は請求項４記載のベクトル処理装置。
【請求項６】
前記ベクトル認識部は、前記競合の可能性を検知した場合に、複数の前記命令情報を実行する優先順位を、予め与えられている重み付け情報を利用して決定する機能を有する請求項２乃至請求項５の何れか一つに記載のベクトル処理装置。
【請求項７】
演算処理を実行する演算器と、
前記演算器が演算する演算対象となるデータを格納する演算レジスタと、
前記演算器による演算結果を前記演算レジスタを通す経路ではなく、前記演算レジスタを通さずに前記演算結果を演算対象のデータとして前記演算器に供給するバイパス経路と、
前記演算レジスタから前記演算対象のデータを前記演算器に供給する経路と、前記バイパス経路から前記演算対象のデータを前記演算器に供給する経路との一方を選択する選択部と
を備え、前記選択部を制御することによって、前記演算器による演算結果を前記バイパス経路を通して演算対象のデータとして前記演算器に供給するベクトル処理を実行するベクトル処理装置に備えられている制御部は、
前記演算器の演算処理に関わる実行前の複数の命令情報に基づいて、前記ベクトル処理の対象と成り得る前記演算結果が複数あるか否かを判断し、
前記ベクトル処理の対象と成り得る前記演算結果が複数ある場合には、それらベクトル処理対象の複数の前記演算結果がベクトル処理中に前記バイパス経路で競合することを回避するベクトル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル演算を行うコンピュータの技術に関する。
【背景技術】
【０００２】
図１９は、ベクトル処理装置の一構成例を示すブロック図である（例えば特許文献１参照）。このベクトル処理装置１０００は、セレクタ１００１〜１００４と、レジスタ１００５〜１００８と、バイパスセレクタ１０１０〜１０１３と、演算器１０１５，１０１６と、出力レジスタ１０１７，１０１８と、制御部１０２０とを有している。
【０００３】
演算器１０１５，１０１６は、加算や乗算等の演算を処理する機能を備えている。出力レジスタ１０１７，１０１８は、演算器１０１５，１０１６から出力された演算結果を格納する機能を備えている。
【０００４】
レジスタ１００５〜１００８は、演算器１０１５，１０１６が演算する演算対象のデータを格納する機能を備えている。また、レジスタ１００５〜１００８は、出力レジスタ１０１７，１０１８から出力された前記演算結果を格納する機能を備えている。
【０００５】
セレクタ１００１〜１００４は、制御部１０２０の指示に応じて、出力レジスタ１０１７，１０１８とレジスタ１００１〜１００４との接続関係を切り換える機能を備えている。換言すれば、セレクタ１００１〜１００４は、出力レジスタ１０１７，１０１８から出力された前記演算結果を、当該演算結果を格納する格納対象のレジスタ１００１〜１００４に導く機能を備えている。
【０００６】
セレクタ１０１０〜１０１３は、制御部１０２０の指示に応じて、レジスタ１００１〜１００４および出力レジスタ１０１７，１０１８と、演算器１０１５，１０１６との接続関係を切り換える機能を備えている。換言すれば、セレクタ１０１０〜１０１３は、演算器１０１５，１０１６に加えられる演算対象のデータの出力元を切り換える機能を備えている。
【０００７】
すなわち、このベクトル処理装置１０００は、演算器１０１５，１０１６による演算結果をレジスタ１００５〜１００８を介して演算対象のデータとして演算器１０１５，１０１６に供給する処理だけでなく、次のようなバイパス処理（動作）を実行できる。バイパス処理（動作）とは、演算器１０１５，１０１６による演算結果をレジスタ１００５〜１００８を介さずに演算器１０１５，１０１６に供給する処理である。このバイパス処理は、上記のようにレジスタ１００５〜１００８を介さない分（つまり、レジスタ１００５〜１００８へのデータ書き込みとデータ読み出しを行わなくて済む分）、演算指令を含む命令を処理し終わるまでに要する時間（ＴＡＴ（TurnAround Time））を短縮できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平７−３３４４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、特許文献１に記載されているベクトル処理装置１０００では、バイパス処理を実行するタイミングが限られている。つまり、特許文献１に示されている例では、ベクトル処理装置１０００は、レジスタ１０１７，１０１８に演算結果が格納され、かつ、レジスタ１００５〜１００８に演算対象のデータが格納されることによって新たな命令（後続命令）を発行することが可能となった場合に、バイパス処理を実行する。
【００１０】
このように、特許文献１の構成では、バイパス処理を実行するタイミングは、命令の発行時において上記のような条件が満たされた場合に限定されている。このため、特許文献１に記載されているベクトル処理装置１０００は、場合によっては、前記演算結果をバイパス処理によって効率良く演算器１０１５，１０１６に供給することができず、ＴＡＴの短縮を図れない。
【００１１】
本発明は上記課題を解決するために考え出された。すなわち、本発明の主な目的は、ベクトル処理装置において、バイパス処理を、より効率良く実行する技術を提供することである。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明のベクトル処理装置は、
演算処理を実行する演算器と、
前記演算器が演算する演算対象となるデータを格納する演算レジスタと、
前記演算器による演算結果を前記演算レジスタを通す経路ではなく、前記演算レジスタを通さずに前記演算結果を演算対象のデータとして前記演算器に供給するバイパス経路と、
前記演算レジスタから前記演算対象のデータを前記演算器に供給する経路と、前記バイパス経路から前記演算対象のデータを前記演算器に供給する経路との一方を選択する選択部と、
前記選択部を制御することによって、前記演算器による演算結果を前記バイパス経路を通して演算対象のデータとして前記演算器に供給するベクトル処理を制御する制御部と
を有し、
前記制御部は、
前記演算器の演算処理に関わる実行前の複数の命令情報に基づいて、前記ベクトル処理の対象と成り得る前記演算結果が複数あることを検知する機能を備えたベクトル認識部と、
前記ベクトル認識部の検知結果および前記命令情報に基づいて、前記検知されたベクトル処理対象の複数の前記演算結果が前記ベクトル処理中に前記バイパス経路で競合することを回避する競合回避部と
を有する。
【００１３】
本発明のベクトル処理方法は、
演算処理を実行する演算器と、
前記演算器が演算する演算対象となるデータを格納する演算レジスタと、
前記演算器による演算結果を前記演算レジスタを通す経路ではなく、前記演算レジスタを通さずに前記演算結果を演算対象のデータとして前記演算器に供給するバイパス経路と、
前記演算レジスタから前記演算対象のデータを前記演算器に供給する経路と、前記バイパス経路から前記演算対象のデータを前記演算器に供給する経路との一方を選択する選択部と
を備え、前記選択部を制御することによって、前記演算器による演算結果を前記バイパス経路を通して演算対象のデータとして前記演算器に供給するベクトル処理を実行するベクトル処理装置に備えられている制御部は、
前記演算器の演算処理に関わる実行前の複数の命令情報に基づいて、前記ベクトル処理の対象と成り得る前記演算結果が複数あるか否かを判断し、
前記ベクトル処理の対象と成り得る前記演算結果が複数ある場合には、それらベクトル処理対象の複数の前記演算結果がベクトル処理中に前記バイパス経路で競合することを回避する。
【発明の効果】
【００１４】
本発明によれば、ベクトル処理装置において、バイパス処理をより効率良く実行できる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る第１実施形態のベクトル処理装置の構成例を簡略化して示すブロック図である。
【図２】本発明に係る第２実施形態のベクトル処理装置の構成例を簡略化して示すブロック図である。
【図３】第２実施形態のベクトル処理装置を構成する選択部の構成例を簡略化して表すブロック図である。
【図４】第２実施形態のベクトル処理装置を構成するバイパス調整部の構成例を簡略化して表すブロック図である。
【図５】第２実施形態のベクトル処理装置を構成する制御部の構成例を簡略化して表すブロック図である。
【図６】第２実施形態のベクトル処理装置を構成する制御部の発行部の構成例を簡略化して表すブロック図である。
【図７】第２実施形態のベクトル処理装置を構成する制御部の管理部の構成例を簡略化して表すブロック図である。
【図８】第２実施形態における管理部を構成する競合調整部の構成例を簡略化して表すブロック図である。
【図９】第２実施形態における管理部を構成するバイパス競合認識部の構成例を簡略化して表すブロック図である。
【図１０】第２実施形態のベクトル処理装置を構成する制御部の指令部の構成例を簡略化して表すブロック図である。
【図１１】第２実施形態のベクトル処理装置の動作例を説明するタイムチャートである。
【図１２】第２実施形態のベクトル処理装置の動作例と比較する比較例を説明するチャイムチャートである。
【図１３】第２実施形態のベクトル処理装置の別の動作例を説明するタイムチャートである。
【図１４】第２実施形態のベクトル処理装置のさらに別の動作例を説明するタイムチャートである。
【図１５】データ衝突が起こる動作例を説明するタイムチャートである。
【図１６】命令を発行するタイミングの一例を説明するタイムチャートである。
【図１７】本発明に係る第３実施形態を説明するブロック図である。
【図１８】第３実施形態におけるベクトル処理装置の動作例を説明するタイムチャートである。
【図１９】特許文献１に示されるベクトル処理装置の構成例を説明するブロック図である。
【発明を実施するための形態】
【００１６】
以下に、本発明に係る実施形態を図面を参照しながら説明する。
【００１７】
（第１実施形態）
図１は、本発明に係る第１実施形態のベクトル処理装置の構成を簡略化して表すブロック図である。この第１実施形態のベクトル処理装置１は、演算レジスタ２と、選択部３と、演算器４と、バイパス経路５と、制御部６とを有している。
【００１８】
演算器４は、演算処理を実行する機能を備えている。
【００１９】
演算レジスタ２は、演算器４が演算する演算対象となるデータを格納する機能を備えている。
【００２０】
バイパス経路５は、演算器４による演算結果を演算レジスタ２を通す経路９ではなく、演算レジスタ２を通さずに前記演算結果を演算対象のデータとして演算器４に供給する経路である。
【００２１】
選択部３は、演算レジスタ２から演算対象のデータを演算器４に供給する経路と、バイパス経路５から演算対象のデータを演算器４に供給する経路との一方を選択する機能を備えている。
【００２２】
制御部６は、選択部３を制御することによって、演算器４による演算結果をバイパス経路５を通して演算対象のデータとして演算器４に供給するベクトル処理を制御する機能を備えている。この第１実施形態では、制御部６は、ベクトル認識部７と、競合回避部８とを有する。
【００２３】
ベクトル認識部７は、演算器４の演算処理に関わる実行前の複数の命令情報に基づいて、ベクトル処理の対象と成り得る前記演算結果が複数あることを検知する機能を備えている。
【００２４】
競合回避部８は、ベクトル認識部７の検知結果および前記命令情報に基づいて、前記検知されたベクトル処理対象の複数の前記演算結果がベクトル処理中にバイパス経路５を通る経路で競合することを回避する機能を備えている。
【００２５】
この第１実施形態のベクトル処理装置１は、上記の如く、発行前の複数の命令情報に基づいて、ベクトル処理対象と成り得る演算結果があることを検知する機能を備えている。さらに、このベクトル処理装置１は、それら検知されたベクトル処理対象の演算結果がベクトル処理中にバイパス経路５を通る経路において競合する可能性がある場合には、その競合を回避する機能を備えている。このような機能を備えていることから、ベクトル処理装置は、前記競合（データ衝突）を回避しつつ、ベクトル処理を増加することができる。これにより、このベクトル処理装置１は、処理の効率化（処理時間の短縮化）を図ることができる。
【００２６】
（第２実施形態）
以下に、本発明に係る第２実施形態を説明する。
【００２７】
図２は、本発明に係る第２実施形態のベクトル処理装置の構成を簡略化して表すブロック図である。このベクトル処理装置は、制御部２０と、当該制御部２０からの指示に基づいて動作する処理部２１とを有している。処理部２１は、クロスバ（クロスバースイッチ回路）１００と、複数（この第２実施形態では、４つ）の演算レジスタ１０１，１０２，１０３，１０４と、出力部１０５と、選択部１０６と、演算部１０７と、バイパス調整部１０８，１０９とを有している。
【００２８】
演算部１０７は、この第２実施形態では、加算器（演算器）１２０と、乗算器（演算器）１３０とを有している。加算器１２０は、２つの入力部に入力したデータ（オペランド）を加算した結果を出力する回路構成を備えている。乗算器１３０は、２つの入力部に入力したデータ（オペランド）を乗算した結果を出力する回路構成を備えている。
【００２９】
クロスバ１００は、制御部２０の指示に基づいて、データ（情報）の経路を切り換える機能（回路構成）を備えている。具体的には、クロスバ１００の入力側は、処理部２１外部のメモリと、加算器１２０の出力側と、乗算器１３０の出力側とに接続し、クロスバ１００の出力側は、演算レジスタ１０１〜１０４のそれぞれに接続している。このクロスバ１００は、制御部２０の指示に従って、入力側であるメモリと加算器１２０と乗算器１３０とのうちの何れかと、出力側である演算レジスタ１０１〜１０４のうちの一つとを選択的に接続する機能（回路構成）を備えている。
【００３０】
演算レジスタ１０１〜１０４は、それぞれ、１つのベクトル命令に対して予め定められるベクトル長に応じた記憶領域を少なくとも有している。なお、ベクトル長（Vector  Length（ＶＬ））とは、１つの命令（ベクトル命令）により同じ演算が繰り返される演算回数を表す。つまり、１つのベクトル命令が発行されると、ベクトル長分の演算が連続で繰り返し処理される。具体的には、ベクトル長が４であるベクトル命令が発行されると、演算レジスタから４つのデータが連続して読み出され、当該４つのデータが順次演算処理される。
【００３１】
この第２実施形態では、１つのベクトル命令に対するベクトル長は４とする。これにより、演算レジスタ１０１〜１０４は、それぞれ、少なくとも４つの記憶領域を有する。それら記憶領域のアドレスは、演算レジスタ１０１においては、それぞれ、Ｖ０−０，Ｖ０−１，Ｖ０−２，Ｖ０−３とする。また、演算レジスタ１０２においては、それぞれ、Ｖ１−０，Ｖ１−１，Ｖ１−２，Ｖ１−３とする。演算レジスタ１０３においては、それぞれ、Ｖ２−０，Ｖ２−１，Ｖ２−２，Ｖ２−３とする。演算レジスタ１０４においては、それぞれ、Ｖ３−０，Ｖ３−１，Ｖ３−２，Ｖ３−３とする。
【００３２】
選択部１０６は、入力側において、演算レジスタ１０１〜１０４と、バイパス調整部１０８，１０９の出力側とに接続し、出力側において、加算器１２０の入力部と、乗算器１３０の入力部とに接続している。この選択部１０６は、制御部２０の指示に従って、入力側である演算レジスタ１０１〜１０４およびバイパス調整部１０８，１０９のうちの一つを選択的に出力側である加算器１２０および乗算器１３０の一方の入力部に接続する回路構成を備えている。
【００３３】
図３は選択部１０６の具体的な一構成例を表すブロック図である。この具体例では、選択部１０６は、オペランドセレクタ１４１〜１４４と、バイパスデータセレクタ１１１〜１１４とを有している。オペランドセレクタ１４１〜１４４は、それぞれ、演算レジスタ１０１〜１０４に接続している。また、オペランドセレクタ１４１は、バイパスデータセレクタ１１１の入力側に接続している。オペランドセレクタ１４２は、バイパスデータセレクタ１１２の入力側に接続している。オペランドセレクタ１４３は、バイパスデータセレクタ１１３の入力側に接続している。オペランドセレクタ１４４は、バイパスデータセレクタ１１４の入力側に接続している。
【００３４】
オペランドセレクタ１４１は、制御部２０の指示に従って、演算レジスタ１０１〜１０４のうちの一つを選択的にバイパスデータセレクタ１１１の入力側に接続する回路構成を備えている。オペランドセレクタ１４２〜１４４も、オペランドセレクタ１４１とほぼ同様に、制御部２０の指示に従って、演算レジスタ１０１〜１０４のうちの一つを、選択的に、接続しているバイパスデータセレクタ１１２〜１１４の入力側に接続する回路構成を備えている。
【００３５】
バイパスデータセレクタ１１１〜１１４の入力側は、前記の如く、それぞれ、対応しているオペランドセレクタ１４１〜１４４と接続している。さらに、バイパスデータセレクタ１１１〜１１４の入力側は、バイパス調整部１０８，１０９の出力側と接続している。さらにまた、バイパスデータセレクタ１１１，１１２は、加算器１２０の入力部に接続し、バイパスデータセレクタ１１３，１１４は、乗算器１３０の入力部に接続している。
【００３６】
バイパスデータセレクタ１１１〜１１４は、制御部２０の指示に従って、接続しているオペランドセレクタ１４１〜１４４およびバイパス調整部１０８，１０９の出力側のうちの一つを、選択的に、加算器１２０あるいは乗算器１３０の入力部に接続する回路構成を備えている。
【００３７】
図２に示されるように、バイパス調整部１０８の入力側は、加算器１２０の出力部に接続している。また、バイパス調整部１０８の出力側は、経路１１５を介して選択部１０６に接続している。これにより、加算器１２０の出力部からバイパス調整部１０８と経路１１５と選択部１０６を通して演算部１０７の入力側に至る経路が構成される。この経路は、加算器１２０による演算結果を演算レジスタ１０１〜１０４を通さずに、演算部１０７に供給可能な経路であり、バイパス経路とも呼ばれる。
【００３８】
バイパス調整部１０８は、加算器１２０の演算結果をバイパス経路により演算部１０７に供給するタイミングを調整する機能を備えている。
【００３９】
バイパス調整部１０９の入力側は、乗算器１３０の出力部に接続している。また、バイパス調整部１０９の出力側は、経路１１６を介して選択部１０６に接続している。これにより、乗算器１３０の出力部からバイパス調整部１０９と経路１１６と選択部１０６を通して演算部１０７の入力側に至る経路が構成される。この経路は、乗算器１３０による演算結果を演算レジスタ１０１〜１０４を通さずに、演算部１０７に供給可能な経路であり、バイパス経路とも呼ばれる。
【００４０】
バイパス調整部１０９は、乗算器１３０の演算結果をバイパス経路により演算部１０７に供給するタイミングを調整する機能を備えている。
【００４１】
図４はバイパス調整部１０８，１０９の具体的な一構成例を選択部１０６と演算部１０７と共に表すブロック図である。この具体例では、バイパス調整部１０８は、レジスタ１２１，１２２と、セレクタ１２３とを有している。レジスタ１２１は、加算器１２０から出力された演算結果を格納する機能を備えている。レジスタ１２２は、そのレジスタ１２１から出力された加算器１２０の演算結果を格納する機能を備えている。例えば、それらレジスタ１２１，１２２は、ベクトル処理装置における基本動作周波数の１サイクル（１クロック）の間、加算器１２０の演算結果を格納し、次のサイクルの開始時にその演算結果を出力する。
【００４２】
セレクタ１２３の入力側は、加算器１２０とレジスタ１２１とレジスタ１２２との各出力側に接続している。セレクタ１２３の出力側は、選択部１０６のバイパスデータセレクタ１１１〜１１４の入力側に接続している。セレクタ１２３は、制御部２０の指示に従って、加算器１２０およびレジスタ１２１，１２２のうちの一つを、選択部１０６のバイパスデータセレクタ１１１〜１１４の入力側に接続する回路構成を備えている。なお、セレクタ１２３は、制御部２０の指示により、ベクトル長分のデータが連続して同じ箇所から出力するように、同じ選択状態をベクトル長分、維持する。
【００４３】
バイパス調整部１０９は、バイパス調整部１０８とほぼ同様な構成を備えている。すなわち、バイパス調整部１０９は、レジスタ１３１，１３２と、セレクタ１３３とを有している。レジスタ１３１は、乗算器１３０から出力された演算結果を格納する機能を備えている。レジスタ１３２は、レジスタ１３１から出力された乗算器１３０の演算結果を格納する機能を備えている。例えば、それらレジスタ１３１，１３２は、ベクトル処理装置における基本動作周波数の１サイクル（１クロック）の間、乗算器１３０の演算結果を格納し、次のサイクルの開始時にその演算結果を出力する。
【００４４】
セレクタ１３３の入力側は、乗算器１３０とレジスタ１３１とレジスタ１３２との各出力側に接続している。セレクタ１３３の出力側は、選択部１０６のバイパスデータセレクタ１１１〜１１４の入力側に接続している。セレクタ１３３は、制御部２０の指示に従って、乗算器１３０およびレジスタ１３１，１３２のうちの一つを、選択部１０６のバイパスデータセレクタ１１１〜１１４の入力側に接続する回路構成を備えている。なお、セレクタ１３３は、制御部２０の指示により、ベクトル長分のデータが連続して同じ箇所から出力するように、同じ選択状態をベクトル長分、維持する。
【００４５】
このような構成を持つバイパス調整部１０８，１０９が加算器１２０あるいは乗算器１３０の演算結果を選択部１０６のバイパスデータセレクタ１１１〜１１４に出力するタイミングは、次の３つのタイミングがある。その一つのタイミングは、加算器１２０あるいは乗算器１３０が演算結果を出力したときである。この場合には、セレクタ１２３，１３３は、加算器１２０あるいは乗算器１３０の出力側を選択部１０６のバイパスデータセレクタ１１１〜１１４に接続している。これにより、加算器１２０あるいは乗算器１３０の演算結果は、レジスタ１２１，１２２，１３１，１３２を介さずに直接にバイパスデータセレクタ１１１〜１１４に出力される。
【００４６】
別の一つのタイミングは、加算器１２０あるいは乗算器１３０の演算結果がレジスタ１２１，１３１に格納された後に当該レジスタ１２１，１３１から出力するときである。この場合には、セレクタ１２３，１３３は、レジスタ１２１，１３１の出力側を選択部１０６のバイパスデータセレクタ１１１〜１１４に接続している。これにより、加算器１２０あるいは乗算器１３０の演算結果は、加算器１２０あるいは乗算器１３０から出力されてから、レジスタ１２１，１３１に格納されていた分（例えば１サイクル）遅れてバイパスデータセレクタ１１１〜１１４に出力される。
【００４７】
さらに別の一つのタイミングは、加算器１２０あるいは乗算器１３０の演算結果がレジスタ１２２，１３２に格納された後に当該レジスタ１２２，１３２から出力するときである。この場合には、セレクタ１２３，１３３は、レジスタ１２２，１３２の出力側を選択部１０６のバイパスデータセレクタ１１１〜１１４に接続している。これにより、加算器１２０あるいは乗算器１３０の演算結果は、加算器１２０あるいは乗算器１３０から出力されてから、レジスタ１２１，１２２，１３１，１３２に格納されていた分（例えば２サイクル）遅れてバイパスデータセレクタ１１１〜１１４に出力される。
【００４８】
図２に示す出力部１０５は、セレクタ（ストアデータセレクタ）により構成されている。出力部１０５の入力側は、演算レジスタ１０１〜１０４に接続している。出力部１０５の出力側は、処理部２１外部のメモリに接続している。この出力部１０５は、制御部２０の指示に従って、演算レジスタ１０１〜１０４のうちの一つを処理部２１外部のメモリに接続する機能を備えている。換言すれば、出力部１０５は、選択された演算レジスタ１０１〜１０４に格納されているデータ（演算結果）を処理部２１外部のメモリに向けて出力する機能を備えている。なお、出力部１０５は、ベクトル長分のデータを連続して処理部２１外部のメモリに出力する。また、出力部１０５は、制御部２０の指示に従って、演算レジスタ１０１〜１０４と、処理部２１外部のメモリとを非接続状態としている場合もある。
【００４９】
制御部２０は、処理部２１を構成する各構成部１００〜１０９の動作を制御する機能を備えている。図５は、制御部２０の一構成例を簡略化して表すブロック図である。この制御部２０は、バッファ部４０１と、デコーダ部４０２と、発行部４０３と、管理部４０４と、指令部４０５とを有している。
【００５０】
バッファ部４０１は、外部のメモリから出力された命令情報を格納する機能を備えている。命令情報とは、演算器（加算器１２０や乗算器１３０）の演算処理に関わる命令列を含む情報である。
【００５１】
デコーダ部４０２は、バッファ部４０１に格納されていた命令情報をデコーダ（復号）し、このデコーダした命令情報を発行部４０３に出力する機能を備えている。なお、発行部４０３は、命令情報を格納する１つ以上のレジスタ（命令レジスタ）を有している。デコーダ部４０２は、発行部４０３の全ての命令レジスタに命令情報が格納されているか否かの情報を取得し、当該情報に基づいて、発行部４０３の命令レジスタの全てに命令情報が格納されていることを検知できる機能を備えている。また、デコーダ部４０２は、発行部４０３の全ての命令レジスタに命令が格納されているために、新たな命令情報を受け付けられない状態であることを検知した場合には、バッファ部４０１からの命令情報の読み出しを停止する。
【００５２】
発行部４０３は、デコーダ部４０２から出力された命令情報を保持すると共に、その命令情報の発行を決定する場合に利用する情報を保持する機能を備えている。図６は、発行部４０３の一構成例をデコーダ部４０２および管理部４０４と共に簡略化して表すブロック図である。この例では、発行部４０３は、３つの発行ステージ４１１，４１２，４１３を有している。発行ステージ４１１は、命令レジスタ２１１と、パス情報管理部２１２と、バイパス情報管理部２１５とを有する。同様に、発行ステージ４１２は、命令レジスタ２４１と、パス情報管理部２４２と、バイパス情報管理部２４５とを有する。発行ステージ４１３は、命令レジスタ２７１と、パス情報管理部２７２と、バイパス情報管理部２７５とを有する。
【００５３】
命令レジスタ２１１，２４１，２７１は、それぞれ、デコーダ部４０２から出力された命令情報を保持（格納）する機能を備えている。ここでは、デコーダ部４０２から出力された命令情報は、命令レジスタ２１１，２４１，２７１の何れか一つに選択的に保持される。命令レジスタ２１１，２４１，２７１に格納された命令情報は、当該命令情報を発行することが確定するまで格納される。命令情報が発行（出力）された後には、命令レジスタ２１１，２４１，２７１はリセットされ（命令情報が削除され）、新たな命令情報を格納することが可能な状態となる。
【００５４】
パス情報管理部２１２，２４２，２７２は、処理部２１の動作で使用するリソース（加算器１２０や乗算器１３０や、出力部１０５から外部のメモリに出力するパス（ストアパス）など）の使用状況に関する情報を保持する機能を備えている。
【００５５】
すなわち、発行ステージ４１１のパス情報管理部２１２は、フラグレジスタ２１３，２１４を有している。これらフラグレジスタ２１３，２１４は、管理部４０４により管理される。フラグレジスタ２１３は、管理部４０４によって、次のような場合に「１」が格納される（フラグが立つ）。その場合とは、命令レジスタ２１１に格納されている命令情報に従って処理部２１が動作した場合に利用するリソースを、発行ステージ４１２の命令レジスタ２４１に格納されている命令情報に従って処理部２１が動作した場合にも利用する競合状態にある場合である。このような場合を、発行ステージ４１１の命令情報と、発行ステージ４１２の命令情報とがリソースの使用に関して競合状態にあるとも言う。
【００５６】
フラグレジスタ２１４は、発行ステージ４１１の命令情報と、発行ステージ４１３の命令情報とがリソースの使用に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。
【００５７】
発行ステージ４１２のパス情報管理部２４２は、フラグレジスタ２４３，２４４を有している。フラグレジスタ２４３は、発行ステージ４１２の命令情報と、発行ステージ４１１の命令情報とがリソースの使用に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。フラグレジスタ２４４は、発行ステージ４１２の命令情報と、発行ステージ４１３の命令情報とがリソースの使用に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。
【００５８】
発行ステージ４１３のパス情報管理部２７２も、上記同様に、フラグレジスタ２７３，２７４を有している。フラグレジスタ２７３は発行ステージ４１３の命令情報と、発行ステージ４１１の命令情報とがリソースの使用に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。フラグレジスタ２７４は、発行ステージ４１３の命令情報と、発行ステージ４１２の命令情報とがリソースの使用に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。
【００５９】
バイパス情報管理部２１５，２４５，２７５は、バイパス経路（セレクタ１２３，１３３およびバイパスデータセレクタ１１１〜１１４を含む）の使用状況に関わる情報を保持する機能を備えている。すなわち、バイパス情報管理部２１５は、フラグレジスタ２１６，２１７を有している。これらフラグレジスタ２１６，２１７は、管理部４０４により管理される。フラグレジスタ２１６は、管理部４０４によって、次のような場合に「１」が格納される（フラグが立つ）。ここで、発行ステージ４１１〜４１３の命令レジスタ２１１，２４１，２７１に格納されている命令情報に基づいた加算器１２０や乗算器１３０の演算結果をバイパス経路を利用して加算器１２０や乗算器１３０に供給する処理をバイパス処理というものとする。フラグレジスタ２１６に「１」が格納される場合とは、発行ステージ４１１の命令レジスタ２１１の命令情報に基づいたバイパス処理と、発行ステージ４１２の命令レジスタ２４１の命令情報に基づいたバイパス処理とを実行した場合に、それらバイパス処理対象の前記演算結果がバイパス経路において競合する場合である。このような場合を、発行ステージ４１１の命令情報と、発行ステージ４１２の命令情報とがバイパス処理に関して競合状態にあるとも言う。
【００６０】
フラグレジスタ２１７は、発行ステージ４１１の命令情報と、発行ステージ４１３の命令情報とがバイパス処理に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。
【００６１】
発行ステージ４１２のバイパス情報管理部２４５は、フラグレジスタ２４６，２４７を有している。これらフラグレジスタ２４６，２４７は、管理部４０４によって制御される。フラグレジスタ２４６は、発行ステージ４１２の命令情報と、発行ステージ４１１の命令情報とがバイパス処理に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。フラグレジスタ２４７は、発行ステージ４１２の命令情報と、発行ステージ４１３の命令情報とがバイパス処理に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。
【００６２】
発行ステージ４１３のバイパス情報管理部２７５も、上記同様に、フラグレジスタ２７６，２７７を有している。フラグレジスタ２７６は、発行ステージ４１３の命令情報と、発行ステージ４１１の命令情報とがバイパス処理に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。フラグレジスタ２７７は、発行ステージ４１３の命令情報と、発行ステージ４１２の命令情報とがバイパス処理に関して競合状態にある場合に、管理部４０４によって、「１」が格納される（フラグが立つ）。
【００６３】
図７は、管理部４０４の一構成例を発行部４０３等と共に簡略化して表すブロック図である。図７に示す管理部４０４は、ビジー管理部２０３と、バイパス情報提供部２０４と、パス競合認識部２０５と、バイパス認識部２０６と、競合調整部２０７とを有している。
【００６４】
ビジー管理部２０３は、バイパス経路（加算器１２０と乗算器１３０とセレクタ１２３，１３３とバイパスデータセレクタ１１１〜１１４を含む）が使用されるか（ビジーであるか）否かを示す情報を管理する機能を備えている。このビジー管理部２０３は、例えば加算器１２０や乗算器１３０等の管理対象のリソースにそれぞれ対応するフラグレジスタを有している。このようなフラグレジスタは、競合調整部２０７によって、管理される。すなわち、発行ステージ４１１〜４１３から命令情報が発行されることが確定した次のサイクル（基本動作周波数のサイクル）で、その命令情報に基づき使用されるリソースに対応するフラグレジスタに、競合調整部２０７が、「１」を格納する（フラグが立つ）。
【００６５】
バイパス情報提供部２０４は、バイパス処理が可能であることを示す情報を保持する機能を備えている。例えば、バイパス情報提供部２０４は、演算レジスタ１０１〜１０４にそれぞれ対応するフラグレジスタを有している。これらフラグレジスタには、対応する演算レジスタ１０１〜１０４に関わるバイパス処理が可能となった場合に、バイパス認識部２０６が、「１」を格納する（フラグが立つ）。また、バイパス情報提供部２０４は、バイパス認識部２０６から出力されるバイパスタイミング情報を保持する機能を備えている。
【００６６】
なお、演算レジスタ１０１〜１０４にデータを書き込み、その後、そのデータを読み出すという関係を維持するために、ビジー管理部２０３において、演算レジスタ１０１〜１０４に対応するフラグレジスタにフラグが立っている場合がある。この場合に、バイパス情報提供部２０４のフラグレジスタに、バイパス処理が可能であることを示すフラグが立っている場合には、ビジー管理部２０３における、演算レジスタ１０１〜１０４に対応するフラグレジスタは、競合調整部２０７によって、マスクされる。この理由は、バイパス処理を実行する場合には演算レジスタ１０１〜１０４を利用しないから、バイパス処理の実行を妨げるビジー管理部２０３のフラグの情報をマスクすることで、バイパス処理が可能となり、処理時間の短縮化を図ることができるからである。
【００６７】
パス競合認識部２０５は、処理部２１の動作で利用するリソースの競合状況を検知し、これに基づき発行部４０３における発行ステージ４１１〜４１３のパス情報管理部２１２，２４２，２７２のフラグレジスタを管理する機能を備えている。つまり、パス競合認識部２０５は、デコーダ部４０２から発行部４０３に向けて出力される命令情報（後続の命令情報）を取得する。また、パス競合認識部２０５は、発行部４０３における命令レジスタ２１１，２４１，２７１に格納されている命令情報（先行の命令情報）を読み出す。そして、パス競合認識部２０５は、後続の命令情報に基づいて処理部２１が動作した場合に、先行の命令情報に基づいた処理部２１の動作によって使用されるリソースと同じリソースを使用する競合状態を検知できる機能を備えている。さらに、パス競合認識部２０５は、競合状態を検知した場合には、その競合状態を検知したことを示すために、発行ステージ４１１〜４１３のパス情報管理部２１２，２４２，２７２における、対応するフラグレジスタのフラグを立てる機能を備えている。
【００６８】
具体例を挙げると、例えば、発行ステージ４１１の命令レジスタ２１１に命令情報(先行の命令情報)が格納されている場合に、デコーダ部４０２から発行ステージ４１３の命令レジスタ２７１に後続の命令情報が格納されるとする。その後続の命令情報は、命令レジスタ２１１における先行の命令情報に基づいた処理部２１の動作によって使用されるリソースと同じリソースを使用する処理部２１の動作を指示（制御）する指令を含むとする。このような場合には、発行ステージ４１１，４１３に格納される命令情報は、リソースに関して競合状態を作り出す。この場合においては、パス競合認識部２０５は、発行ステージ４１１におけるパス競合管理部２１２のフラグレジスタ２１４のフラグを立て、かつ、発行ステージ４１３におけるパス競合管理部２７２のフラグレジスタ２７３のフラグを立てる。
【００６９】
図８は、競合調整部２０７の構成例を、関連する構成部分と共に簡略化して表すブロック図である。この図８に示す競合調整部２０７は、ベクトル処理による競合を回避する競合回避部としての機能を備えている。すなわち、競合調整部２０７は、命令チェック部２１８，２４８，２７８と、命令調整部２１９，２４９，２７９と、保持部２２９，２５９，２８９とを有している。
【００７０】
命令チェック部２１８，２４８，２７８は、それぞれ、発行ステージ４１１〜４１３に個別に対応している。これら命令チェック部２１８，２４８，２７８は、ビジー管理部２０３およびバイパス情報提供部２０４におけるフラグの状態を参照し、対応する命令レジスタ２１１，２４１，２７１の命令情報に関わるリソースがビジーであるか否かをチェックする機能を備えている。また、命令チェック部２１８，２４８，２７８は、そのチェックの結果、命令情報に関わるリソースがビジーでないと判断した場合には、命令情報が発行可能な状態であることを示す信号「１」を競合チェック部２１９，２４９，２７９に出力する機能を備えている。
【００７１】
さらに、命令チェック部２１８，２４８，２７８は、次のような場合に、ビジー管理部２０３におけるビジー状態を示すフラグをマスクする機能を備えている。その場合とは、前述したように、演算レジスタ１０１〜１０４へのデータの書き込みとその後の読み出しの関係を維持するためにビジー管理部２０３のフラグが立っている場合に、バイパス情報提供部２０４のフラグが立っている場合である。
【００７２】
競合チェック部２１９，２４９，２７９は、それぞれ、発行ステージ４１１〜４１３に個別に対応している。これら競合チェック部２１９，２４９，２７９は、命令チェック部２１８，２４８，２７８のうちの複数から信号「１」（つまり、命令情報が発行可能な状態であることを示す信号）が出力された場合に、命令レジスタ２１１，２４１，２７１における命令情報の発行順を調整する機能を備えている。例えば、競合チェック部２１９，２４９，２７９は、デコーダ部４０２から先に出力された命令情報の優先順位を高くするというように、デコーダ部４０２からの出力順に、命令情報の発行に関する優先順位を確定する。なお、競合チェック部２１９，２４９，２７９は、その優先順位を確定する場合に、対応する発行ステージ４１１〜４１３のフラグレジスタに格納されている競合状態に関する情報を参照する。
【００７３】
さらに、競合チェック部２１９，２４９，２７９は、優先順位が最も高い命令情報の発行を確定し、優先順位がそれよりも低い命令情報の発行を保留する機能を備えている。そして、競合チェック部２１９は、発行ステージ４１１における命令レジスタ２１１の命令情報を発行することを確定した場合には、それを通知する信号「１」を保持部２２９に出力する機能を備えている。また同様に、競合チェック部２４９は、発行ステージ４１２における命令レジスタ２４１の命令情報を発行することを確定した場合には、それを通知する信号「１」を保持部２５９に出力する機能を備えている。さらに、競合チェック部２７９は、発行ステージ４１３における命令レジスタ２７１の命令情報を発行することを確定した場合には、それを通知する信号「１」を保持部２８９に出力する機能を備えている。
【００７４】
保持部２２９，２５９，２８９は、それぞれ、発行ステージ４１１〜４１３に個別に対応している。つまり、保持部２２９は、発行ステージ４１１に対応している。当該保持部２２９は、レジスタ２２１と、複数のフラグレジスタ２２０，２２３，２２４，２２６，２２７とを有している。レジスタ２２１は、発行ステージ４１１に対応している競合チェック部２１９から信号「１」が出力された場合に、発行ステージ４１１の命令レジスタ２１１に格納されている命令情報を受け、当該命令情報を基本動作周波数の１サイクルの間、格納する。
【００７５】
フラグレジスタ２２０は、競合チェック部２１９が出力した信号「１」（つまり、命令情報の発行が確定したことを通知する信号）を受け、当該「１」を基本動作周波数の１サイクルの間、格納する（フラグを立てる）。
【００７６】
フラグレジスタ２２３，２２４，２２６，２２７は、それぞれ、発行ステージ４１１のフラグレジスタ２１３，２１４，２１６，２１７に個別に対応している。これらフラグレジスタ２２３，２２４，２２６，２２７は、それぞれ、競合チェック部２１９が信号「１」を出力した場合に、対応するフラグレジスタ２１３，２１４，２１６，２１７の状態（フラグが立っているか否かのフラグ状態）を示す情報を受ける。そして、フラグレジスタ２２３，２２４，２２６，２２７は、その情報に応じたフラグ状態となり、当該フラグ状態を基本動作周波数の１サイクルの間、維持する。
【００７７】
保持部２５９は、発行ステージ４１２に対応している。この保持部２５９は、レジスタ２５１と、複数のフラグレジスタ２５０，２５３，２５４，２５６，２５７とを有している。レジスタ２５１は、発行ステージ４１２に対応している競合チェック部２４９から信号「１」が出力された場合に、発行ステージ４１２の命令レジスタ２４１に格納されている命令情報を受け、当該命令情報を基本動作周波数の１サイクルの間、格納する。
【００７８】
フラグレジスタ２５０は、競合チェック部２４９が出力した信号「１」（つまり、命令情報の発行が確定したことを通知する信号）を受け、当該「１」を基本動作周波数の１サイクルの間、格納する（フラグを立てる）。
【００７９】
フラグレジスタ２５３，２５４，２５６，２５７は、それぞれ、発行ステージ４１２のフラグレジスタ２４３，２４４，２４６，２４７に個別に対応している。これらフラグレジスタ２５３，２５４，２５６，２５７は、それぞれ、競合チェック部２４９から信号「１」が出力された場合に、対応するフラグレジスタ２４３，２４４，２４６，２４７のフラグ状態を示す情報を受ける。そして、フラグレジスタ２５３，２５４，２５６，２５７は、その情報に応じたフラグ状態となり、当該フラグ状態を基本動作周波数の１サイクルの間、維持する。
【００８０】
保持部２７９は、発行ステージ４１３に対応している。当該保持部２７９は、レジスタ２８１と、複数のフラグレジスタ２８０，２８３，２８４，２８６，２８７とを有している。レジスタ２８１は、発行ステージ４１３に対応している競合チェック部２７９から信号「１」が出力された場合に、発行ステージ４１３の命令レジスタ２７１に格納されている命令情報を受け、当該命令情報を基本動作周波数の１サイクルの間、格納する。
【００８１】
フラグレジスタ２８０は、競合チェック部２７９が出力した信号「１」（つまり、命令情報の発行が確定したことを通知する信号）を受け、当該「１」を基本動作周波数の１サイクルの間、格納する（フラグを立てる）。
【００８２】
フラグレジスタ２８３，２８４，２８６，２８７は、それぞれ、発行ステージ４１３のフラグ２７３，２７４，２７６，２７７に個別に対応している。これらフラグ２８３，２８４，２８６，２８７は、それぞれ、競合チェック部２７９から信号「１」が出力された場合に、対応するフラグ２７３，２７４，２７６，２７７のフラグ状態を示す情報を受ける。そして、フラグレジスタ２７３，２７４，２７６，２７７は、その情報に応じたフラグ状態となり、当該フラグ状態を基本動作周波数の１サイクルの間、維持する。
【００８３】
バイパス認識部２０６は、発行が確定した命令情報に基づいて、バイパス情報管理部２１５，２４５，２７５およびバイパス情報提供部２０４のフラグレジスタを制御（管理）する機能を備えている。
【００８４】
図９は、バイパス認識部２０６の一構成例を、関連する構成部と共に表すブロック図である。このバイパス認識部２０６は、発行命令認識部３０１〜３０３と、格納命令認識部３１１〜３１３と、発行調整部３２０，３２１と、セット部３２２と、バイパスタイミング検出部３５１とを有している。
【００８５】
発行命令認識部３０１は、発行ステージ４１１に対応している。この発行命令認識部３０１は、次のような機能を備えた例えば論理回路を備えている。つまり、発行命令認識部３０１は、発行ステージ４１１に対応している保持部２２９が保持している保持情報に基づいて、発行ステージ４１１から命令情報が発行されたことを検知（認識）する機能を備えている。
【００８６】
また、発行命令認識部３０１は、保持部２２９の保持情報に基づき、発行された命令情報に関わる演算器が加算器１２０であることを検知した場合には、発行調整部３２０（セレクタ３３１）に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。また、発行命令認識部３０１は、保持部２２９の保持情報に基づいて、発行された命令情報に関わる演算器が乗算器１３０であることを検知した場合には、発行調整部３２１（セレクタ３４１）に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。
【００８７】
発行命令認識部３０２は、発行ステージ４１２に対応している。また、発行命令認識部３０３は、発行ステージ４１３に対応している。発行命令認識部３０２，３０３は、発行命令認識部３０１と同様な機能を備えた例えば論理回路を備えている。つまり、発行命令認識部３０２，３０３は、対応する保持部２５９，２８９の保持情報に基づいて、対応している発行ステージ４１２，４１３から命令情報が発行されたことを検知（認識）する機能を備えている。
【００８８】
また、発行命令認識部３０２，３０３は、対応する保持部２５９，２８９の保持情報に基づいて、その発行された命令情報に関わる演算器が加算器１２０であることを検知した場合には、発行調整部３２０（セレクタ３３１）に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。さらに、発行命令認識部３０２，３０３は、対応する保持部２５９，２８９の保持情報に基づいて、発行された命令情報に関わる演算器が乗算器１３０であることを検知した場合には、発行調整部３２１（セレクタ３４１）に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。
【００８９】
格納命令認識部３１１〜３１３は、それぞれ、発行ステージ４１１〜４１３に個別に対応している。これら格納命令認識部３１１〜３１３は、次のような機能を備えた例えば論理回路を備えている。つまり、格納命令認識部３１１〜３１３は、対応する発行ステージ４１１〜４１３の命令レジスタ２１１，２４１，２７１に格納されている命令情報を読み出す機能を備えている。また、格納命令認識部３１１〜３１３は、デコーダ部４０２から、対応する発行ステージ４１１〜４１３に向けて発行される後続の命令情報を読み出す機能を備えている。さらに、格納命令認識部３１１〜３１３は、読み出した命令情報に関わる演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報を、発行調整部３２０，３２１に出力する機能を備えている。
【００９０】
例えば、格納命令認識部３１１〜３１３が読み出した命令情報が、次のような命令ＶＡＤＤ（データＶ０，Ｖ１を加算し、加算結果をデータＶ２とするという命令）を含むとする。
命令ＶＡＤＤ  Ｖ２＜−Ｖ０＋Ｖ１
この場合には、演算対象のデータはＶ０，Ｖ１である。それらＶ０，Ｖ１を格納している演算レジスタは演算レジスタ１０１，１０２であるとする。このような場合には、格納命令認識部３１１〜３１３は、演算対象のデータを格納している演算レジスタ１０１，１０２を示す情報を出力する。
【００９１】
発行調整部３２０は、加算器１２０に対応している。この発行調整部３２０は、セレクタ３３１と、複数のレジスタ３３２〜３３５と、バイパス競合検知部３３６と、論理回路９５１〜９５３とを有している。
【００９２】
セレクタ３３１の入力側は、発行命令認識部３０１〜３０３に接続している。また、セレクタ３３１の出力側はレジスタ３３２と論理回路９５１〜９５３とに接続している。当該セレクタ３３１は、発行命令認識部３０１〜３０３から、加算器１２０に関わる格納先レジスタ情報を含む命令情報を受け取った場合に、その情報をレジスタ３３２および論理回路９５１〜９５３に向けて出力する。なお、そのセレクタ３３１から出力される情報は、加算器１２０を利用しないストア命令等に関する情報は含まれない。
【００９３】
レジスタ３３２〜３３５は、セレクタ３３１から受け取った情報（つまり、加算器１２０に関わる格納先レジスタ情報を含む命令情報）を、順次、基本動作周波数の１サイクルずつ格納する機能を備えている。この第２実施形態では、レジスタ３３２〜３３４にその情報が格納されている状態が、加算器１２０に関するバイパス処理が可能な状態である。また、レジスタ３３５に格納されている情報は、バイパス経路において、データが競合するか否かを判断する競合情報を生成するために利用される。
【００９４】
論理回路９５１は、発行ステージ４１１に対応している回路である。当該論理回路９５１には、格納命令認識部３１１から出力された情報（演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報）と、セレクタ３３１から出力された情報（加算器１２０に関わる格納先レジスタ情報を含む命令情報）とが入力する。さらに、論理回路９５１には、レジスタ３３２〜３３５に格納されている情報（命令情報）が入力する。この論理回路９５１は、それら入力した情報に基づいて、発行ステージ４１１から発行される命令情報によって処理部２１が加算器１２０に関わるバイパス処理を実行する可能性がある場合に、信号「１」を出力する回路構成を備えている。
【００９５】
論理回路９５２は、発行ステージ４１２に対応している回路である。当該論理回路９５２には、格納命令認識部３１２から出力された情報（演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報）と、セレクタ３３１から出力された情報（加算器１２０に関わる格納先レジスタ情報を含む命令情報）とが入力する。さらに、論理回路９５２には、レジスタ３３２〜３３５に格納されている情報（命令情報）が入力する。この論理回路９５２は、それら入力した情報に基づいて、発行ステージ４１２から発行される命令情報によって処理部２１が加算器１２０に関するバイパス処理を実行する可能性がある場合に、信号「１」を出力する回路構成を備えている。
【００９６】
論理回路９５３は、発行ステージ４１３に対応している回路である。当該論理回路９５３には、格納命令認識部３１３から出力された情報（演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報）と、セレクタ３３１から出力された情報（加算器１２０に関わる格納先レジスタ情報を含む命令情報）とが入力する。さらに、論理回路９５３には、レジスタ３３２〜３３５に格納されている情報（命令情報）が入力する。この論理回路９５３は、それら入力した情報に基づいて、発行ステージ４１３から発行される命令情報によって処理部２１が加算器１２０に関するバイパス処理を実行する可能性がある場合に、信号「１」を出力する回路構成を備えている。
【００９７】
バイパス競合検知部３３６の入力側は論理回路９５１〜９５３の出力側に接続している。また、バイパス競合検知部３３６は、発行ステージ４１１〜４１３にそれぞれ対応する出力部を備えており、これら出力部は、セット部３２２に接続している。このバイパス競合検知部３３６は、論理回路９５１〜９５３の出力信号に基づいて、発行ステージ４１１〜４１３から発行される命令情報に関係するバイパス処理が実行された場合にデータがバイパス経路で競合する可能性の有無を検知する機能を備えている。また、バイパス競合検知部３３６は、その検出結果に応じた信号を出力する機能を備えている。
【００９８】
ここで、バイパス競合検知部３３６に関する具体例を述べる。例えば、レジスタ３３２，３３３，３３４のそれぞれに、次のような、格納先レジスタが互いに異なるバイパス可能な命令情報が格納されているとする。
――――――――――――――――――――――――――――――――――――――――
・レジスタ３３２：命令  Ｖ２＜−Ｖ０＋Ｖ１（データＶ０，Ｖ１を加算し、加算結果をデータＶ２として演算レジスタ１０３に格納するという命令）
・レジスタ３３３：命令  Ｖ１＜−Ｖ２＋Ｖ０（データＶ０，Ｖ２を加算し、加算結果をデータＶ１として演算レジスタ１０２に格納するという命令）
・レジスタ３３４：命令  Ｖ０＜−Ｖ１＋Ｖ２（データＶ１，Ｖ２を加算し、加算結果をデータＶ０として演算レジスタ１０１に格納するという命令）
（この例では、レジスタ３３２〜３３４に格納されている命令情報に基づいた加算器１２０の演算結果は、バイパス経路を通して演算部１０７に供給することが可能である。）
――――――――――――――――――――――――――――――――――――――――
【００９９】
このような状態である場合に、発行ステージ４１１，４１２，４１３のそれぞれに、次のような、バイパス可能な命令情報が格納されている（発行に備え待機している）とする。なお、発行ステージ４１１〜４１３に命令情報が格納された順番は、発行ステージ４１２→発行ステージ４１３→発行ステージ４１１とする。
――――――――――――――――――――――――――――――――――――――――
・発行ステージ４１１：命令  Ｖ０＜−Ｖ０＋Ｖ３（データＶ０，Ｖ３を加算し、加算結果をデータＶ０として演算レジスタ１０１に格納するという命令）
・発行ステージ４１２：命令  Ｖ１＜−Ｖ１×Ｖ３（データＶ１，Ｖ３を乗算し、乗算結果をデータＶ１として演算レジスタ１０２に格納するという命令）
・発行ステージ４１３：命令  Ｖ２＜−Ｖ２＋Ｖ３（データＶ２，Ｖ３を加算し、加算結果をデータＶ２として演算レジスタ１０３に格納するという命令）
（この例では、発行ステージ４１１〜４１３に格納されている命令は、いずれもバイパス経路を通じて加算器１２０又はレジスタ１２１又はレジスタ１２２に存在する先行命令演算結果を使用可能な命令である。）
――――――――――――――――――――――――――――――――――――――――
【０１００】
上記のようにレジスタ３３２〜３３４と発行ステージ４１１〜４１３に命令情報が格納されている場合には、論理回路９５１は、発行ステージ４１１に格納されている命令情報に関する情報（つまり、演算対象のデータを格納している（換言すれば、演算対象のデータを読み出す）演算レジスタ１０１，１０４を示す情報）を格納命令認識部３１１から受け取る。そして、論理回路９５１は、その受け取った情報に示される演算レジスタ１０１，１０４と、レジスタ３３２〜３３４に格納されている命令情報に含まれている格納先レジスタ情報が示す演算レジスタとが競合するか否かに応じた信号を出力する。この例では、演算対象のデータを読み出す演算レジスタ１０１と、レジスタ３３４に格納されている命令情報に基づいた演算結果の格納先の演算レジスタ１０１とが同じである。このことから、論理回路９５１は、競合することを表す信号「１」をバイパス競合検知部３３６に出力する。
【０１０１】
論理回路９５２は、発行ステージ４１２に格納されている命令情報に関する情報（つまり、演算対象のデータを格納している（換言すれば、演算対象のデータを読み出す）演算レジスタ１０２，１０４を示す情報）を格納命令認識部３１２から受け取る。そして、論理回路９５２は、その受け取った情報に示される演算レジスタ１０２，１０４と、レジスタ３３２〜３３４に格納されている命令情報に含まれている格納先レジスタ情報が示す演算レジスタとが競合するか否かに応じた信号を出力する。この例では、演算対象のデータを読み出す演算レジスタ１０２と、レジスタ３３３に格納されている命令情報に基づいた演算結果の格納先の演算レジスタ１０２とが同じである。このことから、論理回路９５２は、競合することを表す信号「１」をバイパス競合検知部３３６に出力する。
【０１０２】
論理回路９５３は、発行ステージ４１３に格納されている命令情報に関する情報（つまり、演算対象のデータを格納している（換言すれば、演算対象のデータを読み出す）演算レジスタ１０３，１０４を示す情報）を格納命令認識部３１３から受け取る。そして、論理回路９５３は、その受け取った情報に示される演算レジスタ１０３，１０４と、レジスタ３３２〜３３４に格納されている命令情報に含まれている格納先レジスタ情報が示す演算レジスタとが競合するか否かに応じた信号を出力する。この例では、演算対象のデータを読み出す演算レジスタ１０３と、レジスタ３３２に格納されている命令情報に基づいた演算結果の格納先の演算レジスタ１０３とが同じである。このことから、論理回路９５３は、競合することを表す信号「１」をバイパス競合検知部３３６に出力する。
【０１０３】
バイパス競合検知部３３６は、論理回路９５１〜９５２の出力信号に基づいて、発行ステージ４１１〜４１３に格納されている命令情報に関係するバイパス処理がデータの競合状態を招くと検知（認識）する。そして、バイパス競合検知部３３６は、そのような競合する命令情報の優先順位に応じた信号をセット部３２２に出力する。つまり、この第２実施形態では、命令情報の優先順位は発行された順番であるから、優先順位の高い順から、発行ステージ４１２の命令情報→発行ステージ４１３の命令情報→発行ステージ４１１の命令情報である。これにより、バイパス競合検知部３３６は、発行ステージ４１１に対応するセット部３２２の論理和回路３６１に向けて信号「１１」を出力する。この信号「１１」における左側（十の位）の「１」は、発行ステージ４１２の命令情報に関する処理と発行ステージ４１１の命令情報に関する処理とが競合し、かつ、発行ステージ４１２の命令情報よりも発行ステージ４１１の命令情報の発行順の優先順位が低いことを表している。また、信号「１１」における右側（一の位）の「１」は、発行ステージ４１３の命令情報に関する処理と発行ステージ４１１の命令情報に関する処理とが競合し、かつ、発行ステージ４１３の命令情報よりも発行ステージ４１１の命令情報の発行順の優先順位が低いことを表している。
【０１０４】
バイパス競合検知部３３６は、発行ステージ４１２に対応するセット部３２２の論理和回路３６２に向けて信号「００」を出力する。この信号「００」における左側（十の位）の「０」は、発行ステージ４１１の命令情報に関する処理と発行ステージ４１２の命令情報に関する処理とが競合し、かつ、発行ステージ４１１の命令情報よりも発行ステージ４１２の命令情報の発行順の優先順位が高いことを表している。また、信号「００」における右側（一の位）の「０」は、発行ステージ４１３の命令情報に関する処理と発行ステージ４１２の命令情報に関する処理とが競合し、かつ、発行ステージ４１３の命令情報よりも発行ステージ４１２の命令情報の発行順の優先順位が高いことを表している。
【０１０５】
バイパス競合検知部３３６は、発行ステージ４１３に対応するセット部３２２の論理和回路３６３に向けて信号「１０」を出力する。この信号「１０」における左側（十の位）の「１」は、発行ステージ４１１の命令情報に関する処理と発行ステージ４１３の命令情報に関する処理とが競合し、かつ、発行ステージ４１１の命令情報よりも発行ステージ４１３の命令情報の発行順の優先順位が低いことを表している。また、信号「１０」における右側（一の位）の「０」は、発行ステージ４１２の命令情報に関する処理と発行ステージ４１３の命令情報に関する処理とが競合し、かつ、発行ステージ４１２の命令情報よりも発行ステージ４１３の命令情報の発行順の優先順位が高いことを表している。
【０１０６】
発行調整部３２１は、乗算器１３０に対応している。この発行調整部３２１は、セレクタ３４１と、複数のレジスタ３４２〜３４５と、バイパス競合検知部３４６と、論理回路９５４〜９５６とを有している。この発行調整部３２１は、対応している演算器が加算器１２０であるか乗算器１３０であるかという相違以外は発行調整部３２０とほぼ同様である。
【０１０７】
すなわち、セレクタ３４１の入力側は、発行命令認識部３０１〜３０３に接続している。また、セレクタ３４１の出力側はレジスタ３４２と論理回路９５４〜９５６とに接続している。当該セレクタ３４１は、発行命令認識部３０１〜３０３から、乗算器１３０に関わる格納先レジスタ情報を含む命令情報を受け取った場合に、その情報をレジスタ３４２および論理回路９５４〜９５６に向けて出力する。なお、そのセレクタ３４１から出力される情報は、乗算器１３０を利用しないストア命令等に関する情報は含まれない。
【０１０８】
レジスタ３４２〜３４５は、セレクタ３４１から受け取った情報（つまり、乗算器１３０に関わる格納先レジスタ情報を含む命令情報）を、順次、基本動作周波数の１サイクルずつ格納する機能を備えている。この第２実施形態では、レジスタ３４２〜３４４にその情報が格納されている状態が、乗算器１３０に関するバイパス処理が可能な状態である。また、レジスタ３４５に格納されている情報は、バイパス経路において、データが競合するか否かを判断する競合情報を生成するために利用される。
【０１０９】
論理回路９５４は、発行ステージ４１１に対応している回路である。当該論理回路９５４には、格納命令認識部３１１から出力された情報（演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報）と、セレクタ３４１から出力された情報（乗算器１３０に関わる格納先レジスタ情報を含む命令情報）とが入力する。さらに、論理回路９５４には、レジスタ３４２〜３４５に格納されている情報（命令情報）が入力する。この論理回路９５４は、それら入力した情報に基づいて、発行ステージ４１１から発行される命令情報によって処理部２１が乗算器１３０に関するバイパス処理を実行する可能性がある場合に、信号「１」を出力する回路構成を備えている。
【０１１０】
論理回路９５５は、発行ステージ４１２に対応している回路である。当該論理回路９５５には、格納命令認識部３１２から出力された情報（演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報）と、セレクタ３４１から出力された情報（乗算器１３０に関わる格納先レジスタ情報を含む命令情報）とが入力する。さらに、論理回路９５５には、レジスタ３４２〜３４５に格納されている情報（命令情報）が入力する。この論理回路９５５は、それら入力した情報に基づいて、発行ステージ４１２から発行される命令情報によって処理部２１が乗算器１３０に関するバイパス処理を実行する可能性がある場合に、信号「１」を出力する回路構成を備えている。
【０１１１】
論理回路９５６は、発行ステージ４１３に対応している回路である。当該論理回路９５６には、格納命令認識部３１３から出力された情報（演算対象のデータを格納している演算レジスタ１０１〜１０４を示す情報）と、セレクタ３４１から出力された情報（乗算器１３０に関わる格納先レジスタ情報を含む命令情報）とが入力する。さらに、論理回路９５６には、レジスタ３４２〜３４５に格納されている情報（命令情報）が入力する。この論理回路９５６は、それら入力した情報に基づいて、発行ステージ４１３から発行される命令情報によって処理部２１が乗算器１３０に関するバイパス処理を実行する可能性がある場合に、信号「１」を出力する回路構成を備えている。
【０１１２】
バイパス競合検知部３４６の入力側は論理回路９５４〜９５６の出力側に接続している。また、バイパス競合検知部３４６は、発行ステージ４１１〜４１３にそれぞれ対応する出力部を備えており、これら出力部は、セット部３２２に接続している。このバイパス競合検知部３４６は、バイパス競合検知部３３６と同様に、論理回路９５４〜９５６の出力信号に基づいて、発行ステージ４１１〜４１３から発行される命令情報に関係するバイパス処理が実行された場合にデータがバイパス経路で競合する可能性の有無を検知する機能を備えている。また、バイパス競合検知部３４６は、その検出結果に応じた信号を出力する機能を備えている。
【０１１３】
セット部３２２は、論理和回路３６１〜３６３を有している。論理和回路３６１は発行ステージ４１１に関する回路である。当該論理和回路３６１は、バイパス競合検知部３３６，３４６から出力された発行ステージ４１１に関する信号を受け、これら信号の論理和に応じた信号を出力する回路構成を有している。その出力信号は、発行ステージ４１１のバイパス情報管理部２１５に伝達され、バイパス情報管理部２１５のフラグレジスタ２１６，２１７に格納される。
【０１１４】
論理和回路３６２は発行ステージ４１２に関する回路である。当該論理和回路３６２は、バイパス競合検知部３３６，３４６から出力された発行ステージ４１２に関する信号を受け、これら信号の論理和に応じた信号を出力する回路構成を有している。その出力信号は、発行ステージ４１２のバイパス情報管理部２４５に伝達され、バイパス情報管理部２４５のフラグレジスタ２４６，２４７に格納される。
【０１１５】
論理和回路３６３は発行ステージ４１３に関する回路である。当該論理和回路３６３は、バイパス競合検知部３３６，３４６から出力された発行ステージ４１３に関する信号を受け、これら信号の論理和に応じた信号を出力する回路構成を有している。その出力信号は、発行ステージ４１３のバイパス情報管理部２７５に伝達され、バイパス情報管理部２７５のフラグレジスタ２７６，２７７に格納される。
【０１１６】
バイパスタイミング検出部３５１は、発行調整部３２０のレジスタ３３２〜３３４および発行調整部３２１のレジスタ３４２〜３４４に格納されている情報に基づいて、実行される命令情報に関わる演算対象のデータを保持する演算レジスタ１０１〜１０４を検知（識別）する機能を備えている。また、バイパスタイミング検出部３５１は、識別（検知）した演算レジスタ１０１〜１０４に対応するバイパス情報提供部２０４のフラグレジスタに向けて信号「１」を出力する機能を備えている。これにより、バイパス情報提供部２０４において、バイパスタイミング検出部３５１により識別された演算レジスタ１０１〜１０４に対応するフラグレジスタに「１」が格納される（フラグが立つ）。
【０１１７】
さらに、バイパスタイミング検出部３５１は、演算レジスタ１０１〜１０４に関わるバイパス処理を実行するタイミングを決定（特定）する機能を備えている。さらに、バイパスタイミング検出部３５１は、その決定（特定）したタイミングを示すバイパスタイミング情報をバイパス情報提供部２０４に向けて出力する機能を備えている。その出力された情報は、バイパス情報提供部２０４により保持され、当該バイパス情報提供部２０４から、発行された命令情報と共に指令部４０５に出力される。なお、この第２実施形態では、発行調整部３２０，３２１のレジスタ３３２，３４２に命令情報が格納されている場合には、その情報に関連するバイパス処理が最も早く実行される。このことを示すバイパスタイミング情報がバイパスタイミング検出部３５１からバイパス情報提供部２０４に出力される。
【０１１８】
図１０は、制御部２０を構成する指令部４０５の一構成例を管理部４０４等と共に表すブロック図である。指令部４０５は、命令情報を発行する機能を備えており、出力調整部２３６，２６６，２９６を有している。出力調整部２３６，２６６，２９６は、それぞれ、発行ステージ４１１〜４１３に個別に対応しており、命令情報を出力するタイミングを調整する機能を備えている。
【０１１９】
すなわち、出力調整部２３６は、発行ステージ４１１に対応している。当該出力調整部２３６は、発行抑止部２２８と、レジスタ２３０〜２３５と、発行部８１０〜８１４とを有している。発行抑止部２２８は、命令調整部２１９によって命令情報を発行することが確定されたことにより発行ステージ４１１から保持部２２９に命令情報が格納された場合に、他の命令情報が発行されることを抑止する機能を備えている。つまり、発行抑止部２２８は、そのような場合に、抑止信号を命令調整部２４９，２７９に出力する機能を備えている。その信号出力に際し、発行抑止部２２８は、保持部２２９のフラグレジスタ２２０，２２３，２２４，２２６，２２７におけるフラグ状態を参照する。
【０１２０】
この発行抑止部２２８の機能によって、同一リソースを使用する他の命令情報の発行が確定してしまうことが回避される。すなわち、命令情報の発行が確定した基本動作周波数のサイクルの次のサイクルで、その命令情報に関わるリソースに対応するビジー管理部２０３のフラグレジスタのフラグが立つ。つまり、命令調整部２１９，２４９，２７９は、その管理部２０３のフラグ状態に基づいて発行対象の命令情報を確定する。そのように命令情報を発行することを確定してから、その命令情報に関わるリソースのビジー情報がビジー管理部２０３を介して命令調整部２１９，２４９，２７９に入力されるまで、基本動作周波数の１サイクルが必要である。換言すれば、命令調整部２１９，２４９，２７９が命令情報の発行を確定してから、当該発行を確定した命令情報に関わるビジー情報を他の命令調整部２１９，２４９，２７９が受け取るまでに１サイクルの空白期間がある。この空白期間に、他の命令調整部２１９，２４９，２７９が、リソースが競合する命令情報の発行を次に確定し、そのリソースにおけるデータの競合を招く虞がある。これに対し、命令抑止部２２８が前記の如く抑止信号を出力することにより、そのような問題は回避される。すなわち、発行抑止部２２８は、競合を回避する競合回避部として機能する。
【０１２１】
レジスタ２３０〜２３５は、次に示すような発行情報を、順次、基本動作周波数における１サイクルずつ格納していくと共に、その発行情報のうちの予め定められた情報を発行部８１１〜８１４を介して処理部２１に向けて順次発行する機能を備えている。上記発行情報は、保持部２２９のフラグレジスタ２２０のフラグ状態を示す情報と、レジスタ２２１に格納されている命令情報とを含む。さらに、発行情報は、バイパス処理に関連する演算レジスタ１０１〜１０４を示す情報と、バイパス処理対象のデータを出力する演算器（加算器１２０あるいは乗算器１３０）を示す情報と、バイパスタイミングを示す情報とを含む。
【０１２２】
発行部８１０は、上記発行情報のうちの演算レジスタに関する情報と、当該演算レジスタから演算対象のデータを読み出す指示（指令）とを処理部２１に向けて出力する機能を備えている。また、発行部８１０は、バイパス調整部１０８，１０９のセレクタ１２３，１３３を制御する指示を処理部２１に向けて出力する機能を備えている。
【０１２３】
発行部８１１は、前記発行情報に基づいて、選択部１０６のオペランドセレクタ１４１〜１４４を制御する指示と、選択部１０６のバイパスデータセレクタ１１１〜１１４を制御する指示とを処理部２１に向けて出力する機能を備えている。
【０１２４】
発行部８１２は、前記命令情報に基づいて、実行対象の演算器に向けて演算処理を実行する指示を出力する機能を備えている。発行部８１３は、前記命令情報に基づいて、クロスバ１００の回路動作（スイッチング動作）を制御する指示を処理部２１に向けて出力する機能を備えている。発行部８１４は、前記命令情報に基づいて、演算器の演算結果を格納する演算レジスタを示す情報と、その演算レジスタに演算結果を格納する指示と、それに関わるセレクタ１２３，１３３の動作を制御する指示とを処理部２１に向けて出力する機能を備えている。
【０１２５】
出力調整部２６６は、発行ステージ４１２に対応している。当該出力調整部２６６は、出力調整部２３６とほぼ同様に、発行抑止部２５８と、レジスタ２６０〜２６５と、発行部８１５〜８１９とを有している。発行抑止部２５８は、命令調整部２４９によって命令情報を発行することが確定されたことにより発行ステージ４１２から保持部２５９に命令情報が格納された場合に、他の命令情報の発行を抑止する機能を備えている。つまり、発行抑止部２５８は、そのような場合に、抑止信号を命令調整部２１９，２７９に出力する機能を備えている。その信号出力に際し、発行抑止部２５８は、保持部２５９のフラグレジスタ２５０，２５３，２５４，２５６，２５７のフラグ状態を参照する。この発行抑止部２５８も、発行抑止部２２８と同様に、競合を回避する競合回避部として機能する。
【０１２６】
レジスタ２６０〜２６５は、次に示すような発行情報を、レジスタ２３０〜２３５と同様に、順次、基本動作周波数における１サイクルずつ格納していくと共に、その発行情報のうちの予め定められた情報を発行部８１５〜８１９を介して処理部２１に向けて順次発行する機能を有する。前記発行情報は、保持部２５９のフラグレジスタ２５０のフラグ状態を示す情報と、レジスタ２５１に格納されている命令情報とを含む。さらに、発行情報は、バイパス処理に関連する演算レジスタ１０１〜１０４を示す情報と、バイパス処理対象のデータを出力する演算器（加算器１２０あるいは乗算器１３０）を示す情報と、バイパスタイミングを示す情報とを含む。
【０１２７】
発行部８１５〜８１９は、発行部８１０〜８１４と同様の機能を備えている。
【０１２８】
出力調整部２９６は、発行ステージ４１３に対応している。当該出力調整部２９６は、出力調整部２３６，２６６とほぼ同様に、発行抑止部２８８と、レジスタ２９０〜２９５と、発行部８２０〜８２４とを有している。発行抑止部２８８は、命令調整部２７９によって命令情報を発行することが確定されたことにより発行ステージ４１３から保持部２７９に命令情報が格納された場合に、他の命令情報の発行を抑止する抑止信号を命令調整部２１９，２４９に出力する機能を備えている。その信号出力に際し、発行抑止部２８８は、保持部２８９のフラグレジスタ２８０，２８３，２８４，２８６，２８７のフラグ状態を参照する。この発行抑止部２８８も、発行抑止部２２８，２５８と同様に、競合を回避する競合回避部として機能する。
【０１２９】
レジスタ２９０〜２９５は、次に示すような発行情報を、レジスタ２９０〜２９５と同様に、順次、基本動作周波数の１サイクルずつ格納していくと共に、その発行情報のうちの予め定められた情報を発行部８２０〜８２４を介して処理部２１に向けて順次発行する機能を有する。発行情報は、保持部２８９のフラグレジスタ２８０のフラグ状態を示す情報と、レジスタ２８１に格納されている命令情報とを含む。さらに、発行情報は、バイパス処理に関連する演算レジスタ１０１〜１０４を示す情報と、バイパス処理対象のデータを出力する演算器（加算器１２０あるいは乗算器１３０）を示す情報と、バイパスタイミングを示す情報とを含む。
【０１３０】
発行部８２０〜８２４は、発行部８１０〜８１４と同様の機能を備えている。
【０１３１】
この第２実施形態では、出力調整部２３６，２６６，２９６からそれぞれ上記のように命令情報が発行されることによって、ベクトル処理（パイプライン動作）を並行することが可能となっている。
【０１３２】
この第２実施形態におけるベクトル処理装置は上記のように構成されている。このベクトル処理装置における回路動作の一例を以下に説明する。
【０１３３】
ここでは、演算レジスタ１０１に格納されているデータ（Ｖ０）と、演算レジスタ１０２に格納されているデータ（Ｖ１）とを加算し、この加算結果を演算レジスタ１０４にデータＶ３として格納させる命令（指示）Ｉ１がベクトル処理装置に与えられたとする。その命令Ｉ１は、例えば、次のように書き表される。なお、ベクトル長は４とする。
命令Ｉ１  ＶＡＤＤ  Ｖ３＜−  Ｖ０＋Ｖ１
この命令（Ｉ１）に基づいたベクトル処理装置の回路動作例を図１１のタイムチャートを参照しながら説明する。
【０１３４】
制御部２０は、ベクトル長が４である上記のような命令Ｉ１の発行を確定すると、演算レジスタ１０１，１０２からそれぞれ４サイクル連続でデータ（Ｖ０−０〜３，Ｖ１−０〜３）を読み出し、その読み出したデータを加算器１２０に加える（時間ｔ２〜ｔ５）。すなわち、制御部２０は、処理部２１における選択部１０６のオペランドセレクタ１４１〜１４４とバイパスデータセレクタ１１１〜１１４を制御することによって、演算レジスタ１０１，１０２に格納されているデータ（Ｖ０−０〜３，Ｖ１−０〜３）をそれぞれ選択部１０６を介して加算器１２０に加える。
【０１３５】
この第２実施形態では、加算器１２０は、２段のパイプライン処理によって演算結果を出力する加算演算器である。これにより、加算器１２０は、データが供給され始めてから２サイクル後に、４サイクル連続して加算結果（Ａ−０〜３）を出力する（時間ｔ４〜ｔ７）。
【０１３６】
制御部２０は、クロスバ１００を制御することによって、加算器１２０の加算結果（Ａ−０〜３）をクロスバ１００を介して演算レジスタ１０４にデータＶ３として供給する。つまり、演算レジスタ１０４は、加算器１２０の演算結果を４サイクル連続して受け取り、受け取った順番に格納する（時間ｔ７〜ｔ１０）。
【０１３７】
上記のようにして、ベクトル処理装置は、命令Ｉ１に応じた処理を実行する。
【０１３８】
次に、上記のような命令Ｉ１に続いて、乗算に関する命令Ｉ２がベクトル処理装置に加えられた場合におけるベクトル処理装置の回路動作例を説明する。なお、命令Ｉ２は、演算レジスタ１０３に格納されているデータ（Ｖ２）と、演算レジスタ１０４に格納されているデータ（Ｖ３）とを乗算し、この乗算結果をデータＶ０とする命令である。
【０１３９】
上記のような命令Ｉ１，Ｉ２は、例えば、次のように書き表される。
命令Ｉ１  ＶＡＤＤ  Ｖ３＜−  Ｖ０＋Ｖ１
命令Ｉ２  ＶＭＰＹ  Ｖ０＜−  Ｖ２×Ｖ３
このような命令Ｉ１，Ｉ２がベクトル処理装置に加えられると、制御部２０は、命令Ｉ１に基づいた上記同様な処理部２１の制御を実行するが、命令Ｉ１，Ｉ２の関係により、バイパス処理に関する制御も実行する。つまり、制御部２０は、加算器１２０の加算結果を前記同様にクロスバ１００を介して演算レジスタ１０４に供給するだけでなく、バイパス調整部１０８のセレクタ１２３を制御することによって、バイパスデータセレクタ１１１〜１１４にも加算結果を供給する。また、制御部２０は、オペランドセレクタ１４１〜１４４とバイパスデータセレクタ１１１〜１１４をも制御する。これにより、加算器１２０の加算結果（Ａ−０〜３）と、演算レジスタ１０３に格納されているデータ（Ｖ２−０〜３）とが４サイクル連続してバイパスデータセレクタ１１３から乗算器１３０に供給される（時間ｔ４〜ｔ７）。
【０１４０】
乗算器１３０も、加算器１２０と同様に、２段のパイプライン処理によって演算結果を出力する乗算演算器である。これにより、乗算器１３０は、データが供給され始めてから２サイクル後に、４サイクル連続して乗算結果（Ｍ−０〜３）を出力する（時間ｔ６〜ｔ９）。制御部２０は、クロスバ１００を制御することによって、乗算器１３０の乗算結果（Ｍ−０〜３）をクロスバ１００を介して演算レジスタ１０１に供給する。これにより、演算レジスタ１０１は、受け取った乗算結果（Ｍ−０〜３）をデータＶ０として順番に格納する（時間ｔ９〜ｔ１２）。
【０１４１】
この第２実施形態のベクトル処理装置は、命令Ｉ１による加算結果（Ａ−０〜３）を、バイパス処理により、演算レジスタ１０４を介さずに、命令Ｉ２による乗算処理に利用している。つまり、図１１に示す時間ｔ４〜ｔ７に示されるように、加算器１２０の加算結果（Ａ−０〜３）が、演算レジスタ１０４を介さずに、バイパスデータセレクタ１１４から乗算器１３０に加えられている。
【０１４２】
これに対し、図１２には、ベクトル処理装置が命令Ｉ１，Ｉ２をバイパス処理を行わずに処理する場合の回路動作のタイムチャートが示されている。図１２に示す例では、時間ｔ７〜ｔ１０に示されるように、命令Ｉ１による加算結果（Ａ−０〜３）が演算レジスタ１０４に格納される。それと共に、当該演算レジスタ１０４の格納データがバイパスデータセレクタ１４４とバイパスデータセレクタ１１４を介して乗算器１３０に加えられる。
【０１４３】
第２実施形態のベクトル処理装置は、バイパス処理を実行するので、図１２に示されているようなバイパス処理を実行しない場合に比べて、同じ命令Ｉ１，Ｉ２に対し、３クロック（３サイクル）分、早く処理を完了することができる。
【０１４４】
図１３は、ベクトル処理装置の別の回路動作例を示すタイムチャートである。この回路動作例は、命令Ｉ１，Ｉ２の前に、次のような命令Ｉ０をベクトル処理装置が処理する場合の動作例である。命令Ｉ０は、演算レジスタ１０３に格納されているデータ（Ｖ２）と、演算レジスタ１０４に格納されているデータ（Ｖ３）とを乗算し、この乗算結果をデータＶ２とする命令である。なお、命令Ｉ１，Ｉ２では、演算のベクトル長が４であるのに対し、命令Ｉ０では、演算のベクトル長は２である。
命令Ｉ０  ＶＭＰＹ  Ｖ２＜−  Ｖ２×Ｖ３
命令Ｉ１  ＶＡＤＤ  Ｖ３＜−  Ｖ０＋Ｖ１
命令Ｉ２  ＶＭＰＹ  Ｖ０＜−  Ｖ２×Ｖ３
図１３の例では、命令Ｉ１によって加算器１２０が加算結果を出力し始めた時点（時間ｔ４）において、乗算器１３０は、命令Ｉ０に基づいた処理によって、バイパスデータセレクタ１１４からのデータ（Ｖ３−１）が加えられている。このため、ベクトル処理装置は、加算器１２０の出力をそのままバイパスパイプを通して乗算器１３０に加えることができない。この図１３の例では、ベクトル処理装置は、加算器１２０の加算結果（Ａ−０〜３）をレジスタ１２１に一旦格納した後に、レジスタ１２１からバイパスパイプを通して乗算器１３０に加えている（時間ｔ５）。すなわち、バイパス調整部１０８によって、加算器１２０の加算結果をバイパスパイプを通して乗算器１３０に加えるタイミングが調整されている。これにより、加算器１２０の出力をそのままバイパスパイプを通して乗算器１３０に加える構成しか持たない場合に比べて、この第２実施形態のベクトル処理装置は、バイパス処理を増加できる。このバイパス処理の増加により、第２実施形態のベクトル処理装置は、処理速度を早めることができる。
【０１４５】
さらに、ベクトル処理装置の別の回路動作例を図１４を参照しながら説明する。ここでは、ベクトル処理装置は、次のような命令Ｉ１，Ｉ２，Ｉ３，Ｉ４に従って動作する。なお、ここでは、演算のベクトル長は２である。
命令Ｉ１  ＶＡＤＤ  Ｖ０＜−  Ｖ０＋Ｖ１
命令Ｉ２  ＶＡＤＤ  Ｖ３＜−  Ｖ１＋Ｖ２
命令Ｉ３  ＶＡＤＤ  Ｖ０＜−  Ｖ０＋Ｖ１
命令Ｉ４  ＶＭＰＹ  Ｖ３＜−  Ｖ１×Ｖ３
この場合には、制御部２０は、命令Ｉ１の発行を確定すると、オペランドセレクタ１４１〜１４４とバイパスデータセレクタ１１１〜１１４を制御することによって、演算レジスタ１０１，１０２のデータ（Ｖ０−０〜３，Ｖ１−０〜３）を２サイクル連続で加算器１２０に加える（時間ｔ２，ｔ３）。これにより、加算器１２０は、データが供給され始めてから２サイクル後に、２サイクル連続して加算結果（Ａ−０，１）を出力する（時間ｔ４，ｔ５）。制御部２０は、クロスバ１００を制御することによって、加算器１２０の加算結果（Ａ−０，１）をクロスバ１００を介して演算レジスタ１０１にデータＶ０として供給する（時間ｔ７，ｔ８）。上記同様な制御部２０の制御動作により、処理部２１は、命令Ｉ２に基づいた処理を並行して行う。
【０１４６】
一方、命令Ｉ１による加算結果（Ａ−０，１）は、演算レジスタ１０１を通らないバイパスパイプによって、バイパス調整部１０８のレジスタ１２２からバイパスデータセレクタ１１２を通して加算器１２０に加えられる（時間ｔ６，ｔ７）。そして、加算器１２０は、その加算結果と、演算レジスタ１０２から加えられたデータとに基づいて、命令Ｉ３に基づいた加算処理を、命令Ｉ１，Ｉ２に基づいた処理と並行に実行する。
【０１４７】
さらに、制御部２０が命令Ｉ４に基づいて前記同様に乗算処理に関わる制御動作を行うことによって、乗算対象のデータが処理部２１の乗算器１３０に加えられる。この例では、演算レジスタ１０２から読み出されたデータ（Ｖ１−０，１）が乗算器１３０に加えられる。また、命令Ｉ２に基づいた加算器１２０の加算結果（Ａ−０，１）が、演算レジスタ１０４を通らないバイパスパイプによってバイパス調整部１０８のレジスタ１２２からバイパスデータセレクタ１１４を通して乗算器１３０に加えられる（時間ｔ８，ｔ９）。そして、乗算器１３０の乗算結果（Ｍ−０，１）が演算レジスタ１０４にデータＶ３として格納される（時間ｔ１３，ｔ１４）。
【０１４８】
ところで、図１５のタイムチャートに示されるように、命令Ｉ３が発行されたクロック（時間ｔ５）の次のクロック（時間ｔ６）で命令Ｉ４が発行されるとすると、次のようなデータ衝突が発生する。すなわち、図１５に示す時間ｔ６で命令Ｉ４が発行されると、レジスタ１２１に格納されている加算結果（Ａ−０）をバイパスパイプに通す指令と、レジスタ１２２に格納されている加算結果（Ａ−１）をバイパスパイプに通す指令とが同時に出力されることとなる。これにより、セレクタ１２３においてデータ衝突が発生する（時間ｔ７）。
【０１４９】
これに対して、この第２実施形態では、制御部２０は、命令Ｉ４の発行タイミングを調整する（発行を抑止する）機能を備えている。つまり、図１６のタイムチャートに示されるように、制御部２０は、命令Ｉ４を保持している発行ステージ４１１におけるフラグレジスタ２１７に「１」を格納する。このことは、命令Ｉ４に関わるバイパス処理が他の命令Ｉ３に基づいたバイパス処理と競合することを示す。これにより、競合チェック部２１９が、命令Ｉ４の発行を遅らせる（抑止する）必要がある状態であることを検知し、命令Ｉ４の発行が抑止される。このため、命令Ｉ４は時間ｔ６に発行されず、図１４と図１６に示されるように、時間ｔ７において発行される。よって、この第２実施形態のベクトル処理装置は、前記したようなデータ衝突を回避できる。
【０１５０】
（第３実施形態）
以下に、本発明に係る第３実施形態を説明する。なお、第３実施形態の説明において、第２実施形態と同様な構成部分には同一符号を付し、その共通部分の重複説明は省略する。
【０１５１】
この第３実施形態のベクトル処理装置は、第２実施形態よりも構成を簡略化することを目的に考え出されている。すなわち、この第３実施形態では、ベクトル処理装置は、バイパス情報管理部２１５，２４５，２７５のフラグレジスタにおける情報を利用せずに、バイパス処理に関する競合状態を調整する機能を備えている。すなわち、この第３実施形態では、バイパス情報管理部２１５，２４５，２７５のフラグレジスタは、常に、「００」が格納されている状態となる。これにより、バイパス情報管理部２１５，２４５，２７５のフラグレジスタを管理しているバイパス認識部２０６の構成が簡略化される。
【０１５２】
図１７は、第３実施形態におけるバイパス認識部２０６の構成を、当該バイパス認識部２０６と関わる構成部分と共に表すブロック図である。この第３実施形態では、バイパス認識部２０６は、発行命令認識部３０１〜３０３と、格納命令認識部３１１〜３１３と、発行調整部３２０，３２１と、論理和回路３７３と、レジスタ３８１とを有している。
【０１５３】
レジスタ３８１は、重み付け情報（優先順位の情報）を格納する機能を備えている。重み付け情報とは、発行調整部３２０，３２１がバイパスタイミング（バイパス処理を実行するタイミング）を決定する際に利用する情報である。このレジスタ３８１に格納されている重み付け情報は、例えば制御部２０および処理部２１とは別に設けられるＲＡＳ（Remote Access Service）機能を利用して、動作中に変更が可能である。より具体的には、重み付け情報は、例えば、ＪＴＡＧ（Joint Test Action Group）インタフェースを利用して書き込むことが可能である。
【０１５４】
この第３実施形態では、発行調整部３２０，３２１は、第２実施形態における発行調整部３２０，３２１（図９参照）と比べて、論理回路９５１〜９５６が省略されている分、簡易な回路構成となっている。つまり、発行調整部３２０は、セレクタ３３１と、複数のレジスタ３３２〜３３５と、バイパスタイミング調停部３７１とを有している。また、発行調整部３２１は、セレクタ３４１と、複数のレジスタ３４２〜３４５と、バイパスタイミング調停部３７２とを有している。発行調整部３２０，３２１におけるセレクタ３３１，３４１とレジスタ３３２〜３３５，３４２〜３４５は、第２実施形態と同様に機能する。
【０１５５】
バイパスタイミング調停部３７１，３７２は、レジスタ３３２〜３３５，３４２〜３４５に複数の命令情報が格納されている場合に、それら命令に関わるバイパスタイミング（、バイパス処理を実行するタイミング）およびそのバイパス処理の対象となる演算レジスタを決定する機能を備えている。つまり、バイパスタイミング調停部３７１，３７２は、バイパス処理による競合を回避することを考慮して、バイパスタイミングおよび演算レジスタを決定する競合回避部としての機能を備えている。
【０１５６】
バイパスタイミング調停部３７１，３７２は、その機能の実行に際し、レジスタ３８１に格納されている重み付け情報（数値）を利用する。例えば、レジスタ３３４の命令情報＞レジスタ３３３の命令情報＞レジスタ３３４の命令情報の順番に命令情報に重み付する重み付け情報がレジスタ３８１に格納されているとする。この場合には、レジスタ３３４に格納されている命令情報に関わる処理のみがバイパス処理可能となるように、バイパスタイミング調停部３７１は、バイパスタイミング等を決定する。この場合に、第２実施形態におけるバイパス競合検知部３３６の具体例で述べた命令情報がレジスタ３３４や発行ステージ４１１〜４１３に格納されているとすると、発行ステージ４１１に格納されている命令のみが発行可能となるから、データの競合が回避される。
【０１５７】
論理和回路３７３は、バイパスタイミング調停部３７１，３７２から出力される信号の論理和に応じた信号を出力する機能を備えている。この論理和回路３７３の出力信号は、バイパス情報提供部２０４に加えられ、当該バイパス情報提供部２０４において、対応する演算レジスタに関するフラグレジスタに「１」を格納する。ここでは、加算器１２０と乗算器１３０にそれぞれ関連するバイパス処理が可能であることから、最大２つの演算レジスタに対応するフラグレジスタに「１」が格納される。
【０１５８】
この第３実施形態では、バイパス認識部２０６は、さらに、バイパス情報管理部２１５，２４５，２７５に信号「００」を常に供給する機能を備えている。
【０１５９】
図１８は、この第３実施形態におけるベクトル処理装置の動作例を示すタイムチャートである。この動作例は、ベクトル処理装置に前記命令Ｉ１，Ｉ２，Ｉ３，Ｉ４が与えられている場合の動作例である。
【０１６０】
この第３実施形態では、バイパス認識部２０６は、バイパス処理に関わる競合状態を考慮してバイパス情報提供部２０４のフラグレジスタにおける情報を設定している。これにより、この第３実施形態のベクトル処理装置は、バイパス情報管理部２１５，２４５，２７５の情報を利用しなくとも、データ衝突が回避できるタイミングで持って命令情報（Ｉ４）を発行できる。
【０１６１】
この第３実施形態では、上記のように、ベクトル処理装置の構成は簡略化されている。これにより、この第３実施形態のベクトル処理装置は、必要なハードウェアの低減を図ることができる。また、前記の如く、この第３実施形態の発行調整部３２０，３２１は、第２実施形態における発行調整部３２０，３２１と比べて、論理回路９５１〜９５６が省略されている。このため、その論理回路９５１〜９５６による処理が無い分、第３実施形態におけるバイパス認識部２０６は、第２実施形態よりも処理速度の向上を図ることができる。
【０１６２】
この第３実施形態のベクトル処理装置は、バイパスタイミングを決定する際に、バイパス情報管理部２１５，２４５，２７５の情報を利用しない。このため、バイパス情報管理部２１５，２４５，２７５の情報を利用しなくともデータ衝突等の不具合を回避するために、第３実施形態のベクトル処理装置は、第２実施形態よりもバイパスタイミングが減少する。ただ、第３実施形態のベクトル処理装置は、上記のような効果を得ることができることから、例えば、簡易な構成のベクトル処理装置が要求される場合には、この第３実施形態の構成は有効である。
【０１６３】
なお、この第３実施形態では、上記のように、バイパス情報管理部２１５，２４５，２７５は実質的に使用しない。このことから、バイパス情報管理部２１５，２４５，２７５は省略してもよい。
【０１６４】
(その他の実施形態)
なお、本発明は第１〜第３の実施形態に限定されることはなく、様々な実施の形態を採り得る。例えば、動作クロックによっては、フラグレジスタ２１３，２１４，２１６，２１７がレジスタである必要が無い場合がある。例えば、動作クロック（動作周波数）が１００ＭHz〜５００ＭHz程度の低い周波数である場合には、レジスタ２１３に代えて信号線としてもよい。この場合には、動作クロックが低いことから、レジスタ２１３に代えて信号線としても、レジスタ３３２から第２実施形態におけるバイパス競合検知部３３６とセット部３２２（論理和回路３６１）とレジスタ２１３と命令調整部２１９を通ってフラグレジスタ２２０に至るまでの信号伝達を動作クロックの１クロック内で実行できるから、バイパス処理装置は、正常に動作することができる。
【０１６５】
また、バイパス認識部２０６は、第２実施形態では図９に示される構成を有し、第３実施形態では図１７に示される構成を有している。これに対し、バイパス認識部２０６は、図９と図１７に示される構成を合わせたハイブリット構成を備えていてもよい。この場合には、例えば、外部からの指令に従って、図９の構成を採用するか図１７の構成を採用するかが決定される。
【０１６６】
さらに、第２，３の各実施形態では、制御部２０は、発行抑止部２２８，２５８，２８８を有している。これに対して、制御部２０の基本動作周波数が低い場合には、ビジー管理部２０３に発行が確定した命令情報に関するビジー情報が格納されてから、そのビジー情報を１クロックで競合調整部２０７がチェック可能である。このことから、このような場合には、発行抑止部２２８，２５８，２８８を省略してもよい。
【符号の説明】
【０１６７】
１  ベクトル処理装置
２，１０１，１０２，１０３，１０４  演算レジスタ
３，１０６  選択部
４  演算器
６，２０  制御部
１２０  加算器
１３０  乗算器
【図１】
2014170384.tif 000003
【図２】
2014170384.tif 000004
【図３】
2014170384.tif 000005
【図４】
2014170384.tif 000006
【図５】
2014170384.tif 000007
【図６】
2014170384.tif 000008
【図７】
2014170384.tif 000009
【図８】
2014170384.tif 000010
【図９】
2014170384.tif 000011
【図１０】
2014170384.tif 000012
【図１１】
2014170384.tif 000013
【図１２】
2014170384.tif 000014
【図１３】
2014170384.tif 000015
【図１４】
2014170384.tif 000016
【図１５】
2014170384.tif 000017
【図１６】
2014170384.tif 000018
【図１７】
2014170384.tif 000019
【図１８】
2014170384.tif 000020
【図１９】
2014170384.tif 000021