Apparatus and method for distributed memory control in a graphics processing system

Information

  • Patent Grant
  • 7180522
  • Patent Number
    7,180,522
  • Date Filed
    Tuesday, August 31, 2004
    20 years ago
  • Date Issued
    Tuesday, February 20, 2007
    17 years ago
Abstract
A distributed memory controller memory system for a graphics processing system having addressable memory areas each coupled to a respective memory controller. The memory controllers are further coupled to each other through a memory controller bus upon which a memory access request and data may be passed from one memory controller to other memory controller. A memory access request to a memory location in one addressable memory area, but received by a memory controller coupled to another addressable memory area, is passed through the memory controller bus from the receiving memory controller to the memory controller coupled to the addressable memory area in which the requested location is located in order to service the memory access request. Additional memory controllers coupled to a respective addressable memory area may be included in the memory system. The memory controllers are coupled to the memory controller bus in order to receive and pass memory access requests from the other memory controllers.
Description
TECHNICAL FIELD

The present invention is related generally to the field of computer graphics, and more particularly, to a memory system for use in a computer graphics processing system.


BACKGROUND OF THE INVENTION

A heterogeneous memory system is a memory system where several different memories, or levels of memory, are used to satisfy memory demands of an computer application. An example of an application for a heterogeneous memory system is in graphics processing systems. Different levels of memory are used by a graphics processing system to facilitate graphics processing and rendering of graphics images on a display. A first level of memory is typically embedded memory that is fabricated directly on the same semiconductor substrate as a graphics processor. Embedded memory can provide data to the graphics processor at very low access times, and consequently, increase the speed at which graphics data may be processed. A second level of memory is typically memory that is external to the device, but located on the same graphics card as the graphics processor. Memory such as this is commonly referred to as external, or local memory. A third level of memory is AGP memory, or host memory that the graphics processor can access through a system bus. Host memory generally has the greatest access time of the three levels of memories because the graphics processor can only access the AGP memory via a system bus and several different memory and bus controllers. Although local memory can provide data more quickly than the host memory, it still is considerably slower than the embedded memory of the first level of memory.


For a conventional heterogeneous memory system, there are two typical arrangements. A first example of a heterogeneous memory system is arranged with a single memory controller to handle all memory accesses. Such an arrangement is illustrated in FIG. 1. The memory system 10 includes a central memory controller 12 coupled to both memory 20 through memory bus 16, and memory 22 through memory bus 18. The memory 20 may be representative of embedded memory, and the memory 22 may be representative of external memory. In operation, the central memory controller 12 receives memory access requests from various requesting entities, such as a graphics processor, over buses 14a–n. The central memory controller 12 services the various memory access requests by determining whether the requested memory address is located in the memory 20 or the memory 22. The appropriate memory device is accessed and data is written to or read therefrom. An arrangement such as memory system 10 has the advantage that additional memory may be easily added because all memory access requests are serviced by the central memory controller 12. For the same reason, the various memory access requests can all be handled seamlessly by the central memory controller 12. That is, when a memory access request is made, only the central memory controller 12 must determine which memory, either memory 20 or memory 22, to access. However, a problem with the arrangement of memory system 10 is that there are physical limitations as to the number of buses 14a–n that may be routed to the memory controller 12. Additionally, as the complexity of the central memory controller 12 increases to accommodate a greater number of memory access requests, the amount of space the central memory controller occupies also increases. Thus, space overhead issues become a concern in applications where small graphics processing systems are desired.


A second example of a heterogeneous memory system is shown in FIG. 2. Memory system 30 addresses some of the concerns raised by the memory system 10 of FIG. 1. The memory system 30 includes a central memory controller 12 coupled to a,memory 20 through a memory bus 16. The central memory controller 12 services only the memory access requests made to memory 20. The memory system 30 also includes memory 22 directly coupled to a requesting entity through memory bus 32. Thus, memory access requests to memory 22 may be only made over the memory bus 32. The memory 20 may represent embedded memory, while the memory 22 may represent local memory. As illustrated in FIG. 2, all memory access requests to memory 20 are controlled by the central memory controller 12. However, access to the memory 22, is controlled directly by the requesting entity coupled to the bus 32. That is, access to memory 22 can be made only by the requesting entity hardwired to the bus 32.


