Systems and methods for CAM-based memory repair
The use of a content-addressable memory (CAM) to associate repair data with subsystem IDs addresses inefficiencies in existing memory repair systems by enabling selective retrieval, reducing clock cycles and latency.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-09-10
- Publication Date
- 2026-03-19
AI Technical Summary
Existing memory repair systems inefficiency due to reading the entirety of one-time programmable memory for repair data, despite only a portion being relevant, leading to wasted cycles and delayed processing.
Utilization of a content-addressable memory (CAM) to associate repair data with subsystem IDs, allowing selective retrieval of relevant data based on subsystem IDs, reducing the number of clock cycles required for memory repair.
Efficient identification and distribution of repair data for multiple memory subsystems, minimizing clock cycles and latency by reading only relevant data subsets, enhancing overall system performance.
Smart Images

Figure US2024045948_19032026_PF_FP_ABST
Abstract
Description
GOOGLE-4192Systems and Methods For CAM-Based Memory Repair
[0001] Memories within a computing system may contain defects, faults, or other conditions that can be addressed using repair data. Typically, this repair data is accessed by reading the entirety of a one-time programmable memory in order to identify relevant memoryrepair locations within the OTP memory. Even though only a portion of the OTP memory may contain relevant repair data, the OTP memory is configured in such a way that every entry within the OTP memory is checked in connection with each request for repair data. This can result in an inefficient retrieval of repair data, due to wasted cycles that are used in reading OTP memory entries for which no relevant repair data exists.BRIEF SUMMARY
[0002] The technology is directed to systems and methods of memory repair that make use of content addressable memory (“CAM”) structures. In particular, a CAM may be used to efficiently identify repair data for addressing defects or faults of multiple memory dies, or other forms of memory. In accordance with aspects of the disclosure, a memory repair controller can have access to a CAM that has been configured to associate different memories with particular repair data. For example, a system may contain a plurality of subsystems, each having its own memory. These memories may be associated with the subsystem based on a subsystem ID, and the CAM may associate repair data with memories within identified subsystems. The CAM can be configured to read those CAM locations that are associated with an identified subsystem ID and return repair data from each CAM location that is associated with a memory within the identified subsystem.
[0003] In accordance with aspects of the disclosure, a system for memory repair may include a content-addressable memory (CAM); and one or more controllers. The one or more controllers may be configured to: receive a memory-repair request for a first subsystem of a plurality of subsystems; identify a subsystem ID associated with the memory-repair request; access the CAM, based on the subsystem ID, to identify repair-data associated with one or more memories of the first subsystem; and transmit associated repair-data for the one or more memories of the first subsystem.
[0004] In accordance with other aspects of the disclosure, accessing the CAM may further include reading only a portion of the repair-data within the CAM that is associated with the subsystem ID of the first subsystem.GOOGLE-4192
[0005] In accordance with still other aspects of the disclosure, the first subsystem may contain a plurality of memories for which repair-data are associated within the CAM, and the one or more controllers may be further configured to transmit repair-data for a first memory from the plurality of memories prior to identifying the associated repair-data for other memories from the plurality of memories.
[0006] In accordance with yet other aspects of the disclosure, the first subsystem may contain a particular number of memories for which repair-data are associated within the CAM, and identification of the repair-data for the particular number of memories may occur within a number of computing cycles that correspond to the particular number of memories.
[0007] In accordance with other aspects of the disclosure, the one or more controllers may be further configured to provide a termination indicator upon determining that repair-data for all memories associated with the subsystem ID of the first subsystem have been transmitted.
[0008] In accordance with aspects of the disclosure, the CAM may be further configured to determine if repair-data for an identified memory of the first subsystem has already been transmitted in connection with the request. In addition, accessing the CAM is performed recursively in connection with identifying each memory of the first subsystem.
[0009] In accordance with other aspects of the disclosure, the memory-repair request is a first memory-repair request, and the one or more controllers may be further configured to: receive a second memory -repair request for a second subsystem; identify a second subsystem ID associated with the second memory-repair request; access the CAM, based on a second subsystem ID, to identify repair-data that is associated with each memory of the second subsystem; wherein a first portion of the CAM is accessed in connection with the first request and a second portion of the CAM, which is distinct from the first portion, is accessed in connection with the second memory-repair request; and transmit associated repair-data for the one or more memories of the second subsystem.
[0010] In accordance with still other aspects of the disclosure, a method for memory repair may include: receiving a memory-repair request for a first subsystem of a plurality of subsystems; identifying a subsystem ID associated with the memory-repair request; accessing a content-addressable memory (CAM), based on the subsystem ID, to identify repair-data associated with one or more memories of the first subsystem; and transmitting associated repair-data for the one or more memories of the first subsystem.GOOGLE-4192
[0011] In accordance with other aspects of the disclosure, the method may include accessing the CAM by reading only a portion of the repair-data within the CAM associated with the subsystem ID of the first subsystem.
[0012] In accordance with yet other aspects of the disclosure, method may be performed by a system in which the first subsystem contains a plurality of memories for which repair-data are associated within the CAM, and the method may include transmitting repairdata for a first memory from the plurality of memories prior to identifying the associated repairdata for other memories from the plurality of memories.
[0013] In accordance with aspects of the disclosure, the first subsystem may contain a particular number of memories for which repair-data are associated within the CAM, and identification of the repair-data for the particular number of memories may occur within a number of computing cycles that correspond to the particular number of memories.
[0014] In accordance with other aspects of the disclosure, the method may include providing a termination indicator upon determining that repair-data for all memories associated with the subsystem ID of the first subsystem have been transmitted.
[0015] In accordance with still other aspects of the disclosure, the method may include determining if repair-data for an identified memory of the first subsystem has already been transmitted in connection with the request. The method may also include accessing the CAM recursively in connection with identifying each memory of the first subsystem. In addition, accessing the CAM may include reading a repair- ID that identifies a memory location to which the repair data is to be applied
[0016] In accordance with aspects of the disclosure, wherein the memory-repair request is a first request, and the method may further include: receiving a second memory-repair request for a second subsystem from the plurality of subsystems; identifying a second subsystem ID associated with the second memory-repair request; accessing the CAM, based on the second subsystem ID, to identify repair-data associated with one or more memories of the second subsystem, wherein a first portion of the CAM is accessed in connection with the first memory-repair request and a second portion of the CAM, which is distinct from the first portion, is accessed in connection with the second memory-repair request; and transmitting associated repair-data for the one or more memories of the second subsystem.GOOGLE-4192BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Figure 1 is a block-diagram of a memory-repair system in accordance with aspects of the disclosure.
[0018] Figure 2 is a block-diagram of a memory-repair controller and a content- addressable memory in accordance with aspects of the disclosure.
[0019] Figure 3 is a block-diagram of a repair-data packet in accordance with aspects of the disclosure.
[0020] Figure 4 is a flow-diagram of memory-repair operations in accordance with aspects of the disclosure.DETAILED DESCRIPTION
[0021] Disclosed herein are systems and methods for performing memory repair. The memories being repaired may include sets of memory dies that are configured to be accessible by one or more subsystems within a computing system. For example, a smartphone may contain a plurality of subsystems, each of which rely on a different set of memories. A memory-repair controller may be used to distribute repair data to the various subsystems, so as to allow the sets of memories to be repaired. Each subsystem can require a different set of repair data, and a subsystem may not be able to be fully initialized until repair data for the memories of the subsystem have been received. Accordingly, the memory-repair controllers disclosed herein are configured to efficiently identify and distribute repair data for each subsystem, such as by maintaining the repair data within a content-addressable memory (“CAM”).
[0022] Figure 1 is a diagram 100 of a system 101 that includes a number of subsystems 1 lOa-d. For example, system 101 may be a user device, such as a smartphone, that contains a number of different subsystems, including for example, a display subsystem, a modem subsystem, a camera subsystem, and the like. Thus, each subsystem 110 may be configured to perform particular operations for the system 101. In addition, each subsystem 1 lOa-d may contain a process controller 108 and one or more memories 102a-e. In performing designated operations, a subsystem 110 may use process controller 108 and access one or more memories 102. Each process controller 108 may be electrically connected, or otherwise communicatively connected, with subsystem 110a.
[0023] For example, as seen in diagram 100, each process controller 108 is connected via a request pathway 122 to memory-repair controller 112. In addition, memory-repairGOOGLE-4192 controller 112 is electrically connected, or otherwise communicatively connected, via a data- repair path 120 to receivers 104 of each subsystem 1 lOa-d. Some subsystems 110 may have its memory 102 partitioned from the rest of the subsystem 110. For example, subsystem 110b contains a partition 106 in which memory 102b and receiver 104 are partitioned from the rest of subsystem 110b. In addition, subsystem HOd contains a first set of memories 102d as well as a second set of memories 102e, each of which are partitioned from one another by a partition 106. Accordingly, memory-repair controller 112 can be connected via data-repair path 120 to separate receivers 104 within subsystem 1 lOd, with each receiver 104 being in communication with either memories 102d or memories 102e.
[0024] Memories 102a-e of subsystems 1 lOa-d may contain particular defects or other conditions that need to be addressed in order for a particular memory 102 to operate correctly or optimally. To address these defects, a memory 102 may access repair data that is configured to alter memory blocks within the memory 102 or is configured to otherwise allow the memory 102 to operate without defect. In accordance with aspects of the disclosure, the repair data for each of the memories 102a-e may be stored within a repair CAM 114 located within subsystem 110a.
[0025] Each subsystem HOa-d may be configured to transmit a request to a repair controller 112 in order to receive repair data prior to accessing a memory 102. For example, subsystem 110b may be initialized or otherwise brought into an active state, whereupon process controller 108 of subsystem 110b may transmit a memory-repair request to repair controller 112 via path 122. Repair controller 112 may access repair CAM 114 to determine whether any repair data exists for memories 102b of subsystem 110b. If repair CAM 114 does not have any repair data associated with memories 102b, then repair controller 112 may transmit a notification to process controller 108 of subsystem 110b indicating that no repair data is present. However, if repair CAM 114 contains repair data associated with one or more memories 102b, then repair controller 112 may transmit the repair data to receiver 104 of subsystem 110b, whereupon the transmitted repair data can be applied to designated memories 102b.
[0026] While diagram 100 contains four subsystems HOa-d, system 101 may contain a different number of subsystems, depending on the operations that system 101 is configured to perform. In addition, each subsystem 110 may contain a different number of memories 102, depending on the requirements of each subsystem 110. For example, system 101 can containGOOGLE-4192 forty (40) or more subsystems 110, with at least some subsystems 110 containing fifty (50) or more memories. Accordingly, memory-repair controller 112 and repair CAM 114 may be configured to respond to memory-repair requests from, on the order of, 1,000 or more memories 102 within system 101.
[0027] Figure 2 is a block diagram 200 of memory -repair controller 112 and repair CAM 114 of subsystem 110a. Repair CAM 114 contains a receiver 202 for receiving data from memory-repair controller 112 via inputs 212 and 214, as well as a transmitter 204 for transmitting data to memory-repair controller 112 via outputs 216, 218, and 220. Repair CAM 114 also contains a subsystem ID table 206 as well as an associated repair-data table 208.
[0028] As discussed herein, memory-repair controller 112 receives memory-repair requests from other subsystems (not shown). A received memory-repair request will include a subsystem ID that identifies the subsystem that has provided the request. Memory-repair controller 112 may access repair CAM 114 to determine if any repair data exists for memories associated with the requesting subsystem. For example, memory-repair controller 112 may provide receiver 202 of repair CAM 114 with inputs 212 and 214, with input 212 indicating that a repair request is being made, and input 214 providing the subsystem ID for the request. Repair CAM 114 also contains a data transmitter 204 that can include data outputs 216, 218, and 220. These data input and output pathways may take the form of voltage inputs / outputs that are synchronized with a clocking cycle. Alternatively, the data inputs and outputs may each be transmitted along a single input or output pathway to / from repair CAM 114. Although the data inputs and outputs are described as being electrical signals, they may take other forms, such as optical pathways.
[0029] Upon receiving memory-repair request from a subsystem, memory-repair controller 112 may pass the request and related subsystem ID to repair CAM 114 via data inputs 212 and 214. Upon receiver 202 obtaining the subsystem ID, repair CAM 114 can access ID table 206 to determine if any repair data has been associated with the provided subsystem ID. If the subsystem ID for the memory-repair request is not present within ID table 206, repair CAM 114 transmits a “done” indication via output 220 to memory-repair controller 112. However, if ID table 206 contains an entry with the provided subsystem ID, repair CAM 114 can use ID table 206 to identify the location, within repair-data table 208, of the repair data that has been associated with the provided subsystem ID. Repair CAM 114 can then read the identified locations within repair-data table 208 and provide the repair data from those locationsGOOGLE-4192 to memory-repair controller 112. For example, transmitter 204 may be configured to provide a data-valid signal via output pathway 216, indicating that the data being transmitted on output pathway 218 represents repair data in response to the request that was provided by memoryrepair controller 112.
[0030] As discussed herein, a subsystem may contain a number of memories, and more than one of these memories may require repair data. Thus, memory-repair controller 112 and repair CAM 114 can be configured to transmit multiple sets of repair data in response to a single memory-repair request. In accordance with aspects of the disclosure, ID table 206 may associate a particular subsystem ID with multiple locations within repair-data table 208. This association may occur by a location within ID table 206 pointing to multiple locations within repair-data table 208. Alternatively, ID table 206 may contain multiple entries that are associated with a particular subsystem ID, with each entry pointing to a particular location within repair-data table 208. Within repair-data table 208, each location may contain an identification of the memory that is to be repaired, as well as the repair data that will be applied to the memory.
[0031] In providing each set of repair data to memory-repair controller 112, repair CAM 114 can read a first location within repair-data table 208 that has been identified as being associated with the subsystem that is providing the request and transmit a first set of repair data over repair-data output 218 via transmitter 204. When a second location within repair-table 208 is read, data-valid output 216 can be configured to indicate that another set of repair data is being transmitted, and a second set of repair data from the second location can be transmitted over repair-data output 218 to memory-repair controller 112. Repair CAM 114 may be configured to recursively access repair-data table 208, so that each relevant entry of repair data is read by repair CAM 114, and no duplicate entries are provided from repair-data table 208. Once each set of repair data associated with the requesting subsystem has been transmitted from repair CAM 114 to memory-repair controller 112, a “done” indication can be transmitted over output 220. After the “done” indication is transmitted to memory-repair controller 112, repair data for another subsystem request may begin to be transmitted from repair CAM 114 to memory-repair controller 112.
[0032] In view of the manner in which repair CAM 114 is configured to associatively store repair data based on subsystem IDs, it is not necessary for repair CAM 114 to read each location within repair-data table 208. Instead, repair CAM 114 can be configured to only readGOOGLE-4192 the subset of locations within repair-data table 208 that have been associated with the subsystem ID that corresponds to the request that is currently being processed. This is in contrast with current uses of one-time programmable (OTP) memories to store repair data. In particular, current OTPs are not configured to associatively store repair data in the manner described for the repair CAM 114.
[0033] Thus, for any memory-repair request, a standard OTP will require a memoryrepair protocol in which each location within the OTP is read, so as to determine that all repair data for that request has been identified. For example, a standard OTP may be configured to store different sets of repair data in 700 different OTP locations, only some of which might be relevant to a particular memory-repair request. For each memory-repair request, a standard OTP will read all 700 locations. Accordingly, this process will require at least 700 clock cycles to be completed. When a second request is received, the OTP will again read all 700 locations in response to the request. In order to reduce the overall number of clock cycles associated with reading the entire OTP multiple times, the OTP protocol may wait to receive multiple requests, and then read the entire OTP once through in connection with multiple requests. However, this OTP protocol can result in latencies for instances in which a first memory -repair request is not processed immediately after it is received, but is instead processed after some period of time, in order to allow for subsequent memory-repair requests to be processed with the first memoryrepair request.
[0034] In contrast to performing memory repair with a standard OTP, the repair CAM 114 of subsystem 110a can efficiently identify repair data for a single request. In particular, for repair CAM 114, the number of clock cycles associated with processing a memory-repair request from a particular subsystem will be proportional to how many sets of repair data have been associated with that particular subsystem, rather than being proportional to the set of all repair-data locations within repair CAM 114. For example, if repair-data table 208 of repair CAM 114 contains 700 repair-data locations, but only five (5) of those locations have been associated with a particular subsystem, via ID table 206, then repair CAM 114 can access the repair data within those five locations without having to read the other 695 locations. In addition, if a second request from another subsystem is received by repair CAM 114, then repair CAM 114 can identify the repair data for the second request by only reading the subset of locations within repair-data table 208 that has been associated with other subsystem that made the second request. Thus, repair CAM 114 can be configured to readGOOGLE-4192 distinct subsets of repair data within repair-data table 208 in connection with memory-repair requests from different subsystems.
[0035] In order to address the multiple memories within a given subsystem, the repair data within repair-data table 208 can be configured to include a repair- ID, which identifies the particular memory within the subsystem to which the repair data is to be applied. Memoryrepair controller 112 can be configured to transmit this repair data to a subsystem, along with the repair-ID, so that the subsystem can apply the transmitted repair data to the appropriate memory. For example, Figure 3 is a block diagram 300 of a repair-data packet 301 that may be transmitted by a memory -repair controller 112 in response to a memory-repair request. Repairdata packet 301 may contain a set of data 302 that constitutes a subsystem ID 304, a repair-ID 306, and repair data 308. As discussed herein, the subsystem ID 304 identifies the particular subsystem that is to apply the subsystem, while repair-ID 306 identifies the particular memory locations within the subsystem to which the repair data 308 is to be applied. Returning to Figure 1, a repair-data packets may be transmitted by memory-repair controller 112 to each receiver 104 of subsystems 1 lOa-d via data-repair path 120.
[0036] Figure 4 is a flow-diagram 400 of operations in accordance with aspects of the disclosure. Operations associated with flow-diagram 400 may be performed by one or more controllers of the systems disclosed herein, including for example, a memory-repair controller in communication with a repair CAM. While operations within flow-diagram 400 are shown in a particular order, one or more operations may occur in a different order or simultaneously with other operations in accordance with aspects of the disclosure. In addition, one or more operations may be added or removed in accordance with the disclosure.
[0037] In block 401, a controller may wait for a memory-repair request to be received from a subsystem. Once a memory-repair request is received, a subsystem ID can be identified within the request, so as to determine the identification of the subsystem making the request (block 402). In block 403, a subsystem ID table is accessed based on the subsystem ID that has been accessed from the memory -repair request. As disclosed herein, the request’s subsystem ID may be passed to a repair CAM that determines whether the subsystem ID has been associated with repair data (block 404). If the subsystem ID is not present within the ID table, the repair CAM can transmit a “done” indication to a memory-repair controller (block 405). The memory-repair controller may transmit a “null” notification to the requesting subsystem, indicating that no repair data exists in connection with the memories of that subsystem (blockGOOGLE-4192406). The system may then return to block 401, in which it waits for the next repair requests, or begins processing the next repair request that has already been received.
[0038] Returning to block 404, if the subsystem ID from the memory-repair request is present within the ID table, the repair CAM can access a repair-data table and read repair data from a table location that is associated with the subsystem ID (block 406). As described herein, the repair data that is read from the repair-data table may include a repair- ID that identifies the particular memory for which the repair data is to be applied. This repair data, including the repair- ID, may be transmitted from the CAM to a memory -repair controller (block 407). The memory-repair controller may then transmit the repair data to the requesting subsystem (block 408). As described herein, the repair-data packet transmitted by the memory-repair controller may include the subsystem ID, the repair- ID, as well as the repair data. In block 409, the CAM may determine whether additional locations within the repair-data table have been associated with the subsystem ID. If additional repair data is associated with the subsystem ID, the CAM may return to block 406 and read the next associated entry within the repair-data table. If no additional locations within the repair-data table have been associated with the subsystem ID, the CAM may transmit a “done” indication to the memory-repair controller (block 410), and the system may return to block 401, in which it waits for the next repair requests, or begins processing the next repair request that has already been received.
[0039] Unless otherwise stated, the foregoing alternative examples are not mutually exclusive, but may be implemented in various combinations to achieve unique advantages. As these and other variations and combinations of the features discussed above can be utilized without departing from the subject matter defined by the claims, the foregoing description should be taken by way of illustration rather than by way of limitation of the subject matter defined by the claims. In addition, the provision of the examples described herein, as well as clauses phrased as "such as," "including" and the like, should not be interpreted as limiting the subject matter of the claims to the specific examples. Further, the same reference numbers in different drawings can identify the same or similar elements.
Claims
GOOGLE-4192CLAIMS1. A system for memory repair comprising: a content-addressable memory (CAM); and one or more controllers configured to: receive a memory -repair request for a first subsystem of a plurality of subsystems; identify a subsystem ID associated with the memory-repair request; access the CAM, based on the subsystem ID, to identify repair-data associated with one or more memories of the first subsystem; and transmit associated repair-data for the one or more memories of the first subsystem.
2. The system of claim 1, wherein accessing the CAM further comprises reading only a portion of the repair-data within the CAM that is associated with the subsystem ID of the first subsystem.
3. The system of claim 1, wherein the first subsystem contains a plurality of memories for which repair-data are associated within the CAM, and wherein the one or more controllers are further configured to transmit repair-data for a first memory from the plurality of memories prior to identifying the associated repair-data for other memories from the plurality of memories.
4. The system of claim 1, wherein the first subsystem contains a particular number of memories for which repair-data are associated within the CAM, and wherein identification of the repair-data for the particular number of memories occurs within a number of computing cycles that correspond to the particular number of memories.
5. The system of claim 1, wherein the one or more controllers are further configured to provide a termination indicator upon determining that repair-data for all memories associated with the subsystem ID of the first subsystem have been transmitted.
6. The system of claim 1, wherein the CAM is further configured to determine if repairdata for an identified memory of the first subsystem has already been transmitted in connection with the request.GOOGLE-41927. The system of claim 1, wherein accessing the CAM includes reading a repair- ID that identifies a memory location to which the repair data is to be applied.
8. The system of claim 1, wherein the memory -repair request is a first memory-repair request, and wherein the one or more controllers are further configured to: receive a second memory-repair request for a second subsystem; identify a second subsystem ID associated with the second memory -repair request; access the CAM, based on a second subsystem ID, to identify repair-data that is associated with each memory of the second subsystem; wherein a first portion of the CAM is accessed in connection with the first memoryrepair request and a second portion of the CAM, which is distinct from the first portion, is accessed in connection with the second memory-repair request; and transmit associated repair-data for the one or more memories of the second subsystem.
9. A method for memory repair comprising: receiving a memory-repair request for a first subsystem of a plurality of subsystems; identifying a subsystem ID associated with the memory-repair request; accessing a content-addressable memory (CAM), based on the subsystem ID, to identify repair-data associated with one or more memories of the first subsystem; and transmitting associated repair-data for the one or more memories of the first subsystem.
10. The method of claim 9, wherein accessing the CAM further comprises reading only a portion of the repair-data within the CAM associated with the subsystem ID of the first subsystem.
11. The method of claim 9, wherein the first subsystem contains a plurality of memories for which repair-data are associated within the CAM, and further comprising transmitting repair-data for a first memory from the plurality of memories prior to identifying the associated repair-data for other memories from the plurality of memories.
12. The method of claim 9, wherein the first subsystem contains a particular number of memories for which repair-data are associated within the CAM, and wherein identification ofGOOGLE-4192 the repair-data for the particular number of memories occurs within a number of computing cycles that correspond to the particular number of memories.
13. The method of claim 9, further comprising providing a termination indicator upon determining that repair-data for all memories associated with the subsystem ID of the first subsystem have been transmitted.
14. The method of claim 9, further comprising determining if repair-data for an identified memory of the first subsystem has already been transmitted in connection with the request.
15. The method of claim 9, wherein accessing the CAM includes reading a repair- ID that identifies a memory location to which the repair data is to be applied.
16. The method of claim 9, wherein the memory-repair request is a first request, and further comprising: receiving a second memory-repair request for a second subsystem from the plurality of subsystems; identifying a second subsystem ID associated with the second memory-repair request; accessing the CAM, based on the second subsystem ID, to identify repair-data associated with one or more memories of the second subsystem, wherein a first portion of the CAM is accessed in connection with the first memory -repair request and a second portion of the CAM, which is distinct from the first portion, is accessed in connection with the second memory-repair request; and transmit associated repair-data for the one or more memories of the second subsystem.
Citation Information
Patent Citations
Distributed hardware tree search methods and apparatus for memory data replacement
US9230620B1