Flash memory

Information

  • Patent Grant
  • 9070454
  • Patent Number
    9,070,454
  • Date Filed
    Thursday, January 23, 2014
    10 years ago
  • Date Issued
    Tuesday, June 30, 2015
    9 years ago
Abstract
This disclosure describes techniques for using environmental variables to improve calibration of flash memory by adapting to changing threshold-voltage distributions. These techniques effectively increase the speed and/or accuracy at which flash memory can be written or read.
Description
BACKGROUND

The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.


Conventional flash memory stores data by storing electric charges in flash cells. The amount of electric charge stored sets a threshold voltage, which corresponds to a data value. It can be difficult, however, to precisely set an amount of charge to set an exact threshold voltage. As a result, the actual threshold voltages for flash cells in the flash memory often follow a Gaussian distribution centered on a target threshold voltage. The mean of the threshold-voltage distribution is often used as the target threshold voltage when writing to a cell, though this mean is often not the actual threshold voltage for that cell.


Further still, the mean and variance of these threshold-voltage distributions may change. To adapt to such changes, conventional methods estimate the mean and variance of the threshold-voltage distributions using read backs from the flash cells. These conventional methods, however, are often slow to adapt, or are inaccurate in estimating, changes in the threshold-voltage distributions. Without an accurate and timely estimate of the threshold-voltage distributions, writing and reading data from flash memory can be unreliable.


SUMMARY

This summary is provided to introduce subject matter that is further described below in the Detailed Description and Drawings. Accordingly, this Summary should not be considered to describe essential features nor used to limit the scope of the claimed subject matter.


A method is described that comprises receiving an environmental variable, the environmental variable affecting a threshold voltage of a flash memory cell, and setting a write configuration or a read configuration using the environmental variable, the write configuration useable for writing a data value to the flash memory cell, the read configuration useable for reading a data value from the flash memory cell.


Another method is described that comprises receiving a threshold voltage value, the threshold voltage value calculated based on an environmental variable, and writing a data value to a flash memory cell using the threshold voltage value as a target threshold voltage.


A system is described that comprises flash memory cells, a flash controller, and a calibrator associated with the flash controller, the calibrator configured to receive an environmental variable, the environmental variable affecting threshold voltages of the flash memory cells, and set a write configuration or a read configuration using the environmental variable, the write configuration useable for writing data values to the flash memory cells, the read configuration useable for reading the data values from the flash memory cells.





BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures indicate similar or identical items.



FIG. 1 illustrates an operating environment.



FIG. 2 illustrates a chart showing an example relationship between a number of cycles and a threshold voltage mean for flash memory in accordance with an embodiment of the present invention.



FIG. 3 illustrates a chart showing an example relationship between a data retention time and a threshold voltage mean for flash memory in accordance with an embodiment of the present invention.



FIG. 4 illustrates threshold-voltage distributions of two-bit-cell flash memory cells.



FIG. 5 illustrates a method for setting a read and/or write configuration using an environmental variable in accordance with an embodiment of the present invention.



FIG. 6 illustrates an example of threshold-voltage distributions for a data value of flash memory cells in accordance with an embodiment of the present invention.



FIG. 7 illustrates a method for writing data to a flash memory cell using a threshold voltage value in accordance with an embodiment of the present invention.



FIG. 8 illustrates a method for reading data from a flash memory cell using a reference voltage in accordance with an embodiment of the present invention.





DETAILED DESCRIPTION

This disclosure describes techniques for using environmental variables to calibrate flash memory by adapting to changing threshold-voltage distributions. These techniques effectively increase the speed and/or accuracy at which flash memory can be written to or read from.


In the discussion that follows, an operating environment is described. Methods are also described that may be employed in the operating environment as well as other environments. In the discussion below, reference will be made to the environment by way of example only and, therefore, implementations described below are not limited to the described environment.


Operating Environment



FIG. 1 illustrates an operating environment 100 having flash memory 102. Flash memory 102 includes a flash-memory-cell array 104 including flash memory cells 106 and a flash controller 108 including a calibrator 110.


Flash-memory-cell array 104 contains flash memory cells 106, each cell 106 stores one or multiple bits of information by storing an amount of charge effective to set a threshold voltage. Flash controller 108 controls operation and data communications for flash memory 102. Calibrator 110 calibrates read and write configurations for flash memory 102, including determining mean threshold voltage values for each data value that can be stored within a single flash memory cell 106. Calibrator 110 also determines a standard deviation for each of the mean threshold voltage values, which, along with the mean threshold voltage, effectively determines the Gaussian distribution of threshold voltages for each data value. Calibrator 110 may determine near optimal or optimal reference voltages for reading each of the data values. Calibrator 110 stores the mean threshold voltages, the standard deviations, and the reference voltage values as flash-memory parameters in read and write configurations for use by flash controller 108 to read or write data values in flash memory cells 106.


Calibrator 110 uses environmental variables to determine these flash-memory parameters. Environmental variables include a current operating temperature of the flash memory, power-supply voltage, manufacturing processes, materials, or design, the amount of time elapsed since data was last written to a flash memory cell, and the cycle count, to name a few. The cycle count indicates the number of times that a flash memory cell has been written. Consider FIG. 2, which illustrates a cycle/threshold chart 200 showing a relationship for flash memory between an environmental variable, here a number of cycles 202, and a mean threshold voltage 204. Note that this particular relationship is dependent on many factors and varies from flash memory to flash memory. Nonetheless, generally the higher the cycle count, the higher the mean voltage threshold.