The memory system 30 does, to some degree, resolve the issues with regards to the physical limitations of routing a plurality of request lines to a single central memory controller, as well as space overhead issues resulting from the complexity of using a central memory controller. However, a problem with the memory system 30 is that the allocation of available memory is fixed according to the design of the circuitry. That is, the memory 22 may be accessed only by the requesting entity to which it is coupled through bus 32. Any available memory in the memory 22 cannot be reallocated for another purpose, such as storing overflow data from the memory 20. Furthermore, memory access requests must be delegated prior to being made either to the central memory controller 12 or the memory 22, rather than having all memory access requests simply handled by a single central memory controller. Moreover, adding additional memory to the memory system 30 is made more difficult by the fixed arrangement. Additional memory cannot simply be reallocated, but must be added to supplement either memory 20 or memory 22, but not both.


Therefore, there is a need for a memory system where the number of memory access request lines to a memory controller is reduced and where the available memory may be allocated efficiently.


SUMMARY OF THE INVENTION

The present invention relates to a distributed memory controller memory system for a graphics processing system having addressable memory areas, each of which is coupled to a respective memory controller. Each memory controller accesses the addressable memory area to which it is coupled. The memory controllers are further coupled to each other through a memory controller bus upon which a memory access request and data may be passed from one memory controller to other memory controller. A memory access request to a memory location in one addressable memory area, but received by a memory controller coupled to another addressable memory area, is passed through the memory controller bus from the receiving memory controller to the memory controller coupled to the addressable memory area in which the requested location is located in order to service the memory access request. Additional addressable memory areas coupled to a respective memory controller may also be included in the memory system. The additional memory controllers are also coupled to the memory controller bus in order to receive and pass memory access requests from the other memory controllers. The addressable memory locations may be defined by values stored in registers in the respective memory controller in order for the memory controller to determine whether the requested location is within the memory area to which it is coupled.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of a conventional heterogeneous memory system.



FIG. 2 is a block diagram of an alternative conventional heterogeneous memory system.



FIG. 3 is a block diagram of a computer system in which embodiments of the present invention are implemented.



FIG. 4
a is a block diagram of a memory system having a distributed memory controller arrangement according to an embodiment of the present invention.



FIG. 4
b is a block diagram of a memory system having a distributed memory controller arrangement according to another embodiment of the present invention.



FIG. 5 is a block diagram of a graphics processing system including a distributed memory controller arrangement according to another embodiment of the present invention.





DETAILED DESCRIPTION OF THE INVENTION

Embodiments of the present invention provide for a distributed memory controller arrangement that may be substituted for a memory system having a conventional central memory controller arrangement. Multiple memory controllers are arranged such that each memory controller is coupled to at least one addressable memory area which is accessible by the memory controller to which the addressable memory area is coupled. Each memory controller receives direct memory access requests from distinct requesting entities. The multiple memory controllers are coupled together by a memory controller bus, upon which data and indirect memory access requests may be passed from one memory controller to another if the requested address is outside of the addressable memory area to which the memory controller receiving the direct request is coupled.


Certain details are set forth to provide a sufficient understanding of the invention. However, it will be clear to one skilled in the art that the invention may be practiced without these particular details. In other instances, well-known circuits, control signals, timing protocols, and software operations have not been shown in detail in order to avoid unnecessarily obscuring the invention.



FIG. 3 illustrates a computer system 40 in which embodiments of the present invention are implemented. The computer system 40 includes a processor 42 coupled to a host memory 44 through a memory/bus interface 46. The memory/bus interface 46 is coupled to an expansion bus 48, such as an industry standard architecture (ISA) bus or a peripheral component interconnect (PCI) bus. The computer system 40 also includes one or more input devices 50, such as a keypad or a mouse, coupled to the processor 42 through the expansion bus 48 and the memory/bus interface 46. The input devices 50 allow an operator or an electronic device to input data to the computer system 40. One or more output devices 52 are coupled to the processor 42 to provide output data generated by the processor 42. The output devices 52 are coupled to the processor 42 through the expansion bus 48 and memory/bus interface 46. Examples of output devices 52 include printers and a sound card driving audio speakers. One or more data storage devices 54 are coupled to the processor 42 through the memory/bus interface 46 and the expansion bus 48 to store data in, or retrieve data from, storage media (not shown). Examples of storage devices 54 and storage media include fixed disk drives, floppy disk drives, tape cassettes and compact-disc read-only memory drives.


