JP2016218528A - Data processing device and data processing method - Google Patents
Data processing device and data processing method Download PDFInfo
- Publication number
- JP2016218528A JP2016218528A JP2015099446A JP2015099446A JP2016218528A JP 2016218528 A JP2016218528 A JP 2016218528A JP 2015099446 A JP2015099446 A JP 2015099446A JP 2015099446 A JP2015099446 A JP 2015099446A JP 2016218528 A JP2016218528 A JP 2016218528A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- data
- elements
- circuit
- unit
- 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.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
Description
本発明は、データ処理装置、およびデータ処理方法に関する。 The present invention relates to a data processing apparatus and a data processing method.
従来、無線通信ベースバンド処理などでは、大量の行列演算処理が行われる場合がある。行列演算処理などのように配列型データを扱うには、配列処理アーキテクチャが適している。配列型データを扱うプロセッサとしては、例えば、SIMD(Single Instruction Multiple Data)方式やベクトル方式のプロセッサがある。 Conventionally, a large amount of matrix calculation processing may be performed in wireless communication baseband processing or the like. An array processing architecture is suitable for handling array type data such as matrix operation processing. As a processor that handles array-type data, for example, there is a SIMD (Single Instruction Multiple Data) method or a vector method processor.
また、無線通信ベースバンド処理における行列演算では、入力行列の転置行列や複素共役などを取るような行列変換処理が多く発生する。例えば、SIMDにおける行列演算の一機能として、複数行列の転置行列を得る技術が公知である(例えば、以下特許文献1参照。)。
Further, in matrix operations in wireless communication baseband processing, many matrix transformation processes such as taking the transposed matrix or complex conjugate of the input matrix occur. For example, as one function of matrix calculation in SIMD, a technique for obtaining a transposed matrix of a plurality of matrices is known (for example, refer to
従来、配列型データを扱うプロセッサでは、連続した単位データに同一の演算を施すため、メモリから連続的にデータを供給する。ベースバンド処理における行列演算では、入力行列の転置行列や複素共役を取るなどの行列変換処理が多く発生するため、データメモリからのデータロード回数が増大するという問題点がある。 Conventionally, a processor that handles array type data supplies data continuously from a memory in order to perform the same operation on continuous unit data. Matrix operations in baseband processing often involve matrix transformation processing such as transposing an input matrix or taking complex conjugates, which increases the number of data loads from the data memory.
1つの側面では、本発明は、データロード回数の低減を図ることができるデータ処理装置、およびデータ処理方法を提供することを目的とする。 In one aspect, an object of the present invention is to provide a data processing apparatus and a data processing method capable of reducing the number of data loads.
本発明の一側面によれば、対象の演算命令によってメモリから取得した第1行列を受け付けて、受け付けた前記第1行列と、前記第1行列に含まれる複数の要素と同一の要素を含み前記第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた第2行列と、のうち、前記演算命令が指示する演算対象の行列を出力する変換部と、前記変換部によって出力された前記演算対象の行列に対して、前記演算命令が指示する演算を行う演算部と、を有するデータ処理装置、およびデータ処理方法が提案される。 According to an aspect of the present invention, the first matrix acquired from the memory according to the target operation instruction is received, and the received first matrix includes the same elements as the plurality of elements included in the first matrix. A second matrix in which the arrangement of at least any two of the plurality of elements included in the first matrix is exchanged; a conversion unit that outputs a matrix to be calculated indicated by the calculation instruction; and the conversion A data processing apparatus and a data processing method are proposed that include a calculation unit that performs a calculation instructed by the calculation command on the calculation target matrix output by the calculation unit.
本発明の一態様によれば、データロード回数の低減を図ることができる。 According to one embodiment of the present invention, the number of data loads can be reduced.
以下に添付図面を参照して、本発明にかかるデータ処理装置、およびデータ処理方法の実施の形態を詳細に説明する。 Exemplary embodiments of a data processing device and a data processing method according to the present invention will be explained below in detail with reference to the accompanying drawings.
図1は、データ処理装置による一動作例を示す説明図である。データ処理装置100は、ストリーム型処理を行うコンピュータである。ストリーム型処理とは、メモリ101から一連のデータ(配列型データ)を順次読み出して演算を行い、一連の演算結果をデータメモリに順次書き込む処理である。データ処理装置100の適用の一例は図2に示す。適用対象は、例えば、スマートフォン、携帯電話機、タブレット端末装置、タブレット型PC(Personal Computer)、PHS(Personal Handy−phone System)などである。
FIG. 1 is an explanatory diagram illustrating an operation example of the data processing apparatus. The
また、データ処理装置100は、命令セットとして、単位データを扱う命令群を有する。単位データは、例えば、行列形式のデータである。命令は、例えば、乗算命令、加算命令、逆行列(除算)命令などの演算命令である。
Further, the
ここで、無線通信信号処理などにおいては、大量の行列演算処理が必要となる場合がある。行列演算のような演算量が多い処理を高速に実行することが要求される場合、行列演算のための専用回路が設けられる。上述したように、配列型データを扱うプロセッサとしては、例えば、SIMD方式やベクトルプロセッサ方式のプロセッサがある。 Here, in wireless communication signal processing, a large amount of matrix calculation processing may be required. When it is required to execute a process with a large amount of calculation such as matrix calculation at high speed, a dedicated circuit for matrix calculation is provided. As described above, examples of processors that handle array type data include SIMD and vector processor processors.
SIMD方式のプロセッサでは、単位データとしては例えば128ビットのデータを扱う。ここでは、行列に含まれる要素の各々が32ビットのデータで表される。例えば、2x2行列の単位データ長ULは128ビットであり、SIMD幅が4である場合、データ処理幅PはUL×SIMD幅の512ビットである。 The SIMD processor handles, for example, 128-bit data as unit data. Here, each element included in the matrix is represented by 32-bit data. For example, when the unit data length UL of the 2 × 2 matrix is 128 bits and the SIMD width is 4, the data processing width P is 512 bits of UL × SIMD width.
従来、配列型データを扱うプロセッサでは、連続した単位データに同一の演算を施すため、メモリ101から連続的にデータを供給する。ベースバンド処理における行列演算では、入力行列の転置行列や複素共役を取るなどの行列変換処理が多く発生するため、データメモリからのロード回数が増大するという問題点がある。
Conventionally, a processor that handles array type data supplies data continuously from the
そこで、本実施の形態では、入力行列と該入力行列の複数の要素の並びを入れ替えた変換行列とのうちの演算対象となるいずれかの行列を出力して演算を行う。これにより、行列変換と演算とを1命令で行うことができ、データロード数の低減を図ることができる。したがって、行列演算処理に要する時間の短縮化を図ることができる。 Therefore, in the present embodiment, the calculation is performed by outputting any one of the input matrix and the transformation matrix in which the arrangement of a plurality of elements of the input matrix is replaced. Thereby, matrix conversion and calculation can be performed with one instruction, and the number of data loads can be reduced. Therefore, the time required for the matrix calculation process can be shortened.
まず、データ処理装置100は、変換部111と、演算部112と、を有する。メモリ101には、行列に含まれる複数の要素が特定の並びで記憶されてある。メモリ101は、データメモリである。特定の並びは、例えば、行を優先して順に一次元配列とした並びである。図1の行列Aの場合、{a,b,c,d}のように並べられて記憶される。また、データ処理装置100が、メモリ101から行列を取得する際にも{a,b,c,d}の並びで取得する。
First, the
変換部111は、対象の演算命令によってメモリ101から取得した第1行列を受け付ける。換言すると、第1行列は、入力行列である。図1の例では、第1行列は行列Aである。変換部111は、第1行列と、第2行列と、のうち、演算命令が指示する演算対象の行列を出力する。第2行列は、第1行列に含まれる複数の要素と同一の要素を含む行列であって、第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた行列である。換言すると、第2行列は、例えば、第1行列を変換した変換行列である。第2行列は、例えば、第1行列の転置行列や複素共役の行列である。図1の例では、第2行列は、行列ATであり、行列Aの転置行列である。
The
例えば、2×2行列の転置行列を得るために、データ処理装置100は、行列の1次元配列のデータにおいて2番目の要素と3番目の要素とのそれぞれに選択回路を設けて2番目の要素と3番目の要素とのうちのいずれの要素を出力するかを制御してもよい。変換方法の具体例については後述する。選択回路は、マルチプレクサとも称する。
For example, in order to obtain a transposed matrix of 2 × 2 matrix, the
演算部112は、変換部111によって出力された演算対象の行列に対して、演算命令が指示する演算を行う。演算は、例えば、加算、減算、積算などが挙げられるが、特に限定しない。具体的に、演算部112は、例えば、出力された演算対象の行列に対して他の行列との積算を行う。具体的に、演算部112は、例えば、出力された演算対象の行列を整数倍する。
The
これにより、行列変換と演算とを1つの演算命令で同時に行うことができるため、データロード数の低減を図ることができる。 As a result, matrix transformation and computation can be performed simultaneously with one computation instruction, so that the number of data loads can be reduced.
(データ処理装置100の適用例)
ここで、本実施の形態にかかるデータ処理装置100を携帯電話機のベースバンド処理LSI(Large Scale Integrated circuit)に適用した場合について説明する。
(Application example of data processing apparatus 100)
Here, a case where the
図2は、データ処理装置の適用例を示す説明図である。図2において、ベースバンド処理LSI200は、RF(Radio Frequency)部201と、専用ハードウェア202と、DSP(Digital Signal Processor)203−1〜203−3と、を含む。
FIG. 2 is an explanatory diagram illustrating an application example of the data processing apparatus. 2, the
RF部201は、アンテナ205を介して受信された無線信号の周波数をダウンコンバートし、デジタル信号に変換してバス204に出力する。また、RF部201は、バス204に出力されたデジタル信号をアナログ信号に変換し、無線周波数にアップコンバートして、アンテナ205に出力する。
The
専用ハードウェア202は、例えば、誤り訂正符号を扱うturbo、ビタビアルゴリズムを実行するviterbi、複数のアンテナでデータの送受信を行うためのMIMO(Multi Input Multi Output)等を含む。
The
DSP203−1〜203−3(以下、単に「DSP203」と称する)は、プロセッサ211と、命令メモリ213と、周辺回路212と、データメモリ214と、を含む。プロセッサ211は、CPU221と、データ処理装置100と、を含む。各DSP203にはSearcher(同期)、Demodulator(復調)、Decoder(復号)、Codec(符号化)、Modulator(変調)等、無線通信信号処理の各要素処理が割り当てられる。
The DSPs 203-1 to 203-3 (hereinafter simply referred to as “DSP203”) include a
命令メモリ213は、プログラムなどの命令を記憶するメモリである。データメモリ214は、演算対象となるデータや演算結果などを記憶するメモリ101である。
The
図3は、データ処理装置と周辺の回路との一構成例を示す説明図である。図3には、データ処理装置100と、データ処理装置100の周辺の命令メモリ213およびデータメモリ214と、の簡単な接続例を示す。
FIG. 3 is an explanatory diagram illustrating a configuration example of the data processing device and peripheral circuits. FIG. 3 shows a simple connection example between the
データ処理装置100は、命令デコーダ304と、データ供給回路301と、演算データパス302と、データストア回路303と、を有する。データ供給回路301は、データメモリ214に接続され、データメモリ214からデータを読み出す。演算データパス302は、データ供給回路301に接続され、データ供給回路301から供給される行列の複数の要素に対して、演算命令が指示する演算を行う演算部112である。演算とは、例えば、積算、加算、減算などが挙げられる。
The
データストア回路303は、演算データパス302とデータメモリ214とに接続され、演算データパス302から供給される演算結果をデータメモリ214に書き込む。命令メモリ213には、複数の命令を有する命令列が格納されており、命令列の各命令が命令デコーダ304に順番に供給される。命令デコーダ304は、供給される各命令をデコードし、デコード結果に従いデータ供給回路301、演算データパス302、およびデータストア回路303を制御する。これにより、命令デコーダ304は、データメモリ214へのアクセスおよび演算データパス302による演算処理を実行する。
The
汎用性を考えた場合、行列演算のような配列データを扱うには、SIMD型アーキテクチャが適する。SIMD型アーキテクチャでは、単位データとして例えば32ビットのスカラデータ、行列、ベクトルなどを扱う。例えばSIMD幅が4のシステムであれば、データを4つ並べた長さ4のベクトルを対象として、ベクトルの4つの要素のそれぞれを並列処理することにより、高速に演算を実行する。このようなSIMD型アーキテクチャでは、一般に、例えば単位データ長ULが32ビット、SIMD幅が4、データ処理幅Pが128(=4×32)ビット等に固定される。 In consideration of versatility, SIMD type architecture is suitable for handling array data such as matrix operations. In the SIMD type architecture, for example, 32-bit scalar data, a matrix, a vector, and the like are handled as unit data. For example, if the system has a SIMD width of 4, a vector having a length of 4 in which four pieces of data are arranged is processed, and each of the four elements of the vector is processed in parallel, thereby executing a calculation at high speed. In such a SIMD type architecture, for example, the unit data length UL is fixed to 32 bits, the SIMD width is 4, the data processing width P is fixed to 128 (= 4 × 32) bits, and the like.
本実施の形態では、ストリーム処理アーキテクチャのプロセッサにおいて、単位データ長やSIMD幅等を可変なパラメタとしたハードウェア構成とする。これにより、様々な単位データ長の命令を定義できる。このようなハードウェア構成では、単位データ長ULとSIMD幅とにより決まるデータ処理幅P=UL×SIMDが、演算命令により異なることになる。 In the present embodiment, the processor of the stream processing architecture has a hardware configuration in which unit data length, SIMD width, and the like are variable parameters. As a result, commands having various unit data lengths can be defined. In such a hardware configuration, the data processing width P = UL × SIMD determined by the unit data length UL and the SIMD width differs depending on the operation instruction.
図4は、演算データパスによる演算例を示す説明図である。演算データパス302は、例えば、データ供給回路301から行列に含まれる複数の要素を受け付けると、受け付けた複数の要素に基づき行列演算を行う。データ供給回路301から受け付ける複数の要素は、例えば、第1のソースデータsrc0や第2のソースデータsrc1である。図4に示すように、データ供給回路301内のラップアラウンド回路401および、行列変換回路402は、ソースデータごとに用意されてもよい。図4の例では、第1のソースデータsrc0および第2のソースデータsrc1の各々は、2×2の行列である。行列の各要素は、例えば、実数行列の場合に16ビットであり、複素数行列の場合に32ビットであるが、特に限定しない。
FIG. 4 is an explanatory diagram illustrating a calculation example using a calculation data path. For example, when a plurality of elements included in a matrix are received from the
演算データパス302は、命令デコーダ304による演算命令のデコード結果に従い、行列同士の演算を行う。図4の例では、演算は積算である。演算データパス302はSIMD型アーキテクチャであり、1つの命令による演算を複数の行列に対して実行する。図4に示す演算データパス302は、4並列に演算処理を行うことができる。
The
上述したように、例えば、入力行列の転置行列などを演算データパス302により求めた後に演算に利用する場合、入力行列に対する転置行列を得るための命令と、転置行列を利用する演算を行う命令と、のように複数の命令の実行により最終的な演算結果が得られる。具体的に、例えば、転置行列を得るための命令によって入力行列がデータメモリ214からロードされて転置行列が得られた後に転置行列がデータメモリ214に格納される。そして、転置行列を利用する演算を行う命令によってデータメモリ214から転置行列がロードされて転置行列を利用する演算が行われる。このように、演算と行列変換とが異なる命令実行であるような場合に、ロード数が増大して全体の処理に時間がかかるという問題点がある。
As described above, for example, when the transposed matrix of the input matrix is obtained by the
図5は、転置行列に変換する例を示す説明図である。本実施の形態では、上述したように、例えば行列を一次元配列で表す場合には行を優先して表す。ここでは、2×2の入力行列から転置行列を得る例を示す。図5(1)に示すように、入力行列A{a,b,c,d}から転置行列AT{a,c,b,d}を得るには、要素「b」と要素「c」の位置を入れ替えればよい。 FIG. 5 is an explanatory diagram illustrating an example of conversion into a transposed matrix. In the present embodiment, as described above, for example, when a matrix is represented by a one-dimensional array, the rows are preferentially represented. Here, an example is shown in which a transposed matrix is obtained from a 2 × 2 input matrix. As shown in FIG. 5A, in order to obtain the transposed matrix A T {a, c, b, d} from the input matrix A {a, b, c, d}, the element “b” and the element “c” What is necessary is just to swap the position of.
そこで、図5(2)に示すように、図4に示す行列変換回路402は、転置行列オンオフ信号によって「b」と「c」の要素を入れ替えて出力するマルチプレクサを設けることによって、2×2の入力行列から転置行列または入力行列そのものを得ることができる。
Therefore, as shown in FIG. 5 (2), the
例えば、マルチプレクサ501−1とマルチプレクサ501−2とはいずれもbとcを入力とする。例えば、転置行列オンオフ信号がオンを示す場合に、マルチプレクサ501−1はcを選択して出力し、マルチプレクサ501−2はbを選択して出力する。これにより、転置行列ATを得ることができる。一方、例えば、転置行列オンオフ信号がオフを示す場合に、マルチプレクサ501−1はbを選択して出力し、マルチプレクサ501−2はcを選択して出力する。これにより、入力行列Aをそのまま得ることができる。 For example, both the multiplexer 501-1 and the multiplexer 501-2 have b and c as inputs. For example, when the transposed matrix ON / OFF signal indicates ON, the multiplexer 501-1 selects and outputs c, and the multiplexer 501-2 selects and outputs b. Thereby, the transposed matrix AT can be obtained. On the other hand, for example, when the transposed matrix ON / OFF signal indicates OFF, the multiplexer 501-1 selects and outputs b, and the multiplexer 501-2 selects and outputs c. Thereby, the input matrix A can be obtained as it is.
(データ処理装置100の機能的構成例)
図6は、データ処理装置の機能的構成例を示す説明図である。データ処理装置100は、例えば、バッファ601と、変換部111と、演算部112と、を有する。
(Functional configuration example of the data processing apparatus 100)
FIG. 6 is an explanatory diagram illustrating a functional configuration example of the data processing device. The
また、各部は、論理積回路であるAND、否定論理回路であるINVERTER、論理和回路であるORや、ラッチ回路であるFF(Flip Flop)などの素子によって形成されてもよい。また、各部は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によって実現されてもよい。具体的には、たとえば、上述した各部の機能をハードウェア記述言語などによってネットリストに機能定義し、そのネットリストを論理合成してASICやPLDに与えることにより、各部を実現してもよい。 Each unit may be formed by an element such as an AND circuit that is a logical product circuit, an INVERTER that is a negative logic circuit, an OR that is a logical sum circuit, or an FF (Flip Flop) that is a latch circuit. Each unit may be realized by an application-specific IC (hereinafter simply referred to as “ASIC”) such as a standard cell or a structured ASIC (Application Specific Integrated Circuit), or a PLD (Programmable Logic Device) such as an FPGA. Specifically, for example, the functions of the respective units described above may be defined in a netlist using a hardware description language or the like, and the netlist may be logically synthesized and provided to the ASIC or PLD to implement each unit.
変換部111は、対象の演算命令によってメモリ101から取得した第1行列を受け付ける。メモリ101は、例えば、上述したデータメモリ214である。そして、変換部111は、受け付けた第1行列と、第2行列と、のうち、演算命令が指示する演算対象の行列を出力する。第2行列は、第1行列に含まれる複数の要素と同一の要素を含む行列であって、第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた行列である。
The
演算部112は、変換部111によって出力された演算対象の行列に対して、演算命令が指示する演算を行う。演算部112は、具体的に、例えば、上述した演算データパス302である。
The
変換部111は、選択部611と、選択制御部612と、共役部613と、を有する。選択部611は、第1行列と、第2行列と、のうち、いずれかを出力する。選択制御部612は、演算命令によって、第1行列と、第2行列と、のうち、いずれかを選択部611に出力させる制御を行う。
The
また、選択制御部612は、記憶部621を有する。記憶部621は、行の要素の数および列の要素の数に対応する第1行列に含まれる特定の並びの複数の要素について選択部611に出力させる第1行列に含まれる複数の要素の並びを指示する制御信号の値を記憶する。選択制御部612は、演算命令が指示する演算対象の行列についての行の要素の数および列の要素の数に基づいて、記憶部621から制御信号の値を読み出して選択部611に出力する。記憶部621は、例えば、後述する図9に示すインデックステーブルである。
The
選択部611は、第1行列に含まれる複数の要素を、選択制御部612から出力された制御信号が指示する並びにした複数の要素を含む演算対象の行列を出力する。
The
バッファ601は、例えば、第1行列に含まれる複数の要素の数以上の所定数の要素を格納可能である。また、バッファ601は、対象の演算命令によってメモリ101から取得した第1行列に含まれる複数の要素を特定の並びで格納する。本実施の形態では、第1行列の行の要素を優先して格納する。
For example, the
選択部611は、バッファ601に格納された所定数の要素を入力可能な所定数の選択回路の各々が、バッファ601に格納された第1行列に含まれる複数の要素のうちのいずれかを選択して出力する。選択制御部612は、バッファ601に格納された所定数の要素のうち、選択回路の各々に選択させる要素を指示する。
The
また、共役部613は、演算対象の行列に含まれる複数の要素の各々が虚部と実部とを有する場合に、演算対象の行列に含まれる複数の要素の各々が有する虚部の符号を入れ替えて、入れ替えた後の前記演算対象の行列を出力する。
In addition, the
また、入力行列である第1行列は、行および列の要素の数が互いに同じ複数の第1行列であってもよい。また、変換後の行列である第2行列は、行および列の要素の数が互いに同じ複数の第2行列であってもよい。また、複数の第2行列の各々は、複数の第2行列の各々に対応する複数の第1行列の各々について第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた行列である。 The first matrix that is an input matrix may be a plurality of first matrices having the same number of row and column elements. In addition, the second matrix that is the matrix after conversion may be a plurality of second matrices having the same number of row and column elements. Each of the plurality of second matrices includes an arrangement of at least any two of the plurality of elements included in the first matrix for each of the plurality of first matrices corresponding to each of the plurality of second matrices. This is the replaced matrix.
以上を踏まえて、各部に対応する回路を用いて詳細に動作を説明する。 Based on the above, the operation will be described in detail using a circuit corresponding to each part.
図7は、行列変換例を示す説明図である。ここでは、1または複数の入力行列を扱えるようにし、バッファに納まる要素数であれば任意の要素数の行列を入力可能であり、かつ様々な行列変換が可能となるようにする。ここでは、1度に処理可能な要素の数が16個の場合を例に挙げる。図7の左側では、2×2の第1行列を4個入力し、2×2の転置行列である第2行列を4個得る例である。図7の右側では、2×3の第1行列を2個入力し、3×2の転置行列である第2行列を2個得る例である。入力行列と変換後の行列は複数であっても、行および列の要素の数は互いに同一である。 FIG. 7 is an explanatory diagram illustrating an example of matrix transformation. Here, one or a plurality of input matrices can be handled, a matrix having an arbitrary number of elements can be input as long as the number of elements can be stored in the buffer, and various matrix transformations can be performed. Here, a case where the number of elements that can be processed at one time is 16 is taken as an example. The left side of FIG. 7 is an example in which four 2 × 2 first matrices are input and four second matrices that are 2 × 2 transposed matrices are obtained. The right side of FIG. 7 is an example in which two 2 × 3 first matrices are input to obtain two second matrices that are 3 × 2 transposed matrices. Even if there are a plurality of input matrices and transformed matrices, the number of elements in the rows and columns is the same.
(データ供給回路301例)
図8は、データ供給回路例を示す説明図である。データ供給回路301は、例えば、入力バッファ801と、マルチプレクサ802と、行列変換制御回路803と、共役回路804と、を有する。
(Example of data supply circuit 301)
FIG. 8 is an explanatory diagram illustrating an example of a data supply circuit. The
ここで、入力バッファ801は、入力行列に含まれる要素を格納可能なレジスタである。入力バッファ801のサイズは、例えば、演算データパス302での演算される行列のサイズや演算データパス302の構成などに応じて決定される。ここでは、入力バッファ801は、16個の要素を格納可能である。入力バッファ801は、例えば、行列変換プロセッサにおいてパイプライン処理を行うために設けられる。1個の要素は32ビットのデータである。
Here, the
出力バッファ805は、変換後の行列に含まれる要素を格納可能なレジスタである。出力バッファ805に格納可能な要素の数は、入力バッファ801に格納可能な要素の数に応じた数であり、例えば入力バッファ801に格納可能な要素の数と同一である。
The
マルチプレクサ802と行列変換制御回路803とは変換部111である。マルチプレクサ802は、第1行列と、第1行列に含まれる複数の要素のうちの少なくとも2つの要素の並びを入れ替えた第2行列と、のいずれかを出力する。マルチプレクサ802は、入力バッファ801に格納された複数の要素を入れ替えて出力する選択部611である。
The
マルチプレクサ802は、所定数のマルチプレクサMUXを有する。所定数は、上述したように、入力バッファ801に格納可能な要素の数である。ここでは、マルチプレクサ802は、マルチプレクサMUX_0〜MUX_15までの16個のマルチプレクサMUXを有する。マルチプレクサMUX_0〜MUX_15の各々は、入力バッファ801に格納された16個の要素をすべて入力可能である。マルチプレクサMUX_0〜MUX_15の各々は、マルチプレクサMUX_0〜MUX_15の各々に対応するデータ選択制御信号sel0〜sel15に応じて一つの要素を選択して、対応する出力バッファ805に出力する。
The
例えば、マルチプレクサMUX_0は、入力バッファ801に格納された16個の要素の中から、データ選択制御信号sel0に基づきいずれか一つの要素を選択して出力する。図8の例では、マルチプレクサMUX_0〜MUX_15の各々は、共役回路804に出力する。ただし、共役回路804がオフ状態である場合、マルチプレクサMUX_0〜MUX_15によって選択された各要素は、マルチプレクサMUX_0〜MUX_15の各々に対応する出力バッファ805に出力される。例えば、マルチプレクサMUX_0によって選択された要素は、出力バッファ805−0に格納される。
For example, the multiplexer MUX_0 selects and outputs one of the 16 elements stored in the
行列変換制御回路803は、例えば、インデックステーブル811と、共役制御回路812と、を有する。インデックステーブル811は、変換後の行の要素の数および列の要素の数が指定されると、指定された行の要素の数および列の要素の数に対応する要素を選択可能なデータ選択制御信号sel0〜sel15を出力する。
The matrix
図9は、インデックステーブル例を示す説明図である。図9に示すインデックステーブル811は、入力行列に含まれる複数の要素から転置行列を得るためのデータ選択信号の値が設定されてある。Mは変換後の行の要素の数であり、Nは、変換後の列の要素の数である。後述する行列変換モードなどを追加してインデックステーブル811の行を追加することによって、転置行列とともに他の行列変換などを行うことも可能である。 FIG. 9 is an explanatory diagram illustrating an example of an index table. In the index table 811 shown in FIG. 9, values of data selection signals for obtaining a transposed matrix from a plurality of elements included in the input matrix are set. M is the number of elements in the row after conversion, and N is the number of elements in the column after conversion. It is also possible to perform other matrix transformations together with the transposed matrix by adding a row of the index table 811 by adding a matrix transformation mode to be described later.
例えば、入力バッファ801に格納される16個の要素のうち、データ選択制御信号sel0〜sel15の各々に対応する入力バッファ801に格納された要素が出力されることとなる。例えばデータ選択制御信号sel0は、図8に示すマルチプレクサMUX_0の制御信号となる。
For example, among the 16 elements stored in the
ここでは、共役回路804について省略して説明する。データ選択制御信号sel0が0であると、マルチプレクサMUX_0は、入力バッファ801−0が付されたレジスタに格納された要素を出力バッファ805−0に出力する。インデックステーブル811において×印はドントケアである。入力バッファ801−0とは、図8において入力バッファ801のIndexに0が付されたレジスタである。出力バッファ805−0とは、図8において出力バッファ805のIndexに0が付されたレジスタである。
Here, the
例えば、M=1、N=1の場合、インデックステーブル811によれば、入力バッファ801に入力される要素の並び通りに出力バッファ805に要素が出力される。
For example, when M = 1 and N = 1, according to the index table 811, elements are output to the
図7の右側に示した2個の2×3行列から2個の3×2の転置行列を得るためには、M=3、N=2となる。M=3、N=2の場合、データ選択制御信号sel0は0であり、データ選択制御信号sel1は3である。そして、データ選択制御信号sel2は1であり、データ選択制御信号sel3は4であり、データ選択制御信号sel4は2であり、データ選択制御信号sel5は5である。また、データ選択制御信号sel6は6であり、データ選択制御信号sel7は9であり、データ選択制御信号sel8は7であり、データ選択制御信号sel9は10であり、データ選択制御信号sel10は8である。また、データ選択制御信号sel11は11であり、データ選択制御信号sel12〜sel15はドントケアである。 In order to obtain two 3 × 2 transposed matrices from the two 2 × 3 matrices shown on the right side of FIG. 7, M = 3 and N = 2. When M = 3 and N = 2, the data selection control signal sel0 is 0 and the data selection control signal sel1 is 3. The data selection control signal sel2 is 1, the data selection control signal sel3 is 4, the data selection control signal sel4 is 2, and the data selection control signal sel5 is 5. Further, the data selection control signal sel6 is 6, the data selection control signal sel7 is 9, the data selection control signal sel8 is 7, the data selection control signal sel9 is 10, and the data selection control signal sel10 is 8. is there. The data selection control signal sel11 is 11, and the data selection control signals sel12 to sel15 are don't cares.
図7の右側に示すように、2個の2×3行列の場合、要素の数は12であり、入力バッファ801に格納される16個の要素のうちの4個の要素は使用しないことになるため、データ選択制御信号sel12〜sel15はドントケアとなる。このように、簡単な制御処理によって入力行列を演算対象の行列に変換することができる。
As shown on the right side of FIG. 7, in the case of two 2 × 3 matrices, the number of elements is 12, and four of the 16 elements stored in the
図8の説明に戻って、共役回路804は、共役制御信号に応じてマルチプレクサ802から出力された各要素の虚部の符号を入れ替える共役部613である。虚部の符号を入れ替えることは、共役複素数に取り替えるとも称する。
Returning to the description of FIG. 8, the
図10は、共役回路例を示す説明図である。ここでは、1つの要素が例えば32ビットのデータであり、32ビットのデータのうち上位16ビットのデータが実部であり、下位16ビットのデータが虚部である。共役回路804は、32ビットのデータのうち虚部の16ビットのデータを虚部の符号を入れ替える回路comp2に入力する。回路comp2は、共役制御信号の値に応じて2の補数を計算する回路である。
FIG. 10 is an explanatory diagram illustrating an example of a conjugate circuit. Here, one element is, for example, 32-bit data. Among the 32-bit data, upper 16-bit data is a real part, and lower 16-bit data is an imaginary part. The
回路comp2は、例えば、共役制御信号の値が0の場合、2の補数を計算せずに入力された16ビットのデータをそのまま出力し、共役制御信号の値が1の場合、2の補数を計算して計算後の16ビットのデータを出力する。 For example, if the value of the conjugate control signal is 0, the circuit comp2 outputs the input 16-bit data as it is without calculating the 2's complement, and if the value of the conjugate control signal is 1, the 2's complement is output. The calculated 16-bit data is output.
図11は、共役制御信号の出力例を示す説明図である。ここでは、例えば、命令デコーダ304から共役制御回路812に入力されるTFmodeの値は、例えば、0であれば変換しないことを示し、1であれば転置行列に変換することを示し、2であればエルミート行列に変換することを示す。共役制御回路812は、例えば、TFmodeの値が0または1であれば、共役制御信号の値を0に設定して共役回路804に出力する。
FIG. 11 is an explanatory diagram illustrating an output example of the conjugate control signal. Here, for example, if the value of TFmode input from the
共役制御回路812は、例えば、TFmodeの値が2であれば、共役制御信号の値を1に設定して共役回路804に出力する。これにより、入力行列のエルミート行列を求める場合に、共役回路804がオン状態となり、変換なしや転置行列の場合には、共役回路804がオフ状態となる。
For example, if the value of TFmode is 2, the
図12は、命令実行処理手順例を示すフローチャートである。命令実行が開始されると、命令デコーダ304が命令メモリ213から命令を取得してデコードする(ステップS1201)。つぎに、データ供給回路301が、デコード結果に基づきデータをロードする(ステップS1202)。データ供給回路301が、デコード結果に基づき、入力行列をそのまま出力または変換して出力する(ステップS1203)。
FIG. 12 is a flowchart illustrating an example of an instruction execution processing procedure. When instruction execution is started, the
演算データパス302が演算を行い、データストア回路303が演算結果をメモリ101に書き戻す(ステップS1204)。そして、データ供給回路301が、ストリームの全データの処理が終了したか否かを判断する(ステップS1205)。ストリームの全データの処理が終了していないと判断した場合(ステップS1205:No)、データ供給回路301が、ステップS1202へ戻って、データをロードする。ストリームの全データの処理が終了したと判断した場合(ステップS1205:Yes)、命令実行が終了する。
The
図13は、ラップアラウンド処理回路を含むデータ供給回路の一構成例を示す説明図である。入力FIFO1301は、幅Mのデータを複数個格納可能なバッファキューである。Mは正の整数である。ここでは、入力バッファ801は、16個の要素を2つ格納可能である。図13の例では、1個の要素のデータ幅は32ビットまでである。
FIG. 13 is an explanatory diagram showing a configuration example of a data supply circuit including a wraparound processing circuit. The
図示省略するが、メモリアクセスユニットは、データメモリ214に格納されたソースデータのデータ長のデータを読み出して1つ又は複数個の幅Mのデータとして入力FIFO1301に格納する。ソースデータのデータ長、即ち、演算対象となるソースデータの全体の長さを、ストリーム長SLSとも呼ぶ。例えば、演算単位が2×2の実数行列(演算ユニット長UL=4short)であり、1000個の行列が演算対象となる場合、ストリーム長SLSは4000shortである。
Although not shown, the memory access unit reads the data having the data length of the source data stored in the
具体的には、メモリアクセスユニットは、データメモリ214に格納されたデータ長SLSのデータの先頭から、データメモリ214の1ラインに等しいM個のデータを読み出す。データメモリ214の1ラインは、データメモリ214とデータ供給回路301との間のバスの幅に等しい。メモリアクセスユニットは、データメモリ214とデータ供給回路301との間の幅Mのバスを介して受け取った幅Mのデータを、入力FIFO1301に書き込む。入力FIFO1301は、幅Mのデータを順次格納することができ、先に格納された幅Mのデータから順番に読み出すことができる。
Specifically, the memory access unit reads M data equal to one line of the
ラップアラウンド処理回路401は、入力FIFO1301からP(≦M)個(short)の連続した単位データを選択することにより幅Pのデータを読み出す動作を、複数回繰り返すことにより、入力FIFO1301から複数個の幅Pのデータを隙間なく順番に読み出す。具体的には、ラップアラウンド処理回路401は、最初に、入力FIFO1301の最も先に格納された幅MのデータのM個の単位データのうちで、先頭からP(≦M)個の連続した単位データを選択する。ラップアラウンド処理回路401は、選択したP個の単位データを、行列変換回路402に供給してもよい。ただし、ラップアラウンド処理回路401と行列変換回路402と、の間のデータ転送幅を固定(例えば幅M)とした場合、ラップアラウンド処理回路401は、選択したP個の単位データを含む例えば幅Mのデータを、行列変換回路402に供給してよい。このとき、選択したP個の単位データ以外のM−P個の単位データについては、どのような値であってもよい。
The wrap-around
P個の連続した単位データを選択した後、ラップアラウンド処理回路401は既に選択した最後の単位データのつぎの単位データからP個の連続した単位データを選択し、選択したP個の単位データを、演算データパス302に供給してよい。これを繰り返すことにより、ラップアラウンド処理回路401は複数個の幅Pのデータを隙間なく順番に入力FIFO1301から読み出す。なお、ラップアラウンド処理回路401により選択する単位データが幅Mのデータの終端の単位データになる場合には、ラップアラウンド処理回路401は、つぎの順番の幅Mのデータを入力FIFO1301から読み出す。そして、ラップアラウンド処理回路401は、この新たな幅Mのデータの先頭の単位データおよびそれに続く単位データを選択し続ければよい。
After selecting P consecutive unit data, the
具体的に、マルチプレクサ1311は、16個のマルチプレクサ802を有する。マルチプレクサ802は、入力バッファ801の出力する幅64のデータBUFOUTから、WM制御回路1312が供給するWM制御信号の指定するP個の連続した単位データを選択する。
Specifically, the
マルチプレクサ802は、上述した、行列変換回路402に含まれる選択部である。行列変換制御回路803は、行列変換回路402に含まれる選択制御部である。
The
図14は、WM処理回路と行列変換回路とによる要素の選択例を示す説明図である。WM制御回路1312は、入力バッファ801−4〜入力バッファ801−19に格納された要素を選択するようにWM制御信号を出力する。
FIG. 14 is an explanatory diagram showing an example of element selection by the WM processing circuit and the matrix conversion circuit. The
そして、行列変換制御回路803は、2×2の転置行列を得るためのTF制御信号を出力する。具体的に、例えば、2×2の転置行列を得る場合、行列変換制御回路803は、左のマルチプレクサ802から順に0,2,1,3,4,6,5,7,8,10,9,11,12,14,13,15を選択するようにTF制御信号を出力する。
The matrix
ここで、各マルチプレクサ802は回路規模が大きいため、データ処理装置100の規模が大きくなる。そこで、本実施の形態では、ラップアラウンド処理回路401におけるマルチプレクサ1311と、行列変換回路402におけるマルチプレクサ802と、を共有して要素の選択処理をマージする。これにより、回路規模の縮小を図ることができる。
Here, since each
選択部611は、入力バッファ801に格納された所定数の要素のうち第1行列に含まれる複数の要素が格納された位置データと、第1制御信号と、に基づいて、第2制御信号を生成する。第1制御信号は、行列変換制御回路803によって出力される信号である。第2制御信号は、入力バッファ801に格納された所定数の要素のうち選択回路の各々に選択させる要素を指示する信号である。そして、選択部611は、選択回路の各々が生成した第2制御信号に基づいてバッファに格納された所定数の要素のうちのいずれかを選択して出力する。
The
図15は、ラップアラウンド処理回路を含むデータ供給回路の別の構成例を示す説明図である。データ供給回路301は、入力FIFO1301と、入力バッファ801と、WM制御回路1312と、行列変換制御回路803と、インデックス選択マルチプレクサ1501と、データ選択マルチプレクサ1502と、共役回路804と、を有する。
FIG. 15 is an explanatory diagram illustrating another configuration example of the data supply circuit including the wraparound processing circuit. The
インデックス選択マルチプレクサ1501とデータ選択マルチプレクサ1502とは、選択部611である。インデックス選択マルチプレクサ1501は、バッファ601に格納された所定数の要素のうち第1行列に含まれる複数の要素が格納された位置データと、第1制御信号と、に基づいて、第2制御信号を生成する。第2制御信号は、バッファ601に格納された所定数の要素のうち選択回路の各々に選択させる要素を指示する信号である。
The
具体的に、インデックス選択マルチプレクサ1501は、例えば、16個のマルチプレクサを有する。16個のマルチプレクサの各々は、位置データであるWM制御信号を入力とし、第1制御信号であるTF制御信号に基づいていずれかのデータ選択制御信号を出力する。インデックス選択マルチプレクサ1501から出力されるデータ選択制御信号が第2制御信号である。
Specifically, the
そして、データ選択マルチプレクサ1502は、インデックス選択マルチプレクサ1501によって出力されたデータ選択制御信号に基づいて、入力バッファ801に格納された要素からいずれかの要素を選択して出力する。具体的に、インデックス選択マルチプレクサ1501は、入力バッファ801に格納された32個の要素から、データ選択制御信号に基づいて、16個の要素を選択して出力する。
The
図13に示すマルチプレクサ1311およびマルチプレクサ802に対して図15に示すインデックス選択マルチプレクサ1501およびデータ選択マルチプレクサ1502では、32ビットのマルチプレクサから5ビットのマルチプレクサに削減している。図13と図15とを比較すると、インデックス選択マルチプレクサ1501およびデータ選択マルチプレクサ1502とによって、回路規模を約1/6倍に縮小することができる。
In contrast to the
図16は、図15に示すデータ供給回路による行列変換例を示す説明図である。ここでは、図7に示したように2×2の4つの入力行列から2×2の4つの転置行列に変換する例である。また、ここでは、2×2の4つの入力行列に含まれる要素は、入力バッファ801−4〜入力バッファ801−19に格納されてある。 FIG. 16 is an explanatory diagram showing an example of matrix conversion by the data supply circuit shown in FIG. Here, as shown in FIG. 7, an example of conversion from four 2 × 2 input matrices to two 2 × 2 transposed matrices is shown. In addition, here, elements included in four 2 × 2 input matrices are stored in the input buffer 801-4 to the input buffer 801-19.
行列変換制御回路803は、左のデータマルチプレクサ1501から順に0,2,1,3,4,6,5,7,8,10,9,11,12,14,13,15を選択するようにTF制御信号を出力する。WM制御回路1312は、入力バッファ801−4〜入力バッファ801−19を選択するようにWM制御信号を出力する。
The matrix
<ラップアラウンド処理回路401>
ここで、ラップアラウンド処理回路401の構成および動作例について詳細に説明する。
<Wrap-around
Here, a configuration and an operation example of the
図17は、メモリアクセスユニットおよびデータ供給回路の処理を模式的に示す図(その1)である。図17に示す処理は、SLS>Mの場合に実行される処理である。 FIG. 17 is a diagram (part 1) schematically illustrating processing of the memory access unit and the data supply circuit. The process shown in FIG. 17 is a process executed when SLS> M.
図17(a)に示すようにデータメモリ214にはストリーム長SLSのデータが格納される。ストリーム長SLSは、幅Mよりも長い。このストリーム長SLSのデータが、メモリアクセスユニットにより、幅Mごとに読み出され、入力FIFO1301に格納される。図17(b)には、入力FIFO1301に格納されたデータ51を示す。この入力FIFO1301に格納されたデータから、P(≦M)個の連続した単位データを選択することにより幅Pのデータを読み出す動作を、複数回繰り返すことにより、入力FIFO1301から複数個の幅Pのデータ61〜64を隙間なく順番に読み出す。幅Pのデータ65はデータ51の終端部分にかかってしまうので、幅Pのデータ65を読み出す前までに、メモリアクセスユニットにより、ストリーム長SLSのデータをデータメモリ214から読み出して、入力FIFO1301にデータ52として格納しておく。これにより、入力FIFO1301から複数個の幅Pのデータ61〜69を隙間なく順番に読み出すことができる。なお、図17(c)に示すように、幅Pのデータ61〜69の各々は、演算サイクルごとに、即ち各演算サイクルにおいて1つずつ読み出される。
As shown in FIG. 17A, the
なお、図17の動作例では、ストリーム長SLSのデータをデータメモリ214から読み出して、入力FIFO1301にデータ51として格納している。そして更にその後、同一のストリーム長SLSのデータをデータメモリ214から読み出して、入力FIFO1301にデータ52として格納している。このような構成にする代わりに、入力FIFO1301内に既に格納されているデータ51を使い回して、データ52に相当するデータ部分を入力FIFO1301に配置してもよい。
In the operation example of FIG. 17, the data of the stream length SLS is read from the
図18は、メモリアクセスユニットおよびデータ供給回路の処理を模式的に示す図(その2)である。図18に示す処理は、SLS≦Mの場合に実行される処理である。 FIG. 18 is a diagram (part 2) schematically illustrating processing of the memory access unit and the data supply circuit. The process shown in FIG. 18 is a process executed when SLS ≦ M.
図18(a)に示すようにデータメモリ214にはストリーム長SLSのデータが格納されている。ストリーム長SLSは、幅Mよりも短い。このストリーム長SLSのデータが、メモリアクセスユニットにより、幅Mのデータとしてロードされ、入力FIFO1301に格納される。図18(b)には、入力FIFO1301に格納されたデータ70を示す。この入力FIFO1301に格納されたデータから、P(≦M)個の連続した単位データを選択することにより幅Pのデータを読み出す動作を、複数回繰り返すことにより、入力FIFO1301から複数個の幅Pのデータ71〜75を隙間なく順番に読み出す。ただし、幅Pのデータ73の場合、データ70の終端部分にかかってしまうので、データ70の先端部分に戻り、先端部分から続けてデータを選択して読み出すことになる。これは幅Pのデータ75についても同様である。このようにして、入力FIFO1301から複数個の幅Pのデータ71〜75を隙間なく順番に読み出すことができる。なお、幅Pのデータ71〜75の各々は、演算サイクルごとに、即ち各演算サイクルにおいて1つずつ読み出される。
As shown in FIG. 18A, the
ここで、ラップアラウンド処理回路について詳細に説明する。図19以降では、ラップアラウンド処理回路について説明するため、行列変換回路402については図示などを省略する。
Here, the wrap-around processing circuit will be described in detail. In FIG. 19 and subsequent figures, illustration of the
図19は、ラップアラウンド処理回路の詳細例を示す図である。ラップアラウンド処理回路は、データ選択部1901とWM制御回路1312とを有する。データ選択部1901は、セレクタ回路1911と、バッファ回路1912と、結合回路1913と、マルチプレクサ1311と、結合回路1914と、を有する。マルチプレクサ1311は、セレクタ84−1〜84−32を有する。
FIG. 19 is a diagram illustrating a detailed example of the wrap-around processing circuit. The wraparound processing circuit includes a
入力FIFO1301の最も先に格納された幅M(この例で32short)のデータが、WM制御回路1312からのPOP信号の「1」に応答して、入力FIFO1301から読み出され、セレクタ回路1911を介してバッファ回路1912に格納される。この例では幅Mは、32shortである。この時、セレクタ回路1911はPOP信号の「1」により、図19の右側の入力を選択する状態となっている。幅32のデータがバッファ回路1912に格納された状態で、入力FIFO1301が出力している幅32のデータは、バッファ回路1912に格納されたデータのつぎのデータとなっている。入力FIFO1301が出力している幅32のデータは、現時点で最も先に格納された幅32のデータである。
The data of the width M (32 short in this example) stored first in the
なお、POP信号の「1」に応答して、メモリアクセスユニットにより、ストリーム長SLSのデータのうち入力FIFO1301に未だ格納していない残りのデータをデータメモリ214から読み出して、入力FIFO1301に後続データとして格納してよい。この際、データメモリ214から読み出したデータが、ストリーム長SLSのデータの終端に至った場合には、つぎのPOP信号の「1」に応答して、ストリーム長SLSのデータの始端から読み出しを再開してよい。この場合、図18(b)に示すように、ストリーム長SLSのデータの始端が、前に読み出したストリーム長SLSのデータの終端に隙間なく続くように、入力FIFO1301にデータを格納してよい。
In response to “1” of the POP signal, the memory access unit reads the remaining data not yet stored in the
結合回路1913は、バッファ回路1912の格納する1つの幅32のデータと、入力FIFO1301の出力するつぎの幅32のデータとを並べて構成した、幅64のデータBUFOUTを出力する。このデータBUFOUTの長さは、64short×16ビットの1024ビットである。
The combining
マルチプレクサ1311は、結合回路1913の出力する幅64のデータBUFOUTから、WM制御回路1312が供給するWM制御信号SEL00〜SEL31の指定するP個の連続した単位データを選択する。実際には、データ選択部1901の出力は幅32(short)であるので、選択したP個の連続した単位データは、幅32の出力データのうちの連続した一部に配置されてよい。連続した一部とは、具体的に、例えば、左端の連続した一部分である。演算データパス302は、データ処理幅Pのデータのみを演算対象とするので、データ選択部1901の出力する幅32のデータのうちで例えば左端の連続したP個の単位データを対象として演算を実行すればよい。
The
具体的には、セレクタ84−1が、幅64のデータBUFOUTのうち、WM制御信号SEL00の指し示す位置にある1shortの単位データを選択して出力する。またセレクタ84−2が、幅64のデータBUFOUTのうち、WM制御信号SEL01の指し示す位置にある1shortの単位データを選択して出力する。以下同様であり、セレクタ84−32が、幅64のデータBUFOUTのうち、WM制御信号SEL31の指し示す位置にある1shortの単位データを選択して出力する。
Specifically, the selector 84-1 selects and
図20は、WM制御回路による選択動作の一例を示す図である。図20に示す例では、幅Mが32(short)、ストリーム長SLSが34(short)、データ処理幅Pが8(short)である。図20の表に示すSLS_MOD、OFFSETについては、後程説明する。データ処理幅Pが8であるので、以下の説明においては、図19に示す左端の8個のセレクタ84−1〜84−8に供給されるWM制御信号SEL00〜SEL07のみに着目する。 FIG. 20 is a diagram illustrating an example of the selection operation by the WM control circuit. In the example shown in FIG. 20, the width M is 32 (short), the stream length SLS is 34 (short), and the data processing width P is 8 (short). SLS_MOD and OFFSET shown in the table of FIG. 20 will be described later. Since the data processing width P is 8, only the WM control signals SEL00 to SEL07 supplied to the eight leftmost selectors 84-1 to 84-8 shown in FIG.
まず、ストリーム長SLSが34であるデータの先頭の32個の単位データが図19のバッファ回路1912に格納され、残りの2個の単位データが、入力FIFO1301の出力しているデータの左端に格納された状態であるとする。なお、前述のように、入力FIFO1301の出力しているデータにおいては、左端の上記の2個の単位データに続くようにして、その右側に、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の30個の単位データ)が格納されている。このように、メモリアクセスユニットにより、ストリーム長SLSのデータをデータメモリ214から随時読み出して、入力FIFO1301に後続データとして格納する動作が、継続的に実行される。
First, the 32 unit data at the head of the data whose stream length SLS is 34 is stored in the
最初のサイクル(cycle=0)では、WM制御信号SEL00〜SEL07は、「0」〜「7」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから7番(左端から数えて8個目)の単位データまでが選択される。つぎのサイクル(cycle=1)では、WM制御信号SEL00〜SEL07は、「8」〜「15」であり、幅64のデータBUFOUTの8番(左端から数えて9個目)の単位データから15番(左端から数えて16個目)の単位データまでが選択される。その後同様に進行し、バッファ回路1912を利用しながら、入力FIFO1301から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。
In the first cycle (cycle = 0), the WM control signals SEL00 to SEL07 are “0” to “7”, and the unit data of 0th (leftmost) of the data BUFOUT of
5番目のサイクル(cycle=4)において、WM制御信号SEL00〜SEL07は、「32」〜「39」であり、幅64のデータBUFOUTの32番の単位データから39番の単位データまでが選択される。このとき、POP信号が「1」になる。従って、つぎのサイクルにおいては、ストリーム長SLSが34であるデータの終端の2個の単位データとそれに続く先頭の30個の単位データが、図19のバッファ回路1912に格納される。またそれに続くストリーム長SLSが34であるデータの終端の4個の単位データと、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の28個の単位データ)とが、入力FIFO1301の出力データ部分に並んで格納される。
In the fifth cycle (cycle = 4), the WM control signals SEL00 to SEL07 are “32” to “39”, and the unit data from the 32nd unit data to the 39th unit data of the data BUFOUT having a width of 64 are selected. The At this time, the POP signal becomes “1”. Therefore, in the next cycle, the two unit data at the end of the data whose stream length SLS is 34 and the next 30 unit data at the head are stored in the
6番目のサイクル(cycle=5)では、WM制御信号SEL00〜SEL07は、「8」〜「15」であり、幅64のデータBUFOUTの8番(左端から数えて9個目)の単位データから15番(左端から数えて16個目)の単位データまでが選択される。その後同様に進行し、入力FIFO1301から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。
In the sixth cycle (cycle = 5), the WM control signals SEL00 to SEL07 are “8” to “15”, and from the unit data of the eighth data BUFOUT of width 64 (the ninth counted from the left end). Up to 15th unit data (16th counting from the left end) is selected. Thereafter, the process proceeds in the same manner, and data of a plurality of widths P are sequentially selected and read from the
図21は、WM制御回路による選択動作の別の一例を示す図である。図21に示す例では、幅Mが32(short)、ストリーム長SLSが34(short)、データ処理幅Pが32(short)である。図21の表に示すSLS_MOD、OFFSETについては、後程説明する。データ処理幅Pが32であるので、以下の説明においては、図19に示す32個のセレクタ84−1〜84−32に供給されるWM制御信号SEL00〜SEL31に着目する。 FIG. 21 is a diagram illustrating another example of the selection operation by the WM control circuit. In the example shown in FIG. 21, the width M is 32 (short), the stream length SLS is 34 (short), and the data processing width P is 32 (short). SLS_MOD and OFFSET shown in the table of FIG. 21 will be described later. Since the data processing width P is 32, the following description focuses on the WM control signals SEL00 to SEL31 supplied to the 32 selectors 84-1 to 84-32 shown in FIG.
まず、ストリーム長SLSが34であるデータの先頭の32個の単位データが図19のバッファ回路1912に格納され、残りの2個の単位データが、入力FIFO1301の出力しているデータの左端に格納された状態であるとする。なお、前述のように、入力FIFO1301の出力しているデータにおいては、左端の上記の2個の単位データに続くようにして、その右側に、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の30個の単位データ)が格納されている。このように、メモリアクセスユニットにより、ストリーム長SLSのデータをデータメモリ214から随時読み出して、入力FIFO1301に後続データとして格納する動作が、継続的に実行される。
First, the 32 unit data at the head of the data whose stream length SLS is 34 is stored in the
最初のサイクル(cycle=0)では、WM制御信号SEL00〜SEL31は、「0」〜「31」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから31番(一番右端)の単位データまでが選択される。このとき、POP信号が「1」になる。従って、つぎのサイクルにおいては、ストリーム長SLSが34であるデータの終端の2個の単位データとそれに続く先頭の30個の単位データが、図19のバッファ回路1912に格納される。またそれに続くストリーム長SLSが34であるデータの終端の4個の単位データと、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の28個の単位データ)とが、入力FIFO1301の出力データ部分に並んで格納される。
In the first cycle (cycle = 0), the WM control signals SEL00 to SEL31 are “0” to “31”, and the unit data from the 0th (leftmost) unit data of the data BUFOUT having a width of 64 is the 31st (first). Up to the rightmost unit data is selected. At this time, the POP signal becomes “1”. Therefore, in the next cycle, the two unit data at the end of the data whose stream length SLS is 34 and the next 30 unit data at the head are stored in the
つぎのサイクル(cycle=1)でも、WM制御信号SEL00〜SEL31は、「0」〜「31」であり、幅64のデータBUFOUTの0番(一番左端)の単位データから31番(一番右端)の単位データまでが選択される。このとき、POP信号が「1」になる。従って、つぎのサイクルにおいては、ストリーム長SLSが34であるデータの終端の4個の単位データとそれに続く先頭の28個の単位データが、図19のバッファ回路1912に格納される。またそれに続くストリーム長SLSが34であるデータの終端の6個の単位データと、ストリーム長SLSが34であるデータの先頭の部分のデータ(先頭の26個の単位データ)とが、入力FIFO1301の出力データ部分に並んで格納される。以降同様に進行し、バッファ回路1912を利用しながら、入力FIFO1301から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。
Also in the next cycle (cycle = 1), the WM control signals SEL00 to SEL31 are “0” to “31”, and the unit data from the 0th (leftmost) unit data of the data BUFOUT having a width of 64 is the 31st (first). Up to the rightmost unit data is selected. At this time, the POP signal becomes “1”. Accordingly, in the next cycle, the four unit data at the end of the data having the stream length SLS of 34 and the following 28 unit data at the head are stored in the
図22は、WM制御回路による選択動作の更に別の一例を示す図である。図22に示す例では、幅Mが32(short)、ストリーム長SLSが12(short)、データ処理幅Pが8(short)である。図22の表に示すSLS_MOD、OFFSETについては、後程説明する。データ処理幅Pが8であるので、以下の説明においては、図19に示す左端の8個のセレクタ84−1〜84−8に供給されるWM制御信号SEL00〜SEL07のみに着目する。 FIG. 22 is a diagram showing still another example of the selection operation by the WM control circuit. In the example shown in FIG. 22, the width M is 32 (short), the stream length SLS is 12 (short), and the data processing width P is 8 (short). The SLS_MOD and OFFSET shown in the table of FIG. 22 will be described later. Since the data processing width P is 8, only the WM control signals SEL00 to SEL07 supplied to the eight leftmost selectors 84-1 to 84-8 shown in FIG.
まず、ストリーム長SLSが12であるデータの12個の単位データが図19のバッファ回路1912の左端側に詰めて格納された状態であるとする。
First, it is assumed that twelve unit data of data having a stream length SLS of 12 are packed and stored on the left end side of the
最初のサイクル(cycle=0)では、WM制御信号SEL00からSEL07は、「0」から「7」のいずれかであり、幅64のデータBUFOUTの0番(一番左端)の単位データから7番(左端から数えて8個目)の単位データまでが選択される。つぎのサイクル(cycle=1)では、WM制御信号SEL00からSEL07は、「8,9,10,11,0,1,2,3」である。したがって、幅64のデータBUFOUTの8番(左端から数えて9個目)の単位データから11番(左端から数えて12個目)の単位データまでと、続いて0番(一番左端)の単位データから3番(左端から数えて4個目)の単位データまでが選択される。その後同様に進行し、バッファ回路1912を利用しながら、入力FIFO1301から複数個の幅Pのデータを隙間なく順番に選択し、読み出していく。この読み出し動作では、ストリーム長SLSが幅Mよりも短いので、POP信号が「1」になることはない。
In the first cycle (cycle = 0), the WM control signals SEL00 to SEL07 are any one of “0” to “7”, and the
図23は、WM制御回路の構成の一例を示す図である。図23に示すWM制御回路1312は、SLS_MOD回路2301と、SLSレジスタ2302と、SEL_WRAP回路2303−1〜2303−32と、を有する。また、WM制御回路1312は、OFFSETレジスタ2304と、ADD_OFFSET回路2305と、P減算回路2306と、セレクタ回路2307と、を有する。
FIG. 23 is a diagram illustrating an example of the configuration of the WM control circuit. The
図24は、SEL_WRAP回路の構成の一例を示す図である。図24に示すSEL_WRAP回路2303は、SLS判定回路2401と、SLS減算回路2402と、N加算回路2403と、セレクタ回路2404と、比較回路2405と、1加算回路2406と、セレクタ回路2407と、を有する。SEL_WRAP回路2303−1の場合、印加されるSLS_MOD信号は、SLS_MOD回路2301の格納する値に等しい。それ以降のSEL_WRAP回路2303−2〜2303−32の場合、印加されるSLS_MOD信号は、前段のSEL_WRAP回路2303の出力するSLS_MOD_NEXT信号に等しい。
FIG. 24 is a diagram illustrating an example of the configuration of the SEL_WRAP circuit. The
図25は、ADD_OFFSET回路の構成の一例を示す図である。図25に示すADD_OFFSET回路2305は、加算回路2501と、OFFSETレジスタ2502と、OFFSETレジスタ2503と、セレクタ回路2504と、セレクタ回路2505と、を有する。
FIG. 25 is a diagram illustrating an example of the configuration of the ADD_OFFSET circuit. An
ここで、図20および図23から図25を用いて、WM制御回路1312の動作の一例を説明する。初期状態においては、SLS_MOD回路2301の格納するSLS_MOD信号は「0」である。またOFFSETレジスタ2304の格納するOFFSET信号は「0」である。
Here, an example of the operation of the
図20の例において、SLS>Mであることにより図24に示すセレクタ回路2404は、OFFSET信号の値にNを加算した値を選択する。この値Nは、何番目のSEL_WRAP回路2303であるかを示す値であり、「0」を開始番号として、0番のSEL_WRAP回路2303−1の場合には「0」である。従って、SEL_WRAP回路2303−1の場合、OFFSET信号の値に「0」を加算した「0」が、出力のWM制御信号SELの値となる。また「0」であるSLS_MOD信号に1加算回路2406により「1」を加算した値である「1」が、SLS_MOD_NEXT信号として出力される。
In the example of FIG. 20, when SLS> M, the
つぎのSEL_WRAP回路2303−2の場合、OFFSET信号の値に「1」を加算した「1」が、出力のWM制御信号SELの値となる。またこのSEL_WRAP回路2303−2の場合、印加されるSLS_MOD信号は前段からの値「1」のSLS_MOD_NEXT信号であるので、出力するSLS_MOD_NEXT信号の値は「2」となる。以下同様にして、SEL_WRAP回路2303−nの場合、出力するWM制御信号SELは「n−1」であり、出力するSLS_MOD_NEXT信号は「n」となる。ここでのnは自然数である。これにより、図20の0番のサイクルに示すようなWM制御信号SEL00〜SEL31が生成される。
In the case of the next SEL_WRAP circuit 2303-2, “1” obtained by adding “1” to the value of the OFFSET signal is the value of the output WM control signal SEL. In the case of the SEL_WRAP circuit 2303-2, since the SLS_MOD signal to be applied is the SLS_MOD_NEXT signal having the value “1” from the previous stage, the value of the SLS_MOD_NEXT signal to be output is “2”. Similarly, in the case of the SEL_WRAP circuit 2303-n, the WM control signal SEL to be output is “n−1”, and the SLS_MOD_NEXT signal to be output is “n”. Here, n is a natural number. As a result, WM control signals SEL00 to SEL31 as shown in
セレクタ回路2307は、SEL_WRAP回路2303−1〜2303−32のそれぞれが出力するSLS_MOD_NEXTを受け取る。セレクタ回路2307は、さらに、データ処理幅Pから1減算した値、この例では「7」を選択制御信号として受け取る。セレクタ回路2307は、0番を開始番号とした場合の7番(即ち8番目)のSEL_WRAP回路2303−8が出力する値「8」であるSLS_MOD_NEXT信号を選択して、SLS_MOD回路2301に供給する。これにより、つぎのサイクルにおいて、SLS_MOD回路2301に格納されているSLS_MOD信号は「8」となる。
The
図25に示すADD_OFFSET回路2305において、SLS>Mであることにより、セレクタ回路2505は、データ処理幅PにOFFSET信号の値を加算した値を選択し、OFFSET_NEXT信号として出力する。このOFFSET_NEXT信号が、図23に示すOFFSETレジスタ2304に格納され、つぎのサイクルでのOFFSET信号となる。従って、OFFSET信号の値は、1サイクルごとにPずつ増加していく。ただし、OFFSET信号の値に加算回路2501によりPを加算した値が「32」となるサイクルにおいては、OFFSETレジスタ2502に格納された値が1となり、POP_NEXT信号が「1」となる。
In SADD> M in the
このPOP_NEXT信号が、WM制御回路1312からPOP信号として出力される。またOFFSET信号の値に加算回路2501によりPを加算した値の下位5ビットのみをOFFSETレジスタ2503に格納することにより、OFFSET_NEXT信号の値は、「0」から「31」の範囲の値のみをとることになる。即ち、OFFSETレジスタ2304に格納されるOFFSET値は、「0」から「31」の範囲の値を繰り返すことになる。このようにして、図20の動作例に示すような、OFFSET信号およびPOP信号が生成される。なお図20では、OFFSETの値は、6ビット目も含めた値を示してあるため、値「32」の場合が示されている。
This POP_NEXT signal is output from the
図22〜図25を用いて、WM制御回路1312の動作の別の一例を説明する。初期状態においては、SLS_MOD回路2301の格納するSLS_MOD信号は「0」である。またOFFSETレジスタ2304の格納するOFFSET信号は「0」である。
Another example of the operation of the
図22の例において、SLS≦Mであることにより図24に示すセレクタ回路2404はSLS_MOD信号を選択するので、SEL_WRAP回路2303−1の場合、出力のWM制御信号SELは「0」である。また「0」であるSLS_MOD信号に「1」を加算した値である「1」が、SLS_MOD_NEXT信号として出力される。つぎのSEL_WRAP回路2303−2の場合、印加されるSLS_MOD信号は前段からの値「1」のSLS_MOD_NEXT信号であるので、出力のWM制御信号SELは「1」であり、且つ、出力するSLS_MOD_NEXT信号の値は「2」となる。以下同様にして、SEL_WRAP回路2303−nの場合、出力するWM制御信号SELは「n−1」であり、出力するSLS_MOD_NEXT信号は「n」となる。ここでのnはSLSより小さい自然数である。
In the example of FIG. 22, since SLS ≦ M, the
図22の例ではストリーム長SLSが12であるので、SEL_WRAP回路2303−12の場合、図24に示す比較回路2405の出力が1となる。そして、「0」がセレクタ回路2407により選択されて、出力するSLS_MOD_NEXT信号の値が「0」となる。従って、図22の0番のサイクルに示すように、WM制御信号SEL00〜SEL31は、「0」から「11」の間を繰り返す信号となる。
In the example of FIG. 22, since the stream length SLS is 12, in the case of the SEL_WRAP circuit 2303-12, the output of the
セレクタ回路2307は、SEL_WRAP回路2303−1〜2303−32のそれぞれが出力するSLS_MOD_NEXTを受け取る。セレクタ回路2307は、さらに、データ処理幅Pから1減算した値を選択制御信号として受け取る。この例では、セレクタ回路2307は、「7」を選択制御信号として受け取る。セレクタ回路2307は、0番を開始番号とした場合の7番(即ち8番目)のSEL_WRAP回路2303−8が出力する値「8」であるSLS_MOD_NEXT信号を選択して、SLS_MOD回路2301に供給する。これにより、つぎのサイクルにおいて、SLS_MOD回路2301に格納されているSLS_MOD信号は「8」となる。
The
図25に示すADD_OFFSET回路2305において、SLS≦Mであることにより、セレクタ回路2504およびセレクタ回路2505は、値「0」を選択して、値「0」のPOP_NEXT信号および値「0」のOFFSET_NEXT信号を出力する。これにより、図22の動作例に示すように、OFFSET信号およびPOP信号は、両方とも常に「0」となる。
In the
図26は、SLS≦Mの場合の各信号の生成アルゴリズムを示す図である。SLS≦Mの場合には、図26に示す生成アルゴリズムにより、SLS_MOD_NEXT信号、WM制御信号SEL、およびPOP信号が生成される。 FIG. 26 is a diagram illustrating a generation algorithm of each signal when SLS ≦ M. In the case of SLS ≦ M, the SLS_MOD_NEXT signal, the WM control signal SEL, and the POP signal are generated by the generation algorithm shown in FIG.
図27は、SLS>Mの場合の各信号の生成アルゴリズムを示す図である。SLS>Mの場合には、図27に示す生成アルゴリズムにより、POP信号、OFFSET信号、およびWM制御信号SELが生成される。 FIG. 27 is a diagram illustrating a generation algorithm of each signal when SLS> M. In the case of SLS> M, the POP signal, the OFFSET signal, and the WM control signal SEL are generated by the generation algorithm shown in FIG.
図28は、WM制御回路の構成の別の一例を示す図である。図28に示すWM制御回路1312は、SLS判定回路2801と、セレクタ回路2802と、SLS_MOD回路2803と、セレクタ回路2804と、1加算回路2805と、SLS_MODテーブル(SLS_MOD_TBL)2806と、シフタ回路(shifter384)2807と、を有する。WM制御回路1312は、さらに、OFFSETレジスタ2304と、ADD_OFFSET回路2305と、P減算回路2306と、セレクタ回路2307と、を有する。図28において、図23と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
FIG. 28 is a diagram illustrating another example of the configuration of the WM control circuit. The
図29は、SLS_MODテーブルのデータの一例を示す図である。図29に示すように、SLS_MODテーブル2806には、1番から33番までの33個の行に対して、64個の位置データが格納されている。例えば、値が「0」の位置データは、図19の結合回路1913の出力するデータBUFOUTの64個の単位データのうち、0番(一番左端)の単位データを選択する。同様に、値がn(n:0〜63の整数)の位置データは、図19の結合回路1913の出力するデータBUFOUTの64個の単位データのうち、n番の単位データを選択する。このように、SLS_MODテーブル2806は、幅2Mのデータから選択する各単位データの選択位置を示す位置データを格納したテーブルである。
FIG. 29 is a diagram illustrating an example of data in the SLS_MOD table. As shown in FIG. 29, the SLS_MOD table 2806
また、図28に示すシフタ回路2807は、SLS_MODテーブル2806から位置データを受け取り、受け取った位置データをシフトし、シフトした位置データをマルチプレクサ1311にWM制御信号SEL00〜SEL31として供給する。この構成により、データ選択部1901のマルチプレクサ1311により、適切な単位データを選択することができる。
The
図28において、SLS判定回路2801は、ストリーム長SLSがM以下であるか否かを判定する。SLS>Mである場合、SLS判定回路2801の出力は「0」となり、セレクタ回路2802は値「33」を選択して出力する。従って、この場合、SLS_MODテーブル2806の33番の行が選択され、図29の33番の行に示すように「0」から「63」の64個の位置データが出力される。このときセレクタ回路2804は、OFFSETレジスタ2304に格納されるOFFSET信号の値を選択し、1加算回路2805が、セレクタ回路2804により選択された値に「1」を加算し、加算後の値をシフタ回路2807に供給する。シフタ回路2807は、SLS_MODテーブル2806から供給された64個の位置データを、OFFSET信号の値に応じてシフトし、シフト後の64個の位置データをWM制御信号SELとして出力する。これにより、上述したWM制御信号SELが生成されることになる。
In FIG. 28, the
SLS≦Mである場合、SLS判定回路2801の出力は「1」となり、セレクタ回路2802は、ストリーム長SLSの値を選択して出力する。この結果、例えば、図22に示すようにストリーム長SLSが12である場合、SLS_MODテーブル2806の12番の行が選択される。即ち、図29の12番の行に示すように「0」から「11」の値を繰り返す64個の位置データが、SLS_MODテーブル2806から出力される。このときセレクタ回路2804は、SLS_MOD回路2803に格納されるSLS_MOD信号の値を選択し、1加算回路2805が、セレクタ回路2804により選択された値に「1」を加算し、加算後の値をシフタ回路2807に供給する。シフタ回路2807は、SLS_MODテーブル2806から供給された64個の位置データを、SLS_MOD信号の値に応じてシフトし、シフト後の64個の位置データをWM制御信号SELとして出力する。これにより、図13に示すようなWM制御信号SELが生成されることになる。
When SLS ≦ M, the output of the
図23のWM制御回路1312では、SEL_WRAP回路2303−1〜2303−32が32段に縦続接続されている。従って、SLS_MOD_NEXT信号が各段を伝搬していくのに時間かかり、データ供給回路301による選択動作を十分に高速に実行できない可能性がある。それに対し図28に示すWM制御回路1312では、シフタ回路2807による少数段の遅延が発生するのみであり、データ供給回路301による選択動作を十分に高速に実行することができる。
In the
図30は、データ処理装置の構成の別の一例を示す図である。図30において、図3と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。 FIG. 30 is a diagram illustrating another example of the configuration of the data processing device. In FIG. 30, the same or corresponding elements as those of FIG. 3 are referred to by the same or corresponding numerals, and a description thereof will be omitted as appropriate.
図30のデータ処理装置は、複数のデータ供給回路301−1〜301−nと、演算データパス302と、データストア回路303と、を有する。データ供給回路301−1〜301−nは、データメモリ214に格納される複数n個のソースデータ(オペランド)をそれぞれ読み出し、演算データパス302に供給する。図4に示す例のように2つのソースデータsrc0とsrc1とが演算対象となる場合、データ供給回路301−1がソースデータsrc0を読み出し、データ供給回路301−2がソースデータsrc1を読み出してよい。データ供給回路301−1〜301−nの各々の構成および動作は、前述のデータメモリ214の構成および動作と基本的に同一であってよい。図30のデータ処理装置では、複数n個のソースデータ(オペランド)に対応することが可能となる。
30 includes a plurality of data supply circuits 301-1 to 301-n, an
以上説明したように、データ処理装置100は、入力行列と該入力行列の複数の要素の並びを入れ替えた変換行列とのうちの演算対象となるいずれかの行列を出力して演算を行う。これにより、行列変換と行列演算とを1命令で行うことができ、データロード数の低減を図ることができる。したがって、行列のデータのロードから行列演算までに要する時間の短縮化を図ることができる。
As described above, the
また、データ処理装置100は、第1行列と、第2行列と、のうち、いずれかを出力する選択部と、演算命令によって、第1行列と、第2行列と、のうち、いずれかを選択部に出力させる制御を行う選択制御部と、を有する。これにより、簡単な制御処理によって入力行列を演算対象の行列に変換することができる。
In addition, the
また、データ処理装置100は、変換後の行の要素の数および列の要素の数に対応した選択部に出力させる複数の要素の並びを指示する制御信号を記憶するインデックステーブルによって演算対象の行列を指示する。これにより、簡単な処理によって入力行列を演算対象の行列に変換することができる。
In addition, the
また、データ処理装置100は、選択部がバッファに格納された所定数の要素を入力可能な所定数の選択回路の各々が、バッファに格納された入力行列に含まれる複数の要素のうちのいずれかを選択して出力する。これにより、入力行列の各要素の数が任意であっても演算対象の行列に変換することができる。
Further, in the
また、データ処理装置100は、バッファに格納された要素のうち第1行列の要素の位置情報と、第1行列の要素の入れ替え後の位置を指示する第1制御信号と、に基づき、バッファに格納された要素から入れ替え後の各位置を指示する第2制御信号を生成する。これにより、マルチプレクサの回路規模を縮小することができる。半導体集積回路であるデータ処理装置の面積を小さくすることができると、一枚の半導体ウェーハ上から得られる半導体集積回路の個数を多くすることができるため、半導体集積回路の単価を下げることができる。
In addition, the
また、第1行列と第2行列とは、複数の行列であってもよい。これにより、複数の行列に対して一括して変換行列を得ることができ、データロードから演算処理までに要する時間の短縮化を図ることができる。 Further, the first matrix and the second matrix may be a plurality of matrices. Thereby, a conversion matrix can be obtained for a plurality of matrices at once, and the time required from the data load to the arithmetic processing can be shortened.
なお、本実施の形態で説明したデータ処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。 The data processing method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. The program is recorded on a computer-readable recording medium such as a magnetic disk, an optical disk, or a USB (Universal Serial Bus) flash memory, and is executed by being read from the recording medium by the computer.
また、上述したように、本実施の形態で説明したデータ処理装置100は、スタンダードセルやストラクチャードASICなどのASICやFPGAなどのPLDによっても実現することができる。具体的には、例えば、上述したデータ処理装置100の機能をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、データ処理装置100を製造することができる。
Further, as described above, the
上述した実施の形態に関し、さらに以下の付記を開示する。 The following additional notes are disclosed with respect to the embodiment described above.
(付記1)対象の演算命令によってメモリから取得した第1行列を受け付けて、受け付けた前記第1行列と、前記第1行列に含まれる複数の要素と同一の要素を含み前記第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた第2行列と、のうち、前記演算命令が指示する演算対象の行列を出力する変換部と、
前記変換部によって出力された前記演算対象の行列に対して、前記演算命令が指示する演算を行う演算部と、
を有することを特徴とするデータ処理装置。
(Supplementary Note 1) A first matrix acquired from a memory by a target operation instruction is received, and the received first matrix includes the same elements as the plurality of elements included in the first matrix and is included in the first matrix A second matrix in which the arrangement of at least any two of the plurality of elements is exchanged, and a conversion unit that outputs a matrix to be calculated indicated by the calculation instruction,
An arithmetic unit that performs an operation instructed by the arithmetic instruction on the matrix to be calculated output by the conversion unit;
A data processing apparatus comprising:
(付記2)前記変換部は、
前記第1行列と、前記第2行列と、のうち、いずれかを出力する選択部と、
前記演算命令によって、前記第1行列と、前記第2行列と、のうち、いずれかを前記選択部に出力させる制御を行う選択制御部と、
を有することを特徴とする付記1に記載のデータ処理装置。
(Supplementary note 2)
A selection unit that outputs one of the first matrix and the second matrix;
A selection control unit that performs control to cause the selection unit to output one of the first matrix and the second matrix in accordance with the arithmetic instruction;
The data processing apparatus according to
(付記3)前記選択制御部は、
行の要素の数および列の要素の数に対応する前記第1行列に含まれる特定の並びの複数の要素について前記選択部に出力させる前記第1行列に含まれる複数の要素の並びを指示する制御信号の値を記憶する記憶部から、前記演算命令が指示する前記演算対象の行列についての行の要素の数および列の要素の数に基づいて、前記制御信号の値を読み出して前記選択部に出力し、
前記選択部は、
前記第1行列に含まれる複数の要素を、前記選択制御部から出力された前記制御信号が指示する並びにした複数の要素を含む前記演算対象の行列を出力する、
ことを特徴とする付記2に記載のデータ処理装置。
(Supplementary Note 3) The selection control unit
Instructing the arrangement of a plurality of elements included in the first matrix to be output to the selection unit for a plurality of elements in a specific arrangement included in the first matrix corresponding to the number of elements in a row and the number of elements in a column Based on the number of elements in a row and the number of elements in a column for the matrix to be calculated indicated by the calculation instruction from the storage unit that stores the value of the control signal, the value of the control signal is read out and the selection unit Output to
The selection unit includes:
Outputting a plurality of elements included in the first matrix, the calculation target matrix including a plurality of elements instructed by the control signal output from the selection control unit;
The data processing apparatus according to
(付記4)前記第1行列に含まれる複数の要素の数以上の所定数の要素を格納可能なバッファであって、前記メモリから取得した前記第1行列に含まれる複数の要素を特定の並びで格納するバッファを有し、
前記選択部は、
前記バッファに格納された前記所定数の要素を入力可能な前記所定数の選択回路の各々が、前記バッファに格納された前記第1行列に含まれる複数の要素のうちのいずれかを制御信号に基づき選択して出力し、
前記選択制御部は、
前記バッファに格納された前記第1行列に含まれる複数の要素のうち前記選択回路の各々に選択させる要素を指示する制御信号を出力する、
ことを特徴とする付記2または3に記載のデータ処理装置。
(Supplementary Note 4) A buffer capable of storing a predetermined number of elements equal to or greater than the number of elements included in the first matrix, wherein the elements included in the first matrix acquired from the memory are arranged in a specific sequence. Has a buffer to store in,
The selection unit includes:
Each of the predetermined number of selection circuits capable of inputting the predetermined number of elements stored in the buffer uses any one of a plurality of elements included in the first matrix stored in the buffer as a control signal. Select and output based on
The selection control unit
Outputting a control signal indicating an element to be selected by each of the selection circuits among a plurality of elements included in the first matrix stored in the buffer;
The data processing apparatus according to
(付記5)前記選択部は、
前記バッファに格納された前記所定数の要素のうち前記第1行列に含まれる複数の要素が格納された位置データと、前記制御信号(以下、「第1制御信号」と称する。)と、に基づいて、前記バッファに格納された前記所定数の要素のうち前記選択回路の各々に選択させる要素を指示する第2制御信号を生成し、前記選択回路の各々が生成した前記第2制御信号に基づいて前記バッファに格納された前記所定数の要素のうちのいずれかを選択して出力することを特徴とする付記4に記載のデータ処理装置。
(Supplementary note 5)
Position data storing a plurality of elements included in the first matrix among the predetermined number of elements stored in the buffer, and the control signal (hereinafter referred to as “first control signal”). Based on the predetermined number of elements stored in the buffer, a second control signal is generated to indicate an element to be selected by each of the selection circuits, and the second control signal generated by each of the selection circuits is generated. The data processing apparatus according to
(付記6)前記第1行列は、行および列の要素の数が互いに同じ複数の第1行列であって、
前記第2行列は、行および列の要素の数が互いに同じ複数の第2行列であって、
前記複数の第2行列の各々は、前記複数の第2行列の各々に対応する前記複数の第1行列の各々について前記第1行列に含まれる前記複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた行列であることを特徴とする付記1〜5のいずれか一つに記載のデータ処理装置。
(Supplementary Note 6) The first matrix is a plurality of first matrices having the same number of row and column elements,
The second matrix is a plurality of second matrices having the same number of row and column elements,
Each of the plurality of second matrices includes at least any two elements of the plurality of elements included in the first matrix for each of the plurality of first matrices corresponding to each of the plurality of second matrices. The data processing device according to any one of
(付記7)前記演算対象の行列に含まれる複数の要素の各々が虚部と実部とを有する場合に、
前記変換部は、
前記演算対象の行列に含まれる複数の要素の各々が有する虚部の符号を入れ替えて、入れ替えた後の前記演算対象の行列を出力する共役部を有することを特徴とする付記1〜6のいずれか一つに記載のデータ処理装置。
(Supplementary note 7) When each of a plurality of elements included in the calculation target matrix has an imaginary part and a real part,
The converter is
Any one of
(付記8)前記第2行列は、前記第1行列の転置行列であることを特徴とする付記1〜7のいずれか一つに記載のデータ処理装置。
(Supplementary note 8) The data processing device according to any one of
(付記9)コンピュータが、
対象の演算命令によってメモリから取得した第1行列を受け付けて、受け付けた前記第1行列と、前記第1行列に含まれる複数の要素と同一の要素を含み前記第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた第2行列と、のうち、前記演算命令が指示する演算対象の行列を出力し、
出力した前記演算対象の行列に対して、前記演算命令が指示する演算を行う、
ことを特徴とするデータ処理方法。
(Supplementary note 9)
The first matrix acquired from the memory by the target operation instruction is received, and the received first matrix and the plurality of elements included in the first matrix including the same elements as the plurality of elements included in the first matrix Out of the second matrix in which the arrangement of at least any two of the elements is replaced, and outputs a matrix to be calculated indicated by the calculation instruction,
Performing the operation indicated by the operation instruction on the output matrix to be operated;
A data processing method.
100 データ処理装置
101 メモリ
111 変換部
112 演算部
200 ベースバンド処理LSI
201 RF部
202 専用ハードウェア
203 DSP
205 アンテナ
211 プロセッサ
212 周辺回路
213 命令メモリ
214 データメモリ
221 CPU
301 データ供給回路
302 演算データパス
303 データストア回路
304 命令デコーダ
401 ラップアラウンド処理回路
402 行列変換回路
501,802,1311 マルチプレクサ
601 バッファ
611 選択部
612 選択制御部
621 記憶部
801 入力バッファ
803 行列変換制御回路
804 共役回路
805 出力バッファ
811 インデックステーブル
812 共役制御回路
1301 入力FIFO
1312 WM制御回路
1501 インデックス選択マルチプレクサ
1502 データ選択マルチプレクサ
src0,src1 ソースデータ
sel0〜sel15 データ選択制御信号,TF制御信号
SEL00〜SEL31 WM制御信号
DESCRIPTION OF
201
DESCRIPTION OF
1312
Claims (8)
前記変換部によって出力された前記演算対象の行列に対して、前記演算命令が指示する演算を行う演算部と、
を有することを特徴とするデータ処理装置。 The first matrix acquired from the memory by the target operation instruction is received, and the received first matrix and the plurality of elements included in the first matrix including the same elements as the plurality of elements included in the first matrix A second matrix in which the arrangement of at least any two of the elements is replaced, and a conversion unit that outputs a matrix to be calculated indicated by the calculation instruction;
An arithmetic unit that performs an operation instructed by the arithmetic instruction on the matrix to be calculated output by the conversion unit;
A data processing apparatus comprising:
前記第1行列と、前記第2行列と、のうち、いずれかを出力する選択部と、
前記演算命令によって、前記第1行列と、前記第2行列と、のうち、いずれかを前記選択部に出力させる制御を行う選択制御部と、
を有することを特徴とする請求項1に記載のデータ処理装置。 The converter is
A selection unit that outputs one of the first matrix and the second matrix;
A selection control unit that performs control to cause the selection unit to output one of the first matrix and the second matrix in accordance with the arithmetic instruction;
The data processing apparatus according to claim 1, further comprising:
行の要素の数および列の要素の数に対応する前記第1行列に含まれる特定の並びの複数の要素について前記選択部に出力させる前記第1行列に含まれる複数の要素の並びを指示する制御信号の値を記憶する記憶部から、前記演算命令が指示する前記演算対象の行列についての行の要素の数および列の要素の数に基づいて、前記制御信号の値を読み出して前記選択部に出力し、
前記選択部は、
前記第1行列に含まれる複数の要素を、前記選択制御部から出力された前記制御信号が指示する並びにした複数の要素を含む前記演算対象の行列を出力する、
ことを特徴とする請求項2に記載のデータ処理装置。 The selection control unit
Instructing the arrangement of a plurality of elements included in the first matrix to be output to the selection unit for a plurality of elements in a specific arrangement included in the first matrix corresponding to the number of elements in a row and the number of elements in a column Based on the number of elements in a row and the number of elements in a column for the matrix to be calculated indicated by the calculation instruction from the storage unit that stores the value of the control signal, the value of the control signal is read out and the selection unit Output to
The selection unit includes:
Outputting a plurality of elements included in the first matrix, the calculation target matrix including a plurality of elements instructed by the control signal output from the selection control unit;
The data processing apparatus according to claim 2.
前記選択部は、
前記バッファに格納された前記所定数の要素を入力可能な前記所定数の選択回路の各々が、前記バッファに格納された前記第1行列に含まれる複数の要素のうちのいずれかを制御信号に基づき選択して出力し、
前記選択制御部は、
前記バッファに格納された前記第1行列に含まれる複数の要素のうち前記選択回路の各々に選択させる要素を指示する制御信号を出力する、
ことを特徴とする請求項2または3に記載のデータ処理装置。 A buffer capable of storing a predetermined number of elements equal to or greater than the number of elements included in the first matrix, the buffer storing a plurality of elements included in the first matrix acquired from the memory in a specific sequence Have
The selection unit includes:
Each of the predetermined number of selection circuits capable of inputting the predetermined number of elements stored in the buffer uses any one of a plurality of elements included in the first matrix stored in the buffer as a control signal. Select and output based on
The selection control unit
Outputting a control signal indicating an element to be selected by each of the selection circuits among a plurality of elements included in the first matrix stored in the buffer;
The data processing apparatus according to claim 2 or 3, wherein
前記バッファに格納された前記所定数の要素のうち前記第1行列に含まれる複数の要素が格納された位置データと、前記制御信号(以下、「第1制御信号」と称する。)と、に基づいて、前記バッファに格納された前記所定数の要素のうち前記選択回路の各々に選択させる要素を指示する第2制御信号を生成し、前記選択回路の各々が生成した前記第2制御信号に基づいて前記バッファに格納された前記所定数の要素のうちのいずれかを選択して出力することを特徴とする請求項4に記載のデータ処理装置。 The selection unit includes:
Position data storing a plurality of elements included in the first matrix among the predetermined number of elements stored in the buffer, and the control signal (hereinafter referred to as “first control signal”). Based on the predetermined number of elements stored in the buffer, a second control signal is generated to indicate an element to be selected by each of the selection circuits, and the second control signal generated by each of the selection circuits is generated. 5. The data processing apparatus according to claim 4, wherein one of the predetermined number of elements stored in the buffer is selected and output based on the selected element.
前記第2行列は、行および列の要素の数が互いに同じ複数の第2行列であって、
前記複数の第2行列の各々は、前記複数の第2行列の各々に対応する前記複数の第1行列の各々について前記第1行列に含まれる前記複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた行列であることを特徴とする請求項1〜5のいずれか一つに記載のデータ処理装置。 The first matrix is a plurality of first matrices having the same number of row and column elements,
The second matrix is a plurality of second matrices having the same number of row and column elements,
Each of the plurality of second matrices includes at least any two elements of the plurality of elements included in the first matrix for each of the plurality of first matrices corresponding to each of the plurality of second matrices. The data processing apparatus according to claim 1, wherein the data processing apparatus is a matrix in which the arrangement of the above is exchanged.
前記変換部は、
前記演算対象の行列に含まれる複数の要素の各々が有する虚部の符号を入れ替えて、入れ替えた後の前記演算対象の行列を出力する共役部を有することを特徴とする請求項1〜6のいずれか一つに記載のデータ処理装置。 When each of the plurality of elements included in the matrix to be operated has an imaginary part and a real part,
The converter is
The imaginary part of each of a plurality of elements included in the matrix to be calculated is replaced with a sign, and a conjugate part that outputs the matrix to be calculated after the replacement is provided. The data processing device according to any one of the above.
対象の演算命令によってメモリから取得した第1行列を受け付けて、受け付けた前記第1行列と、前記第1行列に含まれる複数の要素と同一の要素を含み前記第1行列に含まれる複数の要素のうちの少なくともいずれか2つの要素の並びを入れ替えた第2行列と、のうち、前記演算命令が指示する演算対象の行列を出力し、
出力した前記演算対象の行列に対して、前記演算命令が指示する演算を行う、
ことを特徴とするデータ処理方法。 Computer
The first matrix acquired from the memory by the target operation instruction is received, and the received first matrix and the plurality of elements included in the first matrix including the same elements as the plurality of elements included in the first matrix Out of the second matrix in which the arrangement of at least any two of the elements is replaced, and outputs a matrix to be calculated indicated by the calculation instruction,
Performing the operation indicated by the operation instruction on the output matrix to be operated;
A data processing method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015099446A JP2016218528A (en) | 2015-05-14 | 2015-05-14 | Data processing device and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015099446A JP2016218528A (en) | 2015-05-14 | 2015-05-14 | Data processing device and data processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016218528A true JP2016218528A (en) | 2016-12-22 |
Family
ID=57581199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015099446A Pending JP2016218528A (en) | 2015-05-14 | 2015-05-14 | Data processing device and data processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016218528A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018132901A (en) * | 2017-02-14 | 2018-08-23 | 富士通株式会社 | Arithmetic processing unit and method for controlling arithmetic processing unit |
-
2015
- 2015-05-14 JP JP2015099446A patent/JP2016218528A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018132901A (en) * | 2017-02-14 | 2018-08-23 | 富士通株式会社 | Arithmetic processing unit and method for controlling arithmetic processing unit |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kim et al. | Hardware architecture of a number theoretic transform for a bootstrappable RNS-based homomorphic encryption scheme | |
JP5866128B2 (en) | Arithmetic processor | |
JP6225687B2 (en) | Data processing apparatus and data processing method | |
JP6079433B2 (en) | Moving average processing program and processor | |
US9361065B2 (en) | Processor and processing method | |
US10656943B2 (en) | Instruction types for providing a result of an arithmetic operation on a selected vector input element to multiple adjacent vector output elements | |
CN110914800B (en) | Register-based complex processing | |
JP7038608B2 (en) | Semiconductor device | |
JP3940714B2 (en) | Arithmetic device and encryption / decryption arithmetic device | |
JP2016218528A (en) | Data processing device and data processing method | |
US11604852B2 (en) | Signal processing apparatus, method, program, and recording medium | |
US10387118B2 (en) | Arithmetic operation unit and method of controlling arithmetic operation unit | |
US12019700B2 (en) | Signal processing apparatus, method, program, and recording medium | |
Dan et al. | High-performance hardware architecture of elliptic curve cryptography processor over GF (2163) | |
JP2015060256A (en) | Data supply circuit, arithmetic processing circuit, and data supply method | |
JPS6310263A (en) | Vector processor | |
JP2012128790A (en) | Arithmetic processor | |
JP6687700B2 (en) | Information processing device, information processing method, and program | |
JP5131346B2 (en) | Wireless communication device | |
US7076744B2 (en) | Circuit design method, apparatus, and program | |
JP6060853B2 (en) | Processor and processor processing method | |
JP5493646B2 (en) | Discrete Fourier transform apparatus and discrete Fourier transform / discrete inverse Fourier transform method | |
JP2010072981A (en) | Product-sum operation device and product-sum operation method for complex number | |
JP5459180B2 (en) | Logic circuit, receiving apparatus, and logic operation method | |
JP2019067375A (en) | Arithmetic processing device, computing element, and method for controlling arithmetic processing device |