US8732551B2 - Memory controller with automatic error detection and correction - Google Patents
Memory controller with automatic error detection and correction Download PDFInfo
- Publication number
- US8732551B2 US8732551B2 US13/237,917 US201113237917A US8732551B2 US 8732551 B2 US8732551 B2 US 8732551B2 US 201113237917 A US201113237917 A US 201113237917A US 8732551 B2 US8732551 B2 US 8732551B2
- Authority
- US
- United States
- Prior art keywords
- memory
- validation code
- memory line
- validation
- line
- 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.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the problems noted above are solved in large part by a memory system that relatively quickly “scrubs” such errors when possible.
- the disclosed memory validation manager reserves a block of time for exclusive accesses to a memory bank having lines of memory for which validation codes provide a degree of error detection and correction for each memory line.
- the memory validation manager reads, processes, and corrects at least some of the contents of each memory line based on indications of validity encountered for each memory line. New data is written in response to a validation code.
- a valid field for each line can be updated and a new validation code written for a memory when the valid field indicates that a validation code has not yet been written for a memory line.
- the memory validation manager processes data read from a first memory line while either reading or writing to another memory line to minimize the latency of the process of scrubbing memory lines.
- FIG. 1 depicts an illustrative computing device 100 in accordance with embodiments of the disclosure.
- FIG. 2 is a block diagram illustrating a computing system including a memory verification manager in accordance with embodiments of the disclosure.
- FIG. 3 is a block diagram illustrating logical memory banks that are arranged in a physical memory bank in accordance with embodiments of the disclosure.
- FIG. 4 is a block diagram illustrating a logical memory bank in accordance with embodiments of the present disclosure.
- FIG. 5 is a timing diagram illustrating overlapping virtual memory accesses in accordance with embodiments of the present disclosure.
- FIG. 6 is a block diagram illustrating a memory validation system in accordance with embodiments of the present disclosure.
- FIG. 7 is a process diagram illustrating automatic error detection and correction scheme in accordance with embodiments of the present disclosure.
- FIG. 1 depicts an illustrative computing device 100 in accordance with embodiments of the disclosure.
- the computing device 100 is, or is incorporated into, a mobile communication device 129 (such as a mobile phone or a personal digital assistant such as a BLACKBERRY® device), a personal computer, automotive electronics, or any other type of electronic system.
- a mobile communication device 129 such as a mobile phone or a personal digital assistant such as a BLACKBERRY® device
- a personal computer such as a personal computer, automotive electronics, or any other type of electronic system.
- the computing device 100 comprises a megacell or a system-on-chip (SoC) which includes control logic such as a CPU 112 (Central Processing Unit), a storage 114 (e.g., random access memory (RAM)) and tester 110 .
- the CPU 112 can be, for example, a CISC-type (Complex Instruction Set Computer) CPU, RISC-type CPU (Reduced Instruction Set Computer), or a digital signal processor (DSP).
- the storage 114 (which can be memory such as SRAM (static RAM), flash memory, or disk storage) stores one or more software applications 130 (e.g., embedded applications) that, when executed by the CPU 112 , perform any suitable function associated with the computing device 100 .
- software applications 130 e.g., embedded applications
- the tester 110 comprises logic that supports testing and debugging of the computing device 100 executing the software application 130 .
- the tester 110 can be used to emulate a defective or unavailable component(s) of the computing device 100 to allow verification of how the component(s) operate, were it actually present on the computing device 100 , would perform in various situations (e.g., how the component(s) would interact with the software application 130 ).
- the software application 130 can be debugged in an environment which resembles post-production operation.
- the CPU 112 typically comprises memory and logic which store information frequently accessed from the storage 114 .
- Various subsystems (such as the CPU 112 and/or the storage 114 ) of the computing device 100 include one or more memory control systems 116 , which are used to control certain memory operations during the execution of the software application 130 .
- Memory control system 116 employs static random access memories (SRAMs) that are formed using deep sub-micron technologies. Because of the relatively small amount of charge that is used to store a memory state in such technologies, an incident alpha particle (or other high energy particle) can induce a change in the amount of charge stored, and thus cause a “soft error.” Soft errors are increasingly encountered as the technologies used to form the SRAMs use ever smaller feature sizes. Various schemes such as error detection and correction (EDC) codes are used to detect, and to variously correct, the soft errors that increasingly occur.
- EDC error detection and correction
- a redundant encoding scheme (such as a Hamming code) is used to validate the data that is to be stored in the SRAM.
- extra bits are arranged and stored to provide redundancy for the data stored in SRAM.
- the redundancy information is analyzed to determine whether any bits (in the data or validation code) that were stored have been (e.g., unintentionally) modified.
- the amount of redundancy incorporated in an EDC scheme determines the number of errors that can be detected (and the number of errors that can be corrected) in a line of memory. For example, a two-bit detection/one-bit correction scheme allows a single-bit error to be detected and corrected. However, when a double-bit error occurs, then the change in the two bits can be detected as an error, but the correct value for the bits cannot be determined from the stored redundant encoded information (which causes a memory fault). If more than two bits are changed by a soft-error, then the validity output of the SRAM is questionable (e.g., an error may or not be detected, much less corrected).
- a memory verification manager 240 (discussed below with reference to FIG. 2 ) is a portion of the memory control system 116 that is used to implement the disclosed techniques.
- FIG. 2 is a block diagram illustrating a computing system including a memory verification manager in accordance with embodiments of the disclosure.
- Computing device 100 is illustrated as an SoC 200 that includes one or more DSP cores 210 , L2 SRAM/Caches 220 , and shared memory 230 .
- SoC 200 includes one or more DSP cores 210 , L2 SRAM/Caches 220 , and shared memory 230 .
- the illustrated elements of the computing system 200 are formed using a common substrate, the elements can also be implemented in separate substrates, circuit boards, and packages (including the shared memory 230 ).
- Each DSP core 210 optionally includes a prefetch unit 222 for prefetching data for, for example, a level-one data cache such as L1 SRAM/Cache 212 and/or a level-two cache such as SRAM/Cache 220 .
- Each DSP core 210 has a local memory such as L2 SRAM/Cache 220 to provide relatively quick access to read and write memory.
- each DSP core 210 is coupled to a shared memory 230 , which usually provides slower (and typically less expensive) memory accesses than SRAM/Cache 220 .
- the shared memory 230 stores program and data information that can be shared between each DSP core 210 .
- each DSP core 210 is associated with a local memory arbiter 224 for reordering memory commands in accordance with a set of reordering rules.
- memory requests from differing streams from different processors are each arbitrated in accordance with each local level before the memory requests before sending the memory requests to a central memory arbiter 234 .
- the central memory arbiter 234 is arranged to control memory accesses for a shared memory (such as physical memory 236 ), where the memory access are generated by differing “cores” (e.g., processors) that do not share a common (local) memory arbiter 224 .
- the central memory arbiter is arranged to cancel (e.g., squash) pending, speculative prefetches on an as-needed (or as-desired) basis in accordance with policies for determining processor priority (e.g., vis-à-vis other processors and direct memory access devices).
- Physical memory 236 typically is arranged as banks of memory, such as physical memory banks 238 .
- Memory verification manager 240 is normally given a highest priority access to the physical memory 236 by the central memory arbiter 234 because of the importance of correcting and validating the data stored in memory. Memory verification manager 240 is arranged to “scrub” portions of memory periodically to validate validation codes (such as EDC codes and memory line valid bits) for a corresponding memory line. The memory range of scrubbing and the rate of iterations are stored in programmable registers and/or selected in response to a metric of system performance.
- a metric of system performance is determined in accordance with operating metrics such as error rate detection, the rate of non-correctable errors encountered, the percentage of set (e.g., valid) data valid bits (discussed below) for memory lines in a specified memory line, operating voltage, operating temperature, various operating modes, and the like.
- operating metrics such as error rate detection, the rate of non-correctable errors encountered, the percentage of set (e.g., valid) data valid bits (discussed below) for memory lines in a specified memory line, operating voltage, operating temperature, various operating modes, and the like.
- memory verification manager 240 polls a range of memory on a periodic basis.
- the length of the period is selected to help ensure that the number of errors accumulated in a memory line between scrubs does not exceed a threshold where the errors in the memory line can no longer be corrected.
- a performance metric measuring the number of soft errors encountered in a range of memory (e.g., either the entire memory range or a smaller portion of the memory range) over a period of time is used to determine an error rate for estimating a period of time over which the memory lines are scrubbed at a rate that helps ensure that the number of accumulated memory errors for a memory line does not exceed the correctability threshold.
- each memory line has a corresponding valid bit that is used to indicate that the EDC code is prima facie incorrect (e.g., as a result of no correct code being initially stored for the corresponding memory line)
- memory verification manager 240 polls a range of memory on a period basis to (re-) activate the EDC scheme for the corresponding memory line.
- a valid bit that corresponds to a memory is used to indicate when an EDC code has not been written for the data stored in a memory.
- a write of data to a sub-portion of a memory line (that is less than the width of the data portion that is protected by the EDC code) can be relatively quickly written (by not having to wait for the processing required for generating and updating the EDC code).
- This technique avoids always having to perform a read-modify-write cycle that is used to update the EDC code, which takes a longer period of time to execute.
- the longer update period can substantially slow the execution of an algorithm (for example) that clusters writes in sub-portions of a memory line (because the entire data portion of the memory line is read in order to generate the corresponding EDC code for the entire line).
- FIG. 3 is a block diagram illustrating logical memory banks that arranged in a physical memory bank in accordance with embodiments of the disclosure.
- Physical memory bank 236 includes one or more logical memory banks 302 arranged therein.
- An example logical memory bank 302 is discussed below with respect to FIG. 4 .
- FIG. 4 is a block diagram illustrating a logical memory bank in accordance with embodiments of the present disclosure.
- Logical memory bank 302 includes two or more virtual memory banks 402 .
- overlapping memory accesses to the virtual memory banks 402 are scheduled such that each virtual memory bank appears to have a response time only one clock cycle.
- Each virtual memory a 402 is selected by applying a virtual memory (VM) select signal 404 to a control input of multiplexer 406 .
- the VM select signal alternates between selecting between the outputs of two virtual memory banks 402 , respectively.
- the output of multiplexer 406 is provided to, for example, a memory requestor for components of the memory verification manager 240 . The timing of the overlapping virtual memory accesses is discussed below with reference to FIG. 5 .
- FIG. 5 is a timing diagram illustrating an atomic read-modify-write cycle for validating validation codes in accordance with embodiments of the present disclosure.
- a block of exclusive accesses is reserved for a memory validation manager to exclusively access a logical memory bank.
- the block of exclusive accesses allows for data to be read from one or more memory lines, validating the validation codes for each memory line (including generating new validation codes), and writing the new validation codes without interference from other memory requestors disturbing the memory line being validated.
- a periodic clock for accessing memory is illustrated as a sequence of clock cycles (CLK CYC) 502 along a horizontal axis denoting the progression of time.
- CLK CYC clock cycles
- the first eight clock cycles are used for reading data from four memory lines (as shown by reading period 504 ).
- the next eight clock cycles are used for writing validation codes to the four memory lines (as shown by writing period 506 ).
- a first virtual memory read (for LOGIC RD 1 ( 520 )) access is overlapped with a second virtual memory read (for LOGIC RD 2 ( 522 )).
- the overlapped virtual memory reads are physically overlapped in time, but virtually appear as logic memory read one (LOGIC RD 1 ) 520 , logic memory read two (LOGIC RD 2 ) 522 , logic memory read three (LOGIC RD 3 ) 524 , and logic memory read four (LOGIC RD 4 ) 526 .
- a first virtual memory write (for LOGIC WRT 1 ( 528 )) access is overlapped with the second virtual memory write (for LOGIC WRT 2 ( 530 )).
- the overlapped virtual memory writes are physically overlapped in time, but virtually appear as logic memory write one (LOGIC WRT 1 ) 528 , logic memory write two (LOGIC WRT 2 ) 530 , logic memory write three (LOGIC WRT 3 ) 532 , and logic memory write four (LOGIC WRT 4 ) 534 .
- the reading period 504 and the writing period 506 form an atomic read-modify-write cycle 536 during which exclusive access is granted to the memory verification controller 240 .
- the length of the atomic read-modify-write cycle 536 greatly effects system performance because of the large number of memory lines to be verified in a typical memory system.
- the “modify” period 538 of the atomic read-modify-write cycle 536 is executed between corresponding portions of the read period 504 and the write period 506 .
- a memory line from the first logical bank is read (during LOGIC RD 1 520 ), the memory line is validated and a new validation code is generated during generate validation codes one (GEN VAL CODES 1 ) 540 , and the new validation code is written (during LOGIC WRT 1 528 ) to the validation portion of the memory line of the first logical memory bank.
- a memory line from the second logical bank is read (during LOGIC RD 2 522 ), the memory line is validated and a new validation code is generated during generate validation codes two (GEN VAL CODES 2 ) 542 , and the new validation code is written (during LOGIC WRT 2 530 ) to the validation portion of the memory line of the second logical memory bank.
- a memory line from the third logical bank is read (during LOGIC RD 3 524 ), the memory line is validated and a new validation code is generated during generate validation codes three (GEN VAL CODES 3 ) 544 , and the new validation code is written (during LOGIC WRT 3 530 ) to the validation portion of the memory line of the third logical memory bank.
- a memory line from the fourth logical bank is read (during LOGIC RD 4 526 ), the memory line is validated and a new validation code is generated during generate validation codes four (GEN VAL CODES 4 ) 544 , and the new validation code is written (during LOGIC WRT 4 532 ) to the validation portion of the memory line of the fourth logical memory bank.
- More or less (as few as two) logical memory banks can be used in accordance with processing requirements and the size of the physical (and/or logical) memory banks to be validated.
- a LOGIC RD 1 operation for example, reading a memory line from a first logical memory
- a LOGIC RD 2 operation for example, generating a new validation code for the memory line from the first logical memory bank
- a GEN VAL CODES 1 operation (for example, generating a new validation code for the memory line from the first logical memory bank) is concurrently executed with the LOGIC RD 2 operation.
- the LOGIC RD 2 operation is followed by a LOGIC WRT 1 operation (where, for example, the new generation code is written to a memory line in the first logical memory).
- a GEN VAL CODES 2 operation is executed concurrently with the LOGIC WRT 1 operation.
- the LOGIC WRT 1 operation is followed by a LOGIC WRT 2 operation.
- FIG. 6 is a block diagram illustrating a memory validation system in accordance with embodiments of the present disclosure.
- Memory validation system 600 includes a logical memory bank 302 and memory verification manager 240 . As discussed above, at least two logical memory banks 302 are used in performing atomic read-modify-write cycle for validating validation codes using operations on a first logical memory that at least partly overlap operations being executed for a second logical memory.
- Logical memory bank 302 includes an array 612 of memory line data 614 , each of which is associated with a valid bit (or field) 616 and validation code 618 .
- the memory line data 614 of the memory lines typically have a predetermined data length such as 256 bits long.
- Valid bit 616 indicates whether the validation code 618 have been generated for the data written to the memory line data 614 .
- Validation code 618 is typically selected to be sufficient to correct a plurality of memory errors in the corresponding memory line data 614 .
- Memory verification manager 240 includes control logic 602 that is arranged to control parameters of scrubbing logical memory banks.
- the control logic 602 is arranged to control the scrubbing of a plurality of logical memory banks; in various embodiments, portions of the control logic 602 are replicated and individually assigned to a respective logical memory bank.
- Control logic 602 includes a memory scrub start 604 register, a memory scrub distance 606 register, a memory scrub loop count 608 register, and a memory scrubbed delay count 610 register.
- Memory scrub start 604 register that is arranged to specify a starting address of a range of memory lines to be scrubbed.
- Memory scrub distance 606 register is arranged to specify the distance (or ending address) of the range of memory lines to be scrubbed.
- Memory scrub loop count 608 register is arranged to specify the number of times that the scrubbing operation is to be performed upon the defined range of memory lines.
- the memory scrub delay count 610 register is arranged to specify an interval between each scrubbing loop.
- the central memory arbiter 234 assigns priority for accesses to the memory verification manager 240 .
- memory verification manager 240 receives an indication in response to a read verification of a memory line data 614 of whether the corresponding validation code is valid.
- the indication can be generated in response to a determination that the memory line data 614 is not in agreement with the corresponding validation code 618 (e.g., when soft errors occur).
- Validation code comparator 630 is arranged to compare the new validation code with validation code 618 and to provide the indication (such as by providing an error status at node 632 ) when an error is encountered in the comparison.
- the error status indicates, for example, that no error has been encountered, that an error has been encountered and is correctable, or that an error has been encountered and is not correctable.
- the corresponding valid bit 616 is set (if necessary) to indicate the data associated with the selected memory line is valid (or when a new validation code has been written to the corresponding validation code 618 as described immediately below).
- the memory verification manager 240 also receives an indication that is be generated in response to a determination that the corresponding valid 616 bit indicates that validation code 618 has not been generated for the memory line data 614 .
- the control logic 602 asserts signal “load code” 622 .
- validation code generator 620 writes the newly generated validation code to the corresponding (of the selected memory line) validation code 618 .
- the corresponding valid bit 616 is set to indicate the new validation code associated with the selected memory line is valid (because a new validation code has been written to the corresponding validation code 618 ).
- FIG. 7 is a process diagram illustrating automatic error detection and correction scheme in accordance with embodiments of the present disclosure.
- Process 700 is entered at node 702 and proceeds to function 704 .
- a block of exclusive accesses is reserved for a memory validation manager to exclusively access a logical memory bank.
- the block of exclusive accesses allows for data to be read from one or more memory lines, validating the validation codes for each memory line (including generating new validation codes), and writing the new validation codes without interference from other memory requestors disturbing the memory line being validated.
- a first read of a first memory line is performed (for example, reading a memory line from a first logical memory and the corresponding valid bit and validation code) and is followed by second read of a second memory line. While processing a read or write operation for a memory line other than the first memory line, a new validation code for the read memory line is generated and compared with the validation line stored for the memory line. Likewise the data status bit for the first memory line is concurrently evaluated with the second memory line read operation.
- function 708 if the validation code (and the data valid bit) of the first memory line is valid, the process flow continues at function 712 ; if the validation code (or the data valid bit) is invalid, the process flow continues at function 710 .
- the second read operation is followed by a first write operation.
- the first write operation writes the newly generated validation code to the corresponding validation code of the first memory line in the event of a valid bit indicating that a validation code has not yet been written.
- the newly regenerated data from the corresponding validation code is written to the data portion of the first memory line if the stored data is in conflict with the stored validation code.
- a new validation code for the read second memory line is generated and compared with the validation line stored for the second memory line.
- the data status bit for the second memory line is evaluated during the time reserved for the writing of the newly generated validation code for the first memory line.
- function 712 if the validation code (and the data valid bit) is valid, the process flow continues at function 716 ; if the validation code (or the data valid bit) is invalid, the process flow continues at function 714 .
- the first write operation (if any) is followed by a second write operation.
- the second write operation writes the newly generated validation code to the corresponding validation code of the second memory line in the event of a valid bit indicating that a validation code has not yet been written.
- the newly regenerated data from the corresponding validation code is written to the data portion of the second memory line if the stored data is in conflict with the stored validation code.
- looping values are adjusted (such as by incrementing or decrementing) and compared to determine the range of a loop for validating the validation codes and valid bits, the number of loops to be performed and a delay period after the end of one loop and the beginning of the next loop. If the extent, the number of loops, and the delay between loops have been completed, the process proceeds to node 790 , when the process ends; otherwise the process returns to function 704 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/237,917 US8732551B2 (en) | 2010-09-21 | 2011-09-20 | Memory controller with automatic error detection and correction |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38493210P | 2010-09-21 | 2010-09-21 | |
US38736710P | 2010-09-28 | 2010-09-28 | |
US13/237,917 US8732551B2 (en) | 2010-09-21 | 2011-09-20 | Memory controller with automatic error detection and correction |
Publications (2)
Publication Number | Publication Date |
---|---|
US20120072796A1 US20120072796A1 (en) | 2012-03-22 |
US8732551B2 true US8732551B2 (en) | 2014-05-20 |
Family
ID=45818772
Family Applications (12)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/212,980 Active 2033-08-02 US9009414B2 (en) | 2010-09-21 | 2011-08-18 | Prefetch address hit prediction to reduce memory access latency |
US13/213,024 Active 2033-06-20 US8977819B2 (en) | 2010-09-21 | 2011-08-18 | Prefetch stream filter with FIFO allocation and stream direction prediction |
US13/218,394 Active 2032-02-19 US8706969B2 (en) | 2010-09-21 | 2011-08-25 | Variable line size prefetcher for multiple memory requestors |
US13/218,414 Active 2031-11-05 US8601221B2 (en) | 2010-09-21 | 2011-08-25 | Speculation-aware memory controller arbiter |
US13/223,237 Active 2032-01-09 US8788759B2 (en) | 2010-09-21 | 2011-08-31 | Double-buffered data storage to reduce prefetch generation stalls |
US13/233,443 Active 2032-06-05 US9898415B2 (en) | 2010-09-21 | 2011-09-15 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US13/233,028 Active 2034-03-28 US9239798B2 (en) | 2010-09-21 | 2011-09-15 | Prefetcher with arbitrary downstream prefetch cancelation |
US13/237,917 Active 2032-07-31 US8732551B2 (en) | 2010-09-21 | 2011-09-20 | Memory controller with automatic error detection and correction |
US15/899,138 Active US10394718B2 (en) | 2010-09-21 | 2018-02-19 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US16/552,418 Active 2032-02-09 US11074190B2 (en) | 2010-09-21 | 2019-08-27 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US17/384,864 Active 2032-06-03 US11789872B2 (en) | 2010-09-21 | 2021-07-26 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US18/463,101 Active US12321282B2 (en) | 2010-09-21 | 2023-09-07 | Slot/sub-slot prefetch architecture for multiple memory requestors |
Family Applications Before (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/212,980 Active 2033-08-02 US9009414B2 (en) | 2010-09-21 | 2011-08-18 | Prefetch address hit prediction to reduce memory access latency |
US13/213,024 Active 2033-06-20 US8977819B2 (en) | 2010-09-21 | 2011-08-18 | Prefetch stream filter with FIFO allocation and stream direction prediction |
US13/218,394 Active 2032-02-19 US8706969B2 (en) | 2010-09-21 | 2011-08-25 | Variable line size prefetcher for multiple memory requestors |
US13/218,414 Active 2031-11-05 US8601221B2 (en) | 2010-09-21 | 2011-08-25 | Speculation-aware memory controller arbiter |
US13/223,237 Active 2032-01-09 US8788759B2 (en) | 2010-09-21 | 2011-08-31 | Double-buffered data storage to reduce prefetch generation stalls |
US13/233,443 Active 2032-06-05 US9898415B2 (en) | 2010-09-21 | 2011-09-15 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US13/233,028 Active 2034-03-28 US9239798B2 (en) | 2010-09-21 | 2011-09-15 | Prefetcher with arbitrary downstream prefetch cancelation |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/899,138 Active US10394718B2 (en) | 2010-09-21 | 2018-02-19 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US16/552,418 Active 2032-02-09 US11074190B2 (en) | 2010-09-21 | 2019-08-27 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US17/384,864 Active 2032-06-03 US11789872B2 (en) | 2010-09-21 | 2021-07-26 | Slot/sub-slot prefetch architecture for multiple memory requestors |
US18/463,101 Active US12321282B2 (en) | 2010-09-21 | 2023-09-07 | Slot/sub-slot prefetch architecture for multiple memory requestors |
Country Status (1)
Country | Link |
---|---|
US (12) | US9009414B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10176043B2 (en) | 2014-07-01 | 2019-01-08 | Hewlett Packard Enterprise Development Lp | Memory controller |
US20190073284A1 (en) * | 2017-09-05 | 2019-03-07 | International Business Machines Corporation | Validation of data written via two different bus interfaces to a dual server based storage controller |
Families Citing this family (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9009414B2 (en) | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US8966185B2 (en) * | 2012-06-14 | 2015-02-24 | International Business Machines Corporation | Cache memory prefetching |
US9086957B2 (en) | 2012-08-02 | 2015-07-21 | International Business Machines Corporation | Requesting a memory space by a memory controller |
US9201796B2 (en) * | 2012-09-27 | 2015-12-01 | Apple Inc. | System cache with speculative read engine |
US9626294B2 (en) * | 2012-10-03 | 2017-04-18 | International Business Machines Corporation | Performance-driven cache line memory access |
US9129071B2 (en) * | 2012-10-24 | 2015-09-08 | Texas Instruments Incorporated | Coherence controller slot architecture allowing zero latency write commit |
US20140122796A1 (en) * | 2012-10-31 | 2014-05-01 | Netapp, Inc. | Systems and methods for tracking a sequential data stream stored in non-sequential storage blocks |
US9087561B2 (en) * | 2012-12-21 | 2015-07-21 | Advanced Micro Devices, Inc. | Hybrid cache |
US9519586B2 (en) | 2013-01-21 | 2016-12-13 | Qualcomm Incorporated | Methods and apparatus to reduce cache pollution caused by data prefetching |
US9223714B2 (en) * | 2013-03-15 | 2015-12-29 | Intel Corporation | Instruction boundary prediction for variable length instruction set |
US10203958B2 (en) * | 2013-07-15 | 2019-02-12 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
US10963254B2 (en) | 2013-07-15 | 2021-03-30 | Texas Instruments Incorporated | Mechanism to queue multiple streams to run on streaming engine |
US10229043B2 (en) | 2013-07-23 | 2019-03-12 | Intel Business Machines Corporation | Requesting memory spaces and resources using a memory controller |
US9632947B2 (en) * | 2013-08-19 | 2017-04-25 | Intel Corporation | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early |
US9619382B2 (en) * | 2013-08-19 | 2017-04-11 | Intel Corporation | Systems and methods for read request bypassing a last level cache that interfaces with an external fabric |
US9665468B2 (en) | 2013-08-19 | 2017-05-30 | Intel Corporation | Systems and methods for invasive debug of a processor without processor execution of instructions |
US9361227B2 (en) | 2013-08-30 | 2016-06-07 | Soft Machines, Inc. | Systems and methods for faster read after write forwarding using a virtual address |
US9542323B2 (en) | 2014-03-28 | 2017-01-10 | Samsung Electronics Co., Ltd. | Address re-ordering mechanism for efficient pre-fetch training in an out-of-order processor |
US9513805B2 (en) * | 2014-04-15 | 2016-12-06 | International Business Machines Corporation | Page table including data fetch width indicator |
US9817762B2 (en) | 2014-05-20 | 2017-11-14 | Oracle International Corporation | Facilitating efficient prefetching for scatter/gather operations |
US9710381B2 (en) | 2014-06-18 | 2017-07-18 | International Business Machines Corporation | Method and apparatus for cache memory data processing |
WO2015199734A1 (en) | 2014-06-27 | 2015-12-30 | Hewlett-Packard Development Company, Lp | Buffer-based update of state data |
US20150378920A1 (en) * | 2014-06-30 | 2015-12-31 | John G. Gierach | Graphics data pre-fetcher for last level caches |
US9979796B1 (en) | 2014-07-16 | 2018-05-22 | Tensera Networks Ltd. | Efficient pre-fetching notifications |
US11095743B2 (en) | 2014-07-16 | 2021-08-17 | Tensera Networks Ltd. | Optimized content-delivery network (CDN) for the wireless last mile |
KR102260177B1 (en) | 2014-07-16 | 2021-06-04 | 텐세라 네트워크스 리미티드 | Efficient content delivery over wireless networks using guaranteed prefetching at selected times-of-day |
US10506027B2 (en) | 2014-08-27 | 2019-12-10 | Tensera Networks Ltd. | Selecting a content delivery network |
US9928183B2 (en) | 2014-09-26 | 2018-03-27 | Ampere Computing Llc | Priority framework for a computing device |
WO2016063161A1 (en) * | 2014-10-19 | 2016-04-28 | Tensera Networks Ltd. | Partial prefetching of indexed content |
KR102346629B1 (en) * | 2014-12-05 | 2022-01-03 | 삼성전자주식회사 | Method and apparatus for controlling access for memory |
CN107408059B (en) * | 2015-03-26 | 2021-09-28 | 英特尔公司 | Cross-level prefetching for shared multilevel banks |
US9723470B1 (en) | 2015-04-30 | 2017-08-01 | Tensera Networks Ltd. | Selective enabling of data services to roaming wireless terminals |
US10037280B2 (en) * | 2015-05-29 | 2018-07-31 | Qualcomm Incorporated | Speculative pre-fetch of translations for a memory management unit (MMU) |
US9760494B2 (en) | 2015-06-24 | 2017-09-12 | International Business Machines Corporation | Hybrid tracking of transaction read and write sets |
US9858189B2 (en) * | 2015-06-24 | 2018-01-02 | International Business Machines Corporation | Hybrid tracking of transaction read and write sets |
US20170024145A1 (en) * | 2015-07-23 | 2017-01-26 | Qualcomm Incorporated | Address translation and data pre-fetch in a cache memory system |
CN108139967B (en) * | 2015-10-09 | 2021-07-20 | 华为技术有限公司 | Convert data stream to array |
CN105512054B (en) * | 2015-12-09 | 2018-11-09 | 上海兆芯集成电路有限公司 | Host interface controller and storage device control method |
CN105608020B (en) * | 2015-12-09 | 2019-02-26 | 上海兆芯集成电路有限公司 | Host interface controller and storage device control method |
US9535696B1 (en) | 2016-01-04 | 2017-01-03 | International Business Machines Corporation | Instruction to cancel outstanding cache prefetches |
US10613763B2 (en) * | 2016-04-21 | 2020-04-07 | Adesto Technologies Corporation | Memory device having multiple read buffers for read latency reduction |
US11567885B2 (en) * | 2016-05-12 | 2023-01-31 | Lg Electronics Inc. | System and method for optimizing DRAM bus switching using LLC |
US11526521B2 (en) * | 2016-07-15 | 2022-12-13 | Microsoft Technology Licensing, Llc | Prefetching using dynamic user model to reduce latency |
US10684969B2 (en) * | 2016-07-15 | 2020-06-16 | Advanced Micro Devices, Inc. | Command arbitration for high speed memory interfaces |
US10037246B1 (en) * | 2016-07-25 | 2018-07-31 | Cadence Design Systems, Inc. | System and method for memory control having self writeback of data stored in memory with correctable error |
US9886385B1 (en) | 2016-08-25 | 2018-02-06 | Apple Inc. | Content-directed prefetch circuit with quality filtering |
US10101964B2 (en) * | 2016-09-20 | 2018-10-16 | Advanced Micro Devices, Inc. | Ring buffer including a preload buffer |
JP2018106227A (en) * | 2016-12-22 | 2018-07-05 | ルネサスエレクトロニクス株式会社 | Cache memory device and semiconductor device |
US10359577B2 (en) | 2017-06-28 | 2019-07-23 | Corning Research & Development Corporation | Multiports and optical connectors with rotationally discrete locking and keying features |
US11668890B2 (en) | 2017-06-28 | 2023-06-06 | Corning Research & Development Corporation | Multiports and other devices having optical connection ports with securing features and methods of making the same |
US11300746B2 (en) | 2017-06-28 | 2022-04-12 | Corning Research & Development Corporation | Fiber optic port module inserts, assemblies and methods of making the same |
US12271040B2 (en) | 2017-06-28 | 2025-04-08 | Corning Research & Development Corporation | Fiber optic extender ports, assemblies and methods of making the same |
PL3646077T3 (en) | 2017-06-28 | 2023-05-08 | Corning Optical Communications LLC | MULTI CONNECTORS HAVING CONNECTION PORTS MOLDED IN A SHIELD AND ASSOCIATED SAFETY COMPONENTS |
US12299446B2 (en) * | 2017-06-28 | 2025-05-13 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
US11187859B2 (en) | 2017-06-28 | 2021-11-30 | Corning Research & Development Corporation | Fiber optic connectors and methods of making the same |
US10417127B2 (en) | 2017-07-13 | 2019-09-17 | International Business Machines Corporation | Selective downstream cache processing for data access |
KR102293069B1 (en) | 2017-09-08 | 2021-08-27 | 삼성전자주식회사 | Storage device including nonvolatile memory device and controller, controller and operating method of nonvolatile memory device |
US10678692B2 (en) * | 2017-09-19 | 2020-06-09 | Intel Corporation | Method and system for coordinating baseline and secondary prefetchers |
US10929296B2 (en) * | 2017-10-12 | 2021-02-23 | Texas Instruments Incorporated | Zero latency prefetching in caches |
US10210090B1 (en) * | 2017-10-12 | 2019-02-19 | Texas Instruments Incorporated | Servicing CPU demand requests with inflight prefetchs |
KR102799075B1 (en) | 2019-02-27 | 2025-04-23 | 에스케이하이닉스 주식회사 | Controller, memory sysytem and operating method thereof |
KR102456173B1 (en) * | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
US12118241B2 (en) | 2017-10-27 | 2024-10-15 | SK Hynix Inc. | Memory controller, memory system, and operating method thereof |
US10613983B2 (en) | 2018-03-20 | 2020-04-07 | Advanced Micro Devices, Inc. | Prefetcher based speculative dynamic random-access memory read request technique |
GB2572954B (en) | 2018-04-16 | 2020-12-30 | Advanced Risc Mach Ltd | An apparatus and method for prefetching data items |
CN110609796B (en) * | 2018-06-15 | 2023-07-21 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for prefetching in a storage system |
JP7018833B2 (en) * | 2018-06-22 | 2022-02-14 | ルネサスエレクトロニクス株式会社 | Semiconductor device |
JP7131156B2 (en) * | 2018-07-19 | 2022-09-06 | 富士通株式会社 | Arithmetic processing device and method of controlling arithmetic processing device |
US10642742B2 (en) * | 2018-08-14 | 2020-05-05 | Texas Instruments Incorporated | Prefetch management in a hierarchical cache system |
PT3903136T (en) | 2018-12-28 | 2024-12-05 | Corning Res & Dev Corp | Multiport assemblies including mounting features or dust plugs |
US11314686B2 (en) * | 2019-02-26 | 2022-04-26 | Nxp Usa, Inc. | Hardware for supporting time triggered load anticipation in the context of a real time OS |
US11080199B2 (en) * | 2019-03-07 | 2021-08-03 | International Business Machines Corporation | Determining logical address of an oldest memory access request |
US11416334B2 (en) * | 2019-05-24 | 2022-08-16 | Texas Instmments Incorporated | Handling non-correctable errors |
MX2021014427A (en) | 2019-05-31 | 2022-03-04 | Corning Res & Dev Corp | MULTIPORTS AND OTHER DEVICES THAT HAVE OPTICAL CONNECTION PORTS WITH SLIDING ACTUATORS AND METHODS FOR MAKING SAME. |
US10970808B2 (en) * | 2019-06-24 | 2021-04-06 | Intel Corporation | Shared local memory read merge and multicast return |
US11194728B2 (en) | 2019-07-29 | 2021-12-07 | Micron Technology, Inc. | Memory-aware pre-fetching and cache bypassing systems and methods |
US11294133B2 (en) | 2019-07-31 | 2022-04-05 | Corning Research & Development Corporation | Fiber optic networks using multiports and cable assemblies with cable-to-connector orientation |
US11487073B2 (en) | 2019-09-30 | 2022-11-01 | Corning Research & Development Corporation | Cable input devices having an integrated locking feature and assemblies using the cable input devices |
EP3805827B1 (en) | 2019-10-07 | 2025-07-30 | Corning Research & Development Corporation | Fiber optic terminals and fiber optic networks having variable ratio couplers |
US11650388B2 (en) | 2019-11-14 | 2023-05-16 | Corning Research & Development Corporation | Fiber optic networks having a self-supporting optical terminal and methods of installing the optical terminal |
US11536921B2 (en) | 2020-02-11 | 2022-12-27 | Corning Research & Development Corporation | Fiber optic terminals having one or more loopback assemblies |
US11604320B2 (en) | 2020-09-30 | 2023-03-14 | Corning Research & Development Corporation | Connector assemblies for telecommunication enclosures |
MX2023004967A (en) | 2020-10-30 | 2023-07-05 | Corning Res & Dev Corp | Fiber optic connectors having a weatherproofing collar. |
US11686913B2 (en) | 2020-11-30 | 2023-06-27 | Corning Research & Development Corporation | Fiber optic cable assemblies and connector assemblies having a crimp ring and crimp body and methods of fabricating the same |
US11927810B2 (en) | 2020-11-30 | 2024-03-12 | Corning Research & Development Corporation | Fiber optic adapter assemblies including a conversion housing and a release member |
US11880076B2 (en) | 2020-11-30 | 2024-01-23 | Corning Research & Development Corporation | Fiber optic adapter assemblies including a conversion housing and a release housing |
US11994722B2 (en) | 2020-11-30 | 2024-05-28 | Corning Research & Development Corporation | Fiber optic adapter assemblies including an adapter housing and a locking housing |
US11947167B2 (en) | 2021-05-26 | 2024-04-02 | Corning Research & Development Corporation | Fiber optic terminals and tools and methods for adjusting a split ratio of a fiber optic terminal |
US11593001B1 (en) * | 2021-08-02 | 2023-02-28 | Nvidia Corporation | Using per memory bank load caches for reducing power use in a system on a chip |
CN113704143B (en) * | 2021-08-27 | 2025-03-18 | 湖南国科微电子股份有限公司 | Data reading method, device and computer equipment |
US11947461B2 (en) | 2022-01-10 | 2024-04-02 | International Business Machines Corporation | Prefetch unit filter for microprocessor |
US11994994B2 (en) * | 2022-04-25 | 2024-05-28 | Analog Devices International Unlimited Company | Smart prefetch buffer and queue management |
US12346261B2 (en) * | 2022-11-01 | 2025-07-01 | SanDisk Technologies, Inc. | Write buffer linking for easy cache reads |
CN116010310B (en) * | 2023-03-21 | 2023-07-04 | 广东华芯微特集成电路有限公司 | SDR-SDRAM controller and control method thereof |
US12367145B2 (en) | 2023-09-29 | 2025-07-22 | Advanced Micro Devices, Inc. | Remote acceleration for data dependent address calculation |
US20250245159A1 (en) * | 2024-01-31 | 2025-07-31 | Qualcomm Incorporated | Reducing dc power consumption using dynamic memory prefetching for processing engines |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715428A (en) * | 1994-02-28 | 1998-02-03 | Intel Corporation | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system |
US6513095B1 (en) * | 1999-05-31 | 2003-01-28 | Sharp Kabushiki Kaisha | File system with assured integrity incorporating semiconductor memory device |
US20040268332A1 (en) * | 2003-04-23 | 2004-12-30 | Masato Mitsumori | Memory access control method and processing system with memory access check function |
US20050212656A1 (en) * | 1994-11-15 | 2005-09-29 | Micro Enhanced Technology, Inc. | Electronic access control device |
US7165206B2 (en) * | 2002-09-26 | 2007-01-16 | Silicon7 Inc. | SRAM-compatible memory for correcting invalid output data using parity and method of driving the same |
US20070074048A1 (en) * | 2005-09-27 | 2007-03-29 | Rudelic John C | Logging changes to blocks in a non-volatile memory |
US7240277B2 (en) * | 2003-09-26 | 2007-07-03 | Texas Instruments Incorporated | Memory error detection reporting |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2881049B2 (en) * | 1991-07-30 | 1999-04-12 | 株式会社日立製作所 | Prefetch buffer |
JPH07506921A (en) * | 1992-03-06 | 1995-07-27 | ランバス・インコーポレーテッド | Cache prefetching to minimize main memory access time and cache memory size in computer systems |
JP3644959B2 (en) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | Microprocessor system |
US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
US5680564A (en) * | 1995-05-26 | 1997-10-21 | National Semiconductor Corporation | Pipelined processor with two tier prefetch buffer structure and method with bypass |
US5784076A (en) * | 1995-06-07 | 1998-07-21 | International Business Machines Corporation | Video processor implementing various data translations using control registers |
US5790813A (en) * | 1996-01-05 | 1998-08-04 | Unisys Corporation | Pre-arbitration system allowing look-around and bypass for significant operations |
US5926841A (en) * | 1996-03-13 | 1999-07-20 | Advanced Micro Devices, Inc. | Segment descriptor cache for a processor |
US5854911A (en) * | 1996-07-01 | 1998-12-29 | Sun Microsystems, Inc. | Data buffer prefetch apparatus and method |
US5958040A (en) * | 1997-05-28 | 1999-09-28 | Digital Equipment Corporation | Adaptive stream buffers |
US6304962B1 (en) * | 1999-06-02 | 2001-10-16 | International Business Machines Corporation | Method and apparatus for prefetching superblocks in a computer processing system |
US6438656B1 (en) * | 1999-07-30 | 2002-08-20 | International Business Machines Corporation | Method and system for cancelling speculative cache prefetch requests |
US6449698B1 (en) * | 1999-08-26 | 2002-09-10 | International Business Machines Corporation | Method and system for bypass prefetch data path |
US6317811B1 (en) * | 1999-08-26 | 2001-11-13 | International Business Machines Corporation | Method and system for reissuing load requests in a multi-stream prefetch design |
US6470427B1 (en) * | 1999-11-09 | 2002-10-22 | International Business Machines Corporation | Programmable agent and method for managing prefetch queues |
US6654837B1 (en) * | 1999-12-28 | 2003-11-25 | Intel Corporation | Dynamic priority external transaction system |
US6490647B1 (en) * | 2000-04-04 | 2002-12-03 | International Business Machines Corporation | Flushing stale data from a PCI bus system read prefetch buffer |
US6833920B2 (en) * | 2000-07-11 | 2004-12-21 | Maven Technologies Llc | Apparatus and method for imaging |
US6643739B2 (en) * | 2001-03-13 | 2003-11-04 | Koninklijke Philips Electronics N.V. | Cache way prediction based on instruction base register |
US6938126B2 (en) * | 2002-04-12 | 2005-08-30 | Intel Corporation | Cache-line reuse-buffer |
US7370169B2 (en) * | 2003-06-30 | 2008-05-06 | Raytheon Company | Efficient memory controller |
US7039747B1 (en) * | 2003-12-18 | 2006-05-02 | Cisco Technology, Inc. | Selective smart discards with prefetchable and controlled-prefetchable address space |
US20050253858A1 (en) * | 2004-05-14 | 2005-11-17 | Takahide Ohkami | Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams |
US7427990B2 (en) * | 2006-01-30 | 2008-09-23 | Ati Technologies, Inc. | Data replacement method and circuit for motion prediction cache |
US7493451B2 (en) * | 2006-06-15 | 2009-02-17 | P.A. Semi, Inc. | Prefetch unit |
US7707396B2 (en) * | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
US7603526B2 (en) * | 2007-01-29 | 2009-10-13 | International Business Machines Corporation | Systems and methods for providing dynamic memory pre-fetch |
US7702888B2 (en) * | 2007-02-28 | 2010-04-20 | Globalfoundries Inc. | Branch predictor directed prefetch |
US20080235461A1 (en) * | 2007-03-22 | 2008-09-25 | Sin Tan | Technique and apparatus for combining partial write transactions |
US7877558B2 (en) * | 2007-08-13 | 2011-01-25 | Advanced Micro Devices, Inc. | Memory controller prioritization scheme |
TWI382426B (en) * | 2007-10-04 | 2013-01-11 | Realtek Semiconductor Corp | System and method for predicting cache access |
US8683134B2 (en) * | 2008-01-18 | 2014-03-25 | Texas Instruments Incorporated | Upgrade of low priority prefetch requests to high priority real requests in shared memory controller |
US8161263B2 (en) * | 2008-02-01 | 2012-04-17 | International Business Machines Corporation | Techniques for indirect data prefetching |
US7865705B2 (en) * | 2008-02-01 | 2011-01-04 | International Business Machines Corporation | Branch target address cache including address type tag bit |
JP2009230374A (en) * | 2008-03-21 | 2009-10-08 | Fujitsu Ltd | Information processor, program, and instruction sequence generation method |
US7958317B2 (en) * | 2008-08-04 | 2011-06-07 | International Business Machines Corporation | Cache directed sequential prefetch |
US8291172B2 (en) * | 2010-04-27 | 2012-10-16 | Via Technologies, Inc. | Multi-modal data prefetcher |
US8473689B2 (en) * | 2010-07-27 | 2013-06-25 | Texas Instruments Incorporated | Predictive sequential prefetching for data caching |
US9009414B2 (en) * | 2010-09-21 | 2015-04-14 | Texas Instruments Incorporated | Prefetch address hit prediction to reduce memory access latency |
-
2011
- 2011-08-18 US US13/212,980 patent/US9009414B2/en active Active
- 2011-08-18 US US13/213,024 patent/US8977819B2/en active Active
- 2011-08-25 US US13/218,394 patent/US8706969B2/en active Active
- 2011-08-25 US US13/218,414 patent/US8601221B2/en active Active
- 2011-08-31 US US13/223,237 patent/US8788759B2/en active Active
- 2011-09-15 US US13/233,443 patent/US9898415B2/en active Active
- 2011-09-15 US US13/233,028 patent/US9239798B2/en active Active
- 2011-09-20 US US13/237,917 patent/US8732551B2/en active Active
-
2018
- 2018-02-19 US US15/899,138 patent/US10394718B2/en active Active
-
2019
- 2019-08-27 US US16/552,418 patent/US11074190B2/en active Active
-
2021
- 2021-07-26 US US17/384,864 patent/US11789872B2/en active Active
-
2023
- 2023-09-07 US US18/463,101 patent/US12321282B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5715428A (en) * | 1994-02-28 | 1998-02-03 | Intel Corporation | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system |
US20050212656A1 (en) * | 1994-11-15 | 2005-09-29 | Micro Enhanced Technology, Inc. | Electronic access control device |
US6513095B1 (en) * | 1999-05-31 | 2003-01-28 | Sharp Kabushiki Kaisha | File system with assured integrity incorporating semiconductor memory device |
US7165206B2 (en) * | 2002-09-26 | 2007-01-16 | Silicon7 Inc. | SRAM-compatible memory for correcting invalid output data using parity and method of driving the same |
US20040268332A1 (en) * | 2003-04-23 | 2004-12-30 | Masato Mitsumori | Memory access control method and processing system with memory access check function |
US7240277B2 (en) * | 2003-09-26 | 2007-07-03 | Texas Instruments Incorporated | Memory error detection reporting |
US20070074048A1 (en) * | 2005-09-27 | 2007-03-29 | Rudelic John C | Logging changes to blocks in a non-volatile memory |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10176043B2 (en) | 2014-07-01 | 2019-01-08 | Hewlett Packard Enterprise Development Lp | Memory controller |
US20190073284A1 (en) * | 2017-09-05 | 2019-03-07 | International Business Machines Corporation | Validation of data written via two different bus interfaces to a dual server based storage controller |
US10572359B2 (en) * | 2017-09-05 | 2020-02-25 | International Business Machines Corporation | Validation of data written via two different bus interfaces to a dual server based storage controller |
US11379329B2 (en) * | 2017-09-05 | 2022-07-05 | International Business Machines Corporation | Validation of data written via two different bus interfaces to a dual server based storage controller |
Also Published As
Publication number | Publication date |
---|---|
US20120072667A1 (en) | 2012-03-22 |
US20120072672A1 (en) | 2012-03-22 |
US20120072673A1 (en) | 2012-03-22 |
US20180239710A1 (en) | 2018-08-23 |
US9009414B2 (en) | 2015-04-14 |
US20120072796A1 (en) | 2012-03-22 |
US9898415B2 (en) | 2018-02-20 |
US20120072668A1 (en) | 2012-03-22 |
US8788759B2 (en) | 2014-07-22 |
US20210349827A1 (en) | 2021-11-11 |
US20120072674A1 (en) | 2012-03-22 |
US20120072671A1 (en) | 2012-03-22 |
US9239798B2 (en) | 2016-01-19 |
US20120072702A1 (en) | 2012-03-22 |
US20230418759A1 (en) | 2023-12-28 |
US8706969B2 (en) | 2014-04-22 |
US11074190B2 (en) | 2021-07-27 |
US10394718B2 (en) | 2019-08-27 |
US8977819B2 (en) | 2015-03-10 |
US20200057723A1 (en) | 2020-02-20 |
US11789872B2 (en) | 2023-10-17 |
US12321282B2 (en) | 2025-06-03 |
US8601221B2 (en) | 2013-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8732551B2 (en) | Memory controller with automatic error detection and correction | |
US10042700B2 (en) | Integral post package repair | |
CN110352407B (en) | Error Correction Code Memory | |
US9189326B2 (en) | Detecting and correcting hard errors in a memory array | |
US8756363B2 (en) | Efficient storage of memory version data | |
US8572441B2 (en) | Maximizing encodings of version control bits for memory corruption detection | |
US8051337B2 (en) | System and method for fast cache-hit detection | |
US8468416B2 (en) | Combined group ECC protection and subgroup parity protection | |
US8751736B2 (en) | Instructions to set and read memory version information | |
KR101322064B1 (en) | Simulated error causing apparatus | |
US20080010566A1 (en) | Disabling portions of memory with non-deterministic errors | |
US8806294B2 (en) | Error detection within a memory | |
US20140173379A1 (en) | Dirty cacheline duplication | |
US9471410B2 (en) | Transient condition management utilizing a posted error detection processing protocol | |
US20140143611A1 (en) | Selective posted data error detection based on request type | |
KR102208835B1 (en) | Method and apparatus for reverse memory sparing | |
US10042701B2 (en) | Storing address of spare in failed memory location | |
US20140040680A1 (en) | Memory control device and control method | |
US20150370573A1 (en) | Speculative finish of instruction execution in a processor core | |
US8990643B2 (en) | Selective posted data error detection based on history | |
US12321232B2 (en) | Memory controller which implements partial writes with error signaling | |
US20140136910A1 (en) | Data communication apparatus and control method | |
EP3553662A1 (en) | Intergral post package repair | |
CN119597533A (en) | System for reading, writing and verifying data | |
JP2010140132A (en) | Memory system and memory controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: TEXAS INSTRUMENTS INCORPORATED, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHIRCA, KAI;ANDERSON, TIMOTHY D.;MENON, AMITABH;SIGNING DATES FROM 20110915 TO 20110916;REEL/FRAME:027041/0058 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |