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

データ処理装置 Download PDF

Info

Publication number
JP6123632B2
JP6123632B2 JP2013224438A JP2013224438A JP6123632B2 JP 6123632 B2 JP6123632 B2 JP 6123632B2 JP 2013224438 A JP2013224438 A JP 2013224438A JP 2013224438 A JP2013224438 A JP 2013224438A JP 6123632 B2 JP6123632 B2 JP 6123632B2
Authority
JP
Japan
Prior art keywords
dimension
array data
data
address
memory
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
JP2013224438A
Other languages
English (en)
Other versions
JP2015087856A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013224438A priority Critical patent/JP6123632B2/ja
Publication of JP2015087856A publication Critical patent/JP2015087856A/ja
Application granted granted Critical
Publication of JP6123632B2 publication Critical patent/JP6123632B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データ処理装置に関する。
配列の初期サイズを動的に調整する情報処理装置が知られている(例えば、特許文献1参照)。実行対象プログラムは、記憶装置に格納されている。実行手段は、実行対象プログラムを解釈して、APIの記述を検出することに応答して、対応するAPIの機能を呼び出して実行する。第1のAPIは、実行手段によって呼び出され得る、所定のサイズの配列を割り付ける。第2のAPIは、引数として拡張すべき配列の情報を受け取り、配列よりもサイズの大きい配列を割り付ける。第1及び第2のAPIは、実行時に、それぞれ割り付けた配列をサンプリング頻度に基づきプロファイル対象とすると共に、割り付けた配列のプロファイル情報格納領域に、拡張前の配列の割付呼び出しコンテキストを格納するコードに変換される。プロファイラは、プロファイル対象の配列へのアクセスの検出に応答して実行手段によって呼び出され得る、アクセスを検出された配列に対応するプロファイル情報格納領域に配列へのアクセス情報を格納する。動的コンパイラは、次に実行すべき実行対象プログラムのコード部分を動的にコンパイルする。動的コンパイラは、コード部分に含まれる配列の割付呼び出しコンテキストをインライン展開し、コンテキストに関連づけられた全アクセス情報に基づき決定される配列のサイズを配列の割り付け初期サイズとしてコード部分に埋め込む。
また、撮像装置、検出装置、通信装置、制御装置、及び一般信号処理装置のうちの1つのコンポーネントであり、デジタル信号を処理するためのデジタル回路からなるデジタル信号処理用装置が知られている(例えば、特許文献2参照)。第2のシステムソルバーは、行列T0及びベクトルY0の要素からなる信号Ssを解Xから計算する。システムプロセッサは、解Xから信号Jを計算する。解X、信号Ss、及び信号Jは、ビームパターン、目標物の物理的特徴、送信音声、画像及びデータ、機械的、電気的、化学的、又は生物学的コンポーネントを制御するための情報、画像、及び音声及びデータのフレームのうち少なくとも1つを表す。第2のシステムソルバーは、信号Ssをもとに、変換した係数行列Ttからなる変換した連立方程式を生成する。
また、関係テーブルを用いたデータベース装置が知られている(例えば、特許文献3参照)。データベース記憶部は、関係テーブルの各タップルに対応する拡張可能配列の要素の位置を示す位置情報をキー値として登録した要素位置データを格納する。位置情報は、要素が属する拡張可能配列の区画の位置を示す区画位置情報と、区画内における要素の位置を示す、タップルの各属性の属性値に一意に対応した値を所定の属性順に並べた座標情報と、を含む情報である。
特開2013−114552号公報 特開2010−262622号公報 特開2010−198217号公報
メモリに記憶されている配列データの処理の高速化が望まれている。データのアクセス時間が長いと、データ処理時間が長期化してしまう。特に、データ量が多くなると、データのアクセス回数が増加するため、データのアクセス時間の短縮化が望まれる。
本発明の目的は、配列データのアクセス時間を短縮することができるデータ処理装置を提供することである。
データ処理装置は、メモリの第1のアドレスに記憶されている第1の複数次元配列データのうちの一部の複数次元配列データを指定された大きさの単位で順次ロードするロード部と、前記ロードされた一部の複数次元配列データのうちの第1の抽出位置の第1の配列データ及び第2の抽出位置の第2の配列データを前記ロード毎に順次抽出する抽出部と、前記第1の配列データを前記メモリの第2のアドレスに前記抽出毎に順次ストアし、前記第2の配列データを前記メモリの第3のアドレスに前記抽出毎に順次ストアするストア部とを有し、前記メモリの前記第1のアドレスからロードする前記第1の複数次元配列データは、前記複数次元のうちの第2の次元の変化より第1の次元の変化を優先した順序で前記メモリに記憶され、前記メモリの前記第2のアドレス及び前記第3のアドレスにストアされた複数次元配列データは、前記複数次元のうちの前記第1の次元の変化より前記第2の次元の変化を優先した順序で前記メモリに記憶される。
メモリの第2のアドレス及び第3のアドレスにストアされた複数次元配列データをシーケンシャルにロードすることできるので、複数次元配列データのアクセス時間を短縮することができる。
図1は、本実施形態によるデータ処理装置の構成例を示す図である。 図2は、LMMSEの平滑化処理の例を示す図である。 図3は、CQIの推定処理の例を示す図である。 図4は、データメモリに記憶される3次元配列データの順序を示す図である。 図5(A)はデータがデータメモリ内で連続して配置されている例を示す図であり、図5(B)は、データがデータメモリ内で不連続で配置されている例を示す図である。 図6は、抽出命令の動作を説明するための図である。 図7は、結合命令の動作を説明するための図である。 図8は、結合命令及び抽出命令を用いてデータ配置の並び替えを行う例を示す図である。 図9は、結合命令により並び替える例を示す図である。 図10は、抽出命令により並び替える例を示す図である。
図1は、本実施形態によるデータ処理装置の構成例を示す図である。データ処理装置は、命令メモリ101、デジタルシグナルプロセッサ(DSP:Digital Signal Processor)102及びデータメモリ103を有する。デジタルシグナルプロセッサ102は、デコーダ111、並び替え部112、演算部113、セレクタ114、ダイレクトメモリアクセスコントローラ115及び116を有する。命令メモリ101は、命令を記憶し、命令をデコーダ111に出力する。デコーダ111は、命令メモリ101に記憶されている命令をデコードし、並び替え部112、演算部113、セレクタ114、ダイレクトメモリアクセスコントローラ115及び116に制御信号及びパラメータを出力する。ダイレクトメモリアクセスコントローラ116は、デコーダ111の制御により、データメモリ103に記憶されているデータをロードして並び替え部112及び/又は演算部113に出力するロード部である。並び替え部112は、デコーダ111の制御により、ダイレクトメモリアクセスコントローラ116から入力したデータを並び替えてセレクタ114に出力する。演算部113は、デコーダ111の制御により、ダイレクトメモリアクセスコントローラ116から入力したデータに対して種々の演算を行ってセレクタ114に出力する。セレクタ114は、デコーダ111の制御により、並び替え部112の出力データ又は演算部113の出力データを選択してダイレクトメモリアクセスコントローラ115に出力する。ダイレクトメモリアクセスコントローラ115は、デコーダ111の制御により、セレクタ114から入力したデータをデータメモリ103にストアするストア部である。
デジタルシグナルプロセッサ102は、例えば無線通信のデータ処理のため、複数次元配列データ(2次元以上の配列データ)に対して種々の演算を行う。演算部113は、無線通信のデータ処理として、例えば、線形最小二乗平均誤差(LMMSE:Linear Minimum Mean Square Error)の平滑化処理(図2)、及びチャンネル品質指標(CQI:Channel Quality Indicator)の推定処理(図3)を行う。
図2は、LMMSEの平滑化処理の例を示す図である。演算部113は、次式(1)により、3次元配列データhZF_CSI(a,b,k+m−Lmmse)及び係数WMid(m)の内積を演算することにより、3次元配列データhCSI(a,b,k)を求める。この際、第1の次元a及び第2の次元bの各値に対して、第3の次元kを変化させながら内積を行う。
Figure 0006123632
ここで、3次元配列データhZF_CSI(a,b,k)は、第1の次元a、第2の次元b及び第3の次元kを有する。第1の次元aは、受信アンテナ数であり、例えば1〜4(a=0〜3)の範囲の整数である。第2の次元bは、送信アンテナ数であり、例えば1〜4(b=0〜3)の範囲の整数である。第3の次元kは、リソースブロック(RB)数であり、例えば1〜100(k=0〜99)の範囲の整数である。上記のように、3次元配列データhCSI(a,b,k)は、3次元配列データhZF_CSI(a,b,k)を基に演算される。
図3は、CQIの推定処理の例を示す図である。3次元行列(配列)データH(a,b,k)は、第1の次元a、第2の次元b及び第3の次元kを有する。第1の次元aは、受信アンテナ数であり、例えば1〜4(a=0〜3)の範囲の整数である。第2の次元bは、送信アンテナ数であり、例えば1〜4(b=0〜3)の範囲の整数である。第3の次元kは、リソースブロック数であり、例えば1〜100(k=0〜99)の範囲の整数である。2次元行列データH(k)は、3次元行列(配列)データH(a,b,k)のうちの次元kの値が指定された一部の2次元行列データである。演算部113は、次式(2)により、次元kの各値について、2次元行列データH(k)及びそのエルミート行列データH(k)Hの積を演算することにより、3次元配列データΓtmpを求める。この際、第3の次元kの各値に対して、第1の次元a及び第2の次元bを変化させながら行列H(a,b,k)の積を演算する。
Figure 0006123632
図4は、データメモリ103に記憶される3次元配列データの順序を示す図である。図2の3次元配列データhZF_CSI(a,b,k)及び図3の3次元配列データH(a,b,k)は、データメモリ103内の一次元のアドレスに記憶される。そのため、図2の3次元配列データhZF_CSI(a,b,k)及び図3の3次元配列データH(a,b,k)は、第1の次元aの変化、第2の次元bの変化及び第3の次元kの変化に優先順位をつけて、データメモリ103の一次元のアドレスに順番に記憶させる必要がある。
図4に示すように、データメモリ103のアドレスに対して、図3の3次元配列データH(a,b,k)を、第1の次元aの変化、第2の次元bの変化、第3の次元kの変化の順番の優先順位で、3次元配列データh(a,b,k)として記憶する場合を説明する。ここで、演算部113は、上式(2)のように、図3の3次元配列データH(a,b,k)に対して、第1の次元a及び第2の次元bを変化させ、2次元配列データH(k)の行列積を演算する。配列データ401は、第3の次元kを0に指定し、第1の次元a及び第2の次元bを順次変化させたデータであり、アドレスに対して連続的に配列されたシーケンシャルなデータである。したがって、演算部113は、上式(2)の演算を行う際には、配列データH(k)のデータ401をデータメモリ103からシーケンシャルにロードすることができる。
これに対し、図4に示すように、データメモリ103のアドレスに対して、図2の3次元配列データhZF_CSI(a,b,k)を、第1の次元aの変化、第2の次元bの変化、第3の次元kの変化の順番の優先順位で、3次元配列データh(a,b,c)として記憶する場合を説明する。ここで、演算部113は、上式(1)のように、図2の3次元配列データhZF_CSI(a,b,k)に対して、第3の次元kを変化させ、内積を演算する。配列データ402は、第1の次元a及び第2の次元bを0に指定し、第3の次元kを順次変化させたデータであり、アドレスに対して不連続に配列されたデータである。したがって、演算部113は、上式(1)の演算を行う際には、配列データhZF_CSI(a,b,k)のデータ402をデータメモリ103から不連続でロードする。
以上のように、図3の3次元配列データH(a,b,k)は、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序で演算され、図2の3次元配列データhZF_CSI(a,b,k)は、第3の次元kの変化が第1の次元aの変化及び第2の次元bの変化より優先した順序で演算される。そのため、図3の3次元配列データH(a,b,k)は、図4の配列データ401のように、アドレスに対して連続した順序でロードされ、シーケンシャルロードが可能である。これに対して、図2の3次元配列データhZF_CSI(a,b,k)は、図4の配列データ402のように、アドレスに対して不連続の順序でロードされ、シーケンシャルロードが不可である。このように、図3の3次元配列データH(a,b,k)及び図2の3次元配列データhZF_CSI(a,b,k)の両方がシーケンシャルロードできるようなデータ配置は存在しない。
図5(A)は、図4のデータ401がデータメモリ103内で連続して配置されている例を示す図である。ダイレクトメモリアクセスコントローラ116は、データメモリ103に対してラインLN単位でアクセスする。すなわち、ダイレクトメモリアクセスコントローラ116は、1サイクルで、1ラインLNのデータをロードする。例えば、データ401が1ラインLN内に含まれていれば、ダイレクトメモリアクセスコントローラ116は、1サイクルで、データ401をロードすることができる。
図5(B)は、図4のデータ402がデータメモリ103内で不連続で配置されている例を示す図である。データ402は複数のラインLNに含まれているので、ダイレクトメモリアクセスコントローラ116は、そのラインLNの数に対応する複数サイクルで、データ402をロードする。
以上のように、図5(A)の場合は、データ401のシーケンシャルロードが可能であるので、アクセス回数が少なく、処理速度が速く、消費電力が小さい。これに対し、図5(B)の場合は、データ402のシーケンシャルロードが不可であるので、アクセス回数が多く、処理速度が遅く、消費電力が大きい。そこで、上式(1)及び(2)の両方の演算で、シーケンシャルロードを可能する技術が望まれる。しかし、上記のように、上式(1)及び(2)の両方でシーケンシャルロードが可能なデータ配置は存在せず、いずれかの演算でシーケンシャルロードが不可になってしまう。
また、下記の3点の特徴があるため、問題を複雑化させている。第1に、配列データが2次元以上の複数次元配列データである。第2に、配列の寸法は演算により異なる。第3に、配列データが大容量のため、データ構造全体をデジタルシグナルプロセッサ102内部のレジスタ/バッファにロードすることは難しい。
本実施形態では、複数の演算でシーケンシャルロードを可能にするため、結合命令vmergeを用いる。結合命令vmergeは、図9に示すように、第3の次元kの変化が第1の次元aの変化及び第2の次元bの変化より優先した順序である上式(1)の演算に向いたデータ配置901を、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序である上式(2)の演算に向いたデータ配置902に並び替えるための命令である。
図7は、結合命令vmergeの動作を説明するための図である。結合命令vmergeは、下記のニーモニックを有し、命令メモリ101に格納される。
vmerge vtype M,N,A,B,C
ここで、パラメータvtypeは、配列データの各要素が実数又は複素数のいずれであるのかを示す。パラメータMは、並び替え前の第1の配列データの大きさであり、例えば3である。パラメータNは、並び替え前の第2の配列データの大きさであり、例えば2である。パラメータAは、並び替え前の第1の配列データが記憶されているデータメモリ103のアドレスである。パラメータBは、並び替え前の第2の配列データが記憶されているデータメモリ103のアドレスである。パラメータCは、第1の配列データ及び第2の配列データを結合してストアするデータメモリ103のアドレスである。
第1のアドレスAの第1の配列データ及び第2のアドレスBの第2の配列データの結合は、複数次元配列データ単位で行われる。図7では、2次元配列データの例を示すが、3次元以上の配列データの場合も同様である。
図8は、結合命令vmergeを用いてデータ配置の並び替えを行う例を示す図である。下記の結合命令vmergeを実行させることにより、図8の並び替えを行うことができる。なお、説明の簡単のため、図8では1次元配列データの例を示すが、実際には2次元以上の配列データである。
vmerge M=1,N=1,A=D1,B=D2,C=D0
上記の結合命令vmergeは、命令メモリ101に記憶される。デコーダ111は、命令メモリ101内の結合命令vmergeをデコードし、並び替え部112、セレクタ114、ダイレクトメモリアクセスコントローラ115及び116に制御信号を出力する。
ダイレクトメモリコントローラ(ロード部)116は、データメモリ103の第1のアドレスA=D1に記憶されている配列データのうちの大きさM=1の一部の第1の配列データ「0」をロードし、データメモリ103の第2のアドレスB=D2に記憶されている配列データのうちの大きさN=1の一部の第2の配列データ「0」をロードする。並び替え部(結合部)112は、ロードされた第1の配列データ「0」及び第2の配列データ「0」を結合する。ダイレクトメモリアクセスコントローラ(ストア部)115は、結合された配列データ「0,0」をデータメモリ103の第3のアドレスC=D0にストアする。
次に、ダイレクトメモリコントローラ(ロード部)116は、データメモリ103の第1のアドレスA=D1+1に記憶されている配列データのうちの大きさM=1の一部の第1の配列データ「1」をロードし、データメモリ103の第2のアドレスB=D2+1に記憶されている配列データのうちの大きさN=1の一部の第2の配列データ「1」をロードする。並び替え部(結合部)112は、ロードされた第1の配列データ「1」及び第2の配列データ「1」を結合する。ダイレクトメモリアクセスコントローラ(ストア部)115は、結合された配列データ「1,1」をデータメモリ103の第3のアドレスC=D0+2にストアする。
次に、ダイレクトメモリコントローラ(ロード部)116は、データメモリ103の第1のアドレスA=D1+2に記憶されている配列データのうちの大きさM=1の一部の第1の配列データ「2」をロードし、データメモリ103の第2のアドレスB=D2+2に記憶されている配列データのうちの大きさN=1の一部の第2の配列データ「2」をロードする。並び替え部(結合部)112は、ロードされた第1の配列データ「2」及び第2の配列データ「2」を結合する。ダイレクトメモリアクセスコントローラ(ストア部)115は、結合された配列データ「2,2」をデータメモリ103の第3のアドレスC=D0+4にストアする。上記のように、大きさM及びNの単位で、配列データの最後まで上記の処理を繰り返す。
図9は、第3の次元kの変化が第1の次元aの変化及び第2の次元bの変化より優先した順序である上式(1)の演算に向いたデータ配置901を、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序である上式(2)の演算に向いたデータ配置902に並び替える例を示す図である。
データ配置901では、第1のラインは、第1の次元a=0であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第2のラインは、第1の次元a=1であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第3のラインは、第1の次元a=2であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第4のラインは、第1の次元a=3であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第5のラインは、第1の次元a=0であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第6のラインは、第1の次元a=1であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第7のラインは、第1の次元a=2であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第8のラインは、第1の次元a=3であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第9のラインは、第1の次元a=0であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第10のラインは、第1の次元a=1であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第11のラインは、第1の次元a=2であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第12のラインは、第1の次元a=3であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第13のラインは、第1の次元a=0であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。第14のラインは、第1の次元a=1であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。第15のラインは、第1の次元a=2であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。第16のラインは、第1の次元a=3であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。以上のように、配列データは、第3の次元kの変化、第1の次元aの変化、第2の次元bの変化の順で優先した順番で記憶されている。
データ配置902では、第1のラインは、第3の次元k=0であり、第1の次元a及び第2の次元bが変化する配列データを記憶する。第2のラインは、第3の次元k=1であり、第1の次元a及び第2の次元bが変化する配列データを記憶する。第3のラインは、第3の次元k=2であり、第1の次元a及び第2の次元bが変化する配列データを記憶する。すなわち、各ラインは、第3の次元kの値が同じ配列データを記憶する。データ配置902では、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序で配列データが記憶されている。例えば、配列データは、第1の次元aの変化、第2の次元bの変化、第3の次元kの変化の順で優先した順番で記憶されている。
デジタルシグナルプロセッサ102は、15個の結合命令vmergeを実行することにより、データ配置901をデータ配置902に並び替えることができる。第1の結合命令vmergeでは、M=1、N=1で、第1のライン及び第2のラインの結合を行う。第2の結合命令vmergeでは、M=2、N=1で、第1の結合命令vmergeにより結合された配列データと第3のラインとの結合を行う。第3の結合命令vmergeでは、M=3、N=1で、第2の結合命令vmergeにより結合された配列データと第4のラインとの結合を行う。第4の結合命令vmergeでは、M=4、N=1で、第3の結合命令vmergeにより結合された配列データと第5のラインとの結合を行う。第5の結合命令vmergeでは、M=5、N=1で、第4の結合命令vmergeにより結合された配列データと第6のラインとの結合を行う。第6の結合命令vmergeでは、M=6、N=1で、第5の結合命令vmergeにより結合された配列データと第7のラインとの結合を行う。第7の結合命令vmergeでは、M=7、N=1で、第6の結合命令vmergeにより結合された配列データと第8のラインとの結合を行う。第8の結合命令vmergeでは、M=8、N=1で、第7の結合命令vmergeにより結合された配列データと第9のラインとの結合を行う。第9の結合命令vmergeでは、M=9、N=1で、第8の結合命令vmergeにより結合された配列データと第10のラインとの結合を行う。第10の結合命令vmergeでは、M=10、N=1で、第9の結合命令vmergeにより結合された配列データと第11のラインとの結合を行う。第11の結合命令vmergeでは、M=11、N=1で、第10の結合命令vmergeにより結合された配列データと第12のラインとの結合を行う。第12の結合命令vmergeでは、M=12、N=1で、第11の結合命令vmergeにより結合された配列データと第13のラインとの結合を行う。第13の結合命令vmergeでは、M=13、N=1で、第12の結合命令vmergeにより結合された配列データと第14のラインとの結合を行う。第14の結合命令vmergeでは、M=14、N=1で、第13の結合命令vmergeにより結合された配列データと第15のラインとの結合を行う。第15の結合命令vmergeでは、M=15、N=1で、第14の結合命令vmergeにより結合された配列データと第16のラインとの結合を行うことにより、データ配置902を生成することができる。
以上のように、ダイレクトメモリアクセスコントローラ(ロード部)116は、データメモリ103の第1のアドレスAに記憶されている複数次元配列データのうちの一部の第1の配列データを第1の大きさMの単位で順次ロードし、データメモリ103の第2のアドレスBに記憶されている複数次元配列データのうちの一部の第2の配列データを第2の大きさNの単位で順次ロードする。並び替え部(結合部)112は、ロードされた第1の配列データ及び第2の配列データをロード毎に順次結合する。ダイレクトメモリアクセスコントローラ(ストア部)115は、結合された配列データをデータメモリ103の第3のアドレスCに結合毎に順次ストアする。
データメモリ103の第1のアドレスA及び第2のアドレスBからロードする複数次元配列データ901は、複数次元のうちの次元a,bの変化より次元kの変化を優先した順序でデータメモリ103に記憶されている。データメモリ103の第3のアドレスCにストアされた複数次元配列データ902は、複数次元のうちの次元kの変化より次元a,bの変化を優先した順序でデータメモリ103に記憶される。
デコーダ111は、結合命令vmergeをデコードすることにより、第1の大きさM、第2の大きさN、第1のアドレスA、第2のアドレスB及び第3のアドレスCを指定する。
並び替え後、演算部113は、データメモリ103の第3のアドレスCにストアされた複数次元配列データ902をシーケンシャルにロードして上式(1)の第1の演算を行う。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
並び替え前、演算部113は、データメモリ103の第1のアドレスA及び第2のアドレスBに記憶されている複数次元配列データ901をシーケンシャルにロードして第2の演算を行うことにより、例えば図3の3次元配列データH(a,b,k)を生成することができる。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
また、本実施形態では、複数の演算でシーケンシャルロードを可能にするため、抽出命令vsplitを用いる。抽出命令vsplitは、図10に示すように、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序である上式(2)の演算に向いたデータ配置902を、第3の次元kの変化が第1の次元aの変化及び第2の次元bの変化より優先した順序である上式(1)の演算に向いたデータ配置901に並び替えるための命令である。
図6は、抽出命令vsplitの動作を説明するための図である。抽出命令vsplitは、下記のニーモニックを有し、命令メモリ101に格納される。
vsplit vtype M,N,K,A,B,C
ここで、パラメータvtypeは、配列データの各要素が実数又は複素数のいずれであるのかを示す。パラメータMは、並び替え前の複数次元配列データのうちの並び替えを行う一部の複数次元配列データの大きさであり、例えば5である。パラメータNは、上記の大きさMの一部の複数次元配列データのうちの第1の抽出位置を示し、例えば2である。パラメータKは、上記の大きさMの一部の複数次元配列データのうちの第2の抽出位置を示し、例えば5である。パラメータAは、並び替え前の複数次元配列データが記憶されているデータメモリ103のアドレスである。パラメータBは、第1の抽出位置Nの配列データを抽出してストアするデータメモリ103のアドレスである。パラメータCは、第2の抽出位置Kの配列データを抽出してストアするデータメモリ103のアドレスである。
第1の抽出位置N及び第2の抽出位置Kの配列データの抽出は、配列データ単位で行われる。図6では、2次元配列データの例を示すが、3次元以上の配列データの場合も同様である。
図8は、抽出命令vsplitを用いてデータ配置の並び替えを行う例を示す図である。下記の抽出命令vsplitを実行させることにより、図8の並び替えを行うことができる。なお、説明の簡単のため、図8では1次元配列データの例を示すが、実際には2次元以上の配列データである。
vsplit M=2,N=1,K=2,A=D0,B=D1,C=D2
上記の抽出命令vsplitは、命令メモリ101に記憶される。デコーダ111は、命令メモリ101内の抽出命令vsplitをデコードし、並び替え部112、セレクタ114、ダイレクトメモリアクセスコントローラ115及び116に制御信号を出力する。
ダイレクトメモリコントローラ(ロード部)116は、データメモリ103の第1のアドレスA=D0に記憶されている配列データのうちの大きさM=2の一部の配列データ「0,0」をロードする。次に、並び替え部(抽出部)112は、ロードされた一部の配列データ「0,0」のうちの第1の抽出位置N=1の第1の配列データ「0」及び第2の抽出位置K=2の第2の配列データ「0」を抽出する。次に、ダイレクトメモリアクセスコントローラ(ストア部)115は、第1の抽出位置N=1の第1の配列データ「0」をデータメモリ103の第2のアドレスB=D1にストアし、第2の抽出位置N=2の第2の配列データ「0」をデータメモリ103の第3のアドレスC=D2にストアする。
次に、ダイレクトメモリコントローラ(ロード部)116は、データメモリ103の第1のアドレスA=D0+2に記憶されている配列データのうちの大きさM=2の一部の配列データ「1,1」をロードする。次に、並び替え部(抽出部)112は、ロードされた一部の配列データ「1,1」のうちの第1の抽出位置N=1の第1の配列データ「1」及び第2の抽出位置K=2の第2の配列データ「1」を抽出する。次に、ダイレクトメモリアクセスコントローラ(ストア部)115は、第1の抽出位置N=1の第1の配列データ「1」をデータメモリ103の第2のアドレスB=D1+1にストアし、第2の抽出位置N=2の第2の配列データ「1」をデータメモリ103の第3のアドレスC=D2+1にストアする。
次に、ダイレクトメモリコントローラ(ロード部)116は、データメモリ103の第1のアドレスA=D0+4に記憶されている配列データのうちの大きさM=2の一部の配列データ「2,2」をロードする。次に、並び替え部(抽出部)112は、ロードされた一部の配列データ「2,2」のうちの第1の抽出位置N=1の第1の配列データ「2」及び第2の抽出位置K=2の第2の配列データ「2」を抽出する。次に、ダイレクトメモリアクセスコントローラ(ストア部)115は、第1の抽出位置N=1の第1の配列データ「2」をデータメモリ103の第2のアドレスB=D1+2にストアし、第2の抽出位置N=2の第2の配列データ「2」をデータメモリ103の第3のアドレスC=D2+2にストアする。上記のように、大きさMの単位で、配列データの最後まで上記の処理を繰り返す。
図10は、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序である上式(2)の演算に向いたデータ配置902を、第3の次元kの変化が第1の次元aの変化及び第2の次元bの変化より優先した順序である上式(1)の演算に向いたデータ配置901に並び替える例を示す図である。
データ配置902では、図9と同様に、第1のラインは、第3の次元k=0であり、第1の次元a及び第2の次元bが変化する配列データを記憶する。第2のラインは、第3の次元k=1であり、第1の次元a及び第2の次元bが変化する配列データを記憶する。第3のラインは、第3の次元k=2であり、第1の次元a及び第2の次元bが変化する配列データを記憶する。すなわち、各ラインは、第3の次元kの値が同じ配列データを記憶する。データ配置902では、第1の次元aの変化及び第2の次元bの変化が第3の次元kの変化より優先した順序で配列データが記憶されている。
データ配置901では、図9と同様に、第1のラインは、第1の次元a=0であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第2のラインは、第1の次元a=1であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第3のラインは、第1の次元a=2であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第4のラインは、第1の次元a=3であり、第2の次元b=0であり、第3の次元kが変化する配列データを記憶する。第5のラインは、第1の次元a=0であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第6のラインは、第1の次元a=1であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第7のラインは、第1の次元a=2であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第8のラインは、第1の次元a=3であり、第2の次元b=1であり、第3の次元kが変化する配列データを記憶する。第9のラインは、第1の次元a=0であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第10のラインは、第1の次元a=1であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第11のラインは、第1の次元a=2であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第12のラインは、第1の次元a=3であり、第2の次元b=2であり、第3の次元kが変化する配列データを記憶する。第13のラインは、第1の次元a=0であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。第14のラインは、第1の次元a=1であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。第15のラインは、第1の次元a=2であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。第16のラインは、第1の次元a=3であり、第2の次元b=3であり、第3の次元kが変化する配列データを記憶する。
デジタルシグナルプロセッサ102は、8個の抽出命令vsplitを実行することにより、データ配置902をデータ配置901に並び替えることができる。第1の抽出命令vsplitでは、M=16、N=1、K=2にすることにより、データ配置901の第1のライン(a=0,b=0)及び第2のライン(a=1,b=0)を生成することができる。第2の抽出命令vsplitでは、M=16、N=3、K=4にすることにより、データ配置901の第3のライン(a=2,b=0)及び第4のライン(a=3,b=0)を生成することができる。第3の抽出命令vsplitでは、M=16、N=5、K=6にすることにより、データ配置901の第5のライン(a=0,b=1)及び第6のライン(a=1,b=1)を生成することができる。第4の抽出命令vsplitでは、M=16、N=7、K=8にすることにより、データ配置901の第7のライン(a=2,b=1)及び第8のライン(a=3,b=1)を生成することができる。第5の抽出命令vsplitでは、M=16、N=9、K=10にすることにより、データ配置901の第9のライン(a=0,b=2)及び第10のライン(a=1,b=2)を生成することができる。第6の抽出命令vsplitでは、M=16、N=11、K=12にすることにより、データ配置901の第11のライン(a=2,b=2)及び第12のライン(a=3,b=2)を生成することができる。第7の抽出命令vsplitでは、M=16、N=13、K=14にすることにより、データ配置901の第13のライン(a=0,b=3)及び第14のライン(a=1,b=3)を生成することができる。第8の抽出命令vsplitでは、M=16、N=15、K=16にすることにより、データ配置901の第15のライン(a=2,b=3)及び第16のライン(a=3,b=3)を生成することができる。
以上のように、ダイレクトメモリアクセスコントローラ(ロード部)116は、データメモリ103の第1のアドレスAに記憶されている第1の複数次元配列データのうちの一部の複数次元配列データを指定された大きさMの単位で順次ロードする。並び替え部(抽出部)112は、ロードされた一部の複数次元配列データのうちの第1の抽出位置Nの第1の配列データ及び第2の抽出位置Kの第2の配列データをロード毎に順次抽出する。ダイレクトメモリアクセスコントローラ(ストア部)115は、第1の配列データをデータメモリ103の第2のアドレスBに抽出毎に順次ストアし、第2の配列データをデータメモリ103の第3のアドレスCに抽出毎に順次ストアする。
データメモリ103の第1のアドレスAからロードする第1の複数次元配列データ902は、複数次元のうちの次元kの変化より次元a,bの変化を優先した順序でデータメモリ103に記憶されている。データメモリ103の第2のアドレスB及び第3のアドレスCにストアされた複数次元配列データ901は、複数次元のうちの次元a,bの変化より次元kの変化を優先した順序でデータメモリ103に記憶される。
デコーダ111は、抽出命令vsplitをデコードすることにより、大きさM、第1の抽出位置N、第2の抽出位置K、第1のアドレスA、第2のアドレスB及び第3のアドレスCを指定する。
並び替え後、演算部113は、データメモリ103の第2のアドレスB及び第3のアドレスCにストアされた複数次元配列データ901をシーケンシャルにロードして第1の演算を行う。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
また、並び替え前、演算部113は、データメモリ103の第1のアドレスAに記憶されている第1の複数次元配列データ902をシーケンシャルにロードして第2の演算を行うことができる。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
以上のように、演算に合わせて、配列データを並び替えることで、シーケンシャルアクセスを可能にする。演算は、上式(1)及び(2)に限定されず、種々の演算に適用できる。演算を開始する前に配列データを並び替えることで、シーケンシャルアクセスが可能になり、トータルのメモリアクセス時間を減らすことが可能である。並び替えは、デジタルシグナルプロセッサ102に結合命令又は抽出命令を実行させることにより行う。結合命令及び抽出命令によりパラメータを指定することにより、種々の演算に適用可能である。結合及び抽出は、指定された大きさ単位で繰り返すことにより、複数次元配列データ全体をデジタルシグナルプロセッサ102の内部に取り込むことなく、並び替えを行うことができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
101 命令メモリ
102 デジタルシグナルプロセッサ
103 データメモリ
111 デコーダ
112 並び替え部
113 演算部
114 セレクタ
115,116 ダイレクトメモリアクセスコントローラ

Claims (8)

  1. メモリの第1のアドレスに記憶されている第1の複数次元配列データのうちの一部の複数次元配列データを指定された大きさの単位で順次ロードするロード部と、
    前記ロードされた一部の複数次元配列データのうちの第1の抽出位置の第1の配列データ及び第2の抽出位置の第2の配列データを前記ロード毎に順次抽出する抽出部と、
    前記第1の配列データを前記メモリの第2のアドレスに前記抽出毎に順次ストアし、前記第2の配列データを前記メモリの第3のアドレスに前記抽出毎に順次ストアするストア部とを有し、
    前記メモリの前記第1のアドレスからロードする前記第1の複数次元配列データは、前記複数次元のうちの第2の次元の変化より第1の次元の変化を優先した順序で前記メモリに記憶され、
    前記メモリの前記第2のアドレス及び前記第3のアドレスにストアされた複数次元配列データは、前記複数次元のうちの前記第1の次元の変化より前記第2の次元の変化を優先した順序で前記メモリに記憶されることを特徴とするデータ処理装置。
  2. さらに、命令をデコードすることにより、前記指定された大きさ、前記第1の抽出位置、前記第2の抽出位置、前記第1のアドレス、前記第2のアドレス及び前記第3のアドレスを指定するデコーダを有することを特徴とする請求項1記載のデータ処理装置。
  3. さらに、前記メモリの前記第2のアドレス及び前記第3のアドレスにストアされた複数次元配列データをシーケンシャルにロードして第1の演算を行う演算部を有することを特徴とする請求項1又は2記載のデータ処理装置。
  4. 前記演算部は、前記メモリの前記第1のアドレスに記憶されている前記第1の複数次元配列データをシーケンシャルにロードして第2の演算を行うことを特徴とする請求項3記載のデータ処理装置。
  5. メモリの第1のアドレスに記憶されている複数次元配列データのうちの一部の第1の配列データを第1の大きさの単位で順次ロードし、前記メモリの第2のアドレスに記憶されている複数次元配列データのうちの一部の第2の配列データを第2の大きさの単位で順次ロードするロード部と、
    前記ロードされた前記第1の配列データ及び前記第2の配列データを前記ロード毎に順次結合する結合部と、
    前記結合された配列データを前記メモリの第3のアドレスに前記結合毎に順次ストアするストア部とを有し、
    前記メモリの前記第1のアドレス及び前記第2のアドレスからロードする複数次元配列データは、前記複数次元のうちの第1の次元の変化より第2の次元の変化を優先した順序で前記メモリに記憶され、
    前記メモリの前記第3のアドレスにストアされた複数次元配列データは、前記複数次元のうちの前記第2の次元の変化より前記第1の次元の変化を優先した順序で前記メモリに記憶されることを特徴とするデータ処理装置。
  6. さらに、命令をデコードすることにより、前記第1の大きさ、前記第2の大きさ、前記第1のアドレス、前記第2のアドレス及び前記第3のアドレスを指定するデコーダを有することを特徴とする請求項5記載のデータ処理装置。
  7. さらに、前記メモリの前記第3のアドレスにストアされた複数次元配列データをシーケンシャルにロードして第1の演算を行う演算部を有することを特徴とする請求項5又は6記載のデータ処理装置。
  8. 前記演算部は、前記メモリの前記第1のアドレス及び前記第2のアドレスに記憶されている複数次元配列データをシーケンシャルにロードして第2の演算を行うことを特徴とする請求項7記載のデータ処理装置。
JP2013224438A 2013-10-29 2013-10-29 データ処理装置 Active JP6123632B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013224438A JP6123632B2 (ja) 2013-10-29 2013-10-29 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013224438A JP6123632B2 (ja) 2013-10-29 2013-10-29 データ処理装置

Publications (2)

Publication Number Publication Date
JP2015087856A JP2015087856A (ja) 2015-05-07
JP6123632B2 true JP6123632B2 (ja) 2017-05-10

Family

ID=53050608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013224438A Active JP6123632B2 (ja) 2013-10-29 2013-10-29 データ処理装置

Country Status (1)

Country Link
JP (1) JP6123632B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3841941C2 (de) * 1987-12-15 2000-08-10 Ngk Spark Plug Co Zündkerze
JP7549234B2 (ja) 2021-03-31 2024-09-11 株式会社ジェイエスピー 発泡性アクリル系樹脂粒子、アクリル系樹脂発泡粒子及びその製造方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6149246A (ja) * 1984-08-16 1986-03-11 Fujitsu Ltd イメ−ジ回転処理方式
JP2887369B2 (ja) * 1992-01-27 1999-04-26 日本電信電話株式会社 2次元配列データアクセス装置
JPH10210251A (ja) * 1997-01-20 1998-08-07 Toshiba Corp 画像メモリアクセス方法、画像形成装置、画像形成記憶装置、アドレス発生方法、及びアドレス発生装置
JP2000231631A (ja) * 1999-02-09 2000-08-22 Fuji Xerox Co Ltd 画像回転装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3841941C2 (de) * 1987-12-15 2000-08-10 Ngk Spark Plug Co Zündkerze
JP7549234B2 (ja) 2021-03-31 2024-09-11 株式会社ジェイエスピー 発泡性アクリル系樹脂粒子、アクリル系樹脂発泡粒子及びその製造方法

Also Published As

Publication number Publication date
JP2015087856A (ja) 2015-05-07

Similar Documents

Publication Publication Date Title
CN110298443B (zh) 神经网络运算装置及方法
KR20190049593A (ko) 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치
KR20200098684A (ko) 행렬 곱셈기
JP2020526830A (ja) 演算アクセラレータ
US9152462B2 (en) Parallel processing device, parallel processing method, optimization device, optimization method and computer program
US9910714B2 (en) Scriptable dynamic load balancing in computer systems
KR101400577B1 (ko) Gpu를 이용한 희소행렬 곱셈 방법
JP6225687B2 (ja) データ処理装置、およびデータ処理方法
EP3295300B1 (en) System and method for determining concurrency factors for dispatch size of parallel processor kernels
JP6123632B2 (ja) データ処理装置
US9693071B1 (en) Self-adaptive load balance optimization for multicore parallel processing of video data
EP3264261B1 (en) Processor and control method of processor
KR102586258B1 (ko) 벡터 길이 질의 명령
KR101217492B1 (ko) 병렬 처리를 이용한 음원 위치 추정 장치 및 방법
CN111803950B (zh) 网页游戏的数据处理方法、装置、电子设备及存储介质
US10001994B2 (en) Data processing apparatus and method for performing scan operations omitting a further step
EP3770756B1 (en) Method executed by computing device, apparatus, device and computer-readable storage medium
JP4901891B2 (ja) 画像処理プロセッサ
US9880843B2 (en) Data processing apparatus and method for decoding program instructions in order to generate control signals for processing circuitry of the data processing apparatus
US20160162290A1 (en) Processor with Polymorphic Instruction Set Architecture
JP5623728B2 (ja) 情報処理装置の試験装置、情報処理装置の試験装置による試験方法及びプログラム
JP2004171530A (ja) 並列実行プロセッサ、命令割当方法
JP5556326B2 (ja) 情報処理システム、タスク制御方法及びタスク制御プログラム
KR101721341B1 (ko) 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
JP6217379B2 (ja) 管理装置及び管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170320

R150 Certificate of patent or registration of utility model

Ref document number: 6123632

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150