(57)【要約】      （修正有）【課題】高速で、高率よく処理するベクトルデータ処理システムを提供する。【解決手段】複数のベクトル要素データを格納する領域と、領域毎にデータが格納されたか否かを示す情報を格納する領域とを有するレジスタと、演算命令に従ってデータの演算を実行する演算部と、演算命令とレジスタに記憶された情報に基づいて、レジスタから演算すべきデータを読み出して演算部へ送る制御部によってベクトルデータ処理プロセッサを構成する。【選択図】図１
2006196015.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを格納する領域と、上記領域毎にデータが格納されたか否かを示す情報を格納する領域とを有するレジスタと、
演算命令に従ってデータの演算を実行する演算部と、
演算命令と上記レジスタに記憶された上記情報に基づいて、上記レジスタから演算すべきデータを読み出して上記演算部へ送る制御部とを有するデータ処理プロセッサ。
【請求項２】
演算命令に従ってデータの演算を実行する演算部と、
複数のデータを格納する領域と、上記領域毎に格納されたデータが演算結果であるか否かを示す情報を格納する領域とを有するレジスタと、
上記レジスタに記憶された上記情報に基づいて、上記レジスタに格納された演算結果読み出して、アドレス情報とともに出力するデータ出力部とを有するデータ処理プロセッサ。
【請求項３】
複数のデータを格納する領域と、上記領域毎にデータが格納されたか否かを示す情報を格納する領域とを有するレジスタと、
演算命令に従ってデータの演算を実行する演算部と、
演算命令と上記レジスタに記憶された上記情報に基づいて、上記レジスタから演算すべきデータを読み出して上記演算部へ送る制御部と、
上記レジスタに格納するデータを読み込むためのアドレス情報を出力するデータ入力部とを有するデータ処理プロセッサ。
【請求項４】
請求項３において、
上記アドレス情報は、読み込むべき上記データが格納されているアドレスと読み込むべきデータに付される識別情報であるデータ処理プロセッサ。
【請求項５】
データを格納するメモリと、
上記メモリからデータを読み出し、処理を行う少なくとも１つのプロセッサとを有するデータ処理システムであって、
上記プロセッサは返送先情報をアドレスとともに出力し、上記メモリは上記アドレスに基づいて読み出したデータと上記返送先情報とを出力するデータ処理システム。
【請求項６】
請求項５のデータ処理システムにおいて、
上記返送先情報は、処理すべきデータに割り当てられた識別情報であるデータ処理システム。
【請求項７】
請求項５のデータ処理システムにおいて、
上記返送先情報は、上記プロセッサに割り当てられた識別情報であるデータ処理システム。
【請求項８】
請求項６のデータ処理システムにおいて、
上記プロセッサは、複数のデータを格納するレジスタと、上記レジスタに格納されたそれぞれのデータについて同じ演算を実行する処理部とを有し、上記識別情報に基づいて上記メモリから読み出されたデータを上記レジスタに格納し、上記識別情報に基づいて上記レジスタに格納されたデータを処理するデータ処理システム。
【請求項９】
データを格納するとともに新たなアドレス情報を受け付けられるか否かを示す信号を出力する複数のメモリと、
上記メモリにアドレス情報を出力し、上記アドレスによって上記メモリから読み出されたデータの処理を行う少なくとも１つのプロセッサと、
複数の上記メモリと上記プロセッサとの間に接続され、上記プロセッサから出力されたアドレス情報と上記メモリから出力された上記信号に基づいて、上記メモリへ上記アドレス情報を出力するタイミングを決定するスイッチ部とを有するデータ処理システム。
【請求項１０】
請求項９のデータ処理システムにおいて、
上記スイッチ部は上記プロセッサから上記メモリへアドレス情報を転送するアドレス情報転送部と、上記メモリから上記プロセッサへデータを転送するデータ転送部とを有するデータ処理システム。
【請求項１１】
請求項９のデータ処理システムにおいて、
それぞれの上記メモリは、上記スイッチ部を介して送られてくるアドレス情報を複数記憶する記憶部を有し、上記記憶部に記憶されたアドレス情報が所定値以下の場合に、新たなアドレス情報を受け付けられることを示す信号を出力し、上記スイッチ部は上記信号に基づいて上記プロセッサのアドレス情報を上記メモリへ転送するデータ処理システム。
【請求項１２】
ベクトルを構成する複数のデータについて同一の演算を繰り返し実行する複数のベクトル処理プロセッサと、
実行すべき命令がベクトル処理命令の場合に、いずれかの上記ベクトル処理プロセッサを選択し、選択されたベクトル処理プロセッサに上記ベクトル処理命令を転送するプロセッサとを有するデータ処理システム。
【請求項１３】
複数のデータ処理装置が接続されて構成されるデータ処理システムであって、
それぞれのデータ処理装置は、データ処理装置間のデータの転送を行う通信部と、データを格納するメモリと、上記メモリから読み出したデータの演算を行うプロセッサとを有し、上記プロセッサは、処理すべきデータに対する返送先情報をアドレスとともに出力し、上記メモリは上記アドレスに基づいて読み出したデータと上記返送先情報とを出力するデータ処理システム。
【請求項１４】
請求項１３のデータ処理システムにおいて、
上記返送先情報は、処理すべきデータに割り当てられた固有の識別情報であるデータ処理システム。
【請求項１５】
請求項１３のデータ処理システムにおいて、
上記返送先情報は、上記プロセッサに割り当てられた固有の識別情報であるデータ処理システム。
【請求項１６】
請求項１３のデータ処理システムにおいて、
上記プロセッサは、複数のデータを格納するレジスタと、上記レジスタに格納されたそれぞれのデータについて同じ演算を実行する処理部とを有し、上記識別情報に基づいて上記メモリから読み出されたデータを上記レジスタに格納し、上記識別情報に基づいて上記レジスタに格納されたデータを処理するデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、順序付けされた一次元配列であるベクトルデータを処理するベクトル処理プロセッサおよびシステムに関する。
【背景技術】
【０００２】
多くの科学技術計算処理では、ベクトルデータのそれぞれ連続する要素について同一の演算を繰り返し実行する処理、いわゆるベクトル処理が大部分を占めている。このため科学技術計算処理を処理対象とするスーパーコンピュータは、このベクトル処理を専用のハードウェア機構でパイプライン化して高速に実行するベクトル処理プロセッサを有している。基本的なベクトル処理プロセッサは、ベクトルデータの複数の要素を格納するベクトルレジスタと、ベクトルロード命令に応答してベクトルデータのそれぞれ連続する要素をメモリからベクトルレジスタに連続的にロードするベクトルロード機能と、ベクトルストア命令に応答してベクトルデータのそれぞれ連続する要素をベクトルレジスタからメモリに連続的にストアするベクトルストア機能と、ベクトル演算命令に応答してベクトルレジスタに格納されたベクトルデータのそれぞれ連続する要素について同一の演算を繰り返し実行するベクトル演算機能とを有しており、これらの機能を用いてベクトルデータのロード，演算，ストアをそれぞれパイプライン的に高速に実行する。
【０００３】
ベクトル処理プロセッサはさらに、連鎖実行機能、いわゆるチェイニング機能によって、あるベクトル演算命令とその演算結果に対する別のベクトル演算命令とを並列に実行することにより、ベクトル処理のさらなる高速化を実現している。チェイニングとは、あるベクトル演算命令の演算結果が後続のベクトル演算命令の被演算データである場合に、先行命令の完了を待つことなく、最初の要素の演算結果が得られた直後から後続の命令を実行することにより、ベクトルデータの各要素に対する演算を連鎖的に実行するものである。しかしながら、このチェイニング機能では後続の命令の実行タイミングが最初の要素の演算結果が得られた時点でしか決まらないため、先行命令の実行結果が連続して得られることが保証されている場合にのみ使用でき、データ読み出しタイミングが保証されないメモリアクセスを伴うベクトルロード命令には使用できなかった。
【０００４】
このようなチェイニングの問題点を解決し、ベクトル処理の一層の高速化を実現するために、後続の命令の実行タイミングを各要素毎に判定してチェイニングを動的に行う新たなチェイニングが提案されている。この動的なチェイニングによれば、ベクトルロード命令やベクトル演算命令を実行中、どの要素までロードまたは演算が完了したかをポインタやフラグによって逐次明示し、このポインタまたはフラグを参照して後続のベクトル演算命令またはベクトルストア命令の実行タイミングを各要素毎に判定して動的に実行するので、ベクトルロード命令を実行中にメモリアクセス競合などによってロード遅延が不規則に生じる場合でもチェイニングが可能になり、ベクトル処理のさらなる高速化を実現できる。なお、この種の装置として関連するものには例えば特許第1448566号，同2577865号，特開平8−202687号などが挙げられる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した動的なチェイニングは、メモリアクセス競合などによってベクトルデータのある要素のロード遅延が生じた場合、後続のベクトル演算命令やベクトルストア命令をこの要素の処理の直前で一時的に停止させ、同要素のロード完了後に再開させることにより、データ読み出しタイミングが保証されないメモリアクセスを伴うベクトルロード命令のチェイニングを可能にした。しかしながら、ロード遅延によって後続のベクトル演算命令やベクトルストア命令が停止してしまう点がベクトル処理プロセッサおよびシステムのさらなる高速化の障害となることは明白である。
【０００６】
本発明の目的は、従来技術の問題点を克服し、ベクトル処理命令の動的なチェイニングにおいてロード遅延によって生じる処理停止時間を低減し、ベクトル処理のさらなる高速化を実現するベクトル処理プロセッサおよびシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためのデータ処理システムは、データ処理プロセッサ，メモリ部又は、データ処理プロセッサ，スイッチ部，メモリ部とを有し、それぞれ次のような特徴を有している。
【０００８】
データ処理プロセッサは、演算処理を高速に実行するために複数のデータを格納する領域と領域毎にデータが格納されたか否かを示す情報を格納する領域とを有するレジスタを有している。また、このレジスタにデータを格納するため、レジスタに格納するデータを読み込むためのアドレス情報を出力するデータ入力部を有している。このアドレス情報には、少なくともメモリのアドレス，個々のデータを識別する識別情報，送信元のプロセッサを示す識別情報、あるいはこれらを意味する情報が含まれる。
【０００９】
また、レジスタに記憶された任意のデータについて演算を行うようにするため、演算命令とレジスタに記憶された情報に基づいてレジスタから演算すべきデータを読み出して演算部へ送る制御部を有している。
【００１０】
また、任意に演算結果を外部へ出力するために、複数のデータを格納する領域と領域毎に格納されたデータが演算結果であるか否かを示す情報を格納する領域とを有するレジスタ、レジスタに記憶された情報に基づいてレジスタに格納された演算結果を読み出してアドレス情報とともに出力するデータ出力部とを有している。
【００１１】
スイッチ部（調停部）は、１つ又は複数のプロセッサと１つ又は複数のメモリとの間での高率よくアクセスを実行するためにメモリの状態とプロセッサからのアドレス情報に基づいて、このアドレス情報を転送すべきタイミングを決定する。これは、転送可能なメモリへ転送すべきアドレス情報を転送することによって実現する。
【００１２】
また、複数のプロセッサと複数のメモリとの間で高率よくアクセスを実行するために、プロセッサからメモリへアドレス情報を転送するアドレス情報転送部とメモリからプロセッサへデータを転送するデータ転送部とを有している。
【００１３】
メモリ部は、他のメモリとの間で高率よくアクセスがされるように、アクセス情報を受け入れることができるか否かの情報を出力する。また、データを出力するときにアクセス情報に含まれる情報をデータに付加して出力する。
【００１４】
また、上記目的を達成するためのデータ処理システムにおいて、データ処理プロセッサは返送先情報とアドレスとを出力し、メモリはアドレスに基づいて読み出したデータと返送先情報とを出力することで高速にデータ処理を実行することができる。
【００１５】
更に、１つ又は複数のメモリと１つ又はプロセッサとの間に接続され、プロセッサから出力されたアドレス情報とメモリから出力される信号に基づいて、メモリへアドレス情報を出力するタイミングを決定するスイッチ部によってデータ処理システムを構成することによりデータ処理の高率を向上させることができる。
【００１６】
また、ベクトルを構成する複数のデータについて同一の演算を繰り返し実行する複数のベクトル処理プロセッサと、実行すべき命令がベクトル処理命令の場合に、いずれかのベクトル処理プロセッサを選択し、選択されたベクトル処理プロセッサにベクトル処理命令を転送するプロセッサとを有するデータ処理システムを構成することにより、処理を分散させることができるので高率よく処理を行うことができる。
【００１７】
また、複数のデータ処理装置が接続されて構成されるデータ処理システムであって、それぞれのデータ処理装置は、データ処理装置間のデータの転送を行う通信部と、データを格納するメモリと、メモリから読み出したデータの演算を行うプロセッサとを有し、プロセッサは、処理すべきデータに対する返送先情報をアドレスとともに出力し、メモリはアドレスに基づいて読み出したデータと返送先情報とを出力するデータ処理システムを構成することによって、効率の良い大規模なデータ処理システムを構成することができる。
【発明の効果】
【００１８】
本発明によれば、高速に演算処理を行うデータ処理システムを提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明にかかる実施例について図面を参照して説明する。
【００２０】
図８に、本発明にかかるデータ処理システムの第１の構成図を示す。
【００２１】
このデータ処理システムは、プログラムの命令解読とスカラ命令を実行するスカラ処理部６と、ベクトル処理を実行するベクトル処理部１と、データを格納するメモリ部８と、スカラ処理部６およびベクトル処理部１をメモリ部８と接続するスイッチ部７とを有して構成される。本実施例では、ベクトルを構成する要素であるデータの集合をベクトルデータとして以下説明する。このスカラ処理部６，ベクトル処理部１，メモリ格納部８，スイッチ部７は、それぞれ別々の半導体集積回路で構成されたものであっても良いが、１つの半導体集積回路で構成すればデータを転送するための信号線を多くとることができ、チップ間でのデータ転送のためのドライバを不要とすることができるのでより高速で、高率の良いデータ処理システムを構成することができる。
【００２２】
更に、スカラ処理部６，ベクトル処理部１を１つの半導体集積回路で、またスカラ処理部６，ベクトル処理部１，スイッチ部７とを１つの半導体集積回路で構成すると、メモリ部８の構成を自由に変えることが可能となる。つまり、メモリ部８の容量を自由に変えることができるのでより汎用性が高くなる。
【００２３】
スカラ処理部６は、プログラムの命令を解読してそれがスカラ命令であれば本命令を実行し、ベクトル命令であればベクトル処理部１にこのベクトル命令６１を送信する。
【００２４】
ベクトル処理部１は、スカラ処理部６から受信したベクトル命令６１を解読する命令解読回路２と、ベクトルデータのそれぞれ連続する要素ついて同一の演算を繰り返し実行する演算ユニット１０と、演算ユニット１０に供給するベクトルデータや演算ユニット１０が出力する演算結果を一時的に格納するレジスタを複数備えるレジスタ機構２０と、メモリ部８からベクトルデータを読み出してレジスタ機構２０のレジスタに書き込むロードユニットＶＬＵ１(３０)およびＶＬＵ２(４０)と、レジスタ機構２０のレジスタからベクトルデータを読み出してメモリ部８に書き込むストアユニットＶＳＵ(５０)とを有して構成される。
【００２５】
命令解読回路２は、スカラ処理部６からベクトル命令６１を受信すると、同命令コードとオペランドを解読して同命令を実行するように演算ユニット１０，レジスタ機構２０，ロードユニットＶＬＵ１(３０)およびＶＬＵ２(４０)，ストアユニットＶＳＵ(５０)に指令を出す。
【００２６】
演算ユニット１０は、命令解読回路２からベクトル演算命令実行の指令を受けると、同ベクトル演算命令のオペランドで指定されたレジスタ機構２０の１つまたは複数のレジスタからベクトルデータを要素毎に読み出し、そしてベクトル演算命令の命令コードで指定された演算を要素毎にパイプライン的に施し、その演算結果をベクトル演算命令のオペランドで指定されたレジスタ機構２０のレジスタに要素毎に書き込む。
【００２７】
レジスタ機構２０は、最大ｎ個の要素からなるベクトルデータを格納可能なレジスタを複数有しており、演算対象のベクトルデータや演算結果のベクトルデータを一時的に格納する。
【００２８】
ロードユニットＶＬＵ１(３０)およびＶＬＵ２(４０)はそれぞれ、命令解読回路２からロード命令実行の指令を受けると、ロード命令のオペランドで指定されたメモリ部８の領域にあるベクトルデータを読み出し、そしてロード命令のオペランドで指定されたレジスタ機構２０のレジスタに書き込む。このロードでは、ベクトルデータのリード要求を要素単位で個別にメモリ部８に送信し、そして読み出した各要素のデータをレジスタ機構２０のレジスタに書き込む動作を全ての要素に対して繰り返し実行する。本実施例ではＶＬＵ１(３０)とＶＬＵ２(４０)によって２つのベクトルロード命令を同時に実行することができるが、さらにロードユニットの数を増やして、より多くのベクトルロード命令を同時に実行するようにしても良いし、逆にロードユニットを１つだけにして、ベクトルロード命令を１つずつ実行する代りに回路規模を減らすようにしても良い。
【００２９】
ストアユニットＶＳＵ(５０)は、命令解読回路２からベクトルストア命令実行の指令を受けると、ベクトルストア命令のオペランドで指定されたレジスタ機構２０のレジスタに格納されているベクトルデータを読み出し、そしてベクトルストア命令のオペランドで指定されたメモリ部８の領域に書き戻す。ストアユニットによるベクトルデータのストアでは、レジスタ機構２０のレジスタからベクトルデータを要素毎に読み出して各要素のライト要求をそれぞれメモリ部８に送信し、そして各要素をメモリ部８に書き込む。本実施例ではストアユニットＶＳＵ(５０)によって１つのベクトルストア命令を実行することができるが、さらにストアユニットの数を増やして、複数のベクトルストア命令を同時に実行するようにしてもよい。
【００３０】
メモリ部８は、複数のメモリモジュール(ＭＭ０，ＭＭ１,…,ＭＭＪ−１)８０を有してインタリーブを実現する。各メモリモジュールは各々独立にライト要求，リード要求を受信してメモリアクセスを実行する。これにより、あるメモリモジュールがアクセス中であっても他のメモリモジュールへのアクセスは実行可能になる。
【００３１】
スイッチ部７は、スカラ処理部６およびベクトル処理部１のＶＬＵ１(３０)，ＶＬＵ２(４０)，ＶＳＵ(５０)からメモリ部８の各メモリモジュール８０へのアクセス経路を確立する。スイッチ部７は、スカラ処理部６，ベクトル処理部１のＶＬＵ１(３０)，ＶＬＵ２(４０)，ＶＳＵ(５０)がそれぞれ出力するメモリアクセス要求６２，３１，４１，５１をアクセス先のメモリモジュール８０に送信し（８１−０，８１−１，８１−２，…，８１−ｊ−１）、各メモリモジュール８０がそれぞれ出力するリードデータ８２−０，８２−１，８２−２，…，８２−ｊ−１をアクセス元のスカラ処理部６，ベクトル処理部１の
ＶＬＵ１(３０)，ＶＬＵ２(４０)に送信する（６３，３２，４２）。
【００３２】
図１に、本発明にかかるレジスタ機構２０と演算ユニット１０の詳細構成を示す。
【００３３】
レジスタ機構２０は、複数のレジスタからなるレジスタファイル２００を有しており、各レジスタはベクトルデータの要素をｎ個まで記憶可能である。本図ではレジスタを（VE(ｉ，０)，ＶＥ(ｉ，１)，ＶＥ(ｉ，２),…,ＶＥ(ｉ，ｊ)，…，ＶＥ(ｉ，ｎ−１)）のように表記しており、ＶＥ(ｉ，ｊ)は要素を示し、括弧内のｉはレジスタ番号、ｊは要素番号を示している。レジスタファイル２００の各レジスタの個々の要素はレジスタ番号と要素番号でアドレスされ（以下、要素アドレスと呼ぶ）、３つのライトポート２０１，202，２０６から各々独立にベクトルデータを要素単位で書き込むことが可能であり、さらに、３つのリードポート２０３，２０４，２０５から各々独立にベクトルデータを要素単位で読み出すことが可能である。
【００３４】
ライトポート２０１は、ロードユニットＶＬＵ１(３０)からレジスタライトコマンド／要素アドレス３１０とデータ３２０を受信すると、同要素アドレスで指定されたレジスタの要素にデータを書き込む。ライトポート２０２も同様に、ロードユニットＶＬＵ２
(４０)からレジスタライトコマンド／要素アドレス４１０とデータ４２０を受信すると、同要素アドレスで指定されたレジスタの要素にデータを書き込む。ライトポート２０６も同様に、演算ユニット１０からレジスタライトコマンド／要素アドレス１０２０とデータ１０３を受信すると、同要素アドレスで指定されたレジスタの要素にデータを書き込む。
【００３５】
また、リードポート２０４および２０５は、演算ユニット１０からレジスタリードコマンド／要素番号１２４を受信すると、同要素番号と、図示していないが命令解読回路２が指示する演算対象のレジスタ番号とでそれぞれ指定されたレジスタの要素からデータを読み出し、演算ユニット１０に読み出したデータ２０８，２０９を出力する。リードポート２０３は、ストアユニット(ＶＳＵ)５０からのレジスタリードコマンド／要素アドレス
５１０を受信すると、同要素アドレスで指定されたレジスタの要素からデータを読み出し、ストアユニット（ＶＳＵ）５０に読み出したデータ２０７を出力する。
【００３６】
レジスタ機構２０はさらに、レジスタファイル２００の各レジスタの各要素毎にデータが書き込まれたことを示すライト完了フラグ２２０と、ライト完了フラグ２２０のセット／リセットを実行するフラグ制御回路２２１と、ライト完了フラグ２２０のセット／リセット状態を参照するためのフラグ参照回路２２２とを有している。
【００３７】
ライト完了フラグ２２０はレジスタファイル２００の各レジスタの各要素にそれぞれ対応する１ビットのフラグであり、各フラグのセット状態は論理値１，リセット状態は論理値０である。本図ではライト完了フラグをＷ(ｉ,ｊ）のように表記しており、括弧内のｉは対応するレジスタのレジスタ番号、ｊは対応する要素の要素番号を示している。
【００３８】
フラグ制御回路２２１は、命令解読回路２の指令信号３に従い、ベクトル命令実行においてベクトルデータが書き込まれるレジスタ、例えば、データロード命令におけるロード・データの格納先レジスタや演算命令における演算結果の格納先レジスタ、の全ての要素に対応するライト完了フラグ２２０を予めリセットする。そして、演算ユニット１０,ロードユニットＶＬＵ１(３０),ＶＬＵ２(４０)のそれぞれからレジスタライトコマンド／要素アドレス１０２，３１０，４１０を受信すると、同要素アドレスで指定されたレジスタの要素に対応するライト完了フラグ２２０をセットする。すなわち、演算ユニット１０，ロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)がレジスタファイル２００のあるレジスタの要素にデータを書き込むと、同要素に対応するライト完了フラグ２２０がセットされることになる。
【００３９】
フラグ参照回路２２２は、命令解読回路２の指令信号３に従い、ベクトル命令実行においてベクトルデータが読み出されるレジスタ、例えば、ベクトルストア命令におけるストア対象のレジスタやベクトル演算命令における演算対象のレジスタの全ての要素に対応するライト完了フラグ２２０の値を演算ユニット１０やストアユニット(ＶＳＵ)５０に常時出力する。実行するベクトル命令がベクトル演算命令でかつオペランドで指定された演算対象のレジスタが１つであれば、同レジスタの全ての要素に対応するライト完了フラグ
２２０の値をライト完了フラグ値２２４として演算ユニット１０に出力し、実行するベクトル命令が演算命令でかつオペランドで指定された演算対象のレジスタが２つであれば、２つのレジスタの全ての要素に対応するライト完了フラグ２２０の値をそれぞれライト完了フラグ値２２４，２２５として演算ユニット１０に出力し、実行するベクトル命令がストア命令であれば、同レジスタの全ての要素に対応するライト完了フラグ２２０の値をライト完了フラグ値２２３としてストアユニット(ＶＳＵ)５０に出力する。
【００４０】
演算ユニット１０は、１つまたは２つのベクトルデータを要素毎にパイプライン的に演算してその結果をベクトルデータとして出力する演算パイプライン１００と、レジスタ機構２０から演算パイプライン１００へのベクトルデータの供給を制御するリード同期回路１２０と、演算パイプライン１００にベクトルデータの各要素が供給された時に同時にそれらの要素アドレスが入力され、入力された要素アドレスを演算に要する時間だけ遅延させて演算結果の出力と同時に出力する遅延回路１０１とを有して構成される。
【００４１】
ベクトル演算パイプライン１００は、整数演算，浮動小数点演算，論理演算などの各種演算を実行する１または複数の演算パイプラインを有し、レジスタファイル２００から供給されるベクトルデータの演算とレジスタファイル２００への演算結果の書き込みを複数のステージに分割して要素単位でパイプライン的に実行する。２つ以上のベクトルデータに対する演算、例えば２つのベクトルデータの和算などは、各ベクトルの要素番号が同一である要素同士の演算をそれぞれ独立に実行する。演算パイプライン１００は、命令解読回路２の指令信号３に従い、レジスタファイル２００から供給される１つまたは２つのベクトルデータ２０８，２０９に命令コードで指定された演算を要素毎に施し、演算で決まるパイプライン・ステージ数だけ経過後にその演算結果１０３を要素毎に出力する。
【００４２】
リード同期回路１２０は、命令解読回路２の指令信号３に従い、オペランドで指定されたレジスタファイル２００のレジスタ上のベクトルデータを要素単位で読み出して演算パイプライン１００に供給する制御を実行する。オペランドで指定された演算対象のレジスタが１つであれば、ライト完了フラグ値２２４を参照して書き込みが完了した要素から１つずつ選択し、同要素の読み出し要求コマンドおよびアドレス１２４をレジスタ機構２０のリードポート２０４に送信する動作を、全要素の読み出しが完了するまで繰り返し実行する。また、演算対象のレジスタが２つであれば、ライト完了フラグ値２２４および225を参照して両レジスタの同一要素番号のいずれも書き込みが完了した要素から１組ずつ選択し、同要素のレジスタリードコマンド／要素番号１２４をレジスタ機構２０のリードポート２０４および２０５に出力する動作を、全要素の読み出しが完了するまで繰り返し実行する。リードポート２０４および２０５は、リード同期回路１２０からレジスタリードコマンド／要素番号１２４を受信すると、それぞれ命令解読回路２から指示された演算対象のレジスタから同要素番号１２４で指定された要素のデータ２０８，２０９を読み出して演算パイプライン１００に供給する。これにより、演算対象のベクトルデータの各要素はそれらの要素番号の順番に関係なく、同一要素番号の要素が全てレジスタファイルに格納されて演算可能な状態になったものから順次演算パイプライン１００に供給されることになる。
【００４３】
遅延回路１０１は、リード同期回路１２０がリードポート２０４，２０５に送信した要素番号１２４、即ち演算パイプライン１００に供給された要素データの要素番号と、図示していないが命令解読回路２が指示する演算結果格納先のレジスタ番号とからなる要素アドレスが入力され、そして演算に要する時間と同じ時間だけ同要素番号を遅延させてレジスタライトコマンドとともに出力する（１０２）。このため、演算パイプライン１００が演算結果１０３を出力するとともに、遅延回路１０１が演算結果の格納先である要素アドレスとレジスタライトコマンド１０２を出力することになる。なお、遅延回路１０１による要素アドレス１０２の出力遅延時間を演算時間よりも一定時間だけ短くし、演算結果よりも先行してレジスタライトコマンド／要素アドレス１０２を出力するようにして、レジスタファイル２００への演算結果の書き込み時間を短縮してもよい。
【００４４】
以上のレジスタ機構２０と演算ユニット１０では、演算パイプラインに供給されるベクトルデータが１または２としているが、３つ以上のベクトルデータに対するベクトル演算、例えば２つのベクトルデータの積算およびその演算結果と第３のベクトルデータとの和算を同時に実行する３ベクトルデータの積和演算などを実行できるように、レジスタファイル２００にリードポートをさらに追加し、フラグ参照回路２２２からリード同期回路
１２０へのライト完了フラグ値の出力数をさらに増やし、リード同期回路１２０が３つ以上の演算対象ベクトルレジスタのライト完了フラグ値を参照してレジスタリードコマンド／要素番号１２４をレジスタファイル２００の３つ以上のリードポートに出力するようにして、ベクトル演算パイプライン１００に３つ以上のベクトルデータを供給できるようにしてもよい。
【００４５】
図２に、本発明にかかるリード同期回路１２０の詳細構成を示す。リード同期回路120は、演算対象のレジスタの各要素毎に書き込みが完了してかつ読み出しが未完了であるかを判定する論理積回路１２１と、書き込みが完了してかつ読み出しが未完了である要素の中から１つを選択してその要素番号を出力する要素番号選択回路１２２と、レジスタから読み出して演算パイプライン１００に供給したことを要素毎に示すリード完了フラグ123とを有して構成される。
【００４６】
論理積回路１２１は、命令解読回路２の指令信号３に従い、演算対象のレジスタが１つであれば、各要素毎にライト完了フラグ値２２４とリード完了フラグ１２３の論理反転値１２５との論理積の値を出力し、演算対象のレジスタが２つであれば、各要素毎にライト完了フラグ値２２４および２２５と、リード完了フラグ１２３の論理反転値１２５との論理積の値を出力する。これにより、演算対象のレジスタの各要素毎に、要素番号が同一である全ての要素の書き込みが完了してかつ読み出しが未完了である場合は１が出力され、それ以外の場合には０が出力される。
【００４７】
要素番号選択回路１２２は、論理積回路１２１の各要素毎の出力を受信して、同出力値が１である要素、すなわち、要素番号が同一である全ての要素が書き込みが完了してかつ読み出しが未完了である要素の中から最小の要素番号を選択し、その要素のレジスタリードコマンド／要素番号１２４を出力する。
【００４８】
リード完了フラグ１２３は、命令解読回路２の指令信号３に従い、ベクトル演算の開始前に要素番号０から命令で指定された処理対象の要素数と同数のフラグをリセットし、残りのフラグをセットする。そして、要素番号選択回路１２２がレジスタリードコマンド／要素番号１２４を出力する毎に、その要素番号に対応するフラグをセットする。このため、読み出しが完了した要素は要素番号選択回路１２２における選択候補から逐次はずされ、最終的に全ての演算対象要素が読み出されてリード完了フラグ１２３が全てセットされると、要素番号選択回路１２２からの読み出し要求コマンドおよび要素番号１２４の出力は終了する。なお、リード完了フラグ１２３が全てセットされた時点は演算対象のベクトルレジスタのデータが全て演算パイプライン１００に供給された時点であり、同レジスタを解放することができ、また、同時点から演算によって決まる演算時間が経過した時点でベクトル演算が完了することになる。したがって、図示はしていないが、リード完了フラグ１２３が全てセットされた時点、あるいはそれから演算時間が経過した時点にリード同期回路１２０が命令解読回路２またはスカラ処理部６にベクトル演算命令の実行完了を通知するようにしてもよい。
【００４９】
以上のリード同期回路１２０によれば、演算対象のレジスタに要素が書き込まれて同一要素番号の全ての要素の書き込み完了フラグがセットされると、直ちにそれらの要素を演算パイプライン１００に供給されるので、演算対象のベクトルデータの各要素はそれらの要素番号の順番に関係なく、同一要素番号の要素が全てレジスタファイルに格納されて演算可能な状態になったものから順次演算パイプライン１００に供給されることになる。
【００５０】
図３に、本発明にかかるロードユニットＶＬＵ１(３０)の詳細構成を示す。なお、ロードユニットＶＬＵ２(４０)も同じ構成である。
【００５１】
ロードユニットＶＬＵ１(３０)は、ロード元のメモリの先頭アドレスと、ストライド値と、要素数と、ロード先のベクトルレジスタ番号をそれぞれ記憶するメモリアドレスバッファ(adr)３０３，ストライド値バッファ(std)３０４，要素数バッファ (num)３０５，レジスタ番号バッファ (reg)３０６と、メモリへのデータリードを制御するメモリリード制御回路３０２と、レジスタへのデータライトを制御するレジスタライト制御回路３０１と、メモリから読み出したデータを一時的に格納するデータバッファ３０８と、同データのロード先である要素番号を一時的に格納する要素番号バッファ３０７とを有して構成される。
【００５２】
ロードユニットＶＬＵ１(３０)は、命令解読回路２の指令信号３に従ってベクトルロード命令を実行する。ロードユニットＶＬＵ１(３０)は、指令信号３で指示されたロード対象のベクトルデータが記憶されているメモリ上の先頭アドレスと、ストライド値と、要素数と、ロード先のレジスタ番号をそれぞれメモリアドレスバッファ３０３，ストライド値バッファ３０４，要素数バッファ３０５，レジスタ番号バッファ３０６に記憶し、そしてメモリリード制御回路３０２を起動する。
【００５３】
メモリリード制御回路３０２はメモリに対してベクトルデータの読み出しを要素単位で実行する。メモリリード制御回路３０２は、メモリアドレスバッファ３０３の値、すなわちベクトルデータの先頭アドレスをリードアドレスとしたメモリリードコマンド３１を出力し、続いて同リードアドレスにストライド値バッファ３０４の値を加算した値をリードアドレスとしたメモリリードコマンド３１を出力し、続いて同リードアドレスにストライド値バッファ３０４の値をさらに加算した値をリードアドレスとしたメモリリードコマンド３１を出力する、という動作を要素数バッファ３０５の値と同一回数だけ繰り返し実行してベクトルデータの各要素の読み出しをメモリに要求する。メモリリード制御回路302はさらに、０，１，２，…と連続した番号を各々のメモリリードコマンドに出力順に付加してこれを各メモリリードコマンドに対応するリードデータの格納先要素番号とし、さらにメモリリード要求元がロードユニットＶＬＵ１(３０)であることを明示する同一のアクセス元番号を各々のメモリリードコマンドに付加する。メモリはこのメモリリードコマンドを受信すると、リードアドレスで指定されたデータを読み出し、これにメモリリードコマンドの要素番号とアクセス元番号を付加してロードユニットＶＬＵ１(３０)に返送する。メモリリード制御回路３０２は受信したリードデータ３２のアクセス元番号をチェックして、自己のメモリリードコマンドに対するリードデータであると判定された場合、そのデータと要素番号をそれぞれデータバッファ３０８と要素番号バッファ３０７に格納し、レジスタライト制御回路３０１にデータ受信信号３０９を送信してリードデータのレジスタへの書き込みを指示する。
【００５４】
レジスタライト制御回路３０１はレジスタファイル２００のレジスタに対してメモリから読み出したベクトルデータの書き込みを要素単位で実行する。レジスタライト制御回路３０１は、メモリリード制御回路３０２からデータ受信信号３０９を受信すると、レジスタ番号バッファ３０６が示すロード先のレジスタ番号と要素番号バッファ３０７に格納された要素番号からを要素アドレスとするレジスタライトコマンド３１０を出力するとともに、データバッファ３０８に格納されたデータ３２０をレジスタファイル２００のライトポート２０１に出力する。
【００５５】
このように、ロードユニットＶＬＵ１(３０)において、メモリからベクトルデータを要素単位で読み出す時にそれらのメモリリードコマンドに要素番号を付加してメモリに送信し、メモリが読み出したデータにその要素番号を付加してロードユニットＶＬＵ１(３０)に返送するようにすれば、ロードユニットＶＬＵ１(３０)) によるメモリリード要求の順番とメモリによるリードデータ返送の順番が一致しなくても、ロードユニットＶＬＵ１
(３０)はメモリから返送されたリードデータをレジスタの正しい要素番号に書き込むことができる。
【００５６】
図４に、本発明にかかるストアユニットＶＳＵ(５０)の詳細構成を示す。
【００５７】
ストアユニットＶＳＵ(５０)は、ストア先であるメモリの先頭アドレスと、ストライド値と、要素数と、ストア元のベクトルレジスタ番号をそれぞれ記憶するメモリアドレスバッファ(adr)５０３，ストライド値バッファ(std)５０４，要素数バッファ (num)５０５，レジスタ番号バッファ (reg)５０６と、メモリへのデータライトを制御するメモリライト制御回路５０２と、レジスタからのデータリードを制御するレジスタリード制御回路501と、リード同期回路５２０と、レジスタから読み出したデータを一時的に格納するデータバッファ５０８とを有して構成される。
【００５８】
ストアユニットＶＳＵ(５０)は命令解読回路２の指令信号３に従ってベクトルストア命令を実行する。ストアユニットＶＳＵ(５０)は、指令信号３で指定されたメモリ上のストア先頭アドレスと、ストライド値と、要素数と、ストア対象のレジスタ番号をそれぞれメモリアドレスバッファ５０３，ストライド値バッファ５０４，要素数バッファ５０５，レジスタ番号バッファ５０６に記憶し、そしてリード同期回路５２０，レジスタリード制御回路５０１，メモリライト制御回路５０２を起動する。
【００５９】
リード同期回路５２０は図２で説明した演算パイプライン１００のリード同期回路120と同様の構成であるが、常に１つのレジスタのライト完了フラグのみを参照する点だけがリード同期回路１２０と異なり、図５のような構成となる。リード同期回路５２０は、ベクトルストアの開始前にリード完了フラグ５２３の要素番号０から命令で指定された処理対象の要素数と同数のフラグをリセットし、残りのフラグをセットする。そして、要素番号選択回路５２２によってライト完了フラグ値２２３とリード完了フラグ５２３を参照して書き込み完了かつ読み出し未完了の要素を１つ選択し、その要素番号５２４をレジスタリード制御回路５０１に出力するとともに、その要素番号に対応するリード完了フラグ
５２３をセットする。このため、読み出しが完了した要素は要素番号選択回路５２２における選択候補から逐次はずされ、最終的に全ての演算対象要素が読み出されてリード完了フラグ５２３が全てセットされると、要素番号選択回路５２２からの読み出し要求コマンドおよび要素番号５２４の出力は終了する。なお、リード完了フラグ５２３が全てセットされた時点はストア対象のレジスタのデータが全てストアユニットＶＳＵ(５０)に供給された時点であり、同レジスタを解放することができる。したがって、図示はしていないが、リード完了フラグ５２３が全てセットされた時点、あるいはそれから演算時間が経過した時点にリード同期回路５２０が命令解読回路２またはスカラ処理部６にベクトルストア命令の実行完了を通知するようにしてもよい。
【００６０】
レジスタリード制御回路５０１は、リード同期回路５２０による要素番号５２４の出力に応答して、指定されたレジスタの該当要素の読み出しを実行する。レジスタリード制御回路５０１は、リード同期回路５２０から要素番号５２４を受信すると、レジスタ番号バッファ５０６の値、すなわちストア対象のレジスタ番号と要素番号５２４で生成される要素アドレスおよびレジスタリードコマンド５１０をレジスタファイル２００のリードポート２０３に出力する。そしてリードポート２０３から返送されたデータをデータバッファ５０８に格納し、メモリライト制御回路５０２にデータ受信信号５０９を送信してデータの着信を通知する。
【００６１】
メモリライト制御回路５０２はメモリに対してベクトルデータの書き込みを要素単位で実行する。メモリライト制御回路５０２は、レジスタリード制御回路５０１からの最初のデータ受信信号５０９を受信すると、メモリアドレスバッファ５０３の値、すなわちベクトルデータの先頭アドレスをライトアドレスとしたメモリライトコマンド５１−１とデータバッファ５０８に格納されたデータ５１−２を出力し、次のデータ受信信号５０９を受信すると、同ライトアドレスにストライド値バッファ５０４の値を加算した値をライトアドレスとしたメモリライトコマンド５１−１とデータバッファ５０８に格納されたデータ５１−２を出力し、さらに次のデータ受信信号５０９を受信すると、同ライトアドレスにストライド値バッファ５０４の値をさらに加算した値をライトアドレスとしたメモリライトコマンド５１−１とデータバッファ５０８に格納されたデータ５１−２を出力する、という動作を要素数バッファ５０５の値と同一回数だけ繰り返し実行してベクトルデータの各要素の書き込みをメモリに要求する。このように、ストアユニットＶＳＵ(５０)において、ストア対象のレジスタからベクトルデータを要素単位で読み出す時に、それらのライト完了フラグをリード同期回路５２０でチェックし、書き込み完了フラグがセットされると直ちにその要素をレジスタから読み出してメモリにストアするので、演算ユニット１０の演算パイプライン１００が演算結果をレジスタに要素単位に書き込むと、直ちにそれらの演算結果をメモリにストアでき、しかも、ストアする順番は要素番号に拘束されることはない。
【００６２】
図６に、本発明にかかるメモリ部８のメモリモジュール（ＭＭ０，ＭＭ１，…，ＭＭＪ−１）８０の詳細構成を示す。
【００６３】
メモリモジュール８０は、スイッチ部７から受信したメモリリード／ライトコマンド，アクセス先のアドレス，ライトデータ，要素番号，アクセス元番号の組８１−０を１つまたは複数格納するアクセス要求バッファ８０２と、リードデータ，要素番号，アクセス元番号の組を１つまたは複数格納するアクセス返送バッファ８０５と、１つまたは複数のメモリバンク８０１と、メモリバンクへのアクセスを制御するバンク制御回路８０３と、リードデータの返送を制御するデータ返送制御回路８０４で構成される。
【００６４】
メモリモジュール８０はアクセス要求バッファ８０２にスイッチ部７から受信したメモリリード／ライトコマンドおよびアクセス先アドレス８０２１，要素番号とアクセス元番号８０２２，ライトデータ８０２３をそのアクセスが完了するまで一時的に格納し、アクセス要求バッファ８０２の空き数が一定数以下になったときに、バッファの空き数が再び一定数を越えるようになるまでスイッチ部７に対してビジー信号８０６を出力する。
【００６５】
メモリバンク８０１はそれぞれ、一度に１つのメモリアクセスしか実行できない。このため同一のメモリバンクに対して複数のメモリアクセスを実行しようとした場合、逐次実行することになる。一方、異なるメモリバンクに対して複数のメモリアクセスを実行しようとした場合、それらは同時に実行可能である。そこで、バンク制御回路８０３は、アクセス要求バッファ８０２に格納されたメモリアクセス要求の中から、メモリアクセスが実行されていないメモリバンク８０１に対するものを選択して同バンクにメモリリード／ライトコマンドおよびアクセス先アドレス８０３１と、ライトアクセスであればライトデータ８０３３を送信する。このメモリアクセス要求の選択はアクセス要求バッファ８０２に格納した順序に拘束されないが、選択可能なメモリアクセス要求が複数存在する場合はバッファに格納した順序に選択するのが好ましい。なお、メモリアクセス要求がリードアクセスであれば、アクセス返送バッファ８０５に空きがあることも実行条件に加わる。リードアクセスを実行する際は、予めアクセス返送バッファ８０５の空きを１つ確保しておき、メモリバンク８０１から読み出したリードデータ８０１１をこのアクセス返送バッファ８０５に格納するとともに、アクセス要求バッファ８０２に格納されていた同リードアクセスの要素番号およびアクセス元番号８０３２もアクセス返送バッファ８０５に格納する。
【００６６】
データ返送制御回路８０４は、アクセス返送バッファ８０５に格納されたリードデータに要素番号とアクセス元番号を付加して出力する（８２−０）。データ返送制御回路804は基本的にアクセス返送バッファ７２０に格納された順番にリードデータを返送するが、例えば、返送先の各ユニットが返送データを受信できるか否かを示す状態信号線を返送先の各ユニットとの間に追加し、返送データを受信できるユニットに対して優先的に返送するようにしてもよい。
【００６７】
図７に、本発明にかかるスイッチ部７の詳細構成を示す。
【００６８】
スイッチ部７は、スカラ処理部６とベクトル処理部１がそれぞれ出力するメモリアクセス要求をメモリ部８のアクセス先のメモリモジュール８０に転送するアクセス要求転送ユニット７１と、メモリ部８の各メモリモジュール８０がそれぞれ出力するリードデータを返送先のスカラ処理部６やベクトル処理部１に転送するリードデータ転送ユニット７５の２つに大別できる。
【００６９】
アクセス要求転送ユニット７１は、スカラ処理部６，ベクトル処理部１のロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)，ストアユニットＶＳＵ(５０)の各々から受信したメモリリード／ライトコマンド，アクセス先アドレス，ライトデータ，要素番号，アクセス元番号の組６２，３１，４１，５１をそれぞれ１つまたは複数格納するアクセス要求バッファ７１３，７１４，７１５，７１６と、転送経路を形成するクロスバスイッチ７１１と、クロスバスイッチ７１１を制御する調停回路７１０とを有して構成される。
【００７０】
クロスバスイッチ７１１は、４入力×Ｊ出力（Ｊはメモリ部８のメモリモジュール数）で、任意の入出力間を接続できる。なお、各入出力はアクセス要求のメモリリード／ライトコマンド，アクセス先のアドレス，ライトデータ，要素番号，アクセス元番号を全て転送できるものである。なお、ライトデータ用の信号線と要素番号およびアクセス元番号用の信号線を共通にして、メモリライトコマンドを転送する際はライトデータを送信し、メモリリードコマンドを転送する際は要素番号およびアクセス元番号を送信するようにして、信号線を削減してもよい。
【００７１】
調停回路７１０は、アクセス要求バッファ７１３，７１４，７１５，７１６に格納された各アクセス要求のアクセス先アドレス７１７と各メモリモジュールのビジー信号８０６をチェックし、同一メモリモジュールへのアクセス要求が他になくかつ同モジュールのビジー信号８０６が出力されていないアクセス要求は、直ちにクロスバスイッチ７１０を操作して転送経路を形成してアクセス先のメモリモジュールに転送し、同一メモリモジュールへのアクセス要求が他に有りかつ同モジュールのビジー信号８０６が出力されていないアクセス要求は、所定の調停条件に従って１つのアクセス要求を選択し、クロスバスイッチ７１０を操作して転送経路を形成してアクセス先のメモリモジュールに転送する。
【００７２】
リードデータ転送ユニット７５は、アクセス要求転送ユニット７１に類似した構成であり、メモリ部８の各メモリモジュール８０の各々から受信したリードデータ，要素番号，アクセス元番号の組８２−０，８２−１，８２−２，…，８２−ｊ−１を１つまたは複数格納するアクセス返送バッファ７５３−０，７５３−１，７５３−２，…，７５３−ｊ−１と、転送経路を形成するクロスバスイッチ７５１と、クロスバスイッチ７５１を制御する調停回路７５０とを有して構成される。クロスバスイッチ７５１は、Ｊ入力×４出力
（Ｊはメモリ部８のメモリモジュール数）で、任意の入出力間を接続できる。なお、各入出力はリードデータ，要素番号，アクセス元番号を全て転送できるものである。
【００７３】
調停回路７５０は、アクセス要求バッファ７５３−０，７５３−１，７５３−２，…，７５３−ｊ−１に格納された各リードデータのアクセス元番号７５７をチェックし、同一アクセス元へ返送すべきリードデータが他にない場合は、直ちにクロスバスイッチ７５１を操作して転送経路を形成してアクセス元のスカラ処理部６，ベクトル処理部１のロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)のいずれかに転送し、同一アクセス元へ返送すべきリードデータが他に有る場合は、所定の調停条件に従って１つのリードデータを選択し、クロスバスイッチ７５１を操作して転送経路を形成してアクセス元のスカラ処理部６，ベクトル処理部１のロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)のいずれかに転送する。
【００７４】
このように、スイッチ部７を用いれば、メモリ部８へのアクセス要求送信とメモリ部８からのリードデータ返送をそれぞれアクセス要求転送ユニット７１とリードデータ転送ユニット７５によって独立に実行するので、アクセス要求転送とリードデータ返送が互いに干渉することがなく、さらに、アクセス要求転送ユニット７１とリードデータ転送ユニット７５はそれぞれ、アクセス元であるスカラ処理部６，ベクトル処理部１のロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)と、アクセス先であるメモリ部８の複数のメモリモジュール間を、アクセス元とアクセス先が異なる限り同時にアクセスを実行できるので、メモリアクセスをより効率良く実行できる。
【００７５】
更に、メモリ部８とスイッチ部７とを１つの半導体集積回路で構成することにより、スカラ処理部６又はベクトル処理部１からのアクセスに対して高速にデータを読み出すことが可能となる。また、メモリ８０の数が多い場合にメモリ部８だけで１つの半導体集積回路を構成するよりも、スイッチ部７とメモリ部８で１つの半導体集積回路を構成した方が端子数を削減することができ、回路規模を小さくすることができる。
【００７６】
図１８に、本発明にかかるデータ処理システムによるベクトル処理のタイムチャート例を示す。
【００７７】
本ベクトル処理は、まずロードユニットＶＬＵ１(３０)とＶＬＵ２(４０)によってそれぞれ１６要素のベクトルデータＡとベクトルデータＢをメモリ部８からロードし、次に演算ユニット１０によって２つののベクトルデータの演算を実行し、最後に演算結果をストアユニットＶＳＵ(５０)によってメモリ部８にストアするという処理である。本タイムチャート例では、ベクトル処理システムの第２の構成を前提とし、説明簡略化のために、ベクトル演算のパイプライン段数を４単位サイクルとし、メモリ部８のメモリモジュール数は８モジュールで各メモリモジュールのバンク数は１バンク、すなわちメモリ部８の総バンク数を８バンクとし、各バンクアクセスは４単位サイクルを要するものとして説明する。
【００７８】
ロードユニットＶＬＵ１(３０)とＶＬＵ２(４０)はそれぞれのベクトルロード命令に従って単位サイクル毎に要素１から要素１６までのデータリード要求コマンドを要素番号の順番でメモリ部８に同時に出力する。ロードユニットＶＬＵ１(３０)がロードするベクトルデータの各要素はメモリ部８のバンク０から１バンク置に格納され、ロードユニット
ＶＬＵ２(４０)がロードするベクトルデータの各要素はメモリ部８のバンク４から３バンク置に格納されているものとすると、２つのロードユニットによるデータリードはいくつかのバンクでアクセス競合を起こしてしまう。本例では、例えばベクトルデータＡの要素３とベクトルデータＢの要素３のリードがバンク２で競合してベクトルデータＢの要素３のリードが４単位サイクル遅れ、ベクトルＡの要素６がベクトルＢの要素４と競合してベクトルＡの要素６のリードが２単位サイクル遅れており、この他にも多数のアクセス競合が生じていくつかの要素のロードが遅れてしまう。しかしながら、本実施例によれば、ロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)はデータリード要求コマンドにそのリードデータの返送先を示すアクセス元番号と要素番号を付加してメモリ部８の各メモリモジュールに出力し、各メモリモジュールはリードデータにこのアクセス元番号と要素番号を付加してロードユニットＶＬＵ１(３０)，ＶＬＵ２(４０)に返送するので、アクセス競合によってロードが遅れてしまう要素を追い越して後続の要素をロードすることができる。これにより、本例において、ベクトルデータＢの要素３のロードを追い越して要素４および要素５のロードを実行し、また、ベクトルＡの要素６のロードを追い越して要素７のロードを実行する等、要素番号の順番に拘束されることなくベクトルデータのロードを効率良く実行できる。
【００７９】
このように、ロードユニットＶＬＵ１(３０)とＶＬＵ２(４０)はそれぞれベクトルデータＡおよびベクトルデータＢの各要素を要素番号の順番とは異なる順番でレジスタにロードするが、これらのベクトル演算を実行する演算ユニット１０もまた、各要素のロードが完了する毎に要素番号の順番とは異なる順番で演算を実行する。ベクトルデータＡおよびベクトルデータＢのそれぞれの要素がレジスタに書き込まれる毎に、対応するライト完了フラグがセットされるが、演算ユニット１０は、リード同期回路１２０によってこれらのライト完了フラグを参照して、両ベクトルデータの同一要素番号の要素が両方ともレジスタに書き込まれた直後にそれらの要素を演算パイプライン１００に供給するとともに、遅延回路１０１に入力し、そして一定時間後に遅延回路１０１が出力するレジスタの要素番号に演算パイプライン１００が出力する演算結果を書き込む。本例において、単位サイクル８で要素３よりも先に両者のロードが完了した要素４を次の単位サイクル９で演算パイプライン１００に供給し、単位サイクル１１で遅れて両者のロードが完了した要素３を次の単位サイクル１２で演算パイプライン１１０に供給する等、ロードユニットＶＬＵ１
(３０)とＶＬＵ２(４０)によって要素番号の順番とは異なる順番でレジスタにロードされた各要素の演算を、要素番号の順番に拘束されることなく効率良く実行できる。
【００８０】
これらのように、ロードユニットＶＬＵ１(３０)とＶＬＵ２(４０)はそれぞれベクトルデータＡおよびベクトルデータＢの各要素を要素番号の順番とは異なる順番で効率良くレジスタにロードし、さらに、演算ユニット１００も両ベクトルデータの各要素の演算を要素番号の順番とは異なる順番で効率良く実行しているが、この演算結果をメモリ部８にストアするストアユニットＶＳＵ(５０)もまた、各要素の演算が完了する毎に要素番号の順番とは異なる順番でストアを実行する。両ベクトルデータの各要素の演算結果がレジスタに書き込まれる毎に、対応するライト完了フラグがセットされるが、ストアユニットVSU
(５０)は、リード同期回路５２０によってこれらのライト完了フラグを参照して、各要素の演算結果がレジスタに書き込まれた直後にそれらの演算結果をメモリ部８にストアする。これにより、演算パイプライン１００によって要素番号の順番とは異なる順番で出力された各要素の演算結果を、要素番号の順番に拘束されることなく効率良くメモリ部にストアできる。
【００８１】
以上のように、ベクトルデータのロード，演算，ストアを、単に要素毎に連鎖処理するだけではなく、それぞれを要素番号の順番とは異なる順番で実行可能にすることにより、メモリ部８でアクセス競合が生じても一連のベクトル処理を効率良く実行できる。比較のために、図１８のタイムチャート例と同様の設定で、ベクトルデータのロード，演算，ストアをそれぞれを要素番号の順番で実行する従来方式を想定した場合のタイムチャート例を図１９に示す。両者のタイムチャート例を比較すると、図１９の従来方式によるベクトル処理ではメモリアクセス競合による処理の停止時間が１２単位サイクルであるのに対し、図１８の本発明によるベクトル処理では４単位サイクルに削減されている。
【００８２】
図９に、本発明にかかるレジスタ機構２０と演算ユニット１０の第２の詳細構成を示す。
【００８３】
本図のレジスタ機構２０と演算ユニット１０は図１で説明したものと基本的に同じであるが、演算ユニット１０が２つの演算パイプライン１００−１，１００−２と、それぞれの演算パイプラインに対応する遅延回路１０１−１，１０１−２とリード同期回路１２０−１，１２０−２とを有し、さらにレジスタ機構２０のレジスタファイル２００が、２つの演算パイプライン１００−１，１００−２にそれぞれ対応するリードポート２０４−１，２０４−２および２０５−１，２０５−２と、ライトポート２０６−１，２０６−２とを有している点が異なる。本図の演算ユニット１０−１と１００−２はそれぞれ独立にベクトル演算を実行できるので、２つのベクトル演算命令を同時に実行することが可能になり、さらには、あるベクトル演算とその演算結果に対する別のベクトル演算を連鎖的に並列に実行することが可能になる。本実施例では演算ユニット１０に２つのベクトル演算パイプラインを備えたが、さらに３つ以上のベクトル演算パイプラインを備えて３つ以上のベクトル演算命令を同時に実行できるようにしてもよい。
【００８４】
図１０に、本発明にかかるレジスタ機構２０と演算ユニット１０の第３の詳細構成を示す。
【００８５】
本図のレジスタ機構２０と演算ユニット１０は図１で説明したものと基本的に同じであるが、演算ユニット１０が２つの演算パイプライン１００−１，１００−２と、それぞれの演算パイプラインに対応する遅延回路１０１−１，１０１−２と、両方の演算パイプラインへのデータ供給を制御するリード同期回路１２０−３とを有し、さらにレジスタ機構２０のレジスタファイル２００が、２つの演算パイプライン１００−１，１００−２にそれぞれ対応するリードポート２０４−１，２０４−２および２０５−１，２０５−２と、ライトポート２０６−１，２０６−２とを有している点が異なる。本図の演算ユニット
１０−１と１００−２は同一のベクトル演算を実行でき、リード同期回路１２０−３は演算対象のベクトルデータの要素を２つの演算パイプラインに分配するので、図１のベクトル演算ユニット１０では単位時間に１つの要素を処理するのに比べて本図の演算ユニット１０では単位時間に２つの要素を処理できるので、ベクトル演算命令の実行時間を半分に短縮することが可能になる。本実施例では演算ユニット１０に２つのベクトル演算パイプラインを備えたが、さらに３つ以上のベクトル演算パイプラインを備えてベクトル演算命令の実行時間をさらに短縮するようにしてもよい。
【００８６】
図１１に、図１０の演算ユニット１０のリード同期回路１２０−３の構成図を示す。
【００８７】
リード同期回路１２０−３は図２で説明したリード同期回路１２０と基本的に同じであるが、要素番号選択回路１２２−３が２つの要素のレジスタリードコマンドおよび要素番号１２４を出力する点が異なる。要素番号選択回路１２２−３は、論理積回路１２１の各要素毎の出力を受信し、この出力値が１である要素、すなわち、要素番号が同一である全ての要素が書き込みが完了してかつ読み出しが未完了である要素が１つであれば、その要素番号１２４をレジスタリードコマンドとともに出力し、出力値が１である要素が２つ以上あれば、その中から最小の要素番号と最小から２番目の要素を選択してそれらの要素番号１２４，１２６をそれぞれレジスタリードコマンドとともに出力する。これにより、図１０に示した２つのベクトル演算パイプライン１００−１，１００−２で１つのベクトル演算命令を実行する場合に、２つのベクトル演算パイプラインに演算対象のベクトルデータの要素を同時に供給できる。
【００８８】
図１２に、本発明にかかる演算ユニット１０の第４の詳細構成を示す。
【００８９】
本図の演算ユニット１０は図１で説明したものと基本的に同じであるが、遅延回路101の代りにＦＩＦＯキュー１３０を用いている点が異なる。ＦＩＦＯキュー１３０は、リード同期回路１２０が出力する、演算パイプライン１００に供給した要素データの要素番号１２４を順次記憶し、そして演算パイプライン１００の演算結果出力にあわせて、記憶した要素番号を記憶した順番に出力する。これにより、ベクトル演算の所要時間を考慮することなく、演算結果に対応する要素番号を出力することができる。なお、本実施例では図１の演算ユニット１０の遅延回路１０１をＦＩＦＯキューに置き換えているが、同様にして、図９および図１０で説明した演算ユニット１０の遅延回路をそれぞれＦＩＦＯキューに置き換えても同様の効果が得られる。
【００９０】
図１３に、本発明にかかるロードユニット(ＶＬＵ)３０の第２の構成図を示す。
【００９１】
本図のロードユニット(ＶＬＵ)３０は図３説明したものと基本的に同じであるが、メモリから読み出したデータの書き込み先を示すレジスタファイル２００の要素アドレスを一時的に格納する要素アドレスバッファ３３０を追加した点が異なる。要素アドレスバッファ３３０は、複数の要素アドレスを格納することができ、各要素アドレス格納位置にユニークな格納番号が付いている。メモリリード制御回路３０２はメモリリードコマンド３１に格納先要素番号を付加して出力する代わりに、その格納先要素番号とレジスタ番号バッファ３０６が示すロード先のベクトルレジスタ番号から要素アドレスを生成して要素アドレスバッファ３３０に格納し、その格納番号をメモリリードコマンド３１に付加して出力する。そしてレジスタライト制御回路３０１は、受信したリードデータ３２の格納番号が示す要素アドレスバッファ３３０上の要素アドレスを取り出してレジスタライトコマンド３１０を出力するとともに、データバッファ３０８に格納されたデータ３２０をレジスタファイル２００のライトポート２０１に出力する。本実施例によれば、あるベクトルロード命令の実行において、メモリリード制御回路３０２が最後の要素のメモリリードコマンドを出力した時点で、同ロード命令からメモリアドレスバッファ３０３，ストライド値バッファ３０４，要素数バッファ３０５，レジスタ番号バッファ３０６、およびメモリリード制御回路３０２を解放できるので、直ちに次のベクトルロード命令を実行することができる。また、図示はしていないが、同時点に命令解読回路２またはスカラ処理部６にベクトルロード命令の実行完了を通知するようにしてもよい。
【００９２】
図１４に、本発明にかかるデータ処理システムの第２の構成図を示す。
【００９３】
このデータ処理システムは、図１で説明したデータ処理システムと基本的に同じであるが、スイッチ部７の代りにメモリバス９を用いて回路規模を削減する点が異なる。
【００９４】
メモリバス９は、スカラ処理部６およびベクトル処理部１からメモリ部８へのアクセス用信号線９１と、メモリ部８からスカラ処理部６またはベクトル処理部１へのリードデータ返送用信号線９２と、メモリバスのアクセスを調停するアクセス調停部９３からなる。
【００９５】
スカラ処理部６およびベクトル処理部１のＶＬＵ１(３０)，ＶＬＵ２(４０)，ＶＳＵ
(５０)はそれぞれ、メモリ部８にアクセスする際にアクセス要求をアクセス用信号線９１に出力し、そしてアクセス調停部９３によってこれらのアクセス要求の中から予め定めた優先順位に従って１つの要求を選択して複数の信号線から構成されたメモリバス９によるアクセスを許可する。また、メモリ部８の各メモリモジュール８０はそれぞれ、スカラ処理部６またはベクトル処理部１にリードデータを返送する際に返送要求をリードデータ返送用信号線９２に出力し、そしてアクセス調停部９３によってこれらのアクセス要求および返送要求の中から予め定めた優先順位に従って１つの要求を選択し、メモリバス９によるアクセスを許可する。
【００９６】
本実施例ではスカラ処理部６およびベクトル処理部１からメモリ部８へのアクセス用信号線９１とメモリ部８からスカラ処理部６またはベクトル処理部１へのリードデータ返送用信号線９２とを独立に設けてメモリアクセス要求とリードデータ返送を同時に実行できるようにしているが、メモリアクセス性能上の余裕があるならば、アクセス用信号線９１とリードデータ返送用信号線９２とを共通化してさらに回路規模を削減できるようにしてもよい。
【００９７】
また、スカラ処理部６，ベクトル処理部１，アクセス調停部９３，メモリ部８をそれぞれ別々の半導体集積回路で構成してもよいが、１つの半導体集積回路で構成すると、データを出力するためのドライバ等が不要となり、高速で回路規模が小さいデータ処理システムを構成することができる。
【００９８】
また、スカラ処理部６，ベクトル処理部１を１つの半導体集積回路で、またはスカラ処理部６，ベクトル処理部１，アクセス調停部９３を１つの半導体集積回路で構成すると、メモリ部８の容量を自由に変えることが可能となり、汎用性が高くなる。
【００９９】
図１５に、本発明にかかるデータ処理システムの第３の構成図を示す。
【０１００】
このデータ処理システムは、図１で説明したベクトル処理システムのメモリ部８を内部メモリ部８−１と外部メモリ部８−２に階層化し、スカラ処理部６とベクトル処理部１と内部メモリ部８−１を同一の半導体チップまたはモジュール基板１０００に内蔵した点が異なる。内部メモリ部８−１と外部メモリ部８−２はメモリ部８と同様の構成であり、内部メモリ用のスイッチ部７−１と外部メモリ用のスイッチ部７−２はスイッチ部７と同様の構成である。また、内部メモリ用スイッチ部７−１と外部メモリ用スイッチ部７−２を接続するブリッジ部１０１０は、スカラ処理部６およびベクトル処理部１から外部メモリ部８−２へのアクセス要求とリードデータ返送を中継するものである。本システムによれば、スカラ処理部６およびベクトル処理部１から内部メモリ用スイッチ部７−１へのアクセスはチップ内部またはモジュール内部で実行されるので、メモリの一部ではあるが、高速なアクセスを実行できる。また、ブリッジ部１０１０に内部メモリ部８−１と外部メモリ部８−２との間のダイナミック・メモリ・アクセス機能、いわゆるＤＭＡ機能を持たせて、スカラ処理部からの指令６４により内部メモリ部８−１と外部メモリ部８−２との間の連続データ転送を実行させるようにしてもよい。
【０１０１】
図１６に、本発明にかかるデータ処理システムの第４の構成図を示す。
【０１０２】
このデータ処理システムは、図１で説明したデータ処理システムと基本的に同じであるが、ベクトル処理部を複数備える点が異なる。複数のベクトル処理１−１，１−２，…，１−ｖはそれぞれ、スカラ処理部から各々に送信される複数のベクトル命令６１−１，
６１−２，…，６１−ｖを同時に処理することができ、さらなるベクトル処理の高速化を実現できる。
【０１０３】
図１７に、本発明にかかるデータ処理システムの構成図を示す。
【０１０４】
このデータ処理システムは、図１５で説明したデータ処理システム２０００に外部との通信機能を有する通信部２０２０を付加したものを複数備え、このデータ処理システム
２０００と同一構成のデータ処理システム２１００，２２００，２３００とを通信網300で接続している。各データ処理システムの通信部２０２０は、スカラ処理部からの通信命令６５に従ってメモリ部８からデータを読み出してそれを他のデータ処理システムに送信したり、スカラ処理部からの通信命令６５に従って他のデータ処理システムにそのメモリ部のデータ読み出しを要求したり、他のデータ処理システムから受信したデータ読み出し要求に従ってメモリ部８からデータを読み出してそれを要求元のデータ処理システムに送信したりする。これにより複数のデータ処理システムで協調しながらデータ処理を実行できるので、さらなるベクトル処理の高速化を実現できる。
【図面の簡単な説明】
【０１０５】
【図１】ベクトルレジスタ機構とベクトル演算ユニットの詳細構成を示した図である。
【図２】ベクトル演算ユニットのリード同期回路の構成を示した図である。
【図３】ベクトルロードユニットの構成を示した図である。
【図４】ベクトルストアユニットの構成を示した図である。
【図５】ベクトルストアユニットのリード同期回路の構成を示した図である。
【図６】メモリモジュールの構成を示した図である。
【図７】スイッチ部の構成を示した図である。
【図８】データ処理システムの第１の構成を示した図である。
【図９】ベクトルレジスタ機構とベクトル演算ユニットの第２の構成を示した図である。
【図１０】ベクトルレジスタ機構とベクトル演算ユニットの第３の構成を示した図である。
【図１１】第３のベクトル演算ユニットのリード同期回路の構成を示した図である。
【図１２】ベクトルレジスタ機構とベクトル演算ユニットの第４の構成を示した図である。
【図１３】ベクトルロードユニットの第２の構成を示した図である。
【図１４】データ処理システムの第２の構成を示した図である。
【図１５】データ処理システムの第３の構成を示した図である。
【図１６】データ処理システムの第４の構成を示した図である。
【図１７】データ処理システム群の構成を示した図である。
【図１８】データ処理システムによるベクトル処理のタイムチャートを示した図である。
【図１９】従来方式のベクトル処理システムによるベクトル処理のタイムチャートを示したものである。
【符号の説明】
【０１０６】
１０…演算ユニット、２０…レジスタ機構、３０…ロードユニット(ＶＬＵ１)、４０…ロードユニット(ＶＬＵ２）、５０…ストアユニット(ＶＳＵ）、１００…演算パイプライン、１０１…遅延回路、１２０…リード同期回路、２００…レジスタファイル、２０１，２０２，２０６…ライトポート、２０３，２０４，２０５…リードポート、２２０…ライト完了フラグ、２２１…フラグ制御回路、２２２…フラグ参照回路。
【図１】
2006196015.tif 000003
【図２】
2006196015.tif 000004
【図３】
2006196015.tif 000005
【図４】
2006196015.tif 000006
【図５】
2006196015.tif 000007
【図６】
2006196015.tif 000008
【図７】
2006196015.tif 000009
【図８】
2006196015.tif 000010
【図９】
2006196015.tif 000011
【図１０】
2006196015.tif 000012
【図１１】
2006196015.tif 000013
【図１２】
2006196015.tif 000014
【図１３】
2006196015.tif 000015
【図１４】
2006196015.tif 000016
【図１５】
2006196015.tif 000017
【図１６】
2006196015.tif 000018
【図１７】
2006196015.tif 000019
【図１８】
2006196015.tif 000020
【図１９】
2006196015.tif 000021
【手続補正書】
【提出日】平成18年3月9日(2006.3.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを格納するメモリと、
上記メモリからデータを読み出し、処理を行う少なくとも１つのプロセッサとを有する
データ処理システムであって、
上記プロセッサは返送先情報をアドレスとともに出力し、上記メモリは上記アドレスに
基づいて読み出したデータと上記返送先情報とを出力するデータ処理システム。
【請求項２】
請求項１のデータ処理システムにおいて、
上記返送先情報は、処理すべきデータに割り当てられた識別情報であるデータ処理シス
テム。
【請求項３】
請求項１のデータ処理システムにおいて、
上記返送先情報は、上記プロセッサに割り当てられた識別情報であるデータ処理システ
ム。
【請求項４】
請求項２のデータ処理システムにおいて、
上記プロセッサは、複数のデータを格納するレジスタと、上記レジスタに格納されたそ
れぞれのデータについて同じ演算を実行する処理部とを有し、上記識別情報に基づいて上
記メモリから読み出されたデータを上記レジスタに格納し、上記識別情報に基づいて上記
レジスタに格納されたデータを処理するデータ処理システム。
【請求項５】
複数のデータ処理装置が接続されて構成されるデータ処理システムであって、
それぞれのデータ処理装置は、データ処理装置間のデータの転送を行う通信部と、デー
タを格納するメモリと、上記メモリから読み出したデータの演算を行うプロセッサとを有
し、上記プロセッサは、処理すべきデータに対する返送先情報をアドレスとともに出力し
、上記メモリは上記アドレスに基づいて読み出したデータと上記返送先情報とを出力する
データ処理システム。
【請求項６】
請求項５のデータ処理システムにおいて、
上記返送先情報は、処理すべきデータに割り当てられた固有の識別情報であるデータ処
理システム。
【請求項７】
請求項５のデータ処理システムにおいて、
上記返送先情報は、上記プロセッサに割り当てられた固有の識別情報であるデータ処理
システム。
【請求項８】
請求項５のデータ処理システムにおいて、
上記プロセッサは、複数のデータを格納するレジスタと、上記レジスタに格納されたそ
れぞれのデータについて同じ演算を実行する処理部とを有し、上記識別情報に基づいて上
記メモリから読み出されたデータを上記レジスタに格納し、上記識別情報に基づいて上記
レジスタに格納されたデータを処理するデータ処理システム。