(57)【特許請求の範囲】
【請求項１】
複数のデータのそれぞれに応じた信号を生成する第１回路と、
抵抗値が可変である複数の可変抵抗素子のそれぞれによって前記第１回路によって生成された複数の前記信号のそれぞれに重みを乗算してこれら複数の乗算結果の総和を演算する第１演算回路を有する第２回路と、
前記複数の前記データのそれぞれに応じた値の加算結果または前記加算結果が調整された結果を演算する第３回路と、
前記第２回路の前記第１演算回路によって演算された結果と前記第３回路によって演算された結果との差分を出力する差分回路を有する第４回路と、
を備える積和演算器。
【請求項２】
前記第２回路の前記第１演算回路によって演算される結果と、前記第３回路によって演算される結果は、アナログ信号であり、
前記第４回路の前記差分回路は、アナログ回路である、
請求項１に記載の積和演算器。
【請求項３】
前記第２回路の前記第１演算回路によって演算される結果と、前記第３回路によって演算される結果は、デジタルデータであり、
前記第４回路の前記差分回路は、デジタル回路である、
請求項１に記載の積和演算器。
【請求項４】
前記複数の前記可変抵抗素子において、共通のコンダクタンスの可変な範囲が設定され、
前記第２回路の前記第１演算回路は、前記複数の前記乗算結果の総和を取得する容量を有し、
前記第３回路によって演算される結果は、（前記複数の前記データのそれぞれに応じた値の前記加算結果）と（前記可変抵抗素子の前記コンダクタンスの可変な範囲の中心値）と｛１／（前記容量）｝とを乗算した結果である、
請求項１から請求項３のいずれか１項に記載の積和演算器。
【請求項５】
前記複数の可変抵抗素子において、共通のコンダクタンスの可変な範囲が設定され、
前記第２回路の前記第１演算回路は、前記複数の前記乗算結果の総和を取得する容量を有し、
前記第３回路によって演算される結果は、（前記複数の前記データのそれぞれに応じた値の前記加算結果）と（前記可変抵抗素子の前記コンダクタンスの可変な範囲の中心値）と｛１／（前記容量）｝との積に第１係数を乗算した結果と第２係数との和に相当する、
請求項１から請求項３のいずれか１項に記載の積和演算器。
【請求項６】
前記第１回路が前記複数の前記データのそれぞれに応じた前記信号を生成することは、前記第１回路が前記複数の前記データのそれぞれに応じたパルス幅変調信号を生成することである、
請求項１から請求項５のいずれか１項に記載の積和演算器。
【請求項７】
前記第１回路が前記複数の前記データのそれぞれに応じた前記信号を生成することは、前記第１回路が前記複数の前記データのそれぞれに応じた振幅変調信号を生成することである、
請求項１から請求項５のいずれか１項に記載の積和演算器。
【請求項８】
前記第２回路は、複数の前記第１演算回路を有し、
前記第４回路は、前記複数の前記第１演算回路のそれぞれごとに前記差分回路を有する、
請求項１から請求項７のいずれか１項に記載の積和演算器。
【請求項９】
前記複数の前記データは、時系列の順に前記第３回路に入力され、
前記第３回路は、前記時系列の順に、前記複数の前記データのそれぞれに応じた値を加算する、
請求項１から請求項８のいずれか１項に記載の積和演算器。
【請求項１０】
前記可変抵抗素子は、磁気抵抗効果を示す磁気抵抗効果素子である、
請求項１から請求項９のいずれか１項に記載の積和演算器。
【請求項１１】
第１回路と第２回路と第３回路と第４回路を備え、前記第２回路は第１演算回路を有し、前記第４回路は差分回路を有する積和演算器において行われる積和演算方法であって、
前記第１回路が、複数のデータのそれぞれに応じた信号を生成し、
前記第２回路の前記第１演算回路が、抵抗値が可変である複数の可変抵抗素子のそれぞれによって前記第１回路によって生成された複数の前記信号のそれぞれに重みを乗算してこれら複数の乗算結果の総和を演算し、
前記第３回路が、前記複数の前記データのそれぞれに応じた値の加算結果または前記加算結果が調整された結果を演算し、
前記第４回路の前記差分回路が、前記第２回路の前記第１演算回路によって演算された結果と前記第３回路によって演算された結果との差分を出力する、
積和演算方法。
【請求項１２】
請求項１から請求項１０のいずれか１項に記載の積和演算器を含み、
論理演算を実行する、
論理演算デバイス。
【請求項１３】
請求項１から請求項１０のいずれか１項に記載の積和演算器を含み、
前記積和演算器の前記可変抵抗素子は、ニューロモーフィック素子である、
ニューロモーフィックデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、積和演算器、積和演算方法、論理演算デバイスおよびニューロモーフィックデバイスに関する。
【背景技術】
【０００２】
例えば、ニューラルネットワークなどの回路において、積和演算が行われている。このような積和演算をアナログ的に実行する技術の研究が進められている。当該技術では、抵抗が変化する素子（説明の便宜上、「可変抵抗素子」ともいう。）を使用する構成が検討されている。特に、良好な特性を有する素子として、抵抗が線形に変化する可変抵抗素子の使用が検討されている。【０００３】
このような可変抵抗素子として、近年、アナログ的にコンダクタンス（抵抗の逆数）が変化するニューロモーフィック（Ｎｅｕｒｏｍｏｒｐｈｉｃ）素子が注目されている。ニューロモーフィック素子を利用して、積和演算を低電力で高速に実行することが可能な新たな演算機構が研究されている。【０００４】
より具体的には、信号線および可変抵抗素子を用いたアレイによって、ニューラルネットワークの層間の結合を表す回路が実現される。例えば、パルス長あるいは電圧に応じて変調させられた入力信号がアレイに印加される構成とされる。そして、所定の信号線に流れる電流量を積和演算の結果として使用する構成とされる。このような構成では、アレイは、アナログ積和演算器を構成する回路として機能する。なお、デジタル積和演算器を構成する回路として機能するアレイを構成することも可能である。【０００５】
例えば、ニューラルネットワークでは、結合の重みが負の値を持つことがある。このようなニューラルネットワークにおけるアレイによる積和演算を実現するためには、正の値を持つ重みと負の値を持つ重みを表現することが必要である。
ここで、可変抵抗素子は負のコンダクタンスを持つことができないため、積和演算器において、負の値を持つ重みを表現する工夫が為されている。【０００６】
一例として、特許文献１に記載された積和演算装置では、正の値を持つ重みと負の値を持つ重みとで素子列を分離し、これらの重みとして絶対値を割り当て、重みの乗算後に、正の素子列の結果と負の素子列の結果との差分を計算する構成が用いられている（特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１８／０３４１６３号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載された技術では、例えば、重みの正負の符号によって別の素子列を割り当てる機構が必要になり、当該機構および割り当ての制御が煩雑となる場合があった。
また、特許文献１では、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を表現する構成について明らかにされておらず、正の値を持つ重みと負の値を持つ重みとが混在する場合に積和演算を表現する集積回路を実装する構成が明らかでなかった。【０００９】
なお、他の構成例として、それぞれの重みに対して２個の素子を割り当てて、それぞれの重みに対して２個の素子によって正の値と負の値を記憶する構成が考えられる。しかしながら、このような構成では、それぞれの重みに対して２個の素子が必要になることから、アレイの物理的なサイズが大きくなること、正負の符号に応じた割り当ての回路が必要になること、あるいは、どちらかの素子が故障するだけで重みとして機能しなくなるため、大規模アレイ化した場合にはアレイの歩留まり低下やそれに対する冗長領域を設けるなどの策が必要になる、などの課題が発生する。【００１０】
本発明は、このような事情を考慮してなされたもので、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を簡易に実現することができる積和演算器、積和演算方法、論理演算デバイスおよびニューロモーフィックデバイスを提供することを課題とする。
【課題を解決するための手段】
【００１１】
本発明の一態様は、複数のデータのそれぞれに応じた信号を生成する第１回路と、抵抗値が可変である複数の可変抵抗素子のそれぞれによって前記第１回路によって生成された複数の前記信号のそれぞれに重みを乗算してこれら複数の乗算結果の総和を演算する第１演算回路を有する第２回路と、前記複数の前記データのそれぞれに応じた値の加算結果または前記加算結果が調整された結果を演算する第３回路と、前記第２回路の前記第１演算回路によって演算された結果と前記第３回路によって演算された結果との差分を出力する差分回路を有する第４回路と、を備える積和演算器である。【００１２】
本発明の一態様は、積和演算器において、前記第２回路の前記第１演算回路によって演算される結果と、前記第３回路によって演算される結果は、アナログ信号であり、前記第４回路の前記差分回路は、アナログ回路である。
本発明の一態様は、積和演算器において、前記第２回路の前記第１演算回路によって演算される結果と、前記第３回路によって演算される結果は、デジタルデータであり、前記第４回路の前記差分回路は、デジタル回路である。
本発明の一態様は、積和演算器において、前記複数の前記可変抵抗素子において、共通のコンダクタンスの可変な範囲が設定され、前記第２回路の前記第１演算回路は、前記複数の前記乗算結果の総和を取得する容量を有し、前記第３回路によって演算される結果は、（前記複数の前記データのそれぞれに応じた値の前記加算結果）と（前記可変抵抗素子の前記コンダクタンスの可変な範囲の中心値）と｛１／（前記容量）｝とを乗算した結果である。
本発明の一態様は、積和演算器において、前記複数の可変抵抗素子において、共通のコンダクタンスの可変な範囲が設定され、前記第２回路の前記第１演算回路は、前記複数の前記乗算結果の総和を取得する容量を有し、前記第３回路によって演算される結果は、（前記複数の前記データのそれぞれに応じた値の前記加算結果）と（前記可変抵抗素子の前記コンダクタンスの可変な範囲の中心値）と｛１／（前記容量）｝との積に第１係数を乗算した結果と第２係数との和に相当する。【００１３】
本発明の一態様は、積和演算器において、前記第１回路が前記複数の前記データのそれぞれに応じた前記信号を生成することは、前記第１回路が前記複数の前記データのそれぞれに応じたパルス幅変調信号を生成することである。
本発明の一態様は、積和演算器において、前記第１回路が前記複数の前記データのそれぞれに応じた前記信号を生成することは、前記第１回路が前記複数の前記データのそれぞれに応じた振幅変調信号を生成することである。
本発明の一態様は、積和演算器において、前記第２回路は、複数の前記第１演算回路を有し、前記第４回路は、前記複数の前記第１演算回路のそれぞれごとに前記差分回路を有する。
本発明の一態様は、積和演算器において、前記複数の前記データは、時系列の順に前記第３回路に入力され、前記第３回路は、前記時系列の順に、前記複数の前記データのそれぞれに応じた値を加算する。
本発明の一態様は、積和演算器において、前記可変抵抗素子は、磁気抵抗効果を示す磁気抵抗効果素子である。【００１４】
本発明の一態様は、第１回路と第２回路と第３回路と第４回路を備え、前記第２回路は第１演算回路を有し、前記第４回路は差分回路を有する積和演算器において行われる積和演算方法であって、前記第１回路が、複数のデータのそれぞれに応じた信号を生成し、前記第２回路の前記第１演算回路が、抵抗値が可変である複数の可変抵抗素子のそれぞれによって前記第１回路によって生成された複数の前記信号のそれぞれに重みを乗算してこれら複数の乗算結果の総和を演算し、前記第３回路が、前記複数の前記データのそれぞれに応じた値の加算結果または前記加算結果が調整された結果を演算し、前記第４回路の前記差分回路が、前記第２回路の前記第１演算回路によって演算された結果と前記第３回路によって演算された結果との差分を出力する。【００１５】
本発明の一態様は、以上のようないずれかの積和演算器を含み、論理演算を実行する、論理演算デバイスである。
本発明の一態様は、以上のようないずれかの積和演算器を含み、積和演算器の可変抵抗素子は、ニューロモーフィック素子である、ニューロモーフィックデバイスである。
【発明の効果】
【００１６】
本発明の一態様によれば、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を簡易に実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態（第１実施形態）に係る積和演算器の概略的な構成を示す図である。
【図２】本発明の実施形態に係る理論値の具体例を示す図である。
【図３】本発明の実施形態に係る実測値シミュレーションの具体例（電圧に対する補正）を示す図である。
【図４】本発明の実施形態に係る実測値シミュレーションの具体例（電荷量に対する補正）を示す図である。
【図５】本発明の実施形態（第２実施形態）に係る積和演算器の概略的な構成を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照し、本発明の実施形態について説明する。
【００１９】
（第１実施形態）
［積和演算器の構成］
図１は、本発明の実施形態（第１実施形態）に係る積和演算器１の概略的な構成を示す図である。
積和演算器１は、入力部１１と、アレイ部１２と、変換部１３と、出力部１４を備える。
【００２０】
また、図１には、積和演算器１の制御を行う制御部１５を示してある。本実施形態では、制御部１５は、積和演算器１とは別の機能部として構成されている。この場合、積和演算器１および制御部１５は、例えば、所定の装置（例えば、積和演算装置）あるいは所定のシステム（例えば、積和演算システム）に含まれると捉えられてもよい。他の例として、制御部１５は、積和演算器１と一体として構成されてもよい。この場合、積和演算器１は制御部１５を備えると捉えられてもよい。
【００２１】
本実施形態では、アレイ部１２は、Ｎ行Ｍ列のアレイから構成されている。本実施形態では、Ｎは２以上の整数であり、Ｍは２以上の整数である。なお、図１の例では、図示の便宜上、Ｎが３以上の整数である場合を示すが、Ｎは２であってもよい。また、本実施形態では、複数行複数列のアレイを示すが、他の例として、Ｍは１であってもよく、つまり、複数行１列のアレイが用いられてもよい。
【００２２】
ここで、積和演算器１では、複数の回路素子が信号線で接続されている。本実施形態では、説明の便宜上、一部の信号線について符号を付して説明し、他の信号線については符号および詳しい説明を省略する。
なお、有線で信号を伝送する信号線の代わりに、無線で信号を伝送する構成が用いられてもよい。
【００２３】
入力部１１は、Ｎ行分に相当するＮ個の入力レジスタ３１−１〜３１−Ｎと、Ｎ行分に相当するＮ個の入力信号生成回路３２−１〜３２−Ｎと、信号線３３を備える。ここで、入力信号生成回路３２−１〜３２−Ｎは、例えば、出力バッファ、もしくは、入出力バッファの様なドライバ回路とその前段の変調回路との組み合わせを有してもよい。その場合、入力信号生成回路３２−１〜３２−Ｎの変調回路の役割は、入力信号用の源信号（図示せず）から入力レジスタ３１−１〜３１−Ｎの値によって変調した信号をドライバ回路に出力することになる。
【００２４】
アレイ部１２は、（Ｎ×Ｍ）行分に相当する（Ｎ×Ｍ）個の可変抵抗素子４１−１１〜４１−ＮＭと、Ｍ列分に相当するＭ個の信号線４２−１〜４２−Ｍを備える。
図１の例では、可変抵抗素子４１−ｉｊが、ｉ行ｊ列の可変抵抗素子を表している。ｉは１以上Ｎ以下の整数であり、ｊは１以上Ｍ以下の整数である。図１の例では、アレイ部１２において、行方向（図１では縦方向）にＮ個並んだ可変抵抗素子の系統が、列方向（図１の例では横方向）にＭ個並んでいる。本実施形態では、説明の便宜上、ｉ、ｊを用いて説明する場合ある。
【００２５】
本実施形態では、それぞれの可変抵抗素子４１−ｉｊは、ニューロモーフィック素子である。
それぞれの可変抵抗素子４１−ｉｊは、例えば、不揮発性素子であってもよい。
それぞれの可変抵抗素子４１−ｉｊは、例えば、磁気抵抗効果を示す磁気抵抗効果素子であってもよい。磁気抵抗効果素子は、スピンを利用して抵抗を変化させる素子であってもよい。
【００２６】
例えば、コンダクタンスの変化において線形性を有する磁気抵抗効果素子が知られている。このような磁気抵抗効果素子では、例えば、コンダクタンスを変化させる物理量（当該磁気抵抗効果素子が有する２つの強磁性層の磁化の関係）の変化に応じて、コンダクタンスが線形に変化する。また、このような磁気抵抗効果素子では、コンダクタンスの変化において対称性を有するものが知られている。当該対称性は、コンダクタンスの増大の仕方と当該コンダクタンスの減少の仕方との間の対称性である。すなわち、コンダクタンスが一の値から他の値へ増大する場合における当該コンダクタンスの変化率の絶対値と、当該コンダクタンスが当該他の値から当該一の値へ減少する場合における当該コンダクタンスの変化率の絶対値とは、誤差による違いを除いて、一致する。このように、それぞれの可変抵抗素子４１−ｉｊとしては、コンダクタンスの変化において線形性および対称性を有する磁気抵抗効果素子が用いられることが好ましい。
【００２７】
なお、ニューロモーフィック素子としては、任意の素子が用いられてもよい。また、ニューロモーフィック素子としては、例えば、１種類のニューロモーフィック素子が複数組み合わされて用いられてもよく、あるいは、２種類以上のニューロモーフィック素子が組み合わされて用いられてもよい。一例として、ニューロモーフィック素子として、結晶と非晶質との相変化を段階的に制御するＰＣＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｍｅｍｏｒｙ）を使用する素子が用いられてもよい。他の例として、ニューロモーフィック素子として、電気化学的反応により金属析出とイオン化との間のパスの形成および消滅を利用するＣＢＲＡＭ（Ｃｏｎｄｕｃｔｉｖｅ  Ｂｒｉｄｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用する素子が用いられてもよい。他の例として、ニューロモーフィック素子として、スピントロニクス（Ｓｐｉｎｔｒｏｎｉｃｓ）を使用する素子が用いられてもよく、例えば、磁壁の制御による線形的抵抗変化を発生させるドメインウォール型の素子、あるいは、スピン軌道トルク作用による磁化反転を使用したＳＯＴ（Ｓｐｉｎ  Ｏｒｂｉｔ  Ｔｏｒｑｕｅ）型の素子が用いられてもよい。他の例として、ニューロモーフィック素子として、ＴａＯ２等の媒体に金属析出によるフィラメントを形成して抵抗変化を利用するＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を使用する素子が用いられてもよい。
【００２８】
変換部１３は、加算回路１１１と、調整回路１１２と、デジタルアナログ変換器（ＤＡＣ：Ｄｉｇｉｔａｌ  Ａｎａｌｏｇ  Ｃｏｎｖｅｒｔｅｒ）１１３を備える。出力部１４は、Ｍ列分に相当するＭ個の検出回路６１−１〜６１−Ｍと、Ｍ行分に相当するＭ個の差分回路１３１−１〜１３１−Ｍと、Ｍ列分に相当するＭ個の出力端１５１−１〜１５１−Ｍを備える。Ｍ個の差分回路１３１−１〜１３１−Ｍのそれぞれは、例えば、差動回路であってもよく、一例として、オペアンプであってもよい。
【００２９】
ここで、本実施形態では、説明の便宜上、積和演算器１における各回路を幾つかの機能部（例えば、入力部１１、アレイ部１２、変換部１３、出力部１４）に区分して説明するが、このような区分は一例であって、他の任意の区分が用いられてもよい。また、このような区分は、必ずしも用いられなくてもよい。
【００３０】
［積和演算器における各回路の機能および動作］
積和演算器１における各回路の機能および動作の例を説明する。
Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれに、外部の装置から入力されるデータ（説明の便宜上、「入力データ」ともいう。）が記憶される。当該データは、デジタルデータ（「デジタル信号」と呼ばれてもよい。）である。
【００３１】
ここで、当該外部の装置は、任意の装置であってもよい。当該外部の装置は、例えば、データを記憶する記憶装置であってもよく、あるいは、データを出力するコンピュータやセンサなどの素子であってもよい。当該外部の装置は、積和演算器１により演算を行う対象となるデータを、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれに入力する。本実施形態では、積和演算器１へ入力されるデータは、Ｎ行分に相当するＮ個のデータの組み合わせである。なお、積和演算器１へのデータの入力としては、例えば、外部の装置が主導して当該データを積和演算器１に入力してもよく、あるいは、積和演算器１が主導して外部の装置から当該データを入力してもよい。
【００３２】
ｉ行目の入力レジスタ３１−ｉは、記憶されたデータを、ｉ行目の入力信号生成回路３２−ｉに出力する。ここで、本実施形態では、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれは、これらＮ個の入力レジスタ３１−１〜３１−Ｎについて時系列の順に入力されたＮ個のデータのそれぞれを、時系列の順に出力する。これにより、本実施形態では、積和演算器１へ入力されるＮ行分のＮ個のデータの組み合わせは、その組み合わせのまま処理されていく。なお、このような処理が実現されれば、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれにデータが入力されるタイミング、あるいは、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれからデータが出力されるタイミングとしては、任意のタイミングが用いられてもよい。
【００３３】
Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれから出力されるデータは、加算回路１１１にも伝送される。本実施形態では、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれから出力されるデータが同一の信号線３３に入力されて、当該信号線３３を介して、加算回路１１１に伝送される。
【００３４】
ここで、それぞれの入力レジスタ３１−１〜３１−Ｎは、例えば、所定の範囲の値をカウント値として記憶する機能を有する。当該所定の範囲は、任意の範囲であってもよく、例えば、０〜２５５の２５６個の値の範囲であってもよい。この場合、入力データは、例えば、当該所定の範囲と同じ範囲の値、あるいは、当該所定の範囲よりも狭い範囲の値とされる。本実施形態では、当該カウント値に応じて生成されるパルス幅変調（ＰＷＭ：Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）の信号のパルスの波形の長さ（パルス長）が当該カウント値に相当する。当該カウント値は、入力データの値、あるいは、入力データの値が換算された値であると捉えられてもよい。
【００３５】
ｉ行目の入力信号生成回路３２−ｉは、ｉ行目の入力レジスタ３１−ｉから入力されたデータに基づいて、アレイ部１２に入力させる信号（説明の便宜上、「入力信号」ともいう。）を生成する。具体的には、ｉ行目の入力信号生成回路３２−ｉは、入力されたデータの値に相当する幅（パルス長）を有する信号（パルス幅変調信号）を、入力信号として、生成する。そして、ｉ行目の入力信号生成回路３２−ｉは、生成された入力信号を、アレイ部１２におけるｉ行目にあるＭ個の可変抵抗素子４１−ｉ１〜４１−ｉＭのそれぞれに出力する。
【００３６】
ここで、図１には、Ｎ個の入力信号生成回路３２−１〜３２−Ｎのそれぞれによって生成される入力信号１０１１−１〜１０１１−Ｎの例を示してある。図１における入力信号１０１１−１〜１０１１−Ｎの形状およびタイミングは概略であって、必ずしも正確ではない。それぞれの入力信号１０１１−１〜１０１１−Ｎは、電圧のパルスの信号である。本実施形態では、当該パルスの高さ（電圧の値）は、同じ（一定）である。それぞれの入力信号生成回路３２−１〜３２−Ｎは、例えば、所定の時間単位で処理を行う。当該所定の時間単位は、例えば、１０［ｎｓ］、あるいは、１０［μｓ］などであってもよい。
【００３７】
ｉ行目にあるＭ個の可変抵抗素子４１−ｉ１〜４１−ｉＭのそれぞれには、ｉ行目の入力信号生成回路３２−ｉから出力される入力信号が入力される。また、ｉ行目にあるＭ個の可変抵抗素子４１−ｉ１〜４１−ｉＭのそれぞれは、入力された入力信号の電圧と当該可変抵抗素子４１−ｉ１〜４１−ｉＭの抵抗値によって決まる電流を出力する。
【００３８】
ｊ列目にあるＮ個の可変抵抗素子４１−１ｊ〜４１−Ｎｊのそれぞれは、列ごとに共通となっている同一の信号線４２−ｊに電流を出力する。本実施形態では、ｊ列目にあるＮ個の可変抵抗素子４１−１ｊ〜４１−Ｎｊのそれぞれから出力される電流が同一の信号線４２−ｊに入力されて、当該信号線４２−ｊを介して、ｊ列目の検出回路６１−ｊに流れる。
【００３９】
ここで、それぞれの可変抵抗素子４１−１１〜４１−ＮＭのコンダクタンスの値によって重みが実現される。つまり、それぞれの可変抵抗素子４１−１１〜４１−ＮＭでは、入力信号である電圧のパルスと重みとの乗算結果に相当する電流が出力される。当該電流は、オームの法則によって、入力信号と重み（本実施形態では、コンダクタンスの値）との積が演算された結果であると捉えられる。この場合、それぞれの可変抵抗素子４１−１１〜４１−ＮＭは、積演算部であると捉えられる。コンダクタンスは抵抗の逆数を表すことから、それぞれの可変抵抗素子４１−１１〜４１−ＮＭは、２以上の異なる抵抗値を取り得ることから、２以上の異なるコンダクタンスの値を取り得る。
【００４０】
また、列ごとに共通な信号線（ｊ列目では、信号線４２−ｊ）では、Ｎ個の可変抵抗素子（ｊ列目では、Ｎ個の可変抵抗素子４１−１ｊ〜４１−Ｎｊ）から出力される電流が伝送される。これにより、列ごとの検出回路（ｊ列目では、検出回路６１−ｊ）において、これらの電流の和を演算することが可能になる。つまり、ｊ列目における積和演算が実現される。
このような積和演算の動作が、Ｍ列のすべてについて行われることで、Ｍ列の積和演算が実現される。
【００４１】
加算回路１１１は、信号線３３から入力されたデータを加算する。すなわち、加算回路１１１は、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれから出力されたデータをデジタル演算により加算する。加算回路１１１は、加算結果のデータを調整回路１１２に出力する。本実施形態では、加算回路１１１は、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれから時系列順で出力されたデータを順に加算することで、Ｎ個の入力信号生成回路３２−１〜３２−Ｎのカウント値の総和を演算する。
【００４２】
なお、本実施形態では、加算回路１１１は、Ｎ個の入力レジスタ３１−１〜３１−Ｎのそれぞれから出力されたデータのすべてを加算する場合を示したが、他の例として、例えば、０の値を有するデータについては加算回路１１１による加算対象から除外する構成が用いられてもよい。つまり、加算回路１１１では、０の値を有するデータが加算対象から除外されても、加算結果は同じになる。
【００４３】
調整回路１１２は、加算回路１１１から入力されたデータに対して所定の演算を行うことで所定の調整を行い、調整後のデータ（演算後のデータ）をデジタルアナログ変換器１１３に出力する。当該所定の調整は、例えば、入力されたデータに所定の係数を乗算する演算、入力されたデータに所定の係数を加算する演算、あるいは、入力されたデータに所定の係数を演算した結果に所定の係数を加算する演算などであってもよい。
【００４４】
デジタルアナログ変換器１１３は、調整回路１１２から入力されたデータをデジタルデータからアナログ信号へ変換し、変換されたアナログ信号を、Ｍ個の差分回路１３１−１〜１３１−Ｍのそれぞれに出力する。当該アナログ信号では、当該デジタルデータの値が当該アナログ信号の電圧の値に反映されている。つまり、デジタルアナログ変換器１１３は、入力されたデジタルデータを、あらかじめ定められた範囲のアナログ信号へ変換する。当該範囲は、例えば、ダイナミックレンジと呼ばれてもよい。デジタルアナログ変換器１１３では、例えば、入力されるデジタルデータの値と、出力されるアナログ信号とが、線形に、１対１で、対応する。
【００４５】
デジタルアナログ変換器１１３から出力されるアナログ信号は、例えば、式（１）により表される。なお、デジタルアナログ変換器１１３によるデジタルアナログ変換が１対１の変換である場合、式（１）は、調整回路１１２から出力される調整後のデータを間接的に表すと考えることもできる。
【００４６】
式（１）におけるパラメータであるＶｃ、Ｐｒ、Ｖｒ、Ｇｍ、Ｃｄを説明する。Ｖｃは、デジタルアナログ変換器１１３から出力されるアナログ信号の電圧を表す。Ｐｒは、ｒ行目の入力レジスタ３１−ｒから出力されるデータの値を表す。当該値は、ｒ行目の入力信号生成回路３２−ｒから出力されるパルス幅変調信号のパルスの幅に相当する。ｒは１以上Ｎ以下の整数である。Ｖｒは、ｒ行目の入力信号生成回路３２−ｒから出力されるパルス幅変調信号の電圧を表す。本実施形態では、すべての入力信号生成回路３２−１〜３２−Ｎから出力されるパルス幅変調信号の電圧は同じである。
【００４７】
Σ（Ｐｒ×Ｖｒ）は、ｒが１からＮまでの値をとるときにおける（Ｐｒ×Ｖｒ）の総和を表す。なお、本実施形態では、Ｖｒが一定であるため、Σ（Ｐｒ×Ｖｒ）は、｛（ΣＰｒ）×Ｖｒ｝と等しくなる。本実施形態では、Ｐｒの総和は、加算回路１１１によって演算される。そして、当該総和以外の演算が調整回路１１２およびデジタルアナログ変換器１１３によって行われる。
【００４８】
Ｇｍは、可変抵抗素子４１−１１〜４１−ＮＭのコンダクタンスの可変な範囲の中心値を表す。本実施形態では、理想的な場合を想定しており、すべての可変抵抗素子４１−１１〜４１−ＮＭについて、コンダクタンスの可変な範囲は同じであるとする。なお、実際には、可変なコンダクタンスの範囲がまったく同じすべての素子を製造することは困難であるため、例えば、現実的な手法として、ビット線を共有するすべての素子に共通に適用することが可能なコンダクタンスの範囲を設定する。
【００４９】
Ｃｄは、検出回路６１−１〜６１−Ｍを構成するコンデンサの容量を表す。本実施形態では、すべての検出回路６１−１〜６１−Ｍについて、コンデンサの容量は同じである。Ｋ１およびＫ２は、それぞれ、係数を表す。これらの係数Ｋ１、Ｋ２は、例えば、実際の回路素子に発生する個体差などによるばらつきの誤差、あるいは、温度変動などによる誤差を補正するための係数である。係数Ｋ１はゲインの補正を行う係数であり、係数Ｋ２はオフセットの補正を行う係数である。なお、係数Ｋ１と係数Ｋ２とのうちの一方または両方が使用されない構成が用いられてもよい。
【００５０】
【数１】
0006521207.tif 000002
【００５１】
ここで、係数Ｋ１および係数Ｋ２は、例えば、あらかじめ積和演算器１における演算結果を実測した結果あるいは他の参考となる情報に基づいて、調整回路１１２による調整の仕方、あるいは、デジタルアナログ変換器１１３の特性のうちの一方または両方に反映されてもよい。調整回路１１２には、例えば、あらかじめ、調整前のデータから調整後のデータを演算する手法が設定される。当該手法は、例えば、調整前のデータから調整後のデータを演算する式の情報を用いて特定されてもよい。
【００５２】
また、係数Ｋ１および係数Ｋ２が使用されない構成が用いられてもよい。この場合、デジタルアナログ変換器１１３から出力されるアナログ信号は、例えば、式（２）により表される。式（２）は、式（１）において係数Ｋ１を１に、係数Ｋ２を０に設定した場合と同等である。
【００５３】
【数２】
0006521207.tif 000003
【００５４】
ここで、本実施形態では、加算回路１１１と調整回路１１２との両方によって、総じて、あらかじめ定められた演算を行う。本実施形態では、加算回路１１１と調整回路１１２とに分けて当該演算を行う構成を示したが、他の例として、１個の回路によって同様な演算を行う構成、あるいは、２個以上の任意の回路の組み合わせによって同様な演算を行う構成が用いられてもよい。
【００５５】
ｊ列目の検出回路６１−ｊは、ｊ列目にあるＮ個の可変抵抗素子４１−１ｊ〜４１−Ｎｊのそれぞれから同一の信号線４２−ｊに出力された電流を総和する。ｊ列目の検出回路６１−ｊは、総和された電流の総和結果に応じた電圧を有するアナログ信号を、ｊ列目の差分回路１３１−ｊに出力する。
【００５６】
ここで、本実施形態では、Ｍ個の検出回路６１−１〜６１−Ｍのそれぞれは、コンデンサを用いて構成されている。ｊ列目の検出回路６１−ｊでは、ｊ列目にあるＮ個の可変抵抗素子４１−１ｊ〜４１−Ｎｊのそれぞれから同一の信号線４２−ｊに出力された電流によって、当該コンデンサに電荷が蓄えられる。当該電荷は、当該電流の総和に比例する。ｊ列目の検出回路６１−ｊは、総和された電流の総和結果に応じた電圧を有するアナログ信号として、当該コンデンサに蓄えらえた電荷に応じた電圧を有するアナログ信号を、ｊ列目の差分回路１３１−ｊに出力する。なお、本実施形態では、Ｍ個の検出回路６１−１〜６１−Ｍについて、それぞれの検出回路６１−１〜６１−Ｍのコンデンサの容量は同じである。
【００５７】
Ｍ個の検出回路６１−１〜６１−Ｍのそれぞれは、それぞれの信号線（ｊ列目の検出回路６１−ｊの場合は、信号線４２−ｊ）に流れる電流量の総和を電圧へ変換するＱＶ変換回路であると捉えられてもよい。
【００５８】
ｊ列目の差分回路１３１−ｊは、一の入力端であるプラス端子（＋端子）と、他の入力端であるマイナス端子（−端子）と、出力端を有する。  ｊ列目の差分回路１３１−ｊは、ｊ列目の検出回路６１−ｊから出力されたアナログ信号をプラス端子から入力し、デジタルアナログ変換器１１３から出力されたアナログ信号をマイナス端子から入力する。ｊ列目の差分回路１３１−ｊは、プラス端子の入力信号からマイナス端子の入力信号を減算した結果の信号を出力端から出力する。当該信号は、ｊ列目の出力端１５１−ｊに出力される。当該信号は、アナログ信号である。本実施形態では、ｊ列目の差分回路１３１−ｊは、入力された２個の信号の電圧の差分に相当する電圧を有する信号を出力する。本実施形態では、当該差分は、プラス端子の入力信号からマイナス端子の入力信号を減算した結果である。
【００５９】
ｊ列目の出力端１５１−ｊは、ｊ列目の差分回路１３１−ｊから入力された信号を出力する。
ここで、当該信号は、任意の用途で使用されてもよい。一例として、当該信号は、ニューラルネットワークにおける積和演算結果を使用する回路（図示せず）に入力されて使用されてもよい。
なお、本実施形態では、検出回路６１−１〜６１−Ｍおよび差分回路１３１−１〜１３１−Ｍとしては、Ｍ列の各列に対して１組の回路を割り当てて説明したが、必ずしも列と同じ数の回路の組が備えられる必要はない。例えば、Ｍ列の各列に対して、１個の検出回路および１個の差分回路を時分割で割り当てて、多重化することも可能である。
【００６０】
制御部１５は、（Ｎ×Ｍ）個の可変抵抗素子４１−１１〜４１−ＮＭのそれぞれの重みを制御する。制御部１５は、例えば、それぞれの可変抵抗素子４１−１１〜４１−ＮＭの制御端子に印加される電圧の値あるいはそれぞれの可変抵抗素子４１−１１〜４１−ＮＭに与える磁場（磁界）を制御することで、それぞれの可変抵抗素子４１−１１〜４１−ＮＭの重みを制御する。当該重みは、コンダクタンスに応じた値（あるいは、抵抗に応じた値と捉えられてもよい。）であり、制御部１５による制御に応じて変化し得る。制御部１５は、それぞれの可変抵抗素子４１−１１〜４１−ＮＭの重みを、変化可能な範囲で、所望の値に変化させることができる。また、制御部１５は、積和演算器１における任意の設定値を設定してもよい。このような設定としては、例えば、初期設定であってもよく、あるいは、既に設定されている値を変更する設定であってもよい。当該設定値に、式（１）および式（２）に含まれる１以上のパラメータが含まれてもよい。
【００６１】
［アレイ部における負の重み］
本実施形態に係る積和演算器１では、それぞれの検出回路６１−１〜６１−Ｍによる検出結果を補正することで、積和演算のアレイにおいて負の重みが用いられる場合と同じ演算結果（または、同じではないが相関のある演算結果でもよく、以下も同様。）を演算することが可能である。つまり、（Ｎ×Ｍ）個の可変抵抗素子４１−１１〜４１−ＮＭのそれぞれでは正のコンダクタンス（正の抵抗値）を取り得るが、負のコンダクタンス（負の抵抗値）を取ることができない。このため、本実施形態に係るアレイ部１２の構成だけでは、負の重みを表現することができない。そこで、本実施形態では、それぞれの検出回路６１−１〜６１−Ｍによる検出結果を補正することで、負の重みが用いられる場合を表現することを可能にしている。なお、本実施形態では、正のコンダクタンス（正の抵抗値）によって表現され得る重みを、正の重み（正の値を持つ重み）としている。そして、このような正の重みに対して正負の符号が逆になった重みを、負の重み（負の値を持つ重み）としている。
【００６２】
［理論値の具体例］
図２は、本発明の実施形態に係る理論値の具体例を示す図である。
図２には、理論値の具体例が記述されたテーブル２０１１を示してある。
【００６３】
テーブル２０１１の内容について説明する。テーブル２０１１には、２つのケースとして、ケース１（テーブル２０１１における“Ｃａｓｅ１”）と、ケース２（テーブル２０１１における“Ｃａｓｅ２”）が示されている。
【００６４】
ケース１について説明する。本例では、アレイ部１２において、ｊ列目に５（Ｎ＝５）個の可変抵抗素子４１−１ｊ〜４１−５ｊが備えられている場合を例として示す。テーブル２０１１において、５個の可変抵抗素子４１−１ｊ〜４１−５ｊが、行数を表す“１”〜“５”（ｉ＝１〜５）で示されている。テーブル２０１１において、“１”〜“５”についての総和結果が“ｓｕｍ”に示されている。テーブル２０１１において、入力データの値が“入力”で示されている。
【００６５】
テーブル２０１１において、正の値を持つ重みと負の値を持つ重みが用いられて、本実施形態における積和演算の補正が行われないときの数値の例が“計算上の重み”に示されている。“計算上の重み”において、“重み”には、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれの重みの値が示されている。本例では、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれの重みは、−０．５以上＋０．５以下の範囲の値を取る。また、“計算上の重み”において、“積和演算”には、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれによる積の結果と、これらの積和の結果（“ｓｕｍ”の欄）が示されている。
【００６６】
テーブル２０１１において、アレイ部１２において正の値を持つ重みが用いられるが負の値を持つ重みが用いられない構成であって、本実施形態における積和演算の補正が行われるときの数値の例が“重みを正値にシフト”に示されている。“重みを正値にシフト”において、“重み”には、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれのシフト後の重みの値が示されている。本例では、“計算上の重み”における“重み”に＋０．５を加算した結果が、“重みを正値にシフト”における“重み”となっている。つまり、本例では、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれの重みは、＋０．５シフトされることで、０．０以上＋１．０以下の範囲の値を取る。また、“重みを正値にシフト”において、“積和演算”には、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれによる積の結果と、これらの積和の結果（“ｓｕｍ”の欄）が示されている。なお、このような重みのシフトの情報は、例えば、あらかじめ、制御部１５に設定されてもよい。つまり、制御部１５は、シフトされた重みとなるように、それぞれの可変抵抗素子４１−１１〜４１−ＮＭ（本例では、可変抵抗素子４１−１ｊ〜４１−５ｊ）の重みを制御してもよい。
【００６７】
“重みを正値にシフト”における“積和演算”の積和演算結果（“ｓｕｍ”の欄）である“１．５５”は、“計算上の重み”における“積和演算”の積和演算結果（“ｓｕｍ”の欄）である“０．３”に対して、“入力”の総和である“２．５”を１／２倍した結果である“１．２５”シフトしている。つまり、“重みを正値にシフト”における“積和演算”の積和演算結果である“１．５５”に対して、このようなシフトと逆のシフト（つまり、“−１．２５”のシフト）を与えると、“計算上の重み”における“積和演算”の積和演算結果である“０．３”が得られる。本実施形態では、変換部１３および差分回路１３１−１〜１３１−Ｍによって、このような逆のシフトを行う。このような逆のシフトを行うための情報が、例えば、あらかじめ、変換部１３の調整回路１１２およびデジタルアナログ変換器１１３に設定されてもよい。
【００６８】
このように、負の値を持つ重みと正の値を持つ重みが混在する場合に、これらの重みのすべてが正の値を持つように、すべての重みに所定値Ａ１（Ａ１は所定の正の値）を加算すると、正の値（０があってもよい）を持つ重みだけが存在する場合の演算とすることができる。また、このような演算の結果から所定値Ｂ１（Ｂ１は所定の正の値）を減算することで、元の場合つまり負の値を持つ重みと正の値を持つ重みが混在する場合の演算結果と同じ演算結果を得ることができる。
【００６９】
本実施形態に係る積和演算器１では、このような原理を利用している。つまり、アレイ部１２によって、“重みを正値にシフト”に相当する積和演算を行う。また、変換部１３および差分回路１３１−１〜１３１−Ｍによって、元の場合つまり負の値を持つ重みと正の値を持つ重みが混在する場合の演算結果を得るための補正を行う。本実施形態に係る積和演算器１では、可変抵抗素子４１−１１〜４１−ＮＭを使用して、変換後の重み（シフト後の重み）に対する積和演算をアナログ的に実行し、その結果に対して補正を行うことで、負の値を持つ重みと正の値を持つ重みが混在する場合の演算結果を得ることが可能である。
【００７０】
なお、テーブル２０１１におけるケース２についても、ケース１と同様な記述の仕方となっている。ケース２では、ケース１とは異なる数値の例が示されている。
【００７１】
ここで、テーブル２０１１におけるケース１およびケース２は、例えば、５次元（テーブル２０１１における“１”〜“５”）の入力を持つ１層のニューラルネットにおける積和演算を表す。“計算上の重み”の情報は、負の値を持つ重みと正の値を持つ重みが混在する場合に計算機で計算したシミュレーションの結果の情報を表す。“重みを正値にシフト”の情報は、正の値（０があってもよい）を持つ重みだけが存在するようにシフトされた場合に計算機で計算したシミュレーションの結果の情報を表す。
【００７２】
［実測値シミュレーションの具体例：電圧に対する補正］
図３は、本発明の実施形態に係る実測値シミュレーションの具体例（電圧に対する補正）を示す図である。図３には、実測値のシミュレーションが行われた結果の具体例（電圧に対する補正）が記述されたテーブル２０２１が示されている。ここで、図２の例は理論的な例であり、図３の例は実測値の例である。このため、図３の例では、理論的な値からずれた数値を取り得る。また、計算上の有効桁数の関係で、多少の計算誤差が発生し得る。
【００７３】
テーブル２０２１の内容について説明する。テーブル２０２１には、２つのケースとして、ケース１（テーブル２０２１における“Ｃａｓｅ１”）と、ケース２（テーブル２０２１における“Ｃａｓｅ２”）が示されている。
【００７４】
ケース１について説明する。
本例では、アレイ部１２において、ｊ列目に５（Ｎ＝５）個の可変抵抗素子４１−１ｊ〜４１−５ｊが備えられている場合を例として示す。テーブル２０２１において、５個の可変抵抗素子４１−１ｊ〜４１−５ｊが、行数を表す“１”〜“５”（ｉ＝１〜５）で示されている。テーブル２０２１において、“１”〜“５”についての総和結果が“ｓｕｍ”に示されている。テーブル２０２１において、入力データの値が“入力”で示されている。本例では、入力データのレンジが０〜１の範囲となっている。
【００７５】
テーブル２０２１において、正の値を持つ重みと負の値を持つ重みが用いられて、本実施形態における積和演算の補正が行われないときの数値の例が“計算機での計算”に示されている。“計算機での計算”において、“重み”には、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれの重みの値が示されている。本例では、重みのレンジが−１〜＋１の範囲となっている。また、“計算機での計算”において、“積和演算”には、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれによる積の結果と、これらの積和の結果（“ｓｕｍ”の欄）が示されている。本例では、積和演算の結果のレンジが−５〜＋５の範囲となっている。
【００７６】
テーブル２０２１において、アレイ部１２において正の値を持つ重みが用いられるが負の値を持つ重みが用いられない構成であって、本実施形態における積和演算の補正が行われるときの数値の例が“ニューロモーフィックアレイを使用した計算”に示されている。  “ニューロモーフィックアレイを使用した計算”において、“入力特性”、“素子”、“アレイ出力”、“容量”、“電圧出力”、“電圧補正”、“規格化”が示されている。
【００７７】
“入力特性”は、入力データに関する情報を表す。“入力特性”において、“カウント値”、“パルス幅（ｎｓ）”、“Ｅ（Ｖ）”が示されている。“カウント値”は、入力データの値を表す。本例では、当該値は、パルス状の波の長さ（パルス幅）を決める値に相当する。“パルス幅”は、パルス幅変調信号である入力信号のパルス幅を表す。本例では、“パルス幅”は、例えば、単位パルス幅を１０（ｎｓ）に設定している場合、“カウンタ値”の１０倍の値となる。
“Ｅ（Ｖ）”は、パルス幅変調信号である入力信号の電圧を表す。本例では、当該電圧は一定である。
【００７８】
“素子”は、可変抵抗素子４１−１ｊ〜４１−５ｊに関する情報を表す。“素子”において、“Ｇ（μＳ）”が示されている。“Ｇ（μＳ）”は、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれのコンダクタンスの値を表す。本例では、コンダクタンスのレンジが１（μＳ）〜２（μＳ）の範囲となっている。
【００７９】
“アレイ出力”は、アレイ部１２からの出力および検出回路６１−ｊに関する情報を表す。“アレイ出力”において、“Ｉ（μＡ）”、“Ｑ（Ｃ）”が示されている。
“Ｉ（μＡ）”は、５個の可変抵抗素子４１−１ｊ〜４１−５ｊのそれぞれから出力される電流を表す。本例では、各電流のレンジが０．２（μＡ）〜０．４（μＡ）の範囲となっている。本例では、電流の合計値のレンジが１（μＡ）〜２（μＡ）の範囲となっている。
“Ｑ（Ｃ）”は、検出回路６１−ｊに蓄積される電荷量を表す。
【００８０】
“容量”は、検出回路６１−ｊに関する情報を表す。
“容量”において、“Ｃ（Ｆ）”が示されている。
“Ｃ（Ｆ）”は、検出回路６１−ｊを構成するコンデンサの容量を表す。
なお、テーブル２０２１では、便宜上、当該容量が“ｓｕｍ”の欄に記述されている。
【００８１】
“電圧出力”は、検出回路６１−ｊに関する情報を表す。
“電圧出力”において、“出力電圧（μＶ）”が示されている。本例では、電圧出力のレンジが１２７５（μＶ）〜２５５０（μＶ）の範囲となっている。
“出力電圧（μＶ）”は、検出回路６１−ｊから出力される電圧を表す。
なお、テーブル２０２１では、便宜上、当該電圧が“ｓｕｍ”の欄に記述されている。
【００８２】
“電圧補正”は、デジタルアナログ変換器１１３および差分回路１３１−ｊに関する情報を表す。
“電圧補正”において、“Δ”、“出力電圧（μＶ）”が示されている。
“Δ”は、デジタルアナログ変換器１１３から差分回路１３１−ｊに出力されるアナログ信号の電圧を表す。
“出力電圧（μＶ）”は、差分回路１３１−ｊから出力される電圧を表す。
なお、テーブル２０２１では、便宜上、当該Δおよび当該電圧が“ｓｕｍ”の欄に記述されている。
【００８３】
“規格化”は、規格化に関する情報を表す。
“規格化”において、“値レンジ：±５”が示されている。
“値レンジ：±５”は、電圧と±５の値とを規格化した結果の値を表す。
なお、テーブル２０２１では、便宜上、当該値が“ｓｕｍ”の欄に記述されている。
【００８４】
ここで、“電圧補正”の電圧補正量である“Δ”の計算は、例えば、Δ＝｛入力信号のパルスの長さの総和（ｓ）｝×（平均電流量）／（検出容量）、または、これに１以上の係数を含めた式で表される。当該係数としては、例えば、ゲインの係数とシフトの係数との一方または両方が用いられてもよい。
【００８５】
また、規格化では、積和演算の結果に合わせることが行われる。
本例では、補正後の電圧のレンジである−１２７５（μＶ）〜＋１２７５（μＶ）の範囲が、積和演算の結果のレンジである−５〜＋５に対応する。このため、“規格化”の演算は、規格化の結果の値＝（補正後の電圧）／｛２５５０（μＶ）／２｝×５で表される。
【００８６】
なお、テーブル２０２１におけるケース２についても、ケース１と同様な記述の仕方となっている。ケース２では、ケース１とは異なる数値の例が示されている。
【００８７】
例えば、テーブル２０２１におけるケース１に示されるような数値に合った演算が行われるように、本実施形態に係る積和演算器１および制御部１５に所定の設定値が設定されることで、テーブル２０２１におけるケース１に示されるような演算が実現される。
また、テーブル２０２１におけるケース１に示される数値は一例であり、他の様々な数値に合った演算を積和演算器１により実現することが可能である。
【００８８】
［実測値シミュレーションの具体例：電荷量に対する補正］
図４は、本発明の実施形態に係る実測値シミュレーションの具体例（電荷量に対する補正）を示す図である。
図４には、実測値のシミュレーションが行われた結果の具体例（電荷量に対する補正）が記述されたテーブル２０３１が示されている。
【００８９】
ここで、図３の例では電圧に対する補正について説明したが、図４の例では電荷量に対する補正を説明する。
図４の例では、ｊ列目の検出回路６１−ｊに蓄積される電荷量を補正することを想定する。
一例として、積和演算器１において、ｊ列目の検出回路６１−ｊとｊ列目の差分回路１３１−ｊの組み合わせの代わりに、ｊ列目の電流の総和（電荷量）の検出および補正を行う回路を備え、当該回路が、ｊ列目の信号線４２−ｊを流れてくる電流を蓄積し、変換部１３から出力される電圧に応じた電荷量を蓄積された電流の総和（電荷量）から減算し、当該減算の結果に応じた電圧を有する信号をｊ列目の出力端１５１−ｊに出力することで、電荷量に対する補正が実現されてもよい。
【００９０】
テーブル２０３１の内容について説明する。
なお、図３に示されるテーブル２０２１と同様な部分については、詳しい説明を省略する。
テーブル２０３１には、２つのケースとして、ケース１（テーブル２０３１における“Ｃａｓｅ１”）と、ケース２（テーブル２０３１における“Ｃａｓｅ２”）が示されている。
【００９１】
ケース１について説明する。
本例では、アレイ部１２において、ｊ列目に５（Ｎ＝５）個の可変抵抗素子４１−１ｊ〜４１−５ｊが備えられている場合を例として示す。テーブル２０３１において、５個の可変抵抗素子４１−１ｊ〜４１−５ｊが、行数を表す“１”〜“５”（ｉ＝１〜５）で示されている。テーブル２０３１において、“１”〜“５”についての総和結果が“ｓｕｍ”に示されている。
【００９２】
テーブル２０３１における“入力”は、図３に示されるテーブル２０２１の場合と同様な情報を表す。テーブル２０３１において、正の値を持つ重みと負の値を持つ重みが用いられて、積和演算の補正が行われないときの数値の例が“計算機での計算”に示されている。テーブル２０３１における“計算機での計算”の“重み”および“積和演算” は、図３に示されるテーブル２０２１の場合と同様な情報を表す。
【００９３】
テーブル２０３１において、アレイ部１２において正の値を持つ重みが用いられるが負の値を持つ重みが用いられない構成であって、本実施形態における積和演算の補正が行われるときの数値の例が“ニューロモーフィックアレイを使用した計算”に示されている。
“ニューロモーフィックアレイを使用した計算”において、“入力特性”、“素子”、“アレイ出力”、“電荷量補正”、“容量”、“電圧出力”、“規格化”が示されている。
【００９４】
テーブル２０３１において、“入力特性”の“カウント値”と“パルス幅（ｎｓ）”と“Ｅ（Ｖ）”、“素子”の“Ｇ（μＳ）”、“アレイ出力”の“Ｉ（μＡ）”と“Ｑ（Ｃ）”、“容量”の“Ｃ（Ｆ）”、“規格化”については、図３に示されるテーブル２０２１の場合と同様な情報を表す。
【００９５】
テーブル２０３１において、“電荷量補正”は、電荷量に対する補正に関する情報を表す。“電荷量補正”において、“Δ”、“補正後Ｑ”が示されている。“Δ”は、デジタルアナログ変換器１１３から出力されるアナログ信号の電流の総和（電荷量）を表す。“補正後Ｑ”は、補正後の電荷量を表す。
【００９６】
テーブル２０３１において、“電圧出力”は、出力端１５１−ｊから出力される電圧に関する情報を表す。“電圧出力”において、“出力電圧（μＶ）”が示されている。“出力電圧（μＶ）”は、出力端１５１−ｊから出力される電圧の値を表す。
【００９７】
テーブル２０３１に示されるように電荷量に対する補正が行われる場合においても、テーブル２０２１に示されるように電圧に対する補正が行われる場合と同様に、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を実現することができる。
【００９８】
［入力信号の他の例］
本実施形態では、入力信号生成回路３２−１〜３２−Ｎによって、パルス幅変調の信号を生成する場合を示したが、他の例として、振幅変調の信号を生成してもよい。この場合、Ｎ個の入力信号生成回路３２−１〜３２−Ｎのそれぞれは、入力されたデータの値に相当する振幅を有する振幅変調信号を、入力信号として、生成する。この場合、振幅変調信号の波形の高さが入力レジスタ３１−１〜３１−Ｎのカウント値に相当する。
【００９９】
ここで、入力信号としてパルス幅変調信号が生成される場合と、入力信号として振幅変調信号が生成される場合とで、時間（幅）について振幅を積分した結果は相関を持つ。例えば、それぞれの入力信号生成回路３２−１〜３２−Ｎによって入力信号を生成する際の係数などを調整することで、入力信号としてパルス幅変調信号が生成される場合と、入力信号として振幅変調信号が生成される場合とで、時間（幅）について振幅を積分した結果を同じにすることが可能である。
【０１００】
［変換部における調整回路の他の例］
本実施形態では、変換部１３に加算回路１１１と調整回路１１２とデジタルアナログ変換器１１３が備えられたが、他の例として、調整回路１１２が備えられなくてもよい。例えば、調整回路１１２による調整が行われなくても実用上で支障がない程度の精度が得られる場合には、調整回路１１２が備えられなくてもよい。つまり、変換部１３は加算回路１１１とデジタルアナログ変換器１１３を備え、加算回路１１１からの出力がデジタルアナログ変換器１１３に入力されてもよい。なお、例えば、調整回路１１２による調整が行われないと十分な精度が得られないような場合には、調整回路１１２が備えられる構成が好ましい。例えば、実際の素子製造ばらつきや、回路の温度ドリフトなどを動的に補正する様な機構を調整回路１１２に設けてもよい。
【０１０１】
［第１実施形態のまとめ］
以上のように、本実施形態に係る積和演算器１では、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を簡易に実現することができる。本実施形態に係る積和演算器１では、アナログ方式により、当該積和演算を行う。
本実施形態に係る積和演算器１では、アレイ部１２および検出回路６１−１〜６１−Ｍによる積和演算の結果を補正することで負の重みを表現することが可能である。これにより、積和演算器１では、例えば、１個の可変抵抗素子４１−１１〜４１−ＮＭごとに、正または負の値を持つ１個の重みを表現することができる。
【０１０２】
本実施形態では、好ましくは、可変抵抗素子４１−１１〜４１−ＮＭとして、コンダクタンスの値の変化特性が対称性を有する素子が用いられる。当該素子は、例えば、スピンの対称性を利用する素子であってもよい。
【０１０３】
なお、従来のニューロモーフィック素子は、コンダクタンスの値の変化特性が対称性を有しない素子であった。このため、従来では、本質的には、このような素子を２個使用することが前提であった。あるいは、対称性が悪い素子でこの様な演算機構を構成しようとすると、正負各々の重みの値を素子の非対称性コンダクタンスに適切に設定するための制御が複雑になる問題があった。これに対して、近年、コンダクタンスの値の変化特性が対称性を有する素子が実現された。これに応じて、本願では、このような素子を使用して、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を表現することが考えられている。つまり、従来では、本実施形態に係る積和演算器１を開発するきっかけとなる課題は存在しておらず、本願にあたって、当該課題が新規に認識された。
【０１０４】
［構成例］
積和演算器１などの構成例を示す。なお、本発明は、以下の構成例に限定されない。
本実施形態に係る積和演算器１では、第１回路（図１の例では、入力信号生成回路３２−１〜３２−Ｎ）と、第２回路（図１の例では、アレイ部１２の回路および検出回路６１−１〜６１−Ｍ）と、第３回路（図１の例では、変換部１３の回路）と、第４回路（図１の例では、差分回路１３１−１〜１３１−Ｍであり、出力端１５１−１〜１５１−Ｍを含んでもよい。）を備える。第２回路は、第１演算回路（図１の例では、１行分以上の任意のｊについて、ｊ列目の可変抵抗素子４１−１ｊ〜４１−Ｎｊと信号線４２−ｊと検出回路６１−ｊ）を備える。第４回路は、差分回路（図１の例では、１行分以上の任意のｊについて、ｊ列目の差分回路１３１−ｊ）を備える。第１回路は、複数のデータ（図１の例では、入力データ）のそれぞれに応じた信号（図１の例では、入力信号）を生成する。第２回路の第１演算回路は、抵抗値が可変である複数の可変抵抗素子（図１の例では、１行分以上の任意のｊについて、ｊ列目の可変抵抗素子４１−１ｊ〜４１−Ｎｊ）のそれぞれによって第１回路によって生成された複数の信号のそれぞれに重みを乗算して、これら複数の乗算結果の総和（図１の例では、１行分以上の任意のｊについて、ｊ列目の検出回路６１−ｊからの出力）を演算する。第３回路は、複数のデータのそれぞれに応じた値（図１の例では、入力データに応じたカウント値）の加算結果（図１の例では、加算回路１１１からの出力そのままがデジタルアナログ変換器１１３によって変換されることを想定した場合の変換結果）、または、当該加算結果が調整された結果（図１の例では、調整回路１１２からの出力がデジタルアナログ変換器１１３によって変換された結果）を演算する。第４回路の差分回路は、第２回路の第１演算回路によって演算された結果と第３回路によって演算された結果との差分を出力する。したがって、本実施形態に係る積和演算器１では、入力データの総和に基づいて演算される補正値（図１の例では、デジタルアナログ変換器１１３からの出力）を検出回路６１−１〜６１−Ｍからの出力から減算することで、例えば、ニューラルネットワークの重みの正負ごとに素子（図１の例では、可変抵抗素子４１−１１〜４１−ＮＭ）を分ける必要をなくすことができる。
【０１０５】
本実施形態に係る積和演算器１では、第２回路の第１演算回路によって演算される結果と、第３回路によって演算される結果は、アナログ信号である。また、第４回路の差分回路は、アナログ回路である。したがって、本実施形態に係る積和演算器１では、アナログ演算によって積和演算の補正を行うことができる。
【０１０６】
本実施形態に係る積和演算器１では、複数の可変抵抗素子において、共通のコンダクタンスの可変な範囲が設定される。第２回路の第１演算回路は、複数の乗算結果の総和を取得する容量（図１の例では、１行分以上の任意のｊについて、ｊ列目の検出回路６１−ｊを構成するコンデンサの容量）を有する。第３回路によって演算される結果は、（複数のデータのそれぞれに応じた値の加算結果）と（可変抵抗素子のコンダクタンスの可変な範囲の中心値）と｛１／（容量）｝とを乗算した結果である。したがって、本実施形態に係る積和演算器１では、積和演算の補正を、式（１）に示されるような理論上の演算によって、解析的な補正値を用いて行うことができる。
【０１０７】
本実施形態に係る積和演算器１では、複数の可変抵抗素子において、共通のコンダクタンスの可変な範囲が設定される。第２回路の第１演算回路は、複数の乗算結果の総和を取得する容量を有する。第３回路によって演算される結果は、（複数のデータのそれぞれに応じた値の加算結果）と（可変抵抗素子のコンダクタンスの可変な範囲の中心値）と｛１／（容量）｝との積に第１係数（式（２）の例では、Ｋ１）を乗算した結果と第２係数（式（２）の例では、Ｋ２）との和に相当する。したがって、本実施形態に係る積和演算器１では、積和演算の補正を、式（２）に示されるような理論上の演算によって、解析的な補正値を用いて行うことができる。この場合、例えば、回路実装上のばらつき、あるいは、温度変動などを補正する要素を、所定の係数を用いて解析的な補正値に含めることができる。これにより、積和演算器１では、例えば、アナログ的な実装、温度またはプロセスに依存する特性などによる変動ばらつきを抑制することが可能である。
【０１０８】
本実施形態に係る積和演算器１では、第１回路が複数のデータのそれぞれに応じた信号を生成することは、第１回路が複数のデータのそれぞれに応じたパルス幅変調信号を生成することである。したがって、本実施形態に係る積和演算器１では、入力信号生成回路３２−１〜３２−Ｎによってパルス幅変調信号が生成される場合、Ｎ個の入力信号のパルス幅の合計値に基づく補正値によって、積和演算の補正を行うことができる。
【０１０９】
本実施形態に係る積和演算器１では、第１回路が複数のデータのそれぞれに応じた信号を生成することは、第１回路が複数のデータのそれぞれに応じた振幅変調信号を生成することである。したがって、本実施形態に係る積和演算器１では、入力信号生成回路３２−１〜３２−Ｎによって振幅変調信号が生成される場合、Ｎ個の入力信号の振幅の合計値に基づく補正値によって、積和演算の補正を行うことができる。
【０１１０】
本実施形態に係る積和演算器１では、第２回路は、複数（図１の例では、総じてＭ個）の第１演算回路を有する。
第４回路は、複数の第１演算回路のそれぞれごとに差分回路（図１の例では、総じてＭ個の差分回路１３１−１〜１３１−Ｍ）を有する。したがって、本実施形態に係る積和演算器１では、１個の変換部１３からの出力が、Ｍ個の差分回路１３１−１〜１３１−Ｍのそれぞれに入力される。つまり、１個の変換部１３からの出力が、アレイ部１２を構成する複数の信号線４２−１〜４２−Ｍの出力に反映されている。このような構成により、積和演算器１では、例えば、アレイ部１２を構成する複数の信号線４２−１〜４２−Ｍのそれぞれごとに変換部（変換部１３に相当する機能部）が備えられる場合と比べて、回路規模を小さくすることが可能になる。
【０１１１】
本実施形態に係る積和演算器１では、複数のデータは、時系列の順に第３回路に入力される。第３回路は、時系列の順に、複数のデータのそれぞれに応じた値を加算する。したがって、本実施形態に係る積和演算器１では、複数の入力レジスタ３１−１〜３１−Ｎから出力されるデータが時系列順に信号線３３を介して加算回路１１１に入力される場合に、加算回路１１１においてこれらのデータを順に加算することができる。この場合、例えば、複数のデータの加算を行う際にタイミング制御などを行う場合と比べて、加算回路１１１の構成を簡易化することが可能である。
【０１１２】
本実施形態に係る積和演算器１では、可変抵抗素子は、磁気抵抗効果を示す磁気抵抗効果素子である。したがって、本実施形態に係る積和演算器１では、好ましい態様として、可変抵抗素子４１−１１〜４１−ＮＭとして、磁気抵抗効果素子が用いられてもよい。これにより、積和演算器１では、正の値を持つ重みと負の値を持つ重みを表現することが容易になる。
【０１１３】
本実施形態では、本実施形態に係る積和演算器１によって行われる処理と同様な積和演算方法を実施することが可能である。これにより、本実施形態に係る積和演算方法では、本実施形態に係る積和演算器１について説明したのと同様な効果を得ることができる。
【０１１４】
本実施形態では、本実施形態に係る積和演算器１を含み論理演算を実行する論理演算デバイスを実施することが可能である。これにより、本実施形態に係る論理演算デバイスでは、例えば、誤差の少ない積和演算によって、論理演算器の性能を改善することができる。なお、論理演算としては、任意の演算が行われてもよい。
【０１１５】
本実施形態では、本実施形態に係る積和演算器１を含み可変抵抗素子４１−１１〜４１−ＮＭとしてニューロモーフィック素子を使用したニューロモーフィックデバイスを実施することが可能である。これにより、本実施形態に係るニューロモーフィックデバイスでは、例えば、誤差の少ない積和演算によって、ニューロモーフィックデバイスの性能を改善することができる。
なお、ニューロモーフィックデバイスでは、任意の演算が行われてもよい。
【０１１６】
ここで、ニューロモーフィックデバイスは、ニューロモーフィック演算を行うためのデバイスであり、例えば、脳の動きを模倣した演算を行う。ニューロモーフィックデバイスは、例えば、アレイなどの回路を組み合わせたデバイスであってもよく、ニューラルネットワークを構成するデバイスであってもよい。ニューラルネットワークの技術を用いることで、高度な情報の識別あるいは分類を行うことが可能である。このようなニューラルネットワークの技術は、例えば、深層学習、医療、ヘルスケア、金融、マーケティング、認証、セキュリティなどの広い分野で実用化されている。
【０１１７】
（第２実施形態）
［積和演算器の構成］
図５は、本発明の実施形態（第２実施形態）に係る積和演算器２０１の概略的な構成を示す図である。本実施形態では、第１実施形態に係る図１に示される積和演算器１と同様な構成部分については、同じ符号を付して説明し、詳しい説明を省略する。また、本実施形態では、説明の便宜上、第１実施形態の説明で使用されたｉ、ｊを使用して説明する。
【０１１８】
積和演算器２０１は、入力部１１と、アレイ部１２と、変換部２２１と、出力部２２２を備える。
また、図５には、積和演算器２０１の制御を行う制御部１５を示してある。本実施形態では、制御部１５は、積和演算器２０１とは別の機能部として構成されている。この場合、積和演算器２０１および制御部１５は、例えば、所定の装置（例えば、積和演算装置）あるいは所定のシステム（例えば、積和演算システム）に含まれると捉えられてもよい。他の例として、制御部１５は、積和演算器２０１と一体として構成されてもよい。この場合、積和演算器２０１は制御部１５を備えると捉えられてもよい。
【０１１９】
ここで、入力部１１と、アレイ部１２と、制御部１５については、第１実施形態に係る図１に示される積和演算器１と同様な構成部分である。なお、制御部１５により行われる制御の仕方は、例えば、第１実施形態に係る図１に示される積和演算器１と、本実施形態に係る積和演算器２０１とで、異なってもよい。
本実施形態では、変換部２２１と、出力部２２２について、詳しく説明する。
【０１２０】
変換部２２１は、第１実施形態に係る図１に示されるものと同様な加算回路１１１と、第１実施形態に係る図１に示されるものと同様な調整回路１１２を備える。
出力部２２２は、第１実施形態に係る図１に示されるものと同様なＭ個の検出回路６１−１〜６１−Ｍと、Ｍ個のアナログデジタル変換器（ＡＤＣ：Ａｎａｌｏｇ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒ）２６１−１〜２６１−Ｍと、Ｍ個の差分回路２８１−１〜２８１−Ｍと、Ｍ個の出力端３１１−１〜３１１−Ｍを備える。
Ｍ個の差分回路２８１−１〜２８１−Ｍのそれぞれは、一例として、差分を演算する論理回路であってもよい。なお、検出回路６１−１〜６１−Ｍ、差分回路２８１−１〜２８１−Ｍ、および、アナログデジタル変換器２６１−１〜２６１−Ｍとしては、Ｍ列の各列に対して１組の回路を割り当てて説明したが、必ずしも列と同じ数の回路の組が備えられる必要はない。例えば、Ｍ列の各列に対して、１個の検出回路、１個の差分回路および１個のアナログデジタル変換器を時分割で割り当てて、多重化することも可能である。
【０１２１】
［積和演算器における各回路の機能および動作］
積和演算器２０１における各回路の機能および動作の例を説明する。変換部２２１の構成および動作は、第１実施形態に係る図１に示される変換部１３の構成および動作と比べて、当該変換部１３のデジタルアナログ変換器１１３が備えられていない点で異なる。
【０１２２】
変換部２２１は、調整回路１１２から出力される調整結果のデジタルデータを、Ｍ個の差分回路２８１−１〜２８１−Ｍのそれぞれに出力する。当該デジタルデータは、第１実施形態に係る図１に示される変換部１３において調整回路１１２からデジタルアナログ変換器１１３に出力されるデジタルデータに相当する。
【０１２３】
ｊ列目のアナログデジタル変換器２６１−ｊは、ｊ列目の検出回路６１−ｊから出力されたアナログ信号を入力する。そして、ｊ列目のアナログデジタル変換器２６１−ｊは、入力されたアナログ信号をデジタルデータへ変換して、変換されたデジタルデータを、ｊ列目の差分回路２８１−ｊに出力する。
【０１２４】
ｊ列目の差分回路２８１−ｊは、一の入力端であるプラス端子（＋端子）と、他の入力端であるマイナス端子（−端子）と、出力端を有する。ｊ列目の差分回路２８１−ｊは、ｊ列目のアナログデジタル変換器２６１−ｊから出力されたデジタルデータをプラス端子から入力し、調整回路１１２から出力されたデジタルデータをマイナス端子から入力する。ｊ列目の差分回路２８１−ｊは、プラス端子の入力データからマイナス端子の入力データを減算した結果のデータを出力端から出力する。当該データは、ｊ列目の出力端３１１−ｊに出力される。本実施形態では、ｊ列目の差分回路２８１−ｊは、入力された２個のデータの差分を表すデータを出力する。当該差分は、例えば、電圧の値によって表されてもよい。本実施形態では、当該差分は、プラス端子の入力データからマイナス端子の入力データを減算した結果である。
【０１２５】
ｊ列目の出力端３１１−ｊは、ｊ列目の差分回路２８１−ｊから入力されたデータを出力する。ここで、当該データは、任意の用途で使用されてもよい。一例として、当該データは、ニューラルネットワークにおける積和演算結果を使用する回路（図示せず）に入力されて使用されてもよい。
【０１２６】
また、例えば、ｊ列目の差分回路２８１−ｊとｊ列目の出力端３１１−ｊとの間に、ｊ列目のデジタルアナログ変換器（図示せず）が備えられてもよい。この場合、ｊ列目のデジタルアナログ変換器は、ｊ列目の差分回路２８１−ｊから出力されたデジタルデータを入力し、入力されたデジタルデータをアナログ信号へ変換して、変換されたアナログ信号を、ｊ列目の出力端３１１−ｊに出力する。この場合、ｊ列目の出力端３１１−ｊは、ｊ列目のデジタルアナログ変換器から出力されたアナログ信号を出力する。
【０１２７】
［第２実施形態のまとめ］
以上のように、本実施形態に係る積和演算器２０１では、第１実施形態に係る積和演算器１と同様な演算を行うことができ、第１実施形態に係る積和演算器１とは相違する点による効果の違いを除いて、同様な効果を得ることができる。したがって、本実施形態に係る積和演算器２０１では、例えば、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を簡易に実現することができる。
【０１２８】
［構成例］
本実施形態に係る積和演算器２０１では、第１回路（図５の例では、入力信号生成回路３２−１〜３２−Ｎ）と、第２回路（図５の例では、アレイ部１２の回路、検出回路６１−１〜６１−Ｍ、およびアナログデジタル変換器２６１−１〜２６１−Ｍ）と、第３回路（図５の例では、変換部２２１の回路）と、第４回路（図５の例では、差分回路２８１−１〜２８１−Ｍであり、出力端３１１−１〜３１１−Ｍを含んでもよい。）を備える。第２回路は、第１演算回路（図５の例では、１行分以上の任意のｊについて、ｊ列目の可変抵抗素子４１−１ｊ〜４１−Ｎｊと信号線４２−ｊと検出回路６１−ｊとアナログデジタル変換器２６１−ｊ）を備える。第４回路は、差分回路（図５の例では、１行分以上の任意のｊについて、ｊ列目の差分回路２８１−ｊ）を備える。第１回路は、複数のデータ（図５の例では、入力データ）のそれぞれに応じた信号（図５の例では、入力信号）を生成する。第２回路の第１演算回路は、抵抗値が可変である複数の可変抵抗素子（図５の例では、１行分以上の任意のｊについて、ｊ列目の可変抵抗素子４１−１ｊ〜４１−Ｎｊ）のそれぞれによって第１回路によって生成された複数の信号のそれぞれに重みを乗算して、これら複数の乗算結果の総和（図５の例では、１行分以上の任意のｊについて、ｊ列目の検出回路６１−ｊからの出力）を演算する。第３回路は、複数のデータのそれぞれに応じた値（図５の例では、入力データに応じたカウント値）の加算結果（図５の例では、加算回路１１１からの出力そのままが調整回路１１２から出力されることを想定した場合の出力）、または、当該加算結果が調整された結果（図５の例では、調整回路１１２からの出力）を演算する。第４回路の差分回路は、第２回路の第１演算回路によって演算された結果と第３回路によって演算された結果との差分を出力する。したがって、本実施形態に係る積和演算器２０１では、入力データの総和に基づいて演算される値（図５の例では、調整回路１１２からの出力）を検出回路６１−１〜６１−Ｍからの出力（図５の例では、当該出力がアナログデジタル変換器２６１−１〜２６１−Ｍによって変換された結果）から減算することで、例えば、ニューラルネットワークの重みの正負ごとに素子（図５の例では、可変抵抗素子４１−１１〜４１−ＮＭ）を分ける必要をなくすことができる。
【０１２９】
なお、ここでは、第２回路にアナログデジタル変換器２６１−１〜２６１−Ｍが含まれるとして説明したが、他の例として、第３回路にアナログデジタル変換器２６１−１〜２６１−Ｍが含まれると捉えられてもよい。つまり、アナログデジタル変換器２６１−１〜２６１−Ｍは、第１実施形態に係る図１に示されるデジタルアナログ変換器１１３と同様に、補正値を調整するための回路であると捉えられてもよい。
【０１３０】
本実施形態に係る積和演算器２０１では、第２回路の第１演算回路によって演算される結果と、第３回路によって演算される結果は、デジタルデータである。第４回路の差分回路は、デジタル回路である。したがって、本実施形態に係る積和演算器２０１では、アレイ部１２の出力をデジタルデータへ変換することで、デジタル演算によって積和演算の補正を行うことができる。
【０１３１】
（以上の実施形態のまとめ）
以上のような積和演算器１、２０１、あるいはそれを用いたニューロモーフィックデバイスは、各種センサやロボットの脳として機能させることができる。このニューロモーフィックデバイスを用いた制御装置にセンサから出力された信号を入力すると、Ｅｄｇｅ素子として機能させることができる。センサ信号は一般的に多くのノイズが存在し、一般的なセンサモジュールでは得たいセンサ信号をノイズから取り出すことができない。したがって、センサ信号の時系列信号から、例えば信号処理技術を用いてノイズを除去し、得たい信号を取り出すなどの方法が取られる。この場合、得た信号以外はエネルギーの消費だけであり、情報を生まない。このニューロモーフィックデバイスを用いた制御装置にセンサ信号を入力することにより、高精度の認識を行うことができる。従来は源信号にノイズが重畳した観測信号を源信号とノイズに分離することで、初めて意味のある情報として抽出されるが、本制御装置を用いるとノイズを含む時系列信号から得たい源信号を予測することができ、源信号の出力強度や統計値が小さくても意味のある信号として取り出すことができる。これはセンサと制御装置が一体となったモジュールであり、ＡＩ  Ｅｄｇｅセンサモジュールとすることができる。本制御装置を用いると、認識精度が高くなるために従来よりも小さな演算機能で情報を取り出すことができ、低コスト・省電力・省体積化を行うことができる。
【０１３２】
本制御装置に複数のセンサの信号を同時に入力することも好ましい。複数のセンサの信号が同時に入力することによって、互いのセンサの関連性に関する認識を得ることができる。例えば、ロボットにおいて手、足、胴体にセンサが設置され、そのセンサからの信号が同時に本制御装置に入力されると、その信号によってロボットが歩いているか、転んだのかなどの情報を複合的に判断することができる。さらに、ＡＩ  Ｅｄｇｅセンサモジュールが複数設置されたロボットや車などにおいて、本制御装置に同時に信号が入力されることによってより省電力化と高機能化が期待できる。複数のセンサが異なる種類のセンサであった場合には、それぞれのセンサに対応できる電圧や電流に対応した制御装置を設置する必要がある。この場合、制御装置のインタフェースに変圧器やアナログデジタル変換器（ＡＤＣ）などが必要となり、エネルギー変換によってエネルギーが消費される。ＡＩ  Ｅｄｇｅセンサモジュールでも同様にエネルギーが消費されるが、ＡＩ  Ｅｄｇｅセンサモジュールから中央の制御装置に出力された信号はＡＩ  Ｅｄｇｅセンサモジュールで一定の認識と識別がされたものであり、必要な情報のみを送ることができる。これらの機能によりＡＩ  Ｅｄｇｅセンサモジュールと中央の制御装置の間の通信を削減することができるため、システム全体としてのエネルギー消費を減少できる。
【０１３３】
なお、以上に示した実施形態に係る各部（例えば、制御部１５など）の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体（記憶媒体）に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）あるいは周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、記録媒体としては、例えば、一時的にデータを記録する記録媒体であってもよい。
【０１３４】
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバあるいはクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよ
【０１３５】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【産業上の利用可能性】
【０１３６】
本発明の積和演算器、積和演算方法、論理演算デバイスおよびニューロモーフィックデバイスによれば、正の値を持つ重みと負の値を持つ重みとが混在する積和演算を簡易に実現することができる。
【符号の説明】
【０１３７】
１、２０１…積和演算器、１１…入力部、１２…アレイ部、１３、２２１…変換部、１４、２２２…出力部、１５…制御部、３１−１〜３１−Ｎ…入力レジスタ、３２−１〜３２−Ｎ…入力信号生成回路、３３、４２−１〜４２−Ｍ…信号線、４１−１１〜４１−ＮＭ…可変抵抗素子、６１−１〜６１−Ｍ…検出回路、１１１…加算回路、１１２…調整回路、１１３…デジタルアナログ変換器、１３１−１〜１３１−Ｍ、２８１−１〜２８１−Ｍ…差分回路、１５１−１〜１５１−Ｍ、３１１−１〜３１１−Ｍ…出力端、２６１−１〜２６１−Ｍ…アナログデジタル変換器、１０１１−１〜１０１１−Ｎ…入力信号、２０１１、２０２１、２０３１…テーブル
【要約】
複数のデータのそれぞれに応じた信号を生成する第１回路と、抵抗値が可変である複数の可変抵抗素子のそれぞれによって前記第１回路によって生成された複数の前記信号のそれぞれに重みを乗算してこれら複数の乗算結果の総和を演算する第１演算回路を有する第２回路と、前記複数の前記データのそれぞれに応じた値の加算結果または前記加算結果が調整された結果を演算する第３回路と、前記第２回路の前記第１演算回路によって演算された結果と前記第３回路によって演算された結果との差分を出力する差分回路を有する第４回路と、を備える積和演算器。【図１】
0006521207.tif 000004
【図２】
0006521207.tif 000005
【図３】
0006521207.tif 000006
【図４】
0006521207.tif 000007
【図５】
0006521207.tif 000008