Consider also FIG. 3, which illustrates a retention/threshold chart 300 showing a relationship for flash memory between another environmental variable, here data retention time 302, and a mean threshold voltage 304. Like cycle count, this environmental variable is dependent on manner factors, varying from flash memory to flash memory. Generally, however, data retention drops over time because of electron leakage. A mean threshold voltage that starts at 2.5 volts, for example, may instead be 2.2 volts after 60 months. Ways in which these and other environmental variables are used are set forth in greater detail below.


Calibrator 110 may also use a parameter-estimation method such as the one described in U.S. Patent Publication No. 2008/0106936 A1, the contents of which are incorporated by reference in its entirety, or a least-mean-squares algorithm. If using a parameter-estimation method, the environmental variables may serve to initialize the parameter-estimation method. For example, a method may be used to initialize a mean threshold voltage as a function of the current operating temperature. This mean threshold voltage can then be used as a starting point for the parameter-estimation method. The environmental variables may be used as parameters within the parameter-estimation method. For example, the cycle count may be used to set the step size of the least-mean-squares algorithm. As the cycle count increases so does the step size for the least-mean-squares algorithm.


Note that the entities shown in FIG. 1 may be implemented in software, hardware, or a combination of both and may be further divided or combined, such as calibrator 110 being within or separate from flash controller 108.


Threshold-Voltage Distributions



FIG. 4 illustrates threshold-voltage distributions 400 for an array of multi-level flash memory cells (MLC) (here two-bit cells). The horizontal axis shows the threshold voltage in volts. The vertical axis shows the percentage of flash memory cells that have a particular threshold voltage. Distribution 402 plots a Gaussian distribution of threshold voltages associated with a data value in the flash memory cell and is shown with a solid line. The mean threshold voltage for distribution 402 is shown at 404 as 0.125 volts with a standard deviation (not shown) of 0.04 volts. Roughly 68% of the cells written at a target threshold voltage of 0.125 volts will end up with a threshold voltage of 0.125+/−0.04 volts (0.085-0.165 volts).


As environmental variables change, voltage threshold distribution 402 often also changes. A changed Gaussian distribution 406 represents a distribution of threshold voltages associated with the same data value in the flash memory cells but changed due to some factor (environment or otherwise) and is shown with a dashed line. FIG. 4 also illustrates a changed mean 408 for changed Gaussian distribution 406. Changed Gaussian distribution 406 has a mean threshold voltage 408 of 0.135 volts and a standard deviation (not shown) of 0.04 volts. The distribution has effectively shifted 0.01 volts. This may be caused by a rise in temperature of the flash memory cells due to use of a flash memory of which the cells are a part.


As this example concerns two-bit-cells, four data values (00, 01, 10, and 11) are possible, each of which has a corresponding threshold-voltage distribution. FIG. 4 shows three additional sets of original and changed Gaussian distributions (410, 412, and 414). Each line of distributions 410, 412, and 414 is roughly identical to the first distribution discussed above, except that they are at higher voltage thresholds.


Reference voltages 416, 418, and 420 represent reference voltages used to read the flash memory cell and are shown with dashed lines. Each of these reference voltages is adjustable based on a changed mean and/or standard deviation of each distribution. These reference voltages are adjustable so that each reference voltage continues to define a border between two distributions (and thus two data values).


Methods for Calibrating Flash Memory Cells


This disclosure describes techniques for calibrating read and/or write configurations of flash memory cells using environmental variables, thereby improving calibration performance and read and/or write accuracy. These techniques include two methods illustrated below, which may be used separately or in combination. Aspects of these methods may be implemented in hardware, firmware, software, or a combination thereof. The methods are shown as a set of acts that specify operations performed by one or more entities and are not necessarily limited to the order shown.



FIG. 5 illustrates a method 500 for setting a read and/or write configuration using an environmental variable. At 502, an environmental variable is received. At 504, a write configuration and/or a read configuration is set using the environmental variable. This method may be performed prior to, or as part of, a read or write operation on a page of flash memory cells.


An environmental variable may be a current operating temperature of the flash memory, power-supply voltage, manufacturing processes, material, design, the amount of time elapsed since data was last written to a flash memory cell, and/or the cycle count, to name a few. This list of example environmental variables is not meant to be exhaustive. The environmental variable may include any environmental factor that may affect a threshold voltage of a flash memory cell.


The environmental variables may be received from a variety of sources, such as a thermister capable of measuring a temperature of the flash memory device or circuitry capable of determining a voltage supplied to the flash memory device. Other sources, such as data store, may provide other environmental variables, including cycle count for a page of flash memory cells, information concerning manufacturing processes, materials, or design, or an amount of time elapsed since data was last written to a page of flash memory cells.


At 504, a write and/or read configuration is set based at least in part on the received environmental variable. The environmental variable can be used as a variable within a predetermined function to calculate the mean and standard distribution for threshold voltages of each of possible data values within a page of flash memory cells. Alternatively, multiple environmental variables are used in this function. The mean and standard deviation are saved as flash-memory parameters to a write configuration. During a write operation, the determined mean threshold voltage is used as a target threshold voltage to set for the flash memory cell.


