Combined group ECC protection and subgroup parity protection

Information

  • Patent Grant
  • 9252814
  • Patent Number
    9,252,814
  • Date Filed
    Friday, June 14, 2013
    11 years ago
  • Date Issued
    Tuesday, February 2, 2016
    8 years ago
Abstract
A method and system are disclosed for providing combined error code protection and subgroup parity protection for a given group of n bits. The method comprises the steps of identifying a number, m, of redundant bits for said error protection; and constructing a matrix P, wherein multiplying said given group of n bits with P produces m redundant error correction code (ECC) protection bits, and two columns of P provide parity protection for subgroups of said given group of n bits. In the preferred embodiment of the invention, the matrix P is constructed by generating permutations of m bit wide vectors with three or more, but an odd number of, elements with value one and the other elements with value zero; and assigning said vectors to rows of the matrix P.
Description
BACKGROUND OF THE INVENTION

1. Field of the Invention


This invention generally relates to computer memory systems, and more specifically, to content protection of computer memory using redundancy.


2. Background Art


The small size of computer transistors and capacitors, combined with transient electrical and electromagnetic phenomena, cause occasional errors in stored information in computer memory systems. Therefore, even well designed and generally reliable memory systems are susceptible to memory device failures.


In an effort to minimize the effects of these memory device failures, various error-checking schemes have been developed to detect, and in some cases correct, errors in messages read from memory. Many of these checking schemes use redundant information, stored in the computer memory, to ensure data integrity. The simplest error detection scheme is the parity bit. A parity bit is an extra bit included with a binary data message or data word to make the total number of 1's in the message either odd or even. For “even parity” systems, the parity bit is set to make the total number of 1's in the message even. For “odd parity” systems, the parity bit is set to make the total number of 1's in the message odd. For example, in a system utilizing odd parity, a message having two 1's would have its parity bit set to 1, thereby making the total number of 1's odd. Then, the message including the parity bit is transmitted and subsequently checked at the receiving end for errors. An error results if the parity of the data bits in the message does not correspond to the parity bit transmitted. As a result, single bit errors can be detected. However, since there is no way to detect which particular bit is in error, correction is not possible. Furthermore, if two or any even number of bits are in error, the parity will be correct and no error will be detected. Parity therefore is capable of detecting only odd numbers of errors and is not capable of correcting any bits determined to be in error.


Error correction codes (ECCs) have thus been developed to not only detect but also correct bits determined to be in error. ECCs utilize multiple parity check bits stored with the data message in memory. Each check bit is a parity bit for a group of bits in the data message. When the message is read from memory, the parity of each group, including the check bit, is evaluated. If the parity is correct for all of the groups, it signifies that no detectable error has occurred. If one or more of the newly generated parity values are incorrect, a unique pattern called a syndrome results, which may be used to identify the bit in error. Upon detection of the particular bit in error, the error may be corrected by complementing the erroneous bit.


A widely used type of ECC utilized in error control in digital systems is based on the codes devised by R. W. Hamming, and thus take the name “Hamming codes”. One particular subclass of Hamming codes includes the single error correcting and double error detecting (SEC-DED) codes. As their name suggests, these codes may be utilized not only to correct any single bit error but also to detect double bit errors.


Another type of well-known ECC is the single symbol correction and double symbol detection (SSC-DSD) codes, which are used to correct single symbol errors and detect double symbol errors. In systems implementing these types of codes, the symbol represents a multiple bit package or chip. Hence, as the name implies, an SSC-DSD code in a system utilizing n bit symbols would be capable of correcting n bits in a single symbol and detecting errors occurring in double symbols.


Error detecting codes have a low overhead, e.g., 12.5% parity overhead for single byte. Error correcting codes are very inefficient for small data items and are usually used for groups of 8 bytes and larger, e.g., 12.5% overhead for single error correcting, double correcting code on 8 bytes. If a fraction of the group is changed, the unchanged data needs to be retrieved to generate the ECC for the entire group, causing expensive Read-Modify Write cycles.


For example, in a 32-bit ECC scheme, the check bits that are stored with the data are generated based on the entire thirty-two bits. This makes it necessary to regenerate all of the check bits if even one data bit has changed. Thus, if one byte of data needs to be written to memory, the entire 4-byte double word must first be read, checked and corrected, the new eight bits substituted, and then all four bytes must be rewritten to memory with the appropriate new check bits. The same is true if two or three bytes of data need to be written to memory. This is called a partial write or a read/modify/write operation.


A large number of these Read-Modify-Write cycles can cause significant delays in the operation of the memory system. This problem is usually mitigated by implementing write-combine buffers. These buffers collect multiple update requests and combine them, if possible, into larger updates, possibly changing the entire ECC protected group at once.


SUMMARY OF THE INVENTION

An object of this invention is to provide combined group ECC protection and subgroup parity protection.


Another object of the present invention is to generate a code that provides error correction capabilities for a group of data as well as parity protection for fractions of that group.


A further object of the invention is to generate a code that simultaneously represents ECC on a group of bits and parity across subgroups of these bits.


These and other objectives are attained with a method of and system for providing combined error code protection and subgroup parity protection for a given group of n bits. The method comprises the steps of identifying a number, m, of redundant bits for said error protection; and constructing a matrix P, wherein multiplying said given group of n bits with P produces m redundant error correction code (ECC) protection bits, and two columns of P provide parity protection for subgroups of said given group of n bits.


In the preferred embodiment of the invention, the matrix P is constructed by generating permutations of m bit wide vectors with three or more, but an odd number of, elements with value one and the other elements with value zero; and assigning said vectors to rows of the matrix P. Also, preferably, this matrix P fulfills the following conditions: (i) all elements of P are either one or zero; (ii) the elements of columns p0 to pk are non equal to zero for rows for which said columns provide parity protection, and otherwise the elements of said columns p0 to pk are zero; (iii) each row has an odd number of one-elements; and (iv) each row has at least three one-elements.


Further benefits and advantages of the present invention will become apparent from a consideration of the following detailed description, given with reference to the accompanying drawings, which specify and show preferred embodiments of the invention.





BRIEF DESCRIPTION OF THE PREFERRED EMBODIMENTS


FIG. 1 depicts one example of a computer system in which the present invention may be implemented.



FIG. 2 illustrates one example of a memory arrangement with which the present invention may be used.



FIG. 3 is a block diagram depicting data store and fetch operations implementing a single error correcting double error detecting methodology.



FIG. 4 shows an ECC checkbits generator matrix P which generates ECC protection and parity protection in accordance with the present invention.



FIG. 5 illustrates a parity protected cache line.





DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS


FIG. 1 shows a block diagram representation of a computer system 10 utilizing the error correction code of the present invention. In this embodiment, computer system 10 includes a memory 11 connected to a main storage controller (MSC) 12 via a data bus 15, a cache 13 connected to MSC 12 via a data bus 17, and a plurality of central processing units (CPUs) 14 connected to cache 13 via data buses 17. Data buses 16 and 17 may typically be 72 bits wide. Communication of data between memory 11 and MSC 12, on the other hand, occurs via data bus 15. Thus, data bus 15 facilitates the transmission of data read from memory 11 by MSC 12 as well as data written to memory 11 by MSC 12.


Data bus 15, in one embodiment, is 160 bits wide but nevertheless may vary in width according to the requirements of the particular system while still receiving error protection under the ECC of the present invention. In this regard, the ECC of the present invention is specifically designed to meet the data requirements of a wide variety of servers including data buses having widths of, for example, 140, 142, 143, 144, 152, and 162 bits.


The data transmitted in computer system 10 is arranged into a data word having a size dependent on the particular data bus utilized by the system. Furthermore, the data word may be arranged into variably sized symbols. For instance, in one example, the data word comprises a plurality of two bit symbols. Hence, in this example, a 146-bit data word would include 73 symbols.


