JP6970058B2 - 演算装置 - Google Patents

演算装置 Download PDF

Info

Publication number
JP6970058B2
JP6970058B2 JP2018136058A JP2018136058A JP6970058B2 JP 6970058 B2 JP6970058 B2 JP 6970058B2 JP 2018136058 A JP2018136058 A JP 2018136058A JP 2018136058 A JP2018136058 A JP 2018136058A JP 6970058 B2 JP6970058 B2 JP 6970058B2
Authority
JP
Japan
Prior art keywords
positive
negative
resistance
coefficient
unit
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
JP2018136058A
Other languages
English (en)
Other versions
JP2020013398A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2018136058A priority Critical patent/JP6970058B2/ja
Priority to US16/294,980 priority patent/US10891108B2/en
Publication of JP2020013398A publication Critical patent/JP2020013398A/ja
Application granted granted Critical
Publication of JP6970058B2 publication Critical patent/JP6970058B2/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • G11C2013/0045Read using current through the cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0073Write using bi-directional cell biasing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Secondary Cells (AREA)
  • Complex Calculations (AREA)

Description

本発明の実施形態は、演算装置に関する。
ニューラルネットワークを用いた技術が知られている。また、専用のハードウェアを用いてニューラルネットワークを構成する技術も研究されている。
ニューラルネットワークに含まれる各ユニットでは、積和演算(乗累算)を実行する。すなわち、各ユニットでは、前段のユニットから受け取った複数の入力値のそれぞれに対して係数を乗算し、係数を乗算した後の複数の入力値を加算する。さらに、各ユニットでは、このように算出した値を活性化関数に与える。そして、各ユニットでは、活性化関数の出力値を出力する。
ところで、ハードウェアで実現したニューラルネットワーク装置は、このようなユニットを多数備えなければならない。このため、ニューラルネットワークをハードウェアで実現する場合、個々のユニットでの積和演算を簡易な処理で精度良く実現することが望まれる。
米国特許出願公開第2015/0088797号明細書 特開平02−292602号公報 特開平02−236659号公報 特開平05−204885号公報
Geoffrey W. Burr, "Analog resistive neuromorphic hardware", IBM Research - Almaden., BioComp Summer School, 2017年6月30日
本発明が解決しようとする課題は、簡易な処理で精度良く係数を設定することにある。
実施形態に係る演算装置は、M個(Mは2以上の整数)の入力値と、前記M個の入力値に一対一で対応するM個の係数とを積和演算する。前記演算装置は、M個の係数記憶部と、M個の乗算部と、出力部と、制御部とを備える。前記M個の係数記憶部は、前記M個の係数に対応して設けられ、差の符号が対応する係数を表す正側係数および負側係数を、それぞれが含む。前記M個の乗算部は、前記M個の入力値に対応して設けられ、対応する入力値に応じて反転する符号を対応する係数記憶部に含まれる前記正側係数に乗じた正側乗算値と、対応する入力値に応じて反転する符号を対応する係数記憶部に含まれる前記負側係数に乗じた負側乗算値とを、それぞれが算出する。前記出力部は、M個の前記正側乗算値を合計した正側積和演算値と、M個の前記負側乗算値を合計した負側積和演算値との差に応じた出力値を出力する。前記制御部は、初期化モードにおいて、前記M個の係数記憶部のそれぞれに含まれる前記正側係数と前記負側係数とを一致させ、設定モードにおいて、前記M個の係数記憶部のうちの設定対象の係数記憶部に含まれる前記正側係数と前記負側係数との大小関係を、対応する係数に応じて設定する。
実施形態に係る演算装置の構成図。 演算装置による演算処理の内容の説明図。 演算部により実行される積和演算処理の説明図。 実施形態に係る演算部のハードウェア構成図。 =+1、x=+1の場合の係数記憶部の動作の説明図。 =+1、x=−1の場合の係数記憶部の動作の説明図。 =−1、x=+1の場合の係数記憶部の動作の説明図。 =−1、x=−1の場合の係数記憶部の動作の説明図。 演算モードにおける演算部による動作の説明図。 正側比較部、負側比較部および一致判定部の入出力特性を示す図。 初期化モードにおける演算部の処理フロー図。 コンダクタンスの大小の検出動作を示す図。 初期化時における正側抵抗への書き込み動作を示す図。 初期化時における負側抵抗への書き込み動作を示す図。 M個の係数記憶部の全てを初期化した後の状態を示す図。 設定モードにおける演算部による動作を示す図。 =+1、x=+1の場合の変形例に係る係数記憶部の動作の説明図。 =+1、x=−1の場合の変形例に係る係数記憶部の動作の説明図。 =−1、x=+1の場合の変形例に係る係数記憶部の動作の説明図。 =−1、x=−1の場合の変形例に係る係数記憶部の動作の説明図。
以下、図面を参照しながら実施形態に係る演算装置10について詳細に説明する。演算装置10は、ニューロンを模擬した非線形演算を簡易な構成で実現する。
(実施形態)
図1は、実施形態に係る演算装置10の構成を示す図である。演算装置10は、演算部20と、設定部22とを備える。
演算部20は、それぞれが2値で表されるM個の入力値と、それぞれが2値で表されるM個の係数とを受け取る。Mは、2以上の整数である。M個の係数は、M個の入力値に一対一で対応している。
設定部22は、M個の係数を例えば外部の学習装置等から受け取る。設定部22は、M個の係数を演算部20の内部に記憶させる。演算部20は、内部に複数の不揮発メモリ型セルを有する。設定部22は、複数の不揮発メモリ型セルに、M個の係数を記憶させる。
演算部20は、M個の入力値を他のユニットから受け取る。演算部20は、M個の入力値を受け取ると、受け取ったM個の入力値と、内部に記憶しているM個の係数とを積和演算(乗累算)する。そして、演算部20は、積和演算をした結果として、2値で表される出力値を出力する。
本実施形態においては、M個の入力値を、x、x、x、…、xと表す。また、本実施形態においては、M個の係数を、w、w、w、…、wと表す。また、本実施形態においては、出力値をyと表す。下付の添え字は、インデックスを表す。同一のインデックスが付けられた入力値と係数とは、対応している。すなわち、xとwとが対応しており、xとwとが対応しており、xとwとが対応している。また、任意のインデックスの入力値をxと表し、任意のインデックスの係数をwと表す。iは、1からMまでの整数である。
図2は、演算装置10による演算処理の内容を説明するための図である。
本実施形態において、M個の入力値のそれぞれは、下記の式(11)で示されるように、−1および+1の何れかの値を表す。
={−1,+1}…(11)
本実施形態において、M個の係数のそれぞれは、下記の式(12)で示されるように、−1および+1の何れかの値を表す。
={−1,+1}…(12)
本実施形態において、出力値は、下記の式(13)で示されるように、−1および+1の何れかの値を表す。
y={−1,+1}…(13)
M個の入力値を受け取った場合、演算部20は、M個の入力値とM個の係数との積和演算をアナログ処理により実行する。例えば、下記の式(14)により算出されるuを中間値とする。
Figure 0006970058
なお、ドットは、乗算を表す。
中間値は、M個の入力値のそれぞれと対応する係数とを乗算したM個の乗算値を、累積した所定ビット数の値を表す。演算部20は、このような中間値を表す信号に対して、符号関数処理をして、2値の出力値を生成する。すなわち、演算部20は、中間値を表す信号に対して、下記の式(15)の演算処理を実行する。
Figure 0006970058
なお、f()は、符号関数を表す。yは、出力値の値を表す。
符号関数は、引数(中間値)が0より小さい場合、−1を出力し、引数(中間値)が0以上である場合、+1を出力する関数である。すなわち、符号関数は、下記の式(16)に示すような関数である。
Figure 0006970058
図3は、本実施形態に係る演算部20により実行される積和演算処理を説明するための図である。
本実施形態において、M個の係数のそれぞれは、正側係数と負側係数との差の符号(正または負)により表される。すなわち、wは、下記の式(17)により表される。
=f(Gpi−Gni)…(17)
piは、正側係数である。Gniは、負側係数である。
正側係数(Gpi)および負側係数(Gni)は、対応する係数に応じて大小関係が変更される。例えば、w=+1である場合、Gpi>Gniとなる。また、例えば、w=−1である場合、Gpi<Gniとなる。
さらに、本実施形態において、演算部20は、下記の式(18)の演算処理を実行して、中間値(u)を算出する。
u=I−I…(18)
は、M個の正側乗算値を合計した正側積和演算値である。正側乗算値は、M個の入力値毎に算出される。具体的には、i番目の正側乗算値は、対応する入力値に応じて反転する符号(x)を、対応する正側係数(Gpi)に乗じた値である。すなわち、演算部20は、下記の式(19)の演算処理を実行して、正側積和演算値(I)を算出する。
={x・Gp1+x・Gp2+…+x・GpM}…(19)
は、M個の負側乗算値を合計した負側積和演算値である。負側乗算値は、M個の入力値毎に算出される。具体的には、i番目の負側乗算値は、対応する入力値に応じて反転する符号(x)を、対応する負側係数(Gni)に乗じた値である。すなわち、演算部20は、下記の式(20)の演算処理を実行して、負側積和演算値(I)を算出する。
={x・Gn1+x・Gn2+…+x・GnM}…(20)
従って、正側係数(Gpi)および負側係数(Gni)の値は、正の値であれば、どのような値であってもよい。正側係数(Gpi)および負側係数(Gni)の値は、インデックス毎に異なっていてもよい。ただし、正側係数と負側係数との差の絶対値(|Gpi−Gni|)は、予め定められた値に設定される。もっとも、正側係数と負側係数との差の絶対値(|Gpi−Gni|)は、積和演算の演算精度に影響を与えない範囲内であれば、ばらつきがあってもよい。
図4は、実施形態に係る演算部20のハードウェア構成を示す図である。演算部20は、演算モード、初期化モードまたは設定モードで動作する。
演算部20は、演算モードにおいて、外部から取得したM個の入力値と、内部に記憶しているM個の係数とを積和演算する。演算部20は、初期化モードにおいて、内部に記憶しているM個の係数を初期化する。演算部20は、設定モードにおいて、外部からM個の係数を取得し、取得した係数を内部に記憶させる。
演算部20は、M個の係数記憶部36(36−1〜36−M)と、M個の印加部38(38−1〜38−M)と、検出部40と、出力部42と、正側電圧発生部44と、負側電圧発生部46と、制御部48とを備える。
M個の係数記憶部36は、M個の係数に対応して設けられる。M個の係数記憶部36のそれぞれは、正側抵抗58と、負側抵抗60と、正側整流部62と、負側整流部64とを含む。
正側抵抗58のコンダクタンスは、正側係数(Gpi)を表す。また、負側抵抗60のコンダクタンスは、負側係数(Gni)を表す。従って、正側抵抗58および負側抵抗60は、コンダクタンスの差の符号が対応する係数(w)を表す。
また、正側抵抗58および負側抵抗60は、抵抗変化型メモリである。抵抗変化型メモリは、所定電圧である読出電圧が印加された場合には、抵抗値は保持されたまま、通常の抵抗として機能する。しかし、抵抗変化型メモリは、読出電圧よりも高い所定の閾値以上の書込電圧が印加された場合、コンダクタンス(抵抗値の逆数)が、電圧の印加時間または電流量等に応じた値に変化する。
このような正側抵抗58および負側抵抗60は、情報(コンダクタンス)を記憶する不揮発メモリとして機能する。従って、正側抵抗58は、正側係数(Gpi)を記憶する記憶部として機能する。また、負側抵抗60は、負側係数(Gni)を記憶する記憶部として機能する。これにより、M個の係数記憶部36のそれぞれは、正側係数(Gpi)および負側係数(Gni)を記憶する記憶部として機能する。
正側整流部62は、正側抵抗58に流れる電流の逆流を防止する。例えば、正側整流部62は、印加部38により正側抵抗58に正の電圧が印加された場合には、正側抵抗58に逆方向の電流が流れることを防止し、印加部38により正側抵抗58に負の電圧が印加された場合には、正側抵抗58に順方向の電流が流れることを防止する。
負側整流部64は、負側抵抗60に流れる電流の逆流を防止する。例えば、負側整流部64は、印加部38により負側抵抗60に正の電圧が印加された場合には、負側抵抗60に逆方向の電流が流れることを防止し、印加部38により負側抵抗60に負の電圧が印加された場合には、負側抵抗60に順方向の電流が流れることを防止する。
正側抵抗58は、一端が正側ビットライン32に接続され、他端が正側整流部62を介して印加部38に接続される。また、負側抵抗60は、一端が負側ビットライン34に接続され、他端が負側整流部64を介して印加部38に接続される。M個の係数記憶部36のそれぞれは、演算モードにおいて、印加部38から読出電圧が発生されたことに応じて、正側ビットライン32に正側電流を出力し、負側ビットライン34に負側電流を出力する。
M個の印加部38は、M個の入力値に対応して設けられる。M個の印加部38のそれぞれは、演算モードにおいて、M個の入力値のうちの対応する入力値を取得する。
演算モードにおいて、M個の印加部38のそれぞれは、対応する入力値に応じた電圧を対応する係数記憶部36に含まれる正側抵抗58および負側抵抗60に印加する。これにより、M個の印加部38のそれぞれは、対応する係数記憶部36から出力される正側電流と負側電流との大小関係を、対応する入力値と対応する係数との乗算結果に応じて変更させることができる。
本実施形態においては、M個の印加部38のそれぞれは、対応する入力値に応じて正負が反転する読出電圧を、対応する係数記憶部36に含まれる正側抵抗58および負側抵抗60に印加する。そして、M個の印加部38のそれぞれは、正側抵抗58に流れる電流を正側電流として係数記憶部36から出力させ、負側抵抗60に流れる電流を負側電流として係数記憶部36から出力させる。これにより、M個の印加部38のそれぞれは、対応する係数記憶部36から出力される正側電流と負側電流との大小関係を、対応する入力値と対応する係数との乗算結果に応じて変更させることができる。
ここで、正側電流は、対応する入力値に応じて反転する符号を正側係数に乗じた正側乗算値を表す。また、負側電流は、対応する入力値に応じて反転する符号を負側係数に乗じた負側乗算値を表す。従って、M個の印加部38のそれぞれは、対応する入力値に応じて反転する符号を対応する係数記憶部36に含まれる正側係数に乗じた正側乗算値と、対応する入力値に応じて反転する符号を対応する係数記憶部36に含まれる負側係数に乗じた負側乗算値とを算出する乗算部として機能することができる。
検出部40は、M個の係数記憶部36から出力された正側電流を合計した正側合計電流と、M個の係数記憶部36から出力された負側電流を合計した負側合計電流とを比較する。
正側ビットライン32には、M個の係数記憶部36から出力された正側電流を合計した正側合計電流が流れる。また、負側ビットライン34には、M個の係数記憶部36から出力された負側電流を合計した負側合計電流が流れる。そこで、検出部40は、正側ビットライン32に流れる電流と、負側ビットライン34に流れる電流とを比較する。そして、検出部40は、正側合計電流が負側合計電流以上であるか、負側合計電流が正側合計電流より大きいか、正側合計電流と負側合計電流とが一致しているかを検出する。
本実施形態において、検出部40は、正側比較部72と、負側比較部74と、一致判定部76とを有する。正側比較部72は、正側ビットライン32に流れる電流(正側合計電流)が負側ビットライン34に流れる電流(負側合計電流)より大きいか否かを判定する。負側比較部74は、負側ビットライン34に流れる電流(負側合計電流)が正側ビットライン32に流れる電流(正側合計電流)より大きいか否かを判定する。一致判定部76は、正側ビットライン32に流れる電流(正側合計電流)と負側ビットライン34に流れる電流(負側合計電流)とが所定範囲内で一致しているか否かを判定する。
なお、正側比較部72、負側比較部74および一致判定部76の動作については、図10を参照してさらに説明する。
出力部42は、演算モードにおいて、正側合計電流と負側合計電流との差に応じた出力値を出力する。本実施形態においては、出力部42は、正側合計電流が負側合計電流以上の場合に+1の出力値(y)を出力し、正側合計電流が負側合計電流より小さい場合に−1の出力値(y)を出力する。
例えば、出力部42は、一致判定部76により正側合計電流と負側合計電流とが一致していると判定された場合または正側比較部72により正側合計電流が負側合計電流より大きいと判定された場合、+1の出力値を出力する。また、例えば、出力部42は、一致判定部76により正側合計電流と負側合計電流とが一致していないと判定された場合であって、且つ、負側比較部74により負側合計電流が正側合計電流より大きいと判定された場合、−1の出力値を出力する。
ここで、正側合計電流は、M個の正側乗算値を合計した正側積和演算値を表す。また、負側合計電流は、M個の負側乗算値を合計した負側積和演算値を表す。従って、出力部42は、演算モードにおいて、M個の正側乗算値を合計した正側積和演算値と、M個の負側乗算値を合計した負側積和演算値との差に応じた出力値を出力することができる。
正側電圧発生部44は、正側ビットライン32に電圧を印加する。正側電圧発生部44は、演算モードにおいて、正側ビットライン32に基準電圧(例えばグランド電位)を印加する。正側抵抗58には、対応する印加部38から発生された電圧と、正側電圧発生部44から発生された電圧との電位差が印加される。従って、演算モードにおいて、正側抵抗58には、印加部38により発生された読出電圧が印加される。
また、正側抵抗58の抵抗値を変化させる場合、正側電圧発生部44は、制御部48の制御に応じて、正側ビットライン32に、基準電圧よりも低い電圧を印加する。従って、抵抗値を変化させる場合、正側抵抗58には、読出電圧よりも高い書込電圧が印加される。
負側電圧発生部46は、負側ビットライン34に電圧を印加する。負側電圧発生部46は、演算モードにおいて、負側ビットライン34に基準電圧(例えばグランド電位)を印加する。負側抵抗60には、対応する印加部38から発生された電圧と、負側電圧発生部46から発生された電圧との電位差が印加される。従って、演算モードにおいて、負側抵抗60には、印加部38により発生された読出電圧が印加される。
また、負側抵抗60の抵抗値を変化させる場合、負側電圧発生部46は、制御部48の制御に応じて、負側ビットライン34に、基準電圧よりも低い電圧を印加する。従って、抵抗値を変化させる場合、負側抵抗60には、読出電圧よりも高い書込電圧が印加される。
制御部48は、M個の印加部38、正側電圧発生部44および負側電圧発生部46の動作を制御する。具体的には、制御部48は、演算モードにおいて、正側電圧発生部44および負側電圧発生部46から基準電圧を発生させ、M個の印加部38のそれぞれから対応する入力値に応じて符号が反転する読出電圧を発生させる。これにより、制御部48は、M個の係数記憶部36のそれぞれから、対応する入力値と対応する係数との乗算結果に応じて大小関係が反転する正側電流および負側電流を出力させることができる。
また、制御部48は、初期化モードにおいて、M個の印加部38、正側電圧発生部44および負側電圧発生部46の動作を制御して、M個の係数記憶部36のそれぞれに含まれる正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとを一致させる。これにより、制御部48は、初期化モードにおいて、M個の係数記憶部36のそれぞれに含まれる正側係数と負側係数とを一致させることができる。なお、初期化モードにおける制御部48のより詳細な制御動作については、図11から図15を参照してさらに説明する。
また、制御部48は、設定モードにおいて、M個の係数を外部の学習装置等から受け取る。そして、制御部48は、設定モードにおいて、M個の印加部38、正側電圧発生部44および負側電圧発生部46の動作を制御して、M個の係数記憶部36のうち設定対象の係数記憶部36に含まれる正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとの大小関係を、対応する係数に応じて設定する。
例えば、制御部48は、係数が+1である場合、対応する係数記憶部36に含まれる正側抵抗58のコンダクタンスを、対応する係数記憶部36に含まれる負側抵抗60のコンダクタンスより大きくする。また、制御部48は、係数が−1である場合、対応する係数記憶部36に含まれる正側抵抗58のコンダクタンスを、対応する係数記憶部36に含まれる負側抵抗60のコンダクタンスより小さくする。これにより、制御部48は、設定モードにおいて、M個の係数記憶部36のうちの設定対象の係数記憶部36に含まれる正側係数と負側係数との大小関係を、対応する係数に応じて設定する。なお、設定モードにおける制御部48のより詳細な制御動作については、図16を参照してさらに説明する。
図5は、w=+1、x=+1の場合の係数記憶部36の動作を説明するための図である。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第1コンダクタンス(G=1/R)に設定される。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第2コンダクタンス(G=1/R)に設定される。
また、第iの入力値(x)が+1である場合、印加部38は、正側抵抗58および負側抵抗60に正の読出電圧(+V)を印加する。このような場合、正側抵抗58には、正の第1電流値(+I)の電流が流れる。また、負側抵抗60には、正の第2電流値(+I)の電流が流れる。なお、G>Gであるとする。従って、|I|>|I|である。
また、正側抵抗58に流れる電流は、正側ビットライン32に出力される。また、負側抵抗60に流れる電流は、負側ビットライン34に出力される。
ここで、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)の算出結果は、第iの係数記憶部36−iから正側ビットライン32に出力される電流(Ip_i)と、第iの係数記憶部36−iから負側ビットライン34に出力される電流(In_i)との電流差(Ip_i−In_i)で表される。
このため、図5の例では、Ip_i=+I、In_i=+Iとなり、電流差(Ip_i−In_i)は、正の値となる。従って、w=+1、x=+1の場合、演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)として、+1を算出することができる。
図6は、w=+1、x=−1の場合の係数記憶部36の動作を説明するための図である。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第1コンダクタンス(G)に設定される。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第2コンダクタンス(G)に設定される。
また、第iの入力値(x)が−1である場合、印加部38は、正側抵抗58および負側抵抗60に負の読出電圧(−V)を印加する。このような場合、正側抵抗58には、負の第1電流値(−I)の電流が流れる。また負側抵抗60には、負の第2電流値(−I)の電流が流れる。
このため、図6の例では、Ip_i=−I、In_i=−Iとなり、電流差(Ip_i−In_i)は、負の値となる。従って、w=+1、x=−1の場合、演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)として、−1を算出することができる。
図7は、w=−1、x=+1の場合の係数記憶部36の動作を説明するための図である。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第2コンダクタンス(G)に設定される。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第1コンダクタンス(G)に設定される。
また、第iの入力値(x)が+1である場合、印加部38は、正側抵抗58および負側抵抗60に正の読出電圧(+V)を印加する。このような場合、正側抵抗58には、正の第2電流値(+I)の電流が流れる。また、負側抵抗60には、正の第1電流値(+I)の電流が流れる。
このため、図7の例では、Ip_i=+I、In_i=+Iとなり、電流差(Ip_i−In_i)は、負の値となる。従って、w=−1、x=+1の場合、演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)は、−1を算出することができる。
図8は、w=−1、x=−1の場合の係数記憶部36の動作を説明するための図である。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第2コンダクタンス(G)に設定される。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第1コンダクタンス(G)に設定される。
また、第iの入力値(x)が−1である場合、印加部38は、正側抵抗58および負側抵抗60に負の読出電圧(−V)を印加する。このような場合、正側抵抗58には、負の第2電流値(−I)の電流が流れる。また、負側抵抗60には、負の第1電流値(−I)の電流が流れる。
このため、図8の例では、Ip_i=−I、In_i=−Iとなり、電流差(Ip_i−In_i)は、正の値となる。従って、w=−1、x=−1の場合、演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)として、+1を算出することができる。
以上から、M個の係数記憶部36に含まれるM個の正側抵抗58に流れる電流の合計(Ip_1+Ip_2+…+Ip_M)と、M個の係数記憶部36に含まれるM個の負側抵抗60に流れる電流の合計(In_1+In_2+…+In_M)との差分値{(Ip_1+Ip_2+…+Ip_M)−(In_1+In_2+…+In_M)}は、M個の入力値とM個の係数との積和演算(乗累算)結果を表す。
図9は、演算モードにおける演算部20による動作を説明するための図である。演算モードにおいて、M個の正側抵抗58のそれぞれには、対応する係数(x)が+1の場合には、正の読出電圧(+V)が印加され、対応する係数(x)が−1の場合には、負の読出電圧(−V)が印加される。また、正側ビットライン32には、M個の係数記憶部36から出力された正側電流(本例では、正側抵抗58に流れる電流)の合計が出力される。
また、演算モードにおいて、M個の負側抵抗60のそれぞれには、対応する係数(x)が+1の場合には、正の読出電圧(+V)が印加され、対応する係数(x)が−1の場合には、負の読出電圧(−V)が印加される。また、負側ビットライン34には、M個の係数記憶部36から出力された負側電流(本例では、負側抵抗60に流れる電流)の合計が出力される。
検出部40は、演算モードにおいて、正側ビットライン32に流れる電流(I)と、負側ビットライン34に流れる電流(I)とを比較する。出力部42は、正側ビットライン32に流れる電流(I)と負側ビットライン34に流れる電流(I)とが一致する場合、または、正側ビットライン32に流れる電流(I)が負側ビットライン34に流れる電流(I)より大きい場合に、+1の出力値(y)を出力する。また、出力部42は、正側ビットライン32に流れる電流(I)と負側ビットライン34に流れる電流(I)とが一致せず、且つ、負側ビットライン34に流れる電流(I)が正側ビットライン32に流れる電流(I)より大きい場合に、−1の出力値(y)を出力する。
以上のように、演算モードにおいて、演算部20は、2値のM個の入力値と2値のM個の係数とを積和演算し、積和演算した結果として2値で表される出力値を出力することができる。
図10は、正側比較部72、負側比較部74および一致判定部76の入出力特性を示す図である。
正側比較部72は、正側ビットライン32に流れる電流が、負側ビットライン34に流れる電流から所定のオフセット(|Δi|)を減じた電流より大きいか否かを判定する。これにより、正側比較部72は、図10の(A)に示すように、正側合計電流から負側合計電流を減じた電流差が、0からオフセットを減じた第1閾値(−Δi)以下である場合には、L論理を出力し、電流差が第1閾値(−Δi)より大きい場合には、H論理を出力する。
また、負側比較部74は、負側ビットライン34に流れる電流が、正側ビットライン32に流れる電流から所定のオフセットを加えた電流より大きいか否かを判定する。これにより、負側比較部74は、図10の(B)に示すように、正側合計電流から負側合計電流を減じた電流差が、0からオフセットを加算した第2閾値(+Δi)以下である場合には、H論理を出力し、電流差が第2閾値(+Δi)より大きい場合には、L論理を出力する。
また、一致判定部76は、正側比較部72から出力された論理値と、負側比較部74から出力された論理値とが一致する場合にH論理を出力し、不一致の場合にL論理を出力する。これにより、一致判定部76は、図10の(C)に示すように、正側合計電流と負側合計電流との電流差が、第1閾値(−Δi)から第2閾値(+Δi)までの範囲内である場合に、H論理を出力し、他の場合にL論理を出力する。
従って、検出部40は、M個の正側抵抗58に流れる電流を合計した正側合計電流と、M個の負側抵抗60に流れる電流を合計した負側合計電流が、一致しているか否かを判定することができる。さらに、検出部40は、正側合計電流が負側合計電流より大きいか、負側合計電流が正側合計電流より大きいかを判定することができる。
なお、正側比較部72は、正側合計電流から負側合計電流を減じた電流差が、0からオフセットを減じた第1閾値(−Δi)以下である場合には、H論理を出力し、電流差が第1閾値(−Δi)より大きい場合には、L論理を出力してもよい。また、負側比較部74は、正側合計電流から負側合計電流を減じた電流差が、0からオフセットを加算した第2閾値(+Δi)以下である場合には、L論理を出力し、電流差が第2閾値(+Δi)より大きい場合には、H論理を出力する。このような場合も、一致判定部76は、図10の(C)に示すように、正側合計電流と負側合計電流との電流差が、第1閾値(−Δi)から第2閾値(+Δi)までの範囲内である場合に、H論理を出力し、他の場合にL論理を出力する。
図11は、初期化モードにおける演算部20の処理フローを示す図である。また、図12〜図15は、図11の説明において参照される図である。図12は、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスの大小の検出動作を示す図である。図13は、初期化時における正側抵抗58への書き込み動作を示す図である。図14は、初期化時における負側抵抗60への書き込み動作を示す図である。図15は、M個の係数記憶部36の全てを初期化した後の状態を示す図である。
演算装置10は、ユーザ等により指示がされた場合に、初期化モードに遷移する。演算部20の制御部48は、初期化モードにおいて、図11に示すフローの流れで処理を実行する。
まず、S11において、制御部48は、M個の係数記憶部36のうちの1つの係数記憶部36を処理対象として選択する。
続いて、S12において、制御部48は、処理対象の係数記憶部36について、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとが一致しているか、正側抵抗58のコンダクタンスが負側抵抗60のコンダクタンスより大きいか、負側抵抗60のコンダクタンスが正側抵抗58のコンダクタンスより大きいかを検出する。
例えば、S12において、図12に示すように、制御部48は、処理対象の係数記憶部36に含まれる正側抵抗58および負側抵抗60に正の読出電圧(+V)を印加する。処理対象の係数記憶部36に含まれる正側抵抗58および負側抵抗60のみに正の読出電圧(+V)を印加した場合、検出部40は、処理対象の係数記憶部36に含まれる正側抵抗58のコンダクタンスと負側抵抗60とのコンダクタンスとの大小関係を検出することができる。そして、制御部48は、検出部40による検出結果を取得する。
続いて、S13において、制御部48は、検出部40から取得した検出結果に基づき、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとが一致しているか否かを判定する。例えば、制御部48は、一致判定部76によりH論理が出力された場合、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとが一致していると判定する。
制御部48は、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとが一致していない場合(S13のNo)、処理をS14に進める。S14において、制御部48は、検出部40から取得した検出結果に基づき、正側抵抗58のコンダクタンスが負側抵抗60のコンダクタンスより大きいか、または、負側抵抗60のコンダクタンスが正側抵抗58のコンダクタンスより大きいかを判定する。例えば、制御部48は、一致判定部76からL論理が出力され、且つ、正側比較部72からH論理が出力された場合、正側抵抗58のコンダクタンスが負側抵抗60のコンダクタンスより大きいと判定する。また、制御部48は、一致判定部76からL論理が出力され、且つ、負側比較部74からH論理が出力された場合、負側抵抗60のコンダクタンスが正側抵抗58のコンダクタンスより大きいと判定する。
制御部48は、正側抵抗58のコンダクタンスが負側抵抗60のコンダクタンスより大きいと判定した場合(S14のYes)、処理をS15に進める。また、制御部48は、負側抵抗60のコンダクタンスが正側抵抗58のコンダクタンスより大きいと判定した場合(S14のNo)、処理をS16に進める。
S15において、制御部48は、正側抵抗58のコンダクタンスを所定量小さくする。具体的には、制御部48は、処理対象の係数記憶部36に含まれる正側抵抗58に読出電圧より大きい、所定の閾値以上の書込電圧を印加して、正側抵抗58のコンダクタンスを変化させる。
例えば、図13に示すように、制御部48は、対応する印加部38から正の読出電圧(+V)を発生させると同時に、正側電圧発生部44から基準電圧(例えばグランド電位)より低い第1電圧を発生させる。これにより、制御部48は、読出電圧(V)より大きい書込電圧を正側抵抗58に印加することができる。なお、制御部48は、読出電圧(V)を発生させている期間中において、正側電圧発生部44から、最初に基準電圧より高い電圧を所定期間発生させ、続いて、第1電圧を発生させてもよい。これにより、制御部48は、正側抵抗58のコンダクタンスを微小量ずつ変化させることができる。
なお、本実施形態では、S15において、制御部48は、正側抵抗58のコンダクタンスを所定量小さくしている。これに代えて、S15において、制御部48は、負側抵抗60のコンダクタンスを所定量大きくしてもよい。
S16において、制御部48は、負側抵抗60のコンダクタンスを所定量小さくする。具体的には、制御部48は、処理対象の係数記憶部36に含まれる負側抵抗60に読出電圧より大きい書込電圧を印加して、負側抵抗60のコンダクタンスを変化させる。
例えば、図14に示すように、制御部48は、対応する印加部38から正の読出電圧(+V)を発生させると同時に、負側電圧発生部46から基準電圧より低い電圧を発生させる。これにより、制御部48は、読出電圧(V)より大きい書込電圧を負側抵抗60に印加することができる。なお、制御部48は、読出電圧(V)を発生させている期間中において、負側電圧発生部46から、最初に基準電圧より高い電圧を所定期間発生させ、続いて、基準電圧より低い電圧を発生させてもよい。これにより、制御部48は、負側抵抗60のコンダクタンスを微小量ずつ変化させることができる。
なお、本実施形態では、S16において、制御部48は、負側抵抗60のコンダクタンスを所定量小さくしている。これに代えて、S16において、制御部48は、正側抵抗58のコンダクタンスを所定量大きくしてもよい。
S15またはS16を終えると、制御部48は、処理をS12に戻す。そして、制御部48は、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとが一致するまで、S12からS16までの処理を繰り返して、正側抵抗58または負側抵抗60のコンダクタンスを徐々に小さくする。
正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとが一致した場合(S13のYes)、制御部48は、処理をS17に進める。S17において、制御部48は、M個の係数記憶部36の全てについて、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとを一致させたか否かを判断する。まだ、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとを一致させていない係数記憶部36が残っている場合(S17のNo)、制御部48は、処理をS11に戻して、S11から処理を繰り返す。
例えば、図15に示すように、制御部48は、M個の係数記憶部36の全てについて、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとを一致させる。そして、制御部48は、M個の係数記憶部36の全てについて、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとを一致させた場合(S17のYes)、本フローを終了する。
図16は、設定モードにおける演算部20による動作を示す図である。設定モードにおいて、制御部48は、更新対象の係数記憶部36に対して、係数を記憶させる。この場合、制御部48は、更新対象の係数記憶部36に含まれる正側抵抗58または負側抵抗60のうちの一方のコンダクタンスを変更し、他方のコンダクタンスは変更しない。
例えば、係数が+1である場合、制御部48は、更新対象の係数記憶部36に含まれる正側抵抗58のコンダクタンスを大きくして、負側抵抗60のコンダクタンスは変更しない。これに代えて、係数が+1である場合、制御部48は、更新対象の係数記憶部36に含まれる負側抵抗60のコンダクタンスを小さくして、正側抵抗58のコンダクタンスは変更しなくてもよい。
また、例えば、係数が−1である場合、制御部48は、更新対象の係数記憶部36に含まれる負側抵抗60のコンダクタンスを大きくして、正側抵抗58のコンダクタンスは変更しない。これに代えて、係数が−1である場合、制御部48は、更新対象の係数記憶部36に含まれる正側抵抗58のコンダクタンスを小さくして、負側抵抗60のコンダクタンスは変更しなくてもよい。これにより、制御部48は、更新対象の係数記憶部36に含まれる正側抵抗58および負側抵抗60のコンダクタンスを、係数に応じた大小関係に設定することができる。
また、設定モードにおいて、制御部48は、複数の係数を取得し、複数の係数を複数の更新対象の係数記憶部36に対して同時に記憶させてもよい。
この場合、図16の(A)に示すように、制御部48は、+1の係数に対応する1または複数の印加部38から正の読出電圧(+V)を発生させ、他の印加部38から基準電圧(例えばグランド電位)を発生させる。これと同時に、制御部48は、正側電圧発生部44から基準電圧より低い第1電圧を発生させ、負側電圧発生部46から基準電圧を発生させる。これにより、制御部48は、+1の係数を記憶させる1または複数の係数記憶部36に含まる正側抵抗58のコンダクタンスを大きくして、負側抵抗60のコンダクタンスを変更させないようにすることができる。
続いて、図16の(B)に示すように、制御部48は、−1の係数に対応する1または複数の印加部38から正の読出電圧(+V)を発生させ、他の印加部38から基準電圧を発生させる。これと同時に、制御部48は、負側電圧発生部46から基準電圧より低い第1電圧を発生させ、正側電圧発生部44から基準電圧を発生させる。これにより、制御部48は、−1の係数を記憶させる1または複数の係数記憶部36に含まる負側抵抗60のコンダクタンスを大きくして、正側抵抗58のコンダクタンスを変更させないようにすることができる。
なお、制御部48は、読出電圧(V)を発生させている期間中において、正側電圧発生部44または負側電圧発生部46から、最初に基準電圧より高い電圧を所定期間発生させ、続いて、基準電圧より低い電圧を発生させてもよい。これにより、制御部48は、正側抵抗58または負側抵抗60のコンダクタンスを微小量ずつ変化させることができる。
また、制御部48は、更新対象の係数記憶部36に対して係数を記憶させる処理をした後、更新対象の係数記憶部36に設定された正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスの差を読み出してもよい。続いて、制御部48は、読み出したコンダクタンスの差を検証する。そして、制御部48は、検証の結果、正しいコンダクタンスの差が記憶されていない場合には、再度、更新対象の係数記憶部36に含まれる正側抵抗58または負側抵抗60のコンダクタンスをさらに変更する。これにより、制御部48は、正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとの差を精度良く設定することができる。
以上のように、本実施形態に係る演算装置10は、初期化モードにおいて、M個の係数記憶部36に含まれる正側抵抗58のコンダクタンスと負側抵抗60のコンダクタンスとを一致させる。そして、演算装置10は、設定モードにおいて、記憶させる係数の値に応じて、正側抵抗58または負側抵抗60の一方のコンダクタンスを変更し、他方のコンダクタンスを変更しない。これにより、本実施形態に係る演算装置10は、正側抵抗58または負側抵抗60の一方のコンダクタンスを変更することにより係数を設定することができるので、簡易な処理で精度良く係数を設定することができる。
なお、制御部48は、定期的に初期化モードを実行してもよい。この場合、制御部48は、設定モードで正側抵抗58および負側抵抗60のうち一方のコンダクタンスを小さくしていれば、初期化モードにおいて、設定モードでコンダクタンスを小さくした方のコンダクタンスを大きくすることにより、正側抵抗58と負側抵抗60とのコンダクタンスを一致させる。あるいは、制御部48は、設定モードで正側抵抗58および負側抵抗60のうち一方のコンダクタンスを大きくしていれば、初期化モードにおいて、設定モードでコンダクタンスを大きくした方のコンダクタンスを小さくすることにより、正側抵抗58と負側抵抗60とのコンダクタンスを一致させる。これにより、制御部48は、初期化モードと設定モードとが繰り返させた場合であっても、正側抵抗58のコンダクタンスおよび負側抵抗60のコンダクタンスが工場設定時からずれないようにすることができる。
(変形例)
つぎに、変形例に係る演算装置10について説明する。変形例に係る演算装置10は、図1から図16を参照して説明した演算装置10と略同一の機能および構成を有するので、略同一の機能を有するブロックには同一の符号を付け、相違点を除き詳細な説明を省略する。第2変形例についても同様である。
図17は、w=+1、x=+1の場合の、変形例に係る係数記憶部36の動作を説明するための図である。
変形例に係るM個の係数記憶部36のそれぞれは、切替部82をさらに含む。切替部82は、外部からの制御に応じて、ストレート接続状態とクロス接続状態とを切り替える。
切替部82は、ストレート接続状態の場合、正側抵抗58の一端を正側ビットライン32に接続し、負側抵抗60の一端を負側ビットライン34に接続する。これにより、切替部82は、ストレート接続状態において、正側抵抗58に流れる電流を正側電流として正側ビットライン32に出力し、負側抵抗60に流れる電流を負側電流として負側ビットライン34に出力することができる。
また、切替部82は、クロス接続状態の場合、正側抵抗58の一端を負側ビットライン34に接続し、負側抵抗60の一端を正側ビットライン32に接続する。これにより、切替部82は、ストレート接続状態において、負側抵抗60に流れる電流を正側電流として正側ビットライン32に出力し、正側抵抗58に流れる電流を負側電流として負側ビットライン34に出力することができる。
また、変形例において、M個の印加部38のそれぞれは、演算モードにおいて、対応する係数記憶部36に含まれる正側抵抗58および負側抵抗60に対して、正の読出電圧(V)を印加する。また、変形例において、正側整流部62は、正側抵抗58に逆方向の電流が流れることを防止する。また、変形例において、負側整流部64は、負側抵抗60に逆方向の電流が流れることを防止する。
変形例において、M個の印加部38のそれぞれは、対応する係数記憶部36に含まれる切替部82を、対応する入力値に応じて、ストレート接続をさせるか、クロス接続をさせるかを切り替える。
例えば、図17に示すように、第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第1コンダクタンス(G=1/R)に設定される。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第2コンダクタンス(G=1/R)に設定される。
この場合、正側抵抗58には、正の第1電流値(+I)の電流が流れる。また、負側抵抗60には、正の第2電流値(+I)の電流が流れる。なお、G>Gであるとする。従って、|I|>|I|である。
第iの入力値(x)が+1である場合、印加部38は、切替部82をストレート接続させる。従って、正側抵抗58に流れる電流は、正側ビットライン32に出力される。また、負側抵抗60に流れる電流は、負側ビットライン34に出力される。
ここで、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)の算出結果は、第iの係数記憶部36−iから正側ビットライン32に出力される電流(Ip_i)と、第iの係数記憶部36−iから負側ビットライン34に出力される電流(In_i)との電流差(Ip_i−In_i)で表される。
このため、図17の例では、Ip_i=+I、In_i=+Iとなり、電流差(Ip_i−In_i)は、正の値となる。従って、w=+1、x=+1の場合、変形例に係る演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)として、+1を算出することができる。
図18は、w=+1、x=−1の場合、変形例に係る係数記憶部36の動作を説明するための図である。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第1コンダクタンス(G)に設定される。第iの係数(w)が+1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第2コンダクタンス(G)に設定される。
第iの入力値(x)が−1である場合、印加部38は、切替部82をクロス接続させる。従って、正側抵抗58に流れる電流は、負側ビットライン34に出力される。また、負側抵抗60に流れる電流は、正側ビットライン32に出力される。
このため、図18の例では、Ip_i=I、In_i=Iとなり、電流差(Ip_i−In_i)は、負の値となる。従って、w=+1、x=−1の場合、変形例に係る演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)として、−1を算出することができる。
図19は、w=−1、x=+1の場合の、変形例に係る係数記憶部36の動作を説明するための図である。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第2コンダクタンス(G)に設定される。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第1コンダクタンス(G)に設定される。
この場合、正側抵抗58には、正の第2電流値(+I)の電流が流れる。また、負側抵抗60には、正の第1電流値(+I)の電流が流れる。
第iの入力値(x)が+1である場合、印加部38は、切替部82をストレート接続させる。従って、正側抵抗58に流れる電流は、正側ビットライン32に出力される。また、負側抵抗60に流れる電流は、負側ビットライン34に出力される。
このため、図19の例では、Ip_i=+I、In_i=+Iとなり、電流差(Ip_i−In_i)は、負の値となる。従って、w=−1、x=+1の場合、変形例に係る演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)は、−1を算出することができる。
図20は、w=−1、x=−1の場合の、変形例に係る係数記憶部36の動作を説明するための図である。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる正側抵抗58は、第2コンダクタンス(G)に設定される。第iの係数(w)が−1である場合、第iの係数記憶部36−iに含まれる負側抵抗60は、第1コンダクタンス(G)に設定される。
第iの入力値(x)が−1である場合、印加部38は、切替部82をクロス接続させる。従って、正側抵抗58に流れる電流は、負側ビットライン34に出力される。また、負側抵抗60に流れる電流は、正側ビットライン32に出力される。
このため、図20の例では、Ip_i=−I、In_i=−Iとなり、電流差(Ip_i−In_i)は、正の値となる。従って、w=−1、x=−1の場合、変形例に係る演算部20は、第iの係数(w)に第iの入力値(x)を乗じた値(w・x)として、+1を算出することができる。
以上から、M個の係数記憶部36に含まれるM個の正側抵抗58に流れる電流の合計(Ip_1+Ip_2+…+Ip_M)と、M個の係数記憶部36に含まれるM個の負側抵抗60に流れる電流の合計(In_1+In_2+…+In_M)との差分値{(Ip_1+Ip_2+…+Ip_M)−(In_1+In_2+…+In_M)}は、M個の入力値とM個の係数との積和演算(乗累算)結果を表す。
以上のように、変形例において、M個の印加部38のそれぞれは、読出電圧を正側抵抗58および負側抵抗60に印加するとともに、対応する入力値に応じて、正側抵抗58に流れる電流を正側電流とし且つ負側抵抗60に流れる電流を負側電流として出力させるか、または、負側抵抗60に流れる電流を正側電流とし且つ正側抵抗58に流れる電流を負側電流として出力させるかを切り替える。このようにしても、M個の印加部38のそれぞれは、対応する係数記憶部36から出力される正側電流と負側電流との大小関係を、対応する入力値と対応する係数との乗算結果に応じて変更させることができる。
本発明の実施形態および変形例を説明したが、これらの実施形態および変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
10 演算装置
20 演算部
22 設定部
32 正側ビットライン
34 負側ビットライン
36 係数記憶部
38 印加部
40 検出部
42 出力部
44 正側電圧発生部
46 負側電圧発生部
48 制御部
58 正側抵抗
60 負側抵抗
62 正側整流部
64 負側整流部
72 正側比較部
74 負側比較部
76 一致判定部
82 切替部

