(57)【要約】【課題】配列データのアクセス時間を短縮することができるデータ処理装置を提供することを課題とする。【解決手段】データ処理装置は、メモリ（１０３）の第１のアドレスに記憶されている第１の複数次元配列データのうちの一部の複数次元配列データを指定された大きさの単位で順次ロードするロード部（１１６）と、前記ロードされた一部の複数次元配列データのうちの第１の抽出位置の第１の配列データ及び第２の抽出位置の第２の配列データを前記ロード毎に順次抽出する抽出部（１１２）と、前記第１の配列データを前記メモリの第２のアドレスに前記抽出毎に順次ストアし、前記第２の配列データを前記メモリの第３のアドレスに前記抽出毎に順次ストアするストア部（１１５）とを有する。【選択図】図１
2015087856.tif 000002
【特許請求の範囲】
【請求項１】
メモリの第１のアドレスに記憶されている第１の複数次元配列データのうちの一部の複数次元配列データを指定された大きさの単位で順次ロードするロード部と、
前記ロードされた一部の複数次元配列データのうちの第１の抽出位置の第１の配列データ及び第２の抽出位置の第２の配列データを前記ロード毎に順次抽出する抽出部と、
前記第１の配列データを前記メモリの第２のアドレスに前記抽出毎に順次ストアし、前記第２の配列データを前記メモリの第３のアドレスに前記抽出毎に順次ストアするストア部とを有し、
前記メモリの前記第１のアドレスからロードする前記第１の複数次元配列データは、前記複数次元のうちの第２の次元の変化より第１の次元の変化を優先した順序で前記メモリに記憶され、
前記メモリの前記第２のアドレス及び前記第３のアドレスにストアされた複数次元配列データは、前記複数次元のうちの前記第１の次元の変化より前記第２の次元の変化を優先した順序で前記メモリに記憶されることを特徴とするデータ処理装置。
【請求項２】
さらに、命令をデコードすることにより、前記指定された大きさ、前記第１の抽出位置、前記第２の抽出位置、前記第１のアドレス、前記第２のアドレス及び前記第３のアドレスを指定するデコーダを有することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
さらに、前記メモリの前記第２のアドレス及び前記第３のアドレスにストアされた複数次元配列データをシーケンシャルにロードして第１の演算を行う演算部を有することを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
前記演算部は、前記メモリの前記第１のアドレスに記憶されている前記第１の複数次元配列データをシーケンシャルにロードして第２の演算を行うことを特徴とする請求項３記載のデータ処理装置。
【請求項５】
メモリの第１のアドレスに記憶されている複数次元配列データのうちの一部の第１の配列データを第１の大きさの単位で順次ロードし、前記メモリの第２のアドレスに記憶されている複数次元配列データのうちの一部の第２の配列データを第２の大きさの単位で順次ロードするロード部と、
前記ロードされた前記第１の配列データ及び前記第２の配列データを前記ロード毎に順次結合する結合部と、
前記結合された配列データを前記メモリの第３のアドレスに前記結合毎に順次ストアするストア部とを有し、
前記メモリの前記第１のアドレス及び前記第２のアドレスからロードする複数次元配列データは、前記複数次元のうちの第１の次元の変化より第２の次元の変化を優先した順序で前記メモリに記憶され、
前記メモリの前記第３のアドレスにストアされた複数次元配列データは、前記複数次元のうちの前記第２の次元の変化より前記第１の次元の変化を優先した順序で前記メモリに記憶されることを特徴とするデータ処理装置。
【請求項６】
さらに、命令をデコードすることにより、前記第１の大きさ、前記第２の大きさ、前記第１のアドレス、前記第２のアドレス及び前記第３のアドレスを指定するデコーダを有することを特徴とする請求項５記載のデータ処理装置。
【請求項７】
さらに、前記メモリの前記第３のアドレスにストアされた複数次元配列データをシーケンシャルにロードして第１の演算を行う演算部を有することを特徴とする請求項５又は６記載のデータ処理装置。
【請求項８】
前記演算部は、前記メモリの前記第１のアドレス及び前記第２のアドレスに記憶されている複数次元配列データをシーケンシャルにロードして第２の演算を行うことを特徴とする請求項７記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関する。
【背景技術】
【０００２】
配列の初期サイズを動的に調整する情報処理装置が知られている（例えば、特許文献１参照）。実行対象プログラムは、記憶装置に格納されている。実行手段は、実行対象プログラムを解釈して、ＡＰＩの記述を検出することに応答して、対応するＡＰＩの機能を呼び出して実行する。第１のＡＰＩは、実行手段によって呼び出され得る、所定のサイズの配列を割り付ける。第２のＡＰＩは、引数として拡張すべき配列の情報を受け取り、配列よりもサイズの大きい配列を割り付ける。第１及び第２のＡＰＩは、実行時に、それぞれ割り付けた配列をサンプリング頻度に基づきプロファイル対象とすると共に、割り付けた配列のプロファイル情報格納領域に、拡張前の配列の割付呼び出しコンテキストを格納するコードに変換される。プロファイラは、プロファイル対象の配列へのアクセスの検出に応答して実行手段によって呼び出され得る、アクセスを検出された配列に対応するプロファイル情報格納領域に配列へのアクセス情報を格納する。動的コンパイラは、次に実行すべき実行対象プログラムのコード部分を動的にコンパイルする。動的コンパイラは、コード部分に含まれる配列の割付呼び出しコンテキストをインライン展開し、コンテキストに関連づけられた全アクセス情報に基づき決定される配列のサイズを配列の割り付け初期サイズとしてコード部分に埋め込む。
【０００３】
また、撮像装置、検出装置、通信装置、制御装置、及び一般信号処理装置のうちの１つのコンポーネントであり、デジタル信号を処理するためのデジタル回路からなるデジタル信号処理用装置が知られている（例えば、特許文献２参照）。第２のシステムソルバーは、行列Ｔ０及びベクトルＹ０の要素からなる信号Ｓｓを解Ｘから計算する。システムプロセッサは、解Ｘから信号Ｊを計算する。解Ｘ、信号Ｓｓ、及び信号Ｊは、ビームパターン、目標物の物理的特徴、送信音声、画像及びデータ、機械的、電気的、化学的、又は生物学的コンポーネントを制御するための情報、画像、及び音声及びデータのフレームのうち少なくとも１つを表す。第２のシステムソルバーは、信号Ｓｓをもとに、変換した係数行列Ｔｔからなる変換した連立方程式を生成する。
【０００４】
また、関係テーブルを用いたデータベース装置が知られている（例えば、特許文献３参照）。データベース記憶部は、関係テーブルの各タップルに対応する拡張可能配列の要素の位置を示す位置情報をキー値として登録した要素位置データを格納する。位置情報は、要素が属する拡張可能配列の区画の位置を示す区画位置情報と、区画内における要素の位置を示す、タップルの各属性の属性値に一意に対応した値を所定の属性順に並べた座標情報と、を含む情報である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１１４５５２号公報
【特許文献２】特開２０１０−２６２６２２号公報
【特許文献３】特開２０１０−１９８２１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メモリに記憶されている配列データの処理の高速化が望まれている。データのアクセス時間が長いと、データ処理時間が長期化してしまう。特に、データ量が多くなると、データのアクセス回数が増加するため、データのアクセス時間の短縮化が望まれる。
【０００７】
本発明の目的は、配列データのアクセス時間を短縮することができるデータ処理装置を提供することである。
【課題を解決するための手段】
【０００８】
データ処理装置は、メモリの第１のアドレスに記憶されている第１の複数次元配列データのうちの一部の複数次元配列データを指定された大きさの単位で順次ロードするロード部と、前記ロードされた一部の複数次元配列データのうちの第１の抽出位置の第１の配列データ及び第２の抽出位置の第２の配列データを前記ロード毎に順次抽出する抽出部と、前記第１の配列データを前記メモリの第２のアドレスに前記抽出毎に順次ストアし、前記第２の配列データを前記メモリの第３のアドレスに前記抽出毎に順次ストアするストア部とを有し、前記メモリの前記第１のアドレスからロードする前記第１の複数次元配列データは、前記複数次元のうちの第２の次元の変化より第１の次元の変化を優先した順序で前記メモリに記憶され、前記メモリの前記第２のアドレス及び前記第３のアドレスにストアされた複数次元配列データは、前記複数次元のうちの前記第１の次元の変化より前記第２の次元の変化を優先した順序で前記メモリに記憶される。
【発明の効果】
【０００９】
メモリの第２のアドレス及び第３のアドレスにストアされた複数次元配列データをシーケンシャルにロードすることできるので、複数次元配列データのアクセス時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態によるデータ処理装置の構成例を示す図である。
【図２】図２は、ＬＭＭＳＥの平滑化処理の例を示す図である。
【図３】図３は、ＣＱＩの推定処理の例を示す図である。
【図４】図４は、データメモリに記憶される３次元配列データの順序を示す図である。
【図５】図５（Ａ）はデータがデータメモリ内で連続して配置されている例を示す図であり、図５（Ｂ）は、データがデータメモリ内で不連続で配置されている例を示す図である。
【図６】図６は、抽出命令の動作を説明するための図である。
【図７】図７は、結合命令の動作を説明するための図である。
【図８】図８は、結合命令及び抽出命令を用いてデータ配置の並び替えを行う例を示す図である。
【図９】図９は、結合命令により並び替える例を示す図である。
【図１０】図１０は、抽出命令により並び替える例を示す図である。
【発明を実施するための形態】
【００１１】
図１は、本実施形態によるデータ処理装置の構成例を示す図である。データ処理装置は、命令メモリ１０１、デジタルシグナルプロセッサ（ＤＳＰ：Digital Signal Processor）１０２及びデータメモリ１０３を有する。デジタルシグナルプロセッサ１０２は、デコーダ１１１、並び替え部１１２、演算部１１３、セレクタ１１４、ダイレクトメモリアクセスコントローラ１１５及び１１６を有する。命令メモリ１０１は、命令を記憶し、命令をデコーダ１１１に出力する。デコーダ１１１は、命令メモリ１０１に記憶されている命令をデコードし、並び替え部１１２、演算部１１３、セレクタ１１４、ダイレクトメモリアクセスコントローラ１１５及び１１６に制御信号及びパラメータを出力する。ダイレクトメモリアクセスコントローラ１１６は、デコーダ１１１の制御により、データメモリ１０３に記憶されているデータをロードして並び替え部１１２及び／又は演算部１１３に出力するロード部である。並び替え部１１２は、デコーダ１１１の制御により、ダイレクトメモリアクセスコントローラ１１６から入力したデータを並び替えてセレクタ１１４に出力する。演算部１１３は、デコーダ１１１の制御により、ダイレクトメモリアクセスコントローラ１１６から入力したデータに対して種々の演算を行ってセレクタ１１４に出力する。セレクタ１１４は、デコーダ１１１の制御により、並び替え部１１２の出力データ又は演算部１１３の出力データを選択してダイレクトメモリアクセスコントローラ１１５に出力する。ダイレクトメモリアクセスコントローラ１１５は、デコーダ１１１の制御により、セレクタ１１４から入力したデータをデータメモリ１０３にストアするストア部である。
【００１２】
デジタルシグナルプロセッサ１０２は、例えば無線通信のデータ処理のため、複数次元配列データ（２次元以上の配列データ）に対して種々の演算を行う。演算部１１３は、無線通信のデータ処理として、例えば、線形最小二乗平均誤差（ＬＭＭＳＥ：Linear Minimum Mean Square Error）の平滑化処理（図２）、及びチャンネル品質指標（ＣＱＩ：Channel Quality Indicator）の推定処理（図３）を行う。
【００１３】
図２は、ＬＭＭＳＥの平滑化処理の例を示す図である。演算部１１３は、次式（１）により、３次元配列データｈZF_CSI（ａ，ｂ，ｋ＋ｍ−Ｌmmse）及び係数ＷMid（ｍ）の内積を演算することにより、３次元配列データｈCSI（ａ，ｂ，ｋ）を求める。この際、第１の次元ａ及び第２の次元ｂの各値に対して、第３の次元ｋを変化させながら内積を行う。
【００１４】
【数１】
2015087856.tif 000003
【００１５】
ここで、３次元配列データｈZF_CSI（ａ，ｂ，ｋ）は、第１の次元ａ、第２の次元ｂ及び第３の次元ｋを有する。第１の次元ａは、受信アンテナ数であり、例えば１〜４（ａ＝０〜３）の範囲の整数である。第２の次元ｂは、送信アンテナ数であり、例えば１〜４（ｂ＝０〜３）の範囲の整数である。第３の次元ｋは、リソースブロック（ＲＢ）数であり、例えば１〜１００（ｋ＝０〜９９）の範囲の整数である。上記のように、３次元配列データｈCSI（ａ，ｂ，ｋ）は、３次元配列データｈZF_CSI（ａ，ｂ，ｋ）を基に演算される。
【００１６】
図３は、ＣＱＩの推定処理の例を示す図である。３次元行列（配列）データＨ（ａ，ｂ，ｋ）は、第１の次元ａ、第２の次元ｂ及び第３の次元ｋを有する。第１の次元ａは、受信アンテナ数であり、例えば１〜４（ａ＝０〜３）の範囲の整数である。第２の次元ｂは、送信アンテナ数であり、例えば１〜４（ｂ＝０〜３）の範囲の整数である。第３の次元ｋは、リソースブロック数であり、例えば１〜１００（ｋ＝０〜９９）の範囲の整数である。２次元行列データＨ（ｋ）は、３次元行列（配列）データＨ（ａ，ｂ，ｋ）のうちの次元ｋの値が指定された一部の２次元行列データである。演算部１１３は、次式（２）により、次元ｋの各値について、２次元行列データＨ（ｋ）及びそのエルミート行列データＨ（ｋ）Hの積を演算することにより、３次元配列データΓtmpを求める。この際、第３の次元ｋの各値に対して、第１の次元ａ及び第２の次元ｂを変化させながら行列Ｈ（ａ，ｂ，ｋ）の積を演算する。
【００１７】
【数２】
2015087856.tif 000004
【００１８】
図４は、データメモリ１０３に記憶される３次元配列データの順序を示す図である。図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）及び図３の３次元配列データＨ（ａ，ｂ，ｋ）は、データメモリ１０３内の一次元のアドレスに記憶される。そのため、図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）及び図３の３次元配列データＨ（ａ，ｂ，ｋ）は、第１の次元ａの変化、第２の次元ｂの変化及び第３の次元ｋの変化に優先順位をつけて、データメモリ１０３の一次元のアドレスに順番に記憶させる必要がある。
【００１９】
図４に示すように、データメモリ１０３のアドレスに対して、図３の３次元配列データＨ（ａ，ｂ，ｋ）を、第１の次元ａの変化、第２の次元ｂの変化、第３の次元ｋの変化の順番の優先順位で、３次元配列データｈ（ａ，ｂ，ｋ）として記憶する場合を説明する。ここで、演算部１１３は、上式（２）のように、図３の３次元配列データＨ（ａ，ｂ，ｋ）に対して、第１の次元ａ及び第２の次元ｂを変化させ、２次元配列データＨ（ｋ）の行列積を演算する。配列データ４０１は、第３の次元ｋを０に指定し、第１の次元ａ及び第２の次元ｂを順次変化させたデータであり、アドレスに対して連続的に配列されたシーケンシャルなデータである。したがって、演算部１１３は、上式（２）の演算を行う際には、配列データＨ（ｋ）のデータ４０１をデータメモリ１０３からシーケンシャルにロードすることができる。
【００２０】
これに対し、図４に示すように、データメモリ１０３のアドレスに対して、図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）を、第１の次元ａの変化、第２の次元ｂの変化、第３の次元ｋの変化の順番の優先順位で、３次元配列データｈ（ａ，ｂ，ｃ）として記憶する場合を説明する。ここで、演算部１１３は、上式（１）のように、図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）に対して、第３の次元ｋを変化させ、内積を演算する。配列データ４０２は、第１の次元ａ及び第２の次元ｂを０に指定し、第３の次元ｋを順次変化させたデータであり、アドレスに対して不連続に配列されたデータである。したがって、演算部１１３は、上式（１）の演算を行う際には、配列データｈZF_CSI（ａ，ｂ，ｋ）のデータ４０２をデータメモリ１０３から不連続でロードする。
【００２１】
以上のように、図３の３次元配列データＨ（ａ，ｂ，ｋ）は、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序で演算され、図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）は、第３の次元ｋの変化が第１の次元ａの変化及び第２の次元ｂの変化より優先した順序で演算される。そのため、図３の３次元配列データＨ（ａ，ｂ，ｋ）は、図４の配列データ４０１のように、アドレスに対して連続した順序でロードされ、シーケンシャルロードが可能である。これに対して、図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）は、図４の配列データ４０２のように、アドレスに対して不連続の順序でロードされ、シーケンシャルロードが不可である。このように、図３の３次元配列データＨ（ａ，ｂ，ｋ）及び図２の３次元配列データｈZF_CSI（ａ，ｂ，ｋ）の両方がシーケンシャルロードできるようなデータ配置は存在しない。
【００２２】
図５（Ａ）は、図４のデータ４０１がデータメモリ１０３内で連続して配置されている例を示す図である。ダイレクトメモリアクセスコントローラ１１６は、データメモリ１０３に対してラインＬＮ単位でアクセスする。すなわち、ダイレクトメモリアクセスコントローラ１１６は、１サイクルで、１ラインＬＮのデータをロードする。例えば、データ４０１が１ラインＬＮ内に含まれていれば、ダイレクトメモリアクセスコントローラ１１６は、１サイクルで、データ４０１をロードすることができる。
【００２３】
図５（Ｂ）は、図４のデータ４０２がデータメモリ１０３内で不連続で配置されている例を示す図である。データ４０２は複数のラインＬＮに含まれているので、ダイレクトメモリアクセスコントローラ１１６は、そのラインＬＮの数に対応する複数サイクルで、データ４０２をロードする。
【００２４】
以上のように、図５（Ａ）の場合は、データ４０１のシーケンシャルロードが可能であるので、アクセス回数が少なく、処理速度が速く、消費電力が小さい。これに対し、図５（Ｂ）の場合は、データ４０２のシーケンシャルロードが不可であるので、アクセス回数が多く、処理速度が遅く、消費電力が大きい。そこで、上式（１）及び（２）の両方の演算で、シーケンシャルロードを可能する技術が望まれる。しかし、上記のように、上式（１）及び（２）の両方でシーケンシャルロードが可能なデータ配置は存在せず、いずれかの演算でシーケンシャルロードが不可になってしまう。
【００２５】
また、下記の３点の特徴があるため、問題を複雑化させている。第１に、配列データが２次元以上の複数次元配列データである。第２に、配列の寸法は演算により異なる。第３に、配列データが大容量のため、データ構造全体をデジタルシグナルプロセッサ１０２内部のレジスタ／バッファにロードすることは難しい。
【００２６】
本実施形態では、複数の演算でシーケンシャルロードを可能にするため、結合命令ｖｍｅｒｇｅを用いる。結合命令ｖｍｅｒｇｅは、図９に示すように、第３の次元ｋの変化が第１の次元ａの変化及び第２の次元ｂの変化より優先した順序である上式（１）の演算に向いたデータ配置９０１を、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序である上式（２）の演算に向いたデータ配置９０２に並び替えるための命令である。
【００２７】
図７は、結合命令ｖｍｅｒｇｅの動作を説明するための図である。結合命令ｖｍｅｒｇｅは、下記のニーモニックを有し、命令メモリ１０１に格納される。
ｖｍｅｒｇｅ  ｖｔｙｐｅ  Ｍ，Ｎ，Ａ，Ｂ，Ｃ
【００２８】
ここで、パラメータｖｔｙｐｅは、配列データの各要素が実数又は複素数のいずれであるのかを示す。パラメータＭは、並び替え前の第１の配列データの大きさであり、例えば３である。パラメータＮは、並び替え前の第２の配列データの大きさであり、例えば２である。パラメータＡは、並び替え前の第１の配列データが記憶されているデータメモリ１０３のアドレスである。パラメータＢは、並び替え前の第２の配列データが記憶されているデータメモリ１０３のアドレスである。パラメータＣは、第１の配列データ及び第２の配列データを結合してストアするデータメモリ１０３のアドレスである。
【００２９】
第１のアドレスＡの第１の配列データ及び第２のアドレスＢの第２の配列データの結合は、複数次元配列データ単位で行われる。図７では、２次元配列データの例を示すが、３次元以上の配列データの場合も同様である。
【００３０】
図８は、結合命令ｖｍｅｒｇｅを用いてデータ配置の並び替えを行う例を示す図である。下記の結合命令ｖｍｅｒｇｅを実行させることにより、図８の並び替えを行うことができる。なお、説明の簡単のため、図８では１次元配列データの例を示すが、実際には２次元以上の配列データである。
ｖｍｅｒｇｅ  Ｍ＝１，Ｎ＝１，Ａ＝Ｄ１，Ｂ＝Ｄ２，Ｃ＝Ｄ０
【００３１】
上記の結合命令ｖｍｅｒｇｅは、命令メモリ１０１に記憶される。デコーダ１１１は、命令メモリ１０１内の結合命令ｖｍｅｒｇｅをデコードし、並び替え部１１２、セレクタ１１４、ダイレクトメモリアクセスコントローラ１１５及び１１６に制御信号を出力する。
【００３２】
ダイレクトメモリコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡ＝Ｄ１に記憶されている配列データのうちの大きさＭ＝１の一部の第１の配列データ「０」をロードし、データメモリ１０３の第２のアドレスＢ＝Ｄ２に記憶されている配列データのうちの大きさＮ＝１の一部の第２の配列データ「０」をロードする。並び替え部（結合部）１１２は、ロードされた第１の配列データ「０」及び第２の配列データ「０」を結合する。ダイレクトメモリアクセスコントローラ（ストア部）１１５は、結合された配列データ「０，０」をデータメモリ１０３の第３のアドレスＣ＝Ｄ０にストアする。
【００３３】
次に、ダイレクトメモリコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡ＝Ｄ１＋１に記憶されている配列データのうちの大きさＭ＝１の一部の第１の配列データ「１」をロードし、データメモリ１０３の第２のアドレスＢ＝Ｄ２＋１に記憶されている配列データのうちの大きさＮ＝１の一部の第２の配列データ「１」をロードする。並び替え部（結合部）１１２は、ロードされた第１の配列データ「１」及び第２の配列データ「１」を結合する。ダイレクトメモリアクセスコントローラ（ストア部）１１５は、結合された配列データ「１，１」をデータメモリ１０３の第３のアドレスＣ＝Ｄ０＋２にストアする。
【００３４】
次に、ダイレクトメモリコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡ＝Ｄ１＋２に記憶されている配列データのうちの大きさＭ＝１の一部の第１の配列データ「２」をロードし、データメモリ１０３の第２のアドレスＢ＝Ｄ２＋２に記憶されている配列データのうちの大きさＮ＝１の一部の第２の配列データ「２」をロードする。並び替え部（結合部）１１２は、ロードされた第１の配列データ「２」及び第２の配列データ「２」を結合する。ダイレクトメモリアクセスコントローラ（ストア部）１１５は、結合された配列データ「２，２」をデータメモリ１０３の第３のアドレスＣ＝Ｄ０＋４にストアする。上記のように、大きさＭ及びＮの単位で、配列データの最後まで上記の処理を繰り返す。
【００３５】
図９は、第３の次元ｋの変化が第１の次元ａの変化及び第２の次元ｂの変化より優先した順序である上式（１）の演算に向いたデータ配置９０１を、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序である上式（２）の演算に向いたデータ配置９０２に並び替える例を示す図である。
【００３６】
データ配置９０１では、第１のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第２のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第３のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第４のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第５のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第６のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第７のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第８のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第９のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１０のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１１のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１２のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１３のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。第１４のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。第１５のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。第１６のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。以上のように、配列データは、第３の次元ｋの変化、第１の次元ａの変化、第２の次元ｂの変化の順で優先した順番で記憶されている。
【００３７】
データ配置９０２では、第１のラインは、第３の次元ｋ＝０であり、第１の次元ａ及び第２の次元ｂが変化する配列データを記憶する。第２のラインは、第３の次元ｋ＝１であり、第１の次元ａ及び第２の次元ｂが変化する配列データを記憶する。第３のラインは、第３の次元ｋ＝２であり、第１の次元ａ及び第２の次元ｂが変化する配列データを記憶する。すなわち、各ラインは、第３の次元ｋの値が同じ配列データを記憶する。データ配置９０２では、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序で配列データが記憶されている。例えば、配列データは、第１の次元ａの変化、第２の次元ｂの変化、第３の次元ｋの変化の順で優先した順番で記憶されている。
【００３８】
デジタルシグナルプロセッサ１０２は、１５個の結合命令ｖｍｅｒｇｅを実行することにより、データ配置９０１をデータ配置９０２に並び替えることができる。第１の結合命令ｖｍｅｒｇｅでは、Ｍ＝１、Ｎ＝１で、第１のライン及び第２のラインの結合を行う。第２の結合命令ｖｍｅｒｇｅでは、Ｍ＝２、Ｎ＝１で、第１の結合命令ｖｍｅｒｇｅにより結合された配列データと第３のラインとの結合を行う。第３の結合命令ｖｍｅｒｇｅでは、Ｍ＝３、Ｎ＝１で、第２の結合命令ｖｍｅｒｇｅにより結合された配列データと第４のラインとの結合を行う。第４の結合命令ｖｍｅｒｇｅでは、Ｍ＝４、Ｎ＝１で、第３の結合命令ｖｍｅｒｇｅにより結合された配列データと第５のラインとの結合を行う。第５の結合命令ｖｍｅｒｇｅでは、Ｍ＝５、Ｎ＝１で、第４の結合命令ｖｍｅｒｇｅにより結合された配列データと第６のラインとの結合を行う。第６の結合命令ｖｍｅｒｇｅでは、Ｍ＝６、Ｎ＝１で、第５の結合命令ｖｍｅｒｇｅにより結合された配列データと第７のラインとの結合を行う。第７の結合命令ｖｍｅｒｇｅでは、Ｍ＝７、Ｎ＝１で、第６の結合命令ｖｍｅｒｇｅにより結合された配列データと第８のラインとの結合を行う。第８の結合命令ｖｍｅｒｇｅでは、Ｍ＝８、Ｎ＝１で、第７の結合命令ｖｍｅｒｇｅにより結合された配列データと第９のラインとの結合を行う。第９の結合命令ｖｍｅｒｇｅでは、Ｍ＝９、Ｎ＝１で、第８の結合命令ｖｍｅｒｇｅにより結合された配列データと第１０のラインとの結合を行う。第１０の結合命令ｖｍｅｒｇｅでは、Ｍ＝１０、Ｎ＝１で、第９の結合命令ｖｍｅｒｇｅにより結合された配列データと第１１のラインとの結合を行う。第１１の結合命令ｖｍｅｒｇｅでは、Ｍ＝１１、Ｎ＝１で、第１０の結合命令ｖｍｅｒｇｅにより結合された配列データと第１２のラインとの結合を行う。第１２の結合命令ｖｍｅｒｇｅでは、Ｍ＝１２、Ｎ＝１で、第１１の結合命令ｖｍｅｒｇｅにより結合された配列データと第１３のラインとの結合を行う。第１３の結合命令ｖｍｅｒｇｅでは、Ｍ＝１３、Ｎ＝１で、第１２の結合命令ｖｍｅｒｇｅにより結合された配列データと第１４のラインとの結合を行う。第１４の結合命令ｖｍｅｒｇｅでは、Ｍ＝１４、Ｎ＝１で、第１３の結合命令ｖｍｅｒｇｅにより結合された配列データと第１５のラインとの結合を行う。第１５の結合命令ｖｍｅｒｇｅでは、Ｍ＝１５、Ｎ＝１で、第１４の結合命令ｖｍｅｒｇｅにより結合された配列データと第１６のラインとの結合を行うことにより、データ配置９０２を生成することができる。
【００３９】
以上のように、ダイレクトメモリアクセスコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡに記憶されている複数次元配列データのうちの一部の第１の配列データを第１の大きさＭの単位で順次ロードし、データメモリ１０３の第２のアドレスＢに記憶されている複数次元配列データのうちの一部の第２の配列データを第２の大きさＮの単位で順次ロードする。並び替え部（結合部）１１２は、ロードされた第１の配列データ及び第２の配列データをロード毎に順次結合する。ダイレクトメモリアクセスコントローラ（ストア部）１１５は、結合された配列データをデータメモリ１０３の第３のアドレスＣに結合毎に順次ストアする。
【００４０】
データメモリ１０３の第１のアドレスＡ及び第２のアドレスＢからロードする複数次元配列データ９０１は、複数次元のうちの次元ａ，ｂの変化より次元ｋの変化を優先した順序でデータメモリ１０３に記憶されている。データメモリ１０３の第３のアドレスＣにストアされた複数次元配列データ９０２は、複数次元のうちの次元ｋの変化より次元ａ，ｂの変化を優先した順序でデータメモリ１０３に記憶される。
【００４１】
デコーダ１１１は、結合命令ｖｍｅｒｇｅをデコードすることにより、第１の大きさＭ、第２の大きさＮ、第１のアドレスＡ、第２のアドレスＢ及び第３のアドレスＣを指定する。
【００４２】
並び替え後、演算部１１３は、データメモリ１０３の第３のアドレスＣにストアされた複数次元配列データ９０２をシーケンシャルにロードして上式（１）の第１の演算を行う。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
【００４３】
並び替え前、演算部１１３は、データメモリ１０３の第１のアドレスＡ及び第２のアドレスＢに記憶されている複数次元配列データ９０１をシーケンシャルにロードして第２の演算を行うことにより、例えば図３の３次元配列データＨ（ａ，ｂ，ｋ）を生成することができる。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
【００４４】
また、本実施形態では、複数の演算でシーケンシャルロードを可能にするため、抽出命令ｖｓｐｌｉｔを用いる。抽出命令ｖｓｐｌｉｔは、図１０に示すように、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序である上式（２）の演算に向いたデータ配置９０２を、第３の次元ｋの変化が第１の次元ａの変化及び第２の次元ｂの変化より優先した順序である上式（１）の演算に向いたデータ配置９０１に並び替えるための命令である。
【００４５】
図６は、抽出命令ｖｓｐｌｉｔの動作を説明するための図である。抽出命令ｖｓｐｌｉｔは、下記のニーモニックを有し、命令メモリ１０１に格納される。
ｖｓｐｌｉｔ  ｖｔｙｐｅ  Ｍ，Ｎ，Ｋ，Ａ，Ｂ，Ｃ
【００４６】
ここで、パラメータｖｔｙｐｅは、配列データの各要素が実数又は複素数のいずれであるのかを示す。パラメータＭは、並び替え前の複数次元配列データのうちの並び替えを行う一部の複数次元配列データの大きさであり、例えば５である。パラメータＮは、上記の大きさＭの一部の複数次元配列データのうちの第１の抽出位置を示し、例えば２である。パラメータＫは、上記の大きさＭの一部の複数次元配列データのうちの第２の抽出位置を示し、例えば５である。パラメータＡは、並び替え前の複数次元配列データが記憶されているデータメモリ１０３のアドレスである。パラメータＢは、第１の抽出位置Ｎの配列データを抽出してストアするデータメモリ１０３のアドレスである。パラメータＣは、第２の抽出位置Ｋの配列データを抽出してストアするデータメモリ１０３のアドレスである。
【００４７】
第１の抽出位置Ｎ及び第２の抽出位置Ｋの配列データの抽出は、配列データ単位で行われる。図６では、２次元配列データの例を示すが、３次元以上の配列データの場合も同様である。
【００４８】
図８は、抽出命令ｖｓｐｌｉｔを用いてデータ配置の並び替えを行う例を示す図である。下記の抽出命令ｖｓｐｌｉｔを実行させることにより、図８の並び替えを行うことができる。なお、説明の簡単のため、図８では１次元配列データの例を示すが、実際には２次元以上の配列データである。
ｖｓｐｌｉｔ  Ｍ＝２，Ｎ＝１，Ｋ＝２，Ａ＝Ｄ０，Ｂ＝Ｄ１，Ｃ＝Ｄ２
【００４９】
上記の抽出命令ｖｓｐｌｉｔは、命令メモリ１０１に記憶される。デコーダ１１１は、命令メモリ１０１内の抽出命令ｖｓｐｌｉｔをデコードし、並び替え部１１２、セレクタ１１４、ダイレクトメモリアクセスコントローラ１１５及び１１６に制御信号を出力する。
【００５０】
ダイレクトメモリコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡ＝Ｄ０に記憶されている配列データのうちの大きさＭ＝２の一部の配列データ「０，０」をロードする。次に、並び替え部（抽出部）１１２は、ロードされた一部の配列データ「０，０」のうちの第１の抽出位置Ｎ＝１の第１の配列データ「０」及び第２の抽出位置Ｋ＝２の第２の配列データ「０」を抽出する。次に、ダイレクトメモリアクセスコントローラ（ストア部）１１５は、第１の抽出位置Ｎ＝１の第１の配列データ「０」をデータメモリ１０３の第２のアドレスＢ＝Ｄ１にストアし、第２の抽出位置Ｎ＝２の第２の配列データ「０」をデータメモリ１０３の第３のアドレスＣ＝Ｄ２にストアする。
【００５１】
次に、ダイレクトメモリコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡ＝Ｄ０＋２に記憶されている配列データのうちの大きさＭ＝２の一部の配列データ「１，１」をロードする。次に、並び替え部（抽出部）１１２は、ロードされた一部の配列データ「１，１」のうちの第１の抽出位置Ｎ＝１の第１の配列データ「１」及び第２の抽出位置Ｋ＝２の第２の配列データ「１」を抽出する。次に、ダイレクトメモリアクセスコントローラ（ストア部）１１５は、第１の抽出位置Ｎ＝１の第１の配列データ「１」をデータメモリ１０３の第２のアドレスＢ＝Ｄ１＋１にストアし、第２の抽出位置Ｎ＝２の第２の配列データ「１」をデータメモリ１０３の第３のアドレスＣ＝Ｄ２＋１にストアする。
【００５２】
次に、ダイレクトメモリコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡ＝Ｄ０＋４に記憶されている配列データのうちの大きさＭ＝２の一部の配列データ「２，２」をロードする。次に、並び替え部（抽出部）１１２は、ロードされた一部の配列データ「２，２」のうちの第１の抽出位置Ｎ＝１の第１の配列データ「２」及び第２の抽出位置Ｋ＝２の第２の配列データ「２」を抽出する。次に、ダイレクトメモリアクセスコントローラ（ストア部）１１５は、第１の抽出位置Ｎ＝１の第１の配列データ「２」をデータメモリ１０３の第２のアドレスＢ＝Ｄ１＋２にストアし、第２の抽出位置Ｎ＝２の第２の配列データ「２」をデータメモリ１０３の第３のアドレスＣ＝Ｄ２＋２にストアする。上記のように、大きさＭの単位で、配列データの最後まで上記の処理を繰り返す。
【００５３】
図１０は、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序である上式（２）の演算に向いたデータ配置９０２を、第３の次元ｋの変化が第１の次元ａの変化及び第２の次元ｂの変化より優先した順序である上式（１）の演算に向いたデータ配置９０１に並び替える例を示す図である。
【００５４】
データ配置９０２では、図９と同様に、第１のラインは、第３の次元ｋ＝０であり、第１の次元ａ及び第２の次元ｂが変化する配列データを記憶する。第２のラインは、第３の次元ｋ＝１であり、第１の次元ａ及び第２の次元ｂが変化する配列データを記憶する。第３のラインは、第３の次元ｋ＝２であり、第１の次元ａ及び第２の次元ｂが変化する配列データを記憶する。すなわち、各ラインは、第３の次元ｋの値が同じ配列データを記憶する。データ配置９０２では、第１の次元ａの変化及び第２の次元ｂの変化が第３の次元ｋの変化より優先した順序で配列データが記憶されている。
【００５５】
データ配置９０１では、図９と同様に、第１のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第２のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第３のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第４のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝０であり、第３の次元ｋが変化する配列データを記憶する。第５のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第６のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第７のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第８のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝１であり、第３の次元ｋが変化する配列データを記憶する。第９のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１０のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１１のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１２のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝２であり、第３の次元ｋが変化する配列データを記憶する。第１３のラインは、第１の次元ａ＝０であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。第１４のラインは、第１の次元ａ＝１であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。第１５のラインは、第１の次元ａ＝２であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。第１６のラインは、第１の次元ａ＝３であり、第２の次元ｂ＝３であり、第３の次元ｋが変化する配列データを記憶する。
【００５６】
デジタルシグナルプロセッサ１０２は、８個の抽出命令ｖｓｐｌｉｔを実行することにより、データ配置９０２をデータ配置９０１に並び替えることができる。第１の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝１、Ｋ＝２にすることにより、データ配置９０１の第１のライン（ａ＝０，ｂ＝０）及び第２のライン（ａ＝１，ｂ＝０）を生成することができる。第２の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝３、Ｋ＝４にすることにより、データ配置９０１の第３のライン（ａ＝２，ｂ＝０）及び第４のライン（ａ＝３，ｂ＝０）を生成することができる。第３の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝５、Ｋ＝６にすることにより、データ配置９０１の第５のライン（ａ＝０，ｂ＝１）及び第６のライン（ａ＝１，ｂ＝１）を生成することができる。第４の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝７、Ｋ＝８にすることにより、データ配置９０１の第７のライン（ａ＝２，ｂ＝１）及び第８のライン（ａ＝３，ｂ＝１）を生成することができる。第５の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝９、Ｋ＝１０にすることにより、データ配置９０１の第９のライン（ａ＝０，ｂ＝２）及び第１０のライン（ａ＝１，ｂ＝２）を生成することができる。第６の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝１１、Ｋ＝１２にすることにより、データ配置９０１の第１１のライン（ａ＝２，ｂ＝２）及び第１２のライン（ａ＝３，ｂ＝２）を生成することができる。第７の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝１３、Ｋ＝１４にすることにより、データ配置９０１の第１３のライン（ａ＝０，ｂ＝３）及び第１４のライン（ａ＝１，ｂ＝３）を生成することができる。第８の抽出命令ｖｓｐｌｉｔでは、Ｍ＝１６、Ｎ＝１５、Ｋ＝１６にすることにより、データ配置９０１の第１５のライン（ａ＝２，ｂ＝３）及び第１６のライン（ａ＝３，ｂ＝３）を生成することができる。
【００５７】
以上のように、ダイレクトメモリアクセスコントローラ（ロード部）１１６は、データメモリ１０３の第１のアドレスＡに記憶されている第１の複数次元配列データのうちの一部の複数次元配列データを指定された大きさＭの単位で順次ロードする。並び替え部（抽出部）１１２は、ロードされた一部の複数次元配列データのうちの第１の抽出位置Ｎの第１の配列データ及び第２の抽出位置Ｋの第２の配列データをロード毎に順次抽出する。ダイレクトメモリアクセスコントローラ（ストア部）１１５は、第１の配列データをデータメモリ１０３の第２のアドレスＢに抽出毎に順次ストアし、第２の配列データをデータメモリ１０３の第３のアドレスＣに抽出毎に順次ストアする。
【００５８】
データメモリ１０３の第１のアドレスＡからロードする第１の複数次元配列データ９０２は、複数次元のうちの次元ｋの変化より次元ａ，ｂの変化を優先した順序でデータメモリ１０３に記憶されている。データメモリ１０３の第２のアドレスＢ及び第３のアドレスＣにストアされた複数次元配列データ９０１は、複数次元のうちの次元ａ，ｂの変化より次元ｋの変化を優先した順序でデータメモリ１０３に記憶される。
【００５９】
デコーダ１１１は、抽出命令ｖｓｐｌｉｔをデコードすることにより、大きさＭ、第１の抽出位置Ｎ、第２の抽出位置Ｋ、第１のアドレスＡ、第２のアドレスＢ及び第３のアドレスＣを指定する。
【００６０】
並び替え後、演算部１１３は、データメモリ１０３の第２のアドレスＢ及び第３のアドレスＣにストアされた複数次元配列データ９０１をシーケンシャルにロードして第１の演算を行う。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
【００６１】
また、並び替え前、演算部１１３は、データメモリ１０３の第１のアドレスＡに記憶されている第１の複数次元配列データ９０２をシーケンシャルにロードして第２の演算を行うことができる。シーケンシャルにロードすることにより、処理の高速化及び低消費電力化を実現することができる。
【００６２】
以上のように、演算に合わせて、配列データを並び替えることで、シーケンシャルアクセスを可能にする。演算は、上式（１）及び（２）に限定されず、種々の演算に適用できる。演算を開始する前に配列データを並び替えることで、シーケンシャルアクセスが可能になり、トータルのメモリアクセス時間を減らすことが可能である。並び替えは、デジタルシグナルプロセッサ１０２に結合命令又は抽出命令を実行させることにより行う。結合命令及び抽出命令によりパラメータを指定することにより、種々の演算に適用可能である。結合及び抽出は、指定された大きさ単位で繰り返すことにより、複数次元配列データ全体をデジタルシグナルプロセッサ１０２の内部に取り込むことなく、並び替えを行うことができる。
【００６３】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６４】
１０１  命令メモリ
１０２  デジタルシグナルプロセッサ
１０３  データメモリ
１１１  デコーダ
１１２  並び替え部
１１３  演算部
１１４  セレクタ
１１５，１１６  ダイレクトメモリアクセスコントローラ
【図１】
2015087856.tif 000005
【図２】
2015087856.tif 000006
【図３】
2015087856.tif 000007
【図４】
2015087856.tif 000008
【図５】
2015087856.tif 000009
【図６】
2015087856.tif 000010
【図７】
2015087856.tif 000011
【図８】
2015087856.tif 000012
【図９】
2015087856.tif 000013
【図１０】
2015087856.tif 000014