With reference to FIG. 2, a representative memory system may use, for example, ten memory chips that are 16 bits wide. Eight chips are used to hold user data, and the remaining two chips contain ECC check information along with system data. Each single memory access returns 160 bits of data, referred to as a line of data. The preferred error correcting code used with the present invention is defined over two sequential memory accesses to all the chips (2 lines), so from the eight user data chips, in total there are 256 (8×16×2) bits of user data. The extra two chips may provide 64 bits (2×16×2) bits, and 54 of these bits may be allocated for ECC check information, leaving ten bits for system information.



FIG. 3 is a block diagram depicting data store and fetch operations implementing a preferred ECC methodology. More specifically, FIG. 3 is a high-level diagram depicting the movement of data through the ECC generation logic, out to memory, back from memory, and through the ECC detection/correction logic. As shown in FIG. 3, the data bits and address parity bits are fed into an ECC generation logic unit 50, implementing a parity check for producing the ECC word comprising the data bits and a group of check bits. The ECC word is stored in a memory storage 51, for example. During a subsequent read operation, the ECC word is fetched from memory 51, and an ECC correction/detection logic unit 52 is implemented to determine if there are any errors. If there are no errors, the data bits are passed on to the next stage in the computer system. If there are errors, the ECC correction/detection logic unit will detect them providing that no more than two symbols are in error, and correct them if a single symbol is in error. The detection/correction logic signals the system via CE and UE signals when a respective “correctable” or “uncorrectable” error occurs.


In accordance with the preferred embodiment of the present invention, the ECC is based on a single error correction double error detect (SECDED) ECC. A group of n bits is protected by m redundant bits using a n×(n+m) generator matrix G=[In P]. Multiplying an n bit wide data word with P produces the m redundant protection bits. Columns p0 to pk of P are selected to provide parity for subgroups.


P preferably fulfills the following conditions:


i) All elements are either 1 or 0;


ii) The elements of columns p0 to pk must be non-equal to zero for rows for which they provide parity and zero otherwise;


iii) Each row must have an odd number of one-elements; and


iv) Each row must have at least 3 one-elements.


P is constructed by generating permutations of m bit wide vectors with 3 or more, but an odd number of, elements with value one and the other elements of value 0. These vectors are assigned to rows of P while adhering to the above conditions. If not all rows of P can be assigned, m needs to be increased by one and the entire process needs to be restarted.



FIG. 4 shows, as a preferred embodiment, a checkbits generator matrix P that provides SECDED ECC protection for 64 b groups. The columns p0 and p1 of the matrix generate parity for the first 32 b of the group while columns p2 and p3 provide parity protection for the second 32 b subgroup.


Also, in accordance with a preferred embodiment of the invention, a storage subsystem is provided that can take advantage of the properties of the above ECC code as follows:


i) If an entire n-bit group is changed, the m-bit ECC for this group is generated and stored along with the group;


ii) If only a fraction of the group, but one or multiple entire, parity protected subgroups are changed, only this fraction and the parity bits protecting them are stored, the rest remains unchanged. The entire group is now only protected by the parity bits generated by columns p0 to pk. The fact that only parity protection is valid is recorded for this group or for the storage region including this group; and


iii) In all other cases, the unmodified components of the group are first read and merged with the modified content. Then the entire m-bit ECC for this group is generated and stored along with the group.


When retrieving data and ECC, the information indicating whether this group is only parity protected is also retrieved. If it is only parity protected, only the bits generated by columns p0 to pk are checked and an uncorrectable error is signaled in case of a mismatch. Otherwise, error detection and correction can proceed as for a regular SECDED ECC.


To balance the need of high throughput subgroup modifications avoiding RMW cycles with data protection of a correcting code, the storage can be scrubbed periodically to convert parity-only protected data to ECC protected data.



