JP4696540B2 - コンピュータ、データ処理方法およびプログラム - Google Patents
コンピュータ、データ処理方法およびプログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
そのため、プログラムの単位行列生成部の命令数は、生成する単位行列のサイズがnである場合にはn2個となる。
例えば、2x2の単位行列を生成する場合には下記表1に示すように4個の命令が必要になり、4x4の単位行列を生成する場合には下記表2に示すように16個の命令が必要になる。
addi r1, r0, 1
addi r2, r0, 0
addi r3, r0, 0
addi r4, r0, 1
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
そのため、プログラムの実行時間が長期化すると共に、プログラムの開発負荷が大きいという問題がある。
同様な問題は、単位行列以外の定数行列データを生成する場合にも生じる。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
コンピュータ1が本発明のコンピュータの一例である。演算回路28が本発明の演算回路の一例である。
繰り返し制御回路18、第1データ変更回路24および第2データ変更回路26が本発明の生成回路の一例である。
命令デコーダ14が本発明の制御回路の一例である。
また、本実施形態の単位行列データが、本発明の定数行列データの一例である。
また、本実施形態の第1読出しベクトルデータRV21が本発明の定数ベクトルデータの一例である。
また、命令メモリ2が本発明の命令メモリの一例であり、レジスタファイル16が本発明のメモリまたはデータメモリの一例である。
また、本実施形態のプログラムPRGが本発明のプログラムの一例である。
図1に示すように、コンピュータ1は、例えば、命令メモリ2およびプロセッサ4を有する。
命令メモリ2は、RISC(Reduced Instruction Set Computer)アーキテクチャ型命令セットとして例えば3個のオペランドを有する32ビット固定長の命令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読出しレジスタ指定データ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」である。
なお、本実施形態では、一例として4演算の同時実行を想定して以下説明するが、これに限られず任意の数の演算を同時に実行するようにしても構わない。
プログラムカウンタ12は、プロセッサ4が命令メモリ2から読み出す命令のアドレスADRを計数するカウンタである。
プロセッサ4は、プログラムカウンタ12が指し示す命令メモリ2内のアドレスADRから命令COMDを読み出し、これを命令デコーダ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に出力する。
表3において、サイズは、図2に示す命令COMD内のサイズSIZEを示している。
図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列のレジスタに書き込む。
図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から第2サイズ変更回路22に第2読出しベクトルデータRV2を読み出す際に、命令デコーダ14から入力した機能コードFUNCおよび第2読出しレジスタ要素数データRRN2に基づいて、読出しイネーブル信号RE_Xを生成し、これをレジスタファイル16に出力する。
また、演算制御回路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に出力する。
また、上記表5および表6において、「PPNP」等は、処理回路71〜74において符号反転回路88の結果を出力するか否かを示し、“P”の場合は符号反転回路88の結果を出力せず、“N”の場合は符号反転回路88の結果を出力する。
また、上記表5において、「en(WRN)」は、演算制御回路52が、下記表7に示すように、書込みレジスタ要素数データWRNに応じて、書込みイネーブル信号WE_X、WE_Y,WE_Z,WE_Wを生成することを示している。
図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の論理値にする。
図6は、図1に示す第1データ変更回路24の構成図である。
第1データ変更回路24は、繰り返し制御回路18から入力した第1セレクト信号SWZ11〜14,ABS11〜14,CST11〜14および第1読出し符号反転信号NEG11〜14に基づいて、第1サイズ変更回路20から入力した第1読出しベクトルデータRV11を処理して第1読出しベクトルデータRV21を生成したり、所定のサイズの単位行列データを生成する処理を行う。
処理回路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に示すように、処理回路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に出力する。
絶対値生成回路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として出力する。
図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にも出力する。
セレクタ121〜124は、繰り返し制御回路18から入力した演算セレクト信号A_Sに基づいて、それぞれ演算モジュール回路101〜104から入力した加算、減算、乗算、除算および比較演算と、総和回路110からの総和演算結果とのうち一つを選択して、それぞれ演算結果ベクトルデータRUSの要素データX,Y,Z,Wとしてレジスタファイル16に出力する。
[第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と同じになる。
これにより、「0」,「1」,「0」,「0」を示す要素データX,Y,Z,Wによって構成される演算結果ベクトルデータRUSが、図9に示すレジスタファイル16内のレジスタreg11〜14に隣接したレジスタreg21〜24に書き込まれる。
これにより、「0」,「0」,「1」,「0」を示す要素データX,Y,Z,Wによって構成される演算結果ベクトルデータRUSが、図9に示すレジスタファイル16内のレジスタreg21〜24に隣接したレジスタreg31〜34に書き込まれる。
これにより、「0」,「0」,「0」,「1」を示す要素データX,Y,Z,Wによって構成される演算結果ベクトルデータRUSが、図9に示すレジスタファイル16内のレジスタreg31〜34に隣接したレジスタreg41〜44に書き込まれる。
上述した第1の動作例では、命令vmidに基づいて、単位行列データを構成するベクトルデータを第1データ変更回路24で生成してレジスタファイル16に単位行列データを書き込む場合を例示したが、本実施形態では、第1データ変更回路24で生成した単位行列データを構成するベクトルデータあるいは定数ベクトルデータと、第2サイズ変更回路22において生成した所定の定数ベクトルデータとを用いた演算を演算回路28に行わせてもよい。
また、第1データ変更回路24で生成した単位行列データを構成するベクトルデータあるいは定数ベクトルデータと、第2データ変更回路26において第2読み出しベクトルデータRV12を用いて処理を行って生成した第2読出しベクトルデータRV22とを用いた演算を演算回路28に行わせてもよい。
本動作例では、プロセッサ4により、クォータニオン積と外積の演算を行う場合を説明する。
ところで、クオータニオンPは1つのスカラー値pと1つ3次元ベクトルUによって“P=[p;U]”のように表現される。
また、p=Aw,U=(Ax,Ay,Az)として、虚数単位i、j、kを用いて下記式(1)のように表現できる。
P= Aw + Ax i + Ay j + Az k
…(1)
[数2]
ii=jj=kk=ijk=−1
…(2)
Q= Bw + Bx i + By j + Bz k
…(3)
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 = [pq―U・V; pV+qU+U×V]
…(5)
PQ = [―U・V; U×V] …(6)
本実施形態の機能コード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の積を算出する。
これにより、プログラムPRGのコード数を従来に比べて大幅に少なくでき、プログラムPRGの開発負荷を低減できると共に、プログラムPRGの信頼性を高めることができる。さらには、キャッシュメモリを効率的に利用することでプログラムPRGの実行時間を短縮できる。
また、コンピュータ1によれば、バグの発生を抑制できる。
また、クオータニオンP、Qの演算を単数の命令qmulにより行うことができる。これによっても、プログラムPRGのコード数を従来に比べて大幅に少なくでき、プログラムPRGの開発負荷を低減できると共に、プログラムPRGの信頼性を高めることができる。さらには、キャッシュメモリを効率的に利用することでプログラムPRGの実行時間を短縮できる。
また、機能コードは共通で、要素数を4にするとクォータニオン積、3にすると外積として機能する。そのため、機能コードとして外積とクォータニオン積を別々に割り当てなくてよくいので機能コードを有効利用できる。
また、コンピュータ1によれば、並び替えや符号反転を施したベクトルデータをレジスタ回路に一時的に格納する必要がないので、レジスタ回路の利用効率がよいし、パイプライン技術を用いて第1データ変更回路24および第2データ変更回路26と、演算回路28とを連続的に高速に動かせるようにした場合にも、クォータニオン積での繰り返し回路による演算器の繰り返し実行も同様に連続的に行うことができる。
また、プログラムPRGは、外積やクォータニオン積は関数として実装され、それを関数コールして利用することが多いと考えられるが、本発明では1命令で処理できるので関数コールではなく関数のインライン展開をして高速化してもプログラムサイズの増大が少ない。
上述した実施形態では、4x4の単位行列データを生成する場合を例示したが、2x2,3x3などのその他のサイズの単位行列データを生成してもよい。
また、上述した実施形態では、本発明の定数行列データとして、単位行列データを例示したが、それ以外の定数行列データを生成してもよい。
また、上述した実施形態では、第1サイズ変更回路20および第2サイズ変更回路22を用いる場合を例示したが、これらの機能を図6および図7に示す第1データ変更回路24および第2データ変更回路26に持たせてもよい。
Claims (4)
- 複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、
前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、
前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、
入力される命令をデコードする命令デコーダと
を有し、
前記命令デコーダは、
所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードした場合、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定し、
前記生成回路は、
前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を有し、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成し、
前記レジスタファイルは、
前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する
コンピュータ。 - 前記レジスタファイルは、
前記複数のレジスタのうちの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に記載のコンピュータ。 - 複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、
前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、
前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、
入力される命令をデコードする命令デコーダと
を有するコンピュータにおけるデータ処理方法であって、
前記命令デコーダが、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードして、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定する第1工程と、
前記生成回路が、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を用いて、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成する第2工程と、
前記レジスタファイルが、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する第3工程と
を有するデータ処理方法。 - 複数のレジスタの各々に、複数の要素データを有する定数ベクトルデータを保持可能なレジスタファイルと、
前記レジスタファイルから読み出される前記定数ベクトルデータに対して処理を実行する生成回路と、
前記レジスタファイルおよび前記生成回路を制御し、前記レジスタファイルに保持されている前記定数ベクトルデータに対する処理を前記生成回路に繰り返し実行させて、当該繰り返し実行による複数の演算結果ベクトルデータを前記レジスタファイルに保持させる制御回路と、
入力される命令をデコードする命令デコーダと
を有するコンピュータに、
前記命令デコーダが、所定の一の命令として、前記レジスタファイルに保持されている前記定数ベクトルデータに基づく単数行列データを生成する命令をデコードして、当該単数行列データの行数に応じた繰り返し回数を前記制御回路に指定する第1の手順と、
前記生成回路が、前記制御回路による各回の制御において、前記レジスタファイルから読み込んだ前記定数ベクトルデータに対して、各回の制御において指定される要素毎の処理を実行する第1変更回路を用いて、前記定数ベクトルデータと同じ数の要素データを有する1行分の前記演算結果ベクトルデータを生成する第2の手順と、
前記レジスタファイルが、前記単数行列データの行数に応じた繰り返し制御の下で前記生成回路により生成される前記単数行列データの行数分の前記演算結果ベクトルデータを、各回の制御において指定されるレジスタに保持することにより、前記定数ベクトルデータから前記単数行列データを生成する前記所定の一の命令に基づいて生成された前記単数行列データを保持する第3の手順と
を実行させるプログラム。
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)
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)
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 | マイクロコンピュータの複数レジスタ初期化方法 |
-
2004
- 2004-12-01 JP JP2004348625A patent/JP4696540B2/ja not_active Expired - Fee Related
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 |