JP4156538B2 - 行列演算装置 - Google Patents

行列演算装置 Download PDF

Info

Publication number
JP4156538B2
JP4156538B2 JP2004023896A JP2004023896A JP4156538B2 JP 4156538 B2 JP4156538 B2 JP 4156538B2 JP 2004023896 A JP2004023896 A JP 2004023896A JP 2004023896 A JP2004023896 A JP 2004023896A JP 4156538 B2 JP4156538 B2 JP 4156538B2
Authority
JP
Japan
Prior art keywords
matrix
accumulator
output
value
external input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004023896A
Other languages
English (en)
Other versions
JP2005216124A (ja
Inventor
みどり 小野
英徳 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2004023896A priority Critical patent/JP4156538B2/ja
Publication of JP2005216124A publication Critical patent/JP2005216124A/ja
Application granted granted Critical
Publication of JP4156538B2 publication Critical patent/JP4156538B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

この発明は、行列演算装置に関するものである。
画像処理装置における画像圧縮処理アルゴリズムとして近年多く用いられているものに、例えばDCT(Discrete Cosine Transform;離散コサイン変換)がある。DCT変換では、画素データ行列に対し2回の行列乗算を行う。
従来の、行列演算を行う画像処理装置の例として、例えば、特許文献1に開示されたブロック画像データ演算装置がある。この装置は、1つの画面を表すディジタル画像データを蓄積し、画面の水平および垂直方向のデータを読み出すことが可能な画像データ記憶手段と、読み出した1列分のデータを蓄積することが可能な画像データ保持手段と、ブロック画像データの2次元行列演算を行うために用いられる係数を格納する係数記憶手段と、画像データ保持手段に蓄積されている画像データと係数記憶手段に保持されている係数との乗算を行う乗算手段と、乗算手段による乗算結果を加算する加算手段を有し、画像データ記憶手段から画像データを水平方向に読み出して乗算手段により乗算を行った後に加算手段により加算を行う動作と、画像データ記憶手段から画像データを垂直方向に読み出して乗算手段により乗算を行った後に加算手段により加算を行う動作を行うことにより、ブロック画像データの2次元行列演算を行うものである。
また、特許文献2に開示された従来の行列乗算装置は、記憶装置に格納されている第1および第2の二つの行列の乗算を行ない、この乗算結果を、記憶装置に書き込む行列乗算装置であり、記憶装置から読み出した第1の行列の一つの要素毎に、この要素に対応する第2の行列の全ての乗算要素を、記憶装置から順次に読み出してそれぞれの掛け算を行ない、第1の行列の同列の各要素に対応する掛け算結果を累積加算する行列演算回路を設け、この行列演算回路の加算結果を、記憶装置に書き込むことにより、行列の乗算処理における処理装置と記憶装置間のデータ転送回数を削減し、行列乗算の高速化を図っている。
特開平2−100576号公報 特開平5−324700号公報
従来の行列演算装置は以上のように構成されているので、2回の行列演算を行う場合には1回目の乗算結果を一旦メモリ等の記憶装置に記憶し、2回目の乗算を行う際に記憶装置から1回目の乗算結果を取り出して乗算していた。このため、記憶装置への記憶、データ読み出しに時間を要し、行列演算の処理時間が長くなってしまうという問題があった。
この発明は上記のような課題を解決するためになされたもので、記憶装置へのアクセス回数を削減することにより、行列演算装置の処理を高速化することを目的とする。
この発明に係る行列演算装置は、第1の行列の各要素データの供給を受ける第1の外部入力端と、第2の行列の各要素データの供給を受ける第2の外部入力端と、出力端とを有する複数の演算器と、複数の演算器の出力値を加算して出力する加算器を備え、
各々の演算器は、2つの入力端と1つの入力端を有するセレクタと、セレクタの出力値と、第2の外部入力端から供給される第2の行列の各要素データの乗算を行う乗算器と、乗算器の出力値の入力を受けてそれらを累算する累算器を備え、セレクタは、第1の外部入力端から供給される第1の行列の各要素データおよび累算器の累算結果を入力とし、セレクタが第1の外部入力端からの入力を選択して出力する間、累算器は乗算器の出力値を累算し、セレクタが累算器の累算結果を選択して出力する間、累算器は累算処理を停止し、加算器は、セレクタが累算器の累算結果を選択して出力する間に各々の演算器の出力端から供給される乗算器の出力値の入力を受け、それらを加算して出力するものである。
この発明によれば、2回の行列演算を行う場合に、1回目の演算結果を記憶装置に一旦保持することなく演算結果が得られるので、行列演算を高速化することができる。
以下、この発明の実施の様々な形態を説明する。
実施の形態1.
図1は、この発明の実施の形態1による、画像処理装置のDCT演算ユニット(行列演算装置)100の構成を示すブロック図である。図に示すように、DCT演算ユニット100は、8個の演算器50、および8入力加算器60を備えている。各々の演算器50は、それぞれセレクタ10、乗算器20、累算器30を備えている。各々の演算器50は、外部入力(第1の外部入力端)11と外部入力(第2の外部入力端)12を有している。
セレクタ10の入力端には、累算器30の出力と外部入力11が接続されている。
乗算器20の入力端には、セレクタ10の出力と外部入力12が接続されている。
累算器30の入力端には、乗算器20の出力が接続されている。
また、8入力加算器60の8つの入力端には、8個の演算器50の乗算器20の出力が接続されている。
各々の外部入力11および外部入力12は実数値であり、乗算器20、累算器30、および8入力加算器60は実数の演算に対応している。
次に、動作について説明する。
まず、DCT演算ユニット100が行うDCT変換処理について説明する。
DCT変換を行列式で表すと、C×X×Cとなる。ここで、Cは8行8列の変換行列、Xは8行8列の画素値行列、Cは、行列Cの転置行列である。図2は、行列Cのm行n列(m、n=1,2,3,・・・,8)の要素の値をcmn、行列Xのm行n列の要素の値をxmnと表した場合のDCT変換の行列式を示している。ここでcmnは実数値である。
DCT演算ユニット100は、図2に示す行列演算を行うことによりDCT変換を行う。
まず初期状態では、各々の演算器50のセレクタ10は、外部入力11を選択して出力する。
以下、図1中左端に位置する演算器50を例に取り説明する。演算器50の外部入力11にはx11が、外部入力12にはc11が入力される。乗算器20は、x11とc11を乗算し、乗算結果(x11*c11)を出力する。累算器30には、(x11*c11)が入力され、累算器30の出力値は(x11*c11)となる。
次に、外部入力11にx12、外部入力12にc12が供給され、乗算器20は乗算結果(x12*c12)を出力する。累算器30には、(x12*c12)が入力され、累算器30の出力値は(x11*c11+x12*c12)となる。
同様に、外部入力11および外部入力12に、x13とc13、x14とc14、・・・、x18とc18が順に入力され、乗算器20は乗算結果(x13*c13)、(x14*c14)、・・・、(x18*c18)を出力する。累算器30の出力値は、(x11*c11+x12*c12+x13*c13)、(x11*c11+x12*c12+x13*c13+x14*c14)、・・・と累算され、(x18*c18)が入力された段階で(x11*c11+x12*c12+x13*c13+・・・+x18*c18)となる。この演算結果は、図2上で枠線Aで囲った部分の各要素同士の演算結果、すなわち、行列X×C(以下、Z=X×Cとする。)の1行1列の値となる。
他の演算器50でも同様の演算を行う。図1中、左からk番目(k=1,2,3,・・・,8)の演算器50の外部入力11にはxk1,xk2,・・・,xk8が順に入力され、外部入力12には、全てc11,c12,・・・,c18が順に入力される。
この結果、左からk番目の演算器50の累算器30の出力値は、行列Zのk行1列目の値となる。
次に、全ての演算器50の累算器30の累算処理を停止し、セレクタ10は累算器30の出力を選択して出力する。
この状態で、図1中、左からk番目の演算器50の外部入力12に、c11,c12,c13,・・・,c18が入力される。これは図2に示す行列Cの1行目(図2上の枠線Bで囲った部分)の各要素に相当する。
各々の演算器50の乗算器20は、累算器30の出力値と外部入力12との乗算結果を出力する。すなわち、左からk番目の演算器50の乗算器20からは、行列Cの1行k列の値と行列Zのk行1列の値の積が出力される。
図3は、行列Zのm行n列(m、n=1,2,3,・・・,8)の要素の値をzmnと表した場合の行列式C×Zを示したものであり、各々の演算器50の乗算器20からは、図中枠線Dで囲った部分の要素同士の乗算結果が出力される。
8入力加算器60には、各々の演算器50の乗算器20の乗算結果が入力され、それらが加算される。演算結果は、C×X×Cの1行1列目の値が出力される。
次に、全ての演算器50の累算器30の累算処理を停止して、セレクタ10が累算器30の出力を選択して出力するようにしたままの状態で、左からk番目の演算器50の外部入力12にc21,c22,c23,・・・,c28(行列Cの2行目)が入力される。
この結果各演算器50の乗算器20からは、(c2k*zk1)の値が出力される。その結果、8入力加算器60からは、C×X×Cの2行1列目の値が出力される。
以下、外部入力12の値を行列Cの3行目〜8行目まで変化させて同様の演算を8回繰り返すと、C×X×Cの1列目の値が得られる。
次に、全ての累算器30に保持されたデータを0にクリアして累算処理を再開させる。
セレクタ10は、外部入力11を出力する様に設定され、左からk番目の演算器50の外部入力10にはxk1,xk2,・・・,xk8が順に入力され、外部入力12には、全てc21,c22,・・・,c28が順に入力される。
この結果、左からk番目の演算器50の累算器30の出力値は、行列Zの、k行2列目の演算結果が並んでいる状態となる。
次に、全ての演算器50の累算器30の累算処理を停止し、セレクタ10は累算器30の出力を選択して出力する。
この状態で、左からk番目の演算器50の外部入力12に、c11,c12,c13,・・・,c18が入力される。これは行列Cの1行目の各要素に相当する。
各々の演算器50の乗算器20は、累算器30の出力値と外部入力12との乗算結果を出力する。すなわち、左からk番目の演算器50の乗算器20からは、行列Cの1行k列目の値と行列Zのk行2列目の値の積が出力される。
8入力加算器60には、各々の演算器50の乗算器20の乗算結果が入力され、それらが加算される。演算結果は、C×X×Cの1行2列目の値が出力される。
次に、全ての演算器50の累算器30の累算処理を停止して、セレクタ10が累算器30の出力を選択して出力するようにしたままの状態で、左からk番目の演算器50の外部入力12にc21,c22,c23,・・・,c28(行列Cの2行目)が入力される。
この結果各演算器50の乗算器20からは、(c2k*zk2)の値が出力される。その結果、8入力加算器60からは、C×X×Cの2行2列目の値が出力される。
以下、外部入力12の値を行列Cの3行目〜8行目まで変化させて同様の演算を8回繰り返すと、C×X×Cの2列目の8個の値が得られる。
次に、再び全ての累算器30に保持されたデータを0にクリアして累算処理を再開させ、左からk番目の演算器50の外部入力11にはxk1,xk2,・・・,xk8が順に入力され、外部入力12には、全てc31,c32,・・・,c38が順に入力され、上記と同様の動作を繰り返すことにより、C×X×Cの8列目の8個の値が得られる。
上述の演算を8回繰り返すことにより、C×X×Cの8列目までの値が得られ、C×X×Cの演算が終了する。
以上のように、実施の形態1によれば、行列の大きさに対応した数の演算器50を備え、各演算器50において、セレクタ10が初めに外部入力11の値を出力して乗算器20で変換行列の要素との乗算を行い、累算器30に1回目の行列演算の結果を保持する。次に、セレクタ10が累算器30からの値を出力して乗算器20で変換行列との2回目の乗算を行う。この結果、各演算器50から8入力加算器60に2回目の行列演算の途中結果が供給され、8入力加算器60がそれらの加算結果を出力することにより、2回目の行列演算結果の各要素が得られる。
このように、行列演算の中間結果をメモリ等の記憶装置へ保持しないため、演算途中で記憶装置へのアクセスが発生せず、演算処理の時間を短縮することができる。
なお、実施の形態1では、8行8列の行列演算を行うことを想定して、演算器50を8個備えるようにしたが、行列のサイズに合わせて演算器の個数を変えることにより、どのような大きさの行列演算にも対応することができる。
実施の形態2.
実施の形態1では、外部入力11および外部入力12は実数値であり、乗算器20、累算器30、および8入力加算器60は実数の演算に対応している。しかし、実数演算は演算量が大きくなるため、実施の形態2は、整数演算によりDCT変換を行う。
図4は、実施の形態2による、画像処理装置のDCT演算ユニット200の構成を示すブロック図である。図1と同一の符号は同一の構成要素を表している。DCT演算ユニット200は、DCT演算ユニット100と同様に8個の演算器250を備えている。個々の演算器250は、シフト器40を備えており、シフト器40の入力端には累算器230の出力が接続されている。また、実施の形態2では、セレクタ10の入力端には、シフト器40の出力と外部入力211が接続されている。
また、DCT演算ユニット200はシフト器70を備えており、シフト器70の入力端には8入力加算器260の出力が接続されている。
各々の演算器250に含まれる乗算器220および累算器230と、8入力加算器260は、整数演算に対応している。また、各々の演算器250への外部入力211および外部入力212は、整数値である。
次に、実施の形態2によるDCT変換の動作について説明する。
実施の形態2による行列演算は、実施の形態1とほぼ同様の手順で行われるが、累算器230の出力はシフト器40に供給される。
実施の形態2では、外部入力211および外部入力212を整数値とするため、実施の形態1では小数点以下の値を持っていたcmnの値を、整数値となるよう、予めpビット分シフトアップしておく。
シフト器40は、累算器230から供給されたデータをqビット分シフトダウンし、小数点以下の値を四捨五入した値を出力する。
また、8入力加算器260の出力はシフト器70に供給される。シフト器70は、供給されたデータを(p*2−q)ビット分シフトダウンし、小数点以下の値を四捨五入した値を出力する。
以上のように、実施の形態2によれば、実施の形態1と同様に行列演算を行うので、行列演算の中間結果をメモリ等の記憶装置へ保持しないため、演算途中で記憶装置へのアクセスが発生せず、演算処理の時間を短縮することができる。
さらに、外部入力211および外部入力212の値を予めシフトアップして整数値とし、整数値演算に対応した乗算器220、累算器230、および8入力加算器260を用いて演算を行い、シフト器40およびシフト器70でシフトダウンおよび丸め処理行うようにしたので、演算量の少ない整数演算により行列演算を行うことができる。
この発明の実施の形態1による、画像処理装置のDCT演算ユニットの構成を示す図である。 DCT演算を説明する図である。 この発明の実施の形態1による、行列演算を説明する図である。 この発明の実施の形態2による、画像処理装置のDCT演算ユニットの構成を示す図である。
符号の説明
10 セレクタ、11,12,211,212 外部入力、20,220 乗算器、30,230 累算器、40,70 シフト器、50,250 演算器、60,260 8入力加算器、100,200 DCT演算ユニット(行列演算装置)。

Claims (3)

  1. 第1の行列の各要素データの供給を受ける第1の外部入力端と、第2の行列の各要素データの供給を受ける第2の外部入力端と、出力端とを有する複数の演算器と、
    上記複数の演算器の出力値を加算して出力する加算器を備え、
    各々の上記演算器は、
    2つの入力端と1つの入力端を有するセレクタと、
    上記セレクタの出力値と、上記第2の外部入力端から供給される第2の行列の各要素データの乗算を行う乗算器と、
    上記乗算器の出力値の入力を受けてそれらを累算する累算器を備え、
    上記セレクタは、上記第1の外部入力端から供給される第1の行列の各要素データおよび上記累算器の累算結果を入力とし、
    上記セレクタが上記第1の外部入力端からの入力を選択して出力する間、上記累算器は上記乗算器の出力値を累算し、
    上記セレクタが上記累算器の累算結果を選択して出力する間、上記累算器は累算処理を停止し、
    上記加算器は、上記セレクタが上記累算器の累算結果を選択して出力する間に各々の演算器の出力端から供給される上記乗算器の出力値の入力を受け、それらを加算して出力することを特徴とする行列演算装置。
  2. 各々の演算器の外部入力端から供給するデータの桁をシフトさせることにより整数値とし、
    上記各々の演算器は、累算器の出力を入力とする第1のシフト器と、
    加算器の出力を入力とする第2のシフト器を備え、
    各々の演算器の乗算器、累算器、および加算器は、整数演算を行い、
    上記第1のシフト器は、上記累算器の出力値をシフトして桁を戻すと共に小数点以下の値を四捨五入してセレクタに供給し、
    上記第2のシフト器は、上記加算器の出力値をシフトして桁を戻すと共に小数点以下の値を四捨五入して出力することを特徴とする請求項1記載の行列演算装置。
  3. 第1の行列は画素値行列であり、
    第2の行列は、上記第1の行列で表される画像データを圧縮するための変換行列であることを特徴とする請求項1または請求項2記載の行列演算装置。
JP2004023896A 2004-01-30 2004-01-30 行列演算装置 Expired - Fee Related JP4156538B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004023896A JP4156538B2 (ja) 2004-01-30 2004-01-30 行列演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004023896A JP4156538B2 (ja) 2004-01-30 2004-01-30 行列演算装置

Publications (2)

Publication Number Publication Date
JP2005216124A JP2005216124A (ja) 2005-08-11
JP4156538B2 true JP4156538B2 (ja) 2008-09-24

Family

ID=34906764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004023896A Expired - Fee Related JP4156538B2 (ja) 2004-01-30 2004-01-30 行列演算装置

Country Status (1)

Country Link
JP (1) JP4156538B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5157484B2 (ja) * 2008-01-30 2013-03-06 ヤマハ株式会社 行列演算コプロセッサ
JP5840994B2 (ja) * 2012-03-27 2016-01-06 富士通株式会社 行列演算装置
CN106708467B (zh) * 2016-12-09 2019-02-01 深圳市紫光同创电子有限公司 一种宽位累加器电路及其设计方法、可编程逻辑器件

Also Published As

Publication number Publication date
JP2005216124A (ja) 2005-08-11

Similar Documents

Publication Publication Date Title
US7669014B2 (en) Transpose memory and method thereof
JP2005044098A (ja) 画像処理装置及び画像処理方法
US5268853A (en) Orthogonal transformation processor for compressing information
JPH03180965A (ja) 単一のマルチプライヤ/アキュムレータと単一のランダムアクセスメモリを用いてdct/idct演算を繰り返す集積回路装置
JP2004007337A5 (ja)
JP3278756B2 (ja) 画像処理方法及び装置
CN108073549B (zh) 卷积运算装置及方法
CN112991142B (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
KR100693654B1 (ko) 행렬과 벡터의 내적 벡터 산출 장치 및 방법
CN111967582B (zh) 一种cnn卷积层运算方法及cnn卷积层运算加速器
US5867414A (en) Compact pipelined matrix multiplier utilizing encoding and shifting circuit configurations
JP4156538B2 (ja) 行列演算装置
CN111222090B (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
CN116888591A (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
US20120050820A1 (en) Image processing apparatus, control method of the same, and program
JP2008523489A (ja) 画像サイズを変更する方法および装置
US5359549A (en) Orthogonal transformation processor for compressing information
CN114758209A (zh) 卷积结果获取方法、装置、计算机设备及存储介质
US5671169A (en) Apparatus for two-dimensional inverse discrete cosine transform
JP5738639B2 (ja) データ処理装置およびデータ処理方法
US8666172B2 (en) Providing multiple symmetrical filters
JP4920559B2 (ja) データ処理装置
JP2006094225A (ja) 画像処理装置、画像処理方法、およびそのプログラム
CN112765542A (zh) 运算装置
JP4266512B2 (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061215

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080523

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080709

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees