throbber
as) United States
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket