JP2018163434A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2018163434A JP2018163434A JP2017059072A JP2017059072A JP2018163434A JP 2018163434 A JP2018163434 A JP 2018163434A JP 2017059072 A JP2017059072 A JP 2017059072A JP 2017059072 A JP2017059072 A JP 2017059072A JP 2018163434 A JP2018163434 A JP 2018163434A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- block
- storage area
- memory controller
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】プリフェッチの効率を向上させること。
【解決手段】メモリシステムは、メモリと、メモリコントローラとを備える。メモリは、第1の数の並列動作要素を備える。第1の数の並列動作要素のそれぞれは複数の第1記憶領域を有する不揮発性のメモリセルアレイとバッファとを備える。メモリコントローラは、第1グループを構築する。第1グループは2以上の数である第2の数の第2記憶領域を含む。第2の数の第2記憶領域のそれぞれは第1の数の並列動作要素のうちの1の並列動作要素に属する複数の第1記憶領域に含まれるそれぞれ異なる第1記憶領域である。メモリコントローラは、第2の数の第2記憶領域のうちの1の第2記憶領域からホストから要求されたデータである第1データを取得するに応じて、第2の数の第2記憶領域のうちの他の第2記憶領域から第2データを1の並列動作要素のバッファに読み出す。
【選択図】図7
【解決手段】メモリシステムは、メモリと、メモリコントローラとを備える。メモリは、第1の数の並列動作要素を備える。第1の数の並列動作要素のそれぞれは複数の第1記憶領域を有する不揮発性のメモリセルアレイとバッファとを備える。メモリコントローラは、第1グループを構築する。第1グループは2以上の数である第2の数の第2記憶領域を含む。第2の数の第2記憶領域のそれぞれは第1の数の並列動作要素のうちの1の並列動作要素に属する複数の第1記憶領域に含まれるそれぞれ異なる第1記憶領域である。メモリコントローラは、第2の数の第2記憶領域のうちの1の第2記憶領域からホストから要求されたデータである第1データを取得するに応じて、第2の数の第2記憶領域のうちの他の第2記憶領域から第2データを1の並列動作要素のバッファに読み出す。
【選択図】図7
Description
本実施形態は、メモリシステムに関する。
コンピュータシステムに用いられる外部記憶装置として、不揮発性のメモリセルアレイを有するメモリを搭載したメモリシステムが注目されている。メモリからデータを読み出す際に、ホストから次に要求されると予想されるデータをメモリセルアレイから予め読む(プリフェッチする)技術が知られている。
一つの実施形態は、プリフェッチの効率を向上したメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。メモリシステムは、メモリと、メモリコントローラとを備える。メモリは、第1の数の並列動作要素を備える。第1の数の並列動作要素のそれぞれは複数の第1記憶領域を有する不揮発性のメモリセルアレイとバッファとを備える。メモリコントローラは、第1グループを構築する。第1グループは2以上の数である第2の数の第2記憶領域を少なくとも含む。第2の数の第2記憶領域のそれぞれは第1の数の並列動作要素のうちの1の並列動作要素に属する複数の第1記憶領域に含まれるそれぞれ異なる第1記憶領域である。メモリコントローラは、第2の数の第2記憶領域のうちの1の第2記憶領域からホストから要求されたデータである第1データを取得するに応じて、第2の数の第2記憶領域のうちの他の第2記憶領域から第2データを1の並列動作要素のバッファに読み出す。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す。メモリシステム1は、ライト要求とともに、書き込み対象のデータを受け付ける。
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを含んでいる。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示す。メモリシステム1は、ライト要求とともに、書き込み対象のデータを受け付ける。
メモリシステム1は、メモリコントローラ10と、NAND型のフラッシュメモリ(NANDメモリ)20と、を備えている。メモリコントローラ10は、ホスト2とNANDメモリ20との間のデータ転送を実行する。なお、メモリシステム1は、NANDメモリ20の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム1は、NANDメモリ20の代わりにNOR型のフラッシュメモリを具備することができる。
メモリコントローラ10は、CPU(Central Processing Unit)11と、ホストインタフェース(I/F)コントローラ12と、RAM(Random Access Memory)13と、NANDコントローラ14と、誤り訂正回路15と、を備える。
CPU11は、ファームウェアプログラム(後述のファームウェアプログラム201)に基づいてメモリコントローラ10の制御を実行する。ファームウェアプログラム201は、NANDメモリ20に予め格納されており、起動時にNANDメモリ20から読み出されてCPU11によって実行される。なお、ファームウェアプログラム201の格納位置はNANDメモリ20に限定されない。
RAM13は、CPU11に一時記憶領域を提供する、揮発性のメモリである。RAM13を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM13は、DRAM(Dynamic Random Access Memory)、SRAM、またはこれらの組み合わせによって構成され得る。
ホストI/Fコントローラ12は、ホスト2との間の通信インタフェースの制御を実行する。NANDコントローラ14は、CPU11による制御の下で、NANDメモリ20に対するアクセスを実行する。CPU11は、ホストI/Fコントローラ12とNANDコントローラ14とを制御することによって、ホスト2とNANDメモリ20との間のデータ転送を実現する。
誤り訂正回路15は、NANDメモリ20に書き込まれるデータに誤り訂正のための符号化を行ったり、NANDメモリ20から取得された符号化されたデータを復号化することによって、そのデータに対して誤り訂正を実行したりする。誤り訂正回路15による符号化のアルゴリズムとしては、任意のアルゴリズムが採用可能である。一例では、誤り訂正回路15は、RS符号(Reed-Solomon Coding)を用いた符号化を行う。誤り訂正回路15は、符号化用の回路と復号化用の回路とを有していてもよい。誤り訂正のためのフレームについては後述する。
NANDメモリ20は、1以上のメモリチップ21を含む。ここでは一例として、NANDメモリ20は、1以上のメモリチップ21として、2つのメモリチップ21a、21bを含む。
図2は、1つのメモリチップ21の構成例を示す図である。メモリチップ21は、データキャッシュ22、ページバッファ23、およびメモリセルアレイ24を備える。メモリセルアレイ24は、不揮発性のメモリセルアレイであり、複数のメモリセルがマトリクス状に配列された構成を有している。
メモリセルアレイ24は、複数の物理ブロック25を備える。物理ブロック25は、メモリセルアレイ24に対するデータのイレースが可能な最小の記憶領域である。各物理ブロック25は、図3に示されるように、複数のページを備える。ページは、物理ブロック25に対するデータのプログラムまたはリードが可能な最小の記憶領域である。それぞれの物理ブロック25は、物理ブロック番号によって識別される。
データキャッシュ22およびページバッファ23は、バッファとして使用されるメモリである。データキャッシュ22は、メモリコントローラ10に送受信されるデータがバッファされる。ページバッファ23は、メモリセルアレイ24に書き込まれるデータまたはメモリセルアレイ24から読み出されたデータがバッファされる。
データキャッシュ22およびページバッファ23は、一例では、それぞれ1ページのサイズのデータを保持することができる。データキャッシュ22およびページバッファ23は、任意の種類のメモリによって構成され得る。データキャッシュ22およびページバッファ23は、例えばSRAM(Static Random Access Memory)によって構成される。
図1に説明を戻す。NANDメモリ20に含まれる2つのメモリチップ21は、1つのチャネル(ch.0)を介してメモリコントローラ10に接続される。チャネルは、データ、アドレス、およびコマンドを送受信するための信号線を含む、配線群である。
2つのメモリチップ21は、それぞれ異なるバンクを構成する。即ち、この例では、NANDメモリ20は、2つのバンクを有する。各バンクは、バンク番号(BANK#0、BANK#1)によって識別される。以降、各バンクを、バンク番号によって表記することがある。即ち、バンク番号がBANK#0のバンクをBANK#0と表記し、バンク番号がBANK#1のバンクをBANK#1と表記する。
メモリコントローラ10は、バンクインターリーブの方式で動作させることが可能である。バンクインターリーブは、1つのバンクに属するメモリチップ21(例えばメモリチップ21a)がメモリセルアレイ24にアクセスしている最中にメモリコントローラ10が別のバンクに属するメモリチップ21(例えばメモリチップ21b)との間でデータまたはコマンドの送受信を行う手法である。各バンクのメモリチップ21はチャネルを共有しているので、メモリコントローラ10は、同一のチャネルに接続された異なるバンクに属する2つのメモリチップ21に同時にデータ、アドレス、およびコマンドの送受信を行うことができないが、メモリコントローラ10は、バンクインターリーブによって、2つのバンクを同時に動作させることが可能である。即ち、バンクインターリーブは、並列動作の手法の1つであり、異なるバンクに属する複数のメモリチップ21(ここではメモリチップ21a、21b)は、それぞれ並列動作要素に該当する。
バンクインターリーブにおいて、アクセス先のバンクは、一例では、チップイネーブル(CE)信号によって選択される。即ち、BANK#0に属するメモリチップ21aと、BANK#1に属するメモリチップ21bとは、それぞれ独立したCE信号線でメモリコントローラ10と接続されている。メモリコントローラ10は、メモリチップ21a、21bのうちの一方がメモリセルアレイ24にアクセスしている最中に、メモリチップ21a、21bのうちの他方をCE信号によって選択し、当該選択されたメモリチップ21に対し、I/O信号線を介して、コマンド、アドレス、またはデータの送受信を実行する。なお、アクセス先のバンクの選択方法は、CE信号を用いた方法だけに限定されない。
このように、メモリコントローラ10は、バンクインターリーブによって、それぞれ異なるバンクに属する2つのメモリチップ21a、21bを並列動作させることができる。ここで、メモリコントローラ10は、並列にアクセスする複数の物理ブロック25によって1つの論理ブロックを構築する。
図4は、1つの論理ブロックの構成例を示す図である。斜線ハッチングが施された、それぞれ異なるバンクに属する2つの物理ブロック25(即ちブロック番号がBLOCK#Aの物理ブロック25aおよびブロック番号がBLOCK#Bの物理ブロック25b)は、1つの論理ブロックを構成する。なお、本図では、1つの論理ブロックのみを例示しているが、NANDメモリ20は、複数の論理ブロックを備え、複数の論理ブロックのそれぞれは、それぞれ異なるバンクに属する2つの物理ブロック25を備える。1つの物理ブロック25は、2以上の論理ブロックに属することはない。各論理ブロックは、論理ブロック番号によって識別される。
以降、バンクの場合と同様に、各物理ブロック25を、物理ブロック番号によって表記することがある。
さらに、メモリコントローラ10は、複数の論理ブロックによって1つの合成論理ブロックを構築する。
図5は、1つの合成論理ブロックの構成例を示す図である。斜線ハッチングが施された2つの物理ブロック25a、25bからなる論理ブロックと、ドットハッチングが施された2つの物理ブロック25(ブロック番号がBLOCK#Cの物理ブロック25cとブロック番号がBLOCK#Dの物理ブロック25d)からなる論理ブロックとは、1つの合成論理ブロックを構成する。なお、本図では、1つの合成論理ブロックのみを例示しているが、NANDメモリ20は、複数の合成論理ブロックを備え得る。1つの論理ブロックは、2以上の合成論理ブロックに属することはない。各論理ブロックは、合成ブロックIDによって識別される。
以降、1つの論理ブロックを構成する物理ブロック25の数を、N1と表記する。また、1つの合成論理ブロックを構成する論理ブロックの数を、N2と表記する。1つの合成論理ブロックを構成する物理ブロック25の数は、N1*N2に該当する。図5の例に従えば、N1は「2」であり、N2は「2」である。
本発明の実施形態では、メモリコントローラ10は、誤り訂正回路15の誤り訂正のためのフレームを、N1*N2ページのデータによって構築する。そして、メモリコントローラ10は、1つのフレームを構成する各ページのデータを、同一の合成論理ブロックを構成するN1*N2個の物理ブロック25のうちのそれぞれ異なる物理ブロック25に書き込む。
図6は、NANDメモリ20に対するアクセス(書き込み、読み出し)の順序の例とフレームの構成例とを説明するための図である。本図に示されるように、同一の合成論理ブロックを構成する4つの物理ブロック25(BLOCK#A、BLOCK#B、BLOCK#C、BLOCK#D)のうち、BANK#0のメモリチップ21aに対しては、矢印250に示されるように、BLOCK#AのPAGE#i、BLOCK#CのPAGE#i、BLOCK#AのPAGE#i+1、BLOCK#CのPAGE#i+1、の順番でアクセスが実行される。同様に、BANK#1のメモリチップ21bに対しては、矢印251に示されるように、BLOCK#BのPAGE#i、BLOCK#DのPAGE#i、BLOCK#BのPAGE#i+1、BLOCK#DのPAGE#i+1、の順番でアクセスが実行される。BANK#0のメモリチップ21に対するアクセスと、BANK#1のメモリチップ21に対するアクセスとは、バンクインターリーブによって並列化されているので、NANDメモリ20へのアクセスの順番は、BLOCK#AのPAGE#i、BLOCK#BのPAGE#i、BLOCK#CのPAGE#i、BLOCK#DのPAGE#i、BLOCK#AのPAGE#i+1、BLOCK#BのPAGE#i+1、BLOCK#CのPAGE#i+1、BLOCK#DのPAGE#i+1、の順番となる。
1つのフレームは、一例では、連続してアクセスされるN1*N2個のページによって構成される。即ち、図6の例では、符号150に示されるように、それぞれ異なる物理ブロック25の同一のページ番号に書き込まれる4つのデータによって、1つのフレームが構成される。
なお、1つのフレームは、誤り訂正回路15による誤り訂正のための符号を含んでいる。本実施形態では、N1*N2ページのデータによって1つのフレームを構成するので、1つの論理ブロックを構成するそれぞれ異なる物理ブロック25に書き込まれるN1ページのデータによって1つのフレームを構成する場合に比べ、フレームのサイズを大きくすることができる。よって、フレームのサイズに対する符号のサイズの割合を小さくし、ひいては、ホスト2から送られてきたデータをNANDメモリ20に効率的に格納することが可能となる。
メモリコントローラ10は、NANDメモリ20に対し、プリフェッチを実行することができる。
具体的には、メモリコントローラ10は、あるバンクに属するメモリチップ21(例えばメモリチップ21a)に格納されている一のデータ(例えば図6に例示されるBLOCK#AのPAGE#i内のデータ)の読み出しがホスト2から要求された場合、当該一のデータを取得するとともに、そのメモリチップ21に対して当該一のデータの次に読むべき他のデータ(例えば図6に例示されるBLOCK#CのPAGE#i内のデータ)を、当該他のデータの読み出しが要求される前に、当該他のデータをメモリセルアレイ24からページバッファ23に予め読み出す。
シーケンシャルリードによって読み出される複数のデータは、シーケンシャルライトのアクセスパターンでホスト2から書き込みが要求された場合が多い。シーケンシャルリードとは、論理アドレスが連続する範囲に対して複数のデータを論理アドレス順にメモリシステム1から読み出すアクセスパターンをいう。シーケンシャルライトとは、論理アドレスが連続する範囲に対して複数のデータを論理アドレス順にメモリシステム1に書き込むアクセスパターンをいう。
よって、ホスト2から要求のパターンがシーケンシャルリードに該当する場合、前記一のデータの後に前記他のデータの読み出しが要求される可能性が高い。一方、メモリセルアレイ24からページバッファ23へのデータの読み出しは、比較的長い時間を要する。前記他のデータをプリフェッチした場合において前記一のデータの後に前記他のデータの読み出しが要求された場合、メモリコントローラ10は、メモリセルアレイ24へのアクセスを要することなく前記他のデータを取得することが可能となるので、ホスト2からのリード要求に対する応答の速度が向上する。
図7は、プリフェッチの動作の概要を説明する図である。メモリコントローラ10は、BANK#0のメモリチップ21のBLOCK#AのPAGE#iに格納されているデータをリードする要求を受信した場合、BANK#0のメモリチップ21に、BLOCK#AのPAGE#iに格納されているデータをページバッファ23に読み出させる(S1)。そして、メモリコントローラ10は、BANK#0のメモリチップ21に、BLOCK#AのPAGE#iから読み出されたデータを、ページバッファ23からデータキャッシュ22に転送させ(S2)、その後、データキャッシュ22からメモリコントローラ10に出力させる(S3)。
続いて、メモリコントローラ10は、BANK#0のメモリチップ21に含まれ、BLOCK#Aと同一の合成論理ブロックに属し、BANK#0のメモリチップ21においてBLOCK#Aの次に読むべきデータが書き込まれた物理ブロック25であるBLOCK#Cを、後述する図10の合成論理ブロック構成情報132を参照することにより、プリフェッチする物理ブロック25として特定する。そして、メモリコントローラ10は、BANK#0のメモリチップ21に、BLOCK#CのPAGE#iに格納されているデータをページバッファ23に読み出させる(S4)。
メモリコントローラ10は、その後、BLOCK#CのPAGE#iに格納されているデータをリードする要求を受信した場合、BANK#0のメモリチップ21に、BLOCK#CのPAGE#iから読み出されたデータを、ページバッファ23からデータキャッシュ22に転送させる(S5)。そして、メモリコントローラ10は、BANK#0のメモリチップ21に、BLOCK#CのPAGE#iから読み出されたデータを、データキャッシュ22からメモリコントローラ10に出力させる(S6)。
以降、メモリシステム1は、S7〜S12において、プリフェッチする物理ブロック25を図6の矢印250の順番で切り替えながら、S4〜S6と同様の処理を繰り返す。
例えば、S6の後、メモリコントローラ10は、BANK#0のメモリチップ21に含まれ、BLOCK#Cと同一の合成論理ブロックに属し、BANK#0のメモリチップ21においてBLOCK#Cの次に読むべきデータが書き込まれた物理ブロック25であるBLOCK#Aを、プリフェッチする物理ブロック25として特定する。そして、メモリコントローラ10は、BANK#0のメモリチップ21に、BLOCK#AのPAGE#i+1に格納されているデータをページバッファ23に読み出させる(S7)。
メモリコントローラ10は、その後、BLOCK#AのPAGE#i+1に格納されているデータをリードする要求を受信した場合、BANK#0のメモリチップ21に、BLOCK#AのPAGE#i+1から読み出されたデータを、ページバッファ23からデータキャッシュ22に転送させる(S8)。そして、メモリコントローラ10は、BANK#0のメモリチップ21に、BLOCK#AのPAGE#i+1から読み出されたデータを、データキャッシュ22からメモリコントローラ10に出力させる(S9)。
このように、BANK#0のメモリチップ21に対しては、図6の矢印250に示される順序で、プリフェッチする物理ブロック25が順次、特定される。同様に、BANK#1のメモリチップ21に対しては、図6の矢印251に示される順序で、プリフェッチする物理ブロック25が順次、特定される。
図8は、メモリシステム1に格納される各種情報を示す図である。
NANDメモリ20には、ホスト2から送られてきたデータが格納されるほか、ファームウェアプログラム201が予め格納されている。
RAM13には、論理ブロック構成情報131、合成論理ブロック構成情報132、および不良ブロック情報133が格納される。RAM13内の各情報は、例えば、メモリシステム1の電源オフの際にNANDメモリ20に退避され、メモリシステム1の電源オンの際にNANDメモリ20からRAM13にロードされる。
論理ブロック構成情報131は、各論理ブロックを構成する複数の物理ブロック25を示す情報である。また、合成論理ブロック構成情報132は、各合成論理ブロックを構成する複数の論理ブロックと、各合成論理ブロックを構成する複数の論理ブロックに対するアクセス順序と、を示す情報である。
図9は、論理ブロック構成情報131のデータ構成例を示す図である。論理ブロック構成情報131は、各論理ブロックに複数の物理ブロックを対応付けるテーブル形式のデータ構成を備えている。
図10は、合成論理ブロック構成情報132のデータ構成例を示す図である。合成論理ブロック構成情報132は、各合成論理ブロックに複数の論理ブロックを対応付けるテーブル形式のデータ構成を備えている。複数の論理ブロックの論理ブロック番号が記載されるフィールドには、複数の論理ブロック番号が、データのアクセス順序に対応する順序で配列されている。メモリコントローラ10は、末尾に記録された論理ブロック番号には、同一フィールドの先頭に記録された論理ブロック番号が後続する、と解釈する。
図10の例に従えば、合成ブロックID「Y」の合成論理ブロックは、論理ブロック番号「X」の論理ブロックおよび論理ブロック番号「X+1」の論理ブロックによって構成される。そして、当該合成論理ブロックに対しては、論理ブロック番号「X」の論理ブロックにアクセスされ、その次に、論理ブロック番号「X+1」の論理ブロックにアクセスされる。さらにその次に、論理ブロック番号「X」の論理ブロックにアクセスされる。
また、図9の例に従えば、論理ブロック番号「X」の論理ブロックは、BLOCK#AおよびBLOCK#Bによって構成される。また、論理ブロック番号「X+1」の論理ブロックは、BLOCK#CおよびBLOCK#Dによって構成される。
メモリコントローラ10は、図9の論理ブロック構成情報131および図10の合成論理ブロック構成情報132を参照することによって、BANK#0に対するアクセスの順序が、BLOCK#A、BLOCK#C、BLOCK#A、BLOCK#C(即ち図6の矢印250の順番)であることを特定することができる。また、メモリコントローラ10は、BANK#1に対するアクセスの順序が、BLOCK#B、BLOCK#D、BLOCK#B、BLOCK#D(即ち図6の矢印251の順番)であることを特定することができる。
メモリコントローラ10は、論理ブロック構成情報131および合成論理ブロック構成情報132を参照し、アクセスの順序に基づいて、プリフェッチする物理ブロック25を特定する。
なお、論理ブロック構成情報131および合成論理ブロック構成情報132のデータ構成は、図9、図10に示したデータ構成例に限定されない。論理ブロック構成情報131は、各論理ブロックを構成する複数の物理ブロック25を保持することができる限り、任意のデータ構成を有し得る。また、合成論理ブロック構成情報132は、各合成論理ブロックを構成する複数の論理ブロックと、複数の論理ブロックに対するアクセスの順序と、を保持ことができる限り、任意のデータ構成を有しうる。各合成論理ブロックを構成する複数の論理ブロックを保持する情報と、各合成論理ブロックに含まれる複数の論理ブロックに対するアクセスの順序を保持する情報と、は分けて構成されてもよい。
不良ブロック情報133は、不良ブロックを特定するための情報である。不良ブロックは、回路の故障などにより使用が不可と判断されるブロックである。図11は、不良ブロック情報133のデータ構成例を示す図である。本図に例示されるように、不良ブロック情報133は、不良ブロックの物理アドレス番号が列挙されたデータ構成を備える。なお、不良ブロック情報133のデータ構成はこれに限定されない。また、論理ブロック単位で不良ブロックであるか否かが判断されてもよい。
次に、第1の実施形態のメモリシステム1の動作を説明する。図12は、第1の実施形態のメモリシステム1の動作を説明するフローチャートである。
メモリコントローラ10がホスト2からリード要求を受信すると(S101)、メモリコントローラ10は、リード要求によって要求されたデータ(以降、対象データ)が、対象データを記憶するメモリチップ21(以降、対象メモリチップ21)のページバッファ23に格納されているか否かを判定する(S102)。
対象メモリチップ21において、対象データがプリフェッチされていれば、対象データはページバッファ23に格納されており、対象データがプリフェッチされていなければ、対象データはページバッファ23に格納されていない。
なお、S101において受信するリード要求に含まれる、アクセス先を指定する論理アドレスを、Lcurと表記する。また、対象メモリチップ21が属するバンクを、対象バンクと表記する。また、対象データが格納されている物理ブロック25を、対象物理ブロック25と表記する。
対象データがページバッファ23に格納されていない場合(S102、No)、メモリコントローラ10は、対象メモリチップ21に、対象物理ブロック25からページバッファ23に対象データを読み出させる(S103)。
対象データがページバッファ23に格納されている場合(S102、Yes)、またはS103の処理の後、メモリコントローラ10は、ページバッファ23に格納されている対象データをデータキャッシュ22を経由して取得する(S104)。
続いて、論理アドレスLcurは、前回にホスト2から受信したリード要求に含まれる論理アドレスLprevに後続しているか否かを判定する(S105)。
S105の処理は、S101にて受信したリード要求が、シーケンシャルリードのアクセスパターンに該当するか否かを判定する処理の一例である。論理アドレスLcurが論理アドレスLprevに後続していない場合(S105、No)、メモリコントローラ10は、受信したリード要求がシーケンシャルリードのアクセスパターンに該当しないと判定し、リードの動作を終了する。論理アドレスLcurが論理アドレスLprevに後続する場合(S105、Yes)、メモリコントローラ10は、受信したリード要求がシーケンシャルリードのアクセスパターンに該当すると判定し、以降の処理においてプリフェッチを実行する。
受信したリード要求がシーケンシャルリードのアクセスパターンに該当するか否かを判定する方法は、上記の方法だけに限定されない。別の例では、メモリコントローラ10は、論理アドレスLprevが前々回にホスト2から受信したリード要求に含まれる論理アドレスLprev1に後続し、かつ、論理アドレスLcurが論理アドレスLprevに後続する場合に、S101にて受信したリード要求はシーケンシャルリードのアクセスパターンに該当すると判定し、その他の場合に、S101にて受信したリード要求はシーケンシャルリードのアクセスパターンに該当しない、と判定してもよい。
なお、図12の例では、メモリコントローラ10は、ホスト2からのアクセスのパターンがシーケンシャルリードに該当するか否かを判定するが、当該判定は実行されなくてもよい。メモリコントローラ10は、ホスト2からのアクセスのパターンに関係なくプリフェッチを実行してもよい。
論理アドレスLcurが論理アドレスLprevに後続する場合(S105、Yes)、メモリコントローラ10は、合成論理ブロック構成情報132および論理ブロック構成情報131を参照することによって、対象メモリチップ21に属し、かつ、対象ブロックと同一の合成論理ブロックに属する論理ブロックに対応するN2個の物理ブロック25のうちの、アクセスの順序において後続する物理ブロック25を特定する(S106)。
続いて、メモリコントローラ10は、特定した物理ブロック25が不良ブロックであるか否かを、不良ブロック情報133を参照することによって判定する(S107)。特定した物理ブロック25が不良ブロックである場合(S107、Yes)、メモリコントローラ10は、S106の処理を行うことによって、特定した不良ブロックである物理ブロック25にさらに後続する物理ブロック25を特定する。
例えば、図4、図5、および図6に例示されるケースにおいて、BLOCK#Aが対象ブロックである場合、メモリコントローラ10は、最初のS106の処理によって、BLOCK#Cを特定する。そして、BLOCK#Cが不良ブロックである場合、メモリコントローラ10は、次のS106の処理によって、BLOCK#Aを特定する。
特定した物理ブロック25が不良ブロックではない場合(S107、No)、メモリコントローラ10は、対象メモリチップ21に、後続の物理ブロック25からページバッファ23にデータを読み出させる(S108)。
このように、メモリコントローラ10は、着目する物理ブロック25にアクセスの順序において後続する物理ブロック25を順次探索し、不良ブロックではない物理ブロック25が探索された場合、その物理ブロック25をプリフェッチする物理ブロック25として特定する。
なお、メモリコントローラ10は、対象物理ブロック25にアクセスの順序において後続する物理ブロック25が不良ブロックであるか否かにかかわらず、対象物理ブロック25にアクセスの順序において後続する物理ブロック25をプリフェッチする物理ブロック25として設定してもよい。
S108の処理に続いて、メモリコントローラ10は、論理アドレスLcurを論理アドレスLprevとして上書き形式で保存し(S109)、リードの動作を終了する。
なお、以上では、1つの論理ブロックを構成する物理ブロック25の数N1が「2」であり、1つの合成論理ブロックを構成する論理ブロックの数N2が「2」である場合について説明した。N1は「1」であってもよいし、「3」以上であってもよい。また、N2は、「3」以上であってもよい。
また、以上の説明では、それぞれ異なるバンクに属するメモリチップ21がそれぞれ並列動作要素に該当する。並列動作要素は、バンクインターリーブの並列動作を実現する各要素の例だけに限定されない。
図13は、第1の実施形態のメモリシステム1の他の構成例を示す図である。図1に示される構成要素と同じ構成要素については図示を省略している。図13の例によれば、メモリシステム1は、4つのメモリチップ21を備え、そのうちの2つのメモリチップ21c、21dは1つのチャネル(ch. 0)に接続され、他の2つのメモリチップ21e、21fは、他のチャネル(ch. 1)に接続される。メモリコントローラ10は、2つのチャネルを独立して制御することが可能である。即ち、メモリコントローラ10は、ch. 0に接続された2つのメモリチップ21c、21dと、ch. 1に接続された2つのメモリチップ21e、21fと、を、並列に動作させることが可能である。メモリコントローラ10が、2つのチャネルを並列に制御し、2つのバンクをバンクインターリーブによって並列に動作させる場合、合計4つのメモリチップ21c、21d、21e、21fを、並列に動作させることが可能である。即ち、接続先のチャネルまたは属するバンクがそれぞれ異なる4つのメモリチップ21c、21d、21e、21fのそれぞれは、並列動作要素に該当する。
図14は、第1の実施形態の合成論理ブロックの他の構成例を示す図である。本図に例示される合成論理ブロックの構成は、図13の構成に対応する。図14に示されるように、4つの物理ブロック25e、25f、25g、25hは、1つの論理ブロックを構成し、別の4つの物理ブロック25i、25j、25k、25lは、別の論理ブロックを構成する。そして、物理ブロック25e、25f、25g、25hからなる論理ブロックと、物理ブロック25i、25j、25k、25lからなる論理ブロックとは、1つの合成論理ブロックを構成する。この例によれば、N1は「4」であり、N2は「2」であり、誤り訂正のフレームは、8ページのデータによって構成される。即ち、メモリシステム1が複数のチャネルを有する場合には、複数のチャネルに跨ってフレームが構成される。
以上述べたように、第1の実施形態によれば、メモリシステム1は、N1個の並列動作要素を備え、各並列動作要素(より詳しくは各並列動作要素を構成するメモリチップ21)は、複数の物理ブロック25を有するメモリセルアレイ24と、バッファとしてのデータキャッシュ22およびページバッファ23と、を備える。メモリコントローラ10は、1つの並列動作要素に含まれるN2個の物理ブロック25を少なくとも含む合成論理ブロックを構築する。メモリコントローラ10は、当該1つの並列動作要素に含まれるN2個の物理ブロック25のうちの一の物理ブロックからホスト2から要求されたデータを取得するに応じて、当該1つの並列動作要素に含まれるN2個の物理ブロック25のうちの他の物理ブロック25からページバッファ23にデータをプリフェッチする。
例えば、合成論理ブロックを構成するN1*N2個の物理ブロック25に対して書き込み先の物理ブロックを変更しながらデータが書き込まれる場合において、各並列動作要素に対し、単に同一の物理ブロック25においてページ番号において後続するページをプリフェッチする場合、プリフェッチされたデータが後のリード要求によって要求される可能性は小さい。
第1の実施形態では、メモリコントローラ10は、1つの並列動作要素に対し、読み出し先の物理ブロック25を切り替えながらプリフェッチをするので、合成論理ブロックを構成するN1*N2個の物理ブロック25に対して書き込み先の物理ブロックを変更しながらデータが書き込まれる場合において、後のリード要求によって要求され得るデータをプリフェッチすることが可能である。即ち、プリフェッチの効率が向上する。
なお、メモリコントローラ10は、プリフェッチによってページバッファ23に読み出したデータがホスト2から要求された場合、ページバッファ23に格納されているデータを取得する。よって、ホスト2からのリード要求に対する応答の速度が向上する。
また、メモリコントローラ10は、それぞれ異なる並列動作要素に属するN1個の物理ブロック25によって1つの論理ブロックを構築し、N2個の論理ブロックによって1つの合成論理ブロックを構築する。そして、N1*N2ページのデータによって誤り訂正のフレームを構築し、N1*N2ページのデータのそれぞれを、同一の合成論理ブロックに属するN1*N2個の物理ブロック25のうちのそれぞれ異なる物理ブロック25に格納する。
N2の数を大きくすることによって符号のサイズに対するフレームのサイズを大きくすることができるので、ホスト2から送られてくるデータを効率的に格納することが可能となる。
また、メモリコントローラ10は、同一の合成論理ブロックを構成するN2個の論理ブロックに関し、アクセスの順序を記憶する。そして、メモリコントローラ10は、データの読み出しを行った際に、プリフェッチする物理ブロック25を、アクセスの順序に基づいて特定する。これにより、シーケンシャルライトのアクセスパターンによって送られてきた複数のデータをシーケンシャルリードのアクセスパタンによって読み出しが要求される場合、プリフェッチによって読み出されたデータをホスト2に送ることが可能となるので、ホスト2からのリード要求に対する応答の速度が向上する。
また、メモリコントローラ10は、不良な物理ブロック25を記憶する。そして、メモリコントローラ10は、各並列動作要素において、データの読み出しを行った物理ブロック25にアクセスの順序において後続する物理ブロック25を順次探索し、不良ブロックではない物理ブロック25が探索された場合、その物理ブロック25をプリフェッチする物理ブロック25として特定する。
一例では、メモリコントローラ10は、不良ブロックをスキップしてデータを書き込む。メモリコントローラ10は、使用が不可と判断される不良ブロックをプリフェッチ対象から外すので、NANDメモリ20に不良ブロックが含まれる場合であっても、後に要求される可能性が高いデータをプリフェッチすることが可能である。
また、メモリコントローラ10は、ホスト2からの要求のパターンがシーケンシャルリードに該当するか否かを判定する。そして、ホスト2からの要求のパターンがシーケンシャルリードに該当する場合、メモリコントローラ10は、プリフェッチを実行し、ホスト2からの要求のパターンがシーケンシャルリードに該当しない場合、プリフェッチを実行しない。これにより、後のリード要求によって要求される可能性が高いデータをプリフェッチすることが可能となる。
なお、近年、1つのメモリチップ21に含まれる複数の物理ブロック25に同時にアクセスする技術がある。
図15は、第1の実施形態のメモリチップ21の他の構成例を示す図である。本図の例によれば、メモリセルアレイ24は、2つのプレーン(PLANE#0、PLANE#1)に分割されている。各プレーンは、複数の物理ブロック25を含む。各プレーンは互いに独立した周辺回路(ロウデコーダ、カラムデコーダ、ページバッファ23、データキャッシュ22等)を備えていることにより、2つのプレーンに対して同時にイレース/プログラム/リードを実行することが可能である。したがって、接続先のチャネルまたは属するバンクまたはプレーン番号が異なる4つのメモリセルアレイ24のそれぞれは、並列動作要素に該当する。
図16は、第1の実施形態の合成論理ブロックのさらに他の構成例を示す図である。本図に例示される合成論理ブロックの構成は、図15の構成に対応する。図16に示されるように、それぞれ属するプレーンおよびバンクの何れかが異なる4つの物理ブロック25m、25n、25o、25pは、1つの論理ブロックを構成し、それぞれ属するプレーンおよびバンクの何れかが異なる別の4つの物理ブロック25q、25r、25s、25tは、別の論理ブロックを構成する。そして、物理ブロック25m、25n、25o、25pからなる論理ブロックと、物理ブロック25q、25r、25s、25tからなる論理ブロックとは、1つの合成論理ブロックを構成する。この例によれば、N1は「4」であり、N2は「2」であり、誤り訂正のフレームは、8ページのデータによって構成される。即ち、メモリチップ21が複数のプレーンを有する場合には、複数のプレーンに跨ってフレームが構成される。
メモリコントローラ10は、1つのメモリチップ21に対してプリフェッチを実行する際、アクセスの順序が対象ブロックを含む論理ブロックに後続する論理ブロックに属し、それぞれ異なるプレーンに属する2つの物理ブロック25を特定する。そして、メモリコントローラ10は、特定した2つの物理ブロック25のそれぞれが不良ブロックではない場合、当該2つの物理ブロック25から対応するページバッファ23に並列にデータを読み出す。2つの物理ブロック25の何れかが不良ブロックに該当する場合、メモリコントローラ10は、2つの物理ブロック25のうちの不良ブロックに該当しない物理ブロック25からのみ、データを読み出す。
なお、1つのメモリチップ21に含まれるプレーンの数は、「2」に限定されない。1つのメモリチップ21が「3」以上のプレーンを有していてもよい。
このように、プリフェッチにおいては、メモリコントローラ10は、アクセスの順序が対象ブロックを含む論理ブロックに後続する論理ブロックに属し、それぞれ異なるプレーンに属する複数の物理ブロック25のうちの、不良ブロックに該当しない物理ブロック25から、同時にデータを読み出す。よって、メモリチップ21が複数の並列動作要素として複数のプレーンを含んで構成される場合においても、第1の実施形態の技術は適用可能である。
(第2の実施形態)
図17は、第2の実施形態のNANDメモリ20に格納されるデータの例を示す図である。図示するように、NANDメモリ20には、ファームウェアプログラム201と、固有情報202と、が格納される。
図17は、第2の実施形態のNANDメモリ20に格納されるデータの例を示す図である。図示するように、NANDメモリ20には、ファームウェアプログラム201と、固有情報202と、が格納される。
固有情報202は、少なくともN2を導出するための情報である。
一例では、フレームを構成するデータのページ数は、ファームウェアプログラム201において設定されている。製造者は、メモリシステム1を製造した際に、固有情報として、メモリシステム1に含まれるバンクの数、チャネルの数、および各メモリチップ21に含まれるプレーンの数を記録する。メモリコントローラ10は、ファームウェアプログラム201に基づき、固有情報202に記録されている、メモリシステム1に含まれるバンクの数、チャネルの数、および各メモリチップ21に含まれるプレーンの数を乗算することによって、1つの論理ブロックを構成する物理ブロック25の数N1を演算する。そして、メモリコントローラ10は、フレームを構成するデータのページ数をN1で除算することによって、N2を導出する。
N2を導出するタイミングは、特定のタイミングに限定されない。一例では、メモリコントローラ10は、起動時に固有情報202を参照することによってN2を導出する。その後、メモリコントローラ10は、それぞれN2個の論理ブロックからなる複数の合成論理ブロックを構築する。
なお、固有情報202は、N2そのものが記録されてもよい。その場合には、ファームウェアプログラム201は、固有情報202を参照することによってN2を取得することができる。
このように、N2が可変に構成されることによって、製造者は、並列動作要素が異なる複数のメモリシステム1に対して同一のファームウェアプログラム201を適用することが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 CPU、12 ホストI/Fコントローラ、13 RAM、14 NANDコントローラ、15 誤り訂正回路、20 NANDメモリ、21 メモリチップ、22 データキャッシュ、23 ページバッファ、24 メモリセルアレイ、25 物理ブロック、131 論理ブロック構成情報、132 合成論理ブロック構成情報、133 不良ブロック情報、150 符号、201 ファームウェアプログラム、202 固有情報、250,251 矢印。
Claims (7)
- ホストに接続可能なメモリシステムであって、
第1の数の並列動作要素を備え、前記第1の数の並列動作要素のそれぞれは複数の第1記憶領域を有する不揮発性のメモリセルアレイとバッファとを備える、メモリと、
第1グループを構築し、前記第1グループは2以上の数である第2の数の第2記憶領域を少なくとも含み、前記第2の数の第2記憶領域のそれぞれは前記第1の数の並列動作要素のうちの1の並列動作要素に属する複数の第1記憶領域に含まれるそれぞれ異なる第1記憶領域であり、前記第2の数の第2記憶領域のうちの1の第2記憶領域から前記ホストから要求されたデータである第1データを取得するに応じて、前記第2の数の第2記憶領域のうちの他の第2記憶領域から第2データを前記1の並列動作要素のバッファに読み出す、メモリコントローラと、
を備えることを特徴とするメモリシステム。 - 前記メモリコントローラは、前記第2データを前記1の並列動作要素のバッファに読み出した後に前記第2データが前記ホストから要求された場合、前記1の並列動作要素のバッファに格納されている前記第2データを取得する、
ことを特徴とする請求項1に記載のメモリシステム。 - 誤り訂正を実行する回路をさらに備え、
前記メモリコントローラは、前記第2の数の第2グループを構築し、前記第1グループは、前記第2の数の第2グループを含み、前記第2の数の第2グループのそれぞれは、前記第1の数の並列動作要素のうちのそれぞれ異なる並列動作要素に属する前記第1の数の第1記憶領域を含み、前記第2の数の第2記憶領域のそれぞれは、前記第2の数の第2グループのそれぞれ異なる第2グループに含まれ、前記第1の数と前記第2の数との積である第3の数のデータによって前記誤り訂正のフレームを構築し、前記第3の数のデータのそれぞれを、前記第2の数の第2グループのいずれかに属する前記第3の数の第1記憶領域のうちのそれぞれ異なる第1記憶領域に書き込む、
ことを特徴とする請求項2に記載のメモリシステム。 - 前記メモリコントローラは、前記第2の数の第2グループの順序を記憶し、前記他の第2記憶領域が属する第2グループは前記順序において前記1の第2記憶領域が属する第2グループよりも後であり、前記第2データの読み出し元である前記他の第2記憶領域を前記順序に基づいて特定する、
ことを特徴とする請求項3に記載のメモリシステム。 - 前記メモリコントローラは、不良な第1記憶領域である第3記憶領域を記憶し、
前記第2の数の第2記憶領域のうちの前記1の第2記憶領域から、属する第2グループが前記順序において後続する第2記憶領域を順次探索し、前記第3記憶領域に該当しない第2記憶領域が探索された場合、前記探索された前記第3記憶領域に該当しない第2記憶領域を前記他の第2記憶領域として特定する、
ことを特徴とする請求項4に記載のメモリシステム。 - 前記第1の数の並列動作要素のうちの前記1の並列動作要素を含む第4の数の並列動作要素を備えるメモリチップをさらに備え、
前記メモリコントローラは、前記他の第2記憶領域と同一の第2グループに含まれる前記第4の数の第1記憶領域のうちの前記第3記憶領域に該当しない第1記憶領域を特定し、複数の第1記憶領域を特定した場合には、前記特定した複数の第1記憶領域から前記バッファに同時にデータを読み出す、
ことを特徴とする請求項5に記載のメモリシステム。 - 前記メモリコントローラは、前記ホストからの要求のパターンがシーケンシャルリードに該当するか否かを判定し、前記パターンが前記シーケンシャルリードに該当する場合、前記第1データを取得するに応じて前記第2データのバッファへの読み出しを実行し、前記パターンが前記シーケンシャルリードに該当しない場合、前記第1データを取得するに応じて前記第2データのバッファへの読み出しを実行しない、
ことを特徴とする請求項1に記載のメモリシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017059072A JP2018163434A (ja) | 2017-03-24 | 2017-03-24 | メモリシステム |
US15/876,792 US20180276129A1 (en) | 2017-03-24 | 2018-01-22 | Pre-fetching in a memory system configured with synthesized logical blocks |
US16/704,555 US11301387B2 (en) | 2017-03-24 | 2019-12-05 | Memory system configured with a synthesized logical block into which a plurality of data units forming an error correction frame are written |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017059072A JP2018163434A (ja) | 2017-03-24 | 2017-03-24 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018163434A true JP2018163434A (ja) | 2018-10-18 |
Family
ID=63583131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017059072A Pending JP2018163434A (ja) | 2017-03-24 | 2017-03-24 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (2) | US20180276129A1 (ja) |
JP (1) | JP2018163434A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021193591A (ja) * | 2020-10-27 | 2021-12-23 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | データ記憶方法、データ記憶装置、データ読み取り方法及びデータ読み取り装置 |
JP7413108B2 (ja) | 2020-03-23 | 2024-01-15 | キオクシア株式会社 | 半導体装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018163434A (ja) | 2017-03-24 | 2018-10-18 | 東芝メモリ株式会社 | メモリシステム |
US10795610B2 (en) * | 2018-05-30 | 2020-10-06 | Micron Technology, Inc. | Read look ahead data size determination |
US11282567B2 (en) | 2019-08-20 | 2022-03-22 | Micron Technology, Inc. | Sequential SLC read optimization |
US11726869B2 (en) | 2019-08-20 | 2023-08-15 | Micron Technology, Inc. | Performing error control operation on memory component for garbage collection |
US11281578B2 (en) | 2019-08-20 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory sub-system during a low battery state |
US11281392B2 (en) | 2019-08-28 | 2022-03-22 | Micron Technology, Inc. | Garbage collection in a memory component using an adjusted parameter |
US20220350744A1 (en) * | 2021-04-29 | 2022-11-03 | Micron Technology, Inc. | Techniques for pre-fetching information using pattern detection |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827348B2 (en) | 2000-01-06 | 2010-11-02 | Super Talent Electronics, Inc. | High performance flash memory devices (FMD) |
US7525842B2 (en) | 2007-01-25 | 2009-04-28 | Micron Technology, Inc. | Increased NAND flash memory read throughput |
US8214599B2 (en) | 2008-11-04 | 2012-07-03 | Gridiron Systems, Inc. | Storage device prefetch system using directed graph clusters |
KR101269366B1 (ko) * | 2009-02-12 | 2013-05-29 | 가부시끼가이샤 도시바 | 메모리 시스템 및 메모리 시스템의 제어 방법 |
JP2012064158A (ja) | 2010-09-17 | 2012-03-29 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
JP2012133416A (ja) | 2010-12-17 | 2012-07-12 | Toshiba Corp | メモリシステム |
KR101907059B1 (ko) | 2011-12-21 | 2018-10-12 | 삼성전자 주식회사 | 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 |
JP5982148B2 (ja) | 2012-03-26 | 2016-08-31 | 株式会社メガチップス | 半導体記憶装置 |
US11243898B2 (en) * | 2014-08-01 | 2022-02-08 | Arm Limited | Memory controller and method for controlling a memory device to process access requests issued by at least one master device |
KR102517129B1 (ko) * | 2015-11-19 | 2023-04-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
US10108470B2 (en) * | 2015-12-28 | 2018-10-23 | Sandisk Technologies Llc | Parity storage management |
US9910772B2 (en) * | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
JP2018163434A (ja) | 2017-03-24 | 2018-10-18 | 東芝メモリ株式会社 | メモリシステム |
-
2017
- 2017-03-24 JP JP2017059072A patent/JP2018163434A/ja active Pending
-
2018
- 2018-01-22 US US15/876,792 patent/US20180276129A1/en not_active Abandoned
-
2019
- 2019-12-05 US US16/704,555 patent/US11301387B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7413108B2 (ja) | 2020-03-23 | 2024-01-15 | キオクシア株式会社 | 半導体装置 |
JP2021193591A (ja) * | 2020-10-27 | 2021-12-23 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | データ記憶方法、データ記憶装置、データ読み取り方法及びデータ読み取り装置 |
JP7216781B2 (ja) | 2020-10-27 | 2023-02-01 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | データ記憶方法、データ記憶装置、データ読み取り方法及びデータ読み取り装置 |
Also Published As
Publication number | Publication date |
---|---|
US11301387B2 (en) | 2022-04-12 |
US20180276129A1 (en) | 2018-09-27 |
US20200110706A1 (en) | 2020-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2018163434A (ja) | メモリシステム | |
KR101300657B1 (ko) | 비휘발성 메모리 및 버퍼 메모리를 포함하는 메모리 시스템및 그것의 데이터 읽기 방법 | |
CN106326028B (zh) | 具有不同奇偶校验区的存储器件 | |
US9658955B2 (en) | Data storage device and operating method thereof | |
US11573742B2 (en) | Dynamic data placement for collision avoidance among concurrent write streams | |
US9563551B2 (en) | Data storage device and data fetching method for flash memory | |
US10909031B2 (en) | Memory system and operating method thereof | |
US20130166825A1 (en) | Method Of Controlling Non-Volatile Memory, Non-Volatile Memory Controller Therefor, And Memory System Including The Same | |
CN106128505B (zh) | 包括半导体存储器件的存储系统以及其编程方法 | |
US8738842B2 (en) | Solid state disk controller and data processing method thereof | |
JPWO2006051780A1 (ja) | 不揮発性メモリ装置および不揮発性メモリ装置のアクセス方法 | |
JP2012221038A (ja) | メモリシステム | |
WO2020251711A1 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
US11487474B2 (en) | Memory system and method of operating a memory device included in the same | |
KR20190019712A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN114647371A (zh) | 存储器控制器及包括存储器控制器的存储装置 | |
US11288017B2 (en) | Devices, systems, and methods for storing data using distributed control | |
US8154925B2 (en) | Semiconductor memory device and system capable of executing an interleave programming for a plurality of memory chips and a 2-plane programming at the respective memory chips | |
CN114649012A (zh) | 存储器控制器和包括存储器控制器的存储装置 | |
KR20190019721A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US9483411B2 (en) | Memory system which transfers management information between first and second memories in a burst mode before a read process is performed on a third memory | |
US8984212B2 (en) | Non-volatile memory system | |
JPWO2005038655A1 (ja) | 半導体メモリ装置及びコントローラ並びにその読み書き制御方法 | |
JP2013232097A (ja) | 半導体記憶装置 | |
US20110107141A1 (en) | Data storage device, controller, and data access method for a downgrade memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170605 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180905 |