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