Signalverarbeitung Impulsantworten mit On-Chip-DSPs beschleunigen

Autor / Redakteur: Mitesh Moonat und Sanket Nayak * / Michael Eckstein

Finite- und Infinite-Impulse-Response-Filter benötigen viele Rechenressourcen. Mit On-Chip-FIR- und IIR-Hardwarebeschleunigern auf digitalen Signalprozessoren lassen sich die Hauptprozessoren gezielt entlasten.

Firmen zum Thema

Entlastung: Viele Audiosysteme verwenden einen Großteil der verfügbaren Prozessor-Rechenleistung für die FIR- und IIR-Filterung. On-Chip-DSPs können diese Aufgabe besser übernehmen.
Entlastung: Viele Audiosysteme verwenden einen Großteil der verfügbaren Prozessor-Rechenleistung für die FIR- und IIR-Filterung. On-Chip-DSPs können diese Aufgabe besser übernehmen.
(Bild: Clipdealer)

Finite-Impulse-Response (FIR) und Infinite-Impulse-Response (IIR) Filter sind die meistverwendeten Algorithmen in der digitalen Signalverarbeitung – insbesondere für Anwendungen in der Audioverarbeitung. Daher wird in typischen Audiosystemen ein erheblicher Teil der verfügbaren Prozessor-Rechenleistung für die FIR- und IIR-Filterung verwendet.

Die On-Chip-FIR- und IIR-Hardware-Beschleuniger auf einem digitalen Signalprozessor, auch als FIRA bzw. IIRA bezeichnet, können dazu verwendet werden, die FIR- und IIR-Verarbeitung auszulagern um somit den Prozes­sorkern für andere Verarbeitungsaufgaben verwenden zu können. In diesem Artikel wird anhand verschiedener Anwendungsfälle erläutert, wie diese Beschleuniger in der Praxis eingesetzt werden können. Die Beispiele werden mit Hilfe von getesteten Echtzeitbeispielen veranschaulicht.

Bildergalerie
Bildergalerie mit 5 Bildern

Bild 1 zeigt ein vereinfachtes Blockdiagramm von FIRA und IIRA und deren Interaktion mit dem übrigen Prozessorsystem und Prozessorressourcen. Sowohl der FIRA- als auch der IIRA-Block bestehen im Wesentlichen aus einer Recheneinheit – Multiplikations- und Akkumulationseinheiten (MAC) – zusammen mit einem kleinen lokalen Daten- und Koeffizienten-Speicher.

Um die FIRA/IIRA-Verarbeitung zu starten, initialisiert der Prozessor im Speicher eine Kette von DMA-Transferkontrollblöcken (TCBs) mit kanalspezifischen Informationen. Der Prozessor schreibt anschließend in das FIRA/IIRA Chain Pointer Register die Startadresse dieser TCB-Kette und konfiguriert das FIRA/IIRA-Kontrollregister, um die Verarbeitung durch den bzw. die Beschleuniger zu starten. Sobald die Verarbeitung aller Kanäle abgeschlossen ist, wird ein Interrupt an den Prozessor gesendet, damit dieser die verarbeiteten Ausgangsdaten für weitere Operationen verwenden kann.

Theoretisch besteht der beste Ansatz darin, alle FIR- und/oder IIR-Aufgaben vom Prozessor auf den bzw. die Beschleuniger zu verlagern und dem Prozessor somit zu ermöglichen, andere Aufgaben parallel auszuführen. In der Praxis ist dies jedoch nicht immer möglich, insbesondere dann, wenn der Prozessor die Ausgangsdaten des bzw. der Beschleuniger für die weitere Verarbeitung verwenden muss und keine anderen unabhängigen Aufgaben parallel zu erledigen hat. In derartigen Fällen muss das geeignete Anwendungsmodell für den Beschleuniger ausgewählt werden, um die bestmöglichen Ergebnisse zu erzielen.

Verwendung von FIRA und IIRA in Echtzeit

Bild 2 zeigt ein typisches Echtzeit-Flussdiagramm für PCM-Audiodaten: Ein Frame von digitalisierten PCM-Audiodaten wird über eine synchrone serielle Schnittstelle (SPORT) empfangen und mittels direktem Speicherzugriff (DMA) an den Speicher gesendet. Während des Empfangs von Frame N+1 wird Frame N vom Prozessor und/oder dem bzw. den Beschleuniger(n) verarbeitet, und das Ergebnis des zuvor verarbeiteten Frames (N-1) wird via SPORT an den DAC zur Digital-Analog-Wandlung gesendet.

Wie bereits erwähnt, müssen die Beschleuniger je nach Anwendungsfall auf unterschiedliche Weise eingesetzt werden, um möglichst viele FIR- und/oder IIR-Verarbeitungsaufgaben auszulagern und möglichst viele Rechenzyklen für andere Operationen einzusparen. Die Beschleuniger-Nutzungsmodelle können in drei Kategorien eingeteilt werden: Direkter Ersatz, Split Task und Data Pipelining.

  • Direkter Ersatz: Die FIR- und/oder IIR-Verarbeitung des Prozessors wird direkt durch einen oder mehrere Beschleuniger ersetzt, und der Prozessor wartet einfach, bis der bzw. die Beschleuniger die Arbeit beendet haben. Dieses Modell ist nur dann effizient, wenn der Beschleuniger schneller arbeiten kann als der Prozessor, d. h. wenn der FIRA-Block verwendet wird.
  • Split Task: Die FIR- und/oder IIR-Verarbeitung wird zwischen dem Prozessor und dem bzw. den Beschleuniger(n) aufgeteilt. Dieses Modell ist besonders dann hilfreich, wenn mehrere Kanäle parallel verarbeitet werden sollen. Anhand einer groben Abschätzung kann die Gesamtanzahl der Kanäle so zwischen dem Prozessor und dem bzw. den Beschleuniger(n) aufgeteilt werden, dass beide etwa zur gleichen Zeit fertig werden. Wie in Bild 3 gezeigt, führt dieses Nutzungsmodell zu einer höheren Rechenzeit-Einsparungen als beim direkten Ersatz.
  • Data Pipelining: Der Datenfluss zwischen dem Prozessor und dem beziehungsweise den Beschleuniger(n) kann so organisiert werden, dass sowohl der Prozessor als auch die Beschleuniger parallel verschiedene Daten-Frames bearbeiten können. Wie in Bild 3 dargestellt, verarbeitet der Prozessor den N-ten Frame und leitet anschließend die Verarbeitung dieses Frames durch den Beschleuniger ein. Der Prozessor verarbeitet anschließend parallel die Ausgangsdaten des (N-1)-ten Frames weiter, die von dem bzw. den Beschleuniger(n) in der vorherigen Iteration erzeugt wurden. Diese Sequenz ermöglicht die vollständige Auslagerung der FIR- und/oder IIR-Verarbeitung an den bzw. die Beschleuniger auf Kosten zusätzlicher Verarbeitungslatenz.
  • Je nach der Anzahl solcher FIR- und/oder IIR-Verarbeitungsstufen in der gesamten Verarbeitungskette kann sich die Anzahl der Pipelinestufen und somit auch die daraus resultierende Latenz erhöhen. Bild 3 zeigt den Datenfluss der Audio-Frames zwischen den drei Stufen – DMA IN, Prozessor/Beschleuniger-Verarbeitung und DMA OUT – für verschiedene Nutzungsmodelle. Sie zeigt darüber hinaus, wie sich die Anzahl der frei gewordenen Rechenzyklen über die verschiedenen Nutzungsmodelle hinweg im Vergleich zum reinen Prozessorbetrieb erhöht, wenn die FIR/IIR-Verarbeitung vollständig oder teilweise auf die Beschleuniger ausgelagert wird.

FIRA und IIRA auf SHARC-Prozessoren

Die aufgeführten Analog Devices SHARC® Prozessorfamilien unterstützen On-chip FIRA und IIRA (älteste bis neueste): ADSP-214xx (beispielsweise ADSP-21489), ADSP-SC58x, ADSP-SC57x/ADSP-2157x und ADSP-2156x. Je nach Produkte variiert die Rechengeschwindigkeit. Das grundlegende Programmiermodell bleibt jedoch gleich, mit Ausnahme des Autokonfigurationsmodus (ACM) auf ADSP-2156x-Prozessoren. Der FIRA verfügt über vier MAC-Einheiten, während der IIRA nur eine MAC-Einheit hat.

Der ADSP-2156x ist das neueste Mitglied der SHARC-Prozessorfamilie. Er ist der erste 1-GHz Single-Core SHARC-Prozessor mit FIRA und IIRA, die ebenfalls mit 1 GHz getaktet werden. FIRA und IIRA auf ADSP-2156x-Prozessoren bieten verschiedene Verbesserungen gegenüber ihren Vorgängern, den ADSP-SC58x/ADSP-SC57x Prozessoren.

