Method and system for controlling memory accesses to memory modules having a memory hub architecture

Information

  • Patent Grant
  • 7908452
  • Patent Number
    7,908,452
  • Date Filed
    Monday, April 5, 2010
    14 years ago
  • Date Issued
    Tuesday, March 15, 2011
    13 years ago
Abstract
A computer system includes a memory hub controller coupled to a plurality of memory modules. The memory hub controller includes a memory request queue that couples memory requests and corresponding request identifier to the memory modules. Each of the memory modules accesses memory devices based on the memory requests and generates response status signals from the request identifier when the corresponding memory request is serviced. These response status signals are coupled from the memory modules to the memory hub controller along with or separate from any read data. The memory hub controller uses the response status signal to control the coupling of memory requests to the memory modules and thereby control the number of outstanding memory requests in each of the memory modules.
Description
TECHNICAL FIELD

This invention relates to memory systems, and, more particularly, to a memory system having several memory modules each of which includes a memory hub coupled to several memory devices.


BACKGROUND OF THE INVENTION

Computer systems use memory devices, such as dynamic random access memory (“DRAM”) devices, to store instructions and data that are accessed by a processor. These memory devices are normally used as system memory in a computer system. In a typical computer system, the processor communicates with the system memory through a processor bus and a memory controller. The processor issues a memory request, which includes a memory command, such as a read command, and an address designating the location from which data or instructions are to be read. The memory controller uses the command and address to generate appropriate command signals as well as row and column addresses, which are applied to the system memory. In response to the commands and addresses, data are transferred between the system memory and the processor. The memory controller is often part of a system controller, which also includes bus bridge circuitry for coupling the processor bus to an expansion bus, such as a PCI bus.


The operating speed of memory devices has continuously increased, thereby providing ever-increasing memory bandwidths. However, this increase in memory bandwidth has not kept pace with increases in the operating speed of processors. One approach to increasing memory bandwidth is to access a larger number of memory devices in parallel with each other so that this data are read from or written to this larger number of memory devices with each memory access. One memory architecture that lends itself well to allowing are larger number of memory devices to be simultaneously accessed is a memory hub architecture. In a memory hub architecture, a system controller or memory hub controller is coupled to several memory modules, each of which includes a memory hub coupled to several memory devices. The memory hub efficiently routes memory requests and responses between the controller and the memory devices. Computer systems employing this architecture can have a higher bandwidth because a processor can read data from or write data to one memory module while another memory module is responding to a prior memory access. For example, the processor can output write data to the memory devices in one of the memory modules while the memory devices in another memory module are preparing to provide read data to the processor.


Although memory modules using memory hubs may provide increased memory bandwidth, the presence of memory hubs in the modules can make it difficult to coordinate the flow of command and address signals to the memory modules and the flow of data signals to and from the memory modules. A memory controller in a conventional memory system directly accesses memory devices in memory modules. The absence of any control device, such as a memory hub, between the memory controller and the memory devices makes it relatively easy for the memory controller to coordinate its operation with each of the memory modules. In particular, since the memory controller is actively controlling the activity in each of the memory modules, the memory controller is able to determine the status of memory accesses to each memory module based on the signals it has transmitted to or received from the memory modules. In contrast, the presence of a memory hub on each of the memory modules to control access to the memory devices makes it difficult for a controller to determine the status of memory requests to each memory module since the controller is no longer directly controlling the memory accesses. For example, the controller can no longer determine when a read memory request will be issued to the memory devices on that module. Since the controller cannot determine when the read memory request is issued, it cannot determine when the read data will be coupled from the memory module. As a result, the controller cannot determine when it can issue another read or write memory request to the same or another memory module. Similarly, the controller cannot determine if several memory requests issued to a memory module have been serviced, and thus cannot determine whether additional memory requests should be issued to the memory module. Other types of coordination issues will be apparent to one skilled in the art.


There is therefore a need for a memory system architecture that allows a controller or other device coupled to a plurality of hub-based memory modules to coordinate the issuing of memory requests to the memory modules.


SUMMARY OF THE INVENTION

