Operating system independent method and apparatus for graphical remote access
First Claim
1. A method for transmitting video graphics data over a communications link to a remote location from a data processor including a display memory, comprising:
- dividing a display memory into a number of blocks, the blocks storing multibit pixel values representing video data to be displayed;
periodically reading the multibit pixel values stored in a plurality of the blocks;
for each block that has been read condensing the multibit pixel values to lower number bit values;
computing a current signature value for each block that has been read based on the contents;
comparing the current signature value for each block that has been read to a previously computed signature value corresponding to that block; and
transmitting to the communication link the lower number bit value contents of each block that has been read if the current signature value for that block is different from the previously computed signature value corresponding to that block.
4 Assignments
0 Petitions
Accused Products
Abstract
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. 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. 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. The method and apparatus may be performed by a separate processor as part of a remote management board, a “virtual” processor by causing the processor of the managed server to enter a system management mode, or a combination of the two.
-
Citations
68 Claims
-
1. A method for transmitting video graphics data over a communications link to a remote location from a data processor including a display memory, comprising:
-
dividing a display memory into a number of blocks, the blocks storing multibit pixel values representing video data to be displayed;
periodically reading the multibit pixel values stored in a plurality of the blocks;
for each block that has been read condensing the multibit pixel values to lower number bit values;
computing a current signature value for each block that has been read based on the contents;
comparing the current signature value for each block that has been read to a previously computed signature value corresponding to that block; and
transmitting to the communication link the lower number bit value contents of each block that has been read if the current signature value for that block is different from the previously computed signature value corresponding to that block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
when a particular block having a current signature value that is different from the previously computed signature value for that block is followed by one or more sequential blocks having the same current signature value, the transmitting step transmits the lower number bit value contents of said particular block together with a repeat command representing the number of successive blocks having said same current signature value.
-
-
3. The method of claim 2, wherein each changed block to be transmitted is compressed prior to transmission using a run length encoding technique.
-
4. The method of claim 1, further comprising:
-
periodically reading configuration information of a video graphics controller;
determining if the configuration information has changed; and
transmitting configuration changes if the configuration information has changed.
-
-
5. The method of claim 4,
wherein the display memory is divided into a number of blocks, including rows and columns, based on the screen resolution, and wherein the configuration information is read after reading of a row of blocks is completed. -
6. The method of claim 1, further comprising:
-
periodically reading configuration information of a pointing device;
determining if the configuration information has changed; and
transmitting configuration changes if the configuration information has changed.
-
-
7. The method of claim 6,
wherein the display memory is divided into a number of blocks, including rows and columns, based on the screen resolution, and wherein the configuration information is read after reading of a row of blocks is completed. -
8. The method of claim 1,
wherein all the blocks are read over a number of passes, and wherein each pass reads a different subset of all the blocks. -
9. The method of claim 8, wherein blocks surrounding a particular block are marked for accelerated processing if during one of the passes the current signature value for the particular block is different from the previously computed signature value corresponding to the particular block.
-
10. The method of claim 9, wherein each pass reads a different subset of all the blocks together with any blocks marked for accelerated processing.
-
11. The method of claim 1, wherein the blocks contain multibit color pixel values, the method further comprising:
condensing the multibit color pixel values into 6-bit red-green-blue color pixel values before computing the current signature values.
-
12. A method of transmitting to a remote location video graphics data stored in memory, comprising:
-
dividing the memory into a number of storage blocks containing multibit color pixel values;
reading contents of a first storage block and of at least one subsequent storage block;
condensing the multibit color pixel values into 6-bit red-green-blue color pixel values;
comparing the contents of the first storage block to successive subsequent storage blocks on the basis of the 6-bit pixel values;
developing a repeat command based on how many consecutive subsequent blocks have the same contents as the first storage block; and
transmitting the 6-bit values of the first storage block together with the repeat command. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
periodically reading configuration information of a video graphics controller;
determining if the configuration information has changed; and
transmitting configuration changes if the configuration information has changed.
-
-
14. The method of claim 13,
wherein the memory is divided into a number of storage blocks, including rows and columns, based on the screen resolution, and wherein the configuration information is read after a reading of a row of storage blocks is completed. -
15. The method of claim 12, comprising:
-
periodically reading configuration information of a pointing device;
determining if the configuration information has changed; and
transmitting configuration changes if the configuration information has changed.
-
-
16. The method of claim 15,
wherein the memory is divided into a number of storage blocks, including rows and columns, based on the screen resolution, and wherein the configuration information is read after reading of a row of storage blocks is completed. -
17. The method of claim 12,
wherein all the storage blocks are read over a number of passes, and wherein each pass reads a different subset of all the storage blocks. -
18. The method of claim 17, wherein storage blocks surrounding a particular block are marked for accelerated processing if during one of the passes the signature value for said particular storage block is different from a previously computed signature value corresponding to the particular storage block.
-
19. The method of claim 18, wherein each pass reads a different subset of all the storage blocks as well as any blocks marked for accelerated processing.
-
20. A computer system for communicating with a remote console, comprising:
-
a video graphics controller having a frame buffer to store multibit pixel values for display, a communications device; and
a processor coupled to the video graphics controller and the communications device, the processor configured to;
divide the frame buffer into rows of storage blocks;
periodically read storage blocks of the frame buffer, change the multibit pixel values to lower number bit values to determine whether the stored contents of any of the storage blocks that have been read have changed since a previous reading, and for storage blocks having changed contents, store the lower number bit values in a transmit buffer; and
transmit the lower number bit values of the contents of the changed blocks of a row from the transmit buffer to the remote console via the communications device for updating a display at the remote console. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
wherein the processor reads all the blocks over a number of passes, and wherein each pass reads a different subset of all the blocks. -
24. The computer system of claim 23, wherein the processor is configured such that if during one of the passes the hash code value for a block is different from the previously computed hash code value corresponding to that block, the processor marks surrounding blocks surrounding that block for accelerated processing.
-
25. The computer system of claim 24, wherein each pass reads a different subset of all the blocks and any blocks marked for accelerated processing.
-
26. The computer system of claim 21, wherein the processor is configured to compress changed blocks prior to transmission.
-
27. The computer system of claim 26, wherein the processor is configured to compress similar bytes within a block that has been read, using a run length encoding technique.
-
28. The computer system of claim 20, wherein the processor is further configured to:
-
periodically read configuration information of the video graphics controller;
determine if the configuration information has changed; and
transmit configuration changes if the configuration information has changed.
-
-
29. The computer system of claim 28,
wherein the frame buffer is divided into a number of blocks, including rows and columns, based on the display resolution, and wherein the processor reads the configuration information after reading of a row of blocks is completed. -
30. The computer system of claim 20, wherein the processor is further configured to:
-
periodically read configuration information of a pointing device;
determine if the configuration information has changed; and
transmit configuration changes if the configuration information has changed.
-
-
31. The computer system of claim 30,
wherein the frame buffer is divided into a number of blocks, including rows and columns, based on the display resolution, and wherein the processor reads the configuration information after reading of a row of blocks is completed. -
32. The computer system of claim 20, including a monitor connectable to the video graphics controller to create a display based on the contents of said frame buffer.
-
-
33. A computer system for enabling display of graphics mode data on a remote console, the computer system having a processor controlled by an operating system, the computer system comprising:
-
a video graphics controller having a frame buffer including storage blocks to store multibit pixel values;
a communications device; and
an independent processing means coupled to the video graphics controller and the communications device and configured to operate independently from the operating system, the independent processing means configured to;
read multibit pixel values stored in blocks of the frame buffer and convert the multibit pixel values in each read block to corresponding lower number bit values;
determine if the contents of a frame buffer block that has been read has changed from a previous reading of the contents of that block; and
transmit via the communications device for updating a display at the remote console, the lower number bit values of each frame buffer block that has been read and for which the contents were determined to have changed from said previous reading. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41)
compress prior to transmission, each frame buffer block for which the contents were determined to have changed from said previous reading.
-
-
35. The computer system of claim 33, wherein the independent processing means is further configured to:
monitor the video graphics controller for configuration changes; and
transmit video graphics controller configuration changes via the communications device if the video graphics controller configuration has changed.
-
36. The computer system of claim 35, wherein the video graphics controller is periodically checked for changes.
-
37. The computer system of claim 35, wherein monitoring the video graphics controller for changes includes monitoring a hardware cursor.
-
38. The computer system of claim 33, wherein determining if frame buffer blocks have changed includes synchronizing the remote console with the frame buffer.
-
39. The computer system of claim 33, wherein the independent processing means is operable in a system management mode of the processor.
-
40. The computer system of claim 39, wherein the video graphics controller is attached to an accelerated graphics port.
-
41. The computer system of claim 33, wherein the frame buffer is accessed via an alternate high-address range.
-
42. A method for remotely displaying graphics mode data of a computer system on a remote console, the computer system having a processor controlled by an operating system, a video graphics controller having a frame buffer storing multipixel values representing video data for display, a communications device, and an independent processing means coupled to the video graphics controller and the communications device and configured to operate independently from the operating system, the method performed by the independent processing means comprising:
-
periodically reading multipixel values stored in a plurality of blocks of said frame buffer;
for each frame buffer block that is read condensing the multibit pixel values to lower number bit values;
computing a current signature code for each block that is read, based on the contents of that block;
comparing the signature code for each block that is read to a previously computed signature code corresponding to that block to determine if that frame buffer block has changed; and
transmitting to the remote console via the communications device the lower number bit values of each frame buffer block that has changed, and updating a display at the remote console on the basis of the transmitted frame buffer blocks. - View Dependent Claims (43, 44, 45, 46, 47, 48, 49, 50)
compressing the lower number bit value contents of each changed frame buffer block before transmitting.
-
-
44. The method of claim 42, further comprising:
-
monitoring the video graphics controller for configuration changes; and
transmitting video graphics controller configuration changes if the video graphics controller configuration has changed.
-
-
45. The method of claim 44, wherein the video graphics controller is periodically checked for changes.
-
46. The method of claim 44, wherein monitoring the video graphics controller for changes includes monitoring a hardware cursor.
-
47. The method of claim 42, wherein determining if the frame buffer portion has changed includes synchronizing the remote console with the frame buffer.
-
48. The method of claim 42, wherein the independent processing means is a system management mode of the processor.
-
49. The method of claim 48, wherein the video graphics controller is attached to an accelerated graphics port.
-
50. The method of claim 42, wherein the frame buffer is accessed via an alternate high-address range.
-
51. A computer system for enabling display of graphics mode data on a remote console, the computer system having a system processor controlled by an operating system, the computer system comprising:
-
a video graphics controller having a frame buffer including storage blocks to store multibit pixel values, a monitor coupled to said video graphics controller, a communications device; and
a processor coupled to the video graphics controller and the communications device and operable independently from the operating system to;
read multibit pixel values stored in blocks of the frame buffer, convert the multibit pixels values in each read block to corresponding reduced number bit values, and compute a current signature value code corresponding to the contents of that block;
compare the current signature value code of each block that has been read to a previously stored computed signature value code for that block;
for blocks that have been read that have different current and previously computed stored signature value codes;
(a) update the previously stored signature code by replacement with the current signature value code, and (b) transmit via the communications device for display at the remote console, the reduced number bit values representing the contents of those blocks. - View Dependent Claims (52, 53, 54, 55, 56, 57, 58, 59)
compress the contents of frame buffer blocks to be transmitted prior to transmission.
-
-
53. The computer system of claim 51, wherein the processor operable independently of the operating system is further operable to:
monitor the video graphics controller for configuration changes; and
transmit video graphics controller configuration changes to the remote console if the video graphics controller configuration has changed.
-
54. The computer system of claim 53, wherein the video graphics controller is periodically checked for changes.
-
55. The computer system of claim 53, wherein monitoring the video graphics controller for changes includes monitoring a hardware cursor.
-
56. The computer system of claim 51, wherein determining if the frame buffer blocks have changed includes synchronizing the remote console with the frame buffer.
-
57. The computer system of claim 51, wherein the processor operable independently of the operating system is implemented as a system management mode of the system processor.
-
58. The computer system of claim 57, wherein the video graphics controller is attached to an accelerated graphics port.
-
59. The computer system of claim 51, wherein the frame buffer is accessed via an alternate high-address range.
-
60. A method for monitoring display data stored in memory at a first location for updating a display at a remote location, comprising:
-
dividing a display memory into rows of blocks, the blocks storing multibit pixel values;
periodically reading multibit pixel values stored in blocks in each of the rows;
for each block that is read condensing the multibit pixel values to reduced bit number values;
computing a current signature code for each block that is read based on the reduced bit number values;
comparing the current signature code for each block that is read to a previously stored computed signature code corresponding to that block;
for blocks that are read having different current and previously computed signature codes, (a) updating the previously stored signature codes by replacement with the corresponding current signature codes, and (b) transmitting over a communication link to the remote location said reduced bit number values. - View Dependent Claims (61, 62, 63, 64, 65)
-
-
66. A method for monitoring display data stored in memory at a first location for updating a display at a remote location, comprising:
-
dividing a display memory into rows of blocks, the blocks storing multibit pixel values;
periodically reading multibit pixel values stored in blocks in each of the rows;
for each block that is read condensing the multibit pixel values to reduced bit number values;
computing a current signature code for each block that is read based on the reduced bit number values;
comparing the current signature code for each block that is read to a previously stored computed signature code corresponding to that block;
for blocks that are read having different current and previously computed signature codes, (a) updating the previously stored signature codes by replacement with the corresponding current signature codes, and (b) storing the corresponding reduced bit number value blocks in a transmit buffer, and after reading each row, transmitting said reduced bit number value blocks from the transmit buffer over a communication link to the remote location and updating a display at said remote location on the basis of the transmitted blocks. - View Dependent Claims (67, 68)
-
Specification