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