JP2019056972A - メモリシステムおよびメモリシステムの制御方法 - Google Patents

メモリシステムおよびメモリシステムの制御方法 Download PDF

Info

Publication number
JP2019056972A
JP2019056972A JP2017179505A JP2017179505A JP2019056972A JP 2019056972 A JP2019056972 A JP 2019056972A JP 2017179505 A JP2017179505 A JP 2017179505A JP 2017179505 A JP2017179505 A JP 2017179505A JP 2019056972 A JP2019056972 A JP 2019056972A
Authority
JP
Japan
Prior art keywords
unit
data
reads
count
memory system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017179505A
Other languages
English (en)
Inventor
真梨子 松本
Mariko Matsumoto
真梨子 松本
匡章 田村
Tadaaki Tamura
匡章 田村
崇将 平田
Takamasa Hirata
崇将 平田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017179505A priority Critical patent/JP2019056972A/ja
Priority to US15/908,832 priority patent/US20190087125A1/en
Publication of JP2019056972A publication Critical patent/JP2019056972A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices

Abstract

【課題】キャッシュするデータ量の増大を抑制すると共に、NAND型フラッシュメモリチップの疲弊を遅らせることができるメモリシステムおよびメモリシステムの制御方法を提供する。【解決手段】メモリシステムは、不揮発性の記憶部と、記憶部を制御するメモリコントローラとを備える。メモリコントローラは、第1の計数回路と、第2の計数回路と、キャッシュ制御回路とを備える。第1の計数回路は、ホストからのリード回数を、第1のカウント単位のデータごとに計数する。第2の計数回路は、第1のカウント単位の第1データに対するリード回数が第1の閾値を超えた場合に、当該第1データに含まれるデータ領域を示す物理的または論理的な単位である第2のカウント単位のデータごとのリード回数を計数する。キャッシュ制御回路は、第2のカウント単位の第2データに対するリード回数が第2の閾値を超えた場合に当該第2データをキャッシュする。【選択図】図1

Description

本実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
従来、NAND型フラッシュメモリチップを記憶媒体に用いたSSD(Solid State Drive)などのメモリシステムが知られている。一般に、NAND型フラッシュメモリチップは、アクセス回数が多いほど疲弊が進行する。このため、従来技術では、例えば、ホストからのリード回数が多いデータをRAM等のキャッシュ領域に格納することにより、NAND型フラッシュメモリチップへのアクセス回数を削減していた。
しかしながら、メモリシステムが保有するキャッシュ領域は有限である。このため、NAND型フラッシュメモリチップへのアクセス回数を削減するためにデータをキャッシュするにあたり、限られたキャッシュ領域をより有効に活用することが求められていた。
特許第5483378号公報
一つの実施形態は、キャッシュするデータ量の増大を抑制すると共に、NAND型フラッシュメモリチップの疲弊を遅らせることができるメモリシステムおよびメモリシステムの制御方法を提供することを目的とする。
一つの実施形態によれば、メモリシステムは、不揮発性の記憶部と、記憶部を制御するメモリコントローラと、を備える。メモリコントローラは、第1の計数回路と、第2の計数回路と、キャッシュ制御回路とを備える。第1の計数回路は、ホストからのリード回数を、記憶部のデータ領域を示す単位であって第記憶部に記憶されたデータを消去可能な単位である第1のカウント単位のデータごとに計数する。第2の計数回路は、第1のカウント単位の第1データに対するリード回数が第1の閾値を超えた場合に、当該第1データに含まれるデータ領域を示す物理的または論理的な単位である第2のカウント単位のデータごとのリード回数を計数する。キャッシュ制御回路は、第2のカウント単位の第2データに対するリード回数が第2の閾値を超えた場合に、当該第2データをキャッシュする。
図1は、第1の実施形態にかかるメモリシステムの全体構成の一例を模式的に示す図である。 図2は、第1の実施形態にかかるメモリシステムにおけるデータの管理単位の一例を模式的に示す図である。 図3は、第1の実施形態にかかるメモリコントローラの機能の一例を模式的に示す図である。 図4は、第1の実施形態にかかる統計開始閾値とリフレッシュ閾値の一例を示すグラフである。 図5は、第1の実施形態にかかる論理ブロックのグループごとのリード回数の計数結果の一例を示すグラフである。 図6は、第1の実施形態にかかる第1の計数処理の手順の一例を示すフローチャートである。 図7は、第1の実施形態にかかる第2の計数処理の手順の一例を示すフローチャートである。 図8は、第2の実施形態にかかるメモリシステムの全体構成の一例を模式的に示す図である。 図9は、第2の実施形態にかかるメモリコントローラの機能の一例を模式的に示す図である。 図10は、第2の実施形態にかかる第1の計数処理の手順の一例を示すフローチャートである。 図11は、第2の実施形態にかかる第2の計数処理の手順の一例を示すフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、本実施形態にかかるメモリシステム10の全体構成の一例を模式的に示す図である。図1に示すように、メモリシステム10は、NAND型フラッシュメモリ(以下、NANDメモリという)11と、メモリコントローラ12と、を備える。メモリシステム10の一例として、NANDメモリ11を記憶媒体に用いたSSD(Solid State Drive)がある。
NANDメモリ11は、不揮発に情報を記憶することができる記憶媒体である。NANDメモリ11は、例えば、ホスト50から送信されるユーザデータ、メモリシステム10の管理情報、システムデータ等を記憶する。また、NANDメモリ11は、例えば、複数のメモリチップによって構成され、各メモリチップは、物理ブロックを複数含んで構成される。NANDメモリ11の詳細については、図2で後述する。NANDメモリ11は、本実施形態における記憶部の一例である。
メモリコントローラ12は、ホスト50からのコマンドにしたがって、NANDメモリ11へのデータの書き込み、またはNANDメモリ11からのデータの読み出しなどを行う。メモリコントローラ12は、フロントエンド部20と、バックエンド部30と、を有する。
フロントエンド部20は、ホスト50から受けたコマンドをバックエンド部30に渡し、バックエンド部30からのコマンドに対するレスポンスをホスト50に返す機能を有する。フロントエンド部20は、本実施形態における第1回路部の一例である。
フロントエンド部20は、PHY(PHYsical Layer チップ)21と、ホストインタフェース22と、第1のCPU24と、を有する。
第1のCPU24は、ファームウェアに基づいてフロントエンド部20を制御する。また、第1のCPU24は、図示しないROM等の記憶装置から読み出したプログラムを実行することで様々な制御を行うことができる。
PHY21は、ホスト50に対する入出力部に対応し、ホスト50の入出力部に対応するPHY51との間で電気的な信号をやり取りする。
ホストインタフェース22は、バックエンド部30とホスト50との間でプロトコル変換を行い、データ、コマンド、アドレスの転送(送受信)を制御する。
バックエンド部30は、フロントエンド部20からのコマンドに基づいて、NANDメモリ11に対するデータの書き込み及び読み出しを行う機能を有する。バックエンド部30は、本実施形態における第2回路部の一例である。
バックエンド部30は、コマンドコントローラ31と、NANDコマンドディスパッチャ33(以下、ディスパッチャ33という)と、NANDコントローラ36と、RAM37と、第2のCPU40と、を有する。
RAM37は、アドレス変換テーブル32と、ライトバッファ34と、リードバッファ35と、キャッシュ52と、計数情報53と、を記憶する。RAM37は、例えば、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)等である。
アドレス変換テーブル32は、コマンドで指定される論理アドレスとNANDメモリ11の物理アドレスとの間の対応関係を示す情報である。より詳細には、アドレス変換テーブル32は、NANDメモリ11に記憶されたデータを消去可能な単位である物理ブロック内のある物理的な位置情報と、物理ブロックよりも小さいデータ領域を示すデータの管理単位(物理ページP、クラスタ70、論理ブロック71、グループG)と、のマッピングを記憶する情報である。データの管理単位については、図2で後述する。
アドレス変換テーブル32は、メモリシステム10の起動時に、NANDメモリ11から読み出され、RAM37に格納される。またアドレス変換テーブル32は、論理アドレスと物理アドレスの対応関係が変更されたことに応じて更新される。アドレス変換テーブル32は、所定のタイミング(たとえば電源断時や所定時間毎など)にNANDメモリ11に格納される。
ライトバッファ34は、NANDメモリ11へ書き込むデータを一時的に格納する。ライトコマンドがフロントエンド部20からバックエンド部30に渡されたことに応じてライトバッファ34へデータが転送される。このデータは、ホストインタフェース22を介して転送される。
リードバッファ35は、NANDメモリ11から読みだされたデータを一時的に格納する。このデータは、NANDコントローラ36を介してリードバッファ35に書き込まれる。
キャッシュ52は、NANDメモリ11に記憶されたデータの一部がキャッシュされるデータ領域である。キャッシュ52はリードキャッシュであり、ホスト50がリードする対象のデータがキャッシュ52に格納されている場合は、NANDメモリ11からではなく、キャッシュ52から対象のデータが読み出される。キャッシュ52は、メモリコントローラ12の外部のDRAM等に設けられても良い。
計数情報53は、NANDメモリ11に記憶されたデータがリードされた回数の計数結果である。より詳細には、図2で後述するデータの管理単位ごとに、計数されたリード回数がRAM37に格納される。
第2のCPU40は、ファームウェアに基づいてバックエンド部30を制御する。また、第2のCPU40は、図示しないROM等の記憶装置から読み出したプログラムを実行することで様々な制御を行うことができる。
コマンドコントローラ31は、フロントエンド部20からコマンドを受信すると、そのコマンドの種類(ライト要求のコマンドか、リード要求のコマンドかなど)を識別(判断)して、ディスパッチャ33にコマンドを渡す。
ディスパッチャ33は、フロントエンド部20からのコマンドを、NANDコントローラ36に渡すためのコマンドに変換して、NANDコントローラ36へ送出する。
NANDコントローラ36は、NANDメモリ11に対して、アドレスに基づいてデータの読み出しまたは書き込みの制御を行う。たとえば、ディスパッチャ33からライトコマンドを受けると、そのライトコマンドに基づいて、書き込みデータをライトバッファ34から取得し、NANDメモリ11へと書き込む。また、ディスパッチャ33からリードコマンドを受けると、そのリードコマンドに基づいてNANDメモリ11からリードデータを読み出し、リードバッファ35に格納する。
図2は、本実施形態にかかるメモリシステム10におけるデータの管理単位の一例を模式的に示す図である。図2に示すように、NANDメモリ11には、複数の物理ブロック60が含まれる。
物理ブロック60は、NANDメモリ11において一括してデータの消去(Erase)が可能な単位である。また、NANDメモリ11に対するデータの書き込み(ライト)および読み出し(リード)が可能な単位が物理ページPである。1つの物理ブロック60は、複数の物理ページPを含む。NANDメモリ11に対するデータのリードとライトを総称して、NANDメモリ11に対するアクセスという。
論理ブロック71は、ホスト50からの最小アクセス単位である。図2において破線で示すように、論理ブロック71は、1つの物理ブロック60内に複数含まれる。論理ブロック71は、例えばLBA(Logical Block Addressing)によって特定される。また、論理ブロック71は、セクタともいう。
物理ページPは、1つの物理ブロック60に複数含まれ、かつ、複数のクラスタを含む。また、物理ページPは、NANDメモリ11に対するデータの書き込みおよび読み出しが可能な単位である。
クラスタ70は、物理ページPよりも小さい単位であり、かつ、論理ブロック71よりも大きいデータ領域を示す単位である。より詳細には、クラスタ70は、物理ページPを、予め定められたデータサイズごとに分割した単位であり、かつ、論理ブロック71を複数含む。
図2において2重線で示すように、1つのクラスタ70は論理ブロック71を3つ含む。また、1つの物理ページPには、3つのクラスタ70が含まれる。図2におけるクラスタ70に含まれる論理ブロック71、および物理ページPに含まれるクラスタ70の数はそれぞれ一例であり、これらに限定されるものではない。
また、図2に示すように、論理ブロック71に対応付けられたデータに応じて、複数の論理ブロック71を含む論理ブロックのグループG(以下、グループGという)が生成される。物理ブロック60にデータが書き込みされた場合に、当該データが書き込まれたデータ領域に対応付けられる複数の論理ブロック71が、1つのグループGとして生成される。また、グループGは、ホスト50からリード要求がされる単位でもある。グループGが示すデータ領域の範囲(つまり、グループGに含まれる論理ブロック71)は、NANDメモリ11にデータが書き込まれた際に決定される。例えば、図2に示すグループGは、6つの論理ブロック71を含む。図2におけるグループGに含まれる論理ブロック71の数は一例であり、これに限定されるものではない。また、グループGに含まれる論理ブロック71の数は、グループGごとに、異なっても良い。
また一般に、論理ブロック71のグループGは、クラスタ70よりも大きい単位である。図2では、太線で囲まれた範囲として示されるように、グループGの範囲は、一例として、2つのクラスタ70を含む。あるいは、論理ブロック71のグループGは、クラスタ70と同じ大きさであっても良い。
データのアクセスまたは管理の各単位(物理ブロック60、物理ページP、クラスタ70、論理ブロック71、グループG)の対応付け(マッピング)は、アドレス変換テーブル32に記憶される。また、図2に示すデータの各管理単位の大きさは一例であり、これに限定されるものではない。
図3は、本実施形態にかかるメモリコントローラ12の機能の一例を模式的に示す図である。図3に示すように、メモリコントローラ12のフロントエンド部20は、第1のコマンド制御部201と、第1のデータ送受信制御部202と、を備える。
第1のコマンド制御部201は、コマンドの送受信を制御する。より詳細には、第1のコマンド制御部201は、PHY21がホスト50から受信したコマンドをバックエンド部30に渡すように、ホストインタフェース22を制御する。
第1のデータ送受信制御部202は、データの送受信を制御する。より詳細には、第1のデータ送受信制御部202は、ホスト50からのリード要求のコマンドに従ってバックエンド部30から送信されたデータを、ホスト50に送信するように、ホストインタフェース22およびPHY21を制御する。
フロントエンド部20の各機能部(第1のコマンド制御部201、第1のデータ送受信制御部202)は、ハードウェア回路によって実現される。あるいは、フロントエンド部20の各機能部は、第1のCPU24が記憶装置からプログラムを実行することによって実現されてもよい。
メモリコントローラ12のバックエンド部30は、第2のコマンド制御部301と、アドレス変換部302と、第2のデータ送受信制御部303と、第1の計数部304と、第2の計数部305と、キャッシュ制御部306と、リフレッシュ制御部307と、を備える。
第2のコマンド制御部301は、コマンドコントローラ31、ディスパッチャ33、NANDコントローラ36を制御し、フロントエンド部20から送信されたコマンドのバックエンド部30内での受け渡しを制御する。より詳細には、第2のコマンド制御部301は、コマンドコントローラ31がフロントエンド部20から受信したコマンドのディスパッチャ33への受け渡しを制御する。また、第2のコマンド制御部301は、ディスパッチャ33からNANDコントローラ36へのコマンドの受け渡しを制御する。
アドレス変換部302は、フロントエンド部20から送信されたコマンドで指定される論理アドレスを、アドレス変換テーブル32を用いて、NANDメモリ11の物理アドレスに変換し、ディスパッチャ33に受け渡す。あるいは、論理アドレスから物理アドレスへの変換は、ディスパッチャ33が行っても良い。
第2のデータ送受信制御部303は、コマンドコントローラ31とNANDコントローラ36を制御することにより、フロントエンド部20とNANDメモリ11との間のデータの送受信の制御を行う。
第1の計数部304は、ホスト50からNANDメモリ11へのリード回数を、物理ブロック60毎に計数する。より詳細には、第1の計数部304は、アドレス変換部302が、受信したコマンドに基づいて変換した物理アドレスを取得して、当該コマンドに応じてリードされる物理ブロック60を特定し、計数情報53に記憶された当該物理ブロック60のリード回数を更新する。物理ブロック60は、本実施形態における第1のカウント単位の一例である。また、第1の計数部304が行う計数処理を、第1の計数処理という。
また、第1の計数部304は、NANDメモリ11へのリード回数を計数するため、リード対象のデータがキャッシュ52に記憶されている場合は、当該リード回数はカウントしない。
また、第1の計数部304は、いずれかの物理ブロック60のリード回数が所定の統計開始閾値を超えた場合に、アドレス変換テーブル32を用いて当該物理ブロック60に含まれる(対応付けられた)グループGを特定する。第1の計数部304は、第2の計数部305に、特定されたグループGを通知する。あるいは、第1の計数部304は、リード回数が統計開始閾値を超えた物理ブロック60を第2の計数部305に通知し、第2の計数部305がグループGを特定しても良い。
統計開始閾値は、物理ブロック60に含まれるグループGが、リード回数の計数の対象となるか否かを切り分けるための基準となる閾値である。統計開始閾値は、物理ブロック60がリフレッシュされる基準となるリフレッシュ閾値よりも小さい値となるように予め定められる。統計開始閾値は、本実施形態における第1の閾値の一例である。また、リフレッシュ閾値は、本実施形態における第3の閾値の一例である。
図4は、本実施形態にかかる統計開始閾値とリフレッシュ閾値の一例を示すグラフである。図4のグラフの縦軸はある1つの物理ブロック60のリード回数であり、横軸は時間である。例えば、物理ブロック60のリード回数が、リフレッシュ閾値の一例である“100回”を超えた場合に、後述するリフレッシュ制御部307によって当該物理ブロック60がリフレッシュされるとする。統計開始閾値は、リフレッシュ閾値よりも小さい値であり、例えば、“60回”とする。図4に示すリフレッシュ閾値および統計開始閾値の値は一例であり、これに限定されるものではない。
また、第1の計数部304は、物理ブロック60が、後述するリフレッシュ制御部307によってリフレッシュされた場合、計数情報53に記憶された当該物理ブロック60に対するリード回数を“0”に戻す。
図3に戻り、第2の計数部305は、リード回数が統計開始閾値を超えた物理ブロック60に含まれるグループGごとのリード回数を計数する。より詳細には、第2の計数部305は、フロントエンド部20から送信されたコマンドで指定された論理ブロック71が含まれるグループGを特定し、当該グループGが計数の対象である場合に、計数情報53に記憶された当該グループGのリード回数を更新する。グループGは、本実施形態における第2のカウント単位の一例である。また、第2の計数部305が行う計数処理を、第2の計数処理という。
また、第2の計数部305は、NANDメモリ11へのリード回数を計数するため、リード対象のデータがキャッシュ52にキャッシュされている場合は、当該リード回数はカウントしない。
図5は、本実施形態にかかるグループGごとのリード回数の計数結果の一例を示すグラフである。例えば、1つの物理ブロック60に、6つのグループG1〜G6が対応付けられているとする。第2の計数部305は、図5に示すように、各グループG1〜G6のそれぞれに対するホスト50からのリード回数を計数する。
また、第2の計数部305は、一定期間計数をしてもリード回数が計数対象閾値を超えないグループGは、計数の対象から除外しても良い。例えば、図5に示すように、計数対象閾値を“5回”とする場合、一定期間計数をしてもグループG3のリード回数が“5回”を超えない場合、第2の計数部305は、グループG3を計数の対象から除外しても良い。図5に示す計数対象閾値の値は一例であり、これに限定されるものではない。
また、第2の計数部305は、いずれかのグループGのリード回数が所定のキャッシュ閾値(例えば“20回”)を超えた場合に、当該グループGを、キャッシュ制御部306に通知する。キャッシュ閾値は、統計開始閾値よりも小さい値とする。図5に示すキャッシュ閾値の値は一例であり、これに限定されるものではない。キャッシュ閾値は、本実施形態における第2の閾値の一例である。
また、第2の計数部305は、物理ブロック60が、後述するリフレッシュ制御部307によってリフレッシュされた場合、当該物理ブロック60に対応付けられたグループGについて、計数情報53に記憶されたリード回数を“0”に戻す。また、第2の計数部305は、ホスト50からのライト要求に応じて論理ブロック71にデータがライトされた場合に、当該論理ブロック71を含むグループGについて、計数情報53に記憶されたリード回数を“0”に戻す。
図3に戻り、キャッシュ制御部306は、リード回数がキャッシュ閾値を超えたグループGが示すデータ領域に記憶されたデータを、キャッシュ52にキャッシュする。本実施形態のキャッシュ制御部306は、物理ブロック60に含まれるグループGが示すデータをキャッシュ対象とするため、物理ブロック60単位でキャッシュする場合と比べて、キャッシュされるデータ量の増大を抑制することができる。
また、キャッシュ制御部306は、論理ブロック71に対してライト要求がされた場合に、キャッシュ52に格納されたキャッシュデータのうち、当該論理ブロック71に対応付けられたデータを無効化する。また、キャッシュ制御部306は、キャッシュ52に格納されたキャッシュデータのうち、既にリフレッシュされた物理ブロック60に対応付けられていたものがあれば、当該データを、新たにリード回数がキャッシュ閾値を超えたグループGに対応付けられたデータで上書きしても良い。
リフレッシュ制御部307は、リード回数がリフレッシュ閾値を超えた物理ブロック60のリフレッシュを実行する。また、リフレッシュ制御部307は、リフレッシュをした物理ブロック60を、第1の計数部304、第2の計数部305、およびキャッシュ制御部306に通知する。
図4に戻り、破線aは、データのキャッシュが行われなかった場合におけるリード回数の想定値を示す。また、実線bは、リード回数が多いデータがキャッシュ制御部306によってキャッシュされた場合におけるリード回数の値を示す。キャッシュ制御部306がリード回数の多いデータをキャッシュすることにより、NANDメモリ11へのリード回数が少なくなる。このため、物理ブロック60ごとのリード回数がリフレッシュ閾値を超えることを遅らせることができ、リフレッシュ回数を低減することができる。
次に、本実施形態の計数処理について説明する。図6は、本実施形態にかかる第1の計数処理の手順の一例を示すフローチャートである。
バックエンド部30のコマンドコントローラ31は、フロントエンド部20から受信したコマンドの種類が、リード要求のコマンドか否かを判断する(S1)。また、アドレス変換部302は、フロントエンド部20から送信されたコマンドで指定される論理アドレスを、アドレス変換テーブル32を用いて、NANDメモリ11での物理アドレスに変換する。
リード要求のコマンドを受信しない場合(S1“No”)、コマンドコントローラ31はS1の処理を繰り返す。
コマンドコントローラ31がリード要求のコマンドを受信した場合(S1“Yes”)、第1の計数部304は、当該リード要求の対象の物理ブロック60を、アドレス変換部302が変換した物理アドレスに基づいて特定し、当該物理ブロック60単位でリード回数を計数する(S2)。第1の計数部304は、RAM37に記憶された計数情報53を更新する。
そして、第1の計数部304は、リード回数が統計開始閾値を超えた物理ブロック60があるか否かを判断する(S3)。
リード回数が統計開始閾値を超えた物理ブロック60が無い場合は(S3“No”)、この処理は終了する。
リード回数が統計開始閾値を超えた物理ブロック60がある場合は(S3“Yes”)、第1の計数部304は、当該物理ブロック60に対応付けられたグループGを特定する。そして、第1の計数部304は、第2の計数部305に、特定されたグループGを通知し、第2の計数処理を開始させる(S4)。第2の計数処理は、第2の計数部305によって実行される、通知されたグループG単位によるリード回数の計数処理である。第2の計数処理の具体的なフローについては後述する。
次に、リフレッシュ制御部307は、リード回数がリフレッシュ閾値を超えた物理ブロック60があるか否かを判断する(S5)。
リード回数がリフレッシュ閾値を超えた物理ブロック60が無い場合は(S5“No”)、この処理は終了する。
リード回数がリフレッシュ閾値を超えた物理ブロック60がある場合は(S5“Yes”)、リフレッシュ制御部307は、当該物理ブロック60のリフレッシュを実行する(S6)。リフレッシュ制御部307は、リフレッシュをした物理ブロック60を、第1の計数部304、第2の計数部305、およびキャッシュ制御部306に通知する。第1の計数部304および第2の計数部305は、リフレッシュされた物理ブロック60に対応する計数情報53をクリアし、“0”に戻す(S7)。その後、この処理は終了する。
次に、本実施形態の第2の計数処理について説明する。図7は、本実施形態にかかる第2の計数処理の手順の一例を示すフローチャートである。この処理は、図6のS4において開始される処理である。
図6のS1と同様に、バックエンド部30のコマンドコントローラ31は、フロントエンド部20から受信したコマンドの種類が、リード要求のコマンドか否かを判断する(S11)。リード要求のコマンドを受信しない場合(S11“No”)、コマンドコントローラ31はS11の処理を繰り返す。
コマンドコントローラ31がリード要求のコマンドを受信した場合(S11“Yes”)、第2の計数部305は、リード回数が統計開始閾値を超えた物理ブロック60に含まれる計数対象のグループG単位で、リード回数を計数する(S12)。第2の計数部305は、計数情報53に記憶されたグループGのリード回数を更新する。
そして、第2の計数部305は、リード回数がキャッシュ閾値を超えたグループGがあるか否かを判断する(S13)。
リード回数がキャッシュ閾値を超えたグループGが無い場合は(S13“No”)、この処理は終了する。
リード回数がキャッシュ閾値を超えたグループGがある場合は(S13“Yes”)、第2の計数部305は、当該グループGを、キャッシュ制御部306に通知する。
キャッシュ制御部306は、通知されたグループGに対応するデータを、キャッシュ52としてNANDメモリ11からRAM37にキャッシュする(S14)。
当該処理の後は、リード回数がキャッシュ閾値を超えたグループGに対応付けられたデータが、キャッシュ52にキャッシュされるので、ホスト50から当該データのリード要求を受信した場合、当該キャッシュ52からデータが読み出されることになる。これにより、物理ブロック60に含まれるグループGに対するリードが低減されるので、物理ブロック60のリード回数を減らすことができる。
このように、本実施形態は、物理ブロック60単位のリード回数が統計開始閾値を超えた場合に、物理ブロック60に含まれるグループG単位のリード回数を計数する、という2段階に分けたリード回数の計数を行うこととした。これにより、物理ブロック60単位ではなく、より小さい単位であるグループG単位で所望のデータをキャッシュすることができる。
図6及び図7を用いて説明したフローチャートは、第1の計数処理および第2の計数処理の手順の一例であり、各処理の実行タイミングは、これに限定されるものではない。
このように、本実施形態にかかるメモリシステム10は、ホスト50からのリード回数の計数を、物理ブロック60単位で行うこととした。そして物理ブロック60単位のリード回数が統計開始閾値を超えた場合に、物理ブロック60に含まれるグループG等の所定の単位で、リード回数の計数を行うこととした。これにより、本実施形態のメモリシステム10によれば、物理ブロック60に含まれるグループG等の所定の単位でNANDメモリ11のデータのキャッシュを実現することができる。つまり、本実施形態のメモリシステム10によれば、物理ブロック60単位ではなく、より小さい単位(例えば、グループG単位)でキャッシュを行うことで、より少ないデータ量のキャッシュでNANDメモリ11へのアクセス回数を低減し、キャッシュ領域を有効活用することができる。換言すれば、本実施形態のメモリシステム10によれば、キャッシュするデータ量の増大を抑制すると共に、NANDメモリ11の疲弊を遅らせることができる。
また、全てのリード要求について、グループG単位で計数すると、計数の対象の数が多くなり、計数情報53のデータ量が増大する。そこで、本実施形態のメモリシステム10では、第1段階として物理ブロック60単位でリード回数を計数し、リード回数が統計開始閾値を超えた場合に、当該物理ブロック60に含まれる、ホスト50からリード要求が行われる単位(例えば、グループG単位)のリード回数を計数することで、計数対象となるグループGの数を低減できる。
また、本実施形態にかかるメモリシステム10のメモリコントローラ12では、物理ブロック60単位でのリード回数の計数と、グループG単位でのリード回数の計数と、の両方をバックエンド部30で行うことにより、フロントエンド部20の構成を変更せずに、リード回数の計数処理を行うことができる。
また、本実施形態にかかるメモリシステム10は、リード回数がリフレッシュ閾値を超えた物理ブロック60に対するリフレッシュを実行する。本実施形態にかかるメモリシステム10によれば、リード回数が多い物理ブロック60に含まれるグループGのデータをキャッシュすることにより、物理ブロック60に対するリード回数を低減するため、リード回数がリフレッシュ閾値を超えるタイミングをより遅くすることができる。一般に、リフレッシュ回数が多いほど、NANDメモリ11の疲弊が進行するが、本実施形態にかかるメモリシステム10によれば、NANDメモリ11の疲弊の進行をより遅くすることができる。
なお、上述の第1の実施形態では、第2の計数部305は、リード回数が統計開始閾値を超えた物理ブロック60に含まれるグループGを、リード回数の計数の対象としているが、さらに他の条件を設けても良い。例えば、第2の計数部305は、リード回数が統計開始閾値を超えた物理ブロック60のうち、Read Disturbの発生回数が多い、つまり、リードしたデータのビット当たりのエラー(誤り)が多い順に上位5つの物理ブロック60に含まれるグループGを、リード回数の計数の対象としても良い。当該条件は一例であり、これに限定されるものではない。
また、上述の第1の実施形態では、メモリコントローラ12はフロントエンド部20とバックエンド部30とに分かれて処理を行っているが、当該構成に限定されるものではない。第1の実施形態にかかる構成は、フロントエンド部20とバックエンド部30とに分かれていない構成で処理を行うメモリコントローラに対しても、適用することができる。
(第2の実施形態)
上述の第1の実施形態では、第1の計数処理と第2の計数処理の両方をバックエンド部が実行していた。本実施形態では、フロントエンド部が第2の計数処理を実行する。
図8は、本実施形態にかかるメモリシステム1010の全体構成の一例を模式的に示す図である。図8に示すように、メモリシステム1010は、第1の実施形態と同様に、NANDメモリ11と、メモリコントローラ1012と、を備える。NANDメモリ11の構成は、第1の実施形態と同様である。本実施形態においては、第1の実施形態と同じ構成の詳細は説明を省略または削除し、異なる構成について詳細に説明する。
また、本実施形態のメモリコントローラ1012は、フロントエンド部1020と、バックエンド部1030とを備える。
本実施形態のフロントエンド部1020は、PHY21と、ホストインタフェース22と、第1のCPU24と、RAM23と、を有する。
第1のCPU24は、第1の実施形態と同様に、フロントエンド部1020を制御する。また、PHY21と、ホストインタフェース22とは、第1の実施形態と同様の機能を有する。
RAM23は、第2の計数情報25を記憶する。第2の計数情報25は、NANDメモリ11に記憶されたデータの、グループGごとの計数結果である。グループGは、本実施形態における第2のカウント単位の一例である。
本実施形態のバックエンド部1030は、コマンドコントローラ31と、ディスパッチャ33と、NANDコントローラ36と、RAM1037と、第2のCPU40と、を有する。
第2のCPU40は、第1の実施形態と同様に、バックエンド部1030を制御する。また、コマンドコントローラ31と、ディスパッチャ33と、NANDコントローラ36とは、第1の実施形態と同様の機能を備える。
本実施形態のRAM1037は、アドレス変換テーブル32と、ライトバッファ34と、リードバッファ35と、キャッシュ52と、第1の計数情報1053と、を記憶する。
アドレス変換テーブル32と、ライトバッファ34と、リードバッファ35と、キャッシュ52とは、第1の実施形態と同様である。
第1の計数情報1053は、NANDメモリ11に記憶されたデータの、物理ブロック60ごとの計数結果である。物理ブロック60は、本実施形態における第1のカウント単位の一例である。
図9は、本実施形態にかかるメモリコントローラ1012の機能の一例を模式的に示す図である。図9に示すように、本実施形態のメモリコントローラ1012のフロントエンド部1020は、第1のコマンド制御部1201と、第1のデータ送受信制御部202と、第2の計数部1305と、を備える。
第1のデータ送受信制御部202は、第1の実施形態と同様の機能を備える。
第2の計数部1305は、バックエンド部1030から、ホスト50からのリード回数が統計開始閾値を超えた物理ブロック60に対応付けられたグループGに関する論理アドレスの通知を受け、当該グループGごとのリード回数を計数する。より詳細には、第2の計数部1305は、ホスト50から送信されたリード要求の対象が計数の対象である場合に、第2の計数情報25に記憶された当該グループGのリード回数を加算する。
また、本実施形態の第2の計数部1305は、いずれかのグループGのリード回数が所定のキャッシュ閾値を超えた場合に、当該グループGに関する論理アドレスを、バックエンド部1030に通知する。バックエンド部1030への通知は、例えばコマンドとして送信される。
また、本実施形態の第2の計数部1305は、バックエンド部1030から、リフレッシュをした物理ブロック60に含まれるグループGに関する論理アドレスを通知された場合に、当該グループGについて、第2の計数情報25に記憶されたリード回数を“0”に戻す。また、第2の計数部1305は、論理ブロック71に対してホスト50からライト要求がされた場合に、当該論理ブロック71を含むグループGについて、第2の計数情報25に記憶されたリード回数を“0”に戻す。
第1のコマンド制御部1201は、第1の実施形態の機能を備えた上で、バックエンド部1030から送信される計数対象のグループGに関する論理アドレスを通知するコマンド、リフレッシュをした物理ブロック60に含まれるグループGに関する論理アドレスを通知するコマンド、バックエンド部1030に対して送信されるキャッシュ対象のグループGに関する論理アドレスを通知するコマンド等の送受信を制御する。
また、図9に示すように、本実施形態のバックエンド部1030は、第2のコマンド制御部1301と、アドレス変換部302と、第2のデータ送受信制御部303と、第1の計数部1304と、キャッシュ制御部1306と、リフレッシュ制御部1307と、を備える。
アドレス変換部302と、第2のデータ送受信制御部303とは、第1の実施形態と同様の機能を備える。
第1の計数部1304は、第1の実施形態の機能を備えた上で、いずれかの物理ブロック60に対するホスト50からのリード回数が統計開始閾値を超えた場合に、統計開始閾値を超えた物理ブロック60に含まれるグループGに関する論理アドレスを、フロントエンド部1020に通知する。フロントエンド部1020への通知は、例えばコマンドコントローラ31によってコマンドとして送信される。
キャッシュ制御部1306は、第1の実施形態の機能を備えた上で、フロントエンド部1020から通知されたキャッシュ対象のグループGに関する論理アドレスが示すデータ領域に記憶されたデータを、キャッシュ52にキャッシュする。
また、リフレッシュ制御部1307は、第1の実施形態の機能を備えた上で、リフレッシュをした物理ブロック60に含まれるグループGに関する論理アドレスを、フロントエンド部1020に通知する。
第2のコマンド制御部1301は、第1の実施形態の機能を備えた上で、フロントエンド部1020に対して送信される統計開始閾値を超えた物理ブロック60に含まれるグループGに関する論理アドレスを通知するコマンド、フロントエンド部1020から送信されるキャッシュ対象のグループGに関する論理アドレスを通知するコマンド、フロントエンド部1020に対して送信されるリフレッシュをした物理ブロック60に含まれるグループGに関する論理アドレスを通知するコマンド等の送受信を制御する。
次に、本実施形態の計数処理について説明する。図10は、本実施形態にかかる第1の計数処理の手順の一例を示すフローチャートである。S1のリード要求の受信の処理から、S3のリード回数が統計開始閾値を超えた物理ブロック60の有無の判断の処理までは、第1の実施形態と同様である。
リード回数が統計開始閾値を超えた物理ブロック60がある場合は(S3“Yes”)、第1の計数部1304は、アドレス変換テーブル32を用いて当該物理ブロック60に対応付けられたグループGに関する論理アドレスを特定する。そして、第1の計数部1304は、リード回数が統計開始閾値を超えた物理ブロック60に対応付けられたグループGに関する論理アドレスをフロントエンド部1020に通知する(S104)。
S5のリード回数がリフレッシュ閾値を超えた物理ブロック60があるか否かの判断の処理から、S6のリード回数がリフレッシュ閾値を超えた物理ブロック60のリフレッシュの実行処理までは、第1の実施形態と同様である。
S6の処理の後、リフレッシュ制御部1307は、リフレッシュをした物理ブロック60を、第1の計数部1304、およびキャッシュ制御部1306に通知する。また、リフレッシュ制御部1307は、リフレッシュをした物理ブロック60に含まれるグループGに関する論理アドレスを、フロントエンド部1020に通知する。
そして、第1の計数部1304は、リフレッシュされた物理ブロック60に対応する第1の計数情報1053をクリアし、“0”に戻す。また、第2の計数部1305は、バックエンド部1030から通知されたリフレッシュをした物理ブロック60に含まれるグループGに対応する第2の計数情報25をクリアし、“0”に戻す(S107)。その後、この処理は終了する。
次に、本実施形態の第2の計数処理について説明する。図11は、本実施形態にかかる第2の計数処理の手順の一例を示すフローチャートである。
S11のリード要求の受信の処理は、第1の実施形態と同様である。また、S112では、第2の計数部1305は、バックエンド部1030から通知されたリード回数が統計開始閾値を超えた物理ブロック60に含まれる計数対象のグループG単位で、リード回数を計数する(S112)。第2の計数部1305は、第2の計数情報25に記憶されたグループGのリード回数を更新する。
S13のリード回数がキャッシュ閾値を超えたグループGがあるか否かの判断の処理は、第1の実施形態と同様である。
リード回数がキャッシュ閾値を超えたグループGがある場合は(S13“Yes”)、第2の計数部1305は、当該グループGに関する論理アドレスを、バックエンド部1030に通知する(S114)。
そして、キャッシュ制御部1306は、フロントエンド部1020から通知されたキャッシュ対象のグループGに関する論理アドレスが示すデータ領域に記憶されたデータを、キャッシュ52にキャッシュする(S115)。
このように、本実施形態のメモリシステム1010では、物理ブロック60単位のリード回数をバックエンド部1030で計数し、グループG単位のリード回数をフロントエンド部1020で計数する。このため、本実施形態のメモリシステム1010によれば、第1の実施形態の効果に加えて、フロントエンド部1020とバックエンド部1030とで、リード回数の計数処理にかかる処理負荷を分散することができる。
このように、上述の各実施形態のメモリシステム10,1010によれば、NANDメモリ11の疲弊を遅らせることができる。このため、上述の各実施形態のメモリシステム10,1010によれば、例えば、物理ブロック60におけるRead Disturbの発生を抑制することができる。また、上述の各実施形態のメモリシステム10,1010によれば、NANDメモリ11の疲弊を遅らせることにより、物理ブロック60に記憶されたデータのBER(Bit Error Rate)の悪化を抑制することができる。
また、上述の各実施形態のメモリシステム10,1010によれば、物理ブロック60のリフレッシュまでの時間を遅らせることができるため、P/E Cycle(Program/Erase Cycle)カウンタの進行を遅らせることができる。一般に、NANDメモリ11の寿命はP/E Cycleにより決定されるため、上述の各実施形態のメモリシステム10,1010によれば、P/E Cycleカウンタの進行を遅らせることにより、NANDメモリ11をより長期間使用することができる。
(変形例1)
上述の各実施形態では、第2の計数部305,1305は、論理ブロックのグループGごとにリード回数を計数していたが、第2のカウント単位はこれに限定されるものではない。第2のカウント単位は、第1のカウント単位(物理ブロック60)よりも小さく、かつ、ホスト50からリード要求が行われる単位である論理ブロック71を少なくとも1つ含む大きさであれば良い。
例えば、第2の計数部305,1305は、論理ブロックのグループGではなく、クラスタ70ごとにホスト50からのリード回数を計数しても良い。この場合、クラスタ70は、本変形例における第2のカウント単位の一例である。一般に、クラスタ70はグループGよりも小さいため、当該構成を採用する場合、メモリシステム10,1010は、キャッシュ対象のデータ量をより低減することができる。
(変形例2)
また、第2の計数部305,1305は、論理ブロック71ごとにホスト50からのリード回数を計数しても良い。この場合、論理ブロック71は、本変形例における第2のカウント単位の一例である。論理ブロック71は、グループGやクラスタ70よりも小さいため、当該構成を採用する場合、メモリシステム10,1010は、キャッシュ対象のデータ量をさらに低減することができる。
(変形例3)
また、第2の計数部305,1305は、物理ページPごとにホスト50からのリード回数を計数しても良い。この場合、物理ページPは、本変形例における第2のカウント単位の一例である。物理ページPはグループGよりも大きく、計数の対象の数が削減されるため、当該構成を採用する場合、メモリシステム10,1010は、計数情報53(または第2の計数情報25)のデータ量を削減することができる。
(変形例4)
また、上述の各実施形態では、メモリコントローラ12,1012は、第1の計数処理と第2の計数処理との2段階でリード回数を計数していたが、段階的にカウント単位を小さくしてリード回数の計数を行えば良く、2段階に限定されるものではない。例えば、メモリコントローラ12,1012は、1段階目として、物理ブロック60ごとにリード回数を計数し、2段階目として、統計開始閾値を超えた物理ブロック60に含まれる物理ページPごとにリード回数を計数し、さらに、3段階目として統計開始閾値を超えた物理ページPに含まれる論理ブロック71ごとにリード回数を計数しても良い。
当該構成を採用する場合、メモリコントローラ12,1012は、リード回数を計数する単位(物理ブロック60、物理ページP、論理ブロック71等)のうち、最も小さいデータ領域を示す単位(例えば、論理ブロック71)において、リード回数がキャッシュ閾値を超えた場合に、当該単位で示されるNANDメモリ11のデータ領域に記憶されたデータをキャッシュする。本変形例のように、メモリシステム10,1010は、リード回数を計数する単位について、様々な構成を採用することができる。
(変形例5)
また、上述の各実施形態では、キャッシュ52は、メモリコントローラ12,1012のバックエンド部30,1030のRAM37,1037内の領域としていたが、キャッシュされるデータが記憶される場所はこれに限定されるものではない。例えば、キャッシュ52は、メモリコントローラ12,1012の外部のDRAM等に設けられても良いし、フロントエンド部1020のRAM23内の領域としても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10,1010 メモリシステム、11 NANDメモリ、12,1012 メモリコントローラ、20,1020 フロントエンド部、22 ホストインタフェース、24 第1のCPU、25 第2の計数情報、30,1030 バックエンド部、31 コマンドコントローラ、32 アドレス変換テーブル、33 NANDコマンドディスパッチャ(ディスパッチャ)、34 ライトバッファ、35 リードバッファ、36 NANDコントローラ、37,1037 RAM、40 第2のCPU、50 ホスト、52 キャッシュ、53 計数情報、60 物理ブロック、70 クラスタ、71 論理ブロック、201,1201 第1のコマンド制御部、202 第1のデータ送受信制御部、301,1301 第2のコマンド制御部、302 アドレス変換部、303 第2のデータ送受信制御部、304,1304 第1の計数部、305,1305 第2の計数部、306,1306 キャッシュ制御部、307,1307 リフレッシュ制御部、1053 第1の計数情報、G,G1〜G6 グループ、P 物理ページ。

