US6125467A - Method and apparatus for partial word read through ECC block - Google Patents

Method and apparatus for partial word read through ECC block Download PDF

Info

Publication number
US6125467A
US6125467A US09/063,962 US6396298A US6125467A US 6125467 A US6125467 A US 6125467A US 6396298 A US6396298 A US 6396298A US 6125467 A US6125467 A US 6125467A
Authority
US
United States
Prior art keywords
sub
rom
sbe
trick
mbe
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.)
Expired - Fee Related
Application number
US09/063,962
Inventor
Robert Christopher Dixon
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.)
International Business Machines Corp
Holley Performance Products Inc
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to US09/063,962 priority Critical patent/US6125467A/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DIXON, ROBERT C.
Assigned to HOLLEY PERFORMANCE PRODUCTS reassignment HOLLEY PERFORMANCE PRODUCTS ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COLTEC INDUSTRIES, INC.
Application granted granted Critical
Publication of US6125467A publication Critical patent/US6125467A/en
Assigned to U.S. BANK NATIONAL ASSOCIATION reassignment U.S. BANK NATIONAL ASSOCIATION SECURITY AGREEMENT Assignors: BIGGS MANUFACTURING, INC., EARL'S SUPPLY COMPANY, EFASTPARTS.COM, INC., HOLLEY PERFORMANCE PRODUCTS INC., HOLLEY PERFORMANCE SYSTEMS, INC., HOOKER INDUSTRIES, INC., KHPP HOLDINGS, INC., LUNATI CAMS, INC., NITROUS OXIDE SYSTEMS, INC., SO-CAL SPEED SHOPS, INC., WEIAND AUTOMOTIVE INDUSTRIES, INC.
Assigned to NITROUS OXIDE SYSTEMS, INC., HOLLEY PERFORMANCE PRODUCTS INC., HOLLEY PERFORMANCE PRODUCTS HOLDINGS, INC., HOLLEY PERFORMANCE SYSTEMS, INC., WEIAND AUTOMOTIVE INDUSTRIES, INC. reassignment NITROUS OXIDE SYSTEMS, INC. RELEASE OF SECURITY INTEREST RECORDED AT REEL 17105 FRAME 0764 Assignors: U.S. BANK NATIONAL ASSOCIATION
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1052Bypassing or disabling error detection or correction

Definitions

  • the present invention generally relates to computer systems, particularly to a method of transmitting information between different components in a computer system, such as between a system memory device and a central processing unit, and more specifically to a method and apparatus for reading a partial word through an error-correcting code (ECC) circuit.
  • ECC error-correcting code
  • a typical structure for a conventional computer system includes one or more processing units connected to a system memory device (random access memory or RAM) and to various peripheral, or input/output (I/O), devices such as a display monitor, a keyboard, a graphical pointer (mouse), and a permanent storage device (hard disk).
  • the system memory device is used by a processing unit in carrying out program instructions, and stores those instructions as well as data values that are used or generated by the programs.
  • a read-only memory device ROM is used to provide firmware whose primary purpose is to seek out and load an operating system from one of the peripherals (usually the permanent storage device) whenever the computer is first turned on.
  • a processing unit communicates with the other components by various means, including one or more interconnects (buses), or direct memory-access channels.
  • a computer system may have many additional components, such as serial and parallel ports for connection to, e.g., printers, and network adapters.
  • Other components might further be used in conjunction with the foregoing; for example, a display adapter might be used to control a video display monitor, a memory controller can be used to access the system memory, etc.
  • System 10 includes a central processing unit (CPU) 12, firmware or read-only memory (ROM) 14, and a dynamic random access memory (DRAM) 16 which are all connected to a system bus 18.
  • CPU 12, ROM 14 and DRAM 16 are also coupled to a peripheral component interconnect (PCI) local bus 20 using a PCI host bridge 22.
  • PCI host bridge 22 provides a low latency path through which processor 12 may access PCI devices mapped anywhere within bus memory or I/O address spaces.
  • PCI host bridge 22 also provides a high bandwidth path to allow the PCI devices to access DRAM 16.
  • Attached to PCI local bus 20 are a local area network (LAN) adapter 24, a small computer system interface (SCSI) adapter 26, an expansion bus bridge 28, an audio adapter 30, and a graphics adapter 32.
  • Lan adapter 24 is used to connected computer system 10 to an external computer network 34.
  • SCSI adapter 26 is used to control high-speed SCSI disk drive 36.
  • Expansion bus bridge 28 is used to couple an ISA (Industry Standard Architecture) expansion bus 38 to PCI local bus 20.
  • ISA bus 38 As shown, several user input devices are connected to ISA bus 38, including a keyboard 40, a microphone 42, and a graphical pointing device (mouse) 44. Other devices may also be attached to ISA bus 38, such as a CD-ROM drive 46.
  • Audio adapter 30 controls audio output to a speaker 48
  • graphics adapter 32 controls visual output to a display monitor 50.
  • Parity checks and error-correction codes are commonly used to ensure that data is properly transferred between system components.
  • a magnetic disk permanent memory device
  • ECC's are also used with temporary memory devices, e.g., DRAM or cache memory devices, and the ECC for files stored in DRAM can be analyzed by a memory controller which provides an interface between the processor and the DRAM array.
  • a memory cell fails during reading of a particular memory word (due to, e.g., stray radiation, electrostatic discharge, or a defective cell), then the failure can at least be detected so that further action can be taken. ECC's can further be used to reconstruct the proper data stream.
  • Some error correction codes can only be used to detect single-bit errors; if two or more bits in a particular memory word are invalid, then the ECC might not be able to determine what the proper data stream should actually be.
  • Other ECC's are more sophisticated and allow detection or correction of double errors, and some ECC's further allow the memory word to be broken up into clusters of bits, or "symbols," which can then be analyzed for errors in even more detail.
  • ECC circuits One limitation of ECC circuits relates to the fact that they are always designed to receive and analyze a memory word of a fixed width.
  • DRAM 16 might provide a 64-bit data word (eight 8-bit bytes), with an additional 8-bit check word used for error correction (i.e., a total of 72 bits). Therefore, if an ECC circuit were implemented in an interconnection between the DRAM and some other component (such as CPU 12), then the ECC circuit would necessarily be constructed to specifically conform to the 72-bit format.
  • the presence of an ECC circuit in this communications path prevents other devices from using the path if they do not utilize the same word format. In other words, a problem exists where a memory word having a width less than the fixed width is to be read through the ECC block.
  • ROM 14 transmits single-byte data (8 bits). If ROM data were to pass through an ECC block adapted for DRAM 16, then the check word and the remaining data bits expected by the ECC block would be undefined. In this situation, one of three results can occur within the ECC block (depending upon the ROM value): no error is detected; a single-bit error is detected; or a multiple-bit error is detected. The case of "no error detected” is possible where the undefined signals input into the ECC block, along with the ROM byte, exactly match a "no error" pattern. This result will leave the ROM data bits unaffected, and therefore does not present a problem.
  • the undefined signals do not match the "no error” pattern, but the data is passed through unmodified anyway (including the ROM data), since the ECC block cannot determine which bits require correction, so this case also does not present a problem.
  • the error-correction code presumes that the memory word has a single-bit error which can be corrected and, as a consequence, the ECC circuitry will modify the imagined 64-bit memory word, by complementing one of these 64 bits. If the modified bit is within the ROM data bits, a ROM corruption will appear to the reading device (e.g., CPU 12), which could lead to catastrophic failure of the system.
  • ECC error-correction code
  • a method of communicating between components in a computer system generally comprising the steps of providing a communications path between a first component of the computer system (such as a random-access memory (RAM) device) and a second component of the computer system (such as a central processing unit (CPU)), wherein the first component transmits data to the second component using a first granularity, and wherein the communications path includes an error-correction code (ECC) circuit adapted to detect and correct parity errors transmitted from the first component to the second component, interconnecting a third component to the communications path (such as a read-only memory (ROM) device) such that the third component may transmit data to the second component using a second granularity which is smaller than the first granularity, and merging data from the third component with predefined data to present a merged data word to the ECC circuit, the merged data word having the first granularity.
  • ECC error-correction code
  • the first granularity may be, e.g., 72 bits, while the second granularity is 8 bits.
  • the data is merged by forcing undriven check bits and undriven data bits in the ECC block to a predefined state such that error correction of the merged data word by the ECC circuit results in modification of the predefined data and not in modification of the data from the third component.
  • the undriven check bits and undriven data bits are preferably forced to the predefined state using a plurality of respective pull-up resistors.
  • FIG. 1 is block diagram of a conventional computer system
  • FIG. 2 is a block diagram of one embodiment of a communications path within a computer system, constructed in accordance with the present invention, which provides an error-correction code block usable by one device having a first granularity (a ROM device), and another device having a second granularity (a RAM device).
  • a ROM device a device having a first granularity
  • a RAM device a device having a second granularity
  • Communications path 100 comprises a system or CPU bus 104, an ECC block 106, and a memory bus which in the depicted embodiment includes a data bus 108 and a check word bus 110.
  • Check word bus 110 is connected to a memory device 112 having a large word size (granularity), such as a 72-bit DRAM device wherein 64 bits comprise the data word and eight bits comprise the check word.
  • Data bus 108 is also connected to DRAM 112, and is further connected to an 8-bit ROM device 114 (containing the firmware used to start up system 102).
  • CPU bus 104 is connected to a CPU 116, a memory controller 118, and one or more other devices such as those shown in FIG. 1. While the various devices shown in FIG. 1 can be utilized in conjunction with a computer system constructed in accordance with the present invention, those skilled in the art will appreciate that the present invention may be applied to computer systems having novel components, or having novel arrangements of conventional components. Therefore, the reference to FIG. 1 should not be construed in a limiting sense.
  • ECC block 106 is designed to provide single-bit error correction and multi-bit error detection for the 72-bit memory words transmitted from DRAM 112. It is convenient, however, to allow ROM 114 to additionally use memory data bus 108 to provide an interconnection with CPU 116.
  • the present invention overcomes the problem in prior art systems, of using a single ECC block with devices of differing granularities, by forcing the undriven check word and the undriven data bits (when ROM 114 owns the memory bus) to a predefined state wherein any single-bit errors based on the ECC block's "no error" pattern will result only in modifications to the imagined 64-bit data word that do not complement any of the eight bits in the ROM byte.
  • the undriven check word and the undriven data bits are forced to the predefined state using bias (pull-up) resistors 120 and 122.
  • the ROM bits 0 . . . 7 supply data to the inputs Data00 . . . Data07.
  • the data bits Data08 . . . Data63 are set to 1 for all ROM reads by resistors 120.
  • the check bits Check0 . . . Check7 are similarly set to 1 for all ROM reads by resistors 122.
  • the table included in the Appendix indicates the results for all 256 possible ROM data patterns.
  • All 256 of these patterns pass the ROM data through the ECC block without modification, although some do result in modification of other data that is of no concern, since memory controller 118 examines only the first eight bits when constructing a 64-bit ROM word for CPU 116. In other words, memory controller 118 collects these first eight bits from a series of eight ROM reads, and then passes those 64 bits as a single ROM word to CPU 116.
  • ROM 114 drives bus 108 for the ROM access time, but the data is only sampled after the access time. Therefore, pull-up resistors that result in an RC time constant less that the ROM access time ( ⁇ 150 ns) may be used.
  • This approach is relatively low cost, particularly when compared to the alternatives of special bypass circuitry around the ECC block, or the expense of a 72-bit wide ROM.
  • An alternative approach contemplated by the present invention is to use a bank of 1's provided by a buffer which is turned on when ROM 114 is selected, but that embodiment is more expensive. Either approach places significantly less load on the CPU bus as compared to the alternatives.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

A method of passing transmissions through an error-correction code (ECC) block in a communications path of a computer system. The communications path interconnects a first component of the computer system (such as a random-access memory (RAM) device) and a second component of the computer system (such as a central processing unit (CPU)) using a first granularity, and a third component (such as a read-only memory (ROM) device) is further connected to the communications path such that the third component may transmit data to the second component using a second granularity which is smaller than the first granularity. The data from the third component passes through the ECC block by merging data from the third component with predefined data to present a merged data word to the ECC circuit, wherein the merged data word has the first granularity. The first granularity may be, e.g., 72 bits, while the second granularity is 8 bits. The undriven check bits and undriven data bits are preferably forced to the predefined state using a plurality of respective pull-up resistors.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention generally relates to computer systems, particularly to a method of transmitting information between different components in a computer system, such as between a system memory device and a central processing unit, and more specifically to a method and apparatus for reading a partial word through an error-correcting code (ECC) circuit.
2. Description of Related Art
A typical structure for a conventional computer system includes one or more processing units connected to a system memory device (random access memory or RAM) and to various peripheral, or input/output (I/O), devices such as a display monitor, a keyboard, a graphical pointer (mouse), and a permanent storage device (hard disk). The system memory device is used by a processing unit in carrying out program instructions, and stores those instructions as well as data values that are used or generated by the programs. A read-only memory device (ROM) is used to provide firmware whose primary purpose is to seek out and load an operating system from one of the peripherals (usually the permanent storage device) whenever the computer is first turned on. A processing unit communicates with the other components by various means, including one or more interconnects (buses), or direct memory-access channels. A computer system may have many additional components, such as serial and parallel ports for connection to, e.g., printers, and network adapters. Other components might further be used in conjunction with the foregoing; for example, a display adapter might be used to control a video display monitor, a memory controller can be used to access the system memory, etc.
An exemplary computer system 10 is illustrated in FIG. 1. System 10 includes a central processing unit (CPU) 12, firmware or read-only memory (ROM) 14, and a dynamic random access memory (DRAM) 16 which are all connected to a system bus 18. CPU 12, ROM 14 and DRAM 16 are also coupled to a peripheral component interconnect (PCI) local bus 20 using a PCI host bridge 22. PCI host bridge 22 provides a low latency path through which processor 12 may access PCI devices mapped anywhere within bus memory or I/O address spaces. PCI host bridge 22 also provides a high bandwidth path to allow the PCI devices to access DRAM 16.
Attached to PCI local bus 20 are a local area network (LAN) adapter 24, a small computer system interface (SCSI) adapter 26, an expansion bus bridge 28, an audio adapter 30, and a graphics adapter 32. Lan adapter 24 is used to connected computer system 10 to an external computer network 34. SCSI adapter 26 is used to control high-speed SCSI disk drive 36. Expansion bus bridge 28 is used to couple an ISA (Industry Standard Architecture) expansion bus 38 to PCI local bus 20. As shown, several user input devices are connected to ISA bus 38, including a keyboard 40, a microphone 42, and a graphical pointing device (mouse) 44. Other devices may also be attached to ISA bus 38, such as a CD-ROM drive 46. Audio adapter 30 controls audio output to a speaker 48, and graphics adapter 32 controls visual output to a display monitor 50.
Parity checks and error-correction codes (ECC's) are commonly used to ensure that data is properly transferred between system components. For example, a magnetic disk (permanent memory device) typically records not only information that comprises data to be retrieved for processing (the memory word), but also records an error-correction code for each file, which allows the processor, or a controller, to determine whether the data retrieved is valid. ECC's are also used with temporary memory devices, e.g., DRAM or cache memory devices, and the ECC for files stored in DRAM can be analyzed by a memory controller which provides an interface between the processor and the DRAM array. If a memory cell fails during reading of a particular memory word (due to, e.g., stray radiation, electrostatic discharge, or a defective cell), then the failure can at least be detected so that further action can be taken. ECC's can further be used to reconstruct the proper data stream.
Some error correction codes can only be used to detect single-bit errors; if two or more bits in a particular memory word are invalid, then the ECC might not be able to determine what the proper data stream should actually be. Other ECC's are more sophisticated and allow detection or correction of double errors, and some ECC's further allow the memory word to be broken up into clusters of bits, or "symbols," which can then be analyzed for errors in even more detail.
One limitation of ECC circuits relates to the fact that they are always designed to receive and analyze a memory word of a fixed width. In a computer system such as that shown in FIG. 1, DRAM 16 might provide a 64-bit data word (eight 8-bit bytes), with an additional 8-bit check word used for error correction (i.e., a total of 72 bits). Therefore, if an ECC circuit were implemented in an interconnection between the DRAM and some other component (such as CPU 12), then the ECC circuit would necessarily be constructed to specifically conform to the 72-bit format. The presence of an ECC circuit in this communications path, however, prevents other devices from using the path if they do not utilize the same word format. In other words, a problem exists where a memory word having a width less than the fixed width is to be read through the ECC block.
For example, in the system of FIG. 1, ROM 14 transmits single-byte data (8 bits). If ROM data were to pass through an ECC block adapted for DRAM 16, then the check word and the remaining data bits expected by the ECC block would be undefined. In this situation, one of three results can occur within the ECC block (depending upon the ROM value): no error is detected; a single-bit error is detected; or a multiple-bit error is detected. The case of "no error detected" is possible where the undefined signals input into the ECC block, along with the ROM byte, exactly match a "no error" pattern. This result will leave the ROM data bits unaffected, and therefore does not present a problem. In the case of "multiple-bit error detected," the undefined signals do not match the "no error" pattern, but the data is passed through unmodified anyway (including the ROM data), since the ECC block cannot determine which bits require correction, so this case also does not present a problem. However, in the case of "single-bit error detected," while the undefined signals do not match the "no error" pattern, the error-correction code presumes that the memory word has a single-bit error which can be corrected and, as a consequence, the ECC circuitry will modify the imagined 64-bit memory word, by complementing one of these 64 bits. If the modified bit is within the ROM data bits, a ROM corruption will appear to the reading device (e.g., CPU 12), which could lead to catastrophic failure of the system.
One solution to the foregoing problem is to simply make all devices which use a common ECC block operate at the same granularity, that is, with the same memory word size. This solution is not, however, always feasible. For example, considering again the use of an ECC block which passes data from both a DRAM device and a ROM device, this approach would require the use of a 72-bit ROM, which is quite expensive compared to 8-bit ROMs. In light of the foregoing, it would be desirable to devise a method of passing different sizes of memory words through a common ECC block. It would be further advantageous if the method could be implemented at a relatively low cost and with less load on the CPU bus.
SUMMARY OF THE INVENTION
It is therefore one object of the present invention to provide an improved computer system having error-correction and detection in transmission of data between system components.
It is another object of the present invention to provide such a computer system wherein error-correction code (ECC) circuitry can be established in a single communications path used by devices having different memory word sizes, such as an 8-bit ROM and a 72-bit RAM.
It is yet another object of the present invention to provide a simple and inexpensive method of constructing such a compliant ECC block.
The foregoing objects are achieved in a method of communicating between components in a computer system, generally comprising the steps of providing a communications path between a first component of the computer system (such as a random-access memory (RAM) device) and a second component of the computer system (such as a central processing unit (CPU)), wherein the first component transmits data to the second component using a first granularity, and wherein the communications path includes an error-correction code (ECC) circuit adapted to detect and correct parity errors transmitted from the first component to the second component, interconnecting a third component to the communications path (such as a read-only memory (ROM) device) such that the third component may transmit data to the second component using a second granularity which is smaller than the first granularity, and merging data from the third component with predefined data to present a merged data word to the ECC circuit, the merged data word having the first granularity. The first granularity may be, e.g., 72 bits, while the second granularity is 8 bits. The data is merged by forcing undriven check bits and undriven data bits in the ECC block to a predefined state such that error correction of the merged data word by the ECC circuit results in modification of the predefined data and not in modification of the data from the third component. The undriven check bits and undriven data bits are preferably forced to the predefined state using a plurality of respective pull-up resistors.
The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.
BRIEF DESCRIPTION OF THE DRAWINGS
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
FIG. 1 is block diagram of a conventional computer system; and
FIG. 2 is a block diagram of one embodiment of a communications path within a computer system, constructed in accordance with the present invention, which provides an error-correction code block usable by one device having a first granularity (a ROM device), and another device having a second granularity (a RAM device).
DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT
With reference now to the figures, and in particular with reference to FIG. 2, there is depicted one embodiment of a communications path 100 within a computer system 102, constructed in accordance with the present invention. Communications path 100 comprises a system or CPU bus 104, an ECC block 106, and a memory bus which in the depicted embodiment includes a data bus 108 and a check word bus 110. Check word bus 110 is connected to a memory device 112 having a large word size (granularity), such as a 72-bit DRAM device wherein 64 bits comprise the data word and eight bits comprise the check word. Data bus 108 is also connected to DRAM 112, and is further connected to an 8-bit ROM device 114 (containing the firmware used to start up system 102).
CPU bus 104 is connected to a CPU 116, a memory controller 118, and one or more other devices such as those shown in FIG. 1. While the various devices shown in FIG. 1 can be utilized in conjunction with a computer system constructed in accordance with the present invention, those skilled in the art will appreciate that the present invention may be applied to computer systems having novel components, or having novel arrangements of conventional components. Therefore, the reference to FIG. 1 should not be construed in a limiting sense.
ECC block 106 is designed to provide single-bit error correction and multi-bit error detection for the 72-bit memory words transmitted from DRAM 112. It is convenient, however, to allow ROM 114 to additionally use memory data bus 108 to provide an interconnection with CPU 116. The present invention overcomes the problem in prior art systems, of using a single ECC block with devices of differing granularities, by forcing the undriven check word and the undriven data bits (when ROM 114 owns the memory bus) to a predefined state wherein any single-bit errors based on the ECC block's "no error" pattern will result only in modifications to the imagined 64-bit data word that do not complement any of the eight bits in the ROM byte.
In a preferred embodiment, the undriven check word and the undriven data bits are forced to the predefined state using bias (pull-up) resistors 120 and 122. The ROM bits 0 . . . 7 supply data to the inputs Data00 . . . Data07. The data bits Data08 . . . Data63 are set to 1 for all ROM reads by resistors 120. The check bits Check0 . . . Check7 are similarly set to 1 for all ROM reads by resistors 122. The table included in the Appendix indicates the results for all 256 possible ROM data patterns. All 256 of these patterns pass the ROM data through the ECC block without modification, although some do result in modification of other data that is of no concern, since memory controller 118 examines only the first eight bits when constructing a 64-bit ROM word for CPU 116. In other words, memory controller 118 collects these first eight bits from a series of eight ROM reads, and then passes those 64 bits as a single ROM word to CPU 116.
It is preferable to select 1's in the static bits using pull-up resistors, since they can supply the necessary high logic level for the relatively long duration of the ROM cycle. ROM 114 drives bus 108 for the ROM access time, but the data is only sampled after the access time. Therefore, pull-up resistors that result in an RC time constant less that the ROM access time (˜150 ns) may be used. This approach is relatively low cost, particularly when compared to the alternatives of special bypass circuitry around the ECC block, or the expense of a 72-bit wide ROM. An alternative approach contemplated by the present invention is to use a bank of 1's provided by a buffer which is turned on when ROM 114 is selected, but that embodiment is more expensive. Either approach places significantly less load on the CPU bus as compared to the alternatives.
Although the invention has been described with reference to specific embodiments, this description is not meant to be construed in a limiting sense. Various modifications of the disclosed embodiments, as well as alternative embodiments of the invention, will become apparent to persons skilled in the art upon reference to the description of the invention. For example, the foregoing embodiment illustrates the application of the invention to an 8-bit ROM and a 64-bit RAM, but the invention can further be adapted to interconnect devices having other granularities. The nature of the ECC block could be more complicated than described, and the communications path might interconnect devices other than memory and the CPU. It is therefore contemplated that such modifications can be made without departing from the spirit or scope of the present invention as defined in the appended claims.
              APPENDIX                                                    
______________________________________                                    
In each of the following cases, the term "trick" refers to the forced     
data                                                                      
(D.sub.8 . . . D.sub.63 and C.sub.0 . . . C.sub.7) merged with the ROM    
data. The term "in" is                                                    
the output of ECC block 106. When "sbe.sub.-- " is low (zero), this       
indicates                                                                 
single-bit error status. When "mbe.sub.-- " is low (zero), this           
indicates                                                                 
multi-bit error status. In each case where sbe.sub.--  = 0, one bit is    
complemented but that bit is not in the ROM data (the rightmost two       
hexadecimal characters).                                                  
______________________________________                                    
trick =ffffffffffffff00 in =ffffffffffffff00                              
                    rom = 00 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff01 in =ffffffffffffff01                              
                    rom = 01 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff02 in =ffffffffffffff02                              
                    rom = 02 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff03 in =ffffffffffffff03                              
                    rom = 03 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff04 in =ffffffffffffff04                              
                    rom = 04 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff05 in =ffffffffffffff05                              
                    rom = 05 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff06 in =ffffffffffffff06                              
                    rom = 06 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff07 in =ffffffffff7fff07                              
                    rom = 07 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff08 in =ffffffffffffff08                              
                    rom = 08 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff09 in =ffffffffffffff09                              
                    rom = 09 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff0a in =ffffffffffffff0a                              
                    rom = 0a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff0b in =ffffffffffbfff0b                              
                    rom = 0b sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff0c in =ffffffffffffff0c                              
                    rom = 0c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff0d in =ffffffffffdfff0d                              
                    rom = 0d sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff0e in =ffffffffffefff0e                              
                    rom = 0e sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff0f in =ffffffffffffff0f                              
                    rom = 0f sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff10 in =ffffffffffffff10                              
                    rom = 10 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff11 in =ffffffffffffff11                              
                    rom = 11 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff12 in =ffffffffffffff12                              
                    rom = 12 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff13 in =ffffffffffffff13                              
                    rom = 13 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff14 in =ffffffffffffff14                              
                    rom = 14 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff15 in =ffffffffffffff15                              
                    rom = 15 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff16 in =fffffffffff7ff16                              
                    rom = 16 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff17 in =ffffffffffffff17                              
                    rom = 17 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff18 in =ffffffffffffff18                              
                    rom = 18 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff19 in =ffffffffffffff19                              
                    rom = 19 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff1a in =fffffffffffbff1a                              
                    rom = 1a sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff1b in =ffffffffffffff1b                              
                    rom = 1b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff1c in =fffffffffffdff1c                              
                    rom = 1c sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff1d in =ffffffffffffff1d                              
                    rom = 1d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff1e in =ffffffffffffff1e                              
                    rom = 1e sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff1f in =fffffffffffeff1f                              
                    rom = 1f sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff20 in =ffffffffffffff20                              
                    rom = 20 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff21 in =ffffffffffffff21                              
                    rom = 21 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff22 in =ffffffffffffff22                              
                    rom = 22 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff23 in =ffffffffffffff23                              
                    rom = 23 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff24 in =ffffffffffffff24                              
                    rom = 24 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff25 in =fffffffffff7ff25                              
                    rom = 25 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff26 in =ffffffffffffff26                              
                    rom = 26 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff27 in =ffffffffffffff27                              
                    rom = 27 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff28 in =ffffffffffffff28                              
                    rom = 28 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff29 in =fffffffffffbff29                              
                    rom = 29 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff2a in =ffffffffffffff2a                              
                    rom = 2a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff2b in =ffffffffffffff2b                              
                    rom = 2b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff2c in =fffffffffffeff2c                              
                    rom = 2c sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff2d in =ffffffffffffff2d                              
                    rom = 2d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff2e in =ffffffffffffff2e                              
                    rom = 2e sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff2f in =fffffffffffdff2f                              
                    rom = 2f sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff30 in =ffffffffffffff30                              
                    rom = 30 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff31 in =ffffffffffffff31                              
                    rom = 31 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff32 in =ffffffffffffff32                              
                    rom = 32 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff33 in =ffffffffffffff33                              
                    rom = 33 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff34 in =ffffffffff7fff34                              
                    rom = 34 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff35 in =ffffffffffffff35                              
                    rom = 35 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff36 in =ffffffffffffff36                              
                    rom = 36 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff37 in =ffffffffffffff37                              
                    rom = 37 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff38 in =ffffffffffbfff38                              
                    rom = 38 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff39 in =ffffffffffffff39                              
                    rom = 39 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff3a in =ffffffffffffff3a                              
                    rom = 3a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff3b in =ffffffffffffff3b                              
                    rom = 3b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff3c in =ffffffffffffff3c                              
                    rom = 3c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff3d in =ffffffffffefff3d                              
                    rom = 3d sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff3e in =ffffffffffdfff3e                              
                    rom = 3e sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff3f in =ffffffffffffff3f                              
                    rom = 3f sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff40 in =ffffffffffffff40                              
                    rom = 40 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff41 in =ffffffffffffff41                              
                    rom = 41 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff42 in =ffffffffffffff42                              
                    rom = 42 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff43 in =fffffffffff7ff43                              
                    rom = 43 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff44 in =ffffffffffffff44                              
                    rom = 44 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff45 in =ffffffffffffff45                              
                    rom = 45 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff46 in =ffffffffffffff46                              
                    rom = 46 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff47 in =ffffffffffffff47                              
                    rom = 47 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff48 in =ffffffffffffff48                              
                    rom = 48 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff49 in =fffffffffffdff49                              
                    rom = 49 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff4a in =fffffffffffeff4a                              
                    rom = 4a sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff4b in =ffffffffffffff4b                              
                    rom = 4b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff4c in =ffffffffffffff4c                              
                    rom = 4c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff4d in =ffffffffffffff4d                              
                    rom = 4d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff4e in =ffffffffffffff4e                              
                    rom = 4e sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff4f in =fffffffffffbff4f                              
                    rom = 4f sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff50 in =ffffffffffffff50                              
                    rom = 50 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff51 in =ffffffffffffff51                              
                    rom = 51 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff52 in =ffffffffff7fff52                              
                    rom = 52 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff53 in =ffffffffffffff53                              
                    rom = 53 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff54 in =ffffffffffffff54                              
                    rom = 54 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff55 in =ffffffffffffff55                              
                    rom = 55 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff56 in =ffffffffffffff56                              
                    rom = 56 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff57 in =ffffffffffffff57                              
                    rom = 57 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff58 in =ffffffffffdfff58                              
                    rom = 58 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff59 in =ffffffffffffff59                              
                    rom = 59 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff5a in =ffffffffffffff5a                              
                    rom = 5a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff5b in =ffffffffffefff5b                              
                    rom = 5b sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff5c in =ffffffffffffff5c                              
                    rom = 5c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff5d in =ffffffffffffff5d                              
                    rom = 5d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff5e in =ffffffffffbfff5e                              
                    rom = 5e sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff5f in =ffffffffffffff5f                              
                    rom = 5f sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff60 in =ffffffffffffff60                              
                    rom = 60 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff61 in =ffffffffff7fff61                              
                    rom = 61 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff62 in =ffffffffffffff62                              
                    rom = 62 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff63 in =ffffffffffffff63                              
                    rom = 63 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff64 in =ffffffffffffff64                              
                    rom = 64 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff65 in =ffffffffffffff65                              
                    rom = 65 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff66 in =ffffffffffffff66                              
                    rom = 66 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff67 in =ffffffffffffff67                              
                    rom = 67 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff68 in =ffffffffffefff68                              
                    rom = 68 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff69 in =ffffffffffffff69                              
                    rom = 69 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff6a in =ffffffffffffff6a                              
                    rom = 6a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff6b in =ffffffffffdfff6b                              
                    rom = 6b sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff6c in =ffffffffffffff6c                              
                    rom = 6c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff6d in =ffffffffffbfff6d                              
                    rom = 6d sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff6e in =ffffffffffffff6e                              
                    rom = 6e sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff6f in =ffffffffffffff6f                              
                    rom = 6f sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff70 in =fffffffffff7ff70                              
                    rom = 70 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff71 in =ffffffffffffff71                              
                    rom = 71 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff72 in =ffffffffffffff72                              
                    rom = 72 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff73 in =ffffffffffffff73                              
                    rom = 73 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff74 in =ffffffffffffff74                              
                    rom = 74 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff75 in =ffffffffffffff75                              
                    rom = 75 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff76 in =ffffffffffffff76                              
                    rom = 76 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff77 in =ffffffffffffff77                              
                    rom = 77 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff78 in =ffffffffffffff7e                              
                    rom = 78 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff79 in =fffffffffffeff79                              
                    rom = 79 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff7a in =fffffffffffdff7a                              
                    rom = 7a sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff7b in =ffffffffffffff7b                              
                    rom = 7b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff7c in =fffffffffffbff7c                              
                    rom = 7c sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff7d in =ffffffffffffff7d                              
                    rom = 7d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff7e in =ffffffffffffff7e                              
                    rom = 7e sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff7f in =ffffffffffffff7f                              
                    rom = 7f sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff80 in =ffffffffffffff80                              
                    rom = 80 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff81 in =ffffffffffffff81                              
                    rom = 81 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff82 in =ffffffffffffff82                              
                    rom = 82 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff83 in =fffffffffffbff83                              
                    rom = 83 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff84 in =ffffffffffffff84                              
                    rom = 84 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff85 in =fffffffffffdff85                              
                    rom = 85 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff86 in =fffffffffffeff86                              
                    rom = 86 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff87 in =ffffffffffffff87                              
                    rom = 87 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff88 in =ffffffffffffff88                              
                    rom = 88 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff89 in =ffffffffffffff89                              
                    rom = 89 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff8a in =ffffffffffffff8a                              
                    rom = 8a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff8b in =ffffffffffffff8b                              
                    rom = 8b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff8c in =ffffffffffffff8c                              
                    rom = 8c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff8d in =ffffffffffffff8d                              
                    rom = 8d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff8e in =ffffffffffffff8e                              
                    rom = 8e sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff8f in =fffffffffff7ff8f                              
                    rom = 8f sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff90 in =ffffffffffffff90                              
                    rom = 90 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff91 in =ffffffffffffff91                              
                    rom = 91 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff92 in =ffffffffffbfff92                              
                    rom = 92 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff93 in =ffffffffffffff93                              
                    rom = 93 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff94 in =ffffffffffdfff94                              
                    rom = 94 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff95 in =ffffffffffffff95                              
                    rom = 95 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff96 in =ffffffffffffff96                              
                    rom = 96 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff97 in =ffffffffffefff97                              
                    rom = 97 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff98 in =ffffffffffffff98                              
                    rom = 98 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff99 in =ffffffffffffff99                              
                    rom = 99 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff9a in =ffffffffffffff9a                              
                    rom = 9a sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff9b in =ffffffffffffff9b                              
                    rom = 9b sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff9c in =ffffffffffffff9c                              
                    rom = 9c sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff9d in =ffffffffffffff9d                              
                    rom = 9d sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffff9e in =ffffffffff7fff9e                              
                    rom = 9e sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffff9f in =ffffffffffffff9f                              
                    rom = 9f sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa0 in =ffffffffffffffa0                              
                    rom = 00 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa1 in =ffffffffffbfffa1                              
                    rom = a1 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffa2 in =ffffffffffffffa2                              
                    rom = a2 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa3 in =ffffffffffffffa3                              
                    rom = a3 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa4 in =ffffffffffefffa4                              
                    rom = a4 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffa5 in =ffffffffffffffa5                              
                    rom = a5 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa6 in =ffffffffffffffa6                              
                    rom = a6 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa7 in =ffffffffffdfffa7                              
                    rom = a7 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffa8 in =ffffffffffffffa8                              
                    rom = a8 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffa9 in =ffffffffffffffa9                              
                    rom = a9 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffaa in =ffffffffffffffaa                              
                    rom = aa sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffab in =ffffffffffffffab                              
                    rom = ab sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffac in =ffffffffffffffac                              
                    rom = ac sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffad in =ffffffffff7fffad                              
                    rom = ad sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffae in =ffffffffffffffae                              
                    rom = ae sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffaf in =ffffffffffffffaf                              
                    rom = af sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb1 in =ffffffffffffffb1                              
                    rom = b1 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb2 in =ffffffffffffffb2                              
                    rom = b2 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb3 in =ffffffffffffffb3                              
                    rom = b3 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb4 in =ffffffffffffffb4                              
                    rom = b4 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb5 in =fffffffffffeffb5                              
                    rom = b5 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffb6 in =fffffffffffdffb6                              
                    rom = b6 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffb7 in =ffffffffffffffb7                              
                    rom = b7 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb8 in =ffffffffffffffb8                              
                    rom = b8 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffb9 in =ffffffffffffffb9                              
                    rom = b9 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffba in =ffffffffffffffba                              
                    rom = ba sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffbb in =ffffffffffffffbb                              
                    rom = bb sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffbc in =fffffffffff7ffbc                              
                    rom = bc sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffbd in =ffffffffffffffbd                              
                    rom = bd sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffbe in =ffffffffffffffbe                              
                    rom = be sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffbf in =ffffffffffffffbf                              
                    rom = bf sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc0 in =ffffffffffffffc0                              
                    rom = c0 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc1 in =ffffffffffdfffc1                              
                    rom = c1 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffc2 in =ffffffffffefffc2                              
                    rom = c2 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffc3 in =ffffffffffffffc3                              
                    rom = c3 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc4 in =ffffffffffffffc4                              
                    rom = c4 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc5 in =ffffffffffffffc5                              
                    rom = c5 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc6 in =ffffffffffffffc6                              
                    rom = c6 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc7 in =ffffffffffbfffc7                              
                    rom = c7 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffc8 in =ffffffffffffffc8                              
                    rom = c8 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffc9 in =ffffffffffffffc9                              
                    rom = c9 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffca in =ffffffffffffffca                              
                    rom = ca sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffcb in =ffffffffff7fffcb                              
                    rom = cb sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffcc in =ffffffffffffffcc                              
                    rom = cc sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffcd in =ffffffffffffffcd                              
                    rom = cd sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffce in =ffffffffffffffce                              
                    rom = ce sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffcf in =ffffffffffffffcf                              
                    rom = cf sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd0 in =fffffffffffdffd0                              
                    rom = d0 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffd1 in =ffffffffffffffd1                              
                    rom = d1 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd2 in =ffffffffffffffd2                              
                    rom = d2 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd3 in =fffffffffffeffd3                              
                    rom = d3 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffd4 in =ffffffffffffffd4                              
                    rom = d4 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd5 in =ffffffffffffffd5                              
                    rom = d5 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd6 in =fffffffffffbffd6                              
                    rom = d6 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffd7 in =ffffffffffffffd7                              
                    rom = d7 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd8 in =ffffffffffffffd8                              
                    rom = d8 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffd9 in =ffffffffffffffd9                              
                    rom = d9 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffda in =fffffffffff7ffda                              
                    rom = da sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffdb in =ffffffffffffffdb                              
                    rom = db sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffdc in =ffffffffffffffdc                              
                    rom = dc sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffdd in =ffffffffffffffdd                              
                    rom = dd sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffde in =ffffffffffffffde                              
                    rom = de sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffdf in =ffffffffffffffdf                              
                    rom = df sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe0 in =fffffffffffeffe0                              
                    rom = e0 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffe1 in =ffffffffffffffe1                              
                    rom = e1 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe2 in =ffffffffffffffe2                              
                    rom = e2 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe3 in =fffffffffffdffe3                              
                    rom = e3 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffe4 in =ffffffffffffffe4                              
                    rom = e4 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe5 in =fffffffffffbffe5                              
                    rom = e5 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffe6 in =ffffffffffffffe6                              
                    rom = e6 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe7 in =ffffffffffffffe7                              
                    rom = e7 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe8 in =ffffffffffffffe8                              
                    rom = e8 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffe9 in =fffffffffff7ffe9                              
                    rom = e9 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =ffffffffffffffea in =ffffffffffffffea                              
                    rom = ea sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffeb in =ffffffffffffffeb                              
                    rom = eb sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffec in =ffffffffffffffec                              
                    rom = ec sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffed in =ffffffffffffffed                              
                    rom = ed sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffee in =ffffffffffffffee                              
                    rom = ee sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffef in =ffffffffffffffef                              
                    rom = ef sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffff0 in =fffffffffffffff0                              
                    rom = f0 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffff1 in =ffffffffffeffff1                              
                    rom = f1 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =fffffffffffffff2 in =ffffffffffdffff2                              
                    rom = f2 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =fffffffffffffff3 in =fffffffffffffff3                              
                    rom = f3 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffff4 in =ffffffffffbffff4                              
                    rom = f4 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =fffffffffffffff5 in =fffffffffffffff5                              
                    rom = f5 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffff6 in =fffffffffffffff6                              
                    rom = f6 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffff7 in =fffffffffffffff7                              
                    rom = f7 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffff8 in =ffffffffff7ffff8                              
                    rom = f8 sbe.sub.--  = 0 mbe.sub.--  = 1              
trick =fffffffffffffff9 in =fffffffffffffff9                              
                    rom = f9 sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffffa in =fffffffffffffffa                              
                    rom = fa sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffffb in =fffffffffffffffb                              
                    rom = fb sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffffc in =fffffffffffffffc                              
                    rom = fc sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffffd in =fffffffffffffffd                              
                    rom = fd sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =fffffffffffffffe in =fffffffffffffffe                              
                    rom = fe sbe.sub.--  = 1 mbe.sub.--  = 0              
trick =ffffffffffffffff in =ffffffffffffffff                              
                    rom = ff sbe.sub.--  = 1 mbe.sub.--  = 0              
______________________________________                                    

Claims (15)

I claim:
1. A method of communicating between components in a computer system, comprising the step of:
providing a communications path between a first component of the computer system and a second component of the computer system, wherein the first component transmits data to the second component using a first granularity, and wherein the communications path includes an error-correction code (ECC) circuit adapted to detect and correct memory errors transmitted from the first component to the second component;
interconnecting a third component to the communications path such that the third component may transmit data to the second component using a second granularity which is smaller than the first granularity; and
merging data from the third component with predefined data to present a merged data word to the ECC circuit, the merged data word having the first granularity.
2. The method of claim 1 further comprising the step of correcting a single-bit error in the merged data word using the ECC circuit.
3. The method of claim 1 wherein the first granularity is 72 bits, the second granularity is 8 bits, and further comprising the step of creating the predefined data with 64 bits.
4. The method of claim 1 wherein said merging step includes the step of forcing undriven check bits and undriven data bits to a predefined state such that error correction of the merged data word by the ECC circuit results in modification of the predefined data and not in modification of the data from the third component.
5. The method of claim 4 wherein the undriven check bits and undriven data bits are forced to the predefined state using a plurality of respective pull-up resistors.
6. The method of claim 1 wherein:
the first component is a random-access memory (RAM) device;
the second component is a central processing unit (CPU);
the third component is a read-only memory (ROM) device; and
said interconnecting step includes the steps of connecting the ECC circuit and the CPU to a system bus, and connecting the RAM device, the ROM device and the ECC circuit to a memory bus.
7. The method of claim 6 further comprising the steps of:
forwarding a plurality of such merged data words to a memory controller;
constructing a ROM word having the first granularity using the memory controller; and
transmitting the ROM word from the memory controller to the CPU.
8. The method of claim 6 wherein said merging step includes the step of forcing undriven check bits and undriven data bits to a predefined state such that error correction of the merged data word by the ECC circuit results in of modification the predefined data and not in modification of the data from the ROM device.
9. The method of claim 8 wherein the undriven check bits and undriven data bits are forced to the predefined state using a plurality of respective pull-up resistors.
10. A computer system comprising:
a random-access memory (RAM) device having a first data width;
a read-only memory (ROM) device having a second data width which is smaller than said first data width;
means for processing program instructions;
means interconnecting said processing means with said RAM and ROM devices, said interconnecting means including error-correction code (ECC) means for correcting an error in a memory word transmitted by said RAM device; and
means for merging a memory word from said ROM device with predefined data to present a merged data word to said ECC means, wherein said merged data word has a width equal to said first data width.
11. The computer system of claim 10 wherein said ECC means corrects a single-bit error in said merged data word.
12. The computer system of claim 10 wherein:
said first data width is 72 bits; and
said second data width is 8 bits.
13. The computer system of claim 10 wherein said merging means forces undriven check bits and undriven data bits in said ECC means to a predefined state such that error correction of said merged data word by said ECC means results in modification of said predefined data and not in modification of said memory word from said ROM device.
14. The computer system of claim 10 wherein said merging means includes a plurality of respective pull-up resistors adapted to bias said undriven check bits and said undriven data bits to the predefined state.
15. The computer system of claim 10 wherein said interconnecting means includes a memory controller having means for constructing a ROM word having the first data width from a plurality of said merged data words.
US09/063,962 1998-04-21 1998-04-21 Method and apparatus for partial word read through ECC block Expired - Fee Related US6125467A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/063,962 US6125467A (en) 1998-04-21 1998-04-21 Method and apparatus for partial word read through ECC block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/063,962 US6125467A (en) 1998-04-21 1998-04-21 Method and apparatus for partial word read through ECC block

Publications (1)

Publication Number Publication Date
US6125467A true US6125467A (en) 2000-09-26

Family

ID=22052633

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/063,962 Expired - Fee Related US6125467A (en) 1998-04-21 1998-04-21 Method and apparatus for partial word read through ECC block

Country Status (1)

Country Link
US (1) US6125467A (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050249010A1 (en) * 2004-05-06 2005-11-10 Klein Dean A Memory controller method and system compensating for memory cell data losses
US6965537B1 (en) 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
US20060013052A1 (en) * 2004-07-15 2006-01-19 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US7139963B1 (en) * 2003-05-15 2006-11-21 Cisco Technology, Inc. Methods and apparatus to support error-checking of variable length data packets using a multi-stage process
US7340668B2 (en) 2004-06-25 2008-03-04 Micron Technology, Inc. Low power cost-effective ECC memory system and method
CN100399287C (en) * 2004-10-27 2008-07-02 威盛电子股份有限公司 Data error check method and relative device
US7398449B1 (en) 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US7461320B2 (en) 2004-06-24 2008-12-02 Micron Technology, Inc. Memory system and method having selective ECC during low power refresh
US20090313526A1 (en) * 2004-08-19 2009-12-17 Neuman Paul S Apparatus and method for merging data blocks with error correction code protection
US7894289B2 (en) 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US7900120B2 (en) 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US20140164878A1 (en) * 2012-12-11 2014-06-12 Sandisk Technologies Inc. Data Recovery on Cluster Failures and ECC Enhancements with Code Word Interleaving
US10012197B2 (en) 2013-10-18 2018-07-03 Holley Performance Products, Inc. Fuel injection throttle body
US10055267B2 (en) 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10906482B2 (en) 2016-05-26 2021-02-02 Powerteq Llc Real-time performance tuning
US10961968B2 (en) 2016-01-13 2021-03-30 Fuel Injection Technology Inc. EFI throttle body with side fuel injectors

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688225A (en) * 1983-05-21 1987-08-18 Sony Corporation Method for uniformly encoding data occurring with different word lengths
US4745604A (en) * 1986-10-20 1988-05-17 International Business Machines Corporation Method and apparatus for transferring data between a host processor and a data storage device
US4779232A (en) * 1986-05-28 1988-10-18 Hitachi, Ltd. Partial write control apparatus
US5313624A (en) * 1991-05-14 1994-05-17 Next Computer, Inc. DRAM multiplexer
US5349611A (en) * 1992-11-13 1994-09-20 Ampex Systems Corporation Recovering synchronization in a data stream
US5412671A (en) * 1990-12-03 1995-05-02 Unisys Corporation Data protection and error correction, particularly for general register sets
US5666371A (en) * 1995-02-24 1997-09-09 Unisys Corporation Method and apparatus for detecting errors in a system that employs multi-bit wide memory elements

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688225A (en) * 1983-05-21 1987-08-18 Sony Corporation Method for uniformly encoding data occurring with different word lengths
US4779232A (en) * 1986-05-28 1988-10-18 Hitachi, Ltd. Partial write control apparatus
US4745604A (en) * 1986-10-20 1988-05-17 International Business Machines Corporation Method and apparatus for transferring data between a host processor and a data storage device
US5412671A (en) * 1990-12-03 1995-05-02 Unisys Corporation Data protection and error correction, particularly for general register sets
US5313624A (en) * 1991-05-14 1994-05-17 Next Computer, Inc. DRAM multiplexer
US5349611A (en) * 1992-11-13 1994-09-20 Ampex Systems Corporation Recovering synchronization in a data stream
US5392289A (en) * 1992-11-13 1995-02-21 Ampex Corporation Error rate measusrement using a comparison of received and reconstructed PN sequences
US5666371A (en) * 1995-02-24 1997-09-09 Unisys Corporation Method and apparatus for detecting errors in a system that employs multi-bit wide memory elements

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139963B1 (en) * 2003-05-15 2006-11-21 Cisco Technology, Inc. Methods and apparatus to support error-checking of variable length data packets using a multi-stage process
US8689077B2 (en) 2004-05-06 2014-04-01 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7099221B2 (en) 2004-05-06 2006-08-29 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7836374B2 (en) 2004-05-06 2010-11-16 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US9064600B2 (en) 2004-05-06 2015-06-23 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7447973B2 (en) 2004-05-06 2008-11-04 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7447974B2 (en) 2004-05-06 2008-11-04 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US7428687B2 (en) 2004-05-06 2008-09-23 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20050249010A1 (en) * 2004-05-06 2005-11-10 Klein Dean A Memory controller method and system compensating for memory cell data losses
US7398449B1 (en) 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US7461320B2 (en) 2004-06-24 2008-12-02 Micron Technology, Inc. Memory system and method having selective ECC during low power refresh
US7526713B2 (en) 2004-06-25 2009-04-28 Micron Technology, Inc. Low power cost-effective ECC memory system and method
US7340668B2 (en) 2004-06-25 2008-03-04 Micron Technology, Inc. Low power cost-effective ECC memory system and method
US7116602B2 (en) 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7280386B2 (en) 2004-07-15 2007-10-09 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7277345B2 (en) 2004-07-15 2007-10-02 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7272066B2 (en) 2004-07-15 2007-09-18 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7898892B2 (en) 2004-07-15 2011-03-01 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US20060013052A1 (en) * 2004-07-15 2006-01-19 Klein Dean A Method and system for controlling refresh to avoid memory cell data losses
US7558142B2 (en) 2004-07-15 2009-07-07 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US7623392B2 (en) 2004-07-15 2009-11-24 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US8446783B2 (en) 2004-07-15 2013-05-21 Micron Technology, Inc. Digit line comparison circuits
US8279683B2 (en) 2004-07-15 2012-10-02 Micron Technology, Inc. Digit line comparison circuits
US20090313526A1 (en) * 2004-08-19 2009-12-17 Neuman Paul S Apparatus and method for merging data blocks with error correction code protection
US7797609B2 (en) * 2004-08-19 2010-09-14 Unisys Corporation Apparatus and method for merging data blocks with error correction code protection
US7184352B2 (en) 2004-08-31 2007-02-27 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
US20060044913A1 (en) * 2004-08-31 2006-03-02 Klein Dean A Memory system and method using ECC to achieve low power refresh
US6965537B1 (en) 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
CN100399287C (en) * 2004-10-27 2008-07-02 威盛电子股份有限公司 Data error check method and relative device
US8359517B2 (en) 2006-10-11 2013-01-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US9286161B2 (en) 2006-10-11 2016-03-15 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US8832522B2 (en) 2006-10-11 2014-09-09 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US7894289B2 (en) 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US8413007B2 (en) 2006-10-18 2013-04-02 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US8601341B2 (en) 2006-10-18 2013-12-03 Micron Technologies, Inc. Memory system and method using ECC with flag bit to identify modified data
US7900120B2 (en) 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US8880974B2 (en) 2006-10-18 2014-11-04 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US9098428B2 (en) * 2012-12-11 2015-08-04 Sandisk Technologies Inc. Data recovery on cluster failures and ECC enhancements with code word interleaving
US9104591B2 (en) 2012-12-11 2015-08-11 Sandisk Technologies Inc. Data recovery on cluster failures and ECC enhancements with code word interleaving
US20140164878A1 (en) * 2012-12-11 2014-06-12 Sandisk Technologies Inc. Data Recovery on Cluster Failures and ECC Enhancements with Code Word Interleaving
US10012197B2 (en) 2013-10-18 2018-07-03 Holley Performance Products, Inc. Fuel injection throttle body
US10570866B2 (en) 2013-10-18 2020-02-25 Holley Performance Products, Inc. Fuel injection throttle body
US11409894B2 (en) 2013-10-18 2022-08-09 Holley Performance Products, Inc. Fuel injection throttle body
US10055267B2 (en) 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10961968B2 (en) 2016-01-13 2021-03-30 Fuel Injection Technology Inc. EFI throttle body with side fuel injectors
US11391255B2 (en) 2016-01-13 2022-07-19 Fuel Injection Technology Inc. EFI throttle body with side fuel injectors
US12012919B2 (en) 2016-01-13 2024-06-18 Fuel Injection Technology Inc. EFI throttle body with side fuel injectors
US10906482B2 (en) 2016-05-26 2021-02-02 Powerteq Llc Real-time performance tuning

Similar Documents

Publication Publication Date Title
US6125467A (en) Method and apparatus for partial word read through ECC block
US11854658B2 (en) Memory buffer with data scrambling and error correction
US5740188A (en) Error checking and correcting for burst DRAM devices
JP5039061B2 (en) Memory transaction replay mechanism
US5961660A (en) Method and apparatus for optimizing ECC memory performance
US7567886B2 (en) Method to validate system configuration in a data storage and retrieval system
US5922080A (en) Method and apparatus for performing error detection and correction with memory devices
US8090976B2 (en) Error correction for digital systems
US20070130397A1 (en) System and method for encoding packet header to enable higher bandwidth efficiency across PCIe links
JPH02278449A (en) Fault tolerant memory system
JP2001256068A (en) Error detecting/correcting method, main storage controller of computer system and computer system
US10992322B2 (en) Data storage system and associated method for saving storage space and eliminating data errors
US7483321B2 (en) Semiconductor memory device capable of checking a redundancy code and memory system and computer system having the same
US20240220356A1 (en) Parity protected memory blocks merged with error correction code (ecc) protected blocks in a codeword for increased memory utilization
US6035425A (en) Testing a peripheral bus for data transfer integrity by detecting corruption of transferred data
JP6673021B2 (en) Memory and information processing device
US6003152A (en) System for N-bit part failure detection using n-bit error detecting codes where n less than N
US20030182611A1 (en) Method for verifying error correction code function of a computer system
US20020013929A1 (en) Error correction for system interconnects
US20030018846A1 (en) Method and system for fast memory initialization or diagnostics
JP4291368B2 (en) Memory bus check procedure
US11722152B1 (en) Capacity-expanding memory control component
JPH04336347A (en) Memory device
US20030023803A1 (en) Bus bridge circuit including audio logic and an addressable register for storing an address bit used when the audio logic accesses digital data, and method for initializing a chip set including the bus bridge circuit
WO2023202592A1 (en) Data writing method and processing system

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DIXON, ROBERT C.;REEL/FRAME:009154/0929

Effective date: 19980416

AS Assignment

Owner name: HOLLEY PERFORMANCE PRODUCTS, KENTUCKY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COLTEC INDUSTRIES, INC.;REEL/FRAME:010639/0074

Effective date: 19980512

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, MASSACHUSETTS

Free format text: SECURITY AGREEMENT;ASSIGNORS:HOLLEY PERFORMANCE PRODUCTS INC.;HOLLEY PERFORMANCE SYSTEMS, INC.;WEIAND AUTOMOTIVE INDUSTRIES, INC.;AND OTHERS;REEL/FRAME:017105/0764

Effective date: 20060126

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20080926

AS Assignment

Owner name: HOLLEY PERFORMANCE PRODUCTS INC.,KENTUCKY

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL 17105 FRAME 0764;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION;REEL/FRAME:024599/0236

Effective date: 20100622

Owner name: HOLLEY PERFORMANCE SYSTEMS, INC.,KENTUCKY

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL 17105 FRAME 0764;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION;REEL/FRAME:024599/0236

Effective date: 20100622

Owner name: WEIAND AUTOMOTIVE INDUSTRIES, INC.,KENTUCKY

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL 17105 FRAME 0764;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION;REEL/FRAME:024599/0236

Effective date: 20100622

Owner name: NITROUS OXIDE SYSTEMS, INC.,KENTUCKY

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL 17105 FRAME 0764;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION;REEL/FRAME:024599/0236

Effective date: 20100622

Owner name: HOLLEY PERFORMANCE PRODUCTS HOLDINGS, INC.,KENTUCK

Free format text: RELEASE OF SECURITY INTEREST RECORDED AT REEL 17105 FRAME 0764;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION;REEL/FRAME:024599/0236

Effective date: 20100622