US20080270703A1 - Method and system for managing memory transactions for memory repair - Google Patents

Method and system for managing memory transactions for memory repair Download PDF

Info

Publication number
US20080270703A1
US20080270703A1 US11/789,683 US78968307A US2008270703A1 US 20080270703 A1 US20080270703 A1 US 20080270703A1 US 78968307 A US78968307 A US 78968307A US 2008270703 A1 US2008270703 A1 US 2008270703A1
Authority
US
United States
Prior art keywords
location
memory
defective
indexed
validity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US11/789,683
Other versions
US7856576B2 (en
Inventor
Carson D. Henrion
Dan Robinson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Priority to US11/789,683 priority Critical patent/US7856576B2/en
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ROBINSON, DAN, HENRION, CARSON D.
Publication of US20080270703A1 publication Critical patent/US20080270703A1/en
Application granted granted Critical
Publication of US7856576B2 publication Critical patent/US7856576B2/en
Assigned to HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP reassignment HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity

Definitions

  • each address in the array Prior to the use of a chip containing a memory array, each address in the array is tested to detect manufacturing defects that prevent the address from correctly storing information. Rather than discard a memory array chip that contains defects, considerable effort is expended to “repair” the defect(s) by logically replacing a defective row or column with another row or column that has been designated as a spare. Replacement logic ensures that references to the original row or column are routed to the replacement row or column.
  • memory array repair typically requires extensive custom circuit design and introduces additional constraints on the main array. Additionally, the circuits to detect an access to a defective address and to multiplex the repaired memory elements into the array reduce the maximum operating frequency of the array. In most implementations, chip geography places further limitations on the repair elements, requiring that they be physically close to the defect.
  • a given repair element, or even a group of repair elements, can't repair every type of defect mechanism. For example, a cluster of failures in one physical area typically can't be repaired. Although necessary, the redundant array elements used for repairing defects, as well as their supporting circuits, can consume a significant fraction of the total array area and are frequently not used.
  • FIG. 1 illustrates an exemplary computer system containing a cache controller in accordance with an embodiment of the present disclosure
  • FIG. 2 illustrates a memory address divided into tag and index
  • FIG. 3 illustrates a four-way cache that is controlled by a memory controller according to an illustrative embodiment of the present disclosure
  • FIG. 4 illustrates a memory controller and memory logic blocks used in implementing a memory controller according to an embodiment
  • FIG. 5 illustrates a high-level block diagram of a circuit containing a set associative cache and cache controller according to an embodiment
  • FIG. 6 illustrates a scheme for initial testing of a set associative cache according to an embodiment
  • FIG. 7 illustrates a scheme for combining the testing of two related memories in an embodiment
  • FIG. 8 illustrates a scheme for managing a cache memory according to an embodiment.
  • System 100 contains one or more processors, e.g., 102 , 104 , which are connected to memory and I/O controller 106 through system bus 108 .
  • processors e.g., 102 , 104
  • memory and I/O controller 106 are connected to memory and I/O controller 106 by memory buses 114 , 116 .
  • I/O bus 118 connects memory and I/O controller 106 to device adapters 120 , 122 , 124 , 126 , 128 .
  • Each of device adapters 120 , 122 , 124 , 126 , 128 provides a connection for a peripheral component bus, allowing connections to multiple peripheral components, which are not specifically shown.
  • the specific embodiment shown is provided for the purpose of discussion and should not be taken to limit the disclosure in any manner.
  • the memory controller and method will be described in relation to set associative memory and an overview of the use of a set associative memory is provided here for illustration; however, it should be understood that the embodiments are not limited to set associative memory.
  • the memory controller must determine whether the desired information is available within the cache or must be retrieved from main memory. Commonly, when data from main memory is stored in the cache, the main memory address is also stored in cache memory. Then, when a processor requests a given memory address, the cache is searched for the desired address. If the address is found in the cache, the data is also there; otherwise, the data must be read from the main memory address. The challenge is to provide a fast, but not prohibitively expensive, means for searching the cache.
  • Fully associative mapping requires that the searchable memory addresses be stored in a type of memory called content addressable memory.
  • a content addressable memory searches all of the locations simultaneously for the presence of the desired address, so the search is conducted quickly.
  • a simultaneous search of the entire cache requires a comparator for every location in the memory, making this type of memory very expensive.
  • Direct mapping is a less expensive method of implementing a cache.
  • each location in main memory can be stored in the cache at a single location, although numerous main memory addresses are mapped to each location in the cache.
  • a portion of the main memory address called the tag, is stored in the cache, at a location corresponding to a second portion of the address, called the index.
  • exemplary main memory address 202 is eighteen bits long.
  • Index 204 consists of bits 0 - 10 and tag 206 consists of bits 11 - 17 of memory address 202 . The value of index 204 determines the single location within the cache at which memory address 202 may be stored.
  • tag 206 is stored at a location determined by index 204 . Then, when the processor makes a request for a specific main memory address, only the single location specified by the corresponding index 204 is checked to determine if the desired tag is present.
  • direct mapping does not require expensive hardware, this technique can result in situations in which a cache location is frequently swapped out. This problem can occur, for example, when a data array and the logic to access the data array are stored at locations having similar indexes.
  • Set associative memory provides a scheme that falls between a fully associative memory and a direct mapped memory.
  • a set associative memory allows a given location in main memory to be stored in a small number of cache locations.
  • An associative cache that has n ways has n possible locations at which the information from a given memory location can be stored. The most common values of n are 2, 4 or 8, although other integer values can also be used.
  • associative memory 300 is a four-way memory having ways 302 , 304 , 306 , 308 . Within each of ways 302 , 304 , 306 , 308 are locations 310 associated with each possible index. Assuming for illustration that the processor uses the 18-bit address shown in FIG. 2 , each of ways 302 , 304 , 306 , 308 has 2048 storage locations, corresponding to the 2048 possible values for the index.
  • tag 312 For each location in the cache, storage for three items of information is shown: (1) tag 312 corresponding to the main memory address stored at that location, (2) data 314 associated with the main memory address and (3) flag 316 indicating whether the data at that location is valid or stale.
  • tag 312 and flag 316 are often stored in the searchable way, while data 314 is stored at a separate location associated with the specific way and index, often in a slower, cheaper type of memory.
  • the controller When a processor requests a given memory address 202 , the controller simultaneously searches for desired tag 206 at the location 310 , in each of ways 302 , 304 , 306 , 308 , which corresponds to index 204 . If tag 206 is found in one of ways 302 , 304 , 306 , 308 , the corresponding data is provided to the system. If tag 206 is not present in any of ways 302 , 304 , 306 , 308 , the data will be retrieved from main memory and stored at the indexed location in one of ways 302 , 304 , 306 , 308 . The memory controller determines which way of ways 302 , 304 , 306 , 308 is allocated according to a desired replacement algorithm.
  • the memory controller and method disclosed herein can advantageously manage a memory, such as associative memory 300 , using logic to avoid the use of defective locations.
  • the disclosed method can be used to avoid row repair.
  • column and/or row repair can be performed on the memory and the disclosed method may be used to address issues that cannot be repaired with either column or row repair, such as clustered failures. Alternatively or additionally, the disclosed method may be used to address any combination of these sources of failure for the memory.
  • column repair is performed on associative memory 300 , but row repair is not performed.
  • exemplary four-way cache 300 becomes a three-way cache for the affected index. At other, valid index locations however, memory 300 remains a four-way associative memory with four possible storage locations.
  • the disclosed method and memory controller are not limited to set associative memory, but can also be adapted for use in fully associative memory and other types of memory.
  • Memory controller 400 contains validity module 402 , search module 404 and allocation module 406 .
  • Search module 404 searches for a given memory address to determine whether the memory address is stored in the cache memory.
  • Search module 404 advantageously recognizes defective locations in the memory and ignores the information that is stored in the defective locations.
  • Allocation module 406 allocates the storage location in the cache memory that will be used whenever new information is stored. Allocation module 406 also recognizes defective locations and blocks the allocation of any defective locations.
  • validity module 402 provides validity values that enable the recognition of defective locations in the cache memory.
  • memory block 500 is an L4 cache in a multiprocessor environment.
  • Memory block 500 is a 4-way associative memory that includes ways 502 , 504 , 506 , 508 .
  • ways 502 , 504 , 506 , 508 are static random access memory (SRAM) blocks and provide storage for a tag and a valid flag for each index location.
  • SRAM static random access memory
  • Data storage corresponding to ways 502 , 504 , 506 , 508 is in a separate memory composed of dynamic random access memory (DRAM) on a separate chip and is not shown.
  • DRAM dynamic random access memory
  • Each of ways 502 , 504 , 506 , 508 is connected to respective hit compare logic blocks 512 , 514 , 516 , 518 and to respective error correction code (ECC) blocks 511 , 513 , 515 , 517 .
  • ECC error correction code
  • hit compare logic blocks 512 , 514 , 516 , 518 receives the content of the indexed location and compares the content to the requested tag.
  • the hit compare logic blocks 512 , 514 , 516 , 518 search the ways for a match to a requested tag.
  • the output from the hit compare logic block is an indication of ‘hit’ or ‘no hit’ for each way.
  • ECC 511 , 513 , 515 , 517 contains circuitry for testing the accuracy of the data as the data is read or written. Recoverable errors are corrected by the ECC. Most errors detected by the ECC are soft errors, generally from radiation events; once the memory location is re-written, this type of failure will not return. When a failure persists at one location, the failure is most likely a hard error, e.g., caused by degradation of a transistor. In one embodiment, when the ECC detects a persistent failure at a location, that location is reported to the valid way logic, which ensures that the location of the persistent failure is marked as a defective address.
  • Memory controller 510 contains tag request logic block 520 , valid way logic block 522 , and response logic block 524 .
  • Tag request logic block 520 receives requests from a processor for memory addresses. Using the memory address as a tag and index, tag request logic block 520 sends a request to search the indexed location in each of the ways of the associative memory for the requested tag. The tag and index from the search request are also sent to other modules as necessary.
  • valid way logic block 522 produces, for the indexed location in each way, a validity value that indicates whether the location is a valid location or a defective location. The index that is used to access the ways is also used to retrieve valid way information.
  • Response logic block 524 receives a signal that indicates whether a match to the tag was found at any of the indexed locations and manages a response. When the hit signal indicates no matches, a new tag is written to memory block 500 ; response logic block 524 allocates a location in one of the ways to be used for storage of the new tag.
  • Memory controller 510 receives input from both fuses 526 and DRAM memory test 530 .
  • Built-in self test (BIST) block 528 tests ways 502 , 504 , 506 , 508 to determine whether any locations in SRAM memory block 500 are defective. Defective locations in the ways are permanently stored in fuses 526 and can be loaded into valid way logic block 522 at system start-up.
  • the disclosed method can be used to avoid a range of addresses that contain defects. For example, clusters of failures can occur along the physical boundary of an array due to lithography issues, giving rise to defects in adjacent addresses. The issue can be addressed in the disclosed method by storing an extra bit in the fuse that allows the address compare circuit to match a one or a zero for that bit of the address.
  • DRAM memory test 530 tests the DRAM memory in which the associated data is stored. DRAM memory test 530 writes to each location in the DRAM and then reads the information back to ensure that the memory is working properly. Any errors are noted. As discussed above with reference to the SRAM testing, a range of addresses having defects can also be noted. The result of the DRAM testing is also input to valid way logic block 522 . In one embodiment, valid way logic block 522 may combine the information from fuses 526 and DRAM memory test 530 in order to know all locations in either memory that are defective. This combined information may then be used to identify valid or defective locations to other modules as necessary. Although combining the knowledge of defects in SRAM memory block 500 with knowledge of defects in the DRAM memory is not necessary to the practice of the embodiments of the present disclosure, this feature provides further benefit to the use of the disclosed method and memory controller embodiment.
  • access array 538 contains an indicator or access value for each location in the ways, accessed by the same index as their corresponding ways.
  • Response logic block 524 updates these indicators after each access in order to track hits and writes to ways 502 , 504 , 506 , 508 .
  • the specific method of updating the access values reflects the algorithm used to allocate space in the cache.
  • One embodiment uses the “not recently used” (NRU) allocation algorithm, although one skilled in the art would know that other algorithms can also be used in the present context without affecting the disclosed method and system.
  • the access values in access array 538 are grouped together so that each possible index is represented by a four-bit set of access values.
  • access values are set to zero at system start-up, except for defective locations, which are marked with a one.
  • the associated access value is set to one, indicating recent use. If a current change would result in all ones for that 4-bit set of access values, the set of access values is first cleared to all zeros, then the current change is made. This algorithm ensures that for a given indexed location, all four ways will be written before any data is overwritten, assuming that no locations are defective.
  • response logic block 524 determines whether any of the indexed locations are defective. If a location is defective, response logic block 524 marks the associated access value to reflect recent use. If the current action would fill the entire set of access values with 1's, response logic clears the set of access values to 0's, then stores a one for the currently affected location and for any defective location. As a result, a defective location will never be chosen during the allocation process, since the access value will always indicate recent use.
  • Tag request logic block 520 in memory controller 510 sends two signals: read request, RdReq, 532 and write request, WrReq, 544 .
  • RdReq 532 contains a requested memory address including an index and a tag and is sent to ways 502 , 504 , 506 , 508 , valid way logic block 522 , and response logic block 524 .
  • WrReq 544 is sent to ways 502 , 504 , 506 , 508 and to response logic block 524 .
  • Valid way logic block 522 receives RdReq 532 and uses the included index to create indicator ValidWay 534 , which indicates, for each of the indexed location, whether the location is defective or not.
  • Valid way logic block 522 sends indicator ValidWay 534 to hit compare logic blocks 512 , 514 , 516 , 518 , error correction code 511 , 513 , 515 , 517 , and response logic block 524 .
  • ValidWay 534 is used to ensure that defective locations are not relied on for reading or writing.
  • the contents of the indexed location in each of ways 502 , 504 , 506 , 508 is sent to respective hit compare logic blocks 512 , 514 , 516 , 518 , where the content is compared to the requested tag.
  • the hit compare logic block receives ValidWays 534 , which is used to ignore any possible hits when the location is defective.
  • Hit compare logic blocks 512 , 514 , 516 , 518 forwards the result of all the compares, HitWays 536 , to response logic block 524 .
  • the associated error correction code 511 , 513 , 515 , 517 would normally report an error.
  • ECC 511 , 513 , 515 , 517 receives ValidWays 534 and uses this indicator to avoid reporting errors at known defective locations.
  • response logic block 524 reads from access array 538 using AccessRd 540 and writes to access array 538 using AccessWr 542 .
  • a memory array e.g., the memory array 500 comprising ways 502 , 504 , 506 , 508 is tested for defects by built-in self test (BIST) 528 (block 605 ).
  • BIST 528 repairs defective columns using known methods.
  • BIST 538 does not repair defective rows, but stores the location of any defective rows in fuses 526 , which provides a permanent memory of the discovered defects (block 610 ). This information is later sent to memory controller 510 according to an embodiment of the disclosure.
  • the cache is frequently divided into a faster memory, e.g., SRAM, containing the tags and the associated flags that indicate if the data is valid or stale, and a slower memory, e.g., DRAM, that contains the actual data.
  • the disclosed method can be used to avoid the defects in both of these memories at the same time.
  • FIG. 7 one embodiment is disclosed for loading defective addresses, including errors in the DRAM, into valid way logic block 522 .
  • a memory test is executed to test for errors in the DRAM array in which the cache data is stored (block 705 ).
  • the information in fuses 526 is then combined with the result of DRAM memory test 530 (block 710 ). This combined information is stored in valid way logic block 522 (block 715 ) and provides a database of all known errors in the cache memory.
  • Tag request logic block 520 sends the requested memory address, including index and tag, to ways 502 , 504 , 506 , 508 , hit compare logic blocks 512 , 514 , 516 , 518 , and to response logic block 524 (block 805 ).
  • valid way logic block 522 uses the requested index and the information received from fuses 526 and DRAM memory test 530 to determine whether any of the indexed locations contain defects or errors. This information is used to create ValidWays 534 .
  • ValidWays 534 contains a bit for each way, with a “1” indicating that the location is valid for the associated way and a “0” indicating that the location contains a defect or error.
  • ValidWays 534 is sent to hit compare logic blocks 512 , 514 , 516 , 518 , error correction code blocks 511 , 513 , 515 , 517 , and to response logic block 524 (block 810 ).
  • associated hit compare logic blocks 512 , 514 , 516 , 518 receives the tag stored at the indexed location of the respective way 502 , 504 , 506 , 508 and compares the received tag with the requested tag.
  • hit compare logic blocks 512 , 514 , 516 , 518 Prior to sending the results of the compare, hit compare logic blocks 512 , 514 , 516 , 518 performs two additional tests. In order to confirm a hit in the cache, the associated flag bit is checked to ensure that the data is valid and to prevent the use of stale data.
  • the hit compare logic block also reads ValidWays 534 and determines whether any of the indexed locations are defective. If an indexed location is defective, the hit compare logic blocks or ignores a hit occurring on that way.
  • a hit compare logic block reports a hit for the indexed location in the associated way if (a) the location has a match for the requested tag, (b) the valid data bit for the location is set and (c) the respective validity value indicates no defect.
  • the combined output 536 from hit compare logic blocks 512 , 514 , 516 , 518 is sent to response logic block 524 (block 815 ).
  • response logic block 524 After a read request is sent to the ways, response logic block 524 reads from access array 538 block 820 , providing a current access history for the location. Response logic block 524 then determines from HitWays 536 whether a hit occurred in any of the ways (block 825 ). If a hit has occurred, response logic block 524 ensures that the corresponding data is returned to the processor in (block 850 ) and then updates access array 538 to reflect the hit (block 855 ). If no hit occurred, response logic indicates this to the controller and the data is read from main memory (block 830 ). Tag request logic allocates a way to be used to store a new tag (block 835 ). The allocation of a defective way has already been blocked when the access array is updated, as explained earlier.
  • Response logic writes the new tag to the allocated location (block 840 ) and the associated data is written to the data cache (block 845 ). Finally, the new data is sent to the requesting processor (block 850 ) and response logic writes an update to the access array to reflect the write (block 855 ).
  • the disclosed method and memory controller provide a means to eliminate the use of row replacement to repair a defect in a memory, such as an associative memory. Defective locations are mapped and logic is incorporated into the normal access routines to avoid using the defective locations or relying on their respective content. Space for replacement rows can be used for other purposes, such as increasing the size of the primary array. While the effective number of ways is reduced at defective locations, there is minimal effect on the operation of the memory.
  • the embodiments set forth herein provide a memory controller and method that do not perform row repair in a set associative memory in a conventional manner. Instead, the controller uses stored information about the location of known defects and neither stores information in the defective location nor uses any information read from the defective location in one embodiment.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

In one embodiment, a controller for an associative memory having n ways contains circuitry for sending a request to search an indexed location in each of the n ways for a tag, wherein the tag and an index that is used to denote the indexed location form a memory address. The controller also contains circuitry, responsive to the request, for sending a set of n validity values, each validity value indicating, for a respective way, whether the indexed location is a valid location or a defective location. Additionally, the controller contains circuitry for receiving a hit signal that indicates whether a match to the tag was found at any of the indexed locations, wherein no hit is ever received for a defective location.

Description

    BACKGROUND
  • Prior to the use of a chip containing a memory array, each address in the array is tested to detect manufacturing defects that prevent the address from correctly storing information. Rather than discard a memory array chip that contains defects, considerable effort is expended to “repair” the defect(s) by logically replacing a defective row or column with another row or column that has been designated as a spare. Replacement logic ensures that references to the original row or column are routed to the replacement row or column.
  • The implementation of memory array repair typically requires extensive custom circuit design and introduces additional constraints on the main array. Additionally, the circuits to detect an access to a defective address and to multiplex the repaired memory elements into the array reduce the maximum operating frequency of the array. In most implementations, chip geography places further limitations on the repair elements, requiring that they be physically close to the defect.
  • A given repair element, or even a group of repair elements, can't repair every type of defect mechanism. For example, a cluster of failures in one physical area typically can't be repaired. Although necessary, the redundant array elements used for repairing defects, as well as their supporting circuits, can consume a significant fraction of the total array area and are frequently not used.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates an exemplary computer system containing a cache controller in accordance with an embodiment of the present disclosure;
  • FIG. 2 illustrates a memory address divided into tag and index;
  • FIG. 3 illustrates a four-way cache that is controlled by a memory controller according to an illustrative embodiment of the present disclosure;
  • FIG. 4 illustrates a memory controller and memory logic blocks used in implementing a memory controller according to an embodiment;
  • FIG. 5 illustrates a high-level block diagram of a circuit containing a set associative cache and cache controller according to an embodiment;
  • FIG. 6 illustrates a scheme for initial testing of a set associative cache according to an embodiment;
  • FIG. 7 illustrates a scheme for combining the testing of two related memories in an embodiment; and
  • FIG. 8 illustrates a scheme for managing a cache memory according to an embodiment.
  • DETAILED DESCRIPTION OF THE DRAWINGS
  • Representative embodiments of the present patent disclosure will now be described with reference to various examples wherein like reference numerals are used throughout the description and several views of the drawings to indicate like or corresponding parts, and further wherein the various elements are not necessarily drawn to scale.
  • With reference to FIG. 1, a computer system that uses a cache controller according to an embodiment of the present disclosure is illustrated and generally designated 100. System 100 contains one or more processors, e.g., 102, 104, which are connected to memory and I/O controller 106 through system bus 108. One or more memory modules, e.g., 110, 112 are connected to memory and I/O controller 106 by memory buses 114, 116. I/O bus 118 connects memory and I/O controller 106 to device adapters 120, 122, 124, 126, 128. Each of device adapters 120, 122, 124, 126, 128 provides a connection for a peripheral component bus, allowing connections to multiple peripheral components, which are not specifically shown. The specific embodiment shown is provided for the purpose of discussion and should not be taken to limit the disclosure in any manner.
  • The memory controller and method will be described in relation to set associative memory and an overview of the use of a set associative memory is provided here for illustration; however, it should be understood that the embodiments are not limited to set associative memory. To understand the concept of set associative memory, it is helpful to look first at some of the exemplary methods of controlling cache memory. Whenever the data from a specific memory address is requested by a processor, the memory controller must determine whether the desired information is available within the cache or must be retrieved from main memory. Commonly, when data from main memory is stored in the cache, the main memory address is also stored in cache memory. Then, when a processor requests a given memory address, the cache is searched for the desired address. If the address is found in the cache, the data is also there; otherwise, the data must be read from the main memory address. The challenge is to provide a fast, but not prohibitively expensive, means for searching the cache.
  • Fully associative mapping requires that the searchable memory addresses be stored in a type of memory called content addressable memory. A content addressable memory searches all of the locations simultaneously for the presence of the desired address, so the search is conducted quickly. However, a simultaneous search of the entire cache requires a comparator for every location in the memory, making this type of memory very expensive.
  • Direct mapping is a less expensive method of implementing a cache. In direct mapping, each location in main memory can be stored in the cache at a single location, although numerous main memory addresses are mapped to each location in the cache. In implementation, a portion of the main memory address, called the tag, is stored in the cache, at a location corresponding to a second portion of the address, called the index. With reference to FIG. 2, exemplary main memory address 202 is eighteen bits long. Index 204 consists of bits 0-10 and tag 206 consists of bits 11-17 of memory address 202. The value of index 204 determines the single location within the cache at which memory address 202 may be stored. To identify which of the possible main memory addresses are stored at this location in the cache, tag 206 is stored at a location determined by index 204. Then, when the processor makes a request for a specific main memory address, only the single location specified by the corresponding index 204 is checked to determine if the desired tag is present. Although direct mapping does not require expensive hardware, this technique can result in situations in which a cache location is frequently swapped out. This problem can occur, for example, when a data array and the logic to access the data array are stored at locations having similar indexes.
  • Set associative memory provides a scheme that falls between a fully associative memory and a direct mapped memory. A set associative memory allows a given location in main memory to be stored in a small number of cache locations. An associative cache that has n ways has n possible locations at which the information from a given memory location can be stored. The most common values of n are 2, 4 or 8, although other integer values can also be used.
  • With reference to FIG. 3, an associative memory that can be managed using a memory controller and method according to the present disclosure is described. In the illustrative embodiment, associative memory 300 is a four-way memory having ways 302, 304, 306, 308. Within each of ways 302, 304, 306, 308 are locations 310 associated with each possible index. Assuming for illustration that the processor uses the 18-bit address shown in FIG. 2, each of ways 302, 304, 306, 308 has 2048 storage locations, corresponding to the 2048 possible values for the index. For each location in the cache, storage for three items of information is shown: (1) tag 312 corresponding to the main memory address stored at that location, (2) data 314 associated with the main memory address and (3) flag 316 indicating whether the data at that location is valid or stale. For reasons of cost in actual implementations, tag 312 and flag 316 are often stored in the searchable way, while data 314 is stored at a separate location associated with the specific way and index, often in a slower, cheaper type of memory.
  • When a processor requests a given memory address 202, the controller simultaneously searches for desired tag 206 at the location 310, in each of ways 302, 304, 306, 308, which corresponds to index 204. If tag 206 is found in one of ways 302, 304, 306, 308, the corresponding data is provided to the system. If tag 206 is not present in any of ways 302, 304, 306, 308, the data will be retrieved from main memory and stored at the indexed location in one of ways 302, 304, 306, 308. The memory controller determines which way of ways 302, 304, 306, 308 is allocated according to a desired replacement algorithm.
  • The memory controller and method disclosed herein can advantageously manage a memory, such as associative memory 300, using logic to avoid the use of defective locations. In one embodiment, the disclosed method can be used to avoid row repair. In one embodiment, column and/or row repair can be performed on the memory and the disclosed method may be used to address issues that cannot be repaired with either column or row repair, such as clustered failures. Alternatively or additionally, the disclosed method may be used to address any combination of these sources of failure for the memory. In an exemplary embodiment, column repair is performed on associative memory 300, but row repair is not performed. In this exemplary embodiment, if a given row in one of the ways is found to be defective, the cache loses one way of the n possible ways available, i.e., no data will be stored at the defective location. Exemplary four-way cache 300 becomes a three-way cache for the affected index. At other, valid index locations however, memory 300 remains a four-way associative memory with four possible storage locations. Although an embodiment is illustrated with reference to a set associative memory, the disclosed method and memory controller are not limited to set associative memory, but can also be adapted for use in fully associative memory and other types of memory.
  • At a conceptual level, once a defective location in the memory is identified, two events should be prevented: (a) writing to the defective location and (b) relying on data from the defective location. Referring now to FIG. 4, a block diagram of a memory controller according to an exemplary embodiment is illustrated and generally designated 400. Memory controller 400 contains validity module 402, search module 404 and allocation module 406.
  • Search module 404 searches for a given memory address to determine whether the memory address is stored in the cache memory. Search module 404 advantageously recognizes defective locations in the memory and ignores the information that is stored in the defective locations. Allocation module 406 allocates the storage location in the cache memory that will be used whenever new information is stored. Allocation module 406 also recognizes defective locations and blocks the allocation of any defective locations. In order for search module 404 and allocation module 406 to perform their respective tasks, validity module 402 provides validity values that enable the recognition of defective locations in the cache memory. These three modules represent capabilities of the controller; specific implementations of a controller according to the present embodiment can accomplish these capabilities using many different methods and modules.
  • With reference now to FIG. 5, a 4-way associative memory block 500 and memory controller 510 are disclosed according to an embodiment. In one embodiment, memory block 500 is an L4 cache in a multiprocessor environment. Memory block 500 is a 4-way associative memory that includes ways 502, 504, 506, 508. In the present embodiment, ways 502, 504, 506, 508 are static random access memory (SRAM) blocks and provide storage for a tag and a valid flag for each index location. Data storage corresponding to ways 502, 504, 506, 508 is in a separate memory composed of dynamic random access memory (DRAM) on a separate chip and is not shown. Each of ways 502, 504, 506, 508 is connected to respective hit compare logic blocks 512, 514, 516, 518 and to respective error correction code (ECC) blocks 511, 513, 515, 517. When a request is made to locate a specific main memory address, hit compare logic blocks 512, 514, 516, 518 receives the content of the indexed location and compares the content to the requested tag. In other words, the hit compare logic blocks 512, 514, 516, 518 search the ways for a match to a requested tag. The output from the hit compare logic block is an indication of ‘hit’ or ‘no hit’ for each way. ECC 511, 513, 515, 517 contains circuitry for testing the accuracy of the data as the data is read or written. Recoverable errors are corrected by the ECC. Most errors detected by the ECC are soft errors, generally from radiation events; once the memory location is re-written, this type of failure will not return. When a failure persists at one location, the failure is most likely a hard error, e.g., caused by degradation of a transistor. In one embodiment, when the ECC detects a persistent failure at a location, that location is reported to the valid way logic, which ensures that the location of the persistent failure is marked as a defective address.
  • Memory controller 510 contains tag request logic block 520, valid way logic block 522, and response logic block 524. Tag request logic block 520 receives requests from a processor for memory addresses. Using the memory address as a tag and index, tag request logic block 520 sends a request to search the indexed location in each of the ways of the associative memory for the requested tag. The tag and index from the search request are also sent to other modules as necessary. In response to the request, valid way logic block 522 produces, for the indexed location in each way, a validity value that indicates whether the location is a valid location or a defective location. The index that is used to access the ways is also used to retrieve valid way information. Response logic block 524 receives a signal that indicates whether a match to the tag was found at any of the indexed locations and manages a response. When the hit signal indicates no matches, a new tag is written to memory block 500; response logic block 524 allocates a location in one of the ways to be used for storage of the new tag.
  • Memory controller 510 receives input from both fuses 526 and DRAM memory test 530. Built-in self test (BIST) block 528 tests ways 502, 504, 506, 508 to determine whether any locations in SRAM memory block 500 are defective. Defective locations in the ways are permanently stored in fuses 526 and can be loaded into valid way logic block 522 at system start-up. In one embodiment, the disclosed method can be used to avoid a range of addresses that contain defects. For example, clusters of failures can occur along the physical boundary of an array due to lithography issues, giving rise to defects in adjacent addresses. The issue can be addressed in the disclosed method by storing an extra bit in the fuse that allows the address compare circuit to match a one or a zero for that bit of the address. DRAM memory test 530 tests the DRAM memory in which the associated data is stored. DRAM memory test 530 writes to each location in the DRAM and then reads the information back to ensure that the memory is working properly. Any errors are noted. As discussed above with reference to the SRAM testing, a range of addresses having defects can also be noted. The result of the DRAM testing is also input to valid way logic block 522. In one embodiment, valid way logic block 522 may combine the information from fuses 526 and DRAM memory test 530 in order to know all locations in either memory that are defective. This combined information may then be used to identify valid or defective locations to other modules as necessary. Although combining the knowledge of defects in SRAM memory block 500 with knowledge of defects in the DRAM memory is not necessary to the practice of the embodiments of the present disclosure, this feature provides further benefit to the use of the disclosed method and memory controller embodiment.
  • Continuing to refer to FIG. 5, access array 538 contains an indicator or access value for each location in the ways, accessed by the same index as their corresponding ways. Response logic block 524 updates these indicators after each access in order to track hits and writes to ways 502, 504, 506, 508. The specific method of updating the access values reflects the algorithm used to allocate space in the cache. One embodiment uses the “not recently used” (NRU) allocation algorithm, although one skilled in the art would know that other algorithms can also be used in the present context without affecting the disclosed method and system. The access values in access array 538 are grouped together so that each possible index is represented by a four-bit set of access values. These access values are set to zero at system start-up, except for defective locations, which are marked with a one. Each time that an indexed location in a given way receives a hit or is written to, the associated access value is set to one, indicating recent use. If a current change would result in all ones for that 4-bit set of access values, the set of access values is first cleared to all zeros, then the current change is made. This algorithm ensures that for a given indexed location, all four ways will be written before any data is overwritten, assuming that no locations are defective.
  • To avoid allocation of a defective location, whenever an access value is written to access array 538, response logic block 524 determines whether any of the indexed locations are defective. If a location is defective, response logic block 524 marks the associated access value to reflect recent use. If the current action would fill the entire set of access values with 1's, response logic clears the set of access values to 0's, then stores a one for the currently affected location and for any defective location. As a result, a defective location will never be chosen during the allocation process, since the access value will always indicate recent use.
  • Still referring to FIG. 5, the signals that are sent between modules are discussed. Tag request logic block 520 in memory controller 510 sends two signals: read request, RdReq, 532 and write request, WrReq, 544. RdReq 532 contains a requested memory address including an index and a tag and is sent to ways 502, 504, 506, 508, valid way logic block 522, and response logic block 524. WrReq 544 is sent to ways 502, 504, 506, 508 and to response logic block 524. Valid way logic block 522 receives RdReq 532 and uses the included index to create indicator ValidWay 534, which indicates, for each of the indexed location, whether the location is defective or not. Valid way logic block 522 sends indicator ValidWay 534 to hit compare logic blocks 512, 514, 516, 518, error correction code 511, 513, 515, 517, and response logic block 524. In each of the receiving modules, ValidWay 534 is used to ensure that defective locations are not relied on for reading or writing. During a read of associative memory 500, the contents of the indexed location in each of ways 502, 504, 506, 508 is sent to respective hit compare logic blocks 512, 514, 516, 518, where the content is compared to the requested tag. The hit compare logic block receives ValidWays 534, which is used to ignore any possible hits when the location is defective. Hit compare logic blocks 512, 514, 516, 518 forwards the result of all the compares, HitWays 536, to response logic block 524. During a read from a defective location in a way, the associated error correction code 511, 513, 515, 517 would normally report an error. However, ECC 511, 513, 515, 517 receives ValidWays 534 and uses this indicator to avoid reporting errors at known defective locations. Finally, response logic block 524 reads from access array 538 using AccessRd 540 and writes to access array 538 using AccessWr 542.
  • With reference now to FIG. 6, a scheme for testing the SRAM memory in one embodiment is disclosed. A memory array, e.g., the memory array 500 comprising ways 502, 504, 506, 508 is tested for defects by built-in self test (BIST) 528 (block 605). During this testing BIST 528 repairs defective columns using known methods. BIST 538 does not repair defective rows, but stores the location of any defective rows in fuses 526, which provides a permanent memory of the discovered defects (block 610). This information is later sent to memory controller 510 according to an embodiment of the disclosure.
  • As mentioned previously, the cache is frequently divided into a faster memory, e.g., SRAM, containing the tags and the associated flags that indicate if the data is valid or stale, and a slower memory, e.g., DRAM, that contains the actual data. The disclosed method can be used to avoid the defects in both of these memories at the same time. With reference now to FIG. 7, one embodiment is disclosed for loading defective addresses, including errors in the DRAM, into valid way logic block 522. At system start-up, a memory test is executed to test for errors in the DRAM array in which the cache data is stored (block 705). The information in fuses 526 is then combined with the result of DRAM memory test 530 (block 710). This combined information is stored in valid way logic block 522 (block 715) and provides a database of all known errors in the cache memory.
  • With reference now to FIG. 8, an embodiment for managing a memory such as n-way associative memory 500 is discussed. The scheme begins when a request for a given main memory address is received in a memory controller, such as memory controller 510. Tag request logic block 520 sends the requested memory address, including index and tag, to ways 502, 504, 506, 508, hit compare logic blocks 512, 514, 516, 518, and to response logic block 524 (block 805).
  • After receiving the request, valid way logic block 522 uses the requested index and the information received from fuses 526 and DRAM memory test 530 to determine whether any of the indexed locations contain defects or errors. This information is used to create ValidWays 534. In one embodiment, ValidWays 534 contains a bit for each way, with a “1” indicating that the location is valid for the associated way and a “0” indicating that the location contains a defect or error. ValidWays 534 is sent to hit compare logic blocks 512, 514, 516, 518, error correction code blocks 511, 513, 515, 517, and to response logic block 524 (block 810).
  • At each way, associated hit compare logic blocks 512, 514, 516, 518 receives the tag stored at the indexed location of the respective way 502, 504, 506, 508 and compares the received tag with the requested tag. Prior to sending the results of the compare, hit compare logic blocks 512, 514, 516, 518 performs two additional tests. In order to confirm a hit in the cache, the associated flag bit is checked to ensure that the data is valid and to prevent the use of stale data. The hit compare logic block also reads ValidWays 534 and determines whether any of the indexed locations are defective. If an indexed location is defective, the hit compare logic blocks or ignores a hit occurring on that way. Since a read of all four ways is automatically performed, the possibility exists that the value in a defective location will accidently match a requested tag; blocking the hit prevents this error from propagating through the system. In other words, a hit compare logic block reports a hit for the indexed location in the associated way if (a) the location has a match for the requested tag, (b) the valid data bit for the location is set and (c) the respective validity value indicates no defect. The combined output 536 from hit compare logic blocks 512, 514, 516, 518 is sent to response logic block 524 (block 815). Thus, use of ValidWays 534 ensures that a defective location will not give a false match. One skilled in the art would appreciate that other means for avoiding a defective location can also be implemented within the scope of the present disclosure.
  • After a read request is sent to the ways, response logic block 524 reads from access array 538 block 820, providing a current access history for the location. Response logic block 524 then determines from HitWays 536 whether a hit occurred in any of the ways (block 825). If a hit has occurred, response logic block 524 ensures that the corresponding data is returned to the processor in (block 850) and then updates access array 538 to reflect the hit (block 855). If no hit occurred, response logic indicates this to the controller and the data is read from main memory (block 830). Tag request logic allocates a way to be used to store a new tag (block 835). The allocation of a defective way has already been blocked when the access array is updated, as explained earlier. One skilled in the art would recognize, however, that other mechanisms can also be used to block allocation of a defective location for purposes of the present patent application. Response logic writes the new tag to the allocated location (block 840) and the associated data is written to the data cache (block 845). Finally, the new data is sent to the requesting processor (block 850) and response logic writes an update to the access array to reflect the write (block 855).
  • The disclosed method and memory controller provide a means to eliminate the use of row replacement to repair a defect in a memory, such as an associative memory. Defective locations are mapped and logic is incorporated into the normal access routines to avoid using the defective locations or relying on their respective content. Space for replacement rows can be used for other purposes, such as increasing the size of the primary array. While the effective number of ways is reduced at defective locations, there is minimal effect on the operation of the memory.
  • Based on the foregoing Detailed Description, it may be appreciated that the embodiments set forth herein provide a memory controller and method that do not perform row repair in a set associative memory in a conventional manner. Instead, the controller uses stored information about the location of known defects and neither stores information in the defective location nor uses any information read from the defective location in one embodiment.
  • Although the present patent disclosure has been described with reference to certain exemplary embodiments, it is to be understood that the forms of the embodiments shown and described are to be treated as illustrative only. Accordingly, various changes, substitutions and modifications can be realized without departing from the scope of the present disclosure as set forth in the following claims.

Claims (20)

1. A controller for an associative memory having n ways, where n is a positive integer, said controller comprising:
circuitry for sending a request to search an indexed location in each of said n ways for a given tag, wherein said given tag and an index that is used to denote said indexed location form a memory address;
circuitry, responsive to said request, for sending a set of n validity values, each validity value indicating, for a respective way, whether said indexed location is a valid location or a defective location; and
circuitry for receiving a hit signal that indicates whether a match to said given tag was found at any of said indexed locations, wherein no hit is ever received for a defective location.
2. The controller according to claim 1, further comprising circuitry, responsive to a hit signal that indicates no matches, for allocating one of said indexed locations for storage of said given tag, wherein a defective location is blocked from being allocated.
3. The controller according to claim 2, further comprising circuitry for updating a set of access values corresponding to said indexed locations, wherein said circuitry for updating uses said set of n validity values to provide a defective location with an access value that prevents said defective location from being allocated.
4. The controller according to claim 3, wherein said controller uses a “not recently used” replacement algorithm and said circuitry for updating a set of access values provides a “recently used” value for a defective location.
5. The controller according to claim 1, further comprising circuitry for receiving the result of a first test for defects in said associative memory, wherein the results is used to create said validity values.
6. The controller according to claim 5, further comprising circuitry for receiving the result of a second test for defects in a data cache associated with said associative memory, wherein said circuitry for receiving combines the result of said first test and said second test and uses the combined results to create said validity values.
7. A computer system comprising:
one or more processors coupled to an associative memory having n ways, where n is a positive integer, said associative memory being accessible by said processors;
means for sending a request to search an indexed location in each of said n ways for a given tag, wherein said given tag and an index that is used to denote said indexed location form a memory address;
means for sending, responsive to said request, a set of n validity values, each validity value indicating, for a respective way, whether said indexed location is a valid location or a defective location;
means for searching said indexed locations for a match to said given tag, wherein when a validity value indicates a defective location, a hit in a corresponding way is blocked; and
means for updating a set of access values corresponding to said given index, wherein said circuitry for updating uses said set of n validity values to provide a defective location with an access value that prevents said defective location from being allocated.
8. The computer system according to claim 7, further comprising means for allocating a storage location in said associative memory in response to no hits in said means for searching, wherein said storage location is to be allocated from said given location in each of said n ways.
9. The computer system according to claim 7, wherein said associative memory contains respective means for correcting errors for each way, wherein said means for correcting errors uses a respective validity value to block a report of an error for a defective location.
10. The computer system according to claim 9, wherein when said means for correcting errors detects a persistent error, said means for correcting errors sends the location of the persistent error to said means for sending a set of n validity values.
11. The computer system according to claim 7, further comprising non-volatile storage containing a result of a first test for defects in said associative memory.
12. The computer system according to claim 11, further comprising means for combining said result of said first test with output from a second test of a data memory associated with said associative memory to form combined results, wherein said combined results are used to produce said set of n validity values.
13. The computer system according to claim 11, wherein said non-volatile storage contains means to store a range of addresses that contain defects.
14. The computer system according to claim 7, wherein said means for searching reports a hit for a given way if (a) said corresponding location has a match for said tag, (b) a valid data bit for said corresponding location is set and (c) said respective validity value indicates no defect.
15. A method for redirecting memory transactions in an associative memory having n ways, the method comprising:
sending a request to each of said ways to search an indexed location for a given tag, wherein said given tag and an index used to denote said indexed location form a memory address;
responsive to said request, sending a set of validity values to said n ways, each validity value indicating, for a respective way, whether said indexed location is a valid location or a defective location;
searching said indexed locations for a match to said given tag and returning a hit value that indicates a result, wherein when a validity value indicates a defective location, a hit in a corresponding way is blocked; and
updating a set of access values corresponding to said indexed location, wherein said updating uses said set of n validity values to provide a defective one of said corresponding locations with an access value that prevents said defective one from being allocated.
16. The method according to claim 15, further comprising, responsive to a hit value that indicates no matches in said updating, allocating one of said indexed locations, wherein a defective location is blocked from being allocated.
17. The method according to claim 15, further comprising testing said associative memory for defects and storing a first result of said testing in non-volatile storage, wherein said first result is used to create said set of validity values.
18. The method according to claim 17, further comprising:
testing a data memory that is associated with said associative memory for errors to produce a second result; and
combining said first result and said second result to form combined results;
wherein said combined results are used to create said set of validity values.
19. The method according to claim 15, further comprising performing error correction for each way, wherein when a validity value indicates a defective location, a report of an error for said defective location is blocked.
20. The method according to claim 15, wherein a hit is reported for a given way if (a) said corresponding location contains a match for said tag, (b) a valid data bit for said corresponding given location is set and (c) said respective validity value indicates no defect.
US11/789,683 2007-04-25 2007-04-25 Method and system for managing memory transactions for memory repair Active 2029-09-24 US7856576B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/789,683 US7856576B2 (en) 2007-04-25 2007-04-25 Method and system for managing memory transactions for memory repair

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/789,683 US7856576B2 (en) 2007-04-25 2007-04-25 Method and system for managing memory transactions for memory repair

Publications (2)

Publication Number Publication Date
US20080270703A1 true US20080270703A1 (en) 2008-10-30
US7856576B2 US7856576B2 (en) 2010-12-21

Family

ID=39888393

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/789,683 Active 2029-09-24 US7856576B2 (en) 2007-04-25 2007-04-25 Method and system for managing memory transactions for memory repair

Country Status (1)

Country Link
US (1) US7856576B2 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070283084A1 (en) * 2006-05-30 2007-12-06 Himax Technologies Limited Memory and redundancy repair method thereof
US20090006887A1 (en) * 2007-06-29 2009-01-01 Qimonda North America Corp. System and method for addressing errors in a multiple-chip memory device
US20100205376A1 (en) * 2007-07-05 2010-08-12 Nxp B.V. Method for the improvement of microprocessor security
US20100205478A1 (en) * 2009-02-10 2010-08-12 International Business Machines Corporation Resource integrity during partial backout of application updates
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US8576641B1 (en) * 2010-02-26 2013-11-05 Xilinx, Inc. Method of and circuit for providing non-volatile memory in an integrated circuit
US20140095794A1 (en) * 2012-09-28 2014-04-03 Jaideep Moses Apparatus and Method For Reducing The Flushing Time Of A Cache
US20150149713A1 (en) * 2013-11-22 2015-05-28 Nvidia Corporation Memory interface design
US9230620B1 (en) * 2012-03-06 2016-01-05 Inphi Corporation Distributed hardware tree search methods and apparatus for memory data replacement
US20180121274A1 (en) * 2016-10-31 2018-05-03 Qualcomm Incorporated Providing efficient handling of memory array failures in processor-based systems

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8027194B2 (en) * 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
US8327121B2 (en) * 2008-08-20 2012-12-04 Mips Technologies, Inc. Data cache receive flop bypass
US8392651B2 (en) * 2008-08-20 2013-03-05 Mips Technologies, Inc. Data cache way prediction
US8086913B2 (en) * 2008-09-11 2011-12-27 Micron Technology, Inc. Methods, apparatus, and systems to repair memory

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4996641A (en) * 1988-04-15 1991-02-26 Motorola, Inc. Diagnostic mode for a cache
US5019971A (en) * 1987-04-13 1991-05-28 Prime Computer, Inc. High availability cache organization
US5070502A (en) * 1989-06-23 1991-12-03 Digital Equipment Corporation Defect tolerant set associative cache
US5551004A (en) * 1993-05-28 1996-08-27 Sgs-Thomson Microelectronics, Inc. Structure which renders faulty data of a cache memory uncacheable in order that a partially functional cache memory may be utilized
US5666482A (en) * 1994-03-31 1997-09-09 Sgs-Thomson Microelectronics, Inc. Method and system for bypassing a faulty line of data or its associated tag of a set associative cache memory
US5708789A (en) * 1993-11-01 1998-01-13 Sgs-Thomson Microelectronics, Inc. Structure to utilize a partially functional cache memory by invalidation of faulty cache memory locations
US6006311A (en) * 1997-04-14 1999-12-21 Internatinal Business Machines Corporation Dynamic updating of repair mask used for cache defect avoidance
US6044441A (en) * 1995-09-29 2000-03-28 Intel Corporation Method and apparatus for encoding valid and invalid states in a cache with an invalid pattern
US6385071B1 (en) * 2001-05-21 2002-05-07 International Business Machines Corporation Redundant scheme for CAMRAM memory array
US6412051B1 (en) * 1996-11-27 2002-06-25 International Business Machines Corp. System and method for controlling a memory array in an information handling system
US20020124145A1 (en) * 2000-12-20 2002-09-05 International Business Machines Corporation Data processing system and method of communication that reduce latency of write transactions subject to retry
US20030088811A1 (en) * 2001-04-20 2003-05-08 Rajasekhar Cherabuddi Yield improvement through probe-based cache size reduction
US6567952B1 (en) * 2000-04-18 2003-05-20 Intel Corporation Method and apparatus for set associative cache tag error detection
US20040078702A1 (en) * 2002-06-28 2004-04-22 Fujitsu Limited Cache memory device and reference history bit error detection method
US6754117B2 (en) * 2002-08-16 2004-06-22 Micron Technology, Inc. System and method for self-testing and repair of memory modules
US6870782B2 (en) * 2003-04-15 2005-03-22 Lsi Logic Corporation Row redundancy memory repair scheme with shift to eliminate timing penalty
US6928591B2 (en) * 2002-12-23 2005-08-09 Lsi Logic Corporation Fault repair controller for redundant memory integrated circuits
US20050273669A1 (en) * 2002-03-04 2005-12-08 Desota Donald R Cache entry error-correcting code (ECC) based at least on cache entry data and memory address
US7053470B1 (en) * 2005-02-19 2006-05-30 Azul Systems, Inc. Multi-chip package having repairable embedded memories on a system chip with an EEPROM chip storing repair information
US7137027B2 (en) * 2003-02-07 2006-11-14 Renesas Technology Corp. Nonvolatile memory system
US7170802B2 (en) * 2003-12-31 2007-01-30 Sandisk Corporation Flexible and area efficient column redundancy for non-volatile memories
US7370151B2 (en) * 2000-08-31 2008-05-06 Hewlett-Packard Development Company, L.P. Method and system for absorbing defects in high performance microprocessor with a large n-way set associative cache

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5019971A (en) * 1987-04-13 1991-05-28 Prime Computer, Inc. High availability cache organization
US4996641A (en) * 1988-04-15 1991-02-26 Motorola, Inc. Diagnostic mode for a cache
US5070502A (en) * 1989-06-23 1991-12-03 Digital Equipment Corporation Defect tolerant set associative cache
US5551004A (en) * 1993-05-28 1996-08-27 Sgs-Thomson Microelectronics, Inc. Structure which renders faulty data of a cache memory uncacheable in order that a partially functional cache memory may be utilized
US5708789A (en) * 1993-11-01 1998-01-13 Sgs-Thomson Microelectronics, Inc. Structure to utilize a partially functional cache memory by invalidation of faulty cache memory locations
US5666482A (en) * 1994-03-31 1997-09-09 Sgs-Thomson Microelectronics, Inc. Method and system for bypassing a faulty line of data or its associated tag of a set associative cache memory
US6044441A (en) * 1995-09-29 2000-03-28 Intel Corporation Method and apparatus for encoding valid and invalid states in a cache with an invalid pattern
US6412051B1 (en) * 1996-11-27 2002-06-25 International Business Machines Corp. System and method for controlling a memory array in an information handling system
US6006311A (en) * 1997-04-14 1999-12-21 Internatinal Business Machines Corporation Dynamic updating of repair mask used for cache defect avoidance
US6567952B1 (en) * 2000-04-18 2003-05-20 Intel Corporation Method and apparatus for set associative cache tag error detection
US7370151B2 (en) * 2000-08-31 2008-05-06 Hewlett-Packard Development Company, L.P. Method and system for absorbing defects in high performance microprocessor with a large n-way set associative cache
US20020124145A1 (en) * 2000-12-20 2002-09-05 International Business Machines Corporation Data processing system and method of communication that reduce latency of write transactions subject to retry
US6918071B2 (en) * 2001-04-20 2005-07-12 Sun Microsystems, Inc. Yield improvement through probe-based cache size reduction
US20030088811A1 (en) * 2001-04-20 2003-05-08 Rajasekhar Cherabuddi Yield improvement through probe-based cache size reduction
US6385071B1 (en) * 2001-05-21 2002-05-07 International Business Machines Corporation Redundant scheme for CAMRAM memory array
US20050273669A1 (en) * 2002-03-04 2005-12-08 Desota Donald R Cache entry error-correcting code (ECC) based at least on cache entry data and memory address
US20040078702A1 (en) * 2002-06-28 2004-04-22 Fujitsu Limited Cache memory device and reference history bit error detection method
US7376868B2 (en) * 2002-06-28 2008-05-20 Fujitsu Limited Cache memory device and reference history bit error detection method
US6754117B2 (en) * 2002-08-16 2004-06-22 Micron Technology, Inc. System and method for self-testing and repair of memory modules
US6928591B2 (en) * 2002-12-23 2005-08-09 Lsi Logic Corporation Fault repair controller for redundant memory integrated circuits
US7137027B2 (en) * 2003-02-07 2006-11-14 Renesas Technology Corp. Nonvolatile memory system
US6870782B2 (en) * 2003-04-15 2005-03-22 Lsi Logic Corporation Row redundancy memory repair scheme with shift to eliminate timing penalty
US7170802B2 (en) * 2003-12-31 2007-01-30 Sandisk Corporation Flexible and area efficient column redundancy for non-volatile memories
US7053470B1 (en) * 2005-02-19 2006-05-30 Azul Systems, Inc. Multi-chip package having repairable embedded memories on a system chip with an EEPROM chip storing repair information

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070283084A1 (en) * 2006-05-30 2007-12-06 Himax Technologies Limited Memory and redundancy repair method thereof
US7802133B2 (en) * 2007-06-29 2010-09-21 Qimonda North America Corp. System and method for addressing errors in a multiple-chip memory device
US20090006887A1 (en) * 2007-06-29 2009-01-01 Qimonda North America Corp. System and method for addressing errors in a multiple-chip memory device
US20100205376A1 (en) * 2007-07-05 2010-08-12 Nxp B.V. Method for the improvement of microprocessor security
US9921905B2 (en) * 2009-02-10 2018-03-20 International Business Machines Corporation Resource integrity during partial backout of application updates
US20100205478A1 (en) * 2009-02-10 2010-08-12 International Business Machines Corporation Resource integrity during partial backout of application updates
US20160210188A1 (en) * 2009-02-10 2016-07-21 International Business Machines Corporation Resource integrity during partial backout of application updates
US9110801B2 (en) * 2009-02-10 2015-08-18 International Business Machines Corporation Resource integrity during partial backout of application updates
US9323626B2 (en) * 2009-02-10 2016-04-26 International Business Machines Corporation Resource integrity during partial backout of application updates
US8576641B1 (en) * 2010-02-26 2013-11-05 Xilinx, Inc. Method of and circuit for providing non-volatile memory in an integrated circuit
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US9230620B1 (en) * 2012-03-06 2016-01-05 Inphi Corporation Distributed hardware tree search methods and apparatus for memory data replacement
CN104798032A (en) * 2012-09-28 2015-07-22 英特尔公司 Apparatus and method for reducing the flushing time of a cache
US9128842B2 (en) * 2012-09-28 2015-09-08 Intel Corporation Apparatus and method for reducing the flushing time of a cache
US20140095794A1 (en) * 2012-09-28 2014-04-03 Jaideep Moses Apparatus and Method For Reducing The Flushing Time Of A Cache
US20150149713A1 (en) * 2013-11-22 2015-05-28 Nvidia Corporation Memory interface design
US9946658B2 (en) * 2013-11-22 2018-04-17 Nvidia Corporation Memory interface design having controllable internal and external interfaces for bypassing defective memory
US20180121274A1 (en) * 2016-10-31 2018-05-03 Qualcomm Incorporated Providing efficient handling of memory array failures in processor-based systems
WO2018080725A1 (en) * 2016-10-31 2018-05-03 Qualcomm Incorporated Providing efficient handling of memory array failures in processor-based systems
CN109891507A (en) * 2016-10-31 2019-06-14 高通股份有限公司 Efficient disposition to memory array failure is provided in a processor-based system
US10541044B2 (en) 2016-10-31 2020-01-21 Qualcomm Incorporated Providing efficient handling of memory array failures in processor-based systems

Also Published As

Publication number Publication date
US7856576B2 (en) 2010-12-21

Similar Documents

Publication Publication Date Title
US7856576B2 (en) Method and system for managing memory transactions for memory repair
US7430145B2 (en) System and method for avoiding attempts to access a defective portion of memory
US7656727B2 (en) Semiconductor memory device and system providing spare memory locations
KR100572800B1 (en) Error checking method, error correcting code checker and computer system comprising same
US6035432A (en) System for remapping defective memory bit sets
US7996710B2 (en) Defect management for a semiconductor memory system
US7478285B2 (en) Generation and use of system level defect tables for main memory
US6480975B1 (en) ECC mechanism for set associative cache array
US7647536B2 (en) Repair bits for a low voltage cache
US8205136B2 (en) Fault tolerant encoding of directory states for stuck bits
US20080181035A1 (en) Method and system for a dynamically repairable memory
KR100273907B1 (en) Cache array defect functional bypassing using repair mask
US11210186B2 (en) Error recovery storage for non-associative memory
US9424195B2 (en) Dynamic remapping of cache lines
JPH10334695A (en) Cache memory and information-processing system
JPH0524540B2 (en)
JP2013196393A (en) Arithmetic processing unit and control method of arithmetic processing unit
JPH10320280A (en) Method for storing value in cache, and computer system
US8230277B2 (en) Storage of data in data stores having some faulty storage locations
JPH10320279A (en) Recoverable high-speed directory access method
KR19980079609A (en) Multiple Cache Directories for Snooping Devices
US7689891B2 (en) Method and system for handling stuck bits in cache directories
JP3659350B2 (en) New micro-cell redundancy scheme for high performance eDRAM
US20050071723A1 (en) Adaptive runtime repairable entry register file
CN101145135B (en) Relocatable storage protect key data method and memory

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HENRION, CARSON D.;ROBINSON, DAN;REEL/FRAME:019295/0062;SIGNING DATES FROM 20070404 TO 20070405

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HENRION, CARSON D.;ROBINSON, DAN;SIGNING DATES FROM 20070404 TO 20070405;REEL/FRAME:019295/0062

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001

Effective date: 20151027

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12