(57)【要約】【課題】入力データに応じて回路構成を柔軟に切り替え可能なニューラルネットワークシステムの提供。【解決手段】第１の集積回路は、第１のプログラマブルロジックデバイスと、第１の演算部と、第１のメモリ部と、を有する。第２の集積回路は、第２のプログラマブルロジックデバイスと、第２の演算部と、第２のメモリ部と、を有する。第１の演算部と、第２の演算部と、第１のメモリ部と、第２のメモリ部と、は、それぞれ第１トランジスタを有する。第１トランジスタは、チャネル形成領域に酸化物半導体を有する。第１のプログラマブルロジックデバイスは、第２のプログラマブルロジックデバイスに電気的に接続される。第１のプログラマブルロジックデバイスおよび第２のプログラマブルロジックは、コンフィギュレーションを切り替えることでニューラルネットワークにおける推論を実行する。【選択図】図１
2018133016.tif 000002
【特許請求の範囲】
【請求項１】
第１の集積回路および第２の集積回路を用いて入力データを処理するニューラルネットワークシステムであって、
前記第１の集積回路は、第１のプログラマブルロジックデバイスと、第１の演算部と、第１のメモリ部と、を有し、
前記第２の集積回路は、第２のプログラマブルロジックデバイスと、第２の演算部と、第２のメモリ部と、を有し、
前記第１の演算部と、前記第２の演算部と、前記第１のメモリ部と、前記第２のメモリ部と、は、それぞれ第１トランジスタを有し、
前記第１トランジスタは、チャネル形成領域に酸化物半導体を有し、
前記第１のプログラマブルロジックデバイスは、前記第２のプログラマブルロジックデバイスに電気的に接続され、
前記第１のプログラマブルロジックデバイスおよび前記第２のプログラマブルロジックは、コンフィギュレーションを切り替えることで、ニューラルネットワークにおける推論を実行する機能を有することを特徴とするニューラルネットワークシステム。
【請求項２】
請求項１において、
前記第１の演算部または前記第２の演算部は、ニューラルネットワークにおける学習を実行する機能を有することを特徴とするニューラルネットワークシステム。
【請求項３】
請求項２において、
前記第１のメモリ部または前記第２のメモリ部は、前記学習によって得られた重み係数を保持する機能を有することを特徴とするニューラルネットワークシステム。
【請求項４】
請求項３において、
前記第１のプログラマブルロジックデバイスまたは前記第２のプログラマブルロジックデバイスは、前記第１のメモリ部または前記第２のメモリ部に保持された前記重み係数の情報を含むコンフィギュレーションデータの更新を行うことを特徴とするニューラルネットワークシステム。
【請求項５】
請求項１乃至請求項４のいずれか一項において、
前記第１の演算部と、前記第２の演算部と、前記第１のメモリ部と、前記第２のメモリ部と、は、第２トランジスタを有し、
前記第２トランジスタは、チャネル形成領域にシリコンを含み、
前記第１トランジスタが設けられる層は、前記第２トランジスタが設けられる層と重ねて配置されることを特徴とするニューラルネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一態様は、ニューラルネットワークシステムに関する。
【０００２】
また、本発明の一形態は半導体装置に関する。なお、本発明の一形態は上記の技術分野に限定されない。本明細書等で開示する発明の技術分野は、物、方法、または、製造方法に関するものである。または、本発明の一形態は、プロセス、マシン、マニュファクチャ、または、組成物（コンポジション・オブ・マター）に関するものである。
【０００３】
なお、本明細書等において半導体装置とは、半導体特性を利用することで機能しうる装置全般を指す。表示装置、発光装置、記憶装置、電気光学装置、蓄電装置、半導体回路及び電子機器は、半導体装置を有する場合がある。
【背景技術】
【０００４】
近年、人工ニューラルネットワーク（（Ａｒｔｔｉｆｉｃｉａｌ  Ｎｕｅｒａｌ  Ｎｅｔｗｏｒｋ；以下ＡＮＮまたは単にニューラルネットワークともいう））に関する研究が活発である。
【０００５】
例えば特許文献１では、ニューラルネットワークエンジンと、ノイマン型マイクロプロセッサと、を組み合わせたニューラルネットワークシステムについて開示している。特許文献１のニューラルネットワークシステムでは、ニューラルネットワークエンジンにおいてネットワーク構成情報と当該ネットワーク構造に対する重み情報の設定または更新を行う。当該構成とすることで、回路資源の削減とともに、様々な用途に適したネットワーク構造に再構成することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１０／１０６５８７号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＡＮＮにおいて、大規模なデータ処理をハードウェアの回路資源で処理する場合、回路リソースの大型化を要する。
【０００８】
しかしながら、回路リソースの大型化は、消費電力の増大を招く虞がある。また、データ処理が小規模となる場合、回路リソースに無駄が生じてしまう。
【０００９】
本発明の一態様は、消費電力を増大させることなく回路リソースを有効に活用できる、ニューラルネットワークシステムを提供することを課題の一とする。または本発明の一態様は、新規なニューラルネットワークシステムを提供することを課題の一とする。
【００１０】
なお、これらの課題の記載は、他の課題の存在を妨げるものではない。なお、本発明の一態様は、これらの課題の全てを解決する必要はないものとする。なお、これら以外の課題は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の課題を抽出することが可能である。
【課題を解決するための手段】
【００１１】
本発明の一態様は、第１の集積回路および第２の集積回路を用いて入力データを処理するニューラルネットワークシステムであって、第１の集積回路は、第１のプログラマブルロジックデバイスと、第１の演算部と、第１のメモリ部と、を有し、第２の集積回路は、第２のプログラマブルロジックデバイスと、第２の演算部と、第２のメモリ部と、を有し、第１の演算部と、第２の演算部と、第１のメモリ部と、第２のメモリ部と、は、それぞれ第１トランジスタを有し、第１トランジスタは、チャネル形成領域に酸化物半導体を有し、第１のプログラマブルロジックデバイスは、第２のプログラマブルロジックデバイスに電気的に接続され、第１のプログラマブルロジックデバイスおよび第２のプログラマブルロジックは、コンフィギュレーションを切り替えることで、ニューラルネットワークにおける推論を実行する機能を有するニューラルネットワークシステムである。
【００１２】
本発明の一態様において、第１の演算部または第２の演算部は、ニューラルネットワークにおける学習を実行する機能を有するニューラルネットワークシステムが好ましい。
【００１３】
本発明の一態様において、第１のメモリ部または第２のメモリ部は、学習によって得られた重み係数を保持する機能を有するニューラルネットワークシステムが好ましい。
【００１４】
本発明の一態様において、第１のプログラマブルロジックデバイスまたは第２のプログラマブルロジックデバイスは、第１のメモリ部または第２のメモリ部に保持された重み係数の情報を含むコンフィギュレーションデータの更新を行うニューラルネットワークシステムが好ましい。
【００１５】
本発明の一態様において、第１の演算部と、第２の演算部と、第１のメモリ部と、第２のメモリ部と、は、第２トランジスタを有し、第２トランジスタは、チャネル形成領域にシリコンを含み、第１トランジスタが設けられる層は、第２トランジスタが設けられる層と重ねて配置されるニューラルネットワークシステムが好ましい。
【００１６】
なおその他の本発明の一態様については、以下で述べる実施の形態における説明、および図面に記載されている。
【発明の効果】
【００１７】
本発明の一態様は、消費電力を増大させることなく回路リソースを有効に活用できる、ニューラルネットワークシステムを提供することができる。または本発明の一態様は、新規なニューラルネットワークシステムを提供することができる。
【００１８】
なお、これらの効果の記載は、他の効果の存在を妨げるものではない。なお、本発明の一態様は、これらの効果の全てを有する必要はない。なお、これら以外の効果は、明細書、図面、請求項などの記載から、自ずと明らかとなるものであり、明細書、図面、請求項などの記載から、これら以外の効果を抽出することが可能である。
【図面の簡単な説明】
【００１９】
【図１】ニューラルネットワークシステムの動作例を説明するブロック図。
【図２】ニューラルネットワークシステムの動作例を説明するブロック図。
【図３】ニューラルネットワークシステムの動作例を説明するブロック図。
【図４】ニューラルネットワークシステムの動作例を説明するブロック図。
【図５】ニューラルネットワークシステムの動作例を説明するフローチャート。
【図６】ニューラルネットワークシステムの動作例を説明するブロック図。
【図７】ニューラルネットワークシステムの動作例を説明するブロック図。
【図８】ニューラルネットワークシステムを組み込んだＩＣの構成例を示す斜視模式図。
【図９】Ａ：ＤＯＳＲＡＭの構成例を示す機能ブロック図。Ｂ：メモリセルアレイの構成例を示す図。Ｃ：メモリセルの構成例を示す回路図。
【図１０】ＮＯＳＲＡＭの構成例を示す機能ブロック図。
【図１１】Ａ−Ｅ：メモリセルの構成例を示す回路図。
【図１２】ＯＳ−ＦＰＧＡの構成例を説明するブロック図。
【図１３】ＯＳ−ＦＰＧＡの構成例を説明するブロック図。
【図１４】ＯＳ−ＦＰＧＡの構成例を説明する回路図およびタイミングチャート。
【図１５】ＯＳ−ＦＰＧＡの構成例を説明する回路図。
【図１６】ＯＳ−ＦＰＧＡの構成例を説明する回路図およびタイミングチャート。
【図１７】ニューラルネットワークシステムが有する積和演算回路の構成を説明するための図。
【図１８】ニューラルネットワークシステムが有する積和演算回路の構成を説明するための図。
【図１９】ニューラルネットワークシステムが有する積和演算回路の構成を説明するための図。
【図２０】ニューラルネットワークシステムが有する積和演算回路の構成を説明するための図。
【図２１】階層型ニューラルネットワークの一例を示す図。
【図２２】階層型ニューラルネットワークの一例を示す図。
【図２３】階層型ニューラルネットワークの一例を示す図。
【図２４】回路の構成例を説明する図。
【発明を実施するための形態】
【００２０】
以下、実施の形態について図面を参照しながら説明する。但し、実施の形態は多くの異なる態様で実施することが可能であり、趣旨およびその範囲から逸脱することなくその形態および詳細を様々に変更し得ることは当業者であれば容易に理解される。従って、本発明は、以下の実施の形態の記載内容に限定して解釈されるものではない。
【００２１】
なお本明細書等において、「第１」、「第２」、「第３」という序数詞は、構成要素の混同を避けるために付したものである。従って、構成要素の数を限定するものではない。また、構成要素の順序を限定するものではない。また例えば、本明細書等の実施の形態の一において「第１」に言及された構成要素が、他の実施の形態、あるいは特許請求の範囲において「第２」に言及された構成要素とすることもありうる。また例えば、本明細書等の実施の形態の一において「第１」に言及された構成要素を、他の実施の形態、あるいは特許請求の範囲において省略することもありうる。
【００２２】
なお図面において、同一の要素または同様な機能を有する要素、同一の材質の要素、あるいは同時に形成される要素等には同一の符号を付す場合があり、その繰り返しの説明は省略する場合がある。
【００２３】
なお、本明細書においてニューラルネットワークとは、生物の神経回路網を模し、学習によってニューロンどうしの結合強度を決定し、問題解決能力を持たせるモデル全般を指す。ニューラルネットワークは入力層、中間層（隠れ層ともいう）、出力層を有する。ニューラルネットワークのうち、２層以上の中間層を有するものをディープラーニング（またはディープニューラルネットワーク）という。
【００２４】
また、本明細書において、ニューラルネットワークについて述べる際に、既にある情報からニューロンとニューロンの結合強度（重み係数とも言う）を決定することを「学習」と呼ぶ場合がある。
【００２５】
また、本明細書において、学習によって得られた結合強度を用いてニューラルネットワークを構成し、そこから新たな結論を導くことを「推論」と呼ぶ場合がある。
【００２６】
（実施の形態１）
本実施の形態では、人工ニューラルネットワーク（ＡＮＮ）の機能に基づいて入力されるデータの演算処理を行うためのシステムである、ニューラルネットワークシステムの構成について説明する。
【００２７】
図１（Ａ）は、ニューラルネットワークシステムを説明するためのブロック図である。ニューラルネットワークシステム１０は、複数の集積回路１１によって構成される。集積回路１１は、配線またはネットワークを介して、互いに電気的に接続される。
【００２８】
図１（Ａ）は、複数の集積回路１１の一例として、集積回路１１［１］および集積回路１１［２］を図示している。集積回路１１［１］は、プログラマブルロジックデバイス２０［１］、メモリ部３０［１］および演算部４０［１］を有する。集積回路１１［２］は、プログラマブルロジックデバイス２０［２］、メモリ部３０［２］および演算部４０［２］を有する。
【００２９】
なおプログラマブルロジックデバイス２０［１］、２０［２］は、ＯＳトランジスタを有するＦＰＧＡである。なお、本明細書において、ＯＳトランジスタを有するＦＰＧＡをＯＳ−ＦＰＧＡと呼称する。
【００３０】
ＯＳ‐ＦＰＧＡは、ＳＲＡＭで構成されるＦＰＧＡよりもメモリの面積を小さくすることができる。そのため、コンテキスト切り替え機能を追加しても面積増加が少ない。また、ＯＳ‐ＦＰＧＡはブースティングによりデータやパラメータを高速に伝えることができる。なお、ＯＳ−ＦＰＧＡの詳細は後述する実施の形態４で説明を行う。
【００３１】
プログラマブルロジックデバイス２０［１］は、入出力部を介して他の集積回路（例えば集積回路１１［２］）が有するプログラマブルロジックデバイス（例えばプログラマブルロジックデバイス２０［２］）との接続を切り替える機能を有する。プログラマブルロジックデバイス２０［１］は、回路構成の設定に応じて、異なるデータ処理を行う機能を有する。具体的には、人工ニューラルネットワークでの推論に用いる重み係数（パラメータ）および入出力されるデータ数を切り替えて、推論を実行する。
【００３２】
プログラマブルロジックデバイス２０［２］は、入出力部を介して他の集積回路（例えば集積回路１１［１］）が有するプログラマブルロジックデバイス（例えばプログラマブルロジックデバイス２０［１］）との接続を切り替える機能を有する。プログラマブルロジックデバイス２０［２］は、回路構成の設定に応じて、異なるデータ処理を行う機能を有する。具体的には、人工ニューラルネットワークでの推論に用いる重み係数（パラメータ）および入出力されるデータ数を切り替えて、推論を実行する。
【００３３】
人工ニューラルネットワークとしては、解決したい課題に応じて、ディープニューラルネットネットワーク（ＤＮＮ）、畳み込みニューラルネットワーク（ＣＮＮ）、再帰型ニューラルネットワーク（ＲＮＮ）、自己符号化器、深層ボルツマンマシン（ＤＢＭ）、深層信念ネットワーク（ＤＢＮ）などの演算を実行することができる。
【００３４】
プログラマブルロジックデバイス２０［１］、２０［２］は、データ処理の切り替えに合わせて、入出力部の設定を切り替える機能を有する。具体的には、入出力されるデータ数が入出力部のプログラマブルＩＯの数より多い場合、別の集積回路１１が有するプログラマブルロジックデバイス２０と並列にデータ処理を行うように、入出力部の設定を切り替える機能を有する。
【００３５】
メモリ部３０［１］は、演算部４０［１］で実行するプログラム、およびプログラマブルロジックデバイス２０［１］で用いる重み係数の情報を含むコンフィギュレーションデータを保持する機能を有する。メモリ部３０［１］は、一例として、ＮＯＳＲＡＭ３１［１］およびＤＯＳＲＡＭ３２［１］を有する。ＮＯＳＲＡＭ３１［１］およびＤＯＳＲＡＭ３２［１］はＯＳトランジスタを用いて形成する。
【００３６】
メモリ部３０［２］は、演算部４０［２］で実行するプログラム、およびプログラマブルロジックデバイス２０［２］で用いる重み係数の情報を含むコンフィギュレーションデータを保持する機能を有する。メモリ部３０［２］は、一例として、ＮＯＳＲＡＭ３１［２］およびＤＯＳＲＡＭ３２［２］を有する。ＮＯＳＲＡＭ３１［２］およびＤＯＳＲＡＭ３２［２］はＯＳトランジスタを用いて形成する。
【００３７】
ニューラルネットワークの計算に用いられる重み係数の情報を含むコンフィギュレーションデータは、一旦、メモリ部３０［１］、３０［２］に保持することができる。上記コンフィギュレーションデータは、演算部４０［１］、４０［２］を介して、集積回路１１［１］、１１［２］の外部に設けられたメモリに保持してもよいが、内部に設けられたメモリ部３０［１］、３０［２］の方が、より高速且つ低消費電力に上記パラメータにアクセス（読み出しおよび書き込み）することができる。
【００３８】
なお、ＤＯＳＲＡＭ（登録商標）とは、「Ｄｙｎａｍｉｃ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ＲＡＭ」の略称であり、１Ｔ（トランジスタ）１Ｃ（容量）型のメモリセルを有するＲＡＭを指す。ＤＯＳＲＡＭは、ＯＳトランジスタのオフ電流が低いことを利用したメモリである。
【００３９】
ＤＯＳＲＡＭ３２［１］、３２［２］は、ＯＳトランジスタを用いて形成されたＤＲＡＭである。ＤＯＳＲＡＭ３２［１］、３２［２］は、ＯＳトランジスタを含むメモリセルと、Ｓｉトランジスタを含む読み出し回路部を有する。上記メモリセルと読み出し回路部は、積層された異なる層に設けることができるため、ＤＯＳＲＡＭ３２［１］、３２［２］は、全体の回路面積を小さくすることができる。なお、ＤＯＳＲＡＭの詳細は後述する実施の形態３で説明を行う。
【００４０】
ニューラルネットワークを用いた大規模並列計算は、入力データが１０００を超えることがある。上記入力データをＳＲＡＭに格納する場合、ＳＲＡＭはバス幅や回路面積に制限があり、記憶容量が小さいため、上記入力データを小分けにして格納せざるを得ない。ＤＯＳＲＡＭ３２［１］、３２［２］は、限られた回路面積でも積層することが可能であるため、メモリセルを高集積に配置することが可能である。
【００４１】
また、ＮＯＳＲＡＭ（登録商標）とは「Ｎｏｎｖｏｌａｔｉｌｅ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ＲＡＭ」の略称であり、ゲインセル型（２Ｔ型、３Ｔ型）のメモリセルを有するＲＡＭを指す。ＮＯＳＲＡＭは、ＯＳトランジスタのオフ電流が低いことを利用したメモリである。
【００４２】
ＮＯＳＲＡＭ３１［１］、３１［２］はＯＳトランジスタを用いたメモリである。ＮＯＳＲＡＭ３１は、フラッシュメモリや、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの他の不揮発性メモリと比べて、データを書き込む際の消費電力が小さい。また、フラッシュメモリやＲｅＲＡＭのように、データを書き込む際に素子が劣化することもなく、データの書き込み可能回数に制限が無い。また、フラッシュメモリやＲｅＲＡＭのように、素子が劣化することに伴うセル間のばらつきの問題もない。また、フラッシュメモリやＲｅＲＡＭのような２端子のメモリとは異なり、書き込みおよび読み出しのための回路が複雑にならない。なお、ＮＯＳＲＡＭの詳細は後述する実施の形態３で説明を行う。
【００４３】
また、ＮＯＳＲＡＭ３１［１］、３１［２］は、１ビットの２値データの他に、２ビット以上の多値データを保持することができる。ＮＯＳＲＡＭ３１［１］、３１［２］は多値データを保持することで、１ビット当たりのメモリセル面積を小さくすることができる。
【００４４】
また、ＮＯＳＲＡＭ３１［１］、３１［２］は、デジタルデータの他にアナログデータを保持することができる。ＮＯＳＲＡＭ３１［１］、３１［２］は、アナログデータのまま保持することができるため、Ｄ／Ａ変換回路やＡ／Ｄ変換回路が不要である。そのため、ＮＯＳＲＡＭ３１［１］、３１［２］は周辺回路の面積を小さくすることができる。
【００４５】
演算部４０［１］は、メモリ部３０［１］に保持されたプログラムに基づいて、データ処理を実行する機能を有する。具体的には、入力されるデータをもとに人工ニューラルネットワークでの学習で得られる重み係数の情報を含むコンフィギュレーションデータを見積もり、メモリ部３０［１］に保持する。演算部４０［１］は、一例として、プロセッサ４１［１］およびアナログ演算回路４２［１］を有する。プロセッサ４１［１］としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の他、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がある。
【００４６】
演算部４０［２］は、メモリ部３０［２］に保持されたプログラムに基づいて、データ処理を実行する機能を有する。具体的には、入力されるデータをもとに人工ニューラルネットワークでの学習で得られる重み係数の情報を含むコンフィギュレーションデータを見積もり、メモリ部３０［２］に保持する。演算部４０［２］は、一例として、プロセッサ４１［２］およびアナログ演算回路４２［２］を有する。プロセッサ４１［１］としては、ＣＰＵの他、ＧＰＵがある。
【００４７】
アナログ演算回路４２［１］、４２［２］はＯＳトランジスタを用いて形成する。ＯＳトランジスタを用いたアナログ演算回路４２［１］、４２［２］は、アナログメモリを有し、推定及び学習に必要な積和演算を、低消費電力で実行することが可能になる。なお、ＯＳトランジスタを用いた積和演算回路の詳細は、後述する実施の形態５で説明を行う。
【００４８】
上述した集積回路１１を有するニューラルネットワークシステムは、多数の機能をより有効に機能させるためにソフトウェア処理とハードウェア処理を複合化させることができる。具体的には、演算部でソフトウェア処理、プログラマブルロジックデバイスでハードウェア処理を実行させることができる。
【００４９】
そのため集積回路１１では、条件分岐等のハードウェア処理での実装が困難な複雑な処理をソフトウェア処理で実行させるとともに、ソフトウェア処理では困難な並列処理をハードウェアで実行させることができる。従って、大規模なデータ処理を効率良く実行することができる。集積回路１１を有するニューラルネットワークシステムでは、適材適所で回路を利用することにより、ニューラルネットワークシステムの処理性能の更なる向上を図ることができる。
【００５０】
集積回路１１を構成する各回路は、同じチップ内に混載されているため高速に伝送可能である。加えて、別の集積回路と連動してデータ処理を行うことで、ニューラルネットワークシステムの拡張・縮小を容易に行うことができる。つまり別の集積回路１１の回路リソースを活用して並列のデータ処理を行うことが可能にする。そのため、複数の集積回路１１を並列に接続することで大規模なデータを同時に処理可能といったことができ、大規模データの短時間での処理等を可能にすることができる。
【００５１】
集積回路１１［１］と集積回路１１［２］とを区別しない場合、集積回路１１と呼ぶ。他の要素（プログラマブルロジックデバイス２０、メモリ部３０、演算部４０など））についても同様である。
【００５２】
図１（Ｂ）は、図１（Ａ）で説明した、集積回路１１が有するプログラマブルロジックデバイス２０、メモリ部３０、および演算部４０の各ブロックを図示している。また図１（Ｂ）では、プログラマブルロジックデバイス２０の詳細として、プログラマブルエリア２１にある入出力ブロック２２およびコア２３を図示している。
【００５３】
プログラマブルエリア２１は、複数の入出力ブロック２２およびコア２３を有する。プログラマブルエリア２１は、回路ブロックともいう。プログラマブルロジックデバイス２０は、プログラマブルエリアである回路ブロックを複数有する構成とすることもできる。この場合、複数の回路ブロックごとに異なる機能を実現するためのコンフィギュレーションデータを保持し、プログラマブルロジックデバイス同士の接続状態、およびデータを処理する機能を有せしめることができる。
【００５４】
プログラマブルロジックデバイス２０同士の接続状態、およびデータを処理する機能は、複数組のコンフィギュレーションデータによって設定される。コンフィギュレーションデータは、複数組のコンフィギュレーションメモリに格納される。コンフィギュレーションメモリは、コンテキストに応じて、入出力ブロック２２およびコア２３の設定を行う。この設定を切り替えることで、上述したデータを処理する機能を設定するとともに、コンテキストの切り替えによってデータを処理する機能を瞬時に切り替える、所謂マルチコンテキスト方式を実現可能な構成とすることができる。コア２３はプログラマブルロジックエレメント（ＰＬＥ）およびプログラマブルスイッチ（ＰＲＳ）、入出力ブロック２２はプログラマブルＩＯ（ＰＩＯ）を有する。
【００５５】
集積回路１１では、プログラマブルロジックデバイス２０、メモリ部３０、および演算部４０を１つのダイ（チップ）の上に設けることができる。そのため、ニューラルネットワークシステム１０は、高速且つ低消費電力に、ニューラルネットワークの計算を実行することができる。またプログラマブルロジックデバイス２０、メモリ部３０、および演算部４０は、同じ製造プロセスで作製することができる。そのため、ニューラルネットワークシステム１０は、低コストで作製することができる。
【００５６】
図２（Ａ）は、ニューラルネットワークシステム１０を構成するブロックの他、コントローラ５０を図示している。ニューラルネットワークシステム１０の集積回路１１が有するプログラマブルロジックデバイス２０は、個別の集積回路にある演算部で制御することも可能であるが、コントローラ５０で統合的に制御することもできる。
【００５７】
コントローラ５０は、入力データ（ＤＡＴＡ）に応じて、コンフィギュレーション、コンテキストの切り替え（ＣＯＮＴＥＸＴ）、または使わない集積回路１１へのパワーゲーティング（ＰＧ）等を行うことができる。集積回路１１は、ゲーティング用のスイッチを有していてもよい。コントローラ５０は、集積回路１１のクロックゲーティング等を行う構成としてもよい。コントローラ５０で統合的にニューラルネットワークシステム１０を制御する構成とすることで、システム全体での低消費電力化を図ることができる。
【００５８】
コントローラ５０は、例えば図２（Ｂ）のように各集積回路１１を連動して動作させる。図２（Ｂ）ではコンテキスト０乃至コンテキスト３の４つの回路構成を切り替える場合に、ニューラルネットワークシステム１０の集積回路の状態を模式的に示したブロック図である。
【００５９】
図２（Ｂ）において、集積回路１１＿Ａはプログラマブルロジックデバイス２０、メモリ部３０、および演算部４０等の回路リソースを活用してデータ処理を行う集積回路を表している。また集積回路１１＿Ｂはプログラマブルロジックデバイス２０、メモリ部３０、および演算部４０等の回路リソースを活用しない集積回路を表している。つまり集積回路１１＿Ｂは、積極的にパワーゲーティングあるいはクロックゲーティングをすることで消費電力の低減を図ることができる集積回路である。なお図２（Ｂ）では、ニューラルネットワークシステム１０を構成する集積回路として１６個を図示している。
【００６０】
図２（Ｂ）のコンテキスト０では、６個が集積回路１１＿Ａであり、１０個が集積回路１１＿Ｂである。図２（Ｂ）のコンテキスト１では、８個が集積回路１１＿Ａであり、８個が集積回路１１＿Ｂである。図２（Ｂ）のコンテキスト２では、４個が集積回路１１＿Ａであり、１２個が集積回路１１＿Ｂである。図２（Ｂ）のコンテキスト３では、１６個が集積回路１１＿Ａであり、集積回路１１＿Ｂはない。コンテキストの切り替え、あるいはコンフィギュレーションデータを動的再構成することで図２（Ｂ）の各状態は、互いに切り替えることができる。
【００６１】
図２（Ｂ）に示すようにコンテキストの切り替え、あるいはコンフィギュレーションデータの動的再構成によって集積回路１１＿Ａの個数を選択することで、限られたピン数の入出力部を有するプログラマブルロジックデバイスを有する集積回路において、入力データの並列数の変化に応じた入出力端子数の増減を図ることができる。
【００６２】
例えば図３（Ａ）は、図２（Ｂ）のコンテキスト０の状態に対応する６個の集積回路１１＿Ａが有するプログラマブルエリア２１を図示している。なお図３（Ａ）では、プログラマブルエリア２１の入出力ブロック２２のピン数を１００個としている。つまり、ニューラルネットワークシステム１０では、６００個のピン数を有する入出力ブロック２２としてデータｄ０乃至ｄ５９９を並列で一括して処理することができる。
【００６３】
また図３（Ｂ）は、図２（Ｂ）のコンテキスト１の状態に対応する１０個の集積回路１１＿Ａが有するプログラマブルエリア２１を図示している。なお図３（Ｂ）では、図３（Ａ）と同様に、プログラマブルエリア２１の入出力ブロック２２のピン数を１００個としている。つまり、ニューラルネットワークシステム１０では、１０００個のピン数を有する入出力ブロック２２としてデータｄ０乃至ｄ９９９を並列で一括して処理することができる。
【００６４】
図３（Ａ）、（Ｂ）に例示するように本発明の一態様であるニューラルネットワークシステムでは、コンテキストの切り替えによって集積回路１１＿Ａの個数を選択することができる。そのため、限られたピン数の入出力部を有するプログラマブルロジックデバイスを有する集積回路において、入力データの並列数の変化に応じた入出力部の増減を図ることができる。
【００６５】
なお図３（Ａ）、（Ｂ）では図示していないが、図２（Ｂ）で図示した集積回路１１＿Ｂは、データ処理を担わない回路リソースとなる。集積回路１１＿Ｂは、パワーゲーティング等を適用することで低消費電力化を図ることができる。
【００６６】
なお本発明の一態様であるニューラルネットワークシステムでは、コンテキストの切り替えや動的再構成を活用することで回路動作を継続しながらプログラマブルロジックデバイスあたりのプログラマブルエリア数を増やすことで、回路リソースの増大を図ることができる。つまり入出力ブロック２２のピン数を増やし、入力されるデータの並列数を増やすことができる。
【００６７】
例えば、図４（Ａ）に図示するようにプログラマブルロジックデバイス２０はプログラマブルエリア２１Ａ乃至２１Ｄの４個を有する。複数のプログラマブルエリア２１Ａ乃至２１Ｄを有する構成とすることで、コンテキストの切り替えを入出力ブロック２２のピン数の増加を図ることができる。
【００６８】
なお本発明の一態様であるニューラルネットワークシステムでは、ニューラルネットワークシステムをさらに複数組み合わせることでより巨大なシステムにすることも可能である。
【００６９】
例えば、図４（Ｂ）に図示するようにニューラルネットワークシステム１０は、複数のニューラルネットワークシステム１０で構成される巨大ニューラルネットワークシステム７０に組み込むことができる。当該構成とすることで、ニューラルネットワークシステムのインターフェースを有するプログラマブルロジックデバイス２０の数が増加するため、入出力ブロック２２のピン数の増加を図ることができる。
【００７０】
なお巨大ニューラルネットワークシステム７０において、ニューラルネットワークシステム１０同士は、ネットワークを介して接続される構成としてもよい。なおネットワークは、それぞれに通信モジュールを設け、無線または有線による通信を行う構成とすればよい。通信モジュールは、アンテナを介して通信を行うことができる。例えばＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ（ＷＷＷ）の基盤であるインターネット、イントラネット、エクストラネット、ＰＡＮ（Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＣＡＮ（Ｃａｍｐｕｓ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＧＡＮ（Ｇｌｏｂａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のコンピュータネットワークに各電子装置を接続させ、通信を行うことができる。無線通信を行う場合、通信プロトコル又は通信技術として、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、ＧＳＭ（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ：登録商標）、ＥＤＧＥ（Ｅｎｈａｎｃｅｄ  Ｄａｔａ  Ｒａｔｅｓ  ｆｏｒ  ＧＳＭ  Ｅｖｏｌｕｔｉｏｎ）、ＣＤＭＡ２０００（Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ  ２０００）、Ｗ−ＣＤＭＡ（登録商標）などの通信規格、またはＷｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）等のＩＥＥＥにより通信規格化された仕様を用いることができる。
【００７１】
図４（Ａ）、（Ｂ）の構成とすることで、外部のセンサ等で得られたアナログ信号を別々のニューラルネットワークシステムで処理することができる。例えば、生体情報のように、脳波、脈拍、血圧、体温等といった情報を脳波センサ、脈波センサ、血圧センサ、温度センサといった各種センサで取得し、別々のニューラルネットワークシステムでアナログ信号を処理することができる。別々のニューラルネットワークシステムのそれぞれで信号の処理、または学習を行うことで一つのニューラルネットワークシステムあたりの情報処理量を少なくできる。そのため、より少ない演算量で信号の処理、または学習を行うことができる。その結果、認識精度を高めることができる。それぞれのニューラルネットワークシステムで得られた情報から、複雑に変化する生体情報の変化を瞬時に統合的に把握することができるといったことが期待できる。
【００７２】
図５は、ニューラルネットワークシステム１０の動作を説明するためのフローチャートである。
【００７３】
ニューラルネットワークシステム１０の動作は、例えば、コンフィギュレーション動作（初期化、リコンフィギュレーション含む）、学習動作、推定動作で構成される。
【００７４】
なお以下の動作の説明において、プログラマブルロジックデバイス２０の回路構成を切り替える際、コンフィギュレーションデータを更新する動的再構成を一例として挙げて説明する。プログラマブルロジックデバイス２０が複数のプログラマブルエリアを有する場合、動的再構成の他、マルチコンテキスト方式によるコンテキストの切り替えと組み合わせて回路構成の切り替えを行うことも可能である。
【００７５】
始めに初期化動作（ステップＳ１０１）を行う。初期化動作において、各集積回路は、システム外部のコントローラ６０等よりコンフィギュレーションデータや機械学習に用いる重み係数の初期値をメモリ部３０に書き込む動作を行う。重み係数の初期値は、機械学習によって得られた値、あるいは乱数等によって与えられる。
【００７６】
次いで、コンフィギュレーション動作（ステップＳ１０２）を行う。各集積回路は、演算部４０の制御でメモリ部３０からコンフィギュレーションデータを読み出し、プログラマブルロジックデバイス２０のコンフィギュレーション動作を実行する。コンフィギュレーション実行完了後、プログラマブルロジックデバイスがコンフィギュレーションデータに基づいた回路構成となる。このコンフィギュレーション動作によって、集積回路間でのプログラマブルロジックデバイス２０を介した相互接続による回路網が構築される。
【００７７】
次いで学習データの有無（ステップＳ１０３）に応じて、学習動作または推定動作の判定が行われる。学習動作に移行するフラグ信号は、外部からニューラルネットワークシステム１０への入力信号、コンフィギュレーション可能なプログラマブルロジックデバイス２０の出力信号、演算部４０の学習プログラム起動による出力信号等、で供給可能である。
【００７８】
学習データがある場合、学習動作を行うためのリコンフィギュレーション動作（ステップＳ１０４）を行う。演算部４０の制御でメモリ部３０からコンフィギュレーションデータを読み出し、プログラマブルロジックデバイス２０のリコンフィギュレーション動作を実行する。リコンフィギュレーション実行完了後、プログラマブルロジックデバイスがコンフィギュレーションデータに基づいた回路構成となる。このコンフィギュレーション動作によって、演算部４０に学習データが入力される回路網が構築される。
【００７９】
次いで学習動作（ステップＳ１０５）を行う。学習動作は、演算部４０におけるソフトウェア処理によって行う。各集積回路は、演算部４０の制御でメモリ部３０から学習動作に必要なプログラム、および重み係数の初期値を読み出し、学習データに応じた重み係数を演算する。
【００８０】
次いで学習終了（ステップＳ１０６）となる。学習終了は、学習データの停止等によって移行する。
【００８１】
次いで学習データ保存（ステップＳ１０７）を行う。演算部４０は、学習によって演算部４０で得られた重み係数をメモリ部３０に保存する。
【００８２】
次いで別の学習データの有無（ステップＳ１０８）に応じて、学習動作の継続の判定が行われる。学習動作に移行するフラグ信号は、外部からニューラルネットワークシステム１０への入力信号、コンフィギュレーション可能なプログラマブルロジックデバイス２０の出力信号、演算部４０の学習プログラム起動による出力信号等、で供給可能である。
【００８３】
別の学習データがある場合、学習動作を行うためのリコンフィギュレーション動作（ステップＳ１０９）を行う。演算部４０の制御でメモリ部３０からコンフィギュレーションデータを読み出し、プログラマブルロジックデバイス２０のリコンフィギュレーション動作を実行する。リコンフィギュレーション実行完了後、プログラマブルロジックデバイスがコンフィギュレーションデータに基づいた回路構成となる。このコンフィギュレーション動作によって、演算部４０に学習データが入力される回路網が構築される。
【００８４】
次いで学習動作（ステップＳ１１０）を行う。学習動作は、演算部４０におけるソフトウェア処理によって行う。各集積回路は、演算部４０の制御でメモリ部３０から学習動作に必要なプログラム、および重み係数の初期値を読み出し、学習データに応じた重み係数を演算する。
【００８５】
次いで学習終了（ステップＳ１１１）となる。学習終了は、学習データの停止等によって移行する。
【００８６】
次いで学習データ保存（ステップＳ１１２）を行う。演算部４０は、学習によって演算部４０で得られた重み係数をメモリ部３０に保持させる。
【００８７】
以降、ステップＳ１０３乃至ステップＳ１１２を繰り返すことで、学習データに応じた複数の重み係数を取得することが可能である。
【００８８】
次いで推定動作を説明する。推定動作を行うためのリコンフィギュレーション動作（ステップＳ１１３）を行う。各集積回路は、演算部４０の制御でメモリ部３０から学習動作に必要なプログラム、および学習によって見積もられた重み係数を読み出し、プログラマブルロジックデバイス２０のリコンフィギュレーション動作を実行する。リコンフィギュレーション実行完了後、プログラマブルロジックデバイスがコンフィギュレーションデータに基づいた回路構成となる。このリコンフィギュレーション動作によって、プログラマブルロジックデバイス２０に推定データが入力される回路網が構築される。
【００８９】
次いで推定動作（ステップＳ１１４）を行う。推定動作は、プログラマブルロジックデバイス２０におけるハードウェア処理によって行う。各集積回路は、プログラマブルロジックデバイス２０に設定された重み係数の情報を含むコンフィギュレーションデータに応じて、推定データから予想される出力データを出力する。
【００９０】
次いで別の推定データの有無（ステップＳ１１５）に応じて、推定動作の継続の判定が行われる。推定動作に移行するフラグ信号は、外部からニューラルネットワークシステム１０への入力信号、コンフィギュレーション可能なプログラマブルロジックデバイス２０の出力信号等、で供給可能である。別の推定データがない場合、終了する。
【００９１】
別の推定データがある場合、別の推定動作を行うためのリコンフィギュレーション動作（ステップＳ１１６）を行う。各集積回路は、演算部４０の制御でメモリ部３０から学習動作に必要なプログラム、および学習によって見積もられた重み係数を読み出し、プログラマブルロジックデバイス２０のリコンフィギュレーション動作を実行する。リコンフィギュレーション実行完了後、プログラマブルロジックデバイスがコンフィギュレーションデータに基づいた回路構成となる。このリコンフィギュレーション動作によって、プログラマブルロジックデバイス２０に推定データが入力される回路網が構築される。
【００９２】
次いで推定動作（ステップＳ１１７）を行う。推定動作は、プログラマブルロジックデバイス２０におけるハードウェア処理によって行う。各集積回路は、プログラマブルロジックデバイス２０に設定された重み係数の情報を含むコンフィギュレーションデータに応じて、推定データから予想される出力データを出力する。
【００９３】
次いで別の推定データの有無（ステップＳ１１８）に応じて、推定動作の継続の判定が行われる。推定動作に移行するフラグ信号は、外部からニューラルネットワークシステム１０への入力信号、コンフィギュレーション可能なプログラマブルロジックデバイス２０の出力信号等、で供給可能である。別の推定データがない場合、終了する。
【００９４】
以降、ステップＳ１１３乃至ステップＳ１１８を繰り返すことで、推定データから予想される出力データを取得することが可能である。
【００９５】
図５で説明したステップＳ１０３乃至ステップＳ１１２で行う学習データに応じた複数の重み係数を取得する動作、ステップＳ１１３乃至ステップＳ１１８で行う推定データから予想される出力データを取得する動作は、図６および図７に示すブロック図で模式的に説明することができる。
【００９６】
図６（Ａ）、（Ｂ）では、集積回路１１を図示している。集積回路１１が有する各構成は、図１（Ｂ）と同様である。
【００９７】
図６（Ａ）では、ステップＳ１０３乃至ステップＳ１１２で行う学習データに応じた複数の重み係数を取得する動作を太線破線の矢印７１乃至７２で図示している。
【００９８】
図６（Ａ）において矢印７１は、コンフィギュレーション動作（リコンフィギュレーション動作）に相当する。つまり、図５で説明したステップＳ１０４、Ｓ１０８に相当する動作を表している。コンフィギュレーション動作によって、所定の集積回路１１内の演算部４０にデータが入力されるようプログラマブルロジックデバイス２０による回路網が構築される。
【００９９】
図６（Ａ）において矢印７２は、学習動作に相当する。つまり、図５で説明したステップＳ１０５乃至Ｓ１０７、Ｓ１１０乃至Ｓ１１２に相当する動作を表している。学習動作によって、所定の集積回路１１内の演算部４０でソフトウェア処理による演算処理を行い、プログラマブルロジックデバイス２０による推定動作を行うための重み係数を取得する。演算部４０で得られた重み係数は、メモリ部３０で保持する。
【０１００】
図６（Ｂ）では、ステップＳ１１３乃至ステップＳ１１８で行う推定データに応じた出力データを出力する動作を太線破線の矢印７４乃至７５で図示している。
【０１０１】
図６（Ｂ）において矢印７４は、コンフィギュレーション動作（リコンフィギュレーション動作）に相当する。つまり、図５で説明したステップＳ１１３、Ｓ１１６に相当する動作を表している。コンフィギュレーション動作によって、所定の集積回路１１内のプログラマブルロジックデバイス２０がメモリ部３０に保持された重み係数の情報を含むコンフィギュレーションデータに応じて設定されるよう回路網が構築される。
【０１０２】
図６（Ｂ）において矢印７５は、推定動作に相当する。つまり、図５で説明したステップＳ１１４、Ｓ１１７に相当する動作を表している。推定動作によって、所定の集積回路１１内のプログラマブルロジックデバイス２０でハードウェア処理による演算処理を行う。得られた出力信号は、外部に出力される。
【０１０３】
図７（Ａ）、（Ｂ）では、図６（Ａ）、（Ｂ）で模式的に説明した動作を、複数の集積回路として集積回路１１［１］、１１［２］を図示している。集積回路１１［１］、１１［２］が有する各構成は、図１（Ａ）と同様である。
【０１０４】
図７（Ａ）において矢印７１［１］、７１［２］は、コンフィギュレーション動作（リコンフィギュレーション動作）に相当する。コンフィギュレーション動作によって、複数の集積回路１１［１］、１１［２］内の演算部４０［１］、４０［２］にデータが入力されるようプログラマブルロジックデバイス２０［１］、２０［２］による回路網が構築される。
【０１０５】
図７（Ａ）において矢印７２［１］、７２［２］は、学習動作に相当する。学習動作によって、複数の集積回路１１［１］、１１［２］の演算部４０［１］、４０［２］でソフトウェア処理による演算処理を行い、プログラマブルロジックデバイス２０［１］、２０［２］による推定動作を行うための重み係数を取得する。演算部４０［１］、４０［２］で得られた重み係数は、メモリ部３０［１］、３０［２］で保持する。
【０１０６】
図７（Ｂ）において矢印７４［１］、７４［２］は、コンフィギュレーション動作（リコンフィギュレーション動作）に相当する。コンフィギュレーション動作によって、所定の集積回路１１［１］、１１［２］内のプログラマブルロジックデバイス２０［１］、２０［２］がメモリ部３０［１］、３０［２］に保持された重み係数の情報を含むコンフィギュレーションデータに応じて設定されるよう回路網が構築される。
【０１０７】
図７（Ｂ）において矢印７５［１］、７５［２］は、推定動作に相当する。推定動作によって、所定の集積回路１１［１］、１１［２］内のプログラマブルロジックデバイス２０［１］、２０［２］でハードウェア処理による演算処理を行う。得られた出力信号は、外部に出力される。
【０１０８】
以上のように、複数の集積回路１１を有するニューラルネットワークシステムは、多数の機能をより有効に機能させるためにソフトウェア処理とハードウェア処理を複合化させることができる。具体的には、演算部でソフトウェア処理、プログラマブルロジックデバイスでハードウェア処理を実行させることができる。
【０１０９】
そのため集積回路１１では、条件分岐等のハードウェア処理での実装が困難な複雑な処理をソフトウェア処理で実行させるとともに、ソフトウェア処理では困難な並列処理をハードウェアで実行させることができる。従って、大規模なデータ処理を実行することができる。集積回路１１を有するニューラルネットワークシステムでは、適材適所で回路を利用することにより、ニューラルネットワークシステムの処理性能の更なる向上を図ることができる。
【０１１０】
集積回路１１を構成する各回路は、同じチップ内に混載されているため高速に伝送可能である。加えて、別の集積回路と連動してデータ処理を行うことで、ニューラルネットワークシステムの拡張・縮小を容易に行うことができる。つまり別の集積回路１１の回路リソースを活用して並列のデータ処理を行うことが可能にする。そのため、複数の集積回路１１を並列に接続することで大規模なデータを同時に処理可能といったことができ、大規模データの短時間での処理等を可能にすることができる。
【０１１１】
以上、本実施の形態に示す構成、方法などは、他の実施の形態に示す構成、方法などと適宜組み合わせて用いることができる。
【０１１２】
（実施の形態２）
本実施の形態は、上記実施の形態に示すニューラルネットワークシステムが組み込まれたＩＣの一例を示す。
【０１１３】
上記実施の形態に示すニューラルネットワークシステムは、ＣＰＵ等のＳｉトランジスタでなるプロセッサとＯＳトランジスタを用いたアナログ演算回路とを有する演算部と、ＯＳ−ＦＰＧＡと、ＤＯＳＲＡＭ、ＮＯＳＲＡＭを有するメモリ部を、１のダイに集積することができる。
【０１１４】
図８に、ニューラルネットワークシステムを組み込んだＩＣの一例を示す。図８に示すニューラルネットワークシステムＩＣ７０００は、リード７００１及び回路部７００３を有する。回路部７００３には、本実施の形態で示した各種の回路が１のダイに設けられている。回路部７００３は積層構造をもち、Ｓｉトランジスタ層７０３１、配線層７０３２、ＯＳトランジスタ層７０３３に大別される。ＯＳトランジスタ層７０３３をＳｉトランジスタ層７０３１に積層して設けることができるため、ニューラルネットワークシステムＩＣ７０００の小型化が容易である。
【０１１５】
図８では、ニューラルネットワークシステムＩＣ７０００のパッケージにＱＦＰ（Ｑｕａｄ  Ｆｌａｔ  Ｐａｃｋａｇｅ）を適用しているが、パッケージの態様はこれに限定されない。
【０１１６】
ＣＰＵ等のＳｉトランジスタでなるプロセッサとＯＳトランジスタを用いたアナログ演算回路とを有する演算部と、ＯＳ−ＦＰＧＡと、ＤＯＳＲＡＭ、ＮＯＳＲＡＭを有するメモリ部は、全て、Ｓｉトランジスタ層７０３１、配線層７０３２およびＯＳトランジスタ層７０３３に形成することができる。すなわち、上記ニューラルネットワークシステムを構成する素子は、同一の製造プロセスで形成することが可能である。そのため、本実施の形態に示すＩＣは、構成する素子が増えても製造プロセスを増やす必要がなく、上記ニューラルネットワークシステムを低コストで組み込むことができる。
【０１１７】
（実施の形態３）
本実施の形態では、上記実施の形態に示すニューラルネットワークシステムに搭載可能なＯＳメモリについて説明する。本実施の形態では、ＯＳメモリの一例として、ＤＯＳＲＡＭおよびＮＯＳＲＡＭについて説明する。
【０１１８】
＜＜ＤＯＳＲＡＭ１４００＞＞
図９（Ａ）−図９（Ｃ）を参照して、ＤＯＳＲＡＭについて説明する。
【０１１９】
図９（Ａ）に示すＤＯＳＲＡＭ１４００は、コントローラ１４０５、行回路１４１０、列回路１４１５、ＭＣ−ＳＡアレイ１４２０を有する。行回路１４１０はデコーダ１４１１、ワード線ドライバ１４１２、列セレクタ１４１３、センスアンプドライバ１４１４を有する。列回路１４１５はグローバルセンスアンプアレイ１４１６、入出力回路１４１７を有する。グローバルセンスアンプアレイ１４１６は複数のグローバルセンスアンプ１４４７を有する。ＭＣ−ＳＡアレイ１４２０はメモリセルアレイ１４２２、センスアンプアレイ１４２３、グローバルビット線ＧＢＬＬ、ＧＢＬＲを有する。
【０１２０】
（ＭＣ−ＳＡアレイ１４２０）
ＭＣ−ＳＡアレイ１４２０は、メモリセルアレイ１４２２をセンスアンプアレイ１４２３上に積層した積層構造をもつ。グローバルビット線ＧＢＬＬ、ＧＢＬＲはメモリセルアレイ１４２２上に積層されている。ＤＯＳＲＡＭ１４００では、ビット線の構造に、ローカルビット線とグローバルビット線とで階層化された階層ビット線構造が採用されている。
【０１２１】
メモリセルアレイ１４２２は、Ｎ個（Ｎは２以上の整数）のローカルメモリセルアレイ１４２５＜０＞―４２５＜Ｎ−１＞を有する。図９（Ｂ）に示すように、ローカルメモリセルアレイ１４２５は、複数のメモリセル１４４５、複数のワード線ＷＬ、複数のビット線ＢＬＬ、ＢＬＲを有する。図９（Ｂ）の例では、ローカルメモリセルアレイ１４２５の構造はオープンビット線型であるが、フォールデッドビット線型であってもよい。
【０１２２】
図９（Ａ）に示すメモリセル１４４５は、ＯＳトランジスタＭＯ４５、容量素子Ｃ４５を有する。ＯＳトランジスタＭＯ４５は容量素子Ｃ４５の充放電を制御する機能をもつ。ＯＳトランジスタＭＯ４５のゲートはワード線に電気的に接続され、バックゲートは配線ＢＧＬに電気的に接続され、第１端子はビット線ＢＬＬまたはＢＬＲに電気的に接続され、第２端子は容量素子Ｃ４５の第１端子に電気的に接続されている。容量素子Ｃ４５の第２端子は配線ＰＣＬに電気的に接続されている。配線ＣＳＬ、ＢＧＬは電圧を供給するための電源線である。
【０１２３】
配線ＢＧＬの電圧によって、ＯＳトランジスタＭＯ４５の閾値電圧を変更することができる。例えば、端子Ｂ２の電圧は固定電圧（例えば、負の定電圧）であってもよいし、ＤＯＳＲＡＭ１４００の動作に応じて、端子Ｂ２の電圧を変化させてもよい。
【０１２４】
ＯＳトランジスタＭＯ４５のバックゲートをＯＳトランジスタＭＯ４５のゲート、ソース、またはドレインに電気的に接続してもよい。あるいは、ＯＳトランジスタＭＯ４５にバックゲートを設けなくてもよい。
【０１２５】
センスアンプアレイ１４２３は、Ｎ個のローカルセンスアンプアレイ１４２６＜０＞―４２６＜Ｎ−１＞を有する。ローカルセンスアンプアレイ１４２６は、１のスイッチアレイ１４４４、複数のセンスアンプ１４４６を有する。センスアンプ１４４６には、ビット線対が電気的に接続されている。センスアンプ１４４６は、ビット線対をプリチャージする機能、ビット線対の電圧差を増幅する機能、この電圧差を保持する機能を有する。スイッチアレイ１４４４は、ビット線対を選択し、選択したビット線対とグローバルビット線対と間を導通状態にする機能を有する。
【０１２６】
ここで、ビット線対とは、センスアンプによって、同時に比較される２本のビット線のことをいう。グローバルビット線対とは、グローバルセンスアンプによって、同時に比較される２本のグローバルビット線のことをいう。ビット線対を一対のビット線と呼ぶことができ、グローバルビット線対を一対のグローバルビット線と呼ぶことができる。ここでは、ビット線ＢＬＬとビット線ＢＬＲが１組のビット線対を成す。グローバルビット線ＧＢＬＬとグローバルビット線ＧＢＬＲとが１組のグローバルビット線対をなす。以下、ビット線対（ＢＬＬ，ＢＬＲ）、グローバルビット線対（ＢＬＬ，ＢＬＲ）とも表す。
【０１２７】
（コントローラ１４０５）
コントローラ１４０５は、ＤＯＳＲＡＭ１４００の動作全般を制御する機能を有する。コントローラ１４０５は、外部からの入力されるコマンド信号を論理演算して、動作モードを決定する機能、決定した動作モードが実行されるように、行回路１４１０、列回路１４１５の制御信号を生成する機能、外部から入力されるアドレス信号を保持する機能、内部アドレス信号を生成する機能を有する。
【０１２８】
（行回路１４１０）
行回路１４１０は、ＭＣ−ＳＡアレイ１４２０を駆動する機能を有する。デコーダ１４１１はアドレス信号をデコードする機能を有する。ワード線ドライバ１４１２は、アクセス対象行のワード線ＷＬを選択する選択信号を生成する。
【０１２９】
列セレクタ１４１３、センスアンプドライバ１４１４はセンスアンプアレイ１４２３を駆動するための回路である。列セレクタ１４１３は、アクセス対象列のビット線を選択するための選択信号を生成する機能をもつ。列セレクタ１４１３の選択信号によって、各ローカルセンスアンプアレイ１４２６のスイッチアレイ１４４４が制御される。センスアンプドライバ１４１４の制御信号によって、複数のローカルセンスアンプアレイ１４２６は独立して駆動される。
【０１３０】
（列回路１４１５）
列回路１４１５は、データ信号ＷＤＡ［３１：０］の入力を制御する機能、データ信号ＲＤＡ［３１：０］の出力を制御する機能を有する。データ信号ＷＤＡ［３１：０］は書き込みデータ信号であり、データ信号ＲＤＡ［３１：０］は読み出しデータ信号である。
【０１３１】
グローバルセンスアンプ１４４７はグローバルビット線対（ＧＢＬＬ，ＧＢＬＲ）に電気的に接続されている。グローバルセンスアンプ１４４７はグローバルビット線対（ＧＢＬＬ，ＧＢＬＲ）間の電圧差を増幅する機能、この電圧差を保持する機能を有する。グローバルビット線対（ＧＢＬＬ，ＧＢＬＲ）へのデータの書き込み、および読み出しは、入出力回路１４１７によって行われる。
【０１３２】
ＤＯＳＲＡＭ１４００の書き込み動作の概要を説明する。入出力回路１４１７によって、データがグローバルビット線対に書き込まれる。グローバルビット線対のデータは、グローバルセンスアンプアレイ１４１６によって保持される。アドレスが指定するローカルセンスアンプアレイ１４２６のスイッチアレイ１４４４によって、グローバルビット線対のデータが、対象列のビット線対に書き込まれる。ローカルセンスアンプアレイ１４２６は、書き込まれたデータを増幅し、保持する。指定されたローカルメモリセルアレイ１４２５において、行回路１４１０によって、対象行のワード線ＷＬが選択され、選択行のメモリセル１４４５にローカルセンスアンプアレイ１４２６の保持データが書き込まれる。
【０１３３】
ＤＯＳＲＡＭ１４００の読み出し動作の概要を説明する。アドレス信号によって、ローカルメモリセルアレイ１４２５の１行が指定される。指定されたローカルメモリセルアレイ１４２５において、対象行のワード線ＷＬが選択状態となり、メモリセル１４４５のデータがビット線に書き込まれる。ローカルセンスアンプアレイ１４２６によって、各列のビット線対の電圧差がデータとして検出され、かつ保持される。スイッチアレイ１４４４によって、ローカルセンスアンプアレイ１４２６の保持データの内、アドレスが指定する列のデータが、グローバルビット線対に書き込まれる。グローバルセンスアンプアレイ１４１６は、グローバルビット線対のデータを検出し、保持する。グローバルセンスアンプアレイ１４１６の保持データは入出力回路１４１７に出力される。以上で、読み出し動作が完了する。
【０１３４】
容量素子Ｃ４５の充放電によってデータを書き換えるため、ＤＯＳＲＡＭ１４００は原理的には書き換え回数に制約はなく、かつ、低エネルギーで、データの書き込みおよび読み出しが可能である。また、メモリセル１４４５の回路構成が単純であるため、大容量化が容易である。よって、ＤＯＳＲＡＭ１４００は大容量のデータを高頻度で書き換えるメモリ装置、例えば、画像処理に利用されるフレームメモリに好適である。
【０１３５】
ＯＳトランジスタＭＯ４５はＯＳトランジスタである。ＯＳトランジスタはオフ電流が極めて小さいため、容量素子Ｃ４５から電荷がリークすることを抑えることができるので、ＤＯＳＲＡＭ１４００は保持時間がＤＲＡＭに比べて非常に長いため、リフレッシュレート頻度を低減できる。従って、ＤＯＳＲＡＭ１４００はフレッシュ動作に要する電力を削減できる。
【０１３６】
ＭＣ−ＳＡアレイ１４２０が積層構造であることよって、ローカルセンスアンプアレイ１４２６の長さと同程度の長さにビット線を短くすることができる。ビット線を短くすることで、ビット線容量が小さくなり、メモリセル１４４５の保持容量を低減することができる。また、ローカルセンスアンプアレイ１４２６にスイッチアレイ１４４４を設けることで、長いビット線の本数を減らすことができる。以上の理由から、ＤＯＳＲＡＭ１４００のアクセス時に駆動する負荷が低減される。
【０１３７】
以上のことから、ＤＯＳＲＡＭ１４００を上記実施の形態に示すＤＯＳＲＡＭ３２に用いることで、ニューラルネットワークシステムの消費電力を低減することができる。
【０１３８】
＜＜ＮＯＳＲＡＭ＞＞
図１０および図１１を参照してＮＯＳＲＡＭについて説明する。ここでは、１のメモリセルで多値データを記憶する多値ＮＯＳＲＡＭについて説明する。
【０１３９】
図１０に示すＮＯＳＲＡＭ１６００は、メモリセルアレイ１６１０、コントローラ１６４０、行ドライバ１６５０、列ドライバ１６６０、出力ドライバ１６７０を有する。
【０１４０】
メモリセルアレイ１６１０は複数のメモリセル１６１１、複数のワード線ＷＷＬ、ＲＷＬ、ビット線ＢＬ、ソース線ＳＬを有する。ワード線ＷＷＬは書き込みワード線であり、ワード線ＲＷＬは読み出しワード線である。ＮＯＳＲＡＭ１６００では、１のメモリセル１６１１で３ビット（８値）のデータを記憶する。
【０１４１】
コントローラ１６４０は、ＮＯＳＲＡＭ１６００全体を統括的に制御し、データＷＤＡ［３１：０］の書き込み、データＲＤＡ［３１：０］の読み出しを行う。コントローラ１６４０は、外部からのコマンド信号（例えば、チップイネーブル信号、書き込みイネーブル信号など）を処理して、行ドライバ１６５０、列ドライバ１６６０および出力ドライバ１６７０の制御信号を生成する。
【０１４２】
行ドライバ１６５０は、アクセスする行を選択する機能を有する。行ドライバ１６５０は、行デコーダ１６５１、およびワード線ドライバ１６５２を有する。
【０１４３】
列ドライバ１６６０は、ソース線ＳＬおよびビット線ＢＬを駆動する。列ドライバ１６６０は、列デコーダ１６６１、書き込みドライバ１６６２、ＤＡＣ（デジタル‐アナログ変換回路）１６６３を有する。
【０１４４】
ＤＡＣ１６６３は３ビットのデジタルデータをアナログ電圧に変換する。ＤＡＣ１６６３は３２ビットのデータＷＤＡ［３１：０］を３ビットごとに、アナログ電圧に変換する。
【０１４５】
書き込みドライバ１６６２は、ソース線ＳＬをプリチャージする機能、ソース線ＳＬを電気的に浮遊状態にする機能、ソース線ＳＬを選択する機能、選択されたソース線ＳＬにＤＡＣ１６６３で生成した書き込み電圧を入力する機能、ビット線ＢＬをプリチャージする機能、ビット線ＢＬを電気的に浮遊状態にする機能等を有する。
【０１４６】
出力ドライバ１６７０は、セレクタ１６７１、ＡＤＣ（アナログ‐デジタル変換回路）１６７２、出力バッファ１６７３を有する。セレクタ１６７１は、アクセスするソース線ＳＬを選択し、選択されたソース線ＳＬの電圧をＡＤＣ１６７２に送信する。ＡＤＣ１６７２は、アナログ電圧を３ビットのデジタルデータに変換する機能を持つ。ソース線ＳＬの電圧はＡＤＣ１６７２において、３ビットのデータに変換され、出力バッファ１６７３はＡＤＣ１６７２から出力されるデータを保持する。
【０１４７】
＜メモリセル＞
図１１（Ａ）はメモリセル１６１１の構成例を示す回路図である。メモリセル１６１１は２Ｔ型のゲインセルであり、メモリセル１６１はワード線ＷＷＬ、ＲＷＬ、ビット線ＢＬ、ソース線ＳＬ、配線ＢＧＬに電気的に接続されている。メモリセル１６１１は、ノードＳＮ、ＯＳトランジスタＭＯ６１、トランジスタＭＰ６１、容量素子Ｃ６１を有する。ＯＳトランジスタＭＯ６１は書き込みトランジスタである。トランジスタＭＰ６１は読み出しトランジスタであり、例えばｐチャネル型Ｓｉトランジスタで構成される。容量素子Ｃ６１はノードＳＮの電圧を保持するための保持容量である。ノードＳＮはデータの保持ノードであり、ここではトランジスタＭＰ６１のゲートに相当する。
【０１４８】
メモリセル１６１１の書き込みトランジスタがＯＳトランジスタＭＯ６１で構成されているため、ＮＯＳＲＡＭ１６００は長時間データを保持することが可能である。
【０１４９】
図１１（Ａ）の例では、ビット線は、書き込みと読み出しで共通のビット線であるが、図１１（Ｂ）に示すように、書き込みビット線ＷＢＬと、読み出しビット線ＲＢＬとを設けてもよい。
【０１５０】
図１１（Ｃ）−図１１（Ｅ）にメモリセルの他の構成例を示す。図１１（Ｃ）−図１１（Ｅ）には、書き込み用ビット線と読み出し用ビット線を設けた例を示しているが、図１１（Ａ）のように書き込みと読み出しで共有されるビット線を設けてもよい。
【０１５１】
図１１（Ｃ）に示すメモリセル１６１２は、メモリセル１６１１の変形例であり、読み出しトランジスタをｎチャネル型トランジスタ（ＭＮ６１）に変更したものである。トランジスタＭＮ６１はＯＳトランジスタであってもよいし、Ｓｉトランジスタであってもよい。
【０１５２】
メモリセル１６１１、１６１２において、ＯＳトランジスタＭＯ６１はバックゲートの無いＯＳトランジスタであってもよい。
【０１５３】
図１１（Ｄ）に示すメモリセル１６１３は、３Ｔ型ゲインセルであり、ワード線ＷＷＬ、ＲＷＬ、ビット線ＷＢＬ、ＲＢＬ、ソース線ＳＬ、配線ＢＧＬ、ＰＣＬに電気的に接続されている。メモリセル１６１３は、ノードＳＮ、ＯＳトランジスタＭＯ６２、トランジスタＭＰ６２、トランジスタＭＰ６３、容量素子Ｃ６２を有する。ＯＳトランジスタＭＯ６２は書き込みトランジスタである。トランジスタＭＰ６２は読み出しトランジスタであり、トランジスタＭＰ６３は選択トランジスタである。
【０１５４】
図１１（Ｅ）に示すメモリセル１６１４は、メモリセル１６１３の変形例であり、読み出しトランジスタおよび選択トランジスタをｎチャネル型トランジスタ（ＭＮ６２、ＭＮ６３）に変更したものである。トランジスタＭＮ６２、ＭＮ６３はＯＳトランジスタであってもよいし、Ｓｉトランジスタであってもよい。
【０１５５】
メモリセル１６１１−１６１４に設けられるＯＳトランジスタは、バックゲートの無いトランジスタでもよいし、バックゲートが有るトランジスタであってもよい。
【０１５６】
容量素子Ｃ６１の充放電によってデータを書き換えるため、ＮＯＳＲＡＭ１６００は原理的には書き換え回数に制約はなく、かつ、低エネルギーで、データの書き込みおよび読み出しが可能である。また、長時間データを保持することが可能であるので、リフレッシュ頻度を低減できる。よって、ＤＯＳＲＡＭ１４００は大容量のデータを高頻度で書き換えるメモリ装置、例えば、画像処理に利用されるフレームメモリに好適である。
【０１５７】
ＮＯＳＲＡＭ１６００を上記実施の形態に示すＮＯＳＲＡＭ３１に用いることで、ニューラルネットワークシステムの消費電力を低減することができる。
【０１５８】
（実施の形態４）
本実施の形態では、上実施の形態に示すニューラルネットワークシステムに搭載可能なＯＳ−ＦＰＧＡについて、図１２乃至図１６を用いて説明を行う。
【０１５９】
＜ＯＳ−ＦＰＧＡの構成例＞
図１２はＯＳ−ＦＰＧＡのブロック図である。ＯＳ−ＦＰＧＡ１００は、コントローラ１１０、および回路ブロック１０１Ａ乃至１０１Ｄを有する。図１２では回路ブロックとして４つを例示している。回路ブロック１０１Ａ乃至１０１Ｄは、それぞれマルチコンテキスト方式を実現できるＯＳ−ＦＰＧＡとして機能する。
【０１６０】
回路ブロック１０１Ａ乃至１０１Ｄは、それぞれ、プログラマブルエリア１１１、ワードドライバ１１２、データドライバ１１３を有する。プログラマブルエリア１１１は、入出力ブロック（以下、ＩＯＢ１１７）、コア１１８を有する。プログラマブルエリア１１１は、回路ブロック１０１Ａ乃至１０１Ｄごとに異なる機能を実現するためのコンフィギュレーションデータを記憶し、データを処理する機能を有する。
【０１６１】
データを処理する機能は、複数組のコンフィギュレーションデータによって設定される。コンフィギュレーションデータは、複数組のコンフィギュレーションメモリに格納される。コンフィギュレーションメモリは、コンテキストに応じて、プログラマブルロジックエレメント（ＰＬＥ）およびプログラマブルスイッチ（ＰＲＳ）、プログラマブルＩＯ（ＰＩＯ）の設定を行う。この設定を切り替えることで、上述したデータを処理する機能を設定するとともに、コンテキストの切り替えによってデータを処理する機能を瞬時に切り替える、所謂マルチコンテキスト方式を実現可能な構成とすることができる。回路ブロック１０１Ａ乃至１０１Ｄは、動的再構成が可能である。コンテキストの切り替えは、コントローラ１１０によって制御される。
【０１６２】
ＯＳ−ＦＰＧＡ１００では、複数の機能のデータ処理を実現できるＦＰＧＡとして機能する回路ブロック１０１Ａ乃至１０１Ｄにおいて、複数の機能によりデータの処理を行うための設定を、コンテキストの切り替えと、コンフィギュレーションデータを動的に書き換える所謂動的再構成とによって、次々と切り替えていく構成とすることができる。当該構成とすることで、連続する異なるデータ処理を、設定を切り替えてデータの入出力を繰り返すことで一つのデータ処理装置で実現できる。そのため、深層学習やディープラーニングといった人工ニューラルネットワークの機能をコンフィギュレーションする場合に、回路の実装規模を縮小することができる。
【０１６３】
図１３（Ａ）は、プログラマブルエリア１１１の構成例を説明するための図である。プログラマブルエリア１１１は、ＩＯＢ１１７、コア１１８を有する。ＩＯＢ１１７は、プログラマブル入出力回路（ＰＩＯ）を有する。コア１１８は、複数のロジックアレイブロック（以下、ＬＡＢ１２０）および複数のスイッチアレイブロック（以下、ＳＡＢ１３０）で構成される。
【０１６４】
図１３（Ｂ）は、ＬＡＢ１２０の構成例を説明するための図である。図１３（Ｂ）に示すＬＡＢ１２０は、一例として、５個のプログラマブルロジックエレメント（以下、ＰＬＥ１２１）を有する。
【０１６５】
図１３（Ｃ）は、ＳＡＢ１３０の構成例を説明するための図である。図１３（Ｃ）に示すＳＡＢ１３０は、アレイ状に配列された複数のスイッチブロック（以下、ＳＢ１３１）を有する。
【０１６６】
次いで図１４（Ａ）乃至図１４（Ｃ）を参照して、ＳＢ１３１について説明する。ＳＢ１３１には信号ｄａｔａ、信号ｃｏｎｔｅｘｔ［１：０］、信号ｗｏｒｄ［１：０］が入力される。信号ｄａｔａはコンフィギュレーションデータである。信号ｃｏｎｔｅｘｔ［１：０］はコンテキスト選択信号である。信号ｗｏｒｄ［１：０］はワード線選択信号である。
【０１６７】
ＳＢ１３１は、プログラマブルルーティングスイッチ（以下、ＰＲＳ１３３［０］、１３３［１］）を有する。ＰＲＳ１３３［０］、１３３［１］は、コンフィギュレーションデータを格納できるコンフィギュレーションメモリ（ＣＭ）を有する。コンフィギュレーションデータは、ＰＲＳ１３３［０］、１３３［１］の導通状態を設定するための情報である。例えばハイレベル（以下、“Ｈ”）のときＰＲＳ１３３［０］、１３３［１］が導通状態に設定され、ローレベル（以下、“Ｌ”）のときＰＲＳ１３３［０］、１３３［１］が非導通状態に設定される。
【０１６８】
図１４（Ｂ）はＰＲＳ１３３［０］の回路図である。ＰＲＳ１３３［０］とＰＲＳ１３３［１］とは同じ回路構成を有する。ＰＲＳ１３３［０］とＰＲＳ１３３［１］とでは、入力されるコンテキスト選択信号、ワード線選択信号が異なる。信号ｃｏｎｔｅｘｔ［０］、ｗｏｒｄ［０］はＰＲＳ１３３［０］に入力され、信号ｃｏｎｔｅｘｔ［１］、ｗｏｒｄ［１］はＰＲＳ１３３［１］に入力される。例えば、ＳＢ１３１において、信号ｃｏｎｔｅｘｔ［０］が“Ｈ”になることで、ＰＲＳ１３３［０］がアクティブになる。
【０１６９】
ＰＲＳ１３３［０］は、ＣＭ１３５およびトランジスタＭ１を有する。トランジスタＭ１は、ｎチャネル型として説明するが、ｐチャネル型でもよい。
【０１７０】
トランジスタＭ１は、ＣＭ１３５により導通状態が制御されるパストランジスタである。トランジスタＭ１は、Ｓｉトランジスタとする。当該構成とすることで、高速でのスイッチング動作ができるため好ましい。
【０１７１】
ＣＭ１３５は、不揮発性メモリ（以下、ＮＶＭ１３７）およびトランジスタＭ２を有する。トランジスタＭ２は、ｎチャネル型として説明するが、ｐチャネル型でもよい。
【０１７２】
ＮＶＭ１３７は、容量素子Ｃ１、トランジスタＭＯ１、およびトランジスタＭＯ２を有する。トランジスタＭＯ１、ＭＯ２は、ｎチャネル型として説明するが、ｐチャネル型でもよい。トランジスタＭＯ１、およびトランジスタＭＯ２は、ＯＳトランジスタである。当該構成とすることで、オフ電流が低く、ゲート絶縁層を厚くしてもトランジスタ特性が良好であるトランジスタとすることができる。
【０１７３】
トランジスタＭＯ２のゲートがノードＮ１である。トランジスタＭ１のゲートがノードＮ２である。トランジスタＭＯ１はノードＮ１と信号ｄａｔａ用の信号線との間の導通状態を制御する。ノードＮ１はＣＭ１３５の電荷保持ノードである。トランジスタＭＯ１は非導通状態に制御されることで設定した情報に応じた電圧をノードＮ１で保持させることができる。トランジスタＭＯ２はノードＮ２と信号ｃｏｎｔｅｘｔ［０］用の信号線との間の導通状態を制御する。
【０１７４】
なおトランジスタＭＯ１、およびトランジスタＭＯ２といったＯＳトランジスタのゲート絶縁層はトランジスタＭ１、Ｍ２といったＳｉトランジスタのゲート絶縁層より厚くすることが好ましい。前述したようにＯＳトランジスタであることで、ゲート絶縁層を厚くしてもトランジスタ特性が良好である。トランジスタＭＯ２のゲート絶縁層を厚くできることで、電荷保持ノードであるノードＮ１での電荷の保持特性を高めることができる。
【０１７５】
ノードＮ１には、トランジスタＭＯ２の導通状態時、信号ｃｏｎｔｅｘｔ［０］の論理が与えられる。つまり信号ｃｏｎｔｅｘｔ［０］が“Ｈ”になることで、ＰＲＳ１３３［０］がアクティブになる。つまり信号ｄａｔａの論理であるノードＮ１の電圧に応じた電圧が、ノードＮ２に与えられることになる。
【０１７６】
具体的には、ノードＮ１の電圧が“Ｈ”でトランジスタＭＯ２が導通状態となり、信号ｃｏｎｔｅｘｔ［０］が“Ｈ”であるため、ノードＮ２が“Ｈ”となる。またノードＮ１の電圧が“Ｌ”でトランジスタＭＯ２が非導通状態となり、ノードＮ２が“Ｌ”となる。ノードＮ２が“Ｈ”か“Ｌ”かに応じて、つまり入力端子ｉｎｐｕｔと出力端子ｏｕｔｐｕｔとの導通状態が制御される。
【０１７７】
図１４（Ｂ）では一例として、グラウンド電位に接続されたトランジスタＭ２を設け、トランジスタＭ２をダイオード接続する構成を図示している。ノードＮ２は、トランジスタＭＯ２をオフ電流が低いＯＳトランジスタとするために電気的に浮遊状態となりやすい。そのためトランジスタＭ２にはオフ電流がＯＳトランジスタと比べて比較的高いＳｉトランジスタを用い、ノードＮ２に直接接続する構成とすることが有効である。トランジスタＭ２はダイオード接続されたトランジスタとする。当該構成とすることでトランジスタＭ２のオフ電流が、ノードＮ２を電気的に浮遊状態となることを抑制するように作用させることができる。そしてノードＮ２が“Ｈ”となる期間では動作に影響しないようにするとともに、ノードＮ２をより確実に“Ｌ”とすることができる。
【０１７８】
なお、ＰＲＳ１３３［０］とＰＲＳ１３３［１］とを区別しない場合、ＰＲＳ１３３と呼ぶ。他の要素についても同様である。
【０１７９】
なおＰＲＳ１３３は、トランジスタＭ１のゲートが浮遊状態になることを利用したブースティングによってスイッチ特性の向上を実現することができる。一方でＳｉトランジスタを６５ｎｍ  Ｓｉプロセスを採用する場合、Ｓｉトランジスタのゲートリークは無視できない。そこで、Ｓｉトランジスタのゲートで電荷を保持する構成を採用せずに、電荷保持ノードをゲート絶縁膜が厚くても短チャネル効果が発生しにくいＯＳトランジスタであるトランジスタＭＯ２のゲートに変更することで、不揮発性ＯＳメモリを実現することができる。
【０１８０】
図１４（Ｃ）、（Ｄ）を参照して、ＰＲＳ１３３［０］のスイッチ動作を説明する。
【０１８１】
図１４（Ｃ）では、ＰＲＳ１３３［０］のノードＮ１が“Ｈ”であるようにＰＲＳ１３３［０］にコンフィギュレーションデータが既に書き込まれた状態でのスイッチ動作を説明する。
【０１８２】
信号ｃｏｎｔｅｘｔ［０］が“Ｈ”である期間、ＰＲＳ１３３［０］はアクティブである。ノードＮ１が“Ｈ”のときトランジスタＭＯ２が導通状態となるため、ＣＭ１３５が記憶するコンフィギュレーションデータに対応する“Ｈ”が、トランジスタＭ１のゲートは“Ｈ”に遷移し、トランジスタＭ１が導通状態となる。この状態で入力端子ｉｎｐｕｔが“Ｈ”に遷移するとブースティングによってトランジスタＭ１のゲートの電位が上昇する。入力端子ｉｎｐｕｔが“Ｈ”に遷移すると、ＮＶＭ１３７のトランジスタＭＯ２がソースフォロアであるために、ブースティングによってトランジスタＭ１のゲート電圧は上昇する。その結果、ＮＶＭ１３７のトランジスタＭＯ２は駆動能力を失い、トランジスタＭ１のゲートは浮遊状態となる。その結果、トランジスタＭ１のゲート電圧がさらに上昇することで出力端子ｏｕｔｐｕｔの電位を上昇させることができる。そのため、スイッチ特性の向上を実現することができる。
【０１８３】
信号ｃｏｎｔｅｘｔ［０］が“Ｌ”である期間、ＰＲＳ１３３［０］は非アクティブである。ノードＮ１が“Ｈ”のときトランジスタＭＯ２が導通状態となり、信号ｃｏｎｔｅｘｔ［０］の“Ｌ”のため、トランジスタＭ１のゲートが“Ｌ”に遷移し、トランジスタＭ１が非導通状態となる。その結果入力端子ｉｎｐｕｔが“Ｈ”に遷移しても、出力端子ｏｕｔｐｕｔの電位は変化しない。
【０１８４】
また図１４（Ｄ）では、ＰＲＳ１３３［０］のノードＮ１が“Ｌ”であるようにＰＲＳ１３３［０］にコンフィギュレーションデータが既に書き込まれた状態でのスイッチ動作を説明する。
【０１８５】
信号ｃｏｎｔｅｘｔ［０］が“Ｈ”である期間、ＰＲＳ１３３［０］はアクティブである。ノードＮ１が“Ｌ”のときトランジスタＭＯ２が非導通状態となる。トランジスタＭ１のゲート、つまりノードＮ２の電位は、トランジスタＭ２のリーク電流によって“Ｌ”となる。つまりノードＮ２が電気的に浮遊状態となることが抑制される。トランジスタＭ１が非導通状態となる。その結果入力端子ｉｎｐｕｔが“Ｈ”に遷移しても、出力端子ｏｕｔｐｕｔの電位は変化しない。
【０１８６】
信号ｃｏｎｔｅｘｔ［０］が“Ｌ”である期間、ＰＲＳ１３３［０］は非アクティブである。ノードＮ１が“Ｌ”のときトランジスタＭＯ２が導通状態となる。トランジスタＭ１のゲート、つまりノードＮ２の電位は、トランジスタＭ２のリーク電流によって“Ｌ”となる。トランジスタＭ１が非導通状態となる。その結果入力端子ｉｎｐｕｔが“Ｈ”に遷移しても、出力端子ｏｕｔｐｕｔの電位は変化しない。
【０１８７】
マルチコンテキスト機能を備えるＰＲＳ１３３において、ＣＭ１３５はマルチプレクサの機能を併せ持つ。ＰＲＳ１３３はトランジスタ数がＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）を用いたＣＭと比べて少なく、ブースティングによってトランジスタＭ１の駆動能力を高める効果もあるため、好適である。
【０１８８】
また図１５はＰＬＥ１２１のブロック図である。ＰＬＥ１２１はＬＵＴブロック１２３、レジスタブロック１２４、セレクタ１２５、ＣＭ１２６を有する。ＬＵＴブロック１２３はルックアップテーブルの機能を有し、一例として内部の１６ビットＣＭ対の出力を入力ｉｎＡ−ｉｎＤに従って選択する構成である。セレクタ１２５は、ＣＭ１２６が格納するコンフィギュレーションデータに従って、ＬＵＴブロック１２３の出力またはレジスタブロック１２４の出力を選択する構成である。
【０１８９】
ＰＬＥ１２１は、パワースイッチ１２７を介して高電位電源線ＶＤＤに接続されている。パワースイッチ１２７のオンオフは、ＣＭ１２８が格納するコンフィギュレーションデータによって設定される。各ＰＬＥ１２１にパワースイッチ１２７を設けることで、細粒度なパワーゲーティング（ＦＧ−ＰＧ）機能を可能にしている。ＦＧ−ＰＧ機能により、コンテキストの切り替え後に使用されないＰＬＥ１２１をパワーゲーティングすることができるので、待機電力を削減できる。
【０１９０】
ノーマリーオフ（ＮＯＦＦ）コンピューティングを実現するため、レジスタブロック１２４は、不揮発性レジスタ（ＮＶ−Ｒｅｇ）で構成される。ＰＬＥ１２１内のＮＶ−Ｒｅｇは不揮発性ＯＳメモリを備えるフリップフロップ（ＯＳ−ＦＦ）である。
【０１９１】
レジスタブロック１２４は、ＯＳ−ＦＦ１４０［１］およびＯＳ−ＦＦ１４０［２］を有する。信号ｕｓｅｒ＿ｒｅｓ、信号ｌｏａｄ、および信号ｓｔｏｒｅがＯＳ−ＦＦ１４０［１］およびＯＳ−ＦＦ１４０［２］に入力される。クロック信号ＣＬＫ１はＯＳ−ＦＦ１４０［１］に入力され、クロック信号ＣＬＫ２はＯＳ−ＦＦ１４０［２］に入力される。
【０１９２】
図１６（Ａ）には、一例として、ＯＳ−ＦＦ１４０の回路図を示す。
【０１９３】
ＯＳ−ＦＦ１４０は、ＦＦ１４１およびシャドウレジスタ１４２を有する。ＦＦ１４１は、ノードＣＫ、ノードＲ、ノードＤ、ノードＱ、およびノードＱＢを有する。ノードＣＫにはクロック信号ＣＬＫ１（またはクロック信号ＣＬＫ２）が入力される。ノードＲには信号ｕｓｅｒ＿ｒｅｓが入力される。信号ｕｓｅｒ＿ｒｅｓはリセット信号である。ノードＤはデータ入力ノードであり、ノードＱはデータ出力ノードである。ノードＱとノードＱＢとは論理が相補関係にある。
【０１９４】
シャドウレジスタ１４２は、ＦＦ１４１のバックアップ回路として機能する。シャドウレジスタ１４２は、信号ｓｔｏｒｅに従いノードＱ、ＱＢのデータをそれぞれバックアップし、また、信号ｌｏａｄに従い、バックアップしたデータをノードＱ、ＱＢに書き戻す。
【０１９５】
シャドウレジスタ１４２は、インバータ回路８８、インバータ回路８９、トランジスタＭ７、トランジスタＭＢ７、ＮＶＭ１４３、およびＮＶＭ１４３Ｂを有する。ＮＶＭ１４３およびＮＶＭ１４３Ｂは、ＰＲＳ１３３のＮＶＭ１３７と同じ回路構成である。ＮＶＭ１４３は容量素子Ｃ６、トランジスタＭＯ５、およびトランジスタＭＯ６を有する。ＮＶＭ１４３Ｂは容量素子ＣＢ６、トランジスタＭＯＢ５、およびトランジスタＭＯＢ６を有する。ノードＮ６はトランジスタＭＯ６のゲートであり、ノードＮＢ６はトランジスタＭＯＢ６のゲートである。各ノードはそれぞれ電荷保持ノードである。ノードＮ７は、トランジスタＭ７のゲートである。ノードＮＢ７は、トランジスタＭＢ７のゲートである。
【０１９６】
図１６（Ｂ）を参照して、ＯＳ−ＦＦ１４０の動作方法を説明する。
【０１９７】
データのバックアップ動作について説明する。“Ｈ”の信号ｓｔｏｒｅがＯＳ−ＦＦ１４０に入力されると、シャドウレジスタ１４２はＦＦ１４１のデータをバックアップする。ノードＮ６は、ノードＱのデータが書き込まれることで、“Ｌ”となり、ノードＮＢ６は、ノードＱＢのデータが書き込まれることで、“Ｈ”となる。しかる後、パワーゲーティングが実行され、パワースイッチ１２７をオフにする。ＦＦ１４１のノードＱ、ＱＢのデータは消失するが、電源オフであっても、シャドウレジスタ１４２はバックアップしたデータを保持する。
【０１９８】
データのリカバリ動作について説明する。パワースイッチ１２７をオンにし、ＰＬＥ１２１に電源を供給する。しかる後、“Ｈ”の信号ｌｏａｄがＯＳ−ＦＦ１４０に入力されると、シャドウレジスタ１４２はバックアップしているデータをＦＦ１４１に書き戻す。ノードＮ６は“Ｌ”であるので、ノードＮ７は“Ｌ”が維持され、ノードＮＢ６は“Ｈ”であるので、ノードＮＢ７は“Ｈ”となる。よって、ノードＱは“Ｈ”になり、ノードＱＢは“Ｌ”になる。つまり、ＯＳ−ＦＦ１４０はバックアップ動作時の状態に復帰する。
【０１９９】
以上のような構成とすることで、上記説明したＯＳ−ＦＰＧＡを実現することができる。
【０２００】
（実施の形態５）
本実施の形態では、アナログ演算回路４２に適用される積和演算回路について説明する。図１７に積和演算回路の構成例を示す。
【０２０１】
図１７に示す積和演算回路２００は、アナログメモリ２０１、参照アナログメモリ２０２、ドライバ２０６、２０７、読み出し回路２０８、電流源回路２０５を有する。
【０２０２】
アナログメモリ２０１は、複数のメモリセルＭＣ、複数の配線ＲＷ、ＷＷ、ＷＤ、ＶＲ、ＢＬを有する。図１７の例では、アナログメモリ２０１には、ｙ行ｘ列（ｙ、ｘは１以上の整数）に配列されたメモリセルＭＣが設けられている。各メモリセルＭＣは対応する行の配線ＲＷ、ＷＷに電気的に接続され、対応する列の配線ＷＤ、ＶＲ、ＢＬに電気的に接続されている。
【０２０３】
参照アナログメモリ２０２は、ｙ行１列に配列されたメモリセルＭＣＲ、配線ＷＤＲＥＦ、ＷＤＲＥＦ、ＶＲＲＥＦを有する。アナログメモリ２０１と参照アナログメモリ２０２は配線ＲＷ、ＷＷを共有する。各メモリセルＭＣは対応する行の配線ＲＷ、ＷＷ、並びに配線ＷＤＲＥＦ、ＶＲＲＥＦ、ＢＬＲＥＦに電気的に接続されている。
【０２０４】
本明細書では、複数のメモリセルＭＣうち、特定のメモリセルＭＣを表す場合、メモリセルＭＣ［ｉ，ｊ］などと表記する。メモリセルＭＣと表記する場合は、任意のメモリセルＭＣを指す。他の要素についても同様である。
【０２０５】
ドライバ２０６は配線ＲＷ、ＷＷを駆動する。ドライバ２０７は配線ＷＤを駆動する。読み出し回路２０８は配線ＢＬに書き込まれたデータを読み出す。電流源回路２０５は参照電流を生成し、配線ＢＬ、ＢＬＲＥＦに供給する。
【０２０６】
積和演算回路２００の各回路について具体的な例を示し、説明する。
【０２０７】
図１８に示す積和演算回路２００は、アナログメモリ２０１、参照アナログメモリ２０２、電流ソース回路２０３、電流シンク回路２０４、および電流源回路２０５を有する。
【０２０８】
アナログメモリ２０１は、メモリセルＭＣ［ｉ、ｊ］、メモリセルＭＣ［ｉ＋１、ｊ］で例示されるメモリセルＭＣを有する。また、各メモリセルＭＣは、入力された電位を電流に変換する機能を有する素子を有する。上記機能を有する素子として、例えばトランジスタなどの能動素子を用いることができる。図１８では、各メモリセルＭＣがトランジスタＴｒ１を有する場合を例示している。
【０２０９】
メモリセルＭＣには、配線ＷＤ［ｊ］で例示される配線ＷＤから第１のアナログ電位が入力される。そして、メモリセルＭＣは、第１のアナログ電位に応じた第１のアナログ電流を生成する機能を有する。具体的には、トランジスタＴｒ１のゲートに第１のアナログ電位を供給したときに得られるトランジスタＴｒ１のドレイン電流を、第１のアナログ電流とすることができる。なお、以下、メモリセルＭＣ［ｉ、ｊ］に流れる電流をＩ［ｉ、ｊ］とし、メモリセルＭＣ［ｉ＋１、ｊ］に流れる電流をＩ［ｉ＋１、ｊ］とする。
【０２１０】
なお、トランジスタＴｒ１が飽和領域で動作する場合、そのドレイン電流はソースとドレイン間の電圧に依存せず、ゲート電圧と閾値電圧の差分によって制御される。よって、トランジスタＴｒ１は飽和領域で動作させることが望ましい。トランジスタＴｒ１を飽和領域で動作させるために、そのゲート電圧、ソースとドレイン間の電圧は、飽和領域で動作する範囲の電圧に適切に設定されているものとする。
【０２１１】
具体的に、図１８に示す積和演算回路２００では、メモリセルＭＣ［ｉ、ｊ］に配線ＷＤ［ｊ］から第１のアナログ電位Ｖｘ［ｉ、ｊ］または第１のアナログ電位Ｖｘ［ｉ、ｊ］に応じた電位が入力される。メモリセルＭＣ［ｉ、ｊ］は、第１のアナログ電位Ｖｘ［ｉ、ｊ］に応じた第１のアナログ電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣ［ｉ、ｊ］の電流Ｉ［ｉ、ｊ］は、第１のアナログ電流に相当する。
【０２１２】
また、具体的に、図１８に示す積和演算回路２００では、メモリセルＭＣ［ｉ＋１、ｊ］に配線ＷＤ［ｊ］から第１のアナログ電位Ｖｘ［ｉ＋１、ｊ］または第１のアナログ電位Ｖｘ［ｉ＋１、ｊ］に応じた電位が入力される。メモリセルＭＣ［ｉ＋１、ｊ］は、第１のアナログ電位Ｖｘ［ｉ＋１、ｊ］に応じた第１のアナログ電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣ［ｉ＋１、ｊ］の電流Ｉ［ｉ＋１、ｊ］は、第１のアナログ電流に相当する。
【０２１３】
メモリセルＭＣは、第１のアナログ電位を保持する機能を有する。すなわち、メモリセルＭＣは、第１のアナログ電位を保持することで、第１のアナログ電位に応じた第１のアナログ電流を保持する機能を有すると言える。
【０２１４】
また、メモリセルＭＣには、配線ＲＷ［ｉ］、配線ＲＷ［ｉ＋１］で例示される配線ＲＷから第２のアナログ電位が入力される。メモリセルＭＣは、既に保持されている第１のアナログ電位に、第２のアナログ電位或いは第２のアナログ電位に応じた電位を加算する機能と、加算することで得られる第３のアナログ電位を保持する機能とを有する。そして、メモリセルＭＣは、第３のアナログ電位に応じた第２のアナログ電流を生成する機能を有する。すなわち、メモリセルＭＣは、第３のアナログ電位を保持することで、第３のアナログ電位に応じた第２のアナログ電流を保持する機能を有すると言える。
【０２１５】
具体的に、図１８に示す積和演算回路２００では、メモリセルＭＣ［ｉ、ｊ］に配線ＲＷ［ｉ］から第２のアナログ電位Ｖｗ［ｉ、ｊ］が入力される。そして、メモリセルＭＣ［ｉ、ｊ］は、第１のアナログ電位Ｖｘ［ｉ、ｊ］及び第２のアナログ電位Ｖｗ［ｉ、ｊ］に応じた第３のアナログ電位を保持する機能を有する。そして、メモリセルＭＣ［ｉ、ｊ］は、第３のアナログ電位に応じた第２のアナログ電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣ［ｉ、ｊ］の電流Ｉ［ｉ、ｊ］は、第２のアナログ電流に相当する。
【０２１６】
また、図１８に示す積和演算回路２００では、メモリセルＭＣ［ｉ＋１、ｊ］に配線ＲＷ［ｉ＋１］から第２のアナログ電位Ｖｗ［ｉ＋１、ｊ］が入力される。そして、メモリセルＭＣ［ｉ＋１、ｊ］は、第１のアナログ電位Ｖｘ［ｉ＋１、ｊ］及び第２のアナログ電位Ｖｗ［ｉ＋１、ｊ］に応じた第３のアナログ電位を保持する機能を有する。そして、メモリセルＭＣ［ｉ＋１、ｊ］は、第３のアナログ電位に応じた第２のアナログ電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣ［ｉ＋１、ｊ］の電流Ｉ［ｉ＋１、ｊ］は、第２のアナログ電流に相当する。
【０２１７】
そして、電流Ｉ［ｉ、ｊ］は、メモリセルＭＣ［ｉ、ｊ］を介して配線ＢＬ［ｊ］と配線ＶＲ［ｊ］の間を流れる。電流Ｉ［ｉ＋１、ｊ］は、メモリセルＭＣ［ｉ＋１、ｊ］を介して配線ＢＬ［ｊ］と配線ＶＲ［ｊ］の間を流れる。よって、電流Ｉ［ｉ、ｊ］と電流Ｉ［ｉ＋１、ｊ］との和に相当する電流Ｉ［ｊ］が、メモリセルＭＣ［ｉ、ｊ］及びメモリセルＭＣ［ｉ＋１、ｊ］を介して配線ＢＬ［ｊ］と配線ＶＲ［ｊ］の間を流れることとなる。
【０２１８】
参照アナログメモリ２０２は、メモリセルＭＣＲ［ｉ］、メモリセルＭＣＲ［ｉ＋１］で例示されるメモリセルＭＣＲを有する。メモリセルＭＣＲには、配線ＷＤＲＥＦから第１の参照電位ＶＰＲが入力される。そして、メモリセルＭＣＲは、第１の参照電位ＶＰＲに応じた第１の参照電流を生成する機能を有する。なお、以下、メモリセルＭＣＲ［ｉ］に流れる電流をＩＲＥＦ［ｉ］とし、メモリセルＭＣＲ［ｉ＋１］に流れる電流をＩＲＥＦ［ｉ＋１］とする。
【０２１９】
そして、具体的に、図１８に示す積和演算回路２００では、メモリセルＭＣＲ［ｉ］に配線ＷＤＲＥＦ［ｉ］から第１の参照電位ＶＰＲが入力される。メモリセルＭＣＲ［ｉ］は、第１の参照電位ＶＰＲに応じた第１の参照電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣＲ［ｉ］の電流ＩＲＥＦ［ｉ］は、第１の参照電流に相当する。
【０２２０】
また、図１０に示す積和演算回路２００では、メモリセルＭＣＲ［ｉ＋１］に配線ＷＤＲＥＦから第１の参照電位ＶＰＲが入力される。メモリセルＭＣＲ［ｉ＋１］は、第１の参照電位ＶＰＲに応じた第１の参照電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣＲ［ｉ＋１］の電流ＩＲＥＦ［ｉ＋１］は、第１の参照電流に相当する。
【０２２１】
そして、メモリセルＭＣＲは、第１の参照電位ＶＰＲを保持する機能を有する。すなわち、メモリセルＭＣＲは、第１の参照電位ＶＰＲを保持することで、第１の参照電位ＶＰＲに応じた第１の参照電流を保持する機能を有すると言える。
【０２２２】
また、メモリセルＭＣＲには、配線ＲＷ［ｉ］、配線ＲＷ［ｉ＋１］で例示される配線ＲＷから第２のアナログ電位が入力される。メモリセルＭＣＲは、既に保持されている第１の参照電位ＶＰＲに、第２のアナログ電位或いは第２のアナログ電位に応じた電位を加算し、加算することで得られる第２の参照電位を保持する機能を有する。そして、メモリセルＭＣＲは、第２の参照電位に応じた第２の参照電流を生成する機能を有する。すなわち、メモリセルＭＣＲは、第２の参照電位を保持することで、第２の参照電位に応じた第２の参照電流を保持する機能を有すると言える。
【０２２３】
具体的に、図１８に示す積和演算回路２００では、メモリセルＭＣＲ［ｉ］に配線ＲＷ［ｉ］から第２のアナログ電位Ｖｗ［ｉ、ｊ］が入力される。そして、メモリセルＭＣＲ［ｉ］は、第１の参照電位ＶＰＲ及び第２のアナログ電位Ｖｗ［ｉ、ｊ］に応じた第２の参照電位を保持する機能を有する。そして、メモリセルＭＣＲ［ｉ］は、第２の参照電位に応じた第２の参照電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣＲ［ｉ］の電流ＩＲＥＦ［ｉ］は、第２の参照電流に相当する。
【０２２４】
また、図１８に示す積和演算回路２００では、メモリセルＭＣＲ［ｉ＋１］に配線ＲＷ［ｉ＋１］から第２のアナログ電位Ｖｗ［ｉ＋１、ｊ］が入力される。そして、メモリセルＭＣＲ［ｉ＋１］は、第１の参照電位ＶＰＲ及び第２のアナログ電位Ｖｗ［ｉ＋１、ｊ］に応じた第２の参照電位を保持する機能を有する。そして、メモリセルＭＣＲ［ｉ＋１］は、第２の参照電位に応じた第２の参照電流を生成する機能を有する。すなわち、この場合、メモリセルＭＣＲ［ｉ＋１］の電流ＩＲＥＦ［ｉ＋１］は、第２の参照電流に相当する。
【０２２５】
そして、電流ＩＲＥＦ［ｉ］は、メモリセルＭＣＲ［ｉ］を介して配線ＢＬＲＥＦと配線ＶＲＲＥＦの間を流れる。電流ＩＲＥＦ［ｉ＋１］は、メモリセルＭＣＲ［ｉ＋１］を介して配線ＢＬＲＥＦと配線ＶＲＲＥＦの間を流れる。よって、電流ＩＲＥＦ［ｉ］と電流ＩＲＥＦ［ｉ＋１］との和に相当する電流ＩＲＥＦが、メモリセルＭＣＲ［ｉ］及びメモリセルＭＣＲ［ｉ＋１］を介して配線ＢＬＲＥＦと配線ＶＲＲＥＦの間を流れることとなる。
【０２２６】
電流源回路２０５は、配線ＢＬＲＥＦに流れる電流ＩＲＥＦと同じ値の電流、もしくは電流ＩＲＥＦに対応する電流を、配線ＢＬに供給する機能を有する。そして、後述するオフセットの電流を設定する際には、メモリセルＭＣ［ｉ、ｊ］及びメモリセルＭＣ［ｉ＋１、ｊ］を介して配線ＢＬ［ｊ］と配線ＶＲ［ｊ］の間を流れる電流Ｉ［ｊ］が、メモリセルＭＣＲ［ｉ］及びメモリセルＭＣＲ［ｉ＋１］を介して配線ＢＬＲＥＦと配線ＶＲＲＥＦの間を流れる電流ＩＲＥＦと異なる場合、差分の電流は電流ソース回路２０３または電流シンク回路２０４に流れる。
【０２２７】
具体的に、電流Ｉ［ｊ］が電流ＩＲＥＦよりも大きい場合、電流ソース回路２０３は、電流Ｉ［ｊ］と電流ＩＲＥＦの差分に相当する電流ΔＩ［ｊ］を生成する機能を有する。また、電流ソース回路２０３は、生成した電流ΔＩ［ｊ］を配線ＢＬ［ｊ］に供給する機能を有する。すなわち、電流ソース回路２０３は、電流ΔＩ［ｊ］を保持する機能を有すると言える。
【０２２８】
また、電流Ｉ［ｊ］が電流ＩＲＥＦよりも小さい場合、電流シンク回路２０４は、電流Ｉ［ｊ］と電流ＩＲＥＦの差分に相当する電流ΔＩ［ｊ］を生成する機能を有する。また、電流シンク回路２０４は、生成した電流ΔＩ［ｊ］を配線ＢＬ［ｊ］から引き込む機能を有する。すなわち、電流シンク回路２０４は、電流ΔＩ［ｊ］を保持する機能を有すると言える。
【０２２９】
次いで、図１８に示す積和演算回路２００の動作の一例について説明する。
【０２３０】
まず、メモリセルＭＣ［ｉ、ｊ］に第１のアナログ電位に応じた電位を格納する。具体的には、第１の参照電位ＶＰＲから第１のアナログ電位Ｖｘ［ｉ、ｊ］を差し引いた電位ＶＰＲ−Ｖｘ［ｉ、ｊ］が、配線ＷＤ［ｊ］を介してメモリセルＭＣ［ｉ、ｊ］に入力される。メモリセルＭＣ［ｉ、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ、ｊ］が保持される。また、メモリセルＭＣ［ｉ、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ、ｊ］に応じた電流Ｉ［ｉ、ｊ］が生成される。例えば第１の参照電位ＶＰＲは、接地電位よりも高いハイレベルの電位とする。具体的には、接地電位よりも高く、電流源回路２０５に供給されるハイレベルの電位ＶＤＤと同程度か、それ以下の電位であることが望ましい。
【０２３１】
また、メモリセルＭＣＲ［ｉ］に第１の参照電位ＶＰＲを格納する。具体的には、電位ＶＰＲが、配線ＷＤＲＥＦを介してメモリセルＭＣＲ［ｉ］に入力される。メモリセルＭＣＲ［ｉ］では、電位ＶＰＲが保持される。また、メモリセルＭＣＲ［ｉ］では、電位ＶＰＲに応じた電流ＩＲＥＦ［ｉ］が生成される。
【０２３２】
また、メモリセルＭＣ［ｉ＋１、ｊ］に第１のアナログ電位に応じた電位を格納する。具体的には、第１の参照電位ＶＰＲから第１のアナログ電位Ｖｘ［ｉ＋１、ｊ］を差し引いた電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］が、配線ＷＤ［ｊ］を介してメモリセルＭＣ［ｉ＋１、ｊ］に入力される。メモリセルＭＣ［ｉ＋１、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］が保持される。また、メモリセルＭＣ［ｉ＋１、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］に応じた電流Ｉ［ｉ＋１、ｊ］が生成される。
【０２３３】
また、メモリセルＭＣＲ［ｉ＋１］に第１の参照電位ＶＰＲを格納する。具体的には、電位ＶＰＲが、配線ＷＤＲＥＦを介してメモリセルＭＣＲ［ｉ＋１］に入力される。モリセルＭＣＲ［ｉ＋１］では、電位ＶＰＲが保持される。また、メモリセルＭＣＲ［ｉ＋１］では、電位ＶＰＲに応じた電流ＩＲＥＦ［ｉ＋１］が生成される。
【０２３４】
上記動作において、配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］は基準電位とする。例えば、基準電位として接地電位、基準電位よりも低いローレベルの電位ＶＳＳなどを用いることができる。或いは、基準電位として電位ＶＳＳと電位ＶＤＤの間の電位を用いると、第２のアナログ電位Ｖｗを正負にしても、配線ＲＷの電位を接地電位よりも高くできるので信号の生成を容易にすることができ、正負の電位に対する積演算が可能になるので好ましい。
【０２３５】
上記動作により、配線ＢＬ［ｊ］には、配線ＢＬ［ｊ］に接続されたメモリセルＭＣにおいてそれぞれ生成される電流を合わせた電流が、流れることとなる。具体的に図１８では、メモリセルＭＣ［ｉ、ｊ］で生成される電流Ｉ［ｉ、ｊ］と、メモリセルＭＣ［ｉ＋１、ｊ］で生成される電流Ｉ［ｉ＋１、ｊ］とを合わせた電流Ｉ［ｊ］が流れる。また、上記動作により、配線ＢＬＲＥＦには、配線ＢＬＲＥＦに接続されたメモリセルＭＣＲにおいてそれぞれ生成される電流を合わせた電流が、流れることとなる。具体的に図１８では、メモリセルＭＣＲ［ｉ］で生成される電流ＩＲＥＦ［ｉ］と、メモリセルＭＣＲ［ｉ＋１］で生成される電流ＩＲＥＦ［ｉ＋１］とを合わせた電流ＩＲＥＦが流れる。
【０２３６】
次いで、配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］の電位を基準電位としたまま、第１のアナログ電位によって得られる電流Ｉ［ｊ］と第１の参照電位によって得られる電流ＩＲＥＦとの差分から得られるオフセットの電流Ｉｏｆｆｓｅｔ［ｊ］を、電流ソース回路２０３または電流シンク回路２０４において保持する。
【０２３７】
具体的に、電流Ｉ［ｊ］が電流ＩＲＥＦよりも大きい場合、電流ソース回路２０３は電流Ｉｏｆｆｓｅｔ［ｊ］を配線ＢＬ［ｊ］に供給する。すなわち、電流ソース回路２０３に流れる電流ＩＣＭ［ｊ］は電流Ｉｏｆｆｓｅｔ［ｊ］に相当することとなる。そして、当該電流ＩＣＭ［ｊ］の値は電流ソース回路２０３において保持される。また、電流Ｉ［ｊ］が電流ＩＲＥＦよりも小さい場合、電流シンク回路２０４は電流Ｉｏｆｆｓｅｔ［ｊ］を配線ＢＬ［ｊ］から引き込む。すなわち、電流シンク回路２０４に流れる電流ＩＣＰ［ｊ］は電流Ｉｏｆｆｓｅｔ［ｊ］に相当することとなる。そして、当該電流ＩＣＰ［ｊ］の値は電流シンク回路２０４において保持される。
【０２３８】
次いで、既にメモリセルＭＣ［ｉ、ｊ］において保持されている第１のアナログ電位または第１のアナログ電位に応じた電位に加算するように、第２のアナログ電位または第２のアナログ電位に応じた電位をメモリセルＭＣ［ｉ、ｊ］に格納する。具体的には、配線ＲＷ［ｉ］の電位を基準電位に対してＶｗ［ｉ］だけ高い電位とすることで、第２のアナログ電位Ｖｗ［ｉ］が、配線ＲＷ［ｉ］を介してメモリセルＭＣ［ｉ、ｊ］に入力される。メモリセルＭＣ［ｉ、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ、ｊ］＋Ｖｗ［ｉ］が保持される。また、メモリセルＭＣ［ｉ、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ、ｊ］＋Ｖｗ［ｉ］に応じた電流Ｉ［ｉ、ｊ］が生成される。
【０２３９】
また、既にメモリセルＭＣ［ｉ＋１、ｊ］において保持されている第１のアナログ電位または第１のアナログ電位に応じた電位に加算するように、第２のアナログ電位または第２のアナログ電位に応じた電位をメモリセルＭＣ［ｉ＋１、ｊ］に格納する。具体的には、配線ＲＷ［ｉ＋１］の電位を基準電位に対してＶｗ［ｉ＋１］だけ高い電位とすることで、第２のアナログ電位Ｖｗ［ｉ＋１］が、配線ＲＷ［ｉ＋１］を介してメモリセルＭＣ［ｉ＋１、ｊ］に入力される。メモリセルＭＣ［ｉ＋１、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］＋Ｖｗ［ｉ＋１］が保持される。また、メモリセルＭＣ［ｉ＋１、ｊ］では、電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］＋Ｖｗ［ｉ＋１］に応じた電流Ｉ［ｉ＋１、ｊ］が生成される。
【０２４０】
なお、電位を電流に変換する素子として飽和領域で動作するトランジスタＴｒ１を用いる場合、配線ＲＷ［ｉ］の電位がＶｗ［ｉ］であり、配線ＲＷ［ｉ＋１］の電位がＶｗ［ｉ＋１］であると仮定すると、メモリセルＭＣ［ｉ、ｊ］が有するトランジスタＴｒ１のドレイン電流が電流Ｉ［ｉ、ｊ］に相当するので、第２のアナログ電流は以下の式１で表される。なお、ｋは係数、ＶｔｈはトランジスタＴｒ１の閾値電圧である。
【０２４１】
Ｉ［ｉ、ｊ］＝ｋ（Ｖｗ［ｉ］−Ｖｔｈ＋ＶＰＲ−Ｖｘ［ｉ、ｊ］）２・・・（１）
【０２４２】
また、メモリセルＭＣＲ［ｉ］が有するトランジスタＴｒ１のドレイン電流が電流ＩＲＥＦ［ｉ］に相当するので、第２の参照電流は以下の式２で表される。
【０２４３】
ＩＲＥＦ［ｉ］＝ｋ（Ｖｗ［ｉ］−Ｖｔｈ＋ＶＰＲ）２・・・（２）
【０２４４】
そして、メモリセルＭＣ［ｉ、ｊ］に流れる電流Ｉ［ｉ、ｊ］と、メモリセルＭＣ［ｉ＋１、ｊ］に流れる電流Ｉ［ｉ＋１、ｊ］の和に相当する電流Ｉ［ｊ］は、Ｉ［ｊ］＝ΣｉＩ［ｉ、ｊ］であり、メモリセルＭＣＲ［ｉ］に流れる電流ＩＲＥＦ［ｉ］と、メモリセルＭＣＲ［ｉ＋１］に流れる電流ＩＲＥＦ［ｉ＋１］の和に相当する電流ＩＲＥＦは、ＩＲＥＦ＝ΣｉＩＲＥＦ［ｉ］となり、その差分に相当する電流ΔＩ［ｊ］は以下の式３で表される。
【０２４５】
ΔＩ［ｊ］＝ＩＲＥＦ−Ｉ［ｊ］＝ΣｉＩＲＥＦ［ｉ］−ΣｉＩ［ｉ、ｊ］・・・（３）
【０２４６】
式１、式２、式３から、電流ΔＩ［ｊ］は以下の式４のように導き出される。
【０２４７】
ΔＩ［ｊ］
＝Σｉ｛ｋ（Ｖｗ［ｉ］−Ｖｔｈ＋ＶＰＲ）２−ｋ（Ｖｗ［ｉ］−Ｖｔｈ＋ＶＰＲ−Ｖｘ［ｉ、ｊ］）２｝
＝２ｋΣｉ（Ｖｗ［ｉ］・Ｖｘ［ｉ、ｊ］）−２ｋΣｉ（Ｖｔｈ−ＶＰＲ）・Ｖｘ［ｉ、ｊ］−ｋΣｉＶｘ［ｉ、ｊ］２・・・（４）
【０２４８】
式４において、２ｋΣｉ（Ｖｗ［ｉ］・Ｖｘ［ｉ、ｊ］）で示される項は、第１のアナログ電位Ｖｘ［ｉ、ｊ］及び第２のアナログ電位Ｖｗ［ｉ］の積と、第１のアナログ電位Ｖｘ［ｉ＋１、ｊ］及び第２のアナログ電位Ｖｗ［ｉ＋１］の積と、の和に相当する。
【０２４９】
また、Ｉｏｆｆｓｅｔ［ｊ］は、配線ＲＷ［ｉ］の電位を全て基準電位としたとき、すなわち第２のアナログ電位Ｖｗ［ｉ］を０、第２のアナログ電位Ｖｗ［ｉ＋１］を０としたときの電流ΔＩ［ｊ］とすると、式４から、以下の式５が導き出される。
【０２５０】
Ｉｏｆｆｓｅｔ［ｊ］＝−２ｋΣｉ（Ｖｔｈ−ＶＰＲ）・Ｖｘ［ｉ、ｊ］−ｋΣｉＶｘ［ｉ、ｊ］２・・・（５）
【０２５１】
したがって、式３乃至式５から、第１のアナログ電流と第２のアナログ電流の積和値に相当する２ｋΣｉ（Ｖｗ［ｉ］・Ｖｘ［ｉ、ｊ］）は、以下の式６で表されることが分かる。
【０２５２】
２ｋΣｉ（Ｖｗ［ｉ］・Ｖｘ［ｉ、ｊ］）＝ＩＲＥＦ−Ｉ［ｊ］−Ｉｏｆｆｓｅｔ［ｊ］・・・（６）
【０２５３】
そして、メモリセルＭＣに流れる電流の和を電流Ｉ［ｊ］、メモリセルＭＣＲに流れる電流の和を電流ＩＲＥＦ、電流ソース回路２０３または電流シンク回路２０４に流れる電流を電流Ｉｏｆｆｓｅｔ［ｊ］とすると、配線ＲＷ［ｉ］の電位をＶｗ［ｉ］、配線ＲＷ［ｉ＋１］の電位をＶｗ［ｉ＋１］としたときに配線ＢＬ［ｊ］から流れ出る電流Ｉｏｕｔ［ｊ］は、ＩＲＥＦ−Ｉ［ｊ］−Ｉｏｆｆｓｅｔ［ｊ］で表される。式６から、電流Ｉｏｕｔ［ｊ］は、２ｋΣｉ（Ｖｗ［ｉ］・Ｖｘ［ｉ、ｊ］）であり、第１のアナログ電位Ｖｘ［ｉ、ｊ］及び第２のアナログ電位Ｖｗ［ｉ］の積と、第２のアナログ電位Ｖｘ［ｉ＋１、ｊ］及び第２のアナログ電位Ｖｗ［ｉ＋１］の積と、の和に相当することが分かる。
【０２５４】
なお、トランジスタＴｒ１は飽和領域で動作させることが望ましいが、トランジスタＴｒ１の動作領域が理想的な飽和領域と異なっていたとしても、第１のアナログ電位Ｖｘ［ｉ、ｊ］及び第２のアナログ電位Ｖｗ［ｉ］の積と、第２のアナログ電位Ｖｘ［ｉ＋１、ｊ］及び第２のアナログ電位Ｖｗ［ｉ＋１］の積との和に相当する電流を、所望の範囲内の精度で問題なく得ることができる場合は、トランジスタＴｒ１は飽和領域で動作しているものとみなせる。
【０２５５】
図１８に示す積和演算回路の構成とすることにより、デジタルデータに変換せずとも演算処理を実行することができるので、半導体装置の回路規模を小さく抑えることができる。或いは、図１８に示す積和演算回路の構成とすることにより、デジタルデータに変換せずとも演算処理を実行することができるので、演算処理に要する時間を抑えることができる。或いは、図１８に示す積和演算回路の構成とすることにより、演算処理に要する時間を抑えつつ、半導体装置の低消費電力化を実現することができる。
【０２５６】
次いで、アナログメモリ２０１、参照アナログメモリ２０２、電流ソース回路２０３、電流シンク回路２０４、および電流源回路２０５の具体的な構成の一例について、図１９を用いて説明する。
【０２５７】
図１９では、一例として、任意の２行２列のメモリセルＭＣと、任意の２行１列のメモリセルＭＣＲとの、具体的な回路構成と接続関係とを示している。具体的に図１９では、ｉ行ｊ列目のメモリセルＭＣ［ｉ、ｊ］と、ｉ＋１行ｊ列目のメモリセルＭＣ［ｉ＋１、ｊ］と、ｉ行ｊ＋１列目のメモリセルＭＣ［ｉ、ｊ＋１］と、ｉ＋１行ｊ＋１列目のメモリセルＭＣ［ｉ＋１、ｊ＋１］とを図示している。また、具体的に図１９では、ｉ行目のメモリセルＭＣＲ［ｉ］と、ｉ＋１行目のメモリセルＭＣＲ［ｉ＋１］とを図示している。
【０２５８】
ｉ行目のメモリセルＭＣ［ｉ、ｊ］と、メモリセルＭＣ［ｉ、ｊ＋１］と、メモリセルＭＣＲ［ｉ］とは、配線ＲＷ［ｉ］及び配線ＷＷ［ｉ］に接続されている。また、ｉ＋１行目のメモリセルＭＣ［ｉ＋１、ｊ］と、メモリセルＭＣ［ｉ＋１、ｊ＋１］と、メモリセルＭＣＲ［ｉ＋１］とは、配線ＲＷ［ｉ＋１］及び配線ＷＷ［ｉ＋１］に接続されている。
【０２５９】
ｊ列目のメモリセルＭＣ［ｉ、ｊ］と、メモリセルＭＣ［ｉ＋１、ｊ］とは、配線ＷＤ［ｊ］、配線ＶＲ［ｊ］、及び配線ＢＬ［ｊ］に接続されている。また、ｊ＋１列目のメモリセルＭＣ［ｉ、ｊ＋１］と、メモリセルＭＣ［ｉ＋１、ｊ＋１］とは、配線ＷＤ［ｊ＋１］、配線ＶＲ［ｊ＋１］、及び配線ＢＬ［ｊ＋１］に接続されている。また、メモリセルＭＣＲ［ｉ］と、ｉ＋１行目のメモリセルＭＣＲ［ｉ＋１］とは、配線ＷＤＲＥＦ、配線ＶＲＲＥＦ、及び配線ＢＬＲＥＦに接続されている。
【０２６０】
そして、各メモリセルＭＣと各メモリセルＭＣＲとは、トランジスタＴｒ１と、トランジスタＴｒ２と、容量素子Ｃ１と、を有する。トランジスタＴｒ２は、メモリセルＭＣまたはメモリセルＭＣＲへの第１のアナログ電位の入力を制御する機能を有する。トランジスタＴｒ１は、ゲートに入力された電位に従って、アナログ電流を生成する機能を有する。容量素子Ｃ１は、メモリセルＭＣまたはメモリセルＭＣＲにおいて保持されている第１のアナログ電位または第１のアナログ電位に応じた電位に、第２のアナログ電位或いは第２のアナログ電位に応じた電位を加算する機能を有する。
【０２６１】
具体的に、図１９に示すメモリセルＭＣでは、トランジスタＴｒ１は、ゲートが配線ＷＷに接続され、ソース又はドレインの一方が配線ＷＤに接続され、ソース又はドレインの他方がトランジスタＴｒ２のゲートに接続されている。また、トランジスタＴｒ２は、ソース又はドレインの一方が配線ＶＲに接続され、ソース又はドレインの他方が配線ＢＬに接続されている。容量素子Ｃ１は、第１の電極が配線ＲＷに接続され、第２の電極がトランジスタＴｒ２のゲートに接続されている。
【０２６２】
また、図１９に示すメモリセルＭＣＲでは、トランジスタＴｒ１は、ゲートが配線ＷＷに接続され、ソース又はドレインの一方が配線ＷＤＲＥＦに接続され、ソース又はドレインの他方がトランジスタＴｒ２のゲートに接続されている。また、トランジスタＴｒ２は、ソース又はドレインの一方が配線ＶＲＲＥＦに接続され、ソース又はドレインの他方が配線ＢＬＲＥＦに接続されている。容量素子Ｃ１は、第１の電極が配線ＲＷに接続され、第２の電極がトランジスタＴｒ２のゲートに接続されている。
【０２６３】
メモリセルＭＣにおいてトランジスタＴｒ１のゲートをノードＮとすると、メモリセルＭＣでは、トランジスタＴｒ２を介してノードＮに第１のアナログ電位が入力され、次いでトランジスタＴｒ２がオフになるとノードＮが浮遊状態になり、ノードＮにおいて第１のアナログ電位または第１のアナログ電位に応じた電位が保持される。また、メモリセルＭＣでは、ノードＮが浮遊状態になると、容量素子Ｃ１の第１の電極に入力された第２のアナログ電位がノードＮに与えられる。上記動作により、ノードＮは、第１のアナログ電位または第１のアナログ電位に応じた電位に、第２のアナログ電位または第２のアナログ電位に応じた電位が加算されることで得られる電位となる。
【０２６４】
なお、容量素子Ｃ１の第１の電極の電位は容量素子Ｃ１を介してノードＮに与えられるため、実際には、第１の電極の電位の変化量がそのままノードＮの電位の変化量に反映されるわけではない。具体的には、容量素子Ｃ１の容量値と、トランジスタＴｒ１のゲート容量の容量値と、寄生容量の容量値とから一意に決まる結合係数を、第１の電極の電位の変化量に乗ずることで、ノードＮの電位の変化量を正確に算出することができる。以下、説明を分かり易くするために、第１の電極の電位の変化量がほぼノードＮの電位の変化量に反映されるものとして説明を行う。
【０２６５】
トランジスタＴｒ１は、ノードＮの電位にしたがってそのドレイン電流が定まる。よって、トランジスタＴｒ２がオフになることでノードＮの電位が保持されると、トランジスタＴｒ１のドレイン電流の値も保持される。上記ドレイン電流には第１のアナログ電位と第２のアナログ電位が反映されている。
【０２６６】
また、メモリセルＭＣＲにおいてトランジスタＴｒ１のゲートをノードＮＲＥＦとすると、メモリセルＭＣＲでは、トランジスタＴｒ２を介してノードＮＲＥＦに第１の参照電位または第１の参照電位に応じた電位が入力され、次いでトランジスタＴｒ２がオフになるとノードＮＲＥＦが浮遊状態になり、ノードＮＲＥＦにおいて第１の参照電位または第１の参照電位に応じた電位が保持される。また、メモリセルＭＣＲでは、ノードＮＲＥＦが浮遊状態になると、容量素子Ｃ１の第１の電極に入力された第２のアナログ電位がノードＮＲＥＦに与えられる。上記動作により、ノードＮＲＥＦは、第１の参照電位または第１の参照電位に応じた電位に、第２のアナログ電位または第２のアナログ電位に応じた電位が加算されることで得られる電位となる。
【０２６７】
トランジスタＴｒ１は、ノードＮＲＥＦの電位にしたがってそのドレイン電流が定まる。よって、トランジスタＴｒ２がオフになることでノードＮＲＥＦの電位が保持されると、トランジスタＴｒ１のドレイン電流の値も保持される。上記ドレイン電流には第１の参照電位と第２のアナログ電位が反映されている。
【０２６８】
メモリセルＭＣ［ｉ、ｊ］のトランジスタＴｒ２に流れるドレイン電流を電流Ｉ［ｉ、ｊ］とし、メモリセルＭＣ［ｉ＋１、ｊ］のトランジスタＴｒ２に流れるドレイン電流を電流Ｉ［ｉ＋１、ｊ］とすると、配線ＢＬ［ｊ］からメモリセルＭＣ［ｉ、ｊ］及びメモリセルＭＣ［ｉ＋１、ｊ］に供給される電流の和は、電流Ｉ［ｊ］となる。また、メモリセルＭＣ［ｉ、ｊ＋１］のトランジスタＴｒ２に流れるドレイン電流を電流Ｉ［ｉ、ｊ＋１］とし、メモリセルＭＣ［ｉ＋１、ｊ＋１］のトランジスタＴｒ２に流れるドレイン電流を電流Ｉ［ｉ＋１、ｊ＋１］とすると、配線ＢＬ［ｊ＋１］からメモリセルＭＣ［ｉ、ｊ＋１］及びメモリセルＭＣ［ｉ＋１、ｊ＋１］に供給される電流の和は、電流Ｉ［ｊ＋１］となる。また、メモリセルＭＣＲ［ｉ］のトランジスタＴｒ２に流れるドレイン電流を電流ＩＲＥＦ［ｉ］とし、メモリセルＭＣＲ［ｉ＋１］のトランジスタＴｒ２に流れるドレイン電流を電流ＩＲＥＦ［ｉ＋１］とすると、配線ＢＬＲＥＦからメモリセルＭＣＲ［ｉ］及びメモリセルＭＣＲ［ｉ＋１］に供給される電流の和は、電流ＩＲＥＦとなる。
【０２６９】
また図１９に示す電流ソース回路２０３は、ｊ列目のメモリセルＭＣに対応した電流ソース回路２０３［ｊ］と、ｊ＋１列目のメモリセルＭＣに対応した電流ソース回路２０３［ｊ＋１］とを有する。また、図１９に示す電流シンク回路２０４は、ｊ列目のメモリセルＭＣに対応した電流シンク回路２０４［ｊ］と、ｊ＋１列目のメモリセルＭＣに対応した電流シンク回路２０４［ｊ＋１］とを有する。
【０２７０】
電流ソース回路２０３［ｊ］及び電流シンク回路２０４［ｊ］は、配線ＢＬ［ｊ］に接続されている。また、電流ソース回路２０３［ｊ＋１］及び電流シンク回路２０４［ｊ＋１］は、配線ＢＬ［ｊ＋１］に接続されている。
【０２７１】
電流源回路２０５は、配線ＢＬ［ｊ］、配線ＢＬ［ｊ＋１］、配線ＢＬＲＥＦに接続されている。そして、電流源回路２０５は、配線ＢＬＲＥＦに電流ＩＲＥＦを供給する機能と、電流ＩＲＥＦと同じ電流または電流ＩＲＥＦに応じた電流を、配線ＢＬ［ｊ］及び配線ＢＬ［ｊ＋１］のそれぞれに供給する機能を有する。
【０２７２】
具体的に、電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］は、トランジスタＴｒ７乃至Ｔｒ９と、容量素子Ｃ３とをそれぞれ有する。オフセットの電流を設定する際に、電流ソース回路２０３［ｊ］において、トランジスタＴｒ７は、電流Ｉ［ｊ］が電流ＩＲＥＦよりも大きい場合に、電流Ｉ［ｊ］と電流ＩＲＥＦの差分に相当する電流ＩＣＭ［ｊ］を生成する機能を有する。また、電流ソース回路２０３［ｊ＋１］において、トランジスタＴｒ７は、電流Ｉ［ｊ＋１］が電流ＩＲＥＦよりも大きい場合に、電流Ｉ［ｊ＋１］と電流ＩＲＥＦの差分に相当する電流ＩＣＭ［ｊ＋１］を生成する機能を有する。電流ＩＣＭ［ｊ］及び電流ＩＣＭ［ｊ＋１］は、電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］から配線ＢＬ［ｊ］及び配線ＢＬ［ｊ＋１］に供給される。
【０２７３】
電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］において、トランジスタＴｒ７は、ソース又はドレインの一方が対応する配線ＢＬに接続されており、ソース又はドレインの他方が所定の電位が供給される配線に接続されている。トランジスタＴｒ８は、ソース又はドレインの一方が配線ＢＬに接続されており、ソース又はドレインの他方がトランジスタＴｒ７のゲートに接続されている。トランジスタＴｒ９は、ソース又はドレインの一方がトランジスタＴｒ７のゲートに接続されており、ソース又はドレインの他方が所定の電位が供給される配線に接続されている。容量素子Ｃ３は、第１の電極がトランジスタＴｒ７のゲートに接続されており、第２の電極が所定の電位が供給される配線に接続されている。
【０２７４】
トランジスタＴｒ８のゲートは配線ＯＳＭに接続されており、トランジスタＴｒ９のゲートは配線ＯＲＭに接続されている。
【０２７５】
なお、図１９では、トランジスタＴｒ７がｐチャネル型であり、トランジスタＴｒ８及びＴｒ９がｎチャネル型である場合を例示している。
【０２７６】
また、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］は、トランジスタＴｒ４乃至Ｔｒ６と、容量素子Ｃ４とをそれぞれ有する。オフセットの電流を設定する際に、電流シンク回路２０４［ｊ］において、トランジスタＴｒ４は、電流Ｉ［ｊ］が電流ＩＲＥＦよりも小さい場合に、電流Ｉ［ｊ］と電流ＩＲＥＦの差分に相当する電流ＩＣＰ［ｊ］を生成する機能を有する。また、電流シンク回路２０４［ｊ＋１］において、トランジスタＴｒ４は、電流Ｉ［ｊ＋１］が電流ＩＲＥＦよりも小さい場合に、電流Ｉ［ｊ＋１］と電流ＩＲＥＦの差分に相当する電流ＩＣＰ［ｊ＋１］を生成する機能を有する。電流ＩＣＰ［ｊ］及び電流ＩＣＰ［ｊ＋１］は、配線ＢＬ［ｊ］及び配線ＢＬ［ｊ＋１］から電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］に引き込まれる。
【０２７７】
なお、電流ＩＣＭ［ｊ］と電流ＩＣＰ［ｊ］とが、Ｉｏｆｆｓｅｔ［ｊ］に相当する。また、なお、電流ＩＣＭ［ｊ＋１］と電流ＩＣＰ［ｊ＋１］とが、Ｉｏｆｆｓｅｔ［ｊ＋１］に相当する。
【０２７８】
そして、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］において、トランジスタＴｒ４は、ソース又はドレインの一方が対応する配線ＢＬに接続されており、ソース又はドレインの他方が所定の電位が供給される配線に接続されている。トランジスタＴｒ５は、ソース又はドレインの一方が配線ＢＬに接続されており、ソース又はドレインの他方がトランジスタＴｒ４のゲートに接続されている。トランジスタＴｒ６は、ソース又はドレインの一方がトランジスタＴｒ４のゲートに接続されており、ソース又はドレインの他方が所定の電位が供給される配線に接続されている。容量素子Ｃ４は、第１の電極がトランジスタＴｒ４のゲートに接続されており、第２の電極が所定の電位が供給される配線に接続されている。
【０２７９】
トランジスタＴｒ５のゲートは配線ＯＳＰに接続されており、トランジスタＴｒ６のゲートは配線ＯＲＰに接続されている。
【０２８０】
なお、図１９では、トランジスタＴｒ４乃至Ｔｒ６がｎチャネル型である場合を例示している。
【０２８１】
また、電流源回路２０５は、配線ＢＬに対応したトランジスタＴｒ１０と、配線ＢＬＲＥＦに対応したトランジスタＴｒ１１とを有する。具体的に、図１９に示す電流源回路２０５は、トランジスタＴｒ１０として、配線ＢＬ［ｊ］に対応したトランジスタＴｒ１０［ｊ］と、配線ＢＬ［ｊ＋１］に対応したトランジスタＴｒ１０［ｊ＋１］とを有する場合を例示している。
【０２８２】
トランジスタＴｒ１０のゲートは、トランジスタＴｒ１１のゲートに接続されている。また、トランジスタＴｒ１０は、ソース又はドレインの一方が対応する配線ＢＬに接続されており、ソース又はドレインの他方が所定の電位が供給される配線に接続されている。トランジスタＴｒ１１は、ソース又はドレインの一方が配線ＢＬＲＥＦに接続されており、ソース又はドレインの他方が所定の電位が供給される配線に接続されている。
【０２８３】
トランジスタＴｒ１０とトランジスタＴｒ１１とは、同じ極性を有している。図１９では、トランジスタＴｒ１０とトランジスタＴｒ１１とが、共にｐチャネル型を有する場合を例示している。
【０２８４】
トランジスタＴｒ１１のドレイン電流は電流ＩＲＥＦに相当する。そして、トランジスタＴｒ１０とトランジスタＴｒ１１とはカレントミラー回路としての機能を有するため、トランジスタＴｒ１０のドレイン電流は、トランジスタＴｒ１１のドレイン電流とほぼ同じ値、またはトランジスタＴｒ１１のドレイン電流に応じた値となる。
【０２８５】
次いで、図１９を用いて、積和演算回路２００の具体的な動作の一例について説明する。
【０２８６】
図２０は、図１９に示すメモリセルＭＣ、メモリセルＭＣＲ、電流ソース回路２０３、電流シンク回路２０４、および電流源回路２０５の動作を示すタイミングチャートの一例に相当する。図２０では、時刻Ｔ０１乃至時刻Ｔ０４において、メモリセルＭＣ及びメモリセルＭＣＲに第１のアナログ電流を格納する動作が行われる。時刻Ｔ０５乃至時刻Ｔ１０において、電流ソース回路２０３及び電流シンク回路２０４にオフセットの電流Ｉｏｆｆｓｅｔを設定する動作が行われる。時刻Ｔ１１乃至時刻Ｔ１６において、第１のアナログ電流と第２のアナログ電流との積和値に対応したデータを取得する動作が行われる。
【０２８７】
なお、電源線ＶＲ［ｊ］及び電源線ＶＲ［ｊ＋１］にはローレベルの電位が供給されるものとする。また、電流ソース回路２０３に接続される所定の電位を有する配線は、全てハイレベルの電位ＶＤＤが供給されるものとする。また、電流シンク回路２０４に接続される所定の電位を有する配線は、全てローレベルの電位ＶＳＳが供給されるものとする。また、電流源回路２０５に接続される所定の電位を有する配線は、全てハイレベルの電位ＶＤＤが供給されるものとする。
【０２８８】
また、トランジスタＴｒ１、Ｔｒ４、Ｔｒ７、Ｔｒ１０［ｊ］、Ｔｒ１０［ｊ＋１］、Ｔｒ１１は飽和領域で動作するものとする。
【０２８９】
まず、時刻Ｔ０１乃至時刻Ｔ０２において、配線ＷＷ［ｉ］にハイレベルの電位が与えられ、配線ＷＷ［ｉ＋１］にローレベルの電位が与えられる。上記動作により、図１９に示すメモリセルＭＣ［ｉ、ｊ］、メモリセルＭＣ［ｉ、ｊ＋１］、メモリセルＭＣＲ［ｉ］においてトランジスタＴｒ２がオンになる。また、メモリセルＭＣ［ｉ＋１、ｊ］、メモリセルＭＣ［ｉ＋１、ｊ＋１］、メモリセルＭＣＲ［ｉ＋１］においてトランジスタＴｒ２がオフの状態を維持する。
【０２９０】
また、時刻Ｔ０１乃至時刻Ｔ０２では、図１９に示す配線ＷＤ［ｊ］と配線ＷＤ［ｊ＋１］とに、第１の参照電位ＶＰＲから第１のアナログ電位を差し引いた電位がそれぞれ与えられる。具体的に、配線ＷＤ［ｊ］には電位ＶＰＲ−Ｖｘ［ｉ、ｊ］が与えられ、配線ＷＤ［ｊ＋１］には電位ＶＰＲ−Ｖｘ［ｉ、ｊ＋１］が与えられる。また、配線ＷＤＲＥＦには第１の参照電位ＶＰＲが与えられ、配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］には基準電位として電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。
【０２９１】
よって、図１９に示すメモリセルＭＣ［ｉ、ｊ］のノードＮ［ｉ、ｊ］にはトランジスタＴｒ２を介して電位ＶＰＲ−Ｖｘ［ｉ、ｊ］が与えられ、メモリセルＭＣ［ｉ、ｊ＋１］のノードＮ［ｉ、ｊ＋１］にはトランジスタＴｒ２を介して電位ＶＰＲ−Ｖｘ［ｉ、ｊ＋１］が与えられ、メモリセルＭＣＲ［ｉ］のノードＮＲＥＦ［ｉ］にはトランジスタＴｒ２を介して電位ＶＰＲが与えられる。
【０２９２】
時刻Ｔ０２が終了すると、図１９に示す配線ＷＷ［ｉ］に与えられる電位はハイレベルからローレベルに変化し、メモリセルＭＣ［ｉ、ｊ］、メモリセルＭＣ［ｉ、ｊ＋１］、メモリセルＭＣＲ［ｉ］においてトランジスタＴｒ２がオフになる。上記動作により、ノードＮ［ｉ、ｊ］には電位ＶＰＲ−Ｖｘ［ｉ、ｊ］が保持され、ノードＮ［ｉ、ｊ＋１］には電位ＶＰＲ−Ｖｘ［ｉ、ｊ＋１］が保持され、ノードＮＲＥＦ［ｉ］には電位ＶＰＲが保持される。
【０２９３】
次いで、時刻Ｔ０３乃至時刻Ｔ０４において、図１９に示す配線ＷＷ［ｉ］の電位はローレベルに維持され、配線ＷＷ［ｉ＋１］にハイレベルの電位が与えられる。上記動作により、図１９に示すメモリセルＭＣ［ｉ＋１、ｊ］、メモリセルＭＣ［ｉ＋１、ｊ＋１］、メモリセルＭＣＲ［ｉ＋１］においてトランジスタＴｒ２がオンになる。また、メモリセルＭＣ［ｉ、ｊ］、メモリセルＭＣ［ｉ、ｊ＋１］、メモリセルＭＣＲ［ｉ］においてトランジスタＴｒ２がオフの状態を維持する。
【０２９４】
また、時刻Ｔ０３乃至時刻Ｔ０４では、図１９に示す配線ＷＤ［ｊ］と配線ＷＤ［ｊ＋１］とに、第１の参照電位ＶＰＲから第１のアナログ電位を差し引いた電位がそれぞれ与えられる。具体的に、配線ＷＤ［ｊ］には電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］が与えられ、配線ＷＤ［ｊ＋１］には電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ＋１］が与えられる。また、配線ＷＤＲＥＦには第１の参照電位ＶＰＲが与えられ、配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］には基準電位として電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。
【０２９５】
よって、図１９に示すメモリセルＭＣ［ｉ＋１、ｊ］のノードＮ［ｉ＋１、ｊ］にはトランジスタＴｒ２を介して電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］が与えられ、メモリセルＭＣ［ｉ＋１、ｊ＋１］のノードＮ［ｉ＋１、ｊ＋１］にはトランジスタＴｒ２を介して電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ＋１］が与えられ、メモリセルＭＣＲ［ｉ＋１］のノードＮＲＥＦ［ｉ＋１］にはトランジスタＴｒ２を介して電位ＶＰＲが与えられる。
【０２９６】
時刻Ｔ０４が終了すると、図１９に示す配線ＷＷ［ｉ＋１］に与えられる電位はハイレベルからローレベルに変化し、メモリセルＭＣ［ｉ＋１、ｊ］、メモリセルＭＣ［ｉ＋１、ｊ＋１］、メモリセルＭＣＲ［ｉ＋１］においてトランジスタＴｒ２がオフになる。上記動作により、ノードＮ［ｉ＋１、ｊ］には電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ］が保持され、ノードＮ［ｉ＋１、ｊ＋１］には電位ＶＰＲ−Ｖｘ［ｉ＋１、ｊ＋１］が保持され、ノードＮＲＥＦ［ｉ＋１］には電位ＶＰＲが保持される。
【０２９７】
次いで、時刻Ｔ０５乃至時刻Ｔ０６において、図１９に示す配線ＯＲＰ及び配線ＯＲＭにハイレベルの電位が与えられる。図１９に示す電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］では、配線ＯＲＭにハイレベルの電位が与えられることで、トランジスタＴｒ９がオンになり、トランジスタＴｒ７のゲートは電位ＶＤＤが与えられることでリセットされる。また、図１９に示す電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］では、配線ＯＲＰにハイレベルの電位が与えられることで、トランジスタＴｒ６がオンになり、トランジスタＴｒ４のゲートは電位ＶＳＳが与えられることでリセットされる。
【０２９８】
時刻Ｔ０６が終了すると、図１９に示す配線ＯＲＰ及び配線ＯＲＭに与えられる電位はハイレベルからローレベルに変化し、電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］においてトランジスタＴｒ９がオフになり、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］においてトランジスタＴｒ６がオフになる。上記動作により、電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］においてトランジスタＴｒ７のゲートに電位ＶＤＤが保持され、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］においてトランジスタＴｒ４のゲートに電位ＶＳＳが保持される。
【０２９９】
次いで、時刻Ｔ０７乃至時刻Ｔ０８において、図１９に示す配線ＯＳＰにハイレベルの電位が与えられる。また、図１９に示す配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］には基準電位として電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。配線ＯＳＰにハイレベルの電位が与えられることにより、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］においてトランジスタＴｒ５がオンになる。
【０３００】
配線ＢＬ［ｊ］に流れるＩ［ｊ］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも小さい場合、すなわちΔＩ［ｊ］が正の場合、図１９に示すメモリセルＭＣ［ｉ、ｊ］のトランジスタＴｒ１が引き込むことのできる電流と、メモリセルＭＣ［ｉ＋１、ｊ］のトランジスタＴｒ１が引き込むことのできる電流との和が、トランジスタＴｒ１０［ｊ］のドレイン電流より小さいことを意味する。よって、電流ΔＩ［ｊ］が正の場合、電流シンク回路２０４［ｊ］においてトランジスタＴｒ５がオンになると、トランジスタＴｒ１０［ｊ］のドレイン電流の一部がトランジスタＴｒ４のゲートに流れ込み、当該ゲートの電位が上昇し始める。そして、トランジスタＴｒ４のドレイン電流が電流ΔＩ［ｊ］とほぼ等しくなると、トランジスタＴｒ４のゲートの電位は所定の値に収束する。このときのトランジスタＴｒ４のゲートの電位は、トランジスタＴｒ４のドレイン電流が電流ΔＩ［ｊ］、すなわちＩｏｆｆｓｅｔ［ｊ］（＝ＩＣＰ［ｊ］）となるような電位に相当する。つまり、電流シンク回路２０４［ｊ］のトランジスタＴｒ４は、電流ＩＣＰ［ｊ］を流し得る電流源に設定された状態であると言える。
【０３０１】
同様に、配線ＢＬ［ｊ＋１］に流れるＩ［ｊ＋１］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも小さい場合、つまり電流ΔＩ［ｊ＋１］が正の場合、電流シンク回路２０４［ｊ＋１］においてトランジスタＴｒ５がオンになると、トランジスタＴｒ１０［ｊ＋１］のドレイン電流の一部がトランジスタＴｒ４のゲートに流れ込み、当該ゲートの電位が上昇し始める。そして、トランジスタＴｒ４のドレイン電流が電流ΔＩ［ｊ＋１］とほぼ等しくなると、トランジスタＴｒ４のゲートの電位は所定の値に収束する。このときのトランジスタＴｒ４のゲートの電位は、トランジスタＴｒ４のドレイン電流が電流ΔＩ［ｊ＋１］、すなわちＩｏｆｆｓｅｔ［ｊ＋１］（＝ＩＣＰ［ｊ＋１］）となるような電位に相当する。つまり、電流シンク回路２０４［ｊ＋１］のトランジスタＴｒ４は、電流ＩＣＰ［ｊ＋１］を流し得る電流源に設定された状態であると言える。
【０３０２】
時刻Ｔ０８が終了すると、図１９に示す配線ＯＳＰに与えられる電位はハイレベルからローレベルに変化し、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］においてトランジスタＴｒ５がオフになる。上記動作により、トランジスタＴｒ４のゲートの電位は保持される。よって、電流シンク回路２０４［ｊ］は電流ＩＣＰ［ｊ］を流し得る電流源に設定された状態を維持し、電流シンク回路２０４［ｊ＋１］は電流ＩＣＰ［ｊ＋１］を流し得る電流源に設定された状態を維持する。
【０３０３】
次いで、時刻Ｔ０９乃至時刻Ｔ１０において、図１９に示す配線ＯＳＭにハイレベルの電位が与えられる。また、図１９に示す配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］には基準電位として電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。配線ＯＳＭにハイレベルの電位が与えられることにより、電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］においてトランジスタＴｒ８がオンになる。
【０３０４】
配線ＢＬ［ｊ］に流れるＩ［ｊ］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも大きい場合、すなわちΔＩ［ｊ］が負の場合、図１９に示すメモリセルＭＣ［ｉ、ｊ］のトランジスタＴｒ１が引き込むことのできる電流と、メモリセルＭＣ［ｉ＋１、ｊ］のトランジスタＴｒ１が引き込むことのできる電流との和が、トランジスタＴｒ１０［ｊ］のドレイン電流より大きいことを意味する。よって、電流ΔＩ［ｊ］が負の場合、電流ソース回路２０３［ｊ］においてトランジスタＴｒ８がオンになると、トランジスタＴｒ７のゲートから配線ＢＬ［ｊ］に電流が流れ出し、当該ゲートの電位が下降し始める。そして、トランジスタＴｒ７のドレイン電流が電流ΔＩ［ｊ］とほぼ等しくなると、トランジスタＴｒ７のゲートの電位は所定の値に収束する。このときのトランジスタＴｒ７のゲートの電位は、トランジスタＴｒ７のドレイン電流が電流ΔＩ［ｊ］、すなわちＩｏｆｆｓｅｔ［ｊ］（＝ＩＣＭ［ｊ］）となるような電位に相当する。つまり、電流ソース回路２０３［ｊ］のトランジスタＴｒ７は、電流ＩＣＭ［ｊ］を流し得る電流源に設定された状態であると言える。
【０３０５】
同様に、配線ＢＬ［ｊ＋１］に流れるＩ［ｊ＋１］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも大きい場合、つまり電流ΔＩ［ｊ＋１］が負の場合、電流ソース回路２０３［ｊ＋１］においてトランジスタＴｒ８がオンになると、トランジスタＴｒ７のゲートから配線ＢＬ［ｊ＋１］に電流が流れ出し、当該ゲートの電位が下降し始める。そして、トランジスタＴｒ７のドレイン電流が電流ΔＩ［ｊ＋１］の絶対値とほぼ等しくなると、トランジスタＴｒ７のゲートの電位は所定の値に収束する。このときのトランジスタＴｒ７のゲートの電位は、トランジスタＴｒ７のドレイン電流が電流ΔＩ［ｊ＋１］、すなわちＩｏｆｆｓｅｔ［ｊ＋１］（＝ＩＣＭ［ｊ＋１］）の絶対値に等しい電位に相当する。つまり、電流ソース回路２０３［ｊ＋１］のトランジスタＴｒ７は、電流ＩＣＭ［ｊ＋１］を流し得る電流源に設定された状態であると言える。
【０３０６】
時刻Ｔ０８が終了すると、図１９に示す配線ＯＳＭに与えられる電位はハイレベルからローレベルに変化し、電流ソース回路２０３［ｊ］及び電流ソース回路２０３［ｊ＋１］においてトランジスタＴｒ８がオフになる。上記動作により、トランジスタＴｒ７のゲートの電位は保持される。よって、電流ソース回路２０３［ｊ］は電流ＩＣＭ［ｊ］を流し得る電流源に設定された状態を維持し、電流ソース回路２０３［ｊ＋１］は電流ＩＣＭ［ｊ＋１］を流し得る電流源に設定された状態を維持する。
【０３０７】
なお、電流シンク回路２０４［ｊ］及び電流シンク回路２０４［ｊ＋１］において、トランジスタＴｒ４は電流を引き込む機能を有する。そのため、時刻Ｔ０７乃至時刻Ｔ０８において配線ＢＬ［ｊ］に流れる電流Ｉ［ｊ］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも大きくΔＩ［ｊ］が負の場合、或いは、配線ＢＬ［ｊ＋１］に流れる電流Ｉ［ｊ＋１］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも大きくΔＩ［ｊ＋１］が負の場合、電流シンク回路２０４［ｊ］または電流シンク回路２０４［ｊ＋１］から過不足なく配線ＢＬ［ｊ］または配線ＢＬ［ｊ＋１］に電流を供給するのが難しくなる恐れがある。この場合、配線ＢＬ［ｊ］または配線ＢＬ［ｊ＋１］に流れる電流と、配線ＢＬＲＥＦに流れる電流とのバランスを取るために、メモリセルＭＣのトランジスタＴｒ１と、電流シンク回路２０４［ｊ］または電流シンク回路２０４［ｊ＋１］のトランジスタＴｒ４と、トランジスタＴｒ１０［ｊ］またはＴｒ１０［ｊ＋１］とが、共に飽和領域で動作することが困難になる可能性がある。
【０３０８】
時刻Ｔ０７乃至時刻Ｔ０８においてΔＩ［ｊ］が負の場合でも、トランジスタＴｒ１、Ｔｒ４、Ｔｒ１０［ｊ］またはＴｒ１０［ｊ＋１］における飽和領域での動作を確保するために、時刻Ｔ０５乃至時刻Ｔ０６において、トランジスタＴｒ７のゲートを電位ＶＤＤにリセットするのではなく、トランジスタＴｒ７のゲートの電位を所定のドレイン電流が得られる程度の高さに設定しておいても良い。上記構成により、トランジスタＴｒ１０［ｊ］またはＴｒ１０［ｊ＋１］のドレイン電流に加えてトランジスタＴｒ７から電流が供給されるため、トランジスタＴｒ１において引き込めない分の電流を、トランジスタＴｒ４においてある程度引き込むことができるため、トランジスタＴｒ１、Ｔｒ４、Ｔｒ１０［ｊ］またはＴｒ１０［ｊ＋１］における飽和領域での動作を確保することができる。
【０３０９】
なお、時刻Ｔ０９乃至時刻Ｔ１０において、配線ＢＬ［ｊ］に流れるＩ［ｊ］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも小さい場合、すなわちΔＩ［ｊ］が正の場合、時刻Ｔ０７乃至時刻Ｔ０８において電流シンク回路２０４［ｊ］が電流ＩＣＰ［ｊ］を流し得る電流源に既に設定されているため、電流ソース回路２０３［ｊ］においてトランジスタＴｒ７のゲートの電位はほぼ電位ＶＤＤのままとなる。同様に、配線ＢＬ［ｊ＋１］に流れるＩ［ｊ＋１］が配線ＢＬＲＥＦに流れる電流ＩＲＥＦよりも小さい場合、すなわちΔＩ［ｊ＋１］が正の場合、時刻Ｔ０７乃至時刻Ｔ０８において電流シンク回路２０４［ｊ＋１］が電流ＩＣＰ［ｊ＋１］を流し得る電流源に既に設定されているため、電流ソース回路２０３［ｊ＋１］においてトランジスタＴｒ７のゲートの電位はほぼ電位ＶＤＤのままとなる。
【０３１０】
次いで、時刻Ｔ１１乃至時刻Ｔ１２において、図１９に示す配線ＲＷ［ｉ］に第２のアナログ電位Ｖｗ［ｉ］が与えられる。また、配線ＲＷ［ｉ＋１］には、基準電位として電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられたままである。具体的に、配線ＲＷ［ｉ］の電位は、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２に対して電位差Ｖｗ［ｉ］だけ高い電位となるが、以下説明を分かり易くするために、配線ＲＷ［ｉ］の電位は電位Ｖｗ［ｉ］であると仮定する。
【０３１１】
配線ＲＷ［ｉ］が電位Ｖｗ［ｉ］になると、容量素子Ｃ１の第１の電極の電位の変化量がほぼノードＮの電位の変化量に反映されるものと仮定すると、図１９に示すメモリセルＭＣ［ｉ、ｊ］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ、ｊ］＋Ｖｗ［ｉ］となり、メモリセルＭＣ［ｉ、ｊ＋１］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ、ｊ＋１］＋Ｖｗ［ｉ］となる。そして、上記の式６から、メモリセルＭＣ［ｉ、ｊ］に対応する第１のアナログ電流と第２のアナログ電流の積和値は、電流ΔＩ［ｊ］からＩｏｆｆｓｅｔ［ｊ］を差し引いた電流、すなわち、配線ＢＬ［ｊ］から流れ出る電流Ｉｏｕｔ［ｊ］に反映されることが分かる。また、メモリセルＭＣ［ｉ、ｊ＋１］に対応する第１のアナログ電流と第２のアナログ電流の積和値は、電流ΔＩ［ｊ＋１］からＩｏｆｆｓｅｔ［ｊ＋１］を差し引いた電流、すなわち、配線ＢＬ［ｊ＋１］から流れ出る電流Ｉｏｕｔ［ｊ＋１］に反映されることが分かる。
【０３１２】
時刻Ｔ１２が終了すると、配線ＲＷ［ｉ］には、再度、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。
【０３１３】
次いで、時刻Ｔ１３乃至時刻Ｔ１４において、図１９に示す配線ＲＷ［ｉ＋１］に第２のアナログ電位Ｖｗ［ｉ＋１］が与えられる。また、配線ＲＷ［ｉ］には、基準電位として電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられたままである。具体的に、配線ＲＷ［ｉ＋１］の電位は、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２に対して電位差Ｖｗ［ｉ＋１］だけ高い電位となるが、以下説明を分かり易くするために、配線ＲＷ［ｉ＋１］の電位は電位Ｖｗ［ｉ＋１］であると仮定する。
【０３１４】
配線ＲＷ［ｉ＋１］が電位Ｖｗ［ｉ＋１］になると、容量素子Ｃ１の第１の電極の電位の変化量がほぼノードＮの電位の変化量に反映されるものと仮定すると、図１９に示すメモリセルＭＣ［ｉ＋１、ｊ］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ＋１、ｊ］＋Ｖｗ［ｉ＋１］となり、メモリセルＭＣ［ｉ＋１、ｊ＋１］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ＋１、ｊ＋１］＋Ｖｗ［ｉ＋１］となる。そして、上記の式６から、メモリセルＭＣ［ｉ＋１、ｊ］に対応する第１と第２の積和値は、電流ΔＩ［ｊ］からＩｏｆｆｓｅｔ［ｊ］を差し引いた電流、すなわち、Ｉｏｕｔ［ｊ］に反映されることが分かる。また、メモリセルＭＣ［ｉ＋１、ｊ＋１］に対応する第１のアナログ電流と第２のアナログ電流の積和値は、電流ΔＩ［ｊ＋１］からＩｏｆｆｓｅｔ［ｊ＋１］を差し引いた電流、すなわち、Ｉｏｕｔ［ｊ＋１］に反映されることが分かる。
【０３１５】
時刻Ｔ１２が終了すると、配線ＲＷ［ｉ＋１］には、再度、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。
【０３１６】
次いで、時刻Ｔ１５乃至時刻Ｔ１６において、図１９に示す配線ＲＷ［ｉ］に第２のアナログ電位Ｖｗ［ｉ］が与えられ、配線ＲＷ［ｉ＋１］に第２のアナログ電位Ｖｗ［ｉ＋１］が与えられる。具体的に、配線ＲＷ［ｉ］の電位は、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２に対して電位差Ｖｗ［ｉ］だけ高い電位となり、配線ＲＷ［ｉ＋１］の電位は、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２に対して電位差Ｖｗ［ｉ＋１］だけ高い電位となるが、以下説明を分かり易くするために、配線ＲＷ［ｉ］の電位は電位Ｖｗ［ｉ］であり、配線ＲＷ［ｉ＋１］の電位は電位Ｖｗ［ｉ＋１］であると仮定する。
【０３１７】
配線ＲＷ［ｉ］が電位Ｖｗ［ｉ］になると、容量素子Ｃ１の第１の電極の電位の変化量がほぼノードＮの電位の変化量に反映されるものと仮定すると、図１９に示すメモリセルＭＣ［ｉ、ｊ］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ、ｊ］＋Ｖｗ［ｉ］となり、メモリセルＭＣ［ｉ、ｊ＋１］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ、ｊ＋１］＋Ｖｗ［ｉ］となる。また、配線ＲＷ［ｉ＋１］が電位Ｖｗ［ｉ＋１］になると、容量素子Ｃ１の第１の電極の電位の変化量がほぼノードＮの電位の変化量に反映されるものと仮定すると、図１９に示すメモリセルＭＣ［ｉ＋１、ｊ］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ＋１、ｊ］＋Ｖｗ［ｉ＋１］となり、メモリセルＭＣ［ｉ＋１、ｊ＋１］におけるノードＮの電位はＶＰＲ−Ｖｘ［ｉ＋１、ｊ＋１］＋Ｖｗ［ｉ＋１］となる。
【０３１８】
そして、上記の式６から、メモリセルＭＣ［ｉ、ｊ］とメモリセルＭＣ［ｉ＋１、ｊ］とに対応する第１と第２の積和値は、電流ΔＩ［ｊ］からＩｏｆｆｓｅｔ［ｊ］を差し引いた電流、すなわち、電流Ｉｏｕｔ［ｊ］に反映されることが分かる。また、メモリセルＭＣ［ｉ、ｊ＋１］とメモリセルＭＣ［ｉ＋１、ｊ＋１］とに対応する第１と第２の積和値は、電流ΔＩ［ｊ＋１］からＩｏｆｆｓｅｔ［ｊ＋１］を差し引いた電流、すなわち、電流Ｉｏｕｔ［ｊ＋１］に反映されることが分かる。
【０３１９】
時刻Ｔ１６が終了すると、配線ＲＷ［ｉ］及び配線ＲＷ［ｉ＋１］には、再度、基準電位である電位ＶＳＳと電位ＶＤＤの間の電位、例えば電位（ＶＤＤ＋ＶＳＳ）／２が与えられる。
【０３２０】
上記構成により、積和演算を小さな回路規模で行うことができる。また、上記構成により、積和演算を高速で行うことができる。また、上記構成により、低消費電力で積和演算を行うことができる。
【０３２１】
なお図１８乃至図２０で説明した積和演算回路の回路構成はあくまで一例であり、本発明の一態様を実現可能であれば任意の構成とすることができる。
【０３２２】
なお、トランジスタＴｒ２、Ｔｒ５、Ｔｒ６、Ｔｒ８、またはＴｒ９は、オフ電流の著しく低いトランジスタを用いることが望ましい。トランジスタＴｒ２にオフ電流の著しく低いトランジスタを用いることにより、ノードＮの電位の保持を長時間に渡って行うことができる。また、トランジスタＴｒ５及びＴｒ６にオフ電流の著しく低いトランジスタを用いることにより、トランジスタＴｒ４のゲートの電位の保持を、長時間に渡って行うことができる。また、トランジスタＴｒ８及びＴｒ９にオフ電流の著しく低いトランジスタを用いることにより、トランジスタＴｒ７のゲートの電位の保持を、長時間に渡って行うことができる。
【０３２３】
トランジスタのオフ電流を下げるには、例えば、チャネル形成領域をエネルギーギャップが広い半導体で形成すればよい。半導体のエネルギーギャップは、２．５ｅＶ以上、または２．７ｅＶ以上、または３ｅＶ以上であることが好ましい。このような半導体材料として酸化物半導体が挙げられる。トランジスタＴｒ２、Ｔｒ５、Ｔｒ６、Ｔｒ８、またはＴｒ９として、チャネル形成領域に酸化物半導体を含むトランジスタを用いればよい。チャネル幅で規格化したＯＳトランジスタのリーク電流は、ソースドレイン電圧が１０Ｖ、室温（２５℃程度）の状態で１０×１０−２１Ａ／μｍ（１０ゼプトＡ／μｍ）以下とすることが可能である。スイッチＳＷ２、ＳＷ３に適用されるＯＳトランジスタのリーク電流は、室温（２５℃程度）にて１×１０−１８Ａ以下、または、１×１０−２１Ａ以下、または１×１０−２４Ａ以下が好ましい。または、リーク電流は８５℃にて１×１０−１５Ａ以下、または１×１０−１８Ａ以下、または１×１０−２１Ａ以下であることが好ましい。
【０３２４】
酸化物半導体はエネルギーギャップが大きく、電子が励起されにくく、ホールの有効質量が大きい半導体である。このため、チャネル形成領域に酸化物半導体を含むトランジスタは、シリコン等を用いた一般的なトランジスタと比較して、アバランシェ崩壊等が生じにくい場合がある。アバランシェ崩壊に起因するホットキャリア劣化等が抑制されることで、チャネル形成領域に酸化物半導体を含むトランジスタは高いドレイン耐圧を有することとなり、高いドレイン電圧で駆動することが可能である。
【０３２５】
トランジスタのチャネル形成領域に含まれる酸化物半導体は、インジウム（Ｉｎ）および亜鉛（Ｚｎ）の少なくとも一方を含む酸化物半導体であることが好ましい。このような酸化物半導体としては、Ｉｎ酸化物、Ｚｎ酸化物、Ｉｎ−Ｚｎ酸化物、Ｉｎ−Ｍ−Ｚｎ酸化物（元素Ｍは、Ｇａ、Ａｌ、Ｔｉ、Ｙ、Ｚｒ、Ｌａ、Ｃｅ、Ｎｄ、またはＨｆ）が代表的である。これら酸化物半導体は、電子供与体（ドナー）となる水素などの不純物を低減し、かつ酸素欠損も低減することで、酸化物半導体をｉ型半導体（真性半導体）にする、あるいはｉ型半導体に限りなく近づけることができる。このような酸化物半導体は、高純度化された酸化物半導体と呼ぶことができる。
【０３２６】
チャネル形成領域を、キャリア密度の低い酸化物半導体で形成することが好ましい。酸化物半導体のキャリア密度は、例えば、キャリア密度は８×１０１１／ｃｍ３未満１×１０−９／ｃｍ３以上であるとよい。キャリア密度は、１×１０１１／ｃｍ３未満が好ましく、１×１０１０／ｃｍ３未満がさらに好ましい。
【０３２７】
＜人工ニューラルネットワークの構成例＞
上述した積和演算回路は、畳み込み演算の特徴抽出フィルターもしくは全結合演算回路として適用することで、ＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）による特徴量の抽出を行うことができる。具体的には上述した積和演算回路を階層型ニューラルネットワークに用いることで、画像データの補正に用いるパラメータを機械学習により決定することができる。
【０３２８】
図２１は、階層型ニューラルネットワークの一例を示した図である。第（ｋ−１）層（ｋは２以上の整数である。）は、ニューロンをＰ個（Ｐは１以上の整数である。）有し、第ｋ層は、ニューロンをＱ個（Ｑは１以上の整数である。）有し、第（ｋ＋１）層は、ニューロンをＲ個（Ｒは１以上の整数である。）有する。
【０３２９】
第（ｋ−１）層の第ｐニューロン（ｐは１以上Ｐ以下の整数である。）の出力信号ｚｐ（ｋ−１）と重み係数ｗｑｐ（ｋ）と、の積が第ｋ層の第ｑニューロン（ｑは１以上Ｑ以下の整数である。）に入力されるものとし、第ｋ層の第ｑニューロンの出力信号ｚｑ（ｋ）と重み係数ｗｒｑ（ｋ＋１）と、の積が第（ｋ＋１）層の第ｒニューロン（ｒは１以上Ｒ以下の整数である。）に入力されるものとし、第（ｋ＋１）層の第ｒニューロンの出力信号をｚｒ（ｋ＋１）とする。
【０３３０】
このとき、第ｋ層の第ｑニューロンへ入力される信号の総和は、次の式（Ｄ１）で表される。
【０３３１】
【数１】
2018133016.tif 000003
【０３３２】
また、第ｋ層の第ｑニューロンからの出力信号ｚｑ（ｋ）を次の式（Ｄ２）で定義する。
【０３３３】
【数２】
2018133016.tif 000004
【０３３４】
関数ｆ（ｕｑ（ｋ））は、ニューロンの出力関数であり、ステップ関数、線形ランプ関数、又はシグモイド関数などを用いることができる。なお、式（Ｄ１）の積和演算は、先述した積和演算回路によって実現できる。なお、式（Ｄ２）の演算は、例えば、図２４（Ａ）に示す回路４１１によって実現できる。
【０３３５】
なお、ニューロンの出力関数は、全てのニューロンにおいて同一でもよいし、又は異なっていてもよい。加えて、ニューロンの出力関数は、層毎において、同一でもよいし、異なっていてもよい。
【０３３６】
ここで、図２２に示す、全Ｌ層からなる階層型ニューラルネットワークを考える（つまり、ここでのｋは２以上（Ｌ−１）以下の整数とする。）。第１層は、階層型ニューラルネットワークの入力層となり、第Ｌ層は、階層型ニューラルネットワークの出力層となり、第２層乃至第（Ｌ−１）層は、隠れ層となる。
【０３３７】
第１層（入力層）は、ニューロンをＰ個有し、第ｋ層（隠れ層）は、ニューロンをＱ［ｋ］個（Ｑ［ｋ］は１以上の整数である。）有し、第Ｌ層（出力層）は、ニューロンをＲ個有する。
【０３３８】
第１層の第ｓ［１］ニューロン（ｓ［１］は１以上Ｐ以下の整数である。）の出力信号をｚｓ［１］（１）とし、第ｋ層の第ｓ［ｋ］ニューロン（ｓ［ｋ］は１以上Ｑ［ｋ］以下の整数である。）の出力信号をｚｓ［ｋ］（ｋ）とし、第Ｌ層の第ｓ［Ｌ］ニューロン（ｓ［Ｌ］は１以上Ｒ以下の整数である。）の出力信号をｚｓ［Ｌ］（Ｌ）とする。
【０３３９】
また、第（ｋ−１）層の第ｓ［ｋ−１］ニューロン（ｓ［ｋ−１］は１以上Ｑ［ｋ−１］以下の整数である。）の出力信号ｚｓ［ｋ−１］（ｋ−１）と重み係数ｗｓ［ｋ］ｓ［ｋ−１］（ｋ）と、の積ｕｓ［ｋ］（ｋ）が第ｋ層の第ｓ［ｋ］ニューロンに入力されるものとし、第（Ｌ−１）層の第ｓ［Ｌ−１］ニューロン（ｓ［Ｌ−１］は１以上Ｑ［Ｌ−１］以下の整数である。）の出力信号ｚｓ［Ｌ−１］（Ｌ−１）と重み係数ｗｓ［Ｌ］ｓ［Ｌ−１］（Ｌ）と、の積ｕｓ［Ｌ］（Ｌ）が第Ｌ層の第ｓ［Ｌ］ニューロンに入力されるものとする。
【０３４０】
次に、教師付き学習について説明する。教師付き学習とは、上述の階層型ニューラルネットワークの機能において、出力した結果と、所望の結果（教師データ、又は教師信号という場合がある。）と異なったときに、階層型ニューラルネットワークの全ての重み係数を、出力した結果と所望の結果とに基づいて、更新する動作をいう。
【０３４１】
教師付き学習の具体例として、逆伝播誤差方式による学習方法について説明する。図２３は、逆伝播誤差方式による学習方法を説明する図である。逆伝播誤差方式は、階層型ニューラルネットワークの出力と教師データとの誤差が小さくなるに、重み係数を変更する方式である。
【０３４２】
例えば、第１層の第ｓ［１］ニューロンに入力データを入力し、第Ｌ層の第ｓ［Ｌ］ニューロンから出力データｚｓ［Ｌ］（Ｌ）を出力されたとする。ここで、出力データｚｓ［Ｌ］（Ｌ）に対する教師信号をｔｓ［Ｌ］としたとき、誤差エネルギーＥは、出力データｚｓ［Ｌ］（Ｌ）及び教師信号ｔｓ［Ｌ］によって表すことができる。
【０３４３】
誤差エネルギーＥに対して、第ｋ層の第ｓ［ｋ］ニューロンの重み係数ｗｓ［ｋ］ｓ［ｋ−１］（ｋ）の更新量を∂Ｅ／∂ｗｓ［ｋ］ｓ［ｋ−１］（ｋ）とすることで、新たに重み係数を変更することができる。ここで、第ｋ層の第ｓ［ｋ］ニューロンの出力値ｚｓ［ｋ］（ｋ）の誤差δｓ［ｋ］（ｋ）を∂Ｅ／∂ｕｓ［ｋ］（ｋ）と定義すると、δｓ［ｋ］（ｋ）及び∂Ｅ／∂ｗｓ［ｋ］ｓ［ｋ−１］（ｋ）は、それぞれ次の式（Ｄ３）、（Ｄ４）で表すことができる。
【０３４４】
【数３】
2018133016.tif 000005
【０３４５】
【数４】
2018133016.tif 000006
【０３４６】
ｆ’（ｕｓ［ｋ］（ｋ））は、ニューロン回路の出力関数の導関数である。なお、式（Ｄ３）の演算は、例えば、図２４（Ｂ）に示す回路４１３によって実現できる。また、式（Ｄ４）の演算は、例えば、図２４（Ｃ）に示す回路４１４によって実現できる。出力関数の導関数は、例えば、オペアンプの出力端子に所望の導関数に対応した演算回路を接続することによって実現できる。
【０３４７】
また、例えば、式（Ｄ３）のΣｗｓ［ｋ＋１］・ｓ［ｋ］（ｋ＋１）・δｓ［ｋ＋１］（ｋ＋１）の部分の演算は、前述した積和演算回路によって実現できる。
【０３４８】
ここで、第（ｋ＋１）層が出力層のとき、すなわち、第（ｋ＋１）層が第Ｌ層であるとき、δｓ［Ｌ］（Ｌ）及び∂Ｅ／∂ｗｓ［Ｌ］ｓ［Ｌ−１］（Ｌ）は、それぞれ次の式（Ｄ５）、（Ｄ６）で表すことができる。
【０３４９】
【数５】
2018133016.tif 000007
【０３５０】
【数６】
2018133016.tif 000008
【０３５１】
式（Ｄ５）の演算は、図２４（Ｄ）に示す回路４１５によって実現できる。また、式（Ｄ６）の演算は、図２４（Ｃ）に示す回路４１４によって実現できる。
【０３５２】
つまり、式（Ｄ１）乃至式（Ｄ６）により、全てのニューロン回路の誤差δｓ［ｋ］（ｋ）及びδｓ［Ｌ］（Ｌ）を求めることができる。なお、重み係数の更新は、誤差δｓ［ｋ］（ｋ）、δｓ［Ｌ］（Ｌ）及び所望のパラメータなどに基づいて、設定される。
【０３５３】
以上のように、図２４に示す回路、及び前述した積和演算回路を用いることによって、教師付き学習を適用した階層型ニューラルネットワークの計算を行うことができる。
【０３５４】
具体的には、図１８および図１９に示す回路において、第１アナログデータを重み係数として、複数の第２アナログデータをニューロン出力に対応することで、各ニューロン出力の重み付け和演算を並列して行うことができ、当該出力信号として重み付け演算の結果に対応したデータ、すなわちシナプス入力を取得することができる。具体的には、メモリセルＡＭ［１，ｊ］乃至メモリセルＡＭ［ｍ，ｊ］に、第ｋ層の第ｓ［ｋ］ニューロンの重み係数ｗｓ［ｋ］・１（ｋ）乃至ｗｓ［ｋ］・Ｑ［ｋ−１］（ｋ）を第１アナログデータとして格納し、配線ＲＷ［１］乃至配線ＲＷ［ｍ］にそれぞれ第（ｋ−１）層の各ニューロンの出力信号ｚ１・ｓ［ｋ］（ｋ−１）乃至ｚＱ［ｋ−１］・ｓ［ｋ］（ｋ−１）を第２アナログデータとして供給することで、第ｋ層の第ｓ［ｋ］ニューロンに入力される信号の総和ｕｓ［ｋ］（ｋ）を計算することができる。つまり、式（Ｄ１）に示した積和演算を積和演算回路によって実現することができる。
【０３５５】
また、教師付き学習で重み係数の更新を行うとき、メモリセルＡＭ［１，ｊ］乃至メモリセルＡＭ［ｍ，ｊ］に、第ｋ層の第ｓ［ｋ］ニューロンから第（ｋ＋１）層の各ニューロンに信号が送られるときに掛かる重み係数ｗ１・ｓ［ｋ］（ｋ＋１）乃至ｗＱ［ｋ＋１］ｓ［ｋ］（ｋ＋１）を第１アナログデータとして格納し、配線ＲＷ［１］乃至配線ＲＷ［ｍ］に第（ｋ＋１）層の各ニューロンの誤差δ１（ｋ＋１）乃至δＱ［ｋ＋１］（ｋ＋１）を第２アナログデータとして供給すると、式（Ｄ３）におけるΣｗｓ［ｋ＋１］・ｓ［ｋ］（ｋ＋１）・δｓ［ｋ＋１］（ｋ＋１）の値を、配線Ｂ［ｊ］に流れる差分電流ΔＩＢ［ｊ］から得ることができる。つまり、式（Ｄ３）に示した演算の一部を積和演算回路によって実現することができる。
【０３５６】
（本明細書等の記載に関する付記）
以上の実施の形態、及び実施の形態における各構成の説明について、以下に付記する。
【０３５７】
各実施の形態に示す構成は、他の実施の形態に示す構成と適宜組み合わせて、本発明の一態様とすることができる。また、１つの実施の形態の中に、複数の構成例が示される場合は、互い構成例を適宜組み合わせることが可能である。
【０３５８】
なお、ある一つの実施の形態の中で述べる内容（一部の内容でもよい）は、その実施の形態で述べる別の内容（一部の内容でもよい）、及び／又は、一つ若しくは複数の別の実施の形態で述べる内容（一部の内容でもよい）に対して、適用、組み合わせ、又は置き換えなどを行うことが出来る。
【０３５９】
なお、実施の形態の中で述べる内容とは、各々の実施の形態において、様々な図を用いて述べる内容、又は明細書に記載される文章を用いて述べる内容のことである。
【０３６０】
なお、ある一つの実施の形態において述べる図（一部でもよい）は、その図の別の部分、その実施の形態において述べる別の図（一部でもよい）、及び／又は、一つ若しくは複数の別の実施の形態において述べる図（一部でもよい）に対して、組み合わせることにより、さらに多くの図を構成させることが出来る。
【０３６１】
また本明細書等において、ブロック図では、構成要素を機能毎に分類し、互いに独立したブロックとして示している。しかしながら実際の回路等においては、構成要素を機能毎に切り分けることが難しく、一つの回路に複数の機能が係わる場合や、複数の回路にわたって一つの機能が関わる場合があり得る。そのため、ブロック図のブロックは、明細書で説明した構成要素に限定されず、状況に応じて適切に言い換えることができる。
【０３６２】
また、図面において、大きさ、層の厚さ、又は領域は、説明の便宜上任意の大きさに示したものである。よって、必ずしもそのスケールに限定されない。なお図面は明確性を期すために模式的に示したものであり、図面に示す形状又は値などに限定されない。例えば、ノイズによる信号、電圧、若しくは電流のばらつき、又は、タイミングのずれによる信号、電圧、若しくは電流のばらつきなどを含むことが可能である。
【０３６３】
本明細書等において、トランジスタの接続関係を説明する際、ソースとドレインとの一方を、「ソース又はドレインの一方」（又は第１電極、又は第１端子）と表記し、ソースとドレインとの他方を「ソース又はドレインの他方」（又は第２電極、又は第２端子）と表記している。これは、トランジスタのソースとドレインは、トランジスタの構造又は動作条件等によって変わるためである。なおトランジスタのソースとドレインの呼称については、ソース（ドレイン）端子や、ソース（ドレイン）電極等、状況に応じて適切に言い換えることができる。
【０３６４】
また、本明細書等において「電極」や「配線」の用語は、これらの構成要素を機能的に限定するものではない。例えば、「電極」は「配線」の一部として用いられることがあり、その逆もまた同様である。さらに、「電極」や「配線」の用語は、複数の「電極」や「配線」が一体となって形成されている場合なども含む。
【０３６５】
また、本明細書等において、電圧と電位は、適宜言い換えることができる。電圧は、基準となる電位からの電位差のことであり、例えば基準となる電位をグラウンド電圧（接地電圧）とすると、電圧を電位に言い換えることができる。グラウンド電位は必ずしも０Ｖを意味するとは限らない。なお電位は相対的なものであり、基準となる電位によっては、配線等に与える電位を変化させる場合がある。
【０３６６】
なお本明細書等において、「膜」、「層」などの語句は、場合によっては、または、状況に応じて、互いに入れ替えることが可能である。例えば、「導電層」という用語を、「導電膜」という用語に変更することが可能な場合がある。または、例えば、「絶縁膜」という用語を、「絶縁層」という用語に変更することが可能な場合がある。
【０３６７】
本明細書等において、スイッチとは、導通状態（オン状態）、または、非導通状態（オフ状態）になり、電流を流すか流さないかを制御する機能を有するものをいう。または、スイッチとは、電流を流す経路を選択して切り替える機能を有するものをいう。
【０３６８】
一例としては、電気的スイッチ又は機械的なスイッチなどを用いることができる。つまり、スイッチは、電流を制御できるものであればよく、特定のものに限定されない。
【０３６９】
電気的なスイッチの一例としては、トランジスタ（例えば、バイポーラトランジスタ、ＭＯＳトランジスタなど）、ダイオード（例えば、ＰＮダイオード、ＰＩＮダイオード、ショットキーダイオード、ＭＩＭ（Ｍｅｔａｌ  Ｉｎｓｕｌａｔｏｒ  Ｍｅｔａｌ）ダイオード、ＭＩＳ（Ｍｅｔａｌ  Ｉｎｓｕｌａｔｏｒ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）ダイオード、ダイオード接続のトランジスタなど）、又はこれらを組み合わせた論理回路などがある。
【０３７０】
なお、スイッチとしてトランジスタを用いる場合、トランジスタの「導通状態」とは、トランジスタのソースとドレインが電気的に短絡されているとみなせる状態をいう。また、トランジスタの「非導通状態」とは、トランジスタのソースとドレインが電気的に遮断されているとみなせる状態をいう。なおトランジスタを単なるスイッチとして動作させる場合には、トランジスタの極性（導電型）は特に限定されない。
【０３７１】
機械的なスイッチの一例としては、デジタルマイクロミラーデバイス（ＤＭＤ）のように、ＭＥＭＳ（マイクロ・エレクトロ・メカニカル・システム）技術を用いたスイッチがある。そのスイッチは、機械的に動かすことが可能な電極を有し、その電極が動くことによって、導通と非導通とを制御して動作する。
【０３７２】
本明細書等において、チャネル長とは、例えば、トランジスタの上面図において、半導体（またはトランジスタがオン状態のときに半導体の中で電流の流れる部分）とゲートとが重なる領域、またはチャネルが形成される領域における、ソースとドレインとの間の距離をいう。
【０３７３】
本明細書等において、チャネル幅とは、例えば、半導体（またはトランジスタがオン状態のときに半導体の中で電流の流れる部分）とゲート電極とが重なる領域、またはチャネルが形成される領域における、ソースとドレインとが向かい合っている部分の長さをいう。
【０３７４】
本明細書等において、ＡとＢとが接続されている、とは、ＡとＢとが直接接続されているものの他、電気的に接続されているものを含むものとする。ここで、ＡとＢとが電気的に接続されているとは、ＡとＢとの間で、何らかの電気的作用を有する対象物が存在するとき、ＡとＢとの電気信号の授受を可能とするものをいう。
【符号の説明】
【０３７５】
Ｂ２    端子
Ｃ１    容量素子
Ｃ３    容量素子
Ｃ４    容量素子
Ｃ６    容量素子
Ｃ４５    容量素子
Ｃ６１    容量素子
Ｃ６２    容量素子
ＣＢ６    容量素子
ＣＬＫ１    クロック信号
ＣＬＫ２    クロック信号
Ｍ１    トランジスタ
Ｍ２    トランジスタ
Ｍ７    トランジスタ
ＭＢ７    トランジスタ
ＭＮ６１    トランジスタ
ＭＮ６２    トランジスタ
ＭＯ１    トランジスタ
ＭＯ２    トランジスタ
ＭＯ５    トランジスタ
ＭＯ６    トランジスタ
ＭＯ４５    ＯＳトランジスタ
ＭＯ６１    ＯＳトランジスタ
ＭＯ６２    ＯＳトランジスタ
ＭＯＢ５    トランジスタ
ＭＯＢ６    トランジスタ
ＭＰ６１    トランジスタ
ＭＰ６２    トランジスタ
ＭＰ６３    トランジスタ
Ｎ１    ノード
Ｎ２    ノード
Ｎ６    ノード
Ｎ７    ノード
ＮＢ６    ノード
ＮＢ７    ノード
ＳＷ２    スイッチ
Ｔ０１    時刻
Ｔ０２    時刻
Ｔ０３    時刻
Ｔ０４    時刻
Ｔ０５    時刻
Ｔ０６    時刻
Ｔ０７    時刻
Ｔ０８    時刻
Ｔ０９    時刻
Ｔ１０    時刻
Ｔ１１    時刻
Ｔ１２    時刻
Ｔ１３    時刻
Ｔ１４    時刻
Ｔ１５    時刻
Ｔ１６    時刻
Ｔｒ１    トランジスタ
Ｔｒ２    トランジスタ
Ｔｒ４    トランジスタ
Ｔｒ５    トランジスタ
Ｔｒ６    トランジスタ
Ｔｒ７    トランジスタ
Ｔｒ８    トランジスタ
Ｔｒ９    トランジスタ
Ｔｒ１０    トランジスタ
Ｔｒ１１    トランジスタ
１０    ニューラルネットワークシステム
１１    集積回路
１１＿Ａ    集積回路
１１＿Ｂ    集積回路
１２    ＤＯＳＲＡＭ
１３    ＮＯＳＲＡＭ
２０    プログラマブルロジックデバイス
２１    プログラマブルエリア
２１Ａ    プログラマブルエリア
２１Ｄ    プログラマブルエリア
２２    入出力ブロック
２３    コア
３０    メモリ部
３１    ＮＯＳＲＡＭ
３２    ＤＯＳＲＡＭ
４０    演算部
４１    プロセッサ
４２    アナログ演算回路
５０    コントローラ
６０    コントローラ
７０    巨大ニューラルネットワークシステム
６１    ＭＮ
６２    ＭＮ
６３    ＭＮ
７１    矢印
７２    矢印
７４    矢印
７５    矢印
８８    インバータ回路
８９    インバータ回路
１００    ＯＳ−ＦＰＧＡ
１０１Ａ    回路ブロック
１０１Ｄ    回路ブロック
１１０    コントローラ
１１１    プログラマブルエリア
１１２    ワードドライバ
１１３    データドライバ
１１７    ＩＯＢ
１１８    コア
１２０    ＬＡＢ
１２１    ＰＬＥ
１２３    ＬＵＴブロック
１２４    レジスタブロック
１２５    セレクタ
１２６    ＣＭ
１２７    パワースイッチ
１２８    ＣＭ
１３０    ＳＡＢ
１３１    ＳＢ
１３３    ＰＲＳ
１３５    ＣＭ
１３７    ＮＶＭ
１４０    ＯＳ−ＦＦ
１４１    ＦＦ
１４２    シャドウレジスタ
１４３    ＮＶＭ
１４３Ｂ    ＮＶＭ
１６１    メモリセル
２００    積和演算回路
２０１    アナログメモリ
２０２    参照アナログメモリ
２０３    電流ソース回路
２０４    電流シンク回路
２０５    電流源回路
２０６    ドライバ
２０７    ドライバ
２０８    回路
４１１    回路
４１３    回路
４１４    回路
４１５    回路
１４００    ＤＯＳＲＡＭ
１４０５    コントローラ
１４１０    行回路
１４１１    デコーダ
１４１２    ワード線ドライバ
１４１３    列セレクタ
１４１４    センスアンプドライバ
１４１５    列回路
１４１６    グローバルセンスアンプアレイ
１４１７    入出力回路
１４２０    ＭＣ−ＳＡアレイ
１４２２    メモリセルアレイ
１４２３    センスアンプアレイ
１４２５    ローカルメモリセルアレイ
１４２６    ローカルセンスアンプアレイ
１４４４    スイッチアレイ
１４４５    メモリセル
１４４６    センスアンプ
１４４７    グローバルセンスアンプ
１６００    ＮＯＳＲＡＭ
１６１０    メモリセルアレイ
１６１１    メモリセル
１６１１−１６１４    メモリセル
１６１２    メモリセル
１６１３    メモリセル
１６１４    メモリセル
１６４０    コントローラ
１６５０    行ドライバ
１６５１    行デコーダ
１６５２    ワード線ドライバ
１６６０    列ドライバ
１６６１    列デコーダ
１６６２    ドライバ
１６６３    ＤＡＣ
１６７０    出力ドライバ
１６７１    セレクタ
１６７２    ＡＤＣ
１６７３    出力バッファ
２０００    ＣＤＭＡ
７０００    ニューラルネットワークシステムＩＣ
７００１    リード
７００３    回路部
７０３１    Ｓｉトランジスタ層
７０３２    配線層
７０３３    ＯＳトランジスタ層
【図１】
2018133016.tif 000009
【図２】
2018133016.tif 000010
【図３】
2018133016.tif 000011
【図４】
2018133016.tif 000012
【図５】
2018133016.tif 000013
【図６】
2018133016.tif 000014
【図７】
2018133016.tif 000015
【図８】
2018133016.tif 000016
【図９】
2018133016.tif 000017
【図１０】
2018133016.tif 000018
【図１１】
2018133016.tif 000019
【図１２】
2018133016.tif 000020
【図１３】
2018133016.tif 000021
【図１４】
2018133016.tif 000022
【図１５】
2018133016.tif 000023
【図１６】
2018133016.tif 000024
【図１７】
2018133016.tif 000025
【図１８】
2018133016.tif 000026
【図１９】
2018133016.tif 000027
【図２０】
2018133016.tif 000028
【図２１】
2018133016.tif 000029
【図２２】
2018133016.tif 000030
【図２３】
2018133016.tif 000031
【図２４】
2018133016.tif 000032