【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度、国立研究開発法人新エネルギー・産業技術総合開発機構 IoT推進のための横断技術開発プロジェクト 超高速・低消費電力ビッグデータ処理を実現・利活用する脳型推論集積システムの研究開発委託研究、産業技術力強化法第19条の適用を受ける特許出願
(58)【調査した分野】(Int.Cl.,DB名)
あるワード線駆動状態と、あるビット線選択状態における前記演算回路の出力データを前記出力保持回路に保存した後、前記ワード線駆動状態を保持したまま、選択するビット線を変更し、前記演算回路の出力データを前記出力保持回路に追加して保存し、結合したデータを前記ワード線駆動回路に設定する機能を持つ請求項1に記載の半導体集積回路。
前記外部からの入力データと前記出力保持回路の保持データから前記ワード線駆動回路に接続するデータを選択するセレクタ回路を更に備えた請求項1に記載の半導体集積回路。
複数のワード線と、前記複数のワード線に交差する形で配列される複数のビット線と、前記複数のワード線と前記複数のビット線の交点に配置され、各々がニューラルネットワークの結合重み係数を保持する複数のメモリセルと、前記複数のワード線のうち、任意の1本以上のワード線を駆動可能なワード線駆動回路と、前記複数のビット線のうち、任意のビット線を選択可能なカラム選択回路と、前記カラム選択回路により選択されたビット線に接続する複数のメモリセル群が保持する複数の結合重み係数と前記複数のワード線の駆動状態で示す入力データとの積和演算を、前記カラム選択回路により選択されたビット線に流れる電流を判定することで実施する演算回路と、前記演算回路の出力データを保持する出力保持回路と、ニューラルネットワークの各結合重み係数を割り当てたメモリセルのアドレス情報を含むネットワーク構成情報を保持するネットワーク構成情報保持回路と、前記ネットワーク構成情報をもとに外部からの入力データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに前記出力保持回路の保持データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに演算に使用するビット線を前記カラム選択回路に指定する機能とを持つ制御回路とを備えた半導体集積回路を用い、
前記ネットワーク構成情報をもとに、前記外部からの入力データをニューラルネットワークの入力層と入力層の次の層である第一の隠れ層との結合重み係数を保持する第一のメモリセル群に対応する第一のワード線エリアを駆動するように設定し、前記第一のメモリセル群に対応する1本以上の第一のビット線群を選択して前記演算回路に接続し、
前記演算回路から得られた演算結果を前記出力保持回路に保持し、前記出力保持回路の保持データを前記第一の隠れ層の次の層である第二の隠れ層の入力データとして、前記第一の隠れ層と前記第二の隠れ層の結合重み係数を保持する第二のメモリセル群に対応する第二のワード線エリアを駆動するように設定し、前記第二のメモリセル群に対応する1本以上の第二のビット線群を選択して前記演算回路に接続し、
前記演算回路から得られた結果を前記出力保持回路に保持し、前記演算回路の出力が出力層に当たらない場合、更に次の隠れ層に対して対応するメモリセル群を用いて前記第二の隠れ層に対する動作と同様の動作を繰り返し実施するニューラルネットワーク半導体集積回路の動作方法。
前記第一のビット線群又は前記第二のビット線群を選択して前記演算回路に接続し、前記演算回路から得られた演算結果を前記出力保持回路に保持する動作は、次の層のノードの演算結果をすべて得るまでビット線選択を変更しながら繰り返し実施することを特徴とする請求項5に記載のニューラルネットワーク半導体集積回路の動作方法。
【背景技術】
【0002】
情報通信技術の進展に伴い、あらゆるものがインターネットに繋がるIoT(Internet of Things)技術の到来が注目されている。IoT技術において、様々な電子機器がインターネットに接続されることで、機器の高性能化が期待されているが、更なる高性能化を実現する技術として、電子機器自らが学習と判断を行う人工知能(AI:Artificial Intelligence)技術の研究開発が近年活発に行われている。
【0003】
人工知能技術において、人間の脳型情報処理を工学的に模倣したニューラルネットワーク技術が用いられており、ニューラルネットワーク演算を高速、低消費電力で実行する半導体集積回路の研究開発が盛んに行われている。
【0004】
ニューラルネットワークは複数の入力が各々異なる結合重み係数を有するシナプスと呼ばれる結合で接続されたニューロンと呼ばれる(パーセプトロンと呼ばれる場合もある)基本素子から構成され、複数のニューロンが互いに接続されることで、画像認識や音声認識といった高度な演算処理を行うことができる。ニューロンでは各入力と各結合重み係数を乗算したものを全て加算した積和演算動作が行われる。
【0005】
非特許文献1に、抵抗変化型不揮発性メモリを用いたニューラルネットワーク演算回路の例が開示されている。ニューラルネットワーク演算回路をアナログ抵抗値(コンダクタンス)が設定可能な抵抗変化型不揮発性メモリを用いて構成するものであり、不揮発性メモリ素子に結合重み係数に相当するアナログ抵抗値(コンダクタンス)を格納し、入力に相当するアナログ電圧値を不揮発性メモリ素子に印加し、このとき不揮発性メモリ素子に流れるアナログ電流値を利用する。ニューロンで行われる積和演算動作は、複数の結合重み係数を複数の不揮発性メモリ素子にアナログ抵抗値(コンダクタンス)として格納し、複数の入力に相当する複数のアナログ電圧値を複数の不揮発性メモリ素子に印加し、複数の不揮発性メモリ素子に流れる電流値を合算したアナログ電流値を積和演算結果として得ることで行われる。不揮発性メモリ素子を用いたニューラルネットワーク演算回路は、低消費電力化が実現可能であり、アナログ抵抗値(コンダクタンス)が設定可能な抵抗変化型不揮発性メモリのプロセス開発、デバイス開発、及び回路開発が近年盛んに行われている。
【0006】
特許文献1には、メモリデバイスにニューロン情報を格納し、ニューラルネットワークを構成可能とするニューラルコア回路が提案されている。1つのコアに各ニューロンのシナプス結合性情報、ニューロン・パラメータ、ニューロンのルーティングデータをメモリデバイスに保持し、ルーティングデータに応じて、ニューロンコア内の発火イベントを別のニューロンコアへルーティングする構成をとっている。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態について、図面を参照して説明する。
【0016】
<ニューラルネットワーク演算>
始めに、ニューラルネットワーク演算の基礎理論について説明する。
【0017】
図1は、ディープニューラルネットワークの構成を示す図である。ニューラルネットワークは入力データが入力される入力層1、入力層1の入力データを受けて演算処理を行う隠れ層2(中間層と呼ばれる場合もある)、隠れ層2の出力データを受けて演算処理を行う出力層3から構成される。入力層1、隠れ層2、出力層3の各々において、ニューロン10と呼ばれるニューラルネットワークの基本素子が多数存在し、各々のニューロン10は結合重み11を介して接続されている。複数の結合重み11は各々異なる結合重み係数を有してニューロン間を接続している。ニューロン10には複数の入力データが入力され、ニューロン10ではこれら複数の入力データと対応する結合重み係数との積和演算動作が行われ出力データとして出力される。ここで、隠れ層2は複数段(
図1では4段)のニューロンが連結された構成であり、深いニューラルネットワークを形成しているという意味で、
図1に示すようなニューラルネットワークはディープニューラルネットワークと呼ばれる。
【0018】
図2はニューラルネットワーク演算におけるニューロンの計算を示す図であり、ニューロン10が行う計算式を
図2の式(1)、式(2)に示す。ニューロン10はn個の入力x1〜xnが各々結合重み係数w1〜wnを有する結合重みで接続されており、入力x1〜xnと結合重み係数w1〜wnとの積和演算が行われる。ニューロン10はバイアス係数bを有しており、入力x1〜xnと結合重み係数w1〜wnとの積和演算結果にバイアス係数bが加算される。ニューロン10は活性化関数fを有しており、入力x1〜xnと結合重み係数w1〜wnとの積和演算結果にバイアス係数bを加算した結果に対して活性化関数の演算処理を行い出力yが出力される。
【0019】
図3はニューラルネットワーク演算におけるニューロンの計算において、バイアス係数bの演算を入力x0と結合重み係数w0に割り当てた場合の計算を示す図であり、ニューロン10が行う計算式を
図3の式(1)、式(2)に示す。前述した
図2において、ニューロン10は入力x1〜xnと結合重み係数w1〜wnとの積和演算と、バイアス係数bの加算演算が行われるが、
図3に示す通り、バイアス係数bの加算演算を入力x0=1、結合重み係数w0=bとして、n+1個の入力x0〜xnが各々結合重み係数w0〜wnを有する結合重みで接続されたニューロン10と解釈することができる。
図3の式(1)、式(2)に示す通り、ニューロン10の計算を入力x0〜xnと結合重み係数w0〜wnとの積和演算のみで簡潔に表現できる。本実施形態では
図3に示す通り、バイアス係数bの加算演算の表現を入力x0=1と結合重み係数w0=bとして表現することにする。
【0020】
図4はニューラルネットワーク演算におけるニューロンの活性化関数fの例であるステップ関数を示す図であり、x軸は活性化関数fの入力u、y軸は活性化関数fの出力f(u)である。
図4に示す通り、ステップ関数は入力uが負の値(<0)の場合は出力f(u)=0を出力し、入力uが正の値(≧0)の場合は出力f(u)=1を出力する関数である。前述した
図3のニューロン10において、ステップ関数の活性化関数fを使用した場合、入力x0〜xnと結合重み係数w0〜wnとの積和演算結果が負の値の場合は出力y=0が出力され、積和演算結果が正の値の場合は出力y=1が出力される。
【0021】
以降、活性化関数の例としてステップ関数を使用するが、ニューラルネットワーク演算で使用されるその他の活性化関数には比例関数等があり、本発明における活性関数はステップ関数に限定するものではない。
【0022】
<ニューラルネットワーク演算回路>
図5は、第一の実施形態に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路の詳細構成を示す図である。
【0023】
メモリセル21は縦横に配置されメモリアレイ20を構成する。メモリセル21は横方向に配置されたワード線22と縦方向に配置されたビット線23に接続する。メモリセルは不揮発性半導体記憶素子を用いて構成され、ワード線22に電圧を印加された際に、自身の状態に応じたセル電流をビット線23に流す。メモリセル21は、ワード線22とビット線23の交点に不揮発性半導体記憶素子を配置するクロスポイント型、もしくは不揮発性半導体記憶素子とトランジスタを直列に接続して1セルを構成し、ワード線22でトランジスタのゲートを駆動し、ビット線23をトランジスタのソースもしくは不揮発性半導体記憶素子のもう一端に接続する構成をとる。
【0024】
メモリセル21の不揮発性半導体記憶素子には、任意のセル電流を設定できる素子である抵抗変化型素子、磁気抵抗変化型素子、相変化型素子、強誘電体記憶素子が利用できる。
【0025】
ワード線駆動回路24は、ニューラルネットワークの入力に応じて各ワード線22に電圧を印加する回路である。複数の任意のワード線22に同時に電圧を印加する機能をもつ。ワード線駆動回路24にはロウアドレス信号41及び設定データ42が入力され、ロウアドレス信号41で指示される位置に設定データ42をセットすることで各ワード線22の駆動状態をセットする。ワード線22の1本あたりの駆動状態を設定する設定データ42は1ビット以上のデータ幅をもつ。例えば、1本あたり1ビットのデータ幅で表現する場合、0データをGNDレベル設定、1データをハイレベル設定に割り当てる。また、1本あたり多ビットで表現する場合は、ワード線22の電圧レベルを各データに割り当てる。電圧レベルの割り当てと、ワード線22ごとの設定データ42に応じてワード線駆動回路はワード線22に電圧を印加する。また、ロウアドレス信号41で指示され、設定データ42が設定されるワード線22以外のワード線22にはGNDレベルを印加する。
【0026】
カラム選択回路25は、制御回路29から出力されるカラム選択信号40をもとに、複数のビット線23からニューラルネットワーク演算に用いるビット線23を1本以上選択して演算回路26に接続する回路である。演算回路26は1つのメモリアレイ20に対し、1個以上を搭載する。複数の演算回路26を搭載する際は、メモリアレイ20をカラム方向に演算回路数分に分割し、各分割エリアをそれぞれの演算回路26が担当する。カラム選択回路25はそれぞれの演算回路26に対し、共通のカラム選択信号40を用いて、各分割エリアからニューラルネットワーク演算に用いるビット線23を選択し接続する。
【0027】
演算回路26は接続したビット線23に流れる電流値を判定することで、活性化関数の演算動作を実現する。本発明における演算回路はデジタル値を取るものとする。例えば、2本のビット線23の大小をセンスアンプ回路で比較し、(0,1)の2値データを出力することでステップ関数の演算動作を実現する。また、ビット線23に流れる電流値をA/D変換回路でデジタル信号に変換する方式もある。演算回路26で活性化関数の演算を行った結果は、出力保持回路27に蓄積される。出力保持回路27はフリップフロップ、ラッチ回路等を用いて構成される。
図5の第一の実施形態では出力保持回路27に蓄積したデータは外部出力が可能になっている。
【0028】
制御回路29は、ネットワーク構成情報保持回路28に保持しているネットワーク構成情報を参照し、ワード線駆動回路24に対し、ロウアドレス信号41を出力し、入力データ又は出力保持回路27の保持データを設定するワード線エリアを指示する。ニューラルネットワークの入力層1の入力データを設定する場合は、セレクタ回路30で外部入力を選択し、ワード線駆動回路24に設定データ42を指示する。隠れ層2以降の入力データを設定する場合は、セレクタ回路30で出力保持回路27のデータを選択し、ワード線駆動回路24に設定データ42を指示する。また制御回路29は、ネットワーク構成情報を参照し、カラム選択回路25に対し演算回路26に接続するビット線23の選択を指示するカラム選択信号40を生成する。
【0029】
ネットワーク構成情報は、ニューラルネットワークの各層のノード数、隠れ層2の総数、各結合重み係数を割り当てているメモリセル21のメモリアレイ20内のアドレス情報を含む。
図6にネットワーク構成情報の構成例を示す。各層のノード数及び結合重み係数の割り当て開始アドレスをリスト形式で保持する。結合重み係数の割り当て開始アドレスと、メモリアレイ20内の結合重み係数のマッピングの関係性については、後述で動作の例と共に詳細を説明する。
【0030】
ネットワーク構成情報保持回路28はネットワーク構成情報を保持する記憶回路である。ネットワーク構成情報を書き換えできるようRAM(Random Access Memory)を用いて構成する。なお、メモリアレイ20の一部をデジタルメモリとして用いるためのアクセス回路を搭載している場合、メモリアレイ20の一部をネットワーク構成情報保持回路28として使用してもよい。
【0031】
次に第一の実施形態を用いたニューロンの計算について説明する。
【0032】
本発明において、ワード線22の各バイアス状態はニューロンの計算式における入力x0〜xnに相当する。同じカラム選択信号40で選択され、同じ演算回路26に接続するビット線23に接続するメモリセル21のうち、同じワード線22で駆動される1つ以上のメモリセル21で、1つの結合重み係数を表現する。
【0033】
以下、各入力x0〜xnが(0,1)の2値をとり、結合重み係数が2つのメモリセル21のセル電流値の差分を用いて符号付アナログ値で表現されるニューロンを第一の実施形態で計算する例を説明する。また、活性化関数にはステップ関数を用いるものとする。
【0034】
図7Aに、説明に用いるメモリセル21、メモリアレイ20、ワード線駆動回路24、カラム選択回路25及び演算回路26を含む簡略図を示す。
図7Aでは、メモリアレイ20はカラム方向に8つのエリアに分割され、各々に演算回路26が1つずつ対応している。カラム選択回路25は各演算回路26に対し、カラム選択信号40をもとに2本のビット線23を選択して接続する。
【0035】
カラム選択回路25で各演算回路26に接続する2本のビット線23に接続するメモリセル21は、共通のワード線で駆動される2つのメモリセル21で1つの結合重み係数を表す。
図7Bに、ある1つの結合重み係数wi,jを保持するメモリセル21の接続関係を表す。符号付アナログ値の結合重み係数を設定するため、2つのメモリセル21の一方を正の結合重み係数を表すために用いる正側メモリセル21A、もう一方を負の結合重み係数を表すために用いる負側メモリセル21Bとして用いる。ワード線22にハイレベルが印加された際の正側メモリセル21Aのセル電流と、負側メモリセル21Bのセル電流の差分が結合重み係数に比例するように、各セル電流を設定する。カラム選択回路25で選択する2本のビット線23は、正側メモリセル21Aを接続する正側ビット線23Aと、負側メモリセル21Bを接続する負側ビット線23Bに分けられる。表記の簡略化のため、正側ビット線23Aと負側ビット線23Bが隣接している図となっているが、共通のカラム選択信号40で選択されるビット線23であれば、メモリアレイ20内での位置は任意である。
【0036】
ワード線駆動回路24は設定された入力の(0,1)データに応じ、1設定されるワード線22にハイレベルの電圧を印加し、0設定されるワード線22にはGNDレベルを印加する。ワード線22にハイレベルの電圧を印加されたメモリセル21には、各セルの保持状態に応じたセル電流が流れる。一方、ワード線22がGNDレベルのメモリセル21にはセル電流が流れない。このため、正側ビット線23Aにはワード線22がハイレベルの正側メモリセル21Aの電流の総和が流れ、負側ビット線23Bにはワード線22がハイレベルの負側メモリセル21Bの電流の総和が流れる。
【0037】
演算回路26は接続した正側ビット線23Aと負側ビット線23Bの電流を比較し、正側ビット線23Aの電流が大きければ1を出力し、負側ビット線23Bの電流が大きければ0を出力する。この動作により、ワード線22の駆動状態で表される入力と、正側メモリセル21Aと負側メモリセル21Bのセル電流の差分で表される結合重み係数の総和をステップ関数に代入した結果を得ることができる。
【0038】
次に、前述したニューロンをノードとしたニューラルネットワークの演算動作を説明する。
【0039】
図8に、説明に用いるニューラルネットワークの図を示す。入力層1は9ノード、隠れ層2は17ノード、出力層3は8ノードの3層構造をとる。入力層1及び隠れ層2のノードのうち、ノード0はバイアス係数の加算表現に用いるノード(以下、バイアスノードと呼ぶ)であり、入力値が1に固定される。外部からの入力データx1〜x8は8ビットの(0,1)データで示される。
【0040】
図9に、説明に用いるニューラルネットワークのネットワーク構成情報を示す。ネットワーク構成情報の1層目の情報には、入力層1のノードがバイアスノードを除いて8ノードであることと、入力層1から隠れ層2の結合重み係数の割り当てのワード線開始アドレスが0番地であること及びビット線開始アドレスが0番地であることを含んでいる。ネットワーク構成情報の2層目の情報には、隠れ層2のノード数がバイアスノードを除いて16ノードであることと、隠れ層2から出力層3の結合重み係数の割り当てのワード線開始アドレスが0番地であること及びビット線開始アドレスが2番地であることが含まれる。ネットワーク構成情報の3層目の情報には、出力層3のノード数が8ノードであることが含まれている。
【0041】
図7Aには、
図8及び
図9で示すニューラルネットワークの結合重み係数をメモリアレイエリアへマッピングした結果を記載している。
図8のニューラルネットワークの入力層1から隠れ層2への結合重み係数をwi,j、隠れ層2から出力層3への結合重み係数をw’i,jで表している。各iは入力側のノード番号を表し、jは出力側のノード番号を表す。例えば、
図8の入力層1のバイアスノード(ノード0)から隠れ層2のノード1への結合重み係数はw0,1となり、隠れ層2のノード1から出力層3のノード1への結合重み係数はw’1,1となる。
【0042】
メモリアレイ20内におけるアドレスは、各ワード線22と分割メモリエリア内の正負ビット線の組み合わせごとに付与されており、w0,1〜w0,8が配置されている位置がワード線アドレス0番地、ビット線アドレス0番地に相当するものとする。
【0043】
図7Aで示すように、入力層1から隠れ層2への結合重み係数は、ビット線アドレス0番地にあたるwx,1〜wx,8(x=0〜8)と、ビット線アドレス1番地にあたるwx,9〜wx,16(x=0〜8)に分けてマッピングする。本構成において、ある層から次の層への結合重み係数は、次の層のノード数が演算回路数を超える場合、ワード線エリアが共通で、異なるビット線番地にマッピングを行う。あるワード線駆動状態つまり入力に対し、1回の演算回路動作で得られる出力ノードは搭載する演算回路数に制限される。しかし前述したマッピング方法を用いることで、ワード線駆動状態を維持したまま、カラム選択信号40を切り替えて演算回路26を動作させることで、演算回路数以上の出力ノード数を扱うことができる。
【0044】
図7Aの結合重みのマッピング及び
図9のネットワーク構成情報では、ある層から次層への結合重み係数は、連続したビット線番地にマッピングすることを前提としており、結合重み係数の割り当て開始アドレスのみ管理する例を示しているが、制御回路29がある層から次層への結合重み係数の割り当て位置を指示できるように、ネットワーク構成情報やハードウェアの情報があれば、必ずしも連続したビット線番地にマッピングする必要はない。
【0045】
図10、
図11、
図12、
図13を用いて、
図8、
図9で示すニューラルネットワークにある入力を入れた際の演算フローを示す。
図10において、まず外部入力から入力層1のデータが入力され、ワード線駆動回路24にセットされる。このとき、制御回路29は
図9のネットワーク構成情報の第1層の情報を参照する。第1層の情報から、入力層1のノード数はバイアスノードを除き8ノードであり、入力層1と次層の結合重み係数はワード線アドレス0番地から開始するワード線22に配置されていることがわかる。このため、ワード線アドレス0番地のワード線にバイアスノードの入力である1データをセットし、連続するワード線アドレス1番地から8番地に入力データをセットする。また第1層の情報から、入力層1と次層の結合重み係数はビット線アドレス0番地から開始する領域に配置していることがわかる。このため、カラム選択回路25はビット線アドレス0番地で示される正側ビット線23A及び負側ビット線23Bを演算回路26に接続する。8機搭載されている演算回路26は、それぞれ正側ビット線23Aと負側ビット線23Bの電流を比較判定し、(0,1)を出力する。出力した結果は隠れ層2のノード1からノード8のデータとなり、出力保持回路27に保存される。
【0046】
次に
図11において、ネットワーク構成情報の第2層の情報から、隠れ層2のノードはバイアスノードを除いて16ノードあることがわかる。
図10の演算動作では、隠れ層2のノード1からノード8までの演算結果しか得られていないため、制御回路29はビット線アドレスをインクリメントし、カラム選択回路25に1番地を選択するように指示する。カラム選択回路25はビット線アドレス1番地で示される正側ビット線23A及び負側ビット線23Bを演算回路26に接続する。再度演算回路26で電流の比較判定を実施することで、隠れ層2のノード9からノード16のデータを得ることができる。演算回路26の出力結果を、出力保持回路27に追加して保存する。
【0047】
次に
図12において、隠れ層2の演算が完了したため、出力保持回路27の保持データをワード線駆動回路24に転送している。ネットワーク構成情報の第2層の情報から、隠れ層2と出力層3の結合重み係数は、ワード線アドレス0番地から開始するワード線22に配置されていることがわかる。このため、ワード線アドレス0番地のワード線にバイアスノードの入力である1データをセットし、連続するワード線アドレス1番地から16番地に隠れ層2のノード1からノード16のデータをセットする。
【0048】
最後に
図13において、ネットワーク構成情報の第2層の情報から、隠れ層2と出力層3の結合重み係数は、ビット線アドレス2番地から開始する領域に配置されていることがわかる。このため、カラム選択回路25はビット線アドレス2番地で示される正側ビット線23A及び負側ビット線23Bを演算回路26に接続する。演算回路26は正側ビット線23Aと負側ビット線23Bの電流を比較判定し、(0,1)を出力する。演算回路26の出力結果は出力保持回路27に保存され、出力層3の演算結果として外部出力より出力される。
【0049】
以上の動作により、
図8で示すニューラルネットワークの演算を1つのメモリアレイ20に保持した結合重み係数を用いて実施することができる。ニューラルネットワークの層数が増加した場合も、前述したように、ネットワーク構成情報を参照して、出力保持回路27の保持データをワード線駆動回路24に設定し、ビット線23を選択し、演算回路26で演算結果を得て出力保持回路27に保存する動作を繰り返すことで実現できる。
【0050】
図14は本発明の第二の実施形態に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路の詳細構成を示す図である。外部入力と演算回路26の出力をセレクタ回路31で選択し、出力保持回路27に保存する。外部からの入力データを設定する際は、出力保持回路27に一旦データを保存したのち、ワード線駆動回路24に設定する動作をとる。また、演算回路26から出力したデータと、外部入力から入力したデータを出力保持回路27において結合し、ワード線駆動回路24に設定することも可能とする。
【0051】
図15は本発明の第三の実施形態に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路の詳細構成を示す図である。演算回路26の出力がそのまま外部出力に接続し、セレクタ回路32で演算回路26の出力と外部入力を選択し、出力保持回路27に接続する構成をとる。第二の実施形態と同様に、外部からの入力データを設定する際は、出力保持回路27に一旦データを保存したのち、ワード線駆動回路24に設定する動作をとる。また、演算回路26から出力したデータと、外部入力から入力したデータを出力保持回路27において結合し、ワード線駆動回路24に設定することも可能とする。
【0052】
図5、
図14、
図15においてネットワーク構成情報保持回路28は制御回路29中に含む形で記載しているが、その搭載場所を制限するものではない。また、実施形態の説明に用いた図面における各構成要素の実現方法及び搭載数は、例示を目的として記載しており、その実施形態を制限するものではない。
【0053】
なお、本発明におけるメモリアレイ20は、必ずしも全面をニューラルネットワークの結合重み係数の実装に用いる必要はなく、本発明の構成要素に加えてデジタルメモリのアクセス回路を搭載し、メモリアレイ20の一部をデジタルメモリとして用いることも可能である。また、一部をデジタルメモリとして用いる場合に、各構成要素の機能をデジタルメモリアクセスに用いることも可能である。
【0054】
以上、本発明の実施形態を説明してきたが、本発明の不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路は、上述の例示にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更等を加えたものに対しても有効である。