(57)【要約】  複数の演算器が多段構成された演算器束にデータを供給するメモリシステム（２２）であって、複数のブロックに分割されたメモリ部（３１）と、複数のレジスタが一列に接続されたシフトレジスタ（３３）とを備える。
2013137459.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、
複数のブロックに分割されたメモリ部と、
複数のレジスタが一列に接続されたシフトレジスタ部と
を備え、
前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、
前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力することを特徴とするデータ供給装置。
【請求項２】
前記データ供給装置に入力された複数のアドレス情報をそれぞれ保持する複数のアドレス保持部をさらに備え、
前記複数のアドレス保持部は、
前記メモリ部の各ブロックに一対一に対応するように各ブロックに接続された複数の第１のアドレス記憶回路と、
前記メモリ部の各ブロックのいずれにも接続されていない複数の第２のアドレス記憶回路と、を含むことを特徴とする請求項１に記載のデータ供給装置。
【請求項３】
前記シフトレジスタ部は、前記メモリ部の異なる２つのブロックから読み出されたデータのいずれかを選択するセレクタを含み、
前記第１のアドレス記憶回路に保持されたアドレス情報を用いて、当該第１のアドレス記憶回路が接続されたブロック及び、当該ブロックに隣接する他のブロックからの各読み出しが行なわれた場合において、
前記シフトレジスタ部は、前記セレクタを用いて、前記第１のアドレス記憶回路に保持されたアドレス情報の一部のビットに基づき、前記２つのブロックから読み出されたデータのうちの１つを選択することを特徴とする請求項２に記載のデータ供給装置。
【請求項４】
前記演算器束の最終段を構成する１つまたは複数の演算器の演算結果を前記メモリ部に書き込み可能なフィードバック機構をさらに備えることを特徴とする請求項１〜３のいずれか一項に記載のデータ供給装置。
【請求項５】
前記各第１のアドレス記憶回路に保持された各アドレス情報は、前記データ供給装置に入力されたアドレス情報に設定されたオフセット、及び、当該アドレス情報に当該オフセットが加算されたアドレス情報、のうちのいずれかであり、
前記各第２のアドレス記憶回路に保持された各アドレス情報は、前記データ供給装置に入力されたアドレス情報に設定されたオフセットであることを特徴とする請求項２または３に記載のデータ供給装置。
【請求項６】
前記シフトレジスタ部は、前記オフセットを用いて、各レジスタからの出力値を決定することを特徴とする請求項５に記載のデータ供給装置。
【請求項７】
前記シフトレジスタ部は、自身の各レジスタの位置を前記オフセットとして用いることにより、各レジスタからの出力値を決定することを特徴とする請求項６に記載のデータ供給装置。
【請求項８】
前記データ供給装置に２つのアドレス情報が入力された場合において、
前記シフトレジスタ部は、
自身の一部の各レジスタの位置を、前記データ供給装置に入力された一方のアドレス情報に設定されたオフセットとして用いることにより、前記一部の各レジスタからの出力値を決定し、
自身の他の一部の各レジスタの位置を、前記データ供給装置に入力された他方のアドレス情報に設定されたオフセットとして用いることにより、前記他の一部の各レジスタからの出力値を決定することを特徴とする請求項６に記載のデータ供給装置。
【請求項９】
前記データ供給装置に複数のアドレス情報が入力された場合において、
前記シフトレジスタ部は、
前記データ供給装置に入力された１つのアドレス情報に設定されたオフセットを用いて、自身の一部の各レジスタからの出力値を決定し、
前記データ供給装置に入力された残余のアドレス情報を用いて、前記メモリ部のブロックから読み出されたデータを、自身の他の一部の各レジスタからの出力値として出力することを特徴とする請求項６に記載のデータ供給装置。
【請求項１０】
複数の前記演算器束が多段構成されたデータ処理装置であって、
或る一連の高速実行後、次の高速実行を開始する際に、或る演算器束にデータを供給する請求項１〜９のいずれか一項に記載のデータ供給装置の前記メモリ部の内容が別の演算命令にて使用することができる場合、前記演算器束を構成する演算器に対する演算命令の写像を変更することを特徴とするデータ処理装置。
【請求項１１】
前記データ処理装置は、複数の行の機械語命令からなる命令コードを実行するためのデータ処理装置であって、
前記命令コードに記述された複数のレジスタ番号に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、
前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて前記複数の行の機械語命令のいずれかの機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第１演算部と、前記複数の行の機械語命令のいずれかのうち、前記第１演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第２演算部と、を含むｎ個の演算部と、
前記第１演算部が演算を実行したときにおける前記第１演算部の演算結果の出力先であり、且つ、前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部と
を備え、
前記第１レジスタファイル部は、前記第１演算部による演算処理の対象外であったデータを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに、当該データを転送すると共に、
前記第１保持部は、自身が前記第１演算部の演算結果を保持する場合には、前記第１演算部の演算結果の出力先を前記第２演算部として、前記第１演算部の演算結果を前記第２演算部に転送し、
前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第１演算部により実行される演算と並列処理することを特徴とする請求項１０に記載のデータ処理装置。
【請求項１２】
前記ｎ個のレジスタファイル部は、前記第２レジスタファイル部の各第２レジスタと対応する複数の第３レジスタを含む第３レジスタファイル部をさらに含み、
前記ｎ個の演算部は、前記複数の行の機械語命令のいずれかのうち、前記第１演算部及び前記第２演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第３演算部をさらに含み、
前記ｎ個の保持部は、前記第２演算部が演算を実行したときにおける前記第２演算部の演算結果の出力先であり、且つ、前記第２演算部の演算結果を一時的に保持する第２保持部をさらに含んでおり、
前記第２レジスタファイル部は、前記第２演算部による演算処理の対象外であったデータを保持する第２レジスタに対応する前記第３レジスタファイル部の第３レジスタに、当該データを転送すると共に、
前記第２保持部は、自身が前記第２演算部の演算結果を保持する場合には、前記第２演算部の演算結果の出力先を前記第３演算部として、前記第２演算部の演算結果を前記第３演算部に転送し、
前記第３演算部は、前記第３レジスタファイル部の各第３レジスタの読み出しデータ及び前記第２保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第１演算部により実行される演算及び前記第２演算部により実行される演算と並列処理することを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
前記ｎ個の保持部に含まれるＮ（Ｎは１以上の整数であって、ｎ以下）番目の保持部は、
自身が保持する演算結果が前記ｎ個の演算部に含まれる（Ｎ＋２）番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記ｎ個のレジスタファイル部に含まれる（Ｎ＋２）番目のレジスタファイル部に転送する一方、
自身が保持する演算結果が前記（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部に転送することを特徴とする請求項１１または１２に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置に係り、特に、当該データ処理装置へのデータ供給に好適なデータ供給手法に関するものである。
【背景技術】
【０００２】
近年のマイクロプロセッサにおいては、マシンサイクルを短縮するとともに、１マシンサイクル当たりに実行される命令の数を増やすことにより、実効性能の向上を図る方式が多く提案されている。【０００３】
このような多数の命令を並列に処理する方式として、例えば、演算器アレイ方式が知られている。この演算器アレイ方式は、目的とするデータ処理に合わせて演算器ネットワークを固定し、その固定された演算器ネットワークに入力データを流し込む方式である（例えば、特許文献１〜３を参照）。【０００４】
この演算器アレイ方式では、複数の演算器からなる演算器ネットワークを利用することにより、多くの機能を並列実行することが可能である。【０００５】
しかし、演算器アレイ方式は、既存の機械語命令を実行することができない。このため、この演算器アレイ方式に特有の機械語命令を生成するための専用の機械語命令生成手段が必要であり、汎用性に欠けている。【０００６】
そこで、一般的な機械語命令を実行し、且つ、機械語命令の並列実行が可能な方式としては、例えば、スーパスカラ方式、ベクトル方式、ＶＬＩＷ（Very Long Instruction Word）方式が知られている。これらの方式では、１つの命令の中で複数の演算等が指定され、それらが同時に実行されることになる。【０００７】
先ず、スーパスカラ方式は、機械語命令列の中から同時実行可能な機械語命令をハードウェアが動的に検出して並列実行する方式である。【０００８】
このスーパスカラ方式は、既存のソフトウェア資産をそのまま活用できる強みがある一方、機構の複雑さ及び消費電力の多さから、最近では敬遠される傾向にある。【０００９】
次に、ベクトル方式は、多数のレジスタを一次元方向に並べたベクトルレジスタを用いて、ロード、演算、ストア等の基本操作を繰返し適用する方式であり、電力効率の良い高速化が可能である。さらに、キャッシュメモリが不要となることから、主記憶とベクトルレジスタ間のデータ転送速度が保証され、その結果、安定した高速化が実現される。【００１０】
しかし、ベクトル方式では、異なるベクトルレジスタの同一要素番号間の演算のみが可能であり、同一ベクトルレジスタ内の隣接要素を参照しながら演算を進めるプログラムには適さない。【００１１】
最後に、ＶＬＩＷ方式は、１つの命令の中で複数の演算等が指定され、それらが同時に実行される方式である。このＶＬＩＷ方式では、例えば、４命令を同時にフェッチし、４命令を同時にデコードし、汎用レジスタから必要なデータを読み出し、複数の演算装置により同時に演算を行い、演算装置に付随する演算結果格納手段に演算結果を格納する。【００１２】
そして、次のサイクルではその演算結果格納手段から内容を読み出して、汎用レジスタに書き込みを行なうとともに、次の演算においてその読み出された演算結果が必要となる場合には、その演算結果を演算装置の入力へバイパスする。【００１３】
一方、ロード命令に対しては、ＬＤ／ＳＴユニットにおいてキャッシュメモリを参照し、ＬＤ／ＳＴユニットに付随するロード結果格納手段にロード結果を格納した後、次のサイクルにおいて、演算装置が動作を行なう。【００１４】
このようにしてＶＬＩＷ方式では、並置された演算装置及びＬＤ／ＳＴユニットの各々の数だけ演算を同時実行することができる。さらに、ＶＬＩＷ方式では、並列実行可能な命令列をコンパイラ等によりあらかじめスケジュールしておくため、スーパスカラ方式のように同時実行可能な機械語命令をハードウェアが動的に検出する機構が不要となる。したがって、ＶＬＩＷ方式では、電力効率の良い命令実行が可能である。しかし、多数のロードストア命令を同時に実行するためには、多数のポートを有するメモリシステムを装備する必要がある。このようなメモリシステムは、面積効率が極めて悪くなるため、ＶＬＩＷ方式による同時実行可能命令数の拡大にも限界がある。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】日本国公開特許公報「特開平８−８３２６４号公報（１９９６年３月２６日公開）」
【特許文献２】日本国公開特許公報「特開２００１−３１２４８１号公報（２００１年１１月９日公開）」
【特許文献３】日本国公開特許公報「特開２００３−７６６６８号公報（２００３年３月１４日公開）」
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところで、上述の演算器アレイ方式においては、キャッシュ方式の採用が性能向上に大きく寄与する。そのキャッシュ方式としては、演算器ネットワークの随所に１次キャッシュを内蔵させると同時に、外部の主記憶との間に２次キャッシュを設ける方式が挙げられる。この方式では、２次キャッシュのヒット率を高め、主記憶へのアクセスを低減し、各演算器の性能向上を図っている。【００１７】
このようなキャッシュ方式を採用する場合では、同時に複数の演算器にデータを供給するために、演算器ネットワークの随所に設けられた１次キャッシュの内容を近傍の演算器に供給するための大規模なデータ伝搬機構が必要となる。【００１８】
具体的には、１次キャッシュから読み出したデータを演算器に付随させた小規模バッファの全てを通過させつつ、各小規模バッファが一定量を保存する機構である。この機構では、１次キャッシュから毎サイクルデータを読み出す多数の配線が多くの小規模バッファに接続されることとなる。すなわち、１次キャッシュの内容を演算器に効率よく伝搬させることに関しては、何ら考慮されていないといった課題があった。【００１９】
上記課題に鑑み、本発明の目的は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置において、当該データ処理装置へデータを効率よく供給することにより、各演算器の消費電力を削減可能なデータ供給装置を提供することにある。
【課題を解決するための手段】
【００２０】
従来型演算器アレイ方式においては、複数ｗａｙが集約された１次キャッシュが演算器ネットワークの随所に配置され、１次キャッシュが直接接続されない演算器に対しては、小規模バッファを通じてデータを供給していた。この方式では、機械語命令列中のロード命令の配置に関する自由度が大きい利点があるものの、小規模バッファ間を接続する配線が大規模になる欠点があった。【００２１】
本発明では、１次キャッシュの各ｗａｙを演算器の近傍に一様に分散配置させるとともに、小規模バッファ間の接続を排除している。このため、機械語命令列中のロード命令の配置に関して制約が生じるものの、１次キャッシュに格納されるデータの内容に応じて命令写像位置を変更する方式とすることにより、実質的に、従来技術と同等の命令実行能力を確保している。すなわち、能力を落すことなく、配線数を減らすことにより、課題を解決している。【００２２】
上記目的を達成するために、本発明に係るデータ供給装置は、複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、複数のブロックに分割されたメモリ部と、複数のレジスタが一列に接続されたシフトレジスタ部とを備え、前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力する。【００２３】
すなわち、上記構成によれば、１つのメモリ部を複数のブロックに分割し、シフトレジスタ部の先頭または途中のレジスタに各ブロックから読み出されたデータを書き込み可能となっている。【００２４】
そして、メモリ部及びシフトレジスタ部の各々は、データ供給装置に入力された複数のアドレス情報を基に参照され、各アドレス情報に対応する各アドレス位置の内容を出力可能となっている。【００２５】
このようなデータ供給装置を用いて、複数の演算器が多段構成された演算器束にデータを供給することにより、異なる演算器束の各々にデータを供給するデータ供給装置間におけるデータ伝搬が不要となる。【００２６】
それゆえ、従来のような、演算器ネットワークの随所に設けられた１次キャッシュの内容を近傍の演算器に供給するための大規模なデータ伝搬機構が不要となるので、データ処理装置へデータを効率よく供給し、これにより、各演算器の消費電力を削減することができる。【００２７】
本発明に係るデータ処理装置は、複数の前記演算器束が多段構成されたデータ処理装置であって、或る一連の高速実行後、次の高速実行を開始する際に、或る演算器束にデータを供給する上記データ供給装置の前記メモリ部の内容が別の演算命令にて使用することができる場合、前記演算器束を構成する演算器に対する演算命令の写像を変更する。【００２８】
上記構成によれば、データ供給装置のメモリ部に格納されるデータの内容に応じて命令写像位置を変更することにより、従来技術と同等の命令実行能力を確保することができる。
【発明の効果】
【００２９】
本発明のデータ供給装置は、以上のように、複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、複数のブロックに分割されたメモリ部と、複数のレジスタが一列に接続されたシフトレジスタ部とを備え、前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力する。【００３０】
それゆえ、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置において、当該データ処理装置へデータを効率よく供給することにより、各演算器の消費電力を削減することができるという効果を奏する。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態におけるＬＡＰＰの構成を示す図である。
【図２】本発明の他の実施形態におけるＬＡＰＰの構成を示す図である。
【図３】上記ＬＡＰＰにおける第１〜３データ処理段からなる３データ処理段の構成を、Ｎデータ処理段の構成に拡張したＬＡＰＰの構成を示す図である。
【図４】上記ＬＡＰＰにおける、キャッシュメモリからのデータ供給を説明するための模式図である。
【図５】４段毎に１つの中容量メモリを配置する構成を説明するための模式図である。
【図６】中容量メモリを含むメモリシステムの詳細な構成図である。
【図７】上記メモリシステムの動作を説明するための説明図である。
【図８】上記メモリシステムの動作を説明するための説明図である。
【図９】上記メモリシステムの動作を説明するための説明図である。
【図１０】上記メモリシステムの動作を説明するための説明図である。
【図１１】上記メモリシステムの動作を説明するための説明図である。
【図１２】上記メモリシステムの動作を説明するための説明図である。
【図１３】画像処理の一例を従来技術により実現した場合の命令列を示す図である。
【図１４】画像処理の一例を本発明により実現した場合の命令列を示す図である。
【図１５】浮動小数点演算処理の一例を従来技術により実現した場合の命令列を示す図である。
【図１６】浮動小数点演算処理の一例を本発明により実現した場合の命令列を示す図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。
【００３３】
（本発明の前提技術）
本発明は、多数の演算器を並置する計算機構成方式におけるデータ供給手法に関するものである。本発明は、特に、表１に示すメモリ参照パターンに対応するメモリ参照機構に関連が深いものである。
【００３４】
【表１】
2013137459.tif 000003
【００３５】
一般に、上述のデータ供給手法におけるメモリ参照機構において、競合する２つの構成はベクトル機構とメニコアである。完全に規則的なメモリ参照と演算とからなるプログラム、すなわち、要求メモリ性能：演算性能＝１：１であるプログラムであれば、ベクトル機構が最適である。ベクトル機構であれば、ベクトルロード命令とベクトル演算命令のオーバラップ実行により、メモリ性能と演算性能とを使い切ることができる。
【００３６】
しかし、実際には、メモリ参照にはランダムアクセスの要素があるのが通常である。このため、大域的には規則的なメモリ参照であっても、局所的にはランダムな参照である場合、ベクトル機構は対応することができない（例えば、配列添字Ｉ−１、Ｉ、Ｉ＋１を同時に参照する等）。
【００３７】
一方、メニコアでは、上述のランダムアクセスには対応できるものの、メモリ性能：演算性能＝１：１を維持するためには、極めて高度なスーパスカラ機能が必要となる。特に、アドレス計算とメモリ参照と演算とを完全にオーバラップさせるには、アドレス計算をどのように隠蔽できるかが重要となる。
【００３８】
この要求に応えるものとして、例えば、以下の演算器アレイ型アクセラレータ（Linear Array Pipeline Processor）（以下、「ＬＡＰＰ」と呼ぶ）を用いることができる。このＬＡＰＰ（データ処理装置）は、複数の演算器を２次元アレイ状に配置する粗粒度リコンフィギャラブルアレイ（Coarse-Grained Reconfigurable Architecture）（以下、「ＣＧＲＡ」と呼ぶ）を採用し、且つ、既存の機械語命令を用いるものである。
【００３９】
図１は、上述のＬＡＰＰの構成を示す図である。図１に示すように、このＬＡＰＰ１０１は、コンフィギュレーションメモリ１０と、第１レジスタファイル部１１０と、第２レジスタファイル部２１０と、第１演算装置（第１演算部、第１保持部）１２０と、第２演算装置（第２演算部、第２保持部）２２０と、を備えている。
【００４０】
コンフィギュレーションメモリ１０は、公知のＣＧＲＡを構成するものであり、コンフィギュレーションデータを格納する。コンフィギュレーションデータは、第１演算装置１２０および第２演算装置２２０における処理内容を規定するデータである。コンフィギュレーションメモリ１０は、このようなコンフィギュレーションデータを第１レジスタファイル部１１０および第２レジスタファイル部２１０に転送する。
【００４１】
第１レジスタファイル部１１０は、第１演算装置１２０における演算処理に必要なデータを保持するものである。第１レジスタファイル部１１０は、複数のレジスタ（第１レジスタ）ｒ０〜ｒ１１からなるレジスタ群１１１と、レジスタ群１１１の各レジスタｒ０〜ｒ１１の読み出しデータを第１レジスタファイル部１１０の外部に転送するための転送器１１２と、を有している。
【００４２】
レジスタ群１１１の各レジスタｒ０〜ｒ１１に対する読み出しや書き込みは、コンフィギュレーションメモリ１０に格納されたコンフィギュレーションデータに基づいて実行される。レジスタ群１１１の各レジスタｒ０〜ｒ１１は、自身のレジスタ番号０〜１１をアクセスのキーとして読み出しや書き込みがされる。
【００４３】
転送器１１２は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第１レジスタファイル部１１０の外部に転送する。
【００４４】
第２レジスタファイル部２１０は、第２演算装置２２０における演算処理に必要なデータを保持する。第２レジスタファイル部２１０は、複数のレジスタ（第２レジスタ）ｒ０〜ｒ１１からなるレジスタ群２１１と、レジスタ群２１１の各レジスタｒ０〜ｒ１１の読み出しデータを第２レジスタファイル部２１０の外部に転送するための転送器２１２と、を有している。
【００４５】
レジスタ群２１１の各レジスタｒ０〜ｒ１１に対する読み出しや書き込みは、コンフィギュレーションメモリ１０に格納されたコンフィギュレーションデータに基づいて実行される。レジスタ群２１１の各レジスタｒ０〜ｒ１１は、自身のレジスタ番号０〜１１をアクセスのキーとして読み出しや書き込みがされる。
【００４６】
レジスタ群２１１の各レジスタｒ０〜ｒ１１は、第１レジスタファイル部１１０のレジスタ群１１１の各レジスタｒ０〜ｒ１１と一対一に対応しており、レジスタ群１１１及びレジスタ群２１１の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。そして、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１の各レジスタｒ０〜ｒ１１の読み出しデータを、レジスタ群１１１の各レジスタｒ０〜ｒ１１のレジスタ番号と同一のレジスタ番号を持つ、第２レジスタファイル部２１０のレジスタ群２１１の各レジスタｒ０〜ｒ１１に、転送可能である。
【００４７】
例えば、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１のレジスタｒ３の読み出しデータを、第２レジスタファイル部２１０のレジスタ群２１１のレジスタｒ３に転送可能である。また、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１のレジスタｒ９の読み出しデータを、第２レジスタファイル部２１０のレジスタ群２１１のレジスタｒ９に転送可能である。
【００４８】
転送器２１２は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第２レジスタファイル部２１０の外部に転送する。
【００４９】
第１演算装置１２０は、ＬＡＰＰ１０１における実体的な処理を行なうものである。第１演算装置１２０は、演算器１−１〜１−４からなる演算器群１２１と、保持器１−１〜１−４からなる保持器群１２２と、転送器１２３と、を有している。
【００５０】
第１演算装置１２０は、第１レジスタファイル部１１０と共に、第１データ処理段を構成しており、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１の各レジスタｒ０〜ｒ１１の読み出しデータを第１演算装置１２０に転送可能である。そして、第１演算装置１２０の演算器群１２１の各演算器１−１〜１−４は、第１レジスタファイル部１１０の各レジスタｒ０〜ｒ１１のうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器１−１〜１−４の演算処理は同時に実行される。
【００５１】
保持器群１２２の保持器１−１〜１−４は、各々に対応する演算器１−１〜１−４の演算結果を格納する。各保持器１−１〜１−４は、各演算器１−１〜１−４と一対一に対応している。
【００５２】
転送器１２３は、各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を第１演算装置１２０の外部に転送する。
【００５３】
第２演算装置２２０は、ＬＡＰＰ１０１における実体的な処理を行なうものである。第２演算装置２２０は、演算器２−１〜２−４からなる演算器群２２１と、保持器２−１〜２−４からなる保持器群２２２と、転送器２２３と、を有している。
【００５４】
第２演算装置２２０は、第２レジスタファイル部２１０と共に、第２データ処理段を構成しており、第２レジスタファイル部２１０の転送器２１２は、レジスタ群２１１の各レジスタｒ０〜ｒ１１の読み出しデータを第２演算装置２２０に転送可能である。そして、第２演算装置２２０の演算器群２２１の各演算器２−１〜２−４は、第２レジスタファイル部２１０の各レジスタｒ０〜ｒ１１のうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器２−１〜２−４の演算処理は同時に実行される。
【００５５】
さらに、第２演算装置２２０の演算器群２２１の各演算器２−１〜２−４は、第１演算装置１２０の保持器群１２２の各保持器１−１〜１−４に格納されている演算結果を取得することができる。第１演算装置１２０の転送器１２３は、各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を第２演算装置２２０に転送可能となっている。
【００５６】
そして、第２演算装置２２０の各演算器２−１〜２−４は、第２レジスタファイル部２１０の各レジスタｒ０〜ｒ１１の読み出しデータに代えて、それら演算結果を用いて演算処理を実行することができる。
【００５７】
保持器群２２２の保持器２−１〜２−４は、各々に対応する演算器２−１〜２−４の演算結果を格納する。各保持器２−１〜２−４は、各演算器２−１〜２−４と一対一に対応している。
【００５８】
転送器２２３は、各保持器２−１〜２−４に格納されている、各演算器２−１〜２−４の演算結果を第２演算装置２２０の外部に転送する。
【００５９】
次に、ＬＡＰＰ１０１の動作について説明する。
【００６０】
ＬＡＰＰ１０１においては、レジスタ群１１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第１演算装置１２０による演算処理が行なわれる。
【００６１】
第１演算装置１２０による演算処理と同時に、第１演算装置１２０による演算処理の対象外であったレジスタ群１１１のレジスタｒ０〜ｒ１１の読み出しデータが第２レジスタファイル部２１０に転送される。
【００６２】
そして、次のサイクルにおいて、第２レジスタファイル部２１０のレジスタ群２１１のレジスタｒ０〜ｒ１１に転送されたデータを用いて、第２演算装置２２０による演算処理が行なわれる。
【００６３】
第２演算装置２２０による演算処理と同時に、レジスタ群１１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第１演算装置１２０による演算処理が行なわれる。
【００６４】
さらに、第２演算装置２２０が第１演算装置１２０の演算結果を必要とする場合には、第１演算装置１２０の転送器１２３が各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を第２演算装置２２０に転送する。
【００６５】
図２に示すＬＡＰＰ１０２は、図１のＬＡＰＰ１０１に、第３レジスタファイル部３１０と、第３演算装置（第３演算部、第３保持部）３２０と、をさらに備えたものである。これにより、第１演算装置１２０による演算処理及び第２演算装置２２０による演算処理に加えて、第３演算装置３２０による演算処理も同時に実行するものである。
【００６６】
第３レジスタファイル部３１０は、第３演算装置３２０における演算処理に必要なデータを保持するものである。第３レジスタファイル部３１０は、複数のレジスタ（第３レジスタ）ｒ０〜ｒ１１からなるレジスタ群３１１と、レジスタ群３１１の各レジスタｒ０〜ｒ１１の読み出しデータを第３レジスタファイル部３１０の外部に転送するための転送器３１２と、を有している。
【００６７】
レジスタ群３１１の各レジスタｒ０〜ｒ１１に対する読み出しや書き込みは、コンフィギュレーションメモリ１０に格納されたコンフィギュレーションデータに基づいて実行される。レジスタ群３１１の各レジスタｒ０〜ｒ１１は、自身のレジスタ番号０〜１２をアクセスのキーとして読み出しや書き込みがされる。
【００６８】
レジスタ群３１１の各レジスタｒ０〜ｒ１１は、第２レジスタファイル部２１０のレジスタ群２１１の各レジスタｒ０〜ｒ１１と一対一に対応しており、レジスタ群２１１及びレジスタ群３１１の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。そして、第２レジスタファイル部２１０の転送器２１２は、レジスタ群２１１の各レジスタｒ０〜ｒ１１の読み出しデータを、レジスタ群２１１の各レジスタｒ０〜ｒ１１のレジスタ番号と同一のレジスタ番号を持つ、第３レジスタファイル部３１０のレジスタ群３１１の各レジスタｒ０〜ｒ１１に、転送可能である。
【００６９】
転送器３１２は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第３レジスタファイル部３１０の外部に転送する。
【００７０】
また、第３レジスタファイル部３１０は、第１演算装置１２０の転送器１２３により、第１演算装置１２０の各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を取得することができる。
【００７１】
第３演算装置３２０は、ＬＡＰＰ１０２における実体的な処理を行なうものである。第３演算装置３２０は、演算器３−１〜３−４からなる演算器群３２１と、保持器３−１〜３−４からなる保持器群３２２と、転送器３２３と、を有している。
【００７２】
第３演算装置３２０は、第３レジスタファイル部３１０と共に、第３データ処理段を構成しており、第３レジスタファイル部３１０の転送器３１２は、レジスタ群３１１の各レジスタｒ０〜ｒ１１の読み出しデータを第３演算装置３２０に転送可能である。そして、第３演算装置３２０の演算器群３２１の各演算器３−１〜３−４は、第３レジスタファイル部３１０の各レジスタｒ０〜ｒ１１のうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器３−１〜３−４の演算処理は同時に実行される。
【００７３】
保持器群３２２の保持器３−１〜３−４は、各々に対応する演算器３−１〜３−４の演算結果を格納する。各保持器３−１〜３−４は、各演算器３−１〜３−４と一対一に対応している。
【００７４】
転送器３２３は、各保持器３−１〜３−４に格納されている、各演算器３−１〜３−４の演算結果を第３演算装置３２０の外部に転送する。
【００７５】
また、第３演算装置３２０は、第２演算装置２２０の転送器２２３により、第２演算装置２２０の各保持器２−１〜２−４に格納されている、各演算器２−１〜２−４の演算結果を取得することができる。
【００７６】
次に、ＬＡＰＰ１０２の動作について説明する。
【００７７】
ＬＡＰＰ１０２においては、レジスタ群２１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第２演算装置２２０による演算処理が行なわれる。
【００７８】
第２演算装置２２０による演算処理と同時に、第２演算装置２２０による演算処理の対象外であったレジスタ群２１１のレジスタｒ０〜ｒ１１の読み出しデータが第３レジスタファイル部３１０に転送される。
【００７９】
そして、次のサイクルにおいて、第３レジスタファイル部３１０のレジスタ群３１１のレジスタｒ０〜ｒ１１に転送されたデータを用いて、第３演算装置３２０による演算処理が行なわれる。
【００８０】
第３演算装置３２０による演算処理と同時に、レジスタ群２１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第２演算装置２２０による演算処理が行なわれる。
【００８１】
さらに、第３演算装置３２０が第２演算装置２２０の演算結果を必要とする場合には、第２演算装置２２０の転送器２２３が各保持器２−１〜２−４に格納されている、各演算器２−１〜２−４の演算結果を第３演算装置３２０に転送する。
【００８２】
また、第１演算装置１２０の演算結果を第２演算装置２２０が必要とせず、第３演算装置３２０が第１演算装置１２０の演算結果を必要とする場合がある。この場合には、第１演算装置１２０の結果を第３レジスタファイル部に格納することにより、第１演算装置１２０の演算結果を間接的に第３演算装置３２０に投入することができる。
【００８３】
なお、ＬＡＰＰ１０２における第１〜３データ処理段からなる３データ処理段の構成を、Ｎデータ処理段の構成に拡張してもよい。
【００８４】
例えば、Ｎを１以上の整数とする。この場合、第Ｎデータ処理段を構成する演算装置の演算結果は、その演算結果を第（Ｎ＋２）データ処理段以降の演算装置が使用する場合には、第（Ｎ＋２）データ処理段のレジスタファイル部に書き込まれる。
【００８５】
一方、その演算結果を第（Ｎ＋２）データ処理段以降の演算装置が使用しない場合には、その演算結果を第（Ｎ＋２）データ処理段のレジスタファイル部に書き込むことなく第（Ｎ＋１）データ処理段の演算装置に入力する。
【００８６】
次に、上述のＬＡＰＰ１０１および１０２におけるデータ供給手法について説明する。図３に、上述のＬＡＰＰ１０２における第１〜３データ処理段からなる３データ処理段の構成を、Ｎデータ処理段の構成に拡張したＬＡＰＰ１０３の構成を示す。なお、図３において、キャッシュメモリ１４の機構および小規模キャッシュメモリ１５の構成と、それらの間の伝搬機構とは、公知の技術を用いることができる。
【００８７】
図３に示すように、このＬＡＰＰ１０３は、複数の演算器１１に対し、メモリから大量データを供給する手法を用いている。演算データが、複数のレジスタファイル部１２を介して、複数の演算器１１からなる演算器ネットワーク上を１方向に伝搬するのに合わせて、メモリ上のデータも同一方向に伝搬させる。これにより、複数のロード命令が同時に複数のメモリアドレスを参照することができる。
【００８８】
具体的には、初段や後続段に配置した中容量メモリ１３において、キャッシュメモリ１４の３つのｗａｙの各々を１つの配列に対応させる。そして、各ｗａｙから毎サイクル１ワードを読み出し、次段へ伝搬させる。各段では、伝搬中の３ワードの値を各段の小規模キャッシュメモリ１５に取り込むことにより、あらかじめ決められたメモリアドレス範囲のデータをランダムに参照することができる。演算データとメモリデータとが同一速度で伝搬するため、同一イタレーションに属するロード命令は、どの段において小規模キャッシュメモリ１５を参照しても、同一のメモリアドレス範囲を参照できる。任意の段において、それ以前に配置した中容量メモリ１３の内容を参照できることから、各ループイタレーションにおいて、着目する配列要素の近傍の要素を必要とする場合であっても、ロード／ストア部１６により、ロードストア命令を任意の段に配置できる。
【００８９】
ＬＡＰＰ１０３では、以上の特性を利用して、表１に示したメモリ参照パターンに対応可能である。なお、広範囲のランダムオフセットについては、中容量メモリ１３が直接接続されている段においてのみ対応可能である。また、ロード内容に変更を加えて同一アドレスにストアする更新型については、ストアデータを深さ方向に１周させて元の配列に格納する。
【００９０】
（本発明の前提技術における問題点）
上述のＬＡＰＰ１０３では、複数のレジスタファイル部１２を備え、通常の機械語命令列を複数の演算器１１に写像し、高速実行できるという利点がある。しかし、上述のＬＡＰＰ１０３には、その実用化に向けて以下の課題がある。以下、図４を用いて、それら課題について説明する。図４は、ＬＡＰＰ１０３における、キャッシュメモリ１４からのデータ供給を説明するための模式図である。なお、図４において、キャッシュメモリ１４の機構および小規模キャッシュメモリ１５の構成と、それらの間の伝搬機構とは、公知の技術を用いることができる。
【００９１】
（１）中容量メモリ１３から読み出したデータを後続段に伝搬させるために、ｗａｙ数分のデータパス１７が必要となる。このような段間の配線数が増大すると、複数個のＬＳＩを接続して大規模な演算機構を実現することが難しくなる。
【００９２】
（２）プログラムによっては、多くのｗａｙを必要とする。ｗａｙ数を増加するには、ＬＡＰＰ１０３の深さ方向に段数を増加させて中容量メモリ１３の数を増加させるか、幅方向にｗａｙ数を増加させて各中容量メモリ１３の幅を増やす必要がある。いずれの場合でも、上述の（１）と同様、段間のデータパス１７の多さが障害となる。
【００９３】
（３）各配列要素を累算する場合、同一配列に対してロードとストアを行なう必要がある。上述のＬＡＰＰ１０３では、ロードデータとストアデータが１方向に伝搬するために、ストアデータを深さ方向に１周させて元の配列に格納する必要がある。ストアする配列数が多い場合、ロードデータの伝搬に必要なデータパスに加えて、ストアデータの伝搬にも多くのデータパス１８を設けなければならない。
【００９４】
（本発明の構成）
本発明のＬＡＰＰは、上述のＬＡＰＰ１０３と同様、中容量メモリを分散配置させる構成を採用する一方、中容量メモリから読み出したデータを後続段に無条件に伝搬させる規則的なデータパスを設けない。これにより、上述のＬＡＰＰ１０３の課題であった段間データパスの配線数の増大を防止する。
【００９５】
図５は、４段毎に１つの中容量メモリを配置する構成である。もちろん、この段数は４段に限られるものではない。要は、１つまたは複数の演算器から構成される「段」を複数連結（多段構成）した「バンドル」（演算器束）毎に、１つの中容量メモリを配置する構成であればよい。言い換えれば、本発明のＬＡＰＰは、このような「バンドル」を複数個、多段構成したものであると言える。それゆえ、図５の構成では、図３及び図４で示した、小規模キャッシュメモリ１５間の伝搬機構が不要となっている。
【００９６】
また、図６は、中容量メモリを含むメモリシステムの詳細な構成図である。なお、以降の図においては、黒い四角は主に出力ラッチ、白い四角は出力以外に演算の入力として使用するラッチを示している。また、各々の右横添付の数字はビット幅である。
【００９７】
図５および図６に示すように、本発明のＬＡＰＰが上述のＬＡＰＰ１０３と異なる点は、中容量メモリにキャッシュメモリの１つのｗａｙを搭載しつつ、複数のブロックに分割して使用することを可能とする点にある。さらに、１つのベースアドレスと、６つのオフセットを組み合わせることにより、１つのｗａｙに対して６箇所のアドレスを使用したロード命令の実行を可能としている点にある。
【００９８】
通常、任意の６箇所のアドレスを使用可能とするためには、６ポートメモリを設計する必要がある。しかし、このような多ポートメモリは、面積効率や動作速度の点から、実用的ではない。
【００９９】
これに対し、本発明では、表１に示した参照パターンに対応しつつも、使用可能なアドレス範囲に制約を設ける。これにより、物理的には、読み出しに１ポート、書き込みに１ポートを備える一般的なメモリを用いて、６リード、２ライトのメモリ機能を実現している。
【０１００】
図５に示すように、本発明のＬＡＰＰ１は、主として、複数の演算器２１からなる演算器ネットワークと、キャッシュメモリ（図示省略）の１つのｗａｙを含む、複数のメモリシステム（データ供給装置）２２と、を備えている。
【０１０１】
各メモリシステム２２は、図５に示すように、複数の演算器２１からなる演算器ネットワークにおいて、４段ごとに配置されている。そして、各メモリシステム２２は、キャッシュメモリ（図示省略）の各ｗａｙに対応し、対応するｗａｙとの間においてデータのやり取りを行なうものである。
【０１０２】
メモリシステム２２において、前段から供給されるアドレス情報に基づきアドレス計算を行った結果が、メモリシステム２２の手前（上部）の複数のラッチ（アドレス保持部）２３に格納される。次のサイクルでは、メモリシステム２２内の中容量メモリ等が参照され、メモリシステム２２の後ろ（下部）の複数のラッチ２４に格納される。さらに、次のサイクルでは、複数の演算器２１の入力として使用されて演算結果が格納される。
【０１０３】
なお、下から１段目及び２段目の演算器２１を通過した後に得られる演算結果は、最下部の複数のラッチ２５に格納される。さらに、次のサイクルにおいて、複数のラッチ２５に格納された演算結果を、メモリシステム２２にストアするか、さらに、後続段へ送るか、あるいは、両方の選択を可能な構成となっている。
【０１０４】
図６は、図５に示したメモリシステム２２の構成を示す図である。図６に示すように、メモリシステム２２は、主として、複数のブロック（ここでは４個のブロック）に分割されたメモリ部３１と、お互いに隣接し合うブロック同士を連結するための連結部３２と、シフトレジスタ（シフトレジスタ部）３３と、を備えている。シフトレジスタ３３は、後述するように、複数のレジスタが一列に接続されている。
【０１０５】
図６に示すように、図５の複数のラッチ２３には、メモリ部３１の各ブロックに一対一に対応するように各ブロックに接続された複数のラッチ（第１のアドレス記憶回路）２３−１、２３−２、２３−４、２３−５と、メモリ部３１の各ブロックのいずれにも接続されていない複数のラッチ（第２のアドレス記憶回路）２３−３、２３−６と、が含まれている。
【０１０６】
もちろん、ラッチ２３−３、２３−６について、メモリ部３１から分割されたブロックに、それぞれ、対応付けしてもよい。逆に、ラッチ２３−１、２３−２、２３−４、２３−５について、メモリ部３１のいずれのブロックにも接続されないようにしてもよい。要は、メモリ部３１が複数のブロックに分割されており、各ブロックに対応付けられたラッチがあればよい。
【０１０７】
以下、上述の表１の各メモリ参照パターンについて、図６に示したメモリシステム２２の動作を説明する。
【０１０８】
（第１のケース）
表１の第１のケース（１）は、広範囲のアドレスをランダムに参照するケースである。図７に示すように、ＬＤ−ＢＡＳＥ２０１にベースアドレスが設定され、ラッチ２０２にオフセットが設定されると、ベースアドレスにオフセットが加算され、有効アドレスＡ０が指定される。
【０１０９】
有効アドレスＡ０がラッチ２３−１に格納されると、次のサイクルで、有効アドレスＡ０は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ０」のラッチ２０３に供給される。同様に、有効アドレスＡ０は、「ｗａｙ０．ｂｌｋ０」に隣接する、メモリ部３１の他のブロックである「ｗａｙ０．ｂｌｋ１」のラッチ２０４に供給される。
【０１１０】
各ブロックから読み出された値は連結部３２に送られ、連結部３２により、一方が選択される。連結部３２は、ラッチ２３−１に格納された有効アドレスＡ０の上位ビットを用いて、上述の選択を実行する。連結部３２により選択されたデータは、シフトレジスタ３３のセレクタ３３−１を介して、ラッチ２４のＯ０に出力される。
【０１１１】
なお、ラッチ２４のＯ０として出力すべきデータのサイズが、「ｗａｙ０．ｂｌｋ０」のみに収まる場合には、上述したような、「ｗａｙ０．ｂｌｋ０」に「ｗａｙ０．ｂｌｋ１」を連結させる連結機能を用いる必要はない。すなわち、「ｗａｙ０．ｂｌｋ０」から読み出されたデータをラッチ２４のＯ０に出力すればよい。
【０１１２】
同様に、ＬＤ−ＢＡＳＥ２０１に新たにベースアドレスが設定され、ラッチ２０５に新たにオフセットが設定されると、ベースアドレスにオフセットが加算され、有効アドレスＡ３が指定される。有効アドレスＡ３がラッチ２３−４に格納された場合、メモリ部３１の２つのブロック「ｗａｙ０．ｂｌｋ２」のラッチ２０６及び「ｗａｙ０．ｂｌｋ３」のラッチ２０７に供給され、各ブロックから読み出された値は連結部３２に送られる。連結部３２は、ラッチ２３−４に格納された有効アドレスＡ３の上位ビットを用いて、一方を選択し、シフトレジスタ３３のセレクタ３３−５を介して、ラッチ２４のＯ３に出力する。
【０１１３】
このように、複数のブロックに分割されたメモリ部３１を用いることにより、複数のランダム参照に対応することが可能である。
【０１１４】
（第２のケース）
表１の第２のケース（２）は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に６箇所をランダムに参照するケースである。図８に示すように、ＬＤ−ＢＡＳＥ３０１に設定されたベースアドレスは、ラッチ３０２を介して、有効アドレスＡ０として、ラッチ２３−１に格納される。次のサイクルで、有効アドレスＡ０は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ０」のラッチ３０３に供給される。同様に、有効アドレスＡ０は、「ｗａｙ０．ｂｌｋ０」に隣接する、メモリ部３１の他のブロックである「ｗａｙ０．ｂｌｋ１」のラッチ３０４に供給される。
【０１１５】
各ブロックから読み出された値は連結部３２に送られ、連結部３２により、一方が選択される。連結部３２は、ラッチ２３−１に格納された有効アドレスＡ０の上位ビットを用いて、上述の選択を実行する。連結部３２により選択されたデータは、シフトレジスタ３３のセレクタ３３−１を介して、ラッチ２４のＯ０に出力される（この時、さらに、上述の第１のケースのように、「ｗａｙ０．ｂｌｋ２」と「ｗａｙ０．ｂｌｋ３」とを連結する構成としてもよい）。
【０１１６】
一方、ラッチ３０５にはオフセット「−ｅ」、ラッチ３０６にはオフセット「−ｄ」、ラッチ３０７にはオフセット「−ｃ」、ラッチ３０８にはオフセット「−ｂ」、ラッチ３０９にはオフセット「−ａ」が、それぞれ、設定される。各オフセットは、有効アドレスＡ１、Ａ２、Ａ３、Ａ４及びＡ５として、ラッチ２３−２、２３−３、２３−４、２３−５及び２３−６に、それぞれ、設定される。
【０１１７】
Ｏ０に対する書き込みと同時に、連結部３２により選択されたデータを、セレクタ３３−１を介して、シフトレジスタ３３の先頭のレジスタ３３−２に書き込みを行なう。次のサイクル以降、シフトレジスタ３３中にデータを流しながら、ラッチ２３−６、２３−５、２３−４、２３−３及び２３−２にそれぞれ設定された有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１を用いて、シフトレジスタ３３中に格納可能な範囲内のアドレスを指定する。これにより、有効アドレスＡ０近傍のアドレスを同時に参照することができる。
【０１１８】
すなわち、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１は、シフトレジスタ３３中のレジスタ３３−２、３３−３、３３−４、３３−６、３３−７の各位置を表わす値である。言い換えれば、ラッチ２４のＯ５、Ｏ４、Ｏ３、Ｏ２に出力すべき値として、レジスタ３３−２、３３−３、３３−４、３３−６、３３−７のいずれの値を参照すべきかを表わしている。
【０１１９】
なお、このために、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１は、各々、シフトレジスタ３３の任意の位置とアドレス情報とを比較して一致した部分のレジスタ内容を各々、ラッチ２４のＯ５、Ｏ４、Ｏ３、Ｏ２、Ｏ１に読み出す機構が必要である。このような機構は、シフトレジスタ３３が小規模であるため、容易に実現可能である。
【０１２０】
（第３のケース）
表１の第３のケース（３）は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に６箇所を参照するケースである。上述の第２のケース（２）と異なる点は、６箇所のアドレスも単調増加する点である。上述の第２のケース（２）では、オフセットが「−ａ」、「−ｂ」、「−ｃ」、「−ｄ」、「−ｅ」といったランダムなオフセットである。一方、第３のケースは、オフセットが固定である。
【０１２１】
そこで、第３のケースの場合、シフトレジスタ３３のレジスタ３３−２、３３−３、３３−４、３３−６、３３−７の各位置を用いて、オフセットを設定する。すなわち、シフトレジスタ３３から直接読み出す機構により対応する。
【０１２２】
このようなオフセットの設定により、第２のケースの場合とは異なり、図８のラッチ３０５〜３０９、及び、ラッチ２３−２〜２３−６を動作させる必要がない。これらの動作の分だけ、消費電力の削減が可能となる。
【０１２３】
図９に示すように、ＬＤ−ＢＡＳＥ４０１に設定されたベースアドレスは、ラッチ３０２を介して、有効アドレスＡ０として、ラッチ２３−１に格納される。次のサイクルで、有効アドレスＡ０は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ０」のラッチ４０３に供給される。同様に、有効アドレスＡ０は、「ｗａｙ０．ｂｌｋ０」に隣接する、メモリ部３１の他のブロックである「ｗａｙ０．ｂｌｋ１」のラッチ４０４に供給される。
【０１２４】
各ブロックから読み出された値は連結部３２に送られ、連結部３２により、一方が選択される。連結部３２は、ラッチ２３−１に格納された有効アドレスＡ０の上位ビットを用いて、上述の選択を実行する。連結部３２により選択されたデータは、シフトレジスタ３３のセレクタ３３−１を介して、ラッチ２４のＯ０に出力される。
【０１２５】
Ｏ０に対する書き込みと同時に、連結部３２により選択されたデータを、セレクタ３３−１を介して、シフトレジスタ３３の先頭のレジスタ３３−２に書き込みを行なう。次のサイクル以降、シフトレジスタ３３中にデータを流しながら、シフトレジスタ３３のレジスタ３３−２、３３−３、３３−４、３３−６、３３−７の各位置を用いて、固定オフセットを指定する。これにより、有効アドレスＡ０近傍のアドレスを同時に参照することができる。
【０１２６】
すなわち、本第３のケースの場合、ラッチ２４のＯ２〜Ｏ５に出力すべき値として、レジスタ３３−２、３３−３、３３−４、３３−６、３３−７のいずれの値を参照すべきかを表わす、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１の設定は不要となる。なぜなら、本第３のケースの場合、上述の第２のケースとは異なり、オフセットは固定である。それゆえ、レジスタ３３−２、３３−３、３３−４、３３−６、３３−７の各位置を用いれば、ラッチ２４のＯ２〜Ｏ５に出力すべき値として、レジスタ３３−２、３３−３、３３−４、３３−６、３３−７のいずれの値を参照すべきかを特定することができるからである。つまり、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１は、レジスタ３３−２、３３−３、３３−４、３３−６、３３−７の各位置により設定される、と言える。
【０１２７】
上述したように、この場合、メモリシステム２２の消費電力を削減することができる。
【０１２８】
もちろん、上述の第２のケース（２）と同様、メモリシステム２２は、第３のケース（３）にも対応可能である。
【０１２９】
（第４のケース）
表１の第４のケース（４）は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に３箇所を参照するアクセスパターンが２組必要なケースである。
【０１３０】
図１０に示すように、ＬＤ−ＢＡＳＥ５０１に設定されたベースアドレスは、ラッチ５０２を介して、有効アドレスＡ０として、ラッチ２３−１に格納される。次のサイクルで、有効アドレスＡ０は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ０」のラッチ５０３に供給される。同様に、有効アドレスＡ０は、「ｗａｙ０．ｂｌｋ０」に隣接する、メモリ部３１の他のブロックである「ｗａｙ０．ｂｌｋ１」のラッチ５０４に供給される。
【０１３１】
各ブロックから読み出された値は連結部３２に送られ、連結部３２により、一方が選択される。連結部３２は、ラッチ２３−１に格納された有効アドレスＡ０の上位ビットを用いて、上述の選択を実行する。連結部３２により選択されたデータは、シフトレジスタ３３のセレクタ３３−１を介して、ラッチ２４のＯ０に出力される。
【０１３２】
Ｏ０に対する書き込みと同時に、連結部３２により選択されたデータを、セレクタ３３−１を介して、シフトレジスタ３３の先頭のレジスタ３３−２に書き込みを行なう。次のサイクル以降、シフトレジスタ３３中にデータを流しながら、シフトレジスタ３３のレジスタ３３−２、３３−３の各位置を用いて、固定オフセットを指定することにより、有効アドレスＡ０近傍のアドレスを同時に参照することができる。
【０１３３】
有効アドレスＡ１及びＡ２は、シフトレジスタ３３のレジスタ３３−２、３３−３の各位置を用いて、設定される。このために、有効アドレスＡ２、Ａ１は、各々、シフトレジスタ３３の任意の位置とアドレス情報とを比較して一致した部分のレジスタ内容を各々、ラッチ２４のＯ２、Ｏ１に読み出す機構が必要である。このような機構は、シフトレジスタ３３が小規模であるため、容易に実現可能である。
【０１３４】
同様に、ＬＤ−ＢＡＳＥ５０１に新たに設定されたベースアドレスは、ラッチ５０５を介して、有効アドレスＡ３として、ラッチ２３−４に格納される。次のサイクルで、有効アドレスＡ３は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ２」のラッチ５０６に供給される。同様に、「ｗａｙ０．ｂｌｋ２」に隣接する、メモリ部３１の他のブロックである「ｗａｙ０．ｂｌｋ３」のラッチ５０７に供給される。
【０１３５】
各ブロックから読み出された値は連結部３２に送られ、連結部３２により、一方が選択される。連結部３２は、ラッチ２３−４に格納された有効アドレスＡ３の上位ビットを用いて、上述の選択を実行する。連結部３２により選択されたデータは、シフトレジスタ３３のセレクタ３３−５を介して、ラッチ２４のＯ３に出力される。
【０１３６】
ここで、第４のケース（４）は、シフトレジスタ３３の途中でデータ流を分断する点が第２のケース（２）と異なっている。そのため、シフトレジスタ３３の途中に、「ｗａｙ０．ｂｌｋ２」から読み出した値を割り込ませるための上記セレクタ３３−５が必要となる。
【０１３７】
Ｏ３に対する書き込みと同時に、連結部３２により選択されたデータを、セレクタ３３−１を介して、シフトレジスタ３３の途中のレジスタ３３−６に書き込みを行なう。次のサイクル以降、シフトレジスタ３３中にデータを流しながら、シフトレジスタ３３のレジスタ３３−６、３３−３の各位置を用いて、固定オフセットを指定することにより、有効アドレスＡ３近傍のアドレスを同時に参照することができる。
【０１３８】
有効アドレスＡ４及びＡ５は、シフトレジスタ３３のレジスタ３３−６、３３−７の各位置を用いて、設定される。このために、有効アドレスＡ５、Ａ４は、各々、シフトレジスタ３３の任意の位置とアドレス情報とを比較して一致した部分のレジスタ内容を各々、ラッチ２４のＯ５、Ｏ４に読み出す機構が必要である。このような機構は、シフトレジスタ３３が小規模であるため、容易に実現可能である。
【０１３９】
（第５のケース）
表１の第５のケース（５）は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に３箇所を参照するアクセスパターンと、メモリ部３１の各ブロック「ｗａｙ０．ｂｌｋ３」、「ｗａｙ０．ｂｌｋ２」及び「ｗａｙ０．ｂｌｋ１」を独立してアクセスできる機構とを同時に必要とするケースである。
【０１４０】
図１１に示すように、ＬＤ−ＢＡＳＥ６０１に設定されたベースアドレスは、ラッチ６０２を介して、有効アドレスＡ０として、ラッチ２３−１に格納される。次のサイクルで、有効アドレスＡ０は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ０」のラッチ６０６に供給される。「ｗａｙ０．ｂｌｋ０」から読み出された値は、連結部３２及びシフトレジスタ３３のセレクタ３３−１を介して、ラッチ２４のＯ０に出力される。
【０１４１】
ラッチ６１０にはオフセット「−ｂ」、ラッチ６１１にはオフセット「−ａ」が、それぞれ、設定される。各オフセットは、有効アドレスＡ２及びＡ５として、ラッチ２３−３及び２３−６に、それぞれ、設定される。
【０１４２】
Ｏ０に対する書き込みと同時に、セレクタ３３−１は、「ｗａｙ０．ｂｌｋ０」から読み出された値を、シフトレジスタ３３の先頭のレジスタ３３−２に書き込みを行なう。次のサイクル以降、シフトレジスタ３３中にデータを流しながら、ラッチ２３−３及び２３−６にそれぞれ設定された有効アドレスＡ２及びＡ５を用いて、シフトレジスタ３３中に格納可能な範囲内のアドレスを指定する。これにより、有効アドレスＡ０近傍のアドレスを同時に参照することができる。
【０１４３】
有効アドレスＡ５、Ａ２は、シフトレジスタ３３中のレジスタ３３−２、３３−３、３３−４、３３−６、３３−７の各位置を表わす値である。言い換えれば、ラッチ２４のＯ５、Ｏ２に出力すべき値として、レジスタ３３−２、３３−３、３３−４、３３−６、３３−７のいずれの値を参照すべきかを表わしている。例えば、有効アドレスＡ２がレジスタ３３−２を、有効アドレスＡ５がレジスタ３３−３を、それぞれ、参照すべきであることを表わしている。この場合、ラッチ２４のＯ２にはレジスタ３３−３の値が、ラッチのＯ５にはレジスタ３３−３の値が、それぞれ、出力されることになる。
【０１４４】
このため、有効アドレスＡ５、Ａ２は、各々、シフトレジスタの任意の位置とアドレス情報を比較して一致した部分のレジスタ内容を各々、ラッチ２４のＯ５、Ｏ２に読み出す機構が必要である。
【０１４５】
一方、ＬＤ−ＢＡＳＥ６０１に新たに設定されたベースアドレスは、ラッチ６０３を介して、有効アドレスＡ１として、ラッチ２３−２に格納される。次のサイクルで、有効アドレスＡ１は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ１」のラッチ６０７に供給される。「ｗａｙ０．ｂｌｋ０」から読み出された値は、ラッチ２４のＯ１に出力される。
【０１４６】
また、ＬＤ−ＢＡＳＥ６０１に新たに設定されたベースアドレスは、ラッチ６０４を介して、有効アドレスＡ３として、ラッチ２３−４に格納される。次のサイクルで、有効アドレスＡ３は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ２」のラッチ６０８に供給される。「ｗａｙ０．ｂｌｋ２」から読み出された値は、ラッチ２４のＯ３に出力される。
【０１４７】
さらに、ＬＤ−ＢＡＳＥ６０１に新たに設定されたベースアドレスは、ラッチ６０５を介して、有効アドレスＡ４として、ラッチ２３−５に格納される。次のサイクルで、有効アドレスＡ４は、メモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ３」のラッチ６０９に供給される。「ｗａｙ０．ｂｌｋ３」から読み出された値は、ラッチ２４のＯ４に出力される。
【０１４８】
有効アドレスＡ４、Ａ３、Ａ１は各々、「ｗａｙ０．ｂｌｋ３」、「ｗａｙ０．ｂｌｋ２」、「ｗａｙ０．ｂｌｋ１」に直結しており、各々、独立に内容を参照して、読み出した値をラッチ２４のＯ４、Ｏ３、Ｏ１に書き込む。
【０１４９】
（第６のケース）
表１の第６のケース（６）は、図１２に示すように、読み出したメモリの値を更新して元のメモリに書き込むケースである。図５に示した複数の演算器２１からメモリシステム２２へ戻るデータパス（フィードバック機構）２６を利用して実現することができる。
【０１５０】
例えば、図１２においては、読み出したメモリの値（ＳＴ−ｖａｌｕｅ）６１２がメモリ部３１の１つのブロックである「ｗａｙ０．ｂｌｋ０」のラッチ６１４及びラッチ６１５に供給される。次のサイクルで、ＳＴ−ｂａｓｅ６１３に設定されたベースアドレスを用いて、ラッチ６１４及びラッチ６１５に供給された各データが「ｗａｙ０．ｂｌｋ０」に書き込まれる。
【０１５１】
以上説明したように、本発明のＬＡＰＰ１によれば、
（１）中容量メモリを分散させ、かつ、ロード／ストア専用の段間伝搬データパスを不要とすることにより、段間の配線数を大幅に削減できる。
【０１５２】
（２）段間の配線数を削減することにより、大規模回路を、動作周波数を落すことなく複数ＬＳＩ構成により実現することが可能となる。
【０１５３】
（３）中容量メモリと小容量シフトレジスタの組み合わせにより、一定の範囲のメモリ空間に対する多数のロード命令発行が可能となる。
【０１５４】
（４）浮動小数点演算（複数サイクル）を含む自己更新型メモリ参照を、段間配線を増加させることなく複数段に配置可能となる。
【０１５５】
（５）複数の中容量バッファの並列動作により、複数段に分散させた配列データの並列処理が可能となる。
【０１５６】
（６）Ｗａｙのうち再利用できるデータを移動することなく、命令ＭＡＰを移動することにより、データ移動に伴う電力や時間を削減することができる。
【０１５７】
（具体例１）
図１３及び図１４は、画像処理の一例を従来技術と本発明により各々実現した場合の命令列である。図１３では、ロードデータが順次伝搬されることを前提に、各段にロード命令が配置されている。
【０１５８】
一方、図１４では、第４段、第８段、第１２段にロード命令が配置されており、各段に属するＷａｙから近傍のデータが取り出されて演算器に投入されている。この結果、ロードデータを無条件に伝搬させる機構が不要であると同時に、プログラムを収容する段数が２４段から１９段に減少している。
【０１５９】
なお、従来技術では、初段に配置された中規模メモリからデータを伝搬させるため、初段において中規模メモリのＷａｙ番号を読み替えるだけで中規模メモリの内容を一部再利用することができた。
【０１６０】
一方、本発明では、各段に分散した中規模メモリの内容を移動することなく、命令写像を下方に４段ずらせることにより、異なる段においてＷａｙを再利用することを可能としている。すなわち、最終段と初段とは、リング構造により接続されている。例えば、図１４の場合、４、８、１２段のうち、８、１２段を再利用し、命令写像を４段ずらせることにより、８、１２段のメモリ内容は移動することなく、新たに必要となるメモリデータを１６段に配置する。これにより、８、１２、１６段のメモリ内容を利用した命令実行が可能となる。
【０１６１】
（具体例２）
図１５及び図１６は、浮動小数点演算処理の一例を従来技術と本発明により各々実現した場合の命令列である。従来の技術の図１５では、第６段におけるストアデータを１周させて第１段のメモリに格納する必要があり、また、このために、多数のストアを配置することが困難であった。
【０１６２】
これに対し、本発明の図１６では、ロードデータやストアデータを直接伝搬するためのデータパスが不要である。これにより、第４段、第８段、第１２段、第１６段において、更新型のロード→演算→ストアを写像することができる。従来技術に比べて４倍の命令を写像することができ、処理性能が４倍に高まる。
【０１６３】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【０１６４】
（その他の実施形態）
上記実施形態におけるシフトレジスタ３３に代えて、複数のＦＩＦＯ（First In First Out）バッファを有するＦＩＦＯ部を配置することも可能である。ＦＩＦＯ部の各ＦＩＦＯバッファは、例えば図６の構成であれば、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１、Ａ０の各々に一対一に対応するように配置される。
【０１６５】
具体的には、例えば図６の構成であれば、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１、Ａ０の各々に一対一に対応する位置、すなわち、シフトレジスタ３３の、セレクタ３３−１、レジスタ３３−２、レジスタ３３−３、レジスタ３３−４、レジスタ３３−６及びレジスタ３３−７の各々の位置に、セレクタ３３−１、レジスタ３３−２、レジスタ３３−３、レジスタ３３−４、レジスタ３３−６及びレジスタ３３−７の各々に代えて、上記ＦＩＦＯ部の各ＦＩＦＯバッファが配置されることになる。
【０１６６】
上記ＦＩＦＯ部の各ＦＩＦＯバッファは、上記セレクタ３３−１、レジスタ３３−２、レジスタ３３−３、レジスタ３３−４、レジスタ３３−６及びレジスタ３３−７の各々と同様の、１つのセレクタおよび５つのレジスタを有している。
【０１６７】
上記実施形態におけるシフトレジスタ３３においては、メモリ部３１からのデータ供給はセレクタ３３−１のみに行なわれていた（ここでは、セレクタ３３−１へのデータ供給に着目し、セレクタ３３−５へのデータ供給は行われていないものとする。）。これに対し、上記ＦＩＦＯ部においては、メモリ部３１からのデータ供給は、各ＦＩＦＯバッファのセレクタの各々に行なわれることになる。
【０１６８】
そして、有効アドレスＡ５、Ａ４、Ａ３、Ａ２、Ａ１、Ａ０の各々を用いて、各ＦＩＦＯバッファの各レジスタのうちの１つから読み出されたデータが、各ＦＩＦＯバッファの各々に対応するラッチ２４のＯ０〜Ｏ５にそれぞれ、出力されることになる。例えば、有効アドレスＡ５に対応するＦＩＦＯバッファであれば、当該ＦＩＦＯバッファの５つのレジスタのうちのいずれか１つが、有効アドレスＡ５を用いて読み出され、その読み出されたデータがラッチ２４のＯ５に出力されることになる。他のＦＩＦＯバッファにおいても同様の処理が行なわれる。
【０１６９】
なお、本発明は、以下のようにも表現することができる。すなわち、本発明は、１つまたは複数の演算器から構成される段を複数連結したバンドルに対して、１つの記憶システムを接続した構成であり、各記憶システムは、メモリとシフトレジスタから構成され、メモリから読み出したデータをシフトレジスタの先頭または途中に投入するとともに、記憶システムに入力される複数のアドレス情報を使用して、メモリ及びシフトレジスタを参照し、各アドレスに対応するアドレス位置の内容を各々読み出すアクセラレータ構成方法である。
【０１７０】
上記アクセラレータ構成方法において、複数のブロックに分割されたメモリ部には、ブロック毎にアドレス情報を保持するアドレス保持部を備え、さらに、メモリ部に接続されないアドレス保持部を備え、これらのアドレス保持部のアドレス情報を利用して、シフトレジスタ内のレジスタ位置を特定してレジスタを読み出すことが好ましい。
【０１７１】
上記アクセラレータ構成方法において、各ブロックに備えられるアドレス保持部のデータを使用して、他のブロックの読み出しを行い、アドレス情報の一部のビットを使用して、複数ブロックから読み出したデータのうち１つを選択することが好ましい。
【０１７２】
上記アクセラレータ構成方法において、バンドルの最終段から記憶システムへのフィードバックを備え、バンドル内において、メモリを読み出すと共に、当該メモリに対する書き込みも可能であることが好ましい。
【０１７３】
上記アクセラレータ構成方法において、一連の高速実行後、次の高速実行を開始する際に、あるバンドルに属するメモリ内容を別の演算命令にて使用することができる場合、演算器に対する演算命令の写像を変更することにより、バンドルに属するメモリ内容を移動することなく、次の高速実行を開始することが好ましい。
【０１７４】
また、本発明は、以下のようにも表現することができる。すなわち、本発明に係るデータ供給装置は、複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、複数のブロックに分割されたメモリ部と、複数のレジスタが一列に接続されたシフトレジスタ部とを備え、前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力する。
【０１７５】
上記構成によれば、１つのメモリ部を複数のブロックに分割し、シフトレジスタ部の先頭または途中のレジスタに各ブロックから読み出されたデータを書き込み可能となっている。
【０１７６】
そして、メモリ部及びシフトレジスタ部の各々は、データ供給装置に入力された複数のアドレス情報を基に参照され、各アドレス情報に対応する各アドレス位置の内容を出力可能となっている。
【０１７７】
このようなデータ供給装置を用いて、複数の演算器が多段構成された演算器束にデータを供給することにより、異なる演算器束の各々にデータを供給するデータ供給装置間におけるデータ伝搬が不要となる。
【０１７８】
それゆえ、従来のような、演算器ネットワークの随所に設けられた１次キャッシュの内容を近傍の演算器に供給するための大規模なデータ伝搬機構が不要となるので、データ処理装置へデータを効率よく供給し、これにより、各演算器の消費電力を削減することができる。
【０１７９】
上記データ供給装置は、前記データ供給装置に入力された複数のアドレス情報をそれぞれ保持する複数のアドレス保持部をさらに備え、前記複数のアドレス保持部は、前記メモリ部の各ブロックに一対一に対応するように各ブロックに接続された複数の第１のアドレス記憶回路と、前記メモリ部の各ブロックのいずれにも接続されていない複数の第２のアドレス記憶回路と、を含むことが好ましい。
【０１８０】
上記構成によれば、メモリ部を参照するアドレス情報と、シフトレジスタ部を参照するアドレス情報と、を用いて、シフトレジスタ部から最終的に出力されるデータを決定することができる。
【０１８１】
上記データ供給装置において、前記シフトレジスタ部は、前記メモリ部の異なる２つのブロックから読み出されたデータのいずれかを選択するセレクタを含み、前記第１のアドレス記憶回路に保持されたアドレス情報を用いて、当該第１のアドレス記憶回路が接続されたブロック及び、当該ブロックに隣接する他のブロックからの各読み出しが行なわれた場合において、前記シフトレジスタ部は、前記セレクタを用いて、前記第１のアドレス記憶回路に保持されたアドレス情報の一部のビットに基づき、前記２つのブロックから読み出されたデータのうちの１つを選択することが好ましい。
【０１８２】
上記構成によれば、２つのブロックを連結させることができるので、１つのブロックに収まらないサイズのデータであっても、メモリ部に格納することができる。
【０１８３】
上記データ供給装置は、前記演算器束の最終段を構成する１つまたは複数の演算器の演算結果を前記メモリ部に書き込み可能なフィードバック機構をさらに備えることが好ましい。
【０１８４】
上記構成によれば、メモリ部及びシフトレジスタ部からの出力値をメモリ部に再書き込みすることができる。
【０１８５】
上記データ供給装置において、前記各第１のアドレス記憶回路に保持された各アドレス情報は、前記データ供給装置に入力されたアドレス情報に設定されたオフセット、及び、当該アドレス情報に当該オフセットが加算されたアドレス情報、のうちのいずれかであり、前記各第２のアドレス記憶回路に保持された各アドレス情報は、前記データ供給装置に入力されたアドレス情報に設定されたオフセットであることが好ましく、前記シフトレジスタ部は、前記オフセットを用いて、各レジスタからの出力値を決定することがより好ましい。
【０１８６】
上記構成によれば、入力されたアドレス情報にランダムなオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
【０１８７】
上記データ供給装置において、前記シフトレジスタ部は、自身の各レジスタの位置を前記オフセットとして用いることにより、各レジスタからの出力値を決定することが好ましい。
【０１８８】
上記構成によれば、入力されたアドレス情報に固定のオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
【０１８９】
上記データ供給装置において、前記データ供給装置に２つのアドレス情報が入力された場合、前記シフトレジスタ部は、自身の一部の各レジスタの位置を、前記データ供給装置に入力された一方のアドレス情報に設定されたオフセットとして用いることにより、前記一部の各レジスタからの出力値を決定し、自身の他の一部の各レジスタの位置を、前記データ供給装置に入力された他方のアドレス情報に設定されたオフセットとして用いることにより、前記他の一部の各レジスタからの出力値を決定することが好ましい。
【０１９０】
上記構成によれば、データ供給装置に２つのアドレス情報が入力された場合でも、いずれのアドレス情報に関しても、入力されたアドレス情報に固定のオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
【０１９１】
上記データ供給装置において、前記データ供給装置に複数のアドレス情報が入力された場合、前記シフトレジスタ部は、前記データ供給装置に入力された１つのアドレス情報に設定されたオフセットを用いて、自身の一部の各レジスタからの出力値を決定し、前記データ供給装置に入力された残余のアドレス情報を用いて、前記メモリ部のブロックから読み出されたデータを、自身の他の一部の各レジスタからの出力値として出力することが好ましい。
【０１９２】
上記構成によれば、入力された１つのアドレス情報にオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照し、且つ、入力された残余のアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
【０１９３】
本発明に係るデータ処理装置は、複数の前記演算器束が多段構成されたデータ処理装置であって、或る一連の高速実行後、次の高速実行を開始する際に、或る演算器束にデータを供給する上記データ供給装置の前記メモリ部の内容が別の演算命令にて使用することができる場合、前記演算器束を構成する演算器に対する演算命令の写像を変更する。
【０１９４】
上記構成によれば、データ供給装置のメモリ部に格納されるデータの内容に応じて命令写像位置を変更することにより、従来技術と同等の命令実行能力を確保することができる。
【０１９５】
上記データ処理装置は、複数の行の機械語命令からなる命令コードを実行するためのデータ処理装置であって、前記命令コードに記述された複数のレジスタ番号に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて前記複数の行の機械語命令のいずれかの機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第１演算部と、前記複数の行の機械語命令のいずれかのうち、前記第１演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第２演算部と、を含むｎ個の演算部と、前記第１演算部が演算を実行したときにおける前記第１演算部の演算結果の出力先であり、且つ、前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部とを備え、前記第１レジスタファイル部は、前記第１演算部による演算処理の対象外であったデータを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに、当該データを転送すると共に、前記第１保持部は、自身が前記第１演算部の演算結果を保持する場合には、前記第１演算部の演算結果の出力先を前記第２演算部として、前記第１演算部の演算結果を前記第２演算部に転送し、前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第１演算部により実行される演算と並列処理することが好ましい。
【０１９６】
上記構成によれば、第１レジスタファイル部の各第１レジスタのデータが、第１レジスタファイル部の各第１レジスタに対応する第２レジスタファイル部の各第２レジスタに転送されている。
【０１９７】
このため、第２演算部は、第１レジスタファイル部の第１レジスタのデータが第１演算部の演算実行に用いられている場合でも、そのデータを第２レジスタファイル部の第２レジスタから読み出して演算の実行に用いることができる。
【０１９８】
また、第１演算部の演算結果が、第２演算部に転送されている。
【０１９９】
このため、第２演算部は第１演算部による演算の終了後直ちに、第１演算部の演算結果を演算の実行に用いることができる。
【０２００】
したがって、上記のデータ処理装置では、第１及び第２演算部による２つの演算を並列的に実行させることができる。
【０２０１】
上記データ処理装置において、前記ｎ個のレジスタファイル部は、前記第２レジスタファイル部の各第２レジスタと対応する複数の第３レジスタを含む第３レジスタファイル部をさらに含み、前記ｎ個の演算部は、前記複数の行の機械語命令のいずれかのうち、前記第１演算部及び前記第２演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第３演算部をさらに含み、前記ｎ個の保持部は、前記第２演算部が演算を実行したときにおける前記第２演算部の演算結果の出力先であり、且つ、前記第２演算部の演算結果を一時的に保持する第２保持部をさらに含んでおり、前記第２レジスタファイル部は、前記第２演算部による演算処理の対象外であったデータを保持する第２レジスタに対応する前記第３レジスタファイル部の第３レジスタに、当該データを転送すると共に、前記第２保持部は、自身が前記第２演算部の演算結果を保持する場合には、前記第２演算部の演算結果の出力先を前記第３演算部として、前記第２演算部の演算結果を前記第３演算部に転送し、前記第３演算部は、前記第３レジスタファイル部の各第３レジスタの読み出しデータ及び前記第２保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第１演算部により実行される演算及び前記第２演算部により実行される演算と並列処理することが好ましい。
【０２０２】
上記構成によれば、第２レジスタファイル部の各第２レジスタのデータが、第２レジスタファイル部の各第２レジスタに対応する第３レジスタファイル部の各第３レジスタに転送されている。
【０２０３】
このため、第３演算部は、第２レジスタファイル部の第２レジスタのデータが第２演算部の演算実行に用いられている場合でも、そのデータを第３レジスタファイル部の第３レジスタから読み出して演算の実行に用いることができる。
【０２０４】
また、第２演算部の演算結果が、第３演算部に転送されている。
【０２０５】
このため、第３演算部は第２演算部による演算の終了後直ちに、第２演算部の演算結果を演算の実行に用いることができる。
【０２０６】
したがって、上記のデータ処理装置では、第１、第２及び第３の演算部による３つの演算を並列的に実行させることができる。
【０２０７】
上記データ処理装置において、前記ｎ個の保持部に含まれるＮ（Ｎは１以上の整数であって、ｎ以下）番目の保持部は、自身が保持する演算結果が前記ｎ個の演算部に含まれる（Ｎ＋２）番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記ｎ個のレジスタファイル部に含まれる（Ｎ＋２）番目のレジスタファイル部に転送する一方、自身が保持する演算結果が前記（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部に転送することが好ましい。
【０２０８】
上記構成によれば、Ｎ番目の保持部が保持する演算結果が（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には（Ｎ＋１）番目の演算部に転送しているので、この場合、レジスタファイル部間における不要なデータ転送が低減され、その結果、消費電力をより低下させることができる。
【産業上の利用可能性】
【０２０９】
本発明は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置へのデータ供給に好適に利用することができる。
【符号の説明】
【０２１０】
２２    メモリシステム
２３    ラッチ（アドレス保持部）
２３−１、２３−２、２３−４、２３−５    ラッチ（第１のアドレス記憶回路）
２３−３、２３−６    ラッチ（第２のアドレス記憶回路）
３１    メモリ部
３３    シフトレジスタ（シフトレジスタ部）
１０１、１０２、１０３    ＬＡＰＰ
【図１】
2013137459.tif 000004
【図２】
2013137459.tif 000005
【図３】
2013137459.tif 000006
【図４】
2013137459.tif 000007
【図５】
2013137459.tif 000008
【図６】
2013137459.tif 000009
【図７】
2013137459.tif 000010
【図８】
2013137459.tif 000011
【図９】
2013137459.tif 000012
【図１０】
2013137459.tif 000013
【図１１】
2013137459.tif 000014
【図１２】
2013137459.tif 000015
【図１３】
2013137459.tif 000016
【図１４】
2013137459.tif 000017
【図１５】
2013137459.tif 000018
【図１６】
2013137459.tif 000019
【国際調査報告】
2013137459.tif 000020
2013137459.tif 000021
2013137459.tif 000022
2013137459.tif 000023