Claims (18)

  1. 不揮発性の記憶部と、
    前記記憶部を制御するメモリコントローラと、
    を備えるメモリシステムであって、
    前記メモリコントローラは、
    ホストからのリード回数を、前記記憶部のデータ領域を示す単位であって前記記憶部に記憶されたデータを消去可能な単位である第1のカウント単位のデータごとに計数する第1の計数回路と、
    前記第1のカウント単位の第1データに対する前記リード回数が第1の閾値を超えた場合に、当該第1データに含まれるデータ領域を示す物理的または論理的な単位である第2のカウント単位のデータごとの前記リード回数を計数する第2の計数回路と、
    前記第2のカウント単位の第2データに対する前記リード回数が第2の閾値を超えた場合に、当該第2データをキャッシュするキャッシュ制御回路と、
    を備えたメモリシステム。
  2. 前記メモリコントローラは、
    前記ホストからのコマンドを受け、前記コマンドに対するレスポンスを前記ホストに返す第1回路部と、
    前記第1回路部から前記コマンドを受け、前記コマンドに基づいて前記記憶部にアクセスを行う第2回路部と、を備え、
    前記第2回路部は、
    前記第1の計数回路と、
    前記第2の計数回路と、を含む、
    請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、
    前記ホストからのコマンドを受け、前記コマンドに対するレスポンスを前記ホストに返す第1回路部と、
    前記第1回路部から前記コマンドを受け、前記コマンドに基づいて前記記憶部にアクセスを行う第2回路部と、を備え、
    前記第2回路部は、
    前記第1の計数回路を含み、
    前記第1の計数回路は、前記第1のカウント単位の第1データに対する前記リード回数が前記第1の閾値を超えた場合に、前記第1の閾値を超えた前記第1データに含まれる前記第2のカウント単位を、前記第1回路部に通知し、
    前記第1回路部は、
    前記第2の計数回路を含み、
    前記第2の計数回路は、前記第2回路部から通知された前記第2のカウント単位のデータごとの前記リード回数を計数する、
    請求項1に記載のメモリシステム。
  4. 前記第2のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックを複数含み、前記ホストからリード要求がされる単位である、論理ブロックのグループである、
    請求項1から3のいずれか1項に記載のメモリシステム。
  5. 前記第2のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページを予め定められたデータサイズごとに分割した論理的な単位であり、かつ、前記ホストからの最小アクセス単位である論理ブロックを複数含む、
    請求項1から3のいずれか1項に記載のメモリシステム。
  6. 前記第2のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックである、
    請求項1から3のいずれか1項に記載のメモリシステム。
  7. 前記第2のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページである、
    請求項1から3のいずれか1項に記載のメモリシステム。
  8. 前記メモリコントローラは、リード回数が第3の閾値を超えた前記第1のカウント単位に対するリフレッシュを実行するリフレッシュ制御回路、をさらに備える、
    請求項1から7のいずれか1項に記載のメモリシステム。
  9. 前記第1の閾値は、前記第3の閾値より小さく、
    前記第2の閾値は、前記第1の閾値より小さい、
    請求項8に記載のメモリシステム。
  10. 不揮発性の記憶部と、
    前記記憶部を制御するメモリコントローラと、を備えるメモリシステムの制御方法であって、
    ホストからのリード回数を、前記記憶部のデータ領域を示す単位であって前記記憶部に記憶されたデータを消去可能な単位である第1のカウント単位のデータごとに計数することと、
    前記第1のカウント単位の第1データに対する前記リード回数が第1の閾値を超えた場合に、当該第1データに含まれるデータ領域を示す物理的または論理的な単位である第2のカウント単位のデータごとの前記リード回数を計数することと、
    前記第2のカウント単位の第2データに対する前記リード回数が第2の閾値を超えた場合に、当該第2データをキャッシュすることと、
    を含むメモリシステムの制御方法。
  11. 前記メモリコントローラは、
    前記ホストからのコマンドを受け、前記コマンドに対するレスポンスを前記ホストに返す第1回路部と、
    前記第1回路部から前記コマンドを受け、前記コマンドに基づいて前記記憶部にアクセスを行う第2回路部と、を備え、
    前記第1のカウント単位の第1データに対する前記リード回数が前記第1の閾値を超えた場合に、前記第1の閾値を超えた前記第1データに含まれる前記第2のカウント単位を、前記第2回路部が前記第1回路部に通知することと、
    前記第2回路部から通知された前記第2のカウント単位のデータごとの前記リード回数を、前記第1回路部が計数することと、をさらに含む、
    請求項10に記載のメモリシステムの制御方法。
  12. 前記第2のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックを複数含み、前記ホストからリード要求がされる単位である、論理ブロックのグループである、
    請求項10または11に記載のメモリシステムの制御方法。
  13. 前記第2のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページを予め定められたデータサイズごとに分割した論理的な単位であり、かつ、前記ホストからの最小アクセス単位である論理ブロックを複数含む、
    請求項10または11に記載のメモリシステムの制御方法。
  14. 前記第2のカウント単位は、前記ホストからの最小アクセス単位である論理ブロックである、
    請求項10または11に記載のメモリシステムの制御方法。
  15. 前記第2のカウント単位は、前記記憶部に対するデータの書き込みおよび読み出しが可能な単位である物理ページである、
    請求項10または11に記載のメモリシステムの制御方法。
  16. リード回数が第3の閾値を超えた前記第1のカウント単位に対するリフレッシュを実行すること、をさらに含む、
    請求項10から15のいずれか1項に記載のメモリシステムの制御方法。
  17. 前記第1の閾値は、前記第3の閾値より小さく、
    前記第2の閾値は、前記第1の閾値より小さい、
    請求項16に記載のメモリシステムの制御方法。
  18. 不揮発性の記憶部と、
    前記記憶部を制御するメモリコントローラと、
    を備えるメモリシステムであって、
    前記メモリコントローラは、
    前記記憶部に記憶されたデータに対するホストからのリード回数を、前記記憶部のデータ領域を示す単位であって前記記憶部に記憶されたデータの所定の領域を示す第1のカウント単位ごとと、前記リード回数が第1の閾値を超えた前記第1のカウント単位に含まれ、かつ、前記第1のカウント単位よりも小さいデータ領域を示す物理的または論理的な単位である第2のカウント単位ごとと、の少なくとも2段階に分けて計数する計数回路と、
    前記計数回路が前記リード回数を計数する単位のうち、最も小さいデータ領域を示す単位において、前記リード回数が第2の閾値を超えた場合に、当該単位で示される前記記憶部のデータ領域に記憶されたデータをキャッシュするキャッシュ制御回路と、
    を備えたメモリシステム。
