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