JP4696540B2 - コンピュータ、データ処理方法およびプログラム - Google Patents

コンピュータ、データ処理方法およびプログラム Download PDF

Info

Publication number
JP4696540B2
JP4696540B2 JP2004348625A JP2004348625A JP4696540B2 JP 4696540 B2 JP4696540 B2 JP 4696540B2 JP 2004348625 A JP2004348625 A JP 2004348625A JP 2004348625 A JP2004348625 A JP 2004348625A JP 4696540 B2 JP4696540 B2 JP 4696540B2
Authority
JP
Japan
Prior art keywords
data
vector data
register file
circuit
instruction
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.)
Expired - Fee Related
Application number
JP2004348625A
Other languages
English (en)
Other versions
JP2006155490A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2004348625A priority Critical patent/JP4696540B2/ja
Publication of JP2006155490A publication Critical patent/JP2006155490A/ja
Application granted granted Critical
Publication of JP4696540B2 publication Critical patent/JP4696540B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、定数行列データを生成するコンピュータ、データ処理方法およびプログラムに関する。
例えば、プロセッサにより単位行列を生成する際に使用されるプログラムは、行列の要素数と同数の行列の単一要素を生成する命令を内包することにより実現されていた。
そのため、プログラムの単位行列生成部の命令数は、生成する単位行列のサイズがnである場合にはn個となる。
例えば、2x2の単位行列を生成する場合には下記表1に示すように4個の命令が必要になり、4x4の単位行列を生成する場合には下記表2に示すように16個の命令が必要になる。
[表1]
addi r1, r0, 1
addi r2, r0, 0
addi r3, r0, 0
addi r4, r0, 1
[表2]
addi r1, r0, 1
addi r2, r0, 0
addi r3, r0, 0
addi r4, r0, 0
addi r5, r0, 0
addi r6, r0, 1
addi r7, r0, 0
addi r8, r0, 0
addi r9, r0, 0
addi r10, r0, 0
addi r11, r0, 1
addi r12, r0, 0
addi r13, r0, 0
addi r14, r0, 0
addi r15, r0, 0
addi r16, r0, 1
しかしながら、上述したように、生成しようとする単位行列のサイズに対してn に比例して命令数が増大する。
そのため、プログラムの実行時間が長期化すると共に、プログラムの開発負荷が大きいという問題がある。
同様な問題は、単位行列以外の定数行列データを生成する場合にも生じる。
本発明は上述した従来技術の問題点を解決するために、定数行列データを従来に比べて少ない命令数で生成でき、それに伴う処理時間を短縮できるコンピュータ、データ処理方法およびプログラムを提供することを目的とする。
上述した従来技術の問題点を解決し、上述した目的を達成するため、第1の観点の発明のコンピュータは、数のレジスタ各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、入力される命令をデコードする命令デコーダとを有し、前記命令デコーダは、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードした場合、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定し、前記生成回路は、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を有し、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成し、前記レジスタファイルは、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する。
の観点の発明のデータ処理方法は、複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、入力される命令をデコードする命令デコーダとを有するコンピュータにおけるデータ処理方法であって、前記命令デコーダが、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードして、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定する第1工程と、前記生成回路が、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を用いて、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成する第2工程と、前記レジスタファイルが、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する第3工程とをする。
の観点の発明のプログラムは、複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、入力される命令をデコードする命令デコーダとを有するコンピュータに、前記命令デコーダが、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードして、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定する第1の手順と、前記生成回路が、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を用いて、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成する第2の手順と、前記レジスタファイルが、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する第3の手順とを実行させる。
本発明によれば、定数行列データを従来に比べて少ない命令数で生成でき、それに伴う処理時間を短縮できるコンピュータ、データ処理方法およびプログラムを提供することができる。
以下、本発明の実施形態に係わるコンピュータについて説明する。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
コンピュータ1が本発明のコンピュータの一例である。演算回路28が本発明の演算回路の一例である。
繰り返し制御回路18、第1データ変更回路24および第2データ変更回路26が本発明の生成回路の一例である。
命令デコーダ14が本発明の制御回路の一例である。
また、本実施形態の単位行列データが、本発明の定数行列データの一例である。
また、本実施形態の第1読出しベクトルデータRV21が本発明の定数ベクトルデータの一例である。
また、命令メモリ2が本発明の命令メモリの一例であり、レジスタファイル16が本発明のメモリまたはデータメモリの一例である。
また、本実施形態のプログラムPRGが本発明のプログラムの一例である。
図1は、本発明の実施態様に係わるコンピュータ1の全体構成図である。
図1に示すように、コンピュータ1は、例えば、命令メモリ2およびプロセッサ4を有する。
命令メモリ2は、RISC(Reduced Instruction Set Computer)アーキテクチャ型命令セットとして例えば3個のオペランドを有する32ビット固定長の命令COMDを記憶する。
図2は、命令メモリ2が記憶する命令COMDを説明するための図である。
図2に示すように、命令COMDは、1つの命令に、機能コードFUNC、サイズSIZE、書込みオペランドWOP、第1読出しオペランドROP1、並びに第2読出しオペランドROP2を有する。
機能コードFUNCは、命令COMDのオペコードであり、当該命令COMDにより実現される動作を示す。機能コードFUNCは、例えば、加算命令などの演算の種類や他の動作の種別などを規定する。
本実施形態において、機能コードとしては、例えば、クォータニオン積を示すqmul、内積を示すdot、乗算を示すmul、加算を示すadd、減算を示すsub、除算を示すdiv、比較を示すcmp、並びに単位行列生成を示すvmid がある。
書込みオペランドWOPは、書込みレジスタ指定データW_Rおよび書込み要素指定データWEIを有する。書込みレジスタ指定データW_Rは、演算結果ベクトルデータRUSであるベクトルデータを書き込むレジスタファイル16内のレジスタのアドレスを規定する。
書込み要素指定データWEIは、演算結果ベクトルデータRUSである内積器が出力するスカラー値を書き込みレジスタファイル16内のレジスタのアドレスを規定する。
書込みレジスタ要素数データWRNは、機能コードFUNCとサイズSIZEにより決定され、演算回路28が出力する演算結果ベクトルデータRUSを構成する要素データの数を示しており、本実施形態では「4」である。
第1読出しオペランドROP1は、第1読出しレジスタ指定データR_R1を有する。
第1読出しレジスタ指定データR_R1は、後述する第1サイズ変更回路20に読み出しを行う対象となるレジスタファイル16内のレジスタのアドレスを規定する。
第1読出しレジスタ要素数データRRN1は、機能コードFUNCとサイズSIZEにより決定され、第1サイズ変更回路20が読み出しを行うベクトルデータの要素数を規定しており、本実施形態では「4」である。
第2読出しオペランドROP2は、第2読出しレジスタ指定データR_R2を有する。
第2読出しレジスタ指定データR_R2は、後述する第2サイズ変更回路22に読み出しを行う対象となるレジスタファイル16内のレジスタのアドレスを規定する。
第2読出しレジスタ要素数データRRN2は、機能コードFUNCとサイズSIZEにより決定され、第2サイズ変更回路22が読み出しを行うベクトルデータの要素数を規定しており、本実施形態では「4」である。
繰り返し数データN_REPは、機能コードFUNCおよびサイズSIZEにより、後述する演算回路28が単数の命令FUNCを基に所定の演算を行う回数(1回以上)を示している。
コンピュータ1のプロセッサ4は、命令メモリ2から読み出した固定長命令に基づいて最大4つの演算を同時に水平実行するSIMD型プロセッサである。
なお、本実施形態では、一例として4演算の同時実行を想定して以下説明するが、これに限られず任意の数の演算を同時に実行するようにしても構わない。
図1に示すように、プロセッサ4は、例えば、プログラムカウンタ12、命令デコーダ14、レジスタファイル16、繰り返し制御回路18、第1サイズ変更回路20、第2サイズ変更回路22、第1データ変更回路24、第2データ変更回路26および演算回路28を有する。
[プログラムカウンタ12]
プログラムカウンタ12は、プロセッサ4が命令メモリ2から読み出す命令のアドレスADRを計数するカウンタである。
プロセッサ4は、プログラムカウンタ12が指し示す命令メモリ2内のアドレスADRから命令COMDを読み出し、これを命令デコーダ14に出力する。
[命令デコーダ14]
命令デコーダ14は、命令メモリ2から読み出した命令COMDをデコードして、命令COMDが規定する機能コードFUNCおよびサイズSIZEを基に、繰り返し数データN_REPを生成する。
命令デコーダ14は、機能コードFUNC、繰り返し数データN_REP、書込み要素指定データWEIおよび書込みレジスタ要素数データWRNを繰り返し制御回路18に出力する。
また、命令デコーダ14は、第1読出しレジスタ指定データR_R1、第2読出しレジスタ指定データR_R2、並びに書込みレジスタ指定データW_Rをレジスタファイル16に出力する。
また、命令デコーダ14は、第1読出しレジスタ要素数データRRN1を第1サイズ変更回路20および繰り返し制御回路18に出力する。
また、命令デコーダ14は、第2読出しレジスタ要素数データRRN2を第2サイズ変更回路22および繰り返し制御回路18に出力する。
具体的には、命令デコーダ14は、機能コードFUNCの種類に応じて、下記表3に示すパターンで、書込みレジスタ要素数データWRN、第1読出しレジスタ要素数データRRN1、第2読出しレジスタ要素数データRRN2、並びに繰り返し数データN_REPを生成する。
表3において、サイズは、図2に示す命令COMD内のサイズSIZEを示している。
Figure 0004696540
上記表3において、単数行列データ生成を示す命令vmidは、第1データ変更回路24において定数要素データを組み合わせて定数ベクトルデータを生成するため、第1読出しレジスタ要素数データRRN1および第2読出しレジスタ要素数データRRN2は「0」になっている。
[レジスタファイル16]
図3は、図1に示すレジスタファイル16を説明するための図である。
レジスタファイル16は、図3に示すように、命令デコーダ14から入力した第1読出しレジスタ指定データR_R1が指定するレジスタから予め決められた所定数(本実施形態では「4」)の要素データから構成される第1読出しベクトルデータRV1を読み出して第1サイズ変更回路20に出力する。このとき、レジスタファイル16は、第1の読出しベクトルデータRV1を構成する要素データを、繰り返し制御回路18から入力した読出しイネーブル信号RE_X,RE_Y,RE_Z,RE_Wにより指定されたX,Y,Z,W列のレジスタから読み出す。
レジスタファイル16は、図3に示すように、命令デコーダ14から入力した第2読出しレジスタ指定データR_R2が指定するレジスタから予め決められた所定数(本実施形態では「4」)の要素データから構成される第2読出しベクトルデータRV2を読み出して第2サイズ変更回路22に出力する。このとき、レジスタファイル16は、第2の読出しベクトルデータRV2を構成する要素データを、繰り返し制御回路18から入力した読出しイネーブル信号RE_X,RE_Y,RE_Z,RE_Wにより指定されたX,Y,Z,W列のレジスタから読み出す。
レジスタファイル16は、図3に示すように、演算回路28から入力した演算結果ベクトルデータRUSを、命令デコーダ14から入力した書込みレジスタ指定データW_Rが指定するレジスタに書き込む。このとき、レジスタファイル16は、演算結果ベクトルデータRUSを構成する要素データを、繰り返し制御回路18から入力した書込みイネーブル信号WE_X,WE_Y,WE_Z,WE_Wにより指定されたX,Y,Z,W列のレジスタに書き込む。
[繰り返し制御回路18]
図4は、図1に示す繰り返し制御回路18を説明するための図である。
図4に示すように、繰り返し制御回路18は、例えば、カウンタ51および演算制御回路52を有する。
カウンタ51は、命令デコーダ14から繰り返し数データN_REPを入力すると、初期値「1」を演算制御回路52に出力し、レジスタファイル16からレジスタデータの読出しが行われる度に、繰り返し数データN_REPが示す値になるまで、カウント値COUNTを1ずつインクリメントする。カウンタ51は、カウント値COUNTが、繰り返し数データN_REPが示す値になると、カウント値COUNTを「0」にリセットする。
カウンタ51は、カウント値COUNTを演算制御回路52に出力する。
演算制御回路52は、例えば、下記表4に示すように、レジスタファイル16から第1サイズ変更回路20に第1読出しベクトルデータRV1を読み出す際に、命令デコーダ14から入力した機能コードFUNCおよび第1読出しレジスタ要素数データRRN1に基づいて、読出しイネーブル信号RE_Xを生成し、これをレジスタファイル16に出力する。
演算制御回路52は、例えば、下記表4に示すように、レジスタファイル16から第2サイズ変更回路22に第2読出しベクトルデータRV2を読み出す際に、命令デコーダ14から入力した機能コードFUNCおよび第2読出しレジスタ要素数データRRN2に基づいて、読出しイネーブル信号RE_Xを生成し、これをレジスタファイル16に出力する。
Figure 0004696540
演算制御回路52は、命令デコーダ14から入力した機能コードFUNCおよびカウンタ51から入力したカウント値COUNTに基づいて、下記表5および表6に示すように、第1セレクト信号SWZ11〜14,ABS11〜14,CST11〜14および第1読出し符号反転信号NEG11〜14を生成し、これらを第1データ変更回路24に出力する。
また、演算制御回路52は、下記表5および表6に示すように、命令デコーダ14から入力した機能コードFUNCおよびカウンタ51から入力したカウント値COUNTに基づいて、下記表3に示すように、第2セレクト信号SWZ21〜24,ABS21〜24,CST21〜24および第2読出し符号反転信号NEG21〜24を生成し、これらを第2データ変更回路26に出力する。
また、命令デコーダ14は、下記表5および表6に示すように、命令デコーダ14から入力した機能コードFUNC、カウンタ51から入力したカウント値COUNT、書込み要素指定データWEI、並びに書込みレジスタ要素数データWRNに基づいて、書込みイネーブル信号WE_X,WE_Y,WE_Z,WE_Wを生成し、これらをレジスタファイル16に出力する。
また、命令デコーダ14は、下記表5および表6に示すように、機能コードFUNCに基づいて、演算セレクト信号A_Sを生成し、これを演算回路28に出力する。
Figure 0004696540
Figure 0004696540
なお、上記表5において、「XYZW」等は、例えば、図6に示す第1データ変更回路24および第2データ変更回路26内の処理回路71〜74が選択する要素データを示している。例えば、「XYZW」の場合には処理回路71が要素データXを選択し、処理回路72が要素データYを選択し、処理回路73が要素データZを選択し、処理回路74が要素データWを選択することを示している。
また、上記表5および表6において、「PPNP」等は、処理回路71〜74において符号反転回路88の結果を出力するか否かを示し、“P”の場合は符号反転回路88の結果を出力せず、“N”の場合は符号反転回路88の結果を出力する。
また、上記表5において、「en(WRN)」は、演算制御回路52が、下記表7に示すように、書込みレジスタ要素数データWRNに応じて、書込みイネーブル信号WE_X、WE_Y,WE_Z,WE_Wを生成することを示している。
Figure 0004696540
また、上記表5において、「en(WEI)」は、演算制御回路52が、下記表8に示すように、書込み要素指定データWEIに応じて、書込みイネーブル信号WE_X、WE_Y,WE_Z,WE_Wを生成することを示している。
Figure 0004696540
[第1サイズ変更回路20および第2サイズ変更回路22]
図5は、図1に示す第1サイズ変更回路20の構成図である。
図5に示すように、第1サイズ変更回路20は、例えば、セレクタ61,62,63,64、並びに要素数制御回路65を有する。
第1サイズ変更回路20は、第1レジスタ読出し数データRRN1に適合するように、第1読出しベクトルRV1の不要な要素データを強制的に「0」にする。
セレクタ61〜64は、それぞれ要素数制御回路65から入力したセレクタ信号S65_1〜S65_4を基に、割り当てられたセレクタ信号S65_1〜S65_4が第1の論理値(例えば、「1」)を示す場合にレジスタファイル16から読み出された第1読出しベクトルRV1のそれぞれ要素データX,Y,Z,Wを選択して出力し、第2の論理値(例えば、「0」)を示す場合に「0」を選択して出力する。
セレクタ61〜64から出力されたデータによって第2の読出しベクトルデータRV11が構成され、これが第1データ変更回路24に出力される。
要素数制御回路65は、命令デコーダ14から入力した第1レジスタ読出し数データRRN1に基づいて、セレクタ信号S65_1〜S65_4を生成する。
具体的には、要素数制御回路65は、第1レジスタ読出し数データRRN1が「4」を示す場合には、セレクタ信号S65_1〜S65_4を全て第1の論理値にする。
また、要素数制御回路65は、第1レジスタ読出し数データRRN1が「3」を示す場合には、セレクタ信号S65_1〜S65_3を第1の論理値にし、セレクタ信号S65_4を第2の論理値にする。
また、要素数制御回路65は、第1レジスタ読出し数データRRN1が「2」を示す場合には、セレクタ信号S65_1,S65_2を第1の論理値にし、セレクタ信号S65_3,S65_4を第2の論理値にする。
また、要素数制御回路65は、第1レジスタ読出し数データRRN1が「1」を示す場合には、セレクタ信号S65_1を第1の論理値にし、セレクタ信号S65_2〜S65_4を第2の論理値にする。
第2サイズ変更回路22は、命令デコーダ14から入力した第2レジスタ読出し数データRRN2に基づいて、第2読出しベクトルデータRV2を処理して第2読出しベクトルデータRV12を生成する点を除いて、第1サイズ変更回路20と同様の処理を行う。
[第1データ変更回路24および第2データ変更回路26]
図6は、図1に示す第1データ変更回路24の構成図である。
第1データ変更回路24は、繰り返し制御回路18から入力した第1セレクト信号SWZ11〜14,ABS11〜14,CST11〜14および第1読出し符号反転信号NEG11〜14に基づいて、第1サイズ変更回路20から入力した第1読出しベクトルデータRV11を処理して第1読出しベクトルデータRV21を生成したり、所定のサイズの単位行列データを生成する処理を行う。
図6に示すように、第1データ変更回路24は、処理回路71〜74を有する。
処理回路71は、繰り返し制御回路18から入力した第1セレクト信号SWZ11,ABS11,CST11および第1読出し符号反転信号NEG11に基づいて、必要に応じて第1読出しベクトルデータRV11を用いて、第1読出しベクトルデータRV21の要素データXを生成する。
処理回路72は、繰り返し制御回路18から入力した第1セレクト信号SWZ12,ABS12,CST12および第1読出し符号反転信号NEG12に基づいて、必要に応じて第1読出しベクトルデータRV11を用いて、第1読出しベクトルデータRV21の要素データYを生成する。
処理回路72は、繰り返し制御回路18から入力した第1セレクト信号SWZ13,ABS13,CST13および第1読出し符号反転信号NEG13に基づいて、必要に応じて第1読出しベクトルデータRV11を用いて、第1読出しベクトルデータRV21の要素データZを生成する。
処理回路72は、繰り返し制御回路18から入力した第1セレクト信号SWZ14,ABS14,CST14および第1読出し符号反転信号NEG14に基づいて、必要に応じて第1読出しベクトルデータRV11を用いて、第1読出しベクトルデータRV21の要素データWを生成する。
図7は、図6に示す処理回路71の構成図である。
図7に示すように、処理回路71は、例えば、セレクタ81,82,83,84,86,87,89、絶対値生成回路85、並びに符号反転回路88を有する。
セレクタ81は、繰り返し制御回路18から入力した第1セレクト信号SWZ11に基づいて、定数要素データ「0」,「1」,「2」,「3」のうち一つを選択してこれをセレクタ84に出力する。
セレクタ82は、繰り返し制御回路18から入力した第1セレクト信号SWZ11に基づいて、定数要素データ「1/2」,「1/3」,「1/4」,「1/6」のうち一つを選択してこれをセレクタ84に出力する。
セレクタ81は、繰り返し制御回路18から入力した第1セレクト信号SWZ11に基づいて、第1サイズ変更回路20から入力した第1読出しベクトルデータRV11の定数要素データX,Y,Z,Wのうち一つを選択してこれをセレクタ86に出力する。
セレクタ84は、繰り返し制御回路18から入力した第1セレクト信号ABS11に基づいて、セレクタ81と82のうち一方から入力したデータを選択してセレクタ87に出力する。
絶対値生成回路85は、セレクタ83から入力したデータの絶対値をセレクタ86に出力する。
セレクタ86は、繰り返し制御回路18から入力した第1セレクト信号ABS11に基づいて、セレクタ83から入力したデータと、絶対値生成回路85から入力したその絶対値とのうち一方を選択してセレクタ87に出力する。
セレクタ87は、繰り返し制御回路18から入力した第1セレクト信号CST11に基づいて、セレクタ84と86とのうち一方から入力したデータを符号反転回路88およびセレクタ89に出力する。
符号反転回路88は、セレクタ87から入力したデータの符号を反転させてセレクタ89に出力する。
セレクタ89は、繰り返し制御回路18からの符号反転信号NEG11に基づいて、セレクタ87から入力したデータと、符号反転回路88から入力したデータとのうち一方を選択して、第1読出しベクトルデータRV21の要素データXとして出力する。
処理回路72,73,74は、第1セレクト信号SWZ12〜14,ABS12〜14,CST12〜14、並びに符号反転信号NEG12〜14に基づいて、第1読出しベクトルデータRV21の要素データY,Z,Wを出力する点を除いて処理回路71と同じである。
なお、第2データ変更回路26は、第2読出しセレクト信号SW21−24,ABS21−24,CST21−24、並びに第2読出し符号反転信号NEG21−24に基づいて処理を行う点を除いて、第1データ変更回路24と同様の構成を有している。
[演算回路28]
図8は、図1に示す演算回路28の構成図である。
図8に示すように、演算回路28は、例えば、演算モジュール回路101,102,103,104、総和回路110、並びにセレクタ121,122,123,124を有する。
演算モジュール回路101は、加算器(+)、減算器(−)、乗算器(x)、除算器(÷)、並びに比較器(≦)を有する。
演算モジュール回路101は、第1データ変更回路24から入力した第1読出しベクトルデータRV21の要素データXと、第2データ変更回路26から入力した第2読出しベクトルデータRV22の要素データXとを用いた加算、減算、乗算、除算および比較演算を、加算器(+)、減算器(−)、乗算器(x)、除算器(÷)、並びに比較器(≦)を用いて並列に行い、その演算結果をそれぞれ並列にセレクタ121に出力する。
演算モジュール回路102,103,104は、演算モジュール回路101と同じ構成を有し、それぞれ要素データY,Z,Wを用いて演算を行い、それらの演算結果をそれぞれセレクタ122,123,124に出力する。
また、演算モジュール回路101〜104は、乗算器(x)の乗算結果を総和回路110にも出力する。
総和回路110は、演算モジュール回路101〜104から入力した乗算結果の総和を演算し、その結果をセレクタ121〜124に出力する。
セレクタ121〜124は、繰り返し制御回路18から入力した演算セレクト信号A_Sに基づいて、それぞれ演算モジュール回路101〜104から入力した加算、減算、乗算、除算および比較演算と、総和回路110からの総和演算結果とのうち一つを選択して、それぞれ演算結果ベクトルデータRUSの要素データX,Y,Z,Wとしてレジスタファイル16に出力する。
以下、コンピュータ1の動作例を説明する。
[第1の動作例]
当該動作例では、命令デコーダ14が命令COMDとして、4x4の単位行列を生成する命令vmidを実行した場合を説明する。
この場合には、命令デコーダ14は、命令vmidをデコードして、「4」を示す繰り返し数N_REPを繰り返し制御回路18に出力する。
繰り返し制御回路18は、図4に示すカウンタ51でカウント値を生成する。
繰り返し制御回路18は、当該動作例において、「1」〜「4」の全てのカウント値において、書込みイネーブル信号WE_X,WE_Y,WE_Z,WE_Wをアクティブ(「1」)にする。
また、繰り返し制御回路18は、カウント値が「1」の状態で、図6に示す第1データ変更回路24の処理回路71,72,73,74が、それぞれ「1」,「0」,「0」,「0」を出力するように、第1セレクト信号SWZ11〜14、ABS11〜14、CST11〜14および符号反転信号NEG11〜14を生成し、これを第1データ変更回路24に出力する。
繰り返し制御回路18は、「1」〜「4」の全てのカウント値において、図6に示す第2データ変更回路26の処理回路71,72,73,74が、それぞれ「0」,「0」,「0」,「0」を出力するように、第2セレクト信号SWZ21〜24、ABS21〜24、CST21〜24および符号反転信号NEG21〜24を生成し、これを第2データ変更回路26に出力する。
また、繰り返し制御回路18は、図8に示す演算回路28の演算モジュール回路101〜104が加算器(+)の演算結果をセレクタ121〜124で選択するように、演算セレクト信号A_Sを生成し、これを演算回路28に出力する。
これにより、「1」,「0」,「0」,「0」を示す要素データX,Y,Z,Wによってされる第1読出しベクトルデータRV21が第1データ変更回路24において生成され、これが演算回路28からそのまま演算結果ベクトルデータRUSとして出力される。
演算結果ベクトルデータRUSは、図9に示すレジスタファイル16内の書込みレジスタ指定データW_Rが指定するレジスタreg11〜14に書き込まれる。
このとき、第2データ変更回路26から演算回路28に出力される第2読出しベクトルデータRV2はゼロベクトルであるため、演算結果ベクトルデータRUSは、第1データ変更回路24が出力する第1読出しベクトルデータRV21と同じになる。
次に、繰り返し制御回路18は、カウント値が「2」の状態で、図6に示す第1データ変更回路24の処理回路71,72,73,74が、それぞれ「0」,「1」,「0」,「0」を出力するように、第1セレクト信号SWZ11〜14、ABS11〜14、CST11〜14および符号反転信号NEG11〜14を生成し、これを第1データ変更回路24に出力する。
これにより、「0」,「1」,「0」,「0」を示す要素データX,Y,Z,Wによって構成される演算結果ベクトルデータRUSが、図9に示すレジスタファイル16内のレジスタreg11〜14に隣接したレジスタreg21〜24に書き込まれる。
次に、繰り返し制御回路18は、カウント値が「3」の状態で、図6に示す第1データ変更回路24の処理回路71,72,73,74が、それぞれ「0」,「0」,「1」,「0」を出力するように、第1セレクト信号SWZ11〜14、ABS11〜14、CST11〜14および符号反転信号NEG11〜14を生成し、これを第1データ変更回路24に出力する。
これにより、「0」,「0」,「1」,「0」を示す要素データX,Y,Z,Wによって構成される演算結果ベクトルデータRUSが、図9に示すレジスタファイル16内のレジスタreg21〜24に隣接したレジスタreg31〜34に書き込まれる。
次に、繰り返し制御回路18は、カウント値が「4」の状態で、図6に示す第1データ変更回路24の処理回路71,72,73,74が、それぞれ「0」,「0」,「0」,「1」を出力するように、第1セレクト信号SWZ11〜14、ABS11〜14、CST11〜14および符号反転信号NEG11〜14を生成し、これを第1データ変更回路24に出力する。
これにより、「0」,「0」,「0」,「1」を示す要素データX,Y,Z,Wによって構成される演算結果ベクトルデータRUSが、図9に示すレジスタファイル16内のレジスタreg31〜34に隣接したレジスタreg41〜44に書き込まれる。
そして、命令デコーダ14は、その後の命令で、上述した手順でレジスタファイル16に書き込んだ4x4の単位行列データを用いた行列演算を演算回路28に実行させる。
[第2の動作例]
上述した第1の動作例では、命令vmidに基づいて、単位行列データを構成するベクトルデータを第1データ変更回路24で生成してレジスタファイル16に単位行列データを書き込む場合を例示したが、本実施形態では、第1データ変更回路24で生成した単位行列データを構成するベクトルデータあるいは定数ベクトルデータと、第2サイズ変更回路22において生成した所定の定数ベクトルデータとを用いた演算を演算回路28に行わせてもよい。
また、第1データ変更回路24で生成した単位行列データを構成するベクトルデータあるいは定数ベクトルデータと、第2データ変更回路26において第2読み出しベクトルデータRV12を用いて処理を行って生成した第2読出しベクトルデータRV22とを用いた演算を演算回路28に行わせてもよい。
[第3の動作例]
本動作例では、プロセッサ4により、クォータニオン積と外積の演算を行う場合を説明する。
ところで、クオータニオンPは1つのスカラー値pと1つ3次元ベクトルUによって“P=[p;U]”のように表現される。
また、p=Aw,U=(Ax,Ay,Az)として、虚数単位i、j、kを用いて下記式(1)のように表現できる。
[数1]
P= Aw + Ax i + Ay j + Az k
…(1)
また、虚数単位i、j、kの積は下記式(2)の関係を有する。
[数2]
ii=jj=kk=ijk=−1
…(2)
さらに、クオータニオンQを“Q=[q;V]”とし、“q=Bw,V=(Bx,By,Bz)”とすると下記式(3)が成り立つ。
[数3]
Q= Bw + Bx i + By j + Bz k
…(3)
そして、クォータニオンPとクォータニオンQの積PQは、下記式(4)のようになる。
[数4]
PQ=(AxBw+AyBz−AzBy+AwBx)i
+(―AxBz+AyBw+AzBx+AwBy)j
+(AxBy−AyBx+AzBw+AwBz)k
+(―AxBx−AyBy−AzBz+AwBw)
= Mx i + My j + Mz k + Mw
…(4)
また、この積PQは3次元ベクトルU,Vの内積と外積を用いて下記式(5)のように示せる。
[数5]
PQ = [pq―U・V; pV+qU+U×V]
…(5)
但し、「・」は内積、「×」は外積である。そして、p=0,q=0のときのクオータニオンP、Qの積は下記式(6)のようになり、PQのベクトル成分はUとVの外積そのものとなる。
[数6]
PQ = [―U・V; U×V] …(6)
このような性質をもつクォータニオンという数を利用することで、3次元における回転に関する問題が扱いやすくなることが知られており、3Dグラフィックスにおけるオブジェクトの回転や球面補間処理などさまざまに利用されている。
本実施形態の機能コードqmulは、このクォータニオン積を計算するためのものである。
本実施形態では、レジスタファイル16にAx,Ay,Az,Awの順番に要素X,Y,Z,Wに格納した4次元ベクトルを第1読出しベクトルRV1として、Bx,By,Bz,Bwの順番に要素X,Y,Z,Wに格納した4次元ベクトルを第2読出しベクトルRV2として読み出してそれぞれ第1サイズ変更回路20および第2サイズ変更回路22においてサイズ処理を行う。
そして、当該サイズ処理によって得られた第1読出しベクトルデータRV11を第1データ変更回路24において符号処理して第1読出しベクトルデータRV21を生成し、こRを演算回路28に出力する。
また、当該サイズ処理によって得られた第2読出しベクトルデータRV12を第2データ変更回路26において符号処理して第2読出しベクトルデータRV22を生成し、こRを演算回路28に出力する。
そして、演算回路28において、最初に上記式(4)の第1項(iの項)の演算を行う。
次に、同様の演算を、上記式(4)の第2項(jの項)、第3項(kの項)、並びに第4項(wの項)について繰り返し行い、クオータニオンP、Qの積を算出する。
以上説明したように、コンピュータ1によれば、単数の命令vmidにより、単位行列データを生成してレジスタファイル16に書き込むことができる。
これにより、プログラムPRGのコード数を従来に比べて大幅に少なくでき、プログラムPRGの開発負荷を低減できると共に、プログラムPRGの信頼性を高めることができる。さらには、キャッシュメモリを効率的に利用することでプログラムPRGの実行時間を短縮できる。
また、コンピュータ1によれば、バグの発生を抑制できる。
また、クオータニオンP、Qの演算を単数の命令qmulにより行うことができる。これによっても、プログラムPRGのコード数を従来に比べて大幅に少なくでき、プログラムPRGの開発負荷を低減できると共に、プログラムPRGの信頼性を高めることができる。さらには、キャッシュメモリを効率的に利用することでプログラムPRGの実行時間を短縮できる。
また、コンピュータ1をSIMD型プロセッサで実現する場合に、これらのプロセッサは、内積器と並び替え回路と符号反転をすでに備えているので、それにわずかなリソースを追加することでコンピュータ1を実現できる。
また、機能コードは共通で、要素数を4にするとクォータニオン積、3にすると外積として機能する。そのため、機能コードとして外積とクォータニオン積を別々に割り当てなくてよくいので機能コードを有効利用できる。
また、コンピュータ1によれば、並び替えや符号反転を施したベクトルデータをレジスタ回路に一時的に格納する必要がないので、レジスタ回路の利用効率がよいし、パイプライン技術を用いて第1データ変更回路24および第2データ変更回路26と、演算回路28とを連続的に高速に動かせるようにした場合にも、クォータニオン積での繰り返し回路による演算器の繰り返し実行も同様に連続的に行うことができる。
また、プログラムPRGは、外積やクォータニオン積は関数として実装され、それを関数コールして利用することが多いと考えられるが、本発明では1命令で処理できるので関数コールではなく関数のインライン展開をして高速化してもプログラムサイズの増大が少ない。
本発明は上述した実施形態には限定されない。
上述した実施形態では、4x4の単位行列データを生成する場合を例示したが、2x2,3x3などのその他のサイズの単位行列データを生成してもよい。
また、上述した実施形態では、本発明の定数行列データとして、単位行列データを例示したが、それ以外の定数行列データを生成してもよい。
また、上述した実施形態では、第1サイズ変更回路20および第2サイズ変更回路22を用いる場合を例示したが、これらの機能を図6および図7に示す第1データ変更回路24および第2データ変更回路26に持たせてもよい。
本発明は、単数行列データを演算に用いるシステムに適用可能である。
図1は、本発明の実施態様に係わるコンピュータの全体構成図である。 図2は、図1に示す命令メモリが記憶する命令COMDを説明するための図である。 図3は、図1に示すレジスタファイルを説明するための図である。 図4は、図1に示す繰り返し制御回路を説明するための図である。 図5は、図1に示す第1,2サイズ変更回路の構成図である。 図6は、図1に示す第1,2データ変更回路の構成図である。 図7は、図6に示す処理回路の構成図である。 図8は、図1に示す演算回路の構成図である。 図9は、演算回路の演算結果ベクトルデータをレジスタファイルに書き込む動作例を説明するための図である。
符号の説明
1…コンピュータ、2…命令メモリ、4…プロセッサ、12…プログラムカウンタ、14…命令デコーダ、16…レジスタファイル、18…繰り返し制御回路、20…第1サイズ変更回路、22…第2サイズ変更回路、24…第1データ変更回路、26…第2データ変更回路、28…演算回路、51…カウンタ、52…演算制御回路、61〜64…セレクタ、65…要素数制御回路、71〜74…セレクタ、81,82,83,84,86,87,89…セレクタ、85…絶対値生成回路、88…符号反転回路、101〜104…演算モジュール回路、121〜124…セレクタ