So erhöht sich die Rechengeschwindigkeit um das bis zu Achtfache (von 125 MHz SCLK auf 1 GHz CCLK). Zudem profitieren Appli­kationen von geringeren Daten- und MMR-Zugriffszeiten zwischen Prozessor und Beschleunigern aufgrund der engeren Integration von Prozessor und Beschleunigern. zu den funktionalen Verbesserungen zählt die Erweiterung um ACM-Unterstützung. Damit lassen sich die für die Beschleunigerverarbeitung erforderlichen Prozessoreingriffe minimieren.

Dieser Modus bietet grundlegend neue Merkmale, etwa die Möglichkeit den Beschleuniger für dynamisches Task-Queuing anzuhalten, keine Beschränkung der Kanalanzahl, Unterstützung von Triggergenerierung (Master) und Triggerwartezeit (Slave) und selektive Interrupt-Generierung für jeden Kanal.

Ergebnisse von zwei Anwendungsfällen

In diesem Abschnitt werden die Ergebnisse von zwei Echtzeit-Mehrkanal FIR/IIR-Anwendungsfällen erörtert, die mit Hilfe von verschiedenen Beschleuniger-Nutzungsmodellen auf einem ADSP-2156x Evaluierungsboard implementiert wurden. Bild 4 zeigt das Blockdiagramm für den Anwendungsfall 1. Die Abtastrate beträgt 48 kHz, die Block­größe 256 Samples und das Verhältnis von Prozessor- zu Beschleunigerkanälen im Split-Task-Modell ist 5:7.

Gegenüber der ausschließlichen Verwendung des Prozessors lassen sich durch FIRA viele Prozessorressourcen einsparen. Je nach verwendeten Modell erhöht sich jedoch die Ausgabelatenz. Beim Nutzungsmodell „Data Pipelining“ lassen sich bis zu 335 Prozessor-MIPS einsparen, allerdings auf Kosten einer zusätzlichen Latenz von einem Datenblock, was in diesem Fall 5,33 ms entspricht. Die Nutzungsmodelle „Direkter Ersatz“ und „Split-Task“ führen ebenfalls zu einer Einsparung von 98 bzw. 189 MIPS, allerdings ohne zusätzliche Latenz.

Bild 5 zeigt das Blockdiagramm für Anwendungsfall 2. Die Abtastrate beträgt 48 kHz, die Blockgröße 128 Samples und das Verhältnis von Prozessor- zu Beschleunigerkanälen im „Split-Task“-Modell ist 1:1. Beim Nutzungsmodell „Data Pipelining“ lassen sich bis zu 490 Prozessor-MIPS einsparen, die Latenz steigt um einen Datenblock, was 2,67 ms entspricht. Das „Split-Task“-Nutzungsmodell führt zu einer Einsparung von 234 MIPS für den Prozessor ohne zusätzliche Latenz.

Zu beachten ist, dass im Gegensatz zu Anwendungsfall 1 für den Prozessor die Verarbeitung im Frequenzbereich (schnelle Faltung) anstelle der Verarbeitung im Zeitbereich verwendet wird. Dies ist der Grund, warum bei der Verarbeitung eines Kanals durch den Prozessor alleine weniger MIPS benötigt werden als bei Verwendung des FIRA, was zu einer negativen Prozessor-MIPS-Einsparung beim Nutzungsmodell „Direkter Ersatz“ führt. Anders ausgedrückt: Der Prozessor wird etwas mehr belastet.

Diese Beispiels zeigen, wie ein signifikanter Betrag an Prozessor-MIPS auf FIRA- und IIRA-Beschleuniger auf ADSP-2156x-Prozessoren ausgelagert werden kann. Dabei lassen sich unterschiedliche Nutzungsmodelle für die Beschleuniger verwenden, um die gewünschten MIPS-Werte und Verarbeitungsprofile zu erzielen. //ME

Weiterführende Literatur

„Graphical Demonstration of ADSP-2156x FIR/IIR Accelerator Performance and Real Time Usage.“ Analog Devices, Inc.

Nayak, Sanket und Mitesh Moonat. „Engineer-to-Engineer Note EE-408: Using ADSP-2156x High Performance FIR/IIR Accelerators.“ Analog Devices, Inc., August 2019.

* Mitesh Moonat ... ist Applications Engineer im Processor Applications Team (ADBL) bei Analog Devices in Bangalore, Indien.

* Sanket Nayak ... ist Applications Engineer im Processor Applications Team (ADBL) bei Analog Devices in Bangalore, Indien.

(ID:47327516)