Optimising IIR Filters Using ARM NEON

University essay from Malmö högskola/Fakulteten för teknik och samhälle (TS)

Author: Sebastian Bentmar Holgersson; [2012]

Keywords: ARM; NEON; SIMD; IIR; biquad;

Abstract: ARMs processorserie Cortex-A9 har stöd för SIMD-instruktioner med hjälp av NEON MPE. Detta innebär att processorn kan använda sig av vektor-instruktioner som kan utföra operationer på ett flertal element med varje instruktion. Målet med bruk av NEON MPE är att öka prestandan, men då man försöker optimera en speciell IIR-filtertyp som kallas för "biquads" kan man stöta på problem. Problemen med NEON-optimering av "biquads" beror på att endast fem operationer krävs för varje iteration och att behandling av IIR-filter kräver att man behandlar en sampel i taget eftersom varje behandlat sampels värde beror på tidigare behandlade samplar. Rapporten ger en kort beskrivning och genomgång av hur IIR-filter och NEON-optimering fungerar.För att analysera NEON-optimering av biquad-filter skapas fyra olika implementationer av en audioeffekt. De fyra implementationerna jämför prestandan hos flyttalsaritmetik, fixpunkts-aritmetik och NEON-optimering samt en version som implementerar både fixpunktsaritmetik och NEON-optimering. Problemen med optimering av biquad-filter med hjälp av NEON-instruktioner löses genom parallell behandling av ljudkanalerna. Eftersom kanalerna är självständiga kan man fördubbla prestanda genom att utföra varje operation på såväl höger- som vänsterkanal. Vidare prestandaförbättring ges även då effektiviteten hos minnesoperationer förbättras och med hjälp av fixpunkts-behandling.Resultaten visar att fixpunktsversionen som använder sig av NEON-instruktioner är snabbast, men flyttalsversionen med NEON-instruktioner är bara marginellt långsammare och dessutom enklare att implementera. Användandet av NEON-instruktioner förbättrar prestandan med mellan 1,7-2,8 gånger i de fall som testas.

  AT THIS PAGE YOU CAN DOWNLOAD THE WHOLE ESSAY. (follow the link to the next page)