System and method for detecting copyback programming problems

Information

  • Patent Grant
  • 8909982
  • Patent Number
    8,909,982
  • Date Filed
    Monday, October 31, 2011
    12 years ago
  • Date Issued
    Tuesday, December 9, 2014
    9 years ago
Abstract
Methods and systems are disclosed herein for detecting problems related to copyback programming. After the copyback data is read into the internal flash buffer, a part of the copyback data stored in the internal flash buffer (such as spare data) is analyzed to determine whether there are any errors in a part of the copyback data read. The analysis may be used by the flash memory in one or more ways related to the current copyback operation, subsequent copyback operations, subsequent treatment of the data in the current copyback operation, and subsequent treatment of the section in memory associated with the source page.
Description
TECHNICAL FIELD

This application relates generally to managing data in a memory device. More specifically, this application relates to a flash memory implementing an improved programming sequence for detecting copyback programming problems.


BACKGROUND

Copyback is an operation used to read and copy data stored in one page (a source page) and reprogram it in another page (a destination page) in a flash memory. Unlike standard read and program operations, data retrieved from the source page is not streamed out (such as streamed out of the flash memory chip), but is saved in an internal buffer in the flash memory and then programmed directly into the destination page without using an external memory. In this way, the data is kept entirely within the flash memory chip and not sent to any external chip within the flash memory (such as to an external controller in the flash memory). Thus, the copyback operation is faster and more efficient than standard operations because reading out the data and then re-loading the data to be programmed are not required. The operation is particularly useful when a portion of a page is updated and the rest of the page needs to be copied to a newly assigned block.


Copyback operations are “blind” in that the data is moved without being checked. In particular, as the data read from the source page is internal to the flash memory during a copyback operation, the Error Correction Code (ECC) cannot be evaluated before copying the source page to the destination page. As a result, any bit error (either caused by the copyback read operation or other error) cannot be detected and will be copied into the destination page, resulting in propagation and accumulation of the bit error.


SUMMARY

In order to address problems related to copyback programming, methods and systems are disclosed herein for detecting problems related to copyback programming.


According to a first aspect, a method of detecting errors in a copyback operation in a flash memory device is disclosed. The method includes, in the flash memory device with a controller, performing: internally copying data from a first non-volatile portion in a flash memory chip of the flash memory device to a volatile portion of the flash memory device; using a part of the data copied to the volatile portion to detect the presence of one or more errors; internally copying the data from the volatile portion to a second non-volatile portion of the flash memory chip; and modifying some or all of the data based on the detected presence of the one or more errors. In one embodiment, the copyback operation is performed on the flash memory chip, with copying from a first non-volatile portion on the flash memory chip to a volatile portion of the flash memory chip, and then copying from the volatile portion on the flash memory chip to a second portion on the flash memory chip. In another embodiment, part of the data copied to the volatile portion is copied external to the flash memory chip, such as to a volatile memory associated with the controller. In still another embodiment, depending on the detection of the one or more errors, the data associated with the copyback operation is modified, such as by verifying the data copied to the second portion of the flash memory chip and/or modifying the part of the data stored in the volatile portion prior to copying to the second portion of the flash memory chip. In yet another embodiment, depending on the detection of the one or more errors, a subsequent copyback operation is modified, such as disabling all subsequent copyback operations for the first non-volatile portion.


In another aspect, a storage device is disclosed. The storage device may comprise a flash memory device that is configured to detect errors in a copyback operation. The flash memory device comprises: a flash memory chip that includes a first non-volatile portion, a second non-volatile portion, and a volatile portion; and a controller in communication with the flash memory chip. The controller is configured to: command the flash memory chip to internally copy data from the first non-volatile portion to the volatile portion; use part of the data copied to the volatile portion to detect the presence of one or more errors; command the flash memory chip to internally copy the data from the volatile portion to the second non-volatile portion; and modify some or all the data associated with the copyback operation based on the detected presence of the one or more errors.


Other features and advantages will become apparent upon review of the following drawings, detailed description and claims. Additionally, other embodiments are disclosed, and each of the embodiments can be used alone or together in combination. The embodiments will now be described with reference to the attached drawings.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates a host connected with a flash memory device having a multi-bank non-volatile memory containing multiple die.



FIG. 2 is a flow chart of one method for analyzing data during a copyback operation and potential applications of the analysis.



FIG. 3 is a flow chart of a method to program the spare area of the flash array with program integrity check data.



FIG. 4 is a flow chart of another method for analyzing data during a copyback operation and potential applications of the analysis.



FIG. 5 illustrates charge levels in a MLC memory and migration of charge due to the effect of over-programming.



FIG. 6 illustrates charge levels in the MLC memory migration of charge due to the effect of retention loss.





DETAILED DESCRIPTION

As discussed in the background, copyback operations are “blind” in that the data is moved without being checked. In one embodiment, at least part of the data copied in the copyback process is checked during the copyback process. For example, after the copyback data is read into the internal flash buffer, a part of the copyback data stored in the internal flash buffer is analyzed to determine whether there are any errors in a part of the copyback data read.


One example of copyback data read into the internal flash is data in the source page. The data in the source page may include user data, metadata, and potentially spare data. Examples of metadata include logical block addresses (LBAs) of the user data and the relative age of the LBAs. Spare data includes one or more unused bytes in the source page.


In one aspect, part (or all) of the spare data stored in the internal flash buffer is analyzed to determine whether there is a problem in the copyback programming. To perform the analysis, part (or all) of the spare data may be moved external to the flash memory chip, such as from the internal flash buffer to a buffer within the controller of the flash memory, as discussed in more detail below. The controller may then analyze the spare data in order to determine whether there is a problem with the copyback programming.


The controller's analysis may include comparing an expected value of the spare data with the actual value of the spare data. In one embodiment, the expected value is a predetermined integrity check data value (such as ‘FF00’), which may have been programmed previously into the source page prior to the start of the copyback operation. In another embodiment, the expected value is an initialization value that was programmed as part of an initialization. For example, prior to use of the source page, the source page is initialized with ‘FF’ values. In this way, the expected value of ‘FF’ need not be programmed in an operation separate from the initialization.


The comparison of the expected value with the actual value may indicate whether there is a problem with the copyback programming. For example, the analysis may indicate that one or more bytes of spare data include errors. The number of bytes that include errors may indicate that other data in the copyback programming, including the user data and the metadata, may have errors as well.


The controller's analysis may be used by the flash memory device in one or more ways related to the data associated with the current copyback operation, subsequent copyback operations, and subsequent treatment of the section in memory associated with the source page.


In one aspect, the controller's analysis may be used to modify or change the data associated with the current copyback operation, such as modify the data stored in the internal flash buffer or modify the data after it is stored back into non-volatile memory. For example, if the number of bytes in error is above a predetermined number, one or more bytes stored in the internal flash buffer (such as part (or all) of the spare data in the internal flash buffer) may be modified. As another example, the controller's analysis may be used to modify subsequent treatment of the data in the current copyback operation. For example, if the number of bytes in error is above a predetermined number, it may be determined that some (or all) of the data in the current copyback operations should be verified. So that, after copying of the data to the destination page in flash memory, the data may be verified by the controller using ECC.


In another aspect, the controller's analysis may be used to modify a subsequent copyback operation. For example, if the number of bytes in error is above a predetermined number, subsequent or future copyback operations for a particular part of the flash memory device (such as the block associated with the source page) may be prevented. Instead, updating of the pages in the block associated with the source page may be performed by copying to the buffer within the controller and by using the controller to perform ECC on the copied data.


In yet another aspect, the controller's analysis may be used to modify subsequent treatment of the section in flash memory associated with the source page. For example, if the number of bytes in error is above a predetermined number, it may be determined that part of the non-volatile memory (such as the block associated with the source page) may be reclaimed.


A flash memory device 102 suitable for use in implementing a copyback operation is shown in FIG. 1. A host system 100 of FIG. 1 stores data into and retrieves data from the flash memory device 102. The flash memory device 102 may be flash memory embedded within the host, such as in the form of a solid state disk (SSD) drive installed in a personal computer, a computer server, or a storage array. Alternatively, the flash memory device 102 may be in the form of a card that is removably connected to the host through mating parts 104 and 106 of a mechanical and electrical connector as illustrated in FIG. 1. A flash memory device configured for use as an internal or embedded SSD drive may look similar to the schematic of FIG. 1, with the primary difference being the location of the flash memory device 102 internal to the host. SSD drives may be in the form of discrete modules that are drop-in replacements for rotating magnetic disk drives.


The host system 100 of FIG. 1 may be viewed as having two major parts, insofar as the flash memory device 102 is concerned, made up of a combination of circuitry and software. They are an applications portion 108 and a driver portion 110 that interfaces with the flash memory device 102. In a PC, for example, the applications portion 108 can include a processor, such as CPU 112, running word processing, graphics, control or other popular application software, as well as the file system 114 for managing data on the host 100. In a camera, cellular telephone or other host system that is primarily dedicated to perform a single set of functions, the applications portion 108 includes the software that operates the camera to take and store pictures, the cellular telephone to make and receive calls, and the like.


The flash memory device 102 of FIG. 1 may include non-volatile memory, such as flash memory 116, and a system controller 118. The system controller 118 controls the flash memory 116 and communicates with the host 100 to which the flash memory device 102 is connected in order to pass data back and forth. The system controller 118 may convert between logical addresses of data used by the host 100 and physical addresses of the flash memory 116 during data programming and reading.


The flash memory 116 may include one or more flash memory chips 130. The flash memory chip 130 includes a flash memory array 120, which is a non-volatile memory, and a flash memory buffer 128, which is a volatile memory. FIG. 1 illustrates a single flash memory chip 130 with a single flash memory array 120 and a single flash memory buffer 128 by way of example. Further, the flash memory 116 may include multiple die, each containing an array of memory cells organized into multiple planes, and a volatile memory buffer. Alternatively, the memory cell array may not be divided into planes. In an alternate embodiment, the flash memory chips 130 include the flash memory array 120, and a separate chip may include the flash memory buffer 128.


Functionally, the system controller 118 may include a controller 122, which may comprises a processor, control logic, or the like. The system controller may also include controller firmware 124 for coordinating operation of the flash memory 116, such as monitoring copyback programming as disclosed below in FIGS. 2-4. The system controller 118 may further include controller RAM 126 (or other volatile memory associated with the controller 122). The system controller 118 may be implemented on a single integrated circuit chip, such as an application specific integrated circuit (ASIC), or may be also be incorporated into flash memory 116.


For example, the system controller 118 may initiate the copyback operation by sending a command to a particular flash memory chip in the flash memory 116 to move data from a source page of non-volatile memory into the flash memory buffer of the particular flash memory chip. This is discussed, for example, at 202 in FIGS. 2 and 402 in FIG. 4. The system controller 118 may further send a command (such as a direct memory access (DMA) command) to the particular flash memory chip in order to copy data stored in the flash memory buffer for storage in the controller RAM 126. In one embodiment, the command to copy data stored in the flash memory buffer for storage in the controller RAM 126 moves the data off-chip (from the particular flash memory chip to the controller chip). As discussed below, “spare” data is copied from the flash memory buffer into the controller RAM. This is discussed, for example, at 404 in FIG. 4. Moreover, the system controller 118 may command the particular flash chip to store data sent from the system controller into the flash memory buffer. This is discussed, for example, at 212 in FIG. 2 and 412 in FIG. 4. In addition, the system controller 118 may command the particular flash chip to store the data in the flash memory buffer into the destination page in the non-volatile flash memory array 120. This is discussed, for example, at 226 in FIG. 2.


The memory cells may be operated to store more than two detectable levels of charge in each charge storage element or region, thereby to store more than one bit of data in each. This configuration is referred to as multi level cell (MLC) memory. Alternatively, the memory cells may be operated to store two levels of charge so that a single bit of data is stored in each cell. This is typically referred to as a binary or single level cell (SLC) memory. Both types of memory cells may be used in a memory, for example binary flash memory may be used for caching data and MLC memory may be used for longer term storage. The charge storage elements of the memory cells are most commonly conductive floating gates but may alternatively be non-conductive dielectric charge trapping material.


In implementations of MLC memory operated to store two bits of data in each memory cell, each memory cell is configured to store four levels of charge corresponding to values of “11,” “01,” “10,” and “00.” Each bit of the two bits of data may represent a page bit of a lower page or a page bit of an upper page, where the lower page and upper page span across a series of memory cells sharing a common word line. Typically, the less significant bit of the two bits of data represents a page bit of a lower page and the more significant bit of the two bits of data represents a page bit of an upper page.


As discussed above, copyback operations are typically “blind” in that the data is moved without being checked. As a result, any bit error from the source page cannot be detected and will be copied into the destination page, resulting in propagation and accumulation of the bit error. Errors may be due, for example, to over-programming, which may cause bits in the memory cells to gain charge, and to retention loss, which may cause bits in the memory cells to lose charge. The charge in the cells of the flash memory may thus move due to the various errors, resulting in the bits to move as well, such as to the adjacent right or left state by over-programming or retention.


As discussed below, a part of the data (such as the spare data) stored in the flash buffer memory 128 is analyzed. The analysis of the spare data may be used to determine if the majority movement is towards charge gain or charge loss in a flash memory cell. For example, in a flash memory with a bit assignment, by upper page and lower page bit, of 11, 01, 00, and 10, over-programming may cause ‘1’s to tend to ‘0’ and retention loss may cause ‘0’s to tend to ‘1’s. For the analysis of the spare data to account for both over-programming and retention loss, the spare bits may be programmed with both ‘1’s and ‘0’s (such as FF). Alternatively, if the analysis is only focusing on one of the errors, then the spare bits may include only ‘1’s, so that no preprogramming of a special sequence is necessary.


Referring to FIG. 5, there is shown the effect of errors due to over-programming on a specific type of MLC. In particular, FIG. 5 illustrates ideal charge levels 502, 504, 506, 508 for bits 11, 01, 00, 10, respectively. Further, there is shown curves 510, 512, 514, 516 which illustrate the potential charge levels due to effect of over-programming. The Va, Vb, and Vc are read reference voltages. Thus, FIG. 5 illustrates one example of the effect of over-programming on the values of the bits in 2-bit MLC flash memory. FIG. 5 is for illustration purposes. Other types of flash memory layouts may be affected differently by over-programming.


Similar to FIG. 5, FIG. 6 illustrates ideal charge levels 502, 504, 506, 508 for bits 11, 01, 00, 10, respectively. Further, there is shown curves 602, 604, 606, 608 which illustrate the potential charge levels due to effect of retention loss. Thus, FIG. 6 illustrates one example of the effect of retention-loss on the values of the bits in 2-bit MLC flash memory. FIG. 6 is for illustration purposes. Other types of flash memory layouts may be affected differently by retention loss.



FIG. 2 is a flow chart 200 of one method for analyzing data during a copyback operation and potential applications of the analysis. At 202, data (such as a source page) is copied from flash non-volatile memory (such as flash memory array 120) to flash volatile memory (such as flash memory buffer 128). At 204, the controller 122 analyzes at least a part of the data in the flash volatile memory. As discussed above, the spare data copied into the flash memory buffer 128 is analyzed. At 206, the controller 122 determines whether the analysis finds one or more errors. If not, at 226, the data in the flash volatile memory is written to the flash non-volatile memory. If so, at 208, the controller 122 logs the details of the one or more errors, such as the bits in the spare data that were in error. At 210, the controller 122 determines whether to fix errors in the data in the flash volatile memory. If so, at 212, at least a part of the data in the flash volatile memory is modified. As discussed above, the data in the flash volatile memory may include user data, metadata, and spare data. In one aspect, part (or all) of the spare data is modified.


At 214, the controller 122 determines whether to disable subsequent copyback operations. If so, at 216, the controller 122 logs disabling of subsequent copyback operations for a part of the flash non-volatile memory, such as for the source page or for the entire block associated with the source page. At 218, the controller 122 determines whether to correct the data in the copyback operation. If so, at 220, the data is corrected and moved to flash non-volatile memory.


At 222, the controller 122 determines whether to reclaim part of the non-volatile memory. If the analysis indicates serious errors in the copyback data (such as numerous errors in the spare data stored in the flash volatile memory), the controller 122 may determine that a section of memory should be reclaimed and no longer used. If so, at 224, a part of the flash non-volatile memory (such as the block associated with the source page) is indicated to be reclaimed. At 226, the data in the flash volatile memory is written to the flash non-volatile memory.



FIG. 3 is a flow chart 300 of a method to program the spare area of the flash array with program integrity check data. As discussed above, in certain instances, the flash non-volatile memory may be programmed with a special code for later checking during the copyback process. At 302, a page of user data is moved into the flash memory buffer (such as flash memory buffer 128). At 304, program integrity check data is moved into “spare” area of the flash memory buffer. As discussed above, the spare area of memory may include the space in the flash memory buffer that is not used even with a full page of data loaded into the flash memory buffer. At 306, the contents of the flash memory buffer are written to the flash memory array.



FIG. 4 is a flow chart 400 of another method for analyzing data during a copyback operation and potential applications of the analysis. At 402, a copyback read is performed. At 404, the “spare” area is moved from the flash memory buffer into the stage buffer (which may be controller RAM 126). At 406, the controller 122 may perform a quick check of the “spare” bytes. At 408, the controller 122 may determine whether the “spare” bytes include more than 1 byte in error. If so, at 410, the controller 122 may perform a detailed check of the “spare” area and log the details. Optionally, at 412, the controller 122 may fix any bytes in error in the stage buffer and move the bytes into the flash memory buffer. For example, the controller 122 may input the correct predetermined code (such as the program integrity check data) into the stage buffer, which in turn is sent to the flash memory buffer, and ultimately programmed into the flash memory array. In this way, the errors in the “spare” area need not be propagated.


Optionally, at 414, copyback is disabled for the block associated with the source page. The determination whether to disable copyback for the block associated with the source page may be based on a first predetermined number of “spare” bytes that are in error (as shown in FIG. 4, the first predetermined number of “spare” bytes that are in error is greater than 1). Optionally, at 416, the controller 122 may force verification of the page after the write to the flash memory array. The determination whether to disable copyback for the block associated with the source page may be based on a second predetermined number of “spare” bytes that are in error (as shown in FIG. 4, the second predetermined number of “spare” bytes that are in error is greater than 1). In one embodiment, the first predetermined number of error bytes may be the same as the second predetermined number of error bytes (such as shown in FIG. 4) or may be different. Further, at 418, if more than a third predetermined number of bytes are in error (3, as shown in FIG. 4), the controller 122 forces immediate reclaim of the block associated with the source page, and logs an immediate reclaim request. If the errors are considered severe enough, the controller 122 may determine that the block associated with the source page is unreliable enough that it should not be used further, leading to the block being retired from further use. FIG. 4, including the various steps and the number of error bytes, are merely for illustration purposes. Other steps, and other numbers of error bytes, may be used.


It is intended that the foregoing detailed description be understood as an illustration of selected forms that the invention can take and not as a definition of the invention. It is only the following claims, including all equivalents, which are intended to define the scope of this invention. Also, some of the following claims may state that a component is operative to perform a certain function or configured for a certain task. It should be noted that these are not restrictive limitations. It should also be noted that the acts recited in the claims can be performed in any order and not necessarily in the order in which they are recited.

