RDP BITMAP HASH ACCELERATION USING SIMD INSTRUCTIONS
First Claim
1. A method for classifying an image on a parallel processing system having a bit width, the method involving a first random number and a second random number, the first random number differing from the second random number, and a checksum, a datum, a first key and a second key, comprising:
- grouping the image into at least one group, each group comprising a number of bits of the image equal to the bit width;
for each group, performing a hash comprising;
setting the checksum equal to the checksum plus the group;
setting the datum to equal the sum of the group and the datum multiplied by the first random number and summed with the second random number;
setting the first key to equal the first key modified by the datum; and
setting the second key to equal the second key modified by the datum; and
storing a big key comprising the first key and the second key in a big key store.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems, methods and computer readable media are disclosed for a vectorized tile differencing algorithm for a remote desktop protocol (RDP). A server executes a CBC-variant vectorized hash algorithm that is used to produce a big key that identifies the tile, and keeps track of these big keys. Where a serial version of the algorithm operates on a single portion of the image at once—such as 32 bits—the vectorized algorithm operates on a plurality of these portions simultaneously. Where the server identifies that a tile has already been sent to a client via RDP because it has a second big key that matches the big key, it sends the big key to the client—which caches received tiles—and the client uses it to access the proper tile for display. Where the server identifies that a tile has not already been sent to the client, it sends the client the tile.
44 Citations
20 Claims
-
1. A method for classifying an image on a parallel processing system having a bit width, the method involving a first random number and a second random number, the first random number differing from the second random number, and a checksum, a datum, a first key and a second key, comprising:
-
grouping the image into at least one group, each group comprising a number of bits of the image equal to the bit width; for each group, performing a hash comprising; setting the checksum equal to the checksum plus the group; setting the datum to equal the sum of the group and the datum multiplied by the first random number and summed with the second random number; setting the first key to equal the first key modified by the datum; and setting the second key to equal the second key modified by the datum; and storing a big key comprising the first key and the second key in a big key store. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A system for classifying an image on a parallel processing system having a bit width, the method involving a first random number and a second random number, the first random number differing from the second random number, and a checksum, a datum, a first key and a second key, comprising:
-
a processor; circuitry for grouping the image into at least one group, each group comprising a number of bits of the image equal to the bit width; circuitry for, for each group, performing a hash comprising; calculating a running reference to the image, the running reference comprising the checksum, the first key, the second key, and the datum, and calculated based on the running reference, the group, the datum, the first random number and the second random number; circuitry for storing a big key comprising the first key and the second key in a big key store. - View Dependent Claims (16, 17, 18, 19)
-
-
20. A computer-readable storage medium comprising computer-readable instructions that when executed on a parallel processor having a bit width and a DWORD size, cause the processor to perform the operations of:
-
selecting a first random number and a second random number, the first random number differing from the second random number; setting each of a checksum, a datum, a first key and a second key equal to zero; grouping the image into at least one group, each group comprising a number of bits of the image equal to the bit width; for each group, performing a hash comprising; setting the checksum equal to the checksum plus the group; setting the datum to equal the sum of the group and the datum multiplied by the first random number and summed with the second random number; setting the first key to equal the first key modified by the datum; and setting the second key to equal the second key modified by the datum; setting a DWORD first key based on each DWORD size of bits of the first key; setting a DWORD second key based on each DWORD size of bits of the second key; storing a big key comprising the DWORD first key and the DWORD second key in a big key store; when a second image matching the image has not been sent to the client, compressing the image and sending the client the compressed image and the big key across a communications network via a remote desktop protocol (RDP); and when a second image matching the image has been sent to the client, sending the big key across the communications network via the RDP along with an indication to use the big key to access the second image from a cache and display the second image on a display of the client.
-
Specification