[go: nahoru, domu]

USRE44052E1 - Flash memory management method - Google Patents

Flash memory management method Download PDF

Info

Publication number
USRE44052E1
USRE44052E1 US11/848,005 US84800507A USRE44052E US RE44052 E1 USRE44052 E1 US RE44052E1 US 84800507 A US84800507 A US 84800507A US RE44052 E USRE44052 E US RE44052E
Authority
US
United States
Prior art keywords
block
data
page
log
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime, expires
Application number
US11/848,005
Inventor
Bum-soo Kim
Gui-Yong Lee
Jong-min Kim
Ji-hyun In
Jesung Kim
Sam-Hyuk Noh
Sang-Iyul Min
Dong-Hee Lee
Jae-Yong Jeong
Yoo-Kun Cho
Jong-Moo Choi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Priority to US11/848,005 priority Critical patent/USRE44052E1/en
Priority to US13/134,225 priority patent/USRE45222E1/en
Priority to US13/151,735 priority patent/USRE45577E1/en
Application granted granted Critical
Publication of USRE44052E1 publication Critical patent/USRE44052E1/en
Priority to US14/628,462 priority patent/USRE46404E1/en
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Definitions

  • the present invention relates to a flash memory, and more particularly, to a flash memory management method for use in a flash memory-based system.
  • the present application is based on Korean Patent Application No. 2001-31124 filed Jun. 4, 2001.
  • Flash memories are a special type of a nonvolatile memory capable of electrically erasing and programming data. Flash memory based storage devices have low power consumption and small size compared to magnetic disc memory based devices. Thus, since flash memories can be substituted for magnetic disk memories, much research and development is actively in progress. Flash memories are expected to receive considerable attention as storage devices for mobile computing devices such as digital cameras, mobile phones, or personal digital assistants (PDAs).
  • mobile computing devices such as digital cameras, mobile phones, or personal digital assistants (PDAs).
  • write performance is significantly lower than read performance. Furthermore, the write performance of a flash memory is lower than that of a magnetic disc based storage device that inevitably involves a delay due to mechanical operation. Thus, improving write performance is essential in designing a flash memory based device.
  • U.S. Pat. No. 5,388,083 proposes a content addressable memory (CAM) system for converting a logical address requested by a user to a physical address in a flash memory while avoiding an erase cycle by writing altered data into an empty block in order to prevent a delay due to erase-before-write.
  • CAM content addressable memory
  • U.S. Pat. No. 5,485,595 proposes an approach which involves writing a logical address into an extra region of each page and sequentially comparing each of the logical addresses while avoiding an erase cycle by writing altered data into an empty space upon a write request.
  • the address conversion mechanism requires a large amount of time in reading address conversion information scattered around the flash memory, thereby degrading system performance.
  • U.S. Pat. No. 5,845,313 proposes a flash memory storage architecture in which a linear address conversion table for performing a direct address conversion is constructed in a special RAM by scanning a logical address stored in a flash memory during a system reset.
  • a RAM of a large storage capacity is required to store the address conversion table.
  • 128 KB of RAM is required assuming that 2 bytes are provided for each of 65,536 pages.
  • the storage capacity is too large for a small-scale system having few resources such as mobile equipment.
  • U.S. Pat. No. 5,404,485 proposes an approach for allocating a new block (replacement block) for write operation and writing data to the allocated block.
  • a new block continues to be allocated for write operation, a plurality of different versions of blocks to which the same page is written exist. That is, at least one replacement block needs to be provided for every block, thereby significantly reducing the capacity of a flash memory.
  • a page to be written to a new block must be written at the same position as the position at which the page was written to the previous block.
  • the page is frequently updated but the remaining pages are rarely updated, only the content of the specific page is changed while the remaining pages contain a plurality of the same replacement blocks, thereby wasting a lot of storage space in a flash memory.
  • this approach is not suitable for small-scale systems such as mobile equipment.
  • FAT file allocation table
  • the present invention provides a method for writing predetermined data to a flash memory.
  • the method includes the steps of: (a) receiving a request to write the predetermined data to a page to which data has been written; (b) writing the predetermined data to a log block corresponding to a data block containing the page; (c) receiving a request to write the predetermined data to the page again; and (d) writing the predetermined data to an empty free page in the log block.
  • step (b) may include the step (b11) of writing the predetermined data to an empty free page or the steps of (b21) allocating the log block; and (b22) writing the predetermined data to an empty page at the same position as the requested page in the data block.
  • a method for writing predetermined data to a flash memory includes the steps of: (a) receiving a request to write the predetermined data to a page; (b) allocating a log block 1 - 1 corresponding to a first data block containing the page; (c) writing the predetermined data to an empty page in the log block 1 - 1 ; (d) receiving a request to write the predetermined data to the page again; and (e) writing the predetermined data to an empty free page in the log block 1 - 1 .
  • step (b) comprises the steps of: (b1) performing a block merge to create a third data block based on a second data block and a second log block corresponding to the second data block; and (b2) allocating a free block obtained by performing an erase operation on the second data block as the log block 1 - 1 .
  • step (b1) is performed when a free block to be allocated as the log block 1 - 1 does not exist or when all pages of the existing log block corresponding to the first data block have been used.
  • step (b1) may include the step of (b11) performing a switch merge to change the second log block to the third data block when pages of the second log block are arranged in the same order that pages of the second data block are arranged, and the pages of the second log block correspond one-to-one to the pages of the second data block.
  • step (b1) may include the step of (b12) performing a copy merge to copy corresponding pages of the second data block to free pages in the second log block and create the third data block when the pages in the second log block are requested to be written only once.
  • Step (b1) may include the step of (13) performing a simple merge to copy the latest pages in the second log block to free pages of a free block to which data has not been written and copy a corresponding page of the second data block to the remaining free pages thereof, thereby creating the third data block.
  • step (e) includes the steps of: (e1) allocating a new log block 1 - 2 if a free page does not exist in the log block 1 - 1 ; and (e2) writing the predetermined data to a free page in the log block 1 - 2 .
  • Step (e1) may include the steps of: (e11) performing a switch merge to change the log block to a second data block when pages of the log block 1 - 1 are arranged in the order in which pages of the first data block are arranged and the pages of the log block 1 - 1 correspond one-to-one to the pages of the first data block, and (e12) allocating a free block obtained by performing an erase operation on the first data block as the log block 1 - 2 .
  • Step (e1) may include the steps of (e21) performing a copy merge to copy corresponding pages in the first data block to a free page in the log block 1 - 1 when pages in the log block 1 - 1 are requested to be written only once; and (e22) allocating a free block obtained by performing an erase operation on the first data block as the log block 1 - 2 .
  • Step (e1) may include the steps of: (e31) performing a simple merge to copy the latest pages in the log block 1 - 1 to free pages of a free block and copy a corresponding page of the first data block to the remaining free pages thereof, thereby creating a second data block; and (e32) allocating a free block obtained by performing an erase operation on the first data block or the log block 1 - 1 as the log block 1 - 2 .
  • step (e2) may include the step of (e21) writing the predetermined data to a free page at the same position as the requested page in the data block.
  • the present invention also provides a method for reading predetermined data from a flash memory.
  • the method includes the steps of: (a) searching a log pointer table for an entry in which a block address portion of a logical address of a requested page is recorded; (b) checking whether the logical address of the requested page exists in the found entry; and (c) referring to a physical address of a corresponding log block recorded in the found entry and a position at which the logical address of the requested page is written to the found entry and accessing a corresponding page of the log block.
  • the corresponding page in the log block is accessed at the same position as the position to which the logical address of the requested page is written to the found entry.
  • the present invention also provides a method for managing a flash memory including a data block and a log block for writing data for updating the data block.
  • the method includes the steps of (a) when pages of a first data block are arranged in the same order in which pages of a first log block corresponding to the first data block are arranged and all the pages of the first data block map one-to-one with the pages of the first log block, changing the first log block to a second data block; and (b) updating address conversion information.
  • a method for managing a flash memory including a data block and a log block for writing data for updating the data blocks includes the steps of: (a) when pages in a first log block are requested to be written only once, copying a corresponding page of a first data block to a free page of the first log block in order to create a second data block; and (b) updating address conversion information.
  • a method for managing a flash memory including a data block and a log block for writing data for updating the data block includes the steps of: (a) copying the latest pages in a first log block to a free block to which data has not been written and copying a corresponding page of a first data block corresponding to the first log block to a remaining free page to create a second data block; and (b) updating address conversion information.
  • the flash memory management method further includes the step of (a0) writing recovery information for recovering data in the event of a system failure during the step (a) or (b).
  • the flash memory management method further includes the step of (c) recovering data referring to the recovery information in the event of a system failure during the step (a) or (b).
  • the recovery information includes a list of free blocks, a list of log blocks, and a log pointer table which is the data structure for managing the log blocks.
  • the log pointer table contains log pointer table entries corresponding one-to-one to the log blocks, each entry mapping a physical address of a log block to a logical address of a corresponding data block and storing logical addresses of requested pages of a data block in the order in which pages of a corresponding log block are physically arranged.
  • a method for managing a flash memory including a data block and a log block for writing data for updating the data blocks includes the steps of: (a) allocating a predetermined region to a flash memory and writing lists of data blocks and log blocks and a data structure for managing the log blocks to the predetermined region as recovery information; (b) checking states currently being written to the flash memory based on the recovery information in the event of a system failure to determine whether an error occurs; and (c) if the error occurs, recovering data based on the recovery information.
  • FIG. 1 is a block diagram of a flash memory based system according to a preferred embodiment of the present invention
  • FIG. 2 is a reference diagram for explaining blocks for storing ordinary data provided in the flash memory of FIG. 1 according to the present invention
  • FIG. 3 is reference diagram for explaining a read operation for a log block and a data block
  • FIG. 4 is a reference diagram for explaining sections into which the flash memory of FIG. 1 is divided according to an embodiment of the present invention
  • FIG. 5 is a reference diagram for explaining sections into which the flash memory of FIG. 1 is divided according to another embodiment of the present invention.
  • FIG. 6 is a reference diagram for explaining a log pointer table
  • FIG. 7 shows the structure of an entry of a log pointer table
  • FIG. 8 shows the relationship between a log pointer table and a flash memory
  • FIG. 9 is a reference diagram for explaining an erasable block
  • FIG. 10 is a conceptual diagram of a simple merge
  • FIG. 11 is a conceptual diagram of a copy merge
  • FIG. 12 shows changes in blocks when a block merge according to the present invention is performed
  • FIG. 13 is a flowchart of a read operation according to the present invention.
  • FIG. 14 is a flowchart of a write operation according to the present invention.
  • FIG. 15 is a flowchart of a block merge operation.
  • a flash memory based system includes a flash memory 1 , a read-only memory (ROM) 2 , a random access memory (RAM) 3 , and a processor 4 .
  • the processor 4 issues a series of read or write commands to read data from and write data to the flash memory 1 or the RAM 3 .
  • Write and read operations are performed on the flash memory 1 in accordance with a flash memory management method according to the present invention.
  • the ROM 2 and the RAM 3 store application program codes executed by the processor 4 or related data structures.
  • the flash memory 1 includes a plurality of data blocks and log blocks corresponding to at least some of the plurality of data blocks.
  • a data block is a block for storing any ordinary data
  • a log block is a block provided for recording modified data if a predetermined part of a data block is to be modified.
  • a plurality of log blocks corresponding to the plurality of data blocks contain modified pages of the corresponding data blocks. Pages stored in the log blocks have priority over the counterparts stored in the corresponding data blocks to be referred to.
  • the pages having first priority are called “valid pages”, and pages ignored by the valid pages even as physically valid data is recorded in the ignored pages are called “invalid pages” in a logical sense.
  • the processor 4 upon a request of a user to read a predetermined page at a predetermined logical address, the processor 4 refers to a log pointer table recorded in the RAM 3 to check whether a log block corresponding to the predetermined page exists. If a corresponding log block exists, a check is made as to whether the requested page is validly stored in the log block. If the requested page is validly stored in the log block, the page stored in the log block is read. If not, a corresponding page stored in the data block corresponding to the log block is read.
  • the log pointer table will be described below.
  • FIG. 4 is a reference diagram showing regions into which the flash memory 1 is divided according to an embodiment of the present invention.
  • the flash memory 1 is divided into a map region, a log block region, a data block region, and a free block region.
  • the map region stores address conversion information
  • the log block region is provided for log blocks
  • the data block region is provided for data blocks to store ordinary data
  • the free block region is provided for allocating log blocks or data blocks.
  • the flash memory 1 is logically divided to form the four regions.
  • the four regions, in particular, the data block region, the log block region, and the free block region could discontinuously exist in the flash memory 1 in several scattered regions.
  • FIG. 5 is reference diagram showing regions into which the flash memory 1 is divided according to another embodiment of the present invention.
  • the flash memory 1 is divided into a map region, a check point region, a log block region, a data block region, and a free block region.
  • the check point region is additionally provided. Recovery information required for data recovery is recorded in the check point region.
  • the map region stores address conversion information
  • the log block region is provided for allocating log blocks
  • the data block region records ordinary data
  • the free block region is provided for allocating log blocks or data blocks.
  • the log pointer table refers to a data structure for managing log blocks.
  • the log pointer table contains a logical address of a data block, a physical address of a corresponding log block, and offset values (a logical address of a requested page) of updated pages in the corresponding data block arranged in the same order in which pages in the log block are physically arranged.
  • the processor 4 scans a log block region to construct the log pointer table in the RAM 3 .
  • the log pointer table contains entries corresponding to each of the log blocks.
  • the processor 4 Upon receiving a request to read data from or write data to a specific location in the flash memory 1 along with a logical address of a predetermined page, the processor 4 refers to the log pointer table to access a log block or a data block depending on the presence of a corresponding entry.
  • FIG. 7 shows the structure of a log pointer table entry.
  • the log pointer table entry contains a logical address log_blk of a data block and a physical address phy_blk of a corresponding log block. Also, the log pointer table entry records logical addresses page # 0 , page# 1 , . . . , page #N of corresponding pages in the log block in an order in which pages in the data block are recorded.
  • a block contains sixteen pages and a logical address is 02FF (hexadecimal number)
  • the first three digits “02F” denote a block address
  • the last digit “F” denotes an offset value of a requested page in a log block.
  • a check is made as to whether 02F exists among logical addresses log_blk stored in the logical pointer table to confirm the presence of a corresponding log block. If the corresponding log block exists, it is checked whether the logical address 02FF of the requested page or the offset value F is recorded in the corresponding entry to locate an updated page in the log block. For example, if page # 0 is F, the requested page is recorded in the first physical page in the log block.
  • a portion of a requested logical address that is, a block address portion thereof, is used to check whether a log block exists and access the block.
  • This technique is called “block addressing”.
  • the entire logical address being requested or an offset value is used to access a page in the corresponding log block, which is called “page addressing”.
  • page addressing the present invention adopts both block addressing and page addressing to enable the same page updated many times to be recorded in one log block.
  • FIG. 8 is a reference diagram showing the relationship between the log pointer table and the flash memory 1 .
  • the logical address log_blk of a data block is used to search for a log block corresponding to the data block, and then a physical address phy_blk is used to find a location to which the corresponding log block is written.
  • logical addresses page # 0 , page # 1 , . . . , page # 15 of pages in the corresponding log block are written to the log pointer table entry.
  • each block contains sixteen pages.
  • updated pages are written to the log block at the same positions as those at which the corresponding pages are located in the data block.
  • the updated page may be written at the same position as the corresponding page of the data block.
  • the updated page is to be updated again, it is not always possible to be written at the same position as the corresponding page of the data block. That is, if the predetermined page in the corresponding data block is updated once again before updating the remaining pages in the data block once, the predetermined page is written to an empty space of the log block.
  • FIG. 9 is a reference diagram for explaining an erasable block. If all pages in a data block are updated only once, pages of a log block map one-to-one with those of the data block. In this case, since the log block contains all the content of the data block, data loss does not occur even if the data block is erased.
  • the (entirely shadowed) data block where valid data does not exist any more is called an “erasable block”.
  • the erased block is called a “free block”.
  • the erasable block can be erased any time, and the free block can be allocated as a data block or a log block when necessary for the application.
  • the present invention involves performing a block merge.
  • the block merge is performed when a write operation is repeated so that a page that can be written does not exist in the log block.
  • the log block and the corresponding data block are merged to create a new data block while erasing the previous log block to be a free block.
  • a block merge performed when all pages in a data block are updated only once to arrange the pages in the data block in the order in which pages are located in the log block is called a “switch merge”.
  • a simple merge is performed. Furthermore, the simple merge is performed when all pages of the log block are currently written or read so a new log block needs to be allocated for a newly requested write operation. In this case, the log block to be merged may have a free page.
  • the switch merge is performed by changing a log block in which all pages of a corresponding data block are updated only once to a data block. This change is made by updating address conversion information without copying of data that have been written to the data block or the log block. That is, address conversion information recorded in a map region is updated so that the corresponding log block is mapped to a logical address requested by the user.
  • the map region stores address conversion information for every block to enable block addressing.
  • an invalid page refers to a page ignored by valid pages, and in actual implementation, the invalid page may be physically valid.
  • a simple merge is performed to create a new data block by writing valid pages of a data block and a corresponding log block at the same positions in a new free block as the positions at which the valid pages were written to the data block and the log block.
  • the merged data block and the log block can be erasable blocks.
  • a copy merge is performed by copying valid pages written to the existing data block to free pages in a corresponding log block.
  • the existing data block is changed to an erasable block.
  • invalid pages used in the block merge are to pages not firstly referred to, and in actual implementation, they may be physically valid pages.
  • FIG. 12 shows changes in blocks as a block merge according to the present invention is performed.
  • a free block is changed to a log block or a data block.
  • a log block is changed to a data block through a switch merge or a copy merge or to an erasable block through a simple merge.
  • a data block is changed to an erasable block through a switch merge, a copy merge, or a simple merge.
  • An erasable block is erased to be a free block again.
  • lists for free blocks and erasable blocks residing in the flash memory 1 are required.
  • the lists for free blocks and erasable blocks refer to a data structure recorded in the RAM 3 along with a log pointer table.
  • the lists may be recorded in the map region and the check point region of the flash memory 1 .
  • a list of free blocks, a list of erasable blocks, and a log pointer table must be reconstructed in the RAM 3 during a system reset.
  • the check point region is allocated according to an embodiment of the present invention for recording recovery information required for quick and thorough recovery of these data structures. If the check point region is provided, the list of free blocks, the list of erasable blocks, and the list of log blocks described above are stored in the check point region as recovery information. In particular, the check point region also stores a plan log that lists which type of block merge is to be performed and changes in blocks as a result of the block merge in order to prevent loss of information due to an overwhelmed system, unexpected power outage and the like, which may occur during the block merge.
  • the plan log contains the type of block merge to be performed, and physical addresses of a block changed from a free block to a data block, of a block changed from a data block to a free block, and of a block changed from a log block to a free block.
  • the check point region stores information necessary for construction of the address conversion information such as a location where address conversion information is stored.
  • the location of the check point region itself is recorded in a predefined block in the flash memory 1 .
  • the flash memory management method is divided into a method of constructing and reconstructing a data structure upon a system startup, a method for reading data from the flash memory 1 , and a method for writing data to the flash memory 1 .
  • a flash memory management method used during a system startup means a method for constructing or reconstructing a data structure. That is, the method involves constructing address conversion information as well as data structures including a list of free blocks, a list of erasable blocks, a list of log blocks, and a log pointer table for write and read operations, and examining the integrity of the constructed information to reconstruct the data structures based on recovery information if reconstruction is needed.
  • the processor 4 When the system of FIG. 1 is initialized, the processor 4 must construct the log pointer table and the lists of free blocks, erasable blocks and log blocks. To accomplish this, the processor 4 reads recovery information from most recently written pages stored in the check point region of the flash memory 1 .
  • the log pointer table is constructed by scanning all pages of each log block designated in the recovery information to read a logical address stored in a logical block address portion for each page. Since the map region also sequentially stores address conversion information, a lastly written page (the page immediately before a first free page) is considered to be changed most recently, and address conversion information can be constructed based on the lastly written page. The free block list and the erasable block list can also be readily reconstructed based on the recovery information.
  • the constructed information including the log pointer table and the lists of free blocks, erasable blocks and log blocks is verified by referring to a plan log. That is, it should be verified whether the constructed information is the same as real conditions when the operation of the system is stopped during a block merge. More specifically, if the system ceases to operate upon writing recovery information to the check point region, upon performing a block merge, upon updating address conversion information in the map region, and upon performing an erase operation, verification is needed. For each case, it is checked whether the constructed information is consistent with real conditions, and if not, the constructed information is reconstructed as follows:
  • a first free page from the recovery information written in the check point region is located to check whether the found page is actually an empty page by reading data stored therein. If the free page is not empty, it is determined that the system ceased to operate while writing recovery information to the check point region. Since this occurs before actually writing data, it is not necessary to perform a recovery procedure, and finally recorded recovery information is ignored.
  • a logical address is read from a block listed in the plan log as a block to be changed to a data block to check whether the logical address is consistent with the information stored in the map region. If not, it can be determined that the system ceased to operate while updating the address conversion information. In this case, data can be appropriately recovered by modifying the address conversion information based on the logical address read from the data block and a corresponding physical address.
  • FIG. 13 is a flowchart of a read operation according to the present invention.
  • the processor 4 searches for a log block in which a page being requested exists, and reads the requested page from the found log block. More specifically, the processor 4 sequentially searches a log pointer table for an entry corresponding to a logical address of a requested page (step 1301 ). Since the logical address of the requested page consists of a block addressing portion and a page addressing portion, an entry is searched for by referring to the block addressing portion. If a matched entry is found (step 1302 ), it is checked whether the requested page exists in the found entry (step 1303 ). If the requested page is found, the page is read (step 1305 ).
  • a lastly found page among those except for one existing at the position of the same offset value is determined to be the latest one, and that page is read. If a match is not found in the step 1302 , or if the requested page does not exist in a log block (step 1304 ), a corresponding page of a data block is read based on the requested logical address (step 1306 ).
  • FIG. 14 is a flowchart of a write operation according to the present invention.
  • the processor 4 firstly searches for a log block in which a page being requested exists. If the log block is found, it checks whether a page in the log block at the same position as the requested page is usable. If the corresponding page is usable, writing is performed on the page. If it is not usable, writing is performed on another page that is usable in the log block. If a usable page does not exist in the log block, a new log block is allocated to perform writing at the same position.
  • the processor 4 searches a log pointer table for an entry based on a logical address of a page being requested (step 1401 ). If the entry is found (step 1402 ), which means that a log block corresponding to the logical address exists, an entry is searched to check whether a page having the same offset value as the requested page is usable (step 1403 ). If the page is usable, a write operation is performed on the corresponding page (step 1404 ).
  • the usable page refers to an empty page (free page) that has not been written to. The presence of a free page can be determined by whether a page is valid (the page is firstly referred to or data is written to the page).
  • a physical address of the page on which the write operation has been performed corresponding to the logical address is written to the corresponding entry of the log pointer table. In this case, the write request by the user is completed by one write operation in the flash memory 1 .
  • step 1403 it is checked whether another free page in the log block can be allocated (step 1406 ), and a write operation is performed on the allocated free page (step 1407 ). If two or more free pages exist, the log block is sequentially searched from the start to allocate a page closest to the page corresponding to the requested page to which data have been already written. Then, a physical address of the allocated page corresponding to the logical address of the requested page is written to the corresponding entry of the log pointer table (step 1405 ).
  • step 1408 If an entry corresponding to the requested page is not found as a result of searching the log pointer table, it is checked whether a new log block can be allocated (step 1408 ). If free blocks to be allocated as the new log block exist, one of the free blocks is allocated as the new log block (step 1408 ). If a free block does not exist, the free block is created by performing a block merge and then allocated as the new log block (step 1409 ). A write operation is performed on a page in the allocated log block having the same offset value as the requested page (step 1410 ). Then, a corresponding entry is created in the log pointer table (step 1405 ).
  • FIG. 15 is a flowchart of a block merge operation.
  • a block merge is performed in different ways depending on the arrangement of pages in a log block. More specifically, the processor 4 checks whether all pages of a log block are located at the same positions as those of a corresponding data block (step 1501 ). If so, it is next checked whether all the pages of the log block are valid (step 1502 ). If all pages in the log block are arranged in the same order in which those of the data block are arranged and they are valid, a switch merge is performed. Before performing a switch merge, the processor 4 writes recovery information to the check point region (step 1503 ). The step 1503 may be omitted according to the choice of a system designer.
  • the processor 4 updates address conversion information stored in the map region so that the log block is a new data block (step 1504 ). That is, if the log block is changed to the new data block, since a physical address corresponding to the logical address is changed in view of the user, the address conversion information must be updated. Actually, the updated address conversion information can be written to a first free page in the map region. Similarly, the map region sequentially stores the address conversion information, and if a free page does not exist, a free block is allocated for the map region to write the information to the allocated free block. The allocation of a free block is made in the same manner as described with reference to FIG. 14 . Then, the data block is changed to an erasable block, the data block is erased, and a free block list recorded in the check point region is updated (step 1505 ).
  • any pages in the log block are not arranged at the same position as a corresponding page of the data block, a simple merge is performed.
  • the processor 4 writes recovery information to the check point region before performing a simple merge (step 1506 ).
  • the step 1506 may be omitted according to the choice of the system designer.
  • free blocks are allocated to copy valid pages of the log block to some of the free blocks (step 1507 ).
  • Corresponding pages of the data block are copied to the remaining free blocks (step 1508 ).
  • Address conversion information in the map region is updated so that the free blocks are new data blocks (step 1509 ).
  • the allocation of free blocks is made in the manner described with reference to FIG. 14 .
  • the log block and the data block are changed to an erasable block, the log block and the data block are erased, and a free block list recorded in the check point region is updated (step 1510 ).
  • the step 1511 may be omitted according to the choice of the system designer. Then, valid pages of the data block are read to copy them to the log block (step 1512 ). Address conversion information stored in the map region is updated so that the log block is a new data block (step 1504 ), and then the data block is erased and a free block list stored in the check point region is updated (step 1505 ).
  • a free block is allocated, the free block is changed to a log block, and writing to the log block is performed. If only one free block remains so it is not allocated as a log block, one of the existing log blocks is arbitrarily selected to perform a block merge, thereby creating a new free block. Then, the free block is allocated as a log block.
  • costs required for a block merge and usability of blocks should be appropriately considered.
  • the usability of blocks may vary depending on the type of application program to be executed. Replacement algorithms may not be specified in this invention. Thus, the present invention may be implemented using common replacement algorithms such as least recently used (LRU).
  • LRU least recently used
  • the present invention provides a method for flash memory management for improving the performance of a flash memory.
  • the present invention allows the same page to be continuously updated within one log block, thereby improving the effectiveness of flash memory resources.
  • the present invention allows data to be recovered consistently in the event that a system malfunctions due to power outage during a block merge.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

A flash memory management method is provided. According to the method, when a request to write the predetermined data to a page to which data has been written is made, the predetermined data is written to a log block corresponding to a data block containing the page. When a request to write the predetermined data to the page again is received, the predetermined data is written to an empty free page in the log block. Even if the same page is requested to be continuously written to, the management method allows this to be processed in one log block, thereby improving the effectiveness in the use of flash memory resources.

Description

This is a reissue application of U.S. application Ser. No. 10/029,966, now U.S. Pat. No. 6,938,116, filed Dec. 31, 2001, the entire contents of which are hereby incorporated by reference.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to a flash memory, and more particularly, to a flash memory management method for use in a flash memory-based system. The present application is based on Korean Patent Application No. 2001-31124 filed Jun. 4, 2001.
2. Description of the Related Art
Flash memories are a special type of a nonvolatile memory capable of electrically erasing and programming data. Flash memory based storage devices have low power consumption and small size compared to magnetic disc memory based devices. Thus, since flash memories can be substituted for magnetic disk memories, much research and development is actively in progress. Flash memories are expected to receive considerable attention as storage devices for mobile computing devices such as digital cameras, mobile phones, or personal digital assistants (PDAs).
In magnetic disc drives, new data can be written over previous old data. However, in flash memories, a block needs to be erased before it is rewritten with new data; that is, memory cells are returned to an original state in which data can be written. This operation is called “erase”. An erase operation typically requires much more time than a write operation. Furthermore, since the erase operation is performed in blocks whose size is much larger than what the write operation requires, even a portion requested not to be written to may be erased. In this case, the unnecessarily erased portion needs to be reclaimed through a write operation. In the worst scenario, a request to write (overwrite) data requires one erase operation and write operations to recover the portion erased by the erase operation. Due to inconsistency between units on which erase and write commands are executed, write performance is significantly lower than read performance. Furthermore, the write performance of a flash memory is lower than that of a magnetic disc based storage device that inevitably involves a delay due to mechanical operation. Thus, improving write performance is essential in designing a flash memory based device.
U.S. Pat. No. 5,388,083 proposes a content addressable memory (CAM) system for converting a logical address requested by a user to a physical address in a flash memory while avoiding an erase cycle by writing altered data into an empty block in order to prevent a delay due to erase-before-write. However, implementation of the CAM system requires additional costly circuits. U.S. Pat. No. 5,485,595 proposes an approach which involves writing a logical address into an extra region of each page and sequentially comparing each of the logical addresses while avoiding an erase cycle by writing altered data into an empty space upon a write request. However, if a unit of read operation is large like in a NAND-type flash memory, the address conversion mechanism requires a large amount of time in reading address conversion information scattered around the flash memory, thereby degrading system performance.
U.S. Pat. No. 5,845,313 proposes a flash memory storage architecture in which a linear address conversion table for performing a direct address conversion is constructed in a special RAM by scanning a logical address stored in a flash memory during a system reset. However, a RAM of a large storage capacity is required to store the address conversion table. For example, to store an address conversion table of a flash memory based storage device having a storage capacity of 32 MB and a page size of 512 bytes, 128 KB of RAM is required assuming that 2 bytes are provided for each of 65,536 pages. The storage capacity is too large for a small-scale system having few resources such as mobile equipment.
U.S. Pat. No. 5,404,485 proposes an approach for allocating a new block (replacement block) for write operation and writing data to the allocated block. However, since a new block continues to be allocated for write operation, a plurality of different versions of blocks to which the same page is written exist. That is, at least one replacement block needs to be provided for every block, thereby significantly reducing the capacity of a flash memory. A page to be written to a new block must be written at the same position as the position at which the page was written to the previous block. When the page is frequently updated but the remaining pages are rarely updated, only the content of the specific page is changed while the remaining pages contain a plurality of the same replacement blocks, thereby wasting a lot of storage space in a flash memory. Thus, this approach is not suitable for small-scale systems such as mobile equipment.
SUMMARY OF THE INVENTION
To solve the above problems, it is an object of the present invention to provide a flash memory based system and management method therefor capable of improving the performance of a flash memory.
It is another object of the present invention to provide a flash memory based system and management method therefor, which allow for consistent data recovery in an emergency such as power cut-off.
It is still another object of the present invention to provide a flash memory based system and management method therefor, which prevent degradation of system performance in an environment where data updates to a specific page are frequently made such as a DOS file system based on a file allocation table (FAT).
Accordingly, to achieve the above objects, the present invention provides a method for writing predetermined data to a flash memory. The method includes the steps of: (a) receiving a request to write the predetermined data to a page to which data has been written; (b) writing the predetermined data to a log block corresponding to a data block containing the page; (c) receiving a request to write the predetermined data to the page again; and (d) writing the predetermined data to an empty free page in the log block.
Preferably, step (b) may include the step (b11) of writing the predetermined data to an empty free page or the steps of (b21) allocating the log block; and (b22) writing the predetermined data to an empty page at the same position as the requested page in the data block.
In another embodiment, a method for writing predetermined data to a flash memory includes the steps of: (a) receiving a request to write the predetermined data to a page; (b) allocating a log block 1-1 corresponding to a first data block containing the page; (c) writing the predetermined data to an empty page in the log block 1-1; (d) receiving a request to write the predetermined data to the page again; and (e) writing the predetermined data to an empty free page in the log block 1-1.
Preferably, step (b) comprises the steps of: (b1) performing a block merge to create a third data block based on a second data block and a second log block corresponding to the second data block; and (b2) allocating a free block obtained by performing an erase operation on the second data block as the log block 1-1.
Preferably, step (b1) is performed when a free block to be allocated as the log block 1-1 does not exist or when all pages of the existing log block corresponding to the first data block have been used.
More preferably, step (b1) may include the step of (b11) performing a switch merge to change the second log block to the third data block when pages of the second log block are arranged in the same order that pages of the second data block are arranged, and the pages of the second log block correspond one-to-one to the pages of the second data block. Step (b1) may include the step of (b12) performing a copy merge to copy corresponding pages of the second data block to free pages in the second log block and create the third data block when the pages in the second log block are requested to be written only once. Step (b1) may include the step of (13) performing a simple merge to copy the latest pages in the second log block to free pages of a free block to which data has not been written and copy a corresponding page of the second data block to the remaining free pages thereof, thereby creating the third data block.
Most preferably, step (e) includes the steps of: (e1) allocating a new log block 1-2 if a free page does not exist in the log block 1-1; and (e2) writing the predetermined data to a free page in the log block 1-2. Step (e1) may include the steps of: (e11) performing a switch merge to change the log block to a second data block when pages of the log block 1-1 are arranged in the order in which pages of the first data block are arranged and the pages of the log block 1-1 correspond one-to-one to the pages of the first data block, and (e12) allocating a free block obtained by performing an erase operation on the first data block as the log block 1-2. Step (e1) may include the steps of (e21) performing a copy merge to copy corresponding pages in the first data block to a free page in the log block 1-1 when pages in the log block 1-1 are requested to be written only once; and (e22) allocating a free block obtained by performing an erase operation on the first data block as the log block 1-2. Step (e1) may include the steps of: (e31) performing a simple merge to copy the latest pages in the log block 1-1 to free pages of a free block and copy a corresponding page of the first data block to the remaining free pages thereof, thereby creating a second data block; and (e32) allocating a free block obtained by performing an erase operation on the first data block or the log block 1-1 as the log block 1-2.
Preferably, step (e2) may include the step of (e21) writing the predetermined data to a free page at the same position as the requested page in the data block.
The present invention also provides a method for reading predetermined data from a flash memory. The method includes the steps of: (a) searching a log pointer table for an entry in which a block address portion of a logical address of a requested page is recorded; (b) checking whether the logical address of the requested page exists in the found entry; and (c) referring to a physical address of a corresponding log block recorded in the found entry and a position at which the logical address of the requested page is written to the found entry and accessing a corresponding page of the log block. Preferably, in step (c), the corresponding page in the log block is accessed at the same position as the position to which the logical address of the requested page is written to the found entry.
The present invention also provides a method for managing a flash memory including a data block and a log block for writing data for updating the data block. The method includes the steps of (a) when pages of a first data block are arranged in the same order in which pages of a first log block corresponding to the first data block are arranged and all the pages of the first data block map one-to-one with the pages of the first log block, changing the first log block to a second data block; and (b) updating address conversion information.
In another embodiment, a method for managing a flash memory including a data block and a log block for writing data for updating the data blocks includes the steps of: (a) when pages in a first log block are requested to be written only once, copying a corresponding page of a first data block to a free page of the first log block in order to create a second data block; and (b) updating address conversion information.
In another embodiment, a method for managing a flash memory including a data block and a log block for writing data for updating the data block includes the steps of: (a) copying the latest pages in a first log block to a free block to which data has not been written and copying a corresponding page of a first data block corresponding to the first log block to a remaining free page to create a second data block; and (b) updating address conversion information.
Preferably, prior to step (a), the flash memory management method further includes the step of (a0) writing recovery information for recovering data in the event of a system failure during the step (a) or (b).
Preferably, the flash memory management method further includes the step of (c) recovering data referring to the recovery information in the event of a system failure during the step (a) or (b).
The recovery information includes a list of free blocks, a list of log blocks, and a log pointer table which is the data structure for managing the log blocks. The log pointer table contains log pointer table entries corresponding one-to-one to the log blocks, each entry mapping a physical address of a log block to a logical address of a corresponding data block and storing logical addresses of requested pages of a data block in the order in which pages of a corresponding log block are physically arranged.
In another embodiment, a method for managing a flash memory including a data block and a log block for writing data for updating the data blocks includes the steps of: (a) allocating a predetermined region to a flash memory and writing lists of data blocks and log blocks and a data structure for managing the log blocks to the predetermined region as recovery information; (b) checking states currently being written to the flash memory based on the recovery information in the event of a system failure to determine whether an error occurs; and (c) if the error occurs, recovering data based on the recovery information.
BRIEF DESCRIPTION OF THE DRAWINGS
The above objects and advantages of the present invention will become more apparent by describing in detail preferred embodiments thereof with reference to the attached drawings in which:
FIG. 1 is a block diagram of a flash memory based system according to a preferred embodiment of the present invention;
FIG. 2 is a reference diagram for explaining blocks for storing ordinary data provided in the flash memory of FIG. 1 according to the present invention;
FIG. 3 is reference diagram for explaining a read operation for a log block and a data block;
FIG. 4 is a reference diagram for explaining sections into which the flash memory of FIG. 1 is divided according to an embodiment of the present invention;
FIG. 5 is a reference diagram for explaining sections into which the flash memory of FIG. 1 is divided according to another embodiment of the present invention;
FIG. 6 is a reference diagram for explaining a log pointer table;
FIG. 7 shows the structure of an entry of a log pointer table;
FIG. 8 shows the relationship between a log pointer table and a flash memory;
FIG. 9 is a reference diagram for explaining an erasable block;
FIG. 10 is a conceptual diagram of a simple merge;
FIG. 11 is a conceptual diagram of a copy merge;
FIG. 12 shows changes in blocks when a block merge according to the present invention is performed;
FIG. 13 is a flowchart of a read operation according to the present invention;
FIG. 14 is a flowchart of a write operation according to the present invention; and
FIG. 15 is a flowchart of a block merge operation.
DETAILED DESCRIPTION OF THE INVENTION
Referring to FIG. 1, a flash memory based system includes a flash memory 1, a read-only memory (ROM) 2, a random access memory (RAM) 3, and a processor 4. In combination with program codes typically recorded in the ROM 2, the processor 4 issues a series of read or write commands to read data from and write data to the flash memory 1 or the RAM 3. Write and read operations are performed on the flash memory 1 in accordance with a flash memory management method according to the present invention. The ROM 2 and the RAM 3 store application program codes executed by the processor 4 or related data structures.
Referring to FIG. 2, the flash memory 1 includes a plurality of data blocks and log blocks corresponding to at least some of the plurality of data blocks. A data block is a block for storing any ordinary data, and a log block is a block provided for recording modified data if a predetermined part of a data block is to be modified. Thus, a plurality of log blocks corresponding to the plurality of data blocks contain modified pages of the corresponding data blocks. Pages stored in the log blocks have priority over the counterparts stored in the corresponding data blocks to be referred to. In this specification, the pages having first priority are called “valid pages”, and pages ignored by the valid pages even as physically valid data is recorded in the ignored pages are called “invalid pages” in a logical sense.
Referring to FIG. 3, upon a request of a user to read a predetermined page at a predetermined logical address, the processor 4 refers to a log pointer table recorded in the RAM 3 to check whether a log block corresponding to the predetermined page exists. If a corresponding log block exists, a check is made as to whether the requested page is validly stored in the log block. If the requested page is validly stored in the log block, the page stored in the log block is read. If not, a corresponding page stored in the data block corresponding to the log block is read. The log pointer table will be described below.
FIG. 4 is a reference diagram showing regions into which the flash memory 1 is divided according to an embodiment of the present invention. Referring to FIG. 4, the flash memory 1 is divided into a map region, a log block region, a data block region, and a free block region. The map region stores address conversion information, the log block region is provided for log blocks, the data block region is provided for data blocks to store ordinary data, and the free block region is provided for allocating log blocks or data blocks. Here, the flash memory 1 is logically divided to form the four regions. Thus, physically, the four regions, in particular, the data block region, the log block region, and the free block region could discontinuously exist in the flash memory 1 in several scattered regions.
FIG. 5 is reference diagram showing regions into which the flash memory 1 is divided according to another embodiment of the present invention. Referring to FIG. 5, the flash memory 1 is divided into a map region, a check point region, a log block region, a data block region, and a free block region. In this embodiment, the check point region is additionally provided. Recovery information required for data recovery is recorded in the check point region. Similar to the regions shown in FIG. 4, the map region stores address conversion information, the log block region is provided for allocating log blocks, the data block region records ordinary data, and the free block region is provided for allocating log blocks or data blocks. The address conversion information and the recovery information stored in the map region and the check point region, respectively, will be described below in detail.
The log pointer table refers to a data structure for managing log blocks. The log pointer table contains a logical address of a data block, a physical address of a corresponding log block, and offset values (a logical address of a requested page) of updated pages in the corresponding data block arranged in the same order in which pages in the log block are physically arranged. According to the present invention, the processor 4 scans a log block region to construct the log pointer table in the RAM 3. Referring to FIG. 6, the log pointer table contains entries corresponding to each of the log blocks. Upon receiving a request to read data from or write data to a specific location in the flash memory 1 along with a logical address of a predetermined page, the processor 4 refers to the log pointer table to access a log block or a data block depending on the presence of a corresponding entry.
FIG. 7 shows the structure of a log pointer table entry. Referring to FIG. 7, the log pointer table entry contains a logical address log_blk of a data block and a physical address phy_blk of a corresponding log block. Also, the log pointer table entry records logical addresses page # 0, page# 1, . . . , page #N of corresponding pages in the log block in an order in which pages in the data block are recorded.
For example, assuming that a block contains sixteen pages and a logical address is 02FF (hexadecimal number), the first three digits “02F” denote a block address and the last digit “F” denotes an offset value of a requested page in a log block. Thus, a check is made as to whether 02F exists among logical addresses log_blk stored in the logical pointer table to confirm the presence of a corresponding log block. If the corresponding log block exists, it is checked whether the logical address 02FF of the requested page or the offset value F is recorded in the corresponding entry to locate an updated page in the log block. For example, if page # 0 is F, the requested page is recorded in the first physical page in the log block.
In this way, a portion of a requested logical address, that is, a block address portion thereof, is used to check whether a log block exists and access the block. This technique is called “block addressing”. Then, the entire logical address being requested or an offset value is used to access a page in the corresponding log block, which is called “page addressing”. Thus, the present invention adopts both block addressing and page addressing to enable the same page updated many times to be recorded in one log block.
FIG. 8 is a reference diagram showing the relationship between the log pointer table and the flash memory 1. As shown in FIG. 8, the logical address log_blk of a data block is used to search for a log block corresponding to the data block, and then a physical address phy_blk is used to find a location to which the corresponding log block is written. Furthermore, according to the present invention, logical addresses page # 0, page # 1, . . . , page # 15 of pages in the corresponding log block are written to the log pointer table entry. In this embodiment, each block contains sixteen pages.
Basically, updated pages are written to the log block at the same positions as those at which the corresponding pages are located in the data block. Actually, if an updated page is first written to the log block, the updated page may be written at the same position as the corresponding page of the data block. However, if the updated page is to be updated again, it is not always possible to be written at the same position as the corresponding page of the data block. That is, if the predetermined page in the corresponding data block is updated once again before updating the remaining pages in the data block once, the predetermined page is written to an empty space of the log block.
FIG. 9 is a reference diagram for explaining an erasable block. If all pages in a data block are updated only once, pages of a log block map one-to-one with those of the data block. In this case, since the log block contains all the content of the data block, data loss does not occur even if the data block is erased. The (entirely shadowed) data block where valid data does not exist any more is called an “erasable block”. The erased block is called a “free block”. The erasable block can be erased any time, and the free block can be allocated as a data block or a log block when necessary for the application.
Meanwhile, the present invention involves performing a block merge. The block merge is performed when a write operation is repeated so that a page that can be written does not exist in the log block. In this case, the log block and the corresponding data block are merged to create a new data block while erasing the previous log block to be a free block. In particular, a block merge performed when all pages in a data block are updated only once to arrange the pages in the data block in the order in which pages are located in the log block is called a “switch merge”.
In contrast, if the page arrangement in a log block is not the same as that in a corresponding data block, a simple merge is performed. Furthermore, the simple merge is performed when all pages of the log block are currently written or read so a new log block needs to be allocated for a newly requested write operation. In this case, the log block to be merged may have a free page.
If all the pages in a log block are updated only once, empty pages are filled with corresponding pages of a data block to change the log block to the data block. This is called a “copy merge”. That is to say, there are three types of block merges; a switch merge, a simple merge, and a copy merge.
As described above with reference to FIG. 9, the switch merge is performed by changing a log block in which all pages of a corresponding data block are updated only once to a data block. This change is made by updating address conversion information without copying of data that have been written to the data block or the log block. That is, address conversion information recorded in a map region is updated so that the corresponding log block is mapped to a logical address requested by the user. The map region stores address conversion information for every block to enable block addressing. Here, an invalid page refers to a page ignored by valid pages, and in actual implementation, the invalid page may be physically valid.
As shown in FIG. 10, a simple merge is performed to create a new data block by writing valid pages of a data block and a corresponding log block at the same positions in a new free block as the positions at which the valid pages were written to the data block and the log block. Thus, the merged data block and the log block can be erasable blocks.
As shown in FIG. 11, a copy merge is performed by copying valid pages written to the existing data block to free pages in a corresponding log block. The existing data block is changed to an erasable block. As described, invalid pages used in the block merge are to pages not firstly referred to, and in actual implementation, they may be physically valid pages.
FIG. 12 shows changes in blocks as a block merge according to the present invention is performed. Referring to FIG. 12, a free block is changed to a log block or a data block. A log block is changed to a data block through a switch merge or a copy merge or to an erasable block through a simple merge. A data block is changed to an erasable block through a switch merge, a copy merge, or a simple merge. An erasable block is erased to be a free block again.
To perform a block merge, lists for free blocks and erasable blocks residing in the flash memory 1 are required. The lists for free blocks and erasable blocks refer to a data structure recorded in the RAM 3 along with a log pointer table. The lists may be recorded in the map region and the check point region of the flash memory 1.
A list of free blocks, a list of erasable blocks, and a log pointer table must be reconstructed in the RAM 3 during a system reset. The check point region is allocated according to an embodiment of the present invention for recording recovery information required for quick and thorough recovery of these data structures. If the check point region is provided, the list of free blocks, the list of erasable blocks, and the list of log blocks described above are stored in the check point region as recovery information. In particular, the check point region also stores a plan log that lists which type of block merge is to be performed and changes in blocks as a result of the block merge in order to prevent loss of information due to an overwhelmed system, unexpected power outage and the like, which may occur during the block merge. More specifically, the plan log contains the type of block merge to be performed, and physical addresses of a block changed from a free block to a data block, of a block changed from a data block to a free block, and of a block changed from a log block to a free block.
Furthermore, the check point region stores information necessary for construction of the address conversion information such as a location where address conversion information is stored. The location of the check point region itself is recorded in a predefined block in the flash memory 1.
Based on the above configurations, a method for flash memory management according to a preferred embodiment of the present invention will now be described. For ease of understanding, the flash memory management method is divided into a method of constructing and reconstructing a data structure upon a system startup, a method for reading data from the flash memory 1, and a method for writing data to the flash memory 1.
First, a flash memory management method used during a system startup means a method for constructing or reconstructing a data structure. That is, the method involves constructing address conversion information as well as data structures including a list of free blocks, a list of erasable blocks, a list of log blocks, and a log pointer table for write and read operations, and examining the integrity of the constructed information to reconstruct the data structures based on recovery information if reconstruction is needed. When the system of FIG. 1 is initialized, the processor 4 must construct the log pointer table and the lists of free blocks, erasable blocks and log blocks. To accomplish this, the processor 4 reads recovery information from most recently written pages stored in the check point region of the flash memory 1. This is because, if the recovery information is sequentially written, most recent recovery information is written to a page located immediately before a free page (empty page) firstly found in the check point region. However, the order in which the recovery information is written may be changed when necessary for the application as long as it is possible to identify the most recently written page.
The log pointer table is constructed by scanning all pages of each log block designated in the recovery information to read a logical address stored in a logical block address portion for each page. Since the map region also sequentially stores address conversion information, a lastly written page (the page immediately before a first free page) is considered to be changed most recently, and address conversion information can be constructed based on the lastly written page. The free block list and the erasable block list can also be readily reconstructed based on the recovery information.
Next, the constructed information including the log pointer table and the lists of free blocks, erasable blocks and log blocks is verified by referring to a plan log. That is, it should be verified whether the constructed information is the same as real conditions when the operation of the system is stopped during a block merge. More specifically, if the system ceases to operate upon writing recovery information to the check point region, upon performing a block merge, upon updating address conversion information in the map region, and upon performing an erase operation, verification is needed. For each case, it is checked whether the constructed information is consistent with real conditions, and if not, the constructed information is reconstructed as follows:
1. When the system ceases to operate upon writing recovery information to the check point region, a first free page from the recovery information written in the check point region is located to check whether the found page is actually an empty page by reading data stored therein. If the free page is not empty, it is determined that the system ceased to operate while writing recovery information to the check point region. Since this occurs before actually writing data, it is not necessary to perform a recovery procedure, and finally recorded recovery information is ignored.
2. When the system ceases to operate during a block merge, it is checked whether data has been properly written to all pages of a block listed in the plan log as a block to be changed to a data block. If a page, if any, is not valid, it is determined that the system ceased to operate during a block merge. In this case, a block merge is performed again to recover data appropriately.
3. When the system ceases to operate while updating address conversion information, a logical address is read from a block listed in the plan log as a block to be changed to a data block to check whether the logical address is consistent with the information stored in the map region. If not, it can be determined that the system ceased to operate while updating the address conversion information. In this case, data can be appropriately recovered by modifying the address conversion information based on the logical address read from the data block and a corresponding physical address.
4. When the system ceases to operate during an erase operation, it is checked whether blocks listed in the plan log as a block to be changed to a free block are actually empty blocks. If a block is a not free block (if all pages in the block are not empty), an erase operation is performed on the written block again.
When required data structures are constructed and then integrity verification is completed in the manner previously described through a flash memory management method used upon system startup, read and write operations can be performed.
FIG. 13, is a flowchart of a read operation according to the present invention. The processor 4 searches for a log block in which a page being requested exists, and reads the requested page from the found log block. More specifically, the processor 4 sequentially searches a log pointer table for an entry corresponding to a logical address of a requested page (step 1301). Since the logical address of the requested page consists of a block addressing portion and a page addressing portion, an entry is searched for by referring to the block addressing portion. If a matched entry is found (step 1302), it is checked whether the requested page exists in the found entry (step 1303). If the requested page is found, the page is read (step 1305). In this case, if two or more identical pages are found, a lastly found page among those except for one existing at the position of the same offset value is determined to be the latest one, and that page is read. If a match is not found in the step 1302, or if the requested page does not exist in a log block (step 1304), a corresponding page of a data block is read based on the requested logical address (step 1306).
FIG. 14 is a flowchart of a write operation according to the present invention. The processor 4 firstly searches for a log block in which a page being requested exists. If the log block is found, it checks whether a page in the log block at the same position as the requested page is usable. If the corresponding page is usable, writing is performed on the page. If it is not usable, writing is performed on another page that is usable in the log block. If a usable page does not exist in the log block, a new log block is allocated to perform writing at the same position.
More specifically, the processor 4 searches a log pointer table for an entry based on a logical address of a page being requested (step 1401). If the entry is found (step 1402), which means that a log block corresponding to the logical address exists, an entry is searched to check whether a page having the same offset value as the requested page is usable (step 1403). If the page is usable, a write operation is performed on the corresponding page (step 1404). Here, the usable page refers to an empty page (free page) that has not been written to. The presence of a free page can be determined by whether a page is valid (the page is firstly referred to or data is written to the page). Next, a physical address of the page on which the write operation has been performed corresponding to the logical address is written to the corresponding entry of the log pointer table. In this case, the write request by the user is completed by one write operation in the flash memory 1.
If the corresponding log block is found, but the page having the same offset has been used (step 1403), it is checked whether another free page in the log block can be allocated (step 1406), and a write operation is performed on the allocated free page (step 1407). If two or more free pages exist, the log block is sequentially searched from the start to allocate a page closest to the page corresponding to the requested page to which data have been already written. Then, a physical address of the allocated page corresponding to the logical address of the requested page is written to the corresponding entry of the log pointer table (step 1405).
If an entry corresponding to the requested page is not found as a result of searching the log pointer table, it is checked whether a new log block can be allocated (step 1408). If free blocks to be allocated as the new log block exist, one of the free blocks is allocated as the new log block (step 1408). If a free block does not exist, the free block is created by performing a block merge and then allocated as the new log block (step 1409). A write operation is performed on a page in the allocated log block having the same offset value as the requested page (step 1410). Then, a corresponding entry is created in the log pointer table (step 1405).
FIG. 15 is a flowchart of a block merge operation. Referring to FIG. 15, a block merge is performed in different ways depending on the arrangement of pages in a log block. More specifically, the processor 4 checks whether all pages of a log block are located at the same positions as those of a corresponding data block (step 1501). If so, it is next checked whether all the pages of the log block are valid (step 1502). If all pages in the log block are arranged in the same order in which those of the data block are arranged and they are valid, a switch merge is performed. Before performing a switch merge, the processor 4 writes recovery information to the check point region (step 1503). The step 1503 may be omitted according to the choice of a system designer. To perform a switch merge, the processor 4 updates address conversion information stored in the map region so that the log block is a new data block (step 1504). That is, if the log block is changed to the new data block, since a physical address corresponding to the logical address is changed in view of the user, the address conversion information must be updated. Actually, the updated address conversion information can be written to a first free page in the map region. Similarly, the map region sequentially stores the address conversion information, and if a free page does not exist, a free block is allocated for the map region to write the information to the allocated free block. The allocation of a free block is made in the same manner as described with reference to FIG. 14. Then, the data block is changed to an erasable block, the data block is erased, and a free block list recorded in the check point region is updated (step 1505).
If any pages in the log block are not arranged at the same position as a corresponding page of the data block, a simple merge is performed. Similarly, the processor 4 writes recovery information to the check point region before performing a simple merge (step 1506). The step 1506 may be omitted according to the choice of the system designer. Then, free blocks are allocated to copy valid pages of the log block to some of the free blocks (step 1507). Corresponding pages of the data block are copied to the remaining free blocks (step 1508). Address conversion information in the map region is updated so that the free blocks are new data blocks (step 1509). The allocation of free blocks is made in the manner described with reference to FIG. 14. The log block and the data block are changed to an erasable block, the log block and the data block are erased, and a free block list recorded in the check point region is updated (step 1510).
If all pages of the log block are arranged in the same manner in which those of the data block are arranged but some of the pages in the data block do not exist in the log block, a copy merge is performed. Similarly, the processor 4 writes recovery information to the check point region before performing a copy merge (step 1511).
The step 1511 may be omitted according to the choice of the system designer. Then, valid pages of the data block are read to copy them to the log block (step 1512). Address conversion information stored in the map region is updated so that the log block is a new data block (step 1504), and then the data block is erased and a free block list stored in the check point region is updated (step 1505).
In this way, if the log block for updating data is not found, a free block is allocated, the free block is changed to a log block, and writing to the log block is performed. If only one free block remains so it is not allocated as a log block, one of the existing log blocks is arbitrarily selected to perform a block merge, thereby creating a new free block. Then, the free block is allocated as a log block. In this invention, costs required for a block merge and usability of blocks should be appropriately considered. The usability of blocks may vary depending on the type of application program to be executed. Replacement algorithms may not be specified in this invention. Thus, the present invention may be implemented using common replacement algorithms such as least recently used (LRU).
As described above, the present invention provides a method for flash memory management for improving the performance of a flash memory. Conventionally, in order to update a part of one data block, the remaining parts are also copied or a large amount of address conversion information is needed. However, the present invention allows the same page to be continuously updated within one log block, thereby improving the effectiveness of flash memory resources. Furthermore, the present invention allows data to be recovered consistently in the event that a system malfunctions due to power outage during a block merge.

