(57)【要約】【課題】データの正当性を検証する演算を伴う書き込み処理の高速化を図ること。【解決手段】実施形態のメモリシステムは、データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、ホストから受信したデータに対してデータの正当性を検証する演算の実行と並行して、データを不揮発性メモリへ転送するメモリコントローラと、を備える。【選択図】図１
2020021385.tif 000002
【特許請求の範囲】
【請求項１】
データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、
ホストから受信したデータに対して前記データの正当性を検証する演算の実行と並行して、前記データを前記不揮発性メモリへ転送するメモリコントローラと、を備える、
メモリシステム。
【請求項２】
前記不揮発性メモリはデータを一時格納する内部バッファを備え、
前記メモリコントローラは、
前記内部バッファに前記データを転送し、前記演算の結果に応じて前記内部バッファの前記データを前記不揮発性メモリの前記メモリセルアレイへ不揮発に記憶させるプログラムの実行要否を判定する、
請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、
前記演算の結果、前記データの正当性が認証された場合には前記不揮発性メモリの前記メモリセルアレイへの前記データのプログラムを許可し、前記データの正当性が否認された場合には前記メモリセルアレイへの前記データのプログラムを行わない、
請求項２に記載のメモリシステム。
【請求項４】
前記メモリコントローラは、
前記演算の結果、前記データの正当性が認証された合には前記不揮発性メモリの前記メモリセルアレイへ前記データのプログラムを許可するプログラムコマンドを発行し、前記データの正当性が否認された場合には前記メモリセルアレイへ前記データのプログラムを行うことなく前記不揮発性メモリをコマンド待ち受け状態に戻すリセットコマンドを発行する、
請求項２に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、
前記ホストからＭＡＣ値が付与された前記データを受信し、前記ホストと共有される鍵を用いて前記データに対してハッシュ演算を実行してＭＡＣ値を導出し、導出した前記ＭＡＣ値が前記データに付与された前記ＭＡＣ値と一致する場合には前記データの正当性を認証し、導出した前記ＭＡＣ値が前記データに付与された前記ＭＡＣ値と一致しない場合には前記データの正当性を否認する、
請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリであるＮＡＮＤ型フラッシュメモリの大容量化が進行し、このＮＡＮＤ型フラッシュメモリを搭載したメモリシステムとして、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が注目されている。
【０００３】
ＳＳＤが搭載されたＰＣ、タブレットＰＣおよびスマートフォンなどのデバイスにおいては、不揮発性メモリへのデータの不当な書き換え等を防止するなどのセキュリティの確保が重要である。このため、外部から転送される書き込みデータに対し、データの正当性を検証する演算が行われる場合がある。このような演算には時間が掛かり、不揮発性メモリへの書き込み処理に時間を要してしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０６９２５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一つの実施形態は、データの正当性を検証する演算を伴う書き込み処理の高速化を図ることができるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態のメモリシステムは、データを不揮発に記憶するメモリセルアレイを有する不揮発性メモリと、ホストから受信したデータに対して前記データの正当性を検証する演算の実行と並行して、前記データを前記不揮発性メモリへ転送するメモリコントローラと、を備える。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態にかかるメモリシステムの概略構成例を示すブロック図である。
【図２】図２は、実施形態にかかるメモリシステムのデータ処理の動作の一例をブロック図で示すフロー図である。
【図３】図３は、実施形態にかかるメモリシステムのデータ処理の手順の一例を示すフロー図である。
【図４】図４は、実施形態にかかるメモリシステムの転送方式と比較例にかかるメモリシステムの転送方式とを比較する図である。
【発明を実施するための形態】
【０００８】
以下に、本発明につき図面を参照しつつ詳細に説明する。なお、下記の実施形態により、本発明が限定されるものではない。また、下記実施形態における構成要素には、当業者が容易に想定できるものあるいは実質的に同一のものが含まれる。
【０００９】
図１〜図４を用いて、実施形態のメモリシステム１について説明する。
【００１０】
（メモリシステムの構成例）
図１は、実施形態にかかるメモリシステム１の概略構成例を示すブロック図である。図１に示すように、メモリシステム１は、メモリコントローラ１０と不揮発性メモリとしてのＮＡＮＤ型フラッシュメモリ２０（以下、単にＮＡＮＤメモリ２０ともいう）とを備える。
【００１１】
メモリシステム１は、メモリコントローラ１０とＮＡＮＤメモリ２０とが１つのパッケージとして構成されるメモリカード等であってもよいし、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等であってもよい。メモリシステム１は、ホスト３０と接続可能である。ホスト３０は、例えば、パーソナルコンピュータ、サーバ、ストレージボックスなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【００１２】
ＮＡＮＤメモリ２０は、データを不揮発に記憶する不揮発性メモリを含む。以下の説明では、不揮発性メモリとしてＮＡＮＤメモリが用いられた場合について説明するが、不揮発性メモリの例はこれに限られない。不揮発性メモリは、例えば、ＮＯＲ型のフラッシュメモリ、３次元構造フラッシュメモリ、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の種々の記憶媒体のいずれかであってよい。また、不揮発性メモリが半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対しても本実施形態を適用することが可能である。
【００１３】
ＮＡＮＤメモリ２０は、内部ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２１を備える。内部ＲＡＭ２１は、ホスト３０からメモリコントローラ１０を介して転送されたデータ等を一時格納する内部バッファとして機能する。また、ＮＡＮＤメモリ２０は、上述の不揮発性メモリがマトリックス状に配列されたメモリセルアレイ２２を備える。ホスト３０からのデータは、メモリセルアレイ２２内に不揮発に記憶される。
【００１４】
メモリコントローラ１０は、例えばＳｏＣ（Ｓｙｓｔｅｍ−Ｏｎ−ａ−Ｃｈｉｐ）として構成される半導体集積回路である。メモリコントローラ１０は、ホスト３０からのライト要求に従ってＮＡＮＤメモリ２０へのデータのライトを制御する。また、ホスト３０からのリード要求に従ってＮＡＮＤメモリ２０からのデータのリードを制御する。
【００１５】
メモリコントローラ１０は、制御部１１、ＲＡＭ１２、メモリインタフェース（メモリＩ／Ｆ）１３、データバッファ１４、ホストインタフェース（ホストＩ／Ｆ）１５、演算部１６、及び転送経路制御部１７を備える。制御部１１、ＲＡＭ１２、メモリＩ／Ｆ１３、データバッファ１４、ホストＩ／Ｆ１５、演算部１６、及び転送経路制御部１７は、内部バスで相互に接続されている。
【００１６】
ホストＩ／Ｆ１５は、ホスト３０との間のインタフェース規格に従った処理を実施し、ホスト３０から受信したリクエスト（要求）、ライト対象のデータ（ユーザデータ）などを内部バスに出力する。また、ホストＩ／Ｆ１５は、ＮＡＮＤメモリ２０からリードされたデータ（ユーザデータ）、制御部１１からの応答などをホスト３０へ送信する。なお、ホストＩ／Ｆ１５の機能のうちの一部または全部を後述の制御部１１が兼ね備えていてもよい。つまり、ホスト３０との情報のやり取りを、制御部１１が直接行ってもよい。
【００１７】
メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、ＮＡＮＤメモリ２０へのデータのライト処理を行う。また、メモリＩ／Ｆ１３は、制御部１１の指示に基づいて、ＮＡＮＤメモリ２０からのデータのリード処理を行う。なお、メモリＩ／Ｆ１３の機能のうちの一部または全部を後述の制御部１１が兼ね備えていてもよい。つまり、ＮＡＮＤメモリ２０との情報のやり取りを、制御部１１が直接行ってもよい。
【００１８】
データバッファ１４は、複数の格納領域１４ａ、格納領域１４ｂ、格納領域１４ｃ等を備える。データバッファ１４は、メモリコントローラ１０がホスト３０から受信したデータをＮＡＮＤメモリ２０へ記憶するまでに、いずれかの格納領域１４ａ〜１４ｃに一時格納する。また、データバッファ１４は、ＮＡＮＤメモリ２０からリードされたデータをホスト３０へ送信するまでに、いずれかの格納領域１４ａ〜１４ｃに一時格納する。データバッファ１４には、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの汎用メモリを用いることができる。
【００１９】
転送経路制御部１７は、データバッファ１４の格納領域１４ａ〜１４ｃに一時格納されたデータの転送先を制御する。データの転送先は、演算部１６およびＮＡＮＤメモリ２０の内部ＲＡＭ２１である。なお、転送経路制御部１７の機能のうちの一部または全部を後述の制御部１１が兼ね備えていてもよい。
【００２０】
演算部１６は、転送経路制御部１７から転送されたホスト３０からのデータに対し、そのデータの正当性を検証する演算を実行する。演算の方式は特に問わない。例えば、ＮＡＮＤメモリ２０にＵＦＳ（Ｕｎｉｖｅｒｓａｌ  Ｆｌａｓｈ  Ｓｔｏｒａｇｅ）規格やｅＭＭＣ（ｅｍｂｅｄｄｅｄ  Ｍｕｌｕｔｉ−Ｍｅｄｉａ−Ｃａｒｄ）規格が適用されている場合、メモリシステム１にはＲＰＭＢ（Ｒｅｐｌｙ  Ｐｒｏｔｅｃｔｅｄ  Ｍｅｍｏｒｙ  Ｂｌｏｃｋ）が定義される。ＲＰＭＢでは、ホスト３０と共有される共有鍵１６ａを演算部１６が保有し、演算部１６が共有鍵１６ａを用いてハッシュ演算をすることで、ホスト３０からのデータの正当性を検証する。この場合、演算部１６は、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）２５６演算回路等である。このほか、演算部１６は、異なる演算方式を用いたＰＩ（Ｐｒｏｔｅｃｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ）によるＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）演算回路等であってもよい。また、演算部１６の機能のうちの一部または全部を後述の制御部１１が兼ね備えていてもよい。例えば、演算部１６がハッシュ演算を行い、制御部１１がホスト３０からのデータの正当性を検証するようにしてもよい。
【００２１】
制御部１１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）として構成される。制御部１１は、ファームウェアプログラムに基づいて動作する。例えば、ファームウェアプログラムはＮＡＮＤメモリ２０に、メモリシステム１の製造時または出荷時において予め格納されている。制御部１１は、メモリシステム１の起動時に、メモリコントローラ１０が備えるＲＡＭ１２にＮＡＮＤメモリ２０からファームウェアプログラムをロードする。制御部１１は、ＲＡＭ１２にロードされたファームウェアプログラムを実行することによって、各種機能を実現する。
【００２２】
このように、制御部１１の機能のうちの一部または全部は、例えば、ファームウェアを実行するＣＰＵによって実現される。ただし、制御部１１の機能のうちの一部または全部は、ファームウェアを実行するＣＰＵではなく、ハードウェア回路によって実現されてもよい。例えばメモリコントローラ１０は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を備え、制御部１１の機能のうちの一部または全部は、ＦＰＧＡまたはＡＳＩＣによって実行されてもよい。
【００２３】
制御部１１は、メモリシステム１の各構成要素を統括的に制御する。制御部１１は、ホスト３０からホストＩ／Ｆ１５経由で要求を受けた場合に、その要求に従った制御を行う。例えば、制御部１１は、ホスト３０からのライト要求に従って、ＮＡＮＤメモリ２０へのデータのライトをメモリＩ／Ｆ１３へ指示する。また、制御部１１は、ホスト３０からのリード要求に従って、ＮＡＮＤメモリ２０からのデータのリードをメモリＩ／Ｆ１３へ指示する。
【００２４】
また、制御部１１は、ホスト３０からライト要求を受信した場合、データバッファ１４に蓄積されるデータを、演算部１６またはＮＡＮＤメモリ２０の内部ＲＡＭ２１のいずれかへと転送するよう転送経路制御部１７に指示する。そして、演算部１６へと転送されたデータに対して、そのデータの正当性を検証する演算を演算部１６に指示する。
【００２５】
また、制御部１１は、データバッファ１４に蓄積されるデータに対して、ＮＡＮＤメモリ２０上の格納領域（例えばメモリセルアレイ２２内の領域）を決定する。すなわち、制御部１１は、データのライト先を管理する。ホスト３０から受信したデータの論理アドレスと該データが格納されたＮＡＮＤメモリ２０上の格納領域を示す物理アドレスとの対応情報はアドレス変換テーブルとして格納される。
【００２６】
また、制御部１１は、ホスト３０からリード要求を受信した場合、リード要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからのデータのリードをメモリＩ／Ｆ１３へ指示する。
【００２７】
（メモリシステムの動作例）
次に、図２を用いて、ホスト３０からのライト要求を受信した場合の、メモリシステム１のデータ処理の動作例について説明する。図２は、実施形態にかかるメモリシステム１のデータ処理の動作の一例をブロック図で示すフロー図である。ホスト３０は、データの検証に必要な共有鍵を予めメモリシステム１に送付済みであるものとする。
【００２８】
図２（ａ）に示すように、ホスト３０は、メモリシステム１に対してライト要求を発行するとともに、ユーザデータを複数のフレームに分けて転送する。図２の例では、所定サイズの８つのデータＤ１〜Ｄ８のそれぞれを１つのフレームとして、ユーザデータであるデータＤ１〜Ｄ８が転送されたところを示している。８つのデータＤ１〜Ｄ８のうち８番目のデータＤ８には、ホスト３０によりハッシュ演算されたＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）値が付与されている。ハッシュ演算とは、或るデータからそのデータを要約する数列を生成する演算手法である。ＭＡＣ値は、共有鍵を用いて各データＤ１〜Ｄ８に対してハッシュ演算することで得られる。このように、ここでのユーザデータとは、８つのフレームを１セットとするデータのセットであって、１回のライト要求でホスト３０から指定されるサイズ且つ１つのＭＡＣ値で保護されるサイズのデータのセットを指すこととする。
【００２９】
メモリシステム１に転送されたデータＤ１〜Ｄ８は、例えば、データバッファ１４の格納領域１４ａに一時格納される。格納領域１４ａに一時格納されたデータＤ１〜Ｄ８は、転送経路制御部１７により取得される。
【００３０】
図２（ｂ）に示すように、転送経路制御部１７が取得したデータＤ１〜Ｄ８は、転送経路制御部１７により演算部１６に転送される。演算部１６に転送されたデータＤ１〜Ｄ８は、演算部１６により共有鍵１６ａを用いてハッシュ演算され、ホスト３０とは独立してＭＡＣ値が導き出される。演算部１６は、自身が求めたＭＡＣ値と、ホスト３０により求められデータＤ８に付与されているＭＡＣ値とを比較する。それら２つのＭＡＣ値が一致すれば、ホスト３０から転送されたデータＤ１〜Ｄ８は改変等を受けていないと言え、演算部１６はデータＤ１〜Ｄ８の正当性を認証する。それら２つのＭＡＣ値が一致しなければ、データＤ１〜Ｄ８は不当な改変を受けた恐れがあり、演算部１６はデータＤ１〜Ｄ８の正当性を否認する。なお、演算部１６が求めたＭＡＣ値を、制御部１１がホスト３０により求められたＭＡＣ値と比較して正当性の認証または否認をするようにしてもよい。
【００３１】
ハッシュ演算されたデータＤ１〜Ｄ８は、例えば、データバッファ１４の格納領域１４ｂに一時格納される。
【００３２】
転送経路制御部１７が取得したデータＤ１〜Ｄ８は、また、転送経路制御部１７からメモリＩ／Ｆ１３を介してＮＡＮＤメモリ２０の内部ＲＡＭ２１へと転送され一時格納される。この動作は、メモリコントローラ１０が、格納領域１４ａに一時格納されたデータＤ１〜Ｄ８のためのデータインコマンドをＮＡＮＤメモリ２０に対して発行することで実行される。データインコマンドは、ＮＡＮＤメモリ２０に所定のデータを転送するコマンドで、このＮＡＮＤメモリ２０へのデータ転送はメモリセルアレイ２２へのプログラムを伴わない。メモリセルアレイ２２へのプログラムとは、内部ＲＡＭ２１のデータをメモリセルアレイ２２に不揮発に記憶させることである。内部ＲＡＭ２１へと一時格納されたデータＤ１〜Ｄ８は、後述するように、演算部１６のハッシュ演算により正当性が認証されるのを待って、適宜、メモリセルアレイ２２にプログラムされる。
【００３３】
ここで、格納領域１４ａから転送経路制御部１７を介して演算部１６へとデータＤ１〜Ｄ８が転送されるまでの時間、演算部１６におけるハッシュ演算に要する時間、および演算部１６からハッシュ演算済みのデータＤ１〜Ｄ８を格納領域１４ｂへと転送する時間を足し合わせた時間を時間Ｔ１とする。
【００３４】
また、格納領域１４ａから転送経路制御部１７を介してＮＡＮＤメモリ２０の内部ＲＡＭ２１へとデータＤ１〜Ｄ８が転送されるまでの時間を時間Ｔ２とする。このとき、格納領域１４ａから内部ＲＡＭ２１へのデータＤ１〜Ｄ８転送は時間Ｔ１内に行われる。つまり、時間Ｔ２＜時間Ｔ１であって、図２（ｂ）における時間Ｔ２，Ｔ１の矢印の長短がそのまま時間の長短を表さないことに留意されたい。
【００３５】
図２（ｃ）に示すように、演算部１６によってユーザデータであるデータＤ１〜Ｄ８の正当性が認証された場合は、メモリコントローラ１０は、適宜、ＮＡＮＤメモリ２０に対して正当性が認証されたユーザデータのためのプログラムコマンドを発行する。メモリコントローラ１０からのプログラムコマンドは、ＮＡＮＤメモリ２０に、内部ＲＡＭ２１に一時格納されたユーザデータを、所定のメモリセルアレイ２２内の領域にプログラムさせる（不揮発に記憶させる）コマンドである。これにより、ホスト３０からのライト要求が実行される。なお、ここで、データＤ１〜Ｄ８を含むユーザデータ１つのサイズは、ＮＡＮＤメモリ２０の内部ＲＡＭ２１に格納可能なサイズであることが想定されている。
【００３６】
演算部１６によってユーザデータであるデータＤ１〜Ｄ８の正当性が否認された場合は、メモリコントローラ１０は、ＮＡＮＤメモリ２０に対して正当性が否認されたユーザデータのためのリセットコマンドを発行する。メモリコントローラ１０からのリセットコマンドは、ＮＡＮＤメモリ２０に、内部ＲＡＭ２１に一時格納されたユーザデータをプログラムすることなく消去させるコマンドである。これにより、ホスト３０からのライト要求はキャンセルされる。また、これにより、ＮＡＮＤメモリ２０は、次のコマンドを受け付け可能なコマンド待ち受け状態に戻る。そして、メモリコントローラ１０には、ＭＡＣ値が不一致であったという情報が保持される。メモリコントローラは、ホスト３０からライト結果の確認要求を受けると、ホスト３０にエラー通知を送信する。または、ホスト３０からライト結果の確認要求が無い場合であっても、メモリコントローラが、適宜、ホスト３０にエラー通知を送信してもよい。
【００３７】
以上により、メモリシステム１のデータ処理の動作が終了する。
【００３８】
（メモリシステムの処理例）
次に、図３を用いて、ホスト３０からのライト要求を受信した場合の、メモリシステム１のデータの処理例について説明する。図３は、実施形態にかかるメモリシステム１のデータ処理の手順の一例を示すフロー図である。図３においても、ホスト３０は、データの検証に必要な共有鍵を予めメモリシステム１に送付済みであるものとする。
【００３９】
メモリシステム１がホスト３０からライト要求とライトデータとを受信すると（ステップＳ１０）、メモリコントローラ１０の制御部１１は、データバッファ１４のいずれかの格納領域１４ａ〜１４ｃにデータを一時格納させる。これ以降、ホスト３０からのデータの格納先を格納領域１４ｘともいう。また、演算部１６によりハッシュ演算済みのデータは、いずれかの格納領域１４ａ〜１４ｃに一時格納される。これ以降、演算済みのデータの格納先を格納領域１４ｙともいう。
【００４０】
転送経路制御部１７は、格納領域１４ｘのデータをＮＡＮＤメモリ２０の内部ＲＡＭ２１へと転送する。また、転送経路制御部１７は、格納領域１４ｘに格納されたデータを演算部１６に転送する。このように、転送経路制御部１７は、ホスト３０からのデータを内部ＲＡＭ２１及び演算部１６へと振り分けていく（ステップＳ２０）。
【００４１】
より具体的には、メモリコントローラ１０は、順次、ホスト３０からデータを受け取り、格納領域１４ｘに格納し、転送経路制御部１７により演算部１６へと転送させる。演算部１６は、転送されたデータに対して、順次、ハッシュ演算を実行し、ＭＡＣ値を求める。これと並行して、制御部１１は、データインコマンドを発行し、格納領域１４ｘに格納されたデータを、転送経路制御部１７から、順次、メモリＩ／Ｆ１３を介してＮＡＮＤメモリ２０の内部ＲＡＭ２１へと転送させる（ステップＳ３０）。このとき、ホスト３０からのデータが格納される格納領域１４ｘと、演算済みデータが格納される格納領域１４ｙとは、異なる格納領域１４ａ〜１４ｃであることが好ましい。これにより、いっそうデータ転送の高速化を図ることができる。また、ＲＰＭＢ規格に基づくデータ処理とメモリシステム１の仕様に基づくデータ処理とで、データの格納先を切り分けることができる。
【００４２】
演算部１６は、ホスト３０が演算したＭＡＣ値と得られたＭＡＣ値とを比較し、データの正当性を認証するか否かを判定する（ステップＳ４０）。
【００４３】
双方のＭＡＣ値が一致した場合は、演算部１６はデータの正当性を認証する（ステップＳ４０：Ｙｅｓ）。制御部１１は、ＮＡＮＤメモリ２０に対してプログラムコマンドを発行し（ステップＳ５１）、内部ＲＡＭ２１に転送されたデータを所定のメモリセルアレイ２２内の領域にプログラムさせる（ステップＳ６１）。
【００４４】
双方のＭＡＣ値が一致しない場合は、演算部１６はデータの正当性を否認する（ステップＳ４０：Ｎｏ）。制御部１１は、ＮＡＮＤメモリ２０に対してリセットコマンドを発行し（ステップＳ５２）、内部ＲＡＭ２１に転送されたデータを消去させる（ステップＳ６２）。これにより、ＮＡＮＤメモリ２０はコマンド待ち受け状態に戻る。メモリコントローラ１０は、ホスト３０からライト結果の確認要求があった時点で、または、メモリコントローラ１０が適宜、ホスト３０にエラー通知を行う。
【００４５】
以上により、メモリシステム１のデータ処理が終了する。
【００４６】
（比較例）
次に、図４を用いて、比較例のメモリシステムについて説明する。図４は、実施形態にかかるメモリシステム１の転送方式と比較例にかかるメモリシステムの転送方式とを比較する図である。
【００４７】
比較例のメモリシステムにおいては、ホストからの転送データは、データバッファの格納領域、演算部、他の格納領域、ＮＡＮＤメモリの内部ＲＡＭへと順次、転送される。つまり、データバッファの格納領域から演算部へと転送されたデータは、そこでハッシュ演算される。そして、導き出されたＭＡＣ値がホストからのＭＡＣ値と一致した場合のみ、他の格納領域を経てＮＡＮＤメモリの内部ＲＡＭへと転送される。
【００４８】
ホストからは、通常、複数フレームのデータが転送されてくる。ハッシュ演算はフレームごとに行われ、その結果を次のフレームの演算に使用するため、演算部での処理はシリアル処理となる。このため、演算部での処理が終了するまで長時間を要する。つまり、演算部での処理時間を含む時間Ｔ１’に、ＮＡＮＤメモリの内部ＲＡＭへの転送時間である時間Ｔ２’がそのまま加算されてしまう。このため、データの正当性を検証する演算を伴う書き込み処理には長い時間が掛かってしまう。
【００４９】
実施形態のメモリシステム１においては、演算部１６でのデータ処理がＮＡＮＤメモリ２０の内部ＲＡＭ２１へのデータ転送と並行して行われる。つまり、時間Ｔ１内に時間Ｔ２の動作が行われる。これにより、実施形態における時間（Ｔ１（Ｔ２））は、比較例における時間（Ｔ１’＋Ｔ２’）よりも大幅に短縮される。よって、実施形態のメモリシステム１においては、データの正当性を検証する演算を伴う書き込み処理の高速化を図ることができる。
【００５０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５１】
１…メモリシステム、１０…メモリコントローラ、１１…制御部、１２…ＲＡＭ、１３…メモリＩ／Ｆ、１４…データバッファ、１５…ホストＩ／Ｆ、１６…演算部、１７…転送経路制御部、２０…ＮＡＮＤ型フラッシュメモリ、２１…内部ＲＡＭ、３０…ホスト。
【図１】
2020021385.tif 000003
【図２】
2020021385.tif 000004
【図３】
2020021385.tif 000005
【図４】
2020021385.tif 000006