-
Die
Erfindung betrifft eine Anordnung zur datenflussabhängigen Programmablaufsteuerung
in einem SIMD-Prozessor,
bestehend aus mehreren Streifen, wobei ein Streifen mindestens eine
Verarbeitungseinheit mit Eingabe- und
Ausgaberegistern enthält,
wobei die Streifen über
ein Datenbussystem mit einem dem jeweiligen Streifen zugeordneten Speicherabschnitt
eines Datenspeichers und über
einen Befehlsbus mit einer Programmablaufsteuerung verbunden sind.
-
Die
Erfindung betrifft auch ein Verfahren zur datenflussabhängigen Programmablaufsteuerung
in einem SIMD-Prozessor,
bei dem eine Steuerung der zeitgleichen Abarbeitung von Befehlsinstruktionen
in den Verarbeitungseinheiten des SIMD-Prozessor durch ein langes,
aus mindestens zwei Befehlswortteilen bestehendes, Befehlswort (VLIW)
erfolgt.
-
SIMD-Prozessoren
(Single Instruction Multiple Data) bestehen aus mehreren meist gleichartig aufgebauten
Streifen, wobei jeder Streifen eine oder mehrere Verarbeitungseinheiten
enthält.
Diese Verarbeitungseinheiten weisen mindestens eine Eingangs- und/oder
mindestens ein Ausgangsregister zur Zwischenspeicherung der Daten
auf, wobei das oder die Eingangsregister die zu verarbeitenden Daten
und/oder das Ausgangsregister das Ergebnis der Verarbeitung enthält.
-
Anstelle
einer ALU (Arithmetik-Logik-Einheit) als Verarbeitungseinheit kann
auch eine FPU (Floating-Point-Einheit)
angeordnet sein. Weitere Möglichkeiten
bestehen in der Anordnung eins Shifters, eines Registers oder eines
Speichers anstelle einer Verarbeitungseinheit, wobei alle diese
Einheiten innerhalb eines Streifens anwendungsspezifisch miteinander verbunden
sind.
-
Die
Register der Verarbeitungseinheiten sind zumindest mittelbar über einen
Datenbus mit einem internen (Cache) und/oder externen Datenspeicher verbunden.
-
Die
in den Streifen angeordneten Verarbeitungseinheiten sind zur Steuerung
der Verarbeitung der Eingangsdaten über einen Befehlsbus mit einer Programmablaufsteuerung
verbunden.
-
Bei
einem SIMD-Prozessor steuert ein einzelner Befehl mehrere funktionale
Einheiten. Somit sind derartige Prozessoren in der Lage, mehrerer
Datenströme,
in mehrere funktionale Einheiten, gesteuert durch einen Instruktionsstrom,
parallel zu verarbeiten. Somit ist es möglich, in jedem Streifen gleichzeitig,
in dem meisten Fällen
unterschiedliche Eingangsdaten, gesteuert durch einen ersten gemeinsamen
Befehl, derselben arithmetischen oder logischen Operation zu unterziehen.
-
Zeitgleich
dazu besteht die Möglichkeit,
weitere Verarbeitungseinheiten, welche beispielsweise in anderen
Streifen angeordnet sind, durch einen zweiten gemeinsamen Befehl
zu steuern. Somit führen
diese Einheiten ebenfalls eine gleichartige arithmetische oder logische
Operation mit ihren Eingangsdaten durch.
-
Der
erste und der zweite gemeinsame Befehl sind Bestandteil einer Gruppe
von zeitgleich auszuführenden
Befehlen des SIMD-Prozessors. Diese Gruppe von Befehlen ist in einem
langen Befehls- oder Instruktionswort zusammengefasst und wird als VLIW
(Very Long Instruction Word) bezeichnet. Dieses VLIW ist ein langes
Befehlswort, das in Befehlswortteile eingeteilt ist. Diese Befehlswortteile
steuern mehrere Verarbeitungseinheiten im Prozessor unabhängig voneinander.
Eine zentrale Programmablaufsteuerung holt in jedem Takt ein langes
Befehlswort aus dem Befehlsspeicher und stößt die darin kodierten Operationen
in parallelen Verarbeitungseinheiten zur Ausführung an.
-
Bei
der Befehlausführung
in jeder Verarbeitungseinheit werden Flags (1-Bit-Register, Zero,
Carry und andere) erzeugt, welche durch eine Programmablaufsteuerung
ausgewertet werden können.
Diese Flags erhalten durch jede Befehlsabarbeitung während der
Laufzeit des Programms ihren aktuellen Wahrheitswert durch Vergleichs-
und eventuell andere Operationen.
-
Die
Programmflusskontrolle entspricht der eines RISC-Prozessors (Reduced Instruction Set Computer),
bei dem Änderungen
des sequenziellen Programmflusses durch Sprünge, Verzweigungen und Unterprogrammaufrufe
erfolgen. Hierdurch können
beispielsweise die aktuell erzeugten Flags ausgewertet werden. Nachteilig
dabei ist die Tatsache, dass eine Erfüllung einer vorgegebenen Sprungbedingung
durch ein Flag einer Verarbeitungseinheit dazu führt, dass nicht nur der Programmfluss
für die eine
Verarbeitungseinheit sondern für
alle geändert wird.
Diese Tatsache kann dazu führen,
dass die anderen Verarbeitungseinheiten zumindest für einen Teil
des geänderten
Programmablaufs so genannte Leerbefehle (NOP) ausführen müssen und
die Performance für
die abzuarbeitende Anwendung sinkt.
-
Eine
datenabhängige
Programmflusskontrolle ist in einem SIMD-Prozessor für nur einen
Streifen unabhängig
von den anderen nicht oder nur bedingt möglich, da hierzu in jedem Streifen
ein unterschiedlicher Programmfluss möglich sein müsste. Dies
ist aber auf Grund der SIMD-Architektur nicht möglich.
-
Aus
dem Stand der Technik ist ein so genannter TigerSharc-SIMD-Prozessor bekannt,
welcher eine Programmverzweigung durchführt, wenn alle oder eine Streifen
des Prozessors eine Bedingung erfüllt.
-
Weiterhin
ist von Analog-Devices ein DSP der Serie ADSP 2100 bekannt, bei
dem eine Flagauswertung durch die Programmablaufsteuerung erfolgt
und die Flags für
Sprünge
oder Programmverzweigungen überprüft werden.
-
Aus
der
DE 198 35 216 ist
ein Prozessor und ein Verfahren zur parallelen Datenverarbeitung
mit einem Datenspeicher, parallelen Verarbeitungseinheiten und einer
globalen Kommunikationseinheit, die Busse und einen Verteiler umfasst,
bekannt, wobei der Datenspeicher mit ersten Bussen mit den Eingängen des
Verteilers und jeder Verarbeitungseinheit verbunden ist.
-
Mit
dieser Anordnung wird eine Verbesserung der Kommunikation innerhalb
eines Prozessors, speziell zwischen den Streifen erreicht. Eine Änderung
des Programmflusses ist nur in üblicher
Weise durch Auswertung von Statussignalen und Steuerung durch die
Programmflusskontrolle möglich.
-
Aus
der WO 01/50240 ist eine Anordnung und ein Verfahren zur Steuerung
des Datenflusses in einer Verarbeitungseinheit mit einer Vielzahl
von parallelen Datenpfaden mit jeweils einem Register/Speicher,
jeweils einer zugehörigen
Verarbeitungseinheit und einem Ergebnisregister, wobei die Verarbeitungseinheiten
nach dem gleichen Algorithmus arbeiten und jeweils eine Recheneinheit
enthalten und jeder Datenpfad sowie jedes Ergebnisregister mit dem
Steuerausgang einer zentralen Programmsteuereinheit verbunden ist,
bekannt.
-
Bei
dieser Lösung
wird die Übernahme
eines durch eine Recheneinheit erzeugten Ergebnisses in Abhängigkeit
von Statussignalen gesteuert. Eine Programmflusskontrolle ist mit
dieser Lösung
nur nach dem bekannten Stand der Technik gesteuert durch die Programmsteuereinheit
möglich.
-
Aus
der
US 5,355,508 ist
eine Anordnung bekannt, welche eine Kombination aus einem SIMD- und
einem MIMD-Prozessor mit einer übergeordneten
Kontrolleinheit darstellt. Mittels dieser Anordnung können die
Vorteile der SIMD- und MIMD-Architektur gemeinsam
genutzt bzw. die Nachteile beider minimiert werden.
-
Durch
die übergeordneten
Kontrolleinheit lassen sich parallel ausführbare und sequentiell ausführbare Operationen
auf die entsprechenden Teilprozessoren verteilen und somit ein Performancegewinn
erzielen. Eine datenabhängige
oder statussignalabhängige
Programmflusssteuerung ist nur durch die Auswertung der Statussignale
und entsprechenden Programmsprüngen
oder Verzweigungen möglich
-
Der
Erfindung liegt somit die Aufgabe zugrunde, ein Verfahren und eine
zugehörige
Schaltungsanordnung zur datenflussabhängigen Programmablaufsteuerung
in einem SIMD-Prozessor
zu schaffen, womit eine prozessorinterne und vom Datenfluss abhängige Programmablaufsteuerung
ohne die Notwendigkeit von Programmverzweigungen oder Sprüngen erreicht
wird.
-
Gemäß der Erfindung
wird die Aufgabe bei einer Anordnung zur datenflussabhängigen Programmablaufsteuerung
in einem SIMD-Prozessor der
eingangs genannten Art dadurch gelöst, dass eine ein Befehlswort
datenflussabhängig
erweiternde Baugruppe zur internen Befehlswortteilerweiterung angeordnet
ist, wobei die Baugruppe mit den Verarbeitungseinheiten durch Steuerleitungen
und die Verarbeitungseinheiten durch Statusleitungen mit der Baugruppe
verbunden sind.
-
Die
Erfindung beinhaltet eine Baugruppe die es ermöglicht, datenabhängig einen
oder mehrere Streifen oder Verarbeitungseinheiten innerhalb eines Streifens
zu deaktivieren und zu aktivieren. Zu diesem Zweck ist die Baugruppe
mit den Verarbeitungseinheiten der Streifen über Statussignalleitungen zur Übertragung
von Statussignalen, welche bei der Verarbeitung von Daten durch
die Verarbeitungseinheit entstehen, verbunden. Derartige Statussignale
könne beispielsweise
ein Zero-Flag oder ein Carry-Flag sein.
-
Eine
weitere Möglichkeit
der datenflussabhängigen
Programmablaufsteuerung besteht in der gezielten Auswahl von zu
verarbeitenden Eingangsdaten für
eine spezielle Verarbeitungseinheit. Somit wird von einem zentral
durch das VLIW vorgegebenen Programmablauf ohne eine Veränderung
des Steuerablaufs in der Programmablaufsteuerung abgewichen.
-
Dies
ist möglich,
durch die Trennung der Flag-Auswertung und der Programmflussteuerung durch
die Programmablaufsteuerung. Im Stand der Technik wird diese Flag-Auswertung
in einer Programmablaufsteuerung selbst oder einer mit dieser steuernd
in Verbindung stehenden Auswerteeinheit durchgeführt. Eine getrennte Flag-Auswertungseinheit,
welche erfindungsgemäß durch
die Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung
realisiert ist, ist in der Lage, datenabhängig Erweiterungen zu den durch
das VLIW vorgegebenen Befehlswortteilen zu erzeugen. Diese Befehlswortteilerweiterungen
werden von der Baugruppe zu den einzelnen Verarbeitungseinheiten
in den Streifen über
Steuerleitungen übertragen
und führen
beispielsweise zu einer Auswahl von Eingangsdaten für eine Rechenoperation
in einer Verarbeitungseinheit. Somit ist es möglich, dass für eine Additionsoperation nicht
die Eingangsdaten genutzt werden, welche von dem zu der jeweiligen
Verarbeitungseinheit zugehörigen
Befehlswortteil des VLIW vorgegeben wurden, sondern diejenigen die
durch die zugehörige
Befehlswortteilerweiterung bestimmt werden.
-
Durch
die Auswertung der Statussignale durch die erfindungsgemäße Baugruppe
kann ein oder mehrere Streifen des parallelen Prozessors zu oder
abgeschaltet werden. Es können
aber auch Verarbeitungseinheiten in den Streifen zu oder abgeschaltet
werden oder der Operationscode der Verarbeitungseinheit geändert werden.
Eine weitere Möglichkeit
besteht in der statussignalabhängigen
Auswahl der zu verarbeitenden Eingangdaten einer Verarbeitungseinheit.
-
In
einer Ausgestaltung der Erfindung ist vorgesehen, dass eine Verarbeitungseinheit
aus mindestens einem Eingangs- und mindestens einem Ausgangsregister
besteht, wobei jedem Eingangsregister eine Auswahlschaltung zur
Auswahl einer Eingangsquelle, gesteuert durch ein Auswahlsignal,
vorgeschaltet ist.
-
Jede
Verarbeitungseinheit weist mehrere Eingangs- und/oder Ausgangsregister
auf. In den Eingangsregistern können
mehrere zu verarbeitende Eingangsdaten gespeichert werden, bevor
sie durch die Verarbeitungseinheit verarbeitet werden. In den Ausgangsregistern
können
mehrere Ergebnisse von durchgeführten
Operationen der Verarbeitungseinheit gespeichert werden. Innerhalb
eines Streifens sind die Verarbeitungseinheiten anwendungsspezifisch
miteinander verbunden. So kann beispielsweise das erste Ausgangsregister
einer ersten Verarbeitungseinheit mit einem ersten Eingangsregister
einer zweiten Verarbeitungseinheit, das zweite Ausgangsregister
einer ersten Verarbeitungseinheit mit einem ersten Eingangsregister
einer dritten Verarbeitungseinheit usw. verbunden sein.
-
Jedem
Eingangsregister einer Verarbeitungseinheit ist eine Auswahlschaltung
mit mehreren Eingängen
vorgeschaltet. Mittels dieser zwischengeschalteten Auswahlschaltung
ist es möglich,
die oben beschriebene feste Verdrahtung der Verarbeitungseinheiten
untereinander in eine statussignalabhängige, durch die Baugruppe
gesteuerte zu verändern.
In Abhängigkeit
der Statussignalauswertung wird die Auswahlschaltung durch die erfindungsgemäße Baugruppe über eine
Steuerleitung gesteuert und somit die gewünschte Eingangsdatenquelle
ausgewählt.
-
Gemäß der Erfindung
wird die Aufgabe bei einem Verfahren zur datenflussabhängigen Programmablaufsteuerung
in einem SIMD-Prozessor
der eingangs genannten Art dadurch gelöst, dass in Abhängigkeit
der Zustandssignale einer oder mehrerer Verarbeitungseinheiten ein
Teil des zu einer ersten Verarbeitungseinheit zugehörigen ersten
Befehlswortteils verändert
wird und mit diesem zumindest teilweise veränderten Befehlswortteil der
Programmablauf in dieser ersten Verarbeitungseinheit gesteuert wird.
-
Durch
die Programmablaufsteuerung wird ein aus dem Befehlsspeicher geholtes
und dekomprimiertes langes Datenwort (VLIW), welches aus mehreren
Befehlswortteilen besteht erzeugt. Ein erster Befehlswortteil steuert
beispielsweise eine erste und weitere Verarbeitungseinheiten in
einem ersten und weiteren Streifen. Durch das erfindungsgemäße Verfahren
wird in Abhängigkeit
der Statussignale der Verarbeitungseinheiten dieser erste Befehlswortteil zumindest
teilweise verändert.
Der veränderte
Befehlswortteil wird zur Steuerung des Programmablaufs der ersten
und der weiteren Verarbeitungseinheiten verwendet.
-
In
einer weiteren Ausgestaltung der Erfindung ist vorgesehen, dass
der Befehlswortteil durch eine Ersetzen einer oder mehrerer Bitstellen
oder durch ein Hinzufügen
einer oder mehrerer Bitstellen verändert wird.
-
Ein
Befehlswortteil eines VLIW setzt sich aus einer bestimmten Anzahl
von Bitstellen zusammen. Durch das erfindungsgemäße verfahren wird der Befehlswortteil
zumindest teilweise verändert.
Dies kann beispielsweise durch ein Ersetzen der niederwertigsten
oder speziell ausgewählter
n-Bitstellen erfolgen. Eine weitere Möglichkeit der Veränderung
eines Befehlswortteils besteht im Hinzufügen von n-Bitstellen zu dem
ursprünglichen
Befehlswortteil.
-
Die
Erfindung soll nachfolgend anhand eines Ausführungsbeispiels näher erläutert werden.
In den zugehörigen
Zeichnungen zeigt
-
1 einen
SIMD-Prozessor mit der erfindungsgemäßen Baugruppe zur internen
datenflussabhängigen
Befehlswortteilerweiterung und
-
2 eine
Verarbeitungseinheit mit Eingangsregistern, Ausgangsregistern und
Auswahlschaltungen.
-
1 zeigt
den Aufbau einer erfindungsgemäßen Schaltungsanordnung.
Die Darstellung enthält
nur die für
die Erfindung wesentlichen Baugruppen des betrachteten SIMD-Prozessors 1.
Dargestellt ist der die abzuarbeitenden Befehle beinhaltende Befehlsspeicher 2,
welcher ein Teil des gesamten zur Prozessoranordnung zugehörigen Speichers oder
eine eigenständige
Speichereinheit ist. Der Befehlsspeicher 2 ist über einen
Bus mit einem Befehlsdekoder 3 verbunden. Dieser erzeugt,
beispielsweise durch einen Dekomprimierungsvorgang, ein aus mehreren
Befehlswortteilen bestehendes langes Befehlswort 4, das
so genannte VLIW (Very Long Instruction Word). Das VLIW 4 besteht
beispielsweise aus einem ersten Befehlswortteil a, einem zweiten Befehlswortteil
b usw. bis hin zu einem n-ten Befehlswortteil 4n. Mittels
dieses VLIW 4 werden die in den Streifen 5 des
SIMD-Prozessors 1 angeordneten Verarbeitungseinheiten 6 zeitgleich
gesteuert, indem beispielsweise eine erste Verarbeitungseinheit
a eines ersten Streifens 5a mit dem für diese erste Verarbeitungseinheit
a bestimmten ersten Befehlswortteil a des VLIW 4 und zeitgleich
eine erste Verarbeitungseinheit a eines zweiten Streifens 5b mit
dem gleichen ersten Befehlswortteil a gesteuert wird. Ebenfalls
zeitgleich wird die Verarbeitung von weiteren Eingangsdaten durch
einen zweiten Befehlswortteil b beispielsweise in einer zweiten
Verarbeitungseinheit b des ersten Streifens 5a und in einer
weiteren zweiten Verarbeitungseinheit b eines anderen Streifen,
beispielsweise im Streifen 5b, gesteuert.
-
Die
Streifen 5 sind über
einen Datenbus 10 mit einem dem Streifen 5 zugeordneten
Abschnitt eines Datenspeichers 11 verbunden. Dieser Datenspeicher 11 kann
zu verarbeitende Daten für
die Verarbeitungseinheiten 6 speichern, welche vor der
eigentlichen Verarbeitung durch die Verarbeitungseinheiten 6 zu
diesen übertragen
werden. Die im Ergebnis der Datenverarbeitung durch die Verarbeitungseinheiten 6 entstehenden
Ergebnisse können
nachfolgend über
den Datenbus 10 übertragen
und im Datenspeicher 11 gespeichert werden.
-
Die
Verarbeitungseinheiten 6 sind untereinander anwendungsspezifisch
verdrahtet. Das heißt, je
nach der zu erfüllenden
Aufgabe des SIMD-Prozessors wird vom Entwickler festgelegt, welche
Eingangs- und/oder Ausgangsregister einer ersten Verarbeitungseinheit
a mit welchen Eingangs- und/oder Ausgangsregister einer anderen
Verarbeitungseinheit 6 oder einem der vorhandenen Bussysteme
verbunden werden sollen. Somit kann der Prozessor auf die spezielle
Anwendung, beispielsweise die parallele Dekodierung von OFDM-Signalen
in einem Empfänger,
optimiert werden.
-
Erfindungsgemäß ist die
SIMD-Prozessor-Anordnung 1 in der 1 um eine
Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung 7 erweitert.
Dabei sind die Verarbeitungseinheiten 6 aller Streifen 5 mit
der Baugruppe 7 zur Übermittelung
eines oder mehrerer Statussignale (Flags) der Verarbeitungseinheiten 6 über die
Statussignalleitungen 8 verbunden. Weiterhin ist die Baugruppe 7 mit
allen Verarbeitungseinheiten 6 zur Übertragung einer zu einer Verarbeitungseinheit 6 zugeordneten
erzeugten Befehlswortteilerweiterung über Steuerleitungen 9 verbunden.
-
Somit
ist es möglich,
Statussignale, welche durch die Befehlsabarbeitung in jeder Verarbeitungseinheit 6 entstehen,
an die Baugruppe zur internen datenflussabhängigen Befehlswortteilerweiterung 7 zu übertragen.
Diese Statussignale, welche beispielsweise ein Zero-Flag, ein Carry-Flag
oder ein Halfcarry-Flag und andere sein können, werden durch die Baugruppe 7 gleichzeitig
oder nacheinander ausgewertet. Die Art der Auswertung kann durch eine
an die Baugruppe 7 vom Befehlsdekoder 3 übergebene
Teilinstruktion festgelegt werden. So kann beispielsweise ein Vergleich
mit einem Vorgabewert durchgeführt
werden. In Abhängigkeit
des Ergebnisses der Auswertung durch die Baugruppe 7 wird
für eine
oder mehrere Verarbeitungseinheiten 6 eine Befehlswortteilerweiterung
generiert. Diese zu einer Verarbeitungseinheit 6 zugehörige Befehlswortteilerweiterung
wird über
eine zugehörige
Steuerleitung 9 zur Verarbeitungseinheit 6 übertragen
und steuert die Verarbeitung der Daten somit ereignisabhängig.
-
2 zeigt
eine Verarbeitungseinheit 6 mit mehreren Eingangsregistern
IN0, IN1 bis INn 12 und mehreren Ausgangsregistern
OUT0, OUT1 bis OUTn. 13. Jedem Eingangsregister IN
ist eine Auswahleinheit 14 vorgeschaltet. Die Eingänge der
Auswahleinheit 14 sind mit verschiedenen Eingangsdatenquellen 15 verbunden.
Derartige Quellen können
beispielsweise Ausgangsregister 13 anderer Verarbeitungseinheiten 6 oder
Speicherbaugruppen sein. Die Auswahleinheiten 14 sind über die
Steuerleitungen 9 mit der Baugruppe 7 verbunden.
Somit wird, gesteuert durch die zugehörige Befehlswortteilerweiterung, eine
der verfügbaren
Eingangsdatenquellen 15 ausgewählt und die Daten dieser Quelle
in das Eingangsregister 12 geschrieben. Diese Daten können durch
die Verarbeitungseinheit 6 einer Verarbeitung unterzogen
werden. Dabei können
Daten aus einem oder mehreren Eingangsregistern 12 zur
Verarbeitung ausgewählt
werden. Die Verarbeitungseinheit 6 kann beispielsweise
zur Durchführung
arithmetischer und logischer Operationen eine ALU (Arithmetik-Logik-Einheit) 16 enthalten.
-
Daten
aus nur einem Eingangsregister 12 werden benötigt, wenn
der Inhalt von IN0 zum Akku-Inhalt der Verarbeitungseinheit 6 addiert
wird. Daten aus zwei Eingangsregistern 12 werden beispielsweise
bei einer Additionsoperation von IN0 und
IN1 oder einer Vergleichsoperation zwischen
IN0 und IN1 benötigt.
-
Welches
oder welche Eingangsregister 12 für die entsprechende Verarbeitung
verwendet werden, wird durch einen Befehlswortteil des VLIW selbst
oder eine erzeugte Befehlwortteilerweiterung bestimmt.
-
Weite
Ausgestaltungen der Verarbeitungseinheit 6 bestehen in
den nachfolgend beschriebenen Kombinationen. Ein Verarbeitungseinheit 6 enthält kein
oder nur ein Eingangsregister 12 oder die Verarbeitungseinheit 6 enthält nur ein
Ausgangsregister zur Speicherung eines Rechenergebnisses.
-
Ebenso
wie einem Eingangsregister 12 der Verarbeitungseinheit 6 eine
Auswahleinheit 14 vorgeschaltet ist kann einem oder mehreren
Ausgangsregistern 13 eine Auswahleinheit 14 nachgeschaltet sein.
Die Eingangsquellen 15 dieser Auswahleinheit 14 sind
dann ein oder mehrere Ausgangsregistern 13 der gleichen
oder verschiedener Verarbeitungseinheiten 6.
-
Ein
erstes Anwendungsbeispiel der erfindungsgemäßen Anordnung und des Verfahrens
ist das Detektieren von Symbolen bei einer OFDM-Datenübertragung.
-
Dabei
wird die Amplitude des Eingangssignals mit einer Referenzschwelle
verglichen und je nachdem welche Referenzschwelle über oder
unterschritten wurde, eine binäre
Kodierung durchgeführt. Bei
dem beschriebenen Beispielsystem kann dies ohne ein so genanntes
Wenn-dann-Konstrukt durchgeführt
werden. In jedem Streifen kann so individuell eine andere Kodierung
durchgeführt
werden, ohne den Programmfluss des SIMD-Prozessors generell verändern zu
müssen.
-
Es
wird angenommen, dass eine Verarbeitungseinheit 6 in jedem
Streifen 5 eine Vergleichsoperation durchführen soll.
Das Ergebnis dieser Vergleichsoperationen wird über die jeweiligen Statussignalleitungen 8 der
Verarbeitungseinheiten 6 der Streifen 5 an die
Baugruppe 7 übergeben.
Die Statussignale werden von der Baugruppe 7 beispielsweise
durch einen Vergleich mit einem Vorgabewert verglichen. Das Ergebnis
dieses Vergleichs beeinflusst die Erzeugung der Befehlswortteilerweiterung durch
die Baugruppe 7.
-
Die
Baugruppe 7 generiert somit in Abhängig von den Statussignalen
der Statusignalleitungen 8 eine individuelle Instruktion
für eine
oder mehrere Verarbeitungseinheiten 6 in einem oder mehreren Streifen 5.
Gesteuert durch eine derart erzeugte Befehlswortteilerweiterung
wird durch die Auswahleinheit 14 einer Verarbeitungseinheit 6 je
nach Zustand der aktuellen Statussignale eine der Eingangsdatenquellen 15 auswählen.
-
Ein
zweites Ausführungsbeispiel
bezieht sich auf eine Berechung mit Festkommazahlen. Hierbei kann
eine numerische Präzision
nur dann sichergestellt werden, wenn der komplette Wertebereich
ausgenutzt werden kann und es zu keinem Überlauf kommt. Die Werte sollten
daher immer innerhalb eines bestimmten Wertebereichs liegen. Daher
ist eine datenabhängige
Re-Skalierung dieses Wertenbereichs notwendig. Zu diesem Zweck werden
die Eingangsdaten über
ein Schieberegister um eine Stelle verschoben und somit dividiert
oder multipliziert.
-
Die
aktuellen Eingangsdaten müssen
bei einem derartigen Berechnungsverfahren ständig überwacht werden. Mit Hilfe
der Baugruppe 7 ist dies auch für eine parallele Verarbeitung
innerhalb eines SIMD-Prozessors möglich. Dazu überprüft eine der Verarbeitungseinheit 6 jedes
Streifens 5 in jedem Takt, ob die Eingangsdaten in dem
bevorzugten Wertebereich liegen. Die Ergebnisse dieser Auswertungen
durch die Verarbeitungseinheiten 6 werden über die
Statussignalleitungen 8 an die Baugruppe 7 übertragen.
Durch die Baugruppe 7 wird eine Über- oder Unterschreitung des
vorgegebenen Wertebereichs erkannt und der Skalierungsfaktor für eine,
mehrere oder alle Verarbeitungseinheiten 6 verändert, indem eine
Befehlswortteilerweiterung je Verarbeitungseinheit 6 erzeugt
und über
die Steuerleitungen 9 an die jeweilige Verarbeitungseinheit 6 übergeben
wird.
-
- 1
- SIMD-Prozessors
- 2
- Befehlsspeicher
- 3
- Programmablaufsteuerung/Befehlsdekoder
- 4
- VLIW – langes
Befehlswort a erster Befehlswortteil b zweiter Befehlswortteil n
n-ter Befehlswortteil
- 5
- Streifen
a erster Streifen b zweiter Streifen
- 6
- Verarbeitungseinheiten
a erste Verarbeitungseinheit b zweite Verarbeitungseinheit
- 7
- Baugruppe
zur internen datenflussabhängigen Befehlswortteilerweiterung
- 8
- Statussignalleitung
- 9
- Steuerleitungen
- 10
- Datenbus
- 11
- Datenspeicher
- 12
- Eingangsregister
- 13
- Ausgangsregister
- 14
- Auswahleinheit
- 15
- Eingangsdatenquellen
- 16
- ALU