(57)【要約】      （修正有）【課題】より高速な計算を可能にするリストベクトル処理装置及び方法を提供する。【解決手段】クロックサイクル１で出力された第１ベクトルデータの最後のベクトル要素を含み、同一のアドレスを持つベクトル要素が連続している領域である第１連続領域に含まれるベクトル要素のうち、要素番号が最若のものが見つけられ、先頭要素番号として設定される。クロックサイクル１の最後のベクトル要素のアドレスと、次のクロックサイクル２で入力された第２ベクトルデータの先頭のベクトル要素のアドレスとが比較され、先頭のベクトル要素を含み、同一のアドレスを持つベクトル要素が連続している連続領域が検出される。その連続領域に含まれるベクトル要素のうち、要素番号が最後のものが末尾要素番号として設定され、示されるアドレスに基づいてメモリがアクセスされ、情報が読み出される。他のベクトル要素に対しては、その読み出された情報が返される。【選択図】図１
2008165685.tif 000002
【特許請求の範囲】
【請求項１】
メモリ上のアドレスを示す複数のベクトル要素を含む第１ベクトルデータを第１のクロックサイクルにおいて入力し、前記メモリ上のアドレスを示す複数のベクトル要素を含む第２ベクトルデータを前記第１クロックサイクルに後続する第２のクロックサイクルにおいて入力するベクトルデータ入力部と、
前記第１ベクトルデータの中で要素番号の順序が最後のベクトル要素のアドレスと、前記第２ベクトルデータの中で要素番号の順序が最初のベクトル要素のアドレスとの照合を実行する照合部と、
前記照合の結果が一致したとき、前記第１ベクトルデータの中で前記最後のベクトル要素を含み、要素番号が前記最後のベクトル要素と連続し、且つ同じアドレスを示しているベクトル要素と、前記第２ベクトルデータの中で前記最初のベクトル要素を含み、要素番号が前記最初のベクトル要素と連続し、且つ同じアドレスを示しているベクトル要素とからなるアドレス共通ベクトル要素群を設定する同一アドレス連続領域結合部と、
ベクトル要素に示されたアドレスに従って前記メモリの情報を読み出す指令を入力したとき、前記アドレス共通ベクトル要素群に属するベクトル要素に対して、前記アドレス共通ベクトル要素群に属するいずれかの代表ベクトル要素に示されるアドレスに基づいて前記メモリにアクセスすることにより読み出された情報を返すリプライ部
とを具備する
リストベクトル処理装置。
【請求項２】
請求項１に記載されたリストベクトル処理装置であって、
前記代表ベクトル要素は、前記アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素である
リストベクトル処理装置。
【請求項３】
請求項１または２に記載されたリストベクトル処理装置であって、
前記同一アドレス連続領域結合部は、
前記第１ベクトルデータに含まれる複数のベクトル要素にそれぞれ対応し、最後フラグが設定される制御情報を生成し、前記第１ベクトルデータの中で同じアドレスを示し連続するベクトル要素からなる第１クロックサイクル内アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素に対応する前記制御情報に設定される前記最後フラグを立てる第１クロックサイクル内アドレス共通ベクトル認識部と、
前記第２ベクトルデータに含まれる複数のベクトル要素にそれぞれ対応する制御情報を生成し、前記第１ベクトルデータの中で要素番号が最後のベクトル要素の前記最後フラグが立っており且つ前記第２ベクトルデータの中で最初のベクトル要素に示されるアドレスが前記最後のベクトル要素に示されるアドレスと同じであるとき、前記最後フラグを倒し、前記第２ベクトルデータの中で同じアドレスを示し連続するベクトル要素からなる第２クロックサイクル内アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素に対応する前記制御情報に含まれる前記最後フラグを立てる制御情報修正部
とを備え、
前記アドレス共通ベクトル要素群に属するベクトル要素の領域の最後の要素番号は、前記最後フラグにより指定される
リストベクトル処理装置。
【請求項４】
メモリ上のアドレスを示す複数のベクトル要素を含む第１ベクトルデータを第１のクロックサイクルにおいて入力し、前記メモリ上のアドレスを示す複数のベクトル要素を含む第２ベクトルデータを前記第１クロックサイクルに後続する第２のクロックサイクルにおいて入力するベクトルデータ入力ステップと、
前記第１ベクトルデータの中で要素番号の順序が最後のベクトル要素のアドレスと、前記第２ベクトルデータの中で要素番号の順序が最初のベクトル要素のアドレスとの照合を実行する照合ステップと、
前記照合の結果が一致したとき、前記第１ベクトルデータの中で前記最後のベクトル要素を含み、要素番号が前記最後のベクトル要素と連続し、且つ同じアドレスを示しているベクトル要素と、前記第２ベクトルデータの中で前記最初ベクトルを含み、要素番号が前記最初ベクトルと連続し、且つ同じアドレスを示しているベクトル要素とからなるアドレス共通ベクトル要素群を設定する同一アドレス連続領域結合ステップと、
ベクトル要素に示されたアドレスに従って前記メモリの情報を読み出す指令を入力したとき、前記アドレス共通ベクトル要素群に属するベクトル要素に対して、前記アドレス共通ベクトル要素群に属するいずれかの代表ベクトル要素に示されるアドレスに基づいて前記メモリにアクセスすることにより読み出された情報を返すリプライステップ
とを具備する
リストベクトル処理方法。
【請求項５】
請求項４に記載されたリストベクトル処理方法であって、
前記代表ベクトル要素は、前記アドレス共通ベクトル要素群の中で要素番号が最後のアドレス要素である
リストベクトル処理方法。
【請求項６】
請求項４または５に記載されたリストベクトル処理方法であって、
前記同一アドレス連続領域結合ステップは、
前記第１ベクトルデータに含まれる複数のベクトル要素にそれぞれ対応し、最後フラグが設定される制御情報を生成し、前記第１ベクトルデータの中で同じアドレスを示し連続するベクトル要素からなる第１クロックサイクル内アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素に対応する前記制御情報に設定される前記最後フラグを立てる第１クロックサイクル内アドレス共通ベクトル認識ステップと、
前記第２ベクトルデータに含まれる複数のベクトル要素にそれぞれ対応する制御情報を生成し、前記第１ベクトルデータの中で要素番号が最後のベクトル要素の前記最後フラグが立っており且つ前記第２ベクトルデータの中で最初のベクトル要素に示されるアドレスが前記最後のベクトル要素に示されるアドレスと同じであるとき、前記最後フラグを倒し、前記第２ベクトルデータの中で同じアドレスを示し連続するベクトル要素からなる第２クロックサイクル内アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素に対応する前記制御情報に含まれる前記最後フラグを立てる制御情報修正ステップ
とを備え、
前記アドレス共通ベクトル要素群に属するベクトル要素の領域の最後の要素番号は、前記最後フラグにより指定される
リストベクトル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リストベクトル処理に関する。
【背景技術】
【０００２】
コンピュータによる演算を高速に行うための技術として、リストベクトル処理が知られている。リストベクトル処理においてロード命令が実行されると、ベクトル要素に示される主記憶装置上のアドレスに記録されたデータが、ベクトル要素番号の若い順に読み出され、ベクトル処理装置に渡される。
【０００３】
リストベクトル処理におけるロード命令を高速化するために、以下の技術が知られている。複数のベクトル要素が異なるベクトル処理装置に分配されて並列に処理される。この場合、複数のベクトル処理装置は同じクロックサイクルで出力したベクトル要素を一致判定回路で比較する。比較の結果、複数のベクトル要素が一致すると、その中のただ一つのベクトル要素に基づいて主記憶装置へのアクセスが実行され、その他のベクトル要素に対しては、そのアクセスの結果得られたデータが返される。このような処理により主記憶へのアクセス回数が減り、リストベクトルのロード命令の高速化が実現される。
【０００４】
リストベクトル処理に関して、特許文献１が公開されている。
【特許文献１】特開平１０−４９５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、より高速な計算を可能にするリストベクトル処理装置及び方法を提供することである。
【課題を解決するための手段】
【０００６】
以下に、［発明を実施するための最良の形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００７】
本発明によるリストベクトル処理装置は、以下の部分を含む：メモリ上のアドレスを示す複数のベクトル要素を含む第１ベクトルデータを第１のクロックサイクルにおいて入力し、メモリ上のアドレスを示す複数のベクトル要素を含む第２ベクトルデータを第１クロックサイクルに後続する第２のクロックサイクルにおいて入力するベクトルデータ入力部（１００、１０１、１０２、１０３）；第１ベクトルデータの中で要素番号の順序が最後のベクトル要素のアドレスと、第２ベクトルデータの中で要素番号の順序が最初のベクトル要素のアドレスとの照合を実行する照合部（２３０）；照合の結果が一致したとき、第１ベクトルデータの中で最後のベクトル要素を含み、要素番号が最後のベクトル要素と連続し、且つ同じアドレスを示しているベクトル要素と、第２ベクトルデータの中で最初のベクトル要素を含み、要素番号が最初のベクトル要素と連続し、且つ同じアドレスを示しているベクトル要素とからなるアドレス共通ベクトル要素群を設定する同一アドレス連続領域結合部（１０００）；及び、ベクトル要素に示されたアドレスに従ってメモリの情報を読み出す指令を入力したとき、アドレス共通ベクトル要素群に属するベクトル要素に対して、アドレス共通ベクトル要素群に属するいずれかの代表ベクトル要素に示されるアドレスに基づいてメモリにアクセスすることにより読み出された情報を返すリプライ部（６０００）。
【０００８】
本発明によるリストベクトル処理装置において、代表ベクトル要素は、アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素である。
【０００９】
本発明によるリストベクトル処理装置において、同一アドレス連続領域結合部（１０００）は、以下の部分を備える：第１ベクトルデータに含まれる複数のベクトル要素にそれぞれ対応し、最後フラグが設定される制御情報を生成し、第１ベクトルデータの中で同じアドレスを示し連続するベクトル要素からなる第１クロックサイクル内アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素に対応する制御情報に設定される最後フラグを立てる第１クロックサイクル内アドレス共通ベクトル認識部（１１０）；及び、第２ベクトルデータに含まれる複数のベクトル要素にそれぞれ対応する制御情報を生成し、第１ベクトルデータの中で要素番号が最後のベクトル要素の最後フラグが立っており且つ第２ベクトルデータの中で最初のベクトル要素に示されるアドレスが最後のベクトル要素に示されるアドレスと同じであるとき、最後フラグを倒し、第２ベクトルデータの中で同じアドレスを示し連続するベクトル要素からなる第２クロックサイクル内アドレス共通ベクトル要素群の中で要素番号が最後のベクトル要素に対応する制御情報に含まれる最後フラグを立てる制御情報修正部（２４０）。アドレス共通ベクトル要素群に属するベクトル要素の領域の最後の要素番号は、最後フラグにより指定される。
【発明の効果】
【００１０】
本発明によれば、より高速な計算を可能にするリストベクトル処理装置及び方法が提供される。
【００１１】
本発明によれば、リストベクトル処理における主記憶へのアクセス回数を削減し、より高速な計算を可能にするリストベクトル処理装置及び方法が提供される。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明に係るリストベクトル処理方法を説明するための概念図である。クロックサイクル１とクロックサイクル２は、連続する２つのクロックサイクルを示す。
【００１３】
処理１：複数のベクトル処理装置からクロックサイクル１で出力された第１ベクトルデータのベクトル要素がアドレス一致判定回路で比較され、クロックサイクル１のベクトル要素内で同じアドレスにアクセスするベクトル要素が検出される。検出の結果、最も大きな要素番号のベクトル要素（クロックサイクル１で入力されたベクトル要素のうちの最後のベクトル要素）を含み、同一のアドレスを持つベクトル要素が連続している連続領域が検出される。その連続領域に含まれるベクトル要素のうち、最小の要素番号「２」が見つけられる。
【００１４】
処理２：クロックサイクル１の最後のベクトル要素のアドレスと、次のクロックサイクルであるクロックサイクル２で入力された第２ベクトルデータのベクトル要素のうちで最も小さな要素番号のベクトル要素（クロックサイクル２で入力されたベクトル要素のうち先頭のベクトル要素）のアドレスとが比較される。比較の結果が一致である場合、処理１で求められた連続領域のうち最小の要素番号をもつベクトル要素からクロックサイクル２で入力されたベクトル要素の先頭のベクトル要素までアドレスが一致していることがわかる。この場合、処理１で求めた連続領域のうち最小の要素番号が記録される。
【００１５】
処理３：クロックサイクル２で入力されたベクトル要素がアドレス一致判定回路で比較され、クロックサイクル２のベクトル要素内で同じアドレスにアクセスするベクトル要素が検出される。検出の結果、先頭のベクトル要素を含み、同一のアドレスを持つベクトル要素が連続している連続領域が検出される。その連続領域に含まれるベクトル要素のうち、最大の要素番号「５」が見つけられる。
【００１６】
以上の処理１〜処理３により、同じアドレスを持ちかつ要素番号が連続している複数のベクトル要素からなる領域が検出され、その領域の先頭の要素番号と最後の要素番号が判明する。この領域について、最も大きなベクトル要素番号のベクトル要素のみに基づいて主記憶へのアクセスが行われる。その結果、主記憶へのアクセス回数が削減される。
【００１７】
図２は、本実施の形態におけるリストベクトル処理装置の構成を示す。ベクトル処理装置３００１〜３００４はベクトル要素をクロックサイクル毎に出力する。本実施例では、ベクトル処理装置３００１〜３００４は４個であり、このためクロックサイクル毎に、４個のベクトル要素が出力される。
【００１８】
圧縮処理を行うリストベクトル処理装置（同一アドレス連続領域結合部）１０００は、ベクトル処理装置３００１〜３００４からベクトル要素を受け取ると、同じアドレスを持つベクトル要素を検出する。同じアドレスを持つベクトル要素のうち要素番号が最も大きいベクトル要素が検出され、該当検出されたベクトル要素のみに基づいて主記憶へのアクセスが行われる。
【００１９】
主記憶制御装置（リクエスト発行）４０００は、リストベクトル処理装置（圧縮処理）１０００からベクトル要素の制御情報とアドレスを受け取り、ベクトル処理装置３００１〜３００４からデータを受け取ると、主記憶へのメモリリクエストを生成する。
【００２０】
主記憶装置５０００は、主記憶制御装置（リクエスト発行）４０００からメモリリクエストを受け取り、メモリリクエストで示されたアドレスのデータに対して、データの書き込みまたは、データの読み出しを行い、その結果をメモリリプライとして出力する。
【００２１】
主記憶制御装置（リプライ部）６０００は、主記憶装置５０００からメモリリプライを受け取ると、ベクトル要素の制御情報とデータを生成する。リストベクトル処理装置（展開処理）２０００は、主記憶制御装置（リプライ受け取り）６０００からベクトル要素の制御情報とデータを受け取ると、制御情報から同じアドレスを持つベクトル要素のうち、主記憶へのアクセスが行われていないベクトル要素の要素番号を復元する。この処理より、リストベクトル処理装置（圧縮処理）１０００によって削減されたベクトル要素が復元される。
【００２２】
図３を参照すると、リストベクトル処理装置（圧縮処理）１０００の詳細な構成が示されている。
【００２３】
１つのベクトル命令は、複数のベクトル要素を処理することができる。１つの命令によって処理されるベクトル要素数とベクトル処理装置３００１〜３００４の個数を比較すると、１つの命令によって処理されるベクトル要素数のほうが多い。このため１つのベクトル命令が処理される場合、ベクトル処理装置３００１〜３００４は、命令が処理するベクトル要素数に達するまで、１クロックサイクル毎に最大４個のベクトル要素の出力を繰り返す。
【００２４】
入力ＲＥＧ１００〜１０３（ベクトルデータ入力部）はベクトル処理装置３００１〜３００４により出力されるベクトル要素を取り込む。
【００２５】
制御情報は、ベクトル要素に対応して生成される。制御情報は４ビットの情報、要素番号、および先頭要素番号で構成される。本実施例の図では、制御情報は４ビットの情報、要素番号、および先頭要素番号の順番で表記され、「ｂｂｂｂ［ｘ］［ｘ］」のフォーマットで表現される。以下の説明において、４ビットの情報のうち最も左のビットは第１ビット、最も右のビットは第４ビットとして説明される。
【００２６】
制御情報の第１ビットは、主記憶へのアクセスが行われるか否かを示す。第１ビットが１の場合、対応するベクトル要素が主記憶にアクセスするように制御され、０の場合、対応するベクトル要素が主記憶にアクセスしないように制御される。同じクロックサイクルの４つのベクトル要素において同じアドレスを持つベクトル要素を要素とする群を同一クロック内共通ベクトル要素群と名づけると、同一クロック内共通ベクトル要素群の中で最大の要素番号を持つベクトル要素の制御情報の第１ビットは１に設定され、他のベクトル要素の制御情報の第１ビットは０に設定される。
【００２７】
制御情報の第２ビットは、圧縮可能なベクトル要素であることを示す。制御情報生成回路１１０（第１クロックサイクル内制御情報生成回路）は、同じクロックサイクルの４つのベクトル要素のアドレスを比較する。同じアドレスを持つベクトル要素が連続して存在する場合は、当該のベクトル要素の制御情報の第２ビットは１に設定される。そうでない場合は、当該のベクトル要素の制御情報の第２ビットは０に設定される。
【００２８】
制御情報の第３ビットは、同じアドレスを持つベクトル要素が連続している場合、当該のベクトル要素のうち最小の要素番号を持つベクトル要素であることを示す。制御情報の第４ビットは、同じアドレスを持つベクトル要素が連続している場合、当該のベクトル要素のうち最大の要素番号を持つベクトル要素であることを示す。
【００２９】
制御情報の要素番号は、その制御情報がどのベクトル要素の制御情報であるかを示している。同じアドレスを持つベクトル要素が連続している場合は、当該のベクトル要素のうち、最大の要素番号が制御情報の要素番号として格納されている。
【００３０】
制御情報の先頭要素番号は、同じアドレスを持つベクトル要素が存在しない場合は制御情報の要素番号と同じ値に設定される。一方、同じアドレスを持つベクトル要素が連続している場合は、当該のベクトル要素のうち、最小（先頭）の要素番号が制御情報の先頭要素番号として設定される。
【００３１】
アドレス比較回路２３０（照合部）は、入力ＲＥＧ１００から出力されるベクトル要素のアドレスと持ち回りＲＥＧ２０３から出力されるベクトル要素のアドレスを比較する。一致する場合は１が出力され、一致しない場合は０が出力される。
【００３２】
アドレス比較回路が持ち回りＲＥＧ２０３から入力するベクトル要素は、第１のクロックサイクルにおいて入力されるベクトルデータに含まれる最も要素番号の大きいベクトル要素である。アドレス比較回路が入力ＲＥＧ１００から入力するベクトル要素は、第１のクロックサイクルに後続する第２にクロックサイクルにおいて入力されるベクトルデータに含まれる最も要素番号の小さいベクトル要素である。
【００３３】
アドレス連続情報ＲＥＧ２６０は、アドレス比較回路２３０が出力した比較結果を保持する。アドレス連続情報ＲＥＧ２６０の出力が１の場合、１つ前のクロックサイクルから同じアドレスを持つベクトル要素が連続していることが示されている。
【００３４】
制御情報生成回路１１０は、同じクロックサイクルで入力ＲＥＧ１００〜１０３から出力される４つのベクトル要素のアドレス比較し、ベクトル要素内で同じアドレスにアクセスするベクトル要素を検出する。
【００３５】
検出の結果、４つのベクトル要素のうち、最大のベクトル要素（最後尾のベクトル要素）を含み同一のアドレスを持つベクトル要素が連続している連続領域が検出される。連続領域のベクトル要素のうち、最小の要素番号「Ｓ」を持つベクトル要素の制御情報が「０１１０［Ｓ］［Ｓ］」として出力され、最大の要素番号「Ｌ」を持つベクトル要素の制御情報が「１１０１［Ｌ］［Ｓ］」として出力され、その他のベクトル要素の制御情報が「０１００［ｘ］［ｘ］」として出力される。
【００３６】
ただし、入力ＲＥＧ１００から出力されるベクトル要素の制御情報が「０１１０［ｘ］［ｘ］」でありかつ、アドレス比較回路２３０の出力が１の場合、制御情報として「０１１０［ｘ］［ｘ］」ではなく、「０１００［ｘ］［ｘ］」が生成される。制御情報の第３ビットは、同じアドレスを持つベクトル要素が連続している場合、当該のベクトル要素のうち最小の要素番号を持つベクトル要素であることを示す情報であり、１つ前のクロックサイクルから同じアドレスを持つベクトル要素が連続する場合は、条件にあてはまらないため異なる制御情報が生成される。
【００３７】
検出の結果、４つのベクトル要素のうち、最小のベクトル要素（先頭のベクトル要素）を含み同じアドレスを持つベクトル要素が連続している連続領域が検出される。同じアドレスを持つベクトル要素が存在する場合、連続領域のベクトル要素のうち、最小の要素番号「Ｓ」を持つベクトル要素の制御情報は「０１１０［Ｓ］［Ｓ］」として出力される。最大の要素番号「Ｌ」を持つベクトル要素の制御情報は「１１０１［Ｌ］［Ｓ］」として出力される。その他のベクトル要素の制御情報は「０１００［ｘ］［ｘ］」として出力される。
【００３８】
制御情報ＲＥＧ２１０〜２１３は、制御情報生成回路１１０が出力した制御情報を保持する。先頭要素番号選択回路１２０は、アドレス比較回路２３０の出力値が１であり、かつ制御情報ＲＥＧ２１０〜２１３から出力された制御情報のうち、制御情報が「０１１０［ｘ］［ｘ］」であるベクトル要素が存在する場合、当該のベクトル要素の要素番号を出力する。制御情報が「０１１０［ｘ］［ｘ］」であるベクトル要素が複数存在する場合、当該のベクトル要素のうちで最大の要素番号を持つベクトル要素の要素番号が出力される。制御情報が「０１１０［ｘ］［ｘ］」であるベクトル要素が存在しない場合は、先頭要素番号ＲＥＧ２２０の出力が選択される。
【００３９】
先頭要素番号ＲＥＧ２２０は、先頭要素番号選択回路１２０の出力を取り込む。持ち回りＲＥＧ２００〜２０３は入力ＲＥＧ１００〜１０３が出力するベクトル要素を取り込む。
【００４０】
制御情報修正回路２４０（制御情報修正部）は、制御情報ＲＥＧ２１３から出力された制御情報が「１１０１［ｘ］［ｘ］」であるベクトル要素が存在しかつ、アドレス比較回路２３０の出力が１の場合、制御情報として「１１０１［ｘ］［ｘ］」ではなく「０１００［ｘ］［ｘ］」を生成する。制御情報の第４ビットは、同じアドレスを持つベクトル要素が連続している場合、当該のベクトル要素のうち最大の要素番号を持つベクトル要素であることを示す情報であり、１つ後のクロックサイクルに同じアドレスを持つベクトル要素が存在する場合、条件にあてはまらないため制御情報として「０１００［ｘ］［ｘ］」が生成される。
【００４１】
先頭要素番号置換回路２５０は、アドレス連続情報ＲＥＧ２６０の出力値が１であり、かつ制御情報として「１１０１［ｘ］［ｘ］」を持つベクトル要素の制御情報の先頭要素番号を示す情報の書き換えを行う。制御情報の先頭要素番号は、同じクロックサイクル内で連続して同じアドレスを持つベクトル要素の先頭の要素番号を示しており、アドレス連続情報ＲＥＧ２６０の出力が１の場合、１つ前のクロックサイクルから同じアドレスを持つベクトル要素が連続していることになるので、書き換えが行われる。また当該のベクトル要素が複数存在する場合は、当該のベクトル要素のうち最小のベクトル要素の制御情報の先頭要素番号のみ書き換えられる。
【００４２】
図４を参照すると、リストベクトル処理装置（展開処理）２０００の詳細な構成が示されている。
【００４３】
リストベクトル処理装置（展開処理）２０００は、４つのベクトル要素復元回路２００１〜２００４を保持している。４つのベクトル要素復元回路２００１〜２００４の構成は同じであるため、本実施例では、ベクトル要素復元回路２００１についてのみ説明する。
【００４４】
制御情報バッファ４００は、主記憶制御装置（リプライ受け取り）６０００から出力される制御情報を一時的保持するバッファである。制御情報バッファ４００は、比較回路５４０の出力が１の場合、制御情報を出力する。
【００４５】
データバッファ４１０は、主記憶制御装置（リプライ受け取り）６０００から出力されるデータを一時的保持するバッファである。データバッファ４００は、比較回路５４０の出力が１の場合、データを出力する。
【００４６】
制御情報デコーダ４２０は、制御情報を受け取ると、制御情報からベクトル要素の要素番号と先頭要素番号を出力する。要素番号は制御情報の２番目のフィールドに格納されている値である。先頭要素番号は制御情報の３番目のフィールドに格納されている値である。
【００４７】
選択回路５５０は、比較回路５４０の出力が１の場合は制御情報デコーダ４２０が出力する先頭要素番号を選択し、比較回路５４０の出力が０の場合は加算器５３０が出力する先頭要素番号を選択する。
【００４８】
選択回路５５１は、比較回路５４０の出力が１の場合は制御情報デコーダ４２０が出力する要素番号を選択し、比較回路５４０の出力が０の場合は要素番号ＲＥＧ５１０が出力する要素番号を選択する。
【００４９】
選択回路５５２は、比較回路５４０の出力が１の場合はデータバッファ４１０が出力するデータを選択し、比較回路５４０の出力が０の場合はデータＲＥＧ５２０が出力する要素番号を選択する。
【００５０】
生成要素番号ＲＥＧ５００は選択回路５５０が出力する値を保持するレジスタである。要素番号ＲＥＧ５１０は選択回路５５１が出力する値を保持するレジスタである。データＲＥＧ５２０は選択回路５５２が出力するデータを保持するレジスタである。加算器５３０は先頭要素番号ＲＥＧ５００が出力した値に＋１を加算した値を出力する加算器である。
【００５１】
比較回路５４０は生成要素番号ＲＥＧ５００の値と要素番号ＲＥＧ５１０の値を比較し、値が一致する場合、１を出力し、一致しない場合、０を出力する。
【００５２】
要素番号出力ＲＥＧ６００は、生成要素番号ＲＥＧ５００が出力する値を保持するレジスタである。データ出力ＲＥＧ６１０は、データＲＥＧ５２０が出力するデータを保持するレジスタである。調停回路２００５はベクトル要素復元回路２００１〜２００４から出力される要素番号とデータの調停を行い、ベクトル処理装置３００１〜３００４に出力する。
【００５３】
次に、図３に示されるリストベクトル処理装置（圧縮処理）１０００が行う圧縮処理の動作を図５に示すタイムチャートを使用して説明する。
【００５４】
図７に、図５を元に情報移動や依存関係を矢印で補足した図を追加している。本実施例では、ベクトル処理装置３００１〜３００４が出力するベクトル要素の個数を１２要素として説明を行う。
【００５５】
クロックサイクルＴ２において、アドレス入力ＲＥＧ１００〜１０３はベクトル処理装置３００１〜３００４が出力したベクトル要素（要素番号０〜３）のアドレスを取り込む。以下同様に、クロックサイクルＴ３において、アドレス入力ＲＥＧ１００〜１０３はベクトル処理装置３００１〜３００４が出力したベクトル要素（要素番号４〜７）のアドレスを取り込む。クロックサイクルＴ４において、アドレス入力ＲＥＧ１００〜１０３はベクトル処理装置３００１〜３００４が出力したベクトル要素（要素番号８〜１１）のアドレスを取り込む。
【００５６】
クロックサイクルＴ３において、アドレス持ち回りＲＥＧ２００〜２０３はアドレス入力ＲＥＧ１００〜１０３が出力したベクトル要素（要素番号０〜３）のアドレスを取り込む。以下同様に、クロックサイクルＴ４において、アドレス持ち回りＲＥＧ２００〜２０３はアドレス入力ＲＥＧ１００〜１０３が出力したベクトル要素（要素番号４〜７）のアドレスを取り込む。クロックサイクルＴ５において、アドレス持ち回りＲＥＧ２００〜２０３はアドレス入力ＲＥＧ１００〜１０３が出力したベクトル要素（要素番号８〜１１）のアドレスを取り込む。
【００５７】
クロックサイクルＴ４において、アドレス出力ＲＥＧ３００〜３０３はアドレス持ち回りＲＥＧ２００〜２０３が出力したベクトル要素（要素番号０〜３）のアドレスを取り込む。以下同様に、クロックサイクルＴ５において、アドレス出力ＲＥＧ３００〜３０３はアドレス持ち回りＲＥＧ２００〜２０３が出力したベクトル要素（要素番号４〜７）のアドレスを取り込む。クロックサイクルＴ６において、アドレス出力ＲＥＧ３００〜３０３はアドレス持ち回りＲＥＧ２００〜２０３が出力したベクトル要素（要素番号８〜１１）のアドレスを取り込む。
【００５８】
クロックサイクルＴ２において、制御情報生成回路１１０はアドレス入力ＲＥＧ１００〜１０３からアドレスを受け取り、同じクロックサイクルで入力されたベクトル要素（要素番号０〜３）間でのアドレスの比較を行う。そして図３を参照して説明された制御情報生成回路１１０での処理が実行される。クロックサイクルＴ２においては、ベクトル要素（要素番号０〜３）のアドレスはそれぞれ「ＹＹ」、「ＺＺ」、「ＡＡ」、「ＡＡ」であるため、制御情報（要素番号０〜３）として、それぞれ「１０００［０］［０］」、「１０００［１］［１］」、「０１１０［２］［２］」、「１１０１［３］［２］」が生成される。
【００５９】
クロックサイクルＴ３において、制御情報ＲＥＧ２１０〜２１３は、制御情報生成回路１１０が出力した制御情報（要素番号０〜３）を取り込む。
【００６０】
クロックサイクルＴ３において、アドレス入力ＲＥＧ１００が出力するアドレス（要素番号４）とアドレス持ち回りＲＥＧ２００の出力するアドレス（要素番号３）が一致する。そのため、アドレス比較回路２３０は判定結果として１を出力する。
【００６１】
クロックサイクルＴ４において、アドレス連続情報ＲＥＧ２６０は、アドレス比較回路２３０の出力値の１を取り込む。
【００６２】
クロックサイクルＴ３において、制御情報生成回路１１０はアドレス入力ＲＥＧ１００〜１０３からアドレスを受け取り、同じクロックサイクルで入力されたベクトル要素（要素番号４〜７）間でのアドレスの比較を行う。そして図３を参照して説明された制御情報生成回路１１０での処理が実行される。クロックサイクルＴ３においては、ベクトル要素（要素番号４〜７）のアドレスはそれぞれ「ＡＡ」、「ＡＡ」、「ＡＡ」、「ＡＡ」であり、またアドレス比較回路２３０の出力が１であるため、制御情報（要素番号４〜７）として、それぞれ「０１００［４］［４］」、「０１００［５］［５］」、「０１００［６］［６］」、「０１００［７］［４］」を生成する。
【００６３】
クロックサイクルＴ４において、制御情報ＲＥＧ２１０〜２１３は、制御情報生成回路１１０が出力した制御情報（要素番号４〜７）を取り込む。
【００６４】
クロックサイクルＴ４において、アドレス入力ＲＥＧ１００が出力するアドレス（要素番号８）とアドレス持ち回りＲＥＧ２００の出力するアドレス（要素番号７）が一致する。そのため、アドレス比較回路２３０は判定結果として１を出力する。
【００６５】
クロックサイクルＴ５において、アドレス連続情報ＲＥＧ２６０は、アドレス比較回路２３０の出力値の１を取り込む。
【００６６】
クロックサイクルＴ４において、制御情報生成回路１１０はアドレス入力ＲＥＧ１００〜１０３からアドレスを受け取り、同じクロックサイクルで入力されたベクトル要素（要素番号８〜１１）間でのアドレスの比較を行う。そして図３を参照して説明された制御情報生成回路１１０での処理が実行される。クロックサイクルＴ４においては、ベクトル要素（要素番号８〜１１）のアドレスはそれぞれ「ＡＡ」、「ＡＡ」、「ＢＢ」、「ＣＣ」であり、またアドレス比較回路２３０の出力が１である。そのため、制御情報（要素番号８〜１１）として、それぞれ「０１００［８］［８］」、「１１０１［９］［８］」、「１０００［１０］［１０］」、「１０００［１１］［１１］」が生成される。
【００６７】
クロックサイクルＴ５において、制御情報ＲＥＧ２１０〜２１３は、制御情報生成回路１１０が出力した制御情報（要素番号８〜１１）を取り込む。
【００６８】
クロックサイクルＴ５において、アドレス入力ＲＥＧ１００にベクトル要素が存在しないため、アドレス比較回路２３０は判定結果として０を出力する。
【００６９】
クロックサイクルＴ６において、アドレス連続情報ＲＥＧ２６０は、アドレス比較回路２３０の出力値である０を取り込む。
【００７０】
クロックサイクルＴ３において、アドレス比較回路２３０の出力値が１であり、かつ、制御情報ＲＥＧ２１０〜２１３が出力する制御情報（要素番号０〜３）のうち制御情報ＲＥＧ２１２が出力する制御情報（要素番号２）が「０１１０［２］［２］」であるため、先頭要素番号選択回路１２０は当該のベクトル要素の要素番号である２を出力する。
【００７１】
クロックサイクルＴ４において、先頭要素番号ＲＥＧ２２０は先頭要素番号選択回路１２０の出力値である２を取り込む。
【００７２】
クロックサイクルＴ４において、制御情報ＲＥＧ２１０〜２１３が出力する制御情報（要素番号４〜７）の中に制御情報が「０１１０［ｘ］［ｘ］」であるベクトル要素が存在しないため、先頭要素番号ＲＥＧ２２０の出力値である２が出力される。
【００７３】
クロックサイクルＴ５において、先頭要素番号ＲＥＧ２２０は先頭要素番号選択回路１２０の出力値である２を取り込む。
【００７４】
クロックサイクルＴ３において、アドレス比較回路２３０の出力値が１であるため、制御情報修正回路２４０は、制御情報ＲＥＧ２１３が出力する制御情報「１１０１［３］［２］」を「０１００［３］［２］」に変換して出力する。
【００７５】
クロックサイクルＴ３において、先頭要素番号置換回路２５０は、制御情報ＲＥＧ２１０〜２１２が出力する制御情報（要素番号０〜２）と制御情報修正回路２４０が出力する制御情報（要素番号３）を受け取る。受け取った制御情報（要素番号０〜３）は「１１０１［ｘ］［ｘ］」（ｘは任意）の制御情報を持っていないので、制御情報（要素番号０〜３）がそのまま出力される。
【００７６】
クロックサイクルＴ４において、アドレス比較回路２３０の出力値が１であるため、制御情報修正回路２４０は、制御情報ＲＥＧ２１３が出力する制御情報「１１０１［７］［４］」を「０１００［７］［４］」に変換して出力する。
【００７７】
クロックサイクルＴ４において、先頭要素番号置換回路２５０は、制御情報ＲＥＧ２１０〜２１２が出力する制御情報（要素番号４〜６）と制御情報修正回路２４０が出力する制御情報（要素番号７）を受け取る。受け取った制御情報（要素番号４〜７）は「１１０１［ｘ］［ｘ］」（ｘは任意）の制御情報を持っていないので、制御情報（要素番号４〜７）がそのまま出力される。
【００７８】
クロックサイクルＴ５において、アドレス比較回路２３０の出力値が０であるため、制御情報修正回路２４０は、制御情報ＲＥＧ２１３が出力する制御情報「１０００［１１］［１１］」をそのまま出力する。
【００７９】
クロックサイクルＴ５において、先頭要素番号置換回路２５０は、制御情報ＲＥＧ２１０〜２１２が出力する制御情報（要素番号８〜１０）と制御情報修正回路２４０が出力する制御情報（要素番号１１）を受け取る。受け取った制御情報（要素番号８〜１１）のうち、要素番号９の制御情報が「１１０１［９］［８］」である。そのため、先頭要素番号が先頭要素番号ＲＥＧ２２０の出力する２に置換され、制御情報として「１１０１［９］［２］」が出力される。そのほかの制御情報（要素番号８、１０、１１）はそのまま出力される。
【００８０】
クロックサイクルＴ４において、制御情報出力ＲＥＧ３１０〜３１３は先頭要素番号置換回路２５０が出力した制御情報（要素番号０〜３）を取り込む。以下同様に、クロックサイクルＴ５において、制御情報出力ＲＥＧ３１０〜３１３は先頭要素番号置換回路２５０が出力した制御情報（要素番号４〜７）を取り込む。クロックサイクルＴ６において、制御情報出力ＲＥＧ３１０〜３１３は先頭要素番号置換回路２５０が出力した制御情報（要素番号８〜１１）を取り込む。
【００８１】
後続処理として、主記憶制御装置（リクエスト発行）は、アドレス出力ＲＥＧ３００〜３０３からアドレスを取り込み、制御情報出力ＲＥＧ３１０〜３１３から制御情報を取り込み、ベクトル処理装置３００１〜３００４からデータを取り込むと主記憶へのメモリリクエストを生成する。このとき制御情報が「１ｘｘｘ［ｘ］［ｘ］」（ｘは任意）に当該するベクトル要素のみリクエストが生成され、制御情報が当該しないベクトル要素についてはリクエストは生成されない。これにより主記憶へのアクセス回数が削減される。
【００８２】
次に図４の圧縮処理の動作を図６に示すタイムチャートを使用して説明する。ここでは、あらかじめ制御情報バッファ４００に制御情報が格納され、データバッファ４１０にデータが格納されているとして説明する。
【００８３】
クロックサイクルＴ１において、比較回路５４０の出力値が１であるため、制御情報バッファ４００は、バッファに格納されている制御情報「１０００［１］［１］」を出力する。
【００８４】
クロックサイクルＴ１において、比較回路５４０の出力値が１であるため、データバッファ４１０は、バッファに格納されているデータ「ＤＡＴＡ１」を出力する。
【００８５】
クロックサイクルＴ１において、制御情報デコーダ４２０は制御情報バッファ４００から制御情報「１０００［１］［１］」を受け取ると、制御情報から先頭要素番号「１」と要素番号「１」を取り出す。取り出した先頭要素番号は選択回路５５０に出力され、取り出した要素番号は選択回路５５１に出力される。
【００８６】
クロックサイクルＴ１において、比較回路５４０の出力値が１であるため、選択回路５５０は制御情報デコーダ４２０から先頭要素番号「１」を選択し、その値を出力する。
【００８７】
クロックサイクルＴ２において、生成要素番号ＲＥＧ５００は選択回路５５０が出力した先頭要素番号「１」を取り込む。
【００８８】
クロックサイクルＴ１において、比較回路５４０の出力値が１であるため、選択回路５５１は制御情報デコーダ４２０から要素番号「１」を選択し、その値を出力する。
【００８９】
クロックサイクルＴ２において、要素番号ＲＥＧ５１０は選択回路５５１が出力した先頭要素番号「１」を取り込む。
【００９０】
クロックサイクルＴ１において、比較回路５４０の出力値が１であるため、選択回路５５２はデータバッファ４１０が出力するデータ「ＤＡＴＡ１」を選択し、その値を出力する。
【００９１】
クロックサイクルＴ２において、データＲＥＧ５２０は選択回路５５２が出力したデータ「ＤＡＴＡ１」を取り込む。
【００９２】
クロックサイクルＴ２において、比較回路５４０は、生成要素番号ＲＥＧ５００が出力値と要素番号ＲＥＧ５１０の出力値を比較し、一致するため、判定結果として１を出力する。
【００９３】
クロックサイクルＴ３において、要素番号出力ＲＥＧ６００は、生成要素番号ＲＥＧ５００が出力する要素番号「１」を取り込む。
【００９４】
クロックサイクルＴ３において、データ出力ＲＥＧ６１０は、データＲＥＧ５２０が出力するデータ「ＤＡＴＡ１」を取り込む。
【００９５】
クロックサイクルＴ２において、比較回路５４０の出力値が１であるため、制御情報バッファ４００は、バッファに格納されている制御情報「１１０１［９］［７］」を出力する。
【００９６】
クロックサイクルＴ２において、比較回路５４０の出力値が１であるため、データバッファ４１０は、バッファに格納されているデータ「ＤＡＴＡ２」を出力する。
【００９７】
クロックサイクルＴ２において、制御情報デコーダ４２０は制御情報バッファ４００から制御情報「１１０１［９］［７］」を受け取ると、制御情報から先頭要素番号「７」と要素番号「９」を取り出す。取り出した先頭要素番号「７」は選択回路５５０に出力され、取り出した要素番号「９」は選択回路５５１に出力される。
【００９８】
クロックサイクルＴ２において、比較回路５４０の出力値が１であるため、選択回路５５０は制御情報デコーダ４２０から先頭要素番号「７」を選択し、その値を出力する。
【００９９】
クロックサイクルＴ３において、生成要素番号ＲＥＧ５００は選択回路５５０が出力した先頭要素番号「７」を取り込む。
【０１００】
クロックサイクルＴ２において、比較回路５４０の出力値が１であるため、選択回路５５１は制御情報デコーダ４２０から要素番号「９」を選択し、その値を出力する。
【０１０１】
クロックサイクルＴ３において、要素番号ＲＥＧ５１０は選択回路５５１が出力した先頭要素番号「９」を取り込む。
【０１０２】
クロックサイクルＴ２において、比較回路５４０の出力値が１であるため、選択回路５５２はデータバッファ４１０が出力するデータ「ＤＡＴＡ２」を選択し、その値を出力する。
【０１０３】
クロックサイクルＴ３において、データＲＥＧ５２０は選択回路５５２が出力したデータ「ＤＡＴＡ２」を取り込む。
【０１０４】
クロックサイクルＴ３において、加算器５３０は、「生成要素番号ＲＥＧ５００の出力値＋１（７＋１）」を計算し、その計算結果である８を出力する。
【０１０５】
クロックサイクルＴ３において、比較回路５４０は、生成要素番号ＲＥＧ５００の出力値と要素番号ＲＥＧ５１０の出力値を比較し、一致しないため、判定結果として０を出力する。
【０１０６】
クロックサイクルＴ４において、要素番号出力ＲＥＧ６００は、生成要素番号ＲＥＧ５００が出力する要素番号「７」を取り込む。
【０１０７】
クロックサイクルＴ４において、データ出力ＲＥＧ６１０は、データＲＥＧ５２０が出力するデータ「ＤＡＴＡ２」を取り込む。
【０１０８】
クロックサイクルＴ３において、比較回路５４０の出力値が０であるため、選択回路５５０は加算器５３０が出力する値「８」を選択し、その値を出力する。
【０１０９】
クロックサイクルＴ４において、生成要素番号ＲＥＧ５００は選択回路５５０が出力した値「８」を取り込む。
【０１１０】
クロックサイクルＴ３において、比較回路５４０の出力値が０であるため、選択回路５５１は要素番号ＲＥＧ５１０から要素番号「９」を選択し、その値を出力する。
【０１１１】
クロックサイクルＴ４において、要素番号ＲＥＧ５１０は選択回路５５１が出力した先頭要素番号「９」を取り込む。
【０１１２】
クロックサイクルＴ３において、比較回路５４０の出力値が０であるため、選択回路５５２はデータＲＥＧ５２０が出力するデータ「ＤＡＴＡ２」を選択し、その値を出力する。
【０１１３】
クロックサイクルＴ４において、データＲＥＧ５２０は選択回路５５２が出力したデータ「ＤＡＴＡ２」を取り込む。
【０１１４】
クロックサイクルＴ４において、加算器５３０は、「生成要素番号ＲＥＧ５００の出力値＋１（８＋１）」を計算し、その計算結果である９を出力する。
【０１１５】
クロックサイクルＴ４において、比較回路５４０は、生成要素番号ＲＥＧ５００の出力値と要素番号ＲＥＧ５１０の出力値を比較し、一致しないため、判定結果として０を出力する。
【０１１６】
クロックサイクルＴ５において、要素番号出力ＲＥＧ６００は、生成要素番号ＲＥＧ５００が出力する要素番号「８」を取り込む。
【０１１７】
クロックサイクルＴ５において、データ出力ＲＥＧ６１０は、データＲＥＧ５２０が出力するデータ「ＤＡＴＡ２」を取り込む。
【０１１８】
クロックサイクルＴ４において、比較回路５４０の出力値が０であるため、選択回路５５０は加算器５３０が出力する値「９」を選択し、その値を出力する。
【０１１９】
クロックサイクルＴ５において、生成要素番号ＲＥＧ５００は選択回路５５０が出力した値「９」を取り込む。
【０１２０】
クロックサイクルＴ４において、比較回路５４０の出力値が０であるため、選択回路５５１は要素番号ＲＥＧ５１０から要素番号「９」を選択し、その値を出力する。
【０１２１】
クロックサイクルＴ５において、要素番号ＲＥＧ５１０は選択回路５５１が出力した先頭要素番号「９」を取り込む。
【０１２２】
クロックサイクルＴ４において、比較回路５４０の出力値が０であるため、選択回路５５２はデータＲＥＧ５２０が出力するデータ「ＤＡＴＡ２」を選択し、その値を出力する。
【０１２３】
クロックサイクルＴ５において、データＲＥＧ５２０は選択回路５５２が出力したデータ「ＤＡＴＡ２」を取り込む。
【０１２４】
クロックサイクルＴ５において、比較回路５４０は、生成要素番号ＲＥＧ５００の出力値と要素番号ＲＥＧ５１０の出力値を比較し、一致するため、判定結果として１を出力する。
【０１２５】
クロックサイクルＴ６において、要素番号出力ＲＥＧ６００は、生成要素番号ＲＥＧ５００が出力する要素番号「９」を取り込む。
【０１２６】
クロックサイクルＴ６において、データ出力ＲＥＧ６１０は、データＲＥＧ５２０が出力するデータ「ＤＡＴＡ２」を取り込む。
【０１２７】
以降、同様の処理を繰り返すことにより、リストベクトル処理装置（展開処理）２０００はリストベクトル処理装置（圧縮処理）１０００で削減したリクエストを復元することができる。
【０１２８】
要素番号出力ＲＥＧ６００で取り込まれた要素番号とデータ出力ＲＥＧ６１０に取り込まれたデータは、この後調停回路２００５に出力される。調停回路２００５は、取り込んだデータに対して競合調停を行い、その後ベクトル処理装置３００１〜３００４に出力する。
【図面の簡単な説明】
【０１２９】
【図１】図１は、本発明に係るリストベクトル処理装置を説明するための概念図である。
【図２】図２は、リストベクトル処理装置の構成を示す。
【図３】図３は、リストベクトル処理装置（圧縮処理）の構成を示す。
【図４】図４は、リストベクトル処理装置（展開処理）の構成を示す。
【図５】図５は、リストベクトル処理装置（圧縮処理）が行う圧縮処理の動作を示すタイムチャートである。
【図６】図６は、圧縮処理の動作を示すタイムチャートである。
【図７】図７は、リストベクトル処理装置（圧縮処理）が行う圧縮処理の動作における情報移動と依存関係を図示したタイムチャートである。
【符号の説明】
【０１３０】
４２０…制御情報デコーダ
５３０…加算器
５４０…比較回路
５５０〜５５２…選択回路
１０００…リストベクトル処理装置（圧縮処理）
２０００…リストベクトル処理装置（展開処理）
２００１〜２００４…ベクトル要素復元回路
【図１】
2008165685.tif 000003
【図２】
2008165685.tif 000004
【図３】
2008165685.tif 000005
【図４】
2008165685.tif 000006
【図５】
2008165685.tif 000007
【図６】
2008165685.tif 000008
【図７】
2008165685.tif 000009