JP2017179505A 2017-09-19 2017-09-19 メモリシステムおよびメモリシステムの制御方法 Pending JP2019056972A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017179505A JP2019056972A (ja) 2017-09-19 2017-09-19 メモリシステムおよびメモリシステムの制御方法
US15/908,832 US20190087125A1 (en) 2017-09-19 2018-03-01 Memory system and control method of memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017179505A JP2019056972A (ja) 2017-09-19 2017-09-19 メモリシステムおよびメモリシステムの制御方法

Publications (1)

Publication Number Publication Date
JP2019056972A true JP2019056972A (ja) 2019-04-11

Family

ID=65720308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017179505A Pending JP2019056972A (ja) 2017-09-19 2017-09-19 メモリシステムおよびメモリシステムの制御方法

Country Status (2)

Country Link
US (1) US20190087125A1 (ja)
JP (1) JP2019056972A (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI639920B (zh) * 2017-11-17 2018-11-01 財團法人工業技術研究院 記憶體控制器及其控制方法以及記憶體及其控制方法
KR20200110863A (ko) * 2019-03-18 2020-09-28 에스케이하이닉스 주식회사 메모리 시스템, 컴퓨팅 장치 및 동작 방법
KR20200122086A (ko) 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치
KR20200139913A (ko) 2019-06-05 2020-12-15 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치
US11294825B2 (en) * 2019-04-17 2022-04-05 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20210001546A (ko) 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법
US10991413B2 (en) * 2019-07-03 2021-04-27 Micron Technology, Inc. Memory with programmable die refresh stagger
US11392515B2 (en) * 2019-12-03 2022-07-19 Micron Technology, Inc. Cache architecture for a storage device
US11494124B2 (en) 2021-02-17 2022-11-08 Micron Technology, Inc. Inversion refresh of physical memory location
US11538522B1 (en) * 2021-06-30 2022-12-27 Micron Technology, Inc. Systems and methods for adaptive self-referenced reads of memory devices

Also Published As

Publication number Publication date
US20190087125A1 (en) 2019-03-21

Similar Documents

Publication Publication Date Title
JP2019056972A (ja) メモリシステムおよびメモリシステムの制御方法
US10860244B2 (en) Method and apparatus for multi-level memory early page demotion
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
US9696934B2 (en) Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory
US20110231598A1 (en) Memory system and controller
US10255191B2 (en) Logical memory address regions
US11494082B2 (en) Memory system
WO2017052764A1 (en) Memory controller for multi-level system memory having sectored cache
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US10769074B2 (en) Computer memory content movement
US20210342094A1 (en) Read Performance of Memory Devices
US11416168B2 (en) Memory controller and storage device including the same
US10019358B2 (en) Bank address remapping to load balance memory traffic among banks of memory
US20120260041A1 (en) Simultaneous eviction and cleaning operations in a cache
US10713159B2 (en) Semiconductor device for managing wear leveling operation of a nonvolatile memory device
US9128856B2 (en) Selective cache fills in response to write misses
CN110537172B (zh) 混合存储器模块
JP2020123040A (ja) メモリシステムおよび制御方法
CN107025179B (zh) 存储器设备及方法
US11294813B2 (en) SSD address table cache management based on probability distribution
US20150052310A1 (en) Cache device and control method thereof
US11704249B2 (en) Frozen time cache for multi-host read operations
US11709599B2 (en) Memory controller and memory system
US20140281157A1 (en) Memory system, memory controller and method
US11579792B2 (en) Data movement between different cell regions in non-volatile memory

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905