Input/output request packet handling techniques by a device specific kernel mode driver

Information

  • Patent Grant
  • 9331869
  • Patent Number
    9,331,869
  • Date Filed
    Thursday, March 4, 2010
    14 years ago
  • Date Issued
    Tuesday, May 3, 2016
    8 years ago
Abstract
The input/output request packet (IRP) handling technique includes determining if a received input/output request packet should receive a given handling. If the input/output request packet should receive the given handling, the input/output request packet is dispatched to a device specific dispatch input/output request packet handler. Otherwise, the input/output request packet is redirected to an operating system dispatch input/output request packet handler.
Description
BACKGROUND OF THE INVENTION

Conventional computing systems may include a discrete graphics processing unit (dGPU) or an integral graphics processing unit (iGPU). The discrete GPU and integral GPU are heterogeneous because of their different designs. The integrated GPU generally has relatively poor processing performance compared to the discrete GPU. However, the integrated GPU generally consumes less power compared to the discrete GPU. A heterogeneous graphics processing computing system attempts to utilize the discrete and integral computing devices to improve overall performance.


In the conventional art, the operating system handles all input/output request packets (IRP) for graphics devices. Accordingly, in a graphics co-processing computing system, handling of IRPs is limited by any restrictions imposed, intentionally or unintentionally, by the operating system. Such restrictions may limit the overall performance. Therefore, there is a need to enable IRP handling techniques that are not limited by the operating system.


SUMMARY OF THE INVENTION

The present technology may best be understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the present technology.


Embodiments of the present technology are directed toward input/output request packet (IRP) handling techniques by a device specific kernel mode driver. In one embodiment, the technique includes receiving by a device specific kernel mode driver a dispatch table including a plurality of input/output manager function pointers from an input/output manager. The dispatch table including the plurality of input/output manager function pointers is sent from device specific kernel mode driver to an operating system kernel mode driver. A dispatch table including the plurality of input/output manager function pointers and a plurality of operating system function pointers is receiving by the device specific kernel mode driver from the operating system kernel mode driver. The dispatch table including the plurality of input/output manager function pointers and the plurality of operating system function pointers is stored by the device specific kernel mode driver. The device specific kernel mode driver also creates a dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers. The dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers are sent by the device specific kernel mode driver to an input/output manager.


Thereafter, input/output request packets are received by a device specific kernel mode driver. The device specific kernel mode driver determines if any of the input/output request packets should receive a given handling. If an input/output request packet should receive the given handling, the input/output request packet is dispatched to a device specific dispatch IRP handler. If the input/output request packet should not receive the given handling the input/output request packet is redirected to an operating system dispatch IRP handler.


In another embodiment, the technique includes passing a dispatch table including a plurality of input/output manager function pointers from an input/output manager to a device specific kernel mode driver. The dispatch table including the plurality of input/output manager function pointers is passed from the device specific kernel mode driver to an operating system kernel mode driver. A dispatch table including the plurality of input/output manager function pointers and a plurality of operating system function pointers is passed from the operating system kernel mode driver to the device specific kernel mode driver. The dispatch table including the plurality of input/output manager function pointers and the plurality of operating system function pointers is stored in a dispatch table of device specific kernel mode driver. A dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers is passed from the device specific kernel mode driver to the input/output manager.


Thereafter, input/output request packets are passed from an input/output manager to a dispatch function of the device specific kernel mode driver. The dispatch function determines if the input/output request packet should receive a given handling. The input/output request packet is dispatched from the dispatch function to a device specific dispatch IRP handler if the input/output request packet is to receive the given handling. Otherwise, the input/output request packet is redirected from the dispatch handler to an operating system dispatch IRP handler if the input/output request packet is not to receive the given handling.





BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present technology are illustrated by way of example and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:



FIG. 1 shows a graphics co-processing computing platform, in accordance with one embodiment of the present technology.



FIG. 2 shows a technique for initializing input/output request packet (IRP) handling, in accordance with one embodiment of the present technology.



FIG. 3 shows a technique for IRP handling, in accordance with one embodiment of the present technology.





DETAILED DESCRIPTION OF THE INVENTION

Reference will now be made in detail to the embodiments of the present technology, examples of which are illustrated in the accompanying drawings. While the present technology will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present technology, numerous specific details are set forth in order to provide a thorough understanding of the present technology. However, it is understood that the present technology may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present technology.


Embodiments of the present technology enable the ability to hook one or more IRPs and decide how to handle the IRPs. Embodiments may be utilized to provide a given handling for one or more hooked IRPs.


Referring to FIG. 1, a graphics co-processing computing platform, in accordance with one embodiment of the present technology is shown. The exemplary computing platform may include one or more central processing units (CPUs) 105, a plurality of graphics processing units (GPUs) 110, 115, volatile and/or non-volatile memory (e.g., computer readable media) 120, 125, one or more chip sets 130, 135, and one or more peripheral devices 115, 140-160 communicatively coupled by one or more busses. The GPUs include heterogeneous designs. In one implementation, a primary GPU may be an integral graphics processing unit (iGPU) and a secondary GPU may be a discrete graphics processing unit (dGPU). The chipset 130, 135 acts as a simple input/output hub for communicating data and instructions between the CPU 105, the GPUs 110, 115, the computing device-readable media 120, 125, and peripheral devices 115, 140-165. In one implementation, the chipset includes a northbridge 130 and southbridge 135. The northbridge 130 provides for communication between the CPU 105, system memory 120 and the southbridge 135. In one implementation, the northbridge 130 includes an integral GPU. The southbridge 135 provides for input/output functions. The peripheral devices 115, 140-165 may include a display device 140, a network adapter (e.g., Ethernet card) 145, CD drive, DVD drive, a keyboard, a pointing device, a speaker, a printer, and/or the like. In one implementation, the secondary GPU is coupled as a discrete GPU peripheral device 115 by a bus such as a Peripheral Component Interconnect Express (PCIe) bus.


The computing device-readable media 120, 125 may be characterized as primary memory and secondary memory. Generally, the secondary memory, such as a magnetic and/or optical storage, provides for non-volatile storage of computer-readable instructions and data for use by the computing device. For instance, the disk drive 125 may store the operating system (OS), applications and data. In one implementation, the operating system may be a Windows Operating System from Microsoft Corporation in Redmond, Wash., U.S.A. The primary memory, such as the system memory 120 and/or graphics memory, provides for volatile storage of computer-readable instructions and data for use by the computing device. For instance, the system memory 120 may temporarily store a portion of the operating system, a portion of one or more applications and associated data that are currently used by the CPU 105, GPU 110 and the like.


Generally, the GPU attached to the display 140 is designated as the primary GPU 110 and the other GPU is designated as the secondary GPU 115. However, the secondary GPU 115 may be the primary computational unit. In other implementation, the computation workload may be dynamically switched between the primary and secondary GPU 110, 115 based on processing performance, power consumption, and the like parameters.


Referring now to FIG. 2, a technique for initializing IRP handling, in accordance with one embodiment of the present technology, is shown. During initialization of the graphics co-processing computing system, an input/output (I/O) manager 210 loads and initializes a device specific kernel mode driver (e.g., nvlddmkm.sys) 220 for a secondary GPU (e.g., dGPU) 115. In one implementation, the I/O manager 210 calls a driver entry point (e.g., DriverEntry) to load the device specific kernel mode driver 220. When calling the driver specific kernel mode driver 220, the I/O manager 210 passes a dispatch table 224-1 in a driver object 222-1 to the device specific kernel mode driver 220. The dispatch table 224-1 passed to the device specific kernel mode driver 220 includes pointers to one or more functions of the I/O manager 210.


The device specific kernel mode driver 220, for the secondary GPU 115, calls the OS graphics driver subsystem. In one implementation, the device specific kernel mode driver 220 calls an operating system (OS) kernel mode driver (e.g., dxgkrnl.sys) 230. In one implementation, the device specific kernel mode driver 220 calls a driver entry point (e.g., DxgkInitialize) of the OS kernel mode driver 230. The device specific kernel mode driver 220 passes a dispatch table 224-2 in a driver object 222-2 to the OS kernel mode driver 230. The dispatch table 224-2 passed to the OS kernel mode driver 230 includes the I/O manager function pointers.


After receiving the dispatch table 224-2, the OS kernel mode driver 230 returns back to the device specific kernel mode driver 220. When returning back to the device specific kernel mode driver 220, the dispatch table 224-3, passed in a driver object 222-3, includes a plurality of pointers to functions of the OS kernel mode driver 230 and may also include the I/O manager function pointers. The plurality of functions pointers of the OS kernel mode driver 230 includes function pointers to OS dispatch IRP handlers 236. The device specific kernel mode driver 220 stores a copy of the dispatch table 224-3 received from the OS kernel mode driver 230 as dispatch table 224-4. The device specific kernel mode driver 220 also creates a dispatch table 224-5 by replacing one or more OS function pointers with one or more pointers to a dispatch handler in the device specific kernel mode driver 220. The replaced function pointers are for calls that are to receive a given handling. In one implementation, the given handling may be a power control function. In one implementation, the function pointer to the OS dispatch IRP handler 236 in the OS dispatch table 224-3 that is for turning on or off the GPU, is replaced with a function pointer to the device specific kernel mode driver dispatch IRP handler 226 local to the device specific kernel mode driver 220.


The device specific kernel mode driver 220 for the secondary GPU 115 then returns back to the I/O manager 210. When returning back to the I/O manager 210, the dispatch table 224-5, passed in a driver object 222-4, includes a plurality of pointers to functions of OS kernel mode driver and the device kernel mode driver 220. The function pointers to the device specific kernel mode driver 220 include pointers to the dispatch IRP handlers 226 of the device specific kernel mode driver 220, and the dispatch table 224-4.


Accordingly, the I/O manager 210, device specific kernel mode driver and OS kernel mode driver 230 pass around a dispatch table 224 in the driver object 222. The I/O manager 210, device specific kernel mode driver and OS kernel mode driver 230 each fill the dispatch table with their respective function pointers. The device specific kernel mode driver 220, however, replaces one or more OS kernel mode driver 230 function pointers with pointers to the device specific kernel mode dispatch IRP handlers 226.


Referring now to FIG. 3, a technique for IRP handling, in accordance with one embodiment of the present technology, is shown. The I/O manager 210, after creating an IRP in response to an I/O request for the user mode, plug-and-play manager, power manager, driver, or other system component, calls the dispatch function 228 of the device specific kernel mode driver 220 using function pointer in the dispatch table 224-5 stored by the I/O manager 210. When calling the dispatch function 228, the I/O manager passes a pointer to the IRP. The IRP is a data structure, including arguments and parameters such as buffer address, buffer size, I/O function type and/or the like, that describes the I/O request. The dispatch function 228 looks at the content of the IRP to determine whether or not to hook the IRP. If the dispatch function 228 determines that the IRP is to receive a given handling, the dispatch function 228 routes the IRP to the device specific dispatch IRP handler 226 local to the device specific kernel mode driver 220. In one implementation, the dispatch function 228 may determine that a power control IRP, plug-and-play IRP or the like needs special handling and routs the power control IPR to the device specific dispatch IRP handler 226 local to the device specific kernel mode driver 220. The device specific dispatch IRP handler 226 calls a function local to the device specific kernel mode driver 220 to handle the IRP and/or routes the IRP to a lower level driver, such as a bus filter driver 240 and/or bus driver 250, if needed. For example, the dispatch function may determine that a start, set power, or go to sleep type I/O request for the secondary GPU 115 needs a given handling by the device specific dispatch IRP handler 226 of the device specific kernel mode driver 220, instead of by the OS dispatch IRP handler 236 of the OS kernel mode driver 230. If the IRP is completed through the device specific kernel mode driver 220, the device specific kernel mode driver 220 reports completion back to the I/O manager 210.


If the IRP is not to receive the given handling, the dispatch function 228 redirects the IRP back to the OS dispatch IRP handler 236 of the OS kernel mode driver 230 using an OS function pointer in the dispatch table 224-4 stored by the device specific kernel mode driver 220. In response, the OS dispatch IRP handler 236 of the OS kernel mode driver 230 calls a function of the OS kernel mode driver and/or routes the IRP to a lower driver, if needed. If the IRP is completed through the OS kernel mode driver 230, the OS kernel mode driver 230 reports completion back to the I/O manager 210.


The given handling may be provided by the functions of the device specific kernel mode driver 220, instead of the OS kernel mode driver 230. Accordingly, embodiments of the present technology enable IRP handling techniques that are not limited by the operating system.


The foregoing descriptions of specific embodiments of the present technology have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the present technology and its practical application, to thereby enable others skilled in the art to best utilize the present technology and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.

Claims
  • 1. One or more non-transitory computing device readable media having computing device executable instructions which when executed perform a method comprising: receiving, by a device specific kernel mode driver, a dispatch table including a pluralityy of input/output manager function pointers;sending, by the device specific kernel mode driver to an operating system kernel mode driver, the dispatch table including the plurality of input/output manager function pointers;receiving, by the device specific kernel mode driver, a dispatch table including the plurality of input/output manager function pointers and a plurality of operating system function pointers;storing, by the device specific kernel mode driver, the dispatch table including the plurality of input/output manager function pointers and the plurality of operating system function pointers;creating, by the device specific kernel mode driver, a dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers;sending, by the device specific kernel mode driver to an input/output manager, the dispatch table including, the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers;receiving, by a device specific kernel mode driver, a input/output request packet from the input/output manager based on the dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers from the device specific kernel mode driver to the input/output manager;determining, by the device specific kernel mode driver, if the input/output request packet is to receive a given handling;dispatching, by the device specific kernel mode driver using an operating system function pointer in the dispatch table stored by the device specific kernel mode driver, the input/output request packet to a device specific dispatch input/output request packet handler if the input/output request packet is to receive the given handling; andredirecting, by the device specific kernel mode driver using an operating system function pointer in the dispatch table stored by the device specific kernel mode driver, the input/output request packet to an operating system dispatch input/output request packet handler if the input/output request packet is not to receive the given handling.
  • 2. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 1, wherein the input/output request packet is to receive the given handling the input/output request packet comprises a power type input/output request packet.
  • 3. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 1, wherein the input/output request packet is to receive the given handling if the input/output request packet comprises a plug-and-play type input/output request packet.
  • 4. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 1, wherein the input/output request is for a secondary graphics processing unit of a computing device including a primary graphics processing unit.
  • 5. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 4, wherein the primary graphics processing unit and the secondary graphics processing unit are heterogeneous graphics processing units.
  • 6. The one or more non-transitory computing device readable media having computing, device executable instructions which when executed perform the method of claim 1, wherein determining if the input/output request packet should receive a given handling comprises calling a dispatch function; local to the device specific kernel mode driver, to determine a content of the input/output request packet.
  • 7. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 1, further comprising calling, by the device specific dispatch handler, a corresponding function for the input/output request packet if the input/output request packet is to receive the given handling.
  • 8. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 1, further comprising calling, by the device specific dispatch handler, a corresponding driver for the input/output request packet if the input/output request packet is to receive the given handling.
  • 9. One or more non-transitory computing device readable media having, computing device executable instructions which when executed perform a method comprising: passing a dispatch table including a plurality of input/output manager function pointers from an input/output manager to a device specific kernel mode driver;passing the dispatch table including the plurality of input/output manager function pointers from the device specific kernel mode driver to an operating system kernel mode driver;passing a dispatch table including the plurality of input/output manager function pointers and a plurality of operating system function pointers from the operating system kernel mode driver to the device specific kernel mode driver;storing the dispatch table including the plurality of input/output manager function pointers and the plurality of operating system function pointers in a dispatch table of device specific kernel mode driver;passing a dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel, mode driver function pointers from the device specific kernel mode driver to the input/output manager;passing a input/output request packet from the input/output manager to a dispatch function of the device specific kernel mode driver based on the dispatch table including the plurality of input/output manager function pointers and the plurality of operating system functions wherein one or more of the operating system function pointers are replaced by one or more device specific kernel mode driver function pointers from the device specific kernel mode driver to the input/output manager;determining, by the dispatch function, if the input/output request packet should receive a given handling;dispatching the input/output request packet from the dispatch function to a device specific dispatch input/output request packet handler if the input/output request packet is to receive the given handling; andredirecting the input/output request packet from the dispatch function to an operating system dispatch input/output request packet handler if the input/output request packet is not to receive the given handling.
  • 10. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 9, wherein the input/output request packet is to receive the given handling if the input/output request packet comprises a power type input/output request packet.
  • 11. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 9, wherein the given handling comprises a power control function.
  • 12. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 9, wherein determining if the input/output request packet should receive a given handling comprises calling a dispatch function, local to the device specific kernel mode driver, to determine a content of the input/output request packet.
  • 13. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 9, further comprising calling, by the device specific dispatch handler, a corresponding function for the input/output request packet if the input/output request packet is to receive the given handling.
  • 14. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 9, further comprising calling, by the device specific dispatch handler, a corresponding driver for the input/output request packet if the input/output request packet is to receive the given handling.
  • 15. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 9, wherein the input/output request is for a discrete graphics processing unit of a computing device including an integrated graphics processing unit.
  • 16. The one or more non-transitory computing device readable media having computing device executable instructions which when executed perform the method of claim 15, wherein the discrete graphics processing unit and the integrated graphics processing unit are heterogeneous graphics processing units.
US Referenced Citations (422)
Number Name Date Kind
3940740 Coontz Feb 1976 A
4208810 Rohner et al. Jun 1980 A
4412281 Works Oct 1983 A
4449730 Oberleitner et al. May 1984 A
4541075 Dill et al. Sep 1985 A
4773044 Sfarti et al. Sep 1988 A
4885703 Deering Dec 1989 A
4918626 Watkins et al. Apr 1990 A
4949280 Littlefield Aug 1990 A
4951220 Ramacher et al. Aug 1990 A
4985988 Littlebury Jan 1991 A
5036473 Butts et al. Jul 1991 A
5077660 Haines et al. Dec 1991 A
5081594 Horsley Jan 1992 A
5107455 Haines et al. Apr 1992 A
5125011 Fung Jun 1992 A
5276893 Savaria Jan 1994 A
5287438 Kelleher Feb 1994 A
5313287 Barton May 1994 A
5345587 Fehskens et al. Sep 1994 A
5379405 Ostrowski Jan 1995 A
5392437 Matter et al. Feb 1995 A
5400777 Olsson et al. Mar 1995 A
5408606 Eckart Apr 1995 A
5432898 Curb et al. Jul 1995 A
5446836 Lentz et al. Aug 1995 A
5448496 Butts et al. Sep 1995 A
5452104 Lee Sep 1995 A
5452412 Johnson, Jr. et al. Sep 1995 A
5455536 Kono et al. Oct 1995 A
5483258 Cornett et al. Jan 1996 A
5498975 Cliff et al. Mar 1996 A
5513144 O'Toole Apr 1996 A
5513354 Dwork et al. Apr 1996 A
5517666 Ohtani et al. May 1996 A
5530457 Helgeson Jun 1996 A
5543935 Harrington Aug 1996 A
5570463 Dao Oct 1996 A
5574847 Eckart et al. Nov 1996 A
5578976 Yao Nov 1996 A
5594854 Baldwin et al. Jan 1997 A
5623692 Priem et al. Apr 1997 A
5630171 Chejlava, Jr. et al. May 1997 A
5633297 Valko et al. May 1997 A
5634107 Yumoto et al. May 1997 A
5638946 Zavracky Jun 1997 A
5664162 Dye Sep 1997 A
5671376 Bucher et al. Sep 1997 A
5694143 Fielder et al. Dec 1997 A
5705938 Kean Jan 1998 A
5766979 Budnaitis Jun 1998 A
5768178 McLaury Jun 1998 A
5778348 Manduley et al. Jul 1998 A
5805833 Verdun Sep 1998 A
5809230 Pereira Sep 1998 A
5815162 Levine Sep 1998 A
5821949 Deering Oct 1998 A
5854631 Akeley et al. Dec 1998 A
5854637 Sturges Dec 1998 A
5872902 Kuchkuda et al. Feb 1999 A
5884053 Clouser et al. Mar 1999 A
5896391 Solheim et al. Apr 1999 A
5909595 Rosenthal et al. Jun 1999 A
5913218 Carney et al. Jun 1999 A
5937173 Olarig et al. Aug 1999 A
5956252 Lau et al. Sep 1999 A
5956505 Manduley Sep 1999 A
5968175 Morishita et al. Oct 1999 A
5977987 Duluk, Jr. Nov 1999 A
5996996 Brunelle Dec 1999 A
5999990 Sharrit et al. Dec 1999 A
6003083 Davies et al. Dec 1999 A
6003100 Lee Dec 1999 A
6028608 Jenkins Feb 2000 A
6034699 Wong et al. Mar 2000 A
6038348 Carley Mar 2000 A
6049870 Greaves Apr 2000 A
6065131 Andrews et al. May 2000 A
6067262 Irrinki et al. May 2000 A
6067633 Robbins et al. May 2000 A
6069540 Berenz et al. May 2000 A
6072500 Foran et al. Jun 2000 A
6072686 Yarbrough Jun 2000 A
6085269 Chan et al. Jul 2000 A
6094116 Tai et al. Jul 2000 A
6098118 Ellenby et al. Aug 2000 A
6104407 Aleksic et al. Aug 2000 A
6104417 Nielsen et al. Aug 2000 A
6115049 Winner et al. Sep 2000 A
6118394 Onaya Sep 2000 A
6128000 Jouppi et al. Oct 2000 A
6129070 Jingu et al. Oct 2000 A
6137918 Harrington et al. Oct 2000 A
6160557 Narayanaswami Dec 2000 A
6160559 Omtzigt Dec 2000 A
6188394 Morein et al. Feb 2001 B1
6201545 Wong et al. Mar 2001 B1
6204859 Jouppi et al. Mar 2001 B1
6219070 Baker et al. Apr 2001 B1
6219628 Kodosky et al. Apr 2001 B1
6249288 Campbell Jun 2001 B1
6249853 Porterfield Jun 2001 B1
6255849 Mohan Jul 2001 B1
6256758 Abramovici et al. Jul 2001 B1
6259460 Gossett et al. Jul 2001 B1
6307169 Sun et al. Oct 2001 B1
6317804 Levy et al. Nov 2001 B1
6323699 Quiet Nov 2001 B1
6323874 Gossett Nov 2001 B1
6348811 Haycock et al. Feb 2002 B1
6359623 Larson Mar 2002 B1
6362819 Dalal et al. Mar 2002 B1
6363285 Wey Mar 2002 B1
6363295 Akram et al. Mar 2002 B1
6366289 Johns Apr 2002 B1
6366968 Hunsaker Apr 2002 B1
6370603 Silverman et al. Apr 2002 B1
6377898 Steffan et al. Apr 2002 B1
6388590 Ng May 2002 B1
6389585 Masleid et al. May 2002 B1
6392431 Jones May 2002 B1
6429288 Esswein et al. Aug 2002 B1
6429747 Franck et al. Aug 2002 B2
6429877 Stroyan Aug 2002 B1
6433657 Chen Aug 2002 B1
6437657 Jones Aug 2002 B1
6437780 Baltaretu et al. Aug 2002 B1
6452595 Montrym et al. Sep 2002 B1
6469707 Voorhies Oct 2002 B1
6480205 Greene et al. Nov 2002 B1
6486425 Seki Nov 2002 B2
6501564 Schramm et al. Dec 2002 B1
6504542 Voorhies et al. Jan 2003 B1
6504841 Larson et al. Jan 2003 B1
6522329 Ihara et al. Feb 2003 B1
6525737 Duluk, Jr. et al. Feb 2003 B1
6529207 Landau et al. Mar 2003 B1
6530045 Cooper et al. Mar 2003 B1
6530049 Abramovici et al. Mar 2003 B1
6535986 Rosno et al. Mar 2003 B1
6550030 Abramovici et al. Apr 2003 B1
6598194 Madge et al. Jul 2003 B1
6606093 Gossett et al. Aug 2003 B1
6611272 Hussain et al. Aug 2003 B1
6614444 Duluk, Jr. et al. Sep 2003 B1
6614448 Garlick et al. Sep 2003 B1
6624823 Deering Sep 2003 B2
6629181 Alappat et al. Sep 2003 B1
6633197 Sutardja Oct 2003 B1
6633297 McCormack et al. Oct 2003 B2
6636212 Zhu Oct 2003 B1
6646639 Greene et al. Nov 2003 B1
6662133 Engel et al. Dec 2003 B2
6671000 Cloutier Dec 2003 B1
6693637 Koneru et al. Feb 2004 B2
6693639 Duluk, Jr. et al. Feb 2004 B2
6697063 Zhu Feb 2004 B1
6700581 Baldwin et al. Mar 2004 B2
6701466 Fiedler Mar 2004 B1
6717474 Chen et al. Apr 2004 B2
6717576 Duluk, Jr. et al. Apr 2004 B1
6717578 Deering Apr 2004 B1
6718496 Fukuhisa et al. Apr 2004 B1
6734770 Aigner et al. May 2004 B2
6734861 Van Dyke et al. May 2004 B1
6738856 Milley et al. May 2004 B1
6741247 Fenney May 2004 B1
6741258 Peck, Jr. et al. May 2004 B1
6742000 Fantasia et al. May 2004 B1
6747057 Ruzafa et al. Jun 2004 B2
6747483 To et al. Jun 2004 B2
6765575 Voorhies et al. Jul 2004 B1
6778177 Furtner Aug 2004 B1
6782587 Reilly Aug 2004 B2
6785841 Akrout et al. Aug 2004 B2
6788101 Rahman Sep 2004 B1
6788301 Thrasher Sep 2004 B2
6794101 Liu et al. Sep 2004 B2
6798410 Redshaw et al. Sep 2004 B1
6803782 Koob et al. Oct 2004 B2
6803916 Ramani et al. Oct 2004 B2
6806788 Marumoto Oct 2004 B1
6819332 Baldwin Nov 2004 B2
6823283 Steger et al. Nov 2004 B2
6825847 Molnar et al. Nov 2004 B1
6833835 van Vugt Dec 2004 B1
6849924 Allison et al. Feb 2005 B2
6850133 Ma Feb 2005 B2
6861865 Carlson Mar 2005 B1
6862027 Andrews et al. Mar 2005 B2
6879207 Nickolls Apr 2005 B1
6906716 Moreton et al. Jun 2005 B2
6938176 Alben et al. Aug 2005 B1
6940514 Wasserman et al. Sep 2005 B1
6947057 Nelson et al. Sep 2005 B2
6956579 Diard et al. Oct 2005 B1
6961057 Van Dyke et al. Nov 2005 B1
6961065 Sasaki Nov 2005 B2
6966020 Abramovici et al. Nov 2005 B1
6973608 Abramovici et al. Dec 2005 B1
6978317 Anantha et al. Dec 2005 B2
6982718 Kilgard et al. Jan 2006 B2
7002591 Leather et al. Feb 2006 B1
7009607 Lindholm et al. Mar 2006 B2
7009615 Kilgard et al. Mar 2006 B1
7020598 Jacobson Mar 2006 B1
7023437 Voorhies et al. Apr 2006 B1
7043622 Henry et al. May 2006 B2
7058738 Stufflebeam, Jr. Jun 2006 B2
7061495 Leather Jun 2006 B1
7064771 Jouppi et al. Jun 2006 B1
7069369 Chou et al. Jun 2006 B2
7069458 Sardi et al. Jun 2006 B1
7069558 Stone et al. Jun 2006 B1
7075542 Leather Jul 2006 B1
7075797 Leonard et al. Jul 2006 B1
7081902 Crow et al. Jul 2006 B1
7085824 Forth et al. Aug 2006 B2
7099969 McAfee et al. Aug 2006 B2
7119809 McCabe Oct 2006 B1
7124318 Luick Oct 2006 B2
7126600 Fowler et al. Oct 2006 B1
7136953 Bisson et al. Nov 2006 B1
7154066 Talwar et al. Dec 2006 B2
7158148 Toji et al. Jan 2007 B2
7170315 Bakker et al. Jan 2007 B2
7170515 Zhu Jan 2007 B1
7174407 Hou et al. Feb 2007 B2
7174411 Ngai Feb 2007 B1
7184040 Tzvetkov Feb 2007 B1
7185135 Briggs et al. Feb 2007 B1
7185225 Sutardja et al. Feb 2007 B2
7187383 Kent Mar 2007 B2
7224364 Yue et al. May 2007 B1
7225287 Wooten May 2007 B2
7246274 Kizer et al. Jul 2007 B2
7260007 Jain et al. Aug 2007 B2
RE39898 Nally et al. Oct 2007 E
7293125 McAfee et al. Nov 2007 B2
7293127 Caruk Nov 2007 B2
7305571 Cranford, Jr. et al. Dec 2007 B2
7307628 Goodman et al. Dec 2007 B1
7307638 Leather et al. Dec 2007 B2
7324452 Xu et al. Jan 2008 B2
7324458 Schoenborn et al. Jan 2008 B2
7340541 Castro et al. Mar 2008 B2
7362325 Anderson Apr 2008 B2
7363417 Ngai Apr 2008 B1
7373547 Sutardja et al. May 2008 B2
7382368 Molnar et al. Jun 2008 B1
7383412 Diard Jun 2008 B1
7398336 Feng et al. Jul 2008 B2
7412554 Danilak Aug 2008 B2
7414636 Kokojima et al. Aug 2008 B2
7415551 Pescatore Aug 2008 B2
7424564 Mehta et al. Sep 2008 B2
7437021 Satoh Oct 2008 B2
7453466 Hux et al. Nov 2008 B2
7469311 Tsu et al. Dec 2008 B1
7480757 Atherton et al. Jan 2009 B2
7480808 Caruk et al. Jan 2009 B2
7483029 Crow et al. Jan 2009 B2
7525986 Lee et al. Apr 2009 B2
7548996 Baker et al. Jun 2009 B2
7551174 Iourcha et al. Jun 2009 B2
7594061 Shen et al. Sep 2009 B2
7631124 Lockhart et al. Dec 2009 B2
7633506 Leather et al. Dec 2009 B1
7634637 Lindholm et al. Dec 2009 B1
7660917 Freking et al. Feb 2010 B2
7663633 Diamond et al. Feb 2010 B1
7694049 Goh et al. Apr 2010 B2
7698477 Breti et al. Apr 2010 B2
7782325 Gonzalez et al. Aug 2010 B2
7791617 Crow et al. Sep 2010 B2
7793029 Parson et al. Sep 2010 B1
7822025 Joly Oct 2010 B1
7849235 Ihara et al. Dec 2010 B2
7965902 Zelinka et al. Jun 2011 B1
8063903 Vignon et al. Nov 2011 B2
8099596 Rusakov et al. Jan 2012 B1
8132015 Wyatt Mar 2012 B1
8144166 Lyapunov et al. Mar 2012 B2
8185566 George et al. May 2012 B2
8237738 Crow Aug 2012 B1
8412872 Wagner et al. Apr 2013 B1
8417838 Tamasi et al. Apr 2013 B2
8482567 Moreton et al. Jul 2013 B1
8532098 Reed et al. Sep 2013 B2
8687639 Kumar Apr 2014 B2
8711161 Scotzniovsky et al. Apr 2014 B1
8724483 Ku et al. May 2014 B2
20010005209 Lindholm et al. Jun 2001 A1
20020005729 Leedy Jan 2002 A1
20020026623 Morooka Feb 2002 A1
20020031025 Shimano et al. Mar 2002 A1
20020050979 Oberoi et al. May 2002 A1
20020059392 Ellis, III May 2002 A1
20020087833 Burns et al. Jul 2002 A1
20020091979 Cooke et al. Jul 2002 A1
20020097241 McCormack et al. Jul 2002 A1
20020120723 Forth et al. Aug 2002 A1
20020130863 Baldwin Sep 2002 A1
20020138750 Gibbs et al. Sep 2002 A1
20020140655 Liang et al. Oct 2002 A1
20020143653 DiLena et al. Oct 2002 A1
20020158869 Ohba et al. Oct 2002 A1
20020158885 Brokenshire et al. Oct 2002 A1
20020196251 Duluk, Jr. et al. Dec 2002 A1
20020199110 Kean Dec 2002 A1
20030020173 Huff et al. Jan 2003 A1
20030023771 Erickson et al. Jan 2003 A1
20030046472 Morrow Mar 2003 A1
20030051091 Leung et al. Mar 2003 A1
20030058244 Ramani et al. Mar 2003 A1
20030061409 RuDusky Mar 2003 A1
20030067468 Duluk, Jr. et al. Apr 2003 A1
20030076325 Thrasher Apr 2003 A1
20030093506 Oliver et al. May 2003 A1
20030101288 Tague et al. May 2003 A1
20030115500 Akrout et al. Jun 2003 A1
20030122815 Deering Jul 2003 A1
20030160795 Alcorn et al. Aug 2003 A1
20030163589 Bunce et al. Aug 2003 A1
20030164830 Kent Sep 2003 A1
20030179631 Koob et al. Sep 2003 A1
20030194116 Wong et al. Oct 2003 A1
20030201994 Taylor et al. Oct 2003 A1
20040012082 Dewey et al. Jan 2004 A1
20040012597 Zatz et al. Jan 2004 A1
20040046764 Lefebvre et al. Mar 2004 A1
20040064628 Chiu Apr 2004 A1
20040085313 Moreton et al. May 2004 A1
20040090974 Balakrishnan et al. May 2004 A1
20040102187 Moller et al. May 2004 A1
20040130552 Duluk, Jr. et al. Jul 2004 A1
20040183148 Blasko, III Sep 2004 A1
20040183801 Deering Sep 2004 A1
20040188781 Bar Sep 2004 A1
20040196285 Rice et al. Oct 2004 A1
20040196290 Satoh Oct 2004 A1
20040207642 Crisu et al. Oct 2004 A1
20040225787 Ma et al. Nov 2004 A1
20040227599 Shen et al. Nov 2004 A1
20040246251 Fenney et al. Dec 2004 A1
20050030314 Dawson Feb 2005 A1
20050038947 Lueck et al. Feb 2005 A1
20050041031 Diard Feb 2005 A1
20050041037 Dawson Feb 2005 A1
20050044284 Pescatore Feb 2005 A1
20050045722 Park Mar 2005 A1
20050060601 Gomm Mar 2005 A1
20050066148 Luick Mar 2005 A1
20050088445 Gonzalez et al. Apr 2005 A1
20050122338 Hong et al. Jun 2005 A1
20050125629 Kissell Jun 2005 A1
20050134588 Aila et al. Jun 2005 A1
20050134603 Iourcha et al. Jun 2005 A1
20050138437 Allen et al. Jun 2005 A1
20050172135 Wiersma Aug 2005 A1
20050173233 Kaelberer Aug 2005 A1
20050174353 Alcorn et al. Aug 2005 A1
20050179698 Vijayakumar et al. Aug 2005 A1
20050182881 Chou et al. Aug 2005 A1
20050210472 Accapadi et al. Sep 2005 A1
20050237083 Bakker et al. Oct 2005 A1
20050246460 Stufflebeam Nov 2005 A1
20050251358 Van Dyke et al. Nov 2005 A1
20050251761 Diamond et al. Nov 2005 A1
20050259100 Teruyama Nov 2005 A1
20050261863 Van Dyke et al. Nov 2005 A1
20050275663 Kokojima et al. Dec 2005 A1
20050278666 Diamond Dec 2005 A1
20050285863 Diamond Dec 2005 A1
20060004536 Diamond et al. Jan 2006 A1
20060033745 Koselj et al. Feb 2006 A1
20060044317 Bourd et al. Mar 2006 A1
20060053188 Mantor et al. Mar 2006 A1
20060053189 Mantor Mar 2006 A1
20060055641 Robertus et al. Mar 2006 A1
20060106911 Chapple et al. May 2006 A1
20060123177 Chan et al. Jun 2006 A1
20060132495 Anderson Jun 2006 A1
20060170690 Leather Aug 2006 A1
20060179484 Scrimsher et al. Aug 2006 A1
20060190663 Lu Aug 2006 A1
20060203005 Hunter Sep 2006 A1
20060221086 Diard Oct 2006 A1
20060245001 Lee et al. Nov 2006 A1
20060252285 Shen Nov 2006 A1
20060267981 Naoi Nov 2006 A1
20060267987 Litchmanov Nov 2006 A1
20060282604 Temkine et al. Dec 2006 A1
20070011383 Berke et al. Jan 2007 A1
20070038794 Purcell et al. Feb 2007 A1
20070050647 Conroy et al. Mar 2007 A1
20070067535 Liu Mar 2007 A1
20070088877 Chen et al. Apr 2007 A1
20070115271 Seo et al. May 2007 A1
20070115290 Polzin et al. May 2007 A1
20070115291 Chen et al. May 2007 A1
20070139440 Crow et al. Jun 2007 A1
20070268298 Alben et al. Nov 2007 A1
20070273689 Tsao Nov 2007 A1
20070296725 Steiner et al. Dec 2007 A1
20080024497 Crow et al. Jan 2008 A1
20080024522 Crow et al. Jan 2008 A1
20080072098 Hunsaker et al. Mar 2008 A1
20080100618 Woo et al. May 2008 A1
20080198163 Nakahashi et al. Aug 2008 A1
20080273218 Kitora et al. Nov 2008 A1
20080273545 Sgouros et al. Nov 2008 A1
20080304652 Ray Dec 2008 A1
20090006708 Lim Jan 2009 A1
20090044003 Berthiaume et al. Feb 2009 A1
20090086747 Naven et al. Apr 2009 A1
20090106754 Liu et al. Apr 2009 A1
20090254692 Feehrer Oct 2009 A1
20100138675 Nikazm et al. Jun 2010 A1
20100162252 Bacher Jun 2010 A1
20100309918 Kumar Dec 2010 A1
20110153957 Gao et al. Jun 2011 A1
Foreign Referenced Citations (13)
Number Date Country
101093578 Dec 2007 CN
61020348 Jan 1986 JP
06180758 Jun 1994 JP
10134198 May 1998 JP
11195132 Jul 1999 JP
11328133 Nov 1999 JP
2002076120 Mar 2002 JP
2005182547 Jul 2005 JP
093127712 Jul 2005 TW
0013145 Mar 2000 WO
02054224 Jul 2002 WO
2004030127 Mar 2005 WO
2005029329 Mar 2005 WO
Non-Patent Literature Citations (17)
Entry
Kristis Makris, Dynamic and Adaptive Updates of Non-Quiescent Subsystems in Commodity Operating system Kernels,Mar. 21, 2007.
Addressing the System-on-a-Chip Interconnect Woes Through Communication-Based Design' by Sgroi et al., DAC 2001, Jun. 18-22, 2001, copyright ACM.
Dictionary.com, Definition of “Monitor”, Viewed Jun. 15, 2011.
European Patent Office E-Space Family List for: WO200529329 (PCT/US2004030127).
International Search Report. PCT/US2004/030127. Mail Date Jun. 30, 2005.
Multimedia Processors by Kuroda et al., Proceedings of the IEEE, Jun. 1998.
OSI Reference Model—The ISO Model of Architecture for Open Systems Interconnection, by Zimmermann, IEEE Transactions on Communicaions, Apr. 1980.
PCI Express Card Electromechanical Specification Rev. 1.1, 2005, p. 87.
PCT International Preliminary Report on Patentability. PCT/US2004/030127. International Filing Date Sep. 13, 2004. Applicant: Nvidia Corporation. Date of Issuance of this report: Mar. 16, 2006.
SuperPaint: An Early Frame Buffer Graphics System, by Richard Shoup, IEEE Annals of the History of Computing, copyright 2001.
Test Requirements for Embedded Core-Based Systems and IEEE P1500' by Yervant Zorian, International Test Conference, copyright IEEE 1997.
Welch, D. “Building Self-Reconfiguring Distributed Systems Using Compensating Reconfiguration”, Proceedings Fourth International Journal Conference on Configurable Distributed Systems, May 4-6, 1998, pp. 18-25.
A parallel algorithm for polygon rasterization Juan Pineda Jun. 1988 ACM.
A VLSI architecture for updating raster-scan displays Satish Gupta, Robert F. Spro ull, Ivan E. Sutherland Aug. 1981 ACM SIGGRAPH Computer Graphics, Proceedings of the 8th annual conference on Computer graphics and interactive techniques SIGGRAPH '81, vol. 15 Issue 3 Publisher: ACM Press.
Blythe, OpenGL Section 3.4.1, “Basic Line Segment Rasterization”, Mar. 29, 1997, pp. 1-3.
Boyer, et al.; “Discrete Analysis for Antialiased Lines,” Eurographics 2000; 3 Pages.
Crow; “The Use of Grayscale for Improves Raster Display of Vectors and Characters;” University of Texas, Austin, Texas; Work supported by the National Science Foundation unser Grants MCS 76-83889; pp. 1-5: ACM Press.
Related Publications (1)
Number Date Country
20110216780 A1 Sep 2011 US