JP5279046B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP5279046B2
JP5279046B2 JP2010533819A JP2010533819A JP5279046B2 JP 5279046 B2 JP5279046 B2 JP 5279046B2 JP 2010533819 A JP2010533819 A JP 2010533819A JP 2010533819 A JP2010533819 A JP 2010533819A JP 5279046 B2 JP5279046 B2 JP 5279046B2
Authority
JP
Japan
Prior art keywords
unit
register
arithmetic
instruction
register file
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
JP2010533819A
Other languages
English (en)
Other versions
JPWO2010044242A1 (ja
Inventor
康彦 中島
尚 中田
Original Assignee
国立大学法人 奈良先端科学技術大学院大学
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 国立大学法人 奈良先端科学技術大学院大学 filed Critical 国立大学法人 奈良先端科学技術大学院大学
Priority to JP2010533819A priority Critical patent/JP5279046B2/ja
Publication of JPWO2010044242A1 publication Critical patent/JPWO2010044242A1/ja
Application granted granted Critical
Publication of JP5279046B2 publication Critical patent/JP5279046B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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 or look ahead

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、複数の演算器を有し、各演算器による演算処理を同期して行なうことができるデータ処理装置に関する。
近年のマイクロプロセッサにおいては、マシンサイクルを短縮するとともに、1マシンサイクル当たりに実行される命令の数を増やすことにより、実効性能の向上を図る方式が多く提案されている。
このような多数の命令を並列に処理する方式として、例えば、目的とするデータ処理に合わせて演算器ネットワークを固定し、その固定された演算器ネットワークに入力データを流し込む方式である演算器アレイ方式が知られている(例えば、特許文献1〜3を参照)。
この演算器アレイ方式では、複数の演算器からなる演算器ネットワークを利用することにより、多くの機能を並列実行することが可能である。
しかし、演算器アレイ方式は、既存の機械語命令を実行することができない。このため、この演算器アレイ方式に特有の機械語命令を生成するための専用の機械語命令生成手段が必要であり、汎用性に欠けている。
そこで、一般的な機械語命令を実行し、且つ、機械語命令の並列実行が可能な方式としては、例えば、スーパスカラ方式、ベクトル方式、VLIW方式が知られている。これらの方式では、1つの命令の中で複数の演算等が指定され、それらが同時に実行されることになる。
先ず、スーパスカラ方式は、機械語命令列の中から同時実行可能な機械語命令をハードウエアが動的に検出して並列実行する方式である。
このスーパスカラ方式は、既存のソフトウェア資産をそのまま活用できる強みがある一方、機構の複雑さ及び消費電力の多さから、最近では敬遠される傾向にある。
次に、ベクトル方式は、多数のレジスタを一次元方向に並べたベクトルレジスタを用いて、ロード、演算、ストア等の基本操作を繰返し適用する方式であり、電力効率の良い高速化が可能である。さらに、キャッシュメモリが不要となることから、主記憶とベクトルレジスタ間のデータ転送速度が保証され、その結果、安定した高速化が実現される。
しかし、このベクトル方式では、主記憶とベクトルレジスタとの間におけるデータ転送機構の規模と遅延時間が必然的に大きくなってしまう。このため、ある程度のデータ再利用が期待できる画像処理向け組み込みシステムのような応用分野に採用するには過剰な方式であると言える。
最後に、VLIW方式は、1つの命令の中で複数の演算等が指定され、それらが同時に実行される方式である。このVLIW方式では、例えば、4命令を同時にフェッチし、4命令を同時にデコードし、汎用レジスタから必要なデータを読み出し、複数の演算装置により同時に演算を行い、演算装置に付随する演算結果格納手段に演算結果を格納する。
そして、次のサイクルではその演算結果格納手段から内容を読み出して、汎用レジスタに書き込みを行なうとともに、次の演算においてその読み出された演算結果が必要となる場合には、その演算結果を演算装置の入力へバイパスする。
一方、ロード命令に対しては、LD/STユニットにおいてキャッシュメモリを参照し、LD/STユニットに付随するロード結果格納手段にロード結果を格納した後、次のサイクルにおいて、LD/STユニットが演算装置と同様の動作を行なう。
このようにしてVLIW方式では、並置された演算装置及びLD/STユニットの各々の数だけ演算を同時実行することができる。さらに、VLIW方式では、並列実行可能な命令列をコンパイラ等によりあらかじめスケジュールしておくため、スーパスカラ方式のように同時実行可能な機械語命令をハードウエアが動的に検出する機構が不要となる。したがって、VLIW方式では、電力効率の良い命令実行が可能である。
しかしながら、VLIW方式であっても、スーパスカラ方式と同様、高々数命令を同時実行可能であるに過ぎない。なぜなら、先ず、現実のプログラムでは、あらかじめ並列実行可能であると判断できる命令数がそれほど多くないからである。この点については、画像処理等の一部の分野では十分な命令並列度が存在することがわかっているが、並列実行可能な命令数がそれほど多くないのが一般的である。
さらに、並列実行可能な命令数を増加させるためには、汎用レジスタに対してデータを読み書きするために必要なポートと呼ばれる回路の数も増加させなければならない。ところが、現実的な回路として数十命令を同時実行できるに耐えるレジスタファイルを構成することは極めて困難となっている。なぜなら、レジスタファイルの各ポートには、任意の番号のレジスタ内容を任意の演算装置に供給するために、レジスタファイルが保持するレジスタ数分の信号線から1つを選択する回路が演算装置数に合わせて必要となるからである。
日本国公開特許公報「特開平8−83264号公報(1996年3月26日公開)」 日本国公開特許公報「特開2001−312481号公報(2001年11月9日公開)」 日本国公開特許公報「特開2003−76668号公報(2003年3月14日公開)」
上述したように、従来のVLIW方式には、豊富なプログラム資産を利用できるという特徴があるものの、高々数命令しか同時実行できないという問題点があった。
さらに、あらかじめ並列実行可能であると判断できる命令数が多い場合であっても、レジスタポート数の制約により、同時実行命令数を増加させることができないという問題点もあった。
上記問題点に鑑み、本発明の目的は、より多くの命令を並列的に実行することができるデータ処理装置を提供することにある。
上記目的を達成するために、本発明におけるデータ処理装置は、複数の機械語命令からなる命令コードを実行するためのデータ処理装置であって、前記命令コードを保持する命令メモリ部と、前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ/デコード部と、前記命令フェッチ/デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第1レジスタを含む第1レジスタファイル部と、前記第1レジスタファイル部の各第1レジスタと一対一に対応する複数の第2レジスタを含む第2レジスタファイル部と、を含むn(nは1以上の整数)個のレジスタファイル部と、前記第1レジスタファイル部の各第1レジスタの読み出しデータを用いて演算を実行する第1演算部と、第2演算部と、を含むn個の演算部と、前記第1演算部の演算結果を一時的に保持する第1保持部を含むn個の保持部とを備え、前記第1レジスタファイル部は、自身の各第1レジスタがデータを保持する場合には、データを保持する第1レジスタに対応する前記第2レジスタファイル部の第2レジスタに当該データを転送すると共に、前記第1保持部は、自身が保持する演算結果を前記第2演算部に転送可能となっており、前記第2演算部は、前記第2レジスタファイル部の各第2レジスタの読み出しデータ及び前記第1保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行することを特徴とする。
上記のデータ処理装置では、第1レジスタファイル部の各第1レジスタのデータが、第1レジスタファイル部の各第1レジスタに対応する第2レジスタファイル部の各第2レジスタに転送されている。
このため、第2演算部は、第1レジスタファイル部の第1レジスタのデータが第1演算部の演算実行に用いられている場合でも、そのデータを第2レジスタファイル部の第2レジスタから読み出して演算の実行に用いることができる。
また、第1演算部の演算結果が、第2演算部に転送されている。
このため、第2演算部は第1演算部による演算の終了後直ちに、第1演算部の演算結果を演算の実行に用いることができる。
したがって、上記のデータ処理装置では、第1及び第2演算部による2つの演算を並列的に実行させることができる。
本発明のデータ処理装置は、以上のように、前記命令コードを保持する命令メモリ部と、前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ/デコード部と、前記命令フェッチ/デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第1レジスタを含む第1レジスタファイル部と、前記第1レジスタファイル部の各第1レジスタと一対一に対応する複数の第2レジスタを含む第2レジスタファイル部と、を含むn(nは1以上の整数)個のレジスタファイル部と、前記第1レジスタファイル部の各第1レジスタの読み出しデータを用いて演算を実行する第1演算部と、第2演算部と、を含むn個の演算部と、前記第1演算部の演算結果を一時的に保持する第1保持部を含むn個の保持部とを備え、前記第1レジスタファイル部は、自身の各第1レジスタがデータを保持する場合には、データを保持する第1レジスタに対応する前記第2レジスタファイル部の第2レジスタに当該データを転送すると共に、前記第1保持部は、自身が保持する演算結果を前記第2演算部に転送可能となっており、前記第2演算部は、前記第2レジスタファイル部の各第2レジスタの読み出しデータ及び前記第1保持部により転送される演算結果のうちの少なくとも一方を用いて演算を実行するものである。
それゆえ、より多くの命令を並列的に実行することができるという効果を奏する。
本発明の一実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 本発明の他の実施形態におけるデータ処理装置の構成を示す図である。 命令コードを説明するための説明図である。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その1)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その2)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その3)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その4)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その5)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その6)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その7)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その8)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その9)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その10)。 本発明の他の実施形態におけるデータ処理方法の処理手順を説明するための図である(その11)。
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明に用いる図面では、同一の部品に同一の符号を付してある。それらの名称及び機能も同一である。したがって、それらについての詳細な説明は繰り返さない。
先ず、本発明におけるデータ処理装置の構成について実施の形態1〜10で説明し、次に、本発明におけるデータ処理方法の処理手順について実施の形態11で説明する。
(実施の形態1)
図1は、本発明の実施の形態1におけるデータ処理装置の構成を示す図である。図1に示すように、本実施の形態におけるデータ処理装置101は、命令メモリ部10と、命令フェッチ部(命令フェッチ/デコード部)20と、命令デコード部(命令フェッチ/デコード部)30と、第1レジスタファイル部110と、第2レジスタファイル部210と、第1演算装置(第1演算部、第1保持部)120と、第2演算装置(第2演算部、第2保持部)220と、を備えている。
命令メモリ部10は、ハードディスクドライブなどの磁気ディスク装置や半導体メモリ等の公知の記憶装置から適宜選択して用いることができる。命令メモリ部10は、複数の命令からなるプログラムを保持するものであり、主記憶の一部の領域であってもよく、また、主記憶の一部を保持する命令バッファであってもよい。
命令フェッチ部20は、命令メモリ部10から必要な命令をフェッチして、命令デコード部30は、そのフェッチした命令をデコードする。命令デコード部30によるデコード結果により、第1及び第2演算装置120、220における処理内容が決定する。
本実施の形態におけるデータ処理装置101では、公知のVLIW方式によるプロセッサアーキテクチャを前提としており、命令フェッチ部20により例えば32ビット幅の命令が例えば4個同時にフェッチされ、命令デコード部30によりそれらフェッチされた命令が同時にデコードされるものと想定する。
第1レジスタファイル部110は、第1演算装置120における演算処理に必要なデータを保持するものである。第1レジスタファイル部110は、複数のレジスタ(第1レジスタ)r0〜r11からなるレジスタ群111と、レジスタ群111の各レジスタr0〜r11の読み出しデータを第1レジスタファイル部110の外部に転送するための転送器112と、を有している。
レジスタ群111の各レジスタr0〜r11に対する読み出しや書き込みは、命令デコード部30によるデコード結果に基づいて実行される。レジスタ群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に対する読み出しや書き込みは、命令デコード部30によるデコード結果に基づいて実行される。レジスタ群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は、データ処理装置101における実体的な処理を行なうものである。第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は、データ処理装置101における実体的な処理を行なうものである。第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の外部に転送する。
次に、本実施の形態におけるデータ処理装置101の動作について説明する。
本実施の形態におけるデータ処理装置101においては、レジスタ群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)
次に、本発明の実施の形態2について説明する。図2は、本発明の実施の形態2におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態1と同様の部分については、同一符号を付し、その詳細な説明は省略する。
図2に示すように、本実施の形態におけるデータ処理装置102と上記の実施の形態1におけるデータ処理装置101とで異なる点は、第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に対する読み出しや書き込みは、命令デコード部30によるデコード結果に基づいて実行される。レジスタ群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は、データ処理装置102における実体的な処理を行なうものである。第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の演算結果を取得することができる。
次に、本実施の形態におけるデータ処理装置102の動作について説明する。
本実施の形態におけるデータ処理装置102においては、レジスタ群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演算装置120の演算結果を必要とする場合には、第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に投入することができる。
(実施の形態3)
次に、本発明の実施の形態3について説明する。本発明の実施の形態は、上記の実施の形態2のデータ処理装置102における第1〜3データ処理段からなる3データ処理段の構成を、Nデータ処理段の構成に拡張した形態である。
例えば、Nを1以上の整数とする。この場合、第Nデータ処理段を構成する演算装置の演算結果は、その演算結果を第(N+2)データ処理段以降の演算装置が使用する場合には、第(N+2)データ処理段のレジスタファイル部に書き込まれる。
一方、その演算結果を第(N+2)データ処理段以降の演算装置が使用しない場合には、その演算結果を第(N+2)データ処理段のレジスタファイル部に書き込むことなく第(N+1)データ処理段の演算装置に入力する。
以上説明したように、本実施の形態におけるデータ処理装置によれば、次段の演算装置のみにより使用される前段の演算装置の演算結果は、次段のレジスタファイル部への書き込みが不要となる。したがって、前後段におけるレジスタファイル部間のデータ伝搬を省略することができる。
(実施の形態4)
次に、本発明の実施の形態4について説明する。図3は、本発明の実施の形態4におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態2と同様の部分については、同一符号を付し、その詳細な説明は省略する。
図3に示すように、本実施の形態におけるデータ処理装置103と上記の実施の形態2におけるデータ処理装置102とで異なる点は、第1ロード/ストア部(ロード部、ストア部)130と、第1キャッシュメモリ140と、をさらに備えている点である。第1ロード/ストア部130及び第1キャッシュメモリ140は、第1演算装置120及び第1レジスタファイル部110と共に、第1データ処理段を構成している。
第1ロード/ストア部130は、ロード部(LD)1−1、1−2からなるロード部群131と、ストア部(ST)1−1、1−2からなるストア部群132と、を有している。
第1キャッシュメモリ140は、第1ロード/ストア部130に接続されており、第1ロード/ストア部130によるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。
第1キャッシュメモリ140は、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要があることから、非アレイ動作時に使用する大容量のキャッシュメモリとは別の小容量のキャッシュメモリを用いて構成されている。
この場合、非アレイ動作時に使用したキャッシュメモリの内容のうち、アレイ動作に必要なダーティラインを一旦外部メモリ(図示省略)に退避させた後、第1キャッシュメモリ140を使用してアレイ動作に移行すればよい。そうすることにより、非アレイ動作時に使用されたキャッシュメモリの内容と第1キャッシュメモリ140の内容との整合性を保つことが可能となる。
本発明におけるデータ処理装置は、公知のVLIW方式によるプロセッサアーキテクチャを前提としており、このため、VLIW形式の機械語命令は通常、第1レジスタファイル部110、第1演算装置120、第1ロード/ストア部130、及び、第1キャッシュメモリ140により実行される。すなわち、VLIW方式による演算処理の動作(以下、「非アレイ動作」と呼ぶときもある。)は、第1レジスタファイル部110、第1演算装置120、第1ロード/ストア部130、及び、第1キャッシュメモリ140により実行される。
したがって、上記の実施の形態1〜3における、複数の演算装置による演算処理の同時動作(以下、「アレイ動作」と呼ぶときもある。)を開始するために必要となるレジスタ情報は、常時、第1レジスタファイル部110に格納されている。
そして、命令デコード部30によるデコード結果によりアレイ動作開始命令(動作命令)が検出された場合、各データ処理段の演算装置に対して、各演算装置による演算処理に必要なデータを格納するレジスタのレジスタ番号を表わすソースレジスタ番号、各演算装置による演算処理の演算種別、及び、各演算装置の演算結果の格納先であるレジスタのレジスタ番号を表わすデスティネーションレジスタ番号、からなる制御情報(設定情報)Aが各データ処理段に設定される。
この制御情報Aは、アレイ動作開始命令の付加情報として配置すればよい。この場合、アレイ動作開始命令のデコード時に制御情報Aを一度に獲得することができる。
また、この制御情報Aは、後続のVLIW命令列自身として供給してもよい。この場合、アレイ動作開始命令をデコードした後、引き続き後続するVLIW命令を順にデコードし、ループの繰り返しを意味する後方分岐命令、すなわちアレイ動作の最終段に対応する命令をデコードするまでの間に、ループからの脱出を意味する前方分岐命令、すなわちアレイ動作の終結条件(動作終結条件)に対応する命令を検出して、休止条件としてセットできる。このため、既存命令列に付加すべき制御情報を削減することができる。
この際、各演算装置による演算処理に必要なデータは、前段から順次伝搬されてくることを前提にすれば、全段の演算装置に対して一斉に制御情報を放送する必要はなく、各段における演算装置に最初のデータが到着すると同時に制御情報が到着する構成とすることができる。
アレイ動作開始後は、例えばループ構造の1イタレーションが演算装置ネットワークに写像されており、データを順次流し込むことにより大量のデータ処理を行なう。
すなわち、アレイ動作開始後は、該アレイ動作が終了するまでの間、各演算装置に対する制御情報を変更する必要がなく、また、非アレイ動作時に必要であった命令デコード部30によるデコード動作を実行する必要がなくなる。このため、命令デコード部30は停止し、さらに、命令フェッチ部20によるフェッチ動作も同様に停止することができる。
また、制御情報Aに、各段における演算装置のアレイ動作を停止させるためのアレイ動作終結条件を付加しておき、アレイ動作中にあらかじめ指示した条件が満たされた場合に、自動的に非アレイ動作に復帰する構成とする。
このアレイ動作終結条件とは、具体的には、各データ処理段における演算装置の実行サイクル数等である。
(実施の形態5)
次に、本発明の実施の形態5について説明する。図4は、本発明の実施の形態5におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態4と同様の部分については、同一符号を付し、その詳細な説明は省略する。
図4に示すように、本実施の形態におけるデータ処理装置104と上記の実施の形態4におけるデータ処理装置103とで異なる点は、外部メモリ150、をさらに備えている点である。
外部メモリ150は、第1ロード/ストア部130が保有する第1キャッシュメモリ140のみに接続されている。そして、第2段以降については、第1キャッシュメモリ140のデータが順次伝搬されている。このことにより、外部メモリ150と各データ処理段のキャッシュメモリの接続を単純化している。
ロード命令は、第1レジスタファイル部110に格納されたアドレス情報を第1演算装置120において加減算して得られるアドレスに従って第1キャッシュメモリ140を参照し、得られたデータを第1ロード/ストア部130のストア部群132のストア部1−1、1−2に格納される。
このストア部1−1、1−2に格納されたデータは、次のサイクルにおいて、後段の演算装置またはレジスタファイル部の入力となる。
(実施の形態6)
次に、本発明の実施の形態6について説明する。図5は、本発明の実施の形態6におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態5と同様の部分については、同一符号を付し、その詳細な説明は省略する。
図5に示すように、本実施の形態におけるデータ処理装置105と上記の実施の形態5におけるデータ処理装置104とで異なる点は、第2ロード/ストア部230と、第3ロード/ストア部330と、第2キャッシュメモリ240と、第3キャッシュメモリ340と、をさらに備えている点である。第2ロード/ストア部230及び第2キャッシュメモリ240は、第2演算装置220及び第2レジスタファイル部210と共に、第2データ処理段を構成している。また、第3ロード/ストア部330及び第3キャッシュメモリ340は、第3演算装置320及び第3レジスタファイル部310と共に、第3データ処理段を構成している。
第2ロード/ストア部230は、ロード部(LD)2−1、2−2からなるロード部群231と、ストア部(ST)2−1、2−2からなるストア部群232と、を有している。また、第3ロード/ストア部330は、ロード部(LD)3−1、3−2からなるロード部群331と、ストア部(ST)3−1、3−2からなるストア部群332と、を有している。
第2キャッシュメモリ240は、第2ロード/ストア部230に接続されており、第2ロード/ストア部230によるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。
第3キャッシュメモリ340は、第3ロード/ストア部330に接続されており、第3ロード/ストア部330によるロード、ストア動作に従って読み出し及び書き込みが高速に実行される。
第2及び第3キャッシュメモリ240、340は、第1キャッシュメモリ140と同様に、最大で全内容を次段以降に伝搬させるために容量を極めて小さくする必要があることから、非アレイ動作時に使用する大容量のキャッシュメモリとは別の小容量のキャッシュメモリを用いて構成されている。
ただし、第2及び第3キャッシュメモリ240、340は、第1キャッシュメモリ140とは異なり、外部メモリ150と直接データ転送するためのインタフェースは備えていない。このため、第1キャッシュメモリ140から前段のキャッシュメモリを経由して間接的にデータ供給を受ける。
(実施の形態7)
次に、本発明の実施の形態7について説明する。図6は、本発明の実施の形態7におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態6と同様の部分については、同一符号を付し、その詳細な説明は省略する。
VLIW形式に限らず、一般的な機械語命令では、各命令語中に記述されているレジスタ番号は変化することがない。したがって、上記の実施の形態4〜6のように、あらかじめ各演算装置に制御情報をセットし、レジスタの内容が前段から流れ込む構成とすることにより、本来、VLIW形式の機械語命令が意図する演算結果と同じ結果をアレイ動作により連続的に得ることができる。
一方、VLIW形式に限らず、一般的なロード命令では、レジスタの内容から得られるロードアドレスを用いてキャッシュメモリを参照した後に、後続命令によりレジスタの内容をインクリメントまたはデクリメントして、次にロード命令を実行する際には異なるアドレスを用いる。
同様の結果をアレイ動作により連続的に得るためには、各段におけるロード命令が、後続命令の結果を待つことなく、自律的にアドレス情報をインクリメントまたはデクリメントし、連続的にキャッシュメモリを参照する構成が必要である。
このためには、本実施の形態におけるデータ処理装置106においては、図6に示すように、ロードアドレスを計算する各段の演算装置が、前回の演算結果を用いて次のアドレスを計算する。
一般に、ロードアドレスは、ベースレジスタにオフセットを加えたものであり、この加算のために、演算器を1段通過しなければならない。また、次に使用するアドレスは、さらにオフセットを加えた値ではなく、例えば4バイトなど、データ幅分のみを加えた値である。このようなアドレス増加のために、通常のプログラムでは、ロード命令の実行後に、ベースレジスタの値を4だけ増加させる命令を実行する。
しかし、本実施の形態において、後段においてレジスタの値を増加させ、その結果を前段において使用することとした場合、1方向のデータ流を効率よく制御することができない。
このため、上述したように、本実施の形態においては、後段の値を前段に戻すのではなく、前段が自律的にベースアドレスを更新する。
そうすることにより、各段のロード/ストア部が後段の実行結果を待つことなく、各段のロード/ストア部の負荷を低減することができる。
(実施の形態8)
次に、本発明の実施の形態8について説明する。図7は、本発明の実施の形態8におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態7と同様の部分については、同一符号を付し、その詳細な説明は省略する。
図7に示すように、本実施の形態におけるデータ処理装置107においては、第1キャッシュメモリ140は外部メモリ150に接続されている。以下、画像処理の1つである輪郭抽出処理を例として本実施の形態におけるデータ処理装置107の動作について説明する。
画像処理の1つである輪郭抽出処理は、例えば3×3の画素領域について縦横斜めの対角画素の差分を求め、総和が閾値を超えた場合に、中央画素位置に輪郭を生成するものである。一般的に、画像データは横方向に連続アドレスとなるよう外部I/O装置から外部メモリに転送されており、その結果、縦方向の連続画素はメモリアドレスとしては離散してしまう。
従来技術におけるキャッシュメモリは、16ワード程度の連続アドレス領域を外部メモリよりも高速なメモリに保存しておき、多数回の再利用を期待して高速化する技術である。このため、縦方向の離散アドレスを頻繁に参照する場合には上記の効果を期待することができない。
そこで、本実施の形態におけるデータ処理装置107では、外部I/O装置から外部メモリに対して画素データを格納する際には、バースト転送による高スループットを期待するために、書き込み先である外部メモリのベースアドレスと転送ワード数(画像の幅が1024ワードの場合、1024)とから構成される転送情報Fに基づいてアドレスが連続するようなデータ転送を行なう。
一方、外部メモリから第1キャッシュメモリにデータを転送する際には、縦方向に隣接する画素データを演算装置に対して毎サイクル供給するために、書き込み先である第1キャッシュメモリのベースアドレスと転送データ長(画像の幅が1024ワードの場合、上中下3ワードの転送を1024回分)から構成される転送情報Gに基づいて、外部メモリの異なるバンクに属する複数の短いデータ(例えば毎サイクル3ワード)をキャッシュメモリの複数のラインに毎サイクル転送できる構成としている。
このような転送情報は、アレイ動作開始命令に関連付けられており、アレイ動作開始命令を検出した際に読み出される。
(実施の形態9)
次に、本発明の実施の形態9について説明する。図8は、本発明の実施の形態9におけるデータ処理装置の構成を示す図である。以下、本発明の実施の形態8と同様の部分については、同一符号を付し、その詳細な説明は省略する。
上記の実施の形態8においては、アレイ動作開始命令に関連付けられるデータ転送情報には、外部I/O装置から外部メモリに対する転送情報と、外部メモリから第1キャッシュメモリに対する転送情報の2つがある。
ところで、外部メモリから第1キャッシュメモリに対する転送情報については、第1キャッシュメモリと第1演算装置を同期させる機構が必要である。目的は、第1キャッシュメモリに必要なデータが全て揃った時点、すなわち、第2段以降のロード/ストア部が必要とするデータが第1キャッシュメモリに全て存在することを確認した時点で全段の演算装置を一斉に動作させ、必要とするデータが第1キャッシュメモリに存在しない間は全段の演算装置を一斉に停止させることにある。
このため、本実施の形態におけるデータ処理装置108においては、前述したデータ転送情報に、演算装置の動作開始までにあらかじめ動作させるべきロード回数(SKIP情報)を追加する。規定回数のロードが完了した時点で、後段の演算装置の動作を開始する。
以後、ロードが完了するたびに、後段の演算装置を動作させる。一方、外部メモリの遅延などによりロードが完了しない場合は、後段を停止させる。
また、最終段が外部メモリや外部I/O装置に結果を格納する際に遅延が生じた場合も、アレイ動作を一時停止させることにより、データの待ち合わせを行なう。
ロード完了数が指定転送ワード数に達した時は、第1段のロード動作は停止し、後段の動作のみを継続させる。例えば、最終段の演算装置における演算数カウンタが規定値に達したことをもってアレイ動作を停止させることにより、アレイ動作の正確な制御が可能である。
(実施の形態10)
次に、本発明の実施の形態10について説明する。
アレイ動作の最終結果は、ストア命令により外部メモリまたは外部I/O装置に格納される。あるいは、さらに別の外部メモリに格納し、その外部メモリに接続される別のN段構成の入力とすることにより、複数種類の画像処理を連続的に行なうことが可能となる。
また、ハードウエアが備えるアレイ段数よりも複雑な処理を行なう場合は、外部メモリをインタフェースとして別のアレイ構造を従属接続したり、あるいは、別のアレイ構造の第1キャッシュメモリに直接接続したりすることにより、演算装置の段数を拡張して対応することができる。
(実施の形態11)
次に、本発明の実施の形態11について説明する。本実施の形態では、本発明におけるデータ処理方法の処理手順について説明する。
以下、図9に記載した命令コードに基づく、本発明におけるデータ処理方法による演算器間ネットワークの設定過程について、図10〜20を用いて図9の命令コードを順に追って説明する。
ループ構造に入る手前の機械語命令において、アレイ動作開始命令が検出されたとする。この場合、ループ構造が終結、すなわち、後方分岐命令が検出されるまでの間、命令デコード機能は機械語命令を従来通り解釈し、第1演算装置を制御する従来動作を停止する。
そして、ループ構造内の機械語命令に基づいてアレイ動作に必要な演算器間ネットワークの設定を行なう。
先ず、図10において、図9に示した命令コードの第1行目の機械語命令が解釈されている。なお、図10では、この第1行目の命令コードに基づく設定箇所を「S1」で示している。
この第1行目の命令コードは、2つのロード命令(ld)と、1つの減算命令(subicc)が記述されている。
第1のロード命令(ld)は、第1レジスタファイル部110のレジスタ(gr4)の内容と定数(-1284)(const.)を加算し、その結果を主記憶アドレスとして第1キャッシュメモリ140を参照し、読み出した値を第4レジスタファイル部410のレジスタ(fr1)に格納する。
このための演算器ネットワークとして、先ず、第1レジスタファイル部110からレジスタ(gr4)を読み出し、第1演算装置120に属する演算器(第1EAG)に入力する設定を行なう。この設定は、一般的な選択回路に対する選択信号の設定と同じである。
さらに、第1EAGの加算結果は、第1EAGの保持器に記憶された後、次のサイクルにおいて、第1ロード/ストア部130に転送される。
この第1EAGと第1ロード/ストア部130のロード部及びストア部は、1対1に接続されているので、第1ロード/ストア部130における入力選択手順は不要である。
さらに、第1ロード/ストア部130の結果が第4レジスタファイル部410のレジスタ(fr1)に書き込まれるよう、ネットワークの設定を行なう。
第2のロード命令(ld)は、第1のロード命令(ld)と同様に、第1レジスタファイル部110のレジスタ(gr4)の内容と定数(1284)(const.)を加算し、その結果を主記憶アドレスとして第1キャッシュメモリ140を参照し、読み出した値を第4レジスタファイル部410のレジスタ(fr2)に格納する。
このための演算器ネットワークとして、先ず、第1レジスタファイル部110からレジスタ(gr4)を読み出し、第1演算装置120に属する演算器(第2EAG)に入力する設定を行なう。
さらに、第2EAGの加算結果は、第2EAGの保持器に記憶された後、次のサイクルにおいて、第1ロード/ストア部130に転送される。
この第2EAGと第1ロード/ストア部130のロード部及びストア部も、1対1に接続されているので、第1ロード/ストア部130における入力選択手順は不要である。
さらに、第1ロード/ストア部130の結果が第4レジスタファイル部410のレジスタ(fr2)に書き込まれるよう、ネットワークの設定を行なう。
なお、定数は、命令デコード時に、定数領域(const.)に設定される。
第3の減算命令(subicc)は、第1レジスタファイル部110のレジスタ(gr7)から1を減算し、その結果を同じレジスタ(gr7)に格納する命令である。
このための演算器ネットワークとして、第1レジスタファイル部110のレジスタ(gr7)の内容から1を減算するよう、第1演算装置120までのネットワークが設定される。
なお、繰返し減算を行なうために、次サイクル以降は、第1レジスタファイル部110のレジスタ(gr7)からではなく、第1演算装置120に属する演算器(subicc)の出力を入力とするようネットワークを構成する。
そうすることにより、継続して減算を行った結果(後述する条件コード)を利用して、アレイ動作の終結条件とすることができる。
減算結果に伴う条件コードは、第3レジスタファイル部310のレジスタ(icc0)に転送されるよう、ネットワークの設定を行なう。
次に、図11において、図9に示した命令コードの第2行目の機械語命令が解釈されている。なお、図11では、この第2行目の命令コードに基づく設定箇所を「S2」で示している。
この第2行目の命令コードは、2つのロード命令(ld)と、1つの条件分岐命令(beq)が記述されている。
第1のロード命令(ld)は、第2レジスタファイル部210のレジスタ(gr4)の内容と定数(-1280)(const.)を加算し、その結果を主記憶アドレスとして第2キャッシュメモリ240を参照し、読み出した値を第5レジスタファイル部510のレジスタ(fr3)に格納する。
このための演算器ネットワークとして、先ず、第1レジスタファイル部110のレジスタ(gr4)を第2レジスタファイル部210のレジスタ(gr4)に転送する設定が行なわれる。
そして、第2レジスタファイル部210からレジスタ(gr4)を読み出し、第2演算装置220に属する演算器(第1EAG)に入力する設定を行なう。
さらに、第1EAGの加算結果は、第1EAGの保持器に記憶された後、次のサイクルにおいて、第2ロード/ストア部230に転送される。
そして、この第2ロード/ストア部230の結果が第5レジスタファイル部510のレジスタ(fr3)に書き込まれるよう、ネットワークの設定を行なう。
第2のロード命令(ld)は、第1のロード命令(ld)と同様に、第2レジスタファイル部210のレジスタ(gr4)の内容と定数(1280)(const.)を加算し、その結果を主記憶アドレスとして第2キャッシュメモリ240を参照し、読み出した値を第5レジスタファイル部510のレジスタ(fr4)に格納する。
このための演算器ネットワークとして、第2レジスタファイル部210からレジスタ(gr4)を読み出し、第2演算装置220に属する演算器(第2EAG)に入力する設定を行なう。
さらに、第2EAGの加算結果は、第2EAGの保持器に記憶された後、次のサイクルにおいて、第2ロード/ストア部230に転送される。
そして、この第2ロード/ストア部230の結果が第5レジスタファイル部510のレジスタ(fr4)に書き込まれるよう、ネットワークの設定を行なう。
条件分岐命令(beq)は、図9に示した第1行目の命令コードに記述された減算命令(subicc)の結果に伴う条件コード(icc0)が0であったことを示している場合、edge exitに分岐する機械語命令である。アレイ動作ではない通常動作時(非アレイ動作時)には、従来の条件分岐命令として実行される。
一方、アレイ動作時には、この条件コード(icc0)を上述した「アレイ動作終結条件」として利用する。この減算結果が0であったことを示している場合、アレイ動作を終結し、通常動作(非アレイ動作)に復帰するトリガ(ARRAY-ABORT信号)となる。
なお、第1演算装置120による減算命令結果に伴う条件コード(icc0)は、第1演算装置120から第2演算装置220にバイパスできるため、最終的には、第3レジスタファイル部310のレジスタ(icc0)に書き込む必要がなくなる。
次に、図12において、図9に示した命令コードの第3行目の機械語命令が解釈されている。なお、図12では、この第3行目の命令コードに基づく設定箇所を「S3」で示している。
この第3行目の命令コードは、2つのロード命令(ld)と、1つのSAD命令(sad)が記述されている。
第1のロード命令(ld)は、レジスタ(gr4)の内容と定数(-1276)を加算し、その結果を主記憶アドレスとして第3キャッシュメモリ340を参照し、読み出した値をレジスタ(fr5)に格納する。
このための演算器ネットワークとして、先ず、第2レジスタファイル部210のレジスタ(gr4)を第3レジスタファイル部310のレジスタ(gr4)に転送する設定が行なわれる。
そして、第3レジスタファイル部310のレジスタ(gr4)を読み出し、第3演算装置320に属する演算器(第1EAG)に入力する設定を行なう。
さらに、第1EAGの加算結果は、第1EAGの保持器に記憶された後、次のサイクルにおいて、第3ロード/ストア部330に転送される。
そして、第3ロード/ストア部330の結果が第6レジスタファイル部610のレジスタ(fr5)に書き込まれるよう、ネットワークの設定を行なう。
第2のロード命令(ld)は、第1のロード命令(ld)と同様に、第3レジスタファイル部310のレジスタ(gr4)の内容と定数(1276)(const.)を加算し、その結果を主記憶アドレスとして第3キャッシュメモリ340を参照し、読み出した値を第6レジスタファイル部610のレジスタ(fr6)に格納する。
このための演算器ネットワークとして、第3レジスタファイル部310からレジスタ(gr4)を読み出し、第3演算装置320に属する演算器(第2EAG)に入力する設定を行なう。
さらに、第2EAGの加算結果は、第2EAGの保持器に記憶された後、次のサイクルにおいて、第3ロード/ストア部330に転送される。
そして、第3ロード/ストア部330の結果が、第6レジスタファイル部610のレジスタ(fr6)に書き込まれるよう、ネットワークの設定を行なう。
SAD命令(sad)は、先に第1ロード/ストア部130によりロードされた第4レジスタファイル部410のレジスタ(fr1)及びレジスタ(fr2)のバイト毎差分絶対総和を求め、その結果を第5レジスタファイル部510のレジスタ(fr1)に書き込む機械語命令である。
第1ロード/ストア部130と第3演算装置320間のバイパスを利用すれば、第1ロード/ストア部130が第4レジスタファイル部410のレジスタ(fr1)及びレジスタ(fr2)の書き込みを行なうのと同時に、第3演算装置320に対しても入力(ld-bypass)することができる。このため、最終的には、第4レジスタファイル部410のレジスタ(fr1)及びレジスタ(fr2)からの読み出しは不要となる。
そして、SAD命令(sad)の結果が第5レジスタファイル部510のレジスタ(fr1)に書き込まれるよう、演算器ネットワークを設定する。
次に、図13において、図9に示した命令コードの第4行目の機械語命令が解釈されている。なお、図13では、この第4行目の命令コードに基づく設定箇所を「S4」で示している。
この第4行目の命令コードは、2つのロード命令(ld)と、1つのaddi命令と、1つのSAD命令(sad)が記述されている。
第1のロード命令(ld)は、レジスタ(gr4)の内容と定数(-4)(const.)を加算し、その結果を主記憶アドレスとして第4キャッシュメモリ440を参照し、読み出した値を第7レジスタファイル部710のレジスタ(fr7)に格納する。
このための演算器ネットワークとして、先ず、第3レジスタファイル部310のレジスタ(gr4)を第4レジスタファイル部410のレジスタ(gr4)に転送する設定が行なわれる。
そして、第4レジスタファイル部410のレジスタ(gr4)を読み出し、第4演算装置420に属する演算器(第1EAG)に入力する設定を行なう。
さらに、第1EAGの加算結果は、第1EAGの保持器に記憶された後、次のサイクルにおいて、第4ロード/ストア部430に転送される。
そして、第4ロード/ストア部430の結果が、第7レジスタファイル部710のレジスタ(fr7)に書き込まれるよう、ネットワークの設定を行なう。
第2のロード命令(ld)は、第1のロード命令(ld)と同様に、第3レジスタファイル部310のレジスタ(gr4)の内容と定数(4)(const.)を加算し、その結果を主記憶アドレスとして第4キャッシュメモリ440を参照し、読み出した値を第7レジスタファイル部710のレジスタ(fr8)に格納する。
このための演算器ネットワークとして、第4レジスタファイル部410のレジスタ(gr4)を読み出し、第4演算装置420に属する演算器(第2EAG)に入力する設定を行なう。
さらに、第2EAGの加算結果は、第2EAGの保持器に記憶された後、次のサイクルにおいて、第4ロード/ストア部430に転送される。
そして、第4ロード/ストア部430の結果が、第7レジスタファイル部710のレジスタ(fr9)に書き込まれるよう、ネットワークの設定を行なう。
SAD命令(sad)は、先に第2ロード/ストア部230によりロードされた第5レジスタファイル部510のレジスタ(fr3)及びレジスタ(fr4)のバイト毎差分絶対総和を求め、その結果を第6レジスタファイル部610のレジスタ(fr3)に書き込む機械語命令である。
第2ロード/ストア部230と第4演算装置420間のバイパスを利用すれば、第2ロード/ストア部230が第5レジスタファイル部510のレジスタ(fr3)及びレジスタ(fr4)の書き込みを行なうのと同時に、第4演算装置420に対しても入力(ld-bypass)することができる。このため、最終的には、第5レジスタファイル部510のレジスタ(fr3)及びレジスタ(fr4)からの読み出しは不要となる。
そして、SAD命令(sad)の結果が第6レジスタファイル部610のレジスタ(fr3)に書き込まれるよう、演算器ネットワークを設定する。
addi命令は、レジスタ(gr4)のアドレスを更新する機械語命令である。
このaddi命令が検出されると、レジスタ(gr4)を使用する演算装置である第1〜第4演算装置120〜420に対し、フィードバックループが生成される。これらフィードバックループ生成により、第1〜第4演算装置120〜420のロードアドレスが自動的に更新される。
次に、図14においては、図9に示した命令コードの第5行目の機械語命令が解釈されている。なお、図14では、この第5行目の命令コードに基づく設定箇所を「S5」で示している。
この第5行目の命令コードは、1つのSAD命令(sad)と、1つの加算命令(madd)が記述されている。
SAD命令(sad)は、先に第3ロード/ストア部330によりロードされた第6レジスタファイル部610のレジスタ(fr5)及びレジスタ(fr6)のバイト毎差分絶対総和を求め、その結果を第7レジスタファイル部710のレジスタ(fr5)に書き込む機械語命令である。
第3ロード/ストア部330と第5演算装置520間のバイパスを利用すれば、第3ロード/ストア部330が第6レジスタファイル部610のレジスタ(fr5)及びレジスタ(fr6)の書き込みを行なうのと同時に、第5演算装置520に対しても入力(ld-bypass)することができる。このため、最終的には、第6レジスタファイル部610のレジスタ(fr5)及びレジスタ(fr6)からの読み出しは不要となる。
そして、SAD命令(sad)の結果が第7レジスタファイル部710のレジスタ(fr5)に書き込まれるよう、演算器ネットワークを設定する。
加算命令(madd)は、先のSAD命令(sad)の結果を第7レジスタファイル部710のレジスタ(fr1)に累算する機械語命令である。
第5レジスタファイル部510のレジスタ(fr1)については、第5レジスタファイル部510と第5演算装置520間のバイパスを利用できないため、第5レジスタファイル部510から読み出し、第6レジスタファイル部610のレジスタ(fr3)については、第4演算装置420による直前の演算結果をバイパス(fr3-bypass)し、第5演算装置520に入力できる。
第5演算装置520の演算結果が第7レジスタファイル部710のレジスタ(fr1)に格納されるよう、演算器ネットワークを設定する。
次に、図15においては、図9に示した命令コードの第6行目の機械語命令が解釈される。なお、図15では、この第6行目の命令コードに基づく設定箇所を「S6」で示している。
この第6行目の命令コードは、1つのSAD命令(sad)と、1つの加算命令(madd)が記述されている。
SAD命令(sad)は、先に第4ロード/ストア部430によりロードされた第7レジスタファイル部710のレジスタ(fr7)及びレジスタ(fr8)のバイト毎差分絶対総和を求め、その結果を第8レジスタファイル部810のレジスタ(fr7)に書き込む機械語命令である。
第4ロード/ストア部430と第6演算装置620間のバイパスを利用すれば、第4ロード/ストア部430が第7レジスタファイル部710のレジスタ(fr7)及びレジスタ(fr8)の書き込みを行なうと同時に、第6演算装置620に対しても入力(ld-bypass)することができる。このため、最終的には、第7レジスタファイル部710のレジスタ(fr7)及びレジスタ(fr8)からの読み出しは不要となる。
そして、SAD命令(sad)の結果が第8レジスタファイル部810のレジスタ(fr7)に書き込まれるよう、演算器ネットワークを設定する。
加算命令(madd)は、先のSAD命令(sad)の結果を第8レジスタファイル部810のレジスタ(fr1)に累算する機械語命令である。
第7レジスタファイル部710のレジスタ(fr1)及びレジスタ(fr5)については、第5演算装置520による直前の演算結果をバイパス(fr5、1-bypass)し、第6演算装置620に入力できる。
第6演算装置620の演算結果が第8レジスタファイル部810のレジスタ(fr1)に格納されるよう、演算器ネットワークを設定する。
次に、図16においては、図9に示した命令コードの第7行目の機械語命令が解釈される。なお、図16では、この第7行目の命令コードに基づく設定箇所を「S7」で示している。
この第7行目の命令コードでは、1つの加算命令(madd)が記述されている。
加算命令(madd)は、先のSAD命令(sad)の結果を第9レジスタファイル部910のレジスタ(fr1)に累算する機械語命令である。
第8レジスタファイル部810のレジスタ(fr1)及びレジスタ(fr7)については、第6演算装置620による直前の演算結果をバイパス(fr7、1-bypass)し、第7演算装置720に入力できる。
第7演算装置720の演算結果が第9レジスタファイル部910のレジスタ(fr1)に格納されるよう、演算器ネットワークを設定する。
次に、図17においては、図9に示した命令コードの第8行目の機械語命令が解釈される。なお、図17では、この第8行目の命令コードに基づく設定箇所を「S8」で示している。
この第8行目の命令コードでは、1つの補正命令(msum)が記述されている。
補正命令(msum)は、レジスタ(fr1)内部で上位下位など複数の部分和に分割されている結果を1つにマージする(部分和を合計して総和を求める)命令である。SAD命令(SAD)が1ワード中の複数バイトの組から求まる差分絶対値総和を一度に求めることが困難である場合に、この命令により最後に総和を求めることができる。
演算に必要なレジスタ(fr1)は、前段の第7演算装置720からバイパス(fr1-bypass)により第8演算装置820に入力され、第8演算装置820の演算結果が第10レジスタファイル部1010のレジスタ(fr1)に格納されるよう、演算器ネットワークを設定する。
次に、図18においては、図9に示した命令コードの第9行目の機械語命令が解釈される。なお、図18では、この第9行目の命令コードに基づく設定箇所を「S9」で示している。
この第9行目の命令コードでは、1つの条件付きセット命令(cset)が記述されている。
条件付きセット命令(cset)は、補正命令(msum)により求めた総和が、レジスタ(fr9)により与えられる閾値未満の場合に「0」、それ以外の場合に「1」を第11レジスタファイル部1110のレジスタ(fr1)に格納する命令である。
演算に必要なレジスタ(fr1)は前段の第8演算装置820からバイパス(fr1-bypass)により第9演算装置920に入力され、その閾値は第1レジスタファイル部110から順次転送されて第9レジスタファイル部910のレジスタ(fr9)に格納されていることを利用して、第9レジスタファイル部910のレジスタ(fr9)から読み出されるよう、また、第9演算装置920の演算結果が第11レジスタファイル部1110のレジスタ(fr1)に格納されるよう、演算器ネットワークを設定する。
次に、図19においては、図9に示した命令コードの第10行目の機械語命令が解釈される。なお、図19では、この第10行目の命令コードに基づく設定箇所を「S10」で示している。
この第10行目の命令コードでは、1つのストア命令(stb)と、1つのaddi命令と、1つの無条件分岐命令(bra)が記述されている。
ストア命令(stb)は、レジスタ(gr5)の内容と定数(0)(const.)を加算し、その結果を主記憶アドレスとしてストアバッファ(STBF)にデータを格納する。
このための演算器ネットワークとして、第10レジスタファイル部1010のレジスタ(gr5)を読み出し、第10演算装置1020に属する演算器(EAG)に入力する設定を行なう。
さらに、EAGの加算結果は、EAGの保持器に記憶された後、次のサイクルにおいて、第10ロード/ストア部1030に転送される。
ストアバッファ(STBF)の内容は、順次、外部メモリに対して出力される。
addi命令は、レジスタ(gr5)のアドレスを更新する機械語命令である。
この加算命令が検出されると、レジスタ(gr5)を使用する演算装置である第10演算装置1020に対し、フィードバックループが生成される。このフィードバックループ生成により、第10演算装置1020のストアアドレスが自動的に更新される。
無条件分岐命令(bra)を検出した場合、次に説明する、ネットワーク設定完了処理に移る。
次に、図20においては、最終的に不要となるネットワーク設定部分の削除が行なわれる。
上述したように、機械語命令を順次デコードしてネットワーク設定をインクリメンタルに進める場合、前段の演算装置の実行結果は、次段の演算装置にバイパスして利用する他に、次段のレジスタファイル部へ書き込んでおく必要がある。これは、演算装置の実行結果が、次段の演算装置に限らず、より後段の演算装置において使用される場合にも対応するためである。
しかし、ループ構造を全て把握した後には、不要なレジスタ値の伝搬は削除でき、最後に使用した演算装置以降は、レジスタへ書き込む必要もない。このようにして不要となるネットワークの設定箇所を削除することが、ネットワーク設定完了処理である。
具体的には、図20中の×部分が、最終的に不要と判断されたレジスタへの書き込みパスである。この場合、レジスタファイル部間の伝搬が残るのは、レジスタ(gr4)、レジスタ(gr5)及びレジスタ(fr9)のみとなる。
キャッシュメモリの内容の伝搬についても同様に、途中で打ち切ることができる。
以上説明したように、本発明におけるデータ処理装置及びそのデータ処理方法では、レジスタファイル部と、演算装置と、ロード/ストア部とからなる1組の基本構成を維持しつつ、複数組を縦列配置し、隣接するレジスタファイル部間において必要なレジスタ値を伝搬させる構成とする。
また、ロード/ストア部についても、複数組を縦列配置するとともに、隣接する小規模なキャッシュメモリ間において必要なデータを伝搬させる構成とする。
このようにすることにより、同時に動作するレジスタ数と演算装置数を線形に増加させつつ、任意の番号のレジスタ内容を任意の演算装置に供給する複雑さを1組の基本構成内に封じ込めることができる。
したがって、本発明におけるデータ処理装置及びそのデータ処理方法によれば、従来は不可能であった大規模な並列処理を実現することができる。
また、各組間のデータ伝搬を効率よく行なうと共に、既存のVLIW形式の機械語命令を用いることが可能となる。
なお、隣接するレジスタファイル間におけるレジスタ値の伝搬機能については、例えば、互いに同数の物理的なレジスタを配置する構成を用いることができる。また、より小数の物理的なレジスタと、各レジスタの番号の対応関係を保持する表とを組み合わせた構成も用いることができる。
同様に、隣接する小規模なキャッシュメモリ間におけるデータの伝搬機能については、キャッシュメモリ全体を一度に複製する構成を用いることができる。また、前段のキャッ
シュメモリから流れ込んでくる差分データのみを次段へ伝搬させることで、実質的に同一の内容を次段へ複製する構成を用いても良い。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて
得られる実施形態についても本発明の技術的範囲に含まれる。
なお、実施の形態は上述の他に、以下のようにも表現できる。
本発明におけるデータ処理装置は、機械語命令を解釈実行するデータ処理装置であって、機械語命令中に記述される複数のレジスタ番号に対応してデータを一時的に保持する複数のレジスタから構成される第1段のレジスタファイル装置と、該第1段のレジスタファイル装置から読み出した1つまたは複数のデータを入力として演算を行なう第1段の演算装置と、該第1段の演算装置の演算結果を一時的に保持する第1段の演算結果保持手段と、前記第1段のレジスタファイル装置と同量または同量以上のデータを保持する第2段のレジスタファイル装置と、該第2段のレジスタファイル装置から読み出した1つまたは複数のデータを入力として演算を行なう第2段の演算装置と、該第2段の演算装置の演算結果を一時的に保持する第2段の演算結果保持手段を備え、前記第2段のレジスタファイル装置は前記第1段のレジスタファイル装置の内容を入力とし、前記第2段の演算装置は前記第1段の演算結果保持手段の内容または前記第2段のレジスタファイル装置の内容を入力とし、前記第1段の演算装置と前記第2段の演算装置が一斉に動作する。
前記第1段のレジスタファイル装置と同量または同量以上のデータを保持する第3段のレジスタファイル装置と、該第3段のレジスタファイル装置から読み出した1つまたは複数のデータを入力として演算を行なう第3段の演算装置と、該第3段の演算装置の演算結果を一時的に保持する第3段の演算結果保持手段を備え、前記第3段のレジスタファイル装置は前記第1段の演算結果保持手段の内容または前記第2段のレジスタファイル装置の内容を入力とし、前記第3段の演算装置は前記第2段の演算結果保持手段の内容または前記第3段のレジスタファイル装置の内容を入力とし、前記第2段の演算装置と前記第3段の演算装置が一斉に動作することが好ましい。
Nを1以上の整数とする第N段のレジスタファイル装置と第N段の演算装置と第N段の演算結果保持手段を備え、第N段の演算結果保持手段の内容は、該内容を第(N+2)段以降の演算装置が使用する場合には第(N+2)段のレジスタファイル装置に書き込み、該内容を第(N+2)段以降の演算装置が使用しない場合には第(N+2)段のレジスタファイル装置に書き込むことなく第(N+1)段の演算装置の入力とすることが好ましい。
機械語命令を実行中に、Nを2以上の整数とする前記第N段のレジスタファイル装置と第N段の演算装置と第N段の演算結果保持手段の動作を開始させるアレイ動作開始命令を検出するまでの間、前記第1段のレジスタファイル装置と第1段の演算装置と第1段の演算結果保持手段のみを動作させ、前記アレイ動作開始命令を検出した場合、該命令に関連付けられる演算装置制御情報を前記第N段の演算装置にセットし、前記第N段のレジスタファイル装置と第N段の演算装置と第N段の演算結果保持手段の動作を開始させ、前記アレイ動作開始命令に指示されたアレイ動作終結条件に従って、前記第N段のレジスタファイル装置と第N段の演算装置と第N段の演算結果保持手段の動作を停止させることが好ましい。
前記第1段の演算装置が、外部メモリの内容を一時的に保持するキャッシュメモリと、ロード命令に付随するアドレス情報を用いて該キャッシュメモリを読み出す手段と、読み出したデータを一時的に格納する第1段のロード結果保持手段を備え、該ロード結果保持手段から読み出したデータを後段の演算装置またはレジスタファイル装置の入力とすることが好ましい。
Nを2以上の整数とする前記第N段の演算装置が、外部メモリの内容を一時的に保持するキャッシュメモリと、ロード命令に付随するアドレス情報を用いて該キャッシュメモリを読み出す手段と、読み出したデータを一時的に格納する第N段のロード結果保持手段を備え、該ロード結果保持手段から読み出したデータを後段の演算装置またはレジスタファイル装置の入力とし、さらに、第(N−1)段の演算装置が備えるキャッシュメモリの内容が次の時刻において第N段の演算装置が備えるキャッシュメモリに反映されることが好ましい。
前記ロード命令に付随するアドレス情報は、前記演算装置が備える、ロード命令に付随するアドレス情報を用いて該キャッシュメモリを読み出す手段に保持するとともに、1度のロード動作を完了する度に、保持したアドレス情報をロードデータ幅だけ増加または減少させることにより、自律的に連続アドレスからロードすることが好ましい。
前記第1段のキャッシュメモリが、複数のバンクから構成される外部メモリとの接続手段と、前記アレイ動作開始命令に関連付けられる書き込み先キャッシュメモリのベースアドレスと転送データ長から構成される転送情報に基づいてデータ転送を行なうデータ転送手段を備え、外部メモリ上の複数の互いに異なるアドレスから同時に複数のデータを前記第1段のキャッシュメモリへ連続転送することが好ましい。
複数のバンクから構成される前記外部メモリが、外部I/O装置との接続手段と、前記アレイ動作開始命令に関連付けられる書き込み先外部メモリのベースアドレスと転送ワード数から構成される転送情報に基づいてデータ転送を行なうデータ転送手段を備え、外部I/O装置から複数のデータを前記外部メモリの最も古いバンクへ連続転送することが好ましい。
前記ロード命令に付随するアドレス情報に対応する領域が前記第1段のキャッシュメモリに存在しない場合、外部メモリから該キャッシュメモリへのデータ転送を待ち合わせ、前記アレイ動作開始命令に関連付けられる転送ワード数に関連する回数だけ、後段の演算装置が動作したことをもって前記アレイ動作終結条件とすることが好ましい。
演算結果をストア命令により前記外部メモリまたは前記外部I/O装置に格納するか、または、別の外部メモリに格納するか、または、別のN段アレイ構成の第1のキャッシュメモリへの入力とすることが好ましい。
以上のように、本発明におけるデータ処理装置は、複数の機械語命令からなる命令コードを実行するためのデータ処理装置であって、前記命令コードを保持する命令メモリ部と、前記命令メモリ部から前記命令コードを取り出してデコードする命令フェッチ/デコード部と、前記命令フェッチ/デコード部によりデコードされる前記命令コードに記述された複数のレジスタ番号の各々に一対一に対応し、且つ、前記各レジスタ番号に対応するデータを一時的に保持する複数の第1レジスタを含む第1レジスタファイル部と、前記第1レジスタファイル部の各第1レジスタと一対一に対応する複数の第2レジスタを含む第2レジスタファイル部と、を含むn(nは1以上の整数)個のレジスタファイル部と、前記第1レジスタファイル部の各第1レジスタの読み出しデータを用いて演算を実行する第1演算部と、第2演算部と、を含むn個の演算部と、前記第1演算部の演算結果を一時的に保持する第1保持部を含むn個の保持部とを備え、前記第1レジスタファイル部は、自身の各第1レジスタがデータを保持する場合には、データを保持する第1レジスタに対応する前記第2レジスタファイル部の第2レジスタに当該データを転送すると共に、前記第1保持部は、自身が保持する演算結果を前記第2演算部に転送可能となっており、前記第2演算部は、前記第2レジスタファイル部の各第2レジスタの読み出しデータ及び前記第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個の演算部は、第3演算部をさらに含み、前記n個の保持部は、前記第2演算部の演算結果を一時的に保持する第2保持部をさらに含んでおり、前記第2レジスタファイル部は、自身の各第2レジスタがデータを保持する場合には、データを保持する第2レジスタに対応する前記第3レジスタファイル部の第3レジスタに当該データを転送すると共に、前記第2保持部は、自身が保持する演算結果を前記第3演算部に転送可能となっており、前記第3演算部は、前記第3レジスタファイル部の各第3レジスタの読み出しデータ及び前記第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個の演算部に含まれる(N+2)番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記n個のレジスタファイル部に含まれる(N+2)番目のレジスタファイル部に転送する一方、自身が保持する演算結果が前記(N+2)番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記n個の演算部に含まれる(N+1)番目の演算部に転送することが好ましい。
この場合、N番目の保持部が保持する演算結果が(N+2)番目以降の演算部による演算実行に用いられない場合には(N+1)番目の演算部に転送しているので、この場合、レジスタファイル部間における不要なデータ転送が低減され、その結果、消費電力をより低下させることができる。
前記命令フェッチ/デコード部が前記n個のレジスタファイル部に含まれる複数のレジスタファイル部、前記n個の演算部に含まれる複数の演算部、前記n個の保持部に含まれる複数の保持部の各々を同時に動作させるべく記述された命令コードに含まれる動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、且つ、前記命令フェッチ/デコード部の動作を停止させることが好ましい。
この場合、複数のレジスタファイル部、複数の演算部及び複数の保持部を同時に動作させる「アレイ動作」を動作命令のデコード結果に基づいて行なうことができるので、これらの同時動作をより効率的に開始させることができる。
前記動作命令は、同時に動作させるべき前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の各動作を制御するために、各々に設定すべき設定情報と、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の同時動作を停止すべき動作終結条件と、を含み、前記命令フェッチ/デコード部が前記動作命令をデコードするまでは、前記命令フェッチ/デコード部、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を同時に動作させ、前記動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて、前記命令フェッチ/デコード部の動作を停止させ、且つ、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、前記動作命令に含まれる前記動作終結条件が満たされると、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を除く前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の動作を停止させ、且つ、前記命令フェッチ/デコード部、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を同時に動作させるが好ましい。
この場合、動作命令のデコード結果に基づき開始された、複数のレジスタファイル部、複数の演算部及び複数の保持部の同時動作を、動作終結条件が満たされるか否かにより停止させることができる。このため、命令フェッチ/デコード部の動作が停止していても、前記命令フェッチ/デコード部、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を同時に動作させる「非アレイ動作」に戻すことができる。
前記n個の演算部の各々は、前記データ処理装置の外部に配置された外部メモリの内容を一時的に保持するキャッシュメモリと、前記命令コードに含まれる前記ロード命令に付随するアドレス情報を用いて前記キャッシュメモリを読み出すロード部と、前記ロード部により読み出されたデータを一時的に保持するストア部とを有し、前記n個の演算部に含まれるN番目の演算部は、自身のストア部が保持するデータを前記n個の演算部に含まれる(N+1)番目以降の演算部及び前記n個のレジスタファイル部に含まれる(N+1)番目以降のレジスタファイル部に転送可能となっていることが好ましい。
この場合、N番目の演算部のストア部が保持するデータが(N+1)番目以降の演算部及び(N+1)番目以降のレジスタファイル部に転送可能であるので、(N+1)番目以降の演算部はN番目の演算部による読み出しデータを用いた演算を早期に開始することができ、その結果、各演算部による演算をより高速化させることができる。
前記n個の演算部に含まれるN番目の演算部は、自身のキャッシュメモリがデータを保持する場合には、前記n個の演算部に含まれる(N+1)番目の演算部のキャッシュメモリに転送可能となっていることが好ましい。
この場合、N番目の演算部のキャッシュメモリが(N+1)番目の演算部のキャッシュメモリに転送可能であるので、(N+1)番目の演算部はN番目の演算部のキャッシュメモリに保持されたデータを用いた演算を早期に開始することができ、その結果、各演算部による演算をより高速化させることができる。
前記n個の演算部の各々は、自身のロード部による前記キャッシュメモリの読み出しを行なう場合には、前記ロード命令に付随するアドレス情報を保持すると共に、前記ロード部による読み出しが完了する度に、前記保持したアドレス情報を読み出されたデータ幅だけ増加または減少させて、前記ロード部による次の読み出しのためのアドレス情報を生成することが好ましい。
この場合、各演算部は、次の読み出しのためのアドレス情報を自身で生成することができるので、新たなアドレス情報を取得することなく、次の演算を実行することができるので、各演算部による演算をより高速化させることができる。
前記第1演算部は、前記データ処理装置の外部に配置された外部メモリと直接接続された前記キャッシュメモリを有し、前記キャッシュメモリは、前記動作命令に関連付けられる書き込み先アドレスと転送データ長とからなる転送情報に基づいてデータ転送を行なうデータ転送手段、を有し、前記データ転送手段は、前記外部メモリ上における互いに異なる複数のアドレスから同時に複数のデータを連続転送することが好ましい。
この場合、外部メモリ上におけるデータをより効率よくキャッシュメモリに転送することができるので、各演算部による演算をより高速化させることができる。
前記外部メモリは、前記動作命令に関連付けられる書き込み先アドレスと転送ワード数とからなる転送情報に基づいてデータ転送を行なうデータ転送手段、を有し、前記データ転送手段は、外部I/O装置から複数のデータを前記外部メモリの最も古いバンクへ連続転送することが好ましい。
この場合、外部I/O装置からデータをより効率よく外部メモリに転送することができるので、キャッシュメモリのデータ更新が効率化され、その結果、各演算部による演算をより高速化させることができる。
前記第1演算部は、自身のキャッシュメモリに前記ロード命令に付随するアドレス情報に対応する領域が存在しない場合には、外部メモリからのデータ転送を待機すると共に、2番目以降の演算部が前記動作命令に関連付けられる転送ワード数に応じた回数だけ動作したことを前記動作終結条件とすることが好ましい。
この場合、アレイ構造の先頭段である第1演算部においてのみ、データの待ち合わせを行なうので、データ処理装置全体の構成を簡略化することができる。さらに、複数の動作終結条件が存在する場合に、各段に分散して演算を行なうことによる高速化を実現することができる。
本発明は、複数の機械語命令を高速に同時実行するデータ処理装置に好適に利用することができる。
10 命令メモリ部
20 命令フェッチ部(命令フェッチ/デコード部)
30 命令デコード部(命令フェッチ/デコード部)
101、102、103、104、105、106、107、108 データ処理装置
110、210、310、410、510、610、710、810、910、1010、1110 レジスタファイル部
120、220、320、420、520、620、720、820、920、1020 演算装置(演算部、保持部)
130、230、330、430、1030 ロード/ストア部(ロード部、ストア部)
130、230、330、430 キャッシュメモリ
150 外部メモリ

Claims (11)

  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演算部により実行される演算と並列処理することを特徴とするデータ処理装置。
  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演算部により実行される演算と並列処理することを特徴とする請求項1に記載のデータ処理装置。
  3. 前記n個の保持部に含まれるN(Nは1以上の整数であって、n以下)番目の保持部は、
    自身が保持する演算結果が前記n個の演算部に含まれる(N+2)番目以降の演算部による演算実行に用いられる場合には、当該演算結果を前記n個のレジスタファイル部に含まれる(N+2)番目のレジスタファイル部に転送する一方、
    自身が保持する演算結果が前記(N+2)番目以降の演算部による演算実行に用いられない場合には、当該演算結果を前記n個の演算部に含まれる(N+1)番目の演算部に転送することを特徴とする請求項1または2に記載のデータ処理装置。
  4. 前記命令フェッチ/デコード部が前記n個のレジスタファイル部に含まれる複数のレジスタファイル部、前記n個の演算部に含まれる複数の演算部、前記n個の保持部に含まれる複数の保持部の各々を同時に動作させるべく記述された命令コードに含まれる動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、且つ、前記命令フェッチ/デコード部の動作を停止させることを特徴とする請求項1〜3のいずれか1項に記載のデータ処理装置。
  5. 前記動作命令は、同時に動作させるべき前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の各動作を制御するために、各々に設定すべき設定情報と、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の同時動作を停止すべき動作終結条件と、を含み、
    前記命令フェッチ/デコード部が前記動作命令をデコードするまでは、前記命令フェッチ/デコード部、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を同時に動作させ、
    前記動作命令をデコードした場合に、前記動作命令のデコード結果に基づいて、前記命令フェッチ/デコード部の動作を停止させ、且つ、前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部を同時に動作させ、
    前記動作命令に含まれる前記動作終結条件が満たされると、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を除く前記複数のレジスタファイル部、前記複数の演算部及び前記複数の保持部の動作を停止させ、且つ、前記命令フェッチ/デコード部、前記第1レジスタファイル部、前記第1演算部及び前記第1保持部を同時に動作させることを特徴とする請求項4に記載のデータ処理装置。
  6. 前記n個の演算部の各々は、
    前記データ処理装置の外部に配置された外部メモリの内容を一時的に保持するキャッシュメモリと、
    前記命令コードに含まれるロード命令に付随するアドレス情報を用いて前記キャッシュメモリを読み出すロード部と、
    前記ロード部により読み出されたデータを一時的に保持するストア部と
    を有し、
    前記n個の演算部に含まれるN番目の演算部は、自身のストア部が保持するデータを前記n個の演算部に含まれる(N+1)番目以降の演算部及び前記n個のレジスタファイル部に含まれる(N+1)番目以降のレジスタファイル部に転送可能となっていることを特徴とする請求項1〜5のいずれか1項に記載のデータ処理装置。
  7. 前記n個の演算部に含まれるN番目の演算部は、自身のキャッシュメモリがデータを保持する場合には、前記n個の演算部に含まれる(N+1)番目の演算部のキャッシュメモリに転送可能となっていることを特徴とする請求項6に記載のデータ処理装置。
  8. 前記n個の演算部の各々は、自身のロード部による前記キャッシュメモリの読み出しを行なう場合には、前記ロード命令に付随するアドレス情報を保持すると共に、前記ロード部による読み出しが完了する度に、前記保持したアドレス情報を読み出されたデータ幅だけ増加または減少させて、前記ロード部による次の読み出しのためのアドレス情報を生成することを特徴とする請求項6または7に記載のデータ処理装置。
  9. 前記第1演算部は、前記データ処理装置の外部に配置された外部メモリと直接接続されたキャッシュメモリを有し、
    前記キャッシュメモリは、前記動作命令に関連付けられる書き込み先アドレスと転送データ長とからなる転送情報に基づいてデータ転送を行なうデータ転送手段を有し、
    前記データ転送手段は、前記外部メモリ上における互いに異なる複数のアドレスから同時に複数のデータを連続転送することを特徴とする請求項4または5に記載のデータ処理装置。
  10. 前記外部メモリは、前記動作命令に関連付けられる書き込み先アドレスと転送ワード数とからなる転送情報に基づいてデータ転送を行なうデータ転送手段を有し、
    前記データ転送手段は、外部I/O装置から複数のデータを、前記外部メモリを構成する複数のバンクのうち最も古いデータを格納するバンクへ連続転送することを特徴とする請求項9に記載のデータ処理装置。
  11. 前記第1演算部は、自身のキャッシュメモリに前記ロード命令に付随するアドレス情報に対応するデータが存在しない場合には、外部メモリからのデータ転送を待機すると共に、2番目以降の演算部が前記動作命令に関連付けられる転送ワード数に応じた回数だけ動作したことを前記動作終結条件とすることを特徴とする請求項5に記載のデータ処理装置。
JP2010533819A 2008-10-14 2009-10-13 データ処理装置 Active JP5279046B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010533819A JP5279046B2 (ja) 2008-10-14 2009-10-13 データ処理装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008265312 2008-10-14
JP2008265312 2008-10-14
PCT/JP2009/005306 WO2010044242A1 (ja) 2008-10-14 2009-10-13 データ処理装置
JP2010533819A JP5279046B2 (ja) 2008-10-14 2009-10-13 データ処理装置

Publications (2)

Publication Number Publication Date
JPWO2010044242A1 JPWO2010044242A1 (ja) 2012-03-15
JP5279046B2 true JP5279046B2 (ja) 2013-09-04

Family

ID=42106414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010533819A Active JP5279046B2 (ja) 2008-10-14 2009-10-13 データ処理装置

Country Status (5)

Country Link
US (1) US20110264892A1 (ja)
EP (1) EP2352082B1 (ja)
JP (1) JP5279046B2 (ja)
KR (1) KR101586770B1 (ja)
WO (1) WO2010044242A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6164616B2 (ja) * 2012-03-16 2017-07-19 国立大学法人 奈良先端科学技術大学院大学 データ供給装置及びデータ処理装置
KR101975534B1 (ko) 2012-09-11 2019-05-07 삼성전자주식회사 연산기능을 갖는 반도체 메모리 장치
GB2519108A (en) * 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
GB2576572B (en) * 2018-08-24 2020-12-30 Advanced Risc Mach Ltd Processing of temporary-register-using instruction
GB2584268B (en) * 2018-12-31 2021-06-30 Graphcore Ltd Load-Store Instruction
US11237827B2 (en) * 2019-11-26 2022-02-01 Advanced Micro Devices, Inc. Arithemetic logic unit register sequencing
US11862289B2 (en) 2021-06-11 2024-01-02 International Business Machines Corporation Sum address memory decoded dual-read select register file

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
JP2001147799A (ja) * 1999-10-01 2001-05-29 Hitachi Ltd データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
JP2003099249A (ja) * 2001-07-17 2003-04-04 Sanyo Electric Co Ltd データ処理装置
JP2005539293A (ja) * 2002-08-16 2005-12-22 カーネギー−メロン ユニバーシティ 部分的にグローバルなコンフィギュレーションバスを用いたプログラマブルパイプラインファブリック

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0883264A (ja) 1994-09-12 1996-03-26 Nippon Telegr & Teleph Corp <Ntt> 1次元シストリックアレイ型演算器とそれを用いたdct/idct演算装置
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
JP2000259609A (ja) * 1999-03-12 2000-09-22 Hitachi Ltd データ処理プロセッサおよびシステム
JP3674515B2 (ja) 2000-02-25 2005-07-20 日本電気株式会社 アレイ型プロセッサ
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US7069372B1 (en) * 2001-07-30 2006-06-27 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets
JP3528922B2 (ja) 2001-08-31 2004-05-24 日本電気株式会社 アレイ型プロセッサ、データ処理システム
US20040128482A1 (en) * 2002-12-26 2004-07-01 Sheaffer Gad S. Eliminating register reads and writes in a scheduled instruction cache
US8024549B2 (en) * 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
JP2001147799A (ja) * 1999-10-01 2001-05-29 Hitachi Ltd データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
JP2003099249A (ja) * 2001-07-17 2003-04-04 Sanyo Electric Co Ltd データ処理装置
JP2005539293A (ja) * 2002-08-16 2005-12-22 カーネギー−メロン ユニバーシティ 部分的にグローバルなコンフィギュレーションバスを用いたプログラマブルパイプラインファブリック

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013019881; Schmit, H et.al: '"PipeRench: A virtualized programmable datapath in 0.18 micron technology"' Proceedings of the IEEE Custom Integrated Circuits Conference, 2002 , 20020515, pp.63-66 *

Also Published As

Publication number Publication date
WO2010044242A1 (ja) 2010-04-22
KR20110084915A (ko) 2011-07-26
US20110264892A1 (en) 2011-10-27
EP2352082A4 (en) 2012-04-11
JPWO2010044242A1 (ja) 2012-03-15
EP2352082B1 (en) 2018-11-28
KR101586770B1 (ko) 2016-01-19
EP2352082A1 (en) 2011-08-03

Similar Documents

Publication Publication Date Title
JP5279046B2 (ja) データ処理装置
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
JPH0628184A (ja) ブランチ予測方法及びブランチプロセッサ
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
US5274777A (en) Digital data processor executing a conditional instruction within a single machine cycle
JPH06103068A (ja) データ処理装置
US20220171630A1 (en) Apparatus and method
CN112074810B (zh) 并行处理设备
JPH08221273A (ja) 命令レベルの並列処理制御方法およびプロセッサ
US20060200648A1 (en) High-level language processor apparatus and method
JP4771079B2 (ja) Vliw型プロセッサ
US8631173B2 (en) Semiconductor device
US6981130B2 (en) Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
JP5630798B1 (ja) プロセッサーおよび方法
US20090249028A1 (en) Processor with internal raster of execution units
US20150254076A1 (en) Data processing apparatus and method for performing vector scan operation
WO2020199094A1 (zh) 一种指令集的执行方法和计算装置
JP3771682B2 (ja) ベクトル処理装置
JP2001216275A (ja) 画像処理装置および画像処理方法
JP7141401B2 (ja) プロセッサおよび情報処理システム
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
RU2198422C2 (ru) Асинхронная синергическая вычислительная система
JP2006285721A (ja) 演算処理装置および演算処理方法
Singhvi et al. Pipeline Hazards and its Resolutions
US20060206695A1 (en) Data movement within a processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120705

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: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130516

R150 Certificate of patent or registration of utility model

Ref document number: 5279046

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250