Abstract: A compression algorithm replaces duplicative strings with a copy pair indicating a location and length of a preceding identical string that is within a window from the duplicative string. Rather than a replacing a longest matching string within a window from a given point with a copy pair, the longest matching string may be used provide it is at least two bytes larger than the next longest matching string or is at a distance that is less than some multiple of a distance to the next longest matching string. In another aspect, the length of the window in which a matching string may be found is dependent on a length of the matching string. In yet another aspect, rather than labeling each literal and copy pair to indicate what it is, strings of non-duplicative literals are represented by a label and a length of the string.
Abstract: Systems and method for reading compressed data from non-volatile storage such as an SSD device are disclosed. A logical section, e.g. page, of data includes a plurality of data blocks that are compressed such that the lengths thereof are different. A header section of the page stores headers for the data blocks and storing a length for each data block. The header section may be a codeword encoding the headers according to an error correction scheme. To read out a data block a hardware decoder requests reading of the page and transfers the header section into a hardware decoder that decodes the headers to obtain an offset for a desired data block. Without instructing reading of the page, the offset is used by the hardware decoder to request transfer of the desired data block that is then decoded and returned to a requesting device.
Abstract: A compression algorithm is disclosed in which compressibility of an input frame is determined. If a frame is found to be compressible, it is input to a compression algorithm, otherwise the frame may bypass the compression algorithm. Literals of length N bits in a frame are sorted into 2^N bins such a counter Bi indicates a number of literals of value i. The maximum and minimum counter values are evaluated to estimate the compressibility of the file. For example, if Bmax is the maximum counter value and Bmin is the minimum counter value, then If Bmax<A*Bmin (A being a value greater than 1, e.g. 4), the frame may be deemed to be uncompressible, otherwise the frame may be deemed to be compressible and compressed according to the DEFLATE algorithm or some other compression algorithm.