This function or predetermined function in which the environmental variable may be used is determined based on testing and prior knowledge of the flash memory. Thus, a particular type of flash memory can be tested at ranges of temperatures, for example, thereby determining a relationship between the temperature and the threshold voltages. This testing or historic knowledge provides a systematic relationship between environmental factors and their effect on voltages, thereby permitting more-reliable operations through faster and/or more accurate estimations of the behavior of the flash memory.


The mean and standard deviation are used to calculate appropriate reference voltages for distinguishing between different voltage threshold distributions and thus different data values. The reference voltages are saved as flash-memory parameters to a read configuration. During a read operation the determined reference voltages are used to determine at which data value a threshold voltage of a flash memory cell resides.


Consider method 500 in the context of FIGS. 1 and 4. In such a context, at 502, calibrator 110 receives one or more environmental variables and at 504, calibrator 110 uses these environmental variables to determine a mean threshold voltage and standard deviation for each data value possible to be stored within flash memory cells 106. Calibrator 110 uses the mean and standard deviation to determine an appropriate voltage level for reference voltages 416, 418, and 420. This information is stored within flash controller 108 for use in reading or writing flash memory cells 106.


Calibrator 110 may also use a parameter-estimation method. One such parameter-estimation method determines the threshold voltages of multiple known flash memory cells. For example, consider a page of two-bit cells. A set of 100 cells may be pre-populated so that each data value is stored in 25 of the cells. These known cells are then read using multiple reference voltages to determine the threshold voltages at a more precise level than a normal read. A starting reference voltage is applied and then incremental reference voltages are applied until the threshold voltage is determined down to a relatively low margin of error (e.g., 0.005 volts).


The environmental variables may be used to initialize or modify this parameter-estimation method, including as part of a predetermined function to calculate the mean threshold voltage. This calculated mean threshold voltage is used as the starting reference voltage for the parameter-estimation method. The environmental variable may also or instead be used as a variable within the parameter-estimation method.



FIG. 6 illustrates a chart 600 of threshold-voltage distributions for a single data value that can be stored in flash memory cell 106. A solid line shows a starting distribution 602 for the data value. Due to cycle count and temperature the actual distribution 604 has changed (shown as a dashed line). The mean and standard deviation for starting distribution 602 are 0.125 volts and 0.04 volts, respectively. The mean and standard deviation for actual distribution 604 are 0.33 volts and 0.05 volts, respectively.


Conventional parameter-estimation methods are performed without using environmental variables. By way of example, consider a conventional calibrator (not shown) that applies a reference voltage at 0.125 volts. Assume that this conventional calibrator increments the reference voltage up or down by 0.05 volts until a precise voltage threshold is determined. The average number of reads that this conventional calibrator would use for the example distributions in FIG. 6 is approximately 42 (((0.33−0.125)/0.005)+1). This conventional parameter-estimation method's performance can be improved by increasing the increment size (e.g., from 0.005 to 0.05 volts) but this would result in a loss of accuracy. This lack of accuracy may then result in read and write failures.


By using one or more environmental variables to initialize and/or modify a parameter-estimation method, however, accuracy and performance can both be gained. This provides a starting point that is more accurate, and thus permits either fewer increments or greater accuracy. Altering the ongoing example, consider calibrator 110 using a temperature of the flash memory and a cycle count of a page of cells (e.g., similar to that shown in FIG. 2 at 200) to calculate a starting reference voltage of 0.32 volts rather than the 0.125 volts given above. Calibrator 110 then applies this starting reference voltage and increments the reference voltage up or down by 0.05 volts until a precise voltage threshold is determined. The average number of reads for the example distributions in FIG. 6 are approximately 8 (((0.33−0.295)/0.005)+1) rather than the above-noted 42 for the conventional method. Note that the 0.33 is the actual mean shown at distribution 604 in FIG. 6, with the low and high voltages being 0.035 above and below the actual mean established by the standard deviation (thus, the 0.295 and 0.365 volts are based on 51.7 percent of the distribution around 0.33 volts).


This is a significant improvement in performance with little or no cost to accuracy. Given that environmental variables often affect the threshold-voltage distributions in deterministic ways, it is possible to calculate the mean threshold voltage accurately before performing the parameter-estimation method. The parameter-estimation method then refines the mean to a higher level of accuracy.



FIG. 7 illustrates a method 700 for using a threshold voltage value to write a data value to a flash memory cell, such as the write configuration determined by method 500 as described above. At 702, a threshold voltage value is received. This threshold voltage value is calculated based on one or more environmental variables. It may also have been further refined, such as by a parameter-estimation method. At 704, a data value is written to the flash memory cell using the threshold voltage value as a target threshold voltage.


By way of example, consider method 700 in the context of FIG. 1. Calibrator 110 stores a mean threshold voltage in flash controller 108 for a page of cells. This mean threshold voltage is the threshold voltage value received by flash controller 108 at 702. At 704, flash controller 108 uses this threshold voltage value as the target threshold voltage when writing that data value to a cell within the page of cells. A target threshold voltage is the threshold voltage that flash controller 108 uses to store within the cell by setting an amount of charge on the cell (on cell's floating gate).



FIG. 8 illustrates a method 800 for using a reference voltage value to read a data value from a flash memory cell, such as the read configuration determined by method 500 as described above. At 802, a reference voltage value is received. This reference voltage value is calculated based on one or more environmental variables. It may also have been further refined, such as by a parameter-estimation method. At 804, a data value is read from the flash memory cell using the reference voltage value.


By way of example, consider method 800 in the context of FIG. 1. Calibrator 110 stores a reference voltage in flash controller 108 for a page of cells. This reference voltage is adjustable based on a changed mean or standard deviation, which is based on an environment variable. By adjusting this (and likely other reference voltages), a border between voltage distributions, and thus data values, is established. Further, this established border is more-accurately or more-quickly determined than conventional methods permit.


One or more of the techniques described above can be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Generally, the techniques can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software components. In one implementation, the methods are implemented in software, which can include but is not limited to firmware, resident software, and microcode. Furthermore, the methods can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.


For the purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.


Although the subject matter has been described in language specific to structural features and/or methodological techniques and/or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features, techniques, or acts described above, including orders in which they are performed.

Claims
  • 1. A system comprising: flash memory cells; anda flash controller, the flash controller configured to: receive a threshold voltage value, the threshold voltage value calculated based on a cycle count of a flash memory cell of the flash memory cells; andwrite a data value to the flash memory cell using the threshold voltage value as a target threshold voltage.
  • 2. The system as recited in claim 1, wherein the cycle count indicates a number of times that the flash memory cell has been written or is for a page of cells in which the flash memory cell is included.
  • 3. The system as recited in claim 1, wherein the threshold voltage value is also calculated based on a current operating temperature of the flash memory cell.
  • 4. The system as recited in claim 1, wherein the threshold voltage value is also calculated based on a power-supply voltage, the power-supply voltage for a power supply supplying power to the system.
  • 5. The system as recited in claim 1, wherein the threshold voltage value is also calculated based on a manufacturing process, material, or design of the flash memory cells.
  • 6. The system as recited in claim 1, wherein the threshold voltage value is also calculated based on an amount of time elapsed since data was last written to the flash memory cell.
  • 7. The system as recited in claim 1, further comprising a calibrator, the calibrator configured to calculate the threshold voltage value based on the cycle count.
  • 8. The system as recited in claim 7, wherein the calibrator is further configured to refine the threshold voltage value using a parameter-estimation method, the parameter-estimation method using the cycle count as a parameter of the parameter-estimation method.
  • 9. The system as recited in claim 7, wherein the calibrator is further configured to refine the threshold voltage value using a least-mean-squares algorithm, the least-mean-squares algorithm using the cycle count as a step size for the least-mean-squares algorithm.
  • 10. A method comprising: receiving, at a flash controller, a reference voltage value, the reference voltage value calculated by a calibrator associated with the flash controller, the calculation based on cycle count of a flash memory cell; andreading, by the flash controller, a data value from the flash memory cell using the reference voltage value.
  • 11. The method as recited in claim 10, further comprising determining the reference voltage value using a mean and standard deviation of a threshold-voltage distribution of a data value for the flash memory cell.
  • 12. The method as recited in claim 10, wherein the reference voltage value is refined by the calibrator using a parameter-estimation method.
  • 13. The method as recited in claim 10, wherein the reference voltage value is refined by the calibrator using a least-mean-squares algorithm, the least-mean-squares algorithm using the cycle count as a step size for the least-mean-squares algorithm.
  • 14. The method as recited in claim 10, wherein the threshold voltage value is also calculated, by the calibrator, based on a current operating temperature of the flash memory cell.
  • 15. The method as recited in claim 10, wherein the threshold voltage value is also calculated, by the calibrator, based on an amount of time elapsed since data was last written to the flash memory cell.
  • 16. A system comprising: a flash controller; anda calibrator associated with the flash controller, the calibrator configured to: receive a cycle count, the cycle count affecting a threshold voltage or reference voltage of a flash memory cell; andset a write configuration or a read configuration using the cycle count, the write configuration useable for writing a data value to the flash memory cell, the read configuration useable for reading a data value from the flash memory cell.
  • 17. The system as recited in claim 16, wherein the flash controller is further configured to: write a first data value to one of the flash memory cells by setting the flash memory cell's target threshold voltage to a value determined based on the cycle count; andread a second data value from one of the flash memory cells by applying a reference voltage value that is determined based on the cycle count.
  • 18. The system as recited in claim 16, wherein the calibrator is configured to set the write configuration by: initializing or modifying a parameter-estimation method using the cycle count;determining, using the parameter-estimation method, a flash-memory parameter; andsetting the write configuration using the flash-memory parameter.
  • 19. The system as recited in claim 16, wherein the calibrator is configured to set the read configuration by: determining a reference voltage value based on the cycle count and a mean and standard deviation of a threshold-voltage distribution of a data value for one of the flash memory cells; andsetting the read configuration using the reference voltage value.
  • 20. The system as recited in claim 16, wherein the calibrator comprises: computer-executable instructions configured to be executed by the flash controller; computer hardware logic that is internal to the flash controller; or computer hardware logic that is external to the flash controller.
RELATED APPLICATION

The present disclosure is a continuation of U.S. application Ser. No. 13/538,827, filed on Jun. 29, 2012 which is a continuation of U.S. application Ser. No. 12/762,150, filed on Apr. 16, 2010, now U.S. Pat. No. 8,213,236 which claims priority to U.S. Provisional Patent Application Ser. No. 61/171,332, entitled “Flash Memory”, filed Apr. 21, 2009, the disclosure of which are incorporated by reference herein in their entirety.

US Referenced Citations (169)
Number Name Date Kind
4611299 Hori et al. Sep 1986 A
4823340 Grassman et al. Apr 1989 A
5260905 Mori Nov 1993 A
5307343 Bostica et al. Apr 1994 A
5440523 Joffe Aug 1995 A
5680595 Thomann et al. Oct 1997 A
5701517 Carpenter Dec 1997 A
5719890 Thomman et al. Feb 1998 A
5778007 Thomann et al. Jul 1998 A
5802131 Morzano Sep 1998 A
5815447 Thomann Sep 1998 A
5864504 Tanzawa et al. Jan 1999 A
5875470 Dreibelbis et al. Feb 1999 A
5953340 Scott et al. Sep 1999 A
5996051 Mergard Nov 1999 A
6000006 Bruce et al. Dec 1999 A
6016273 Seki et al. Jan 2000 A
6021086 Joffe et al. Feb 2000 A
6034957 Haddock et al. Mar 2000 A
6067301 Aatresh May 2000 A
6081528 Thomann Jun 2000 A
6104637 Seo Aug 2000 A
6115389 Mahale et al. Sep 2000 A
6160814 Ren et al. Dec 2000 A
6167491 McAlpine Dec 2000 A
6216205 Chin et al. Apr 2001 B1
6230191 Walker May 2001 B1
6370624 Ajanovic et al. Apr 2002 B1
6446173 Pham Sep 2002 B1
6487207 Thomann Nov 2002 B1
6535939 Arimilli et al. Mar 2003 B1
6535963 Rivers Mar 2003 B1
6539467 Anderson et al. Mar 2003 B1
6539488 Tota et al. Mar 2003 B1
6567304 Kleveland May 2003 B1
6615324 Fernald Sep 2003 B1
6618390 Erimli et al. Sep 2003 B1
6712704 Elliott Mar 2004 B2
6714643 Gargeya et al. Mar 2004 B1
6717847 Chen Apr 2004 B2
6732184 Merchant et al. May 2004 B1
6735773 Trinh et al. May 2004 B1
6741589 Sang et al. May 2004 B1
6785272 Sugihara Aug 2004 B1
6876702 Hui et al. Apr 2005 B1
6886120 Yamazaki Apr 2005 B2
7038950 Hamilton et al. May 2006 B1
7039781 Iwata et al. May 2006 B2
7068651 Schmidt et al. Jun 2006 B2
7075827 Aoyama et al. Jul 2006 B2
7076631 Herron Jul 2006 B2
7099325 Kaniz et al. Aug 2006 B1
7130308 Haddock et al. Oct 2006 B2
7136953 Bisson et al. Nov 2006 B1
7149834 Peters et al. Dec 2006 B2
7185132 Tang Feb 2007 B2
7197591 Kwa et al. Mar 2007 B2
7249270 Mansell et al. Jul 2007 B2
7274611 Roohparvar Sep 2007 B2
7284106 Fernald Oct 2007 B1
7313019 Giduturi et al. Dec 2007 B2
7329136 Su et al. Feb 2008 B2
7334072 Wright Feb 2008 B1
7356676 Paver et al. Apr 2008 B2
7359997 Ishida et al. Apr 2008 B2
7411830 Takeuchi et al. Aug 2008 B2
7447824 Jabori et al. Nov 2008 B2
7451280 Furtek et al. Nov 2008 B2
7463528 Mokhlesi et al. Dec 2008 B2
7467253 Yero Dec 2008 B2
7469311 Tsu et al. Dec 2008 B1
7478188 Patton Jan 2009 B2
7480757 Atherton et al. Jan 2009 B2
7480808 Caruk et al. Jan 2009 B2
7496707 Freking et al. Feb 2009 B2
7499343 Kang Mar 2009 B2
7536490 Mao May 2009 B2
7539809 Juenger May 2009 B2
7542350 Park et al. Jun 2009 B2
7571287 Lee et al. Aug 2009 B2
7583600 Schanke et al. Sep 2009 B1
7599221 Yamada Oct 2009 B2
7606960 Munguia Oct 2009 B2
7613045 Murin et al. Nov 2009 B2
7613871 Tanaka et al. Nov 2009 B2
7624221 Case Nov 2009 B1
7649539 Evans et al. Jan 2010 B2
7660925 Larson et al. Feb 2010 B2
7685322 Bhesania et al. Mar 2010 B2
7689753 Kwak et al. Mar 2010 B2
7734874 Zhang et al. Jun 2010 B2
7752342 Tee et al. Jul 2010 B2
7822955 Flynn et al. Oct 2010 B2
7903462 Yeung et al. Mar 2011 B1
7941590 Yang et al. May 2011 B2
7945825 Cohen et al. May 2011 B2
7949817 Sakarda May 2011 B1
8127104 Shen Feb 2012 B1
8131915 Yang Mar 2012 B1
8154919 Lee et al. Apr 2012 B2
8205028 Sakarda Jun 2012 B1
8213228 Yang Jul 2012 B1
8213236 Wu Jul 2012 B1
8234425 Milner Jul 2012 B1
8335878 Lee Dec 2012 B2
8423710 Gole Apr 2013 B1
8533386 Yang Sep 2013 B1
8611151 Yang Dec 2013 B1
8638613 Wu Jan 2014 B1
8756394 Warner Jun 2014 B1
8843723 Warner Sep 2014 B1
8947929 Yang Feb 2015 B1
20010003198 Wu Jun 2001 A1
20010036116 Kubo et al. Nov 2001 A1
20020116584 Wilkerson Aug 2002 A1
20030154314 Mason, Jr. et al. Aug 2003 A1
20040027901 Shiga et al. Feb 2004 A1
20040093389 Mohamed et al. May 2004 A1
20040098556 Buxton et al. May 2004 A1
20040193774 Iwata et al. Sep 2004 A1
20040199734 Rajamani et al. Oct 2004 A1
20040202192 Galbi et al. Oct 2004 A9
20050008011 Georgiou et al. Jan 2005 A1
20050268001 Kimelman et al. Dec 2005 A1
20060010304 Homewood et al. Jan 2006 A1
20060031628 Sharma Feb 2006 A1
20060075144 Challener et al. Apr 2006 A1
20060106962 Woodbridge et al. May 2006 A1
20060242536 Yokokawa et al. Oct 2006 A1
20060288153 Tanaka et al. Dec 2006 A1
20060288188 Ma et al. Dec 2006 A1
20070002880 Chien et al. Jan 2007 A1
20070176939 Sadowski Aug 2007 A1
20070229503 Witzel et al. Oct 2007 A1
20070271609 Chen et al. Nov 2007 A1
20070283086 Bates Dec 2007 A1
20080094897 Chung et al. Apr 2008 A1
20080123420 Brandman et al. May 2008 A1
20080126728 Fernald May 2008 A1
20080147978 Pesavento et al. Jun 2008 A1
20080148083 Pesavento et al. Jun 2008 A1
20080175055 Kim Jul 2008 A1
20080195801 Cheon et al. Aug 2008 A1
20080215773 Christison et al. Sep 2008 A1
20080215774 Kim et al. Sep 2008 A1
20080256282 Guo et al. Oct 2008 A1
20080265838 Garg et al. Oct 2008 A1
20080270679 Joo Oct 2008 A1
20080294951 Ahmad et al. Nov 2008 A1
20080320189 Arssov Dec 2008 A1
20090067511 Wei et al. Mar 2009 A1
20090113166 Houston et al. Apr 2009 A1
20090122610 Danon et al. May 2009 A1
20090132770 Lin May 2009 A1
20090150599 Bennett Jun 2009 A1
20090154000 Kojima Jun 2009 A1
20090200982 Hurtz Aug 2009 A1
20090228739 Cohen et al. Sep 2009 A1
20090273975 Sarin et al. Nov 2009 A1
20090300260 Woo et al. Dec 2009 A1
20090304111 Shinya et al. Dec 2009 A1
20100027350 Melik-Martirosian et al. Feb 2010 A1
20110041040 Su et al. Feb 2011 A1
20110214029 Steiner et al. Sep 2011 A1
20110246859 Haratsch et al. Oct 2011 A1
20110305082 Haratsch et al. Dec 2011 A1
20120216085 Weingarten et al. Aug 2012 A1
20130047052 Jakab et al. Feb 2013 A1
20130080862 Bennett Mar 2013 A1
Foreign Referenced Citations (7)
Number Date Country
2779843 Dec 1999 FR
1162294 Jun 1989 JP
4061094 Feb 1992 JP
5047174 Feb 1993 JP
10506776 Jun 1998 JP
2004288355 Oct 2004 JP
5107204 Oct 2012 JP
Non-Patent Literature Citations (96)
Entry
“6-Port Fast Ethernet Switch, 88E6060 (Product Overview)”, Link Street; www.marvell.com; Marvell Semiconductor, Inc.; Sunnyvale, CA, 2002, 2 pgs.
“7-Port Fast Ethernet Switch with 802.1 Q, 88E6063 (Product Overview)”, www.marvell.com; Marvell Semiconductor, Inc.; Sunnyvale, CA, 2002, 2 pgs.
“Advisory Action”, U.S. Appl. No. 10/702,744, Sep. 11, 2007, 3 pages.
“Advisory Action”, U.S. Appl. No. 12/163,801, Jan. 24, 2011, 2 pages.
“Coprocessor”, Retrieved from <http://en.wikipedia.org/wiki/Coprocessor>, Nov. 2006, 1 page.
“Corrected Notice of Allowance”, U.S. Appl. No. 13/268,183, Nov. 19, 2013, 2 pages.
“European Communication and Search Report”, Application No. EP04006012; European Patent Office; Munich, Germany, May 30, 2005, 4 pgs.
“European Search Report”, Application No. EP04006012; Munich, Germany, May 30, 2005, 4 pages.
“Final Office Action”, U.S. Appl. No. 10/702,744, Jun. 25, 2007, 13 pages.
“Final Office Action”, U.S. Appl. No. 12/163,801, Oct. 14, 2010, 12 pages.
“Final Office Action”, U.S. Appl. No. 12/163,801, Nov. 14, 2011, 12 pages.
“Final Office Action”, U.S. Appl. No. 12/182,014, Oct. 29, 2010, 16 pages.
“Final Office Action”, U.S. Appl. No. 12/276,084, Oct. 17, 2011, 15 pages.
“Final Office Action”, U.S. Appl. No. 12/332,870, Sep. 10, 2013, 20 pages.
“Final Office Action”, U.S. Appl. No. 12/332,870, Oct. 12, 2011, 17 pages.
“Final Office Action”, U.S. Appl. No. 12/434,000, Apr. 26, 2011, 15 pages.
“Final Office Action”, U.S. Appl. No. 12/434,000, Sep. 4, 2012, 17 pages.
“Final Office Action”, U.S. Appl. No. 12/494,076, Mar. 30, 2011, 13 pages.
“Final Office Action”, U.S. Appl. No. 12/494,076, Oct. 3, 2011, 13 pages.
“Final Office Action”, U.S. Appl. No. 13/092,734, Dec. 29, 2011, 6 pages.
“Foreign Notice of Allowance”, JP Application No. 2008-270813, Aug. 31, 2012, 7 pages.
“Foreign Office Action”, JP Application No. 2004-071574, Feb. 19, 2008, 4 pages.
“Foreign Office Action”, JP Application No. 2008-270813, Apr. 3, 2012, 6 pages.
“Foreign Office Action”, JP Application No. 2008-270813, May 26, 2011, 4 pages.
“Information Technology—Telecommunications and Information Exchange Between Systems—Local and Metropolitan Area Networks—Specific Requirements”, IEEE, Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, Aug. 20, 1999, 531 pages.
“Link Street 88E6063 7-Port Fast Ethernet Switch with QoS, 802.1Q VLAN, and Virtual Cable Tester (VCT) Technology”, Marvell: News; www.marvell.com; Marvell Semiconductor, Inc.; Sunnyvale, CA, Jul. 14, 2003, 1 page.
“Link Street 88E6181 8-Port Gigabit Ethernet Switch with Four-Level QoS”, Marvell: News; www.marvell.com; Marvell Semiconductor, Inc.; Sunnyvale, CA, Jul. 14, 2003, 1 page.
“Link Street, Integrated Gateway Router with Multi-Port QoS Switch 88E6218 (Product Overview)”, Gateway Solutions; www.marvell.com; Marvell Semiconductor, Inc.; Sunnyvale, CA, 2003, 2 pgs.
“Link Street, Integrated Gateway Router with Multi-Port Switch, 88E6208 (Product Overview)”, Gateway Solutions; www.marvell.com; Marvell Semiconductor, Inc.; Sunnyvale, CA, 2003, 2 pgs.
“Marvell Link Street Gigabit Ethernet Switches Enable the Rapid Deployment of Gigabit Connectivity for the SOHO Market”, Marvell: Press and Investor News; Marvell Semiconductor, Inc.; Sunnyvale, CA; http://www.marvell.com/press/pressNewsDisplay.do?releaseID=347, Apr. 29, 2003, 2 pgs.
“Method and Circuit for Transferring Data with Dynamic Parity Generation and Checking Scheme in Multi-port DRAM”, esp@cenet; Publication No. JP10506776T (Abstract of Corresponding Document No. US5778007); esp@cenet Database—Worldwide; http://v3.espacenet.com/textdoc?DB=EPODOC&IDX=JP10506776T&F=0, Jun. 30, 1998, 5 pages.
“Multiport Component Memory Series and Application with a Computer”, Automated Translation; Europaisches Patentamt, European Patent Office, Office Europeen Des Brevets; Description of FR2779843; World Lingo Language Translation Services; www.worldlingo.com, Nov. 19, 2007, 15 pgs.
“Network Attached Storage (NAS) Advantages”, Retrieved from: <http://www.html.co.uk/86/network-attached-storage-nas-advantages.htm I> on Oct. 7, 2013, Aug. 22, 2008, 4 pages.
“Non-Final Office Action”, U.S. Appl. 12/182,014, Jun. 1, 2010, 13 pages.
“Non-Final Office Action”, U.S. Appl. No. 10/702,744, Feb. 19, 2009, 5 pages.
“Non-Final Office Action”, U.S. Appl. No. 10/702,744, Dec. 27, 2006, 10 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/163,801, Apr. 22, 2010, 10 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/163,801, Jul. 20, 2011, 11 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/180,238, Apr. 12, 2011, 7 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/276,084, Mar. 29, 2013, 7 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/276,084, Apr. 11, 2011, 12 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/332,870, Apr. 25, 2011, 15 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/332,870, May 8, 2013, 19 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/396,250, Jun. 23, 2011, 6 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/434,000, Mar. 14, 2013, 18 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/434,000, Nov. 10, 2010, 9 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/434,000, May 4, 2012, 15 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/436,577, Sep. 29, 2010, 6 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/494,076, Dec. 22, 2010, 12 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/726,310, Aug. 1, 2012, 11 pages.
“Non-Final Office Action”, U.S. Appl. No. 12/862,600, Oct. 16, 2013, 8 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/045,186, Aug. 22, 2013, 12 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/092,734, Aug. 24, 2011, 15 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/177,965, Jul. 2, 2013, 7 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/268,183, May 7, 2013, 6 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/406,756, Nov. 5, 2012, 4 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/538,771, Mar. 27, 2014, 9 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/538,827, Feb. 22, 2013, 7 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/538,827, May 2, 2013, 6 pages.
“Non-Final Office Action”, U.S. Appl. No. 13/860,394, Oct. 2, 2013, 13 pages.
“Non-Final Office Action”, U.S. Appl. No. 14/199,307, Apr. 10, 2014, 5 pages.
“Notice of Allowance”, U.S. Appl. No. 13/716,481, Nov. 14, 2013, 13 pages.
“Notice of Allowance”, U.S. Appl. No. 10/702,744, Mar. 27, 2009, 7 pages.
“Notice of Allowance”, U.S. Appl. No. 12/163,801, Mar. 22, 2012, 6 pages.
“Notice of Allowance”, U.S. Appl. No. 12/180.238, Oct. 25, 2011, 6 pages.
“Notice of Allowance”, U.S. Appl. No. 12/182,014, Jan. 20, 2011, 6 pages.
“Notice of Allowance”, U.S. Appl. No. 12/276,084, Oct. 29, 2013, 5 pages.
“Notice of Allowance”, U.S. Appl. No. 12/396,250, Nov. 16, 2011, 4 pages.
“Notice of Allowance”, U.S. Appl. No. 12/434,000, Oct. 17, 2013, 9 pages.
“Notice of Allowance”, U.S. Appl. No. 12/436,577, Apr. 14, 2011, 4 pages.
“Notice of Allowance”, U.S. Appl. No. 12/494,076, Aug. 2, 2012, 8 pages.
“Notice of Allowance”, U.S. Appl. No. 12/610,106, Feb. 29, 2012, 11 pages.
“Notice of Allowance”, U.S. Appl. No. 12/726,310, Dec. 18, 2012, 6 pages.
“Notice of Allowance”, U.S. Appl. No. 12/762,150, Mar. 19, 2012, 6 pages.
“Notice of Allowance”, U.S. Appl. No. 13/045,186, Nov. 1, 2013, 9 pages.
“Notice of Allowance”, U.S. Appl. No. 13/092,734, Feb. 23, 2012, 4 pages.
“Notice of Allowance”, U.S. Appl. No. 13/177,965, Nov. 20, 2013, 5 pages.
“Notice of Allowance”, U.S. Appl. No. 13/268,183, Jul. 29, 2013, 5 pages.
“Notice of Allowance”, U.S. Appl. No. 13/406,756, May 8, 2013, 7 pages.
“Notice of Allowance”, U.S. Appl. No. 13/538,827, Sep. 17, 2013, 7 pages.
“Partial European Search Report”, Application No. EP04006012; European Patent Office, Munich, Germany, Mar. 14, 2005, 2 pgs.
“Restriction Requirement”, U.S. Appl. No. 10/702,744, Jun. 30, 2006, 5 pages.
“Restriction Requirement”, U.S. Appl. No. 12/610,106, Dec. 7, 2011, 5 pages.
“Restriction Requirement”, U.S. Appl. No. 12/862,600, May 24, 2013, 7 pages.
“Restriction Requirement”, U.S. Appl. No. 13/045,186, Jun. 19, 2013, 5 pages.
U.S. Appl. No. 12/726,310, filed Mar. 17, 2010, 36 pages.
U.S. Appl. No. 12/862,600, filed Aug. 24, 2010, 36 pages.
Litaize, et al., “Serial Multi Port Memory Component Comprising RAM Memory Bank Assemblies for Use in Computer”, Abstract of FR2779843; Publication No. FR2779843; esp@cenet database; http://v3.espace.com/textdoc?DB=EPODOC&IDX=FR2779843&F=0, Dec. 12, 1999, 1 page.
Mori, “Multiport Memory”, English Abstract of Japanese Patent Publication No. JP5047174; esp@cenet database—Worldwide, Feb. 26, 1993, 1 page.
Pallampati, “iSCSI Performance Over RDMA-Enabled Network”, Thesis, Department of Electrical and Computer Engineering, Graduate School of Wichita State University, Jul. 2006, 58 pages.
Prince, “High Performance Memories, New Architectures DRAMs and SRAMs—Evolution and Function”, John Wiley & Sons, Ltd.; West Sussex, England, 1996, pp. 58-61.
“Notice of Allowance”, U.S. Appl. No. 14/199,307, May 7, 2014, 7 pages.
“Notice of Allowance”, U.S. Appl. No. 13/538,771, Sep. 16, 2014, 4 pages.
“Corrected Notice of Allowance”, U.S. Appl. No. 13/538,771, Jan. 2, 2015, 2 pages.
“Non-Final Office Action”, U.S. Appl. No. 14/089,501, Feb. 18, 2015, 5 pages.
“Notice of Allowance”, U.S. Appl. No. 14/089,501, Apr. 27, 2015, 4 pages.
Provisional Applications (1)
Number Date Country
61171332 Apr 2009 US
Continuations (2)
Number Date Country
Parent 13538827 Jun 2012 US
Child 14162395 US
Parent 12762150 Apr 2010 US
Child 13538827 US