DE3104256C2 - - Google Patents
Info
- Publication number
- DE3104256C2 DE3104256C2 DE3104256A DE3104256A DE3104256C2 DE 3104256 C2 DE3104256 C2 DE 3104256C2 DE 3104256 A DE3104256 A DE 3104256A DE 3104256 A DE3104256 A DE 3104256A DE 3104256 C2 DE3104256 C2 DE 3104256C2
- Authority
- DE
- Germany
- Prior art keywords
- during
- interval
- control
- register
- word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 32
- 230000014509 gene expression Effects 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 64
- 230000006870 function Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 11
- 238000009825 accumulation Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003446 memory effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01G—CAPACITORS; CAPACITORS, RECTIFIERS, DETECTORS, SWITCHING DEVICES, LIGHT-SENSITIVE OR TEMPERATURE-SENSITIVE DEVICES OF THE ELECTROLYTIC TYPE
- H01G9/00—Electrolytic capacitors, rectifiers, detectors, switching devices, light-sensitive or temperature-sensitive devices; Processes of their manufacture
- H01G9/20—Light-sensitive devices
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
Die Erfindung betrifft einen digitalen
Pipelineprozessor nach dem Oberbegriff des Anspruchs 1.
Durch ein gespeichertes Programm gesteuerte
Digitalrechner enthalten in typischer Weise einen Speicher,
Eingangs-Ausgangsschaltungen, eine Steuereinrichtung und einen
Arithmetikabschnitt. Der Speicher liefert ein Rechenprogramm
und durch den Arithmetikabschnitt zu verarbeitende Daten. Der
Arithmetikabschnitt enthält Schaltungen, die eine vorbestimmte
Behandlung der Daten ermöglichen. Die Steuereinrichtung
liefert Steuersignale zur zeitlichen Überwachung sowie zur
Überwachung der Übertragung von Daten, die zu verarbeiten
sind. Die Eingangs-Ausgangsschaltungen ermöglichen eine
Übertragung von Informationen zwischen dem Rechner und
externen Einrichtungen. Bestimmte Operationen des Rechners
können bedingte Operationen sein, die von Kennzeichen,
Zuständen oder Bedingungen abhängen, welche das Ergebnis
früherer Operationen oder anderer Ereignisse sind.
Zur Erhöhung der Rechnergeschwindigkeit ist es
bekannt, Digitalrechner für Pipeline-Operationen einzurichten.
Dabei enthält die Arithmetikeinheit eine Anzahl
spezialisierter Schaltungen, die gleichzeitig und unabhängig
voneinander arbeiten und je eine spezielle Aufgabe in einem
Allzweckverfahren ausführen. Die Pipeline-Operation unterteilt
einen Vorgang in mehrere Untervorgänge, die von den einzelnen
spezialisierten Schaltungen ausgeführt werden.
Aufeinanderfolgende Untervorgänge werden überlappend, ähnlich
wie bei einem industriellen Fließband ausgeführt. Während
jedes Zyklus werden neue Operanden an den Eingang der
Arithmetikeinheit angelegt. Die verschiedenen Unterabschnitte
der Arithmetikeinheit führen ihre Aufgaben sequentiell während
aufeinanderfolgender Zyklen durch. Während jedes Zyklus wird
ein Ergebnis erzeugt. Jede spezialisierte Schaltung führt ihre
eigene Aufgabe mit der zyklischen Taktrate aus.
In bekannter Weise ist ein digitaler
Pipelineprozessor bisher so ausgelegt worden, daß er
Datenwörterbefehle vom Speicher zum Arithmetikabschnitt und
einem Steuerabschnitt in entsprechenden Pipeline-Strömen
überträgt. Diese Ströme von Datenwörtern und Befehlen füllen
die Pipeline-Schaltungen innerhalb des Prozessors. Solange der
Prozessor normal arbeitet, werden die Informationen der
Pipelines Schritt für Schritt und zyklisch durch Abschnitte
des Prozessors verarbeitet.
Wenn jedoch eine Operation bedingt ausgeführt werden
muß, ergibt sich ein Problem. In typischer Weise wird diese
Information durch einen bedingten Sprung realisiert, der die
Ausführung einer von zwei alternativen Folgen von meist
mehreren Befehlen veranlaßt. Da eine dieser Befehlsfolgen sich
in der Prozessor-Pipeline befindet, wenn die Bedingung geprüft
wird, kann es erforderlich werden, die Ausführung dieser Folge
fallenzulassen und erneut damit zu beginnen, die Pipeline zur
Ausführung der alternativen Folge zu füllen. In diesem Fall
geht jeweils Verarbeitungszeit verloren.
Beispiele solcher Pipelineprozessoren, bei denen
versucht wird, die bei der Verarbeitung von bedingten Befehlen
auftretenden Wartezeiten zu verringern, sind bekannt aus einem
Buch "Planning a Computer System" von Werner Buchholtz, McGraw
Hill Company, 1962, Seiten 236-238 und der Zeitschrift
"Elektronische Rechenanlagen", 1975, Heft 2, Seiten 80-83.
Dort wird neben dem einfachen Anhalten des Befehlsflusses bei
Auftreten eines bedingten Befehls bis zum Bekanntgeben des
jeweiligen Ergebnisses auch die Möglichkeit beschrieben, zu
raten, welcher Zweig bei einem bedingten Sprungbefehl zu
verfolgen ist. Wenn dann falsch geraten worden ist, muß die
inzwischen durchgeführte Verarbeitung vernichtet und
anschließend der richtige Verarbeitungszweig eingeleitet
werden. Darüber hinaus wird ein Vorausschau-Verfahren
erläutert, bei dem für beide Ergebnisse bei einem bedingten
Sprungbefehl der jeweilige Folgebefehl vorsorglich geholt und
gegebenenfalls weiter aufbereitet wird. Dann ist bei
vorliegender Sprungentscheidung in beiden Ergebnisrichtungen
wenigstens eine gewisse Vorarbeit geleistet. Eine weitere
Möglichkeit sieht vor, die einem bedingten Sprungbefehl
folgenden Befehle in einen Puffer einzugeben, so daß sie nach
der Entscheidung mit kurzer Zugriffszeit zur Verfügung stehen.
Schließlich besteht nach dem genannten Stand der Technik auch
die Möglichkeit, mit Mikrobefehlen zu arbeiten.
Bekannt ist auch ein Pipelineprozessor (GB-PS
13 97 310) bei dem zwei unabhängige Befehlsströme eingegeben
werden. Wenn in einem der Befehlsströme ein bedingter Befehl
auftritt, wird ein Register eingestellt, das einen bedingten
Befehl im zweiten Befehlsstrom blockiert.
Die Erfindung hat sich die Aufgabe gestellt, bei
einem Pipelineprozessor Blockierungen und Wartezeiten in
Verbindung mit der Verarbeitung von bedingten Befehlen auf
möglichst einfache Weise zu vermeiden. Die Lösung der Aufgabe
ist in Patentanspruch 1 gekennzeichnet. Weiterbildungen der
Erfindung sind Gegenstand der Unteransprüche.
Die Erfindung geht dabei davon aus, daß verschiedene
Programmwege dadurch ausgeführt werden können, daß Befehle
einer Befehlsfolge abhängig von Bedingungen jeweils ausgeführt
werden oder nicht ausgeführt werden. Wenn sich dann nach einem
Sprungbefehl die Ausführung eines Befehls als nicht zulässig
herausstellt, so wird dieser Befehl zwar durch die Stufen des
Pipelineprozessors gebraucht, jedoch durch das Abschalten
wenigstens eines Teils von Prozessorabschnitten wirkungslos
gebraucht, so daß beispielsweise Registerinhalte nicht
überschrieben werden. Der jeweils nachfolgende Befehl ist dann
richtig und kann ausgeführt werden, so daß das Nachladen der
Pipelinestufen entfällt.
Nachfolgend wird die Erfindung an Hand der Zeichnung be
schrieben. Es zeigen
Fig. 1 und 2 in der Anordnung gemäß Fig. 3 das Block
schaltbild eines digitalen Pipeline-Prozessors;
Fig. 4 ein Zeitdiagramm;
Fig. 5 und 6 in der Anordnung nach Fig. 7 ein Prozessor-
Funktionsdiagramm;
Fig. 8 ein Prozessor-Funktionsdiagramm für eine bedingte
Operation.
In den Fig. 1 und 2 ist der Gesamtaufbau eines digitalen
Pipeline-Prozessors dargestellt.
Ein Festwertspeicher 100 speichert Befehle und feste Daten
wörter. Vom Festwertspeicher werden Befehle über einen ge
meinsamen Daten- und Steuerbus 101 zu Befehlsregistern IR-C
(131), IR-L, M, N (133) und IR-S, T (134) übertragen. Teile
der Befehle werden auf die Befehlsregister verteilt. Feste
Datenwörter oder Koeffizientenwörter werden vom Festwert
speicher 100 mit Hilfe des gemeinsamen Daten- und Steuerbus
101 an ein Koeffizientenregister 102 gegeben. Dieses Regi
ster ist mit REG X bezeichnet, weil die Koeffizienten nach
folgend durch das Symbol X identifiziert werden.
Ein Schreib-Lesespeicher 105 nimmt variable Datenwörter auf,
die entweder von einer äußeren Quelle aus oder vom Ausgang
des Arithmetikabschnitts des eigenen Prozessors eingelesen
werden können. Die variablen Datenwörter werden vom Schreib-
Lesespeicher 105 über den gemeinsamen Daten- und Steuerbus
101 zu einem Register 106 für variable Daten geleitet. Dieses
Register ist mit REG Y bezeichnet, da variable Datenwörter
nachfolgend durch das Symbol Y bezeichnet werden. Nach Wahl
des Benutzers kann der Schreib-Lesespeicher auch Koeffizienten,
die an Stelle fester Datenwörter benutzt werden, zu
sätzlich zu den variablen Datenwörtern aufnehmen.
Die Register 102 und 106 nehmen einen sequentiellen Strom
von Koeffizientenwörtern bzw. von variablen Datenwörtern auf,
die Operanden darstellen, welche als Eingangssignale an
einen Erithmetikabschnitt 110 gegeben werden. Diese Folgen
von Operanden werden nach Art eines Pipeline- oder Fließband
verfahrens mittels eines Multiplizierer-Unterabschnitts 112,
eines Akkumulator-Unterabschnittes 115 und eines Rundungs-
und Überlauf-Unterabschnitts 116 verarbeitet. Ein gerunde
tes Ausgangswort wird in einem Register 118 abgelegt, das
mit REG W bezeichnet ist, da gerundete Ausgangswörter nach
folgend durch das Symbol W identifiziert werden.
Der Arithmetikabschnitt enthält eine Wähl-Ausgangsschaltung
120, um als Ausgangswort vom Arithmetikabschnitt für den
Datenbus 101 entweder das variable Datenwort y im Register
106 oder das gerundete Ausgangswort w im Register 118 zu
wählen. Das gerundete Ausgangswort w ist das Ergebnis eines
vom Arithmetikabschnitt durchgeführten Vorgangs. Das gewählte
Ausgangswort kann vom Register 106 oder vom Register 118
über den gemeinsamen Daten- und Steuerbus 101 zu einer angeb
baren Bestimmungsstelle übertragen werden, beispielsweise zum
Schreib-Lesespeicher 105.
Wie oben erwähnt, sind Befehle für den Prozessor im Fest
wertspeicher 100 abgelegt. Während jedes in Fig. 4 gezeigten
Prozessorzyklus wird ein einzelner Befehl automatisch aus
einer Speicherstelle des Festwertspeichers gelesen, deren
Adresse durch eine Adressen-Arithmetikeinheit oder einen
Adressen-Arithmetikabschnitt 124 erzeugt wird. Die Adresse
aus einem Programmzählerregister PC im Adressen-Arithmetik
abschnitt gelangt über einen Adressenbus 128 zur Adressen
schaltung des Festwertspeichers. Dieser sendet daraufhin
während jedes Prozessorzyklus den auf diese Weise geholten
einzelnen Befehl über den gemeinsamen Daten- und Steuerbus
zu den verschiedenen Steuerfeld- oder Befehlsregistern IR-C,
IR-L, M, N und IR-S, T, die den verschiedenen Abschnitten
des Prozessors zugeordnet sind.
Jeder Befehl oder Operationscode, der im digitalen Signal
prozessor benutzt wird, enthält eine Vielzahl von Steuer
feldern oder Steuernachrichten, denen je eine nachfolgend
benutzte Bezeichnung gegeben wird, beispielsweise l, m, n,
s und t. Die Steuerfeldregister IR-L, M, N, die dem Arithme
tikabschnitt 110 zugeordnet sind, nehmen einige der Felder,
beispielsweise die Befehlsfelder l, m und n, auf, die der
Steuerung von Multiplikations-Akkumulier- und -Rundungs
operationen zugeordnet sind. Die Steuerfeldregister IR-S, T,
die dem Adressen-Arithmetikabschnitt 124 zugeordnet sind,
nehmen Befehlsfelder s und t auf, die sich auf die Steuerung
einer Adressenregister-Modifikation beziehen, um die Gewin
nung von Operanden x und y sowie die Speicherung des durch
die Wählschaltung 120 gewählten Ausgangswortes zu veranlas
sen.
Der Adressen-Arithmetikabschnitt 124 enthält zwei Gruppen
von Registern 141 und 142, einen Adressenbus-Zwischen
speicher 145, einen Addierer 147 und einen Addierer-Zwischen
speicher 150, die durch Busse verbunden sind.
Die Registergruppe 141 mit den Registern RX, RY, RD und PC
ist zur Aufnahme von Speicheradressen ausgelegt. Eine Adresse
im Register RX kann für einen Zugriff zu einem Koeffizienten
wort in einer Speicherstelle entweder im Schreib-Lesespeicher
oder im Festwertspeicher benutzt werden. Eine Adresse im Re
gister RY kann nur für einen Zugriff zu einem variablen
Datenwort in einer Speicherstelle des Schreib-Lesespeichers
verwendet werden. Eine Adresse im Register RD kann zum Ein
schreiben eines resultierenden Datenwortes an eine Bestim
mungsstelle verwendet werden, beispielsweise eine Speicher
stelle im Schreib-Lesespeicher 105. Eine Adresse im Programm
zählerregister PC wird für einen Zugriff zum nächsten Befehl
oder festen Datenwort im Festwertspeicher benutzt.
Die zweite Registergruppe 142 speichert variable Inkrement
werte, die zur automatischen Inkrementierung von Adressen in
den Registern RX, RY und RD benutzt werden. Alternativ können
die gespeicherten Adressen durch einen Wert einer Gruppe von
festen Werten inkrementiert werden.
Die Operationen des Prozessors werden durch zwei Arten von
Befehlen gesteuert. Während des größten Teils der Zeit wer
den normale Befehle verwendet. Sie steuern die Ausführung
arithmetischer Operationen bei der Signalverarbeitung. Eine
andere Art von Befehlen, die gelegentlich verwendet werden,
nennt man Hilfsbefehle. Ein spezieller Hilfsbefehl steuert
das Laden eines Adressenregisters oder eines Adresse-Inkre
mentregisters im Adressen-Arithmetikabschnitt. Es wird an
genommen, daß eine Start-Befehlsfolge im Nur-Lese-Speicher
abgelegt ist, die an einer Anfangsadresse beginnt, und daß
eine Rückstellschaltung das Programmzählerregister PC auf
die Anfangsadresse einstellt. Nach der Rückstelloperation
ist in typischer Weise eine Folge von Befehlen zur Speiche
rung zusätzlicher Adressen in den Adressenregistern RX, RY
und RD sowie von Inkrementwerten in den Inkrementregistern
RI, RJ und RK vorhanden. Diese Register werden durch Hilfs
befehle eingestellt. Üblicherweise verbleiben die in den
Registern RI, RJ und RK gespeicherten Werte während eines
Programms in diesen Registern, während dagegen die Werte in
den Registern RX, RY und RD von Zeit zu Zeit bei der Ausfüh
rung einer Folge normaler Befehle geändert werden.
Nachdem der Prozessor zurückgestellt ist und die Adressen-
und Inkrementwerte gespeichert sind, kann der Prozessor ein
gültiges Programm zur Verarbeitung von Digitalsignalen aus
führen. Die meisten der zur Verarbeitung von Signalen ver
wendeten Befehle sind normale arithmetische Befehle.
Der Inhalt jedes der Register RX, RY, RD, PC, RI, RJ und RK
kann durch einen Hilfsbefehl auf jeden speziellen Wert ein
gestellt werden. Beispielsweise gibt ein erster Befehl zum
Laden des Adressenregisters RY an, daß ein bestimmtes Pro
zessor-Register zu laden ist.
Bei diesem ersten Befehl enthält ein Steuerfeld c die er
forderliche Information. Dieses Steuerfeld c wird in einem
Befehlsregister IR-C während des Befehlsholzyklus gespei
chert.
Ein festes Datenwort, das dem ersten Befehl zugeordnet ist
und während des Prozessorzyklus, in welchem dieser Befehl
decodiert wird, in den Adressen-Arithmetikabschnitt 124 ge
geben wird, gibt an, welches Adressenregister zu laden ist,
und bestimmt den zu ladenden Inkrementwert. Das Steuerfeld
und das Wertfeld werden vom Speicher über den gemeinsamen
Daten- und Steuerbus 101 zum Steuerfeldregister XSR, 185, und
zum Wertfeldregister XSL, 186, übertragen.
Während der Ausführung des ersten Befehls wird das Steuer
feld im Register XSR in einem Decoder 157 decodiert, um das
richtige Adressenregister auszuwählen. Vom Register XSL wird
der in das Adressenregister RY zu gebende Wert über eine
Wählerschaltung 158 und einen Bus 160 während des Ausfüh
rungszyklus des ersten Befehls an die Register 141 und 142
angelegt.
Ein zweiter Befehl zum Laden des Inkrementregisters RI gibt
an, daß ein Prozessorregister zu laden ist. Wie bei dem ge
rade beschriebenen Beispiel für das Laden des Adressenregi
sters RY liefert ein festes Datenwort, das auf entsprechende
Weise dem zweiten Befehl zugeordnet ist, ein Steuerfeld, das
das zu ladende Register identifiziert, und ein Wertfeld für
den zu ladenden Wert. Die Felder des festen Datenwortes wer
den vom Register XSR über den Decoder 157 und den Bus 137
zugeführt, um das in der Registergruppe 142 gewählte Inkre
mentregister zu bestimmen, und vom Register XSL über den
Wähler 158 und den Bus 160 zugeführt, um den während des
Ausführungszyklus des zweiten Befehls in das gewählte Inkre
mentregister zu ladenden Wert bereitzustellen.
Bei der Verarbeitung sowohl normaler Befehle als auch von
Hilfsbefehlen werden Steuerfelder s und t des Befehls im Be
fehlsregister IR-S, T gespeichert, wenn der Befehl geholt
wird. Die Felder werden in einem Decodierer 152 während des
nächsten Prozessorzyklus decodiert, wobei die decodierte In
formation in einer AAU-Steuerschaltung 154 zwischengespei
chert wird. Die decodierte Information gelangt während des
Befehlsausführungszyklus oder des zweiten Prozessorzyklus
nach dem Holen über einen Bus 135 an die Registergruppen
141 und 142. Durch die Information auf dem Bus 135 werden
sowohl ein Adressenregister als auch ein Inkrementregister
oder ein festes Inkrement gewählt. Die Adresse wird an den
Adressenbus-Zwischenspeicher 145 und den Eingang eines
Addierers 147 gegeben. Der Inkrementwert gelangt gleich
zeitig an den anderen Eingang des Addierers 147, der die
Adresse inkrementiert und sie für einen Maschinenzustand in
einem Addierer-Zwischenspeicher 150 ablegt. Während des fol
genden Maschinenzustandes wird die inkrementierte Adresse
über einen Bus 136 an die Gruppe 141 von Adressenregistern
gegeben.
Gleichzeitig wird bei der Verarbeitung eines normalen Befehls
ein Teil der Information in den Feldern s und t mit einer
Verzögerung von nur einem einzigen Maschinenzustand in
einer Verzögerungsschaltung 155 zugeführt. Diese verzögerte
Information stellt eine Auswahlinformation dar, die fest
legt, in welches der Adressenregister 141 nach der gerade
beschriebenen Adressieroperation einzuschreiben ist. Im fol
genden Maschinenzustand wird die verzögerte Information in
einem Decoder 154 decodiert und über einen Bus 137 an die
Adressenregister 141 gegeben. Zu diesem Zeitpunkt wird die
inkrementierte Adresse im Addierer-Zwischenspeicher 150 in
das gewählte Adressenregister eingeschrieben, wodurch die
Adresse nach der Adressieroperation modifiziert wird.
Während der Verarbeitung eines Registergruppen-Hilfsbefehls
kann die oben beschriebene Operation zur Rückgabe einer nach
träglich modifizierten Adresse in ein Adressenregister durch
die Registereinstelloperation vorweggenommen werden. Die Vor
wegnahme wird durch den Decoder 157 unter Ansprechen auf eine
Information durchgeführt, die ihm von der Logikschaltung 122
über einen Weg 138, eine AAU-Steuerschaltung 154 und eine
Verzögerungsschaltung 155 zugeführt wird.
Wenn der Registergruppenbefehl das Einschreiben eines Adres
senregisters vorwegnimmt, wird die Information zur Auswahl
des Adressenregisters vom Register XSR über den Decoder 157
und den Bus 137 zur Adressenregistergruppe 141 gegeben.
Gleichzeitig wird vom Register XSR eine Information zur Aus
wahl einer Information auf dem Bus 160 an Stelle einer Infor
mation auf dem Bus 137 über den Decoder 157 und den Bus 137
zugeführt.
Der Adressen-Arithmetikabschnitt 124 überträgt Adressen
über den Adressenbus-Zwischenspeicher 145 für einen Zugriff
zu Speicherstellen in den Speichern 100 und 105, erzeugt
neue Adressen im Addierer 147 und stellt die Adressenregi
ster RX, RY, RD und PC ein.
Das Diagramm in Fig. 4 zeigt, daß Adressen zum Speicher in
einer Folge von vier Adressen gegeben werden, die während
jedes Prozessorzyklus übertragen werden. Eine der Adressen
wird während jedes von vier Maschinenzuständen während je
des Prozessorzyklus übertragen. Die erste Adresse, die wäh
rend des ersten Maschinenzustandes übertragen wird, ist die
im Programmzählerregister gespeicherte Adresse. Wie in Fig. 4
angegeben, wird diese Adresse automatisch während des ersten
Maschinenzustandes jedes Prozessorzyklus übertragen. Die
zweite, während des zweiten Maschinenzustandes übertragene
Adresse ist die im Register RD oder im Register RX abgelegte
Adresse. Die während des dritten Maschinenzustandes übertra
gene Adresse ist die im Register RX oder im Programmzähler
register PC gespeicherte Adresse. Die vierte, während des
vierten Maschinenzustandes übertragene Adresse ist die im
Register RY gespeicherte Adresse.
Jede vom Adressen-Arithmetikabschnitt weitergegebene Adresse
wird während der genannten Maschinenzustände des Prozes
sorzyklus im Adressenbus-Zwischenspeicher 145 zwischenge
speichert. Außerdem werden während dieser Maschinenzustände
die Adresse im Addierer 147 des Adressen-Arithmetikabschnittes
um einen Inkrementwert inkrementiert, der aus einem der
Inkrementregister RI, RJ und RK gelesen wird, oder im Falle
der Adresse vom Register PC wird um +1 inkrementiert. Diese
Inkrementoperationen werden während des gleichen Maschinen
zustandes, in dem die Adressen zwischengespeichert werden,
ausgeführt.
Eine Identifizierung der gewählten Adressen- und Inkrement
register erfolgt durch Zuführen der jeweiligen Steuerfelder
zum Befehlsregister IR-S, T vor der Adressieroperation, so
daß der geeignete Code an Zugriffsschaltungen sowohl für die
Adressen- als auch die Inkrementregister während des Maschi
nenzustandes angelegt wird, in welchem die Adressen zu über
tragen sind. Die Adresse und der Inkrementwert werden ausge
lesen und durch den Addierer 147 summiert. Die sich ergebende,
inkrementierte Adresse wird im Addierer-Zwischenspeicher 150
abgelegt, während die Adresse vom Adressenbus-Zwischenspei
cher 155 übertragen wird.
Ein Code, der angibt, welches Adressenregister gewählt wor
den ist, wird über die Verzögerungsschaltung 155 zur Deco
dier-Registerschaltung 157 gegeben. Die Verzögerung und die
Decodierung sind so ausgelegt, daß die im Addierer-Zwischen
speicher 150 abgelegte, inkrementierte Adresse in das Adres
senregister eingeschrieben werden kann, aus der die übertra
gene Adresse geholt worden ist. Demgemäß wird die übertra
gene Adresse nachträglich während des Prozessorzyklus, in
welchem sie zu den Speichern 101 und 105 übertragen worden
ist, abgeändert oder inkrementiert.
Gemäß Fig. 2 ist der Arithmetikabschnitt 110 für Pipeline-
Operationen ausgelegt. Koeffizientenwörter x und variable
Datenwörter y stellen Operanden dar, die von den Speichern
über den gemeinsamen Daten- und Steuerbus 101 ankommen und
in das Koeffizientenwortregister 102 und das variable Daten
wortregister 106 gelangen. Die gerundeten Ausgangswörter w
stellen für gewisse Operationen ebenfalls Operanden dar und
werden im Register 118 gespeichert. Während jedes Prozessor
zyklus eines normalen Befehls wird ein neuer Operand in jedem
dieser Register aufgenommen.
Der Arithmetikabschnitt 110 enthält drei Unterabschnitte,
die unabhängig unter Ansprechen auf getrennte Steuerfelder
l, m und n steuerbar sind. Während des Holzyklus eines Be
fehls werden die Felder l, m und n im Befehlsregister R-L,
M, N gespeichert. Während des nächsten Prozessorzyklus wer
den diese Felder in einer Decodierschaltung 113 decodiert,
und das Ergebnis wird im F-Register 188 gespeichert. Während
des nachfolgenden Prozessorzyklus wird diese Information an
eine AU-Steuerschaltung 114 gegeben, um Steuersignale an die
verschiedenen Unterabschnitte des Arithmetikabschnittes zu
liefern. Dieser letztgenannte Prozessorzyklus ist der Aus
führungszyklus des Befehls. Die Steuersignale liefern Infor
mationen bezüglich der Auswahl von Prozessoroptionen, die in
jedem der Unterabschnitt zur Verfügung stehen. Der Multi
plizierer-Unterabschnitt 112 erzeugt in typischer Weise wäh
rend jedes Prozessorzyklus ein Produkt von zwei Operanden.
Bei einer typischen Multiplikation ist ein Operand das Koef
fizientenwort x und der zweite Operand ist entweder das
variable Datenwort y oder das gerundete Ausgangswort w.
Das Koeffizientenwort x ist ein 16-Bit-Wort. Die 16 Bits wer
den von den höchststelligen Bitleitungen des gemeinsamen
Daten- und Steuerbus in das Register 102 übernommen. Eine
Wählscheibe 162 tastet die 16 Bits des Koeffizientenwortes
in Richtung vom niedrigststelligen Bit zum höchststelligen
Bit ab, und zwar jeweils 4 Bits gleichzeitig während
jedes der 4 Maschinenzustände in jedem Prozessorzyklus. Eine
weitere Wählscheibe 163 wählt gleichzeitig entweder ein
variables Datenwort y mit 20 Bits oder ein gerundetes Aus
gangswort w mit 20 Bits.
Eine Multiplikation wird auf der Grundlage des bekannten
Booth-Algorithmus ausgeführt. Demgemäß spricht eine Booth-
Logikschaltung 165 während der aufeinanderfolgenden 4-Bit-
Gruppen (nibble) an und erzeugt Steuersignale zur Erzeugung
von Teilprodukten.
Das Ausgangssignal der Booth-Logikschaltung 165 während jedes
Mschinenzustandes wird in einem Register 166 zwischen
gespeichert. Das Signal gelangt an eine Schaltung 168, die
die Teilprodukte durch eine Datenauswahl erzeugt.
Die Teilprodukte werden durch Addition zu vorhergehenden
Summen und Überträgen akkumuliert. Ein Addierer 170 sum
miert die Teilprodukte zu einer Information bezüglich der
vorhergehenden Summe und des Übertrages, wonach ein sich er
gebender Zwischenoperand mit 36 Bits oder ein Produktwort p
in einem Produktregister P, 190, gespeichert wird. Zugeord
nete Register S, 190, und C, 189, speichern die während jedes
Prozessorzyklus erzeugte Information bezüglich der Summe
und des Übertrags.
Da der Arithmetikabschnitt für eine Pipeline-Operation ausge
legt ist, nimmt das Produktregister P, 191, einen neuen Zwi
schenoperanden oder ein Produktwort p während jedes Prozes
sorzyklus normaler Befehle auf. Dieses Produktwort p wird
über einen Bus 172 als Zwischenoperand an den Eingang des
Akkumulator-Unterabschnitts 115 angelegt.
Im Akkumulator-Unterabschnitt wird das Produktwort p zu
einem resultierenden Ausgangswort a mit 40 Bits addiert, das
vor dem Anlegen an einen Eingang der Addierschaltung 175
durch eine Schaltung 174 verschoben werden kann. Die Addier
schaltung 175 erzeugt eine Summen- und Übertragungsinformation,
die im Register 177 gespeichert wird. Das geschieht während
jedes Prozessorzyklus. Die Überträge werden durch eine Über
trags-Vorausschaulogik im Addierer 178 aufgelöst. Das Aus
gangssignal des Addierers 178 gelangt an einen Eingang einer
Logikschaltung 180 zusammen mit dem resultierenden Ausgangs
wort a zur Erzeugung des nächstfolgenden Wertes für das re
sultierende Ausgangswort a mit 40 Bits, das im Register A
gespeichert werden soll. Ein solches resultierendes Ausgangs
wort wird während jedes Prozessorzyklus eines normalen Be
fehls erzeugt und im Register A, 192, abgelegt.
Ein Teil des resultierenden Ausgangswortes a wird in Ab
schnitten mit 10 Bits als Eingangssignal an den Rundungs-
und Überlauf-Unterabschnitt 116 gegeben. Diese Abschnitte
werden unter Takteinfluß in drei aufeinanderfolgenden Maschinen
zuständen jedes Prozessorzyklus über eine Rundungsschaltung
182 und eine Überlauf-Logikschaltung 184 an das Run
dungs-Ausgangsregister W mit 20 Bits übertragen. Im vierten
Maschinenzustand kann der Wert im Register W bezüglich eines
Überlaufs korrigiert werden, wenn der Wert im Register A zu
groß ist, um im Register W, 118, mit 20 Bits dargestellt zu
werden. Danach kann das gerundete Ausgangswort über den ge
meinsamen Daten- und Steuerbus zu einer Bestimmungsstelle
übertragen werden, beispielsweise einer Speicherstelle im
Schreib-Lesespeicher 105, wo es abgelegt wird.
Die drei Unterabschnitte (Multiplizierer, Akkumulator und
Rundungsschaltung) des Arithmetikabschnittes führen ihre
Hauptoperationen jeweils in einem Prozessorzyklus aus. Aus
gangssignale der Unterabschnitte werden in jedem Prozessor
zyklus in Registern gespeichert, so daß der nächste Unterab
schnitt ein stabiles Eingangssignal hat, mit dem er den
nächstfolgenden Prozessorzyklus beginnt.
Die Steuerung des Arithmetikabschnitts 110 und des Adressen-
Arithmetikabschnitts 124 wird durch einen Pipeline-Strom
von Befehlen bewirkt, die vom Speicher 100 über den gemein
samen Daten- und Steuerbus 101 zugeführt werden. Wie oben
mit Bezug auf Fig. 4 angegeben worden ist, wird ein einzel
ner Befehl während jedes Prozessorzyklus aus dem Speicher ge
lesen. Ein solcher Befehl enthält mehrere Befehlsfelder oder
Steuernachrichten l, m, n, s und t. Die Felder l, m und n
werden über den gemeinsamen Bus 101 zum Register IR-L, M, N
gegeben, um die Unterabschnitte des Arithmetikabschnittes
110 zu steuern. Die Felder s und t werden über den gemein
samen Bus 101 zum Register IR-S, T übertragen, um die Auswahl
und Inkrementierung von Adressen in den Registern RX, RY,
RD und PC zu steuern.
Ein besseres Verständnis für die Anordnung und Betriebsweise
bei der Pipeline-Steuerung und -Verarbeitung ergibt sich an
Hand der folgenden Beschreibung eines speziellen Beispiels.
Ein vollständiger, normaler Befehl in Assembler-Sprache ent
hält alle Informationen, die zur Durchführung einer gewünsch
ten Arithmetikoperation erforderlich sind. Befehle in Assembler-
Sprache für den digitalen Signalprozessor sind so ausge
legt, daß sie die Steuerung für einen Zugriff zum Speicher
und die Steuerung für eine Operation des Arithmetikunterab
schnitts und des Adressen-Arithmetikunterabschnitts wieder
geben. Der Arithmetikunterabschnitt führt kontinuierlich
Multiplikations- und Additionsoperationen aus. Die normalen
Operationen des Arithmetikabschnittes werden durch die fol
genden allgemeinen Ausdrücke charakterisiert:
x · f(y) + fa (a) → a {→w}
x · f(w) + fa (a) → a {→w},
wobei
x ein Koeffizientenwort mit einer Länge von 16 Bits ist, das
üblicherweise aus dem Festwertspeicher geholt wird. Das
Koeffizientenwort x könnte auch aus dem Schreib-Lesespeicher
oder von einer Eingangs/Ausgangsschaltung 200 geholt
werden und besitzt normalerweise einen Wert für alle Arithmetik
operationen;
y ein Datenwort mit einer Länge von 20 Bits ist, das normaler weise aus dem Schreib-Lesespeicher geholt wird. Ein sol ches Datenwort könnte auch von der Eingangs/Ausgangsschal tung 200 geholt werden;
a den Inhalt des Akkumulatorregisters A, 192, mit einer Länge von 40 Bits angibt. Im Akkumulatorregister A, 192, werden die niedrigststelligen 36 Bits benutzt, um das Produkt einer Multiplikation von 16 Bits mit 20 Bits aufzunehmen. Die vier höchststelligen Bits stellen einen Überlaufschutz für die Akkumulatoroperation dar;
w ein gerundetes oder gekürztes Ausgangssignal des Akkumula tors mit einer Länge von 20 Bits ist. Das niedrigststellige Bit des gerundeten Ausgangswortes w entspricht dem Bit, das an 14. Stelle vom niedrigststelligen Bit des Inhalts a des Akkumulators aus steht. Diese Entsprechung von Bits paßt zu der Annahme, daß das Datenwort y und das gerundete Aus gangswort w ganze Zahlen sind und daß das Koeffizienten wort x üblicherweise innerhalb der Grenzen -2 x < 2 liegt;
f eine Funktion entweder des Datenwortes y oder des gerun deten Ausgangswortes w beschreibt. Eine solche Funktion kann der tatsächliche Wert, das Vorzeichen oder der absolute Wert eine der Variablen y oder w sein;
fa im allgemeinen eine Funktion des Inhalts a des Akkumula tors beschreibt, beispielsweise a, -a, 0, 2a usw.
y ein Datenwort mit einer Länge von 20 Bits ist, das normaler weise aus dem Schreib-Lesespeicher geholt wird. Ein sol ches Datenwort könnte auch von der Eingangs/Ausgangsschal tung 200 geholt werden;
a den Inhalt des Akkumulatorregisters A, 192, mit einer Länge von 40 Bits angibt. Im Akkumulatorregister A, 192, werden die niedrigststelligen 36 Bits benutzt, um das Produkt einer Multiplikation von 16 Bits mit 20 Bits aufzunehmen. Die vier höchststelligen Bits stellen einen Überlaufschutz für die Akkumulatoroperation dar;
w ein gerundetes oder gekürztes Ausgangssignal des Akkumula tors mit einer Länge von 20 Bits ist. Das niedrigststellige Bit des gerundeten Ausgangswortes w entspricht dem Bit, das an 14. Stelle vom niedrigststelligen Bit des Inhalts a des Akkumulators aus steht. Diese Entsprechung von Bits paßt zu der Annahme, daß das Datenwort y und das gerundete Aus gangswort w ganze Zahlen sind und daß das Koeffizienten wort x üblicherweise innerhalb der Grenzen -2 x < 2 liegt;
f eine Funktion entweder des Datenwortes y oder des gerun deten Ausgangswortes w beschreibt. Eine solche Funktion kann der tatsächliche Wert, das Vorzeichen oder der absolute Wert eine der Variablen y oder w sein;
fa im allgemeinen eine Funktion des Inhalts a des Akkumula tors beschreibt, beispielsweise a, -a, 0, 2a usw.
Die Variablen x, y, w und p befinden sich in Registern x
(102), y (106), w (118) bzw. p (191) des Arithmetikab
schnitts.
Die oben angegebenen allgemeinen Ausdrücke beinhalten, daß
der Prozessor drei Operationen ausführt.
- 1) Eines der Produkte p = x · f(y) oder p = x · f(w) wird gebildet und im Produktregister P gespeichert, das sich am Ausgang eines Multiplizierers befindet.
- 2) Eine Akkumulierung eines resultierenden Wortes a = p + fa(a) wird im Akkumulator durchgeführt.
- 3) Falls erforderlich, wird dann das resultierende Wort a des Akkumulators gerundet, und das gerundete Ausgangswort w wird in das Ausgangsregister W einge schrieben.
Jede dieser drei Operationen wird während eines Prozessor
zyklus des digitalen Signalprozessors ausgeführt. In typi
scher Weise hat während der Operationen das Koeffizienten
wort x einen Wert, und eine Multiplikation bildet das Pro
dukt p. In ebenfalls typischer Weise werden während jedes
Zyklus alle drei Operationsarten gleichzeitig durch unter
schiedliche Unterabschnitte des Arithmetikabschnitts ausge
führt. Für gewisse Befehle treten gegebenenfalls eine oder
mehrere der drei Operationen nicht auf. Die durch einen Un
terabschnitt während eines Prozessorzyklus ausgeführte Opera
tion ist eine Teilauswertung eines allgemeinen Ausdrucks,
der verschieden ist von den Ausdrücken, die gleichzeitig in
den anderen Unterabschnitten ausgewertet werden.
Befehle in Assembler-Sprache werden in Befehle in Maschinen
sprache umgewandelt, die im Speicher abgelegt werden, um den
digitalen Signalprozessor dann tatsächlich zu steuern. Da
die Operationen voneinander abhängen und alle Operationen
gleichzeitig im Prozessor auftreten, ist es wichtig, immer
zu wissen, was in verschiedenen Registern gespeichert ist
und welche Operationen damit ausgeführt werden sollen.
Um eine Verwirrung dahingehend zu vermeiden, welche Werte
des Produktwortes p und des Inhaltes a des Akkumulators bei
einer Prozessoroperation beteiligt sind, wird die folgende
Reihenfolge von Operationen empfohlen, wenn diese Werte re
präsentierende Ausdrücke in Assembler-Sprache geschrieben
werden.
Beim Lesen von links nach rechts sind die richtigen Werte
des Produktwortes p und des Inhaltes a des Akkumulators besser
zu erkennen. Die richtigen Werte sind die Ergebnisse
der vorangehenden Operation, die diese Werte bestimmt. Dem
gemäß ist der Wert für den Inhalt a des Akkumulators, der
durch Rundung in das gerundete Ausgangswort w umzuwandeln
oder in irgendeiner Funktion fa(a) zu verwenden ist, der In
halt a des Akkumulators am Ende der zuletzt durchgeführten
Akkumulierung. Entsprechend hat das bei einer augenblicklichen
Akkumulierung zu verwendende Produktwort p einen Wert,
der bei der zuletzt durchgeführten Multiplikation bestimmt
worden ist.
Aus den Gründen der vorstehenden Erläuterung hinsichtlich
der Reihenfolge von Prozessoroperationen ist es wichtig,
daß die im Befehl in Assembler-Sprache enthaltene Informa
tion dem Prozessor in der richtigen Reihenfolge angeboten
wird. Die nachstehende Reihenfolge ist für den Prozessor
brauchbar.
- 1) Es erfolgt eine Wahl für den Bestimmungsort. Das zum Bestimmungsort zu gebende Wort wird entweder als das ge rundete Ausgangswort w oder das Datenwort y gewählt. Das gewählte Wort kann in den Schreib-Lesespeicher oder an die Eingangs/Ausgangsschaltung gegeben werden. Der spe zielle Bestimmungsort des gewählten Wortes wird ange geben.
- 2) Wie für den Befehl erforderlich, ist zu wählen, ob das resultierende Wort a in das gerundete Ausgangswort w zu überführen ist oder nicht.
- 3) Es wird eine Akkumulier-Operation aus einer Gruppe von Operationen mit dem allgemeinen Ausdruck a = p + fa(a) ausgewählt.
- 4) Es ist eine Multiplizier-Operation anzugeben, die das Produkt p = x · f(y) erzeugt, indem die Quelle XSRC für das Koeffizientenwort x, die Art der Funktion f und die Auswahl des Datenwortes y zusammen mit der Quelle YSRC für das Datenwort y angegeben wird. Alternativ wird eine Multiplizier-Operation bestimmt, die das Produkt p = x · f(w) erzeugt, indem die Quelle XSRC des Koeffizienten- Wortes x, die Art der Funktion f und die Auswahl des gerundeten Ausgangswortes w an Stelle des Datenwortes y angegeben wird.
Die folgenden Ausnahmen gelten für die oben angegebene Links-
nach-rechts-Regel. Wenn das gerundete Ausgangswort w für die
Multiplikation gewählt wird, ist der Wert des gerundeten Aus
gangswortes w derjenige Wert, welcher durch die letzte Rundung
des resultierenden Wortes a bei einem vorhergehenden
Befehl bestimmt worden ist. Wenn das Datenwort y zu schrei
ben ist und eine Quelle für das Datenwort y angegeben wird,
so führt der erste Schritt bei der Ausführung des Befehls
die Daten aus der angegebenen Quelle in das Datenregister Y.
Danach kann jedes beliebige Schreiben dieses neuen Wertes
für das Datenwort y auftreten.
Die folgende Tabelle I faßt die normalen Befehle in Assembler-
Sprache zusammen, die ein Programmierer bei der Erstel
lung eines Programms in Assembler-Sprache benutzt. Es wird
die Syntax einer C genannten Sprache als Assembler-Sprache
benutzt, die beschrieben ist in einem Aufsatz "The C Pro
gramming Language" von B. W. Kernighan et al, Prentice-Hall,
Inc., 1978. Jeder vollständige Befehl wird durch Wahl von
vier Angaben gebildet, und zwar einer Angabe aus jeder Spalte
in der Tabelle I, beginnend mit der am weitesten links ste
henden Spalte und weitergehend nach rechts. In den beiden
linken Spalten ist das Wort NOTHING als gültige Wahl aufge
führt. Wenn das Wort NOTHING als Teil eines vollständigen
Befehls gewählt wird, so läßt man die entsprechende Stelle
im Befehl leer. Jeder vollständige Befehl in Assembler-Sprache
wird durch ein Semicolon abgeschlossen.
In Tabelle I bedeutet das Symbol DEST eine Bestimmungsangabe
und ist im Befehl in Assembler-Sprache durch eine der fol
genden Angaben zu übersetzen:
DEST
*rd++i
*rd++j
*rd++k
obuf
*rd++j
*rd++k
obuf
wobei beispielsweise *rd++i bedeutet, daß rd, nämlich die
Adresse der Speicherstelle im Schreib-Lesespeicher auf die
der Inhalt des Registers RD hinweist, nachträglich durch den
Inhalt i des Registers RI inkrementiert wird. Interprätatio
nen der verschiedenen, vorstehend aufgeführten Bestimmungs
angaben werden nachfolgend noch genauer gegeben.
In der Tabelle I bedeutet das Symbol XSRC eine Angabe für
die Quelle des Datenworts x und das Symbol YSRC bedeutet
eine Angabe für die Quelle des Datenworts y. Jedes dieser
beiden Symbole in Tabelle I ist in einem Befehl in Assembler-
Sprache durch eine der Angaben in den nachstehenden beiden
Spalten zu ersetzen:
XSRC | |||||||
YSRC | |||||||
x(oldx) | |||||||
*ry++i | |||||||
VALUE(immediate x) | *ry++j | ||||||
*rx++i | *ry++k | ||||||
*rr++j | ibufy | ||||||
*rx++k @ | *rx @ | *rx-- @ | ibufy @ | *(rom+rx++i) @ | *(rom+rx++j) @ | *(rom+rx++k) @ | & LABEL |
In den vorstehenden Spalten XSRC stellt das Symbol VALUE
eine Zahl dar, die als ein Argument (in mathematischem Sinn)
eines Befehls auftritt, d. h. das 16-Bit-Wort, das Operationscode
im Festwertspeicher (Read-only-memory) unmittelbar
folgt. Dieses Argument wird durch die im Programmzählerregister
PC stehende Adresse adressiert. Bei anderen Holvorgängen
aus dem Speicher wird das Koeffizientenwort x durch
den Inhalt rx des Registers RX adressiert. Die Angabe
*(rom+rx . . .) gibt an, daß der Inhalt rx des Registers RX
auf den Festwertspeicher (rom) statt auf den Schreib-Lesespeicher
zeigt. Das Symbol gibt an, daß der aus der
Speicherstelle x gelesene Wert eine Adresse ist, die einem
Label im Programm zugeordnet ist. Andere Ausdrücke in den
vorstehenden beiden Spalten für die Quellen des Koeffizientenworts
x und des Datenworts y werden nachfolgende genauer
erläutert.
Bei der Bildung vollständiger Befehle in Assembler-Sprache
aus den in Tabelle I angegebenen Informationen ist eine gewisse
Vorsicht angebracht. Wenn der Ausdruck DEST=YSRC in
einem Befehl gewünscht wird, der den Ausdruck YSRC aus der am
weitesten rechts stehenden Spalte enthält, dann muß der Ausdruck
DEST=y anstelle des Ausdrucks DEST=YSRC benutzt
werden. Wenn das gerundete Ausgangswort w in der am weitesten
rechts stehenden Spalte verwendet werden soll, so kann
der Ausdruck DEST=YSRC nicht aus der am weitesten links
stehenden Spalte gewählt werden. Außerdem sollte NOTHING
aus der am weitesten links stehenden Spalte gewählt werden,
wenn der Befehl in Assembler-Sprache ein normaler Befehl ist,
bei dem die Quelle für das Koeffizientenwort x sich im
Schreib-Lesespeicher befindet.
Bei der Vorbereitung eines Programms schreibt ein Programmierer
zuerst eine Folge von allgemeinen mathematischen Ausdrücken
oder Operationen, die ausgeführt werden sollen. Dabei
kann sich beispielsweise die folgende Formel ergeben:
x · f(w) + fa(a) → a{→ w}.
Ein solcher allgemeiner mathematischer Ausdruck wird vom Programmierer
in eine Angabe in Assembler-Sprache der folgenden
Form übersetzt:
Darin bedeuten:
l ein Befehlsfeld, das die Bildung eines Produkts steuert;
m das Befehlsfeld zur Durchführung einer Akkumulierung;
n ein Befehlsfeld, das eine Übertragungsoperation vom Register A zum Register W mit der erforderlichen Rundung steuert;
s ein Befehlsfeld, das eine Schreib-Bestimmungssuelle angibt. In diesem Beispiel ist die Bestimmungsquelle eine Speicherstelle, die durch die im Register RD abgelegte Adresse angegeben wird. Die Adresse wird nachträglich inkrementiert und das Ergebnis im Register RD gespeichert;
t ein Befehlsfeld für das Holen von Informationen aus einer Adresse, die in einem Adressenregister des Arithmetikabschnitts gespeichert ist, sowie für das nachträgliche Inkrementieren dieser Adresse und Rückspeichern in das gleiche Register.
m das Befehlsfeld zur Durchführung einer Akkumulierung;
n ein Befehlsfeld, das eine Übertragungsoperation vom Register A zum Register W mit der erforderlichen Rundung steuert;
s ein Befehlsfeld, das eine Schreib-Bestimmungssuelle angibt. In diesem Beispiel ist die Bestimmungsquelle eine Speicherstelle, die durch die im Register RD abgelegte Adresse angegeben wird. Die Adresse wird nachträglich inkrementiert und das Ergebnis im Register RD gespeichert;
t ein Befehlsfeld für das Holen von Informationen aus einer Adresse, die in einem Adressenregister des Arithmetikabschnitts gespeichert ist, sowie für das nachträgliche Inkrementieren dieser Adresse und Rückspeichern in das gleiche Register.
Der nächste, vom Programmierer ausgeführte Schritt besteht
darin, die Angabe in Assembler-Sprache wie folgt zeitlich
auseinanderzuziehen:
Die sich ergebende, zeitlich auseinandergezogene Angabe in
Assembler-Sprache, die auf der diagonalen Zeitlinie in der
am weitesten links stehenden Spalte erscheint, wird zusammen
mit zeitlich auseinandergezogenen Angaben in Assembler-
Sprache dargestellt, die andere allgemeinen mathematische Operationen
darstellen. Wenn diese zeitlich auseinandergezogenen
Angaben in Assembler-Sprache zusammengestellt werden, bilden
die sich ergebenden Stücke unterschiedlicher Angaben, die
in der gleichen Zeile oder während des gleichen Intervalls,
beispielsweise des Intervalls i, auftreten, einen Befehl in
Assembler-Sprache. In dem Befehl in Assembler-Sprache stellen
die unterschiedlichen Informationsstücke im gleichen Intervall
getrennte Felder dieses Befehls in Assembler-Sprache
dar. Jedes der Felder steuert einen anderen Unterabschnitt
des Prozessors zur Durchführung eines Schritts bei der
Durchführung der Auswertung, der durch einen Teil eines der
allgemeinen mathematischen Ausdrücke beschrieben wird.
Ein Assembler-Programm, das auf einem Allzweckrechner läuft,
verarbeitet jeden Befehl in Assembler-Sprache, indem die
Quellenfelder im Programm um zwei Prozessorzyklen gegenüber
dem Rest der Felder im gleichen Befehl in Assembler-Sprache
zeitlich nach vorn geschoben werden. Diese Verschiebung der
Quellenfelder erfolgt für jeden Befehl in Assembler-Sprache
im Programm. Die sich ergebende Zeitlinie für die obige
Assembler-Angabe stellt sich nach der zeitlichen Verzerrung
durch den Programmierer und den Assembler wie folgt dar:
In den Fig. 5 und 6 ist ein Zeitliniendiagramm gezeigt,
das angibt, wie Daten im digitalen Signalprozessor verarbeitet
werden. Ganz allgemein gibt das Diagramm den Datenfluß
über verschiedene Unterabschnitte des Prozessors bei der
Ausführung eines allgemeinen mathematischen Ausdrucks zusammen
mit Teilen anderer mathematischer Ausdrücke wieder.
Bevor die angegebenen Operationen beschrieben werden, sollen
zunächst Symbole definiert werden, die im Zeitliniendiagramm
nach Fig. 5 und 6 benutzt werden.
Ii ist ein Maschinensprachbefehl, der während eines
Prozessorzyklus oder Intervalls i aus dem Festwertspeicher
geholt und im Prozessor während eines Prozessorzyklus
oder Intervalls i+1 decodiert wird. Im
allgemeinen beeinflußt der Befehl Ii die Operation
von Abschnitten des Prozessors während eines Prozessorzyklus
oder Intervalls i+2. Wie oben angegeben,
enthält jeder Befehl die Felder oder Steuernachrichten
l, m, n, s, t.
Ii(t) stellt das Feld t im Maschinensprachbefehl Ii dar, der das Holen der Operanden xi+3 und yi+3 steuert. Diese Holvorgänge finden während des Intervalls i+3 statt.
Ii(l) stellt das Feld n im Maschinensprachbefehl Ii dar, der die Berechnung eines Produkts oder Zwischenoperanden pi+2 während des Intervalls i+2 steuert. Das Produkt pi+2 ist eine Funktion der Operanden xi+1 und yi+1.
Ii(m) stellt das Feld m im Maschinensprachbefehl Ii dar, der die Akkumulierung des Ausgangsworts oder gewünschten, resultierenden Worts ai+2 während des Intervalls i+2 steuert. Das resultierende Wort ai+2 ist eine Funktion des letzten vorhergehenden resultierenden Worts ai+1 und eines früher berechneten Produkts pi+1.
Ii(n) ist ein Feld n im Maschinensprachbefehl, der die Übertragung eines gerundeten Ausgangsworts wi+2 während des Intervalls i+2 steuert. Das gerundete Ausgangswort wi+2 ist eine Funktion des letzten gerundeten Ausgangsworts wi+1 und des resultierenden Worts ai+1 des Akkumulators.
Ii(s) ist ein Feld im Maschinensprachbefehl, der das Einspeichern des gerundeten Ausgangsworts wi+1 und die Modifizierung der in Registern gespeicherten Adressen ui+2 während des Intervalls i+2 steuert. Die modifizierten Adressen sind eine Funktion der früheren Adresse ui+1 und des Felds Ii(s). Der akualisierte Speicherzustand Mi+2 ist eine Funktion des Felds Ii(s), des vorhergehenden Speicherzustands Mi+1, der registergespeicherten Adressen ui+1 und des gerundeten Ausgangsworts wi+1.
Ii(s, t) ist eine Kombination der Felder s und t im Maschinensprachbefehl. Die Felder steuern die Modifizierung der registergespeicherten Adressen ui+2 während des Intervalls i+2. Die modifizierten Adressen ui+2 sind außerdem eine Funktion der Adresse ui+1.
xi und yi sind Operanden, die während des Intervalls i unter Steuerung des Felds t des während des Intervalls i-3 aus dem Speicher geholten Befehls Ii-3 aus dem Speicher geholt werden. Der Befehl Ii-3 wird während des Intervalls i-2 decodiert und steuert die Verarbeitung während des Intervalls i-1, in welchem die Adressen für die Operanden xi und yi erzeugt werden. Wie oben erwähnt, erfolgt ein Zugriff zu diesen Operanden während des Intervalls i. Sie werden durch den Multiplizierer während des Intervalls i+1 unter Steuerung des Felds l im Befehl Ii-1 verarbeitet, der während des Intervalls ii-1 geholt wird. Dadurch wird der Zwischenoperand oder das Produkt pi+1 erzeugt.
pi+1 stellt das Produkt dar, das vom Multiplizierer während des Intervalls i+1 erzeugt wird. Dieses Produkt ist ein Zwischenoperand, der als Eingangssignal für den Akkumulator während seiner Operation im Intervall i+2 benutzt wird. Das Produkt pi+1 wird im Register P unter Steuerung des Felds Ii-1(l) gebildet. Der Multiplikator und Multiplikant sind die Operanden xi und yi.
ai+2 stellt den Inhalt des Akkumulators während des Intervalls i+2 dar. Dies ist das gewünschte resultierende Wort ai+2 für den ausgewerteten Ausdruck. Das Wort ai+2 stellt ein Eingangssignal für den Rundungs- und Ausgangsunterabschnitt im Intervall i+3 dar. Die Rundungsoperation findet unter Steuerung des Felds Ii+1(n) statt.
wi+3 stellt das gerundete Ausgangswort w dar, das im Register W zur Verfügung steht und in den Speicher während des Intervalls i+4 unter Steuerung des Felds Ii+2(s) eingeschrieben werden kann.
Ii(t) stellt das Feld t im Maschinensprachbefehl Ii dar, der das Holen der Operanden xi+3 und yi+3 steuert. Diese Holvorgänge finden während des Intervalls i+3 statt.
Ii(l) stellt das Feld n im Maschinensprachbefehl Ii dar, der die Berechnung eines Produkts oder Zwischenoperanden pi+2 während des Intervalls i+2 steuert. Das Produkt pi+2 ist eine Funktion der Operanden xi+1 und yi+1.
Ii(m) stellt das Feld m im Maschinensprachbefehl Ii dar, der die Akkumulierung des Ausgangsworts oder gewünschten, resultierenden Worts ai+2 während des Intervalls i+2 steuert. Das resultierende Wort ai+2 ist eine Funktion des letzten vorhergehenden resultierenden Worts ai+1 und eines früher berechneten Produkts pi+1.
Ii(n) ist ein Feld n im Maschinensprachbefehl, der die Übertragung eines gerundeten Ausgangsworts wi+2 während des Intervalls i+2 steuert. Das gerundete Ausgangswort wi+2 ist eine Funktion des letzten gerundeten Ausgangsworts wi+1 und des resultierenden Worts ai+1 des Akkumulators.
Ii(s) ist ein Feld im Maschinensprachbefehl, der das Einspeichern des gerundeten Ausgangsworts wi+1 und die Modifizierung der in Registern gespeicherten Adressen ui+2 während des Intervalls i+2 steuert. Die modifizierten Adressen sind eine Funktion der früheren Adresse ui+1 und des Felds Ii(s). Der akualisierte Speicherzustand Mi+2 ist eine Funktion des Felds Ii(s), des vorhergehenden Speicherzustands Mi+1, der registergespeicherten Adressen ui+1 und des gerundeten Ausgangsworts wi+1.
Ii(s, t) ist eine Kombination der Felder s und t im Maschinensprachbefehl. Die Felder steuern die Modifizierung der registergespeicherten Adressen ui+2 während des Intervalls i+2. Die modifizierten Adressen ui+2 sind außerdem eine Funktion der Adresse ui+1.
xi und yi sind Operanden, die während des Intervalls i unter Steuerung des Felds t des während des Intervalls i-3 aus dem Speicher geholten Befehls Ii-3 aus dem Speicher geholt werden. Der Befehl Ii-3 wird während des Intervalls i-2 decodiert und steuert die Verarbeitung während des Intervalls i-1, in welchem die Adressen für die Operanden xi und yi erzeugt werden. Wie oben erwähnt, erfolgt ein Zugriff zu diesen Operanden während des Intervalls i. Sie werden durch den Multiplizierer während des Intervalls i+1 unter Steuerung des Felds l im Befehl Ii-1 verarbeitet, der während des Intervalls ii-1 geholt wird. Dadurch wird der Zwischenoperand oder das Produkt pi+1 erzeugt.
pi+1 stellt das Produkt dar, das vom Multiplizierer während des Intervalls i+1 erzeugt wird. Dieses Produkt ist ein Zwischenoperand, der als Eingangssignal für den Akkumulator während seiner Operation im Intervall i+2 benutzt wird. Das Produkt pi+1 wird im Register P unter Steuerung des Felds Ii-1(l) gebildet. Der Multiplikator und Multiplikant sind die Operanden xi und yi.
ai+2 stellt den Inhalt des Akkumulators während des Intervalls i+2 dar. Dies ist das gewünschte resultierende Wort ai+2 für den ausgewerteten Ausdruck. Das Wort ai+2 stellt ein Eingangssignal für den Rundungs- und Ausgangsunterabschnitt im Intervall i+3 dar. Die Rundungsoperation findet unter Steuerung des Felds Ii+1(n) statt.
wi+3 stellt das gerundete Ausgangswort w dar, das im Register W zur Verfügung steht und in den Speicher während des Intervalls i+4 unter Steuerung des Felds Ii+2(s) eingeschrieben werden kann.
Im Diagramm gemäß Fig. 5 und 6 sind die gesamten Verarbeitungsaktivitäten
der verschiedenen Prozessor-Unterabschnitte
des digitalen Signalprozessors zusammen mit der Zeit in Prozessorzyklen
dargestellt. Jede Spalte im Diagramm gibt einen
unterschiedlichen Prozessorzyklus oder ein unterschiedliches
Zeitintervall des Prozessors wieder. Die Information in
jeder Spalte stehen in enger Beziehung zu einem bestimmten
Maschinensprachebefehl. Jede Zeile gibt Aktivitäten eines
anderen Prozessor-Unterabschnitts wieder, der seine zugeordneten
Funktionen während der Operation des digitalen Signalprozessors
ausführt.
Da jede Zeile des Diagramms eine andere Aktivität darstellt,
werden diese Aktivitäten definiert. Die erste Zeile unterhalb
der Prozessorzyklus-Überschriften gibt die Speicheraktivitäten
an, d. h. das Lesen aus (Holen) und Einschreiben in
Speicher. Die zweite Zeile gibt die Zeitpunkte an, zu denen
Befehle im digitalen Signalprozessor decodiert werden. Die
dritte Zeile zeigt die Berechnung des Produkts p durch den
Multiplizier-Unterabschnitt des Prozessors. Die vierte Zeile
gibt die Akkumulierung des resultierenden Worts a durch den
Akkumulator-Unterabschnitt des Prozessors an. Die fünfte
Zeile stellt Aktivitäten des Rundungs- und Überlauf-Unterabschnitts
des Prozessors dar, der das gerundete Ausgangswort
w erzeugt. Die sechste Zeile gibt Aktivitäten in Verbindung
mit der Modifizierung von Adressen an, die für das Holen von
Daten für die arithmetischen Vorgänge verwendet werden.
Die Verarbeitung des oben angegebenen, allgemeinen arithmetischen
Ausdrucks lassen sich durch die verschiedenen Abschnitte
und Unterabschnitte des digitalen Signalprozessors
anhand von Fig. 5 und 6 verfolgen.
Ein erster Schritt bei der Verarbeitung eines allgemeinen
arithmetischen Ausdrucks ist das Holen von Operanden für eine
Multiplikation. Wie oben erwähnt, werden Informationen, die
sich auf diese Holoperation beziehen, durch das Assembler-
Programm in ein Intervall eingegeben, das früher liegt als
die Information für die Steuerung der Multiplikationsoperation.
Als Ergebnis dieser Assembler-Programmfunktion enthält
jeder Maschinensprachebefehl ein Steuerfeld für eine Holoperation,
die Informationen aus dem Speicher für eine Verarbeitung
holt, die durch einen nachfolgenden Maschinensprachebefehl
zu steuern ist.
Als Beispiel für die Verarbeitung eines Befehls sei die Verarbeitung
eines allgemeinen Ausdrucks betrachtet, bei dem
Informationen bezüglich der Holoperationen für seine Operanden
in einem Befehl enthalten sind, der während des Intervalls
i-3 in Fig. 4 geholt worden ist. Dieser Befehl Ii-3 ist
eingerahmt in einem Kästchen dargestellt und mit einem Index
versehen, der den Befehl als einen Befehl identifiziert, der
während des Intervalls i-3 geholt worden ist. Jeder im Funktionsdiagramm
dargestellte Befehl ist auf ähnliche Weise entsprechend
dem Intervall bezeichnet, in welchen der Befehl
aus dem Speicher geholt wird. Außerdem enthält jeder in Fig. 5
und 6 gezeigte Befehl mehrere Felder mit Steuerinformationen.
Jedes dieser Felder l, m, n, s und t ist in Klammern
dargestellt, die den Befehlen in der ersten Zeile zugeordnet
sind, welche die Hol- und Einschreiboperationen angeben. Ein
getrenntes Feld oder getrennte Felder eines Befehls sind in
anderen Zeilen des Diagramms gezeigt, beispielsweise Ii(l)
in der Zeile zur Berechnung von Produkten und Ii(s, t) in der
Zeile zur Modifizierung von Adressen.
Während des Intervalls i-2 wird der gerade geholte Befehl
Ii-3 vom Prozessor decodiert, wie in dem umrahmten Kästchen
in der zweiten Zeile gezeigt, die die Decodierung von Befehlen
darstellt.
Eine Holoperation für die Operanden x und y, angegeben durch
den Befehl Ii-3, beginnt während des Intervalls i-1. Die Holoperation
beginnt unter Verwendung einer Adresse, die im
Befehlsfeld Ii-3(t) angegeben ist. Wenn die Adresse benutzt
wird, wird sie modifiziert und in den Adressen-Arithmetikabschnitt
zurückgespeichert, und zwar als Funktion des Befehlsfelds
Ii-3(s, t) und des vorhergehenden Zustands ui-2 der
Register im Adressen-Arithmetikabschnitt. Diese Modifizierung
der Adressen ist im umrahmten Kästchen unter dem Intervall
i-1 gezeigt. Das Holen dieser Operanden x und y wird
während des Intervalls i beendet, wenn die speziellen,
durch den Befehl Ii-3 identifizierten Operanden xi und yi
aus dem Speicher gelesen und über den gemeinsamen Daten- und
Steuerbus zu den Registern X, 102, und Y, 106, übertragen
werden. Diese Holoperationen sind in dem umrahmten Kästchen
unter dem Intervall i dargestellt. Der Operand xi wird in
typischer Weise aus dem Festwertspeicher und der Operand yi
in typischer Weise aus dem Schreib-Lesespeicher gelesen.
Die Adressenzeiger oder die in den Registern RX und RY gespeicherten
Adressen, die im vorhergehenden Intervall i-1
akualisiert worden sind, werden für das Lesen der Operanden
aus dem Speicher während des Intervalls i verwendet.
Die erste, mit den Operanden xi und yi auszuführende arithmetische
Operation findet während des Intervalls i+1 statt.
Zu dieser Zeit berechnet der Multiplizierer-Unterabschnitt
abhängig vom Befehlsfeld Ii-1(l) einen Zwischenoperanden
oder ein Produkt pi+1, wie in dem umrahmten Kästchen unter
dem Intervall i+1 gezeigt. Ein solches Produkt pi+1 ist als
Funktion der Operanden xi und yi sowie des Befehlsfelds
Ii-1(l) dargestellt.
Der Befehl Ii-1, der das Feld Ii-1(l) enthält, wird während
des Intervalls i-1 aus dem Speicher geholt, während des Intervalls
i decodiert und steuert während des Intervalls i+1
Abschnitte des Prozessors.
Der nächste Schritt bei der Auswertung des allgemeinen Ausdrucks
ist die Verarbeitung im Akkumulator während des Intervalls
i+2. Dies ist in Fig. 6 in der vierten Zeile dargestellt,
die die Akkumulierung des resultierenden Worts a in
einem umrahmten Kästchen in der mit dem Intervall i+2 bezeichneten
Spalte angibt. Wie angegeben, ist das resultierende
Wort ai+2 eine Funktion des früheren resultierenden Worts
ai+1, das im Akkumulator gespeichert ist, des gerade beschriebenen
Zwischenoperanden oder Produkts pi+1 und des
Befehlsfelds Ii(m).
Falls durch den Programmierer angegeben, wird dieses Ergebnis
nach Akkumulierung im Intervall i+2 gerundet und im Ausgangsregister
W gespeichert. Diese Rundungsoperation ist unter
dem Intervall i+3 in einem umrahmten Kästchen in der
fünften Zeile gezeigt, die die Rundung des Ausgangsworts
darstellt. Die spezielle Rundungsoperation findet während
des Intervalls i+3 statt, wobei das gerundete Ausgangswort
wi+3 als Funktion des letzten, vorhergehenden, gerundeten
Ausgangsworts wi+2 des Ausgangsregisters W, 118, des gerade
beschriebenen, resultierenden Worts ai+2 des Akkumulators
und des Befehlsfelds Ii+1(n) dargestellt ist.
Ein letzter Schritt bei der Verarbeitung des allgemeinen Ausdrucks
ist das Einschreiben des gerundeten Ausgangsworts
wi+3 während des Intervalls i+4 in den Speicher. Dies ist
in dem umrahmten Kästchen in der ersten Zeile des Diagramms
unter dem Intervall i+4 gezeigt. Das Einschreiben eines neuen
Speicherzustands Mi+4 ist eine Funktion des Speicherzustands
Mi+3 für das Intervall i+3, des letzten vorhergehenden
Adressenregisterzustands ui+3, des letzten, gerade beschriebenen,
gerundeten Ausgangsworts wi+3 und des Befehlsfelds
Ii+2(s), das während des Intervalls i+2 geholt und während
des Intervalls i+2 decodiert worden ist.
Das gerundete Ausgangswort wi+3 im Ausgangsrundungsregister
am Ende des Intervalls i+3 wird über den gemeinsamen Daten-
und Steuerbus während des Intervalls i+4 entweder zum
Schreib-Lesespeicher oder zu einem Puffer in der Eingangs/
Ausgangsschaltung übertragen.
Zum gleichen Zeitpunkt, zu dem die Speicherschreiboperation
während des Intervalls i+4 stattfindet, werden die Register
des Adressen-Arithmetikabschnitts aufgrund von Informationen
in den während des Intervalls i+2 geholten Informationen
auf den neuesten Stand gebracht. Die verwendeten Informationen
sind in den Feldern Ii+2(s, t) des Befehls Ii+2 enthalten,
der während des Intervalls i+2 geholt und während
des Intervalls i+3 decodiert worden ist.
Man erkennt, daß während des Intervalls i+2 der Befehl Ii,
der während des Intervalls i geholt worden ist, den Multiplizierer-
Unterabschnitt, den Akkumulator-Unterabschnitt und
den Rundungs- und Überlauf-Unterabschnitt des Arithmetikabschnitts
steuert. Dies ergibt sich, weil der Befehl Ii im
Intervall i geholt, im Intervall i+1 decodiert und während
des Intervalls i+2 für die Steuerung benutzt worden ist.
Wie bei früheren Pipeline-Steueranordnungen verbleiben keine
Teile für die Steuerung von Unterabschnitten des Arithmetikabschnitts
während nachfolgender Intervalle. Der größte
Teil der Spalte, die das Intervall i+2 darstellt, ist durch
stark ausgezogene Linien betont, so daß der Leser leicht verschiedene
Felder des Befehls Ii zur Steuerung von Unterabschnitten
des Arithmetikabschnitts während des Intervalls i+2
finden kann.
Operanden für die Multiplizieroperation sind während des
Intervalls i+1 geholt worden, das dem Intervall i folgt. Das
resultierende Produkt pi+2 wird während des nächsten Intervalls
i+2 gebildet.
Ein resultierendes Wort ai+2, das während des gleichen Intervalls
i+2 gebildet wird, ist eine Funktion eines früheren resultierenden
Worts ai+1 und eines früheren Produkts pi+1.
Dieses resultierende Wort ai+2 ist für einen anderen allgemeinen
Ausdruck ausgewertet worden als der allgemeine Ausdruck,
der durch Bildung des Produkts pi+2 ausgewertet worden
ist. Dieses Konzept läßt sich möglicherweise besser verstehen,
wenn man darauf achtet, daß die umrahmten Kästchen
eine Diagonale vom obersten Punkt der Spalte des Zyklus i
herunter bis zur fünften Zeile in der Spalte für den Zyklus
i+3 bilden, und daß diese Diagonale sich auf die Auswertung
eines bestimmten allgemeinen Ausdrucks bezieht. Eine ähnliche
Diagonale, die in jeder Spalte um ein Intervall nach
rechts verschoben ist, bezieht sich auf die Auswertung eines
anderen allgemeinen Ausdrucks.
In typischer Weise werden in einem Signalverarbeitungsprogramm
Befehle sequentiell bis zu einem Punkt verarbeitet, an
dem der Programmzähler PC auf eine Adresse im Programmspeicher
eingestellt ist, der die Speicherstelle für den Befehl
am Anfang der Folge ist. Demgemäß läuft das Programm kontinuierlich
in einer Schleife, wobei die gleiche Folge von Befehlen
wiederholt ausgeführt wird. Weiterhin sind feste Datenwörter
an Speicherstellen abgelegt, wobei Adressen zwischen
Speicherstellen für Befehle in der Programmfolge eingeschachtelt
sind. Auf diese Weise wird entsprechend der
Darstellung in Fig. 4 die Adresse im Programmzählerregister
PC zur Adressierung eines festen Datenworts während des
Zustands 2 des Prozessorzyklus i+1 verwendet. Der Programmzähler
wird dann mit dem festen Inkrement +1 inkrementiert
oder zur Adressierung eines Befehls Ii+2 im Zustand 0 des
Prozessorzyklus i+2 benutzt. Der Programmzähler wird dann
wieder um das feste Inkrement +1 weitergeschaltet und zur
Adressierung des nächsten festen Datenworts im Zustand 2
des Prozessorzyklus i+2 verwendet. Weiterlaufend wird der
Programmzähler um +1 inkrementiert und adressiert im Zustand
0 des Prozessorzyklus i+3 den Befehl Ii+3 usw., bis zum Ende
der Befehlsfolge. Dann wird der Programmzähler durch einen
Hilfsbefehl auf die Adresse des ersten Befehls in der Folge
eingestellt.
Bis zu diesem Punkt der Beschreibung sind nur normale Routineoperationen
des digitalen Signalprozessors erläutert worden.
Weitere Operationen, beispielsweise bedingte Operationen,
können von dem Pipeline-Prozessor ausgeführt werden.
In vielen Fällen kann der Algorithmus, der durch die Bedingungsprüfung
und Ausführung alternativer Operationen, die vom
Ergebnis der Prüfung abhängen, verwirklicht wird, auch durch
eine Folge von einem oder mehreren Befehlen realisiert werden,
die entweder ausgeführt oder nicht ausgeführt werden.
Wenn diese Folge kurz ist, können die Gesamteinsparungen an
Verarbeitungszeit groß sein im Vergleich zur Verwendung der
bedingten Programmsprungtechnik nach dem Stand der Technik
zur Erzielung des gleichen Ergebnisses. Es wurde gefunden,
daß bei der digitalen Signalverarbeitung auftretende bedingte
Operationen häufig unter Verwendung einer Folge von einem
oder mehreren Befehlen realisiert werden können, die entweder
ausgeführt oder nicht ausgeführt werden. Demgemäß wurde
der digitale Signalprozessor so konstruiert, daß er auf diese
Weise bedingte Operationen wirksam verarbeitet. Das benutzte
Konzept hat jedoch breitere Anwendungsmöglichkeiten
auf digitale Prozessoren im allgemeinen.
Es sei beispielsweise das Problem betrachtet, den Maximalwert
einer Folge vom im Speicher befindlichen Proben aufzufinden.
Der Wert jeder Probe in der Folge kann mit dem Wert
eines Worts an einer anderen Speicherstelle unter Verwendung
der üblichen, bedingten Programmsprünge verglichen werden,
bei denen alternative, sequentielle Verarbeitungswege
erforderlich sind:
derart, daß die Angabe xmax=x umgangen wird durch eine bedingte
Änderung des Programmzählerinhalts. Im vorliegenden
digitalen Signalverarbeiter wird der Befehl xmax=x in der
Folge unabhängig von der Prüfung verarbeitet (d. h. geholt und
decodiert), wobei die tatsächliche Übertragung von Daten
nach xmax gesperrt wird, wenn die Prüfung negativ ausgeht.
Ein bedingter Befehl veranlaßt den Prozessor, eine Bedingungsprüfoperation
durchzuführen, die eine nichtarithmetische
Hilfsoperation ist. Wie bei normalen arithmetischen Operationen,
die oben beschrieben worden sind, ist eine richtige
Reihenfolge für das Schreiben eines Befehls in Assembler-
Sprache für bedingte Operationen vorhanden. Nachstehend wird
die richtige Reihenfolge wiedergegeben.
- (1) Es wird eine Bestimmungsstelle gewählt. Das an die Bestimmungsstelle zu gebende Wort wird entweder als das gerundete Ausgangswort w oder das Datenwort y gewählt. Das gewählte Wort kann in den Schreib-Lesespeicher oder in die Eingangs/Ausgangsschaltung eingeschrieben werden. Die spezielle Bestimmungsstelle des gewählten Worts wird angegeben.
- (2) Es wird die zu prüfende Bedingung und die Prozessoroperation angegeben, die auszuführen ist, wenn die Prüfung positiv verläuft.
Die folgende Tabelle faßt die bedingten Befehlt zusammen, die
gebildet werden, indem eine Angabe aus jeder der beiden Spalten
gewählt wird.
Tabelle II | |
Bedingte Befehle | |
NOTHING | |
wenn (BEDINGUNG) doset ( ) | |
DEST = YSRC | wenn (BEDINGUNG) doau ( ) |
DEST = w | wenn (BEDINGUNG) dowt ( ) |
Die Bedeutung für DEST und YSRC ist die gleiche wie in Tabelle
I. Der Ausdruck BEDINGUNG sollte durch eine der folgenden
Angaben ersetzt werden:
BEDINGUNG | |
Beschreibung | |
a==0 | |
Akkumulatoreinheit a ist gleich Null | |
a<0 | Akkumulatoreinheit a ist größer als Null |
a<0 | Akkumulatoreinheit a ist kleiner als Null |
Jeder bedingte Befehl wird in Form eines Operationscodeworts
mit 16 Bits, gefolgt von einem Argument mit 16 Bits,
assembliert. Das Format für einen bedingten Befehl lautet:
wobei c, s und t Steuerfelder wie bei normalen arithmetischen
Befehlen sind. Die Felder s und t haben die gleiche
Bedeutung. Das Steuerfeld c liefert Steuerinformationen für
die bedingte Operation. Diese Informationen beinhalten, welche
Operation auszuführen ist, zusammen mit der zu prüfenden
Bedingung.
Es sind drei Wahlmöglichkeiten für Operationen vorgesehen.
Ein Adressen- oder Inkrementregister des Prozessors wird eingestellt,
wenn die angegebene Bedingung eintritt. Die nächste
Operation des Arithmetikabschnitts wird durchgeführt, wenn
die Bedingung eintritt. Die nächste Schreiboperation wird
durchgeführt, wenn die Bedingung eintritt. Für jeden bedingten
Befehl tritt die angegebene Operation nicht auf, wenn
die Bedingung falsch ist, d. h. nicht eintritt.
Operationen, die einer Bedingungsprüfung unterliegen, sind
diejenigen Operationen, welche im Befehl angegeben sind, der
dem bedingten Befehl in der Pipeline als nächster folgt.
Jeder durch den Prozessor verarbeitete, bedingte Befehl wird
aus dem Festwertspeicher 100 geholt und über den Datenbus
zu den Befehlsregistern übertragen. Die Steuerfelder s und
t werden in dem obenbeschriebenen Befehlsregiste IR-S,T
gespeichert. Das Steuerfeld c wird im Befehlsregister IR-C
abgelegt.
Es soll jetzt unter Bezugnahme auf Fig. 8 die Arbeitsweise
der Anordnung gemäß Fig. 1 und 2 bei der Durchführung einer
bedingten Operation beschrieben werden. Die meisten bedingten
Operationen treten ganz ähnlich wie eine normale Routineoperation
auf. Daher soll diejenigen Teile der Operation,
die von einer Routineoperation abweichen, betont werden. Es
wird im übrigen der Vollständigkeit halber auf die obige
Erläuterung verwiesen.
In Fig. 8 ist ein bedingter Befehl Ii(c, s, t) gezeigt, der
während des Prozessorzyklus i geholt und im Prozessorzyklus
i+1 decodiert wird. Bei diesem Beispiel befindet sich der bedingte
Befehl Ii(c, s, t) in der Pipeline, um einen normalen
arithmetischen Befehl Ii+1(l, m, n, s, t) zu beeinflussen, der
während des Prozessorzyklus i+1 geholt, während des Prozessorzyklus
i+2 decodiert und während des Prozessorzyklus i+3
bedingt ausgeführt wird.
Die Felder s und t des Befehls Ii(c, s, t) steuern Datenholvorgänge
und eine Schreiboperation während des Intervalls
i+2. Der Zustand ui+2 der Register im Adressen-Arithmetikabschnitt
wird während des Intervalls i+2 als Funktion der
Steuerfelder Ii(s, t) und des früheren Zustands ui+1 dieser
Register akualisiert. Eine Speicherschreiboperation Mi+2,
die während des Zyklus i+2 auftritt, ähnelt der oben mit Bezug
auf einen normalen arithmetischen Befehl beschriebenen
Operation. Da der bedingte Befehl ein Hilfsbefehl ist,
läuft der Arithmetikabschnitt 110 während des Intervalls i+2
leer, das der übliche Ausführungszyklus für diesen Befehl
ist. Demgemäß behalten das Multiplizierregister P, das Akkumulatorregister
A und das Rundungsausgangsregister W ihre
jeweiligen Daten vom letzten Zyklus bei. Der Zwischenoperand
pi+2 ist gleich pi+1, das resultierende Wort ai+2 ist gleich
dem resultierenden Wort ai+1 und das gerundete Ausgangswort
wi+2 ist gleich wi+1.
Das Steuerfeld Ii(c), das im Befehlsregister IR-C während
des Intervalls i gespeichert worden ist, enthält einen Teil,
der angibt, welche Bedingung zu prüfen ist, und einen zweiten
Teil, der angibt, welche Operation abhängig von dem Ergebnis
der Bedingungsprüfung auszuführen ist. Während des
Intervalls i+1 werden die beiden Teile des Steuerfelds Ii(c)
in den Schaltungen 211, 212 decodiert und in den Registern
213, 214 gespeichert.
Während des Intervalls i+2 wird der erste decodierte Teil
des Steuerfelds Ii(c), der im Register 213 abgelegt ist,
an einen Komparator 215 angelegt, der festlegt, welche Bedingung
geprüft wird. Gleichzeitig wird der Zustand von Bedingungen
oder Flags Vi+2 von der Steuerung 114 des Arithmetikabschnitts
über einen Weg 225 an den Komparator 215 gegeben.
Demgemäß wird der Zustand der Bedingungen des Arithmetikabschnitts
geprüft. Der Komparator 215 erzeugt ein
"Bedingung-richtig"- oder ein "Bedingung-falsch"-Signal auf
der Leitung 221, über die das Signal als Bedingungssteuerung
an die Logikschaltung 122 gegeben wird.
Während des Intervalls i+2 erzeugt die unter Steuerung des
Bedingungssignals auf der Leitung 221 stehende Logikschaltung
122 weitere Steuersignale, die auf die F-Decodierschaltung
113, die Steuerung 154 des Adressen-Arithmetikabschnitts,
den Schreib-Lesespeicher 105 und die Eingangs/
Ausgangsschaltung 200 verteilt werden. Das Ergebnis der bedingten
Operation wird am Ausgang der Logikschaltung 122
festgehalten, um die verschiedenen Abschnitte des Prozessors
während des Intervalls i+3 zu steuern.
Der normale arithmetische Befehl Ii+1(l, m, n, s, t), der durch
den bedingten Befehl Ii(c, s, t) beeinflußt werden soll, wird
während des Intervalls i+1 geholt und während des Zyklus i+2
decodiert. Ohne den vorhergehenden bedingten Befehl würde
dieser Befehl den Prozessor während des Intervalls i+3
steuern. Datenholvorgänge für das Intervall i+3 verlaufen
wie üblich.
Anschließend hängen während des Intervalls i+3 die ausgeführten
Operationen von den üblichen Operanden zusammen mit
den Zuständen der Steuerleitungen von der Logikschaltung 122
ab, die durch das Ergebnis des während des Intervalls i+2
durchgeführten Vergleichs bedingt sind.
Wenn der bedingte Befehl Ii(c, s, t) ein bedingter Ausführungsbefehl
für den Arithmetikabschnitt ist, werden während
des Intervalls i+3 lediglich Operationen der Arithmetikeinheit
bedingt ausgeführt. Das Einschreiben in den Speicher
wird zu diesem Zeitpunkt nicht gesteuert. Wenn die Bedingung
für den bedingten Arithmetikabschnitt-Ausführungsbefehl
wahr ist (eintritt), werden ein neues Produkt pi+3, ein
neues resultierendes Wort ai+3 und ein neues gerundetes Ausgangswort
wi+3 erzeugt. Wenn die Bedingung falsch ist (nicht
eintritt), wird die Steuerung des Arithmetikabschnitts gesperrt
und kein neues Produkt, kein neues resultierendes
Wort oder gerundetes Ausgangswort gebildet. Die Register P,
A und W behalten die Werte aus dem letzten Intervall. Alle
anderen normalen Prozessoroperationen finden während des
Intervalls i+3 statt.
Wenn der bedingte Befehl Ii(c, s, t) ein bedingter Schreibbefehl
ist, werden nur die Speicher- und Ausgangsschreiboperationen
während des Intervalls i+3 beeinflußt. Die Operationen
des Arithmetikabschnitts werden nicht gesperrt. Wenn die
Bedingung für den bedingten Schreibbefehl wahr ist, so findet
die Speicherschreiboperation Mi+3 oder die Ausgangsschreiboperation
statt. Wenn die Bedingung falsch ist, wird
die Steuerung der Schreiboperation gesperrt und der Speicher
behält seinen Zustand Mi+2 vom letzten Intervall bei. Das
Einschreiben in den Speicher oder den Ausgang wird, wie oben
für normale Befehle erläutert, durch das Steuerfeld Ii gesteuert.
Unabhängig davon, ob die Bedingung wahr oder falsch
ist, treten alle anderen Prozessoroperationen normal während
des Intervalls i+3 auf. Wenn der bedingte Befehl Ii(c, s, t)
ein bedingter Registereinstellbefehl ist, wird lediglich
eine Registereinstelloperation während des Intervalls i+3
beeinflußt. Man beachte, daß in diesem Fall, da der Registereinstellbefehl
ein Hilfsbefehl ist, keine Aktivitäten
im Arithmetikabschnitt auftreten. Das Einschreiben in den
Speicher oder den Ausgang kann ohne Störung entsprechend
der Angabe durch das Steuerfeld Ii(s) weitergehen. Wenn
die Bedingung wahr ist, wird das Register, das durch das
Registerauswahlfeld des festen, dem Registereinstellbefehl
zugeordneten Datenworts mit dem Wert im Wertfeld dieses
Datenworts geladen, wie oben erläutert. Wenn die Bedingung
falsch ist, wird die Steuerung der Registereinstelloperation
gesperrt, und der Registerinhalt wird durch den Registereinstellbefehl
nicht geändert.
Claims (7)
1. Digitaler Pipelineprozessor zur Ausführung eines Stroms
von Befehlswörtern mit einem Arithmetikabschnitt (110) zur
Verarbeitung von Datenwörtern mittels verschiedener
Verarbeitungsunterabschnitte (112, 115, 116), die jeweils
unterschiedliche Operationen ausführen und ein resultierendes
Datenwort erzeugen,
mit einer Datensenke (105) zur Aufnahme des resultierenden Datenworts, mit Steuerschaltungen (131, 211, 212, 213, 214) zum Decodieren eines einzelnen bedingten Befehlsworts, um eine Prüfung auf eine Bedingung während eines ersten nachfolgenden Prozessorzyklus (i+2) durchzuführen, wobei die Steuerschaltungen (131, 211, 212, 213, 214) ein weiteres Befehlswort während des ersten nachfolgenden Prozessorzyklus decodieren, um Verarbeitungsoperationen während eines zweiten nachfolgenden Prozessorzyklus (i+3) zu veranlassen,
und mit einem Komparator (215) der (über 225, 114, 103) die im Prozessor während des ersten nachfolgenden Prozessorzyklus vorliegenden Bedingungen und (über 200, 104) die im bedingten Befehlswort enthaltene Bedingung vergleicht und ein Bedingungssignal (auf 221) erzeugt, dadurch gekennzeichnet, daß der Prozessor Logikschaltungen (122) aufweist, die unter Ansprechen auf das Bedingungssignal selektiv die Steuerung wenigstens eines Teils eines Abschnitts des Prozessors während des zweiten nachfolgenden Prozessorzyklus abschalten.
mit einer Datensenke (105) zur Aufnahme des resultierenden Datenworts, mit Steuerschaltungen (131, 211, 212, 213, 214) zum Decodieren eines einzelnen bedingten Befehlsworts, um eine Prüfung auf eine Bedingung während eines ersten nachfolgenden Prozessorzyklus (i+2) durchzuführen, wobei die Steuerschaltungen (131, 211, 212, 213, 214) ein weiteres Befehlswort während des ersten nachfolgenden Prozessorzyklus decodieren, um Verarbeitungsoperationen während eines zweiten nachfolgenden Prozessorzyklus (i+3) zu veranlassen,
und mit einem Komparator (215) der (über 225, 114, 103) die im Prozessor während des ersten nachfolgenden Prozessorzyklus vorliegenden Bedingungen und (über 200, 104) die im bedingten Befehlswort enthaltene Bedingung vergleicht und ein Bedingungssignal (auf 221) erzeugt, dadurch gekennzeichnet, daß der Prozessor Logikschaltungen (122) aufweist, die unter Ansprechen auf das Bedingungssignal selektiv die Steuerung wenigstens eines Teils eines Abschnitts des Prozessors während des zweiten nachfolgenden Prozessorzyklus abschalten.
2. Prozessor nach Anspruch 1,
dadurch gekennzeichnet, daß der bedingte Befehl ein bedingter
Arithmetikabschnitt-Ausführungsbefehl ist, und daß die
Logikschaltungen (122) die Steuerung des Arithmetikabschnitts
während des zweiten nachfolgenden Prozessorzyklus
ermöglicht, wenn das Bedingungssignal wahr ist, und
die Steuerung des Arithmetikabschnitts während des zweiten
nachfolgenden Prozessorzyklus sperrt, wenn das Bedingungssignal
falsch ist.
3. Prozessor nach Anspruch 1,
dadurch gekennzeichnet, daß der bedingte Befehl ein bedingter
Schreibbefehl ist, daß die Logikschaltungen (122) die
Steuerung für das Einschreiben in den Bestimmungsabschnitt
während des zweiten nachfolgenden Prozessorzyklus ermöglichen,
wenn das Bedingungssignal wahr ist, und daß die Logikschaltungen
(122) die Steuerung für das Einschreiben in den
Bestimmungsabschnitt während des zweiten nachfolgenden Prozessorzyklus
sperren, wenn das Bedingungssignal falsch ist.
4. Prozessor nach Anspruch 1,
dadurch gekennzeichnet, daß der bedingte Befehl ein bedingter
Registereinstellbefehl ist, daß die Logikschaltungen
(122) die Steuerung für das Einstellen eines Registerabschnitts
während des zweiten nachfolgenden Prozessorzyklus
ermöglichen, wenn das Bedingungssignal wahr ist, und daß die
Logikschaltungen (122) die Steuerung für das Einstellen des
Registerabschnitts während des zweiten nachfolgenden Prozessorzyklus
sperren, wenn das Bedingungssignal falsch ist.
5. Prozessor nach Anspruch 1,
der abhängig von einer Vielzahl von Steuerfeldern in jedem
Operationscodewort einer Folge von Operationscodewörtern
arbeitet, wobei jedes bedingte Operationscodewort als
Ii(c, s, t) und jedes nicht bedingte Operationscodewort als
Ii+1(l, m, . . . s, t) mit i=0, 1, 2, . . . bezeichnet ist, Ii(c) ein
bedingtes Steuerfeld und Ii+1(m) ein zweites normales Steuerfeld
sind und jedes normale Steuerfeld Informationen zur
Bestimmung eines Schritts bei der Verarbeitung eines gewählten
Ausdrucks eines Operanden yi+2 aufweist,
dadurch gekennzeichnet,
daß die Steuerschaltungen (131, 211, 212, 213, 214) ein bedingtes Operationscodewort Ii(c, s, t) während eines ersten Intervalls (i+1=2) und ein normales Operationscodewort I₂(l, m, . . . s, t) während eines zweiten Intervalls (i+2=3) decodieren,
daß Registerschaltungen zum Holen und Speichern eines Operanden Y₃ während des zweiten Intervalls vorgesehen sind,
und daß wenigstens ein Verarbeitungsunterabschnitt des Arithmetikabschnitts (110) unter Ansprechen auf einige der decodierten Felder I₂(l, m, . . . s, t) während eines dritten Intervalls den Operanden Y₃ während des dritten Intervalls verarbeitet, wenn die Bedingung erfüllt ist, und die Verarbeitung des Operanden Y₃ während des dritten Abschnitts wegläßt, wenn die Bedingung nicht erfüllt ist.
daß die Steuerschaltungen (131, 211, 212, 213, 214) ein bedingtes Operationscodewort Ii(c, s, t) während eines ersten Intervalls (i+1=2) und ein normales Operationscodewort I₂(l, m, . . . s, t) während eines zweiten Intervalls (i+2=3) decodieren,
daß Registerschaltungen zum Holen und Speichern eines Operanden Y₃ während des zweiten Intervalls vorgesehen sind,
und daß wenigstens ein Verarbeitungsunterabschnitt des Arithmetikabschnitts (110) unter Ansprechen auf einige der decodierten Felder I₂(l, m, . . . s, t) während eines dritten Intervalls den Operanden Y₃ während des dritten Intervalls verarbeitet, wenn die Bedingung erfüllt ist, und die Verarbeitung des Operanden Y₃ während des dritten Abschnitts wegläßt, wenn die Bedingung nicht erfüllt ist.
6. Prozessor nach Anspruch 1,
der abhängig von einer Vielzahl von Steuerfeldern in jedem
Operationscodewort einer Folge von Operationscodewörtern arbeitet,
wobei jedes bedingte Operationscodewort mit Ii(c, s, t)
und jedes Hilfsoperationscodewort mit Ii+1(c, s, t) mit
i=0, 1, 2, . . . bezeichnet ist, Ii(c) ein bedingtes Steuerfeld,
Ii(s, t) Steuerfelder und Ii+1(c) ein Hilfssteuerfeld mit Informationen
zur Einstellung eines Prozessorregisters sind,
dadurch gekennzeichnet, daß
die Steuerschaltungen (131, 211, 212, 213, 214)
ein bedingtes Operationscodewort Ii(c, s, t)
während eines ersten Intervalls (i+1=2) und ein Hilfsoperationscodewort
I₂(c, s, t) während eines zweiten Intervalls
(i+2=3) decodieren, daß Registerschaltungen zum Holen und
Speichern eines Registersteuerfelds (XSR, XSL) während des
zweiten Intervalls vorgesehen sind, und daß wenigstens ein Verarbeitungsunterabschnitt des
Arithmetikabschnitts (110) unter Ansprechen auf einige der
decodierten Felder I₂(c, s, t) während eines dritten Intervalls
die Register während des dritten Intervalls einstellen,
wenn die Bedingung erfüllt ist, und die Steuerung für die
Einstellung des Registers während des dritten Intervalls
sperren, wenn die Bedingung nicht erfüllt ist.
7. Prozessor nach Anspruch 1,
der abhängig von einer Vielzahl von Steuerfeldern in jedem
Operationscodewort einer Folge von Operationscodewörtern arbeitet,
wobei jedes bedingte Operationscodewort mit Ii(c, s, t)
und jedes normale Operationscodewort mit Ii+1(l, m, . . . s, t)
mit i=0, 1, 2, . . . bezeichnet ist, Ii(c) ein bedingtes Steuerfeld,
Ii(s, t) Steuerfelder und Ii+k(s) ein normales Steuerfeld
mit Informationen zur Angabe einer Bestimmungsstelle
für das Verarbeitungsergebnis w₃ sind,
dadurch gekennzeichnet, daß
die Steuerschaltungen (211, 212, 213, 214)
ein bedingtes Operationscodewort Ii(c, s, t) während
eines ersten Intervalls (i+1=2) und ein normales Operationscodewort
I₂(l, m, . . . s, t) während eines zweiten Intervalls
(i+2=3) decodieren, daß Schaltungen zum Übertragen
und Einspeichern eines Ergebnisses w₃ während eines dritten
Intervalls vorgesehen sind, und daß wenigstens eine Datensenke
(105) unter Ansprechen auf das decodierte
normale Bedingungsfeld I₂ während des dritten Intervalls
das Ergebnis w₃ während des dritten Intervalls einschreibt,
wenn die Bedingung erfüllt ist, und die Steuerung für das
Einschreiben des Ergebnisses w₃ während des dritten Intervalls
sperrt, wenn die Bedingung nicht erfüllt ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12005980A | 1980-02-11 | 1980-02-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3104256A1 DE3104256A1 (de) | 1982-03-18 |
DE3104256C2 true DE3104256C2 (de) | 1991-06-27 |
Family
ID=22388030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3104256A Granted DE3104256A1 (de) | 1980-02-11 | 1981-02-07 | Digitaler pipeline-prozessor fuer bedingte operationen |
Country Status (10)
Country | Link |
---|---|
JP (1) | JPS56149648A (de) |
BE (1) | BE887451A (de) |
CA (1) | CA1155231A (de) |
DE (1) | DE3104256A1 (de) |
ES (1) | ES499277A0 (de) |
FR (1) | FR2475763A1 (de) |
GB (1) | GB2069733B (de) |
IT (1) | IT1135394B (de) |
NL (1) | NL8100631A (de) |
SE (1) | SE456051B (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4589065A (en) * | 1983-06-30 | 1986-05-13 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable trap instructions in a primitive instruction set computing system |
GB8401807D0 (en) * | 1984-01-24 | 1984-02-29 | Int Computers Ltd | Pipelined data processing apparatus |
US4755966A (en) * | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
GB2343973B (en) * | 1998-02-09 | 2000-07-12 | Mitsubishi Electric Corp | Data processing device for scheduling conditional operation instructions in a program sequence |
JP3881763B2 (ja) | 1998-02-09 | 2007-02-14 | 株式会社ルネサステクノロジ | データ処理装置 |
CN113485748B (zh) * | 2021-05-31 | 2022-08-12 | 上海卫星工程研究所 | 卫星条件指令***及其执行方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3728692A (en) * | 1971-08-31 | 1973-04-17 | Ibm | Instruction selection in a two-program counter instruction unit |
BE789583A (fr) * | 1971-10-01 | 1973-02-01 | Sanders Associates Inc | Appareil de controle de programme pour machine de traitement del'information |
-
1981
- 1981-01-30 SE SE8100735A patent/SE456051B/sv not_active IP Right Cessation
- 1981-02-07 DE DE3104256A patent/DE3104256A1/de active Granted
- 1981-02-09 FR FR8102496A patent/FR2475763A1/fr active Granted
- 1981-02-10 JP JP1758681A patent/JPS56149648A/ja active Granted
- 1981-02-10 BE BE0/203750A patent/BE887451A/fr unknown
- 1981-02-10 ES ES499277A patent/ES499277A0/es active Granted
- 1981-02-10 IT IT19634/81A patent/IT1135394B/it active
- 1981-02-10 NL NL8100631A patent/NL8100631A/nl not_active Application Discontinuation
- 1981-02-10 CA CA000370508A patent/CA1155231A/en not_active Expired
- 1981-02-11 GB GB8104139A patent/GB2069733B/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
ES8201745A1 (es) | 1982-01-16 |
CA1155231A (en) | 1983-10-11 |
JPS619648B2 (de) | 1986-03-25 |
SE8100735L (sv) | 1981-08-12 |
IT8119634A0 (it) | 1981-02-10 |
GB2069733B (en) | 1984-09-12 |
DE3104256A1 (de) | 1982-03-18 |
GB2069733A (en) | 1981-08-26 |
FR2475763A1 (fr) | 1981-08-14 |
ES499277A0 (es) | 1982-01-16 |
BE887451A (fr) | 1981-06-01 |
NL8100631A (nl) | 1981-09-01 |
SE456051B (sv) | 1988-08-29 |
JPS56149648A (en) | 1981-11-19 |
IT1135394B (it) | 1986-08-20 |
FR2475763B1 (de) | 1984-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2704842C2 (de) | Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE3424962C2 (de) | ||
DE2714805C2 (de) | ||
DE2753062C2 (de) | Einrichtung zur wiederholten Durchführung von Programmschleifen | |
DE2715073C3 (de) | Mikroprogrammierte Rechner-Steuervorrichtung | |
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE1928202B2 (de) | Einrichtung zur Erstellung statistischer Daten über den Operationsablauf programmgesteuerter Datenverarbeitungsanlagen | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE2318069A1 (de) | Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix | |
DE2421130C2 (de) | ||
DE3900246C2 (de) | ||
DE3507584C2 (de) | ||
DE4134392C2 (de) | Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung | |
DE2753650C2 (de) | Zeithaltende Einrichtung mit einem Register zum Speichern von Zeitzähldaten | |
DE2702722C2 (de) | Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen | |
DE3104256C2 (de) | ||
DE1524114C3 (de) | Adreßrecheneinrichtung für eine Datenverarbeitungsanlage | |
DE1179027B (de) | Speicherprogrammierte digitale Rechenanlage | |
DE2725614C2 (de) | ||
DE3121046C2 (de) | ||
DE2835110A1 (de) | Schneller echtzeit-rechneremulator | |
DE2245284A1 (de) | Datenverarbeitungsanlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 9/38 |
|
8127 | New person/name/address of the applicant |
Owner name: AT & T TECHNOLOGIES, INC., NEW YORK, N.Y., US |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |