psychoacoustic audio coding on arm cpus een populaire dsp-toepassing en een populaire embedded...
TRANSCRIPT
Psychoacoustic audio coding on ARM CPUs
Een
populaire DSP-toepassing en een
populaire embedded architectuurnader bekeken.
Gian-Carlo Pascutto
Inhoud
1. Inleiding & Situering2. De ARM-architectuur3. Psychoacoustische audio-codering4. De Bacon audio codec5. Een ARM-gebaseerde Bacon player6. Conclusies & Vragen
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Inleiding & Situering
Vraag naar: Multimedia Portable Draadloos
Technologische nood aan: Performante audio/video codering Embedded systemen Low power/high performance
Opgelost door: ARM microcontrollers Psychoacoustische audio codecs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
ARM architectuur: Inhoud
1. Ontstaansgeschiedenis2. Specifieke eigenschappen3. Evolutie ARM CPUs4. DSP op ARM5. Programmering6. ARMs in de praktijk
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Onstaansgeschiedenis
Ontstaan 1985 (Acorn Computers) Vervanging voor 8-bit 6502 CPUs,
gebruik in Acorn PCs
Focus op eenvouding maar performant ontwerp
Geen doorbraak door dominantie IBM PC Verkoop van licenties IP cores
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Specifieke eigenschappen
32-bits RISC ontwerp 32-bits instructies & 32-bits addressering Meeste instructies duren 1 klokcyclus
MUL en MAC instructies (geen DIV) Load-Store architectuur
16 registers (14 bruikbaar)
Configureerbaar little endian/big endian
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Specifieke eigenschappen Barrel shift / rotate
“Gratis” beschikbaar op iedere instructie Inclusief variabele lengte shifts
Condition codes Mogelijk op iedere instructie Wel of niet uitvoeren (skippen) afhankelijk van
statusvlaggen. (vb. EQ=Equal, GE=Greater or Equal, PL=Positive)
Keuze wel of niet aanpassen statusvlaggen voor volgende instructie
Pre/postindexering Na load instructie automatische update indexregister
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Evolutie ARM CPUs
ARM7/ARMv4 (1995) ARMv4T: Thumb
Thumb Nieuwe 16-bit instructieset Minder registers toegankelijk, geen barrel
shifter, geen condition codes, … Meer code nodig maar slechts half zo groot:
gemiddeld +- 30% code size besparing Performantie:
-25% tot +100% (!)
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Evolutie ARM CPUs
ARM9/ARMv5 (1997) Langere pipeline
(5 ipv. 3 hogere kloksnelheden)
ARMv5E: DSP extensies Snelle 16-bit multiplies, saturation
ARMv5J: Jazelle (2000) Java bytecode direct uitvoeren
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Evolutie ARM CPUs
“Toekomst”: ARM10, ARM11 / ARMv6
Langere pipeline, hogere kloksnelheid Extra multimedia instructies (SIMD, cfr.
MMX/SSE) ARM Cortex
Thumb-2: ARM performantie met Thumb code size
Intel XScale tot 1.2Ghz, 1000 MIPS @ 1W
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
DSP op ARM
Fixed point Snelle 32 bits berekeningen Barrel shifter
Load/Store architectuur Vele registers goed gebruiken
Optimalisaties Anders voor elke ARM variant
(zelfs MAC …) Niet-compatible SIMD extensies
WMMX (Intel) vs NEON (ARM Ltd.)
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Programmering
Keuze voor C flexibeler, portable, ARM<=>Thumb check de output van de compiler
“Kleine” optimalisaties Gebruik 32-bit variabelen (int) Vermijden van delingen Pointers ipv. array-indexes Voer variabelen in
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
ARM in de praktijk ARM7TDMI + Flash
Goedkope microcontrollers van Atmel, Analog Devices, Philips, OKI, Cirrus, …
Vervangen 8051, AVR, PIC
Texas Instruments OMAP Dual core ARM + DSP PDA, GSM
Intel XScale PDA, auto GPS, RAID kaarten, …
Apple iPod Dual core 2 x ARM7TDMI
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Psychoacoustische audiocodering
1. Wat?2. Inleidende principes3. Tijd Frequentie4. Quantisering & Entropy coding5. Kwaliteitsevaluatie
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Wat?
Compacte codering van audiosignalen door:
Gebruik kennis fysiek-psychologische aspecten gehoorssysteem
Verwijderen redundantie
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Principes
Critical bands / Barks Gedrag gehoorssysteem ifv. Frequentie Zenuwcellen van nabijgelegen
frequenties worden tegelijk geprikkeld Hogere frequenties bredere banden
Simultane maskering Gelijktijdige waarname meerdere
signalen: sterk signaal maskeert zwak Afhankelijk aard van het signaal
(toon/ruis) 6dB tot 25dB SMR
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Principes
Absolute Threshold of Hearing (ATH) Te stil signaal is onhoorbaar
Spreading Cfr. simultane maskering, tussen
verschillende banden Tijdsdomeineffecten (pre-echo)
2-3 ms maskering VOOR signaal 50-300 ms maskering NA signaal
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Tijd Frequentie (Filterbank) Subbanding
QMF PQMF Wavelets
Transforms Betere frequentieresolutie
Slechte tijdsresolutie pre-echo Block switching en/of TNS
Hogere coding gain voor typische audiosignalen FFT MDCT (DCT-IV + window + overlap)
Summum van audiocodering
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Quantisering & Entropy coding
Quantisering = Normalisering + Afronding
Gecontroleerd per band door psychoacoustisch model
Entropy coding Directe codering Huffman coding Huffman coding v. koppels VQ, Arithmetic coding
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Kwaliteitsevaluatie
Psychoacoustische techniek Methode moet werking gehoorsysteem volgen
Subjectieve beoordeling Door mensen Probleem: placebo effecten Oplossing: blinde tests Duurt lang, moeilijk te reproduceren
Objectieve beoordeling EAQUAL (ITU BS. 1387) Snel, reproduceerbaar, onvermoeibaar Heuristisch, soms grote fouten
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Bacon
1. Verantwoording2. Ontwerpdoelen3. Filterbank4. Psychoacoustisch model5. Quantisatie6. Lossless coding7. Truuks
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Verantwoording
Bestaande codecs hebben veel “bagage”: MP3: hybride filterbank, >16kHz, mist een paar
moderne truuks AAC: LC, Main, LTP, SSR, pulse coding, IS,
verschillende windows Vorbis: redundante normalisaties, complexe
entropy coding, grote blocksizes Gebrek aan KISS principe
Complexiteit van implementatie kleine factor bij performantie-evaluatie
Foutkans naarmate complexiteit Beter met “benefit of hindsight” Experimenteren & kennis opdoen
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Ontwerpdoelen
Minimale complexiteit in design & implementatie
Kwalitatief >= MP3
Geschikt voor kleine ARM microcontrollers
Zo laag mogelijke RAM/ROM vereisten Decodeerbaar met <60Mhz ARM7TDMI Bruikbaar in Thumb mode
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Filterbank
MDCT op 1024 samples
Vermijden block switching Wavelets
Switching MDCT/Wavelets Nieuwe methode: MDWT
Temporal Noise Shaping Dualiteit DCT in tijd/frequentie LPC filter in frequentiedomein Quantisatieruis evenredig signaalsterkte
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Psychoacoustisch model
Vrij standaard, cfr. MPEG model 1
Gebaseerd op Equivalent Rectangular Bandwidth (ERB)
Nieuwer systeem dan “Barks” Banden 2 ERB wijd 21 bands
Mid/Side vs. Left/Right per band
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Quantisatie
Schaalfactor per band 1.5dB resolutie
Vaste quantiser 512 waarden, power-law
2-loop systeem voor vinden optimale quantisatie
Inner loop: bitrate controle Outer loop: controle quantisatieruis aan
psychoacoustisch model
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Lossless coding
Gequantiseerde data Per band vaste bitlengte >5 bits: directe codering 3 tot 5 bits: Huffman 1 en 2 bits: Huffman op groepen
Schaalfactoren Verschillen Huffman coderen
Bitlengtes Verschillen Huffman coderen
Mid/Side beslissingen Directe codering
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Truuks
PNS Ruisbanden detecteren Alleen energieniveau opslaan Winst afhankelijk van risico
LastVal Laatste gekwantiseerde waarde =/= 0 Alle informatie die op banden of data
hierna slaat moet niet opgeslagen worden
Winst 2-4kbps
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Truuks
32 x 32 = 64 bit multiplies Nodig voor >= 16 bit precisie in
fixed point decoding Geen equivalent in C
Library call (traag) Inline assembler (niet flexibel) Hulp bieden aan compiler door
functie te maken
static const int MUL_C(const int A, const int B) {return (((long long)A) * B) >> COEF_BITS;
}
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Een ARM player voor Bacon
1. Texas Instruments OMAP 5912
2. Atmel AT91SAM7 Circuit design PCB design Status
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
OMAP 5912
ARM9 + C55x DSP Kostprijs 26 tot 50$ / stuk Ontwikkelbord
OMAP chip op 192Mhz 32M RAM, 32M Flash ROM 24-bit 96kHz DAC/ADC Serieel/Ethernet/USB CompactFlash socket
ARM Linux Fexibel (Linux kennis zeer bruikbaar) Beschikbare software niet altijd even
betrouwbaar
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Atmel AT91SAM7
ARM7TDMI microcontroller Flash-based
8-64k RAM 32-256k ROM
3.5 tot 9 Euro / stuk USB & RS232, I2C, … SSC: nodig voor aansturing I2S DAC Eigen ontwerp voor bord
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Circuit design
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
PCB design
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Status
Power, Klok, PLL, I/O poorten, JTAG getest & werkend
Seriele poort fout bij solderen chip (opgelost) signalen kloppen niet
SSC/DAC nog niet getest
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Conclusies
ARM Snel in opmars Aanbod hardware/software verbetert
continue Voor oudere modellen (ARM7, ARM9) is
veel goedkoop beschikbaar PCB design
LQFP SMD chips met 64 pinnen zijn “niet gemakkelijk” in omgang
Veel ervaring opgedaan in kleine dingen
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Conclusies
Bestaande codecs Weg met overengineering! ISO standaarden niet heilig Wavelets lijken een “dead end”
Bacon Eigen ontwerp = zeer leerzaam Nog veel ruimte voor verbetering, zeer
geschikt voor experimentatie Performantie / ontwerpdoelen?
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Performantie
Centrino 1.7Ghz laptop, Windows XP Foobar2000 0.9.1 audio player 128kbps CBR 44.1kHz stereo
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Decoder x realtime
Bacon 195x
AAC 172x
Vorbis 153x
MP3 130x
Performantie 192Mhz ARM9E
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Decoder x realtime Mhz
Bacon, full precision 4,40 44
Bacon, reduced precision 4,80 40
Bacon, reduced precision (Thumb) 4,45 43
MP3, ARM assembler 4,86 40
MP3, full precision 0,65 297
MP3, reduced precision 4,20 46
Vorbis, ARM assembler 4,51 43
Vorbis, full precision 1,86 103
Vorbis, reduced precision 4,85 40
AAC, ARM assembler 3,30 58
AAC, full precision 3,25 59
Performantie
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Decoder Code RAM ROM
Bacon (Thumb) 5828 11516 13888
Bacon (ARM) 7960 11516 13888
MP3 (Helix) 21000 23816 13446
AAC (Helix) 20120 28864 27128
Vorbis (Tremor) 35952 81920 48428
MP3 (MAD) 36184 50000 50688
Performantie
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs
Bacon LAME Helix Vorbis FAAC Nero Bacon MWDT
-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
Value
s
Vragen?
?
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen
Psychoacoustic audio coding on small ARM CPUs