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
Application number
DE3104256A
Other languages
English (en)
Other versions
DE3104256A1 (de
Inventor
James Riley Hazlet N.J. Us Boddie
John Stewart Tinton Falls N.J. Us Thompson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Original Assignee
AT&T Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by AT&T Technologies Inc filed Critical AT&T Technologies Inc
Publication of DE3104256A1 publication Critical patent/DE3104256A1/de
Application granted granted Critical
Publication of DE3104256C2 publication Critical patent/DE3104256C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01GCAPACITORS; CAPACITORS, RECTIFIERS, DETECTORS, SWITCHING DEVICES, LIGHT-SENSITIVE OR TEMPERATURE-SENSITIVE DEVICES OF THE ELECTROLYTIC TYPE
    • H01G9/00Electrolytic capacitors, rectifiers, detectors, switching devices, light-sensitive or temperature-sensitive devices; Processes of their manufacture
    • H01G9/20Light-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.
Normale Operation
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.
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.
Tabelle I
Normale Befehle in Assembler-Sprache
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
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.
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.
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.
Bedingte Operation
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.
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.
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.
DE3104256A 1980-02-11 1981-02-07 Digitaler pipeline-prozessor fuer bedingte operationen Granted DE3104256A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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