(57)【要約】【課題】  ニューラルネットワークを省メモリで実装可能な半導体集積回路を提供すること。【解決手段】  実施形態に係る半導体集積回路は、クロスポイント型のメモリセルアレイ１１と、メモリセルアレイ１１への入力に接続される入力部１２と、メモリセルアレイ１１からの出力に接続される出力部１４とを具備する。メモリセルアレイは、複数のワード線ＷＬと、複数のワード線と交差する複数のビット線ＢＬと、ワード線ＷＬとビット線ＢＬとのクロスポイントにそれぞれ形成される複数の抵抗変化型のメモリセルＭＣとを備える。入力部１２は、行列で表されたデータのメモリセルＭＣへのアクセスを時系列で制御するアクセス制御部と、データのアクセス先のメモリセルＭＣに接続されたワード線ＷＬに、当該データの値に応じた電圧を印加するドライバとを備える。出力部１４は、ビット線ＢＬの出力レベルの時系列における代表値を保持する複数の保持回路を備える。【選択図】  図５
2020035502.tif 000002
【特許請求の範囲】
【請求項１】
クロスポイント型のメモリセルアレイと、
前記メモリセルアレイへの入力に接続される入力部と、
前記メモリセルアレイからの出力に接続される出力部とを具備し、
前記メモリセルアレイは、
複数のワード線と、
前記複数のワード線と交差する複数のビット線と、
前記ワード線と前記ビット線とのクロスポイントにそれぞれ形成される複数の抵抗変化型のメモリセルとを備え、
前記入力部は、
行列で表されたデータの前記メモリセルへのアクセスを時系列で制御するアクセス制御部と、
前記データのアクセス先のメモリセルに接続されたワード線に、当該データの値に応じた電圧を印加するドライバとを備え、
前記出力部は、
前記ビット線の出力レベルの時系列における代表値を保持する複数の保持回路を備える、半導体集積回路。
【請求項２】
前記複数のメモリセルは、ニューラルネットワークを用いた畳み込み演算のフィルタの重みに対応する抵抗値を周期的に記憶する、請求項１に記載の半導体集積回路。
【請求項３】
前記アクセス制御部は、
前記行列を展開した一次元配列で表される前記データをシフトするシフト回路と、
前記シフト回路のシフト量とシフト方向を、前記フィルタのサイズおよびストライドと、前記行列のサイズとに基づいて時系列で制御する制御回路と、
シフトされた前記データを前記ドライバに接続する接続部とを備える、請求項２に記載の半導体集積回路。
【請求項４】
前記接続部は、
前記シフトされた前記データを前記ドライバに選択的に接続する選択回路を備える、請求項３に記載の半導体集積回路。
【請求項５】
前記保持回路は、
前記ビット線の各々に接続され、接続されたビット線を流れる電流を電圧に変換する複数の変換回路と、
前記電圧のピーク値を保持する複数のピークホールド回路とを備える、請求項１に記載の半導体集積回路。
【請求項６】
前記ピークホールド回路の出力を、基準電圧に基づいて２値化する複数の比較回路をさらに具備する、請求項５に記載の半導体集積回路。
【請求項７】
前記メモリセルアレイは、
前記メモリセルと前記ビット線または前記ワード線との間にそれぞれ設けられるセレクタ素子をさらに備える、請求項１に記載の半導体集積回路。
【請求項８】
前記ドライバは、前記データのアクセス先のメモリセルに接続されたワード線に、前記セレクタ素子のオフ領域に対応する電圧を印加する、請求項７に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、半導体集積回路に関する。
【背景技術】
【０００２】
ＡＩ（artificial intelligence）チップに関する技術開発が盛んである。ＡＩチップは、ＡＩ技術に基づく演算処理機能を有する半導体集積回路ということができる。例えばニューラルネットワークを実装したチップも知られている。
【０００３】
ディープニューラルネットワーク（Deep Neural Network：ＤＮＮ）の一つである畳み込みニューラルネットワーク（Convolutional Neural Network：ＣＮＮ）は、特に画像認識処理の分野において優れた性能を発揮する。ＣＮＮは、畳み込み層（Convolution layer）とプーリング層（Pooling layer）を備える。
【０００４】
畳み込み層は、例えば正方行列で与えられるフィルタ（カーネル）を用いた畳み込み演算により、直前の層のデータの特徴を抽出する。例えばＮ行×Ｍ列のマトリクスからなる画像データを３×３のフィルタで畳み込めば、（Ｎ−２）行×（Ｍ−２）列の特徴ベクトル（テンソル）が算出される。
【０００５】
プーリング層は、端的に言えば、直前の層のデータサイズを縮小するために設けられる。例えば畳み込み層の出力を２×２の領域で区分し、領域内の代表値を取ることでデータ量を削減することができる。領域内の最大値を次の層に渡すことをマックスプーリング（Max Pooling）と称する。代表値として、領域内の平均値、あるいは最小値を抽出することも原理的には可能である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１７／００８４２６９号明細書
【特許文献２】米国特許第９５４２６２１号明細書
【特許文献３】米国特許第９７４７５４８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ニューラルネットワークを半導体チップに実装するには、例えばＣＮＮのフィルタを記憶するための大量のメモリ空間が消費される。加えて、畳み込み演算の結果、あるいはプーリング演算の結果を一時的に格納するためのバッファメモリも必要になり、さらにメモリ空間が圧迫される。畳み込み層やプーリング層の数が増えると事態はますます深刻になる。
【０００８】
そこで、目的は、ニューラルネットワークを省メモリで実装可能な半導体集積回路を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態に係る半導体集積回路は、クロスポイント型のメモリセルアレイと、前記メモリセルアレイへの入力に接続される入力部と、前記メモリセルアレイからの出力に接続される出力部とを具備する。前記メモリセルアレイは、複数のワード線と、前記複数のワード線と交差する複数のビット線と、前記ワード線と前記ビット線とのクロスポイントにそれぞれ形成される複数の抵抗変化型のメモリセルとを備える。前記入力部は、行列で表されたデータの前記メモリセルへのアクセスを時系列で制御するアクセス制御部と、前記データのアクセス先のメモリセルに接続されたワード線に当該データの値に応じた電圧を印加するドライバとを備える。前記出力部は、前記ビット線の出力レベルの時系列における代表値を保持する複数の保持回路を備える。
【図面の簡単な説明】
【００１０】
【図１】図１は、畳み込みニューラルネットワークの一例を示す概念図である。
【図２】図２は、実施形態に係る識別システム１の一例を示すブロック図である。
【図３】図３は、図２に示される識別器４の一例を示す概念図である。
【図４】図４は、実施形態に係る半導体集積回路の一例を示すブロック図である。
【図５】図５は、図４に示される入力部１２および出力部１４の一例を示すブロック図である。
【図６】図６は、メモリセルアレイ１１の等価回路の一例を示す図である。
【図７】図７は、メモリセルアレイ１１の斜視図である。
【図８】図８は、ニューラルネットワークにおける積和演算について示す概念図である。
【図９】図９は、クロスポイント型メモリセルアレイによる積和演算について説明するための図である。
【図１０】図１０は、実施形態において想定する入力データの一例を示す図である。
【図１１】図１１は、実施形態において想定するＣＮＮのフィルタの一例を示す図である。
【図１２】図１２は、畳み込み演算の結果を格納する配列の一例を示す図である。
【図１３】図１３は、フィルタの適用領域と、配列要素Ａ，Ｅ，Ｉ，Ｍとの関係を示す図である。
【図１４】図１４は、フィルタの適用領域と、配列要素Ｂ，Ｆ，Ｊ，Ｎとの関係を示す図である。
【図１５】図１５は、フィルタの適用領域と、配列要素Ｃ，Ｇ，Ｋ，Ｏとの関係を示す図である。
【図１６】図１６は、フィルタの適用領域と、配列要素Ｄ，Ｈ，Ｌ，Ｐとの関係を示す図である。
【図１７】図１７は、マックスプーリングについて説明するための図である。
【図１８】図１８は、実施形態における作用を説明するための図である。
【図１９】図１９は、実施形態における作用を説明するためのタイミングチャートである。
【図２０】図２０は、比較のため既存のニューラルネットワークで消費されるメモリ領域を示す図である。
【図２１】図２１は、セレクタとしてのダイオードＤｉの、電圧‐電流特性の一例を示すグラフである。
【図２２】図２２は、メモリセルアレイの他の例を示す斜視図である。
【発明を実施するための形態】
【００１１】
以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置等によって、技術思想が特定されるものではない。各機能ブロックは、ハードウェア及びソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。各機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。なお、以下の説明において、同様の機能及び構成を有する要素については同じ符号を付し、重複説明は必要な場合にのみ行う。
【００１２】
［一実施形態］
［１］  概要
［１−１］  ＣＮＮについての説明
図１は、ＣＮＮの一例を示す概念図である。図１に示されるＣＮＮは、入力層（Input Layer）と出力層（Output Layer）との間に、第１畳み込み層、第１プーリング層、第２畳み込み層、第２プーリング層、第３畳み込み層、第３プーリング層、局所結合層（Locally-connected layer）、全結合層（Fully-connected layer）１、および、全結合層２をこの順に配置して構成される。
【００１３】
入力層から与えられるデータは、第１畳み込み層に渡され、予め用意されたフィルタに基づき畳み込み演算が施されたのち直後の第１プーリング層で圧縮される。この（畳み込み→プーリング）を１ユニットとする処理が３回にわたって繰り返されたのち、局所結合層、全結合層１、２を経て、出力層から入力データの特徴量が出力される。
【００１４】
それぞれの畳み込み層におけるフィルタのパラメータ（重み、バイアス）は、例えばクラウドコンピューティングシステム（クラウド）で作成された学習済みモデルとして、半導体集積回路に記憶される。
【００１５】
［１−２］  ＣＮＮの適用例についての説明
ＣＮＮは、例えば画像データに捉えられた対象を識別するための識別器として用いられることができる。識別器と、識別器を学習させるための基盤などを組み合わせて識別システムが構築される。この実施形態では、画像データから数字０〜９のいずれかを識別する識別システムを例に挙げて説明する。
【００１６】
図２は、実施形態に係る識別システム１の一例を示すブロック図である。識別システム１は、センサ２、学習装置３、識別器４、及びアプリケーション部５を備える。
【００１７】
センサ２は、例えばイメージセンサであり、カラーまたはグレースケールの画像データを出力する。この画像データは学習装置３および識別器４に入力データとして与えられる。入力データは（ｎ＋１）個の画素から構成され、各画素の値はＡｋで表される。
【００１８】
なお、ＣＮＮを説明する文脈では、入力データを、特徴マップと称することもある。入力データは、画像データでもよいし、ニューラルネットワークにおける直前の層から渡されたデータであってもよい。入力データ（特徴マップ）はＭ×Ｎのサイズの行列で表現することができる。行列の各要素が演算対象のデータの値である。データの値は、行列を一次元に展開したＭ×Ｎサイズの配列に格納することができる。
【００１９】
学習装置３は、多数の入力データからその特徴を学習し、識別器４のＣＮＮにおける重み係数を生成する。学習装置３は、例えば、数字「５」をセンシングして得られた画像データが入力されたとき、識別結果として「５」を出力するような重み係数を生成する。学習装置３は、例えばクラウドのサーバコンピュータとして、あるいはクラウドによるサービスなどとして実現されることができる。
【００２０】
識別器４は、学習装置３からＣＮＮの重み係数を取得する。識別器４は、重み係数をセットされたＣＮＮに入力データを適用し、画像に描かれた数字が何であるかを識別する。アプリケーション部５は、識別結果を利用して種々の処理を行う。なお、重み係数は学習装置３により繰り返し生成される。識別器４の重み係数を都度、更新することで識別の精度を向上させることができる。
【００２１】
図３は、図２に示される識別器４の一例を示す概念図である。識別器４は、例えば１または複数の半導体集積回路により実装されてもよい。識別器４は、入力層６と、１または複数の隠れ層７と、出力層８とを備える。図３は、識別器４が２層の隠れ層７ａ、７ｂを含む例を示す。この場合、隠れ層７ａは初段の隠れ層とも言える。隠れ層７ｂは、前段の隠れ層７ａに引き続く隠れ層とも言えるし、最終段の隠れ層とも言える。
【００２２】
入力層６は、（ｎ＋１）個のノードＩ０〜Ｉｎを有する。例えば、入力データにおけるｋ番目の画素値ＡｋがノードＩｋに設定される。
【００２３】
隠れ層７ａは、（ｐ＋１）個のノードＰ１０〜Ｐ１ｐを有する。ｐは、１以上の任意の整数である。ノードＰ１０〜Ｐ１ｐの動作は同様であるので、以下代表してノードＰ１ｋとして説明する。ノードＰ１ｋには、入力層６におけるノードＩ０〜Ｉｎから（ｎ＋１）個の画素値Ａ０〜Ａｎが入力される。そして、ノードＰ１ｋは、画素値Ａ０〜Ａｎと、そのそれぞれに対応する重み係数Ｆｋ０〜Ｆｋｎとで畳み込み演算を行い、結果Ｂｋを次の層に渡す。重み係数Ｆｋ０〜Ｆｋｎは、学習装置３から取得される。
【００２４】
隠れ層７ｂは、（ｑ＋１）個のノードＰ２０〜Ｐ２ｑを有する。ｑは、１以上の任意の整数である。ノードＰ２０〜Ｐ２ｑの動作は同様であるので、以下代表してノードＰ２ｋとして説明する。ノードＰ２ｋには、前段の隠れ層７ａにおけるノードＰ１０〜Ｐ１ｐから（ｐ＋１）個のデジタル値Ｂ０〜Ｂｐが入力される。そして、ノードＰ２ｋは、デジタル値Ｂ０〜Ｂｐと、そのそれぞれに対応する重み係数Ｇｋ０〜Ｇｋｐとでプーリング演算を行い、結果Ｃｋを次の層に渡す。重み係数Ｇｋ０〜Ｇｋｐは、学習装置３から取得される。
【００２５】
出力層８は、（ｒ＋１）個のノードＰ３０〜Ｐ３ｒを有し、隠れ層７ｂの出力に対して再び演算処理を施し、出力を得る。このようにして、多数の層にわたる演算の結果が局所結合層（図１）に至るまで順次、伝搬する。
【００２６】
［２］  構成
［２−１］  半導体集積回路の構成
図４は、この実施形態に係る半導体集積回路の一例を示すブロック図である。半導体集積回路１０は、クロスポイント型のメモリセルアレイ１１、入力部１２、出力部１４、入出力回路（Ｉ／Ｏ回路）１６、アドレスレジスタ１７、コントローラ（ＣＯＮＴ）１８、及び電圧発生回路１９を備える。
【００２７】
メモリセルアレイ１１は、ロウ方向に延びる複数のワード線ＷＬと、ロウ方向に交差（例えば直交）するカラム方向に延びる複数のビット線ＢＬとを備える。ワード線ＷＬとビット線ＢＬとが立体的に交差する位置（クロスポイント）に、ワード線ＷＬとビット線ＢＬとを接続するようにメモリセルＭＣが形成される。各メモリセルＭＣは、記憶素子としてのＲｅＲＡＭ（Resistive Random Access Memory）素子を含む。メモリセルＭＣの具体的な構成については後述する。
【００２８】
入力部１２は、メモリセルアレイ１１への入力において、複数のワード線ＷＬに接続される。入力部１２は、例えばワード線ＷＬを駆動するドライバを備える。入力部１２は、アドレスレジスタ１７から取得したロウアドレスをデコードし、デコード信号（ロウ選択信号）に基づいてワード線ＷＬを選択する。入力部１２の具体的な構成については後述する。
【００２９】
出力部１４は、メモリセルアレイ１１からの出力において、複数のビット線ＢＬに接続される。出力部１４は、読み出し回路（センスアンプ）などを備え、各ビット線ＢＬから出力信号（Ｄａｔａ）を取り出し、入出力回路１６に送る。出力部１４の具体的な構成については後述する。
【００３０】
入出力回路１６は、入出力端子Ｉ／Ｏを介して外部装置に接続される。入出力回路１６は、外部装置との間でデータの受け渡しを行う。入出力回路１６と出力部１４との間のデータの受け渡しは、双方向データバス２０を介して行われる。
【００３１】
コントローラ１８は、半導体集積回路１０の動作を制御する。コントローラ１８は、例えば、チップイネーブル信号／ＣＥ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥ、書き込みイネーブル信号／ＷＥ、及び読み出しイネーブル信号／ＲＥ等の外部制御信号を、外部装置（ホストコントローラなど）から受ける。信号名を修飾する“／”は、アクティブ・ローを表す。
【００３２】
コントローラ１８は、これらの外部制御信号に基づいて、入出力端子Ｉ／Ｏから供給されるアドレスＡＤＤとコマンドＣＭＤとを識別する。そして、コントローラ１８は、アドレスＡＤＤを、アドレスレジスタ１７を介して入力部１２及び出力部１４に送る。また、コントローラ１８は、コマンドＣＭＤをデコードする。コントローラ１８は、外部制御信号及びコマンドに従って、データの読み出し、及びデータの書き込み、及びデータの消去の各々に関するシーケンス制御を行う。
【００３３】
電圧発生回路１９は、各動作に必要な内部電圧（例えば、電源電圧より昇圧された電圧を含む）を発生する。電圧発生回路１９は、コントローラ１８により制御され、必要な電圧を発生する。
【００３４】
［２−２］  入力部１２および出力部１４の構成
図５は、図４に示される入力部１２および出力部１４の一例を示すブロック図である。入力部１２は、アクセス制御部１２１と、ドライバ１２２とを備える。  
アクセス制御部１２１は、入力データのメモリセルＭＣへのアクセスを、クロック信号に基づいて時系列的に制御する。つまりアクセス制御部１２１は、入力データを表す行列要素の値と、メモリセルＭＣとの対応を、クロック信号に基づいて時分割的に切り替える。  
ドライバ１２２は、それぞれの入力データのアクセス先となるメモリセルＭＣに接続されたワード線ＷＬに、当該データの値に応じた電圧を印加する。つまりドライバ１２２は、行列要素の値に対応付けられたメモリセルＭＣに繋がるワード線ＷＬに、その値に応じた電圧を印加する。
【００３５】
図５において、例えば０〜ｎの（ｎ＋１）個の列で表される入力データは一次元配列に展開され、入力部１２のアクセス制御部１２１に入力される。アクセス制御部１２１は、シフト回路としてのシフトレジスタ１２ａと、選択回路としてのＭＵＸ（Multiplexer）１２ｂと、クロック信号に基づいてこれらを制御する制御回路１２ｃとを備える。
【００３６】
シフトレジスタ１２ａは、入力データを一時的に記憶する。そして、制御回路１２ｃから与えられるシフト量及びシフト方向に入力データをシフトさせて、ＭＵＸ１２ｂに格納する。ＭＵＸ１２ｂは、シフトされた入力データをドライバ１２２に接続する。
【００３７】
ＭＵＸ１２ｂは、シフトレジスタ１２ａによりシフトされたデータを、選択的にドライバ１２２に接続する。ＭＵＸ１２ｂを設けることにより、少ないクロック数でデータのシフト量を稼ぐことができる。データシフトにかかるクロック数が多くてもよければ、ＭＵＸ１２ｂを省略しても構わない。
【００３８】
ここで、制御回路１２ｃは、メモリセルアレイ１１に実装すべきＣＮＮで用いられるフィルタのサイズおよびストライドと、入力データを表す行列のサイズとに基づいて、シフトレジスタ１２ａのシフト量及びシフト方向を時系列で制御する。当業者には既に知られているように、フィルタを適用する位置の間隔をストライドと称する。また、Ｍ行Ｎ列の行列のサイズは、（Ｍ×Ｎ）で表される。データのパディングを考慮する場合には、行列のサイズはこれよりも大きく、例えば（Ｍ＋２）×（Ｎ＋２）なる。
【００３９】
ドライバによりいくつかのワード線ＷＬに電圧が印加されると、それに交差するビット線に、クロスポイントのメモリセルＭＣの抵抗値に応じた電流が流れる。その電流の出力レベルの代表値が、出力部１４の保持回路により保持される。
【００４０】
保持回路は、例えば変換回路１４１と、ピークホールド回路１４２とを直列に接続してなり、ビット線ＢＬのそれぞれの出力段に形成される。変換回路１４１は、接続されたビット線ＢＬを流れる電流を電圧に変換する。ピークホールド回路１４２は、変換回路１４１の出力電圧のピーク値を保持し、出力データとして保持する。なお、保持されたピーク値を基準電圧と比較し、２値化して出力する比較回路をビット線ＢＬごとに設けてもよい。
【００４１】
［２−３］  メモリセルアレイ１１の構成
図６は、メモリセルアレイ１１の等価回路の一例を示す図である。メモリセルアレイ１１において、ワード線ＷＬとビット線ＢＬとのクロスポイントの各々に、メモリセルＭＣが形成される。各メモリセルＭＣは、いわゆる２端子の抵抗変化型メモリであり、可変抵抗素子ＶＲと、双極性のダイオードＤｉとを直列に接続してなる。
【００４２】
抵抗変化型メモリは、アナログ情報を記憶させる事が可能である。各メモリセルＭＣは、ＣＮＮのフィルタの重みに対応する抵抗値を、可変抵抗素子ＶＲに記憶する。より詳しくは、抵抗値の逆数が、実施形態におけるフィルタの重みに相当する。
【００４３】
ダイオードＤｉは、メモリセルＭＣへの書き込み動作時の、周辺セルへの回り込み電流を抑圧するために設けられる。この種の素子は、セレクタと称して知られている。クロスポイント構造では、選択メモリセルへの書き込み時に、非選択メモリセルにも逆方向バイアスが印加されるおそれがある。そこで、記憶媒体（可変抵抗素子）にセレクタを直列接続することで、逆方向バイアスによる回り込み電流を抑圧する。なお、実施形態ではセレクタとして双極性のダイオードＤｉを例示したが、これに限られない。二端子間の電圧が閾値より高いか低いかに応じて実質的にオンまたはオフとなる種々の素子を、セレクタとして用いることができる。例えば、セレクタとして、オボニック効果を利用したスイッチ（例えば、Ｏｖｏｎｉｃ  Ｔｈｒｅｓｈｏｌｄ  Ｓｗｉｔｃｈ）を用いても同様な効果を得ることができる。
【００４４】
図７は、メモリセルアレイ１１の斜視図である。図７において、複数のビット線（ＢＬ［BL1，BL2，…］）が互いに平行に配置される。これらのビット線ＢＬと直交するように、複数のワード線（ＷＬ［WL1，WL2，…］）が互いに平行に配置される。そして、ＢＬとＷＬとのクロスポイントのそれぞれにメモリ素子３０が形成される。
【００４５】
図８は、ニューラルネットワークにおける積和演算について示す概念図である。それぞれ値Ｘ１〜Ｘｎを持つ入力データに対し、例えば重みＷ１２〜Ｗｎ２で積和演算（畳み込み：convolution）を行うと、出力データＹ２が得られる。
【００４６】
図９は、クロスポイント型メモリセルアレイによる積和演算について説明するための図である。例えばワード線ＷＬをそれぞれ電圧値Ｖ１〜Ｖｎでドライブすると、クロスポイントごとに、メモリセルＭＣの抵抗値の逆数に比例する電流が生じる。各クロスポイントで生じる電流は抵抗値の逆数と電圧値との積であり、その総和がビット線ＢＬから取り出される。電流値を示す式を図８の式と比較すると、全く同じ格好をしている。つまり、重みの逆数を抵抗値としてメモリセルに記憶するメモリセルアレイを用いれば、データの多重選択と電流加算により、信号の積和演算を実装することができる。このようにクロスポイント構造のメモリセルアレイを用いると、ハードウェア回路に、自然なかたちでＣＮＮを実装することができる。次に、上記構成における作用を説明する。
【００４７】
［３］  作用
図１０は、実施形態において想定する入力データの一例を示す図である。議論を簡単にするために６行×６列の正方行列で示される画像データを想定するが、もちろん、このサイズに限定されるものではなく、正方行列に限定されるものでもない。行列の各要素の値が、例えば画像データの輝度を示す。
【００４８】
図１１は、実施形態において想定するＣＮＮのフィルタの一例を示す図である。複数のフィルタを用いることで、複数の特徴量を抽出することができる。図１１においては６種類（６チャネル）のフィルタが用いられることを示すが、もちろん、この数に限られるものではない。フィルタを表す行列要素を（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ）で示す。
【００４９】
図１２は、畳み込み演算の結果を格納する配列の一例を示す図である。例えば、ＣＮＮの入力層（図１）に図１０のデータが与えられると、第１畳み込み層における積和演算の結果が図１２の各配列要素Ａ〜Ｐに格納される。６×６サイズの行列を３×３サイズのフィルタで畳み込むと、パディングを考慮しないケースでは、４×４サイズの出力が得られる。
【００５０】
図１３〜図１６は、入力データに対するフィルタの適用領域と、図１２の各配列要素Ａ〜Ｐとの関係を示す図である。配列要素Ａは、フィルタ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ）と、入力データ行列の左上部分（ハッチング箇所）（０，６，１２，１，７，１３，２，８，１４）との積和演算の結果を格納する。以下同様に、各図のハッチング箇所と配列要素Ｂ〜Ｐとが関連付けられる。
【００５１】
図１３〜図１６の例では、３×３の畳み込み演算をストライド１で行う処理手順が示される。ＣＮＮ演算の過程でフィルタの適用個所を移動させてゆくにつれ、積和演算に係わるデータに周期性のあることがわかる。
【００５２】
図１７は、マックスプーリングについて説明するための図である。１６個の配列要素Ａ〜Ｐを例えば２×２の領域に区分し、各領域の最大値をとることで２×２の行列（α，β，γ，δ）が得られる。例えばαは、Ａ，Ｂ，Ｅ，Ｆのうちの最大値である。図１７は、２×２のマックスプーリングをストライド２で行った例を示す。
【００５３】
図１８は、実施形態における作用を説明するための図である。図１９のタイミングチャートも参照して、実施形態における作用を説明する。この実施形態では、『（６×６）のサイズの行列で表される入力データに、（３×３）のフィルタでストライド１の畳み込み演算を行い、２×２の領域でストライド２のマックスプーリングを行う』という条件で計算を行うＣＮＮを、一例として採り上げる。
【００５４】
図１８に示されるように、上記の条件下では、メモリセルアレイは３６×４のマトリクス構造を有する。つまり３６本のワード線（WL0〜WL35）と、４本のビット線（BL0〜BL3）が消費される。ｉ，ｊをインデックスとして、ワード線WLiとビット線BLjとの交点のメモリセルを（WLi，BLj）で表す。
【００５５】
フィルタの値ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉは、各メモリセルに周期的に記憶される。例えば値ａは、メモリセル（WL0，BL0）、（WL12，BL1）、（WL2，BL2）、（WL14，BL3）に記憶される。他の値ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉも同様に、それぞれ４つのメモリセルに記憶される。
【００５６】
重みを記憶したメモリセルアレイ１１に、一次元に展開されたデータの配列が入力される。アドレスＡ１（図１９）に対応する最初のステップ（１）では、データ０がメモリセル（WL0，BL0）にアサインされ、データ１〜データ３５が順次、ワード線のインデックスｉが増える方向にアサインされる。
【００５７】
これに応じて、ドライバ１２２は各ワード線に、データ値に応じた電圧を印加する。このとき、値ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉを記憶するメモリセルにおいて、抵抗値に対応した電流が流れる。そして、電流の加算された結果が積和演算の結果として各ビット線ＢＬから出力される。なお、重みの記憶されていないメモリセル（空白のマトリクスに対応：抵抗値が最大（絶縁状態））においても微小な電流が流れるが、その値は無視できる程度に小さい。よって、重みの記憶されていないメモリセルが演算の結果にもたらす影響は、無視することができる。
【００５８】
ステップ（１）では図１２のＡ，Ｉ，Ｃ，Ｋに対応する結果が得られ、図１９のように変換回路１４１の出力がピークホールド（ＰＨ）回路１４２で保持される。
【００５９】
図１９のクロック信号（ＣＬＫ）に同期して次のアドレスＡ２が与えられ、ステップ（２）において、シフトレジスタ１２ａによりデータが上方向に１シフトされる。ここでのシフト量は、フィルタのサイズおよびストライドと、データ行列のサイズとに基づいて設定される。
【００６０】
上方向とはつまり、図１８においてメモリセル（WL0，BL0）にデータ０がアサインされていた状態から、データ１がアサインされるようにシフトすることを示す。このようにシフトレジスタ１２ａを作用させることで、図１４の［Ｂ］を得るためのハッチング領域にフィルタをスライドさせた状態が、ビット線BL0で実現される。つまりデータ（１，２，３）、（７，８，９）、（１３，１４，１５）が、フィルタの（ａ，ｄ，ｇ）、（ｂ，ｅ，ｈ）、（ｃ，ｆ，ｊ）に、それぞれアサインされる。これに応じて、ドライバ１２２により各ワード線に電圧が印加され、生じた電流の加算された結果が各ビット線ＢＬから出力される。
【００６１】
［Ｊ］，［Ｄ］，［Ｌ］を得るための状態も、それぞれビット線BL1，BL2，BL3において同時に作られている。よってステップ（２）では図１２のＢ，Ｊ，Ｄ，Ｌに対応する結果が得られる。図１９において、変換回路１４１の出力が例えば低下しても、ピークホールド（ＰＨ）回路１４２の出力は（１）の状態で保持される。
【００６２】
さらに、次のアドレスＡ３が与えられると、ステップ（３）において、シフトレジスタ１２ａによりデータが上方向に５シフトされる。ここでのシフト量は、フィルタのサイズおよびストライドと、データ行列のサイズとに基づいて設定される。シフトレジスタ１２ａのみであれば５クロックが消費されるが、ＭＵＸ１２ｂを組み合わせることで、データ配列を５マス分、１クロックでシフトさせることができる。
【００６３】
そうすると、図１３の［Ｅ］を得るためのハッチング領域にフィルタをスライドさせた状態が、ビット線BL0で実現される。つまりデータ（６，７，８）、（１２，１３，１４）、（１８，１９，２０）が、フィルタの（ａ，ｄ，ｇ）、（ｂ，ｅ，ｈ）、（ｃ，ｆ，ｊ）に、それぞれアサインされる。これに応じて、ドライバ１２２により各ワード線に電圧が印加され、生じた電流の加算された結果が各ビット線ＢＬから出力される。
【００６４】
［Ｍ］，［Ｇ］，［Ｏ］を得るための状態も、それぞれビット線BL1，BL2，BL3において同時に作られている。よってステップ（３）では図１２のＥ，Ｍ，Ｇ，Ｏに対応する結果が得られる。図１９において、変換回路１４１の出力が増加すると、ピークホールド（ＰＨ）回路１４２の出力も増加する。
【００６５】
次のアドレスＡ４が与えられると、ステップ（４）において、シフトレジスタ１２ａによりデータが上方向に１シフトされる。ここでのシフト量も、フィルタのサイズおよびストライドと、データ行列のサイズとに基づいて設定される。
【００６６】
そうすると、図１４の［Ｆ］を得るためのハッチング領域にフィルタをスライドさせた状態が、ビット線BL0で実現される。つまりデータ（７，８，９）、（１３，１４，１５）、（１９，２０，２１）が、フィルタの（ａ，ｄ，ｇ）、（ｂ，ｅ，ｈ）、（ｃ，ｆ，ｊ）に、それぞれアサインされる。これに応じて、ドライバ１２２により各ワード線に電圧が印加され、生じた電流の加算された結果が各ビット線ＢＬから出力される。
【００６７】
［Ｎ］，［Ｈ］，［Ｐ］を得るための状態も、それぞれビット線BL1，BL2，BL3において同時に作られている。よってステップ（４）では図１２のＦ，Ｎ，Ｈ，Ｐに対応する結果が得られる。図１９において、変換回路１４１の出力が低下しても、ピークホールド（ＰＨ）回路１４２の出力は（３）の状態を保つ。
【００６８】
［４］  効果
実施形態に係わる半導体集積回路は、複数のメモリセルを有するメモリセルアレイと、メモリセルアレイへの信号接続を制御するＭＵＸおよびシフトレジスタと、メモリセルアレイの出力を処理する変換回路と、出力の最大値を保持するピークホールド回路とを具備する。そして、個々のメモリセルにＣＮＮの重みを記憶させ、メモリセルへのアクセスをＭＵＸとシフトレジスタで制御して畳み込み演算を行い、メモリセルアレイの出力の最大値をピークホールド回路で検出することでマックスプーリングの処理を行うようにした。
【００６９】
実施形態において、『（６×６）のサイズの行列で表される入力データに、（３×３）のフィルタでストライド１の畳み込み演算を行い、２×２の領域でストライド２のマックスプーリングを行う』ＣＮＮを、半導体集積回路に実装した。すなわち、３６×４のマトリクス構造のメモリセルアレイにフィルタの重みを抵抗値の逆数として記憶させた。また、データに応じた電圧をワード線に印加し、メモリセルで生じた電流の和をビット線から取り出し、電圧に変換してその最大値を保持するようにした。さらに、一次元に展開したデータをシフトレジスタ１２ａでシフトすることで、フィルタをスライドさせることと同じ演算を行えるようにした。さらに、ピークホールド回路１４２によりピーク値を保持することで、マックスプーリングと同じ結果を示す電圧値を得られるようにした。
【００７０】
図２０は、比較のため、既存の半導体集積回路を示す模式図である。既存の回路は、データ配列をシフトさせるシフトレジスタと、そのシフト量及びシフト方向を制御する制御回路１２ｃも備えておらず、よってピークホールド回路を設ける動機もない。このためマックスプーリング処理のためビット線の出力の最大値を選択する必要があった。また、ＣＮＮ用とマックスプーリング用の処理のためのメモリ空間を別に用意する必要もあり、その分のメモリ空間が消費されてしまう。
【００７１】
そもそも、畳み込み演算後の結果が４×４サイズの行列になることに対応して、１６本ものビット線が必要になる。このため図１８と比較して４倍のメモリ領域が消費されてしまう。大容量のデータおよび大サイズのフィルタを用いる現実のＣＮＮでは、メモリの消費量はさらに膨大なものとなる。さらに、フィルタのチャネル数が増えれば、その数に応じてメモリの消費量はさらに倍増する。
【００７２】
これに対して実施形態では、メモリセルアレイに入力されるデータを時系列的にシフトすることで、メモリ容量を格段に削減することができる。また、積和演算の結果が電流の加算値として時系列で得られるので、電圧に変換して最大値を保持するだけでマックスプーリングを実装することができ、回路をさらにシンプルにすることができる。
【００７３】
したがって、この実施形態によれば、ニューラルネットワークを省メモリで実装可能な半導体集積回路を提供することが可能となる。また、メモリ空間を節約できることから、コスト削減を期待できる。さらに、メモリ空間を節約した分、リソースを他の演算に振り分けることができ、高速化を促すこともできる。
【００７４】
［５］  変形例
［５−１］  メモリセルのドライブ電圧に関する変形例
図２１は、セレクタとしてのダイオードＤｉ（図６）の、電圧‐電流特性の一例を示すグラフである。横軸が電圧、縦軸が電流（対数）である。図中、ＶSWは、セレクタがオンとなる電圧を示し、通常のメモリセルアレイでは、ＶSW以上の電圧領域でメモリセルをドライブする。
【００７５】
しかしながら、この変形例では敢えて、ＶSW以下の電圧領域でメモリセルをドライブすることが好ましい。その理由を次に説明する。  
つまり変形例では、各メモリセルで生じる電流の加算値を積和演算の結果として取り出すのであるから、特に出力側でのエネルギー負荷を抑えるために個々のメモリセルでの電流値をできるだけ低く抑えるのが好ましい。メモリセルの数が増えれば増えるほどその傾向は高まる。このような理由により変形例では、セレクタのオフ領域に相当する、ＶSW以下の電圧領域でメモリセルをドライブするようにする。
【００７６】
なお、電圧を下げることで、精度を保つことが難しくなることが予期される。しかしながらＣＮＮが適用される分野では、高い精度が要求されるアプリケーションはそれほど多くない。例えば画像処理や画像認識などの分野では、そのような傾向が強い。このような事情からも、メモリセルをセレクタのオフ領域でドライブし、セレクタからの出力が小電流になる領域で使うことのメリットは大きい。
【００７７】
［５−２］  メモリセルのドライブ電圧に関する変形例
図２２は、メモリセルアレイの他の例を示す斜視図であり、１層のビット線（ＢＬ［BL1，BL2，…］）と、該ビット線を上下から挟み込む２層のワード線（ＷＬ［WL1，WL2，…］,（ＷＬ′［WL′1，WL′2，…］））とを具備する構造のメモリセルアレイを示す。２層のワード線のうち一方を符号（＋）に対応させ、他方のワード線を符号（−）に対応させるといった応用が考えられる。このようにすることで、正負の値を持つデータをシンプルに取り扱うことができる。
【００７８】
なお、上記各実施形態では、ＣＮＮとして図１に示される構成を適用した。しかし、ＣＮＮは図１に示される構成に限定されるものではなく、全結合型の多層ニューラルネットワークを適用してもよい。また、層の総数、畳み込み層の数、プーリング層の数等もシステム要件に応じて自由に設計することができる。
【００７９】
また、上記各実施形態では、半導体記憶装置として、抵抗変化型記憶素子を用いたＲｅＲＡＭを例に挙げて説明した。しかし、上記各実施形態は、これに限定されるものではなく、ＲｅＲＡＭと同様の抵抗変化型のメモリ、例えばＭＲＡＭ（Magnetic Random Access Memory）、ＰＣＲＡＭ（Phase-Change Random Access Memory）などにも適用可能である。
【００８０】
このほか、メモリセルアレイの構成も図示したものに限らず、ワード線に対して垂直に配置されるビット線（いわゆるバーティカルビットライン）を有する構成のメモリセルアレイに対しても上記各実施形態を適用することが可能である。
【００８１】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【００８２】
１…識別システム、２…センサ、３…学習装置、４…識別器、５…アプリケーション部、６…入力層、７…隠れ層、７ａ…隠れ層、７ｂ…隠れ層、８…出力層、１０…半導体集積回路、１１…メモリセルアレイ、１２…入力部、１２ａ…シフトレジスタ、１２ｃ…制御回路、１４…出力部、１６…入出力回路、１７…アドレスレジスタ、１８…コントローラ、１９…電圧発生回路、２０…双方向データバス、３０…メモリ素子、１２１…アクセス制御部、１２２…ドライバ、１４１…変換回路、１４２…ピークホールド回路、ＢＬ…ビット線、ＷＬ…ワード線。
【図１】
2020035502.tif 000003
【図２】
2020035502.tif 000004
【図３】
2020035502.tif 000005
【図４】
2020035502.tif 000006
【図５】
2020035502.tif 000007
【図６】
2020035502.tif 000008
【図７】
2020035502.tif 000009
【図８】
2020035502.tif 000010
【図９】
2020035502.tif 000011
【図１０】
2020035502.tif 000012
【図１１】
2020035502.tif 000013
【図１２】
2020035502.tif 000014
【図１３】
2020035502.tif 000015
【図１４】
2020035502.tif 000016
【図１５】
2020035502.tif 000017
【図１６】
2020035502.tif 000018
【図１７】
2020035502.tif 000019
【図１８】
2020035502.tif 000020
【図１９】
2020035502.tif 000021
【図２０】
2020035502.tif 000022
【図２１】
2020035502.tif 000023
【図２２】
2020035502.tif 000024