psychoacoustic audio coding on arm cpus

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

Upload: petula

Post on 12-Jan-2016

57 views

Category:

Documents


2 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Psychoacoustic audio coding on ARM CPUs

Psychoacoustic audio coding on ARM CPUs

Een

populaire DSP-toepassing en een

populaire embedded architectuurnader bekeken.

Gian-Carlo Pascutto

Page 2: Psychoacoustic audio coding on ARM CPUs

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

Page 3: Psychoacoustic audio coding on 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

Page 4: Psychoacoustic audio coding on 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

Page 5: Psychoacoustic audio coding on 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

Page 6: Psychoacoustic audio coding on 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

Page 7: Psychoacoustic audio coding on 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

Page 8: Psychoacoustic audio coding on 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

Page 9: Psychoacoustic audio coding on 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

Page 10: Psychoacoustic audio coding on 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

Page 11: Psychoacoustic audio coding on 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

Page 12: Psychoacoustic audio coding on 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

Page 13: Psychoacoustic audio coding on 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

Page 14: Psychoacoustic audio coding on 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

Page 15: Psychoacoustic audio coding on 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

Page 16: Psychoacoustic audio coding on 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

Page 17: Psychoacoustic audio coding on 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

Page 18: Psychoacoustic audio coding on 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

Page 19: Psychoacoustic audio coding on 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

Page 20: Psychoacoustic audio coding on 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

Page 21: Psychoacoustic audio coding on 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

Page 22: Psychoacoustic audio coding on 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

Page 23: Psychoacoustic audio coding on 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

Page 24: Psychoacoustic audio coding on 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

Page 25: Psychoacoustic audio coding on 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

Page 26: Psychoacoustic audio coding on 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

Page 27: Psychoacoustic audio coding on 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

Page 28: Psychoacoustic audio coding on 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

Page 29: Psychoacoustic audio coding on 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

Page 30: Psychoacoustic audio coding on 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

Page 31: Psychoacoustic audio coding on 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

Page 32: Psychoacoustic audio coding on 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

Page 33: Psychoacoustic audio coding on ARM CPUs

Circuit design

Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen

Psychoacoustic audio coding on small ARM CPUs

Page 34: Psychoacoustic audio coding on ARM CPUs

PCB design

Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen

Psychoacoustic audio coding on small ARM CPUs

Page 35: Psychoacoustic audio coding on 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

Page 36: Psychoacoustic audio coding on 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

Page 37: Psychoacoustic audio coding on 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

Page 38: Psychoacoustic audio coding on 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

Page 39: Psychoacoustic audio coding on ARM CPUs

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

Page 40: Psychoacoustic audio coding on ARM CPUs

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

Page 41: Psychoacoustic audio coding on ARM CPUs

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

Page 42: Psychoacoustic audio coding on ARM CPUs

Vragen?

?

Situering ARM arch. Psy. audio coding Bacon ARM Player Vragen

Psychoacoustic audio coding on small ARM CPUs