The computer system 40 further includes a graphics processing system 100 coupled to the processor 42 through the expansion bus 48 and memory/bus interface 46. Optionally, the graphics processing system 100 may be coupled to the processor 42 and the host memory. 44 through other types of architectures. For example, the graphics processing system 100 may be coupled through the memory/bus interface 46 and a high speed bus 56, such as an accelerated graphics port (AGP), to provide the graphics processing system 100 with direct memory access (DMA) to the host-memory 44. That is, the high speed bus 56 and memory bus interface 46 allow the graphics processing system 100 to read from and write to the host memory 44 without the intervention of the processor 42. Thus, data may be transferred to, and from, the host memory 44 at transfer rates much greater than over the expansion bus 48. A display 58 is coupled to the graphics processing system 100 to display graphics images. The display 58 may be any type of display, such as a cathode ray tube (CRT), a field emission display (FED), a liquid crystal display (LCD), or the like, which are commonly used for desktop computers, portable computers, and workstation or server applications.



FIG. 4 illustrates a memory system 200 according to an embodiment of the present invention. The memory system 200 includes separate memory controllers 202, 222, 242, and 262. Each of the memory controllers 202, 222, 242, and 262 controls and accesses a respective memory 212, 232, 252, and 272 through a memory bus that couples the memory controller to a memory. The memory controllers 202,222, 242, and 262 are also coupled to each other through a memory controller bus 216. Memory access requests, as well as data, may be transferred through the memory controller bus 216 from one memory controller to another.


Each of the memory controllers 202, 222, 242, and 262 is also coupled to a set of memory access request lines 208a–d on which the respective memory controller directly receives memory access requests. A memory controller receives direct memory access requests from those requesting entities coupled to its particular request lines. For example, the memory controller 202 will receive direct memory access requests over the memory access request lines 208a. In determining which requesting entities a particular memory controller should receive memory access requests, factors such as physical proximity of the requesting entity to a memory controller, the memory device which a requesting entity is most likely to access, and desired access speed may be considered. As will be discussed in greater detail below, indirect memory access requests can be made by one memory controller to another through the memory controller bus 216 if the requested address is not in the addressable memory area of the memory to which the memory controller receiving the direct memory access request is coupled.


Included in each memory controller 202, 222, 242, and 262 are a respective start address register (SAR) 204a–d and a respective memory size register 206a–d (MSR). With respect to the memory controller 202, the SAR 204a stores the start address of the addressable memory area of the memory 212, and the MSR 206a stores the size or the amount of available addressable memory area of the memory 212. Similarly, the remaining SARs 204b–d and MSRs 206b–d store the respective start addresses and sizes of the addressable memory area for the memory to which the memory controller is coupled. The values stored in the SARs and MSRs of the memory controllers may be programmed by an graphics application executing on the host processor 42 (FIG. 3) or, as will be described later, a graphics processor that is designed to perform graphics functions. The graphics application may update the values stored in the SARs and MSRs during execution in order to reallocate the addressable memory area. By storing the start address and size for the addressable area which each memory controller 202, 222, 242, and 262 controls, a memory controller can determine whether a direct memory access request it receives should be passed to another memory controller if the requested address is not within the range of the memory to which the memory controller receiving the direct memory access request is coupled.


Although the memory system 200 has been described as storing the start address and the amount of available addressable memory area for a memory, it will be appreciated that other values can be used to define the memory as well, such as, the start address and the end address of an addressable memory area. Thus, the particular type of values that are stored by the memory controllers to define the addressable memory area to which it is coupled are details that may be changed, but the resulting memory system will still remain within the scope of the present invention.


The following description of the operation of the memory system 200 is provided merely by way of an example, and should not be interpreted as limiting the scope of the invention. A person of ordinary skill in the art will appreciate that some of the details of the following example, such as the start addresses and size of the addressable memory area, have been selected merely for the purposes of the following example.


In the present example, the values programmed and stored in the SARs and MSRs for the memory controller 202 are 0000 and 1000, for the memory controller 222 are 1000 and 1000, for the memory controller 242 are 2000 and 2000, and for the memory controller 262 are 4000 and 3000. A direct memory access request is received by the memory controller 222 to access memory address 1A00. Based on the values stored in the SAR 204b and MSR 206b, that is, 1000 and 1000, respectively, the memory controller 222 determines that the requested address 1A00is within the addressable memory area of the memory 232, and services the direct memory access request.


