E99/EL/VLSI1 Diepenbeek, 1 juni 1999
OPTIMALISATIE VAN MPEG-4-WAVELETCODE VOOR DE TRIMEDIAPROCESSOR
Abstract van het eindwerk van Bert BRANS en Benjamin GOYVAERTS Industrieel Ingenieur Elektriciteit optie Elektronica – VLSI
Promotoren: ing. L. Nachtergaele – IMEC dr. ir. J. Genoe – KHlim
1. Inleiding In dit tijdperk van digitale revolutie, waarbij bijna elk gezin op het Internet aangesloten is, neemt de vraag naar meer beschikbare bandbreedte hand over hand toe. De toenemende convergentie van telecommunicatie-, computer- en filmindustrie speelt deze evolutie nog meer in de kaart. Nieuwe toepassingen zoals voice-over-ip, web-tv, streaming audio, video en andere zijn immers een zware belasting voor het Internet. Ondanks de recente ontwikkeling van breedbandnetwerken, ontstaat een nood aan nieuwe flexibele methodes om data weer te geven in toekomstige multimedia-omgevingen. Digitale compressietechnieken zoals MPEG-4 bieden mogelijk een oplossing voor dit probleem en kunnen in de nabije toekomst het verkeer op het Internet aanzienlijk versnellen. MPEG-4, de opvolger van MPEG-1 / MPEG-2 is een eerste echte multimediastandaard voor geavanceerde multimediale beeldcompressie. De belangrijkste eigenschap van MPEG-4 in de context van dit eindwerk is de mogelijkheid tot datacompressie van beelden of video gebaseerd op wavelets. Wavelet-transformaties laten immers toe de datastroom aan te passen aan de beschikbare bandbreedte van een bepaald kanaal.
2. Wat zijn wavelets? Een wavelet is een alternatieve manier om data voor te stellen. We kunnen een wavelettransformatie vergelijken met een Fourier-analyse van een blokgolf. Net zoals een blokgolf bestaat uit een superpositie van sinussen of cosinussen, bestaat een beeld in onze toepassing uit een superpositie van beelden die de frequentie-informatie bevatten.
Figuur 1 : Overeenkomst tussen Fourier-analyse en wavelets Een wavelet-transformatie bestaat in principe uit twee afzonderlijke fasen: een voorwaartse en een terugwaartse wavelet-transformatie. De voorwaartse wavelet-transformatie zet het beeld om in frequentie-informatie. De terugwaartse zet de frequentie-informatie terug om in het originele beeld. Deze transformaties bestaan elk uit een horizontale en een verticale filtering. Bij wijze van voorbeeld werken we hier de horizontale filtering van de voorwaartse transformatie uit. Een horizontale filtering bestaat uit een bemonstering en een filtering (zie figuur 2). Bij de bemonstering splitsen we een beeld op in even en oneven kolommen, die vervolgens bij de filtering door de respectieve hoogdoorlaat- en laagdoorlaatfilters gestuurd worden. De verticale filtering verloopt analoog aan de horizontale, maar de bemonstering gebeurt nu niet volgens de kolommen maar volgens de rijen van het beeld.
Horizontale filtering van de voorwaartse transformatie Bemonstering W/2 kolom 0, 2, 4, ...
H W
Filtering H x W/2 hoogdoorlaatfilter
Beelden samenzetten
W/2 H
W
even H
H W/2
W/2 H kolom 1, 3, 5, …
oneven Figuur 2 : Horizontale filtering van de voorwaartse transformatie
laagdoorlaatfilter H x W/2
L H
H
De voorwaartse transformatie, die de beelden omzet in frequentie-informatie, maakt een betere compressie van het beeld mogelijk. Deze compressie gebeurt in een volgende stap (bv. embedded zero tree encoding). De voorwaartse wavelet-transformatie wordt steeds door de zender uitgevoerd, de terugwaartse transformatie door de ontvanger. In figuur 3 werd door de zender meerdere malen een voorwaartse transformatie uitgevoerd op een beeld, het resultaat werd door een datakanaal gestuurd en door de ontvanger teruggetransformeerd tot het originele beeld. Zender
voorwaartse wavelettransform
datakanaal hoeveelheid data
terugwaartse wavelettransformatie
terugwaartse wavelettransformatie
terugwaartse wavelettransformatie
terugwaartse wavelettransformatie
Ontvanger
terugwaartse wavelettransformatie
Figuur 3 : Progressief overzenden van data met behulp van wavelets Naarmate de ontvanger meer detailinformatie ontvangt, kan hij een nauwkeurigere benadering maken van het originele beeld. Bij een beperkte bandbreedte ziet de ontvanger, na het binnenhalen van slechts een deel van de informatie, toch een goede benadering van het originele beeld. Hij kan vervolgens beslissen om de rest van de informatie niet verder te ontvangen en bandbreedte voor andere toepassingen te sparen.
3. De Trimediaprocessor Terwijl bij vroegere toepassingen het zwaartepunt lag bij de bandbreedte van het datakanaal, ligt het zwaartepunt nu eerder bij de rekenkracht van de ontvanger. De ontvanger moet immers de ontvangen informatie decomprimeren om opnieuw het originele beeld of een benadering ervan te bekomen. Ondanks de toenemende rekenkracht van de huidige processorfamilies van Intel, AMD en Motorola wordt de CPU van de ontvangende computer toch nog zwaar belast. De CPU van een computer draait immers ook een besturingssysteem en andere toepassingen. Het nut van een insteekkaart met een speciale multimediaprocessor ligt voor de hand. De extra processor op de insteekkaart verlost de hoofdprocessor van de
rekenintensieve taak van de terugtransformatie, zodat er voldoende rekenkracht overblijft voor normale toepassingen. Vanuit dit oogpunt ontwikkelde Philips de Trimediaprocessor, de TM1000. Deze low-cost processor is de eerste in een reeks van programmeerbare multimedia-processoren en is bedoeld als een grafische accelerator voor computers met PCI-architectuur. Hij werd speciaal ontwikkeld voor de bewerking van audio- video- en datastromen en is dus ook uitermate geschikt voor videoconferentie-toepassingen. De Trimediaprocessor maakt gebruik van een VLIW-instructieset (Very Long Instruction Word). Aan de hand van één VLIW-instructie kunnen vijf operaties in parallel uitgevoerd worden. Naast de traditionele microprocessoroperaties bevat de VLIW-instructieset ook een aantal specifieke multimedia-instructies om de compressie en decompressie van video a.h.v. algoritmes te versnellen. Elk van deze speciale instructies kan tot 11 traditionele microprocessorinstructies vervangen. Een juist gebruik kan tot een enorme doorvoersnelheid voor multimediatoepassingen leiden. Het doel van dit eindwerk was een bestaande waveletcode te optimaliseren voor de Trimedia. Zo kon IMEC nagaan of de Trimedia een geschikt platform voor wavelet-transformaties is. De uitdaging was om de snelheid van een eerder geoptimaliseerde waveletcode voor de PentiumII MMX te evenaren en liefst te overtreffen.
4. Optimalisatie van de waveletcode De uitgevoerde optimalisaties kunnen we ruwweg onderverdelen in twee groepen : - globale optimalisatie van de C-code door data en controle transformaties - optimalisatie van “innerloop” code door middel van de hardwarespecifieke functies Naast eenvoudige verbeteringen zoals het verminderen van het aantal functie-oproepen in de code werd bij de optimalisatie in C veel aandacht besteed aan meer complexe verbeteringen zoals nieuwe methodes voor data-opslag, data-extrapolatie, ophaling van elementen uit het geheugen en lusverbeteringen. Deze optimalisaties in C zijn voor alle mogelijke hardwareplatformen toepasbaar. Bij de hardwarespecifieke optimalisaties, die enkel voor de Trimediaprocessor uitvoerbaar zijn ging de aandacht vooral uit naar een speciale vorm van geheugenbeheer voor de Trimediaprocessor, nl. restricted pointers. Ook de specifieke operaties van de Trimedia, de zogenaamde custom operations werden onder de loep genomen.
5. Resultaten In een vorig eindwerk op IMEC werd de waveletcode reeds geoptimaliseerd voor de PentiumII MMX en de Sharc. Een ongeoptimaliseerde waveletcode werd getest op de Trimedia. Om een juiste vergelijking te kunnen maken, hebben we onze waveletcode in dezelfde omstandigheden getest als voor de andere platformen. We hebben dezelfde resoluties en figuren gebruikt, een volledige voorwaartse en terugwaartse transformatie uitgevoerd en het
aantal frames op dezelfde manier gemeten. We hebben metingen gedaan voor de volgende resoluties: beeld SQCIF QCIF CIF 4CIF
breedte 88 176 352 704
hoogte 72 144 288 576
aantal kleuren 24 bit 24 bit 24 bit 24 bit
Tabel 1: De gebruikte resoluties in aantal pixels Wanneer we nu de prestaties van de drie verschillende platformen onderling vergelijken, bekomen we volgende grafiek: P r e s ta tie s o v e r d e d r ie p la tf o r m e n
1 8 0 .0 1 6 0 .0 1 4 0 .0 1 2 0 .0 1 0 0 .0 8 0 .0
fp s
6 0 .0 4 0 .0 Trimedia
nieuw 100
MHz
2 0 .0
6 MHz PII MMX 26 100 MHz d ou Trimedia
0 .0
MHz Sharc 40
4 C IF
C IF
Q C IF
S Q C IF
Grafiek 1: Prestaties over de drie platformen uitgedrukt in frames per seconde De hoogte van de balken komt overeen met het aantal keer dat per seconde een voorwaartse en terugwaartse wavelet-transformatie op de drie kleurkanalen kan uitgevoerd worden. De drie platformen die we hier vergelijken zijn : de Pentium II van Intel, een Sharc multiprocessor systeem van Analog Devices en de Trimedia TM1000 van Philips. De balkenrij naast “Trimedia oud 100 MHz” komt overeen met de snelheid verkregen door hercompilatie van de snelste C code voor de Pentium. Dit was het startpunt van onze thesis. Na de door ons uitgevoerde optimalisaties blijkt de Trimedia veel beter te presteren dan voorheen(Trimedia oud). De prestaties overtreffen zelfs deze van de PentiumII MMX en dit ondanks de lagere kloksnelheid van de Trimedia. Het uiteindelijke doel van dit eindwerk, de prestaties van de PentiumII MMX evenaren of overtreffen, werd bereikt. Ter illustratie werd een camerademonstratie uitgewerkt voor de Trimedia, waarbij de voorwaartse en terugwaartse transformatie van video ongeveer realtime uitgevoerd werden.
6. Besluit Optimalisaties van programmacode hebben een duidelijke impact op de resultaten. Zowel globale als hardwarespecifieke optimalisaties leiden tot betere resultaten. Zo kan de low-cost Trimedia na optimalisatie aan een aanvaardbare snelheid de transformatie van beelden of video uitvoeren.