Certain embodiments of the invention may be found in a method and system for using multiple memory regions for redundant remapping. Certain aspects of the invention may include dividing at least a portion of on-chip memory into a plurality of memory regions. Each of the plurality of memory regions may be mapped into a corresponding plurality of redundant memory regions, wherein if an error is detected in at least one of the plurality of memory regions, at least one of the plurality of memory regions having the detected error may be remapped to at least one of the corresponding plurality of redundant memory regions.
The processor 111 may comprise suitable logic, circuitry, and/or code that may be enabled to perform data processing and/or system control operations associated with the chip 118. The processor 111 may be enabled to perform multiple security operations on data received by the chip 118. The security operations may include, but need not be limited to, non-volatile memory (NVM) security, “key ladders,” which may be designed for cryptographically wrapping/unwrapping keys, challenge-response authentication, memory data signature verification, secure scrambler configuration, and security assurance logic, for example. In this regard, the processor 111 may comprise multiple security components to perform the features associated with the security operations. The processor 111 may be enabled to communicate with the memory 113 and the memory controller 110 via, for example, the memory bus 114. The memory 113 may comprise suitable logic, circuitry, and/or code that may be enabled to store data, control information, and/or operational information.
The processor 111 may be enabled to divide at least a portion of on-chip memory 113 into a plurality of memory regions. The processor 111 may enable mapping of each of the plurality of divided memory regions into a corresponding plurality of redundant memory regions. If an error is detected in at least one of the plurality of memory regions, the memory region having the detected error may be remapped to the corresponding redundant memory region. The processor 111 may be enabled to set an error flag associated with at least one of the plurality of memory regions having the detected error.
The processor 111 may be enabled to divide at least one of the plurality of memory regions into two or more rows. The processor 111 may be enabled to allocate at least one flag for each of the rows. The processor 111 may be enabled to set the allocated at least one flag associated with each of the rows having a detected error. The processor 111 may be enabled to allocate the plurality of memory regions and the corresponding plurality of redundant memory regions based on a predetermined plurality of address ranges. The remapping table 115 may be enabled to store the predetermined plurality of address ranges corresponding to the allocated plurality of memory regions and the corresponding plurality of redundant memory regions. The on-chip memory 113 may be least one or more of the following: a non-volatile memory, a secure flash electrically erasable programmable read only memory (EEPROM), and a flash RAM, for example. Notwithstanding, the invention may not be so limited, and other storage options may be utilized without departing from the scope of the invention.
An error flag, for example, error flag 206 or error flag 208 may be associated with at least one of the plurality of memory regions, for example, memory region i 210 and/or memory region j 212 having the detected error. For example, if the memory region i 210 has a detected error, the error flag 206 associated with the memory region i 210 may be set. At least one of the plurality of memory regions, for example, memory region i 210 and/or memory region j 212, having the detected error may be remapped to the corresponding redundant memory region, for example, redundant memory region i 214 and redundant memory region j 216 respectively, if the error flag, for example, error flag 206 or error flag 208 associated with at least one of the plurality of memory regions, for example, memory region i 210 and/or memory region j 212 having the detected error is set.
The plurality of memory regions, for example, memory region i 210 and/or memory region j 212 may be divided into two or more rows. For example, memory region j 212 may be divided into two or more rows, 220 and 222. Similarly, memory region i 210 may be divided into a plurality of rows, for example, row 218. At least one flag, for example, error flag 206 or error flag 208, may be allocated associated with each of the divided plurality of memory regions, for example, memory region i 210 and/or memory region j 212 having a detected error. For example, error flag 206 may be associated with row 218 in memory region i 210. For example, error flag 208 may be associated with row 220 in memory region j 212. The allocated error flags, for example, error flag 206 or error flag 208, associated with each of the divided plurality of memory regions, for example, memory region i 210 and/or memory region j 212 having a detected error may be set. For example, if row 218 in memory region i 210 has a detected error, the error flag 206 may be set. Similarly, if row 220 or row 222 in memory region j 212 has a detected error, the corresponding error flag 206 and/or 208 may be set.
In another embodiment of the invention, if a particular row within a memory region has a detected error, the particular row may be remapped into a corresponding row within the corresponding redundant memory region. For example, if row 218 within memory region i 210 has a detected error, the particular row 218 may be remapped into the corresponding row 224 within the corresponding redundant memory region i 214. Similarly, if row 220 within memory region j 212 has a detected error, the particular row 220 may be remapped into the corresponding row 226 within the corresponding redundant memory region j 216. Similarly, if row 222 within memory region j 212 has a detected error, the particular row 222 may be remapped into the corresponding row 228 within the corresponding redundant memory region j 216.
The remapping table 204 may comprise suitable logic, circuitry, and/or code that may be enabled to store a predetermined plurality of address ranges corresponding to the allocated plurality of memory regions, for example, memory region i 210 and/or memory region j 212. The plurality of memory regions, for example, memory region i 210 and/or memory region j 212 may be allocated based on the predetermined plurality of address ranges. The predetermined address ranges may comprise, for example, 10 data rows per memory region. The plurality of allocated address ranges may be predetermined based on, for example, statistical data collected from production wafers. For example, it may be determined that approximately 0.5% of data bits may be in error in the memory 113, for example. The probability of error may be utilized to determine the amount of memory space to be allocated to a redundant memory region.
A plurality of redundant memory regions may be accessible for remapping the rows in the memory regions with error bits based on the predetermined plurality of address ranges. The remapping table 204 may be enabled to store the predetermined plurality of address ranges corresponding to the allocated plurality of memory regions, for example, memory region i 210 and/or memory region j 212 and the corresponding plurality of redundant memory regions, for example, redundant memory region i 214 and redundant memory region j 216 respectively based on the predetermined plurality of address ranges. The remapping table 204 may be utilized for remapping rows and memory regions. The remapping table 204 may also be utilized for looking up any of the memory regions based on their corresponding address ranges.
In accordance with an embodiment of the invention, the plurality of memory regions, for example, memory region i 210 and memory region j 212 may be mapped into a corresponding plurality of redundant memory regions, for example, redundant memory region i 214 and redundant memory region j 216 respectively to allow a user to program memory regions or particular rows within memory regions after production programming and utilize the redundant memory regions or particular rows within memory regions, if an error is detected within the memory regions. The number of redundant rows that may be utilized may not be known after programming as the number of rows having a detected error may affect the number of redundant rows utilized.
Various embodiments of the invention may utilize more than one error flag per row within a memory region. For example, the 52-bit row 252 may have a higher probability of an error and may exceed the number of redundant rows available. In another embodiment of the invention, the plurality of memory regions, for example, memory region i 210 and/or memory region j 212 may be divided into two or more rows. For example, the 52-bit row 252 may be divided into two 26-bit rows, 254 and 256, which may result in doubling the redundant rows available for remapping. An error flag may be utilized to indicate the presence of an error for each of the 26 bit rows. For example, error flag 206 may be set, if an error is detected within the row 220. Similarly, the error flag 208 may be set, if an error is detected within the row 222.
In step 310, it may be determined whether an error is detected within at least one of the plurality of memory regions. If an error is not detected within at least one of the plurality of memory regions, control passes to end step 316. If an error is detected within at least one of the plurality of memory regions, control passes to 312. In step 312, an error flag, for example, error flag 206 associated with a particular memory region, for example, memory region i 210 having the detected error may be set. In step 314, the particular memory region, for example, memory region i 210 having the detected error may be remapped to the corresponding redundant memory region, for example, redundant memory region i 214. In another embodiment of the invention, if a particular row within a memory region has a detected error, the particular row may be remapped into a corresponding row within the corresponding redundant memory region. For example, if row 218 within memory region i 210 has a detected error, the particular row 218 may be remapped into the corresponding row 224 within the corresponding redundant memory region i 214. Control then passes to end step 316.
In accordance with an embodiment of the invention, a method and system for using multiple memory regions for redundant remapping may comprise a processor 111 that enables dividing at least a portion of on-chip memory 113 into a plurality of memory regions, for example, memory region i 210 and memory region j 212. The processor 111 may enable mapping of each of the plurality of memory regions, for example, memory region i 210 and memory region j 212 into a corresponding plurality of redundant memory regions, for example, redundant memory region i 214 and redundant memory region j 216 respectively. If an error is detected in at least one of plurality of memory regions, for example, memory region i 210 and/or memory region j 212, the memory region having the detected error may be remapped to the corresponding redundant memory region. The processor 111 may be enabled to set an error flag, for example, error flag 206 or error flag 208 associated with at least one of the plurality of memory regions having the detected error. For example, if the memory region i 210 has a detected error, the error flag 206 associated with the memory region i 210 may be set.
The processor 111 may be enabled to divide at least one of the plurality of memory regions, for example, memory region i 210 and/or memory region j 212 into two or more rows. For example, memory region j 212 may be divided into two or more rows, 220 and 222. The processor 111 may be enabled to allocate at least one flag, for example, error flag 206 or error flag 208, associated with each of the divided plurality of memory regions, for example, memory region i 210 and/or memory region j 212 having a detected error. The processor 111 may be enabled to set the allocated at least one flag, for example, error flag 206 or error flag 208, associated with each of the divided plurality of memory regions, for example, memory region i 210 and/or memory region j 212 having a detected error. The processor 111 may be enabled to allocate the plurality of memory regions, for example, memory region i 210 and/or memory region j 212 based on a predetermined plurality of address ranges.
The remapping table 204 may be enabled to store the predetermined plurality of address ranges corresponding to the allocated plurality of memory regions, for example, memory region i 210 and/or memory region j 212. The processor 111 may be enabled to allocate the corresponding plurality of redundant memory regions, for example, redundant memory region i 214 and redundant memory region j 216 respectively based on a predetermined plurality of address ranges. The remapping table 204 may be enabled to store the predetermined plurality of address ranges corresponding to the allocated corresponding plurality of redundant memory regions, for example, redundant memory region i 214 and redundant memory region j 216 respectively. The on-chip memory 113 may be least one or more of the following: a non-volatile memory, a secure flash electrically erasable programmable read only memory (EEPROM), and a flash RAM, for example. Notwithstanding, the invention may not be so limited, and other storage options may be utilized without departing from the scope of the invention.
Another embodiment of the invention may provide a machine-readable storage, having stored thereon, a computer program having at least one code section executable by a machine, thereby causing the machine to perform the steps as described above for using multiple memory regions for redundant remapping.
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
While the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
This patent application makes reference to, claims priority to and claims benefit from U.S. Provisional Patent Application Ser. No. 60/814,833, filed on Jun. 19, 2006. The above referenced application is hereby incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
60814833 | Jun 2006 | US |