Another direct memory access request is received by the memory controller 222, but this time it is to access memory address 0C00. The memory controller 222 determines that the requested address is not within the addressable memory area of the memory 232 and must make an indirect memory access request to another memory controller in order to service the memory access request. The requested address is less than the 1000 value stored in the SAR 204b, and consequently, the memory controller 222 passes an indirect memory access request to a memory controller having a lower starting memory address through the memory controller bus 216, namely, to the memory controller 202. The memory controller 202 receives the indirect memory access request and determines whether the memory address of the indirect memory access request, namely 0C00, is within the addressable memory area of the memory 212. Based on the values stored in the SAR 204a and the MSR 206a, that is 0000 and 1000, respectively, the memory controller 202 determines that the address 0C00 is within the memory 212, and consequently services the memory access request. If the memory access request is a read command, then the memory controller 202 accesses the requested address, retrieves the data, and passes the data back to the memory controller 222. The memory controller 222 then completes the direct memory access request by providing the data read from the memory 212 by the memory controller 202 to the requesting entity. If the memory access request is a write command, the data is provided to the memory controller 202 along with the requested address through the memory controller bus 216 and is written into the memory 212 by the memory controller 202.


The distributed memory controller arrangement of the memory system 200 addresses the potential problem with physical limitations of the number of memory access request lines that may be routed to a central memory controller by dividing the total number of memory access request lines among different controllers. Thus, the number of memory access request lines to any one memory controller is reduced. Furthermore, the available memory of memories 212, 232, 252, and 272 may be reallocated if desired, and any memory added to the memory system 200 may be utilized in an efficient manner by changing the values stored in the SARs and MSRs of the memory controllers.


A memory system 201 according to another embodiment of the present invention is shown in FIG. 4b. The memory system 201 is similar to the memory system 200 of FIG. 4a, except that memory controller 243 is coupled to both memories 253 and 259. Although the memory system 200 (FIG. 4a) is arranged such that there is a one-to-one correspondence between memory controllers 202, 222, 242, and 262, and a respective memory 212, 232, 252, and 272, the memory system 201 is arranged such that more than one memory device coupled to a single memory controller. The operation of the memory system 201 is generally the same as for the memory system 200, except that the value stored in the MSR 207c should span the combined size of memories 253 and 259. In this way, the memory controller 243 is able to recognize memory access requests for both the memories 253 and 259.


Illustrated in FIG. 5 is another embodiment of the present invention. A memory system similar to the memory system 200 (FIG. 4a) is used in the context of the graphics processing system 100 (FIG. 3). The graphics processing system 100 includes circuitry for performing various three-dimensional (3D) graphics function. As shown in FIG. 5, a bus interface 302 couples the graphics processing system 100 to the expansion bus 48. In the case where the graphics processing system 100 is coupled to the processor 42 and the host memory 44 through the high speed data bus 56 and the memory/bus interface 46, the bus interface 302 will include a DMA controller (not shown) to coordinate transfer of data to and from the host memory 44 and the processor 42. A graphics processor 308 is coupled to the bus interface 302 and is designed to perform various graphics and video processing functions, such as, but not limited to, generating vertex data and performing vertex transformations for polygon graphics primitives that are used to model 3D objects. In a preferred embodiment, the graphics processor 308 is a reduced instruction set computing (RISC) microprocessor. The graphics processor 308 is coupled to a triangle engine 312 that includes circuitry for performing various graphics functions, such as clipping, attribute transformations, rendering of graphics primitives, and generating texture coordinates from a texture map.


A pixel engine 318 is coupled to receive the graphics data generated by the triangle engine 312. The pixel engine 318 contains circuitry for performing various graphics functions, such as, but not limited to, texture application or mapping, bilinear filtering, fog, blending, and color space conversion. Texture mapping refers to techniques for adding surface detail, or a texture map, to areas or surfaces of polygons used to model the 3D objects. After the texture mapping process, a version of the texture image is visible on surfaces of the polygon with the proper perspective. A typical texture map includes point elements (“texels”) which reside in a texture coordinate space is stored in the host memory 44 of the computer system 40. A portion of the texture map that is currently being applied by the pixel engine 318 is stored in a texture cache 324 for quick access during texture processing. A display controller 332 coupled to pixel engine 318 controls the transfer of destination color values from the pixel engine 318 to a FIFO 336. Destination color values stored in the FIFO 336 are provided to a display driver 340 that includes circuitry to provide digital color signals, or convert digital color signals to red, green, and blue analog color signals, to drive the display 58 (FIG. 3).


Also included in the graphics processing system 100 is a distributed memory controller arrangement similar to the memory system 200 of FIG. 4a That is, instead of a conventional memory system having a central memory controller to service all memory access requests, the graphics processing system 100 uses a memory system where the responsibility of servicing the memory access requests is distributed among multiple memory controllers 202, 222, 242, and 262, coupled to a respective memory 212; 232, 252, and 44 (FIG. 3), and linked together through a memory controller bus 216. The operation of a distributed memory controller arrangement has been previously described with respect to FIG. 4.


Each of the memory controllers receives direct memory access requests from a respective circuit block to access the memory to which the memory controller is coupled. The arrangement of the memory controllers is based in part, as mentioned previously, the proximity of the memory and memory controller to a requesting entity, the desired access time, as well as the type of memory which the requesting entity is likely to access frequently.


In the graphics processing system 100, the memories 212 and 232 may be embedded memory fabricated on the same semiconductor substrate as the graphics processor 308, triangle engine 312, and pixel engine 318. Memory access times for memory access requests made by the triangle engine 312 and the pixel engine 318 will be relatively short because of the proximity of the embedded memories 212 and 232, which will facilitate fast graphics processing. The memory 252 may be implemented by external or local memory, which is, as mentioned previously, memory which is located with the graphics processing system 100, but is not fabricated on the same substrate as the graphics processing circuit blocks. Typically, local memory is implemented using random access memory (RAM), such as dynamic access memory (DRAM), or static random access memory (SRAM), located on the same graphics card as the graphics processor. Although the access time of the memory 252 is greater than for the embedded memories 212 and 232, it is still shorter than for the host memory 44 (FIG. 3). The rate at which texture data is provided to the pixel engine 318 is improved by the presence of the texture cache 324. That is, as mentioned previously, a subset of the texture data presently used for texture application is stored in the texture cache for fast access. The memory controller 262 is coupled to the host memory 44 (FIG. 3). Although the host memory 44 has the longest access time, it does have the benefit of having the greatest available addressable memory area. Graphics data that is not immediately needed by one of the processing blocks, or data that may be needed at a later time, may be stored in the host memory 44.


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. Accordingly, the invention is not limited except as by the appended claims.