Claims (4)

  1. 数のレジスタ各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、
    前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、
    前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、
    入力される命令をデコードする命令デコーダと
    を有し、
    前記命令デコーダは、
    所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードした場合、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定し、
    前記生成回路は、
    前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を有し、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成し、
    前記レジスタファイルは、
    前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する
    コンピュータ。
  2. 前記レジスタファイルは、
    前記複数のレジスタのうちの2つに、前記定数ベクトルデータとして、1つのスカラー値および1つの3次元ベクトルの値を含む4項の第1クォータニオンと、1つのスカラー値および1つの3次元ベクトルの値を含む4項の第2クォータニオンとを保持し、
    前記命令デコーダは、
    前記所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令の代わりに、前記第1クォータニオンと前記第2クォータニオンとのクォータニオン積を演算する命令をデコードした場合、前記制御回路に前記繰り返し回数として4を指定し、
    前記生成回路は、
    前記制御回路による各回の制御において、前記第1クォータニオンに対して各回の制御において指定される項毎の処理を実行して、4項の第1の処理ベクトルデータを生成する前記第1変更回路の他に、
    前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記第2クォータニオンに対して、各回の制御において指定される項毎の処理を実行して、4項の第2の処理ベクトルデータを生成する第2変更回路と、
    前記制御回路による各回の制御において、前記4項の第1の処理ベクトルデータと前記4項の第2の処理ベクトルデータとを、各回の制御で指定される組み合わせで項毎に積算し、当該積算による4項の要素データを有する1行分の前記演算結果ベクトルデータを生成する演算回路と
    を有し、
    前記レジスタファイルは、
    前記制御回路による4回の繰り返し制御において前記演算回路が生成した4行分の前記演算結果ベクトルデータを、各回の制御で指定されるレジスタに保持することにより、前記クォータニオン積の演算に用いる4項分の積算値を保持する
    請求項1に記載のコンピュータ。
  3. 複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、
    前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、
    前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、
    入力される命令をデコードする命令デコーダと
    を有するコンピュータにおけるデータ処理方法であって、
    前記命令デコーダが、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードして、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定する第1工程と、
    前記生成回路が、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を用いて、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成する第2工程と、
    前記レジスタファイルが、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する第3工程と
    を有するデータ処理方法。
  4. 複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、
    前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、
    前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、
    入力される命令をデコードする命令デコーダと
    を有するコンピュータに、
    前記命令デコーダが、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードして、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定する第1の手順と、
    前記生成回路が、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を用いて、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成する第2の手順と、
    前記レジスタファイルが、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する第3の手順と
    を実行させるプログラム。
