842 (compression algorithm)

From HandWiki
Revision as of 20:10, 6 February 2024 by Steve Marsio (talk | contribs) (fix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

842, 8-4-2, or EFT is a data compression algorithm. It is a variation on Lempel–Ziv compression with a limited dictionary length. With typical data, 842 gives 80 to 90 percent of the compression of LZ77 with much faster throughput and less memory use.[1] Hardware implementations also provide minimal use of energy and minimal chip area.

842 compression can be used for virtual memory compression, for databases — especially column-oriented stores, and when streaming input-output — for example to do backups or to write to log files.

Algorithm

The algorithm operates on blocks of 8 bytes with sub-phrases of 8, 4 and 2 bytes. A hash of each phrase is used to look up a hash table with offsets to a sliding window buffer of past encoded data. Matches can be replaced by the offset, so the result for each block can be some mixture of matched data and new literal data.[2][1][3]

Implementations

IBM added hardware accelerators and instructions for 842 compression to their Power processors from POWER7+ onward.[4] In addition, POWER9 and Power10 added hardware acceleration for the RFC 1951 Deflate algorithm, which is used by zlib and gzip.[5]

A device driver for hardware-assisted 842 compression on a POWER processor was added to the Linux kernel in 2011.[6] More recently, Linux can fallback to a software implementation, which of course is much slower.[7] zram, a Linux kernel module for compressed RAM drives, can be configured to use 842.

Researchers have implemented 842 using graphics processing units and found about 30x faster decompression using dedicated GPUs.[8] An open source library provides 842 for CUDA and OpenCL.[9] An FPGA implementation of 842 demonstrated 13 times better throughput than a software implementation.[10]

References

  1. 1.0 1.1 Plauth, Max; Polze, Andreas. "Towards Improving Data Transfer Efficiency for Accelerators using Hardware Compression". https://www.researchgate.net/publication/329953356. 
  2. Franaszek, Peter A; Lastras-Montaño, Luis A; Peng, Song; Robinson, John T. "Data Compression with Restricted Parsings". IBM. https://dominoweb.draco.res.ibm.com/f9c025a5ffdb16f2852570c1005fff4f.html. 
  3. Blaner, B.; Abali, B.; Bass, B. M.; Chari, S.; Kalla, R.; Kunkel, S.; Lauricella, K.; Leavens, R. et al. (November 2013). "IBM POWER7+ processor on-chip accelerators for cryptography and active memory expansion". IBM Journal of Research and Development 57 (6): 3:1–3:16. doi:10.1147/JRD.2013.2280090. https://ieeexplore.ieee.org/document/6665020. Retrieved 2021-07-13. 
  4. "POWER NX842 Compression for Db2". IBM. https://www.ibm.com/support/pages/system/files/inline-files/DB2_POWER_NX842_Compression_V1.1.pdf. 
  5. Veale, Brian F (14 March 2022). "GZip Acceleration with AIX on Power Systems". IBM. https://community.ibm.com/community/user/power/blogs/brian-veale1/2022/03/14/gzip-acceleration-with-aix-on-power-systems. 
  6. "Torvalds/Linux". 12 February 2022. https://github.com/torvalds/linux/blob/master/drivers/crypto/nx/nx-842.c. 
  7. "Torvalds/Linux". 12 February 2022. https://github.com/torvalds/linux/blob/master/crypto/842.c. 
  8. Plauth, Max; Polze, Andreas (2019). "GPU-Based Decompression for the 842 Algorithm". 2019 Seventh International Symposium on Computing and Networking Workshops (CANDARW). pp. 97–102. doi:10.1109/CANDARW.2019.00025. ISBN 978-1-7281-5268-4. https://ieeexplore.ieee.org/document/8951729. 
  9. "Lib842". 3 November 2020. https://github.com/plauth/lib842. 
  10. Sukhwani, Bharat; Abali, Bulent; Brezzo, Bernard; Asaad, Sameh (2011). "High-Throughput, Lossless Data Compresion on FPGAs". 2011 IEEE 19th Annual International Symposium on Field-Programmable Custom Computing Machines. IEEE. pp. 113–116. doi:10.1109/FCCM.2011.56. ISBN 978-1-61284-277-6. https://ieeexplore.ieee.org/document/5771261. Retrieved 2022-10-22.