Claims
  • 1. A method of detecting errors in a copyback operation in a flash memory device, the method comprising: in the flash memory device with a controller, prior to a copyback operation, programming a page of data such that a subset of the page of data includes a predetermined sequence of bits;performing the copyback operation by: internally copying the page of data from a first non-volatile portion in a flash memory chip of the flash memory device to a volatile portion of the flash memory device;copying the subset of the page of data from the volatile portion of the flash memory device to memory associated with the controller;detecting the presence of one or more errors by analyzing the data subset copied to the memory associated with the controller, wherein analyzing the data subset includes determining whether the data subset includes the predetermined sequence of bits; andin accordance with detecting the presence of the one or more errors in the data subset: verifying all of the data copied to the volatile portion, the verifying including correcting detected errors; andstoring the verified data to a second non-volatile portion of the flash memory chip.
  • 2. The method of claim 1, wherein the first non-volatile portion, the second non-volatile portion and the volatile portion of the flash memory device are included in the flash memory chip of the flash memory device, and the controller and the memory associated with the controller are included in a system controller chip that is separate from the flash memory chip in the flash memory device.
  • 3. The method of claim 1, wherein the detecting includes detecting a quantity of errors, the method further comprising in accordance with a determination that the quantity of errors exceeds a predetermined threshold, preventing copyback operations, subsequent to the copyback operation, for the first non-volatile portion of the flash memory chip.
  • 4. The method of claim 1, wherein verifying all of the data copied to the volatile portion further comprises correcting the one or more errors detected.
  • 5. The method of claim 1, wherein the detecting includes detecting a quantity of errors, the method further comprising, in accordance with a determination that the quantity of errors exceeds a predetermined threshold, determining whether to reclaim the first non-volatile portion of the flash memory chip.
  • 6. The method of claim 1, wherein the first non-volatile portion of the flash memory chip comprises a block of the flash memory chip, and the data copied from the first non-volatile portion in the flash memory chip of the flash memory device is copied from the block of the flash memory chip and comprises a page of data.
  • 7. A flash memory device configured to detect errors in a copyback operation, the flash memory device comprising: a flash memory chip comprising a first non-volatile portion, a second non-volatile portion, and a volatile portion; anda controller in communication with the flash memory chip, the controller configured to: program a page of data such that a subset of the page of data includes a predetermined sequence of bits;command the flash memory chip to internally copy the page of data from the first non-volatile portion to the volatile portion of the flash memory device;copy the subset of the page of data from the volatile portion of the flash memory device to memory associated with the controller;detect the presence of one or more errors by analyzing the data subset copied to the memory associated with the controller, wherein analyzing the data subset includes determining whether the data subset includes the predetermined sequence of bits; andcommand the flash memory chip to in accordance with detecting the presence of the one or more errors in the data subset: verify all of the data copied to the volatile portion, the verifying including correcting detected errors; andstoring the verified data to a second non-volatile portion of the flash memory chip.
  • 8. The flash memory device of claim 7, wherein the first non-volatile portion, the second non-volatile portion and the volatile portion of the flash memory device are included in the flash memory chip of the flash memory device, and the controller and the memory associated with the controller are included in a system controller chip that is separate from the flash memory chip in the flash memory device.
  • 9. The flash memory device of claim 7, wherein the controller is configured to detect a quantity of errors in the subset of the data, and the controller is further configured to in accordance with a determination that the quantity of errors exceeds a predetermined threshold, prevent copyback operations, subsequent to the copyback operation, for the first non-volatile portion of the flash memory chip.
  • 10. The flash memory device of claim 7, wherein the controller is configured to verify all of the data copied to the volatile portion by at least correcting the one or more errors detected.
  • 11. The flash memory device of claim 7, wherein the controller is configured to detect a quantity of errors, and the controller is further configured to in accordance with a determination that the quantity of errors exceeds a predetermined threshold, determine whether to reclaim the first non-volatile portion of the flash memory chip.
  • 12. The flash memory device of claim 7, wherein the first non-volatile portion of the flash memory chip comprises a block of the flash memory chip, and the data copied from the first non-volatile portion in the flash memory chip of the flash memory device is copied from the block of the flash memory chip and comprises a page of data.
REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Application No. 61/498,583, filed Jun. 19, 2011, the entirety of U.S. Provisional Application No. 61/498,583 is hereby incorporated by reference herein.

US Referenced Citations (195)
Number Name Date Kind
4916652 Schwarz et al. Apr 1990 A
5519847 Fandrich et al. May 1996 A
5530705 Malone, Sr. Jun 1996 A
5537555 Landry et al. Jul 1996 A
5551003 Mattson et al. Aug 1996 A
5657332 Auclair et al. Aug 1997 A
5666114 Brodie et al. Sep 1997 A
5708849 Coke et al. Jan 1998 A
5943692 Marberg et al. Aug 1999 A
5982664 Watanabe Nov 1999 A
6000006 Bruce et al. Dec 1999 A
6016560 Wada et al. Jan 2000 A
6018304 Bessios Jan 2000 A
6070074 Perahia et al. May 2000 A
6138261 Wilcoxson et al. Oct 2000 A
6182264 Ott Jan 2001 B1
6192092 Dizon et al. Feb 2001 B1
6295592 Jeddeloh Sep 2001 B1
6311263 Barlow et al. Oct 2001 B1
6442076 Roohparvar Aug 2002 B1
6449625 Wang Sep 2002 B1
6484224 Robins et al. Nov 2002 B1
6516437 Van Stralen et al. Feb 2003 B1
6678788 O'Connell Jan 2004 B1
6757768 Potter et al. Jun 2004 B1
6775792 Ulrich et al. Aug 2004 B2
6810440 Micalizzi, Jr. et al. Oct 2004 B2
6836808 Bunce et al. Dec 2004 B2
6836815 Purcell et al. Dec 2004 B1
6842436 Moeller Jan 2005 B2
6871257 Conley et al. Mar 2005 B2
6895464 Chow et al. May 2005 B2
6978343 Ichiriu Dec 2005 B1
6980985 Amer-Yahia et al. Dec 2005 B1
6981205 Fukushima et al. Dec 2005 B2
6988171 Beardsley et al. Jan 2006 B2
7020017 Chen et al. Mar 2006 B2
7032123 Kane et al. Apr 2006 B2
7043505 Teague et al. May 2006 B1
7100002 Shrader et al. Aug 2006 B2
7111293 Hersh et al. Sep 2006 B1
7162678 Saliba Jan 2007 B2
7173852 Gorobets et al. Feb 2007 B2
7184446 Rashid et al. Feb 2007 B2
7328377 Lewis et al. Feb 2008 B1
7516292 Kimura et al. Apr 2009 B2
7523157 Aguilar, Jr. et al. Apr 2009 B2
7527466 Simmons May 2009 B2
7529466 Takahashi May 2009 B2
7571277 Mizushima Aug 2009 B2
7574554 Tanaka et al. Aug 2009 B2
7596643 Merry, Jr. et al. Sep 2009 B2
7681106 Jarrar et al. Mar 2010 B2
7685494 Varnica et al. Mar 2010 B1
7707481 Kirschner et al. Apr 2010 B2
7761655 Mizushima et al. Jul 2010 B2
7774390 Shin Aug 2010 B2
7840762 Oh et al. Nov 2010 B2
7870326 Shin et al. Jan 2011 B2
7890818 Kong et al. Feb 2011 B2
7913022 Baxter Mar 2011 B1
7925960 Ho et al. Apr 2011 B2
7934052 Prins et al. Apr 2011 B2
7954041 Hong et al. May 2011 B2
7971112 Murata Jun 2011 B2
7974368 Shieh et al. Jul 2011 B2
7978516 Olbrich et al. Jul 2011 B2
7996642 Smith Aug 2011 B1
8006161 Lestable et al. Aug 2011 B2
8032724 Smith Oct 2011 B1
8069390 Lin Nov 2011 B2
8190967 Hong et al. May 2012 B2
8254181 Hwang et al. Aug 2012 B2
8312349 Reche et al. Nov 2012 B2
8412985 Bowers et al. Apr 2013 B1
20020024846 Kawahara et al. Feb 2002 A1
20020083299 Van Huben et al. Jun 2002 A1
20020152305 Jackson et al. Oct 2002 A1
20020162075 Talagala et al. Oct 2002 A1
20020165896 Kim Nov 2002 A1
20030041299 Kanazawa et al. Feb 2003 A1
20030043829 Rashid et al. Mar 2003 A1
20030088805 Majni et al. May 2003 A1
20030093628 Matter et al. May 2003 A1
20030188045 Jacobson Oct 2003 A1
20030189856 Cho et al. Oct 2003 A1
20030198100 Matsushita et al. Oct 2003 A1
20030212719 Yasuda et al. Nov 2003 A1
20040024957 Lin et al. Feb 2004 A1
20040024963 Talagala et al. Feb 2004 A1
20040073829 Olarig Apr 2004 A1
20040153902 Machado et al. Aug 2004 A1
20040181734 Saliba Sep 2004 A1
20040199714 Estakhri et al. Oct 2004 A1
20040237018 Riley Nov 2004 A1
20050060456 Shrader et al. Mar 2005 A1
20050060501 Shrader et al. Mar 2005 A1
20050114587 Chou et al. May 2005 A1
20050172065 Keays Aug 2005 A1
20050172207 Radke et al. Aug 2005 A1
20050193161 Lee et al. Sep 2005 A1
20050201148 Chen et al. Sep 2005 A1
20050231765 So et al. Oct 2005 A1
20050257120 Gorobets et al. Nov 2005 A1
20050273560 Hulbert et al. Dec 2005 A1
20050289314 Adusumilli et al. Dec 2005 A1
20060039196 Gorobets et al. Feb 2006 A1
20060053246 Lee Mar 2006 A1
20060085671 Majni et al. Apr 2006 A1
20060136570 Pandya Jun 2006 A1
20060156177 Kottapalli et al. Jul 2006 A1
20060195650 Su et al. Aug 2006 A1
20060259528 Dussud et al. Nov 2006 A1
20070011413 Nonaka et al. Jan 2007 A1
20070058446 Hwang et al. Mar 2007 A1
20070061597 Holtzman et al. Mar 2007 A1
20070076479 Kim et al. Apr 2007 A1
20070081408 Kwon et al. Apr 2007 A1
20070083697 Birrell et al. Apr 2007 A1
20070113019 Beukema et al. May 2007 A1
20070133312 Roohparvar Jun 2007 A1
20070147113 Mokhlesi et al. Jun 2007 A1
20070150790 Gross et al. Jun 2007 A1
20070157064 Falik et al. Jul 2007 A1
20070174579 Shin Jul 2007 A1
20070180188 Fujibayashi et al. Aug 2007 A1
20070208901 Purcell et al. Sep 2007 A1
20070234143 Kim Oct 2007 A1
20070245061 Harriman Oct 2007 A1
20070277036 Chamberlain et al. Nov 2007 A1
20070291556 Kamei Dec 2007 A1
20070294496 Goss et al. Dec 2007 A1
20070300130 Gorobets Dec 2007 A1
20080019182 Yanagidaira et al. Jan 2008 A1
20080022163 Tanaka et al. Jan 2008 A1
20080052446 Lasser et al. Feb 2008 A1
20080077841 Gonzalez et al. Mar 2008 A1
20080077937 Shin et al. Mar 2008 A1
20080086677 Yang et al. Apr 2008 A1
20080144371 Yeh et al. Jun 2008 A1
20080147964 Chow et al. Jun 2008 A1
20080147998 Jeong Jun 2008 A1
20080148124 Zhang et al. Jun 2008 A1
20080163030 Lee Jul 2008 A1
20080168191 Biran et al. Jul 2008 A1
20080168319 Lee et al. Jul 2008 A1
20080170460 Oh et al. Jul 2008 A1
20080229000 Kim Sep 2008 A1
20080229003 Mizushima et al. Sep 2008 A1
20080229176 Arnez et al. Sep 2008 A1
20080270680 Chang Oct 2008 A1
20080282128 Lee et al. Nov 2008 A1
20080285351 Shlick et al. Nov 2008 A1
20090003058 Kang Jan 2009 A1
20090037652 Yu et al. Feb 2009 A1
20090144598 Yoon et al. Jun 2009 A1
20090168525 Olbrich et al. Jul 2009 A1
20090172258 Olbrich et al. Jul 2009 A1
20090172259 Prins et al. Jul 2009 A1
20090172260 Olbrich et al. Jul 2009 A1
20090172261 Prins et al. Jul 2009 A1
20090172262 Olbrich et al. Jul 2009 A1
20090172308 Prins et al. Jul 2009 A1
20090172335 Kulkarni et al. Jul 2009 A1
20090172499 Olbrich et al. Jul 2009 A1
20090193058 Reid Jul 2009 A1
20090207660 Hwang et al. Aug 2009 A1
20090222708 Yamaga Sep 2009 A1
20090228761 Perlmutter et al. Sep 2009 A1
20090296466 Kim et al. Dec 2009 A1
20090296486 Kim et al. Dec 2009 A1
20090319864 Shrader Dec 2009 A1
20100061151 Miwa et al. Mar 2010 A1
20100103737 Park Apr 2010 A1
20100161936 Royer et al. Jun 2010 A1
20100199125 Reche Aug 2010 A1
20100202196 Lee et al. Aug 2010 A1
20100208521 Kim et al. Aug 2010 A1
20100262889 Bains Oct 2010 A1
20100281207 Miller et al. Nov 2010 A1
20100281342 Chang et al. Nov 2010 A1
20110083060 Sakurada et al. Apr 2011 A1
20110113281 Zhang et al. May 2011 A1
20110131444 Buch et al. Jun 2011 A1
20110173378 Filor et al. Jul 2011 A1
20110205823 Hemink et al. Aug 2011 A1
20110213920 Frost et al. Sep 2011 A1
20110228601 Olbrich et al. Sep 2011 A1
20110231600 Tanaka et al. Sep 2011 A1
20120096217 Son et al. Apr 2012 A1
20120110250 Sabbag et al. May 2012 A1
20120151253 Horn Jun 2012 A1
20120195126 Roohparvar Aug 2012 A1
20120239976 Cometti et al. Sep 2012 A1
20120284587 Yu et al. Nov 2012 A1
Foreign Referenced Citations (12)
Number Date Country
1465203 Oct 2004 EP
1 990 921 Nov 2008 EP
2002-532806 Oct 2002 JP
WO 2007036834 Apr 2007 WO
WO 2007080586 Jul 2007 WO
WO 2008121553 Oct 2008 WO
WO 2008121577 Oct 2008 WO
WO 2009028281 Mar 2009 WO
WO 2009032945 Mar 2009 WO
WO 2009058140 May 2009 WO
WO 2009084724 Jul 2009 WO
WO 2009134576 Nov 2009 WO
Non-Patent Literature Citations (40)
Entry
SanDisk Enterprise, ISR/WO, PCT/US2012/042764, Aug. 31, 2012, 12 pgs.
SanDisk Enterprise, Office Action, Japanese Patent Application No. 2010-540863, Jul. 24, 2012, 3 pgs.
Sandisk Enterprise, ISR/WO, PCT/US2012/059459, Feb. 14, 2013, 9 pgs.
SanDisk Enterprise, Office Action, CN 200880127623.8, Dec. 31, 2012, 9 pgs.
Sandisk Enterprise IP LLC, ISR/WO, PCT/US2012/042771, Mar. 4, 2013, 14 pgs.
Kang, A Multi-Channel Architecture for High-Performance NAND Flash-Based Storage System, J. Syst. Archit., 53, 9, Sep. 2007, 15 pgs.
Watchdog Timer and Power Savin Modes, Microchip Technology Inc., 2005 14 pgs.
SanDisk Enterprise IP LLC, Office Action, Chinese Patent Application 200880127623.8, Apr. 18, 2012, 20 pgs.
SanDisk Enterprise IP LLC, International Search Report / Written Opinion, PCT/US2012/059447, Jun. 6, 2013, 12 pgs.
SanDisk Enterprise IP LLC, International Search Report / Written Opinion, PCT/US2012/059453, Jun. 6, 2013, 12 pgs.
SanDisk Enterprise IP LLC, International Search Report / Written Opinion, PCT/US2012/065914, May 23, 2013, 7 pgs.
SanDisk Enterprise IP LLC, International Search Report / Written Opinion, PCT/US2012/065916, Apr. 5, 2013, 7 pgs.
SanDisk Enterprise IP LLC, International Search Report / Written Opinion, PCT/US2012/065919, Jun. 17, 2013, 8 pgs.
SanDisk Enterprise IP LLC, Notification of the Decision to Grant a Patent Right for Patent for Invention, CN 200880127623.8, Jul. 4, 2013, 1 pg.
SanDisk Enterprise, ISR/WO, PCT/US2012/042775, Sep. 26, 2012, 8 pgs.
Barr, Introduction to Watchdog Timers, Oct. 2001, 3 pgs.
Kim, A Space-Efficient Flash Translation Layer for CompactFlash Systems, IEEE Transactions on Consumer Electronics, vol. 48, No. 2, May 2002, pp. 366-375.
McLean, Information Technology—AT Attachment with Packet Interface Extension, Aug. 19, 1998, 339 pgs.
Park, A High Performance Controller for NAND Flash-based Solid State Disk (NSSD), Feb. 12-16, 2006, 4 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88133, Mar. 19, 2009, 7 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88136, Mar. 19, 2009, 7 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88146, Feb. 26, 2009, 10 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88154, Feb. 27, 2009, 8 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88164, Feb. 13, 2009, 8 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88206, Feb. 18, 2009, 7 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88217, Feb. 19, 2009, 7 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US08/88229, Feb. 13, 2009, 7 pgs.
Pliant Technology, Inc. , International Search Report and Written Opinion, PCT/US08/88232, Feb. 19, 2009, 8 pgs.
Pliant Technology, Inc. , International Search Report and Written Opinion, PCT/US08/88236, Feb. 19, 2009, 7 pgs.
Pliant Technology, Inc., International Search Report and Written Opinion, PCT/US2011/028637, Oct. 27, 2011, 11 pgs.
Pliant Technology, Inc., Supplementary European Search Report, 08866997.3, Feb. 23, 2012, 6 pgs.
Zeidman, Verilog Designer's Library, 1999, 9 pgs.
Canim, Buffered Bloom ilters on Solid State Storage, ADMS*10, Singapore, Sep. 13-17, 2010, 8 pgs.
Lu, A Forest-structured Bloom Filter with Flash Memory, MSST 2011, Denver, CO, May 23-27, 2011, article, 6 pgs.
Lu, A Forest-structured Bloom Filter with Flash Memory, MSST 2011, Denver, CO, May 23-27, 2011, presentation slides, 25 pgs.
International Search Report and Written Opinion dated Mar. 7, 2014, received in International Patent Application No. PCT/US2013/074772, which corresponds to U.S. Appl. No. 13/831,218, 10 pages (George).
International Search Report and Written Opinion dated Mar. 24, 2014, received in International Patent Application No. PCT/US2013/074777, which corresponds to U.S. Appl. No. 13/831,308, 10 pages (George).
International Search Report and Written Opinion dated Mar. 7, 2014, received in International Patent Application No. PCT/US2013/074779, which corresponds to U.S. Appl. No. 13/831,374, 8 pages (George).
International Search Report and Written Opinion dated May 14, 2014, received in International Patent Application No. PCT/US2014/017168, which corresponds to U.S. Appl. No. 14/076,115, 6 pages (Fitzpatrick).
International Search Report and Written Opinion dated May 14, 2014, received in International Patent Application No. PCT/US2014/017169, which corresponds to U.S. Appl. No. 14/076,148, 6 pages (Fitzpatrick).
Related Publications (1)
Number Date Country
20120324277 A1 Dec 2012 US
Provisional Applications (1)
Number Date Country
61498583 Jun 2011 US