Software UpdatesDaten |
Der Digitale Signalprozessor (DSP)Inhaltsverzeichnis: A. B. C. D. E. A.a) Dieser Artikel wurde ursprünglich für einen 30-minütigen Seminarvortrag erstellt. Daher ist er vom Umfang und Tiefe ein wenig eingeschränkt, aber ich hoffe alles Wesentliche wird trotzdem verständlich dargestellt. Viel Erkenntnis und Freude beim Lesen! A.b) Was ist ein digitaler Signalprozessor? Ein digitaler Signalprozessor, kurz DSP, ist ein Prozessor, der auf die Verarbeitung von digitalisierten Signaldaten spezialisiert und optimiert ist. − Digitale Signale lassen sich einfacher störungsfrei über große Entfernungen transportieren (Lichtwellenleiter) − Digitale Signale können beliebig oft exakt kopiert werden, analoge Signale werden von Generation zu Generation schlechter. − Zum Filtern von analogen Signalen müssen die Bauteile gut auf das jeweilige Signal angepasst sein, spätere Änderungen sind kaum noch möglich. Programme für DSPs können auch nachträglich einfach verändert werden. Auch bei der Bearbeitung gibt es zahlreiche Möglichkeiten, angefangen vom simplen Verschieben des Signals, Stauchen oder Strecken, bis hin zur verlustfreien oder verlustbehafteten Kompression oder der Darstellung des Signalspektrums. Dabei werden zwei eher simple mathematische Funktionen besonders häufig benötigt, die Addition/Subtraktion und Multiplikation/Division. Ein Beispiel für einen oft benutzten Filter ist der Finite Impulse Response Filter (FIR): ![]() Dabei wird eine bestimmte Menge [N] an Eingangssamples jeweils mit einem Koeffizenten multipliziert und alle Faktoren anschließend zum Ausgangssample addiert. Für die gesamte Berechnung wird hier nur die Multiplikation und Addition benötigt. Will man nun ein konkretes Signal verarbeiten, muss man erst einmal schauen wie groß die anfallende Datenmenge pro Zeiteinheit ist und dann untersuchen wie viele Berechnungen mit jedem Sample/Datum durchgeführt werden müssen. Damit kann man jetzt entscheiden, wie hoch die Performance des DSPs mindestens sein muss. Die Rechenrohleistung wird bei einem Prozessor zum großen Teil durch zwei Faktoren bestimmt, die Taktfrequenz und die Anzahl der parallel ausführbaren Operationen pro Takt. Bei digitalen Signaldaten handelt es sich um so genannte Streaming Daten, es ist ein kontinuierlicher Fluss von Daten, ohne Abhängigkeiten, Verzweigungen oder Sprüngen, wie man sie im Code von normalen Anwendungsprogrammen findet. Daher lässt sich die digitale Signalverarbeitung besonders einfach parallelisieren und digitale Signalprozessoren zeichnen sich durch viele parallele Rechenwerke aus. Aber warum sollten solche Überlegungen vorher angestellt werden, man könnte doch auch einfach immer den schnellsten DSP nehmen, der am Markt erhältlich ist. Mehr Performance bedeutet auch gleichzeitig immer mehr Aufwand, sowohl bei der Entwicklung als auch bei der Herstellung und Aufwand ist gleich Kosten. Ein nicht optimal dimensionierter Prozessor arbeitet zudem ineffektiv, verbraucht also mehr Energie als eigentlich zur Bewältigung der Aufgaben benötigt wird. Gerade bei mobilen Geräten ist das sehr wichtig, so soll z.B. ein MP3-Player klein, leicht und günstig sein, aber der Akku darf nicht schon nach 5 Liedern leer sein, weil die Hardware zu viel verbraucht. B.a) Der C64x+ DSP Core B.b) Bei TI ist der C64x+ Core in mehreren Produktfamilien integriert: − OMAP Application Prozcessor: In der OMAP Serie sind eine ARM Cortex-A8 CPU als Hauptprozessor, ein SGX Core von PowerVR zur 3D Grafikbeschleunigung und der C64x+ DSP als Imagin- und Audio-Prozessor in einem Chip integriert. − DaVinci Digital Media Processor: Eine ARM9 CPU und ein C64x+ DSP mit zusätzlichen HD-Video Co-Prozessoren sind in den DaVinci Chips integriert. Eingesetzt werden diese Chips bei der Encodierung und Decodierung von HD-Videos (Video Player) und HD-Video Streaming (IP-TV). ![]() TI Video and Imaging Solutions Guide 3Q2008 In dem Blockschaltbild kann man eine Anwendung der DaVinci Prozessoren und DSPs sehen. So könnte ein High−Definition-Video Decoder aufgebaut sein, mit dem der Anwender z.B. seine Aufnahmen aus einer Videokamera bei Bedarf digitalisieren, komprimieren und abspeichern, oder einen verschlüsselten und komprimierten IP-TV Stream aus dem Internet entschlüsseln, dekomprimieren und auf dem Flachbildschirm im Wohnzimmer ansehen kann. Ganz oben links ist ein digitaler Audioausgang mit Sample Rate Converter, um auch Verstärker oder aktive Lautsprechersysteme anzuschließen, die nur zu bestimmten Sample Raten kompatibel sind. Darunter kann man zwei analoge Eingänge sehen, einer für das Audiosignal und einer für das Videosignal. Das analoge Signal wird zuerst mit einem Verstärker bzw. einem Filter behandelt und dann jeweils über einen Analog-Digital Konverter digitalisiert und in den DaVinci Prozessor eingespeist. Wahlweise kann das Videosignal auch direkt aus einer digitalen Quelle zugeführt werden. Zusätzlich steht für die Datenein- und Ausgabe auch noch ein Gigabit Netzwerkanschluss zur Verfügung und die Daten können von einer Festplatte eingelesen, oder dorthin abgespeichert werden. Die Ausgabe der Videodaten erfolgt ebenfalls wahlweise direkt in digitaler Form über einen HDMI Transmitter, oder über einen Digital-Analog Konverter als klassisches analoges Videosignal. Um zwei HD−Kanäle gleichzeitig zu bearbeiten, ist ein zweiter DaVinci Prozessor in das System integriert. Die Rechenleistung der beiden DaVinci Chips reicht jedoch nicht für alle Aufgaben aus. Über einen PCI Bus sind nochmals drei weitere DSPs als Co-Prozessoren angebunden. Diese übernehmen exklusiv die Aufgabe des Color Subsampling bei der Videobearbeitung. Color Subsamling ist ein verlustbehaftetes Kompressionsverfahren und z.B. im MPEG4 Standard implementiert; 4:2:2 bedeutet, dass von den drei Farbkanälen RGB (Rot, Grün, Blau) die Farbinformation in zwei Kanälen halbiert wird, wodurch die gesamte Datenmenge um 1/3 reduziert wird. C.a) Der TMS320C6474 Multicore DSP Der TMS320C6474 ist ein Multicore DSP und derzeit von Texas Instruments der schnellste Fixed Point Prozessor. In einem Chip sind gleich drei sogenannte C64x+ Megamodule integriert worden, die jeweils mit einer Taktfrequenz von 1000 MHz laufen. Die theoretisch maximale Rechenleistung liegt bei 24 Milliarden Instruktionen pro Sekunde; ![]() Functional Block Diagram, TMS320C6474 Multicore Digital Signal Processor (Rev. A) C.c) Ein- und Ausgabeschnittstellen (I/O Ports and Interfaces) Der DSP hat mehrere verschiedene Ein- und Ausgabeschnittstellen integriert. C.d) Speichersystem (Memory Subsystem) Der TMS320C6474 hat ein drei-stufiges Speichersystem. Die ersten beiden Stufen, der Level 1 und Level 2 Caches sind direkt im Chip integriert. Dafür wird schneller statischer RAM (SRAM) benutzt. Die dritte Stufe, der eigentliche Arbeitsspeicher, ist extern und aus dynamischen RAM (DRAM). Der externe Speicherbus ist 32 Bit breit und kann mit bis zu 333 MHz getaktet werden und versteht sich mit Chips nach Double Data Rate 2 Standard. DDR2 SDRAM überträgt pro Takt 2 Bit, was bei 32 Datenleitungen mit 333 MHz einer Speicherbandbreite von 2,66 GB/s entspricht. ![]() Megamodule Block Diagram, TMS320C6474 Multicore Digital Signal Processor (Rev. A) C.e) Ausführungseinheiten (Pipelines) Wie bereits vorhin erwähnt, hat der digitale Signalprozessor eine so genannte „Very Long Instruction Word“ Architektur. Die Idee dahinter ist es, zwei sich eigentlich gegenseitig widersprechende Eigenschaften miteinander zu verbinden:
− Die Hardware soll einfach sein. Mehr parallele Ausführungseinheiten sind dabei nicht das Problem und relativ einfach zu realisieren, jedoch steigt die Komplexität der vor- und nachgeschalteten Logik (Instruction Buffer, Decoder, Out of Order Reorder Buffer, Sheduler, etc.) extrem an um die vielen Einheiten überhaupt noch alle gleichzeitig mit Arbeit versorgen zu können. Beim VLIW Ansatz wird genau das Gegenteil gemacht und diese zusätzliche Logik noch einfacher gestaltet oder teilweise sogar ganz weg gelassen. Die Aufgaben werden einfach in die Softwareebene verschoben, der Programmierer oder Compiler muss sich nun darum kümmern. ![]() Basic Format of a Fetch Packet, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H) ![]() Add Instruction, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H) Hier ist der Aufbau eines einzelnen 32-Bit Befehls zu sehen, es handelt sich hierbei um: ADD .L2 src1, src2, dst In Bit 0 ist das Parrallel-Flag gesetzt. Damit wird angezeigt, ob dieser und der folgende Befehl später zu einem Ausführungspaket zusammengefasst werden kann. Bit 1 ist ebenfalls gesetzt, der Befehl geht somit an Daten Pfad 2. In Bit 2-4 wird wird die Unit, hier die L Unit, und die Adressierungsart codiert. Die eingentliche Instruktion ADD steht im Opcode von Bit 5 bis 11. Der Opcode hängt von der Art der Operaden ab. Ist scr1 ein SINT und src2 ein XSINT und soll das Ergebnis als SINT ausgegeben werden, wäre er z.B. ![]() CPU Data Paths, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H)
Der C64x+ Core kann pro Takt acht 16 x 16-Bit Multiply-Accumulate (MAC) (a ← a + b * c) Operationen durchführen oder alternativ zwei 32 x 32-Bit MACs. Mit den drei Core und 1000 MHz Takt kommt man somit auf die vorhin genannten 24 Milliarden 16 x 16-Bit MACs. ![]() Pipeline Phases Block Diagram, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H) Die Arbeitsweise des Rechenwerkes lässt sich in drei Schritte unterteilen: − Fetch Fetch und Decode sind immer gleich lang, Fetch dauert 4 Phasen, Decode 2 Phasen und Execute kann zwischen 1 und 5 Phasen dauern. * PG (Program address generate): die CPU berechnet die Speicheradresse des Programmcodes * PS (Program address send): die berechnete Speicheradresse wird an den Arbeitsspeicher gesendet * PW (Program access ready wait): die Speicheradresse bzw. der Inhalt wird eingelesen * PR (Program fetch packet receive): das Datenpaket ist in die CPU geladen Die beiden Schritte in der Decode Phase sind: * DP (Instruction dispatch): das Datenpaket (fetch packet) wird in Ausführungspakete (Execute packets) unterteilt. In einem Ausführungspaket sind jeweils alle Instruktionen des Datenpakets enthalten, die parallel bearbeitet werden können. Die Instruktionen werden der jeweiligen Pipeline zugeordnet. * DC (Instruction decode): das Quell- und Zielregister für die Instruktionen wird berechnet und zugeordnet. Je nach Instruktion dauert die Execute Phase 1 bis 5 Schritte. Allen Instruktionen gemeinsam ist der erste Schritt, bei dem die Operanden gelesen und die Bedingungen der Instruktion überprüft werden. Single-Cycle Instruktionen sind jetzt bereits fertig und schreiben das Ergebnis direkt ins Zielregister. Am längsten dauern die Ladebefehle, sie schreiben die Daten erst im 5. Schritt in das Zielregister, schließlich müssen die Daten auch erst aus dem Cache oder Arbeitsspeicher geholt werden. D.a) Programmierung Da es sich auch um eine Load-Store Architektur handelt, kann man jede Berechnung ebenfalls in 3 Schritte unterteilen. Zuerst nutzt man einen Ladebefehl, um z.B. zwei Operaden aus dem Arbeitsspeicher in die Register A1 und A2 zu laden. Im zweiten Schritt wird die eigentliche Rechenoperation ausgeführt, also z.B. eine Multiplikation der beiden Operanden. Das Ergebnis lassen wir in Register A1 schreiben. Wird das Ergebnis jetzt erstmal nicht weiter benötigt, muss der Inhalt des Register A1 mit einem Store Befehl wieder in den Arbeitsspeicher zurück geschrieben werden, ansonsten kann A1 nicht mehr benutzt werden und die wenigen Register wären schnell alle belegt. ... In der Programmierung unterscheidet sich ein DSP nicht von anderen Mikroprozessoren oder Mikrocontrollern. Programme können direkt in Assembler geschrieben werden, oder auch in einer Hochsprache wie C, passende Compiler sind beim Hersteller erhältlich. E.a) Quellenverzeichnis An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture, Philips Is DSP Right for You? A Beginner's Guide to Digital Signal Processing Digital Signal Processing TI Video and Imaging Solutions Guide 3Q2008 TMS320C6474 Multicore Digital Signal Processor (Rev. A) http://www.ti.com/lit/gpn/tms320c6474 TMS320C6474 DSP Silicon Errata (Silicon Revisions 1.3, 1.2) http://www.ti.com/litv/pdf/sprz283 TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H) OMAP™ Applications Processors Padora DaVinci™ Digital Media Processors DaVinci™, OMAP™ , C64x+, TMS320C6474 sind eigentragene Markenzeichen der Texas Instruments Incorporated. Dieser Text steht unter der GNU Free Documentation License Version 1.3, 3 November 2008. Zitate und zitierte Ausschnitte stehen unter der jeweiligen Lizenz der Quelle.
|
ArtikelEnergiehunger: AMDs 90 nm versus 65 nm Prozess AMD Athlon 64 X2 5000+ versus Intel Core 2 Duo E6400 (Teil 3 - Video- und Audio-Encoding) AMD Athlon 64 X2 5000+ versus Intel Core 2 Duo E6400 (Einleitung und Teil 1 - Datenkompression) NVIDIA GeForce 6600GT: Altes Eisen oder gutes Angebot? CeBIT 2005 - ABIT, Albatron und AOpen CeBIT 2005 - Arima, ASRock und ASUS CeBIT 2005 - BIOSTAR, DFI und ECS CeBIT 2005 - EPoX, FIC, Foxconn und Jetway CeBIT 2005 - MSI, PCCHIPS, SiS, Soltek und Tyan ScienceLinux Users Everywhere @ BOINC
![]() Message Board climateprediction.net Einstein@home orbit@home LHC@home SETI@home Predictor@home Rosetta@home QMC@home SIMAP malariacontrol.net ABC@home RieselSieve APS@home Cosmology@Home MilkyWay@home GPUGRID SHA-1 CSG RCN POEM@home BURP Superlink@Technion Spinhenge@home TSP User loginWho's online
There are currently 0 users and 3 guests online.
|