technische informatik i (ss 2006) 1 teil 5: embedded systems 5c: dsps (digitale signal prozessoren)
TRANSCRIPT
Technische Informatik I (SS 2006) 1
Teil 5: Embedded Systems5c: DSP‘s
(Digitale Signal Prozessoren)
Technische Informatik I (SS 2006) 2
DSP = Digitale Signalprozessoren
Entwickelt für High-Speed-Algorithmen Telekommunikation
(z.B. Noise-Filter) JPEG/MPEG Encoder MP3 Encoder ADSL
(Asymmetrical Digital Subscriber Line)wegen mehrerer Trägerfrequenzen
Oft in Kombination mit ADC (Analog-to-Digital-Converter) DAC (Digital-to-Analog-Converter)
Technische Informatik I (SS 2006) 3
DSP-Algorithmen
Beipiel: FIR-Filter Finite Impulse Response y[n] = c[k] * x[n-k] rekursiv:
output(jetzt) = input(jetzt) – ½ x output(vorher) für mehrere Zeitschritte:
digitaler „Equalizer“
in Programmiersprache C y[n] = 0.0;
for (k=0; k<N; k++)y[n] += c[k] * x[n-k]
y[n] wird in mehreren Loops
benutzt
Array-Index(kann groß sein)
rekursive Arithmetik in Index
Anwendungz.B als „Echo Cancellation“für Video-Konferenzen
Technische Informatik I (SS 2006) 4
Exkurs: Was ist ein Pointer ?
#include <stdio.h>
void main(){
int x1=3; int x2=4;
int *p1; p1 = &x1;
int *p2; p2 = &x2;
printf("%x %x\n", p1, p2);
/* Ausgabe : bfffe828 bfffe824 */
printf("%d %d\n", *p1, *p2);
/* Ausgabe: 3 4 */}
Technische Informatik I (SS 2006) 5
Beispiel: FIR-Filter
FIR Filter wird effektiver durch Benutzung von Pointern
float *y_ptr=&y[n];float *c_ptr=&c[0];float *x_ptr=&x[n];
for (k=0; k<N; k++)*y_ptr += *c_ptr++ * *x_ptr--;
Bedeutung von *x_ptr: Wie indirekte Addressierung !
Bedeutung von ++ / --: x_ptr nach Operation in/dekrementieren
Weitere Verbesserung der Geschwindigkeit: x_ptr in ein Register legen
x_ptr
x[0]x[1]x[2]….x[n]
Technische Informatik I (SS 2006) 6
Was soll ein DSP können ?
Pointer in ein Register speichern Mit Auto-Inkrement/Dekrement
in einem Befehl evtl. sogar mit Adressierung
im gleichen Befehl möglichst viele Register Typische Operation: y=a + c*b in einem Taktzyklus evtl. mehr als einen Datenbus,
dann parallel genutzt hohe I/O-Bandbreite
alles auf einem Chip (Single-Chip-Computer)
Technische Informatik I (SS 2006) 7
Was soll ein DSP können ?
Dafür würde ein Pentium 10-20 Taktzyklen benötigen.
Technische Informatik I (SS 2006) 8
Motorola DSPs
DSP56x0x fixed-point Arithmetik programmierbar in Assembler SIMD Harvard Architektur 24-bit program, 24-bit data
24-bit = 144 dBmenschliches Ohr = 120 dBausreichend für Audioanwendungen(Abtastrate 192 kHz)
Akkumulator Register sind 56-bit(2 x 24 bit parallel + 8 bit „headroom“)
Anwendungen: ATARI Falcon Homecomputer, Radar (Flugüberwachung), PCI interface Steuerung, Motorola Telefone
Technische Informatik I (SS 2006) 9
Texas Instruments DSPs
TI TMS3x0, seit 1983 seit dem TMS320 programmierbar in C
(vorher Assembler) sogar GNU gcc Compiler
seit 2003 von TU Chemnitzerhältlich
fixed-point and floating-point DSP Typen Host-Port
JTAG für Code download Anwendung:
in Creative MP3 Playern in DELL MP3 Playern
delayed branch logic „DM Varianten“ haben einen ARM Prozessor auf dem Chip
Beispiel:DM320 hat einen ARM926 und einen TMS320C5409 DSP
Technische Informatik I (SS 2006) 10
Beispiel: Texas Instruments DSP
Harvard-Architektur Host-Port
für Zugriff „von außen“
8 Mini-Instruktionen parallel VLIW
= Very Large Instruction Word
Technische Informatik I (SS 2006) 11
Was ist „delayed branch“ Exekution ?
zu allererst:es gibt „Branch“-Instruktionen branch („call“ oder „jump“) conditional branch („if“ und „elseif“)
es gibt eine Pipeline in der Pipeline wird bereits „dekodiert“ wenn ein Branch passiert, ist alles,
was dahinter in der Pipeline folgt, quasi „wertlos“: also „flush pipeline“ notwendigjedoch dies verschwendet Taktzyklen
„delayed branch“ bedeutet:kein „pipeline flush“ !einfach alles (auch das was gar nicht ausgeführt werden soll) dekodieren und ausführen, aber nur als „dummy“ ausführen
Technische Informatik I (SS 2006) 12
Was ist VLIW = „Very Large Instruction Word“ ?
z.B. Motorola 56x002 Instruktionen parallel2 x 24 bit (+ 8-bit extra)zu einer „large“ 56-bit Instruktion
z.B. Texas Instruments TMS320C62xx8 Instruktionen parallelder Compiler entscheidet, welche Instruktionen parallel,d.h. unabhängig voneinander sind,und zu einer „very large instruction“ zusammengefügt werdenhier: 256 bits !
Technische Informatik I (SS 2006) 13
Was ist „super-skalar“ ?
VLIW
der Compiler produziert Code (während des Compilierens),welcher identifiziert, welche Instruktionen in parallel ausgeführt werden
super-skalar
die Hardware entscheidet (während der Ausführung),welche Instruktionen in parallel ausgeführt werdenBeispiel:LSI Logic ZSP500in japanischen CDMA Mobiltelefonen
Technische Informatik I (SS 2006) 14
Pipeline und Super-Skalar
Technische Informatik I (SS 2006) 15
Audio-Daten
Technische Informatik I (SS 2006) 16
Beispiel eines Audio-Encoders
Audiodaten (z.B. im WAV Format)= Abfolgen von Amplituden
Bsp.195-30-0(Pause)-208
das muß als Bitfolge gesendet werden:11000011-00011110-00000000-11010000
Encoder:welche Ziffer – wie oft – welche Ziffer – wie oft ... 1-2-0-4-1-2-0-3-1-4-0-9-1-2-0-1-1-1-0-4
auch byte übergreifend ! (siehe 0-9, das sind mehr als 8)
das wäre eine Kompression von 20/32=62.5%
bessere Kompression von Audio-Daten: MP3
Technische Informatik I (SS 2006) 17
SHARC = Super Harvard Architecture Computer DMA = Direct Memory Access 6 link ports = voneinander unabhängige Datenbusse
Bsp: 2106x von Analog Devices
Technische Informatik I (SS 2006) 18
SHARC DSP
Analog Devices ADSP-2106x Super-Harvard Architektur = dual-ported SRAM
(d.h. benachbarter SHARC kann gleichzeitig zugreifen) 32-bit IEEE Floating Point Unit programmierbar in C parallel:
1-Taktzyklus multiply & ALU Operationen in parallelmit memory read/write und instruction fetch
multiply with add/subtract in 1 Zyklus
6 Link-Ports (ähnlich zu Transputer-Links)Datentransfer mit 40 MB/s
JTAG Ports für Test DMA controller
(sogar extern-nach-extern DMA möglich !)
Technische Informatik I (SS 2006) 19
SHARC Prozessor Pins
viele DATA Pins
Technische Informatik I (SS 2006) 20
Technische Informatik I (SS 2006) 21
Matrix Multiplikation mit einem SHARC DSP
Technische Informatik I (SS 2006) 22
Matrix Multiplikation mit einem SHARC DSP
Das ist Original Quell-Code für den Analog Devices SHARC DSP
Technische Informatik I (SS 2006) 23
test
Technische Informatik I (SS 2006) 24
Link-Port auf optisches Kabel
Technische Informatik I (SS 2006) 25
Dual Ported RAM
Harvard Architektur:Befehlsspeicher ist physikalisch vom Datenspeicher getrennt
Super-Harvard Architektur: dual ported auf Deutsch: Speicher mit 2 Türen
SRAM = Flip-Flops (2 Transistoren), schneller Zugriff ~10 nsDRAM = Transistor + Silicium-Kondensator (auf dem Wafer) + Steuerleitungen,kleiner da Address-Multiplexing (takt-by-takt), aber langsam ~60 ns
SHARC hat SRAM (static RAM) auf dem Chip
SRAM
Adresse1 Adresse2
Daten1 Daten2
Technische Informatik I (SS 2006) 26
Wie programmiert man einen SHARC ?
oder einen anderen DSP ? Cross-Compiler:
ein binär Code wird auf einer anderen Platform erzeugt (z.B. PC oder SPARC Workstation)
der binär-Code wird dann an einen Port geschrieben (z.B. über ein JTAG Kabel oder einen VME Bus)
nach 256 words (x 4 bytes) beginnt der DSP automatisch mit der Ausführung
Trickerstes Kommando im Code: bleib stehen und warte auf Eingabe !
Technische Informatik I (SS 2006) 27
Vergleich DSP und Pentium
Beispiel:Pentium MMX 266 vs. TMS32062x
Pentium verbraucht 4x mehr Strom(CISC Prozessor)
gleicher Preis (~20 Euro) Pentium ist ~4x größer Pentium benötigt Kühlung Aber DSP hat 3 x mehr MIPS
(Million Instructions per Second) Fast Fourier Transform
benötigt Faktor ~3 weniger Rechenzeit auf DSP
Technische Informatik I (SS 2006) 28
DSPs von Analog Devices
Technische Informatik I (SS 2006) 29
DSPs von Motorola
Technische Informatik I (SS 2006) 30
DSPs von Texas Instruments
Technische Informatik I (SS 2006) 31
Wieiterentwicklung: TigerSHARC von Analog Devices
Taktrate 600 MHz(vorher 40 MHz)
Technische Informatik I (SS 2006) 32
Tiger-SHARC Arrays (ähnlich zu Transputer-Arrays)
Verschaltung mit schnellen Link-Ports 250 MB/s(vorher 40 MB/s)
Technische Informatik I (SS 2006) 33
Tiger-SHARC Arrays: Speicher
Multiprozessor-Fähigkeiteneingebaut
Gemeinsamer Adressraum für 8 Prozessoren