JP5262248B2 - 積和演算回路 - Google Patents

積和演算回路 Download PDF

Info

Publication number
JP5262248B2
JP5262248B2 JP2008092817A JP2008092817A JP5262248B2 JP 5262248 B2 JP5262248 B2 JP 5262248B2 JP 2008092817 A JP2008092817 A JP 2008092817A JP 2008092817 A JP2008092817 A JP 2008092817A JP 5262248 B2 JP5262248 B2 JP 5262248B2
Authority
JP
Japan
Prior art keywords
adder
matrix
product
multiplier
counter
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.)
Active
Application number
JP2008092817A
Other languages
English (en)
Other versions
JP2009245296A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 filed Critical Fujitsu Ltd
Priority to JP2008092817A priority Critical patent/JP5262248B2/ja
Publication of JP2009245296A publication Critical patent/JP2009245296A/ja
Application granted granted Critical
Publication of JP5262248B2 publication Critical patent/JP5262248B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Image Processing (AREA)

Description

本発明は、複数可変行列に対応した積和演算の技術に関する。
近年、ハードウェアにより可変行列に対応した積和演算回路を実現する場合に、回路規模を縮小するとともに演算時間の短縮が求められている。
例えば、演算時間を短縮するために、行列とベクトルの積を複数の乗算器と加算きで求める積和演算回路があるが、行列が大きくなると複数の乗算器と加算器を使用するため回路規模が縮小できない。
また、3×3の空間積和を求める回路において、最初の3個の部分積和を求め、結果をシフトレジスタに入力する。その後、別の積和を255回計算した後、次の3個の積和を計算してシフトレジスタ内の結果と加算して空間積和を出力するような提案がある。
しかし、この方法では行の大きさに対応したシフトレジスタを用意する必要がある。また、数値シミュレーションで用いられる要素数の多い行列の積和演算では、シフトレジスタの段数で対応するのは現実的でない。
また、特許文献1、特許文献2のような提案がされている。
特開平02−090357号公報 特開平11−312148号公報
固定サイズの正方行列だけではなく、異なる行列サイズの積和演算を連続実行でき、さらに回路の利用効率および演算性能を向上させる積和演算回路を提供することを目的とする。
第1の態様のひとつである行列積の演算を行う積和演算回路は、乗算器、乗算器用加算器、加算器用加算器、レイテンシカウンタ、可変カウンタ、可変カウンタ設定部を備えている。乗算器は、第1の行列の要素を行方向に所定数ごとにグループにした行ベクトルと、第2の行列の要素を列方向に前記所定数ごとにグループにした列ベクトルとの積算を並列に実行する。乗算器用加算器は、前記所定数のと、前記所定の要素数と同じ数量設けられた前記乗算器の次段に、前記乗算器の乗算結果を取得して加算をする。加算器用加算器は、前記乗算器用加算器の次段に、前記乗算器用加算器の加算結果を取得して加算をする。レイテンシカウンタは、最終段の前記加算器用加算器のレイテンシを計測する。可変カウンタは、前記レイテンシカウンタが前記最終段の加算器用加算器のレイテンシを計測するごとにカウントして、所定の累算回数までカウントすると前記行列積の演算結果が取得可能状態であることを示す信号を出力する。可変カウンタ設定部は、前記可変カウンタのカウント値の設定をする。
また、前記乗算器への前記行ベクトルの入力は、前記加算器用加算器の最終段のレイテンシを示すクロック数に基づいて前記第1の行列を所定行ごとにブロック化して、前記ブロックを構成する最初の行ベクトルから列方向に順に入力し、前記所定行に達したときに前記ブロックの先頭行の次の行ベクトルを入力する。前記乗算器への前記列ベクトルの入力は、前記第2の行列の列ごとに最初の列ベクトルから列方向に順に入力し、該列の最後
に達したときに次の列の先頭の列ベクトルを入力する。
前記カウンタ設定部は、前記行列のサイズと前記乗算器の数に基づいて前記累算回数を算出する除算器を備える。前記除算器は、前記行列のサイズと前記乗算器の数に基づいて剰余演算をし、前記剰余演算結果があるときは前記累算回数に1を加算する。前記乗算器から前記最終段の加算器用加算器までのレイテンシから前記除算器のレイテンシの差分だけカウンタ値の設定時間を遅延させるシフトレジスタを備える。
上記構成により、行列サイズを入力に基づいて積和演算の累算回数の設定と、その設定するタイミングを調整することにより、異なるサイズの行列積和演算の連続処理を実現し、演算時間を短縮する。
また、可変サイズの行列に対する積和演算を可能とすることで、演算の適用範囲を拡大し、なおかつ、複数の異なるサイズの行列積和演算に対して、前の演算終了を待つことなくデータを連続投入可能なパイプライン化を実現することにより演算時間の短縮を実現する。
固定サイズの正方行列だけではなく、異なる行列サイズの積和演算を連続実行でき、さらに回路の利用効率および演算性能を向上させることができる。
以下図面に基づいて、本発明の実施形態について詳細を説明する。
(実施例1)
通常の行列演算を実行する場合、例えば、行列A(132×132)と行列B(132×132)を積和演算するには式1に示す計算をすることにより行列C(132×132)の1要素(例えばC0,0)を算出し同様に他の要素も算出する。
Figure 0005262248
ところが、上記132×132のようにサイズが大きい多入力の積和演算をFPGA(Field Programmable Gate Array)やCPLD(Complex Programmable Logic Device)のようなプログラマブルデバイスにより実現する場合、積和演算を実行するためには並列に132個の乗算器を設けなければならない。しかし、単に並列化をすると演算器の数が多くなり回路規模が膨大なものとなるため、実際にハードウェアとしてインプリメントするには複数のプログラマブルデバイスが必要となってしまう。
そこで、回路規模を縮小して132×132の演算を行うためには、演算器の数を減らしてインプリメントしなければならない。ところが、単純に式2に基づいて回路規模を削減した場合、積和演算を実行する際、最終段の加算器部分のレイテンシの存在により連続して演算が実行できない。また、並列数を132個から4個に減らすことによる演算性能が低下するだけでなく、連続演算ができない分さらに性能が落ちてしまう。
Figure 0005262248
そこで、図1に示すように並列数削減比を用いる積和演算回路1により積和演算性能を維持する。図1に示す図は、132並列の乗算器を4並列に削減した場合の積和演算回路
1を示し、132並列から4並列にしても積和演算性能を維持できる。
積和演算回路1は乗算器2、3、4、5(mul)、加算器6、7、8、10(add)、12進カウンタ9(レイテンシカウンタ)、33進カウンタ13、セレクタ11、論理積回路12を備えている。そして、図1に示す積和演算回路は132×132の行列演算をする回路である。
本例では、積和演算回路1の最終段の加算器8のレイテンシを考慮し、連続演算を可能にするため、行列Aの12行を1ブロックとして演算を行う。また、行列A、行列B共に4要素ごとに分割し、4要素ごとに演算を行う。
図2を用いて分割について説明する。
図2の行列Aの場合は行を4要素ごとの行ベクトルにする。例えば行0では「(0,0)(0,1)(0,2)(0,3)」「(0,4)(0,5)(0,6)(0,7)」・・・「(0,124)(0,125)(0,126)(0,127)」「(0,128)(0,129)(0,130)(0,131)」のようにする。同様に行i=0以外の行1〜131についても行ベクトルにする。また、行列Bの場合は列を4要素ごとに列ベクトルにする。例えば、図2の列j=0では「(0,0)(1,0)(2,0)(3,0)」「(4,0)(5,0)(6,0)(7,0)」・・・「(124,0)(125,0)(126,0)(127,0)」「(128,0)(129,0)(130,0)(131,0)」にする。同様に列j=0以外の列1〜131についても列ベクトルにする。
そして、図2に示す矢印の示す順に行列Aと行列Bの要素データを取得して演算を実行する。最初は、行列Aの「(0,0)(0,1)(0,2)(0,3)」と行列Bの「(0,0)(1,0)(2,0)(3,0)」の積和演算を行う。次に、行列Aの「(1,0)(1,1)(1,2)(1,3)」と行列Bの「(0,0)(1,0)(2,0)(3,0)」の積和演算を行う。
行列Aがブロック0の最終行11まできたら、つまり「(11,0)(11,1)(11,2)(11,3)」まできたら、次は行列Aの「(0,4)(0,5)(0,6)(0,7)」と行列Bの続きの行ベクトルの演算を行いブロック0の演算が終了するまで演算をする。演算が終了すると行列Aのブロック単位で演算結果が確定するため、行列Aの1ブロックの終了時、行列Cの12要素が列方向に確定する。次にブロック0と同様にブロック1の演算をし、ブロック10まで演算をする。また、演算結果は列順で確定するため、結果順にメモリなどへ転送して記録する。
演算器について説明する。
図3は、演算器である乗算器2〜5、加算器6〜8、10の機能を示す図である。基本的に、各演算器は3入力、2出力のポートを備えている。入力ポートは、データを入力する2ポートと、演算を有効にするイネーブル信号を取得する1ポートの計3ポートある。出力ポートは、データを出力するポートと、次段に接続される演算を有効にするイネーブル信号を出力するための1ポートの計2ポートある。また、演算器内に示されている数値1はスループットを示し、数値2はレイテンシを示している。
乗算器2は、行列Aの行ベクトルごとの最初の要素と行列Bの列ベクトルごとの最初の要素を取得する2つの入力ポートA0、B0と、乗算器の演算を行うかどうかを決定するイネーブル信号を取得するポートと、次段に接続される加算器7への出力信号(mdata0)を出力する出力ポートと加算器7の演算を有効にすることを通知する信号(mrdy0)を出力するポートを備えている。乗算器2は、イネーブル信号が有効を示しているときに、入力ポートA0、B0に入力された要素を乗算する。
なお、例えば行列Aが「(0,0)(0,1)(0,2)(0,3)」であれば(0,0)が最初の要素(1番目の要素)であり、(0,1)が2番目の要素、(0,2)が3番目の要素、(0,3)が4番目の要素である。つまり、行ベクトルごとに最初の要素〜4番目の要素を有している。
また、例えば行列Bが「(0,0)(1,0)(2,0)(3,0)」であれば、(0,0)が最初の要素(1番目の要素)であり、(1,0)が2番目の要素、(2,0)が3番目の要素、(3,0)が4番目の要素である。つまり、列ベクトルごとに最初の要素〜4番目の要素を有している。
乗算器3は、行列Aの行ベクトルごとの2番目の要素と、行列Bの列ベクトルごとの2番目の要素を取得する2つの入力ポートA1、B1と、乗算器の演算を行うかどうかを決定するイネーブル信号を取得するポートと、次段に接続される加算器7への出力信号(mdata1)を出力する出力ポートを備えている。乗算器3は、イネーブル信号が有効を示しているときに、入力ポートA1、B1に入力された要素を乗算する。
乗算器4は、行列Aの行ベクトルごとの3番目の要素と、行列B列のベクトルごとの3番目の要素を取得する2つの入力ポートA2、B2と、乗算器の演算を行うかどうかを決定するイネーブル信号を取得するポートと、次段に接続される加算器7への出力信号(mdata2)を出力する出力ポートと加算器7の演算を有効にすることを通知する信号(mrdy2)を出力するポートを備えている。乗算器4は、イネーブル信号が有効を示しているときに、入力ポートA2、B2に入力された要素を乗算する。
乗算器5は、行列Aの行ベクトルごとの4番目の要素と、行列Bのベクトルごとの4番目の要素を取得する2つの入力ポートA3、B3と、乗算器の演算を行うかどうかを決定するイネーブル信号を取得するポートと、次段に接続される加算器7への出力信号(mdata3)を出力する出力ポートを備えている。乗算器5は、イネーブル信号が有効を示しているときに、入力ポートA3、B3に入力された要素を乗算する。
本例では乗算器2、3、4、5は64ビット浮動小数点の乗算器を用いているが、64ビット浮動小数点の乗算器に限定するものではなく乗算ができれば固定小数点型であってもよい。
加算器6(乗算器用加算器)は、乗算器2と乗算器3の出力ポートと接続される入力ポートを備え、乗算結果であるmdata0、mdata1を取得する。また、乗算器2から出力されるmrdy0を取得する入力ポートを備えている。加算器6は、mrdy0が有効であるときにmdata0、mdata1を加算してadata0を出力する。また、次段の加算器8にイネーブル信号ardy0を出力する。
加算器7(乗算器用加算器)は、乗算器4と乗算器5の出力ポートと接続される入力ポートを備え、乗算結果であるmdata2、mdata3を取得する。また、乗算器4から出力されるmrdy2を取得する入力ポートを備えている。加算器7は、mrdy2が有効であるときにmdata2、mdata3を加算してadata1を出力する。
加算器8(加算器用加算器:本例では最終段の加算器用加算器)は、加算器6と加算器7の出力ポートと接続される入力ポートを備え、加算結果であるadata0、adata1を取得する。また、加算器6から出力されるardy0を取得する入力ポートを備えている。加算器8は、次段に接続される加算器10に加算結果を出力するadata2を出力する出力ポートを備えている。また、加算器8は、次段に接続される加算器10のv
alidポートにイネーブル信号ardy2を出力する。
加算器10は、adata2を取得するAポートと、ardy2を取得するvalidポートとセレクタ11の出力信号を取得するBポートを備えている。また、加算器10は、加算演算結果adata3(RESULT)を出力する出力ポートと、次段に接続されている論理積回路12にイネーブル信号ardy3を出力する。加算器10は、ardy2が有効のときにadata2とadata3の加算をする。
加算器6、7、8,10は、64ビット浮動小数点の加算器を用いているが、64ビット浮動小数点の加算器に限定するものではなく加算ができれば固定小数点型であってもよい。
本例では、乗算器2、3、4、5はレイテンシが9であり、加算器6、7、8、10はレイテンシが12である。
12進カウンタ9(レイテンシカウンタ)は、加算器8の出力レイテンシを計測(カウント)するカウンタであり、加算器8の出力データイネーブル信号であるardy2をカウントし12カウントすると、carry信号であるcount_upを「1」にする。なお、本例では加算器8のレイテンシが12であるので12進カウンタを用いているが、レイテンシが異なる場合はレイテンシに合わせたカウンタにすることで対応できる。
33進カウンタ13は、12進カウンタ9の出力であるcount_up信号の「1」を取得してカウントするカウンタである。積和演算回路1では、132×132の行列積演算を行う例であるため、本来132入力の積和演算を行うには132個の乗算器を必要とするが4個の乗算器で実施するため132/4=33回入力してはじめて132入力の演算結果が得られる。また、所定の累算回数までカウントすると行列積の演算結果が取得可能状態であることを示す信号を出力する。つまり、33進カウンタ13は、33進カウンタを使用し33回に1回演算結果を選択出力するための信号(count0)を出力している。
上記のように扱う行列サイズの要素数に応じてカウンタを変更することで、異なる行列サイズに対応できる。
セレクタ11は、2入力から1つを選択するセレクタであり、加算器10への入力データを選択するセレクタである。加算器10のBポートへは、例えばcount0信号が「1」の場合は値「0」を選択し、それ以外の場合は加算器10の演算結果であるフィードバック値adata3を選択する。
論理積回路12は、積和演算結果の出力タイミングを選択する。加算器10の出力データが有効であることを示すRDY信号を生成する。
図4は、積和演算回路1において1組の行列演算を実行した場合の動作を示すタイムチャートである。また、33進カウンタ13のカウント値が「30」から後の波形を示している。そして、図4のタイムチャートには縦軸に示された各信号の名称に対応した波形が示され、横軸には時間が示されている。
33進カウンタ13のカウント値が「30」の期間では、行列Aの最後の行ベクトルと行列Bの最後の列ベクトルの要素が入力される。図4では便宜上入力をA0、B0だけを示しているが実際にはA1〜A3、B1〜B3にも要素データが入力される。A0〜A3、B0〜B3から入力されるデータは1クロック毎ただし、12クロック単位で配列変換されたデータが入力される。
33進カウンタ13のカウント値が「32」までカウントすると、33進カウンタ13
のカウント値が「0」に変化し、count0が「0」から「1」に変化する。
33進カウンタ13のカウント値が「0」の期間では、count0が「1」でardy3が「1」なので論理積回路12の出力RDY信号が「0」から「1」に変化する。そして、RDY信号が「1」の間加算器10の出力データadata3(RESULT:R0〜R11)を取得する。このように、加算器10の出力adata3は396クロック毎に12回、つまり、33クロックに1回の割合で出力される。
(実施例2)
図5に示す回路は、実施例1に示した積和演算回路1を改良した積和演算回路50である。積和演算回路50は、図1に示した33進カウンタ13を可変カウンタ14に変更した回路である。
実施例1では、積和演算回路には固定サイズの行列に対する積和演算しかできない。そこで、可変サイズの行列に対応するために積和演算の累算回数を設定するカウント信号Nを入力するポートを設ける。
(実施例3)
図6は、図5に示した積和演算回路50において2組の異なるサイズの行列演算を連続して実行した場合のタイムチャートである。
可変カウンタ14のカウント値が「30」の期間では、行列Aの最後の行ベクトルと行列Bの最後の列ベクトルの要素が入力される。図4と同様に便宜上入力をA0、B0だけを示しているが実際にはA1〜A3、B1〜B3にも要素データが入力される。A0〜A3、B0〜B3から入力されるデータは1クロック毎ただし、12クロック単位で配列変換されたデータが入力される。このとき、Nの値は「33」が入力されている。
ところが、連続して積和演算を行う場合、例えばNの値を「33」から「16」に変更してしまうと可変カウンタ14のカウント値が変化してしまう。
その後、次の行列を演算するために次の要素が入力され、それと同時に、可変カウンタ14が33進カウンタから16進カウンタに変更される。
その結果、カウント値「2」の間(33進カウンタであればカウント値が「30」)に論理積回路12の出力RDY信号が「0」から「1」に変化しないため、RDY信号が「0」のまま変化せず加算器10の出力データadata3(RESULT:R0〜R11)を取得することができない。
つまり、カウンタを可変カウンタに変更した場合、一連の最終の行列積和演算が完了する前に、回路に別なサイズの行列積和演算の入力データを入れた場合に、即カウンタ値が変更されてしまうと、演算中の累算回数に狂いが生じ、正しい結果が得られない。
そこで、ダミーデータ(dummy)を行列A、Bに入れることが考えられる。しかし、要素としてダミーデータを設けて上記演算中の累算回数の狂いを回避するためには演算終了を確認するまでの待ちが必要となり、その結果、演算時間の短縮の妨げとなる。
図7は、ダミーデータとして何もデータを入力しない場合のタイムチャートである。このタイムチャートが示すように図1の積和演算回路1と同じ演算時間が必要になる。
(実施例4)
図8に示した積和演算回路90は、図5に示した積和演算回路50を改良して可変カウンタ設定部17を備えた回路である。行列サイズの可変に対応のために、行列サイズ用の入力信号(MTRX_SZIZE)を入力するポートを、図5のNを入力するポートに変
わって設ける。図9に示すように可変カウンタ設定部17は除算器15とシフトレジスタ16を備え、行列サイズから積和演算結果の累算回数を算出し、その累算回数を可変カウンタ14にセットする。
除算器15は、累算回数nの算出はMTRX_SIZEと乗算器数(図9においては4個)から式3により算出する。

