This application claims priority from Korean Patent Application No. 10-2014-0087001 filed Jul. 10, 2014, in the Korean Intellectual Property Office, the disclosure of which is incorporated herein in its entirely by reference.
The exemplary embodiments of the inventive concept described herein relate to a storage system, and more particularly, relate to a storage system capable of managing run-time bad cells.
A storage system includes a host and a storage device. The host and the storage device are connected through a variety of standardized interfaces, such as a serial AT Attachment (SATA), universal flash storage (UFS), a small computer small interface (SCSI), a serial attached SCSI (SAS), and an embedded multi-media controller (eMMC).
A storage device contains a nonvolatile memory and a device memory. The nonvolatile memory may include the following: flash memory, electrically erasable programmable read-only memory (EEPROM), magnetoresistive random-access memory (MRAM), phase-change memory (PRAM), and ferroelectric random-access memory (FeRAM). The device memory is used to temporarily store data to be written at the nonvolatile memory or data read out from the nonvolatile memory. The device memory may be implemented with a volatile memory or a nonvolatile memory. The device memory may include the following: dynamic random-access memory (DRAM), static random-access memory (SRAM), MRAM, PRAM, and FeRAM.
The nonvolatile memory or the device memory includes a plurality of memory cells. In the nonvolatile memory or the device memory, a defect may happen at memory cells when fabricated or used. Below, the defective memory cell is referred to as a bad cell. Bad cells that occur when fabricated are easily searched by testing the whole memory area. However, it is difficult to search bad cells that occur when a product including the memory cells is used.
According to an exemplary embodiment of the inventive concept, there is provided a storage system which may include: a storage device including a first memory and a second memory, and configured to request a memory test on at least one of the first and second memories; and a host configured to test the at least one of the first and second memories in response to the request for the memory test from the storage device, and store the test result in the first memory or a third memory. Here, the first memory may be a nonvolatile memory, and the second memory may be a device memory.
The storage device may further include a cell monitor, and the storage device may detect a state of the at least one memory by means of the cell monitor. The storage device may request the memory test to the host at a predetermined time interval or in response to determining that the detected state of the at least one memory corresponds to a predetermined condition.
The predetermined condition may be at least one of: that an error in an error correction code (ECC) of the at least one memory is over an amount of a reference error; that a leakage current of the at least one memory increases over an amount of a reference current; that a temperature of the at least one memory is higher than a reference temperature; that utilization of the at least one memory is over a predetermined level during a reference time; and that a number of read, write or erase operations performed by the at least one memory exceeds a predetermined level.
The host may test the at least one memory in response to the request for the memory test from the storage device to find run-time bad cells.
The host may generate a bad cell list depending on the run-time bad cells, and store the bad cell list in the first or third memory or update a bad cell list stored in the first or third memory.
According to another exemplary embodiment, there is provided a storage device which may include: a first memory and a second memory at least one of which is subject to a memory test by an external device; and a memory controller to request the external device to perform the memory test, wherein a result of the memory test is stored in the first memory or a third memory connected to the storage device.
Here, the storing the result of the memory test in the first memory or the third memory may be performed by storing a list of bad cells of the at least one memory in the first or third memory, or updating a list of bad cells of the at least one memory previously stored in the first or third memory.
The bad cells may be run-time bad cells which have occurred when a product including the storage device is in use.
The memory controller may generate the memory test request at a predetermined time interval or in response to determining that a predetermined condition of the at least one memory is satisfied, wherein the predetermined condition is one of the above-listed conditions.
Here, the first memory or the third memory may be a flash memory, an EEPROM, an MRAM, a PRAM, or an FeRAM, and the second memory may be a DRAM, a SRAM, an MRAM, a PRAM, or an FeRAM.
The memory controller may request the external device to perform the memory test in response to determining at least one of: that a power state of the storage device is changed from an off-state to an on-state; that the at least one memory is in an idle time; and that a number of read, write or erase operations currently being executed or to be executed in the at least one memory within a predetermined time is less than a predetermined number.
The memory controller may request the external device to perform the memory test subject to at least one of conditions including: that an error in an error correction code (ECC) of the at least one memory is over an amount of a reference error; that a leakage current of the at least one memory increases over an amount of a reference current; that a temperature of the at least one memory is higher than a reference temperature; that utilization of the at least one memory is over a predetermined level during a reference time; and that a number of read, write or erase operations of the at least one memory exceeds a predetermined level.
According to still another exemplary embodiment, there is provided a method of performing a memory test at a storage device. The method may include: generating a request for a memory test by an external device with respect to at least one of a first memory and a second memory included in the storage device; transmitting the request for the memory test to the external device; and receiving and storing a result of the memory test performed by the external device in the first memory or a third memory.
With the above embodiments, a test operation is conducted when a storage system is testable in response to a memory test request of a storage device. Thus, it is possible to find bad cells, occurring at a product in use, in real time without affecting performance of the storage system.
The above and other aspects will become apparent from the following description with reference to the following drawings, in which:
Exemplary embodiments will be described in detail with reference to the accompanying drawings. The inventive concept, however, may be embodied in various different forms, and should not be construed as being limited only to the illustrated embodiments. Rather, these embodiments are provided as examples so that this disclosure will be thorough and complete, and will fully convey the inventive concept to those skilled in the art. Accordingly, known processes, elements, and techniques are not described with respect to some of the embodiments of the inventive concept. Unless otherwise noted, like reference numerals denote like elements throughout the attached drawings and written description, and thus descriptions will not be repeated. In the drawings, the sizes and relative sizes of layers and regions may be exaggerated for clarity.
It will be understood that, although the terms “first”, “second”, “third”, etc., may be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms are only used to distinguish one element, component, region, layer or section from another region, layer or section. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of the inventive concept.
Spatially relative terms, such as “beneath”, “below”, “lower”, “under”, “above”, “upper” and the like, may be used herein for ease of description to describe one element or feature's relationship to another element(s) or feature(s) as illustrated in the figures. It will be understood that the spatially relative terms are intended to encompass different orientations of the device in use or operation in addition to the orientation depicted in the figures. For example, if the device in the figures is turned over, elements described as “below” or “beneath” or “under” other elements or features would then be oriented “above” the other elements or features. Thus, the exemplary terms “below” and “under” can encompass both an orientation of above and below. The device may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein interpreted accordingly. In addition, it will also be understood that when a layer is referred to as being “between” two layers, it can be the only layer between the two layers, or one or more intervening layers may also be present.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the inventive concept. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items. Also, the term “exemplary” is intended to refer to an example or illustration.
It will be understood that when an element or layer is referred to as being “on”, “connected to”, “coupled to”, or “adjacent to” another element or layer, it can be directly on, connected, coupled, or adjacent to the other element or layer, or intervening elements or layers may be present. In contrast, when an element is referred to as being “directly on,” “directly connected to”, “directly coupled to”, or “immediately adjacent to” another element or layer, there are no intervening elements or layers present.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this inventive concept belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and/or the present specification and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
As illustrated in
The host controller 112 controls operations that the host 110 executes. The host controller 112 controls application programs that an application processor executes, or manages files or data of the storage device 120 by means of a file system. The host controller 112 drives peripheral devices that are connected to the host 110 through a device driver. The host controller 112 receives or provides data from or to the storage device 120 through the host interface 111.
The host memory 113 is used as a main memory or a cache memory of the host 110. The host memory 113 is also used as a driving memory for driving software including the following: application, file system, and device driver.
The storage device 120 is connected to the host 110 through the device interface 121. The storage device 120 includes a device controller 122, a nonvolatile memory 123, and a device memory 124. The device controller 122 controls an overall operation of the nonvolatile memory 1210 including a write operation, a read operation, an erase operation, and so on. The device controller 122 exchanges data and an address with the nonvolatile memory 123 or the device memory 124 through a data bus.
The nonvolatile memory 123 may include the following: flash memory, MRAM, PRAM, and FeRAM. The device memory 124 is used to temporarily store data to be written at the nonvolatile memory 123 or data read out from the nonvolatile memory 123. The device memory 124 is implemented with a volatile memory or a nonvolatile memory. The device memory 124 may include the following: DRAM, SRAM, MRAM, PRAM, and FeRAM. The device memory 124 may be implemented with a combination of DRAM and flash memory.
The nonvolatile memory 123 and/or the device memory 124 may include a plurality of memory cells to store data. Defective memory cells may occur at the nonvolatile memory 123 and/or the device memory 124 when manufactured or used. Below, a memory cell where a defect occurs is referred to as a bad cell. In particular, a bad cell that occurs at a fabrication level is referred to as a defective bad cell, and a bad cell that occurs when a product is in use is referred to as a run-time bad cell.
Referring to
In step S12, a bad cell list is made depending on the defective bad cells thus found. In step S13, the bad cell list is stored at a nonvolatile memory, such as an EEPROM or a flash memory. Here, the nonvolatile memory storing the bad cell list may be the nonvolatile memory 123 or a separate memory (not shown). In step S14, the bad cell list is processed by means of an offlining or remapping method.
Referring to
In step S22, a bad cell list is made depending on the run-time bad cells thus found. In step S23, the bad cell list is stored at a nonvolatile memory (e.g., flash memory) or a bad cell list stored in the nonvolatile memory is updated. Here, the nonvolatile memory storing the bad cell list may be the nonvolatile memory 123 or a separate memory (not shown). In step S24, the bad cell list is processed by means of an offlining or remapping method.
In
Referring to
For example, the device controller 122 may issue the memory test request when an error correction code (ECC) error of the memory 123 or 124 is over a predetermined level, a leakage current of the memory 123 or 124 increases, or the memory 123 or 124 is unstable. The device controller 122 also may make the memory test request periodically or when at least one of these memories has been used over a predetermined time.
Referring to
In step S110, the host 110 conducts the memory test to find run-time bad cells. In step S120, a bad cell list is made depending on run-time bad cells thus found. In step S130, the bad cell list is stored in a nonvolatile memory 123 or a bad cell list previously stored in the nonvolatile memory is updated. Here, the nonvolatile memory storing the bad cell list may be the memory 123 or a separate memory (not shown). In step S140, the bad cell list is processed by means of an offlining or remapping method.
In a method described with reference to
The memory controller 1210 includes a cell monitor 1215. The cell monitor 1215 predicts or detects a problem with the DRAM 1230. The memory controller 1210 predicts a problem with the DRAM 1230 by means of the cell monitor 1215, and requests a memory test to the host 1100. The host 1100 tests the DRAM 1230 in response to the memory test request. The memory controller 1210 sends a test result of the DRAM 1230 to the host 1100, and the host 1100 stores a bad cell list 1221 in the flash memory 1220 or update a previously stored bad cell list in the flash memory 1220.
The cell monitor 1215 detects a state of the DRAM 1230. The cell monitor 1215 generates a detection signal when a detection result corresponds to a predetermined condition. For example, the cell monitor 1215 may generate the detection signal when a voltage used in the DRAM 1230 is unstable, an ECC error of the DRAM 1230 is over a predetermined level, a temperature of the DRAM 1230 is higher than a reference temperature, or current leakage of the DRAM 1230 is suddenly increased.
The cell monitor 1215 generates the detection signal at a predetermined time interval or when a utilization rate of the DRAM 1230 is over a predetermined level during a reference time. Also, the cell monitor 1215 generates the detection signal whenever a read or write count of the DRAM 1230 exceeds a predetermined level. The cell monitor 1215 includes, but not limited to, a voltage sensor, an ECC engine, a temperature sensor, and a current sensor to detect the above-described problems.
In step S230, a state of the DRAM 1230 is checked while the read or write operation is executed or after the read or write operation is executed. In step S240, the memory controller 1210 determines whether the DRAM 1230 is problematic. This is achieved by checking a current state of the DRAM 1230, using the voltage sensor, the ECC engine, the temperature sensor, and the current sensor of the cell monitor 1215. As a consequence of determining that the DRAM 1230 is not problematic, the method proceeds to step S210. As a consequence of determining that the DRAM 1230 is problematic, the method proceeds to step S250, in which the memory controller 1210 requests a memory test to a host 1100.
Afterwards, the host 1100 tests the DRAM 1230 in response to the memory test request. The host 1100 makes a bad cell list, depending on a test result. The bad cell list is stored at a flash memory 1220 or a previously stored bad cell list is updated.
Referring to
For example, the cell monitor 3211 may be included in a memory controller 3210. The cell monitor 2310 detects or predicts a problem with the DRAM 2300. The memory controller 3210 predicts a problem with the DRAM 3300 by means of the cell monitor 3311, and requests a memory test to a host 3100. The host 3100 tests the DRAM 3300 in response to the memory test request, and updates a bad cell list 3221 stored at a flash memory 3220.
The memory controller 4210 includes a cell monitor 4216. The cell monitor 4216 detects or predicts a problem with the flash memory 4220. The memory controller 4210 predicts a problem with the flash memory 4220 by means of the cell monitor 4216, and requests a memory test to the host 4100. The host 4100 tests the flash memory 4220 in response to the memory test request, and updates a bad cell list 4221 stored at the flash memory 4220.
The cell monitor 4216 detects a state of the flash memory 4220. The cell monitor 4216 generates a detection signal when the detection result corresponds to a predetermined condition. For example, the cell monitor 4216 generates the detection signal when an ECC error of the flash memory 4222 is over a predetermined level or a temperature is higher than a reference temperature. The cell monitor 4216 generates the detection signal when a reclaim is required due to charge leakage of flash memory cells at which a bad cell list 4221 is to be stored or stored.
The cell monitor 4216 generates the detection signal at a predetermined time interval or when a utilization rate of the flash memory 4220 is over a predetermined level during a reference time. Also, the cell monitor 4216 generates the detection signal whenever a read or write count of the flash memory 4220 exceeds a predetermined level. The cell monitor 4216 includes, but not limited to, an ECC engine and a temperature sensor to detect the above-described problems.
The memory controller 5210 predicts a problem with the DRAM 4230 and a problem with the flash memory 5220 by means of the first and second cell monitor 5214 and 5216, respectively, and requests a memory test to a host 5100. The host 5100 tests the DRAM 5230 and the flash memory 5220 in response to the memory test request, and stores a bad cell list 5221 at the flash memory 5220 or update a previously stored bad cell list.
In step S320, during the idle time, the host 5100 determines whether a memory test is requested from the storage device 5200. As a consequence of determining that the memory test is requested from the storage device 5200, in step S330, the host 5100 tests the memories 5220 and 5230 of the storage system 5200. In step S340, the host 5100 stores or updates a bad cell list of the memory 5220, depending on a test result of the storage system 5200. In step S350, the host 5100 stores or updates a bad cell list of the memory 5230, also depending on a test result of the storage system 5200.
Returning to step S320, when the memory test is requested from the storage system 5200, the host 5100 tests at least one of the memories 5220 and 5230 of the storage system 5200 without delay or depending on an internal schedule. Also, even though the memory test is requested, the host 5100 ignores when the memory test is internally determined as being not required.
Meanwhile, a storage system according to an exemplary embodiment may be applied to or used in various products. The storage system according to an exemplary embodiment may be implemented in electronic devices, such as, but not limited to, a personal computer, a digital camera, a camcorder, a handheld phone, an MP3 player, a portable media player (PMP), a PlayStation Portable (PSP), and a personal digital assistant (PDA). A storage medium of the storage system may be implemented with storage devices, such as, but not limited to, a memory card, a universal serial bus (USB) memory, and a solid state drive (SSD).
The host 6100 writes data at the memory card 6200 and reads data from the memory card 6200. The host controller 6110 provides the memory card 6200 with a command (e.g., a write command), a clock signal CLK generated from a clock generator (not shown) in the host 6100, and data through the host connector 6120.
The card controller 6220 stores data at the flash memory 6230 in response to a command input through the card connector 6210. The data is stored in synchronization with a clock signal generated from a clock generator (not shown) in the card controller 6220. The flash memory 6230 stores data transferred from the host 6100. For example, if the host 6100 is a digital camera, the memory card 6200 may store image data.
The SSD 7200 exchanges signals SGL with the host 7100 through a signal connector 7211 and is supplied with a power through a power connector 7221. The SSD 7200 includes a plurality of flash memories 7201 through 720n, an SSD controller 7210, and an auxiliary power supply 7220.
The plurality of flash memories 7201 through 720n may be used as a storage medium of the SSD 7200. Not only may the SSD 7200 employ the flash memory, but it may employ nonvolatile memory devices, such as PRAM, MRAM, ReRAM, and FRAM. The flash memories 7201 through 720n are connected with the SSD controller 7210 through a plurality of channels CH1 through CHn. One channel is connected with one or more flash memories. Flash memories connected with one channel may be connected with the same data bus.
The SSD controller 7210 exchanges signals SGL with the host 7100 through the signal connector 7211. The signals SGL may include the following: a command, an address, and data. The SSD controller 7210 is adapted to write or read out data to or from a corresponding flash memory in response to a command of the host 7100. The SSD controller 7210 will be more fully described with reference to
The auxiliary power supply 7220 is connected with the host 7100 through the power connector 7221. The auxiliary power supply 7220 is charged by a power PWR from the host 7100. The auxiliary power supply 7220 may be placed inside or outside the SSD 7200. For example, the auxiliary power supply 7220 may be put on a main board to supply an auxiliary power to the SSD 7200.
The NVM interface 7211 may scatter data transferred from the buffer memory 7215 into channels CH1 through CHn. The NVM interface 7211 transmits data read from flash memories 7201 through 720n to the buffer memory 7215. The NVM interface 7211 may use a flash memory interface manner, for example. That is, the SSD controller 7210 may perform a read, a write, and an erase operation in the flash memory interface manner.
The host interface 7212 may provide an interface with an SSD 7200 in compliance with the protocol of the host 7100. The host interface 7212 may communicate with the host 7100 by means of USB, SCSI (Small Computer System Interface), PCI express, ATA, PATA (Parallel ATA), SATA (Serial ATA), SAS (Serial Attached SCSI), and so on. The host interface 4712 may also perform disk emulation which enables the host 7100 to recognize the SSD 7200 as a hard disk drive (HDD).
The ECC circuit 7213 generates an error correction code ECC by means of data transferred to the flash memory 7201 through 720n. The error correction code ECC thus generated is stored at spare areas of the flash memory 7201 through 720n. The ECC circuit 7213 detects an error of data read from the flash memory 7201 through 720n. If the detected error is correctable, the ECC circuit 7213 may correct the detected error.
The CPU 7214 analyzes and processes signals received from a host 7100 (refer to
The buffer memory 7215 temporarily stores write data provided from the host 7100 or data read from a flash memory. Also, the buffer memory 7215 stores metadata to be stored in the flash memories 7201 through 720n or cache data. At sudden power-off, the metadata or cache data stored at the buffer memory 7215 is stored in the flash memories 7201 through 720n. The buffer memory 7215 may be implemented with a DRAM, an SRAM, and so on.
Referring to
While the inventive concept has been described with reference to exemplary embodiments, it will be apparent to those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the inventive concept. Therefore, it should be understood that the above embodiments are not limiting, but illustrative.
Number | Date | Country | Kind |
---|---|---|---|
10-2014-0087001 | Jul 2014 | KR | national |
Number | Name | Date | Kind |
---|---|---|---|
6684353 | Parker | Jan 2004 | B1 |
7143236 | Pomaranski et al. | Nov 2006 | B2 |
7642105 | Co et al. | Jan 2010 | B2 |
7791966 | Imai | Sep 2010 | B2 |
8208325 | Urakawa et al. | Jun 2012 | B2 |
20040010612 | Pandya | Jan 2004 | A1 |
20040088614 | Wu | May 2004 | A1 |
20040181656 | Stern | Sep 2004 | A1 |
20050028038 | Pomaranski | Feb 2005 | A1 |
20070226403 | Son | Sep 2007 | A1 |
20100246298 | Zhang | Sep 2010 | A1 |
20100318879 | Yu | Dec 2010 | A1 |
20130036254 | Fai | Feb 2013 | A1 |
20130227342 | Shepherd | Aug 2013 | A1 |
Number | Date | Country |
---|---|---|
2003-16798 | Jan 2003 | JP |
2004-55041 | Feb 2004 | JP |
2006-309909 | Nov 2006 | JP |
2008-107897 | May 2008 | JP |
Number | Date | Country | |
---|---|---|---|
20160012918 A1 | Jan 2016 | US |