US20160313936A1 - Double writing map table entries in a data storage system to guard against silent corruption - Google Patents
Double writing map table entries in a data storage system to guard against silent corruption Download PDFInfo
- Publication number
- US20160313936A1 US20160313936A1 US15/199,067 US201615199067A US2016313936A1 US 20160313936 A1 US20160313936 A1 US 20160313936A1 US 201615199067 A US201615199067 A US 201615199067A US 2016313936 A1 US2016313936 A1 US 2016313936A1
- Authority
- US
- United States
- Prior art keywords
- data
- location
- physical
- volatile memory
- memory
- 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.)
- Abandoned
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000001514 detection method Methods 0.000 claims abstract description 19
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Definitions
- Apparatuses and methods consistent with the present inventive concept relate to data storage systems, and more particularly to double writing of map table entries in a data storage system to avoid silent corruption.
- Map table entries may be stored in volatile memory such as dynamic random access memory (DRAM).
- DRAM dynamic random access memory
- map table entries are susceptible to silent corruption.
- FIG. 1 is a block diagram illustrating a data storage system according to an example embodiment of the present inventive concept
- FIG. 2 is a diagram illustrating a relationship between a map table and a physical memory
- FIG. 3 is a diagram illustrating an occurrence of silent corruption in a map table
- FIG. 4 is a flowchart illustrating a method for writing data in a storage device according to an example embodiment of the present inventive concept
- FIG. 5 is a diagram illustrating detection of a map table error according to an example embodiment of the present inventive concept
- FIG. 6 is a flow chart illustrating a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept
- FIGS. 7A and 7B are diagrams illustrating a relationship between a map table and a physical memory a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept.
- Example embodiments of the present inventive concept provide a method of guarding against silent corruption in a data storage system.
- FIG. 1 is a block diagram illustrating a data storage system according to an example embodiment of the present inventive concept.
- the data storage system 100 may include a host 120 and a data storage device (DSD) such as a solid-state drive (SSD) 110 .
- the SSD 110 may include a control unit 130 , a volatile memory 140 , for example, but not limited to, a plurality of dynamic random access memory (DRAM) devices or other volatile memory, and a non-volatile memory 150 , for example, but not limited to, a non-volatile semiconductor memory (NVSM).
- the NVSM may be, for example, but not limited to, NAND flash memory devices, NOR flash memory devices, or other NVSM memory devices.
- the host 120 may issue data read and write commands to the SSD 110 .
- the volatile memory 140 may store a map table.
- a DSD is generally a device that electronically stores data, so in other embodiments, the DSD may additionally include other types of memory such as rotational magnetic media (e.g., a solid-state hybrid drive (SSHD)).
- rotational magnetic media e.g., a solid-state hybrid drive (SSHD)
- FIG. 2 is a diagram illustrating a relationship between a map table and a non-volatile physical memory.
- the map table 210 may be arranged in the volatile memory 140 with memory locations 215 assigned according to a consecutive order (e.g., according to L-page address) and each memory location 215 may contain an entry of a physical address 230 of a physical memory location 225 in non-volatile memory 150 that holds data corresponding to a logical address of the data (L-page) 235 .
- the entries in the memory locations 215 in the map table 210 may be indexed at least in part according to the L-page 235 . Referring to FIG.
- data corresponding to L-page0 may be stored at a physical memory location 225 in the non-volatile memory 150 having a physical address 230 aaa
- data corresponding to L-page1 may be stored at a physical memory location 225 in the non-volatile memory 150 having a physical address 230 address bbb
- the map table 210 acts as a set of pointers to the physical memory locations 225 of L-page data in the non-volatile memory 150 .
- the new data will be written to a new physical memory location 225 in the non-volatile memory 150 .
- the entries in the memory locations 215 in the map table 210 for the updated L-page data must also be updated to refer to the physical addresses 230 of the new physical memory locations 225 of the data in the non-volatile memory 150 .
- FIG. 3 is a diagram illustrating an occurrence of silent corruption in a map table.
- Silent corruption occurs when an update to the map table 210 is written to the wrong map table entry.
- FIGS. 1, 2, and 3 an example scenario is described which involves a new write to L-page address 4001.
- the entry in the memory location 215 a i.e., the E-page location
- the update was erroneously written to the map table entry in the memory location 215 b corresponding to L-page C001 in the L-page indexed map table 210 . This could be caused by a bit flip in the L-page address 4001 to C0001.
- the map table entry in the memory location 215 a corresponding to L-page 4001 points to stale data stored at the old physical address in the non-volatile memory 150 .
- This is an undetectable problem because on the next request for L-page 4001 by the host 120 , no mechanism exists to determine that the map table entry in the memory location 215 b corresponding to L-page 4001 is stale.
- the entry in the memory location 215 of the physical address 230 for the physical memory location 225 in the non-volatile memory 150 is written with error detection code information 216 , for example, but not limited to, cyclic redundancy code (CRC), a hash value, etc., appended to the entry.
- error detection code information 216 is determined based at least in part on the L-page address 235 of the data stored at the physical memory location 225 in the non-volatile memory 150 .
- Some embodiments of the present inventive concept provide a double writing procedure to write each map table update twice to guard against the undetectable problem of silent corruption where an update to an entry is erroneously written to an incorrect location leaving the intended location pointing to stale data.
- the updated data is written to a different physical memory location 225 in non-volatile memory 150 than the original data.
- the updated data may be data received from a host 120 or may be data read from a physical address 230 of a physical memory location 225 in the non-volatile memory 150 , for example during garbage collection.
- the new physical address 230 corresponding to the updated data at the L-page 235 should be written to the map table 210 . In one embodiment, this is performed at least twice. First, the new physical address 230 is written to the map table entry in the memory location 215 corresponding to the L-page 235 for the data that was updated. Then, the same new physical address 230 is written a second time to the same map table entry in the memory location 215 .
- FIG. 4 is a flowchart illustrating a method for writing data in a storage device according to an example embodiment of the present inventive concept.
- the control unit 130 may be configured to receive data for an L-page 235 c from a host 120 ( 410 ), and write the data to a physical memory location 225 c at a physical address yyy 230 c in the non-volatile memory 150 ( 420 ).
- the control unit 130 may be configured to write for a first time the physical address yyy 230 c of the physical memory location 225 c containing the data corresponding to the L-page 235 c to the entry in the memory location 215 c in the map table 210 corresponding to the L-page 235 c ( 430 ).
- the control unit 130 may be further configured to write for a second time the physical address yyy 230 c to the entry in the memory location 215 c, thereby reducing the chance of silent corruption.
- FIG. 5 is a diagram illustrating detection of a map table error according to an example embodiment of the present inventive concept. As illustrated in FIG. 5 , if one update attempt writes to the incorrect entry in the memory location 215 b in the map table 210 but the second update attempt writes to the correct entry in the memory location 215 a in the map table 210 , the intended entry in the memory location 215 a in the map table 210 will have been correctly updated.
- the update to the incorrect entry in the memory location 215 b in the map table 210 is detectable by the error detection code 216 b, for example, a CRC mismatch due to the fact that the CRC is L-page value seeded, and an error will be reported when the incorrectly updated entry in the memory location 215 b in the map table 210 is subsequently read.
- example embodiments of the present inventive concept reduce the probability of map table errors resulting from update errors, and mitigate the undetectable silent corruption problem.
- FIG. 6 is a flow chart illustrating a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept.
- FIGS. 7A and 7B are diagrams illustrating a relationship between a map table and a physical memory a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept.
- the control unit 130 may be configured to read data corresponding to an L-page 235 c from a first physical location 225 c at a first physical address yyy 230 c in the non-volatile memory 150 ( 610 ), and to subsequently write the data corresponding to the L-page 235 c to a second physical memory location 225 d at a second physical address www 230 d in the non-volatile memory 150 ( 620 ).
- the control unit 130 may be further configured to modify the data that was read before subsequently writing the data to the second physical memory location 225 d.
- the control unit 130 may be configured to write for a first time the second physical address www 230 d of the second physical memory location 225 d containing the subsequently written data corresponding to the L-page 235 c to the entry in the memory location 215 c ( 630 ).
- the control unit 130 may be further configured to write for a second time the second physical address www 230 d to the entry in the memory location 215 c ( 640 ), thereby reducing the chance of silent corruption.
- Solid-state memory may comprise a wide variety of technologies, such as flash integrated circuits, Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NAND memory, NOR memory, EEPROM, Ferroelectric Memory (FeRAM), MRAM, or other discrete NVM (non-volatile solid-state memory) chips.
- PC-RAM or PRAM Phase Change Memory
- PMC-RAM or PMCm Programmable Metallization Cell RAM
- OFUM Ovonic Unified Memory
- RRAM Resistance RAM
- NAND memory NAND memory
- NOR memory NOR memory
- EEPROM Ferroelectric Memory
- FeRAM Ferroelectric Memory
- MRAM Magnetoelectric Memory
- other forms of storage for example, but not limited to, DRAM or SRAM, battery backed-up volatile DRAM or SRAM devices, EPROM, EEPROM memory, etc., may additionally or alternatively be used.
- various components illustrated in the figures may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware.
- the features and attributes of the specific example embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure.
Abstract
A method for writing data in a data storage device includes: writing data to a physical memory location in a non-volatile memory; writing, for a first time, to a location in a volatile memory corresponding to a logical address of the data, a physical address of the physical memory location of the non-volatile memory containing the data; and writing, for a second time, to the location in the volatile memory corresponding to the logical address of the data, the address of the physical memory location of the non-volatile memory containing the data. The physical address of the physical memory location is written with appended error detection code information, and the error detection code information is determined based on the logical address of the data.
Description
- This application is a continuation application of U.S. patent application Ser. No. 14/250,212, filed Apr. 10, 2014, which claims the benefit of U.S. provisional application No. 61/943,780 filed Feb. 24, 2014, the disclosures of which are hereby incorporated in their entireties by reference.
- 1. Technical Field
- Apparatuses and methods consistent with the present inventive concept relate to data storage systems, and more particularly to double writing of map table entries in a data storage system to avoid silent corruption.
- 2. Related Art
- Any data storage device that uses address indirection relies on a map table to point to a physical location of a latest copy of data at various logical page (L-page) addresses. Thus, the map table serves an important function of maintaining a logical-to-physical correspondence of stored data. Map table entries may be stored in volatile memory such as dynamic random access memory (DRAM). However, map table entries are susceptible to silent corruption.
- Aspects and features of the present inventive concept will be more apparent by describing example embodiments with reference to the accompanying drawings, in which:
-
FIG. 1 is a block diagram illustrating a data storage system according to an example embodiment of the present inventive concept; -
FIG. 2 is a diagram illustrating a relationship between a map table and a physical memory; -
FIG. 3 is a diagram illustrating an occurrence of silent corruption in a map table; -
FIG. 4 is a flowchart illustrating a method for writing data in a storage device according to an example embodiment of the present inventive concept; -
FIG. 5 is a diagram illustrating detection of a map table error according to an example embodiment of the present inventive concept; -
FIG. 6 is a flow chart illustrating a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept and -
FIGS. 7A and 7B are diagrams illustrating a relationship between a map table and a physical memory a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept. - While certain embodiments are described, these embodiments are presented by way of example only, and are not intended to limit the scope of protection. The methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes in the form of the example methods and systems described herein may be made without departing from the scope of protection.
- Example embodiments of the present inventive concept provide a method of guarding against silent corruption in a data storage system.
-
FIG. 1 is a block diagram illustrating a data storage system according to an example embodiment of the present inventive concept. Thedata storage system 100 may include ahost 120 and a data storage device (DSD) such as a solid-state drive (SSD) 110. The SSD 110 may include acontrol unit 130, avolatile memory 140, for example, but not limited to, a plurality of dynamic random access memory (DRAM) devices or other volatile memory, and anon-volatile memory 150, for example, but not limited to, a non-volatile semiconductor memory (NVSM). The NVSM may be, for example, but not limited to, NAND flash memory devices, NOR flash memory devices, or other NVSM memory devices. Thehost 120 may issue data read and write commands to the SSD 110. Thevolatile memory 140 may store a map table. A DSD is generally a device that electronically stores data, so in other embodiments, the DSD may additionally include other types of memory such as rotational magnetic media (e.g., a solid-state hybrid drive (SSHD)). -
FIG. 2 is a diagram illustrating a relationship between a map table and a non-volatile physical memory. As illustrated inFIGS. 1 and 2 , the map table 210 may be arranged in thevolatile memory 140 withmemory locations 215 assigned according to a consecutive order (e.g., according to L-page address) and eachmemory location 215 may contain an entry of aphysical address 230 of aphysical memory location 225 innon-volatile memory 150 that holds data corresponding to a logical address of the data (L-page) 235. The entries in thememory locations 215 in the map table 210 may be indexed at least in part according to the L-page 235. Referring toFIG. 2 , data corresponding to L-page0 may be stored at aphysical memory location 225 in the non-volatilememory 150 having aphysical address 230 aaa, data corresponding to L-page1 may be stored at aphysical memory location 225 in thenon-volatile memory 150 having aphysical address 230 address bbb, etc. Thus, the map table 210 acts as a set of pointers to thephysical memory locations 225 of L-page data in thenon-volatile memory 150. Each time L-page data is updated, the new data will be written to a newphysical memory location 225 in thenon-volatile memory 150. Accordingly, the entries in thememory locations 215 in the map table 210 for the updated L-page data must also be updated to refer to thephysical addresses 230 of the newphysical memory locations 225 of the data in thenon-volatile memory 150. -
FIG. 3 is a diagram illustrating an occurrence of silent corruption in a map table. Silent corruption occurs when an update to the map table 210 is written to the wrong map table entry. Referring toFIGS. 1, 2, and 3 , an example scenario is described which involves a new write to L-page address 4001. In this example, the entry in thememory location 215 a (i.e., the E-page location) in the map table 210 in thevolatile memory 140 corresponding to data for L-page 4001 should have been updated. However, the update was erroneously written to the map table entry in thememory location 215 b corresponding to L-page C001 in the L-page indexed map table 210. This could be caused by a bit flip in the L-page address 4001 to C0001. Hence, the map table entry in thememory location 215 a corresponding to L-page 4001 points to stale data stored at the old physical address in thenon-volatile memory 150. This is an undetectable problem because on the next request for L-page 4001 by thehost 120, no mechanism exists to determine that the map table entry in thememory location 215 b corresponding to L-page 4001 is stale. - In the map table 210, the entry in the
memory location 215 of thephysical address 230 for thephysical memory location 225 in thenon-volatile memory 150 is written with errordetection code information 216, for example, but not limited to, cyclic redundancy code (CRC), a hash value, etc., appended to the entry. The errordetection code information 216 is determined based at least in part on the L-page address 235 of the data stored at thephysical memory location 225 in thenon-volatile memory 150. However, a check of the errordetection code information 216 a in the map table entry in thememory location 215 a corresponding to the stale data at L-page 4001 will evaluate correctly since the errordetection code information 216 a is seeded with the value of L-page 4001. Accordingly, the stale data will be passed to thehost 120 undetected. The undetectable the stale data problem is termed “silent corruption” of data. Note that, however, the errordetection code information 216 b is effective in triggering an error condition, since errordetection code information 216 b is generated based on L-page 4001, but it is written in the entry for L-page C001 which will generate a mismatch. - Some embodiments of the present inventive concept provide a double writing procedure to write each map table update twice to guard against the undetectable problem of silent corruption where an update to an entry is erroneously written to an incorrect location leaving the intended location pointing to stale data.
- As discussed above, when data corresponding to an L-
page 235 is updated, the updated data is written to a differentphysical memory location 225 innon-volatile memory 150 than the original data. The updated data may be data received from ahost 120 or may be data read from aphysical address 230 of aphysical memory location 225 in thenon-volatile memory 150, for example during garbage collection. In either case, the newphysical address 230 corresponding to the updated data at the L-page 235 should be written to the map table 210. In one embodiment, this is performed at least twice. First, the newphysical address 230 is written to the map table entry in thememory location 215 corresponding to the L-page 235 for the data that was updated. Then, the same newphysical address 230 is written a second time to the same map table entry in thememory location 215. - By writing twice, the chance of silent corruption is reduced. Given that the probability of writing an update to the wrong location in the map table is 1/P, the probability of writing an update to the wrong location twice becomes 1/P×1/P=1/P2.
- If both update attempts write to the same correct L-page indexed location of the map table 210 no problem is caused and a subsequent read at that L-
page 235 would return the correct data. -
FIG. 4 is a flowchart illustrating a method for writing data in a storage device according to an example embodiment of the present inventive concept. Referring toFIGS. 1 , 2, and 4, thecontrol unit 130 may be configured to receive data for an L-page 235 c from a host 120 (410), and write the data to aphysical memory location 225 c at a physical address yyy 230 c in the non-volatile memory 150 (420). - The
control unit 130 may be configured to write for a first time the physical address yyy 230 c of thephysical memory location 225 c containing the data corresponding to the L-page 235 c to the entry in thememory location 215 c in the map table 210 corresponding to the L-page 235 c (430). Thecontrol unit 130 may be further configured to write for a second time the physical address yyy 230 c to the entry in thememory location 215 c, thereby reducing the chance of silent corruption. -
FIG. 5 is a diagram illustrating detection of a map table error according to an example embodiment of the present inventive concept. As illustrated inFIG. 5 , if one update attempt writes to the incorrect entry in thememory location 215 b in the map table 210 but the second update attempt writes to the correct entry in thememory location 215 a in the map table 210, the intended entry in thememory location 215 a in the map table 210 will have been correctly updated. The update to the incorrect entry in thememory location 215 b in the map table 210 is detectable by theerror detection code 216 b, for example, a CRC mismatch due to the fact that the CRC is L-page value seeded, and an error will be reported when the incorrectly updated entry in thememory location 215 b in the map table 210 is subsequently read. - Thus, example embodiments of the present inventive concept reduce the probability of map table errors resulting from update errors, and mitigate the undetectable silent corruption problem.
-
FIG. 6 is a flow chart illustrating a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept.FIGS. 7A and 7B are diagrams illustrating a relationship between a map table and a physical memory a method for writing data in a storage device after a memory read according to an example embodiment of the present inventive concept. - Referring to
FIGS. 1, 6, 7A, and 7B , thecontrol unit 130 may be configured to read data corresponding to an L-page 235 c from a firstphysical location 225 c at a first physical address yyy 230 c in the non-volatile memory 150 (610), and to subsequently write the data corresponding to the L-page 235 c to a secondphysical memory location 225 d at a secondphysical address www 230 d in the non-volatile memory 150 (620). Thecontrol unit 130 may be further configured to modify the data that was read before subsequently writing the data to the secondphysical memory location 225 d. - The
control unit 130 may be configured to write for a first time the secondphysical address www 230 d of the secondphysical memory location 225 d containing the subsequently written data corresponding to the L-page 235 c to the entry in thememory location 215 c (630). Thecontrol unit 130 may be further configured to write for a second time the secondphysical address www 230 d to the entry in thememory location 215 c (640), thereby reducing the chance of silent corruption. - While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the protection. The methods and systems described herein may be embodied in a variety of other forms. Various omissions, substitutions, and/or changes in the form of the example methods and systems described herein may be made without departing from the spirit of the protection.
- The example embodiments disclosed herein can be applied to solid state drives, hybrid hard drives, and the like. Solid-state memory may comprise a wide variety of technologies, such as flash integrated circuits, Phase Change Memory (PC-RAM or PRAM), Programmable Metallization Cell RAM (PMC-RAM or PMCm), Ovonic Unified Memory (OUM), Resistance RAM (RRAM), NAND memory, NOR memory, EEPROM, Ferroelectric Memory (FeRAM), MRAM, or other discrete NVM (non-volatile solid-state memory) chips. In addition, other forms of storage, for example, but not limited to, DRAM or SRAM, battery backed-up volatile DRAM or SRAM devices, EPROM, EEPROM memory, etc., may additionally or alternatively be used. As another example, various components illustrated in the figures may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware. Also, the features and attributes of the specific example embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure.
- Although the present disclosure provides certain example embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
Claims (20)
1. A method for writing data in a data storage device using a control unit, the method comprising:
writing, by the control unit, data to a physical memory location in a non-volatile memory;
sending, by the control unit, a first update request corresponding to the data to write a physical address of the physical memory location to a location in a table corresponding to a logical address of the data; and
sending, by the control unit, a second update request corresponding to the data to write the physical address of the physical memory location to the location in the table corresponding to the logical address of the data.
2. The method of claim 1 , wherein sending the second update request reduces a probability of writing the physical address of the physical memory location to a wrong location in the table.
3. The method of claim 1 , wherein the table resides in a volatile memory.
4. The method of claim 1 , wherein the table is arranged with memory locations assigned according to a consecutive order.
5. The method of claim 1 , wherein the first update request and the second update request cause error detection code information to be appended to the physical address written to the table.
6. The method of claim 5 , wherein the error detection code information is determined based on the logical address of the data.
7. The method of claim 5 , further comprising detecting incorrect information at a particular location in the table by detecting a mismatch between the error detection code information stored at the particular location and predetermined error detection code information associated with the particular location at the table.
8. The method of claim 1 , further comprising reading the data from another physical address of the non-volatile memory prior to writing the data to the physical memory location.
9. The method of claim 8 , further comprising modifying the data read from the other physical address of the non-volatile memory prior to writing the data to the physical memory location.
10. The method of claim 1 , wherein the non-volatile memory comprises NAND flash memory devices.
11. The method of claim 3 , wherein the volatile memory is dynamic random access memory (DRAM).
12. A data storage device, comprising:
a non-volatile memory;
a control unit configured to:
write data to a physical memory location in the non-volatile memory;
send a first update request corresponding to the data to write a physical address of the physical memory location to a location in a table corresponding to a logical address of the data; and
send a second update request corresponding to the data to write the physical address of the physical memory location to the location in the table corresponding to the logical address of the data.
13. The data storage device of claim 12 , wherein the second update request reduces a probability of writing the physical address of the physical memory location to a wrong location in the table.
14. The data storage device of claim 12 , further comprising a volatile memory configured to maintain the table.
15. The data storage device of claim 12 , wherein the first update request and the second update request cause error detection code information to be appended to the physical address written to the table.
16. The data storage device of claim 15 , wherein the error detection code information is determined based on the logical address of the data.
17. The data storage device of claim 15 , wherein the control unit is configured to detect incorrect information stored at a particular location in the table by detecting a mismatch between the error detection code information stored at the particular location and predetermined error detection code information associated with the particular location at the table.
18. The data storage device of claim 12 , wherein the control unit is configured to read the data from another physical address of the non-volatile memory prior to writing the data to the physical memory location.
19. The data storage device of claim 18 , wherein the control unit is configured to modify the data read from the other physical address of the non-volatile memory prior to writing the data to the physical memory location.
20. The data storage device of claim 12 , wherein the non-volatile memory comprises NAND flash memory devices.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/199,067 US20160313936A1 (en) | 2014-02-24 | 2016-06-30 | Double writing map table entries in a data storage system to guard against silent corruption |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461943780P | 2014-02-24 | 2014-02-24 | |
US14/250,212 US9384088B1 (en) | 2014-02-24 | 2014-04-10 | Double writing map table entries in a data storage system to guard against silent corruption |
US15/199,067 US20160313936A1 (en) | 2014-02-24 | 2016-06-30 | Double writing map table entries in a data storage system to guard against silent corruption |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/250,212 Continuation US9384088B1 (en) | 2014-02-24 | 2014-04-10 | Double writing map table entries in a data storage system to guard against silent corruption |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160313936A1 true US20160313936A1 (en) | 2016-10-27 |
Family
ID=56234912
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/250,212 Active 2034-04-24 US9384088B1 (en) | 2014-02-24 | 2014-04-10 | Double writing map table entries in a data storage system to guard against silent corruption |
US15/199,067 Abandoned US20160313936A1 (en) | 2014-02-24 | 2016-06-30 | Double writing map table entries in a data storage system to guard against silent corruption |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/250,212 Active 2034-04-24 US9384088B1 (en) | 2014-02-24 | 2014-04-10 | Double writing map table entries in a data storage system to guard against silent corruption |
Country Status (1)
Country | Link |
---|---|
US (2) | US9384088B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346286B2 (en) | 2017-04-07 | 2019-07-09 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9507663B1 (en) * | 2015-05-04 | 2016-11-29 | Macronix International Co., Ltd. | Memory device and operation method |
US9785517B2 (en) * | 2015-06-10 | 2017-10-10 | International Business Machines Corporation | Rebuilding damaged areas of a volume table using a volume data set |
US9633155B1 (en) * | 2015-11-10 | 2017-04-25 | International Business Machines Corporation | Circuit modification |
US10157004B2 (en) * | 2016-04-14 | 2018-12-18 | Sandisk Technologies Llc | Storage system and method for recovering data corrupted in a host memory buffer |
KR20220147292A (en) | 2021-04-27 | 2022-11-03 | 삼성전자주식회사 | Storage device of performing meta data management and method of operating the same |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20100131723A1 (en) * | 2008-11-21 | 2010-05-27 | Fujitsu Limited | Access control apparatus, access control method, and storage apparatus |
US8397107B1 (en) * | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8578242B1 (en) * | 2010-01-29 | 2013-11-05 | Western Digital Technologies, Inc. | Data storage device employing seed array for data path protection |
Family Cites Families (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
-
2014
- 2014-04-10 US US14/250,212 patent/US9384088B1/en active Active
-
2016
- 2016-06-30 US US15/199,067 patent/US20160313936A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20100131723A1 (en) * | 2008-11-21 | 2010-05-27 | Fujitsu Limited | Access control apparatus, access control method, and storage apparatus |
US8397107B1 (en) * | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8578242B1 (en) * | 2010-01-29 | 2013-11-05 | Western Digital Technologies, Inc. | Data storage device employing seed array for data path protection |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346286B2 (en) | 2017-04-07 | 2019-07-09 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
US10534694B2 (en) | 2017-04-07 | 2020-01-14 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
US10540261B2 (en) | 2017-04-07 | 2020-01-21 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
US11263115B2 (en) | 2017-04-07 | 2022-03-01 | International Business Machines Corporation | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling |
Also Published As
Publication number | Publication date |
---|---|
US9384088B1 (en) | 2016-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160313936A1 (en) | Double writing map table entries in a data storage system to guard against silent corruption | |
US8281065B2 (en) | Systems and methods for determining the status of memory locations in a non-volatile memory | |
JP5792380B2 (en) | Apparatus and method for providing data integrity | |
US8839053B2 (en) | Error correcting pointers for non-volatile storage | |
US8341498B2 (en) | System and method of data encoding | |
US9875035B2 (en) | Memory system having a read and copy-back operation and method for the same | |
US8645776B2 (en) | Run-time testing of memory locations in a non-volatile memory | |
US9817752B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US11204846B2 (en) | Memory system and method for operating the same | |
US8910018B2 (en) | Memory with dynamic error detection and correction | |
US9824007B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
JP2014515537A (en) | Apparatus and method for providing data integrity | |
US11657877B2 (en) | Monotonic counters in memories | |
US10528422B2 (en) | Redundant storage of error correction code (ECC) checkbits for validating proper operation of a static random access memory (SRAM) | |
US20060277359A1 (en) | Blank memory location detection mechanism | |
CN105489242B (en) | Data storage device and method of operating the same | |
US20170186500A1 (en) | Memory circuit defect correction | |
US10289328B2 (en) | Memory controller and method for handling host request based on data character | |
US20130219244A1 (en) | Storage device | |
JP2016018473A (en) | Semiconductor storage device, memory controller, and memory controller control method | |
US10922025B2 (en) | Nonvolatile memory bad row management | |
US9417954B2 (en) | Data storage device and method for operating the same | |
US11216191B2 (en) | Storage device and operating method of storage device | |
US20220254435A1 (en) | Semiconductor storage device and error processing method for defective memory cell in the device | |
US20220334761A1 (en) | Memory system having system buffer and method of operating the memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |