JP2013205973A - 行列演算装置 - Google Patents

行列演算装置 Download PDF

Info

Publication number
JP2013205973A
JP2013205973A JP2012072237A JP2012072237A JP2013205973A JP 2013205973 A JP2013205973 A JP 2013205973A JP 2012072237 A JP2012072237 A JP 2012072237A JP 2012072237 A JP2012072237 A JP 2012072237A JP 2013205973 A JP2013205973 A JP 2013205973A
Authority
JP
Japan
Prior art keywords
data
matrix
matrix operation
size
data array
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.)
Granted
Application number
JP2012072237A
Other languages
English (en)
Other versions
JP5840994B2 (ja
Inventor
Ge Yi
毅 葛
Hiroshi Hatano
博 畑農
Kazuo Horio
一生 堀尾
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
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Ltd
Fujitsu Semiconductor 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, Fujitsu Semiconductor Ltd filed Critical Fujitsu Ltd
Priority to JP2012072237A priority Critical patent/JP5840994B2/ja
Priority to US13/778,843 priority patent/US9069716B2/en
Publication of JP2013205973A publication Critical patent/JP2013205973A/ja
Application granted granted Critical
Publication of JP5840994B2 publication Critical patent/JP5840994B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】行列演算を効率的に行うこと。
【解決手段】メモリに格納されたデータに対して第1のサイズの行列演算を行う機能と、前記メモリに格納されたデータに対して前記第1のサイズを拡大した第2のサイズの行列演算を行う機能と、を有する行列演算部と、前記第1のサイズの行列演算に適したデータ配列と、前記第2のサイズの行列演算に適したデータ配列とを、前記メモリ上で少なくとも一方向に変換可能なデータ配列変換部と、を有する行列演算装置。
【選択図】図15

Description

本発明は、行列演算装置に関する。
従来、無線通信ベースバンド処理などで、大量の行列演算処理が必要となる場合がある。このような同一の行列処理を大量のデータに施す際には、メモリから一連のデータを連続して読み出して演算を行い、一連の演算結果をメモリにおける連続したアドレスに書き込むストリーム型の演算処理装置が好適に用いられる。
行列とメモリに関連した2次元配列転置回路が知られている。この2次元配列転置回路では、アドレス変換回路が、下位ビットのアドレス信号が行アドレスを与え、上位ビットのアドレス信号が列アドレスを与えるように制御する第1の制御動作を行う。また、アドレス変換回路が、上位ビットのアドレス信号が行アドレスを与え、下位ビットのアドレス信号が列アドレスを与えるように制御する第2の制御動作を行う。そして、2次元配列転置回路は、第1の制御動作と第2の制御動作のいずれかの制御動作を行うことにより、メモリに書き込まれた2次元配列のデータの転置読み出しを行う。
特開平10−207868号公報
ところで、メモリ上の大量のデータを連続アドレスでアクセスしてストリーム処理するプロセッサの場合、データが連続アドレスに並んでいないと処理性能が大きく低下してしまう。
しかしながら、例えば2×2行列演算と4×4行列演算を行うプロセッサの場合、2×2行列演算の結果は、2×2行列演算を対象とするのに適した形式でメモリに格納される。このため、メモリ上の2×2行列演算の結果を4×4行列演算の対象とする場合、2×2行列演算の結果であるデータ配列が4×4行列演算に適したものでないため、処理を効率的に行うことができない場合があった。同様に、4×4行列演算の結果を2×2行列演算の対象とする場合も、4×4行列演算の結果のデータ配列が2×2行列演算に適したものでないため、処理を効率的に行うことができない場合があった。
この点、上記従来の2次元配列転置回路は、単にメモリに書き込まれた2次元配列のデータの転置読み出しを行うものであり、異なるサイズの行列演算に適した形式でデータを配列可能なものでは無い。
一つの側面では、本発明は、行列演算を効率的に行うことを目的とする。
本発明の一態様は、メモリに格納されたデータに対して第1のサイズの行列演算を行う機能と、前記メモリに格納されたデータに対して前記第1のサイズを拡大した第2のサイズの行列演算を行う機能と、を有する行列演算部と、前記第1のサイズの行列演算に適したデータ配列と、前記第2のサイズの行列演算に適したデータ配列とを、前記メモリ上で少なくとも一方向に変換可能なデータ配列変換部と、を有する行列演算装置である。
一実施態様によれば、行列演算を効率的に行うことができる。
本発明の第1実施例に係る行列演算装置1が、携帯電話のベースバンド処理LSI100に適用された適用例である。 携帯電話端末がLTEのエリアとW-CDMAのエリアを跨いで移動する様子を示す図である。 通信方式を切り替え可能な携帯電話100によって実行される処理の流れを示すフローチャートの一例である。 行列演算装置1のハードウェア構成例である。 演算データパス40のハードウェア構成例である。 本実施例の行列演算装置1がストリーム型処理によって4×4行列乗算を連続的にN回行う様子を示す図である。 A0×B0=C0を演算する際の演算データパス40の結線構造を模式的に示す図である。 本実施例の行列演算装置1がストリーム型処理によって2×2行列乗算を並行して4回行う(4SIMD)様子を示す図である。 a0×b0=c0、…a3×b3=c3を並列演算する際の演算データパス40の結線構造を模式的に示す図である。 8×8行列乗算を2×2行列乗算、又は4×4行列乗算に分解して処理する様子を示す図である。 メモリ上に格納されたデータから4×4行列を解釈する一般的な規則を示す図である。 本実施例の制御回路10が、データメモリ134に格納されたデータから4×4行列を解釈する特徴的な規則を示す図である。 並行して演算する2×2行列のソースがデータメモリ134の同じライン上に格納されていないデータ配列を示す図である。 行列演算装置1が行う変換処理を簡易に示す図である。 2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理を説明するための図である。 4×4行列演算用のデータ配列を、2×2行列演算用のデータ配列に変換する処理を説明するための図である。 ソートレジスタ50の構造及び機能を模式的に示す図である。 書き込みサイクルと読み出しサイクルがオフセットして制御される様子を示す図である。 2×2行列から4×4行列への変換処理が行われる際に、制御回路10により実行される処理の流れを示すフローチャートの一例である。 4×2行列Aと2×4行列Bの乗算を行った結果の行列Cを、4×4行列Dに乗算して4×4行列Eを得る演算を示す図である。 2×2行列で全ての演算処理を行う様子を示す図である。 本実施例の行列演算装置1による処理を示す図である。 2×2行列A、B、C、DからXの逆行列X-1の2×2成分RA、RB、RC、RDを導出する処理を示すブロック図である。 第2実施例に係る行列演算装置2が、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理を説明するための図である。 第2実施例に係る行列演算装置2が、4×4行列演算用のデータ配列を、2×2行列演算用のデータ配列に変換する処理を説明するための図である。 第3実施例に係る行列演算装置3が、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理を説明するための図である。 第3実施例に係る行列演算装置3が、4×4行列演算用のデータ配列を、2×2行列演算用のデータ配列に変換する処理を説明するための図である。
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
<第1実施例>
以下、図面を参照し、本発明の第1実施例に係る行列演算装置1について説明する。
[適用例]
図1は、本発明の第1実施例に係る行列演算装置1が、携帯電話のベースバンド処理LSI(Large Scale Integrated circuit)100に適用された適用例である。ベースバンド処理LSI100は、例えば、RF部110と、専用ハードウェア120と、DSP(Digital Signal Processor)130#1〜130#3とを備える。
RF部110は、アンテナ150を介して受信された無線信号の周波数をダウンコンバートし、デジタル信号に変換してバス140に出力する。また、RF部10は、バス150に出力されたデジタル信号をアナログ信号に変換し、無線周波数にアップコンバートして、アンテナ150に出力する。
専用ハードウェア120は、例えば誤り訂正符号を扱うturbo、ビタビアルゴリズムを実行するviterbi、複数のアンテナでデータの送受信を行なうためのMIMO(Multi Input Multi Output)等を含む。
以下、いずれのDSPであるかを区別せず、DSP130と称する。DSP130は、プロセッサ131と、プログラムメモリ132と、周辺回路133と、データメモリ134とを備える。プロセッサ131は、CPU135と、本実施例の行列演算装置1とを有する。各DSP130にはSearcher(同期)、Demodulator(復調)、Decoder(復号)、Codec(符号化)、Modulator(変調)等、無線通信信号処理の各要素処理が割り当てられる。
このようなLSI100が用いられる背景について説明する。携帯電話が1つの方式のベースバンド処理のみ行うのであれば、専用ハードウェアで携帯電話全体を構成することができる。しかしながら、例えば、LTEとW-CDMAを同一のハードウェア上で実行したい場合は、DSP130のようなプログラマブルなハードウェアを備える必要がある。図2は、携帯電話端末がLTEのエリアとW-CDMAのエリアを跨いで移動する様子を示す図である。この場合、携帯電話は、ソフトウェアを変更するだけで無線通信方式を切り替えることができる。図3は、通信方式を切り替え可能な携帯電話100によって実行される処理の流れを示すフローチャートの一例である。まず、携帯電話100は、基地局を検索し(S200)、最も感度の良い基地局を検索する(S202)。次に、携帯電話100は、現在通信中の基地局と異なる基地局が、最も感度の良い基地局であるか否かを判定する(S204)。現在通信中の基地局と異なる基地局が、最も感度の良い基地局である場合、携帯電話100は、最も感度の良い基地局の通信方式が現在のものと異なるか否かを判定する(S206)。最も感度の良い基地局の通信方式が現在のものと異なる場合、携帯電話100は、通信方式を変更する(S208)。
[行列演算装置]
以下、例えば上記のような携帯電話100に使用される行列演算装置1について説明する。図4は、行列演算装置1のハードウェア構成例である。行列演算装置1は、例えば制御回路10と、ロードストアユニット20と、FIFO(First In, First Out)30、31、32と、ソートレジスタ50を含む演算データパス40とを備える。
制御回路10は、例えばCPU135から入力される命令に従って演算器群40を制御する。制御回路10に与えられる命令は、例えば、演算種別、ソース(1)の先頭アドレス、ソース(2)の先頭アドレス、デスティネーション(格納先)の先頭アドレス、演算する単位データの個数Nである。
ロードストアユニット20は、データメモリ134との間でデータの送受信を行う。以下、本実施例に係るデータメモリ134は、例えば、1ライン(一度に読み書き可能なデータの単位)が512バイトのバンクを4つ有する。ロードストアユニット20は、1サイクルにおいて、データメモリ134の各バンクに対して512バイトのデータを読み書き可能であり、1サイクルに512バイト×4バンクで2048バイトのデータを読み書き可能である。FIFO30、31には、ロードストアユニット20がデータメモリ134から読み込んだデータが格納され、FIFO32には、ロードストアユニット20がデータメモリ134に書き込むデータが格納される。
演算データパス40は、例えば2×2行列演算、又は4×4行列演算を行うことができる。図5は、演算データパス40のハードウェア構成例である。演算データパス40は、例えば、8個の2×2行列乗算モジュール40Aと、8個の2×2行列加算モジュール40Bとを有し、モジュール4個に対して1個のマルチプレクサ40Cが取り付けられている。演算データパス40は、モジュール間の結線を切り替えることで、4×4行列乗算、2×2行列乗算の4並列(SIMD)、2×2逆行列演算の4並列(SIMD)等を行うことができる。
2×2行列乗算モジュール40Aは、例えば、32個の乗算器40Aa、2個の除算器40Ab、及び図示しない24個の加算器を有する。2×2行列乗算モジュール40Aは、制御信号が与えられることで、自己の機能を2×2行列乗算、2×2逆行列演算を含む複数の機能から選択することができる。なお、図5は、数値が16bitの実部及び虚部を持つ複素数の場合を示しており、実数のみを扱う場合、乗算器等の数は、より少なくなる。
ソートレジスタ50の機能については後述する。
図6は、本実施例の行列演算装置1がストリーム型処理によって4×4行列乗算を連続的にN回行う様子を示す図である。図示するように、行列演算装置1は、まずA0×B0の行列乗算を行ってC0に格納し、次にA1×B1の行列乗算を行ってC1に格納し、最後に、AN−1×BN−1の行列乗算を行ってCN−1に格納する。行列演算装置1は、例えば命令として、演算の種別(この場合、4×4行列乗算)、A0が格納された先頭アドレス、B0が格納された先頭アドレス、デスティネーション、データの個数(N個)が与えられると、N回の行列乗算を連続して実行する。このような、メモリ上で連続したアドレスに格納された複数のデータを連続して処理することを、ストリーム型処理と称する。
ロードストアユニット20は、シーケンシャルアクセス方式によって、A0と読み込むとA1を読み込み、次いでA2を読み込むといった動作を行う。同一サイクルで同じバンクからA0とB0を読み込むことはできないため、ロードストアユニット20は、例えばA0を読み込んだ次のサイクルでB0を読み込み、FIFO30にA0が、FIFO31にB0が格納された時点でA0×B0の行列演算が可能となる。複数のバンクに跨ってソースを格納しておき、あるデータ(例えばA0)にアクセスする遅延時間の最中に次のアドレス(例えばA1)へアクセス要求を発行するメモリインターリーブ方式を採用することにより、全体のアクセス時間が短縮される。図7は、A0×B0=C0を演算する際の演算データパス40の結線構造を模式的に示す図である。図7は、A0を、4個の2×2行列A0(0)、A0(1)、A0(2)、A0(3)に分解して示している。同様に、図7は、B0を、4個の2×2行列B0(0)、B0(1)、B0(2)、B0(3)に分解して示し、C0を、4個の2×2行列C0(0)、C0(1)、C0(2)、C0(3)に分解して示している。
一方、図8は、本実施例の行列演算装置1がストリーム型処理によって2×2行列乗算を並行して4回行う(4SIMD)様子を示す図である。図示するように、行列演算装置1は、a0×b0を演算してc0に格納し、a1×b1を演算してc1に格納し、a2×b2を演算してc2に格納し、a3×b3を演算してc3に格納することを、並行して行うことができる。例えば命令として、演算の種別(この場合、2×2行列乗算)、a0が格納された先頭アドレス、b0が格納された先頭アドレス、デスティネーション、データの個数(N個)が与えられると、行列演算装置1は、N回の並行行列乗算を連続して実行する。この場合、行列演算装置1は、a0〜a3からa4N−4〜a4N−1、b0〜b3からb4N−4〜b4N−1をそれぞれソースとし、c0〜c3からc4N−4〜c4N−1までをデスティネーションとする。図9は、a0×b0=c0、…a3×b3=c3を並列演算する際の演算データパス40の結線構造を模式的に示す図である。なお、a0、b0等の2×2行列は、データメモリ134上では、4個の行列要素が一列に並べられたデータとして表現される。
ここで、一般的な行列演算のサイズ変換について説明する。図10は、8×8行列乗算を2×2行列乗算、又は4×4行列乗算に分解して処理する様子を示す図である。図10(A)は、8×8行列乗算をそのまま行う様子を示し、図10(B)は、8×8行列乗算を2×2行列に分解して行う様子を示す。図10(B)の演算結果である8×8行列を16分割した各2×2行列は、それぞれ2×2行列乗算を4回行った結果を加算したものとなる。同様に、図10(C)は、図10(B)は、8×8行列乗算を4×4行列に分解して行う様子を示す。図10(C)の演算結果である8×8行列を4分割した各4×4行列は、それぞれ4×4行列乗算を2回行った結果を加算したものとなる。
[並行して行われる2×2行列演算のソースが同じライン上にある場合]
ところで、図8のように、並行して演算するソースがデータメモリ134の同じライン上に格納されている場合は、例えば2×2行列演算用に格納されたデータa0〜a3、及びb0〜3を4×4行列とみなして4×4行列演算を行うことは可能である。但し、この場合、制御回路10は、特有のデータ解釈を行う必要がある。
図11は、メモリ上に格納されたデータから4×4行列を解釈する一般的な規則を示す図である。しかしながら、このような規則で4×4行列を解釈すると、元々2×2行列の要素であったデータ(1)〜(4)が4×4行列内では2×2行列を形成しないため、2×2行列演算用に格納されたデータを4×4行列とみなして4×4行列演算を行うのには、多くの処理を要する。
これに対し、図12は、本実施例の制御回路10が、データメモリ134に格納されたデータから4×4行列を解釈する特徴的な規則を示す図である。図示するように、この特徴的な規則では、4×4行列を構成する行列要素が、2×2行列の形態を維持したデータ配列となっている。この結果、本実施例の行列演算装置1は、2×2行列演算用に格納されたデータを4×4行列とみなして、容易に4×4行列演算を行うことができる。また、本実施例の行列演算装置1は、4×4行列演算用に格納されたデータを2×2行列とみなして、容易に2×2行列演算を行うこともできる。
[並行して行われる2×2行列演算のソースが同じライン上にない場合]
一方、並行して演算する2×2行列のソースがデータメモリ134の同じライン上に格納されていない場合は、2×2行列演算用に格納されたデータを4×4行列とみなして4×4行列演算を行うことが困難である。このため、本実施例の行列演算装置1は、2×2行列演算に適したデータ配列と、4×4行列演算に適したデータ配列を相互に変換する機能を有する。係るデータ配列の変換命令は、例えばCPU135から制御回路10に送信される。
図13は、並行して演算する2×2行列のソースがデータメモリ134の同じライン上に格納されていないデータ配列を示す図である。図13に示すデータ配列に対して、本実施例の行列演算装置1は、ソース(1)とソース(2)の演算を行ってデスティネーションに格納する処理を並行して行う。例えば、行列演算装置1は、c0×e0の結果をi0に格納し、b0×f0の結果をj0に格納し、a0×g0の結果をk0に格納し、d0×h0の結果をi0に格納することを、並行して行う。
図13に示すデータ配列に対し、2×2行列を結合して4×4行列にし、4×4行列演算を行う場合、予め、ソース(1)を構成するc0、b0、a0、d0をA0に格納し、ソース(2)を構成するe0、f0、g0、h0をB0に格納する処理が必要となる。逆に、4×4行列を2×2行列に分解して2×2行列演算を行う場合、A0をc0、b0、a0、d0に分解して別のラインに格納し、B0をe0、f0、g0、h0に分解して別のラインに格納する処理が必要となる。図14は、行列演算装置1が行う変換処理を簡易に示す図である。なお、図14は、ソース(1)のみに着目した図である。
[データ配列の変換]
以下、本実施例の行列演算装置1により実行されるデータ配列の変換処理について説明する。
まず、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理について説明する。図15は、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理を説明するための図である。
制御回路10は、CPU135からデータ配列変換命令を受信すると、ロードストアユニット20に、例えばa0〜a3、b0〜b3、c0〜c3、d0〜d3、a4〜a7、…の順にデータメモリ134からデータを読み込んで、FIFO30(又は31)に格納させる。そして、制御回路10は、例えば面1と面2を有するソートレジスタ50に、FIFO30に格納されたデータを行方向に格納し、列方向に読み出してFIFO32に書き込む処理を行う。この結果、FIFO32から読み出されてデータメモリ134に書き込まれるデータは、例えばa0、b0、c0、d0のように、4×4行列演算に適した形式となる。この際に、図15に示すように、データ系列a0〜aN−1、b0〜bN−1等は、4×4行列における配列順に並んでいる必要はない。
図16は、図15とは逆に、4×4行列演算用のデータ配列を、2×2行列演算用のデータ配列に変換する処理を説明するための図である。制御回路10は、CPU135からデータ配列変換命令を受信すると、ロードストアユニット20に、例えばA0を読み込んで、FIFO30(又は31)に格納させる。そして、制御回路10は、FIFO30に格納されたデータを列方向にソートレジスタ50に格納し、行方向に読み出してFIFO32に書き込む処理を行う。この結果、FIFO32から読み出されてデータメモリ134に書き込まれるデータは、例えばa0〜a3、b0〜b3、c0〜c3、d0〜d3のように、2×2行列演算に適した形式となる。
図17は、ソートレジスタ50の構造及び機能を模式的に示す図である。ソートレジスタは、面1と面2を備える。図中の数字は、書き込みサイクルと読み出しサイクルの処理順を表している。書き込みサイクルと読み出しサイクルは、例えば位相が4サイクル分オフセットして制御される。図18は、書き込みサイクルと読み出しサイクルがオフセットして制御される様子を示す図である。
例えば、書き込みサイクル0ではa0〜a3が面1の第1行に書き込まれ、書き込みサイクル1ではb0〜b3が第2行に書き込まれ、書き込みサイクル2ではc0〜c3が第3行に書き込まれ、書き込みサイクル1ではb0〜b3が第4行に書き込まれる。次いで、書き込みサイクル4ではa4〜a7が面2の第1行に書き込まれ、書き込みサイクル5ではb4〜b7が第2行に書き込まれ、書き込みサイクル6ではc4〜c7が第3行に書き込まれ、書き込みサイクル7ではd4〜d7が第4行に書き込まれる。これらを制御する書き込み制御信号は、制御回路10から出力される。
一方、読み出しサイクル0では面1の各行の先頭データが読み出され、読み出しサイクル1では各行の2番目のデータが読み出され、読み出しサイクル2では各行の3番目のデータが読み出され、読み出しサイクル3では各行の4番目のデータが読み出される。次いで、読み出しサイクル4では面2の各行の先頭データが読み出され、読み出しサイクル5では各行の2番目のデータが読み出され、読み出しサイクル6では各行の3番目のデータが読み出され、読み出しサイクル7では各行の4番目のデータが読み出される。ソートレジスタ50には、マルチプレクサ52が取り付けられており、面1と面2のいずれか該当する面のデータが読み出され、FIFO32に格納される。これらを制御する読み出し制御信号は、制御回路10から出力される。
書き込みサイクル0〜3では、例えばバンク0からの読み出しが行われ、書き込みサイクル4〜7では、例えばバンク1からの読み出しが行われる。同様に、読み出しサイクル0〜3では、例えばバンク0への書き込みが行われ、読み出しサイクル4〜7では、例えばバンク1への書き込みが行われる。本実施例の行列演算装置は、これらを互いにオフセットさせることにより、データメモリ134からの読み出しと書き込みを同時に行うことができ、迅速に変換処理を行うことができる。なお、係る制御にも拘わらず読み出し対象バンクと書き込み対象バンクが競合したときは、例えばデータメモリ134への書き込みが優先される。
図19は、2×2行列から4×4行列への変換処理が行われる際に、制御回路10により実行される処理の流れを示すフローチャートの一例である。
まず、制御回路10は、x[0]=a、x[1]=b、x[2]=c、x[3]=dと定義し、変数iの初期値を0とする(S300)。
次に、制御回路10は、データメモリ134のアドレスx[i]から512ビット分のデータをロードしてFIFO30に格納(PUSH)する(S302)。
次に、制御回路10は、x[i]を1バンク分インクリメントし(例えばa0→a4、b0→b4等)、変数iを次式(1)に基づき更新する(S304)。
i=(i+1)mod4 …(1)
次に、制御回路10は、所望のデータ分、処理が終了したか否かを判定する(S306)。制御回路10は、所望のデータ分、処理が終了した場合は本フローチャートの処理を終了し、所望のデータ分、処理が終了していない場合はS302に戻り処理を実行する。
[変換を行うと好適な演算処理例]
ここで、2×2行列と4×4行列の間でデータ配列を変換すると好適な例について説明する。図20は、4×2行列Aと2×4行列Bの乗算を行った結果の行列Cを、4×4行列Dに乗算して4×4行列Eを得る演算を示す図である。本実施例のようにデータ配列の変換機能を有さない行列演算装置の場合、図21に示すように、2×2行列で全て演算処理を行う必要がある。
これに対し、本実施例の行列演算装置1の場合、2×2行列演算によってA×Bを演算した後、演算結果のデータ配列を4×4行列演算に適した形式に変換することができる。この結果、C×Dの行列演算を、4×4行列演算によって行うことができる。図22は、本実施例の行列演算装置1による処理を示す図である。
また、4×4行列の演算を行う途中で、4×4行列の逆行列を求めたい場面が存在する。しかしながら、行列演算装置のサイズ、性能によっては、逆行列演算は2×2行列についてのみ可能な場合がある。本実施例のようにデータ配列の変換機能を有さない行列演算装置の場合、最初から全ての演算を2×2行列演算で行う必要がある。
これに対し、本実施例の行列演算装置1は、例えば4×4行列Xを2×2行列A、B、C、Dに分解し、これらを用いてXの逆行列X-1の2×2成分RA、RB、RC、RDを求めることができる。そして、行列演算装置1は、2×2成分RA、RB、RC、RDを2×2行列から4×4行列への変換機能を用いて結合することにより、Xの逆行列X-1を得ることができる。次式(2)は、2×2行列A、B、C、DからXの逆行列X-1の2×2成分RA、RB、RC、RDを導出するための式である。また、図23は、2×2行列A、B、C、DからXの逆行列X-1の2×2成分RA、RB、RC、RDを導出する処理を示すブロック図である。
Figure 2013205973
図5に例示した構成によって本実施例の行列演算装置1は、4×4行列演算を1サイクルで行うことができる。ところが、2×2行列演算で、4×4行列乗算を行おうとすると、例えば3サイクル程度の時間を要する場合がある。そこで、本実施例の行列演算装置1は、2×2行列演算に適したデータ配列と4×4行列演算に適したデータ配列を相互に変換する機能を有するものとした。これによって、本実施例の行列演算装置1は、なるべく4×4行列演算によって処理を行う一方、2×2行列演算を行う必要がある処理についてのみ2×2行列演算を行うといった機動的な処理を行うことができる。この結果、本実施例の行列演算装置1は、行列演算を効率的に行うことができる。
[まとめ]
以上説明した本実施例の行列演算装置1は、2×2行列演算に適したデータ配列と4×4行列演算に適したデータ配列を相互に変換する機能を有するため、行列演算を効率的に行うことができる。
<第2実施例>
以下、図面を参照し、本発明の第2実施例に係る行列演算装置2について説明する。第2実施例に係る行列演算装置2は、2×2行列演算に適したデータ配列と、4×4行列演算に適したデータ配列を相互に変換するための構成が第1実施例と異なる。従って、第2実施例では、係る相違点を中心として説明する。
図24は、第2実施例に係る行列演算装置2が、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理を説明するための図である。第2実施例に係る行列演算装置2は、データストリーム毎(ソース毎、デスティネーション毎)にロードストアユニット20を有する(図では、20#1、20#2、20#3、20#4、20#5と表記した)。第2実施例に係る各ロードストアユニット20は、専用のFIFO35#1〜35#5を有し、FIFO35#1〜35#4にはマルチプレクサ36#1〜36#4が取り付けられている。各マルチプレクサは、FIFO35#1〜35#4に格納されたデータを、他のマルチプレクサと同期して各行の1番目に格納されたデータから順に読み出してFIFO35#5に書き込む。FIFO35#1〜35#4は、1データ分読み出されたときにポップされる。係る処理によって、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換することができる。
図25は、第2実施例に係る行列演算装置2が、4×4行列演算用のデータ配列を、2×2行列演算用のデータ配列に変換する処理を説明するための図である。この場合、図24とは逆に、各マルチプレクサが、FIFO35#5からデータを読み出すと共に、データの4分の1ずつFIFO35#1〜35#4に書き込む。FIFO35#1〜35#4は、1データ分書き込まれたときにプッシュされる。
以上説明した第2実施例の行列演算装置2は、2×2行列演算に適したデータ配列と4×4行列演算に適したデータ配列を相互に変換する機能を有するため、行列演算を効率的に行うことができる。
<第3実施例>
以下、図面を参照し、本発明の第3実施例に係る行列演算装置3について説明する。第3実施例に係る行列演算装置3は、2×2行列演算に適したデータ配列と、4×4行列演算に適したデータ配列を相互に変換するための構成が第1実施例と異なる。従って、第3実施例では、係る相違点を中心として説明する。
図26は、第3実施例に係る行列演算装置3が、2×2行列演算用のデータ配列を、4×4行列演算用のデータ配列に変換する処理を説明するための図である。第3実施例に係る行列演算装置2は、FIFO30及び31が、行方向と列方向を入れ替えてソートする機能を有する。また、図27は、第3実施例に係る行列演算装置3が、4×4行列演算用のデータ配列を、2×2行列演算用のデータ配列に変換する処理を説明するための図である。
以上説明した第3実施例の行列演算装置3は、2×2行列演算に適したデータ配列と4×4行列演算に適したデータ配列を相互に変換する機能を有するため、行列演算を効率的に行うことができる。
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
例えば、上記各実施例では、行列演算装置が、2×2行列演算に適したデータ配列と4×4行列演算に適したデータ配列を相互に変換する機能を有するものとしたが、任意の異なるサイズの行列演算に適したデータ配列を相互に変換する機能を有するものとしてよい。
以上の説明に関し、さらに以下の項を開示する。
(付記1)
メモリに格納されたデータに対して第1のサイズの行列演算を行う機能と、前記メモリに格納されたデータに対して前記第1のサイズを拡大した第2のサイズの行列演算を行う機能と、を有する行列演算部と、
前記第1のサイズの行列演算に適したデータ配列と、前記第2のサイズの行列演算に適したデータ配列とを、前記メモリ上で少なくとも一方向に変換可能なデータ配列変換部と、
を有する行列演算装置。
(付記2)
前記第2のサイズの行列演算に適したデータ配列は、前記第1のサイズの行列を構成する行列要素が、前記第1のサイズの行列の形態を維持したデータ配列である、
付記1記載の行列演算装置。
(付記3)
前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
前記データ配列変換部は、前記メモリに格納された複数組のデータ配列から一連のデータを順に読み出してデータ格納部に格納することにより行列状のデータを前記データ格納部上に生成し、該行列状のデータの行方向と列方向を入れ替えて読み出したデータを前記メモリに書き込むことにより、前記第1のサイズの行列演算に適したデータ配列を、前記第2のサイズの行列演算に適したデータ配列に変換する、
付記1又は2記載の行列演算装置。
(付記4)
前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
前記データ配列変換部は、前記第2のサイズの行列演算に適したデータ配列に含まれる一連のデータを複数個読み出してデータ格納部に格納することにより行列状のデータを前記データ格納部上に生成し、該行列状のデータの行方向と列方向を入れ替えて読み出したデータを、前記メモリにおける複数のデータ配列が格納される領域に分配して書き込むことにより、前記第2のサイズの行列演算に適したデータ配列を、前記第1のサイズの行列演算に適したデータ配列に変換する、
付記1又は2記載の行列演算装置。
(付記5)
前記メモリは、並行してアクセス可能な複数のデータ領域を有し、
前記データ配列変換部は、前記データ格納部を複数個備え、該複数個のデータ格納部を、前記メモリから前記第2のサイズの行列に相当するデータが格納される度に切り替えて使用する、
付記3又は4記載の行列演算装置。
(付記6)
前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
前記データ配列変換部は、
前記複数のデータ配列に対応した複数のロードストアユニットと、
前記ロードストアユニットにより前記複数組のデータ配列から読み出される一連のデータの一部を取り出して出力する複数のデータ抽出部と、
該複数のデータ抽出部がそれぞれ出力したデータが結合されて前記第2のサイズの行列演算に適したデータ配列として格納されるデータ格納部と、
を備えることにより、前記第1のサイズの行列演算に適したデータ配列を、前記第2のサイズの行列演算に適したデータ配列に変換する、
付記1又は2記載の行列演算装置。
(付記7)
前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
前記データ配列変換部は、
前記複数のデータ配列に対応した複数の第1のロードストアユニットと、
前記複数の第1のロードストアユニットに対応した複数の第1のデータ格納部と、
前記第2のサイズの行列演算に適したデータ配列に対応した第2のロードストアユニットと、
前記第2のロードストアユニットにより読み出された一連のデータのうち各データ配列に対応した一部のデータが入力されると、前記データ配列を構成するデータの単位毎に前記複数の第1のデータ格納部に書き込むデータ分配部と、
を備えることにより、前記第2のサイズの行列演算に適したデータ配列を、前記第1のサイズの行列演算に適したデータ配列に変換する、
付記1又は2記載の行列演算装置。
1、2、3 行列演算装置
10 制御回路
20 ロードストアユニット
30、31、32 FIFO
40 演算データパス
50 ソートレジスタ
134 データメモリ
135 CPU

Claims (7)

  1. メモリに格納されたデータに対して第1のサイズの行列演算を行う機能と、前記メモリに格納されたデータに対して前記第1のサイズを拡大した第2のサイズの行列演算を行う機能と、を有する行列演算部と、
    前記第1のサイズの行列演算に適したデータ配列と、前記第2のサイズの行列演算に適したデータ配列とを、前記メモリ上で少なくとも一方向に変換可能なデータ配列変換部と、
    を有する行列演算装置。
  2. 前記第2のサイズの行列演算に適したデータ配列は、前記第1のサイズの行列を構成する行列要素が、前記第1のサイズの行列の形態を維持したデータ配列である、
    請求項1記載の行列演算装置。
  3. 前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
    前記データ配列変換部は、前記メモリに格納された複数組のデータ配列から一連のデータを順に読み出してデータ格納部に格納することにより行列状のデータを前記データ格納部上に生成し、該行列状のデータの行方向と列方向を入れ替えて読み出したデータを前記メモリに書き込むことにより、前記第1のサイズの行列演算に適したデータ配列を、前記第2のサイズの行列演算に適したデータ配列に変換する、
    請求項1又は2記載の行列演算装置。
  4. 前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
    前記データ配列変換部は、前記第2のサイズの行列演算に適したデータ配列に含まれる一連のデータを複数個読み出してデータ格納部に格納することにより行列状のデータを前記データ格納部上に生成し、該行列状のデータの行方向と列方向を入れ替えて読み出したデータを、前記メモリにおける複数のデータ配列が格納される領域に分配して書き込むことにより、前記第2のサイズの行列演算に適したデータ配列を、前記第1のサイズの行列演算に適したデータ配列に変換する、
    請求項1又は2記載の行列演算装置。
  5. 前記メモリは、並行してアクセス可能な複数のデータ領域を有し、
    前記データ配列変換部は、前記データ格納部を複数個備え、該複数個のデータ格納部を、前記メモリから前記第2のサイズの行列に相当するデータが格納される度に切り替えて使用する、
    請求項3又は4記載の行列演算装置。
  6. 前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
    前記データ配列変換部は、
    前記複数のデータ配列に対応した複数のデータ入出力部と、
    前記複数のデータ入出力部により前記複数組のデータ配列から読み出される一連のデータの一部を取り出して出力する複数のデータ抽出部と、
    該複数のデータ抽出部がそれぞれ出力したデータが結合されて前記第2のサイズの行列演算に適したデータ配列として格納されるデータ格納部と、
    を備えることにより、前記第1のサイズの行列演算に適したデータ配列を、前記第2のサイズの行列演算に適したデータ配列に変換する、
    請求項1又は2記載の行列演算装置。
  7. 前記メモリに格納された、前記第1のサイズの行列演算に適したデータ配列は、ストリーム型処理において連続して処理されるデータ配列が複数組、並列に格納されたデータ配列であり、
    前記データ配列変換部は、
    前記複数のデータ配列に対応した複数の第1のデータ入出力部と、
    前記複数の第1のデータ入出力部に対応した複数の第1のデータ格納部と、
    前記第2のサイズの行列演算に適したデータ配列に対応した第2のデータ入出力部と、
    前記第2のデータ入出力部により読み出された一連のデータのうち各データ配列に対応した一部のデータが入力されると、前記データ配列を構成するデータの単位毎に前記複数の第1のデータ格納部に書き込むデータ分配部と、
    を備えることにより、前記第2のサイズの行列演算に適したデータ配列を、前記第1のサイズの行列演算に適したデータ配列に変換する、
    請求項1又は2記載の行列演算装置。
JP2012072237A 2012-03-27 2012-03-27 行列演算装置 Expired - Fee Related JP5840994B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012072237A JP5840994B2 (ja) 2012-03-27 2012-03-27 行列演算装置
US13/778,843 US9069716B2 (en) 2012-03-27 2013-02-27 Matrix calculation unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012072237A JP5840994B2 (ja) 2012-03-27 2012-03-27 行列演算装置

Publications (2)

Publication Number Publication Date
JP2013205973A true JP2013205973A (ja) 2013-10-07
JP5840994B2 JP5840994B2 (ja) 2016-01-06

Family

ID=49236508

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012072237A Expired - Fee Related JP5840994B2 (ja) 2012-03-27 2012-03-27 行列演算装置

Country Status (2)

Country Link
US (1) US9069716B2 (ja)
JP (1) JP5840994B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469152B2 (en) 2016-01-29 2019-11-05 Nec Corporation Information processing apparatus, information processing method and a computer program
KR20210116356A (ko) * 2020-03-13 2021-09-27 성재모 매트릭스 연산 방법 및 그 장치

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6225687B2 (ja) * 2013-02-18 2017-11-08 富士通株式会社 データ処理装置、およびデータ処理方法
CN111857820B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
CN106445471B (zh) * 2016-10-13 2018-06-01 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
US10817587B2 (en) 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10810281B2 (en) 2017-02-24 2020-10-20 Texas Instruments Incorporated Outer product multipler system and method
US10735023B2 (en) 2017-02-24 2020-08-04 Texas Instruments Incorporated Matrix compression accelerator system and method
US11086967B2 (en) 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
US11567765B2 (en) 2017-03-20 2023-01-31 Intel Corporation Systems, methods, and apparatuses for tile load
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit
CN108875957B (zh) * 2017-05-11 2019-07-12 北京异构智能科技有限公司 原生张量处理器及使用原生张量处理器的系统
JP6907700B2 (ja) * 2017-05-23 2021-07-21 富士通株式会社 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム
US11275588B2 (en) 2017-07-01 2022-03-15 Intel Corporation Context save with variable save state size
US11657119B2 (en) * 2018-12-10 2023-05-23 Advanced Micro Devices, Inc. Hardware accelerated convolution
US11520854B2 (en) * 2019-10-29 2022-12-06 Meta Platforms, Inc. Support for different matrix multiplications by selecting adder tree intermediate results

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271737A (ja) * 1994-03-30 1995-10-20 Fujitsu Ltd 配列演算処理方式
JP2002328915A (ja) * 2001-02-05 2002-11-15 Samsung Electronics Co Ltd 時分割方式の行列演算器
JP2005216124A (ja) * 2004-01-30 2005-08-11 Mitsubishi Electric Corp 行列演算装置
JP2007013455A (ja) * 2005-06-29 2007-01-18 Sony Corp チャンネル行列演算装置,チャンネル行列演算方法,およびコンピュータプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207868A (ja) 1997-01-21 1998-08-07 Sharp Corp 2次元配列転置回路
US7031994B2 (en) * 2001-08-13 2006-04-18 Sun Microsystems, Inc. Matrix transposition in a computer system
US7836118B1 (en) * 2006-06-16 2010-11-16 Nvidia Corporation Hardware/software-based mapping of CTAs to matrix tiles for efficient matrix multiplication

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271737A (ja) * 1994-03-30 1995-10-20 Fujitsu Ltd 配列演算処理方式
JP2002328915A (ja) * 2001-02-05 2002-11-15 Samsung Electronics Co Ltd 時分割方式の行列演算器
JP2005216124A (ja) * 2004-01-30 2005-08-11 Mitsubishi Electric Corp 行列演算装置
JP2007013455A (ja) * 2005-06-29 2007-01-18 Sony Corp チャンネル行列演算装置,チャンネル行列演算方法,およびコンピュータプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469152B2 (en) 2016-01-29 2019-11-05 Nec Corporation Information processing apparatus, information processing method and a computer program
KR20210116356A (ko) * 2020-03-13 2021-09-27 성재모 매트릭스 연산 방법 및 그 장치
KR102512704B1 (ko) * 2020-03-13 2023-03-21 성재모 매트릭스 연산 방법 및 그 장치

Also Published As

Publication number Publication date
JP5840994B2 (ja) 2016-01-06
US9069716B2 (en) 2015-06-30
US20130262548A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
JP5840994B2 (ja) 行列演算装置
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
CN105335331B (zh) 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统
CN110780921A (zh) 数据处理方法和装置、存储介质及电子装置
KR102341523B1 (ko) 동시 멀티 비트 가산기
CN110673786B (zh) 数据缓存的方法和装置
JPWO2012108411A1 (ja) 符号化/復号化処理プロセッサ、および無線通信装置
JP2018022339A (ja) 演算処理装置及び演算処理装置の制御方法
US9442893B2 (en) Product-sum operation circuit and product-sum operation system
CN107957975B (zh) 一种计算方法及相关产品
JP5601327B2 (ja) データ並べ替え回路、可変遅延回路、高速フーリエ変換回路、およびデータ並べ替え方法
CN112446007A (zh) 一种矩阵运算方法、运算装置以及处理器
CN112929300B (zh) 一种数据处理装置、方法、基站和存储介质
JP7435602B2 (ja) 演算装置および演算システム
JP2024028901A (ja) ハードウェアにおけるスパース行列乗算
JP2013512479A (ja) Simdモードで動作するプロセッシング・エレメントの内部メモリに分散記憶された正方マトリックス及びその転置マトリックスに、時間と面積の効率良いアクセスを可能とする装置及び方法
CN113240074B (zh) 一种可重构神经网络处理器
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
US9871554B2 (en) Method and vector computing unit for implementing de-scrambling and de-spreading, and computer storage medium
CN109558567B (zh) 自共轭矩阵的上三角部分存储装置和并行读取方法
JP2022074442A (ja) 演算装置および演算方法
CN110766150A (zh) 一种深度卷积神经网络硬件加速器中的区域并行数据载入装置及方法
CN112927124A (zh) 一种数据处理方法、装置、设备及存储介质
WO2020059156A1 (en) Data processing system, method, and program
US12009948B2 (en) Data processing apparatus and method, base station, and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141201

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20150501

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150501

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151022

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151112

R150 Certificate of patent or registration of utility model

Ref document number: 5840994

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees