(57)【要約】      （修正有）【課題】ニューラルネットワークに用いられるメモリシステム、メモリコントローラ及び半導体記憶装置を提供する。【解決手段】メモリシステム４００は、ＮＡＮＤ型フラッシュメモリ１００とメモリコントローラ２００を備える。メモリコントローラは、識別対象データ（入力データ）を含む積和演算コマンドセットをＮＡＮＤ型フラッシュメモリに送信する。ＮＡＮＤ型フラッシュメモリは、積和演算コマンドに基づいてメモリセルアレイから重み係数（重みデータ）を読み出し、入力データと重みデータとから積和演算を行い、積和演算結果をメモリコントローラに送信する。【選択図】図４
2020205003.tif 000002
【特許請求の範囲】
【請求項１】
第１データを含む第１コマンドセットを送信する制御部と、
前記制御部から、前記第１コマンドセットを受信すると、前記第１コマンドセットに基づく第２データを前記制御部に送信する半導体記憶装置と、
を備えるメモリシステム。
【請求項２】
前記第１コマンドセットは、重みデータの第１アドレスを含み、
前記半導体記憶装置は、前記第１コマンドセットを受信すると前記第１アドレスに基づき前記重みデータを読み出し、前記第１データと、前記重みデータと、に対して第１演算を行う
請求項１記載のメモリシステム。
【請求項３】
前記第２データは、前記第１演算の結果である
請求項２記載のメモリシステム。
【請求項４】
第１データを含む第１コマンドセットを半導体記憶装置に送信することにより、前記第１コマンドセットに基づく第２データを受信する入出力インターフェース
を備えるメモリコントローラ。
【請求項５】
前記第１コマンドセットは、重みデータの第１アドレスを含み、
前記半導体記憶装置は、前記第１コマンドセットを受信すると前記第１アドレスに基づき前記重みデータを読み出し、前記第１データと、前記重みデータと、に対して第１演算を行う
請求項４記載のメモリコントローラ。
【請求項６】
前記第２データは、前記第１演算の結果である
請求項５記載のメモリコントローラ。
【請求項７】
制御部から第１データを含む第１コマンドセットを受信することにより、前記第１コマンドセットに基づく第２データを前記制御部に送信する入出力インターフェース
を備える半導体記憶装置。
【請求項８】
前記第１コマンドセットは、重みデータの第１アドレスを含み、
前記半導体記憶装置は、前記第１コマンドセットを受信すると前記第１アドレスに基づき前記重みデータを読み出し、前記第１データと、前記重みデータと、に対して第１演算を行う
請求項７記載の半導体記憶装置。
【請求項９】
前記第２データは、前記第１演算の結果である
請求項８記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、ニューラルネットワークに用いられるメモリシステム、メモリコントローラ、及び半導体記憶装置に関する。
【背景技術】
【０００２】
人工知能（Artificial Intelligence：ＡＩ）の開発が進んでいる。ＡＩの技術の一つとして、ニューラルネットワークが考えられている。ニューラルネットワークは、脳のニューロンおよびシナプスを模して考えられたモデルであり、少なくとも学習および識別の２段階の処理を含む。学習段階では、多数の入力からその特徴を学習し、識別処理のためのニューラルネットワークを構築する。識別段階では、構築されたニューラルネットワークを用いて新たな入力が何であるかを識別する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２３０７７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ニューラルネットワークに用いられるメモリシステム、メモリコントローラ、及び半導体記憶装置を提供することにある。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、第１データを含む第１コマンドセットを送信する制御部と、前記制御部から、前記第１コマンドセットを受信することにより、前記第１コマンドセットに基づく第２データを前記制御部に送信する半導体記憶装置と、を備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、識別システムにおける学習段階及び識別段階を示す概念図である。
【図２】図２は、第１実施形態に係る識別システムのブロック図である。
【図３】図３は、第１実施形態に係る識別装置の概念を示す図である。
【図４】図４は、第１実施形態に係る半導体記憶装置を備えるメモリシステムのブロック図である。
【図５】図５は、第１実施形態に係る半導体記憶装置のブロック図である。
【図６】図６は、第１実施形態に係るメモリセルアレイを示す図である。
【図７】図７は、第１実施形態に係るメモリセルの閾値分布を示す図である。
【図８】図８は、第１実施形態に係る半導体記憶装置の備えるセンスアンプ及びデータレジスタのブロック図である。
【図９】図９は、第１実施形態に係るセンスアンプを示す回路図である。
【図１０】図１０は、第１実施形態に係るメモリシステムの動作を示すフローチャートである。
【図１１】図１１は、識別段階におけるメモリシステムの動作におけるコマンドセットや、波形図を示す図である。
【図１２】図１２は、リード動作に係るコマンドシーケンスを示す図である。
【図１３】図１３は、ライト動作に係るコマンドシーケンスを示す図である。
【図１４】図１４は、ラッチ回路及びビットカウンタに記憶される具体的なデータを示す図である。
【図１５】図１５は、ラッチ回路に記憶されるデータの種類を示す図である。
【図１６】図１６は、第２実施形態に係る半導体記憶装置のブロック図である。
【図１７】図１７は、第２実施形態に係わるソース線制御回路の一例を示す回路図である。
【図１８】図１８は、通常の読み出し動作の一例を示す図である。
【図１９】図１９は、セル電流のばらつきについて説明するための図である。
【図２０】図２０は、第２実施形態における読み出し動作の一例を説明するための図である。
【図２１】図２１は、第２実施形態におけるワード線ＷＬ及びビット線ＢＬの動作イメージを示す図である。
【図２２】図２２は、セル電流のばらつきによる影響が解消されることを説明するための図である。
【図２３】図２３は、図１０の変形例に係るメモリシステムの動作を示すフローチャートである。
【図２４】図２４は、図２３の続きを示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置等によって、技術思想が特定されるものではない。各機能ブロックは、ハードウェア及びソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。各機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。なお、以下の説明において、同一の機能及び構成を有する要素については同一符号を付し、重複説明は必要な場合にのみ行う。
【０００８】
＜１＞  第１実施形態
＜１−１＞  構成
＜１−１−１＞  識別システムの概要
本実施形態では、ニューラルネットワークを利用した識別システム（装置）について説明する。識別システムは、学習段階において、識別対象データ（入力データ）の内容を識別するためのパラメータを学習し、識別段階において、学習結果に基づいて、識別対象データを識別する。識別対象データとは、識別させる対象となるデータであり、例えば、画像データ、音声データ、テキストデータなどである。以下では、一例として、識別対象データが画像データであり、画像データを識別できるニューラルネットワークを用いる場合を説明する。
【０００９】
図１に示すように、本実施形態に係る識別システムでは、学習段階において、学習させるための複数のデータ（データセット）が識別システムの一部である識別装置に入力される。識別装置はデータセットに基づいてニューラルネットワーク（学習済みモデル）を構築する。
【００１０】
より、具体的には、識別装置は、識別対象データを分類するためのニューラルネットワークを構築する。識別装置は、ニューラルネットワークを構築する際、入力データとラベルの評価とを用いる。ラベルの評価には、データの内容がラベルに合致することを示す「正評価」、及び、データの内容がラベルに合致しないことを示す「負評価」を含む。正評価又は負評価は、「０」「１」などのスコア（正解スコア、または識別スコア）に関連付けられており、これらのスコアは正解値（Ground  Truth）ともいう。なお、「スコア」は数値であり、ニューラルネットワークでやり取りされる信号そのものを示す。識別装置は、入力されたデータセットを演算し、演算結果である識別スコア（推論結果とも記載する）が、予め用意されている正解スコアに近づくように、演算時のパラメータを調整する。また、「識別スコア」とは、入力されたデータセットと、入力されたデータセットに関連づけされたラベルとの合致の度合いを示す。「正解スコア」とは、入力されたデータセットに関連付けされたラベルの評価を示す。
【００１１】
そして、ニューラルネットワークが構築されると、識別システムは、識別段階として、このニューラルネットワークを用いて、任意のデータ（入力されたデータセット）が何であるかを識別できる（識別結果の出力）。
【００１２】
＜１−１−２＞  識別システムの構成
続いて、図２を用いて、本実施形態に係る識別システムについて説明する。図２は、識別システムのハードウェア構成を示すブロック図である。
【００１３】
図２に示すように、識別システム１は、入出力インターフェース（Ｉ／Ｆ）２、制御部（ＣＰＵ：Central  Processing  Unit）３、メモリ４、及び識別装置５を含む。入出力インターフェース２、制御部３、メモリ４、及び識別装置５はそれぞれコントローラバスに接続される。
【００１４】
入出力インターフェース２は、例えばデータセットが入力されたり、識別結果を出力したりする入出力制御回路(装置)である。入出力インターフェース２は、ＵＦＳ（Universal Flash Storage）規格に準拠したＵＦＳインターフェースであっても良いし、ＳＡＳ（Serial Attached SCSI）規格に準拠したＳＡＳインターフェースであっても良いし、その他の規格に準拠したインターフェースであっても良いし、通信ケーブルそのものでも良い。
【００１５】
制御部３は、識別システム１の全体を制御する。
【００１６】
メモリ４は、例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）を含む。
【００１７】
識別装置５は、学習段階において、例えばデータセットから、特徴を学習し、ニューラルネットワークを構築する。構築されたニューラルネットワークは、識別装置５における各演算部で用いられる重み係数（単に重みと記載しても良い）として表される。すなわち、識別装置５は、例えば、ある画像「Ｘ」が描かれた画像に対応する入力データが入力されたときに、入力データが画像「Ｘ」であることを出力するようなニューラルネットワークを構築する。識別装置５は、多くの入力データを受信することで、ニューラルネットワークの精度を向上できる。
【００１８】
識別装置５は、識別段階において、ニューラルネットワークにおける重み係数を取得する。ニューラルネットワークがアップデートされた場合、識別装置５は、新たなニューラルネットワークの重み係数を取得することで、識別の精度を向上させる。重み係数を取得した識別装置５は、識別対象の入力データを受け取る。そして、識別装置５は、重み係数を用いたニューラルネットワークに入力データを入力して、入力データを識別する。
【００１９】
識別システム１の各機能は、制御部３が、メモリ４などのハードウェア上に所定のソフトウェアを読み込ませ、制御部３の制御の元でメモリ４におけるデータの読み出し及び書き込みを行うことで実現される。
【００２０】
＜１−１−３＞  識別装置
＜１−１−３−１＞  識別装置の概念
ニューラルネットワークとは、人間の脳をモデル化したもので、一つ一つがニューロンと呼ばれる神経細胞を模したモデルの集まりから成り立っている。
【００２１】
ニューロンは、入力層、中間層、出力層のそれぞれを備える。
【００２２】
入力層のニューロンから出力された情報は、中間層のニューロンへの入力となり、中間層のニューロンから出力された情報は、出力層のニューロンへの入力となる。
【００２３】
ニューロンへの入力は、入力データに重みをかけ合わせた値にバイアスを足した値となる。この合計値に対して、特定の関数を経由することで、最終的な出力値を決定する。その出力値を決定する関数が活性化関数となる。活性化関数の例としては、シグモイド関数、ソフトマックス関数、恒等関数、ＲｅＬＵ（Rectified Linear Unit）等が挙げられる。
【００２４】
次に、図３を用いて、本実施形態に係る識別システムの識別装置５の概念について説明する。図３は、本実施形態に係る識別システムの識別装置５の概念を示すブロック図である。ここでは、識別段階における識別装置５の概念について説明する。
【００２５】
図３に示すように、識別装置５は、入力層５１と、隠れ層５２と、出力層５３と、を備えている。
【００２６】
入力層５１は、入力用のノードが並列に配置される。入力用のノードは、入力データＸを取得して、隠れ層５２に含まれるノードへ出力（分配）する。本実施形態のノードとは、脳のニューロンを模したモデルである。また、ノードをニューロンと記載しても良い。
【００２７】
図３では、簡単のため入力層５１が並列の４つのノードを含む場合を示している。図３では、４つのノードにそれぞれデータＸ１〜Ｘ４が記憶される。
【００２８】
隠れ層５２は、処理用のノードが並列に配置される。処理用のノードのそれぞれは、重み係数を用いて処理データを演算（積和演算）し、演算結果（演算データ）Ｙを後続する層のノード（１つ、または複数のノード）に出力する。
【００２９】
図３では、簡単のため隠れ層５２が並列の３つのノードを含む場合を示している。積和演算の結果は隠れ層のノードにデータＹ１〜Ｙ３が記憶される。このデータＹ１〜Ｙ３が、次の積和演算の入力データとなる。また、入力層５１から隠れ層５２に至る複数のエッジに、それぞれ重みＷ１１〜Ｗ３４が対応付けられる。
【００３０】
以下に、データＸとデータＹと重みＷとの関係について具体的に説明する。データＹ１が記憶されるノードには、重みＷ１１及びデータＸ１の積と、重みＷ１２及びデータＸ２の積と、重みＷ１３及びデータＸ３の積と、重みＷ１４及びデータＸ４の積と、の和（ΣＷ１ｉ＊Ｘｉ）が記憶される。同様に、データＹ２が記憶されるノードには、重みＷ２１及びデータＸ１の積と、重みＷ２２及びデータＸ２の積と、重みＷ２３及びデータＸ３の積と、重みＷ２４及びデータＸ４の積と、の和（ΣＷ２ｉ＊Ｘｉ）が記憶される。また、データＹ３が記憶されるノードには、重みＷ３１及びデータＸ１の積と、重みＷ３２及びデータＸ２の積と、重みＷ３３及びデータＸ３の積と、重みＷ３４及びデータＸ４の積と、の和（ΣＷ３ｉ＊Ｘｉ）が記憶される。以上のように、Ｙｋ＝ΣＷｋｉ＊Ｘｉという関係になる。
【００３１】
出力層５３は、ラベルの数と同じ数の出力用のノードが並列に配置される。このラベルは、識別対象データに関連付けられている。出力層５３は、隠れ層５２から受信したデータに基づき、出力用のノード毎に、活性化関数の演算を行い、識別スコアを出力する。つまり、識別装置５では、ラベルごとに識別スコアを出力する。例えば、識別装置５が「車」、「木」、「人」の３つの画像を識別する場合、出力層５３は、「車」、「木」、「人」の３つのラベルに合わせて３つの出力用のニューロンが配置されている。出力用のニューロンは、「車」のラベルに対応する識別スコア、「木」のラベルに対応する識別スコア、「人」のラベルに対応する識別スコアを出力する。図３では、簡単のため出力層５３が並列の２つのノードを含む場合を示している。活性化関数の演算の結果として、出力層５３のノードからデータＺ１、Ｚ２が得られる。
【００３２】
なお、上述した入力層５１、隠れ層５２、及び出力層５３に含まれるノードの数は適宜変更可能である。特に、隠れ層５２において、１段の処理ノード群しか図示していないが、２段以上の処理ノードを備えても良い。隠れ層５２が複数段の処理ノード群を備えることを「ディープラーニング」と記載する。
【００３３】
＜１−１−３−２＞  識別装置の具体的な構成
＜１−１−３−２−１＞メモリシステム
ここでは、識別装置５を実現するための具体的なハードウェア構成として、メモリシステム４００を例に挙げて説明する。
【００３４】
図４に示すように、メモリシステム４００は、ＮＡＮＤ型フラッシュメモリ１００及びメモリコントローラ２００を備える。メモリコントローラ２００及びＮＡＮＤ型フラッシュメモリ１００は、例えばそれらの組み合わせにより一つの半導体記憶装置を構成しても良く、その例としてはＳＤ（登録商標）カードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。
【００３５】
ＮＡＮＤ型フラッシュメモリ１００は、複数のメモリセルトランジスタを備え、データを不揮発に記憶する。ＮＡＮＤ型フラッシュメモリ１００は、ＮＡＮＤバスによってメモリコントローラ２００と接続され、メモリコントローラ２００からのホストコマンド（命令）に基づいて動作する。より具体的には、ＮＡＮＤ型フラッシュメモリ１００は、メモリコントローラ２００と、例えば８ビットの信号ＤＱ０〜ＤＱ７（以下、ＤＱ０〜ＤＱ７を限定しない場合は、単に信号ＤＱ、または信号ＤＱ［７：０］と表記する）の送受信を行う。信号ＤＱ０〜ＤＱ７には、例えばデータ、アドレス、及びコマンドが含まれる。また、ＮＡＮＤ型フラッシュメモリ１００は、メモリコントローラ２００から、例えばチップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、及びリードイネーブル信号ＲＥｎを受信する。そして、ＮＡＮＤ型フラッシュメモリ１００はメモリコントローラ２００に、レディ／ビジー信号Ｒ／Ｂｎを送信する。
【００３６】
チップイネーブル信号ＣＥｎは、ＮＡＮＤ型フラッシュメモリ１００をイネーブルにするための信号であり、例えばＬｏｗ（“Ｌ”）レベルでアサートされる。コマンドラッチイネーブル信号ＣＬＥは、信号ＤＱがコマンドであることを示す信号であり、例えばＨｉｇｈ（“Ｈ”）レベルでアサートされる。アドレスラッチイネーブル信号ＡＬＥは、信号ＤＱがアドレスであることを示す信号であり、例えば“Ｈ”レベルでアサートされる。ライトイネーブル信号ＷＥｎは、受信した信号をＮＡＮＤ型フラッシュメモリ１００内へ取り込むための信号であり、メモリコントローラ２００よりコマンド、アドレス、及びデータ等を受信する度に、例えば“Ｌ”レベルでアサートされる。よって、ＷＥｎがトグルされる度に、信号ＤＱがＮＡＮＤ型フラッシュメモリ１００に取り込まれる。リードイネーブル信号ＲＥｎは、メモリコントローラ２００が、ＮＡＮＤ型フラッシュメモリ１００からデータを読み出すための信号である。リードイネーブル信号ＲＥｎは、例えば“Ｌ”レベルでアサートされる。レディ／ビジー信号Ｒ／Ｂｎは、ＮＡＮＤ型フラッシュメモリ１００がビジー状態であるかレディ状態であるか（メモリコントローラ２００からコマンドを受信不可能な状態か可能な状態か）を示す信号であり、例えばＮＡＮＤ型フラッシュメモリ１００がビジー状態の際に“Ｌ”レベルとされる。
【００３７】
メモリコントローラ２００は、例えば制御部３からのホストコマンドに応答して、ＮＡＮＤ型フラッシュメモリ１００に対してデータの読み出し、書き込み、消去等を命令する。また、メモリコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００のメモリ空間を管理する。
【００３８】
メモリコントローラ２００は、ホストインターフェース回路（ホストＩ／Ｆ）２１０、内蔵メモリ（ＲＡＭ：Random Access Memory）２２０、プロセッサ（ＣＰＵ）２３０、バッファメモリ２４０、ＮＡＮＤインターフェース回路（ＮＡＮＤ  Ｉ／Ｆ）２５０、及びエラー訂正回路（ＥＣＣ）２６０を含む。
【００３９】
ホストインターフェース回路２１０は、コントローラバスを介して外部（制御部３等）と接続され、外部との通信を司る。ホストインターフェース回路２１０は、プロセッサ２３０及びバッファメモリ２４０に、外部から受信したホストコマンド及びデータを転送する。また、ホストインターフェース回路２１０は、プロセッサ２３０の命令に応答して、バッファメモリ２４０内のデータを外部へ転送する。
【００４０】
ＮＡＮＤインターフェース回路２５０は、ＮＡＮＤバスを介してＮＡＮＤ型フラッシュメモリ１００と接続され、ＮＡＮＤ型フラッシュメモリ１００との通信を司る。ＮＡＮＤインターフェース回路２５０は、ＮＡＮＤ型フラッシュメモリ１００にプロセッサ２３０から受信した命令を転送する。また、ＮＡＮＤインターフェース回路２５０は、書き込み時には、ＮＡＮＤ型フラッシュメモリ１００に、バッファメモリ２４０内の書き込みデータを転送する。更に、ＮＡＮＤインターフェース回路２５０は、読み出し時には、バッファメモリ２４０に、ＮＡＮＤ型フラッシュメモリ１００から読み出されたデータを転送する。
【００４１】
プロセッサ２３０は、メモリコントローラ２００全体の動作を制御する。また、プロセッサ２３０は、外部のホストコマンドに応じて、各種コマンドを発行し、ＮＡＮＤ型フラッシュメモリ１００に送信する。例えば、プロセッサ２３０は、外部から書き込みに関するホストコマンドを受信した際には、それに応答して、ＮＡＮＤ型フラッシュメモリ１００に書き込みに関するＮＡＮＤコマンドを送信する。読み出し及び消去の際も同様である。また、プロセッサ２３０は、ウェアレベリング等、ＮＡＮＤ型フラッシュメモリ１００を管理するための様々な処理を実行する。更に、プロセッサ２３０は、各種の演算を実行する。例えば、プロセッサ２３０は、データの暗号化処理やランダマイズ処理等を実行する。
【００４２】
エラー訂正回路２６０は、データの誤り訂正処理を実行する。
【００４３】
内蔵メモリ２２０は、例えばＤＲＡＭ（Dynamic Random Access Memory）や、ＳＲＡＭ（Static RAM）等の半導体メモリであり、プロセッサ２３０の作業領域として使用される。そして内蔵メモリ２２０は、ＮＡＮＤ型フラッシュメモリ１００を管理するためのファームウェアや、各種の管理テーブル等を保持する。
【００４４】
なお、ここでは、識別装置５のハードウェア構成として、メモリシステム４００を例に挙げているが、これに限らない。他の例としては、制御部３のハードウェア構成として、メモリコントローラ２００を採用し、識別装置５のハードウェア構成としてＮＡＮＤ型フラッシュメモリ１００を採用しても良い。
【００４５】
＜１−１−３−２−２＞ＮＡＮＤ型フラッシュメモリ１００
次に、ＮＡＮＤ型フラッシュメモリ１００の構成について、図５を用いて説明する。なお、図５では各ブロック間の接続の一部を矢印線で示しているが、ブロック間の接続はこれに限定されない。
【００４６】
図５に示すように、ＮＡＮＤ型フラッシュメモリ１００は、入出力回路１５、ロジック制御回路１６ロジック制御回路１６、ステータスレジスタ１８、アドレスレジスタ１９、コマンドレジスタ２０、シーケンサ１７、レディ／ビジー回路２１、電圧発生回路２２、メモリセルアレイ１０、ロウデコーダ１１、センスアンプモジュール１２、データレジスタ／ビットカウンタ１３、及びカラムデコーダ１４を含む。
【００４７】
入出力回路１５は、メモリコントローラ２００との信号ＤＱの入出力を制御する。より具体的には、入出力回路１５は、入力回路と出力回路を備える。入力回路は、メモリコントローラ２００から受信したデータＤＡＴ（書き込みデータＷＤ）を、データレジスタ／ビットカウンタ１３に送信し、アドレスＡＤＤをアドレスレジスタ１９に送信し、コマンドＣＭＤをコマンドレジスタ２０に送信する。出力回路は、ステータスレジスタ１８から受信したステータス情報ＳＴＳ、データレジスタ／ビットカウンタ１３から受信したデータＤＡＴ（読み出しデータＲＤ）、及びアドレスレジスタ１９から受信したアドレスＡＤＤをメモリコントローラ２００に送信する。
【００４８】
ロジック制御回路１６は、メモリコントローラ２００から例えばチップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、及びリードイネーブル信号ＲＥｎを受信する。そしてロジック制御回路１６は、受信した信号に応じて、入出力回路１５及びシーケンサ１７を制御する。
【００４９】
ステータスレジスタ１８は、例えばデータの書き込み、読み出し、及び消去動作におけるステータス情報ＳＴＳを一時的に保持し、メモリコントローラ２００に動作が正常に終了したか否かを通知する。
【００５０】
アドレスレジスタ１９は、入出力回路１５を介してメモリコントローラ２００から受信したアドレスＡＤＤを一時的に保持する。そしてアドレスレジスタ１９は、ロウアドレスＲＡをロウデコーダ１１へ転送し、カラムアドレスＣＡをカラムデコーダ１４に転送する。
【００５１】
コマンドレジスタ２０は、入出力回路１５を介してメモリコントローラ２００から受信したコマンドＣＭＤを一時的に保存し、シーケンサ１７に転送する。
【００５２】
シーケンサ１７は、ＮＡＮＤ型フラッシュメモリ１００全体の動作を制御する。より具体的には、シーケンサ１７は、コマンドレジスタ２０が保持するコマンドＣＭＤに応じて、例えばステータスレジスタ１８、レディ／ビジー回路２１、電圧発生回路２２、ロウデコーダ１１、センスアンプモジュール１２、データレジスタ／ビットカウンタ１３、及びカラムデコーダ１４等を制御し、書き込み動作、読み出し動作、及び消去動作等を実行する。また、シーケンサ１７は、レジスタ（図示せず）を含む。
【００５３】
レディ／ビジー回路２１は、シーケンサ１７の動作状況に応じて、レディ／ビジー信号Ｒ／Ｂｎをメモリコントローラ２００に送信する。
【００５４】
電圧発生回路２２は、シーケンサ１７の制御に応じて、書き込み動作、読み出し動作、及び消去動作に必要な電圧を発生させ、この発生した電圧を例えばメモリセルアレイ１０、ロウデコーダ１１、及びセンスアンプモジュール１２等に供給する。ロウデコーダ１１及びセンスアンプモジュール１２は、電圧発生回路２２より供給された電圧をメモリセルアレイ１０内のメモリセルトランジスタに印加する。
【００５５】
メモリセルアレイ１０は、ブロックＢＬＫ０〜ＢＬＫｎ（ｎは０以上の整数）を含んでいる。ブロックＢＬＫは、ビット線及びワード線に関連付けられた複数の不揮発性メモリセルの集合であり、例えばデータの消去単位となる。ＮＡＮＤ型フラッシュメモリ１００は、例えばＭＬＣ（Multi-Level Cell）方式等を適用することにより、各メモリセルに２ビット以上のデータを記憶させてもよい。
【００５６】
ロウデコーダ１１は、ロウアドレスＲＡをデコードする。ロウデコーダ１１は、デコード結果に基づき、ブロックＢＬＫのいずれかを選択し、更にいずれかのメモリセルユニットを選択する。そして、ロウデコーダ１１は、必要な電圧をブロックＢＬＫに印加する。
【００５７】
センスアンプモジュール１２は、読み出し動作のときには、メモリセルアレイ１０から読み出されたデータをセンスする。そして、センスアンプモジュール１２は、読み出しデータＲＤをデータレジスタ／ビットカウンタ１３に送信する。また、センスアンプモジュール１２は、書き込み動作のときには、書き込みデータＷＤをメモリセルアレイ１０に送信する。
【００５８】
データレジスタ／ビットカウンタ１３は、複数のラッチ回路を備える。ラッチ回路は、書き込みデータＷＤ及び読み出しデータＲＤを保持する。例えば書き込み動作において、データレジスタ／ビットカウンタ１３は、入出力回路１５から受信した書き込みデータＷＤを一時的に保持し、センスアンプモジュール１２に送信する。また例えば、読み出し動作において、データレジスタ／ビットカウンタ１３は、センスアンプモジュール１２から受信した読み出しデータＲＤを一時的に保持し、入出力回路１５に送信する。
【００５９】
カラムデコーダ１４は、例えば書き込み動作、読み出し動作、及び消去動作の際、カラムアドレスＣＡをデコードし、デコード結果に応じてデータレジスタ／ビットカウンタ１３内のラッチ回路を選択する。
【００６０】
＜１−１−３−２−３＞メモリセルアレイ
図６は、第１実施形態におけるＮＡＮＤ型フラッシュメモリ１００に含まれるメモリセルアレイ１０の構成例を示す回路図であり、メモリセルアレイ１０内の１つのブロックＢＬＫについての詳細な回路構成を示している。図６に示すようにブロックＢＬＫは、例えば４つのストリングユニットＳＵ０〜ＳＵ３を含んでいる。
【００６１】
各ストリングユニットＳＵは、ビット線ＢＬ０〜ＢＬｍ（ｍは０以上の整数）にそれぞれ関連付けられた複数のＮＡＮＤストリングＮＳを含んでいる。各ＮＡＮＤストリングＮＳは、例えばメモリセルトランジスタＭＴ０〜ＭＴ７並びに選択トランジスタＳＴ１及びＳＴ２を含んでいる。
【００６２】
メモリセルトランジスタＭＴは、制御ゲート及び電荷蓄積層を備え、データを不揮発に記憶する。各ＮＡＮＤストリングＮＳに含まれたメモリセルトランジスタＭＴ０〜ＭＴ７は、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。同一のブロックＢＬＫに含まれた各ＮＡＮＤストリングＮＳのメモリセルトランジスタＭＴ０の制御ゲート（複数の制御ゲート）は、ワード線ＷＬ０に共通に接続されている。同様に、同一のブロックＢＬＫに含まれた複数のＮＡＮＤストリングＮＳのメモリセルトランジスタＭＴ１〜ＭＴ７の制御ゲートは、それぞれワード線ＷＬ１〜ＷＬ７に共通に接続されている。尚、以下の説明では、それぞれのストリングユニットＳＵ内で共通のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴをセルユニット（ＣＵ）とする。そして、セルユニットが記憶する１ビットデータの集合のことを“ページ”と称する。従って、１つのメモリセルトランジスタＭＴに２ビットデータが記憶される場合、セルユニットは、２ページ分のデータを記憶する。
【００６３】
選択トランジスタＳＴ１及びＳＴ２は、各種動作時におけるストリングユニットＳＵの選択に使用される。同一のカラムアドレスに対応するＮＡＮＤストリングＮＳに含まれた選択トランジスタＳＴ１のドレインは、対応するビット線ＢＬに共通接続されている。ストリングユニットＳＵ０に含まれる複数の選択トランジスタＳＴ１のゲートは、セレクトゲート線ＳＧＤ０に共通に接続されている。同様に、ストリングユニットＳＵ１〜ＳＵ３に含まれる複数の選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ１〜ＳＧＤ３に共通に接続されている。同一のブロックＢＬＫにおいて、複数の選択トランジスタＳＴ２のソースは一つのソース線ＳＬに共通接続され、複数の選択トランジスタＳＴ２のゲートは一つのセレクトゲート線ＳＧＳに共通接続されている。
【００６４】
以上で説明したメモリセルアレイ１０の回路構成において、ワード線ＷＬ０〜ＷＬ７は、ブロックＢＬＫ毎に設けられている。ビット線ＢＬ０〜ＢＬｍは、複数のブロックＢＬＫ間で共有されている。ソース線ＳＬは、複数のブロックＢＬＫ間で共有されている。尚、以上で説明した各ブロックＢＬＫが含むストリングユニットＳＵの個数と、各ＮＡＮＤストリングＮＳが含むメモリセルトランジスタＭＴ並びに選択トランジスタＳＴ１及びＳＴ２の個数とはあくまで一例であり、任意の個数に設計してもよい。ワード線ＷＬ並びにセレクトゲート線ＳＧＤ及びＳＧＳの本数は、メモリセルトランジスタＭＴ並びに選択トランジスタＳＴ１及びＳＴ２の個数に基づいて変更される。
【００６５】
メモリセルアレイ１０の複数のメモリセルトランジスタＭＴの閾値電圧によって形成される閾値電圧分布は、例えば図７に示すものとなる。図７は、１つのメモリセルトランジスタＭＴが２ビットデータを記憶する場合のメモリセルトランジスタＭＴの閾値電圧分布及び読み出し電圧を示し、縦軸がメモリセルトランジスタＭＴの個数に対応し、横軸がメモリセルトランジスタＭＴの閾値電圧Ｖｔｈに対応している。図７に示すように複数のメモリセルトランジスタＭＴは、記憶するデータのビット数に基づいて複数の閾値電圧分布を形成する。以下に、書き込み方式の一例として、１つのメモリセルトランジスタＭＴに２ビットデータを記憶させるＭＬＣ（Multi-Level Cell）方式について説明する。
【００６６】
図７に示すように、ＭＬＣ方式の場合、複数のメモリセルトランジスタＭＴは４つの閾値電圧分布を形成する。この４個の閾値電圧分布のことを、閾値電圧の低いものから順に“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステートと称する。ＭＬＣ方式では、例えば“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、及び“Ｃ”ステートにそれぞれ“１１（アッパー／ロワー）”データ、“１０”データ、“００”データ、及び“０１”データが割り当てられる。
【００６７】
そして、以上で説明した閾値電圧分布において、隣り合う閾値電圧分布の間にそれぞれ読み出し電圧が設定される。例えば、読み出し電圧ＡＲは、“Ｅｒ”ステートにおける最高の閾値電圧と“Ａ”ステートにおける最低の閾値電圧との間に設定され、メモリセルトランジスタＭＴの閾値電圧が“Ｅｒ”ステートの閾値電圧分布に含まれるのか“Ａ”ステート以上の閾値電圧分布に含まれるのかを判定する動作に使用される。メモリセルトランジスタＭＴに読み出し電圧ＡＲが印加されると、“Ｅｒ”ステートに対応するメモリセルトランジスタがオン状態になり、“Ａ”ステート、“Ｂ”ステート、及び“Ｃ”ステート に対応するメモリセルトランジスタがオフ状態になる。その他の読み出し電圧も同様に設定される。読み出し電圧ＢＲは、“Ａ”ステートの閾値電圧分布と“Ｂ”ステートの閾値電圧分布との間に設定され、読み出し電圧ＣＲは、“Ｂ”ステートの閾値電圧分布と“Ｃ”ステートの閾値電圧分布との間に設定される。最も閾値電圧が高い閾値電圧分布における最高の閾値電圧よりも高い電圧に、読み出しパス電圧ＶＲＥＡＤが設定される。つまり、読み出しパス電圧ＶＲＥＡＤがゲートに印加されたメモリセルトランジスタＭＴは、記憶するデータに依らずにオンする。
【００６８】
尚、以上で説明した１つのメモリセルトランジスタＭＴに記憶するデータのビット数と、メモリセルトランジスタＭＴの閾値電圧分布に対するデータの割り当てとはあくまで一例である。また、その他の様々なデータの割り当てが閾値電圧分布に対して適用されても良い。また、各読み出し電圧及び読み出しパス電圧は、各方式で同じ電圧値に設定されても良いし、異なる電圧値に設定されても良い。
【００６９】
尚、以上で説明したメモリセルアレイ１０の構成は、その他の構成であっても良い。その他のメモリセルアレイ１０の構成については、例えば“三次元積層不揮発性半導体メモリ”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号、“三次元積層不揮発性半導体メモリ”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置及びその製造方法”という２０１０年３月２５日に出願された米国特許出願１２／６７９，９９１号、“半導体メモリ及びその製造方法”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００７０】
＜１−１−３−２−４＞センスアンプモジュール１２およびデータレジスタ／ビットカウンタ１３
次に、センスアンプモジュール１２およびデータレジスタ／ビットカウンタ１３の構成について、図８を用いて説明する。
【００７１】
図８に示すように、センスアンプモジュール１２は、各ビット線ＢＬ０〜ＢＬｍに対応して設けられたセンスアンプＳＡ（０）〜ＳＡ（ｍ）を含む。
【００７２】
センスアンプＳＡは、読み出し動作時には対応するビット線ＢＬに読み出されたデータをセンスし、データが“０”データであるか“１”データであるかを判断する。また書き込み動作時には、書き込みデータＷＤに基づいてビット線ＢＬに電圧を印加する。
【００７３】
データレジスタ／ビットカウンタ１３は、データレジスタ１３Ａと、ビットカウンタ１３Ｂと、を備えている。
【００７４】
データレジスタ１３Ａは、センスアンプＳＡ毎にラッチ回路セット１３０を備えている。
【００７５】
ラッチ回路セット１３０は、複数のラッチ回路ＤＬ（０）〜（Ｘ）（Ｘ：は任意の自然数）と、ラッチ回路ＸＤＬと、演算回路ＯＰと、を含む。センスアンプＳＡと、ラッチ回路ＤＬ（０）〜（Ｘ）と、ラッチ回路ＸＤＬと、は互いにデータを送受信可能なように接続されている。
【００７６】
ラッチ回路ＤＬは、例えば、データを一時的に保持する。ラッチ回路ＸＤＬは、センスアンプＳＡから受信した読み出しデータＲＤ及び入出力回路１５から受信した書き込みデータＷＤを一時的に保持する。より具体的には、入出力回路１５が受信した書き込みデータＷＤは、ラッチ回路ＸＤＬを介して、ラッチ回路ＤＬ、またはセンスアンプＳＡのいずれかに転送される。また、センスアンプＳＡから受信した読み出しデータＲＤは、ラッチ回路ＸＤＬを介して入出力回路１５に転送される。
【００７７】
演算回路ＯＰは、ラッチ回路ＤＬ（０）〜（Ｘ）、及びラッチ回路ＸＤＬに記憶されているデータに基づいて演算（例えば積演算）を行う。
【００７８】
ビットカウンタ１３Ｂは、ラッチ回路セット１３０から出力される積演算結果を受信し、和演算を行う。
【００７９】
＜１−１−３−２−５＞センスアンプ
以上で説明した各センスアンプＳＡの詳細な回路構成は、例えば図９に示すものとなる。図９は、センスアンプモジュール１２内の１つのセンスアンプＳＡについての詳細な回路構成の一例を示している。
【００８０】
センスアンプＳＡは、例えば読み出し動作において、対応するビット線ＢＬに読み出されたデータをセンスして、読み出したデータが“０”であるか“１”であるかを判定する。図９に示すようにセンスアンプＳＡは、ＰＭＯＳトランジスタ３０、ＮＭＯＳトランジスタ３１〜３７、及びキャパシタ３８を含んでいる。
【００８１】
トランジスタ３０の一端は電源線に接続され、トランジスタ３０のゲートはノードＩＮＶに接続されている。トランジスタ３１の一端はトランジスタ３０の他端に接続され、トランジスタ３１の他端はノードＣＯＭに接続され、トランジスタ３１のゲートには制御信号ＢＬＸが入力される。トランジスタ３２の一端はノードＣＯＭに接続され、トランジスタ３２の他端は対応するビット線ＢＬに接続され、トランジスタ３２のゲートには制御信号ＢＬＣが入力される。トランジスタ３３の一端はノードＣＯＭに接続され、トランジスタ３３の他端はノードＳＲＣに接続され、トランジスタ３３のゲートはノードＩＮＶに接続されている。トランジスタ３４の一端はトランジスタ３０の他端に接続され、トランジスタ３４の他端はノードＳＥＮに接続され、トランジスタ３４のゲートには制御信号ＨＬＬが入力される。トランジスタ３５の一端はノードＳＥＮに接続され、トランジスタ３５の他端はノードＣＯＭに接続され、トランジスタ３５のゲートには制御信号ＸＸＬが入力される。トランジスタ３６の一端はクロックＣＬＫが入力され、トランジスタ３６のゲートはノードＳＥＮに接続されている。トランジスタ３７の一端はトランジスタ３６の他端に接続され、トランジスタ３７の他端はバスＬＢＵＳに接続され、トランジスタ３７のゲートには制御信号ＳＴＢが入力される。キャパシタ３８の一端はノードＳＥＮに接続され、キャパシタ３８の他端にはクロックＣＬＫが入力される。
【００８２】
また、図９では、ラッチ回路ＤＬの一例を示す。
【００８３】
図９に示すようにラッチ回路ＤＬは、インバータ４０及び４１、並びにＮＭＯＳトランジスタ４２及び４３を備えている。
【００８４】
インバータ４０は、入力端子がノードＬＡＴに接続され、出力端子がノードＩＮＶに接続されている。インバータ４１は、入力端子がノードＩＮＶに接続され、出力端子がノードＬＡＴに接続されている。トランジスタ４２は、一端がノードＩＮＶに接続され、他端がバスＬＢＵＳに接続され、ゲートに制御信号ＳＴＩが入力される。トランジスタ４３は、一端がノードＬＡＴに接続され、他端がバスＬＢＵＳに接続され、ゲートに制御信号ＳＴＬが入力される。他のラッチ回路ＤＬの回路構成も同様のため、説明を省略する。
【００８５】
尚、実施形態におけるデータレジスタ／ビットカウンタ１３の構成は、これに限定されない。例えば、データレジスタ／ビットカウンタ１３が備えるラッチ回路ＤＬの個数は、任意の個数に設計することが可能である。この場合にラッチ回路の個数は、例えば１つのメモリセルトランジスタＭＴが保持するデータのビット数に基づいて設計される。また、以上の説明では、センスアンプＳＡ及びビット線ＢＬが１対１で対応する場合を例に挙げたが、これに限定されない。例えば、複数のビット線ＢＬが、セレクタを介して１つのセンスアンプＳＡに接続されても良い。
【００８６】
＜１−２＞動作
＜１−２−１＞動作フロー
図１０を用いて、識別段階におけるメモリシステム４００の動作フローについて説明する。ここでは、メモリシステム４００は識別対象データが入力された場合、ＮＡＮＤ型フラッシュメモリ１００は、メモリセルアレイ１０に記憶されたニューラルネットワークを用いて、識別対象データを識別する場合について説明する。
【００８７】
［Ｓ１００１］
メモリコントローラ２００は、外部から識別対象データを受信すると、ＮＡＮＤ型フラッシュメモリ１００の入出力回路１５に、受信した識別対象データを含んだ積和演算コマンドセットを発行する。この積和演算コマンドセットとは、ＮＡＮＤ型フラッシュメモリ１００を上述した隠れ層５２として機能させるためのコマンドセットである。積和演算コマンドセットの具体的な例については後述する。
【００８８】
［Ｓ１００２］
入出力回路１５は、積和演算コマンドセットを受信すると、積和演算コマンドセットの中のコマンドを、シーケンサ１７に供給する。シーケンサ１７は、コマンドを受信することにより、ＮＡＮＤ型フラッシュメモリ１００にて積和演算を行う。
【００８９】
［Ｓ１００３］
入出力回路１５は、積和演算コマンドセットを受信すると、積和演算コマンドセットの中の識別対象データ（入力データ）を、データレジスタ１３Ａに供給する。
【００９０】
［Ｓ１００４］
データレジスタ１３Ａは、受信した入力データをラッチ回路ＤＬに記憶する。
【００９１】
［Ｓ１００５］
シーケンサ１７は、積和演算コマンドセットに基づいて、センスアンプＳＡにメモリセルアレイ１０から重み係数（以下、重みデータ）を読み出させる。
【００９２】
［Ｓ１００６］
センスアンプＳＡは、メモリセルアレイ１０から読み出した重みデータを、データレジスタ１３Ａに供給する。重みデータとは、ニューラルネットワークの重み係数に対応し、処理データに対して積和演算を行う際に用いられる。
【００９３】
［Ｓ１００７］
データレジスタ１３Ａは、受信した重みデータをラッチ回路ＤＬに記憶する。この際、重みデータが記憶されるラッチ回路ＤＬは、入力データを記憶しているラッチ回路ＤＬと異なる。
【００９４】
［Ｓ１００８］
データレジスタ１３Ａは、記憶されている入力データと、重みデータと、の積演算を行なう。そして、データレジスタ１３Ａは、積演算の結果をラッチ回路ＤＬに記憶する。
【００９５】
［Ｓ１００９］
データレジスタ１３Ａは、積演算の結果をビットカウンタ１３Ｂに供給する。
【００９６】
［Ｓ１０１０］
ビットカウンタ１３Ｂは、デジタル演算、またはアナログ演算によって、積演算の結果に基づく、和演算を行う。このように、データレジスタ１３Ａによって、入力データ及び重みデータの積演算を行い、ビットカウンタ１３Ｂによって、積演算結果の和演算を行うことによって、上述した積和演算を行うことができる。
【００９７】
［Ｓ１０１１］
ビットカウンタ１３Ｂは、積和演算の結果を、入出力回路１５に供給する。
【００９８】
［Ｓ１０１２］
そして、入出力回路１５は、積和演算の結果を、メモリコントローラ２００に供給する。
【００９９】
尚、ここでは、簡単の為に、積和演算を一回だけ行う場合について説明したが、これに限らない。例えば、隠れ層５２に多段の処理用のノードが設けられる場合、ＮＡＮＤ型フラッシュメモリ１００は、段数に応じてステップＳ１００５〜Ｓ１０１０を繰り返しても良い。
【０１００】
＜１−２−２＞コマンドセット、及び波形図
次に、図１１を用いて、識別段階におけるメモリシステム４００の動作におけるコマンドセットや、波形図について説明する。
【０１０１】
図１１に示すように、メモリコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００が「レディ状態（Ｒ／Ｂｎ信号がＨレベル）」である場合、入出力回路１５に、積和演算コマンドセットを発行する（Ｓ１００１）。積和演算コマンドセットとは、積和演算をＮＡＮＤ型フラッシュメモリ１００に実行させるための第１コマンド（ＸＡＨ）と、重みデータが記憶されているメモリセルを指定するためのアドレス（ＡＤＤ）と、積和演算に用いる入力データ（ＤＡＴＡ）と、積和演算をＮＡＮＤ型フラッシュメモリ１００に実行させるための第２コマンド（ＸＢＨ）と、を含む。
【０１０２】
そして、ＮＡＮＤ型フラッシュメモリ１００は、第１コマンド（ＸＡＨ）、アドレス（ＡＤＤ）、入力データ（ＤＡＴＡ）、及び第２コマンド（ＸＢＨ）を順に受信すると、積和演算を開始し、「レディ状態（Ｒ／Ｂｎ信号がＨレベル）」から「ビジー状態（Ｒ／Ｂｎ信号がＬレベル）」になる。
【０１０３】
ここからは、ステップＳ１００５における、選択ワード線ＷＬ、制御信号ＩＮＶ、ＢＬＣ、ＢＬＸ、ＨＬＬ、ＸＸＬ、ＳＴＢ、選択ビット線ＢＬ、及びソース線ＳＬについて説明する。
【０１０４】
時刻Ｔ１において、シーケンサ１７は、制御信号ＩＮＶの電位をＬレベルにし、制御信号ＢＬＣの電位をＶｓｓからＶｂｌｃに昇圧し、制御信号ＢＬＸの電位をＶｓｓからＶｂｌｃに昇圧する。これにより、センスアンプＳＡのトランジスタ３０、３１、及び３２がオン状態となり、ビット線ＢＬの電位がＶｓｓからＶＢＬに昇圧される（図９参照）。また、シーケンサ１７は、ソース線ＳＬの電位をＶｓｓからＶＳＬに昇圧する。
【０１０５】
時刻Ｔ２において、シーケンサ１７は、選択ワード線ＷＬの電位をＶｓｓからＡＲに昇圧する。これにより、選択ワード線ＷＬが接続される選択メモリセルがオンする場合は、ビット線ＢＬの電位が下がり、選択メモリセルがオンしない場合は、ビット線ＢＬの電位は維持される。更に、シーケンサ１７は、制御信号ＨＬＬの電位をＬレベルからＨレベルに昇圧する。これにより、トランジスタ３４がオン状態になり、センスアンプＳＡのノードＳＥＮが充電される（図９参照）。
【０１０６】
時刻Ｔ３において、シーケンサ１７は、制御信号ＨＬＬの電位をＨレベルからＬレベルに降圧し、制御信号ＸＸＬの電位をＬレベルからＨレベルに昇圧する。これにより、トランジスタ３５がオン状態になり、トランジスタ３５、及び３２を介してビット線ＢＬと、ノードＳＥＮが電気的に接続される。そのため、ノードＳＥＮの電位は、ビット線ＢＬの電位に基づく電位となる（図９参照）。
【０１０７】
時刻Ｔ４において、シーケンサ１７は、制御信号ＸＸＬの電位をＨレベルに維持しつつ、制御信号ＳＴＢの電位をＬレベルからＨレベルに昇圧する。これにより、トランジスタ３７がオン状態になり、トランジスタ３６のゲート電極の電位に基づく情報が、バスＬＢＵＳに転送される（図９参照）。そして、バスＬＢＵＳの電位は、電圧ＡＲに関する結果としてラッチ回路ＤＬに記憶される。
【０１０８】
具体的には、選択メモリセルがオンする場合は、ビット線ＢＬの電位が下がっており、その結果ノードＳＥＮの電位も下がる。そのため、トランジスタ３６はオフ状態となり、バスＬＢＵＳの電位は維持される。これに対し、選択メモリセルがオフする場合は、ビット線ＢＬの電位が維持されており、その結果ノードＳＥＮの電位も維持される。そのため、トランジスタ３６はオン状態となり、バスＬＢＵＳはＣＬＫに接続され、電位が降圧される。
【０１０９】
以上のように、時刻Ｔ２〜時刻Ｔ５の動作を「Ａステート」を読み出す為の動作（Ａステートリード）である。
【０１１０】
続いて、時刻Ｔ５〜時刻Ｔ６において、シーケンサ１７は、選択ワード線ＷＬの電位をＡＲからＢＲに昇圧し、且つ前述した時刻Ｔ２〜時刻Ｔ５と同様の動作を行うことにより、「Ｂステート」を読み出す為の動作（Ｂステートリード）を行う。
【０１１１】
続いて、時刻Ｔ６〜時刻Ｔ７において、シーケンサ１７は、選択ワード線ＷＬの電位をＢＲからＣＲに昇圧し、且つ前述した時刻Ｔ２〜時刻Ｔ５と同様の動作を行うことにより、「Ｃステート」を読み出す為の動作（Ｃステートリード）を行う。
【０１１２】
以上のように時刻Ｔ１〜時刻Ｔ７の動作を行うことにより、重みデータをラッチ回路ＤＬに読み出すことができる。
【０１１３】
その後、シーケンサ１７は、ラッチ回路セット１３０を用いて積演算を行い、ビットカウンタ１３Ｂを用いて、和演算を行う。その結果、シーケンサ１７は、ビットカウンタ１３Ｂの演算結果を積和演算結果（ＤＡＴＡ）として、メモリコントローラ２００に出力する（Ｓ１０１２）。
【０１１４】
なお、信号ＤＱの送受信を総称してコマンドシーケンスと記載する。
【０１１５】
＜１−２−３＞比較例
ここで、本実施形態におけるコマンドシーケンスと、リード動作及びライト動作のコマンドシーケンスと、の違いを説明する。まず、図１２を用いて、リード動作について説明する。図１２に示すように、リード動作は、まずメモリコントローラ２００がＮＡＮＤ型フラッシュメモリ１００にリードコマンドセットを発行することによって、ＮＡＮＤ型フラッシュメモリ１００のメモリセルアレイ１０からデータレジスタ／ビットカウンタ１３にデータが読み出される。その後、メモリコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００にデータ出力コマンドセットを発行することで、データレジスタ／ビットカウンタ１３に読み出されたデータを受け取ることができる。
【０１１６】
続いて、図１３を用いて、ライト動作について説明する。図１３に示すように、ライト動作は、メモリコントローラ２００がＮＡＮＤ型フラッシュメモリ１００にライトコマンドセット（書き込みデータを含む）を発行することによって、ＮＡＮＤ型フラッシュメモリ１００のメモリセルアレイ１０に、書き込みデータを書き込むことができる。
【０１１７】
このように、リード動作においては、メモリコントローラ２００がリードコマンドセットを発行後（ビジー状態にんなった後）のデータ出力コマンドセットを発行することで、データが信号ＤＱとして出力される。また、ライト動作においては、メモリコントローラ２００が書き込みデータを含むライトコマンドセットを発行することで、書き込みデータをメモリセルアレイ１０に書き込む事ができる。
【０１１８】
＜１−３＞効果
本実施形態では、メモリコントローラ２００は、識別対象データ、並びに重みデータのアドレスを含む積和演算コマンドセットを発行することで、識別対象データ、並びに重みデータに基づく積和演算結果をＮＡＮＤ型フラッシュメモリ１００から受け取ることができる。
【０１１９】
近年、ＮＡＮＤ型フラッシュメモリの１ページのサイズが、数ＫＢと大きくなってきている。そのため、ＮＡＮＤ型フラッシュメモリは大容量のデータレジスタを備え、これにより優れたSequential Write / Read性能を示す。しかしながら、このような技術的優位性をＡＩ技術に応用した具体的な報告は無い。例えば、ＡＩに特徴的な演算手法やアルゴリズムにメモリ技術を応用することができれば、新規な技術領域を開拓して、人々の生活や社会に貢献できる可能性がある。
【０１２０】
そこで、本実施形態では、メモリコントローラ２００が、１ページのサイズが大きいＮＡＮＤ型フラッシュメモリに積和演算コマンドセットを発行するだけで、積和演算を行うことができるので、容易に高速なＡＩ機能を実現可能となる。そのため、ＮＡＮＤ型フラッシュメモリを用いるだけで、容易に高品質なＡＩ機能を得ることが可能となる。
【０１２１】
＜１−４＞具体例
続いて、識別対象データがＮＡＮＤ型フラッシュメモリに入力された場合における第１実施形態の具体例について説明する。特に、識別対象データ、重みデータ、並びに演算結果の流れを示す。
【０１２２】
図３に示すように、一つの識別対象データに着目した場合（例えばＸ１）、一つのデータは隠れ層５２における並列に並ぶノードの数に応じた演算に用いられる。例えば、図３の例の場合、データＸ１は、データＹ１、Ｙ２、Ｙ３の為に用いられる。つまり、データＸ１は、重みＷ１１、Ｗ２１、及びＷ３１のそれぞれと積演算される。上述したＮＡＮＤ型フラッシュメモリでは、一つのラッチ回路セット１３０につき、一つの積演算を行う。図３の例の場合、データＸ１に関する積演算は３回行われるので、３つのラッチ回路セット１３０を用いることになる。具体的には図１４に示すように、各識別対象データ（Ｘ１〜Ｘ４）がそれぞれ３つのラッチ回路セット１３０に割り当てられる。なお、上述したように、識別対象データは、一つの識別対象データに対して積演算を行う回数に依って変化する。本例の場合、データＸ１〜Ｘ４はそれぞれ３つずつ必要となる。つまり、データレジスタ１３Ａに入力される識別対象データは、Ｘ１、Ｘ１、Ｘ１、Ｘ２、Ｘ２、Ｘ２、Ｘ３、Ｘ３、Ｘ３である必要がある。この識別対象データは、メモリコントローラ２００が生成しても良いし、シーケンサ１７が生成しても良いし、その他の構成が生成しても良い。そして、各識別対象データと積演算を行うための重みデータがメモリセルアレイ１０からラッチ回路に読み出される。そして、ラッチ回路セット１３０において、読み出された重みデータと、識別対象データとの積演算が行われ、積演算結果がデータラッチに記憶される。また、積和演算結果に加算されるバイアス（定数項）Ｂ１〜Ｂ３も、重みデータとしてラッチ回路に記憶される。
【０１２３】
そして、ビットカウンタ１３Ｂにおいて、各ラッチ回路セット１３０から積演算結果を読み出して、和演算を行い、積和演算結果を算出する。ビットカウンタ１３Ｂは、隠れ層のデータＹを生成し、出力データを生成する。
【０１２４】
ここで、図１５を用いて、ラッチ回路セット１３０の具体的な使用方法について説明する。図１５では、重みデータ、及び識別対象データがそれぞれ４値（多値）で、ある場合について説明する。
【０１２５】
図１５に示すように、ラッチ回路セット１３０が４値のデータを判定するためには、ＡＲの読み出し結果、ＢＲの読み出し結果、及びＣＲの読み出し結果が必要となる。図１５では、例えばデータラッチＤＬ（Ａ）にＡＲの読み出し結果（“Ａ”ｆｌａｇ）が記憶され、例えばデータラッチＤＬ（Ｂ）にＢＲの読み出し結果（“Ｂ”ｆｌａｇ）が記憶され、例えばデータラッチＤＬ（Ｃ）にＣＲの読み出し結果（“Ｃ”ｆｌａｇ）が記憶される。ラッチ回路セット１３０は、ＤＬ（Ａ）、ＤＬ（Ｂ）、及びＤＬ（Ｃ）に記憶されたデータに基づいて、重みデータを決定できる。なお、重みデータが４値以外の場合、必要に応じたデータラッチＤＬを使用して良い。
【０１２６】
４値の識別対象データは、例えば２つのデータラッチＤＬ（Ｄ）、ＤＬ（Ｅ）に記憶される。なお、識別対象データが４値以外の場合、必要に応じたデータラッチＤＬを使用して良い。
【０１２７】
積演算結果は、例えばデータラッチ回路ＤＬ（Ｆ）に記憶される。しかし、積演算結果は、更に他のデータラッチＤＬを使用しても良い。
【０１２８】
そして、和演算は、ビットカウンタ１３Ｂにて行い、図示しない記憶領域に積和演算結果を記憶できる。
【０１２９】
＜２＞第２実施形態
続いて、第２実施形態について説明する。第１実施形態では、ビット線を介してデータを判定していたが、第２実施形態においては、ソース線を介してデータを判定する場合について説明する。第１実施形態と同様の部分については説明を省略する。
【０１３０】
＜２−１＞  識別装置の具体的な構成
＜２−１−１＞  ＮＡＮＤ型フラッシュメモリ
ここでは、識別装置５を実現するための具体的なハードウェア構成として、メモリシステム４００を例に挙げて説明する。
【０１３１】
図１６に示すように、メモリシステム４００に含まれるＮＡＮＤ型フラッシュメモリ１００は、ソース線制御回路２３を更に備えている。ソース線制御回路２３は、ソース線ＳＬの電位を制御する。
【０１３２】
＜２−１−２＞  電圧発生回路及びソース線制御回路
図１７を用いて、電圧発生回路２２及びソース線制御回路２３について説明する。
【０１３３】
図１７では、電圧発生回路２２の一部を示している。電圧発生回路２２は、定電流源５０と、ＮＭＯＳトランジスタ５１、５２、５４、及び５５と、抵抗素子５３と、を備えている。図１７に示す電圧発生回路２２では、センスアンプＳＡの信号ＢＬＣを生成する回路と、ソース線を充電する回路が示されている。
【０１３４】
具体的には、定電流源５０は、電流Ｉｒｅｆ１を生成し、信号ＢＬＣとして供給する。ＮＭＯＳトランジスタ５１は、一端及びゲート電極が定電流源５０の出力端に接続される。
【０１３５】
ＮＭＯＳトランジスタ５２の一端は信号Ｖｉｎｔが入力され、ゲート電極には信号Ｉｎｉｔｉａｌｉｚｅが入力され、他端は、ＮＭＯＳトランジスタ５１の他端が接続される。
【０１３６】
抵抗素子５３の一端は、ＮＭＯＳトランジスタ５１及び５２の他端に接続される。
【０１３７】
ＮＭＯＳトランジスタ５４の一端は、抵抗素子５３の他端に接続され、ゲート電極には信号ＳＷ  ｔｏ  ＳＲＣが入力され、他端はソース線ＳＬに接続されている。
【０１３８】
ＮＭＯＳトランジスタ５５の一端は、抵抗素子５３の他端に接続され、ゲート電極には信号ＳＷ  ｔｏ  ＶＳＳが入力され、他端は基準電位ＶＳＳに接続されている。
【０１３９】
ソース線制御回路２３は、電圧比較部２３−１、及び検出回路２３−２を備えている。ソース線制御回路２３は、全セル電流（Ｉｃｅｌｌ＿ｔｏｔａｌ）をモニターしてデジタル値に変換することができる。つまり図１７の回路は、セルソース電流値（ソース線に流れる電流の値）をアナログ回路で判定する回路の一例である。図１７において、積和演算結果に対応する電流値Ｉｃｅｌｌ_ｔｏｔａｌはカレントミラー回路によりミラーされ、レギュレータから与えられる電流値（参照値）と比較される。
【０１４０】
電圧比較部２３−１は、ソース線ＳＬの電位を基準電位ＶＲＥＦ＿ＳＲＣと比較すると共に、ソース線ＳＬに電位を与える。図示するように電圧比較部２３−１は、ＰＭＯＳトランジスタ６０、比較器６１、及びＮＭＯＳトランジスタ６２を備える。
【０１４１】
ＰＭＯＳトランジスタ６０は、ゲートにプリチャージ信号ＰＲＥＣＨが入力され、一端に外部から電圧ＶＣＣが与えられ、他端がソース線ＳＬに接続されている。信号ＰＲＥＣＨは、データの読み出し動作時におけるビット線のプリチャージ時に“Ｌ”レベルとされることで、ＰＭＯＳトランジスタ６０をオン状態とする。その結果、ソース線ＳＬの電位が上昇する。
【０１４２】
比較器６１は、正転入力端子（＋）がソース線ＳＬに接続され、反転入力端子（−）に電圧ＶＲＥＦ＿ＳＲＣが入力される。すなわち比較器６１は、ソース線ＳＬの電位と電圧ＶＲＥＦ＿ＳＲＣとを比較し、ソース線ＳＬの電位が電圧ＶＲＥＦ＿ＳＲＣを超えた際に“Ｈ”レベルを出力する。電圧ＶＲＥＦ＿ＳＲＣは、最も閾値電圧の低い“０”データについての読み出しレベルＶ０１の絶対値と同じか、それよりも大きい値とされる。
【０１４３】
ＮＭＯＳトランジスタ６２は、ドレインがソース線ＳＬに接続され、ソースが接地され、ゲートに比較器６１の比較結果が与えられる。以下、ＮＭＯＳトランジスタ６２のゲート、すなわち比較器６１の出力ノードを、ノードＧ＿Ｓｏｕｒｃｅと呼ぶ。また、ＮＭＯＳトランジスタ６２のゲート幅Ｗを、以下ゲート幅Ｗｓｏｕｒｃｅ１と呼ぶ。
【０１４４】
検出回路２３−２は、ＰＭＯＳトランジスタ７０、７１、７４、及び７５と、比較器７２と、ＮＭＯＳトランジスタ７３、７６、７７、８０、８１−１、８１−２、８２−１、８２−２、８４−１、及び８４−２と、を備えている。
【０１４５】
ＰＭＯＳトランジスタ７０は、ソースが電源電位ＶＤＤに接続され、ゲート及びドレインが接続さる。ＰＭＯＳトランジスタ７０のゲート及びドレインが接続されるノードＰ＿ＧＡＴＥと呼ぶ。例えば、ＰＭＯＳトランジスタ７０が供給する電流をＩｒｅｆ２と記載する。
【０１４６】
ＰＭＯＳトランジスタ７１は、ソースが電源電位ＶＤＤに接続され、ゲートはノードＰ＿ＧＡＴＥに接続される。例えば、ＰＭＯＳトランジスタ７１が供給する電流をＩｒｅｆ３と記載する。
【０１４７】
ＰＭＯＳトランジスタ７０及びＰＭＯＳトランジスタ７１はカレントミラーを構成する。そのため、電流Ｉｒｅｆ２と、電流Ｉｒｅｆ３と、は比例の関係である。
【０１４８】
比較器７２は、正転入力端子（＋）がＰＭＯＳトランジスタ７０のドレインに接続され、反転入力端子（−）にＰＭＯＳトランジスタ７１のドレインが接続される。すなわち比較器７２は、ＰＭＯＳトランジスタ７０のドレインの電位ＶＡとＰＭＯＳトランジスタ７１のドレインの電位ＶＢとを比較し、電位ＶＡが電位ＶＢを超えた際に“Ｈ”レベルを出力する。
【０１４９】
ＮＭＯＳトランジスタ７３は、ドレインがノードＰ＿ＧＡＴＥに接続され、ソースが接地され、ゲートに比較器６１の比較結果が与えられる。また、ＮＭＯＳトランジスタ７３のゲート幅Ｗを、以下ゲート幅Ｗｓｏｕｒｃｅ２と呼ぶ。
【０１５０】
ＰＭＯＳトランジスタ７４は、ソースが電源電位ＶＤＤに接続され、ゲート及びドレインは互いに接続される。
【０１５１】
ＰＭＯＳトランジスタ７５は、ソースが電源電位ＶＤＤに接続され、ゲートはＰＭＯＳトランジスタ７４のゲート及びドレインに接続され、ドレインはノードＮ＿Ｇａｔｅに接続される。
【０１５２】
ＰＭＯＳトランジスタ７４及び７５はカレントミラーを構成する。
【０１５３】
ＮＭＯＳトランジスタ７６は、ドレイン及びゲートがノードＮ＿ＧＡＴＥに接続され、ソースが接地される。
【０１５４】
ＮＭＯＳトランジスタ７７は、ドレインがＰＭＯＳトランジスタ７１のドレインに接続され、ゲートがノードＮ＿ＧＡＴＥに接続され、ソースが接地される。
【０１５５】
ＮＭＯＳトランジスタ７６及び７７はカレントミラーを構成する。
【０１５６】
ＮＭＯＳトランジスタ８０は、ドレイン及びゲートに、参照電流Ｉｒｅｆが供給され、ソースが接地されている。
【０１５７】
ＮＭＯＳトランジスタ８１−１は、ドレインがＰＭＯＳトランジスタ７４のゲート及びドレインに接続され、ゲートに参照電流Ｉｒｅｆが供給される。
【０１５８】
ＮＭＯＳトランジスタ８１−２は、ドレインがＮＭＯＳトランジスタ８１−１のソースに接続され、ゲートに信号１ｂａｉが供給され、ソースが接地されている。
【０１５９】
ＮＭＯＳトランジスタ８２−１は、並列の２つのＮＭＯＳトランジスタ（ＮＭＯＳトランジスタ８１−１と同じ特性のトランジスタ）を備え、それぞれドレインがＰＭＯＳトランジスタ７４のゲート及びドレインに接続され、ゲートに参照電流Ｉｒｅｆが供給される。
【０１６０】
ＮＭＯＳトランジスタ８２−２は、並列の２つのＮＭＯＳトランジスタ（ＮＭＯＳトランジスタ８１−２と同じ特性のトランジスタ）を備え、それぞれドレインがＮＭＯＳトランジスタ８２−１のソースに接続され、ゲートに信号２ｂａｉが供給され、ソースが接地されている。
【０１６１】
ＮＭＯＳトランジスタ８４−１は、並列の４つのＮＭＯＳトランジスタ（ＮＭＯＳトランジスタ８１−１と同じ特性のトランジスタ）を備え、それぞれドレインがＰＭＯＳトランジスタ７４のゲート及びドレインに接続され、ゲートに参照電流Ｉｒｅｆが供給される。
【０１６２】
ＮＭＯＳトランジスタ８４−２は、並列の４つのＮＭＯＳトランジスタ（ＮＭＯＳトランジスタ８１−２と同じ特性のトランジスタ）を備え、それぞれドレインがＮＭＯＳトランジスタ８２−１のソースに接続され、ゲートに信号４ｂａｉが供給され、ソースが接地されている。
【０１６３】
シーケンサ１７は、信号１ｂａｉ、２ｂａｉ、４ｂａｉを適宜“Ｈ”レベルにすることにより、ＰＭＯＳトランジスタ７４、及び７５に流れる電流値を制御する。そのため、シーケンサ１７は、ＮＭＯＳトランジスタ７６、及び７７に流れる電流値を制御でき、その結果、電位ＶＢを任意に制御可能となる。
【０１６４】
＜２−２＞  動作
上述したように、ソース線制御回路２３は、積和演算結果に対応する電流値Ｉｃｅｌｌ_ｔｏｔａｌをカレントミラー回路によりミラーし、レギュレータから与えられる電流値（参照値）と比較する。ここで、演算の精度を上げるには、セル電流Ｉｃｅｌｌのばらつきを抑えることが重要である。
【０１６５】
例えば図１８及び図１９に示すように、読み出し電圧ＡＲ、および読み出し電圧ＢＲを用いて読み出し動作を行ったとしても、例えば電圧ＢＲを印加した時の電流Ｉｃｅｌｌが２０ｎＡ〜１００ｎＡまでばらつくことは珍しくない。
【０１６６】
そこで、第２の実施形態では、読み出し電圧を段階的に変化させて大小判定を行うことにより、最終的にセルソース電流の絶対値を検出する。図２０を参照してそのことを説明する。
【０１６７】
図２０及び図２１は、第２の実施形態における読み出し動作の一例を説明するための図である。第２の実施形態では、例えば選択ワード線（Ｓｅｌｅｃｔｅｄ ＷＬ）に対して印加する読み出し電圧ＡＲを、Ａ０Ｒ、Ａ１Ｒ、…というように、例えば１つのステートにつき、Ｎ段階（Ｎステージ）分割させる。図２１に示すように、最初に読み出し電圧Ａ０Ｒを用いて読み出しを行い、ソース線ＳＬに流れる電流をモニターして電流が流れたビット線ＢＬをロックアウトする。次に読み出し電圧Ａ１Ｒを用いた読み出しを行い、ソース線に流れる電流をモニターして電流が流れたビット線ＢＬをロックアウトする。他の分割された読み出し電圧を用いて、同様の動作を繰り返す。なお、シーケンサ１７は、読み出し電圧を印加する毎に、信号ＳＴＢを立ち上げる事で、読み出し結果をラッチ回路に記憶することができる。
【０１６８】
図２２に示されるように、上記の過程におけるいずれの読み出し動作においても、１と判定されたＩｃｅｌｌを２０ｎＡ［ナノアンペア］程度に揃えることができる。従って積和演算の精度を向上させることができる。
【０１６９】
＜２−３＞  効果
以上述べたように第２の実施形態では、積和演算結果を、読み出し動作時のソース線に流れる電流から検知するようにしている。すなわち、入力データに基づいて選択ビットラインＢＬをプリチャージし、ＡＲでオンしたビット線ＢＬをロックアウトする。次に読み出し電圧ＡＲ、ＢＲ、ＣＲを印加することで、それぞれソース線に流れる電流をモニターし、その電流値から積和演算結果を得るようにした。
【０１７０】
その際、各状態におけるリード電圧を段階的に刻むことで、セル電流のばらつきによる精度への悪影響を無視できる程度に小さくした。このようにすることで、積和演算結果を、読出し動作時のソース線に流れる電流から、十分な精度で検知することが可能になる。
【０１７１】
特に第２の実施形態では、和演算を、メモリセルアレイ内で一気に実行することが可能になるので、チップサイズの縮小などに寄与できる。
【０１７２】
既存の半導体記憶装置では、読み出し時には全てのビット線が選択される。つまり入力データの論理レベルに応じてビット線を選択するという概念がない。このため、そもそも積和演算を実装するという発想に至ることができなかった。
【０１７３】
これに対して第２の実施形態では、入力データの論理レベルに応じてビット線を選択し、さらに、閾値電圧を段階的に上昇させ、オンしたビット線をロックアウトし、その繰り返しの過程でソース線に流れる電流を検知することで積和演算結果を実現できるようにした。
【０１７４】
これらのことから、第２の実施形態によっても、演算機能を備えた半導体記憶装置を提供することが可能になる。
【０１７５】
＜３＞  その他
なお、この発明は上記第１および第２の実施形態に限定されるものではない。例えば第１の実施形態では、積和演算の結果を得る前に積演算の結果が得られるので、積演算の結果をＮＡＮＤ型フラッシュメモリ１００の外部に取り出すようにしてもよい。このほか、ＮＡＮＤ型フラッシュメモリ１００の外部に取り出すことのできる情報は、積和演算の結果であってもよいし、これを活性化関数に代入した推論結果であってもよい。
【０１７６】
図１０では、ＮＡＮＤ型フラッシュメモリ１００は、積和演算結果をメモリコントローラ２００に供給している（ステップＳ１０１２）。しかし、ＮＡＮＤ型フラッシュメモリ１００は、推論結果（識別スコア）をメモリコントローラ２００に供給しても良い。この推論結果とは、入力されたデータセット（入力データ）と、入力データに関連づけされたラベルとの合致の度合いを示す。例えば、ＮＡＮＤ型フラッシュメモリ１００は、入力されたデータが写真である場合、入力されたデータが、何の写真（例えば、人、車、木、等）かを推論する。この推論の結果を、推論結果（識別スコア）と記載する。
【０１７７】
ここで、図２３、及び図２４を用いて、図１０の変形例について説明する。
【０１７８】
［Ｓ１００１］〜［Ｓ１０１０］
図１０で説明した動作と同様なので、説明を割愛する。
【０１７９】
［Ｓ１０１３］
ビットカウンタ１３Ｂは、積和演算を終了すると、その旨をシーケンサ１７に通知する。
【０１８０】
［Ｓ１０１４］
図２４を用いて、ステップＳ１０１３の続きを説明する。
【０１８１】
シーケンサ１７は、積和演算が終了した旨を受信すると、最終層まで演算が行われたか判定する。より具体的には、シーケンサ１７は、隠れ層５２に含まれる複数の処理ノードのうち、最後に行われる処理ノードの処理が終了したか否かを判定する。
【０１８２】
［Ｓ１０１５］
シーケンサ１７は、最後に行われる処理ノードの処理が終了していないと判定する場合、最新の積和演算結果を入力データとして、積和演算を行う。
【０１８３】
具体的には、シーケンサ１７は、データレジスタ１３Ａに記憶されている最新の積和演算結果を活性化関数に入力して演算し、次層への入力データとして、活性化関数の演算結果をデータレジスタ１３Ａに記憶させる。なお、最終層である場合は、本ステップにより推論結果が得られる。
【０１８４】
［Ｓ１０１６］
データレジスタ１３Ａは、活性化関数の演算結果を次層への入力データとして記憶する。その後、ＮＡＮＤ型フラッシュメモリ１００は、ステップＳ１００５を繰り返す。
【０１８５】
このように、シーケンサ１７は、最後に行われる処理ノードの処理が終了していないと判定する場合、ステップＳ１０１５、Ｓ１０１６、Ｓ１００５〜Ｓ１０１０、Ｓ１０１３、及びＳ１０１４を繰り返す。
【０１８６】
［Ｓ１０１７］
シーケンサ１７は、最後に行われる処理ノードの処理が終了していると判定する場合、データレジスタ１３Ａに記憶されている演算結果を、推論結果として、ＮＡＮＤ型フラッシュメモリ１００から出力させる。
【０１８７】
［Ｓ１０１７］
データレジスタ１３Ａは、シーケンサ１７の命令に従って、推論結果を、入出力回路１５に供給する。
【０１８８】
［Ｓ１０１８］
そして、入出力回路１５は、推論結果を、メモリコントローラ２００に供給する。  このようにして、ＮＡＮＤ型フラッシュメモリ１００は、推論結果（識別スコア）をメモリコントローラ２００に供給しても良い。
【０１８９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は例として提示するものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１９０】
１…識別システム
２…入出力インターフェース
３…制御部
４…メモリ
５…識別装置
１０…メモリセルアレイ
１１…ロウデコーダ
１２…センスアンプモジュール
１３…データレジスタ／ビットカウンタ
１３Ａ…データレジスタ
１３Ｂ…ビットカウンタ
１４…カラムデコーダ
１５…入出力回路
１６…ロジック制御回路
１７…シーケンサ
１８…ステータスレジスタ
１９…アドレスレジスタ
２０…コマンドレジスタ
２１…レディ／ビジー回路
２２…電圧発生回路
２３…ソース線制御回路
２３−１…電圧比較部
２３−２…検出回路
１００…ＮＡＮＤ型フラッシュメモリ
１３０…ラッチ回路セット
２００…メモリコントローラ
２１０…ホストインターフェース回路
２２０…内蔵メモリ
２３０…プロセッサ
２４０…バッファメモリ
２５０…ＮＡＮＤインターフェース回路
２６０…エラー訂正回路
４００…メモリシステム
【図１】
2020205003.tif 000003
【図２】
2020205003.tif 000004
【図３】
2020205003.tif 000005
【図４】
2020205003.tif 000006
【図５】
2020205003.tif 000007
【図６】
2020205003.tif 000008
【図７】
2020205003.tif 000009
【図８】
2020205003.tif 000010
【図９】
2020205003.tif 000011
【図１０】
2020205003.tif 000012
【図１１】
2020205003.tif 000013
【図１２】
2020205003.tif 000014
【図１３】
2020205003.tif 000015
【図１４】
2020205003.tif 000016
【図１５】
2020205003.tif 000017
【図１６】
2020205003.tif 000018
【図１７】
2020205003.tif 000019
【図１８】
2020205003.tif 000020
【図１９】
2020205003.tif 000021
【図２０】
2020205003.tif 000022
【図２１】
2020205003.tif 000023
【図２２】
2020205003.tif 000024
【図２３】
2020205003.tif 000025
【図２４】
2020205003.tif 000026