Current remote client access technologies use a general purpose host computer or specialized add-on hardware to perform remote computing. Examples of host-based software solutions include X Windows and Microsoft Remote Desktop. Examples of special purpose hardware-based solutions include products from ClearCube and 2C Computing.
Host-based software solutions may impact the performance of the host computer. Performance in host-based software solutions is limited by the speed of the host CPU and the time required to load program instructions in the host CPU. In addition, the overhead of performing remote computing hobbles the host CPU, stealing cycles from the host applications.
Dedicated hardware solutions add cost and complexity. In addition, the specialized hardware application is typically limited to a short distance (usually 500-600 feet) and may require dedicated wiring between the local and remote machines. Furthermore, such applications usually have limited graphics resolution and multithread capability (typically 4 threads or less of 1280×1024 pixel resolution).
In the drawings, which are not necessarily drawn to scale, like reference numerals describe substantially similar components throughout the several views. The drawings illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.
Modern graphics processors are capable of performing more than the graphics computations for which they were designed. They are now capable coprocessors, and their high speed makes them useful for a variety of applications. A system and method for using the graphics processor to accelerate remote computing is described below.
A computer system 10 which may be used to perform remote computing is shown in
One example embodiment of computer system 10 is shown in
In one embodiment, graphics processor 16 is connected to display 22 and local memory 26 and communicates with processor 12 and system memory 24 through an Accelerated Graphics Port (AGP) (not shown).
AGP gives the graphics processor 16 the ability to access system memory 24 directly for the complex operation of texture mapping. AGP provides a graphics card with two methods of directly accessing texture maps in system memory: pipelining and sideband addressing. In pipelining, AGP makes multiple requests for data during a bus or memory access. PCI makes one request in pipelining, and does not make another until the data it requested has been transferred.
In another embodiment, graphics processor 16 communicates with processor 12 and system memory 24 using PCI Express. Other peripheral interconnect schemes could be used as well.
In the systems of
In one embodiment, graphics processor 16 is connected to display 22 and communicates with processor 12 and system memory 24 through an Accelerated Graphics Port (AGP). In another embodiment, graphics processor 16 communicates with processor 12 and system memory 24 using PCI Express.
In yet another embodiment, the graphics processor 16 may be part of the chipset (not shown in
Other peripheral interconnect schemes could be used as well.
As noted above, graphics processor 16 performs the complex compression algorithms and pixel read-back used for remote computing. In one embodiment, one or more codecs is used. Other compression algorithms (e.g., wavelets or run-length-encoding) may be used in place of or in addition to JPEG. In one embodiment a mix of codecs is used both for compression and decompression.
At 104, the compressed raster data is transmitted to the client device 30. At 106, the compressed image data is received by client device 30, where it is decompressed at 108 before being displayed at 110.
A graphics processor may be used in the decompression process as well. One such embodiment is shown in
In one embodiment, graphics processor 16 is connected to display 22 and local memory 26 and communicates with processor 12 and system memory 24 through an Accelerated Graphics Port (AGP). In another embodiment, graphics processor 16 communicates with processor 12 and system memory 24 using PCI Express. Other peripheral interconnect schemes could be used as well.
In the embodiment shown, host computer 34 compresses raster data before transmitting the raster data to client device 30. In one embodiment, compression is performed via a graphics processor executing compression software. In another embodiment, processor 12 executes such software.
As illustrated in the context of
The approach described above allows higher performance remote computing without special purpose hardware and substantially without stealing cycles from the host computer. Performance for remote computing may thereby be maximized, while costs may be minimized. In addition, remote clients may be made more simply, with lower power and at a lower cost by offloading the decompression work from the CPU to the graphics processor.
In the above discussion, the term “computer” is defined to include any digital or analog data processing unit having a programmable graphics processor separate from the main processor. Examples include personal computers, workstations, set top boxes, mainframes, servers, supercomputers and laptops.
Examples of articles comprising computer readable media are floppy disks, hard drives, CD-ROM or DVD media or any other read-write or read-only memory device.
The above description is illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description.
The Abstract is provided to comply with 37 C.F.R. § 1.72(b) to allow the reader to quickly ascertain the nature and gist of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.
In the foregoing description of the embodiments, various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting that the claimed embodiments have more features than are expressly recited in each claim. Thus the following claims are hereby incorporated into the Description of the Embodiments, with each claim standing on its own as a separate example embodiment.