JP6164616B2 - データ供給装置及びデータ処理装置 - Google Patents

データ供給装置及びデータ処理装置 Download PDF

Info

Publication number
JP6164616B2
JP6164616B2 JP2014505037A JP2014505037A JP6164616B2 JP 6164616 B2 JP6164616 B2 JP 6164616B2 JP 2014505037 A JP2014505037 A JP 2014505037A JP 2014505037 A JP2014505037 A JP 2014505037A JP 6164616 B2 JP6164616 B2 JP 6164616B2
Authority
JP
Japan
Prior art keywords
unit
register
data
calculation
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014505037A
Other languages
English (en)
Other versions
JPWO2013137459A1 (ja
Inventor
康彦 中島
康彦 中島
駿 姚
駿 姚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nara Institute of Science and Technology NUC
Original Assignee
Nara Institute of Science and Technology NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nara Institute of Science and Technology NUC filed Critical Nara Institute of Science and Technology NUC
Priority to JP2014505037A priority Critical patent/JP6164616B2/ja
Publication of JPWO2013137459A1 publication Critical patent/JPWO2013137459A1/ja
Application granted granted Critical
Publication of JP6164616B2 publication Critical patent/JP6164616B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置に係り、特に、当該データ処理装置へのデータ供給に好適なデータ供給手法に関するものである。
近年のマイクロプロセッサにおいては、マシンサイクルを短縮するとともに、1マシンサイクル当たりに実行される命令の数を増やすことにより、実効性能の向上を図る方式が多く提案されている。
このような多数の命令を並列に処理する方式として、例えば、演算器アレイ方式が知られている。この演算器アレイ方式は、目的とするデータ処理に合わせて演算器ネットワークを固定し、その固定された演算器ネットワークに入力データを流し込む方式である(例えば、特許文献1〜3を参照)。
この演算器アレイ方式では、複数の演算器からなる演算器ネットワークを利用することにより、多くの機能を並列実行することが可能である。
しかし、演算器アレイ方式は、既存の機械語命令を実行することができない。このため、この演算器アレイ方式に特有の機械語命令を生成するための専用の機械語命令生成手段が必要であり、汎用性に欠けている。
そこで、一般的な機械語命令を実行し、且つ、機械語命令の並列実行が可能な方式としては、例えば、スーパスカラ方式、ベクトル方式、VLIW(Very Long Instruction Word)方式が知られている。これらの方式では、1つの命令の中で複数の演算等が指定され、それらが同時に実行されることになる。
先ず、スーパスカラ方式は、機械語命令列の中から同時実行可能な機械語命令をハードウェアが動的に検出して並列実行する方式である。
このスーパスカラ方式は、既存のソフトウェア資産をそのまま活用できる強みがある一方、機構の複雑さ及び消費電力の多さから、最近では敬遠される傾向にある。
次に、ベクトル方式は、多数のレジスタを一次元方向に並べたベクトルレジスタを用いて、ロード、演算、ストア等の基本操作を繰返し適用する方式であり、電力効率の良い高速化が可能である。さらに、キャッシュメモリが不要となることから、主記憶とベクトルレジスタ間のデータ転送速度が保証され、その結果、安定した高速化が実現される。
しかし、ベクトル方式では、異なるベクトルレジスタの同一要素番号間の演算のみが可能であり、同一ベクトルレジスタ内の隣接要素を参照しながら演算を進めるプログラムには適さない。
最後に、VLIW方式は、1つの命令の中で複数の演算等が指定され、それらが同時に実行される方式である。このVLIW方式では、例えば、4命令を同時にフェッチし、4命令を同時にデコードし、汎用レジスタから必要なデータを読み出し、複数の演算装置により同時に演算を行い、演算装置に付随する演算結果格納手段に演算結果を格納する。
そして、次のサイクルではその演算結果格納手段から内容を読み出して、汎用レジスタに書き込みを行なうとともに、次の演算においてその読み出された演算結果が必要となる場合には、その演算結果を演算装置の入力へバイパスする。
一方、ロード命令に対しては、LD/STユニットにおいてキャッシュメモリを参照し、LD/STユニットに付随するロード結果格納手段にロード結果を格納した後、次のサイクルにおいて、演算装置が動作を行なう。
このようにしてVLIW方式では、並置された演算装置及びLD/STユニットの各々の数だけ演算を同時実行することができる。さらに、VLIW方式では、並列実行可能な命令列をコンパイラ等によりあらかじめスケジュールしておくため、スーパスカラ方式のように同時実行可能な機械語命令をハードウェアが動的に検出する機構が不要となる。したがって、VLIW方式では、電力効率の良い命令実行が可能である。しかし、多数のロードストア命令を同時に実行するためには、多数のポートを有するメモリシステムを装備する必要がある。このようなメモリシステムは、面積効率が極めて悪くなるため、VLIW方式による同時実行可能命令数の拡大にも限界がある。
日本国公開特許公報「特開平8−83264号公報(1996年3月26日公開)」 日本国公開特許公報「特開2001−312481号公報(2001年11月9日公開)」 日本国公開特許公報「特開2003−76668号公報(2003年3月14日公開)」
ところで、上述の演算器アレイ方式においては、キャッシュ方式の採用が性能向上に大きく寄与する。そのキャッシュ方式としては、演算器ネットワークの随所に1次キャッシュを内蔵させると同時に、外部の主記憶との間に2次キャッシュを設ける方式が挙げられる。この方式では、2次キャッシュのヒット率を高め、主記憶へのアクセスを低減し、各演算器の性能向上を図っている。
このようなキャッシュ方式を採用する場合では、同時に複数の演算器にデータを供給するために、演算器ネットワークの随所に設けられた1次キャッシュの内容を近傍の演算器に供給するための大規模なデータ伝搬機構が必要となる。
具体的には、1次キャッシュから読み出したデータを演算器に付随させた小規模バッファの全てを通過させつつ、各小規模バッファが一定量を保存する機構である。この機構では、1次キャッシュから毎サイクルデータを読み出す多数の配線が多くの小規模バッファに接続されることとなる。すなわち、1次キャッシュの内容を演算器に効率よく伝搬させることに関しては、何ら考慮されていないといった課題があった。
上記課題に鑑み、本発明の目的は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置において、当該データ処理装置へデータを効率よく供給することにより、各演算器の消費電力を削減可能なデータ供給装置を提供することにある。
従来型演算器アレイ方式においては、複数wayが集約された1次キャッシュが演算器ネットワークの随所に配置され、1次キャッシュが直接接続されない演算器に対しては、小規模バッファを通じてデータを供給していた。この方式では、機械語命令列中のロード命令の配置に関する自由度が大きい利点があるものの、小規模バッファ間を接続する配線が大規模になる欠点があった。
本発明では、1次キャッシュの各wayを演算器の近傍に一様に分散配置させるとともに、小規模バッファ間の接続を排除している。このため、機械語命令列中のロード命令の配置に関して制約が生じるものの、1次キャッシュに格納されるデータの内容に応じて命令写像位置を変更する方式とすることにより、実質的に、従来技術と同等の命令実行能力を確保している。すなわち、能力を落すことなく、配線数を減らすことにより、課題を解決している。
上記目的を達成するために、本発明に係るデータ供給装置は、複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、複数のブロックに分割されたメモリ部と、複数のレジスタが一列に接続されたシフトレジスタ部とを備え、前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力する。
すなわち、上記構成によれば、1つのメモリ部を複数のブロックに分割し、シフトレジスタ部の先頭または途中のレジスタに各ブロックから読み出されたデータを書き込み可能となっている。
そして、メモリ部及びシフトレジスタ部の各々は、データ供給装置に入力された複数のアドレス情報を基に参照され、各アドレス情報に対応する各アドレス位置の内容を出力可能となっている。
このようなデータ供給装置を用いて、複数の演算器が多段構成された演算器束にデータを供給することにより、異なる演算器束の各々にデータを供給するデータ供給装置間におけるデータ伝搬が不要となる。
それゆえ、従来のような、演算器ネットワークの随所に設けられた1次キャッシュの内容を近傍の演算器に供給するための大規模なデータ伝搬機構が不要となるので、データ処理装置へデータを効率よく供給し、これにより、各演算器の消費電力を削減することができる。
本発明に係るデータ処理装置は、複数の前記演算器束が多段構成されたデータ処理装置であって、或る一連の高速実行後、次の高速実行を開始する際に、或る演算器束にデータを供給する上記データ供給装置の前記メモリ部の内容が別の演算命令にて使用することができる場合、前記演算器束を構成する演算器に対する演算命令の写像を変更する。
上記構成によれば、データ供給装置のメモリ部に格納されるデータの内容に応じて命令写像位置を変更することにより、従来技術と同等の命令実行能力を確保することができる。
本発明のデータ供給装置は、以上のように、複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、複数のブロックに分割されたメモリ部と、複数のレジスタが一列に接続されたシフトレジスタ部とを備え、前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力する。
それゆえ、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置において、当該データ処理装置へデータを効率よく供給することにより、各演算器の消費電力を削減することができるという効果を奏する。
本発明の一実施形態におけるLAPPの構成を示す図である。 本発明の他の実施形態におけるLAPPの構成を示す図である。 上記LAPPにおける第1〜3データ処理段からなる3データ処理段の構成を、Nデータ処理段の構成に拡張したLAPPの構成を示す図である。 上記LAPPにおける、キャッシュメモリからのデータ供給を説明するための模式図である。 4段毎に1つの中容量メモリを配置する構成を説明するための模式図である。 中容量メモリを含むメモリシステムの詳細な構成図である。 上記メモリシステムの動作を説明するための説明図である。 上記メモリシステムの動作を説明するための説明図である。 上記メモリシステムの動作を説明するための説明図である。 上記メモリシステムの動作を説明するための説明図である。 上記メモリシステムの動作を説明するための説明図である。 上記メモリシステムの動作を説明するための説明図である。 画像処理の一例を従来技術により実現した場合の命令列を示す図である。 画像処理の一例を本発明により実現した場合の命令列を示す図である。 浮動小数点演算処理の一例を従来技術により実現した場合の命令列を示す図である。 浮動小数点演算処理の一例を本発明により実現した場合の命令列を示す図である。
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。
(本発明の前提技術)
本発明は、多数の演算器を並置する計算機構成方式におけるデータ供給手法に関するものである。本発明は、特に、表1に示すメモリ参照パターンに対応するメモリ参照機構に関連が深いものである。
Figure 0006164616
一般に、上述のデータ供給手法におけるメモリ参照機構において、競合する2つの構成はベクトル機構とメニコアである。完全に規則的なメモリ参照と演算とからなるプログラム、すなわち、要求メモリ性能:演算性能=1:1であるプログラムであれば、ベクトル機構が最適である。ベクトル機構であれば、ベクトルロード命令とベクトル演算命令のオーバラップ実行により、メモリ性能と演算性能とを使い切ることができる。
しかし、実際には、メモリ参照にはランダムアクセスの要素があるのが通常である。このため、大域的には規則的なメモリ参照であっても、局所的にはランダムな参照である場合、ベクトル機構は対応することができない(例えば、配列添字I−1、I、I+1を同時に参照する等)。
一方、メニコアでは、上述のランダムアクセスには対応できるものの、メモリ性能:演算性能=1:1を維持するためには、極めて高度なスーパスカラ機能が必要となる。特に、アドレス計算とメモリ参照と演算とを完全にオーバラップさせるには、アドレス計算をどのように隠蔽できるかが重要となる。
この要求に応えるものとして、例えば、以下の演算器アレイ型アクセラレータ(Linear Array Pipeline Processor)(以下、「LAPP」と呼ぶ)を用いることができる。このLAPP(データ処理装置)は、複数の演算器を2次元アレイ状に配置する粗粒度リコンフィギャラブルアレイ(Coarse-Grained Reconfigurable Architecture)(以下、「CGRA」と呼ぶ)を採用し、且つ、既存の機械語命令を用いるものである。
図1は、上述のLAPPの構成を示す図である。図1に示すように、このLAPP101は、コンフィギュレーションメモリ10と、第1レジスタファイル部110と、第2レジスタファイル部210と、第1演算装置(第1演算部、第1保持部)120と、第2演算装置(第2演算部、第2保持部)220と、を備えている。
コンフィギュレーションメモリ10は、公知のCGRAを構成するものであり、コンフィギュレーションデータを格納する。コンフィギュレーションデータは、第1演算装置120および第2演算装置220における処理内容を規定するデータである。コンフィギュレーションメモリ10は、このようなコンフィギュレーションデータを第1レジスタファイル部110および第2レジスタファイル部210に転送する。
第1レジスタファイル部110は、第1演算装置120における演算処理に必要なデータを保持するものである。第1レジスタファイル部110は、複数のレジスタ(第1レジスタ)r0〜r11からなるレジスタ群111と、レジスタ群111の各レジスタr0〜r11の読み出しデータを第1レジスタファイル部110の外部に転送するための転送器112と、を有している。
レジスタ群111の各レジスタr0〜r11に対する読み出しや書き込みは、コンフィギュレーションメモリ10に格納されたコンフィギュレーションデータに基づいて実行される。レジスタ群111の各レジスタr0〜r11は、自身のレジスタ番号0〜11をアクセスのキーとして読み出しや書き込みがされる。
転送器112は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第1レジスタファイル部110の外部に転送する。
第2レジスタファイル部210は、第2演算装置220における演算処理に必要なデータを保持する。第2レジスタファイル部210は、複数のレジスタ(第2レジスタ)r0〜r11からなるレジスタ群211と、レジスタ群211の各レジスタr0〜r11の読み出しデータを第2レジスタファイル部210の外部に転送するための転送器212と、を有している。
レジスタ群211の各レジスタr0〜r11に対する読み出しや書き込みは、コンフィギュレーションメモリ10に格納されたコンフィギュレーションデータに基づいて実行される。レジスタ群211の各レジスタr0〜r11は、自身のレジスタ番号0〜11をアクセスのキーとして読み出しや書き込みがされる。
レジスタ群211の各レジスタr0〜r11は、第1レジスタファイル部110のレジスタ群111の各レジスタr0〜r11と一対一に対応しており、レジスタ群111及びレジスタ群211の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。そして、第1レジスタファイル部110の転送器112は、レジスタ群111の各レジスタr0〜r11の読み出しデータを、レジスタ群111の各レジスタr0〜r11のレジスタ番号と同一のレジスタ番号を持つ、第2レジスタファイル部210のレジスタ群211の各レジスタr0〜r11に、転送可能である。
例えば、第1レジスタファイル部110の転送器112は、レジスタ群111のレジスタr3の読み出しデータを、第2レジスタファイル部210のレジスタ群211のレジスタr3に転送可能である。また、第1レジスタファイル部110の転送器112は、レジスタ群111のレジスタr9の読み出しデータを、第2レジスタファイル部210のレジスタ群211のレジスタr9に転送可能である。
転送器212は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第2レジスタファイル部210の外部に転送する。
第1演算装置120は、LAPP101における実体的な処理を行なうものである。第1演算装置120は、演算器1−1〜1−4からなる演算器群121と、保持器1−1〜1−4からなる保持器群122と、転送器123と、を有している。
第1演算装置120は、第1レジスタファイル部110と共に、第1データ処理段を構成しており、第1レジスタファイル部110の転送器112は、レジスタ群111の各レジスタr0〜r11の読み出しデータを第1演算装置120に転送可能である。そして、第1演算装置120の演算器群121の各演算器1−1〜1−4は、第1レジスタファイル部110の各レジスタr0〜r11のうちから2つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器1−1〜1−4の演算処理は同時に実行される。
保持器群122の保持器1−1〜1−4は、各々に対応する演算器1−1〜1−4の演算結果を格納する。各保持器1−1〜1−4は、各演算器1−1〜1−4と一対一に対応している。
転送器123は、各保持器1−1〜1−4に格納されている、各演算器1−1〜1−4の演算結果を第1演算装置120の外部に転送する。
第2演算装置220は、LAPP101における実体的な処理を行なうものである。第2演算装置220は、演算器2−1〜2−4からなる演算器群221と、保持器2−1〜2−4からなる保持器群222と、転送器223と、を有している。
第2演算装置220は、第2レジスタファイル部210と共に、第2データ処理段を構成しており、第2レジスタファイル部210の転送器212は、レジスタ群211の各レジスタr0〜r11の読み出しデータを第2演算装置220に転送可能である。そして、第2演算装置220の演算器群221の各演算器2−1〜2−4は、第2レジスタファイル部210の各レジスタr0〜r11のうちから2つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器2−1〜2−4の演算処理は同時に実行される。
さらに、第2演算装置220の演算器群221の各演算器2−1〜2−4は、第1演算装置120の保持器群122の各保持器1−1〜1−4に格納されている演算結果を取得することができる。第1演算装置120の転送器123は、各保持器1−1〜1−4に格納されている、各演算器1−1〜1−4の演算結果を第2演算装置220に転送可能となっている。
そして、第2演算装置220の各演算器2−1〜2−4は、第2レジスタファイル部210の各レジスタr0〜r11の読み出しデータに代えて、それら演算結果を用いて演算処理を実行することができる。
保持器群222の保持器2−1〜2−4は、各々に対応する演算器2−1〜2−4の演算結果を格納する。各保持器2−1〜2−4は、各演算器2−1〜2−4と一対一に対応している。
転送器223は、各保持器2−1〜2−4に格納されている、各演算器2−1〜2−4の演算結果を第2演算装置220の外部に転送する。
次に、LAPP101の動作について説明する。
LAPP101においては、レジスタ群111のレジスタr0〜r11の読み出しデータを用いて、第1演算装置120による演算処理が行なわれる。
第1演算装置120による演算処理と同時に、第1演算装置120による演算処理の対象外であったレジスタ群111のレジスタr0〜r11の読み出しデータが第2レジスタファイル部210に転送される。
そして、次のサイクルにおいて、第2レジスタファイル部210のレジスタ群211のレジスタr0〜r11に転送されたデータを用いて、第2演算装置220による演算処理が行なわれる。
第2演算装置220による演算処理と同時に、レジスタ群111のレジスタr0〜r11の読み出しデータを用いて、第1演算装置120による演算処理が行なわれる。
さらに、第2演算装置220が第1演算装置120の演算結果を必要とする場合には、第1演算装置120の転送器123が各保持器1−1〜1−4に格納されている、各演算器1−1〜1−4の演算結果を第2演算装置220に転送する。
図2に示すLAPP102は、図1のLAPP101に、第3レジスタファイル部310と、第3演算装置(第3演算部、第3保持部)320と、をさらに備えたものである。これにより、第1演算装置120による演算処理及び第2演算装置220による演算処理に加えて、第3演算装置320による演算処理も同時に実行するものである。
第3レジスタファイル部310は、第3演算装置320における演算処理に必要なデータを保持するものである。第3レジスタファイル部310は、複数のレジスタ(第3レジスタ)r0〜r11からなるレジスタ群311と、レジスタ群311の各レジスタr0〜r11の読み出しデータを第3レジスタファイル部310の外部に転送するための転送器312と、を有している。
レジスタ群311の各レジスタr0〜r11に対する読み出しや書き込みは、コンフィギュレーションメモリ10に格納されたコンフィギュレーションデータに基づいて実行される。レジスタ群311の各レジスタr0〜r11は、自身のレジスタ番号0〜12をアクセスのキーとして読み出しや書き込みがされる。
レジスタ群311の各レジスタr0〜r11は、第2レジスタファイル部210のレジスタ群211の各レジスタr0〜r11と一対一に対応しており、レジスタ群211及びレジスタ群311の各レジスタ間においてレジスタ番号が同一のもの同士が対応付けられている。そして、第2レジスタファイル部210の転送器212は、レジスタ群211の各レジスタr0〜r11の読み出しデータを、レジスタ群211の各レジスタr0〜r11のレジスタ番号と同一のレジスタ番号を持つ、第3レジスタファイル部310のレジスタ群311の各レジスタr0〜r11に、転送可能である。
転送器312は、読み出しレジスタ番号が指定されると、その指定された番号が付されたレジスタに保持されているデータを第3レジスタファイル部310の外部に転送する。
また、第3レジスタファイル部310は、第1演算装置120の転送器123により、第1演算装置120の各保持器1−1〜1−4に格納されている、各演算器1−1〜1−4の演算結果を取得することができる。
第3演算装置320は、LAPP102における実体的な処理を行なうものである。第3演算装置320は、演算器3−1〜3−4からなる演算器群321と、保持器3−1〜3−4からなる保持器群322と、転送器323と、を有している。
第3演算装置320は、第3レジスタファイル部310と共に、第3データ処理段を構成しており、第3レジスタファイル部310の転送器312は、レジスタ群311の各レジスタr0〜r11の読み出しデータを第3演算装置320に転送可能である。そして、第3演算装置320の演算器群321の各演算器3−1〜3−4は、第3レジスタファイル部310の各レジスタr0〜r11のうちから2つの読み出しデータを取得し、それらデータを用いて四則演算や論理演算等各種の演算処理を実行する。各演算器3−1〜3−4の演算処理は同時に実行される。
保持器群322の保持器3−1〜3−4は、各々に対応する演算器3−1〜3−4の演算結果を格納する。各保持器3−1〜3−4は、各演算器3−1〜3−4と一対一に対応している。
転送器323は、各保持器3−1〜3−4に格納されている、各演算器3−1〜3−4の演算結果を第3演算装置320の外部に転送する。
また、第3演算装置320は、第2演算装置220の転送器223により、第2演算装置220の各保持器2−1〜2−4に格納されている、各演算器2−1〜2−4の演算結果を取得することができる。
次に、LAPP102の動作について説明する。
LAPP102においては、レジスタ群211のレジスタr0〜r11の読み出しデータを用いて、第2演算装置220による演算処理が行なわれる。
第2演算装置220による演算処理と同時に、第2演算装置220による演算処理の対象外であったレジスタ群211のレジスタr0〜r11の読み出しデータが第3レジスタファイル部310に転送される。
そして、次のサイクルにおいて、第3レジスタファイル部310のレジスタ群311のレジスタr0〜r11に転送されたデータを用いて、第3演算装置320による演算処理が行なわれる。
第3演算装置320による演算処理と同時に、レジスタ群211のレジスタr0〜r11の読み出しデータを用いて、第2演算装置220による演算処理が行なわれる。
さらに、第3演算装置320が第2演算装置220の演算結果を必要とする場合には、第2演算装置220の転送器223が各保持器2−1〜2−4に格納されている、各演算器2−1〜2−4の演算結果を第3演算装置320に転送する。
また、第1演算装置120の演算結果を第2演算装置220が必要とせず、第3演算装置320が第1演算装置120の演算結果を必要とする場合がある。この場合には、第1演算装置120の結果を第3レジスタファイル部に格納することにより、第1演算装置120の演算結果を間接的に第3演算装置320に投入することができる。
なお、LAPP102における第1〜3データ処理段からなる3データ処理段の構成を、Nデータ処理段の構成に拡張してもよい。
例えば、Nを1以上の整数とする。この場合、第Nデータ処理段を構成する演算装置の演算結果は、その演算結果を第(N+2)データ処理段以降の演算装置が使用する場合には、第(N+2)データ処理段のレジスタファイル部に書き込まれる。
一方、その演算結果を第(N+2)データ処理段以降の演算装置が使用しない場合には、その演算結果を第(N+2)データ処理段のレジスタファイル部に書き込むことなく第(N+1)データ処理段の演算装置に入力する。
次に、上述のLAPP101および102におけるデータ供給手法について説明する。図3に、上述のLAPP102における第1〜3データ処理段からなる3データ処理段の構成を、Nデータ処理段の構成に拡張したLAPP103の構成を示す。なお、図3において、キャッシュメモリ14の機構および小規模キャッシュメモリ15の構成と、それらの間の伝搬機構とは、公知の技術を用いることができる。
図3に示すように、このLAPP103は、複数の演算器11に対し、メモリから大量データを供給する手法を用いている。演算データが、複数のレジスタファイル部12を介して、複数の演算器11からなる演算器ネットワーク上を1方向に伝搬するのに合わせて、メモリ上のデータも同一方向に伝搬させる。これにより、複数のロード命令が同時に複数のメモリアドレスを参照することができる。
具体的には、初段や後続段に配置した中容量メモリ13において、キャッシュメモリ14の3つのwayの各々を1つの配列に対応させる。そして、各wayから毎サイクル1ワードを読み出し、次段へ伝搬させる。各段では、伝搬中の3ワードの値を各段の小規模キャッシュメモリ15に取り込むことにより、あらかじめ決められたメモリアドレス範囲のデータをランダムに参照することができる。演算データとメモリデータとが同一速度で伝搬するため、同一イタレーションに属するロード命令は、どの段において小規模キャッシュメモリ15を参照しても、同一のメモリアドレス範囲を参照できる。任意の段において、それ以前に配置した中容量メモリ13の内容を参照できることから、各ループイタレーションにおいて、着目する配列要素の近傍の要素を必要とする場合であっても、ロード/ストア部16により、ロードストア命令を任意の段に配置できる。
LAPP103では、以上の特性を利用して、表1に示したメモリ参照パターンに対応可能である。なお、広範囲のランダムオフセットについては、中容量メモリ13が直接接続されている段においてのみ対応可能である。また、ロード内容に変更を加えて同一アドレスにストアする更新型については、ストアデータを深さ方向に1周させて元の配列に格納する。
(本発明の前提技術における問題点)
上述のLAPP103では、複数のレジスタファイル部12を備え、通常の機械語命令列を複数の演算器11に写像し、高速実行できるという利点がある。しかし、上述のLAPP103には、その実用化に向けて以下の課題がある。以下、図4を用いて、それら課題について説明する。図4は、LAPP103における、キャッシュメモリ14からのデータ供給を説明するための模式図である。なお、図4において、キャッシュメモリ14の機構および小規模キャッシュメモリ15の構成と、それらの間の伝搬機構とは、公知の技術を用いることができる。
(1)中容量メモリ13から読み出したデータを後続段に伝搬させるために、way数分のデータパス17が必要となる。このような段間の配線数が増大すると、複数個のLSIを接続して大規模な演算機構を実現することが難しくなる。
(2)プログラムによっては、多くのwayを必要とする。way数を増加するには、LAPP103の深さ方向に段数を増加させて中容量メモリ13の数を増加させるか、幅方向にway数を増加させて各中容量メモリ13の幅を増やす必要がある。いずれの場合でも、上述の(1)と同様、段間のデータパス17の多さが障害となる。
(3)各配列要素を累算する場合、同一配列に対してロードとストアを行なう必要がある。上述のLAPP103では、ロードデータとストアデータが1方向に伝搬するために、ストアデータを深さ方向に1周させて元の配列に格納する必要がある。ストアする配列数が多い場合、ロードデータの伝搬に必要なデータパスに加えて、ストアデータの伝搬にも多くのデータパス18を設けなければならない。
(本発明の構成)
本発明のLAPPは、上述のLAPP103と同様、中容量メモリを分散配置させる構成を採用する一方、中容量メモリから読み出したデータを後続段に無条件に伝搬させる規則的なデータパスを設けない。これにより、上述のLAPP103の課題であった段間データパスの配線数の増大を防止する。
図5は、4段毎に1つの中容量メモリを配置する構成である。もちろん、この段数は4段に限られるものではない。要は、1つまたは複数の演算器から構成される「段」を複数連結(多段構成)した「バンドル」(演算器束)毎に、1つの中容量メモリを配置する構成であればよい。言い換えれば、本発明のLAPPは、このような「バンドル」を複数個、多段構成したものであると言える。それゆえ、図5の構成では、図3及び図4で示した、小規模キャッシュメモリ15間の伝搬機構が不要となっている。
また、図6は、中容量メモリを含むメモリシステムの詳細な構成図である。なお、以降の図においては、黒い四角は主に出力ラッチ、白い四角は出力以外に演算の入力として使用するラッチを示している。また、各々の右横添付の数字はビット幅である。
図5および図6に示すように、本発明のLAPPが上述のLAPP103と異なる点は、中容量メモリにキャッシュメモリの1つのwayを搭載しつつ、複数のブロックに分割して使用することを可能とする点にある。さらに、1つのベースアドレスと、6つのオフセットを組み合わせることにより、1つのwayに対して6箇所のアドレスを使用したロード命令の実行を可能としている点にある。
通常、任意の6箇所のアドレスを使用可能とするためには、6ポートメモリを設計する必要がある。しかし、このような多ポートメモリは、面積効率や動作速度の点から、実用的ではない。
これに対し、本発明では、表1に示した参照パターンに対応しつつも、使用可能なアドレス範囲に制約を設ける。これにより、物理的には、読み出しに1ポート、書き込みに1ポートを備える一般的なメモリを用いて、6リード、2ライトのメモリ機能を実現している。
図5に示すように、本発明のLAPP1は、主として、複数の演算器21からなる演算器ネットワークと、キャッシュメモリ(図示省略)の1つのwayを含む、複数のメモリシステム(データ供給装置)22と、を備えている。
各メモリシステム22は、図5に示すように、複数の演算器21からなる演算器ネットワークにおいて、4段ごとに配置されている。そして、各メモリシステム22は、キャッシュメモリ(図示省略)の各wayに対応し、対応するwayとの間においてデータのやり取りを行なうものである。
メモリシステム22において、前段から供給されるアドレス情報に基づきアドレス計算を行った結果が、メモリシステム22の手前(上部)の複数のラッチ(アドレス保持部)23に格納される。次のサイクルでは、メモリシステム22内の中容量メモリ等が参照され、メモリシステム22の後ろ(下部)の複数のラッチ24に格納される。さらに、次のサイクルでは、複数の演算器21の入力として使用されて演算結果が格納される。
なお、下から1段目及び2段目の演算器21を通過した後に得られる演算結果は、最下部の複数のラッチ25に格納される。さらに、次のサイクルにおいて、複数のラッチ25に格納された演算結果を、メモリシステム22にストアするか、さらに、後続段へ送るか、あるいは、両方の選択を可能な構成となっている。
図6は、図5に示したメモリシステム22の構成を示す図である。図6に示すように、メモリシステム22は、主として、複数のブロック(ここでは4個のブロック)に分割されたメモリ部31と、お互いに隣接し合うブロック同士を連結するための連結部32と、シフトレジスタ(シフトレジスタ部)33と、を備えている。シフトレジスタ33は、後述するように、複数のレジスタが一列に接続されている。
図6に示すように、図5の複数のラッチ23には、メモリ部31の各ブロックに一対一に対応するように各ブロックに接続された複数のラッチ(第1のアドレス記憶回路)23−1、23−2、23−4、23−5と、メモリ部31の各ブロックのいずれにも接続されていない複数のラッチ(第2のアドレス記憶回路)23−3、23−6と、が含まれている。
もちろん、ラッチ23−3、23−6について、メモリ部31から分割されたブロックに、それぞれ、対応付けしてもよい。逆に、ラッチ23−1、23−2、23−4、23−5について、メモリ部31のいずれのブロックにも接続されないようにしてもよい。要は、メモリ部31が複数のブロックに分割されており、各ブロックに対応付けられたラッチがあればよい。
以下、上述の表1の各メモリ参照パターンについて、図6に示したメモリシステム22の動作を説明する。
(第1のケース)
表1の第1のケース(1)は、広範囲のアドレスをランダムに参照するケースである。図7に示すように、LD−BASE201にベースアドレスが設定され、ラッチ202にオフセットが設定されると、ベースアドレスにオフセットが加算され、有効アドレスA0が指定される。
有効アドレスA0がラッチ23−1に格納されると、次のサイクルで、有効アドレスA0は、メモリ部31の1つのブロックである「way0.blk0」のラッチ203に供給される。同様に、有効アドレスA0は、「way0.blk0」に隣接する、メモリ部31の他のブロックである「way0.blk1」のラッチ204に供給される。
各ブロックから読み出された値は連結部32に送られ、連結部32により、一方が選択される。連結部32は、ラッチ23−1に格納された有効アドレスA0の上位ビットを用いて、上述の選択を実行する。連結部32により選択されたデータは、シフトレジスタ33のセレクタ33−1を介して、ラッチ24のO0に出力される。
なお、ラッチ24のO0として出力すべきデータのサイズが、「way0.blk0」のみに収まる場合には、上述したような、「way0.blk0」に「way0.blk1」を連結させる連結機能を用いる必要はない。すなわち、「way0.blk0」から読み出されたデータをラッチ24のO0に出力すればよい。
同様に、LD−BASE201に新たにベースアドレスが設定され、ラッチ205に新たにオフセットが設定されると、ベースアドレスにオフセットが加算され、有効アドレスA3が指定される。有効アドレスA3がラッチ23−4に格納された場合、メモリ部31の2つのブロック「way0.blk2」のラッチ206及び「way0.blk3」のラッチ207に供給され、各ブロックから読み出された値は連結部32に送られる。連結部32は、ラッチ23−4に格納された有効アドレスA3の上位ビットを用いて、一方を選択し、シフトレジスタ33のセレクタ33−5を介して、ラッチ24のO3に出力する。
このように、複数のブロックに分割されたメモリ部31を用いることにより、複数のランダム参照に対応することが可能である。
(第2のケース)
表1の第2のケース(2)は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に6箇所をランダムに参照するケースである。図8に示すように、LD−BASE301に設定されたベースアドレスは、ラッチ302を介して、有効アドレスA0として、ラッチ23−1に格納される。次のサイクルで、有効アドレスA0は、メモリ部31の1つのブロックである「way0.blk0」のラッチ303に供給される。同様に、有効アドレスA0は、「way0.blk0」に隣接する、メモリ部31の他のブロックである「way0.blk1」のラッチ304に供給される。
各ブロックから読み出された値は連結部32に送られ、連結部32により、一方が選択される。連結部32は、ラッチ23−1に格納された有効アドレスA0の上位ビットを用いて、上述の選択を実行する。連結部32により選択されたデータは、シフトレジスタ33のセレクタ33−1を介して、ラッチ24のO0に出力される(この時、さらに、上述の第1のケースのように、「way0.blk2」と「way0.blk3」とを連結する構成としてもよい)。
一方、ラッチ305にはオフセット「−e」、ラッチ306にはオフセット「−d」、ラッチ307にはオフセット「−c」、ラッチ308にはオフセット「−b」、ラッチ309にはオフセット「−a」が、それぞれ、設定される。各オフセットは、有効アドレスA1、A2、A3、A4及びA5として、ラッチ23−2、23−3、23−4、23−5及び23−6に、それぞれ、設定される。
O0に対する書き込みと同時に、連結部32により選択されたデータを、セレクタ33−1を介して、シフトレジスタ33の先頭のレジスタ33−2に書き込みを行なう。次のサイクル以降、シフトレジスタ33中にデータを流しながら、ラッチ23−6、23−5、23−4、23−3及び23−2にそれぞれ設定された有効アドレスA5、A4、A3、A2、A1を用いて、シフトレジスタ33中に格納可能な範囲内のアドレスを指定する。これにより、有効アドレスA0近傍のアドレスを同時に参照することができる。
すなわち、有効アドレスA5、A4、A3、A2、A1は、シフトレジスタ33中のレジスタ33−2、33−3、33−4、33−6、33−7の各位置を表わす値である。言い換えれば、ラッチ24のO5、O4、O3、O2に出力すべき値として、レジスタ33−2、33−3、33−4、33−6、33−7のいずれの値を参照すべきかを表わしている。
なお、このために、有効アドレスA5、A4、A3、A2、A1は、各々、シフトレジスタ33の任意の位置とアドレス情報とを比較して一致した部分のレジスタ内容を各々、ラッチ24のO5、O4、O3、O2、O1に読み出す機構が必要である。このような機構は、シフトレジスタ33が小規模であるため、容易に実現可能である。
(第3のケース)
表1の第3のケース(3)は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に6箇所を参照するケースである。上述の第2のケース(2)と異なる点は、6箇所のアドレスも単調増加する点である。上述の第2のケース(2)では、オフセットが「−a」、「−b」、「−c」、「−d」、「−e」といったランダムなオフセットである。一方、第3のケースは、オフセットが固定である。
そこで、第3のケースの場合、シフトレジスタ33のレジスタ33−2、33−3、33−4、33−6、33−7の各位置を用いて、オフセットを設定する。すなわち、シフトレジスタ33から直接読み出す機構により対応する。
このようなオフセットの設定により、第2のケースの場合とは異なり、図8のラッチ305〜309、及び、ラッチ23−2〜23−6を動作させる必要がない。これらの動作の分だけ、消費電力の削減が可能となる。
図9に示すように、LD−BASE401に設定されたベースアドレスは、ラッチ302を介して、有効アドレスA0として、ラッチ23−1に格納される。次のサイクルで、有効アドレスA0は、メモリ部31の1つのブロックである「way0.blk0」のラッチ403に供給される。同様に、有効アドレスA0は、「way0.blk0」に隣接する、メモリ部31の他のブロックである「way0.blk1」のラッチ404に供給される。
各ブロックから読み出された値は連結部32に送られ、連結部32により、一方が選択される。連結部32は、ラッチ23−1に格納された有効アドレスA0の上位ビットを用いて、上述の選択を実行する。連結部32により選択されたデータは、シフトレジスタ33のセレクタ33−1を介して、ラッチ24のO0に出力される。
O0に対する書き込みと同時に、連結部32により選択されたデータを、セレクタ33−1を介して、シフトレジスタ33の先頭のレジスタ33−2に書き込みを行なう。次のサイクル以降、シフトレジスタ33中にデータを流しながら、シフトレジスタ33のレジスタ33−2、33−3、33−4、33−6、33−7の各位置を用いて、固定オフセットを指定する。これにより、有効アドレスA0近傍のアドレスを同時に参照することができる。
すなわち、本第3のケースの場合、ラッチ24のO2〜O5に出力すべき値として、レジスタ33−2、33−3、33−4、33−6、33−7のいずれの値を参照すべきかを表わす、有効アドレスA5、A4、A3、A2、A1の設定は不要となる。なぜなら、本第3のケースの場合、上述の第2のケースとは異なり、オフセットは固定である。それゆえ、レジスタ33−2、33−3、33−4、33−6、33−7の各位置を用いれば、ラッチ24のO2〜O5に出力すべき値として、レジスタ33−2、33−3、33−4、33−6、33−7のいずれの値を参照すべきかを特定することができるからである。つまり、有効アドレスA5、A4、A3、A2、A1は、レジスタ33−2、33−3、33−4、33−6、33−7の各位置により設定される、と言える。
上述したように、この場合、メモリシステム22の消費電力を削減することができる。
もちろん、上述の第2のケース(2)と同様、メモリシステム22は、第3のケース(3)にも対応可能である。
(第4のケース)
表1の第4のケース(4)は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に3箇所を参照するアクセスパターンが2組必要なケースである。
図10に示すように、LD−BASE501に設定されたベースアドレスは、ラッチ502を介して、有効アドレスA0として、ラッチ23−1に格納される。次のサイクルで、有効アドレスA0は、メモリ部31の1つのブロックである「way0.blk0」のラッチ503に供給される。同様に、有効アドレスA0は、「way0.blk0」に隣接する、メモリ部31の他のブロックである「way0.blk1」のラッチ504に供給される。
各ブロックから読み出された値は連結部32に送られ、連結部32により、一方が選択される。連結部32は、ラッチ23−1に格納された有効アドレスA0の上位ビットを用いて、上述の選択を実行する。連結部32により選択されたデータは、シフトレジスタ33のセレクタ33−1を介して、ラッチ24のO0に出力される。
O0に対する書き込みと同時に、連結部32により選択されたデータを、セレクタ33−1を介して、シフトレジスタ33の先頭のレジスタ33−2に書き込みを行なう。次のサイクル以降、シフトレジスタ33中にデータを流しながら、シフトレジスタ33のレジスタ33−2、33−3の各位置を用いて、固定オフセットを指定することにより、有効アドレスA0近傍のアドレスを同時に参照することができる。
有効アドレスA1及びA2は、シフトレジスタ33のレジスタ33−2、33−3の各位置を用いて、設定される。このために、有効アドレスA2、A1は、各々、シフトレジスタ33の任意の位置とアドレス情報とを比較して一致した部分のレジスタ内容を各々、ラッチ24のO2、O1に読み出す機構が必要である。このような機構は、シフトレジスタ33が小規模であるため、容易に実現可能である。
同様に、LD−BASE501に新たに設定されたベースアドレスは、ラッチ505を介して、有効アドレスA3として、ラッチ23−4に格納される。次のサイクルで、有効アドレスA3は、メモリ部31の1つのブロックである「way0.blk2」のラッチ506に供給される。同様に、「way0.blk2」に隣接する、メモリ部31の他のブロックである「way0.blk3」のラッチ507に供給される。
各ブロックから読み出された値は連結部32に送られ、連結部32により、一方が選択される。連結部32は、ラッチ23−4に格納された有効アドレスA3の上位ビットを用いて、上述の選択を実行する。連結部32により選択されたデータは、シフトレジスタ33のセレクタ33−5を介して、ラッチ24のO3に出力される。
ここで、第4のケース(4)は、シフトレジスタ33の途中でデータ流を分断する点が第2のケース(2)と異なっている。そのため、シフトレジスタ33の途中に、「way0.blk2」から読み出した値を割り込ませるための上記セレクタ33−5が必要となる。
O3に対する書き込みと同時に、連結部32により選択されたデータを、セレクタ33−1を介して、シフトレジスタ33の途中のレジスタ33−6に書き込みを行なう。次のサイクル以降、シフトレジスタ33中にデータを流しながら、シフトレジスタ33のレジスタ33−6、33−3の各位置を用いて、固定オフセットを指定することにより、有効アドレスA3近傍のアドレスを同時に参照することができる。
有効アドレスA4及びA5は、シフトレジスタ33のレジスタ33−6、33−7の各位置を用いて、設定される。このために、有効アドレスA5、A4は、各々、シフトレジスタ33の任意の位置とアドレス情報とを比較して一致した部分のレジスタ内容を各々、ラッチ24のO5、O4に読み出す機構が必要である。このような機構は、シフトレジスタ33が小規模であるため、容易に実現可能である。
(第5のケース)
表1の第5のケース(5)は、単調増加するアドレスを基準とし、相対アドレスの範囲に制約があるものの、同時に3箇所を参照するアクセスパターンと、メモリ部31の各ブロック「way0.blk3」、「way0.blk2」及び「way0.blk1」を独立してアクセスできる機構とを同時に必要とするケースである。
図11に示すように、LD−BASE601に設定されたベースアドレスは、ラッチ602を介して、有効アドレスA0として、ラッチ23−1に格納される。次のサイクルで、有効アドレスA0は、メモリ部31の1つのブロックである「way0.blk0」のラッチ606に供給される。「way0.blk0」から読み出された値は、連結部32及びシフトレジスタ33のセレクタ33−1を介して、ラッチ24のO0に出力される。
ラッチ610にはオフセット「−b」、ラッチ611にはオフセット「−a」が、それぞれ、設定される。各オフセットは、有効アドレスA2及びA5として、ラッチ23−3及び23−6に、それぞれ、設定される。
O0に対する書き込みと同時に、セレクタ33−1は、「way0.blk0」から読み出された値を、シフトレジスタ33の先頭のレジスタ33−2に書き込みを行なう。次のサイクル以降、シフトレジスタ33中にデータを流しながら、ラッチ23−3及び23−6にそれぞれ設定された有効アドレスA2及びA5を用いて、シフトレジスタ33中に格納可能な範囲内のアドレスを指定する。これにより、有効アドレスA0近傍のアドレスを同時に参照することができる。
有効アドレスA5、A2は、シフトレジスタ33中のレジスタ33−2、33−3、33−4、33−6、33−7の各位置を表わす値である。言い換えれば、ラッチ24のO5、O2に出力すべき値として、レジスタ33−2、33−3、33−4、33−6、33−7のいずれの値を参照すべきかを表わしている。例えば、有効アドレスA2がレジスタ33−2を、有効アドレスA5がレジスタ33−3を、それぞれ、参照すべきであることを表わしている。この場合、ラッチ24のO2にはレジスタ33−3の値が、ラッチのO5にはレジスタ33−3の値が、それぞれ、出力されることになる。
このため、有効アドレスA5、A2は、各々、シフトレジスタの任意の位置とアドレス情報を比較して一致した部分のレジスタ内容を各々、ラッチ24のO5、O2に読み出す機構が必要である。
一方、LD−BASE601に新たに設定されたベースアドレスは、ラッチ603を介して、有効アドレスA1として、ラッチ23−2に格納される。次のサイクルで、有効アドレスA1は、メモリ部31の1つのブロックである「way0.blk1」のラッチ607に供給される。「way0.blk0」から読み出された値は、ラッチ24のO1に出力される。
また、LD−BASE601に新たに設定されたベースアドレスは、ラッチ604を介して、有効アドレスA3として、ラッチ23−4に格納される。次のサイクルで、有効アドレスA3は、メモリ部31の1つのブロックである「way0.blk2」のラッチ608に供給される。「way0.blk2」から読み出された値は、ラッチ24のO3に出力される。
さらに、LD−BASE601に新たに設定されたベースアドレスは、ラッチ605を介して、有効アドレスA4として、ラッチ23−5に格納される。次のサイクルで、有効アドレスA4は、メモリ部31の1つのブロックである「way0.blk3」のラッチ609に供給される。「way0.blk3」から読み出された値は、ラッチ24のO4に出力される。
有効アドレスA4、A3、A1は各々、「way0.blk3」、「way0.blk2」、「way0.blk1」に直結しており、各々、独立に内容を参照して、読み出した値をラッチ24のO4、O3、O1に書き込む。
(第6のケース)
表1の第6のケース(6)は、図12に示すように、読み出したメモリの値を更新して元のメモリに書き込むケースである。図5に示した複数の演算器21からメモリシステム22へ戻るデータパス(フィードバック機構)26を利用して実現することができる。
例えば、図12においては、読み出したメモリの値(ST−value)612がメモリ部31の1つのブロックである「way0.blk0」のラッチ614及びラッチ615に供給される。次のサイクルで、ST−base613に設定されたベースアドレスを用いて、ラッチ614及びラッチ615に供給された各データが「way0.blk0」に書き込まれる。
以上説明したように、本発明のLAPP1によれば、
(1)中容量メモリを分散させ、かつ、ロード/ストア専用の段間伝搬データパスを不要とすることにより、段間の配線数を大幅に削減できる。
(2)段間の配線数を削減することにより、大規模回路を、動作周波数を落すことなく複数LSI構成により実現することが可能となる。
(3)中容量メモリと小容量シフトレジスタの組み合わせにより、一定の範囲のメモリ空間に対する多数のロード命令発行が可能となる。
(4)浮動小数点演算(複数サイクル)を含む自己更新型メモリ参照を、段間配線を増加させることなく複数段に配置可能となる。
(5)複数の中容量バッファの並列動作により、複数段に分散させた配列データの並列処理が可能となる。
(6)Wayのうち再利用できるデータを移動することなく、命令MAPを移動することにより、データ移動に伴う電力や時間を削減することができる。
(具体例1)
図13及び図14は、画像処理の一例を従来技術と本発明により各々実現した場合の命令列である。図13では、ロードデータが順次伝搬されることを前提に、各段にロード命令が配置されている。
一方、図14では、第4段、第8段、第12段にロード命令が配置されており、各段に属するWayから近傍のデータが取り出されて演算器に投入されている。この結果、ロードデータを無条件に伝搬させる機構が不要であると同時に、プログラムを収容する段数が24段から19段に減少している。
なお、従来技術では、初段に配置された中規模メモリからデータを伝搬させるため、初段において中規模メモリのWay番号を読み替えるだけで中規模メモリの内容を一部再利用することができた。
一方、本発明では、各段に分散した中規模メモリの内容を移動することなく、命令写像を下方に4段ずらせることにより、異なる段においてWayを再利用することを可能としている。すなわち、最終段と初段とは、リング構造により接続されている。例えば、図14の場合、4、8、12段のうち、8、12段を再利用し、命令写像を4段ずらせることにより、8、12段のメモリ内容は移動することなく、新たに必要となるメモリデータを16段に配置する。これにより、8、12、16段のメモリ内容を利用した命令実行が可能となる。
(具体例2)
図15及び図16は、浮動小数点演算処理の一例を従来技術と本発明により各々実現した場合の命令列である。従来の技術の図15では、第6段におけるストアデータを1周させて第1段のメモリに格納する必要があり、また、このために、多数のストアを配置することが困難であった。
これに対し、本発明の図16では、ロードデータやストアデータを直接伝搬するためのデータパスが不要である。これにより、第4段、第8段、第12段、第16段において、更新型のロード→演算→ストアを写像することができる。従来技術に比べて4倍の命令を写像することができ、処理性能が4倍に高まる。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
(その他の実施形態)
上記実施形態におけるシフトレジスタ33に代えて、複数のFIFO(First In First Out)バッファを有するFIFO部を配置することも可能である。FIFO部の各FIFOバッファは、例えば図6の構成であれば、有効アドレスA5、A4、A3、A2、A1、A0の各々に一対一に対応するように配置される。
具体的には、例えば図6の構成であれば、有効アドレスA5、A4、A3、A2、A1、A0の各々に一対一に対応する位置、すなわち、シフトレジスタ33の、セレクタ33−1、レジスタ33−2、レジスタ33−3、レジスタ33−4、レジスタ33−6及びレジスタ33−7の各々の位置に、セレクタ33−1、レジスタ33−2、レジスタ33−3、レジスタ33−4、レジスタ33−6及びレジスタ33−7の各々に代えて、上記FIFO部の各FIFOバッファが配置されることになる。
上記FIFO部の各FIFOバッファは、上記セレクタ33−1、レジスタ33−2、レジスタ33−3、レジスタ33−4、レジスタ33−6及びレジスタ33−7の各々と同様の、1つのセレクタおよび5つのレジスタを有している。
上記実施形態におけるシフトレジスタ33においては、メモリ部31からのデータ供給はセレクタ33−1のみに行なわれていた(ここでは、セレクタ33−1へのデータ供給に着目し、セレクタ33−5へのデータ供給は行われていないものとする。)。これに対し、上記FIFO部においては、メモリ部31からのデータ供給は、各FIFOバッファのセレクタの各々に行なわれることになる。
そして、有効アドレスA5、A4、A3、A2、A1、A0の各々を用いて、各FIFOバッファの各レジスタのうちの1つから読み出されたデータが、各FIFOバッファの各々に対応するラッチ24のO0〜O5にそれぞれ、出力されることになる。例えば、有効アドレスA5に対応するFIFOバッファであれば、当該FIFOバッファの5つのレジスタのうちのいずれか1つが、有効アドレスA5を用いて読み出され、その読み出されたデータがラッチ24のO5に出力されることになる。他のFIFOバッファにおいても同様の処理が行なわれる。
なお、本発明は、以下のようにも表現することができる。すなわち、本発明は、1つまたは複数の演算器から構成される段を複数連結したバンドルに対して、1つの記憶システムを接続した構成であり、各記憶システムは、メモリとシフトレジスタから構成され、メモリから読み出したデータをシフトレジスタの先頭または途中に投入するとともに、記憶システムに入力される複数のアドレス情報を使用して、メモリ及びシフトレジスタを参照し、各アドレスに対応するアドレス位置の内容を各々読み出すアクセラレータ構成方法である。
上記アクセラレータ構成方法において、複数のブロックに分割されたメモリ部には、ブロック毎にアドレス情報を保持するアドレス保持部を備え、さらに、メモリ部に接続されないアドレス保持部を備え、これらのアドレス保持部のアドレス情報を利用して、シフトレジスタ内のレジスタ位置を特定してレジスタを読み出すことが好ましい。
上記アクセラレータ構成方法において、各ブロックに備えられるアドレス保持部のデータを使用して、他のブロックの読み出しを行い、アドレス情報の一部のビットを使用して、複数ブロックから読み出したデータのうち1つを選択することが好ましい。
上記アクセラレータ構成方法において、バンドルの最終段から記憶システムへのフィードバックを備え、バンドル内において、メモリを読み出すと共に、当該メモリに対する書き込みも可能であることが好ましい。
上記アクセラレータ構成方法において、一連の高速実行後、次の高速実行を開始する際に、あるバンドルに属するメモリ内容を別の演算命令にて使用することができる場合、演算器に対する演算命令の写像を変更することにより、バンドルに属するメモリ内容を移動することなく、次の高速実行を開始することが好ましい。
また、本発明は、以下のようにも表現することができる。すなわち、本発明に係るデータ供給装置は、複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、複数のブロックに分割されたメモリ部と、複数のレジスタが一列に接続されたシフトレジスタ部とを備え、前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力された複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力する。
上記構成によれば、1つのメモリ部を複数のブロックに分割し、シフトレジスタ部の先頭または途中のレジスタに各ブロックから読み出されたデータを書き込み可能となっている。
そして、メモリ部及びシフトレジスタ部の各々は、データ供給装置に入力された複数のアドレス情報を基に参照され、各アドレス情報に対応する各アドレス位置の内容を出力可能となっている。
このようなデータ供給装置を用いて、複数の演算器が多段構成された演算器束にデータを供給することにより、異なる演算器束の各々にデータを供給するデータ供給装置間におけるデータ伝搬が不要となる。
それゆえ、従来のような、演算器ネットワークの随所に設けられた1次キャッシュの内容を近傍の演算器に供給するための大規模なデータ伝搬機構が不要となるので、データ処理装置へデータを効率よく供給し、これにより、各演算器の消費電力を削減することができる。
上記データ供給装置は、前記データ供給装置に入力された複数のアドレス情報をそれぞれ保持する複数のアドレス保持部をさらに備え、前記複数のアドレス保持部は、前記メモリ部の各ブロックに一対一に対応するように各ブロックに接続された複数の第1のアドレス記憶回路と、前記メモリ部の各ブロックのいずれにも接続されていない複数の第2のアドレス記憶回路と、を含むことが好ましい。
上記構成によれば、メモリ部を参照するアドレス情報と、シフトレジスタ部を参照するアドレス情報と、を用いて、シフトレジスタ部から最終的に出力されるデータを決定することができる。
上記データ供給装置において、前記シフトレジスタ部は、前記メモリ部の異なる2つのブロックから読み出されたデータのいずれかを選択するセレクタを含み、前記第1のアドレス記憶回路に保持されたアドレス情報を用いて、当該第1のアドレス記憶回路が接続されたブロック及び、当該ブロックに隣接する他のブロックからの各読み出しが行なわれた場合において、前記シフトレジスタ部は、前記セレクタを用いて、前記第1のアドレス記憶回路に保持されたアドレス情報の一部のビットに基づき、前記2つのブロックから読み出されたデータのうちの1つを選択することが好ましい。
上記構成によれば、2つのブロックを連結させることができるので、1つのブロックに収まらないサイズのデータであっても、メモリ部に格納することができる。
上記データ供給装置は、前記演算器束の最終段を構成する1つまたは複数の演算器の演算結果を前記メモリ部に書き込み可能なフィードバック機構をさらに備えることが好ましい。
上記構成によれば、メモリ部及びシフトレジスタ部からの出力値をメモリ部に再書き込みすることができる。
上記データ供給装置において、前記各第1のアドレス記憶回路に保持された各アドレス情報は、前記データ供給装置に入力されたアドレス情報に設定されたオフセット、及び、当該アドレス情報に当該オフセットが加算されたアドレス情報、のうちのいずれかであり、前記各第2のアドレス記憶回路に保持された各アドレス情報は、前記データ供給装置に入力されたアドレス情報に設定されたオフセットであることが好ましく、前記シフトレジスタ部は、前記オフセットを用いて、各レジスタからの出力値を決定することがより好ましい。
上記構成によれば、入力されたアドレス情報にランダムなオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
上記データ供給装置において、前記シフトレジスタ部は、自身の各レジスタの位置を前記オフセットとして用いることにより、各レジスタからの出力値を決定することが好ましい。
上記構成によれば、入力されたアドレス情報に固定のオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
上記データ供給装置において、前記データ供給装置に2つのアドレス情報が入力された場合、前記シフトレジスタ部は、自身の一部の各レジスタの位置を、前記データ供給装置に入力された一方のアドレス情報に設定されたオフセットとして用いることにより、前記一部の各レジスタからの出力値を決定し、自身の他の一部の各レジスタの位置を、前記データ供給装置に入力された他方のアドレス情報に設定されたオフセットとして用いることにより、前記他の一部の各レジスタからの出力値を決定することが好ましい。
上記構成によれば、データ供給装置に2つのアドレス情報が入力された場合でも、いずれのアドレス情報に関しても、入力されたアドレス情報に固定のオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
上記データ供給装置において、前記データ供給装置に複数のアドレス情報が入力された場合、前記シフトレジスタ部は、前記データ供給装置に入力された1つのアドレス情報に設定されたオフセットを用いて、自身の一部の各レジスタからの出力値を決定し、前記データ供給装置に入力された残余のアドレス情報を用いて、前記メモリ部のブロックから読み出されたデータを、自身の他の一部の各レジスタからの出力値として出力することが好ましい。
上記構成によれば、入力された1つのアドレス情報にオフセットが加算されたアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照し、且つ、入力された残余のアドレス情報を用いて、メモリ部及びシフトレジスタ部を参照することができる。
本発明に係るデータ処理装置は、複数の前記演算器束が多段構成されたデータ処理装置であって、或る一連の高速実行後、次の高速実行を開始する際に、或る演算器束にデータを供給する上記データ供給装置の前記メモリ部の内容が別の演算命令にて使用することができる場合、前記演算器束を構成する演算器に対する演算命令の写像を変更する。
上記構成によれば、データ供給装置のメモリ部に格納されるデータの内容に応じて命令写像位置を変更することにより、従来技術と同等の命令実行能力を確保することができる。
上記データ処理装置は、複数の行の機械語命令からなる命令コードを実行するためのデータ処理装置であって、前記命令コードに記述された複数のレジスタ番号に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第1レジスタを含む第1レジスタファイル部と、前記第1レジスタファイル部の各第1レジスタと対応する複数の第2レジスタを含む第2レジスタファイル部と、を含むn(nは1以上の整数)個のレジスタファイル部と、前記第1レジスタファイル部の各第1レジスタの読み出しデータを用いて前記複数の行の機械語命令のいずれかの機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第1演算部と、前記複数の行の機械語命令のいずれかのうち、前記第1演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第2演算部と、を含むn個の演算部と、前記第1演算部が演算を実行したときにおける前記第1演算部の演算結果の出力先であり、且つ、前記第1演算部の演算結果を一時的に保持する第1保持部を含むn個の保持部とを備え、前記第1レジスタファイル部は、前記第1演算部による演算処理の対象外であったデータを保持する第1レジスタに対応する前記第2レジスタファイル部の第2レジスタに、当該データを転送すると共に、前記第1保持部は、自身が前記第1演算部の演算結果を保持する場合には、前記第1演算部の演算結果の出力先を前記第2演算部として、前記第1演算部の演算結果を前記第2演算部に転送し、前記第2演算部は、前記第2レジスタファイル部の各第2レジスタの読み出しデータ及び前記第1保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第1演算部により実行される演算と並列処理することが好ましい。
上記構成によれば、第1レジスタファイル部の各第1レジスタのデータが、第1レジスタファイル部の各第1レジスタに対応する第2レジスタファイル部の各第2レジスタに転送されている。
このため、第2演算部は、第1レジスタファイル部の第1レジスタのデータが第1演算部の演算実行に用いられている場合でも、そのデータを第2レジスタファイル部の第2レジスタから読み出して演算の実行に用いることができる。
また、第1演算部の演算結果が、第2演算部に転送されている。
このため、第2演算部は第1演算部による演算の終了後直ちに、第1演算部の演算結果を演算の実行に用いることができる。
したがって、上記のデータ処理装置では、第1及び第2演算部による2つの演算を並列的に実行させることができる。
上記データ処理装置において、前記n個のレジスタファイル部は、前記第2レジスタファイル部の各第2レジスタと対応する複数の第3レジスタを含む第3レジスタファイル部をさらに含み、前記n個の演算部は、前記複数の行の機械語命令のいずれかのうち、前記第1演算部及び前記第2演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第3演算部をさらに含み、前記n個の保持部は、前記第2演算部が演算を実行したときにおける前記第2演算部の演算結果の出力先であり、且つ、前記第2演算部の演算結果を一時的に保持する第2保持部をさらに含んでおり、前記第2レジスタファイル部は、前記第2演算部による演算処理の対象外であったデータを保持する第2レジスタに対応する前記第3レジスタファイル部の第3レジスタに、当該データを転送すると共に、前記第2保持部は、自身が前記第2演算部の演算結果を保持する場合には、前記第2演算部の演算結果の出力先を前記第3演算部として、前記第2演算部の演算結果を前記第3演算部に転送し、前記第3演算部は、前記第3レジスタファイル部の各第3レジスタの読み出しデータ及び前記第2保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第1演算部により実行される演算及び前記第2演算部により実行される演算と並列処理することが好ましい。
上記構成によれば、第2レジスタファイル部の各第2レジスタのデータが、第2レジスタファイル部の各第2レジスタに対応する第3レジスタファイル部の各第3レジスタに転送されている。
このため、第3演算部は、第2レジスタファイル部の第2レジスタのデータが第2演算部の演算実行に用いられている場合でも、そのデータを第3レジスタファイル部の第3レジスタから読み出して演算の実行に用いることができる。
また、第2演算部の演算結果が、第3演算部に転送されている。
このため、第3演算部は第2演算部による演算の終了後直ちに、第2演算部の演算結果を演算の実行に用いることができる。
したがって、上記のデータ処理装置では、第1、第2及び第3の演算部による3つの演算を並列的に実行させることができる。
上記データ処理装置において、前記n個の保持部に含まれるN(Nは1以上の整数であって、n以下)番目の保持部は、自身が保持する演算結果が前記n個の演算部に含まれる(N+2)番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記n個のレジスタファイル部に含まれる(N+2)番目のレジスタファイル部に転送する一方、自身が保持する演算結果が前記(N+2)番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記n個の演算部に含まれる(N+1)番目の演算部に転送することが好ましい。
上記構成によれば、N番目の保持部が保持する演算結果が(N+2)番目以降の演算部による演算実行に用いられない場合には(N+1)番目の演算部に転送しているので、この場合、レジスタファイル部間における不要なデータ転送が低減され、その結果、消費電力をより低下させることができる。
本発明は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置へのデータ供給に好適に利用することができる。
22 メモリシステム
23 ラッチ(アドレス保持部)
23−1、23−2、23−4、23−5 ラッチ(第1のアドレス記憶回路)
23−3、23−6 ラッチ(第2のアドレス記憶回路)
31 メモリ部
33 シフトレジスタ(シフトレジスタ部)
101、102、103 LAPP

Claims (13)

  1. 複数の演算器が多段構成された演算器束にデータを供給するデータ供給装置であって、
    複数のブロックに分割されたメモリ部と、
    複数のレジスタが一列に接続されたシフトレジスタ部と
    を備え、
    前記シフトレジスタ部は、自身の先頭または途中のレジスタに、前記メモリ部から読み出されたデータが書き込まれると共に、
    前記メモリ部及び前記シフトレジスタ部の各々は、前記データ供給装置に入力されたアドレスに関する情報に基づく、複数のアドレス情報を基に参照されることにより、前記各アドレス情報に対応する各アドレス位置の内容を出力することを特徴とするデータ供給装置。
  2. 前記データ供給装置に入力されたアドレスに関する情報に基づく、複数のアドレス情報をそれぞれ保持する複数のアドレス保持部をさらに備え、
    前記複数のアドレス保持部は、
    前記メモリ部の各ブロックに一対一に対応するように各ブロックに接続された複数の第1のアドレス記憶回路と、
    前記メモリ部の各ブロックのいずれにも接続されていない複数の第2のアドレス記憶回路と、を含むことを特徴とする請求項1に記載のデータ供給装置。
  3. 前記データ供給装置は、前記メモリ部の異なる2つのブロックから読み出されたデータのいずれかを選択する連結部を含み、
    前記第1のアドレス記憶回路に保持されたアドレス情報を用いて、当該第1のアドレス記憶回路が接続されたブロック及び、当該ブロックに隣接する他のブロックからの各読み出しが行なわれた場合において、
    前記連結部、前記第1のアドレス記憶回路に保持されたアドレス情報の一部のビットに基づき、前記2つのブロックから読み出されたデータのうちの1つを選択し、
    前記シフトレジスタ部は、自身の先頭または途中のレジスタにデータを書き込む際には、前記連結部が選択したデータを用いることを特徴とする請求項2に記載のデータ供給装置。
  4. 前記演算器束の最終段を構成する1つまたは複数の演算器の演算結果を前記メモリ部に書き込み可能なフィードバック機構をさらに備えることを特徴とする請求項1〜3のいずれか一項に記載のデータ供給装置。
  5. 前記各第1のアドレス記憶回路に保持される各アドレス情報は、ベースアドレス、オフセット、及び、前記ベースアドレスと前記オフセットとを加算したもの、のうちのいずれかであり、
    前記各第2のアドレス記憶回路に保持される各アドレス情報は、前記オフセットであることを特徴とする請求項2または3に記載のデータ供給装置。
  6. 前記シフトレジスタ部は、前記オフセットを用いて、各レジスタからの出力値を決定することを特徴とする請求項5に記載のデータ供給装置。
  7. 前記オフセットによって、前記シフトレジスタ部に含まれる前記複数のレジスタのうちのいずれのレジスタの値を参照すべきかが表されるものであり、
    前記シフトレジスタ部は、前記オフセットに基づいて、いずれのレジスタの値を出力するのかを決定することを特徴とする請求項6に記載のデータ供給装置。
  8. 前記オフセットによって、前記シフトレジスタ部に含まれる前記複数のレジスタのうちのいずれのレジスタの値を参照すべきかかが表されるものであり、
    前記データ供給装置に2つのベースアドレスが入力された場合において、
    前記シフトレジスタ部は、
    一方の前記ベースアドレスに対する前記オフセットに基づいて、前記複数のレジスタのうちの所定の部分に含まれる、いずれのレジスタの値を出力するのかを決定し、
    他方の前記ベースアドレスに対する前記オフセットに基づいて、前記複数のレジスタのうちの他の所定の部分に含まれる、いずれのレジスタの値を出力するのかを決定することを特徴とする請求項6に記載のデータ供給装置。
  9. 前記オフセットによって、前記シフトレジスタ部に含まれる前記複数のレジスタのうちのいずれのレジスタの値を参照すべきかかが表されるものであり、
    前記データ供給装置に複数のベースアドレスが入力された場合において、
    前記シフトレジスタ部は、
    1つの前記ベースアドレスに対する前記オフセットに基づいて前記複数のレジスタのうちのいずれのレジスタの値を出力するのかを決定し、
    前記メモリ部は、
    残余の前記ベースアドレスを用いて、当該ベースアドレスに対応する前記ブロックから値を出力することを特徴とする請求項6に記載のデータ供給装置。
  10. 複数の前記演算器束が多段構成されたデータ処理装置であって、
    或る一連の高速実行後、次の高速実行を開始する際に、或る演算器束にデータを供給する請求項1〜9のいずれか一項に記載のデータ供給装置の前記メモリ部の内容が別の演算命令にて使用することができる場合、前記演算器束を構成する演算器に対する演算命令の写像を変更することを特徴とするデータ処理装置。
  11. 前記データ処理装置は、複数の行の機械語命令からなる命令コードを実行するためのデータ処理装置であって、
    前記命令コードに記述された複数のレジスタ番号に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第1レジスタを含む第1レジスタファイル部と、前記第1レジスタファイル部の各第1レジスタと対応する複数の第2レジスタを含む第2レジスタファイル部と、を含むn(nは以上の整数)個のレジスタファイル部と、
    前記第1レジスタファイル部の各第1レジスタの読み出しデータを用いて前記複数の行の機械語命令のいずれかの機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第1演算部と、前記複数の行の機械語命令のいずれかのうち、前記第1演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第2演算部と、を含むn個の演算部と、
    前記第1演算部が演算を実行したときにおける前記第1演算部の演算結果の出力先であり、且つ、前記第1演算部の演算結果を一時的に保持する第1保持部を含むn個の保持部と
    を備え、
    前記第1レジスタファイル部は、前記第1演算部による演算処理の対象外であったデータを保持する第1レジスタに対応する前記第2レジスタファイル部の第2レジスタに、当該データを転送すると共に、
    前記第1保持部は、自身が前記第1演算部の演算結果を保持する場合には、前記第1演算部の演算結果の出力先を前記第2演算部として、前記第1演算部の演算結果を前記第2演算部に転送し、
    前記第2演算部は、前記第2レジスタファイル部の各第2レジスタの読み出しデータ及び前記第1保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第1演算部により実行される演算と並列処理することを特徴とする請求項10に記載のデータ処理装置。
  12. nは3以上の整数であり、
    前記n個のレジスタファイル部は、前記第2レジスタファイル部の各第2レジスタと対応する複数の第3レジスタを含む第3レジスタファイル部をさらに含み、
    前記n個の演算部は、前記複数の行の機械語命令のいずれかのうち、前記第1演算部及び前記第2演算部が用いた機械語命令とは異なる機械語命令を用いて演算を実行する、前記多段構成の或る一段となる第3演算部をさらに含み、
    前記n個の保持部は、前記第2演算部が演算を実行したときにおける前記第2演算部の演算結果の出力先であり、且つ、前記第2演算部の演算結果を一時的に保持する第2保持部をさらに含んでおり、
    前記第2レジスタファイル部は、前記第2演算部による演算処理の対象外であったデータを保持する第2レジスタに対応する前記第3レジスタファイル部の第3レジスタに、当該データを転送すると共に、
    前記第2保持部は、自身が前記第2演算部の演算結果を保持する場合には、前記第2演算部の演算結果の出力先を前記第3演算部として、前記第2演算部の演算結果を前記第3演算部に転送し、
    前記第3演算部は、前記第3レジスタファイル部の各第3レジスタの読み出しデータ及び前記第2保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行し、前記第1演算部により実行される演算及び前記第2演算部により実行される演算と並列処理することを特徴とする請求項11に記載のデータ処理装置。
  13. nは3以上の整数であり、
    前記n個の保持部に含まれるN(Nは1以上の整数であって、n−2以下)番目の保持部は、
    自身が保持する演算結果が前記n個の演算部に含まれる(N+2)番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記n個のレジスタファイル部に含まれる(N+2)番目のレジスタファイル部に転送する一方、
    自身が保持する演算結果が前記(N+2)番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記n個の演算部に含まれる(N+1)番目の演算部に転送することを特徴とする請求項11または12に記載のデータ処理装置。
JP2014505037A 2012-03-16 2013-03-15 データ供給装置及びデータ処理装置 Active JP6164616B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014505037A JP6164616B2 (ja) 2012-03-16 2013-03-15 データ供給装置及びデータ処理装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012061110 2012-03-16
JP2012061110 2012-03-16
JP2014505037A JP6164616B2 (ja) 2012-03-16 2013-03-15 データ供給装置及びデータ処理装置
PCT/JP2013/057503 WO2013137459A1 (ja) 2012-03-16 2013-03-15 データ供給装置及びデータ処理装置

Publications (2)

Publication Number Publication Date
JPWO2013137459A1 JPWO2013137459A1 (ja) 2015-08-03
JP6164616B2 true JP6164616B2 (ja) 2017-07-19

Family

ID=49161353

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014505037A Active JP6164616B2 (ja) 2012-03-16 2013-03-15 データ供給装置及びデータ処理装置

Country Status (2)

Country Link
JP (1) JP6164616B2 (ja)
WO (1) WO2013137459A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107408076B (zh) * 2015-04-08 2020-12-11 国立大学法人奈良先端科学技术大学院大学 数据处理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05266056A (ja) * 1992-03-23 1993-10-15 Nippon Telegr & Teleph Corp <Ntt> 差分絶対値和・差分自乗和並列演算装置
JPH07230366A (ja) * 1994-02-18 1995-08-29 Ricoh Co Ltd 画像処理装置
JP3652909B2 (ja) * 1999-02-18 2005-05-25 日本電信電話株式会社 擬似多ポートメモリ装置
JP4747419B2 (ja) * 2001-01-19 2011-08-17 ソニー株式会社 インタリーブ装置および演算システム
JP4940497B2 (ja) * 2001-01-19 2012-05-30 ソニー株式会社 アドレス生成装置
JP2004145476A (ja) * 2002-10-22 2004-05-20 Hiroshima Industrial Promotion Organization マッチング演算回路
EP2352082B1 (en) * 2008-10-14 2018-11-28 National University Corporation Nara Institute of Science and Technology Data processing device for performing a plurality of calculation processes in parallel

Also Published As

Publication number Publication date
WO2013137459A1 (ja) 2013-09-19
JPWO2013137459A1 (ja) 2015-08-03

Similar Documents

Publication Publication Date Title
CN114168526B (zh) 可重构并行处理
CN101482811B (zh) 用于增强的计算能力的处理器体系结构
CN107851013A (zh) 元素大小增加指令
CN102402415B (zh) 一种动态可重构阵列内数据缓存的装置及方法
US10437594B2 (en) Apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
JP2017045151A (ja) 演算処理装置及び演算処理装置の制御方法
WO2010044242A1 (ja) データ処理装置
JP6164616B2 (ja) データ供給装置及びデータ処理装置
CN112074810B (zh) 并行处理设备
JP2010117806A (ja) 半導体装置、および、半導体装置によるデータ処理方法
JP2007004542A (ja) 半導体信号処理装置
JP4444305B2 (ja) 半導体装置
EP2254057B1 (en) Simd processor array system and data transfer method thereof
US8316215B2 (en) Vector processor with plural arithmetic units for processing a vector data string divided into plural register banks accessed by read pointers starting at different positions
KR102358612B1 (ko) 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
JP2002318687A (ja) 情報処理装置及び計算機システム
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
JP2013114608A (ja) Vliwプロセッサと命令構造と命令実行方法
JP2007079711A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170613

R150 Certificate of patent or registration of utility model

Ref document number: 6164616

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250