A memory module hub controller is coupled to a plurality of memory modules each of which includes a memory hub coupled to a plurality of memory devices in the respective module. The memory hub controller stores a plurality of memory requests and transmits each stored memory request to the memory hub in one of the memory modules responsive to a flow control signal that is generated as a function of memory request status signals received from the memory hub to which the memory request is being transmitted. The memory hub stores the received memory requests and couples memory request signals corresponding to the stored memory requests to the memory devices in the memory module. The memory hub also transmits write data to or subsequently receives read data from the memory devices. The memory hub also generates memory request status signals identifying the memory requests that have been serviced by the memory devices coupled to the memory hub. The memory hub then couples the memory request status signals and any read data to the memory hub controller. The controller outputs the received read data and generates the flow control signal based on the memory request status signals to control the number of outstanding memory requests that are stored in each of the memory modules.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of a computer system according to one example of the invention in which a memory hub is included in each of a plurality of memory modules.



FIG. 2 is a block diagram of one example of a memory hub controller used in the computer system of FIG. 1 coupled to one example of a memory hub used in each of a plurality of memory modules in the computer system of FIG. 1.



FIGS. 3A and 3B are tables showing one example for the format of a memory request packet transmitted from the memory hub controller to the memory hub of FIG. 2.



FIGS. 4A and 4B are tables showing one example for the format of a memory response packet transmitted from the memory hub controller to the memory hub of FIG. 2.





DETAILED DESCRIPTION OF THE INVENTION

A computer system 100 according to one example of the invention is shown in FIG. 1. The computer system 100 includes a processor 104 for performing various computing functions, such as executing specific software to perform specific calculations or tasks. The processor 104 includes a processor bus 106 that normally includes an address bus, a control bus, and a data bus. The processor bus 106 is typically coupled to cache memory 108, which, as previously mentioned, is usually static random access memory (“SRAM”). Finally, the processor bus 106 is coupled to a system controller 110, which is also sometimes referred to as a “North Bridge” or “memory controller.”


The system controller 110 serves as a communications path to the processor 104 for a variety of other components. More specifically, the system controller 110 includes a graphics port that is typically coupled to a graphics controller 112, which is, in turn, coupled to a video terminal 114. The system controller 110 is also coupled to one or more input devices 118, such as a keyboard or a mouse, to allow an operator to interface with the computer system 100. Typically, the computer system 100 also includes one or more output devices 120, such as a printer, coupled to the processor 104 through the system controller 110. One or more data storage devices 124 are also typically coupled to the processor 104 through the system controller 110 to allow the processor 104 to store data or retrieve data from internal or external storage media (not shown). Examples of typical storage devices 124 include hard and floppy disks, tape cassettes, and compact disk read-only memories (CD-ROMs).


The system controller 110 also includes a memory hub controller 126 that is coupled to several memory modules 130a,b . . . n, which serve as system memory for the computer system 100. The memory modules 130 are preferably coupled to the memory hub controller 126 through a high-speed link 134, which may be an optical or electrical communication path or some other type of communications path. In the event the high-speed link 134 is implemented as an optical communication path, the optical communication path may be in the form of one or more optical fibers, for example. In such case, the memory hub controller 126 and the memory modules 130 will include an optical input/output port or separate input and output ports coupled to the optical communication path. The memory modules 130 are shown coupled to the memory hub controller 126 in a multi-drop or daisy chain arrangement in which the single high-speed link 134 is coupled to all of the memory modules 130. However, it will be understood that other topologies may also be used, such as a point-to-point coupling arrangement in which a separate high-speed link (not shown) is used to couple each of the memory modules 130 to the memory hub controller 126. A switching topology may also be used in which the memory hub controller 126 is selectively coupled to each of the memory modules 130 through a switch (not shown). Other topologies that may be used will be apparent to one skilled in the art.


Each of the memory modules 130 includes a memory hub 140 for controlling access to 6 memory devices 148, which, in the example illustrated in FIG. 2, are synchronous dynamic random access memory (“SDRAM”) devices. However, a fewer or greater number of memory devices 148 may be used, and memory devices other than SDRAM devices may, of course, also be used. The memory hub 140 is coupled to each of the memory devices 148 through a bus system 150, which normally includes a control bus, an address bus and a data bus.


One example of the memory hub controller 126 and the memory hub 140 of FIG. 1 is shown in FIG. 2. As shown in FIG. 2, the high-speed link 134 (FIG. 1) coupling the memory hub controller 126 to the memory hub 140 includes a high-speed downlink 154 and a high-speed uplink 156 that are separate from each other. As previously explained, the downlink 154 and uplink 156 may couple logic signals, optical signals, RF signals or any other type of signaling medium. The downlink 154 and uplink 156 may also be combined in a single high-speed bi-directional link, or the downlink 154 and the uplink 156 may be further divided into a larger number of communication links, such as separate links for the command, address and data signals. Other variations will be apparent to one skilled in the art.


