以下に、本発明に係る実施形態を図面を参照しながら説明する。
(第1実施形態)
図1は、本発明に係る第1実施形態のベクトル処理装置の構成を簡略化して表すブロック図である。この第1実施形態のベクトル処理装置1は、演算レジスタ2と、選択部3と、演算器4と、バイパス経路5と、制御部6とを有している。
演算器4は、演算処理を実行する機能を備えている。
演算レジスタ2は、演算器4が演算する演算対象となるデータを格納する機能を備えている。
バイパス経路5は、演算器4による演算結果を演算レジスタ2を通す経路9ではなく、演算レジスタ2を通さずに前記演算結果を演算対象のデータとして演算器4に供給する経路である。
選択部3は、演算レジスタ2から演算対象のデータを演算器4に供給する経路と、バイパス経路5から演算対象のデータを演算器4に供給する経路との一方を選択する機能を備えている。
制御部6は、選択部3を制御することによって、演算器4による演算結果をバイパス経路5を通して演算対象のデータとして演算器4に供給するベクトル処理を制御する機能を備えている。この第1実施形態では、制御部6は、ベクトル認識部7と、競合回避部8とを有する。
ベクトル認識部7は、演算器4の演算処理に関わる実行前の複数の命令情報に基づいて、ベクトル処理の対象と成り得る前記演算結果が複数あることを検知する機能を備えている。
競合回避部8は、ベクトル認識部7の検知結果および前記命令情報に基づいて、前記検知されたベクトル処理対象の複数の前記演算結果がベクトル処理中にバイパス経路5を通る経路で競合することを回避する機能を備えている。
この第1実施形態のベクトル処理装置1は、上記の如く、発行前の複数の命令情報に基づいて、ベクトル処理対象と成り得る演算結果があることを検知する機能を備えている。さらに、このベクトル処理装置1は、それら検知されたベクトル処理対象の演算結果がベクトル処理中にバイパス経路5を通る経路において競合する可能性がある場合には、その競合を回避する機能を備えている。このような機能を備えていることから、ベクトル処理装置は、前記競合(データ衝突)を回避しつつ、ベクトル処理を増加することができる。これにより、このベクトル処理装置1は、処理の効率化(処理時間の短縮化)を図ることができる。
(第2実施形態)
以下に、本発明に係る第2実施形態を説明する。
図2は、本発明に係る第2実施形態のベクトル処理装置の構成を簡略化して表すブロック図である。このベクトル処理装置は、制御部20と、当該制御部20からの指示に基づいて動作する処理部21とを有している。処理部21は、クロスバ(クロスバースイッチ回路)100と、複数(この第2実施形態では、4つ)の演算レジスタ101,102,103,104と、出力部105と、選択部106と、演算部107と、バイパス調整部108,109とを有している。
演算部107は、この第2実施形態では、加算器(演算器)120と、乗算器(演算器)130とを有している。加算器120は、2つの入力部に入力したデータ(オペランド)を加算した結果を出力する回路構成を備えている。乗算器130は、2つの入力部に入力したデータ(オペランド)を乗算した結果を出力する回路構成を備えている。
クロスバ100は、制御部20の指示に基づいて、データ(情報)の経路を切り換える機能(回路構成)を備えている。具体的には、クロスバ100の入力側は、処理部21外部のメモリと、加算器120の出力側と、乗算器130の出力側とに接続し、クロスバ100の出力側は、演算レジスタ101〜104のそれぞれに接続している。このクロスバ100は、制御部20の指示に従って、入力側であるメモリと加算器120と乗算器130とのうちの何れかと、出力側である演算レジスタ101〜104のうちの一つとを選択的に接続する機能(回路構成)を備えている。
演算レジスタ101〜104は、それぞれ、1つのベクトル命令に対して予め定められるベクトル長に応じた記憶領域を少なくとも有している。なお、ベクトル長(Vector Length(VL))とは、1つの命令(ベクトル命令)により同じ演算が繰り返される演算回数を表す。つまり、1つのベクトル命令が発行されると、ベクトル長分の演算が連続で繰り返し処理される。具体的には、ベクトル長が4であるベクトル命令が発行されると、演算レジスタから4つのデータが連続して読み出され、当該4つのデータが順次演算処理される。
この第2実施形態では、1つのベクトル命令に対するベクトル長は4とする。これにより、演算レジスタ101〜104は、それぞれ、少なくとも4つの記憶領域を有する。それら記憶領域のアドレスは、演算レジスタ101においては、それぞれ、V0−0,V0−1,V0−2,V0−3とする。また、演算レジスタ102においては、それぞれ、V1−0,V1−1,V1−2,V1−3とする。演算レジスタ103においては、それぞれ、V2−0,V2−1,V2−2,V2−3とする。演算レジスタ104においては、それぞれ、V3−0,V3−1,V3−2,V3−3とする。
選択部106は、入力側において、演算レジスタ101〜104と、バイパス調整部108,109の出力側とに接続し、出力側において、加算器120の入力部と、乗算器130の入力部とに接続している。この選択部106は、制御部20の指示に従って、入力側である演算レジスタ101〜104およびバイパス調整部108,109のうちの一つを選択的に出力側である加算器120および乗算器130の一方の入力部に接続する回路構成を備えている。
図3は選択部106の具体的な一構成例を表すブロック図である。この具体例では、選択部106は、オペランドセレクタ141〜144と、バイパスデータセレクタ111〜114とを有している。オペランドセレクタ141〜144は、それぞれ、演算レジスタ101〜104に接続している。また、オペランドセレクタ141は、バイパスデータセレクタ111の入力側に接続している。オペランドセレクタ142は、バイパスデータセレクタ112の入力側に接続している。オペランドセレクタ143は、バイパスデータセレクタ113の入力側に接続している。オペランドセレクタ144は、バイパスデータセレクタ114の入力側に接続している。
オペランドセレクタ141は、制御部20の指示に従って、演算レジスタ101〜104のうちの一つを選択的にバイパスデータセレクタ111の入力側に接続する回路構成を備えている。オペランドセレクタ142〜144も、オペランドセレクタ141とほぼ同様に、制御部20の指示に従って、演算レジスタ101〜104のうちの一つを、選択的に、接続しているバイパスデータセレクタ112〜114の入力側に接続する回路構成を備えている。
バイパスデータセレクタ111〜114の入力側は、前記の如く、それぞれ、対応しているオペランドセレクタ141〜144と接続している。さらに、バイパスデータセレクタ111〜114の入力側は、バイパス調整部108,109の出力側と接続している。さらにまた、バイパスデータセレクタ111,112は、加算器120の入力部に接続し、バイパスデータセレクタ113,114は、乗算器130の入力部に接続している。
バイパスデータセレクタ111〜114は、制御部20の指示に従って、接続しているオペランドセレクタ141〜144およびバイパス調整部108,109の出力側のうちの一つを、選択的に、加算器120あるいは乗算器130の入力部に接続する回路構成を備えている。
図2に示されるように、バイパス調整部108の入力側は、加算器120の出力部に接続している。また、バイパス調整部108の出力側は、経路115を介して選択部106に接続している。これにより、加算器120の出力部からバイパス調整部108と経路115と選択部106を通して演算部107の入力側に至る経路が構成される。この経路は、加算器120による演算結果を演算レジスタ101〜104を通さずに、演算部107に供給可能な経路であり、バイパス経路とも呼ばれる。
バイパス調整部108は、加算器120の演算結果をバイパス経路により演算部107に供給するタイミングを調整する機能を備えている。
バイパス調整部109の入力側は、乗算器130の出力部に接続している。また、バイパス調整部109の出力側は、経路116を介して選択部106に接続している。これにより、乗算器130の出力部からバイパス調整部109と経路116と選択部106を通して演算部107の入力側に至る経路が構成される。この経路は、乗算器130による演算結果を演算レジスタ101〜104を通さずに、演算部107に供給可能な経路であり、バイパス経路とも呼ばれる。
バイパス調整部109は、乗算器130の演算結果をバイパス経路により演算部107に供給するタイミングを調整する機能を備えている。
図4はバイパス調整部108,109の具体的な一構成例を選択部106と演算部107と共に表すブロック図である。この具体例では、バイパス調整部108は、レジスタ121,122と、セレクタ123とを有している。レジスタ121は、加算器120から出力された演算結果を格納する機能を備えている。レジスタ122は、そのレジスタ121から出力された加算器120の演算結果を格納する機能を備えている。例えば、それらレジスタ121,122は、ベクトル処理装置における基本動作周波数の1サイクル(1クロック)の間、加算器120の演算結果を格納し、次のサイクルの開始時にその演算結果を出力する。
セレクタ123の入力側は、加算器120とレジスタ121とレジスタ122との各出力側に接続している。セレクタ123の出力側は、選択部106のバイパスデータセレクタ111〜114の入力側に接続している。セレクタ123は、制御部20の指示に従って、加算器120およびレジスタ121,122のうちの一つを、選択部106のバイパスデータセレクタ111〜114の入力側に接続する回路構成を備えている。なお、セレクタ123は、制御部20の指示により、ベクトル長分のデータが連続して同じ箇所から出力するように、同じ選択状態をベクトル長分、維持する。
バイパス調整部109は、バイパス調整部108とほぼ同様な構成を備えている。すなわち、バイパス調整部109は、レジスタ131,132と、セレクタ133とを有している。レジスタ131は、乗算器130から出力された演算結果を格納する機能を備えている。レジスタ132は、レジスタ131から出力された乗算器130の演算結果を格納する機能を備えている。例えば、それらレジスタ131,132は、ベクトル処理装置における基本動作周波数の1サイクル(1クロック)の間、乗算器130の演算結果を格納し、次のサイクルの開始時にその演算結果を出力する。
セレクタ133の入力側は、乗算器130とレジスタ131とレジスタ132との各出力側に接続している。セレクタ133の出力側は、選択部106のバイパスデータセレクタ111〜114の入力側に接続している。セレクタ133は、制御部20の指示に従って、乗算器130およびレジスタ131,132のうちの一つを、選択部106のバイパスデータセレクタ111〜114の入力側に接続する回路構成を備えている。なお、セレクタ133は、制御部20の指示により、ベクトル長分のデータが連続して同じ箇所から出力するように、同じ選択状態をベクトル長分、維持する。
このような構成を持つバイパス調整部108,109が加算器120あるいは乗算器130の演算結果を選択部106のバイパスデータセレクタ111〜114に出力するタイミングは、次の3つのタイミングがある。その一つのタイミングは、加算器120あるいは乗算器130が演算結果を出力したときである。この場合には、セレクタ123,133は、加算器120あるいは乗算器130の出力側を選択部106のバイパスデータセレクタ111〜114に接続している。これにより、加算器120あるいは乗算器130の演算結果は、レジスタ121,122,131,132を介さずに直接にバイパスデータセレクタ111〜114に出力される。
別の一つのタイミングは、加算器120あるいは乗算器130の演算結果がレジスタ121,131に格納された後に当該レジスタ121,131から出力するときである。この場合には、セレクタ123,133は、レジスタ121,131の出力側を選択部106のバイパスデータセレクタ111〜114に接続している。これにより、加算器120あるいは乗算器130の演算結果は、加算器120あるいは乗算器130から出力されてから、レジスタ121,131に格納されていた分(例えば1サイクル)遅れてバイパスデータセレクタ111〜114に出力される。
さらに別の一つのタイミングは、加算器120あるいは乗算器130の演算結果がレジスタ122,132に格納された後に当該レジスタ122,132から出力するときである。この場合には、セレクタ123,133は、レジスタ122,132の出力側を選択部106のバイパスデータセレクタ111〜114に接続している。これにより、加算器120あるいは乗算器130の演算結果は、加算器120あるいは乗算器130から出力されてから、レジスタ121,122,131,132に格納されていた分(例えば2サイクル)遅れてバイパスデータセレクタ111〜114に出力される。
図2に示す出力部105は、セレクタ(ストアデータセレクタ)により構成されている。出力部105の入力側は、演算レジスタ101〜104に接続している。出力部105の出力側は、処理部21外部のメモリに接続している。この出力部105は、制御部20の指示に従って、演算レジスタ101〜104のうちの一つを処理部21外部のメモリに接続する機能を備えている。換言すれば、出力部105は、選択された演算レジスタ101〜104に格納されているデータ(演算結果)を処理部21外部のメモリに向けて出力する機能を備えている。なお、出力部105は、ベクトル長分のデータを連続して処理部21外部のメモリに出力する。また、出力部105は、制御部20の指示に従って、演算レジスタ101〜104と、処理部21外部のメモリとを非接続状態としている場合もある。
制御部20は、処理部21を構成する各構成部100〜109の動作を制御する機能を備えている。図5は、制御部20の一構成例を簡略化して表すブロック図である。この制御部20は、バッファ部401と、デコーダ部402と、発行部403と、管理部404と、指令部405とを有している。
バッファ部401は、外部のメモリから出力された命令情報を格納する機能を備えている。命令情報とは、演算器(加算器120や乗算器130)の演算処理に関わる命令列を含む情報である。
デコーダ部402は、バッファ部401に格納されていた命令情報をデコーダ(復号)し、このデコーダした命令情報を発行部403に出力する機能を備えている。なお、発行部403は、命令情報を格納する1つ以上のレジスタ(命令レジスタ)を有している。デコーダ部402は、発行部403の全ての命令レジスタに命令情報が格納されているか否かの情報を取得し、当該情報に基づいて、発行部403の命令レジスタの全てに命令情報が格納されていることを検知できる機能を備えている。また、デコーダ部402は、発行部403の全ての命令レジスタに命令が格納されているために、新たな命令情報を受け付けられない状態であることを検知した場合には、バッファ部401からの命令情報の読み出しを停止する。
発行部403は、デコーダ部402から出力された命令情報を保持すると共に、その命令情報の発行を決定する場合に利用する情報を保持する機能を備えている。図6は、発行部403の一構成例をデコーダ部402および管理部404と共に簡略化して表すブロック図である。この例では、発行部403は、3つの発行ステージ411,412,413を有している。発行ステージ411は、命令レジスタ211と、パス情報管理部212と、バイパス情報管理部215とを有する。同様に、発行ステージ412は、命令レジスタ241と、パス情報管理部242と、バイパス情報管理部245とを有する。発行ステージ413は、命令レジスタ271と、パス情報管理部272と、バイパス情報管理部275とを有する。
命令レジスタ211,241,271は、それぞれ、デコーダ部402から出力された命令情報を保持(格納)する機能を備えている。ここでは、デコーダ部402から出力された命令情報は、命令レジスタ211,241,271の何れか一つに選択的に保持される。命令レジスタ211,241,271に格納された命令情報は、当該命令情報を発行することが確定するまで格納される。命令情報が発行(出力)された後には、命令レジスタ211,241,271はリセットされ(命令情報が削除され)、新たな命令情報を格納することが可能な状態となる。
パス情報管理部212,242,272は、処理部21の動作で使用するリソース(加算器120や乗算器130や、出力部105から外部のメモリに出力するパス(ストアパス)など)の使用状況に関する情報を保持する機能を備えている。
すなわち、発行ステージ411のパス情報管理部212は、フラグレジスタ213,214を有している。これらフラグレジスタ213,214は、管理部404により管理される。フラグレジスタ213は、管理部404によって、次のような場合に「1」が格納される(フラグが立つ)。その場合とは、命令レジスタ211に格納されている命令情報に従って処理部21が動作した場合に利用するリソースを、発行ステージ412の命令レジスタ241に格納されている命令情報に従って処理部21が動作した場合にも利用する競合状態にある場合である。このような場合を、発行ステージ411の命令情報と、発行ステージ412の命令情報とがリソースの使用に関して競合状態にあるとも言う。
フラグレジスタ214は、発行ステージ411の命令情報と、発行ステージ413の命令情報とがリソースの使用に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。
発行ステージ412のパス情報管理部242は、フラグレジスタ243,244を有している。フラグレジスタ243は、発行ステージ412の命令情報と、発行ステージ411の命令情報とがリソースの使用に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。フラグレジスタ244は、発行ステージ412の命令情報と、発行ステージ413の命令情報とがリソースの使用に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。
発行ステージ413のパス情報管理部272も、上記同様に、フラグレジスタ273,274を有している。フラグレジスタ273は発行ステージ413の命令情報と、発行ステージ411の命令情報とがリソースの使用に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。フラグレジスタ274は、発行ステージ413の命令情報と、発行ステージ412の命令情報とがリソースの使用に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。
バイパス情報管理部215,245,275は、バイパス経路(セレクタ123,133およびバイパスデータセレクタ111〜114を含む)の使用状況に関わる情報を保持する機能を備えている。すなわち、バイパス情報管理部215は、フラグレジスタ216,217を有している。これらフラグレジスタ216,217は、管理部404により管理される。フラグレジスタ216は、管理部404によって、次のような場合に「1」が格納される(フラグが立つ)。ここで、発行ステージ411〜413の命令レジスタ211,241,271に格納されている命令情報に基づいた加算器120や乗算器130の演算結果をバイパス経路を利用して加算器120や乗算器130に供給する処理をバイパス処理というものとする。フラグレジスタ216に「1」が格納される場合とは、発行ステージ411の命令レジスタ211の命令情報に基づいたバイパス処理と、発行ステージ412の命令レジスタ241の命令情報に基づいたバイパス処理とを実行した場合に、それらバイパス処理対象の前記演算結果がバイパス経路において競合する場合である。このような場合を、発行ステージ411の命令情報と、発行ステージ412の命令情報とがバイパス処理に関して競合状態にあるとも言う。
フラグレジスタ217は、発行ステージ411の命令情報と、発行ステージ413の命令情報とがバイパス処理に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。
発行ステージ412のバイパス情報管理部245は、フラグレジスタ246,247を有している。これらフラグレジスタ246,247は、管理部404によって制御される。フラグレジスタ246は、発行ステージ412の命令情報と、発行ステージ411の命令情報とがバイパス処理に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。フラグレジスタ247は、発行ステージ412の命令情報と、発行ステージ413の命令情報とがバイパス処理に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。
発行ステージ413のバイパス情報管理部275も、上記同様に、フラグレジスタ276,277を有している。フラグレジスタ276は、発行ステージ413の命令情報と、発行ステージ411の命令情報とがバイパス処理に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。フラグレジスタ277は、発行ステージ413の命令情報と、発行ステージ412の命令情報とがバイパス処理に関して競合状態にある場合に、管理部404によって、「1」が格納される(フラグが立つ)。
図7は、管理部404の一構成例を発行部403等と共に簡略化して表すブロック図である。図7に示す管理部404は、ビジー管理部203と、バイパス情報提供部204と、パス競合認識部205と、バイパス認識部206と、競合調整部207とを有している。
ビジー管理部203は、バイパス経路(加算器120と乗算器130とセレクタ123,133とバイパスデータセレクタ111〜114を含む)が使用されるか(ビジーであるか)否かを示す情報を管理する機能を備えている。このビジー管理部203は、例えば加算器120や乗算器130等の管理対象のリソースにそれぞれ対応するフラグレジスタを有している。このようなフラグレジスタは、競合調整部207によって、管理される。すなわち、発行ステージ411〜413から命令情報が発行されることが確定した次のサイクル(基本動作周波数のサイクル)で、その命令情報に基づき使用されるリソースに対応するフラグレジスタに、競合調整部207が、「1」を格納する(フラグが立つ)。
バイパス情報提供部204は、バイパス処理が可能であることを示す情報を保持する機能を備えている。例えば、バイパス情報提供部204は、演算レジスタ101〜104にそれぞれ対応するフラグレジスタを有している。これらフラグレジスタには、対応する演算レジスタ101〜104に関わるバイパス処理が可能となった場合に、バイパス認識部206が、「1」を格納する(フラグが立つ)。また、バイパス情報提供部204は、バイパス認識部206から出力されるバイパスタイミング情報を保持する機能を備えている。
なお、演算レジスタ101〜104にデータを書き込み、その後、そのデータを読み出すという関係を維持するために、ビジー管理部203において、演算レジスタ101〜104に対応するフラグレジスタにフラグが立っている場合がある。この場合に、バイパス情報提供部204のフラグレジスタに、バイパス処理が可能であることを示すフラグが立っている場合には、ビジー管理部203における、演算レジスタ101〜104に対応するフラグレジスタは、競合調整部207によって、マスクされる。この理由は、バイパス処理を実行する場合には演算レジスタ101〜104を利用しないから、バイパス処理の実行を妨げるビジー管理部203のフラグの情報をマスクすることで、バイパス処理が可能となり、処理時間の短縮化を図ることができるからである。
パス競合認識部205は、処理部21の動作で利用するリソースの競合状況を検知し、これに基づき発行部403における発行ステージ411〜413のパス情報管理部212,242,272のフラグレジスタを管理する機能を備えている。つまり、パス競合認識部205は、デコーダ部402から発行部403に向けて出力される命令情報(後続の命令情報)を取得する。また、パス競合認識部205は、発行部403における命令レジスタ211,241,271に格納されている命令情報(先行の命令情報)を読み出す。そして、パス競合認識部205は、後続の命令情報に基づいて処理部21が動作した場合に、先行の命令情報に基づいた処理部21の動作によって使用されるリソースと同じリソースを使用する競合状態を検知できる機能を備えている。さらに、パス競合認識部205は、競合状態を検知した場合には、その競合状態を検知したことを示すために、発行ステージ411〜413のパス情報管理部212,242,272における、対応するフラグレジスタのフラグを立てる機能を備えている。
具体例を挙げると、例えば、発行ステージ411の命令レジスタ211に命令情報(先行の命令情報)が格納されている場合に、デコーダ部402から発行ステージ413の命令レジスタ271に後続の命令情報が格納されるとする。その後続の命令情報は、命令レジスタ211における先行の命令情報に基づいた処理部21の動作によって使用されるリソースと同じリソースを使用する処理部21の動作を指示(制御)する指令を含むとする。このような場合には、発行ステージ411,413に格納される命令情報は、リソースに関して競合状態を作り出す。この場合においては、パス競合認識部205は、発行ステージ411におけるパス競合管理部212のフラグレジスタ214のフラグを立て、かつ、発行ステージ413におけるパス競合管理部272のフラグレジスタ273のフラグを立てる。
図8は、競合調整部207の構成例を、関連する構成部分と共に簡略化して表すブロック図である。この図8に示す競合調整部207は、ベクトル処理による競合を回避する競合回避部としての機能を備えている。すなわち、競合調整部207は、命令チェック部218,248,278と、命令調整部219,249,279と、保持部229,259,289とを有している。
命令チェック部218,248,278は、それぞれ、発行ステージ411〜413に個別に対応している。これら命令チェック部218,248,278は、ビジー管理部203およびバイパス情報提供部204におけるフラグの状態を参照し、対応する命令レジスタ211,241,271の命令情報に関わるリソースがビジーであるか否かをチェックする機能を備えている。また、命令チェック部218,248,278は、そのチェックの結果、命令情報に関わるリソースがビジーでないと判断した場合には、命令情報が発行可能な状態であることを示す信号「1」を競合チェック部219,249,279に出力する機能を備えている。
さらに、命令チェック部218,248,278は、次のような場合に、ビジー管理部203におけるビジー状態を示すフラグをマスクする機能を備えている。その場合とは、前述したように、演算レジスタ101〜104へのデータの書き込みとその後の読み出しの関係を維持するためにビジー管理部203のフラグが立っている場合に、バイパス情報提供部204のフラグが立っている場合である。
競合チェック部219,249,279は、それぞれ、発行ステージ411〜413に個別に対応している。これら競合チェック部219,249,279は、命令チェック部218,248,278のうちの複数から信号「1」(つまり、命令情報が発行可能な状態であることを示す信号)が出力された場合に、命令レジスタ211,241,271における命令情報の発行順を調整する機能を備えている。例えば、競合チェック部219,249,279は、デコーダ部402から先に出力された命令情報の優先順位を高くするというように、デコーダ部402からの出力順に、命令情報の発行に関する優先順位を確定する。なお、競合チェック部219,249,279は、その優先順位を確定する場合に、対応する発行ステージ411〜413のフラグレジスタに格納されている競合状態に関する情報を参照する。
さらに、競合チェック部219,249,279は、優先順位が最も高い命令情報の発行を確定し、優先順位がそれよりも低い命令情報の発行を保留する機能を備えている。そして、競合チェック部219は、発行ステージ411における命令レジスタ211の命令情報を発行することを確定した場合には、それを通知する信号「1」を保持部229に出力する機能を備えている。また同様に、競合チェック部249は、発行ステージ412における命令レジスタ241の命令情報を発行することを確定した場合には、それを通知する信号「1」を保持部259に出力する機能を備えている。さらに、競合チェック部279は、発行ステージ413における命令レジスタ271の命令情報を発行することを確定した場合には、それを通知する信号「1」を保持部289に出力する機能を備えている。
保持部229,259,289は、それぞれ、発行ステージ411〜413に個別に対応している。つまり、保持部229は、発行ステージ411に対応している。当該保持部229は、レジスタ221と、複数のフラグレジスタ220,223,224,226,227とを有している。レジスタ221は、発行ステージ411に対応している競合チェック部219から信号「1」が出力された場合に、発行ステージ411の命令レジスタ211に格納されている命令情報を受け、当該命令情報を基本動作周波数の1サイクルの間、格納する。
フラグレジスタ220は、競合チェック部219が出力した信号「1」(つまり、命令情報の発行が確定したことを通知する信号)を受け、当該「1」を基本動作周波数の1サイクルの間、格納する(フラグを立てる)。
フラグレジスタ223,224,226,227は、それぞれ、発行ステージ411のフラグレジスタ213,214,216,217に個別に対応している。これらフラグレジスタ223,224,226,227は、それぞれ、競合チェック部219が信号「1」を出力した場合に、対応するフラグレジスタ213,214,216,217の状態(フラグが立っているか否かのフラグ状態)を示す情報を受ける。そして、フラグレジスタ223,224,226,227は、その情報に応じたフラグ状態となり、当該フラグ状態を基本動作周波数の1サイクルの間、維持する。
保持部259は、発行ステージ412に対応している。この保持部259は、レジスタ251と、複数のフラグレジスタ250,253,254,256,257とを有している。レジスタ251は、発行ステージ412に対応している競合チェック部249から信号「1」が出力された場合に、発行ステージ412の命令レジスタ241に格納されている命令情報を受け、当該命令情報を基本動作周波数の1サイクルの間、格納する。
フラグレジスタ250は、競合チェック部249が出力した信号「1」(つまり、命令情報の発行が確定したことを通知する信号)を受け、当該「1」を基本動作周波数の1サイクルの間、格納する(フラグを立てる)。
フラグレジスタ253,254,256,257は、それぞれ、発行ステージ412のフラグレジスタ243,244,246,247に個別に対応している。これらフラグレジスタ253,254,256,257は、それぞれ、競合チェック部249から信号「1」が出力された場合に、対応するフラグレジスタ243,244,246,247のフラグ状態を示す情報を受ける。そして、フラグレジスタ253,254,256,257は、その情報に応じたフラグ状態となり、当該フラグ状態を基本動作周波数の1サイクルの間、維持する。
保持部279は、発行ステージ413に対応している。当該保持部279は、レジスタ281と、複数のフラグレジスタ280,283,284,286,287とを有している。レジスタ281は、発行ステージ413に対応している競合チェック部279から信号「1」が出力された場合に、発行ステージ413の命令レジスタ271に格納されている命令情報を受け、当該命令情報を基本動作周波数の1サイクルの間、格納する。
フラグレジスタ280は、競合チェック部279が出力した信号「1」(つまり、命令情報の発行が確定したことを通知する信号)を受け、当該「1」を基本動作周波数の1サイクルの間、格納する(フラグを立てる)。
フラグレジスタ283,284,286,287は、それぞれ、発行ステージ413のフラグ273,274,276,277に個別に対応している。これらフラグ283,284,286,287は、それぞれ、競合チェック部279から信号「1」が出力された場合に、対応するフラグ273,274,276,277のフラグ状態を示す情報を受ける。そして、フラグレジスタ273,274,276,277は、その情報に応じたフラグ状態となり、当該フラグ状態を基本動作周波数の1サイクルの間、維持する。
バイパス認識部206は、発行が確定した命令情報に基づいて、バイパス情報管理部215,245,275およびバイパス情報提供部204のフラグレジスタを制御(管理)する機能を備えている。
図9は、バイパス認識部206の一構成例を、関連する構成部と共に表すブロック図である。このバイパス認識部206は、発行命令認識部301〜303と、格納命令認識部311〜313と、発行調整部320,321と、セット部322と、バイパスタイミング検出部351とを有している。
発行命令認識部301は、発行ステージ411に対応している。この発行命令認識部301は、次のような機能を備えた例えば論理回路を備えている。つまり、発行命令認識部301は、発行ステージ411に対応している保持部229が保持している保持情報に基づいて、発行ステージ411から命令情報が発行されたことを検知(認識)する機能を備えている。
また、発行命令認識部301は、保持部229の保持情報に基づき、発行された命令情報に関わる演算器が加算器120であることを検知した場合には、発行調整部320(セレクタ331)に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。また、発行命令認識部301は、保持部229の保持情報に基づいて、発行された命令情報に関わる演算器が乗算器130であることを検知した場合には、発行調整部321(セレクタ341)に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。
発行命令認識部302は、発行ステージ412に対応している。また、発行命令認識部303は、発行ステージ413に対応している。発行命令認識部302,303は、発行命令認識部301と同様な機能を備えた例えば論理回路を備えている。つまり、発行命令認識部302,303は、対応する保持部259,289の保持情報に基づいて、対応している発行ステージ412,413から命令情報が発行されたことを検知(認識)する機能を備えている。
また、発行命令認識部302,303は、対応する保持部259,289の保持情報に基づいて、その発行された命令情報に関わる演算器が加算器120であることを検知した場合には、発行調整部320(セレクタ331)に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。さらに、発行命令認識部302,303は、対応する保持部259,289の保持情報に基づいて、発行された命令情報に関わる演算器が乗算器130であることを検知した場合には、発行調整部321(セレクタ341)に、格納先レジスタ等の情報を含む命令情報を出力する機能を備えている。
格納命令認識部311〜313は、それぞれ、発行ステージ411〜413に個別に対応している。これら格納命令認識部311〜313は、次のような機能を備えた例えば論理回路を備えている。つまり、格納命令認識部311〜313は、対応する発行ステージ411〜413の命令レジスタ211,241,271に格納されている命令情報を読み出す機能を備えている。また、格納命令認識部311〜313は、デコーダ部402から、対応する発行ステージ411〜413に向けて発行される後続の命令情報を読み出す機能を備えている。さらに、格納命令認識部311〜313は、読み出した命令情報に関わる演算対象のデータを格納している演算レジスタ101〜104を示す情報を、発行調整部320,321に出力する機能を備えている。
例えば、格納命令認識部311〜313が読み出した命令情報が、次のような命令VADD(データV0,V1を加算し、加算結果をデータV2とするという命令)を含むとする。
命令VADD V2<−V0+V1
この場合には、演算対象のデータはV0,V1である。それらV0,V1を格納している演算レジスタは演算レジスタ101,102であるとする。このような場合には、格納命令認識部311〜313は、演算対象のデータを格納している演算レジスタ101,102を示す情報を出力する。
発行調整部320は、加算器120に対応している。この発行調整部320は、セレクタ331と、複数のレジスタ332〜335と、バイパス競合検知部336と、論理回路951〜953とを有している。
セレクタ331の入力側は、発行命令認識部301〜303に接続している。また、セレクタ331の出力側はレジスタ332と論理回路951〜953とに接続している。当該セレクタ331は、発行命令認識部301〜303から、加算器120に関わる格納先レジスタ情報を含む命令情報を受け取った場合に、その情報をレジスタ332および論理回路951〜953に向けて出力する。なお、そのセレクタ331から出力される情報は、加算器120を利用しないストア命令等に関する情報は含まれない。
レジスタ332〜335は、セレクタ331から受け取った情報(つまり、加算器120に関わる格納先レジスタ情報を含む命令情報)を、順次、基本動作周波数の1サイクルずつ格納する機能を備えている。この第2実施形態では、レジスタ332〜334にその情報が格納されている状態が、加算器120に関するバイパス処理が可能な状態である。また、レジスタ335に格納されている情報は、バイパス経路において、データが競合するか否かを判断する競合情報を生成するために利用される。
論理回路951は、発行ステージ411に対応している回路である。当該論理回路951には、格納命令認識部311から出力された情報(演算対象のデータを格納している演算レジスタ101〜104を示す情報)と、セレクタ331から出力された情報(加算器120に関わる格納先レジスタ情報を含む命令情報)とが入力する。さらに、論理回路951には、レジスタ332〜335に格納されている情報(命令情報)が入力する。この論理回路951は、それら入力した情報に基づいて、発行ステージ411から発行される命令情報によって処理部21が加算器120に関わるバイパス処理を実行する可能性がある場合に、信号「1」を出力する回路構成を備えている。
論理回路952は、発行ステージ412に対応している回路である。当該論理回路952には、格納命令認識部312から出力された情報(演算対象のデータを格納している演算レジスタ101〜104を示す情報)と、セレクタ331から出力された情報(加算器120に関わる格納先レジスタ情報を含む命令情報)とが入力する。さらに、論理回路952には、レジスタ332〜335に格納されている情報(命令情報)が入力する。この論理回路952は、それら入力した情報に基づいて、発行ステージ412から発行される命令情報によって処理部21が加算器120に関するバイパス処理を実行する可能性がある場合に、信号「1」を出力する回路構成を備えている。
論理回路953は、発行ステージ413に対応している回路である。当該論理回路953には、格納命令認識部313から出力された情報(演算対象のデータを格納している演算レジスタ101〜104を示す情報)と、セレクタ331から出力された情報(加算器120に関わる格納先レジスタ情報を含む命令情報)とが入力する。さらに、論理回路953には、レジスタ332〜335に格納されている情報(命令情報)が入力する。この論理回路953は、それら入力した情報に基づいて、発行ステージ413から発行される命令情報によって処理部21が加算器120に関するバイパス処理を実行する可能性がある場合に、信号「1」を出力する回路構成を備えている。
バイパス競合検知部336の入力側は論理回路951〜953の出力側に接続している。また、バイパス競合検知部336は、発行ステージ411〜413にそれぞれ対応する出力部を備えており、これら出力部は、セット部322に接続している。このバイパス競合検知部336は、論理回路951〜953の出力信号に基づいて、発行ステージ411〜413から発行される命令情報に関係するバイパス処理が実行された場合にデータがバイパス経路で競合する可能性の有無を検知する機能を備えている。また、バイパス競合検知部336は、その検出結果に応じた信号を出力する機能を備えている。
ここで、バイパス競合検知部336に関する具体例を述べる。例えば、レジスタ332,333,334のそれぞれに、次のような、格納先レジスタが互いに異なるバイパス可能な命令情報が格納されているとする。
――――――――――――――――――――――――――――――――――――――――
・レジスタ332:命令 V2<−V0+V1(データV0,V1を加算し、加算結果をデータV2として演算レジスタ103に格納するという命令)
・レジスタ333:命令 V1<−V2+V0(データV0,V2を加算し、加算結果をデータV1として演算レジスタ102に格納するという命令)
・レジスタ334:命令 V0<−V1+V2(データV1,V2を加算し、加算結果をデータV0として演算レジスタ101に格納するという命令)
(この例では、レジスタ332〜334に格納されている命令情報に基づいた加算器120の演算結果は、バイパス経路を通して演算部107に供給することが可能である。)
――――――――――――――――――――――――――――――――――――――――
このような状態である場合に、発行ステージ411,412,413のそれぞれに、次のような、バイパス可能な命令情報が格納されている(発行に備え待機している)とする。なお、発行ステージ411〜413に命令情報が格納された順番は、発行ステージ412→発行ステージ413→発行ステージ411とする。
――――――――――――――――――――――――――――――――――――――――
・発行ステージ411:命令 V0<−V0+V3(データV0,V3を加算し、加算結果をデータV0として演算レジスタ101に格納するという命令)
・発行ステージ412:命令 V1<−V1×V3(データV1,V3を乗算し、乗算結果をデータV1として演算レジスタ102に格納するという命令)
・発行ステージ413:命令 V2<−V2+V3(データV2,V3を加算し、加算結果をデータV2として演算レジスタ103に格納するという命令)
(この例では、発行ステージ411〜413に格納されている命令は、いずれもバイパス経路を通じて加算器120又はレジスタ121又はレジスタ122に存在する先行命令演算結果を使用可能な命令である。)
――――――――――――――――――――――――――――――――――――――――
上記のようにレジスタ332〜334と発行ステージ411〜413に命令情報が格納されている場合には、論理回路951は、発行ステージ411に格納されている命令情報に関する情報(つまり、演算対象のデータを格納している(換言すれば、演算対象のデータを読み出す)演算レジスタ101,104を示す情報)を格納命令認識部311から受け取る。そして、論理回路951は、その受け取った情報に示される演算レジスタ101,104と、レジスタ332〜334に格納されている命令情報に含まれている格納先レジスタ情報が示す演算レジスタとが競合するか否かに応じた信号を出力する。この例では、演算対象のデータを読み出す演算レジスタ101と、レジスタ334に格納されている命令情報に基づいた演算結果の格納先の演算レジスタ101とが同じである。このことから、論理回路951は、競合することを表す信号「1」をバイパス競合検知部336に出力する。
論理回路952は、発行ステージ412に格納されている命令情報に関する情報(つまり、演算対象のデータを格納している(換言すれば、演算対象のデータを読み出す)演算レジスタ102,104を示す情報)を格納命令認識部312から受け取る。そして、論理回路952は、その受け取った情報に示される演算レジスタ102,104と、レジスタ332〜334に格納されている命令情報に含まれている格納先レジスタ情報が示す演算レジスタとが競合するか否かに応じた信号を出力する。この例では、演算対象のデータを読み出す演算レジスタ102と、レジスタ333に格納されている命令情報に基づいた演算結果の格納先の演算レジスタ102とが同じである。このことから、論理回路952は、競合することを表す信号「1」をバイパス競合検知部336に出力する。
論理回路953は、発行ステージ413に格納されている命令情報に関する情報(つまり、演算対象のデータを格納している(換言すれば、演算対象のデータを読み出す)演算レジスタ103,104を示す情報)を格納命令認識部313から受け取る。そして、論理回路953は、その受け取った情報に示される演算レジスタ103,104と、レジスタ332〜334に格納されている命令情報に含まれている格納先レジスタ情報が示す演算レジスタとが競合するか否かに応じた信号を出力する。この例では、演算対象のデータを読み出す演算レジスタ103と、レジスタ332に格納されている命令情報に基づいた演算結果の格納先の演算レジスタ103とが同じである。このことから、論理回路953は、競合することを表す信号「1」をバイパス競合検知部336に出力する。
バイパス競合検知部336は、論理回路951〜952の出力信号に基づいて、発行ステージ411〜413に格納されている命令情報に関係するバイパス処理がデータの競合状態を招くと検知(認識)する。そして、バイパス競合検知部336は、そのような競合する命令情報の優先順位に応じた信号をセット部322に出力する。つまり、この第2実施形態では、命令情報の優先順位は発行された順番であるから、優先順位の高い順から、発行ステージ412の命令情報→発行ステージ413の命令情報→発行ステージ411の命令情報である。これにより、バイパス競合検知部336は、発行ステージ411に対応するセット部322の論理和回路361に向けて信号「11」を出力する。この信号「11」における左側(十の位)の「1」は、発行ステージ412の命令情報に関する処理と発行ステージ411の命令情報に関する処理とが競合し、かつ、発行ステージ412の命令情報よりも発行ステージ411の命令情報の発行順の優先順位が低いことを表している。また、信号「11」における右側(一の位)の「1」は、発行ステージ413の命令情報に関する処理と発行ステージ411の命令情報に関する処理とが競合し、かつ、発行ステージ413の命令情報よりも発行ステージ411の命令情報の発行順の優先順位が低いことを表している。
バイパス競合検知部336は、発行ステージ412に対応するセット部322の論理和回路362に向けて信号「00」を出力する。この信号「00」における左側(十の位)の「0」は、発行ステージ411の命令情報に関する処理と発行ステージ412の命令情報に関する処理とが競合し、かつ、発行ステージ411の命令情報よりも発行ステージ412の命令情報の発行順の優先順位が高いことを表している。また、信号「00」における右側(一の位)の「0」は、発行ステージ413の命令情報に関する処理と発行ステージ412の命令情報に関する処理とが競合し、かつ、発行ステージ413の命令情報よりも発行ステージ412の命令情報の発行順の優先順位が高いことを表している。
バイパス競合検知部336は、発行ステージ413に対応するセット部322の論理和回路363に向けて信号「10」を出力する。この信号「10」における左側(十の位)の「1」は、発行ステージ411の命令情報に関する処理と発行ステージ413の命令情報に関する処理とが競合し、かつ、発行ステージ411の命令情報よりも発行ステージ413の命令情報の発行順の優先順位が低いことを表している。また、信号「10」における右側(一の位)の「0」は、発行ステージ412の命令情報に関する処理と発行ステージ413の命令情報に関する処理とが競合し、かつ、発行ステージ412の命令情報よりも発行ステージ413の命令情報の発行順の優先順位が高いことを表している。
発行調整部321は、乗算器130に対応している。この発行調整部321は、セレクタ341と、複数のレジスタ342〜345と、バイパス競合検知部346と、論理回路954〜956とを有している。この発行調整部321は、対応している演算器が加算器120であるか乗算器130であるかという相違以外は発行調整部320とほぼ同様である。
すなわち、セレクタ341の入力側は、発行命令認識部301〜303に接続している。また、セレクタ341の出力側はレジスタ342と論理回路954〜956とに接続している。当該セレクタ341は、発行命令認識部301〜303から、乗算器130に関わる格納先レジスタ情報を含む命令情報を受け取った場合に、その情報をレジスタ342および論理回路954〜956に向けて出力する。なお、そのセレクタ341から出力される情報は、乗算器130を利用しないストア命令等に関する情報は含まれない。
レジスタ342〜345は、セレクタ341から受け取った情報(つまり、乗算器130に関わる格納先レジスタ情報を含む命令情報)を、順次、基本動作周波数の1サイクルずつ格納する機能を備えている。この第2実施形態では、レジスタ342〜344にその情報が格納されている状態が、乗算器130に関するバイパス処理が可能な状態である。また、レジスタ345に格納されている情報は、バイパス経路において、データが競合するか否かを判断する競合情報を生成するために利用される。
論理回路954は、発行ステージ411に対応している回路である。当該論理回路954には、格納命令認識部311から出力された情報(演算対象のデータを格納している演算レジスタ101〜104を示す情報)と、セレクタ341から出力された情報(乗算器130に関わる格納先レジスタ情報を含む命令情報)とが入力する。さらに、論理回路954には、レジスタ342〜345に格納されている情報(命令情報)が入力する。この論理回路954は、それら入力した情報に基づいて、発行ステージ411から発行される命令情報によって処理部21が乗算器130に関するバイパス処理を実行する可能性がある場合に、信号「1」を出力する回路構成を備えている。
論理回路955は、発行ステージ412に対応している回路である。当該論理回路955には、格納命令認識部312から出力された情報(演算対象のデータを格納している演算レジスタ101〜104を示す情報)と、セレクタ341から出力された情報(乗算器130に関わる格納先レジスタ情報を含む命令情報)とが入力する。さらに、論理回路955には、レジスタ342〜345に格納されている情報(命令情報)が入力する。この論理回路955は、それら入力した情報に基づいて、発行ステージ412から発行される命令情報によって処理部21が乗算器130に関するバイパス処理を実行する可能性がある場合に、信号「1」を出力する回路構成を備えている。
論理回路956は、発行ステージ413に対応している回路である。当該論理回路956には、格納命令認識部313から出力された情報(演算対象のデータを格納している演算レジスタ101〜104を示す情報)と、セレクタ341から出力された情報(乗算器130に関わる格納先レジスタ情報を含む命令情報)とが入力する。さらに、論理回路956には、レジスタ342〜345に格納されている情報(命令情報)が入力する。この論理回路956は、それら入力した情報に基づいて、発行ステージ413から発行される命令情報によって処理部21が乗算器130に関するバイパス処理を実行する可能性がある場合に、信号「1」を出力する回路構成を備えている。
バイパス競合検知部346の入力側は論理回路954〜956の出力側に接続している。また、バイパス競合検知部346は、発行ステージ411〜413にそれぞれ対応する出力部を備えており、これら出力部は、セット部322に接続している。このバイパス競合検知部346は、バイパス競合検知部336と同様に、論理回路954〜956の出力信号に基づいて、発行ステージ411〜413から発行される命令情報に関係するバイパス処理が実行された場合にデータがバイパス経路で競合する可能性の有無を検知する機能を備えている。また、バイパス競合検知部346は、その検出結果に応じた信号を出力する機能を備えている。
セット部322は、論理和回路361〜363を有している。論理和回路361は発行ステージ411に関する回路である。当該論理和回路361は、バイパス競合検知部336,346から出力された発行ステージ411に関する信号を受け、これら信号の論理和に応じた信号を出力する回路構成を有している。その出力信号は、発行ステージ411のバイパス情報管理部215に伝達され、バイパス情報管理部215のフラグレジスタ216,217に格納される。
論理和回路362は発行ステージ412に関する回路である。当該論理和回路362は、バイパス競合検知部336,346から出力された発行ステージ412に関する信号を受け、これら信号の論理和に応じた信号を出力する回路構成を有している。その出力信号は、発行ステージ412のバイパス情報管理部245に伝達され、バイパス情報管理部245のフラグレジスタ246,247に格納される。
論理和回路363は発行ステージ413に関する回路である。当該論理和回路363は、バイパス競合検知部336,346から出力された発行ステージ413に関する信号を受け、これら信号の論理和に応じた信号を出力する回路構成を有している。その出力信号は、発行ステージ413のバイパス情報管理部275に伝達され、バイパス情報管理部275のフラグレジスタ276,277に格納される。
バイパスタイミング検出部351は、発行調整部320のレジスタ332〜334および発行調整部321のレジスタ342〜344に格納されている情報に基づいて、実行される命令情報に関わる演算対象のデータを保持する演算レジスタ101〜104を検知(識別)する機能を備えている。また、バイパスタイミング検出部351は、識別(検知)した演算レジスタ101〜104に対応するバイパス情報提供部204のフラグレジスタに向けて信号「1」を出力する機能を備えている。これにより、バイパス情報提供部204において、バイパスタイミング検出部351により識別された演算レジスタ101〜104に対応するフラグレジスタに「1」が格納される(フラグが立つ)。
さらに、バイパスタイミング検出部351は、演算レジスタ101〜104に関わるバイパス処理を実行するタイミングを決定(特定)する機能を備えている。さらに、バイパスタイミング検出部351は、その決定(特定)したタイミングを示すバイパスタイミング情報をバイパス情報提供部204に向けて出力する機能を備えている。その出力された情報は、バイパス情報提供部204により保持され、当該バイパス情報提供部204から、発行された命令情報と共に指令部405に出力される。なお、この第2実施形態では、発行調整部320,321のレジスタ332,342に命令情報が格納されている場合には、その情報に関連するバイパス処理が最も早く実行される。このことを示すバイパスタイミング情報がバイパスタイミング検出部351からバイパス情報提供部204に出力される。
図10は、制御部20を構成する指令部405の一構成例を管理部404等と共に表すブロック図である。指令部405は、命令情報を発行する機能を備えており、出力調整部236,266,296を有している。出力調整部236,266,296は、それぞれ、発行ステージ411〜413に個別に対応しており、命令情報を出力するタイミングを調整する機能を備えている。
すなわち、出力調整部236は、発行ステージ411に対応している。当該出力調整部236は、発行抑止部228と、レジスタ230〜235と、発行部810〜814とを有している。発行抑止部228は、命令調整部219によって命令情報を発行することが確定されたことにより発行ステージ411から保持部229に命令情報が格納された場合に、他の命令情報が発行されることを抑止する機能を備えている。つまり、発行抑止部228は、そのような場合に、抑止信号を命令調整部249,279に出力する機能を備えている。その信号出力に際し、発行抑止部228は、保持部229のフラグレジスタ220,223,224,226,227におけるフラグ状態を参照する。
この発行抑止部228の機能によって、同一リソースを使用する他の命令情報の発行が確定してしまうことが回避される。すなわち、命令情報の発行が確定した基本動作周波数のサイクルの次のサイクルで、その命令情報に関わるリソースに対応するビジー管理部203のフラグレジスタのフラグが立つ。つまり、命令調整部219,249,279は、その管理部203のフラグ状態に基づいて発行対象の命令情報を確定する。そのように命令情報を発行することを確定してから、その命令情報に関わるリソースのビジー情報がビジー管理部203を介して命令調整部219,249,279に入力されるまで、基本動作周波数の1サイクルが必要である。換言すれば、命令調整部219,249,279が命令情報の発行を確定してから、当該発行を確定した命令情報に関わるビジー情報を他の命令調整部219,249,279が受け取るまでに1サイクルの空白期間がある。この空白期間に、他の命令調整部219,249,279が、リソースが競合する命令情報の発行を次に確定し、そのリソースにおけるデータの競合を招く虞がある。これに対し、命令抑止部228が前記の如く抑止信号を出力することにより、そのような問題は回避される。すなわち、発行抑止部228は、競合を回避する競合回避部として機能する。
レジスタ230〜235は、次に示すような発行情報を、順次、基本動作周波数における1サイクルずつ格納していくと共に、その発行情報のうちの予め定められた情報を発行部811〜814を介して処理部21に向けて順次発行する機能を備えている。上記発行情報は、保持部229のフラグレジスタ220のフラグ状態を示す情報と、レジスタ221に格納されている命令情報とを含む。さらに、発行情報は、バイパス処理に関連する演算レジスタ101〜104を示す情報と、バイパス処理対象のデータを出力する演算器(加算器120あるいは乗算器130)を示す情報と、バイパスタイミングを示す情報とを含む。
発行部810は、上記発行情報のうちの演算レジスタに関する情報と、当該演算レジスタから演算対象のデータを読み出す指示(指令)とを処理部21に向けて出力する機能を備えている。また、発行部810は、バイパス調整部108,109のセレクタ123,133を制御する指示を処理部21に向けて出力する機能を備えている。
発行部811は、前記発行情報に基づいて、選択部106のオペランドセレクタ141〜144を制御する指示と、選択部106のバイパスデータセレクタ111〜114を制御する指示とを処理部21に向けて出力する機能を備えている。
発行部812は、前記命令情報に基づいて、実行対象の演算器に向けて演算処理を実行する指示を出力する機能を備えている。発行部813は、前記命令情報に基づいて、クロスバ100の回路動作(スイッチング動作)を制御する指示を処理部21に向けて出力する機能を備えている。発行部814は、前記命令情報に基づいて、演算器の演算結果を格納する演算レジスタを示す情報と、その演算レジスタに演算結果を格納する指示と、それに関わるセレクタ123,133の動作を制御する指示とを処理部21に向けて出力する機能を備えている。
出力調整部266は、発行ステージ412に対応している。当該出力調整部266は、出力調整部236とほぼ同様に、発行抑止部258と、レジスタ260〜265と、発行部815〜819とを有している。発行抑止部258は、命令調整部249によって命令情報を発行することが確定されたことにより発行ステージ412から保持部259に命令情報が格納された場合に、他の命令情報の発行を抑止する機能を備えている。つまり、発行抑止部258は、そのような場合に、抑止信号を命令調整部219,279に出力する機能を備えている。その信号出力に際し、発行抑止部258は、保持部259のフラグレジスタ250,253,254,256,257のフラグ状態を参照する。この発行抑止部258も、発行抑止部228と同様に、競合を回避する競合回避部として機能する。
レジスタ260〜265は、次に示すような発行情報を、レジスタ230〜235と同様に、順次、基本動作周波数における1サイクルずつ格納していくと共に、その発行情報のうちの予め定められた情報を発行部815〜819を介して処理部21に向けて順次発行する機能を有する。前記発行情報は、保持部259のフラグレジスタ250のフラグ状態を示す情報と、レジスタ251に格納されている命令情報とを含む。さらに、発行情報は、バイパス処理に関連する演算レジスタ101〜104を示す情報と、バイパス処理対象のデータを出力する演算器(加算器120あるいは乗算器130)を示す情報と、バイパスタイミングを示す情報とを含む。
発行部815〜819は、発行部810〜814と同様の機能を備えている。
出力調整部296は、発行ステージ413に対応している。当該出力調整部296は、出力調整部236,266とほぼ同様に、発行抑止部288と、レジスタ290〜295と、発行部820〜824とを有している。発行抑止部288は、命令調整部279によって命令情報を発行することが確定されたことにより発行ステージ413から保持部279に命令情報が格納された場合に、他の命令情報の発行を抑止する抑止信号を命令調整部219,249に出力する機能を備えている。その信号出力に際し、発行抑止部288は、保持部289のフラグレジスタ280,283,284,286,287のフラグ状態を参照する。この発行抑止部288も、発行抑止部228,258と同様に、競合を回避する競合回避部として機能する。
レジスタ290〜295は、次に示すような発行情報を、レジスタ290〜295と同様に、順次、基本動作周波数の1サイクルずつ格納していくと共に、その発行情報のうちの予め定められた情報を発行部820〜824を介して処理部21に向けて順次発行する機能を有する。発行情報は、保持部289のフラグレジスタ280のフラグ状態を示す情報と、レジスタ281に格納されている命令情報とを含む。さらに、発行情報は、バイパス処理に関連する演算レジスタ101〜104を示す情報と、バイパス処理対象のデータを出力する演算器(加算器120あるいは乗算器130)を示す情報と、バイパスタイミングを示す情報とを含む。
発行部820〜824は、発行部810〜814と同様の機能を備えている。
この第2実施形態では、出力調整部236,266,296からそれぞれ上記のように命令情報が発行されることによって、ベクトル処理(パイプライン動作)を並行することが可能となっている。
この第2実施形態におけるベクトル処理装置は上記のように構成されている。このベクトル処理装置における回路動作の一例を以下に説明する。
ここでは、演算レジスタ101に格納されているデータ(V0)と、演算レジスタ102に格納されているデータ(V1)とを加算し、この加算結果を演算レジスタ104にデータV3として格納させる命令(指示)I1がベクトル処理装置に与えられたとする。その命令I1は、例えば、次のように書き表される。なお、ベクトル長は4とする。
命令I1 VADD V3<− V0+V1
この命令(I1)に基づいたベクトル処理装置の回路動作例を図11のタイムチャートを参照しながら説明する。
制御部20は、ベクトル長が4である上記のような命令I1の発行を確定すると、演算レジスタ101,102からそれぞれ4サイクル連続でデータ(V0−0〜3,V1−0〜3)を読み出し、その読み出したデータを加算器120に加える(時間t2〜t5)。すなわち、制御部20は、処理部21における選択部106のオペランドセレクタ141〜144とバイパスデータセレクタ111〜114を制御することによって、演算レジスタ101,102に格納されているデータ(V0−0〜3,V1−0〜3)をそれぞれ選択部106を介して加算器120に加える。
この第2実施形態では、加算器120は、2段のパイプライン処理によって演算結果を出力する加算演算器である。これにより、加算器120は、データが供給され始めてから2サイクル後に、4サイクル連続して加算結果(A−0〜3)を出力する(時間t4〜t7)。
制御部20は、クロスバ100を制御することによって、加算器120の加算結果(A−0〜3)をクロスバ100を介して演算レジスタ104にデータV3として供給する。つまり、演算レジスタ104は、加算器120の演算結果を4サイクル連続して受け取り、受け取った順番に格納する(時間t7〜t10)。
上記のようにして、ベクトル処理装置は、命令I1に応じた処理を実行する。
次に、上記のような命令I1に続いて、乗算に関する命令I2がベクトル処理装置に加えられた場合におけるベクトル処理装置の回路動作例を説明する。なお、命令I2は、演算レジスタ103に格納されているデータ(V2)と、演算レジスタ104に格納されているデータ(V3)とを乗算し、この乗算結果をデータV0とする命令である。
上記のような命令I1,I2は、例えば、次のように書き表される。
命令I1 VADD V3<− V0+V1
命令I2 VMPY V0<− V2×V3
このような命令I1,I2がベクトル処理装置に加えられると、制御部20は、命令I1に基づいた上記同様な処理部21の制御を実行するが、命令I1,I2の関係により、バイパス処理に関する制御も実行する。つまり、制御部20は、加算器120の加算結果を前記同様にクロスバ100を介して演算レジスタ104に供給するだけでなく、バイパス調整部108のセレクタ123を制御することによって、バイパスデータセレクタ111〜114にも加算結果を供給する。また、制御部20は、オペランドセレクタ141〜144とバイパスデータセレクタ111〜114をも制御する。これにより、加算器120の加算結果(A−0〜3)と、演算レジスタ103に格納されているデータ(V2−0〜3)とが4サイクル連続してバイパスデータセレクタ113から乗算器130に供給される(時間t4〜t7)。
乗算器130も、加算器120と同様に、2段のパイプライン処理によって演算結果を出力する乗算演算器である。これにより、乗算器130は、データが供給され始めてから2サイクル後に、4サイクル連続して乗算結果(M−0〜3)を出力する(時間t6〜t9)。制御部20は、クロスバ100を制御することによって、乗算器130の乗算結果(M−0〜3)をクロスバ100を介して演算レジスタ101に供給する。これにより、演算レジスタ101は、受け取った乗算結果(M−0〜3)をデータV0として順番に格納する(時間t9〜t12)。
この第2実施形態のベクトル処理装置は、命令I1による加算結果(A−0〜3)を、バイパス処理により、演算レジスタ104を介さずに、命令I2による乗算処理に利用している。つまり、図11に示す時間t4〜t7に示されるように、加算器120の加算結果(A−0〜3)が、演算レジスタ104を介さずに、バイパスデータセレクタ114から乗算器130に加えられている。
これに対し、図12には、ベクトル処理装置が命令I1,I2をバイパス処理を行わずに処理する場合の回路動作のタイムチャートが示されている。図12に示す例では、時間t7〜t10に示されるように、命令I1による加算結果(A−0〜3)が演算レジスタ104に格納される。それと共に、当該演算レジスタ104の格納データがバイパスデータセレクタ144とバイパスデータセレクタ114を介して乗算器130に加えられる。
第2実施形態のベクトル処理装置は、バイパス処理を実行するので、図12に示されているようなバイパス処理を実行しない場合に比べて、同じ命令I1,I2に対し、3クロック(3サイクル)分、早く処理を完了することができる。
図13は、ベクトル処理装置の別の回路動作例を示すタイムチャートである。この回路動作例は、命令I1,I2の前に、次のような命令I0をベクトル処理装置が処理する場合の動作例である。命令I0は、演算レジスタ103に格納されているデータ(V2)と、演算レジスタ104に格納されているデータ(V3)とを乗算し、この乗算結果をデータV2とする命令である。なお、命令I1,I2では、演算のベクトル長が4であるのに対し、命令I0では、演算のベクトル長は2である。
命令I0 VMPY V2<− V2×V3
命令I1 VADD V3<− V0+V1
命令I2 VMPY V0<− V2×V3
図13の例では、命令I1によって加算器120が加算結果を出力し始めた時点(時間t4)において、乗算器130は、命令I0に基づいた処理によって、バイパスデータセレクタ114からのデータ(V3−1)が加えられている。このため、ベクトル処理装置は、加算器120の出力をそのままバイパスパイプを通して乗算器130に加えることができない。この図13の例では、ベクトル処理装置は、加算器120の加算結果(A−0〜3)をレジスタ121に一旦格納した後に、レジスタ121からバイパスパイプを通して乗算器130に加えている(時間t5)。すなわち、バイパス調整部108によって、加算器120の加算結果をバイパスパイプを通して乗算器130に加えるタイミングが調整されている。これにより、加算器120の出力をそのままバイパスパイプを通して乗算器130に加える構成しか持たない場合に比べて、この第2実施形態のベクトル処理装置は、バイパス処理を増加できる。このバイパス処理の増加により、第2実施形態のベクトル処理装置は、処理速度を早めることができる。
さらに、ベクトル処理装置の別の回路動作例を図14を参照しながら説明する。ここでは、ベクトル処理装置は、次のような命令I1,I2,I3,I4に従って動作する。なお、ここでは、演算のベクトル長は2である。
命令I1 VADD V0<− V0+V1
命令I2 VADD V3<− V1+V2
命令I3 VADD V0<− V0+V1
命令I4 VMPY V3<− V1×V3
この場合には、制御部20は、命令I1の発行を確定すると、オペランドセレクタ141〜144とバイパスデータセレクタ111〜114を制御することによって、演算レジスタ101,102のデータ(V0−0〜3,V1−0〜3)を2サイクル連続で加算器120に加える(時間t2,t3)。これにより、加算器120は、データが供給され始めてから2サイクル後に、2サイクル連続して加算結果(A−0,1)を出力する(時間t4,t5)。制御部20は、クロスバ100を制御することによって、加算器120の加算結果(A−0,1)をクロスバ100を介して演算レジスタ101にデータV0として供給する(時間t7,t8)。上記同様な制御部20の制御動作により、処理部21は、命令I2に基づいた処理を並行して行う。
一方、命令I1による加算結果(A−0,1)は、演算レジスタ101を通らないバイパスパイプによって、バイパス調整部108のレジスタ122からバイパスデータセレクタ112を通して加算器120に加えられる(時間t6,t7)。そして、加算器120は、その加算結果と、演算レジスタ102から加えられたデータとに基づいて、命令I3に基づいた加算処理を、命令I1,I2に基づいた処理と並行に実行する。
さらに、制御部20が命令I4に基づいて前記同様に乗算処理に関わる制御動作を行うことによって、乗算対象のデータが処理部21の乗算器130に加えられる。この例では、演算レジスタ102から読み出されたデータ(V1−0,1)が乗算器130に加えられる。また、命令I2に基づいた加算器120の加算結果(A−0,1)が、演算レジスタ104を通らないバイパスパイプによってバイパス調整部108のレジスタ122からバイパスデータセレクタ114を通して乗算器130に加えられる(時間t8,t9)。そして、乗算器130の乗算結果(M−0,1)が演算レジスタ104にデータV3として格納される(時間t13,t14)。
ところで、図15のタイムチャートに示されるように、命令I3が発行されたクロック(時間t5)の次のクロック(時間t6)で命令I4が発行されるとすると、次のようなデータ衝突が発生する。すなわち、図15に示す時間t6で命令I4が発行されると、レジスタ121に格納されている加算結果(A−0)をバイパスパイプに通す指令と、レジスタ122に格納されている加算結果(A−1)をバイパスパイプに通す指令とが同時に出力されることとなる。これにより、セレクタ123においてデータ衝突が発生する(時間t7)。
これに対して、この第2実施形態では、制御部20は、命令I4の発行タイミングを調整する(発行を抑止する)機能を備えている。つまり、図16のタイムチャートに示されるように、制御部20は、命令I4を保持している発行ステージ411におけるフラグレジスタ217に「1」を格納する。このことは、命令I4に関わるバイパス処理が他の命令I3に基づいたバイパス処理と競合することを示す。これにより、競合チェック部219が、命令I4の発行を遅らせる(抑止する)必要がある状態であることを検知し、命令I4の発行が抑止される。このため、命令I4は時間t6に発行されず、図14と図16に示されるように、時間t7において発行される。よって、この第2実施形態のベクトル処理装置は、前記したようなデータ衝突を回避できる。
(第3実施形態)
以下に、本発明に係る第3実施形態を説明する。なお、第3実施形態の説明において、第2実施形態と同様な構成部分には同一符号を付し、その共通部分の重複説明は省略する。
この第3実施形態のベクトル処理装置は、第2実施形態よりも構成を簡略化することを目的に考え出されている。すなわち、この第3実施形態では、ベクトル処理装置は、バイパス情報管理部215,245,275のフラグレジスタにおける情報を利用せずに、バイパス処理に関する競合状態を調整する機能を備えている。すなわち、この第3実施形態では、バイパス情報管理部215,245,275のフラグレジスタは、常に、「00」が格納されている状態となる。これにより、バイパス情報管理部215,245,275のフラグレジスタを管理しているバイパス認識部206の構成が簡略化される。
図17は、第3実施形態におけるバイパス認識部206の構成を、当該バイパス認識部206と関わる構成部分と共に表すブロック図である。この第3実施形態では、バイパス認識部206は、発行命令認識部301〜303と、格納命令認識部311〜313と、発行調整部320,321と、論理和回路373と、レジスタ381とを有している。
レジスタ381は、重み付け情報(優先順位の情報)を格納する機能を備えている。重み付け情報とは、発行調整部320,321がバイパスタイミング(バイパス処理を実行するタイミング)を決定する際に利用する情報である。このレジスタ381に格納されている重み付け情報は、例えば制御部20および処理部21とは別に設けられるRAS(Remote Access Service)機能を利用して、動作中に変更が可能である。より具体的には、重み付け情報は、例えば、JTAG(Joint Test Action Group)インタフェースを利用して書き込むことが可能である。
この第3実施形態では、発行調整部320,321は、第2実施形態における発行調整部320,321(図9参照)と比べて、論理回路951〜956が省略されている分、簡易な回路構成となっている。つまり、発行調整部320は、セレクタ331と、複数のレジスタ332〜335と、バイパスタイミング調停部371とを有している。また、発行調整部321は、セレクタ341と、複数のレジスタ342〜345と、バイパスタイミング調停部372とを有している。発行調整部320,321におけるセレクタ331,341とレジスタ332〜335,342〜345は、第2実施形態と同様に機能する。
バイパスタイミング調停部371,372は、レジスタ332〜335,342〜345に複数の命令情報が格納されている場合に、それら命令に関わるバイパスタイミング(、バイパス処理を実行するタイミング)およびそのバイパス処理の対象となる演算レジスタを決定する機能を備えている。つまり、バイパスタイミング調停部371,372は、バイパス処理による競合を回避することを考慮して、バイパスタイミングおよび演算レジスタを決定する競合回避部としての機能を備えている。
バイパスタイミング調停部371,372は、その機能の実行に際し、レジスタ381に格納されている重み付け情報(数値)を利用する。例えば、レジスタ334の命令情報>レジスタ333の命令情報>レジスタ334の命令情報の順番に命令情報に重み付する重み付け情報がレジスタ381に格納されているとする。この場合には、レジスタ334に格納されている命令情報に関わる処理のみがバイパス処理可能となるように、バイパスタイミング調停部371は、バイパスタイミング等を決定する。この場合に、第2実施形態におけるバイパス競合検知部336の具体例で述べた命令情報がレジスタ334や発行ステージ411〜413に格納されているとすると、発行ステージ411に格納されている命令のみが発行可能となるから、データの競合が回避される。
論理和回路373は、バイパスタイミング調停部371,372から出力される信号の論理和に応じた信号を出力する機能を備えている。この論理和回路373の出力信号は、バイパス情報提供部204に加えられ、当該バイパス情報提供部204において、対応する演算レジスタに関するフラグレジスタに「1」を格納する。ここでは、加算器120と乗算器130にそれぞれ関連するバイパス処理が可能であることから、最大2つの演算レジスタに対応するフラグレジスタに「1」が格納される。
この第3実施形態では、バイパス認識部206は、さらに、バイパス情報管理部215,245,275に信号「00」を常に供給する機能を備えている。
図18は、この第3実施形態におけるベクトル処理装置の動作例を示すタイムチャートである。この動作例は、ベクトル処理装置に前記命令I1,I2,I3,I4が与えられている場合の動作例である。
この第3実施形態では、バイパス認識部206は、バイパス処理に関わる競合状態を考慮してバイパス情報提供部204のフラグレジスタにおける情報を設定している。これにより、この第3実施形態のベクトル処理装置は、バイパス情報管理部215,245,275の情報を利用しなくとも、データ衝突が回避できるタイミングで持って命令情報(I4)を発行できる。
この第3実施形態では、上記のように、ベクトル処理装置の構成は簡略化されている。これにより、この第3実施形態のベクトル処理装置は、必要なハードウェアの低減を図ることができる。また、前記の如く、この第3実施形態の発行調整部320,321は、第2実施形態における発行調整部320,321と比べて、論理回路951〜956が省略されている。このため、その論理回路951〜956による処理が無い分、第3実施形態におけるバイパス認識部206は、第2実施形態よりも処理速度の向上を図ることができる。
この第3実施形態のベクトル処理装置は、バイパスタイミングを決定する際に、バイパス情報管理部215,245,275の情報を利用しない。このため、バイパス情報管理部215,245,275の情報を利用しなくともデータ衝突等の不具合を回避するために、第3実施形態のベクトル処理装置は、第2実施形態よりもバイパスタイミングが減少する。ただ、第3実施形態のベクトル処理装置は、上記のような効果を得ることができることから、例えば、簡易な構成のベクトル処理装置が要求される場合には、この第3実施形態の構成は有効である。
なお、この第3実施形態では、上記のように、バイパス情報管理部215,245,275は実質的に使用しない。このことから、バイパス情報管理部215,245,275は省略してもよい。
(その他の実施形態)
なお、本発明は第1〜第3の実施形態に限定されることはなく、様々な実施の形態を採り得る。例えば、動作クロックによっては、フラグレジスタ213,214,216,217がレジスタである必要が無い場合がある。例えば、動作クロック(動作周波数)が100MHz〜500MHz程度の低い周波数である場合には、レジスタ213に代えて信号線としてもよい。この場合には、動作クロックが低いことから、レジスタ213に代えて信号線としても、レジスタ332から第2実施形態におけるバイパス競合検知部336とセット部322(論理和回路361)とレジスタ213と命令調整部219を通ってフラグレジスタ220に至るまでの信号伝達を動作クロックの1クロック内で実行できるから、バイパス処理装置は、正常に動作することができる。
また、バイパス認識部206は、第2実施形態では図9に示される構成を有し、第3実施形態では図17に示される構成を有している。これに対し、バイパス認識部206は、図9と図17に示される構成を合わせたハイブリット構成を備えていてもよい。この場合には、例えば、外部からの指令に従って、図9の構成を採用するか図17の構成を採用するかが決定される。
さらに、第2,3の各実施形態では、制御部20は、発行抑止部228,258,288を有している。これに対して、制御部20の基本動作周波数が低い場合には、ビジー管理部203に発行が確定した命令情報に関するビジー情報が格納されてから、そのビジー情報を1クロックで競合調整部207がチェック可能である。このことから、このような場合には、発行抑止部228,258,288を省略してもよい。