FIG. 5 shows a preferred embodiment. A cache stores its cache lines along with ECC checkbits. It also stores a parity-protect bit for each cache line in its directory that determines if at least one fraction of the line is protected by parity only. The parity protect bit is set to ‘0’ when the line is established on a miss and fetched from main memory. It is set to ‘1’ whenever only a 32 b word is written to the cache line. It is cleared when a background scrub process, which continuously scans the directory for asserted parity-protect bits, reads a whole line, regenerates all ECC fields and writes the line back into the cache.


As will be readily apparent to those skilled in the art, the present invention or aspects of the invention can be realized in hardware, software, or a combination of hardware and software. Any kind of computer/server system(s)—or other apparatus adapted for carrying out the methods described herein—is suited. A typical combination of hardware and software could be a general-purpose computer system with a computer program that, when loaded and executed, carries out methods described herein. Alternatively, a specific use computer, containing specialized hardware for carrying out one or more of the functional tasks of the invention, could be utilized.


The present invention or aspects of the invention can also be embodied in a computer program product, which comprises all the respective features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods. Computer program, software program, program, or software, in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.


While it is apparent that the invention herein disclosed is well calculated to fulfill the objects stated above, it will be appreciated that numerous modifications and embodiments may be devised by those skilled in the art, and it is intended that the appended claims cover all such modifications and embodiments as fall within the true spirit and scope of the present invention.

Claims
  • 1. A tangible computer readable hardware storage device, tangibly embodying computer readable code for providing an error correction code and parity protection for a given group of bits, wherein the given group of the bits comprises a plurality of subgroups of the bits, the computer readable code, when executing in a computer system, performing the following: using a specified error correction code checkbits generator matrix P comprising a plurality of rows and a plurality of columns to provide an error correction code and parity bits, includingusing the specified error correction code checkbits generator matrix P to provide an error correction code (ECC) for the given group of bits; andusing two of the columns of said error correction code checkbits generator matrix P to provide parity bits for parity protection across the subgroups of said given group of bits.
  • 2. The computer readable storage device according to claim 1, wherein said matrix P is constructed by generating m bit wide vectors with three or more, but an odd number of, elements with value one and the other elements with value zero, and assigning said vectors to the rows of the matrix P.
  • 3. A method of providing an error correction code and parity protection for a given group of bits, wherein the given group of bits comprises a plurality of subgroups of the bits, the method comprising: using a specified error correction code checkbits generator matrix P comprising a plurality of rows and a plurality of columns to provide an error correction code and parity bits, includingusing the specified error correction code checkbits generator matrix P to provide an error correction code (ECC) for the given group of bits; andusing two of the columns of said error correction code checkbits generator matrix P to provide parity bits for parity protection across the subgroups of said given group of bits.
  • 4. The method according to claim 3, wherein said matrix P is constructed by generating m bit wide vectors with three or more, but an odd number of, elements with value one and the other elements with value zero, and assigning said vectors to the rows of the matrix P.
  • 5. The method according to claim 3, comprising the further step of: using a computer system, implementing a code providing algorithm, for performing the using the specified matrix P to provide the error correction code and the using two of the columns of said matrix P to provide parity bits for parity protection.
  • 6. The method according to claim 3, wherein the using the specified matrix P to provide on error correction code includes: identifying a number, m, of redundant bits for said error correction code; andmultiplying said given group of bits with the matrix P to produce m redundant error correction code protection bits.
  • 7. The method according to claim 3, wherein the matrix P simultaneously represents ECC on the group of bits and party across subgroups of said group bits.
  • 8. The method according to claim 3, wherein: the group of bits includes n bits; andthe using the specified error correction code checkbits generator matrix P includesusing m redundant bits to protect said group of n bits, andgenerating the m redundant bits by multiplying an n bit wide data word with P.
  • 9. A system for providing an error correction code and parity protection for a given group of bits, wherein the given group of bits comprises a plurality of subgroups of the bits, the system comprising: one or more processing units configured for:using a specified error correction code checkbits generator matrix P comprising a plurality of rows and a plurality of columns to provide an error correction code and parity bits, includingusing the specified error correction code checkbits generator matrix P to provide an error correction code (ECC) for the given group of bits; andusing two of the columns of said error correction code checkbits generator matrix P to provide parity bits for parity protection across the subgroups of said given group of bits.
  • 10. The system according to claim 9, wherein: said matrix is constructed by generating m bit wide vectors with three or more, but an odd number of, elements with value one and the other elements with value zero, and assigning said vectors to the rows of the matrix P.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional application of copending U.S. patent application Ser. No. 11/768,527, filed Jun. 26, 2007, the entire content and disclosure of which is hereby incorporated herein by reference. The present invention is related to the following commonly-owned, co-pending United States Patent Applications filed on even date herewith, the entire contents and disclosure of each of which is expressly incorporated by reference herein as if fully set forth herein. U.S. patent application Ser. No. 11/768,777, now U.S. Pat. No. 8,230,433 issued Jul. 24, 2012 for “A SHARED PERFORMANCE MONITOR IN A MULTIPROCESSOR SYSTEM”; U.S. patent application Ser. No. 11/768,645, now U.S. Pat. No. 8,258,490 issued Sep. 4, 2012 for “OPTIMIZED COLLECTIVES USING A DMA ON A PARALLEL COMPUTER”; U.S. patent application Ser. No. 11/768,781, now U.S. Pat. No. 7,694,035 issued Apr. 6, 2012, for “DMA SHARED BYTE COUNTERS IN A PARALLEL COMPUTER”; U.S. patent application Ser. No. 11/768,784, now U.S. Pat. No. 7,788,334 issued Aug. 31, 2010 for “MULTIPLE NODE REMOTE MESSAGING”; U.S. patent application Ser. No. 11/768,697, now U.S. Pat. No. 8,103,832 issued Jan. 24, 2012 for “A METHOD AND APPARATUS OF PREFETCHING STREAMS OF VARYING PREFETCH DEPTH”; U.S. patent application Ser. No. 11/768,532, now U.S. Pat. No. 7,877,551 issued Jan. 25, 2011, for “PROGRAMMABLE PARTITIONING FOR HIGH-PERFORMANCE COHERENCE DOMAINS IN A MULTIPROCESSOR SYSTEM”; U.S. patent application Ser. No. 11/768,857, now U.S. Pat. No. 7,827,391 issued Nov. 2, 2010 for “METHOD AND APPARATUS FOR SINGLE-STEPPING COHERENCE EVENTS IN A MULTIPROCESSOR SYSTEM UNDER SOFTWARE CONTROL”; U.S. patent application Ser. No. 11/768,547, now U.S. Pat. No. 7,669,012 issued Feb. 23, 2010 for “INSERTION OF COHERENCE EVENTS INTO A MULTIPROCESSOR COHERENCE PROTOCOL”; U.S. patent application Ser. No. 11/768,791, now U.S. Pat. No. 7,680,971 issued Mar. 16, 2010 for “METHOD AND APPARATUS TO DEBUG AN INTEGRATED CIRCUIT CHIP VIA SYNCHRONOUS CLOCK STOP AND SCAN”; U.S. patent application Ser. No. 11/768,795, now U.S. Pat. No. 7,802,025 issued Sep. 21, 2010 for “DMA ENGINE FOR REPEATING COMMUNICATION PATTERNS”; U.S. patent application Ser. No. 11/768,799, now U.S. Pat. No. 7,680,971 issued Mar. 16, 2010 for “METHOD AND APPARATUS FOR A CHOOSE-TWO MULTI-QUEUE ARBITER”; U.S. patent application Ser. No. 11/768,800, for “METHOD AND APPARATUS FOR EFFICIENTLY TRACKING QUEUE ENTRIES RELATIVE TO A TIMESTAMP”; U.S. patent application Ser. No. 11/768,572, now U.S. Pat. No. 7,701,846 issued Apr. 20, 2010 for “BAD DATA PACKET CAPTURE DEVICE”; U.S. patent application Ser. No. 11/768,593, for “EXTENDED WRITE COMBINING USING A WRITE CONTINUATION HINT FLAG”; U.S. patent application Ser. No. 11/768,805, now U.S. Pat. No. 7,793,038 issued Sep. 7, 2010, for “A SYSTEM AND METHOD FOR PROGRAMMABLE BANK SELECTION FOR BANKED MEMORY SUBSYSTEMS”; U.S. patent application Ser. No. 11/768,905, now U.S. Pat. No. 7,761,687 issued Jul. 20, 2010, for “AN ULTRASCALABLE PETAFLOP PARALLEL SUPERCOMPUTER”; U.S. patent application Ser. No. 11/768,810, now U.S. Pat. No. 8,108,738 issued Jan. 31, 2012 for “SDRAM DDR DATA EYE MONITOR METHOD AND APPARATUS”; U.S. patent application Ser. No. 11/768,812, now U.S. Pat. No. 7,797,503 issued Sep. 14, 2012 for “A CONFIGURABLE MEMORY SYSTEM AND METHOD FOR PROVIDING ATOMIC COUNTING OPERATIONS IN A MEMORY DEVICE”; U.S. patent application Ser. No. 11/768,559, now U.S. Pat. No. 8,010,875 issued Aug. 30, 2011, for “ERROR CORRECTING CODE WITH CHIP KILL CAPABILITY AND POWER SAVING ENHANCEMENT”; U.S. patent application Ser. No. 11/768,552, now U.S. Pat. No. 7,873,843, for “STATIC POWER REDUCTION FOR MIDPOINT-TERMINATED BUSSES”; U.S. patent application Ser. No. 11/768,669, now U.S. Pat. No. 7,984,448 issued Jul. 19, 2011 for “A MECHANISM TO SUPPORT GENERIC COLLECTIVE COMMUNICATION ACROSS A VARIETY OF PROGRAMMING MODELS”; U.S. patent application Ser. No. 11/768,813, now U.S. Pat. No. 8,032,92 issued Oct. 4, 2011 for “MESSAGE PASSING WITH A LIMITED NUMBER OF DMA BYTE COUNTERS”; U.S. patent application Ser. No. 11/768,619, now U.S. Pat. No. 7,738,443 issued Jun. 15, 2010 for “ASYNCRONOUS BROADCAST FOR ORDERED DELIVERY BETWEEN COMPUTE NODES IN A PARALLEL COMPUTING SYSTEM WHERE PACKET HEADER SPACE IS LIMITED”; U.S. patent application Ser. No. 11/768,682, for “HARDWARE PACKET PACING USING A DMA IN A PARALLEL COMPUTER”; and U.S. patent application Ser. No. 11/768,752, now U.S. Pat. No. 8,001,401 issued Aug. 16, 2011 for “POWER THROTTLING OF COLLECTIONS OF COMPUTING ELEMENTS”.

