Show simple item record

dc.contributor.authorOzturk, O.en_US
dc.contributor.authorKandemir, M.en_US
dc.contributor.authorChen, G.en_US
dc.date.accessioned2016-02-08T10:08:00Z
dc.date.available2016-02-08T10:08:00Z
dc.date.issued2008-09en_US
dc.identifier.issn1084-4309
dc.identifier.urihttp://hdl.handle.net/11693/23026
dc.description.abstractAs compared to a large spectrum of performance optimizations, relatively less effort has been dedicated to optimize other aspects of embedded applications such as memory space requirements, power, real-time predictability, and reliability. In particular, many modern embedded systems operate under tight memory space constraints. One way of addressing this constraint is to compress executable code and data as much as possible. While researchers on code compression have studied efficient hardware and software based code compression strategies, many of these techniques do not take application behavior into account; that is, the same compression/decompression strategy is used irrespective of the application being optimized. This article presents an application-sensitive code compression strategy based on control flow graph (CFG) representation of the embedded program. The idea is to start with a memory image wherein all basic blocks of the application are compressed, and decompress only the blocks that are predicted to be needed in the near future. When the current access to a basic block is over, our approach also decides the point at which the block could be compressed. We propose and evaluate several compression and decompression strategies that try to reduce memory requirements without excessively increasing the original instruction cycle counts. Some of our strategies make use of profile data, whereas others are fully automatic. Our experimental evaluation using seven applications from the MediaBench suite and three large embedded applications reveals that the proposed code compression strategy is very successful in practice. Our results also indicate that working at a basic block granularity, as opposed to a procedure granularity, is important for maximizing memory space savings. © 2008 ACM.en_US
dc.language.isoEnglishen_US
dc.source.titleACM Transactions on Design Automation of Electronic Systemsen_US
dc.relation.isversionofhttp://dx.doi.org/10.1145/1391962.1391968en_US
dc.subjectCFGen_US
dc.subjectCode access patternen_US
dc.subjectCode compressionen_US
dc.subjectEmbedded systemsen_US
dc.subjectMemory optimizationen_US
dc.subjectApplicationsen_US
dc.subjectCodes (symbols)en_US
dc.subjectConcurrency controlen_US
dc.subjectConstrained optimizationen_US
dc.subjectData compressionen_US
dc.subjectIntegrated circuitsen_US
dc.subjectOptimizationen_US
dc.subjectPower spectrumen_US
dc.subjectReal time systemsen_US
dc.subjectEmbedded systemsen_US
dc.titleAccess pattern-based code compression for memory-constrained systemsen_US
dc.typeArticleen_US
dc.departmentDepartment of Computer Engineering
dc.citation.epage60:30en_US
dc.citation.epage60:1en_US
dc.citation.volumeNumber13en_US
dc.citation.issueNumber4en_US
dc.identifier.doi10.1145/1391962.1391968en_US
dc.publisherAssociation for Computing Machineryen_US


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record