Claims (27)

1. A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page to which data has been written;
(b) writing the predetermined data to a log block corresponding to a data block containing the page;
(c) receiving a request to write the predetermined data to the page again; and
(d) writing the predetermined data to an empty free page in the log block.
2. The method of claim 1, wherein the step (b) comprises the step (b11) of writing the predetermined data to an empty free page.
3. The method of claim 1 A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page to which data has been written;
(b) writing the predetermined data to a log block corresponding to a data block containing the page;
(c) receiving a request to write the predetermined data to the page again; and
(d) writing the predetermined data to an empty free page in the log block,
wherein the step (b) comprises the steps of:
(b21) allocating the log block; and
(b22) writing the predetermined data to an empty page at the same position as the requested page in the data block.
4. The method of claim 1, wherein the data block is configured to store data and the log block is configured to store data which has been modified.
5. A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page;
(b) allocating a log block 1-1 corresponding to a first data block containing the page;
(c) writing the predetermined data to an empty page in the log block 1-1;
(d) receiving a request to write the predetermined data to the page again; and
(e) writing the predetermined data to an empty free page in the log block 1-1.
6. The method of claim 5 A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page;
(b) allocating a log block 1-1 corresponding to a first data block containing the page;
(c) writing the predetermined data to an empty page in the log block 1-1;
(d) receiving a request to write the predetermined data to the page again; and
(e) writing the predetermined data to an empty free page in the log block 1-1,
wherein the step (b) comprises the steps of:
(b1) performing a block merge to create a third data block based on a second data block and a second log block corresponding to the second data block; and
(b2) allocating a free block obtained by performing an erase operation on the second data block as the log block 1-1.
7. The method of claim 6, wherein the step (b1) is performed when a free block to be allocated as the log block 1-1 does not exist.
8. The method of claim 6, wherein the step (b1) is performed when all pages of the existing log block corresponding to the first data block have been used.
9. The method of claim 6, wherein the step (b1) comprises the step of (b11) performing a switch merge to change the second log block to the third data block when pages of the second log block are arranged in the same order that pages of the second data block are arranged, and the pages of the second log block correspond one-to-one to the pages of the second data block.
10. The method of claim 6, wherein the step (b1) comprises the step of (b12) performing a copy merge to copy corresponding pages of the second data block to free pages in the second log block and create the third data block when the pages in the second log block are requested to be written only once.
11. The method of claim 6, wherein the step (b1) comprises the step of (13) performing a simple merge to copy the latest pages in the second log block to free pages of a free block to which data has not been written and copy a corresponding page of the second data block to the remaining free pages thereof, thereby creating the third data block.
12. The method of claim 5, wherein thestep (e) comprises the steps of:
(e1) allocating a new log block 1-2 if a free page does not exist in the log block 1-1 and
(e2) writing the predetermined data to a free page in the log block 1-2.
13. The method of claim 12 A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page;
(b) allocating a log block 1-1 corresponding to a first data block containing the page;
(c) writing the predetermined data to an empty page in the log block 1-1;
(d) receiving a request to write the predetermined data to the page again; and
(e) writing the predetermined data to an empty free page in the log block 1-1,
wherein the step (e) comprises the steps of:
(e1) allocating a new log block 1-2 if a free page does not exist in the log block 1-1, and
(e2) writing the predetermined data to a free page in the log block 1-2,
wherein the step (e1) comprises the steps of:
(e11) performing a switch merge to change the log block to a second data block when pages of the log block 1-1 are arranged in the order in which 5 pages of the first data block are arranged and the pages of the log block 1-1 correspond one-to-one to the pages of the first data block, and
(e12) allocating a free block obtained by performing an erase operation on the first data block as the log block 1-2.
14. The method of claim 12, wherein the step (e1) comprises the steps of: (e21) performing a copy merge to copy corresponding pages in the first data block to a free page in the log block 1-1 when pages in the log block 1-1 are requested to be written only once; and
(e22) allocating a free block obtained by performing an erase operation on the first data block as the log block 1-2.
15. The method of claim 12, A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page;
(b) allocating a log block 1-1 corresponding to a first data block containing the page;
(c) writing the predetermined data to an empty page in the log block 1-1;
(d) receiving a request to write the predetermined data to the page again; and
(e) writing the predetermined data to an empty free page in the log block 1-1,
wherein the step (e) comprises the steps of:
(e1) allocating a new log block 1-2 if a free page does not exist in the log block 1-1, and
(e2) writing the predetermined data to a free page in the log block 1-2, and
wherein the step (e1) comprises the steps of:
(e31) performing a simple merge to copy the latest pages in the log block 1-1 to free pages of a free block and copy a corresponding page of the first data block to the remaining free pages thereof, thereby creating a second data block; and
(e32) allocating a free block obtained by performing an erase operation on the first data block or the log block 1-1 as the log block 1-2.
16. The method of claim 12, A method for writing predetermined data to a flash memory, the method comprising the steps of:
(a) receiving a request to write the predetermined data to a page;
(b) allocating a log block 1-1 corresponding to a first data block containing the page;
(c) writing the predetermined data to an empty page in the log block 1-1;
(d) receiving a request to write the predetermined data to the page again; and
(e) writing the predetermined data to an empty free page in the log block 1-1,
wherein the step (e) comprises the steps of:
(e1) allocating a new log block 1-2 if a free page does not exist in the log block 1-1, and
(e2) writing the predetermined data to a free page in the log block 1-2, and
wherein the step (e2) comprises the step of (e21) writing the predetermined data to a free page at the same position as the requested page in the data block.
17. The method of claim 5, wherein the first data block is configured to store data and the log block 1-1 is configured to store data which has been modified.
18. A method for writing predetermined data to a flash memory comprising a plurality of data blocks and a plurality of log blocks, the method comprising:
(a) receiving a request to write the predetermined data to a page of a first data block, among the data blocks, to which data has been written;
(b) writing the predetermined data to a first log block, among the log blocks, corresponding to the first data block containing the page;
(c) receiving a request to write the predetermined data which has been modified, to the page again; and
(d) writing the predetermined data, which has been modified, to an empty page in the first log block,
wherein at least one of the steps (b) and (d) comprises writing the predetermined data to an empty page of the first log block, and
wherein the predetermined data is written to an empty page at the same position as the requested page in the first data block.
19. A method for writing predetermined data to a flash memory comprising a plurality of data blocks and a plurality of log blocks, the method comprising:
(a) receiving a request to write the predetermined data to a page of a first data block, among the data blocks, to which data has been written;
(b) writing the predetermined data to a first log block, among the log blocks, corresponding to the first data block containing the page;
(c) receiving a request to write the predetermined data which has been modified, to the page again; and
(d) writing the predetermined data, which has been modified, to an empty page in the first log block,
wherein the log block, in at least one of the steps (b) and (d), is obtained by allocating a free block as the first log block, and wherein the first log block in the writing step (d) can be the same log block used in the step (b) or a newly allocated log block, and
wherein the allocating the free block comprises:
performing a block merge of a pre-existing data block and a pre-existing log block, corresponding to the pre-existing data block, to create a new data block;
performing an erase operation of the pre-existing data block; and
allocating the erased, pre-existing block as the free block.
20. The method of claim 19, wherein the block merge is performed when a free block to be allocated as the first log block does not exist or when all pages of a pre-existing log block corresponding to the first data block have been used.
21. The method of claim 19, wherein the block merge is a switch merge comprising:
changing the pre-existing log block to a new data block, when pages of the pre-existing log block are arranged in the same order as and correspond one-to-one with pages of the preexisting data block.
22. The method of claim 21, wherein the pre-existing log block is the first log block and the pre-existing data block is the first data block.
23. The method of claim 19, wherein the block merge is a copy merge comprising:
copying corresponding pages of the pre-existing data block to empty pages in the corresponding pre-existing log block to create the new data block, when the pages in the pre-existing log block are requested to be written only once.
24. The method of claim 23, wherein the pre-existing data block is the first data block and the pre-existing log block is the first log block.
25. The method of claim 19, wherein the block merge is a simple merge comprising:
copying the latest pages in the pre-existing log block to empty pages of a free block, to which data has not been written, and copying corresponding pages of the pre-existing data block to the remaining empty pages thereof thereby creating the new data block.
26. The method of claim 25, wherein the performing an erase operation step is performed on either the pre-existing log block or the pre-existing data block, and wherein the allocating the free block step is performed all either the pre-existing log block or the pre-existing data block.
27. The method of claim 25, wherein the pre-existing data block is the first data block and the pre-existing log block is the first log block.
US11/848,005 2001-06-04 2007-08-30 Flash memory management method Expired - Lifetime USRE44052E1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US11/848,005 USRE44052E1 (en) 2001-06-04 2007-08-30 Flash memory management method
US13/134,225 USRE45222E1 (en) 2001-06-04 2011-06-02 Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US13/151,735 USRE45577E1 (en) 2001-06-04 2011-06-02 Method of writing to a flash memory including data blocks and log blocks
US14/628,462 USRE46404E1 (en) 2001-06-04 2015-02-23 Flash memory management method

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR2001-31124 2001-06-04
KR10-2001-0031124A KR100389867B1 (en) 2001-06-04 2001-06-04 Flash memory management method
US10/029,966 US6938116B2 (en) 2001-06-04 2001-12-31 Flash memory management method
US11/848,005 USRE44052E1 (en) 2001-06-04 2007-08-30 Flash memory management method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/029,966 Reissue US6938116B2 (en) 2001-06-04 2001-12-31 Flash memory management method

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US10/029,966 Division US6938116B2 (en) 2001-06-04 2001-12-31 Flash memory management method
US13/151,735 Division USRE45577E1 (en) 2001-06-04 2011-06-02 Method of writing to a flash memory including data blocks and log blocks