n=MTRX_SIZE÷4+x (式3)

ここで、x=mod(MTRX_SIZE,4)≠0ではxを「1」にし、x=mod(MTRX_SIZE,4)=0ではxを「0」にする。modは剰余演算を示している。上記演算結果である累算回数nを可変カウンタ14にセットする。
シフトレジスタ16は、パイプライン化に対応するために可変カウンタ14にn値をセットするタイミングを、積和演算の出力信号と同期をとるように調整する。累算回数nを可変カウンタ14にセットするタイミングを積和演算の出力信号と同期をとるためにシフトレジスタで調整する。乗算器2〜5から最終段の加算器8までのレイテンシから除算器15のレイテンシの差分だけカウンタ値の設定時間を遅延させるシフトレジスタである。例えば、加算器8までのレイテンシが33クロックで、除算器15のレイテンシが10クロックの場合はシフトレジスタで23クロック遅延させる。
図9は、積和演算回路90の動作を示すタイムチャートである。
可変カウンタ14のカウンタ値が「30」の期間に、MTRIX_SIZEは「132」であり、nの値は「33」である。
行列Aの最後の行ベクトルと行列Bの最後の列ベクトルの要素のデータが入力される。図4と同様に便宜上入力をA0、B0だけを示しているが実際にはA1〜A3、B1〜B3にも要素データが入力される。A0〜A3、B0〜B3から入力されるデータは1クロック毎ただし、12クロック単位で配列変換されたデータが入力される。このとき、Nの値は「33」が入力されている。
可変カウンタ14のカウンタ値が「31」の期間に、次の行列Aと行列Bの4分割した要素が入力される。さらに、MTRIX_SIZEは「132」から「64」に変更され、式3に従ってn値が「16」が算出される。
シフトレジスタ16により遅延することにより、可変カウンタ14のカウンタ値が「0」の期間に、ardy3とcount0がともに「1」になるため、RDY信号が「1」に変化して加算器10の出力データadata3(RESULT:R0〜R11)を取得することができる。また、連続して2組の異なるサイズの行列演算を連続して演算することができるようになる。
また、行列サイズを入力に基づいて積和演算の累算回数の設定と、その設定するタイミングを調整することにより、異なるサイズの行列積和演算の連続処理を実現し、演算時間を短縮する。
また、可変サイズの行列に対する積和演算を可能とすることで、演算の適用範囲を拡大し、なおかつ、複数の異なるサイズの行列積和演算に対して、前の演算終了を待つことなくデータを連続投入可能なパイプライン化を実現することにより演算時間の短縮を実現する。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
以上実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
行列積の演算を行う積和演算回路であって、
第1の行列の要素を行方向に所定数ごとにグループにした行ベクトルと、第2の行列の要素を列方向に前記所定数ごとにグループにした列ベクトルとの積算を並列に実行する前記所定数の乗算器と、
前記所定の要素数と同じ数量設けられた前記乗算器の次段に、前記乗算器の乗算結果を取得して加算をする乗算器用加算器と、
前記乗算器用加算器の次段に、前記乗算器用加算器の加算結果を取得して加算をする加算器用加算器と、
最終段の前記加算器用加算器のレイテンシを計測するレイテンシカウンタと、
前記レイテンシカウンタが前記最終段の加算器用加算器のレイテンシを計測するごとにカウントして、所定の累算回数までカウントすると前記行列積の演算結果が取得可能状態であることを示す信号を出力する可変カウンタと、
前記可変カウンタのカウント値の設定をする可変カウンタ設定部と、
を備えることを特徴とする積和演算回路。
(付記2)
前記乗算器への前記行ベクトルの入力は、
前記加算器用加算器の最終段のレイテンシを示すクロック数に基づいて前記第1の行列を所定行ごとにブロック化して、前記ブロックを構成する最初の行ベクトルから列方向に順に入力し、前記所定行に達したときに前記ブロックの先頭行の次の行ベクトルを入力し、
前記乗算器への前記列ベクトルの入力は、
前記第2の行列の列ごとに最初の列ベクトルから列方向に順に入力し、該列の最後に達したときに次の列の先頭の列ベクトルを入力することを特徴とする付記1に記載の積和演算回路。
(付記3)
前記カウンタ設定部は、
前記行列のサイズと前記乗算器の数に基づいて前記累算回数を算出する除算器を備えることを特徴とする付記2に記載の積和演算回路。
(付記4)
前記除算器は、
前記行列のサイズと前記乗算器の数に基づいて剰余演算をし、前記剰余演算結果があるときは前記累算回数に1を加算することを特徴とする付記3に記載の積和演算回路。
(付記5)
前記乗算器から前記最終段の加算器用加算器までのレイテンシから前記除算器のレイテンシの差分だけカウンタ値の設定時間を遅延させるシフトレジスタを備えることを特徴とする付記3または4に記載の積和演算回路。
(付記6)
前記可変カウンタの出力信号により、前記最終段の加算器用加算器の出力結果と自身の出力結果を加算するフィードバック加算器を備えることを特徴とする付記4に記載の積和演算回路。
(付記7)
前記可変カウンタの出力信号が有効であるときは前記フィードバック加算器は前記最終段の加算器用加算器の出力結果を出力し、無効であるときは前記最終段の加算器用加算器の出力結果と前記フィードバック加算器の出力結果を加算することを特徴とする付記6に記載の積和演算回路。
(付記8)
前記フィードバック加算器の出力するイネーブル信号と前記可変カウンタの出力信号との論理積を演算することを特徴とする付記7に記載の積和演算回路。
実施例1に示す積和演算回路の構成を示す図である。 実施例1に示す積和演算回路の演算方法を示す図である。 演算器の機能を説明する図である。 実施例1に示す積和演算回路の動作を示すタイムチャートである。 実施例2に示す積和演算回路の構成を示す図である。 実施例2に示す積和演算回路の動作を示すタイムチャートである。 実施例2に示す積和演算回路にダミーデータを挿入時の動作を示すタイムチャートである。 実施例3に示す積和演算回路の構成を示す図である。 実施例3に示す積和演算回路の動作を示すタイムチャートである。
符号の説明
1、50、90 積和演算回路
2、3、4、5 乗算器
6、7、8、10 加算器
9 12進カウンタ(レイテンシカウンタ)
11 セレクタ
12 論理積回路
13 33進カウンタ
14 可変カウンタ
15 除算器
16 シフトレジスタ
17 可変カウンタ設定部

Claims (5)

  1. 行列積の演算を行う積和演算回路であって、
    第1の行列の要素を行方向に所定数ごとにグループにした行ベクトルと、第2の行列の要素を列方向に前記所定数ごとにグループにした列ベクトルとの乗算を並列に実行する前記所定数の乗算器と、
    前記所定設けられた前記乗算器の次段に、前記乗算器の乗算結果を取得して加算をする乗算器用加算器と、
    前記乗算器用加算器の次段に、前記乗算器用加算器の加算結果を取得して加算をする加算器用加算器と、
    最終段の前記加算器用加算器の所定のレイテンシを決められたクロックを用いてカウントするレイテンシカウンタと、
    前記レイテンシカウンタが定の累算回数までカウントすると前記行列積の演算結果が取得可能状態であることを示す信号を出力する可変カウンタと、
    前記可変カウンタのカウント値の設定をする可変カウンタ設定部と、
    を備えることを特徴とする積和演算回路。
  2. 前記乗算器への前記行ベクトルの入力は、
    前記加算器用加算器の最終段のレイテンシを示すクロック数に基づいて前記第1の行列を所定行ごとにブロック化して、前記ブロックを構成する最初の行ベクトルから列方向に順に入力し、前記所定行に達したときに前記ブロックの先頭行の次の行ベクトルを入力し、
    前記乗算器への前記列ベクトルの入力は、
    前記第2の行列の列ごとに最初の列ベクトルから列方向に順に入力し、該列の最後に達したときに次の列の先頭の列ベクトルを入力することを特徴とする請求項1に記載の積和演算回路。
  3. 前記カウンタ設定部は、
    前記行列のサイズと前記乗算器の数に基づいて前記累算回数を算出する除算器を備えることを特徴とする請求項2に記載の積和演算回路。
  4. 前記除算器は、
    前記行列のサイズと前記乗算器の数に基づいて剰余演算をし、前記剰余演算結果があるときは前記累算回数に1を加算することを特徴とする請求項3に記載の積和演算回路。
  5. 前記乗算器から前記最終段の加算器用加算器までのレイテンシから前記除算器のレイテンシの差分だけカウンタ値の設定時間を遅延させるシフトレジスタを備えることを特徴とする請求項3または4に記載の積和演算回路。

