(57)【要約】  より多くの命令を並列的に実行することができるデータ処理装置（１０１）を提供する。本発明のデータ処理装置（１０１）は、複数のレジスタを含む第１レジスタファイル部（１１０）と、第１レジスタファイル部（１１０）の各レジスタに対応する複数のレジスタを含む第２レジスタファイル部（２１０）と、第１レジスタファイル部（１１０）の読み出しデータを用いて演算を実行する第１演算装置（１２０）と、第２演算装置（２２０）と、を備えている。第１レジスタファイル部（１１０）は、データを保持するレジスタに対応する第２レジスタファイル部（２１０）のレジスタにデータを転送し、第１演算装置（１２０）は、自身が保持する演算結果を第２演算装置（２２０）に転送する。第２演算装置（２２０）は、第２レジスタファイル部（２１０）の各レジスタの読み出しデータ及び第１演算装置（１２０）の演算結果の少なくとも一方を用いて演算を実行する。
2010044242.tif 000002
【特許請求の範囲】
【請求項１】
複数の機械語命令からなる命令コードを実行するためのデータ処理装置であって、
前記命令コードを保持する命令メモリ部と、
前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ／デコード部と、
前記命令フェッチ／デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと一対一に対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、
前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて演算を実行する第１演算部と、第２演算部と、を含むｎ個の演算部と、
前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部と
を備え、
前記第１レジスタファイル部は、自身の各第１レジスタがデータを保持する場合には、データを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに当該データを転送すると共に、
前記第１保持部は、自身が保持する演算結果を前記第２演算部に転送可能となっており、
前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行することを特徴とするデータ処理装置。
【請求項２】
前記ｎ個のレジスタファイル部は、前記第２レジスタファイル部の各第２レジスタと一対一に対応する複数の第３レジスタを含む第３レジスタファイル部をさらに含み、
前記ｎ個の演算部は、第３演算部をさらに含み、
前記ｎ個の保持部は、前記第２演算部の演算結果を一時的に保持する第２保持部をさらに含んでおり、
前記第２レジスタファイル部は、自身の各第２レジスタがデータを保持する場合には、データを保持する第２レジスタに対応する前記第３レジスタファイル部の第３レジスタに当該データを転送すると共に、
前記第２保持部は、自身が保持する演算結果を前記第３演算部に転送可能となっており、
前記第３演算部は、前記第３レジスタファイル部の各第３レジスタの読み出しデータ及び前記第２保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記ｎ個の保持部に含まれるＮ（Ｎは１以上の整数であって、ｎ以下）番目の保持部は、
自身が保持する演算結果が前記ｎ個の演算部に含まれる（Ｎ＋２）番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記ｎ個のレジスタファイル部に含まれる（Ｎ＋２）番目のレジスタファイル部に転送する一方、
自身が保持する演算結果が前記（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部に転送することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記命令フェッチ／デコード部が前記ｎ個のレジスタファイル部に含まれる複数のレジスタファイル部、前記ｎ個の演算部に含まれる複数の演算部、前記ｎ個の保持部に含まれる複数の保持部の各々を同時に動作させるべく記述された命令コードに含まれる動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、且つ、前記命令フェッチ／デコード部の動作を停止させることを特徴とする請求項１〜３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記動作命令は、同時に動作させるべき前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の各動作を制御するために、各々に設定すべき設定情報と、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の同時動作を停止すべき動作終結条件と、を含み、
前記命令フェッチ／デコード部が前記動作命令をデコードするまでは、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させ、
前記動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて、前記命令フェッチ／デコード部の動作を停止させ、且つ、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、
前記動作命令に含まれる前記動作終結条件が満たされると、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を除く前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の動作を停止させ、且つ、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記ｎ個の演算部の各々は、
前記データ処理装置の外部に配置された外部メモリの内容を一時的に保持するキャッシュメモリと、
前記命令コードに含まれるロード命令に付随するアドレス情報を用いて前記キャッシュメモリを読み出すロード部と、
前記ロード部により読み出されたデータを一時的に保持するストア部と
を有し、
前記ｎ個の演算部に含まれるＮ番目の演算部は、自身のストア部が保持するデータを前記ｎ個の演算部に含まれる（Ｎ＋１）番目以降の演算部及び前記ｎ個のレジスタファイル部に含まれる（Ｎ＋１）番目以降のレジスタファイル部に転送可能となっていることを特徴とする請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記ｎ個の演算部に含まれるＮ番目の演算部は、自身のキャッシュメモリがデータを保持する場合には、前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部のキャッシュメモリに転送可能となっていることを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記ｎ個の演算部の各々は、自身のロード部による前記キャッシュメモリの読み出しを行なう場合には、前記ロード命令に付随するアドレス情報を保持すると共に、前記ロード部による読み出しが完了する度に、前記保持したアドレス情報を読み出されたデータ幅だけ増加または減少させて、前記ロード部による次の読み出しのためのアドレス情報を生成することを特徴とする請求項６または７に記載のデータ処理装置。
【請求項９】
前記第１演算部は、前記データ処理装置の外部に配置された外部メモリと直接接続されたキャッシュメモリを有し、
前記キャッシュメモリは、前記動作命令に関連付けられる書き込み先アドレスと転送データ長とからなる転送情報に基づいてデータ転送を行なうデータ転送手段を有し、
前記データ転送手段は、前記外部メモリ上における互いに異なる複数のアドレスから同時に複数のデータを連続転送することを特徴とする請求項４または５に記載のデータ処理装置。
【請求項１０】
前記外部メモリは、前記動作命令に関連付けられる書き込み先アドレスと転送ワード数とからなる転送情報に基づいてデータ転送を行なうデータ転送手段を有し、
前記データ転送手段は、外部Ｉ／Ｏ装置から複数のデータを前記外部メモリの最も古いバンクへ連続転送することを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記第１演算部は、自身のキャッシュメモリに前記ロード命令に付随するアドレス情報に対応する領域が存在しない場合には、外部メモリからのデータ転送を待機すると共に、２番目以降の演算部が前記動作命令に関連付けられる転送ワード数に応じた回数だけ動作したことを前記動作終結条件とすることを特徴とする請求項５に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置に関する。
【背景技術】
【０００２】
近年のマイクロプロセッサにおいては、マシンサイクルを短縮するとともに、１マシンサイクル当たりに実行される命令の数を増やすことにより、実効性能の向上を図る方式が多く提案されている。【０００３】
このような多数の命令を並列に処理する方式として、例えば、目的とするデータ処理に合わせて演算器ネットワークを固定し、その固定された演算器ネットワークに入力データを流し込む方式である演算器アレイ方式が知られている（例えば、特許文献１〜３を参照）。【０００４】
この演算器アレイ方式では、複数の演算器からなる演算器ネットワークを利用することにより、多くの機能を並列実行することが可能である。【０００５】
しかし、演算器アレイ方式は、既存の機械語命令を実行することができない。このため、この演算器アレイ方式に特有の機械語命令を生成するための専用の機械語命令生成手段が必要であり、汎用性に欠けている。【０００６】
そこで、一般的な機械語命令を実行し、且つ、機械語命令の並列実行が可能な方式としては、例えば、スーパスカラ方式、ベクトル方式、ＶＬＩＷ方式が知られている。これらの方式では、１つの命令の中で複数の演算等が指定され、それらが同時に実行されることになる。【０００７】
先ず、スーパスカラ方式は、機械語命令列の中から同時実行可能な機械語命令をハードウエアが動的に検出して並列実行する方式である。【０００８】
このスーパスカラ方式は、既存のソフトウェア資産をそのまま活用できる強みがある一方、機構の複雑さ及び消費電力の多さから、最近では敬遠される傾向にある。【０００９】
次に、ベクトル方式は、多数のレジスタを一次元方向に並べたベクトルレジスタを用いて、ロード、演算、ストア等の基本操作を繰返し適用する方式であり、電力効率の良い高速化が可能である。さらに、キャッシュメモリが不要となることから、主記憶とベクトルレジスタ間のデータ転送速度が保証され、その結果、安定した高速化が実現される。【００１０】
しかし、このベクトル方式では、主記憶とベクトルレジスタとの間におけるデータ転送機構の規模と遅延時間が必然的に大きくなってしまう。このため、ある程度のデータ再利用が期待できる画像処理向け組み込みシステムのような応用分野に採用するには過剰な方式であると言える。【００１１】
最後に、ＶＬＩＷ方式は、１つの命令の中で複数の演算等が指定され、それらが同時に実行される方式である。このＶＬＩＷ方式では、例えば、４命令を同時にフェッチし、４命令を同時にデコードし、汎用レジスタから必要なデータを読み出し、複数の演算装置により同時に演算を行い、演算装置に付随する演算結果格納手段に演算結果を格納する。【００１２】
そして、次のサイクルではその演算結果格納手段から内容を読み出して、汎用レジスタに書き込みを行なうとともに、次の演算においてその読み出された演算結果が必要となる場合には、その演算結果を演算装置の入力へバイパスする。【００１３】
一方、ロード命令に対しては、ＬＤ／ＳＴユニットにおいてキャッシュメモリを参照し、ＬＤ／ＳＴユニットに付随するロード結果格納手段にロード結果を格納した後、次のサイクルにおいて、ＬＤ／ＳＴユニットが演算装置と同様の動作を行なう。【００１４】
このようにしてＶＬＩＷ方式では、並置された演算装置及びＬＤ／ＳＴユニットの各々の数だけ演算を同時実行することができる。さらに、ＶＬＩＷ方式では、並列実行可能な命令列をコンパイラ等によりあらかじめスケジュールしておくため、スーパスカラ方式のように同時実行可能な機械語命令をハードウエアが動的に検出する機構が不要となる。したがって、ＶＬＩＷ方式では、電力効率の良い命令実行が可能である。【００１５】
しかしながら、ＶＬＩＷ方式であっても、スーパスカラ方式と同様、高々数命令を同時実行可能であるに過ぎない。なぜなら、先ず、現実のプログラムでは、あらかじめ並列実行可能であると判断できる命令数がそれほど多くないからである。この点については、画像処理等の一部の分野では十分な命令並列度が存在することがわかっているが、並列実行可能な命令数がそれほど多くないのが一般的である。【００１６】
さらに、並列実行可能な命令数を増加させるためには、汎用レジスタに対してデータを読み書きするために必要なポートと呼ばれる回路の数も増加させなければならない。ところが、現実的な回路として数十命令を同時実行できるに耐えるレジスタファイルを構成することは極めて困難となっている。なぜなら、レジスタファイルの各ポートには、任意の番号のレジスタ内容を任意の演算装置に供給するために、レジスタファイルが保持するレジスタ数分の信号線から１つを選択する回路が演算装置数に合わせて必要となるからである。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】日本国公開特許公報「特開平８−８３２６４号公報（１９９６年３月２６日公開）」
【特許文献２】日本国公開特許公報「特開２００１−３１２４８１号公報（２００１年１１月９日公開）」
【特許文献３】日本国公開特許公報「特開２００３−７６６６８号公報（２００３年３月１４日公開）」
【発明の概要】
【発明が解決しようとする課題】
【００１８】
上述したように、従来のＶＬＩＷ方式には、豊富なプログラム資産を利用できるという特徴があるものの、高々数命令しか同時実行できないという問題点があった。【００１９】
さらに、あらかじめ並列実行可能であると判断できる命令数が多い場合であっても、レジスタポート数の制約により、同時実行命令数を増加させることができないという問題点もあった。【００２０】
上記問題点に鑑み、本発明の目的は、より多くの命令を並列的に実行することができるデータ処理装置を提供することにある。
【課題を解決するための手段】
【００２１】
上記目的を達成するために、本発明におけるデータ処理装置は、複数の機械語命令からなる命令コードを実行するためのデータ処理装置であって、前記命令コードを保持する命令メモリ部と、前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ／デコード部と、前記命令フェッチ／デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと一対一に対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて演算を実行する第１演算部と、第２演算部と、を含むｎ個の演算部と、前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部とを備え、前記第１レジスタファイル部は、自身の各第１レジスタがデータを保持する場合には、データを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに当該データを転送すると共に、前記第１保持部は、自身が保持する演算結果を前記第２演算部に転送可能となっており、前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行することを特徴とする。【００２２】
上記のデータ処理装置では、第１レジスタファイル部の各第１レジスタのデータが、第１レジスタファイル部の各第１レジスタに対応する第２レジスタファイル部の各第２レジスタに転送されている。【００２３】
このため、第２演算部は、第１レジスタファイル部の第１レジスタのデータが第１演算部の演算実行に用いられている場合でも、そのデータを第２レジスタファイル部の第２レジスタから読み出して演算の実行に用いることができる。【００２４】
また、第１演算部の演算結果が、第２演算部に転送されている。【００２５】
このため、第２演算部は第１演算部による演算の終了後直ちに、第１演算部の演算結果を演算の実行に用いることができる。【００２６】
したがって、上記のデータ処理装置では、第１及び第２演算部による２つの演算を並列的に実行させることができる。
【発明の効果】
【００２７】
本発明のデータ処理装置は、以上のように、前記命令コードを保持する命令メモリ部と、前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ／デコード部と、前記命令フェッチ／デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと一対一に対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて演算を実行する第１演算部と、第２演算部と、を含むｎ個の演算部と、前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部とを備え、前記第１レジスタファイル部は、自身の各第１レジスタがデータを保持する場合には、データを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに当該データを転送すると共に、前記第１保持部は、自身が保持する演算結果を前記第２演算部に転送可能となっており、前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行するものである。【００２８】
それゆえ、より多くの命令を並列的に実行することができるという効果を奏する。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態におけるデータ処理装置の構成を示す図である。
【図２】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図３】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図４】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図５】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図６】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図７】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図８】本発明の他の実施形態におけるデータ処理装置の構成を示す図である。
【図９】命令コードを説明するための説明図である。
【図１０】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その１）。
【図１１】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その２）。
【図１２】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その３）。
【図１３】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その４）。
【図１４】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その５）。
【図１５】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その６）。
【図１６】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その７）。
【図１７】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その８）。
【図１８】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その９）。
【図１９】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その１０）。
【図２０】本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である（その１１）。
【発明を実施するための形態】
【００３０】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。
【００３１】
先ず、本発明におけるデータ処理装置の構成について実施の形態１〜１０で説明し、次に、本発明におけるデータ処理方法の処理手順について実施の形態１１で説明する。
【００３２】
（実施の形態１）
図１は、本発明の実施の形態１におけるデータ処理装置の構成を示す図である。図１に示すように、本実施の形態におけるデータ処理装置１０１は、命令メモリ部１０と、命令フェッチ部（命令フェッチ／デコード部）２０と、命令デコード部（命令フェッチ／デコード部）３０と、第１レジスタファイル部１１０と、第２レジスタファイル部２１０と、第１演算装置（第１演算部、第１保持部）１２０と、第２演算装置（第２演算部、第２保持部）２２０と、を備えている。
【００３３】
命令メモリ部１０は、ハードディスクドライブなどの磁気ディスク装置や半導体メモリ等の公知の記憶装置から適宜選択して用いることができる。命令メモリ部１０は、複数の命令からなるプログラムを保持するものであり、主記憶の一部の領域であってもよく、また、主記憶の一部を保持する命令バッファであってもよい。
【００３４】
命令フェッチ部２０は、命令メモリ部１０から必要な命令をフェッチして、命令デコード部３０は、そのフェッチした命令をデコードする。命令デコード部３０によるデコード結果により、第１及び第２演算装置１２０、２２０における処理内容が決定する。
【００３５】
本実施の形態におけるデータ処理装置１０１では、公知のＶＬＩＷ方式によるプロセッサアーキテクチャを前提としており、命令フェッチ部２０により例えば３２ビット幅の命令が例えば４個同時にフェッチされ、命令デコード部３０によりそれらフェッチされた命令が同時にデコードされるものと想定する。
【００３６】
第１レジスタファイル部１１０は、第１演算装置１２０における演算処理に必要なデータを保持するものである。第１レジスタファイル部１１０は、複数のレジスタ（第１レジスタ）ｒ０〜ｒ１１からなるレジスタ群１１１と、レジスタ群１１１の各レジスタｒ０〜ｒ１１の読み出しデータを第１レジスタファイル部１１０の外部に転送するための転送器１１２と、を有している。
【００３７】
レジスタ群１１１の各レジスタｒ０〜ｒ１１に対する読み出しや書き込みは、命令デコード部３０によるデコード結果に基づいて実行される。レジスタ群１１１の各レジスタｒ０〜ｒ１１は、自身のレジスタ番号０〜１１をアクセスのキーとして読み出しや書き込みがされる。
【００３８】
転送器１１２は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第１レジスタファイル部１１０の外部に転送する。
【００３９】
第２レジスタファイル部２１０は、第２演算装置２２０における演算処理に必要なデータを保持する。第２レジスタファイル部２１０は、複数のレジスタ（第２レジスタ）ｒ０〜ｒ１１からなるレジスタ群２１１と、レジスタ群２１１の各レジスタｒ０〜ｒ１１の読み出しデータを第２レジスタファイル部２１０の外部に転送するための転送器２１２と、を有している。
【００４０】
レジスタ群２１１の各レジスタｒ０〜ｒ１１に対する読み出しや書き込みは、命令デコード部３０によるデコード結果に基づいて実行される。レジスタ群２１１の各レジスタｒ０〜ｒ１１は、自身のレジスタ番号０〜１１をアクセスのキーとして読み出しや書き込みがされる。
【００４１】
レジスタ群２１１の各レジスタｒ０〜ｒ１１は、第１レジスタファイル部１１０のレジスタ群１１１の各レジスタｒ０〜ｒ１１と一対一に対応しており、レジスタ群１１１及びレジスタ群２１１の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。そして、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１の各レジスタｒ０〜ｒ１１の読み出しデータを、レジスタ群１１１の各レジスタｒ０〜ｒ１１のレジスタ番号と同一のレジスタ番号を持つ、第２レジスタファイル部２１０のレジスタ群２１１の各レジスタｒ０〜ｒ１１に、転送可能である。例えば、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１のレジスタｒ３の読み出しデータを、第２レジスタファイル部２１０のレジスタ群２１１のレジスタｒ３に転送可能である。また、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１のレジスタｒ９の読み出しデータを、第２レジスタファイル部２１０のレジスタ群２１１のレジスタｒ９に転送可能である。
【００４２】
転送器２１２は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第２レジスタファイル部２１０の外部に転送する。
【００４３】
第１演算装置１２０は、データ処理装置１０１における実体的な処理を行なうものである。第１演算装置１２０は、演算器１−１〜１−４からなる演算器群１２１と、保持器１−１〜１−４からなる保持器群１２２と、転送器１２３と、を有している。
【００４４】
第１演算装置１２０は、第１レジスタファイル部１１０と共に、第１データ処理段を構成しており、第１レジスタファイル部１１０の転送器１１２は、レジスタ群１１１の各レジスタｒ０〜ｒ１１の読み出しデータを第１演算装置１２０に転送可能である。そして、第１演算装置１２０の演算器群１２１の各演算器１−１〜１−４は、第１レジスタファイル部１１０の各レジスタｒ０〜ｒ１１のうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器１−１〜１−４の演算処理は同時に実行される。
【００４５】
保持器群１２２の保持器１−１〜１−４は、各々に対応する演算器１−１〜１−４の演算結果を格納する。各保持器１−１〜１−４は、各演算器１−１〜１−４と一対一に対応している。
【００４６】
転送器１２３は、各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を第１演算装置１２０の外部に転送する。
【００４７】
第２演算装置２２０は、データ処理装置１０１における実体的な処理を行なうものである。第２演算装置２２０は、演算器２−１〜２−４からなる演算器群２２１と、保持器２−１〜２−４からなる保持器群２２２と、転送器２２３と、を有している。
【００４８】
第２演算装置２２０は、第２レジスタファイル部２１０と共に、第２データ処理段を構成しており、第２レジスタファイル部２１０の転送器２１２は、レジスタ群２１１の各レジスタｒ０〜ｒ１１の読み出しデータを第２演算装置２２０に転送可能である。そして、第２演算装置２２０の演算器群２２１の各演算器２−１〜２−４は、第２レジスタファイル部２１０の各レジスタｒ０〜ｒ１１のうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器２−１〜２−４の演算処理は同時に実行される。
【００４９】
さらに、第２演算装置２２０の演算器群２２１の各演算器２−１〜２−４は、第１演算装置１２０の保持器群１２２の各保持器１−１〜１−４に格納されている演算結果を取得することができる。第１演算装置１２０の転送器１２３は、各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を第２演算装置２２０に転送可能となっている。
【００５０】
そして、第２演算装置２２０の各演算器２−１〜２−４は、第２レジスタファイル部２１０の各レジスタｒ０〜ｒ１１の読み出しデータに代えて、それら演算結果を用いて演算処理を実行することができる。
【００５１】
保持器群２２２の保持器２−１〜２−４は、各々に対応する演算器２−１〜２−４の演算結果を格納する。各保持器２−１〜２−４は、各演算器２−１〜２−４と一対一に対応している。
【００５２】
転送器２２３は、各保持器２−１〜２−４に格納されている、各演算器２−１〜２−４の演算結果を第２演算装置２２０の外部に転送する。
【００５３】
次に、本実施の形態におけるデータ処理装置１０１の動作について説明する。
【００５４】
本実施の形態におけるデータ処理装置１０１においては、レジスタ群１１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第１演算装置１２０による演算処理が行なわれる。
【００５５】
第１演算装置１２０による演算処理と同時に、第１演算装置１２０による演算処理の対象外であったレジスタ群１１１のレジスタｒ０〜ｒ１１の読み出しデータが第２レジスタファイル部２１０に転送される。
【００５６】
そして、次のサイクルにおいて、第２レジスタファイル部２１０のレジスタ群２１１のレジスタｒ０〜ｒ１１に転送されたデータを用いて、第２演算装置２２０による演算処理が行なわれる。
【００５７】
第２演算装置２２０による演算処理と同時に、レジスタ群１１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第１演算装置１２０による演算処理が行なわれる。
【００５８】
さらに、第２演算装置２２０が第１演算装置１２０の演算結果を必要とする場合には、第１演算装置１２０の転送器１２３が各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を第２演算装置２２０に転送する。
【００５９】
（実施の形態２）
次に、本発明の実施の形態２について説明する。図２は、本発明の実施の形態２におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態１と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【００６０】
図２に示すように、本実施の形態におけるデータ処理装置１０２と上記の実施の形態１におけるデータ処理装置１０１とで異なる点は、第３レジスタファイル部３１０と、第３演算装置（第３演算部、第３保持部）３２０と、をさらに備えている点である。これにより、第１演算装置１２０による演算処理及び第２演算装置２２０による演算処理に加えて、第３演算装置３２０による演算処理も同時に実行するものである。
【００６１】
第３レジスタファイル部３１０は、第３演算装置３２０における演算処理に必要なデータを保持するものである。第３レジスタファイル部３１０は、複数のレジスタ（第３レジスタ）ｒ０〜ｒ１１からなるレジスタ群３１１と、レジスタ群３１１の各レジスタｒ０〜ｒ１１の読み出しデータを第３レジスタファイル部３１０の外部に転送するための転送器３１２と、を有している。
【００６２】
レジスタ群３１１の各レジスタｒ０〜ｒ１１に対する読み出しや書き込みは、命令デコード部３０によるデコード結果に基づいて実行される。レジスタ群３１１の各レジスタｒ０〜ｒ１１は、自身のレジスタ番号０〜１２をアクセスのキーとして読み出しや書き込みがされる。
【００６３】
レジスタ群３１１の各レジスタｒ０〜ｒ１１は、第２レジスタファイル部２１０のレジスタ群２１１の各レジスタｒ０〜ｒ１１と一対一に対応しており、レジスタ群２１１及びレジスタ群３１１の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。そして、第２レジスタファイル部２１０の転送器２１２は、レジスタ群２１１の各レジスタｒ０〜ｒ１１の読み出しデータを、レジスタ群２１１の各レジスタｒ０〜ｒ１１のレジスタ番号と同一のレジスタ番号を持つ、第３レジスタファイル部３１０のレジスタ群３１１の各レジスタｒ０〜ｒ１１に、転送可能である。
【００６４】
転送器３１２は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第３レジスタファイル部３１０の外部に転送する。
【００６５】
また、第３レジスタファイル部３１０は、第１演算装置１２０の転送器１２３により、第１演算装置１２０の各保持器１−１〜１−４に格納されている、各演算器１−１〜１−４の演算結果を取得することができる。
【００６６】
第３演算装置３２０は、データ処理装置１０２における実体的な処理を行なうものである。第３演算装置３２０は、演算器３−１〜３−４からなる演算器群３２１と、保持器３−１〜３−４からなる保持器群３２２と、転送器３２３と、を有している。
【００６７】
第３演算装置３２０は、第３レジスタファイル部３１０と共に、第３データ処理段を構成しており、第３レジスタファイル部３１０の転送器３１２は、レジスタ群３１１の各レジスタｒ０〜ｒ１１の読み出しデータを第３演算装置３２０に転送可能である。そして、第３演算装置３２０の演算器群３２１の各演算器３−１〜３−４は、第３レジスタファイル部３１０の各レジスタｒ０〜ｒ１１のうちから２つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器３−１〜３−４の演算処理は同時に実行される。
【００６８】
保持器群３２２の保持器３−１〜３−４は、各々に対応する演算器３−１〜３−４の演算結果を格納する。各保持器３−１〜３−４は、各演算器３−１〜３−４と一対一に対応している。
【００６９】
転送器３２３は、各保持器３−１〜３−４に格納されている、各演算器３−１〜３−４の演算結果を第３演算装置３２０の外部に転送する。
【００７０】
また、第３演算装置３２０は、第２演算装置２２０の転送器２２３により、第２演算装置２２０の各保持器２−１〜２−４に格納されている、各演算器２−１〜２−４の演算結果を取得することができる。
【００７１】
次に、本実施の形態におけるデータ処理装置１０２の動作について説明する。
【００７２】
本実施の形態におけるデータ処理装置１０２においては、レジスタ群２１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第２演算装置２２０による演算処理が行なわれる。
【００７３】
第２演算装置２２０による演算処理と同時に、第２演算装置２２０による演算処理の対象外であったレジスタ群２１１のレジスタｒ０〜ｒ１１の読み出しデータが第３レジスタファイル部３１０に転送される。
【００７４】
そして、次のサイクルにおいて、第３レジスタファイル部３１０のレジスタ群３１１のレジスタｒ０〜ｒ１１に転送されたデータを用いて、第３演算装置３２０による演算処理が行なわれる。
【００７５】
第３演算装置３２０による演算処理と同時に、レジスタ群２１１のレジスタｒ０〜ｒ１１の読み出しデータを用いて、第２演算装置２２０による演算処理が行なわれる。
【００７６】
さらに、第３演算装置３２０が第２演算装置１２０の演算結果を必要とする場合には、第２演算装置２２０の転送器２２３が各保持器２−１〜２−４に格納されている、各演算器２−１〜２−４の演算結果を第３演算装置３２０に転送する。
【００７７】
また、第１演算装置１２０の演算結果を第２演算装置２２０が必要とせず、第３演算装置３２０が第１演算装置１２０の演算結果を必要とする場合には、第１演算装置１２０の結果を第３レジスタファイル部に格納することにより、第１演算装置１２０の演算結果を間接的に第３演算装置３２０に投入することができる。
【００７８】
（実施の形態３）
次に、本発明の実施の形態３について説明する。本発明の実施の形態は、上記の実施の形態２のデータ処理装置１０２における第１〜３データ処理段からなる３データ処理段の構成を、Ｎデータ処理段の構成に拡張した形態である。
【００７９】
例えば、Ｎを１以上の整数とする。この場合、第Ｎデータ処理段を構成する演算装置の演算結果は、その演算結果を第（Ｎ＋２）データ処理段以降の演算装置が使用する場合には、第（Ｎ＋２）データ処理段のレジスタファイル部に書き込まれる。
【００８０】
一方、その演算結果を第（Ｎ＋２）データ処理段以降の演算装置が使用しない場合には、その演算結果を第（Ｎ＋２）データ処理段のレジスタファイル部に書き込むことなく第（Ｎ＋１）データ処理段の演算装置に入力する。
【００８１】
以上説明したように、本実施の形態におけるデータ処理装置によれば、次段の演算装置のみにより使用される前段の演算装置の演算結果は、次段のレジスタファイル部への書き込みが不要となる。したがって、前後段におけるレジスタファイル部間のデータ伝搬を省略することができる。
【００８２】
（実施の形態４）
次に、本発明の実施の形態４について説明する。図３は、本発明の実施の形態４におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態２と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【００８３】
図３に示すように、本実施の形態におけるデータ処理装置１０３と上記の実施の形態２におけるデータ処理装置１０２とで異なる点は、第１ロード／ストア部（ロード部、ストア部）１３０と、第１キャッシュメモリ１４０と、をさらに備えている点である。第１ロード／ストア部１３０及び第１キャッシュメモリ１４０は、第１演算装置１２０及び第１レジスタファイル部１１０と共に、第１データ処理段を構成している。
【００８４】
第１ロード／ストア部１３０は、ロード部（ＬＤ）１−１、１−２からなるロード部群１３１と、ストア部（ＳＴ）１−１、１−２からなるストア部群１３２と、を有している。
【００８５】
第１キャッシュメモリ１４０は、第１ロード／ストア部１３０に接続されており、第１ロード／ストア部１３０によるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。
【００８６】
第１キャッシュメモリ１４０は、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要があることから、非アレイ動作時に使用する大容量のキャッシュメモリとは別の小容量のキャッシュメモリを用いて構成されている。
【００８７】
この場合、非アレイ動作時に使用したキャッシュメモリの内容のうち、アレイ動作に必要なダーティラインを一旦外部メモリ（図示省略）に退避させた後、第１キャッシュメモリ１４０を使用してアレイ動作に移行すればよい。そうすることにより、非アレイ動作時に使用されたキャッシュメモリの内容と第１キャッシュメモリ１４０の内容との整合性を保つことが可能となる。
【００８８】
本発明におけるデータ処理装置は、公知のＶＬＩＷ方式によるプロセッサアーキテクチャを前提としており、このため、ＶＬＩＷ形式の機械語命令は通常、第１レジスタファイル部１１０、第１演算装置１２０、第１ロード／ストア部１３０、及び、第１キャッシュメモリ１４０により実行される。すなわち、ＶＬＩＷ方式による演算処理の動作（以下、「非アレイ動作」と呼ぶときもある。）は、第１レジスタファイル部１１０、第１演算装置１２０、第１ロード／ストア部１３０、及び、第１キャッシュメモリ１４０により実行される。
【００８９】
したがって、上記の実施の形態１〜３における、複数の演算装置による演算処理の同時動作（以下、「アレイ動作」と呼ぶときもある。）を開始するために必要となるレジスタ情報は、常時、第１レジスタファイル部１１０に格納されている。
【００９０】
そして、命令デコード部３０によるデコード結果によりアレイ動作開始命令（動作命令）が検出された場合、各データ処理段の演算装置に対して、各演算装置による演算処理に必要なデータを格納するレジスタのレジスタ番号を表わすソースレジスタ番号、各演算装置による演算処理の演算種別、及び、各演算装置の演算結果の格納先であるレジスタのレジスタ番号を表わすデスティネーションレジスタ番号、からなる制御情報（設定情報）Ａが各データ処理段に設定される。
【００９１】
この制御情報Ａは、アレイ動作開始命令の付加情報として配置すればよい。この場合、アレイ動作開始命令のデコード時に制御情報Ａを一度に獲得することができる。
【００９２】
また、この制御情報Ａは、後続のＶＬＩＷ命令列自身として供給してもよい。この場合、アレイ動作開始命令をデコードした後、引き続き後続するＶＬＩＷ命令を順にデコードし、ループの繰り返しを意味する後方分岐命令、すなわちアレイ動作の最終段に対応する命令をデコードするまでの間に、ループからの脱出を意味する前方分岐命令、すなわちアレイ動作の終結条件（動作終結条件）に対応する命令を検出して、休止条件としてセットできる。このため、既存命令列に付加すべき制御情報を削減することができる。
【００９３】
この際、各演算装置による演算処理に必要なデータは、前段から順次伝搬されてくることを前提にすれば、全段の演算装置に対して一斉に制御情報を放送する必要はなく、各段における演算装置に最初のデータが到着すると同時に制御情報が到着する構成とすることができる。
【００９４】
アレイ動作開始後は、例えばループ構造の１イタレーションが演算装置ネットワークに写像されており、データを順次流し込むことにより大量のデータ処理を行なう。
【００９５】
すなわち、アレイ動作開始後は、該アレイ動作が終了するまでの間、各演算装置に対する制御情報を変更する必要がなく、また、非アレイ動作時に必要であった命令デコード部３０によるデコード動作を実行する必要がなくなる。このため、命令デコード部３０は停止し、さらに、命令フェッチ部２０によるフェッチ動作も同様に停止することができる。
【００９６】
また、制御情報Ａに、各段における演算装置のアレイ動作を停止させるためのアレイ動作終結条件を付加しておき、アレイ動作中にあらかじめ指示した条件が満たされた場合に、自動的に非アレイ動作に復帰する構成とする。
【００９７】
このアレイ動作終結条件とは、具体的には、各データ処理段における演算装置の実行サイクル数等である。
【００９８】
（実施の形態５）
次に、本発明の実施の形態５について説明する。図４は、本発明の実施の形態５におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態４と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【００９９】
図４に示すように、本実施の形態におけるデータ処理装置１０４と上記の実施の形態４におけるデータ処理装置１０３とで異なる点は、外部メモリ１５０、をさらに備えている点である。
【０１００】
外部メモリ１５０は、第１ロード／ストア部１３０が保有する第１キャッシュメモリ１４０のみに接続されている。そして、第２段以降については、第１キャッシュメモリ１４０のデータが順次伝搬されている。このことにより、外部メモリ１５０と各データ処理段のキャッシュメモリの接続を単純化している。
【０１０１】
ロード命令は、第１レジスタファイル部１１０に格納されたアドレス情報を第１演算装置１２０において加減算して得られるアドレスに従って第１キャッシュメモリ１４０を参照し、得られたデータを第１ロード／ストア部１３０のストア部群１３２のストア部１−１、１−２に格納される。
【０１０２】
このストア部１−１、１−２に格納されたデータは、次のサイクルにおいて、後段の演算装置またはレジスタファイル部の入力となる。
【０１０３】
（実施の形態６）
次に、本発明の実施の形態６について説明する。図５は、本発明の実施の形態６におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態５と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【０１０４】
図５に示すように、本実施の形態におけるデータ処理装置１０５と上記の実施の形態５におけるデータ処理装置１０４とで異なる点は、第２ロード／ストア部２３０と、第３ロード／ストア部３３０と、第２キャッシュメモリ２４０と、第３キャッシュメモリ３４０と、をさらに備えている点である。第２ロード／ストア部２３０及び第２キャッシュメモリ２４０は、第２演算装置２２０及び第２レジスタファイル部２１０と共に、第２データ処理段を構成している。また、第３ロード／ストア部３３０及び第３キャッシュメモリ３４０は、第３演算装置３２０及び第３レジスタファイル部３１０と共に、第３データ処理段を構成している。
【０１０５】
第２ロード／ストア部２３０は、ロード部（ＬＤ）２−１、２−２からなるロード部群２３１と、ストア部（ＳＴ）２−１、２−２からなるストア部群２３２と、を有している。また、第３ロード／ストア部３３０は、ロード部（ＬＤ）３−１、３−２からなるロード部群３３１と、ストア部（ＳＴ）３−１、３−２からなるストア部群３３２と、を有している。
【０１０６】
第２キャッシュメモリ２４０は、第２ロード／ストア部２３０に接続されており、第２ロード／ストア部２３０によるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。
【０１０７】
第３キャッシュメモリ３４０は、第３ロード／ストア部３３０に接続されており、第３ロード／ストア部３３０によるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。
【０１０８】
第２及び第３キャッシュメモリ２４０、３４０は、第１キャッシュメモリ１４０と同様に、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要があることから、非アレイ動作時に使用する大容量のキャッシュメモリとは別の小容量のキャッシュメモリを用いて構成されている。
【０１０９】
ただし、第２及び第３キャッシュメモリ２４０、３４０は、第１キャッシュメモリ１４０とは異なり、外部メモリ１５０と直接データ転送するためのインタフェースは備えていない。このため、第１キャッシュメモリ１４０から前段のキャッシュメモリを経由して間接的にデータ供給を受ける。
【０１１０】
（実施の形態７）
次に、本発明の実施の形態７について説明する。図６は、本発明の実施の形態７におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態６と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【０１１１】
ＶＬＩＷ形式に限らず、一般的な機械語命令では、各命令語中に記述されているレジスタ番号は変化することがない。したがって、上記の実施の形態４〜６のように、あらかじめ各演算装置に制御情報をセットし、レジスタの内容が前段から流れ込む構成とすることにより、本来、ＶＬＩＷ形式の機械語命令が意図する演算結果と同じ結果をアレイ動作により連続的に得ることができる。
【０１１２】
一方、ＶＬＩＷ形式に限らず、一般的なロード命令では、レジスタの内容から得られるロードアドレスを用いてキャッシュメモリを参照した後に、後続命令によりレジスタの内容をインクリメントまたはデクリメントして、次にロード命令を実行する際には異なるアドレスを用いる。
【０１１３】
同様の結果をアレイ動作により連続的に得るためには、各段におけるロード命令が、後続命令の結果を待つことなく、自律的にアドレス情報をインクリメントまたはデクリメントし、連続的にキャッシュメモリを参照する構成が必要である。
【０１１４】
このためには、本実施の形態におけるデータ処理装置１０６においては、図６に示すように、ロードアドレスを計算する各段の演算装置が、前回の演算結果を用いて次のアドレスを計算する。
【０１１５】
一般に、ロードアドレスは、ベースレジスタにオフセットを加えたものであり、この加算のために、演算器を１段通過しなければならない。また、次に使用するアドレスは、さらにオフセットを加えた値ではなく、例えば４バイトなど、データ幅分のみを加えた値である。このようなアドレス増加のために、通常のプログラムでは、ロード命令の実行後に、ベースレジスタの値を４だけ増加させる命令を実行する。
【０１１６】
しかし、本実施の形態において、後段においてレジスタの値を増加させ、その結果を前段において使用することとした場合、１方向のデータ流を効率よく制御することができない。
【０１１７】
このため、上述したように、本実施の形態においては、後段の値を前段に戻すのではなく、前段が自律的にベースアドレスを更新する。
【０１１８】
そうすることにより、各段のロード／ストア部が後段の実行結果を待つことなく、各段のロード／ストア部の負荷を低減することができる。
【０１１９】
（実施の形態８）
次に、本発明の実施の形態８について説明する。図７は、本発明の実施の形態８におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態７と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【０１２０】
図７に示すように、本実施の形態におけるデータ処理装置１０７においては、第１キャッシュメモリ１４０は外部メモリ１５０に接続されている。以下、画像処理の１つである輪郭抽出処理を例として本実施の形態におけるデータ処理装置１０７の動作について説明する。
【０１２１】
画像処理の１つである輪郭抽出処理は、例えば３×３の画素領域について縦横斜めの対角画素の差分を求め、総和が閾値を超えた場合に、中央画素位置に輪郭を生成するものである。一般的に、画像データは横方向に連続アドレスとなるよう外部Ｉ／Ｏ装置から外部メモリに転送されており、その結果、縦方向の連続画素はメモリアドレスとしては離散してしまう。
【０１２２】
従来技術におけるキャッシュメモリは、１６ワード程度の連続アドレス領域を外部メモリよりも高速なメモリに保存しておき、多数回の再利用を期待して高速化する技術である。このため、縦方向の離散アドレスを頻繁に参照する場合には上記の効果を期待することができない。
【０１２３】
そこで、本実施の形態におけるデータ処理装置１０７では、外部Ｉ／Ｏ装置から外部メモリに対して画素データを格納する際には、バースト転送による高スループットを期待するために、書き込み先である外部メモリのベースアドレスと転送ワード数（画像の幅が１０２４ワードの場合、１０２４）とから構成される転送情報Ｆに基づいてアドレスが連続するようなデータ転送を行なう。
【０１２４】
一方、外部メモリから第１キャッシュメモリにデータを転送する際には、縦方向に隣接する画素データを演算装置に対して毎サイクル供給するために、書き込み先である第１キャッシュメモリのベースアドレスと転送データ長（画像の幅が１０２４ワードの場合、上中下３ワードの転送を１０２４回分）から構成される転送情報Ｇに基づいて、外部メモリの異なるバンクに属する複数の短いデータ（例えば毎サイクル３ワード）をキャッシュメモリの複数のラインに毎サイクル転送できる構成としている。
【０１２５】
このような転送情報は、アレイ動作開始命令に関連付けられており、アレイ動作開始命令を検出した際に読み出される。
【０１２６】
（実施の形態９）
次に、本発明の実施の形態９について説明する。図８は、本発明の実施の形態９におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態８と同様の部分については、同一符号を付し、その詳細な説明は省略する。
【０１２７】
上記の実施の形態８においては、アレイ動作開始命令に関連付けられるデータ転送情報には、外部Ｉ／Ｏ装置から外部メモリに対する転送情報と、外部メモリから第１キャッシュメモリに対する転送情報の２つがある。
【０１２８】
ところで、外部メモリから第１キャッシュメモリに対する転送情報については、第１キャッシュメモリと第１演算装置を同期させる機構が必要である。目的は、第１キャッシュメモリに必要なデータが全て揃った時点、すなわち、第２段以降のロード／ストア部が必要とするデータが第１キャッシュメモリに全て存在することを確認した時点で全段の演算装置を一斉に動作させ、必要とするデータが第１キャッシュメモリに存在しない間は全段の演算装置を一斉に停止させることにある。
【０１２９】
このため、本実施の形態におけるデータ処理装置１０８においては、前述したデータ転送情報に、演算装置の動作開始までにあらかじめ動作させるべきロード回数（ＳＫＩＰ情報）を追加する。規定回数のロードが完了した時点で、後段の演算装置の動作を開始する。
【０１３０】
以後、ロードが完了するたびに、後段の演算装置を動作させる。一方、外部メモリの遅延などによりロードが完了しない場合は、後段を停止させる。
【０１３１】
また、最終段が外部メモリや外部Ｉ／Ｏ装置に結果を格納する際に遅延が生じた場合も、アレイ動作を一時停止させることにより、データの待ち合わせを行なう。
【０１３２】
ロード完了数が指定転送ワード数に達した時は、第１段のロード動作は停止し、後段の動作のみを継続させる。例えば、最終段の演算装置における演算数カウンタが規定値に達したことをもってアレイ動作を停止させることにより、アレイ動作の正確な制御が可能である。
【０１３３】
（実施の形態１０）
次に、本発明の実施の形態１０について説明する。
【０１３４】
アレイ動作の最終結果は、ストア命令により外部メモリまたは外部Ｉ／Ｏ装置に格納される。あるいは、さらに別の外部メモリに格納し、その外部メモリに接続される別のＮ段構成の入力とすることにより、複数種類の画像処理を連続的に行なうことが可能となる。
【０１３５】
また、ハードウエアが備えるアレイ段数よりも複雑な処理を行なう場合は、外部メモリをインタフェースとして別のアレイ構造を従属接続したり、あるいは、別のアレイ構造の第１キャッシュメモリに直接接続したりすることにより、演算装置の段数を拡張して対応することができる。
【０１３６】
（実施の形態１１）
次に、本発明の実施の形態１１について説明する。本実施の形態では、本発明におけるデータ処理方法の処理手順について説明する。
【０１３７】
以下、図９に記載した命令コードに基づく、本発明におけるデータ処理方法による演算器間ネットワークの設定過程について、図１０〜２０を用いて図９の命令コードを順に追って説明する。
【０１３８】
ループ構造に入る手前の機械語命令において、アレイ動作開始命令が検出されたとする。この場合、ループ構造が終結、すなわち、後方分岐命令が検出されるまでの間、命令デコード機能は機械語命令を従来通り解釈し、第１演算装置を制御する従来動作を停止する。
【０１３９】
そして、ループ構造内の機械語命令に基づいてアレイ動作に必要な演算器間ネットワークの設定を行なう。
【０１４０】
先ず、図１０において、図９に示した命令コードの第１行目の機械語命令が解釈されている。なお、図１０では、この第１行目の命令コードに基づく設定箇所を「Ｓ１」で示している。
【０１４１】
この第１行目の命令コードは、２つのロード命令（ld）と、１つの減算命令（subicc）が記述されている。
【０１４２】
第１のロード命令（ld）は、第１レジスタファイル部１１０のレジスタ（gr4）の内容と定数（-1284）（const.）を加算し、その結果を主記憶アドレスとして第１キャッシュメモリ１４０を参照し、読み出した値を第４レジスタファイル部４１０のレジスタ（fr1）に格納する。
【０１４３】
このための演算器ネットワークとして、先ず、第１レジスタファイル部１１０からレジスタ（gr4）を読み出し、第１演算装置１２０に属する演算器（第１EAG）に入力する設定を行なう。この設定は、一般的な選択回路に対する選択信号の設定と同じである。
【０１４４】
さらに、第１EAGの加算結果は、第１EAGの保持器に記憶された後、次のサイクルにおいて、第１ロード／ストア部１３０に転送される。
【０１４５】
この第１EAGと第１ロード／ストア部１３０のロード部及びストア部は、１対１に接続されているので、第１ロード／ストア部１３０における入力選択手順は不要である。
【０１４６】
さらに、第１ロード／ストア部１３０の結果が第４レジスタファイル部４１０のレジスタ（fr1）に書き込まれるよう、ネットワークの設定を行なう。
【０１４７】
第２のロード命令（ld）は、第１のロード命令（ｌｄ）と同様に、第１レジスタファイル部１１０のレジスタ（gr4）の内容と定数（1284）（const.）を加算し、その結果を主記憶アドレスとして第１キャッシュメモリ１４０を参照し、読み出した値を第４レジスタファイル部４１０のレジスタ（fr2）に格納する。
【０１４８】
このための演算器ネットワークとして、先ず、第１レジスタファイル部１１０からレジスタ（gr4）を読み出し、第１演算装置１２０に属する演算器（第２EAG）に入力する設定を行なう。
【０１４９】
さらに、第２EAGの加算結果は、第２EAGの保持器に記憶された後、次のサイクルにおいて、第１ロード／ストア部１３０に転送される。
【０１５０】
この第２EAGと第１ロード／ストア部１３０のロード部及びストア部も、１対１に接続されているので、第１ロード／ストア部１３０における入力選択手順は不要である。
【０１５１】
さらに、第１ロード／ストア部１３０の結果が第４レジスタファイル部４１０のレジスタ（fr2）に書き込まれるよう、ネットワークの設定を行なう。
【０１５２】
なお、定数は、命令デコード時に、定数領域（const.）に設定される。
【０１５３】
第３の減算命令（subicc）は、第１レジスタファイル部１１０のレジスタ（gr7）から１を減算し、その結果を同じレジスタ（gr7）に格納する命令である。
【０１５４】
このための演算器ネットワークとして、第１レジスタファイル部１１０のレジスタ（gr7）の内容から１を減算するよう、第１演算装置１２０までのネットワークが設定される。
【０１５５】
なお、繰返し減算を行なうために、次サイクル以降は、第１レジスタファイル部１１０のレジスタ（gr7）からではなく、第１演算装置１２０に属する演算器（subicc）の出力を入力とするようネットワークを構成する。
【０１５６】
そうすることにより、継続して減算を行った結果（後述する条件コード）を利用して、アレイ動作の終結条件とすることができる。
【０１５７】
減算結果に伴う条件コードは、第３レジスタファイル部３１０のレジスタ（icc0）に転送されるよう、ネットワークの設定を行なう。
【０１５８】
次に、図１１において、図９に示した命令コードの第２行目の機械語命令が解釈されている。なお、図１１では、この第２行目の命令コードに基づく設定箇所を「Ｓ２」で示している。
【０１５９】
この第２行目の命令コードは、２つのロード命令（ld）と、１つの条件分岐命令（beq）が記述されている。
【０１６０】
第１のロード命令（ld）は、第２レジスタファイル部２１０のレジスタ（gr4）の内容と定数（-1280）（const.）を加算し、その結果を主記憶アドレスとして第２キャッシュメモリ２４０を参照し、読み出した値を第５レジスタファイル部５１０のレジスタ（fr3）に格納する。
【０１６１】
このための演算器ネットワークとして、先ず、第１レジスタファイル部１１０のレジスタ（gr4）を第２レジスタファイル部２１０のレジスタ（gr4）に転送する設定が行なわれる。
【０１６２】
そして、第２レジスタファイル部２１０からレジスタ（gr4）を読み出し、第２演算装置２２０に属する演算器（第１EAG）に入力する設定を行なう。
【０１６３】
さらに、第１EAGの加算結果は、第１EAGの保持器に記憶された後、次のサイクルにおいて、第２ロード／ストア部２３０に転送される。
【０１６４】
そして、この第２ロード／ストア部２３０の結果が第５レジスタファイル部５１０のレジスタ（fr3）に書き込まれるよう、ネットワークの設定を行なう。
【０１６５】
第２のロード命令（ld）は、第１のロード命令（ld）と同様に、第２レジスタファイル部２１０のレジスタ（gr4）の内容と定数（1280）（const.）を加算し、その結果を主記憶アドレスとして第２キャッシュメモリ２４０を参照し、読み出した値を第５レジスタファイル部５１０のレジスタ（fr4）に格納する。
【０１６６】
このための演算器ネットワークとして、第２レジスタファイル部２１０からレジスタ（gr4）を読み出し、第２演算装置２２０に属する演算器（第２EAG）に入力する設定を行なう。
【０１６７】
さらに、第２EAGの加算結果は、第２EAGの保持器に記憶された後、次のサイクルにおいて、第２ロード／ストア部２３０に転送される。
【０１６８】
そして、この第２ロード／ストア部２３０の結果が第５レジスタファイル部５１０のレジスタ（fr4）に書き込まれるよう、ネットワークの設定を行なう。
【０１６９】
条件分岐命令（beq）は、図９に示した第１行目の命令コードに記述された減算命令（subicc）の結果に伴う条件コード（icc0）が０であったことを示している場合、edge exitに分岐する機械語命令である。アレイ動作ではない通常動作時（非アレイ動作時）には、従来の条件分岐命令として実行される。
【０１７０】
一方、アレイ動作時には、この条件コード（icc0）を上述した「アレイ動作終結条件」として利用する。この減算結果が０であったことを示している場合、アレイ動作を終結し、通常動作（非アレイ動作）に復帰するトリガ（ARRAY-ABORT信号）となる。
【０１７１】
なお、第１演算装置１２０による減算命令結果に伴う条件コード（icc0）は、第１演算装置１２０から第２演算装置２２０にバイパスできるため、最終的には、第３レジスタファイル部３１０のレジスタ（icc0）に書き込む必要がなくなる。
【０１７２】
次に、図１２において、図９に示した命令コードの第３行目の機械語命令が解釈されている。なお、図１２では、この第３行目の命令コードに基づく設定箇所を「Ｓ３」で示している。
【０１７３】
この第３行目の命令コードは、２つのロード命令（ld）と、１つのＳＡＤ命令（sad）が記述されている。
【０１７４】
第１のロード命令（ld）は、レジスタ（gr4）の内容と定数（-1276）を加算し、その結果を主記憶アドレスとして第３キャッシュメモリ３４０を参照し、読み出した値をレジスタ（fr5）に格納する。
【０１７５】
このための演算器ネットワークとして、先ず、第２レジスタファイル部２１０のレジスタ（gr4）を第３レジスタファイル部３１０のレジスタ（gr4）に転送する設定が行なわれる。
【０１７６】
そして、第３レジスタファイル部３１０のレジスタ（gr4）を読み出し、第３演算装置３２０に属する演算器（第１EAG）に入力する設定を行なう。
【０１７７】
さらに、第１EAGの加算結果は、第１EAGの保持器に記憶された後、次のサイクルにおいて、第３ロード／ストア部３３０に転送される。
【０１７８】
そして、第３ロード／ストア部３３０の結果が第６レジスタファイル部６１０のレジスタ（fr5）に書き込まれるよう、ネットワークの設定を行なう。
【０１７９】
第２のロード命令（ld）は、第１のロード命令（ld）と同様に、第３レジスタファイル部３１０のレジスタ（gr4）の内容と定数（1276）（const.）を加算し、その結果を主記憶アドレスとして第３キャッシュメモリ３４０を参照し、読み出した値を第６レジスタファイル部６１０のレジスタ（fr6）に格納する。
【０１８０】
このための演算器ネットワークとして、第３レジスタファイル部３１０からレジスタ（gr4）を読み出し、第３演算装置３２０に属する演算器（第２EAG）に入力する設定を行なう。
【０１８１】
さらに、第２EAGの加算結果は、第２EAGの保持器に記憶された後、次のサイクルにおいて、第３ロード／ストア部３３０に転送される。
【０１８２】
そして、第３ロード／ストア部３３０の結果が、第６レジスタファイル部６１０のレジスタ（fr6）に書き込まれるよう、ネットワークの設定を行なう。
【０１８３】
ＳＡＤ命令（sad）は、先に第１ロード／ストア部１３０によりロードされた第４レジスタファイル部４１０のレジスタ（fr1）及びレジスタ（fr2）のバイト毎差分絶対総和を求め、その結果を第５レジスタファイル部５１０のレジスタ（fr1）に書き込む機械語命令である。
【０１８４】
第１ロード／ストア部１３０と第３演算装置３２０間のバイパスを利用すれば、第１ロード／ストア部１３０が第４レジスタファイル部４１０のレジスタ（fr1）及びレジスタ（fr2）の書き込みを行なうのと同時に、第３演算装置３２０に対しても入力（ld-bypass）することができる。このため、最終的には、第４レジスタファイル部４１０のレジスタ（fr1）及びレジスタ（fr2）からの読み出しは不要となる。
【０１８５】
そして、ＳＡＤ命令（sad）の結果が第５レジスタファイル部５１０のレジスタ（fr1）に書き込まれるよう、演算器ネットワークを設定する。
【０１８６】
次に、図１３において、図９に示した命令コードの第４行目の機械語命令が解釈されている。なお、図１３では、この第４行目の命令コードに基づく設定箇所を「Ｓ４」で示している。
【０１８７】
この第４行目の命令コードは、２つのロード命令（ld）と、１つのａｄｄｉ命令と、１つのＳＡＤ命令（sad）が記述されている。
【０１８８】
第１のロード命令（ld）は、レジスタ（gr4）の内容と定数（-4）（const.）を加算し、その結果を主記憶アドレスとして第４キャッシュメモリ４４０を参照し、読み出した値を第７レジスタファイル部７１０のレジスタ（fr7）に格納する。
【０１８９】
このための演算器ネットワークとして、先ず、第３レジスタファイル部３１０のレジスタ（gr4）を第４レジスタファイル部４１０のレジスタ（gr4）に転送する設定が行なわれる。
【０１９０】
そして、第４レジスタファイル部４１０のレジスタ（gr4）を読み出し、第４演算装置４２０に属する演算器（第１EAG）に入力する設定を行なう。
【０１９１】
さらに、第１EAGの加算結果は、第１EAGの保持器に記憶された後、次のサイクルにおいて、第４ロード／ストア部４３０に転送される。
【０１９２】
そして、第４ロード／ストア部４３０の結果が、第７レジスタファイル部７１０のレジスタ（fr7）に書き込まれるよう、ネットワークの設定を行なう。
【０１９３】
第２のロード命令（ld）は、第１のロード命令（ｌｄ）と同様に、第３レジスタファイル部３１０のレジスタ（gr4）の内容と定数（4）（const.）を加算し、その結果を主記憶アドレスとして第４キャッシュメモリ４４０を参照し、読み出した値を第７レジスタファイル部７１０のレジスタ（fr8）に格納する。
【０１９４】
このための演算器ネットワークとして、第４レジスタファイル部４１０のレジスタ（gr4）を読み出し、第４演算装置４２０に属する演算器（第２EAG）に入力する設定を行なう。
【０１９５】
さらに、第２EAGの加算結果は、第２EAGの保持器に記憶された後、次のサイクルにおいて、第４ロード／ストア部４３０に転送される。
【０１９６】
そして、第４ロード／ストア部４３０の結果が、第７レジスタファイル部７１０のレジスタ（fr9）に書き込まれるよう、ネットワークの設定を行なう。
【０１９７】
ＳＡＤ命令（sad）は、先に第２ロード／ストア部２３０によりロードされた第５レジスタファイル部５１０のレジスタ（fr3）及びレジスタ（fr4）のバイト毎差分絶対総和を求め、その結果を第６レジスタファイル部６１０のレジスタ（fr3）に書き込む機械語命令である。
【０１９８】
第２ロード／ストア部２３０と第４演算装置４２０間のバイパスを利用すれば、第２ロード／ストア部２３０が第５レジスタファイル部５１０のレジスタ（fr3）及びレジスタ（fr4）の書き込みを行なうのと同時に、第４演算装置４２０に対しても入力（ld-bypass）することができる。このため、最終的には、第５レジスタファイル部５１０のレジスタ（fr3）及びレジスタ（fr4）からの読み出しは不要となる。
【０１９９】
そして、ＳＡＤ命令（sad）の結果が第６レジスタファイル部６１０のレジスタ（fr3）に書き込まれるよう、演算器ネットワークを設定する。
【０２００】
ａｄｄｉ命令は、レジスタ（gr4）のアドレスを更新する機械語命令である。
【０２０１】
このａｄｄｉ命令が検出されると、レジスタ（gr4）を使用する演算装置である第１〜第４演算装置１２０〜４２０に対し、フィードバックループが生成される。これらフィードバックループ生成により、第１〜第４演算装置１２０〜４２０のロードアドレスが自動的に更新される。
【０２０２】
次に、図１４においては、図９に示した命令コードの第５行目の機械語命令が解釈されている。なお、図１４では、この第５行目の命令コードに基づく設定箇所を「Ｓ５」で示している。
【０２０３】
この第５行目の命令コードは、１つのＳＡＤ命令（sad）と、１つの加算命令（madd）が記述されている。
【０２０４】
ＳＡＤ命令（sad）は、先に第３ロード／ストア部３３０によりロードされた第６レジスタファイル部６１０のレジスタ（fr5）及びレジスタ（fr6）のバイト毎差分絶対総和を求め、その結果を第７レジスタファイル部７１０のレジスタ（fr5）に書き込む機械語命令である。
【０２０５】
第３ロード／ストア部３３０と第５演算装置５２０間のバイパスを利用すれば、第３ロード／ストア部３３０が第６レジスタファイル部６１０のレジスタ（fr5）及びレジスタ（fr6）の書き込みを行なうのと同時に、第５演算装置５２０に対しても入力（ld-bypass）することができる。このため、最終的には、第６レジスタファイル部６１０のレジスタ（fr5）及びレジスタ（fr6）からの読み出しは不要となる。
【０２０６】
そして、ＳＡＤ命令（sad）の結果が第７レジスタファイル部７１０のレジスタ（fr5）に書き込まれるよう、演算器ネットワークを設定する。
【０２０７】
加算命令（madd）は、先のＳＡＤ命令（sad）の結果を第７レジスタファイル部７１０のレジスタ（fr1）に累算する機械語命令である。
【０２０８】
第５レジスタファイル部５１０のレジスタ（fr1）については、第５レジスタファイル部５１０と第５演算装置５２０間のバイパスを利用できないため、第５レジスタファイル部５１０から読み出し、第６レジスタファイル部６１０のレジスタ（fr3）については、第４演算装置４２０による直前の演算結果をバイパス（fr3-bypass）し、第５演算装置５２０に入力できる。
【０２０９】
第５演算装置５２０の演算結果が第７レジスタファイル部７１０のレジスタ（fr1）に格納されるよう、演算器ネットワークを設定する。
【０２１０】
次に、図１５においては、図９に示した命令コードの第６行目の機械語命令が解釈される。なお、図１５では、この第６行目の命令コードに基づく設定箇所を「Ｓ６」で示している。
【０２１１】
この第６行目の命令コードは、１つのＳＡＤ命令（sad）と、１つの加算命令（madd）が記述されている。
【０２１２】
ＳＡＤ命令（sad）は、先に第４ロード／ストア部４３０によりロードされた第７レジスタファイル部７１０のレジスタ（fr7）及びレジスタ（fr8）のバイト毎差分絶対総和を求め、その結果を第８レジスタファイル部８１０のレジスタ（fr7）に書き込む機械語命令である。
【０２１３】
第４ロード／ストア部４３０と第６演算装置６２０間のバイパスを利用すれば、第４ロード／ストア部４３０が第７レジスタファイル部７１０のレジスタ（fr7）及びレジスタ（fr8）の書き込みを行なうと同時に、第６演算装置６２０に対しても入力（ld-bypass）することができる。このため、最終的には、第７レジスタファイル部７１０のレジスタ（fr7）及びレジスタ（fr8）からの読み出しは不要となる。
【０２１４】
そして、ＳＡＤ命令（sad）の結果が第８レジスタファイル部８１０のレジスタ（fr7）に書き込まれるよう、演算器ネットワークを設定する。
【０２１５】
加算命令（madd）は、先のＳＡＤ命令（sad）の結果を第８レジスタファイル部８１０のレジスタ（fr1）に累算する機械語命令である。
【０２１６】
第７レジスタファイル部７１０のレジスタ（fr1）及びレジスタ（fr5）については、第５演算装置５２０による直前の演算結果をバイパス（fr5、1-bypass）し、第６演算装置６２０に入力できる。
【０２１７】
第６演算装置６２０の演算結果が第８レジスタファイル部８１０のレジスタ（fr1）に格納されるよう、演算器ネットワークを設定する。
【０２１８】
次に、図１６においては、図９に示した命令コードの第７行目の機械語命令が解釈される。なお、図１６では、この第７行目の命令コードに基づく設定箇所を「Ｓ７」で示している。
【０２１９】
この第７行目の命令コードでは、１つの加算命令（madd）が記述されている。
【０２２０】
加算命令（madd）は、先のＳＡＤ命令（sad）の結果を第９レジスタファイル部９１０のレジスタ（fr1）に累算する機械語命令である。
【０２２１】
第８レジスタファイル部８１０のレジスタ（fr1）及びレジスタ（fr7）については、第６演算装置６２０による直前の演算結果をバイパス（fr7、1-bypass）し、第７演算装置７２０に入力できる。
【０２２２】
第７演算装置７２０の演算結果が第９レジスタファイル部９１０のレジスタ（fr1）に格納されるよう、演算器ネットワークを設定する。
【０２２３】
次に、図１７においては、図９に示した命令コードの第８行目の機械語命令が解釈される。なお、図１７では、この第８行目の命令コードに基づく設定箇所を「Ｓ８」で示している。
【０２２４】
この第８行目の命令コードでは、１つの補正命令（msum）が記述されている。
【０２２５】
補正命令（msum）は、レジスタ（fr1）内部で上位下位など複数の部分和に分割されている結果を１つにマージする（部分和を合計して総和を求める）命令である。ＳＡＤ命令（SAD）が１ワード中の複数バイトの組から求まる差分絶対値総和を一度に求めることが困難である場合に、この命令により最後に総和を求めることができる。
【０２２６】
演算に必要なレジスタ（fr1）は、前段の第７演算装置７２０からバイパス（fr1-bypass）により第８演算装置８２０に入力され、第８演算装置８２０の演算結果が第１０レジスタファイル部１０１０のレジスタ（fr1）に格納されるよう、演算器ネットワークを設定する。
【０２２７】
次に、図１８においては、図９に示した命令コードの第９行目の機械語命令が解釈される。なお、図１８では、この第９行目の命令コードに基づく設定箇所を「Ｓ９」で示している。
【０２２８】
この第９行目の命令コードでは、１つの条件付きセット命令（cset）が記述されている。
【０２２９】
条件付きセット命令（cset）は、補正命令（msum）により求めた総和が、レジスタ（fr9）により与えられる閾値未満の場合に「０」、それ以外の場合に「１」を第１１レジスタファイル部１１１０のレジスタ（fr1）に格納する命令である。
【０２３０】
演算に必要なレジスタ（fr1）は前段の第８演算装置８２０からバイパス（fr1-bypass）により第９演算装置９２０に入力され、その閾値は第１レジスタファイル部１１０から順次転送されて第９レジスタファイル部９１０のレジスタ（fr9）に格納されていることを利用して、第９レジスタファイル部９１０のレジスタ（fr9）から読み出されるよう、また、第９演算装置９２０の演算結果が第１１レジスタファイル部１１１０のレジスタ（fr1）に格納されるよう、演算器ネットワークを設定する。
【０２３１】
次に、図１９においては、図９に示した命令コードの第１０行目の機械語命令が解釈される。なお、図１９では、この第１０行目の命令コードに基づく設定箇所を「Ｓ１０」で示している。
【０２３２】
この第１０行目の命令コードでは、１つのストア命令（stb）と、１つのａｄｄｉ命令と、１つの無条件分岐命令（bra）が記述されている。
【０２３３】
ストア命令（stb）は、レジスタ（gr5）の内容と定数（0）（const.）を加算し、その結果を主記憶アドレスとしてストアバッファ（STBF）にデータを格納する。
【０２３４】
このための演算器ネットワークとして、第１０レジスタファイル部１０１０のレジスタ（gr5）を読み出し、第１０演算装置１０２０に属する演算器（EAG）に入力する設定を行なう。
【０２３５】
さらに、EAGの加算結果は、EAGの保持器に記憶された後、次のサイクルにおいて、第１０ロード／ストア部１０３０に転送される。
【０２３６】
ストアバッファ（STBF）の内容は、順次、外部メモリに対して出力される。
【０２３７】
ａｄｄｉ命令は、レジスタ（gr5）のアドレスを更新する機械語命令である。
【０２３８】
この加算命令が検出されると、レジスタ（gr5）を使用する演算装置である第１０演算装置１０２０に対し、フィードバックループが生成される。このフィードバックループ生成により、第１０演算装置１０２０のストアアドレスが自動的に更新される。
【０２３９】
無条件分岐命令（bra）を検出した場合、次に説明する、ネットワーク設定完了処理に移る。
【０２４０】
次に、図２０においては、最終的に不要となるネットワーク設定部分の削除が行なわれる。
【０２４１】
上述したように、機械語命令を順次デコードしてネットワーク設定をインクリメンタルに進める場合、前段の演算装置の実行結果は、次段の演算装置にバイパスして利用する他に、次段のレジスタファイル部へ書き込んでおく必要がある。これは、演算装置の実行結果が、次段の演算装置に限らず、より後段の演算装置において使用される場合にも対応するためである。
【０２４２】
しかし、ループ構造を全て把握した後には、不要なレジスタ値の伝搬は削除でき、最後に使用した演算装置以降は、レジスタへ書き込む必要もない。このようにして不要となるネットワークの設定箇所を削除することが、ネットワーク設定完了処理である。
【０２４３】
具体的には、図２０中の×部分が、最終的に不要と判断されたレジスタへの書き込みパスである。この場合、レジスタファイル部間の伝搬が残るのは、レジスタ（gr4）、レジスタ（gr5）及びレジスタ（fr9）のみとなる。
【０２４４】
キャッシュメモリの内容の伝搬についても同様に、途中で打ち切ることができる。
【０２４５】
以上説明したように、本発明におけるデータ処理装置及びそのデータ処理方法では、レジスタファイル部と、演算装置と、ロード／ストア部とからなる１組の基本構成を維持しつつ、複数組を縦列配置し、隣接するレジスタファイル部間において必要なレジスタ値を伝搬させる構成とする。
【０２４６】
また、ロード／ストア部についても、複数組を縦列配置するとともに、隣接する小規模なキャッシュメモリ間において必要なデータを伝搬させる構成とする。
【０２４７】
このようにすることにより、同時に動作するレジスタ数と演算装置数を線形に増加させつつ、任意の番号のレジスタ内容を任意の演算装置に供給する複雑さを１組の基本構成内に封じ込めることができる。
【０２４８】
したがって、本発明におけるデータ処理装置及びそのデータ処理方法によれば、従来は不可能であった大規模な並列処理を実現することができる。
【０２４９】
また、各組間のデータ伝搬を効率よく行なうと共に、既存のＶＬＩＷ形式の機械語命令を用いることが可能となる。
【０２５０】
なお、隣接するレジスタファイル間におけるレジスタ値の伝搬機能については、例えば、互いに同数の物理的なレジスタを配置する構成を用いることができる。また、より小数の物理的なレジスタと、各レジスタの番号の対応関係を保持する表とを組み合わせた構成も用いることができる。
【０２５１】
同様に、隣接する小規模なキャッシュメモリ間におけるデータの伝搬機能については、キャッシュメモリ全体を一度に複製する構成を用いることができる。また、前段のキャッ
シュメモリから流れ込んでくる差分データのみを次段へ伝搬させることで、実質的に同一の内容を次段へ複製する構成を用いても良い。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて
得られる実施形態についても本発明の技術的範囲に含まれる。
【０２５２】
なお、実施の形態は上述の他に、以下のようにも表現できる。
【０２５３】
本発明におけるデータ処理装置は、機械語命令を解釈実行するデータ処理装置であって、機械語命令中に記述される複数のレジスタ番号に対応してデータを一時的に保持する複数のレジスタから構成される第１段のレジスタファイル装置と、該第１段のレジスタファイル装置から読み出した１つまたは複数のデータを入力として演算を行なう第１段の演算装置と、該第１段の演算装置の演算結果を一時的に保持する第１段の演算結果保持手段と、前記第１段のレジスタファイル装置と同量または同量以上のデータを保持する第２段のレジスタファイル装置と、該第２段のレジスタファイル装置から読み出した１つまたは複数のデータを入力として演算を行なう第２段の演算装置と、該第２段の演算装置の演算結果を一時的に保持する第２段の演算結果保持手段を備え、前記第２段のレジスタファイル装置は前記第１段のレジスタファイル装置の内容を入力とし、前記第２段の演算装置は前記第１段の演算結果保持手段の内容または前記第２段のレジスタファイル装置の内容を入力とし、前記第１段の演算装置と前記第２段の演算装置が一斉に動作する。
【０２５４】
前記第１段のレジスタファイル装置と同量または同量以上のデータを保持する第３段のレジスタファイル装置と、該第３段のレジスタファイル装置から読み出した１つまたは複数のデータを入力として演算を行なう第３段の演算装置と、該第３段の演算装置の演算結果を一時的に保持する第３段の演算結果保持手段を備え、前記第３段のレジスタファイル装置は前記第１段の演算結果保持手段の内容または前記第２段のレジスタファイル装置の内容を入力とし、前記第３段の演算装置は前記第２段の演算結果保持手段の内容または前記第３段のレジスタファイル装置の内容を入力とし、前記第２段の演算装置と前記第３段の演算装置が一斉に動作することが好ましい。
【０２５５】
Ｎを１以上の整数とする第Ｎ段のレジスタファイル装置と第Ｎ段の演算装置と第Ｎ段の演算結果保持手段を備え、第Ｎ段の演算結果保持手段の内容は、該内容を第（Ｎ＋２）段以降の演算装置が使用する場合には第（Ｎ＋２）段のレジスタファイル装置に書き込み、該内容を第（Ｎ＋２）段以降の演算装置が使用しない場合には第（Ｎ＋２）段のレジスタファイル装置に書き込むことなく第（Ｎ＋１）段の演算装置の入力とすることが好ましい。
【０２５６】
機械語命令を実行中に、Ｎを２以上の整数とする前記第Ｎ段のレジスタファイル装置と第Ｎ段の演算装置と第Ｎ段の演算結果保持手段の動作を開始させるアレイ動作開始命令を検出するまでの間、前記第１段のレジスタファイル装置と第１段の演算装置と第１段の演算結果保持手段のみを動作させ、前記アレイ動作開始命令を検出した場合、該命令に関連付けられる演算装置制御情報を前記第Ｎ段の演算装置にセットし、前記第Ｎ段のレジスタファイル装置と第Ｎ段の演算装置と第Ｎ段の演算結果保持手段の動作を開始させ、前記アレイ動作開始命令に指示されたアレイ動作終結条件に従って、前記第Ｎ段のレジスタファイル装置と第Ｎ段の演算装置と第Ｎ段の演算結果保持手段の動作を停止させることが好ましい。
【０２５７】
前記第１段の演算装置が、外部メモリの内容を一時的に保持するキャッシュメモリと、ロード命令に付随するアドレス情報を用いて該キャッシュメモリを読み出す手段と、読み出したデータを一時的に格納する第１段のロード結果保持手段を備え、該ロード結果保持手段から読み出したデータを後段の演算装置またはレジスタファイル装置の入力とすることが好ましい。
【０２５８】
Ｎを２以上の整数とする前記第Ｎ段の演算装置が、外部メモリの内容を一時的に保持するキャッシュメモリと、ロード命令に付随するアドレス情報を用いて該キャッシュメモリを読み出す手段と、読み出したデータを一時的に格納する第Ｎ段のロード結果保持手段を備え、該ロード結果保持手段から読み出したデータを後段の演算装置またはレジスタファイル装置の入力とし、さらに、第（Ｎ−１）段の演算装置が備えるキャッシュメモリの内容が次の時刻において第Ｎ段の演算装置が備えるキャッシュメモリに反映されることが好ましい。
【０２５９】
前記ロード命令に付随するアドレス情報は、前記演算装置が備える、ロード命令に付随するアドレス情報を用いて該キャッシュメモリを読み出す手段に保持するとともに、１度のロード動作を完了する度に、保持したアドレス情報をロードデータ幅だけ増加または減少させることにより、自律的に連続アドレスからロードすることが好ましい。
【０２６０】
前記第１段のキャッシュメモリが、複数のバンクから構成される外部メモリとの接続手段と、前記アレイ動作開始命令に関連付けられる書き込み先キャッシュメモリのベースアドレスと転送データ長から構成される転送情報に基づいてデータ転送を行なうデータ転送手段を備え、外部メモリ上の複数の互いに異なるアドレスから同時に複数のデータを前記第１段のキャッシュメモリへ連続転送することが好ましい。
【０２６１】
複数のバンクから構成される前記外部メモリが、外部Ｉ／Ｏ装置との接続手段と、前記アレイ動作開始命令に関連付けられる書き込み先外部メモリのベースアドレスと転送ワード数から構成される転送情報に基づいてデータ転送を行なうデータ転送手段を備え、外部Ｉ／Ｏ装置から複数のデータを前記外部メモリの最も古いバンクへ連続転送することが好ましい。
【０２６２】
前記ロード命令に付随するアドレス情報に対応する領域が前記第１段のキャッシュメモリに存在しない場合、外部メモリから該キャッシュメモリへのデータ転送を待ち合わせ、前記アレイ動作開始命令に関連付けられる転送ワード数に関連する回数だけ、後段の演算装置が動作したことをもって前記アレイ動作終結条件とすることが好ましい。
【０２６３】
演算結果をストア命令により前記外部メモリまたは前記外部Ｉ／Ｏ装置に格納するか、または、別の外部メモリに格納するか、または、別のＮ段アレイ構成の第１のキャッシュメモリへの入力とすることが好ましい。
【０２６４】
以上のように、本発明におけるデータ処理装置は、複数の機械語命令からなる命令コードを実行するためのデータ処理装置であって、前記命令コードを保持する命令メモリ部と、前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ／デコード部と、前記命令フェッチ／デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと一対一に対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて演算を実行する第１演算部と、第２演算部と、を含むｎ個の演算部と、前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部とを備え、前記第１レジスタファイル部は、自身の各第１レジスタがデータを保持する場合には、データを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに当該データを転送すると共に、前記第１保持部は、自身が保持する演算結果を前記第２演算部に転送可能となっており、前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行することを特徴とする。
【０２６５】
上記のデータ処理装置では、第１レジスタファイル部の各第１レジスタのデータが、第１レジスタファイル部の各第１レジスタに対応する第２レジスタファイル部の各第２レジスタに転送されている。
【０２６６】
このため、第２演算部は、第１レジスタファイル部の第１レジスタのデータが第１演算部の演算実行に用いられている場合でも、そのデータを第２レジスタファイル部の第２レジスタから読み出して演算の実行に用いることができる。
【０２６７】
また、第１演算部の演算結果が、第２演算部に転送されている。
【０２６８】
このため、第２演算部は第１演算部による演算の終了後直ちに、第１演算部の演算結果を演算の実行に用いることができる。
【０２６９】
したがって、上記のデータ処理装置では、第１及び第２演算部による２つの演算を並列的に実行させることができる。
【０２７０】
前記ｎ個のレジスタファイル部は、前記第２レジスタファイル部の各第２レジスタと一対一に対応する複数の第３レジスタを含む第３レジスタファイル部をさらに含み、前記ｎ個の演算部は、第３演算部をさらに含み、前記ｎ個の保持部は、前記第２演算部の演算結果を一時的に保持する第２保持部をさらに含んでおり、前記第２レジスタファイル部は、自身の各第２レジスタがデータを保持する場合には、データを保持する第２レジスタに対応する前記第３レジスタファイル部の第３レジスタに当該データを転送すると共に、前記第２保持部は、自身が保持する演算結果を前記第３演算部に転送可能となっており、前記第３演算部は、前記第３レジスタファイル部の各第３レジスタの読み出しデータ及び前記第２保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行することが好ましい。
【０２７１】
この場合、第２レジスタファイル部の各第２レジスタのデータが、第２レジスタファイル部の各第２レジスタに対応する第３レジスタファイル部の各第３レジスタに転送されている。
【０２７２】
このため、第３演算部は、第２レジスタファイル部の第２レジスタのデータが第２演算部の演算実行に用いられている場合でも、そのデータを第３レジスタファイル部の第３レジスタから読み出して演算の実行に用いることができる。
【０２７３】
また、第２演算部の演算結果が、第３演算部に転送されている。
【０２７４】
このため、第３演算部は第２演算部による演算の終了後直ちに、第２演算部の演算結果を演算の実行に用いることができる。
【０２７５】
したがって、上記のデータ処理装置では、第１、第２及び第３の演算部による３つの演算を並列的に実行させることができる。
【０２７６】
前記ｎ個の保持部に含まれるＮ番目の保持部は、自身が保持する演算結果が前記ｎ個の演算部に含まれる（Ｎ＋２）番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記ｎ個のレジスタファイル部に含まれる（Ｎ＋２）番目のレジスタファイル部に転送する一方、自身が保持する演算結果が前記（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部に転送することが好ましい。
【０２７７】
この場合、Ｎ番目の保持部が保持する演算結果が（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には（Ｎ＋１）番目の演算部に転送しているので、この場合、レジスタファイル部間における不要なデータ転送が低減され、その結果、消費電力をより低下させることができる。
【０２７８】
前記命令フェッチ／デコード部が前記ｎ個のレジスタファイル部に含まれる複数のレジスタファイル部、前記ｎ個の演算部に含まれる複数の演算部、前記ｎ個の保持部に含まれる複数の保持部の各々を同時に動作させるべく記述された命令コードに含まれる動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、且つ、前記命令フェッチ／デコード部の動作を停止させることが好ましい。
【０２７９】
この場合、複数のレジスタファイル部、複数の演算部及び複数の保持部を同時に動作させる「アレイ動作」を動作命令のデコード結果に基づいて行なうことができるので、これらの同時動作をより効率的に開始させることができる。
【０２８０】
前記動作命令は、同時に動作させるべき前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の各動作を制御するために、各々に設定すべき設定情報と、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の同時動作を停止すべき動作終結条件と、を含み、前記命令フェッチ／デコード部が前記動作命令をデコードするまでは、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させ、前記動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて、前記命令フェッチ／デコード部の動作を停止させ、且つ、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、前記動作命令に含まれる前記動作終結条件が満たされると、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を除く前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の動作を停止させ、且つ、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させるが好ましい。
【０２８１】
この場合、動作命令のデコード結果に基づき開始された、複数のレジスタファイル部、複数の演算部及び複数の保持部の同時動作を、動作終結条件が満たされるか否かにより停止させることができる。このため、命令フェッチ／デコード部の動作が停止していても、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させる「非アレイ動作」に戻すことができる。
【０２８２】
前記ｎ個の演算部の各々は、前記データ処理装置の外部に配置された外部メモリの内容を一時的に保持するキャッシュメモリと、前記命令コードに含まれる前記ロード命令に付随するアドレス情報を用いて前記キャッシュメモリを読み出すロード部と、前記ロード部により読み出されたデータを一時的に保持するストア部とを有し、前記ｎ個の演算部に含まれるＮ番目の演算部は、自身のストア部が保持するデータを前記ｎ個の演算部に含まれる（Ｎ＋１）番目以降の演算部及び前記ｎ個のレジスタファイル部に含まれる（Ｎ＋１）番目以降のレジスタファイル部に転送可能となっていることが好ましい。
【０２８３】
この場合、Ｎ番目の演算部のストア部が保持するデータが（Ｎ＋１）番目以降の演算部及び（Ｎ＋１）番目以降のレジスタファイル部に転送可能であるので、（Ｎ＋１）番目以降の演算部はＮ番目の演算部による読み出しデータを用いた演算を早期に開始することができ、その結果、各演算部による演算をより高速化させることができる。
【０２８４】
前記ｎ個の演算部に含まれるＮ番目の演算部は、自身のキャッシュメモリがデータを保持する場合には、前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部のキャッシュメモリに転送可能となっていることが好ましい。
【０２８５】
この場合、Ｎ番目の演算部のキャッシュメモリが（Ｎ＋１）番目の演算部のキャッシュメモリに転送可能であるので、（Ｎ＋１）番目の演算部はＮ番目の演算部のキャッシュメモリに保持されたデータを用いた演算を早期に開始することができ、その結果、各演算部による演算をより高速化させることができる。
【０２８６】
前記ｎ個の演算部の各々は、自身のロード部による前記キャッシュメモリの読み出しを行なう場合には、前記ロード命令に付随するアドレス情報を保持すると共に、前記ロード部による読み出しが完了する度に、前記保持したアドレス情報を読み出されたデータ幅だけ増加または減少させて、前記ロード部による次の読み出しのためのアドレス情報を生成することが好ましい。
【０２８７】
この場合、各演算部は、次の読み出しのためのアドレス情報を自身で生成することができるので、新たなアドレス情報を取得することなく、次の演算を実行することができるので、各演算部による演算をより高速化させることができる。
【０２８８】
前記第１演算部は、前記データ処理装置の外部に配置された外部メモリと直接接続された前記キャッシュメモリを有し、前記キャッシュメモリは、前記動作命令に関連付けられる書き込み先アドレスと転送データ長とからなる転送情報に基づいてデータ転送を行なうデータ転送手段、を有し、前記データ転送手段は、前記外部メモリ上における互いに異なる複数のアドレスから同時に複数のデータを連続転送することが好ましい。
【０２８９】
この場合、外部メモリ上におけるデータをより効率よくキャッシュメモリに転送することができるので、各演算部による演算をより高速化させることができる。
【０２９０】
前記外部メモリは、前記動作命令に関連付けられる書き込み先アドレスと転送ワード数とからなる転送情報に基づいてデータ転送を行なうデータ転送手段、を有し、前記データ転送手段は、外部Ｉ／Ｏ装置から複数のデータを前記外部メモリの最も古いバンクへ連続転送することが好ましい。
【０２９１】
この場合、外部Ｉ／Ｏ装置からデータをより効率よく外部メモリに転送することができるので、キャッシュメモリのデータ更新が効率化され、その結果、各演算部による演算をより高速化させることができる。
【０２９２】
前記第１演算部は、自身のキャッシュメモリに前記ロード命令に付随するアドレス情報に対応する領域が存在しない場合には、外部メモリからのデータ転送を待機すると共に、２番目以降の演算部が前記動作命令に関連付けられる転送ワード数に応じた回数だけ動作したことを前記動作終結条件とすることが好ましい。
【０２９３】
この場合、アレイ構造の先頭段である第１演算部においてのみ、データの待ち合わせを行なうので、データ処理装置全体の構成を簡略化することができる。さらに、複数の動作終結条件が存在する場合に、各段に分散して演算を行なうことによる高速化を実現することができる。
【産業上の利用可能性】
【０２９４】
本発明は、複数の機械語命令を高速に同時実行するデータ処理装置に好適に利用することができる。
【符号の説明】
【０２９５】
１０    命令メモリ部
２０    命令フェッチ部（命令フェッチ／デコード部）
３０    命令デコード部（命令フェッチ／デコード部）
１０１、１０２、１０３、１０４、１０５、１０６、１０７、１０８    データ処理装置
１１０、２１０、３１０、４１０、５１０、６１０、７１０、８１０、９１０、１０１０、１１１０    レジスタファイル部
１２０、２２０、３２０、４２０、５２０、６２０、７２０、８２０、９２０、１０２０    演算装置（演算部、保持部）
１３０、２３０、３３０、４３０、１０３０    ロード／ストア部（ロード部、ストア部）
１３０、２３０、３３０、４３０    キャッシュメモリ
１５０    外部メモリ
【図１】
2010044242.tif 000003
【図２】
2010044242.tif 000004
【図３】
2010044242.tif 000005
【図４】
2010044242.tif 000006
【図５】
2010044242.tif 000007
【図６】
2010044242.tif 000008
【図７】
2010044242.tif 000009
【図８】
2010044242.tif 000010
【図９】
2010044242.tif 000011
【図１０】
2010044242.tif 000012
【図１１】
2010044242.tif 000013
【図１２】
2010044242.tif 000014
【図１３】
2010044242.tif 000015
【図１４】
2010044242.tif 000016
【図１５】
2010044242.tif 000017
【図１６】
2010044242.tif 000018
【図１７】
2010044242.tif 000019
【図１８】
2010044242.tif 000020
【図１９】
2010044242.tif 000021
【図２０】
2010044242.tif 000022
【手続補正書】
【提出日】平成22年6月10日(2010.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の行の機械語命令からなる命令コードを実行するためのデータ処理装置であって、
前記命令コードを保持する命令メモリ部と、
前記命令メモリ部から前記命令コードに含まれる前記複数の行の機械語命令を取り出して、前記複数の行の機械語命令をデコードする命令フェッチ／デコード部と、
前記命令フェッチ／デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第１レジスタを含む第１レジスタファイル部と、前記第１レジスタファイル部の各第１レジスタと一対一に対応する複数の第２レジスタを含む第２レジスタファイル部と、を含むｎ（ｎは１以上の整数）個のレジスタファイル部と、
前記第１レジスタファイル部の各第１レジスタの読み出しデータを用いて前記複数の行の機械語命令のいずれかの機械語命令を用いて演算を実行する第１演算部と、前記複数の行の機械語命令のいずれかのうち、前記第１演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する第２演算部と、を含むｎ個の演算部と、
前記第１演算部が演算を実行したときにおける前記第１演算部の演算結果の出力先であり、且つ、前記第１演算部の演算結果を一時的に保持する第１保持部を含むｎ個の保持部と
を備え、
前記第１レジスタファイル部は、前記第１演算部による演算処理の対象外であったデータを保持する第１レジスタに対応する前記第２レジスタファイル部の第２レジスタに、当該データを転送すると共に、
前記第１保持部は、自身が前記第１演算部の演算結果を保持する場合には、前記第１演算部の演算結果の出力先を前記第２演算部として、前記第１演算部の演算結果を前記第２演算部に転送し、
前記第２演算部は、前記第２レジスタファイル部の各第２レジスタの読み出しデータ及び前記第１保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第１演算部により実行される演算と並列処理することを特徴とするデータ処理装置。
【請求項２】
前記ｎ個のレジスタファイル部は、前記第２レジスタファイル部の各第２レジスタと一対一に対応する複数の第３レジスタを含む第３レジスタファイル部をさらに含み、
前記ｎ個の演算部は、前記複数の行の機械語命令のいずれかのうち、前記第１演算部及び前記第２演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する第３演算部をさらに含み、
前記ｎ個の保持部は、前記第２演算部が演算を実行したときにおける前記第２演算部の演算結果の出力先であり、且つ、前記第２演算部の演算結果を一時的に保持する第２保持部をさらに含んでおり、
前記第２レジスタファイル部は、前記第２演算部による演算処理の対象外であったデータを保持する第２レジスタに対応する前記第３レジスタファイル部の第３レジスタに、当該データを転送すると共に、
前記第２保持部は、自身が前記第２演算部の演算結果を保持する場合には、前記第２演算部の演算結果の出力先を前記第３演算部として、前記第２演算部の演算結果を前記第３演算部に転送し、
前記第３演算部は、前記第３レジスタファイル部の各第３レジスタの読み出しデータ及び前記第２保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第１演算部により実行される演算及び前記第２演算部により実行される演算と並列処理することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記ｎ個の保持部に含まれるＮ（Ｎは１以上の整数であって、ｎ以下）番目の保持部は、
自身が保持する演算結果が前記ｎ個の演算部に含まれる（Ｎ＋２）番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記ｎ個のレジスタファイル部に含まれる（Ｎ＋２）番目のレジスタファイル部に転送する一方、
自身が保持する演算結果が前記（Ｎ＋２）番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部に転送することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記命令フェッチ／デコード部が前記ｎ個のレジスタファイル部に含まれる複数のレジスタファイル部、前記ｎ個の演算部に含まれる複数の演算部、前記ｎ個の保持部に含まれる複数の保持部の各々を同時に動作させるべく記述された命令コードに含まれる動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、且つ、前記命令フェッチ／デコード部の動作を停止させることを特徴とする請求項１〜３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記動作命令は、同時に動作させるべき前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の各動作を制御するために、各々に設定すべき設定情報と、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の同時動作を停止すべき動作終結条件と、を含み、
前記命令フェッチ／デコード部が前記動作命令をデコードするまでは、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させ、
前記動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて、前記命令フェッチ／デコード部の動作を停止させ、且つ、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、
前記動作命令に含まれる前記動作終結条件が満たされると、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を除く前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の動作を停止させ、且つ、前記命令フェッチ／デコード部、前記第１レジスタファイル部、前記第１演算部及び前記第１保持部を同時に動作させることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記ｎ個の演算部の各々は、
前記データ処理装置の外部に配置された外部メモリの内容を一時的に保持するキャッシュメモリと、
前記命令コードに含まれるロード命令に付随するアドレス情報を用いて前記キャッシュメモリを読み出すロード部と、
前記ロード部により読み出されたデータを一時的に保持するストア部と
を有し、
前記ｎ個の演算部に含まれるＮ番目の演算部は、自身のストア部が保持するデータを前記ｎ個の演算部に含まれる（Ｎ＋１）番目以降の演算部及び前記ｎ個のレジスタファイル部に含まれる（Ｎ＋１）番目以降のレジスタファイル部に転送可能となっていることを特徴とする請求項１〜５のいずれか１項に記載のデータ処理装置。
【請求項７】
前記ｎ個の演算部に含まれるＮ番目の演算部は、自身のキャッシュメモリがデータを保持する場合には、前記ｎ個の演算部に含まれる（Ｎ＋１）番目の演算部のキャッシュメモリに転送可能となっていることを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記ｎ個の演算部の各々は、自身のロード部による前記キャッシュメモリの読み出しを行なう場合には、前記ロード命令に付随するアドレス情報を保持すると共に、前記ロード部による読み出しが完了する度に、前記保持したアドレス情報を読み出されたデータ幅だけ増加または減少させて、前記ロード部による次の読み出しのためのアドレス情報を生成することを特徴とする請求項６または７に記載のデータ処理装置。
【請求項９】
前記第１演算部は、前記データ処理装置の外部に配置された外部メモリと直接接続されたキャッシュメモリを有し、
前記キャッシュメモリは、前記動作命令に関連付けられる書き込み先アドレスと転送データ長とからなる転送情報に基づいてデータ転送を行なうデータ転送手段を有し、
前記データ転送手段は、前記外部メモリ上における互いに異なる複数のアドレスから同時に複数のデータを連続転送することを特徴とする請求項４または５に記載のデータ処理装置。
【請求項１０】
前記外部メモリは、前記動作命令に関連付けられる書き込み先アドレスと転送ワード数とからなる転送情報に基づいてデータ転送を行なうデータ転送手段を有し、
前記データ転送手段は、外部Ｉ／Ｏ装置から複数のデータを、前記外部メモリを構成する複数のバンクのうち最も古いデータを格納するバンクへ連続転送することを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記第１演算部は、自身のキャッシュメモリに前記ロード命令に付随するアドレス情報に対応するデータが存在しない場合には、外部メモリからのデータ転送を待機すると共に、２番目以降の演算部が前記動作命令に関連付けられる転送ワード数に応じた回数だけ動作したことを前記動作終結条件とすることを特徴とする請求項５に記載のデータ処理装置。
【国際調査報告】
2010044242.tif 000023
2010044242.tif 000024
2010044242.tif 000025
2010044242.tif 000026