(57)【特許請求の範囲】
【請求項１】
被乗数と乗数とを入力することにより、これらの積演算の結果を出力する積演算装置であって、
電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子を有する抵抗変化型可変抵抗素子を備えており、
該抵抗変化型可変抵抗素子の前記２つの端子の一方の端子に被乗数に対応する第１入力信号を入力し、他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力することにより、前記被乗数と前記乗数との積演算の結果に対応する出力値が出力されるように構成されていることを特徴とする積演算装置。
【請求項２】
前記第１入力信号及び前記第２入力信号は、電圧パルスであり、
前記第１入力信号の電圧パルス幅と、前記第２入力信号のパルス周波数とにより前記出力値を制御するように構成されていることを特徴とする請求項１に記載の積演算装置。
【請求項３】
前記第１入力信号及び前記第２入力信号は、電圧パルスであり、
前記第１入力信号の電圧パルス幅と、前記第２入力信号のパルス電圧とにより前記出力値を制御するように構成されていることを特徴とする請求項１に記載の積演算装置。
【請求項４】
前記抵抗変化型可変抵抗素子は、前記第１入力信号及び前記第２入力信号の入力による前記積演算の結果を、該抵抗変化型可変抵抗素子の電気抵抗の変化によって記憶することを特徴とする請求項１から３までのいずれか１項に記載の積演算装置。
【請求項５】
前記電気抵抗の変化によって記憶された前記積演算の結果は、前記抵抗変化型可変抵抗素子に所定の電圧パルスを印加することにより、消去可能となっていることを特徴とする請求項４に記載の積演算装置。
【請求項６】
請求項１から５までのいずれか１項に記載の積演算装置を少なくとも１つ備えており、
複数セットの前記第１信号及び前記第２信号の入力により、該積演算装置から出力される前記セット毎の前記出力値の累積値に対応する第２出力値が出力されるように構成されていることを特徴とする積和演算装置。
【請求項７】
前記抵抗変化型可変抵抗素子は、複数セットの前記第１入力信号及び前記第２入力信号の入力による前記セット毎の前記積演算の累積結果を、該抵抗変化型可変抵抗素子の電気抵抗の変化によって記憶することを特徴とする請求項６に記載の積和演算装置。
【請求項８】
前記電気抵抗の変化によって記憶された前記積演算の累積結果は、前記抵抗変化型可変抵抗素子に所定の電圧パルスを印加することにより、消去可能となっていることを特徴とする請求項７に記載の積和演算装置。
【請求項９】
請求項１から５までのいずれか１項に記載の積演算装置を複数備えており、
該複数の積演算装置のそれぞれから出力される出力値の累積値に対応する第２出力値が出力されるように構成されていることを特徴とする積和演算装置。
【請求項１０】
前記複数の積演算装置のうちの、所定数の積演算装置のそれぞれから出力される出力値の累積値に対応する第３出力値が出力されるように構成されていることを特徴とする請求項９に記載の積和演算装置。
【請求項１１】
前記複数の積演算装置のうち、所定数の積演算装置のそれぞれから出力される出力値の累積値を記憶する記憶部を備えていることを特徴とする請求項１０に記載の積和演算装置。
【請求項１２】
複数段のニューロン素子を有しており、特定段における所定数のニューロン素子の出力値に対してシナプス荷重値で重み付けした値のそれぞれを、一意対応で、該特定段に隣接する次段のニューロン素子に入力することにより、該ニューロン素子の内部状態を示す内部状態値が決定されるニューラルネットワークであって、
前記各ニューロン素子は、請求項６から１１までのいずれか１項に記載の積和演算装置を備えており、
前記特定段におけるニューロン素子の出力値は、前記被乗数として前記次段のニューロン素子に備えられた積和演算装置へ入力されると共に、
前記シナプス荷重値は、前記乗数として前記次段のニューロン素子に備えられた積和演算装置に入力され、
前記次段のニューロン素子の内部状態を示す内部状態値は、前記積演算の累積結果に対応する出力値として前記次段のニューロン素子に備えられた積和演算装置から出力されるように構成されていることを特徴とするニューラルネットワーク。
【請求項１３】
電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子を有する抵抗変化型可変抵抗素子を備えており、被乗数と乗数とを入力することにより、これらの積演算の結果を出力する積演算装置により実行される積演算方法であって、
前記抵抗変化型可変抵抗素子の前記２つの端子の一方の端子に被乗数に対応する第１入力信号を入力する第１信号入力ステップと、
前記２つの端子の他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力する第２信号入力ステップと、
前記被乗数と前記乗数との積演算の結果に対応する出力値を出力する演算結果出力ステップと実行することを特徴とする積演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的ストレスの印加によって電気抵抗を変化させることで情報を記憶することが可能な抵抗変化型可変抵抗素子を備えた積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法などに関するものである。
【背景技術】
【０００２】
現在、いわゆるノイマン型のコンピュータは、大きな進展を見せ、世の中の様々な場面で使用されている。しかしながら、これらノイマン型と呼ばれるコンピュータは、その処理方法自体の特性により、人が容易に行うことができる処理（リアルタイムでの人の顔の認識等）を非常に不得手としている。
【０００３】
これに対して、脳の情報処理様式を真似た演算処理モデルである、ニューラルネットワークの研究が行われている。
【０００４】
ニューラルネットワークを構成するニューロン素子（以下、「ニューロン」という）のモデルとしては、ニューロンに相当するユニットに対して、他の複数のユニットの出力値をシナプス荷重値で重み付けした乗算値が入力され、その入力値をさらに非線形変換した値を出力値（内部状態値）とするものが一般的である。
【０００５】
すなわち、一般的なニューラルネットワークにおいては、各ユニット、及びユニット間における積和演算と非線形変換とにより、所望の処理が実現される。
【０００６】
このニューロンモデルを用いたニューラルネットワークアーキテクチャ（ニューラルネットワークモデル）としては、これまでに、積和演算を実行するユニットを相互に結合した連想メモリや、同じく積和演算を実行するユニットを階層的に結合したパターン認識モデル等が提案されている。
【０００７】
ここでニューラルネットワークの実用化を狙い、集積回路化を図る際には、前記の積和演算をより効率的に実行することが必要となり、特に演算の実行速度や消費電力の面での必要性が顕著になる。
【０００８】
前記のように積和演算を実行するニューロンモデル、及びニューラルネットワークアーキテクチャに関する発明が、各種提案されており、積和演算を行い階層的なニューロコンピュータを構成する方法も提案されている。（例えば、特許文献１、２を参照）。図１４（ａ）に、ＰＷＭ（Pulse Width Modulation：パルス幅変調）信号を用いた積和演算装置１０００の構成を示す。
【０００９】
パルス幅Ｔｉ（ｉ＝１，２，３，…）を有するそれぞれのＰＷＭ入力信号に対応する電流Ｉｉに関する各スイッチト電流源（ＳＣＳ）の電流源１０１２〜１０３２・・・のそれぞれのスイッチ１０１２〜１０３２・・・をＯＮすると、データ線１００１を介して電流ＩｉがキャパシタＣ１００４に時間Ｔｉだけ流れる。キャパシタＣ１００４に蓄積される電荷量Ｑｏｕｔと端子電圧Ｖｏｕｔとは、それぞれ、
Ｑｏｕｔ＝ΣＩｉＴｉ
Ｖｏｕｔ＝Ｑｏｕｔ／Ｃ＝ΣＩｉＴｉ／Ｃ
と表記される。
【００１０】
こうして、電流源１０１２〜１０３２・・・のそれぞれの電流量で重み付けされたＰＷＭ信号（ＩｉＴｉ）の加算結果がキャパシタ１００４の電荷量Ｑｏｕｔ又は端子電圧Ｖｏｕｔとして得られる。端子電圧Ｖｏｕｔは、図１４（ｂ）に示すように線形に変化する参照ランプ電圧Ｖｒｅｆとコンパレータ１００５で比較することにより、パルス幅Ｔｏｕｔを有するＰＷＭ信号に変換されて出力される。
【００１１】
次に、積和演算回路ユニット３０００を用いた演算処理工程について説明する。図１５は、特許文献１及び２における積和演算方法を実施するための処理ブロックの構成図を示す。
【００１２】
特許文献１及び２における積和演算方法は、複数個の演算ブロック１０００ａ、１０００ｂ、１０００ｃ、・・・を備える演算ユニット３００６と、演算値Ｘｉを保持する入力値（演算値）保持ブロック３００１と、被演算値Ｗｉを保持する荷重値（被演算値）保持ブロック３００４と、演算値Ｘｉのラベルｉに対応する演算ブロックへ演算値Ｘｉ、及び被演算値Ｗｉを入力するためのスイッチングブロック（１）３００３及びスイッチングブロック（２）３００５から構成される。
【００１３】
特許文献１においては、演算値ＸｉがＰＷＭ（Pulse Width Modulation）信号として入力される場合を想定している。なお、演算値Ｘｉと被演算値Ｗｉのｉは、それぞれ異なるＸとＷを示す添え字であり、１，２，３・・・の自然数をとる。
【００１４】
図１６は、１つの演算ブロックをアナログ回路で構成したアナログ演算回路２０００を示す。図１６に示すように、特許文献１におけるアナログ演算回路２０００は、アナログ乗算器２００１と、キャパシタ２００２と、出力バッファ２００３とから構成される。
【００１５】
アナログ乗算器２０００は、図１４（ａ）に示した積和演算装置１０００で構成されている。
【００１６】
図１７は、入力値保持ブロック３００１をアナログメモリ回路で構成したものを示す。ここでは、アナログメモリ回路をキャパシタ２００２と出力バッファ２００３とで構成することを想定している。
【００１７】
図１５に示すように、複数の演算値Ｘｉが入力保持ブロック３００１に保持される。入力保持ブロック３００１は、キャパシタ２００２と出力バッファ２００３により構成されており、演算値Ｘｉの値をキャパシタ２００２に蓄積された電圧値として保持している。
【００１８】
続いて、演算値Ｘｉが有するラベルｉがスイッチングブロック（１）３００３に入力され、そのラベルｉに応じてスイッチングブロック（１）３００３がスイッチングを行い、入力保持ブロック３００１から出力された演算値Ｘｉをそのラベルｉに対応する演算ブロックに入力する。
【００１９】
一方、荷重保持ブロック３００４からから出力される複数の被演算値Ｗｉは、それぞれ所定の演算ブロックに入力される。ここで特許文献１においては、被演算値Ｗｉについても、演算値Ｘｉと同様に、演算値Ｘｉが有するラベルｉに応じてスイッチングブロック（２）３００５においてスイッチングが行われ、ラベルｉによって決定される所定の演算ブロックに入力される。以上の処理を実行することにより、所定の演算ブロックに演算値Ｘｉと被演算値Ｗｉが入力される。
【００２０】
続いて、演算値Ｘｉと被演算値Ｗｉとの両者が入力された前記所定の演算ブロックにおいて行われる演算処理について説明する。なお、演算値Ｘｉが入力されない演算ブロックでは演算処理は実行されない。
【００２１】
図１６の演算ブロック（アナログ乗算器２００１内の演算ブロック）において、演算値Ｘｉと被演算値Ｗｉとは、アナログ乗算器２００１によってＸｉ×Ｗｉが演算される。なお、各演算ブロックに入力される演算値及び被演算値の値は、演算毎に同一の場合も異なる場合もある。
【００２２】
つづいて、Ｘｉ×Ｗｉの乗算結果は、電荷量で表現され、キャパシタ２００２に追加蓄積される。ここで、特許文献１ではアナログ乗算器２００１による乗算結果は、電荷量として出力されることを想定している。
【００２３】
以上の処理を繰り返すことにより、複数のＸｉとＷｉとの乗算結果の累積値がキャパシタ２００２に保持され、所定の累算が完了すると出力バッファ２００３を介して累積値が出力される。なお、ここでは、ＸｉはＰＷＭ信号であり、Ｗｉは、ある周期を持つパルス列、又は電圧パルスになる。
【００２４】
次に、積和演算装置１０００をニューラルネットワークに応用したケースについて説明する。一般に説明されているニューラルネットワークモデルを図１８に示す。また、ニューラルネットワークに対して図１５で説明した積和演算方法を適用する際の演算処理ブロックの構成を図１９に示す。
【００２５】
まず、図１８に示すようにニューラルネットワークにおけるニューロン素子のモデルとしては、ニューロン素子において、前段の複数のニューロン素子の出力値をシナプス荷重で重み付けした値の総和をとり、ニューロン素子の内部状態値を決定するものが一般的である。
【００２６】
特許文献１で説明されたニューロン素子回路（ユニット）は、ニューロン素子のモデルとして、図１６で説明した演算処理ブロックを用いている。すなわち、図１６で説明した演算値Ｘｉが前段ニューロン素子の出力値に相当し、また被演算値Ｗｉがシナプス荷重値に相当し、ニューロン素子の内部状態値を決定する。続いて図２０に示すように、各演算ブロックで算出された累算値は所定の関数処理を行う関数処理ブロック４００１Ａに入力される。関数処理ブロック４００１Ａは、目的に応じて非線形関数処理を行っても良いし、線形関数処理を行っても良い。
【特許文献１】特開２００５−１２２４６５号公報（平成１７年５月１２日公開）
【特許文献２】特開２００５−１２２４６６号公報（平成１７年５月１２日公開）
【非特許文献１】Liu, S. Q. 他、“Electric-pulse-induced reversible Resistance change effect in magnetoresistive films” ,Applied Physics Letter, Vol. 76, pp. 2749-2751, 2000年
【発明の開示】
【発明が解決しようとする課題】
【００２７】
しかしながら、前記の積和演算装置１０００においては以下の問題点がある。図２１に、図１４（ａ）で説明したスイッチト電流源（ＳＣＳ）の回路構成を示す。
【００２８】
従来のスイッチト電流源（ＳＣＳ）は、スイッチ部分にＣＭＯＳ（complementary metal-oxide semiconductor）インバータ回路、及び定電流源にＭＯＳ（metal-oxide semiconductor）トランジスタを使用している。
【００２９】
このため、構成が複雑になり、積和演算装置１０００の部分の占有面積が大きくなってしまうという問題点がある。
【００３０】
なお、定電流源のトランジスタには、アナログとしての性能を高めるため、デザインルールに依存せず、通常、２μｍ程度のチャネル長のものが使用される。結果として、スイッチト電流源（ＳＣＳ）の単位素子のサイズは、数μｍ〜数十μｍ程度の大きさとなってしまう。
【００３１】
また、図１４（ａ）に示すように、積和演算装置１０００に対して同時に複数の演算値・被演算値を入力するためには、前記スイッチト電流源（ＳＣＳ）を複数設ける必要があるため、前記占有面積は、さらに増大してしまう問題点もある。
【００３２】
本発明は、前記従来の問題点に鑑みなされたものであって、その目的は、積演算装置及び積和演算装置における構成を簡素化し、これらの装置を含む回路全体の面積に対する積演算装置及び積和演算装置の占有面積を小さくすることが可能な積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法などを提供することにある。
【課題を解決するための手段】
【００３３】
本発明の積演算装置は、前記課題を解決するために、被乗数と乗数とを入力することにより、これらの積演算の結果を出力する積演算装置であって、電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子を有する抵抗変化型可変抵抗素子を備えており、該抵抗変化型可変抵抗素子の前記２つの端子の一方の端子に被乗数に対応する第１入力信号を入力し、他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力することにより、前記被乗数と前記乗数との積演算の結果に対応する出力値が出力されるように構成されていることを特徴としている。
【００３４】
本発明の積演算方法は、前記課題を解決するために、電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子を有する抵抗変化型可変抵抗素子を備えており、被乗数と乗数とを入力することにより、これらの積演算の結果を出力する積演算装置により実行される積演算方法であって、前記抵抗変化型可変抵抗素子の前記２つの端子の一方の端子に被乗数に対応する第１入力信号を入力する第１信号入力ステップと、前記２つの端子の他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力する第２信号入力ステップと、前記被乗数と前記乗数との積演算の結果に対応する出力値を出力する演算結果出力ステップと実行することを特徴としている。
【００３５】
前記構成によれば、少なくとも２つの端子を有する抵抗変化型可変抵抗素子の一方の端子に被乗数に対応する第１入力信号を入力し、他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力することにより、前記被乗数と前記乗数との積演算の結果に対応する出力値が出力されるようになっている。
【００３６】
また、前記方法によれば、少なくとも２つの端子を有する前記抵抗変化型可変抵抗素子の一方の端子に被乗数に対応する第１入力信号を入力する第１信号入力ステップと、前記２つの端子の他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力する第２信号入力ステップと、前記被乗数と前記乗数との積演算の結果に対応する出力値を出力する演算結果出力ステップとが実行される。
【００３７】
以上の構成又は方法における大きなポイントは、抵抗変化型可変抵抗素子における電圧パルスを印加することによって可逆的に電気抵抗が変化するという物理的特性を利用する点にある。
【００３８】
すなわち、被乗数、乗数、及び積演算の結果と、第１信号、第２信号、及び抵抗変化型可変抵抗素子の出力値（電流値など）との対応関係をあらかじめ決めておけば、積演算を実行することが可能である。
【００３９】
これにより、一方の端子から被乗数に対応する信号を入力し、他方の端子から前記被乗数に乗算される乗数に対応する信号を入力することによって、被乗数と乗数との積演算の結果に対応する出力値を出力する積演算装置を、前記従来技術のように、定電流源とスイッチ回路とを有するスイッチト電流源（ＳＣＳ）で構成する必要がない。
【００４０】
これにより、例えば、デザインルールを０．１μｍとした場合、本発明の積演算装置の基本素子サイズは、０．０４μｍ２となり、上述した従来技術に比べ、２桁〜３桁程度、素子面積が縮小できる。
【００４１】
ここで、「電圧パルス」とは、所定の振幅値（絶対値が最大の電圧値：以下「パルス電圧」又は「パルス電圧値」という）と、所定のパルス幅（以下、「電圧パルス幅」という）とを有するＰＷＭ（Pulse Width Modulation）信号の他、ＮＲＺ（None-Return-to-Zero）及びＲＺ（Return-to-Zero）信号も含まれる。また、「電圧パルス」には、１周期単位の単一電圧パルス、及び所定の周波数（以下、「パルス周波数」という）を有する「電圧パルス列」が含まれる。
【００４２】
また、「抵抗変化型可変抵抗素子」とは、電圧パルスを印可する事によって可逆的に電気抵抗が変化する素子のことである。なお、「抵抗変化型可変抵抗素子」は、近年、フラッシュメモリに代わる高速動作可能な次世代不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Nonvolatile Random Access Memory）として応用が期待されているものである。また、「抵抗変化型可変抵抗素子」としては、例えば、非特許文献１に記載されている様なＲＲＡＭ（Resistance RAM）やＰＣＲＡＭ（Phase Change RAM）などが挙げられる。
【００４３】
前記第１信号の例としては、ＰＷＭ（Pulse Width Modulation）信号があり、前記第２信号の例としては、所定の周期（所定の周波数）を持つ電圧パルス列や、電圧パルスが考えられる。
【００４４】
以上より、積演算装置における構成を簡素化し、これらの装置を含む回路全体の面積に対する積演算装置の占有面積を小さくすることが可能な積演算装置を提供することができる。
【００４５】
本発明の積演算装置は、前記構成に加えて、前記第１入力信号及び前記第２入力信号は、電圧パルスであり、前記第１入力信号の電圧パルス幅と、前記第２入力信号のパルス周波数とにより前記出力値を制御するように構成されていても良い。
【００４６】
「抵抗変化型可変抵抗素子」は、所定時間間隔の電圧パルスの印加回数に応じて素子に流れる電流を制御できる。よって、素子の一方の端子に入力される被乗数に対応する第１入力信号の電圧パルス幅の大きさと、素子の他方の端子に入力される乗数に対応する第２入力信号のパルス周波数との積として得られる素子への電圧パルスの印加回数に応じて素子に流れる電流値が決まる。すなわち、被乗数、乗数、及び積演算の結果と、第１信号の電圧パルス幅、第２信号のパルス周波数、及び抵抗変化型可変抵抗素子への電圧パルスの印加回数（電流値）との対応関係をあらかじめ決めておけば、積演算を実行することが可能である。
【００４７】
本発明の積演算装置は、前記構成に加えて、前記第１入力信号及び前記第２入力信号は、電圧パルスであり、前記第１入力信号の電圧パルス幅と、前記第２入力信号のパルス電圧とにより前記出力値を制御するように構成されていても良い。
【００４８】
「抵抗変化型可変抵抗素子」は、電圧パルス幅（又は所定パルス電圧の印加時間）及びパルス電圧値に応じて素子に流れる電流が制御できる。よって、素子の一方の端子に入力される被乗数に対応する第１入力信号の電圧パルス幅の大きさと、素子の他方の端子に入力される乗数に対応する第２入力信号のパルス電圧との積として得られる素子への電圧パルス幅及びパルス電圧値に応じて素子に流れる電流値が決まる。すなわち、被乗数、乗数、及び積演算の結果と、第１信号の電圧パルス幅、第２信号のパルス電圧、及び抵抗変化型可変抵抗素子への電圧パルス幅及びパルス電圧値（電流値）との対応関係をあらかじめ決めておけば、積演算を実行することが可能である。
【００４９】
本発明の積演算装置は、前記構成に加えて、前記抵抗変化型可変抵抗素子は、前記第１入力信号及び前記第２入力信号の入力による前記積演算の結果を、該抵抗変化型可変抵抗素子の電気抵抗の変化によって記憶するものである。
【００５０】
ここで、前記特許文献１及び２に記載された従来技術の上述した問題点とは、別の問題点について説明する。前記従来技術では、スイッチト電流源（ＳＣＳ）のそれぞれが、情報を記録したり消去したりする機能がないため、個々のスイッチト電流源（ＳＣＳ）の出力値（積演算の結果）のそれぞれを再利用等することができないといった問題点がある。
【００５１】
しかしながら、上述したように、「抵抗変化型可変抵抗素子」は、電圧パルスの印加回数に応じて素子に流れる電流を制御でき、また、電圧パルス幅及びパルス電圧値に応じて素子に流れる電流が制御できる。
【００５２】
言い換えれば、「抵抗変化型可変抵抗素子」は、電圧パルスの印加回数に応じて、或いは、電圧パルス幅及びパルス電圧値に応じて素子の電気抵抗が変化する。
【００５３】
すなわち、「抵抗変化型可変抵抗素子」は、前記第１入力信号及び前記第２入力信号の入力による前記積演算の結果を、該抵抗変化型可変抵抗素子の電気抵抗の変化によって記憶する。これにより、本発明の積演算装置（抵抗変化型可変抵抗素子）自体による前記積演算の結果の記憶が可能となる。
【００５４】
本発明の積演算装置は、前記構成に加えて、前記電気抵抗の変化によって記憶された前記積演算の結果は、前記抵抗変化型可変抵抗素子に所定の電圧パルスを印加することにより、消去可能となっている。
【００５５】
例えば、抵抗変化型可変抵抗素子をバイポーラー動作させた場合は、書き込み時のパルスと時間・電圧が同じで、極性の異なる電圧パルスを再度印加することにより、前記電気抵抗の変化によって記憶された前記積演算の結果を消去することができる。また、抵抗変化型可変抵抗素子をモノポーラ動作させた場合は、極性が同じで時間が長いパルスを再度印加することにより、前記電気抵抗の変化によって記憶された前記積演算の結果を消去することができる。
【００５６】
また、本発明の積和演算装置は、前記積演算装置を少なくとも１つ備えており、複数セットの前記第１信号及び前記第２信号の入力により、該積演算装置から出力される前記セット毎の前記出力値の累積値に対応する第２出力値が出力されるように構成されていても良い。
【００５７】
ここで、従来の積和演算装置では、処理速度の短縮を考慮しなければ、単一のスイッチト電流源（ＳＣＳ）に複数セットの入力を与えて、キャパシタに順次蓄えるという構成を採用する例もある。
【００５８】
しかしながら、スイッチト電流源は、スイッチ回路と定電流源とを備えるものであり、本発明の単体の抵抗変化型可変抵抗素子で構成された積演算装置に比べて、素子サイズはかなり大きい。
【００５９】
したがって、本発明の積和演算装置を、単一の積演算装置に複数セットの入力を与えて、キャパシタに順次蓄える構成とした場合でも、従来の単一のスイッチト電流源を用いる積和演算装置に比べて、これらの装置を含む回路全体の面積に対する積演算装置の占有面積を小さくすることができる。
【００６０】
また、本発明の積和演算装置は、前記構成に加えて、前記抵抗変化型可変抵抗素子は、複数セットの前記第１入力信号及び前記第２入力信号の入力による前記セット毎の前記積演算の累積結果を、該抵抗変化型可変抵抗素子の電気抵抗の変化によって記憶するものである。
【００６１】
上述したように、「抵抗変化型可変抵抗素子」は、電圧パルスの印加回数に応じて素子に流れる電流を制御でき、また、電圧パルス幅及びパルス電圧値に応じて素子に流れる電流を制御できる。
【００６２】
言い換えれば、「抵抗変化型可変抵抗素子」は、電圧パルスの印加回数に応じて、或いは、電圧パルス幅及びパルス電圧値に応じて素子の電気抵抗が変化する。
【００６３】
すなわち、「抵抗変化型可変抵抗素子」は、前記抵抗変化型可変抵抗素子は、複数セットの前記第１入力信号及び前記第２入力信号の入力による前記セット毎の前記積演算の累積結果を、該抵抗変化型可変抵抗素子の電気抵抗の変化によって記憶する。これにより、本発明の積和演算装置（抵抗変化型可変抵抗素子）自体による前記積演算の累積結果の記憶が可能となる。
【００６４】
また、本発明の積和演算装置は、前記構成に加えて、前記電気抵抗の変化によって記憶された前記積演算の累積結果は、前記抵抗変化型可変抵抗素子に所定の電圧パルスを印加することにより、消去可能となっている。
【００６５】
例えば、抵抗変化型可変抵抗素子をバイポーラ動作させた場合は、書き込み時のパルスと時間・電圧が同じで、極性の異なる電圧パルスを再度印加することにより、前記電気抵抗の変化によって記憶された前記積演算の結果を消去することができる。また、抵抗変化型可変抵抗素子をモノポーラ動作させた場合は、極性が同じで時間が長いパルスを再度印加することにより、前記電気抵抗の変化によって記憶された前記積演算の結果を消去することができる。
【００６６】
また、本発明の積和演算装置は、前記構成に加えて、前記積演算装置を複数備えており、該複数の積演算装置のそれぞれから出力される出力値の累積値に対応する第２出力値が出力されるように構成されていても良い。
【００６７】
以上によれば、複数の積演算装置への書き込み、読み出しが同時に処理できるため、単体の抵抗変化型可変抵抗素子で積和演算装置を構成した場合に比較して、前記積演算の累積結果の書き込み読み出しの処理速度が速くなる。
【００６８】
また、本発明の積和演算装置は、前記構成に加えて、前記複数の積演算装置のうちの、所定数の積演算装置のそれぞれから出力される出力値の累積値に対応する第３出力値が出力されるように構成されていても良い。
【００６９】
前記構成によれば、所定数の積演算装置のそれぞれから出力される出力値の累積値に対応する第３出力値（部分和）が出力される、すなわち、部分的な積和演算（部分和の算出）が可能となる。
【００７０】
また、本発明の積和演算装置は、前記構成に加えて、前記複数の積演算装置のうち、所定数の積演算装置のそれぞれから出力される出力値の累積値を記憶する記憶部を備えていることが好ましい。
【００７１】
以上によれば、適宜記憶部を設けることにより、複数の積演算装置を、複数のブロック部分に分割して、当該ブロック部分毎に、前記複数の積演算装置のうち、所定数の積演算装置のそれぞれから出力される出力値の累積値を記憶させることができる。また、記憶部に記録されていれば、前記積演算の累積結果を直ぐに引き出すことができるので、当該ブロック部分毎に記憶部に記憶されている部分和の算出処理が速くなる。
【００７２】
また、本発明のニューラルネットワークは、前記構成に加えて、複数段のニューロン素子を有しており、特定段における所定数のニューロン素子の出力値に対してシナプス荷重値で重み付けした値のそれぞれを、一意対応で、該特定段に隣接する次段のニューロン素子に入力することにより、該ニューロン素子の内部状態を示す内部状態値が決定されるニューラルネットワークであって、前記各ニューロン素子は、請求項６から１１までのいずれか１項に記載の積和演算装置を備えており、前記特定段におけるニューロン素子の出力値は、前記被乗数として前記次段のニューロン素子に備えられた積和演算装置へ入力されると共に、前記シナプス荷重値は、前記乗数として前記次段のニューロン素子に備えられた積和演算装置に入力され、前記次段のニューロン素子の内部状態を示す内部状態値は、前記積演算の累積結果に対応する出力値として前記次段のニューロン素子に備えられた積和演算装置から出力されるように構成されていることが好ましい。
【００７３】
前記構成によれば、前記各ニューロン素子は、前記積和演算装置を備えており、これらのニューロン素子の出力値、シナプス荷重値及び内部状態値のそれぞれを、前記積和演算装置に入・出力される、被乗数、乗数、及び被乗数及び乗数の積演算の累積結果で、ニューラルネットワークが構成されるため、従来のニューラルネットワークにおいて各ニューロン素子毎の内部状態値を算出する演算処理ブロックのそれぞれの縮小が可能になる。
【００７４】
なお、「一意対応」とは、「１対１対応」及び「他対１対応」を含む概念である。
【００７５】
より具体的には、「１対１対応」とは、特定段における１つのニューロン素子の出力値に対してシナプス荷重値で重み付けした値を、該特定段に隣接する次段の１つのニューロン素子に入力する場合の対応関係のことである。
【００７６】
また、「他対１対応」とは、特定段における複数のニューロン素子のそれぞれの出力値に対してシナプス荷重値で重み付けした値の総和を、該特定段に隣接する次段の１つのニューロン素子に入力する場合の対応関係のことである。
【００７７】
以上説明した様に、本発明によれば、回路が簡素化された素子サイズの小さい積演算装置及び積和演算装置が実現できる。また、抵抗変化型可変抵抗素子に書き込んだ入力信号の積又は積和演算の結果を記憶することができ、必要に応じて、全体和又は部分和を出力することが可能になる。
【００７８】
よって、積演算装置及び積和演算装置における構成を簡素化し、これらの装置を含む回路全体の面積に対する積演算装置及び積和演算装置の占有面積を小さくすることが可能な積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法などを提供することができる。
【発明の効果】
【００７９】
本発明の積演算装置は、以上のように、被乗数と乗数とを入力することにより、これらの積演算の結果を出力する積演算装置であって、電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子を有する抵抗変化型可変抵抗素子を備えており、該抵抗変化型可変抵抗素子の前記２つの端子の一方の端子に被乗数に対応する第１入力信号を入力し、他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力することにより、前記被乗数と前記乗数との積演算の結果に対応する出力値が出力されるように構成されているものである。
【００８０】
また、本発明の積演算方法は、以上のように、電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子を有する抵抗変化型可変抵抗素子を備えており、被乗数と乗数とを入力することにより、これらの積演算の結果を出力する積演算装置により実行される積演算方法であって、前記抵抗変化型可変抵抗素子の前記２つの端子の一方の端子に被乗数に対応する第１入力信号を入力する第１信号入力ステップと、前記２つの端子の他方の端子に前記被乗数に乗算される乗数に対応する第２入力信号を入力する第２信号入力ステップと、前記被乗数と前記乗数との積演算の結果に対応する出力値を出力する演算結果出力ステップと実行する方法である。
【００８１】
それゆえ、積演算装置における構成を簡素化し、これらの装置を含む回路全体の面積に対する積演算装置の占有面積を小さくすることが可能な積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法などを提供するという効果を奏する。
【発明を実施するための最良の形態】
【００８２】
本発明の一実施形態について図１〜図１３に基づいて説明すれば、以下の通りである。
【００８３】
〔実施の形態１〕
まず、図１に基づき、本発明の一実施形態である積和演算装置（積演算装置）１０の構成について説明する。
【００８４】
図１は、本発明の一実施形態である抵抗変化型可変抵抗素子（積演算装置）１をユニットセルとする単一セルにより構成された積和演算装置１０の書き込みの際の構成を示す回路図である。
【００８５】
本実施形態の積和演算装置１０は、被乗数と乗数とを入力することにより、これらの積演算の結果を出力するものであり、図１に示すように、抵抗変化型可変抵抗素子１，データ線２，ビット線３，スイッチングトランジスタ４，コンデンサ（記憶部）５，及びオペアンプ６を備える構成である。
【００８６】
抵抗変化型可変抵抗素子１は、電圧パルスを印加することによって可逆的に電気抵抗が変化し、少なくとも２つの端子（一方の端子）Ａ・端子（他方の端子）Ｂを有するものである。
【００８７】
また、抵抗変化型可変抵抗素子１の端子Ａに被乗数に対応する第１入力信号を入力し、端子Ｂに前記被乗数に乗算される乗数に対応する第２入力信号を入力することにより、前記被乗数と前記乗数との積演算の結果に対応する出力値（電流値）が出力されるように構成されている。
【００８８】
データ線２には、パルス周波数Ｆｉで定義される電圧パルス列（第２入力信号）が印可される。
【００８９】
ビット線３には、パルス幅（電圧パルス幅）Ｔｉで定義される単一電圧パルス（第１入力信号）が印加される。
【００９０】
ここで、「電圧パルス」とは、所定の振幅値（絶対値が最大の電圧値：以下「パルス電圧」又は「パルス電圧値」という）と、所定のパルス幅（以下、「電圧パルス幅又は所定パルス電圧の印加時間」という）とを有するＰＷＭ（Pulse Width Modulation）信号の他、ＮＲＺ（None-Return-to-Zero）及びＲＺ（Return-to-Zero）信号も含まれる。また、「電圧パルス」には、１周期単位の単一電圧パルス、及び所定の周波数（以下、「パルス周波数」という）を有する「電圧パルス列」が含まれる。
【００９１】
スイッチングトランジスタ４は、抵抗変化型可変抵抗素子１と、コンデンサ５及びオペアンプ６との間を導通状態又は非導通状態とするためのスイッチの役割を果たす。なお、図１では、非導通状態であるため「ＯＦＦ」と記載されている。
【００９２】
コンデンサ５は、スイッチングトランジスタ４との間で導通状態にある場合、以下で説明するように、データ線２及びビット線３から抵抗変化型可変抵抗素子１に書き込まれた情報を電荷量として記憶するものである。
【００９３】
オペアンプ６は、負極性入力端子（−）と、出力端子との間にコンデンサ５を設けることで、フィードバックをかけ、積分回路を構成するものである。なお、この場合、Ｖｒｅｆには、一定のバイアス電圧が印加される。
【００９４】
これにより、オペアンプ６のフィードバック機能により、負極性入力端子（−）への入力が仮想接地になるので、コンデンサ５に電荷が溜まることによる電位変動が抑制されるという効果が得られる。
【００９５】
ここで、図４の基づき、抵抗変化型可変抵抗素子１の電圧パルスを印加することによって可逆的に電気抵抗が変化する物理的特性について説明する。
【００９６】
図４は、抵抗変化型可変抵抗素子１の構造及び測定時の等価回路を示す。例えば、ＲＲＡＭ（Resistance RAM：抵抗変化型可変抵抗素子）は、図４に示すように、上部電極（一方の端子，他方の端子）１１Ａ，下部電極（一方の端子，他方の端子）１１Ｂ，及び抵抗体１２を備えるものである。
【００９７】
抵抗体１２は、金属酸化物が材料となっており、上部電極１１Ａ及び下部電極１１Ｂに挟まれた構造をしている。
【００９８】
ＲＲＡＭに、パルス電圧を印可することにより、電気抵抗が変化し、電源をオフにしてもその抵抗値が保持され、不揮発性メモリとして働く。通常、高抵抗状態から低抵抗状態に遷移する動作を「ＳＥＴ（セット）動作」、低抵抗状態から高抵抗状態に遷移する動作を「ＲＥＳＥＴ（リセット）動作」と定義している。
【００９９】
ＳＥＴ動作及びＲＥＳＥＴ動作ともに同極性の電圧パルスを印可する方式を「ユニポーラースイッチング方式（モノポーラ動作）」、逆極性のパルスを印可する方式を「バイポーラースイッチング方式（バイポーラ動作）」と呼ぶ。
【０１００】
図５（ａ）に、抵抗変化型可変抵抗素子１（ＰＲＡＭ）にパルス電圧（振幅値２．６Ｖ）を３５ｎｓｅｃ間隔で印加した回数（ＳＥＴパルス回数）と、その時の抵抗変化型可変抵抗素子１に流れる電流との関係を示す。
【０１０１】
図５（ａ）に示すように、ＳＥＴパルス回数に応じて抵抗変化型可変抵抗素子１に流れる電流が制御可能となっていることがわかる。
【０１０２】
すなわち、積和演算装置１０は、第１入力信号及び第２入力信号は、それぞれ、単一電圧パルス及び電圧パルス列であり、単一電圧パルスの電圧パルス幅と、電圧パルス列のパルス周波数とにより、演算結果としてのＳＥＴパルス回数（出力値）を制御するように構成することができる。
【０１０３】
抵抗変化型可変抵抗素子１は、ＳＥＴパルス回数に応じて素子に流れる電流を制御できる。よって、素子の端子Ａに入力される被乗数に対応する単一電圧パルスの電圧パルス幅の大きさと、素子の端子Ｂに入力される乗数に対応する電圧パルス列のパルス周波数との積として得られる素子へのＳＥＴパルス回数に応じて素子に流れる電流値が決まる。すなわち、被乗数、乗数、及び積演算の結果と、単一電圧パルスの電圧パルス幅、電圧パルス列のパルス周波数、及び抵抗変化型可変抵抗素子へのＳＥＴパルス回数（電流値）との対応関係をあらかじめ決めておけば、積演算を実行することが可能である。
【０１０４】
次に、図５（ｂ）に、抵抗変化型可変抵抗素子１（ＰＲＡＭ）へ印加したパルス電圧の電圧パルス幅（振幅値２．６Ｖのパルス電圧を印加した時間：単位はｎｓ）と、その時の抵抗変化型可変抵抗素子１に流れる電流との関係を示す。
【０１０５】
すなわち、第１入力信号及び第２入力信号は、それぞれ、単一パルスであり、第１入力信号の単一電圧パルスの電圧パルス幅と、第２入力信号の単一電圧パルスのパルス電圧値との積として得られる素子への、パルス電圧値及び電圧パルス幅を制御するように構成することもできる。
【０１０６】
抵抗変化型可変抵抗素子１は、電圧パルス幅及びパルス電圧値に応じて素子に流れる電流が制御できる。よって、端子Ｂに入力される被乗数に対応する電圧パルス幅の大きさ（電圧パルスの印加時間に対応）と、端子Ａに入力される乗数に対応するパルス電圧値との積として得られる素子への電圧パルス幅及びパルス電圧値に応じて素子に流れる電流値が決まる。すなわち、被乗数、乗数、及び積演算の結果と、電圧パルス幅、パルス電圧、及び抵抗変化型可変抵抗素子１への電圧パルス幅及びパルス電圧値（電流値）との対応関係をあらかじめ決めておけば、積演算を実行することが可能である。
【０１０７】
さらに、図５（ｃ）に、抵抗変化型可変抵抗素子１に所定のパルス電圧を印加した場合のパルス電圧値と、その時の抵抗変化型可変抵抗素子１に流れる電流との関係を示す。
【０１０８】
図５（ｃ）に示すように、０．５Ｖ程度までは、変化が無いが、それ以上の電圧で、パルス電圧値に応じて抵抗変化型可変抵抗素子１に流れる電流が制御可能となっていることがわかる。
【０１０９】
次に、図１〜図３（ｂ）に基づき、単体の抵抗変化型可変抵抗素子１にて積和演算装置１０を構成した場合の動作について説明する。
【０１１０】
図１には、積和演算装置１０の書き込み動作を示しているが、書き込み時は、抵抗変化型可変抵抗素子１と演算結果を蓄積するコンデンサ５の間は、導通されていない状態になっている。
【０１１１】
このような状態において、まず、抵抗変化型可変抵抗素子１に接続されたビット線３とデータ線２に電圧パルスを印加する。
【０１１２】
図２（ａ）は、抵抗変化型可変抵抗素子１の端子Ａ（ビット線）に入力される電圧パルス（パルス幅Ｔｉ）の様子を示す波形図であり、図２（ｂ）は、端子Ｂ（データ線）に入力される電圧パルス（パルス周波数Ｆｉ）の様子を示す波形図であり、図２（ｃ）は、端子Ａ・Ｂ間の電位差と閾値電位Ｖｔｈとの関係を示す波形図である。
【０１１３】
この時、ビット線３には、図２（ａ）に示すパルス幅＝Ｔｉで定義される単一電圧パルスを印加する。一方、データ線２には、図２（ｂ）に示すパルス周波数＝Ｆｉで定義される電圧パルス列を印可する。
【０１１４】
図１には、可変抵抗素子間に印加される単一電圧パルス及び電圧パルス列が記載されているが、図２（ｃ）に示すように、閾値電位Ｖｔｈで表される閾値以上の電圧値が加わった場合に、抵抗変化型可変抵抗素子１には、コンダクタンスσｉｉ∝Ｆｉ・Ｔｉで示される情報が書き込まれることになる（コンダクタンスσｉｉは抵抗変化型可変抵抗素子１の抵抗値Ｒｉｉの逆数である。）。なお、抵抗変化型可変抵抗素子１には、電源を切っても、書き込まれた情報としてのコンダクタンスσｉｉを保持（被乗数と乗数との積演算の結果を保持）する機能があるため、書き込まれた情報が消失することは無い。
【０１１５】
すなわち、抵抗変化型可変抵抗素子１は、単一電圧パルス及び電圧パルス列の入力による積演算の結果を、抵抗変化型可変抵抗素子１の電気抵抗（コンダクタンスσｉｉに対応）の変化によって記憶するものである。
【０１１６】
ここで、特許文献１及び２に記載された従来技術の上述した問題点とは、別の問題点について説明する。従来技術では、スイッチト電流源（ＳＣＳ）のそれぞれが、情報を記録したり消去したりする機能がないため、個々のスイッチト電流源（ＳＣＳ）の出力値（積演算の結果）のそれぞれを再利用等することができないといった問題点がある。
【０１１７】
しかしながら、上述したように、抵抗変化型可変抵抗素子１は、電圧パルスの印加回数（ＳＥＴパルス回数）に応じて素子に流れる電流を制御でき、また、電圧パルス幅及びパルス電圧値に応じて素子に流れる電流が制御できる。
【０１１８】
言い換えれば、抵抗変化型可変抵抗素子１は、電圧パルスの印加回数に応じて、或いは、電圧パルス幅及びパルス電圧値に応じて素子の電気抵抗が変化する。
【０１１９】
すなわち、抵抗変化型可変抵抗素子１は、単一電圧パルス及び電圧パルス列（又は、パルス電圧）の入力による積演算の結果を、抵抗変化型可変抵抗素子１の電気抵抗の変化によって記憶する。これにより、抵抗変化型可変抵抗素子１自体による積演算の結果の記憶が可能となる。
【０１２０】
次に、図３（ａ）及び図３（ｂ）に示すように、積和演算装置１０の読み出し動作について説明する。読み出し時は、抵抗変化型可変抵抗素子１と積演算の結果を電荷量として蓄積するコンデンサ５の間は、導通された状態になっている。
【０１２１】
図３（ａ）は、抵抗変化型可変抵抗素子１をユニットセルとする単一セルにより構成された積和演算装置１０の読み出しの際の構成を示す回路図であり、図３（ｂ）は、積和演算装置１０の動作を示すシーケンス図である。
【０１２２】
データ線２を０Ｖに固定し、ビット線３にパルス電圧値＝Ｖｏ，電圧パルス幅＝Ｔｏで定義される電圧パルスを印加する事により、抵抗変化型可変抵抗素子１には、σｉｉ・Ｖｏ∝Ｆｉ・Ｔｉ・Ｖｏで示される電流が流れ、コンデンサ５には、電荷量Ｑ＝σｉｉ・Ｖｏ・Ｔｏ∝Ｆｉ・Ｔｉ・Ｖｏ・Ｔｏで定義される電荷量が蓄積されることになる。
【０１２３】
以上で説明した書き込みと読み出しを交互に繰り返す事により、電荷量Ｑ＝（Σσｉｉ）・Ｖｏ・Ｔｏ∝（ΣＦｉ・Ｔｉ）・Ｖｏ・Ｔｏで定義される積和演算結果がキャパシタ内に蓄積されたことになる。
【０１２４】
【数１】
0005160304.tif 000002
【０１２５】
また、図３（ａ）及び図３（ｂ）に示すように、（書き込み→読み出し）処理後には、リセット動作を行い、初期化する必要がある。
【０１２６】
すなわち、積和演算装置１０は、電気抵抗の変化によって記憶された積演算の結果は、抵抗変化型可変抵抗素子１に所定の電圧パルスを印加することにより、消去可能となっている。
【０１２７】
例えば、抵抗変化型可変抵抗素子１をバイポーラー動作させた場合は、書き込み時の電圧パルスと時間（パルス幅）・電圧（パルス電圧値）が同じで、極性の異なる電圧パルスを再度印加することにより、電気抵抗の変化によって記憶された積演算の結果を消去することができる。また、抵抗変化型可変抵抗素子１をモノポーラ動作させた場合は、極性が同じで時間（パルス幅）が長い電圧パルスを再度印加することにより、電気抵抗の変化によって記憶された積演算の結果を消去することができる。
【０１２８】
本実施形態において、抵抗変化型可変抵抗素子１のサイズは、４Ｆ２（Ｆ：デザインルール）で示されるサイズである。例えば、デザインルールを０．１μｍとした場合、積和演算装置１０の基本素子サイズは、０．０４μｍ２となり、図１４（ａ）で示した従来技術に比べ、２桁〜３桁程度、素子面積が縮小できる。なお、従来技術においてはスイッチト電流源が複数個あり、それにより積和演算装置を形成したが、本実施形態においては、単体の抵抗変化型可変抵抗素子１で素子構成が可能になり、更に素子サイズを縮小することができる。
【０１２９】
以上、説明したように、抵抗変化型可変抵抗素子１を備えた積和演算装置１０によれば、抵抗変化型可変抵抗素子１の端子Ａに被乗数に対応する第１入力信号（ここでは、パルス幅Ｔｉの単一電圧パルス信号）を入力し、端子Ｂに前記被乗数に乗算される乗数に対応する第２入力信号（ここでは、パルス周波数Ｆｉの電圧パルス列）を入力することにより、前記被乗数と前記乗数との積演算の結果に対応する出力値が出力されるようになっている。
【０１３０】
以上の構成における大きなポイントは、抵抗変化型可変抵抗素子１における、電圧パルスを印加することによって可逆的に電気抵抗（又はコンダクタンスσｉｉ）が変化するという物理的特性を利用する点にある。
【０１３１】
すなわち、被乗数、乗数、及び積演算の結果と、電圧パルス幅、パルス周波数、及び抵抗変化型可変抵抗素子１の出力値（電流値など）との対応関係をあらかじめ決めておけば、積演算を実行することが可能である。
【０１３２】
これにより、一方の端子から被乗数に対応する信号を入力し、他方の端子から前記被乗数に乗算される乗数に対応する信号を入力することによって、被乗数と乗数との積演算の結果に対応する出力値を出力する積演算装置を、前記従来技術のように、定電流源とスイッチ回路とを有するスイッチト電流源（ＳＣＳ）で構成する必要がない。
【０１３３】
ここで、抵抗変化型可変抵抗素子１は、電圧パルスを印可することによって可逆的に電気抵抗が変化する素子のことである。なお、抵抗変化型可変抵抗素子１は、近年、フラッシュメモリに代わる高速動作可能な次世代不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Nonvolatile Random Access Memory）として応用が期待されているものである。また、抵抗変化型可変抵抗素子１としては、例えば、非特許文献１に記載されている様なＲＲＡＭ（Resistance RAM）やＰＣＲＡＭ（Phase Change RAM）などが挙げられる。
【０１３４】
また、第１信号の例としては、ＰＷＭ（Pulse Width Modulation）信号があり、第２信号の例としては、所定の周期を持つパルス列や、電圧パルスが考えられる。
【０１３５】
以上より、積和演算装置１０における構成を簡素化し、これらの装置を含む回路全体の面積に対する積和演算装置１０の占有面積を小さくすることが可能な積和演算装置１０を提供することができる。
【０１３６】
〔実施の形態２〕
本発明の他の実施の形態について図６（ａ）及び図６（ｂ）に基づいて説明すれば、以下の通りである。なお、本実施の形態において説明すること以外の構成は、前記実施の形態１と同じである。また、説明の便宜上、前記の実施の形態１の図面に示した部材と同一の機能を有する部材については、同一の符号を付し、その説明を省略する。
【０１３７】
図６（ａ）は、単一セルにより構成された積和演算装置１０の構成と書き込み動作とを示す回路図であり、（ｂ）は、読み出し動作を示す回路図である。なお、本実施の形態２では、積和演算装置の構成は、実施の形態１と構成は共通しているが、図１，図２（ａ）〜図２（ｃ）及び図３（ａ）・図３（ｂ）とは、別の動作方法である。
【０１３８】
すなわち、本実施形態では、積和演算装置１０を少なくとも１つ備えており、複数セットの単一電圧パルス及び電圧パルス列の入力により、積和演算装置１０から出力される前記セット毎の前記出力値の累積値に対応する出力値（第２出力値）が出力されるように構成されていても良い。
【０１３９】
ここで、従来の積和演算装置では、処理速度の短縮を考慮しなければ、単一のスイッチト電流源に複数セットの入力を与えて、キャパシタに順次蓄えるという構成を採用する例もある。
【０１４０】
しかしながら、スイッチト電流源は、スイッチ回路と定電流源とを備えるものであり、本実施形態の単体の抵抗変化型可変抵抗素子１で構成された積演算装置に比べて、素子サイズはかなり大きい。
【０１４１】
したがって、抵抗変化型可変抵抗素子１の単一セルで構成された積和演算装置１０に複数セットの入力を与えて、コンデンサ５に順次蓄える構成とした場合でも、従来の単一のスイッチト電流源を用いる積和演算装置に比べて、これらの装置を含む回路全体の面積に対する積演算装置の占有面積を小さくすることができる。
【０１４２】
本実施形態では、結局構成自体は、実施の形態１と同一の構成を考慮すれば良いので、以下では、実施の形態２における積和演算装置１０の動作について説明する。
【０１４３】
ここでは、実施の形態１の動作シーケンスを変更し、更に処理ステップを削減した場合について説明する。
【０１４４】
図６（ａ）に示す書き込み動作であるが、まず、ビット線３にパルス幅Ｔ１で定義される単一電圧パルスを印加し、データ線２には、パルス周波数＝Ｆ１で定義される電圧パルス列を印加する。
【０１４５】
この場合、コンダクタンスσ１１∝Ｆ１・Ｔ１で示される情報が抵抗変化型可変抵抗素子１に書き込まれたことになる。
【０１４６】
次に、ビット線３にパルス幅Ｔ２で定義される単一電圧パルスを印加し、データ線２には、パルス周波数＝Ｆ２で定義される電圧パルス列を印加する。
【０１４７】
この場合、コンダクタンス（σ１１＋σ２２）∝（Ｆ１・Ｔ１＋Ｆ２・Ｔ２）で示される情報が抵抗変化型可変抵抗素子１に書き込まれたことになる。
【０１４８】
同様な書き込み処理を繰り返す事により、最終的に抵抗変化型可変抵抗素子１には、Σσｉｉ＝Σ（Ｆｉ・Ｔｉ）で示される情報が書き込まれたことになる。
【０１４９】
すなわち、本実施形態の積和演算装置１０は、抵抗変化型可変抵抗素子１は、複数セットの単一電圧パルス及び電圧パルス列の入力による前記セット毎の積演算の累積結果を、抵抗変化型可変抵抗素子１の電気抵抗の変化によって記憶するものである。
【０１５０】
上述したように、抵抗変化型可変抵抗素子１は、電圧パルスの印加回数に応じて素子に流れる電流を制御でき、また、電圧パルス幅及びパルス電圧値に応じて素子に流れる電流を制御できる。
【０１５１】
言い換えれば、抵抗変化型可変抵抗素子１は、電圧パルスの印加回数に応じて、或いは、電圧パルス幅及びパルス電圧値に応じて素子の電気抵抗が変化する。
【０１５２】
すなわち、抵抗変化型可変抵抗素子１は、複数セットの単一電圧パルス及び電圧パルス列の入力による前記セット毎の積演算の累積結果を、抵抗変化型可変抵抗素子１の電気抵抗の変化によって記憶する。これにより、本実施形態の積和演算装置１０（抵抗変化型可変抵抗素子１）自体による前記積演算の累積結果の記憶が可能となる。
【０１５３】
次に、読み出し動作であるが、図６（ｂ）に示すように、データ線２を０Ｖに固定し、ビット線３にパルス電圧値＝Ｖｏ、電圧パルス幅＝Ｔｏで定義される電圧パルスを印加する。この場合、抵抗変化型可変抵抗素子１には、（Σσｉｉ）・Ｖｏ＝Σ（Ｆｉ・Ｔｉ）・Ｖｏで示される電流が流れ、コンデンサ５には、電荷量Ｑ＝Σσｉｉ・Ｖｏ・Ｔｏ∝ΣＦｉ・Ｔｉ・Ｖｏ・Ｔｏで定義される積和演算の結果（積演算の累積結果）が蓄積されたことになる。
【０１５４】
なお、新たに積和演算処理を行うには、データ読みだし後に一旦リセット処理を行い、初期化する必要がある。
【０１５５】
すなわち、本実施形態の積和演算装置１０は、前記電気抵抗の変化によって記憶された前記積演算の累積結果は、抵抗変化型可変抵抗素子１に所定の電圧パルスを印加することにより、消去可能となっている。
【０１５６】
例えば、抵抗変化型可変抵抗素子１をバイポーラ動作させた場合は、書き込み時のパルスと時間・電圧が同じで、極性の異なる電圧パルスを再度印加することにより、前記電気抵抗の変化によって記憶された前記積演算の結果を消去することができる。また、抵抗変化型可変抵抗素子１をモノポーラ動作させた場合は、極性が同じで時間が長いパルスを再度印加することにより、前記電気抵抗の変化によって記憶された前記積演算の結果を消去することができる。
【０１５７】
〔実施の形態３〕
本発明のさらに他の実施の形態について図７（ａ）〜図８に基づいて説明すれば、以下の通りである。なお、本実施の形態において説明すること以外の構成は、前記実施の形態１及び２と同じである。また、説明の便宜上、前記の実施の形態１及び２の図面に示した部材と同一の機能を有する部材については、同一の符号を付し、その説明を省略する。なお、以下の〔実施の形態４〕以降は、同様の説明は省略する。
【０１５８】
本実施形態では、実施の形態１及び２で説明した抵抗変化型可変抵抗素子１をユニットセルとして、複数のビット線とデータ線の交点にユニットセルを配置したアレイ構成（マトリクス状配置）の場合の積和演算装置１００について説明する。
【０１５９】
図７（ａ）は、抵抗変化型可変抵抗素子１をユニットセルする複数個のセル（抵抗変化型可変抵抗素子（積演算装置）１１１，抵抗変化型可変抵抗素子（積演算装置）１２１，抵抗変化型可変抵抗素子（積演算装置）２１１，抵抗変化型可変抵抗素子（積演算装置）２２１・・・）により構成された積和演算装置１００の書き込みの際の構成を示す回路図であり、図７（ｂ）は、抵抗変化型可変抵抗素子１（抵抗変化型可変抵抗素子１１１）の端子Ａ（ビット線）に入力される電圧パルス（パルス幅Ｔｊ：ｊは、自然数）の様子を示す波形図であり、（ｃ）は、端子Ｂ（データ線）に入力される電圧パルス（パルス周波数Ｆｉ）の様子を示す波形図であり、（ｄ）は、端子Ａ・Ｂ間の電位差と閾値電位Ｖｔｈとの関係を示す波形図である。
【０１６０】
図８は、抵抗変化型可変抵抗素子１をユニットセルとする複数個のセル（抵抗変化型可変抵抗素子１１１，抵抗変化型可変抵抗素子１２１，抵抗変化型可変抵抗素子２１１，抵抗変化型可変抵抗素子２２１・・・）により構成された積和演算装置の読み出しの際の構成を示す回路図である。
【０１６１】
図７（ａ）〜図８に示すように、本実施形態の積和演算装置１００は、抵抗変化型可変抵抗素子１を複数（抵抗変化型可変抵抗素子１１１，抵抗変化型可変抵抗素子１２１，抵抗変化型可変抵抗素子２１１，抵抗変化型可変抵抗素子２２１・・・）備えており、該複数の抵抗変化型可変抵抗素子１のそれぞれから出力される出力値の累積値に対応する出力値（第２出力値）が出力されるように構成されていても良い。
【０１６２】
以上によれば、複数の抵抗変化型可変抵抗素子への書き込み、読み出しが同時に処理できるため、単体の抵抗変化型可変抵抗素子で積和演算装置を構成した場合に比較して、前記積演算の累積結果の書き込み読み出しの処理速度が速くなる。
【０１６３】
図７（ａ）及び図８に示すように、本実施形態の積和演算装置１００は、データ線１ｉ２（データ線１１２，１２２・・・：ｉは自然数）、ビット線１ｊ３（ビット線１１３，１２３・・・：ｊは自然数）、抵抗変化型可変抵抗素子（積演算装置）ｉｊ１（抵抗変化型可変抵抗素子１１１，１２１，２１１，２２１・・・：ｉ，ｊは、自然数）、スイッチングトランジスタ１ｉ４（スイッチングトランジスタ１１４，１２４・・・：ｉは自然数）、コンデンサ１ｉ５（コンデンサ１１５，コンデンサ１２５・・・：ｉは、自然数）、オペアンプ１ｉ６（オペアンプ１１６，１２６・・・：ｉは自然数）、スイッチングトランジスタ１ｊ７（スイッチングトランジスタ１１７，１２７・・・：ｉは自然数）からなる構成である。
【０１６４】
図７（ａ）に示すように、積和演算装置１００では、データ線１ｉ２（データ線１１２，１２２・・・：ｉは、自然数）には、読み出し回路が接続されている。なお、図７（ａ）では、書き込み動作を示しているが、書き込み時は、抵抗変化型可変抵抗素子と演算結果を蓄積するキャパシタの間は、導通されていない状態になっている。
【０１６５】
この時、ビット線１ｊ３（ビット線１１３、ビット線１２３・・・：ｊは、自然数）には、パルス幅＝Ｔｊで定義される単一電圧パルスを印加する。
【０１６６】
なお、ビット線１ｊ３に接続されているトランジスタは導通状態になっている。データ線１ｉ２には、パルス周波数＝Ｆｉで定義される複数パルス電圧を印可する。
【０１６７】
図７（ａ）には、各抵抗変化型可変抵抗素子間に印加される電圧が記述されているが、閾値電位Ｖｔｈで表される閾値以上の電圧値が加わった場合に、ビット線１ｊ３及びデータ線１ｉ２で選択された抵抗変化型可変抵抗素子（積演算装置）ｉｊ１（抵抗変化型可変抵抗素子１１１，抵抗変化型可変抵抗素子１２１，抵抗変化型可変抵抗素子２１１，抵抗変化型可変抵抗素子２２１・・・：ｉ，ｊは、自然数）には、コンダクタンスσｉｊ∝Ｆｉ・Ｔｊで示される情報が書き込まれることになる。（コンダクタンスσｉｊは素子抵抗値Ｒｉｊの逆数。）
なお、抵抗変化型可変抵抗素子ｉｊ１には、データを保持する機能があるため、電源を切っても、書き込まれた情報が消失することは無い。
【０１６８】
すなわち、抵抗変化型可変抵抗素子ｉｊ１は、単一電圧パルス及び電圧パルス列の入力による積演算の結果を、抵抗変化型可変抵抗素子ｉｊ１の電気抵抗（コンダクタンスσｉｊに対応）の変化によって記憶するものである。
【０１６９】
ここで、特許文献１及び２に記載された従来技術の上述した問題点とは、別の問題点について説明する。従来技術では、スイッチト電流源（ＳＣＳ）のそれぞれが、情報を記録したり消去したりする機能がないため、個々のスイッチト電流源（ＳＣＳ）の出力値（積演算の結果）のそれぞれを再利用等することができないといった問題点がある。
【０１７０】
しかしながら、上述したように、抵抗変化型可変抵抗素子ｉｊ１は、電圧パルスの印加回数（ＳＥＴパルス回数）に応じて素子に流れる電流を制御でき、また、電圧パルス幅及びパルス電圧値に応じて素子に流れる電流が制御できる。
【０１７１】
言い換えれば、抵抗変化型可変抵抗素子ｉｊ１は、電圧パルスの印加回数に応じて、或いは、電圧パルス幅及びパルス電圧値に応じて素子の電気抵抗が変化する。
【０１７２】
すなわち、抵抗変化型可変抵抗素子ｉｊ１は、単一電圧パルス及び電圧パルス列（又は、パルス電圧）の入力による積演算の結果を、抵抗変化型可変抵抗素子ｉｊ１の電気抵抗の変化によって記憶する。これにより、抵抗変化型可変抵抗素子ｉｊ１自体による積演算の結果の記憶が可能となる。
【０１７３】
次に、図８に基づき、積和演算装置１００の読み出し動作について説明する。
【０１７４】
読み出し時は、抵抗変化型可変抵抗素子ｉｊ１と電荷量として演算結果を蓄積するコンデンサ１ｉ５（コンデンサ１１５，コンデンサ１２５・・・：ｉは、自然数）との間は、導通された状態になっている。
【０１７５】
データ線１ｉ２を０Ｖに固定し、ビット線１ｊ３にパルス電圧値＝Ｖｏ、電圧パルス幅＝Ｔｏで定義される電圧パルスを印加する事により、データ線１ｉ２上に接続された抵抗変化型可変抵抗素子ｉｊ１には、（Σσｉｊ）・Ｖｏ∝（ΣＦｉ・Ｔｊ）・Ｖｏで示される電流が流れ、コンデンサ１ｉ５には、電荷量Ｑ＝（Σσｉｊ）・Ｖｏ・Ｔｏ∝（ΣＦｉ・Ｔｊ）・Ｖｏ・Ｔｏで定義される電荷量が蓄積されることになる。
【０１７６】
また、データを加算するのに、電流を検出する方法も可能である。例えば、本実施形態では、複数個の抵抗変化型可変抵抗素子ｉｊ１の積演算の結果を総和するだけであるから、電流を検出する方法では、単に線を繋いで抵抗器で電流を見れば良いことになる。なお、直接抵抗器を繋ぐと共通線の電位が変化するので、コンデンサ１ｉ５に蓄積される電荷量Ｑによる方法の時と同様に、オペアンプを使った加算回路を用いれば良い。
【０１７７】
なお、読み出し完了後、新しい積和演算処理を行うには、リセット動作を行い、初期化するする必要がある。
【０１７８】
例えば、抵抗変化型可変抵抗素子ｉｊ１をバイポーラー動作させた場合は、書き込み時の電圧パルスと時間（パルス幅）・電圧（パルス電圧値）が同じで、極性の異なる電圧パルスを再度印加することにより、電気抵抗の変化によって記憶された積演算の結果を消去することができる。また、抵抗変化型可変抵抗素子ｉｊ１をモノポーラ動作させた場合は、極性が同じで時間（パルス幅）が長い電圧パルスを再度印加することにより、電気抵抗の変化によって記憶された積演算の結果を消去することができる。
【０１７９】
本実施形態においては、複数のセルへの書き込み、読み出しが同時に処理できるため、実施の形態１及び実施の形態２の積和演算装置１０に比べ、データの処理速度が速い。また抵抗変化型可変抵抗素子ｉｊ１内に書き込まれた情報を読み出ししたくない場合は、そのセルにつながったビット線１ｊ３のスイッチングトランジスタ１ｊ７（スイッチングトランジスタ１１７，スイッチングトランジスタ１２７・・・：ｊは、自然数）をＯＦＦにすることにより読み出しができなくなり、結果として部分的な積和演算が可能となる。
【０１８０】
また、素子面積に関しては、実施の形態１及び実施の形態２の積和演算装置１０のように、ユニットセルの大きさは４Ｆ２（Ｆ：デザインルール）で表される。ただし、複数個のセルで構成されているため、積和演算装置１００全体としての面積は、実施の形態１及び実施の形態２の積和演算装置１０に較べて大きい。
【０１８１】
以上のように、本実施形態の積和演算装置１００は、複数の抵抗変化型可変抵抗素子ｉｊ１のうち、所定数の抵抗変化型可変抵抗素子ｉｊ１のそれぞれから出力される出力値の累積値に対応する出力値（第３出力値）が出力されるように構成されていても良い。
【０１８２】
前記構成によれば、所定数の抵抗変化型可変抵抗素子ｉｊ１のそれぞれから出力される出力値の累積値に対応する第３出力値（部分和）が出力される、すなわち、部分的な積和演算（部分和の算出）が可能となる。
【０１８３】
また、本発明の積和演算装置は、前記構成に加えて、前記複数の抵抗変化型可変抵抗素子ｉｊ１のうち、所定数の抵抗変化型可変抵抗素子ｉｊ１のそれぞれから出力される出力値の累積値を記憶するコンデンサ１ｉ５（記憶部）を備えていることが好ましい。
【０１８４】
以上によれば、適宜コンデンサ１ｉ５などを設けることにより、複数の抵抗変化型可変抵抗素子ｉｊ１を、複数のブロック部分に分割して、当該ブロック部分毎に、前記複数の抵抗変化型可変抵抗素子ｉｊ１のうち、所定数の抵抗変化型可変抵抗素子ｉｊ１のそれぞれから出力される出力値の累積値を記憶させることができる。また、コンデンサ１ｉ５に記録されていれば、積演算の累積結果を直ぐに引き出すことができるので、当該ブロック部分毎にコンデンサ１ｉ５に記憶されている部分和の算出処理が速くなる。
【０１８５】
〔実施の形態４〕
本発明のさらに他の実施の形態である積和演算装置２０について図９（ａ）〜図１０（ｂ）に基づいて説明すれば、以下の通りである。
【０１８６】
図９（ａ）は、抵抗変化型可変抵抗素子２１をユニットセルにし、単一セルにより構成された積和演算装置２０の構成を示す回路図であり、図９（ｂ）は、抵抗変化型可変抵抗素子２１の端子Ａ（ビット線）に入力される電圧パルス（パルス幅Ｔｉ）の様子を示す波形図であり、図９（ｃ）は、端子Ａ・Ｂ間の電位差と閾値電位Ｖｔｈとの関係を示す波形図である。
【０１８７】
図１０（ａ）は、積和演算装置２０の構成と、電圧パルス時間（電圧パルス幅に相当）及び電圧パルス振幅（パルス電圧）を、それぞれ乗数、及び被乗数に用いた読み出し動作方法を示す回路図であり、図１０（ｂ）は、読み出し動作方法を示すシーケンス図である。
【０１８８】
本実施形態の積和演算装置２０は、被乗数と乗数とを入力することにより、これらの積演算の結果を出力するものであり、図９（ａ）に示すように、抵抗変化型可変抵抗素子２１，データ線２２，ビット線２３，スイッチングトランジスタ２４，コンデンサ（記憶部）２５，及びコンパレータ２６,スイッチングトランジスタ２７を備える構成である。
【０１８９】
積和演算装置１０と違いは、コンデンサ２５は、コンパレータ２６の入出力端子間に接続されていない（フィードバック回路を構成していない）点と、データ線２２上に、新たにスイッチングトランジスタ２７が設けられている点である。
【０１９０】
本実施形態では、図９（ａ）に示すように、単体の抵抗変化型可変抵抗素子２１をユニットセルとして単一セルにより積和演算装置２０を構成し、電圧パルス振幅（Ｖｉ：パルス電圧値に相当）及び電圧パルス時間（Ｔｉ：電圧パルス幅に相当）を、それぞれ、乗数及び被乗数に用いた動作について説明する。
【０１９１】
図９（ａ）に示すように、書き込み時は、抵抗変化型可変抵抗素子２１と演算結果を電荷量として蓄積するコンデンサ２５の間は、導通されていない状態になっている。
【０１９２】
まず、抵抗変化型可変抵抗素子２１に接続されたビット線２３とデータ線２２とに電圧パルスを印加する。この時、ビット線２３には、電圧パルス振幅＝Ｖｉで定義される単一電圧パルスを印加する。
【０１９３】
データ線２２は、グランドに接続されているが、通常はデータ線２３とセル間のスイッチングトランジスタ（選択トランジスタ）２７がＯＦＦになっている（ハイインピーダンス状態）。
【０１９４】
データの書き込みを行いたい時間（Ｔｉ：単一電圧パルスの電圧パルス幅に相当）のみスイッチングトランジスタ２７をＯＮ状態にする。図１６（ａ）には、抵抗変化型可変抵抗素子２１の端子Ａ・Ｂに印加される電圧が記載されているが、閾値電位Ｖｔｈで表される閾値以上の電圧値が加わった場合に、抵抗変化型可変抵抗素子２１には、コンダクタンスσｉｉ∝Ｔｉ・Ｖｉで示される情報が書き込まれることになる。（コンダクタンスσｉｉは素子抵抗値Ｒｉｉの逆数である。）
なお、抵抗変化型可変抵抗素子２１には、上述した抵抗変化型可変抵抗素子１などと同様にデータを保持する機能があるため、電源を切っても、書き込まれた情報が消失することは無い。
【０１９５】
次に、図１７（ａ）に基づき、積和演算装置２０の読み出し動作について説明する。読み出し時は、抵抗変化型可変抵抗素子２１及び積演算の結果を電荷量として蓄積するコンデンサ２５間は、導通された状態になっている。
【０１９６】
データ線２２を０Ｖに固定し、ビット線２３にパルス電圧値＝Ｖｏ、電圧パルス幅＝Ｔｏで定義されるパルス電圧を印加することにより、抵抗変化型可変抵抗素子２１には、σｉｉ・Ｖｏ∝Ｔｉ・Ｖｉ・Ｖｏで示される電流が流れ、コンデンサ２５には、電荷量Ｑ＝σｉｉ・Ｖｏ・Ｔｏ∝Ｔｉ・Ｖｉ・Ｖｏ・Ｔｏで定義される電荷量が蓄積されることになる。
【０１９７】
以上で説明した書き込みと読み出しを交互に繰り返す事により、電荷量Ｑ＝（Σσｉｉ）・Ｖｏ・Ｔｏ∝（ΣＴｉ・Ｖｉ）・Ｖｏ・Ｔｏ、で定義される積演算の累積結果がコンデンサ２５に蓄積されたことになる。
【０１９８】
なお、図１７（ｂ）に示しているが、書き込み読み出し処理後には、上述したように、リセット動作を行い、初期化する必要が有る。本実施形態の積和演算装置２０における抵抗変化型可変抵抗素子２１の素子サイズは、４Ｆ２（Ｆ：デザインルール）で示される。
【０１９９】
例えば、デザインルールを０．１μｍとした場合、積和演算装置２０の基本素子サイズは、０．０４μｍ２となり、図１４（ａ）〜図１５で示した従来技術に比べ、２桁〜３桁程度、素子面積が縮小できる。
【０２００】
また、電圧パルス振幅、電圧パルス時間を乗数、被乗数に用いた動作手法において本実施形態に示した他、実施の形態２に示した処理シーケンスの変更、実施の形態３で示した複数のセル構成についても、上記と同様に構成することが可能である。
【０２０１】
〔実施の形態５〕
本発明のさらに他の実施の形態である積和演算回路（積演算装置,積和演算装置）３０について図１１に基づいて説明すれば、以下の通りである。
【０２０２】
積和演算回路３０は、積和演算における被演算値の演算順序や演算範囲を制御することで、低消費電力かつ高速な積和演算回路を提供するものである。すなわち、被演算値を降順または昇順に出力するソーティングにより、無駄な電位変化を抑え、低消費電力化と高速化を実現する。
【０２０３】
図１１は、本発明の一実施形態である積和演算回路３０の各処理ブロックの構成を示すブロック図である。本実施形態においては、実施の形態３における積和演算装置１００を用いた場合の具体例について説明する。
【０２０４】
図１１に示すように、積和演算回路３０は、入力値保持ブロック（演算値保持ブロック）３１，ソーティングブロック３２，スイッチングブロック（１）３３，荷重値保持ブロック（被演算値保持ブロック）３４，スイッチングブロック（２）３５，及び演算処理ブロック３６を備える構成である。
【０２０５】
図１１に示すように、積和演算回路３０は、演算処理ブロック３６を、単一の積和演算装置１００で構成することができる点が、図１５に示す従来の積和演算回路３０００と異なっている。
【０２０６】
すなわち、従来技術においては、複数個（ｎ個：ｎは、自然数）の積和演算処理を行うには、複数個（ｎ個）の演算ブロックを必要とした。積和演算回路３０においては、ビット線とデータ線で交差された位置の所定領域のそれぞれに抵抗変化型可変抵抗素子１を配置したアレイ構造を適用しているため、一つの演算処理ブロック３６にて複数の積和演算処理が可能になる。また、演算処理ブロック３６のユニットセル部が小さくなるため、従来技術に較べて、２桁〜３桁程度、演算処理ブロック３６が縮小できる。
【０２０７】
入力値保持ブロック（演算値保持ブロック）３１は、演算値（乗数）Ｘｉを保持するものである。
【０２０８】
ソーティングブロック３２は、演算値Ｘｉを値の大きい順若しくは小さい順に出力するものである。
【０２０９】
スイッチングブロック（１）３３は、演算処理ブロック３６の演算値Ｘｉのラベルｉに対応する端子へ演算値Ｘｉを入力するものである。
【０２１０】
荷重値保持ブロック（被演算値保持ブロック）３４は、被演算値（被乗数）Ｗｉを保持するものである。
【０２１１】
スイッチングブロック（２）３５は、演算処理ブロック３６の被演算値Ｗｉのラベルｉに対応する端子へ被演算値Ｗｉを入力するものである。
【０２１２】
なお、演算値Ｘｉと被演算値Ｗｉのｉは、それぞれ異なるＸとＷを表す添え字であり、１，２，３・・・の自然数をとる（以下同様）。
【０２１３】
次ぎに、本実施形態における積和演算回路３０による演算処理工程を説明する。
【０２１４】
まず、図１１に示すように、複数の演算値Ｘｉは入力値保持ブロック３１に保持され、さらにソーティングブロック３２により、値の大きいもの順若しくは小さい順にソートされ出力される。
【０２１５】
ここで本実施形態においては、値が等しい演算値Ｘｉがある場合には、値が等しい演算値間での出力の順番は任意としているが、事前に適当な順番を設定しておいても良い。
【０２１６】
続いて、演算値Ｘｉが有するラベルｉが，ソーティングブロック３２からスイッチングブロック（１）３３に入力され、そのラベルｉに応じて，スイッチングブロック（１）３３がスイッチングを行い、ソーティングブロック３２から出力された演算値Ｘｉをそのラベルｉに対応する端子に入力する。
【０２１７】
ここで、本実施形態においては、以上の入力値保持ブロック３１とソーティングブロック３２で実行される処理は、連想メモリ回路（不図示）を用いて実現する。
【０２１８】
この連想メモリ回路には、演算値Ｘｉの値と、それぞれの演算値Ｘｉが有するラベルｉと検出フラグとが保持されている。
【０２１９】
連想メモリ回路は、入力された検索値と、保持しているデータを比較し、両者の値が一致するものを出力する機能を有する。この連想メモリ回路の一般的な機能を利用し、検出フラグが立っていない演算値Ｘｉの中から値の大きな順に、１つずつその値とラベルを読み出し、読み出した値に検出フラグを立てることにより、前記の入力値保持ブロック３１とソーティングブロック３２で実行される処理を実現することが可能となる。
【０２２０】
すなわち連想メモリ回路に対して、検索値として演算値Ｘｉの最大値に相当する値から大きいもの順に一つずつ入力し、値が一致するデータを順に読み出すことにより、ソーティング機能を実現することが可能となる（逆に、演算値Ｘｉの値の小さなもの順に読み出すことも可能である）。
【０２２１】
なお本実施形態では、前記の通り、入力値保持ブロック３１とソーティングブロック３２の機能を連想メモリ回路で実現したが、具体的な回路構成は本発明の主眼とするところではなく、同様の処理が可能なものであれば、その他の処理構成を用いても良い。
【０２２２】
一方、荷重値保持ブロック３４から出力される複数の被演算値Ｗｉは、それぞれ演算処理ブロック３６の所定の端子に入力される。ここで本実施形態においては、被演算値Ｗｉについても、演算値Ｘｉと同様に、演算値Ｘｉが有するラベルｉに応じてスイッチングブロック（２）３５においてスイッチングが行なわれ、ラベルｉによって決定される所定の端子に入力される。
【０２２３】
なお、本実施形態とは異なり、被演算値Ｗｉが入力される演算ブロックが、演算値Ｘｉのラベルｉにはよらずに、事前に設定されている手法を用いることも可能である。また、各端子に入力される被演算値Ｗｉの値は、演算毎に同一の場合も異なる場合もある。
【０２２４】
本実施形態においては、荷重値保持ブロック３４は一般的なＳＲＡＭ（static random access memory）回路によって構成しても良いが、同様の処理が可能なものであれば、その他の処理構成を用いても良い。以上の処理を実行することにより、所定の演算ブロックに演算値Ｘｉと被演算値Ｗｉが入力される。
【０２２５】
これ以降の処理は、実施の形態３と同様であるので、説明は省略する。
【０２２６】
〔実施の形態６〕
本発明のさらに他の実施の形態であるニューラルネットワーク４０について図１２〜図１３に基づいて説明すれば、以下の通りである。なお、本実施の形態において説明すること以外の構成は、前記実施の形態５と同じである。また、説明の便宜上、前記の実施の形態５の図面に示した部材と同一の機能を有する部材については、同一の符号を付し、その説明を省略する。
【０２２７】
図１２は、本発明の一実施形態であるニューラルネットワーク４０に対して積和演算方法を適用する際の演算処理ブロックの構成図である。
【０２２８】
図１３は、ニューラルネットワーク４０に対して積和演算方法を適用する際の演算処理における各ステップのフローチャートである。
【０２２９】
図１２に示すように、ニューラルネットワーク４０は、積和演算回路３０Ａ，積和演算回路３０Ｂ，関数処理ブロック４１Ａ，及び関数処理ブロック４１Ｂを備えるものである。
【０２３０】
積和演算回路３０Ａ及び積和演算回路３０Ｂは、実施の形態５で説明した積和演算回路３０と同様の構成である。
【０２３１】
よって、本実施形態では、積和演算回路３０Ａ，積和演算回路３０Ｂなどが、関数処理ブロック４１Ａ，及び関数処理ブロック４１Ｂなどを介して接続されてニューラルネットワークを構成している点が実施の形態５と異なっている。
【０２３２】
すなわち、図１１で説明した演算値Ｘｉが前段ニューロ素子の出力値に相当し、また被演算値Ｗｉがシナプス荷重値に相当し、ニューロン素子の内部状態値を決定する。
【０２３３】
次ぎに、図１３のフローチャートに基づき、ニューラルネットワーク４０の動作について説明する。
【０２３４】
ステップＳ１（以下、「ステップ」は省略する）では、ニューラルネットワーク４０の前段のニューロン素子のそれぞれの出力値が演算値Ｘｉとして、１意対応で、次段の１つのニューロン素子内の積和演算回路３０Ａの入力値保持ブロック３１Ａに入力され、Ｓ２に進む。
【０２３５】
なお、「一意対応」とは、「１対１対応」及び「他対１対応」を含む概念である。
【０２３６】
より具体的には、「１対１対応」とは、前段における１つのニューロン素子の出力値に対してシナプス荷重値で重み付けした値を、次段の１つのニューロン素子に入力する場合の対応関係のことである。
【０２３７】
また、「他対１対応」とは、前段における複数のニューロン素子のそれぞれの出力値に対してシナプス荷重値で重み付けした値の総和を、次段の１つのニューロン素子に入力する場合の対応関係のことである。
【０２３８】
Ｓ２では、入力値保持ブロック３１Ａが、入力された演算値Ｘｉをラベルｉに応じて、ソーティングブロック３２Ａに渡してＳ３に進む。
【０２３９】
なお、「ラベルｉ」は、前記出力先のニューロン素子を識別する情報である。
【０２４０】
Ｓ３では、ソーティングブロック３２Ａが、演算値Ｘｉを値が大きいもの順又は小さいもの順に並べて、Ｓ４に進む。
【０２４１】
Ｓ４では、ソーティングブロック３２Ａが、Ｓ３で大きいもの順又は小さいもの順に並べられた演算値Ｘｉが記憶されるメモリ（不図示）内の所定の記憶領域を指定するためのフラグを決定し、決定されたフラグとラベルｉ若しくは演算値Ｘｉとをスイッチングブロック（１）３３Ａに送信してＳ５に進む。
【０２４２】
Ｓ５では、スイッチングブロック（１）３３Ａが、前記メモリに記憶された演算値Ｘｉとラベルｉとを読み出し、演算処理ブロック３６Ａの所定の端子に、入力する。
【０２４３】
なお、Ｓ１からＳ５までと並行して、Ｓ６からＳ９までが進行する。
【０２４４】
Ｓ６では、演算値Ｘｉに対応する被演算値Ｗｉを、シナプス荷重値として前記次段の１つのニューロン素子の荷重値保持ブロック３４Ａに入力し、Ｓ７に進む。なお、被演算値Ｗｉは、ラベルｉと対応づけられている。
【０２４５】
Ｓ７では、荷重値保持ブロック３４Ａが、被演算値Ｗｉが記憶されるメモリ（不図示）内の所定の記憶領域を指定するためのフラグを決定し、Ｓ８に進む。
【０２４６】
Ｓ８では、荷重値保持ブロック３４Ａが、ソーティングブロック３２Ａから被演算値Ｗｉに対応するラベルｉを受け取り、決定したフラグに基づき、被演算値Ｗｉとラベルｉとをメモリ内の所定領域に記憶させ、Ｓ９に進む。
【０２４７】
Ｓ９では、スイッチングブロック（２）３５Ａが、Ｓ７で決定されたフラグに基づき、Ｓ８でメモリに保持した被演算値Ｗｉとラベルｉとを、演算処理ブロック３６Ａの所定の端子に入力して、Ｓ１０に進む。
【０２４８】
Ｓ１０では、演算処理ブロック３６Ａで演算値Ｘｉと被演算値Ｗｉとの積演算の結果のｉ＝１から前記前段のニューロン素子の所定数までの、累積値が算出され関数処理ブロック４１Ａに入力されてＳ１１に進む。
【０２４９】
Ｓ１１では、前記累積値が、関数処理ブロック４１Ａによって関数処理しＳ１２に進む。
【０２５０】
Ｓ１２では、関数処理ブロック４１Ａが、関数処理後の出力値を後段（次段）の積和演算回路３０Ｂに入力する。
【０２５１】
本実施形態のニューラルネットワーク４０では、Ｓ１〜Ｓ１２までの各処理が繰り返される。
【０２５２】
以上のように、ニューラルネットワーク４０は、複数段のニューロン素子を有しており、特定段における所定数のニューロン素子の出力値に対してシナプス荷重値で重み付けした値のそれぞれを、一意対応で、該特定段に隣接する次段のニューロン素子に入力することにより、該ニューロン素子の内部状態を示す内部状態値が決定されるニューラルネットワークであって、前記各ニューロン素子は、前記積和演算装置を備えており、前記特定段におけるニューロン素子の出力値は、前記被乗数として前記次段のニューロン素子に備えられた積和演算装置へ入力されると共に、前記シナプス荷重値は、前記乗数として前記次段のニューロン素子に備えられた積和演算装置に入力され、前記次段のニューロン素子の内部状態を示す内部状態値は、前記積演算の累積結果に対応する出力値として前記次段のニューロン素子に備えられた積和演算装置から出力されるように構成されている。
【０２５３】
前記構成によれば、前記各ニューロン素子は、前記積和演算装置を備えており、これらのニューロン素子の出力値、シナプス荷重値及び内部状態値のそれぞれを、前記積和演算装置に入・出力される、被乗数、乗数、及び被乗数及び乗数の積演算の累積結果で、ニューラルネットワークが構成されるため、従来のニューラルネットワークにおいて各ニューロン素子毎の内部状態値を算出する演算処理ブロックのそれぞれの縮小が可能になる。
【０２５４】
以上説明した様に、本発明によれば、回路が簡素化された素子サイズの小さい積演算装置及び積和演算装置が実現できる。また、抵抗変化型可変抵抗素子に書き込んだ入力信号の積又は積和演算の結果を記憶することができ、必要に応じて、全体和又は部分和を出力することが可能になる。
【０２５５】
よって、積演算装置及び積和演算装置における構成を簡素化し、これらの装置を含む回路全体の面積に対する積演算装置及び積和演算装置の占有面積を小さくすることが可能な積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法などを提供することができる。
【０２５６】
なお、本発明は、上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【０２５７】
なお、本発明の積和演算装置は、抵抗変化型可変抵抗素子の一方の端子に被乗数、他方の端子に乗数を入力し、入力信号の積を出力値として利用しても良い。
【０２５８】
本発明の大きなポイントは、積和演算装置に抵抗変化型可変抵抗素子を用いる事にある。抵抗変化型可変抵抗素子とは、電圧パルスを印可する事によって可逆的に電気抵抗が変化する素子であり、近年、フラッシュメモリに代わる高速動作可能な次世代不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Nonvolatile Random Access Memory）として応用が期待されている。尚、抵抗変化型可変抵抗素子としては、非特許文献１に記載されている様なＲＲＡＭ（Resistance RAM）やＰＣＲＡＭ（Phase Change RAM）が挙げられる。
【０２５９】
即ち、本発明の積和演算装置においては、抵抗変化型可変抵抗素子の一方の端子に被乗数、他方の端子に乗数を入力し、入力信号の積を出力値として利用するようになっている。
【０２６０】
また、本発明の積和演算装置は、前記積和演算装置の入力値において、乗数である電圧パルス幅及び被乗数であるパルス周波数により出力値が制御できても良い。
【０２６１】
また、本発明の積和演算装置は、前記積和演算装置の入力値において、乗数である電圧パルス幅及び被乗数であるパルス電圧により出力値が制御できても良い。
【０２６２】
また、本発明の積和演算装置は、前記積和演算装置において、単体の抵抗変化型可変抵抗素子により素子を形成しても良い。
【０２６３】
また、本発明の積和演算装置は、前記積和演算装置において、行線と列線に接続された複数の抵抗変化型可変抵抗素子により素子を形成しても良い。
【０２６４】
また、本発明の積和演算装置は、前記積和演算装置において、抵抗変化型可変抵抗素子に書き込んだ積和演算結果を記憶できても良い。
【０２６５】
なお、抵抗変化型可変抵抗素子は、電源を切って素子に電圧がかからなくても、書き込みにより記憶した情報を保持することが可能である。
【０２６６】
また、本発明の積和演算装置は、前記積和演算装置において、各行線と列線により指定される抵抗変化型可変抵抗素子に書き込んだ入力信号の積を記憶できても良い。
【０２６７】
また、本発明の積和演算装置は、前記積和演算装置において、各行線と列線により指定される抵抗変化型可変抵抗素子に書き込んだ入力信号の積の部分和が出力できても良い。
【０２６８】
また、本発明のニューラルネットワークは、複数段のニューロン素子を有するニューラルネットワークであって、各ニューロン素子が前記積和演算回路を備え、当該積和演算回路が前段のニューロン素子の出力値を前段複数の被演算値として入力し、前記乗算手段により各被演算値としてシナプス荷重を乗じ、前記乗算和として内部状態を算出しても良い。
【産業上の利用可能性】
【０２６９】
本発明は、電気的ストレスの印加によって電気抵抗を変化させることで情報を記憶することが可能な抵抗変化型可変抵抗素子を備えた積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法などに適用することができる。なお、本発明は、積演算及び積和演算を行なう演算回路を必要とする電子機器、及び電気機器であれば、どのような機器であっても適用可能である。
【図面の簡単な説明】
【０２７０】
【図１】本発明の一実施形態である抵抗変化型可変抵抗素子をユニットセルとする単一セルにより構成された積和演算装置の書き込みの際の構成を示す回路図である。
【図２】（ａ）は、前記抵抗変化型可変抵抗素子の端子Ａ（ビット線）に入力される電圧パルス（パルス幅Ｔｉ）の様子を示す波形図であり、（ｂ）は、端子Ｂ（データ線）に入力される電圧パルス（パルス周波数Ｆｉ）の様子を示す波形図であり、（ｃ）は、端子Ａ・Ｂ間の電位差と閾値電位Ｖｔｈとの関係を示す波形図である。
【図３】（ａ）は、前記抵抗変化型可変抵抗素子をユニットセルとする単一セルにより構成された積和演算装置の読み出しの際の構成を示す回路図であり、（ｂ）は、前記積和演算装置の動作を示すシーケンス図である。
【図４】前記抵抗変化型可変抵抗素子の構造及び電気特性測定の際の等価回路を示す回路図である。
【図５】（ａ）は、前記抵抗変化型可変抵抗素子に流れる電流値のＳＥＴパルス回数依存性を示すグラフ図であり、（ｂ）は、前記抵抗変化型可変抵抗素子に流れる電流値の所定パルス電圧の電圧パルス幅（所定パルス電圧の印加時間）依存性を示すグラフ図であり、（ｃ）は、パルス電圧依存性を示すグラフ図である。
【図６】（ａ）は、単一セルにより構成された積和演算装置の構成と書き込み動作とを示す回路図であり、（ｂ）は、読み出し動作を示す回路図である。（図１，図２（ａ）〜図２（ｃ）及び図３（ａ）・図３（ｂ）とは、別の動作方法）
【図７】（ａ）は、前記抵抗変化型可変抵抗素子をユニットセルする複数個のセルにより構成された積和演算装置の書き込みの際の構成を示す回路図であり、（ｂ）は、前記抵抗変化型可変抵抗素子の端子Ａ（ビット線）に入力される電圧パルス（パルス幅Ｔｉ）の様子を示す波形図であり、（ｃ）は、端子Ｂ（データ線）に入力される電圧パルス（パルス周波数Ｆｉ）の様子を示す波形図であり、（ｄ）は、端子Ａ・Ｂ間の電位差と閾値電位Ｖｔｈとの関係を示す波形図である。
【図８】前記抵抗変化型可変抵抗素子をユニットセルとする複数個のセルにより構成された積和演算装置の読み出しの際の構成を示す回路図である。
【図９】（ａ）は、前記抵抗変化型可変抵抗素子をユニットセルにし、単一セルにより構成された積和演算装置の構成を示す回路図であり、（ｂ）は、前記抵抗変化型可変抵抗素子の端子Ａ（ビット線）に入力される電圧パルス（パルス幅Ｔｉ）の様子を示す波形図であり、（ｃ）は、端子Ａ・Ｂ間の電位差と閾値電位Ｖｔｈとの関係を示す波形図である。
【図１０】（ａ）は、前記抵抗変化型可変抵抗素子をユニットセルにし、単一セルにより構成された積和演算装置の構成と、電圧パルス幅及びパルス電圧を、それぞれ乗数、及び被乗数に用いた読み出し動作方法を示す回路図であり、（ｂ）は、読み出し動作方法を示すシーケンス図である。
【図１１】本発明の一実施形態である積和演算回路の各処理ブロックの構成を示すブロック図である。
【図１２】本発明の一実施形態であるニューラルネットワークに対して積和演算方法を適用する際の演算処理ブロックの構成図である。
【図１３】前記ニューラルネットワークに対して積和演算方法を適用する際の演算処理における各ステップのフローチャートである。
【図１４】（ａ）は、従来のＰＷＭ（Pulse Width Modulation：パルス幅変調）信号を用いた積和演算装置の構成を示す回路図であり、（ｂ）は、前記積和演算装置における端子電圧Ｖｏｕｔ及び参照ランプ電圧Ｖｒｅｆの線形関係を示すグラフ図である。
【図１５】従来技術における積和演算回路の構成を示すブロック図である。
【図１６】図１５に示す各処理ブロックにおいて、１つの演算ブロックをアナログ回路で構成したアナログ演算回路を示す回路図である。
【図１７】図１５に示す各処理ブロックにおいて、入力値（演算値）保持ブロックをアナログ回路で構成した回路図である。
【図１８】従来のニューラルネットワークモデルの構成を示す図である。
【図１９】図１８に示したニューラルネットワークに対して積和演算方法を適用する際の各演算処理ブロックの構成を示すブロック図である。
【図２０】シグモイド変換を示すグラフ図である。
【図２１】図１４（ａ）の積和演算装置におけるスイッチト電流源のより詳細な構成を示す回路図である。
【符号の説明】
【０２７１】
１  抵抗変化型可変抵抗素子（積演算装置）
２  データ線
３  ビット線
４  スイッチングトランジスタ
５  コンデンサ（記憶部）
６  オペアンプ
１０  積和演算装置（積演算装置）
１１Ａ  上部電極（一方の端子，他方の端子）
１１Ｂ  下部電極（一方の端子，他方の端子）
１２  抵抗体
２０  積和演算装置（積演算装置）
２１  抵抗変化型可変抵抗素子
２２  データ線
２３  ビット線
２４，２７  スイッチングトランジスタ
２５  コンデンサ（記憶部）
２６  コンパレータ
１００  積和演算装置（積演算装置）
ｉｊ１（１１１，１２１，２１１，２２１・・・：ｉ，ｊは、自然数）  抵抗変化型可変抵抗素子
１ｉ２（１１２，１２２・・・：ｉは、自然数）  データ線
１ｊ３（１１３，１２３・・・：ｊは、自然数）  ビット線
１ｉ４（１１４，１２４・・・：ｉは、自然数）  スイッチングトランジスタ
１ｊ７（１１７，１２７・・・：ｊは、自然数）  スイッチングトランジスタ
１ｉ５（１１５，１２５・・・：ｊは、自然数）  コンデンサ（記憶部）
１ｉ６（１１６，１２６・・・：ｊは、自然数）  オペアンプ
３０，３０Ａ，３０Ｂ  積和演算回路（積演算装置，積和演算装置）
３１，３１Ａ，３１Ｂ  入力値保持ブロック（演算値保持ブロック）
３２，３２Ａ，３２Ｂ  ソーティングブロック
３３，３３Ａ，３３Ｂ  スイッチングブロック（１）
３４，３４Ａ，３４Ｂ  荷重値保持ブロック（被演算値保持ブロック）
３５，３５Ａ，３５Ｂ  スイッチングブロック（２）
３６，３６Ａ，３６Ｂ  演算処理ブロック
４０  ニューラルネットワーク
４１Ａ，４１Ｂ  関数処理ブロック
Ａ  端子（一方の端子）
Ｂ  端子（他方の端子）
σｉｉ  コンダクタンス（ｉは、自然数）
Ｆｉ  パルス周波数（電圧パルス周波数：ｉは、自然数）
Ｑ  電荷量（出力値の累積値）
Ｔｉ  パルス幅（電圧パルス幅：ｉは、自然数）
Ｖｒｅｆ  参照電圧
Ｖｔｈ  閾値電位
Ｗｉ  被演算値（被乗数：ｉは、自然数）
Ｘｉ  演算値（乗数：ｉは、自然数）
【図１】
0005160304.tif 000003
【図２】
0005160304.tif 000004
【図３】
0005160304.tif 000005
【図４】
0005160304.tif 000006
【図５】
0005160304.tif 000007
【図６】
0005160304.tif 000008
【図７】
0005160304.tif 000009
【図８】
0005160304.tif 000010
【図９】
0005160304.tif 000011
【図１０】
0005160304.tif 000012
【図１１】
0005160304.tif 000013
【図１２】
0005160304.tif 000014
【図１３】
0005160304.tif 000015
【図１４】
0005160304.tif 000016
【図１５】
0005160304.tif 000017
【図１６】
0005160304.tif 000018
【図１７】
0005160304.tif 000019
【図１８】
0005160304.tif 000020
【図１９】
0005160304.tif 000021
【図２０】
0005160304.tif 000022
【図２１】
0005160304.tif 000023