The following description relates to computers in general and to remote computing in particular.
One approach to providing computing services to multiple users involves providing each user with a separate computer on which software used by that user is executed. Such a computer is also referred to as a “personal computer” or a “workstation” and is typically located near the user. Also, each personal computer includes sufficient computing resources to execute the software used by the user of that personal computer.
Another approach to providing computing services to multiple users is to execute at least some of the software used by each user on a remote computer (also referred to as a “server” or “host”). This approach is also referred to here as the “server-based” approach. Each user uses a local computer (or other device) to access the software executing on the server. The local computer and the server typically communicate with one another over a network (for example, a local area network, a wide area network, or a virtual private network (VPN)). In some embodiments, a user, in addition to executing software on a server using such a server-based approach, also executes software locally on the user's local computer.
The local computer typically receives from the user input intended for software executing on the server (for example, via a keyboard or pointing device coupled to the local computer) and communicates the received input to the software executing on the server. The server receives the user input and forwards the user input to the software executing on the server. The software executing on the server typically generates display information that is communicated from the server to the local computer. The local computer uses the display information to render a user interface and application-specific content (collectively referred to here as the “display image”) for the software executing on the server. The local computer displays the display image on a display device (for example, a computer monitor) coupled to the local computer.
The processing that is performed by the server in order to receive and process user input transmitted from a local computer and to generate and transmit the display information to the local computer is also referred to here as “remote computing overhead.” In one common remote computing configuration, all the remote computing overhead functions are carried out by the same processor that is used to execute application software for the user sessions, which can reduce the computing resources that are available for running the application software. Also in such a configuration, the speed with which the remote computing overhead processing is performed is typically limited by the speed and loading of that processor.
In another remote computing configuration, special-purpose hardware is used to perform at least some of the remote computing processing. Thus, the processor on which the application software for the user sessions executes need not perform such remote computing processing. However, the use of such special-purpose hardware typically increases the cost and complexity of implementing such a remote computing configuration. Also, the use of such special-purpose hardware typically imposes various constraints on such a configuration (for example, constraints related to wiring, image resolution, and the number of supported user sessions).
In one embodiment, a method comprises receiving, at a network processor unit included in a host device, raster data for a remote computing session executing on a main processor of the host device. The method further comprises compressing the raster data using remote computing software executing on a network processor included in the network processor unit and transmitting the compressed raster data to a client device for display thereby.
In another embodiment, a method comprises receiving, at a network processor unit included in a client device, compressed raster data for a remote computing session executing on a host device. The client device comprises a main processor operable to execute first remote computing software operable to affect the remote computing session. The method further comprises decompressing the received compressed raster data using second remote computing software executing on a network processor included in the network processor unit.
In another embodiment, a host computer comprises first remote computing software adapted to execute on a main processor of the host computer. The first remote computing software is operable to cause the main processor to establish a remote computing session for a client device. A display image comprising raster data is generated for the remote computing session. The host computer further comprises a network interface through which the host computer communicates with the client device. The network interface comprises a network processor adapted to execute second remote computing software. The second remote computing software is operable to cause the network processor to compress at least a portion of the raster data. The network interface transmits the compressed raster data to the client device.
In another embodiment, a client device comprises first remote computing software adapted to execute on a main processor of the client device. The first remote computing software is operable to affect a remote computing session executing on a host computer. The host computer generates a display image comprising raster data for the remote computing session and compresses the raster data. The client device further comprises a network interface through which the client device communicates with the host computer. The network interface comprises a network processor adapted to execute second remote computing software. The second remote computing software is operable to cause the network processor to decompress the compressed raster data when the compressed raster data is received by the network interface from the host computer.
The details of various embodiments of the claimed invention are set forth in the accompanying drawings and the description below. Other features and advantages will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.
In the embodiment shown in
The client device 102 also includes at least one programmable processor 118 and memory 120 in which software executed by the programmable processor 118 and related data structures are stored during execution. The programmable processor 118 is also referred to here as the “main processor” 118 of the client device 102 and the memory 120 is also referred to here as the “main memory” 120 of the client device 102. Main memory 120 comprises any suitable memory now know or later developed such as, for example, random access memory (RAM), read only memory (ROM), and/or registers within the main processor 118. In one implementation, the main processor 118 comprises a microprocessor. Software executing on the main processor 118 performs at least some of the processing described here as being performed by the client device 102. In the embodiment shown in
The software (including the remote computing software 122) executed by the main processor 118 of the client device 102 comprises appropriate program instructions that implement the functionality to be performed by the software. The program instructions for such software are stored on or in a computer-readable medium. In the embodiment shown in
In other embodiments, the software that executes on the main processor 118 is stored on different types of computer-readable media such as a flash disk, ROM, or removable media such as a floppy drive or a CD-ROM. In other embodiments, the computer-readable media is not local to the client device 102. For example in one such embodiment, the software that is executed on the client device 102 is stored on a file server 136 that is coupled to the client device 102 over, for example, the network 106. In such an embodiment, the client device 102 retrieves such software from the file server 136 over the network 106 in order to execute the software. In other embodiments, such software is delivered to the client device 102 for execution thereon in other ways. For example, in one such other embodiment, such software is implemented as a servelet (for example, in the JAVA(R) programming language) that is downloaded from a hypertext transfer protocol (HTTP) server and executed by the client device 102 using an Internet browser running on the client device 102.
In the embodiment shown in
The network processor memory 134 comprises any suitable memory such as, for example, random access memory (RAM), read only memory (ROM), and/or registers within the network processor 132. The software executed by the network processor 132 comprises network software 131 that controls and/or performs networking functions supported by the network interface 108. For example, in one embodiment, the network interface 108 is an ETHERNET network interface that is used to couple the client device 102 to an ETHERNET network and the network software 131 controls and/or performs networking functions to interface to an ETHERNET network. In the embodiment shown in
The software (including the network software 131 and the remote computing software 133) executed by the network processor 132 comprises appropriate program instructions that implement the functionality to be performed by the software. The program instructions for such software are stored on or in a computer-readable medium. In one embodiment, the computer-readable medium in which the software executed on the network processor 132 is stored comprises a flash memory device (not shown in
In other embodiments, the software executed on the network processor 132 is stored on different types of computer-readable media such as a local hard drive, ROM, or removable media such as a floppy drive or a CD-ROM. In other embodiments, the computer-readable media is not local to the client device 102. For example in one such embodiment, such software is stored on the file server 136.
The various components of the client device 102 are communicatively coupled to one another as needed using appropriate interfaces (for example, using buses, ports, and the like).
In one implementation of the client device 102 shown in
The host computer 104 comprises at least one programmable processor 140 and memory 142 in which software executed by the programmable processor 140 and related data structures are stored during execution. The programmable processor 140 is also referred to here as the “main processor” 140 of the host computer 104 and the memory 142 is also referred to here as the “main memory” 142 of the host computer 104. Main memory 142 comprises any suitable memory such as, for example, random access memory (RAM), read only memory (ROM), and/or registers within the main processor 140. In one implementation, the main processor 140 comprises a microprocessor. Software executing on the main processor 140 performs at least some of the processing described here as being performed by the host computer 104. In the embodiment shown in
The software (including the remote computing software 144) executed by main processor 140 comprises appropriate program instructions that implement the functionality to be performed by the software. The program instructions for such software are stored on or in a computer-readable medium. In the embodiment shown in
In other embodiments, the software that executes on the main processor 140 is stored on different types of computer-readable media such as a flash disk, ROM, or removable media such as a floppy drive or a CD-ROM. In other embodiments, the computer-readable media is not local to the host computer 104. For example in one such embodiment, the software that is executed on the host computer 104 is stored on the file server 136 that is coupled to the host computer 104 over, for example, the network 106.
The host computer 104 further comprises a graphics adapter 148. The graphics adapter 148, under control of software executing on the main processor 140, is used to generate a display image for the session 124 executing on the host computer 104. As described below, at least a portion of the display image is transmitted to the client device 102 for display on the display device 112. Such a display image comprises raster data (that is, data describing each pixel that makes up the display image). In the embodiment shown in
The host computer 104 also includes a network interface 152 that is used to couple the host computer 104 to the network 106. In the embodiment shown in
The network processor memory 158 comprises any suitable memory such as, for example, random access memory (RAM), read only memory (ROM), and/or registers within the network processor 156. The software executed by the network processor 156 comprises network software 160 that controls and/or performs networking functions supported by the network interface 152. For example, in one embodiment, the network interface 152 is an ETHERNET network interface that is used to couple the host computer 104 to an ETHERNET network and the network software 160 controls and/or performs networking functions to interface to an ETHERNET network. In the embodiment shown in
The software (including the network software 160 and the remote computing software 162) executed by the network processor 156 comprises appropriate program instructions that implement the functionality to be performed by the software. The program instructions for such software are stored on or in a computer-readable medium. In one embodiment, the computer-readable medium in which the software executed on the network processor 156 is stored comprises a flash memory device (not shown in
In other embodiments, the software executed on the network processor 156 is stored on different types of computer-readable media such as a local hard drive, ROM, or removable media such as a floppy drive or a CD-ROM. In other embodiments, the computer-readable media is not local to the host computer 104. For example in one such embodiment, such software is stored on the file server 136.
The various components of the host computer 104 are coupled to one another as needed using appropriate interfaces (for example, using buses, ports, and the like).
In one implementation of the embodiment of the host computer 104 shown in
During operation, a user of the client device 102 accesses the host computer 104 over the network 106 in order to establish the session 124 on the host computer 104 and execute the one or more items of software 126 in the session 124. In one embodiment, the software 126 executed in the session 124 is stored on the file server 136. The host computer 104 retrieves the software 126 stored on the file server over the network 106 when such software 126 is executed in the session 124.
The user provides input to the session 124 and the software 126 by using the input device 110 (for example, using a keyboard and/or a pointing device) to provide input to the client device 104. The remote computer software 122 executing on the main processor 118 of the client device 102 receives, interprets, and, if appropriate, forwards user input to the host computer 104 over the network 106. The remote computer software 144 executing on the main processor 140 of the host computer 104 receives the input and forwards the received input to the session 124 and the software 126, as appropriate, for processing thereby.
The session 124 and the software 126 running in the session 124 generate a display image (for example, containing a user interface and application-specific content) for that session 124. The session display image is generated by the session 124 and the software 126 using the graphics adapter 148. For example, each item of software 126 executing in the session 124 interacts with a device driver compatible with the graphics adapter 148 to generate portions of the session display image associated with that item of software 126. The session display image, in the embodiment shown in
At least a portion of the raster data for the session display image is retrieved from the frame buffer 150, compressed, and transmitted to the client device 102 for display on the display device 112. In the embodiment shown in
The embodiment of the remote computing system 100 is shown in
In, the embodiment shown in
The embodiment of the network processor unit 200 is shown in
The network processor unit 200 also includes various protocol-specific networking components. For example, in the embodiment shown in
The network processor unit 200 includes a programmable processor 208 and memory 210 in which software executed by the programmable processor 208 and related data structures are stored during execution. The programmable processor 208 is also referred to here as the “network processor” 208 and the memory 210 is also referred to here as the “network processor memory” 210.
The network processor memory 210 comprises any suitable memory now known or later developed such as, for example, random access memory (RAM), read only memory (ROM), and/or registers within the network processor 208. The software executed by the network processor 208 comprises network software 212 that controls and/or performs networking functions provided by the network processor unit 200. Such networking functions include (but are not limited to) data plane tasks such as a data parsing, classification, data transformation, queuing and scheduling and control plane tasks such as topology management, signaling, network management, and policy applications. Appropriate data structures for implementing such networking functions are stored in the network processor memory 210. Such networking software 210 is typically implemented in a multi-threaded manner. In other embodiments, one or more special purpose devices (for example, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), and additional processors) are used to perform at least some of these data plane and control plane tasks.
The embodiment of the network processor unit 200 shown in
For example, where the network processor unit 200 is used in the client device 102, the network processor 208 is able to communicate with the main processor 118 of the client device 102 via the main processor interface 214 and is able to communicate with the main memory 120 via the main memory interface 216. Where the network processor unit 200 is used in the host computer 104, the network processor 208 is able to communicate with the main processor 140 of the host computer 104 via the main processor interface 214 and is able to communicate with the main memory 142 via the main memory interface 216.
In other embodiments, the network processor 208 communicates with the main processor and the main memory of the device into which the unit 200 is used over a single interface (for example, a bus interface) over which the network processor 208 can communicate with both the main processor and the memory.
The software executed by the network processor 208 also comprises remote computing software 218. In general, the remote computing software 218 performs at least some of the remote computing processing (for example, some of the remote computing overhead processing) for the device in which the network processor unit 200 is used.
In one embodiment, the remote computing software 218 processes the raster data of the display image generated by the remote computing software 144 executing on the host computer 104 (for example, as described below in connection with
In others embodiments, the network processor unit 200 communicates with a graphics adapter in other ways. For example, in one such other embodiment (not shown) the network processor unit 200 does not include a graphics adapter interface 220. In such an embodiment, the network processor unit 200 communicates with the graphics adapter via the main processor of the device in which the network processor unit 200 is used.
The software (including the network software 212 and the remote computing software 218) executed by the network processor 208 comprises appropriate program instructions that implement the functionality to be performed by the software. The program instructions for such software are stored on or in a computer-readable medium. In one embodiment, the computer-readable medium in which the software executed on the network processor 208 is stored comprises flash memory 222. During operation, the network processor 208 reads the program instructions from the flash memory 222 and executes the program instructions.
In other embodiments, the software executed on the network processor 208 is stored on different types of computer-readable media such as a local hard drive, ROM, or removable media such as a floppy drive or a CD-ROM. In other embodiments, the computer-readable media is not local to the device in which the network processor unit 200 is used. For example in one such embodiment, such software is stored on a file server coupled to such device and such software is transferred to the network processor 208 prior to be executed thereby.
Method 300 includes receiving at least a portion of the raster data for a session display image at a network processor unit (block 302). In one embodiment, the session 124 and the software 126 running in the session 124 on the host computer 104 generate a display image (for example, containing a user interface and application-specific content) for that session 124. The session display image is generated by the session 124 and the software 126 using the graphics adapter 148. For example, each item of software 126 executing in the session 124 interacts with a device driver compatible with the graphics adapter 148 to generate portions of the session display image associated with that item of software 126. The session display image, in the embodiment shown in
The at least a portion of the raster data for the session display image is compressed by the network processor (block 304). In one embodiment, the remote computing software 162 executing on the network processor 156 compresses the received raster data, for example, using image compression techniques promulgated by the Joint Photographic Experts Group (JPEG). In other embodiments, other compression techniques (for example wavelet-based compression) are used.
The network processor formats the compressed raster data into packets (block 306) and the network processor transmits the formatted packets to a client device (block 308). In one embodiment, the remote computing software 162 executing on the network processor 156 passes the compressed raster data to the network software 160 and other components of the network processor unit 154 executing on the network processor 156 for formatting the compressed raster data into, for example, TCP/IP packets and transmitting over the network 106 in accordance with the ETHERNET protocol. Where the network processor 156 of the host computer 104 is implemented using the embodiment of the network processor unit 200 shown in
Method 400 comprises receiving, at a network processor unit, packets containing compressed raster data for at least a portion of a session display image (block 402) and extracting the compressed raster data from the received packets (block 404). In one embodiment, packets containing compressed raster data are transmitted from the network processor unit 154 of the host computer 104 to the network processor unit 130 of the client device 102 over the network 106. Where the network processor unit 130 of the client device 102 is implemented using the embodiment of the network processor unit 200 shown in
The network processor decompresses the extracted compressed raster data (block 406) and outputs the decompressed raster data for the session display image (block 408). In one embodiment, the extracted compressed raster data is provided to the remote computing software 133 executing on the network processor 132 of the client device 104. The remote computing software 133 decompresses the compressed raster data. For example where the compressed raster data was compressed using JPEG compression techniques, the remote computing software 133 uses JPEG decompression techniques to decompress the compressed raster data and outputs the decompressed raster data for storage in the frame buffer 116 of the graphics adapter 114. Where the network processor unit 130 of the client device 102 is implemented using the embodiment of the network processor unit 200 shown in
The methods and techniques described here may be implemented in digital electronic circuitry, or with a programmable processor (for example, a special-purpose processor or a general-purpose processor such as a computer) firmware, software, or in combinations of them. Apparatus embodying these techniques may include appropriate input and output devices, a programmable processor, and a storage medium tangibly embodying program instructions for execution by the programmable processor. A process embodying these techniques may be performed by a programmable processor executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may advantageously be implemented in one or more programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory previously or now known or later developed, including by way of example semiconductor memory devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and DVD disks. Any of the foregoing may be supplemented by, or incorporated in, specially-designed application-specific integrated circuits (ASICs).
This application is related to and claims the benefit under 35 USC 119(e) of Provisional Application Ser. No. 60/618,697 (the '697 Application), filed on Oct. 14, 2004. The '697 Application is incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60618697 | Oct 2004 | US |