Executable Code Compression With Real-Time Fixed-Block Decompression
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Storing executable code in DRAM or SRAM increases the size and cost of system-on-chip products, as these memory types are typically separate components, and conventional compression algorithms do not provide maximal compression while balancing speed.
Innovation Solution
Compressing executable code into fixed-size blocks for on-chip flash memory, allowing for real-time decompression and processing without additional on-chip memory, using layered compression techniques and Huffman encoding to achieve a high compression ratio.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If executable code is stored in DRAM or SRAM, then code accessibility and execution speed are improved, but system size and cost increase
Solution Approach 1:
The code storage is segmented into compressed code portions and decompressed code portions within the same on-chip memory block, allowing simultaneous compression storage and rapid decompression execution without requiring separate memory components
Solution Approach 2:
The code is transformed from uncompressed to compressed form, changing the storage density parameter to fit more code in the same on-chip memory area while maintaining execution speed through on-the-fly decompression
2Quantity of substance
If conventional compression algorithms are used, then storage space is reduced, but decompression speed is insufficient for real-time processing
Solution Approach 1:
The code is pre-organized into fixed-size blocks with predetermined decompression boundaries, allowing the decompression logic to process fixed-length segments in parallel and predictably meet real-time execution requirements
Solution Approach 2:
The system dynamically switches between compressed and uncompressed states of the code, with the decompression logic actively converting compressed code portions to decompressed code portions during execution rather than maintaining a static uncompressed state
Data Source
AI summary
Systems, methods, and other embodiments associated with compression and real-time decompression of executable code are described. According to one embodiment, an apparatus includes a memory that stores compressed blocks of data. The data is executable code for a processing element. The apparatus also includes a decompression logic. The decompression logic receives a request from the processing element for data and determines a compressed block that stores the data. The compressed block is decompressed to produce an uncompressed block. The decompression logic then provides the requested data to the processing element. In one embodiment an uncompressed block has a predetermined fixed block size. The predetermined fixed block size is selected based on at least one of an amount of uncompressed data, a desired compression ratio, and a desired access time.


