JP2023136816A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2023136816A JP2023136816A JP2022042726A JP2022042726A JP2023136816A JP 2023136816 A JP2023136816 A JP 2023136816A JP 2022042726 A JP2022042726 A JP 2022042726A JP 2022042726 A JP2022042726 A JP 2022042726A JP 2023136816 A JP2023136816 A JP 2023136816A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- order
- read
- prefetch
- 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
Links
- 230000004044 response Effects 0.000 claims abstract description 8
- 239000000872 buffer Substances 0.000 claims description 40
- 238000012546 transfer Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 description 77
- 238000010586 diagram Methods 0.000 description 28
- 238000013519 translation Methods 0.000 description 18
- 238000012937 correction Methods 0.000 description 15
- 238000000034 method Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000013518 transcription Methods 0.000 description 6
- 230000035897 transcription Effects 0.000 description 6
- 238000009826 distribution Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 208000003580 polydactyly Diseases 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- -1 Metal Oxide Nitride Chemical class 0.000 description 1
- 101150056203 SGS3 gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
- Vehicle Body Suspensions (AREA)
Abstract
【課題】リード性能が高いメモリシステムを提供すること。
【解決手段】メモリコントローラは、第1順番に従って、ユーザデータおよびメタデータを含む複数の第1データセグメントを、第1メモリが備える複数の第1セグメント領域にライトする。メモリコントローラは、ホストからのリード要求に応じて、ユーザデータに該当する複数の第2データセグメントがライトされた複数の第2セグメント領域のそれぞれを特定する。メモリコントローラは、プリフェッチを実行するか否かを、複数の第2セグメント領域のそれぞれから複数の第2データセグメントがリードされる順番である第2順番と、第1順番からメタデータのライト先の順番をスキップした第3順番と、に基づいて判定する。
【選択図】図16
【解決手段】メモリコントローラは、第1順番に従って、ユーザデータおよびメタデータを含む複数の第1データセグメントを、第1メモリが備える複数の第1セグメント領域にライトする。メモリコントローラは、ホストからのリード要求に応じて、ユーザデータに該当する複数の第2データセグメントがライトされた複数の第2セグメント領域のそれぞれを特定する。メモリコントローラは、プリフェッチを実行するか否かを、複数の第2セグメント領域のそれぞれから複数の第2データセグメントがリードされる順番である第2順番と、第1順番からメタデータのライト先の順番をスキップした第3順番と、に基づいて判定する。
【選択図】図16
Description
本実施形態は、メモリシステムに関する。
従来、不揮発性メモリを備えるメモリシステムが知られている。不揮発性メモリは、一例では、NAND型のフラッシュメモリである。
一つの実施形態は、リード性能が高いメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムはホストに接続可能である。メモリシステムは、第1メモリと、メモリコントローラと、を備える。第1メモリは、複数の第1セグメント領域を含む不揮発性の記憶領域を備える。メモリコントローラは、第1設定に従って、ユーザデータまたはメタデータをそれぞれが含む複数の第1データセグメントを複数の第1セグメント領域にライトする。第1設定は、複数の第1セグメント領域のうちのライト先の選択順である第1順番と複数の第1セグメント領域のうちのユーザデータおよびメタデータのそれぞれのライト先とを規定する。メモリコントローラは、ホストからのリード要求に応じて、複数の第1セグメント領域のうちの、複数の第1データセグメントのうちのリード要求によって要求されたユーザデータに該当する複数の第2データセグメントがライトされた複数の第2セグメント領域のそれぞれを特定する。メモリコントローラは、複数の第2セグメント領域のそれぞれから複数の第2データセグメントがリードされる順番である第2順番と、第1順番からメタデータのライト先の順番をスキップした第3順番と、に基づいて複数の第2セグメント領域に対するリード動作においてプリフェッチを実行するか否かを判定する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムのハードウェア構成の一例を示す模式的な図である。
図1は、第1の実施形態のメモリシステムのハードウェア構成の一例を示す模式的な図である。
メモリシステム1は、ホスト2と接続可能に構成される。メモリシステム1とホスト2との間の接続の規格は、特定の規格に限定されない。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどである。
ホスト2は、メモリシステム1にアクセスする際に、メモリシステム1にアクセス要求を送信する。アクセス要求は、ライト要求またはリード要求などである。アクセス要求は、論理アドレスとサイズ情報とを伴う。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す情報である。つまり、ホスト2は、メモリシステム1にアクセスを行う場合、アクセス先の指定に論理アドレスを使用する。論理アドレスの一例は、LBA(Logical Block Address)である。アクセス要求に含まれるサイズ情報は、論理アドレスによって指定された位置を先頭とする論理アドレス空間上の連続する範囲を示す。つまり、ホスト2は、各アクセス要求において、論理アドレスとサイズ情報とによって論理アドレス空間上のアクセス範囲を指定する。
ホスト2は、ライト要求するデータをメモリシステム1に送信する。このようなホスト2からメモリシステム1に送られたデータを、ユーザデータと表記する。
メモリシステム1は、メモリコントローラ10と、不揮発性メモリ20と、を備える。
不揮発性メモリ20は、ストレージとして機能する不揮発性のメモリである。不揮発性メモリ20の一例はNAND型のフラッシュメモリである。以下では、不揮発性メモリ20をNANDメモリ20と表記する。NANDメモリ20は、第1メモリの一例である。第1メモリとしては、任意の種類のメモリが採用され得る。
メモリコントローラ10は、メモリシステム1の制御を実行する。この制御は、ホスト2とNANDメモリ20との間のデータ転送に関する制御を含む。メモリコントローラ10は、例えば、system-on-a-chip(SoC)として構成され得る。メモリコントローラ10は、メモリシステム1の制御のための構成として、CPU(Central Processing Unit)11と、ホストインタフェース(I/F)コントローラ12と、RAM(Random Access Memory)13と、NANDコントローラ14と、誤り訂正回路15と、を備える。
CPU11は、ファームウェアプログラムに基づいてメモリコントローラ10の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ20に予め格納されており、メモリシステム1の起動時にNANDメモリ20からRAM13にロードされる。CPU11は、RAM13内のファームウェアプログラムを実行する。なお、ファームウェアプログラムの格納位置はNANDメモリ20に限定されない。メモリコントローラ10の各部の機能は、専用ハードウェア、ファームウェアプログラムを実行するCPU11、またはこれらの組み合わせ、により実現され得る。
RAM13は、高速な動作が可能な揮発性のメモリである。RAM13を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM13は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成され得る。RAM13を構成するメモリの一部または全部は、メモリコントローラ10とは別のチップとして構成されてもよい。
ホストI/Fコントローラ12は、ホスト2との間の通信インタフェースの制御を実行する。NANDコントローラ14は、CPU11による制御の下で、NANDメモリ20に対するアクセスを実行する。CPU11は、ホストI/Fコントローラ12とNANDコントローラ14とを制御することによって、ホスト2とNANDメモリ20との間のデータ転送を実現する。
誤り訂正回路15は、NANDメモリ20に書き込まれるデータに誤り訂正のための符号化を行う。誤り訂正回路15は、NANDメモリ20から出力された符号化されたデータを復号化することによって、そのデータに対して誤り訂正を実行する。誤り訂正回路15による符号化のアルゴリズムとしては、任意のアルゴリズムが採用可能である。一例では、誤り訂正回路15は、RS符号(Reed-Solomon Coding)を用いた符号化を行う。誤り訂正回路15は、符号化用の回路と復号化用の回路とを有していてもよい。
NANDメモリ20は、1以上のメモリチップ21を含む。1以上のメモリチップ21は、1以上のチャネルを介してメモリコントローラ10に接続される。図1に示される例では、NANDメモリ20は、メモリチップ21-0,21-1,21-2,21-3を含む。メモリチップ21-0,21-1は、チャネルch.0を介してメモリコントローラ10に接続される。メモリチップ21-2,21-3は、チャネルch.1を介してメモリコントローラ10に接続される。チャネルch.0に接続された2つのメモリチップ21-0,21-1と、チャネルch.1に接続された2つのメモリチップ21-2,21-3と、は互いに独立に動作可能である。なお、NANDメモリ20を構成するメモリチップ21の数、およびNANDメモリ20とメモリコントローラ10とを接続するチャネルの数は、これらに限定されない。
図2は、第1の実施形態にかかるメモリチップ21の構成の一例を示す模式的な図である。
図2に示される例によれば、メモリチップ21は、2つのサブアレイ23に分割されたメモリセルアレイ22と、2つのページバッファ24と、2つのデータキャッシュ25と、を備える。ページバッファ24と、データキャッシュ25は、例えば、それぞれSRAMで構成される。ページバッファ24と、データキャッシュ25は、フリップフロップで構成されてもよい。メモリセルアレイ22に対するアクセスは、ライト(プログラムとも称される)、リード、およびイレースを含む。各サブアレイ23は、2つのページバッファ24のうちの1つと、2つのデータキャッシュ25のうちの1つとともに、1つのプレーンを構成する。つまり、メモリチップ21は、2つのプレーンを備える。2つのプレーンは、互いに独立に動作可能である。各メモリチップ21内の各プレーンは、プレーン番号によって識別される。なお、1つのメモリチップ21が備えるプレーンの数は2に限定されない。1つのメモリチップ21は、複数のプレーンに分割されていなくてもよい。
メモリコントローラ10から入力されたデータをメモリチップ21が受け取り、入力されたデータをメモリチップ21がメモリセルアレイ22にライトする一連の動作は、本明細書では、ライト動作と表記される。メモリチップ21がメモリセルアレイ22からデータをリードしてメモリコントローラ10に出力する一連の動作は、本明細書では、リード動作と表記される。
ライト動作では、メモリチップ21は、メモリコントローラ10から入力されたデータをデータキャッシュ25に受ける。メモリコントローラ10からデータキャッシュ25にデータが入力される動作は、データイン動作とも称される。データイン動作の後、メモリチップ21は、データキャッシュ25に受けたデータをページバッファ24に転送し、転送完了後に、ページバッファ24からメモリセルアレイ22にデータをライトする。ページバッファ24からメモリセルアレイ22にデータをライトする動作は、プログラム動作とも称される。
リード動作では、メモリチップ21は、まず、リード対象のデータをメモリセルアレイ22からページバッファ24に転送する。メモリセルアレイ22からページバッファ24にデータを転送する動作は、センス動作とも称される。メモリチップ21は、センス動作によってページバッファ24に格納されたリード対象のデータを、ページバッファ24からデータキャッシュ25に転送する。そして、メモリチップ21は、データキャッシュ25からメモリコントローラ10にデータを出力する。データキャッシュ25からメモリコントローラ10にデータを出力する動作は、データアウト動作とも称される。
各サブアレイ23は、複数の物理ブロック26を備える。1つの物理ブロック26にライトされたデータは、一括にイレースされる。
ページバッファ24は、第1バッファの一例である。データキャッシュ25は、第2バッファの一例である。
図3は、第1の実施形態の物理ブロック26の回路構成を示す図である。なお、各物理ブロック26の構成は共通する。
物理ブロック26は、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング27を含む。
NANDストリング27の各々は、例えば14個のメモリセルトランジスタMT(MT0~MT13)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして14個のメモリセルトランジスタMT(MT0~MT13)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS(Metal Oxide Nitride Oxide Silicon)型であってもよいし、電荷蓄積層に導電膜を用いたFG(Floating Gate)型であってもよい。さらに、NANDストリング27内のメモリセルトランジスタMTの個数は14個に限定されない。
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0~SGS3(不図示)に接続されてもよい。同一の物理ブロック26内にあるメモリセルトランジスタMT0~MT13の制御ゲートは、それぞれワード線WL0~WL13に共通接続される。
ストリングユニットSU内にある各NANDストリング27の選択トランジスタST1のドレインは、それぞれ異なるビット線BL(BL0~BL(L-1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数の物理ブロック26間で各ストリングユニットSU内にある1つのNANDストリング27を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
つまりストリングユニットSUは、異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続されたNANDストリング27の集合である。また物理ブロック26は、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ22は、ビット線BLを共通にする複数の物理ブロック26の集合である。
前述したように、メモリセルアレイ22に対するデータのイレースは、物理ブロック26単位で実行される。
また、メモリセルアレイ22に対するライト(具体的にはプログラム動作)、およびメモリセルアレイ22からのリード(具体的にはセンス動作)は、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して行われる。以下、プログラム動作およびセンス動作の際、一括して選択されるメモリセルトランジスタMTの群を「メモリセルグループMCG」と呼ぶ。そして、1つのメモリセルグループMCGに含まれるメモリセルトランジスタMTのそれぞれにライトされる、あるいはリードされる1ビットの記憶領域の集まりを「ページ」と呼ぶ。
各メモリセルトランジスタMTに複数ビットのデータを格納可能に構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットのデータを格納可能な場合、ワード線WL(メモリセルグループMCG)当たりの記憶容量はnページ分のサイズに等しくなる。ここでは一例として、各メモリセルトランジスタMTに3ビットのデータが格納される方式について説明する。この方式によれば、各ワード線に3ページ分のデータが保持される。
図4は、第1の実施形態のデータコーディングとしきい値電圧分布の一例を示す図である。横軸はメモリセルトランジスタMTのしきい値電圧を示している。図4に示された8個のローブは、しきい値電圧分布を模式的に表したものである。8つのしきい値電圧分布は、それぞれしきい値電圧領域であり、ステート、とも表記される。8つのステートは、3ビットのデータ値に対応する。本図の例によれば、Erステートは“111”のデータ値に対応し、Aステートは“110”のデータ値に対応し、Bステートは“100”のデータ値に対応し、Cステートは“000”のデータ値に対応し、Dステートは“010”のデータ値に対応し、Eステートは“011”のデータ値に対応し、Fステートは“001”のデータ値に対応し、Gステートは“101”のデータ値に対応する。各データ値の先頭の桁をMSB(Most Significant Bit)とする。また、各データ値の末尾の桁をLSB(Least Significant Bit)とする。なお、ステートとデータ値との対応関係はこれに限定されない。
各メモリセルトランジスタMTのしきい値電圧は、8つのステートのうちの何れかに属するように制御される。各メモリセルトランジスタMTのしきい値電圧は、イレースによってErステートに設定され、プログラム動作によってAステート~Gステートのうちのデータ値に応じたステートに設定される。
センス動作においては、しきい値電圧といくつかの判定電圧との比較によって、各メモリセルトランジスタMTのしきい値電圧が属するステートが特定される。そして、特定されたステートに応じたデータ値が読み出される。図4のVra、Vrb、Vrc、Vrd、Vre、Vrf、およびVrgの組み合わせは、判定電圧の一例である。
1つのワード線WL(メモリセルグループMCG)が有する3ページ分の記憶領域のうちのLSBのデータ値が格納される記憶領域の集合を、ロアーページと表記する。3ページ分の記憶領域のうちのMSBのデータ値が格納される記憶領域の集合を、アッパーページと表記する。3ページ分の記憶領域のうちのLSBとMSBとの間のデータ値が格納される記憶領域の集合を、ミドルページと表記する。ロアーページ、ミドルページ、およびアッパーページの分類を、ページタイプと表記する。
第1の実施形態に適用可能なデータコーディングは上記された例に限定されない。また、各メモリセルトランジスタMTに格納されるデータのサイズは3ビットに限定されない。
各ページは、複数のクラスタを含む。論理アドレス空間における所定サイズの領域(単位領域と表記する)毎に論理アドレスが与えられる。クラスタは、論理アドレス空間における単位領域に対応した、NANDメモリ20における記憶領域である。単位領域のサイズとクラスタのサイズは同じであっても異なっていてもよい。各クラスタには、所定サイズのデータセグメントが、誤り訂正回路15によるRS符号化などを経て、ライトされる。以降、1つのクラスタに格納される単位のデータを、データセグメントと称する。クラスタは、第1セグメント領域の一例である。
メモリコントローラ10は、NANDメモリ20が備える各クラスタの位置を、物理アドレスを用いて管理する。物理アドレスの構成例については後述される。
メモリコントローラ10は、複数の物理ブロック26をグループ化し、グループ化された複数の物理ブロック26を1つの論理ブロックとして扱う。
図5は、第1の実施形態の論理ブロックの構成方法の一例を示す模式的な図である。図5に示されるハッチングが施された複数の物理ブロック26は、1つの論理ブロックを構成する。
具体的には、メモリチップ21-0のプレーン#0のサブアレイ23から選択されたブロックAおよびブロックBと、メモリチップ21-1のプレーン#0のサブアレイ23から選択されたブロックCおよびブロックDと、メモリチップ21-0のプレーン#1のサブアレイ23から選択されたブロックEおよびブロックFと、メモリチップ21-1のプレーン#1のサブアレイ23から選択されたブロックGおよびブロックHと、メモリチップ21-2のプレーン#0のサブアレイ23から選択されたブロックIおよびブロックJと、メモリチップ21-3のプレーン#0のサブアレイ23から選択されたブロックKおよびブロックLと、メモリチップ21-2のプレーン#1のサブアレイ23から選択されたブロックMおよびブロックNと、メモリチップ21-3のプレーン#1のサブアレイ23から選択されたブロックOおよびブロックPと、は1つの論理ブロックを構成する。
メモリチップ21-0のプレーン#0と、メモリチップ21-1のプレーン#0とは、バンク#0を構成する。メモリチップ21-0のプレーン#1と、メモリチップ21-1のプレーン#1とは、バンク#1を構成する。メモリチップ21-2のプレーン#0と、メモリチップ21-3のプレーン#0とは、バンク#2を構成する。メモリチップ21-2のプレーン#1と、メモリチップ21-3のプレーン#1とは、バンク#3を構成する。
各メモリチップ21において、プレーン#0とプレーン#1とは互いに独立に動作可能である。また、チャネルch.0に接続された2つのメモリチップ21-0、21-1と、チャネルch.1に接続された2つのメモリチップ21-2、21-3と、は互いに独立に動作可能である。よって、4つのバンク#0-#3のそれぞれは独立に動作可能である。換言すると、4つのバンク#0-#3は、並列に動作可能である。
図5に示された例では、メモリコントローラ10は、各バンクから4個の物理ブロック26を集めて、4つのバンクから集まった合計16個の物理ブロック26によって1つの論理ブロックを構成する。メモリコントローラ10は、このような方法で順次論理ブロックを構成する。
なお、図5に示されたバンクの構成および論理ブロックの構成方法はあくまでも一例である。各バンクは任意に設定され得る。また、論理ブロックは任意に設定され得る。
前述したように、各クラスタの位置は物理アドレスを用いて管理される。
図6は、第1の実施形態の物理アドレスの構成の一例を示す模式的な図である。
図6に示される例では、物理アドレスのビット列の最上位の複数桁は、論理ブロックを特定するための情報である論理ブロック番号を示す。
論理ブロック番号を示す複数桁に後続する複数桁は、ページ番号を示す。なお、ページ番号は、ワード線番号とストリングユニット番号との組み合わせである。
ページ番号を示す複数桁に後続する複数桁は、論理ブロック内位置情報を示す。論理ブロック内位置情報は、チャネル番号、プレーン番号、サブアレイ23内における物理ブロック26の位置、およびページタイプの組み合わせである。
論理ブロック内位置情報を示す複数桁に後続する複数桁は、クラスタ番号を示す。クラスタ番号は、ページの先頭を基準としたクラスタの相対位置を表す。
物理アドレスが上記のように構成されることにより、物理アドレスから、物理アドレスが示すクラスタが属するメモリチップ21、プレーン、ワード線WL、ストリングユニットSU、ページタイプ、およびページ内でのクラスタの位置、を特定することが可能である。つまり、物理アドレスは、NANDメモリ20内におけるクラスタの位置が特定可能に構成されている。
図7は、第1の実施形態のメモリコントローラ10の機能構成の一例を示す模式的な図である。
メモリコントローラ10は、ホストライト処理部101、ホストリード処理部102、GC(Garbage Collection)処理部103、および記憶部104を備える。
例えばCPU11は、ファームウェアに基づき、ホストライト処理部101、ホストリード処理部102、およびGC処理部103として機能する。RAM13は、記憶部104として機能する。なお、ホストライト処理部101、ホストリード処理部102、およびGC処理部103のそれぞれの機能の一部または全部は、ホストI/Fコントローラ12またはNANDコントローラ14に具備されてもよい。ホストライト処理部101、ホストリード処理部102、およびGC処理部103のそれぞれの機能の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)などのハードウェア回路によって実現されてもよい。
記憶部104には、L2P(Logical To Physical)情報201およびライト管理情報202が格納される。
L2P情報201は、論理アドレスを物理アドレスに翻訳(translate)するための情報である。L2P情報201は、例えば、論理アドレスと物理アドレスとの対応関係がクラスタ単位で記録されたテーブルである。メモリシステム1への電力供給の停止と再開とのサイクルを経てもメモリシステム1からL2P情報201が失われないように、メモリコントローラ10は、記憶部104内のL2P情報201に対して更新を行った場合、更新された部分を適時、NANDメモリ20に転送する。
メモリコントローラ10は、論理ブロックを構成するそれぞれの物理ブロック26に3ページ(即ちロアーページ、ミドルページ、およびアッパーページ)分のデータをライトする。メモリコントローラ10は、ライト先をページ単位で切り替える。1つの論理ブロックに対するライト先の切り替えの順番は、ライト管理情報202によって規定されている。
図8は、第1の実施形態のライト管理情報202の構成の一例を示す模式的な図である。
図8に示される例は、次に説明する構成に基づく。即ち、メモリシステム1は、8つのチャネルを備え、各メモリチップ21は4つのプレーンを備える。チャネルとプレーンとの組み合わせ毎にバンクが構成され、これによって全部で32個のバンクが構成される。各バンクは、4つの物理ブロック26を含む。よって、全部で128個の物理ブロック26によって1つの論理ブロックが構成される。各バンクを構成する4つの物理ブロックを、第1物理ブロック、第2物理ブロック、第3物理ブロック、第4物理ブロックと表記する。
上記された構成に対応するように、ライト管理情報202には、1つの論理ブロックを構成する128個の物理ブロックに対する、384ページ(=3ページ×128物理ブロック)の分のライトの順番が記録されている。1ページ毎にライト先のバンクが切り替わるようにライトの順番が決められている。メモリコントローラ10は、1つのページに対して先頭のクラスタから末尾のクラスタまでクラスタの配列順に各クラスタにデータセグメントをライトする。メモリコントローラ10は、当該1つのページへのライトが完了すると、ライト管理情報202に従って次のライト先のページを選択する。
NANDメモリ20には、ユーザデータの他に、メタデータがライトされる。メタデータは、例えばユーザデータログまたはRSパリティを含む。
ユーザデータログは、NANDメモリ20にライトされた1以上のデータセグメントのそれぞれについて、ホスト2からライト要求されたときに対応付けられていた論理アドレスを記録した情報である。所定量のデータセグメントがNANDメモリ20にライトされる毎にユーザデータログがNANDメモリ20にライトされる。ユーザデータログは、NANDメモリ20にライトされたデータセグメント毎にライト時における論理アドレスと物理アドレスとの対応関係を記録した情報である。ユーザデータログは、L2P情報201の再構築などの際に利用される。
RSパリティは、1つの論理ブロックを構成する128個の物理ブロック26に対する、384ページ(=3ページ×128物理ブロック)の分のデータ群をフレームとして生成される。RSパリティを用いた誤り訂正は、データセグメント単位で実行される誤り訂正に比べ、訂正能力が強いが、フレームをリードする必要があるために訂正に時間がかかる。よって、メモリコントローラ10は、データセグメント単位で実行される誤り訂正に失敗した場合に、RSパリティを含むフレームのリードを行って、RSパリティを用いた誤り訂正を実行する。
図8に示される例によれば、バンク#31に属する第1物理ブロックのアッパーページが、ユーザデータログ領域301-1として予約されている。ユーザデータログ領域301-1には、各バンクの第1物理ブロック26にライトされるユーザデータに関するユーザデータログがライトされる。バンク#0~#31の第1物理ブロックに対しては、0番目から94番目までユーザデータのデータセグメントがライトされ、0番目から94番目までにライトされた全データセグメントに関するユーザデータログが、ユーザデータログ領域301-1に95番目にライトされる。
バンク#31に属する第2物理ブロックのアッパーページが、ユーザデータログ領域301-2として予約されている。ユーザデータログ領域301-2には、各バンクの第2物理ブロック26にライトされるユーザデータに関するユーザデータログがライトされる。バンク#0~#31の第2物理ブロックに対しては、96番目から190番目までユーザデータのデータセグメントがライトされ、96番目から190番目までにライトされた全データセグメントに関するユーザデータログが、ユーザデータログ領域301-2に191番目にライトされる。
バンク#31に属する第3物理ブロックのアッパーページが、ユーザデータログ領域301-3として予約されている。ユーザデータログ領域301-3には、各バンクの第3物理ブロック26にライトされるユーザデータに関するユーザデータログがライトされる。バンク#0~#31の第3物理ブロックに対しては、192番目から286番目までユーザデータのデータセグメントがライトされ、192番目から286番目までにライトされた全データセグメントに関するユーザデータログが、ユーザデータログ領域301-3に287番目にライトされる。
バンク#30に属する第4物理ブロックのアッパーページが、ユーザデータログ領域301-4として予約されている。ユーザデータログ領域301-4には、各バンクの第4物理ブロック26にライトされるユーザデータに関するユーザデータログがライトされる。バンク#0~#30の第4物理ブロックに対しては、288番目から370番目までユーザデータのデータセグメントがライトされ、288番目から370番目までにライトされた全データセグメントに関するユーザデータログが、ユーザデータログ領域301-4に371番目にライトされる。
また、バンク#28~バンク#31の第4物理ブロックが、RSパリティがライトされるRSパリティ領域302として予約されている。論理ブロックに対して0番目から371番目までにライトされた全データセグメントに基づいて生成されたRSパリティが、RSパリティ領域302にライトされる。
このように、ライト管理情報202は、ライト先の選択の順番と、ユーザデータおよびメタデータのそれぞれのライト先と、を規定する。なお、ライト管理情報202は第1設定の一例である。ライト管理情報202によって規定されたライト先の選択の順番は、第1順番の一例である。
ライト管理情報202は、例えばNANDメモリ20の所定位置に格納されている。ライト管理情報202は、例えばメモリシステム1の起動時にNANDメモリ20から記憶部104にロードされる。メモリコントローラ10の各機能構成要素は、記憶部104内のライト管理情報202を適時、参照する。
図7に説明を戻す。
ホストライト処理部101は、ホスト2から受信したライト要求に応じてNANDメモリ20へのデータのライトを行う。ホストライト処理部101は、ホスト2から受信したユーザデータを、1以上のデータセグメントに分割し、当該1以上のデータセグメントのそれぞれに対応する論理アドレスを取得する。そして、ホストライト処理部101は、当該1以上のデータセグメントのそれぞれのライト先のクラスタを、ライト管理情報202に従って決定し、当該1以上のデータセグメントのそれぞれを、決定されたライト先のクラスタにライトする。
ホストライト処理部101は、ホスト2から受信したライト要求に応じてNANDメモリ20へのデータのライトを行う。ホストライト処理部101は、ホスト2から受信したユーザデータを、1以上のデータセグメントに分割し、当該1以上のデータセグメントのそれぞれに対応する論理アドレスを取得する。そして、ホストライト処理部101は、当該1以上のデータセグメントのそれぞれのライト先のクラスタを、ライト管理情報202に従って決定し、当該1以上のデータセグメントのそれぞれを、決定されたライト先のクラスタにライトする。
ホストライト処理部101は、ユーザデータから分割されたデータセグメントをNANDメモリ20にライトする際、当該データセグメントに対応する論理アドレスが、当該データセグメントのライト先のクラスタを示す物理アドレスに対応するよう、L2P情報201の更新を行う。
また、ホストライト処理部101は、所定量のデータセグメントをNANDメモリ20にライトする毎に、ユーザデータログまたはRSパリティを生成する。そして、ホストライト処理部101は、生成したユーザデータログまたはRSパリティをライト管理情報202に規定された順番で、かつ、ライト管理情報202に規定された領域301、302にライトする。
ホストリード処理部102は、ホスト2から受信したリード要求に応じてNANDメモリ20に対するリードを行う。ホストリード処理部102は、リード要求された1以上のデータセグメントのそれぞれに対応する論理アドレスを取得する。ホストリード処理部102は、取得された論理アドレスと、L2P情報201とに基づき、リード要求された1以上のデータセグメントのそれぞれがライトされたクラスタを特定し、特定された各クラスタからデータセグメントのリードを行う。
ホストリード処理部102は、NANDメモリ20に対するリードを行うとき、リード先のメモリチップ21に対し、複数のタイプのリード動作のうちのいずれかを指示することが可能である。複数のタイプのリード動作は、第1リード動作と、第2リード動作と、を含む。例えば、第1リード動作は、プリフェッチを含まないリード動作であり、第2リード動作は、プリフェッチを含むリード動作である。
ホスト2によるメモリシステム1に対するアクセスパターンには、シーケンシャルライト、シーケンシャルリード、ランダムリード、およびランダムライトがある。シーケンシャルライトとは、論理アドレスの順番で複数のデータセグメントがライトされるアクセスパターンである。シーケンシャルリードとは、論理アドレスの順番で複数のデータセグメントがリードされるアクセスパターンである。ランダムライトとは、論理アドレスの順番とは異なる順番で複数のデータセグメントがライトされるアクセスパターンである。ランダムリードとは、論理アドレスの順番とは異なる順番で複数のデータセグメントがリードされるアクセスパターンである。
一般に、ホストからメモリシステムに対してシーケンシャルライトのアクセスパターンでライトされた複数のデータセグメントは、ホストからシーケンシャルリードのアクセスパターンでリードされることが多い。
前述したように、ホストライト処理部101は、ホスト2から受信した複数のデータセグメントを、ライト管理情報202によって規定された順番(以下、ライト順と称する)でライト先のクラスタを選択しながら、順次、ライトする。よって、シーケンシャルライトのアクセスパターンでホスト2から受信した複数のデータセグメントが、シーケンシャルリードのアクセスパターンでホスト2からリード要求された場合、ライト順と同じ順番でNANDメモリ20のリード先のクラスタからリードされる可能性が高い。
そこで、ホストリード処理部102は、リード先のクラスタがライト順に沿って切り替わっていることを検出すると、NANDメモリ20に、プリフェッチを伴うリード動作、つまり第2リード動作を実行させる。リード先のクラスタがライト順に沿って切り替わった場合、間近の将来でもリード先のクラスタはライト順に沿って切り替わることが予想される。従って、ホストリード処理部102は、後にリードされる可能性が高いユーザデータをライト管理情報202に基づいて予想して、特定されたユーザデータをプリフェッチする。予想が当たった場合、ホストリード処理部102はプリフェッチしておいたユーザデータを使用することが可能であるので、リードの効率が向上する。
ホストリード処理部102は、リード先のクラスタの切り替わりの順番と、ライト管理情報202によって規定された順番と、の比較に基づいてプリフェッチを実行するか否かを判定する。
ホストライト処理部101は、ホスト2から受信したユーザデータをメタデータとともにNANDメモリ20にライトする。しかしながら、ホストリード処理部102は、リード要求に応じた処理では、NANDメモリ20からメタデータをリードせずにユーザデータをリードする。つまり、リード先のクラスタの切り替わりの順番は、ライト管理情報202によって規定された順番と、メタデータに対するアクセスに順番が与えられているか否かの点で異なる。
そこで、ホストリード処理部102は、リード先のクラスタの切り替わりの順番がライト管理情報202によって規定された順番に含まれているか否かの判定の際には、ライト管理情報202によって規定された順番のうち、メタデータがライトされる領域301、302にかかる順番をスキップする。これによって、ホストリード処理部102は、NANDメモリ20にライトされた順番と同じ順番でユーザデータの複数のデータセグメントがリードされているか否かを正確に判定することができる。NANDメモリ20にライトされた順番と同じ順番でユーザデータの複数のデータセグメントがリードされているか否かについての正確な判定結果に基づいて、ホストリード処理部102は、プリフェッチを実行するか否かを判定することができる。従って、プリフェッチによるリード性能の向上の効果を高めることができる。即ち、リード性能が向上する。
以降、ライト管理情報202によって規定された順番のうちからメタデータがライトされる領域301、302にかかる順番をスキップした順番にリード先のクラスタの切り替わりの順番が含まれるパターンを、シーケンシャルパターン、と表記する。ライト管理情報202によって規定された順番のうちからメタデータがライトされる領域301、302にかかる順番をスキップした順番にリード先のクラスタの切り替わりの順番が含まれないリードのパターンを、非シーケンシャルパターン、と表記する。
GC処理部103は、ガベージコレクションを実行する。
或るデータセグメント(第1のデータセグメントと表記する)が物理ブロック26に格納されている状態で、第1のデータセグメントが送られてきた際に指定された論理アドレスと同一値の論理アドレスが指定された第2のデータセグメントがホスト2から送られてきた場合、メモリコントローラ10は、第1のデータセグメントを無効なデータと見なし、第2のデータセグメントを有効なデータと見なす。そして、メモリコントローラ10は、ホストライト処理部101によって第2のデータセグメントをNANDメモリ20にライトする。つまり、NANDメモリ20に格納されているユーザデータは、有効なデータセグメントだけでなく無効なユーザセグメントを含み得る。
ガベージコレクションは、1つの論理ブロックに格納されている全ての有効なデータセグメントを他の論理ブロックに転記(transcript)し、転記元の論理ブロック内の全てのデータセグメントを無効化する処理である。転記は、コピーと換言することもできる。ガベージコレクションでは、無効と見なされたデータセグメントの転記は行われない。つまり、ガベージコレクションは、1つの論理ブロックから他の論理ブロックに有効なデータセグメントのみをリロケートする処理である。
ガベージコレクションによって全てのデータセグメントが無効化された論理ブロックは、フリーブロックとして扱われる。フリーブロックである論理ブロックを構成する全ての物理ブロック26に対しては、一括にイレースが実行される。イレースの後、その論理ブロックは、データのライトが可能な状態になる。
図9は、第1の実施形態の第1リード動作を説明するための模式的な図である。或るサブアレイ23の或る物理ブロック26(ブロックXと表記する)の或るページ(ページiと表記する)にライトされたデータセグメントがリード対象であることとする。
第1リード動作では、メモリチップ21は、ブロックXのページiにライトされた1ページ分のデータをセンス動作によってページバッファ24に転送する(S1)。そして、メモリチップ21は、ページバッファ24にライトされた1ページ分のデータをデータキャッシュ25に転送する(S2)。そして、メモリチップ21は、データキャッシュ25にライトされた1ページ分のデータのうちのリード対象のデータセグメントをメモリコントローラ10に出力する(S3)。
図10は、第1の実施形態の第2リード動作を説明するための模式的な図である。或るサブアレイ23内のブロックXのページiにライトされたデータセグメント、サブアレイ23内の別のブロックYのページjにライトされたデータセグメント、サブアレイ23内のさらに別のブロックZのページkにライトされたデータセグメントがリード対象であることとする。
メモリチップ21は、ブロックXのページiにライトされた1ページ分のデータをセンス動作によってページバッファ24に転送する(S11)。そして、メモリチップ21は、ページバッファ24に格納された1ページ分のデータをデータキャッシュ25に転送する(S12)。そして、メモリチップ21は、データキャッシュ25に格納された1ページ分のデータのうちのリード対象のデータセグメントをメモリコントローラ10に出力する(S13)。
メモリチップ21は、ブロックYのページjにライトされた1ページ分のデータをセンス動作によってページバッファ24に転送する(S14)。なお、ステップS14の実行期間は、ステップS13の実行期間と一部または全部で重複する。ステップS13およびステップS14の後、メモリチップ21は、ページバッファ24に格納された1ページ分のデータをデータキャッシュ25に転送する(S15)。そして、メモリチップ21は、データキャッシュ25に格納された1ページ分のデータのうちのリード対象のデータセグメントをメモリコントローラ10に出力する(S16)。
メモリチップ21は、ブロックZのページkにライトされた1ページ分のデータをセンス動作によってページバッファ24に転送する(S17)。なお、ステップS17の実行期間は、ステップS16の実行期間と一部または全部で重複する。
以降、ステップS15~ステップS17と同様の処理が繰り返し実行され得る。
つまり、第2リード動作では、メモリコントローラ10は、一つのページにライトされたリード対象のデータセグメントがデータキャッシュ25から出力される期間と、別のページにライトされたデータに対するセンス動作が実行される期間とを、重複させることができる。
シーケンシャルライトのアクセスパターンでライトされたユーザデータがシーケンシャルリードのアクセスパターンでリードされる可能性が高いと考えられる場合には、ホストリード処理部102は、リード対象のデータセグメント(第1リード対象と表記する)のリードの次にリード対象とされる可能性が高いデータセグメント(第2リード対象と表記する)がライトされたページを、ライト管理情報202に基づいて特定する。そして、ホストリード処理部102は、第1リード対象がデータキャッシュ25から出力されている期間に、特定された第2リード対象がライトされたページに対するセンス動作が実行されるよう、第2リード動作をメモリチップ21に実行させる。
図11は、第1の実施形態のホストリード処理部102の機能構成の一例を説明するための模式的な図である。
ホストリード処理部102は、翻訳部111と、1以上の判定部112と、1以上のバンク制御部113と、を備える。判定部112とバンク制御部113との対は、バンク毎に設けられる。図11に示される例では、メモリシステム1には、バンク#0~#(n-1)のn個のバンクが設けられていることとしている。よって、n対の判定部112およびバンク制御部113がホストリード処理部102に設けられる。
翻訳部111は、L2P情報201に基づき、ホスト2からリード要求された1以上のデータセグメントのそれぞれについてリード先のクラスタ(より正確にはリード先のクラスタを示す物理アドレス)を特定する。そして、翻訳部111は、n個の判定部112のうちのリード先のクラスタが属するバンクに対応した判定部112にデータセグメント毎の物理アドレスを入力する。
判定部112は、自身に順次入力される物理アドレスを、自身が対応するバンクと同じバンクに対応したバンク制御部113に入力する。判定部112は、翻訳部111から入力された複数の物理アドレスの履歴(ヒストリ)に基づき、プリフェッチを実行するか否かを判定する。そして、判定部112は、プリフェッチを実行するか否かの指示とともに物理アドレスをバンク制御部113に入力する。
バンク制御部113は、NANDメモリ20のうちの自身に対応するバンクに属するメモリチップ21に、入力された物理アドレスをリード先としたリード動作を実行させる。プリフェッチを行わない指示が物理アドレスとともに入力された場合には、バンク制御部113は、メモリチップ21に第1リード動作を実行させる。プリフェッチを実行する指示が物理アドレスとともに入力された場合には、バンク制御部113は、メモリチップ21に第2リード動作を実行させる。
図12は、第1の実施形態の判定部112の詳細な機能構成の一例を示す模式的な図である。ホストリード処理部102に具備されるn個の判定部112は、共通した機能構成を備える。
判定部112は、アドレスヒストリ記憶部121と、アドレスコンパレータ122と、アクセスヒストリ記憶部123と、判定テーブル記憶部124と、を備える。
アドレスヒストリ記憶部121は、最新に入力された2つの物理アドレスの対を保持する。図12に示された例では、アドレスヒストリ記憶部121は、最新に入力された物理アドレスを物理アドレスADDR_curとして保持し、物理アドレスADDR_curのひとつ前に入力された物理アドレスを物理アドレスADDR_prevとして保持することとする。
アドレスコンパレータ122は、物理アドレスADDR_prevが示すクラスタおよび物理アドレスADDR_curが示すクラスタに対するリードが、判定部112に対応するバンクの視点において、シーケンシャルパターンに該当するか非シーケンシャルパターンに該当するかを判定する。具体的には、アドレスコンパレータ122は、物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、ライト管理情報202に規定された順番、より詳細にはライト管理情報202に規定された順番のうちの他のバンクへのライトに関する順番およびメタデータのライトに関する順番をスキップした順番(以下、ユーザデータライト順と称する)、の一部と一致するか否かを判定する。そして、判定結果に基づき、アドレスコンパレータ122は、シーケンシャルパターンまたは非シーケンシャルパターンを示す1ビットの値を出力する。
物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、ユーザデータライト順の一部と一致する場合、アドレスコンパレータ122は、判定結果としてシーケンシャルパターンを示す値を出力する。物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、ユーザデータライト順の何れの一部とも一致しない場合、アドレスコンパレータ122は、判定結果として非シーケンシャルパターンを示す値を出力する。
アクセスヒストリ記憶部123は、アドレスコンパレータ122による最新の複数回の判定の結果を保持する。アクセスヒストリ記憶部123は、例えば、SRAMで構成される。アクセスヒストリ記憶部123は、フリップフロップで構成されてもよい。図12に示される例では、アクセスヒストリ記憶部123は、8ビットのレジスタとして構成されている。判定部112は、アドレスコンパレータ122が判定結果を出力する毎にアクセスヒストリ記憶部123の記憶内容を左に1ビットだけシフトするビットシフトを行う。これにより、判定部112は、アドレスコンパレータ122が出力する最新の判定結果をレジスタの最右端に格納する。つまり、アクセスヒストリ記憶部123は、最新の8回の判定結果を保持する。以降、アクセスヒストリ記憶部123に保持された8ビットの情報を、アクセスヒストリと表記する。
判定テーブル記憶部124は、プリフェッチ判定テーブル211を保持する。判定テーブル記憶部124は、例えば、SRAMで構成される。判定テーブル記憶部124は、フリップフロップで構成されてもよい。プリフェッチ判定テーブル211は、アクセスヒストリのビット数に応じた数のエントリを有する。ここでは、アクセスヒストリは8ビットのデータであるので、プリフェッチ判定テーブル211は、28個のエントリを有する。28個のエントリのそれぞれには、8ビットのインデックスが与えられている。これにより、プリフェッチ判定テーブル211は、アクセスヒストリを検索キーとした検索が可能とされる。プリフェッチ判定テーブル211のそれぞれのエントリには、プリフェッチを実行するか否かを示す1ビットの値が予め格納されている。判定部112は、アクセスヒストリと同じ値のインデックスが与えられたエントリを参照する。そして、参照によって得られた値が実行(Exec)を示す場合、判定部112は、プリフェッチを実行すると判定する。参照によって得られた値が非実行(Not exec)を示す場合、判定部112は、プリフェッチを実行しないと判定する。
プリフェッチ判定テーブル211のそれぞれのエントリに格納される値は、設計者が任意の方法で決めることができる。例えば、設計者は、実験、シミュレーション、または経験によって、次に入力される物理アドレスを含む最新の2つの物理アドレスに基づくリードがシーケンシャルパターンに該当する確率をアクセスヒストリの値毎に計算する。そして、設計者は、計算によって得られた確率に基づいて各エントリの数値情報を決定する。次に入力される物理アドレスを含む最新の2つの物理アドレスに基づくリードがシーケンシャルパターンに該当する確率が大きい場合、設計者は、プリフェッチを実行することを示す値を設定する。次に入力される物理アドレスを含む最新の2つの物理アドレスに基づくリードがシーケンシャルパターンに該当する確率が大きくない場合、設計者は、プリフェッチを行わないことを示す値を設定する。
例えば、設計者は、8ビットの「00000010」のアクセスヒストリ(インデックス)が与えられたエントリに、プリフェッチを行わないことを示す値を設定する。また、設計者は、8ビットの「11111111」のアクセスヒストリ(インデックス)が与えられたエントリに、プリフェッチを行うことを示す値を設定する。なお、ここでは、アクセスヒストリを構成する判定結果に関し、「1」はシーケンシャルパターンを示し、「0」は非シーケンシャルパターンを示すこととしている。なお、設計者は、アクセスヒストリを構成する判定結果についても、シーケンシャルパターンを示す値と非シーケンシャルパターンを示す値とのそれぞれを「1」とするか「0」とするかを任意に決めることができる。
続いて、第1の実施形態のメモリシステム1の動作について説明する。
図13は、第1の実施形態のホストライト処理部101の動作の一例を示すフローチャートである。ここでは、メモリコントローラ10がホスト2から1つのライト要求およびユーザデータを受信した場合の動作を説明する。ホストライト処理部101は、本図に示される動作を、1つのライト要求およびユーザデータを受信する毎に実行する。
ホストライト処理部101は、ホスト2からライト要求およびユーザデータを受信すると(S101)、ユーザデータのライト先をライト管理情報202に基づいてデータセグメント単位で決定する(S102)。
一例では、ホストライト処理部101は、図6を参照して説明した物理アドレスのビット列のうちの、論理ブロック番号およびページ番号を決定する。そして、ホストライト処理部101は、論理ブロック番号およびページ番号によって特定されるページ群のうちから、ユーザデータに含まれる1以上のデータセグメントのライト先のクラスタを、ライト管理情報202に従って決定する。例えば、空いているクラスタ、つまり何れのデータセグメントもライト先として設定されていないクラスタ、が「a番目」が与えられたページにある場合、ホストライト処理部101は、まず、当該クラスタを1つのデータセグメント(第1のデータセグメントと表記する)のライト先として決定する。ホストライト処理部101は、「a番目」が与えられたページに与えられた論理ブロック内位置情報を取得し、当該ページの先頭を基準とした第1のデータセグメントのライト先のクラスタの相対位置を、クラスタ番号として取得する。
ホストライト処理部101は、「a番目」が与えられたページに空いているクラスタが無くなるまで、「a番目」が与えられたページに含まれる各クラスタを、クラスタ番号の順番でデータセグメントのライト先として決定する。そして、「a番目」が与えられたページに空いているクラスタが無くなると、ホストライト処理部101は、「(a+1)番目」が与えられたページに含まれる各クラスタを、クラスタ番号の順番でデータセグメントのライト先として決定する。ライト管理情報202が表すページのうちメタデータ用の領域301、302を除く全てのページがユーザデータのライト先として決定されると、ホストライト処理部101は、ページ番号をインクリメントする。このように、ホストライト処理部101は、「0番目」が与えられたページから順番に1以上のデータセグメントのライト先を決定する。
続いて、ホストライト処理部101は、ライト管理情報202に従って、ユーザデータをページ単位でNANDメモリ20にライトする(S103)。ステップS103では、ホストライト処理部101は、所定のタイミングでユーザデータログおよびRSパリティを生成して、ライト管理情報202に従って論理ブロックにライトする。
続いて、ホストライト処理部101は、ステップS103においてライトされたユーザデータのデータセグメント毎にL2P情報201を更新し(S104)、動作を終了する。
図14は、第1の実施形態のGC処理部103によるガベージコレクションの動作の一例を示すフローチャートである。なお、ガベージコレクションの動作を開始する条件は任意に設計される。一例では、メモリシステム1が備えるフリーブロックの数が所定数を下回った場合に、GC処理部103は、ガベージコレクションを実行する。
まず、GC処理部103は、転記元の論理ブロックおよび転記先の論理ブロックを選択する(S201)。そして、GC処理部103は、転記元の論理ブロックから有効なユーザデータをリードする(S202)。
続いて、GC処理部103は、転記元の論理ブロックからリードされたユーザデータのライト先をライト管理情報202に従ってデータセグメント単位で決定する(S203)。ステップS203では、ステップS102と同様の方法でライト先が決定される。
続いて、GC処理部103は、ユーザデータを転記先の論理ブロックにライトする(S204)。ステップS204では、ステップS103と同様の方法で、ユーザデータ、ユーザデータログ、およびRSパリティがライトされる。
続いて、GC処理部103は、ステップS204においてライトされたユーザデータのデータセグメント毎にL2P情報201を更新し(S205)、動作を終了する。
図15は、第1の実施形態の翻訳部111の動作の一例を示すフローチャートである。ここでは、メモリコントローラ10がホスト2から1つのリード要求を受信した場合の動作を説明する。翻訳部111は、本図に示される動作を、リード要求を受信する毎に実行する。
メモリコントローラ10がホスト2からリード要求を受信すると(S301)、ホストリード処理部102において、翻訳部111は、リード要求が指定する論理アドレス範囲に基づき、リード要求されたユーザデータに含まれる1以上のデータセグメントのそれぞれに対応する論理アドレスを特定する(S302)。
そして、翻訳部111は、L2P情報201に基づき、特定された各論理アドレスを物理アドレスに翻訳する(S303)。これによって、リード要求されたユーザデータに含まれる1以上のデータセグメントのそれぞれがライトされたクラスタが特定される。
翻訳部111は、各物理アドレスを、リード先のクラスタが属するバンクに対応する判定部112に入力する(S304)。翻訳部111は、翻訳によって特定された1以上の物理アドレスを、特定した順番で1以上の判定部112に分配する。そして、翻訳部111の動作が終了する。
図16は、第1の実施形態の判定部112の動作の一例を示すフローチャートである。判定部112には、翻訳部111から順次、物理アドレスが入力される。本図では、過去に複数回、物理アドレスが入力された後に、新規に1つの物理アドレスが入力されたときの判定部112の動作を説明する。なお、判定部112は、物理アドレスが入力される毎に本図に示される一連の動作を実行する。
判定部112は、翻訳部111から物理アドレスを受信すると(S401)、前回に受信した物理アドレスを物理アドレスADDR_prevとしてアドレスヒストリ記憶部121に保持し、今回に受信した物理アドレスを物理アドレスADDR_curとしてアドレスヒストリ記憶部121に保持する(S402)。
アドレスコンパレータ122は、物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、ライト管理情報202に規定された順番のうちの他のバンクへのライトに関する順番およびメタデータのライトに関する順番をスキップした順番、すなわち、ユーザデータライト順の一部と一致するか否かを判定する(S403)。
図8に示される例によれば、例えばバンク#31に関しては、ユーザデータライト順は、第1物理ブロックのロアーページ、第1物理ブロックのミドルページ、第2物理ブロックのロアーページ、第2物理ブロックのミドルページ、第3物理ブロックのロアーページ、第3物理ブロックのミドルページ、である。各ページ内では、クラスタ番号順にライトの順番が定められている。
バンク#31に対応する判定部112のアドレスコンパレータ122は、物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、上記の順番の一部と一致するか否かを判定する。例えば、バンク#31に対応する判定部112のアドレスコンパレータ122は、物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、第2物理ブロックのミドルページ、第3物理ブロックのロアーページ、の順番になっている場合に、物理アドレスADDR_prevと物理アドレスADDR_curとの順番が、ユーザデータライト順の一部と一致すると判定する。
ステップS403における判定の結果が一致である場合(S403:Yes)、判定部112は、アクセスヒストリ記憶部123に保持されているアクセスヒストリを左に1ビットだけシフトさせて、アクセスヒストリの最右桁にシーケンシャルパターンを示す1ビットの値を追加する(S404)。
ステップS403における判定の結果が一致でない場合(S403:No)、判定部112は、アクセスヒストリ記憶部123に保持されているアクセスヒストリを左に1ビットだけシフトさせて、アクセスヒストリの最右桁に非シーケンシャルパターンを示す1ビットの値を追加する(S405)。
ステップS404またはステップS405の後、判定部112は、プリフェッチ判定テーブル211のうちのアクセスヒストリと同じ値のインデックスが与えられたエントリを参照する(S406)。そして、判定部112は、参照によって実行を示す値が得られたか否かを判定する(S407)。
実行を示す値が得られた場合(S407:Yes)、判定部112は、プリフェッチを実行する指示とともに物理アドレスADDR_curをバンク制御部113に送信する(S408)。
非実行を示す値が得られた場合(S408:No)、判定部112は、プリフェッチを実行する指示なく物理アドレスADDR_curをバンク制御部113に送信する(S409)。
ステップS408またはステップS409の後、判定部112は動作を終了する。
図17は、第1の実施形態のバンク制御部113の動作の一例を示すフローチャートである。バンク制御部113には、判定部112から順次、物理アドレスが入力される。本図では、1つの物理アドレスが入力されたときのバンク制御部113の動作を説明する。なお、バンク制御部113は、物理アドレスが入力される毎に本図に示される一連の動作を実行する。
バンク制御部113は、判定部112から物理アドレスを受信すると(S501)、物理アドレスとともにプリフェッチを実行する指示を受信したか否かを判定する(S502)。本図の説明において、ステップS501によって新規に入力された物理アドレスを、ADDR_inと表記する。
物理アドレスADDR_inを受信したがプリフェッチを実行する指示を受信しなかった場合(S502:No)、バンク制御部113は、物理アドレスADDR_inが示すクラスタをリード対象とする第1リード動作を実行する(S503)。ホストリード処理部102は、ステップS503によってNANDメモリ20から出力されたデータセグメントをホスト2に転送する。
物理アドレスADDR_inとともにプリフェッチを実行する指示を受信した場合(S502:Yes)、バンク制御部113は、ライト管理情報202に規定された順番のうちの他のバンクへのライトに関する順番およびメタデータのライトに関する順番をスキップした順番、すなわちユーザデータライト順に基づき、物理アドレスADDR_inが示すクラスタを含むページの次にリードが行われるページを推定する(S504)。
図8に示される例によれば、例えばバンク#31に関しては、ユーザデータライト順は、第1物理ブロックのロアーページ、第1物理ブロックのミドルページ、第2物理ブロックのロアーページ、第2物理ブロックのミドルページ、第3物理ブロックのロアーページ、第3物理ブロックのミドルページ、である。例えば、物理アドレスADDR_inが示すクラスタが第1物理ブロックのミドルページに含まれる場合、バンク制御部113は、当該順番において第1物理ブロックのミドルページに後続する第2物理ブロック26のロアーページを、次にリードが行われるページとして推定する。
続いて、バンク制御部113は、物理アドレスADDR_inが示すクラスタをリード対象とし、推定されたページをプリフェッチ対象とする第2リード動作を実行する(S505)。ホストリード処理部102は、ステップS505によってNANDメモリ20から出力されたデータセグメントをホスト2に転送する。
ステップS503またはステップS505の後、バンク制御部113は動作を終了する。
以上述べたように、第1の実施形態によれば、メモリコントローラ10は、ライト先の選択の順番と、ユーザデータおよびメタデータのそれぞれのライト先と、をそれぞれ規定するライト管理情報202に基づき、ユーザデータおよびメタデータを含む複数のデータセグメントをNANDメモリ20にライトする(例えば図13参照)。メモリコントローラ10は、ホスト2からのリード要求に応じて、リード要求によって要求されたユーザデータに該当する複数のデータセグメントがライトされた複数のクラスタのそれぞれを順次特定する(例えば図15のS301~S303参照)。そして、メモリコントローラ10は、複数のデータセグメントがライトされた複数のクラスタの特定された順番と、ライト管理情報202に規定された順番のうちのメタデータのライトに関する順番をスキップした順番と、に基づいてNANDメモリ20に対するリードにおいてプリフェッチを実行するか否かを判定する(例えば図16参照)。
よって、メモリコントローラ10は、NANDメモリ20にライトされた順番と同じ順番でユーザデータの複数のデータセグメントがリードされているか否かを正確に判定することができる。NANDメモリ20にライトされた順番と同じ順番でユーザデータの複数のデータセグメントがリードされているか否かについての正確な判定結果に基づいて、メモリコントローラ10は、プリフェッチを実行するか否かを判定することができる。従って、プリフェッチによるリード性能の向上の効果を高めることができる。即ち、リード性能が向上する。
なお、メモリコントローラ10は、プリフェッチを実行しないと判定した場合、NANDメモリ20に第1リード動作を実行させ、プリフェッチを実行すると判定した場合、NANDメモリ20に第2リード動作を実行させる。第1リード動作は、メモリセルアレイ22からページバッファ24にデータを転送し、ページバッファ24からデータキャッシュ25に当該データを転送し、データキャッシュ25からメモリコントローラ10に当該データを出力する動作である。第2リード動作は、メモリセルアレイ22からページバッファ24にデータを転送し、ページバッファ24からデータキャッシュ25に当該データを転送し、データキャッシュ25からメモリコントローラ10に当該データを出力し、データキャッシュ25からメモリコントローラ10に当該データを出力する期間と重複する期間に、メモリセルアレイ22からページバッファ24に別のデータを転送する、リード動作である。
また、第1の実施形態では、メモリコントローラ10は、特定されたリード先の複数のクラスタのうちの、最新に連続して特定された2つのクラスタの対を、リード先のクラスタが特定される毎に取得する。そして、メモリコントローラ10は、ライト管理情報202に規定された順番のうちのメタデータのライトに関する順番をスキップした順番(すなわち、ユーザデータライト順)に当該対を構成する2つのクラスタの順番が含まれるか否かに基づいて、プリフェッチを実行するか否かを判定する(例えば図16参照)。
また、第1の実施形態では、メモリコントローラ10は、連続して特定された2つのクラスタへのリードの順番がユーザデータライト順に含まれるか否かの判定結果の履歴であるアクセスヒストリを保持するアクセスヒストリ記憶部123を備える。メモリコントローラ10は、プリフェッチを実行するか否かをアクセスヒストリに基づいて判定する。
よって、複雑なプリフェッチ制御を行うことが可能となる。例えば、連続して特定された2つのクラスタへのリードの順番がユーザデータライト順に含まれるケースが所定回、連続して起きた場合にプリフェッチを実行する、などの制御が可能になる。
なお、メモリコントローラ10は、プリフェッチを実行するか否かの判定に、必ずしもアクセスヒストリを用いなくてもよい。例えば、メモリコントローラ10は、連続して特定された2つのクラスタへのリードの順番がユーザデータライト順に含まれる場合には、プリフェッチを実行すると判定し、連続して特定された2つのクラスタへのリードの順番がユーザデータライト順に含まれない場合には、プリフェッチを実行しないと判定してもよい。
また、第1の実施形態では、メモリコントローラ10は、プリフェッチ判定テーブル211を保持する判定テーブル記憶部124をさらに備える。プリフェッチ判定テーブル211は、複数のエントリを有し、当該複数のエントリのそれぞれには、プリフェッチを実行するか否かを示す値が記録されている。また、当該複数のエントリのそれぞれには、インデックスが与えられている。メモリコントローラ10は、プリフェッチ判定テーブル211の複数のエントリのうち、アクセスヒストリと等しいインデックスが与えられたエントリに記録された値に基づいて、プリフェッチを実行するか否かを判定する。
よって、アクセスヒストリに基づいた複雑なプリフェッチ制御を行うことが可能となる。
(第2の実施形態)
ガベージコレクションが実行されると、論理ブロック内の有効なユーザデータのみが別の論理ブロックにリロケートされる。よって、ホスト2からシーケンシャルライトのアクセスパターンでライトされた複数のデータセグメントがたとえライト管理情報202に規定された順番でNANDメモリ20にライトされたとしても、ガベージコレクションを経ることによって、各データセグメントの配置がライト要求の処理時の配置から変更され得る。
ガベージコレクションが実行されると、論理ブロック内の有効なユーザデータのみが別の論理ブロックにリロケートされる。よって、ホスト2からシーケンシャルライトのアクセスパターンでライトされた複数のデータセグメントがたとえライト管理情報202に規定された順番でNANDメモリ20にライトされたとしても、ガベージコレクションを経ることによって、各データセグメントの配置がライト要求の処理時の配置から変更され得る。
第2の実施形態では、ガベージコレクションによって各データセグメントの配置がライト要求の処理時から変更されてもアクセスヒストリに応じたプリフェッチを実行するか否かの判定を適切に実行することができるように、プリフェッチ判定テーブルの各エントリ内の値が学習によって逐次更新される。
以下に、第2の実施形態のメモリシステム1について説明する。第2の実施形態では、第1の実施形態と同じ事項(構成、機能、または動作)については、説明を省略するか、または簡略的に説明する。
第2の実施形態のホストリード処理部102は、第1の実施形態の判定部112に替えて、判定部112aを備える。ホストリード処理部102は、バンク毎に判定部112aを備える。
図18は、第2の実施形態の判定部112aの詳細な機能構成の一例を示す模式的な図である。ホストリード処理部102に具備される複数の判定部112aは、共通した機能構成を備える。
判定部112aは、アドレスヒストリ記憶部121と、アドレスコンパレータ122と、アクセスヒストリ記憶部123と、判定テーブル記憶部124aと、プリフェッチ判定部125と、を備える。
判定テーブル記憶部124aは、プリフェッチ判定テーブル211aを保持する。プリフェッチ判定テーブル211aは、第1の実施形態のプリフェッチ判定テーブル211と同様、アクセスヒストリを検索キーとした検索が可能な複数のエントリ(ここでは一例として28個のエントリ)を備える。各エントリには、飽和カウンタである1ビット以上の値が記録される。ここでは一例として、各エントリに記録された飽和カウンタは2ビットの値であることとする。
図19は、第2の実施形態のプリフェッチ判定テーブル211aの各エントリに記録された飽和カウンタの値の遷移の例を示す模式的な図である。
各エントリの飽和カウンタは、「00」、「01」、「10」、「11」の4つの値をとり得る。プリフェッチ判定テーブル211aに対する参照によって得られる飽和カウンタの値は、プリフェッチ判定部125に入力される。プリフェッチ判定部125は、入力された飽和カウンタの値としきい値との比較に基づいてプリフェッチを実行するか否かを判定する。
図19に示される例では、飽和カウンタの値が「01」以下である場合、即ち飽和カウンタの値が「00」または「01」である場合、プリフェッチ判定部125は、プリフェッチを行わないと判定する。飽和カウンタの値が「01」を超える場合、即ち飽和カウンタの値が「10」または「11」である場合、プリフェッチ判定部125は、プリフェッチを実行すると判定する。
つまり、プリフェッチ判定テーブル211の各エントリ内の飽和カウンタは、次に入力される物理アドレスを含む最新の2つの物理アドレスに基づくリードがシーケンシャルパターンに該当する確率を表す確率情報と見なすことができる。
判定部112aは、翻訳部111から新規に物理アドレスが入力された場合、当該新規の物理アドレスの入力に応じたアドレスコンパレータ122による判定結果に基づき、前回の物理アドレスの入力時に参照されたエントリ内の飽和カウンタの更新を行う。具体的には、アドレスコンパレータ122の出力値がシーケンシャルパターンを示す場合、判定部112aは、飽和カウンタに対して「1」の加算を実行する。アドレスコンパレータ122の出力値が非シーケンシャルパターンを示す場合、判定部112aは、飽和カウンタに対して「1」の減算を実行する。
例えば、判定部112aは、アクセスヒストリ記憶部123に記憶されているアクセスヒストリ(インデックス)が8ビットの「00000010」のときに、アドレスコンパレータ122の出力値がシーケンシャルパターンを示す場合、このインデックスが与えられたエントリの飽和カウンタに対して「1」の加算を実行する。また、判定部112aは、アクセスヒストリ記憶部123に記憶されているアクセスヒストリ(インデックス)が8ビットの「11111111」のときに、アドレスコンパレータ122の出力値が非シーケンシャルパターンを示す場合、このインデックスが与えられたエントリの飽和カウンタに対して「1」の減算を実行する。
飽和カウンタの値が「11」であるときに「1」の加算を実行した場合、判定部112aは、飽和カウンタの値を「11」に維持する。また、飽和カウンタの値が「00」であるときに「1」の減算を実行した場合、判定部112aは、飽和カウンタの値を「00」に維持する。
このように、2つの連続して入力された物理アドレスの対に対するリードがシーケンシャルパターンに該当するか否かの事実に基づき、プリフェッチ判定テーブル211aによって管理される確率情報が更新される。よって、たとえガベージコレクションによって各データセグメントの配置が変更されても、変更後の配置に対して数回のリードを経ると、プリフェッチを実行するか否かの判定をアクセスヒストリに応じて適切に実行することができるように、確率情報が更新される。
図20は、第2の実施形態の判定部112aの動作の一例を示すフローチャートである。判定部112aには、翻訳部111から順次、物理アドレスが入力される。本図では、過去に複数回、物理アドレスが入力された後に、新規に1つの物理アドレスが入力されたときの判定部112aの動作を説明する。なお、判定部112aは、物理アドレスが入力される毎に本図に示される一連の動作を実行する。
ステップS601~ステップS603では、図16を参照して説明したステップS401~ステップS403と同様の処理が実行される。
ステップS603における判定の結果が一致である場合(S603:Yes)、判定部112aは、プリフェッチ判定テーブル211aのうちのアクセスヒストリと同じ値のインデックスが与えられたエントリ内の飽和カウンタに対し、「1」の加算を実行する(S604)。
ステップS604では、判定部112aは、物理アドレスADDR_prevが示すクラスタおよび物理アドレスADDR_curが示すクラスタに対するリードがシーケンシャルパターンに該当するという事実に基づき、プリフェッチ判定テーブル211aのうちの、前回の物理アドレスが入力された際のプリフェッチの実行の判定に使用されたエントリ内の飽和カウンタを更新する。
ステップS604に続いて、判定部112aは、アクセスヒストリ記憶部123に保持されているアクセスヒストリを左に1ビットだけシフトさせて、アクセスヒストリの最右桁にシーケンシャルパターンを示す1ビットの値を追加する(S605)。
ステップS603における判定の結果が不一致である場合(S603:No)、判定部112aは、プリフェッチ判定テーブル211aのうちのアクセスヒストリと同じ値のインデックスが与えられたエントリ内の飽和カウンタに対し、「1」の減算を実行する(S606)。
ステップS606では、判定部112aは、物理アドレスADDR_prevが示すクラスタおよび物理アドレスADDR_curが示すクラスタに対するリードが非シーケンシャルパターンに該当するという事実に基づき、プリフェッチ判定テーブル211aのうちの、前回の物理アドレスが入力された際のプリフェッチの実行の判定に使用されたエントリ内の飽和カウンタを更新する。
ステップS606に続いて、判定部112aは、アクセスヒストリ記憶部123に保持されているアクセスヒストリを左に1ビットだけシフトさせて、アクセスヒストリの最右桁に非シーケンシャルパターンを示す1ビットの値を追加する(S607)。
ステップS605またはステップS607の後、判定部112aは、プリフェッチ判定テーブル211aのうちのアクセスヒストリと同じ値のインデックスが与えられたエントリを参照する(S608)。そして、判定部112は、参照によって「10」または「11」が得られたか否かを判定する(S609)。
参照によって「10」または「11」が得られた場合(S609:Yes)、判定部112aは、プリフェッチを実行する指示とともに物理アドレスADDR_curをバンク制御部113に送信する(S610)。
参照によって「00」または「01」が得られた場合(S609:No)、判定部112は、プリフェッチを実行する指示なく物理アドレスADDR_curをバンク制御部113に送信する(S611)。
ステップS610またはステップS611の後、判定部112aは動作を終了する。
このように、第2の実施形態によれば、メモリコントローラ10は、連続して特定された2つのクラスタへのリードの順番が、ライト管理情報202に規定された順番のうちのメタデータのライトに関する順番をスキップした順番に含まれるか否かを判定する。メモリコントローラ10は、判定の後、プリフェッチ判定テーブル211aの複数のエントリのうちアクセスヒストリと等しいインデックスが与えられたエントリ内の飽和カウンタの値を、判定結果に基づいて更新する(例えば図20のS604またはS606参照)。メモリコントローラ10は、飽和カウンタの値の更新の後、アクセスヒストリを判定結果に基づいて更新する(例えば図20のS605またはS607参照)。メモリコントローラ10は、アクセスヒストリの更新の後、プリフェッチを実行するか否かを、プリフェッチ判定テーブル211aの複数のエントリのうちアクセスヒストリと等しいインデックスが与えられたエントリ内の飽和カウンタの値に基づいて判定する(例えば図20のS608~S611参照)。
よって、たとえガベージコレクションによって各データセグメントの配置が変更されても、プリフェッチを実行するか否かの判定をアクセスヒストリに応じて適切に実行することが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 CPU、12 ホストI/Fコントローラ、13 RAM、14 NANDコントローラ、15 誤り訂正回路、20 NANDメモリ、21,21-0,21-1,21-2,21-3 メモリチップ、22 メモリセルアレイ、23 サブアレイ、24 ページバッファ、25 データキャッシュ、26 物理ブロック、27 NANDストリング、101 ホストライト処理部、102 ホストリード処理部、103 GC処理部、104 記憶部、111 翻訳部、112,112a 判定部、113 バンク制御部、121 アドレスヒストリ記憶部、122 アドレスコンパレータ、123 アクセスヒストリ記憶部、124,124a 判定テーブル記憶部、125 プリフェッチ判定部、201 L2P情報、202 ライト管理情報、211,211a プリフェッチ判定テーブル、301,301-1,301-2,301-3,301-4 ユーザデータログ領域、302 RSパリティ領域。
Claims (10)
- ホストに接続可能なメモリシステムであって、
複数の第1セグメント領域を含む不揮発性の記憶領域を備える第1メモリと、
前記複数の第1セグメント領域のうちのライト先の選択順である第1順番と前記複数の第1セグメント領域のうちのユーザデータおよびメタデータのそれぞれのライト先とを規定する第1設定に従って、ユーザデータまたはメタデータをそれぞれが含む複数の第1データセグメントを前記複数の第1セグメント領域にライトし、
前記ホストからのリード要求に応じて、前記複数の第1セグメント領域のうちの、前記複数の第1データセグメントのうちの前記リード要求によって要求されたユーザデータに該当する複数の第2データセグメントがライトされた複数の第2セグメント領域のそれぞれを特定し、
前記複数の第2セグメント領域のそれぞれから前記複数の第2データセグメントがリードされる順番である第2順番と、前記第1順番から前記メタデータのライト先の順番をスキップした第3順番と、に基づいて前記複数の第2セグメント領域に対するリード動作においてプリフェッチを実行するか否かを判定する、
ように構成されたメモリコントローラと、
を備えるメモリシステム。 - 前記第1メモリは、第1バッファと、第2バッファと、を含み、
前記第1メモリは、
前記記憶領域から前記第1バッファに第1データを転送し、前記第1バッファから前記第2バッファに前記第1データを転送し、前記第2バッファに転送された前記第1データを前記メモリコントローラに転送する、第1リード動作と、
前記記憶領域から前記第1バッファに第2データを転送し、前記第1バッファから前記第2バッファに前記第2データを転送し、前記第2バッファに転送された前記第2データを前記メモリコントローラに転送し、前記第2バッファから前記メモリコントローラに前記第2データを転送する期間と重複する期間に、前記記憶領域から前記第1バッファに第3データを転送する、第2リード動作と、
を実行可能に構成され、
前記メモリコントローラは、
前記プリフェッチを実行しないと判定した場合、前記第1メモリに前記第1リード動作を実行させ、
前記プリフェッチを実行すると判定した場合、前記第1メモリに前記第2リード動作を実行させる、
ように構成された、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記第2順番を、前記複数の第2セグメント領域それぞれの物理アドレスに基づいて判定する、
ように構成された、
請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記複数の第2セグメント領域のうちの、最新に連続して前記第2データセグメントがリードされる第2セグメント領域の対を、前記第2順番を特定する毎に取得し、前記プリフェッチを実行するか否かを、前記対を構成する2つの第2セグメント領域のそれぞれから前記複数の第2データセグメントがリードされる順番である第4順番が前記第3順番に含まれるか否かに基づいて判定する、
ように構成された、
請求項1乃至請求項3のいずれか一項に記載のメモリシステム。 - 前記メモリコントローラは、
前記第4順番が前記第3順番に含まれるか否かの第1判定結果の履歴を複数保持するように構成された第2メモリを含み、
前記プリフェッチを実行するか否かを前記複数保持された履歴に基づいて判定する、
ように構成された、
請求項4に記載のメモリシステム。 - 前記メモリコントローラは、
それぞれ前記プリフェッチを実行するか否かを示す値が記録されインデックス値が与えられた複数のエントリを有するテーブルを保持するように構成された第3メモリを含み、
前記プリフェッチを実行するか否かを前記複数のエントリのうちの前記履歴と等しいインデックス値が与えられたエントリに記録された前記値に基づいて判定する、
ように構成された、
請求項5に記載のメモリシステム。 - 前記メモリコントローラは、
前記第4順番が前記第3順番に含まれるか否かを判定した後、前記複数のエントリのうちの前記履歴と等しいインデックスが与えられた第1のエントリに記録された値を、前記第1判定結果に基づいて更新し、
前記第1のエントリに記録された前記値の更新の後、前記履歴を前記第1判定結果に基づいて更新し、
前記履歴の更新の後、前記プリフェッチを実行するか否かを、前記複数のエントリのうちの前記更新された履歴と等しいインデックスが与えられた第2のエントリに記録された値に基づいて判定する、
ように構成された、
請求項6に記載のメモリシステム。 - 前記複数のエントリのそれぞれに記録された値は飽和カウンタであり、
前記メモリコントローラは、前記第1判定結果に基づいて前記第1のエントリ内の飽和カウンタに対して加算または減算を実行し、前記プリフェッチを実行するか否かを前記第2のエントリ内の前記飽和カウンタの値としきい値との比較に基づいて判定する、
ように構成された、
請求項7に記載のメモリシステム。 - 前記メモリコントローラは、
前記第4順番が前記第3順番に含まれることを前記第1判定結果が示す場合に、前記第1のエントリ内の前記飽和カウンタに対して加算を実行し、
前記第4順番が前記第3順番に含まれないことを前記第1判定結果が示す場合に、前記第1のエントリ内の前記飽和カウンタに対して減算を実行する
ように構成された、
請求項8に記載のメモリシステム。 - 前記メモリコントローラは、前記第2のエントリ内の前記飽和カウンタの値が前記しきい値よりも大きい場合、前記プリフェッチを実行すると判定し、前記第2のエントリ内の前記飽和カウンタの値が前記しきい値よりも小さい場合、前記プリフェッチを実行しないと判定する、
請求項9に記載のメモリシステム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022042726A JP2023136816A (ja) | 2022-03-17 | 2022-03-17 | メモリシステム |
TW111119571A TWI815476B (zh) | 2022-03-17 | 2022-05-26 | 記憶體系統 |
CN202210728743.5A CN116798481A (zh) | 2022-03-17 | 2022-06-24 | 存储器系统 |
US17/939,745 US11947836B2 (en) | 2022-03-17 | 2022-09-07 | Memory system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022042726A JP2023136816A (ja) | 2022-03-17 | 2022-03-17 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023136816A true JP2023136816A (ja) | 2023-09-29 |
Family
ID=88037432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022042726A Pending JP2023136816A (ja) | 2022-03-17 | 2022-03-17 | メモリシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US11947836B2 (ja) |
JP (1) | JP2023136816A (ja) |
CN (1) | CN116798481A (ja) |
TW (1) | TWI815476B (ja) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11010076B2 (en) * | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
JP6403162B2 (ja) * | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
AU2016393275B2 (en) | 2016-02-19 | 2019-10-10 | Huawei Technologies Co., Ltd. | Method and apparatus for accessing flash memory device |
JP6444917B2 (ja) * | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
KR20170109108A (ko) | 2016-03-17 | 2017-09-28 | 에스케이하이닉스 주식회사 | 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법 |
WO2019083391A1 (en) * | 2017-10-26 | 2019-05-02 | EMC IP Holding Company LLC | ACCORDING DATA STORAGE EQUIPMENT |
US11295806B2 (en) * | 2019-08-28 | 2022-04-05 | Micron Technology, Inc. | Large file integrity techniques |
-
2022
- 2022-03-17 JP JP2022042726A patent/JP2023136816A/ja active Pending
- 2022-05-26 TW TW111119571A patent/TWI815476B/zh active
- 2022-06-24 CN CN202210728743.5A patent/CN116798481A/zh active Pending
- 2022-09-07 US US17/939,745 patent/US11947836B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN116798481A (zh) | 2023-09-22 |
US20230297275A1 (en) | 2023-09-21 |
TW202338802A (zh) | 2023-10-01 |
TWI815476B (zh) | 2023-09-11 |
US11947836B2 (en) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210303460A1 (en) | Storage system having a host directly manage physical data locations of storage device | |
US10475518B2 (en) | Memory system, memory system control method, and program | |
US9417803B2 (en) | Adaptive mapping of logical addresses to memory devices in solid state drives | |
KR101522402B1 (ko) | 반도체 디스크 장치 및 그것의 데이터 관리 방법 | |
US11216368B2 (en) | Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction | |
US10503653B2 (en) | Memory system | |
KR20140119701A (ko) | Slc-mlc 마모 균형유지 | |
CN105074831A (zh) | 更新读取电压 | |
WO2013070367A2 (en) | Adaptive read comparison signal generation for memory systems | |
US9454475B2 (en) | Control device, storage device, and data writing method | |
US11086795B2 (en) | Memory system, memory controller and operating method thereof | |
US20160321172A1 (en) | Memory device that performs garbage collection | |
US11972294B2 (en) | Allocation schema for a scalable memory area | |
CN113254362A (zh) | 存储设备和存储器控制器的操作方法 | |
CN113076218B (zh) | Nvm芯片读数据错误快速处理方法及其控制器 | |
CN112585683A (zh) | 用于损耗均衡的偏置采样方法 | |
CN110532195B (zh) | 存储器系统的工作负荷分簇及执行其的方法 | |
JP2020113187A (ja) | メモリシステム | |
US9760301B2 (en) | WOM code emulation of EEPROM-type devices | |
TWI815476B (zh) | 記憶體系統 | |
CN112306387A (zh) | 存储器系统、存储器控制器以及操作存储器系统的方法 | |
JP4661191B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
CN112445726A (zh) | 存储器系统、存储器控制器及操作方法 | |
JP7500365B2 (ja) | メモリシステム | |
US11158376B2 (en) | Memory system and method for controlling memory system |