JP2008092817A 2008-03-31 2008-03-31 積和演算回路 Active JP5262248B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008092817A JP5262248B2 (ja) 2008-03-31 2008-03-31 積和演算回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008092817A JP5262248B2 (ja) 2008-03-31 2008-03-31 積和演算回路

Publications (2)

Publication Number Publication Date
JP2009245296A JP2009245296A (ja) 2009-10-22
JP5262248B2 true JP5262248B2 (ja) 2013-08-14

Family

ID=41307089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008092817A Active JP5262248B2 (ja) 2008-03-31 2008-03-31 積和演算回路

Country Status (1)

Country Link
JP (1) JP5262248B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6102645B2 (ja) 2013-09-11 2017-03-29 富士通株式会社 積和演算回路及び積和演算システム
CA3044660C (en) * 2017-09-29 2020-06-09 Sony Corporation Information processing device and information processing method
WO2020095407A1 (ja) * 2018-11-08 2020-05-14 Tdk株式会社 積和演算器、積和演算方法、論理演算デバイスおよびニューロモーフィックデバイス

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4620944B2 (ja) * 2003-10-16 2011-01-26 キヤノン株式会社 積和演算回路及びその方法
JP4273323B2 (ja) * 2003-11-13 2009-06-03 セイコーエプソン株式会社 積和演算回路

Also Published As

Publication number Publication date
JP2009245296A (ja) 2009-10-22

Similar Documents

Publication Publication Date Title
Tenca et al. High-radix design of a scalable modular multiplier
JP5544240B2 (ja) マルチmacアーキテクチャにおける低電力firフィルタ
EP1351134A2 (en) Superpipelined arithmetic-logic unit with feedback
KR101333477B1 (ko) 프리애더 스테이지를 구비한 디지털 신호 처리 블록
JP5262248B2 (ja) 積和演算回路
Shieh et al. A new algorithm for high-speed modular multiplication design
JP4883251B1 (ja) 半導体集積回路及び指数算出方法
CN109634556B (zh) 一种乘累加器及累加输出方法
US20220365755A1 (en) Performing constant modulo arithmetic
JP2009245381A (ja) 積和演算回路、その設計装置、プログラム
KR102286101B1 (ko) 데이터 처리장치 및 내로우잉 앤 라운딩 산술연산을 행하는 방법
CN114756203A (zh) 基4 Booth乘法器及其实现方法、运算电路及芯片
Del Barrio et al. Multispeculative additive trees in high-level synthesis
Kafi et al. An efficient design of FSM based 32-bit unsigned high-speed pipelined multiplier using Verilog HDL
RU2634200C1 (ru) Устройство для ускоренного вычисления матрицы неполного параллелизма
US20230176819A1 (en) Pipelined processing of polynomial computation
CN114816329B (zh) 用于实现基4 Booth乘法器的32位加法器及其实现方法
RU2485574C1 (ru) Способ организации умножения чисел с плавающей запятой, представленных в системе остаточных классов
US7412473B2 (en) Arithmetic circuitry for averaging and methods thereof
Davis et al. Finite State Machine With Datapath Design
JP5603609B2 (ja) ロジスティック写像の演算装置
US20100191787A1 (en) Sequential Multiplier
Kamranfar et al. Configurable systolic matrix multiplication
SWETHA et al. Implementation of Area Optimized Fixed Point Circuits using Retiming Techniques
JP5317429B2 (ja) 固有方程式の求解装置、求解プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130415

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5262248

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150