De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto.

Verwante presentaties


Presentatie over: "Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto."— Transcript van de presentatie:

1 Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto

2 Inhoud 1. Inleiding & Situering 2. De ARM-architectuur 3. Psychoacoustische audio-codering 4. De Bacon audio codec 5. Een ARM-gebaseerde Bacon player 6. Conclusies & Vragen SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

3 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

4 ARM architectuur: Inhoud 1. Ontstaansgeschiedenis 2. Specifieke eigenschappen 3. Evolutie ARM CPUs 4. DSP op ARM 5. Programmering 6. ARMs in de praktijk SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

5 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

6 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

7 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

8 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% (!) SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

9 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

10 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, W SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

11 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.) SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

12 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

13 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

14 Psychoacoustische audiocodering 1. Wat? 2. Inleidende principes 3. Tijd  Frequentie 4. Quantisering & Entropy coding 5. Kwaliteitsevaluatie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

15 Wat?  Compacte codering van audiosignalen door:  Gebruik kennis fysiek-psychologische aspecten gehoorssysteem  Verwijderen redundantie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

16 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

17 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  ms maskering NA signaal SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

18 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

19 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

20 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

21 Bacon 1. Verantwoording 2. Ontwerpdoelen 3. Filterbank 4. Psychoacoustisch model 5. Quantisatie 6. Lossless coding 7. Truuks SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

22 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

23 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

24 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

25 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

26 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

27 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

28 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

29 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; } SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

30 Een ARM player voor Bacon 1. Texas Instruments OMAP Atmel AT91SAM7  Circuit design  PCB design  Status SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

31 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

32 Atmel AT91SAM7  ARM7TDMI microcontroller  Flash-based  8-64k RAM  k ROM  3.5 tot 9 Euro / stuk  USB & RS232, I2C, …  SSC: nodig voor aansturing I 2 S DAC  Eigen ontwerp voor bord SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

33 Circuit design SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

34 PCB design SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

35 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

36 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 SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

37 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? SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

38 Performantie  Centrino 1.7Ghz laptop, Windows XP  Foobar audio player  128kbps CBR 44.1kHz stereo SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs Decoderx realtime Bacon195x AAC172x Vorbis153x MP3130x

39 Performantie  192Mhz ARM9E SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs Decoderx realtimeMhz Bacon, full precision4,4044 Bacon, reduced precision4,8040 Bacon, reduced precision (Thumb)4,4543 MP3, ARM assembler4,8640 MP3, full precision0,65297 MP3, reduced precision4,2046 Vorbis, ARM assembler4,5143 Vorbis, full precision1,86103 Vorbis, reduced precision4,8540 AAC, ARM assembler3,3058 AAC, full precision3,2559

40 Performantie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs DecoderCodeRAMROM Bacon (Thumb) Bacon (ARM) MP3 (Helix) AAC (Helix) Vorbis (Tremor) MP3 (MAD)

41 Performantie SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs

42 Vragen? ? SitueringARM arch. Psy. audio codingBaconARM PlayerVragen Psychoacoustic audio coding on small ARM CPUs


Download ppt "Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto."

Verwante presentaties


Ads door Google