This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
Computer systems are generally employed in numerous configurations to provide a variety of computing functions. For example, computer systems may include personal computer systems (e.g., desktop and laptop computers), as well as, commercial systems (e.g., servers or industrial computers). Each of these systems may rely on a plurality of components interacting to provide reliable computing power and bandwidth. For instance, computer systems may employ a combination of processors, memory, input/output devices, disk drives, power supplies, fans, and the like to operate effectively.
One or more embodiments of the present invention will be described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
Various memory technologies may be used in a computer system, such as volatile and non-volatile memories. Some types of non-volatile memory may have defective areas when fabricated or may become defective after use. For example, such memories may have manufacturing defects or may have areas that wear-out or become detective over time. Such memories may include spare portions that may be used to replace the defective areas. Typically, the spare portions are provided at a “coarse” level and are permanently activated by blowing fuses. However, blowing fuses to remap the spare portions does not provide any flexibility. Alternatives to blowing fuses, such as “soft-fuses,” must rediscover the remapping of the spare portions every power cycle and are inappropriate for non-volatile memories.
Embodiments of the present invention include a fine-grained sparing system for non-volatile memories capable of fine-grained memory operations. The fine-grained sparing system includes a sparing table that only provides sparing data for those lines of a block which require sparing. In some embodiments, a sparing lookaside buffer is provided for the lookup of sparing information for a block. Additionally, some embodiments may include arrangement of sparing tag information in the sparing area of a block, or an arrangement of sparing tag information and spare lines in a defective (“bad”) block.
Turning now to the figures,
The system 10 typically includes a number of components. For example, in the illustrated embodiment, the system 10 includes a power supply 14. If the system 10 is a portable system, the power supply 14 may advantageously include permanent batteries, replaceable batteries, and/or rechargeable batteries. The power supply 14 may also include an AC adapter, so the system 10 may be plugged into a wall outlet, for instance. The power supply 14 may also include a DC adapter such that the system 10 may be plugged into a vehicle cigarette lighter, for instance. Various other devices may be coupled to the processor 12 depending on the functions that the system 10 performs. In the illustrated embodiment, a user interface 16 is coupled to the processor 12. The user interface 16 may include buttons, switches, a keyboard, a light pen, a mouse, and/or a voice recognition system, for instance. A display 18 is coupled to the processor 12 in the illustrated embodiment. The display 18 may include an LCD display, a CRT, LEDs, and/or an audio display, for example. Furthermore, an RF sub-system/baseband processor 20 is coupled to the processor 12. The RF sub-system/baseband processor 20 may include an antenna that is coupled to an RF receiver and to an RF transmitter (not shown). Communication ports 22 are also be coupled to the processor 12. The communication port 22 may be adapted to be coupled to peripheral devices 24 such as a modem, a printer, a computer, or to a network, such as a local area network, remote area network, intranet, or the internet, for instance.
The processor 12 generally controls the system 10 by implementing software programs stored in the memory. The memory is operably coupled to the processor 12 to store and facilitate execution of various programs. For instance, the processor 12 may be coupled to a volatile memory 26 which may include Dynamic Random Access Memory (DRAM) and/or Static Random Access Memory (SRAM). The volatile memory 28 may store dynamically loaded applications and data.
The processor 12 may also be coupled to non-volatile memory 28 and may communicate with the non-volatile memory 28 through a memory controller 29. The memory controller 29 may be integrated with the processor 12 or may be a separate component. The non-volatile memory 28 may include phase change memory (PCM) and/or memristor memory. In other embodiments, the non-volatile memory 28 may include magnetoresistive memory (MRAM), ferroelectric memory (FeRAM), resistive memory (RRAM), FE Polymer Memory, Polymer memory, and spin torque transfer memory (STT-RAM). Additionally, the non-volatile memory 28 may include a read-only memory (ROM), such as an EPROM, and/or flash memory to be used in conjunction with the volatile memory. The size of the ROM is typically selected to be just large enough to store any operating system, application programs, and fixed data. Additionally, the non-volatile memory 28 may include a tape drive or hard disk drive.
The non-volatile memory 28 may be manufactured with extra storage, such as “spare” blocks, lines, etc., in the event some portions of the memory are or become unusable. Such a technique may be referred as “sparing,” and a spare block, group of spare lines, etc., may be referred to as a “sparing area.” In such memories, the spare portions of the memory 28 may be mapped to replace the defective portions, increasing effective manufacturing yields and/or the useful lifespan of the memory.
Some of the non-volatile memory 28, such as the PCM and memristor memory, may allow sparing at a fine level, e.g., at a line level, in contrast to sparing at a coarse level, e.g., at a block level. However, providing spare portions at a “coarse level” may result in sparing portions that are prohibitively large. As used herein, the farm block (also referred to as “page”) refers to a relatively large unit of memory, such as 4 kB. In some embodiments, a block may be larger than 4 kB or smaller than 4 kB, e.g., 512 kB, 256 kB, etc. As used herein, the term line (also referred to as a “row”) refers to a unit of memory smaller than a block and individually writeable and updateable. In some embodiments, a line may be 64 bytes, such as to match the width of a data bus from the processor 12. In other embodiments, a line may be smaller than 64 bytes, e.g., as small as 1 byte, or larger than 64 bytes, e.g., up to 1 kB. In some embodiments, the non-volatile memory 28 may be addressed at a sub-line. As used herein, the term “sub-line” refers to a unit smaller than a line and that can be separately addressed, although not necessarily independently writable. In some embodiments, a sub-line may be 1 kB.
Based on the above discussion, a memory address for the non-volatile memory 28 may include a block portion (also referred to as a “block address”), a line portion (also referred to as a “line address), and, in some embodiments, a sub-line portion (also referred to as a “sub-line address”), representing the digits in the address which select the respective block, line and sub-line. For illustrative purposes in the embodiments discussed below, an address may include a 26-bit address having a 10-bit block address, 6-bit line addresses, and 6-bit sub-line addresses. It should be appreciated that embodiments may include memories having a longer addressing scheme, i.e., greater than 26-bit, and having more blocks, lines, sub-lines, etc.
The four lines 58 of the sparing area 56 may be arranged in four rows 60. Each of the rows 60 may include a valid bit 62, a tag 64, and one of the spare lines 58. The valid bit 62 indicates if a line 58 of the sparing area 56 used, e.g., a “1” if the line is used and a “0” if the line is unused. The tag 64 indicates the line address to which the respective row corresponds. The spare line 58 is the replacement line for the line that is being spared. Thus, once a block of the physical address 44 is determined having been spared, such as in the spare lookup table 50 of
As shown in
In other embodiments, more efficient sparing lookup logic may be used.
As described above, the sparing area lookup 70 may include the sparing area address 76 that provides the machine address of a sparing area for a spared block, e.g., blocks 0 to 1023. The used bit 78 of the sparing area lookup 70 indicates if the sparing area is in use, such as by providing a “1” if the area is in use and a “0” if the area is unused. Finally, the size 80 of the sparing fable 74 provides the size of the sparing area at the sparing area address 76. The size 80 of the sparing table 74 allows for variable sized sparing areas and provides that information in the sparing area lookup 70.
With reference to
The block address 82 may be provided to the sparing table 74, which translates the block address 82 to the machine address 76 of a sparing area. For example, as shown in
Some embodiments may include another physical arrangement of spare lines in a sparing area.
The tag and valid information 104 depicted in
As shown in
In some embodiments, the sparing area may be provided in an existing bad block.
As shown in
In some embodiments, a sparing cache may be used to provide a cache of which lines need sparing and the corresponding spare lines.
The sparing cache table 152 may include a block tag 170, a line tag 172, a sparing area machine address 174, and a valid bit 176. The block tag 170 includes the addresses of spared blocks, the line tags 172 include the addresses of spared lines within a spared block, and the machine address 174 indicates the machine address of the spare line for the spared line. The valid bit 176 indicates if a row of the cache table 168 is valid and should be used. The cache table 168 outputs a bad block indicator 178 indicating a given block was found in the table and is spared, a line match indicator 180 indicating that a given line was found in the table and is spared, and the machine address 182 of the sparing area for a matched block and line. As described in detail below, the cache logic 154 receives the output from the cache table 152 and outputs the machine address 162.
The buffer logic 154 may receive the inputs to the buffer 150 and, based on the presences or absence of a spare line for the input line address 160, output the appropriate machine address for a given physical address. As shown in decision block 184, if the block 158 does not have a spared area, e.g., if “has spare?” is “0”, than the logic 154 outputs the physical line address and physical block address as the output address 162. As shown in decision block 186, if “has spare?” is “1” or there is no “has spare” bit available, the logic queries the cache table 152. As noted above, the cache table outputs a bad block indicator 178, a match indicator 180, and a machine address 182 of a spare line. As shown in decision block 188, if “has spare?” is “1” and there is a match returned from the cache table 152, then the output address 162 is the cached machine address 182 returned from the cached table 152. As shown in decision block 190, if “has spare?” is “1” and there is no match (referred to as a “miss”), and the bad block indicator is returned from the cache table, then the output address 162 is the physical line and physical block address, as the physical line for that block is not spared and did not have a spare line in the cached table 152.
As shown in decision block 192, if “has spare?” is “1” and there is no match returned from the cache table 152, and the bad block indicator 178 is also not retuned from the cache table 152, then the cache table 152 does not have sparing data for that block. In this case, the logic 154 may load the sparing data into the cache table 152, using the sparing area address 166 received from the sparing table. In some embodiments, the logic 154 may evict old entries from the cache table 152. Such an eviction may include eviction of an entire block's cached data from the cache table 152, avoiding the need to track how many of a block's spared lines are cached. The machine address 174 of the cache table 152 may be filled in with the machine address of the spare lines that correspond to the tags of the sparing area address 166. Once the loading of the cache table 152 is complete, the logic 154 may re-query the cache table 152 and proceed through the decision blocks 186, 188, and 190. If there is a subsequent “miss,” then the line 160 is not spared and the logic 154 outputs the physical block and physical line address as the output address 162.
It should be appreciated that the fine grained sparing system and techniques described above may be integrated with other techniques, such as wear leveling and block-level sparing.
As shown in
The sparing lookaside buffer 212 may receive the remapped physical line address 220 from the line remap 208, the physical block address 216, and the sparing area address 224 and “has spare?” bit 226. As described above in
As described above, the memory 202 may be arranged in blocks 232 and may include sparing areas 234, such as described above in
Advantageously, embodiments of the line-grained sparing system described above reduce the state required to track spare lines to be proportional to the number of defective lines and the number of lines, rather than the total number of lines of a memory. Further, the number of spare lines in a memory is not fixed at the time of manufacturing and may be modified over the lifespan of the memory. Finally, sparing areas and corresponding tags may be stored in defective blocks that are otherwise unusable.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US11/28615 | 3/16/2011 | WO | 00 | 9/13/2013 |