-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein Prozessoren mit Instruction
Set Architectures (ISA). Im Besonderen betrifft die vorliegende
Erfindung Operanden-Datentypen für
digitale Signalprozessoren.
-
STAND DER
TECHNIK
-
Zur
Verarbeitung von Daten in einer Rechenvorrichtung wird ein Befehlssatz
bzw. ein Befehlsvorrat definiert. Ein Befehlssatz mit einem oder
mehreren Befehlen ist für
Rechenvorrichtungen wie Mikroprozessoren, Computer oder Ein-Chip-DSP-Vorrichtungen
erforderlich. Bei der Festlegung eines Befehlssatzes für eine Rechenvorrichtung
wird für
gewöhnlich
vorab der Datentyp der berechneten Operanden auf der Basis der zu
verwendenden numerischen Darstellung definiert sowie dem Typ der
bereitgestellten Hardware. Der Datentyp der Instruction Set Architektur
(ISA) wird im Wesentlichen dadurch definiert, wie und welchen Typ
numerischer Daten die Rechenvorrichtung verarbeitet.
-
Die
für Datentypen
verwendete numerische Darstellung weist die Basis einer Zahl auf,
ob sie codiert wird oder nicht (binär codiert, wie zum Beispiel binär codierte
Dezimalziffern) sowie das numerische Format Die normalerweise in
Computern eingesetzten Basen sind binär oder Basis zwei. Als andere
Basen können
in Computern eine oktale Basis (Basis acht), eine dezimale Basis
(Basis zehn) und eine hexadezimale Basis (Basis sechzehn) eingesetzt
werden. Wenn eine andere Basis als Basis zwei ausgewählt wird,
muss sie normalerweise binär
codiert sein, damit sie von einer digitalen Logik erkannt werden
kann. Wenn zum Beispiel eine Basis von 10 eingesetzt wird, so werden
die Zahlen unter Verwendung einer binären Zahl von vier Bit binär codiert,
wobei dies als binär
codierte Binärziffer
(BCD als englische Abkürzung
von Binary Coded Decimal) bezeichnet wird.
-
Das
numerische Format ist der Tatsache zugeordnet, ob die Zahl eine
Festpunkt- oder Gleitpunkt- bzw. Gleitkommadarstellung, ein ganzzahliges
oder ein gebrochenes Format und deren zugeordnete Darstellungen,
ein normalisiertes oder ein nicht normalisiertes Format aufweist
und ob die Bits, welche die Zahl darstellen, gepackt oder nicht
gepackt sind. Bei einer Gleitpunktdarstellung ist normalerweise
eine Exponentenzahl enthalten. Bei einer Festpunktdarstellung befindet
sich der Radix- bzw. Basispunkt (Dezimalpunkt für eine Basis von zehn) an einer
festen Position in Bezug auf die Bits oder Zahlen bzw. Ziffern der
Daten. Wenn sich der Radixpunkt auf der rechten Seite aller Zahlen
befindet, so handelt es sich um ein ganzzahliges Format. Wenn sich
der Radixpunkt links neben allen Zahlen bzw. Ziffern befindet, so
handelt es sich um ein Bruchzahlenformat. Ein Beispiel für die Gleitpunkt-Datentypen sind
Gleitpunkt-Datentypen mit einfacher Genauigkeit und mit doppelter
Genauigkeit gemäß der Definition
in der Norm IEEE 754.
-
Die
normalisierten und nicht normalisierten Formate sind spezifisch
für Gleitkommadarstellungen
und ein Bruchzahlenformat. Wenn eine Zahl normalisiert werden soll,
wird die Zahl in einem Bruchzahlenformat dargestellt, und das Bit
unmittelbar rechts neben dem Radixpunkt ist eine Eins. Wenn es sich
um ein nicht normalisiertes Format handelt, soll die Zahl in Bruchzahlenformat
dargestellt werden, und das Bit unmittelbar rechts neben dem Radixpunkt
kann eine Eins oder eine Null sein.
-
Wenn
die zu verarbeitenden Zahlen positiv oder negativ sein können, so
muss die numerische Darstellung ein Codierungsmuster aufweisen,
um die Darstellung sowohl von positiven als auch von negativen Werten
vorzusehen. Kennzeichnende Codierverfahren für ganzzahlige Formate sind
Sign/Magnitude, B-Minus-Eins-Komplement (Einserkomplement für binär oder eine
Basis von zwei) und B-Komplement (Zweierkomplement für binär oder eine
Basis von zwei). Wenn ein Gleitkommaformat eingesetzt wird, können sowohl
die Mantisse als auch der Exponent ähnlich wie bei den ganzzahligen
Codierungsverfahren codiert werden. Abhängig von dem gewünschten
Wertebereich und/oder der gewünschten Genauigkeit
muss ferner auch die Anzahl an Bits (d.h. Stellen), Bytes und Wörtern berücksichtigt
werden. Zum Beispiel kann die Anzahl der Bits, die eine Zahl darstellen,
fest auf einen Wert von zweiunddreißig Bit oder vier Bytes mit
acht Bit festgelegt werden. Als ein weiteres Beispiel kann es sich
bei der eine Zahl darstellenden Anzahl von Bits um zweiunddreißig Bits
für das
Bruchzahlenformat bzw. Mantissenformat und um drei Bits für den Exponent
handeln.
-
Neben
einer numerischen Darstellung kann der Datentyp einer Befehlsvorratarchitektur
auch Zeichenfolgen oder den Datentyp Text aufweisen. Die Zeichen
werden in diesem Fall binär
codiert, wie etwa der American Standard Code for Information Interchange
(ASCII). Eine weitere Form der Codierung ist Extended Binary Coded
Decimal Interchange Code (EBCDIC). Diese codierten Formate können auch aus
ihren binären
Formen in eine gepackte dezimale Form gepackt werden, um die Anzahl
der erforderlichen Bits für
deren Darstellung zu reduzieren.
-
Der
Datentyp für
eine Instruction Set Architecture eines digitalen Signalprozessors
(DSP) ist bedeutend. DSPs unterscheiden sich allgemein von universellen
Mikroprozessoren dadurch, dass DSPs für gewöhnlich beschleunigte Rechenoperationen unterstützen, indem
ein dedizierter Multiplizierer und Akkumulator (MAC) zur Ausführung einer Multiplikation
digitaler Zahlen vorgesehen wird. Der Befehlssatz für eine kennzeichnende
DSP-Vorrichtung weist für
gewöhnlich
nur einen DSP-Befehl auf, einen MAC-Befehl, zur Ausführung einer
Multiplikation neuer Operanden und zur Addition mit einem vorher
akkumulierten Wert, der in einem Akkumulatorregister gespeichert
ist. Der Datentyp für
die Operanden des MAC-Befehls bei dem Stand der Technik entsprechenden
DSP-Vorrichtungen ist für
gewöhnlich
unabhängig
von der Multiplizierer-Hardware, die ihren Teil der MAC-Operation ausführt. Für gewöhnlich ist
der Datentyp für
DSP feststehend. Wenn es wünschenswert
ist, eine MAC-Operation an Operanden von Daten mit einem Format
auszuführen,
das nicht dem Datentyp entspricht, müssen weitere Befehle ausgeführt werden,
um die Daten zu formatieren, so dass diese durch den gegebenen MAC-Befehl
mit dem gegebenen Datentyp verarbeitet werden können. Diese weiteren Befehle
können
das Lesen aus einem Speicher und das Schreiben von Daten in einen
Speicher aufweisen, um die entsprechenden Bits der Daten des Operanden
auszuwählen,
an denen der MAC-Befehl ausgeführt
werden soll.
-
Telekommunikationssysteme
stellen einen Bereich dar, in dem DSPs eingesetzt werden können. Ein
Einsatz von DSPs in Telekommunikationssystemen ist das digitale
Filtern. In diesem Fall wird ein DSP für gewöhnlich mit Befehlen programmiert,
um bestimmte Filterfunktionen in dem digitalen Bereich oder dem
Zeitbereich zu implementieren. Der mathematische Algorithmus für einen
kennzeichnenden Filter mit begrenztem Ansprechverhalten auf einen
Impuls (FIR) kann das Bild er Gleichung Yn =
h0X0 + h1X1 + h2X2 + ... + hNXN aufweisen, wobei hN feste
Filterkoeffizienten darstellt, die von 1 bis N nummeriert sind, und
wobei XN die Datenabtastwerte darstellt.
Die Gleichung Yn kann unter Verwendung eines
Softwareprogramms evaluiert werden. Bei bestimmten Anwendungen ist
es jedoch erforderlich, dass die Gleichung so schnell wie möglich evaluiert
wird. Eine Möglichkeit
dafür ist
das Ausführen
von Berechnungen unter Verwendung von Hardwarekomponenten, wie etwa
einer DSP-Vorrichtung, die so programmiert ist, dass sie die Gleichung
Yn berechnet. Zur Beschleunigung des Verfahrens
ist es wünschenswert, die
Gleichung zu vektorisieren und die Berechnung auf mehrere DSPs aufzuteilen,
so dass das Endergebnis schneller erhalten wird. Die Mehrzahl von DSPs
arbeitet parallel, um den Berechnungsvorgang zu beschleunigen. In
diesem Fall ist die Multiplikation der Terme auf die Multiplizierer
der DSPs gleichermaßen
verteilt, um die Terme gleichzeitig zu berechnen. Das Addieren von
Termen wird ebenfalls gleichermaßen auf die Addierer der DSPs
verteilt, um gleichzeitig Berechnungen auszuführen. Bei der vektorisierten Verarbeitung
ist die Reihenfolge der Verarbeitung der Terme nicht von Bedeutung,
da die Kombination assoziativ ist. Wenn die Reihenfolge der Verarbeitung der
Terme verändert
wird, so hat dies keine Auswirkung auf das erwartete Endergebnis
der vektorisierten Verarbeitung einer Funktion. In einer DSP-Vorrichtung, die
an die Ausführung
der vektorisierten Verarbeitung gewöhnt ist, ist es wünschenswert,
die Art bzw. den Typ der vektorisierten Verarbeitung innerhalb des
Datentyps der Befehlsgruppenarchitektur zu berücksichtigen, um die Datenverarbeitungseffizienz
zu verbessern.
-
Häufig variiert
die Art des in Kommunikationssystemen eingesetzten Filterns. Die
verschiedenartigen Filtersysteme können verschiedenartige Operanden
und Filterkoeffizienten verwenden. In
US5023826 wird
ein bekannter Prozessor zur Ausführung
arithmetischer Berechnungen an Operanden mit variabler Länge offenbart.
In diesen Fällen
ist es wünschenswert
die Flexibilität
in Bezug auf die Art der Verarbeitung unterschiedlicher Operanden
durch DSP-Befehle zu besitzen. Ferner ist es wünschenswert, die Effizienz
des Einsatzes von Rechenressourcen zu verbessern, um die Ausführung von
DSP-Befehlen zu beschleunigen.
-
KURZE ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung ist in den Ansprüchen kurz zusammengefasst und
weist ein Verfahren und eine Vorrichtung gemäß der Beschreibung hierin auf.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Es
zeigen:
-
1A ein
Blockdiagramm eines Systems, das die vorliegende Erfindung verwendet;
-
1B ein
Blockdiagramm einer gedruckten Leiterplatte unter Verwendung der
vorliegenden Erfindung innerhalb der Gateways des Systems aus 1A;
-
2 ein
Blockdiagramm eines anwendungsspezifischen Signalprozessors (ASSP
als englische Abkürzung
von Application Specific Signal Processor) gemäß der vorliegenden Erfindung;
-
3 ein
Blockdiagramm einer Instanz der Kernprozessoren innerhalb des RSSP
gemäß der vorliegenden
Erfindung;
-
4 ein
Blockdiagramm einer RISC-Verarbeitungseinheit innerhalb der Kernprozessoren
aus 3;
-
5A ein
Blockdiagramm einer Instanz der Signalverarbeitungseinheiten innerhalb
der Kernprozessoren aus 3;
-
5B ein
detaillierteres Blockdiagramm aus 5A der
Busstruktur der Signalverarbeitungseinheit;
-
6 ein
allgemeines Datentypformat für
einen Operanden der Befehlsgruppenarchitektur gemäß der vorliegenden
Erfindung;
-
7 eine
beispielhafte Bitmap für
ein Steuerregister, das die Datentypisierung und Permutation von
Operanden veranschaulicht;
-
8 ein
beispielhaftes Diagramm der möglichen
Datentypen von Operanden, die ausgewählt werden können;
-
9 ein
beispielhaftes Diagramm möglicher
Permutationen von Operanden und deren entsprechende Ausrichtung
zu den Signalverarbeitungseinheiten;
-
10 ein
Blockdiagramm eines Blockdiagramms einer Datentypisierungs- und
Ausrichtungseinheit jeder Signalverarbeitungseinheit aus 3;
-
11 ein
Blockdiagramm der Bus-Multiplexer in der Datentypisierungs- und
Ausrichtungseinheit jeder Signalverarbeitungseinheit aus 10;
-
12A ein Diagramm der realen Datentypen und deren
Ausrichtung für
die Addierer der Signalverarbeitungseinheiten;
-
12B ein Diagramm realer Datentypen und deren Ausrichtung
für die
Multiplizierer der Signalverarbeitungseinheiten;
-
12C ein erstes Diagramm komplexer Datentypen und
deren Ausrichtung für
die Addierer der Signalverarbeitungseinheiten;
-
12D ein zweites Diagramm komplexer Datentypen
und deren Ausrichtung für
die Addierer der Signalverarbeitungseinheiten;
-
12E ein Diagramm komplexer Datentypen und deren
Ausrichtung für
die Multiplizierer der Signalverarbeitungseinheiten;
-
12F ein zweites Diagramm komplexer Datentypen
und deren Ausrichtung für
die Multiplizierer der Signalverarbeitungseinheiten;
-
13A ein Diagramm des Datentypabgleichs für ein reales
Paar von Operanden;
-
13B ein Diagramm des Datentypabgleichs für ein komplexes
Paar von Operanden;
-
13C ein Diagramm des Datentypabgleichs für einen
realen Operanden und einen komplexen Operanden;
-
14 ein
beispielhaftes Diagramm des Datentypabgleichs für die Multiplizierer der Signalverarbeitungseinheiten;
-
15A ein beispielhaftes Diagramm des Datentypabgleichs
für die
Addierer der Signalverarbeitungseinheiten für die skalare Addition;
-
15B ein beispielhaftes Diagramm des Datentypabgleichs
für die
Addierer der Signalverarbeitungseinheiten für die Vektoraddition; und
-
16 ein
Blockdiagramm der Steuerung der in der Datentypisierungseinrichtung
und der Ausrichtungseinrichtung jeder Signalverarbeitungseinheit
enthaltenen Bus-Multiplexer.
-
Übereinstimmende
Referenznummern und Bezeichnungen in den Zeichnungen bezeichnen übereinstimmende
Elemente mit übereinstimmender Funktionalität. Ein Buchstabe
nach deiner Referenzbezeichnernummer steht für eine Instanz eines Elements
mit der Referenzbezeichnernummer.
-
GENAUE BESCHREIBUNG
DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
-
In
der folgenden genauen Beschreibung der vorliegenden Erfindung sind
zahlreiche besondere Einzelheiten ausgeführt, um ein umfassendes Verständnis der
vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet
ist es jedoch offensichtlich, dass die vorliegende Erfindung auch ohne
diese besonderen Einzelheiten ausgeführt werden kann. In anderen
Fällen
wurde auf die genaue Beschreibung allgemein bekannter Verfahren,
Prozeduren, Komponenten und Schaltungen verzichtet, um die Aspekte
der vorliegenden Erfindung nicht unnötig zu verschleiern. Die vorliegende
Erfindung wird in bestimmten Ausführungsbeispielen beschrieben, wobei
sie jedoch auch in Hardware, Software, Firmware oder Kombinationen
dieser implementiert werden kann.
-
Eine
Mehrzahl von anwendungsspezifischen Signalprozessoren (ASSPs) mit
der Befehlsgruppenarchitektur gemäß der vorliegenden Erfindung
weisen flexible Datentypisierung, Permutation und Typenabgleich
der Operanden auf. Die flexible Datentypisierung, Permutation und
Typenabgleichung der Operanden sorgt für eine Programmierungsflexibilität zur Unterstützung verschiedener
Filter- und DSP-Algorithmen mit unterschiedenen Typen von Filterkoeffizienten
oder Datenabtastwerten. Die Flexibilität zur Unterstützung verschiedener
DSP-Algorithmen innerhalb der Gateways von Kommunikationssystemen
kann eine verbesserte Sprach- und Datenübertragung über ein paketisiertes Netzwerk
bereitstellen. Jeder ASSP weist eine serielle Schnittstelle, einen Pufferspeicher
und vier Kernprozessoren auf, um gleichzeitig mehrere Kanäle von Sprache
oder Daten zu verarbeiten. Jeder Kernprozessor weist vorzugsweise
einen RISC-Prozessor (RISC als englische Abkürzung von Reduced Instruction
Set Computer, auf Deutsch, Rechner mit reduziertem Befehlsvorrat) und
vier Signalverarbeitungseinheiten (SPs) auf. Jede SP weist mehrere
Rechenblöcke
auf, um gleichzeitig mehrere Sprach- und Datenkommunikationssignalabtastwerte
zur Übertragung
bzw. Kommunikation über
IP, ATM, Frame Relay oder ein anderes paketisiertes Netzwerk zu
verarbeiten. Die vier Signalverarbeitungseinheiten können digitale
Signalverarbeitungsalgorithmen parallel ausführen. Jeder ASSP ist flexibel
und kann so programmiert werden, dass er eine Mehrzahl von Netzwerkfunktionen
oder Daten-/Sprachverarbeitungsfunktionen
ausführt,
einschließlich
Sprach- und Datenkomprimierung/-Dekomprimierung in Telekommunikationsnetzen
(wie z.B. CODECs), einfach durch Veränderung der Softwareprogrammsteuerung
der durch den ASSP ausgeführten
Befehle.
-
Eine
Befehlsvorratarchitektur für
den ASSP ist auf Anwendungen der digitalen Signalverarbeitung zugeschnitten,
einschließlich
der Audio- und Sprachverarbeitung wie etwa zur Komprimierung/Dekomprimierung
und der Echokompensation. Die in Verbindung mit dem ASSP implementierte
Befehlsvorratarchitektur eignet sich für algorithmische DSP-Strukturen. Diese
Adaption der erfindungsgemäßen ISA
auf algorithmische DSP-Strukturen gleicht die einfache Implementierung,
die Verarbeitungseffizienz und die Programmierbarkeit von DSP-Algorithmen
aus. Die Befehlsvorratarchitektur kann als zwei Komponenten betrachtet
werden, wobei eine (RIS ISA) der RISC-Steuereinheit entspricht und
die andere (DSP ISA) den DSP-Datenpfaden der Signalverarbeitungseinheiten 300.
Die RISC ISA ist eine Architektur auf Registerbasis mit 16 Registern innerhalb
der Registerdatei 413, während es sich bei der DSP ISA
um eine Architektur auf Speicherbasis handelt, mit effizienten digitalen
Signalverarbeitungsbefehlen. Das Befehlswort für den ASSP entspricht für gewöhnlich 20
Bits, wobei es jedoch auch auf 40 Bits erweitert werden kann, um
zwei nacheinander oder parallel auszuführende Befehle zu steuern,
wie zum Beispiel zwei RISC-Steuerbefehle und erweiterte DSP-Befehle.
Die Befehlsvorratarchitektur des ASSP weist vier unterschiedliche
Befehlsarten auf, um das operative Mix des DSP zu optimieren. Dabei handelt
es sich um (1) einen 20-Bit-DSP-Befehl, der Modusbits in Steuerregistern
(d.h. Modusregistern) verwendet; (2) einen 40-Bit-DSP-Befehl mit
Steuerungserweiterungen, welche die Modusregister übergehen
können;
(3) einen 20-Bit-Dyaden-DSP-Befehl; und
(4) einen 40-Bit-Dyaden-DSP-Befehl. Diese Befehle dienen der Beschleunigung
von Berechnungen in dem Kernprozessor vom Typ mit D = [(A op1 B) op2
C], und wobei „op1" und „op2" jeweils eine Multiplikations-,
Additions- oder Extremwert-Operationsklasse (min/max) an den drei
Operanden A, B und C darstellen. Die ISA des ASSP, welche diese
Berechnungen beschleunigt, ermöglicht
eine effiziente Verkettung verschiedener Kombinationen von Operationen.
-
Alle
DSP-Befehle der Befehlsvorratarchitektur des ASSP stellen dyadische
DSP-Befehle zur Ausführung
von zwei Operationen in einem Befehl mit einem Zyklusdurchlauf dar.
Ein dyadischer DSP-Befehl ist eine Kombination aus zwei DSP-Befehlen
oder Operationen in einem Befehl und umfasst eine Haupt-DSP-Operation (HAUPT
OP) und eine Sub-DSP-Operation (SUB OP). Allgemein kann die Befehlsvorratarchitektur
gemäß der vorliegenden
Erfindung auf die Verknüpfung
jedes Paars von Basis-DSP-Operationen zur Bereitstellung sehr leistungsfähiger dyadischer
Befehlskombinationen generalisiert werden. Die DSP-Rechenoperationen
in dem bevorzugten Ausführungsbeispiel
weisen einen Multiplikationsbefehl (MULT), einen Additionsbefehl (ADD),
einen Minimierungs-/Maximierungsbefehl (MIN/MAX), auch als Extremwertbefehl
bezeichnet, und einen Befehl keine Operation (NOP) auf, die jeweils
einen zugeordneten Operationscode („Opcode") aufweisen.
-
Die
vorliegende Erfindung führt
diese dyadischen DSP-Befehle effizient durch die Befehlsvorratarchitektur
und die Hardwarearchitektur des anwendungsspezifischen Signalprozessors
aus.
-
In
nachstehendem Bezug auf die Abbildung aus 1A ist
ein Sprach- und Datenkommunikationssystem 100 dargestellt.
Das System 100 weist ein Netzwerk 101 auf, das
ein paketisiertes oder Paketvermittlungsnetzwerk bzw. -netz darstellt,
wie etwa IP, ATM oder Frame Relay. Das Netzwerk bzw. Netz 101 ermöglicht die
Kommunikation von Sprache und Daten zwischen Endpunkten in dem System 100 unter
Verwendung von Paketen. Bei den Daten kann es sich um jede Art von
Daten handeln, einschließlich Audio,
Video, E-Mail und anderen generischen Datenformen. An jedem Ende
des System 100 erfordern die Sprache oder die Daten eine
Paketisierung beim Senden bzw. Empfangen über das Netzwerk 101. Das
System 100 weist Gateways 104A, 104B und 104C zur
Paketisierung der zur Übertragung über das
Netzwerk 101 empfangenen Informationen auf. Ein Gateway
ist eine Vorrichtung zur Verbindung mehrerer Netze bzw. Netzwerke
und Vorrichtungen, die verschiedene Protokolle verwenden. Sprache- und
Dateninformationen können über eine
Reihe verschiedener Quellen in einer Vielzahl digitaler Formate
einem Gateway 104 bereitgestellt werden. In dem System 100 werden
analoge Sprachsignale von einem Telefon 108 gesendet und
empfangen. In dem System 100 werden digitale Sprachsignale
an Public Branch Exchanges (PBX) 112A und 112B gesendet und
empfangen, wobei die PBX mit mehreren Telefonen, Faxgeräten oder
Datenmodems verbunden sind. Digitale Sprachsignale werden zwischen
dem PBX 112A und dem PBX 112B mit den entsprechenden
Gateways 104A und 104C gesendet und empfangen.
Digitale Datensignale können
auch direkt zwischen einem digitalen Modem 114 und einem Gateway 104A gesendet
und empfangen werden. Bei dem digitalen Modem 114 kann
es sich um ein Modem für
einen digitalen Teilnehmeranschluss bzw. eine Digital Subscriber
Line (DSL) oder um ein Kabelmodem handeln. Datensignale können auch über ein kabelloses
Kommunikationssystem in das System 100 gekoppelt werden,
unter Verwendung einer mobilen Einheit 118, die digitale
Signale oder analoge Signale kabellos zu und von einer Basisstation 116 sendet
und empfängt.
Die Basistation 116 wandelt analoge Signale in digitale
Signale um oder leitet die digitalen Signale direkt zu einem Gateway 104B.
Die Daten können über Modemsignale über einfachen
alten Fernsprechdienst bzw. Plain Old Telephone System (POTS) 107B unter
Verwendung eines Modems 110 gesendet und empfangen werden.
Die über POTS 107B übertragenen
Modemsignale sind traditionell analoge Signale und werden in einen
Switch 106B des öffentlichen
Fernsprechwählnetzes
bzw. Public Switched Telephone Network (PSTN) gekoppelt. An dem
Switch 106B werden analoge Signale von dem POTS 107B digitalisiert
und zu dem Gateway 104B gesendet und empfangen, und zwar
durch Zeitmultiplexing bzw. Time Divison Multiplexing (TDM), wobei
jeder Zeitschlitz einen Kanal darstellt und einen DS0-Eingang in
den Gateway 104B. An jedem der Gateways 104A, 104B und 104C werden eingehende
Signale zur Übertragung über das
Netz 101 paketisiert. Die von den Gateways 104A, 104B und 104C empfangenen
Signale von dem Netz 101 werden entpackt und zur Verteilung
an den entsprechenden Bestimmungsort codeumgesetzt.
-
In
folgendem Bezug auf die Abbildung aus 1B ist
eine Netzwerkschnittstellenkarte (NIC) 130 eines Gateway 104 dargestellt.
Die NIC 130 weist einen oder mehrere anwendungsspezifische Signalprozessoren
(ASSPs) 150A–150N auf.
Die Anzahl der ASSPs in einem Gateway sind so erweiterbar, dass
sie zusätzliche
Kanäle
bearbeiten bzw. behandeln. Leitungsschnittstellenvorrichtungen 131 der NIC 130 sehen
Schnittstellen zu verschiedenen Vorrichtungen vor, die mit dem Gateway
verbunden sind, einschließlich
dem Netz 101.
-
Bei
der Schnittstellenverbindung mit dem Netz 101 paketisieren
die Leitungsschnittstellenvorrichtungen Daten für die Übertragung aus dem Netz 101,
und sie Entpacken Daten, die von den ASSP-Vorrichtungen empfangen
werden sollen. Die Leitungsschnittstellenvorrichtungen 131 verarbeiten von
dem Gateway an dem Empfangsbus 134 empfangene Daten und
stellen diese an die ASSP-Vorrichtungen bereit. Informationen von
den ASSP-Vorrichungen 150 werden über den Sendebus 132 zur Übertragung
aus dem Gateway übertragen.
Eine traditionelle Leitungsschnittstellenvorrichtung ist eine serielle
Mehrkanalschnittstelle oder eine UTOPIA-Vorrichtung. Die NIC 130 ist
mit einem Gateway-Backplane/Netzwerkschnittstellenbus 136 in dem
Gateway 104 gekoppelt. Die Brückenlogik 138 sendet
und empfängt
Informationen zwischen dem Bus 136 und der NIC 130.
Die Brückenlogik 138 sendet
und empfängt
Signale zwischen der NIC 130 und dem Backplane/Netzwerkschnittstellenbus 136 auf den
Host-Bus 139 zur Übertragung
entweder zu einer oder mehreren der ASSP-Vorrichtungen 150A bis 150N,
einem Host-Prozessor 140 oder
einem Host-Speicher 142. Optional ist bzw. sind mit jeder
einen oder der Mehrzahl von ASSP-Vorrichtungen 150A bis 150N (allgemein
als ASSP 150 bezeichnet) optionale lokale Speicher 145A bis 145N (allgemein bezeichnet
als optionaler lokaler Speicher 145) entsprechend gekoppelt.
Digitale Daten an dem Empfangsbus bzw. dem Empfängerbus 134 und dem Sendebus 132 werden
vorzugsweise Bit für
Bit übertragen.
Während
der interne Speicher in jedem ASSP ausreichend groß sein kann
für eine
Verwendung als Notizblockspeicher, kann der optionale lokale Speicher 145 von
jedem der ASSPs 150 verwendet werden, wenn zusätzlicher
Speicherraum benötigt
wird.
-
Jeder
der ASSPs 150 sieht eine Signalverarbeitungsfunktion für den Gateway
vor. Die Art der bereitgestellten Signalverarbeitung ist flexibel,
da jeder ASSP unterschiedliche Signalverarbeitungsprogramme ausführen kann.
-
Zu
den kennzeichnenden Signalverarbeitungs- und verwandten Sprachpaketisierungsfunktionen
für einen
ASSP zählen
(a) Echokompensation; (b) Video-, Audio- und Sprach-Komprimierung/Dekomprimierung
(Sprachcodierung- und -decodierung); (c) Verzögerungsbearbeitung (Pakete,
Frames); (d) Verlustbehandlung; (e) Konnektivität (LAN und WAN); (f) Sicherheit
(Verschlüsselung/Entschlüsselung);
(g) Telefonkonnektivität;
(h) Protokollverarbeitung (Reservierung und Transport von Protokollen,
RSVP, TCP/IP, RTP, UDP für
IP und AAL2, AAL1, AAL5 für
ATM); (i) Filtern; (j) Silence-Unterdrückung; (k)
Längenbehandlung
(Frames, Pakete); und andere digitale Signalverarbeitungsfunktionen,
die der Übertragung
von Sprache und Daten über
ein Kommunikationssystem zugeordnet sind. Jeder ASSP 150 kann
andere Funktionen ausführen,
um Sprache und Daten zu den verschiedenen End- bzw. Abschlusspunkten
des Systems 100 innerhalb eines Paketdatenstroms über ein
paketisiertes Netz bzw. Netzwerk zu übertragen.
-
In
folgendem Bezug auf 2 ist ein Blockdiagramm des
ASSP 150 veranschaulicht: Im Herzen des ASSP 150 befinden
sich vier Kernprozessoren 200A bis 200D. Jeder
der Kernprozessoren 200A bis 200D ist entsprechend über Busse 203A bis 203D mit
einem Datenspeicher 202A bis 202D gekoppelt. Jeder
der Kernprozessoren 200A bis 200D ist ferner entsprechend über Busse 205A bis 205D mit
einem Programmspeicher 204A bis 204D gekoppelt.
Jeder der Kernprozessoren 200A bis 200D kommuniziert mit
externen Kanälen über die
serielle Mehrkanalschnittstelle 206, das Mehrkanal-Speicherbewegungssystem 208,
den Pufferspeicher 210 und den Datenspeicher 202A bis 202D.
Der ASSP 150 weist ferner eine externe Speicherschnittstelle 212 zur Kopplung
mit dem optionalen externen lokalen Speicher 145 auf. Der
ASSP 150 weist eine externe Host-Schnittstelle 214 zur
Erfüllung
der Schnittstellenfunktion mit dem externen Host-Prozessor 140 aus 1B auf.
Ferner weist der ASSP 150 Timer 216, Taktgeneratoren
und einen Phasenregelkreis 21, eine sonstige Steuerlogik 220 und
einen Joint Test Action Group (JTAG) Testzugriffsport 222 für Grenzabtasttests
auf. Die serielle Mehrkanalschnittstelle 206 kann für bestimmte
Anwendungen wie etwa ATM durch eine parallele UTOPIA-Schnittstelle ersetzt
werden. Der ASSP 150 weist ferner einen Mikrocontroller 223 auf,
um das Verfahrens-Scheduling für
die Kernprozessoren 200A bis 200D und die Koordination
der Datenbewegung innerhalb des ASSP auszuführen, sowie eine Unterbrechungssteuereinheit 224 zur
Unterstützung
der Unterbrechungsbehandlung und der Steuerung des ASSP 150.
-
In
folgendem Bezug auf die Abbildung aus 3 ist ein
Blockdiagramm des Kernprozessors 200 dargestellt, der über die
Busse 203 und den Programmspeicher 204 über die
Busse 205 mit dem entsprechenden Datenspeicher 202 gekoppelt
ist. Der Kernprozessor 200 stellt das Blockdiagramm für jeden
der Kernprozessoren 200A bis 200D dar. Der Datenspeicher 202 und
der Programmspeicher 204 betreffen eine entsprechende Instanz
des Datenspeichers 202A bis 202D und einen entsprechenden
Programmspeicher 204A bis 204D. Die Busse 203 und 205 bezeichnen
eine entsprechende Instanz bzw. ein entsprechendes Vorkommen der
Busse 203A bis 203D und 205A bis 205D.
Der Kernzprozessor 200 weist vier Signalverarbeitungseinheiten
SP0 300A, SP1 300B, SP2 300C und SP3 300D auf.
Der Kernprozessor 200 weist ferner eine RISC-Steuereinheit (RISC
als englische Abkürzung
von Reduced Instruction Set Computer bzw. Computer mit begrenztem Befehlsvorrat) 302 und
eine Pipeline-Steuereinheit 304 auf.
Die Signalverarbeitungseinheiten 300A bis 300D führen die
Signalverarbeitungsaufgaben an Daten aus, während die RISC-Steuereinheit 302 und die
Pipeline-Steuereinheit 304 Steueraufgaben
ausführen,
welche sich auf die Signalverarbeitungsfunktion beziehen, die durch
die SPs 300A bis 300D ausgeführt werden. Die durch die RISC- Steuereinheit 302 bereitgestellte
Steuerung ist mit den SPs 300A bis 300D auf Pipeline-Ebene
gekoppelt, um einen eng integrierten Kernprozessor 200 zu
ergeben, der die Nutzung der Signalverarbeitungseinheiten 300 auf
einer sehr hohen Ebene hält.
-
Der
Programmspeicher 204 ist mit der Pipe-Steuerung 304 gekoppelt,
die einen Befehlspuffer aufweist, der als ein lokaler Schleifen-Cache
fungiert. Der Befehlspuffer weist in dem bevorzugten Ausführungsbeispiel
die Fähigkeit
auf, vier Befehle zu speichern. Der Befehlspuffer der Pipe-Steuerung 304 reduziert
den Energieverbrauch beim Zugriff auf die Hauptspeicher zum Abrufen
von Befehlen während der
Ausführung
von Programmschleifen.
-
Die
Signalverarbeitungsaufgaben werden in den Datenpfaden in den Signalverarbeitungseinheiten 300A bis 300D ausgeführt. Die
DSP-Algorithmen sind so beschaffen, dass sie inhärente Vektoroperationen an
Datenströmen
ausführen,
wobei sie ein minimales zeitliches Vorkommen (Datenwiederverwendung)
aufweisen. Somit wird kein Daten-Cache mit Seitenabruf verwendet,
da dieser nicht gut funktionieren und die Betriebsleistung herabsetzen
würde.
Die Signalverarbeitungseinheiten 300A bis 300D können somit
direkt aus dem Datenspeicher 202 auf Vektorelemente (die
Operanden) zugreifen, ohne den Overhead der Ausgabe einer Reihe
von Lade- und Speicherbefehlen
in den Speicher, was zu einer besonders effizienten Datenverarbeitung
führt.
Die Befehlsvorratarchitektur gemäß der vorliegenden
Erfindung mit einem Befehlswort von 20 Bits, wobei eine Erweiterung
auf ein Befehlswort von 40 Bits möglich ist, erreicht bessere
Effizienzen als VLIW-Architekturen unter Verwendung von 256 Bits
oder höhere
Befehlsbreiten, indem die ISA zu DSP algorithmischen Strukturen
eingesetzt werden Die adaptierte ISA führt zu einer sehr kompakten
Hardware mit geringer Leistungsaufnahme, die für höhere Rechenanforderungen skalierbar
ist. Die Operanden, die der ASSP behandeln kann, variieren in Bezug
auf Datentyp und Datengröße. Der
Datentyp kann real oder komplex sein, ein ganzzahliger Wert oder
ein Bruchzahlenwert, wobei die Vektoren mehrere Elemente verschiedener
Größen aufweisen.
Die Datengröße entspricht
in dem bevorzugten Ausführungsbeispiel
64 Bits, wobei bei entsprechender Befehlscodierung auch größere Datengrößen möglich sind.
-
In
folgendem Bezug auf die Abbildung aus 4 ist ein
genaues Blockdiagramm der RISC-Steuereinheit 302 dargestellt.
Die RISC-Steuereinheit 302 weist eine Datenausrichtungs-
und Formatierungseinrichtung 402, einen Speicheradressgenerator 404,
drei Addierer 406A bis 406C, eine arithmetische
Logikeinheit (ALU) 408, einen Multiplizierer 410,
einen Barrel-Shifter (Schiebelogikschaltung) 412 und eine
Registerdatei 413 auf. Die Registerdatei 413 zeigt
auf einen Ausgangsspeicherplatz, von welchem der Speicheradressgenerator 404 Adressen
in dem Datenspeicher 202 erzeugen kann. Die RISC-Steuereinheit 302 ist
zuständig
für die
Zustellung von Adressen an den Datenspeicher, so dass der entsprechende
Datenstrom den Signalverarbeitungseinheiten 300A bis 300D zugeführt wird.
Die RISC-Steuereinheit 302 ist ein Register für die Registerorganisation
mit Lade- und Speicherbefehlen, um Daten in den Datenspeicher 202 und
aus dem Datenspeicher zu bewegen. Die Datenspeicheradressierung
wird durch die RISC-Steuereinheit
unter Verwendung eines 32-Bit-Registers als Zeiger ausgeführt, der
die Adresse, den Versatz nach der Modifikation und die Typ- und
Permutationsfelder spezifiziert. Das Typenfeld ermöglicht die
Unterstützung
einer Vielzahl natürlicher
DSP-Daten als „Bürger erster Klasse" bzw. „First
Class Citizen" in
der Architektur. Der komplexe Typ ermöglicht zum Beispiel direkte Operationen
an komplexen Daten, die in dem Speicher gespeichert sind, wobei
eine Reihe von Buchhaltungsbefehlen entfernt bzw. auf diese verzichtet wird.
Dies ist nützlich
für die
sehr effiziente Unterstützung
von QAM-Demodulatoren in Datenmodems.
-
In
folgendem Bezug auf die Abbildung aus 5A zeigt
diese ein Blockdiagramm einer Signalverarbeitungseinheit 300,
die eine Instanz der SPs 300A bis 300D darstellt.
Jede der Signalverarbeitungseinheiten 300 weist eine Datentypisierungs- und Ausrichtungseinrichtung 502,
einen ersten Multiplizierer M1 504A, einen Kompressor 506,
einen ersten Addierer A1 510A, einen zweiten Addierer A2 510B,
ein Akkumulatorregister 512, einen dritten Addierer A3 510C und
einen zweiten Multiplizierer M2 504B auf. Die Struktur
bzw. der Aufbau der Addierer 510A bis 510C ist
identisch, und sie werden allgemein als Addierer 510 bezeichnet.
Die Multiplizierer 504A und 504B weisen die gleiche
Struktur auf und werden allgemein als Multiplizierer 504 bezeichnet. Jeder
der Multiplizierer 504A und 504B weist einen entsprechenden
Multiplexer 514A und 514B an dessen Eingangsstufe
auf, um verschiedene Eingaben von verschiedenen Bussen in die Multiplizierer
zu multiplexieren. Jeder der Addierer 510A, 510B, 510C weist
auch einen entsprechenden Multiplexer 520A, 520B und 520C an
dessen Eingangsstufe auf, um verschiedene Eingaben von verschiedenen
Bussen in die Addierer zu multiplexieren. Diese Multiplexierer und
die sonstige Steuerlogik ermöglichen
durch die entsprechende Auswahl von Multiplexierern die flexible
Verbindung der Addierer, Multiplizierer und sonstigen Komponenten
in den Signalverarbeitungseinheiten 300A bis 300C untereinander.
In dem bevorzugten Ausführungsbeispiel
können
der Multiplizierer M1 504, der Kompressor 506,
der Addierer A1 510A, der Addierer A2 510B und
der Akkumulator 512 Eingaben direkt von externen Datenbussen empfangen,
und zwar über
die Datentypisierungs- und Ausrichtungseinrichtung 502.
In dem bevorzugten Ausführungsbeispiel
empfangen der Addierer 510C und der Multiplizierer M2 504B Eingaben
von dem Akkumulator 512 oder die Ausgaben von den Ausführungseinheiten
Multiplizierer M1 504A, Kompressor 506, Addierer
A1 510A und Addierer A2 510B.
-
In
folgendem Bezug auf die Abbildung aus 5B zeigt
diese ein genaueres Blockdiagramm der funktionalen Blöcke und
der Busstruktur der Signalverarbeitungseinheit 300. Eine
flexible Datentypisierung ist möglich
aufgrund der Struktur und der Funktionalität in jeder Signalverarbeitungseinheit. Die
Busse 203 zu dem Datenspeicher 202 weisen einen
Z-Ausgangsbus 532 und einen X-Eingangsbus 531 sowie
einen Y-Eingangsbus 533 auf. Die Ausgangssignale werden
auf dem Z-Ausgangsbus 532 aus dem Signalprozessor 300 durch
die Datentypisierungs- und Ausrichtungseinrichtung 502 gekoppelt.
Die Eingangssignale werden auf dem X-Eingangsbus 531 und
dem Y-Eingangsbus 533 durch die Datentypisierungs- und
Ausrichtungseinrichtung 502 in den Signalprozessor 300 gekoppelt.
Zwei Operanden können
parallel gemeinsam aus dem Datenspeicher 202 in den Signalprozessor 300 geladen werden,
jeweils einzeln über
den X-Bus 531 und den Y-Bus 533.
-
In
dem Signalprozessor 300 sind der SXM-Bus 552 und
der SYM-Bus 556 zwischen
die Datentypisierungs- und Ausrichtungseinrichtung 502 und
den Multiplizierer M1 504A für zwei Operandenquellen von
entsprechend dem X-Bus 531 und dem Y-Bus 533 gekoppelt.
Der SXA-Bus 550 und der SYA-Bus 554 sind zwischen
die Datentypisierungs- und Ausrichtungseinrichtung 502 und
den Addierer A1 510A gekoppelt und zwischen die Datentypisierungs-
und Ausrichtungseinrichtung 502 und den Addierer A2 510B für zwei Operandenquellen
entsprechend von dem X-Bus 531 und dem Y-Bus 533.
In dem bevorzugten Ausführungsbeispiel
sind der X-Bus 531 und der Y-Bus 533 vierundsechzig
Bits breit, während
der SXA-Bus 550 und der SYA-Bus 554 vierzig Bits
breit sind, und wobei der SXM-Bus 552 und der SYM-Bus 556 sechzehn
Bits breit sind. Ein weiteres Paar interner Busse ist zwischen die
Datentypisierungs- und Ausrichtungseinrichtung 502 und
den Kompressor 506 sowie zwischen die Datentypisierungs-
und Ausrichtungseinrichtung 502 und das Akkumulatorregister
AR 512 gekoppelt. Während
die Datentypisierungs- und Ausrichtungseinrichtung 502 mit
dem Addierer A3 510C und dem Multiplizierer M2 504B gekoppelte
Datenbusse aufweisen kann, ist dies in dem bevorzugten Ausführungsbeispiel
nicht der Fall, um zusätzliche
Datenleitungen überflüssig zu
machen und um die Flächennutzung einer
integrierten Schaltung zu erhalten. Ausgabedaten werden von dem
Akkumulatorregister AR 512 über einen weitern Bus in die
Datentypisierungs- und Ausrichtungseinrichtung 502 gekoppelt.
Der Multiplizierer M1 504A weist Busse auf, um dessen Ausgang in
die Eingänge
des Kompressors 506, des Addierers A1 510A, des
Addierers A2 510B und der Akkumulatorregister AR 512 zu
koppeln. Der Kompressor 506 weist Busse auf, um dessen
Ausgang in die Eingänge
des Addierers A1 510A und des Addierers A2 510B zu
koppeln. Der Addierer A1 510A weist einen Bus auf, um dessen
Ausgang in die Akkumulatorregister 512 zu koppeln. Der
Addierer A2 510B weist Busse auf, um dessen Ausgabe in
die Akkumulatorregister 512 zu koppeln. Die Akkumulatorregister 512 weisen
Busse auf, um ihren Ausgang in den Multiplizierer M2 504B,
den Addierer A3 510C und die Datentypisierungs- und Ausrichtungseinrichtung 502 zu koppeln.
Der Addierer A3 510C weist Busse auf, um dessen Ausgang
in den Multiplizierer M2 504B und die Akkumulatorregister 512 zu
koppeln. Der Multiplizierer M2 504B weist Busse auf, um
dessen Ausgang in die Eingänge
des Addierers A3 510C und die Akkumulatorregister AR 512 zu
koppeln.
-
BEFEHLSVORRATARCHITEKTUR
-
Die
Befehlsvorratarchitektur des ASSP 150 ist auf Anwendungen
der digitalen Signalverarbeitung zugeschnitten, einschließlich der
Audio- und Sprachverarbeitung wie etwa der Komprimierung/Dekomprimierung
und der Echokompensation. Im Wesentlichen eignet sich die in Verbindung
mit dem ASSP 150 implementierte Befehlsvorratarchitektur
für algorithmische
DSP-Strukturen. Die Adaption der ISA gemäß der vorliegenden Erfindung
an algorithmische DSP-Strukturen ist ein Gleichgewicht zwischen
einer einfachen Implementierung, Verarbeitungseffizienz und Programmierbarkeit
von DSP-Algorithmen.
Die ISA gemäß der vorliegenden Erfindung
stellt Datenbewegungsoperationen, DSP/arithmetische/logische Operationen,
Programmsteueroperationen (wie etwa Funktionsaufrufe/Rücksprünge, bedingte/unbedingte
Sprünge
und Verzweigungen) und Systemoperationen (Berechtigung, Behandlung
von Unterbrechungen/Trapping/Gefahren und Speicherverwaltungssteuerung) bereit.
-
Die
Befehlsvorratarchitektur des ASSP 150 kann als zwei Bauteile
bzw. Komponenten betrachtet werden, wobei eine (RISC ISA) der RISC-Steuereinheit
und die andere (DSP ISA) den DSP-Datenpfaden
der Signalverarbeitungseinheiten 300 entspricht. Die RISC
ISA ist eine Architektur auf Registerbasis mit sechzehn Registern
innerhalb der Registerdatei 413, während die DSP ISA eine Architektur
auf Speicherbasis darstellt, mit effizienten digitalen Signalverarbeitungsbefehlen.
Das Befehlswort für
den ASSP entspricht für
gewöhnlich
20 Bits, kann jedoch auf 40 Bits erweitert werden, um zwei in Reihe
oder parallel auszuführende
RISC- oder DSP-Befehle zu steuern, wie zum Beispiel einen RISC-Steuerbefehl, der
parallel zu einem DSP-Befehl ausgeführt wird, oder ein erweiterter
40-Bit-RISC- oder
DSP-Befehl.
-
Die
Befehlsvorratarchitektur des ASSP 150 weist vier unterschiedliche
Befehlsarten auf, um das operative DSP-Mix zu optimieren. Dabei
handelt es sich um (1) einen 20-Bit-DSP-Befehl, der Modusbits in Steuerregistern
(d.h. Modusregistern) verwendet; (2) einen 40-Bit-DSP-Befehl mit
Steuererweiterungen, die Modusregister übergehen können; (3) einen 20-Bit-Dyaden-DSP-Befehl;
und (4) einen 40-Bit-Dyaden-DSP-Befehl.
Diese Befehle dienen der Beschleunigung von Berechnungen innerhalb
des Kernprozessors 200 vom Typ mit D = [(A op1 B) op2 C], und
wobei es sich bei jedem „op1" und „op2" um eine Operationsklasse
Multiplizieren, Addieren oder Extremwert (min/max) der drei Operanden
A, B und C handeln kann. Die ISA des ASSP 150, welche diese Berechnungen
beschleunigt, ermöglicht
die effiziente Verkettung verschiedener Kombinationen von Operationen.
Diese Arten von Operationen erfordern drei Operanden, die dem Prozessor
verfügbar
gemacht werden müssen,
der die Operation ausführt.
Die Größe der integrierten
Schaltung begrenzt die Busstruktur, welche die Bandbreite auf zwei
Vektor-Lesevorgänge
und einen Vektor-Schreibvorgang bei jedem Zyklus in den und aus
dem Datenspeicher 202 beschränkt. Somit muss einer der drei
Operanden, wie etwa B oder C, von einer anderen Quelle innerhalb des
Kernprozessors 200 stammen. Der dritte Operand kann in
einem der Register des Akkumulators 512 oder der RISC-Registerdatei 413 platziert
werden. Zum dies in dem Kernprozessor 200 zu erreichen,
sind zwei Unterklassen der 20-Bit-DSP-Befehle
gegeben, die wie folgt lauten: (1) A und B spezifiziert durch einen
4-Bit-Spezifizierer, und C und D durch einen 1-Bit-Spezifizierer;
und (2) A und C spezifiziert durch einen 4-Bit-Spezifizierer, und
B und D durch einen 1-Bit-Spezifizierer.
-
Die
Befehle für
den ASSP werden immer mit 40 Bits gleichzeitig aus einem Programmspeicher
erfasst, wobei die Bits 39 und 19 die Befehlsart anzeigen. Nach
dem Abruf bzw. der Erfassung werden die Befehle in zwei Abschnitte
mit 20 Bits gruppiert, jeweils zur Ausführung von Operationen. Im Falle
von 20-Bit-Steuerbefehlen
mit paralleler Ausführung
(Bit 39 = 0, Bit 19 = 0), handelt es sich bei den 20-Bit-Abschnitten
um Steuerbefehle, die gleichzeitig ausgeführt werden. Bei 20-Bit-Steuerbefehlen zur
seriellen Ausführung
(Bit 39 = 0, Bit 19 = 1) handelt es sich bei den beiden 20-Bit-Abschnitten
um Steuerbefehle, die seriell ausgeführt werden. Bei den 20-Bit-DSP-Befehlen zur
seriellen Ausführung
(Bit 39 = 1, Bit 19 = 1) handelt es sich bei den beiden 20-Bit-Befehlen
um DSP-Befehle, die seriell ausgeführt werden. Bei den 40-Bit-DSP-Befehlen
(Bit 39 = 1, Bit 19 = 0) bilden die beiden 20-Bit-Abschnitte einen
erweiterten DSP-Befehl, wobei sie gleichzeitig ausgeführt werden.
-
Die
ISA des ASSP 150 ist vollständig vordefiniert, so dass
eine Ausführungsvorhersage
vorgesehen wird. Innerhalb des 20-Bit-RISC-Steuerbefehlwortes und des
erweiterten 40-Bit-DSP-Befehlswortes
gibt es zwei Bits jedes Befehls, die eines von vier Prädikatregistern
innerhalb der RISC-Steuereinheit 302 spezifizieren. Abhängig von
der Bedingung des Prädikatregisters
kann sich die Befehlsausführung bedingt
auf der Basis ihres Inhalts verändern.
-
Für den Zugriff
auf Operanden in dem Datenspeicher 202 oder in Registern
in dem Akkumulator 512 oder der Registerdatei 413 wird
ein 6-Bit-Spezifizierer in den erweiterten DSP-Befehlen verwendet, um
auf die Operanden in dem Speicher und in Registern zuzugreifen.
Von dem 6-Bit-Spezifizierer, der in den erweiterten DSP-Befehlen
zum Einsatz kommt, zeigt das MSB (Bit 5) an, ob es sich bei dem
Zugriff um einen Speicherzugriff oder um einen Registerzugriff handelt.
Wenn in dem bevorzugten Ausführungsbeispiel
Bit 5 auf eine logische Eins gesetzt wird, so bezeichnet dies einen
Speicherzugriff für
einen Operanden. Wenn Bit 5 auf eine logische Null gesetzt wird,
bezeichnet dies einen Registerzugriff für einen Operanden. Wenn Bit
5 auf eine 1 gesetzt wird, wird der Inhalt eines spezifizierten
Registers (rX mit X: 0–7)
zur Ermittlung der effektiven Speicheradresse und zum späteren Modifizieren
des Zeigerfelds um einen von zwei möglichen Versätzen verwendet,
gemäß der Spezifikation
in einem der spezifizierten rX-Register. Wenn das Bit 5 auf 0 gesetzt
ist, bestimmt Bit 4, welche Registergruppe den Inhalt des gewünschten
Operanden aufweist. Wenn Bit 4 auf 0 gesetzt ist, so steuern die
verbleibenden spezifizierten Register 3:0 den Zugriff auf die Register
innerhalb der Registerdatei 413 oder auf die Register in
den Signalverarbeitungseinheiten 300.
-
DSP-BEFEHLE
-
Es
gibt vier Klassen von DSP-Befehlen für den ASSP 150. Diese
sind:
- 1) Multiplizieren (MULT): Steuert die
Ausführung des
Hauptmultiplizierers, der von dem Speicher mit Datenbussen verbunden
ist.
Steuert: Rundung, Vorzeichenmultiplikation
Bearbeitet
Vektordaten, spezifiziert durch das Typenfeld in dem Adressregister
Zweite
Operation: Add, Sub, Min, Max in Vektor- oder skalarem Modus
- 2) Addieren (ADD): Steuert die Ausführung des Hauptaddierers
Steuert:
Absolutwertsteuerung der Eingaben, Ergebnisbeschränkung
Zweite
Operation: Add, Add-Sub, Mult, Mac, Min, Max
- 3) Extremwert (MIN/MAX): Steuert die Ausführung des Hauptaddierers
Steuert:
Absolutwertsteuerung der Eingaben, globale oder laufende max/min
mit T-Register, TR-Register Aufzeichnungssteuerung
Zweite Operation:
Add, Sub, Mult, Mac, Min, Max
- 4) Sonstiges: Typenabgleich und Permutationsoperationen.
-
Der
ASSP 150 führt
diese arithmetischen DSP-Operationen in Vektor- oder in skalarer
Form aus. Bei der skalaren Ausführung
wird eine Reduzierungs- oder Verknüpfungsoperation an den Vektorergebnissen
ausgeführt,
so dass sich ein skalares Ergebnis ergibt. Bei DSP-Anwendungen ist
es üblich, skalare
Operationen auszuführen,
die effizient durch den ASSP 150 ausgeführt werden.
-
Die
20-Bit-DSP-Befehlswörter
weisen 4-Bit-Operandenspezifizierer
auf, die unter Verwendung von 8 Adressregistern (r0–r7) in
der Registerdatei 413 der RISC-Steuereinheit 302 direkt auf
den Datenspeicher zugreifen können.
Das Verfahren der Adressierung durch das 20-Bit-DSP-Befehlswort ist regelmäßig indirekt,
wobei das Adressregister den Zeiger in den Speicher spezifiziert,
den Wert nach der Modifikation, den Datentyp, auf den zugegriffen wird,
und die Permutation der Daten, die zur effizienten Ausführung des
Algorithmus erforderlich ist. Alle DSP-Befehle steuern die Multiplizierer 504A–504B, die
Addierer 510A bis 510C, den Kompressor 506 und
den Akkumulator 512, die funktionalen Einheiten jeder Signalverarbeitungseinheit 300A bis 300D.
-
In
dem 40-Bit-Befehlswert fällt
der Typ der Erweiterung von dem 20-Bit-Befehlswort in fünf Kategorien:
- 1) Steuerungs- und Spezifizierererweiterungen, welche
die Steuerbits in Modusregistern übergehen
- 2) Typenerweiterungen, die den Typenspezifizierer in den Adressregistern übergehen
- 3) Permutationserweiterungen, welche den Permutationsspezifizierer
für Vektordaten
in den Adressregistern übergehen
- 4) Versatzerweiterungen, die Versätze ersetzen oder erweitern,
die in den Adressregistern spezifiziert sind
- 5) DSP-Erweiterungen, welche die unteren Reihen funktionaler
Einheiten innerhalb einer Signalverarbeitungseinheit 300 steuern,
um die Blockverarbeitung zu beschleunigen.
-
Die
40-Bit-Steuerbefehle mit 20-Bit-Erweiterungen ermöglichen
ferner das Spezifizieren eines großen intermediären Werts
(16 bis 20 Bits) in dem Befehl sowie leistungsfähige Bitmanipulationsbefehle.
-
Eine
effiziente DSP-Ausführung
wird über
2 × 20-Bit-DSP-Befehle
bereitgestellt, wobei die ersten 20 Bits die oberen Funktionen Einheiten
(Addierer 501A und 510B, den Multiplizierer 504A,
Kompressor 506) steuern, welche Schnittstellen mit Datenbussen
von dem Speicher aufweisen, und wobei die zweiten 20 Bits die unteren
funktionalen Einheiten (Addierer 510C und Multiplizierer 504B)
steuern, welche innere oder lokale Daten als Operanden verwenden.
-
Die
effiziente DSP-Ausführung
wird auch durch die Hardware-Architektur
gemäß der vorliegenden
Erfindung verbessert. In diesem Fall wird die Effizienz dahingehend
verbessert, dass Daten aus dem Datenspeicher 202 und in
diesen zugeführt
werden, um die vier Signalverarbeitungseinheiten 300 und
die DSP-Funktionseinheiten darin zu speisen. Die Datenautobahn umfasst
die Busse 203, welche den X-Bus 531 und den Y-Bus 533 für entsprechende X-
und Y-Quellenoperanden aufweisen sowie den Z-Bus 532 zum
Schreiben des Ergebnisses. Alle Busse, einschließlich dem X-Bus 531,
dem Y-Bus 533 und dem Z-Bus 532 sind vorzugsweise
64 Bit breit. Die Busse sind unidirektional, um das physikalische
Design zu vereinfachen und um Übergangszeiten
der Daten zu reduzieren. Wenn in dem bevorzugten Ausführungsbeispiel
in einem 20-Bit-DSP-Modus die X- und Y-Busse beide Operanden führen, die
aus dem Speicher gelesen werden, um in einer Signalverarbeitungseinheit 300 parallel
ausgeführt
zu werden, wobei das parallele Ladefeld nur auf Zugriffsregister
innerhalb der Registerdatei 413 der RISC-Steuereinheit 302 zugreifen
kann. Darüber
hinaus stellen die vier parallelen Signalverarbeitungseinheiten 300A bis 300D vier
parallele MAC-Einheiten (Multiplizierer 504A, Addierer 510A und
Akkumulator 512) bereit, die gleichzeitig Berechnungen
ausführen
können.
Dies reduziert den Zykluszählwert
von den normalerweise vier erforderlichen Zyklen zur Ausführung von
vier MACs auf nur einen Zyklus.
-
DATENTYPISIERUNG, AUSRICHTUNG
UND PERMUTATION
-
Damit
sich die vorliegende Erfindung an die verschiedenen algorithmischen
DSP-Strukturen anpassen kann, sieht sie eine flexible Datentypisierung und
Ausrichtung, Datentypangleichung und Permutation der Operanden vor.
Verschiedene DSP-Algorithmen
können
Datenabtastwerte mit variierenden Bitbreiten verwenden, wie etwa
vier Bits, acht Bits, sechzehn Bits, vierundzwanzig Bits, zweiunddreißig Bits
oder vierzig Bits. Darüber
hinaus können
die Datenabtastwerte real oder komplex sein. In dem bevorzugten
Ausführungsbeispiel
der vorliegenden Erfindung sind die Multiplizierer in den Signalverarbeitungseinheiten
sechzehn Bits breit, und die Addierer in den Signalverarbeitungseinheiten
sind vierzig Bits breit. Die Operanden werden aus dem Datenspeicher über den
X- oder Y-Datenbus
in die Signalverarbeitungseinheiten ausgelesen, wobei jeder der
Busse in dem bevorzugten Ausführungsbeispiel
eine Breite von vierundsechzig Bits aufweist. Die Auswahl dieser
Bitbreiten berücksichtigt
die Art der verarbeiteten DSP-Algorithmen, die Operanden/Datenabtastwerte,
die physikalischen Busbreiten innerhalb einer integrierten Schaltung
und die erforderliche Schaltungsfläche für die Implementierung der Addierer
und Multiplizierer. Zur flexiblen Behandlung der verschiedenen Datentypen
werden die Operanden automatisch durch die vorliegende Erfindung
entsprechend an den Addierer oder Multiplizierer angepasst (d.h. ausgerichtet).
Wenn sich der Datentyp der Operanden unterscheidet, so ist eine
Typenangleichung erforderlich. Vorgesehen ist gemäß der vorliegenden Erfindung
eine automatische Typenanpassung zur Verarbeitung unterschiedlicher
Operanden. Ferner können
verschiedene Permutationen der Operanden wünschenswert sein, wie etwa
zur Skalierung eines Vektors durch eine Konstante. In diesem Fall
sieht die vorliegende Erfindung flexible Permutationen von Operanden
vor.
-
In
folgendem Bezug auf die Abbildung aus 6 ist das
allgemein Format für
den Datentyp eines Operanden gemäß der vorliegenden
Erfindung dargestellt. Gemäß der vorliegenden
Erfindung kann der Datentyp für
einen Operanden in dem Format N × SR für einen realen Datentyp oder
in dem Format N × SC
für einen
komplexen oder imaginären
Datentyp dargestellt werden. N bezieht sich auf die Anzahl der Signalverarbeitungseinheiten 300,
zu diesen dieser bestimmte Operand geleitet werden sollte. S steht
für die
Größe des Operanden
in Bits. R bezieht sich auf einen realen Datentyp. C bezieht sich
auf einen komplexen oder imaginären
Datentyp mit einer realen und imaginären numerischen Komponente.
In einem Ausführungsbeispiel
der vorliegenden Erfindung entspricht die Größe der Multiplikationseinheiten
einer Breite von sechzehn Bits, und wobei die Größe der Addierer einer Breite
von vierzig Bits entspricht. In einem Ausführungsbeispiel der vorliegenden
Erfindung ist der Speicherbus vierundsechzig Bits breit, so dass
ein aus dem Speicher übertragener
Operand eine Breite im Bereich von null bis vierundsechzig Bits
aufweisen kann.
-
Für Multiplikanden
weisen die Operanden vorzugsweise eine Multiplikationsbitbreite
von 4, 8, 16 und 32 auf. Für Minuenden,
Subtrahenden und Addenden weisen die 40-Bit-Addierer vorzugsweise Operanden mit
einer Multiplikationsbitbreite von 4, 8, 16, 32 und 40 auf. Für den Fall,
dass es sich bei dem Datentyp um einen komplexen Operanden handelt, weist
der Operand einen realen Operanden und einen imaginären Operanden
auf. Zur Bezeichnung des Typs des ausgewählten Operanden weisen die Steuerregister
und Befehle der Befehlsvorratarchitektur ein Datentypfeld zur Bezeichnung
des Typs des durch einen Benutzer ausgewählten Operanden auf.
-
In
folgendem Bezug auf die Abbildung aus 7 ist ein
beispielhaftes Steuerregister der Befehlsvorratarchitektur gemäß der vorliegenden
Erfindung dargestellt. In der Abbildung aus 7 ist ein Speicheradressregister 700 zur
Steuerung der Auswahl der Operanden aus dem Datenspeicher 202 an die
Signalverarbeitungseinheiten 300 dargestellt. Das Speicheradressregister 700 veranschaulicht eine
Mehrzahl verschiedener Speicheradressregister, die in einem Befehl
durch einen Zeiger rX bezeichnet sind. Jedes der Speicheradressregister 700 weist
ein Typenfeld 701, ein CB-Bit 702 für eine Zirkular-
und Bitumkehr-Adressierungsunterstützung auf,
ein Permutationsfeld 703, einen ersten Adressenversatz 704,
einen zweiten Nulladressenversatz 705 und einen Zeiger 706 auf.
Das Typenfeld 701 bezeichnet den Datentyp des ausgewählten Operanden.
Das Permutationsfeld 703 des Speicheradressregisters 700 ist
nachstehend näher
beschrieben.
-
In
folgendem Bezug auf die Abbildung aus 8 ist eine
beispielhafte Anordnung bzw. Gruppe der für die Operanden auszuwählenden
Datentypen dargestellt. Der Datentyp ist als ein vier Bitfeld codiert,
und zwar in einem Steuerregister, wie etwa dem Speicheradressregister 700,
oder ein DSP-Befehl, der direkt einen Operanden aus einem Register
oder einem Speicherplatz auswählt.
Zum Beispiel weist der Operand für
das Datentypfeld 701 mit einem Wert von 0000 einen Datentyp
von 1 × 16
real auf. Bei einem weiteren Beispiel für das Datentypfeld 701 mit einem
Wert von 0111 weist der Operand einen 2 × 16 komplexen Datentyp auf.
-
Als
weiteres Beispiel für
das Datentypfeld 701 mit einem Wert von 1001 handelt es
sich bei dem Datentyp des Operanden um einen 2 × 32 komplexen Operanden. Das
Datentypfeld 701 wird von einem Benutzer ausgewählt, wobei
die Anzahl der Operationen bekannt ist, die gemeinsam parallel durch
die Signalverarbeitungseinheiten 300 verarbeitet werden (d.h.
N des Datentyps), sowie die Bitbreite der Operanden (d.h. S des
Datentyps).
-
Das
Permutationsfeld in den Steuerregistern wie etwa dem Speicheradressregister 700 und
Befehle ermöglichen
das Übertragen
und den Austausch von Operanden zwischen den Signalverarbeitungseinheiten 300.
In direktem neuerlichen Bezug auf die Abbildung aus 3 weisen
der X-Datenbus 531, der Y-Datenbus 533 und der
Z-Datenbus 532 zwischen dem Datenspeicher 202 und
den Signalverarbeitungseinheiten 300 eine Breite von vierundsechzig
Bits auf. Da vier Signalverarbeitungseinheiten 300A bis 300D vorgesehen
sind, ist es häufig wünschenswert,
dass jede der Einheiten einen Operanden über einen Speicherzugriff auf
den Datenspeicher 202 empfängt. In anderen Fällen kann
es wünschenswert
sein, dass jede der Signalverarbeitungseinheiten 300A bis 300D Zugriff
auf den gleichen Operanden aufweist, so dass dieser zu jeder Einheit übertragen
wird.
-
In
folgendem Bezug auf die Abbildung aus 9 ist eine
beispielhafte Anordnung von Permutationen zur Auswahl von Operanden
für die
Signalverarbeitungseinheiten dargestellt. Die Permutation ist in
dem bevorzugten Ausführungsbeispiel
als ein Feld von fünf
Bits codiert, und zwar entweder in einem Steuerregister, wie etwa
dem Permutationsfeld 702 in dem Speicheradressregister 700,
oder in einem DSP-Befehl Das Permutationsfeld sieht die Fähigkeit zur
Bezeichnung vor, wie 16-Bit-Erhöhungen
des 64-Bit-Datenbusses in jede der Signalverarbeitungseinheiten 300A bis 300D gekoppelt
sind. In Bezug auf die Abbildung aus 9 können die
vierundsechzig Bits des X-Datenbusses 531/Y-Datenbusses 533 (in
den 2 bis 3 als Datenbusse 203 bezeichnet)
oben von rechts nach links wie folgt bezeichnet sein: 0–15, 16–31, 32–47 und
48–63.
Die Permutation der Operanden an dem Datenbus für das gegebene Permutationsfeld
befindet sich in der Mitte, während
der Permutationstyp auf der rechten Seite aufgeführt ist. Die Datenbuspermutationen
in der Mitte sind als die Permutationen 203A bis 203L bezeichnet.
-
Während die
Daten auf dem entsprechenden Datenbus ihre Position nicht verändern, ordnet
das 5-Bit-Permutationsfeld, das links neben dem 64-Bit-Datenbus
angeordnet ist, den Empfang eines 16-Bit-Datenfelds (bezeichnet
als A, B, C und D) an dem entsprechenden Datenbus durch jede der
Signalverarbeitungseinheiten 300A bis 300D neu
an. Auf diese Weise wird der gewünschte
Permutationstyp ausgewählt.
Das heißt,
die am weitesten rechts angeordnete Spalte mit sechzehn Bits gilt
als über die
Permutationen in den SP3 300D gekoppelt. Die von rechts
betrachtet zweite Spalte gilt als über die Permutationen in die
Signalverarbeitungseinheit SP2 300C gekoppelt. Die dritte
Spalte von rechts gilt als über
die Permutationen in die Signalverarbeitungseinheit SP1 300B gekoppelt.
Die am weitesten links angeordnete Spalte, die vierte Spalte von
rechts, gilt als über
die Permutationen in die Signalverarbeitungseinheit SP0 300A gekoppelt.
-
Bei
einem regulären
Zugriff ohne eine Permutation, die einer Datenbuspermutation 203A entspricht,
sind die Bits 0 bis 15 des Datenbusses mit D bezeichnet, wobei die
Bits 16 bis 31 mit C bezeichnet sind, während die Bits 32 bis 47 mit
B bezeichnet sind, und wobei die Bits 48 bis 63 mit A bezeichnet sind.
Dies entspricht einem Permutationsfeld von 00000 in der ersten Reihe,
Permutation 203A, des Diagramms aus 9. Bei ausgewähltem regulärem Zugriff
für jede
der Signalverarbeitungseinheiten 300A bis 300D auf
den Datenbus mit 64 Bits, sind zum Beispiel die mit A gekennzeichneten
sechzehn Bits in den SP3 300D gekoppelt. Die sechzehn mit
D gekennzeichneten Bits sind in die Signalverarbeitungseinheit SP2 300C gekoppelt.
Die sechzehn mit C gekennzeichneten Bits sind in die Signalverarbeitungseinheit
SP1 300B gekoppelt. Die sechzehn mit D gekennzeichneten
Bits sind in die Signalverarbeitungseinheit SP0 300A gekoppelt.
-
In
dem Permutationsfeld steuert das werthöchste Bit (Bit 26 aus 9),
ob die Bits des oberen Halbwortes und die Bits des unteren Halbwortes
des Datenbusses austauschbar in die Signalverarbeitungseinheiten 300 eingegeben
werden. Zum Beispiel aus dem Blickwinkel der Signalverarbeitungseinheiten 300A bis 300D erscheint
der Datenbus als Datenbuspermutation 203B im Vergleich
zu der Permutation 203A. In diesem Fall werden die kombinierten
Datenfelder A und B mit den kombinierten Datenfeldern C und D als
die Permutationen über
die Signalverarbeitungseinheiten ausgetauscht. Die nächsten beiden
Bits des Permutationsfelds (Bits 25 und 24 des Permutationsfelds 702)
bestimmen, wie die Datenfelder A und B des oberen Halbwortes über die
Signalverarbeitungseinheiten permutiert werden. Die untersten beiden
Bits des Permutationsfelds (Bits 23 und 22 des Permutationsfelds 702)
bestimmen, wie die Datenfelder C und D des unteren Halbwortes über die
Signalverarbeitungseinheiten permutiert werden.
-
Betrachtet
wird zum Beispiel der Fall, wenn es sich bei dem Permutationsfeld 703 um
00100 handelt, das der Permutation 203C entspricht. In
diesem Fall handelt es sich bei dem Permutationstyp um eine Permutation
an Halbwörtern
der oberen Bits der Datenfelder A und B. Im Vergleich zu der Permutation 203A empfängt die
Signalverarbeitungseinheit SP1 300B das Datenfeld A, und
die Signalverarbeitungseinheit SP0 300A empfängt das
Datenfeld B in der Permutation 203C.
-
Betrachtet
wird ein anderes Beispiel, bei dem es sich bei dem Permutationsfeld 703 um
das Bitmuster 00001 handelt, das der Permutation 203D entspricht.
In diesem Fall handelt es sich bei dem Permutationstyp um eine Permutation
von Halbwörtern
der unteren Bits der Datenfelder C und D, wobei die Datenbusfelder
von C und D ausgetauscht werden, um Halbwörter der unteren Bits des Datenbusses
zu permutieren. Im Vergleich zu der Permutation 203A empfängt die
Signalverarbeitungseinheit SP3 300D das Datenfeld C, und
die Signalverarbeitungseinheit SP2 300C empfängt das
Datenfeld D in der Permutation 203D.
-
Gemäß der vorliegenden
Erfindung können beide
Gruppen der oberen Bis und der unteren Bits gemeinsam einer Permutation
unterzogen werden. In dem Fall, in dem das Permutationsfeld 703 einem
Bitmuster 00101 entspricht, entspricht dies der Permutation 203E.
In diesem Fall permutiert der Permutationstyp Halbwörter für die oberen
und die unteren Bits, so dass A und B die Positionen tauschen, und wobei
C und D die Positionen tauschen. Im Vergleich zu der Permutation 203A empfängt die
Signalverarbeitungseinheit SP3 300D das Datenfeld C, wobei die
Signalverarbeitungseinheit SP2 300C das Datenfeld D empfängt, wobei
die Signalverarbeitungseinheit SP1 300B das Datenfeld A
empfängt,
und wobei die Signalverarbeitungseinheit SP0 300A das Datenfeld
B in der Permutation 203E empfängt.
-
Die
Permutationen der Halbwörter
können gemäß der vorliegenden
Erfindung auch mit dem Austausch der oberen und unteren Bits kombiniert werden.
In folgendem Bezug auf die Permutation 203F handelt es
sich bei dem Permutationsfeld 703 um ein Bitmuster 10100.
In diesem Fall werden die oberen und unteren Bits ausgetauscht und
eine Permutation des Halbwortes der oberen Bits wird ausgeführt, so
dass A und B und C und D getauscht werden, und wobei danach C und
D an dem Halbwort einer Permutation unterzogen werden. Im Vergleich
zu der Permutation 203A empfängt die Signalverarbeitungseinheit
SP3 300D das Datenfeld B, wobei die Signalverarbeitungseinheit
SP2 300C das Datenfeld A empfängt, wobei die Signalverarbeitungseinheit SP1 300B das
Datenfeld C empfängt,
und wobei die Signalverarbeitungseinheit SP1 300A das Datenfeld D
in der Permutation 203F empfängt. In folgendem Bezug auf
die Permutation 203G handelt es sich bei dem Permutationsfeld 703 um
ein Bitmuster 10001. In diesem Fall werden die Datenbusfelder ausgetauscht,
und eine Permutation an dem Halbwort der unteren Bits wird ausgeführt, was
zu einer Neuausrichtung der Datenbusfelder führt, wie dies in der Permutation 203G dargestellt
ist. In folgendem Bezug auf die Permutation 203H entspricht
das Permutationsfeld 703 einem Bitmuster 10101. In diesem
Fall werden die Datenbusfelder ausgetauscht, und eine Permutation
der Halbwörter
an den oberen Bits und den unteren Bits ist aufgetreten, die zu
einer Neuausrichtung der Datenbusfelder geführt hat, wie dies in der Permutation 203H dargestellt
ist.
-
Durch
das Permutationsfeld wird auch eine Übertragung vorgesehen, wie
dies durch die Permutationen 203I, 203J, 203K und 203L dargestellt
ist. Zum Beispiel wird in Bezug auf die Permutation 203I angenommen,
dass diese einem Permutationsfeld 703 eines Bitmusters
01001 entspricht. In diesem Fall wird das Datenfeld A zu jeder der
Signalverarbeitungseinheiten 300A bis 300D übertragen.
Das heißt, jede
der Signalverarbeitungseinheiten 300A bis 300D liest
das Datenfeld A von dem Datenbus als Operand. Für die Permutation 203J mit
dem Permutationsfeld mit dem Bitmuster 01100 wird das Datenfeld
B zu jeder der Signalverarbeitungseinheiten übertragen. Für die Permutation 203K mit
dem Permutationsfeld mit einem Bitmuster 00010 wird das Datenfeld
C zu jeder der Signalverarbeitungseinheiten 300A bis 300D übertragen.
Für die
Permutation 203L entspricht das Permutationsfeld einer
Kombination 00011, und das Datenfeld D wird zu jeder der Signalverarbeitungseinheiten 300A bis 300D übertragen.
Auf diese Weise können
verschiedene Kombinationen von Permutationen und des Austauschs von
Datenbusfeldern an dem Datenbus für eine Neuausrichtung in die
entsprechenden Signalverarbeitungseinheiten 300A bis 300D ausgewählt werden.
-
Der
Z-Ausgangsbus 532 führt
die Ergebnisse der Ausführungseinheiten
zurück
zu dem Speicher. Die Daten an dem Z-Ausgangsbus 532 werden nicht
permutiert oder typisiert, während
sie zurück
zu dem Speicher verlaufen. Die entsprechenden Signalverarbeitungseinheiten 300A bis 300D steuern
die entsprechende Anzahl von Datenbits (16, 32 oder 64) auf den
Z-Ausgangsbus 532, und zwar abhängig von der Art der Operationen.
Der Speicher schreibt die von dem Z-Ausgangsbus 532 empfangenen
Daten unter Verwendung von Halbwort-Strobes, die mit den Daten transportiert
werden, um die Gültigkeit
anzuzeigen.
-
In
folgendem Bezug auf die Abbildung aus 10 veranschaulicht
ein Querschnitts-Blockdiagramm die Datentypisierungs- und Ausrichtungseinrichtungen 502A, 502B, 502C und 502D der
entsprechenden Signalverarbeitungsblöcke 300A, 300B, 300C und 300D.
Jede der Datentypisierungs- und Ausrichtungseinrichtungen 502A, 502B, 502C und 502D weist
eine Instanz eines Bus-Multiplexers 1001 für den X-Bus 531 und
einen Bus-Multiplexer 1002 für den Y-Bus 513 auf.
Zum Beispiel weist die Datentypisierungs- und Ausrichtungseinrichtung 502A der Signalverarbeitungseinheit
SP0 300A den Bus-Multiplexer 1001A und den Bus-Multiplexer 1002A auf. Ein
Eingang des Multiplexers 1001A ist mit dem X-Bus 531 gekoppelt,
und ein Ausgang ist mit dem SX0-Bus 1005A gekoppelt. Ein
Eingang des Bus-Multiplexers 1002A ist mit dem Y-Bus 533 gekoppelt,
und ein Ausgang ist mit dem SY0-Bus 1006A gekoppelt. Ein
Steuerbus 1011 ist mit jeder Instanz der Bus-Multiplexer 1001 gekoppelt,
was jeweils eine unabhängige
Steuerung vorsieht, um die Datentypisierungsausrichtung und jede
für den X-Bus 531 in
die Signalverarbeitungseinheiten ausgewählte Permutation auszuführen. Ein
Steuersignalbus 1011 ist in jeden der Bus-Multiplexer 1001A bis 1001D gekoppelt.
Ein Steuersignalbus 1012 ist in jeden der Bus-Multiplexer 1002A bis 1002D gekoppelt.
Die Steuersignalbusse 1011 und 1012 sehen eine
unabhängige
Steuerung jedes Bus-Multiplexers vor, um die Datentypisierungsausrichtung
und jede für
den X-Bus 531 und entsprechend den Y-Bus 533 ausgewählte Permutation
in die Signalverarbeitungseinheiten 300 auszuführen. Die
Ausgaben SX0 Bus 1005 uns SY0 Bus 1006 von jedem
der Bus-Multiplexer 1001 und 1002 sind in die
Multiplexer der Addierer und Multiplizierer in den entsprechenden
Signalprozessoren 300 gekoppelt, und zwar zur Auswahl als
entsprechende X- und Y-Operanden.
-
In
folgendem Bezug auf die Abbildung aus 11 ist
eine Instanz jedes Bus-Multiplexers 1001 und 1002 entsprechend
mit 1001 und 1002 bezeichnet dargestellt. Jede
Instanz des Bus-Multiplexers 1001 weist
die Multiplexer 1101 und 1102 auf, um Daten von
dem X-Bus 531 innerhalb jeder Signalverarbeitungseinheit 300 entsprechend
auf jeden SXA-Bus 550 und SXM-Bus 552 zu multiplexieren. Jede
Instanz des Bus-Multiplexers 1002 weist
die Multiplexer 1104 und 1106 auf, um Daten von
dem Y-Bus 533 auf jeden SYA-Bus 554 und entsprechend jeden
SYM-Bus 556 innerhalb der Signalverarbeitungseinheit 300 zu
multiplexieren. In dem bevorzugten Ausführungsbeispiel ist der X-Bus 531 vierundsechzig
Bits breit, wobei diese alle zur Auswahl in die Multiplexer 1101 und 1102 gekoppelt
sind. In dem bevorzugten Ausführungsbeispiel
ist der Y-Bus 533 vierundsechzig Bits breit, die alle zur
Auswahl in die Multiplexer 1104 und 1106 gekoppelt
sind. Der Ausgang SXA 550 des Multiplexers 1101 und
der Ausgang SYA 554 des Multiplexers 1104 in dem
bevorzugten Ausführungsbeispiel
sind jeweils vierzig Bits breit, zur Kopplung in den Addierer A1 510A und
den Addierer A2 510B. Der Ausgang SXM 552 des
Multiplexers 1102 und der Ausgang SYM 556 des
Multiplexers 1106 in dem bevorzugten Ausführungsbeispiel sind
jeweils sechzehn Bits breit, zur jeweiligen Kopplung in den Multiplizierer
M1 504A. Die Ausgangsbusse SXA 550 und SXM 552 bilden
die in der Abbildung aus 10 veranschaulichten
SX-Busse 1005 für
jede Signalverarbeitungseinheit 300. Die Ausgangsbusse
SYA 554 und SYM 556 bilden die SY-Busse 1006 gemäß der Abbildung
aus 10 für jede
Signalverarbeitungseinheit 300.
-
Der
Steuersignalbus 1011 weist einen Steuersignalbus 1011A auf,
der in jeden Multiplexer 1101 gekoppelt ist, und einen
Steuersignalbus 1011B, der in jeden Multiplexer 1102 gekoppelt
ist, zur jeweils unabhängigen
Steuerung dieser. Der Steuersignalbus 1012 weist einen
Steuersignalbus 1012A auf, der in jeden Multiplexer 1104 gekoppelt
ist, und einen Steuersignalbus 1012B, der in jeden Multiplexer 1106 gekoppelt
ist, zur jeweils unabhängigen
Steuerung dieser.
-
Die
Multiplexer 1101 und 1102 in jeder der Datentypisierungs- und Ausrichtungseinrichtungen 502 jeder
Signalverarbeitungseinheit empfangen die gesamte Datenbusbreite
des X-Busses 531. Die Multiplexer 1104 und 1106 in
jeder der Datentypisierungs- und Ausrichtungseinrichtungen 502 jeder
Signalverarbeitungseinrichtung empfangen die gesamte Datenbusbreite
des Y-Busses 533. Wenn alle Bits jedes Datenbusses zur
Verfügung
stehen, können
die Multiplexer 1101, 1102, 1104 und 1106 die
flexible Datentypisierung, Datenausrichtung und Permutation der
Operanden ausführen.
Als Reaktion auf die Steuersignale der Steuersignalbusse 1011 und 1012 wählt jeder
der Multiplexer 1101, 1102, 1104 und 1106 unabhängig aus,
welche Bits des X-Busses 531 oder des Y-Busses 533 für den entsprechenden
Operanden für
den entsprechenden Signalprozessor 300 verwendet werden
sollen, wobei die Bits in entsprechende Bitpositionen an den Ausgangsbussen
SXA 550, SXM 552, SYA 554 und SYM 556 entsprechend ausgerichtet
werden, zur Verwendung durch 16-Bit-Multiplizierer (M1 504A)
und 40-Bits-Addierer (A1 510A und
A2 510B).
-
Während dem
Ausrichtungsvorgang fügen die
Multiplexer 1101, 1102, 1104 und 1106 ferner
logische Nullen und/oder Einsen in entsprechende Bitpositionen ein,
um eine entsprechende Ausrichtung umzusetzen und um Vorzeichen-
und Schutz-Biterweiterungen
vorzusehen. Zum Beispiel kann der Multiplexer 1101A der
Signalverarbeitungseinheit 300A die Bits 0 bis 15 der vierundsechzig
Bits des X-Busses 531 als den Operanden für den Addierer
auswählen
und diese Bits in die Bitpositionen 31 bis 16 multiplexieren und
Nullen in den Bitpositionen 0 bis 15 einfügen und das Bit 31 per Vorzeichen
in die Bitpositionen 32 bis 39 erweitern, so dass ein 40-Bit-Operand
an dem SXA-Bus 550 erzeugt wird. Zur Ausführung von
Permutationen wählen
die Multiplexer aus, welche sechzehn Bits (A, B, C oder D) der vierundsechzig
Bits des X-Busses und des Y-Busses von der entsprechenden Signalverarbeitungseinheit 300 empfangen
werden. Zum Beispiel würde
in Bezug auf eine Übertragung
von A auf dem Y-Bus 533 für eine Multiplikationsoperation
jeder der Multiplexer 1106 für jede Signalverarbeitungseinheit 300 die
Bits 0 bis 15 (die A entsprechen) von dem Y-Bus 533 auswählen, und
zwar für
einen Empfang durch alle Signalverarbeitungseinheiten 300 auf
ihren entsprechenden SYM-Bussen 556.
-
Die
Multiplexer 1101, 1102, 1104 und 1105 wandeln
als Reaktion auf die entsprechenden Steuersignale automatisch die
Anzahl der Datenbits von dem Datenbus in die entsprechende Anzahl
von Datenbits eines Operanden um, den der Addierer verwenden kann.
Als Reaktion auf die entsprechenden Steuersignale wählen ferner
die Multiplexer 1101, 1102, 1104 und 1105 die
entsprechenden Daten von dem X-Bus und dem Y-Bus aus. Zu diesem
Zweck arbeiten die Multiplexer 1101, 1102, 1104 und 1105 in jeder
Signalverarbeitungseinheit mehr wie Koppelpunktschalter bzw. Koppelpunkt-Switches,
wobei jedes Bit auf dem X- oder Y-Bus in jedes Bit der SXA-, SXM-,
SYA- oder SYM-Busse ausgegeben werden kann, und wobei logische Nullen/Einsen
in jedes Bit der SXA-, SXM-, SYA- oder SYM-Busse ausgegeben werden
kann. Auf diese Weise können
die Multiplexer 1101, 1102, 1104, 1106 eine
Permutationsfunktion ausführen
und die Bits entsprechend zur Verwendung durch einen 40-Bit-Addierer oder einen 16-Bit-Multiplizierer
ausrichten.
-
In
folgendem Bezug auf die Abbildungen der 12A bis 12G sind Diagramme der Ausrichtung realer
und imaginärer
flexibler Datentypen für
die 16-Bit-Multiplizierer und die 40-Bit-Addierer des bevorzugten Ausführungsbeispiels
der vorliegenden Erfindung dargestellt. In jeder Reihe bzw. Zeile
jedes Diagramms ist der Datentyp in der ganz linken Spalte dargestellt,
wobei die Ausgabe auf einen oder mehrere der SXA-, SYA-, SXM- oder
SYM-Datenbusse in der zentralen Spalte dargestellt ist, und wobei
in der am weitesten rechts angeordneten Spalte die äquivalente
Signalverarbeitungskonfiguration der Signalprozessoren 300A bis 300D eines
Kernprozessors 200 zur Ausführung einer Operation dargestellt
ist. Der Datentyp ist in einem vektorisierten Format dargestellt,
unter Verwendung der Variable N zur Bezeichnung der Anzahl der Vektoren
oder der Häufigkeit,
mit welcher der Operand eingesetzt wird. Wenn die Variable N Eins
ist, so wird erwartet, dass eine Operation mit der Gruppe von X-
und Y-Operanden ausgeführt
wird. Wenn die Variable N gleich Zwei ist, wird erwartet, dass zwei
Operationen gemeinsam in einem Zyklus an zwei Gruppen von X- und Y-Operanden
ausgeführt
werden. In jedem Fall müssen
Datentypen mit zwei Operanden spezifiziert werden, und wenn keine Übereinstimmung
gegeben ist, muss eine Datentypangleichung bzw. ein Datentypabgleich ausgeführt werden,
wie dies nachstehend im Text in Bezug auf die Abbildungen der 13A bis 13C, 14 und 15 beschrieben wird.
-
Zum
Beispiel können
die Datentypen 1 × 4R, 1 × 8R, 1 × 16R, 1 × 32R, 2 × 4R, 2 × 8R, 2 × 16R, 1 × 4C, 1 × 8C, 1 × 16C, 1 × 32C, 2 × 4C, 2 × 8C und 2 × 16C alle
parallel über
die 64 Bit X- und/oder Y-Busse parallel in die Signalverarbeitungseinheiten geladen
werden, indem sie in vier oder acht 16-Bit-Felder gepackt werden.
Die vollständige
Bitbreite der Datentypen 2 × 32R,
1 × 40R
und 1 × 40C kann
gemeinsam in einem Zyklus in die Signalverarbeitungseinheiten geladen
werden, wenn beide 64 Bits der X- und Y-Busse verwendet werden,
um zwei Operanden während
dem gleichen Zyklus zu laden. Die Datentypen von 2 × 32C oder
höherer
Ordnung können
mehrere Zyklen zum Laden der Operanden über die 64 Bit X- und/oder
Y-Busse erfordern. Zudem kann ein oberes Halbwort (d.h. sechzehn
Bits) eines 32-Bit- oder
40-Bit-Operanden verwendet werden, um zum Beispiel einen Angleich
an einen 16-Bit-Multiplizierer vorzusehen. In diesem Fall können die
niedrigeren Bits entsorgt werden, da sie für den Betrieb bzw. die Funktionsweise
bedeutungslos sind. Andere Bitbreiten eines Halbwortes sind möglich für die Angleichung
anderer Hardwarekomponenten einer bestimmten Bitbreite. Der Einsatz
von Halbwörtern
ermöglicht
das Laden der Datentypen 2 × 32R,
1 × 40R
und 1 × 40C
und der Operanden in weniger Signalverarbeitungseinheiten und vermeidet Transportpfade,
die ansonsten erforderlich sein würden.
-
In
folgendem Bezug auf die Abbildung aus 12A zeigt
diese ein beispielhaftes Diagramm für die Ausrichtung der Datentypen
1 × 4R,
1 × 8R,
1 × 16R,
1 × 32R
und 1 × 40R
in einen 40-Bit-Addierer. Mit Ausnahme des 40-Bit-Datentyps von
1 × 40R
befindet sich das Vorzeichenbit in jedem Fall in dem Bit 31 des
40-Bit-Datentwortes
und ist in die 40-Bit-Addierer gekoppelt. Das Datenfeld stammt in
jedem Fall aus dem Speicher an dem X- oder Y-Bus oder von einem
Register von einem andern Bus.
-
Das
4-Bit-Datenfeld eines 1 × 4R-Datentyps von
dem X- oder Y-Bus wird an den Bitpositionen 28 bis 31 mit dem Vorzeichenbit
in dem Bit 31 des SXA- oder SYA-Busses ausgerichtet. Das Vorzeichenbit
ist als das werthöchste
Bit (MSB) in einem 4-, 8-, 16- oder 32-Bit-Wort eines Operanden
enthalten. Nullen sind gepackt oder eingefügt in die wertniedrigsten Bits
(LSBs) der Bits 0 bis 27 des SXA-Busses oder des SYA-Busses, so
dass sie eine Ausfüllfunktion
erfüllen.
Schutzbits, welche das erweiterte Vorzeichenbit 31 aufweisen, werden
den Bits 32 bis 39 von SXA oder SYA zugeordnet. Auf diese Weise
wird der 1 × 4R
Datentyp in ein 40-Bit-Wort umgewandelt, das von einem der 40-Bit-Addierer in einer
Signalverarbeitungseinheit 300 für eine Additions-, Subtraktions- oder
eine Min/Max-Operation verwendet wird.
-
Das
8-Bit-Datenfeld des 1 × 8R-Datentyps von
dem X- oder Y-Bus wir in die Bits 24 bis 31 von SXA oder SYA mit
einem Vorzeichenbit in dem Bit 31 zugeordnet. Nullen werden in die
LSBs der Bits 0 bis 23 gepackt oder eingefügt. Schutzbits, welche das erweiterte
Vorzeichenbit 31 aufweisen, werden den Bits 32 bis 39 zugeordnet.
Auf diese Weise wird der 1 × 8R
Datentyp in ein 40-Bit-Datenwort umgewandelt, das von einem der
40-Bit-Addierer in einer Signalverarbeitungseinheit 300 für eine Additions-,
Subtraktions- und/oder Min/Max-Operation verwendet wird.
-
Für einen
1 × 16R
Datentyp wird das 16 Bit Datenfeld von dem X- oder Y-Bus in den Bits 16 bis 31 ausgerichtet,
wobei das Vorzeichenbit in Bit 31 auf dem SXA- oder dem SYA-Bus
enthalten ist. Nullen werden in die LSBs der Bits 0 bis 15 gepackt
oder eingefügt,
während
Schutzbits den Bits 32 bis 39 zugeordnet werden. Auf diese Weise
wird der 1 × 16R Datentyp
in ein 40-Bit-Wort umgewandelt, das von einem der 40-Bit-Addierer
in einer Signalverarbeitungseinheit 300 für eine Additions-,
Subtraktions- und/oder Min/Max-Operation verwendet wird.
-
Für einen
1 × 32R
Datentyp wird das 32-Bit-Datenfeld von dem X- oder Y-Bus in die Bits 0 bis 31 ausgerichtet,
wobei das Vorzeichenbit als das Bit 31 enthalten ist. Die Schutzbits,
die das erweiterte Vorzeichenbit 31 aufweisen, werden gemeinsam
in die Bits 32 bis 39 gepackt, um das 40-Bit-Wort fertig zu stellen.
Auf diese Weise wird der 1 × 32R
Datentyp in ein 40-Bit-Wort umgewandelt, das von einem der 40-Bit-Addierer
in einer Signalverarbeitungseinheit 300 für eine Additions-,
Subtraktions- und/oder Min/Max-Operation verwendet wird.
-
Für einen
1 × 40R
Datentyp werden alle vierzig Bits des Datenfelds von dem X- oder
Y-Bus in die Bits 0 bis 39 des SXA- oder SYA-Busses zugeordnet, so dass
ein Addierer einer Signalverarbeitungseinheit eine Additions-, Subtraktions- und/oder Min/Max-Operation
unter gleichzeitiger Verwendung aller vierzig Bits des Datenfelds
ausführen
kann.
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, erleichtern
die Multiplexer 1101 und 1104 die Umwandlung realer
Datentypen in 40-Bit-Felder zur Verwendung durch einen 40-Bit-Addierer
in einer Signalverarbeitungseinheit. Jeder dieser Multiplexer wechselt
die Datenfelder in die entsprechenden Bitpositionen, einschließlich des
Vorzeichenbits und füllender
Nullen in die nicht verwendeten LSBs, und wobei die Schutzbits nach
Bedarf dem SXA-Bus 550 und dem SYA-Bus 554 zugeordnet
werden.
-
In
folgendem Bezug auf die Abbildung aus 12B ist
ein beispielhaftes Diagramm der Ausrichtung der realen Datentypen
1 × 4R,
1 × 8R,
1 × 16R,
1 × 32R
und 1 × 40R
in 16-Bit-Wörter
für 16-Bit-Multiplizierer
dargestellt. Für
einen 1 × 4R
Datentyp werden die Bits 0 bis 3 des 4-Bit-Datenfelds von dem X-
oder Y-Bus in die Bitpositionen 12 bis 15 des entsprechenden SXM-
oder SYM-Busses
zugeordnet. Nullen werden in die wertniedrigsten Bits (LSBs) der
Bits 0 bis 11 des SXA- oder SYA-Busses gepackt oder eingefügt, um auszufüllen. Auf
diese Weise wird ein Datenabtastwert des Datentyps 1 × 4R in ein
16-Bit-Wort umgewandelt, das von einem der 16-Bit-Multiplizierer
in einer Signalverarbeitungseinheit 300 für eine Multiplikation
oder eine MAC-Operation verwendet wird.
-
Für einen
Datentyp 1 × 8R
befinden sich die Bits 0 bis 7 des 8-Bit-Datenfelds von dem X- oder Y-Bus
in den entsprechenden Bits 8 bis 15 des SXM- oder SYM-Busses, wobei
die Nullen in die Bits 0 bis 7 gepackt sind. Auf diese Weise wird
der Datentyp 1 × 8R
in ein 16-Bit-Wort zur Verwendung durch einen 16-Bit-Multiplizierer
einer Signalverarbeitungseinheit 300 umgewandelt.
-
Für einen
1 × 16R
Datentyp werden die Bits 0 bis 15 des 16-Bit-Datenfelds des X- oder Y-Busses in den
Bits 0 bis 15 des SXM- oder
SYM-Busses ausgerichtet, so dass eine Signalverarbeitungseinheit alle
16 Bits gleichzeitig multiplizieren kann.
-
Für einen
Datentyp von 1 × 32R
werden die Bits 0 bis 32 des Datenfelds von dem X- oder Y-Bus in
zwei 16-Bit-Halbwörter
aufgeteilt. Die Bits 16 bis 31 werden in ein oberes Halbwort in
die Bits 0 bis 15 des SXM- oder SYM-Busses einer Signalverarbeitungseinheit 300 ausgerichtet.
In einem Ausführungsbeispiel
wird auf die Bits 0 bis 15 des unteren Halbwortes des Operanden
verzichtet, da sie nicht von Bedeutung sind. In diesem Fall wird
eine Signalverarbeitungseinheit verwendet, um die sechzehn Informationsbits
des oberen Halbwortes für
jeden Operanden zu verarbeiten. In einem alternativen Ausführungsbeispiel
kann das untere Halbwort der Bits 0 bis 15 in die Bits 0 bis 15
des SXM- oder SYM-Busses einer anderen Signalverarbeitungseinheit
ausgerichtet werden. In diesem Fall werden zwei Signalverarbeitungseinheiten
verwendet, um die sechzehn Informationsbits für jedes Halbwort zu multiplizieren,
und wobei die Signalverarbeitungseinheit niedriger Ordnung einen Übertragssignalpfad
zu der Signalverarbeitungseinheit höherer Ordnung aufweist, um
das 32-Bit-Datenfeld zu verarbeiten. Unter Verwendung eines Ausführungsbeispiels
ohne einen Übertragssignalpfad
zwischen den Signalverarbeitungseinheiten reduziert sich jedoch
die Verarbeitungszeit.
-
Für einen
Datentyp von 1 × 40R
werden die Bits 0 bis 39 des 40-Bit-Datenfelds
von dem X- oder Y-Bus in einem Ausführungsbeispiel auf ein 16-Bit-Halbwort
reduziert, in dem die acht werthöchsten
Bits (MSBs) und die sechzehn wertniedrigsten Bits (LSBs) entsorgt
werden. In diesem Fall werden die Bits 16 bis 31 der vierzig Bits
für den
ursprünglichen
Operanden als Multiplikationsoperand für eine Signalverarbeitungseinheit
ausgewählt.
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, erleichtern
die Multiplexer 1102 und 1106 die Umwandlung realer
Datentypen in 16-Bit-Felder zur Verwendung durch einen 16-Bit-Addierer
in einer Signalverarbeitungseinheit. Jeder dieser Multiplexer wechselt
die Datenfelder an die entsprechenden Bitpositionen mit füllenden
Nullen in die nicht verwendeten LSBs, wie dies für die SXM-Busse 552A/552B und
die SYM-Busse 556A/556B erforderlich ist. Jeder
der Multiplexer 1102 und 1106 führt die
Permutationsoperation, die Ausrichtungsoperation und die Nulleinfügung für die entsprechenden Multiplizierer
in jeder der Signalverarbeitungseinheiten 300A bis 300D aus.
-
In
folgendem Bezug auf die Abbildung aus 12C zeigt
diese ein beispielhaftes Diagramm der Ausrichtung komplexer Datentypen
1 × 4C,
1 × 8C,
1 × 16C,
1 × 32C,
1 × 32C
und 1 × 40C
in eines oder mehrere 40-Bit-Wörter
für einen
oder mehrere 40-Bit-Addierer.
-
Für komplexe
Datentypen werden mindestens zwei Signalverarbeitungseinheiten verwendet, um
die komplexen Berechnungen der realen und imaginären Terme auszuführen. Für die 40-Bit-Addierer
empfängt
für gewöhnlich eine
Signalverarbeitungseinheit des realen Datenabschnitts, während eine
andere Signalverarbeitungseinheit den imaginären Datenabschnitt komplexer
Datentypoperanden empfängt.
-
Für einen
Datentyp 1 × 4C
werden die Bits 0 bis 4 des realen Datenfelds entsprechend in die
Bits 28 bis 31 ausgerichtet, mit einem Vorzeichenbit an der Bitposition
31 eines ersten 40-Bit-Wortes. Schutzbits
werden den Bitfeldern 32 bis 39 hinzugefügt, während Nullen in die Bits 0
bis 27 des ersten 40-Bit-Wortes eingefügt werden. In ähnlicher
Weise werden die Bits 0 bis 4 des imaginären Datenfelds entsprechend
in den Bits 28 bis 31 ausgerichtet, mit einem Vorzeichenbit an der
Bitposition 31 eines zweiten 40-Bit-Wortes. Schutzbits werden den
Bits 32 bis 39 zugeordnet, während
Nullen in die Bits 0 bis 27 de zweiten 40-Bit-Wortes gepackt werden.
Auf diese Weise werden 1 × 4C
komplexe Datentypen in zwei 40-Bit-Wörter als Operanden für zwei 40-Bit-Addierer in
zwei Signalverarbeitungseinheiten umgewandelt.
-
Für einen
Datentyp 1 × 8C
befinden sich die Bits 0 bis 7 des realen Datenfelds von dem X-
oder Y-Bus an den Bitpositionen 24 bis 31, mit einem Vorzeichenbit
an der Bitposition 31 eines 40-Bit-Operanden auf einem der SXA-
oder SYA-Busse. Schutzbits werden den Bitpositionen 32 bis 39 zugeordnet,
während
Nullen in die Bits 0 bis 23 des ersten 40-Bit-Operanden gepackt
werden. Die Bits 0 bis 7 des komplexen Datenfelds von dem X- oder Y-Bus wird
in die Bits 24 bis 31 ausgerichtet, wobei sich ein Vorzeichenbit
an der Bitposition 31 eines zweiten 40-Bit-Operanden befindet, auf einem anderen
SXA- oder SYA-Busse. Schutzbits, die zu Beginn auch alle Nullen
sind, werden den Bitpositionen 32 bis 39 zugeordnet, während Nullen
in die Bits 0 bis 23 des zweiten 40-Bit-Operanden gepackt werden.
Auf diese Weise werden 1 × 8C
komplexe Datentypen in zwei 40-Bit-Wörter
als Operanden für
zwei 40-Bit-Addierer in zwei Signalverarbeitungseinheiten umgewandelt.
-
Für einen
1 × 16C
Datentyp werden die Bits 0 bis 16 des realen Datenfelds von dem
X- oder Y-Bus in die Bits 16 bis 31 zugeordnet, mit einem Vorzeichenbit
an der Bitposition 31 für
einen ersten 40-Bit-Operanden an einem der SXA- oder SYA-Busse. Schutzbits
werden den Bitpositionen 32 bis 39 zugeordnet, wobei Nullen in die
Bitpositionen 0 bis 15 des ersten 40-Bit-Operanden gepackt werden.
In ähnlicher
Weise werden die Bits 0 bis 16 des imaginären Datenfelds von dem X- oder Y-Bus in die
Bits 16 bis 31 ausgerichtet, mit einem Vorzeichenbit in dem Bit
31 für
einen zweiten 40-Bit-Operanden auf einem anderen der SXA- oder SYA-Busse.
Schutzbits sind den Bitpositionen 32 bis 39 zugeordnet, und Nullen
werden in die Bitpositionen 0 bis 15 des zweiten 40-Bit-Operanden
auf dem SXA- oder SYA-Bus gepackt.
-
Für einen
1 × 32C
Datentyp werden die Bits 0 bis 31 der 32 Bits realer Daten entsprechend
in die Bits 0 bis 31 ausgerichtet, mit einem Vorzeichenbit an der
Bitposition 31 eines ersten 40- Bit-Operanden
auf feinem der SXA- oder SYA-Busse. Schutzbits werden den Bitpositionen
32 bis 39 für
den ersten 40-Bit-Operanden
zugeordnet. In ähnlicher
Weise werden die Bits 0 bis 31 des imaginären Datenfelds in die Bitpositionen
0 bis 31 zugeordnet, mit dem Vorzeichenbit an der Bitposition 31
eines zweiten 40-Bit-Operanden an einem anderen der SXA- oder SYA-Busse. Schutzbits
werden in die Bits 32 bis 39 des zweiten 40-Bit-Operanden eingefügt. Somit wird der 1 × 32C Datentyp
in zwei 40-Bit-Operanden für zwei
40-Bit-Addierer von zwei Signalverarbeitungseinheiten 300 zur
Verarbeitung sowohl imaginärer
als auch realer Terme in einem Zyklus umgewandelt.
-
Für einen
1 × 40C
komplexen Datentyp werden die Bits 0 bis 39 des realen Datenfelds
von den X- oder Y-Bussen in die Bits 0 bis 39 eines ersten 40-Bit-Operanden
an einem der SXA- oder SYA- Busse zur Verwendung durch eine Signalverarbeitungseinheit
ausgerichtet. Die Bits 0 bis 39 des imaginären Datenfelds von dem X- oder
Y-Bus werden in die Bitpositionen 0 bis 39 eines zweiten 40-Bit-Operanden
an einem anderen der SXA- oder SYA-Busse ausgerichtet, zur Verwendung
einer zweiten Signalverarbeitungseinheit, so dass zwei Signalverarbeitungseinheiten
verwendet werden können,
um beide 40-Bit-Datenfelder in einem Zyklus zu verarbeiten.
-
In
folgendem Bezug auf die Abbildung aus 12D zeigt
diese ein beispielhaftes Diagramm der Ausrichtung der komplexen
Datentypen 2 × 16C,
2 × 32C
und 2 × 40C
in vier 40-Bit-Wörtern
für vier 40-Bit-Addierer.
In diesem Fall werden zwei Operandengruppen (Daten 1 und Daten 2)
gemeinsam mit dem gleichen Zyklus mit flexiblen Bitbreiten eingeführt.
-
Für den 2 × 16C komplexen
Datentyp werden vier 16 Bit Datenfelder von dem X- oder Y-Bus in vier
40-Bit-Operanden ausgerichtet, jeweils eins für jede der Signalverarbeitungseinheiten 300A bis 300D.
Die Bits 0 bis 15 des realen Datenfelds für Daten 1 von dem X- oder Y-Bus
werden in den entsprechenden Bits 16 bis 31 eines ersten 40-Bit-Operanden ausgerichtet,
mit einem Vorzeichenbit an der Bitposition 31 auf einem der SXA-
oder SYA-Busse für eine
erste Signalverarbeitungseinheit. Die Bits 0 bis 15 des komplexen
Datenfelds für
die Daten 1 von dem X- oder Y-Bus werden in den Bits 16 bis 31 eines zweiten
40-Bit-Operanden entsprechend ausgerichtet, mit dem Vorzeichenbit
an der Bitposition 31 auf einem anderen der SXA- oder SYA-Busse
für eine zweite
Signalverarbeitungseinheit. Die Bits 0 bis 15 des realen Datenfelds
für Daten
2 von dem X- oder Y-Bus werden entsprechend in den Bits 16 bis 31
eines dritten 40-Bit-Operanden
ausgerichtet, mit einem Vorzeichenbit an der Bitposition 31 auf
einem weiteren der SXA- oder SYA-Busse für eine dritte Signalverarbeitungseinheit.
Die Bits 0 bis 15 des komplexen Datenfelds für Daten 2 von dem X- oder Y-Bus werden
entsprechend in den Bits 16 bis 31 eines vierten 40-Bit-Operanden ausgerichtet,
mit dem Vorzeichenbit an der Bitposition 31 an einem weiteren der SXA-
oder SYA-Busse für
eine vierte Signalverarbeitungseinheit. Nullen werden in die Bitpositionen
0 bis 15 gepackt, und Schutzbits werden den Bits 32 bis 39 in jedem
der 40-Bit-Operanden auf den vier SXY- oder vier SYA-Bussen zugeordnet,
wie dies in der Abbildung aus 12D dargestellt
ist. Somit wird der 2 × 16C
komplexe Datentyp in vier 40-Bit-Operanden ausgerichtet, zur Verwendung
durch vier 40-Bit-Addierer in vier Signalverarbeitungseinheiten.
-
Der
2 × 32C
komplexe Datentyp und der 2 × 40C
komplexe Datentyp werden in vier Operanden ausgerichtet, ähnlich dem
2 × 16
Datentyp, jedoch mit unterschiedlichen Bitausrichtungen und dem
Einfügen
von Nullen oder der Zuordnung von Schutzbits. Diese Bitausrichtungen
und das Packen/Einfügen von
Nullen und die Zuordnungen der Schutzbits entsprechen der Abbildung
aus 12D.
-
Auf
diese Weise können
zwei 2 × SC
komplexe Datentypen, wobei S durch die Breite des Addierers begrenzt
ist, können
in vier Operanden zur Verwendung durch vier Addierer in vier Signalverarbeitungseinheiten 300 ausgerichtet
werden, zur Verarbeitung des komplexen Datentypen in einem Zyklus.
-
In
folgendem Bezug auf die Abbildung aus 12E ist
ein beispielhaftes Diagramm der Ausrichtung der komplexen Datentypen
1 × 4C,
1 × 8C, 1 × 16C, 1 × 32C und
1 × 40C
in eines oder mehrere 16-Bit-Wörter
für einen
oder mehrere 16-Bit-Multiplizierer
dargestellt.
-
Für einen
1 × 4C
komplexen Datentyp werden die Bits 0 bis 3 des realen Datenfelds
von dem X- oder Y-Bus werden in den entsprechenden Bits 12 bis 15
eines ersten 16-Bit-Operanden auf einem der SXM- oder SYM-Busse
ausgerichtet, wie dies in der Abbildung aus 12E dargestellt
ist. Die Bits 0 bis 3 des imaginären
Datenfelds von dem X- oder Y-Bus werden in entsprechenden Bits 12
bis 15 eines zweiten 16-Bit-Operanden auf einem anderen der SXM- oder
SYM-Busse angeordnet.
-
Die
Bits 0 bis 11 jedes der ersten und zweiten 16-Bit-Operanden werden
mit Nullen gepackt. Auf diese Weise wird jedes komplexe Element
eines 1 × 4C
komplexen Datentyps in zwei 16-Bit-Wörter als Operanden für zwei 16-Bit-Multiplizierer
in zwei Signalverarbeitungseinheiten umgewandelt. Der 1 × 8C Datentyp
und der 1 × 16C
Datentyp werden auf die gleiche Weise in zwei 16-Bit-Operanden wie
1 × 4C umgewandelt,
jedoch mit anderer Bitausrichtung, wie dies in der Abbildung aus 12E dargestellt und veranschaulicht ist. Die komplexen
Datentypen 1 × 4C,
1 × 8C
und 1 × 16C
aus 12E verwenden zwei Signalverarbeitungseinheiten
und richten ihre entsprechenden Datenbitfelder in zwei 16-Bit-Wörter zur Verwendung
durch zwei 16-Bit-Multiplizierer in zwei Signalverarbeitungseinheiten
in einem Zyklus aus.
-
Für einen
1 × 32C
komplexen Datentyp mit Operanden mit den Bits 0 bis 31 werden das
obere Halbwort der Bits 16 bis 31 der realen und imaginären Teile
jedes Operanden in einem Ausführungsbeispiel
von den Bussen SXM oder SYM ausgewählt und in zwei 16-Bit-Multiplizierer
multiplexiert, während
das untere Halbwort entsorgt wird. In einem alternativen Ausführungsbeispiel
werden das obere Halbwort und das untere Halbwort für die realen
und imaginären
Teile in vier 16-Bit-Multiplizierer
multiplexiert, zur Multiplikation mit einem Vortrag von dem unteren
Halbwort-Multiplizierer mit dem oberen Halbwort-Multiplizierer.
-
Für einen
1 × 40C
komplexen Datentyp mit Operanden mit den Bits 0 bis 39 werden ein
mittleres Halbwort der Bits 16 bis 31 der realen und imaginären Teile
jedes Operanden in einem Ausführungsbeispiel
ausgewählt
und von den Bussen SXM oder SYM in zwei 16-Bit-Multiplizierer multiplexiert,
während
die oberen Bits 32 bis 39 und das die Bits des unteren Halbworts
0 bis 15 verworfen werden. In einem alternativen Ausführungsbeispiel
wird Wort durch die Multiplexierer über mehrere Multiplizierer getrennt,
mit einem Vortrag bzw. Übertrag
von den Multiplizierern unterer Ordnung in Multiplizierer höherer Ordnung
für die
realen und imaginären
Terme des komplexen Datentyps.
-
In
folgendem Bezug auf die Abbildung aus 12F zeigt
diese ein beispielhaftes Diagramm der Ausrichtung komplexer Datentypen
2 × 32C
oder 2 × 40C
und 2 × 16C
in vier 16-Bit-Wörter
für vier 16-Bit-Multiplizierer.
-
Für 2 × 32C Datentypen
werden die Bits 0 bis 15 des oberen Halbwortes der realen Daten
(RHWu) eines ersten Operanden an dem X- oder Y-Bus entsprechend
in den Bits 0 bis 15 eines ersten 16-Bit-Operanden an einem der
SXM- oder SYM-Busse für
eine erste der Signalverarbeitungseinheiten ausgerichtet, und die
Bits 0 bis 15 des oberen Halbwortes des realen Datenfelds eines
zweiten Operanden von dem X- oder Y-Bus werden in den Bits 0 bis
15 eines zweiten 16-Bit-Operanden an einem der SXM- oder SYM-Busse für die erste
Signalverarbeitungseinheit ausgerichtet. Die Bits 0 bis 15 des oberen
Halbwortes (IHWu) der imaginären
Daten des ersten Operanden an dem X- oder Y-Bus werden in den Bitpositionen
0 bis 15 eines dritten 16-Bit-Operanden
auf einem der andern SXM- oder SYM-Busse für eine zweite Signalverarbeitungseinheit
ausgerichtet, und die Bits 0 bis 15 der oberen Hälfte der imaginären Daten
des zweiten Operanden an dem X- oder Y-Bus werden in den Bits 0
bis 15 eines vierten 16-Bit-Operanden auf einem anderen der SXM-
oder SYM-Busse für
die zweite Signalverarbeitungseinheit ausgerichtet. Somit verwendet
der 2 × 32C
komplexe Datentyp zwei Signalverarbeitungseinheiten und wandelt
die 32 Bit realen und imaginären
Datenfelder in 16-Bit-Operanden zur Verwendung durch die 16-Bit-Multiplizierer
in zwei Signalverarbeitungseinheiten.
-
Für 2 × 16C Datentypen
können
zwei komplexe Operanden spezifiziert und als einer über einen 64-Bit-Datenbus
in zwei Multiplizierer multiplexiert werden. In diesem Fall werden
die Bits 0 bis 15 des realen Datenfelds des ersten Operanden von
dem X- oder Y-Bus in den Bits 0 bis 15 eines ersten 16-Bit-Operanden an einem
der SXM- oder SYM-Busse für
eine Signalverarbeitungseinheit ausgerichtet, während die Bits 0 bis 15 der
imaginären Daten
des ersten Operanden an dem X- oder
Y-Bus in den Bits 0 bis 15 eines zweiten 16-Bit-Operanden auf einem
anderen der SXM- oder SYM-Busse für eine zweite Signalverarbeitungseinheit
ausgerichtet werden. Die Bits 0 bis 15 des realen Datenfelds des zweiten
Operanden an dem X- oder Y-Bus werden in den Bits 0 bis 15 eines
dritten 16-Bit- Operanden
für die
erste Signalverarbeitungseinheit ausgerichtet, und die Bits 0 bis
15 des imaginären
Datenfelds des zweiten Operanden an dem X- oder Y-Bus werden in den
Bits 0 bis 15 des vierten 16-Bit-Operanden auf einem anderen der
SXM- oder SYM-Busse für
die zweite Signalverarbeitungseinheit ausgerichtet. Somit verwendet
der 2 × 16C
Datentyp vier Signalverarbeitungseinheiten zur Verarbeitung jedes
der vier 16-Bit-Operanden in vier 16-Bit-Multiplizierern in einem
Zyklus.
-
In
folgendem Bezug auf die Abbildungen der 13A, 13B und 13C ist
die allgemeine Regel für
die Typenangleichung von zwei Operanden dargestellt. Im Allgemeinen
bezieht sich Datentypangleichung auf die gemeinsame Angleichung
von zwei unterschiedlichen Datentypen von zwei Operanden, so dass
sie ordnungsgemäß bzw. zweckmäßig für eine gegebene
digitale Signalverarbeitungsoperation verarbeitet werden können. In
der Abbildung aus 13A weist der erste Operand,
Operand 1, einen Datentyp von N1 × S1 real auf, und der zweite Operand, Operand
2, weist einen Datentyp N2 × S2 real auf. Die allgemeine Regel für den Typenabgleich
von Operanden zweier realer Datentypen ist die Bestimmung und Auswahl
des Maximums von N1 oder N2 und
des Maximums von S1 oder S2.
Alternativ können das
Minimum von N1 oder N2 bestimmt
und verworfen werden sowie das Minimum von S1 oder
S2, um einen Abgleich bzw. eine Angleichung
des Operandentyps vorzusehen. Die Angleichung des Operanden-Datentyps zeigt die
Anzahl der Signalverarbeitungseinheiten an, durch welche die Operanden
verarbeitet werden (Maximum von N1 oder
N2) und die Bitbreite beider Operanden (Maximum
von S1 oder S2).
Für die verschiedenen
Operandentypen sind die Multiplizierer und Addierer der Signalverarbeitungseinheiten mit
der besten Operandentypangleichung von zwei verschiedenen Operanden-Datentypen
versehen, um ein Ergebnis zu erzielen. Die Ausgabeergebnisse von
der an den unterschiedlichen Operanden ausgeführten Operation ist in Form
des abgeglichen Datentyps gegeben.
-
In
folgendem Bezug auf die Abbildung aus 13B handelt
es sich bei dem ersten Operanden, Operand 1, und bei dem zweiten
Operanden, Operand 2, um komplexe Datentypen. Die allgemeine Regel
für den
Operandentypenabgleich zweier komplexer Typen von Operanden entspricht
dem Abgleich für
zwei reale Datentypen, wobei das Ergebnis jedoch ein komplexer Datentyp
ist. Der Operanden-Datentypabgleich für die komplexen Datentypen umfasst
das Bestimmen und die Auswahl des Maximums von N1 oder
N2 und des Maximums von S1 oder
S2.
-
In
folgendem Bezug auf die Abbildung aus 13C handelt
es sich bei dem ersten Operanden, Operand 1, um einen realen Datentyp,
während
es sich bei dem zweiten Operanden, Operand 2, um einen komplexen
Datentyp handelt. Die allgemeine Regel für den Abgleich des Operanden-Datentyps
eines realen Datentyps und eines komplexen Datentyps ist die Auswahl
des Maximums von N1 oder N2 und
des Maximums von S1 oder S2,
mit einem komplexen Datentypabgleich. Das Maximum von N1 oder N2 stellt die Anzahl der erforderlichen Signalverarbeitungseinheiten
zur Verarbeitung des realen oder des imaginären Terms dar, und das Maximum
von S1 oder S2 stellt
die Bitbreite des Operanden dar, der in den Signalverarbeitungseinheiten
ausgerichtet werden soll. Die Multiplexer 1101, 1102, 1104 und 1106 in
jeder Instanz der Datentypisierungs- und Ausrichtungseinrichtung 502 führen die
Datentypangleichung zwischen Operand 1 und Operand 2 von dem X-Bus 531 oder
dem Y-Bus 533 als Reaktion auf die entsprechenden Multiplexer-Steuersignale
durch. Die Permutation und die Ausrichtung werden automatisch durch
den entsprechenden Kernprozessor 200 ausgewählt, um
einen Datentypabgleich für
die beiden Operanden durch die Steuerung der Bus-Multiplexer in
jede der Signalverarbeitungseinheiten vorzusehen.
-
Zusätzlich zu
dem automatischen Datentypabgleich gleicht die vorliegende Erfindung
die Datentypen ferner operativ durch die ausführende Operation ab (ADD, SUB,
MULT, DIVIDE, etc.), die Anzahl der funktionalen Einheiten (Addierer
und Multiplizierer) und deren entsprechende Bitbreiten in jeder der
Signalverarbeitungseinheiten 300A bis 300D, die Bitbreite
des automatischen Datentypabgleichs für die beiden Operanden, und
ob reale oder komplexe Datentypen involviert sind und ob skalare
oder Vektorfunktionen ausgeführt
werden sollen. Jede der Signalverarbeitungseinheiten 300A bis 300D weist zwei
Multiplizierer und drei Addierer auf. In dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung ist jeder der Multiplizierer sechzehn
Bits breit, und wobei jeder der Addierer vierzig Bits breit ist. Mehrere
Operanden des gleichen Datentyps können leicht verarbeitet werden
nach der Einrichtung nominaler Datentypen und dem Lesen neuer Daten
wie die neuen Operanden, und das Wiederholen der Multiplikation,
Addition oder andersartigen Signalverarbeitungsoperation.
-
In
folgendem Bezug auf die Abbildungen der 14, 15A und 15B sind
beispielhafte Diagramme des operativen Abgleichs von durch die vorliegende
Erfindung vorgesehenen Datentypen dargestellt. In jeder der Abbildungen
der 14, 15A und 15B ist
ein Datentyp für
einen ersten Operanden entlang der oberen Zeile dargestellt sowie
ein Datentyp für
einen zweiten Operanden ist entlang der am weitesten links dargestellten
Spalte abgebildet. Die Matrix zwischen der obersten Zeile und der
am weitesten links angeordneten Spalte in jeder der Abbildungen
zeigt den operativen Abgleich, der durch das Ausführungsbeispiel
der vorliegenden Erfindung vorgesehen wird.
-
In
der Abbildung aus 14 zeigt ein beispielhaftes
Diagramm den Datentypabgleich für
eine Multiplikationsoperation durch die Multiplizierer der Signalverarbeitungseinheiten.
Operanden mit Datentypen von vier und acht Bits sind in der Abbildung
aus 14 nicht dargestellt, wobei hiermit festgestellt wird,
dass diese Datentypen in 16-Bit-Operanden umgewandelt werden. In
der Abbildung aus 14 werden leeren Zellen in Bezug
auf das hierin beschriebene Ausführungsbeispiel
Operationen untersagt. Wenn jedoch die Anzahl von Signalverarbeitungseinheiten
von vier erweitert wird, und wenn die Datenbitbreite der Multiplizierer
von sechzehn Bits erweitert wird, können zusätzliche Operationen für andere
Kombinationen des Operanden-Datentyps ausgeführt werden. In jeder vollständigen Zelle
aus 14 erfordert die Operation zwei Zyklen für eine Vektoroperation
und drei Zyklen für
eine skalare Operation realer Datentypen. Eine skalare Multiplikation eines
komplexen Operanden mit einem anderen Operanden wird nicht ausgeführt, da
zwei Werte, eine reale und eine imaginäre Zahl, immer als Ergebnis
verbleiben. Jede vollständige
Zelle zeigt die Anzahl der verwendeten Signalverarbeitungseinheiten zur
Ausführung
der Multiplikationsoperation an. Zum Beispiel zeigt eine Multiplikation
eines 1 × 16C
Operanden mit einem 1 × 16C
Operanden an, dass vier Signalverarbeitungseinheiten verwendet werden.
Im Falle einer komplexen Multiplikation lauten die Operanden (r1
+ ji1) und (r2 + ji2), wobei r1 und r2 die realen Terme darstellen,
und wobei i1 und i2 die imaginären
Terme darstellen. Das Ergebnis der komplexen Multiplikation entspricht
[(r1 × r2) – (i1 × i2)] für den realen
Term und [(r1 × i2)
+ (r2 × i1)]
für den
imaginären
Term. Somit verarbeiten vier Signalverarbeitungseinheiten die Multiplikation
der Klammern gemeinsam in dem gleichen Zyklus. Die verbleibenden Additions-
und Subtraktionsoperationen für
die entsprechenden realen und imaginären Terme werden danach entsprechend
in zwei Signalverarbeitungseinheiten gemeinsam in dem nächsten Zyklus ausgeführt, so
dass die Endergebnisse resultieren. Als weiteres Beispiel wird von
einer Multiplikation eines 1 × 16R
Operanden mit einem 1 × 32C
Operanden ausgegangen. In diesem Fall zeigt die Abbildung aus 14,
dass vier Signalverarbeitungseinheiten verwendet werden. Die Operanden
sind r1 und (r2 + ji2), wobei r1 und r2 reale Zahlen sind, und wobei
i2 eine imaginäre
Zahl darstellt. Das Ergebnis der Operation lautet [(r1 × r2)] für den realen
Teil des Ergebnisses und [(r1 × i2)]
für den
imaginären
Teil des Ergebnisses. Da der komplexe Operand eine Breite von zweiunddreißig Bits
aufweist, sind die realen und imaginären Terme in Halbwörter aufgeteilt.
Die Operation wird somit zu [(r1 × r2UHW) + (r1 × r2LHW)]
für den realen
Teil und zu [(r1 × i2UHW)
+ (r1 × i2LHW)],
wobei UHW das obere Halbwort bezeichnet, und wobei LHW das untere
Halbwort jedes entsprechenden Wertes bezeichnen. Somit führt jede
der vier Signalverarbeitungseinheiten die Multiplikation der Klammern
in einem Zyklus gemeinsam aus, während
die Addition der Terme in zwei Signalverarbeitungseinheiten während dem
nächsten
Zyklus ausgeführt wird.
-
In
Bezug auf die Abbildung aus 15A ist ein
beispielhaftes Diagramm des Datentypabgleichs für eine skalare Addition durch
die Addierer in den Signalverarbeitungseinheiten dargestellt. Die
Operanden mit Datentypen mit vier und acht Bits sind in der Abbildung
aus 15A nicht dargestellt, wobei
hiermit festgestellt wird, dass diese Datentypen in 16-Bit-Operanden
umgewandelt werden. Hiermit wird ferner festgestellt, dass keine
skalare Operation unter Verwendung eines komplexen Operanden ausgeführt wird,
da zwei Werte, eine reale Zahl und eine imaginäre Zahl, immer zu einer Operation
mit einem komplexen Operanden führen.
In der Abbildung aus 15A werden leeren Zellen Operationen
in Bezug auf das hierin beschriebene Ausführungsbeispiel untersagt. Wenn
die Anzahl der Signalverarbeitungseinheiten jedoch von vier erweitert
wird, und wenn die Datenbitbreite der Addierer von vierzig Bits
erweitert wird, können
zusätzliche
Operationen für
andere Kombinationen der Operanden-Datentypen ausgeführt werden.
In jeder vollständigen
Zelle aus 15A kann die skalare Additionsoperation
in einem Zyklus abgeschlossen werden, wenn beide Operanden leicht
verfügbar
sind. Jede vollständige Zelle
zeigt die Anzahl der für
die Ausführung
der skalaren Additionsoperation verwendeten Signalverarbeitungseinheiten
an.
-
Als
Beispiel werden ein 1 × 32R
Operand und ein 2 × 16R
Operand gewählt,
wobei r1 den ersten Operanden mit einer Breite von 32 Bits bezeichnet,
und wobei r2 und r3 die zweite Gruppe von Operanden mit einer Breite
von jeweils 16 Bits bezeichnen. Das Diagramm aus 15A zeigt an, dass zwei Signalverarbeitungseinheiten
verwendet werden. Das skalare Ergebnis lautete [(r1 + r2) + (r1
+ r3)]. Zwei Signalverarbeitungseinheiten führen die Additionsoperation
in Klammern unter Verwendung ihrer beiden 40-Bit-Addierre in einem
Zyklus aus, während eine
zweite Addition in einer der beiden Signalverarbeitungseinheiten
das Zwischenergebnis in einem zweiten Zyklus kombiniert.
-
In
folgendem Bezug auf die Abbildung aus 15B ist
ein beispielhaftes Diagramm dargestellt, das den Datentypabgleich
für die
Vektoraddition durch die Addierer der Signalverarbeitungseinheiten zeigt.
Operanden mit Datentypen mit vier und acht Bits sind in der Abbildung
aus 15B nicht dargestellt, wobei
hiermit festgestellt wird, dass diese Datentypen in 16-Bit-Operanden
umgewandelt werden. In der Abbildung aus 15B werden
den leeren Zellen Operationen in Bezug auf das hierin dargestellte
Ausführungsbeispiel
untersagt. Wenn die Anzahl der Signalverarbeitungseinheiten jedoch
von vier erweitert wird, und wenn die Datenbitbreite der Addierer
von vierzig Bits erweitert wird, können zusätzliche Operationen für andere
Kombinationen von Operanden-Datentypen ausgeführt werden. In jeder vollständigen Zelle
aus 15B kann die Vektoradditionsoperation
in einem Zyklus ausgeführt
werden, wenn beide Operanden allgemein verfügbar sind. Jede vollständige Zelle
zeigt die Anzahl der Signalverarbeitungseinheiten an, die zur Ausführung der Vektoradditionsoperation
verwendet werden. Operanden mit komplexen Datentypen können bei
der Ausführung
der Vektoraddition verwendet werden.
-
Ein
Beispiel ist ein 1 × 16R
Operand und ein 1 × 32C
Operand, wobei r1 den ersten Operanden mit einer Breite von 16 Bits
darstellt, und wobei r2 und i2 den zweiten Operanden mit einer Breite
von jeweils zweiunddreißig
Bits darstellen. Das Diagramm aus 15B zeigt
an, dass zwei Signalverarbeitungseinheiten verwendet werden. Der
reale 1 × 16R
Operand wird in einen komplexen 1 × 16C komplexen Operanden mit
einem imaginären
Teil von Null umgewandelt. In einer Signalverarbeitungseinheit werden
die realen Teile unter Verwendung der Ausführung von (r1 + r2) addiert,
während
in einer anderen Signalverarbeitungseinheit die imaginäre Komponente
i2 zu Null in Ausführung
von (0 + i2) addiert wird. Das Vektorergebnis lautet [(r1 + r2)]
als reale Komponente und i2 als imaginäre Komponente. Die Signalverarbeitungseinheiten
führen
die Additionsoperation in Klammern unter Verwendung des 40-Bit-Addierers
aus.
-
Ein
weiteres Beispiel ist ein 1 × 16C
Operand und ein 1 × 32C
Operand, wobei für
den Operanden 1 × 16C
r1 und i1 die entsprechenden realen und imaginären Teile des ersten Operanden
mit einer Breite von jeweils sechzehn Bits darstellen, und wobei
r2 und i2 die realen und imaginären
Terme eines zweiten Operanden mit einer Breite von jeweils zweiunddreißig Bits
darstellen. Das Diagramm aus 15B zeigt
an, dass zwei Signalverarbeitungseinheiten verwendet werden. Das
Vektorergebnis lautet [(r1 + r2)] als reale Komponente und [(i1
+ i2)] als imaginäre
Komponente. Zwei Signalverarbeitungseinheiten führen die Additionsoperationen
in Klammern unter Verwendung von 40-Bit-Addierern aus.
-
In
folgendem Bezug auf die Abbildung aus 16 ist
ein Blockdiagramm der Erzeugung von Steuersignalen für die Bus-Multiplexer dargestellt, enthalten
in jeder der Datentypisierungs- und Ausrichtungseinrichtungen jeder
Signalverarbeitungseinheit. An jeden der Bus-Multiplexer jeder Datentypisierungs-
und Ausrichtungseinrichtung bereitgestellte Steuersignale sorgen
für eine
selektive Steuerung, um die automatische Datentypisierung und Ausrichtung
sowie durch den Benutzer ausgewählte
Permutationen durchzuführen.
Steuersignale an die Multiplexer 1101 und 1102 des
Bus-Multiplexers
für den X-Bus
in jeder der Datentypisierungs- und Ausrichtungseinrichtungen wählen den
Datentyp und die Ausrichtung für
einen Operanden in jeder der Signalverarbeitungseinheiten aus. Steuersignale
an die Multiplexer 1104 und 1106 des Bus-Multiplexers
für den
Y-Bus in jeder der Datentypisierungs- und Ausrichtungseinrichtungen
wählen
den Datentyp und die Ausrichtung für den zweiten Operanden in
jeder der Signalverarbeitungseinheiten aus. Der automatische Datentypabgleich
wird durch die Steuerung der Bus-Multiplexer in jedem Signalprozessor
als Reaktion auf die Decodierung der Datentypfelder vorgesehen,
die jedem Operanden des Steuerregisters zugeordnet sind oder dem
Befehl selbst. Die resultierende Operandenausgabe von jedem der
Bus-Multiplexer in
jeder Signalverarbeitungseinheit ist in den Multiplexer 514A des
Multiplizierers 504A, den Multiplexer 520A des
Addierers 510A und den Multiplexer 520B des Addierers 510B in
jeder Signalverarbeitungseinheit gekoppelt, wie dies in der Abbildung
aus 5B dargestellt ist.
-
In
der Abbildung aus 16 ist ein oder sind mehrere
DSP-Befehle 1600 in
einen Befehlsvordecodierer 1602 gekoppelt. Der Befehlsvordecodierer 1602 kann
ein oder mehrere Steuerregister („CR") 1604 aufweisen, die ein Datentypfeld
und ein Permutationsfeld aufweisen, um den Vordecodierer 1602 über den
Datentyp der Operanden zu informieren und darüber, wie sie in jede der Signalverarbeitungseinheiten 300 (SP0 300A,
SP1 300B, SP2 300C und SP3 300D) gelesen
werden sollen. Der eine oder die mehreren DSP-Befehle 1600 direkt
oder indirekt durch das eine oder die mehreren Steuerregister 1604 zeigen
jeden Datentyp für
zwei Operanden in zwei Datentypfeldern and sowie jede Permutation des
Datenbusses in zwei Permutationsfelder. Der Befehlsvordecodierer 1602 bestimmt
automatisch die beste Datentypübereinstimmung,
indem die beiden Datentypen für
jeden Operanden verglichen werden. Der Befehlsvordecodierer 1602 liest
ferner die Permutationsfelder jedes Operanden. In Reaktion auf die
Permutationsfelder und die Datentypen jedes Operanden erzeugt der
Befehlsvordecodierer 1602 vordecodierte Steuersignale 1606 für die Steuerung des
Multiplexierens der Datentypisierung. Die vordecodierten Steuersignale 1606 dienen
somit entsprechend der Steuerung der Bus-Multiplexer 1001 und 1002 in
jeder Datentypisierungs- und Ausrichtungseinrichtung 502 (Datentypisierungs-
und Ausrichtungseinrichtung 502A, 502B, 502C und 502D)
in jeder Signalverarbeitungseinheit 300. Diese vordecodierten
Steuersignale werden in die finalen Decodierer 1610A in
jeder Signalverarbeitungseinheit gekoppelt, um die entsprechenden
Multiplexer-Steuersignale 1011 und 1012 für jeden
Bus-Multiplexer 1001 und 1002 jeder Datentypisierungs-
und Ausrichtungseinrichtung 502 in jeder Signalverarbeitungseinheit 300 zu
erzeugen. Der Befehlsvordecodierer 1602 erzeugt ferner
vordecodierte Steuersignale für andere
Multiplexer 1620B, 1620C bis 1620N jeder
Signalverarbeitungseinheit 300. Die finalen Decodierer 1610B, 1610C bis 1610N empfangen
die vordecodierten Steuersignale, um die Multiplexer-Steuersignale
für jeden
der Multiplexer 1620B, 1620C bis 1620N jeder
Signalverarbeitungseinheit 300 zu erzeugen. Auf diese Weise
können
die Operanden auf dem X-Bus und dem Y-Bus ausgerichtet, abgeglichen,
permutiert und ausgewählt
werden, um eine digitalen Signalverarbeitungsoperation auszuführen.
-
Wie
der Durchschnittsfachmann auf dem Gebiet erkennen wird, weist die
vorliegende Erfindung zahlreiche Vorteile auf. Ein Vorteil der vorliegenden
Erfindung ist es, dass Operanden verschiedener Datentypen für verschiedene
Anwendungen der digitalen Signalverarbeitung in dem anwendungsspezifischen
Signalprozessor gemäß der vorliegenden
Erfindung verarbeitet werden können.
Ein weiterer Vorteil der vorliegenden Erfindung ist es, dass ein
automatischer Datentypabgleich vorgesehen wird. Ein weiterer Vorteil
der vorliegenden Erfindung ist es, dass Operanden automatisch einer
Permutation unterzogen werden können,
und zwar durch den Einsatz eines Permutationsfelds in einem Befehl oder
Steuerregister, so dass zusätzliche
Befehle zur Durchführung
einer gewünschten
Permutation an die Signalprozessoren überflüssig sind. Ein weiterer Vorteil
der vorliegenden Erfindung ist es, dass die Datentypisierungsfähigkeiten
der Signalverarbeitungseinheiten leicht durch das Hinzufügen zusätzlicher
Signalverarbeitungseinheiten erweitert werden können.
-
Die
Beschreibung der bevorzugten Ausführungsbeispiele der vorliegenden
Erfindung ist damit abgeschlossen. Bestimmte Ausführungsbeispiele der
vorliegenden Erfindung wurden zwar in Bezug auf die beigefügten Zeichnungen
beschrieben und sind in diesen abgebildet, wobei hiermit jedoch
festgestellt wird, dass diese Ausführungsbeispiele ausschließlich den
Zwecken der Veranschaulichung des breiten Umfangs der vorliegenden
Erfindung dienen und diesen nicht einschränken, und wobei die vorliegende
Erfindung nicht auf die spezifischen abgebildeten und beschriebenen
Konstruktionen und Anordnungen beschränkt ist, da verschiedene weitere
Modifikationen für
den Durchschnittsfachmann auf dem Gebiet ersichtlich sind. Zum Beispiel
wurde die Datentypisierungs- und. Ausrichtungseinrichtung gemäß der vorliegenden
Erfindung vorstehend in Bezug auf Speicherzugriffsregister für den Zugriff
auf Operanden in dem Speicher beschrieben, wobei jedoch auch ein
Zugriff auf Operanden aus Registern möglich ist, ebenso wie eine
entsprechende Datentypisierung und Ausrichtung gemäß der vorliegenden Erfindung.
Während
in dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung ein 16-Bit-Multiplizierer verwendet wird,
können
auch Multiplizierer mit größeren Bitbreiten
eingesetzt werden, und wobei eine größere Datentypflexibilität bereitgestellt
werden kann. Zusätzlich
dazu kann die Größe des Datenbusses
zwischen dem Datenspeicher und den Signalverarbeitungseinheiten
von 64 Bits auf zum Beispiel 80 Bits vergrößert werden, und wobei eine
größere Datentypflexibilität vorgesehen wird.
Ferner können
zusätzliche
Signalverarbeitungseinheiten vorgesehen werden, so dass größerer Bitbreiten
der Operanden oder eine höhere
Anzahl von Operanden zur gemeinsamen Verarbeitung in einem Zyklus
ebenso möglich
sind. Ferner kann die vorliegende Erfindung in Hardware, Software, Firmware
oder einer Kombination dieser implementiert und in Systemen, Teilsystemen,
Komponenten oder Teilkomponenten dieser verwendet bzw. eingesetzt
werden. Bei einer Implementierung in Software handelt es sich bei
den Elementen gemäß der vorliegenden
Erfindung im Wesentlichen um Codesegmente zur Ausführung der
erforderlichen Aufgaben. Die Programm- oder Codesegmente können in
einem durch den Prozessor lesbaren Medium gespeichert oder durch
ein in einer Trägerwelle
ausgeführten
Computerdatensignal über
ein Übertragungsmedium
oder einen Vermittlungsabschnitt übertragen werden. Das „durch
den Prozessor lesbare Medium" kann
jedes Medium darstellen, das Informationen speichern oder übertragen
kann. Zu den Beispielen für
das durch den Prozessor lesbare Medium zählen eine elektronische Schaltung,
eine Halbleiterspeichervorrichtung, ein ROM, ein Flash-Speicher,
ein löschbares
ROM (EROM), eine Floppy-Diskette, eine CD-ROM, eine optische Disk,
eine Festplatte, ein Lichtwellenleitermedium, eine Hochfrequenzverbindung,
etc. Das Computerdatensignal kann jedes Signal aufweisen, das sich über ein Übertragungsmedium
ausbreiten kann, wie etwa elektronische Netzkanäle, Lichtwellenleiter, Luft,
elektromagnetische Vermittlungsabschnitte, Hochfrequenzvermittlungsabschnitte,
etc. Die Codesegmente können über Computernetzwerke
wie etwa das Internet, Intranet, etc. heruntergeladen werden. In
jedem Fall ist die vorliegende Erfindung nicht durch diese Ausführungsbeispiele
beschränkt,
sondern vielmehr durch die nachstehend folgenden Ansprüche.