JP2004348625A 2004-12-01 2004-12-01 コンピュータ、データ処理方法およびプログラム Expired - Fee Related JP4696540B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004348625A JP4696540B2 (ja) 2004-12-01 2004-12-01 コンピュータ、データ処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004348625A JP4696540B2 (ja) 2004-12-01 2004-12-01 コンピュータ、データ処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2006155490A JP2006155490A (ja) 2006-06-15
JP4696540B2 true JP4696540B2 (ja) 2011-06-08

Family

ID=36633670

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004348625A Expired - Fee Related JP4696540B2 (ja) 2004-12-01 2004-12-01 コンピュータ、データ処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4696540B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367496B2 (en) 2007-02-28 2016-06-14 Nec Corporation DMA transfer device and method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61169923A (ja) * 1985-01-23 1986-07-31 Hitachi Ltd デ−タ処理システム
JPH04293160A (ja) * 1991-03-20 1992-10-16 Fujitsu Ltd 総和演算回路制御方式
JPH08153001A (ja) * 1994-11-29 1996-06-11 Nec Corp マイクロコンピュータの複数レジスタ初期化方法

Also Published As

Publication number Publication date
JP2006155490A (ja) 2006-06-15

Similar Documents

Publication Publication Date Title
US7725520B2 (en) Processor
US11797302B2 (en) Generalized acceleration of matrix multiply accumulate operations
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
JP3889069B2 (ja) プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
US8904152B2 (en) Efficient complex multiplication and fast fourier transform (FFT) implementation on the ManArray architecture
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
US11816481B2 (en) Generalized acceleration of matrix multiply accumulate operations
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
JP2020508513A (ja) データ処理装置における拡大算術計算
JP6712052B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP4696540B2 (ja) コンピュータ、データ処理方法およびプログラム
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
Watkins et al. A memory controller with an integrated graphics processor
CN110060195B (zh) 一种数据处理的方法及装置
JP2018521422A (ja) ベクトル長クエリ命令
CN110914800B (zh) 基于寄存器的复数处理
JP3441847B2 (ja) データメモリを有するプロセッサ
CN115993951A (zh) 用于重用乘法累加运算的矩阵乘法的装置、方法和系统
JP2022131311A (ja) ベクトル演算装置、ベクトル演算方法及びプログラム
JPWO2021160300A5 (ja)
JPH09325953A (ja) プロセッサおよびデータ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100907

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101018

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110214

LAPS Cancellation because of no payment of annual fees