(57)【要約】【課題】キャッシュするデータ量の増大を抑制すると共に、ＮＡＮＤ型フラッシュメモリチップの疲弊を遅らせることができるメモリシステムおよびメモリシステムの制御方法を提供する。【解決手段】メモリシステムは、不揮発性の記憶部と、記憶部を制御するメモリコントローラとを備える。メモリコントローラは、第１の計数回路と、第２の計数回路と、キャッシュ制御回路とを備える。第１の計数回路は、ホストからのリード回数を、第１のカウント単位のデータごとに計数する。第２の計数回路は、第１のカウント単位の第１データに対するリード回数が第１の閾値を超えた場合に、当該第１データに含まれるデータ領域を示す物理的または論理的な単位である第２のカウント単位のデータごとのリード回数を計数する。キャッシュ制御回路は、第２のカウント単位の第２データに対するリード回数が第２の閾値を超えた場合に当該第２データをキャッシュする。【選択図】図１
2019056972.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の記憶部と、
前記記憶部を制御するメモリコントローラと、
を備えるメモリシステムであって、
前記メモリコントローラは、
ホストからのリード回数を、前記記憶部のデータ領域を示す単位であって前記記憶部に記憶されたデータを消去可能な単位である第１のカウント単位のデータごとに計数する第１の計数回路と、
前記第１のカウント単位の第１データに対する前記リード回数が第１の閾値を超えた場合に、当該第１データに含まれるデータ領域を示す物理的または論理的な単位である第２のカウント単位のデータごとの前記リード回数を計数する第２の計数回路と、
前記第２のカウント単位の第２データに対する前記リード回数が第２の閾値を超えた場合に、当該第２データをキャッシュするキャッシュ制御回路と、
を備えたメモリシステム。
【請求項２】
前記メモリコントローラは、
前記ホストからのコマンドを受け、前記コマンドに対するレスポンスを前記ホストに返す第１回路部と、
前記第１回路部から前記コマンドを受け、前記コマンドに基づいて前記記憶部にアクセスを行う第２回路部と、を備え、
前記第２回路部は、
前記第１の計数回路と、
前記第２の計数回路と、を含む、
請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、
前記ホストからのコマンドを受け、前記コマンドに対するレスポンスを前記ホストに返す第１回路部と、
前記第１回路部から前記コマンドを受け、前記コマンドに基づいて前記記憶部にアクセスを行う第２回路部と、を備え、
前記第２回路部は、
前記第１の計数回路を含み、
前記第１の計数回路は、前記第１のカウント単位の第１データに対する前記リード回数が前記第１の閾値を超えた場合に、前記第１の閾値を超えた前記第１データに含まれる前記第２のカウント単位を、前記第１回路部に通知し、
前記第１回路部は、
前記第２の計数回路を含み、
前記第２の計数回路は、前記第２回路部から通知された前記第２のカウント単位のデータごとの前記リード回数を計数する、
請求項１に記載のメモリシステム。
【請求項４】
前記第２のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックを複数含み、前記ホストからリード要求がされる単位である、論理ブロックのグループである、
請求項１から３のいずれか１項に記載のメモリシステム。
【請求項５】
前記第２のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページを予め定められたデータサイズごとに分割した論理的な単位であり、かつ、前記ホストからの最小アクセス単位である論理ブロックを複数含む、
請求項１から３のいずれか１項に記載のメモリシステム。
【請求項６】
前記第２のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックである、
請求項１から３のいずれか１項に記載のメモリシステム。
【請求項７】
前記第２のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページである、
請求項１から３のいずれか１項に記載のメモリシステム。
【請求項８】
前記メモリコントローラは、リード回数が第３の閾値を超えた前記第１のカウント単位に対するリフレッシュを実行するリフレッシュ制御回路、をさらに備える、
請求項１から７のいずれか１項に記載のメモリシステム。
【請求項９】
前記第１の閾値は、前記第３の閾値より小さく、
前記第２の閾値は、前記第１の閾値より小さい、
請求項８に記載のメモリシステム。
【請求項１０】
不揮発性の記憶部と、
前記記憶部を制御するメモリコントローラと、を備えるメモリシステムの制御方法であって、
ホストからのリード回数を、前記記憶部のデータ領域を示す単位であって前記記憶部に記憶されたデータを消去可能な単位である第１のカウント単位のデータごとに計数することと、
前記第１のカウント単位の第１データに対する前記リード回数が第１の閾値を超えた場合に、当該第１データに含まれるデータ領域を示す物理的または論理的な単位である第２のカウント単位のデータごとの前記リード回数を計数することと、
前記第２のカウント単位の第２データに対する前記リード回数が第２の閾値を超えた場合に、当該第２データをキャッシュすることと、
を含むメモリシステムの制御方法。
【請求項１１】
前記メモリコントローラは、
前記ホストからのコマンドを受け、前記コマンドに対するレスポンスを前記ホストに返す第１回路部と、
前記第１回路部から前記コマンドを受け、前記コマンドに基づいて前記記憶部にアクセスを行う第２回路部と、を備え、
前記第１のカウント単位の第１データに対する前記リード回数が前記第１の閾値を超えた場合に、前記第１の閾値を超えた前記第１データに含まれる前記第２のカウント単位を、前記第２回路部が前記第１回路部に通知することと、
前記第２回路部から通知された前記第２のカウント単位のデータごとの前記リード回数を、前記第１回路部が計数することと、をさらに含む、
請求項１０に記載のメモリシステムの制御方法。
【請求項１２】
前記第２のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックを複数含み、前記ホストからリード要求がされる単位である、論理ブロックのグループである、
請求項１０または１１に記載のメモリシステムの制御方法。
【請求項１３】
前記第２のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページを予め定められたデータサイズごとに分割した論理的な単位であり、かつ、前記ホストからの最小アクセス単位である論理ブロックを複数含む、
請求項１０または１１に記載のメモリシステムの制御方法。
【請求項１４】
前記第２のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックである、
請求項１０または１１に記載のメモリシステムの制御方法。
【請求項１５】
前記第２のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページである、
請求項１０または１１に記載のメモリシステムの制御方法。
【請求項１６】
リード回数が第３の閾値を超えた前記第１のカウント単位に対するリフレッシュを実行すること、をさらに含む、
請求項１０から１５のいずれか１項に記載のメモリシステムの制御方法。
【請求項１７】
前記第１の閾値は、前記第３の閾値より小さく、
前記第２の閾値は、前記第１の閾値より小さい、
請求項１６に記載のメモリシステムの制御方法。
【請求項１８】
不揮発性の記憶部と、
前記記憶部を制御するメモリコントローラと、
を備えるメモリシステムであって、
前記メモリコントローラは、
前記記憶部に記憶されたデータに対するホストからのリード回数を、前記記憶部のデータ領域を示す単位であって前記記憶部に記憶されたデータの所定の領域を示す第１のカウント単位ごとと、前記リード回数が第１の閾値を超えた前記第１のカウント単位に含まれ、かつ、前記第１のカウント単位よりも小さいデータ領域を示す物理的または論理的な単位である第２のカウント単位ごとと、の少なくとも２段階に分けて計数する計数回路と、
前記計数回路が前記リード回数を計数する単位のうち、最も小さいデータ領域を示す単位において、前記リード回数が第２の閾値を超えた場合に、当該単位で示される前記記憶部のデータ領域に記憶されたデータをキャッシュするキャッシュ制御回路と、
を備えたメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
【背景技術】
【０００２】
従来、ＮＡＮＤ型フラッシュメモリチップを記憶媒体に用いたＳＳＤ（Solid  State  Drive）などのメモリシステムが知られている。一般に、ＮＡＮＤ型フラッシュメモリチップは、アクセス回数が多いほど疲弊が進行する。このため、従来技術では、例えば、ホストからのリード回数が多いデータをＲＡＭ等のキャッシュ領域に格納することにより、ＮＡＮＤ型フラッシュメモリチップへのアクセス回数を削減していた。
【０００３】
しかしながら、メモリシステムが保有するキャッシュ領域は有限である。このため、ＮＡＮＤ型フラッシュメモリチップへのアクセス回数を削減するためにデータをキャッシュするにあたり、限られたキャッシュ領域をより有効に活用することが求められていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５４８３３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一つの実施形態は、キャッシュするデータ量の増大を抑制すると共に、ＮＡＮＤ型フラッシュメモリチップの疲弊を遅らせることができるメモリシステムおよびメモリシステムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施形態によれば、メモリシステムは、不揮発性の記憶部と、記憶部を制御するメモリコントローラと、を備える。メモリコントローラは、第１の計数回路と、第２の計数回路と、キャッシュ制御回路とを備える。第１の計数回路は、ホストからのリード回数を、記憶部のデータ領域を示す単位であって第記憶部に記憶されたデータを消去可能な単位である第１のカウント単位のデータごとに計数する。第２の計数回路は、第１のカウント単位の第１データに対するリード回数が第１の閾値を超えた場合に、当該第１データに含まれるデータ領域を示す物理的または論理的な単位である第２のカウント単位のデータごとのリード回数を計数する。キャッシュ制御回路は、第２のカウント単位の第２データに対するリード回数が第２の閾値を超えた場合に、当該第２データをキャッシュする。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかるメモリシステムの全体構成の一例を模式的に示す図である。
【図２】図２は、第１の実施形態にかかるメモリシステムにおけるデータの管理単位の一例を模式的に示す図である。
【図３】図３は、第１の実施形態にかかるメモリコントローラの機能の一例を模式的に示す図である。
【図４】図４は、第１の実施形態にかかる統計開始閾値とリフレッシュ閾値の一例を示すグラフである。
【図５】図５は、第１の実施形態にかかる論理ブロックのグループごとのリード回数の計数結果の一例を示すグラフである。
【図６】図６は、第１の実施形態にかかる第１の計数処理の手順の一例を示すフローチャートである。
【図７】図７は、第１の実施形態にかかる第２の計数処理の手順の一例を示すフローチャートである。
【図８】図８は、第２の実施形態にかかるメモリシステムの全体構成の一例を模式的に示す図である。
【図９】図９は、第２の実施形態にかかるメモリコントローラの機能の一例を模式的に示す図である。
【図１０】図１０は、第２の実施形態にかかる第１の計数処理の手順の一例を示すフローチャートである。
【図１１】図１１は、第２の実施形態にかかる第２の計数処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、本実施形態にかかるメモリシステム１０の全体構成の一例を模式的に示す図である。図１に示すように、メモリシステム１０は、ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリという）１１と、メモリコントローラ１２と、を備える。メモリシステム１０の一例として、ＮＡＮＤメモリ１１を記憶媒体に用いたＳＳＤ（Solid  State  Drive）がある。
【００１０】
ＮＡＮＤメモリ１１は、不揮発に情報を記憶することができる記憶媒体である。ＮＡＮＤメモリ１１は、例えば、ホスト５０から送信されるユーザデータ、メモリシステム１０の管理情報、システムデータ等を記憶する。また、ＮＡＮＤメモリ１１は、例えば、複数のメモリチップによって構成され、各メモリチップは、物理ブロックを複数含んで構成される。ＮＡＮＤメモリ１１の詳細については、図２で後述する。ＮＡＮＤメモリ１１は、本実施形態における記憶部の一例である。
【００１１】
メモリコントローラ１２は、ホスト５０からのコマンドにしたがって、ＮＡＮＤメモリ１１へのデータの書き込み、またはＮＡＮＤメモリ１１からのデータの読み出しなどを行う。メモリコントローラ１２は、フロントエンド部２０と、バックエンド部３０と、を有する。
【００１２】
フロントエンド部２０は、ホスト５０から受けたコマンドをバックエンド部３０に渡し、バックエンド部３０からのコマンドに対するレスポンスをホスト５０に返す機能を有する。フロントエンド部２０は、本実施形態における第１回路部の一例である。
【００１３】
フロントエンド部２０は、ＰＨＹ（PHYsical  Layer  チップ）２１と、ホストインタフェース２２と、第１のＣＰＵ２４と、を有する。
【００１４】
第１のＣＰＵ２４は、ファームウェアに基づいてフロントエンド部２０を制御する。また、第１のＣＰＵ２４は、図示しないＲＯＭ等の記憶装置から読み出したプログラムを実行することで様々な制御を行うことができる。
【００１５】
ＰＨＹ２１は、ホスト５０に対する入出力部に対応し、ホスト５０の入出力部に対応するＰＨＹ５１との間で電気的な信号をやり取りする。
【００１６】
ホストインタフェース２２は、バックエンド部３０とホスト５０との間でプロトコル変換を行い、データ、コマンド、アドレスの転送（送受信）を制御する。
【００１７】
バックエンド部３０は、フロントエンド部２０からのコマンドに基づいて、ＮＡＮＤメモリ１１に対するデータの書き込み及び読み出しを行う機能を有する。バックエンド部３０は、本実施形態における第２回路部の一例である。
【００１８】
バックエンド部３０は、コマンドコントローラ３１と、ＮＡＮＤコマンドディスパッチャ３３（以下、ディスパッチャ３３という）と、ＮＡＮＤコントローラ３６と、ＲＡＭ３７と、第２のＣＰＵ４０と、を有する。
【００１９】
ＲＡＭ３７は、アドレス変換テーブル３２と、ライトバッファ３４と、リードバッファ３５と、キャッシュ５２と、計数情報５３と、を記憶する。ＲＡＭ３７は、例えば、ＳＲＡＭ（Static  Random  Access  Memory）、ＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等である。
【００２０】
アドレス変換テーブル３２は、コマンドで指定される論理アドレスとＮＡＮＤメモリ１１の物理アドレスとの間の対応関係を示す情報である。より詳細には、アドレス変換テーブル３２は、ＮＡＮＤメモリ１１に記憶されたデータを消去可能な単位である物理ブロック内のある物理的な位置情報と、物理ブロックよりも小さいデータ領域を示すデータの管理単位（物理ページＰ、クラスタ７０、論理ブロック７１、グループＧ）と、のマッピングを記憶する情報である。データの管理単位については、図２で後述する。
【００２１】
アドレス変換テーブル３２は、メモリシステム１０の起動時に、ＮＡＮＤメモリ１１から読み出され、ＲＡＭ３７に格納される。またアドレス変換テーブル３２は、論理アドレスと物理アドレスの対応関係が変更されたことに応じて更新される。アドレス変換テーブル３２は、所定のタイミング（たとえば電源断時や所定時間毎など）にＮＡＮＤメモリ１１に格納される。
【００２２】
ライトバッファ３４は、ＮＡＮＤメモリ１１へ書き込むデータを一時的に格納する。ライトコマンドがフロントエンド部２０からバックエンド部３０に渡されたことに応じてライトバッファ３４へデータが転送される。このデータは、ホストインタフェース２２を介して転送される。
【００２３】
リードバッファ３５は、ＮＡＮＤメモリ１１から読みだされたデータを一時的に格納する。このデータは、ＮＡＮＤコントローラ３６を介してリードバッファ３５に書き込まれる。
【００２４】
キャッシュ５２は、ＮＡＮＤメモリ１１に記憶されたデータの一部がキャッシュされるデータ領域である。キャッシュ５２はリードキャッシュであり、ホスト５０がリードする対象のデータがキャッシュ５２に格納されている場合は、ＮＡＮＤメモリ１１からではなく、キャッシュ５２から対象のデータが読み出される。キャッシュ５２は、メモリコントローラ１２の外部のＤＲＡＭ等に設けられても良い。
【００２５】
計数情報５３は、ＮＡＮＤメモリ１１に記憶されたデータがリードされた回数の計数結果である。より詳細には、図２で後述するデータの管理単位ごとに、計数されたリード回数がＲＡＭ３７に格納される。
【００２６】
第２のＣＰＵ４０は、ファームウェアに基づいてバックエンド部３０を制御する。また、第２のＣＰＵ４０は、図示しないＲＯＭ等の記憶装置から読み出したプログラムを実行することで様々な制御を行うことができる。
【００２７】
コマンドコントローラ３１は、フロントエンド部２０からコマンドを受信すると、そのコマンドの種類（ライト要求のコマンドか、リード要求のコマンドかなど）を識別（判断）して、ディスパッチャ３３にコマンドを渡す。
【００２８】
ディスパッチャ３３は、フロントエンド部２０からのコマンドを、ＮＡＮＤコントローラ３６に渡すためのコマンドに変換して、ＮＡＮＤコントローラ３６へ送出する。
【００２９】
ＮＡＮＤコントローラ３６は、ＮＡＮＤメモリ１１に対して、アドレスに基づいてデータの読み出しまたは書き込みの制御を行う。たとえば、ディスパッチャ３３からライトコマンドを受けると、そのライトコマンドに基づいて、書き込みデータをライトバッファ３４から取得し、ＮＡＮＤメモリ１１へと書き込む。また、ディスパッチャ３３からリードコマンドを受けると、そのリードコマンドに基づいてＮＡＮＤメモリ１１からリードデータを読み出し、リードバッファ３５に格納する。
【００３０】
図２は、本実施形態にかかるメモリシステム１０におけるデータの管理単位の一例を模式的に示す図である。図２に示すように、ＮＡＮＤメモリ１１には、複数の物理ブロック６０が含まれる。
【００３１】
物理ブロック６０は、ＮＡＮＤメモリ１１において一括してデータの消去（Erase）が可能な単位である。また、ＮＡＮＤメモリ１１に対するデータの書き込み（ライト）および読み出し（リード）が可能な単位が物理ページＰである。１つの物理ブロック６０は、複数の物理ページＰを含む。ＮＡＮＤメモリ１１に対するデータのリードとライトを総称して、ＮＡＮＤメモリ１１に対するアクセスという。
【００３２】
論理ブロック７１は、ホスト５０からの最小アクセス単位である。図２において破線で示すように、論理ブロック７１は、１つの物理ブロック６０内に複数含まれる。論理ブロック７１は、例えばＬＢＡ（Logical  Block  Addressing）によって特定される。また、論理ブロック７１は、セクタともいう。
【００３３】
物理ページＰは、１つの物理ブロック６０に複数含まれ、かつ、複数のクラスタを含む。また、物理ページＰは、ＮＡＮＤメモリ１１に対するデータの書き込みおよび読み出しが可能な単位である。
【００３４】
クラスタ７０は、物理ページＰよりも小さい単位であり、かつ、論理ブロック７１よりも大きいデータ領域を示す単位である。より詳細には、クラスタ７０は、物理ページＰを、予め定められたデータサイズごとに分割した単位であり、かつ、論理ブロック７１を複数含む。
【００３５】
図２において２重線で示すように、１つのクラスタ７０は論理ブロック７１を３つ含む。また、１つの物理ページＰには、３つのクラスタ７０が含まれる。図２におけるクラスタ７０に含まれる論理ブロック７１、および物理ページＰに含まれるクラスタ７０の数はそれぞれ一例であり、これらに限定されるものではない。
【００３６】
また、図２に示すように、論理ブロック７１に対応付けられたデータに応じて、複数の論理ブロック７１を含む論理ブロックのグループＧ（以下、グループＧという）が生成される。物理ブロック６０にデータが書き込みされた場合に、当該データが書き込まれたデータ領域に対応付けられる複数の論理ブロック７１が、１つのグループＧとして生成される。また、グループＧは、ホスト５０からリード要求がされる単位でもある。グループＧが示すデータ領域の範囲（つまり、グループＧに含まれる論理ブロック７１）は、ＮＡＮＤメモリ１１にデータが書き込まれた際に決定される。例えば、図２に示すグループＧは、６つの論理ブロック７１を含む。図２におけるグループＧに含まれる論理ブロック７１の数は一例であり、これに限定されるものではない。また、グループＧに含まれる論理ブロック７１の数は、グループＧごとに、異なっても良い。
【００３７】
また一般に、論理ブロック７１のグループＧは、クラスタ７０よりも大きい単位である。図２では、太線で囲まれた範囲として示されるように、グループＧの範囲は、一例として、２つのクラスタ７０を含む。あるいは、論理ブロック７１のグループＧは、クラスタ７０と同じ大きさであっても良い。
【００３８】
データのアクセスまたは管理の各単位（物理ブロック６０、物理ページＰ、クラスタ７０、論理ブロック７１、グループＧ）の対応付け（マッピング）は、アドレス変換テーブル３２に記憶される。また、図２に示すデータの各管理単位の大きさは一例であり、これに限定されるものではない。
【００３９】
図３は、本実施形態にかかるメモリコントローラ１２の機能の一例を模式的に示す図である。図３に示すように、メモリコントローラ１２のフロントエンド部２０は、第１のコマンド制御部２０１と、第１のデータ送受信制御部２０２と、を備える。
【００４０】
第１のコマンド制御部２０１は、コマンドの送受信を制御する。より詳細には、第１のコマンド制御部２０１は、ＰＨＹ２１がホスト５０から受信したコマンドをバックエンド部３０に渡すように、ホストインタフェース２２を制御する。
【００４１】
第１のデータ送受信制御部２０２は、データの送受信を制御する。より詳細には、第１のデータ送受信制御部２０２は、ホスト５０からのリード要求のコマンドに従ってバックエンド部３０から送信されたデータを、ホスト５０に送信するように、ホストインタフェース２２およびＰＨＹ２１を制御する。
【００４２】
フロントエンド部２０の各機能部（第１のコマンド制御部２０１、第１のデータ送受信制御部２０２）は、ハードウェア回路によって実現される。あるいは、フロントエンド部２０の各機能部は、第１のＣＰＵ２４が記憶装置からプログラムを実行することによって実現されてもよい。
【００４３】
メモリコントローラ１２のバックエンド部３０は、第２のコマンド制御部３０１と、アドレス変換部３０２と、第２のデータ送受信制御部３０３と、第１の計数部３０４と、第２の計数部３０５と、キャッシュ制御部３０６と、リフレッシュ制御部３０７と、を備える。
【００４４】
第２のコマンド制御部３０１は、コマンドコントローラ３１、ディスパッチャ３３、ＮＡＮＤコントローラ３６を制御し、フロントエンド部２０から送信されたコマンドのバックエンド部３０内での受け渡しを制御する。より詳細には、第２のコマンド制御部３０１は、コマンドコントローラ３１がフロントエンド部２０から受信したコマンドのディスパッチャ３３への受け渡しを制御する。また、第２のコマンド制御部３０１は、ディスパッチャ３３からＮＡＮＤコントローラ３６へのコマンドの受け渡しを制御する。
【００４５】
アドレス変換部３０２は、フロントエンド部２０から送信されたコマンドで指定される論理アドレスを、アドレス変換テーブル３２を用いて、ＮＡＮＤメモリ１１の物理アドレスに変換し、ディスパッチャ３３に受け渡す。あるいは、論理アドレスから物理アドレスへの変換は、ディスパッチャ３３が行っても良い。
【００４６】
第２のデータ送受信制御部３０３は、コマンドコントローラ３１とＮＡＮＤコントローラ３６を制御することにより、フロントエンド部２０とＮＡＮＤメモリ１１との間のデータの送受信の制御を行う。
【００４７】
第１の計数部３０４は、ホスト５０からＮＡＮＤメモリ１１へのリード回数を、物理ブロック６０毎に計数する。より詳細には、第１の計数部３０４は、アドレス変換部３０２が、受信したコマンドに基づいて変換した物理アドレスを取得して、当該コマンドに応じてリードされる物理ブロック６０を特定し、計数情報５３に記憶された当該物理ブロック６０のリード回数を更新する。物理ブロック６０は、本実施形態における第１のカウント単位の一例である。また、第１の計数部３０４が行う計数処理を、第１の計数処理という。
【００４８】
また、第１の計数部３０４は、ＮＡＮＤメモリ１１へのリード回数を計数するため、リード対象のデータがキャッシュ５２に記憶されている場合は、当該リード回数はカウントしない。
【００４９】
また、第１の計数部３０４は、いずれかの物理ブロック６０のリード回数が所定の統計開始閾値を超えた場合に、アドレス変換テーブル３２を用いて当該物理ブロック６０に含まれる（対応付けられた）グループＧを特定する。第１の計数部３０４は、第２の計数部３０５に、特定されたグループＧを通知する。あるいは、第１の計数部３０４は、リード回数が統計開始閾値を超えた物理ブロック６０を第２の計数部３０５に通知し、第２の計数部３０５がグループＧを特定しても良い。
【００５０】
統計開始閾値は、物理ブロック６０に含まれるグループＧが、リード回数の計数の対象となるか否かを切り分けるための基準となる閾値である。統計開始閾値は、物理ブロック６０がリフレッシュされる基準となるリフレッシュ閾値よりも小さい値となるように予め定められる。統計開始閾値は、本実施形態における第１の閾値の一例である。また、リフレッシュ閾値は、本実施形態における第３の閾値の一例である。
【００５１】
図４は、本実施形態にかかる統計開始閾値とリフレッシュ閾値の一例を示すグラフである。図４のグラフの縦軸はある１つの物理ブロック６０のリード回数であり、横軸は時間である。例えば、物理ブロック６０のリード回数が、リフレッシュ閾値の一例である“１００回”を超えた場合に、後述するリフレッシュ制御部３０７によって当該物理ブロック６０がリフレッシュされるとする。統計開始閾値は、リフレッシュ閾値よりも小さい値であり、例えば、“６０回”とする。図４に示すリフレッシュ閾値および統計開始閾値の値は一例であり、これに限定されるものではない。
【００５２】
また、第１の計数部３０４は、物理ブロック６０が、後述するリフレッシュ制御部３０７によってリフレッシュされた場合、計数情報５３に記憶された当該物理ブロック６０に対するリード回数を“０”に戻す。
【００５３】
図３に戻り、第２の計数部３０５は、リード回数が統計開始閾値を超えた物理ブロック６０に含まれるグループＧごとのリード回数を計数する。より詳細には、第２の計数部３０５は、フロントエンド部２０から送信されたコマンドで指定された論理ブロック７１が含まれるグループＧを特定し、当該グループＧが計数の対象である場合に、計数情報５３に記憶された当該グループＧのリード回数を更新する。グループＧは、本実施形態における第２のカウント単位の一例である。また、第２の計数部３０５が行う計数処理を、第２の計数処理という。
【００５４】
また、第２の計数部３０５は、ＮＡＮＤメモリ１１へのリード回数を計数するため、リード対象のデータがキャッシュ５２にキャッシュされている場合は、当該リード回数はカウントしない。
【００５５】
図５は、本実施形態にかかるグループＧごとのリード回数の計数結果の一例を示すグラフである。例えば、１つの物理ブロック６０に、６つのグループＧ１〜Ｇ６が対応付けられているとする。第２の計数部３０５は、図５に示すように、各グループＧ１〜Ｇ６のそれぞれに対するホスト５０からのリード回数を計数する。
【００５６】
また、第２の計数部３０５は、一定期間計数をしてもリード回数が計数対象閾値を超えないグループＧは、計数の対象から除外しても良い。例えば、図５に示すように、計数対象閾値を“５回”とする場合、一定期間計数をしてもグループＧ３のリード回数が“５回”を超えない場合、第２の計数部３０５は、グループＧ３を計数の対象から除外しても良い。図５に示す計数対象閾値の値は一例であり、これに限定されるものではない。
【００５７】
また、第２の計数部３０５は、いずれかのグループＧのリード回数が所定のキャッシュ閾値（例えば“２０回”）を超えた場合に、当該グループＧを、キャッシュ制御部３０６に通知する。キャッシュ閾値は、統計開始閾値よりも小さい値とする。図５に示すキャッシュ閾値の値は一例であり、これに限定されるものではない。キャッシュ閾値は、本実施形態における第２の閾値の一例である。
【００５８】
また、第２の計数部３０５は、物理ブロック６０が、後述するリフレッシュ制御部３０７によってリフレッシュされた場合、当該物理ブロック６０に対応付けられたグループＧについて、計数情報５３に記憶されたリード回数を“０”に戻す。また、第２の計数部３０５は、ホスト５０からのライト要求に応じて論理ブロック７１にデータがライトされた場合に、当該論理ブロック７１を含むグループＧについて、計数情報５３に記憶されたリード回数を“０”に戻す。
【００５９】
図３に戻り、キャッシュ制御部３０６は、リード回数がキャッシュ閾値を超えたグループＧが示すデータ領域に記憶されたデータを、キャッシュ５２にキャッシュする。本実施形態のキャッシュ制御部３０６は、物理ブロック６０に含まれるグループＧが示すデータをキャッシュ対象とするため、物理ブロック６０単位でキャッシュする場合と比べて、キャッシュされるデータ量の増大を抑制することができる。
【００６０】
また、キャッシュ制御部３０６は、論理ブロック７１に対してライト要求がされた場合に、キャッシュ５２に格納されたキャッシュデータのうち、当該論理ブロック７１に対応付けられたデータを無効化する。また、キャッシュ制御部３０６は、キャッシュ５２に格納されたキャッシュデータのうち、既にリフレッシュされた物理ブロック６０に対応付けられていたものがあれば、当該データを、新たにリード回数がキャッシュ閾値を超えたグループＧに対応付けられたデータで上書きしても良い。
【００６１】
リフレッシュ制御部３０７は、リード回数がリフレッシュ閾値を超えた物理ブロック６０のリフレッシュを実行する。また、リフレッシュ制御部３０７は、リフレッシュをした物理ブロック６０を、第１の計数部３０４、第２の計数部３０５、およびキャッシュ制御部３０６に通知する。
【００６２】
図４に戻り、破線ａは、データのキャッシュが行われなかった場合におけるリード回数の想定値を示す。また、実線ｂは、リード回数が多いデータがキャッシュ制御部３０６によってキャッシュされた場合におけるリード回数の値を示す。キャッシュ制御部３０６がリード回数の多いデータをキャッシュすることにより、ＮＡＮＤメモリ１１へのリード回数が少なくなる。このため、物理ブロック６０ごとのリード回数がリフレッシュ閾値を超えることを遅らせることができ、リフレッシュ回数を低減することができる。
【００６３】
次に、本実施形態の計数処理について説明する。図６は、本実施形態にかかる第１の計数処理の手順の一例を示すフローチャートである。
【００６４】
バックエンド部３０のコマンドコントローラ３１は、フロントエンド部２０から受信したコマンドの種類が、リード要求のコマンドか否かを判断する（Ｓ１）。また、アドレス変換部３０２は、フロントエンド部２０から送信されたコマンドで指定される論理アドレスを、アドレス変換テーブル３２を用いて、ＮＡＮＤメモリ１１での物理アドレスに変換する。
【００６５】
リード要求のコマンドを受信しない場合（Ｓ１“Ｎｏ”）、コマンドコントローラ３１はＳ１の処理を繰り返す。
【００６６】
コマンドコントローラ３１がリード要求のコマンドを受信した場合（Ｓ１“Ｙｅｓ”）、第１の計数部３０４は、当該リード要求の対象の物理ブロック６０を、アドレス変換部３０２が変換した物理アドレスに基づいて特定し、当該物理ブロック６０単位でリード回数を計数する（Ｓ２）。第１の計数部３０４は、ＲＡＭ３７に記憶された計数情報５３を更新する。
【００６７】
そして、第１の計数部３０４は、リード回数が統計開始閾値を超えた物理ブロック６０があるか否かを判断する（Ｓ３）。
【００６８】
リード回数が統計開始閾値を超えた物理ブロック６０が無い場合は（Ｓ３“Ｎｏ”）、この処理は終了する。
【００６９】
リード回数が統計開始閾値を超えた物理ブロック６０がある場合は（Ｓ３“Ｙｅｓ”）、第１の計数部３０４は、当該物理ブロック６０に対応付けられたグループＧを特定する。そして、第１の計数部３０４は、第２の計数部３０５に、特定されたグループＧを通知し、第２の計数処理を開始させる（Ｓ４）。第２の計数処理は、第２の計数部３０５によって実行される、通知されたグループＧ単位によるリード回数の計数処理である。第２の計数処理の具体的なフローについては後述する。
【００７０】
次に、リフレッシュ制御部３０７は、リード回数がリフレッシュ閾値を超えた物理ブロック６０があるか否かを判断する（Ｓ５）。
【００７１】
リード回数がリフレッシュ閾値を超えた物理ブロック６０が無い場合は（Ｓ５“Ｎｏ”）、この処理は終了する。
【００７２】
リード回数がリフレッシュ閾値を超えた物理ブロック６０がある場合は（Ｓ５“Ｙｅｓ”）、リフレッシュ制御部３０７は、当該物理ブロック６０のリフレッシュを実行する（Ｓ６）。リフレッシュ制御部３０７は、リフレッシュをした物理ブロック６０を、第１の計数部３０４、第２の計数部３０５、およびキャッシュ制御部３０６に通知する。第１の計数部３０４および第２の計数部３０５は、リフレッシュされた物理ブロック６０に対応する計数情報５３をクリアし、“０”に戻す（Ｓ７）。その後、この処理は終了する。
【００７３】
次に、本実施形態の第２の計数処理について説明する。図７は、本実施形態にかかる第２の計数処理の手順の一例を示すフローチャートである。この処理は、図６のＳ４において開始される処理である。
【００７４】
図６のＳ１と同様に、バックエンド部３０のコマンドコントローラ３１は、フロントエンド部２０から受信したコマンドの種類が、リード要求のコマンドか否かを判断する（Ｓ１１）。リード要求のコマンドを受信しない場合（Ｓ１１“Ｎｏ”）、コマンドコントローラ３１はＳ１１の処理を繰り返す。
【００７５】
コマンドコントローラ３１がリード要求のコマンドを受信した場合（Ｓ１１“Ｙｅｓ”）、第２の計数部３０５は、リード回数が統計開始閾値を超えた物理ブロック６０に含まれる計数対象のグループＧ単位で、リード回数を計数する（Ｓ１２）。第２の計数部３０５は、計数情報５３に記憶されたグループＧのリード回数を更新する。
【００７６】
そして、第２の計数部３０５は、リード回数がキャッシュ閾値を超えたグループＧがあるか否かを判断する（Ｓ１３）。
【００７７】
リード回数がキャッシュ閾値を超えたグループＧが無い場合は（Ｓ１３“Ｎｏ”）、この処理は終了する。
【００７８】
リード回数がキャッシュ閾値を超えたグループＧがある場合は（Ｓ１３“Ｙｅｓ”）、第２の計数部３０５は、当該グループＧを、キャッシュ制御部３０６に通知する。
【００７９】
キャッシュ制御部３０６は、通知されたグループＧに対応するデータを、キャッシュ５２としてＮＡＮＤメモリ１１からＲＡＭ３７にキャッシュする（Ｓ１４）。
【００８０】
当該処理の後は、リード回数がキャッシュ閾値を超えたグループＧに対応付けられたデータが、キャッシュ５２にキャッシュされるので、ホスト５０から当該データのリード要求を受信した場合、当該キャッシュ５２からデータが読み出されることになる。これにより、物理ブロック６０に含まれるグループＧに対するリードが低減されるので、物理ブロック６０のリード回数を減らすことができる。
【００８１】
このように、本実施形態は、物理ブロック６０単位のリード回数が統計開始閾値を超えた場合に、物理ブロック６０に含まれるグループＧ単位のリード回数を計数する、という２段階に分けたリード回数の計数を行うこととした。これにより、物理ブロック６０単位ではなく、より小さい単位であるグループＧ単位で所望のデータをキャッシュすることができる。
【００８２】
図６及び図７を用いて説明したフローチャートは、第１の計数処理および第２の計数処理の手順の一例であり、各処理の実行タイミングは、これに限定されるものではない。
【００８３】
このように、本実施形態にかかるメモリシステム１０は、ホスト５０からのリード回数の計数を、物理ブロック６０単位で行うこととした。そして物理ブロック６０単位のリード回数が統計開始閾値を超えた場合に、物理ブロック６０に含まれるグループＧ等の所定の単位で、リード回数の計数を行うこととした。これにより、本実施形態のメモリシステム１０によれば、物理ブロック６０に含まれるグループＧ等の所定の単位でＮＡＮＤメモリ１１のデータのキャッシュを実現することができる。つまり、本実施形態のメモリシステム１０によれば、物理ブロック６０単位ではなく、より小さい単位（例えば、グループＧ単位）でキャッシュを行うことで、より少ないデータ量のキャッシュでＮＡＮＤメモリ１１へのアクセス回数を低減し、キャッシュ領域を有効活用することができる。換言すれば、本実施形態のメモリシステム１０によれば、キャッシュするデータ量の増大を抑制すると共に、ＮＡＮＤメモリ１１の疲弊を遅らせることができる。
【００８４】
また、全てのリード要求について、グループＧ単位で計数すると、計数の対象の数が多くなり、計数情報５３のデータ量が増大する。そこで、本実施形態のメモリシステム１０では、第１段階として物理ブロック６０単位でリード回数を計数し、リード回数が統計開始閾値を超えた場合に、当該物理ブロック６０に含まれる、ホスト５０からリード要求が行われる単位（例えば、グループＧ単位）のリード回数を計数することで、計数対象となるグループＧの数を低減できる。
【００８５】
また、本実施形態にかかるメモリシステム１０のメモリコントローラ１２では、物理ブロック６０単位でのリード回数の計数と、グループＧ単位でのリード回数の計数と、の両方をバックエンド部３０で行うことにより、フロントエンド部２０の構成を変更せずに、リード回数の計数処理を行うことができる。
【００８６】
また、本実施形態にかかるメモリシステム１０は、リード回数がリフレッシュ閾値を超えた物理ブロック６０に対するリフレッシュを実行する。本実施形態にかかるメモリシステム１０によれば、リード回数が多い物理ブロック６０に含まれるグループＧのデータをキャッシュすることにより、物理ブロック６０に対するリード回数を低減するため、リード回数がリフレッシュ閾値を超えるタイミングをより遅くすることができる。一般に、リフレッシュ回数が多いほど、ＮＡＮＤメモリ１１の疲弊が進行するが、本実施形態にかかるメモリシステム１０によれば、ＮＡＮＤメモリ１１の疲弊の進行をより遅くすることができる。
【００８７】
なお、上述の第１の実施形態では、第２の計数部３０５は、リード回数が統計開始閾値を超えた物理ブロック６０に含まれるグループＧを、リード回数の計数の対象としているが、さらに他の条件を設けても良い。例えば、第２の計数部３０５は、リード回数が統計開始閾値を超えた物理ブロック６０のうち、Ｒｅａｄ  Ｄｉｓｔｕｒｂの発生回数が多い、つまり、リードしたデータのビット当たりのエラー（誤り）が多い順に上位５つの物理ブロック６０に含まれるグループＧを、リード回数の計数の対象としても良い。当該条件は一例であり、これに限定されるものではない。
【００８８】
また、上述の第１の実施形態では、メモリコントローラ１２はフロントエンド部２０とバックエンド部３０とに分かれて処理を行っているが、当該構成に限定されるものではない。第１の実施形態にかかる構成は、フロントエンド部２０とバックエンド部３０とに分かれていない構成で処理を行うメモリコントローラに対しても、適用することができる。
【００８９】
（第２の実施形態）
上述の第１の実施形態では、第１の計数処理と第２の計数処理の両方をバックエンド部が実行していた。本実施形態では、フロントエンド部が第２の計数処理を実行する。
【００９０】
図８は、本実施形態にかかるメモリシステム１０１０の全体構成の一例を模式的に示す図である。図８に示すように、メモリシステム１０１０は、第１の実施形態と同様に、ＮＡＮＤメモリ１１と、メモリコントローラ１０１２と、を備える。ＮＡＮＤメモリ１１の構成は、第１の実施形態と同様である。本実施形態においては、第１の実施形態と同じ構成の詳細は説明を省略または削除し、異なる構成について詳細に説明する。
【００９１】
また、本実施形態のメモリコントローラ１０１２は、フロントエンド部１０２０と、バックエンド部１０３０とを備える。
【００９２】
本実施形態のフロントエンド部１０２０は、ＰＨＹ２１と、ホストインタフェース２２と、第１のＣＰＵ２４と、ＲＡＭ２３と、を有する。
【００９３】
第１のＣＰＵ２４は、第１の実施形態と同様に、フロントエンド部１０２０を制御する。また、ＰＨＹ２１と、ホストインタフェース２２とは、第１の実施形態と同様の機能を有する。
【００９４】
ＲＡＭ２３は、第２の計数情報２５を記憶する。第２の計数情報２５は、ＮＡＮＤメモリ１１に記憶されたデータの、グループＧごとの計数結果である。グループＧは、本実施形態における第２のカウント単位の一例である。
【００９５】
本実施形態のバックエンド部１０３０は、コマンドコントローラ３１と、ディスパッチャ３３と、ＮＡＮＤコントローラ３６と、ＲＡＭ１０３７と、第２のＣＰＵ４０と、を有する。
【００９６】
第２のＣＰＵ４０は、第１の実施形態と同様に、バックエンド部１０３０を制御する。また、コマンドコントローラ３１と、ディスパッチャ３３と、ＮＡＮＤコントローラ３６とは、第１の実施形態と同様の機能を備える。
【００９７】
本実施形態のＲＡＭ１０３７は、アドレス変換テーブル３２と、ライトバッファ３４と、リードバッファ３５と、キャッシュ５２と、第１の計数情報１０５３と、を記憶する。
【００９８】
アドレス変換テーブル３２と、ライトバッファ３４と、リードバッファ３５と、キャッシュ５２とは、第１の実施形態と同様である。
【００９９】
第１の計数情報１０５３は、ＮＡＮＤメモリ１１に記憶されたデータの、物理ブロック６０ごとの計数結果である。物理ブロック６０は、本実施形態における第１のカウント単位の一例である。
【０１００】
図９は、本実施形態にかかるメモリコントローラ１０１２の機能の一例を模式的に示す図である。図９に示すように、本実施形態のメモリコントローラ１０１２のフロントエンド部１０２０は、第１のコマンド制御部１２０１と、第１のデータ送受信制御部２０２と、第２の計数部１３０５と、を備える。
【０１０１】
第１のデータ送受信制御部２０２は、第１の実施形態と同様の機能を備える。
【０１０２】
第２の計数部１３０５は、バックエンド部１０３０から、ホスト５０からのリード回数が統計開始閾値を超えた物理ブロック６０に対応付けられたグループＧに関する論理アドレスの通知を受け、当該グループＧごとのリード回数を計数する。より詳細には、第２の計数部１３０５は、ホスト５０から送信されたリード要求の対象が計数の対象である場合に、第２の計数情報２５に記憶された当該グループＧのリード回数を加算する。
【０１０３】
また、本実施形態の第２の計数部１３０５は、いずれかのグループＧのリード回数が所定のキャッシュ閾値を超えた場合に、当該グループＧに関する論理アドレスを、バックエンド部１０３０に通知する。バックエンド部１０３０への通知は、例えばコマンドとして送信される。
【０１０４】
また、本実施形態の第２の計数部１３０５は、バックエンド部１０３０から、リフレッシュをした物理ブロック６０に含まれるグループＧに関する論理アドレスを通知された場合に、当該グループＧについて、第２の計数情報２５に記憶されたリード回数を“０”に戻す。また、第２の計数部１３０５は、論理ブロック７１に対してホスト５０からライト要求がされた場合に、当該論理ブロック７１を含むグループＧについて、第２の計数情報２５に記憶されたリード回数を“０”に戻す。
【０１０５】
第１のコマンド制御部１２０１は、第１の実施形態の機能を備えた上で、バックエンド部１０３０から送信される計数対象のグループＧに関する論理アドレスを通知するコマンド、リフレッシュをした物理ブロック６０に含まれるグループＧに関する論理アドレスを通知するコマンド、バックエンド部１０３０に対して送信されるキャッシュ対象のグループＧに関する論理アドレスを通知するコマンド等の送受信を制御する。
【０１０６】
また、図９に示すように、本実施形態のバックエンド部１０３０は、第２のコマンド制御部１３０１と、アドレス変換部３０２と、第２のデータ送受信制御部３０３と、第１の計数部１３０４と、キャッシュ制御部１３０６と、リフレッシュ制御部１３０７と、を備える。
【０１０７】
アドレス変換部３０２と、第２のデータ送受信制御部３０３とは、第１の実施形態と同様の機能を備える。
【０１０８】
第１の計数部１３０４は、第１の実施形態の機能を備えた上で、いずれかの物理ブロック６０に対するホスト５０からのリード回数が統計開始閾値を超えた場合に、統計開始閾値を超えた物理ブロック６０に含まれるグループＧに関する論理アドレスを、フロントエンド部１０２０に通知する。フロントエンド部１０２０への通知は、例えばコマンドコントローラ３１によってコマンドとして送信される。
【０１０９】
キャッシュ制御部１３０６は、第１の実施形態の機能を備えた上で、フロントエンド部１０２０から通知されたキャッシュ対象のグループＧに関する論理アドレスが示すデータ領域に記憶されたデータを、キャッシュ５２にキャッシュする。
【０１１０】
また、リフレッシュ制御部１３０７は、第１の実施形態の機能を備えた上で、リフレッシュをした物理ブロック６０に含まれるグループＧに関する論理アドレスを、フロントエンド部１０２０に通知する。
【０１１１】
第２のコマンド制御部１３０１は、第１の実施形態の機能を備えた上で、フロントエンド部１０２０に対して送信される統計開始閾値を超えた物理ブロック６０に含まれるグループＧに関する論理アドレスを通知するコマンド、フロントエンド部１０２０から送信されるキャッシュ対象のグループＧに関する論理アドレスを通知するコマンド、フロントエンド部１０２０に対して送信されるリフレッシュをした物理ブロック６０に含まれるグループＧに関する論理アドレスを通知するコマンド等の送受信を制御する。
【０１１２】
次に、本実施形態の計数処理について説明する。図１０は、本実施形態にかかる第１の計数処理の手順の一例を示すフローチャートである。Ｓ１のリード要求の受信の処理から、Ｓ３のリード回数が統計開始閾値を超えた物理ブロック６０の有無の判断の処理までは、第１の実施形態と同様である。
【０１１３】
リード回数が統計開始閾値を超えた物理ブロック６０がある場合は（Ｓ３“Ｙｅｓ”）、第１の計数部１３０４は、アドレス変換テーブル３２を用いて当該物理ブロック６０に対応付けられたグループＧに関する論理アドレスを特定する。そして、第１の計数部１３０４は、リード回数が統計開始閾値を超えた物理ブロック６０に対応付けられたグループＧに関する論理アドレスをフロントエンド部１０２０に通知する（Ｓ１０４）。
【０１１４】
Ｓ５のリード回数がリフレッシュ閾値を超えた物理ブロック６０があるか否かの判断の処理から、Ｓ６のリード回数がリフレッシュ閾値を超えた物理ブロック６０のリフレッシュの実行処理までは、第１の実施形態と同様である。
【０１１５】
Ｓ６の処理の後、リフレッシュ制御部１３０７は、リフレッシュをした物理ブロック６０を、第１の計数部１３０４、およびキャッシュ制御部１３０６に通知する。また、リフレッシュ制御部１３０７は、リフレッシュをした物理ブロック６０に含まれるグループＧに関する論理アドレスを、フロントエンド部１０２０に通知する。
【０１１６】
そして、第１の計数部１３０４は、リフレッシュされた物理ブロック６０に対応する第１の計数情報１０５３をクリアし、“０”に戻す。また、第２の計数部１３０５は、バックエンド部１０３０から通知されたリフレッシュをした物理ブロック６０に含まれるグループＧに対応する第２の計数情報２５をクリアし、“０”に戻す（Ｓ１０７）。その後、この処理は終了する。
【０１１７】
次に、本実施形態の第２の計数処理について説明する。図１１は、本実施形態にかかる第２の計数処理の手順の一例を示すフローチャートである。
【０１１８】
Ｓ１１のリード要求の受信の処理は、第１の実施形態と同様である。また、Ｓ１１２では、第２の計数部１３０５は、バックエンド部１０３０から通知されたリード回数が統計開始閾値を超えた物理ブロック６０に含まれる計数対象のグループＧ単位で、リード回数を計数する（Ｓ１１２）。第２の計数部１３０５は、第２の計数情報２５に記憶されたグループＧのリード回数を更新する。
【０１１９】
Ｓ１３のリード回数がキャッシュ閾値を超えたグループＧがあるか否かの判断の処理は、第１の実施形態と同様である。
【０１２０】
リード回数がキャッシュ閾値を超えたグループＧがある場合は（Ｓ１３“Ｙｅｓ”）、第２の計数部１３０５は、当該グループＧに関する論理アドレスを、バックエンド部１０３０に通知する（Ｓ１１４）。
【０１２１】
そして、キャッシュ制御部１３０６は、フロントエンド部１０２０から通知されたキャッシュ対象のグループＧに関する論理アドレスが示すデータ領域に記憶されたデータを、キャッシュ５２にキャッシュする（Ｓ１１５）。
【０１２２】
このように、本実施形態のメモリシステム１０１０では、物理ブロック６０単位のリード回数をバックエンド部１０３０で計数し、グループＧ単位のリード回数をフロントエンド部１０２０で計数する。このため、本実施形態のメモリシステム１０１０によれば、第１の実施形態の効果に加えて、フロントエンド部１０２０とバックエンド部１０３０とで、リード回数の計数処理にかかる処理負荷を分散することができる。
【０１２３】
このように、上述の各実施形態のメモリシステム１０，１０１０によれば、ＮＡＮＤメモリ１１の疲弊を遅らせることができる。このため、上述の各実施形態のメモリシステム１０，１０１０によれば、例えば、物理ブロック６０におけるＲｅａｄ  Ｄｉｓｔｕｒｂの発生を抑制することができる。また、上述の各実施形態のメモリシステム１０，１０１０によれば、ＮＡＮＤメモリ１１の疲弊を遅らせることにより、物理ブロック６０に記憶されたデータのＢＥＲ（Bit  Error  Rate）の悪化を抑制することができる。
【０１２４】
また、上述の各実施形態のメモリシステム１０，１０１０によれば、物理ブロック６０のリフレッシュまでの時間を遅らせることができるため、Ｐ／Ｅ  Ｃｙｃｌｅ（Program/Erase  Cycle）カウンタの進行を遅らせることができる。一般に、ＮＡＮＤメモリ１１の寿命はＰ／Ｅ  Ｃｙｃｌｅにより決定されるため、上述の各実施形態のメモリシステム１０，１０１０によれば、Ｐ／Ｅ  Ｃｙｃｌｅカウンタの進行を遅らせることにより、ＮＡＮＤメモリ１１をより長期間使用することができる。
【０１２５】
（変形例１）
上述の各実施形態では、第２の計数部３０５，１３０５は、論理ブロックのグループＧごとにリード回数を計数していたが、第２のカウント単位はこれに限定されるものではない。第２のカウント単位は、第１のカウント単位（物理ブロック６０）よりも小さく、かつ、ホスト５０からリード要求が行われる単位である論理ブロック７１を少なくとも１つ含む大きさであれば良い。
【０１２６】
例えば、第２の計数部３０５，１３０５は、論理ブロックのグループＧではなく、クラスタ７０ごとにホスト５０からのリード回数を計数しても良い。この場合、クラスタ７０は、本変形例における第２のカウント単位の一例である。一般に、クラスタ７０はグループＧよりも小さいため、当該構成を採用する場合、メモリシステム１０，１０１０は、キャッシュ対象のデータ量をより低減することができる。
【０１２７】
（変形例２）
また、第２の計数部３０５，１３０５は、論理ブロック７１ごとにホスト５０からのリード回数を計数しても良い。この場合、論理ブロック７１は、本変形例における第２のカウント単位の一例である。論理ブロック７１は、グループＧやクラスタ７０よりも小さいため、当該構成を採用する場合、メモリシステム１０，１０１０は、キャッシュ対象のデータ量をさらに低減することができる。
【０１２８】
（変形例３）
また、第２の計数部３０５，１３０５は、物理ページＰごとにホスト５０からのリード回数を計数しても良い。この場合、物理ページＰは、本変形例における第２のカウント単位の一例である。物理ページＰはグループＧよりも大きく、計数の対象の数が削減されるため、当該構成を採用する場合、メモリシステム１０，１０１０は、計数情報５３（または第２の計数情報２５）のデータ量を削減することができる。
【０１２９】
（変形例４）
また、上述の各実施形態では、メモリコントローラ１２，１０１２は、第１の計数処理と第２の計数処理との２段階でリード回数を計数していたが、段階的にカウント単位を小さくしてリード回数の計数を行えば良く、２段階に限定されるものではない。例えば、メモリコントローラ１２，１０１２は、１段階目として、物理ブロック６０ごとにリード回数を計数し、２段階目として、統計開始閾値を超えた物理ブロック６０に含まれる物理ページＰごとにリード回数を計数し、さらに、３段階目として統計開始閾値を超えた物理ページＰに含まれる論理ブロック７１ごとにリード回数を計数しても良い。
【０１３０】
当該構成を採用する場合、メモリコントローラ１２，１０１２は、リード回数を計数する単位（物理ブロック６０、物理ページＰ、論理ブロック７１等）のうち、最も小さいデータ領域を示す単位（例えば、論理ブロック７１）において、リード回数がキャッシュ閾値を超えた場合に、当該単位で示されるＮＡＮＤメモリ１１のデータ領域に記憶されたデータをキャッシュする。本変形例のように、メモリシステム１０，１０１０は、リード回数を計数する単位について、様々な構成を採用することができる。
【０１３１】
（変形例５）
また、上述の各実施形態では、キャッシュ５２は、メモリコントローラ１２，１０１２のバックエンド部３０，１０３０のＲＡＭ３７，１０３７内の領域としていたが、キャッシュされるデータが記憶される場所はこれに限定されるものではない。例えば、キャッシュ５２は、メモリコントローラ１２，１０１２の外部のＤＲＡＭ等に設けられても良いし、フロントエンド部１０２０のＲＡＭ２３内の領域としても良い。
【０１３２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３３】
１０，１０１０  メモリシステム、１１  ＮＡＮＤメモリ、１２，１０１２  メモリコントローラ、２０，１０２０  フロントエンド部、２２  ホストインタフェース、２４  第１のＣＰＵ、２５  第２の計数情報、３０，１０３０  バックエンド部、３１  コマンドコントローラ、３２  アドレス変換テーブル、３３  ＮＡＮＤコマンドディスパッチャ（ディスパッチャ）、３４  ライトバッファ、３５  リードバッファ、３６  ＮＡＮＤコントローラ、３７，１０３７  ＲＡＭ、４０  第２のＣＰＵ、５０  ホスト、５２  キャッシュ、５３  計数情報、６０  物理ブロック、７０  クラスタ、７１  論理ブロック、２０１，１２０１  第１のコマンド制御部、２０２  第１のデータ送受信制御部、３０１，１３０１  第２のコマンド制御部、３０２  アドレス変換部、３０３  第２のデータ送受信制御部、３０４，１３０４  第１の計数部、３０５，１３０５  第２の計数部、３０６，１３０６  キャッシュ制御部、３０７，１３０７  リフレッシュ制御部、１０５３  第１の計数情報、Ｇ，Ｇ１〜Ｇ６  グループ、Ｐ  物理ページ。
【図１】
2019056972.tif 000003
【図２】
2019056972.tif 000004
【図３】
2019056972.tif 000005
【図４】
2019056972.tif 000006
【図５】
2019056972.tif 000007
【図６】
2019056972.tif 000008
【図７】
2019056972.tif 000009
【図８】
2019056972.tif 000010
【図９】
2019056972.tif 000011
【図１０】
2019056972.tif 000012
【図１１】
2019056972.tif 000013