Claims (9)

  1. M個(Mは2以上の整数)の入力値と、前記M個の入力値に一対一で対応するM個の係数とを積和演算する演算装置であって、
    前記M個の係数に対応して設けられ、差の符号が対応する係数を表す正側係数および負側係数を、それぞれが含むM個の係数記憶部と、
    前記M個の入力値に対応して設けられ、対応する入力値に応じて反転する符号を対応する係数記憶部に含まれる前記正側係数に乗じた正側乗算値と、対応する入力値に応じて反転する符号を対応する係数記憶部に含まれる前記負側係数に乗じた負側乗算値とを、それぞれが算出するM個の乗算部と、
    M個の前記正側乗算値を合計した正側積和演算値と、M個の前記負側乗算値を合計した負側積和演算値との差に応じた出力値を出力する出力部と、
    制御部と、
    を備え、
    前記制御部は、
    初期化モードにおいて、前記M個の係数記憶部のそれぞれに含まれる前記正側係数と前記負側係数とを一致させ、
    設定モードにおいて、前記M個の係数記憶部のうちの設定対象の係数記憶部に含まれる前記正側係数と前記負側係数との大小関係を、対応する係数に応じて設定する
    算装置。
  2. M個(Mは2以上の整数)の入力値と、前記M個の入力値に一対一で対応するM個の係数とを積和演算する演算装置であって、
    前記M個の係数に対応して設けられ、コンダクタンスの差の符号が対応する係数を表す正側抵抗および負側抵抗をそれぞれが含むM個の係数記憶部と、
    前記M個の入力値に対応して設けられ、対応する入力値に応じた電圧を対応する係数記憶部に含まれる前記正側抵抗および前記負側抵抗に印加することにより、対応する係数記憶部から出力される正側電流と負側電流との大小関係を、対応する入力値と対応する係数との乗算結果に応じて変更させるM個の印加部と、
    M個の係数記憶部から出力される前記正側電流を合計した正側合計電流と、M個の係数記憶部から出力される前記負側電流を合計した負側合計電流との差に応じた出力値を出力する出力部と、
    制御部と、
    を備え、
    前記制御部は、
    初期化モードにおいて、前記M個の係数記憶部のそれぞれに含まれる前記正側抵抗のコンダクタンスと前記負側抵抗のコンダクタンスとを一致させ、
    設定モードにおいて、前記M個の係数記憶部のうち設定対象の係数記憶部に含まれる前記正側抵抗のコンダクタンスと前記負側抵抗のコンダクタンスとの大小関係を、対応する係数に応じて設定する
    算装置。
  3. 前記M個の印加部のそれぞれは、対応する入力値に応じて正負が反転する電圧を対応する係数記憶部に含まれる前記正側抵抗および前記負側抵抗に印加し、前記正側抵抗に流れる電流を前記正側電流として出力させ、前記負側抵抗に流れる電流を前記負側電流として出力させる
    請求項に記載の演算装置。
  4. 前記M個の印加部のそれぞれは、前記正側抵抗および前記負側抵抗に所定の電圧を印加し、対応する入力値に応じて、前記正側抵抗に流れる電流を前記正側電流とし且つ前記負側抵抗に流れる電流を前記負側電流として出力させるか、または、前記負側抵抗に流れる電流を前記正側電流とし且つ前記正側抵抗に流れる電流を前記負側電流として出力させるかを切り替える
    請求項に記載の演算装置。
  5. 前記制御部は、前記設定モードにおいて、前記設定対象の係数記憶部に含まれる前記正側抵抗および前記負側抵抗のうち、一方のコンダクタンスを変更する
    請求項からの何れか1項に記載の演算装置。
  6. 前記制御部は、前記設定モードにおいて、前記設定対象の係数記憶部に含まれる前記正側抵抗のコンダクタンスと前記負側抵抗のコンダクタンスとの差の絶対値を、予め定められた値とする
    請求項からの何れか1項に記載の演算装置。
  7. 前記初期化モードにおいて、前記M個の係数記憶部のそれぞれ毎に、前記制御部は、
    前記正側抵抗に所定電圧を印加して流れる電流と、前記負側抵抗に前記所定電圧を印加して流れる電流との差を検出し、
    検出した前記差の絶対値が予め定められた値以下となるように、前記正側抵抗または前記負側抵抗のうちの何れか一方のコンダクタンスを変更する
    請求項からの何れか1項に記載の演算装置。
  8. 前記M個の係数記憶部のそれぞれに含まれる前記正側抵抗および前記負側抵抗は、抵抗変化型メモリである
    請求項からの何れか1項に記載の演算装置。
  9. 前記M個の入力値、前記M個の係数および前記出力値は、2値である
    請求項1からの何れか1項に記載の演算装置。
