[go: up one dir, main page]

JP7023149B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP7023149B2
JP7023149B2 JP2018054284A JP2018054284A JP7023149B2 JP 7023149 B2 JP7023149 B2 JP 7023149B2 JP 2018054284 A JP2018054284 A JP 2018054284A JP 2018054284 A JP2018054284 A JP 2018054284A JP 7023149 B2 JP7023149 B2 JP 7023149B2
Authority
JP
Japan
Prior art keywords
input
product
value
data
input terminal
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
JP2018054284A
Other languages
English (en)
Other versions
JP2019168783A (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.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018054284A priority Critical patent/JP7023149B2/ja
Priority to US16/124,903 priority patent/US10802799B2/en
Publication of JP2019168783A publication Critical patent/JP2019168783A/ja
Application granted granted Critical
Publication of JP7023149B2 publication Critical patent/JP7023149B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

本発明の実施形態は、半導体装置に関する。
従来より、行列と行列の乗算(以降、「行列積」と呼ぶ)を行なう半導体装置が知られている。行列積は、画像処理等のデジタル信号処理で必要とされる基本的な演算である。ディープニューラルネットワーク(Deep Neural Network)の計算も大部分は、行列積である。ディープニューラルネットワークにおいて、行列積に要求される精度は、他の行列積の演算に要求される精度に比べて低い。また、ディープニューラルネットワークの処理の中でも、行列積に要求される精度は、使われる場面によって変化する。
例えば、学習のときよりも、推論のときの方が、行列積に要求される精度は低いことが知られている。また、同じ推論のときであっても、ディープニューラルネットワークの層によって要求される精度が違ったり、同じ層の中でも演算によって要求される精度が違うこともある。
一方、行列積は、それぞれ独立した乗算および加算の組み合わせで処理されるため、並列化が容易である。従って、複数の演算器を用いて並列に処理することも、低電力化や高速化などの効率改善に効果的である。
データ処理の効率化を図ることができる半導体装置を提供する。
実施形態の半導体装置は、第1の入力端子と、第2の入力端子と、第1の入力端子から入力された値と、第2の入力端子から入力された値との積を計算する乗算器と、乗算器の出力を積算して出力するアキュームレータと備える演算回路を複数具備する。複数の演算回路は、複数行と複数列による二次元配列状に配置され、前記複数行の各行における第1数の演算回路のそれぞれの前記第1の入力端子には、第1入力データの行方向のビット数のうち前記第1数のビット数の第1ビットデータが共通に入力され、前記複数列の各列における第2数の演算回路のそれぞれの前記第2の入力端子には、第2入力データの列方向のビット数のうち前記第2数のビット数の第2ビットデータが共通に入力される。実施形態の半導体装置は、前記複数の演算回路の前記アキュームレータの出力にそれぞれ係数をかけた結果を足し合わせて積和演算結果を求める処理回路をさらに具備する。
実施形態に係る半導体装置100を示す図である。 実施形態に係る半導体装置100の積和演算回路1の第1の例を示す図である。 実施形態に係る半導体装置100の積和演算回路1aの第2の例を示す図である。 実施形態に係る半導体装置100の積和演算回路1bの第3の例を示す図である。 図5A及び図5B共に、入力される入力データw、xと演算器u0,0~u15,15との関係を示す図である。 図5A及び図5B共に、入力される入力データw、xと演算器u0,0~u15,15との関係を示す図である。 LUT4を示す図である。 第4の例の積和演算回路1に対する後処理演算を説明するためのフローチャートである。
以下、実施の形態について、図面を参照して説明する。
1 半導体装置の構成
図1は、実施形態に係る半導体装置100を示す図である。
図1に示すように、積和演算回路1には、メモリ2及び後処理回路3が接続されている。積和演算回路1には、メモリ2に記憶された2つのデータ(データX、W)が入力される。
データXは、t行r列の行列形式で表現されるデータであり、データWは、m行t列の行列形式で表現されるデータである(t,r,mは0又は正の整数)。実施形態では、tは時刻(読み出しサイクル)であるものとする。
2つの行列を
W={wm,t0≦m≦M-1,0≦t≦T-1
X={xt,r0≦t≦T-1,0≦r≦R-1
とする。
ここで、T-1は読み出しサイクルの最大値、R-1はデータXの行列の最大列数、M-1はデータWの行列の最大行数である。
積和演算回路1は、メモリ2から入力される2つのデータ(W,X)の行列演算を行ない、その計算結果を後処理回路3に出力する。具体的には、積和演算回路1は、複数の演算器を有し、これら各演算器は乗算器とアキュームレータとを有し、アレイ状に配置されている。
計算する行列をY=WXとすると、Y={ym,r0≦m≦M-1,0≦r≦R-1の各要素に対する演算は、次のような積和演算の形となる。
Figure 0007023149000001
すなわち、積和演算回路1は、積和演算結果を、後処理回路3に出力する。
メモリ2は、SRAM、DRAM、SDRAM、NANDフラッシュメモリ、3次元構造のフラッシュメモリ、MRAM、レジスタ、ラッチ回路、を含む、半導体メモリであればよい。
後処理回路3は、積和演算回路1からのm行r列に対応する時刻T-1での各演算器の出力に対して、各演算器に対して設定され得る所定の係数を使用して演算を行い、演算結果に出力インデックスを付してプロセッサ5に出力する。このとき、後処理回路3は、必要に応じて、ルックアップテーブル(LUT)4から所定の係数及び出力インデックスを取得する。
なお、後処理が必要とされない場合には、後処理回路3を設ける必要なく、積和演算回路1からの出力はプロセッサ5に出力される。
LUT4は、積和演算回路1の各演算器に対する所定の係数及び出力インデックスを格納する。なお、LUT4は、記憶回路であっても良い。
プロセッサ5は、後処理回路3により処理された各演算器の積和演算結果を受信する。また、プロセッサ5は、LUT4に格納され、各演算器に対して設定される所定の係数や出力インデックスを設定可能である。
2 積和演算回路1の構成及び半導体装置の動作
2-1 第1の例の積和演算回路(ビット限定なしの積和演算回路)
図2は、実施形態に係る半導体装置100の積和演算回路1の第1の例を示す図である。
図2に示すように、M×R個の各演算器u0,0~uM-1,R-1がアレイ状に並列に配置される。演算器um,rは、m行r列に位置する演算器を表わす。各演算器u0,0~uM-1,R-1は、乗算器11、加算器12及びレジスタ13を有する。
各演算器u0,0~uM-1,R-1の乗算器11は第1の入力端子及び第2の入力端子を有する。演算器um,rの乗算器11の第1の入力端子は、m行に配置された他の演算器と共有のデータ線に接続され、第2の入力端子は、r列に配置された他の演算器と共有のデータ線に接続される。
すなわち、演算器um,rの一部の乗算器11の第1の入力端子から入力される第1入力は、データwm,tのデータ線を行方向で共有し、乗算器11の第2の入力端子から入力される第2入力は、データxt,rのデータ線を列方向で共有する。
従って、時刻tにおいて、演算器u0,0、u0,1、…、u0,R-1の乗算器11の第1入力はデータw0,tの値を共有し、演算器u1,0、u1,1、…、u1,R-1の乗算器11の第1入力はデータw1,tの値を共有し、・・・・、演算器uM-1,0、uM-1,1、…、uM-1,R-1の乗算器11の第1入力はデータwM-1,tの値を共有する。
同様に、時刻tにおいて、演算器u0,0、u1,0、・・・、uM-1,0の乗算器11の第2入力はデータxt,0の値を共有し、演算器u0,1、u1,1、…、uM-1,1の乗算器11の第2入力はデータxt,1の値を共有し、・・・・、演算器u0,R-1、u1,R-1、…、uM-1,R-1の乗算器11の第2入力はデータXt,R-1の値を共有する。
各演算器u0,0~uM-1,R-1の乗算器11は、第1入力に入力されたデータと、第2入力に入力されたデータとを乗算して、その乗算結果を加算器12に出力する。
従って、時刻tにおける演算器u0,0、u0,1、…、u0,R-1の各乗算器11は、それぞれ第1入力のデータw0,tの値と第2入力のデータxt,0、xt,1、・・・xt,R-1とを乗算した各乗算結果を出力する。
また、時刻tにおける演算器u0,0、u1,0、…、uM-1,0の各乗算器11は、それぞれ第2入力のデータxt,0の値と第1入力のデータw0,t、w1,t、・・・wM-1,tとを乗算した各乗算結果を出力する。
各演算器u0,0~uM-1,R-1の加算器12とレジスタ13とは、アキュームレータを構成する。各演算器u0,0~uM-1,R-1の加算器12は、乗算器11からの乗算結果と、レジスタ13に格納された時刻t-1(時刻tの1サイクル前)でのレジスタ13の値(アキュームレータの値)とを加算する。
レジスタ13は、時刻t-1における加算器12からの乗算結果を保持し、時刻tのサイクルで加算器12から出力された加算結果を保持する。
このように、M×R個の演算器がアレイ状に並列に配置され、時刻tに、m行にあるr個の演算器Uに対してwm,tが入力され、r列にあるm個の演算器に対してxt,rが入力される。この結果、第m行、第r列の演算器では、時刻tに以下の計算が実行される。

m、r、t = ym、r、t-1 + wm,t × xt,r
…(2)
ここで、ym、r、tは、時刻tに演算器um,rのレジスタ13に新たに格納された値である。この結果Tサイクルで、(1)式の演算が完了する。つまり、M×R個の演算器が、それぞれTサイクルかけてym,rを計算することで、行列式Y=M×Xを計算することができる。
各演算器um,rの時刻tにおけるレジスタ13の値は、後処理回路3に出力される。第1の例では、積和演算回路1から出力された各演算器um,rの出力は、後処理が行なわれずにプロセッサ5に出力される。
2-2 第2の例の積和演算回路(乗算器11が1ビットの積和演算回路1)
図3は、実施形態に係る半導体装置100の積和演算回路1aの第2の例を示す図である。第2の例の積和演算回路1aは、乗算器11が1ビットである場合を示す。
図3は、図2に示した乗算器11が1ビットの乗算器である場合を示す図である。1ビットの乗算器は、0×0=0、0×1=0、1×0=0、1×1=1の4通りの計算ができればよいが、これは2入力ANDの論理そのものである。第2の例では、各演算器uam,rの積和演算回路1aの乗算器にAND論理ゲート21を使用する。
図3において、各演算器uam,rの積和演算回路1aのAND論理ゲート21の2つの入力は1ビットであり、1ビットのデータwm,t及びxt,rが入力される。AND論理ゲート21の出力は1ビットであり、データwm,t及びxt,rのAND論理が出力される。
加算器12の1つの入力は1ビットであり、AND論理ゲート21からの1ビットの出力データが入力される。加算器12の他の入力は多ビットであり、レジスタ13からの時刻t-1における多ビットのレジスタ13の値が入力される。加算器12は、AND論理ゲート21からの1ビットの出力データと、レジスタ13からの時刻t-1における多ビットのレジスタ13の値とを加算した多ビットのデータを出力する。
レジスタ13の入力は多ビットであり、時刻tにおける、加算器12からの1ビットの出力データが加算器12で加算された多ビットの出力データを保持する。時刻T(サイクル)における各演算器uam,rの積和演算回路1aのレジスタ13の値は、後処理回路3に出力される。
第2の例では、積和演算回路1aから出力された各演算器uam,rの出力は、後処理が行なわれずにプロセッサ5に出力される。
なお、1ビットのデータwm,t及びxt,rが(1,0)で表現される場合には、AND論理ゲート21はAND論理ゲートであるが、(+1,-1)で表現される場合には、AND論理ゲート21はXNOR論理ゲートとなる。
また、AND論理ゲート21と、XNOR論理ゲート(図示せず)と、レジスタの設定によりAND論理ゲート21及びXNOR論理ゲートの何れかを選択する選択回路(図示せず)と、を各演算器uam,rに設けても良い。
また、入力が1ビットのアキュームレータは、図3に示すように、加算器12及びレジスタ13で構成しても良いが、非同期カウンタを使用しても良い。
2-3 第3の例の積和演算回路(多ビットの場合1:入力されるデータwm,t,xt,rが3ビットの場合の積和演算回路)
図4は、実施形態に係る半導体装置100の積和演算回路1bの第3の例を示す図である。第3の例の積和演算回路1bは、入力される各データw0,t,xt,0が3ビットの場合を示す。演算器ub0,0~u2,2の構成は、図3に示した演算器uaと同じである。
図4に示すように、入力されるデータw0,t,xt,0が3ビットの場合の積和演算回路1は、データw0,t (0)のデータ線にはデータw0,tの0ビット目(LSB)の値が入力され、データw0,t (1)のデータ線にはデータw0,tの1ビット目の値が入力され、データw0,t (2)のデータ線にはデータw0,tの2ビット目(MSB)の値が入力される。
また、データxt,0 (0)のデータ線にはデータxt,0の0ビット目(LSB)の値が入力され、データxt,0 (1)のデータ線にはデータxt,0の1ビット目の値が入力され、データxt,0 (2)のデータ線にはデータxt,0の2ビット目(MSB)の値が入力される。
例えば、時刻tにおいて、データw0,tが3ビットで「011」で表わされる場合、データw0,t (0)のデータ線には「1」、データw0,t (1)のデータ線には「1」、データw0,t (2)のデータ線には「0」が入力される。
また、時刻tにおいて、データxt,0が3ビットで「110」で表わされる場合、データxt,0 (0)のデータ線には「0」、データxt,0 (1)のデータ線には「1」、データxt,0 (2)のデータ線には「1」が入力される。
すなわち、データwm,t、xt,rが3ビットの場合、以下のように表現することができる。なお、ここでは、出力の1要素のみに注目することとし、これまでの説明で使ったm,rの添え字は省略する。w (2)等の値は、全て1ビットの値(0又は1)である。
=w (2)×2+w (1)×2+w (0)×2
…(3)
=x (2)×2+x (1)×2+x (0)×2
…(4)
このとき、(1)式は、次のようになる。
Figure 0007023149000002
(5)式を見ると、1行目の3つのシグマではw(t) (2)が、2行目の3つのシグマではw(t) (1)が、3行目の3つのシグマではw(t) (0)が利用されている。また、1列目の3つのシグマにはx(t) (2)が、2列目の3つのシグマにはx(t) (1)が、3列目の3つのシグマにはx(t) (0)が利用されている。すなわち、図4に示した演算器ub0,0~u2,2の構成は、(5)式における各シグマの項の演算に相当する。
各演算器ub0,0~u2,2の出力は、後処理回路3に出力される。後処理回路3では、各シグマにそれぞれ対応する2のべき乗の係数を掛けて足し合わせることで、最終的な多ビットの積和演算の結果が得られる。なお、後処理回路3における2のべき乗の係数を掛ける処理は、シフト演算で容易に実行することができる。
ディープニューラルネットワークを含め多くの場合、Tは100を超えるような比較的大きな値である。そのためシグマの項の1ビットの積和演算に対して、最後に2のべき乗の係数をかけてシグマ同士を足し合わせる処理(後処理と呼ぶ)は、低頻度でしか実行されない。後処理の実行方法については、例えば逐次的に実行する等、適宜選択しても良い。
・負の数の取り扱いについて
データの値を2の補数表現で扱う場合、(3)、(4)式は次のようになる。

=-w (2)×2+w (1)×2+w (0)×2
…(3’)
=-x (2)×2+x (1)×2+x (0)×2
…(4’)
この時、(5)式は次のようになる。
Figure 0007023149000003
つまり、後処理回路3における後処理の際に、係数を負にすれば良く、図4と同様の構成を利用することができる。
2-4 第4の例の積和演算回路(多ビットの場合2:入力されるデータwm,t,が異なるビット、xt,rが4ビットの場合の積和演算回路)
次に、第4の例の積和演算回路1について説明する。
第4の例では、積和演算回路1が16×16の構成の演算器アレイの場合について説明する。
入力データであるXは32行4列の行列とし、全ての要素が4ビットで表現されているとする。入力データであるWは15行32列の行列とし、各行の要素のビット幅がそれぞれ{1,2,4,2,2,1,2,3,2,2,3,2,1,3,2}であるとする。つまり、例えば、0行目の32要素は1ビット、1行目の32要素は2ビット、2行目の32要素は4ビット、3行目の32要素は2ビット、・・・、ということを表す。
行列積Y=WXは15行4列の行列となる。図5A及び図5Bは入力データW、Xの各値をどのように演算器アレイに入力するかを示している。両図中のu0,0~u15,15はそれぞれ1個の演算器を示している。xt,r (b)は、Xのt行r列のbビット目の値を意味し、wm,t (b)は、Wのm行t列のbビット目の値を意味する。すなわち、t=0は、Xの0行目且つWの0列目に対応し、t=31は、Xの31行目且つWの31列目に対応する。
図5Aのとおり、Xは4列×4ビットがちょうど演算器の列数16に収まっているが、Wは7行目の2ビット目と1ビット目までで演算器uの行数16を使い切っていることがわかる。従って、7行目の0ビット目を含むWの残りの行については後で計算を行なう。
tは初期値が0で、31になるまで1サイクルに1ずつインクリメントする。y(um,r)を、演算器um,rのアキューミュレータ出力とすると、例えば、32サイクル後には、y0,0に含まれるy(u0,0)からy(u0,3)は、(6)式に示す値となる。
Figure 0007023149000004
これらに対して、後処理回路3において、以下の演算を行なうことで、y0,0を求めることができる。
0,0=2×y(u0,0)+2×y(u0,1)+2×y(u0,2)+2×y(u0,3
同様に、32サイクル後には、y1,0に含まれるy(u1,0)からy(u2,3)は、(7)式に示す値となる。
Figure 0007023149000005
これから、y1,0を以下のように計算することができる。
1,0=2×y(u1,0)+2×y(u1,1)+2×y(u1,2)+2×y(u1,3
+2×y(u2,0)+2×y(u2,1)+2×y(u2,2)+2×y(u2,3
…(8)
このように、各演算器um,rの結果それぞれに対する、係数(2のべき乗)の値及び出力のどの要素に対応するか(インデックス)は、互いに異なる。例えば、係数の値と、出力インデックスを以下のように設定する。
y(u0,0):係数=2、出力インデックス=(0,0)
y(u0,1):係数=2、出力インデックス=(0,0)
y(u0,2):係数=2、出力インデックス=(0,0)
y(u0,3):係数=2、出力インデックス=(0,0)
y(u1,0):係数=2、出力インデックス=(1,0)
y(u1,1):係数=2、出力インデックス=(1,0)
y(u1,2):係数=2、出力インデックス=(1,0)
y(u1,3):係数=2、出力インデックス=(1,0)
y(u1,0):係数=2、出力インデックス=(1,0)
y(u1,1):係数=2、出力インデックス=(1,0)
y(u1,2):係数=2、出力インデックス=(1,0)
y(u1,3):係数=2、出力インデックス=(1,0)
…(9)
つまり、実施形態では、(m,r)をアドレスとする係数と出力インデックスを格納したLUT4を用意する。図6は、LUT4を示す図である。
図6に示すように、LUT4には、coef[m,r]及びindex[m,r]が格納される。coef[m,r]はm行r列の乗算器um,rの出力y(u(m,r))に乗ぜられる係数、index[m,r]は乗算器um,rの出力y(u(m,r))に付される出力インデックスである。
図5Aに示すように、w7,tは、1の演算器uにより1回の演算で、3ビットのうちの上位2ビットしか計算することができない。この上位2ビットの一部であり、y7,0に含まれるy(u14,0)からy(u15,3)に対応する係数と出力インデックスは以下の通りである。
y(u14,0): 係数=2、 出力インデックス=(7,0)
y(u14,1): 係数=2、 出力インデックス=(7,0)
y(u14,2): 係数=2、 出力インデックス=(7,0)
y(u14,3): 係数=2、 出力インデックス=(7,0)
y(u15,0): 係数=2、 出力インデックス=(7,0)
y(u15,1): 係数=2、 出力インデックス=(7,0)
y(u15,2): 係数=2、 出力インデックス=(7,0)
y(u15,3): 係数=2、 出力インデックス=(7,0)
…(10)
従って、y7,0は以下の値となる。
7,0=2×y(u14,0)+2×y(u14,1)+2×y(u14,2)+2×y(u14,3)+2×y(u15,0)+2×y(u15,1)+2×y(u15,2)+2×y(u15,3
…(11)
残りの1ビットは、図5Aに示した演算が完了した後に、今度は、図5Bに示すwを演算器u0,0~u15,15に入力する。この例では、xは図5Aと同じである。y7,0の残りの下位1ビットに該当するy(u0,0)からy(u0,3)に対応する係数と出力インデックスは以下の通りである。
y(u0,0):係数=2,出力インデックス=(7,0)
y(u0,1):係数=2,出力インデックス=(7,0)
y(u0,2):係数=2,出力インデックス=(7,0)
y(u0,3):係数=2,出力インデックス=(7,0)
これらの値を使って、係数と出力インデックスに基づくアルゴリズムに従って後処理を行なうと、(11)式の結果と合わせて、(12)式となる。
7,0=2×y(u14,0)+2×y(u14,1)+2×y(u14,2)+2×y(u14,3)+2×y(u15,0)+2×y(u15,1)+2×y(u15,2)+2×y(u15,3)+2×y(u0,0)+2×y(u0,1)+2×y(u0,2)+2×y(u0,3
…(12)
これにより、図5Aに示した処理において途中であったy7,0の計算が完了する。
図7は、第4の例の積和演算回路1に対する後処理演算を説明するためのフローチャートである。
図7に示すように、後処理回路3は、時刻t(開始時はt=0である)の各演算器um,rのアキュームレータの出力を受信する(S1)。後処理回路3は、各演算器um,rの出力y(um,r)に、各演算器um,r出力に対応し、LUT4に格納された係数を乗じ、出力インデックスを付加する後処理を実行する(S2)。
その後、時刻t=31までの全ての演算器u0,0~u15,15のアキュームレータの出力について、後処理演算が終了したか否かが判断される(S3)。終了していないと判断された場合(S3のNo)には、S1に戻り、後処理回路3は、時刻t=1以降の残りの演算器u0,0~u15,15のアキュームレータの出力について、後処理演算を行う。
一方、S3において、時刻t=31までの全ての演算器u0,0~u15,15のアキュームレータの出力について、後処理演算が終了したと判断された場合(S3のYes)、後処理回路3は、後処理演算の処理結果をプロセッサ5に送信し(S4)、処理を終了する。
3 半動作体装置の効果
実施形態の半導体装置100の積和演算回路1の構成によれば、SRAM等のメモリから積和演算回路1の演算器アレイへのデータ移動を少なくできる。その結果、半導体装置100のデータ処理の効率化を図ることができる。
図2に示した例の場合、総積和演算回数はM×R×Tである。仮に、演算器が1個の場合は、1回の積和演算を行うために2個のデータを1回メモリから演算器へ移動する必要があるので、全体では2×M×R×Tのデータ移動が必要である。実施形態の図2に示した構成では、データwm,t,xt,rのデータ線を演算器u0,0~uM-1,R-1に対して、各行列毎に共通にしているので、データ移動は、(M+R)×Tとなる。例えば、M=Rの場合であって、図2の構成を採用しない場合に比べて、データ移動は、{(M+R)×T}/{2×M×R×T)=1/Mとなる。
実施形態の第3の例及び第4の例の多ビットの場合の半導体装置100によれば、入力されるデータW,Xのビット幅に応じて、LUT4に適切な係数と出力インデックス設定し、上述の後処理アルゴリズムを適用することで、XやWのビット数がばらばらであっても処理が可能である。
また、第4の例で示したyのケースのように、1つの値が分断されるケースでも問題ない。この特徴により、演算器アレイを無駄なく使い切ることが可能であり、これは演算器の高効率化、高速化に寄与する。
例えば、複数の1ビットの演算器を並列に動作させる半導体装置では、2ビット以上の精度が要求される場合に対応できない。実施形態の第3の例及び第4の例の1ビット×1ビットの積和演算は、同程度に高速に処理できる上に、多ビットの入力にも対応することができる。
また、多ビット×多ビット専用回路(GPUなど)とを比較する。1つの演算器が多ビット×多ビットに対応している場合、演算器ごとの回路規模は、1つの演算器が1ビット×1ビットの場合よりも大きくなる。
従って、並列数と演算器の演算1回当たりの処理時間が同じ場合、1ビット×1ビットの積和演算では、処理速度は同じで、回路規模が実施形態の第3の例及び第4の例の積和演算回路の方が小さくなる。
つまり、多ビット×多ビット専用の演算器を使って、1ビット×1ビットの演算をする場合には、使われない回路が存在することになり無駄が大きく効率が悪い。
例えば演算器が16×16個ある場合、1ビット×1ビットの積和演算は16×16=256並列で実行することができる。同じ構成を使って4ビット×4ビットの積和演算を(16/4)×(16/4)=16並列で実行することができる。また2つの行列のビット幅は同じである必要はなく、2ビット×8ビットの積和演算を(16/2)×(16/8)=16並列で実行することも可能である。
実施形態の第3の例及び第4の例では、入力のビット幅によらず、演算器を効率よく使い切ることができるので、このような無駄がない。多ビット×多ビットの積和演算を行う場合は、並列数が同じ場合で比較すると、多ビット×多ビット専用の演算器で1つで行う計算を、実施形態では複数の演算器を使って行うことになるので、等価的に並列数が少なくなり、実施形態の第3の例及び第4の例の積和演算回路の方が処理速度が遅くなる。
しかし、1つの演算器の回路規模は実施形態の方が多ビット×多ビット専用の演算器よりも小さいので、同じ回路規模であれば、実施形態の方が演算器の並列数を大きくすることが可能である。
その結果、入力のビット幅が小さい場合は、実施形態の方が高速、入力のビット幅が大きい場合は、実施形態の方が低速となる。例えば、ディープラーニングの処理では、層によって要求される入力のビット幅が異なるが、大部分は小さいビット幅で良く、一部のみ大きなビット幅が要求されることがある。このように、入力のビット幅が小さい演算の割合が大きい場合、全体としては、実施形態の半導体装置100の方が高速となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…積和演算回路、2…メモリ、3…後処理回路、4…LUT、5…プロセッサ、11…、乗算器、12…加算器、13…レジスタ、21…AND論理ゲート、x、w…入力データ、um,r…演算器。

Claims (9)

  1. 第1の入力端子と、
    第2の入力端子と、
    前記第1の入力端子から入力された値と、前記第2の入力端子から入力された値との積を計算する乗算器と、
    前記乗算器の出力を積算して出力するアキュームレータと
    備える演算回路を複数具備し
    前記複数の演算回路は、複数行と複数列による二次元配列状に配置され、
    前記複数行の各行における第1数の演算回路のそれぞれの前記第1の入力端子には、第1入力データの行方向のビット数のうち前記第1数のビット数の第1ビットデータが共通に入力され、
    前記複数列の各列における第2数の演算回路のそれぞれの前記第2の入力端子には、第2入力データの列方向のビット数のうち前記第2数のビット数の第2ビットデータが共通に入力され、
    前記複数の演算回路の前記アキュームレータの出力にそれぞれ係数をかけた結果を足し合わせて積和演算結果を求める処理回路と、
    をさらに具備する半導体装置。
  2. 前記第1の入力端子のそれぞれに入力される第1の値及び前記第2の入力端子のそれぞれに入力される第2の値はそれぞれ1ビットであり、
    前記乗算器は、AND論理ゲートである、
    請求項1記載の半導体装置。
  3. 前記アキュームレータは、非同期カウンタである、請求項1記載の半導体装置。
  4. 前記第1の入力端子のそれぞれに入力される第1の値及び前記第2の入力端子のそれぞれに入力される第2の値はそれぞれ1ビットであり、
    前記乗算器は、XNOR論理ゲートである、
    請求項1記載の半導体装置。
  5. 前記第1の入力端子のそれぞれに入力される第1の値及び前記第2の入力端子のそれぞれに入力される第2の値はそれぞれ1ビットであり、
    前記乗算器は、AND論理ゲートと、XNOR論理ゲートと、前記AND論理ゲート及び前記XNOR論理ゲートのいずれかを選択する選択回路と、をさらに具備する、
    請求項1記載の半導体装置。
  6. 前記複数の演算回路毎に、前記演算回路の出力に対する係数及びインデックス値を記憶する記憶回路をさらに具備し、
    前記処理回路は、前記記憶回路を参照して、求められた積和演算結果に、前記演算回路に対応するインデックス値を付加する、
    請求項1記載の半導体装置。
  7. 第1の入力端子と、
    第2の入力端子と、
    前記第1の入力端子から入力された値と、前記第2の入力端子から入力された値との積を計算する乗算器と、
    前記乗算器の出力を積算して出力するアキュームレータと、
    を備える演算回路を複数具備し、
    前記複数の演算回路は、
    それぞれの前記第1の入力端子に共通の第1の値が入力される第1のグループと、
    それぞれの前記第2の入力端子に共通の第2の値が入力される第2のグループと、
    を有し、
    前記第1の値及び前記第2の値はそれぞれ1ビットであり、
    前記乗算器は、
    AND論理ゲートと、XNOR論理ゲートと、前記AND論理ゲート及び前記XNOR論理ゲートのいずれかを選択する選択回路と、
    を有する
    半導体装置。
  8. メモリと、
    前記メモリから読み出された行列形式で表現される第1データと、第2データとの積和演算を行う積和演算回路と、
    前記積和演算回路による前記積和演算の結果を受信するプロセッサと
    を具備し、
    前記積和演算回路は、
    第1の入力端子と、
    第2の入力端子と、
    前記第1の入力端子から入力された値と、前記第2の入力端子から入力された値との積を計算する乗算器と、
    前記乗算器の出力を積算して出力するアキュームレータと
    を備える演算回路を複数具備し、
    前記複数の演算回路は、複数行と複数列による二次元配列状に配置され、
    前記複数行の各行における第1数の演算回路のそれぞれの前記第1の入力端子には、第1入力データの行方向のビット数のうち前記第1数のビット数の第1ビットデータが共通に入力され、
    前記複数列の各列における第2数の演算回路のそれぞれの前記第2の入力端子には、第2入力データの列方向のビット数のうち前記第2数のビット数の第2ビットデータが共通に入力され、
    前記複数の演算回路の前記アキュームレータの出力にそれぞれ係数をかけた結果を足し合わせて積和演算結果を求める処理回路と、
    をさらに具備するメモリシステム。
  9. メモリと、
    前記メモリから読み出された行列形式で表現される第1データと、第2データとの積和演算を行う積和演算回路と、
    前記積和演算回路による前記積和演算の結果を受信するプロセッサと、
    を具備し、
    前記積和演算回路は、
    第1の入力端子と、
    第2の入力端子と、
    前記第1の入力端子から入力された値と、前記第2の入力端子から入力された値との積を計算する乗算器と、
    前記乗算器の出力を積算して出力するアキュームレータと、
    を備える演算回路を複数具備し、
    前記複数の演算回路は、
    それぞれの前記第1の入力端子に前記第1データの一部であって、且つ共通の第1の値が入力される第1のグループと、
    それぞれの前記第2の入力端子に前記第2データの一部であって、且つ共通の第2の値が入力される第2のグループと、
    を有し、
    前記第1の値及び前記第2の値はそれぞれ1ビットであり、
    前記乗算器は、
    AND論理ゲートと、XNOR論理ゲートと、前記AND論理ゲート及び前記XNOR論理ゲートのいずれかを選択する選択回路と、
    を有する、
    メモリシステム。
JP2018054284A 2018-03-22 2018-03-22 半導体装置 Active JP7023149B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018054284A JP7023149B2 (ja) 2018-03-22 2018-03-22 半導体装置
US16/124,903 US10802799B2 (en) 2018-03-22 2018-09-07 Semiconductor device having plural operation circuits including multiplier and accumulator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018054284A JP7023149B2 (ja) 2018-03-22 2018-03-22 半導体装置

Publications (2)

Publication Number Publication Date
JP2019168783A JP2019168783A (ja) 2019-10-03
JP7023149B2 true JP7023149B2 (ja) 2022-02-21

Family

ID=67985119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018054284A Active JP7023149B2 (ja) 2018-03-22 2018-03-22 半導体装置

Country Status (2)

Country Link
US (1) US10802799B2 (ja)
JP (1) JP7023149B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102447445B1 (ko) * 2021-03-08 2022-09-26 공재섭 행렬 연산의 효율적 병렬처리를 위한 연산 장치 및 이를 포함하는 메모리 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002511988A (ja) 1997-06-02 2002-04-16 ホビン・マッツ・アーリング 周波数変調入力または中間値を用いたアナログ−デジタル変換
US20180060726A1 (en) 2016-08-30 2018-03-01 International Business Machines Corporation Voltage control of learning rate for rpu devices for deep neural network training

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014235A (en) 1987-12-15 1991-05-07 Steven G. Morton Convolution memory
US5121352A (en) * 1990-02-06 1992-06-09 Micron Technology, Inc. Multiplier-accumulator circuit array operable in multiple modes
TW318933B (en) 1996-03-08 1997-11-01 Hitachi Ltd Semiconductor IC device having a memory and a logic circuit implemented with a single chip
JP4474424B2 (ja) 1996-06-10 2010-06-02 株式会社日立製作所 半導体集積回路装置
US6029187A (en) * 1997-10-28 2000-02-22 Atmel Corporation Fast regular multiplier architecture
US7849119B2 (en) * 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7840630B2 (en) * 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
JP4713873B2 (ja) 2004-11-12 2011-06-29 株式会社東芝 半導体記憶装置
US7746109B1 (en) * 2009-04-02 2010-06-29 Xilinx, Inc. Circuits for sharing self-timed logic
JP5951570B2 (ja) * 2013-09-13 2016-07-13 株式会社東芝 行列演算装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002511988A (ja) 1997-06-02 2002-04-16 ホビン・マッツ・アーリング 周波数変調入力または中間値を用いたアナログ−デジタル変換
US20180060726A1 (en) 2016-08-30 2018-03-01 International Business Machines Corporation Voltage control of learning rate for rpu devices for deep neural network training

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
下田将之ほか,完全2値化畳み込みニューラルネットワークについて,FIT2017 第16回情報科学技術フォーラム 講演論文集 第1分冊 選奨論文・一般論文 モデル・アルゴリズム・プログラミング ソフトウェア ハードウェア・アーキテクチャ,日本,一般社団法人 情報処理学会,2017年09月05日,51~57ページ

Also Published As

Publication number Publication date
JP2019168783A (ja) 2019-10-03
US10802799B2 (en) 2020-10-13
US20190294414A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
US12205018B2 (en) Transposing neural network matrices in hardware
KR102512936B1 (ko) 하드웨어에서의 커널 스트라이딩 수행
US6539368B1 (en) Neural processor, saturation unit, calculation unit and adder circuit
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
US11341400B1 (en) Systems and methods for high-throughput computations in a deep neural network
US10635397B2 (en) System and method for long addition and long multiplication in associative memory
US20250094126A1 (en) In-memory computation circuit and method
CN113168310B (zh) 用于转换数字的硬件模块
CN1253340A (zh) 分布式运算体系结构的信号处理
JP2020013455A (ja) 畳み込みニューラルネットワークの層において畳み込み演算処理を行なう情報処理装置
JP7023149B2 (ja) 半導体装置
CN115730653A (zh) 量化神经网络训练与推理
JP7251354B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP2020042399A (ja) 積和演算装置、積和演算方法、及びシステム
JP7598714B2 (ja) 半導体装置およびそれに用いるデータ生成方法
JP2022074442A (ja) 演算装置および演算方法
CN111126580A (zh) 采用Booth编码的多精度权重系数神经网络加速芯片运算装置
TWI814618B (zh) 矩陣運算裝置及其操作方法
US11610095B2 (en) Systems and methods for energy-efficient data processing
JP4405452B2 (ja) 逆変換回路
CN114127717A (zh) 硬件中的使用模数学的矩阵相乘
CN117252245A (zh) 执行卷积运算的计算设备、方法和存储介质
CN118133910A (zh) 一种基于深度神经网络处理器的计算处理方法及装置
KR20240135773A (ko) 반복 혼성 행렬 곱셈기
CN116955906A (zh) 一种哈密顿矩阵正交归一化方法及装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180831

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220208

R151 Written notification of patent or utility model registration

Ref document number: 7023149

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151