420 likes | 518 Views
Psychoacoustic audio coding on ARM CPUs. Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto. Situering. ARM arch. Psy. audio coding. Bacon. ARM Player. Vragen. Inhoud. Inleiding & Situering De ARM-architectuur
E N D
Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Inhoud • Inleiding & Situering • De ARM-architectuur • Psychoacoustische audio-codering • De Bacon audio codec • Een ARM-gebaseerde Bacon player • Conclusies & Vragen Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen ARM architectuur: Inhoud • Ontstaansgeschiedenis • Specifieke eigenschappen • Evolutie ARM CPUs • DSP op ARM • Programmering • ARMs in de praktijk Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 vanstatusvlaggen. (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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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% (!) Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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.) Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Psychoacoustische audiocodering • Wat? • Inleidende principes • Tijd Frequentie • Quantisering & Entropy coding • Kwaliteitsevaluatie Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Wat? • Compacte codering van audiosignalen door: • Gebruik kennis fysiek-psychologische aspecten gehoorssysteem • Verwijderen redundantie Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Bacon • Verantwoording • Ontwerpdoelen • Filterbank • Psychoacoustisch model • Quantisatie • Lossless coding • Truuks Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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; } Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Een ARM player voor Bacon • Texas Instruments OMAP 5912 • Atmel AT91SAM7 • Circuit design • PCB design • Status Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Circuit design Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen PCB design Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARMPlayer Vragen 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 Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARMPlayer Vragen 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? Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie • Centrino 1.7Ghz laptop, Windows XP • Foobar2000 0.9.1 audio player • 128kbps CBR 44.1kHz stereo Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie • 192Mhz ARM9E Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen Performantie Psychoacoustic audio coding on small ARM CPUs
Situering ARM arch. Psy. audio coding Bacon ARMPlayer Vragen Vragen? ? Psychoacoustic audio coding on small ARM CPUs