(57)【要約】      （修正有）【課題】データの消失を回避するためのリード動作を高速かつ効率的に実行できるメモリシステムを提供する。【解決手段】メモリシステムは、データを記憶する不揮発性メモリと、不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路とを備える。コントローラ回路は、不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対する読出し処理を実行するアクセスの履歴を管理する第１の処理を実行し、アクセスの履歴に基づいて、読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第２の処理を実行する。【選択図】図２
2019160364.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性メモリと、
前記不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路と、を具備し、
前記コントローラ回路は、
前記不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対するアクセスの履歴を管理する第１の処理を実行し、
前記アクセスの履歴に基づいて、前記全記憶領域に対する読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第２の処理を実行する、
メモリシステム。
【請求項２】
前記コントローラ回路は、
前記第１の処理として、前記アクセス対象範囲を示すアドレス情報に対応付けて、前記アクセスの履歴を更新し、
前記アクセスの進捗状況に基づいて、アドレス情報毎に必要な読出し処理を実行する、請求項１に記載のメモリシステム。
【請求項３】
前記アクセスの履歴は、前記アドレス情報毎に、読出し処理が完了したことを示す読出し履歴情報、及び消去処理の履歴を示す消去履歴情報を含み、
前記コントローラ回路は、
前記第１の処理として、読出し処理の実行時に前記読出し履歴情報を更新し、消去処理の実行時に前記消去履歴情報を更新する、
請求項２に記載のメモリシステム。
【請求項４】
前記コントローラ回路は、
前記必要な読出し処理として、前記読出し履歴情報が記録されていないアドレス情報に対する読出し処理を実行し、
前記読出し履歴情報又は前記消去履歴情報が記録されているアドレス情報に対する読出し処理を実行しない、請求項３に記載のメモリシステム。
【請求項５】
前記コントローラ回路は、
前記第１の処理として、前記読出し処理の完了時に、前記アドレス情報毎に記録された前記読出し履歴情報をクリアする、請求項３に記載のメモリシステム。
【請求項６】
前記コントローラ回路は、
前記読出し処理として、前記アクセスの履歴に基づいて前記不揮発性メモリの前記全記憶領域に対する第１の読出し処理、及び前記アクセスとは異なる他のアクセスに関する第２の読出し処理を含み、
前記第１の処理として、前記第１の読出し処理又は前記第２の読出し処理の実行時に、前記アクセスの履歴を更新する、請求項１に記載のメモリシステム。
【請求項７】
前記コントローラ回路は、
前記第１の読出し処理として、データリテンションの悪化を防止する機能を実現するための特定のリード処理を実行する、請求項６に記載のメモリシステム。
【請求項８】
前記コントローラ回路は、
前記第２の処理として、前記全記憶領域に対するデータの読み出し処理の進捗、及び前記読み出し処理が完了するまでの時間の進捗を含む、前記アクセスの進捗状況を管理する、請求項１に記載のメモリシステム。
【請求項９】
前記コントローラ回路は、
前記時間の進捗に基づいて、所定のタイムリミットまでに前記読み出し処理を完了させるために、前記読み出し処理を実行する優先度を、前記アクセスとは異なる他のアクセスの実行より高くする、請求項８に記載のメモリシステム。
【請求項１０】
前記コントローラ回路は、
前記アクセスの進捗状況に基づいて、前記アクセスの履歴を参照し、前記アクセス対象範囲の全記憶領域に対して読出し処理を順次実行する際に、既に読出し処理が実行された記憶領域及びデータが消去された記憶領域に対する読出し処理を省略する、請求項１に記載のメモリシステム。
【請求項１１】
データを記憶する不揮発性メモリ、及び前記不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路を含むメモリシステムに適用するメモリ制御方法であって、
前記不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対するアクセスの履歴を管理する第１の処理と、
前記アクセスの履歴に基づいて、前記全記憶領域に対する読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第２の処理と、
を実行するメモリ制御方法。
【請求項１２】
前記第１の処理として、前記アクセス対象範囲を示すアドレス情報に対応付けて、前記アクセスの履歴を更新し、
前記アクセスの進捗状況に基づいて、アドレス情報毎に必要な読出し処理を実行する、請求項１１に記載のメモリ制御方法。
【請求項１３】
前記アクセスの履歴は、前記アドレス情報毎に、読出し処理が完了したことを示す読出し履歴情報、及び消去処理の履歴を示す消去履歴情報を含み、
前記第１の処理として、読出し処理の実行時に前記読出し履歴情報を更新し、消去処理の実行時に前記消去履歴情報を更新する、
請求項１２に記載のメモリ制御方法。
【請求項１４】
前記必要な読出し処理として、前記読出し履歴情報が記録されていないアドレス情報に対する読出し処理を実行し、
前記読出し履歴情報又は前記消去履歴情報が記録されているアドレス情報に対する読出し処理を実行しない、請求項１３に記載のメモリ制御方法。
【請求項１５】
前記第１の処理として、前記読出し処理の完了時に、前記アドレス情報毎に記録された前記読出し履歴情報をクリアする、請求項１３に記載のメモリ制御方法。
【請求項１６】
前記読出し処理として、前記アクセスの履歴に基づいて前記不揮発性メモリの前記全記憶領域に対する第１の読出し処理、及び前記アクセスとは異なる他のアクセスに関する第２の読出し処理を含み、
前記第１の処理として、前記第１の読出し処理又は前記第２の読出し処理の実行時に、前記アクセスの履歴を更新する、請求項１１に記載のメモリ制御方法。
【請求項１７】
前記第１の読出し処理として、前記データリテンションの悪化を防止する機能を実現するための特定のリード処理を実行する、請求項１６に記載のメモリ制御方法。
【請求項１８】
前記第２の処理として、前記全記憶領域に対するデータの読み出し処理の進捗、及び前記読み出し処理が完了するまでの時間の進捗を含む、前記アクセスの進捗状況を管理する、請求項１１に記載のメモリ制御方法。
【請求項１９】
前記時間の進捗に基づいて、所定のタイムリミットまでに前記読み出し処理を完了させるために、前記読み出し処理を実行する優先度を、前記アクセスとは異なる他のアクセスの実行より高くする、請求項１８に記載のメモリ制御方法。
【請求項２０】
前記アクセスの進捗状況に基づいて、前記アクセスの履歴を参照し、前記アクセス対象範囲の全記憶領域に対して読出し処理を順次実行する際に、既に読出し処理が実行された記憶領域及びデータが消去された記憶領域に対する読出し処理を省略する、請求項１１に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム及びメモリ制御方法に関する。
【背景技術】
【０００２】
近年、大容量のストレージとして、ソリッドステート・ドライブ（solid-state drive、以下ＳＳＤと表記）を代表とする、３次元構造のＮＡＮＤフラッシュメモリを使用したメモリシステムが注目されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−６９１８３号公報
【特許文献２】特許第５７４０２９６号公報
【特許文献３】特開２０１０−２６６９６２号公報
【特許文献４】特許第５３７８２５５号公報
【特許文献５】特開２０１２−６９２２４号公報
【特許文献６】米国特許第９４４３８６６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＡＮＤフラッシュメモリでは、データリテンション（data retention）を要因として、メモリセルから時間経過とともにデータを失っていく事態を回避するためのリード動作が必要である。そこで、当該リード動作を高速かつ効率的に実行できるメモリシステムを実現することが求められる。
【課題を解決するための手段】
【０００５】
本実施形態のメモリシステムは、データを記憶する不揮発性メモリと、前記不揮発性メモリに対してデータの読み出し及び書き込みを制御するコントローラ回路とを備えた構成である。前記コントローラ回路は、前記不揮発性メモリにおいて、アクセス対象範囲の全記憶領域に対する読出し処理を実行するアクセスの履歴を管理する第１の処理を実行し、前記アクセスの履歴に基づいて、前記読出し処理が所定のタイムリミットまでに完了するまでのアクセスの進捗状況を管理する第２の処理を実行する。
【図面の簡単な説明】
【０００６】
【図１】実施形態に関するメモリシステムの構成を示すブロック図。
【図２】実施形態に関するコマンドスケジューラ及び周辺回路の構成を示すブロック図。
【図３】実施形態に関するアクセス履歴管理テーブルの一例を示す図。
【図４】実施形態に関するアクセス履歴管理テーブルの読出履歴の更新を説明するための図。
【図５】実施形態に関するアクセス履歴管理テーブルの消去履歴の更新を説明するための図。
【図６】実施形態に関するバックグラウンドリード処理を実行する際のアクセス方法を説明するための図。
【図７】実施形態に関するアクセス頻度管理を説明するための図。
【図８】実施形態に関するアクセスの動作状態を説明するための図。
【図９】実施形態に関するＳＳＤコントローラの動作を説明するためのフローチャート。
【図１０】実施形態に関するアクセスでの物理アドレスを算出する方法を説明するための図。
【図１１】変形例に関するコマンドスケジューラ及び周辺回路の構成を示すブロック図。
【発明を実施するための形態】
【０００７】
以下図面を参照して、実施形態を説明する。
［メモリシステムの構成］
図１は、本実施形態のメモリシステムとして、ソリッドステート・ドライブ（solid-state drive: ＳＳＤ）１の構成を示すブロック図である。図１に示すように、ＳＳＤ１は、例えばコンピュータであるホスト２から転送されたデータをＮＡＮＤフラッシュメモリ１２（１２-1〜１２-n）に記憶し、かつ、ＮＡＮＤフラッシュメモリ１２（１２-1〜１２-n）から読み出したデータをホスト２に転送する。
【０００８】
ＳＳＤ１は、ＳＳＤコントローラ１０、バッファメモリ１１、及びＮＡＮＤフラッシュメモリ（NAND-type flash memory）１２を有する。バッファメモリ１１は、ＮＡＮＤフラッシュメモリ１２に対する書き込みデータや読み出しデータ等のデータを一時的に格納する。なお、バッファメモリ１１としては、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、またはＭＲＡＭ（magnetoresistive random access memory）などの不揮発性メモリでも良い。
【０００９】
ＮＡＮＤフラッシュメモリ１２は、不揮発性メモリ（nonvolatile memory）であり、複数のメモリチップ１２-1〜１２-nを有する。各メモリチップ１２-1〜１２-nはそれぞれ、複数の物理ブロックを含む。物理ブロックは、ＮＡＮＤフラッシュメモリ１２内で独立してデータの消去が可能な最小の記憶領域単位である。なお、後述するように、本実施形態では、メモリチップ及び物理ブロックの通し番号として、論理ブロック番号（logical block ID）を適用する。
【００１０】
ＳＳＤコントローラ１０は、例えばＳｏＣ（System on a chip）として構成される回路であり、プロセッサ（CPU）１３、ホストインターフェース（I/F）コントローラ１４、バッファコントローラ１５、ＦＴＬ（Flash Translation Layer）コントローラ１６、ＮＡＮＤコントローラ１７、コマンドディスパッチャ（Command Dispatcher）１８、及びコマンドスケジューラ（Command Scheduler）１９を含む。
【００１１】
プロセッサ１３は、メインコントローラを構成し、バッファコントローラ１５やＮＡＮＤコントローラ１７の制御、及び、後述するように、本実施形態に関するバックグラウンド（background）リード処理（以下、ＢＧリード処理と表記する場合がある）の制御を実行する。また、プロセッサ１３は、例えば、パトロール（patrol）処理、リフレッシュ（refresh）処理、コンパクション（compaction）処理等を実行する。なお、コンパクション処理は、ガベージ・コレクション（garbage collection）処理に相当する。
なお、本実施形態のＢＧリード処理は、ホストアクセスや、パトロール処理、リフレッシュ処理、コンパクション処理等の他のアクセスとは異なり、メモリセルに対する電圧印加があればよく、ＮＡＮＤフラッシュメモリ１２からＳＳＤコントローラ１０に対するデータの読み出しは不要である。このため、ＢＧリード処理を実行する特定のリードコマンドを設定することで、リード処理時間の短縮化を図ることができる。従って、ＢＧリード処理を高速に行うことが可能であるため、結果的にホストアクセスの応答を阻害する確率を低下させることが可能となる。
【００１２】
ホストインターフェース１４は、ＳＳＤ１とホスト２との間で、データ、コマンド、及びアドレスの転送を制御する。ホストインターフェース１４は、例えば、ＳＡＴＡ（Serial Advanced Technology Attachment）、ＳＡＳ（Serial Attached SCSI）、ＰＣＩｅ（PCI Express）（登録商標）等の通信インターフェースをサポートする。バッファコントローラ１５は、プロセッサ１３の制御下で、バッファメモリ１１の動作を制御する。ＦＴＬコントローラ１６は、ホストから指定された論理アドレスと、ＮＡＮＤフラッシュメモリ１２の物理アドレスの変換等を実行する。
【００１３】
ＮＡＮＤコントローラ１７は、ＮＡＮＤフラッシュメモリ１２の複数のメモリチップ１２-1〜１２-nに対応する複数のＮＡＮＤコントローラ１７-1〜１７-nを含み、メモリチップ１２-1〜１２-nに対してデータを同時並列に読み出し又は書き込むことができる。ＮＡＮＤコントローラ１７は、プロセッサ１３の制御に基づいて、ホスト２に対するデータの読み出し処理及び書き込み処理以外に、ホスト２からのコマンドとは無関係に、前述のＢＧリード処理によるデータの読み出しを実行する。また、ＮＡＮＤコントローラ１７は、ホスト２からのコマンドとは無関係に、前述のパトロール処理、リフレッシュ処理、またはコンパクション処理に伴うデータの読み出し処理及び書き込み処理を実行する。
【００１４】
コマンドディスパッチャ１８は、ＮＡＮＤコントローラ１７に対して、各種のコマンドを割り当てる回路である。コマンドスケジューラ１９は、本実施形態に関するＢＧリード処理のコマンドを含むＮＡＮＤコントローラ１７が実行するコマンドのスケジュールを管理する回路である。
なお、ＳＳＤコントローラ１０は、プロセッサ１３の制御下において、ＮＡＮＤコントローラ１７によりＮＡＮＤフラッシュメモリ１２から読み出されたデータの誤り検出及び誤り訂正を実行するＥＣＣ回路１３Ａを含む。本実施形態では、後述するように、ＥＣＣ回路１３Ａは、ＢＧリード処理を除いて、例えばパトロール処理の実行の際に機能する。
［コマンドスケジューラ及び周辺回路の構成］
図２は、コマンドスケジューラ１９及び周辺回路の構成を示すブロック図である。周辺回路とは、ＮＡＮＤコントローラ１７及びコマンドディスパッチャ１８である。
【００１５】
図２に示すように、ＮＡＮＤコントローラ１７は、コマンド調停部１７０を含み、コマンドディスパッチャ１８により割り当てられるコマンドを実行し、ＮＡＮＤフラッシュメモリ１２に対するデータの読み出し処理、プログラム（書き込み）処理を制御する。
【００１６】
コマンドディスパッチャ１８は、ホスト２からのコマンドに基づいたホストデータアクセスを指示するコマンド１８０、コンパクションアクセスを指示するコマンド１８１、及びシステムデータアクセスを指示するコマンド１８２をＮＡＮＤコントローラ１７に割り当てる。ここで、コマンド１８２は、例えば論理／物理アドレス変換等の情報であるシステムデータのアクセスを指示する。コンパクションアクセス及びシステムデータアクセスはいずれも、ＮＡＮＤフラッシュメモリ１２の内部データの再配置を目的とするアクセスである。ここで、コマンド１８１，１８２は、ホスト２からのコマンドとは無関係に、ＳＳＤ１が自発的に生成するコマンドである。
【００１７】
コマンドスケジューラ１９は、アクセス履歴管理部２０及びアクセス頻度管理部２２を含む。アクセス履歴管理部２０は、後述するアクセス履歴管理テーブル２１を保存・管理する。アクセス頻度管理部２２は、アクセス履歴管理テーブルの読み出し部２３、アクセス履歴管理テーブルの書込み部２４、進捗管理部２５、タイマ２６、アクセスコマンド生成部２７、優先度通知部２８、及びアクセスコマンド解釈部２９を含む。
【００１８】
アクセス履歴管理テーブルの読み出し部２３は、アクセス履歴管理部２０により保存されているアクセス履歴管理テーブル２１からの情報の読み出しを実行する。アクセス履歴管理テーブルの書込み部２４は、アクセス履歴管理テーブル２１に対して情報の書き込み（更新）を実行する。アクセス履歴管理テーブルの書込み部２４は、アクセスコマンド解釈部２９のアクセスコマンド解釈結果を使用して書込みデータを生成する。
【００１９】
進捗管理部２５は、後述するように、本実施形態に関する、ＮＡＮＤフラッシュメモリ１２の全記憶領域（データの未記憶領域を除く）から、所定の制限時間（タイムリミット）内にデータを読み出すアクセス（ＢＧリード処理）の進捗状況を管理する。進捗管理部２５は、アクセス履歴管理テーブル２１から読み出された情報及びタイマ２６からの時間情報に基づいて、ＢＧリード処理によるアクセスの進捗状況及び時間の進捗を管理する。
【００２０】
アクセスコマンド生成部２７は、進捗管理部２５の進捗結果に基づいて、ＢＧリード処理を伴うアクセスコマンドを生成する。また、アクセスコマンド生成部２７は、アクセス先の情報（論理ブロック番号）などを決定する。
【００２１】
優先度通知部２８は、進捗管理部２５の進捗結果に基づいて、ＢＧリード処理を伴うアクセスコマンドの優先度（例えば優先度１位）をコマンド調停部１７０に通知する。コマンド調停部１７０は、優先度通知部２８からの優先度に基づいて、ＢＧリード処理を伴うアクセスコマンドを、例えば優先度１位のコマンドとしてコマンド調停を行う。ここで、優先度通知部２８からの優先度は、ＢＧリード処理を伴うアクセスコマンドの実行、及びその実行完了時にクリアされる。
【００２２】
アクセスコマンド解釈部２９は、コマンド調停部１７０によるコマンド調停後に決定したコマンドを解釈する。アクセスコマンド解釈部２９は、コマンドの解釈結果から、アクセスに伴って実行する読み出し処理、プログラム処理、消去処理の情報を取得する。
［ＳＳＤコントローラの動作］
本実施形態は、データリテンションの悪化等を要因として、ＮＡＮＤフラッシュメモリ１２のメモリセルから時間経過とともにデータを失っていく事態を回避するためのＢＧリード処理の制御に関する。例えば、３次元構造のＮＡＮＤフラッシュメモリでは、メモリセルを選択する行選択線であって、１物理ブロックのワード線ＷＬから数分間に１回のリードが無い場合、そのメモリセルのデータを失っていく事態となる場合がある。ここで、一定時間内にメモリセルからデータを読み出すことで、データリテンションの悪化を防げる場合がある。そこで、ＳＳＤ１では、データリテンションの改善を目的とするＢＧリード処理を実行する必要がある。
【００２３】
本実施形態は、タイムリミット（例えば数分間の制限時間内）までに、ＮＡＮＤフラッシュメモリ１２の全記憶領域（データの未記憶領域を除く）からデータを読み出すＢＧリード処理を完了させる。ここで、ＳＳＤ１では、ホスト２からのアクセス（指定のデータを読み出す）の実行優先度が高いため、ＢＧリード処理を伴うアクセスの実行優先度との調整が必要である。そこで、本実施形態は、各アクセスの実行優先度を変化させて、ホストアクセスの応答を必要以上に低下させることなく、ＢＧリード処理を制限時間内に完了させるスケジュール機能を、コマンドスケジューラ１９により実現する。
【００２４】
以下、図３から図１０を参照して、本実施形態のＳＳＤコントローラ１０の動作を説明する。図３は、アクセス履歴管理テーブル２１の一例を示す図である。図４は、アクセス履歴管理テーブル２１の読出履歴３１の更新を説明するための図である。図５は、アクセス履歴管理テーブルの消去履歴３２の更新を説明するための図である。図６は、ＢＧリード処理を実行する際のアクセス方法を説明するための図である。図７は、アクセス頻度管理を説明するための図である。図８は、アクセスの動作状態を説明するための図。図９は、ＳＳＤコントローラ１０の動作を説明するためのフローチャートである。図１０は、アクセスでの物理アドレスを算出する方法を説明するための図である。
【００２５】
図３に示すように、アクセス履歴管理テーブル２１は、アクセス対象の記憶領域を管理するために論理ブロック（Block）番号３０、読出履歴３１、消去履歴３２の各フィールドを有するテーブル情報である。本実施形態では、ＮＡＮＤフラッシュメモリ１２に対するＢＧリード処理のアクセス対象範囲の物理アドレスは、例えば、２個のチップ（2chip:chip#0,#1）及び３個の物理ブロック（3block:block#0-#2）から構成される。論理ブロック番号３０のフィールドは、各記憶領域を特定する2chip／3blockの物理アドレスに対応する論理ブロック番号（通し番号：#0-#5）が設定される。
【００２６】
読出履歴３１のフィールドは、読出履歴として、論理ブロック番号（#0-#5）の各記憶領域から、タイムリミットまでに読出し動作が実行されたか否かを示すフラグ情報（０／１）が設定される。即ち、読出し動作が実行された場合には、読出履歴３１として、フラグ情報（１）がセットされる。一方、消去履歴３２のフィールドは、消去履歴として、論理ブロック番号（#0-#5）の各記憶領域から、データが消去されたか否かを示すフラグ情報（０／１）が設定される。ここで、電源オン直後には、前回の電源オフの状態（例えば消去済みのフラグ情報（１））が引き継がれる。
【００２７】
コマンドスケジューラ１９は、アクセス履歴管理テーブル２１において、読出履歴３１及び消去履歴３２のいずれにも、フラグ情報（０）が設定されている場合には、該当する論理ブロック番号（#0-#5）の記憶領域をＢＧリード処理の対象とする。具体的には、アクセスコマンド生成部２７は、ＢＧリード処理を伴うアクセスコマンド（アクセス先の論理ブロック番号を含む）を生成し、ＮＡＮＤコントローラ１７に出力する。
【００２８】
図９のフローチャートを参照して、ＳＳＤコントローラ１０の処理手順を説明する。
【００２９】
図９に示すように、本実施形態では、ＳＳＤコントローラ１０は、ホスト２からのコマンドに応じたホストアクセスを実行しない場合には（Ｓ１のＮＯ）、ＢＧリード処理を実行する（Ｓ２）。なお、ＳＳＤコントローラ１０は、ホストアクセスとは無関係なアクセスとして、パトロール処理、リフレッシュ処理、またはコンパクション処理を実行する場合もある。但し、本実施形態は、ホストアクセスとは無関係なアクセスとして、ＢＧリード処理ついて説明し、パトロール処理、リフレッシュ処理、コンパクション処理等については説明を省略する。
【００３０】
ＮＡＮＤコントローラ１７は、ＣＰＵ１３からの入力情報（アクセス対象範囲情報）から、実際にアクセスする、ＮＡＮＤフラッシュメモリ１２の物理的なチップ（chip）を決定し、ＢＧリード処理として当該チップからデータの読出しを実行する。本実施形態では、ＮＡＮＤフラッシュメモリ１２の構成に基づいて、アクセス対象範囲情報は、例えば、チップ数として２チップ（chip#0,chip#1）、及びチップ毎にブロック数として３ブロック（block#0-#2）となる。
【００３１】
図６に示すように、ＮＡＮＤコントローラ１７は、先頭の論理ブロック番号（#0）に対応する物理アドレス（chip#0／block#0）から順次読出し、ＢＧリード処理を実行する（図３を参照）。この際、ＮＡＮＤコントローラ１７は、アクセス数のカウントに基づいて、アクセス対象の物理アドレス（2chip／3block）を算出する。図１０を参照して、当該物理アドレスの算出方法を説明する。図１０に示すように、カウント値（０〜５）が論理ブロックアドレスとなる。このカウント値から、物理アドレスを求めるには、「カウント値／block数」の演算を実行し、当該演算結果である商がchip番号（chip#0／#1）になる。また、当該演算結果である余りがblock番号（block#0／#1）になる。なお、カウント値が、「chip数×block数」より大きい値になったときは、カウンタを初期状態（０）にリセットする。
【００３２】
前述したように、ＮＡＮＤコントローラ１７は、コマンドスケジューラ１９に含まれるアクセスコマンド生成部２７から出力される、アクセスコマンド（アクセス先の論理ブロック番号を含む）に応じて、ＢＧリード処理を実行する。コマンドスケジューラ１９は、読み出し部２３により、アクセス履歴管理テーブル２１を参照し、該当する論理ブロック番号の履歴を読み出す。
【００３３】
コマンドスケジューラ１９は、進捗管理部２５により、該当する論理ブロック番号（例えば、#0）の読出し履歴３１及び消去履歴３２としてフラグ情報（０）が設定されている場合に、ＢＧリード処理を実行するためのアクセスコマンドをＮＡＮＤコントローラ１７に出力する。これにより、ＮＡＮＤコントローラ１７は、当該アクセスコマンドを実行し、論理ブロック番号（#0）の記憶領域に対して読出し動作を実行する。
【００３４】
一方、コマンドスケジューラ１９は、該当する論理ブロック番号（#0）の読出し履歴３１としてフラグ情報（１）が設定されている場合には、既に読出し動作が実行されているため、ＢＧリード処理をスキップ（skip）する。従って、ＮＡＮＤコントローラ１７は、当該論理ブロック番号（#0）の記憶領域に対しては、読出し動作を実行しない。また、該当する論理ブロック番号（#0）の消去履歴３２としてフラグ情報（１）が設定されている場合には、データが記憶されていないため、ＮＡＮＤコントローラ１７は、当該論理ブロック番号（#0）の記憶領域に対しては、読出し動作を実行しない。
【００３５】
コマンドスケジューラ１９は、プログラム部２４により、ＢＧリード処理の実行時には、アクセス履歴管理テーブル２１の該当する論理ブロック番号（#0）の読出し履歴３１として、フラグ情報（１）をセットする。プログラム部２４は、アクセスコマンド解釈部２９のアクセスコマンド解釈結果（読出し動作）を使用してプログラムデータ（１）を生成する。即ち、図４に示すように、アクセス履歴管理テーブル２１の論理ブロック番号（#0）の読出し履歴３１は、フラグ情報（０）からフラグ情報（１）に更新される（４１Ａ）。
【００３６】
ここで、コマンドスケジューラ１９は、当該ＢＧリード処理に伴うアクセス以外の例えばホストアクセスの要因による読出し動作の実行時においても、該当する論理ブロック番号（例えば#2）の読出し履歴３１として、フラグ情報（１）をセットする。即ち、図４に示すように、アクセス履歴管理テーブル２１の論理ブロック番号（#2）の読出し履歴３１は、フラグ情報（０）からフラグ情報（１）に更新される（４１Ｂ）。
【００３７】
なお、コマンドスケジューラ１９は、当該ＢＧリード処理に伴うアクセス以外の要因による消去動作の実行時においては、該当する論理ブロック番号（例えば#2）の消去履歴３２として、フラグ情報（１）をセットする。即ち、図５に示すように、アクセス履歴管理テーブル２１の論理ブロック番号（#2）の消去履歴３２は、フラグ情報（０）からフラグ情報（１）に更新される（５０）。
【００３８】
図９に戻って、コマンドスケジューラ１９は、タイムリミットまでに、アクセス対象範囲である論理ブロック番号（#0-#5）の各記憶領域から読出し動作が完了した時に（Ｓ３のＹＥＳ）、アクセス履歴管理テーブル２１の読出し履歴３１を一括してクリア（０にセット）する。なお、コマンドスケジューラ１９は、消去履歴３２については、ＮＡＮＤコントローラ１７によりＮＡＮＤフラッシュメモリ１２に対してデータの書き込み動作（プログラム）が実行されたときに、該当する論理ブロック番号に対応する消去履歴３２をクリア（０にセット）する。
【００３９】
図８は、アクセスの動作状態を示す図である。ここで、後述する期間８４，８５は、時間軸上において、ＢＧリード処理の制限時間（タイムリミット）までの時間進捗率（０％、５０％、１００％）を示す範囲に相当する。即ち、期間８４の読出し動作の完了時点（８３）は、タイムリミットから時間進捗率５０％以内であることを意味する。また、期間８５の読出し動作の完了時点（８３）は、タイムリミットから、時間進捗率１００％に近い時点であることを意味する。
図８に示すように、電源がＯＮしてから、ホストアクセスが無い期間８４であれば、前述したように、ＳＳＤコントローラ１０は、ＢＧリード処理８２を優先的に実行する（図９のＳ１，Ｓ２を参照）。即ち、ＮＡＮＤコントローラ１７は、優先度通知部２８からの優先度に基づいて、ＢＧリード処理を伴うアクセスコマンドを優先度１位のコマンドとして実行する。
【００４０】
コマンドスケジューラ１９は、タイムリミットまでに、アクセス対象範囲である論理ブロック番号（#0-#5）の読出し動作の完了時点（８３）までＢＧリード処理８２を継続する。ＢＧリード処理を伴うアクセスコマンドに対する優先度通知部２８からの優先度１位は、当該アクセスコマンドの実行完了（８３）でクリアされる。
【００４１】
ここで、コマンドスケジューラ１９のアクセス頻度管理部２２は、進捗管理部２５によりＢＧリード処理によるアクセスの進捗状況を管理する。即ち、進捗管理部２５は、アクセス履歴管理テーブル２１を使用したアクセスの進捗、及びタイマ２６を使用した時間の進捗を管理する。
【００４２】
アクセス頻度管理部２２は、入力情報として、前述したアクセス対象範囲情報（２チップ（Chip0,Chip1）、３ブロック（Block0-Block2））、ＢＧリード処理の制限時間（タイムリミット）を示す時間情報、アクセス履歴管理テーブル２１の最新のポインタ、及びＢＧリード処理の経過時間を入力する。
【００４３】
具体的には、図７に示すように、進捗管理部２５は、アクセス履歴管理テーブル２１から情報を読み出す際の最新のポインタ７０により、ＢＧリード処理によるアクセスの進捗を認識できる。また、進捗管理部２５は、アクセス履歴管理テーブル２１から読み出す情報により、読出履歴３１と消去履歴３２のいずれかが「１」であれば、アクセスが進捗していると認識できる。進捗管理部２５は、所定の計算式「進捗率＝ポインタ値／（アクセス対象範囲＝ブロック数３×チップ数２）×１００」を使用して、例えば、ポインタ値が例えば「３」で、アクセス対象範囲が「６」の場合には、進捗率「５０％」を算出できる。
【００４４】
一方、進捗管理部２５は、時間の進捗は、所定の計算式「進捗率＝ＢＧリード処理の経過時間／制限時間（タイムリミット）×１００」を使用して、例えば、アクセス開始からの経過時間（例えば３６秒）をタイマ２６から求めて、タイムリミットが「３分間」の場合には、進捗率「２０％」を算出できる。
【００４５】
図９に戻って、ＳＳＤコントローラ１０は、ホスト２からのコマンドに応じたホストアクセスを行う場合には（Ｓ１のＹＥＳ）、ホストコマンド処理に移行する（Ｓ４）。即ち、図８に示すように、ＢＧリード処理８２の実行中に、ホストアクセス８１を実行すべき期間８５が発生した場合である。
【００４６】
ＳＳＤコントローラ１０は、ＢＧリード処理８２の実行時に、ホスト２からのコマンドに応じたホストアクセス８１を優先的に実行する（図９のＳ１，Ｓ２を参照）。即ち、ＮＡＮＤコントローラ１７は、コマンドディスパッチャ１８により割り当てられるホストデータアクセスを指示するコマンド１８０を、優先度１位のコマンドとして実行する。これにより、ＮＡＮＤコントローラ１７は、ホストコマンド１８０により指定される、ＮＡＮＤフラッシュメモリ１２の論理ブロックに対するデータの読み出し処理や、書き込み（プログラム）処理を実行する。この時、優先度通知部２８からの優先度１位は、ＢＧリード処理８２のコマンド実行によりクリアされている。
【００４７】
ここで、コマンドスケジューラ１９のアクセス頻度管理部２２は、進捗管理部２５によりＢＧリード処理によるアクセスの進捗状況を管理している(Ｓ５)。即ち、前述したように、進捗管理部２５は、アクセス履歴管理テーブル２１を使用してＢＧリード処理によるアクセスの進捗を監視し、また、当該アクセスの開始からの経過時間からタイムリミットまでの時間の進捗を監視している。
【００４８】
進捗管理部２５は、アクセスの進捗及び時間の進捗の各進捗状況から、ＢＧリード処理が遅れており、特に、タイムリミットまで余裕がない場合(Ｓ６のＮＯ)、その旨を示す進捗結果を優先度通知部２８に出力する。
【００４９】
優先度通知部２８は、進捗管理部２５からの当該進捗結果に基づいて、ＮＡＮＤコントローラ１７のコマンド調停部１７０にＢＧリード処理を伴うアクセスコマンドの優先度として優先度１位を通知する。これにより、ＮＡＮＤコントローラ１７は、ホストアクセス８１を中断し、アクセス頻度管理部２２のアクセスコマンド生成部２７からのＢＧリード処理を伴うアクセスコマンドを優先的に実行する(Ｓ７)。当然ながら、進捗状況に余裕がある場合には(Ｓ６のＹＥＳ)、ＳＳＤコントローラ１０は、ホストアクセス８１を継続する(Ｓ４)。
【００５０】
図８に示すように、ホストアクセス８１を実行すべき期間８５において、ＢＧリード処理８２の進捗状況に応じて、ホストアクセス８１を中断（アクセスブロック８０）し、ＢＧリード処理８２を優先的に実行する。
【００５１】
図９に戻って、ＳＳＤコントローラ１０は、進捗管理部２５の進捗状況に基づいて、ホストアクセス８１とＢＧリード処理８２の実行優先度を変化させて（切替えて）、ＢＧリード処理８２の完了時点（８３）まで繰り返す(Ｓ８)。
【００５２】
以上のように本実施形態によれば、制限時間（タイムリミット）内に実行すべきＢＧリード処理の進捗状況を管理（監視）し、当該進捗状況に基づいて、ＢＧリード処理によるアクセスとホストアクセスの実行優先度を変化させることにより、各アクセスをバランスよく実行できる。
【００５３】
従って、ＢＧリード処理の進捗状況に余裕があれば、ホストアクセスを優先的に実行できるため、ホストアクセスの応答を必要以上に低下させることはない。また、ＢＧリード処理の進捗状況に余裕がない場合には、ＢＧリード処理を優先的に実行できるため、タイムリミット内にＢＧリード処理を完了させることができる。これにより、例えば、３次元構造のＮＡＮＤフラッシュメモリに適用した場合に、タイムリミット内にリード処理を完了できるため、メモリセルから時間経過とともにデータを失っていく事態を確実に回避できる。
【００５４】
さらに、本実施形態によれば、ＢＧリード処理の進捗状況を、アクセス履歴管理テーブル２１を使用することで、ＢＧリード処理のアクセス履歴３１，３２を確実に認識することができる。このため、不要なＢＧリード処理を回避し、結果的にＢＧリード処理を効率的に行うことが可能となる。これにより、結果的に実行すべきＢＧリード処理の総量を減少できるため、ホストアクセスの応答を阻害する確率を低下させることが可能となる。
【００５５】
即ち、ＢＧリード処理のアクセス以外の他のアクセス(ホストアクセス等)を含むリード処理が実行された記憶領域、又は消去によるデータの未記憶領域に対しては、ＢＧリード処理は不要である。本実施形態のＢＧリード処理は、データが記憶されている記憶領域のみからリードする。即ち、消去された記憶領域またはプログラムされていない記憶領域は、ＢＧリード処理によるアクセス対象から除く。
【００５６】
ここで、本実施形態のコマンドスケジューラ１９は、ＢＧリード処理を実行する予定のアクセス対象に対するホストアクセスがある場合、該当アクセス対象に対するＢＧリード処理を完了と判断してもよい。即ち、ホストアクセスによるリード処理によりＢＧリード処理と同様の効果（メモリセルから時間経過とともにデータを失っていく事態の回避）が得られるため、ＢＧリード処理を完了したと見なして中止できる。パトロール処理等のリード処理のアクセス対象についても、同様にＢＧリード処理を完了と判断してもよい。
【００５７】
さらに、本実施形態のＢＧリード処理は、ホストアクセスや、パトロール処理、リフレッシュ処理、コンパクション処理等の他のアクセスとは異なり、メモリセルに対する電圧印加があればよいので、ＢＧリード処理を実行する特定のリードコマンドを設定することで、リード処理時間の短縮化を図ることができる。従って、ＢＧリード処理を高速に行うことが可能であるため、結果的にホストアクセスの応答を阻害する確率を低下させることが可能となる。
【００５８】
具体例としては、例えば、ワード線ＷＬにリードアクセスするが、ＮＡＮＤフラッシュメモリ１２からＳＳＤコントローラ１０にデータを出力しない機能や、当該リードコマンドを中断する機能を含むリードコマンドを設定する。また、チップイネーブル（ＣＥ）を同時に複数制御して、複数のチップから同じブロックをアクセスする機能を含むリードコマンドを設定する。
【００５９】
なお、本実施形態のＢＧリード処理によるアクセス以外の他のアクセスとしては、ホストアクセス以外に、例えば、パトロール処理、リフレッシュ処理、コンパクション処理等のアクセスにも適用可能である。ここで、パトロール処理、リフレッシュ処理、コンパクション処理等に含まれるリード処理は、ホスト２からのコマンドとは関係しないコマンドによる、ＳＳＤ１の自発的な動作である。
【００６０】
一方、本実施形態のＢＧリード処理も、ホスト２からのコマンドとは関係しないコマンドによる、ＳＳＤ１の自発的な動作であるが、前述したように、パトロール処理、リフレッシュ処理、コンパクション処理等に含まれるリード処理とは異なる。具体的には、例えば、パトロール処理は、リード処理により読み出したデータを使用して、プロセッサ１３の制御下でのＥＣＣ回路１３Ａにより記憶状態の検査（ベリファイ）及び誤り訂正を実行する処理を含む。他のリフレッシュ処理やコンパクション処理についても、リード処理により読み出したデータを使用する。これに対して、本実施形態のＢＧリード処理は、データリテンションの改善を目的とするため、前述したように、リード出力データを使用しなくても良い。
[変形例]
図１１は、変形例に関するコマンドスケジューラ１９及び周辺回路の構成を示すブロック図である。以下、本変形例の構成を説明する。なお、本変形例の構成は、図２に示す本実施形態の構成と同様の部分については、同一符号を付して説明を省略する。
【００６１】
本変形例は、コマンドスケジューラ１９において、アクセスコマンド生成部２７は、進捗管理部２５の進捗結果に基づいて、ＢＧリード処理を伴うアクセスコマンドを生成する場合に、優先度通知部２８から出力される優先度を含むアクセスコマンドを生成する。
【００６２】
コマンドディスパッチャ１８は、アクセスコマンド生成部２７からのアクセスコマンドを優先コマンド１８３として保持し、ＮＡＮＤコントローラ１７に割り当てる。なお、コマンドディスパッチャ１８は、ホストデータアクセスを指示するコマンド１８０、コンパクションアクセスを指示するコマンド１８１、及びシステムデータアクセスを指示するコマンド１８２のそれぞれをＮＡＮＤコントローラ１７に割り当てる。
【００６３】
ＮＡＮＤコントローラ１７は、コマンド調停部１７０及びコマンドキュー１７１を含み、コマンド調停部１７０により優先度を調停されたコマンド１７２をコマンドキュー１７１にセットする。コマンドキュー１７１にセットされた各コマンド１７２は、コマンド情報と共に、優先度情報を含む。
【００６４】
コマンド調停部１７０は、例えばラウンドロビン（round robin）方式でコマンド調停処理を実行し、優先コマンド１８３を優先度１位のコマンドとして調停する。同様にして、コマンド調停部１７０は、ホストコマンド１８０、コマンド１８１、及びコマンド１８２のそれぞれを、優先度２位、優先度３位、優先度４位のコマンドとして調停する。
【００６５】
ＮＡＮＤコントローラ１７は、コマンド実行時に、コマンドキュー１７１をサーチして、優先度情報から優先度の高い順にコマンドを発行する。アクセスコマンド解釈部２９は、コマンドキュー１７１から発行されるコマンドを解釈し、当該コマンドの解釈結果からアクセスに伴って実行する読み出し処理、プログラム処理、消去処理の情報を取得する。
【００６６】
以上のような本変形例の構成であれば、ＮＡＮＤコントローラ１７は、コマンド実行時に、優先度情報により設定された優先度(例えば優先度１位)で、ＢＧリード処理を伴うアクセスコマンドを実行する。従って、当該アクセスコマンドの実行完了時に、優先度１位をクリアするような処理は不要である。
【００６７】
なお、本変形例においても、前述したような本実施形態と同様の効果を得ることができる。即ち、ＢＧリード処理によるアクセスとホストアクセスの実行優先度を変化させることにより、各アクセスをバランスよく実行できる。従って、ＢＧリード処理の進捗状況に基づいて、ホストアクセスを優先的に実行して、ホストアクセスの応答を必要以上に低下させない。また、ＢＧリード処理を優先的に実行して、タイムリミット内にＢＧリード処理を完了させることができる。また、ＢＧリード処理を効率的、かつ高速に行うことが可能である。
【００６８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６９】
１…ＳＳＤ、２…ホスト、１０…ＳＳＤコントローラ、１１…バッファメモリ、
１２（１２-1〜１２-n）…ＮＡＮＤフラッシュメモリ、
１３…プロセッサ（CPU）、１４…ホストインターフェース（I/F）コントローラ、
１５…バッファコントローラ、１６…ＦＴＬコントローラ、
１７（１７-1〜１７-n）…ＮＡＮＤコントローラ、
１８…コマンドディスパッチャ、１９…コマンドスケジューラ、
２０…アクセス履歴管理部、２１…アクセス頻度管理部、
２３…アクセス履歴管理テーブルの読み出し部、
２４…アクセス履歴管理テーブルのプログラム部、２５…進捗管理部、２６…タイマ、
２７…アクセスコマンド生成部、２８…優先度通知部、
２９…アクセスコマンド解釈部。
【図１】
2019160364.tif 000003
【図２】
2019160364.tif 000004
【図３】
2019160364.tif 000005
【図４】
2019160364.tif 000006
【図５】
2019160364.tif 000007
【図６】
2019160364.tif 000008
【図７】
2019160364.tif 000009
【図８】
2019160364.tif 000010
【図９】
2019160364.tif 000011
【図１０】
2019160364.tif 000012
【図１１】
2019160364.tif 000013