WO2004040454A2 - Method and apparatus for performing multi-page write operations in a non-volatile memory system - Google Patents

Method and apparatus for performing multi-page write operations in a non-volatile memory system Download PDF

Info

Publication number
WO2004040454A2
WO2004040454A2 PCT/US2003/028195 US0328195W WO2004040454A2 WO 2004040454 A2 WO2004040454 A2 WO 2004040454A2 US 0328195 W US0328195 W US 0328195W WO 2004040454 A2 WO2004040454 A2 WO 2004040454A2
Authority
WO
WIPO (PCT)
Prior art keywords
page
page number
convention
districts
volatile memory
Prior art date
Application number
PCT/US2003/028195
Other languages
French (fr)
Other versions
WO2004040454A3 (en
Inventor
Robert C. Chang
Bahman Qawami
Farshid Sabet-Sharghi
Ping Li
Original Assignee
Sandisk Corporation
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 Sandisk Corporation filed Critical Sandisk Corporation
Priority to AU2003268564A priority Critical patent/AU2003268564A1/en
Publication of WO2004040454A2 publication Critical patent/WO2004040454A2/en
Publication of WO2004040454A3 publication Critical patent/WO2004040454A3/en

Links

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Definitions

  • the present invention is related to co-pending U.S. Patent Application No. 10/281,739 (Atty. Docket No. SANDP023/SDK0366.000US) entitled “WEAR LEVELING IN NONVOLATILE STORAGE SYSTEMS", filed October 28, 2002, co-pending U.S. Patent Application No. 10/281,670 (Atty. Docket No. SANDP025/SDK0366.002US) entitled "TRACKING THE MOST FREQUENTLY ERASED BLOCKS IN NON- VOLATILE MEMORY SYSTEMS," filed October 28, 2002, co-pending U.S. Patent Application No. 10/281,824 (Atty. Docket No.
  • the present invention relates generally to mass digital data storage systems. More particularly, the present invention relates to systems and methods for allowing multiple pages of a non-volatile memory system to be accessed substantially simultaneously in an efficient manner.
  • non- volatile memory systems such as flash memory storage systems
  • flash memory storage systems are increasing due to the compact physical size of such memory systems, and the ability for nonvolatile memory to be repetitively reprogrammed.
  • the compact physical size of flash memory storage systems facilitates the use of such storage systems in devices which are becoming increasingly prevalent.
  • Devices which use flash memory storage systems include, but are not limited to, digital cameras, digital camcorders, digital music players, handheld personal computers, and global positioning devices.
  • the ability to repetitively reprogram non-volatile memory included in flash memory storage systems enables flash memory storage systems to be used and reused.
  • flash memory storage systems may include flash memory cards and flash memory chip sets.
  • Flash memory chip sets generally include flash memory components and a controller component.
  • a flash memory chip set may be arranged to be assembled into an embedded system.
  • the manufacturers of such assemblies or host systems typically acquire flash memory in component-form, as well as other components, then assemble the flash memory and the other components into a host system.
  • Processes of reading data from, erasing data in, and write data into flash memory may be relatively time-consuming, particularly when the volume of data is relatively high.
  • access times associated with accessing pages of flash memory in order to perform a read operation, an erase operation, or a write operation may prove to be relatively significant when pages are repeatedly or substantially continuously accessed.
  • an access time may be between approximately 250 microseconds ( ⁇ s) for a binary flash memory and approximately one millisecond (ms) for a multi-level cell (MLC) flash memory.
  • a method for performing a multi-page command includes obtaining a first page number of a first convention that identifies a first page associated with a non-volatile memory, and mapping the first page number to a second page number of a second convention. Like the first page number, the second page number also identifies the first page. Mapping the first page number to the second page number includes identifying a total number of districts associated with the non-volatile memory and a total number of pages associated with each block of a total number of blocks. Finally, the first page is accessed using the second page number and the multi-page command.
  • the method includes obtaining a third page number of the first convention that identifies a second page, mapping the third page number to a fourth page number of the second convention that also identifies the second page, and accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
  • accessing the first page and accessing the second page may include one of writing data to the first page and the second page and erasing data from the first page and the second page.
  • a method for organizing a plurality of districts within a non-volatile memory which include blocks that have pages includes assigning a first page number of a first convention to a first page associated with a first district, and assigning a second page number to a second page associated with a second district.
  • the first page number is arranged to be converted to a first physical page number associated with the first page and the second page number is arranged to be converted to a second physical page number associated with the second page using information associated with a total number of districts included in the plurality of districts and a total number of pages included in the first district.
  • the information associated with the total number of districts included in the plurality of districts and the total number of pages included in the first districts is at least partially incorporated into a data structure, as for example a look-up table.
  • a method for enabling memory elements, which are grouped into groups arranged into districts, to be accessed using a common command includes identifying the plurality of memory elements using identifiers of a first convention, and converting the identifiers of the first convention into identifiers of the second convention.
  • the identifiers of the second convention correspond to actual positions of the memory elements within a non-volatile memory.
  • Converting the identifiers of the first convention into identifiers of the second convention includes using information relating to a total number of districts, information relating to a total number of memory elements included in each group, and the first identifier.
  • the method includes accessing the plurality of memory elements using the common command.
  • converting the identifiers of the first convention into identifiers of the second convention using the information relating to the total number of districts, the information relating to a total number of memory elements included in each group, and the first identifier includes indexing into a data structure which includes information relating the identifiers of the second convention.
  • the data structure may be a look-up table.
  • the groups may be blocks and the memory elements may be physical pages.
  • Fig. la is a diagrammatic representation of a general host system which includes a nonvolatile memory.
  • Fig. lb is a diagrammatic representation a memory device, e.g., memory device 120 of
  • Fig. lc is a diagrammatic representation of a host system which includes an embedded non-volatile memory.
  • Fig. 2a is a diagrammatic representation of blocks within a non- volatile memory in accordance with an embodiment of the present invention.
  • Fig. 2b is a diagrammatic representation of blocks within a non-volatile memory, e.g., blocks 202 of Fig. 2a, which are grouped into districts in accordance with an embodiment of the present invention.
  • Fig. 3a is a diagrammatic representation of districts, e.g., districts 212 of Fig. 2b, within a non- volatile memory component in accordance with an embodiment of the present invention.
  • Fig. 3b is a diagrammatic representation of pages within a non- volatile memory component which are grouped as a multi-page section in accordance with an embodiment of the present invention.
  • Fig. 4 is a diagrammatic representation of districts within a non-volatile memory in which pages have been assigned converted page numbers in accordance with an embodiment of the present invention.
  • Fig. 5 is a diagrammatic representation of a mapping which maps converted page numbers associated with blocks in a non-volatile memory into actual physical page numbers in accordance with an embodiment of the present invention.
  • Fig. 6 is a diagrammatic representation of plurality of blocks with converted page numbers which are grouped into districts and units in accordance with an embodiment of the present invention.
  • Fig. 7 is a diagrammatic representation of a look-up table which may be used to facilitate a multi-page access or program operation in accordance with an embodiment of the present invention.
  • Fig. 8 is a process flow diagram which illustrates the steps associated with one process of performing a multi-page write operation within a non-volatile memory system such as system in accordance with an embodiment of the present invention.
  • Fig. 9 is a process flow diagram which illustrates the steps associated with a multi-page write process which involves the use of a look-up table in accordance with an embodiment of the present invention.
  • Fig. 10 is a process flow diagram which illustrates the steps associated with one process of performing a read operation within a non- volatile memory system such as system in accordance with an embodiment of the present invention.
  • Fig. 11 is a process flow diagram which illustrates the steps associated with a read process which involves the use of a look-up table in accordance with an embodiment of the present invention.
  • Fig. 12 is a diagrammatic block diagram representation of a system architecture in accordance with an embodiment of the present invention.
  • an access time to write a page may range from approximately 250 microseconds ( ⁇ s) for a binary flash memory to more than approximately one millisecond (ms) for a multi-level cell (MLC) flash memory
  • ⁇ s microseconds
  • ms millisecond
  • MLC multi-level cell
  • multiple pages may be written at any one time. That is, a multi-page write operation may be implemented which enables more than one page to be written substantially during a single access time.
  • enabling multi-page programming such that multiple pages may be programmed, e.g., written, or read or erased, together reduces the amount of time associated with programming processes. For instance, when data is written into four pages substantially at the same time in an MLC flash memory, the overall amount of time used by a write process may be reduced from more than approximately four ms to approximately one ms. As a result, write operations may occur more efficiently.
  • Flash memory systems or, more generally, non-volatile memory devices which may benefit from the use of multi-page commands to read, erase, and write data into pages or blocks generally include flash memory cards and chip sets.
  • flash memory systems are used in conjunction with a host system such that the host system may write data to or read data from the flash memory systems.
  • some flash memory systems include embedded flash memory and software which executes on a host to substantially act as a controller for the embedded flash memory, as will be discussed below with respect to Fig. lc. Referring to Fig. la, a general host system which includes a non-volatile memory device, e.g., a CompactFlash memory card, will be described.
  • a host or computer system 100 generally includes a system bus 104 which allows a microprocessor 108, a random access memory (RAM) 112, and input/output circuits 116 to communicate. It should be appreciated that host system 100 may generally include other components, e.g., display devices and networking device, which are not shown for purposes of illustration.
  • host system 100 may be capable of capturing information including, but not limited to, still image information, audio information, and video image information. Such information may be captured in real-time, and may be transmitted to host system 100 in a wireless manner. While host system 100 may be substantially any system, host system 100 is typically a system such as a digital camera, a video camera, a cellular communications device, an audio player, or a video player. It should be appreciated, however, that host system 100 may generally be substantially any system which stores data or information, and retrieves data or information.
  • Host system 100 may also be a system which either only captures data, or only retrieves data. That is, host system 100 may be, in one embodiment, a dedicated system which stores data, or host system 100 may be a dedicated system which reads data. By way of example, host system 100 may be a memory writer which is arranged only to write or store data. Alternatively, host system 100 may be a device such as an MP3 player which is typically arranged to read or retrieve data, and not to capture data.
  • a non- volatile memory device 120 which, in one embodiment, is a removable nonvolatile memory device, is arranged to interface with bus 104 to store information.
  • An optional interface block 130 may allow non- volatile memory device 120 to interface indirectly with bus 104.
  • Non-volatile memory device 120 includes non-volatile memory 124 and an optional memory control system 128.
  • non- volatile memory device 120 may be implemented on a single chip or a die.
  • non- volatile memory device 120 may be implemented on a multi-chip module, or on multiple discrete components which may form a chip set and may be used together as non-volatile memory device 120.
  • One embodiment of non-volatile memory device 120 will be described below in more detail with respect to Fig. lb.
  • Non-volatile memory 124 e.g., flash memory such as NAND flash memory, is arranged to store data such that data may be accessed and read as needed. Data stored in non-volatile memory 124 may also be erased as appropriate, although it should be understood that some data in non- volatile memory 124 may not be erasable.
  • the processes of storing data, reading data, and erasing data are generally controlled by memory control system 128 or, when memory control system 128 is not present, by software executed by microprocessor 108.
  • the operation of non- volatile memory 124 may be managed such that the lifetime of non- volatile memory 124 is substantially maximized by essentially causing sections of non-volatile memory 124 to be worn out substantially equally.
  • Non- volatile memory device 120 has generally been described as including an optional memory control system 128, i.e., a controller. Often, non-volatile memory device 120 may include separate chips for non-volatile memory 124 and memory control system 128, i.e., controller, functions.
  • non-volatile memory devices including, but not limited to, PC cards, CompactFlash cards, MultiMedia cards, and Secure Digital cards include controllers which may be implemented on a separate chip, other non-volatile memory devices may not include controllers that are implemented on a separate chip.
  • the memory and controller functions may be integrated into a single chip, as will be appreciated by those skilled in the art.
  • the functionality of memory control system 128 may be provided by microprocessor 108, as for example in an embodiment in which non-volatile memory device 120 does not include memory controller 128, as discussed above.
  • nonvolatile memory device 120 includes non- volatile memory 124 and may include memory control system 128.
  • memory 124 and control system 128, or controller may be primary components of non- volatile memory device 120, although when memory 124 is an embedded NAND device, for example, non- volatile memory device 120 may not include control system 128.
  • Memory 124 may be an array of memory cells formed on a semiconductor substrate, wherein one or more bits of data are stored in the individual memory cells by storing one of two or more levels of charge on individual storage elements of the memory cells.
  • a nonvolatile flash electrically erasable programmable read only memory (EEPROM) is one example of a common type of memory for such systems.
  • control system 128 When present within non- volatile memory device 120, control system 128 communicates over a bus 15 to a host computer or other system that is using the memory system to store data.
  • Bus 15 is generally a part of bus 104 of Fig. la.
  • Control system 128 also controls operation of memory 124, which may include a memory cell array 11, to write data provided by the host, read data requested by the host, and perform various housekeeping functions in operating memory 124.
  • Control system 128 generally includes a general purpose microprocessor which has associated non-volatile software memory, various logic circuits, and the like. One or more state machines may be included for controlling the performance of specific routines.
  • Memory cell array 11 may, in one embodiment, be addressed by control system 128 or microprocessor 108 through address decoders 17.
  • decoders 17 apply the correct voltages to gate and bit lines of array 11 in order to program data to, read data from, or erase a group of memory cells being addressed by the control system 128.
  • Additional circuits 19 may include programming drivers that control voltages applied to elements of the array that depend upon the data being programmed into an addressed group of cells. Circuits 19 may also include sense amplifiers and other circuits necessary to read data from an addressed group of memory cells. Data to be programmed into array 11, or data recently read from array 11, may be stored in a buffer memory 21 that is associated with control system 128, although data may instead be stored in other buffer memories (not shown).
  • Control system 128 may also contain various registers for temporarily storing command and status data, and the like.
  • Array 11 is often divided into a large number of BLOCKS 0 - N memory cells.
  • the block may be the smallest unit of erase. That is, each block may be arranged to contain the minimum number of memory cells that are to be erased together.
  • Each block is typically divided into a number of pages.
  • a page may be considered to be the smallest unit of programming. That is, a basic programming operation may write data into or read data from a minimum of one page of memory cells.
  • One or more sectors of data may be stored within each page. As shown in Fig. lb, one sector includes user data and overhead data.
  • Overhead data typically includes an error correction code (ECC) that has been calculated from the user data of the sector.
  • ECC error correction code
  • a portion 23 of the control system 15 calculates the ECC when data is being programmed into array 11, and also checks the ECC when data is being read from array 11.
  • the ECCs are stored in different pages, or different blocks, than the user data to which they pertain.
  • a sector of user data is typically 512 bytes, corresponding to the size of a sector in magnetic disk drives.
  • Overhead data is typically an additional 16 bytes, although it should be appreciated that overhead data may generally include any number of bytes.
  • One sector of data is most commonly included in each page, but two or more sectors may instead form a page. Any number of pages may generally form a block.
  • a block may be formed from eight pages up to 512, 1024 or more pages. The number of blocks is often chosen to provide a desired data storage capacity for the memory system.
  • Array 11 is typically divided into a few sub-arrays (not shown), each of which contains a proportion of the blocks, which operate somewhat independently of each other in order to increase the degree of parallelism in the execution of various memory operations.
  • An example of the use of multiple sub-arrays is described in U.S. Patent No. 5,890,192, which is incorporated herein by reference in its entirety.
  • non-volatile memory is embedded into a system, e.g., a host system. Fig.
  • a host or computer system 150 generally includes a system bus 154 which allows a microprocessor 158, a RAM 162, and input/output circuits 166, among other components (not shown) of host system 150, to communicate.
  • a non- volatile memory 174 e.g., a flash memory, allows information to be stored within host system 150.
  • An interface 180 may be provided between non- volatile memory 174 and bus 154 to enable information to be read from and written to non-volatile memory 174.
  • Non- volatile memory 174 may be managed by microprocessor 158 which effectively executes either or both software and firmware which is arranged to control non-volatile memory 174. That is, microprocessor 158 may run code devices (not shown), i.e., software code devices or firmware code devices, which allow non- volatile memory 174 to be controlled.
  • Such code devices may be a flash memory packaged with CPU inside microprocessor 158, a separate flash ROM, or inside non-volatile memory 174, which will be described below, may enable physical blocks in non- volatile memory 174 to be addressed, and may enable information to be stored into, read from, and erased from the physical blocks.
  • a user when a user writes data, the user effectively writes data to a media, as for example a non-volatile memory system such as a flash memory card or a system which includes a flash memory embedded therein.
  • a non-volatile memory system such as a flash memory card or a system which includes a flash memory embedded therein.
  • the user may specify blocks or even pages into which the data is to be written.
  • a non-volatile memory such as non- volatile memory 124 of Fig. la or non-volatile memory 174 of Fig. lc, is typically divided into blocks, as mentioned above.
  • Fig. 2a is a diagrammatic representation of blocks within a non-volatile memory in accordance with an embodiment of the present invention.
  • a non-volatile memory may be divided into physical blocks '0' to 'N' 202, which may each be associated with a logical block (not shown).
  • blocks 202 each include approximately thirty-two pages, although it should be appreciated that blocks 202 may generally include any number of pages, e.g., sixty-four pages.
  • the number of blocks 202, as well as the number of pages included in a block 202, may generally depend upon the size of a nonvolatile memory.
  • pages within blocks 202 are substantially sequential. That is, as shown, block
  • Blocks 202 within a non- volatile memory are generally sequential, and pages within blocks 202 are generally sequential.
  • Blocks 202 may be grouped into districts, as shown in Fig. 2b. The number of districts
  • the number of districts into which blocks 202 may be grouped may range from approximately two districts when approximately two pages are to be accessed substantially simultaneously to approximately thirty-two districts when approximately thirty-two pages are to be accessed substantially simultaneously.
  • Blocks 202 are grouped into four districts 212. Hence, every four blocks 212 are grouped into a particular district. 212.
  • block '0' 202a and block '4' 202e are included in district '0' 212a
  • block ' 1 ' 202b, block '5' 202h, and block 'N-2' 202k are included in district ' 1 ' 212b.
  • blocks 202 that have block numbers which are a multiple of four may be included in district '0' 212a
  • blocks 202 with block numbers that are one higher than a multiple of four may be included in district ' 1 ' 212b
  • blocks 202 with block numbers that are two higher than a multiple of four may be included in district '2' 212c
  • blocks 202 with block numbers that are one less than a multiple of four may be included in district '3' 212d.
  • Fig. 3 a is a diagrammatic representation of districts, e.g., districts 212 of Fig. 2b, within a non-volatile memory component in accordance with an embodiment of the present invention.
  • physical blocks 202 with block numbers which are a multiple of four are effectively aligned within district '0' 212a, while blocks 202 with block numbers which are one more than a multiple of four are effectively aligned within district ' 1 ' 212b, etc.
  • districts 212 may generally include any number of blocks 202.
  • each district 212 is dependent upon factors which include, but are not limited to, the overall size of the non-volatile memory component which is divided into blocks 202, the number of districts 212, and the number of pages included in each block 202.
  • a single page in each district 212 may generally be accessed at substantially the same time, e.g., as a multi -page section, such that a page in each district 212 may be erased or written to in a single access time. That is, physical pages 302 with the same page offset relative to the beginning of their respective blocks within districts 212 may be accessed as a unit 304 using a multi-block access command such as a multi-block or multi-page program command, as shown in Fig. 3b.
  • a page associated with each district 212 may be accessed in a single access time.
  • page ' 12' 302a of district '0' 212a, page '44' 302b of district ' 1 ' 212b, page '76' 302c of district '2' 212c, and page '108' 302d of district '3' 212d may be written using substantially a single multi-block program command.
  • the number of pages which may effectively be accessed using a multi-block command may depend upon the number of districts 212 into which blocks 202 have been grouped. For instance, if there are four districts 212, then four pages which are each in different districts 212 may be grouped into a multi-page section that is accessed at substantially the same time. Alternatively, when there are eight districts, then one page associated with each district may be accessed using a multi-block or multi-page command such that eight pages may be accessed at substantially the same time. As previously mentioned, by accessing multiple pages at one time, the amount of time associated with processes such as read, erase, and write operations may be reduced, thereby increasing the performance of an overall non-volatile memory system or flash memory system.
  • Districts 412 are arranged such that district '0' 412a includes blocks 402 which have block numbers 420 that are multiples of the total number of districts 412, e.g., multiples of four.
  • district ' 1 ' 412b includes blocks 402 which have block numbers 420 that are one more than multiples of the total number of districts 412
  • district '2' 412c includes blocks 402 which have block numbers 420 that are two more than multiples of the total number of districts 412,
  • ⁇ and district '3' 412d includes blocks 402 which have block numbers 420 that are three more than multiples of the total number of districts 412.
  • Blocks 402 within districts 412 may be organized into units which have unit numbers 430.
  • Unit numbers 430 effectively identify locations of blocks 402 within districts 412. For example, unit number '0' 430a identifies the first block 402 within each district 412.
  • block 402a of district '0' 412a, block 402b of district ' 1' 412b, block 402c of district '2' 412c, and block 402d of district '3' 412d are each associated with unit number '0' 430a.
  • While actual pages included in blocks 402 are physical pages with physical page numbers, as will be discussed below with respect to Fig. 5, the use of user or converted page numbers enables the user to more readily to specify pages that he or she wishes to access within an overall system which supports access to more than one page during a single access time.
  • the accessed pages are associated with the same unit number 430.
  • unit number '0' 430a may be accessed simultaneously using a multi-page access command.
  • unit number '0' 430a includes one block 420 of each district 412.
  • a page from each of blocks 420a-d maybe accessed as a part of a multi-page section within unit number '0' 430a.
  • Fig. 5 is a diagrammatic representation of a mapping which maps converted page numbers associated with blocks in a non-volatile memory into actual physical page numbers in accordance with an embodiment of the present invention.
  • a page with converted page numbers 504 from one block 502 in each district 412 is generally included in section 530.
  • controller firmware or software will typically effectively access pages with converted page numbers 504 when a multi- page section 530 is to be accessed during a single access time.
  • Multi-page section 530 which includes pages with converted page numbers 504, may effectively be mapped into multi-page section 530' which include pages with actual physical page numbers 504' which correspond to pages with converted page numbers 504.
  • controller firmware or software typically determines which pages with actual page numbers 504' correspond to pages with converted page numbers 504.
  • multi-page section 530 includes pages with converted page numbers 504 which are converted page numbers '8',' '9',' '10',' and '11 '
  • controller firmware or software may determined that multi-section 530 corresponds to multi-page section 530' which includes pages with actual physical page numbers 504' which are actually physical page numbers '2,' '34,' '66,' and '98,' respectively.
  • converted page number '8" is mapped to actual physical page number '2
  • converted page number '9" is mapped to actual physical page number '34
  • converted page number ' 10 is mapped to actual physical page number '66
  • converted page number '11 is mapped to actual physical page number '98.
  • a mathematical algorithm based on converted page numbers may be used to determine the actual physical page numbers.
  • Such an algorithm may, in one embodiment, include the use of a look- up table, as will be discussed with reference to Fig. 7.
  • an algorithm or calculation which enables actual physical page numbers to be determined given converted page numbers includes determining an associated district number, an associated unit number, and a location or offset within a block that includes a page with the converted page number.
  • a converted page number e.g., a converted page number associated with a page such as page 604a of block 602a
  • 'PV a converted page number associated with a page such as page 604a of block 602a
  • each block 602 within a non- volatile memory may be associated with both a district 622, denoted as 'Z' and a unit 630, denoted as 'U.
  • block 602f which includes pages 616
  • block 602d which includes pages 612
  • block 602d which includes pages 612
  • a non- volatile memory may generally include any number of districts 622 and units 630.
  • the size of blocks 602, i.e., the number of pages in a block 602 may vary widely.
  • a total number of districts may be expressed as 'T D' and a total number of units may be expressed as 'T_U,' while the total number of pages in a block 602 may be expressed as 'T_P.
  • the total number of districts 'T_D,' the total number of units 'T_U,' while the total number of pages 'T_P' in block 602 may be considered to be parameters associated with a non-volatile memory.
  • converted page number of a particular page within a non- volatile memory as for example page 616b which has an associated converted page number denoted as 'X' may be identified as follows:
  • 'S' denotes an offset 650 or the number of pages between a beginning of the block which contains the page which is associated with converted page number 'X' and the location of converted page number 'X.
  • the value of 'S' may range from approximately 0 to approximately 'T_P - 1,' while the value of 'Z' may be approximately 'T D - 1 '.
  • substantially any converted page number may be expressed as a function of a district 622, a unit 630, an offset 650, a total number of districts 'T D, ' a total number of units 'T_U,' and total number of pages in a block 602 'T_P.'
  • converted page number 'X' may be identified as follows:
  • converted page number 'X' is shown as being a converted page number located in block 602f, converted page number 'X' may generally be located in substantially any block.
  • a district 'Z' 622, a unit 'U' 630, and an offset 'S' 650 which correspond to converted page number 'X' may be determined. It should be appreciated that the district 'Z' 622, unit 'U' 630, and offset 'S' 650 which correspond to converted page number 'X' also correspond to an actual physical page number which is mapped to converted page number 'X.' In other words, the district 'Z' 622, unit 'U' 630, and offset 'S' 650 is substantially the same for a converted page number as it is for the corresponding actual physical page number.
  • district 'Z' 622 may be determined to be the remainder when 'X' is divided by the total number of districts 'T D,' as determined using a remainder operator such as a "MOD" operator. That is, district 'Z' 622 may be expressed as a function of converted page number 'X' as follows:
  • the unit 'U' 630 which corresponds to converted page number 'X' may be expressed as a function of converted page number 'X' as follows:
  • unit 'U' 630 is calculated as being a fractional value
  • the actual "value" for unit 'U' 630 may be determined by substantially rounding down to the nearest integer value. For example, if the total number of districts 'T_D' is four and the total number of pages 'T_P' is thirty-two, if converted page number 'X' is converted page number '3,' then unit 'U' 630 is typically determined to be unit '0' 630a.
  • the offset 'S' associated with converted page number 'X' may also be determined as a function of converted page number 'X' using the following expression:
  • offset 'S' 650 may be calculated to be zero, i.e., converted page number '3' is the first page in its associated block.
  • offset 'S' 650 may be calculated to be two, i.e., converted page number '8' is the third page in its associated block.
  • an actual physical page number 'P N' which co ⁇ esponds to converted page number 'X' may be expressed as a function of parameters and converted page number 'X' and, hence, district 'Z' 622, unit 'U' 630, and offset 'S' 650 as follows:
  • the actual physical page number 'P N' may be expressed substantially only as a function of converted page number 'X' and parameters, namely the total number of districts 'T D,' and the total number of pages 'T_P' in a block 602. That is, by substantially eliminating 'U' by substituting 'Z' and 'S,' the actual physical page number 'P_N' may also be calculated as:
  • district 'Z' may be calculated to be:
  • unit 'U' may be calculated to be:
  • converted page number '10' 504c may be calculated to be located in district '2' 412c and unit '0,' at an offset of two pages, as shown in Fig. 5.
  • converted page number '10' corresponds to actual physical page number '66.
  • actual page number 'P_N' may also be calculated as follows:
  • calculations involving the formulas discussed above with respect to Fig. 6 may be performed substantially any time a user issues a command to read or write pages in a nonvolatile memory such as a NAND flash memory, when the overhead associated with such calculations may be considered to be excessive, then the calculations may effectively be simplified through the use of data structures such as look-up tables.
  • the overhead associated with performing calculations to identify the page number of the location of an actual physical page is generally not significant, when memory space permits the implementation of relatively small data structures stored within controller firmware or software, the calculations performed may be simplified, and the overhead may be further reduced. As a result, the performance of a multi-page write process may be further improved in many cases.
  • a look-up table is too large, e.g., occupies more than approximately 512 bytes, and is considered to occupy too much space in controller firmware or software, then calculations to convert converted page numbers into actual page numbers may be performed as discussed above with respect to Fig. 6 without using a look-up table. In other words, a determination of whether calculations should be performed in lieu of accessing a lookup table may generally be made based upon the anticipated size of a suitable look-up table.
  • a look-up table may be calculated and stored inside controller firmware or software such that when a mapping is to be performed to effectively convert a converted page number into an actual physical page number, the look-up table may be accessed to obtain mapping information.
  • Fig. 7 is a diagrammatic representation of a look-up table which may be used to facilitate a multi- page access or program operation in accordance with an embodiment of the present invention.
  • the number of entries in a look-up table 750 may be dependent at least in part upon the number of pages in a unit of a non-volatile memory.
  • each entry may be arranged to occupy a byte, and the number of bytes associated with a table may be dependent on number of pages in a unit.
  • each unit may include four blocks.
  • the number of pages associated with each unit is 128, and the number of entries and, hence, bytes occupied by look-up table 750 may be approximately 128.
  • the number of look-up table entries may effectively be expressed as:
  • Table_Entry_Value is the value stored in an entry in look-up table 750
  • the district 'Z' is the district in which the page associated with converted page number 'P" is located
  • 'S' is the offset at which the page associated with converted page number 'P' is located within a block that contains the page.
  • the Table_Entry_Nalue may then be placed in a table location identified by the following expression:
  • converted page number '4' ' is associated with district '0' at an offset of ' 1.
  • the converted page number '4" may be calculated to be associated with an entry value of '-3' in look-up table 750.
  • the entry value of '-3' may then be stored into a table entry location '4' 754.
  • An actual page number which corresponds to a converted page number 'P" may be determined using look-up table 750 as follows:
  • TABLE[ ] is the value stored in a table entry that corresponds to converted page number 'P'.
  • the actual page number which corresponds to converted page number 'P" may also be determined using the following expression:
  • converted page number '4" may be mapped to an actual page number '1.
  • look-up table 750 or, more specifically, entries 754, 756, 758, and 760 of look-up table, may be used to determine that actual non-contiguous physical pages '1,' '33,' '65,' and '97,' respectively, are to be written as a multi-page section in one access time.
  • look-up table 750 or substantially any similar data structure, is implemented, e.g., calculated and stored, within controller firmware or software, a calculation of an actual physical page number is effectively a relatively fast table look-up with minimal calculations. Therefore, multi-page access operations such as a multi-page write command may occur relatively efficiently.
  • a process 800 of performing a multi-page write operation begins at step 804 in which a user provides data that is to be written into pages within a non-volatile memory using a user page convention, or converted page numbers.
  • the user may issue a series of data input commands as data is input into different districts, and controller firmware may issue a dummy program command such as a 1 IH dummy program command substantially in response to each data input command while data is still being input into different districts, as described in "512 Mbit NAND Flash Product Manual" Rev.
  • mapping calculations are run, user pages or converted page numbers are mapped or otherwise converted into actual physical page numbers in step 812.
  • the data to be written is written into actual physical pages of a non-volatile memory system or media using a multi-page program command or write process.
  • a multi-page section of physical pages is written in approximately one access time.
  • a multi-page program command man include a cache program command, e.g., a 15H cache program command, which causes physical programming to occur.
  • a look-up table may be used to facilitate the mapping of converted page numbers into actual physical page numbers, as discussed above with respect to Fig. 7.
  • Fig. 9 is a process flow diagram which illustrates the steps associated with a multi-page write process which involves the use of a look-up table in accordance with an embodiment of the present invention.
  • a process 900 of performing a multi -page write operation begins at step 904 in which a user provides data to be written using a user or converted page numbers.
  • the converted page numbers are then used in step 908, e.g., by controller firmware or software, to determine actual physical page numbers which correspond to the converted page numbers through accessing a look-up table such as look-up table 750 of Fig. 7. Once a mapping between converted page numbers and their corresponding actual page numbers is determined, data is written into the actual pages using a multi-page or multi-block program command in step 912. After the data is written into actual pages, the process of writing data is completed.
  • a process 1000 of performing a read operation begins at step 1004 in which a user specifies pages within a nonvolatile memory using a user page convention, or converted page numbers, from which data is to be read. Once specifies the converted page numbers from which data is to be read, an algorithm may be run or, more generally, calculations may be performed to effectively map the converted page numbers into actual physical page numbers in step 1008. Suitable calculations that may be performed were discussed above, as for example with reference to Fig. 6.
  • mapping calculations are run, user pages or converted page numbers are mapped or otherwise converted into actual physical page numbers in step 1012. Then, in step 1016, the data to be read is read from actual physical pages of a non- volatile memory system using a read command. Once the pages are read from, the process of performing a read operation is completed.
  • a look-up table may be used to facilitate the mapping of converted page numbers into actual physical page numbers as a part of a read operation.
  • Fig. 11 is a process flow diagram which illustrates the steps associated with a read process which involves the use of a look-up table in accordance with an embodiment of the present invention.
  • a process 1100 of performing a read operation begins at step 1004 in which a user provides user or converted page numbers which contain data the user wishes to read or otherwise access.
  • actual physical page numbers which correspond to the converted page numbers may be determined by accessing a look-up table such as look-up table 750 of Fig. 7. After actual page numbers which correspond to converted page numbers are determined, data is obtained or read from the actual pages in step 1012.
  • a system architecture 700 generally includes a variety of modules which may include, but are not limited to, an application interface module 704, a system manager module 708, a data manager module 712, a data integrity manager 716, and a device manager and interface module 720.
  • system architecture 700 may be implemented using software code devices or firmware which may be accessed by a processor, e.g., processor 108 of Fig. la.
  • application interface module 704 may be arranged to communicate with the host, operating system or the user directly.
  • Application interface module 704 is also in communication with system manager module 708 and data manager module 712.
  • system manager module 708 When the user wants to read, write or format a flash memory, the user sends requests to the operating system, the requests are passed to the application interface module 704.
  • Application interface module 704 directs the requests to system manager module 708 or data manager module 712 depending on the requests.
  • System manager module 708 includes a system initialization submodule 724, an erase count block management submodule 726, and a power management block submodule 730.
  • System initialization submodule 724 is generally arranged to enable an initialization request to be processed, and typically communicates with erase count block management submodule 726.
  • system manager module 708 is also in communication with data manager module 712, as well as device manager and interface module 720.
  • Data manager module 712 which communicates with both system manager module 708 and application interface module 704, may include functionality to provide page or block mapping.
  • Data manager module 712 may also include functionality associated with operating system and file system interface layers.
  • Device manager and interface module 720 which is in communication with system manager module 708, data manager 712, and data integrity manager 716, typically provides a flash memory interface, and includes functionality associated with hardware abstractions, e.g., an I/O interface.
  • Data integrity manager module 716 provides ECC handling, among other functions.
  • a look-up table may generally include substantially any number of entries. For instance, when number of pages in a unit are small and there are few units included in a non- volatile memory component, a look-up table may include all values such that essentially minimum calculations need to be done to determine actual page numbers which correspond to converted page numbers.
  • the size of a flash memory and the size of blocks within the flash memory may be widely varied. While the size of blocks has generally been described as including approximately thirty- two pages, blocks may include any number of pages or, more generally, any number of elements which make up a block. For instance, a block may include approximately sixty-four elements or pages. As a result, the number of blocks within a system may vary. Within a 512 Mb binary NAND flash memory, if a block includes approximately thirty-two pages which each contain approximately 512 bytes, a total of 4096 physical blocks are present in the flash memory.
  • each physical block includes approximately sixty-four pages which each contain approximately 512 bytes, a total of 2048 physical blocks may be present in the flash memory.
  • the size of pages may also vary.
  • the steps associated with the various methods of the present invention may be widely varied. In general, steps may be added, removed, reordered, and altered.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Methods and apparatus for facilitating multi-page or multi-block operations within a non-volatile memory system. According to one aspect of the present invention, a method for performing a multi-page command includes obtaining a first page number of a first convention that identifies a first page associated with a non-volatile memory, and mapping the first page number to a second page number of a second convention. Like the first page number, the second page number also identifies the first page. Mapping the first page number to the second page number includes identifying a total number of districts associated with the non-volatile memory and a total number of pages associated with each block of a total number of blocks. Finally, the first page is accessed using the second page number and the multi-page command.

Description

METHOD AND APPARATUS FOR PERFORMING MULTI-PAGE WRITE OPERATIONS IN A NON- VOLATILE MEMORY SYSTEM
CROSS REFERENCE TO RELATED APPLICATIONS
The present invention is related to co-pending U.S. Patent Application No. 10/281,739 (Atty. Docket No. SANDP023/SDK0366.000US) entitled "WEAR LEVELING IN NONVOLATILE STORAGE SYSTEMS", filed October 28, 2002, co-pending U.S. Patent Application No. 10/281,670 (Atty. Docket No. SANDP025/SDK0366.002US) entitled "TRACKING THE MOST FREQUENTLY ERASED BLOCKS IN NON- VOLATILE MEMORY SYSTEMS," filed October 28, 2002, co-pending U.S. Patent Application No. 10/281,824 (Atty. Docket No. SANDP026/SDK0366.003) entitled "TRACKING THE LEAST FREQUENTLY ERASED BLOCKS IN NON-VOLATILE MEMORY SYSTEMS," filed October 28, 2002, co-pending U.S. Patent Application No. 10/281,631 (Atty. Docket No. SANDP028/SDK0371.000US) entitled "METHOD AND APPARATUS FOR SPLITTING A LOGICAL BLOCK," filed October 28, 2002, co-pending U.S. Patent Application No. 10/281,855 (Atty. Docket No. SANDP029/DSK0410.000US) entitled "METHOD AND
APPARATUS FOR GROUPING PAGES WITHIN A BLOCK," filed October 28, 2002, and co- pending U.S. Patent Application No. 10/281,762 (Atty. Docket No.
SANDP030/SDK0416.000US) entitled "METHOD AND APPARATUS FOR RESOLVING PHYSICAL BLOCKS ASSOCIATED WITH A COMMON LOGICAL BLOCK," filed October 28, 2002, which are each incorporated herein by reference in their entireties.
BACKGROUND OF THE INVENTION
1. Field of Invention
The present invention relates generally to mass digital data storage systems. More particularly, the present invention relates to systems and methods for allowing multiple pages of a non-volatile memory system to be accessed substantially simultaneously in an efficient manner.
2. Description of the Related Art
The use of non- volatile memory systems such as flash memory storage systems is increasing due to the compact physical size of such memory systems, and the ability for nonvolatile memory to be repetitively reprogrammed. The compact physical size of flash memory storage systems facilitates the use of such storage systems in devices which are becoming increasingly prevalent. Devices which use flash memory storage systems include, but are not limited to, digital cameras, digital camcorders, digital music players, handheld personal computers, and global positioning devices. The ability to repetitively reprogram non-volatile memory included in flash memory storage systems enables flash memory storage systems to be used and reused.
In general, flash memory storage systems may include flash memory cards and flash memory chip sets. Flash memory chip sets generally include flash memory components and a controller component. Typically, a flash memory chip set may be arranged to be assembled into an embedded system. The manufacturers of such assemblies or host systems typically acquire flash memory in component-form, as well as other components, then assemble the flash memory and the other components into a host system.
Processes of reading data from, erasing data in, and write data into flash memory may be relatively time-consuming, particularly when the volume of data is relatively high. Specifically, access times associated with accessing pages of flash memory in order to perform a read operation, an erase operation, or a write operation may prove to be relatively significant when pages are repeatedly or substantially continuously accessed. By way of example, each time a page within the flash memory is accessed in order to enable data to be written to the page, an access time may be between approximately 250 microseconds (μs) for a binary flash memory and approximately one millisecond (ms) for a multi-level cell (MLC) flash memory. When many pages are to be written to, the total access time associated with writing data into the many pages may be high enough to significantly affect the performance of the overall flash memory system. Therefore, what is needed is a method for reducing the total access times associated with reading, erasing, or writing processes in non-volatile memory systems. That is, what is needed is a process and a system which improves the performance of a non- volatile memory system substantially by reducing the effective access time associated with reading, erasing or writing data in pages of a non- volatile memory.
SUMMARY OF THE INVENTION
The present invention relates to a system and a method for facilitating multi-page or multi-block operations within a non- volatile memory system. According to one aspect of the present invention, a method for performing a multi-page command includes obtaining a first page number of a first convention that identifies a first page associated with a non-volatile memory, and mapping the first page number to a second page number of a second convention. Like the first page number, the second page number also identifies the first page. Mapping the first page number to the second page number includes identifying a total number of districts associated with the non-volatile memory and a total number of pages associated with each block of a total number of blocks. Finally, the first page is accessed using the second page number and the multi-page command. In one embodiment, the method includes obtaining a third page number of the first convention that identifies a second page, mapping the third page number to a fourth page number of the second convention that also identifies the second page, and accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously. In such an embodiment, accessing the first page and accessing the second page may include one of writing data to the first page and the second page and erasing data from the first page and the second page.
For multiple page write processes, several pages in different districts may be written to substantially at once. Grouping the multiple pages such that one page in each district of a flash memory may be written to substantially at once allows the amount of time associated with overall read and write processes to effectively be reduced. By effectively laying out memory such that when a user attempts to write data to pages, the user is able to specify page numbers of a user convention which are effectively contiguous, access to the memory by the user may occur efficiently. Converting or otherwise mapping page numbers of a user convention into actual page numbers allows multi-page commands to be executed. When conversions or mappings occur efficiently, the overall amount of time needed to complete a multi-page write process may be reduced, thereby increasing the performance of an overall system which includes flash memory. The command for a multi-page write operation is typically named as a "multi-block program" operation because a page from each of multiple blocks are written simultaneously with a single access time.
According to another aspect of the present invention, a method for organizing a plurality of districts within a non-volatile memory which include blocks that have pages includes assigning a first page number of a first convention to a first page associated with a first district, and assigning a second page number to a second page associated with a second district. The first page number is arranged to be converted to a first physical page number associated with the first page and the second page number is arranged to be converted to a second physical page number associated with the second page using information associated with a total number of districts included in the plurality of districts and a total number of pages included in the first district. In one embodiment, the information associated with the total number of districts included in the plurality of districts and the total number of pages included in the first districts is at least partially incorporated into a data structure, as for example a look-up table.
According to still another aspect of the present invention, a method for enabling memory elements, which are grouped into groups arranged into districts, to be accessed using a common command includes identifying the plurality of memory elements using identifiers of a first convention, and converting the identifiers of the first convention into identifiers of the second convention. The identifiers of the second convention correspond to actual positions of the memory elements within a non-volatile memory. Converting the identifiers of the first convention into identifiers of the second convention includes using information relating to a total number of districts, information relating to a total number of memory elements included in each group, and the first identifier. Finally, the method includes accessing the plurality of memory elements using the common command.
In one embodiment, converting the identifiers of the first convention into identifiers of the second convention using the information relating to the total number of districts, the information relating to a total number of memory elements included in each group, and the first identifier includes indexing into a data structure which includes information relating the identifiers of the second convention. In such an embodiment, the data structure may be a look-up table. In another embodiment, the groups may be blocks and the memory elements may be physical pages.
These and other advantages of the present invention will become apparent upon reading the following detailed descriptions and studying the various figures of the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
The invention may best be understood by reference to the following description taken in conjunction with the accompanying drawings in which:
Fig. la is a diagrammatic representation of a general host system which includes a nonvolatile memory. Fig. lb is a diagrammatic representation a memory device, e.g., memory device 120 of
Fig. la.
Fig. lc is a diagrammatic representation of a host system which includes an embedded non-volatile memory.
Fig. 2a is a diagrammatic representation of blocks within a non- volatile memory in accordance with an embodiment of the present invention.
Fig. 2b is a diagrammatic representation of blocks within a non-volatile memory, e.g., blocks 202 of Fig. 2a, which are grouped into districts in accordance with an embodiment of the present invention.
Fig. 3a is a diagrammatic representation of districts, e.g., districts 212 of Fig. 2b, within a non- volatile memory component in accordance with an embodiment of the present invention.
Fig. 3b is a diagrammatic representation of pages within a non- volatile memory component which are grouped as a multi-page section in accordance with an embodiment of the present invention.
Fig. 4 is a diagrammatic representation of districts within a non-volatile memory in which pages have been assigned converted page numbers in accordance with an embodiment of the present invention. Fig. 5 is a diagrammatic representation of a mapping which maps converted page numbers associated with blocks in a non-volatile memory into actual physical page numbers in accordance with an embodiment of the present invention.
Fig. 6 is a diagrammatic representation of plurality of blocks with converted page numbers which are grouped into districts and units in accordance with an embodiment of the present invention.
Fig. 7 is a diagrammatic representation of a look-up table which may be used to facilitate a multi-page access or program operation in accordance with an embodiment of the present invention. Fig. 8 is a process flow diagram which illustrates the steps associated with one process of performing a multi-page write operation within a non-volatile memory system such as system in accordance with an embodiment of the present invention.
Fig. 9 is a process flow diagram which illustrates the steps associated with a multi-page write process which involves the use of a look-up table in accordance with an embodiment of the present invention.
Fig. 10 is a process flow diagram which illustrates the steps associated with one process of performing a read operation within a non- volatile memory system such as system in accordance with an embodiment of the present invention.
Fig. 11 is a process flow diagram which illustrates the steps associated with a read process which involves the use of a look-up table in accordance with an embodiment of the present invention.
Fig. 12 is a diagrammatic block diagram representation of a system architecture in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF THE EMBODIMENTS Reducing the amount of overhead that is needed to read, erase, or write data in a nonvolatile memory such as a NAND flash memory enables the performance of an overall system which includes the non-volatile memory to be improved. Typically, a single page in a nonvolatile memory system is accessed at any given time, e.g., during one access time to a nonvolatile memory. As an access time to write a page may range from approximately 250 microseconds (μs) for a binary flash memory to more than approximately one millisecond (ms) for a multi-level cell (MLC) flash memory, multiple write processes may be relatively time- consuming and, hence, adversely affect the performance of the overall non- volatile memory system.
In order to effectively reduce the amount of time needed to perform an operation on a non- volatile memory such as a write operation, i.e., in order to increase the write speed within an overall system, multiple pages may be written at any one time. That is, a multi-page write operation may be implemented which enables more than one page to be written substantially during a single access time. Generally, enabling multi-page programming such that multiple pages may be programmed, e.g., written, or read or erased, together reduces the amount of time associated with programming processes. For instance, when data is written into four pages substantially at the same time in an MLC flash memory, the overall amount of time used by a write process may be reduced from more than approximately four ms to approximately one ms. As a result, write operations may occur more efficiently.
Flash memory systems or, more generally, non-volatile memory devices which may benefit from the use of multi-page commands to read, erase, and write data into pages or blocks generally include flash memory cards and chip sets. Typically, flash memory systems are used in conjunction with a host system such that the host system may write data to or read data from the flash memory systems. However, some flash memory systems include embedded flash memory and software which executes on a host to substantially act as a controller for the embedded flash memory, as will be discussed below with respect to Fig. lc. Referring to Fig. la, a general host system which includes a non-volatile memory device, e.g., a CompactFlash memory card, will be described. A host or computer system 100 generally includes a system bus 104 which allows a microprocessor 108, a random access memory (RAM) 112, and input/output circuits 116 to communicate. It should be appreciated that host system 100 may generally include other components, e.g., display devices and networking device, which are not shown for purposes of illustration.
In general, host system 100 may be capable of capturing information including, but not limited to, still image information, audio information, and video image information. Such information may be captured in real-time, and may be transmitted to host system 100 in a wireless manner. While host system 100 may be substantially any system, host system 100 is typically a system such as a digital camera, a video camera, a cellular communications device, an audio player, or a video player. It should be appreciated, however, that host system 100 may generally be substantially any system which stores data or information, and retrieves data or information.
Host system 100 may also be a system which either only captures data, or only retrieves data. That is, host system 100 may be, in one embodiment, a dedicated system which stores data, or host system 100 may be a dedicated system which reads data. By way of example, host system 100 may be a memory writer which is arranged only to write or store data. Alternatively, host system 100 may be a device such as an MP3 player which is typically arranged to read or retrieve data, and not to capture data. A non- volatile memory device 120 which, in one embodiment, is a removable nonvolatile memory device, is arranged to interface with bus 104 to store information. An optional interface block 130 may allow non- volatile memory device 120 to interface indirectly with bus 104. When present, input/output circuit block 116 serves to reduce loading on bus 104, as will be understood by those skilled in the art. Non-volatile memory device 120 includes non-volatile memory 124 and an optional memory control system 128. In one embodiment, non- volatile memory device 120 may be implemented on a single chip or a die. Alternatively, non- volatile memory device 120 may be implemented on a multi-chip module, or on multiple discrete components which may form a chip set and may be used together as non-volatile memory device 120. One embodiment of non-volatile memory device 120 will be described below in more detail with respect to Fig. lb. Non-volatile memory 124, e.g., flash memory such as NAND flash memory, is arranged to store data such that data may be accessed and read as needed. Data stored in non-volatile memory 124 may also be erased as appropriate, although it should be understood that some data in non- volatile memory 124 may not be erasable. The processes of storing data, reading data, and erasing data are generally controlled by memory control system 128 or, when memory control system 128 is not present, by software executed by microprocessor 108. The operation of non- volatile memory 124 may be managed such that the lifetime of non- volatile memory 124 is substantially maximized by essentially causing sections of non-volatile memory 124 to be worn out substantially equally.
Non- volatile memory device 120 has generally been described as including an optional memory control system 128, i.e., a controller. Often, non-volatile memory device 120 may include separate chips for non-volatile memory 124 and memory control system 128, i.e., controller, functions. By way of example, while non-volatile memory devices including, but not limited to, PC cards, CompactFlash cards, MultiMedia cards, and Secure Digital cards include controllers which may be implemented on a separate chip, other non-volatile memory devices may not include controllers that are implemented on a separate chip. In an embodiment in which non- volatile memory device 120 does not include separate memory and controller chips, the memory and controller functions may be integrated into a single chip, as will be appreciated by those skilled in the art. Alternatively, the functionality of memory control system 128 may be provided by microprocessor 108, as for example in an embodiment in which non-volatile memory device 120 does not include memory controller 128, as discussed above.
With reference to Fig. lb, non-volatile memory device 120 will be described in more detail in accordance with an embodiment of the present invention. As described above, nonvolatile memory device 120 includes non- volatile memory 124 and may include memory control system 128. In one embodiment, memory 124 and control system 128, or controller, may be primary components of non- volatile memory device 120, although when memory 124 is an embedded NAND device, for example, non- volatile memory device 120 may not include control system 128. Memory 124 may be an array of memory cells formed on a semiconductor substrate, wherein one or more bits of data are stored in the individual memory cells by storing one of two or more levels of charge on individual storage elements of the memory cells. A nonvolatile flash electrically erasable programmable read only memory (EEPROM) is one example of a common type of memory for such systems.
When present within non- volatile memory device 120, control system 128 communicates over a bus 15 to a host computer or other system that is using the memory system to store data. Bus 15 is generally a part of bus 104 of Fig. la. Control system 128 also controls operation of memory 124, which may include a memory cell array 11, to write data provided by the host, read data requested by the host, and perform various housekeeping functions in operating memory 124. Control system 128 generally includes a general purpose microprocessor which has associated non-volatile software memory, various logic circuits, and the like. One or more state machines may be included for controlling the performance of specific routines.
Memory cell array 11 may, in one embodiment, be addressed by control system 128 or microprocessor 108 through address decoders 17. In such an embodiment, decoders 17 apply the correct voltages to gate and bit lines of array 11 in order to program data to, read data from, or erase a group of memory cells being addressed by the control system 128. Additional circuits 19 may include programming drivers that control voltages applied to elements of the array that depend upon the data being programmed into an addressed group of cells. Circuits 19 may also include sense amplifiers and other circuits necessary to read data from an addressed group of memory cells. Data to be programmed into array 11, or data recently read from array 11, may be stored in a buffer memory 21 that is associated with control system 128, although data may instead be stored in other buffer memories (not shown). Control system 128 may also contain various registers for temporarily storing command and status data, and the like. Array 11 is often divided into a large number of BLOCKS 0 - N memory cells. As is common for flash EEPROM systems, the block may be the smallest unit of erase. That is, each block may be arranged to contain the minimum number of memory cells that are to be erased together. Each block is typically divided into a number of pages. As will be appreciated by those skilled in the art, a page may be considered to be the smallest unit of programming. That is, a basic programming operation may write data into or read data from a minimum of one page of memory cells. One or more sectors of data may be stored within each page. As shown in Fig. lb, one sector includes user data and overhead data. Overhead data typically includes an error correction code (ECC) that has been calculated from the user data of the sector. A portion 23 of the control system 15 calculates the ECC when data is being programmed into array 11, and also checks the ECC when data is being read from array 11. Alternatively, the ECCs are stored in different pages, or different blocks, than the user data to which they pertain. A sector of user data is typically 512 bytes, corresponding to the size of a sector in magnetic disk drives. Overhead data is typically an additional 16 bytes, although it should be appreciated that overhead data may generally include any number of bytes. One sector of data is most commonly included in each page, but two or more sectors may instead form a page. Any number of pages may generally form a block. By way of example, a block may be formed from eight pages up to 512, 1024 or more pages. The number of blocks is often chosen to provide a desired data storage capacity for the memory system. Array 11 is typically divided into a few sub-arrays (not shown), each of which contains a proportion of the blocks, which operate somewhat independently of each other in order to increase the degree of parallelism in the execution of various memory operations. An example of the use of multiple sub-arrays is described in U.S. Patent No. 5,890,192, which is incorporated herein by reference in its entirety. In one embodiment, non-volatile memory is embedded into a system, e.g., a host system. Fig. lc is a diagrammatic representation of a host system which includes an embedded nonvolatile memory. A host or computer system 150 generally includes a system bus 154 which allows a microprocessor 158, a RAM 162, and input/output circuits 166, among other components (not shown) of host system 150, to communicate.
A non- volatile memory 174, e.g., a flash memory, allows information to be stored within host system 150. An interface 180 may be provided between non- volatile memory 174 and bus 154 to enable information to be read from and written to non-volatile memory 174. Non- volatile memory 174 may be managed by microprocessor 158 which effectively executes either or both software and firmware which is arranged to control non-volatile memory 174. That is, microprocessor 158 may run code devices (not shown), i.e., software code devices or firmware code devices, which allow non- volatile memory 174 to be controlled. Such code devices, which may be a flash memory packaged with CPU inside microprocessor 158, a separate flash ROM, or inside non-volatile memory 174, which will be described below, may enable physical blocks in non- volatile memory 174 to be addressed, and may enable information to be stored into, read from, and erased from the physical blocks.
In general, when a user writes data, the user effectively writes data to a media, as for example a non-volatile memory system such as a flash memory card or a system which includes a flash memory embedded therein. As will be appreciated by those skilled in the art, the user may specify blocks or even pages into which the data is to be written. A non-volatile memory such as non- volatile memory 124 of Fig. la or non-volatile memory 174 of Fig. lc, is typically divided into blocks, as mentioned above. Fig. 2a is a diagrammatic representation of blocks within a non-volatile memory in accordance with an embodiment of the present invention. A non-volatile memory may be divided into physical blocks '0' to 'N' 202, which may each be associated with a logical block (not shown). In the embodiment as shown, blocks 202 each include approximately thirty-two pages, although it should be appreciated that blocks 202 may generally include any number of pages, e.g., sixty-four pages. The number of blocks 202, as well as the number of pages included in a block 202, may generally depend upon the size of a nonvolatile memory. Typically, pages within blocks 202 are substantially sequential. That is, as shown, block
'0' 202a, which may be a first block within a non-volatile memory, includes pages 0 through 31. The next block within the non- volatile memory is generally block ' 1 ' 202b, which includes pages 32-63. Blocks 202 within a non- volatile memory are generally sequential, and pages within blocks 202 are generally sequential. Blocks 202 may be grouped into districts, as shown in Fig. 2b. The number of districts
212 into which blocks 202 may be grouped is dependent upon a number of pages which are to be accessed at one time for a read process, an erase process, or a write process and, hence, may vary widely. For example, the number of districts into which blocks 202 may be grouped may range from approximately two districts when approximately two pages are to be accessed substantially simultaneously to approximately thirty-two districts when approximately thirty-two pages are to be accessed substantially simultaneously.
Blocks 202 are grouped into four districts 212. Hence, every four blocks 212 are grouped into a particular district. 212. By way of example, block '0' 202a and block '4' 202e are included in district '0' 212a, while block ' 1 ' 202b, block '5' 202h, and block 'N-2' 202k are included in district ' 1 ' 212b. More generally, blocks 202 that have block numbers which are a multiple of four may be included in district '0' 212a, blocks 202 with block numbers that are one higher than a multiple of four may be included in district ' 1 ' 212b, blocks 202 with block numbers that are two higher than a multiple of four may be included in district '2' 212c, and blocks 202 with block numbers that are one less than a multiple of four may be included in district '3' 212d.
Fig. 3 a is a diagrammatic representation of districts, e.g., districts 212 of Fig. 2b, within a non-volatile memory component in accordance with an embodiment of the present invention. As shown, physical blocks 202 with block numbers which are a multiple of four are effectively aligned within district '0' 212a, while blocks 202 with block numbers which are one more than a multiple of four are effectively aligned within district ' 1 ' 212b, etc. It should be appreciated that districts 212 may generally include any number of blocks 202. Typically, the number of blocks 202 included in each district 212 is dependent upon factors which include, but are not limited to, the overall size of the non-volatile memory component which is divided into blocks 202, the number of districts 212, and the number of pages included in each block 202. A single page in each district 212 may generally be accessed at substantially the same time, e.g., as a multi -page section, such that a page in each district 212 may be erased or written to in a single access time. That is, physical pages 302 with the same page offset relative to the beginning of their respective blocks within districts 212 may be accessed as a unit 304 using a multi-block access command such as a multi-block or multi-page program command, as shown in Fig. 3b. In order to enable a multi-page write to occur such that multiple pages, e.g., multiple contiguous pages, are all written to substantially at once, a page associated with each district 212 may be accessed in a single access time. By way of example, page ' 12' 302a of district '0' 212a, page '44' 302b of district ' 1 ' 212b, page '76' 302c of district '2' 212c, and page '108' 302d of district '3' 212d may be written using substantially a single multi-block program command.
In general, the number of pages which may effectively be accessed using a multi-block command may depend upon the number of districts 212 into which blocks 202 have been grouped. For instance, if there are four districts 212, then four pages which are each in different districts 212 may be grouped into a multi-page section that is accessed at substantially the same time. Alternatively, when there are eight districts, then one page associated with each district may be accessed using a multi-block or multi-page command such that eight pages may be accessed at substantially the same time. As previously mentioned, by accessing multiple pages at one time, the amount of time associated with processes such as read, erase, and write operations may be reduced, thereby increasing the performance of an overall non-volatile memory system or flash memory system.
During a multi-page write command when several pages are written at once, access to substantially contiguous pages in different districts of memory is typically desired. Since pages to be written are written into different districts and each district typically has its own data cache, the multiple pages of user data may be transferred to the data cache of multiple districts. The multiple pages of user data may then be programmed into the non-volatile memory simultaneously in a single access time. In order to facilitate programming operations for a user, i.e. , an individual who wishes to access physical pages within a non- volatile memory of a non- volatile memory system, page numbers associated with physical pages such as those shown in Fig. 3b may substantially be converted into user or converted page numbers. The conversion of page numbers may be such that page numbers are assigned in ascending numerical order across districts. Fig. 4 is a diagrammatic representation of districts within a non-volatile memory in which pages have been assigned converted page numbers in accordance with an embodiment of the present invention. Districts 412 are arranged such that district '0' 412a includes blocks 402 which have block numbers 420 that are multiples of the total number of districts 412, e.g., multiples of four. Similarly, district ' 1 ' 412b includes blocks 402 which have block numbers 420 that are one more than multiples of the total number of districts 412, district '2' 412c includes blocks 402 which have block numbers 420 that are two more than multiples of the total number of districts 412,
π and district '3' 412d includes blocks 402 which have block numbers 420 that are three more than multiples of the total number of districts 412.
Blocks 402 within districts 412 may be organized into units which have unit numbers 430. Unit numbers 430 effectively identify locations of blocks 402 within districts 412. For example, unit number '0' 430a identifies the first block 402 within each district 412.
Specifically, block 402a of district '0' 412a, block 402b of district ' 1' 412b, block 402c of district '2' 412c, and block 402d of district '3' 412d are each associated with unit number '0' 430a.
While actual pages included in blocks 402 are physical pages with physical page numbers, as will be discussed below with respect to Fig. 5, the use of user or converted page numbers enables the user to more readily to specify pages that he or she wishes to access within an overall system which supports access to more than one page during a single access time. Typically, when pages are accessed in a multi-page section, the accessed pages are associated with the same unit number 430. By way of example, when a pages in unit number '0' 430a may be accessed simultaneously using a multi-page access command. As previously mentioned, unit number '0' 430a includes one block 420 of each district 412. Hence, a page from each of blocks 420a-d maybe accessed as a part of a multi-page section within unit number '0' 430a.
When a user specifies converted page numbers which he wishes to access, the converted page numbers are generally converted or otherwise mapped into actual page numbers which may be used by controller firmware or software to access the appropriate pages. Fig. 5 is a diagrammatic representation of a mapping which maps converted page numbers associated with blocks in a non-volatile memory into actual physical page numbers in accordance with an embodiment of the present invention. When a multi-page section 530 is to be erased or written to using a single access time, a page with converted page numbers 504 from one block 502 in each district 412 is generally included in section 530. By way of example, controller firmware or software will typically effectively access pages with converted page numbers 504 when a multi- page section 530 is to be accessed during a single access time.
Multi-page section 530, which includes pages with converted page numbers 504, may effectively be mapped into multi-page section 530' which include pages with actual physical page numbers 504' which correspond to pages with converted page numbers 504. Specifically, when a user specifies pages with converted page numbers 504 which are to be accessed for read, erase, or write purposes, controller firmware or software typically determines which pages with actual page numbers 504' correspond to pages with converted page numbers 504. By way of example, when multi-page section 530 includes pages with converted page numbers 504 which are converted page numbers '8',' '9',' '10',' and '11 ',' controller firmware or software may determined that multi-section 530 corresponds to multi-page section 530' which includes pages with actual physical page numbers 504' which are actually physical page numbers '2,' '34,' '66,' and '98,' respectively. In other words, converted page number '8" is mapped to actual physical page number '2,' converted page number '9" is mapped to actual physical page number '34,' converted page number ' 10" is mapped to actual physical page number '66,' and converted page number '11" is mapped to actual physical page number '98.'
In order to map converted page numbers into actual physical page numbers, or, more generally, to map page numbers of a first convention into page numbers of a second convention, a mathematical algorithm based on converted page numbers may be used to determine the actual physical page numbers. Such an algorithm may, in one embodiment, include the use of a look- up table, as will be discussed with reference to Fig. 7. In general, an algorithm or calculation which enables actual physical page numbers to be determined given converted page numbers includes determining an associated district number, an associated unit number, and a location or offset within a block that includes a page with the converted page number.
With reference, to Fig. 6, formulas which may be used to determine an actual page number using a converted page number will be described in accordance with an embodiment of the present invention. A converted page number, e.g., a converted page number associated with a page such as page 604a of block 602a, may generally be denoted as 'PV As previously discussed, each block 602 within a non- volatile memory may be associated with both a district 622, denoted as 'Z' and a unit 630, denoted as 'U.' For example, block 602f, which includes pages 616, may be included in district ' 1 ' 622b and unit ' 1 ' 630b, while block 602d, which includes pages 612, may be included in district '3' 622d and unit '0' 630a.
As shown, a non- volatile memory may generally include any number of districts 622 and units 630. In addition, the size of blocks 602, i.e., the number of pages in a block 602, may vary widely. For ease of discussion, a total number of districts may be expressed as 'T D' and a total number of units may be expressed as 'T_U,' while the total number of pages in a block 602 may be expressed as 'T_P.' Typically, the total number of districts 'T_D,' the total number of units 'T_U,' while the total number of pages 'T_P' in block 602 may be considered to be parameters associated with a non-volatile memory.
In general, the converted page number of a particular page within a non- volatile memory, as for example page 616b which has an associated converted page number denoted as 'X' may be identified as follows:
X = (U * T_D * T_P) + (S * T_D) + Z
where 'S' denotes an offset 650 or the number of pages between a beginning of the block which contains the page which is associated with converted page number 'X' and the location of converted page number 'X.' The value of 'S' may range from approximately 0 to approximately 'T_P - 1,' while the value of 'Z' may be approximately 'T D - 1 '. That is, substantially any converted page number may be expressed as a function of a district 622, a unit 630, an offset 650, a total number of districts 'T D, ' a total number of units 'T_U,' and total number of pages in a block 602 'T_P.' For an embodiment in which the total number of districts 'T_D' is four, and a total number of pages in each block 602 is thirty-two, converted page number 'X' may be identified as follows:
X = (U * 4 * 32) + (S * 4) + Z
It should be understood that although converted page number 'X' is shown as being a converted page number located in block 602f, converted page number 'X' may generally be located in substantially any block.
When converted page number 'X' is known, a district 'Z' 622, a unit 'U' 630, and an offset 'S' 650 which correspond to converted page number 'X' may be determined. It should be appreciated that the district 'Z' 622, unit 'U' 630, and offset 'S' 650 which correspond to converted page number 'X' also correspond to an actual physical page number which is mapped to converted page number 'X.' In other words, the district 'Z' 622, unit 'U' 630, and offset 'S' 650 is substantially the same for a converted page number as it is for the corresponding actual physical page number. As such, once converted page number 'X' is known and the district 'Z' 622, unit 'U' 630, and offset 'S' 650 which are associated with converted page number 'X' is known, then an actual page number 'P_N' may be determined.
Given converted page number 'X,' district 'Z' 622 may be determined to be the remainder when 'X' is divided by the total number of districts 'T D,' as determined using a remainder operator such as a "MOD" operator. That is, district 'Z' 622 may be expressed as a function of converted page number 'X' as follows:
Z = X % T_D
where '%' is a remainder operator as will be appreciated by those skilled in the art. The unit 'U' 630 which corresponds to converted page number 'X' may be expressed as a function of converted page number 'X' as follows:
U = X / (T_D * T_P) In general, when unit 'U' 630 is calculated as being a fractional value, the actual "value" for unit 'U' 630 may be determined by substantially rounding down to the nearest integer value. For example, if the total number of districts 'T_D' is four and the total number of pages 'T_P' is thirty-two, if converted page number 'X' is converted page number '3,' then unit 'U' 630 is typically determined to be unit '0' 630a.
The offset 'S' associated with converted page number 'X' may also be determined as a function of converted page number 'X' using the following expression:
S = (X / T_D) % T_P
When converted page number 'X' is converted page number '3,' the total number of districts 'T D' is four, and the total number of pages T_P in a block 602 is thirty-two, than offset 'S' 650 may be calculated to be zero, i.e., converted page number '3' is the first page in its associated block. Similarly, when converted page number 'X' is converted page number '8,' the total number of districts 'T_D' is four, and the total number of pages 'T_P' in a block 602 is thirty- two, than offset 'S' 650 may be calculated to be two, i.e., converted page number '8' is the third page in its associated block.
Referring to Fig. 6, an actual physical page number 'P N' which coπesponds to converted page number 'X' may be expressed as a function of parameters and converted page number 'X' and, hence, district 'Z' 622, unit 'U' 630, and offset 'S' 650 as follows:
P_N = (U * T_D * T_P) + (Z * T_P) + S
or, simplified, as:
P_N = S + (((U * T_D) + Z) * T_B)
In one embodiment, the actual physical page number 'P N' may be expressed substantially only as a function of converted page number 'X' and parameters, namely the total number of districts 'T D,' and the total number of pages 'T_P' in a block 602. That is, by substantially eliminating 'U' by substituting 'Z' and 'S,' the actual physical page number 'P_N' may also be calculated as:
P_N = X + ((X % T_D) * (T_P -1 )) - ((X / T_D) % T_P) * (T_D - 1 ) Using the above expression, calculations for district 'Z' 622, unit 'U' 630, and offset 'S' 650 may effectively be eliminated.
Referring back to Fig. 5, if a non-volatile memory includes four districts 412 and each block 502 includes thirty-two pages, when a user attempts to write to page 504c, i.e. when the converted page number is converted page number ' 10,' then district 'Z' may be calculated to be:
Z = X % T D = 10 % 4 = 2
and unit 'U' may be calculated to be:
U = X / (T_D * T_P) = 10 / (4 * 32) = 0
while offset 'S' may be calculated to be:
S = (X / T_D) % T_B = (10 / 4) % 32 = 2.5 % 32 = 2
That is, converted page number '10' 504c may be calculated to be located in district '2' 412c and unit '0,' at an offset of two pages, as shown in Fig. 5.
When Z = 2, U = 0, and S =2, then an actual physical page number 'P_N' may be determined as follows:
P_N = S + (U * T_D + Z) * T_P = 2 + (0 * 4 + 2) * 32 - 66
As such, converted page number '10' corresponds to actual physical page number '66.' Alternatively, the actual page number 'P_N' may also be calculated as follows:
P_N = X + ((X % T_D) * (T_P -1)) - ((X / T_D) % T_P) * (T_D - 1) = 10 + ((10 % 4) * (32 - 1)) - ((10 / 4) % 32) * (4 - 1) = 66
Although calculations involving the formulas discussed above with respect to Fig. 6 may be performed substantially any time a user issues a command to read or write pages in a nonvolatile memory such as a NAND flash memory, when the overhead associated with such calculations may be considered to be excessive, then the calculations may effectively be simplified through the use of data structures such as look-up tables. By way of example, although the overhead associated with performing calculations to identify the page number of the location of an actual physical page is generally not significant, when memory space permits the implementation of relatively small data structures stored within controller firmware or software, the calculations performed may be simplified, and the overhead may be further reduced. As a result, the performance of a multi-page write process may be further improved in many cases. It should be appreciated that when a look-up table is too large, e.g., occupies more than approximately 512 bytes, and is considered to occupy too much space in controller firmware or software, then calculations to convert converted page numbers into actual page numbers may be performed as discussed above with respect to Fig. 6 without using a look-up table. In other words, a determination of whether calculations should be performed in lieu of accessing a lookup table may generally be made based upon the anticipated size of a suitable look-up table.
A look-up table may be calculated and stored inside controller firmware or software such that when a mapping is to be performed to effectively convert a converted page number into an actual physical page number, the look-up table may be accessed to obtain mapping information. Fig. 7 is a diagrammatic representation of a look-up table which may be used to facilitate a multi- page access or program operation in accordance with an embodiment of the present invention. In general, the number of entries in a look-up table 750 may be dependent at least in part upon the number of pages in a unit of a non-volatile memory. By way of example, each entry may be arranged to occupy a byte, and the number of bytes associated with a table may be dependent on number of pages in a unit. By way of example, when a non- volatile memory includes blocks which each include thirty-two pages, and are grouped into four districts, then each unit may include four blocks. As such, the number of pages associated with each unit is 128, and the number of entries and, hence, bytes occupied by look-up table 750 may be approximately 128. The number of look-up table entries may effectively be expressed as:
Number Of Entries = T D * T P
For ease of discussion, look-up table 750 includes 128 entries which each correspond to pages within a first unit of blocks. In general, however, the number of entries may vary depending upon the number of districts T_D and, hence, the number of blocks in a unit, as well as the size of blocks T_P which are included in the units. Look-up table 750 may be populated or effectively coded such that entries for mapping converted page number '0' through the converted page number associated with the last page in the first unit, e.g. , converted page number ' 127,' are effectively represented in look-up table 750. In general, look-up table 750 may be populated using the following expression: Table_Entry_Value[P'(Z,S)] = (Z * (T_P - 1)) - (S * (T_D - 1)
where the Table_Entry_Value is the value stored in an entry in look-up table 750, the district 'Z' is the district in which the page associated with converted page number 'P" is located and 'S' is the offset at which the page associated with converted page number 'P' is located within a block that contains the page. The Table_Entry_Nalue may then be placed in a table location identified by the following expression:
Table_Entry_Location[P'] = P' % (T_D * T_P)
By way of example, within a system in which there are four districts and each block contains thirty-two pages, converted page number '4' ' is associated with district '0' at an offset of ' 1. ' Hence, the converted page number '4" may be calculated to be associated with an entry value of '-3' in look-up table 750. The entry value of '-3' may then be stored into a table entry location '4' 754.
An actual page number which corresponds to a converted page number 'P" may be determined using look-up table 750 as follows:
Actual_Page_Νumber = P' + TABLE[P' % (T_D * T_P)]
where TABLE[ ] is the value stored in a table entry that corresponds to converted page number 'P'.' Hence, the actual page number which corresponds to converted page number 'P" may also be determined using the following expression:
Actual_Page_Number = P' + (P' % T_D) * (T_P - 1) - ((P' / T_D) % T_P) * (T_D - 1)
As such, within a system in which there are four districts and each block contains thirty-two pages, converted page number '4" may be mapped to an actual page number '1.' Thus, in the event that converted page numbers '4' through '7' are to be written as a multi-page section within such a system, look-up table 750 or, more specifically, entries 754, 756, 758, and 760 of look-up table, may be used to determine that actual non-contiguous physical pages '1,' '33,' '65,' and '97,' respectively, are to be written as a multi-page section in one access time.
When look-up table 750, or substantially any similar data structure, is implemented, e.g., calculated and stored, within controller firmware or software, a calculation of an actual physical page number is effectively a relatively fast table look-up with minimal calculations. Therefore, multi-page access operations such as a multi-page write command may occur relatively efficiently.
With reference to Fig. 8, the steps associated with one process of performing a multi-page write operation within a non- volatile memory system such as system which includes a MLC flash memory will be described in accordance with an embodiment of the present invention. A process 800 of performing a multi-page write operation begins at step 804 in which a user provides data that is to be written into pages within a non-volatile memory using a user page convention, or converted page numbers. In one embodiment, the user may issue a series of data input commands as data is input into different districts, and controller firmware may issue a dummy program command such as a 1 IH dummy program command substantially in response to each data input command while data is still being input into different districts, as described in "512 Mbit NAND Flash Product Manual" Rev. 1.5, August 2001, available from SanDisk Corporation of Sunnyvale, California, which is incorporated herein by reference. Once the user provides the data that is to be written, an algorithm may be run or, more generally, calculations may be performed to effectively map the converted page numbers into actual physical page numbers in step 808. Suitable calculations that may be performed were previously discussed with reference to Fig. 6.
After mapping calculations are run, user pages or converted page numbers are mapped or otherwise converted into actual physical page numbers in step 812. Then, in step 816, the data to be written is written into actual physical pages of a non-volatile memory system or media using a multi-page program command or write process. In other words, a multi-page section of physical pages is written in approximately one access time. A multi-page program command man include a cache program command, e.g., a 15H cache program command, which causes physical programming to occur. Once the pages are written, the process of performing a multi-page write operation is completed.
In lieu of performing a plurality of calculations in order to map user or converted page numbers into actual physical page numbers, a look-up table may be used to facilitate the mapping of converted page numbers into actual physical page numbers, as discussed above with respect to Fig. 7. Fig. 9 is a process flow diagram which illustrates the steps associated with a multi-page write process which involves the use of a look-up table in accordance with an embodiment of the present invention. A process 900 of performing a multi -page write operation begins at step 904 in which a user provides data to be written using a user or converted page numbers. The converted page numbers are then used in step 908, e.g., by controller firmware or software, to determine actual physical page numbers which correspond to the converted page numbers through accessing a look-up table such as look-up table 750 of Fig. 7. Once a mapping between converted page numbers and their corresponding actual page numbers is determined, data is written into the actual pages using a multi-page or multi-block program command in step 912. After the data is written into actual pages, the process of writing data is completed.
As previously mentioned, in addition to program or write processes, multi-page or multi- block commands may be used to enable multiple pages or blocks to be erased. In general, read operations which occur to read pages which have been written to using multi-page or multi-block commands may vary. With reference to Fig. 10, the steps associated with one read process will be described in accordance with an embodiment of the present invention. A process 1000 of performing a read operation begins at step 1004 in which a user specifies pages within a nonvolatile memory using a user page convention, or converted page numbers, from which data is to be read. Once specifies the converted page numbers from which data is to be read, an algorithm may be run or, more generally, calculations may be performed to effectively map the converted page numbers into actual physical page numbers in step 1008. Suitable calculations that may be performed were discussed above, as for example with reference to Fig. 6.
After mapping calculations are run, user pages or converted page numbers are mapped or otherwise converted into actual physical page numbers in step 1012. Then, in step 1016, the data to be read is read from actual physical pages of a non- volatile memory system using a read command. Once the pages are read from, the process of performing a read operation is completed.
As was the case with performing multi-page write operations, a look-up table may be used to facilitate the mapping of converted page numbers into actual physical page numbers as a part of a read operation. Fig. 11 is a process flow diagram which illustrates the steps associated with a read process which involves the use of a look-up table in accordance with an embodiment of the present invention. A process 1100 of performing a read operation begins at step 1004 in which a user provides user or converted page numbers which contain data the user wishes to read or otherwise access. In step 1008, actual physical page numbers which correspond to the converted page numbers may be determined by accessing a look-up table such as look-up table 750 of Fig. 7. After actual page numbers which correspond to converted page numbers are determined, data is obtained or read from the actual pages in step 1012. Once the data is read, the process of reading data is completed. In general, the functionality associated with enabling multi-page program commands to be executed and enabling converted page numbers to be mapped into actual page numbers is provided in software, e.g., as program code devices, or as firmware to a host system. One embodiment of a suitable system architecture associated with the software or firmware provided to a host system in accordance with an embodiment of the present invention is shown in Fig. 12. A system architecture 700 generally includes a variety of modules which may include, but are not limited to, an application interface module 704, a system manager module 708, a data manager module 712, a data integrity manager 716, and a device manager and interface module 720. In general, system architecture 700 may be implemented using software code devices or firmware which may be accessed by a processor, e.g., processor 108 of Fig. la.
In general, application interface module 704 may be arranged to communicate with the host, operating system or the user directly. Application interface module 704 is also in communication with system manager module 708 and data manager module 712. When the user wants to read, write or format a flash memory, the user sends requests to the operating system, the requests are passed to the application interface module 704. Application interface module 704 directs the requests to system manager module 708 or data manager module 712 depending on the requests.
System manager module 708 includes a system initialization submodule 724, an erase count block management submodule 726, and a power management block submodule 730. System initialization submodule 724 is generally arranged to enable an initialization request to be processed, and typically communicates with erase count block management submodule 726. In addition to being in communication with application interface module 704, system manager module 708 is also in communication with data manager module 712, as well as device manager and interface module 720. Data manager module 712, which communicates with both system manager module 708 and application interface module 704, may include functionality to provide page or block mapping. Data manager module 712 may also include functionality associated with operating system and file system interface layers.
Device manager and interface module 720, which is in communication with system manager module 708, data manager 712, and data integrity manager 716, typically provides a flash memory interface, and includes functionality associated with hardware abstractions, e.g., an I/O interface. Data integrity manager module 716 provides ECC handling, among other functions.
Although only a few embodiments of the present invention have been described, it should be understood that the present invention may be embodied in many other specific forms without departing from the spirit or the scope of the present invention. By way of example, a multi-page operation such as a multi-page write or a multi-block erase operation which maps converted page numbers into actual page numbers has generally been described as being suitable for use with respect to a MLC NAND flash memory. It should be appreciated, however, that the techniques and methods described may be implemented with respect to substantially any suitable nonvolatile memory, e.g., a binary NAND flash memory, in order to increase the efficiency with read, write, and erase processes may occur. A look-up table may generally include substantially any number of entries. For instance, when number of pages in a unit are small and there are few units included in a non- volatile memory component, a look-up table may include all values such that essentially minimum calculations need to be done to determine actual page numbers which correspond to converted page numbers.
The size of a flash memory and the size of blocks within the flash memory may be widely varied. While the size of blocks has generally been described as including approximately thirty- two pages, blocks may include any number of pages or, more generally, any number of elements which make up a block. For instance, a block may include approximately sixty-four elements or pages. As a result, the number of blocks within a system may vary. Within a 512 Mb binary NAND flash memory, if a block includes approximately thirty-two pages which each contain approximately 512 bytes, a total of 4096 physical blocks are present in the flash memory. Alternatively, within a 512 Mb MLC NAND flash memory, if each physical block includes approximately sixty-four pages which each contain approximately 512 bytes, a total of 2048 physical blocks may be present in the flash memory. In general, the size of pages may also vary. The steps associated with the various methods of the present invention may be widely varied. In general, steps may be added, removed, reordered, and altered.
Therefore, the present examples are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope of the appended claims.

Claims

WHAT IS CLAIMED IS:
1. A method for performing a multi-page command, the method comprising: obtaining a first page number, the first page number being of a first convention, the first page number being arranged to identify a first page associated with a non-volatile memory; mapping the first page number to a second page number, the second page number being of a second convention, the second page number being arranged to identify the first page, wherein mapping the first page number to the second page number includes identifying a total number of districts associated with the non-volatile memory and a total number of pages associated with each block of a total number of blocks; and accessing the first page using the second page number and the multi-page command.
2. The method of claim 1 further including: obtaining a third page number, the third page number being of the first convention, the third page number being arranged to identify a second page associated with a non-volatile memory; mapping the third page number to a fourth page number, the fourth page number being of the second convention, the fourth page number being arranged to identify the second page; and accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
3. The method of claim 2 wherein accessing the first page and accessing the second page include writing data to the first page and the second page.
4. The method of claim 2 wherein the first page is included in a first district and the second page is included in a second district.
5. The method of claim 1 wherein mapping the first page number to the second page number further includes identifying a district in which the first page is located.
6. The method of claim 5 wherein mapping the first page number to the second page number still further includes identifying a block in which the first page is located, and determining an offset of the first page from a beginning of the block.
7. The method of claim 1 wherein the non- volatile memory is a NAND flash memory.
8. The method of claim 7 wherein the NAND flash memory is an MLC NAND flash memory.
9. A method for performing a multi-page command, the method comprising: obtaining a first page number, the first page number being of a first convention, the first page number being arranged to identify a first page associated with a non-volatile memory; mapping the first page number to a second page number, the second page number being of a second convention, the second page number being arranged to identify the first page, wherein mapping the first page number to the second page number includes indexing into a data structure using a first value, the first value being determined using the first page number, the data structure being arranged to contain mapping information; and accessing the first page using the second page number and the multi-page command.
10. The method of claim 9 further including: obtaining a third page number, the third page number being of the first convention, the third page number being arranged to identify a second page associated with the non-volatile memory; mapping the third page number to a fourth page number, the fourth page number being of the second convention, the fourth page number being arranged to identify the second page, wherein mapping the third page number to the fourth page number includes indexing into the data structure using a second value, the second value being determined using the third page number; and accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
11. The method of claim 10 wherein accessing the first page and accessing the second page include writing data to the first page and the second page.
12. The method of claim 10 wherein the first page is included in a first district and the second page is included in a second district.
13. The method of claim 9 wherein the non- volatile memory is a NAND flash memory.
14. The method of claim 13 wherein the NAND flash memory is an MLC NAND flash memory.
15. A method for organizing a plurality of districts within a non-volatile memory, the plurality of districts each including at least one block, the at least one block in each district of the plurality of districts including a plurality of pages, the method comprising: assigning a first page number to a first page associated with a first district of the plurality of districts, the first page number being of a first convention; and assigning a second page number to a second page associated with a second district of the plurality of districts, wherein the first page number is arranged to be converted to a first physical page number associated with the first page and the second page number is arranged to be converted to a second physical page number associated with the second page using information associated with a total number of districts included in the plurality of districts and a total number of pages included in the first district.
16. The method of claim 15 wherein the information associated with the total number of districts included in the plurality of districts and the total number of pages included in the first districts is at least partially incorporated into a data structure.
17. The method of claim 15 wherein the second page number is substantially sequential with respect to the first page number.
18. The method of claim 15 wherein the first page and the second page are arranged to be accessed using a single multi-page command.
19. The method of claim 18 wherein the single multi-page command is a multi-page write command arranged to write data into the first page and the second page using the first physical page number and the second physical page number.
20. A system comprising: a non-volatile memory, the non-volatile memory including a plurality of pages, the plurality of pages being arranged in a plurality of blocks, the plurality of blocks being arranged in a plurality of districts, the plurality of pages including a first page; code devices for obtaining a first page number, the first page number being of a first convention, the first page number being arranged to identify the first page; code devices for mapping the first page number to a second page number, the second page number being of a second convention, the second page number being arranged to identify the first page, wherein the code devices for mapping the first page number to the second page number include code devices for identifying a total number of the districts and a total number of the plurality of pages associated with each block of a total number of the blocks; code devices for accessing the first page using the second page number; and a memory for storing the code devices.
21. The system of claim 20 further including: code devices for obtaining a third page number, the third page number being of the first convention, the third page number being arranged to identify a second page of the plurality of pages; code devices for mapping the third page number to a fourth page number, the fourth page number being of the second convention, the fourth page number being arranged to identify the second page; and code devices for accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
22. The system of claim 21 wherein the code devices for accessing the first page and accessing the second page include code devices for writing data to the first page and the second.
23. The system of claim 21 wherein the first page is included in a first district and the second page is included in a second district.
24. The system of claim 20 wherein the code devices for mapping the first page number to the second page number further include code devices for identifying a district in which the first page is located.
25. The system of claim 24 wherein mapping the first page number to the second page number still further includes identifying a block in which the first page is located, and determining an offset of the first page from a beginning of the block.
26. The system of claim 20 wherein the non- volatile memory is an MLC NAND flash memory.
27. A system comprising: a non-volatile memory, the non-volatile memory including a first page; code devices for maintaining a data structure, the data structure being arranged to contain mapping information; code devices for obtaining a first page number, the first page number being of a first convention, the first page number being arranged to identify the first page; code devices for mapping the first page number to a second page number, the second page number being of a second convention, the second page number being arranged to identify the first page, wherein mapping the first page number to the second page number includes indexing into the data structure using a first value, the first value being determined using the first page number; code devices for accessing the first page using the second page number; and an area for storing the code devices and the data structure.
28. The system of claim 27 further including: code devices for obtaining a third page number, the third page number being of the first convention, the third page number being arranged to identify a second page included in the non-volatile memory; code devices for mapping the third page number to a fourth page number, the fourth page number being of the second convention, the fourth page number being arranged to identify the second page, wherein code devices for mapping the third page number to the fourth page number include code devices for indexing into the data structure using a second value, the second value being determined using the third page number; and code devices for accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
29. The system of claim 28 wherein the code devices for accessing the first page and accessing the second page include code devices for writing data to the first page and the second page.
30. The system of claim 28 wherein the first page is included in a first district and the second page is included in a second district.
31. The system of claim 27 wherein the non- volatile memory is an MLC NAND flash memory.
32. A system for organizing a plurality of districts within a non- volatile memory, the plurality of districts each including at least one block, the at least one block in each district of the plurality of districts including a plurality of pages, the system comprising: code devices for assigning a first page number to a first page associated with a first district of the plurality of districts, the first page number being of a first convention; code devices for assigning a second page number to a second page associated with a second district of the plurality of districts, wherein the first page number is arranged to be converted to a first physical page number associated with the first page and the second page number is arranged to be converted to a second physical page number associated with the second page using information associated with a total number of districts included in the plurality of districts and a total number of pages included in the first district; and a memory for storing the code devices.
33. The system of claim 32 further including code devices for causing the first page and the second page to be accessed using a single multi-page command.
34. A system for performing a multi-page command, the system comprising: means for obtaining a first page number, the first page number being of a first convention, the first page number being arranged to identify a first page associated with a nonvolatile memory; means for mapping the first page number to a second page number, the second page number being of a second convention, the second page number being arranged to identify the first page, wherein the means for mapping the first page number to the second page number include means for identifying a total number of districts associated with the non-volatile memory and a total number of pages associated with each block of a total number of blocks; and means for accessing the first page using the second page number.
35. The system of claim 34 further including: means for obtaining a third page number, the third page number being of the first convention, the third page number being arranged to identify a second page associated with a non-volatile memory; means for mapping the third page number to a fourth page number, the fourth page number being of the second convention, the fourth page number being arranged to identify the second page; and means for accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
36. The system of claim 34 wherein the non- volatile memory is an MLC NAND flash memory.
37. A system for performing a multi-page command, the system comprising: means for obtaining a first page number, the first page number being of a first convention, the first page number being arranged to identify a first page associated with a nonvolatile memory; means for mapping the first page number to a second page number, the second page number being of a second convention, the second page number being arranged to identify the first page, wherein the means for mapping the first page number to the second page number include means for indexing into a data structure using a first value, the first value being determined using the first page number, the data structure being arranged to contain mapping information; and means for accessing the first page using the second page number.
38. The system of claim 37 further including: means for obtaining a third page number, the third page number being of the first convention, the third page number being arranged to identify a second page associated with the non-volatile memory; means for mapping the third page number to a fourth page number, the fourth page number being of the second convention, the fourth page number being arranged to identify the second page, wherein the means for mapping the third page number to the fourth page number include means for indexing into the data structure using a second value, the second value being determined using the third page number; and means for accessing the first page using the second page number and accessing the second page using the fourth page number substantially simultaneously.
39. The system of claim 37 wherein the non-volatile memory is an MLC NAND flash memory.
40. A method for enabling a plurality of memory elements to be accessed using a common command, the plurality of memory elements being grouped into a plurality of groups within a non- volatile memory, the plurality of groups being arranged in a plurality of districts, the method comprising: identifying the plurality of memory elements using identifiers of a first convention; substantially converting the identifiers of the first convention into identifiers of the second convention, the identifiers of the second convention being arranged to correspond to actual positions of the plurality of memory elements within the non- volatile memory, wherein converting the identifiers of the first convention into identifiers of the second convention includes using information relating to a total number of districts included in the plurality of districts, information relating to a total number of memory elements included in each group of the plurality of groups, and the first identifier; and accessing the plurality of memory elements using the common command.
41. The method of claim 40 wherein a first identifier of the first convention which identifies a first memory element of the plurality of memory elements included in a first district of the plurality of districts is arranged to have a first value and a second identifier of the first convention which identifies a second memory element of the plurality of memory elements included in a second district of the plurality of districts is arranged to have a second value, wherein the second value is the first value incremented by a value of one.
42. The method of claim 41 wherein the first page is not directly physically contiguous with respect to the second page.
43. The method of claim 40 wherein accessing the plurality of memory elements using the common command includes one of writing data into the plurality of memory elements using substantially a single instance of the common command and erasing data from the plurality of memory elements using substantially the single instance of the common command.
44. The method of claim 40 wherein converting the identifiers of the first convention into identifiers of the second convention using the information relating to the total number of districts included in the plurality of districts, the information relating to a total number of memory elements included in each group of the plurality of groups, and the first identifier includes indexing into a data structure which includes information relating the identifiers of the second convention.
45. The method of claim 40 wherein converting the identifiers of the first convention into identifiers of the second convention using the information relating to the total number of districts included in the plurality of districts, the information relating to a total number of memory elements included in each group of the plurality of groups, and the first identifier includes: performing a calculation, the calculation being arranged to determine a second identifier of the second convention which corresponds to a first identifier of the first convention, wherein the calculation uses the information relating to the total number of districts included in the plurality of districts, the information relating to a total number of memory elements included in each group of the plurality of groups.
46. The method of claim 40 wherein the plurality of groups are a plurality of blocks, and the plurality of memory elements are a plurality of physical pages.
47. The method of claim 40 wherein the non- volatile memory is a NAND flash memory.
PCT/US2003/028195 2002-10-28 2003-09-10 Method and apparatus for performing multi-page write operations in a non-volatile memory system WO2004040454A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003268564A AU2003268564A1 (en) 2002-10-28 2003-09-10 Method and apparatus for performing multi-page write operations in a non-volatile memory system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US28180402A 2002-10-28 2002-10-28
US10/281,804 2002-10-28

Publications (2)

Publication Number Publication Date
WO2004040454A2 true WO2004040454A2 (en) 2004-05-13
WO2004040454A3 WO2004040454A3 (en) 2004-10-28

Family

ID=32228774

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/028195 WO2004040454A2 (en) 2002-10-28 2003-09-10 Method and apparatus for performing multi-page write operations in a non-volatile memory system

Country Status (4)

Country Link
CN (1) CN1703678A (en)
AU (1) AU2003268564A1 (en)
TW (1) TWI272481B (en)
WO (1) WO2004040454A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2880152A1 (en) * 2004-12-24 2006-06-30 Trusted Logic Sa File management method for e.g. chip card, involves listing file management information contiguous to records of file, utilizing information during file access operations, and updating information during file modification operations
EP1700220A1 (en) * 2005-01-07 2006-09-13 Hyperstone AG Method for the conversion of logical into real block addresses in flash memories
EP2211271A3 (en) * 2006-07-31 2011-04-27 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
US20130173874A1 (en) * 2011-12-30 2013-07-04 Steven Sprouse System and Method for Pre-interleaving Sequential Data

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4547028B2 (en) * 2005-08-03 2010-09-22 サンディスク コーポレイション Nonvolatile memory with block management
TWI390548B (en) * 2008-07-03 2013-03-21 Silicon Motion Inc Data storing methods and apparatus thereof
WO2010000206A1 (en) * 2008-07-03 2010-01-07 Silicon Motion, Inc. Data storing methods and apparatus thereof
US8065468B2 (en) 2008-07-03 2011-11-22 Silicon Motion, Inc. Data storing methods and apparatus thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572466A (en) * 1992-10-06 1996-11-05 Kabushiki Kaisha Toshiba Flash memory chips
WO2002046929A1 (en) * 2000-12-06 2002-06-13 Tdk Corporation Method of controlling flash memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572466A (en) * 1992-10-06 1996-11-05 Kabushiki Kaisha Toshiba Flash memory chips
WO2002046929A1 (en) * 2000-12-06 2002-06-13 Tdk Corporation Method of controlling flash memory

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2880152A1 (en) * 2004-12-24 2006-06-30 Trusted Logic Sa File management method for e.g. chip card, involves listing file management information contiguous to records of file, utilizing information during file access operations, and updating information during file modification operations
WO2006070112A1 (en) * 2004-12-24 2006-07-06 Trusted Logic Method and system for optimizing management of record files
EP1700220A1 (en) * 2005-01-07 2006-09-13 Hyperstone AG Method for the conversion of logical into real block addresses in flash memories
EP2211271A3 (en) * 2006-07-31 2011-04-27 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
US20130173874A1 (en) * 2011-12-30 2013-07-04 Steven Sprouse System and Method for Pre-interleaving Sequential Data
WO2013101739A1 (en) * 2011-12-30 2013-07-04 Sandisk Technologies Inc. System and method for pre-interleaving sequential data
US9329989B2 (en) 2011-12-30 2016-05-03 SanDisk Technologies, Inc. System and method for pre-interleaving sequential data

Also Published As

Publication number Publication date
WO2004040454A3 (en) 2004-10-28
AU2003268564A1 (en) 2004-05-25
CN1703678A (en) 2005-11-30
TWI272481B (en) 2007-02-01
AU2003268564A8 (en) 2004-05-25
TW200424846A (en) 2004-11-16

Similar Documents

Publication Publication Date Title
EP1561168B1 (en) Method and apparatus for splitting a logical block
KR100977899B1 (en) Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
EP1576478B1 (en) Method and apparatus for grouping pages within a block
US7188228B1 (en) Hybrid mapping implementation within a non-volatile memory system
US6973531B1 (en) Tracking the most frequently erased blocks in non-volatile memory systems
US7287118B2 (en) Maintaining an average erase count in a non-volatile storage system
US7032087B1 (en) Erase count differential table within a non-volatile memory system
US7096313B1 (en) Tracking the least frequently erased blocks in non-volatile memory systems
EP1559018B1 (en) Wear leveling in non-volatile storage systems
US7526600B2 (en) Data management device and method for flash memory
TW200535608A (en) Adaptive mode switching of flash memory address mapping based on host usage characteristics
US20130173874A1 (en) System and Method for Pre-interleaving Sequential Data
CN109521944B (en) Data storage device and data storage method
WO2004040454A2 (en) Method and apparatus for performing multi-page write operations in a non-volatile memory system
US7234036B1 (en) Method and apparatus for resolving physical blocks associated with a common logical block

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 20038255197

Country of ref document: CN

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase in:

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP