JP7230744B2 - 畳込み演算方法及び演算処理装置 - Google Patents
畳込み演算方法及び演算処理装置 Download PDFInfo
- Publication number
- JP7230744B2 JP7230744B2 JP2019155433A JP2019155433A JP7230744B2 JP 7230744 B2 JP7230744 B2 JP 7230744B2 JP 2019155433 A JP2019155433 A JP 2019155433A JP 2019155433 A JP2019155433 A JP 2019155433A JP 7230744 B2 JP7230744 B2 JP 7230744B2
- Authority
- JP
- Japan
- Prior art keywords
- multiplier
- multiplicand
- convolution operation
- partial products
- value
- 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
Description
以下、本発明に係る畳込み演算方法の実施の形態について図面を参照しながら説明する。図1は、本発明の実施の形態におけるCNNにおける特徴量と重み係数との畳込み演算の処理イメージを模式的に示す図である。高精度の畳込み演算を行う場合には、被乗数部に高精度の特徴量Aが配置され、乗数部に高精度の重み係数Bが配置され、乗算が実行され、乗算結果として、A×Bが得られる。
次に、本実施の形態に係る演算処理装置の構成について説明する。図5に示すように、本実施の形態に係る演算処理装置100は、制御部50と、メモリ52と、入力バッファ部54と、データ処理部56と、出力バッファ部58とを備えている。制御部50と、メモリ52と、入力バッファ部54と、データ処理部56と、出力バッファ部58とは、バス60を介して相互に接続されている。なお、データ処理部56は、乗算器の一例である。
-x= ̄x+1
で計算できるため、後の加算器92で+1を行うようにして、変換回路74では、-1倍を作るのではなく、ビット反転を行うようにする。これにより、変換回路74では、ビット反転を行えば済むため、任意のビット幅に対して一括した演算が可能であり、変換回路74の回路面積を小さくすることができる。ただし、「 ̄x」は、xのビット反転を表す。
(-x,-y)=( ̄x+1, ̄y+1)
で計算できる。
a〔d+1〕=p1;a〔d〕=p0
Pk=(pM-1,...,pm,...,p1,p0)
a〔d〕=pk
...
a〔M+k-2〕=pk+M-2
a〔d〕= 0
具体的には、被乗数がInt4であり、乗数が3値である場合には、図22に示すように、部分積の計算単位が8bit(=4bit×2)となり、加算単位が25bit(=5bit×5)となる。
(被乗数がIntNであり、乗数が3値の場合)
挿入量=ceil(log2(レジスタ70に格納される被乗数全体のビット幅/1つの被乗数のビット幅))
(被乗数が2値であり、乗数が3値の場合)
挿入量=2
(被乗数が2値であり、乗数が2値の場合)
挿入量=3
上記実施形態の演算処理装置100で、畳込みニューラルネットワークの計算を行う場合の適用例について説明する。
(例2)2層目:2値×3値
(例3)8層目:Int8×Int8
och0: 出力チャンネル0
W0: 出力チャンネル0の重み
w0:入力チャンネル0の重み
W0w0:出力チャンネル0入力チャンネル0の重み
x=0,y=0:入出力チャンネルの画素の座標
kx=0,ky=0:重みカーネルの座標(3×3の時は 0≦kx,ky<3)
2回目:och0~och7のx=0,y=0の一部を計算する。ich1のx=0,y=0でW0のw1~W7のw1のkx=0,ky=0を、並列に計算する(並列数は8)。
3回目:och0~och7のx=0,y=0の一部を計算する。ich2のx=0,y=0でW0のw2~W7のw2のkx=0,ky=0を、並列に計算する(並列数は8)。
この時点でoch0~7のx=0,y=0の畳込みのkx=0,ky=0の計算が終了する。
4回目:och0~och7のx=0,y=0の一部を計算する。ich0のx=1,y=0でW0のw0~W7のw0のkx=1,ky=0を、並列に計算する(並列数は8)。
...
27回目:och0~och7のx=0,y=0の一部を計算する。ich2のx=2,y=2で W0のw2~W7のw2のkx=2, ky=2を、並列に計算する(並列数は8)。
この時点でoch0~och7のx=0,y=0の計算が終了する。
...
216回目:ich2のx=2,y=2でW55のw2~W63のw2のkx=2,ky=2を並列に計算する(並列数は8)。
2回目:och0x=0,y=0~x=10の一部を計算する。ich0のx=0,y=1~x=7,y=1とW0w0のkx=0,ky=1とkx=1,ky=1とkx=2,ky=1を、並列に計算する(並列数は11)。
3回目:och0x=0,y=0~x=10の一部を計算する。ich0のx=0,y=2~x=7,y=2とW0w0のkx=0,ky=2とkx=1,ky=2とkx=2,ky=2を、並列に計算する(並列数は11)。
この時点でoch0のx=0,y=0~x=10,y=0の畳込みのw0の計算が終了となる。
4回目:och0x=0,y=0~x=10の一部を計算する。ich1のx=0,y=0~x=7,y=0とW0w1のkx=0,ky=0とkx=1,ky=0とkx=2,ky=0を、並列に計算する(並列数は11)。
...
192回目:och0x=0,y=0~x=10の一部を計算する。ich63のx=0,y=0~x=7,y=0とW0w63のkx=0,ky=2とkx=1,ky=2とkx=2,ky=2を、並列に計算する(並列数は11)。
この時点で och0のx=0,y=0~x=10,y=0の畳込みが計算完了となる。レジスタ94をリセットする。
193回目:och1x=0,y=0~x=10の一部を計算する。ich0のx=0,y=0~x=7,y=0とW1w0のkx=0,ky=0とkx=1,ky=0とkx=2,ky=0を、並列に計算する(並列数は11)。
...
12288回目(3×64×64回目):och63x=0,y=0~x=10の一部を計算する。ich63のx=0, y=0~x=7,y=0とW63w63のkx=0,ky=2とkx=1,ky=2とkx=2,ky=2を、並列に計算する(並列数は11)。
この時点で出力x=0,y=0~x=10,y=0の畳込み計算が完了となる。
2回目:och0のx=0,y=0の一部を計算する。ich1のx=0,y=0でW0のw1のkx=0,ky=0を計算する。
...
32回目:och0のx=0,y=0の一部を計算する。ich31のx=0,y=0でW0のw31のkx=0,ky=0を計算する。
この時点でoch0のx=0,y=0の一部の畳込みの(kx=0,ky=0)が終了となる。
33回目:och0のx=0,y=0の一部を計算する。ich0の座標x=1,y=0でW0のw0のkx=1,ky=0を計算する。
...
288回目:och0のx=0,y=0の一部を計算する。ich31の座標x=2,y=2でW0のw2のkx=2,ky=2を計算する。
och0のx=0,y=0の計算が終了となる。レジスタ94をリセットする。
289回目:och0のx=1,y=0の一部を計算する。x=2,y=2でW55のw2~W63のw2のkx=2,ky=2を計算する。
特徴量および重み係数の部分積の計算を並列に行い、部分積すべてもしくは一部を前記特徴量および重み係数のビット幅より決定されるシフトを行った上で同時に加算するように構成してもよい。
また、図41に示すように、加算計算が完了した部分積の和を、順次、記憶素子(例えば、入力バッファ部54内のメモリ)へ書き出すように制御してもよい。これにより、加算器92とレジスタ94のビット幅を削減することができる。
上記変形例2で説明したように、加算計算が完了した部分積の和を、順次、記憶素子へ書き出すように制御した場合に、畳込み演算では、乗算と加算を複数回繰り返すため、図43に示すように、記憶素子から必要な部分積の和を読み出すことで、加算器92とレジスタ94のビット幅を削減することができる。
変換回路74が、ビット反転ではなく、-1倍を作る回路となるように構成してもよい。この場合には、変換回路74を選んだ場合の後段の加算器95での+1が不要となる。
被乗数部62、乗数部64、及び加算部66を、Boothエンコーダを用いて構成した場合を例に説明したが、これに限定されるものではなく、被乗数部62、乗数部64、及び加算部66を、Boothエンコーダを用いずに構成してもよい。例えば、被乗数部62、乗数部64、及び加算部66を、Wallaceツリーを用いて構成してもよい。
上記実施の形態において、被乗数部62及び乗数部64を入れ替えるように構成してもよい。
また、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
52 メモリ
54 入力バッファ部
56 データ処理部
58 出力バッファ部
60 バス
62 被乗数部
64 乗数部
66 加算部
70 レジスタ
72、74、76、78、80 変換回路
82 マルチプレクサ
84、94、97 レジスタ
86 シフト回路
88 エンコーダ
90 データ整形部
92、95 加算器
96 選択回路
100 演算処理装置
Claims (8)
- 特徴量が1次元以上の格子状に配置された特徴マップに対して、重み係数が1次元以上の格子状に配置されたフィルタをスライドさせながら畳込み演算を行うための畳込み演算方法であって、
乗算器の被乗数部及び乗数部の何れか一方に少なくとも1つの前記特徴量を配置し、前記乗算器の乗数部及び被乗数部の何れか他方に少なくとも1つの前記重み係数を配置して、前記特徴量と前記重み係数との乗算、及び乗算結果の加算を繰り返し実行して、前記畳込み演算を行うことを含み、
前記被乗数部及び乗数部の何れか一方に配置される値は、前記被乗数部及び乗数部の何れか他方と同じビット幅の値であるか、又は、-1、0、及び+1のいずれかであり、
前記乗数部に配置される値のビット幅又は値の種類数に応じて、Boothエンコーダの出力を切り替え、前記Boothエンコーダの出力に応じて定まる、前記被乗数部に配置される値への係数と、前記被乗数部に配置された値とから求められる部分積を加算することを繰り返し実行することにより、前記畳込み演算を実行する
畳込み演算方法。 - 前記乗数部に配置された値の一部に応じて、前記被乗数部に配置された値の-2倍、ビット反転、0倍、1倍、及び2倍のいずれかから選択した部分積を求め、前記部分積を加算することを繰り返し実行することにより、前記畳込みを実行し、
前記ビット反転が選択された場合、前記部分積を加算する際に更に1を加算する請求項1記載の畳込み演算方法。 - 前記被乗数部に配置される複数の値と、前記乗数部に配置される値とから求められる複数の部分積を、少なくとも1つの加算器で同時に加算するために、前記複数の部分積を、前記少なくとも1つの加算器に分配すると共に、加算時の桁上げ出力に応じて、前記部分積毎に所定ビットのスペースを挿入して、前記加算器に入力する請求項1又は2記載の畳込み演算方法。
- 前記被乗数部に配置される複数の値と、前記乗数部に配置される値との部分積の計算を並列に行う請求項3記載の畳込み演算方法。
- 前記部分積の加算が完了した場合に、前記部分積の加算により求められた和を、順次、メモリへ書き出す請求項1~請求項4の何れか1項記載の畳込み演算方法。
- 前記部分積の計算、及び前記部分積の加算を繰り返し実行する場合において、順次、前記メモリから前記和を読み出し、
前記メモリから読み出した和に対して、前記部分積を加算する請求項5記載の畳込み演算方法。 - 特徴量が1次元以上の格子状に配置された特徴マップに対して、重み係数が1次元以上の格子状に配置されたフィルタをスライドさせながら畳込み演算を行うための演算処理装置であって、
被乗数部及び乗数部を備えた乗算器と、
加算器と、
乗算器の被乗数部及び乗数部の何れか一方に少なくとも1つの前記特徴量を配置し、前記乗算器の乗数部及び被乗数部の何れか他方に少なくとも1つの前記重み係数を配置して、前記特徴量と前記重み係数との乗算、及び乗算結果の加算を繰り返し実行して、前記畳込み演算を行うように、前記乗算器及び前記加算器を制御する制御部と、
を含み、
前記被乗数部及び乗数部の何れか一方に配置される値は、前記乗数部及び被乗数部の何れか他方と同じビット幅の値であるか、又は、-1、0、及び+1のいずれかであり、
前記乗数部に配置される値のビット幅又は値の種類数に応じて、Boothエンコーダの出力を切り替え、前記Boothエンコーダの出力に応じて定まる、前記被乗数部に配置される値への係数と、前記被乗数部に配置された値とから求められる部分積を加算することを繰り返し実行することにより、前記畳込み演算を実行する
演算処理装置。 - ニューラルネットワークを用いた画像処理の一部として、前記畳込み演算を行う請求項7記載の演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019155433A JP7230744B2 (ja) | 2019-08-28 | 2019-08-28 | 畳込み演算方法及び演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019155433A JP7230744B2 (ja) | 2019-08-28 | 2019-08-28 | 畳込み演算方法及び演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021033813A JP2021033813A (ja) | 2021-03-01 |
JP7230744B2 true JP7230744B2 (ja) | 2023-03-01 |
Family
ID=74676637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019155433A Active JP7230744B2 (ja) | 2019-08-28 | 2019-08-28 | 畳込み演算方法及び演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7230744B2 (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008131336A (ja) | 2006-11-21 | 2008-06-05 | Nec Electronics Corp | フィルタ演算器及び動き補償装置 |
JP2016045685A (ja) | 2014-08-22 | 2016-04-04 | 富士通株式会社 | 乗算回路及びその乗算方法 |
CN105824601A (zh) | 2016-03-31 | 2016-08-03 | 同济大学 | 一种支持多模式乘法器的部分积复用方法 |
WO2019023046A1 (en) | 2017-07-24 | 2019-01-31 | Tesla, Inc. | ACCELERATED MATHEMATICAL MOTOR |
US20190056916A1 (en) | 2018-10-15 | 2019-02-21 | Aditya Varma | Method and apparatus for efficient binary and ternary support in fused multiply-add (fma) circuits |
JP2019079183A (ja) | 2017-10-23 | 2019-05-23 | 日立オートモティブシステムズ株式会社 | 演算装置及び車載制御装置 |
US20190227769A1 (en) | 2018-01-19 | 2019-07-25 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with booth multiplication |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3579087B2 (ja) * | 1994-07-08 | 2004-10-20 | 株式会社日立製作所 | 演算器およびマイクロプロセッサ |
JP3526135B2 (ja) * | 1996-05-24 | 2004-05-10 | 株式会社ルネサステクノロジ | ディジタル信号処理装置 |
-
2019
- 2019-08-28 JP JP2019155433A patent/JP7230744B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008131336A (ja) | 2006-11-21 | 2008-06-05 | Nec Electronics Corp | フィルタ演算器及び動き補償装置 |
JP2016045685A (ja) | 2014-08-22 | 2016-04-04 | 富士通株式会社 | 乗算回路及びその乗算方法 |
CN105824601A (zh) | 2016-03-31 | 2016-08-03 | 同济大学 | 一种支持多模式乘法器的部分积复用方法 |
WO2019023046A1 (en) | 2017-07-24 | 2019-01-31 | Tesla, Inc. | ACCELERATED MATHEMATICAL MOTOR |
JP2019079183A (ja) | 2017-10-23 | 2019-05-23 | 日立オートモティブシステムズ株式会社 | 演算装置及び車載制御装置 |
US20190227769A1 (en) | 2018-01-19 | 2019-07-25 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with booth multiplication |
US20190056916A1 (en) | 2018-10-15 | 2019-02-21 | Aditya Varma | Method and apparatus for efficient binary and ternary support in fused multiply-add (fma) circuits |
Also Published As
Publication number | Publication date |
---|---|
JP2021033813A (ja) | 2021-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20070039490A (ko) | Simd 어레이 프로세서를 위한 비트 직렬 프로세싱 소자 | |
TWI512686B (zh) | 用於通用性運算之紋理單元 | |
US7257609B1 (en) | Multiplier and shift device using signed digit representation | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
US10853037B1 (en) | Digital circuit with compressed carry | |
US20230394626A1 (en) | ASTC Interpolation | |
US6370556B1 (en) | Method and arrangement in a transposed digital FIR filter for multiplying a binary input signal with tap coefficients and a method for designing a transposed digital filter | |
US9082476B2 (en) | Data accessing method to boost performance of FIR operation on balanced throughput data-path architecture | |
US6675286B1 (en) | Multimedia instruction set for wide data paths | |
JP7230744B2 (ja) | 畳込み演算方法及び演算処理装置 | |
CN110858137A (zh) | 除以整数常数的浮点除法 | |
CN114281755B (zh) | 一种面向向量处理器的半精度向量化卷积方法及系统 | |
JP2023542261A (ja) | 複数のアキュムレータを有するシストリックアレイセル | |
TWI733334B (zh) | 卷積神經網路運算裝置及其運算的方法 | |
KR101527103B1 (ko) | 이산 코사인 변환 장치 및 방법 | |
JPH0816903B2 (ja) | 積和演算回路 | |
JP2001084242A (ja) | 可変演算プロセッサ | |
US11295485B2 (en) | ASTC interpolation | |
US20030126169A1 (en) | Progressive two-dimensional (2D) pyramid filter | |
CN115328440A (zh) | 一种基于2d脉动阵列的通用稀疏矩阵乘法实现方法及装置 | |
CN115079997A (zh) | 对数执行硬件高效无偏舍入的方法 | |
Deepika et al. | Low power FIR filter design using truncated multiplier | |
JPH04307662A (ja) | 離散コサイン変換装置および逆離散コサイン変換装置 | |
KR20040100044A (ko) | 고속의 저전력 이산 코사인 변환 장치 및 방법 | |
Gil et al. | Accelerating a modified Gaussian pyramid with a customized processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211217 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221108 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221228 |
|
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: 20230117 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230130 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7230744 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |