(57)【要約】【課題】動作信頼性を向上出来るコントローラを提供すること。【解決手段】実施形態のコントローラ２０は、第１サイズのデータを半導体メモリ30から読み出す第１動作モードと、前記第１サイズよりも小さい第２サイズのデータを読み出す第２動作モードとを有する。コントローラ20は、前記半導体メモリとの間で信号を送受信する第１インターフェイス27と、前記第１インターフェイスを介して受信したデータを保持可能なバッファメモリ25とを備える。前記バッファメモリ25は、前記第１動作モードにおいて前記半導体メモリから読み出されたデータを保持する第１領域A1と、前記第２動作モードにおいて前記半導体メモリから読み出されたデータを保持する第２領域A2とを備える。【選択図】図３
2013205944.tif 000002
【特許請求の範囲】
【請求項１】
第１サイズのデータを半導体メモリから読み出す第１動作モードと、前記第１サイズよりも小さい第２サイズのデータを読み出す第２動作モードとを有するコントローラであって、
前記半導体メモリとの間で信号を送受信する第１インターフェイスと、
前記第１インターフェイスを介して受信したデータを保持可能なバッファメモリと、
予め定められたパターンデータに対するアクセス要求を受信した際に、前記半導体メモリに対する読み出し動作を実行することなく所定のデータを前記バッファメモリに格納し、これをアクセス要求に対する応答として出力する制御部と
を具備し、前記バッファメモリは、前記第１動作モードにおいて前記半導体メモリから読み出されたデータを保持する第１領域と、前記第２動作モードにおいて前記半導体メモリから読み出されたデータを保持する第２領域とを備え、
前記第２領域はＬＲＵ方式で管理され、管理単位は前記半導体メモリのページ長よりも小さく、
前記バッファメモリにおいて、前記第１、第２領域の占めるサイズの比率は任意に設定可能であり、
読み出し要求に対するデータは、前記第１動作モードにおいて前記第１領域に保持されている場合には、前記半導体メモリから読み出されることなく前記第１領域から出力され、
前記第２動作モードにおいて前記第１または第２領域に保持されている場合には、前記半導体メモリから読み出されることなく前記第１または第２領域から出力される
ことを特徴とするコントローラ。
【請求項２】
第１サイズのデータを半導体メモリから読み出す第１動作モードと、前記第１サイズよりも小さい第２サイズのデータを読み出す第２動作モードとを有するコントローラであって、
前記半導体メモリとの間で信号を送受信する第１インターフェイスと、
前記第１インターフェイスを介して受信したデータを保持可能なバッファメモリと
を具備し、前記バッファメモリは、前記第１動作モードにおいて前記半導体メモリから読み出されたデータを保持する第１領域と、前記第２動作モードにおいて前記半導体メモリから読み出されたデータを保持する第２領域とを備え、
読み出し要求に対するデータは、前記第１動作モードにおいて前記第１領域に保持されている場合には、前記半導体メモリから読み出されることなく前記第１領域から出力され、
前記第２動作モードにおいて前記第１または第２領域に保持されている場合には、前記半導体メモリから読み出されることなく前記第１または第２領域から出力される
ことを特徴とするコントローラ。
【請求項３】
第１コマンドに応答して半導体メモリからデータを読み出す第１動作モードと、前記第１コマンドと異なる第２コマンドに応答して前記半導体メモリからデータを読み出す第２動作モードとを有するコントローラであって、
前記半導体メモリとの間で信号を送受信する第１インターフェイスと、
前記第１インターフェイスを介して受信したデータを保持可能なバッファメモリと
を具備し、前記バッファメモリは、前記第１動作モードにおいて前記半導体メモリから読み出されたデータを保持する第１領域と、前記第２動作モードにおいて前記半導体メモリから読み出されたデータを保持する第２領域とを備え、
読み出し要求に対するデータは、前記第１動作モードにおいて前記第１領域に保持されている場合には、前記半導体メモリから読み出されることなく前記第１領域から出力され、
前記第２動作モードにおいて前記第１または第２領域に保持されている場合には、前記半導体メモリから読み出されることなく前記第１または第２領域から出力される
ことを特徴とするコントローラ。
【請求項４】
前記第２領域はＬＲＵ方式で管理され、管理単位は前記半導体メモリのページ長よりも小さい
ことを特徴とする請求項２または３記載のコントローラ。
【請求項５】
前記バッファメモリにおいて、前記第１、第２領域の占めるサイズの比率は任意に設定可能である
ことを特徴とする請求項２乃至４いずれか１項記載のコントローラ。
【請求項６】
予め定められたパターンデータに対するアクセス要求を受信した際に、前記半導体メモリに対する読み出し動作を実行することなく所定のデータを前記バッファメモリに格納し、これをアクセス要求に対する応答として出力する制御部を更に備える
ことを特徴とする請求項２乃至５いずれか１項記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はコントローラに関する。
【背景技術】
【０００２】
従来、ストレージデバイスとしてＮＡＮＤ型フラッシュメモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−９２５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
動作信頼性を向上出来るコントローラを提供する。
【課題を解決するための手段】
【０００５】
実施形態のコントローラは、第１サイズのデータを半導体メモリから読み出す第１動作モードと、第１サイズよりも小さい第２サイズのデータを読み出す第２動作モードとを有する。コントローラは、半導体メモリとの間で信号を送受信する第１インターフェイスと、第１インターフェイスを介して受信したデータを保持可能なバッファメモリとを備える。バッファメモリは、第１動作モードにおいて半導体メモリから読み出されたデータを保持する第１領域と、第２動作モードにおいて半導体メモリから読み出されたデータを保持する第２領域とを備える。読み出し要求に対するデータは、第１動作モードにおいて第１領域に保持されている場合には、半導体メモリから読み出されることなく第１領域から出力され、第２動作モードにおいて第１または第２領域に保持されている場合には、半導体メモリから読み出されることなく第１または第２領域から出力される。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るメモリシステムのブロック図。
【図２】第１実施形態に係るＮＡＮＤ型フラッシュメモリのブロック図。
【図３】第１実施形態に係るメモリコントローラ及びＮＡＮＤ型フラッシュメモリのブロック図。
【図４】第１実施形態に係るホストとメモリコントローラとの間のコマンドとデータの流れを示すタイミングチャート。
【図５】第１実施形態に係るホストとメモリコントローラとの間のコマンドとデータの流れを示すタイミングチャート。
【図６】第１実施形態に係るホストとメモリコントローラとの間のコマンドとデータの流れを示すタイミングチャート。
【図７】第１実施形態に係るメモリコントローラの動作を示すフローチャート。
【図８】第１実施形態に係るメモリコントローラの動作を示すフローチャート。
【図９】第１実施形態に係るメモリコントローラの動作を示すフローチャート。
【図１０】メモリセルアレイの回路図。
【図１１】メモリセルの閾値分布を示すグラフ。
【図１２】第２実施形態に係るメモリコントローラの動作を示すフローチャート。
【図１３】第２実施形態に係るメモリシステムのブロック図。
【図１４】第２実施形態に係るメモリシステムのブロック図。
【図１５】第２実施形態に係るメモリシステムのブロック図。
【図１６】第２実施形態に係るメモリシステムのブロック図。
【図１７】第２実施形態に係るメモリコントローラの動作を示すフローチャート。
【図１８】第２実施形態に係るメモリコントローラのブロック図。
【図１９】第２実施形態に係るメモリシステムのブロック図。
【図２０】第２実施形態に係るメモリシステムのブロック図。
【図２１】第２実施形態に係るメモリシステムのブロック図。
【図２２】第３実施形態に係る半導体装置のブロック図。
【図２３】第３実施形態に係るメモリコントローラの動作を示すフローチャート。
【図２４】第３実施形態に係る消去管理テーブルのブロック図。
【図２５】第３実施形態に係るメモリシステムのブロック図。
【図２６】第３実施形態の変形例に係るメモリコントローラの動作を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
１．第１実施形態  
第１実施形態に係るメモリコントローラについて説明する。以下では、ＮＡＮＤ型フラッシュメモリを制御するメモリコントローラを例に挙げて説明する。
【０００９】
１．１  メモリシステムの構成について  
１．１．１  メモリシステムの全体構成について  
まず、本実施形態に係るメモリコントローラを含むメモリシステムの構成について説明する。
【００１０】
図示するようにメモリシステム１は、ホスト機器１０、メモリコントローラ２０、及びＮＡＮＤ型フラッシュメモリ３０を備えている。
【００１１】
ホスト機器１０は、メモリコントローラ２０に対して命令を与えることで、ＮＡＮＤ型フラッシュメモリ３０にアクセスする。より具体的には、ホスト機器１０は、メモリコントローラ２０を介して、ＮＡＮＤ型フラッシュメモリ３０にデータを書き込み、ＮＡＮＤ型フラッシュメモリ３０からデータを読み出し、またはＮＡＮＤ型フラッシュメモリ３０のデータを消去する。ホスト機器１０は、例えばパーソナルコンピュータ、デジタルカメラ、または携帯電話等である。
【００１２】
メモリコントローラ２０は、ホスト機器１０からの命令に応答して、ＮＡＮＤ型フラッシュメモリ３０に対して読み出し、書き込み、消去を命令する。また、ＮＡＮＤ型フラッシュメモリ３０のメモリ空間を管理する。
【００１３】
ＮＡＮＤ型フラッシュメモリ３０は、不揮発にデータを保持する。
【００１４】
メモリコントローラ２０とＮＡＮＤ型フラッシュメモリ３０は、例えば同一の半導体装置を構成しても良く、その例としてはＳＤＴＭカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。
【００１５】
１．１．２  ＮＡＮＤ型フラッシュメモリ３０の構成について  
次に、上記ＮＡＮＤ型フラッシュメモリ３０の構成について、引き続き図１を参照して説明する。図示するようにＮＡＮＤ型フラッシュメモリ３０は、複数のメモリチップ３１（３１−０、３１−１）を備えている。メモリチップ３１の数は２つ以上であっても良いし１つだけであっても良い。各メモリチップ３１は、複数の不揮発性のメモリセルが配列され、データを記憶するメモリセルアレイと、メモリセルアレイへの書き込みデータ及びメモリセルアレイからの読み出しデータを一時的に保持するページバッファとを備えている。
【００１６】
図２は、メモリチップ３１の詳細を示すブロック図である。図示するようにメモリセルアレイ３２は、複数のＮＡＮＤセル３４を備えている。ＮＡＮＤセル３４の各々は、例えば３２個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ３１）と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタＭＴの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。また、電荷蓄積層は絶縁物を材料に用いて形成されても良い。メモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有しており、選択トランジスタＳＴ１、ＳＴ２間にその電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１７】
同一行にあるメモリセルトランジスタＭＴの制御ゲートはワード線ＷＬ（ＷＬ０〜ＷＬ３１）のいずれかに共通接続され、同一行にある選択トランジスタＳＴ１、ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。更に、選択トランジスタＳＴ１のドレインはビット線ＢＬ（ＢＬ０〜ＢＬｎ（ｎは２以上の自然数））のいずれかに接続され、選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。
【００１８】
以上の構成において、ワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳを共通にする複数のＮＡＮＤセル３４によって、１つのブロックと呼ばれる単位が形成される。同一のブロック内のメモリセルトランジスタＭＴは、一括してデータが消去される。更に、同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには、一括してデータが書き込まれ、この単位はページと呼ばれる。
【００１９】
ページバッファ３３は、データの読み出し時には、ページ単位で読み出されたデータを一時的に保持する。またデータの書き込み時には、ページ単位の書き込みデータを一時的に保持し、この書き込みデータをビット線ＢＬに転送する。
【００２０】
１．１．３  メモリコントローラ２０の構成について  
次に、上記メモリコントローラ２０の構成について、再度図１を用いて説明する。図示するようにメモリコントローラ２０は、ホストインターフェイス回路２１、内蔵メモリ（ＲＡＭ）２２、プロセッサ（ＣＰＵ）２３、及びＮＡＮＤ関連モジュール２４を備えている。ＮＡＮＤ関連モジュール２４はＮＡＮＤ型フラッシュメモリ３０を制御するためのモジュールであり、バッファメモリ２５、ＥＣＣ（Error Checking and Correcting）部２６、及びＮＡＮＤインターフェイス回路２７を備えている。
【００２１】
ホストインターフェイス回路２１は、ホストインターフェイスを介してホスト機器１０と接続され、ホスト機器１０との通信を司る。そして、ホスト機器１０から受信した命令及びデータを、それぞれＣＰＵ２３及びバッファメモリ２５に転送する。またＣＰＵ２３の命令に応答して、バッファメモリ２５内のデータをホスト機器１０へ転送する。
【００２２】
ＮＡＮＤインターフェイス回路２７は、ＮＡＮＤインターフェイスを介してＮＡＮＤ型フラッシュメモリ３０と接続され、ＮＡＮＤ型フラッシュメモリ３０との通信を司る。そして、ＣＰＵ２３から受信した命令をＮＡＮＤ型フラッシュメモリ３０に転送し、また書き込み時にはバッファメモリ２５内の書き込みデータをＮＡＮＤ型フラッシュメモリ３０へ転送する。更に読み出し時には、ＮＡＮＤ型フラッシュメモリ３０から読み出されたデータをバッファメモリ２５へ転送する。
【００２３】
ＥＣＣ部２６は、データのエラー検出及びエラー訂正機能を有する。例えばデータの書き込み時には、書き込みデータに基づいてパリティを生成する。生成されたパリティは、書き込みデータと共にＮＡＮＤ型フラッシュメモリ３０に書き込まれる。他方、データの読み出し時には、読み出しデータに基づいてシンドロームを生成し、エラーの検出・訂正を行う。
【００２４】
ＣＰＵ２３は、メモリコントローラ２０全体の動作を制御する。例えばホスト機器１０から読み出し命令を受信した際には、それに従ってＮＡＮＤインターフェイスに基づく読み出し命令を発行する。書き込み及び消去の際も同様である。またＣＰＵ２３は、ウェアレベリング等、ＮＡＮＤ型フラッシュメモリ３０を管理するための様々な処理を実行する。
【００２５】
内蔵メモリ２２は、例えばＤＲＡＭ等の半導体メモリであり、ＣＰＵ２３の作業領域として使用される。そして内蔵メモリ２２は、ＮＡＮＤ型フラッシュメモリを管理するためのファームウェアや、後述する管理テーブル２８等を保持する。
【００２６】
１．１．４  バッファメモリ２５の管理について  
次に、上記メモリコントローラ２０におけるバッファメモリ２５の管理について説明する。図３は、メモリコントローラ２０のバッファメモリ２５及び管理テーブル２８、並びにＮＡＮＤ型フラッシュメモリ３０を模式的に示している。以下では、ＮＡＮＤ型フラッシュメモリ３０のページサイズを２Ｋバイトと仮定し、またホスト機器との間のデータ転送単位を５１２バイトと仮定する。
【００２７】
バッファメモリ２５は、例えば１６個のエントリ（ＥＮＴ０〜ＥＮＴ１５）を有しており、１エントリのサイズは例えば５１２バイトである。エントリ数及びエントリサイズはこれに限定されるものでは無い。またバッファメモリ２５は、大きく２つのバンクに分割されている。一方のバンクＡ１はＦＩＦＯ（First In First Out）方式で管理され、他方のバンクＡ２はＬＲＵ（Least Recently used）方式で管理される。
【００２８】
管理テーブル２８は、バッファメモリ２５の各エントリ及びページバッファ３３に保持されるデータとアドレスとの関係を保持する。すなわち、管理テーブル２８は、例えば１７個のエントリ（ＥＮＴ０〜ＥＮＴ１６）を有する。これらのエントリは、大きくは３つの領域Ｂ１〜Ｂ３に分けられる。領域Ｂ１のエントリＥＮＴ０〜ＥＮＴ７は、バッファメモリ２５のエントリＥＮＴ０〜ＥＮＴ７（バンクＡ１）に対応し、対応するバッファメモリ２５のエントリ内のデータのアドレスを保持する。また領域Ｂ２のエントリＥＮＴ８〜ＥＮＴ１５は、バッファメモリ２５のエントリＥＮＴ８〜ＥＮＴ１５（バンクＡ２）に対応し、対応するバッファメモリ２５のエントリ内のデータのアドレス、及び当該データの参照履歴を保持する。領域Ｂ３のエントリＥＮＴ１６はページバッファ３３に対応し、ページバッファ３３内のデータのアドレスを保持する。
【００２９】
なお、バッファメモリ２５におけるバンクＡ１、Ａ２のサイズは、例えばＣＰＵ２３によって任意に設定可能である。
【００３０】
１．２  メモリシステム１の動作について  
次に、上記構成のメモリシステム１の、特に読み出し動作時におけるメモリコントローラ２０の動作について説明する。
【００３１】
メモリコントローラ２０は、ホスト機器１０から読み出しコマンド及びアドレスを受信することにより、読み出し動作を開始する。メモリコントローラ２０は２つの動作モードを有し、読み出しコマンドの種類及び／または読み出しデータサイズに基づいて、いずれかの動作モードで動作する。この２つの動作モードを、以下では「シーケンシャルリード」及び「ランダムリード」と呼ぶことにする。
【００３２】
１．２．１  読み出しコマンドについて  
まず、ホスト機器１０からメモリコントローラ２０に与えられる読み出しコマンドについて、図４乃至図６を用いて説明する。図４乃至図６はそれぞれ、ホスト機器１０からメモリコントローラ２０に転送されるコマンドと、それに応答してメモリコントローラ２０からホスト機器１０に転送されるデータとを示すタイミングチャートであり、横軸は時間を示す。
【００３３】
＜第１のコマンド例＞  
まず第１のコマンド例について図４を参照して説明する。図示するように、ホスト機器１０が第１コマンドＣＭＤ１を発行した場合、メモリコントローラ２０は、例えば５１２バイト単位のデータＤ１、Ｄ２、Ｄ３…を連続してホスト機器１０へ転送する。データＤ１、Ｄ２、Ｄ３…はそれぞれ、ホスト機器１０とメモリコントローラ２０との間でのデータの授受の最小単位であり、前述の通り本明細書の例では５１２バイトである。そしてメモリコントローラ２０は、ホスト機器１０からストップコマンドを受信するまで、アドレスが連続するデータをホスト機器１０へ出力し続ける。つまりホスト機器１０は、サイズの大きいデータを読み出す際に第１コマンドＣＭＤ１を発行する。
【００３４】
＜第２のコマンド例＞  
次に第２のコマンド例について図５を参照して説明する。図示するように、ホスト機器１０が第２コマンドＣＭＤ２を発行した場合、メモリコントローラ２０は、５１２バイトのデータＤ１のみを読み出し、これをホスト機器１０へ転送する。つまりホスト機器１０は、サイズの小さいデータを読み出す際に第２コマンドＣＭＤ１を発行する。
【００３５】
＜第３のコマンド例＞  
次に第３のコマンド例について図６を参照して説明する。図示するようにホスト機器１０は、第３コマンドＣＭＤ３を発行する際、同時に読み出しデータサイズを指定することが出来る。この場合、メモリコントローラ２０は、指定されたサイズのデータＤ１〜Ｄ４を、５１２バイト単位で順次ホスト機器１０へ転送する（図６の例では２Ｋバイト）。
【００３６】
１．２．２  動作モードの選択について  
次に、メモリコントローラ２０による動作モードの選択方法について、図７を用いて説明する。図７は、メモリコントローラ２０の動作を示すフローチャートである。
【００３７】
図示するように、メモリコントローラ２０は、まずホストインターフェイス回路２１において、ホスト機器１０から読み出しコマンドを受信する（ステップＳ１０）。この読み出しコマンドは、図４乃至図６で説明した第１〜第３コマンドＣＭＤ１〜ＣＭＤ３のいずれかである。
【００３８】
ホストインターフェイス回路２１は、受信した読み出しコマンドをＣＰＵ２３に転送する。するとＣＰＵ２３は、受信した読み出しコマンドの種類を判別する。そして、受信した読み出しコマンドが第１コマンドＣＭＤ１であれば（ステップＳ１１、ＹＥＳ）、ＣＰＵ２３はシーケンシャルリードを行うことを決定する（ステップＳ１２）。第２コマンドＣＭＤ２であれば（ステップＳ１１、ＮＯ、ステップＳ１３、ＹＥＳ）、ランダムリードを行うことを決定する（ステップＳ１４）。第３コマンドＣＭＤ３であった場合には（ステップＳ１１、ＮＯ、ステップＳ１３、ＮＯ）、ＣＰＵ２３は、第３コマンドＣＭＤ３と共に受信した読み出しデータサイズを判定する（ステップＳ１５）。
【００３９】
データサイズが予め定められた所定の閾値未満である場合（ステップＳ１５、ＹＥＳ）、ＣＰＵ２３はランダムリードを行う（ステップＳ１４）。他方で、所定の閾値以上である場合（ステップＳ１５、ＮＯ）、ＣＰＵ２３はシーケンシャルリードを行う（ステップＳ１２）。本実施形態においてこの所定の閾値は、例えばページサイズ（２Ｋバイト）である。つまり、ページサイズ未満であればランダムリードを行い、ページサイズ以上であればシーケンシャルリードを行う。
【００４０】
１．２．３  シーケンシャルリードについて  
次に、上記シーケンシャルリードについて、図８を参照して説明する。図８は、シーケンシャルリード時におけるメモリコントローラ２０の動作を示すフローチャートである。
【００４１】
図示するように、まずＣＰＵ２３は、受信したアドレスに基づいて管理テーブル２８をサーチする（ステップＳ２０）。この際、サーチ対象となる領域は、図３で説明した領域Ｂ１及びＢ３である。以下では、領域Ｂ１、Ｂ２、Ｂ３をそれぞれシーケンシャル領域Ｂ１、ランダム領域Ｂ２、及びページバッファ領域Ｂ３と呼ぶことにする。またこれに対応して、バッファメモリ２５内のバンクＡ１及びＡ２をそれぞれシーケンシャル領域Ａ１及びランダム領域Ａ２と呼ぶことにする。
【００４２】
サーチの結果、受信したアドレスがシーケンシャル領域Ｂ１のいずれかのエントリに保持されていた場合、すなわち、読み出すべきデータが、バッファメモリ２５のシーケンシャル領域Ａ１内に保持されている場合（ステップＳ２１、ＹＥＳ）、ＣＰＵ２３は、シーケンシャル領域Ａ１内の対応データを、ホストインターフェイス回路２１を介してホスト機器１０へ転送する（ステップＳ２２）。この場合、管理テーブル２８は更新されない。
【００４３】
サーチの結果、受信したアドレスがページバッファ領域Ｂ３のいずれかのエントリに保持されていた場合、すなわち、読み出すべきデータがページバッファ３３内に保持されている場合（ステップＳ２１、ＮＯ、ステップＳ２４、ＹＥＳ）、ＣＰＵ２３は、ページバッファ３３内のデータをバッファメモリ２５のシーケンシャル領域Ａ１に転送する（ステップＳ２５）。そして転送したデータを、ホストインターフェイス回路２１を介してホスト機器１０へ転送する（ステップＳ２２）。更にＣＰＵ２３は、管理テーブル２８を更新する（ステップＳ２３）。すなわち、ページバッファ３３からデータが転送されたシーケンシャル領域Ａ１に対応する管理テーブル２８のエントリに、受信アドレスを格納する。
【００４４】
サーチの結果、受信したアドレスがシーケンシャル領域Ｂ１及びページバッファ領域Ｂ３のいずれかのエントリにも保持されていなかった場合、すなわち、読み出すべきデータがシーケンシャル領域Ａ１及びページバッファ３３のいずれにも保持されていない場合（ステップＳ２１、ＮＯ、ステップＳ２４、ＮＯ）、ＣＰＵ２３は、ＮＡＮＤ型フラッシュメモリ３０に対して、対応データの読み出しを命令する。これによりＮＡＮＤ型フラッシュメモリ３０では、対応データを含むページデータがページバッファ３３に読み出される（ステップＳ２６）。その後、ＣＰＵ２３はステップＳ２５、Ｓ２２、Ｓ２３の処理を実行する。
【００４５】
以上のように、シーケンシャルリードでは、ランダム領域Ｂ２は、管理テーブル２８のサーチ対象領域とはならない。更に、バッファメモリ２５において、ランダム領域Ａ２は使用されない。
【００４６】
１．２．４  ランダムリードについて  
次に、ランダムリードについて、図９を参照して説明する。図９は、ランダムリード時におけるメモリコントローラ２０の動作を示すフローチャートである。
【００４７】
図示するように、まずＣＰＵ２３は、受信したアドレスに基づいて管理テーブル２８をサーチする（ステップＳ３０）。この際、サーチ対象となる領域は、シーケンシャルリードと異なり、シーケンシャル領域Ｂ１、ランダム領域Ｂ２、及びページバッファ領域Ｂ３の全領域である。
【００４８】
サーチの結果、受信したアドレスがシーケンシャル領域Ｂ１及びランダム領域Ｂ２のいずれかのエントリに保持されていた場合、すなわち、読み出すべきデータが、バッファメモリ２５内に保持されている場合（ステップＳ３１、ＹＥＳ）、ＣＰＵ２３は、バッファメモリ２５内の対応データを、ホストインターフェイス回路２１を介してホスト機器１０へ転送する（ステップＳ３２）。この際、読み出すべきデータがシーケンシャル領域Ａ１内にあった場合には、ＣＰＵ２３は管理テーブル２８を更新しない。逆にランダム領域Ａ２内にあった場合には、ＣＰＵ２３は、管理テーブル２８の対応するエントリにおいて、当該データの参照履歴を更新する。すなわち、当該データが、ランダム領域Ａ２内において最も直近でアクセスされたデータであることを記録する。
【００４９】
サーチの結果、受信したアドレスがページバッファ領域Ｂ３のいずれかのエントリに保持されていた場合、すなわち、読み出すべきデータがページバッファ３３内に保持されている場合（ステップＳ３１、ＮＯ、ステップＳ３４、ＹＥＳ）、ＣＰＵ２３は、ページバッファ３３内の対応データをバッファメモリ２５のランダム領域Ａ２に転送する（ステップＳ３５）。この際、転送先となるエントリは、管理テーブル２８のランダム領域Ｂ２において最も参照履歴の古いエントリである。そして転送したデータを、ホストインターフェイス回路２１を介してホスト機器１０へ転送する（ステップＳ３２）。更にＣＰＵ２３は、管理テーブル２８を更新する（ステップＳ３３）。すなわち、ページバッファ３３からデータが転送されたランダム領域Ａ２に対応する管理テーブル２８のエントリに、受信アドレスを格納する。更に、当該エントリにおける参照履歴を更新する。
【００５０】
サーチの結果、受信したアドレスがシーケンシャル領域Ｂ１、ランダム領域Ｂ２、及びページバッファ領域Ｂ３のいずれかのエントリにも保持されていなかった場合、すなわち、読み出すべきデータがバッファメモリ２５及びページバッファ３３のいずれにも保持されていない場合（ステップＳ３１、ＮＯ、ステップＳ３４、ＮＯ）、ＣＰＵ２３は、ＮＡＮＤ型フラッシュメモリ３０に対して、対応データの読み出しを命令する。これによりＮＡＮＤ型フラッシュメモリ３０では、対応データを含むページデータがページバッファ３３に読み出される（ステップＳ３６）。その後、ＣＰＵ２３はステップＳ３５、Ｓ３２、Ｓ３３の処理を実行する。
【００５１】
以上のようにランダムリードでは、ランダム領域Ｂ２及びページバッファ領域Ｂ３だけでなくランダム領域Ｂ２もサーチ対象領域となる。更に、ＮＡＮＤ型フラッシュメモリ３０からデータをバッファメモリ２５に転送する際、シーケンシャル領域Ａ１は使用されず、ランダム領域Ａ２が使用される。
【００５２】
１．３  本実施形態に係る効果  
上記のように本実施形態に係る構成であると、メモリシステム１の動作信頼性を向上出来る。本効果につき、以下、詳細に説明する。
【００５３】
図１０はメモリセルアレイの回路図であり、特に読み出し時の様子を示している。図示するように、ワード線ＷＬ３０が選択された場合、ワード線ＷＬ３０には例えば０Ｖが印加される。そして、その他の非選択ワード線ＷＬ０〜ＷＬ２９及びＷＬ３１には例えば５Ｖが印加される。この５Ｖという電圧は、保持データに関わらずメモリセルトランジスタＭＴ０〜ＭＴ２９及びＭＴ３１をオン状態とする電圧である。このような電圧を印加した状態で、メモリセルトランジスタＭＴ３０がオンするか否か、すなわちビット線ＢＬに電流が流れるか否かを検出することによって、データが判別される。
【００５４】
しかしながら、例えばある特定のワード線ＷＬが頻繁に選択されるような場合、非選択のメモリセルに余計な電圧がかかる（これをリードディスターブ（read disturb）と呼ぶ）ことで、これらの非選択メモリセルの閾値が変化するおそれがある。この様子を図１１に示す。図１１はメモリセルの閾値分布を示すグラフである。図示するように、リードディスターブにより、メモリセルの閾値が高電圧側にシフトし、場合によっては保持データが破壊される可能性がある。これは、ＮＡＮＤ型フラッシュメモリでは、電荷蓄積層に注入された電荷としてデータを保持するからであり、リードディスターブによって余計な電荷が電荷蓄積層にトラップされるからである。
【００５５】
この点、本実施形態に係る構成であると、メモリコントローラ２０は、バッファメモリ２５及びページバッファ３３内にどのようなデータが保持されているかの情報（具体的にはアドレス情報）を、管理テーブル２８によって保持している。そして、読み出しアクセスがなされた場合、メモリコントローラ２０は管理テーブルを参照して、必要なデータがバッファメモリ２５またはページバッファ３３に保持されている場合には、メモリセルアレイ３２からのデータの読み出しを行うことなく、バッファメモリ２５またはページバッファ３３から必要なデータを読み出し、これをホスト機器１０に転送する。
【００５６】
つまりメモリコントローラ２０は、ＮＡＮＤ型フラッシュメモリ３０内におけるメモリセルからの不必要なデータの読み出しを行わない。そのため、メモリセルからのデータの読み出しを必要最小限とすることが出来る。その結果、リードディスターブによってメモリセルの保持データが破壊されることを抑制し、メモリシステム１の動作信頼性を向上出来る。
【００５７】
更に本実施形態では、バッファメモリ２５をシーケンシャル領域Ａ１とランダム領域Ａ２とに分け、相対的に大きいサイズのデータの読み出しの際にはシーケンシャル領域Ａ１を使用し、相対的に小さいサイズのデータの読み出しの際にはランダム領域Ａ２を使用している。そして、ランダム領域Ａ２をＬＲＵ方式で管理している。これにより、特に更新頻度の高いデータについては、メモリセルから直接読み出す頻度を低減し、バッファメモリ２５から読み出すことが出来る。
【００５８】
すなわち、例えば画像データや動画データでは無く、ＮＡＮＤ型フラッシュメモリ３０のデータを管理する管理情報（例えば、ＦＡＴファイルシステムにおけるＦＡＴ等）は、比較的データサイズが小さい。このようなデータをＬＲＵ方式で管理することで、アクセス頻度の高いものほどバッファメモリ２５に残しておくことが出来る。
【００５９】
他方で、サイズの大きな画像データや動画データは、アクセス頻度が比較的低いと考えられるため、シーケンシャル領域Ａ１においてＦＩＦＯ方式で管理する。これにより、シーケンシャル領域Ａ１の管理が容易となる。
【００６０】
２．第２実施形態  
次に、第２実施形態に係るメモリコントローラについて説明する。本実施形態は、上記第１実施形態で説明したシーケンシャルリード及びランダムリードの、より具体的な例を示すものである。
【００６１】
２．１  シーケンシャルリードについて  
２．１．１  シーケンシャルリードの処理の流れについて  
まず、シーケンシャルリードの詳細について、図１２を参照して説明する。図１２は、シーケンシャルリード時におけるメモリコントローラ２０の動作を示すフローチャートである。
【００６２】
第１実施形態で説明した通り、まずＣＰＵ２３は、受信したアドレスに基づいて管理テーブル２８をサーチする（ステップＳ４０）。この際、サーチ対象となる領域は、図３で説明したシーケンシャル領域Ｂ１及びページバッファ領域Ｂ３である。
【００６３】
サーチの結果、読み出すべき全てのデータがバッファメモリ２５のシーケンシャル領域Ａ１内に保持されていた場合（ステップＳ４１、ＹＥＳ、ステップＳ４２、ＹＥＳ）、ＣＰＵ２３は、シーケンシャル領域Ａ１から必要なデータを読み出し、これをホスト機器１０へ転送する（ステップＳ４３）。この場合には、管理テーブル２８は更新されない。なお、必要なデータがバッファメモリ２５またはページバッファ３３内に保持されていること、つまり、必要なデータのアドレスが管理テーブル２８のサーチ対象領域にあることを、以下では“ヒットした”と呼び、逆の場合を“ミスした”と呼ぶ。
【００６４】
全データがヒットしたが、少なくとも一部がページバッファ３３に保持されている場合（ステップＳ４２、ＮＯ）、ヒットしたデータがシーケンシャル領域Ａ１にあれば、ＣＰＵ２３はこれをホスト機器１０へ転送する（ステップＳ４４）。引き続きＣＰＵ２３は、ページバッファ３３内でヒットしたデータを、シーケンシャル領域Ａ１においてＦＩＦＯポインタで示されるエントリに転送する（ステップＳ４５）。そしてＣＰＵ２３は、転送したデータをホスト機器１０へ転送し（ステップＳ４６）、更に管理テーブル２８及びシーケンシャル領域Ａ１のＦＩＦＯポインタを更新する（ステップＳ４７）。
【００６５】
サーチの結果、データの一部がヒットし、残りがミスした場合（ステップＳ４１、ＮＯ、ステップＳ４８、ＮＯ）、ＣＰＵ２３は、ヒットしたデータをホスト機器１０に転送する（ステップＳ４９）。このステップでは、もしヒットしたデータがページバッファ３３内にあれば、ページバッファ３３からシーケンシャル領域Ａ１への転送も含み、この場合にはＣＰＵ２３は管理テーブル２８及びＦＩＦＯポインタを更新する（ステップＳ５０）。引き続きＣＰＵ２３は、ミスしたデータについてのメモリセルアレイ３２からの読み出しをＮＡＮＤ型フラッシュメモリ３０に命令する（ステップＳ５１）。これにより、ページバッファ３３にはページ単位でデータが読み出される。引き続きＣＰＵ２３は、ページバッファ３３において必要なデータを、シーケンシャル領域Ａ１においてＦＩＦＯポインタで示されるエントリに転送する（ステップＳ５２）。その後、ミスしたデータにつき、ステップＳ４６、Ｓ４７の処理を行う。
【００６６】
サーチの結果、データの全てがミスした場合（ステップＳ４８、ＹＥＳ）、ミスしたデータについてのメモリセルアレイ３２からの読み出しをＮＡＮＤ型フラッシュメモリ３０に命令する（ステップＳ５３）。これにより、ページバッファ３３にはページ単位でデータが読み出される。引き続きＣＰＵ２３は、ページバッファ３３内の全データを、シーケンシャル領域Ａ１においてＦＩＦＯポインタで示されるエントリに転送する（ステップＳ５２）。その後、ミスしたデータにつき、ステップＳ４６、Ｓ４７の処理を行う。
【００６７】
２．１．２  シーケンシャルリードの具体例について  
次に、上記シーケンシャルリードの具体例につき、図１３〜図１６を用いて説明する。図１３〜図１６はメモリシステム１の模式図である。以下では、第１実施形態と同様にページサイズを２Ｋバイト、ホスト機器１０とメモリコントローラ２０との間で送受信されるデータ単位を５１２バイトと仮定して説明する。また以下の説明では、理解を容易にするために、データを５１２バイト単位で図示する。初期状態として、バッファメモリ２５にはデータは保持されておらず、管理テーブル２８の全エントリは空き状態であるものとする。更に、第１コマンドＣＭＤ１または第３コマンドＣＭＤ３を受信して、２Ｋバイトのデータをホスト機器１０に転送する場合を例に挙げて説明する。
【００６８】
まず図１３に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ０を受信する。ＣＰＵ２３は、管理テーブル２８のシーケンシャル領域Ｂ１及びページバッファ領域Ｂ３をサーチするが、ミスする（ステップＳ４８、ＹＥＳ）。従ってＣＰＵ２３は、メモリセルアレイ３２においてアドレスＡＤＤ０に対応する領域からデータを読み出すよう、ＮＡＮＤ型フラッシュメモリ３０に命令する（ステップＳ５３）。その結果、ページＰＧ０からデータＤ０〜Ｄ３（トータルで２Ｋバイト）がページバッファ３３に読み出され、これはバッファメモリ２５のエントリＥＮＴ０〜ＥＮＴ３に転送される（ステップＳ５４）。そしてＣＰＵ２３は、バッファメモリ２５からデータＤ０〜Ｄ３をホスト機器１０へ転送すると共に、管理テーブルのエントリＥＮＴ０〜ＥＮＴ３、ＥＮＴ１６を更新する（ステップＳ４６、Ｓ４７）。またＣＰＵ２３は、ＦＩＦＯポインタをエントリＥＮＴ４に移動させる。
【００６９】
次に図１４に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ４を受信する。この場合も、アドレスＡＤＤ４は管理テーブル２８でヒットしない（ステップＳ４８、ＹＥＳ）。従ってＣＰＵ２３は、ＮＡＮＤ型フラッシュメモリ３０に対してデータの読み出しを命令し（ステップＳ５３）、その結果、ページＰＧ１からデータＤ４〜Ｄ７（トータルで２Ｋバイト）がページバッファ３３に読み出され、これはバッファメモリ２５のエントリＥＮＴ４〜ＥＮＴ７に転送される（ステップＳ５４）。そしてＣＰＵ２３は、バッファメモリ２５からデータＤ４〜Ｄ７をホスト機器１０へ転送すると共に、管理テーブルのエントリＥＮＴ４〜ＥＮＴ７、ＥＮＴ１６を更新する（ステップＳ４６、Ｓ４７）。またＣＰＵ２３は、ＦＩＦＯポインタをエントリＥＮＴ０に移動させる。
【００７０】
次に図１５に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ６を受信する。この場合、必要な２Ｋバイトのデータのうち、１ＫバイトのデータＤ６、Ｄ７のみがエントリＥＮＴ６、ＥＮＴ７でヒットするが、残りの１ＫバイトのデータＤ８、Ｄ９がミスする（ステップＳ４１、ＮＯ、ステップＳ４８、ＮＯ）。従ってＣＰＵ２３は、バッファメモリ２５のエントリＥＮＴ６、ＥＮＴ７から、データＤ６、Ｄ７（トータルで１Ｋバイト）をホスト機器１０に転送する（ステップＳ４９）。更に、ミスしたデータＤ８、Ｄ９を読み出すよう、ＮＡＮＤ型フラッシュメモリ３０に命令する（ステップＳ５１）。その結果、ページＰＧ２からデータＤ８〜Ｄ１１（トータルで２Ｋバイト）がページバッファ３３に読み出され、このうちのデータＤ８、Ｄ９が、バッファメモリ２５のエントリＥＮＴ０、ＥＮＴ１に転送される（ステップＳ５２）。そしてＣＰＵ２３は、バッファメモリ２５からデータＤ８、Ｄ９をホスト機器１０へ転送すると共に、管理テーブルのエントリＥＮＴ０、ＥＮＴ１、及びＥＮＴ１６を更新する（ステップＳ４６、Ｓ４７）。またＣＰＵ２３は、ＦＩＦＯポインタをエントリＥＮＴ３に移動する。
【００７１】
次に図１６に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ８を受信したとする。この場合、全データＤ８〜Ｄ１１がヒットする（ステップＳ４１、ＹＥＳ）。このうち、データＤ８、Ｄ９はシーケンシャル領域Ｂ１でヒットし、データＤ１０、Ｄ１１はページバッファ領域Ｂ３でヒットする（ステップＳ４２、ＮＯ）。従ってＣＰＵ２３は、データＤ８、Ｄ９をバッファメモリ２５のエントリＥＮＴ０、ＥＮＴ１からホスト機器１０へ転送する（ステップＳ４４）。引き続きＣＰＵ２３は、ページバッファ３３内のデータＤ１０、Ｄ１１をバッファメモリ２５のエントリＥＮＴ２、ＥＮＴ３に読み出し（ステップＳ４５）、これをホスト機器１０へ転送して、管理テーブル２８とＦＩＦＯポインタを更新する（ステップＳ４６、Ｓ４７）。
【００７２】
２．２  ランダムリードについて  
２．２．１  ランダムリードの処理の流れについて  
まず、ランダムリードの詳細について、図１７を参照して説明する。図１７は、ランダムリード時におけるメモリコントローラ２０の動作を示すフローチャートである。
【００７３】
第１実施形態で説明した通り、まずＣＰＵ２３は、受信したアドレスに基づいて管理テーブル２８をサーチする（ステップＳ６０）。この際、サーチ対象となる領域は、図３で説明したシーケンシャル領域Ｂ１、ランダム領域Ｂ２、及びページバッファ領域Ｂ３の全てである。
【００７４】
サーチの結果、受信したアドレスが、管理テーブル２８のシーケンシャル領域Ｂ１でヒットした場合（ステップＳ６１、ＹＥＳ、ステップＳ６２、ＹＥＳ）、ＣＰＵ２３は、バッファメモリ２５のシーケンシャル領域Ａ１から必要なデータを読み出し、これをホスト１０へ転送する（ステップＳ６３）。この場合には、管理テーブル２８は更新されない。
【００７５】
受信したアドレスがランダム領域Ｂ２でヒットした場合（ステップＳ６２、ＮＯ、ステップＳ６４、ＹＥＳ）、ＣＰＵ２３は、ランダム領域Ａ２から必要なデータを読み出し、これをホスト機器１０へ転送する（ステップＳ６５）。更に、ランダム領域Ｂ２における対応するエントリの参照履歴を更新する（ステップＳ６６）。例えばＣＰＵ２３はカウンタ機能を有し、ランダム領域Ａ２内のデータにアクセスされるたびにカウントアップして、管理テーブル２８の対応するエントリに当該カウント値を格納する。つまり、最も大きいカウント値を保持するエントリが、最も直近にアクセスされたエントリである。
【００７６】
受信アドレスがページバッファ領域Ｂ３でヒットした場合（ステップＳ６２、ＮＯ、ステップＳ６４、ＮＯ）、ＣＰＵ２３は、ページバッファ３３内でヒットしたデータをランダム領域Ａ２のいずれかのエントリに転送する（ステップＳ６７）。この際、使用されるエントリは、参照履歴の最も古いエントリ、すなわちカウント数の最も小さいエントリである。引き続きＣＰＵ２３は、転送したデータをランダム領域からホスト機器１０へ転送して（ステップＳ６８）、管理テーブル２８を更新する（ステップＳ６９）。
【００７７】
ステップＳ６１でミスした場合（ステップＳ６１、ＮＯ）、ＣＰＵ２３は、ミスしたデータについてのメモリセルアレイ３２からの読み出しをＮＡＮＤ型フラッシュメモリ３０に命令する（ステップＳ７０）。これにより、ページバッファ３３にはページ単位でデータが読み出される。引き続きＣＰＵ２３は、ページバッファ３３において必要なデータを、ランダム領域Ａ２に転送する（ステップＳ６７）。その後、ステップＳ６８、Ｓ６９の処理を行う。
【００７８】
２．２．２  ランダムリードの具体例について  
次に、上記ランダムリードの具体例につき、図１８〜図２１を用いて説明する。図１８はメモリコントローラ２０の模式図であり、図１９〜図２１はメモリシステム１の模式図である。また以下では、第２コマンドＣＭＤ２を受信して５１２バイトのデータをホスト機器１０に転送する場合を例に挙げて説明する。
【００７９】
まず、メモリコントローラ２０においてバッファメモリ２５及び管理テーブル２８の状態が図１８の通りであったとする。すなわち、バッファメモリ２５のエントリＥＮＴ０〜ＥＮＴ１５にはそれぞれデータＤ０〜Ｄ１５が格納され、ページバッファ３３は空である。またランダム領域Ａ２では、エントリＥＮＴ１５内のデータＤ１５が最も直近にアクセスされ（カウント値＝７）、エントリＥＮＴ８内のデータＤ８が最も古いデータ（カウント値＝０）である。
【００８０】
図１８の状態で、図１９に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ２０を受信する。ＣＰＵ２３は管理テーブル２８のシーケンシャル領域Ｂ１、ランダム領域Ｂ２、及びページバッファ領域Ｂ３をサーチするが、ミスする（ステップＳ６１、ＮＯ）。従ってＣＰＵ２３は、メモリセルアレイ３２においてアドレスＡＤＤ２０に対応するメモリセルからデータを読み出すよう、ＮＡＮＤ型フラッシュメモリ３０に命令する（ステップＳ７０）。その結果、ページＰＧ５からデータＤ２０〜Ｄ２３（トータルで２Ｋバイト）がページバッファ３３に読み出される。引き続きＣＰＵ２３は、ページバッファ３３内のデータＤ２０を、バッファメモリ２５のエントリＥＮＴ８に読み出す（ステップＳ６７）。エントリＥＮＴ８が転送先の領域として選択される理由は、カウンタ値がランダム領域Ｂ２内で最も小さい、つまり、直近のアクセスが最も古いからである。そしてＣＰＵ２３は、データＤ２０をバッファメモリ２５のエントリＥＮＴ８からホスト機器１０へ転送すると共に、管理テーブル２８のエントリＥＮＴ８、ＥＮＴ１６を更新する（ステップＳ４６、Ｓ４７）。管理テーブル２８のエントリＥＮＴ８では、アドレスがＡＤＤ８からＡＤＤ２０に更新され、カウンタ値は０から８に更新される。
【００８１】
次に図２０に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ２を受信する。この場合、アドレスＡＤＤ２はシーケンシャル領域Ｂ１でヒットする（ステップＳ６２、ＹＥＳ）。従ってＣＰＵ２３は、バッファメモリ２５からデータＤ２をホスト機器１０へ転送する（ステップＳ６３）。
【００８２】
次に図２１に示すように、メモリコントローラ２０はホスト機器１０からアドレスＡＤＤ２１を受信する。すると、アドレスＡＤＤ２１は管理テーブル２８のエントリＥＮＴ１６でヒットする（ステップＳ６４、ＮＯ）。従ってＣＰＵ２３は、ページバッファ３３内のデータＤ２１を、バッファメモリ２５のエントリＥＮＴ９に転送し（ステップＳ６７）、これをホスト機器１０へ転送し（ステップＳ６８）、更に管理テーブル２８のエントリＥＮＴ９を更新する（ステップＳ６９）。
【００８３】
２．３  本実施形態に係る効果  
第１実施形態で説明したデータ読み出し方法は、例えば本実施形態で説明したようにして具体化することも可能である。
【００８４】
なお、ランダムリードの場合であっても、読み出しデータのサイズ、または図７のステップＳ１５で使用する閾値によっては、ホスト機器１０から要求されたデータの一部のみがヒットし、残りはミスする場合もあり得る。この場合には、ヒットしたデータについてはステップＳ６２以降の処理を行い、ミスしたデータについてはステップＳ７０の処理を行えば良い。
【００８５】
３．第３実施形態  
次に、第３実施形態に係るメモリコントローラについて説明する。本実施形態は、上記第２、第３実施形態において、特定のデータパターンに対する読み出しアクセスの際には、ＮＡＮＤ型フラッシュメモリ３０からデータを読み出すのでは無く、ＣＰＵ２３がデータを生成するものである。以下では、上記第１、第２実施形態と異なる点についてのみ説明する。
【００８６】
３．１  バッファメモリ２５の管理について  
図２２は、本実施形態に係るメモリコントローラ２０のバッファメモリ２５及び管理テーブル２８、並びにＮＡＮＤ型フラッシュメモリ３０を模式的に示している。
【００８７】
図示するように、本実施形態に係るバッファメモリ２５は、第１実施形態で説明した図３の構成においてエントリＥＮＴ１４及びＥＮＴ１５を特定データ領域Ａ３としたものに相当する。シーケンシャル領域Ａ１及びランダム領域Ａ２がＮＡＮＤ型フラッシュメモリ３０から転送されたデータを保持するのに対し、特定データ領域Ａ３は、ＮＡＮＤ型フラッシュメモリ３０から転送されたデータを保持することなく、ＣＰＵ２３から与えられるデータを保持する。また特定データ領域Ａ３は、管理テーブル２８上では管理されない。
【００８８】
３．２  データの読み出し動作について  
次に、本実施形態に係るメモリコントローラ２０による読み出し動作につき、図２３を用いて説明する。図２３は読み出し動作時におけるメモリコントローラ２０の動作を示すフローチャートである。
【００８９】
図示するように、第１、第２実施形態で説明したように、メモリコントローラ２０はまず読み出しコマンドとアドレスを受信する（ステップＳ８０）。ＣＰＵ２３は、当該アドレスに対応するデータが、予め定められた特定パターンデータであるか否かを判断する（ステップＳ８１）。もし特定パターンデータでなければ（ステップＳ８１、ＮＯ）、第１、第２実施形態で説明した通常の読み出し動作を実行する（ステップＳ８４）。すなわち、読み出しコマンド及び／または読み出しデータサイズに応じてシーケンシャルリードまたはランダムリードを実行する。
【００９０】
特定パターンデータであれば（ステップＳ８１、ＹＥＳ）、ＣＰＵ２３は、所定のデータを特定データ領域Ａ３に格納する（ステップＳ８２）。そして、ＮＡＮＤ型フラッシュメモリ３０にアクセスすることなく、ステップＳ８２でバッファメモリ２５に格納したデータをホスト機器１０に転送する（ステップＳ８３）。
【００９１】
３．３  特定パターンデータの具体例について  
上記特定パターンデータとしては例えば以下のようなデータが挙げられる。
【００９２】
＜第１の例＞  
特定パターンデータは、消去状態のブロックの保持するデータであっても良い。つまり、ステップＳ８１の判断は、当該読み出しアクセスが、消去状態のブロックに対する読み出しアクセスであるか否かの判断である。
【００９３】
本例の場合、ＣＰＵ２３は、ＮＡＮＤ型フラッシュメモリ３０内のブロックをフラグによって管理しても良い。図２４は、例えば内蔵メモリ２２に保持される消去管理テーブルの模式図である。図示するように消去管理テーブルは、ブロックＢＬＫ毎にフラグを有する。データの消去はブロック単位で行われるが、消去を行うと、ＣＰＵ２３は消去管理テーブルにおいて対応するエントリのフラグを“０”とする。他方、いずれかのページにデータを書き込んだ際にはフラグを“１”とする。
【００９４】
従ってＣＰＵ２３は、読み出しアクセスがあった際、まず消去管理テーブルを参照する。そして、アクセスされたアドレスに対応するブロックが消去状態であるか否かをフラグによって判断する。消去状態でなければステップＳ８４に進み、消去状態であればステップＳ８２に進む。
【００９５】
＜第２の例＞  
特定パターンデータは、セキュリティに関する情報であり、ユーザに対して秘匿すべき情報であっても良い。
【００９６】
この場合、例えばＣＰＵ２３は、ＮＡＮＤ型フラッシュメモリ３０において特定パターンデータが保持される領域のアドレスを内蔵メモリ２２等に保持する（秘匿データテーブル）。そしてホスト機器１０から読み出しアクセスがあった際、まずアクセスされたアドレスを秘匿データテーブルにおいて検索する。もしアクセスされたアドレスが秘匿データテーブル内に登録されていなければ、ＣＰＵ２３はステップＳ８４の処理に進む。他方、登録されていれば、当該読み出しアクセスは拒否する必要があるので、ＣＰＵ２３はステップＳ８２の処理に進む。
【００９７】
３．４  特定パターンデータ読み出しの具体例について  
次に、上記特定パターンデータ読み出し時の動作の具体例について、図２５を用いて説明する。図２５ははメモリシステム１の模式図であり、以下では所定のデータパターンが消去状態に対応する場合を例に説明する。
【００９８】
図示するように、アドレスＡＤＤ１００に対する読み出しコマンドが、ホスト機器１０からメモリコントローラ１０に対して発行される。この際、アドレスＡＤＤ１００に対応するブロックが消去状態であった場合（ステップＳ８１、ＹＥＳ）、ＣＰＵ２３は、所定のデータＤＳ０及びＤＳ１をエントリＥＮＴ１４及びＥＮＴ１５に格納する（ステップＳ８２）。このデータＤＳ０及びＤＳ１は、ＮＡＮＤ型フラッシュメモリ３０内から読み出されたデータでは無く、例えばＣＰＵ２３が生成したデータであり、あるいは予め内蔵メモリ２２等に保持されていた専用データである。そしてＣＰＵ２３は、アドレスＡＤＤ１００に対する読み出しアクセスの応答として、データＤＳ０及びＤＳ１をホスト機器１０に転送する。
【００９９】
３．５  本実施形態に係る効果  
本実施形態の構成であると、予め定められたデータパターンに対してアクセスが為された際には、ＮＡＮＤ型フラッシュメモリ３０からの読み出しを行うことなく、ＣＰＵ２３がデータを生成して、これをホスト機器１０に転送する。従って、ＮＡＮＤ型フラッシュメモリ３０におけるリードディスターブを抑制出来る。
【０１００】
例えば、消去状態のブロックに読み出し要求があった場合には、当該ブロックには正味のデータは保持されていないので、メモリセルからの読み出しを実行する必要が無い。従って、ＣＰＵ２３が所定のデータをホスト機器１０に対して返す。この場合、ＮＡＮＤ型フラッシュメモリ３０の動作が不要であるので、動作速度の向上にも寄与し得る。
【０１０１】
また、例えばホスト機器１０からのアクセスを許容すべきでないデータへのアクセス要求があった場合も、メモリセルからの読み出しを行うことなくＣＰＵ２３が所定のデータを返す。これにより、セキュリティの向上が図られる。
【０１０２】
もちろん、予め定められたデータパターンは上記に限らず、その他の種々の情報であっても良い。またＣＰＵ２３は、所定のデータを特定データ領域Ａ３に格納した後は、アクセスの度に所定のデータを格納し直さない場合であっても良い。このような場合の処理の流れを図２６に示す。図示するように、ステップＳ８１でＹＥＳの場合、ＣＰＵ２３は、所定のデータを既に特定データ領域Ａ３に格納済みか否かを判断する（ステップＳ８５）そして、格納済みであればステップＳ８２を省略しても良い。
【０１０３】
もちろん、図２３のように、特定パターンデータにアクセスがある度に、ＣＰＵ２３が所定のデータを特定データ領域Ａ３に格納しても良い。この際、所定のデータは毎回同じでも良いし、毎回異なっていても良い。あるいは、消去ブロックにアクセスされた場合の所定のデータと、秘匿すべき情報にアクセスされた場合の所定のデータは、互いに異なるデータであっても良い。
【０１０４】
４．変形例等  
以上のように、本実施形態に係るメモリコントローラ２０は、第１サイズ(page size or more)のデータを半導体メモリ(30)から読み出す第１動作モード(Sequential read)と、第１サイズよりも小さい第２サイズのデータを読み出す第２動作モード(Random read)とを有する。コントローラ(20)は、半導体メモリとの間で信号を送受信する第１インターフェイス(27)と、第１インターフェイスを介して受信したデータを保持可能なバッファメモリ(25)とを備える。バッファメモリ(25)は、第１動作モードにおいて半導体メモリから読み出されたデータを保持する第１領域(A1:FIFO)と、第２動作モードにおいて半導体メモリから読み出されたデータを保持する第２領域(A2:LRU)とを備える。読み出し要求に対するデータは、第１動作モードにおいて第１領域(A1:FIFO)に保持されている場合には、半導体メモリから読み出されることなく第１領域から出力され、第２動作モードにおいて第１または第２領域(A1:FIFO, A2:LRU)に保持されている場合には、半導体メモリから読み出されることなく第１または第２領域から出力される。上記第１動作モードは、第１コマンド(CMD1 or CMD3)に応答して半導体メモリ(30)からデータを読み出すモードであっても良い。また第２動作モードは、第１コマンドと異なる第２コマンド(CMD2 or CMD3)に応答して前記半導体メモリからデータを読み出すモードであっても良い。
【０１０５】
本構成によれば、不必要にＮＡＮＤ型フラッシュメモリに対して読み出し動作を実行する必要が無く、リードディスターブの発生を抑制出来る。その結果、上記メモリコントローラを含む半導体装置やメモリシステムの動作信頼性を向上出来る。
【０１０６】
なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。例えば、ページサイズや、バッファメモリ２５のエントリサイズについての具体的な値は、上記説明した値に限られない。また、図７のステップＳ１５で使用する閾値は、ページサイズに限定されるものでも無い。この閾値は、ＣＰＵ２３が任意に選択可能であっても良い。この場合ＣＰＵ２３は、例えばホスト機器１０の種類に応じて、ＮＡＮＤ型フラッシュメモリ３０の仕様（メモリ容量やページサイズ等）、あるいはホスト機器１０からの要求に応じて、適切な閾値を選択出来る。
【０１０７】
またＣＰＵ２３は、バッファメモリ２５におけるシーケンシャル領域Ａ１、ランダム領域Ａ２（及び特定データ領域Ａ３）のサイズ、すなわち、これらの領域が占めるサイズの比率を任意に設定することが出来る。この場合もＣＰＵ２３は、例えばホスト機器１０の種類に応じて、あるいはホスト機器１０からの要求に応じて、例えばホスト機器１０の種類に応じて、ＮＡＮＤ型フラッシュメモリ３０の仕様（メモリ容量やページサイズ等）、あるいはホスト機器１０からの要求に応じて、適切な閾値を選択出来る。
【０１０８】
また、ホスト機器がセクタサイズの変更を要求する場合がある。セクタサイズとは、ホスト機器からのデータの読み出し及び書き込みのデータ単位である（例えば５１２バイト）すると、この変更要求に応答してコントローラ２０は、セクタサイズを変更すると共に、その変更内容に基づいて各領域Ａ１〜Ａ３の設定を変更しても良い。より具体的には、例えばセクタサイズがページサイズ以上の場合、ＣＰＵ２３はランダム領域Ａ２を無くし、シーケンシャル領域Ａ１（及び特定データ領域Ａ３）のみを設けるようにしても良い。なぜなら、この場合にはページサイズ以上の単位でホスト機器からアクセスされるので、ページサイズ未満のデータを保持するランダム領域Ａ２が使用されることは無いと考えられるからである。つまり、バッファメモリ２５に格納されるデータのサイズは、各エントリサイズよりも大きいことが明らかであるので、ＬＲＵ方式でエントリ毎に管理する必要は無いからである。
【０１０９】
更に、上記実施形態では、シーケンシャル領域Ａ１及びランダム領域Ａ２が、ＣＰＵ２３によってそれぞれＦＩＦＯ方式及びＬＲＵ方式で管理される例について説明した。しかし、シーケンシャル領域Ａ１についてもＬＲＵ方式で管理しても良い。あるいは、これらの領域はＦＩＦＯ方式及びＬＲＵ方式以外の方法で管理されても良い。しかしながら、ランダム領域Ａ２については、アクセス頻度の高いデータを残すような管理方法を採用することが望ましい。
【０１１０】
更に、上記第３実施形態は第１、第２実施形態を前提として説明した。しかし、第３実施形態は独立して実施することも可能である。すなわち第３実施形態では、バッファメモリをシーケンシャル領域Ａ１及びランダム領域Ａ２に区別せず、通常のＮＡＮＤ型フラッシュメモリのようにホスト機器から読み出し要求があった場合には、その度にＮＡＮＤ型フラッシュメモリに読み出し命令を発行する構成であっても良い。
【０１１１】
更に、ＮＡＮＤ型フラッシュメモリ３０の個々のメモリセルは２ビット以上のデータを保持可能であっても良いし、またメモリセルが半導体基板上に３次元に積層される構成であっても良い。また、メモリコントローラ２０によって制御される半導体メモリはＮＡＮＤ型フラッシュメモリに限らず、ＮＯＲ型フラッシュメモリ、ＡＮＤ型フラッシュメモリ、磁気ランダムアクセスメモリ（ＭＲＡＭ）、強誘電体メモリ（Ferroelectric ＲＡＭ）、ＲｅＲＡＭ（Resistive RAM）などのその他の半導体メモリ全般であって良い。また、上記説明したフローチャートは、図示した順序には限らず、可能な限り順序を入れ替えても良いし、または複数の処理を同時に行っても良い。
【０１１２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１１３】
１…メモリシステム、１０…ホスト機器、２０…メモリコントローラ、２１…ホストインターフェイス回路、２２…内蔵メモリ、２３…ＣＰＵ２３…ＮＡＮＤ関連モジュール、２５…バッファメモリ、２６…ＥＣＣ部、２７…ＮＡＮＤインターフェイス回路、２８…管理テーブル、３０…ＮＡＮＤ型フラッシュメモリ、３２…メモリセルアレイ、３３…ページバッファ
【図１】
2013205944.tif 000003
【図２】
2013205944.tif 000004
【図３】
2013205944.tif 000005
【図４】
2013205944.tif 000006
【図５】
2013205944.tif 000007
【図６】
2013205944.tif 000008
【図７】
2013205944.tif 000009
【図８】
2013205944.tif 000010
【図９】
2013205944.tif 000011
【図１０】
2013205944.tif 000012
【図１１】
2013205944.tif 000013
【図１２】
2013205944.tif 000014
【図１３】
2013205944.tif 000015
【図１４】
2013205944.tif 000016
【図１５】
2013205944.tif 000017
【図１６】
2013205944.tif 000018
【図１７】
2013205944.tif 000019
【図１８】
2013205944.tif 000020
【図１９】
2013205944.tif 000021
【図２０】
2013205944.tif 000022
【図２１】
2013205944.tif 000023
【図２２】
2013205944.tif 000024
【図２３】
2013205944.tif 000025
【図２４】
2013205944.tif 000026
【図２５】
2013205944.tif 000027
【図２６】
2013205944.tif 000028