Skip to content

Compress and decompress data with common algorithms and use benchmarks to see if offloading compression for large data sets can improve performance.

Notifications You must be signed in to change notification settings

enzoevers/CompressionOffloading

Repository files navigation

CompressionOffloading

Project board: https://github.com/users/enzoevers/projects/2

Compress and decompress data with common algorithms and use benchmarks to see if offloading compression and/or decompression for large data sets can improve performance.

As for now, first the DEFLATE algorithm will be used with the ZIP file format.

Personal goals

  • Learn about (de)compression algorithms
  • Get more experience with FPGA/Zynq

Development environment setup

See DevEnvSetup.md.

Note that all development should keep the following targets in mind:

  • x86 Linux
  • x86 Windows
  • ARM Zynq

Plan

  1. Use the zlib library to compress and decompress (example). This should run on both Deskptop and the Zynq Processing System (PS).
    • A single file
      • DEFLATE -> compressed data file
      • DEFLATE -> ZIP file
      • compressed data file -> INFLATE
      • ZIP file -> INFLATE
    • Multiple files
      • DEFLATE -> ZIP file
      • ZIP file -> INFLATE
    • For benchmarking see: https://github.com/okuvshynov/b63
  2. Write the DEFLATE algorithm in C.
    • See 1., but replace the DEFLATE implementation from zlib with my custom implementation
  3. Write the INFLATE algorithm in C.
    • See 1., but replace the INFLATE implementation from zlib with my custom implementation
  4. Create a pipeline on the Zynq that sends data from the Processing System (PS) to the FPGA/Programmable Logic (PL) and back to the PS.
    • Success
  5. Implement an FPGA-friendly version of DEFLATE in VHDL
    • See 1., but replace the DEFLATE implementation from zlib with my custom FPGA-offloading implementation
  6. Implement an FPGA-friendly version of INFLATE in VHDL
    • See 1., but replace the DEFLATE implementation from zlib with my custom FPGA-offloading implementation

Now compression and decompression works. Something that I was thinking about as well was that a stream of incoming data in the FPGA could be compressed on the FPGA and, as a stream, send compressed chucks to the PS. This way it may be possible to store data (logging) data more efficiently without needing a lot of RAM.

References and useful links

(De)comporession algorithm

FPGA (de)compression algorithm related

Generic FPGA related

Benchmarking

About

Compress and decompress data with common algorithms and use benchmarks to see if offloading compression for large data sets can improve performance.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published