Publications (1)

Publication Number Publication Date
USRE44052E1 true USRE44052E1 (en) 2013-03-05

Family

ID=19710358

Family Applications (5)

Application Number Title Priority Date Filing Date
US10/029,966 Ceased US6938116B2 (en) 2001-06-04 2001-12-31 Flash memory management method
US11/848,005 Expired - Lifetime USRE44052E1 (en) 2001-06-04 2007-08-30 Flash memory management method
US13/134,225 Expired - Lifetime USRE45222E1 (en) 2001-06-04 2011-06-02 Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US13/151,735 Expired - Lifetime USRE45577E1 (en) 2001-06-04 2011-06-02 Method of writing to a flash memory including data blocks and log blocks
US14/628,462 Expired - Lifetime USRE46404E1 (en) 2001-06-04 2015-02-23 Flash memory management method

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/029,966 Ceased US6938116B2 (en) 2001-06-04 2001-12-31 Flash memory management method

Family Applications After (3)

Application Number Title Priority Date Filing Date
US13/134,225 Expired - Lifetime USRE45222E1 (en) 2001-06-04 2011-06-02 Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US13/151,735 Expired - Lifetime USRE45577E1 (en) 2001-06-04 2011-06-02 Method of writing to a flash memory including data blocks and log blocks
US14/628,462 Expired - Lifetime USRE46404E1 (en) 2001-06-04 2015-02-23 Flash memory management method

