`a2) Patent Application Publication co) Pub. No.: US 2006/0085562 Al
`
` Blaho (43) Pub. Date: Apr. 20, 2006
`
`
`US 20060085562A1
`
`(54) DEVICES AND METHODS FOR REMOTE
`COMPUTING USING A NETWORK
`PROCESSOR
`
`(76)
`
`Inventor: Bruce Eric Blaho, Fort Collins, CO
`(US)
`
`Correspondence Address:
`HEWLETT PACKARD COMPANY
`P O BOX 272400, 3404 E. HARMONY ROAD
`INTELLECTUAL PROPERTY
`ADMINISTRATION
`FORT COLLINS, CO 80527-2400 (US)
`;
`(21) Appl. No.:
`10/989,666
`(22)
`Filed:
`Nov. 16, 2004
`
`Related U.S. Application Data
`
`(60) Provisional application No. 60/618,697,filed on Oct.
`14, 2004.
`
`Publication Classification
`
`(51)
`
`Int. Cl.
`GO6F 15/16
`
`(2006.01)
`
`(52) US. C0. ee eceesesseeseeseeeneceeseesnesneeneneeneeaneaneanes 709/247
`
`(57)
`
`ABSTRACT
`
`In one embodiment, a method comprises receiving, at a
`network processor unit includedin a host device, raster data
`for a remote computing session executing on a main pro-
`cessor of the host device. The method further comprises
`compressing the raster data using remote computing soft-
`ware 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
`processorunit 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 oper-
`able 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.
`
`
` HOST COMPUTER
`
`GRAPHICS ADAPTER
`FRAMEBUFFER 150)
`
`
`
`INPUT DEVICE 110
`
`100
`
`1
`
` CLIENT DEVICE 102
`
`DISPLAY DEVICE 112
`
`GRAPHICS ADAPTER
`FRAMEBUFFER 1.16
`
`
`
`Amazon Exhibit 1014 IPR Petition - USP 9,264,483
`
`-1-
`
`Amazon Exhibit 1014
`IPR Petition - USP 9,264,483
`
`
`
`Patent Application Publication Apr. 20,2006 Sheet 1 of 4
`
`US 2006/0085562 A1
`
`JANGGYVH1901
`
`AVI1dSIG
`
` ZLLJVIAIG
`
`001
`
`
`
`
`
`vOlYALNdWOILSOH
`
`C
`
`LAIAGLN3ND
`
`
`
`OlF30IAICLNdNI
`
`-2-
`
`
`
`
`
`
`
`
`Patent Application Publication Apr. 20
`
`’
`
`2006 Sheet 2 of 4
`
`US 2006/0085562 A1
`
`Cl2
`
`Ble
`
`022
`
`
`
`
`
`
`
`AYOWSHSV14
`
`v0Z
`
`
`
`LINAYOSS390"dMYOMLAN
`
`
`
`Ole gous
`
`
`
`YaLdVOWSOIHdWY9YOSS3I0¥dNIVJOVIYALN!AMOWAWNIV
`
`AUOINZIN'YOSSIIV0UdNYOMLIN
`
`
`
`JYVMLIOSAVAHYIAD
`
`JLOWSY
`
`
`
`JOVINILNIJOVAYILNI
`
`JUVMLIOSYYOMLIN802
`
`
`
`YOSSIIOUdNYOMLIN
`
`-3-
`
`
`
`Patent Application Publication Apr. 20,2006 Sheet 3 of 4
`
`US 2006/0085562 Al
`
`f
`
`302
`
`304
`
`306
`
`308
`
`RECEIVE RASTER DATA
`AT NETWORK PROCESSOR
`
`COMPRESS RASTER DATA
`
`FORMAT COMPRESSED RASTER
`DATA INTO PACKETS
`
`TRANSMIT FORMATTED PACKETS
`
`Fig. 3
`
`-4-
`
`
`
`Patent Application Publication Apr. 20,2006 Sheet 4 of 4
`
`US 2006/0085562 Al
`
`ye
`
`402
`
`404
`
`406
`
`408
`
`RECEIVE PACKETS
`
`|
`RETRIEVE COMPRESSED RASTER
`DATA FROM PACKETS
`
`DECOMPRESS COMPRESSED RASTER DATA
`
`OUTPUT DECOMPRESSED RASTER DATA
`
`Fig. 4
`
`-5-
`
`
`
`US 2006/0085562 Al
`
`Apr. 20, 2006
`
`DEVICES AND METHODS FOR REMOTE
`COMPUTING USING A NETWORK PROCESSOR
`
`CROSS REFERENCE TO RELATED
`APPLICATION
`
`[0001] This application is related to and claimsthe 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.
`
`TECHNICAL FIELD
`
`[0002] The following description relates to computers in
`general and to remote computing in particular.
`
`BACKGROUND
`
`[0003] 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.
`
`[0004] 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.
`
`[0005] The local computertypically 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 com-
`municated 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.
`
`[0006] 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 com-
`puting configuration, all the remote computing overhead
`functions are carried out by the same processorthat 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 configura-
`
`tion, the speed with which the remote computing overhead
`processing is performedis typically limited by the speed and
`loading of that processor.
`
`In another remote computing configuration, spe-
`[0007]
`cial-purpose hardwareis used to perform at least some ofthe
`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).
`
`SUMMARY
`
`In one embodiment, a method comprises receiving,
`[0008]
`at a network processor unit included in a host device, raster
`data for a remote computing session executing on a main
`processorof the host device. The method further comprises
`compressing the raster data using remote computing soft-
`ware executing on a network processor included in the
`network processor unit and transmitting the compressed
`raster data to a client device for display thereby.
`
`a method comprises
`In another embodiment,
`[0009]
`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 com-
`prises 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 com-
`puting software executing on a network processor included
`in the network processor unit.
`
`Inanother embodiment, a host computer comprises
`[0010]
`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 com-
`prises 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
`[0011]
`first remote computing software adapted to execute on a
`main processor of the client device. The first remote com-
`puting 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 compressesthe 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 pro-
`cessor adapted to execute second remote computing soft-
`ware. The second remote computing software is operable to
`
`-6-
`
`-6-
`
`
`
`US 2006/0085562 Al
`
`Apr. 20, 2006
`
`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.
`
`[0012] The details of various embodimentsof 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.
`
`118 comprises a microprocessor. Software executing on the
`main processor 118 performsat least some of the processing
`described here as being performedby the client device 102.
`In the embodiment shownin FIG.1, the main processor 118
`executes remote computing software 122 that communicates
`with the host computer 104 in order to establish, interact
`with, and/or otherwise affect a session 124 in which one or
`more items of software 126 are executed on the host
`
`computer 104.
`
`DRAWINGS
`
`FIG.2 is a block diagram of one embodimentof a
`[0014]
`network processor unit.
`
`[0015] FIG. 3 is a flow diagram of one embodiment of a
`methodof processing raster data in a network processorunit.
`
`[0021] The software (including the remote computing
`software 122) executed by the main processor 118 of the
`[0013] FIG.1is a block diagram of one embodimentof a
`client device 102 comprises appropriate program instruc-
`remote computing system.
`tions that implementthe functionality to be performed by the
`software. The program instructions for such software are
`stored on or in a computer-readable medium.In the embodi-
`ment shown in FIG. 1,
`the computer-readable medium
`comprises a local hard drive 128. During operation, the main
`processor 118 reads the program instructions from the hard
`disk 128 and executes the program instructions.
`
`[0016] FIG. 4 is a block diagram of one embodimentof a
`methodof processing raster data in a network processorunit.
`
`In other embodiments, the software that executes
`[0022]
`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
`[0018] FIG.1is a block diagram of one embodimentof a
`embodiment,
`the software that is executed on the client
`remote computing system 100. A user of a client device 102
`device 102 is stored on a file server 136 that is coupled to the
`accesses a host computer 104 over a network 106. In one
`client device 102 over, for example, the network 106. In
`embodiment, the network 106 comprises a wide area net-
`such an embodiment, the client device 102 retrieves such
`work such as the Internet. In other embodiments, the net-
`software from the file server 136 over the network 106 in
`work 106 comprises other types of networks such as a local
`order to execute the software. In other embodiments, such
`area network (LAN) and/or a virtual private network. The
`software is delivered to the client device 102 for execution
`client device 102 comprises a network interface 108 that
`communicatively couples the client device 102 to the net-
`work 106.
`
`[0017] Like reference numbers and designations in the
`various drawings indicate like elements.
`
`DETAILED DESCRIPTION
`
`In the embodiment shown in FIG. 1, the client
`[0019]
`device 102 includes at
`least one input device 110 for
`receiving input from a user of the client device 102. In one
`implementation, the input device 110 comprises a keyboard
`and a pointing device such as a mouse or trackball. The
`client device 102 also includes at least one display device
`112. In one implementation, the display device 112 com-
`prises a computer monitor. The client device 102 also
`includes a graphics adapter 114 that provides an interface
`between the display device 112 and the other components of
`the client device 102. In the embodiment shownin FIG.1,
`the graphics adapter 114 further includes a frame buffer 116
`in which raster data is stored. The raster data stored in the
`
`frame buffer 116 is used by the graphics adapter 114 and
`software executing on the client device 102 to generate a
`display image for display on the display device 112.
`
`[0020] 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 knoworlater devel-
`oped 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
`
`in one such other
`thereon in other ways. For example,
`embodiment, such software is implementedas 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 FIG.1, the network
`[0023]
`interface 108 comprises a network processor unit 130. The
`network processor unit 130 includes a programmable pro-
`cessor 132 and memory 134 in which software executed by
`the programmable processor 132 and related data structures
`are stored during execution. The programmable processor
`132 is also referred to here as the “network processor’130 of
`the client device 102 and the memory 134 isalso referred to
`here as the “network processor memory’134 of the client
`device 102.
`
`[0024] 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 sup-
`ported by the network interface 108. For example, in one
`embodiment, the network interface 108 is an ETHERNET
`networkinterface that is used to couple the client device 102
`to an ETHERNETnetwork and the network software 131
`
`controls and/or performs networking functions to interface
`to an ETHERNETnetwork. In the embodiment shown in
`FIG.1, the software executed by the network processor 132
`also comprises remote computing software 133. The remote
`
`-7-
`
`-7-
`
`
`
`US 2006/0085562 Al
`
`Apr. 20, 2006
`
`computing software 133 performs some of the remote com-
`puting processing (for example, some of the remote com-
`puting overhead processing) that is performed to interact
`with the session 124 executing on the host computer 104. In
`one implementation (for example,
`the embodiment of
`method 400 shown in FIG.4), the remote computer soft-
`ware 133 processes raster data received from the host
`computer 104 for use in generating a display image dis-
`played on the display device 112.
`[0025] 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 per-
`formed 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 FIG. 1).
`During operation,
`the network processor 132 reads the
`program instructions from the flash memory device and
`executes the program instructions.
`[0026]
`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.
`[0027] 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
`[0028]
`shown in FIG.1, the client device 102 is implemented as a
`“thin client” that is designed primarily to use and interact
`with software executing on the host computer 104.
`In
`another implementation,
`the client device 102 is imple-
`mented as a “thick client” using a personal computer or
`workstation that
`is capable of running various types of
`software locally in addition to using and interacting with
`software executing on the host computer 104.
`least one
`[0029] The host computer 104 comprises at
`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, ran-
`dom access memory (RAM), read only memory (ROM),
`and/or registers within the main processor 140. In one
`implementation, the main processor 140 comprises a micro-
`processor. 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 embodi-
`ment shown in FIG. 1, the main processor 140 executes
`remote computing software 144 that, when requested by the
`client device 102, establishes the session 124, executes the
`items of software 126 within the session 124, and interacts
`with client device 102.
`
`[0030] The software (including the remote computing
`software 144) executed by main processor 140 comprises
`
`appropriate program instructions that implement the func-
`tionality 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 FIG.1, the
`computer-readable medium comprises a local hard drive
`146. During operation, the main processor 140 reads the
`program instructions from the hard disk 146 and executes
`the program instructions.
`
`In other embodiments, the software that executes
`[0031]
`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.
`
`[0032] The host computer 104 further comprises a graph-
`ics 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 imageis transmitted to the client device 102
`for display on the display device 112. Such a display image
`comprisesraster data (that is, data describing each pixel that
`makes up the display image). In the embodiment shown in
`FIG. 1,
`the raster data is stored in a frame buffer 150
`included in the graphics adapter 148. The frame buffer 150
`comprises memory that stores the raster data for the display
`image.
`
`[0033] 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 FIG. 1, the
`network interface 152 comprises a network processor unit
`154. The network processor unit 154 includes a program-
`mable processor 156 and memory 158 in which software
`executed by the programmable processor 156 and related
`data structures are stored during execution. The program-
`mable processor 156 is also referred to here as the “network
`processor’156 of the host computer 104 and the memory
`158 is also referred to here as the “network processor
`memory”158 of the host computer 104.
`
`[0034] 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 sup-
`ported 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 ETHERNETnetwork and the network software
`
`160 controls and/or performs networking functionsto inter-
`face to an ETHERNETnetwork. In the embodiment shown
`
`in FIG. 1, the software executed by the network processor
`156 also comprises remote computing software 162. As
`described in more detail below, the remote computing soft-
`ware 162 performs some of the remote computing process-
`ing (for example, some of the remote computing overhead
`processing) for the session 124 and the client device 102 to
`communicate with one another. In one implementation (for
`example, the embodiment of method 300 shownin FIG.3),
`
`-8-
`
`-8-
`
`
`
`US 2006/0085562 Al
`
`Apr. 20, 2006
`
`the remote computer software 162 executing on the network
`processor 156 retrieves raster data from the frame buffer 150
`of the graphics adapter 148, compresses the retrieved raster
`data, and transmits the compressed raster data to the client
`device 102 for display on the display device 112.
`
`[0035] 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 per-
`formed 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 FIG. 1).
`During operation,
`the network processor 156 reads the
`program instructions from the flash memory device and
`executes the program instructions.
`
`In other embodiments, the software executed on
`[0036]
`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.
`
`[0037] 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
`[0038]
`host computer 104 shownin FIG.1, each host computer 104
`is packagedin a blade configuration suitable for mounting in
`a rack.
`
`[0039] 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.
`
`[0040] 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 ofthe 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 andthe software 126, as
`appropriate, for processing thereby.
`
`[0041] 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 execut-
`ing in the session 124 interacts with a device driver com-
`patible 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 FIG.1, is generated and stored in the frame buffer
`150.
`
`[0042] At least a portion of the raster data for the session
`display imageis retrieved from the frame buffer 150, com-
`pressed, and transmitted to the client device 102 for display
`on the display device 112. In the embodiment shown in FIG.
`1, the remote computing software 162 executing on the
`network processor 156 of the host computer 104 performs
`such retrieving, compressing, and transmitting. One embodi-
`ment of such processing is described below in connection
`with the embodiment of method 300 shownin FIG.3. In the
`
`embodiment shown in FIG. 1, the remote computing soft-
`ware 133 executing on the network processor 132 of the
`client device 102 receives, decompresses, and displays the
`transmitted raster data. One embodimentof such processing
`is described below in connection with the embodiment of
`method 400 shown in FIG.4.
`
`[0043] The embodiment of the remote computing system
`100 is shown in FIG.1 as having a single client device 102
`and a single host computer 104. In other embodiments,
`multiple client devices 102 and/or multiple host computers
`104 are used. Moreover, though only a single session 124 is
`shown on the host computer 104 in FIG. 1,
`it is to be
`understood that multiple sessions 124, in other usage sce-
`narios and embodiments, are established on each host com-
`puter 104. Furthermore, in the embodiment shownin FIG.
`1, remote computing software 133 is executed by the net-
`work processor 132 in the client device 102 and remote
`computing software 162 is executed by network processor
`156 in the host computer 104. In other embodiments, remote
`computing software is executed by a network processor
`included in a client device that interacts with a host com-
`
`puter but remote computing software is not executed by a
`network processor(if any) included in the host computer. In
`other embodiments, remote computing software is executed
`by a network processor included in a host computer but
`remote computing software is not executed by a network
`processor (if any) included in a client device that interacts
`with the host computer.
`[0044]
`FIG.2 is a block diagram of one embodimentof a
`network processor unit 200. The embodiment of network
`processor unit 200 is suitable for use as the network pro-
`cessor unit 130 of the client device 102 and/or the network
`processor unit 154 of the host computer 104. The embodi-
`ment of network processor unit 200 shown in FIG. 2 is
`implemented so as to provide ETHERNET networking
`functions. In other embodiments, the network processor unit
`(for example, a network processor unit included in a client
`device and/or a host computer) is implemented in other
`ways.
`
`In, the embodiment shown in FIG. 2, the network
`[0045]
`processor unit 200 includes at
`least one port 202 that
`provides a point at which a communication medium is
`physically coupled to the network processor unit 200. In an
`embodiment where a wireless communication link is used,
`a communication medium is not necessarily physically
`coupled to the network processor unit 200 and instead the
`network processor unit 200 includes an antenna or similar
`device for receiving and radiating wireless signals over the
`wireless communication link.
`
`[0046] The embodimentof the network processor unit 200
`is shown in FIG.1 as having a single port 202 at which data
`
`-9-
`
`-9-
`
`
`
`US 2006/0085562 Al
`
`Apr. 20, 2006
`
`packets are both received and transmitted. In other embodi-
`ments, multiple ports are used, for example, employing
`transmit and receive ports and/or supporting multiple net-
`work connections.
`
`[0047] The network processor unit 200 also includes vari-
`ous protocol-specific networking components. For example,
`in the embodiment shown in FIG.2, the network processor
`unit 200 includesa port 202, a physical layer device 204 and
`a media access control (MAC) device 206. The port 202
`provides an interface at which a communication medium
`(for example, copper twisted-pair wiring)
`is physically
`coupled to the network processor unit 200 in order to
`communicatively couple the network processor to a net-
`work. The physical layer device 204 and MAC device 206
`provides a physical layer and data layer interface, respec-
`tively, to the network to which the network processor unit
`200 is coupled. For example where the network protocol unit
`200 supports the ETHERNETprotocol, the physical layer
`device 204 is compatible with the communication medium
`coupled to the port 202 (for example, copper twisted-pair
`wiring) and the signals traveling over the medium and the
`MACdevice 206 is compatible with the ETHERNETpro-
`tocol and able to receive and transmit ETHERNETpackets.
`
`[0048] The network processor unit 200 includes a pro-
`grammable processor 208 and memory 210 in which soft-
`ware 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.
`
`[0049] The network processor memory 210 comprises any
`suitable memory now knownorlater 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 com-
`prises 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, classifi-
`cation, 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.
`
`[0050] The embodimentof the network processor unit 200
`shownin FIG.2 includes a main processorinterface 214 and
`a main memory interface 216. The network processor 208 is
`able to communicate with the main processor of the device
`in whichthe unit 200 is used via the main processorinterface
`214. Also, the network processor 208 is able to c