Code compressie in Embedded Systems

advertisement
Code compressie in
Embedded Systems
Onno Kievit
ET4074
Kwantitatieve aspecten van
computer architectuur
Overzicht
 Iets over embedded systems
 Waarom coderen?
 Hoe coderen?
 Gecomprimeerde code architectuur
 Beperkingen architectuur
 Compressie algoritme
Embedded systems
Een embedded system is gedefinieerd als
een systeem dat microprocessoren of
microcontrollers bevat, maar dat geen
general-purpose computer is
Embedded systems
Zeer veel toepassingen, waaronder
controllers voor:
 auto’s,
 vliegtuigen,
 draagbare consumentenelektronica,
 enz
Embedded systems
Beperkingen op het gebied van:
 grootte
 gewicht
 energieverbruik
 prijs
Embedded systems
Vooral in massaproductie omgeving zijn de
kosten vaak nauw verbonden met de
grootte van het chip-oppervlak!
Waarom coderen?
 In embedded systems wordt groot gedeelte
van chip-oppervlak gebruikt voor de
instructie-ROM
 Reductie van instructie-ROM is dus
wenselijk!
 Codeer de instructies ter reductie
Hoe coderen?
 ontwerp architectuur met
gecomprimeerde code
Globaal:
 Sla instructies gecomprimeerd op in
geheugen
 Decomprimeer instructies als ze in de
cache worden gebracht
 Executeer standaard instructies
Architectuur met gecomprimeerde code
Processor
Instruction
Cache
Decompression
Circuit
Instruction
Memory
LAT
CLB
Beperkingen Architectuur
 Decompressie-circuit moet heel snel zijn
 Decompressie-circuit moet heel klein zijn
 Beperkingen ten aanzien van te gebruiken
compressie algoritme
Compressie algoritme
Problemen:
 Programma’s kunnen jumps bevatten
 Compressietechnieken die aan het begin
moeten beginnen kunnen niet gebruikt
worden
Gevolg:
Bestaande compressie-algoritmes voor data
compressie kunnen niet gebruikt worden
Compressie algoritme
Een oplossing voor genoemde problemen is
een byte-gebaseerde Huffman code.
Huffman code: de kortste code wordt
toegewezen aan de meest gebruikte
symbolen
Compressie algoritme
Voordeel:
 Simpel te implementeren
 Code kan op elke plek gedecodeerd worden
Nadeel:
 Houdt echter geen rekening met
afhankelijkheden tussen instructies
Compressie algoritme
Compressie kan verbeterd worden door:
 rekening te houden met statistiek tussen
de instructies
 een “lijst” bij te houden met veel
voorkomende reeksen van instructies
 de decoder asynchroon uit te voeren
Conclusie
 Compressie kan de grootte van instructie
geheugen reduceren
 Compressie ratio van 76% is mogelijk
Gevolg:
 Lagere kosten, gewicht en energieverbruik
 Of toevoeging van extra programma
features zonder geheugen te vergroten
Download