With further reference to FIG. 2, the memory hub controller 126 includes a memory request queue 160 that receives from the processor 104 (FIG. 1) though the system controller 110 high level memory request signals, including command signals, address signals and, in the case of a memory write, write data signals. The memory request queue 160 also receives Request ID signals from a flow control unit 174 that uniquely identify each read request and each write request. These Request IDs are combined with corresponding high level read requests and write requests and stored in the memory request queue 160, preferably in the order they are received. The memory request signals stored in the request queue 160 include both read request signals and write request signals. The high level memory request signals and the Request ID signals will collectively be referred to as memory request signals. The memory request queue may but need not issue the signals to the memory modules 130 in the same order they are received.


The memory hub controller 126 also includes a memory response queue 170 that receives read response signals and write response signals from the system controller 110. The read response signals include read data signals as well as read status signals that identify the read request corresponding to the read data. The write response signals include write status signals that identify a write request that has been serviced by one of the memory modules. The response queue 170 stores the memory response signals in the order they are received, and it preferably, but not necessarily, couples the read data signals 172 to the system controller 110 in that same order. The memory response queue 170 also couples to the flow control unit 174 the read status signals 176 and the write status signals 178 so that the flow control unit 174 can determine which read requests and which write requests have been serviced. The flow control unit 174 makes this determination by comparing the status signals 176, 178 to the Request IDs generated by the flow control unit 174 and coupled to the memory request queue 160. The flow control unit 174 then outputs flow control signals to the memory request queue 160 to allow the memory request queue 160 to determine whether and when it should issue additional memory requests to each of the memory modules 130 (FIG. 1).


With further reference to FIG. 2, the memory hub 140 in each of the memory modules 130 includes a memory request queue 190 that receives one or more memory requests from the memory hub controller 126 through the high-speed downlink 154. The request queue 190 includes circuitry similar to that found in conventional memory controllers to reformat the memory requests to the command and address signals used by the memory devices 148 (FIG. 1) and to issue these reformatted signals to the memory devices 148 at the proper time and sequence. For example, the request queue 190 may convert addresses signals received from the memory hub controller 126 to row and column address signals. The request queue 190 can then output the row address signals to the memory devices 148 along with a row address strobe (“RAS”) signal to cause the row address signals to be latched into the memory devices 148. Similarly, the request queue 190 can output the column address signals to the memory devices 148 along with a column address strobe (“CAS”) signal to cause the column address signals to be latched into the memory devices 148. However, the nature of the reformatted command and address signals and also possibly data signals will depend upon the nature of the memory devices 148, as will be apparent to one skilled in the art.


When the request queue 190 has issued the reformatted read request signals to the memory devices 148 responsive to read request signals from the memory hub controller 126, it applies a Read Released signal to a flow control unit 194 to indicate that a read request has been issued to the memory devices 148. Similarly, when the request queue 190 has issued the reformatted write request signals to the memory devices 148 responsive to write request signals from the memory hub controller 126, it applies a Write Released signal to the flow control unit 194 to indicate that a write request has been issued to the memory devices 148. The Read Released and Write Released signals are used to formulate the read and write status signals 192, 196, respectively, that uniquely identify each read request and write request serviced by each of the memory modules 130. More specifically, the flow control unit 194 assigns a unique read response ID, which preferably corresponds to the Request ID coupled to the memory request queue 160 from the flow control unit 174, to each released read request. The flow control unit 194 also assigns a unique write response ID to each released write request, which preferably also corresponds to the Request ID. These response IDs are coupled to the response queue 170 as read and write status signals. As previously explained, these status signals are coupled to the memory response queue 170, which separates the status signals from any read data included in the response and couples the status signals to the flow control unit 174.


In response to a read memory request from the request queue 190, the memory devices 148 couples read data signals to the memory hub 140. These read data signals are stored in a read queue 200. The read queue 200 subsequently couples the read data signals to a response generator 204, which also receives the read status signals 192 from the flow control unit 194.


When the request queue 190 issues write requests, signals indicating that the write requests have been issued are stored in a write queue 206. The write queue 206 subsequently couples the signals indicative of issued write requests to the response generator 204, which also receives the write status signals 196 from the flow control unit 194.


