(57)【要約】積和演算器（１）は、積演算部（１０）と、和演算部（１１）とを備え、前記積演算部（１０）は、抵抗変化素子である複数の積演算素子（１０ＡＡ、１０ＡＢ）と少なくとも１つのリファレンス素子（１０ＡＭＡＸ、１０ＡＭＩＮ）とを備え、前記和演算部（１１）は少なくとも前記複数の積演算素子からの出力の合計値を検出する出力検出器（１１Ａ）を備え、前記複数の積演算素子のそれぞれは、磁壁を有する磁化自由層と、磁化方向が固定された磁化固定層と、前記磁化自由層と前記磁化固定層とに挟まれた非磁性層とを有する磁気抵抗効果素子であり、前記リファレンス素子は、磁壁を有さない磁化自由層を有するリファレンス磁気抵抗効果素子である。
2019176540.tif 000002
【特許請求の範囲】
【請求項１】
積演算部と、和演算部とを備え、
前記積演算部は、複数の積演算素子と、少なくとも１つのリファレンス素子とを備え、
前記複数の積演算素子と、前記少なくとも１つのリファレンス素子とのそれぞれは、抵抗変化素子であり、
前記和演算部は、少なくとも前記複数の積演算素子からの出力の合計値を検出する出力検出器を備え、
前記複数の積演算素子のそれぞれは、
磁壁を有する第１の磁化自由層と、
磁化方向が固定された第１の磁化固定層と、
前記第１の磁化自由層と前記第１の磁化固定層とに挟まれた第１の非磁性層とを有する磁気抵抗効果素子であり、
前記少なくとも１つのリファレンス素子は、磁壁を有さない第２の磁化自由層又は磁壁を有する第３の磁化自由層と、磁化方向が固定された第２の磁化固定層と、前記第２の磁化自由層又は前記第３の磁化自由層と前記第２の磁化固定層とに挟まれた第２の非磁性層とを有すると共に、前記第２の磁化自由層の一つの磁化方向又は前記第３の磁化自由層の複数の磁化方向のそれぞれと前記第２の磁化固定層の磁化方向とがなす相対角度が固定されたリファレンス磁気抵抗効果素子である積和演算器。
【請求項２】
前記少なくとも１つのリファレンス素子には、
前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが反平行である第１リファレンス素子又は前記第３の磁化自由層を有し、最大抵抗値に設定した第３のリファレンス素子と、
前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが平行である前記磁化固定層を有する第２リファレンス素子又は前記第３の磁化自由層を有し、最小抵抗値に設定した第４のリファレンス素子とが含まれる、請求項１に記載の積和演算器。
【請求項３】
前記複数の積演算素子からの出力と、前記少なくとも１つのリファレンス素子からの出力とを比較する比較部をさらに備える請求項２に記載の積和演算器。
【請求項４】
少なくとも１つのリファレンスカラムをさらに備え、
前記少なくとも１つのリファレンスカラムには、前記複数の積演算素子が含まれず、前記少なくとも１つのリファレンス素子が含まれる請求項１または請求項２に記載の積和演算器。
【請求項５】
少なくとも１つのリファレンス出力検出器をさらに備え、
前記少なくとも１つのリファレンス出力検出器のそれぞれは、前記少なくとも１つのリファレンスカラムのそれぞれからの出力を検出する請求項４に記載の積和演算器。
【請求項６】
請求項５に記載の積和演算器の使用方法であって、
前記積和演算器は、故障検知部をさらに備え、
前記故障検知部が、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力に基づいて、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値の正常範囲を設定する正常範囲設定工程と、
前記故障検知部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と前記正常範囲とに基づいて、前記複数の積演算素子の故障の有無を判断する故障有無判断工程とを含む積和演算器の使用方法。
【請求項７】
前記積和演算器は、比較部をさらに備え、
前記比較部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力とを比較する比較工程をさらに含む請求項５または請求項６に記載の積和演算器の使用方法。
【請求項８】
前記積和演算器は、補正部をさらに備え、
前記補正部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力とに基づいて、前記複数の積演算素子の温度に依存する抵抗値変化分を算出し、前記複数の積演算素子の抵抗値を補正する補正工程をさらに含む請求項７に記載の積和演算器の使用方法。
【請求項９】
前記少なくとも１つのリファレンスカラムには、動作用リファレンスカラムと、バックプロパゲーション用リファレンスカラムとが含まれる請求項４または請求項５に記載の積和演算器。
【請求項１０】
請求項１から請求項５、および、請求項９のいずれか一項に記載の積和演算器を備えるニューロモーフィックデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、積和演算器、ニューロモーフィックデバイスおよび積和演算器の使用方法に関する。
本願は、２０１８年３月１６日に日本に出願された特願２０１８−０４９７６６号について優先権を主張し、その内容をここに援用する。
【背景技術】
【０００２】
従来から、ＲＲＡＭ（登録商標）ベースアナログニューロモーフィックシステムにおけるグレースケール画像認識のための最適化された学習スキームが知られている（例えば非特許文献１参照）。この文献には、アナログニューロモーフィックシステムが、組み立てられた抵抗スイッチングメモリアレイを基礎として開発される旨が記載されている。この文献では、新規なトレーニングスキームが、セグメント化されたシナプスの挙動を利用することによって、アナログシステムの性能を最適化するために提案される。また、この文献では、このスキームが、グレースケール画像認識に対して適用される。
また、神経系を模倣したニューラルネットワークを抵抗変化素子のアレイを用いて実現する研究が進められている。ニューロモーフィックデバイス（ＮＭＤ）では、前段から次の段へとウエイトをかけて足し合わせる積和演算を行う。そこで、連続的に抵抗が変化する抵抗変化素子を複数組み合わせ、それぞれの抵抗値を重みとして入力信号に対する積演算を行い、そこから出力される電流の総和をとることで和演算を行う様々なタイプの積和演算器、およびそれを利用したＮＭＤの開発がすすめられている。
例えば特許文献１には、磁気記録層内における磁壁の位置に応じて、抵抗値が連続的に変化することを利用した、磁壁利用型磁気抵抗変化素子を利用した磁気ニューロンシステムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１７／１８３５７３号
【非特許文献】
【０００４】
【非特許文献１】Zhe Chen他著、「ＲＲＡＭベースアナログニューロモーフィックシステムにおけるグレースケール画像認識のための最適化された学習スキーム（Optimized Learning Scheme for Grayscale Image Recognition in a RRAM Based Analog Neuromorphic System）」、２０１５年、ＩＥＥＥ、ｐ．１７．７．１−ｐ．１７．７．４
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１では、システムを構成する磁気抵抗効果素子の温度に依存する特性変化について検討されていない。そのため、温度が変化した場合にニューラルネットワークの性能が低下してしまうおそれがある。また特に、磁気抵抗効果素子として、トンネル磁気抵抗効果素子を用いる場合には、電流方向によって素子の磁気抵抗値が異なることがあるため、バックプロパゲーションによる学習を行う際、他の抵抗変化素子よりも複雑な操作が必要となるために処理速度が遅くなるおそれがある。【０００６】
上述した問題点に鑑み、本発明は、ニューラルネットワークに適用される場合に、温度変化や電流方向からくる素子特性の変動によるニューラルネットワークの性能低下を抑制することができる積和演算器、ニューロモーフィックデバイスおよび積和演算器の使用方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様の積和演算器は、積演算部と、和演算部とを備え、前記積演算部は、複数の積演算素子と、少なくとも１つのリファレンス素子とを備え、前記複数の積演算素子と、前記少なくとも１つのリファレンス素子とのそれぞれは、抵抗変化素子であり、前記和演算部は、少なくとも前記複数の積演算素子からの出力の合計値を検出する出力検出器を備え、前記複数の積演算素子のそれぞれは、磁壁を有する第１の磁化自由層と、磁化方向が固定された第１の磁化固定層と、前記第１の磁化自由層と前記第１の磁化固定層とに挟まれた第１の非磁性層とを有する磁気抵抗効果素子であり、前記少なくとも１つのリファレンス素子は、磁壁を有さない第２の磁化自由層又は磁壁を有する第３の磁化自由層と、磁化方向が固定された第２の磁化固定層と、前記第２の磁化自由層又は前記第３の磁化自由層と前記第２の磁化固定層とに挟まれた第２の非磁性層とを有すると共に、前記第２の磁化自由層の一つの磁化方向又は前記第３の磁化自由層の複数の磁化方向のそれぞれと前記第２の磁化固定層の磁化方向とがなす相対角度が固定されたリファレンス磁気抵抗効果素子である。【０００８】
本発明の一態様の積和演算器では、前記少なくとも１つのリファレンス素子には、前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが反平行である第１リファレンス素子又は前記第３の磁化自由層を有し、最大抵抗値に設定した第３のリファレンス素子と、前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが平行である前記磁化固定層を有する第２リファレンス素子又は前記第３の磁化自由層を有し、最小抵抗値に設定した第４のリファレンス素子とが含まれてもよい。【０００９】
本発明の一態様の積和演算器は、前記複数の積演算素子からの出力と、前記少なくとも１つのリファレンス素子からの出力とを比較する比較部をさらに備えてもよい。【００１０】
本発明の一態様の積和演算器は、少なくとも１つのリファレンスカラムをさらに備え、前記少なくとも１つのリファレンスカラムには、前記複数の積演算素子が含まれず、前記少なくとも１つのリファレンス素子が含まれてもよい。【００１１】
本発明の一態様の積和演算器は、少なくとも１つのリファレンス出力検出器をさらに備え、前記少なくとも１つのリファレンス出力検出器のそれぞれは、前記少なくとも１つのリファレンスカラムのそれぞれからの出力を検出してもよい。【００１２】
本発明の一態様は、前記積和演算器の使用方法であって、前記積和演算器は、故障検知部をさらに備え、前記故障検知部が、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力に基づいて、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値の正常範囲を設定する正常範囲設定工程と、前記故障検知部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と前記正常範囲とに基づいて、前記複数の積演算素子の故障の有無を判断する故障有無判断工程とを含む、積和演算器の使用方法である。【００１３】
本発明の一態様の積和演算器の使用方法では、前記積和演算器は、比較部をさらに備え、前記比較部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力とを比較する比較工程がさらに含まれてもよい。【００１４】
本発明の一態様の積和演算器の使用方法では、前記積和演算器は、補正部をさらに備え、前記補正部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力とに基づいて、前記複数の積演算素子の温度に依存する抵抗値変化分を算出し、前記複数の積演算素子の抵抗値を補正する補正工程がさらに含まれてもよい。【００１５】
本発明の一態様の積和演算器では、前記少なくとも１つのリファレンスカラムには、動作用リファレンスカラムと、バックプロパゲーション用リファレンスカラムとが含まれてもよい。【００１６】
本発明の一態様は、前記積和演算器を備えるニューロモーフィックデバイスである。
【発明の効果】
【００１７】
本発明によれば、ニューラルネットワークに適用される場合に、温度変化や電流方向からくる素子特性の変動によるニューラルネットワークの性能低下を抑制することができる積和演算器、ニューロモーフィックデバイスおよび積和演算器の使用方法を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】第１実施形態の積和演算器の一部の構成の一例を示す図である。
【図２】第１実施形態の積和演算器の全体構成の一例を示す図である。
【図３】第１実施形態の積和演算器の積演算素子のそれぞれを構成する磁気抵抗効果素子の一例を示す斜視図である。
【図４】第１実施形態の積和演算器の適用例を示す図である。
【図５】出力検出器によって検出される合計値および規定値を説明するための図である。
【図６】第１実施形態の積和演算器によって実行される処理の一例を示すフローチャートである。
【図７】第２実施形態の積和演算器の一部の構成の一例を示す図である。
【図８】第３実施形態の積和演算器の一部の構成の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照し、本発明の積和演算器、ニューロモーフィックデバイスおよび積和演算器の使用方法の実施形態について説明する。
【００２０】
＜第１実施形態＞
図１は第１実施形態の積和演算器１の一部の構成の一例を示す図である。図２は第１実施形態の積和演算器１の全体構成の一例を示す図である。
図１および図２に示す例では、第１実施形態の積和演算器１が、積演算部１０と、和演算部１１と、入力部１２と、故障検知部１３と、比較部１４と、補正部１５とを備えている。積演算部１０は、カラム１０Ａと、カラム１０Ｂとを備えている。
図１に示す例では、積演算部１０が、２つのカラム１０Ａ、１０Ｂを備えているが、他の例では、積演算部１０が、３以上の任意の数のカラム１０Ａ、１０Ｂ、…を備えていてもよい。
【００２１】
図１に示す例では、カラム１０Ａが、積演算素子１０ＡＡと、積演算素子１０ＡＢと、リファレンス素子１０ＡＭＡＸと、リファレンス素子１０ＡＭＩＮとを備えている。積演算素子１０ＡＡ、１０ＡＢは、積演算を行う。リファレンス素子１０ＡＭＡＸは、積和演算器１の動作時、あるいはバックプロパゲーション学習時における積演算素子１０ＡＡ、１０ＡＢなどの抵抗値の最大値の補正に用いられる。リファレンス素子１０ＡＭＩＮは、積和演算器１の積和演算器１の動作時、あるいはバックプロパゲーション学習時における積演算素子１０ＡＡ、１０ＡＢなどの抵抗値の最小値の補正に用いられる。
カラム１０Ｂは、積演算素子１０ＢＡと、積演算素子１０ＢＢと、積演算素子１０ＢＣと、積演算素子１０ＢＤとを備えている。積演算素子１０ＢＡ〜１０ＢＤは、積演算素子１０ＡＡ、１０ＡＢと同様に積演算を行う。
図１に示す例では、カラム１０Ａが２つの積演算素子１０ＡＡ、１０ＡＢを備え、カラム１０Ｂが４つの積演算素子１０ＢＡ、１０ＢＢ、１０ＢＣ、１０ＢＤを備えているが、他の例では、カラム１０Ａが、２以外の任意の数（詳細には、複数）の積演算素子を備え、カラム１０Ｂが、４以外の任意の数（詳細には、複数）の積演算素子を備えてもよい。
図１に示す例では、カラム１０Ａが、積和演算器１の動作時、あるいはバックプロパゲーション学習時における積演算素子１０ＡＡ、１０ＡＢなどの抵抗値の最大値の補正に用いられる１つのリファレンス素子１０ＡＭＡＸと、積和演算器１の動作時、あるいはバックプロパゲーション学習時における積演算素子１０ＡＡ、１０ＡＢなどの抵抗値の最小値の補正に用いられる１つのリファレンス素子１０ＡＭＩＮとを備えている。他の例では、カラム１０Ａが、積和演算器１の動作時における積演算素子１０ＡＡ、１０ＡＢなどの抵抗値の補正に用いられる複数のリファレンス素子を備えたり、積和演算器１のバックプロパゲーション学習時における積演算素子１０ＡＡ、１０ＡＢなどの抵抗値の補正に用いられる複数のリファレンス素子を備えたりしてもよい。
【００２２】
図１に示す例では、入力部１２が、第１入力部１２Ａと、第２入力部１２Ｂと、第３入力部１２Ｃと、第４入力部１２Ｄとを備えている。複数の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤ、および、リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮのそれぞれは、読み出し端子と、書き込み端子と、共通端子とを備える抵抗変化素子である。
積演算素子１０ＡＡ、１０ＢＡの読み出し端子は、ラインＬ１１に接続されている。ラインＬ１１は、積和演算器１の動作時に積演算素子１０ＡＡ、１０ＢＡに対して信号を入力する第１入力部１２Ａに接続されている。積演算素子１０ＡＡ、１０ＢＡの書き込み端子は、ラインＬ１２に接続されている。
積演算素子１０ＡＢ、１０ＢＢの読み出し端子は、ラインＬ２１に接続されている。ラインＬ２１は、積和演算器１の動作時に積演算素子１０ＡＢ、１０ＢＢに対して信号を入力する第２入力部１２Ｂに接続されている。積演算素子１０ＡＢ、１０ＢＢの書き込み端子は、ラインＬ２２に接続されている。
リファレンス素子１０ＡＭＡＸおよび積演算素子１０ＢＣの読み出し端子は、ラインＬ３１に接続されている。ラインＬ３１は、積和演算器１の動作時にリファレンス素子１０ＡＭＡＸおよび積演算素子１０ＢＣに対して信号を入力する第３入力部１２Ｃに接続されている。リファレンス素子１０ＡＭＡＸおよび積演算素子１０ＢＣの書き込み端子は、ラインＬ３２に接続されている。
リファレンス素子１０ＡＭＩＮおよび積演算素子１０ＢＤの読み出し端子は、ラインＬ４１に接続されている。ラインＬ４１は、積和演算器１の動作時にリファレンス素子１０ＡＭＩＮおよび積演算素子１０ＢＤに対して信号を入力する第４入力部１２Ｄに接続されている。リファレンス素子１０ＡＭＩＮおよび積演算素子１０ＢＤの書き込み端子は、ラインＬＸ２に接続されている。
積演算素子１０ＡＡ、１０ＡＢおよびリファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮの共通端子は、ラインＭ１に接続されている。積演算素子１０ＢＡ、１０ＢＢ、１０ＢＣ、１０ＢＤの共通端子は、ラインＭ２に接続されている。
【００２３】
本発明において積演算素子として用いられる磁気抵抗効果素子としては、磁気抵抗効果を利用して抵抗が可変な素子であればよく、代表的な例としては、トンネル磁気抵抗効果（ＴＭＲ）素子、巨大磁気抵抗効果（ＧＭＲ）素子が挙げられる。
【００２４】
図１に示す例では、和演算部１１が、出力検出器１１Ａと出力検出器１１Ｂとを備えている。出力検出器１１ＡはラインＭ１に配置されている。出力検出器１１ＢはラインＭ２に配置されている。
第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力し、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力し、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力する場合に、出力検出器１１Ａは、積演算素子１０ＡＡからの出力と、積演算素子１０ＡＢからの出力と、リファレンス素子１０ＡＭＡＸからの出力と、リファレンス素子１０ＡＭＩＮからの出力との合計値を検出する。
第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力せず、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力せず、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力しない場合に、出力検出器１１Ａは、積演算素子１０ＡＡからの出力を検出する。
【００２５】
第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力し、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力せず、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力しない場合に、出力検出器１１Ａは、積演算素子１０ＡＢからの出力を検出する。
第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力せず、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力し、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力しない場合に、出力検出器１１Ａは、リファレンス素子１０ＡＭＡＸからの出力を検出する。
第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力せず、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力せず、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力する場合に、出力検出器１１Ａは、リファレンス素子１０ＡＭＩＮからの出力を検出する。
【００２６】
第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力し、第３入力部１２Ｃが積演算素子１０ＢＣに対して信号を入力し、第４入力部１２Ｄが積演算素子１０ＢＤに対して信号を入力する場合に、出力検出器１１Ｂは、積演算素子１０ＢＡからの出力と、積演算素子１０ＢＢからの出力と、積演算素子１０ＢＣからの出力と、積演算素子１０ＢＤからの出力との合計値を検出する。
第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力せず、第３入力部１２Ｃが積演算素子１０ＢＣに対して信号を入力せず、第４入力部１２Ｄが積演算素子１０ＢＤに対して信号を入力しない場合に、出力検出器１１Ｂは、積演算素子１０ＢＡからの出力を検出する。
【００２７】
第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力し、第３入力部１２Ｃが積演算素子１０ＢＣに対して信号を入力せず、第４入力部１２Ｄが積演算素子１０ＢＤに対して信号を入力しない場合に、出力検出器１１Ｂは、積演算素子１０ＢＢからの出力を検出する。
第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力せず、第３入力部１２Ｃが積演算素子１０ＢＣに対して信号を入力し、第４入力部１２Ｄが積演算素子１０ＢＤに対して信号を入力しない場合に、出力検出器１１Ｂは、積演算素子１０ＢＣからの出力を検出する。
第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力せず、第３入力部１２Ｃが積演算素子１０ＢＣに対して信号を入力せず、第４入力部１２Ｄが積演算素子１０ＢＤに対して信号を入力する場合に、出力検出器１１Ｂは、積演算素子１０ＢＤからの出力を検出する。
【００２８】
図１に示す例では、第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力し、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力し、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力する場合に、出力検出器１１Ａは、積演算素子１０ＡＡからの出力電流と、積演算素子１０ＡＢからの出力電流と、リファレンス素子１０ＡＭＡＸからの出力電流と、リファレンス素子１０ＡＭＩＮからの出力電流との合計値を検出する。
他の例では、第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力し、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力し、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力する場合に、出力検出器１１Ａが、積演算素子１０ＡＡからの出力に相当する電荷と、積演算素子１０ＡＢからの出力に相当する電荷と、リファレンス素子１０ＡＭＡＸからの出力に相当する電荷と、リファレンス素子１０ＡＭＩＮからの出力に相当する電荷との合計値として検出してもよい。
【００２９】
詳細には、図１に示す例では、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤのそれぞれは、磁気抵抗効果を示す磁気抵抗効果素子である。
【００３０】
図３は第１実施形態の積和演算器１の積演算素子１０ＡＡ、１０ＡＣ、１０ＢＡ〜１０ＢＤのそれぞれを構成する磁気抵抗効果素子Ａの一例を示す斜視図である。
図３に示す例では、磁気抵抗効果素子Ａは、磁壁ＤＷを有する磁化自由層Ａ１と、磁化方向が固定された磁化固定層Ａ２と、非磁性層Ａ３とを有する。非磁性層Ａ３は、磁化自由層Ａ１と磁化固定層Ａ２とに挟まれている。磁化自由層Ａ１は、磁壁ＤＷの一方の側に第１領域Ａ１１を有し、磁壁ＤＷの他方の側に第２領域Ａ１２を有する。第１領域Ａ１１には、書き込み端子ＡＡが設けられている。第２領域Ａ１２には、共通端子ＡＢが設けられている。磁化固定層Ａ２には、読み出し端子ＡＣが設けられている。
【００３１】
磁壁ＤＷの移動量（移動距離）は、書き込み端子ＡＡと共通端子ＡＢとの間に流す書き込み電流の大きさ、時間を調整することによって可変に制御することができる。書き込み電流の大きさ、時間は例えば、パルス数あるいはパルス幅によって磁壁ＤＷの移動量（移動距離）を設定することもできる。磁壁ＤＷの駆動（移動）によって磁化固定層Ａ２と磁化自由層Ａ１のそれぞれの磁化方向が平行な（あるいは反平行な）部分の面積が連続的に変化すると、磁化方向が平行な部分の面積率と磁化方向が反平行な部分の面積率との比が連続的に変化し、磁気抵抗効果素子において線形に近い抵抗変化が得られる。
また、データの読み出しは、読み出し端子ＡＣと共通端子ＡＢとの間に電流を流して、磁化方向が平行な部分の面積率と磁化方向が反平行な部分の面積率との比に応じた抵抗を検出することで行うことができる（例えば、特許文献１参照）。
【００３２】
［磁化固定層Ａ２］
磁化固定層Ａ２は、磁化が第１の方向（例えば図３の左向き）に配向し、固定された層である。ここで、磁化が固定されるとは、書き込み電流を用いた書き込み前後において磁化方向が変化しない（磁化が固定されている）ことを意味する。
【００３３】
図３に示す例では、磁化固定層Ａ２は磁化が面内磁気異方性（面内磁化容易軸）を有する面内磁化膜である。磁化固定層Ａ２は、面内磁化膜に限られず、垂直磁気異方性（垂直磁化容易軸）を有する垂直磁化膜であってもよい。
【００３４】
磁化固定層Ａ２が面内磁化膜であると、高いＭＲ比（磁気抵抗変化率）を有し、読み込み時にスピントランスファートルク（ＳＴＴ）による影響を受けにくく、読み取り電圧を大きくできる。一方、素子を微小化したい場合には磁気異方性が大きく、磁壁幅の小さい、垂直磁化膜を用いることが好ましい。
【００３５】
磁化固定層Ａ２には、公知の材料を用いることができる。例えば、Ｃｒ、Ｍｎ、Ｃｏ、Ｆｅ及びＮｉからなる群から選択される金属及びこれらの金属を１種以上含み強磁性を示す合金を用いることができる。またこれらの金属と、Ｂ、Ｃ、及びＮの少なくとも１種以上の元素とを含む合金を用いることもできる。具体的には、Ｃｏ−ＦｅやＣｏ−Ｆｅ−Ｂが挙げられる。
【００３６】
また磁化固定層Ａ２には、Ｃｏ２ＦｅＳｉなどのホイスラー合金を用いることもできる。ホイスラー合金は、Ｘ２ＹＺの化学組成をもつ金属間化合物を含み、Ｘは、周期表上でＣｏ、Ｆｅ、Ｎｉ、あるいはＣｕ族の遷移金属元素または貴金属元素であり、Ｙは、Ｍｎ、Ｖ、ＣｒあるいはＴｉ族の遷移金属でありＸの元素種をとることもでき、Ｚは、ＩＩＩ族からＶ族の典型元素である。例えば、Ｃｏ２ＦｅＳｉ、Ｃｏ２ＭｎＳｉやＣｏ２Ｍｎ１−ａＦｅａＡｌｂＳｉ１−ｂなどが挙げられる。
【００３７】
また磁化固定層Ａ２は強磁性層、非磁性層から成るシンセティック構造、あるいは反強磁性層、強磁性層、非磁性層から成るシンセティック構造であってもよい。後者においてはシンセティック構造において磁化固定層Ａ２の磁化方向は反強磁性層によって強く保持される。そのため、磁化固定層Ａ２の磁化が外部からの影響を受けにくくなる。
【００３８】
磁化固定層Ａ２の磁化をＸＹ面内に配向させる（磁化固定層Ａ２を面内磁化膜にする）場合は、例えば、ＮｉＦｅを用いることが好ましい。一方で磁化固定層Ａ２の磁化をＺ方向に配向させる（磁化固定層Ａ２を垂直磁化膜にする）場合は、例えば、Ｃｏ／Ｎｉ積層膜、Ｃｏ／Ｐｔ積層膜等を用いることが好ましい。例えば、磁化固定層Ａ２を［Ｃｏ（０．２４ｎｍ）／Ｐｔ（０．１６ｎｍ）］６／Ｒｕ（０．９ｎｍ）／［Ｐｔ（０．１６ｎｍ）／Ｃｏ（０．１６ｎｍ）］４／Ｔａ（０．２ｎｍ）／ＦｅＢ（１．０ｎｍ）とすると、垂直磁化膜となる。
【００３９】
［非磁性層Ａ３］
非磁性層Ａ３は、磁化固定層Ａ２の下面に設けられている。磁気抵抗効果素子Ａは、非磁性層Ａ３を介して磁化固定層Ａ２に対する磁化自由層Ａ１の磁化状態の変化を抵抗値変化として読み出す。すなわち、磁化固定層Ａ２、非磁性層Ａ３及び磁化自由層Ａ１は磁気抵抗効果素子Ａとして機能し、非磁性層Ａ３が絶縁体からなる場合はトンネル磁気抵抗（ＴＭＲ）素子と似た構成であり、非磁性層２が金属からなる場合は巨大磁気抵抗効果（ＧＭＲ）素子と似た構成である。
【００４０】
非磁性層Ａ３の材料としては、磁気抵抗効果素子Ａの非磁性層に用いることができる公知の材料を用いることができる。非磁性層Ａ３が絶縁体からなる場合（トンネルバリア層である場合）、その材料としてＡｌ２Ｏ３、ＳｉＯ２、ＭｇＯ、ＭｇＡｌ２Ｏ４、ＺｎＡｌ２Ｏ４、ＭｇＧａ２Ｏ４、ＺｎＧａ２Ｏ４、ＭｇＩｎ２Ｏ４、ＺｎＩｎ２Ｏ４、及び、これらの材料の多層膜や混合組成膜等を用いることができる。またこれらの他にも、Ａｌ、Ｓｉ、Ｍｇの一部が、Ｚｎ、Ｂｅ等に置換された材料等も用いることができる。これらの中でも、ＭｇＯやＭｇＡｌ２Ｏ４はコヒーレントトンネルが実現できる材料であるため、磁気抵抗比（ＭＲ比）を大きくとることができる。一方で、非磁性層２が金属からなる場合は、その材料としてＣｕ、Ａｌ、Ａｇ等を用いることができる。
非磁性層Ａ３が絶縁体からなる場合（トンネルバリア層である場合）、素子抵抗値を高く設定する観点から、その厚みは、例えば２．５ｎｍ以上であることが望ましい。
【００４１】
［磁化自由層Ａ１］
磁化自由層Ａ１は磁壁駆動型（移動型）ＭＲＡＭの磁壁駆動層（磁化記録層）に相当するものである。
磁化自由層Ａ１は強磁性体材料からなり、その内部の磁化の向きは反転可能である。磁化自由層Ａ１は、磁化が磁化固定層Ａ２と逆向きの第２の方向に配向した第１領域Ａ１１と、磁化が第１の方向と同じ向きに配向した第２領域Ａ１２と、これらの領域の界面をなす磁壁ＤＷとを有する。磁壁ＤＷを挟んで第１領域Ａ１１と第２領域Ａ１２の磁化の向きは反対である。磁壁ＤＷは、磁化自由層Ａ１における第１領域Ａ１１と第２領域Ａ１２の構成比率が変化することで移動する。
【００４２】
磁化自由層Ａ１の材料には、公知の材料を用いることができ、特に軟磁性材料を適用できる。例えば、Ｃｒ、Ｍｎ、Ｃｏ、Ｆｅ及びＮｉからなる群から選択される金属、これらの金属を１種以上含む合金、これらの金属とＢ、Ｃ、及びＮの少なくとも１種以上の元素とが含まれる合金等を用いることができる。具体的には、Ｃｏ−Ｆｅ、Ｃｏ−Ｆｅ−Ｂ、Ｎｉ−Ｆｅが、磁化自由層Ａ１の材料として挙げられる。
【００４３】
磁化自由層Ａ１の材料には、飽和磁化が小さい材料を用いることもできる。例えば、（ＭｎＧａ）Ａｓや（ＩｎＦｅ）Ａｓ、あるいはＣｏ／Ｔｂ多層膜やＧｄＦｅＣｏのように飽和磁化が小さい材料を用いると、小さい電流密度で磁化自由層Ａ１の磁壁ＤＷを駆動させることができる。また、これらの材料を用いると、磁壁ＤＷの駆動速度が遅くなる。
【００４４】
ＮｉＦｅのような磁気異方性が弱い材料は、磁壁ＤＷの駆動速度が速く、１００ｍ／ｓｅｃ以上の速度で磁壁ＤＷが動作する。つまり、磁壁ＤＷは１０ｎｓｅｃのパルスで、１μｍの距離を移動する。したがって、磁化自由層Ａ１を素子内でアナログ的に動かす場合には、高価な半導体回路を用いて微小なパルスを印可するか、集積度を犠牲にして磁壁駆動層を十分長くするなどの対応が必要となる。これに対し、磁壁ＤＷの駆動速度が遅い材料の場合には、十分長いパルス電流を印加する場合や磁化自由層Ａ１の長さが短い場合でも、アナログメモリを形成することが可能である。
【００４５】
磁化自由層Ａ１を垂直磁化膜とする場合、Ｃｏ／Ｐｔ多層膜、Ｃｏ／Ｐｄ多層膜、及びＣｏＣｒＰｔ合金膜からなる群から選択された垂直磁化膜が好ましい。また、Ｍｎ３Ｘ（Ｘ＝Ｇａ，Ｇｅ）の垂直磁化膜やＣｏ／Ｎｉなどの多層膜による垂直磁化膜を用いることもできる。これらの材料は磁壁駆動のための電流密度が小さくても磁壁ＤＷを駆動させることが可能である。
【００４６】
磁化自由層Ａ１が長手方向に延在する長さは６０ｎｍ以上であることが好ましい。６０ｎｍ未満では単磁区になりやすく、磁化自由層Ａ１内に磁壁ＤＷが形成されにくい。
【００４７】
磁化自由層Ａ１の厚さは磁壁駆動層として機能する限り、特に制限はないが、例えば、２〜６０ｎｍとすることができる。磁化自由層Ａ１の厚さが６０ｎｍ以上になると、積層方向に磁壁が形成される可能性が高まる。ただし、積層方向に磁壁が形成されるか否かは、磁化自由層Ａ１の形状異方性とのバランスによって生じる。磁化自由層Ａ１の厚さが６０ｎｍ未満であれば、磁壁ＤＷができることは考えにくい。
【００４８】
磁化自由層Ａ１は、層の側面に磁壁ＤＷの移動を止める磁壁ピン止め部を有してもよい。例えば、磁化自由層Ａ１の磁壁ＤＷの移動を止めたい位置に、凹凸、溝、膨らみ、くびれ、切り欠きなどを設けると、磁壁の移動を止める（ピンする）ことができる。磁壁ピン止め部を有すると、閾値以上の電流を流さないとそれ以上磁壁が移動しない構成とすることができ、出力信号をアナログ的ではなく、多値化し易くなる。
【００４９】
例えば、磁壁ピン止め部を所定の距離ごとに形成することにより、磁壁ＤＷをより安定的に保持することができ、安定的な多値記録を可能にし、より安定的に多値化された出力信号を読み出すことを可能にする。
【００５０】
本発明が備える磁気抵抗効果素子は、磁気抵抗効果素子として機能する限り、上述した層以外の層を備えてもよい。例えば、図３に示す磁気抵抗効果素子Ａにおいては、磁化自由層は磁壁ＤＷを有する磁化記録層としての磁化自由層Ａ１だけであるが、この磁化自由層Ａ１以外に、磁化自由層Ａ１と非磁性層Ａ３との間の磁化自由層Ａ１の中央領域（平面視して磁化固定層Ａ２に重なる領域）に別の磁化自由層（以下、第２の磁化自由層という）を備えてもよい。第２の磁化自由層は磁化自由層Ａ１と磁気的に結合しており、その磁化状態は磁化自由層Ａ１の中央領域の磁化状態に依存して変化する。
【００５１】
図３に示す例では、磁壁ＤＷを形成するために、磁化自由層Ａ１のうち、平面視して磁化固定層Ａ２に重ならない両端部のそれぞれに、第１領域Ａ１１の磁化と同じ第１の方向の磁化を有する第１磁化供給層Ａ４、及び、第２領域Ａ１２の磁化と同じ第２の方向の磁化を有する第２磁化供給層Ａ５を有する。
第１磁化供給層Ａ４及び第２磁化供給層Ａ５の材料としては、磁化固定層Ａ２に使える強磁性材料と同じ材料を用いることができる。
【００５２】
図３に示す例では、磁壁ＤＷを形成するために、磁化自由層Ａ１の両端部のいずれにも磁化が固定された層として第１磁化供給層Ａ４及び第２磁化供給層Ａ５を用いたが、いずれか一方又は両方に、磁化自由層Ａ１に接すると共に磁化自由層Ａ１の長手方向に対して交差する方向に延在するスピン軌道トルク（ＳＯＴ）配線を用いてもよい。スピン軌道トルク配線は、電流が流れるとスピンホール効果によって純スピン流が生成される材料からなるものである。
かかる構成を有することにより、磁化が固定された層としての磁化供給層を設置することがなくても、スピン軌道トルク配線の両端に電流を流すことにより磁化自由層Ａ１に磁壁を導入することができ、また、スピン軌道トルク配線を介して磁化自由層Ａ１に電流を流すことで、磁壁を移動させることができる。
【００５３】
また、図３に示す例では、磁壁ＤＷを形成するために、磁化自由層Ａ１の両端部のいずれにも磁化が固定された層として第１磁化供給層Ａ４及び第２磁化供給層Ａ５を用いたが、いずれか一方又は両方に、磁化自由層Ａ１と電気的に絶縁されていると共に、磁化自由層Ａ１に対して交差する方向に延在する磁場印加配線を用いてもよい。磁場印加配線に電流を流すことによりアンペールの法則により磁場が発生する。磁場印加配線に流す電流の向きによって、発生する磁場の向きを逆向きにすることができる。そのため、磁化自由層Ａ１の端部に面内磁化を供給可能に配置することによって、磁場印加配線に流す電流の向きに応じて磁化自由層Ａ１の端部に互いに逆向きの面内磁化方向のうちの一方の面内磁化方向の磁化を供給することができる。また、磁化自由層Ａ１の端部に垂直磁化を供給可能に配置することによって、磁場印加配線に流す電流の向きに応じて磁化自由層Ａ１の端部に互いに逆向きの垂直磁化方向のうちの一方の垂直磁化方向の磁化を供給することができる。
【００５４】
また、図３に示す例では、磁壁ＤＷを形成するために、磁化自由層Ａ１の両端部のいずれにも磁化が固定された層として第１磁化供給層Ａ４及び第２磁化供給層Ａ５を用いたが、いずれか一方又は両方に、磁化自由層Ａ１に絶縁層を介して接続された電圧印加端子を用いてもよい。磁化固定層Ａ２と電圧印加端子との間に電圧を印加すると、磁化自由層Ａ１の磁化の一部が電圧の影響を受ける。例えば、電圧印加端子から電圧をパルスで印加すると磁化の一部は、電圧印加時には磁化自由層Ａ１の磁化の方向に対して直交する方向に配向し、電圧印加が止まったタイミングでは磁化自由層Ａ１の磁化は第１の方向か又はその逆方向の第２の方向に配向する。この直交する方向に配向した磁化が第１の方向か又はその逆方向の第２の方向に倒れるかは等確率であり、パルス電圧を印加するタイミング、回数、周期を調整することで、磁化の一部を第１の方向から第２の方向に配向させることができる。
【００５５】
磁化自由層Ａ１と非磁性層Ａ３の間に磁気結合層を設置してもよい。磁気結合層とは、磁化自由層Ａ１の磁化状態を転写する層である。磁化自由層Ａ１の主たる機能は磁壁を駆動させるための層であり、磁化固定層Ａ１と非磁性層Ａ２を介して生じる磁気抵抗効果に適した材料を選択できるとは限らない。一般的に、非磁性層Ａ２を用いたコヒーレントトンネル効果を生じさせるためには、磁化固定層Ａ１や磁気結合層はＢＣＣ構造の強磁性材料が良いことが知られている。特に、磁化固定層Ａ１や磁気結合層の材料として、Ｃｏ−Ｆｅ−Ｂの組成の材料がスパッタによって作成した際に大きな出力が得られることが知られている。
【００５６】
図４は第１実施形態の積和演算器１の適用例を示す図である。
図４に示す例では、第１実施形態の積和演算器１が、ニューロモーフィックデバイス１００に適用されている。ニューロモーフィックデバイス１００は、入力層１０１と、隠れ層１０２と、出力層１０３と、第１実施形態の積和演算器１と、積和演算器２とを備えている。積和演算器２は、図１に示す第１実施形態の積和演算器１と同様に複数の積演算素子を有する。
入力層１０１は、例えば４つのノード１０１Ａ、１０１Ｂ、１０１Ｃ、１０１Ｄを備えている。隠れ層１０２は、例えば３つのノード１０２Ａ、１０２Ｂ、１０２Ｃを備えている。出力層１０３は、例えば３つのノード１０３Ａ、１０３Ｂ、１０３Ｃを備えている。
積和演算器１は、入力層１０１と隠れ層１０２との間に配置され、入力層１０１の４つのノード１０１Ａ、１０１Ｂ、１０１Ｃ、１０１Ｄと、隠れ層１０２の３つのノード１０２Ａ、１０２Ｂ、１０２Ｃとを接続する。積和演算器１は、図１に示す積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値を変更することによって、重みを変更する。
隠れ層１０２と出力層１０３との間には、積和演算器２が配置されている。積和演算器２は、隠れ層１０２の３つのノード１０２Ａ、１０２Ｂ、１０２Ｃと、出力層１０３の３つのノード１０３Ａ、１０３Ｂ、１０３Ｃとを接続する。積和演算器２は、複数の積演算素子の抵抗値を変更することによって、重みを変更する。
隠れ層１０２は、活性化関数（例えばシグモイド関数）を使用する。
【００５７】
ところで、積和演算器１を構成する積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤのそれぞれの抵抗値は、温度変化に応じて変動する。詳細には、通常の抵抗体とは異なり、磁気抵抗効果素子Ａである積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤのそれぞれの抵抗値は、温度が上昇するに従って低下する。つまり、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値は、通常の抵抗体とは異なる温度依存性を有する。
本発明者は、鋭意研究において、温度変化に応じた積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値の変動が考慮されることなく、ニューロモーフィックデバイス１００による判別が行われると、ニューロモーフィックデバイス１００の判別機能が低下することを見い出した。
また、本発明者は、例えば入力部１２から出力検出器１１Ａ、１１Ｂに電流が流れる場合（順方向に電流が流れる場合）の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値と、出力検出器１１Ａ、１１Ｂから入力部１２に電流が流れる場合（逆方向に電流が流れる場合）の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値とが異なることを見い出した。すなわち、本発明者は、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値がバイアス依存性を有する（電圧および極性に依存する）ことを見い出した。
この点に鑑み、第１実施形態の積和演算器１では、後述する対策が施されている。
【００５８】
具体的には、図１に示す例では、上述したように、リファレンス素子１０ＡＭＡＸと、リファレンス素子１０ＡＭＩＮとが、積和演算器１に備えられている。
リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮは、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤとは異なり、磁壁を有さない磁化自由層と、磁化方向が固定された磁化固定層と、磁化自由層と磁化固定層とに挟まれた非磁性層とを有すると共に、磁化自由層の磁化方向と磁化固定層の磁化方向とがなす相対角度が固定されたリファレンス磁気抵抗効果素子であるか、又は磁壁を有する磁化自由層と、磁化方向が固定された磁化固定層と、磁化自由層と磁化固定層とに挟まれた非磁性層とを有すると共に、この磁壁を有する磁化自由層の複数の磁化方向のそれぞれと磁化固定層の磁化方向とがなす相対角度が実質的に固定されたリファレンス磁気抵抗効果素子である。相対角度が実質的に固定されたリファレンス磁気抵抗効果素子とは、積和演算器を初期化する時点で、リファレンス磁気抵抗効果素子の値を決められた初期値に設定し、以降の動作時には、初期値から値を変更せずに使用し、実質的な固定値として運用することで実現できる。リファレンス磁気抵抗効果素子の設定値には、最大、または最小値を用いてもよいし、あるいは任意の最大と最小の間の値を選択してもよい。磁壁を有さない磁化自由層には、磁化自由層Ａ１のうち、平面視して磁化固定層Ａ２と重なる領域に磁壁を有さないものを用いても良い。相対角度を固定する方法としては公知の方法を用いることができる。リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮは、磁気抵抗効果素子である積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤとの比較が容易となるように（較正が容易にできるように）、磁壁の有無を除いては、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤと層構成（材料、層厚）と同じ、あるいは、類似していることが好ましい。リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮにおける磁壁を有さない磁化自由層として、磁化方向が固定した層を用いてもよい。
リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮは、温度変化に応じた積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値の変動がニューロモーフィックデバイス１００の判別機能に悪影響をおよぼさないようにするために用いられる。
詳細には、リファレンス素子１０ＡＭＡＸは、入力部１２から出力検出器１１Ａ、１１Ｂに電流が流れる場合における温度変化に応じた積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値の変動がニューロモーフィックデバイス１００の判別機能に悪影響をおよぼさないようにするために用いられる。リファレンス素子１０ＡＭＡＸは、磁化自由層の磁化方向と磁化固定層の磁化方向とが反平行であってもよい。
また、リファレンス素子１０ＡＭＩＮは、出力検出器１１Ａ、１１Ｂから入力部１２に電流が流れる場合における温度変化に応じた積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値の変動がニューロモーフィックデバイス１００の判別機能に悪影響をおよぼさないようにするために用いられる。リファレンス素子１０ＡＭＩＮは、磁化自由層の磁化方向と磁化固定層の磁化方向とが平行であってもよい。
磁壁を有するレファレンス素子の磁化自由層には、磁化自由層Ａ１のうち、平面視して磁化固定層Ａ２と重なる領域に磁壁を有するものを用いても良い。磁壁を有するレファレンス素子の磁化自由層の複数の磁化方向のそれぞれと、レファレンス素子の磁化固定層の磁化方向とがなす相対角度を固定する方法としては、
積和演算器を初期化する時点で、リファレンス磁気抵抗効果素子の値を決められた初期値に設定し、以降の積和演算時には、初期値から値を変更せずに使用しすることで、実質的な固定値として使用する方法を用いることができる。この場合も、リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮは、磁気抵抗効果素子である積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤとの比較が容易となるように（校正が容易にできるように）、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤと層構成（材料、層厚）と同じ、あるいは、類似していることが好ましい。
磁壁を有する磁化自由層を備えるレファレンス素子を使用する場合、読み出し時に磁壁がシフトしないように、読み出し電流方向と磁化供給層Ａ４、Ａ５の磁化方向の関係を調節しても良い。例えば、最大値として用いるリファレンス素子においては、読み出し電流が流れる側にある磁化供給層の磁化の向きを磁化固定層Ａ２の磁化と反平行に、他方の磁化供給層の磁化の向きを磁化固定層Ａ２の磁化と平行に配置させてもよい。また、最小値として用いるリファレンス素子においては、読み出し電流が流れる側にある磁化供給層の磁化の向きを磁化固定層Ａ２の磁化と平行に、他方の磁化供給層の磁化の向きを磁化固定層Ａ２の磁化と反平行に配置させてもよい。
【００５９】
また、図２に示す例では、上述したように、比較部１４が積和演算器１に備えられている。比較部１４は、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤからの出力と、リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮからの出力とを比較する。
詳細には、比較部１４は、入力部１２から出力検出器１１Ａ、１１Ｂに電流が流れる場合（順方向に電流が流れる場合）に、例えば積演算素子１０ＡＡからの出力と、リファレンス素子１０ＡＭＡＸからの出力とを比較する。例えば積演算素子１０ＡＡからの順方向出力電流とリファレンス素子１０ＡＭＡＸからの順方向出力電流とを比較することによって、その時の温度条件において、順方向出力電流が流れる積演算素子１０ＡＡの抵抗値がどの程度変動しているかを把握することができる。
また、比較部１４は、出力検出器１１Ａ、１１Ｂから入力部１２に電流が流れる場合（逆方向に電流が流れる場合）に、例えば積演算素子１０ＡＡからの出力と、リファレンス素子１０ＡＭＩＮからの出力とを比較する。例えば積演算素子１０ＡＡからの逆方向出力電流とリファレンス素子１０ＡＭＩＮからの逆方向出力電流とを比較することによって、その時の温度条件において、逆方向出力電流が流れる積演算素子１０ＡＡの抵抗値がどの程度変動しているかを把握することができる。
【００６０】
また、図２に示す例では、上述したように、補正部１５が積和演算器１に備えられている。
入力部１２から出力検出器１１Ａ、１１Ｂに電流が流れる場合（順方向に電流が流れる場合）に、補正部１５は、例えば積演算素子１０ＡＡからの出力と、リファレンス素子１０ＡＭＡＸからの出力とに基づいて、順方向出力電流が流れる積演算素子１０ＡＡの温度に依存する抵抗値変化分を算出する。また、補正部１５は、順方向出力電流が流れる積演算素子１０ＡＡの温度に依存する抵抗値変化分に基づいて、順方向出力電流が流れる積演算素子１０ＡＡの抵抗値を補正する。同様に、補正部１５は、順方向出力電流が流れる積演算素子１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値を補正する。
出力検出器１１Ａ、１１Ｂから入力部１２に電流が流れる場合（逆方向に電流が流れる場合）に、補正部１５は、例えば積演算素子１０ＡＡからの出力と、リファレンス素子１０ＡＭＩＮからの出力とに基づいて、逆方向出力電流が流れる積演算素子１０ＡＡの温度に依存する抵抗値変化分を算出する。また、補正部１５は、逆方向出力電流が流れる積演算素子１０ＡＡの温度に依存する抵抗値変化分に基づいて、逆方向出力電流が流れる積演算素子１０ＡＡの抵抗値を補正する。同様に、補正部１５は、逆方向出力電流が流れる積演算素子１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値を補正する。
そのため、第１実施形態の積和演算器１では、リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮが備えられていない場合よりも、温度変化に応じた積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値の変動に伴うニューロモーフィックデバイス１００の判別機能低下を抑制することができる。
【００６１】
また、図２に示す例では、上述したように、故障検知部１３が積和演算器１に備えられている。故障検知部１３は、積演算素子１０ＡＡなどが故障しているか否かの判断を行う。
故障検知部１３は、例えば、出力検出器１１Ａによって検出される積演算素子１０ＡＡからの出力が規定値を超えた場合に、出力電流が大きくなる故障が積演算素子１０ＡＡに発生したと判断する。
また、故障検知部１３は、例えば、出力検出器１１Ｂによって検出される複数の積演算素子１０ＢＡ〜１０ＢＤからの出力の合計値が規定値を超えた場合に、カラム１０Ｂに含まれる複数の積演算素子１０ＢＡ〜１０ＢＤの少なくともいずれかに、出力電流が大きくなる故障が発生したと判断する。
【００６２】
図５は出力検出器１１Ｂによって検出される合計値および規定値を説明するための図である。図５において、縦軸は、出力検出器１１Ｂによって検出される複数の積演算素子１０ＢＡ〜１０ＢＤの出力電流の合計値、規定値などを示す。横軸は、積演算素子１０ＢＡ〜１０ＢＤの状態（抵抗値の大きさ）を示す。
複数の積演算素子１０ＢＡ〜１０ＢＤの正常動作時であって、積演算素子１０ＢＡ〜１０ＢＤの抵抗値が最も高い時には、出力検出器１１Ｂによって検出される複数の積演算素子１０ＢＡ〜１０ＢＤの出力電流の合計値が最小値Ｍｉｎになる。
複数の積演算素子１０ＢＡ〜１０ＢＤの正常動作時には、積演算素子１０ＢＡ〜１０ＢＤの抵抗値が低くなるに従って、出力検出器１１Ｂによって検出される複数の積演算素子１０ＢＡ〜１０ＢＤの出力電流の合計値が大きくなる。
複数の積演算素子１０ＢＡ〜１０ＢＤの正常動作時であって、積演算素子１０ＢＡ〜１０ＢＤの抵抗値が最も低い時には、出力検出器１１Ｂによって検出される複数の積演算素子１０ＢＡ〜１０ＢＤの出力電流の合計値が最大値Ｍａｘになる。
規定値は、最大値Ｍａｘ以上の値に設定されている。つまり、規定値は、複数の積演算素子１０ＢＡ〜１０ＢＤのすべてが正常に動作する場合に出力検出器１１Ｂが検出し得る合計値の最大値Ｍａｘ以上の値である。
【００６３】
図５に示す例において、点Ｐ１の状態では、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤの出力電流の合計値が、規定値を超えない。そのため、故障検知部１３は、カラム１０Ｂに含まれる複数の積演算素子１０ＢＡ〜１０ＢＤのいずれにも、出力電流が大きくなる故障が発生していない可能性が高いと判断する。
一方、点Ｐ２の状態では、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤの出力電流の合計値が、規定値を超える。そのため、故障検知部１３は、カラム１０Ｂに含まれる複数の積演算素子１０ＢＡ〜１０ＢＤの少なくともいずれかに、出力電流が大きくなる故障が発生したと判断する。
【００６４】
また、図１および図２に示す例では、故障検知部１３は、複数の積演算素子１０ＡＡ、１０ＡＢのそれぞれが故障しているか否かを判断する。
例えば、積演算素子１０ＡＡが故障しているか否かを判断するために、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力しない状態、かつ、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力しない状態、かつ、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力しない状態、かつ、第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力する状態で、出力検出器１１Ａが、積演算素子１０ＡＡからの出力を検出する。この状態では、積演算素子１０ＡＢからの出力がゼロであり、リファレンス素子１０ＡＭＡＸからの出力がゼロであり、リファレンス素子１０ＡＭＩＮからの出力がゼロである。また、故障検知部１３は、出力検出器１１Ａの検出値に基づいて、積演算素子１０ＡＡが故障しているか否かを判断する。
故障検知部１３は、同様に、積演算素子１０ＡＢが故障しているか否かを判断する。
【００６５】
また、図１および図２に示す例では、故障検知部１３は、複数の積演算素子１０ＢＡ、１０ＢＢ、１０ＢＣ、１０ＢＤのそれぞれが故障しているか否かを判断する。
例えば、積演算素子１０ＢＢが故障しているか否かを判断するために、第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力しない状態、かつ、第３入力部１２Ｃが積演算素子１０ＢＣに対して信号を入力しない状態、かつ、第４入力部１２Ｄが積演算素子１０ＢＤに対して信号を入力しない状態、かつ、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力する状態で、出力検出器１１Ｂが、積演算素子１０ＢＢからの出力を検出する。この状態では、積演算素子１０ＢＡからの出力がゼロであり、積演算素子１０ＢＣからの出力がゼロであり、積演算素子１０ＢＤからの出力がゼロである。また、故障検知部１３は、出力検出器１１Ｂの検出値に基づいて、積演算素子１０ＢＢが故障しているか否かを判断する。
故障検知部１３は、同様に、積演算素子１０ＢＡが故障しているか否か、積演算素子１０ＢＣが故障しているか否か、および、積演算素子１０ＢＤが故障しているか否かを判断する。
【００６６】
図６は第１実施形態の積和演算器１によって実行される処理の一例を示すフローチャートである。
図６に示す例では、積和演算器１は、入力部１２から出力検出器１１Ａ、１１Ｂに電流が流れる動作モードと、出力検出器１１Ａ、１１Ｂから入力部１２に電流が流れるバックプロパゲーションモードとを備える。
積和演算器１が動作モードである場合に、ステップＳ１０では、故障検知部１３が、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤからの順方向の出力の正常範囲を設定する。詳細には、故障検知部１３は、例えば図５の「規定値」以下の範囲を、複数の積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値の正常範囲として設定する。また、故障検知部１３は、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤのそれぞれからの順方向の出力の正常範囲を設定する。故障検知部１３は、例えば積演算素子１０ＡＡが正常に動作する場合に積演算素子１０ＡＡが順方向に出力し得る最大電流値以下の範囲を、積演算素子１０ＡＡからの順方向の出力の正常範囲として設定する。
次いで、ステップＳ１１では、出力検出器１１Ａが、積演算素子１０ＡＡ、１０ＡＢおよびリファレンス素子１０ＡＭＡＸのそれぞれからの順方向出力電流を検出する。詳細には、第１入力部１２Ａが積演算素子１０ＡＡに対して信号を入力し、第２入力部１２Ｂが積演算素子１０ＡＢに対して信号を入力せず、第３入力部１２Ｃがリファレンス素子１０ＡＭＡＸに対して信号を入力せず、第４入力部１２Ｄがリファレンス素子１０ＡＭＩＮに対して信号を入力しない場合に、出力検出器１１Ａは、積演算素子１０ＡＡからの順方向出力電流を検出する。同様に、出力検出器１１Ａは、積演算素子１０ＡＢからの順方向出力電流と、リファレンス素子１０ＡＭＡＸからの順方向出力電流とを検出する。
また、ステップＳ１１では、出力検出器１１Ｂが、積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力を検出する。詳細には、出力検出器１１Ｂは、積演算素子１０ＢＡ〜１０ＢＤからの順方向出力電流の合計値を検出する。また、出力検出器１１Ｂは、積演算素子１０ＢＡからの順方向出力電流、積演算素子１０ＢＢからの順方向出力電流、積演算素子１０ＢＣからの順方向出力電流、および、積演算素子１０ＢＤからの順方向出力電流のそれぞれを検出する。
【００６７】
次いで、ステップＳ１２では、故障検知部１３が、複数の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの故障の有無を判断する。詳細には、故障検知部１３は、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの順方向出力電流の合計値と、積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値の正常範囲とに基づいて、複数の積演算素子１０ＢＡ〜１０ＢＤに故障している積演算素子が含まれるか否かを判断する。出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの順方向出力電流の合計値が、積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値の正常範囲を超える場合に、故障検知部１３は、複数の積演算素子１０ＢＡ〜ＢＤに故障している積演算素子が含まれると判断し、図６に示すルーチンを終了する。
また、ステップＳ１２では、故障検知部１３が、出力検出器１１Ａによって検出される積演算素子１０ＡＡ、１０ＡＢのそれぞれからの順方向出力電流と、積演算素子１０ＡＡ、１０ＡＢのそれぞれからの順方向の出力の正常範囲とに基づいて、積演算素子１０ＡＡ、１０ＡＢが故障しているか否かを判断する。出力検出器１１Ａによって検出される積演算素子１０ＡＡからの順方向出力電流が、積演算素子１０ＡＡからの順方向の出力の正常範囲を超える場合に、故障検知部１３は、積演算素子１０ＡＡが故障していると判断し、図６に示すルーチンを終了する。また、積演算素子１０ＡＢが故障していると故障検知部１３が判断する場合にも、図６に示すルーチンを終了する。
また、ステップＳ１２では、故障検知部１３が、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤのそれぞれからの順方向出力電流と、積演算素子１０ＢＡ〜１０ＢＤのそれぞれからの順方向の出力の正常範囲とに基づいて、積演算素子１０ＢＡ〜１０ＢＤが故障しているか否かを判断する。出力検出器１１Ｂによって検出される積演算素子１０ＢＡからの順方向出力電流が、積演算素子１０ＢＡからの順方向の出力の正常範囲を超える場合に、故障検知部１３は、積演算素子１０ＢＡが故障していると判断し、図６に示すルーチンを終了する。また、積演算素子１０ＢＢ〜１０ＢＤのいずれかが故障していると故障検知部１３が判断する場合にも、図６に示すルーチンを終了する。
ステップＳ１２において、複数の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤが故障していないと故障検知部１３が判断する場合には、ステップＳ１３に進む。
【００６８】
ステップＳ１３では、比較部１４は、出力検出器１１Ａによって検出される積演算素子１０ＡＡからの順方向出力電流と、出力検出器１１Ａによって検出されるリファレンス素子１０ＡＭＡＸからの順方向出力電流とを比較する。
ステップＳ１３では、比較部１４が、出力検出器１１Ａによって検出される積演算素子１０ＡＢからの順方向出力電流、または、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤのいずれかからの順方向出力電流と、出力検出器１１Ａによって検出されるリファレンス素子１０ＡＭＡＸからの順方向出力電流とを比較してもよい。
【００６９】
次いで、ステップＳ１４では、補正部１５は、比較部１４による比較結果に基づき、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正しないと、ニューロモーフィックデバイス１００の判別機能が低下するおそれがあるか否かを判定する。積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正しなければ、ニューロモーフィックデバイス１００の判別機能が低下するおそれがある場合に、補正部１５は、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正する。
詳細には、補正部１５は、出力検出器１１Ａによって検出される積演算素子１０ＡＡからの順方向出力電流と、出力検出器１１Ａによって検出されるリファレンス素子１０ＡＭＡＸからの順方向出力電流とに基づいて、積演算素子１０ＡＡの温度に依存する抵抗値変化分を算出する。また、補正部１５は、その抵抗値変化分に基づいて、積演算素子１０ＡＡの順方向の抵抗値を補正する。
具体的には、温度上昇によって積演算素子１０ＡＡの順方向の抵抗値が所望の順方向の抵抗値よりも低くなっている場合に、補正部１５は、積演算素子１０ＡＡの順方向の抵抗値を増加させる補正を行う。また、温度低下によって積演算素子１０ＡＡの順方向の抵抗値が所望の順方向の抵抗値よりも高くなっている場合に、補正部１５は、積演算素子１０ＡＡの順方向の抵抗値を減少させる補正を行う。同様に、補正部１５は、積演算素子１０ＡＢ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正する。
【００７０】
積和演算器１がバックプロパゲーションモードである場合に、ステップＳ１０では、故障検知部１３が、積演算素子１０ＢＡ〜１０ＢＤからの逆方向の出力の合計値の正常範囲を設定する。また、故障検知部１３は、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤのそれぞれからの逆方向の出力の正常範囲を設定する。
次いで、ステップＳ１１では、出力検出器１１Ａが、積演算素子１０ＡＡ、１０ＡＢおよびリファレンス素子１０ＡＭＩＮのそれぞれを流れる逆方向出力電流を検出する。詳細には、第１入力部１２Ａが逆方向電流経路をオンし、第２入力部１２Ｂが逆方向電流経路をオフし、第３入力部１２Ｃが逆方向電流経路をオフし、第４入力部１２Ｄが逆方向電流経路をオフする場合に、出力検出器１１Ａは、積演算素子１０ＡＡを流れる逆方向出力電流を検出する。同様に、出力検出器１１Ａは、積演算素子１０ＡＢを流れる逆方向出力電流と、リファレンス素子１０ＡＭＩＮを流れる逆方向出力電流とを検出する。
また、ステップＳ１１では、出力検出器１１Ｂが、積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向出力電流を検出する。詳細には、出力検出器１１Ｂは、積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向出力電流の合計値を検出する。また、出力検出器１１Ｂは、積演算素子１０ＢＡを流れる逆方向出力電流、積演算素子１０ＢＢを流れる逆方向出力電流、積演算素子１０ＢＣを流れる逆方向出力電流、および、積演算素子１０ＢＤを流れる逆方向出力電流のそれぞれを検出する。
【００７１】
次いで、ステップＳ１２では、故障検知部１３が、複数の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの故障の有無を判断する。詳細には、故障検知部１３は、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向出力電流の合計値と、積演算素子１０ＢＡ〜１０ＢＤからの逆方向の出力の合計値の正常範囲とに基づいて、複数の積演算素子１０ＢＡ〜１０ＢＤに故障している積演算素子が含まれるか否かを判断する。出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向出力電流の合計値が、積演算素子１０ＢＡ〜１０ＢＤからの逆方向の出力の合計値の正常範囲を超える場合に、故障検知部１３は、複数の積演算素子１０ＢＡ〜ＢＤに故障している積演算素子が含まれると判断し、図６に示すルーチンを終了する。
また、ステップＳ１２では、故障検知部１３が、出力検出器１１Ａによって検出される積演算素子１０ＡＡ、１０ＡＢのそれぞれを流れる逆方向出力電流と、積演算素子１０ＡＡ、１０ＡＢのそれぞれからの逆方向の出力の正常範囲とに基づいて、積演算素子１０ＡＡ、１０ＡＢが故障しているか否かを判断する。出力検出器１１Ａによって検出される積演算素子１０ＡＡを流れる逆方向出力電流が、積演算素子１０ＡＡからの逆方向の出力の正常範囲を超える場合に、故障検知部１３は、積演算素子１０ＡＡが故障していると判断し、図６に示すルーチンを終了する。また、積演算素子１０ＡＢが故障していると故障検知部１３が判断する場合にも、図６に示すルーチンを終了する。
また、ステップＳ１２では、故障検知部１３が、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤのそれぞれを流れる逆方向出力電流と、積演算素子１０ＢＡ〜１０ＢＤのそれぞれからの逆方向の出力の正常範囲とに基づいて、積演算素子１０ＢＡ〜１０ＢＤが故障しているか否かを判断する。出力検出器１１Ｂによって検出される積演算素子１０ＢＡを流れる逆方向出力電流が、積演算素子１０ＢＡからの逆方向の出力の正常範囲を超える場合に、故障検知部１３は、積演算素子１０ＢＡが故障していると判断し、図６に示すルーチンを終了する。また、積演算素子１０ＢＢ〜１０ＢＤのいずれかが故障していると故障検知部１３が判断する場合にも、図６に示すルーチンを終了する。  ステップＳ１２において、複数の積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤが故障していないと故障検知部１３が判断する場合には、ステップＳ１３に進む。
【００７２】
ステップＳ１３では、比較部１４は、出力検出器１１Ａによって検出される積演算素子１０ＡＡを流れる逆方向出力電流と、出力検出器１１Ａによって検出されるリファレンス素子１０ＡＭＩＮを流れる逆方向出力電流とを比較する。
ステップＳ１３では、比較部１４が、出力検出器１１Ａによって検出される積演算素子１０ＡＢを流れる逆方向出力電流、または、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤのいずれかを流れる逆方向出力電流と、出力検出器１１Ａによって検出されるリファレンス素子１０ＡＭＩＮを流れる逆方向出力電流とを比較してもよい。
【００７３】
次いで、ステップＳ１４では、補正部１５は、比較部１４による比較結果に基づいて、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正しないと、ニューロモーフィックデバイス１００の判別機能が低下するおそれがある（詳細には、所望のバックプロパゲーション学習を実行できないおそれがある）か否かを判定する。積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正しなければ、ニューロモーフィックデバイス１００の判別機能が低下するおそれがある場合（所望のバックプロパゲーション学習を実行できないおそれがある場合）に、補正部１５は、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正する。
詳細には、補正部１５は、出力検出器１１Ａによって検出される積演算素子１０ＡＡを流れる逆方向出力電流と、出力検出器１１Ａによって検出されるリファレンス素子１０ＡＭＩＮを流れる逆方向出力電流とに基づいて、積演算素子１０ＡＡの温度に依存する抵抗値変化分を算出する。また、補正部１５は、その抵抗値変化分に基づいて、積演算素子１０ＡＡの逆方向の抵抗値を補正する。
具体的には、積和演算器１が動作モードである場合と同様に、温度上昇によって積演算素子１０ＡＡの逆方向の抵抗値が所望の逆方向の抵抗値よりも低くなっている場合に、補正部１５は、積演算素子１０ＡＡの逆方向の抵抗値を増加させる補正を行う。また、温度低下によって積演算素子１０ＡＡの逆方向の抵抗値が所望の逆方向の抵抗値よりも高くなっている場合に、補正部１５は、積演算素子１０ＡＡの逆方向の抵抗値を減少させる補正を行う。同様に、補正部１５は、積演算素子１０ＡＢ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正する。
【００７４】
上述したように、第１実施形態の積和演算器１では、磁壁を有さない磁化自由層を有するリファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮが積演算部１０に備えられている。
そのため、第１実施形態の積和演算器１によれば、そのようなリファレンス素子が積演算部に備えられていない積和演算器よりも、ニューラルネットワークに適用される場合に、温度変化によるニューラルネットワークの性能低下を抑制することができる。
【００７５】
また、第１実施形態の積和演算器１では、上述したように、磁化自由層の磁化方向と磁化固定層の磁化方向とが反平行であるリファレンス素子１０ＡＭＡＸと、磁化自由層の磁化方向と磁化固定層の磁化方向とが平行であるリファレンス素子１０ＡＭＩＮとが積演算部１０に備えられている。
そのため、第１実施形態の積和演算器１によれば、積和演算器１が動作モードである場合に温度変化によるニューラルネットワークの性能低下を抑制することができると共に、積和演算器１がバックプロパゲーションモードである場合に所望のバックプロパゲーション学習を実行できないおそれを抑制することができる。
【００７６】
また、第１実施形態の積和演算器１では、上述したように、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤからの出力と、リファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮからの出力とを比較する比較部１４が備えられている。
そのため、第１実施形態の積和演算器１によれば、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤからの出力とリファレンス素子１０ＡＭＡＸ、１０ＡＭＩＮからの出力とが比較されない場合よりも、温度変化によるニューラルネットワークの性能低下を抑制することができる。
【００７７】
また、第１実施形態の積和演算器１では、上述したように、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値を温度変化に応じて補正する補正部１５が備えられている。
そのため、第１実施形態の積和演算器１によれば、積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ〜１０ＢＤの抵抗値が温度変化に応じて補正されないよりも、温度変化によるニューラルネットワークの性能低下を抑制することができる。
【００７８】
＜第２実施形態＞
以下、本発明の積和演算器の第２実施形態について説明する。
第２実施形態の積和演算器１は、後述する点を除き、上述した第１実施形態の積和演算器１と同様に構成されている。従って、第２実施形態の積和演算器１によれば、後述する点を除き、上述した第１実施形態の積和演算器１と同様の効果を奏することができる。
【００７９】
図７は第２実施形態の積和演算器１の一部の構成の一例を示す図である。
図１に示す例では、積演算部１０がリファレンスカラムを備えていないが、図７に示す例では、積演算部１０がリファレンスカラム１０ＭＡＸ、１０ＭＩＮを備えている。
【００８０】
図７に示す例では、カラム１０Ａが、積演算素子１０ＡＡ、１０ＡＢの他に、積演算素子１０ＡＣ、１０ＡＤを備えている。積演算素子１０ＡＣ、１０ＡＤは、積演算素子１０ＡＡ、１０ＡＢと同様に構成されており、積演算素子１０ＡＡ、１０ＡＢと同様に積演算を行う。
リファレンスカラム１０ＭＡＸは、積演算素子を備えておらず、リファレンス素子１０ＭＡＸＡ、１０ＭＡＸＢ、１０ＭＡＸＣ、１０ＭＡＸＤを備えている。リファレンス素子１０ＭＡＸＡ、１０ＭＡＸＢ、１０ＭＡＸＣ、１０ＭＡＸＤは、図１に示すリファレンス素子１０ＡＭＡＸと同様に構成されており、積和演算器１の動作時、およびバックプロパゲーション学習時における積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値の補正に用いられる。
リファレンスカラム１０ＭＩＮは、積演算素子を備えておらず、リファレンス素子１０ＭＩＮＡ、１０ＭＩＮＢ、１０ＭＩＮＣ、１０ＭＩＮＤを備えている。リファレンス素子１０ＭＩＮＡ、１０ＭＩＮＢ、１０ＭＩＮＣ、１０ＭＩＮＤは、図１に示すリファレンス素子１０ＡＭＩＮと同様に構成されており、積和演算器１の動作時、およびバックプロパゲーション学習時における積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値の補正に用いられる。
【００８１】
図７に示す例では、積演算素子１０ＡＣの読み出し端子は、ラインＬ３１に接続されている。積演算素子１０ＡＣの書き込み端子は、ラインＬ３２に接続されている。
積演算素子１０ＡＤの読み出し端子は、ラインＬ４１に接続されている。積演算素子１０ＡＤの書き込み端子は、ラインＬ４２に接続されている。
積演算素子１０ＡＣ、１０ＡＤの共通端子は、ラインＭ１に接続されている。
リファレンス素子１０ＭＡＸＡ、１０ＭＩＮＡの読み出し端子は、ラインＬ１１に接続されている。リファレンス素子１０ＭＡＸＡ、１０ＭＩＮＡの書き込み端子は、ラインＬ１２に接続されている。
リファレンス素子１０ＭＡＸＢ、１０ＭＩＮＢの読み出し端子は、ラインＬ２１に接続されている。リファレンス素子１０ＭＡＸＢ、１０ＭＩＮＢの書き込み端子は、ラインＬ２２に接続されている。
リファレンス素子１０ＭＡＸＣ、１０ＭＩＮＣの読み出し端子は、ラインＬ３１に接続されている。リファレンス素子１０ＭＡＸＣ、１０ＭＩＮＣの書き込み端子は、ラインＬ３２に接続されている。
リファレンス素子１０ＭＡＸＤ、１０ＭＩＮＤの読み出し端子は、ラインＬ４１に接続されている。リファレンス素子１０ＭＡＸＤ、１０ＭＩＮＤの書き込み端子は、ラインＬ４２に接続されている。
リファレンス素子１０ＭＡＸＡ、１０ＭＡＸＢ、１０ＭＡＸＣ、１０ＭＡＸＤの共通端子は、ラインＭ３に接続されている。リファレンス素子１０ＭＩＮＡ、１０ＭＩＮＢ、１０ＭＩＮＣ、１０ＭＩＮＤの共通端子は、ラインＭ４に接続されている。
【００８２】
図１に示す例では、和演算部１１が、出力検出器１１Ａ、１１Ｂを備えているが、図７に示す例では、和演算部１１が、出力検出器１１Ａ、１１Ｂと、リファレンス出力検出器１１ＭＡＸ、１１ＭＩＮとを備えている。リファレンス出力検出器１１ＭＡＸはラインＭ３に配置されている。リファレンス出力検出器１１ＭＩＮはラインＭ４に配置されている。
図７に示す例では、第１入力部１２Ａがリファレンス素子１０ＭＡＸＡに対して信号を入力し、第２入力部１２Ｂがリファレンス素子１０ＭＡＸＢに対して信号を入力し、第３入力部１２Ｃがリファレンス素子１０ＭＡＸＣに対して信号を入力し、第４入力部１２Ｄがリファレンス素子１０ＭＡＸＤに対して信号を入力する場合に、リファレンス出力検出器１１ＭＡＸは、リファレンス素子１０ＭＡＸＡからの順方向の出力と、リファレンス素子１０ＭＡＸＢからの順方向の出力と、リファレンス素子１０ＭＡＸＣからの順方向の出力と、リファレンス素子１０ＭＡＸＤからの順方向の出力との合計値を検出する。
例えば、第１入力部１２Ａがリファレンス素子１０ＭＡＸＡに対して信号を入力し、第２入力部１２Ｂがリファレンス素子１０ＭＡＸＢに対して信号を入力せず、第３入力部１２Ｃがリファレンス素子１０ＭＡＸＣに対して信号を入力せず、第４入力部１２Ｄがリファレンス素子１０ＭＡＸＤに対して信号を入力しない場合に、リファレンス出力検出器１１ＭＡＸは、リファレンス素子１０ＭＡＸＡからの順方向の出力を検出する。
【００８３】
図７に示す例では、第１入力部１２Ａが逆方向電流経路をオンし、第２入力部１２Ｂが逆方向電流経路をオンし、第３入力部１２Ｃが逆方向電流経路をオンし、第４入力部１２Ｄが逆方向電流経路をオンする場合に、リファレンス出力検出器１１ＭＩＮは、リファレンス素子１０ＭＩＮＡを流れる逆方向の出力と、リファレンス素子１０ＭＩＮＢを流れる逆方向の出力と、リファレンス素子１０ＭＩＮＣを流れる逆方向の出力と、リファレンス素子１０ＭＩＮＤを流れる逆方向の出力との合計値を検出する。
例えば、第１入力部１２Ａが逆方向電流経路をオフし、第２入力部１２Ｂが逆方向電流経路をオンし、第３入力部１２Ｃが逆方向電流経路をオフし、第４入力部１２Ｄが逆方向電流経路をオフする場合に、リファレンス出力検出器１１ＭＩＮは、リファレンス素子１０ＭＩＮＢを流れる逆方向の出力を検出する。
また、逆方向電流経路の読み出しのために、入力部１２と和演算部１１は、それぞれ、さらに、入力部１２に逆方向電流経路のための検出回路を、和演算部１１に逆方向電流経路のための入力部を、備えていてもよい。
【００８４】
第２実施形態の積和演算器１では、第１実施形態の積和演算器１と同様に、図６に示す処理が実行される。
第２実施形態の積和演算器１は、入力部１２から出力検出器１１Ａ、１１Ｂおよびリファレンス出力検出器１１ＭＡＸ、１１ＭＩＮに電流が流れる動作モードと、出力検出器１１Ａ、１１Ｂおよびリファレンス出力検出器１１ＭＡＸ、１１ＭＩＮから入力部１２に電流が流れるバックプロパゲーションモードとを備える。
積和演算器１が動作モードである場合に、ステップＳ１０では、故障検知部１３が、リファレンス出力検出器１１ＭＡＸによって検出されるリファレンスカラム１０ＭＡＸからの順方向の出力に基づいて、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値の正常範囲と、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値の正常範囲とを設定する。
次いで、ステップＳ１１では、出力検出器１１Ａが、積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値を検出する。また、出力検出器１１Ｂは、積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値を検出する。
【００８５】
次いで、ステップＳ１２では、故障検知部１３が、複数の積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの故障の有無を判断する。詳細には、故障検知部１３は、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値と、積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値の正常範囲とに基づいて、複数の積演算素子１０ＡＡ〜１０ＡＤに故障している積演算素子が含まれるか否かを判断する。出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値が、積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値の正常範囲を超える場合に、故障検知部１３は、複数の積演算素子１０ＡＡ〜ＡＤに故障している積演算素子が含まれると判断し、図６に示すルーチンを終了する。
また、ステップＳ１２では、故障検知部１３が、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値と、積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値の正常範囲とに基づいて、複数の積演算素子１０ＢＡ〜１０ＢＤに故障している積演算素子が含まれるか否かを判断する。出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値が、積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値の正常範囲を超える場合に、故障検知部１３は、複数の積演算素子１０ＢＡ〜ＢＤに故障している積演算素子が含まれると判断し、図６に示すルーチンを終了する。
ステップＳ１２において、複数の積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤが故障していないと故障検知部１３が判断する場合には、ステップＳ１３に進む。
【００８６】
ステップＳ１３では、比較部１４は、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値と、リファレンス出力検出器１１ＭＡＸ、ＭＩＮによって検出されるリファレンスカラム１０ＭＡＸ、ＭＩＮからの順方向の出力とを比較する。
ステップＳ１３では、比較部１４が、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの順方向の出力の合計値と、リファレンス出力検出器１１ＭＡＸ、ＭＩＮによって検出されるリファレンスカラム１０ＭＡＸ、ＭＩＮからの順方向の出力とを比較してもよい。
【００８７】
次いで、ステップＳ１４では、補正部１５は、比較部１４による比較結果に基づき、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正しないと、ニューロモーフィックデバイス１００の判別機能が低下するおそれがあるか否かを判定する。積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正しなければ、ニューロモーフィックデバイス１００の判別機能が低下するおそれがある場合に、補正部１５は、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正する。
詳細には、補正部１５は、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの順方向の出力の合計値と、リファレンス出力検出器１１ＭＡＸ、ＭＩＮによって検出されるリファレンスカラム１０ＭＡＸ、ＭＩＮからの順方向の出力とに基づいて、積演算素子１０ＡＡ〜１０ＡＤの温度に依存する抵抗値変化分を算出する。また、補正部１５は、その抵抗値変化分に基づいて、積演算素子１０ＡＡ〜１０ＡＤの順方向の抵抗値を補正する。
具体的には、温度上昇によって積演算素子１０ＡＡ〜１０ＡＤの順方向の抵抗値が所定の（例えば標準温度の）順方向の抵抗値よりも低くなっている場合に、補正部１５は、積演算素子１０ＡＡ〜１０ＡＤの順方向の抵抗値を増加させる補正を行う。また、温度低下によって積演算素子１０ＡＡ〜１０ＡＤの順方向の抵抗値が所定の順方向の抵抗値よりも高くなっている場合に、補正部１５は、積演算素子１０ＡＡ〜１０ＡＤの順方向の抵抗値を減少させる補正を行う。同様に、補正部１５は、積演算素子１０ＢＡ〜１０ＢＤの順方向の抵抗値を補正する。
【００８８】
積和演算器１がバックプロパゲーションモードである場合に、ステップＳ１０では、故障検知部１３が、リファレンス出力検出器１１ＭＩＮによって検出されるリファレンスカラム１０ＭＩＮを流れる逆方向の出力に基づいて、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値の正常範囲と、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値の正常範囲とを設定する。
次いで、ステップＳ１１では、出力検出器１１Ａが、積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値を検出する。また、出力検出器１１Ｂは、積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値を検出する。
【００８９】
次いで、ステップＳ１２では、故障検知部１３が、複数の積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの故障の有無を判断する。詳細には、故障検知部１３は、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値と、積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値の正常範囲とに基づいて、複数の積演算素子１０ＡＡ〜１０ＡＤに故障している積演算素子が含まれるか否かを判断する。出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値が、積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値の正常範囲を超える場合に、故障検知部１３は、複数の積演算素子１０ＡＡ〜ＡＤに故障している積演算素子が含まれると判断し、図６に示すルーチンを終了する。
また、ステップＳ１２では、故障検知部１３が、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値と、積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値の正常範囲とに基づいて、複数の積演算素子１０ＢＡ〜１０ＢＤに故障している積演算素子が含まれるか否かを判断する。出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値が、積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値の正常範囲を超える場合に、故障検知部１３は、複数の積演算素子１０ＢＡ〜ＢＤに故障している積演算素子が含まれると判断し、図６に示すルーチンを終了する。
ステップＳ１２において、複数の積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤが故障していないと故障検知部１３が判断する場合には、ステップＳ１３に進む。
【００９０】
ステップＳ１３では、比較部１４は、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値と、リファレンス出力検出器１１ＭＩＮによって検出されるリファレンスカラム１０ＭＩＮを流れる逆方向の出力とを比較する。
ステップＳ１３では、比較部１４が、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤを流れる逆方向の出力の合計値と、リファレンス出力検出器１１ＭＩＮによって検出されるリファレンスカラム１０ＭＩＮを流れる逆方向の出力とを比較してもよい。
【００９１】
次いで、ステップＳ１４では、補正部１５は、比較部１４による比較結果に基づき、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正しないと、ニューロモーフィックデバイス１００の判別機能が低下する（詳細には、所望のバックプロパゲーション学習を実行できないおそれがある）おそれがあるか否かを判定する。積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正しなければ、ニューロモーフィックデバイス１００の判別機能が低下するおそれがある場合（所望のバックプロパゲーション学習を実行できないおそれがある場合）に、補正部１５は、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正する。
詳細には、補正部１５は、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤを流れる逆方向の出力の合計値と、リファレンス出力検出器１１ＭＩＮによって検出されるリファレンスカラム１０ＭＩＮを流れる逆方向の出力とに基づいて、積演算素子１０ＡＡ〜１０ＡＤの温度に依存する抵抗値変化分を算出する。また、補正部１５は、その抵抗値変化分に基づいて、積演算素子１０ＡＡ〜１０ＡＤの逆方向の抵抗値を補正する。
具体的には、積和演算器１が動作モードである場合と同様に、温度上昇によって積演算素子１０ＡＡ〜１０ＡＤの逆方向の抵抗値が所望の逆方向の抵抗値よりも低くなっている場合に、補正部１５は、積演算素子１０ＡＡ〜１０ＡＤの逆方向の抵抗値を増加させる補正を行う。また、温度低下によって積演算素子１０ＡＡ〜１０ＡＤの逆方向の抵抗値が所望の逆方向の抵抗値よりも高くなっている場合に、補正部１５は、積演算素子１０ＡＡ〜１０ＡＤの逆方向の抵抗値を減少させる補正を行う。同様に、補正部１５は、積演算素子１０ＢＡ〜１０ＢＤの逆方向の抵抗値を補正する。
【００９２】
上述したように、第２実施形態の積和演算器１では、リファレンス素子１０ＭＡＸＡ〜１０ＭＡＸＤを有するリファレンスカラム１０ＭＡＸと、リファレンス素子１０ＭＩＮＡ〜１０ＭＩＮＤを有するリファレンスカラム１０ＭＩＮとが備えられている。
そのため、第２実施形態の積和演算器１によれば、ニューラルネットワークに適用される場合に、リファレンスカラム１０ＭＡＸ、１０ＭＩＮを用いることによって、温度変化によるニューラルネットワークの性能低下を抑制することができる。
【００９３】
また、第２実施形態の積和演算器１では、上述したように、リファレンスカラム１０ＭＡＸからの出力を検出するリファレンス出力検出器１１ＭＡＸと、リファレンスカラム１０ＭＩＮからの出力を検出するリファレンス出力検出器１１ＭＩＮとが備えられている。
そのため、第２実施形態の積和演算器１によれば、ニューラルネットワークに適用される場合に、リファレンス出力検出器１１ＭＡＸ、１１ＭＩＮを用いることによって、温度変化によるニューラルネットワークの性能低下を抑制することができる。
【００９４】
また、第２実施形態の積和演算器１では、上述したように、リファレンス出力検出器１１ＭＡＸ、１１ＭＩＮによって検出されるリファレンスカラム１０ＭＡＸ、１０ＭＩＮのそれぞれからの出力に基づいて、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの出力の合計値の正常範囲と、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの出力の合計値の正常範囲とが設定される。また、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの出力の合計値と正常範囲とに基づいて、積演算素子１０ＡＡ〜１０ＡＤの故障の有無が判断され、出力検出器１１Ｂによって検出される積演算素子１０ＢＡ〜１０ＢＤからの出力の合計値と正常範囲とに基づいて、積演算素子１０ＢＡ〜１０ＢＤの故障の有無が判断される。
そのため、第２実施形態の積和演算器１によれば、ニューラルネットワークに適用される場合に、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの故障の有無が判断されることなく、ニューラルネットワークの性能が低下してしまうおそれを抑制することができる。
【００９５】
また、第２実施形態の積和演算器１では、上述したように、積和演算器１が動作モードである場合に、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの出力の合計値と、リファレンス出力検出器１１ＭＡＸによって検出されるリファレンスカラム１０ＭＡＸからの出力とが比較される。また、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの出力の合計値と、リファレンス出力検出器１１ＭＡＸによって検出されるリファレンスカラム１０ＭＡＸからの出力とに基づいて、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの温度に依存する抵抗値変化分が算出され、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値が補正される。
そのため、第２実施形態の積和演算器１によれば、ニューラルネットワークに適用される場合に、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値が補正されない場合よりも、温度変化によるニューラルネットワークの性能低下を抑制することができる。
【００９６】
また、第２実施形態の積和演算器１では、上述したように、積和演算器１がバックプロパゲーションモードである場合に、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの出力の合計値と、リファレンス出力検出器１１ＭＩＮによって検出されるリファレンスカラム１０ＭＩＮからの出力とが比較される。また、出力検出器１１Ａによって検出される積演算素子１０ＡＡ〜１０ＡＤからの出力の合計値と、リファレンス出力検出器１１ＭＩＮによって検出されるリファレンスカラム１０ＭＩＮからの出力とに基づいて、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの温度に依存する抵抗値変化分が算出され、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値が補正される。
そのため、第２実施形態の積和演算器１によれば、ニューラルネットワークに適用される場合に、積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値が補正されない場合よりも、温度変化によって所望のバックプロパゲーション学習を実行できないおそれを抑制することができる。
【００９７】
また、第２実施形態の積和演算器１では、上述したように、積和演算器１の動作時における積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値の補正に用いられるリファレンスカラム１０ＭＡＸが備えられている。
そのため、第２実施形態の積和演算器１によれば、リファレンスカラム１０ＭＡＸが備えられていない場合よりも、積和演算器１の動作時における積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの故障の有無の判断を容易に行うことができる。
また、第２実施形態の積和演算器１では、上述したように、積和演算器１のバックプロパゲーション学習時における積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの抵抗値の補正に用いられるリファレンスカラム１０ＭＩＮが備えられている。
そのため、第２実施形態の積和演算器１によれば、リファレンスカラム１０ＭＩＮが備えられていない場合よりも、積和演算器１のバックプロパゲーション学習時における積演算素子１０ＡＡ〜１０ＡＤ、１０ＢＡ〜１０ＢＤの故障の有無の判断を容易に行うことができる。
【００９８】
＜第３実施形態＞
以下、本発明の積和演算器の第３実施形態について説明する。
第３実施形態の積和演算器１は、後述する点を除き、上述した第１実施形態の積和演算器１と同様に構成されている。従って、第３実施形態の積和演算器１によれば、後述する点を除き、上述した第１実施形態の積和演算器１と同様の効果を奏することができる。
【００９９】
図８は第３実施形態の積和演算器１の一部の構成の一例を示す図である。
図１に示す例では、カラム１０Ｂが積演算素子１０ＢＣ、１０ＢＤを備えているが、図８に示す例では、カラム１０Ｂが、積演算素子１０ＢＣ、１０ＢＤを備えておらず、リファレンス素子１０ＢＭＡＸ、１０ＢＭＩＮを備えている。
図８に示す例では、リファレンス素子１０ＢＭＡＸが、リファレンス素子１０ＡＭＡＸと同様に構成されており、積和演算器１の動作時における積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ、１０ＢＢの抵抗値の補正に用いることができる。
リファレンス素子１０ＢＭＩＮは、リファレンス素子１０ＡＭＩＮと同様に構成されており、積和演算器１のバックプロパゲーション学習時における積演算素子１０ＡＡ、１０ＡＢ、１０ＢＡ、１０ＢＢの抵抗値の補正に用いることができる。
【０１００】
図８に示す例では、リファレンス素子１０ＢＭＡＸの読み出し端子は、ラインＬ３１に接続されている。リファレンス素子１０ＢＭＡＸの書き込み端子は、ラインＬ３２に接続されている。
リファレンス素子１０ＢＭＩＮの読み出し端子は、ラインＬ４１に接続されている。リファレンス素子１０ＢＭＩＮの書き込み端子は、ラインＬ４２に接続されている。
リファレンス素子１０ＢＭＡＸ、１０ＢＭＩＮの共通端子は、ラインＭ２に接続されている。
【０１０１】
図８に示す例では、第１入力部１２Ａが積演算素子１０ＢＡに対して信号を入力せず、第２入力部１２Ｂが積演算素子１０ＢＢに対して信号を入力せず、リファレンス入力部１２ＭＡＸがリファレンス素子１０ＢＭＡＸに対して信号を入力し、リファレンス入力部１２ＭＩＮがリファレンス素子１０ＢＭＩＮに対して信号を入力しない場合に、出力検出器１１Ｂは、リファレンス素子１０ＢＭＡＸからの順方向の出力を検出する。
例えば、第１入力部１２Ａが逆方向電流経路をオフし、第２入力部１２Ｂが逆方向電流経路をオフし、リファレンス入力部１２ＭＡＸが逆方向電流経路をオフし、リファレンス入力部１２ＭＩＮが逆方向電流経路をオンする場合に、出力検出器１１Ｂは、リファレンス素子１０ＢＭＩＮを流れる逆方向の出力を検出する。
【０１０２】
なお、以上に示した実施形態に係る各装置（例えば、積和演算器１）の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体（記憶媒体）に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。
なお、ここでいう「コンピュータシステム」とは、オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）あるいは周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また、記録媒体としては、例えば、一時的にデータを記録する記録媒体であってもよい。
【０１０３】
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークあるいは電話回線等の通信回線を介してプログラムが送信された場合のサーバあるいはクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）あるいは電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
コンピュータでは、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などのプロセッサがメモリに記憶されたプログラムを読み出して実行する。
【０１０４】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。上述した各実施形態に記載の構成を組み合わせてもよい。
【産業上の利用可能性】
【０１０５】
本発明によれば、ニューラルネットワークに適用される場合に、温度変化や電流方向からくる素子特性の変動によるニューラルネットワークの性能低下を抑制することができる積和演算器、ニューロモーフィックデバイスおよび積和演算器の使用方法を提供することができる。
【符号の説明】
【０１０６】
１    積和演算器
２    積和演算器
１０    積演算部
１０Ａ    カラム
１０ＡＡ    積演算素
１０ＡＢ    積演算素子
１０ＡＣ    積演算素子
１０ＡＤ    積演算素子
１０ＡＭＡＸ    リファレンス素子
１０ＡＭＩＮ    リファレンス素子
１０Ｂ    カラム
１０ＢＡ    積演算素子
１０ＢＢ    積演算素子
１０ＢＣ    積演算素子
１０ＢＤ    積演算素子
１０ＢＭＡＸ    リファレンス素子
１０ＢＭＩＮ    リファレンス素子
１０ＭＡＸ    リファレンスカラム
１０ＭＡＸＡ    リファレンス素子
１０ＭＡＸＢ    リファレンス素子
１０ＭＡＸＣ    リファレンス素子
１０ＭＡＸＤ    リファレンス素子
１０ＭＩＮ    リファレンスカラム
１０ＭＩＮＡ    リファレンス素子
１０ＭＩＮＢ    リファレンス素子
１０ＭＩＮＣ    リファレンス素子
１０ＭＩＮＤ    リファレンス素子
１１    和演算部
１１Ａ    出力検出器
１１Ｂ    出力検出器
１１ＭＡＸ    リファレンス出力検出器
１１ＭＩＮ    リファレンス出力検出器
１２    入力部
１２Ａ    第１入力部
１２Ｂ    第２入力部
１２Ｃ    第３入力部
１２Ｄ    第４入力部
１２ＭＡＸ    リファレンス入力部
１２ＭＩＮ    リファレンス入力部
１３    故障検知部
１４    比較部
１５    補正部
１００    ニューロモーフィックデバイス
１０１    入力層
１０１Ａ、１０１Ｂ、１０１Ｃ、１０１Ｄ    ノード
１０２    隠れ層
１０２Ａ、１０２Ｂ、１０２Ｃ    ノード
１０３    出力層
１０３Ａ、１０３Ｂ、１０３Ｃ    ノード
Ａ    磁気抵抗効果素子
ＡＡ    書き込み端子
ＡＢ    共通端子
ＡＣ    読み出し端子
Ａ１    磁化自由層
Ａ１１    第１領域
Ａ１２    第２領域
Ａ２    磁化固定層
Ａ３    非磁性層
ＤＷ    磁壁
Ｌ１１    ライン
Ｌ１２    ライン
Ｌ２１    ライン
Ｌ２２    ライン
Ｌ３１    ライン
Ｌ３２    ライン
Ｌ４１    ライン
Ｌ４２    ライン
Ｍ１    ライン
Ｍ２    ライン
Ｍ３    ライン
Ｍ４    ライン
【図１】
2019176540.tif 000003
【図２】
2019176540.tif 000004
【図３】
2019176540.tif 000005
【図４】
2019176540.tif 000006
【図５】
2019176540.tif 000007
【図６】
2019176540.tif 000008
【図７】
2019176540.tif 000009
【図８】
2019176540.tif 000010
【手続補正書】
【提出日】令和2年3月5日(2020.3.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
積演算部と、和演算部とを備え、
前記積演算部は、複数の積演算素子と、少なくとも１つのリファレンス素子とを備え、
前記複数の積演算素子と、前記少なくとも１つのリファレンス素子とのそれぞれは、抵抗変化素子であり、
前記和演算部は、少なくとも前記複数の積演算素子からの出力の合計値を検出する出力検出器を備え、
前記複数の積演算素子のそれぞれは、
磁壁を有する第１の磁化自由層と、
磁化方向が固定された第１の磁化固定層と、
前記第１の磁化自由層と前記第１の磁化固定層とに挟まれた第１の非磁性層とを有する磁気抵抗効果素子であり、
前記少なくとも１つのリファレンス素子は、磁壁を有さない第２の磁化自由層又は磁壁を有する第３の磁化自由層と、磁化方向が固定された第２の磁化固定層と、前記第２の磁化自由層又は前記第３の磁化自由層と前記第２の磁化固定層とに挟まれた第２の非磁性層とを有すると共に、前記第２の磁化自由層の一つの磁化方向又は前記第３の磁化自由層の複数の磁化方向のそれぞれと前記第２の磁化固定層の磁化方向とがなす相対角度が固定されたリファレンス磁気抵抗効果素子である積和演算器。
【請求項２】
前記少なくとも１つのリファレンス素子には、前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが反平行である第１リファレンス素子、前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが平行である前記第２の磁化固定層を有する第２リファレンス素子、前記第３の磁化自由層を有し、最大抵抗値に設定した第３のリファレンス素子、及び、第３の磁化自由層を有し、最小抵抗値に設定した第４のリファレンス素子のうちのいずれか一つのリファレンス素子が含まれる、請求項１に記載の積和演算器。
【請求項３】
前記少なくとも１つのリファレンス素子には、
前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが反平行である第１リファレンス素子又は前記第３の磁化自由層を有し、最大抵抗値に設定した第３のリファレンス素子と、
前記第２の磁化自由層の前記一つの磁化方向と前記第２の磁化固定層の磁化方向とが平行である前記第２の磁化固定層を有する第２リファレンス素子又は前記第３の磁化自由層を有し、最小抵抗値に設定した第４のリファレンス素子とが含まれる、請求項１に記載の積和演算器。
【請求項４】
前記複数の積演算素子からの出力と、前記少なくとも１つのリファレンス素子からの出力とを比較する比較部をさらに備える請求項２または請求項３に記載の積和演算器。
【請求項５】
少なくとも１つのリファレンスカラムをさらに備え、
前記少なくとも１つのリファレンスカラムには、前記複数の積演算素子が含まれず、前記少なくとも１つのリファレンス素子が含まれる請求項１から請求項４のいずれか一項に記載の積和演算器。
【請求項６】
少なくとも１つのリファレンス出力検出器をさらに備え、
前記少なくとも１つのリファレンス出力検出器のそれぞれは、前記少なくとも１つのリファレンスカラムのそれぞれからの出力を検出する請求項５に記載の積和演算器。
【請求項７】
請求項６に記載の積和演算器の使用方法であって、
前記積和演算器は、故障検知部をさらに備え、
前記故障検知部が、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力に基づいて、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値の正常範囲を設定する正常範囲設定工程と、
前記故障検知部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と前記正常範囲とに基づいて、前記複数の積演算素子の故障の有無を判断する故障有無判断工程とを含む積和演算器の使用方法。
【請求項８】
前記積和演算器は、比較部をさらに備え、
前記比較部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力とを比較する比較工程をさらに含む請求項７に記載の積和演算器の使用方法。
【請求項９】
前記積和演算器は、補正部をさらに備え、
前記補正部が、前記出力検出器によって検出される前記複数の積演算素子からの出力の合計値と、前記少なくとも１つのリファレンス出力検出器によって検出される前記少なくとも１つのリファレンスカラムのそれぞれからの出力とに基づいて、前記複数の積演算素子の温度に依存する抵抗値変化分を算出し、前記複数の積演算素子の抵抗値を補正する補正工程をさらに含む請求項８に記載の積和演算器の使用方法。
【請求項１０】
前記少なくとも１つのリファレンスカラムには、動作用リファレンスカラムと、バックプロパゲーション用リファレンスカラムとが含まれる請求項５または請求項６に記載の積和演算器。
【請求項１１】
請求項１から請求項６、および、請求項１０のいずれか一項に記載の積和演算器を備えるニューロモーフィックデバイス。
【国際調査報告】
2019176540.tif 000011
2019176540.tif 000012