(57)【要約】  ニューラルネットワーク演算に用いる結合重み係数をメモリアレイ（２０）に格納し、ワード線駆動回路（２４）でニューラルネットワークの入力データに対応したワード線（２２）を駆動し、カラム選択回路（２５）で演算の対象となる結合重み係数が接続しているビット線を演算回路（２６）に接続し、ビット線（２３）に流れるセル電流の総和を演算回路（２６）において判定する。演算回路（２６）の判定結果を出力保持回路（２７）に保存し、次層のニューラルネットワークの入力としてワード線駆動回路（２４）に設定する。制御回路（２９）はネットワーク構成情報保持回路（２８）に保持している情報をもとに、ワード線駆動回路（２４）及びカラム選択回路（２５）に対し、ニューラルネットワーク演算に用いるワード線（２２）及びビット線（２３）の選択を指示する。
2019049686.tif 000002
【特許請求の範囲】
【請求項１】
複数のワード線と、
前記複数のワード線に交差する形で配列される複数のビット線と、
前記複数のワード線と前記複数のビット線の交点に配置され、各々がニューラルネットワークの結合重み係数を保持する複数のメモリセルと、
前記複数のワード線のうち、任意の１本以上のワード線を駆動可能なワード線駆動回路と、
前記複数のビット線のうち、任意のビット線を選択可能なカラム選択回路と、
前記カラム選択回路により選択されたビット線に接続する複数のメモリセル群が保持する複数の結合重み係数と前記複数のワード線の駆動状態で示す入力データとの積和演算を、前記カラム選択回路により選択されたビット線に流れる電流を判定することで実施する演算回路と、
前記演算回路の出力データを保持する出力保持回路と、
ニューラルネットワークの各結合重み係数を割り当てたメモリセルのアドレス情報を含むネットワーク構成情報を保持するネットワーク構成情報保持回路と、
前記ネットワーク構成情報をもとに外部からの入力データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに前記出力保持回路の保持データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに演算に使用するビット線を前記カラム選択回路に指定する機能とを持つ制御回路とを備えた半導体集積回路。
【請求項２】
あるワード線駆動状態と、あるビット線選択状態における前記演算回路の出力データを前記出力保持回路に保存した後、前記ワード線駆動状態を保持したまま、選択するビット線を変更し、前記演算回路の出力データを前記出力保持回路に追加して保存し、結合したデータを前記ワード線駆動回路に設定する機能を持つ請求項１に記載の半導体集積回路。
【請求項３】
前記外部からの入力データと前記出力保持回路の保持データから前記ワード線駆動回路に接続するデータを選択するセレクタ回路を更に備えた請求項１に記載の半導体集積回路。
【請求項４】
前記外部からの入力データと前記演算回路の出力データから前記出力保持回路に接続するデータを選択するセレクタ回路を更に備えた請求項１に記載の半導体集積回路。
【請求項５】
複数のワード線と、前記複数のワード線に交差する形で配列される複数のビット線と、前記複数のワード線と前記複数のビット線の交点に配置され、各々がニューラルネットワークの結合重み係数を保持する複数のメモリセルと、前記複数のワード線のうち、任意の１本以上のワード線を駆動可能なワード線駆動回路と、前記複数のビット線のうち、任意のビット線を選択可能なカラム選択回路と、前記カラム選択回路により選択されたビット線に接続する複数のメモリセル群が保持する複数の結合重み係数と前記複数のワード線の駆動状態で示す入力データとの積和演算を、前記カラム選択回路により選択されたビット線に流れる電流を判定することで実施する演算回路と、前記演算回路の出力データを保持する出力保持回路と、ニューラルネットワークの各結合重み係数を割り当てたメモリセルのアドレス情報を含むネットワーク構成情報を保持するネットワーク構成情報保持回路と、前記ネットワーク構成情報をもとに外部からの入力データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに前記出力保持回路の保持データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに演算に使用するビット線を前記カラム選択回路に指定する機能とを持つ制御回路とを備えた半導体集積回路を用い、
前記ネットワーク構成情報をもとに、前記外部からの入力データをニューラルネットワークの入力層と入力層の次の層である第一の隠れ層との結合重み係数を保持する第一のメモリセル群に対応する第一のワード線エリアを駆動するように設定し、前記第一のメモリセル群に対応する１本以上の第一のビット線群を選択して前記演算回路に接続し、
前記演算回路から得られた演算結果を前記出力保持回路に保持し、前記出力保持回路の保持データを前記第一の隠れ層の次の層である第二の隠れ層の入力データとして、前記第一の隠れ層と前記第二の隠れ層の結合重み係数を保持する第二のメモリセル群に対応する第二のワード線エリアを駆動するように設定し、前記第二のメモリセル群に対応する１本以上の第二のビット線群を選択して前記演算回路に接続し、
前記演算回路から得られた結果を前記出力保持回路に保持し、前記演算回路の出力が出力層に当たらない場合、更に次の隠れ層に対して対応するメモリセル群を用いて前記第二の隠れ層に対する動作と同様の動作を繰り返し実施するニューラルネットワーク半導体集積回路の動作方法。
【請求項６】
前記第一のビット線群又は前記第二のビット線群を選択して前記演算回路に接続し、前記演算回路から得られた演算結果を前記出力保持回路に保持する動作は、次の層のノードの演算結果をすべて得るまでビット線選択を変更しながら繰り返し実施することを特徴とする請求項５に記載のニューラルネットワーク半導体集積回路の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は低消費電力化と大規模集積化が可能な不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路、及びその動作方法に関する。
【背景技術】
【０００２】
情報通信技術の進展に伴い、あらゆるものがインターネットに繋がるＩｏＴ（Internet of Things）技術の到来が注目されている。ＩｏＴ技術において、様々な電子機器がインターネットに接続されることで、機器の高性能化が期待されているが、更なる高性能化を実現する技術として、電子機器自らが学習と判断を行う人工知能（ＡＩ：Artificial Intelligence）技術の研究開発が近年活発に行われている。【０００３】
人工知能技術において、人間の脳型情報処理を工学的に模倣したニューラルネットワーク技術が用いられており、ニューラルネットワーク演算を高速、低消費電力で実行する半導体集積回路の研究開発が盛んに行われている。【０００４】
ニューラルネットワークは複数の入力が各々異なる結合重み係数を有するシナプスと呼ばれる結合で接続されたニューロンと呼ばれる（パーセプトロンと呼ばれる場合もある）基本素子から構成され、複数のニューロンが互いに接続されることで、画像認識や音声認識といった高度な演算処理を行うことができる。ニューロンでは各入力と各結合重み係数を乗算したものを全て加算した積和演算動作が行われる。【０００５】
非特許文献１に、抵抗変化型不揮発性メモリを用いたニューラルネットワーク演算回路の例が開示されている。ニューラルネットワーク演算回路をアナログ抵抗値（コンダクタンス）が設定可能な抵抗変化型不揮発性メモリを用いて構成するものであり、不揮発性メモリ素子に結合重み係数に相当するアナログ抵抗値（コンダクタンス）を格納し、入力に相当するアナログ電圧値を不揮発性メモリ素子に印加し、このとき不揮発性メモリ素子に流れるアナログ電流値を利用する。ニューロンで行われる積和演算動作は、複数の結合重み係数を複数の不揮発性メモリ素子にアナログ抵抗値（コンダクタンス）として格納し、複数の入力に相当する複数のアナログ電圧値を複数の不揮発性メモリ素子に印加し、複数の不揮発性メモリ素子に流れる電流値を合算したアナログ電流値を積和演算結果として得ることで行われる。不揮発性メモリ素子を用いたニューラルネットワーク演算回路は、低消費電力化が実現可能であり、アナログ抵抗値（コンダクタンス）が設定可能な抵抗変化型不揮発性メモリのプロセス開発、デバイス開発、及び回路開発が近年盛んに行われている。【０００６】
特許文献１には、メモリデバイスにニューロン情報を格納し、ニューラルネットワークを構成可能とするニューラルコア回路が提案されている。１つのコアに各ニューロンのシナプス結合性情報、ニューロン・パラメータ、ニューロンのルーティングデータをメモリデバイスに保持し、ルーティングデータに応じて、ニューロンコア内の発火イベントを別のニューロンコアへルーティングする構成をとっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１５−５３４１７２号公報
【非特許文献】
【０００８】
【非特許文献１】M. Prezioso, et al., “Training and operation of an integrated neuromorphic network based on metal-oxide memristors,” Nature, no. 521, pp. 61-64, 2015.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、前述した特許文献１のニューラルコアでは、任意の層数及びノード数のニューラルネットワークを構成するため、複数のコアを連結させなければならない。このため１つのチップに対し、複数のコア・連結回路の搭載が必要となり、ニューラルネットワークの規模の増大に応じて回路規模が大きくなる課題がある。また、搭載可能なニューロン数が、周辺回路のサイズにより決定するため、ニューロンの大規模集積化が困難となっている。
【課題を解決するための手段】
【００１０】
本発明の半導体記憶素子を用いたニューラルネットワーク演算回路は、複数のワード線と、前記複数のワード線に交差する形で配列される複数のビット線と、前記複数のワード線と前記複数のビット線の交点に配置され、各々がニューラルネットワークの結合重み係数を保持する複数のメモリセルと、前記複数のワード線のうち、任意の１本以上のワード線を駆動可能なワード線駆動回路と、前記複数のビット線のうち、任意のビット線を選択可能なカラム選択回路と、前記カラム選択回路により選択されたビット線に接続する複数のメモリセル群が保持する複数の結合重み係数と前記複数のワード線の駆動状態で示す入力データとの積和演算を、前記カラム選択回路により選択されたビット線に流れる電流を判定することで実施する演算回路と、前記演算回路の出力データを保持する出力保持回路と、ニューラルネットワークの各結合重み係数を割り当てたメモリセルのアドレス情報を含むネットワーク構成情報を保持するネットワーク構成情報保持回路と、前記ネットワーク構成情報をもとに外部からの入力データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに前記出力保持回路の保持データを前記ワード線駆動回路にセットする機能と、前記ネットワーク構成情報をもとに演算に使用するビット線を前記カラム選択回路に指定する機能とを持つ制御回路とで構成される。【００１１】
制御回路はネットワーク構成情報を参照して、入力層の入力データをワード線駆動回路に設定する。また、ネットワーク構成情報を参照してビット線を選択し、演算回路に接続する。演算回路では、選択されたビット線に、ワード線駆動回路で駆動されたメモリセルのセル電流の総和が流れることを利用し、ニューラルネットワーク演算結果を出力する。演算回路の搭載個数に対し、出力ノード数が大きい場合、１回の演算回路動作ではすべての出力を得ることができないため、ビット線の選択を変更し、異なるメモリセルを用いて再度演算を行う。ある層の演算結果は出力保存回路に保持され、出力が全てそろった後、ネットワーク構成情報を参照し、次層の入力としてワード線駆動回路に設定する。ネットワーク構成情報に応じて、任意の層数分の演算動作を繰り返した後、出力層のデータを出力保持回路から出力し、ニューラルネットワーク演算動作を完了する。
【発明の効果】
【００１２】
本発明では、ネットワーク構成情報によりメモリアレイ内の結合重み係数の配置を管理することで、ある層の演算結果を次層の入力として再度メモリアレイのワード線に設定でき、複数層のニューラルネットワークを１つのメモリアレイで演算可能になる。また、ネットワーク構成情報を書き換えることで、同一メモリアレイを用いて異なるニューラルネットワークを構成することが可能となる。加えてカラム選択回路を用いてメモリアレイと演算回路を分離していることから、結合重み係数を保持するメモリセルを高度に集積化でき、回路に搭載するニューロン数を飛躍的に増加させることができる。【００１３】
以上の効果から、多数のニューロン及び複数層で構成されるニューラルネットワークの演算を、１つのメモリアレイを用いて、省面積で実現可能な不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、ニューラルネットワーク、特にディープニューラルネットワークの構成例を示す図である。
【図２】図２は、ニューラルネットワーク演算におけるニューロンの計算を示す図である。
【図３】図３は、本発明におけるバイアスの計算を鑑みたニューラルネットワーク演算におけるニューロンの計算を示す図である。
【図４】図４は、活性化関数の例であるステップ関数を示す図である。
【図５】図５は、第一の実施形態を示す図である。
【図６】図６は、ネットワーク構成情報の構成例を示す図である。
【図７Ａ】図７Ａは、ニューラルネットワークの結合重み係数のマッピング例及び、各構成要素の接続例を示す図である。
【図７Ｂ】図７Ｂは、ある１つの結合重み係数ｗｉ，ｊを保持するメモリセル２１の接続関係を表す図である。
【図８】図８は、本発明によるニューラルネットワーク演算動作の解説に用いるニューラルネットワークの例を示す図である。
【図９】図９は、図８のニューラルネットワークのネットワーク構成情報の例を示す図である。
【図１０】図１０は、図８のニューラルネットワークを演算する際の各構成要素の動作を説明する概念図である。
【図１１】図１１は、図８のニューラルネットワークを演算する際の各構成要素の動作を説明する概念図である。
【図１２】図１２は、図８のニューラルネットワークを演算する際の各構成要素の動作を説明する概念図である。
【図１３】図１３は、図８のニューラルネットワークを演算する際の各構成要素の動作を説明する概念図である。
【図１４】図１４は、本発明の第二の実施形態を示す図である。
【図１５】図１５は、本発明の第三の実施形態を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について、図面を参照して説明する。
【００１６】
＜ニューラルネットワーク演算＞
始めに、ニューラルネットワーク演算の基礎理論について説明する。
【００１７】
図１は、ディープニューラルネットワークの構成を示す図である。ニューラルネットワークは入力データが入力される入力層１、入力層１の入力データを受けて演算処理を行う隠れ層２（中間層と呼ばれる場合もある）、隠れ層２の出力データを受けて演算処理を行う出力層３から構成される。入力層１、隠れ層２、出力層３の各々において、ニューロン１０と呼ばれるニューラルネットワークの基本素子が多数存在し、各々のニューロン１０は結合重み１１を介して接続されている。複数の結合重み１１は各々異なる結合重み係数を有してニューロン間を接続している。ニューロン１０には複数の入力データが入力され、ニューロン１０ではこれら複数の入力データと対応する結合重み係数との積和演算動作が行われ出力データとして出力される。ここで、隠れ層２は複数段（図１では４段）のニューロンが連結された構成であり、深いニューラルネットワークを形成しているという意味で、図１に示すようなニューラルネットワークはディープニューラルネットワークと呼ばれる。
【００１８】
図２はニューラルネットワーク演算におけるニューロンの計算を示す図であり、ニューロン１０が行う計算式を図２の式（１）、式（２）に示す。ニューロン１０はｎ個の入力ｘ１〜ｘｎが各々結合重み係数ｗ１〜ｗｎを有する結合重みで接続されており、入力ｘ１〜ｘｎと結合重み係数ｗ１〜ｗｎとの積和演算が行われる。ニューロン１０はバイアス係数ｂを有しており、入力ｘ１〜ｘｎと結合重み係数ｗ１〜ｗｎとの積和演算結果にバイアス係数ｂが加算される。ニューロン１０は活性化関数ｆを有しており、入力ｘ１〜ｘｎと結合重み係数ｗ１〜ｗｎとの積和演算結果にバイアス係数ｂを加算した結果に対して活性化関数の演算処理を行い出力ｙが出力される。
【００１９】
図３はニューラルネットワーク演算におけるニューロンの計算において、バイアス係数ｂの演算を入力ｘ０と結合重み係数ｗ０に割り当てた場合の計算を示す図であり、ニューロン１０が行う計算式を図３の式（１）、式（２）に示す。前述した図２において、ニューロン１０は入力ｘ１〜ｘｎと結合重み係数ｗ１〜ｗｎとの積和演算と、バイアス係数ｂの加算演算が行われるが、図３に示す通り、バイアス係数ｂの加算演算を入力ｘ０＝１、結合重み係数ｗ０＝ｂとして、ｎ＋１個の入力ｘ０〜ｘｎが各々結合重み係数ｗ０〜ｗｎを有する結合重みで接続されたニューロン１０と解釈することができる。図３の式（１）、式（２）に示す通り、ニューロン１０の計算を入力ｘ０〜ｘｎと結合重み係数ｗ０〜ｗｎとの積和演算のみで簡潔に表現できる。本実施形態では図３に示す通り、バイアス係数ｂの加算演算の表現を入力ｘ０＝１と結合重み係数ｗ０＝ｂとして表現することにする。
【００２０】
図４はニューラルネットワーク演算におけるニューロンの活性化関数ｆの例であるステップ関数を示す図であり、ｘ軸は活性化関数ｆの入力ｕ、ｙ軸は活性化関数ｆの出力ｆ（ｕ）である。図４に示す通り、ステップ関数は入力ｕが負の値（＜０）の場合は出力ｆ（ｕ）＝０を出力し、入力ｕが正の値（≧０）の場合は出力ｆ（ｕ）＝１を出力する関数である。前述した図３のニューロン１０において、ステップ関数の活性化関数ｆを使用した場合、入力ｘ０〜ｘｎと結合重み係数ｗ０〜ｗｎとの積和演算結果が負の値の場合は出力ｙ＝０が出力され、積和演算結果が正の値の場合は出力ｙ＝１が出力される。
【００２１】
以降、活性化関数の例としてステップ関数を使用するが、ニューラルネットワーク演算で使用されるその他の活性化関数には比例関数等があり、本発明における活性関数はステップ関数に限定するものではない。
【００２２】
＜ニューラルネットワーク演算回路＞
図５は、第一の実施形態に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路の詳細構成を示す図である。
【００２３】
メモリセル２１は縦横に配置されメモリアレイ２０を構成する。メモリセル２１は横方向に配置されたワード線２２と縦方向に配置されたビット線２３に接続する。メモリセルは不揮発性半導体記憶素子を用いて構成され、ワード線２２に電圧を印加された際に、自身の状態に応じたセル電流をビット線２３に流す。メモリセル２１は、ワード線２２とビット線２３の交点に不揮発性半導体記憶素子を配置するクロスポイント型、もしくは不揮発性半導体記憶素子とトランジスタを直列に接続して１セルを構成し、ワード線２２でトランジスタのゲートを駆動し、ビット線２３をトランジスタのソースもしくは不揮発性半導体記憶素子のもう一端に接続する構成をとる。
【００２４】
メモリセル２１の不揮発性半導体記憶素子には、任意のセル電流を設定できる素子である抵抗変化型素子、磁気抵抗変化型素子、相変化型素子、強誘電体記憶素子が利用できる。
【００２５】
ワード線駆動回路２４は、ニューラルネットワークの入力に応じて各ワード線２２に電圧を印加する回路である。複数の任意のワード線２２に同時に電圧を印加する機能をもつ。ワード線駆動回路２４にはロウアドレス信号４１及び設定データ４２が入力され、ロウアドレス信号４１で指示される位置に設定データ４２をセットすることで各ワード線２２の駆動状態をセットする。ワード線２２の１本あたりの駆動状態を設定する設定データ４２は１ビット以上のデータ幅をもつ。例えば、１本あたり１ビットのデータ幅で表現する場合、０データをＧＮＤレベル設定、１データをハイレベル設定に割り当てる。また、１本あたり多ビットで表現する場合は、ワード線２２の電圧レベルを各データに割り当てる。電圧レベルの割り当てと、ワード線２２ごとの設定データ４２に応じてワード線駆動回路はワード線２２に電圧を印加する。また、ロウアドレス信号４１で指示され、設定データ４２が設定されるワード線２２以外のワード線２２にはＧＮＤレベルを印加する。
【００２６】
カラム選択回路２５は、制御回路２９から出力されるカラム選択信号４０をもとに、複数のビット線２３からニューラルネットワーク演算に用いるビット線２３を１本以上選択して演算回路２６に接続する回路である。演算回路２６は１つのメモリアレイ２０に対し、１個以上を搭載する。複数の演算回路２６を搭載する際は、メモリアレイ２０をカラム方向に演算回路数分に分割し、各分割エリアをそれぞれの演算回路２６が担当する。カラム選択回路２５はそれぞれの演算回路２６に対し、共通のカラム選択信号４０を用いて、各分割エリアからニューラルネットワーク演算に用いるビット線２３を選択し接続する。
【００２７】
演算回路２６は接続したビット線２３に流れる電流値を判定することで、活性化関数の演算動作を実現する。本発明における演算回路はデジタル値を取るものとする。例えば、２本のビット線２３の大小をセンスアンプ回路で比較し、（０，１）の２値データを出力することでステップ関数の演算動作を実現する。また、ビット線２３に流れる電流値をＡ／Ｄ変換回路でデジタル信号に変換する方式もある。演算回路２６で活性化関数の演算を行った結果は、出力保持回路２７に蓄積される。出力保持回路２７はフリップフロップ、ラッチ回路等を用いて構成される。図５の第一の実施形態では出力保持回路２７に蓄積したデータは外部出力が可能になっている。
【００２８】
制御回路２９は、ネットワーク構成情報保持回路２８に保持しているネットワーク構成情報を参照し、ワード線駆動回路２４に対し、ロウアドレス信号４１を出力し、入力データ又は出力保持回路２７の保持データを設定するワード線エリアを指示する。ニューラルネットワークの入力層１の入力データを設定する場合は、セレクタ回路３０で外部入力を選択し、ワード線駆動回路２４に設定データ４２を指示する。隠れ層２以降の入力データを設定する場合は、セレクタ回路３０で出力保持回路２７のデータを選択し、ワード線駆動回路２４に設定データ４２を指示する。また制御回路２９は、ネットワーク構成情報を参照し、カラム選択回路２５に対し演算回路２６に接続するビット線２３の選択を指示するカラム選択信号４０を生成する。
【００２９】
ネットワーク構成情報は、ニューラルネットワークの各層のノード数、隠れ層２の総数、各結合重み係数を割り当てているメモリセル２１のメモリアレイ２０内のアドレス情報を含む。図６にネットワーク構成情報の構成例を示す。各層のノード数及び結合重み係数の割り当て開始アドレスをリスト形式で保持する。結合重み係数の割り当て開始アドレスと、メモリアレイ２０内の結合重み係数のマッピングの関係性については、後述で動作の例と共に詳細を説明する。
【００３０】
ネットワーク構成情報保持回路２８はネットワーク構成情報を保持する記憶回路である。ネットワーク構成情報を書き換えできるようＲＡＭ（Random Access Memory）を用いて構成する。なお、メモリアレイ２０の一部をデジタルメモリとして用いるためのアクセス回路を搭載している場合、メモリアレイ２０の一部をネットワーク構成情報保持回路２８として使用してもよい。
【００３１】
次に第一の実施形態を用いたニューロンの計算について説明する。
【００３２】
本発明において、ワード線２２の各バイアス状態はニューロンの計算式における入力ｘ０〜ｘｎに相当する。同じカラム選択信号４０で選択され、同じ演算回路２６に接続するビット線２３に接続するメモリセル２１のうち、同じワード線２２で駆動される１つ以上のメモリセル２１で、１つの結合重み係数を表現する。
【００３３】
以下、各入力ｘ０〜ｘｎが（０，１）の２値をとり、結合重み係数が２つのメモリセル２１のセル電流値の差分を用いて符号付アナログ値で表現されるニューロンを第一の実施形態で計算する例を説明する。また、活性化関数にはステップ関数を用いるものとする。
【００３４】
図７Ａに、説明に用いるメモリセル２１、メモリアレイ２０、ワード線駆動回路２４、カラム選択回路２５及び演算回路２６を含む簡略図を示す。図７Ａでは、メモリアレイ２０はカラム方向に８つのエリアに分割され、各々に演算回路２６が１つずつ対応している。カラム選択回路２５は各演算回路２６に対し、カラム選択信号４０をもとに２本のビット線２３を選択して接続する。
【００３５】
カラム選択回路２５で各演算回路２６に接続する２本のビット線２３に接続するメモリセル２１は、共通のワード線で駆動される２つのメモリセル２１で１つの結合重み係数を表す。図７Ｂに、ある１つの結合重み係数ｗｉ，ｊを保持するメモリセル２１の接続関係を表す。符号付アナログ値の結合重み係数を設定するため、２つのメモリセル２１の一方を正の結合重み係数を表すために用いる正側メモリセル２１Ａ、もう一方を負の結合重み係数を表すために用いる負側メモリセル２１Ｂとして用いる。ワード線２２にハイレベルが印加された際の正側メモリセル２１Ａのセル電流と、負側メモリセル２１Ｂのセル電流の差分が結合重み係数に比例するように、各セル電流を設定する。カラム選択回路２５で選択する２本のビット線２３は、正側メモリセル２１Ａを接続する正側ビット線２３Ａと、負側メモリセル２１Ｂを接続する負側ビット線２３Ｂに分けられる。表記の簡略化のため、正側ビット線２３Ａと負側ビット線２３Ｂが隣接している図となっているが、共通のカラム選択信号４０で選択されるビット線２３であれば、メモリアレイ２０内での位置は任意である。
【００３６】
ワード線駆動回路２４は設定された入力の（０，１）データに応じ、１設定されるワード線２２にハイレベルの電圧を印加し、０設定されるワード線２２にはＧＮＤレベルを印加する。ワード線２２にハイレベルの電圧を印加されたメモリセル２１には、各セルの保持状態に応じたセル電流が流れる。一方、ワード線２２がＧＮＤレベルのメモリセル２１にはセル電流が流れない。このため、正側ビット線２３Ａにはワード線２２がハイレベルの正側メモリセル２１Ａの電流の総和が流れ、負側ビット線２３Ｂにはワード線２２がハイレベルの負側メモリセル２１Ｂの電流の総和が流れる。
【００３７】
演算回路２６は接続した正側ビット線２３Ａと負側ビット線２３Ｂの電流を比較し、正側ビット線２３Ａの電流が大きければ１を出力し、負側ビット線２３Ｂの電流が大きければ０を出力する。この動作により、ワード線２２の駆動状態で表される入力と、正側メモリセル２１Ａと負側メモリセル２１Ｂのセル電流の差分で表される結合重み係数の総和をステップ関数に代入した結果を得ることができる。
【００３８】
次に、前述したニューロンをノードとしたニューラルネットワークの演算動作を説明する。
【００３９】
図８に、説明に用いるニューラルネットワークの図を示す。入力層１は９ノード、隠れ層２は１７ノード、出力層３は８ノードの３層構造をとる。入力層１及び隠れ層２のノードのうち、ノード０はバイアス係数の加算表現に用いるノード（以下、バイアスノードと呼ぶ）であり、入力値が１に固定される。外部からの入力データｘ１〜ｘ８は８ビットの（０，１）データで示される。
【００４０】
図９に、説明に用いるニューラルネットワークのネットワーク構成情報を示す。ネットワーク構成情報の１層目の情報には、入力層１のノードがバイアスノードを除いて８ノードであることと、入力層１から隠れ層２の結合重み係数の割り当てのワード線開始アドレスが０番地であること及びビット線開始アドレスが０番地であることを含んでいる。ネットワーク構成情報の２層目の情報には、隠れ層２のノード数がバイアスノードを除いて１６ノードであることと、隠れ層２から出力層３の結合重み係数の割り当てのワード線開始アドレスが０番地であること及びビット線開始アドレスが２番地であることが含まれる。ネットワーク構成情報の３層目の情報には、出力層３のノード数が８ノードであることが含まれている。
【００４１】
図７Ａには、図８及び図９で示すニューラルネットワークの結合重み係数をメモリアレイエリアへマッピングした結果を記載している。図８のニューラルネットワークの入力層１から隠れ層２への結合重み係数をｗｉ，ｊ、隠れ層２から出力層３への結合重み係数をｗ’ｉ，ｊで表している。各ｉは入力側のノード番号を表し、ｊは出力側のノード番号を表す。例えば、図８の入力層１のバイアスノード（ノード０）から隠れ層２のノード１への結合重み係数はｗ０，１となり、隠れ層２のノード１から出力層３のノード１への結合重み係数はｗ’１，１となる。
【００４２】
メモリアレイ２０内におけるアドレスは、各ワード線２２と分割メモリエリア内の正負ビット線の組み合わせごとに付与されており、ｗ０，１〜ｗ０，８が配置されている位置がワード線アドレス０番地、ビット線アドレス０番地に相当するものとする。
【００４３】
図７Ａで示すように、入力層１から隠れ層２への結合重み係数は、ビット線アドレス０番地にあたるｗｘ，１〜ｗｘ，８（ｘ＝０〜８）と、ビット線アドレス１番地にあたるｗｘ，９〜ｗｘ，１６（ｘ＝０〜８）に分けてマッピングする。本構成において、ある層から次の層への結合重み係数は、次の層のノード数が演算回路数を超える場合、ワード線エリアが共通で、異なるビット線番地にマッピングを行う。あるワード線駆動状態つまり入力に対し、１回の演算回路動作で得られる出力ノードは搭載する演算回路数に制限される。しかし前述したマッピング方法を用いることで、ワード線駆動状態を維持したまま、カラム選択信号４０を切り替えて演算回路２６を動作させることで、演算回路数以上の出力ノード数を扱うことができる。
【００４４】
図７Ａの結合重みのマッピング及び図９のネットワーク構成情報では、ある層から次層への結合重み係数は、連続したビット線番地にマッピングすることを前提としており、結合重み係数の割り当て開始アドレスのみ管理する例を示しているが、制御回路２９がある層から次層への結合重み係数の割り当て位置を指示できるように、ネットワーク構成情報やハードウェアの情報があれば、必ずしも連続したビット線番地にマッピングする必要はない。
【００４５】
図１０、図１１、図１２、図１３を用いて、図８、図９で示すニューラルネットワークにある入力を入れた際の演算フローを示す。図１０において、まず外部入力から入力層１のデータが入力され、ワード線駆動回路２４にセットされる。このとき、制御回路２９は図９のネットワーク構成情報の第１層の情報を参照する。第１層の情報から、入力層１のノード数はバイアスノードを除き８ノードであり、入力層１と次層の結合重み係数はワード線アドレス０番地から開始するワード線２２に配置されていることがわかる。このため、ワード線アドレス０番地のワード線にバイアスノードの入力である１データをセットし、連続するワード線アドレス１番地から８番地に入力データをセットする。また第１層の情報から、入力層１と次層の結合重み係数はビット線アドレス０番地から開始する領域に配置していることがわかる。このため、カラム選択回路２５はビット線アドレス０番地で示される正側ビット線２３Ａ及び負側ビット線２３Ｂを演算回路２６に接続する。８機搭載されている演算回路２６は、それぞれ正側ビット線２３Ａと負側ビット線２３Ｂの電流を比較判定し、（０，１）を出力する。出力した結果は隠れ層２のノード１からノード８のデータとなり、出力保持回路２７に保存される。
【００４６】
次に図１１において、ネットワーク構成情報の第２層の情報から、隠れ層２のノードはバイアスノードを除いて１６ノードあることがわかる。図１０の演算動作では、隠れ層２のノード１からノード８までの演算結果しか得られていないため、制御回路２９はビット線アドレスをインクリメントし、カラム選択回路２５に１番地を選択するように指示する。カラム選択回路２５はビット線アドレス１番地で示される正側ビット線２３Ａ及び負側ビット線２３Ｂを演算回路２６に接続する。再度演算回路２６で電流の比較判定を実施することで、隠れ層２のノード９からノード１６のデータを得ることができる。演算回路２６の出力結果を、出力保持回路２７に追加して保存する。
【００４７】
次に図１２において、隠れ層２の演算が完了したため、出力保持回路２７の保持データをワード線駆動回路２４に転送している。ネットワーク構成情報の第２層の情報から、隠れ層２と出力層３の結合重み係数は、ワード線アドレス０番地から開始するワード線２２に配置されていることがわかる。このため、ワード線アドレス０番地のワード線にバイアスノードの入力である１データをセットし、連続するワード線アドレス１番地から１６番地に隠れ層２のノード１からノード１６のデータをセットする。
【００４８】
最後に図１３において、ネットワーク構成情報の第２層の情報から、隠れ層２と出力層３の結合重み係数は、ビット線アドレス２番地から開始する領域に配置されていることがわかる。このため、カラム選択回路２５はビット線アドレス２番地で示される正側ビット線２３Ａ及び負側ビット線２３Ｂを演算回路２６に接続する。演算回路２６は正側ビット線２３Ａと負側ビット線２３Ｂの電流を比較判定し、（０，１）を出力する。演算回路２６の出力結果は出力保持回路２７に保存され、出力層３の演算結果として外部出力より出力される。
【００４９】
以上の動作により、図８で示すニューラルネットワークの演算を１つのメモリアレイ２０に保持した結合重み係数を用いて実施することができる。ニューラルネットワークの層数が増加した場合も、前述したように、ネットワーク構成情報を参照して、出力保持回路２７の保持データをワード線駆動回路２４に設定し、ビット線２３を選択し、演算回路２６で演算結果を得て出力保持回路２７に保存する動作を繰り返すことで実現できる。
【００５０】
図１４は本発明の第二の実施形態に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路の詳細構成を示す図である。外部入力と演算回路２６の出力をセレクタ回路３１で選択し、出力保持回路２７に保存する。外部からの入力データを設定する際は、出力保持回路２７に一旦データを保存したのち、ワード線駆動回路２４に設定する動作をとる。また、演算回路２６から出力したデータと、外部入力から入力したデータを出力保持回路２７において結合し、ワード線駆動回路２４に設定することも可能とする。
【００５１】
図１５は本発明の第三の実施形態に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路の詳細構成を示す図である。演算回路２６の出力がそのまま外部出力に接続し、セレクタ回路３２で演算回路２６の出力と外部入力を選択し、出力保持回路２７に接続する構成をとる。第二の実施形態と同様に、外部からの入力データを設定する際は、出力保持回路２７に一旦データを保存したのち、ワード線駆動回路２４に設定する動作をとる。また、演算回路２６から出力したデータと、外部入力から入力したデータを出力保持回路２７において結合し、ワード線駆動回路２４に設定することも可能とする。
【００５２】
図５、図１４、図１５においてネットワーク構成情報保持回路２８は制御回路２９中に含む形で記載しているが、その搭載場所を制限するものではない。また、実施形態の説明に用いた図面における各構成要素の実現方法及び搭載数は、例示を目的として記載しており、その実施形態を制限するものではない。
【００５３】
なお、本発明におけるメモリアレイ２０は、必ずしも全面をニューラルネットワークの結合重み係数の実装に用いる必要はなく、本発明の構成要素に加えてデジタルメモリのアクセス回路を搭載し、メモリアレイ２０の一部をデジタルメモリとして用いることも可能である。また、一部をデジタルメモリとして用いる場合に、各構成要素の機能をデジタルメモリアクセスに用いることも可能である。
【００５４】
以上、本発明の実施形態を説明してきたが、本発明の不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路は、上述の例示にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更等を加えたものに対しても有効である。
【産業上の利用可能性】
【００５５】
本発明に係る不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路は、ネットワーク構成情報でニューラルネットワークの構成を管理することで、１つのメモリアレイを用いてディープニューラルネットワークを構成することが可能になる。また、メモリアレイの異なる領域に複数のニューラルネットワークの結合重み係数を保持することで、１つのメモリアレイに複数のニューラルネットワークを保持することも可能である。また、本発明の構成はメモリアレイ部が演算回路と分離しているため、メモリアレイ部を高度に集積化でき、多数のニューロンを搭載することが可能になる。【００５６】
加えて、メモリアレイの一部をデジタルメモリとして用いることも可能なため、ニューラルネットワーク演算回路と、デジタルメモリとしての機能を同時に搭載できる。【００５７】
従って、複数の大規模なニューラルネットワーク演算を１コアで実現するマクロとして活用でき、また、ノイマン型プロセッサと併用し、ニューラルネットワーク演算のアクセラレータとデジタルメモリの両機能をもつマクロとしても活用できる。これらの活用は、例えば、自らが学習と判断を行う人工知能（ＡＩ：Artificial Intelligence）技術を搭載した半導体集積回路、及びそれらを搭載した電子機器等に対して有用である。
【符号の説明】
【００５８】
１  入力層
２  隠れ層
３  出力層
１０  ニューロン
１１  結合重み
２０  メモリアレイ
２１  メモリセル
２２  ワード線
２３  ビット線
２４  ワード線駆動回路
２５  カラム選択回路
２６  演算回路
２７  出力保持回路
２８  ネットワーク構成情報保持回路
２９  制御回路
３０、３１、３２  セレクタ回路
４０  カラム選択信号
４１  ロウアドレス信号
４２  設定データ
ｘ０〜ｘｎ  入力
ｗ０〜ｗｎ  結合重み係数
ｂ  バイアス係数
ｆ  活性化関数
ｙ  出力
Ｎ１  第１層のノード数
Ｎ２  第２層のノード数
Ｎｎ−１  第Ｎ−１層のノード数
Ｎｎ  第Ｎ層のノード数
【図１】
2019049686.tif 000003
【図２】
2019049686.tif 000004
【図３】
2019049686.tif 000005
【図４】
2019049686.tif 000006
【図５】
2019049686.tif 000007
【図６】
2019049686.tif 000008
【図７Ａ】
2019049686.tif 000009
【図７Ｂ】
2019049686.tif 000010
【図８】
2019049686.tif 000011
【図９】
2019049686.tif 000012
【図１０】
2019049686.tif 000013
【図１１】
2019049686.tif 000014
【図１２】
2019049686.tif 000015
【図１３】
2019049686.tif 000016
【図１４】
2019049686.tif 000017
【図１５】
2019049686.tif 000018
【国際調査報告】
2019049686.tif 000019
2019049686.tif 000020
2019049686.tif 000021