US 9,813,079 B2
High-throughput compression of data
Tobias Blaettler, Maur (CH); and Thomas Parnell, Zurich (CH)
Assigned to International Business Machines Corporation, Armonk, NY (US)
Filed by International Business Machines Corporation, Armonk, NY (US)
Filed on Feb. 29, 2016, as Appl. No. 15/56,081.
Prior Publication US 2017/0250708 A1, Aug. 31, 2017
Int. Cl. G06F 12/00 (2006.01); H03M 7/42 (2006.01); G06F 3/06 (2006.01); H03M 7/30 (2006.01)
CPC H03M 7/42 (2013.01) [G06F 3/0608 (2013.01); G06F 3/0661 (2013.01); G06F 3/0673 (2013.01); H03M 7/3086 (2013.01); H03M 7/3088 (2013.01)] 20 Claims
OG exemplary drawing
1. A method, in a data processing system, for high-throughput compression of data, the method comprising:
responsive to receiving an indication of a match of a current 4-byte sequence from an incoming data stream to stored hash values in a set of hash tables:
setting an active match variable (active_match) equal to one (1);
setting an active position variable (active_pos) equal to a match position (match_pos) of an increment variable (j) (match_pos[j]);
setting an active length variable (active_len) equal to 4 minus the increment variable (j); and
setting an active distance variable (active_dist) equal to a position variable (pos) plus the increment variable (j) minus the active position variable (active_pos);
responsive to receiving a subsequent 4-byte sequence from the incoming data stream and determining that the active match variable (active_match) is set to one (1), comparing the subsequent 4-byte sequence to data in a copy of the incoming data stream in memory at the active position (active_pos) with a predefined length offset;
setting a constraint variable (k) to a number of bytes for which the match is to be extended; and
responsive to the constraint variable (k) being below a predetermined number, outputting a length (L), distance (D) pair indicating a match to a previous pattern in the incoming data stream, wherein the length (L) of the matching pattern that is set to the active length (active_len) plus the constraint variable (k) and the distance (D) is set to the active distance (active_dist).