JP3895031B2 - Matrix vector multiplier - Google Patents
Matrix vector multiplier Download PDFInfo
- Publication number
- JP3895031B2 JP3895031B2 JP02539698A JP2539698A JP3895031B2 JP 3895031 B2 JP3895031 B2 JP 3895031B2 JP 02539698 A JP02539698 A JP 02539698A JP 2539698 A JP2539698 A JP 2539698A JP 3895031 B2 JP3895031 B2 JP 3895031B2
- Authority
- JP
- Japan
- Prior art keywords
- control signal
- data
- matrix
- addition
- bit
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、行列ベクトル乗算器に係り、特に行列(マトリックス)とベクトルの演算処理を高速かつ低消費電力で行なうことができる行列ベクトル乗算器に関するものである。
【0002】
【従来の技術】
画像データ圧縮のための基礎的な要素アルゴリズムとして広く用いられているものに、離散コサイン変換(以下、DCT― Discrete Cosine Transform―と略記する。)方法およびその逆変換(以下、IDCT―Inverse Discrete Cosine Transform ―と略記する。)方法を用いた帯域圧縮技術がある。上記のDCTやIDCTはいずれも直交変換の一種であるが、実際の演算においては定数係数のマトリックスとベクトルの乗算であり、画素値のベクトルxn 、DCT係数のベクトルXk に対し下式で定義される:
【0003】
【数1】
動画像圧縮の国際標準規格であるMPEG(Moving Picture Experts Group)1、MPEG2等においては水平方向・垂直方向に各々8画素ずつの64画素からなる正方形型の領域(ブロック)を単位としたN=8の2次元DCTおよびIDCTが用いられている。
【0004】
動画像圧縮装置は一般に演算量が非常に大きく、特に実時間処理が必要な利用形態(HDTV放送、TV電話、映像監視システム等)における動画像圧縮符号化・復号化はその処理系に対して要求される性能が非常に高くなっている。このため、上記離散コサイン変換および逆変換の計算も高速アルゴリズムと専用ハードウェアを用いて処理するのが一般的であり、積和演算の回数を大幅に削減できるチェン(Chen)の高速アルゴリズムや、乗算器を用いずに計算を実行できる分散演算(DA―Distributed Arithmetic―)法などの方式が広範に用いられており、これらを応用した専用ハードウェアの構成としては、例えば文献IEICE Trans. Electron., Vol. E75-C(1992), No.4 pp.390-397 等に開示されている。ここではDA法による離散コサイン変換の計算方法、およびハードウェアの構成方法を簡単に説明する。
【0005】
まず、上記式(1)のマトリックス−ベクトル乗算の第k行は次のような内積の形に表すことができる:
【0006】
【数2】
さらに、ハードウェアのデータパスのビット幅をMとする時、各Xn は2進数(2の補数表現)で:
【0007】
【数3】
と表されるので、上記式(2)は内積の線形性を用いると:
【0008】
【数4】
の形となる。ここで、部分和
【0009】
【数5】
は入力データ{xn }のiビット目{bn,i }の関数であるが、予めあらゆるビットパターン(2N 通り)について計算しメモリに格納しておけば、{bn,i }をNビットのアドレスとみなして読み出すことができる。また、2i-1 の乗算はi−1ビットの左シフトに対応していることに注意すると、結局上記式(4)はNビットアドレスのメモリ参照と左シフト、加算および減算の組み合わせにより求めることができることが分かる。
【0010】
DA法は上述の原理を応用したものであり、以下、N=8の場合の具体的な乗算器の構成とその手順の一例について図10ないし図12を参照しながら説明する。まず、図10を用いて従来の行列ベクトル乗算器の回路構成について説明する。図10において、従来の行列ベクトル演算回路は、各行毎に入力ポートを有し、第1の所定数であるn列と第2の所定数であるk行の縦横方向に0か1の情報が配列されたデータとしてのマトリックス1と、図11を用いて後述するようなテーブルを格納すると共にアドレス信号により前記マトリックス1のiビット目毎の行方向から読み出された情報により前記テーブルの対応する項目が読み出される読出し専用メモリ(以下、ROM―Read Only Memory―と略記する。)2と、このROM2より読出された値を累積加算する累積加算器5と、を備えている。
【0011】
累積加算器5は、ROM2に格納されたテーブルより読み出したビットスライスを所定量、例えば3ビットずつシフトさせるシフタ6と、このシフタ6の出力を順次に累積加算する2入力1出力の加算器7と、加算器7の出力を一時的に蓄積すると共に前記加算器7の他方の入力側にその出力を供給する出力レジスタ8と、を備えている。この従来の演算回路によれば、実質上はシフタ3と加算器4だけでマトリックス・ベクトル演算を行なっているために、簡単な構成で複雑な演算を処理することができ、汎用の演算器回路を適用できる長所がある。
【0012】
上記構成の従来の行列ベクトル乗算器の動作について説明する。まず、図11に示すように、全ての8ビットパターン{bn }(28 =256通り)についてマトリックスの各行k(k=0,…,7)に対応する部分和をあらかじめ必要な精度(例えば16ビット)で計算したテーブルを作成する。図11に示されるテーブルは、上述したように、図10に示すROM2に予め格納されている。このROM2は、8ビットのアドレスで16ビットの精度を有する場合、その容量は4キロバイトとなる。
【0013】
次に、8個の入力データ{xn ;n=0,…,7}の各々から2進表現の最下位ビット(以下、LSB― Least Significant Bit―と略記する。)を取り出して、この8ビット{bn,0 }をアドレス信号として前記ROM2から読出した部分和のデータを各行ごとに累積加算器5により積算する。続いて、下から2番目のビット{bn,1 }をアドレスとして部分和のデータをROM2から読み出した後、1ビット左シフトを行ない(これが2を乗算することに相当している)、累積加算器5により積算する。以下同様に、図11に示すように、下からi番目のビットについて部分和をi−1ビット左シフトして積算する動作{図12(a)(b)参照}を最上位ビット(以下、MSB―Most Significant Bit―と略記する。)の直前まで繰り返すことにより、上記式(4)の第2項が累積加算器に積算される。MSBについては符号ビットであるため、{bn,M-1 }のアドレスで部分和を読み出して、これを「M−1」ビットだけ左へシフトした後、符号を反転してから積算を行なうと上記式(4)の第1項が加算されて、式(4)の解が求められることになる。
【0014】
この方法を用いると、乗算専用のハードウェアを用意することなく図10に示すようにな簡単な汎用の演算回路により行列(マトリックス)とベクトルデータとの積を簡単に計算することができるため、ハードウェア量を節約して高速に処理をする目的には適している。
【0015】
【発明が解決しようとする課題】
しかしながら、上述した従来の行列ベクトル乗算器によれば、入力データの性質や内容の相関に関係なく、その演算量やハードウェアの稼働率は常に一定であるため、例えば「0」を連続的に演算する等のように、自明な計算や不必要な計算についても累積加算器5を動作させなければならず、演算効率が良好でないという問題があった。
【0016】
また、良く知られているように、DA法においてはどのような性質を持ったデータ列に対しても常に同じ動作を行なうことになり、上述の例のように不要な計算や自明な計算を繰り返すことに起因するスイッチング動作の機会が増加し、このため効率が悪いばかりでなく、消費電力の増加を招くという問題もあった。さらに、メモリへのアクセスが入力データの各桁をアドレスとしたランダムアクセスとなるので、メモリに高度な機能が要求されることになり、マトリックス1を読み込むROM2の構造が複雑になってしまうという問題点もあった。
【0017】
本発明の目的は、画像処理等に頻繁に現れる定数成分の行列(マトリックス)とベクトル変数の乗算を行なう演算回路を、汎用の乗算器を用いるのではなく、並列に動作する加算器およびシフタと、マトリックスの成分を保持する読み出し専用メモリとを用いて構成することにより、不必要な演算を省略して演算効率の改善を図ると共に消費電力の上昇を抑え、更にマトリックス回路の構造が簡単なもので済む行列ベクトル乗算器を提供することにある。
【0018】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る行列ベクトル乗算器は、第1の所定数より成る列成分と第2の所定数より成る行成分により構成される行列データを符号部分と絶対値部分とにより表現して順次蓄積する行列データ蓄積手段と、前記行列データ蓄積手段に蓄積された行列データの特定の列成分の列番号を指定するアドレス制御信号を出力すると共に前記行列データの前記符号部分を符号制御信号として出力する符号制御部と、前記アドレス制御信号に対応する前記行列データの前記絶対値部分を加算制御信号として出力する加算制御部と、を含む演算制御手段と、前記行列データの列成分に対応する係数データとその反対符号のデータとを予め符号部分と絶対値部分とにより表現して格納すると共に前記符号制御部より出力される前記アドレス制御信号および前記符号制御信号に基づいて対応する列成分のデータを順次出力する読出し専用記憶手段と、前記行列データの前記行成分ごとに設けられて前記読出し専用記憶手段より供給された前記列成分の符号に対応する前記係数データを一時的に蓄積すると共に前記符号制御信号および加算制御信号に基づいて前記アドレス制御信号の1周期ごとに前記係数データの前記絶対値部分を所定量ずつ所定方向に移動させる複数の入力蓄積部と、前記加算制御信号に応じて前記読出し専用記憶手段からのデータの加算・非加算を切り換える複数の加算部と、前記複数の加算部の各々の積算値を一時的に蓄積すると共にこの積算値を前記所定量ずつ前記所定方向に移動させる複数の出力蓄積部と、より各々が構成される複数の累積加算回路より成る累積加算手段と、を備えることを特徴としている。
【0019】
また、請求項2に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記累積加算手段の入力蓄積部が前記符号制御信号および加算制御信号に基づいて前記行列データの前記絶対値部分を1ビットずつ左へシフトさせるシフト機能を備えた入力レジスタにより構成され、前記出力蓄積部が前記符号制御信号および加算制御信号に基づいて前記加算部の積算値を1ビットずつ左にシフトさせて出力する出力レジスタにより構成されていることを特徴としている。
【0020】
また、請求項3に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記累積加算手段の入力蓄積部が前記符号制御信号および加算制御信号に基づいて前記行列データの前記絶対値部分を1ビットずつ右へシフトさせるシフト機能を備えた入力レジスタにより構成され、前記出力蓄積部が前記符号制御信号および加算制御信号に基づいて前記加算部の積算値を1ビットずつ右にシフトさせて出力する出力レジスタにより構成されていることを特徴としている。
【0021】
また、請求項4に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記累積加算手段の前記累積加算回路が前記行列データの列数である前記第1の所定数と同数設けられ、前記読出し専用記憶手段は前記行列データの前記第1の所定数と同数の行成分データを同時に出力し、前記累積加算回路が並列に動作して前記読出し専用記憶手段からの行成分のデータを積算することを特徴としている。
【0022】
また、請求項5に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記累積加算回路が、前記行列データ蓄積手段からの前記加算制御信号およびアドレス制御信号の組合せにより、内容を0に設定するリセットモード,現在の値を更新する通常モード,現在の値を保持するホールドモード,および入力を1ビットシフトして内部に設定するシフトモードのそれぞれのモードを切り換える機能を有する1対の前記入力蓄積部および出力蓄積部が一方の入力と出力とに接続され、さらに前記出力蓄積部の出力が分岐して他方の入力に接続されるように構成されていることを特徴としている。
【0023】
また、請求項6に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記演算制御手段の前記符号制御部が、クロック信号ごとにその内容を1つずつ積算するカウンタにより構成されていることを特徴としている。
【0024】
さらに、請求項7に係る行列ベクトル乗算器は、請求項6に記載の乗算器において、前記演算制御手段の符号制御部は、前記カウンタの前記クロック信号の下位側の複数のビットにより前記アドレス制御信号を発生させることを特徴としている。
【0025】
請求項8に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記累積加算手段は、前記行列データ蓄積手段の蓄積する行列データの特定位のビット列を前記加算制御信号として用いて、前記アドレス制御信号が1周期を経過するごとに前記加算制御信号として用いる前記ビット列の位置を1ビット右シフトすることを特徴としている。
【0026】
さらに、請求項9に係る行列ベクトル乗算器は、請求項8に記載の乗算器において、前記累積加算手段が、前記入力蓄積部の入力データビット幅分だけ左シフトした位置に、前記読出し専用記憶手段から読出されたデータの符号拡張を行なってから保持するように構成されていることを特徴としている。
【0027】
また、請求項10に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記演算制御手段の前記加算制御部が、前記行列データ蓄積手段の任意の桁からなるビット列を選択して、これを前記加算制御信号である選択信号として送出する機能を備えるセレクタより構成されていることを特徴としている。
【0028】
また、請求項11に係る行列ベクトル乗算器は、請求項10に記載の乗算器において、 前記演算制御手段の前記符号制御部は、クロック信号ごとにその内容を1つずつ積算するカウンタにより構成され、このカウンタの上位側の複数のビットを前記セレクタの選択信号として前記累積加算手段が用いることを特徴としている。
また、請求項12に係る行列ベクトル乗算器は、請求項1に記載の乗算器において、前記累積加算手段は、前記行列データ蓄積手段の蓄積する行列データの特定位のビット列を前記加算制御信号として用いて、前記アドレス制御信号が1周期を経過するごとに前記加算制御信号として用いる前記ビット列の位置を1ビット左シフトすることを特徴としている。
また、請求項13に係る行列ベクトル乗算器は、請求項12に記載の乗算器において、 前記累積加算手段は、前記行列データ蓄積手段の入力データビット幅分だけ右シフト位置に、前記読出し専用記憶手段から読出されたデータの符号拡張を行なってから保持するように構成されていることを特徴としている。
【0029】
したがって、本発明に係る行列ベクトル乗算器によれば、N成分からなる入力データの各成分を上位の桁よりビットごとに取り出して、得られたビット列(N bit)を制御信号として加算器の動作モードを順次切り替え、ROMから読み出された各ビットに対応する係数データを積算する。この際、制御ビットが1ならばレジスタに保持されたデータを加算し、0ならばレジスタをホールドするようにモードを切り替えることにより、不必要な加算動作をレジスタの更新によるスイッチングを減らすことができ、低消費電力動作が可能となる。N個の係数データを処理したら結果を1ビット左シフトし、入力データの次の桁について同様の操作を繰り返す。以下同様に全桁を処理するまで繰り返すことになる。
【0030】
上述の手順により、行列の乗算を正しく行なうために、累積加算手段の入力データに2の補数表現ではなく符号−絶対値表現を用いている。MPEG等の動き補償を用いた動画像圧縮処理においては、P−ピクチャ等の差分画像のデータは0の周辺に集中している確率が高いため、符号−絶対値表現を用いて表すと上位ビットの0の個数が多くなるため、0が連続的に現れるマトリックスにおいては動作モードをホールド状態にすることにより、スイッチングの回数を一層少なくすることができる。
【0031】
【発明の実施の形態】
以下、本発明に係る行列ベクトル乗算器の実施形態について図面を参照しながら詳細に説明する。まず、図1を参照して本発明の基本原理としての第1実施形態に係る行列ベクトル乗算器の構成について説明する。
【0032】
図1において、第1実施形態に係る行列ベクトル乗算器10は、第1の所定数であるn個より成る列成分と第2の所定数であるk個より成る行成分により構成される行列データを符号部分と絶対値部分とにより表現して順次蓄積する行列データ蓄積手段11と、前記行列データ蓄積手段に蓄積された行列データの特定の列成分の列番号を指定するアドレス制御信号を出力すると共に前記行列データの前記符号部分を符号制御信号として出力する符号制御部13と、前記アドレス制御信号に対応する前記行列データの前記絶対値部分を加算制御信号として出力する加算制御部14と、を含む演算制御手段12と、前記行列データの列成分に対応する係数データとその反対符号のデータとを予め符号部分と絶対値部分とにより表現して格納すると共に前記符号制御部13より出力される前記アドレス制御信号および前記符号制御信号に基づいて対応する列成分のデータを順次出力する読出し専用記憶手段(以下、ROM)15と、前記行列データの前記第1の所定数nと同数のn個設けられた複数の累積加算回路21aないし21nを有する累積加算手段20と、を備えている。
【0033】
上記累積加算手段20は並列接続された複数の累積加算回路21a〜21nを有しており、この複数の累積加算回路21a〜21nは、前記行列データの前記行成分ごとに設けられて前記ROM15より供給された前記列成分の符号に対応する前記係数データを一時的に蓄積すると共に前記符号制御信号および加算制御信号に基づいて前記アドレス制御信号の1周期ごとに前記係数データの前記絶対値部分を所定量ずつ所定方向に移動させる複数の入力蓄積部23a〜23nと、前記複数の入力蓄積部23a〜23nのそれぞれに入力される前記加算制御信号に応じて前記ROM15からのデータの加算・非加算を切り換える複数の加算部24a〜24nと、前記複数の加算部24a〜24nの各々の積算値を一時的に蓄積すると共にこの積算値を前記所定量ずつ前記所定方向に移動させる複数の出力蓄積部25a〜25nと、をそれぞれ備えている。
【0034】
なお、第1実施形態に係る行列ベクトル乗算器の動作については、以降に詳述する第2ないし第4実施形態の動作の説明により補完するものとしてその詳細説明を省略する。
【0035】
次に、本発明の第2実施形態に係る行列ベクトル乗算器について、図2ないし図6を参照しながら詳細に説明する。この第2実施形態に係る行列ベクトル乗算器は、上記第1実施形態に係る乗算器の構成を更に具体的なものにして説明するものである。
【0036】
第2実施形態に係る乗算器は、N個の入力データを符号−絶対値表現の形で格納するN個のMビットのレジスタと、そのレジスタ群のM−1桁目から取り出したNビットのうち1つを指定するN:1セレクタ、マトリックスの成分のデータを格納し列ごとに読み出すことのできるROM、N個が並列に動作してROMからのデータを積算する累積加算器、マトリックスの列番号を指定する信号を発生するカウンタとから構成される。以下、N=8、M=12の場合についてそのアルゴリズム、構成方法、機能および効果を説明する。ここで、上記第1実施形態に係る乗算器10の構成において、第1の所定数が「8」であり第2の所定数が「12」ということになる。
【0037】
まず、第2実施形態に係る乗算器のアルゴリズムについて説明する。入力データのxnはビット幅を12として符号−絶対値表現を用いると:
【0038】
【数6】
と表すことができるので、前記(2)の内積計算は線形性を用いると、
【0039】
【数7】
と書くことができる。「bi =0or1」なので、結局のところ式(6)はマトリックスの各行kについて「+ak,n 」または「−ak,n 」または「0」の加算とシフト演算との組み合わせにより求められる。
【0040】
具体的には、まずマトリックスの各成分のデータおよびその反対符号のデータを格納した読み出し用メモリを用意しておき、このメモリからn=0,…の順にxn の符号に応じて+ak,n または−ak,n を順次読み出す。8個の入力データxn は符号−絶対値表現で表しておき、この絶対値部分の最上位ビット(10桁目)を取り出したビット列{bn,10;n=0,…,7}について、bn,10=1の場合のみ対応する+ak,n (または−ak,n )を累積加算器で積算し、0の場合は演算しない。n=0,…,7について処理を終えた後、積算結果を1ビット左シフトし、絶対値部分の次のビット(9桁目)についても同様に+ak,n (または−ak,n )を累積加算器で積算する処理を繰り返す。以下、最下位ビットに至るまでこの処理を繰り返すことにより式(6)を求めることができる。
【0041】
以上のアルゴリズムにおいて、ak,n に付随する符号は各列nごとにxn の符号によって(kによらずに)決定されるので、あらかじめマトリックスの第n列の8個のデータを一組に、その反対符号のデータを一組にしてメモリに格納しておき、各列ごとにどちらかの符号をまとめて参照することによってk=0,…,7の計算を並列に行なうことが可能となる。
【0042】
次に、第2実施形態に係る乗算器の全体構成について、図2を参照しながら説明する。n列のM行(有意データはk行)の行列より成るデータとしてのマトリックス1と、このマトリックス1の各成分についての累積加算を制御する演算制御手段12と、乗算に必要なデータをテーブルとして格納し演算制御手段の制御信号により必要なデータを出力する読出し専用記憶手段としてのROM15と、ROM15と演算制御手段12からの制御信号に基づいて乗算を行なうと共に並列に設けられた複数(n個)の累積加算加算回路21aないし21nを備える累積加算手段20と、を備えている。上記演算制御手段12は符号制御部として機能するカウンタ13と、加算制御部として機能するセレクタ14と、を備えており、カウンタ13はアドレス指定手段11としても機能している。なお、in0〜in7は行列データ蓄積手段11の各列成分を蓄積する入力レジスタであり、Acc0〜Acc7は累積加算手段20を構成する個々の累積加算回路21a〜21nの演算対象としての行成分であり、この第2実施形態においては、最上位ビットから演算処理を開始する。
【0043】
上記構成を更に詳しく説明すると、まず、マトリックスを構成する「8×8」の各成分とその符号を反転したデータ(すなわち、2の補数で表現されたもの)との合計128個が、要求される精度に応じたビット幅により用意される。必要なビット幅は応用分野によって異なるが、例えばMPEG1やMPEG2等の場合であれば16ビット程度の精度が要求される。これらのデータは読み出し専用メモリに格納することもできるが、本発明の場合アドレス参照によるメモリへのランダムアクセスは発生しないので、組合せ回路を用いたシーケンサ等を用いてもよい。上記ROM15は、これら種々の機能構成を総称してこの用語を用いるものとする。
【0044】
このROM15は、図3に示すように、マトリックスの列番号(0〜7)を指定する信号と各列の符号を指定する信号S1(SIGN)によって対応する列の対応する符号のデータを8個(精度が16ビットであれば128ビット分)ずつ同時に出力するように構成されているものとする。ROM15の出力に含まれる各データは、マトリックスの各行ごとに設けられ、各々が並列に動作する8個の累積加算回路21aないし21nへ供給される。この累積加算回路21aないし21nの各々の回路は、本質的には図4に示すように2入力1出力の加算器24であり、各々の加算器24が、ROMデータD1が供給される1個の入力レジスタ23と、加算器24の出力ポートに接続されると共に積算用に設けられた1個の出力レジスタ25と、を備えると共に、加算器24の出力ポートからの信号線が出力レジスタ25に接続された後、2つに分岐してその一方が加算器24の他方の入力ポートに接続されたものである。
【0045】
加算器24の各レジスタ23,25は、図5に示すように、クロック信号に同期して入力値を内部に設定するノーマルモードと、入力値に関係なく直前の値を保持するホールドモードと、内容を0にリセットするリセットモードと、入力を1ビット左シフトして内部にセットするシフトモードとを有しており、符号制御信号としての信号S2(SHIFT)と加算制御信号としての信号S4(EXEC)との2種類の制御信号の組合せに応じてその動作モードが切り換えられている。
【0046】
加算器のビット幅はROMデータが16ビット、入力データが12ビット(M=12)、入力8成分(N=8)の場合、16+11+3ビット必要になるが、この第2実施形態においては後述の理由により更に1ビットを用意しておく。8個の入力データは通常は2の補数表現で与えられているが、これを符号−絶対値表現に変換して入力データレジスタに格納しておく。これは、例えば周知の方法であるが、入力データの最上位ビット(MSB;12桁目)が1の時に限り1〜11桁目をビット反転し、その結果に11ビット幅で1を加算して最上位ビットと再び連結すればよい。MSBが0の時は何も操作する必要はない。各データのMSBは符号信号S1(SIGN)としてROM15へ供給され、それぞれ対応する列の出力データの符号が決定される。
【0047】
また、入力データレジスタのうち絶対値部分(1〜11桁目)の最上位(11桁目)から取り出した8ビットのビット列(ビットスライス){bn ;n=0,…,7}を8:1セレクタで選択し、このセレクタの出力を各累積加算器の入力側および出力側レジスタのEXEC信号として用いて通常モード(EXEC=1)とホールドモード(EXEC=0)を切り換える。また入力データレジスタはシフターを備えており、SHIFT=1を受けると次のクロックに伴ってその絶対値部分が1ビット左シフトを行なう。
【0048】
カウンタ(7ビット幅)の下位3ビットの出力信号S3は0〜7の値をとり、ROM15の列番号を指定する信号S1と、セレクタの選択信号S4の両方に用いられる。すなわち、入力レジスタの符号ビットカウンタの値とによりROMの出力データが決まり、これに同期して累積加算器の動作モードも定まる。またカウンタの下位3ビットが000の時に限りSHIFT=1を累積加算器および入力データレジスタに送出する。またカウンタの上位4ビットは入力データの何桁目までが処理済みであるかを判定するのに用いられる。
【0049】
次に、図5を用いて、第2実施形態に係る乗算器における累積加算器の動作について説明する。演算処理に先立ってカウンタおよび累積加算器の入出力レジスタをリセットして、入力データは符号−絶対値表現に変換して予め入力レジスタに格納しておく。演算処理が開始されると、カウンタ値と符号に対応したROMデータが累積加算回路21a〜21nに順次供給され、またセレクタ14はカウンタ13の値に応じて、入力レジスタ23a〜23nの11ビット目b0 ,…,b7 をこの順でEXEC信号として加算器24a〜24nに送出する。例えば、カウンタ13の下位3ビットが000の時はマトリックスの第0列成分が、入力データの第0列成分の符号に対応して正または負符号で累積加算器の入力側レジスタに渡されることになる。このとき、もしもEXEC=1(入力データの第0列成分の絶対値の最上位ビットが1)であると累積加算回路21のレジスタ23はノーマルモードなので、次のクロックで累積加算回路21の入力レジスタ23にROM15からのデータが符号拡張してセットされ、出力ポートにはこの値と出力レジスタ25の内容を加算した値が現れる。このとき、EXEC=1であればこの値はその次のクロックで出力レジスタ25にセットされる。一方、EXEC=0であれば累積加算回路21のレジスタ23,25はどちらもホールド状態となり、ROM15からのデータが入力レジスタ23にセットされず、加算器24の出力ポートの値も出力レジスタ25にセットされないので、図6に示すように、加算器24は以前の状態を保ったままとなりスイッチング動作をしないことになる。
【0050】
上の動作を8回行なってカウンタの下位3ビットが111を示すとSHIFT=1が累積加算器に送られ、次のクロックに伴って出力ポートのデータが1ビット左シフトして(2を乗算することに相当)出力レジスタ25にセットされる。このとき、入力レジスタ23の絶対値部分も1ビット左シフトされて入力データの10桁目が入力レジスタ23の11桁目に入る。以降は上の手順を絶対値部分の全ての桁について(11回)繰り返せばよい。出力ポートがシフトされるごとに結果に2が乗算されるので、最終的に11桁目の部分和には211が、10桁目の部分和には210が乗じられ、以下同様に第i桁目の計算結果には2i が乗じられたものの総和が求められる。カウンタ13が「1010111」を示したその次のクロックで全ての桁に関する処理が終了しているので、累積加算器の出力レジスタから必要なビット幅のデータを取り出せば積和演算の結果が得られる。ここで、各部分和に対する2の乗数が一つ多くなっているので、これを考慮してあらかじめ出力レジスタのビット幅を予め1ビット分増やしておいて、計算結果を取り出す時に出力の最下位ビットを無視することで正しい結果を得ることができる。
【0051】
上述の構成により上述のように動作する第2実施形態に係る行列ベクトル乗算器の効果について説明する。まず、通常モードではクロックに伴って入力レジスタ23および出力レジスタ25の内容が更新されると、加算器24の内部におけるスイッチング動作により積算が行なわれるが、ホールドモードでは加算器24の2つの入力ポートはともにクロック以前の値に固定されているため、スイッチング動作が行なわれず、余分な電力消費が抑えられる。
【0052】
したがって、2進表現の入力データに含まれる0の個数が多いほど電力消費が少なくなるが、特に動き補償を用いた動画像圧縮符号化・復号化処理における差分画像データではデータ分布は0の周囲に集中しているため、符号−絶対値表現を用いた場合にその上位ビットが0である確率が高く、このような性質を持つデータ列に適用すると通常のDA法等に比較して消費電力を大幅に削減できる。また、マトリックスの成分を格納しているROMはランダムアクセスされることがなく、一定の順序でデータを順次送出するだけなので非常に構造が単純であるという効果もある。
【0053】
次に、本発明の第3実施形態に係る行列ベクトル乗算器について、図7および図8を用いて説明する。本発明の第3実施形態に係る乗算器は、本質的に第2実施形態と同様のアルゴリズムを用い、その加算の順序を反対に(下位の桁から)行なうように変更したものである。以下、N=8、M=12の場合について、その構成方法、機能および効果を説明する。
【0054】
本発明の第3実施形態による乗算器の基本構成を図7に示す。図7において、第2実施形態と同様な構成、つまりカウンタ13およびセレクタ14を有する演算制御手段12、ROM15、累積加算手段20が設けられている。また、行列データ蓄積手段11も第2実施形態とほぼ同様に構成されているが、絶対値部分の最上位ビットではなく最下位ビットについてビットスライスを取り出してから8:1セレクタにより選択してEXEC信号として送出する。また累積加算器の入力側レジスタはROMからのデータを取得するにあたり、11ビット左シフトした上で符号拡張して内部にセットし(あらかじめ211を乗ずることに相当)、下位11ビットは常に0とする。また、累積加算器の出力側レジスタは、シフトモードのとき、その入力を1ビット右シフトして内部にセットしている。
【0055】
このような第3実施形態に係る乗算器の機能も第2実施形態と同様である。すなわち、演算処理に先立ってカウンタおよび累積加算器の入出力側レジスタをリセットし、入力データは符号−絶対値表現で入力レジスタに格納しておく。処理が開始されると、カウンタの下位3ビットと符号に対応したROMデータが累積加算器に順次出力される。またセレクタは入力データレジスタの最下位ビットから取り出されたビットスライスb0 ,…,b7 をカウンタの下位3ビットの示す値に応じて選択してこの順でEXEC信号として累積加算器に送る。例えばカウンタの下位3ビットが010の時はマトリックスの第2列成分(010に対応)が、入力データの第2成分の符号に対応した符号で累積加算器の入力側レジスタに供給されることになる。この時EXEC=1(入力データの第2成分の絶対値の最下位ビットが1)で累積加算回路21のレジスタ23,25がノーマルモードであるならば、次のクロックで入力レジスタ23の12ビット目以上にROM15からのデータが符号拡張してセットされ、第2の実施形態の場合と同様に加算器24の出力ポートには、この値と出力側レジスタの内容を加算した値が現れる。一方、EXEC=0であればこれも第2実施形態の場合と同様に累積加算回路のレジスタ23,25は、図5のように何れもホールド状態となり、ROMからのデータが入力側のレジスタ23にセットされず、出力ポートの値も出力側レジスタ25にセットされないので、加算器24は以前の状態を保ったままスイッチング動作を行なうことはない。
【0056】
以下、第2実施形態と同様の動作を8回行なって、カウンタの下位3ビットが111を示すとSHIFT=1が累積加算器に送られ、次のクロックに伴って出力ポートのデータが1ビット右シフトして(1/2を乗算することに相当)出力側レジスタ25にセットされる。このとき、入力レジスタ23の絶対値部分も1ビット右シフトされ、入力データの2桁目が入力データレジスタの1桁目に入り入力データの1桁目に関する処理が終了する。これ以降は、上記の手順を絶対値部分の全ての桁につき11回繰り返せばよい。入力レジスタにあらかじめ211を乗じたデータが供給されているが、出力ポートが右シフトされるごとにその結果に1/2が乗算されるので、最終的に1桁目の部分和には20 が、2桁目の部分和には2が、以下同様に第i桁目の計算結果には2i-1 が乗じられたものの総和が求められる。各桁ともにカウンタが1010111を示したその次のクロックで全ての桁に関する処理が終了しているので、累積加算器の出力レジスタから必要なビット幅のデータを取り出せば積和演算の結果が得られる。
【0057】
以上のような構成・動作を有する第3実施形態に係る行列ベクトル乗算器の効果について説明する。まず、ROMからのデータを入力レジスタに供給する際に、ROMデータのビット幅と累積加算器のビット幅の差に相当する部分は符号拡張を行なわなければならず、図8に示すように、ROMから渡されるデータが負であるのならばROMデータの最上位から入力側レジスタの最上位までのビット(M=12、N=8ならば14ビット)を全て1にセットし、正ならば0にしてレジスタにセットする必要がある。差分画像のデータは0を中心に正負の両側にほぼ一様に分布しているため、ROMから渡されるデータの正負の比率は、ほぼ1:1で順序の予測ができず、この部分のスイッング確率が非常に大きくなる可能性があるが、あらかじめ11ビットシフトして代入して下位11ビットを常に0にしておくと、符号拡張に伴う上位ビットのスイッチング回数を少なくすることができ、さらなる低消費電力化が可能となる。
【0058】
最後に、本発明の第4実施形態に係る行列ベクトル乗算器の構成,機能および効果について、図9を参照しながら説明する。この第4実施形態に係る乗算器も、第1の所定数であるn列で8、第2の所定数である行数も8であるがビット数Mが12の場合について説明する。
【0059】
まず、第4実施形態に係る行列ベクトル乗算器の構成を図9に示す。この第4実施形態に係る乗算器は、第2,第3実施形態に係る乗算器と同様な構成のROM15と、累積加算手段20と、カウンタ13が設けられている。また、行列データ蓄積手段11も第1ないし第3実施形態とほぼ同様の構成とするが、絶対値部分の最上位ビットだけではなく任意のビットについてビットスライスを取り出すことができ、信号S5により11:1の選択比率の第2のセレクタ34がカウンタの上位4ビットに応じてどの桁を取り出すかを制御するものである。カウンタ13の上位4ビットと蓄積手段11との桁の対応は任意でよいが、例えば0000の時が11桁目、1010の時が、1桁目のように対応づけておくと、構成をより簡単にすることができる。
【0060】
上記構成に基づく第4実施形態に係る乗算器の機能動作について説明する。第2実施形態に係る乗算器と同様に、演算処理に先立ってカウンタ13および累積加算回路21の入出力側のレジスタ23,25をリセットし、入力データは符号−絶対値表現で入力側のレジスタ23に格納しておく。演算処理が開始されるとカウンタ13の下位3ビットと符号に対応したROMデータが累積加算回路21の加算器24に順次渡される。また、第2のセレクタ34は、行列データ蓄積手段11のある桁(カウンタの上位4ビットで指定)から取り出されたビットスライスb0 ,…,b7 を、カウンタ13の下位3ビットの示す値に応じてセレクタ14により選択してこの順でEXEC信号S4として累積加算回路21に送る。例えば、カウンタ13が0011101の時は蓄積手段11に格納されているマトリックスの第5列成分(101に対応)が、入力データの第5成分の符号に対応して正または負符号で累積加算回路21の入力側レジスタ23に渡され、入力レジスタの8桁目(0011に対応)から取り出されたビットスライスの第5成分が累積加算器へEXEC信号として渡されることになる。以下第2実施形態と同様の手順で累積加算を行なう。
【0061】
第2実施形態に係る乗算器の場合、ある桁の加算を終了するごとに入力レジスタの1ビット左シフトを行なっていたが、ここではカウンタの上位4ビットに応じてビットスライスを取り出す桁を切り換えるためのハードウェアとして第2のセレクタ34を追加するだけで、左シフトのための機構を省略し、さらにシフトに伴って生じるレジスタの更新を抑制するので、さらなる低消費電力化が可能となる。
【0062】
【発明の効果】
以上、詳細に説明したように、本発明に係る行列ベクトル乗算器によれば、入力された行列データのビットが0の時は加算を行なわないので、消費電力を大幅に低減することが可能となると共に、各行に関する積算を並列接続された複数の累積加算回路により並列に演算処理することができるので、演算処理の高速化が可能となる。
【0063】
さらに、並列に設けられた累積加算回路の入出力レジスタのスイッチング動作の回数を削減することもできるので、この点においても消費電力の低減が可能となるばかりでなく、読出し専用記憶手段へのランダムアクセスが発生しないことになるので、読出し専用記憶手段(ROM)の構造を簡単化するこもできる。
【0064】
また、符号拡張の際のスイッチングの回数も削減することができ、消費電力の低減化が期待でき、また、行列データ蓄積手段のシフト機能が不要となるので、蓄積手段の構造を簡略化でき、スイッチングの回数も削減される。さらに、カウンタを共用することでハードウェア量の削減を図ることもできる。
【図面の簡単な説明】
【図1】本発明の基本概念としての第1実施形態に係る行列ベクトル乗算器の構成を示すブロック図。
【図2】本発明の第2実施形態に係る行列ベクトル乗算器の構成を示すブロック図。
【図3】第2ないし第4実施形態の乗算器において共通に用いられるROMの機能を表すテーブルと、第5列の+符号を指定された場合とを示す説明図。
【図4】本発明に係る行列ベクトル乗算器において共通して用いられる累積加算回路を示すブロック図。
【図5】図4における入出力レジスタ23,25にそれぞれ入力される制御信号に対するモード割り当てテーブルを示す説明図。
【図6】第2実施形態に係る乗算器における累積加算回路の動作状態の一例を説明するため入力データ絶対値部分の最上位ビットのビットスライスが(01101100)、次の桁のビットスライスが(0110....)の場合を示す説明図。
【図7】本発明の第3実施形態に係る行列ベクトル乗算器の構成を示すブロック図。
【図8】本発明に係る乗算器の(a)第2実施形態における累積加算回路の入力側レジスタへのデータのセット方法、(b)第3実施形態における累積加算回路の入力側レジスタへのデータのセット方法をそれぞれ示す説明図。
【図9】本発明の第4実施形態に係る行列ベクトル乗算器の構成を示すブロック図。
【図10】DA法を用いた従来の行列ベクトル乗算器の構成を示すブロック図。
【図11】従来の行列ベクトル乗算器のROMに格納されたテーブルを示す説明図。
【図12】従来の乗算器における計算アルゴリズムを示す説明図。
【符号の説明】
10 行列ベクトル乗算器
11 行列データ蓄積手段
12 演算制御手段
13 符号制御部(アドレス指定カウンタ)
14 加算制御部(セレクタ)
15 読出し専用記憶手段(ROM)
20 累積加算手段
21(a〜n) 累積加算回路
23(a〜n) 入力蓄積部(入力レジスタ―AREG―)
25(a〜n) 出力蓄積部(出力レジスタ―BREG―)
34 符号制御部(第2のセレクタ)[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a matrix vector multiplier, and more particularly to a matrix vector multiplier capable of performing matrix and vector operation processing at high speed and with low power consumption.
[0002]
[Prior art]
Widely used as a basic element algorithm for image data compression is a discrete cosine transform (hereinafter abbreviated as DCT-Discrete Cosine Transform) method and its inverse transform (hereinafter IDCT-Inverse Discrete Cosine). There is band compression technology using the Transform method. Each of the above DCT and IDCT is a kind of orthogonal transform, but in actual calculation, it is a multiplication of a constant coefficient matrix and a vector, and a pixel value vector xn, DCT coefficient vector XkIs defined by:
[0003]
[Expression 1]
In MPEG (Moving Picture Experts Group) 1, MPEG2, etc., which are international standards for moving picture compression, N = in a square area (block) composed of 64 pixels of 8 pixels each in the horizontal and vertical directions. Eight two-dimensional DCT and IDCT are used.
[0004]
In general, a moving image compression apparatus has a very large calculation amount, and moving image compression encoding / decoding in a use form (HDTV broadcast, TV phone, video surveillance system, etc.) that particularly requires real-time processing is applied to the processing system The required performance is very high. Therefore, the calculation of the discrete cosine transform and the inverse transform is generally performed using a high-speed algorithm and dedicated hardware, and Chen's high-speed algorithm that can greatly reduce the number of product-sum operations, A method such as a distributed arithmetic (DA-Distributed Arithmetic) method capable of performing calculations without using a multiplier is widely used. As a configuration of dedicated hardware using these methods, for example, the document IEICE Trans. Electron. , Vol. E75-C (1992), No.4 pp.390-397 and the like. Here, the calculation method of the discrete cosine transform by the DA method and the hardware configuration method will be briefly described.
[0005]
First, the k-th row of the matrix-vector multiplication of the above equation (1) can be expressed in the form of an inner product as follows:
[0006]
[Expression 2]
Further, when the bit width of the hardware data path is M, each XnIs a binary number (2's complement):
[0007]
[Equation 3]
Therefore, the above equation (2) uses the linearity of the inner product:
[0008]
[Expression 4]
It becomes the form. Where partial sum
[0009]
[Equation 5]
Is the input data {xn} I-th bit {bn, i}, But any bit pattern (2NStreet) and store it in memory, {bn, i} Can be read as an N-bit address. 2i-1If it is noted that the multiplication of i corresponds to a left shift of i−1 bits, it can be understood that the above equation (4) can be obtained by a combination of N-bit address memory reference and left shift, addition and subtraction.
[0010]
The DA method is an application of the above-described principle. Hereinafter, a specific example of the multiplier configuration and its procedure when N = 8 will be described with reference to FIGS. First, the circuit configuration of a conventional matrix vector multiplier will be described with reference to FIG. In FIG. 10, the conventional matrix vector arithmetic circuit has an input port for each row, and information of 0 or 1 in the vertical and horizontal directions of the first predetermined number n columns and the second predetermined number k rows. The
[0011]
A
[0012]
The operation of the conventional matrix vector multiplier having the above configuration will be described. First, as shown in FIG. 11, all 8-bit patterns {bn} (28= 256 ways), a table is created in which partial sums corresponding to each row k (k = 0,..., 7) of the matrix are calculated in advance with a required accuracy (for example, 16 bits). As described above, the table shown in FIG. 11 is stored in advance in the
[0013]
Next, 8 input data {xnEach of n = 0,..., 7} is extracted from the least significant bit of binary representation (hereinafter abbreviated as LSB-Least Significant Bit-), and these 8 bits {bn, 0} As an address signal, the partial sum data read from the
[0014]
When this method is used, the product of the matrix and the vector data can be easily calculated by a simple general-purpose arithmetic circuit as shown in FIG. 10 without preparing hardware dedicated for multiplication. It is suitable for the purpose of processing at high speed while saving the amount of hardware.
[0015]
[Problems to be solved by the invention]
However, according to the above-described conventional matrix vector multiplier, the calculation amount and the hardware operation rate are always constant regardless of the nature of the input data and the correlation of the contents. For example, “0” is continuously set. The
[0016]
As is well known, the DA method always performs the same operation on a data string having any property, and unnecessary calculations and obvious calculations are performed as in the above example. The opportunity of the switching operation due to repetition increases, which causes not only inefficiency but also a problem of increasing power consumption. Furthermore, since access to the memory is random access using each digit of the input data as an address, a sophisticated function is required for the memory, and the structure of the
[0017]
An object of the present invention is to provide an arithmetic circuit that performs multiplication of a matrix of constant components frequently appearing in image processing and the like and a vector variable without using a general-purpose multiplier, and an adder and shifter that operate in parallel. By using a read-only memory that holds matrix components, unnecessary calculations are omitted to improve calculation efficiency and suppress power consumption rise, and the matrix circuit structure is simple It is to provide a matrix vector multiplier that can be completed with
[0018]
[Means for Solving the Problems]
In order to achieve the above object, a matrix vector multiplier according to the present invention converts a matrix data composed of a first predetermined number of column components and a second predetermined number of row components into a code part and an absolute value part. Matrix data storage means that sequentially stores and expresses the address control signal designating the column number of a specific column component of the matrix data stored in the matrix data storage means, and the code portion of the matrix data An arithmetic control means including: a code control unit that outputs as a code control signal; and an addition control unit that outputs the absolute value portion of the matrix data corresponding to the address control signal as an addition control signal; and the matrix dataColumnscomponentThe coefficient data corresponding to and the data of the opposite sign are expressed in advance by a sign part and an absolute value part.The corresponding column component is stored based on the address control signal and the code control signal that are stored and output from the code control unit.dataRead-only storage means for sequentially outputting the code of the column component provided for each row component of the matrix data and supplied from the read-only storage meansThe coefficient data corresponding toAre temporarily stored and the address control signal is cycled based on the sign control signal and the addition control signal.coefficientA plurality of input accumulation units for moving the absolute value portion of the data by a predetermined amount in a predetermined direction; andReadA plurality of adders for switching between addition and non-addition of data from the dedicated storage means, and the accumulated values of each of the plurality of adders are temporarily accumulated, and the accumulated values are moved by the predetermined amount in the predetermined direction. And a plurality of output accumulating units, and a cumulative addition means including a plurality of cumulative addition circuits each configured.
[0019]
Further, the matrix vector multiplier according to
[0020]
Further, the matrix vector multiplier according to
[0021]
Further, the matrix vector multiplier according to
[0022]
A matrix vector multiplier according to
[0023]
According to a sixth aspect of the present invention, there is provided a matrix vector multiplier according to the first aspect of the present invention, wherein the sign control unit of the arithmetic control means includes a counter that accumulates the contents one by one for each clock signal. It is characterized by having.
[0024]
Further, the matrix vector multiplier according to
[0025]
A matrix vector multiplier according to an eighth aspect of the present invention is the multiplier according to the first aspect, wherein the cumulative addition unit is configured to store the matrix data stored in the matrix data storage unit.specificPlaceofbitColumnIs used as the addition control signal, and the addition control is performed every time one period of the address control signal passes.Position of the bit string used as a signalIs shifted right by 1 bit.
[0026]
Furthermore, the matrix vector multiplier according to claim 9 is the multiplier according to
[0027]
The matrix vector multiplier according to
[0028]
Further, the matrix vector multiplier according to
The matrix vector multiplier according to
A matrix vector multiplier according to
[0029]
Therefore, according to the matrix vector multiplier of the present invention, each component of the input data consisting of N components is extracted for each bit from the upper digit, and the operation of the adder is performed using the obtained bit string (N bit) as a control signal. The modes are sequentially switched, and coefficient data corresponding to each bit read from the ROM is integrated. At this time, by switching the mode so that the data held in the register is added if the control bit is 1 and the register is held if the control bit is 0, the unnecessary addition operation can be reduced by switching the register. , Low power consumption operation becomes possible. When N coefficient data are processed, the result is shifted left by 1 bit, and the same operation is repeated for the next digit of the input data. Similarly, the process is repeated until all digits are processed.
[0030]
In order to perform matrix multiplication correctly according to the above procedure, the sign-absolute value expression is used instead of the two's complement expression for the input data of the cumulative addition means. In a moving image compression process using motion compensation such as MPEG, the difference image data such as P-picture is highly likely to be concentrated around 0. Since the number of zeros increases, the number of times of switching can be further reduced by setting the operation mode to the hold state in a matrix in which zeros continuously appear.
[0031]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of a matrix vector multiplier according to the present invention will be described below in detail with reference to the drawings. First, the configuration of a matrix vector multiplier according to the first embodiment as the basic principle of the present invention will be described with reference to FIG.
[0032]
In FIG. 1, a
[0033]
The cumulative addition means 20 has a plurality of
[0034]
The operation of the matrix vector multiplier according to the first embodiment will be omitted as it is supplemented by the description of the operations of the second to fourth embodiments described in detail below.
[0035]
Next, a matrix vector multiplier according to a second embodiment of the present invention will be described in detail with reference to FIGS. The matrix vector multiplier according to the second embodiment is described with a more specific configuration of the multiplier according to the first embodiment.
[0036]
The multiplier according to the second embodiment includes N M-bit registers that store N pieces of input data in the form of a sign-absolute value expression, and N bits of N bits extracted from the M-1st digit of the register group. N: 1 selector for designating one of them, ROM capable of storing matrix component data and reading out each column, a cumulative adder operating in parallel and accumulating data from the ROM, matrix columns And a counter for generating a signal for designating a number. Hereinafter, an algorithm, a configuration method, a function, and an effect will be described in the case of N = 8 and M = 12. Here, in the configuration of the
[0037]
First, the multiplier algorithm according to the second embodiment will be described. X of input datanUsing the sign-absolute value representation with a bit width of 12:
[0038]
[Formula 6]
Since the inner product calculation in (2) uses linearity,
[0039]
[Expression 7]
Can be written. “Bi= 0 or 1 ”, so after all, equation (6) becomes“ + a for each row k of the matrix.k, n"Or" -ak, n"Or" 0 "and a combination of shift operation.
[0040]
Specifically, first, a read memory storing the data of each component of the matrix and the data of the opposite sign is prepared, and from this memory, x = 0,.n+ A depending on the sign ofk, nOr -ak, nAre read sequentially. 8 input data xnIs represented by a sign-absolute value representation, and a bit string {b obtained by taking out the most significant bit (10th digit) of the absolute value portion.n, 10; For n = 0,..., 7}, bn, 10+ A corresponding only when = 1k, n(Or -ak, n) Is accumulated by a cumulative adder. After completing the processing for n = 0,..., 7, the integration result is shifted to the left by 1 bit, and + a is similarly applied to the next bit (9th digit) of the absolute value portion.k, n(Or -ak, n) Is repeated with a cumulative adder. Thereafter, this process is repeated until the least significant bit is reached, thereby obtaining Equation (6).
[0041]
In the above algorithm, ak, nThe sign associated with is x for each column nnIs stored in the memory in advance by storing the 8 data of the nth column of the matrix as a set and the data of the opposite code as a set. By referring to one of the codes collectively, it is possible to perform calculations of k = 0,..., 7 in parallel.
[0042]
Next, the overall configuration of the multiplier according to the second embodiment will be described with reference to FIG.
[0043]
The above configuration will be described in more detail. First, a total of 128 pieces of each component of “8 × 8” constituting the matrix and data obtained by inverting the sign (that is, expressed in two's complement) are required. It is prepared with a bit width corresponding to the accuracy. Although the required bit width varies depending on the application field, for example, in the case of MPEG1, MPEG2, etc., an accuracy of about 16 bits is required. Although these data can be stored in the read-only memory, in the case of the present invention, random access to the memory by address reference does not occur, so a sequencer using a combinational circuit or the like may be used. The
[0044]
As shown in FIG. 3, the
[0045]
As shown in FIG. 5, each
[0046]
The bit width of the adder is 16 + 11 + 3 bits when ROM data is 16 bits, input data is 12 bits (M = 12), and input is 8 components (N = 8), but this second embodiment will be described later. One more bit is prepared for the reason. Eight input data are usually given in 2's complement representation, but this is converted into a sign-absolute value representation and stored in the input data register. This is, for example, a well-known method, but only when the most significant bit (MSB; 12th digit) of the input data is 1,
[0047]
Also, an 8-bit bit string (bit slice) {b taken out from the most significant (11th digit) of the absolute value portion (1st to 11th digits) of the input data register {bn; N = 0,..., 7} are selected by an 8: 1 selector, and the output of this selector is used as the EXEC signal of the input side and output side registers of each cumulative adder and the normal mode (EXEC = 1) and the hold mode Switch (EXEC = 0). The input data register includes a shifter. When SHIFT = 1 is received, the absolute value portion is shifted to the left by 1 bit with the next clock.
[0048]
The output signal S3 of the lower 3 bits of the counter (7-bit width) takes a value of 0 to 7, and is used for both the signal S1 for designating the column number of the
[0049]
Next, the operation of the cumulative adder in the multiplier according to the second embodiment will be described with reference to FIG. Prior to the arithmetic processing, the counter and the input / output register of the cumulative adder are reset, and the input data is converted into a sign-absolute value representation and stored in the input register in advance. When the arithmetic processing is started, ROM data corresponding to the counter value and the sign is sequentially supplied to the
[0050]
When the above operation is performed 8 times and the lower 3 bits of the counter indicate 111, SHIFT = 1 is sent to the cumulative adder, and the data of the output port is shifted left by 1 bit with the next clock (multiply by 2). Equivalent to) setting in the output register 25. At this time, the absolute value portion of the
[0051]
The effect of the matrix vector multiplier according to the second embodiment operating as described above with the above configuration will be described. First, in the normal mode, when the contents of the
[0052]
Therefore, although the power consumption decreases as the number of zeros included in the input data in binary representation increases, the data distribution is around 0 especially in the differential image data in the moving image compression encoding / decoding process using motion compensation. Therefore, when the sign-absolute value expression is used, the high-order bit has a high probability of being 0. When applied to a data string having such properties, the power consumption is higher than that of the ordinary DA method. Can be greatly reduced. In addition, the ROM storing the matrix components is not randomly accessed, and only sends data sequentially in a certain order, so that the structure is very simple.
[0053]
Next, a matrix vector multiplier according to a third embodiment of the present invention will be described with reference to FIGS. The multiplier according to the third embodiment of the present invention uses an algorithm that is essentially the same as that of the second embodiment, and is changed so that the order of addition is reversed (from the lower digit). Hereinafter, the configuration method, function, and effect will be described for N = 8 and M = 12.
[0054]
FIG. 7 shows a basic configuration of a multiplier according to the third embodiment of the present invention. In FIG. 7, the same configuration as that of the second embodiment, that is, an arithmetic control means 12 having a
[0055]
The function of the multiplier according to the third embodiment is the same as that of the second embodiment. That is, prior to the arithmetic processing, the counter and the input / output register of the cumulative adder are reset, and the input data is stored in the input register in the sign-absolute value representation. When the processing is started, ROM data corresponding to the lower 3 bits and the sign of the counter are sequentially output to the cumulative adder. The selector also selects the bit slice b extracted from the least significant bit of the input data register.0, ..., b7Are selected according to the value indicated by the lower 3 bits of the counter and sent to the cumulative adder as an EXEC signal in this order. For example, when the lower 3 bits of the counter are 010, the second column component of the matrix (corresponding to 010) is supplied to the input side register of the cumulative adder with a code corresponding to the code of the second component of the input data. Become. At this time, if EXEC = 1 (the least significant bit of the absolute value of the second component of the input data is 1) and the
[0056]
Thereafter, the same operation as in the second embodiment is performed 8 times. When the lower 3 bits of the counter indicate 111, SHIFT = 1 is sent to the cumulative adder, and the data of the output port is 1 bit with the next clock. Right-shifted (equivalent to multiplying by 1/2) is set in the output side register 25. At this time, the absolute value portion of the
[0057]
The effect of the matrix vector multiplier according to the third embodiment having the configuration and operation as described above will be described. First, when supplying the data from the ROM to the input register, the portion corresponding to the difference between the bit width of the ROM data and the bit width of the cumulative adder must be sign-extended, as shown in FIG. If the data passed from the ROM is negative, all the bits from the top of the ROM data to the top of the input side register (14 bits if M = 12, N = 8) are all set to 1; It must be set to 0 and set to a register. Since the difference image data is distributed almost uniformly on both the positive and negative sides centering on 0, the positive / negative ratio of the data passed from the ROM is almost 1: 1, and the order cannot be predicted. Although the probability may become very large, if the lower 11 bits are always set to 0 by shifting and substituting 11 bits in advance, the number of times of switching the upper bits associated with sign extension can be reduced, and the lower Power consumption can be reduced.
[0058]
Finally, the configuration, function, and effect of the matrix vector multiplier according to the fourth embodiment of the present invention will be described with reference to FIG. The multiplier according to the fourth embodiment will also be described for the case where the first predetermined number is n columns and the second predetermined number is 8 rows, but the bit number M is 12.
[0059]
First, FIG. 9 shows the configuration of a matrix vector multiplier according to the fourth embodiment. The multiplier according to the fourth embodiment is provided with a
[0060]
A functional operation of the multiplier according to the fourth embodiment based on the above configuration will be described. Similar to the multiplier according to the second embodiment, prior to the arithmetic processing, the input / output side registers 23 and 25 of the
[0061]
In the case of the multiplier according to the second embodiment, the input register is shifted to the left by 1 bit each time addition of a certain digit is completed. Here, the digit from which the bit slice is extracted is switched according to the upper 4 bits of the counter. By simply adding the second selector 34 as hardware for this purpose, the mechanism for the left shift is omitted, and further, register updating caused by the shift is suppressed, so that further reduction in power consumption is possible.
[0062]
【The invention's effect】
As described above in detail, the matrix vector multiplier according to the present invention does not perform addition when the bit of the input matrix data is 0, so that power consumption can be significantly reduced. At the same time, the integration of each row can be processed in parallel by a plurality of cumulative addition circuits connected in parallel, so that the processing speed can be increased.
[0063]
Furthermore, since the number of switching operations of the input / output registers of the cumulative addition circuit provided in parallel can be reduced, not only in this respect, power consumption can be reduced, but also random access to the read-only storage means is possible. Since no access occurs, the structure of the read-only storage means (ROM) can be simplified.
[0064]
In addition, the number of times of switching at the time of sign extension can be reduced, and a reduction in power consumption can be expected, and since the shift function of the matrix data storage means is not required, the structure of the storage means can be simplified, The number of switching operations is also reduced. Furthermore, the amount of hardware can be reduced by sharing the counter.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a matrix vector multiplier according to a first embodiment as a basic concept of the present invention.
FIG. 2 is a block diagram showing a configuration of a matrix vector multiplier according to a second embodiment of the present invention.
FIG. 3 is an explanatory diagram showing a table representing ROM functions commonly used in the multipliers of the second to fourth embodiments and a case where a + sign in the fifth column is designated.
FIG. 4 is a block diagram showing a cumulative adder circuit commonly used in a matrix vector multiplier according to the present invention.
5 is an explanatory diagram showing a mode assignment table for control signals respectively input to the input / output registers 23 and 25 in FIG. 4;
FIG. 6 is a diagram illustrating an example of an operation state of the cumulative addition circuit in the multiplier according to the second embodiment. The bit slice of the most significant bit of the input data absolute value portion is (01101100), and the bit slice of the next digit is ( 0110..
FIG. 7 is a block diagram showing a configuration of a matrix vector multiplier according to a third embodiment of the present invention.
FIGS. 8A and 8B are (a) a method of setting data in the input side register of the cumulative addition circuit in the second embodiment of the multiplier according to the present invention, and (b) the input to the input side register of the cumulative addition circuit in the third embodiment. Explanatory drawing which shows each data setting method.
FIG. 9 is a block diagram showing a configuration of a matrix vector multiplier according to a fourth embodiment of the present invention.
FIG. 10 is a block diagram showing a configuration of a conventional matrix vector multiplier using the DA method.
FIG. 11 is an explanatory diagram showing a table stored in a ROM of a conventional matrix vector multiplier.
FIG. 12 is an explanatory diagram showing a calculation algorithm in a conventional multiplier.
[Explanation of symbols]
10 Matrix vector multiplier
11 Matrix data storage means
12 Calculation control means
13 Code control unit (addressing counter)
14 Addition control unit (selector)
15 Read-only memory (ROM)
20 Cumulative addition means
21 (a to n) Cumulative addition circuit
23 (a to n) Input accumulation unit (input register -AREG-)
25 (a to n) Output accumulation section (output register -BREG-)
34 Code control unit (second selector)
Claims (13)
前記行列データ蓄積手段に蓄積された行列データの特定の列成分の列番号を指定するアドレス制御信号を出力すると共に前記行列データ前記符号部分を符号制御信号として出力する符号制御部と、前記アドレス制御信号に対応する前記行列データの前記絶対値部分を加算制御信号として出力する加算制御部と、を含む演算制御手段と、
前記行列データの列成分に対応する係数データとその反対符号のデータとを予め符号部分と絶対値部分とにより表現して格納すると共に前記符号制御部より出力される前記アドレス制御信号および前記符号制御信号に基づいて対応する列成分のデータを順次出力する読出し専用記憶手段と、
前記行列データの前記行成分ごとに設けられて前記読出し専用記憶手段より供給された前記列成分の符号に対応する前記係数データを一時的に蓄積すると共に前記符号制御信号および加算制御信号に基づいて前記アドレス制御信号の1周期ごとに前記係数データの前記絶対値部分を所定量ずつ所定方向に移動させる複数の入力蓄積部と、前記加算制御信号に応じて前記読出し専用記憶手段からのデータの加算・非加算を切り換える複数の加算部と、前記複数の加算部の各々の積算値を一時的に蓄積すると共にこの積算値を前記所定量ずつ前記所定方向に移動させる複数の出力蓄積部と、より各々が構成される複数の累積加算回路より成る累積加算手段と、
を備えることを特徴とする行列ベクトル乗算器。Matrix data storage means for sequentially storing the matrix data composed of the column component consisting of the first predetermined number and the row component consisting of the second predetermined number by the code part and the absolute value part,
A code control unit that outputs an address control signal designating a column number of a specific column component of the matrix data stored in the matrix data storage means and outputs the code part of the matrix data as a code control signal; and the address control An addition control unit that outputs the absolute value portion of the matrix data corresponding to a signal as an addition control signal;
The coefficient data corresponding to the column component of the matrix data and the data of the opposite sign are preliminarily expressed and stored as a code part and an absolute value part, and the address control signal and the code control output from the code control unit are stored. Read-only storage means for sequentially outputting corresponding column component data based on the signal;
The coefficient data corresponding to the code of the column component provided for each row component of the matrix data and supplied from the read-only storage means is temporarily accumulated and based on the code control signal and the addition control signal a plurality of input storage unit for moving the absolute value portion of the coefficient data for each cycle of the address control signal in a predetermined direction by a predetermined amount, the data from the dedicated storage means and the reading in response to the addition control signal A plurality of addition units for switching between addition and non-addition, a plurality of output accumulation units for temporarily accumulating each integrated value of the plurality of addition units and moving the integrated value in the predetermined direction by the predetermined amount; A cumulative addition means comprising a plurality of cumulative addition circuits each comprising
A matrix vector multiplier characterized by comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02539698A JP3895031B2 (en) | 1998-02-06 | 1998-02-06 | Matrix vector multiplier |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02539698A JP3895031B2 (en) | 1998-02-06 | 1998-02-06 | Matrix vector multiplier |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11224246A JPH11224246A (en) | 1999-08-17 |
JP3895031B2 true JP3895031B2 (en) | 2007-03-22 |
Family
ID=12164744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02539698A Expired - Fee Related JP3895031B2 (en) | 1998-02-06 | 1998-02-06 | Matrix vector multiplier |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3895031B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7225831B2 (en) | 2019-01-23 | 2023-02-21 | 富士通株式会社 | Processing unit, program and control method for processing unit |
-
1998
- 1998-02-06 JP JP02539698A patent/JP3895031B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11224246A (en) | 1999-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100329339B1 (en) | An apparatus for performing multiply-add operations on packed data | |
US6546480B1 (en) | Instructions for arithmetic operations on vectored data | |
JPH07236143A (en) | High-speed digital signal decoding method | |
KR19990044304A (en) | Instruction set for compressed data operation | |
US6574651B1 (en) | Method and apparatus for arithmetic operation on vectored data | |
US7020671B1 (en) | Implementation of an inverse discrete cosine transform using single instruction multiple data instructions | |
EP1065884A1 (en) | Dct arithmetic device | |
JP2014241585A (en) | Data processing device and method for executing conversion between space domain and frequency domain in video data processing | |
EP0928100A1 (en) | Run-length encoding | |
JP3895031B2 (en) | Matrix vector multiplier | |
JP5589628B2 (en) | Inner product calculation device and inner product calculation method | |
US5671169A (en) | Apparatus for two-dimensional inverse discrete cosine transform | |
JP4405452B2 (en) | Inverse conversion circuit | |
JP4243277B2 (en) | Data processing device | |
JP3970442B2 (en) | Discrete cosine transform device and inverse discrete cosine transform device | |
US8693796B2 (en) | Image processing apparatus and method for performing a discrete cosine transform | |
KR100575285B1 (en) | Low power, high speed DCT device and method thereof | |
JP2790911B2 (en) | Orthogonal transform operation unit | |
JP3610564B2 (en) | Information processing device | |
KR100350943B1 (en) | Fast Discrete Cosine Transform Processors using Distributed Arithmetic | |
KR100408884B1 (en) | Discrete cosine transform circuit of distributed arithmetic | |
Zandonai et al. | An architecture for MPEG motion estimation | |
JP2004234407A (en) | Data processor | |
JP3575991B2 (en) | Orthogonal transform circuit | |
JP2000105683A (en) | Adaptive differential arithmetic unit and motion detector |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040413 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060425 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060512 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060711 |
|
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: 20061201 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061213 |
|
LAPS | Cancellation because of no payment of annual fees |