The response generator 204 associates the read data signals from the read queue 200 with the read status signals 192 from the flow control unit 194, which, as previously mentioned, identifies the read request corresponding to the read data. The combined read data signals and read status signals 192 are combined into a read response 210. In response to the signals from the write queue 206, the response generator 204 generates a write response 214 containing the write status signals 192. The response generator 204 then transmits the read response 210 or the write response 214 to the response queue 170 in the memory hub controller 126. More specifically, the read data signals are transmitted from the response generator 204 to the response queue 170. The read and write status signals 192, 196, respectively, are also transmitted from the response generator 204 to the response queue 170, either alone in the case of some of the write status signals or in combination with read data signals in the case of the read status signals or the other write status signals. Thus, the read response 210 contains the read data as well as information uniquely identifying the read request corresponding to the read data, and the write response 214 contains information uniquely identifying each write request serviced by the memory module 130.


The number of write requests or read requests that can be outstanding in any memory module 130 before the memory request queue 160 will not issue any additional memory requests can be either fixed or user selectable by programming either the memory hub controller 126 with values indicative of the allowable request queue depth. Further, the number of read requests that can be outstanding may be the same or be different from the number of write requests that can be outstanding.


An example of a memory request coupled from the memory request queue 160 in the memory hub controller 126 to the memory request queue 190 in the memory hubs 140 is shown in FIG. 3A. In the example shown in FIG. 3A, the memory request is in the form of a memory request packet 220 containing several packet words, although the memory requests can have other formats, as will be apparent to one skilled in the art. The first 4 bits of a first packet word 224 are a Command code that identifies the type of memory request being issued by the request queue 160. These command codes are identified in FIG. 3B. For example, a command code of “0000” signifies a no operation command, a command code of “0001” signifies request to write between 1 and 16 double words (i.e., groups of 32 bits), a command code of “0010” signifies request to read between 1 and 16 double words, etc. Returning to FIG. 3A, the next 6 bits of the first packet word 224 comprise the Request ID issued by the flow control unit 174 (FIG. 2) that uniquely identifies each memory request. As previously explained, by uniquely identifying the memory requests, the flow control unit 174 in the memory hub controller 126 can determine which memory requests have been serviced. The final 22 bits of the first packet word 224 are the high order bits 37:16 of a memory address to which the memory request is directed.


The first 2 bits of a second packet word 228 are unused in the packet example shown in FIG. 3A. The next 15 bits are the low order bits 15:2 of the memory address to which the memory request is directed. There are no address bits 1:0 transmitted because such address bits would select specific bits in each byte of data and all memory accesses are to at least a byte of data.


The memory request queue 190 in one of the memory hubs 140 may use the high order bits 37:16 as a row address and the low order bits 15:2 as a column address, or it may use these addresses in some other manner. The next 4 bits of the second packet word 228 are Count 3:0 bits that specify the number of double words or bytes that will be read from or written to the memory devices 148 on the memory module. The final 16 bits of the second packet word 228 consist of mask data Mask 15:0 that can be coupled to the memory hub controller 126 instead of read data called for by a read memory request. Masking data in this manner is well known to one skilled in the art.


Following the first 2 packet words 224, 228 for a write request is at least one packet word 230 of write data. The number of packet words 230 will depend upon the value of Count 3:0 in the second packet word 228 and whether the memory write command is for writing a double word or a byte. For example, a Count 3:0 value of “0100” (i.e., 4) in a packet requesting a double word write will require 4 packet words 230 of write data. A Count 3:0 value of 4 in a packet requesting a byte write will require only a single packet word 230 of write data. A packet 220 for a read request will not, of course, include any packet words 230 following the first two packet words 224, 228.


An example of a memory response 210 or 214 coupled from the response generator 204 in one of the memory hubs 140 to the memory response queue 170 in the memory hub controller 126 is shown in FIG. 4A. The memory response is in the form of a memory response packet 240 containing several packet words, although the memory requests can have other formats as will be apparent to one skilled in the art. The first 4 bits of a first packet word 244 is a Response Code that identifies the type of memory response being transmitted by the response generator 204. These Response codes are shown in FIG. 4B. For example, a Response code of “000” again signifies a “No Operation” response, and a Response code of “001” signifies a “Read Response,” which will return read data and read status signals indicating which read request has been serviced to the response queue 170 in the memory hub controller 126. A Response code of “010” signifies a “Write Response,” which will provide write status signals to the response queue 170 in the memory hub controller 126 indicating which write request has been serviced. Finally, a Response code of “011” signifies a “Write and Read Response,” which will include read status signals and write status signals in a packet containing read data. As mentioned above, the write status signals in the packet will not pertain to the same memory request as the memory request for the read data signals in the packet. In general, it is more efficient to provide write status signals by including them with read data in a Write and Read Response since only one response is required to provide both read and write status information. However, if data is not being read from a memory module 130, then it may be necessary to return a “Write Response” to provide the memory hub controller 126 with information about the status of write requests. However, “Write Response” packets can be delayed, if desired, until a predetermined number of outstanding write responses have accumulated in any one of the memory modules 130.


Returning to FIG. 4A, the next 6 bits of the first packet word 244 are the Read Response ID generated by the flow control unit 194, which uniquely identifies each memory read request. This Read Response ID will generally correspond to the Request ID in the first packet word 224 of each read request packet 220. The Read Response ID corresponds to the read status signals referred to above. The next 6 bits of the first packet word 244 are a Write Response ID also generated by the flow control unit 194 that uniquely identifies each memory write request. This Write Response ID will again generally correspond to the Request ID in the first packet word 224 of each write request packet 220. The Write Response ID corresponds to the write status signals referred to above. The flow control unit can compare these Response ID values to the Request values to determine if any read or write memory request issued by the memory hub controller 126 has been serviced. The next 4 bits of the first packet word 244 are Dword Count bits that specify the number of double words of read data will be included in the packet 240. The final 13 bits of the first packet word 244 are unused. If the response packet 240 is a read response packet, the first packet word 244 will be followed by one or more read data packet words 248. The number of read data packet words will, of course, depend on the value of Dword Count in the packet word 244.


From the foregoing it will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without deviating from the spirit and scope of the invention. For example, although the memory hub controller 126 has been described as permitting a specific number or programmable number of memory requests to be outstanding in any memory module 130, other operating protocols are possible. Also, rather than simply delay issuing memory requests to a memory module 130 having too many outstanding memory requests, the memory hub controller 126 may instead route memory requests to a different memory module 130. Accordingly, the invention is not limited except as by the appended claims.

Claims
  • 1. A system comprising: at least one memory device operable to output read data signals; anda response generator coupled to the at least one memory device, the response generator having a first input terminal operable to receive the read data signals from the at least one memory device, a second input terminal operable to receive read status signals, the read status signals identifying read requests corresponding to each read data signal, and an output terminal, the response generator operable to generate read responses each comprising one of the read data signals and corresponding read status signals, the response generator further being operable to transmit the read responses from the output terminal.
  • 2. The device of claim 1 wherein the first input terminal is coupled to a flow control unit and the second input terminal is coupled to a read queue.
  • 3. The device of claim 1 further comprising a third input terminal operable to receive write signals, the second input terminal further operable to receive write status signals, the generator further being operable to generate write responses each comprising the write status signal.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of pending U.S. patent application Ser. No. 11/881,010, filed Jul. 24, 2007, which is a continuation of U.S. patent application Ser. No. 10/963,824, filed Oct. 12, 2004, issued as U.S. Pat. No. 7,249,236, which is a continuation of U.S. patent application Ser. No. 10/232,473, filed Aug. 29, 2002, issued as U.S. Pat. No. 6,820,181.

US Referenced Citations (275)
Number Name Date Kind
4045781 Levy et al. Aug 1977 A
4240143 Besemer et al. Dec 1980 A
4245306 Besemer et al. Jan 1981 A
4253144 Bellamy et al. Feb 1981 A
4253146 Bellamy et al. Feb 1981 A
4707823 Holdren et al. Nov 1987 A
4724520 Athanas et al. Feb 1988 A
4930128 Suzuki et al. May 1990 A
5133059 Ziegler et al. Jul 1992 A
5241506 Motegi et al. Aug 1993 A
5243703 Farmwald et al. Sep 1993 A
5251303 Fogg, Jr. et al. Oct 1993 A
5269022 Shinjo et al. Dec 1993 A
5317752 Jewett et al. May 1994 A
5319755 Farmwald et al. Jun 1994 A
5355391 Horowitz et al. Oct 1994 A
5432823 Gasbarro et al. Jul 1995 A
5432907 Picazo, Jr. et al. Jul 1995 A
5442770 Barratt Aug 1995 A
5461627 Rypinski Oct 1995 A
5465229 Bechtolsheim et al. Nov 1995 A
5465343 Henson et al. Nov 1995 A
5479370 Furuyama et al. Dec 1995 A
5497476 Oldfield et al. Mar 1996 A
5502621 Schumacher et al. Mar 1996 A
5544319 Acton et al. Aug 1996 A
5566325 Bruce, II et al. Oct 1996 A
5577220 Combs et al. Nov 1996 A
5581767 Katsuki et al. Dec 1996 A
5606717 Farmwald et al. Feb 1997 A
5619670 Shindo Apr 1997 A
5638334 Farmwald et al. Jun 1997 A
5638534 Mote, Jr. Jun 1997 A
5659713 Goodwin et al. Aug 1997 A
5659798 Blumrich et al. Aug 1997 A
5715456 Bennett et al. Feb 1998 A
5729709 Harness Mar 1998 A
5796413 Shipp et al. Aug 1998 A
5818844 Singh et al. Oct 1998 A
5819304 Nilsen et al. Oct 1998 A
5822255 Uchida Oct 1998 A
5832250 Whittaker Nov 1998 A
5838931 Regenold et al. Nov 1998 A
5875352 Gentry et al. Feb 1999 A
5875454 Craft et al. Feb 1999 A
5887159 Burrows Mar 1999 A
5928343 Farmwald et al. Jul 1999 A
5953743 Jeddeloh Sep 1999 A
5966724 Ryan Oct 1999 A
5973935 Schoenfeld et al. Oct 1999 A
5973951 Bechtolsheim et al. Oct 1999 A
5978567 Rebane et al. Nov 1999 A
6006340 O'Connell Dec 1999 A
6023726 Saksena Feb 2000 A
6029250 Keeth Feb 2000 A
6031241 Silfvast et al. Feb 2000 A
6033951 Chao Mar 2000 A
6061263 Boaz et al. May 2000 A
6061296 Ternullo, Jr. et al. May 2000 A
6067262 Irrinki et al. May 2000 A
6073190 Rooney Jun 2000 A
6076139 Welker et al. Jun 2000 A
6079008 Clery, III Jun 2000 A
6092158 Harriman et al. Jul 2000 A
6098158 Lay et al. Aug 2000 A
6105075 Ghaffari Aug 2000 A
6125431 Kobayashi Sep 2000 A
6128703 Bourekas et al. Oct 2000 A
6128706 Bryg et al. Oct 2000 A
6134624 Burns et al. Oct 2000 A
6137709 Boaz et al. Oct 2000 A
6144587 Yoshida Nov 2000 A
6145033 Chee Nov 2000 A
6157743 Goris et al. Dec 2000 A
6157962 Hodges et al. Dec 2000 A
6167465 Parvin et al. Dec 2000 A
6167486 Lee et al. Dec 2000 A
6175571 Haddock et al. Jan 2001 B1
6185352 Hurley Feb 2001 B1
6185676 Poplingher et al. Feb 2001 B1
6186400 Dvorkis et al. Feb 2001 B1
6191663 Hannah Feb 2001 B1
6201724 Ishizaki et al. Mar 2001 B1
6212590 Melo et al. Apr 2001 B1
6216178 Stracovsky et al. Apr 2001 B1
6216219 Cai et al. Apr 2001 B1
6223301 Santeler et al. Apr 2001 B1
6233376 Updegrove May 2001 B1
6243769 Rooney Jun 2001 B1
6243831 Mustafa et al. Jun 2001 B1
6246618 Yamamoto et al. Jun 2001 B1
6247107 Christie Jun 2001 B1
6249802 Richardson et al. Jun 2001 B1
6252821 Nizar et al. Jun 2001 B1
6256692 Yoda et al. Jul 2001 B1
6272609 Jeddeloh Aug 2001 B1
6285349 Smith Sep 2001 B1
6294937 Crafts et al. Sep 2001 B1
6301637 Krull et al. Oct 2001 B1
6327642 Lee et al. Dec 2001 B1
6330205 Shimizu et al. Dec 2001 B2
6330639 Fanning et al. Dec 2001 B1
6347055 Motomura Feb 2002 B1
6349363 Cai et al. Feb 2002 B2
6356573 Jonsson et al. Mar 2002 B1
6367074 Bates et al. Apr 2002 B1
6370068 Rhee Apr 2002 B2
6370611 Callison et al. Apr 2002 B1
6373777 Suzuki Apr 2002 B1
6381190 Shinkai Apr 2002 B1
6389514 Rokicki May 2002 B1
6392653 Malandain et al. May 2002 B1
6401213 Jeddeloh Jun 2002 B1
6405280 Ryan Jun 2002 B1
6421744 Morrison et al. Jul 2002 B1
6430696 Keeth Aug 2002 B1
6433785 Garcia et al. Aug 2002 B1
6434639 Haghighi Aug 2002 B1
6434696 Kang Aug 2002 B1
6434736 Schaecher et al. Aug 2002 B1
6438622 Haghighi et al. Aug 2002 B1
6438668 Esfahani et al. Aug 2002 B1
6449308 Knight, Jr. et al. Sep 2002 B1
6453393 Holman et al. Sep 2002 B1
6460108 McCoskey et al. Oct 2002 B1
6460114 Jeddeloh Oct 2002 B1
6462978 Shibata et al. Oct 2002 B2
6463059 Movshovich et al. Oct 2002 B1
6467013 Nizar Oct 2002 B1
6470422 Cai et al. Oct 2002 B2
6473828 Matsui Oct 2002 B1
6477592 Chen et al. Nov 2002 B1
6477614 Leddige et al. Nov 2002 B1
6477621 Lee et al. Nov 2002 B1
6479322 Kawata et al. Nov 2002 B2
6487628 Duong et al. Nov 2002 B1
6490188 Nuxoll et al. Dec 2002 B2
6496193 Surti et al. Dec 2002 B1
6496909 Schimmel Dec 2002 B1
6501471 Venkataraman et al. Dec 2002 B1
6502161 Perego et al. Dec 2002 B1
6505287 Uematsu Jan 2003 B2
6523092 Fanning Feb 2003 B1
6523093 Bogin et al. Feb 2003 B1
6526483 Cho et al. Feb 2003 B1
6539490 Forbes et al. Mar 2003 B1
6552564 Forbes et al. Apr 2003 B1
6553476 Ayaki et al. Apr 2003 B1
6587912 Leddige et al. Jul 2003 B2
6590816 Perner Jul 2003 B2
6594713 Fuoco et al. Jul 2003 B1
6594722 Willke, II et al. Jul 2003 B1
6598154 Vaid et al. Jul 2003 B1
6615325 Mailloux et al. Sep 2003 B2
6622227 Zumkehr et al. Sep 2003 B2
6628294 Sadowsky et al. Sep 2003 B1
6629220 Dyer Sep 2003 B1
6631440 Jenne et al. Oct 2003 B2
6633959 Arimilli et al. Oct 2003 B2
6636110 Ooishi et al. Oct 2003 B1
6646929 Moss et al. Nov 2003 B1
6647470 Janzen Nov 2003 B1
6658509 Bonella et al. Dec 2003 B1
6662304 Keeth et al. Dec 2003 B2
6667895 Jang et al. Dec 2003 B2
6681292 Creta et al. Jan 2004 B2
6681302 Cho et al. Jan 2004 B2
6697926 Johnson et al. Feb 2004 B2
6704817 Steinman et al. Mar 2004 B1
6718440 Maiyuran et al. Apr 2004 B2
6721195 Brunelle et al. Apr 2004 B2
6724685 Braun et al. Apr 2004 B2
6728800 Lee et al. Apr 2004 B1
6735679 Herbst et al. May 2004 B1
6735682 Segelken et al. May 2004 B2
6745275 Chang Jun 2004 B2
6751703 Chilton Jun 2004 B2
6754812 Abdallah et al. Jun 2004 B1
6756661 Tsuneda et al. Jun 2004 B2
6760833 Dowling Jul 2004 B1
6771538 Shukuri et al. Aug 2004 B2
6772295 Spencer et al. Aug 2004 B2
6775747 Venkatraman Aug 2004 B2
6782466 Steele et al. Aug 2004 B1
6788104 Singh et al. Sep 2004 B2
6789173 Tanaka et al. Sep 2004 B1
6792059 Yuan et al. Sep 2004 B2
6792496 Aboulenein et al. Sep 2004 B2
6795899 Dodd et al. Sep 2004 B2
6799246 Wise et al. Sep 2004 B1
6799268 Boggs et al. Sep 2004 B1
6804760 Wiliams Oct 2004 B2
6804764 LaBerge et al. Oct 2004 B2
6807630 Lay et al. Oct 2004 B2
6816947 Huffman Nov 2004 B1
6820181 Jeddeloh et al. Nov 2004 B2
6823023 Hannah Nov 2004 B1
6829705 Smith Dec 2004 B2
6832303 Tanaka Dec 2004 B2
6889304 Perego et al. May 2005 B2
6928528 Hewitt Aug 2005 B1
6941433 Libby et al. Sep 2005 B1
6980042 LaBerge Dec 2005 B2
7107415 Jeddeloh et al. Sep 2006 B2
7117316 Jeddeloh Oct 2006 B2
7120727 Lee et al. Oct 2006 B2
7133972 Jeddeloh Nov 2006 B2
7162567 Jeddeloh Jan 2007 B2
7188219 Jeddeloh Mar 2007 B2
7213082 Jeddeloh May 2007 B2
7254075 Woo et al. Aug 2007 B2
7315053 Hosomi et al. Jan 2008 B2
7318130 Morrow et al. Jan 2008 B2
7716444 Jeddeloh et al. May 2010 B2
20010039612 Lee Nov 2001 A1
20020002656 Honma et al. Jan 2002 A1
20020078298 Jeddeloh Jun 2002 A1
20020112119 Halbert et al. Aug 2002 A1
20020116588 Beckert et al. Aug 2002 A1
20020120709 Chow et al. Aug 2002 A1
20020144064 Fanning Oct 2002 A1
20020178319 Sanchez-Olea Nov 2002 A1
20030005223 Coulson et al. Jan 2003 A1
20030014578 Pax Jan 2003 A1
20030015899 Clay Jan 2003 A1
20030043158 Wasserman et al. Mar 2003 A1
20030043426 Baker et al. Mar 2003 A1
20030093630 Richard et al. May 2003 A1
20030156639 Liang Aug 2003 A1
20030163649 Kapur et al. Aug 2003 A1
20030177320 Sah et al. Sep 2003 A1
20030193927 Hronik Oct 2003 A1
20030223295 Ozguz et al. Dec 2003 A1
20030227798 Pax Dec 2003 A1
20030229762 Maiyuran et al. Dec 2003 A1
20030229770 Jeddeloh Dec 2003 A1
20030235072 Kim et al. Dec 2003 A1
20040006671 Handgen et al. Jan 2004 A1
20040015666 Rojas et al. Jan 2004 A1
20040019728 Sharma Jan 2004 A1
20040022094 Radhakrishnan et al. Feb 2004 A1
20040024959 Taylor Feb 2004 A1
20040024978 Jeddeloh Feb 2004 A1
20040034753 Jeddeloh Feb 2004 A1
20040034825 Jeddeloh Feb 2004 A1
20040039886 Christofferson et al. Feb 2004 A1
20040044833 Ryan Mar 2004 A1
20040049649 Durrant Mar 2004 A1
20040064602 George Apr 2004 A1
20040122988 Han et al. Jun 2004 A1
20040158677 Dodd Aug 2004 A1
20040170196 Susnow Sep 2004 A1
20040260909 Lee et al. Dec 2004 A1
20040268061 Khare et al. Dec 2004 A1
20050060533 Woo et al. Mar 2005 A1
20050066137 Jeddeloh et al. Mar 2005 A1
20050071542 Weber et al. Mar 2005 A1
20050078506 Rao et al. Apr 2005 A1
20050105350 Zimmerman May 2005 A1
20050149774 Jeddeloh et al. Jul 2005 A1
20050223161 Jeddeloh Oct 2005 A1
20050246558 Ku Nov 2005 A1
20050286506 LaBerge Dec 2005 A1
20060085616 Zeighami et al. Apr 2006 A1
20060168407 Stern Jul 2006 A1
20060200642 LaBerge Sep 2006 A1
20060206679 Jeddeloh et al. Sep 2006 A1
20060212655 Jeddeloh et al. Sep 2006 A1
20060212666 Jeddeloh Sep 2006 A1
20060288172 Lee et al. Dec 2006 A1
20070011392 Lee et al. Jan 2007 A1
20070033353 Jeddeloh Feb 2007 A1
20070055817 Jeddeloh Mar 2007 A1
20070088915 Archambault et al. Apr 2007 A1
20070113027 Jeddeloh May 2007 A1
Foreign Referenced Citations (20)
Number Date Country
0395559 Oct 1990 EP
0843261 May 1998 EP
0849685 Jun 1998 EP
1199637 Apr 2002 EP
2244157 Nov 1991 GB
06004401 Jan 1994 JP
06028180 Feb 1994 JP
08185383 Jul 1996 JP
10214223 Aug 1998 JP
10228413 Aug 1998 JP
000067533 Nov 2000 KR
491970 Jun 2002 TW
WO-9318459 Sep 1993 WO
WO-9319422 Sep 1993 WO
WO-9704401 Feb 1997 WO
WO-9923570 May 1999 WO
WO-9934294 Jul 1999 WO
WO-0026798 May 2000 WO
WO-0043902 Jul 2000 WO
WO-0227499 Apr 2002 WO
Related Publications (1)
Number Date Country
20100191924 A1 Jul 2010 US
Continuations (3)
Number Date Country
Parent 11881010 Jul 2007 US
Child 12754011 US
Parent 10963824 Oct 2004 US
Child 11881010 US
Parent 10232473 Aug 2002 US
Child 10963824 US