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