Claims
  • 1. A memory system, comprising: a plurality of addressable memory areas;a memory controller command bus configured to couple memory commands thereon; andfirst, second and third memory controllers serially coupled to one another by the memory controller command bus and coupled to a respective one of the plurality of addressable memory areas, each memory controller configured to access the respective addressable memory area in response to receiving memory commands for accessing a memory location in the respective addressable memory area and further configured to forward memory commands for accessing a memory location in another one of the addressable memory areas to the memory controller coupled to the addressable memory area in which the memory location of the memory command is located.
  • 2. The memory system of claim 1 wherein at least one of the plurality of memory controllers comprises a memory controller having registers for storing data defining a range of the first addressable memory area and the at least one memory controller is configured to compare a memory address corresponding to the memory location to the stored data to determine whether the memory location is in the respective addressable memory area.
  • 3. The memory system of claim 2 wherein the registers are configured to store data representing a start address for the respective addressable memory area and a addressable memory size.
  • 4. The memory system of claim 2 wherein the registers are configured to store data representing a start address for the respective addressable memory area and an end address for the first addressable memory area for the respective addressable memory area.
  • 5. The memory system of claim 1 wherein at least one of the plurality of addressable memory areas comprises an addressable memory area of dynamic random access memory (“DRAM”) cells.
  • 6. The memory system of claim 5 wherein the at least one of the plurality of addressable memory areas of DRAM cells comprises an addressable area of embedded memory of DRAM cells.
  • 7. The memory system of claim 1 wherein at least one of the plurality of addressable memory areas comprises an addressable memory area for storing computer graphics data.
  • 8. A computer system, comprising: a system processor;a memory interface circuit coupled to the system processor;a system bus coupled to the memory interface circuit;a graphics processing system coupled to the system bus; anda system memory coupled to the memory interface circuit, the system memory comprising: a plurality of addressable memory areas;a memory controller command bus configured to couple memory commands thereon; andfirst, second, and third memory controllers serially coupled to one another by the memory controller command bus and coupled to a respective one of the plurality of addressable memory areas, each memory controller configured to access the respective addressable memory area in response to receiving memory commands for accessing a memory location in the respective addressable memory area and further configured to forward memory commands for accessing a memory location in another one of the addressable memory areas to the memory controller coupled to the addressable memory area in which the memory location of the memory command is located.
  • 9. The memory system of claim 8 wherein at least one of the plurality of memory controllers comprises a memory controller having registers for storing data defining a range of the first addressable memory area and the at least one memory controller is configured to compare a memory address corresponding to the memory location to the stored data to determine whether the memory location is in the respective addressable memory area.
  • 10. The memory system of claim 9 wherein the registers are configured to store data representing a start address for the respective addressable memory area and a addressable memory size.
  • 11. The memory system of claim 9 wherein the registers are configured to store data representing a start address for the respective addressable memory area and an end address for the first addressable memory area for the respective addressable memory area.
  • 12. The memory system of claim 8 wherein at least one of the plurality of addressable memory areas comprises an addressable memory area of dynamic random access memory (“DRAM”) cells.
  • 13. The memory system of claim 12 wherein the at least one of the plurality of addressable memory areas of DRAM cells comprises an addressable area of embedded memory of DRAM cells.
  • 14. The memory system of claim 8 wherein at least one of the plurality of addressable memory areas comprises an addressable memory area for storing computer graphics data.
  • 15. A method of accessing a memory location in a memory system having at least one addressable memory area, comprising: receiving at a memory controller a memory access request to access the memory location;determining whether the memory controller has access to the memory location;in response to determining that the memory controller has access to the memory location, accessing the memory location;in response to determining that the memory controller does not have access to the memory location, forwarding the memory access request to one of a plurality of memory controllers serially coupled to one another and to the memory controller that received the memory access request through a memory controller bus;repeating the steps of receiving, determining, and forwarding until a target memory controller determines that it has access to the memory location; andaccessing the memory location through the target memory controller.
  • 16. The method of claim 15 wherein determining whether the memory controller has access to the memory location comprises determining whether the memory location is located within an addressable memory area coupled to the respective memory controller.
  • 17. The method of claim 16 wherein determining whether the memory location is located within an addressable memory area coupled to the respective memory controller comprises comparing a memory address corresponding to the memory location to data defining a range of addressable memory to which the respective memory controller has access.
  • 18. The method of claim 17 wherein the comparing the memory address to data defining a range of addressable memory comprises comparing the memory address to first and second data defining a start address and addressable memory size, respectively, for the respective range of addressable memory.
  • 19. The method of claim 17 wherein the comparing the memory address to data defining a range of addressable memory comprises comparing the memory address to first and second data defining a start address and an end address, respectively, for the respective range of addressable memory.
CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application No. 09/603,158, filed Jun. 23, 2000 now U.S. Pat. No. 6,791,555.

