Information Technology Reference
In-Depth Information
mac
*ar6+,
*cdp+,
ac1
::
mac
*ar3-,
*cdp+,
ac2
mac::mac
1000 0011
11 0
001 011 010 00 01
00 01
10 0 0
31
0
Bild 3.11. Codierung eines zwei Multiplikationen und Akkumulationen enthaltenden Befehls für
den Signalprozessor TMS320C55x von Texas-Instruments (Operationscode grau unterlegt)
Beispiel 3.3. Produktsumme . Die meisten Signalprozessoren verfügen neben den Befehlen zur
statisch impliziten Parallelverarbeitung von Operationen oftmals über die Möglichkeit zur wieder-
holten Ausführung von Befehlen oder Befehlsfolgen, ohne Zeit für den hierbei notwendigen Sprung
zu benötigen. In Bild 3.12a ist für den TMS320C55x ein Assemblerprogramm zur Berechnung der
Produktsumme a i b i für i von 0 bis 255 dargestellt. Nach der Initialisierung des Akkumulators
AC0 in Zeile 1 wird wegen des rpt-Befehls (repeat) in Zeile 2 die akkumulierende Multiplikation in
Zeile 3 256 Mal wiederholt, wobei die Koeffizienten a i und b i indirekt über die Register AR0 und
AR4 adressiert werden.
Das Programm benötigt für seine Bearbeitung insgesamt 258 Takte: je einen Takt für die Initialisie-
rung und den rpt-Befehl und 256 Takte für die Schleife. Im Prinzip wird hierbei der zu wiederho-
lende Befehl solange im Instruktionsregister gehalten, wie der im rpt-Befehl angegebene Zählwert
festschreibt, wobei die Schleifendurchläufe in einem signalprozessorinternen Register gezählt wer-
den. Als Nachteilig ist hierbei in Kauf zu nehmen, dass sich nur ein einziger Befehl wiederholt aus-
führen lässt. In vielen Signalprozessoren ist deshalb zusätzlich ein Befehl realisiert, der auch für
beliebig lange Befehlsfolgen verwendbar ist und nur bei der Schleifeninitialisierung Zeit zur Aus-
führung benötigt.
1:
mov
#0, ac0
1:
clr
a
x:(r0)+, x0
y:(r4)+, y0
2:
rpt
#256
2:
do
#256, loop
3:
mac
*ar0+, *ar4+, ac0
3:
mac
x0, y0, A
x:(r0)+, x0
y:(r4)+, y0
4: loop:
...
a b
Bild 3.12. Programme zur Berechnung der Produktsumme. a für den Signalprozessor
TMS320C55x von Texas Instruments, b für den Signalprozessor DSP563xx von Motorola
Wie die Produktsumme mit einem solchen Befehl berechnet werden kann, ist in Bild 3.12b für den
DSP563xx von Motorola [119] angegeben. Nach der Initialisierung des Akkumulators a (clr a) wird
in Zeile 2 die Schleife durch einen do-Befehl eingeleitet. Der Befehl bewirkt, dass die Zahl der
Wiederholungen (256), die Befehlsadresse des letzten Schleifenbefehls (loop) und die Befehlsa-
dresse des auf den do-Befehl folgenden Befehls (sie ist zum Zeitpunkt der Ausführung im Befehls-
zähler gespeichert) auf einem signalprozessorintern realisierten Stapel gesichert werden. Solange
sich ein Eintrag darauf befindet, wird nach Ausführung jedes Befehls überprüft, ob der Befehlszäh-
ler das Schleifenende erreicht hat und, wenn dies der Fall ist, der Schleifenzähler dekrementiert.
Die Schleife terminiert bei einem Zählwert von Eins.
Solange der Zählwert jedoch ungleich Eins ist, wird der Schleifenrumpf durch Setzen des Befehls-
zählers mit der auf dem Stapel gesicherten Startadresse wiederholt durchlaufen. Da dies bereits
möglich ist, bevor der Prozessor den auf das Schleifenende folgenden Befehl lädt (fetch), benötigt
die Bearbeitung des Sprungs effektiv null Takte. Falls die Schleife schließlich terminiert, wird der
entsprechende Eintrag vom Stapel entfernt. Gegebenenfalls führt dies dazu, dass ein vor Schleifen-
beginn darauf befindlicher, für eine übergeordnete Schleife zuständiger Eintrag sichtbar wird. So ist
es möglich, ineinander geschachtelte Schleifen zu verarbeiten.
In Bild 3.12a befindet sich im Rumpf der Schleife nur ein einziger Befehl, in dem u.a. eine mac-
Operation codiert ist. Da sie nicht direkt auf dem Speicher arbeiten kann, sondern nur auf den Inhal-
Search WWH ::




Custom Search