JP2018136058A 2018-07-19 2018-07-19 演算装置 Active JP6970058B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018136058A JP6970058B2 (ja) 2018-07-19 2018-07-19 演算装置
US16/294,980 US10891108B2 (en) 2018-07-19 2019-03-07 Calculation device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018136058A JP6970058B2 (ja) 2018-07-19 2018-07-19 演算装置

Publications (2)

Publication Number Publication Date
JP2020013398A JP2020013398A (ja) 2020-01-23
JP6970058B2 true JP6970058B2 (ja) 2021-11-24

Family

ID=69161872

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018136058A Active JP6970058B2 (ja) 2018-07-19 2018-07-19 演算装置

Country Status (2)

Country Link
US (1) US10891108B2 (ja)
JP (1) JP6970058B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6989552B2 (ja) 2019-03-18 2022-01-05 株式会社東芝 ニューラルネットワーク装置
JP7034984B2 (ja) 2019-05-30 2022-03-14 株式会社東芝 演算装置
JP7132196B2 (ja) 2019-09-17 2022-09-06 株式会社東芝 処理装置および推論システム
JP2021111142A (ja) 2020-01-10 2021-08-02 株式会社東芝 演算装置
JP7358312B2 (ja) 2020-08-25 2023-10-10 株式会社東芝 記憶装置およびニューラルネットワーク装置
JP2022129104A (ja) 2021-02-24 2022-09-05 株式会社東芝 不揮発性メモリデバイス

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02236659A (ja) 1989-03-09 1990-09-19 Fujitsu Ltd 半導体情報処理装置
JPH02292602A (ja) 1989-05-02 1990-12-04 Nkk Corp 人工神経回路網型ファジィ制御装置
JPH03120726A (ja) * 1989-10-03 1991-05-22 Nippon Telegr & Teleph Corp <Ntt> 積和演算半導体装置
JPH0467259A (ja) * 1990-07-09 1992-03-03 Hitachi Ltd 情報処理装置
JPH05204885A (ja) 1992-01-30 1993-08-13 Fujitsu Ltd ニューラルネットワークの学習高速化装置及び方法
US8812418B2 (en) * 2009-06-22 2014-08-19 Hewlett-Packard Development Company, L.P. Memristive adaptive resonance networks
FR2977350B1 (fr) * 2011-06-30 2013-07-19 Commissariat Energie Atomique Reseau de neurones artificiels a base de dispositifs memristifs complementaires
KR20150034900A (ko) 2013-09-26 2015-04-06 삼성전자주식회사 뉴런 회로들을 연결하는 시냅스 회로, 뉴로모픽 회로를 구성하는 단위 셀 및 뉴로모픽 회로
US9934463B2 (en) * 2015-05-15 2018-04-03 Arizona Board Of Regents On Behalf Of Arizona State University Neuromorphic computational system(s) using resistive synaptic devices
US11501130B2 (en) * 2016-09-09 2022-11-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof
EP3373304A3 (en) * 2016-11-21 2018-12-05 IMEC vzw Semiconductor cell for performing a logic xnor or xor operation
JP6773621B2 (ja) 2017-09-15 2020-10-21 株式会社東芝 演算装置
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations

Also Published As

Publication number Publication date
US10891108B2 (en) 2021-01-12
US20200026496A1 (en) 2020-01-23
JP2020013398A (ja) 2020-01-23

Similar Documents

Publication Publication Date Title
JP6970058B2 (ja) 演算装置
US10748064B2 (en) Deep neural network training with native devices
JP6773621B2 (ja) 演算装置
CN108205705B (zh) 用于归一化神经网络设备的装置和方法
JP6786466B2 (ja) ニューラルネットワーク装置および演算装置
US20230113231A1 (en) Methods and systems of operating a neural circuit in a non-volatile memory based neural-array
JP4620943B2 (ja) 積和演算回路及びその方法
US20180005115A1 (en) Accelerated neural network training using a pipelined resistive processing unit architecture
AU2020274862B2 (en) Training of artificial neural networks
KR102542532B1 (ko) 혼합-신호 연산 시스템 및 방법
US11263516B2 (en) Neural network based acoustic models for speech recognition by grouping context-dependent targets
US11010560B2 (en) Multi-resolution convolutional neural networks for sequence modeling
US11018186B2 (en) Multi-level memristor elements
US10340002B1 (en) In-cell differential read-out circuitry for reading signed weight values in resistive processing unit architecture
US20200327287A1 (en) Electronic system for performing a multiplication of a matrix and vector
CN111448573A (zh) 用于混合信号计算的系统和方法
CN111052154A (zh) 使用非易失性半导体存储元件的神经网络运算电路
US11341413B2 (en) Leveraging class information to initialize a neural network language model
US9934838B1 (en) Pulse shaping unit cell and array for symmetric updating
KR20230029759A (ko) 아날로그 크로스바 어레이들을 업데이트하기 위한 희소 수정가능 비트 길이 결정 펄스 생성
JP2023502204A (ja) クロスバー・アレイ構造を有するニューロモルフィック・デバイス
WO2021197562A1 (en) Efficient initialization of quantized neural networks
WO2022003459A1 (en) Training of oscillatory neural networks
EP0795160A1 (en) Neural network binary code recognizer
JP7346373B2 (ja) 演算装置およびニューラルネットワーク装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210910

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211028

R151 Written notification of patent or utility model registration

Ref document number: 6970058

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151