Country Status (4)

Country Link
US (5) US6938116B2 (en)
JP (1) JP3708047B2 (en)
KR (1) KR100389867B1 (en)
CN (1) CN1322428C (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130151644A1 (en) * 2008-02-12 2013-06-13 Microsoft Corporation Copying data onto an expandable memory
USRE48983E1 (en) * 2008-12-11 2022-03-22 Toshiba Memory Corporation Memory device and controlling method of the same

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
JP3967121B2 (en) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ File system, file system control method, and program for controlling file system
US7111289B2 (en) * 2001-12-21 2006-09-19 Agere Systems, Inc. Method for implementing dual link list structure to enable fast link-list pointer updates
JP4358111B2 (en) * 2002-08-29 2009-11-04 パナソニック株式会社 Semiconductor memory device and data writing method to flash memory
KR100484485B1 (en) * 2002-10-01 2005-04-20 한국전자통신연구원 Method for storing data in non-volatile memory and apparatus therefor
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
JP3928724B2 (en) * 2003-02-20 2007-06-13 ソニー株式会社 Recording medium recording control method and recording medium recording control apparatus
JP4667243B2 (en) * 2003-08-29 2011-04-06 パナソニック株式会社 Nonvolatile storage device and writing method thereof
KR100608602B1 (en) 2003-12-10 2006-08-03 삼성전자주식회사 Flash memory, Mapping controlling apparatus and method for the same
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
KR100526188B1 (en) 2003-12-30 2005-11-04 삼성전자주식회사 Method for address mapping and managing mapping information, and flash memory thereof
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
KR100533683B1 (en) * 2004-02-03 2005-12-05 삼성전자주식회사 Data managing device and method for flash memory
JP4701618B2 (en) * 2004-02-23 2011-06-15 ソニー株式会社 Information processing apparatus, information processing method, and computer program
CN100437517C (en) * 2004-04-28 2008-11-26 松下电器产业株式会社 Nonvolatile storage device and data write method
US7877569B2 (en) 2004-04-28 2011-01-25 Panasonic Corporation Reduction of fragmentation in nonvolatile memory using alternate address mapping
JP4253272B2 (en) * 2004-05-27 2009-04-08 株式会社東芝 Memory card, semiconductor device, and control method of semiconductor memory
JP2006003966A (en) * 2004-06-15 2006-01-05 Oki Electric Ind Co Ltd Write method for flash memory
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
KR100568115B1 (en) 2004-06-30 2006-04-05 삼성전자주식회사 Incremental merge method and memory system using the same
KR100577384B1 (en) * 2004-07-28 2006-05-10 삼성전자주식회사 Method for page replacement using information on page
KR100695267B1 (en) * 2004-08-23 2007-03-14 에스케이 텔레콤주식회사 Method for Saving Storage Space of Random Access Memory Used in Mobile Phone
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
KR100684887B1 (en) * 2005-02-04 2007-02-20 삼성전자주식회사 Data storing device including flash memory and merge method of thereof
US20090172269A1 (en) * 2005-02-04 2009-07-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and associated data merge method
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
KR100703727B1 (en) 2005-01-12 2007-04-05 삼성전자주식회사 Non-volatile memory, Mappping controlling apparatus and method for the same
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
KR100684942B1 (en) 2005-02-07 2007-02-20 삼성전자주식회사 Adaptive flash memory control device with multiple mapping schemes and flash memory system havintg the same
KR100703753B1 (en) * 2005-04-14 2007-04-06 삼성전자주식회사 Apparatus and method for managing file system
US7275140B2 (en) * 2005-05-12 2007-09-25 Sandisk Il Ltd. Flash memory management method that is resistant to data corruption by power loss
KR100706246B1 (en) * 2005-05-24 2007-04-11 삼성전자주식회사 Memory card capable of improving read performance
JP4723921B2 (en) * 2005-06-13 2011-07-13 株式会社日立製作所 Storage control device and control method thereof
US20060294049A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Back-off mechanism for search
US7685380B1 (en) * 2005-06-29 2010-03-23 Xilinx, Inc. Method for using configuration memory for data storage and read operations
JP4533956B2 (en) * 2005-08-03 2010-09-01 サンディスク コーポレイション Free up data storage capacity of flash memory system
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
DE602006019263D1 (en) * 2005-08-03 2011-02-10 Sandisk Corp NON-VOLATILE MEMORY WITH BLOCK ADMINISTRATION
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7474559B1 (en) 2005-08-30 2009-01-06 Xilinx, Inc. Circuit and method for employing unused configuration memory cells as scratchpad memory
CN100573476C (en) * 2005-09-25 2009-12-23 深圳市朗科科技股份有限公司 Flash memory medium data management method
KR100801072B1 (en) * 2005-09-30 2008-02-11 삼성전자주식회사 Flash memory device, mapping apparatus and method for the same
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US20070136671A1 (en) * 2005-12-12 2007-06-14 Buhrke Eric R Method and system for directing attention during a conversation
US8914557B2 (en) * 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
EP1966701A2 (en) * 2005-12-21 2008-09-10 Nxp B.V. Memory with block-erasable locations
US7676474B2 (en) * 2005-12-22 2010-03-09 Sap Ag Systems and methods for finding log files generated by a distributed computer
EP1808863A1 (en) * 2006-01-16 2007-07-18 Deutsche Thomson-Brandt Gmbh Method and apparatus for recording high-speed input data into a matrix of memory devices
JP4898252B2 (en) * 2006-03-15 2012-03-14 パナソニック株式会社 Nonvolatile storage device and data management method thereof
US7861159B2 (en) * 2006-04-07 2010-12-28 Pp Associates, Lp Report generation with integrated quality management
JP2007280108A (en) * 2006-04-07 2007-10-25 Sony Corp Storage medium controller, storage medium control method, and program
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US20080005449A1 (en) * 2006-07-03 2008-01-03 Phison Electronics Corp. Generalized flash memory and method thereof
WO2008033952A2 (en) * 2006-09-15 2008-03-20 Sandisk Corporation Non-volatile memory and method for class-based update block replacement rules
JP4609406B2 (en) * 2006-10-12 2011-01-12 Tdk株式会社 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
KR100849221B1 (en) 2006-10-19 2008-07-31 삼성전자주식회사 Method for managing non-volatile memory, and memory-based apparatus including the non-volatile memory
KR100771521B1 (en) 2006-10-30 2007-10-30 삼성전자주식회사 Flash memory device having a multi-leveled cell and programming method thereof
KR100843135B1 (en) * 2006-11-20 2008-07-02 삼성전자주식회사 Apparatus and method for managing nonvolatile memory
JP2008152464A (en) 2006-12-15 2008-07-03 Toshiba Corp Storage device
US8560760B2 (en) * 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
KR100823171B1 (en) * 2007-02-01 2008-04-18 삼성전자주식회사 Computer system having a partitioned flash translation layer and flash translation layer partition method thereof
KR100885181B1 (en) * 2007-02-06 2009-02-23 삼성전자주식회사 Memory system performing group mapping operation and address mapping method thereof
KR100817087B1 (en) * 2007-02-13 2008-03-27 삼성전자주식회사 Method for operating buffer cache of storage device including flash memory
US7657572B2 (en) * 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
JP4468407B2 (en) * 2007-05-14 2010-05-26 フェリカネットワークス株式会社 Data management system, management server, data management method, and program
KR100857761B1 (en) * 2007-06-14 2008-09-10 삼성전자주식회사 Memory system performing wear levelling and write method thereof
KR101300821B1 (en) 2007-07-04 2013-08-26 삼성전자주식회사 Apparatus and method for preventing data loss of non-volatile memory
KR101472797B1 (en) * 2007-07-16 2014-12-15 삼성전자주식회사 Method and apparatus for reading or writing data
WO2009013877A1 (en) 2007-07-20 2009-01-29 Panasonic Corporation Memory controller, memory card, and nonvolatile memory system
KR101447188B1 (en) * 2007-07-31 2014-10-08 삼성전자주식회사 Method and apparatus for controlling I/O to optimize flash memory
JP2009139990A (en) * 2007-12-03 2009-06-25 Internatl Business Mach Corp <Ibm> Technology for preventing unauthorized access to information
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
CN101256564B (en) * 2007-12-25 2010-06-02 深圳市同洲电子股份有限公司 Method for operating circular file
KR101077339B1 (en) 2007-12-28 2011-10-26 가부시끼가이샤 도시바 Semiconductor storage device
KR101465789B1 (en) * 2008-01-24 2014-11-26 삼성전자주식회사 Write and merge methods in memory card systems for reducing the number of page copies
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8275945B2 (en) 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
KR101477047B1 (en) * 2008-02-29 2014-12-30 삼성전자주식회사 Memory system and block merge methods thereof
JP4745356B2 (en) * 2008-03-01 2011-08-10 株式会社東芝 Memory system
JP4498426B2 (en) * 2008-03-01 2010-07-07 株式会社東芝 Memory system
KR101067457B1 (en) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 Memory system
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP5132451B2 (en) * 2008-07-02 2013-01-30 株式会社リコー Image forming apparatus
JP2010020586A (en) * 2008-07-11 2010-01-28 Nec Electronics Corp Data processing device
CN101324903B (en) * 2008-07-24 2013-02-13 深圳市同洲电子股份有限公司 Method for changing circulation file into circulation linear file and access operation method thereof
KR101086857B1 (en) * 2008-07-25 2011-11-25 주식회사 팍스디스크 Control Method of Solid State Storage System for Data Merging
KR100954039B1 (en) * 2008-08-11 2010-04-20 (주)인디링스 Device and method of controlling flash memory
US20100057755A1 (en) * 2008-08-29 2010-03-04 Red Hat Corporation File system with flexible inode structures
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
KR101011434B1 (en) * 2008-10-28 2011-01-28 코오롱건설주식회사 Apparatus for supplying air for cleaning membrane of immersion type separation membrane filter tank
KR100970537B1 (en) * 2008-11-20 2010-07-16 서울시립대학교 산학협력단 Method and device for managing solid state drive
KR101022001B1 (en) * 2008-12-08 2011-03-17 주식회사 이스트후 Flash memory system and method for managing flash memory
CN101763320B (en) * 2008-12-24 2011-11-30 鸿富锦精密工业(深圳)有限公司 Storage method
KR101028929B1 (en) * 2008-12-31 2011-04-12 성균관대학교산학협력단 Methods of Distributing Log Block Associativity in Real-time System And Flash Memory Device Performing the Same
KR101581859B1 (en) * 2009-02-27 2016-01-21 삼성전자주식회사 Memory system and data managing method of flash translation layer therof
KR100994052B1 (en) 2009-05-06 2010-11-11 성균관대학교산학협력단 Data management method in flash translation layer and flash memory apparatus performing the same
TWI457940B (en) * 2009-05-15 2014-10-21 Macronix Int Co Ltd Byte-access in block-based flash memory
US8447922B2 (en) 2009-07-16 2013-05-21 Panasonic Corporation Memory controller, nonvolatile storage device, accessing device, and nonvolatile storage system
KR101143397B1 (en) 2009-07-29 2012-05-23 에스케이하이닉스 주식회사 Semiconductor Storage System Decreasing of Page Copy Frequency and Controlling Method thereof
KR20110018157A (en) * 2009-08-17 2011-02-23 삼성전자주식회사 Method for accessing flash memory device
TWI446349B (en) 2010-03-04 2014-07-21 Phison Electronics Corp Non-volatile memory access method and system, and non-volatile memory controller
CN103473182B (en) * 2010-03-12 2016-05-11 群联电子股份有限公司 Non-volatility memorizer access method and nonvolatile memory controller
US20110283044A1 (en) * 2010-05-11 2011-11-17 Seagate Technology Llc Device and method for reliable data storage
US20110289289A1 (en) * 2010-05-20 2011-11-24 Microsoft Corporation Backup and restore of items using bounded checkpoint and log buffers in memory
WO2012169038A1 (en) * 2011-06-09 2012-12-13 Necディスプレイソリューションズ株式会社 Electronic apparatus, power supply operation log recording method, and recording medium
TWI521343B (en) 2011-08-01 2016-02-11 Toshiba Kk An information processing device, a semiconductor memory device, and a semiconductor memory device
CN102521289B (en) * 2011-11-29 2013-12-04 华为技术有限公司 File synchronization method, device and system
WO2013091167A1 (en) * 2011-12-21 2013-06-27 华为技术有限公司 Log storage method and system
US8966205B1 (en) 2012-05-10 2015-02-24 Western Digital Technologies, Inc. System data management using garbage collection and hybrid self mapping
US8984247B1 (en) * 2012-05-10 2015-03-17 Western Digital Technologies, Inc. Storing and reconstructing mapping table data in a data storage system
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
KR101997572B1 (en) * 2012-06-01 2019-07-09 삼성전자주식회사 Storage device having nonvolatile memory device and write method tererof
KR102147359B1 (en) * 2012-06-29 2020-08-24 삼성전자 주식회사 Method for managing non-volatile memory device, and non-volatile memory device
KR20140078893A (en) * 2012-12-18 2014-06-26 에스케이하이닉스 주식회사 Operating method for data storage device
CN103077118A (en) * 2012-12-28 2013-05-01 深圳市硅格半导体有限公司 Method and system for recovering invalid data
KR102069273B1 (en) * 2013-03-11 2020-01-22 삼성전자주식회사 System on chip and operating method thereof
US9471485B2 (en) 2013-03-12 2016-10-18 Macronix International Co., Ltd. Difference L2P method
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR101519069B1 (en) * 2013-12-03 2015-05-12 에스케이텔레콤 주식회사 Memory apparatus and control method thereof
WO2015096698A1 (en) * 2013-12-24 2015-07-02 飞天诚信科技股份有限公司 Data writing and reading methods for flash
CN103778964B (en) * 2013-12-30 2016-08-17 上海晨思电子科技有限公司 Process, using method and the device of a kind of NAND Flash programming data, system
CN104021088B (en) * 2014-06-24 2017-11-21 广东睿江云计算股份有限公司 log storing method and device
JP2016018473A (en) * 2014-07-10 2016-02-01 株式会社東芝 Semiconductor storage device, memory controller, and memory controller control method
TWI512609B (en) * 2014-09-05 2015-12-11 Silicon Motion Inc Methods for scheduling read commands and apparatuses using the same
KR102474937B1 (en) 2016-03-21 2022-12-07 에스케이하이닉스 주식회사 Data storage device and operating method thereof
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
RU2636107C1 (en) * 2016-10-28 2017-11-20 Общество с ограниченной ответственностью "Лаборатория информационно-измерительной и преобразовательной техники" Method of recording data to digital information drive on basis of nand type flash-memory
US9905294B1 (en) 2017-05-03 2018-02-27 Seagate Technology Llc Writing logically offset pages of data to N-level memory cells coupled to a common word line
TWI650660B (en) * 2017-09-21 2019-02-11 和碩聯合科技股份有限公司 Transactional data access method and electronic apparatus
CN109800178B (en) 2017-11-17 2023-05-16 爱思开海力士有限公司 Garbage collection method and memory system for hybrid address mapping
US10884947B2 (en) 2017-11-17 2021-01-05 SK Hynix Inc. Methods and memory systems for address mapping
US11947839B2 (en) 2021-05-10 2024-04-02 Samsung Electronics Co., Ltd. Storage device, system, and method for customizable metadata

Citations (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05241741A (en) 1990-12-31 1993-09-21 Intel Corp Non-volatile semiconductor memory and computer system using this
JPH05282889A (en) 1992-03-31 1993-10-29 Toshiba Corp Nonvolatile semiconductor memory
US5266133A (en) 1993-02-17 1993-11-30 Sika Corporation Dry expansible sealant and baffle composition and product
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH07154870A (en) 1993-11-26 1995-06-16 Sharp Corp Home controller
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5528764A (en) 1992-12-24 1996-06-18 Ncr Corporation Bus system with cache snooping signals having a turnaround time between agents driving the bus for keeping the bus from floating for an extended period
US5530828A (en) * 1992-06-22 1996-06-25 Hitachi, Ltd. Semiconductor storage device including a controller for continuously writing data to and erasing data from a plurality of flash memories
JPH0997205A (en) 1995-09-28 1997-04-08 Canon Inc Method, device for managing flash rom and computer control equipment
US5696929A (en) 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
US5717886A (en) 1995-06-06 1998-02-10 Mitsubishi Denki Kabushiki Kaisha Semiconductor disk device and memory management method
JPH1040175A (en) 1996-07-19 1998-02-13 Canon Inc Method for managing storage of flash rom and apparatus therefor
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
US5778427A (en) 1995-07-07 1998-07-07 Sun Microsystems, Inc. Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure
US5802554A (en) * 1995-02-28 1998-09-01 Panasonic Technologies Inc. Method and system for reducing memory access latency by providing fine grain direct access to flash memory concurrent with a block transfer therefrom
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5860083A (en) * 1996-11-26 1999-01-12 Kabushiki Kaisha Toshiba Data storage system having flash memory and disk drive
WO1999021093A1 (en) 1997-10-16 1999-04-29 M-Systems Flash Disk Pioneers Ltd. Improved flash file system
US5956473A (en) 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5999446A (en) * 1989-04-13 1999-12-07 Sandisk Corporation Multi-state flash EEprom system with selective multi-sector erase
US6263398B1 (en) * 1998-02-10 2001-07-17 Ramtron International Corporation Integrated circuit memory device incorporating a non-volatile memory array and a relatively faster access time memory cache
US6298428B1 (en) 1998-03-30 2001-10-02 International Business Machines Corporation Method and apparatus for shared persistent virtual storage on existing operating systems
US20010040827A1 (en) * 1991-04-18 2001-11-15 Katsumi Dosaka Semiconductor memory device
US6327639B1 (en) 1997-12-11 2001-12-04 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US20020002652A1 (en) 2000-01-28 2002-01-03 Nec Corporation Method of rewriting program in flash microcomputer
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
US20020144059A1 (en) 2001-03-28 2002-10-03 Kendall Terry L. Flash memory low-latency cache
US20020166022A1 (en) 1998-08-03 2002-11-07 Shigeo Suzuki Access control method, access control apparatus, and computer-readable memory storing access control program
US6564286B2 (en) * 2001-03-07 2003-05-13 Sony Corporation Non-volatile memory system for instant-on
US6587915B1 (en) 1999-09-29 2003-07-01 Samsung Electronics Co., Ltd. Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same
US6704835B1 (en) * 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US20050144358A1 (en) * 2003-12-30 2005-06-30 Conley Kevin M. Management of non-volatile memory systems having large erase blocks

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226133A (en) * 1989-12-01 1993-07-06 Silicon Graphics, Inc. Two-level translation look-aside buffer using partial addresses for enhanced speed
JPH06222986A (en) * 1993-01-26 1994-08-12 Oki Electric Ind Co Ltd Memory controller
JP3507132B2 (en) * 1994-06-29 2004-03-15 株式会社日立製作所 Storage device using flash memory and storage control method thereof
JP3706167B2 (en) * 1995-02-16 2005-10-12 株式会社ルネサステクノロジ Semiconductor disk device
JPH09185551A (en) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp Semiconductor memory device
KR980010782A (en) * 1996-07-02 1998-04-30 이대원 How to overwrite flash memory
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
EP0968468B1 (en) * 1997-03-21 2003-02-26 Canal+ Technologies Computer memory organization and method therefor
IL135642A0 (en) * 1997-10-16 2001-05-20 Univ Manchester Timing circuit
US6327638B1 (en) 1998-06-30 2001-12-04 Lsi Logic Corporation Disk striping method and storage subsystem using same
KR20000039727A (en) * 1998-12-15 2000-07-05 구자홍 Method for approaching flash memory
JP2001006379A (en) * 1999-06-16 2001-01-12 Fujitsu Ltd Flash memory having copying and transfer functions
KR100703680B1 (en) * 1999-10-14 2007-04-05 삼성전자주식회사 Flash file system
JP3734408B2 (en) 2000-07-03 2006-01-11 シャープ株式会社 Semiconductor memory device

Patent Citations (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999446A (en) * 1989-04-13 1999-12-07 Sandisk Corporation Multi-state flash EEprom system with selective multi-sector erase
JPH05241741A (en) 1990-12-31 1993-09-21 Intel Corp Non-volatile semiconductor memory and computer system using this
US20010040827A1 (en) * 1991-04-18 2001-11-15 Katsumi Dosaka Semiconductor memory device
JPH05282889A (en) 1992-03-31 1993-10-29 Toshiba Corp Nonvolatile semiconductor memory
US5530828A (en) * 1992-06-22 1996-06-25 Hitachi, Ltd. Semiconductor storage device including a controller for continuously writing data to and erasing data from a plurality of flash memories
US5528764A (en) 1992-12-24 1996-06-18 Ncr Corporation Bus system with cache snooping signals having a turnaround time between agents driving the bus for keeping the bus from floating for an extended period
US5266133A (en) 1993-02-17 1993-11-30 Sika Corporation Dry expansible sealant and baffle composition and product
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
JPH07154870A (en) 1993-11-26 1995-06-16 Sharp Corp Home controller
US5802554A (en) * 1995-02-28 1998-09-01 Panasonic Technologies Inc. Method and system for reducing memory access latency by providing fine grain direct access to flash memory concurrent with a block transfer therefrom
US5717886A (en) 1995-06-06 1998-02-10 Mitsubishi Denki Kabushiki Kaisha Semiconductor disk device and memory management method
US5778427A (en) 1995-07-07 1998-07-07 Sun Microsystems, Inc. Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
JPH0997205A (en) 1995-09-28 1997-04-08 Canon Inc Method, device for managing flash rom and computer control equipment
US5696929A (en) 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
JPH1040175A (en) 1996-07-19 1998-02-13 Canon Inc Method for managing storage of flash rom and apparatus therefor
US5933368A (en) 1996-11-25 1999-08-03 Macronix International Co., Ltd. Flash memory mass storage system
US5956473A (en) 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
US5860083A (en) * 1996-11-26 1999-01-12 Kabushiki Kaisha Toshiba Data storage system having flash memory and disk drive
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP2001521220A (en) 1997-10-16 2001-11-06 エム システムズ フラッシュ ディスク パイオニアズ リミテッド Improved flash file system
WO1999021093A1 (en) 1997-10-16 1999-04-29 M-Systems Flash Disk Pioneers Ltd. Improved flash file system
US6327639B1 (en) 1997-12-11 2001-12-04 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6263398B1 (en) * 1998-02-10 2001-07-17 Ramtron International Corporation Integrated circuit memory device incorporating a non-volatile memory array and a relatively faster access time memory cache
US6298428B1 (en) 1998-03-30 2001-10-02 International Business Machines Corporation Method and apparatus for shared persistent virtual storage on existing operating systems
US20020166022A1 (en) 1998-08-03 2002-11-07 Shigeo Suzuki Access control method, access control apparatus, and computer-readable memory storing access control program
US6587915B1 (en) 1999-09-29 2003-07-01 Samsung Electronics Co., Ltd. Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same
US20020002652A1 (en) 2000-01-28 2002-01-03 Nec Corporation Method of rewriting program in flash microcomputer
US6704835B1 (en) * 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US6564286B2 (en) * 2001-03-07 2003-05-13 Sony Corporation Non-volatile memory system for instant-on
US20020144059A1 (en) 2001-03-28 2002-10-03 Kendall Terry L. Flash memory low-latency cache
US6836816B2 (en) * 2001-03-28 2004-12-28 Intel Corporation Flash memory low-latency cache
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US20050144358A1 (en) * 2003-12-30 2005-06-30 Conley Kevin M. Management of non-volatile memory systems having large erase blocks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jim Handy, The Cache Memory Book, Academic Press, 1993, pp. 1-107 and 240-269. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130151644A1 (en) * 2008-02-12 2013-06-13 Microsoft Corporation Copying data onto an expandable memory
US9495323B2 (en) * 2008-02-12 2016-11-15 Microsoft Corporation Copying data onto an expandable memory
USRE48983E1 (en) * 2008-12-11 2022-03-22 Toshiba Memory Corporation Memory device and controlling method of the same
USRE49921E1 (en) * 2008-12-11 2024-04-16 Kioxia Corporation Memory device and controlling method of the same

Also Published As

Publication number Publication date
USRE45577E1 (en) 2015-06-23
JP3708047B2 (en) 2005-10-19
KR100389867B1 (en) 2003-07-04
JP2002366423A (en) 2002-12-20
USRE46404E1 (en) 2017-05-16
USRE45222E1 (en) 2014-10-28
CN1322428C (en) 2007-06-20
US20020184436A1 (en) 2002-12-05
CN1389790A (en) 2003-01-08
US6938116B2 (en) 2005-08-30
KR20020092487A (en) 2002-12-12

Similar Documents

Publication Publication Date Title
USRE46404E1 (en) Flash memory management method
JP4633802B2 (en) Nonvolatile storage device, data read method, and management table creation method
JP5571691B2 (en) Maintaining mapping address tables in storage
US8028120B2 (en) System with flash memory device and data recovery method thereof
US8135939B2 (en) Robust index storage for non-volatile memory
JP4695801B2 (en) Method and apparatus for reducing block write operation time performed on non-volatile memory
US9489296B1 (en) Methods, devices and systems for hardware-based garbage collection in solid state drives
US20070094440A1 (en) Enhanced data access in a storage device
US20070016719A1 (en) Memory device including nonvolatile memory and memory controller
KR20150083264A (en) System and method for efficient address translation on Flash memory device
JPH06250798A (en) Batch erasure type nonvolatile memory and semiconductor disk device using it
KR20070096429A (en) Fast mounting for a file system on nand flash memory
US6839798B1 (en) Flash memory capable of storing frequently rewritten data
US7058784B2 (en) Method for managing access operation on nonvolatile memory and block structure thereof
US20030046482A1 (en) Data management in flash memory
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
KR100745163B1 (en) Method for managing flash memory using dynamic mapping table
US11182286B2 (en) Data storage device and control method for non-volatile memory
US11500775B2 (en) File system management in memory device
KR20220097102A (en) Storage device including memory contoller and operating method of memory controller
KR100868674B1 (en) The method of managing flash memory
US20220164135A1 (en) Apparatus, method and computer program for managing memory page updates within non-volatile memory