EP1955187B1 - Multi-user display proxy server - Google Patents
Multi-user display proxy server Download PDFInfo
- Publication number
- EP1955187B1 EP1955187B1 EP06826674.1A EP06826674A EP1955187B1 EP 1955187 B1 EP1955187 B1 EP 1955187B1 EP 06826674 A EP06826674 A EP 06826674A EP 1955187 B1 EP1955187 B1 EP 1955187B1
- Authority
- EP
- European Patent Office
- Prior art keywords
- display
- graphics
- updates
- virtual
- selective
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Not-in-force
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
Definitions
- the present invention relates generally to a multi-user host computer system, and more particularly to utilizing a proxy server to support terminal services for remote clients.
- Conventional computer systems may utilize a local display device to display output directly to one user.
- the local display device is typically positioned close to the computer system because of restrictions imposed by various physical connections that electrically couple the display device to the output of the computer system.
- Some computer systems may support a second display device that has similar proximity restrictions due to the physical connections.
- Remote users require the additional flexibility of choosing an appropriate viewing location and network connection to the host system.
- a business may wish to keep all of the host computers in a secure central "Computer Room” that has both physical security and environmental management such as air conditioning and power back-up systems.
- it is necessary for users to utilize the host computer systems from their offices and from desks located outside the "computer room.”
- the typical office environment today includes personal computers and increasingly more thin clients physically located at the users' locations. These personal computers and thin clients operate on a network having a centralized system for storage, file serving, file sharing, network management and various administrative services. Initially, systems centralized all of the disk storage associated with the computer system while users ran applications on their local desktops. More recently, recognizing the benefits of security, reduced cost of operation, and the general desire for centralizing control, personal computers and thin clients can operate as Remote Terminals (RTs) in Server Based Computing (SBC) solutions which run applications on a server.
- RTs Remote Terminals
- SBC Server Based Computing
- RDP Remote Display Protocol
- GDI Graphics Device Interface
- Efficiently supporting multiple users from a single host computer can reduce costs.
- a typical office environment seldom is everyone using their computer at the same time and similarly, seldom is any one user using all of the computing resources of their computer. So for example, a company with one hundred offices may only need a system that supports sixty users at any one time. Even with that said, such a system could be designed to support all hundred users giving them enough computing throughput to give the appearance that they each had their own host computer.
- a centralized multi-user system may be connected over varied bandwidth links to support RTs at locations in different parts of the world during the different working hours for the respective time zones.
- SBC Server Based Computing, where the applications for users run on the server with only RT services supported at the user's terminal, is another way to more effectively allocate computing resources for multiple users.
- SBC allows the host system to dynamically allocate shared resources such as memory and CPU cycles in a multi-user operating environment.
- SBC systems can employ techniques of multi-user operating systems, Virtual Machines (VM), load balancing and other means to grant different users access to different levels of performance and resources based on a number of criteria. Different priority schemes can be used to allocate SBC resources.
- VM Virtual Machines
- Different priority schemes can be used to allocate SBC resources.
- SBC can achieve higher data security, centralize the support for an organization, enhanced disaster recovery and business continuance, and reduce data storage requirements across an organization.
- Web servers are one type of SBC which may provide a multi-user platform for a variety of clients including browser based clients.
- Blade based servers implement an effective architecture for scalable multi-user host systems.
- the partitioning of the blades computational functions, I/O functions, the backplane architecture and the switching are all important in the design of a blade based server.
- Each blade may constitute the functions of a complete computer or a blade server may share significant functions across blades.
- CPUs ever increasing their performance by including multiple processor cores, the limitation of a single user to a single blade makes decreasing economic sense.
- Each blade in a blade server system may need to be monitored remotely. With the multi-function nature of the blade system, a rack of blades may need to be configured to best match different workloads.
- FIG. 1 shows a representative prior art multi-blade system-level architecture 100 including blades labeled one through eight (102, 104, 106, 108, 110, 112, 114 and 116) along with switches 120 and 122 and paths through each of the switches.
- the switches also may include paths between them as well as to link 124 that may further expand a rack of blades to another rack of blades or to some other subsystem.
- the blades of FIG. 1 may vary in number and each blade may be a processor blade, an I/O blade, a switching blade or some combination of the three.
- the I/O blades may include their own external interfaces as illustrated by Blade 4 108 path 180 and by Blade 8 116 and path 190. Examples of external interfaces may include non-network interfaces such as Fiber channel and iSCSI or network interfaces such as Ethernet and 10G Ethernet,
- the example switch matrix of Switch 1 120 and Switch2 122 shows connections 140 and 142 from each switch to each blade.
- the types of physical or logical transport for each switch may be the same or different.
- a path 144 may connect or bridge together the switches 120 and 122.
- the combination of switches and connections is referred to as a switch fabric 150 which may be distributed on each blade, part of the backplane, implemented on switching blades or may involve a combination of the three.
- the paths for the switching fabric may be unidirectional, bidirectional or a combination.
- Each blade may connect to any number of switches and may include a bridging function for different switches as part of the blade function.
- a more advanced system may include a full mesh topology fabric and may have redundancy.
- connections used for the switch fabric 150 include one or more channels of Peripheral Component Interconnect (PCI) Express, 10G Attachment Unit Interface (XAUI), Infiniband, RapidIO, StarFabric, Advanced Switching Interconnect (ASI), Gigabit Ethernet, Fiber Channel, as well as other electrical and optical interconnects.
- PCI Peripheral Component Interconnect
- XAUI 10G Attachment Unit Interface
- ASI Advanced Switching Interconnect
- Gigabit Ethernet Fiber Channel
- the functional chips of each blade may directly include a fabric interface 130.
- the blades may include fabric interface chips or bridge chips that perform the interfacing.
- the fabric and bridge chips within each blade may connect to one or more of the system switches and may integrate an additional bridging function between the switches.
- a solution is needed that allows a blade based multi-user host server to more efficiently support numerous remote users with outstanding computing and display performance.
- US 6,806,858 B1 discloses a remote monitor controller decoding image data destined for a display associated to the controller and continuously showing the image on the display until another image is provided to the controller.
- An image generating device such as a personal computer, provides image data to as many displays as desired.
- the personal computer sends the image data to a controller associated with each display.
- the controller then formats the image to be shown on the display and sits in an endless loop until another image is provided to it.
- US 6,323,854 B1 discloses a tiled monitor system that is implemented with a single controller that does not provide standard video signals to each of the monitors. Instead, only the changed portions of an image to be displayed are sent to the monitors which internally maintain a video frame buffer for displaying using a display engine.
- US 6,646,969 B1 discloses a method and apparatus for updating video graphics changes of a managed server to a remote console independent of an operating system.
- the screen (e.g. frame buffer) of the managed server is divided into a number of blocks, and each block is periodically monitored for changes by calculating a hash code and storing the code in a hash code table.
- the block is transmitted to the remote console.
- Color condensing may be performed on the color values of the block before the hash codes are calculated and before transmission. Compression is performed on each block and across blocks to reduce bandwidth requirements on transmission.
- US6323854 discloses a tiled monitor system which is implemented with a single controller that does not provide standard video signals to each of the monitors. Instead, only the changed portions of an image to be displayed are sent to the monitors, which internally maintain a video frame buffer for displaying using a display engine. Preferably, a high speed serial link is used between the monitors and the video controller for transmitting this information.
- US6664969 discloses a method and apparatus for updating video graphics changes of a managed server to a remote console independent of an operating system. Periodically, the configuration of a video graphics controller and a pointing device of the managed server are checked for changes, such as changes to resolution, color depth and cursor movement. If changes are found, the changes are transmitted to the remote console.
- US6008847 discloses a temporal compression and decompression system for color video.
- a new frame of video data is compared to the frame being displayed on a second computer and the similarity between corresponding blocks and sub-blocks is represented with one tolerance result per sub-block.
- an update quality level is selected that determines the quality at which the frame update is transmitted from the first computer to the second computer.
- the present invention provides an efficient architecture for a blade based multi-user computer system, including one or more Remote Terminals (RT) capable of interactive graphics and video, which generally manages applications and performs server based computing.
- RT Remote Terminals
- Each RT has its own keyboard, mouse and display and possibly other peripheral devices.
- the RTs provide individual users with access to the applications available on the server as well as a rich graphical user interface.
- the multi-user computer system may run a multi-user operating system, may run virtualized instantiations of a single user operating system, may run a web server engine for multiple users, may run a proxy server or may run some combination thereof.
- processor blades include a Baseboard Management Controller (BMC) that allows remote management and control from an RT.
- BMC Baseboard Management Controller
- KVM Keyboard, Video and Mouse
- the BMC and KVM functions support "out of band" operations without making additional run time changes to the base operation of the CPU and board so that diagnosis of run time issues may be performed most efficiently.
- the display related features of the remote KVM are supported by a graphics processor and display data encoder which utilize selective updates and, where required, various forms of display data compression.
- the display data encoder function may be integrated into TSA 424 or as a dedicated data encoder 752 for a combined GPU-TSA.
- a Terminal Services Blade utilizes a combination of software, a graphics processor, and data encoding to support multiple RTs by creating a virtual display environment for each RT.
- the most common methods for communication with the RT include sending an encapsulated graphics command or sending encoded sub-frame data.
- the software to manage the RTs can run on the main host processor blade, the CPU of the TSB, on a Terminal Services Accelerator (TSA), on the RT or on a combination thereof.
- TSA Terminal Services Accelerator
- the selective updates for each RT can be coordinated in software or with the assistance of hardware in a Multi-User Graphics Processor Unit (MU-GPU) or a combined TSA-GPU.
- MU-GPU Multi-User Graphics Processor Unit
- the graphics processor may follow the proposed VESA Digital Packet Video Link (DPVL) standard or an improved method using some combination of headers, status bits and signatures for the sub frames.
- DVI Digital Packet Video Link
- PCI express or another bus is used instead of DVI for the output data
- additional data encoding is performed either within the graphics processor or with an encoder attached to the graphics processor, and the software utilizes one or more graphics processors for multi-user support.
- the TSB may perform varying levels of proxy serving including client termination and may go as far as to completely emulate multiple RDP clients such that the RDP host running on the processor blades considers a process running on the TSB to be the only known client.
- the TSB can create a completely independent interface to the RT that the host processor is unaware of.
- This type of interface between the TSB and an RT may be of the form of a split proxy.
- the TSB and RT communicate over a private channel on which they can communicate more efficiently than they could using a more standard protocol such as RDP or web browser protocol.
- the processor blades may run tracking software that can be combined with the TSA to intercept functions such as video playback.
- the TSA can intercept the video data stream prior to decode by the CPU and may communicate the native video stream or a modified version, such as a transcoded or transrated version, to the target RT.
- the communication to the RTs may employ other private channels in addition to the standard RDP channels while still being managed within the RDP protocol.
- the data is encoded and then encapsulated into a network ready update packet.
- a network I/O blade, network processor, or a CPU working in conjunction with a simpler network controller transmits the graphics packet over a wired and/or wireless network(s) to an RT.
- the BMC will perform the network processing so that the processor blade CPU is not disrupted by the update packet operation.
- the CPU utilizes "Virtual Technology" to protectively partition, and performs both the operating system functions including user tasks as well as the out of band management tasks of the BMC.
- the BMC may communicate with another network controller or network physical layer (PHY) in the system.
- PHY network physical layer
- Each RT system decodes the graphics packet intended for its display, manages the frame updates and performs the necessary processing for the display screen. Other features, such as masking packets lost in network transmission, are managed by the remote display system(s). When there are no new frame updates, the remote display controller refreshes the display screen with the data from the prior frame.
- the various network systems may feed back network information from the various wired and wireless network connections to the TSB.
- the TSB uses the network information to affect the various processing steps of producing RT updates and, based on the network feedback, can vary the frame rate and data encoding for different RTs.
- the encoding step may be combined with forward error correction protection in order to prepare the transmit data for the characteristics of the transmission channel. The combination of these steps maintains an optimal frame rate with low latency for each of the RTs.
- the TSA and TSA-GPU may be implemented as a separate subsystem or combined with other offload and acceleration processing such as the network processor, security processor, XML accelerator, iSCSI processor or any combination of these.
- the present invention effectively implements a flexible blade based multi-user computer system that utilizes various heterogeneous components to facilitate system interoperability and functionality.
- the present invention thus efficiently implements an enhanced blade based multi-user server.
- the present invention relates to an improvement in blade based multi-user computer systems with support for remote terminals. While the described embodiments relate to blade based multi-user computer systems, the same principles and features could be equally applied to other types of single and multi-user systems and other types of remote terminals.
- the blade based multi-user computer system 100 also referred to as "host 100," is designed to support multiple users at Remote Terminals as described below with reference to FIG. 3 .
- Each RT is able to time-share the host 100 as if it were their own local computer and have complete support for all types of graphics, text and video content with the same type of user experience that could be achieved on a local computer.
- Paths 180 and 190 when used a network connection correspond to FIG. 2 path 290 and FIG. 4 path 490 which may connect to FIG. 3 network path 390.
- host 100 may be connected through link 124 to a WAN, storage subsystem, other hosts or a variety of other data center connections which may take the form of GigE, 10G Ethernet, iSCSI, Fiber Channel (FC), Fiber Channel IP (FCIP) or another electrical or optical connection.
- the host 100 may support a variety of multi-user Operating Systems (OSs) or software that virtualizes a single user OS may be deployed on one or more of the processor blades.
- An operating system such as Citrix or Windows Server is designed as a multi-user OS.
- Windows XP though not specifically designed for simultaneous multiple users, can be used in such a configuration with the help of either lower level virtualization software, such as VMWARE or XenSource, or another means to perform user switching so quickly as to appear as a multi-user OS.
- Lower level virtualization software such as VMWARE or XenSource
- Different management controls may allow RTs and programs to statically or dynamically be moved from processor to processor. Load balancing may be performed by the OS for each processor or the system may perform load balancing across multiple processors.
- Host 100 may also run a type of web server and support multiple users through web based interfaces. The host 100 may function as a proxy server for various RTs and communicate with application servers or web servers.
- processor blade 200 preferably includes, but are not limited to, a multi-CPU Complex 202, a bus bridge-controller 204, a main system bus 206 such as PCI express, local I/O 208, main RAM 234, a Fabric Interface (FI) 130 to connect to the switches, backplane and other blades, and optionally a Baseboard Management Control (BMC) subsystem 800.
- a multi-CPU Complex 202 preferably includes, but are not limited to, a multi-CPU Complex 202, a bus bridge-controller 204, a main system bus 206 such as PCI express, local I/O 208, main RAM 234, a Fabric Interface (FI) 130 to connect to the switches, backplane and other blades, and optionally a Baseboard Management Control (BMC) subsystem 800.
- BMC Baseboard Management Control
- the fabric interface (FI) 130 may include significant processing.
- the fabric interface 130 may include a 10G Ethernet processor (not shown) that performs all of the necessary packet level filtering and processing both for locally generated packets and for the ASI fabric interface.
- a fabric interface processor may require external RAM 230 or may have sufficient internal storage.
- the network physical layer interface (PHY) may be integrated with the FI processor or may utilize external PHY components.
- the local I/O 208 and local I/O connections 290 may be controlled by this same FI processor.
- the fabric interface 130 may attach directly to the system bus 206.
- Switch1 120 and the associated paths 140 utilize the ASI bus protocol which allows tunneling of PCI Express packets.
- Switch2 122 and the associated paths 142 may be a XAUI style bus and may be more optimized for storage and networking and may utilize 10G Ethernet protocols.
- the system may primarily utilize the ASI bus for communication between different processor blades and the XAUI bus for communicating with networking and storage blades. Each blade may include one interface, both interfaces or with both interfaces also include the ability to bridge traffic transfers between the two buses.
- the FIG. 2 multi-CPU complex 202 may include one or more processor chips each having one or more CPU cores (not shown) which may each execute multiple simultaneous threads. At each level, each CPU core may include either dedicated cache memory and at some levels multiple CPU cores may share cache memory.
- the multi-CPU complex 202 may control and access RAM 234 independently or it may utilize the bridge controller 204 for performing RAM 234 accesses. In some other configurations, the multi-CPU complex 202 may directly interface (not shown) to the main system bus 206.
- the local I/O 208 may include various I/O interfaces and controls both for external interfaces 290 and via path 210 for resources located within the processor blade 200.
- the major I/O functions such as storage and networking may either be included on each Processor Blade 200 or other dedicated I/O blades may be supported over the switching fabric 150.
- the interfaces 140 and 142 may be directly integrated into a bridge controller 204 or may require a fabric interface 130 chip.
- each processor blade 200 may effectively be a "computer system," having a way to observe and manage the system is highly desirable. Since a host 100 may be located in a special computer room, it is often desirable to allow the system to be observed and managed from remote terminals (RTs) 300. RTs may be specially designed thin clients, or for management functions are more typically computers running management software. Alternatively, the RTs may include browser based software for performing the management functions.
- the processor blade 200 may include a web server for providing a user interface for browser based management.
- BMC Baseboard Management Control
- the main CPU in 202 can use virtualization technology to isolate the management functions from the operating system and user functions. While in a multi-core CPU 202 a specific core may be dedicated to such a management function, a properly designed CPU may include hardware, such as the Intel Vanderpool VT technology, to allow tasks or threads to be isolated from each other independent of what core they are running on. As such, a single CPU core may simultaneously both run a protected virtual management machine mode for supporting out of band management functions and run an operating system virtual machine mode to support various operating system and user tasks.
- BMC with KVM 212 includes a local graphics processor such as MU-GPU 412 of TSA-GPU 700 that performs the display processing for the standard operating system running in a virtual machine mode.
- a remote administrator may wish to observe or perform out of band management of the processor blade 200.
- a protected virtual management machine mode of the host CPU 202 may be used to assist in performing the out of band remote administration.
- the remote KVM administration may include accessing the same local graphics processor display but from the out of band network interface. Such access to the graphics processor display may utilize the more advanced features of the TSA-GPU 700 detailed in FIG. 7
- a separate CPU 808 within BMC with KVM 212 is used for managing the out of band remote administration instead of using a protected virtual management machine mode on the host CPU.
- FIG. 3 is a block diagram of a Remote Terminal 300, in accordance with one embodiment of the invention, which preferably includes, but is not limited to, a display screen 310, a local RAM 312, and a Remote Terminal System Controller (RTSC) 314.
- the RTSC 314 includes a keyboard, mouse and I/O control subsystem 316 which has corresponding connections for a mouse 318, keyboard 320 and other miscellaneous devices 322 such as speakers for reproducing audio or a Universal Serial Bus (USB) connection which can support a variety of devices.
- USB Universal Serial Bus
- Other integrated or peripheral connections for supporting user authentication via secure means, including biometrics or security cards, may also be included.
- the connections can be dedicated single purpose such as a PS/2 style keyboard or mouse connection, or more general purpose such as USB.
- the I/O could include a game controller, a local wireless connection, an IR connection or no connection at all.
- Remote terminal system 300 may also include other peripheral devices such as a DVD drive.
- Some embodiments of the invention do not require any external inputs at the remote terminal system 300.
- An example of such a system is a retail store or an electronic billboard where different displays are available at different locations and can show variety of informative and entertaining information. Each display can be operated independently and can be updated based on a variety of factors.
- a similar secure system could also include some displays that accept touch screen inputs, such as an information kiosk or Automated Teller Machine (ATM) at a bank.
- ATM Automated Teller Machine
- the FIG. 1 host 100 may include networking interfaces (e.g., 180, 190) from each blade or a shared network controller may be included. In either case, a network connection is established from the host 100 to input 390 of the RT 300.
- Network controller 336 supports secure protocols on the network path 390 which could be wired or wireless and the data traveling over the network can be encrypted via a key exchange.
- a common network example is Ethernet, such as CAT 5 wiring running some type of Ethernet, preferably gigabit Ethernet, in which the I/O control path may use an Ethernet supported protocol such as standard Transport Control Protocol and Internet Protocol (TCP/IP) or some form of lightweight handshaking in combination with UDP transmissions.
- TCP/IP Transport Control Protocol and Internet Protocol
- RTSP Real-time Streaming Protocol
- RTP Real-Time Transfer Protocol
- RTCP Real-Time Control Protocol
- DSCP layer 3 DiffServ Code Points
- DLNA Digital Living Network Alliance
- uPnP uPnP
- QoS and 802.1P are also enhanced ways to use the existing network standards.
- the network carries the encapsulated and encoded display commands and data required for the display.
- the CPU 324 coordinates with the network controller 336, 2D drawing engine 332, 3D drawing engine 334, data decoder 326, video decoder 328 and display controller 330 to support all types of visual data representations that may be rendered and displayed locally on display screen 310.
- An extra thin RT may include as little as just a display controller 330 with a CPU doing the display processing though having at least one type of decoder or drawing engine is more likely.
- the various processing elements may decode packets that represent an entire frame or packets that represent various sub frames of display data.
- the packets include various slices of encoded display data that correspond to fixed positions of the display.
- the CPU 324 may receive the packets and by reading the header information for the packets determine the appropriate location of the display that the packed is intended for.
- the appropriate resource such as the data decoder 326, is used to decode the slice of data and the decoded data is transferred to the appropriate position within the display memory.
- the data decoder 326 may be set up to produce the decoded data directly into the display memory position or the data may be decoded to another area and transferred by the 2D drawing engine 332, the CPU 324 or by another means to the intended position.
- the RT 300 can be first initialized either by booting out of a local FLASH memory (not shown) with additional information being provided over the network 190/390 by the host 100.
- the connection between the RTSC 314 and the display screen 310 may be used in a reverse direction or bidirectional mode utilizing standards such as Display Data Channel (DDC) Interface, Extended Display Identification Data (EDID) and other extensions to identify the display monitor capabilities.
- DDC Display Data Channel
- EDID Extended Display Identification Data
- a USB connection via keyboard, mouse and I/O controller 316 may also be used in the connection to the display screen 310.
- the information such as the available resolutions and controls are then processed by the CPU 324.
- System 300 may implement a protocol such as uPnP or another discovery mechanism where it is able to communicate with the host 100.
- CPU 324 may provide the RT information, including the display monitor information, to the Host 100 so that each RT can be instantiated at the host side.
- the initial display screen may come from either the FLASH memory or from the host 100. Following a first full frame of display data, the host computer 200 need only send partial frame information over the network 390 as part of the display update network stream. If none of the pixels of a display are changed from the prior frame, the display controller 330 can refresh the display screen 310 with the prior frame contents from the local RAM storage 312.
- the output of the RTSC 314 may be encrypted using a protocol such as HDCP. If display screen 310 is connected by a cable, such as with DVI, HDCP may be a requirement for playing back content that has DRM.
- RTSC 314 may additionally be designed to provide a highly secure processing environment where the various encryption keys are never exposed outside the chip.
- RTSC 314 may utilize local cryptography methods independent of the key exchanges performed with the host 100 and the display screen 310.
- Display updates are sent via the network stream, and may consist of encapsulated 2D drawing commands, 3D drawing commands, encoded display data or encoded video data.
- the network controller 326 receives the network display stream and the CPU 324 determines from the encapsulation header which of the functional units 332, 334, 326 and 328 are required for that packet.
- the functional units perform the necessary processing steps to draw or decode the image data and update the appropriate area of RAM 312 with the new image.
- the display controller 330 will use this updated frame for display screen 310.
- the display controller 330 transfers a representation of the current image frame from the RAM 312 to the display 310.
- the image will be stored in RAM 312 in a format ready for display, but if RAM cost is an issue, the image or portions of the image can be stored in the encoded format.
- External RAM 312 may be replaced by large buffers within the remote terminal system controller 314.
- Display controller 330 may also be able to combine two or more display surfaces stored in RAM 312 to composite an output image for display by screen 310. Different blending operations may be performed along with the compositing.
- CPU 324 communicates with TSB 400 ( FIG. 4 , discussed below) to best set up and manage the overall display operations for the RT.
- Initial setup may include enumerating the types of functions supported in the RTSC 314, specifications of display screen 310, amount of RAM 312 available for buffering and caching data, command set supported by the 2D drawing engine 332, command set supported by the 3D drawing engine 334, formats supported by the data decoder 326, formats supported by video decoder 328 and the capabilities of display controller 330.
- Other management optimizations at run time include managing and caching display bitmaps in RAM 312 so they do not need to be resent.
- the configuration for the RT 300 may include a basic data decoding architecture or software running on a more conventional CPU-based platform and may be based on an Internet browser architecture.
- the functional units may be used by a special browser that directly calls the functional units, by a browser that includes "plug ins" or drivers to make use of the functional units, or a more standard browser may use a local agent that acts as an intermediary to determine which requests can be fulfilled locally and which require communication with the web application on the host system.
- AJAX Asynchronous Java Script language and XML
- AFLAX Asynchronous Flash and eXtensible Markup Language
- AJAX may be used to perform selective requests where the data decoding at the client side uses the functional blocks of RT 300.
- the agent-based selective requests from an Internet browser based RT 300 may be supported by the host processor blade 200 and the terminal services blade 400 to further optimize the overall system. Additional communication protocol handling may be performed by an AJAX agent. Other example AJAX operations may include management of security keys and DNS lookups.
- An AJAX based agent on the RT may utilize host processor blade 200 or TSB 400 as a proxy to an application server or web server.
- the AJAX based agent may include special communication mechanisms and operate as a split proxy with the host processor blade 200 or TSB 400 providing the other portion of the proxy.
- FIG. 4 illustrates a second preferred embodiment of a Terminal Services Blade (TSB) 400 for a blade based multi-user computer system 100, though TSB 400 may be alternately embodied as a separate computer or appliance that is attached via networking to a host processor.
- TSB 400 may include other non-network connections such as DVI or other cables to the display output of the server, and may include a local DVI output to preserve support for a local display device.
- Such a DVI output from the TSB 400 may either be a pass-through mode from the server or may go through a decode step when the data on the DVI cable is not suitable for a simple pass-through operation.
- TSB 400 may operate independently from a host processor to perform as a proxy server for multiple RTs.
- TSB 400 includes a CPU Subsystem 402, memory 434, bridge controller 404, local I/O 428 with RAM 432 and the components that make up the Terminal Services Accelerator and Multi-User Graphics Processor Unit subsystem (TSA-GPU) 700.
- Bridge controller 404 may interface directly with the switch fabric or may include a fabric interface 130 for connection to switch fabric 140 and 142.
- the main functional units within the TSA-GPU 700 are the multi-user GPU (MU-GPU) 412 and the Terminal Services Accelerator (TSA) 424 which have associated RAMs 418 and 430 and may include a connection 222 via display interface 220.
- the TSA-GPU will have shared RAM and may be further integrated as described below in reference to FIG. 7 .
- a single TSB may perform the graphics operations for multiple processor blade 200s each having one or more CPUs each having one or more processor cores, with any number of virtual machines running on the mix of CPUs and processor cores.
- requests to TSB 400 may be managed or performed in a coordinated fashion.
- RDP Remote Desktop Protocol
- Citrix ICA based systems the display commands are already virtualized and the processor blades 200 would not be attempting to directly access a graphics subsystem.
- Other multi-user or multi-processor operating systems may include a coordinated means to serialize accesses to a graphics subsystem and the TSB 400 combined with the operating system may allow the coordinated accesses to be properly mapped such that a single TSA 700 can support multiple displays for one or more multi-user operating systems.
- the TSB 400 needs to create a virtual abstraction layer to satisfy asynchronous commands and requests from multiple virtual machines in an orderly fashion and to properly support the resulting displays for the RTs.
- the TSB 400 may write graphics drivers for the different operating systems that may be run on different virtual machines of the processor blades 200.
- the TSB 400 would then coordinate the driver calls from the different operating systems into coordinated multi-display TSA 700 operations.
- each operating system would utilize a standard graphics driver and the TSB 400 would effectively need to intercept the driver calls.
- the intercepted driver calls would then be managed to operate the TSA 700 in a coherent multi-display mode and to appropriately manage the displays for each virtual machine.
- one of the functions of TSB 400 is to offload the Processor Blades 200 from some of the management for each of the RTs and to accelerate some of the offloaded processing so that each RT has improved display experience.
- the types of offload and acceleration support include encapsulating graphics operations into remote graphics commands, assisting in determining what capabilities and bitmaps are cached at each RT to determine which graphics commands are best suited, encoding and encapsulating bitmaps that need to be transferred to RTs, and best managing multimedia bitstreams.
- browser and agent based RTs may initiate more specific requests for host 100 to provide updates of graphics data which may be encoded by TSB 400 before transmission.
- the host system 100 is a web server where processor blade 200 performs the data base and "back end" operations of the web server function and TSB 400 operates as a media coprocessor managing the display elements for the web server function.
- Additional functions such as inspection and encapsulation of eXtensible Markup Language (XML) traffic, Simple Object Access Protocol (SOAP), HTTP traffic, Java Virtual Machine (JVM) and other traffic associated with Internet based communication may also be supported.
- the processor blades 200 together with the TSB 400 while performing any desired anti-spam, anti-virus, content filtering, access restriction enforcement or other packet filtering based algorithms, can allow RTs to effectively perform remote access to the complete Internet.
- Such additional functions may be particularly useful for supporting RT Internet browsing using the host as a proxy for the web content accesses. Though there may be some redundancy in a system, this method may provide more specific user controls than more general network security appliances that are utilized between the host system and the WAN.
- the TSB 400 may provide other offload functions such as DNS lookup. Providing DNS lookup may allow a reduction on the number of TCP/IP connections that need to be set up and managed.
- the TSB 400 may also provide offload for security such as SSL.
- TSB 400 may provide certificate-based crypto algorithm support for secure clients.
- a special proxy server on the TSB 400 may use other enhancements for Internet based traffic which may include reformatting or recoding Internet based content depending on the RT display device and the execution capabilities within the RT. For example, if the RT device is a cellular phone or Personal Digital Assistant (PDA) with a limited screen resolution, the TSB 400 can filter down high resolution content into lower resolution images for faster and more appropriate display.
- the TSB 400 may run other more intelligent content filtering and web page interpretation algorithms to perform functions like removing banner advertisements and other extraneous information so that the core information may be sent to the cell phone.
- TSB 400 may run a full web browser and the RT runs a less capable web browser or a micro-browser.
- the proxy functions of TSB 400 may translate advanced web formats into web format that can be comprehended by the browser of the RT.
- TSB 400 can act as an intermediary proxy server and transfer display data post- Active-X controls to an awaiting PDA.
- Application layer Regular Expression (RegEx) content processing may also be performed. Reformatting and re-coding may also be performed to increase security for clients.
- XML and SOAP may be subject to hijacking and other forms of passing of viruses, TSB 400 could recode XML and SOAP into a safe display format so that an RT client would not be subject to such risks.
- host 100 or more specifically TSB 400 is used as a more general multi-format network file proxy server for RTs to view files that they would otherwise not be able to read.
- an RT may include a viewer for various display formats but may not include the ability to open and view an Adobe PDF file or a Microsoft Word document.
- the viewer on the RT may be a browser that supports various HTML and other web oriented formats.
- the host 100 may be able to open and view both an Adobe PDF file and Microsoft Word document.
- the host 100 may then use the functions of TSB 400 to translate the graphical output from the PDF file or Word document into a compatible display format for viewing on the RT.
- the RT may have network links to many types of data files and by utilizing a multi-format proxy viewer has the ability to view many types of files that would otherwise not be able to be decoded for viewing on the RT itself.
- This type of multi-format proxy viewing can be combined with a network file sharing function or with a mail server. For example, if the multi-format proxy viewer translates file attachments into a format that is viewable by a cell phone RT then it may be able to receive e-mails with a variety of attachments.
- the viewable attachments could be included with the mail message or a link to the viewable version of the attachments may be included in the mail message.
- Multimedia bitstreams may include a video stream that is already in a compressed format and is being received at FIG. 2 processor blade 200 or FIG. 4 TSB 400.
- the multimedia bitstream will already be in a format that is compatible with the intended RT 300.
- a software tracking layer running on processor blade 200 will direct the bitstream to TSB 400 which will encapsulate the bitstream into the appropriate packet format for transmission to the RT.
- Encapsulation may include adding header information, such as the origin for the video display window, or modifying packet organization, such as converting a transport stream into a program stream with different packet sizes.
- the multimedia bitstream will not be in a format readily handled by the target RT or not in a format appropriate for the network connection.
- the TSB 400 operates as a transcoding proxy server and performs the more complex steps of decoding and re-encoding, transcoding or transrating the multimedia bitstream.
- the incoming multimedia bitstream may be an encoded HDTV MPEG-2 stream. If the window size at the RT is set for a small 320 x 240 window, it may make sense to conserve network bandwidth and have the TSB 400 transcode and transrate the video into a lower bitrate representing the desired display window size.
- the TSB 400 may transcode the video into a compatible format. Even if the format is compatible, other incompatibilities such as the Digital Rights Management (DRM) or the encryption scheme may exist.
- DRM Digital Rights Management
- the TSB 400 can also translate from one DRM or encryption scheme to a scheme suitable for the target RT.
- the content owner may use a DRM scheme based on a proprietary key exchange such as one used by Apple's iTunes.
- the TSB 400 may inspect the output of an iTunes video player running on either a processor blade 200 or on a local CPU 402 and capture the decrypted content.
- the decoded output may be still encrypted in HDCP if the output is from a DVI video bus.
- TSB 400 needs to have the proper keys to decode the HDCP protected content and may act as a display device in order to perform the decryption.
- the TSB 400 would then re-encrypt the content into a protocol that is understood by the remote client playback device.
- the newly protected data stream can be transmitted over a network to a receiving device that has the proper decryption and display capabilities.
- DTCP Digital Transmission Content Protection
- Microsoft's current format may use a proprietary protocol.
- RDP Remote Desktop Protocol
- the drivers within the host system detect and decode the bitstream into a Device Independent Bitmap (DIB).
- DIB Device Independent Bitmap
- the DIB is then translated into RDP transfer commands and the DIB format data is unreliably transferred over the network to the RT.
- a couple of frames of DIB data make it through to the RT for display.
- RDP based graphics operations make use of DIBs as well.
- the TSB 400 can perform various levels of encoding for conventional graphics bitmaps such as DIBs.
- the encoding for graphics bitmaps may be lossless or lossy with a goal of providing visually indistinguishable representations of the original graphics quality.
- a simplified software interface for the TSB 400 may include just interfacing with the host CPU through the RDP API, while a more aggressive implementation would allow TSB 400 access to the underlying DirectX driver framework.
- the encoded DIB transfers and the special compressed video domain transfers are not part of a standard RDP implementation. Therefore these transfers may be piggybacked into an existing RDP transfer format, operate as some type of private RDP extension or operate outside of the RDP framework.
- the RDP client may be required to exchange a key with the host to make use of the encrypted packets. Since TSB 400 is intercepting the RDP client packets, the TSB 400 may include appropriate acceleration and offloading for key exchange and decryption for communicating with the host processor. In addition, in order to maintain the security of the system, the TSB 400 and network interface will assure that all communication with the RTs is appropriately encrypted.
- the TSB 400 may operate as a web server offload engine either as part of the web server or as an aggregation point for multiple web servers, and support browser and agent based RTs.
- Web server acceleration may be performed for JAVA, data encoding, data transcoding and other functions.
- the RTs may run a more intelligent agent based browser which includes support for multiple protocols such as AJAX. Browsers using AJAX or a similar approach are able to maintain and manage information within the browser during user operations and only have to contact the web server when new information is needed.
- AJAX allows a more specific request of information to be performed and the web server provides just that new information which is then used with the previously stored information to locally generate a new frame.
- This persistence can be used for improving the user interface by prefetching information, by requiring smaller more efficient requests and by managing security.
- the requests generated by AJAX may be managed by the TSB 400 where security can be maintained and the data efficiently encoded by TSB 400 and the data decoded at the client side using AJAX and the functional blocks of RT 300.
- a well designed AJAX web application will make use of the client's or proxy's ability to cache objects and lessen the need for sending complete frames where the TSB 400 may still be used for encoding the first request of any frame data.
- the TSB 400 may be used as a proxy between such a web application and an AJAX based browser.
- Host 100 may not be the web server and may be a server located at an Internet Service Provider (ISP) or at a Point of Presence (POP). As a proxy, the host 100 or TSB 400 can coordinate with the RT 300 to perform selective updates based on the client driven requests.
- ISP Internet Service Provider
- POP Point of Presence
- the TSB 400 proxy can process and compare the new frame and old frame and provide the client with the encoded update information. This can allow a reduction in bandwidth and an improved user interface for the RT 300 even for web applications that are not specifically designed for selective updates.
- TSB 400 can be implemented by a programmable solution that also solves the general offload tasks for several unrelated operations. Servers may benefit from offloading the network, storage, security and other tasks.
- An offload processor can be designed to statically or dynamically balance the various offload tasks and accelerate the overall system throughput for any given workload.
- the server may be performing server based computing for thin clients during the day and running a large database operation at night. During the day the offload engine will run the operations described for the TSA. At night the offload engine will run iSCSI acceleration for accessing the large database from the disk storage system.
- the flexibility may be managed by an on-board or system wide management procedure that tracks the various workloads. The granularity for switching between offload tasks can be extremely small.
- the offload engine may be designed to perform very fast context switching so that within a single session it could perform the network, terminal services, storage, security and other offload tasks for the same session.
- TSB 400 uses processing blocks that are programmable and configurable and can be task switched and reconfigured quickly as the workload changes. Various memory blocks will be included in each of the processing blocks and a larger memory 434 may also be included.
- the CPU 402 is a generally programmable processor including its own cache memory and can perform the housekeeping and management for the offload as well as perform some of the higher level protocol and interface processing.
- Bridge Controller 404 may integrate network processors and manage the switch fabric interface 130 functions of TSB 400 and can manage multiple pipes of simultaneous communication. Special internal memory such as Content Address Memory (CAMs) as well as traditional memory may also be included within bridge controller 404.
- CAMs Content Address Memory
- Processing units of bridge controller 404 and TSA-GPU 700 may be implemented as Configurable Data Processors (CDPs) that are designed to be readily reconfigured to perform different processing at throughputs normally associated with dedicated hardware blocks.
- CDPs Configurable Data Processors
- VLIW Very Long Instruction Word
- SIMD Single Instruction Multiple Data
- MIMD Multiple Instruction Multiple Data
- DSP Digital Signal Processing
- a CDP may also function as a security processor with or without additional dedicated hardware blocks for cryptography and key related functions.
- the CDPs may be configured to perform data encoding for tiles and rectangles, various forms of transcoding or transrating on video or data, generation and comparison for tile signatures and the other tasks described below with respect to the TSA-GPU 700.
- the CDPs may be configured for different aspects of iSCSI, Fiber Channel (FC), Fiber Channel Internet Protocol (FCIP) and Internet Protocol related tasks. Connections 490 may be configured to connect to FC or another storage protocol.
- a CDP may be configured to process XML traffic, SOAP, HTTP traffic, JVM and other traffic associated with Internet based communication.
- Other web server acceleration may include offloading DNS lookups and handling the TCP/IP connections as well as performing data encoding and transcoding for both traditional web clients as well as for AJAX-style agent based browsers.
- the TSA-GPU 700 performs the graphics related offload and acceleration functions of the TSB 400.
- Multi-User Graphics Processor Unit (MU-GPU) 412 that includes support for selective display updates via Packets and may follow some or all of the proposed VESA Digital Packet Video Link (DPVL) standard though a preferred embodiment includes enhanced capabilities.
- the TSA 424 supports packet display updates from MU-GPU 412 either via system bus 406 or preferably supports input paths 414 and 416 which may be Serial Digital Video Output SDV01 and SDV02 or generalized ports having different bus widths, signaling protocols and frequencies.
- TSA 424 may be connected to local I/O or a network controller over a dedicated link 426, via the main system bus 4406 or more closely integrated via a System on Chip (SOC) implementation.
- SOC System on Chip
- a second system bus, 408 may also be included for additional bandwidth and to more directly support the bridge controller 404 and its interfacing to multiple switch fabrics.
- the MU-GPU 412 produces the display based selective updates which indicate which portions of the display have changed.
- the selective updates can take up the form of rectangles or tiles that are output either over video output path 414 or 416 or over the main system bus 406.
- the rectangle updates include a packet header to indicate the origin, size and format of the window.
- the origin can be used to indicate which RT is the destination.
- Tiles can also be used and may be standardized to one or more fixed sizes such that the header may need less information to describe the tile. Other information, such as if and how the rectangle or tile should be scaled at the RT, may also be included in the header.
- Selective updates include support for BitBlt, Area Fill and Pattern Fill where instead of sending a large block of data, a minimal amount of data is sent along with the command parameters for the operation to be performed at the RT.
- Other headers support updates in the forms of Video Stream, Genlock, scaled video stream, Gamma Table and Frame Buffer Control.
- Other enhanced and complex commands can also be put into the form of a selective update to an RT.
- the proposed DPVL specification details one possible implementation for the selective updates along with their headers.
- One MU-GPU 412 may be effectively virtualized by the system for all of the RTs 300 by organizing RAM 418 into various display surfaces each containing display data for multiple RTs.
- the MU-GPU 412's 2D, 3D and video graphics processors (not shown) are preferably utilized to achieve high graphics and video performance.
- the graphics processing units may include 2D graphics, 3D graphics, video encoding, video decoding, scaling, video processing and other advanced pixel processing.
- the MU-GPU 412's display controllers may also perform functions such as blending and keying of video and graphics data, as well as overall screen refresh operations.
- S-Buffer 404 stores status bits, a signature or both status bits and a signature which correspond to each tile for each virtual display.
- S-Buffer 404 stores the tiles themselves, with or without header, status bit and signature information, where the tiles are arranged to be output for selective updates.
- the graphics engines and the display controller will typically composite a complete display image that corresponds to the primary surface for each RT display.
- the RAM 418 will effectively contain an array of the display frames for all of the RTs.
- the display memory may be configured as a virtual display of 16K x 16K pixels.
- 256 RT displays of 1K x 1K can be mapped into the 16K x 16K array.
- 8192 virtual displays could be mapped into the 16K x 16K display area. Additional off screen and scratch memory would also likely be included.
- the MU-GPU 412 may add different security features to secure the different display areas and prevent one user from gaining access to another user's frame buffer.
- the system would preferably include hardware locks that prevent unauthorized access to protected portions of the display memory for both security and reliability concerns.
- FIG. 5 shows an example configuration of FIG. 4 memory 418 where the virtual display space is set to 3200 pixels horizontally and 4800 pixels vertically.
- Memory 418 is divided into eight 1600 x 1200 display areas labeled 520, 522, 524, 526, 528, 530, 532 and 534.
- a typical high quality display mode would be configured for a bit depth of 24 bits per pixel, though often the configuration may utilize 32 bits per pixel as organized in RAM 418 for easier alignment and potential use of the extra eight bits for other purposes when the display is accessed by the graphics and video processors.
- the illustration of the tiled memory is conceptual in nature as a view from the MU-GPU 412. The actual RAM addressing will also relate to the memory page sizes and other considerations.
- FIG. 5 in display area 528 further illustrates a display update rectangle 550.
- the dashed lines 540 of the 1600 x 1200 display correspond to even coarser block boundaries of 256 x 256 pixels referred to as precincts.
- precincts As is apparent from display window 550 the alignment of the display window boundaries does not necessarily line up with the precinct boundaries. This is a typical situation as a user will arbitrarily size and position a window on a display screen.
- each of the precincts that are affected by the display window 550 needs to be updated.
- the data type within the display window 550 and the surrounding display pixels may be of completely different types and not correlated.
- the precinct based encoding algorithm if it is lossy, needs to assure that there are no visual artifacts associated with either the edges of the precincts or with the borders of the display window 550.
- the actual encoding process may occur on blocks that are smaller, such as 8 x 8 or 16 x 16, than the precincts. Therefore, a preferred embodiment uses a deterministic encoding algorithm, where the same result is produced for a set of pixels regardless of the surrounding pixels, and no artifacts will be produced by the arbitrary alignment of the window.
- the block boundaries for the encoding scheme are also a consideration with respect to the tiles. For example, an encoding scheme may require block boundaries in multiples of 8 pixels. If the source tile is not a multiple of 8 pixels, it will need to be padded with the surrounding data. In another case, it is often preferred to orient the block boundaries to the screen, not to the particular user-placed rectangle or tile. If a user manipulates a window that is 80 x 80 pixels, even though it theoretically could have been placed to use a minimum of ten 8 x 8 blocks in each of the horizontal and vertical directions (one hundred blocks total), it is more likely to span eleven blocks in each direction (121 blocks). The rectangle update and any proceeding encoding of the rectangle will therefore encode 88 x 88 pixels (121 blocks) where some of the surrounding pixels are required for padding.
- the MU-GPU 412 can support an arbitrary number of arbitrarily sized displays. In another example, it may be simpler to support smaller displays as sub-windows or a larger display as an overlay window spanning more than one display area. As delineated by rectangle 536, a 1920 x 1080 window would need to use both the 532 and 534 areas. While this wastes area, it may be simpler to implement than creating custom sizes for each display. Because of the selective rectangle update mechanism of MU-GPU 412, only the relevant areas of the screen will ever be transmitted. While DVPL dynamically controls the CRTC control registers to manage the selective updates, other more flexible mechanisms such as an S-Buffer can be implemented that require less processor intervention and improved system efficiency.
- a more flexible system may also break the rectangles into more regular sized entities such as tiles.
- the tiles may be dynamically set to any multiple of the block size where the block size is the smallest entity for the data encoding algorithm.
- the blocks may be oriented either to the source image or to fixed block positions of the screen. The size of the tile would be included in the header information.
- An area of memory, such as 530, may be designated as an S-Buffer 404 for managing the selective updates.
- the S-Buffer includes status bits that correspond to the tiles of display frames 520, 522, 524 and 526 where the status bits indicate if a tile requires selective updating.
- the S-Buffer 404 may also store a signature for each of the tiles which is then used in determining the need for selective updates.
- the tiles from frames 520, 522, 524 and 526 which require selective updates are copied to memory area 530 and queued for selective update output.
- the queued tiles may include various header, status and signature information.
- FIG. 6A shows a more detailed view of FIG. 5 display map 536 which has a High Definition Television (HDTV) resolution of 1920 x 1080 referred to as 1080P.
- HDTV High Definition Television
- FIG. 6B another system further divides the rectangles 614 into tiles 620 containing 80 x 40 pixels, and a system may choose these smaller tiles as the basis for selective updates.
- a more flexible system may utilize both the larger rectangles 614 made up of the six tiles 620 and the tiles themselves and use the header information to delineate which type is being output at any given time.
- each tile has a 10 x 5 configuration of blocks and each rectangle has a 20 x 15 configuration of blocks.
- a system that utilizes both larger rectangles and smaller triangles may use different mechanisms for each in determining the selective update requirements.
- the large rectangles may have associated status bits indicating whether they have changed or not and the smaller tiles may utilize a signature for making such a determination.
- the status bits and signatures may be managed with S-Buffers as described below.
- the MU-GPU 412 may integrate the processing to perform the selective encoding of the tiles directly, or each tile may be checked using the selective update process and output to the TSA 424 and will include an appropriate header.
- the header will be processed by the TSA 424 and, based on the fields within the header, the TSA 424 will know which RT and where on the display screen the tile is intended for. Where appropriate, the TSA 424 will encode the tile into a compressed format, adjust any required header information and provide the tile and header for further network processing.
- the MU-GPU 412 and TSA 424 may partition the selective update process differently. In some cases the MU-GPU 412 can perform the complete management and will only send the tiles that need updating to the TSA 424. In other cases, the TSA 424 is required to perform further filtering of the slices to determine which slices truly require updates.
- the selective update mechanism can be hardwired or require CPU intervention and the hardware may be implemented across both the drawing engine and a selective update refresh engine. The encoding of the tiles may also be performed either in the MU-GPU 412 or in the TSA 424.
- the MU-GPU 412 may also output the graphics drawing commands for the RT to the TSA 424 over the digital video bus, or the software drivers may provide the commands directly to the TSA 424.
- an S-Buffer is used where the MU-GPU 412 has a drawing engine that manages status bits for each tile and a selective update refresh engine that monitors the status bits as it manages the selective display updates for each tile.
- the S-Buffer may be implemented as a separate memory plane of data.
- the hardware drawing operations of an enhanced MU-GPU 412 can update the S-Buffer status bits without additional commands.
- the status bits are then used by selective update hardware to determine which of the tiles needs to be updated at the RT.
- the selective update hardware may periodically traverse the S-Buffer and read the status bits.
- the selective update hardware will either pass over a tile that does not need to be updated or it will read the tile for selective update, output the tile along with the header information and update the status bits accordingly.
- the MU-GPU 412 can use more traditional graphics drawing operations to generate an S-Buffer.
- the MU-GPU 412 can manage a selective update buffer of concatenated tiles that need updating.
- the selective update buffer may be constructed in a separate memory area. Every time that the MU-GPU 412 performs an operation that changes a tile, it will then copy that tile to the selective update buffer.
- the header information can be stored at the start of each tile and the tiles can be packed together.
- the display controller is set up to use the selective update buffer and output it over the refresh port using a standard display controller output operation.
- the MU-GPU 412 can manage one or more buffers as a ring buffer or linked buffer list of concatenated tiles and provide a continuous output over the SDVO output that the TSA 424 treats as a tile list.
- MU-GPU 412 can arbitrate the priority for placement in the list. This method may be the most efficient for utilizing a MU-GPU 412 that has less specific hardware for supporting multiple RTs and has little or no special selective update hardware.
- the TSA 424 operates in conjunction with the MU-GPU 412 to decide which tiles may require updating at the RT 300.
- the ability for the MU-GPU 412 to manage status bits on a per tile basis may be too difficult and may group the tiles into large tiles or the full virtual RT display and only have a limited granularity for the status bits. Reducing the large tiles into smaller tile updates can be performed based on tracking signatures for each tile.
- the signature is typically generated the first time that the tile is processed and checked against subsequent signatures.
- the signatures can be generated and processed by the TSA 424 operating from the incoming data or in conjunction with the selective update hardware of the MU-GPU 412.
- the network bandwidth to each RT 300 can be conserved. If the MU-GPU 412 performs the signature checks then the bandwidth over the video path to the TSA 424 will also be conserved.
- MU-GPU 412 can generate and manage a memory plane of signatures corresponding to the tiles where the status bits may be part of the signature plane or a separate plane. Alternatively, the status bits and signature bits may be managed in a RAM cache and managed with linked lists by MU-GPU 412.
- the command may be encapsulated and sent for execution at the RT or the command may be executed locally by the MU-GPU 412.
- the command is also executed locally by the MU-GPU 412 in order to keep a local copy of the virtual display.
- any tiles that changed as a result of the redundant local graphics command will be filtered out with the status bits to prevent unnecessary tile update packets being sent to the RT. It will typically require less bandwidth to send the command instead of an encoded tile, but it is not always possible.
- Systems that manually manage a selective update buffer would also consider the commands that are being sent to the RT. Tiles that will be updated by commands executed at the RT would ideally not be placed into the selective update buffer by the MU-GPU 412.
- the virtual display memory of the proxy server or terminal services accelerator may be updated before the changes are reflected on the display of the RT. Although they correlate to the same display, the position of tiles and subframes as managed by the MU-GPU 412 and TSA 424 are positioned independently from the user interface operations. User interface operations may result in display changes within a tile or across multiple tiles. User interface changes may be initiated from a user operation, AJAX agent, browser or proxy server and result in an update to the virtual display memory. Updates in the tiles or updated subframes of the virtual display memory will be reflected at the RT and managed by the MU-GPU 412 and TSA 424.
- a graphics command intended for an RT is processed by the TSA 424 and broken into an encoded data transfer and a modified graphics command.
- the host system may wish to perform a BitBlt operation from off screen memory or from a pattern to on-screen memory. This could readily be performed at the MU-GPU 412 subsystem.
- the source data requested for the BitBlt is not cached. Therefore to be able to send the graphics command, it may first be necessary to encode, encapsulate and send the source data or pattern to the RT and then encapsulate and send a modified graphics command to the RT. This procedure can be offloaded by the TSA 424. While it is possible for the DirectX drivers to funnel commands through the MU-GPU 412 which then outputs them to the TSA 424, it is often more efficient for the DirectX driver to also communicate them directly to the TSA 424.
- FIG. 7 shows a preferred embodiment which combines the Multi-User GPU (MU-GPU) 412 with the Terminal Services Accelerator (TSA) 424 into an Integrated Circuit (TSA-GPU-IC) System-On-Chip (SOC) 710.
- the combined TSA-GPU-IC 710 may include RAM 736 either on-chip or external as part of subsystem 700.
- the TSA-GPU 700 may include one or more system bus interfaces 406 and 408 that may be similar or different.
- the TAS-GPU 700 includes 2D Engine 720, 3D Graphics Processing Unit (GPU) 722, system bus interface 732 for various system buses like PCI express and control for local I/O 410 that can include interfaces for video or other local I/O.
- the SOC 710 may include some combination of video compressor 724 and video decompressor 726 hardware, or some form of programmable video processor 764 that combines those and other video related functions.
- An additional processor 756 may also be included.
- the SUC 750 may include outputs 222 and 758 for local displays, though the remote multi-users are supported through the system interface 732 or potentially a direct connection 426 to the network controller.
- the system bus 760 is illustrative of the connections between the various processing units as well as the system interface 732 and memory interface 734.
- the system bus 760 may include various forms of crossbar switching, arbitrated transfers and may also have direct paths from one unit to another for enhanced performance.
- the MU-GPU 412 is connected via the SDVO paths 414 and 416 to the TSA 424, and the MU-GPU and TSA each have their own RAM.
- the TSA-GPU-IC 710 uses the shared RAM 736 instead of the SDVO paths. Using the RAM 736 eliminates the need to use the SDVO path for transfers and thus the SDVO bandwidth issue. Additionally, by sharing the memory, the SUC 750 is able to read the frame information directly from the memory thus eliminating the read of memory by the MU-GPU 412.
- TSA-GPU 700 may be designed to map support for multiple displays that are matched as far as resolution and color depth in their corresponding remote terminals. Matching the display in memory more directly with the corresponding remote display systems can achieve added efficiency for the memory use.
- S-Buffer support may be used in hardware or in conjunction with a tracking software layer to assist in the encoding choice for display frames that have changed and require generation of a selective update stream.
- the S-Buffer support may utilize headers, status bits, signatures or a combination of the three and may be based on fixed size tiles or variable size tiles.
- the SUC 750 may utilize the S-Buffer support to determine what subframe of the display requires selective update.
- the header information may be useful for the downstream processing of the selective update.
- a preferred embodiment could utilize a tile based selective update system that includes a 64 bit header. Sixteen bits of the header may be used to designate which of 64K possible RTs is the intended recipient of the selective update. Another couple of bits could be used to indicate which of a limited number of the fixed sizes of tiles is included in the selective update. Another segment of bits would then designate which tile number that would indicate the location on the display that the selective update corresponds to. The selective update encoded data would then follow the header. Additional bits for designating priority, error checking and other tracking information could also be included.
- the SUC 750 may not use tiles and requires a larger description for the selective update packet. For example, instead of providing a number to designate a tile position, a system may require an X and Y offset to designate a start position for a selective update rectangle. The selective update rectangle would then be described in the number of pixels or blocks for both the horizontal and vertical directions. Though the header information for such a system may be larger, the number of unique transfer to perform an update to a remote terminal may be less.
- the TSB 400 may opt to send some graphics commands directly to the RT instead of sending the selective updates.
- These graphics commands may be managed by the TSB CPU subsystem 402 or by processor 756.
- These processors may also manage the proxy server or other terminal services functions including performing command interpreting for both DirectX and RDP commands.
- processor 756 or CPU subsystem 402 offloads the software drivers running on the host system to manage 2D graphics commands, 3D graphics commands, video streams and other windowing functions.
- the interpreter functions can be combined with data encoder 752 to perform many of the computationally intensive aspects of managing the RTs and can also optimize the commands, data and video streams to be sent from the host system to the various RTs.
- a proxy server may be split between the TSB 400 and the RT.
- various pattern BitBlts, sources to screen destination BitBlts and other bitmap transfers can be enhanced.
- Graphics commands that require source data, source patterns or source bitmaps may encode the sources into a more efficient format via the data encoder 752.
- the encoded source data, source pattern or source bitmap is transferred along with a modified graphics command to the RT 300.
- the destination RT will receive the encoded source, decode it, and then, upon receiving the modified graphics command, perform the intended operation.
- the transfers for the encoded data and the modified command may either be with RDP transfers or with RDP-like transfers that are supported by the TSA-GPU 700 and the RT 300.
- the DirectX interpreter software can intercept and offload the video stream processing and provide an optimal stream to the target RT.
- the first step in offloading is to make sure that the processor blade 200 is not performing the video decode on the multi-CPU complex 202.
- Host based decode has several downsides, the most significant two being, first, it takes a significant number of CPU cycles to perform the actual decode. Second, having decoded video frames at the host is not necessarily the best way to get frames displayed at the target RT. Instead, the DirectX interpreter software intercepts the DirectX call, which in some versions of Microsoft Windows® may entail using DirectShow, to gain access to the video stream while it is still in compressed form. The DirectX interpreter may need to fool the RDP software interface with a mock frame in order for the RDP to continue with normal operations.
- the TSB 400 is aware of what video stream formats the RT is capable of decoding, what the network throughput from the host system to the RT nominally is, and what resolution and display characteristics are intended with the video stream. With this information, the TSB 400 sets up the TSA-GPU to process the incoming video stream to produce the ideal stream for the network, RT and display output requirements. This may entail transcoding from one encoded format to another, transrating from one bitrate to another, changing the frame rate, changing the display format, changing the resolution or some combination of these. The TSB 400 then encapsulates the processed bitstream and sends it to the appropriate connection for network processing.
- proxy server or RDP server software running on system 100 there are several ways for a proxy server or RDP server software running on system 100 to be partitioned between the processor blade 200 and the TSB 400. Two embodiments are considered here in detail, the first being the “terminate and regenerate” and the second being “offload and enhance.” Variations on the embodiments are also possible that can utilize aspects of each embodiment.
- the TSB 400 utilizes the TSA-GPU 700 to create a virtual display space to support multiple virtual RTs by creating a single large display map within which each user is offset or where each virtual display is seen as a separate display with its own mapping.
- the RDP client software may need to make use of key exchange and security processing between the processor blade 200 and the TSB 400 for RDP hosts that require secure client communications.
- the client receives commands from the RDP host, the client, utilizing TSA-GPU 700, renders the display frames into the display subsystem. With “terminate and regenerate,” the TSB 400 is then able to use whatever means and whatever protocol it wants for communicating between TSB 400 and the RTs.
- the TSB 400 is configured as multiple RDP clients each corresponding to an RT.
- the processor blades 200 use the switch fabric to communicate with the "virtual" RDP clients.
- the TSB 400 then acts as a server to the RTs using Virtual Network Computing (VNC). All communication between the RTs and the host 100 is managed by TSB 400.
- VNC keyboard and mouse commands from the RT are translated by the TSB 400 into RDP commands to the processor blades 200. Any type of client that uses VNC is then able to effectively communicate with host 100 where the main processor blades 200 are running a non-VNC server.
- the TSB 400 acts as an Internet server and communicates to RTs running browsers. Since different browsers on different platforms may have different capabilities, TSB 400 may support different HTTP, XML, Java and other metadata protocols for communicating with the browser based clients.
- the "terminate and regenerate" function is performed by a proxy server operating on TSB 400.
- the processor blade 200 may run a web server or may manage connections to a web server located elsewhere.
- TSB 400 may communicate directly with a web server.
- TSB 400 will terminate all of the web operations.
- TSB 400 may include an agent, such as an AJAX agent that continuously makes requests to an upstream web server.
- the TSB 400 then communicates directly with an RT client.
- TSB 400 may use any protocol that the RT supports and may choose to make the RT communication a completely separate protocol or may choose to reuse a similar web based protocol.
- "offload and enhance" maintains more of the processor blade 200's participation in client communication.
- the tracking software layer on processor blade 200 still redirects the DirectX video, graphics and data streams to the TSB 400 which completes the function of the DirectX call. Offloading the function makes the multi-CPU complex 202 available for other users of the multi-user system.
- the further processing can be completed by TSB 400 with an understanding of the display environment and the networking bandwidth which allows optimal processing.
- the interpreter software on TSB 400 can also be used to manage the S-buffer with TSA-GPU 700 when a graphics command is performed both locally and forwarded to the RT for execution.
- the reason for the TSA-GPU 700 to execute the graphics command locally is so that a current copy of the frame buffer can be managed for future use. Since the graphics command is being executed at the RT, the tiles that change on the host as a result of the local graphics command do not need to have the selective update hardware send encoded tiles. To prevent this, the RDP tracking software needs to calculate which tiles are affected by the graphics command.
- the status bits in the S-Buffer that correspond to these tiles can be managed so that the tile based selective updates are not performed.
- the tracking and interpreter software can also be used to assist in the encoding choice for display frames that have changed and require generation of a display update stream. Recall that the encoding is performed to reduce the data required for the remote display system 300 to regenerate the display.
- the tracking software layer can help identify the type of data within a frame or tile so as to allow the most optimal type of encoding to be performed. Some RTs may not have sufficient graphics processing capability to execute the graphics commands and may be sent encoded data that is processed by the TSA-GPU 700.
- the tracking software layer identifies that a surface of tiles is real time video, then an encoding scheme more effective for video, which has smooth spatial transitions and temporal locality, can be used for those tiles. If the tracking software layer identifies that a surface of tiles is mostly text, then an encoding scheme more effective for the sharp edges and the ample white space of text can be used. Identifying what type of data is in what region is a complicated problem. However, this embodiment of a tracking software layer allows an interface into the graphics driver architecture of the host display system and host operating system that assists in this identification.
- a surface that utilizes certain DirectShow commands is likely to be video data whereas a surface that uses color expanding bit block transfers (Bit Blits) normally associated with text, is likely to be text.
- Bit Blits color expanding bit block transfers
- Each operating system and graphics driver architecture will have its own characteristic indicators.
- Other implementations can perform multiple types of data encoding in parallel and then choose to use the encoding scheme that produces the best results based on encoder feedback.
- TSB 400 may communicate directly with the web server or may function as a split proxy coordinating communication between the RT and the web server. Agents running on the TSB 400 and RT may make continued requests to various web servers. TSB 400 may cache the web server information until such time as it is really needed by the RT for display. As described above, the TSB 400 may recode or reformat various graphics and video commands and data to better suit the communication channel to the RT as well as better match the functions and performance available within the RT. Various content management and content format operations may be performed by the TSB 400 operating as a proxy or split proxy server.
- some types of encoding schemes are particularly more useful for specific types of data, and some encoding schemes are less data dependent.
- RLE is very good for text and very poor for video
- DCT based schemes are very good for video and very poor for text
- wavelet transform based schemes can be good for both video and text.
- wavelet transform encoding which also can be of a lossless or lossy type, and in particular a progressive wavelet transform with a deterministic arithmetic coder that can encode each tile without concern for the surrounding tiles, is particularly well suited for this application.
- Derivatives of the JPEG2000 Wavelet encoder that tailor the processing for better real time execution are one possible implementation.
- FIG. 8 is a more detailed view of the BMC 800 from FIG. 2 .
- the BMC 800 includes a CPU 808 that may be a simple microcontroller or may be a more powerful CPU with Cache.
- the BMC 800 also includes a Security Processor 804, Network Processor and MAC Controllers or "Network Interface Control” (NIC) 806, RAM 218, interface controls 810 and some form of a TSA-GPU 700.
- NIC Network Interface Control
- the CPU 808 is an onboard processor that can operate "out of band” (OOB), which means that no dynamic software or intervention is required from the main CPUs.
- OOB output of band
- the ideal BMC 800 does not require any additional cabling and allows full remote administration of the processor blade 200.
- the BMC 800 may be centralized to perform management for multiple blades.
- the BMC 800 shown here includes support for Keyboard, Video and Mouse (KVM) functions.
- KVM Keyboard, Video and Mouse
- a CPU 808 may be further enhanced by a virtual machine running on the main system CPU. Though not completely OOB, a virtual machine may be designed to not interfere with the other system functions.
- the communication with the BMC 800 may for security be encrypted using Security Processor 804 and may utilize a local network interface 214 or may transfer packets through bus 206 and over an appropriate FIG. 2 fabric connection 140 or 142.
- the network interface may be partially included as shown with NIC 806 which includes the MAC portion and the remaining physical interface (PHY) located elsewhere.
- Interface 814 may follow a standard such as Media Independent Interface (MII) or Reduced MII (RMII) when interfacing to an external PHY (not shown).
- MII Media Independent Interface
- RMII Reduced MII
- the external Phy may be a dedicated device or part of another networking subsystem.
- the display aspects for the BMC 800 can vary from simple to complex and can support one or more local or remote users. While a simple system could utilize a basic graphics controller and software to encode the display, the preferred embodiment utilizes a sophisticated combination of graphics acceleration, selective updates and encoding of the updates such that remote users have full performance virtual presence. As such, the BMC 800 shows the use of TSA-GPU 700 for the display support. Depending on the number of simultaneous users, the performance of the TSA-GPU 700 for this type of BMC 800 application may not need to be as high as in the TSB 400, though the capabilities may be similar.
- the onboard processor may interface to different sensors for various platform autonomics such as managing temperature, voltages, acoustics, sensors and LEDs. Mid level remote monitoring of alerts are also monitored and managed.
- the BMC 800 may include a web server and may comply with various industry efforts to standardize remote management such as Intelligent Platform Management Interface (IPMI) and Active Server Management Interface (ASMI). Support for simultaneous multiple users and virtual I/O devices, such as DVD drives, may also be included.
- interface control 810 which may interface directly to onboard sensors, to external interface chip 850 which communicate with onboard sensors over path 802 or to another local I/O controller via path 214. Instead of utilizing system bus 206 as shown in FIG. 8 , the interface controls 810 may interface BMC 800 to another bus such as a system management bus.
- FIG. 9 is a flowchart of method steps for performing the terminal services acceleration and proxy server procedures in accordance with one embodiment of the invention.
- the procedure is discussed in reference to display data including video.
- procedures relating to audio, keyboard, mouse and other data are equally contemplated for use in conjunction with the invention.
- multi-user computer 100 and remote terminal system 300 follow the various procedures to initialize and set up the host side and terminal side for the various subsystems to enable each RT.
- the application provides the updated display data in the form of a display command, display data update or video data stream.
- the application update may be initiated from the application itself, a user action at the client or some other agent at the application, proxy server or client.
- the application request may be intercepted by the tracking software layer running on the host CPU or commands may be intercepted by the proxy server or terminal services accelerator that is running on TSB 400.
- the proxy server or terminal services accelerator that is running on TSB 400.
- no tracking software layer is included and the BMC 800 operates independent of the host CPU.
- step 924 the 2D drawing engine MU-GPU 412 preferably processes the operations into the appropriate virtual display in RAM 430. Similarly, in step 926 3D drawing is performed to the appropriate virtual display in RAM by MU-GPU 412.
- step 928 TSB 400 may determine that a video or graphics command will be forwarded to the appropriate RT. The flow through to step 940 may not be affected by bypass step 928.
- the MU-GPU 412 composites each virtual display into a frame which is suitable for display. This compositing can be performed with any combination of operations by the CPU subsystem 202, 2D engine, 3D Engine and any video processing elements within GPU 412. As part of the compositing step, for MU-GPU 412 that includes S-Buffer management in the graphics processing hardware, the drawing engine updates the S-Buffer for the respective tiles.
- the TSB 400 may process the next frame for either the same RT or for a different RT as required.
- TSB 400 may run the complete client stack such that as far as the application server is concerned, the client has fully completed the drawing operation.
- the TSB 400 may act as a proxy server or split proxy server to complete the web client operation with respect to the web server.
- the TSB 400 may run the client protocols to emulate multiple users.
- step 946 manages the tiles and the associated S-Buffer status bits and signature bits where appropriate.
- Step 946 considers any graphics and video operations that were processed through the video and graphics bypass step 928 that may affect the S-Buffer status bits. For example, if a drawing operation was both performed both in step 924 and bypassed via step 928 to the remote terminal, there is no need to perform the selective update on the tiles affected by that drawing operation as the operation will occur at the RT.
- step 950 can perform the selective update of the tiles.
- the tiles may be of fixed or variable size.
- the header information included with the tile will indicate the format as well as the intended RT destination.
- the TSA 424 performs the necessary encoding of the tiles received from step 950. This encoding is preferably a deterministic scheme where the orientation of the data within the tile and the surrounding tiles need not be considered in the encoding step. Also in step 954, the video data and graphics commands that followed step 928 are processed.
- Video data may be transrated where the bit rate or frame rate is changed, scaled in either the frequency or spatial domain and transcoded to a different encoding standard where necessary.
- the network feedback via return path 968, along with the RT information, may both help determine the encoding step 954.
- Step 954 also performs any graphics operations that require additional processing, which may entail encoding of graphics data.
- TSA 424 or CPU 402 performs the further encapsulation of the graphics commands, data transfers or video transfers processed in the prior step.
- the network feedback is also considered in this step with respect to the network characteristics such as bandwidth and latency and particular packet sizes and transmission issues.
- the encapsulated packet is processed via the appropriate network controller and the packet is transferred along the network to the appropriate RT 300.
- the network process step 962 uses the information from the system control. This information can include information as to which remote display requires which frame update streams, what type of network transmission protocol is used for each frame update stream, and what the priority and retry characteristics are for each portion of each frame update stream.
- the network process step 962 may be managed local to the TSA utilizing local I/O 428 and local network connections 490. Alternatively, in a blade based system, the network ready packets may be transferred over one of the system fabric buses 140 or 142 for processing by either a processor blade 200 that includes a network connection or by a network processor located on another processor blade.
- the various networks may include Gigabit Ethernet, 10/100 Ethernet, Power Line Ethernet, Coaxial cable based Ethernet, phone line based Ethernet, or wireless Ethernet standards such as 802.11a, b, g, n, s and future derivatives.
- Other non-Ethernet connections are also possible and can include USB, 1394a, 1394b, 1394c or other wireless protocols such as Ultra Wide Band (UWB) or WiMAX.
- UWB Ultra Wide Band
- FIG. 10 is a flowchart of steps in a method for performing a network reception and display procedure in accordance with one embodiment of the invention.
- the procedure is discussed in reference to display data including video.
- procedures relating to audio and other data are equally contemplated for use in conjunction with the present invention.
- RT 300 may be configured to run a simple control program to perform functional operations, may be an operating system based processor system running a driver or application, or may be a browser running on some type of client which may or may not include JAVA processing or more agents including advanced AJAX processing. Additionally, RT 300 may initiate requests based on user actions or agent operations that result in display updates.
- remote terminal 300 preferably receives a network transmission via path 390 from host computer 200.
- network controller 336 preferably performs a network processing procedure to execute the network protocols to receive the transmitted data whether the transmission was wired or wireless.
- CPU 324 interprets the incoming transmission to determine which functional unit the transmission is intended for. If the incoming transmission is a 2D graphics command, then CPU 324 will initialize an operation via 2D drawing engine 332; if a 3D command then 3D drawing engine 334; if a video data stream then video decoder 328; and if an encoded tile of data then data decoder 326. Some drawing commands may make use of both the drawing engine and the data decoder 326. In some cases, incoming transmission data may be stored for use when needed. Various forms of AJAX and agent processing may make speculative requests for data that may or may not eventually be needed.
- step 1030 the manipulated data from each of the functional units is assembled via frame manager 330 and may produce an updated display frame into RAM 312.
- the updated display frame may include display frame data from prior frames, the manipulated and decoded new frame data, and any processing required for concealing display data errors that occurred during transmission of the new frame data.
- step 1040 display controller 330 provides the most recently completed display frame data to remote terminal display screen 310 for viewing by a user of the remote terminal system 300.
- Display refresh is an asynchronous operation typically operating at 60 to 72 times per second between remote terminal controller 314 and display 310 to avoid flicker. Producing new display frames in step 1030 will typically occur significantly less often though when necessary may occur at 30 frames per second or more.
- the display processor will continue to update the remote display screen 310 with the most recently completed display frame, as indicated with feedback path 1050, in the process of display refresh.
- the present invention therefore implements a multi-user server based computer system that supports remote terminals that users may effectively utilize in a wide variety of applications.
- a business may deploy racks of computer systems in one location and provide users at remote locations with very simple and low cost remote terminal systems 300 on their desktops. Different remote locations may be supported over a LAN, WAN or through another connection.
- the RTs may be desktop personal computers or notebook personal computers or in another system may be specialty devices such as cell phones, personal digital assistants or combined with other consumer products such as a portable video player, game machine or remote control system.
- Users may flexibly utilize the host computer of a multi-user system 100 to achieve the same level of software compatibility and a similar level of performance that the host system could provide to a local user. Therefore, the present invention effectively implements a flexible multi-user system that utilizes various heterogeneous components to facilitate optimal system interoperability and functionality.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Transfer Between Computers (AREA)
- Digital Computer Display Output (AREA)
- Controls And Circuits For Display Device (AREA)
Description
- The present invention relates generally to a multi-user host computer system, and more particularly to utilizing a proxy server to support terminal services for remote clients.
- Developing efficient multi-user host computer systems is a significant objective for contemporary system designers and manufacturers.
- Conventional computer systems may utilize a local display device to display output directly to one user. The local display device is typically positioned close to the computer system because of restrictions imposed by various physical connections that electrically couple the display device to the output of the computer system. Some computer systems may support a second display device that has similar proximity restrictions due to the physical connections.
- Remote users require the additional flexibility of choosing an appropriate viewing location and network connection to the host system. For example, in a corporate environment, a business may wish to keep all of the host computers in a secure central "Computer Room" that has both physical security and environmental management such as air conditioning and power back-up systems. However, it is necessary for users to utilize the host computer systems from their offices and from desks located outside the "computer room."
- The typical office environment today includes personal computers and increasingly more thin clients physically located at the users' locations. These personal computers and thin clients operate on a network having a centralized system for storage, file serving, file sharing, network management and various administrative services. Initially, systems centralized all of the disk storage associated with the computer system while users ran applications on their local desktops. More recently, recognizing the benefits of security, reduced cost of operation, and the general desire for centralizing control, personal computers and thin clients can operate as Remote Terminals (RTs) in Server Based Computing (SBC) solutions which run applications on a server.
- The traditional approach for RTs in an SBC environment is for the host system to use some form of a server to client communication exchange such as Microsoft's Remote Display Protocol (RDP). RDP uses its own video driver on the server and uses the RDP protocol to construct the rendering information into network packets and sends them over the network to a client. The client receives rendering data and interprets the packets into corresponding Microsoft Win32 Graphics Device Interface (GDI) API calls. Support for redirecting the client keyboard and mouse commands to the server as well as managing local audio and local client drives is also included.
- To enhance the communication between the host system and the clients, other systems have used the main CPU of the host system to improve the performance for RTs. This has been done both for thin clients and for traditional PCs as the remote clients. Such approaches have been effective for host systems that support only one user at a time. However, for multi-user systems, the approach of using the main CPU at the host to improve the performance for any one user has significant limitations. Computational resources such as main memory and CPU cycles that are used for optimizations for one user may reduce the ability to support the workload for additional users.
- Efficiently supporting multiple users from a single host computer can reduce costs. In a typical office environment, seldom is everyone using their computer at the same time and similarly, seldom is any one user using all of the computing resources of their computer. So for example, a company with one hundred offices may only need a system that supports sixty users at any one time. Even with that said, such a system could be designed to support all hundred users giving them enough computing throughput to give the appearance that they each had their own host computer. In a distributed office environment a centralized multi-user system may be connected over varied bandwidth links to support RTs at locations in different parts of the world during the different working hours for the respective time zones.
- Server Based Computing, where the applications for users run on the server with only RT services supported at the user's terminal, is another way to more effectively allocate computing resources for multiple users. SBC allows the host system to dynamically allocate shared resources such as memory and CPU cycles in a multi-user operating environment. SBC systems can employ techniques of multi-user operating systems, Virtual Machines (VM), load balancing and other means to grant different users access to different levels of performance and resources based on a number of criteria. Different priority schemes can be used to allocate SBC resources. SBC can achieve higher data security, centralize the support for an organization, enhanced disaster recovery and business continuance, and reduce data storage requirements across an organization. Web servers are one type of SBC which may provide a multi-user platform for a variety of clients including browser based clients.
- Blade based servers implement an effective architecture for scalable multi-user host systems. The partitioning of the blades computational functions, I/O functions, the backplane architecture and the switching are all important in the design of a blade based server. Each blade may constitute the functions of a complete computer or a blade server may share significant functions across blades. With CPUs ever increasing their performance by including multiple processor cores, the limitation of a single user to a single blade makes decreasing economic sense. Each blade in a blade server system may need to be monitored remotely. With the multi-function nature of the blade system, a rack of blades may need to be configured to best match different workloads.
-
FIG. 1 shows a representative prior art multi-blade system-level architecture 100 including blades labeled one through eight (102, 104, 106, 108, 110, 112, 114 and 116) along withswitches FIG. 1 may vary in number and each blade may be a processor blade, an I/O blade, a switching blade or some combination of the three. The I/O blades may include their own external interfaces as illustrated by Blade 4 108path 180 and by Blade 8 116 andpath 190. Examples of external interfaces may include non-network interfaces such as Fiber channel and iSCSI or network interfaces such as Ethernet and 10G Ethernet, - The example switch matrix of
Switch 1 120 and Switch2 122 showsconnections path 144 may connect or bridge together theswitches switch fabric 150 which may be distributed on each blade, part of the backplane, implemented on switching blades or may involve a combination of the three. The paths for the switching fabric may be unidirectional, bidirectional or a combination. Each blade may connect to any number of switches and may include a bridging function for different switches as part of the blade function. A more advanced system may include a full mesh topology fabric and may have redundancy. - Some examples of connections used for the
switch fabric 150 include one or more channels of Peripheral Component Interconnect (PCI) Express, 10G Attachment Unit Interface (XAUI), Infiniband, RapidIO, StarFabric, Advanced Switching Interconnect (ASI), Gigabit Ethernet, Fiber Channel, as well as other electrical and optical interconnects. In some cases, the functional chips of each blade may directly include afabric interface 130. In other cases the blades may include fabric interface chips or bridge chips that perform the interfacing. The fabric and bridge chips within each blade may connect to one or more of the system switches and may integrate an additional bridging function between the switches. - However, an increased complexity may be required for a blade based multi-user host computer to effectively manage, control and deliver rich application performance for a variety of server software and web based applications and the variety of RT devices that an organization may have. A solution is needed that allows a blade based multi-user host server to more efficiently support numerous remote users with outstanding computing and display performance.
-
US 6,806,858 B1 discloses a remote monitor controller decoding image data destined for a display associated to the controller and continuously showing the image on the display until another image is provided to the controller. An image generating device, such as a personal computer, provides image data to as many displays as desired. The personal computer sends the image data to a controller associated with each display. The controller then formats the image to be shown on the display and sits in an endless loop until another image is provided to it. -
US 6,323,854 B1 discloses a tiled monitor system that is implemented with a single controller that does not provide standard video signals to each of the monitors. Instead, only the changed portions of an image to be displayed are sent to the monitors which internally maintain a video frame buffer for displaying using a display engine. -
US 6,646,969 B1 discloses a method and apparatus for updating video graphics changes of a managed server to a remote console independent of an operating system. The screen (e.g. frame buffer) of the managed server is divided into a number of blocks, and each block is periodically monitored for changes by calculating a hash code and storing the code in a hash code table. When the hash code changes, the block is transmitted to the remote console. Color condensing may be performed on the color values of the block before the hash codes are calculated and before transmission. Compression is performed on each block and across blocks to reduce bandwidth requirements on transmission. -
US 6,008,847 discloses temporal compression and decompression for video. -
US6323854 discloses a tiled monitor system which is implemented with a single controller that does not provide standard video signals to each of the monitors. Instead, only the changed portions of an image to be displayed are sent to the monitors, which internally maintain a video frame buffer for displaying using a display engine. Preferably, a high speed serial link is used between the monitors and the video controller for transmitting this information. -
US6664969 discloses a method and apparatus for updating video graphics changes of a managed server to a remote console independent of an operating system. Periodically, the configuration of a video graphics controller and a pointing device of the managed server are checked for changes, such as changes to resolution, color depth and cursor movement. If changes are found, the changes are transmitted to the remote console. -
US6008847 discloses a temporal compression and decompression system for color video. In a first computer, a new frame of video data is compared to the frame being displayed on a second computer and the similarity between corresponding blocks and sub-blocks is represented with one tolerance result per sub-block. Based on the number of sub-blocks for which tolerance results exceed a preset threshold and a user-specified quality level, an update quality level is selected that determines the quality at which the frame update is transmitted from the first computer to the second computer. - The invention is defined in the
independent claims - The present invention provides an efficient architecture for a blade based multi-user computer system, including one or more Remote Terminals (RT) capable of interactive graphics and video, which generally manages applications and performs server based computing. Each RT has its own keyboard, mouse and display and possibly other peripheral devices. The RTs provide individual users with access to the applications available on the server as well as a rich graphical user interface. The multi-user computer system may run a multi-user operating system, may run virtualized instantiations of a single user operating system, may run a web server engine for multiple users, may run a proxy server or may run some combination thereof.
- In the first preferred embodiment, processor blades include a Baseboard Management Controller (BMC) that allows remote management and control from an RT. In additional to providing sensor and status information, the BMC includes the Keyboard, Video and Mouse (KVM) capabilities so that a system administrator can access the processor blade remotely as if he were connected locally to the blade. The BMC and KVM functions support "out of band" operations without making additional run time changes to the base operation of the CPU and board so that diagnosis of run time issues may be performed most efficiently. The display related features of the remote KVM are supported by a graphics processor and display data encoder which utilize selective updates and, where required, various forms of display data compression. The display data encoder function may be integrated into
TSA 424 or as adedicated data encoder 752 for a combined GPU-TSA. - In a second preferred embodiment, a Terminal Services Blade (TSB) utilizes a combination of software, a graphics processor, and data encoding to support multiple RTs by creating a virtual display environment for each RT. The most common methods for communication with the RT include sending an encapsulated graphics command or sending encoded sub-frame data. The software to manage the RTs can run on the main host processor blade, the CPU of the TSB, on a Terminal Services Accelerator (TSA), on the RT or on a combination thereof. The selective updates for each RT can be coordinated in software or with the assistance of hardware in a Multi-User Graphics Processor Unit (MU-GPU) or a combined TSA-GPU. The graphics processor may follow the proposed VESA Digital Packet Video Link (DPVL) standard or an improved method using some combination of headers, status bits and signatures for the sub frames. In other enhancements, PCI express or another bus is used instead of DVI for the output data, additional data encoding is performed either within the graphics processor or with an encoder attached to the graphics processor, and the software utilizes one or more graphics processors for multi-user support.
- The TSB may perform varying levels of proxy serving including client termination and may go as far as to completely emulate multiple RDP clients such that the RDP host running on the processor blades considers a process running on the TSB to be the only known client. In this method, the TSB can create a completely independent interface to the RT that the host processor is unaware of. This type of interface between the TSB and an RT may be of the form of a split proxy. As a split proxy, the TSB and RT communicate over a private channel on which they can communicate more efficiently than they could using a more standard protocol such as RDP or web browser protocol.
- For additional efficiency, the processor blades may run tracking software that can be combined with the TSA to intercept functions such as video playback. Instead of having the host CPU perform the video decode locally and supply the bitmaps for transport to the RTs, the TSA can intercept the video data stream prior to decode by the CPU and may communicate the native video stream or a modified version, such as a transcoded or transrated version, to the target RT. The communication to the RTs may employ other private channels in addition to the standard RDP channels while still being managed within the RDP protocol.
- In each embodiment, after the graphics operations and selective update process, the data is encoded and then encapsulated into a network ready update packet. A network I/O blade, network processor, or a CPU working in conjunction with a simpler network controller, transmits the graphics packet over a wired and/or wireless network(s) to an RT. In some KVM configurations, the BMC will perform the network processing so that the processor blade CPU is not disrupted by the update packet operation. In another configuration, the CPU utilizes "Virtual Technology" to protectively partition, and performs both the operating system functions including user tasks as well as the out of band management tasks of the BMC. The BMC may communicate with another network controller or network physical layer (PHY) in the system. Each RT system decodes the graphics packet intended for its display, manages the frame updates and performs the necessary processing for the display screen. Other features, such as masking packets lost in network transmission, are managed by the remote display system(s). When there are no new frame updates, the remote display controller refreshes the display screen with the data from the prior frame.
- The various network systems may feed back network information from the various wired and wireless network connections to the TSB. The TSB uses the network information to affect the various processing steps of producing RT updates and, based on the network feedback, can vary the frame rate and data encoding for different RTs. Additionally, for systems that include a network having noisy transmission channels, the encoding step may be combined with forward error correction protection in order to prepare the transmit data for the characteristics of the transmission channel. The combination of these steps maintains an optimal frame rate with low latency for each of the RTs. The TSA and TSA-GPU may be implemented as a separate subsystem or combined with other offload and acceleration processing such as the network processor, security processor, XML accelerator, iSCSI processor or any combination of these.
- Therefore, for at least the foregoing reasons, the present invention effectively implements a flexible blade based multi-user computer system that utilizes various heterogeneous components to facilitate system interoperability and functionality. The present invention thus efficiently implements an enhanced blade based multi-user server.
-
-
FIG. 1 is a block diagram of a prior art blade based multi-user computer system including multiple blades and a switching fabric; -
FIG. 2 is a block diagram of a multi- CPU processor blade having a multi-CPU complex and a Baseboard Management Control (BMC) with remote Keyboard, Video and Mouse (KVM) support in accordance with a first embodiment of the invention; -
FIG. 3 shows an RT which is connected over a network with the blade based multi-user computer system ofFIG. 1 ; -
FIG. 4 is a block diagram of a Terminal Services Blade (TSB) in accordance with a second embodiment of the invention; -
FIG. 5 represents a memory organized into eight display areas, one of which includes a display window and two of which are used to support one large RT display; -
FIG. 6A shows a more detailed view ofFIG. 5 display map 536; -
FIG. 6B shows aFIG. 6A rectangle sub-divided into tiles; -
FIG. 7 is a block diagram showing details of an exemplary System-On-Chip (SOC) Terminal Services Accelerator with an integrated Graphics Processor Unit (TSA-GPU 700) ofFIG. 4 ; -
FIG. 8 is a block diagram of a Baseboard Management Controller with KVM which includes a graphics subsystem and other out of band processing; -
FIG. 9 is a flowchart of steps in a method for performing terminal services and display proxy server operations in accordance with one embodiment of the invention; and -
FIG. 10 is a flowchart of steps in a method for performing a network reception and display procedure for a remote terminal, in accordance with one embodiment of the invention. - The present invention relates to an improvement in blade based multi-user computer systems with support for remote terminals. While the described embodiments relate to blade based multi-user computer systems, the same principles and features could be equally applied to other types of single and multi-user systems and other types of remote terminals.
- The blade based
multi-user computer system 100, also referred to as "host 100," is designed to support multiple users at Remote Terminals as described below with reference toFIG. 3 . Each RT is able to time-share thehost 100 as if it were their own local computer and have complete support for all types of graphics, text and video content with the same type of user experience that could be achieved on a local computer.Paths FIG. 2 path 290 andFIG. 4 path 490 which may connect toFIG. 3 network path 390. In additional to the RT connections, host 100 may be connected throughlink 124 to a WAN, storage subsystem, other hosts or a variety of other data center connections which may take the form of GigE, 10G Ethernet, iSCSI, Fiber Channel (FC), Fiber Channel IP (FCIP) or another electrical or optical connection. Thehost 100 may support a variety of multi-user Operating Systems (OSs) or software that virtualizes a single user OS may be deployed on one or more of the processor blades. An operating system such as Citrix or Windows Server is designed as a multi-user OS. Windows XP, though not specifically designed for simultaneous multiple users, can be used in such a configuration with the help of either lower level virtualization software, such as VMWARE or XenSource, or another means to perform user switching so quickly as to appear as a multi-user OS. Different management controls may allow RTs and programs to statically or dynamically be moved from processor to processor. Load balancing may be performed by the OS for each processor or the system may perform load balancing across multiple processors. Host 100 may also run a type of web server and support multiple users through web based interfaces. Thehost 100 may function as a proxy server for various RTs and communicate with application servers or web servers. -
FIG. 2 is a block diagram of one embodiment of aProcessor Blade 200 which could serve as one of the blades 102-116 of a blade basedmulti-user server system 100. Eachblade 200 may be a host computer by itself or multiple blades can be racked together to create a more capable host computer. The more processor blades, I/O processing and CPUs that a host has, the more users can be simultaneously supported. The basic components ofprocessor blade 200 preferably include, but are not limited to, amulti-CPU Complex 202, a bus bridge-controller 204, amain system bus 206 such as PCI express, local I/O 208,main RAM 234, a Fabric Interface (FI) 130 to connect to the switches, backplane and other blades, and optionally a Baseboard Management Control (BMC)subsystem 800. - Depending on the type of transport and physical layer interfaces of the
switch fabric 150, the fabric interface (FI) 130 may include significant processing. For example, thefabric interface 130 may include a 10G Ethernet processor (not shown) that performs all of the necessary packet level filtering and processing both for locally generated packets and for the ASI fabric interface. Such a fabric interface processor may requireexternal RAM 230 or may have sufficient internal storage. The network physical layer interface (PHY) may be integrated with the FI processor or may utilize external PHY components. The local I/O 208 and local I/O connections 290 may be controlled by this same FI processor. Additionally, instead of interfacing with thesystem bus 206 through abridge controller 204, thefabric interface 130 may attach directly to thesystem bus 206. - In one example system,
Switch1 120 and the associatedpaths 140 utilize the ASI bus protocol which allows tunneling of PCI Express packets.Switch2 122 and the associatedpaths 142 may be a XAUI style bus and may be more optimized for storage and networking and may utilize 10G Ethernet protocols. The system may primarily utilize the ASI bus for communication between different processor blades and the XAUI bus for communicating with networking and storage blades. Each blade may include one interface, both interfaces or with both interfaces also include the ability to bridge traffic transfers between the two buses. - The
FIG. 2 multi-CPU complex 202 may include one or more processor chips each having one or more CPU cores (not shown) which may each execute multiple simultaneous threads. At each level, each CPU core may include either dedicated cache memory and at some levels multiple CPU cores may share cache memory. The multi-CPU complex 202 may control andaccess RAM 234 independently or it may utilize thebridge controller 204 for performingRAM 234 accesses. In some other configurations, the multi-CPU complex 202 may directly interface (not shown) to themain system bus 206. - The local I/
O 208 may include various I/O interfaces and controls both forexternal interfaces 290 and viapath 210 for resources located within theprocessor blade 200. The major I/O functions such as storage and networking may either be included on eachProcessor Blade 200 or other dedicated I/O blades may be supported over the switchingfabric 150. Depending on the choice for the physical and logical connections of the switch fabric, theinterfaces bridge controller 204 or may require afabric interface 130 chip. - Because each
processor blade 200 may effectively be a "computer system," having a way to observe and manage the system is highly desirable. Since ahost 100 may be located in a special computer room, it is often desirable to allow the system to be observed and managed from remote terminals (RTs) 300. RTs may be specially designed thin clients, or for management functions are more typically computers running management software. Alternatively, the RTs may include browser based software for performing the management functions. Theprocessor blade 200 may include a web server for providing a user interface for browser based management. - When a
processor blade 200 is being administered and not under a workload from remote users, the main CPU of multi-CPU complex 202 is often used for communicating with the RT. However for monitoring various environmental conditions and for observing and managing theprocessor blade 200 while it is executing a workload from remote users, it is desirable to include a Baseboard Management Control (BMC)subsystem 800 as detailed inFIG. 8 . - As an alternative or adjunct to a separate CPU in the
BMC 800, the main CPU in 202 can use virtualization technology to isolate the management functions from the operating system and user functions. While in a multi-core CPU 202 a specific core may be dedicated to such a management function, a properly designed CPU may include hardware, such as the Intel Vanderpool VT technology, to allow tasks or threads to be isolated from each other independent of what core they are running on. As such, a single CPU core may simultaneously both run a protected virtual management machine mode for supporting out of band management functions and run an operating system virtual machine mode to support various operating system and user tasks. - The different virtual machines of a CPU core may each operate in conjunction with different aspects of a
BMC 800. In a preferred embodiment, BMC withKVM 212 includes a local graphics processor such as MU-GPU 412 of TSA-GPU 700 that performs the display processing for the standard operating system running in a virtual machine mode. For remote KVM operation, a remote administrator may wish to observe or perform out of band management of theprocessor blade 200. A protected virtual management machine mode of thehost CPU 202 may be used to assist in performing the out of band remote administration. The remote KVM administration may include accessing the same local graphics processor display but from the out of band network interface. Such access to the graphics processor display may utilize the more advanced features of the TSA-GPU 700 detailed inFIG. 7 In another embodiment, aseparate CPU 808 within BMC withKVM 212 is used for managing the out of band remote administration instead of using a protected virtual management machine mode on the host CPU. -
FIG. 3 is a block diagram of aRemote Terminal 300, in accordance with one embodiment of the invention, which preferably includes, but is not limited to, adisplay screen 310, alocal RAM 312, and a Remote Terminal System Controller (RTSC) 314. TheRTSC 314 includes a keyboard, mouse and I/O control subsystem 316 which has corresponding connections for amouse 318,keyboard 320 and othermiscellaneous devices 322 such as speakers for reproducing audio or a Universal Serial Bus (USB) connection which can support a variety of devices. Other integrated or peripheral connections for supporting user authentication via secure means, including biometrics or security cards, may also be included. The connections can be dedicated single purpose such as a PS/2 style keyboard or mouse connection, or more general purpose such as USB. In other embodiments the I/O could include a game controller, a local wireless connection, an IR connection or no connection at all. Remoteterminal system 300 may also include other peripheral devices such as a DVD drive. - Some embodiments of the invention do not require any external inputs at the
remote terminal system 300. An example of such a system is a retail store or an electronic billboard where different displays are available at different locations and can show variety of informative and entertaining information. Each display can be operated independently and can be updated based on a variety of factors. A similar secure system could also include some displays that accept touch screen inputs, such as an information kiosk or Automated Teller Machine (ATM) at a bank. Other secure systems, such as a game machine for a casino, could also be based on this type of RT. - The
FIG. 1 host 100 may include networking interfaces (e.g., 180, 190) from each blade or a shared network controller may be included. In either case, a network connection is established from thehost 100 to input 390 of theRT 300.Network controller 336 supports secure protocols on thenetwork path 390 which could be wired or wireless and the data traveling over the network can be encrypted via a key exchange. A common network example is Ethernet, such asCAT 5 wiring running some type of Ethernet, preferably gigabit Ethernet, in which the I/O control path may use an Ethernet supported protocol such as standard Transport Control Protocol and Internet Protocol (TCP/IP) or some form of lightweight handshaking in combination with UDP transmissions. Industry efforts such as Real-time Streaming Protocol (RTSP) and Real-Time Transfer Protocol (RTP) along with a Real-Time Control Protocol (RTCP) can be used to enhance packet transfers and can be further enhanced by adding re-transmit protocols. Other newer efforts around using Quality of Service (QoS) efforts such aslayer 3 DiffServ Code Points (DSCP), the WMM protocol as part of Digital Living Network Alliance (DLNA), Microsoft Qwave, uPnP, QoS and 802.1P are also enhanced ways to use the existing network standards. - In addition to the packets for supporting the I/O devices, the network carries the encapsulated and encoded display commands and data required for the display. The
CPU 324 coordinates with thenetwork controller 2D drawing engine 3D drawing engine 334,data decoder 326,video decoder 328 anddisplay controller 330 to support all types of visual data representations that may be rendered and displayed locally ondisplay screen 310. There is no requirement that an RT include any particular combination of the display processing blocks. An extra thin RT may include as little as just adisplay controller 330 with a CPU doing the display processing though having at least one type of decoder or drawing engine is more likely. - The various processing elements may decode packets that represent an entire frame or packets that represent various sub frames of display data. In one preferred embodiment, the packets include various slices of encoded display data that correspond to fixed positions of the display. The
CPU 324 may receive the packets and by reading the header information for the packets determine the appropriate location of the display that the packed is intended for. The appropriate resource, such as thedata decoder 326, is used to decode the slice of data and the decoded data is transferred to the appropriate position within the display memory. Thedata decoder 326 may be set up to produce the decoded data directly into the display memory position or the data may be decoded to another area and transferred by the2D drawing engine 332, theCPU 324 or by another means to the intended position. - The
RT 300 can be first initialized either by booting out of a local FLASH memory (not shown) with additional information being provided over thenetwork 190/390 by thehost 100. During the initialization sequence for the RT, the connection between theRTSC 314 and thedisplay screen 310 may be used in a reverse direction or bidirectional mode utilizing standards such as Display Data Channel (DDC) Interface, Extended Display Identification Data (EDID) and other extensions to identify the display monitor capabilities. A USB connection via keyboard, mouse and I/O controller 316 may also be used in the connection to thedisplay screen 310. The information such as the available resolutions and controls are then processed by theCPU 324.System 300 may implement a protocol such as uPnP or another discovery mechanism where it is able to communicate with thehost 100. During that initialization communication,CPU 324 may provide the RT information, including the display monitor information, to theHost 100 so that each RT can be instantiated at the host side. - The initial display screen may come from either the FLASH memory or from the
host 100. Following a first full frame of display data, thehost computer 200 need only send partial frame information over thenetwork 390 as part of the display update network stream. If none of the pixels of a display are changed from the prior frame, thedisplay controller 330 can refresh thedisplay screen 310 with the prior frame contents from thelocal RAM storage 312. The output of theRTSC 314 may be encrypted using a protocol such as HDCP. Ifdisplay screen 310 is connected by a cable, such as with DVI, HDCP may be a requirement for playing back content that has DRM.RTSC 314 may additionally be designed to provide a highly secure processing environment where the various encryption keys are never exposed outside the chip. In an even more secure implementation, none of the decrypted content data would ever be in the clear outside of the chip. To achieve such a secure system,RTSC 314 may utilize local cryptography methods independent of the key exchanges performed with thehost 100 and thedisplay screen 310. - Display updates are sent via the network stream, and may consist of encapsulated 2D drawing commands, 3D drawing commands, encoded display data or encoded video data. The
network controller 326 receives the network display stream and theCPU 324 determines from the encapsulation header which of thefunctional units RAM 312 with the new image. During the next refresh cycle, thedisplay controller 330 will use this updated frame fordisplay screen 310. - The
display controller 330 transfers a representation of the current image frame from theRAM 312 to thedisplay 310. Typically, the image will be stored inRAM 312 in a format ready for display, but if RAM cost is an issue, the image or portions of the image can be stored in the encoded format.External RAM 312 may be replaced by large buffers within the remoteterminal system controller 314.Display controller 330 may also be able to combine two or more display surfaces stored inRAM 312 to composite an output image for display byscreen 310. Different blending operations may be performed along with the compositing. -
CPU 324 communicates with TSB 400 (FIG. 4 , discussed below) to best set up and manage the overall display operations for the RT. Initial setup may include enumerating the types of functions supported in theRTSC 314, specifications ofdisplay screen 310, amount ofRAM 312 available for buffering and caching data, command set supported by the2D drawing engine 332, command set supported by the3D drawing engine 334, formats supported by thedata decoder 326, formats supported byvideo decoder 328 and the capabilities ofdisplay controller 330. Other management optimizations at run time include managing and caching display bitmaps inRAM 312 so they do not need to be resent. - The configuration for the
RT 300 may include a basic data decoding architecture or software running on a more conventional CPU-based platform and may be based on an Internet browser architecture. As part of an Internet browser architecture, the functional units may be used by a special browser that directly calls the functional units, by a browser that includes "plug ins" or drivers to make use of the functional units, or a more standard browser may use a local agent that acts as an intermediary to determine which requests can be fulfilled locally and which require communication with the web application on the host system. "Asynchronous Java Script language and XML" (AJAX) and other derivatives such as "Asynchronous Flash and eXtensible Markup Language" (AFLAX) are such agent based techniques and may make use of a combination of XHTML, Document Object Model manipulated through JavaScript and "XMLHttpRequest" to exchange data asynchronously with the web server to improve the user interface at the client. AJAX may be used to perform selective requests where the data decoding at the client side uses the functional blocks ofRT 300. - The agent-based selective requests from an Internet browser based
RT 300 may be supported by thehost processor blade 200 and theterminal services blade 400 to further optimize the overall system. Additional communication protocol handling may be performed by an AJAX agent. Other example AJAX operations may include management of security keys and DNS lookups. An AJAX based agent on the RT may utilizehost processor blade 200 orTSB 400 as a proxy to an application server or web server. The AJAX based agent may include special communication mechanisms and operate as a split proxy with thehost processor blade 200 orTSB 400 providing the other portion of the proxy. -
FIG. 4 illustrates a second preferred embodiment of a Terminal Services Blade (TSB) 400 for a blade basedmulti-user computer system 100, thoughTSB 400 may be alternately embodied as a separate computer or appliance that is attached via networking to a host processor. As an appliance,TSB 400 may include other non-network connections such as DVI or other cables to the display output of the server, and may include a local DVI output to preserve support for a local display device. Such a DVI output from theTSB 400 may either be a pass-through mode from the server or may go through a decode step when the data on the DVI cable is not suitable for a simple pass-through operation.TSB 400 may operate independently from a host processor to perform as a proxy server for multiple RTs. -
TSB 400 includes aCPU Subsystem 402,memory 434,bridge controller 404, local I/O 428 withRAM 432 and the components that make up the Terminal Services Accelerator and Multi-User Graphics Processor Unit subsystem (TSA-GPU) 700.Bridge controller 404 may interface directly with the switch fabric or may include afabric interface 130 for connection to switchfabric GPU 700 are the multi-user GPU (MU-GPU) 412 and the Terminal Services Accelerator (TSA) 424 which have associatedRAMs connection 222 viadisplay interface 220. In some configurations, the TSA-GPU will have shared RAM and may be further integrated as described below in reference toFIG. 7 . - A single TSB may perform the graphics operations for multiple processor blade 200s each having one or more CPUs each having one or more processor cores, with any number of virtual machines running on the mix of CPUs and processor cores. In some multi-user or multi-processor operating systems, requests to
TSB 400 may be managed or performed in a coordinated fashion. For example, in the case of Microsoft Remote Desktop Protocol (RDP) or Citrix ICA based systems, the display commands are already virtualized and theprocessor blades 200 would not be attempting to directly access a graphics subsystem. Other multi-user or multi-processor operating systems may include a coordinated means to serialize accesses to a graphics subsystem and theTSB 400 combined with the operating system may allow the coordinated accesses to be properly mapped such that asingle TSA 700 can support multiple displays for one or more multi-user operating systems. - However, in a virtual machine mode, the different virtual machines may not be aware of each other and each virtual machine may assume it has complete access to a dedicated graphics subsystem. In such a case, the
TSB 400 needs to create a virtual abstraction layer to satisfy asynchronous commands and requests from multiple virtual machines in an orderly fashion and to properly support the resulting displays for the RTs. TheTSB 400 may write graphics drivers for the different operating systems that may be run on different virtual machines of theprocessor blades 200. TheTSB 400 would then coordinate the driver calls from the different operating systems into coordinatedmulti-display TSA 700 operations. Alternatively, each operating system would utilize a standard graphics driver and theTSB 400 would effectively need to intercept the driver calls. The intercepted driver calls would then be managed to operate theTSA 700 in a coherent multi-display mode and to appropriately manage the displays for each virtual machine. - In some systems, one of the functions of
TSB 400 is to offload theProcessor Blades 200 from some of the management for each of the RTs and to accelerate some of the offloaded processing so that each RT has improved display experience. The types of offload and acceleration support include encapsulating graphics operations into remote graphics commands, assisting in determining what capabilities and bitmaps are cached at each RT to determine which graphics commands are best suited, encoding and encapsulating bitmaps that need to be transferred to RTs, and best managing multimedia bitstreams. Alternatively, browser and agent based RTs may initiate more specific requests forhost 100 to provide updates of graphics data which may be encoded byTSB 400 before transmission. In one preferred embodiment, thehost system 100 is a web server whereprocessor blade 200 performs the data base and "back end" operations of the web server function andTSB 400 operates as a media coprocessor managing the display elements for the web server function. - Additional functions such as inspection and encapsulation of eXtensible Markup Language (XML) traffic, Simple Object Access Protocol (SOAP), HTTP traffic, Java Virtual Machine (JVM) and other traffic associated with Internet based communication may also be supported. The
processor blades 200 together with theTSB 400, while performing any desired anti-spam, anti-virus, content filtering, access restriction enforcement or other packet filtering based algorithms, can allow RTs to effectively perform remote access to the complete Internet. Such additional functions may be particularly useful for supporting RT Internet browsing using the host as a proxy for the web content accesses. Though there may be some redundancy in a system, this method may provide more specific user controls than more general network security appliances that are utilized between the host system and the WAN. TheTSB 400 may provide other offload functions such as DNS lookup. Providing DNS lookup may allow a reduction on the number of TCP/IP connections that need to be set up and managed. TheTSB 400 may also provide offload for security such as SSL. In addition,TSB 400 may provide certificate-based crypto algorithm support for secure clients. - A special proxy server on the
TSB 400 may use other enhancements for Internet based traffic which may include reformatting or recoding Internet based content depending on the RT display device and the execution capabilities within the RT. For example, if the RT device is a cellular phone or Personal Digital Assistant (PDA) with a limited screen resolution, theTSB 400 can filter down high resolution content into lower resolution images for faster and more appropriate display. TheTSB 400 may run other more intelligent content filtering and web page interpretation algorithms to perform functions like removing banner advertisements and other extraneous information so that the core information may be sent to the cell phone.TSB 400 may run a full web browser and the RT runs a less capable web browser or a micro-browser. The proxy functions ofTSB 400 may translate advanced web formats into web format that can be comprehended by the browser of the RT. - Other types of web content, such as those utilizing Active-X controls, Macromedia Flash or other run time programs may not be compatible with devices such as a phone or PDA. The
TSB 400 can act as an intermediary proxy server and transfer display data post- Active-X controls to an awaiting PDA. Application layer Regular Expression (RegEx) content processing may also be performed. Reformatting and re-coding may also be performed to increase security for clients. Whereas XML and SOAP may be subject to hijacking and other forms of passing of viruses,TSB 400 could recode XML and SOAP into a safe display format so that an RT client would not be subject to such risks. - In another embodiment, host 100 or more specifically
TSB 400 is used as a more general multi-format network file proxy server for RTs to view files that they would otherwise not be able to read. For example, an RT may include a viewer for various display formats but may not include the ability to open and view an Adobe PDF file or a Microsoft Word document. The viewer on the RT may be a browser that supports various HTML and other web oriented formats. Thehost 100 may be able to open and view both an Adobe PDF file and Microsoft Word document. Thehost 100 may then use the functions ofTSB 400 to translate the graphical output from the PDF file or Word document into a compatible display format for viewing on the RT. The RT may have network links to many types of data files and by utilizing a multi-format proxy viewer has the ability to view many types of files that would otherwise not be able to be decoded for viewing on the RT itself. This type of multi-format proxy viewing can be combined with a network file sharing function or with a mail server. For example, if the multi-format proxy viewer translates file attachments into a format that is viewable by a cell phone RT then it may be able to receive e-mails with a variety of attachments. The viewable attachments could be included with the mail message or a link to the viewable version of the attachments may be included in the mail message. - Multimedia bitstreams may include a video stream that is already in a compressed format and is being received at
FIG. 2 processor blade 200 orFIG. 4 TSB 400. In some configurations, the multimedia bitstream will already be in a format that is compatible with the intendedRT 300. In such a case, a software tracking layer running onprocessor blade 200 will direct the bitstream toTSB 400 which will encapsulate the bitstream into the appropriate packet format for transmission to the RT. Encapsulation may include adding header information, such as the origin for the video display window, or modifying packet organization, such as converting a transport stream into a program stream with different packet sizes. - In some other cases the multimedia bitstream will not be in a format readily handled by the target RT or not in a format appropriate for the network connection. In such cases, the
TSB 400 operates as a transcoding proxy server and performs the more complex steps of decoding and re-encoding, transcoding or transrating the multimedia bitstream. For example, the incoming multimedia bitstream may be an encoded HDTV MPEG-2 stream. If the window size at the RT is set for a small 320 x 240 window, it may make sense to conserve network bandwidth and have theTSB 400 transcode and transrate the video into a lower bitrate representing the desired display window size. Similarly, if the incoming video was in a format that the RT was not capable of decoding, theTSB 400 may transcode the video into a compatible format. Even if the format is compatible, other incompatibilities such as the Digital Rights Management (DRM) or the encryption scheme may exist. TheTSB 400 can also translate from one DRM or encryption scheme to a scheme suitable for the target RT. - For example, the content owner may use a DRM scheme based on a proprietary key exchange such as one used by Apple's iTunes. The
TSB 400 may inspect the output of an iTunes video player running on either aprocessor blade 200 or on alocal CPU 402 and capture the decrypted content. The decoded output may be still encrypted in HDCP if the output is from a DVI video bus. In the case of HDCP,TSB 400 needs to have the proper keys to decode the HDCP protected content and may act as a display device in order to perform the decryption. To preserve the content owner's control rights, theTSB 400 would then re-encrypt the content into a protocol that is understood by the remote client playback device. This may be based on a commercially available protocol such as Digital Transmission Content Protection (DTCP) or Microsoft's current format or may use a proprietary protocol. Once re-encrypted, the newly protected data stream can be transmitted over a network to a receiving device that has the proper decryption and display capabilities. - Some current versions of Microsoft's Remote Desktop Protocol (RDP) provide less efficient processing for compressed video bitstreams. With RDP, the drivers within the host system detect and decode the bitstream into a Device Independent Bitmap (DIB). The DIB is then translated into RDP transfer commands and the DIB format data is unreliably transferred over the network to the RT. In most cases, only a couple of frames of DIB data make it through to the RT for display. Thus, there is inefficiency in the host CPU performing decoding as well as in sending the decoded data over the network in a less efficient format. Other RDP based graphics operations make use of DIBs as well.
- Conventional graphics bitmaps, such as those from a website, also need to be transferred from
host 100 to anRT 300. TheTSB 400 can perform various levels of encoding for conventional graphics bitmaps such as DIBs. The encoding for graphics bitmaps may be lossless or lossy with a goal of providing visually indistinguishable representations of the original graphics quality. A simplified software interface for theTSB 400 may include just interfacing with the host CPU through the RDP API, while a more aggressive implementation would allowTSB 400 access to the underlying DirectX driver framework. The encoded DIB transfers and the special compressed video domain transfers are not part of a standard RDP implementation. Therefore these transfers may be piggybacked into an existing RDP transfer format, operate as some type of private RDP extension or operate outside of the RDP framework. - Some versions of the host operating system and RDP need to satisfy additional security requirements for the RDP protocol. The RDP client may be required to exchange a key with the host to make use of the encrypted packets. Since
TSB 400 is intercepting the RDP client packets, theTSB 400 may include appropriate acceleration and offloading for key exchange and decryption for communicating with the host processor. In addition, in order to maintain the security of the system, theTSB 400 and network interface will assure that all communication with the RTs is appropriately encrypted. - In another embodiment, the
TSB 400 may operate as a web server offload engine either as part of the web server or as an aggregation point for multiple web servers, and support browser and agent based RTs. Web server acceleration may be performed for JAVA, data encoding, data transcoding and other functions. In a further preferred embodiment, the RTs may run a more intelligent agent based browser which includes support for multiple protocols such as AJAX. Browsers using AJAX or a similar approach are able to maintain and manage information within the browser during user operations and only have to contact the web server when new information is needed. Instead of the server passing a complete frame, AJAX allows a more specific request of information to be performed and the web server provides just that new information which is then used with the previously stored information to locally generate a new frame. This persistence can be used for improving the user interface by prefetching information, by requiring smaller more efficient requests and by managing security. The requests generated by AJAX may be managed by theTSB 400 where security can be maintained and the data efficiently encoded byTSB 400 and the data decoded at the client side using AJAX and the functional blocks ofRT 300. - A well designed AJAX web application will make use of the client's or proxy's ability to cache objects and lessen the need for sending complete frames where the
TSB 400 may still be used for encoding the first request of any frame data. For web applications that are not designed for selective updates, theTSB 400 may be used as a proxy between such a web application and an AJAX based browser. Host 100 may not be the web server and may be a server located at an Internet Service Provider (ISP) or at a Point of Presence (POP). As a proxy, thehost 100 orTSB 400 can coordinate with theRT 300 to perform selective updates based on the client driven requests. Even if the web application requires a complete frame update, theTSB 400 proxy can process and compare the new frame and old frame and provide the client with the encoded update information. This can allow a reduction in bandwidth and an improved user interface for theRT 300 even for web applications that are not specifically designed for selective updates. -
TSB 400 can be implemented by a programmable solution that also solves the general offload tasks for several unrelated operations. Servers may benefit from offloading the network, storage, security and other tasks. An offload processor can be designed to statically or dynamically balance the various offload tasks and accelerate the overall system throughput for any given workload. For example, the server may be performing server based computing for thin clients during the day and running a large database operation at night. During the day the offload engine will run the operations described for the TSA. At night the offload engine will run iSCSI acceleration for accessing the large database from the disk storage system. The flexibility may be managed by an on-board or system wide management procedure that tracks the various workloads. The granularity for switching between offload tasks can be extremely small. The offload engine may be designed to perform very fast context switching so that within a single session it could perform the network, terminal services, storage, security and other offload tasks for the same session. - In order to support dynamic processing for the different offload tasks,
TSB 400 uses processing blocks that are programmable and configurable and can be task switched and reconfigured quickly as the workload changes. Various memory blocks will be included in each of the processing blocks and alarger memory 434 may also be included. TheCPU 402 is a generally programmable processor including its own cache memory and can perform the housekeeping and management for the offload as well as perform some of the higher level protocol and interface processing.Bridge Controller 404 may integrate network processors and manage theswitch fabric interface 130 functions ofTSB 400 and can manage multiple pipes of simultaneous communication. Special internal memory such as Content Address Memory (CAMs) as well as traditional memory may also be included withinbridge controller 404. - Processing units of
bridge controller 404 and TSA-GPU 700 may be implemented as Configurable Data Processors (CDPs) that are designed to be readily reconfigured to perform different processing at throughputs normally associated with dedicated hardware blocks. By utilizing CDPs instead of dedicated hardware, the different offload tasks can be performed by the same hardware. Prior art methods for designing CDPs such as reconfigurable data paths, dynamic instruction sets, Very Long Instruction Word (VLIW), Single Instruction Multiple Data (SIMD), Multiple Instruction Multiple Data (MIMD), Digital Signal Processing (DSP) and other forms of reconfigurable computing can be combined to perform very high performance computations. A CDP may also function as a security processor with or without additional dedicated hardware blocks for cryptography and key related functions. - For terminal services acceleration and proxy server operations, the CDPs may be configured to perform data encoding for tiles and rectangles, various forms of transcoding or transrating on video or data, generation and comparison for tile signatures and the other tasks described below with respect to the TSA-
GPU 700. For storage acceleration, the CDPs may be configured for different aspects of iSCSI, Fiber Channel (FC), Fiber Channel Internet Protocol (FCIP) and Internet Protocol related tasks.Connections 490 may be configured to connect to FC or another storage protocol. For Internet content acceleration, a CDP may be configured to process XML traffic, SOAP, HTTP traffic, JVM and other traffic associated with Internet based communication. Other web server acceleration may include offloading DNS lookups and handling the TCP/IP connections as well as performing data encoding and transcoding for both traditional web clients as well as for AJAX-style agent based browsers. - The TSA-
GPU 700 performs the graphics related offload and acceleration functions of theTSB 400. Multi-User Graphics Processor Unit (MU-GPU) 412 that includes support for selective display updates via Packets and may follow some or all of the proposed VESA Digital Packet Video Link (DPVL) standard though a preferred embodiment includes enhanced capabilities. TheTSA 424 supports packet display updates from MU-GPU 412 either viasystem bus 406 or preferably supportsinput paths TSA 424 may be connected to local I/O or a network controller over adedicated link 426, via the main system bus 4406 or more closely integrated via a System on Chip (SOC) implementation. A second system bus, 408 may also be included for additional bandwidth and to more directly support thebridge controller 404 and its interfacing to multiple switch fabrics. - In addition to performing traditional graphics processing, the MU-
GPU 412 produces the display based selective updates which indicate which portions of the display have changed. The selective updates can take up the form of rectangles or tiles that are output either overvideo output path main system bus 406. The rectangle updates include a packet header to indicate the origin, size and format of the window. The origin can be used to indicate which RT is the destination. Tiles can also be used and may be standardized to one or more fixed sizes such that the header may need less information to describe the tile. Other information, such as if and how the rectangle or tile should be scaled at the RT, may also be included in the header. Other forms of selective updates include support for BitBlt, Area Fill and Pattern Fill where instead of sending a large block of data, a minimal amount of data is sent along with the command parameters for the operation to be performed at the RT. Other headers support updates in the forms of Video Stream, Genlock, scaled video stream, Gamma Table and Frame Buffer Control. Other enhanced and complex commands can also be put into the form of a selective update to an RT. The proposed DPVL specification details one possible implementation for the selective updates along with their headers. - One MU-
GPU 412 may be effectively virtualized by the system for all of theRTs 300 by organizingRAM 418 into various display surfaces each containing display data for multiple RTs. The MU-GPU 412's 2D, 3D and video graphics processors (not shown) are preferably utilized to achieve high graphics and video performance. The graphics processing units may include 2D graphics, 3D graphics, video encoding, video decoding, scaling, video processing and other advanced pixel processing. The MU-GPU 412's display controllers may also perform functions such as blending and keying of video and graphics data, as well as overall screen refresh operations. In addition to theRAM 418 used for the primary and secondary display surfaces, there is sufficient off-screen memory to support various 3D and video operations. As an alternative to the DPVL method of managing selective updates, there may a Selective update buffer memory (S-Buffer) 404 withinRAM 418. In one embodiment S-Buffer 404 stores status bits, a signature or both status bits and a signature which correspond to each tile for each virtual display. In another embodiment, S-Buffer 404 stores the tiles themselves, with or without header, status bit and signature information, where the tiles are arranged to be output for selective updates. - The graphics engines and the display controller will typically composite a complete display image that corresponds to the primary surface for each RT display. The
RAM 418 will effectively contain an array of the display frames for all of the RTs. For example, for the display memory may be configured as a virtual display of 16K x 16K pixels. In such an example application, 256 RT displays of 1K x 1K can be mapped into the 16K x 16K array. Similarly, if each RT were a cellular phone with a 256 x 128 display, 8192 virtual displays could be mapped into the 16K x 16K display area. Additional off screen and scratch memory would also likely be included. Because this application involves multiple independent RTs, the MU-GPU 412 may add different security features to secure the different display areas and prevent one user from gaining access to another user's frame buffer. The system would preferably include hardware locks that prevent unauthorized access to protected portions of the display memory for both security and reliability concerns. -
FIG. 5 shows an example configuration ofFIG. 4 memory 418 where the virtual display space is set to 3200 pixels horizontally and 4800 pixels vertically.Memory 418 is divided into eight 1600 x 1200 display areas labeled 520, 522, 524, 526, 528, 530, 532 and 534. A typical high quality display mode would be configured for a bit depth of 24 bits per pixel, though often the configuration may utilize 32 bits per pixel as organized inRAM 418 for easier alignment and potential use of the extra eight bits for other purposes when the display is accessed by the graphics and video processors. The illustration of the tiled memory is conceptual in nature as a view from the MU-GPU 412. The actual RAM addressing will also relate to the memory page sizes and other considerations. -
FIG. 5 indisplay area 528 further illustrates adisplay update rectangle 550. The dashedlines 540 of the 1600 x 1200 display correspond to even coarser block boundaries of 256 x 256 pixels referred to as precincts. As is apparent fromdisplay window 550 the alignment of the display window boundaries does not necessarily line up with the precinct boundaries. This is a typical situation as a user will arbitrarily size and position a window on a display screen. In order to support remote screen updates that do not require the entire frame to be updated, each of the precincts that are affected by thedisplay window 550 needs to be updated. Furthermore, the data type within thedisplay window 550 and the surrounding display pixels may be of completely different types and not correlated. As such, the precinct based encoding algorithm, if it is lossy, needs to assure that there are no visual artifacts associated with either the edges of the precincts or with the borders of thedisplay window 550. The actual encoding process may occur on blocks that are smaller, such as 8 x 8 or 16 x 16, than the precincts. Therefore, a preferred embodiment uses a deterministic encoding algorithm, where the same result is produced for a set of pixels regardless of the surrounding pixels, and no artifacts will be produced by the arbitrary alignment of the window. - The block boundaries for the encoding scheme are also a consideration with respect to the tiles. For example, an encoding scheme may require block boundaries in multiples of 8 pixels. If the source tile is not a multiple of 8 pixels, it will need to be padded with the surrounding data. In another case, it is often preferred to orient the block boundaries to the screen, not to the particular user-placed rectangle or tile. If a user manipulates a window that is 80 x 80 pixels, even though it theoretically could have been placed to use a minimum of ten 8 x 8 blocks in each of the horizontal and vertical directions (one hundred blocks total), it is more likely to span eleven blocks in each direction (121 blocks). The rectangle update and any proceeding encoding of the rectangle will therefore encode 88 x 88 pixels (121 blocks) where some of the surrounding pixels are required for padding.
- RTs with displays of different sizes can also be supported. In one example, the MU-
GPU 412 can support an arbitrary number of arbitrarily sized displays. In another example, it may be simpler to support smaller displays as sub-windows or a larger display as an overlay window spanning more than one display area. As delineated byrectangle 536, a 1920 x 1080 window would need to use both the 532 and 534 areas. While this wastes area, it may be simpler to implement than creating custom sizes for each display. Because of the selective rectangle update mechanism of MU-GPU 412, only the relevant areas of the screen will ever be transmitted. While DVPL dynamically controls the CRTC control registers to manage the selective updates, other more flexible mechanisms such as an S-Buffer can be implemented that require less processor intervention and improved system efficiency. - A more flexible system may also break the rectangles into more regular sized entities such as tiles. There is trade-off in the efficiency of header information with arbitrary rectangle sizes versus potentially simpler headers using less flexible tile sizes though more screen data. In one preferred embodiment, the tiles may be dynamically set to any multiple of the block size where the block size is the smallest entity for the data encoding algorithm. The blocks may be oriented either to the source image or to fixed block positions of the screen. The size of the tile would be included in the header information.
- An area of memory, such as 530, may be designated as an S-
Buffer 404 for managing the selective updates. In one embodiment, the S-Buffer includes status bits that correspond to the tiles of display frames 520, 522, 524 and 526 where the status bits indicate if a tile requires selective updating. The S-Buffer 404 may also store a signature for each of the tiles which is then used in determining the need for selective updates. In another embodiment, the tiles fromframes memory area 530 and queued for selective update output. The queued tiles may include various header, status and signature information. -
FIG. 6A shows a more detailed view ofFIG. 5 display map 536 which has a High Definition Television (HDTV) resolution of 1920 x 1080 referred to as 1080P. InFIG. 6A fixedsize rectangles 614 are oriented with the screen position boundaries. Each rectangle is 160 pixels across and 120 pixels high. There are 12 rectangles per row (12 x 160 = 1920) and 9 rectangles per column (9 x 120 = 1080). A system may use these rectangles as the tiles that form the basis for selective updates. InFIG. 6B another system further divides therectangles 614 intotiles 620 containing 80 x 40 pixels, and a system may choose these smaller tiles as the basis for selective updates. A more flexible system may utilize both thelarger rectangles 614 made up of the sixtiles 620 and the tiles themselves and use the header information to delineate which type is being output at any given time. - In both cases, the blocks that form the basis of an encoding algorithm fit within the tile or rectangle. Assuming 8 x 8 blocks, each tile has a 10 x 5 configuration of blocks and each rectangle has a 20 x 15 configuration of blocks. A system that utilizes both larger rectangles and smaller triangles may use different mechanisms for each in determining the selective update requirements. In one preferred embodiment, the large rectangles may have associated status bits indicating whether they have changed or not and the smaller tiles may utilize a signature for making such a determination. The status bits and signatures may be managed with S-Buffers as described below.
- The MU-
GPU 412 may integrate the processing to perform the selective encoding of the tiles directly, or each tile may be checked using the selective update process and output to theTSA 424 and will include an appropriate header. The header will be processed by theTSA 424 and, based on the fields within the header, theTSA 424 will know which RT and where on the display screen the tile is intended for. Where appropriate, theTSA 424 will encode the tile into a compressed format, adjust any required header information and provide the tile and header for further network processing. - The MU-
GPU 412 andTSA 424 may partition the selective update process differently. In some cases the MU-GPU 412 can perform the complete management and will only send the tiles that need updating to theTSA 424. In other cases, theTSA 424 is required to perform further filtering of the slices to determine which slices truly require updates. Within the MU-GPU 412 the selective update mechanism can be hardwired or require CPU intervention and the hardware may be implemented across both the drawing engine and a selective update refresh engine. The encoding of the tiles may also be performed either in the MU-GPU 412 or in theTSA 424. The MU-GPU 412 may also output the graphics drawing commands for the RT to theTSA 424 over the digital video bus, or the software drivers may provide the commands directly to theTSA 424. - For the selective tile updates, in a first embodiment, an S-Buffer is used where the MU-
GPU 412 has a drawing engine that manages status bits for each tile and a selective update refresh engine that monitors the status bits as it manages the selective display updates for each tile. Like a Z-Buffer used in 3D graphics, the S-Buffer may be implemented as a separate memory plane of data. As with a Z-Buffer, the hardware drawing operations of an enhanced MU-GPU 412 can update the S-Buffer status bits without additional commands. The status bits are then used by selective update hardware to determine which of the tiles needs to be updated at the RT. Like the refresh cycle of a display controller, the selective update hardware may periodically traverse the S-Buffer and read the status bits. Based on the state of the status bits, the selective update hardware will either pass over a tile that does not need to be updated or it will read the tile for selective update, output the tile along with the header information and update the status bits accordingly. In a less efficient implementation, the MU-GPU 412 can use more traditional graphics drawing operations to generate an S-Buffer. - In another preferred embodiment not requiring specific S-Buffer hardware, the MU-
GPU 412 can manage a selective update buffer of concatenated tiles that need updating. The selective update buffer may be constructed in a separate memory area. Every time that the MU-GPU 412 performs an operation that changes a tile, it will then copy that tile to the selective update buffer. The header information can be stored at the start of each tile and the tiles can be packed together. The display controller is set up to use the selective update buffer and output it over the refresh port using a standard display controller output operation. The MU-GPU 412 can manage one or more buffers as a ring buffer or linked buffer list of concatenated tiles and provide a continuous output over the SDVO output that theTSA 424 treats as a tile list. Various schemes can be used for the MU-GPU 412 to arbitrate the priority for placement in the list. This method may be the most efficient for utilizing a MU-GPU 412 that has less specific hardware for supporting multiple RTs and has little or no special selective update hardware. - In another preferred embodiment, the
TSA 424 operates in conjunction with the MU-GPU 412 to decide which tiles may require updating at theRT 300. The ability for the MU-GPU 412 to manage status bits on a per tile basis may be too difficult and may group the tiles into large tiles or the full virtual RT display and only have a limited granularity for the status bits. Reducing the large tiles into smaller tile updates can be performed based on tracking signatures for each tile. The signature is typically generated the first time that the tile is processed and checked against subsequent signatures. The signatures can be generated and processed by theTSA 424 operating from the incoming data or in conjunction with the selective update hardware of the MU-GPU 412. If theTSA 424 performs the signature checks for each tile, the network bandwidth to eachRT 300 can be conserved. If the MU-GPU 412 performs the signature checks then the bandwidth over the video path to theTSA 424 will also be conserved. MU-GPU 412 can generate and manage a memory plane of signatures corresponding to the tiles where the status bits may be part of the signature plane or a separate plane. Alternatively, the status bits and signature bits may be managed in a RAM cache and managed with linked lists by MU-GPU 412. - Depending on the type of graphics command generated by the graphics operations on the
host 400 and the capabilities of theRT 300, the command may be encapsulated and sent for execution at the RT or the command may be executed locally by the MU-GPU 412. In many cases, though the command is sent for execution at the RT, the command is also executed locally by the MU-GPU 412 in order to keep a local copy of the virtual display. Ideally, any tiles that changed as a result of the redundant local graphics command will be filtered out with the status bits to prevent unnecessary tile update packets being sent to the RT. It will typically require less bandwidth to send the command instead of an encoded tile, but it is not always possible. Systems that manually manage a selective update buffer would also consider the commands that are being sent to the RT. Tiles that will be updated by commands executed at the RT would ideally not be placed into the selective update buffer by the MU-GPU 412. - The virtual display memory of the proxy server or terminal services accelerator may be updated before the changes are reflected on the display of the RT. Although they correlate to the same display, the position of tiles and subframes as managed by the MU-
GPU 412 andTSA 424 are positioned independently from the user interface operations. User interface operations may result in display changes within a tile or across multiple tiles. User interface changes may be initiated from a user operation, AJAX agent, browser or proxy server and result in an update to the virtual display memory. Updates in the tiles or updated subframes of the virtual display memory will be reflected at the RT and managed by the MU-GPU 412 andTSA 424. - In another example, a graphics command intended for an RT is processed by the
TSA 424 and broken into an encoded data transfer and a modified graphics command. For example, the host system may wish to perform a BitBlt operation from off screen memory or from a pattern to on-screen memory. This could readily be performed at the MU-GPU 412 subsystem. However, at the RT the source data requested for the BitBlt is not cached. Therefore to be able to send the graphics command, it may first be necessary to encode, encapsulate and send the source data or pattern to the RT and then encapsulate and send a modified graphics command to the RT. This procedure can be offloaded by theTSA 424. While it is possible for the DirectX drivers to funnel commands through the MU-GPU 412 which then outputs them to theTSA 424, it is often more efficient for the DirectX driver to also communicate them directly to theTSA 424. -
FIG. 7 shows a preferred embodiment which combines the Multi-User GPU (MU-GPU) 412 with the Terminal Services Accelerator (TSA) 424 into an Integrated Circuit (TSA-GPU-IC) System-On-Chip (SOC) 710. The combined TSA-GPU-IC 710 may includeRAM 736 either on-chip or external as part ofsubsystem 700. The TSA-GPU 700 may include one or moresystem bus interfaces GPU 700 includes2D Engine system bus interface 732 for various system buses like PCI express and control for local I/O 410 that can include interfaces for video or other local I/O. Additionally, theSOC 710 may include some combination ofvideo compressor 724 andvideo decompressor 726 hardware, or some form ofprogrammable video processor 764 that combines those and other video related functions. Anadditional processor 756 may also be included. - Also included are a multi-user Selective Update with display Controller (SUC) 750 that performs the selective updates, and a
data encoder 752 that compresses the required subframes or tiles. TheSUC 750 may includeoutputs system interface 732 or potentially adirect connection 426 to the network controller. Thesystem bus 760 is illustrative of the connections between the various processing units as well as thesystem interface 732 andmemory interface 734. Thesystem bus 760 may include various forms of crossbar switching, arbitrated transfers and may also have direct paths from one unit to another for enhanced performance. - In the
FIG. 4 multi-chip TSA-GPU 700, the MU-GPU 412 is connected via theSDVO paths TSA 424, and the MU-GPU and TSA each have their own RAM. Conversely, inFIG. 7 the TSA-GPU-IC 710 uses the sharedRAM 736 instead of the SDVO paths. Using theRAM 736 eliminates the need to use the SDVO path for transfers and thus the SDVO bandwidth issue. Additionally, by sharing the memory, theSUC 750 is able to read the frame information directly from the memory thus eliminating the read of memory by the MU-GPU 412. - Several additional optimizations may be included in the
SOC 710 of TSA-GPU 700 such as including S-Buffer support directly in each of the functional units. Also, instead of implementing the multi-user frame support with fixed size displays as illustrated inFIG. 5 , TSA-GPU 700 may be designed to map support for multiple displays that are matched as far as resolution and color depth in their corresponding remote terminals. Matching the display in memory more directly with the corresponding remote display systems can achieve added efficiency for the memory use. - S-Buffer support may be used in hardware or in conjunction with a tracking software layer to assist in the encoding choice for display frames that have changed and require generation of a selective update stream. The S-Buffer support may utilize headers, status bits, signatures or a combination of the three and may be based on fixed size tiles or variable size tiles. The
SUC 750 may utilize the S-Buffer support to determine what subframe of the display requires selective update. The header information may be useful for the downstream processing of the selective update. - Different systems may optimize for a reduced size of the header or for a reduced number of selective update transfers. For example, a preferred embodiment could utilize a tile based selective update system that includes a 64 bit header. Sixteen bits of the header may be used to designate which of 64K possible RTs is the intended recipient of the selective update. Another couple of bits could be used to indicate which of a limited number of the fixed sizes of tiles is included in the selective update. Another segment of bits would then designate which tile number that would indicate the location on the display that the selective update corresponds to. The selective update encoded data would then follow the header. Additional bits for designating priority, error checking and other tracking information could also be included.
- In another preferred embodiment, the
SUC 750 may not use tiles and requires a larger description for the selective update packet. For example, instead of providing a number to designate a tile position, a system may require an X and Y offset to designate a start position for a selective update rectangle. The selective update rectangle would then be described in the number of pixels or blocks for both the horizontal and vertical directions. Though the header information for such a system may be larger, the number of unique transfer to perform an update to a remote terminal may be less. - Depending on the capabilities of the RT and the network characteristics between the
host 100 and the RT, theTSB 400 may opt to send some graphics commands directly to the RT instead of sending the selective updates. These graphics commands may be managed by theTSB CPU subsystem 402 or byprocessor 756. These processors may also manage the proxy server or other terminal services functions including performing command interpreting for both DirectX and RDP commands. As an interpreter,processor 756 orCPU subsystem 402 offloads the software drivers running on the host system to manage 2D graphics commands, 3D graphics commands, video streams and other windowing functions. The interpreter functions can be combined withdata encoder 752 to perform many of the computationally intensive aspects of managing the RTs and can also optimize the commands, data and video streams to be sent from the host system to the various RTs. A proxy server may be split between theTSB 400 and the RT. - For example, various pattern BitBlts, sources to screen destination BitBlts and other bitmap transfers can be enhanced. Graphics commands that require source data, source patterns or source bitmaps may encode the sources into a more efficient format via the
data encoder 752. The encoded source data, source pattern or source bitmap is transferred along with a modified graphics command to theRT 300. The destination RT will receive the encoded source, decode it, and then, upon receiving the modified graphics command, perform the intended operation. The transfers for the encoded data and the modified command may either be with RDP transfers or with RDP-like transfers that are supported by the TSA-GPU 700 and theRT 300. - For a video stream in
TSB 400, the DirectX interpreter software can intercept and offload the video stream processing and provide an optimal stream to the target RT. The first step in offloading is to make sure that theprocessor blade 200 is not performing the video decode on themulti-CPU complex 202. Host based decode has several downsides, the most significant two being, first, it takes a significant number of CPU cycles to perform the actual decode. Second, having decoded video frames at the host is not necessarily the best way to get frames displayed at the target RT. Instead, the DirectX interpreter software intercepts the DirectX call, which in some versions of Microsoft Windows® may entail using DirectShow, to gain access to the video stream while it is still in compressed form. The DirectX interpreter may need to fool the RDP software interface with a mock frame in order for the RDP to continue with normal operations. - Meanwhile, the
TSB 400 is aware of what video stream formats the RT is capable of decoding, what the network throughput from the host system to the RT nominally is, and what resolution and display characteristics are intended with the video stream. With this information, theTSB 400 sets up the TSA-GPU to process the incoming video stream to produce the ideal stream for the network, RT and display output requirements. This may entail transcoding from one encoded format to another, transrating from one bitrate to another, changing the frame rate, changing the display format, changing the resolution or some combination of these. TheTSB 400 then encapsulates the processed bitstream and sends it to the appropriate connection for network processing. - There are several ways for a proxy server or RDP server software running on
system 100 to be partitioned between theprocessor blade 200 and theTSB 400. Two embodiments are considered here in detail, the first being the "terminate and regenerate" and the second being "offload and enhance." Variations on the embodiments are also possible that can utilize aspects of each embodiment. - In the case of "terminate and regenerate" an RDP client is run on the
TSB 400. As far as the RDP server which is running onprocessor blade 200 is concerned, the RDP operations are terminated byTSB 400. In this case, theTSB 400 utilizes the TSA-GPU 700 to create a virtual display space to support multiple virtual RTs by creating a single large display map within which each user is offset or where each virtual display is seen as a separate display with its own mapping. The RDP client software may need to make use of key exchange and security processing between theprocessor blade 200 and theTSB 400 for RDP hosts that require secure client communications. As the RDP client receives commands from the RDP host, the client, utilizing TSA-GPU 700, renders the display frames into the display subsystem. With "terminate and regenerate," theTSB 400 is then able to use whatever means and whatever protocol it wants for communicating betweenTSB 400 and the RTs. - In a preferred embodiment of "terminate and regenerate" operation, the
TSB 400 is configured as multiple RDP clients each corresponding to an RT. Theprocessor blades 200 use the switch fabric to communicate with the "virtual" RDP clients. TheTSB 400 then acts as a server to the RTs using Virtual Network Computing (VNC). All communication between the RTs and thehost 100 is managed byTSB 400. VNC keyboard and mouse commands from the RT are translated by theTSB 400 into RDP commands to theprocessor blades 200. Any type of client that uses VNC is then able to effectively communicate withhost 100 where themain processor blades 200 are running a non-VNC server. In a second preferred embodiment of "terminate and regenerate" operation, theTSB 400 acts as an Internet server and communicates to RTs running browsers. Since different browsers on different platforms may have different capabilities,TSB 400 may support different HTTP, XML, Java and other metadata protocols for communicating with the browser based clients. - For web services, the "terminate and regenerate" function is performed by a proxy server operating on
TSB 400. Theprocessor blade 200 may run a web server or may manage connections to a web server located elsewhere. Alternatively,TSB 400 may communicate directly with a web server. As a proxy server,TSB 400 will terminate all of the web operations.TSB 400 may include an agent, such as an AJAX agent that continuously makes requests to an upstream web server. TheTSB 400 then communicates directly with an RT client.TSB 400 may use any protocol that the RT supports and may choose to make the RT communication a completely separate protocol or may choose to reuse a similar web based protocol. - For the second embodiment of server based computing, "offload and enhance" maintains more of the
processor blade 200's participation in client communication. The tracking software layer onprocessor blade 200 still redirects the DirectX video, graphics and data streams to theTSB 400 which completes the function of the DirectX call. Offloading the function makes the multi-CPU complex 202 available for other users of the multi-user system. The further processing can be completed byTSB 400 with an understanding of the display environment and the networking bandwidth which allows optimal processing. - The interpreter software on
TSB 400 can also be used to manage the S-buffer with TSA-GPU 700 when a graphics command is performed both locally and forwarded to the RT for execution. The reason for the TSA-GPU 700 to execute the graphics command locally is so that a current copy of the frame buffer can be managed for future use. Since the graphics command is being executed at the RT, the tiles that change on the host as a result of the local graphics command do not need to have the selective update hardware send encoded tiles. To prevent this, the RDP tracking software needs to calculate which tiles are affected by the graphics command. The status bits in the S-Buffer that correspond to these tiles can be managed so that the tile based selective updates are not performed. - The tracking and interpreter software can also be used to assist in the encoding choice for display frames that have changed and require generation of a display update stream. Recall that the encoding is performed to reduce the data required for the
remote display system 300 to regenerate the display. The tracking software layer can help identify the type of data within a frame or tile so as to allow the most optimal type of encoding to be performed. Some RTs may not have sufficient graphics processing capability to execute the graphics commands and may be sent encoded data that is processed by the TSA-GPU 700. - For example, if the tracking software layer identifies that a surface of tiles is real time video, then an encoding scheme more effective for video, which has smooth spatial transitions and temporal locality, can be used for those tiles. If the tracking software layer identifies that a surface of tiles is mostly text, then an encoding scheme more effective for the sharp edges and the ample white space of text can be used. Identifying what type of data is in what region is a complicated problem. However, this embodiment of a tracking software layer allows an interface into the graphics driver architecture of the host display system and host operating system that assists in this identification. For example, in Microsoft Windows®, a surface that utilizes certain DirectShow commands is likely to be video data whereas a surface that uses color expanding bit block transfers (Bit Blits) normally associated with text, is likely to be text. Each operating system and graphics driver architecture will have its own characteristic indicators. Other implementations can perform multiple types of data encoding in parallel and then choose to use the encoding scheme that produces the best results based on encoder feedback.
- This second embodiment of "offload and enhance" may also be utilized with a proxy server architecture for web based services. In such an embodiment,
TSB 400 may communicate directly with the web server or may function as a split proxy coordinating communication between the RT and the web server. Agents running on theTSB 400 and RT may make continued requests to various web servers.TSB 400 may cache the web server information until such time as it is really needed by the RT for display. As described above, theTSB 400 may recode or reformat various graphics and video commands and data to better suit the communication channel to the RT as well as better match the functions and performance available within the RT. Various content management and content format operations may be performed by theTSB 400 operating as a proxy or split proxy server. - For the various data types, some types of encoding schemes are particularly more useful for specific types of data, and some encoding schemes are less data dependent. For example, RLE is very good for text and very poor for video, DCT based schemes are very good for video and very poor for text, and wavelet transform based schemes can be good for both video and text. Though any type of lossless or lossy encoding can be used in this system, wavelet transform encoding, which also can be of a lossless or lossy type, and in particular a progressive wavelet transform with a deterministic arithmetic coder that can encode each tile without concern for the surrounding tiles, is particularly well suited for this application. Derivatives of the JPEG2000 Wavelet encoder that tailor the processing for better real time execution are one possible implementation.
-
FIG. 8 is a more detailed view of theBMC 800 fromFIG. 2 . TheBMC 800 includes aCPU 808 that may be a simple microcontroller or may be a more powerful CPU with Cache. TheBMC 800 also includes aSecurity Processor 804, Network Processor and MAC Controllers or "Network Interface Control" (NIC) 806,RAM 218, interface controls 810 and some form of a TSA-GPU 700. - The
CPU 808 is an onboard processor that can operate "out of band" (OOB), which means that no dynamic software or intervention is required from the main CPUs. Theideal BMC 800 does not require any additional cabling and allows full remote administration of theprocessor blade 200. In some cases, theBMC 800 may be centralized to perform management for multiple blades. TheBMC 800 shown here includes support for Keyboard, Video and Mouse (KVM) functions. In some systems, aCPU 808 may be further enhanced by a virtual machine running on the main system CPU. Though not completely OOB, a virtual machine may be designed to not interfere with the other system functions. - The communication with the
BMC 800 may for security be encrypted usingSecurity Processor 804 and may utilize alocal network interface 214 or may transfer packets throughbus 206 and over an appropriateFIG. 2 fabric connection NIC 806 which includes the MAC portion and the remaining physical interface (PHY) located elsewhere. Interface 814 may follow a standard such as Media Independent Interface (MII) or Reduced MII (RMII) when interfacing to an external PHY (not shown). The external Phy may be a dedicated device or part of another networking subsystem. - The display aspects for the
BMC 800 can vary from simple to complex and can support one or more local or remote users. While a simple system could utilize a basic graphics controller and software to encode the display, the preferred embodiment utilizes a sophisticated combination of graphics acceleration, selective updates and encoding of the updates such that remote users have full performance virtual presence. As such, theBMC 800 shows the use of TSA-GPU 700 for the display support. Depending on the number of simultaneous users, the performance of the TSA-GPU 700 for this type ofBMC 800 application may not need to be as high as in theTSB 400, though the capabilities may be similar. - In addition to supporting higher level virtual presence features for remote access, the onboard processor may interface to different sensors for various platform autonomics such as managing temperature, voltages, acoustics, sensors and LEDs. Mid level remote monitoring of alerts are also monitored and managed. To communicate with the external management system, the
BMC 800 may include a web server and may comply with various industry efforts to standardize remote management such as Intelligent Platform Management Interface (IPMI) and Active Server Management Interface (ASMI). Support for simultaneous multiple users and virtual I/O devices, such as DVD drives, may also be included. Also shown inBMC 800 isinterface control 810 which may interface directly to onboard sensors, toexternal interface chip 850 which communicate with onboard sensors overpath 802 or to another local I/O controller viapath 214. Instead of utilizingsystem bus 206 as shown inFIG. 8 , the interface controls 810 may interfaceBMC 800 to another bus such as a system management bus. -
FIG. 9 is a flowchart of method steps for performing the terminal services acceleration and proxy server procedures in accordance with one embodiment of the invention. For the sake of clarity, the procedure is discussed in reference to display data including video. However, procedures relating to audio, keyboard, mouse and other data are equally contemplated for use in conjunction with the invention. Initially, instep 910,multi-user computer 100 andremote terminal system 300 follow the various procedures to initialize and set up the host side and terminal side for the various subsystems to enable each RT. Instep 912, the application provides the updated display data in the form of a display command, display data update or video data stream. The application update may be initiated from the application itself, a user action at the client or some other agent at the application, proxy server or client. The application request may be intercepted by the tracking software layer running on the host CPU or commands may be intercepted by the proxy server or terminal services accelerator that is running onTSB 400. ForBMC 800 instep 912, no tracking software layer is included and theBMC 800 operates independent of the host CPU. - If graphics operations include 2D drawing, then, in
step 924, the 2D drawing engine MU-GPU 412 preferably processes the operations into the appropriate virtual display inRAM 430. Similarly, instep 926 3D drawing is performed to the appropriate virtual display in RAM by MU-GPU 412. Instep 928,TSB 400 may determine that a video or graphics command will be forwarded to the appropriate RT. The flow through to step 940 may not be affected bybypass step 928. Instep 940, the MU-GPU 412 composites each virtual display into a frame which is suitable for display. This compositing can be performed with any combination of operations by theCPU subsystem GPU 412. As part of the compositing step, for MU-GPU 412 that includes S-Buffer management in the graphics processing hardware, the drawing engine updates the S-Buffer for the respective tiles. - As shown with
return path 944, theTSB 400 may process the next frame for either the same RT or for a different RT as required. In one preferred embodiment,TSB 400 may run the complete client stack such that as far as the application server is concerned, the client has fully completed the drawing operation. Similarly, theTSB 400 may act as a proxy server or split proxy server to complete the web client operation with respect to the web server. TheTSB 400 may run the client protocols to emulate multiple users. Once theTSB 400 has communicated to the server that the client side operation is complete, theTSB 400 may now use any mechanism to relay the intended command or display data to the target RT. As described earlier, theTSB 400 may resend the existing commands, reformulate modified commands or use a different mechanism to reflect the display updates to the RT. - As part of intercepting the commands, the
TSB 400 may fully composite the intended RT display screen in local virtual display memory. Once the compositing operation is performed,step 946 manages the tiles and the associated S-Buffer status bits and signature bits where appropriate. Step 946 considers any graphics and video operations that were processed through the video and graphics bypassstep 928 that may affect the S-Buffer status bits. For example, if a drawing operation was both performed both instep 924 and bypassed viastep 928 to the remote terminal, there is no need to perform the selective update on the tiles affected by that drawing operation as the operation will occur at the RT. - With the status bits and signatures for the tiles processed in
step 946, which may occur within MU-GPU 412 or in combination withTSA 424, step 950 can perform the selective update of the tiles. The tiles may be of fixed or variable size. The header information included with the tile will indicate the format as well as the intended RT destination. Instep 954, theTSA 424 performs the necessary encoding of the tiles received fromstep 950. This encoding is preferably a deterministic scheme where the orientation of the data within the tile and the surrounding tiles need not be considered in the encoding step. Also instep 954, the video data and graphics commands that followedstep 928 are processed. Video data may be transrated where the bit rate or frame rate is changed, scaled in either the frequency or spatial domain and transcoded to a different encoding standard where necessary. The network feedback viareturn path 968, along with the RT information, may both help determine theencoding step 954. - Step 954 also performs any graphics operations that require additional processing, which may entail encoding of graphics data. In
step 958,TSA 424 orCPU 402 performs the further encapsulation of the graphics commands, data transfers or video transfers processed in the prior step. The network feedback is also considered in this step with respect to the network characteristics such as bandwidth and latency and particular packet sizes and transmission issues. Instep 962, the encapsulated packet is processed via the appropriate network controller and the packet is transferred along the network to theappropriate RT 300. - The
network process step 962 uses the information from the system control. This information can include information as to which remote display requires which frame update streams, what type of network transmission protocol is used for each frame update stream, and what the priority and retry characteristics are for each portion of each frame update stream. Thenetwork process step 962 may be managed local to the TSA utilizing local I/O 428 andlocal network connections 490. Alternatively, in a blade based system, the network ready packets may be transferred over one of thesystem fabric buses processor blade 200 that includes a network connection or by a network processor located on another processor blade. The various networks may include Gigabit Ethernet, 10/100 Ethernet, Power Line Ethernet, Coaxial cable based Ethernet, phone line based Ethernet, or wireless Ethernet standards such as 802.11a, b, g, n, s and future derivatives. Other non-Ethernet connections are also possible and can include USB, 1394a, 1394b, 1394c or other wireless protocols such as Ultra Wide Band (UWB) or WiMAX. -
FIG. 10 is a flowchart of steps in a method for performing a network reception and display procedure in accordance with one embodiment of the invention. For reasons of clarity, the procedure is discussed in reference to display data including video. However, procedures relating to audio and other data are equally contemplated for use in conjunction with the present invention.RT 300 may be configured to run a simple control program to perform functional operations, may be an operating system based processor system running a driver or application, or may be a browser running on some type of client which may or may not include JAVA processing or more agents including advanced AJAX processing. Additionally,RT 300 may initiate requests based on user actions or agent operations that result in display updates. - In the
FIG. 10 embodiment, initially, instep 1012,remote terminal 300 preferably receives a network transmission viapath 390 fromhost computer 200. Then, instep 1014,network controller 336 preferably performs a network processing procedure to execute the network protocols to receive the transmitted data whether the transmission was wired or wireless. - In
step 1020,CPU 324 interprets the incoming transmission to determine which functional unit the transmission is intended for. If the incoming transmission is a 2D graphics command, thenCPU 324 will initialize an operation via2D drawing engine 332; if a 3D command then3D drawing engine 334; if a video data stream thenvideo decoder 328; and if an encoded tile of data thendata decoder 326. Some drawing commands may make use of both the drawing engine and thedata decoder 326. In some cases, incoming transmission data may be stored for use when needed. Various forms of AJAX and agent processing may make speculative requests for data that may or may not eventually be needed. - A varied number of commands and data transfers may take place and the various functional units operate and preferably manipulate the data information into an appropriate displayable format. In
step 1030, the manipulated data from each of the functional units is assembled viaframe manager 330 and may produce an updated display frame intoRAM 312. The updated display frame may include display frame data from prior frames, the manipulated and decoded new frame data, and any processing required for concealing display data errors that occurred during transmission of the new frame data. - Finally, in
step 1040,display controller 330 provides the most recently completed display frame data to remoteterminal display screen 310 for viewing by a user of theremote terminal system 300. Display refresh is an asynchronous operation typically operating at 60 to 72 times per second between remoteterminal controller 314 anddisplay 310 to avoid flicker. Producing new display frames instep 1030 will typically occur significantly less often though when necessary may occur at 30 frames per second or more. In the absence of either a screen saver or power down mode, the display processor will continue to update theremote display screen 310 with the most recently completed display frame, as indicated with feedback path 1050, in the process of display refresh. - The present invention therefore implements a multi-user server based computer system that supports remote terminals that users may effectively utilize in a wide variety of applications. For example, a business may deploy racks of computer systems in one location and provide users at remote locations with very simple and low cost remote
terminal systems 300 on their desktops. Different remote locations may be supported over a LAN, WAN or through another connection. The RTs may be desktop personal computers or notebook personal computers or in another system may be specialty devices such as cell phones, personal digital assistants or combined with other consumer products such as a portable video player, game machine or remote control system. Users may flexibly utilize the host computer of amulti-user system 100 to achieve the same level of software compatibility and a similar level of performance that the host system could provide to a local user. Therefore, the present invention effectively implements a flexible multi-user system that utilizes various heterogeneous components to facilitate optimal system interoperability and functionality.
Claims (13)
- A display proxy server (400) system capable of supporting multiple remote terminals (300), comprising:a graphics and display subsystem (700) having a display memory (418, 430) which can store display frames for multiple terminals, the graphics and display subsystem being configured to:generate display frames which may each correspond to display frames at one or more remote terminals, the display frames comprising sub frames, wherein a size for each sub frame is dynamically configurable during runtime by the display proxy server system as a multiple of a minimum pixel block size of an algorithm selected to encode the subframes, the algorithm selected during runtime based on characteristic indicators of content within the subframes;track modified sub frames of the display frames and perform selective updates from the display memory based on the tracking, the tracking comprising:generating signatures corresponding to the modified sub frames,performing signature checks for the modified sub frames,updating status bits to indicate that a sub frame requires selective updating,determining a type of data contained in the modified sub frames, and selecting an encoding algorithm based on the type; andrespond to commands and requests from virtual machines via a virtualization abstraction layer including graphics drivers corresponding to operating systems executing on the virtual machines;the display proxy server system (400) being configured to:communicatively couple said display proxy server system (400) to one or more host CPUs;communicate with one or more host CPUs (202) running one or more virtual machines configured to request graphics operations, locally manage the multiple virtual machine graphics requests, utilize the virtual machine graphics requests to produce virtual displays for requesting virtual machines, and transmit encoded updates of said virtual displays over a network to corresponding ones of said remote terminals (300);communicate with said one or more host CPUs (202) in one of:an operating system virtual machine mode to perform operating system functions of said graphics processing operations, and a protected management virtual machine mode which is isolated from said operating system virtual machine mode, said protected management virtual machine mode being configured to manage some of the update functions for the remote terminals (300); andmanage the selective updates from the display memory (418, 430) so that only the selective updates will be transferred via a network subsystem to corresponding ones of said remote terminals (300).
- The system of claim 1 wherein said remote terminals (300) execute an Internet browser and request web updates via said display proxy server system which performs a proxy function to request and receive the web updates from a web server and translate said web updates into encoded partial frame updates and provide said encoded partial frame updates to the Internet browser or execute an Internet browser and perform content based frame requests to said display proxy server system (400) and said display proxy server system composites, encodes and supplies partial frame updates based on what portions of the frame have changed using data already cached at said display proxy server system (400).
- The system of claim 1 wherein said display proxy server system (400) is implemented in a blade system (200) and said means for connecting to one or more host CPUs (202) is provided over a system backplane or is implemented as an appliance and is attached by both a network connection and a display output path to a server system (400).
- The system of claim 1 wherein said display proxy server system (400) communicates with a host CPU (202) running an application, responds to the application as if it were a client, and then performs selective display updates to the remote terminal (300).
- The system of claim 1 wherein said display proxy server system (400) provides a DNS lookup function for said multiple remote terminals (300) when performing web accesses.
- A baseboard management control system (800) capable of supporting one or more remote terminals (300), comprising:a graphics controller and display subsystem (700), the graphics controller and display subsystem being configured to;perform graphics processor operations, in a display memory (418, 430) at the request of a host CPU (202), to generate display frame data;track modified sub frames of display frames and perform selective updates based on this tracking;generate signatures corresponding to the modified sub frames,perform signature checks for the modified sub frames,update status bits to indicate that a sub frame requires selective updating,determine a type of data contained in the modified sub frames,select an encoding algorithm based on the type, andrespond to commands and requests from virtual machines via a virtualization abstraction layer including graphics drivers corresponding to operating systems executing on the virtual machines;the size for the sub frames being dynamically configurable during run-time by the display management as a multiple of a minimum pixel block size of an algorithm selected to encode the sub frames, the algorithm selected during runtime based on characteristic indicators of content within the sub frames; andencode said selective updates;the baseboard management control system (800) being configured to:communicatively couple said baseboard management control system (800) to one or more host CPUs, communicate with one or more host CPUs (202) running one or more virtual machines configured to request graphics operations, locally manage the multiple virtual machine graphics requests, utilize the virtual machine graphics requests to produce virtual displays for requesting virtual machines, and transmit the encoded updates of said virtual displays over a network to corresponding ones of said remote terminals (300);communicate with said host CPU (202) in one of:an operating system virtual machine mode to perform operating system functions of said graphics processing operations, and a protected management virtual machine mode which is isolated from said operating system virtual machine mode, said protected management virtual machine mode being configured to manage some of the update functions for the remote terminals (300);manage the selective updates from said display memory so that only the selective updates will be transferred via a network subsystem to corresponding ones of said remote terminals (300).
- The system of claim 6 wherein said selective updates are based on subframes of fixed tile sizes.
- The system of claim 6 wherein said display management system (700) uses an S-Buffer (404) to manage selective updates.
- A blade based multi-user system (400) capable of supporting multiple remote terminals (300), comprising:one or more processor blades (200) connected to a backplane;one or more terminal services accelerator blades including a display proxy server (400) system according to claim 1.
- The system of claim 9 wherein said one or more terminal services accelerator blade communicates with a host CPU (202) which is running application software and which utilizes a multi-user remote client protocol that virtualizes the graphics and display subsystem (700); performs virtual graphics functions as the remote user client; and
then performs the selective display updates from the virtual display subsystem (700) to the remote terminal (300). - The system of claim 9 wherein said terminal services blade communicates with one or more CPUs running one or more virtual machines each of which requests graphics operations as if the terminal services blade included a respective graphics controller dedicated to each virtual machine or utilizes said graphics and display subsystem to locally manage virtual machine graphics requests from multiple independent virtual machine mode CPUs to produce virtual displays for virtual machines and then transmits encoded updates of said virtual displays over a network to remote terminals, and said multiple independent virtual machine mode CPUs are not aware of each other.
- The system of claim 9 wherein said processor blades (200) operate as a web server.
- The system of claim 9 wherein said blade based multi-user system (400) provides an Internet services management functions to multiple remote terminals which access multiple web servers.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/289,983 US8112513B2 (en) | 2005-11-30 | 2005-11-30 | Multi-user display proxy server |
PCT/US2006/041684 WO2007064426A2 (en) | 2005-11-30 | 2006-10-26 | Multi-user display proxy server |
Publications (3)
Publication Number | Publication Date |
---|---|
EP1955187A2 EP1955187A2 (en) | 2008-08-13 |
EP1955187A4 EP1955187A4 (en) | 2013-10-02 |
EP1955187B1 true EP1955187B1 (en) | 2019-07-24 |
Family
ID=38088826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP06826674.1A Not-in-force EP1955187B1 (en) | 2005-11-30 | 2006-10-26 | Multi-user display proxy server |
Country Status (6)
Country | Link |
---|---|
US (2) | US8112513B2 (en) |
EP (1) | EP1955187B1 (en) |
JP (1) | JP5129151B2 (en) |
KR (1) | KR20080084993A (en) |
CN (1) | CN101553795B (en) |
WO (1) | WO2007064426A2 (en) |
Families Citing this family (203)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949922B2 (en) * | 2002-12-10 | 2015-02-03 | Ol2, Inc. | System for collaborative conferencing using streaming interactive video |
US20090118019A1 (en) | 2002-12-10 | 2009-05-07 | Onlive, Inc. | System for streaming databases serving real-time applications used through streaming interactive video |
US9108107B2 (en) | 2002-12-10 | 2015-08-18 | Sony Computer Entertainment America Llc | Hosting and broadcasting virtual events using streaming interactive video |
US8387099B2 (en) | 2002-12-10 | 2013-02-26 | Ol2, Inc. | System for acceleration of web page delivery |
US8549574B2 (en) | 2002-12-10 | 2013-10-01 | Ol2, Inc. | Method of combining linear content and interactive content compressed together as streaming interactive video |
US8893207B2 (en) | 2002-12-10 | 2014-11-18 | Ol2, Inc. | System and method for compressing streaming interactive video |
US8495678B2 (en) | 2002-12-10 | 2013-07-23 | Ol2, Inc. | System for reporting recorded video preceding system failures |
US8832772B2 (en) | 2002-12-10 | 2014-09-09 | Ol2, Inc. | System for combining recorded application state with application streaming interactive video output |
US9003461B2 (en) | 2002-12-10 | 2015-04-07 | Ol2, Inc. | Streaming interactive video integrated with recorded video segments |
US9032465B2 (en) | 2002-12-10 | 2015-05-12 | Ol2, Inc. | Method for multicasting views of real-time streaming interactive video |
US8840475B2 (en) | 2002-12-10 | 2014-09-23 | Ol2, Inc. | Method for user session transitioning among streaming interactive video servers |
US8468575B2 (en) | 2002-12-10 | 2013-06-18 | Ol2, Inc. | System for recursive recombination of streaming interactive video |
US8661496B2 (en) | 2002-12-10 | 2014-02-25 | Ol2, Inc. | System for combining a plurality of views of real-time streaming interactive video |
US20100166056A1 (en) * | 2002-12-10 | 2010-07-01 | Steve Perlman | System and method for encoding video using a selected tile and tile rotation pattern |
US20090292992A1 (en) * | 2004-04-08 | 2009-11-26 | Micro-Star International Co., Ltd | computer system and a switching method for the same |
US7747086B1 (en) | 2005-07-28 | 2010-06-29 | Teradici Corporation | Methods and apparatus for encoding a shared drawing memory |
DE5816786T1 (en) | 2004-12-24 | 2011-07-07 | Itzutsu, Masahiro | MOBILE INFORMATION COMMUNICATION DEVICE, CONNECTION UNIT FOR A MOBILE INFORMATION COMMUNICATION DEVICE AND EXTERNAL INPUT / OUTPUT UNIT FOR A MOBILE INFORMATION COMMUNICATION DEVICE |
US8453148B1 (en) | 2005-04-06 | 2013-05-28 | Teradici Corporation | Method and system for image sequence transfer scheduling and restricting the image sequence generation |
US8341624B1 (en) * | 2006-09-28 | 2012-12-25 | Teradici Corporation | Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine |
US20070094426A1 (en) * | 2005-10-24 | 2007-04-26 | Aten International Co., Ltd. | KVM switch supporting IPMI communications with computing devices |
JP4663497B2 (en) * | 2005-12-01 | 2011-04-06 | 株式会社日立製作所 | Information processing system and information processing apparatus assignment management method |
US20070168872A1 (en) * | 2006-01-19 | 2007-07-19 | Raytheon Company | Multi-monitor, multi-JVM java GUI infrastructure with layout via XML |
KR100812332B1 (en) * | 2006-05-18 | 2008-03-10 | 삼성전자주식회사 | Apparatus and Method for managing Contents |
JP5111797B2 (en) * | 2006-06-29 | 2013-01-09 | 株式会社東芝 | Information processing apparatus and information processing method |
US8819242B2 (en) * | 2006-08-31 | 2014-08-26 | Cisco Technology, Inc. | Method and system to transfer data utilizing cut-through sockets |
US7647590B2 (en) * | 2006-08-31 | 2010-01-12 | International Business Machines Corporation | Parallel computing system using coordinator and master nodes for load balancing and distributing work |
US8799539B2 (en) * | 2006-10-18 | 2014-08-05 | Dell Products L.P. | Chipset agnostic apparatus and method for serial communication bus port disablement |
US8296760B2 (en) * | 2006-10-27 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine |
US9092250B1 (en) | 2006-10-27 | 2015-07-28 | Hewlett-Packard Development Company, L.P. | Selecting one of plural layouts of virtual machines on physical machines |
US8185893B2 (en) * | 2006-10-27 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Starting up at least one virtual machine in a physical machine by a load balancer |
US8732699B1 (en) | 2006-10-27 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Migrating virtual machines between physical machines in a define group |
US8719501B2 (en) | 2009-09-08 | 2014-05-06 | Fusion-Io | Apparatus, system, and method for caching data on a solid-state storage device |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US8706968B2 (en) | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8443134B2 (en) | 2006-12-06 | 2013-05-14 | Fusion-Io, Inc. | Apparatus, system, and method for graceful cache device degradation |
CN101715575A (en) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | Adopt device, the system and method for data pipe management data |
US8559646B2 (en) * | 2006-12-14 | 2013-10-15 | William G. Gardner | Spatial audio teleconferencing |
US8000474B1 (en) | 2006-12-15 | 2011-08-16 | Quiro Holdings, Inc. | Client-side protection of broadcast or multicast content for non-real-time playback |
US7957603B2 (en) * | 2006-12-29 | 2011-06-07 | Intel Corporation | Digital image decoder with integrated concurrent image prescaler |
JP5079342B2 (en) * | 2007-01-22 | 2012-11-21 | ルネサスエレクトロニクス株式会社 | Multiprocessor device |
FR2913164B1 (en) * | 2007-02-27 | 2009-04-17 | Sagem Comm | METHOD FOR BROADCASTING AUDIO AND VIDEO DATA SEQUENCES BY A SERVER |
US8135947B1 (en) | 2007-03-21 | 2012-03-13 | Qurio Holdings, Inc. | Interconnect device to enable compliance with rights management restrictions |
US9191605B1 (en) * | 2007-03-26 | 2015-11-17 | Qurio Holdings, Inc. | Remote monitoring of media content that is associated with rights management restrictions |
US9350701B2 (en) * | 2007-03-29 | 2016-05-24 | Bomgar Corporation | Method and apparatus for extending remote network visibility of the push functionality |
US20080256186A1 (en) * | 2007-04-12 | 2008-10-16 | Hartmann Thomas W | Collaboration system |
CN101291426B (en) * | 2007-04-18 | 2010-08-25 | 联想(北京)有限公司 | Method and system for third party to real-time monitor remote control process |
US8136042B2 (en) * | 2007-05-11 | 2012-03-13 | Raritan Americas, Inc. | Local port browser interface |
US8712597B2 (en) * | 2007-06-11 | 2014-04-29 | Hewlett-Packard Development Company, L.P. | Method of optimizing air mover performance characteristics to minimize temperature variations in a computing system enclosure |
US20080309584A1 (en) * | 2007-06-12 | 2008-12-18 | Aten International Co., Ltd. | Video extender devices capable of providing edid of a display to a computer |
US7895442B1 (en) | 2007-06-18 | 2011-02-22 | Qurio Holdings, Inc. | Interconnect device to enable compliance with rights management restrictions |
JP4946667B2 (en) * | 2007-07-02 | 2012-06-06 | カシオ計算機株式会社 | Server apparatus and program |
JP5244362B2 (en) * | 2007-10-09 | 2013-07-24 | 株式会社アキブシステムズ | High speed network system and related equipment |
US8341626B1 (en) | 2007-11-30 | 2012-12-25 | Hewlett-Packard Development Company, L. P. | Migration of a virtual machine in response to regional environment effects |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US20090172395A1 (en) * | 2007-12-31 | 2009-07-02 | International Business Machines Corporation | System and Method for Service Virtualization Using a MQ Proxy Network |
US7937452B2 (en) | 2008-02-19 | 2011-05-03 | Microsoft Corporation | Framework for rendering plug-ins in remote access services |
US8681811B2 (en) * | 2008-02-27 | 2014-03-25 | Ncomputing Inc. | System and method for obtaining cross compatibility with a plurality of thin-client platforms |
US8266637B2 (en) | 2008-03-03 | 2012-09-11 | Microsoft Corporation | Privacy modes in a remote desktop environment |
US8255536B2 (en) * | 2008-03-21 | 2012-08-28 | Microsoft Corporation | Bandwidth and latency controller |
US8839339B2 (en) * | 2008-04-15 | 2014-09-16 | International Business Machines Corporation | Blade center KVM distribution |
US8281377B1 (en) * | 2008-04-15 | 2012-10-02 | Desktone, Inc. | Remote access manager for virtual computing services |
JP2009259111A (en) * | 2008-04-18 | 2009-11-05 | Hitachi Ltd | Network apparatus, content distribution method and program |
US20090278871A1 (en) * | 2008-05-09 | 2009-11-12 | International Business Machines Corporation | Controlling Display Resolution Of A Computer Display |
US20100011012A1 (en) * | 2008-07-09 | 2010-01-14 | Rawson Andrew R | Selective Compression Based on Data Type and Client Capability |
CN101631112B (en) * | 2008-07-18 | 2013-11-06 | 华为技术有限公司 | Software uninstalling method and terminal |
JP4827950B2 (en) * | 2008-07-31 | 2011-11-30 | 富士通株式会社 | Server device |
US7979565B2 (en) * | 2008-08-27 | 2011-07-12 | International Business Machines Corporation | System and method to provide a network service |
US8549093B2 (en) | 2008-09-23 | 2013-10-01 | Strategic Technology Partners, LLC | Updating a user session in a mach-derived system environment |
US8073990B1 (en) | 2008-09-23 | 2011-12-06 | Teradici Corporation | System and method for transferring updates from virtual frame buffers |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US20100106871A1 (en) * | 2008-10-10 | 2010-04-29 | Daniel David A | Native I/O system architecture virtualization solutions for blade servers |
US9639963B2 (en) * | 2008-12-08 | 2017-05-02 | Microsoft Technology Licensing, Llc | Command remoting techniques |
US8892789B2 (en) * | 2008-12-19 | 2014-11-18 | Netapp, Inc. | Accelerating internet small computer system interface (iSCSI) proxy input/output (I/O) |
US8462681B2 (en) * | 2009-01-15 | 2013-06-11 | The Trustees Of Stevens Institute Of Technology | Method and apparatus for adaptive transmission of sensor data with latency controls |
US8224885B1 (en) | 2009-01-26 | 2012-07-17 | Teradici Corporation | Method and system for remote computing session management |
US9071843B2 (en) * | 2009-02-26 | 2015-06-30 | Microsoft Technology Licensing, Llc | RDP bitmap hash acceleration using SIMD instructions |
US8307103B2 (en) * | 2009-03-09 | 2012-11-06 | Microsoft Corporation | Tear-free remote desktop protocol (RDP) display |
US8473958B2 (en) * | 2009-05-31 | 2013-06-25 | Red Hat Israel, Ltd. | Adjusting client display devices based on settings included in a notification from remote virtual machine host prior to connection establishment |
US9507618B2 (en) * | 2009-05-31 | 2016-11-29 | Red Hat Israel, Ltd. | Virtual machine system supporting a large number of displays |
US9767070B2 (en) * | 2009-11-06 | 2017-09-19 | Hewlett Packard Enterprise Development Lp | Storage system with a memory blade that generates a computational result for a storage device |
ES2361692B1 (en) * | 2009-12-09 | 2012-08-30 | Universidad De Huelva | PROCEDURE TO DISPLAY THROUGH A COMPUTER IMAGES WITH DEFAULT FIXED SIZE. |
US8984167B1 (en) * | 2009-12-10 | 2015-03-17 | Nvidia Corporation | Real-time frame streaming from remote graphics processing unit |
US20110154214A1 (en) * | 2009-12-18 | 2011-06-23 | Microsoft Corporation | Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems |
US9117297B2 (en) * | 2010-02-17 | 2015-08-25 | St-Ericsson Sa | Reduced on-chip memory graphics data processing |
ES2390298B1 (en) * | 2010-04-16 | 2013-11-11 | Telefónica, S.A. | VISUAL CONTENT TRANSMISSION PROCEDURE. |
CN102253918B (en) * | 2010-05-05 | 2014-04-23 | 英业达股份有限公司 | Computer system |
KR101690232B1 (en) * | 2010-05-28 | 2016-12-27 | 엘지전자 주식회사 | Electronic Device And Method Of Controlling The Same |
US8892723B2 (en) * | 2010-06-16 | 2014-11-18 | Netapp, Inc. | Method and apparatus for enabling communication between iSCSI devices and SAS devices |
CN101888378B (en) * | 2010-06-23 | 2013-07-03 | 福建星网锐捷通讯股份有限公司 | Multi-screen fusing system based on telephone network, broadcast and television network and internet and method thereof |
GB2481613A (en) * | 2010-06-30 | 2012-01-04 | Skype Ltd | Updating regions of shared images using a server that records image status |
GB2481612A (en) | 2010-06-30 | 2012-01-04 | Skype Ltd | Updating image regions in a shared image system |
US8410994B1 (en) | 2010-08-23 | 2013-04-02 | Matrox Graphics Inc. | System and method for remote graphics display |
CN102402412B (en) * | 2010-09-19 | 2014-12-31 | 联想(北京)有限公司 | Display function processing module, server and display processing method |
US8724696B2 (en) * | 2010-09-23 | 2014-05-13 | Vmware, Inc. | System and method for transmitting video and user interface elements |
US8607158B2 (en) * | 2010-12-09 | 2013-12-10 | International Business Machines Corporation | Content presentation in remote monitoring sessions for information technology systems |
US9245047B2 (en) * | 2010-12-10 | 2016-01-26 | Wyse Technology L.L.C. | Methods and systems for facilitating a remote desktop session utilizing a remote desktop client common interface |
US8806360B2 (en) | 2010-12-22 | 2014-08-12 | International Business Machines Corporation | Computing resource management in information technology systems |
KR20120072134A (en) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | Apparatus and method for accelerating virtual desktop |
CN102097080B (en) * | 2010-12-27 | 2015-06-17 | 华为技术有限公司 | Display drive processing method, device and system |
WO2012106362A2 (en) | 2011-01-31 | 2012-08-09 | Fusion-Io, Inc. | Apparatus, system, and method for managing eviction of data |
US10108386B2 (en) * | 2011-02-04 | 2018-10-23 | Qualcomm Incorporated | Content provisioning for wireless back channel |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
KR20120099931A (en) * | 2011-03-02 | 2012-09-12 | 삼성전자주식회사 | Browsing method, device, and computer readable storage medium thereof |
TW201239614A (en) * | 2011-03-28 | 2012-10-01 | Wistron Corp | Automated test system and automated test method |
KR101844021B1 (en) * | 2011-04-06 | 2018-03-30 | 삼성전자주식회사 | Method and apparatus for transmitting message, and computer readable storage medium |
US8884963B2 (en) * | 2011-05-04 | 2014-11-11 | Qualcomm Incorporated | Low resolution buffer based pixel culling |
WO2012158765A2 (en) * | 2011-05-16 | 2012-11-22 | Avocent | System and method for accessing operating system and hypervisors via a service processor of a server |
US20120317184A1 (en) * | 2011-06-07 | 2012-12-13 | Syed Mohammad Amir Husain | Zero Client Device With Integrated Global Position System Capability |
US9167020B2 (en) * | 2011-06-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Web-browser based desktop and application remoting solution |
US8800051B2 (en) * | 2011-06-29 | 2014-08-05 | Nvidia Corporation | System and method for private information communication from a browser to a driver |
TWI437426B (en) * | 2011-07-08 | 2014-05-11 | Quanta Comp Inc | Rack server system |
CN103827823A (en) | 2011-07-29 | 2014-05-28 | 惠普发展公司,有限责任合伙企业 | Migrating virtual machines |
CN102984189B (en) * | 2011-09-07 | 2017-04-19 | 华为技术有限公司 | Wireless network and implementation method and terminal thereof |
US9324299B2 (en) * | 2011-09-09 | 2016-04-26 | Microsoft Technology Licensing, Llc. | Atlasing and virtual surfaces |
US20130117744A1 (en) * | 2011-11-03 | 2013-05-09 | Ocz Technology Group, Inc. | Methods and apparatus for providing hypervisor-level acceleration and virtualization services |
JP5862259B2 (en) * | 2011-12-09 | 2016-02-16 | ブラザー工業株式会社 | Display control apparatus and computer program |
KR101467430B1 (en) * | 2011-12-12 | 2014-12-01 | 주식회사 케이티 | Method and system for providing application based on cloud computing |
CN104246816A (en) * | 2011-12-13 | 2014-12-24 | 英特尔公司 | Determining proper presentation of multimedia content |
US9235414B2 (en) * | 2011-12-19 | 2016-01-12 | Intel Corporation | SIMD integer multiply-accumulate instruction for multi-precision arithmetic |
CN104012059B (en) * | 2011-12-26 | 2017-09-01 | 英特尔公司 | Direct link synchronous communication between coprocessor |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9251052B2 (en) | 2012-01-12 | 2016-02-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer |
US9829715B2 (en) | 2012-01-23 | 2017-11-28 | Nvidia Corporation | Eyewear device for transmitting signal and communication method thereof |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US10019353B2 (en) | 2012-03-02 | 2018-07-10 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for referencing data on a storage medium |
US9467305B2 (en) | 2012-03-07 | 2016-10-11 | Vmware, Inc. | Multitenant access to multiple desktops on host machine partitions in a service provider network |
CN102664873A (en) * | 2012-03-28 | 2012-09-12 | 山东超越数控电子有限公司 | Method for realization of KVM-OVER-IP of domestic Loongson CPU server with BMC |
EP2842046A4 (en) | 2012-04-23 | 2016-01-06 | Affirmed Networks Inc | Integral controller based pacing for http pseudo-streaming |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
JP5968132B2 (en) * | 2012-07-11 | 2016-08-10 | キヤノン株式会社 | Image processing apparatus, image processing method, and program |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
CN103684670A (en) * | 2012-09-18 | 2014-03-26 | 北京中电华大电子设计有限责任公司 | UWB MAC layer data cache controller design method |
US9355613B2 (en) | 2012-10-09 | 2016-05-31 | Mediatek Inc. | Data processing apparatus for transmitting/receiving compression-related indication information via display interface and related data processing method |
KR101429884B1 (en) * | 2012-11-01 | 2014-09-23 | 주식회사 윈스 | Hashing method for distributed data processing to process high-speed network massive traffic processing and hashing system for distributed data processing |
CN104011627B (en) * | 2012-12-11 | 2017-12-05 | 英特尔公司 | Situation for computing device senses |
CN103139609B (en) * | 2013-02-01 | 2016-07-06 | 深圳市深信服电子科技有限公司 | The method and apparatus that remote application video playback is optimized |
WO2014143034A1 (en) * | 2013-03-15 | 2014-09-18 | American Megatrends, Inc. | System and method of web-based keyboard, video and mouse (kvm) redirection and application of the same |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US10110647B2 (en) * | 2013-03-28 | 2018-10-23 | Qualcomm Incorporated | Method and apparatus for altering bandwidth consumption |
GB2515053A (en) * | 2013-06-12 | 2014-12-17 | Acano Uk Ltd | Collaboration Server |
US8682999B1 (en) * | 2013-09-05 | 2014-03-25 | NCS Technologies, Inc. | Systems and methods providing a mobile zero client |
US9471357B2 (en) * | 2013-09-13 | 2016-10-18 | American Megatrends, Inc. | Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween |
US8943373B1 (en) | 2013-09-25 | 2015-01-27 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Keyboard, video and mouse switch identifying and displaying nodes experiencing a problem |
US9772876B2 (en) * | 2014-01-06 | 2017-09-26 | International Business Machines Corporation | Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes |
US9483997B2 (en) | 2014-03-10 | 2016-11-01 | Sony Corporation | Proximity detection of candidate companion display device in same room as primary display using infrared signaling |
JP6454353B2 (en) * | 2014-03-31 | 2019-01-16 | メガチップス テクノロジー アメリカ コーポレーション | converter |
US9696414B2 (en) | 2014-05-15 | 2017-07-04 | Sony Corporation | Proximity detection of candidate companion display device in same room as primary display using sonic signaling |
US10070291B2 (en) | 2014-05-19 | 2018-09-04 | Sony Corporation | Proximity detection of candidate companion display device in same room as primary display using low energy bluetooth |
US10437432B2 (en) * | 2014-06-27 | 2019-10-08 | Vmware, Inc. | Integration of user interface technologies |
CN104202195B (en) * | 2014-09-10 | 2018-05-04 | 华为技术有限公司 | Method, baseboard management controller and the server of server Unified Communication |
US9332226B2 (en) * | 2014-09-15 | 2016-05-03 | Tata Communications (America) Inc. | Video session manager and method for enabling a video communication session across geographically disparate domains |
US10002058B1 (en) * | 2014-11-26 | 2018-06-19 | Intuit Inc. | Method and system for providing disaster recovery services using elastic virtual computing resources |
US10074203B2 (en) * | 2014-12-23 | 2018-09-11 | Synaptics Incorporated | Overlay for display self refresh |
CN105786421B (en) * | 2014-12-25 | 2020-11-03 | 中兴通讯股份有限公司 | Server display method and device |
US9479265B2 (en) * | 2015-02-16 | 2016-10-25 | American Megatrends, Inc. | System and method for high speed and efficient virtual desktop insfrastructure using photonics |
US9870192B2 (en) * | 2015-02-19 | 2018-01-16 | Citrix Systems, Inc. | Systems and methods for providing adapted multi-monitor topology support in a virtualization environment |
US10268590B2 (en) | 2015-02-23 | 2019-04-23 | Netflix, Inc. | Efficient computer-implemented techniques for managing graphics memory |
US9661007B2 (en) * | 2015-03-18 | 2017-05-23 | Intel Corporation | Network interface devices with remote storage control |
CN106161496B (en) * | 2015-03-25 | 2019-07-23 | 阿里巴巴集团控股有限公司 | The remote assistance method and device of terminal, system |
US10229262B2 (en) | 2015-04-20 | 2019-03-12 | Bomgar Corporation | Systems, methods, and apparatuses for credential handling |
US10397233B2 (en) | 2015-04-20 | 2019-08-27 | Bomgar Corporation | Method and apparatus for credential handling |
US10110691B2 (en) * | 2015-06-12 | 2018-10-23 | Dell Products L.P. | Systems and methods for enabling virtual keyboard-video-mouse for external graphics controllers |
US11250217B1 (en) | 2015-07-14 | 2022-02-15 | Soundhound, Inc. | Conditional responses to application commands in a client-server system |
US9973769B2 (en) * | 2015-08-12 | 2018-05-15 | Time Warner Cable Enterprises Llc | Methods and apparatus of encoding real time media content |
US10541930B2 (en) * | 2015-08-28 | 2020-01-21 | Softnas Operating Inc. | Automated data flows using flow-based data processor blocks |
US10083054B2 (en) * | 2015-12-28 | 2018-09-25 | Amazon Technologies, Inc. | Application-based computing resource management |
CN106936616B (en) * | 2015-12-31 | 2020-01-03 | 伊姆西公司 | Backup communication method and device |
US9934062B2 (en) * | 2016-03-30 | 2018-04-03 | Intel Corporation | Technologies for dynamically allocating hardware acceleration units to process data packets |
US10685139B2 (en) * | 2016-05-06 | 2020-06-16 | Idera, Inc. | Systems and methods for dynamic masking of data |
US10616184B2 (en) * | 2016-06-30 | 2020-04-07 | Intel Corporation | Wireless display streaming of protected content |
US10320895B2 (en) * | 2016-11-15 | 2019-06-11 | Microsoft Technology Licensing, Llc | Live migration of load balanced virtual machines via traffic bypass |
US10210842B2 (en) * | 2017-02-07 | 2019-02-19 | American Megatrends, Inc. | Techniques of displaying host data on a monitor connected to a service processor during pre-boot initialization stage |
US11075897B2 (en) | 2017-10-20 | 2021-07-27 | Vertiv It Systems, Inc. | System and method for communicating with a service processor |
US10979744B2 (en) | 2017-11-03 | 2021-04-13 | Nvidia Corporation | Method and system for low latency high frame rate streaming |
US10999304B2 (en) | 2018-04-11 | 2021-05-04 | Palo Alto Networks (Israel Analytics) Ltd. | Bind shell attack detection |
CN108846476A (en) * | 2018-07-13 | 2018-11-20 | 电子科技大学 | A kind of intelligent terminal security level classification method based on convolutional neural networks |
CN109120595A (en) * | 2018-07-18 | 2019-01-01 | 郑州云海信息技术有限公司 | A kind of USB device communication means and device for realizing KVM function |
TWI662810B (en) * | 2018-08-01 | 2019-06-11 | 技嘉科技股份有限公司 | Server management system and server management method |
CN109408451B (en) | 2018-11-05 | 2022-06-14 | 英业达科技有限公司 | Graphic processor system |
TWI698833B (en) * | 2018-12-05 | 2020-07-11 | 英業達股份有限公司 | Graphics processor system |
US11184378B2 (en) | 2019-01-30 | 2021-11-23 | Palo Alto Networks (Israel Analytics) Ltd. | Scanner probe detection |
US11184376B2 (en) * | 2019-01-30 | 2021-11-23 | Palo Alto Networks (Israel Analytics) Ltd. | Port scan detection using destination profiles |
US11184377B2 (en) | 2019-01-30 | 2021-11-23 | Palo Alto Networks (Israel Analytics) Ltd. | Malicious port scan detection using source profiles |
IL265789A (en) | 2019-04-01 | 2020-10-28 | Fibernet Ltd | Device for secure video streaming |
JP2020177074A (en) * | 2019-04-16 | 2020-10-29 | 株式会社デンソー | Device for vehicle, and method for controlling device for vehicle |
IL266118B2 (en) | 2019-04-17 | 2023-08-01 | Fibernet Ltd | Device for secure unidirectional audio transmission |
EP4091158A4 (en) * | 2020-01-13 | 2023-09-27 | Qualcomm Incorporated | Methods and apparatus for partial display of frame buffers |
CN111796755B (en) * | 2020-07-03 | 2022-02-11 | 深圳市创新胜为科技有限公司 | KVM control system and KVM display switching control method |
CN112532693A (en) * | 2020-11-10 | 2021-03-19 | 杭州神甲科技有限公司 | Data leakage prevention method and device with network protection capability and storage medium |
CN113709493B (en) * | 2021-07-23 | 2024-02-09 | 山东云海国创云计算装备产业创新中心有限公司 | Video stream data encryption device, method and equipment of KVM system |
US11809289B2 (en) * | 2021-10-15 | 2023-11-07 | Dell Products L.P. | High-availability (HA) management networks for high performance computing platforms |
US12039017B2 (en) | 2021-10-20 | 2024-07-16 | Palo Alto Networks (Israel Analytics) Ltd. | User entity normalization and association |
US11799880B2 (en) | 2022-01-10 | 2023-10-24 | Palo Alto Networks (Israel Analytics) Ltd. | Network adaptive alert prioritization system |
CN116170600B (en) * | 2023-03-30 | 2024-01-12 | 苏州浪潮智能科技有限公司 | Data processing method and device, electronic equipment and storage medium |
CN118093331B (en) * | 2024-04-29 | 2024-07-23 | 山东云海国创云计算装备产业创新中心有限公司 | Data processing method, device and system based on hardware design and computer equipment |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5153886A (en) * | 1990-01-31 | 1992-10-06 | Hewlett Packard Company | Visual display signal processing system and method |
US5455911A (en) * | 1993-04-05 | 1995-10-03 | Allen-Bradley Company, Inc. | Communications protocol for use in transferring data over a serial bus |
DE69323196T2 (en) * | 1993-09-14 | 1999-09-09 | Ibm | Computer system and method for performing multiple tasks |
JPH0795552A (en) * | 1993-09-20 | 1995-04-07 | Fujitsu Ltd | Video conference network managing system |
US5624265A (en) * | 1994-07-01 | 1997-04-29 | Tv Interactive Data Corporation | Printed publication remote contol for accessing interactive media |
US5602589A (en) * | 1994-08-19 | 1997-02-11 | Xerox Corporation | Video image compression using weighted wavelet hierarchical vector quantization |
US5828421A (en) * | 1994-10-11 | 1998-10-27 | Hitachi America, Ltd. | Implementation efficient digital picture-in-picture decoding methods and apparatus |
GB2295936B (en) * | 1994-12-05 | 1997-02-05 | Microsoft Corp | Progressive image transmission using discrete wavelet transforms |
DE69634219D1 (en) * | 1995-03-21 | 2005-03-03 | Sun Microsystems Inc | Video frame identifier detection |
US5708961A (en) * | 1995-05-01 | 1998-01-13 | Bell Atlantic Network Services, Inc. | Wireless on-premises video distribution using digital multiplexing |
US6437803B1 (en) * | 1998-05-29 | 2002-08-20 | Citrix Systems, Inc. | System and method for combining local and remote windows into a single desktop environment |
US6075906A (en) * | 1995-12-13 | 2000-06-13 | Silicon Graphics Inc. | System and method for the scaling of image streams that use motion vectors |
US5977933A (en) * | 1996-01-11 | 1999-11-02 | S3, Incorporated | Dual image computer display controller |
US5675382A (en) * | 1996-04-08 | 1997-10-07 | Connectix Corporation | Spatial compression and decompression for video |
US5850482A (en) * | 1996-04-17 | 1998-12-15 | Mcdonnell Douglas Corporation | Error resilient method and apparatus for entropy coding |
US6108104A (en) * | 1996-09-16 | 2000-08-22 | Eastman Kodak Company | Image handling method and system |
US5852437A (en) * | 1996-09-24 | 1998-12-22 | Ast Research, Inc. | Wireless device for displaying integrated computer and television user interfaces |
US6141447A (en) * | 1996-11-21 | 2000-10-31 | C-Cube Microsystems, Inc. | Compressed video transcoder |
US5909518A (en) * | 1996-11-27 | 1999-06-01 | Teralogic, Inc. | System and method for performing wavelet-like and inverse wavelet-like transformations of digital data |
US6031940A (en) * | 1996-11-27 | 2000-02-29 | Teralogic, Inc. | System and method for efficiently encoding video frame sequences |
US6222885B1 (en) * | 1997-07-23 | 2001-04-24 | Microsoft Corporation | Video codec semiconductor chip |
US6304895B1 (en) * | 1997-08-22 | 2001-10-16 | Apex Inc. | Method and system for intelligently controlling a remotely located computer |
US6275619B1 (en) * | 1997-08-29 | 2001-08-14 | Teralogic, Inc. | System and method for performing wavelet and inverse wavelet transformations of digital data using semi-orthogonal wavelets |
US6768775B1 (en) * | 1997-12-01 | 2004-07-27 | Samsung Electronics Co., Ltd. | Video CODEC method in error resilient mode and apparatus therefor |
US6097441A (en) * | 1997-12-31 | 2000-08-01 | Eremote, Inc. | System for dual-display interaction with integrated television and internet content |
US6104334A (en) * | 1997-12-31 | 2000-08-15 | Eremote, Inc. | Portable internet-enabled controller and information browser for consumer devices |
US6340994B1 (en) * | 1998-08-12 | 2002-01-22 | Pixonics, Llc | System and method for using temporal gamma and reverse super-resolution to process images for use in digital display systems |
US6456340B1 (en) * | 1998-08-12 | 2002-09-24 | Pixonics, Llc | Apparatus and method for performing image transforms in a digital display system |
US6754266B2 (en) * | 1998-10-09 | 2004-06-22 | Microsoft Corporation | Method and apparatus for use in transmitting video information over a communication network |
US6323854B1 (en) * | 1998-10-31 | 2001-11-27 | Duke University | Multi-tile video display system with distributed CRTC |
US6409602B1 (en) * | 1998-11-06 | 2002-06-25 | New Millenium Gaming Limited | Slim terminal gaming system |
US6853385B1 (en) * | 1999-11-09 | 2005-02-08 | Broadcom Corporation | Video, audio and graphics decode, composite and display system |
EP1145218B1 (en) * | 1998-11-09 | 2004-05-19 | Broadcom Corporation | Display system for blending graphics and video data |
US6806885B1 (en) * | 1999-03-01 | 2004-10-19 | Micron Technology, Inc. | Remote monitor controller |
US6850649B1 (en) * | 1999-03-26 | 2005-02-01 | Microsoft Corporation | Image encoding using reordering and blocking of wavelet coefficients combined with adaptive encoding |
US6256019B1 (en) * | 1999-03-30 | 2001-07-03 | Eremote, Inc. | Methods of using a controller for controlling multi-user access to the functionality of consumer devices |
US6792615B1 (en) * | 1999-05-19 | 2004-09-14 | New Horizons Telecasting, Inc. | Encapsulated, streaming media automation and distribution system |
US6263503B1 (en) * | 1999-05-26 | 2001-07-17 | Neal Margulis | Method for effectively implementing a wireless television system |
US6628716B1 (en) * | 1999-06-29 | 2003-09-30 | Intel Corporation | Hardware efficient wavelet-based video compression scheme |
TW444506B (en) * | 1999-09-16 | 2001-07-01 | Ind Tech Res Inst | Real-time video transmission method on wireless communication networks |
US6611530B1 (en) * | 1999-09-21 | 2003-08-26 | Hewlett-Packard Development Company, L.P. | Video communication using multiple streams |
US6834123B2 (en) * | 2001-05-29 | 2004-12-21 | Intel Corporation | Method and apparatus for coding of wavelet transformed coefficients |
KR100677070B1 (en) * | 1999-10-02 | 2007-02-01 | 삼성전자주식회사 | Error control method for video bitstream data in wireless multimedia communication and computer readable medium therefor |
JP3735498B2 (en) | 1999-11-09 | 2006-01-18 | 株式会社東芝 | Information recording medium, information recording apparatus, and information recording method |
US9668011B2 (en) * | 2001-02-05 | 2017-05-30 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Single chip set-top box system |
US6664969B1 (en) * | 1999-11-12 | 2003-12-16 | Hewlett-Packard Development Company, L.P. | Operating system independent method and apparatus for graphical remote access |
US6898583B1 (en) * | 2000-01-24 | 2005-05-24 | Sony Corporation | Method and apparatus of creating application-specific, non-uniform wavelet transforms |
US6798838B1 (en) * | 2000-03-02 | 2004-09-28 | Koninklijke Philips Electronics N.V. | System and method for improving video transmission over a wireless network |
US6771828B1 (en) * | 2000-03-03 | 2004-08-03 | Microsoft Corporation | System and method for progessively transform coding digital data |
US6549674B1 (en) * | 2000-10-12 | 2003-04-15 | Picsurf, Inc. | Image compression based on tiled wavelet-like transform using edge and non-edge filters |
US6774912B1 (en) * | 2000-03-16 | 2004-08-10 | Matrox Graphics Inc. | Multiple display device display controller with video overlay and full screen video outputs |
US6510177B1 (en) * | 2000-03-24 | 2003-01-21 | Microsoft Corporation | System and method for layered video coding enhancement |
US6816194B2 (en) * | 2000-07-11 | 2004-11-09 | Microsoft Corporation | Systems and methods with error resilience in enhancement layer bitstream of scalable video coding |
US6704024B2 (en) * | 2000-08-07 | 2004-03-09 | Zframe, Inc. | Visual content browsing using rasterized representations |
GB2366439A (en) * | 2000-09-05 | 2002-03-06 | Sharp Kk | Driving arrangements for active matrix LCDs |
US6842777B1 (en) * | 2000-10-03 | 2005-01-11 | Raja Singh Tuli | Methods and apparatuses for simultaneous access by multiple remote devices |
US7146305B2 (en) * | 2000-10-24 | 2006-12-05 | Vcis, Inc. | Analytical virtual machine |
US6785700B2 (en) * | 2000-12-13 | 2004-08-31 | Amphion Semiconductor Limited | Implementation of wavelet functions in hardware |
US6826242B2 (en) * | 2001-01-16 | 2004-11-30 | Broadcom Corporation | Method for whitening colored noise in a communication system |
US6868083B2 (en) * | 2001-02-16 | 2005-03-15 | Hewlett-Packard Development Company, L.P. | Method and system for packet communication employing path diversity |
US6850571B2 (en) * | 2001-04-23 | 2005-02-01 | Webtv Networks, Inc. | Systems and methods for MPEG subsample decoding |
JP3632637B2 (en) | 2001-08-09 | 2005-03-23 | セイコーエプソン株式会社 | Electro-optical device, driving method thereof, driving circuit of electro-optical device, and electronic apparatus |
US7107578B1 (en) * | 2001-09-24 | 2006-09-12 | Oracle International Corporation | Techniques for debugging computer programs involving multiple programming languages |
GB2381692B (en) * | 2001-10-31 | 2004-09-08 | Alphamosaic Ltd | Video-telephony system |
US20040083334A1 (en) * | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Method and apparatus for managing the integrity of data in non-volatile memory system |
US7293165B1 (en) * | 2003-04-03 | 2007-11-06 | Advanced Micro Devices, Inc. | BMC-hosted boot ROM interface |
US6931458B2 (en) * | 2003-04-03 | 2005-08-16 | Dell Products, L.P. | Apparatus and method for refreshing a terminal display in a multiple information handling system environment |
US20050204015A1 (en) | 2004-03-11 | 2005-09-15 | Steinhart Jonathan E. | Method and apparatus for generation and transmission of computer graphics data |
GB2415335B (en) * | 2004-06-15 | 2007-09-26 | Toshiba Res Europ Ltd | Wireless terminal dynamically programmable proxies |
US7694298B2 (en) * | 2004-12-10 | 2010-04-06 | Intel Corporation | Method and apparatus for providing virtual server blades |
WO2006081634A2 (en) * | 2005-02-04 | 2006-08-10 | Barco N.V. | Method and device for image and video transmission over low-bandwidth and high-latency transmission channels |
CN101171843B (en) * | 2005-03-10 | 2010-10-13 | 高通股份有限公司 | Content classification for multimedia processing |
US7698706B2 (en) * | 2005-05-20 | 2010-04-13 | International Business Machines Corporation | Methods and apparatus for implementing an integrated user interface for managing multiple virtual machines operative in a computing system |
US8364623B1 (en) * | 2005-06-29 | 2013-01-29 | Symantec Operating Corporation | Computer systems management using mind map techniques |
US20070033496A1 (en) * | 2005-07-14 | 2007-02-08 | Hitachi, Ltd. | System and method for adjusting BER/PER to increase network stream-based transmission rates |
US7437225B1 (en) * | 2005-07-29 | 2008-10-14 | Rockwell Collins, Inc. | Flight management system |
-
2005
- 2005-11-30 US US11/289,983 patent/US8112513B2/en not_active Expired - Fee Related
-
2006
- 2006-10-26 JP JP2008543288A patent/JP5129151B2/en not_active Expired - Fee Related
- 2006-10-26 WO PCT/US2006/041684 patent/WO2007064426A2/en active Application Filing
- 2006-10-26 EP EP06826674.1A patent/EP1955187B1/en not_active Not-in-force
- 2006-10-26 KR KR1020087016016A patent/KR20080084993A/en not_active Application Discontinuation
- 2006-10-26 CN CN2006800446321A patent/CN101553795B/en not_active Expired - Fee Related
-
2012
- 2012-01-13 US US13/350,660 patent/US20120173755A1/en not_active Abandoned
Non-Patent Citations (1)
Title |
---|
None * |
Also Published As
Publication number | Publication date |
---|---|
US20120173755A1 (en) | 2012-07-05 |
EP1955187A2 (en) | 2008-08-13 |
WO2007064426A3 (en) | 2009-06-04 |
JP2009517772A (en) | 2009-04-30 |
CN101553795A (en) | 2009-10-07 |
US20070124474A1 (en) | 2007-05-31 |
CN101553795B (en) | 2013-10-02 |
KR20080084993A (en) | 2008-09-22 |
WO2007064426A2 (en) | 2007-06-07 |
US8112513B2 (en) | 2012-02-07 |
EP1955187A4 (en) | 2013-10-02 |
JP5129151B2 (en) | 2013-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1955187B1 (en) | Multi-user display proxy server | |
US7899864B2 (en) | Multi-user terminal services accelerator | |
US8200796B1 (en) | Graphics display system for multiple remote terminals | |
US7916956B1 (en) | Methods and apparatus for encoding a shared drawing memory | |
US8638336B2 (en) | Methods and systems for remoting three dimensional graphical data | |
US20140285502A1 (en) | Gpu and encoding apparatus for virtual machine environments | |
US8629878B2 (en) | Extension to a hypervisor that utilizes graphics hardware on a host | |
US20100013839A1 (en) | Integrated GPU, NIC and Compression Hardware for Hosted Graphics | |
US20060028479A1 (en) | Architecture for rendering graphics on output devices over diverse connections | |
US20140074911A1 (en) | Method and apparatus for managing multi-session | |
US9235452B2 (en) | Graphics remoting using augmentation data | |
CN108762934B (en) | Remote graphic transmission system and method and cloud server | |
US20090328037A1 (en) | 3d graphics acceleration in remote multi-user environment | |
US10476927B2 (en) | System and method for display stream compression for remote desktop protocols | |
US8984540B2 (en) | Multi-user computer system | |
CN113835816A (en) | Virtual machine desktop display method, device, equipment and readable storage medium | |
TWI598817B (en) | Multi-user computer system | |
Brown et al. | OpenGL Vizserver 3.1–Application transparent remote interactive visualization and collaboration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20080502 |
|
AK | Designated contracting states |
Kind code of ref document: A2 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
AX | Request for extension of the european patent |
Extension state: AL BA HR MK RS |
|
R17D | Deferred search report published (corrected) |
Effective date: 20090604 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 15/16 20060101AFI20090722BHEP |
|
RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: MICROSOFT CORPORATION |
|
DAX | Request for extension of the european patent (deleted) | ||
A4 | Supplementary search report drawn up and despatched |
Effective date: 20130902 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 15/16 20060101AFI20130827BHEP Ipc: H04L 29/08 20060101ALI20130827BHEP Ipc: G06F 3/14 20060101ALI20130827BHEP |
|
RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
17Q | First examination report despatched |
Effective date: 20170130 |
|
GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: GRANT OF PATENT IS INTENDED |
|
INTG | Intention to grant announced |
Effective date: 20190211 |
|
GRAS | Grant fee paid |
Free format text: ORIGINAL CODE: EPIDOSNIGR3 |
|
GRAA | (expected) grant |
Free format text: ORIGINAL CODE: 0009210 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE PATENT HAS BEEN GRANTED |
|
AK | Designated contracting states |
Kind code of ref document: B1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
REG | Reference to a national code |
Ref country code: GB Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: EP |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R096 Ref document number: 602006058365 Country of ref document: DE |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: REF Ref document number: 1159034 Country of ref document: AT Kind code of ref document: T Effective date: 20190815 |
|
REG | Reference to a national code |
Ref country code: IE Ref legal event code: FG4D |
|
REG | Reference to a national code |
Ref country code: NL Ref legal event code: MP Effective date: 20190724 |
|
REG | Reference to a national code |
Ref country code: LT Ref legal event code: MG4D |
|
REG | Reference to a national code |
Ref country code: AT Ref legal event code: MK05 Ref document number: 1159034 Country of ref document: AT Kind code of ref document: T Effective date: 20190724 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: SE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: FI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: LT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: AT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: BG Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20191024 Ref country code: PT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20191125 Ref country code: NL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: ES Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: LV Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20191124 Ref country code: GR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20191025 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: TR Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: RO Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: PL Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: DK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: EE Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: IT Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 |
|
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R119 Ref document number: 602006058365 Country of ref document: DE |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CZ Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: IS Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20200224 Ref country code: SK Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 Ref country code: MC Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 |
|
REG | Reference to a national code |
Ref country code: CH Ref legal event code: PL |
|
PLBE | No opposition filed within time limit |
Free format text: ORIGINAL CODE: 0009261 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT |
|
PG2D | Information on lapse in contracting state deleted |
Ref country code: IS |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CH Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191031 Ref country code: LU Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191026 Ref country code: LI Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191031 Ref country code: DE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20200501 |
|
26N | No opposition filed |
Effective date: 20200603 |
|
REG | Reference to a national code |
Ref country code: BE Ref legal event code: MM Effective date: 20191031 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: BE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191031 Ref country code: SI Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 |
|
GBPC | Gb: european patent ceased through non-payment of renewal fee |
Effective date: 20191026 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: FR Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191031 Ref country code: IE Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191026 Ref country code: GB Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES Effective date: 20191026 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: CY Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT Effective date: 20190724 |
|
PG25 | Lapsed in a contracting state [announced via postgrant information from national office to epo] |
Ref country code: HU Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO Effective date: 20061026 |