JP5262248B2 - 積和演算回路 - Google Patents
積和演算回路 Download PDFInfo
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
- Image Processing (AREA)
Description
例えば、演算時間を短縮するために、行列とベクトルの積を複数の乗算器と加算きで求める積和演算回路があるが、行列が大きくなると複数の乗算器と加算器を使用するため回路規模が縮小できない。
に達したときに次の列の先頭の列ベクトルを入力する。
(実施例1)
通常の行列演算を実行する場合、例えば、行列A(132×132)と行列B(132×132)を積和演算するには式1に示す計算をすることにより行列C(132×132)の1要素(例えばC0,0)を算出し同様に他の要素も算出する。
1を示し、132並列から4並列にしても積和演算性能を維持できる。
図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についても列ベクトルにする。
図3は、演算器である乗算器2〜5、加算器6〜8、10の機能を示す図である。基本的に、各演算器は3入力、2出力のポートを備えている。入力ポートは、データを入力する2ポートと、演算を有効にするイネーブル信号を取得する1ポートの計3ポートある。出力ポートは、データを出力するポートと、次段に接続される演算を有効にするイネーブル信号を出力するための1ポートの計2ポートある。また、演算器内に示されている数値1はスループットを示し、数値2はレイテンシを示している。
alidポートにイネーブル信号ardy2を出力する。
12進カウンタ9(レイテンシカウンタ)は、加算器8の出力レイテンシを計測(カウント)するカウンタであり、加算器8の出力データイネーブル信号であるardy2をカウントし12カウントすると、carry信号であるcount_upを「1」にする。なお、本例では加算器8のレイテンシが12であるので12進カウンタを用いているが、レイテンシが異なる場合はレイテンシに合わせたカウンタにすることで対応できる。
セレクタ11は、2入力から1つを選択するセレクタであり、加算器10への入力データを選択するセレクタである。加算器10のBポートへは、例えばcount0信号が「1」の場合は値「0」を選択し、それ以外の場合は加算器10の演算結果であるフィードバック値adata3を選択する。
図4は、積和演算回路1において1組の行列演算を実行した場合の動作を示すタイムチャートである。また、33進カウンタ13のカウント値が「30」から後の波形を示している。そして、図4のタイムチャートには縦軸に示された各信号の名称に対応した波形が示され、横軸には時間が示されている。
のカウント値が「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回の割合で出力される。
図5に示す回路は、実施例1に示した積和演算回路1を改良した積和演算回路50である。積和演算回路50は、図1に示した33進カウンタ13を可変カウンタ14に変更した回路である。
図6は、図5に示した積和演算回路50において2組の異なるサイズの行列演算を連続して実行した場合のタイムチャートである。
その後、次の行列を演算するために次の要素が入力され、それと同時に、可変カウンタ14が33進カウンタから16進カウンタに変更される。
(実施例4)
図8に示した積和演算回路90は、図5に示した積和演算回路50を改良して可変カウンタ設定部17を備えた回路である。行列サイズの可変に対応のために、行列サイズ用の入力信号(MTRX_SZIZE)を入力するポートを、図5のNを入力するポートに変
わって設ける。図9に示すように可変カウンタ設定部17は除算器15とシフトレジスタ16を備え、行列サイズから積和演算結果の累算回数を算出し、その累算回数を可変カウンタ14にセットする。
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にセットする。
可変カウンタ14のカウンタ値が「30」の期間に、MTRIX_SIZEは「132」であり、nの値は「33」である。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
(付記1)
行列積の演算を行う積和演算回路であって、
第1の行列の要素を行方向に所定数ごとにグループにした行ベクトルと、第2の行列の要素を列方向に前記所定数ごとにグループにした列ベクトルとの積算を並列に実行する前記所定数の乗算器と、
前記所定の要素数と同じ数量設けられた前記乗算器の次段に、前記乗算器の乗算結果を取得して加算をする乗算器用加算器と、
前記乗算器用加算器の次段に、前記乗算器用加算器の加算結果を取得して加算をする加算器用加算器と、
最終段の前記加算器用加算器のレイテンシを計測するレイテンシカウンタと、
前記レイテンシカウンタが前記最終段の加算器用加算器のレイテンシを計測するごとにカウントして、所定の累算回数までカウントすると前記行列積の演算結果が取得可能状態であることを示す信号を出力する可変カウンタと、
前記可変カウンタのカウント値の設定をする可変カウンタ設定部と、
を備えることを特徴とする積和演算回路。
(付記2)
前記乗算器への前記行ベクトルの入力は、
前記加算器用加算器の最終段のレイテンシを示すクロック数に基づいて前記第1の行列を所定行ごとにブロック化して、前記ブロックを構成する最初の行ベクトルから列方向に順に入力し、前記所定行に達したときに前記ブロックの先頭行の次の行ベクトルを入力し、
前記乗算器への前記列ベクトルの入力は、
前記第2の行列の列ごとに最初の列ベクトルから列方向に順に入力し、該列の最後に達したときに次の列の先頭の列ベクトルを入力することを特徴とする付記1に記載の積和演算回路。
(付記3)
前記カウンタ設定部は、
前記行列のサイズと前記乗算器の数に基づいて前記累算回数を算出する除算器を備えることを特徴とする付記2に記載の積和演算回路。
(付記4)
前記除算器は、
前記行列のサイズと前記乗算器の数に基づいて剰余演算をし、前記剰余演算結果があるときは前記累算回数に1を加算することを特徴とする付記3に記載の積和演算回路。
(付記5)
前記乗算器から前記最終段の加算器用加算器までのレイテンシから前記除算器のレイテンシの差分だけカウンタ値の設定時間を遅延させるシフトレジスタを備えることを特徴とする付記3または4に記載の積和演算回路。
(付記6)
前記可変カウンタの出力信号により、前記最終段の加算器用加算器の出力結果と自身の出力結果を加算するフィードバック加算器を備えることを特徴とする付記4に記載の積和演算回路。
(付記7)
前記可変カウンタの出力信号が有効であるときは前記フィードバック加算器は前記最終段の加算器用加算器の出力結果を出力し、無効であるときは前記最終段の加算器用加算器の出力結果と前記フィードバック加算器の出力結果を加算することを特徴とする付記6に記載の積和演算回路。
(付記8)
前記フィードバック加算器の出力するイネーブル信号と前記可変カウンタの出力信号との論理積を演算することを特徴とする付記7に記載の積和演算回路。
2、3、4、5 乗算器
6、7、8、10 加算器
9 12進カウンタ(レイテンシカウンタ)
11 セレクタ
12 論理積回路
13 33進カウンタ
14 可変カウンタ
15 除算器
16 シフトレジスタ
17 可変カウンタ設定部
Claims (5)
- 行列積の演算を行う積和演算回路であって、
第1の行列の要素を行方向に所定数ごとにグループにした行ベクトルと、第2の行列の要素を列方向に前記所定数ごとにグループにした列ベクトルとの乗算を並列に実行する前記所定数の乗算器と、
前記所定数設けられた前記乗算器の次段に、前記乗算器の乗算結果を取得して加算をする乗算器用加算器と、
前記乗算器用加算器の次段に、前記乗算器用加算器の加算結果を取得して加算をする加算器用加算器と、
最終段の前記加算器用加算器の所定のレイテンシを決められたクロックを用いてカウントするレイテンシカウンタと、
前記レイテンシカウンタが所定の累算回数までカウントすると前記行列積の演算結果が取得可能状態であることを示す信号を出力する可変カウンタと、
前記可変カウンタのカウント値の設定をする可変カウンタ設定部と、
を備えることを特徴とする積和演算回路。 - 前記乗算器への前記行ベクトルの入力は、
前記加算器用加算器の最終段のレイテンシを示すクロック数に基づいて前記第1の行列を所定行ごとにブロック化して、前記ブロックを構成する最初の行ベクトルから列方向に順に入力し、前記所定行に達したときに前記ブロックの先頭行の次の行ベクトルを入力し、
前記乗算器への前記列ベクトルの入力は、
前記第2の行列の列ごとに最初の列ベクトルから列方向に順に入力し、該列の最後に達したときに次の列の先頭の列ベクトルを入力することを特徴とする請求項1に記載の積和演算回路。 - 前記カウンタ設定部は、
前記行列のサイズと前記乗算器の数に基づいて前記累算回数を算出する除算器を備えることを特徴とする請求項2に記載の積和演算回路。 - 前記除算器は、
前記行列のサイズと前記乗算器の数に基づいて剰余演算をし、前記剰余演算結果があるときは前記累算回数に1を加算することを特徴とする請求項3に記載の積和演算回路。 - 前記乗算器から前記最終段の加算器用加算器までのレイテンシから前記除算器のレイテンシの差分だけカウンタ値の設定時間を遅延させるシフトレジスタを備えることを特徴とする請求項3または4に記載の積和演算回路。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4620944B2 (ja) * | 2003-10-16 | 2011-01-26 | キヤノン株式会社 | 積和演算回路及びその方法 |
JP4273323B2 (ja) * | 2003-11-13 | 2009-06-03 | セイコーエプソン株式会社 | 積和演算回路 |
-
2008
- 2008-03-31 JP JP2008092817A patent/JP5262248B2/ja active Active
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 |