US Referenced Citations (254)
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
4507730 Johnson et al. Mar 1985 A
4608702 Hirzel et al. Aug 1986 A
4707823 Holdren et al. Nov 1987 A
4724520 Athanas et al. Feb 1988 A
4891808 Williams Jan 1990 A
4930128 Suzuki et al. May 1990 A
4953930 Ramsey et al. Sep 1990 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
5327553 Jewett et al. Jul 1994 A
5355391 Horowitz et al. Oct 1994 A
5357621 Cox 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
5479370 Furuyama et al. Dec 1995 A
5497476 Oldfield et al. Mar 1996 A
5502621 Schumacher et al. Mar 1996 A
5522062 Yamaki May 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
5638334 Farmwald et al. Jun 1997 A
5638534 Mote, Jr. Jun 1997 A
5659798 Blumrich et al. Aug 1997 A
5706224 Srinivasan et al. Jan 1998 A
5715456 Bennett et al. Feb 1998 A
5729709 Harness Mar 1998 A
5748616 Riley May 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
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
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
5987196 Noble Nov 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
6070231 Ottinger 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
6131149 Lu 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
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
6208180 Fisch et al. Mar 2001 B1
6212590 Melo et al. Apr 2001 B1
6219725 Diehl 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
6252612 Jeddeloh Jun 2001 B1
6256692 Yoda et al. Jul 2001 B1
6272609 Jeddeloh Aug 2001 B1
6285349 Smith Sep 2001 B1
6286083 Chin et al. 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
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
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
6493803 Pham et al. Dec 2002 B1
6496193 Surti et al. Dec 2002 B1
6496909 Schimmel Dec 2002 B1
6501471 Venkataraman 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
6564329 Cheung et al. May 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
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
6665202 Lindahl et al. Dec 2003 B2
6667895 Jang et al. Dec 2003 B2
6681292 Creta et al. Jan 2004 B2
6697926 Johnson et al. Feb 2004 B2
6704817 Steinman et al. Mar 2004 B1
6715018 Farnworth et al. Mar 2004 B2
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
6731548 Pax May 2004 B2
6735679 Herbst et al. May 2004 B1
6735682 Segelken et al. May 2004 B2
6745275 Chang Jun 2004 B2
6751703 Chilton Jun 2004 B2
6754117 Jeddeloh 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
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
6811320 Abbott Nov 2004 B1
6816947 Huffman Nov 2004 B1
6820181 Jeddeloh et al. Nov 2004 B2
6821029 Grung et al. Nov 2004 B1
6823023 Hannah Nov 2004 B1
6829705 Smith Dec 2004 B2
6845409 Talagala et al. Jan 2005 B1
6889304 Perego et al. May 2005 B2
6910109 Holman et al. Jun 2005 B2
6980042 LaBerge Dec 2005 B2
20010039612 Lee Nov 2001 A1
20020112119 Halbert et al. Aug 2002 A1
20020116588 Beckert et al. Aug 2002 A1
20020144064 Fanning Oct 2002 A1
20020178319 Sanchez-Olea Nov 2002 A1
20030005223 Coulson et al. Jan 2003 A1
20030043158 Wasserman et al. Mar 2003 A1
20030043426 Baker et al. Mar 2003 A1
20030093630 Richard et al. May 2003 A1
20030149809 Jensen et al. Aug 2003 A1
20030163649 Kapur et al. Aug 2003 A1
20030177320 Sah et al. Sep 2003 A1
20030193927 Hronik Oct 2003 A1
20030217223 Nino, Jr. et al. Nov 2003 A1
20030227798 Pax Dec 2003 A1
20030229762 Maiyuran et al. Dec 2003 A1
20030229770 Jeddeloh Dec 2003 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
20040044833 Ryan Mar 2004 A1
20040044857 Jeddeloh et al. Mar 2004 A1
20040064602 George Apr 2004 A1
20040122988 Han et al. Jun 2004 A1
20040126115 Levy et al. Jul 2004 A1
20040144994 Lee et al. Jul 2004 A1
20040158677 Dodd Aug 2004 A1
20040236885 Fredriksson et al. Nov 2004 A1
20040260864 Lee et al. Dec 2004 A1
20040260891 Jeddeloh et al. Dec 2004 A1
20040260909 Lee et al. Dec 2004 A1
20050044327 Howard et al. Feb 2005 A1
20050066137 Jeddeloh et al. Mar 2005 A1
20050071542 Weber et al. Mar 2005 A1
20050149774 Jeddeloh et al. Jul 2005 A1
20050172084 Jeddeloh Aug 2005 A1
20050216648 Jeddeloh Sep 2005 A1
20050216678 Jeddeloh Sep 2005 A1
20050218956 LaBerge Oct 2005 A1
20050223161 Jeddeloh Oct 2005 A1
20050228939 Janzen Oct 2005 A1
20050246558 Ku Nov 2005 A1
20050257005 Jeddeloh Nov 2005 A1
20050286506 LaBerge Dec 2005 A1
20060085616 Zeighami et al. Apr 2006 A1
Foreign Referenced Citations (4)
Number Date Country
0849685 Jun 1998 EP
2001265539 Sep 2001 JP
WO 9319422 Sep 1993 WO
WO 0227499 Apr 2002 WO
Related Publications (1)
Number Date Country
20050030313 A1 Feb 2005 US
Continuations (1)
Number Date Country
Parent 09603158 Jun 2000 US
Child 10931376 US