GOVERNMENT RIGHTS

This invention was made with Government support under Contract No.: B554331, awarded by Department of Energy. The Government has certain rights to this invention.

US Referenced Citations (118)
Number Name Date Kind
4777595 Strecker et al. Oct 1988 A
5063562 Barzilai et al. Nov 1991 A
5142422 Zook et al. Aug 1992 A
5349587 Nadeau-Dostie et al. Sep 1994 A
5353412 Douglas et al. Oct 1994 A
5452432 Macachor Sep 1995 A
5524220 Verma et al. Jun 1996 A
5634007 Calta et al. May 1997 A
5659710 Sherman et al. Aug 1997 A
5708779 Graziano et al. Jan 1998 A
5761464 Hopkins Jun 1998 A
5796735 Miller et al. Aug 1998 A
5809278 Watanabe et al. Sep 1998 A
5825748 Barkey et al. Oct 1998 A
5844918 Kato Dec 1998 A
5890211 Sokolov et al. Mar 1999 A
5917828 Thompson Jun 1999 A
6023732 Moh et al. Feb 2000 A
6061511 Marantz et al. May 2000 A
6072781 Feeney et al. Jun 2000 A
6122715 Palanca et al. Sep 2000 A
6185214 Schwartz et al. Feb 2001 B1
6219300 Tamaki Apr 2001 B1
6223322 Michigami et al. Apr 2001 B1
6263397 Wu et al. Jul 2001 B1
6295571 Scardamalia et al. Sep 2001 B1
6311249 Min et al. Oct 2001 B1
6324495 Steinman Nov 2001 B1
6356106 Greeff et al. Mar 2002 B1
6366984 Carmean et al. Apr 2002 B1
6442162 O'Neill et al. Aug 2002 B1
6466227 Pfister et al. Oct 2002 B1
6564331 Joshi May 2003 B1
6594234 Chard et al. Jul 2003 B1
6598123 Anderson et al. Jul 2003 B1
6601144 Arimilli et al. Jul 2003 B1
6631447 Morioka et al. Oct 2003 B1
6631485 Morley et al. Oct 2003 B1
6647428 Bannai et al. Nov 2003 B1
6662305 Salmon et al. Dec 2003 B1
6675349 Chen Jan 2004 B1
6718506 Sebastian et al. Apr 2004 B1
6735174 Hefty et al. May 2004 B1
6775693 Adams Aug 2004 B1
6799232 Wang Sep 2004 B1
6880028 Kurth Apr 2005 B2
6889266 Stadler May 2005 B1
6894978 Hashimoto May 2005 B1
6954887 Wang et al. Oct 2005 B2
6986026 Roth et al. Jan 2006 B2
7007123 Golla et al. Feb 2006 B2
7058826 Fung Jun 2006 B2
7065594 Ripy et al. Jun 2006 B2
7143219 Chaudhari et al. Nov 2006 B1
7191373 Wang et al. Mar 2007 B2
7239565 Liu Jul 2007 B2
7280477 Jeffries et al. Oct 2007 B2
7298746 De La Iglesia et al. Nov 2007 B1
7363629 Springer et al. Apr 2008 B2
7373420 Lyon May 2008 B1
7401245 Fischer et al. Jul 2008 B2
7454640 Wong Nov 2008 B1
7454641 Connor et al. Nov 2008 B2
7461236 Wentzlaff Dec 2008 B1
7463529 Matsubara Dec 2008 B2
7539845 Wentzlaff et al. May 2009 B1
7613971 Asaka Nov 2009 B2
7620791 Wentzlaff et al. Nov 2009 B1
7698581 Oh Apr 2010 B2
7904782 Huang et al. Mar 2011 B2
7930611 Huang et al. Apr 2011 B2
20010055323 Rowett et al. Dec 2001 A1
20020078420 Roth et al. Jun 2002 A1
20020087801 Bogin et al. Jul 2002 A1
20020100020 Hunter et al. Jul 2002 A1
20020129086 Garcia-Luna-Aceves et al. Sep 2002 A1
20020138801 Wang et al. Sep 2002 A1
20020156979 Rodriguez Oct 2002 A1
20020184159 Tadayon et al. Dec 2002 A1
20030007457 Farrell et al. Jan 2003 A1
20030028749 Ishikawa et al. Feb 2003 A1
20030050714 Tymchenko Mar 2003 A1
20030050954 Tayyar et al. Mar 2003 A1
20030074616 Dorsey Apr 2003 A1
20030105799 Khan et al. Jun 2003 A1
20030163649 Kapur et al. Aug 2003 A1
20030177335 Luick Sep 2003 A1
20030188053 Tsai Oct 2003 A1
20030235202 Van Der Zee et al. Dec 2003 A1
20040003184 Safranek et al. Jan 2004 A1
20040019730 Walker et al. Jan 2004 A1
20040024925 Cypher et al. Feb 2004 A1
20040073780 Roth et al. Apr 2004 A1
20040103218 Blumrich et al. May 2004 A1
20040210694 Shenderovich Oct 2004 A1
20040243739 Spencer Dec 2004 A1
20050007986 Malladi et al. Jan 2005 A1
20050053057 Deneroff et al. Mar 2005 A1
20050076163 Malalur Apr 2005 A1
20050160238 Steely et al. Jul 2005 A1
20050216613 Ganapathy et al. Sep 2005 A1
20050229081 Lin et al. Oct 2005 A1
20050251613 Kissell Nov 2005 A1
20050270886 Takashima Dec 2005 A1
20050273564 Lakshmanamurthy et al. Dec 2005 A1
20060050737 Hsu Mar 2006 A1
20060080513 Beukema et al. Apr 2006 A1
20060206635 Alexander et al. Sep 2006 A1
20060248367 Fischer et al. Nov 2006 A1
20070055832 Beat Mar 2007 A1
20070133536 Kim et al. Jun 2007 A1
20070168803 Wang et al. Jul 2007 A1
20070174529 Rodriguez et al. Jul 2007 A1
20070195774 Sherman et al. Aug 2007 A1
20080147987 Cantin et al. Jun 2008 A1
20080168329 Han et al. Jul 2008 A1
20080222480 Huang et al. Sep 2008 A1
20080222481 Huang et al. Sep 2008 A1
Non-Patent Literature Citations (13)
Entry
Definition of “mechanism”, Oxford English Dictionary, http://dictionary.oed.com/cgi/entry/00304337?query—type=word&queryword=mechanism&first=1&max—to—show=10&sort—type=alpha&result—place=2&search—id=y2atElGc-11603&hilite+00304337.
Almasi, et al., “MPI on BlueGene/L: Designing an Efficient General Purpose Messaging Solution for a Large Cellular System,” IBM Research Report RC22851 (W037-150) Jul. 22, 2003.
Almasi, et al.,“Optimization of MPI Collective Communication on BlueGene/L Systems,” ICS'05, Jun. 20-22, 2005, Boston, MA.
Gara, et al., “Overview of the Blue Gene/L system architecture,” IBM J. Res. & Dev., vol. 49, No. 2/3, Mar./May 2005, pp. 195-212.
Huang, et al., “Performance Evaluation of Adaptive MPI,” PPoPP'06, Mar. 29-31, 2006, New York, New York.
MPI (Message Passing Interface) standards documents, errata, and archives http://www.mpi-forum.org visited Jun. 16, 2007 (Sections 4.2, 4.4 and 10.4).
David Chaiken, Craig Fields, Kiyoshi Kurihara, Anant Agarwal, Directory-Based Cache Coherence in Large-Scale Multiprocessors, Computer, v.23 n.6, p. 49-58, Jun. 1990.
Michel, Dubois, Christoph Scheurich, Faye A. Briggs, Synchronization, Coherence, and Event Ordering in Multiprocessors, Computer, v.21 n.2, p. 9-21, Feb. 1988.
Giampapa, et al., “Blue Gene/L advanced diagnostics environment,” IBM J. Res. & Dev., vol. 49, No. 2/3, Mar./May 2005, pp. 319-331.
IBM Journal of Research and Development, Special Double Issue on Blue Gene, vol. 49, Nos. 2/3, Mar./May 2005 (“Preface”).
IBM Journal of Research and Development, Special Double Issue on Blue Gene, vol. 49, Nos. 2/3, Mar./May 2005 (“Intro”).
“Intel 870: A Building Block for Cost-Effective, Scalable Servers”, Faye Briggs, Michel et al., pp. 36-47, Mar.-Apr. 2002.
Pande, et al., Performance Evaluation and Design Trade-Offs for Network-On-Chip Interconnect Architectures, 2005, IEEE, pp. 1025-1040.
Related Publications (1)
Number Date Country
20130283123 A1 Oct 2013 US
Divisions (1)
Number Date Country
Parent 11768527 Jun 2007 US
Child 13918127 US