Seminar aus Praktischer Informatik Texas Instruments
Transcription
Seminar aus Praktischer Informatik Texas Instruments
Seminar aus Praktischer Informatik LV-Nr.: 620.610 SS 2000 Texas Instruments TMS320 DSP 11.04.2000 LV-Leiter Univ.-Prof. Dipl.-Ing. Dr. Hermann Hellwagner Vortragende Arno Kersche (MatrNr.: 9560077) Christian Timmerer (MatrNr.: 9660092) {akersche,ctimmere}@edu.uni-klu.ac.at Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Inhaltsverzeichnis 1 WAS VERSTEHT MAN UNTER DSP?.......................................................................................... 3 1.1 1.2 BEGRIFFSERKLÄRUNG UND MOTIVATION ..................................................................................... 3 ÜBERSICHT DSP-SOFTWARE UND -HARDWARE ........................................................................... 4 2 UNTERSCHEIDUNGSMERKMALE ZU HERKÖMMLICHEN PROZESSOREN................. 5 3 THEORETISCHE GRUNDLAGEN................................................................................................ 8 3.1 3.2 3.3 4 SOFTWAREENTWICKLUNGSPARADIGMA ....................................................................................... 8 ARITHMETIK ................................................................................................................................. 9 ALGORITHMISCHE KONSTRUKTE ................................................................................................ 10 EINFÜHRUNG IN DIE TMS320 DSP-FAMILIE........................................................................ 11 4.1 GESCHICHTLICHER ÜBERBLICK .................................................................................................. 11 4.2 ARCHITEKTUR DES TMS320C5X ................................................................................................ 13 4.2.1 Busstruktur......................................................................................................................... 13 4.2.2 Central Processing Unit..................................................................................................... 14 4.2.3 On-Chip Speicher............................................................................................................... 17 4.3 INSTRUKTIONSSATZ UND ADRESSIERUNGSMODI......................................................................... 17 4.4 BEISPIEL: MAC-INSTRUKTION ................................................................................................... 18 4.5 VERGLEICH ZU ANDEREN DSP-PROZESSOREN ............................................................................ 19 5 ASPEKTE FÜR DIE ANWENDUNG DER TMS320 DSP-FAMILIE ....................................... 21 5.1 5.2 TELEKOMMUNIKATION MIT DEM TMS320C5X ........................................................................... 21 SOFTWAREENTWICKLUNG FÜR DEN TMS320C6000 .................................................................. 22 6 RESÜMEE UND AUSBLICK ........................................................................................................ 28 7 LITERATURQUELLEN ................................................................................................................ 29 TI-TMS320-DSP.doc Seite 2 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP 1 Was versteht man unter DSP? 1.1 Begriffserklärung und Motivation DSP steht für digitale Signalverarbeitung (Digitial Signal Processing). Darunter versteht man die theoretischen und praktischen Aspekte der Repräsentation von Signalen in digitaler Form und der damit verbundenen Informationsgewinnung sowie deren Transformation mittels Computern oder spezieller Hardware. Die Anwendungsbereiche von digitalen Signalprozessoren finden sich in der Telekommunikation, MenschMaschine-Kommunikation, Computer Engineering, Multimediaapplikationen, Medizin, Militär (Radar und Sonar), seismischen Datenanalyse, um nur einige zu nennen. DSP wird auch als Akronym für digitale Signalprozessoren (Digital Signal Processor) verwendet. Ein digitaler Signalprozessor verarbeitet Signale in Echtzeit und ist daher für Anwendungen geeignet, bei denen keine Verzögerungen toleriert werden können [1]. In den ersten fünfzehn Jahren der DSP-Entwicklung sah man die Vorteile dieser Technologie in der Theorie der diskreten Zeitsignale und "Processing Tools". Themen wie schnelle Algorithmen, A/D- und D/AWandlung, sowie digitale Filterung waren von Bedeutung. In den letzten fünfzehn Jahren gab es ein rasches Wachstum der unterschiedlichen Anwendungsbereiche wie Sprache bzw. Akustik allgemein, Video, Radar und Telekommunikation [2]. Beispielsweise hat Maxtor Corp. vor einiger Zeit berichtet, dass sie den zehnmillionsten DSP-Prozessor für ihre Festplatten erhalten haben. DSP-Prozessoren sind vor allem viel billiger als herkömmliche Prozessoren und sind daher hervorragend für den Konsumentenbereich geeignet. Beispiel FIR-Filterung: Digitale Filter [3] sind weit verbreitet in der Verarbeitung von digitalen Signalen, wie z.B. in Sprachverarbeitung, Bild- und Videobearbeitung, Sonar, Radar oder seismische Datenerfassung. Eine Methode ist die FIR-Filterung (Finite-duration Impulse Response), wobei es sich hier um eine endliche Anzahl von Samples1 handelt, welche nicht Null sind, wohingegen die IIR-Filterung (Infinite-duration Impulse Response) eine unendliche Anzahl von Samples besitzt. Im allgemeinen funktioniert der FIR-Filter (Abbildung 1) auf folgende Weise. Blöcke, welche als D gekennzeichnet sind, legen nur ihr Eingangssignal auf ihren Ausgang verzögert, um eine Sample-Periode. Implementiert werden diese durch einen Reihe von Speicherzellen (delay lines). Das Ausgangssignal ergibt sich aus der Summe der Eingangs-Samples multipliziert mit ihren korrespondierenden Koeffizienten. Jeweils eine einzelne Speicherzelle (D) und ihre assoziierte Multiplikation und Addition werden tap genannt. 1 Eingabewerte TI-TMS320-DSP.doc Seite 3 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 1: Finite Impulse Response Filter, Quelle: [4] FIR-Filter produzieren also eine Reihe von Skalarprodukten und sind auch eine der Hauptanwendungen in DSP-Systemen. 1.2 Übersicht DSP-Software und -Hardware Unter Embedded Systems versteht man Systemkomponenten, die über Ablauf- oder Steuerungsfunktionalität verfügen und deren Prozesslogik über Computer (Mikroprozessoren, Mikrocontroller) und Software verfügt. Embedded Systems sind heutzutage in fast jedem Bereich vorzufinden, etwa im Haushalt in Fernsehgeräten oder Küchengeräten aber auch in der Kommunikation (z.B. Modems), sogar in der Medizintechnik (z.B. Herzschrittmacher), aber auch im Finanzbereich (z.B. Bankomaten) usw. Embedded Systeme kann man in vier Kategorien unterteilen [2][5]. Die Trennung erfolgt anhand des Anwendungsgebietes, dem Energieverbrauch, sowie der Prozessorleistung. Eng damit gekoppelt ist der Preis für das DSP-Produkt und je nach Einsatzgebiet auch der Absatz bzw. das Marktvolumen. Die im folgendem angeführten Preise beziehen sich auf das Gesamtprodukt. Die Kosten für den DSP-Prozessor betragen nur einen Bruchteil davon. Für High-End Geräte werden aber auch teurere DSP-Prozessoren verwendet. Commodity (Gebrauchsgut) DSP-Produkte: Sehr hohes Absatzvolumen und Wert eines DSP unter $300 pro Stück. Diese Kategorie von DSP-Produkten ist in einer Vielzahl von Alltagsgütern zu finden. Die Leistung des Prozessors muss nicht hoch sein. Bei den Produkten handelt es sich um solche, die ein sehr hohes Absatzvolumen haben und starke Konkurrenz. Beispiele hierfür sind CD-Spieler, Videorecorder, Fax, Anrufbeantworter usw. In dieser Kategorie ist der TMS320C2xx von Texas Instruments angesiedelt. Portable DSP-Produkte: Sehr hohes Absatzvolumen und Wert eines DSP unter $800 pro Stück. Hierbei ist der niedrige Energieverbrauch elementar. In diese Kategorie ordnet man Handhelds - etwa digitale Organizer - ein. In diesen Bereich fallen aber auch Produkte für die Mensch-Maschine-Kommunikation, wie etwa Scanner, Camcorder, Modems und Sicherheitssysteme. In dieser Kategorie ist der TMS320C54x von Texas Instruments angesiedelt. TI-TMS320-DSP.doc Seite 4 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Cost-Performance DSP-Produkte: Hohes Absatzvolumen und Wert eines DSP unter $3000 pro Stück. Diese Produkte sind nicht ganz so leistungsstark, da bei diesen DSP besonders auf den Preis geachtet wird. Diese DSP Produkte werden etwa bei Videokonferenz-Equipment und Notebooks eingesetzt. High-Performance DSP-Produkte: Niedriges bis moderates Absatzvolumen und Wert eines DSP über $8000 pro Stück. Diese Produkte beinhalten High-End Workstations mit DSP-Coprozessoren, EchtzeitSignalprozessoren, Echtzeit-Datenbankverarbeitungssysteme, Radarsignalprozessorsysteme, aber auch Militärische Systeme, und sensor- und datenverarbeitende Hardware- und Softwaresysteme. Dabei ist es sinnvoll, die High-Performance DSP-Produkte nochmals in drei Kategorien zu unterteilen. Die Unterscheidung erfolgt hierbei anhand des Einsatzgebietes bzw. der Anforderungen des Einsatzgebietes: Echtzeit Embedded Kontroll-Systeme: Kennzeichen dieser Systeme sind, dass die Systeme strikte EchtzeitAnforderungen erfüllen müssen, Interrupts bearbeiten und leistungsstark im numerischen Bearbeiten sein müssen, sowie geringe Datenbankinteraktion. Anforderungen und Design werden durch Performance bestimmt. Beispiel für ein solches System ist ein Flugzeugkontrollsystem oder ein Kontrollsystem für eine Stahlproduktion. Embedded Informationssysteme: Kennzeichen dieser Systeme ist, dass sie transaktionsbasiert sind und ein komplexes Benutzerinterface beinhalten. Anforderungen und Design werden durch Benutzerinterface bestimmt. Beispiel hierfür ist ein Lagermanagementsystem. Kommando-, Kontroll-, Kommunikations- und Intelligente (C41) Systeme: Diese Systeme müssen leistungsstark im numerischen Bearbeiten sein, beinhalten große Datenbanken, aber auch das Benutzerinterface ist wichtig. Anforderungen und Design werden durch Performance und Benutzerinterface bestimmt. Beispiel hierfür sind Raketenleitsysteme, Radar-Tracking-Systeme, aber auch Produktionskontrollsysteme. 2 Unterscheidungsmerkmale zu herkömmlichen Prozessoren Während Mikroprozessoren, zu welchen auch die x86-Architektur gehören, im Desktopbereich angesiedelt sind, finden sich digitale Signalprozessoren vor allem im Embedded-Bereich sehr häufig wieder. Dieser Desktopbereich könnte möglicherweise in der Zukunft nicht mehr so eine wichtige Rolle spielen. Ihr Nachfolger könnten die mobilen Computer sein, welche billige und energieeffiziente Mikroprozessoren benötigen. Unter Prozessoren für den Embedded-Bereich werden im allgemeinen Mikrocontroller verstanden. Eine klare Trennung zwischen den Einsatzgebieten dieser beiden Prozessorentypen gibt es nicht. Vielmehr werden Mikrocontroller mit dem Embedded-Bereich assoziiert und Mikroprozessoren mit dem Desktopbereich. Mikrocontroller verwenden RAM und ROM, während Mikroprozessoren Speicherverwaltungseinheiten und Caches verwenden. Manchmal werden Mikrocontroller einfach dadurch klassifiziert, dass es sich um 8- oder 16-bit Geräte handelt. Mit dem Aufkommen von 32-bit embedded Prozessoren verschwimmt diese Trennlinie zu den Mikroprozessoren immer mehr [6]. Was macht nun einen DSP-Prozessor aus? [6] Grundsätzlich gibt es einen großen Unterschied zwischen DSP-Prozessoren und General-Purpose-Prozessoren (GPPs). DSP-Prozessoren werden vor allem zur Signalverarbeitung (signal processing) verwendet, beispielsweise für analoge und digitale Filter. Für die Signalfilterung wird eine der in DSP-Prozessoren eigens dafür vorhandenen Operationen benötigt, die sogenannten MAC-Operation (multiply/accumulate). Dafür existiert in DSP-Prozessoren spezielle Hardware, welche es ermöglicht, solche Operationen in einem Taktzyklus auszuführen. Für die Speicherung der Summe von diesen Multiplikationen stehen spezielle Akkumulatorregister zur Verfügung. Um aber von dieser speziellen Hardware Gebrauch machen zu können, werden auch MAC-Instruktionen benötigt. TI-TMS320-DSP.doc Seite 5 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Ein anderes Unterscheidungsmerkmal ist die Speicherstruktur. GPPs verwenden traditionell die von Neumann Bus- und Speicherarchitektur (Abbildung 2a), während die meisten DSP-Prozessoren die Harvard Architektur (Abbildung 2b) verwenden. Abbildung 2: von Neumann (a) und Harvard Speicherarchitektur (b), Quelle: [5] In der von Neumann Architektur ist ein Speicher über einen Adress- bzw. Datenbus mit dem Prozessor verbunden. Diese Architektur ist aber für DSP Anwendungen nicht besonders gut geeignet, da diese üblicherweise mehr Speicherbandbreite benötigen, als diese Architektur bereitstellen kann. Der DSP Prozessor muss eine MAC Operation innerhalb eines Taktzyklus vollbringen und dabei mehrere Speicherzugriffe tätigen. Die Harvard Architektur stellt zwei Speicher zur Verfügung, welche üblicherweise in Programmspeicher und Datenspeicher unterteilt sind. Diese Speicher sind über jeweils zwei Adress- und Datenbusse mit dem Prozessor verbunden. Jedoch verwenden moderne GPPs auch schon die Harvard Architektur, um mehrfache Speicherzugriffe pro Taktzyklus zu tätigen, wie es beispielsweise bei superskalaren Prozessoren der Fall ist. Bei DSP-Prozessoren kontrollieren Programmierer explizit, welche Daten und Instruktionen sich im Speicher befinden oder nicht, während bei GPPs Programmierer typischerweise nicht spezifizieren, welche Daten sich im Cache befinden; meistens weiß man dies nicht einmal. Eine Einführung von Caches in DSP-Prozessoren hätte auch nicht sehr viel Sinn, weil DSP-Applikationen in vielen Fällen Datenströme behandeln, d.h. es werden Berechnungen auf sogenannten Samples getätigt, und die veränderten Daten werden dann wieder weitergegeben (Abbildung 3). Ein anderes Problem, welches GPPs mit sich bringen, ist, dass sie nicht mit voller Taktrate auf den Speicher zugreifen können, der sich nicht am Prozessorchip befindet. TI-TMS320-DSP.doc Seite 6 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 3: Typisches DSP-System, Quelle: [7] Eines der Hauptcharakteristika von DSP-Algorithmen ist, dass die meiste Berechnungszeit für relativ kleine Schleifen benötigt wird. DSP Prozessoren verwenden dafür spezielle Hardware, welche die Iterationsvariable ohne zusätzlichen Taktzyklus berechnet, testet und den Sprung zum Schleifenanfang durchführt. Diese Eigenschaft wird zero-overhead looping genannt. GPPs unterstützen dies nicht in Hardware, stattdessen wird dies in Software durchgeführt. DSP-Prozessoren unterstützen spezielle Adressierungsmodi, um den gängigen Signalverarbeitungsoperationen und Algorithmen gerecht zu werden. Beispiele hierfür sind die Moduloadressierung und die sogenannte bit-reverse Adressierung (für schnelle Fourier-Transformationen). Auch diese Features sind bei GPPs in Software realisiert. Ein weiterer Unterschied kristallisiert sich aus den Performanceanforderungen heraus. Die meisten DSPApplikationen sind sogenannten harte Echtzeit-Applikationen, d.h. alle Verarbeitungen müssen innerhalb einer gewissen Zeit beendet sein. Dadurch müssen Programmierer exakt vorgeben, wie lange die Bearbeitung eines Datenstückes benötigt bzw. wie viel Zeit maximal benötigt werden darf - als worst case Szenario. Bei GPPs ist es durch Caches, Branch-Prediction und spekulative Ausführung schwierig zu sagen, wo sich die Daten für ein zur Ausführung bestimmtes Codestück befinden. TI-TMS320-DSP.doc Seite 7 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP In Tabelle 1 sind alle wesentlichen Unterschiede zwischen DSP-Prozessoren und General-PurposeProzessoren zusammengefasst. Es ist dabei zu beachten, dass heutzutage keine klare Abgrenzung mehr zwischen GPPs und DSP-Prozessoren gemacht werden kann, da GPP-Hersteller DSP-Erweiterungen2 ihren Prozessoren hinzugefügt haben und umgekehrt. Tabelle 1: Unterschied DSP und GPP DSP Einsatzgebiet Architektur Operationen pro Taktzyklus Prozessortyp Speicherverwaltung Adressierungsarten Zero-overhead looping Instruktionssatz Programmiersprachen Tools Erweiterungen GPP Embedded Systems Harvard Single-cycle (MAC) Mikrocontroller 8-, 16-, (32-) bit RAM, ROM: der Programmierer kontrolliert explizit, welche Daten sich im On-Chip-Speicher befinden Desktopsysteme Von Neumann Multi-cycle Mikroprozessor 32-, 64-bit Memory-Management, Cache: der Programmierer weiß nicht, welche Daten sich momentan im On-ChipSpeicher befinden - dies wird durch die Kontrolllogik bestimmt Standard, spezielle (modulo, bit- Standard, spezielle sind in SW realireversed) siert In Hardware realisiert Hochspezialisiert, komplex Einfach, verständlich C, DSP/C, Assembler High-level C, C++, Java, ... Prozessorsimulationstools VLIW, Multiprozessoren MMX, SIMD, VLIW Hybride GP/DSP 3 Theoretische Grundlagen Hier sollen nun kurz wesentliche Grundlagen für die Softwareentwicklung speziell in Hinblick auf die Sprachverarbeitung in DSP Systemen beschrieben werden [8]. 3.1 Softwareentwicklungsparadigma Imperative vs. Anwendungsspezifische Programmiersprachen: Imperative Programmiersprachen (z.B.: C, C++, Fortran) spezifizieren ein Programm als eine Sequenz von Kommandos, wohingegen anwendungsspezifische Sprachen bestimmte Symbole und deren Relationen zurückgreifen. Zu ihren Vertretern gehören u.a. Hardwarebeschreibungssprachen und graphische Programmierumgebungen (z.B.: LapView). Hoch- vs. Assemblersprachen: Hochsprachen sind für die Softwareentwicklung allgemein besser geeignet als Assemblersprachen, weil man dadurch den erzeugten Code besser unter Kontrolle hat, indem man beispielsweise eine Top-Down Strategie verwendet. Für die Verwendung von Assembler spricht vor allem Effizienz. Viele Programme werden daher zuerst in einer Hochsprache entwickelt, um dann mittels Assembler optimiert zu werden. 2 Intels MMX-Erweiterung, Sun's VIS, etc. TI-TMS320-DSP.doc Seite 8 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Spezielle- vs. Standardsprachen: Spezielle Sprachen sind meistens Dialekte anderer standardisierter Hochsprachen. DSP/C enthält beispielsweise zusätzlich spezielle Vektoroperationen bzw. Operationen, welche für die Signalverarbeitung benötigt werden. Standardsprachen wie C++ bieten Konstrukte (class), welche es Benutzern ermöglichen, diese zu erweitern. Blockverarbeitung vs. Verarbeitung einzelner Samples: Sprachverarbeitende Applikationen verwenden eine Blockverarbeitung der Daten, weil deren Signalsamples in Vektoren bzw. Frames gepuffert werden. Genaue vs. Approximierte Arithmetik: Die Ausdrücke genau und approximiert beziehen sich hier auf die Art und Weise wie das Ergebnis repräsentiert wird. Entweder wird es bitweise exakt dargestellt oder in der für den Prozessor best möglichen Darstellung. Verwendet man genaue Arithmetik, sollte man sich an Standards (IEEE-Gleitkommaarithmetik) halten, um keine Probleme bei der Portierung des Codes zu bekommen. Die Portierung auf Prozessoren anderer Hersteller bringt im allgemeinen Probleme mit sich, welche hier aber nicht beschrieben werden. Ein Problem bringen beispielsweise unterschiedliche Instruktionssaätze verschiedener Hersteller mit sich. 3.2 Arithmetik In der Arithmetik muss in erster Linie zwischen endlicher und unendlicher Genauigkeit unterschieden werden. Es ist vor allem ein Unterschied zwischen einem unendlich-genauen Wert und seiner endlichen Repräsentation zu bemerken. Die dabei auftretenden Fehler machen sich beim Abschneiden von Zahlen bzw. Überlauf bemerkbar. Ein weiterer Unterschied spiegelt sich in der Art der Arithmetik wieder. Beispielsweise wäre Gleitkommaarithmetik adäquat für die Sprachverarbeitung, jedoch wäre eine entsprechende Implementierung auf einem Festkommaprozessor kostengünstiger. Ein weiteres Problem stellt die Behandlung von Überläufen dar. Während GPPs meisten nur ein sogenanntes overflow-detection Bit haben, besitzen DSP-Prozessoren pro Register, in welches nach einer ALU-Operation geschrieben werden kann, ein solches. Diese werden manchmal auch secondary overflow bits, guard bits oder extension words genannt. Für die Behandlung von Überläufen gibt es zwei Möglichkeiten: Reduction (Gleichung 1) und Saturation (Gleichung 2). Gleichung 1 : Reduction x + y ≡ sgn( x + y ) ⋅ [( x + y + φ )mod 2φ − φ ] Gleichung 2 : Saturation φ − ∆ x + y ≡ x + y −φ x+ y ≥φ −φ ≥ x + y < φ x + y < −φ wobei φ ...Range, ∆...Schrittweite ( Festkomma) Konvertierungen von einfacher in doppelte Genauigkeit und umgekehrt werden dadurch ermöglicht, dass bei der ersten Variante Nullen angehängt werden und bei einer Konvertierung von doppelter in einfache Genauigkeit entweder Bits abgeschnitten werden oder der neue Wert gerundet wird. All diese Varianten werden in Hardware realisiert. TI-TMS320-DSP.doc Seite 9 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP 3.3 Algorithmische Konstrukte Delay Lines: Diese erlauben die Speicherung eines Samplewertes von einem Zyklus zum anderen, was in der Sprachverarbeitung eine große Rolle spielt. Delay Lines können mittels Register realisiert werden und in DSP-Prozessoren stehen dafür spezielle Adressierungsarten, wie Moduloadressierung3 oder eine Adressierungsart, welche Zurückschreiben in einen neuen Speicherbereich ermöglicht, zur Verfügung. Transformationen: Moderne DSP-Prozessoren unterstützen spezielle Transformationen wie z.B. Radix-2 Fast Fourier Transformation (FFT) [9]. Die Fast Fourier Transformation ist eine effiziente Berechnung der diskreten Fourier Transformation (DFT, Gleichung 3), und aufgrund ihrer strukturierten Form wird die FFT als Benchmark zur Abschätzung der Performance von digitalen Signalprozessoren verwendet. Gleichung 3: Diskrete Fourier Transformation N −1 X [k ] = ∑ x[n]WNnk , k = 0,1,..., N − 1 wobei WN = e − j 2Nπ n =0 Die direkte Implementierung von Gleichung 3 besitzt die Komplexität O(N²). Bei der Fast Fourier Transformation wird die Berechnung der DFT in kleinere DFT-Berechnungen aufgeteilt. Bei der Radix-2 Fast Fourier Transformation unterscheidet man noch in eine Dezimierung in der Zeit und Dezimierung der Frequenz, wobei bei ersterer x[n] sukzessive in kleinere Subsequenzen aufgeteilt wird und bei letzterer die Outputsamples X[k] sukzessive in kleinere Subsequenzen aufgeteilt wird. Abbildung 4 zeigt den sogenannten ButterflyGraphen einer 8-bit Radix-2 FFT, wobei die Eingangswerte in bit-reversed Ordnung vorkommen. Abbildung 4: 8-bit Radix-2 FFT, Quelle: [10] 3 Moduloadressierung: Erlaubt die Adressierung von einer gewissen Anzahl von Registern. Wenn innerhalb dieses Bereichs das letzte Register adressiert wurde, wird wieder das erste Register adressiert. TI-TMS320-DSP.doc Seite 10 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Der Algorithmus, auf der Basis von Radix-2-Dezimierung in der Zeit, teilt als erstes x[n] in gerade und ungerade Teile (Gleichung 4). Der erste Teil entspricht den geradnummerierten Eingabewerten und der zweite Teil den ungeraden. Gleichung 4: Algorithmus auf der Basis von Radix-2-Dezimierung in der Zeit N −1 2 X [k ] = ∑ x[2r ]W N + W r =0 rk 2 k N N −1 2 ∑ x[2r + 1]W r =0 rk N 2 Wendet man die Dezimierung wiederholt an und endet mit Zweierfolgen, dann verringert sich die Komplexität auf O(N log N). Zu den DSP-Fähigkeiten für solche Berechnungen gehören u.a. , dass die Summe und Differenz zweier Werte parallel berechnet werden, und die Berechnung der Adresse mittels reverse-carry Addition4. Organisation von Vektoren: Vektoren von beispielsweise Festkommazahlen werden einfach mittels einem Array dargestellt. Hingegen werden Gleitkomma- oder komplexe Zahlen in zwei Arrays gespeichert, wobei ein Array die Mantisse bzw. Realteil und das zweite den Exponent bzw. Imaginärteil beinhalten. Mathematische Funktionen: Diese können in sprachverarbeitenden Applikationen durch bitweise oder approximierte Berechnungen sowie durch lineare Interpolation5 zwischen zwei Funktionswerten realisiert werden. Schleifenkonstrukte: Das Zählen der Schleifenzähler kann in tief verschachtelten Schleifen mit Hilfe von generellen Registern erfolgen. DSP-Prozessoren unterstützen dies in Hardware durch low-overhead und zero-overhead loops. Ein weiteres Konstrukt zur Effizienzsteigerung stellt das loop reversal dar. In seiner einfachsten Form läuft der Schleifenzähler einfach rückwärts, oder ein Adressregister läuft rückwärts, damit es dann ohne Reinitialisierung wiederbenutzt werden kann. In beiden Fällen darf es keine Abhängigkeiten zwischen den einzelnen Iterationen geben. 4 Einführung in die TMS320 DSP-Familie 4.1 Geschichtlicher Überblick Texas Instruments begann im Jahre 1982 Universitäten zu unterstützen, welche an der digitalen Signalverarbeitung interessiert waren [11]. Sie bewirkten, dass Studien über DSP-Prozessoren nicht nur in höheren Semestern durchgeführt wurden. TMS320-typische Applikationen finden sich vor allem in der Automobilindustrie, Unterhaltungselektronik, Telekommunikation, Sprachverarbeitung, etc. [12], um nur einige zu nennen. Folgende Charakteristika sind für alle DSP-Prozessoren der TMS320 Familie zutreffend: • Flexibler Instruktionssatz • Hoche Leistung 4 Reverse-carry Addition: Der Übertrag befindet sich nicht wie üblich an der linken Seite, sondern ist rechts zu finden, was Vorteile für die bit-reversed Adressierung bringt. 5 Table lookup: z.B. trigonometrische, logarithmische oder inverse Funktionen TI-TMS320-DSP.doc Seite 11 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik • • Texas Instruments TMS320 DSP Durchdachtes Design Kosteneffizienz Im Jahre 1982 leitete Texas Instruments mit der Einführung des TMS32010 den Beginn der TMS320 Familie ein. Zu Jahresende wurde der TMS32010 vom Electronic Products Magazin, zum "Produkt des Jahres" gekürt. Heutzutage besteht die TMS320 Familie aus 10 Generationen: "C1x","C2x", "C2xx", "C5x", "C54x", "C62x" sind Festkommaprozessoren, "C3x", "C4x", "C67x" sind Gleitkommaprozessoren und "C8x" ist ein Multiprozessor. Abbildung 5 und Tabelle 2 sollen kurz die Entwicklung der DSP Prozessoren zeigen. Abbildung 5: DSP Generation, Quelle: [13] Tabelle 2 : TMS320 Überblick, Quelle: [14], Ergänzungen von [15] Familiy TMS320C1x TMS320C2x TMS320C2xx TMS320C3x TMS320C4x TMS320C5x TMS320C54x TMS320C62xx TMS320C64xx TMS320C67xx TMS320C8x (1MP6, 4 PP7) 6 7 Year 1982 1984 1995 1988 1990 1989 1995 1997 1997 1994 Clock Speed MIPS/MFLOPS 8.8 MHz 5 MIPS 12.5 MHz 10 MIPS 40 MHz 20-40 MIPS 40 MHz 16.67-30/33-60 30 MHz 20-40/40-80 50 MHz 20-50 MIPS 100 MHz 30-532 MIPS 300 MHz 1200-2400 MIPS 1100 MHz 4800-8800 MIPS 167 MHz 600 MFLOPS - 1 GFOLPS 50 MHz 250 MIPS Voltage Price (10.000 Stk.) 3.3, 5.0 Auf Anfrage 5.0 Auf Anfrage 5.0 $5-$16 3.3, 5.0 $10-$180 5.0 $69-$177 3.3, 5.0 $11-$35 2.5/3.3, 3.3, 5.0 $20-$27 1.8/3.3, 2.5/3.3 $90-$121 Auf Anfrage 1.8/3.3 $143 3.3 Auf Anfrage Master Prozessor: 32-bit RISC-Prozessor, IEEE-754 Gleitkommaeinheit Parallel Prozessor: 32-bit Advanced-DSP TI-TMS320-DSP.doc Seite 12 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP 4.2 Architektur des TMS320C5x In diesem Abschnitt wird auf die wesentliche Architektur eingegangen, sowie die Besonderheiten des TMS320C62xx. Im anschließenden Kapitel wird dann auf Softwareentwicklungsmethoden für eben diesen Prozessortyp eingegangen. Die Architektur soll anhand des TMS320C5x, ein Festkomma-DSP, erklärt werden, welcher u.a. in Telekommunikationsanlagen und damit zur Sprachverarbeitung eingesetzt wird. Auf die Details der On-Chip Peripherie wird hier nicht näher eingegangen; diese kann in [12] nachgelesen werden. Eine Einführung in die Architektur der ersten Prozessoren der DSP-Familie (C2x und C3x) findet sich in [16]. Der TMS320C5x besitzt eine modifizierte Harvard Architektur mit separaten Bussen zu Programm- bzw. Datenspeicher (Abbildung 6) und kann grob in drei Teile unterteilt werden, welche durch vorhin genannte Busse miteinander verbunden sind: • Speicher • Central Processing Unit • Peripherie Abbildung 6: TMS320C5x Blockdiagramm, Quelle: [12] 4.2.1 Busstruktur Die separaten Programm- und Datenbusse ermöglichen einen gleichzeitigen Zugriff sowohl auf Daten als auch auf Instruktionen. Beispielsweise können zur selben Zeit Daten multipliziert werden, das vorhergehende Produkt kann in den Akkumulator geladen, mit dessen Inhalt addiert oder subtrahiert und eine neue Adresse berechnet werden. Durch diese Parallelität wird eine Menge von arithmetischen, logischen und Bit- TI-TMS320-DSP.doc Seite 13 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Manipulations-Operationen innerhalb eines Instruktionszyklus abgearbeitet. Die C5x Architektur wurde mit 4 Hauptbussen gebaut: • Programmbus (PB) • Programmadressbus (PAB) • Datenbus (DB) • Datenadressbus (DAB) Programm- und Datenbus transferieren Daten vom On-Chip Datenspeicher sowie internen oder externen Programmspeichern zur Multipliziereinheit für die single-cylce multiply/accumulate Operation. 4.2.2 Central Processing Unit Diese besteht aus der • Central Arithmetic Logic Unit (CALU), • Parallel Logic Unit (PLU), • Auxiliary Register Arithmetic Unit (ARAU), • Memory-mapped Register und • Program Controller 4.2.2.1 Central Arithmetic Logic Unit Die CALU (Abbildung 7) verwendet die Zweierkomplement-Arithmetik und besteht aus folgenden Komponenten: • 16-bit x 16-bit Multiplikator • 32-bit ALU8 • 32-bit ACC9 • 32-bit Akkumulator Puffer • zusätzlicher Shifter an den Ausgängen des Akkumulators und Produktregisters (PREG) 8 9 Arithmetic Logic Unit Accumulator TI-TMS320-DSP.doc Seite 14 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 7: TMS320C5x Multiplikator und ALU, Quelle: [7] Der Multiplikator, das Produktregister (PREG) sowie das temporäre Register 0 (TREG0) bilden das zentrale Element der CALU. Sie ermöglichen eine Berechnung eines 32-bit Produkts in einem einzigen Maschinenzyklus, wobei die Eingaben einerseits vom memory-mapped Register TREG0 und andererseits vom Datenbus oder Programmbus erfolgen. Das Ergebnis wird in das Produktregister geschrieben und steht somit der ALU zur weiteren Verwendung zur Verfügung. Die ALU erhält als weiteren Input den Inhalt des ACC. Die ALU und auch der ACC implementieren einen großen Umfang an arithmetischen und logischen Operationen, welche größtenteils in einem Maschinenzyklus abgearbeitet werden. Folgende Schritte kommen bei einer typischen ALU-Instruktion vor: 1. Das Datum wird über den Datenbus aus dem Speicher geholt. 2. Das Datum wird über einen Shifter der ALU übergeben, wo die Arithmetik erfolgt. 3. Das Ergebnis wird im ACC gespeichert. Der Akkumulator-Puffer dient als temporärer Speicher für den ACC. Die Shifter ermöglichen numerische Skalierung, Bit-Extraktion, erweiterte Genauigkeitsberechnungen und Overflow-Verhinderung. 4.2.2.2 Parallel Logic Unit Die PLU (Abbildung 8) arbeitet unabhängig von der und parallel zur ALU und dient zur Durchführung von Booleschen Operationen und Bit-Manipulationen. Die PLU kann Bits im Status-, Kontrollregister oder in jedem Datenspeicherbereich setzen, testen sowie hin- und herschalten. Sie stellt weiters einen direkten logischen Pfad zum Datenspeicher zur Verfügung, ohne dabei auf den ACC oder PREG zu zugreifen. TI-TMS320-DSP.doc Seite 15 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 8: TMS320C5x Parallel Logic Unit, Quelle: [7] Der Input kommt einerseits vom Datenbus und andererseits entweder vom Programmbus oder vom Dynamic-Bit-Manipulation-Register. Das Ergebnis wird an die gleiche Speicherzelle zurückgeschrieben, von welcher der erste Input stammt. 4.2.2.3 Auxiliary Register Arithmetic Unit Die ARAU ist eine nicht vorzeichenbehaftete 16-bit ALU zur Berechnung von indirekten Adressen. Sie erhält als Input Daten aus den Hilfsregistern (Auxiliary Register ARs), Indexregister (INDX) und dem AuxiliaryRegister-Compare-Register (ARCR). Der Index wird entweder um ±1 oder um den Wert im Indexregister verändert. Durch den Einsatz dieser Einheit wird die CALU von der Adressberechnung entlastet und kann dadurch andere Operationen parallel ausführen. 4.2.2.4 Memory-Mapped Register Der TMS320C5x hat 96 Register, welche in die Seite 0 des Datenspeichers abgebildet werden. Jeder dieser Prozessoren hat außerdem 28 CPU-Register und 16 I/O-Port-Register. Diese Register (memory-mapped) werden als indirekte Datenadresspointer, temporärer Speicher, für CPU-Status und CPU-Kontrolle oder Integerberechnungen mittels der ARAU benutzt. 4.2.2.5 Program Controller Dieser dient zur Dekodierung der Instruktionen, managt die CPU-Pipeline und speichert den Status der CPUOperationen. In jedem Instruktionszyklus sind drei nebenläufige Speicheroperationen möglich: (1) Instruktion holen (instruction fetch), (2) Operand lesen (read operand) und (3) Operand schreiben (write operand). Der Program Controller besteht aus: • Program Counter (PC) • Status- und Kontrollregister • 8 Stufen Hardware-Stack zur Speicherung des Prozessorzustandes bei Subroutinen und Interrupts • Adressierungslogik TI-TMS320-DSP.doc Seite 16 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik • Texas Instruments TMS320 DSP Instruktionsregister 4.2.3 On-Chip Speicher Die TMS320C5x Architektur enthält folgenden On-Chip Speicher: • Programm ROM • Daten/Programm dual-access RAM (DARAM) • Daten/Programm single-access RAM (SARAM) 4.2.3.1 Programm ROM Jeder TMS320C5x Prozessor besitzt einen 16-bit On-Chip maskierbaren programmierbaren ROM, wobei sich die Größe je nach Ausführung zwischen 2K und 32K bewegt. Dieser Speicher enthält i.a. jenen Code, welcher dazu benötigt wird, das eigentliche Programm aus dem langsameren Speicher in den On-Chip oder externen RAM zu laden. Der Kunde entwickelt diesen Code auf einem Entwicklungsboard und schickt es dann an Texas Instruments, wo dieser Code in den Chip integrieret wird. Für einige Ausführungen ist ein sogenannter Boot-Loader verfügbar, welcher das Programm von einem externen 8-bit EPROM in den internen oder externen RAM lädt. Dadurch kann ein einfaches Softwareupgrade durch Austauschen des EPROMs durchgeführt werden. 4.2.3.2 Dual-Access RAM Der 1056 Wort x 16-bit On-Chip DARAM ist in 3 Blöcke (B0, B1, B2) unterteilt, wobei B0 aus 512 Worten besteht und als Daten- oder Programmspeicher verwendet werden kann. B1 (512 Worte) und B2 (32 Worte) werden nur als Datenspeicher verwendet. Auf diesen RAM wird mit voller Taktrate zugegriffen, und durch die beiden Datenbusse (DB und DAB) wird Schreiben und Lesen innerhalb eines Taktzyklus ermöglicht. 4.2.3.3 Single-Access RAM Dabei handelt es sich um einen 16-bit On-Chip RAM, wobei dieser rein als Datenspeicher, Programmspeicher oder beides konfiguriert werden kann. Der SARAM ist in 1K- und/oder 2K-Blöcken unterteilt, und es kann parallel auf diese Blöcke zugegriffen werden, wobei auf einen Block nur einmal innerhalb eines Taktzyklus zugegriffen werden kann. 4.3 Instruktionssatz und Adressierungsmodi Der Instruktionssatz der TMS320C5x Architektur besteht aus den vorhin genannten MAC-Operationen sowie aus einzelnen Repeat-Operationen und Block Repeat-Operationen. Beide Typen werden in einem einzelnen Maschinenzyklus ausgeführt. Des weiteren besitzt die TMS320C5x Familie Operationen, um ganze Speicherblöcke hin und her zu verschieben (block memory move instruction) und Lade- und Speicher-Instruktionen für die memory-mapped Register. Neben konditionalen Sprunginstruktionen (conditional branch) und Instruktionen für Prozeduraufrufe (call), können Sprunginstruktionen auch noch verzögert werden. Diese Eigenschaft ist vor allem bei Pipelines sehr nützlich, da bei Sprüngen oder auch Prozeduraufrufen normalerweise die Pipeline geleert wird. TI-TMS320-DSP.doc Seite 17 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Der Index-Adressierungsmodus wird speziell für die Radix-2 Fast Fourier Transformation (FFT) benötigt. Dort erfolgt der Index-Adressierungsmodus in bit-reversed Weise. Neben der direkten Adressierung von Speicherbereichen ermöglichen acht 16-bit Hilfsregister indirekte Adressierung. Welches der acht Hilfsregister zur Adressierung verwendet wird, wird durch den Hilfsregisterzeiger (auxiliary register pointer - ARP) angezeigt. Der Inhalt der Hilfsregister kann nach deren Verwendung inkrementiert bzw. dekrementiert werden, was durch die ARAU bewerkstelligt wird. Der Wert kann um 1, um den Inhalt des INDX-Registers mit oder ohne reverse-carry Addition inkrementiert bzw. dekrementiert werden. Für die FFT spezifiziert eine Hälfte des INDX-Registers die Größe der FFT. Das aktuelle Hilfsregister muss gleich 2n-1 sein, wobei n ein Integer und die FFT-Größe 2n ist. Wenn man dann den Inhalt des INDX-Registers zum aktuellen Hilfsregister mittels bit-reversed Adressierung addiert, erhält man Adressen in bit-reversed Art. Die unmittelbare Adressierungsart kann in Adressierung von 8-, 9- bzw. 13-bit (short) und 16-bit Konstanten (long) unterteilt werden. Die sogenannte dedicated-register Adressierung wird als spezielle 16-bit unmittelbare Adressierung gesehen, wobei hier spezielle memory-mapped Register der CPU angesprochen werden: (1) block-move-address Register (BMAR) und (2) dynamic-bit-manipulation Register (DBMR). Letzteres findet in der PLU seinen Einsatz. Mit Hilfe der memory-mapped Adressierungsart können die memorymapped Register angesprochen werden, ohne den aktuellen Wert des data-page Zeigers zu verändern. Eine weitere Adressierungsart stellt die Moduloadressierung bereit. In manchen Literaturquellen [12] wird diese auch als zirkuläre Adressierungsart bezeichnet. Die TMS320C5x Familie unterstützt 2 nebenläufige zirkuläre Puffer, welche mittels Hilfsregister operieren. Die Kontrolle, also Start und Ende, erfolgt mittels memory-mapped Register. Abhängig vom Start- und Endwert wird um 1 inkrementiert bzw. dekrementiert. Dies kann aber auch unmittelbar durch Konstanten erfolgen. Das circular-buffer-control Register (CBCR) aktiviert bzw. deaktiviert den zirkulären Puffer. 4.4 Beispiel: MAC-Instruktion Wie schon in der Einführung erwähnt, gilt die multipy/accumulate Operation als eine der Hauptoperationen in digitalen Signalprozessoren. Folgendes kurze Beispiel (Abbildung 9) soll verdeutlichen, was sich alles in solch einer Instruktion abspielt. Ausgangspunkte sind zwei 10x10 Matrizen, wobei die Zeile einer Matrix mit der Spalte der zweiten Matrix multipliziert wird und diese Multiplikationen aufsummiert werden (innere Schleife einer Matrixmultiplikation). Die Variable MTRX1 zeigt auf den Beginn der ersten Matrix, das INDXRegister enthält den Wert 10 und das aktuelle Hilfsregister (AR) zeigt auf den Beginn der zweiten Matrix. Durch die Verbindung der MAC Instruktion mit einer RPTZ Instruktion (repeat till zero) wird diese zur singlecycle multiply/accumulate Operation. Die Adressen der Koeffizienten (z.B. Schleifenvariablen) werden durch den PC bereit gestellt, während die Berechnung der Datenadressen mittels ARAU erfolgt. Abbildung 9: MAC Beispiel, Quelle: [12] Am Beginn wird durch die RPTZ-Instruktion der Akkumulator (ACC) und das Produktregister (PREG) zurückgesetzt und die nachfolgende Instruktion (MAC MTRX1, *0+) wird wiederholt. Diese wiederum addiert den Inhalt des Akkumulators mit dem Produktregister und schreibt das Ergebnis in den Akkumulator. Gleichzeitig wird das temporäre Register 0 (TREG0) geladen und das Ergebnis der Multiplikation wird in das Produktre- TI-TMS320-DSP.doc Seite 18 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP gister geschrieben. MTRX1 wird um den Inhalt des INDX-Registers inkrementiert (*0). Nachdem die Schleife abgearbeitet wurde, muss nochmals die Addition des Akkumulators mit dem Produktregister erfolgen. 4.5 Vergleich zu anderen DSP-Prozessoren Die DSP-Industrie benötigt eine einfache Zahl, welche die Ausführungszeit für typische und intensive DSPAnwendungen widerspiegelt. Traditionelle Methoden greifen auf MIPS oder MFLOPS zurück, welche aber bei der Vielzahl an Instruktionssätzen unterschiedlicher Hersteller nicht herangezogen werden können. Aus diesem Grund sollte die Performance anhand häufig benutzter DSP-Algorithmen gemessen werden. Das Ergebnis sollte eine einzige Zahl sein, um schnell Vergleiche mit anderen Prozessoren zu ermöglichen. Der Vergleich sollte natürlich von jemanden Unabhängigen erfolgen und sollte für jedermann frei verfügbar sein. Der BDTImarkTM (Abbildung 10), ein von Berkeley Design Technology Inc. entwickelter Benchmark, vereint all diese Eigenschaften und ist unter [17] zu finden. Er basiert auf einer Suite aus 11 Kernalgorithmen, zu denen u.a. auch FIR-, IIR-Filter, Vektorprodukt und -addition sowie die Radix-2 FFT gehören. Ergebnis ist eine einzige Zahl, welche alle 11 einzelnen Benchmarkresultate vereint. Je höher die Zahl, desto schneller die Ausführungsgeschwindigkeit. Beispielweise wäre ein Prozessor, welcher beim BDTImarkTM 100 als Ergebnis erzielen würde, doppelt so schnell als einer mit 50. Dieser Benchmark kann auf jeden programmierbaren Prozessor eingesetzt werden, da er auf jeder Architektur implementiert werden kann. Die rigorosen Spezifikationen definieren die Funktionalität des Benchmarkprogramms und erlaubte Optimierungen. Abbildung 10: BDTImarkTM, Quelle: [17] TI-TMS320-DSP.doc Seite 19 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Es soll aber auch auf die Einschränkungen des BDTImarkTM hingewiesen werden. Dieser Benchmark misst nur die Ausführungszeit, d.h. wichtige Faktoren wie I/O, Speicherbenutzung, Energieverbrauch, Preis und Peripherie werden nicht berücksichtigt. Des weiteren basiert er auf der BDTI-Benchmark-Assemblersprache, weshalb bei Vergleichen zwischen Fest- und Gleitkommaprozessoren sowie unterschiedlichen Datengenauigkeiten Vorsicht geboten ist. In diesem Ergebnis ragt die TMS320C62xx Familie besonders hervor. Dieses Ergebnis ist aber mit Vorsicht zu betrachten, da beispielsweise der Lucent DSP16xxx zwanzig mal weniger MIPS hat, der Prozessor von Texas Instruments im BDTImarkTM aber nur einen rund 2,8-fachen höheren Wert hat. Aus diesem Grund sollte man sich neben den reinen Benchmarkergebnissen auch noch andere Kennzahlen zum Vergleich hernehmen. Die Berkeley Design Technology Inc. fokussiert sich auf die DSP-Technologie, und im speziellen analysieren sie DSP-Applikationen und führen Benchmarks durch. Des weiteren evaluieren und entwickeln sie Technologien, welche in der Entwicklung von DSP-Anwendungen verwendet werden. TI-TMS320-DSP.doc Seite 20 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP 5 Aspekte für die Anwendung der TMS320 DSP-Familie Die Anwendungsmöglichkeiten und möglichen Einsatzgebiete für DSP sind sehr weit gestreut und es gibt unzählige. Deshalb werden in diesem Kapitel nur einige Aspekte und Anwendungsbeispiele für den DSP TI TMS320 vorgestellt und genauer erläutert. Zuerst wird auf das Gebiet der Telekommunikation eingegangen. Da selbst dieses Teilgebiet sehr umfangreich ist, wird hierbei im speziellen auf die Telekommunikationsanwendungen im Mobiltelefonsektor eingegangen. In diesem Bereich wird der DSP TMS320C5x von TI eingesetzt. Im darauffolgenden Abschnitt wird auf die Softwareentwicklung für den DSP TI TMS320C6000 eingegangen. Dabei wird erklärt, wie man Software effizient und trotzdem mit guter Performance für den DSP entwickeln kann. 5.1 Telekommunikation mit dem TMS320C5x Die Verwendung von DSPs wächst enorm bei Telekommunikationsanwendungen [18]. Konventionelle Schnurlostelefon-Applikationen waren unter den ersten Einsatzgebieten für die DSP-Technik. Das enorme Wachstum im Mobiltelefonsektor und die Integration von mobiler Kommunikation und portablen ComputerApplikationen erhöht die Anforderungen an DSPs. Die DSPs müssen energieeffizient, leistungsstark und kostengünstig sein. Die Verkaufszahlen von diese High-End-DSPs sind sehr hoch gestiegen bzw. werden dies noch. Telekommunikationsapplikationen kann man grob in zwei Kategorien unterteilen. Einerseits in Basis- und andererseits in erweiterte Applikationen. Die Basisanwendungen beinhalten das Wesentliche der Telekommunikation, nämlich Signalverarbeitungsalgorithmen, Stimm- und Datenkompression und Fehlerkorrektur. Die erweiterten Applikationen betreffen die Mensch-Maschine-Schnittstelle und verbessern insgesamt die Qualität eines Endproduktes durch Stimm- und Zeichenerkennung bzw. Echo- und Geräuschkorrektur. Aufgrund von häufigen Upgrades und zugunsten von Flexibilität werden in diesem Bereich programmierbare DSPs bevorzugt. Festkommalösungen reichen für die mobile Telekommunikation derzeit aus. Gleitkommalösungen werden für rechenintensivere Applikationen, wie etwa Videokonferenz, verwendet. Auf die Architektur des TMS320C5x wurde bereits im Kapitel „Einführung in die TMS320 DSP-Familie“ eingegangen. In diesem Kapitel werden die Eigenschaften, die für die Telekommunikation von Vorteil sind, erläutert. Der TMS320C5x wird auf Grund dieser Eigenschaften sehr häufig im Telekommunikations- bzw. Mobiltelefonbereich eingesetzt. Telekommunikationsanwendungen verwenden traditioneller Weise einen Mikrocontroller und einen DSP. Der Mikrokontroller muss nicht leistungsstark sein. Die Funktionen dafür werden meist in C geschrieben, und Bit-Manipulation ist dabei elementar. Der TMS320C5x kann mit C programmiert werden und beinhaltet eine Bit-Manipulations-Einheit. Darüber hinaus unterstützt dieser DSP den „Power Down Mode“, wodurch erheblich Energie gespart werden kann. Zusätzlich erlaubt der TMS320C5x rasche Interruptbehandlung, und es können auch Signalverarbeitungsprozesse in Echtzeit abgearbeitet werden. Abbildung 11 zeigt eine mögliche Konfiguration eines digitalen Mobilsystems. Analoge Sprache wird vom A/D-Konverter gesampelt und im DSP-TMS320C51 verarbeitet. Als Output wird ein VSLEP-kodierterBitstream produziert (wird später noch detaillierter erklärt). Im nächsten Schritt werden noch Vorkehrungen gegen Fehler vorgenommen. Schlussendlich wird der resultierende Bitstrom moduliert und gesendet. Da digitale Mobiltelefone full-duplex sind, wird gleichzeitig der ankommende Bitstrom verarbeitet. Dabei wird das ankommende Signal demoduliert, danach Fehler behoben und schlussendlich erfolgt durch einen D/AWandler die Konvertierung in Sprache. TI-TMS320-DSP.doc Seite 21 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 11: Mögliche Konfiguration eines digitalen Mobilsystems, Quelle: [18] Dazu gehe ich noch etwas detaillierter auf den Voice-Coder des digitalen Mobilfunkstandards ein. Für den TMS320C5x nennt sich dieser Algorithmus VSELP (vector sum excited linear prediction). Dieser Algorithmus wurde von Motorolla entwickelt. Der dadurch geschaffene Voice-Coder kann Sprache mit einer Bitrate von 7950 bits/Sekunde codieren. Zusätzlich werden noch 5050 bits/Sekunde für Fehlersicherung und Synchronisation verwendet. Damit kommt man auf eine gesamte Bitrate von 13.000 bits/Sekunde. Man sieht dadurch deutlich, dass Signale hierbei in Echtzeit verarbeitet werden müssen. Das Elementare bei der Sprachcodierung ist die Suche im Code-Buch (code book search), welche eine Filterung darstellt. VSLEP bedient sich dabei mit zwei Mengen von Basisvektoren, um einen Raum von Kandidaten-Vektoren zu erzeugen. Bei früheren Algorithmen gab es eine stochastische Suche, doch diese wurde durch eine Binärsuche ersetzt. Dabei gibt es 7 Basisvektoren, von denen jeder aus 40 Elementen besteht. Der Suchraum ist daher 128 (=27). Die Aufgaben des VSLEP-Coders bestehen nun darin, die folgenden Schritte durchzuführen: • Spektrum Voraussage (Tenth-order LPC analysis) • Langfristige Voraussage (Long term (pitch) predictor) • Adaptive Code-Buch-Suche (Adaptive (pitch) code book search) • Erster Basisvektor Code-Buch-Suche (First basis vector code book search) • Zweiter Basisvektor Code-Buch-Suche (Second basis vector code book search) • Vektor-Quantisierung des Ergebnis-Code-Buches (Vector quantization of the code book gains) Konkret wird die innerhalb einer sehr kleinen Zeitspanne eingelangte Sprache nach dem VSLEP Algorithmus bearbeitet. Zuerst wird das Spektrum analysiert, um optimal den relevanten Bereich herauszufinden und um Fehler zu vermeiden. Da es sich nun nur um das Signal einer Zeitspanne handelt, muss das Ergebnis mit dem zuvor berechneten Werten interpoliert werden. In den nächsten Schritten werden Filterungen vorgenommen. Hierauf wird mit Hilfe einer langfristigen Voraussage eine Filterung vorgenommen. Dann werden noch weitere Filterungen durch drei verschiedene Suchvarianten im Code-Buch durchgeführt. Anschließend wird das Ergebnis noch durch Quantisierung optimiert. 5.2 Softwareentwicklung für den TMS320C6000 Texas Instruments schlägt für effiziente Softwareentwicklung für die DSP TMS320C6000-Serie einige Richtlinien vor [19]. Da die DSP Produkte immer mehr Funktionalität aufweisen, kann man dafür auch immer komplexere Software erstellen. Deswegen ist den meisten Kunden von Texas Instrument wichtig, dass die Softwareentwicklung möglichste einfach ist und Software auch wiederverwendet werden kann. Aus diesem Grund stellt Texas Instruments Tools und Entwicklungsumgebungen zur Verfügung, die eine rasche Softwareentwicklung zulassen. Darüber hinaus garantiert Texas Instruments, dass auf zukünftigen DSPs der TMS320C6000-Serie der heute entwickelte Code ebenfalls funktioniert. Software für den DSP TMS320C6000 TI-TMS320-DSP.doc Seite 22 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP kann in ANSI C, in ANSI C mit TI C6000 Spracherweiterungen oder aber in TI C6000 Assembler-Code implementiert werden. Texas Instruments empfiehlt die Programmierung in ANSI C mit TI C6000 Spracherweiterungen, dabei wird sowohl auf die effiziente und rasche Implementierung als auch auf die Performance des Codes geachtet. Die DSP-Hardware- und Software-Tools wurden bei Texas Instruments gemeinsam entwickelt. Tools optimieren die Performance und nützen parallele Verarbeitung möglichst gut aus. Der DSP TMS320C6000 hat die sogenannte „VelociTI-Architektur“. Diese setzt auf die VLIW (Very Long Instruction Word) Technik, um Parallelität zu maximieren und Overhead zu minimieren. Damit können mehrere Operationen in einem einzigem Zyklus ausgeführt werden. VLIW stellt einfache und kosten-effektive Kontrolle über Parallelität zur Verfügung. Zusätzlich beinhaltet VelociTI unter anderem noch Kompremierung von Instruktionen (instruction packing), bedingte Verzweigung (conditional branching), variable Instruktionslänge (variable-width instructions) und vorzeitiges Auswerten von Verzweigungen (pre-fetched branching). Code kann durch VelociTI in unabhängigen funktionalen Bereichen (Units) ausgeführt werden. Die Flexibilität der Architektur ist dabei das Herausragende. [20] In der Abbildung 12 erkennt man, wie man Software für den TI TMS320C6000 entwickeln kann. Einerseits kann man effizient und schnell Code in ANSI C bzw. in ANSI C mit speziellen TI-Erweiterungen entwickeln. Hierbei kann man Software bzw. Teile unter Umständen wiederverwenden. Andererseits ist der erzeugte Code nicht so effizient, als wenn man Assembler ausnützen würde. Bei Assembler gibt es jedoch die Unterscheidung, ob man „Linear-Assembler“10 verwendet, oder den Assembler-Code sogar von Hand noch optimiert. Davon ist „Linear-Assembler“ zu bevorzugen, da Teile unter Umständen noch wiederverwendbar sind und der Code noch etwas leserlicher ist, außer die Komponenten sind extrem zeitkritisch und die geforderte Performance kann nicht anders als durch zusätzliche Optimierung erreicht werden. Es ist aber anzuzweifeln, dass man bei „Linear-Assembler“ Code Reuse einsetzen kann, hier will anscheinend Texas Instruments den Nutzen DSP-Tools überzeichnen. Code-Optimierung kann durch den C-Compiler/Optimierer erfolgen, aber auch durch den AssemblerOptimierer. Der von Texas Instruments für die DSP TMS320C6000 entwickelte C-Compiler arbeitet bereits durch die speziellen TI C-Erweiterungen sehr effizient. Jedoch ist anzumerken, dass Texas Instruments ihre Tools und deren Fähigkeit zu optimieren sehr lobt. Tatsächlich kann aber ein C-Compiler bzw. Assembler-Optimierer nicht einen bestmöglich optimierte Machinen-Code hervorbringen. Jedoch ist es sehr hilfreich, dass es solche Tools überhaupt gibt und für viele Anwendungsfälle kann damit sicherlich ein ausreichend effizientes Anwendungssystem erstellt werden. 10 “Linearer-Assembler-Code“ ist Assembler-Code, welcher noch nicht konkreten Registern zugeordnet ist und noch nicht scheduled ist. TI-TMS320-DSP.doc Seite 23 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 12: TMS320C6000 Code-Reuse-Diagramm für TMS320C6000, Quelle: [19] Im nächstem Teil wird die von Texas Instruments empfohlene Vorgehensweise für effiziente Softwareentwicklung für den TI DSP TMS320C6000 detailliert beschrieben. Die Abbildung 13 stellt dies anschaulich dar. Nachdem die Anforderungen spezifiziert worden sind und ein Design erstellt worden ist, wird in der ersten Phase die Software in ANSI C geschrieben. Dieser Code wird kompiliert und die Funktionalität überprüft. Gibt es dabei Probleme, muss der ANSI C-Code bis zum Erreichen der gewünschten Funktionalität korrigiert werden. In der zweiten Phase wird der ANSI C-Code auf Effizienz überprüft und optimiert, bis der Code effizient genug ist. Um noch effizienter zu werden, wird in der dritten Phase der C-Code durch spezielle Erweiterungen für den TI C6000 umgeschrieben. Dies erfolgt wiederum solange, bis der Code optimiert ist. Dabei gibt es insbesondere drei Aspekte, die zu beachten sind. Einerseits ist dies das Abrollen bzw. manuelle Ausprogrammieren von kurzen Schleifen. Wird etwa eine Schleife nur zwei mal ausgeführt, erspart man sich beim Ausprogrammieren etwa eine Schleifenvariable bzw. einen Schleifenzähler. Andererseits optimiert man durch Ausnützung von Parallelität, indem man etwa zur gleichen Zeit zwei Werte einliest. Eventuell erfolgt zur weiteren Optimierung noch eine vierte Phase. In dieser wird der zeitkritische Code gesucht und durch Assembler ersetzt. Dies hat wiederum so lange zu erfolgen, bis nun der Code endgültig effizient genug und die endgültig geforderte bzw. gewünschte Performance erreicht ist. Bei der Softwareentwicklung sollte man nur dann in eine der nächsten Phasen übergehen, wenn es unbedingt erforderlich ist. Je weiter man vorgeht, desto schlechter kann man den Code wiederverwenden. TI-TMS320-DSP.doc Seite 24 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 13: Empfohlener DSP-Software-Entwicklungsprozess, Quelle: [19] TI-TMS320-DSP.doc Seite 25 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Die Softwareentwicklungszeit kann durch Implementierung in einer höheren Programmiersprache (z.B. C) wesentlich gegenüber der Entwicklung in Assembler verkürzt werden. Für C lässt sich die Software besser entwerfen, sowohl im Grob als auch im Feindesign. Und die Implementierung in C erfolgt viel schneller als in Assembler, durch die höhere Abstraktion und Strukturierung. Da Assembler aber, wenn es professionell und sehr gut angewandt wird, effizienter ist, muss unter Umständen für elementare Teile der Code doch in Assembler geschrieben werden. Aber zumindest sollten die C-Erweiterung für den TI DSP-Prozessor eingesetzt werden. In Abbildung 14 kann man deutlich erkennen, wie stark die Entwicklungszeit verkürzt werden kann. Da diese Grafik von Texas Instruments stammt, ist diese Annahme aber sehr optimistisch. Relevant sollte man nur den Vergleich „Typical DSP Software Development“ und „Development with C and Linear Assembly Optimizations“ ansehen, obwohl der Unterschied in der Entwicklungszeit wahrscheinlich ebenfalls übertrieben ist. Man kann durch Wiederverwendung von Softwarekomponenten sicherlich zusätzlich noch Zeit einsparen, aber nicht so drastisch, da man Code, der öfter verwendet wird, viel besser bzgl. seiner Qualität sichern und dokumentieren muss, und man muss den tatsächlich benötigten Code erst finden und wahrscheinlich Teile davon noch umschreiben. Abbildung 14: Softwareentwicklungszeit, Quelle: [19] Als Beispiel für die effiziente Kompilierung von ANSI C-Code nach Assembler für den TI TMS320C6201 wird im folgenden die Vektoraddition vorgestellt. Der Softwareprogrammierer braucht hierbei nur den ANSI CCode zu implementieren. Der C-Compiler von Texas Instruments erstellt daraus automatisch einen effizienten Assembler-Code für den TMS320C6201. [21] Der C-Funktion „Add“ werden Pointer auf die beiden zu addierenden Vektoren übergeben. Der Ergebnisvektor wird ebenfalls mittels eines Pointers übergeben. Zusätzlich wird die Anzahl der Elemente der Vektoren in der Variable count übergeben. Die Funktion geht in einer Schleife elementweise durch, addiert die Zahlen und schreibt diese in den Ergebnisvektor. TI-TMS320-DSP.doc Seite 26 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 15: Vektoraddition in C, Quelle: [21] Im C-Code (Abbildung 15) ist bereits ersichtlich, dass 3 externe Speicherzugriffe pro Schleifendurchlauf benötigt werden (Zwei Lese- und ein Schreibzugriff). In effizienten Assembler-Code (Abbildung 16) für den TMS320C6201 übersetzt, kann man durch Parallelität effiziente Ausführung erreichen. Da dieser AssemblerCode nicht in einer Instruktion untergebracht werden kann, wird dieser auf die beiden Datenpfade aufgeteilt. Die Instruktionen ADD .L1X B4,A0,A5, B .S2 L31 und LDH .D1 *A3++,A0 werden ebenso wie die Instruktionen STH .D1 A5,*A4++, SUB .L2 B0,1,B0 und LDH .D2 *B5++,B4 parallel ausgeführt: Im ersten Block erfolgt die Vektoraddition, der konditionale Sprung und das Laden des ersten Vektorkoeffizienten. Der zweite Block bewerkstelligt das Speichern des Ergebnisses, die Inkrementierung des Schleifenzählers und das Laden des zweiten Vektorkoeffizienten. Abbildung 16: Vektoraddition in Assembler, generiert aus C, Quelle: [21] Die Ausnutzung der Parallelität im Assembler-Code wird in Abbildung 17 ersichtlich. Es gibt zwei Datenpfade und somit zwei Register Files und auch zwei Data Units, auf die somit zugleich, sprich parallel, zugegriffen werden kann. TI-TMS320-DSP.doc Seite 27 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP Abbildung 17: Architektur des TMS320C6201, Quelle: [21] 11 12 13 14 6 Resümee und Ausblick Der Trend geht dahin, dass die DSP-Prozessoren leistungsstärker (mehr MIPS) werden, aber trotzdem wenig Strom verbrauchen und kostengünstig sind [6]. Eine Vormachtstellung wie sie die x86-Architektur im Desktop Bereich hat, ist im Embedded-Bereich unwahrscheinlich, da es sehr unterschiedliche und weitverbreitete Anwendungsmöglichkeiten gibt. Höchstens in speziellen Anwendungsgebieten (etwa dem Telekommunikationssektor) könnte sich eine Vormachtstellung bilden. Da hierfür spezielle DSP-Prozessoren benötigt werden. Diese könnte möglicherweise von einem Hersteller (etwa Motorola) eingenommen werden. Auf der anderen Seite gibt es aber einen Trend zu DSPProzessoren, die in vielen Anwendungsgebieten eingesetzt werden können. Lediglich die Software unterscheidet sich dann. Derzeit gibt es kaum Standardisierung in diesem Bereich. Da aber die Verwendung einer standardisierten Plattform bei der Entwicklung in Softwarehäusern drastisch den Design- und Entwicklungszyklus verkürzt und gemachte Erfahrungen bei zukünftigen Projekten von Vorteil sind, wird das Management sich für Standardisierung einsetzen. Es scheinen sich Java und Windows CE im Embedded-Bereich durchzusetzen. Diese Betriebsysteme heben sich durch die gute grafische Oberfläche hervor. Allerdings gibt es Schwächen im Bereich Echtzeit. Im Desktop Bereich haben sich zum Beispiel einige wenige Betriebssysteme durchgesetzt – Windows und Unix-, und Ähnliches ist auch im Embedded-Bereich zu erwarten. 11 .S Unit – Logical Unit With Shifter .L Unit – Logical Unit 13 .D Unit – Data Unit 14 .M Unit – Multiply Unit 12 TI-TMS320-DSP.doc Seite 28 von 29 © 2000 Arno Kersche, Christian Timmerer Seminar aus Praktischer Informatik Texas Instruments TMS320 DSP 7 Literaturquellen [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] What is a DSP?, http://www.ti.com/corp/docs/investor/dsp/dsp.htm, Texas Instruments, Dallas, TX, USA Vijay K. Madisetti, Douglas B. Willams (eds.), The digital signal processing handbook, IEEE CRC Press, 1998 Lina J. Karam, James H. McClellan, Ivan W. Selesnick, C. Sidney Burrus, Digital Filtering, erschienen in The digital signal processing handbook, Vijay K. Madisetti, Douglas B. Willams (eds.), IEEE CRC Press, 1998 Jan Bier , Understanding the New DSP Processor Architecture, ICSPAT Proceedings, 1999 Jennifer Eyre, Jeff Bier , DSP Processors Hit the Mainstream, IEEE Computer, Vol. 31, No. 8, August 1998 Menfred Schlett , Trends in Embedded Microprocessor Design, IEEE Computer, Vol. 31, No. 8, August 1998 TMS320 DSP Development Support Reference Guide, Texas Instruments, Dallas, TX, USA Kurt Baudendistel (eds.), DSP Implementations of Speech Processing, erschienen in The digital signal processing handbook, Vijay K. Madisetti, Douglas B. Willams (eds.), IEEE CRC Press, 1998 P. Duhamel, M. Vetterli (eds.), Fast Fourier Transformations: A Tutorial Review and a State of the Art, erschienen in The digital signal processing handbook, Vijay K. Madisetti (eds.), Douglas B. Willams, IEEE CRC Press, 1998 Ian O'Donnell, Dennis Yee FFT Implementation Exploration, (eds.), http://infopad.eecs.berkeley.edu/~ian/ee225c/report.html TI DSP Firsts, http://www.ti.com/corp/docs/investor/dsp/firsts.htm, Texas Instruments, Dallas, TX, USA TMS320C5x User's Guide, Texas Instruments, Dallas, TX, USA TMS320 DSP Product Overview, Texas Instruments, Dallas, TX, USA Pocket Guide to Popular DSP Processors and Cores, Berkeley Design Technology Inc., Berkeley, CA, USA Texas Instruments, http://www.ti.com, Dallas, TX, USA Panos Papamichalis (eds.), Introduction to the TMS320 Familiy of Digital Signal Processors, erschienen in The digital signal processing handbook, Vijay K. Madisetti (eds.), Douglas B. Willams, IEEE CRC Press, 1998 Berkeley Design Technology Inc., http://www.bdti.com, Berkeley, CA, USA Telecommunications Applications with the TMS320C5x DSPs, Application Book, Texas Instruments, Dallas, TX, USA, 1994 Marie Silverthorn, Leon Adams und Richard Scales, Guidelines for Software Development Efficiency on the TMS320C6000 VelociTI Architecture, Texas Instruments, TX, USA, 1998 TMS320C6x Glossary of Terms, http://www.ti.com/sc/docs/glossary/dspgloss.htm, Texas Instruments, Dallas, TX, USA Richard Scales, Software Development Techniques for the TMS320C6201 DSP, Texas Instruments, Dallas, TX, USA TI-TMS320-DSP.doc Seite 29 von 29 © 2000 Arno Kersche, Christian Timmerer