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
German (de)
Other versions
DE3104256A1 (en
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/en
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, 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 OR LIGHT-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

Description

Die Erfindung betrifft einen digitalen Pipelineprozessor nach dem Oberbegriff des Anspruchs 1.The invention relates to a digital Pipeline processor according to the preamble of claim 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.Controlled by a stored program Digital computers typically include a memory, Input-output circuits, a controller and a Arithmetic section. The memory provides a computer program and data to be processed by the arithmetic section. The Arithmetic section contains circuits that have a predetermined Allow treatment of the data. The control device provides control signals for time monitoring as well as for Monitoring the transmission of data to process are. The input-output circuits enable a Transfer of information between the computer and external facilities. Certain operations of the computer can be conditional operations that depend on flags, States or conditions that depend on the result previous operations or other events.

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.To increase the computer speed it is known to set up digital computers for pipeline operations. The arithmetic unit contains a number specialized circuits that are simultaneous and independent work from each other and each have a specific task in one Perform general purpose procedures. Divided the pipeline operation a process in several sub-operations, by the individual  specialized circuits are executed. Successive sub-operations become overlapping, similar as with an industrial assembly line. While each cycle will be new operands to the input of the Arithmetic unit created. The different subsections The arithmetic unit performs its tasks sequentially during through successive cycles. During each cycle becomes produces a result. Every specialized circuit carries its own own task with the cyclic clock rate.

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.In a known way is a digital Pipeline processor has been previously designed so that he Data word instructions from the memory to the arithmetic section and a control section in respective pipeline streams transfers. These streams of data words and commands fill the pipeline circuits within the processor. As long as the Processor works normally, the information is the Pipelines step by step and cyclically through sections processed by the processor.

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.However, if an operation is conditionally executed must, a problem arises. Typically this will Information realized by a conditional jump that the Perform one of two alternative episodes of mostly causes several commands. Because one of these commands themselves located in the processor pipeline when the condition is checked it may become necessary to execute this sequence drop and start refilling the pipeline Fill execution of the alternative sequence. In this case each processing time is lost.

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.Examples of such pipeline processors in which Attempted while processing conditional commands occurring waiting times are known from one Book "Planning a Computer System" by Werner Buchholtz, McGraw Hill Company, 1962, pp. 236-238 and the Journal  "Electronic Rechenanlagen", 1975, Issue 2, pages 80-83. There will be next to the simple stopping of the command flow Occurrence of a conditional command until the announcement of the each result also described the possibility to guess which branch to use in a conditional jump instruction to pursue. If it has been guessed wrong, must meanwhile carried out processing destroyed and then the correct processing branch is initiated become. In addition, a look-ahead procedure explained, in which for both results in a conditional Jump command the respective following command as a precaution and brought if necessary further processed. Then it is at present jump decision in both directions at least done some preliminary work. Another Possibility provides that a conditional jump instruction Enter the following commands in a buffer so that they follow the decision with short access time are available. Finally, according to the cited prior art also exists the ability to work with microinstructions.

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.Also known is a pipeline processor (GB-PS 13 97 310) in which two independent command streams are input become. If in any of the instruction streams, a conditional instruction occurs, a register is set that has a conditional Command blocked in the second command stream.

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. The invention has set itself the task at a pipeline processor blocks and waits in Connection with the processing of conditional commands as simple as possible to avoid. The solution of the task is characterized in claim 1. Further developments of Invention are the subject of the dependent claims.  

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.The invention is based on the assumption that different Programs can be executed by commands a command sequence depending on conditions respectively executed will or will not be executed. If then after a Jump command the execution of a command as not allowed Although this command is indeed through the stages of Pipeline processors needed, but by switching off at least part of processor sections ineffective used, so that, for example, register contents not be overwritten. The following command is then correct and can be executed so that reloading the Pipeline levels are eliminated.

Nachfolgend wird die Erfindung an Hand der Zeichnung be­ schrieben. Es zeigenThe invention will be with reference to the drawing be wrote. Show it

Fig. 1 und 2 in der Anordnung gemäß Fig. 3 das Block­ schaltbild eines digitalen Pipeline-Prozessors; Fig. 1 and 2 in the arrangement of Figure 3 is the block diagram of a digital pipeline processor.

Fig. 4 ein Zeitdiagramm; Fig. 4 is a time chart;

Fig. 5 und 6 in der Anordnung nach Fig. 7 ein Prozessor- Funktionsdiagramm; Fig. 5 and 6 in the arrangement of Figure 7 is a processor function diagram.

Fig. 8 ein Prozessor-Funktionsdiagramm für eine bedingte Operation. FIG. 8 is a processor operation diagram for a conditional operation. FIG .

In den Fig. 1 und 2 ist der Gesamtaufbau eines digitalen Pipeline-Prozessors dargestellt.In Figs. 1 and 2, the overall structure of a digital pipeline processor is shown.

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.A read-only memory 100 stores instructions and fixed data words. Commands are communicated from read-only memory via a common data and control bus 101 to command registers IR-C (131), IR-L, M, N (133) and IR-S, T (134). Parts of the instructions are distributed to the instruction registers. Fixed data words or coefficient words are supplied from the read only memory 100 to a coefficient register 102 by means of the common data and control bus 101 . This register is labeled REG X because the coefficients are identified by the symbol X as follows.

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.A random access memory 105 receives variable data words which can be read either from an external source or from the output of the arithmetic section of the own processor. The variable data words are passed from the random access memory 105 via the common data and control bus 101 to a variable data register 106 . This register is labeled REG Y since variable data words will be referred to below by the symbol Y. At the user's option, the random access memory may also accommodate coefficients used in place of fixed data words in addition to the variable data words.

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.The registers 102 and 106 receive a sequential stream of coefficient words and variable data words, respectively, which represent operands which are input to an arithmetic section 110 . These sequences of operands are processed in the manner of a pipeline or pipeline method by means of a multiplier subsection 112 , an accumulator subsection 115 and a rounding and overflow subsection 116 . A rounded output word is stored in a register 118 labeled REGW, since rounded output words are identified by the symbol W following.

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.The arithmetic section includes a select output circuit 120 for selecting as the output word from the arithmetic section for the data bus 101 either the variable data word y in the register 106 or the rounded output word w in the register 118 . The rounded output word w is the result of an operation performed by the arithmetic section. The selected output word can be transmitted from the register 106 or from the register 118 via the common data and control bus 101 to a specifiable destination, for example to the random access memory 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.As mentioned above, instructions for the processor are stored in the fixed-value memory 100 . During each processor cycle shown in FIG. 4, a single instruction is automatically read from a read only memory location whose address is generated by an address arithmetic unit or address arithmetic section 124 . The address from a program counter register PC in the address arithmetic section passes via an address bus 128 to the address circuit of the read-only memory. It then sends, during each processor cycle, the single instruction thus fetched over the common data and control bus to the various control field or command registers IR-C, IR-L, M, N and IR-S, T corresponding to the various sections of the Processors are assigned.

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.Each instruction or operation code used in the digital signal processor contains a plurality of control fields or control messages, each of which is given a designation below, for example, l, m, n, s and t. The control field registers IR-L, M, N associated with the arithmetic section 110 receive some of the fields, such as command fields I, m, and n, associated with the control of multiply-accumulate-and-round operations. The control field registers IR-S, T associated with the address arithmetic section 124 receive command fields s and t relating to the control of an address register modification, the extraction of operands x and y, and the storage of the data by the Selector 120 Selected output word veran to 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.The address arithmetic section 124 includes two groups of registers 141 and 142 , an address bus latch 145 , an adder 147, and an adder latch 150 connected by buses.

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.The register group 141 with the registers RX, RY, RD and PC is designed to receive memory addresses. An address in the register RX may be used for access to a coefficient word in a memory location in either random access memory or read-only memory. An address in the register RY can be used only for access to a variable data word in a memory location of the random access memory. An address in the register RD can be used to write a resulting data word to a destination office, for example a memory location in the random access memory 105 . An address in the program counter register PC is used for access to the next instruction or fixed data word in read-only memory.

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.The second register group 142 stores variable increment values used for automatically incrementing addresses in the registers RX, RY and RD. Alternatively, the stored addresses may be incremented by a value of a group of fixed values.

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.The operations of the processor are performed by two types of Controlled commands. For most of the time who used the normal commands. You control the execution arithmetic operations in signal processing. A other kind of commands that are occasionally used called auxiliary commands. A special helper command controls  loading an address register or an address ink ment register in the address arithmetic section. It is on taken that a start-up instruction sequence in read-only memory is stored, which begins at an initial address, and that a reset circuit the program counter register PC sets the starting address. After the return operation is typically a sequence of commands to the spoke Additional addresses in the address registers RX, RY and RD and increment values in the increment registers RI, RJ and RK available. These registers are by auxiliary commands set. Usually, the remain in the Registers RI, RJ and RK stored values during one Program in these registers, while the values in the registers RX, RY and RD from time to time at the time of execution changed a sequence of normal commands.

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.After the processor is reset and the address and increment values are stored, the processor can valid program for processing digital signals to lead. Most of the processing of signals ver used commands are normal arithmetic commands.

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.The contents of each of the RX, RY, RD, PC, RI, RJ and RK registers can by an auxiliary command to any special value be put. For example, a first command is for Loading the address register RY that a certain Pro processor register is to load.

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.In this first command, a control field c contains the he  required information. This control field c is in a Command register IR-C is stored during the instruction fetch cycle 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.A fixed data word associated with the first instruction, which is input to the address arithmetic section 124 during the processor cycle in which this instruction is decoded, indicates which address register to load, and determines the increment value to be loaded. The control field and the value field are transferred from the memory via the common data and control bus 101 to the control field register XSR, 185 , and to the value field register XSL, 186 .

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.During execution of the first instruction, the control field in the register XSR is decoded in a decoder 157 to select the correct address register. From the register XSL, the value to be input to the address register RY is applied to the registers 141 and 142 through a selector circuit 158 and a bus 160 during the execution of the first instruction.

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.A second instruction to load the increment register RI indicates that a processor register is to be loaded. As in the example just described for loading the address register RY, a fixed data word correspondingly assigned to the second instruction provides a control field identifying the register to be loaded and a value field for the value to be loaded. The fields of the fixed data word are supplied from the register XSR via the decoder 157 and the bus 137 to determine the increment register selected in the register group 142 , and supplied from the register XSL via the selector 158 and the bus 160 to be in during the Execution cycle of the second command in the selected Increment mentregister to be loaded value.

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.When processing both normal instructions and auxiliary instructions, control fields s and t of the instruction are stored in the instruction register IR-S, T when the instruction is fetched. The fields are decoded in a decoder 152 during the next processor cycle, with the decoded information buffered in an AAU control circuit 154 . The decoded information passes to the register groups 141 and 142 during the instruction execution cycle or the second processor cycle after fetching over a bus 135 . The information on the bus 135 selects both an address register and an increment register or a fixed increment. The address is given to the address bus latch 145 and the input of an adder 147 . The increment value simultaneously arrives at the other input of adder 147 , which increments the address and stores it for a machine state in adder buffer 150 . During the following machine state, the incremented address is given via a bus 136 to the group 141 of address registers.

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.At the same time, in the processing of a normal instruction, part of the information in the fields s and t is supplied to a delay circuit 155 with a delay of only a single machine state. This delayed information represents selection information which specifies in which of the address registers 141 to be written after the just-described addressing operation. In the following machine state, the delayed information is decoded in a decoder 154 and given to the address registers 141 via a bus 137 . At this time, the incremented address in the adder buffer 150 is written in the selected address register, thereby modifying the address after the addressing operation.

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.During the processing of a register group auxiliary command, the above-described operation for returning a subsequently modified address to an address register may be anticipated by the register setting operation. The pre-removal is performed by the decoder 157 in response to information supplied thereto from the logic circuit 122 via a path 138 , an AAU control circuit 154, and a delay circuit 155 .

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.When the register group instruction anticipates the writing of an address register, the information for selecting the address register is given from the register XSR through the decoder 157 and the bus 137 to the address register group 141 . At the same time, information for selecting information on the bus 160 is supplied from the register XSR instead of information on the bus 137 via the decoder 157 and the bus 137 .

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.The address arithmetic section 124 transfers addresses via the address bus latch 145 for access to storage locations in the memories 100 and 105 , generates new addresses in the adder 147, and sets the address registers RX, RY, RD, and PC.

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.The diagram in Fig. 4 shows that addresses are given to the memory in a sequence of four addresses transmitted during each processor cycle. One of the addresses is transmitted during each of four machine states during each processor cycle. The first address transmitted during the first machine state is the address stored in the program counter register. As indicated in Fig. 4, this address is automatically transmitted during the first machine state of each processor cycle. The second address transmitted during the second machine state is the address stored in register RD or in register RX. The address transmitted during the third machine state is the address stored in the register RX or in the program counter register PC. The fourth address transmitted during the fourth machine state is the address stored in register RY.

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.Each address passed by the address arithmetic section is latched in the address bus latch 145 during said machine statuses of the processor cycle. In addition, during these machine states, the address in the adder 147 of the address arithmetic section is incremented by an increment value read from one of the increment registers RI, RJ and RK or, in the case of the address from the register PC, is incremented by +1. These increment operations are performed during the same machine state in which the addresses are cached.

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.Identification of the selected address and increment registers is accomplished by supplying the respective control fields to the instruction register IR-S, T prior to the addressing operation so that the appropriate code is applied to access circuits for both the address and increment registers during the machine state which the addresses are to be transferred. The address and increment value are read out and summed by the adder 147 . The resulting incremented address is stored in adder buffer 150 while the address is being transferred from address bus buffer 155 .

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.A code indicating which address register has been selected is given to the decoder register circuit 157 via the delay circuit 155 . The delay and the decoding are designed so that the incremented address stored in the adder intermediate memory 150 can be written into the address register from which the transmitted address has been fetched. Accordingly, the transmitted address is subsequently changed or incremented during the processor cycle in which it has been transferred to the memories 101 and 105 .

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.Referring to FIG. 2, the arithmetic section 110 is designed for pipeline operations. Coefficient words x and variable data words y represent operands which arrive from the memories via the common data and control bus 101 and enter the coefficient word register 102 and the variable data word register 106 . The rounded output words w also represent operands for certain operations and are stored in register 118 . During each processor cycle of a normal instruction, a new operand is included in each of these registers.

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.The arithmetic section 110 includes three subsections that are independently controllable in response to separate control fields I, m, and n. During the timber cycle of an instruction, the fields l, m and n are stored in the instruction register RL, M, N. During the next processor cycle, these fields are decoded in decode circuit 113 , and the result is stored in F register 188 . During the subsequent processor cycle, this information is provided to an AU control circuit 114 to provide control signals to the various subsections of the arithmetic section. This latter processor cycle is the execution cycle of the instruction. The control signals provide information regarding the selection of processor options available in each of the subsections. The multi-plier subsection 112 typically generates a product of two operands during each processor cycle. In a typical multiplication, one operand is the coefficient word x and the second operand is either the variable data word y or the rounded output word 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.The coefficient word x is a 16-bit word. The 16 bits are taken from the high-order bit lines of the common data and control bus in the register 102 . A dial 162 samples the 16 bits of the coefficient word in the direction from the least significant bit to the most significant bit, 4 bits at a time during each of the 4 machine states in each processor cycle. Another dial 163 simultaneously selects either a variable data word y of 20 bits or a rounded output word w of 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.Multiplication is performed based on the known Booth algorithm. Accordingly, a Booth logic circuit 165 will respond during the consecutive 4-bit (nibble) groups and will generate control signals to generate partial products.

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.The output of the Booth logic circuit 165 during each mode state is stored in a register 166 between. The signal is applied to a circuit 168 which generates the partial products by data selection.

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.The partial products are accumulated by addition to previous sums and carries. An adder 170 sums the partial products into information regarding the previous sum and carry, after which a resulting 36-bit intermediate operand or product word p is stored in a product register P, 190 . Associated registers S, 190 , and C, 189 store the sum and carry information generated during each processor cycle.

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.Since the arithmetic section is set for a pipeline operation, the product register P, 191 receives a new intermediate operand or product word p during each process cycle of normal instructions. This product word p is applied to the input of the accumulator subsection 115 via a bus 172 as an intermediate operand.

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.In the accumulator subsection, the product word p is added to a resulting 40-bit output word a that can be shifted by a circuit 174 prior to application to an input of the adder 175 . The adding circuit 175 generates sum and transmission information which is stored in the register 177 . This happens during each processor cycle. The carries are resolved by an add-look-ahead logic in adder 178 . The output of the adder 178 goes to an input of a logic circuit 180 together with the resulting output word a to produce the next value for the re-starting output word a with 40 bits to be stored in the register A. Such a resulting output word is generated during each processor cycle of a normal loading and stored in the register A, 192 .

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.A portion of the resulting output word a is provided in sections with 10 bits as an input to the rounding and overflow subsection 116 . These sections are transferred under clock in three consecutive machine states each processor cycle via a rounding circuit 182 and an overflow logic circuit 184 to the run-out output register W 20 bits. In the fourth machine state, the value in register W can be corrected for overflow if the value in register A is too large to be represented in register W, 118 , with 20 bits. Thereafter, the rounded output word can be transmitted via the common data and control bus to a destination, such as a memory location in the random access memory 105 , where it is stored.

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.The three subsections (multiplier, accumulator and Rounding circuit) of the arithmetic section perform their Main operations each in one processor cycle. from Transitions of the subsections are in each processor stored in registers so that the next subab has a stable input signal, with which he has the next processor cycle begins.

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.The control of the arithmetic section 110 and the address arithmetic section 124 is effected by a pipeline of instructions supplied from the memory 100 via the common data and control bus 101 . As noted above with respect to FIG. 4, a single instruction is read from memory during each processor cycle. Such a command contains several command fields or control messages l, m, n, s and t. The fields l, m and n are given via the common bus 101 to the register IR-L, M, N to control the subsections of the arithmetic section 110 . Fields s and t are transmitted via common bus 101 to register IR-S, T to control the selection and increment of addresses in registers RX, RY, RD and PC.

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.A better understanding of the layout and operation in pipeline control and processing arises See the following description of a specific example.

Normale OperationNormal 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:A complete, normal command in assembler language ent holds all information necessary to carry out a desired arithmetic operation are required. Commands in assembler Speech for the digital signal processor are so out specifies that they control the access to memory and the control for an operation of arithmetic below section and address arithmetic subsection again give. The arithmetic subsection leads continuously Multiplication and addition operations. The normal ones  Operations of the arithmetic section are described by the fol characterized by general expressions:

x · f(y) + fa (a) → a {→w}x · f (y) + f a (a) → a {→ w}

x · f(w) + fa (a) → a {→w},x · f (w) + f a (a) → a {→ w},

wobeiin which

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.
x is a coefficient word with a length of 16 bits, which is usually fetched from the read-only memory. The coefficient word x could also be fetched from the random access memory or from an input / output circuit 200 and normally has a value for all arithmetic operations;
y is a data word with a length of 20 bits, which is normally fetched from the random access memory. Such a data word could also be fetched from the input / output circuit 200 ;
a indicates the contents of the accumulator register A, 192 , having a length of 40 bits. In accumulator register A, 192 , the least significant 36 bits are used to accommodate the product of a multiplication of 16 bits by 20 bits. The four most significant bits provide overflow protection for the accumulator operation;
w is a rounded or shortened output signal of Akkumula sector with a length of 20 bits. The least significant bit of the rounded output word w corresponds to the 14th digit from the least significant bit of the contents a of the accumulator. This correspondence of bits is consistent with the assumption that the data word y and the rounded output word w are integers and that the coefficient word x is usually within the limits -2 x <2;
f describes a function of either the data word y or the ended output word w. Such a function may be the actual value, the sign or the absolute value of one of the variables y or w;
f a generally describes a function of the contents a of the Akkumula sector, for example, a, -a, 0, 2a, etc.

Die Variablen x, y, w und p befinden sich in Registern x (102), y (106), w (118) bzw. p (191) des Arithmetikab­ schnitts.The variables x, y, w and p are in registers x ( 102 ), y ( 106 ), w ( 118 ) and p ( 191 ) of the arithmetic section.

Die oben angegebenen allgemeinen Ausdrücke beinhalten, daß der Prozessor drei Operationen ausführt.The general terms given above include that the processor executes three operations.

  • 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.1) One of the products p = x · f (y) or p = x · f (w) becomes formed and stored in the product register P, the is at the output of a multiplier.
  • 2) Eine Akkumulierung eines resultierenden Wortes a = p + fa(a) wird im Akkumulator durchgeführt.2) Accumulation of a resultant word a = p + f a (a) is performed in the accumulator.
  • 3) Falls erforderlich, wird dann das resultierende Wort a des Akkumulators gerundet, und das gerundete Ausgangswort w wird in das Ausgangsregister W einge­ schrieben.3) If necessary, then the resulting Word a of the accumulator rounded, and the rounded one Output word w is input to the output register W. wrote.

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.Each of these three operations is done during a processor cycle of the digital signal processor. In typi The mode has the coefficient during the operations word x is a value, and multiplication is the pro product p. Also typically during each Cycle all three types of operations simultaneously different subsections of the arithmetic section leads. For certain commands, one or more may occur several of the three operations did not occur. The by an Un terabschnitt executed during a processor cycle Opera tion is a partial evaluation of a general expression, which is different from the expressions in the same time the other subsections.

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.Commands in assembly language are used in commands in machines converted into memory stored in memory then actually control the digital signal processor. There the operations depend on each other and all operations at the same time in the processor, it is always important knowing what is stored in different registers and which operations to do with it.

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. To avoid confusion about what values the product word p and the contents a of the accumulator involved in a processor operation becomes the following Order of operations recommended when these values re presenting expressions written in assembler language become.  

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.When reading from left to right, the correct values of the product word p and of the contents a of the accumulator can be better recognized. The correct values are the results of the previous operation that determines these values. Accordingly, the value for the contents a of the accumulator to be converted by rounding into the rounded output word w or to be used in any function f a (a) is the content of the accumulator at the end of the most recent accumulation. Accordingly, the product word p to be used in an instantaneous accumulation has a value determined at the most recent multiplication.

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.For the reasons of the above explanation regarding the order of processor operations it is important that the Informa. contained in the instruction in assembler language tion to the processor in the correct order becomes. The following order is for the processor useful.

  • 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.1) There is a choice for the destination. That to Destination word to be given either as the ge rounded output word w or the data word y selected. The selected word can be in the random access memory or on the input / output circuit are given. The spe The destination of the selected word is indicated  give.
  • 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.2) As required for the command, choose whether the resulting word a in the rounded output word w to convict or not.
  • 3) Es wird eine Akkumulier-Operation aus einer Gruppe von Operationen mit dem allgemeinen Ausdruck a = p + fa(a) ausgewählt.3) An accumulation operation is selected from a group of operations having the general expression a = p + f a (a).
  • 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.4) Specify a multiply operation that uses the Product p = x · f (y) generated by the source XSRC for the coefficient word x, the type of the function f and the Selection of the data word y together with the source YSRC for the data word y is specified. Alternatively, a Multiplying operation determines the product p = x · f (w) generated by the source XSRC of the coefficient Word x, the type of function f and the selection of the rounded output word w instead of the data word y is specified.

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. The following exceptions apply to the above link to-right rule. If the rounded output word w for the Multiplication is the value of the rounded off input word w that value, which by the last rounding of the resulting word a at a previous one Command has been determined. If the data word y to scream ben and a source for the data word y is specified, this is the first step in the execution of the command the data from the specified source into the data register Y. After that, any writing of this new value occur for the data word y.  

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.The following Table I summarizes the normal commands in assembler Language together, which a programmer at the Erstel using a program in assembly language. It will the syntax of a language called C as an assembler language used in an essay "The C Pro Gramming Language "by B.W. Kernighan et al., Prentice-Hall, Inc., 1978. Every complete order is made by choice of four pieces of information, one from each column in Table I, starting with the leftmost ste left column and continue to the right. In both left columns, the word NOTHING is set up as a valid choice leads. If the word NOTHING is part of a complete Command is selected, so you leave the appropriate place empty in the command. Every complete command in assembler language is completed by a semicolon.

Tabelle I Table I

Normale Befehle in Assembler-Sprache Normal commands in assembler language

In Tabelle I bedeutet das Symbol DEST eine Bestimmungsangabe und ist im Befehl in Assembler-Sprache durch eine der fol­ genden Angaben zu übersetzen:In Table I, the symbol DEST means a destination specification and is in command in assembler language by one of the fol translate the following information:

DESTDEST

*rd++i
*rd++j
*rd++k
obuf
* 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.where, for example, * rd ++ i means that rd, namely the Address of the memory location in the random access memory on the the content of the register RD indicates, subsequently by the Content i of the register RI is incremented. Interprätatio of the various determinations listed above Details are given below in more detail.

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:In Table I, the symbol XSRC indicates an indication of the source of the data word x and the symbol YSRC means an indication of the source of the data word y. Each of these two symbols in Table I is contained in a command in assembler Language by one of the indications in the following two Replace columns:

XSRCXSRC YSRCYSRC x(oldx)x (oldx) *ry++i* Ry ++ i VALUE(immediate x)VALUE (immediate x) *ry++j* Ry ++ j *rx++i* Rx ++ i *ry++k* Ry k ++ *rr++j* Rr ++ j ibufyibufy *rx++k @* Rx k ++ @ *rx @* rx @ *rx-- @* rx-- @ ibufy @ibufy @ *(rom+rx++i) @* (ROM rx + ++ i) @ *(rom+rx++j) @* (ROM rx + ++ j) @ *(rom+rx++k) @* (ROM rx + ++ k) @ & LABEL& 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.In the above columns XSRC, the symbol represents VALUE a number representing as an argument (in a mathematical sense) a command occurs, d. H. the 16-bit word, the operation code in read-only memory immediately follows. This argument is made by the program counter register PC addressed address addressed. For other batches from the memory, the coefficient word x by the content rx of the register RX addressed. The indication * (rom + rx ...) indicates that the content rx of register RX to read-only memory (rom) instead of read-write memory shows. The symbol indicates that the from the Memory location x read value is an address that is one Label is assigned in the program. Other expressions in the above two columns for the sources of the coefficient word x and the data word y become more detailed below explained.

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.When building complete commands in assembler language from the information given in Table I is a certain Caution is appropriate. If the expression DEST = YSRC in a command is desired, the expression YSRC from the am contains the far right column, then the expression DEST = y instead of the expression DEST = YSRC become. If the rounded output word w in the furthest right column can be used, so can the expression DEST = YSRC is not from the leftmost standing column. In addition, NOTHING should be selected from the leftmost column, if the command in assembler language is a normal command,  where the source for the coefficient word x is in Read-write memory is located.

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:When preparing a program, a programmer writes first a series of general mathematical expressions or operations to be performed. there For example, the following formula may result:

x · f(w) + fa(a) → a{→ w}.x · f (w) + f a (a) → a {→ w}.

Ein solcher allgemeiner mathematischer Ausdruck wird vom Programmierer in eine Angabe in Assembler-Sprache der folgenden Form übersetzt:Such a general mathematical expression is provided by the programmer in an assembly language statement of the following Translated form:

Darin bedeuten:In this mean:

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.
l a command field that controls the formation of a product;
m the command field for performing an accumulation;
n, a command field that controls a transfer operation from register A to register W with the required rounding;
s is a command field indicating a write destination source. In this example, the destination source is a memory location indicated by the address stored in register RD. The address is subsequently incremented and the result stored in register RD;
t is a command field for fetching information from an address stored in an address register of the arithmetic section as well as for subsequently incrementing this address and restoring it to the same register.

Der nächste, vom Programmierer ausgeführte Schritt besteht darin, die Angabe in Assembler-Sprache wie folgt zeitlich auseinanderzuziehen:The next step taken by the programmer is therein, the specification in assembly language as follows in time pull apart:

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.The resulting, temporally separated statement in Assembler language on the diagonal timeline in the farthest left column will appear together with temporally separated information in assembler Language represented, the other general mathematical operations represent. If these are temporally separated Information in assembler language can be compiled form the resulting pieces of different information, the in the same line or during the same interval, For example, of the interval i, occur a command in Assembly language. Put in the command in assembler language the different pieces of information in the same interval separate fields of this command in assembler language Each of the fields controls a different subsection the processor to perform a step in the Execution of the evaluation, which by a part of one of the general mathematical expressions is described.

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:An assembler program that runs on a general purpose computer  processes each command in assembler language by using the Source fields in the program compared to two processor cycles the rest of the fields in the same command in assembler language be pushed forward in time. This shift of Source fields are done in assembler language for each command in program. The resulting timeline for the above Assembler specification is based on the temporal distortion by the programmer and the assembler as follows:

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. Referring to Figures 5 and 6, there is shown a timeline diagram indicating how data is processed in the digital signal processor. In general, the diagram represents the flow of data through various subsections of the processor in the execution of a general mathematical expression along with parts of other mathematical expressions.

Bevor die angegebenen Operationen beschrieben werden, sollen zunächst Symbole definiert werden, die im Zeitliniendiagramm nach Fig. 5 und 6 benutzt werden.Before describing the specified operations, symbols are first to be defined which are used in the time-line diagram of FIGS. 5 and 6.

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.
I i is a machine language instruction fetched from read-only memory during a processor cycle or interval i and decoded in the processor during a processor cycle or interval i + 1. In general, instruction I i affects the operation of portions of the processor during a processor cycle or interval i + 2. As stated above, each instruction contains the fields or control messages l, m, n, s, t.
I i (t) represents the field t in the machine language instruction I i which controls the fetching of the operands x i + 3 and y i + 3 . These fetches take place during the interval i + 3.
I i (l) represents the field n in the machine language instruction I i , which controls the calculation of a product or intermediate operand p i + 2 during the interval i + 2. The product p i + 2 is a function of the operands x i + 1 and y i + 1 .
I i (m) represents the field m in the machine language instruction I i which controls the accumulation of the output word or desired resultant word a i + 2 during the interval i + 2. The resulting word a i + 2 is a function of the last preceding resultant word a i + 1 and an earlier computed product p i + 1 .
I i (n) is a field n in the machine language command that controls the transmission of a rounded output word w i + 2 during the interval i + 2. The rounded output word w i + 2 is a function of the last rounded output word w i + 1 and the resultant word a i + 1 of the accumulator.
I i (s) is a field in the machine language command which controls the storage of the rounded output word w i + 1 and the modification of the register stored addresses u i + 2 during the interval i + 2. The modified addresses are a function of the earlier address u i + 1 and field I i (s). The updated memory state M i + 2 is a function of the field I i (s), the previous memory state M i + 1 , the register stored addresses u i + 1 and the rounded output word w i + 1 .
I i (s, t) is a combination of fields s and t in the machine language instruction. The fields control the modification of the register stored addresses u i + 2 during the interval i + 2. The modified addresses u i + 2 are also a function of the address u i + 1 .
x i and y i are operands fetched from memory during the interval i under control of the field t of the instruction I i-3 fetched during storage of the interval i-3. The instruction I i-3 is decoded during the interval i-2 and controls the processing during the interval i-1 in which the addresses for the operands x i and y i are generated. As mentioned above, access to these operands occurs during the interval i. They are processed by the multiplier during the interval i + 1 under the control of the field in the command I l i-1, which is fetched during the interval i I-1. This generates the intermediate operand or the product p i + 1 .
p i + 1 represents the product generated by the multiplier during the interval i + 1. This product is an intermediate operand used as input to the accumulator during its operation in the interval i + 2. The product p i + 1 is formed in the register P under control of the field I i-1 (I). The multiplier and multiplier are the operands x i and y i .
a i + 2 represents the contents of the accumulator during the interval i + 2. This is the desired resulting word a i + 2 for the evaluated expression. The word a i + 2 represents an input signal for the rounding and output subsection in the interval i + 3. The rounding operation takes place under the control of the field I i + 1 (n).
w i + 3 represents the rounded output word w, which is available in the register W and which can be written into the memory during the interval i + 4 under the control of the field I i + 2 (s).

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.In the diagram of FIGS. 5 and 6, the total processing activities of the various processor subsections of the digital signal processor are shown along with time in processor cycles. Each column in the diagram represents a different processor cycle or a different time interval of the processor. The information in each column is closely related to a particular machine language command. Each line represents activities of another processor subsection performing its assigned functions during the operation of the digital signal processor.

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.Because each row of the chart represents a different activity, these activities are defined. The first line below the processor cycle headings are the memory activities on, d. H. reading from (fetching) and writing in Storage. The second line indicates the times to which Commands are decoded in the digital signal processor. The third line shows the calculation of the product p by the Multiplier subsection of the processor. The fourth line gives the accumulation of the resulting word a by the Accumulator subsection of the processor. The fifth Row represents activities of the rounding and overflow subsection the processor representing the rounded output word w generated. The sixth line indicates activities with the modification of addresses necessary for fetching Data used for the arithmetic operations.

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.The processing of the general arithmetic expression given above can be traced through the various sections and subsections of the digital signal processor with reference to FIGS. 5 and 6.

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.A first step in processing a general arithmetic expression is the fetching of operands for a Multiplication. As mentioned above, information that  refer to this fetching operation through the assembler Program entered in an interval earlier than the information for the control of the multiplication operation. As a result of this assembler program function contains each machine language instruction is a control field for a fetch operation, the information from memory for processing which is triggered by a subsequent machine language command is to control.

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. As an example of the processing of a command, consider the processing of a general expression in which information regarding the fetch operations for its operands is contained in a command fetched during the interval i-3 in FIG . This instruction I i-3 is framed in a box and indexed identifying the instruction as a instruction fetched during interval i-3. Each command shown in the functional diagram is similarly designated according to the interval in which the command is fetched from memory. In addition, each command shown in Figs. 5 and 6 includes a plurality of control information fields. Each of these fields l, m, n, s, and t is shown in parentheses associated with the instructions in the first row indicating the fetch and write operations. A separate field or fields of a command are shown in other lines of the diagram, for example I i (l) in the line for calculating products and I i (s, t) in the line for modifying addresses.

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.During the interval i-2, the instruction I i-3 just fetched is decoded by the processor, as shown in the framed box in the second line representing the decoding of instructions.

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.A fetch operation for the operands x and y, indicated by the instruction I i-3 , begins during the interval i-1. The fetch operation begins using an address specified in the command field I i-3 (t). When the address is used, it is modified and restored to the address arithmetic section as a function of the command field I i-3 (s, t) and the previous state u i-2 of the registers in the address arithmetic section. This modification of the addresses is shown in the framed box under the interval i-1. The fetching of these operands x and y is completed during the interval i when the particular operands x i and y i identified by the instruction i i-3 are read from the memory and transferred to the registers X, 102 via the common data and control bus , and Y, 106 , are transmitted. These fetching operations are shown in the framed box under the interval i. The operand x i is typically read from the read-only memory and the operand y i is typically read from the random access memory.

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. The address pointers or those stored in the registers RX and RY Addresses in the previous interval i-1 have been updated for reading the operands used out of memory during the interval i.  

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.The first arithmetic operation to be performed on the operands x i and y i takes place during the interval i + 1. At this time, the multiplier sub-section calculates an intermediate operand or a product p i + 1 depending on the instruction field I i-1 (1), as shown in the framed box under the interval i + 1. Such a product p i + 1 is shown as a function of the operands x i and y i and of the command field I i-1 (l).

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.Command I i-1 , which includes field I i-1 (l), is fetched from memory during interval i-1, decoded during interval i, and controls portions of the processor during i + 1 interval.

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).The next step in the evaluation of the general expression is the processing in the accumulator during the interval i + 2. This is illustrated in Fig. 6 in the fourth line, which indicates the accumulation of the resultant word a in a framed box in the column labeled i + 2 interval. As indicated, the resulting word a i + 2 is a function of the previous resulting word a i + 1 stored in the accumulator, the intermediate operand or product p i + 1 just described, and the command field I i (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.If indicated by the programmer, this result after accumulation is rounded in the interval i + 2 and stored in the output register W. This rounding operation is shown under the interval i + 3 in a framed box in the fifth row representing the rounding of the output word. The special rounding operation takes place during the interval i + 3, the rounded output word w i + 3 being a function of the last previous rounded output word w i + 2 of the output register W, 118 , of the just-described resultant word a i + 2 of the Accumulator and the command field I i + 1 (n) is shown.

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.A final step in the processing of the general expression is the writing of the rounded output word w i + 3 into the memory during the interval i + 4. This is shown in the framed box in the first row of the chart under the interval i + 4. The writing of a new memory state M i + 4 is a function of the memory state M i + 3 for the interval i + 3, the last preceding address register state u i + 3 , the last, just described, rounded output word w i + 3 and the command field I i + 2 (s) fetched during the interval i + 2 and decoded during the interval i + 2.

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.The rounded output word w i + 3 in the output rounding register at the end of the interval i + 3 is transmitted via the common data and control bus during the interval i + 4 either to the random access memory or to a buffer in the input / output circuit.

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.At the same time as the memory write operation takes place during the interval i + 4, the registers of the address arithmetic section are updated on the basis of information in the information fetched during the interval i + 2. The information used is contained in the fields I i + 2 (s, t) of the instruction I i + 2 , fetched during the interval i + 2 and decoded during the interval i + 3.

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.It can be seen that during the interval i + 2, the instruction I i fetched during the interval i controls the multiplier subsection, the accumulator subsection and the rounding and overflow subsection of the arithmetic section. This is because the instruction I i fetched in the interval i, decoded in the interval i + 1 and used for the control during the interval i + 2. As with previous pipeline control arrangements, no parts remain for the control of subsections of the arithmetic section during subsequent intervals. Most of the column representing the interval i + 2 is emphasized by solid lines, so that the reader can easily find different fields of the instruction I i for controlling subsections of the arithmetic section during the interval i + 2.

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.Operands for the multiply operation have been fetched during the interval i + 1 following the interval i. The resulting product p i + 2 is formed during the next interval i + 2.

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.A resulting word a i + 2 formed during the same interval i + 2 is a function of an earlier resulting word a i + 1 and a prior product p i + 1 . This resulting word a i + 2 has been evaluated for a different general expression than the general term that has been evaluated by forming the product p i + 2 . This concept may be better understood by taking care that the framed boxes form a diagonal from the top of the column of the cycle i down to the fifth row in the column for the cycle i + 3, and that this diagonal refers to the Evaluation of a particular general expression relates. A similar diagonal, shifted to the right by one interval in each column, refers to the evaluation of another general expression.

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.Typically, in a signal processing program, instructions are sequentially processed to a point where the program counter PC is set to an address in the program memory which is the storage location for the instruction at the beginning of the sequence. Accordingly, the program continuously loops, executing the same sequence of instructions repeatedly. Furthermore, fixed data words are stored in memory locations, with addresses being interleaved between memory locations for instructions in the program sequence. In this way, as shown in FIG. 4, the address in program counter register PC is used to address a fixed data word during state 2 of processor cycle i + 1. The program counter is then incremented with the fixed increment +1 or used to address a command I i + 2 in state 0 of the processor cycle i + 2. The program counter is then incremented by the fixed increment +1 and used to address the next fixed data word in state 2 of the processor cycle i + 2. Continuing the program counter is incremented by +1 and addressed in state 0 of the processor cycle i + 3 the instruction I i + 3 , etc., until the end of the instruction sequence. Then, the program counter is set by an auxiliary command to the address of the first command in the sequence.

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.Up to this point of the description are just normal routine operations of the digital signal processor has been explained. Other operations, such as conditional operations, can be executed by the pipeline processor.

Bedingte OperationConditional 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.In many cases, the algorithm used by the condition check and execution of alternative operations performed by Depending on the result of the test, it is also realized a sequence of one or more commands are realized which are either executed or not executed. If this episode is short, the total savings can be Processing time be large compared to using the conditional program jump technique of the prior art to achieve the same result. It was found, that in the digital signal processing occurring conditional Operations often using a sequence of one or multiple commands can be realized, either executed or not executed. Accordingly, became the digital signal processor is designed to respond to this Effectively process conditional operations. The used  Concept, however, has wider applications to digital processors in general.

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:For example, consider the problem, the maximum value a sequence of samples in memory. The value of each sample in the sequence can be compared with the value using a word at another location to be compared to the usual, conditional program jumps, where alternative, sequential processing paths required are:

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.such that the indication x max = x is bypassed by a conditional change of the program counter contents. In the present digital signal processor, the command x max = x is processed in sequence (ie, fetched and decoded) independently of the test, whereby the actual transmission of data to x max is disabled if the test is negative.

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.A conditional instruction causes the processor to perform a condition check operation perform a non-arithmetic Auxiliary operation is. As with normal arithmetic operations, which have been described above is a correct one Order for writing a command in assembler Language for conditional operations exists. Below is  reproduced the correct order.

  • (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.(1) A place of destination is chosen. That to the office of destination word to be given is either rounded as the word Output word w or the data word y selected. The selected word may be in the random access memory or in the input / output circuit are written. The special destination of the selected word is specified.
  • (2) Es wird die zu prüfende Bedingung und die Prozessoroperation angegeben, die auszuführen ist, wenn die Prüfung positiv verläuft.(2) It becomes the condition to be checked and the processor operation specified, which is to execute when the exam is positive.

Die folgende Tabelle faßt die bedingten Befehlt zusammen, die gebildet werden, indem eine Angabe aus jeder der beiden Spalten gewählt wird.The following table summarizes the conditional commands that be formed by an indication from each of the two columns is selected.

Tabelle IITable II Bedingte BefehleConditional commands NOTHINGNOTHING wenn (BEDINGUNG) doset ( )if (CONDITION) doset () DEST = YSRCDEST = YSRC wenn (BEDINGUNG) doau ( )if (CONDITION) doau () DEST = wDEST = w wenn (BEDINGUNG) dowt ( )if (CONDITION) 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:The meaning for DEST and YSRC is the same as in table I. The term CONDITION should be replaced by one of the following Information to be replaced:

BEDINGUNGCONDITION Beschreibungdescription a==0a == 0 Akkumulatoreinheit a ist gleich NullAccumulator unit a is equal to zero a<0a <0 Akkumulatoreinheit a ist größer als NullAccumulator unit a is greater than zero a<0a <0 Akkumulatoreinheit a ist kleiner als NullAccumulator unit a is less than zero

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:Each conditional instruction takes the form of an operation code word with 16 bits, followed by a 16-bit argument, assembled. The format for a conditional command is:

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.where c, s, and t control fields as in normal arithmetic Commands are. The s and t fields are the same Meaning. The control field c provides control information for the conditional operation. This information includes which ones Operation, together with the person to be tested Condition.

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.There are three options for operations. An address or increment register of the processor is set, when the specified condition occurs. The next Operation of the arithmetic section is performed when the condition occurs. The next write operation will be performed when the condition occurs. For every conditional Command does not occur if the specified operation the condition is wrong, d. H. does not occur.

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.Operations subject to a conditional review are those operations specified in the command, the Next is the conditional instruction in the pipeline.

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.Each conditional instruction processed by the processor is fetched from read only memory 100 and transferred over the data bus to the command registers. The control fields s and t are stored in the command register IR-S, T described above. The control field c is stored in the command register IR-C.

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.It will now be described with reference to Fig. 8, the operation of the arrangement of FIG. 1 and 2 in the implementation of a conditional operation. Most conditional operations are much like a normal routine operation. Therefore, those parts of the operation that differ from a routine operation should be emphasized. Incidentally, for the sake of completeness, reference is made to the above explanation.

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.Shown in Fig. 8 is a conditional instruction I i (c, s, t) which is fetched during processor cycle i and decoded in processor cycle i + 1. In this example, the conditional instruction I i (c, s, t) is in the pipeline to affect a normal arithmetic instruction I i + 1 (l, m, n, s, t) which during the processor cycle i + 1, decoded during processor cycle i + 2, and conditionally executed during processor cycle i + 3.

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.The fields s and t of the instruction I i (c, s, t) control data fetch operations and a write operation during the interval i + 2. The state u i + 2 of the registers in the address arithmetic section is updated during the interval i + 2 as a function of the control fields I i (s, t) and the previous state u i + 1 of these registers. A memory write operation M i + 2 occurring during the cycle i + 2 is similar to the operation described above with respect to a normal arithmetic instruction. Since the conditional instruction is an auxiliary instruction, the arithmetic section 110 times out during the interval i + 2, which is the usual execution cycle for this instruction. Accordingly, the multiply register P, the accumulator register A and the rounding output register W maintain their respective data from the last cycle. The intermediate operand p i + 2 is equal to p i + 1 , the resulting word a i + 2 is equal to the resulting word a i + 1 and the rounded output word w i + 2 is equal to w i + 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.The control field I i (c), which has been stored in the command register IR-C during the interval i, contains a part indicating which condition is to be checked and a second part indicating which operation depends on the result Conditional test is to execute. During the interval i + 1, the two parts of the control field I i (c) are decoded in the circuits 211, 212 and stored in the registers 213, 214 .

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. During the interval i + 2, the first decoded part of the control field I i (c) stored in the register 213 is applied to a comparator 215 which determines which condition is checked. At the same time, the state of conditions or flags V i + 2 is given by the controller 114 of the arithmetic section to the comparator 215 via a path 225 . Accordingly, the condition of the conditions of the arithmetic section is checked. The comparator 215 generates a "condition-correct" or a "condition-false" signal on line 221 , via which the signal is passed to the logic circuit 122 as a conditional control.

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.During the interval i + 2, the logic circuit 122 under control of the condition signal on the line 221 generates further control signals which are distributed to the F-decode circuit 113 , the controller 154 of the address arithmetic section, the random access memory 105 and the input / output circuit 200 become. The result of the conditional operation is latched at the output of the logic circuit 122 to control the various sections of the processor during the interval i + 3.

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.The normal arithmetic instruction I i + 1 (1, m, n, s, t) to be influenced by the conditional instruction I i (c, s, t) is fetched during the interval i + 1 and during the cycle i + 2 decoded. Without the previous conditional instruction, this instruction would control the processor during the i + 3 interval. Data fetching for the interval i + 3 is as usual.

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.Subsequently, during the interval i + 3, the operations performed depend on the usual operands together with the states of the control lines from the logic circuit 122 , which are due to the result of the comparison made during the interval i + 2.

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.If the conditional instruction I i (c, s, t) is a conditional execution instruction for the arithmetic section, only operations of the arithmetic unit are conditionally executed during the interval i + 3. The writing to the memory is not controlled at this time. If the conditional arithmetic section execution instruction condition is true, a new product p i + 3 , a new resultant word a i + 3, and a new rounded output word w i + 3 are generated. If the condition is false (does not occur), control of the arithmetic section is disabled and no new product, no new resultant word or rounded output word is formed. The registers P, A and W keep the values from the last interval. All other normal processor operations occur during the interval i + 3.

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.If the conditional instruction I i (c, s, t) is a conditional write instruction, only the memory and output write operations during interval i + 3 are affected. The operations of the arithmetic section are not locked. If the conditional write instruction condition is true, the memory write operation M i + 3 or the output write operation takes place. If the condition is false, the control of the write operation is disabled and the memory maintains its state M i + 2 from the last interval. The writing to the memory or the output is controlled by the control field I i , as explained above for normal commands. Regardless of whether the condition is true or false, all other processor operations occur normally during the interval i + 3. If the conditional instruction I i (c, s, t) is a conditional register setting instruction, only one register setting operation during the interval i + 3 is affected. Note that in this case, since the register setting command is an auxiliary command, no activities occur in the arithmetic section. The writing to the memory or the output can proceed without disturbance as indicated by the control field I i (s). If the condition is true, the register loaded by the register select field of the fixed data word associated with the register setting command is loaded with the value in the value field of that data word, as explained above. If the condition is false, the control of the register setting operation is disabled, and the register contents are not changed by the register setting command.

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.
A digital pipeline processor for executing a stream of instruction words with an arithmetic section ( 110 ) for processing data words by means of various processing subsections ( 112, 115, 116 ) each performing different operations and generating a resultant data word,
a data sink ( 105 ) for receiving the resulting data word, control circuits ( 131, 211, 212, 213, 214 ) for decoding a single conditional instruction word to test for a condition during a first subsequent processor cycle (i + 2), wherein the control circuits ( 131, 211, 212, 213, 214 ) decode another instruction word during the first subsequent processor cycle to cause processing operations during a second subsequent processor cycle (i + 3),
and a comparator ( 215 ) comparing (via 225, 114, 103 ) the conditions present in the processor during the first subsequent processor cycle and (above 200, 104 ) the condition contained in the conditional instruction word and generating a condition signal (at 221 ) thereby characterized in that the processor includes logic circuitry ( 122 ) that selectively turns off control of at least a portion of a portion of the processor during the second subsequent processor cycle in response to the condition signal.
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. A processor according to claim 1, characterized in that the conditional instruction is a conditional arithmetic section execution instruction, and in that the logic circuits ( 122 ) enable control of the arithmetic section during the second subsequent processor cycle when the condition signal is true and the control of the arithmetic section during the second subsequent processor cycle locks when the condition signal is false. 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.A processor according to claim 1, characterized in that the conditional instruction is a conditional write instruction, that the logic circuits ( 122 ) enable control for writing to the determining section during the second subsequent processor cycle when the condition signal is true and that the logic circuits ( 122 ) disable the control for writing to the determining section during the second subsequent processor cycle when the condition signal is false. 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.A processor according to claim 1, characterized in that the conditional instruction is a conditional register setting instruction, that the logic circuits ( 122 ) enable control for setting a register section during the second subsequent processor cycle when the condition signal is true, and that the logic circuits ( 122 ) disable the control for setting the register portion during the second subsequent processor cycle when the condition signal is false. 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.
The processor of claim 1 operating in response to a plurality of control fields in each operation code word of a sequence of operation codewords, each conditional operation codeword being represented as I i (c, s, t) and any unconditioned operation codeword as I i + 1 (l, m, ..., s, t) with i = 0, 1, 2,. , , I i (c) is a conditional control field and I i + 1 (m) is a second normal control field and each normal control field has information for determining a step in the processing of a selected expression of an operand y i + 2 , characterized
in that the control circuits ( 131, 211, 212, 213, 214 ) have a conditional opcode word I i (c, s, t) during a first interval (i + 1 = 2) and a normal opcode word I₂ (l, m,. s, t) during a second interval (i + 2 = 3) decode,
in that register circuits are provided for fetching and storing an operand Y₃ during the second interval,
and that at least one processing subsection of the arithmetic section ( 110 ), in response to some of the decoded fields I₂ (l, m, ..., s) during a third interval, processes the operand Y₃ during the third interval when the condition is met, and omits the processing of the operand Y₃ during the third section, if the condition is not met.
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.The processor of claim 1 operating in response to a plurality of control fields in each operation code word of a sequence of operation codewords, each conditional operation codeword including I i (c, s, t) and each auxiliary operation codeword having I i + 1 (c, s, t) with i = 0, 1, 2,. , , I i (c) is a conditional control field, I i (s, t) control fields and I i + 1 (c) is an auxiliary control field with information for setting a processor register, characterized in that the control circuits ( 131, 211, 212 , 213, 214 ) a conditional operation codeword I i (c, s, t) during a first interval (i + 1 = 2) and an auxiliary operation codeword I₂ (c, s, t) during a second interval (i + 2 = 3) decoding that register circuits for fetching and storing a register control field (XSR, XSL) are provided during the second interval, and that at least one processing subsection of the arithmetic section ( 110 ) in response to some of the decoded fields I₂ (c, s, t) during a third Intervals set the registers during the third interval, if the condition is met, and disable the control for setting the register during the third interval, if the condition is not met. 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.The processor of claim 1 operating in response to a plurality of control fields in each operation codeword of a sequence of operation codewords, each conditional opcode word including I i (c, s, t) and each normal opcode word having I i + 1 (l, m ,... s, t) with i = 0, 1, 2,. , , I i (c) is a conditional control field, I i (s, t) control fields and I i + k (s) is a normal control field with information indicating a destination for the processing result w₃, characterized in that the control circuits ( 211, 212, 213, 214 ) a conditional opcode word I i (c, s, t) during a first interval (i + 1 = 2) and a normal opcode word I₂ (l, m, ..., s) during a second interval (i + 2 = 3) decode that circuits are provided for transmitting and storing a result w₃ during a third interval, and that at least one data sink ( 105 ) in response to the decoded normal condition field I₂ during the third interval the result W₃ during the third interval, when the condition is satisfied, and the control for writing the result w₃ during the third interval blocks when the condition is not satisfied.
DE3104256A 1980-02-11 1981-02-07 DIGITAL PIPELINE PROCESSOR FOR CONDITIONAL OPERATIONS Granted DE3104256A1 (en)

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 (en) 1982-03-18
DE3104256C2 true DE3104256C2 (en) 1991-06-27

Family

ID=22388030

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3104256A Granted DE3104256A1 (en) 1980-02-11 1981-02-07 DIGITAL PIPELINE PROCESSOR FOR CONDITIONAL OPERATIONS

Country Status (10)

Country Link
JP (1) JPS56149648A (en)
BE (1) BE887451A (en)
CA (1) CA1155231A (en)
DE (1) DE3104256A1 (en)
ES (1) ES8201745A1 (en)
FR (1) FR2475763A1 (en)
GB (1) GB2069733B (en)
IT (1) IT1135394B (en)
NL (1) NL8100631A (en)
SE (1) SE456051B (en)

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 (en) 1998-02-09 2007-02-14 株式会社ルネサステクノロジ Data processing device
CN113485748B (en) * 2021-05-31 2022-08-12 上海卫星工程研究所 Satellite condition instruction system and execution method thereof

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 (en) * 1971-10-01 1973-02-01 Sanders Associates Inc PROGRAM CONTROL APPARATUS FOR DATA PROCESSING MACHINE

Also Published As

Publication number Publication date
JPS619648B2 (en) 1986-03-25
DE3104256A1 (en) 1982-03-18
ES499277A0 (en) 1982-01-16
IT8119634A0 (en) 1981-02-10
BE887451A (en) 1981-06-01
GB2069733A (en) 1981-08-26
IT1135394B (en) 1986-08-20
FR2475763A1 (en) 1981-08-14
GB2069733B (en) 1984-09-12
JPS56149648A (en) 1981-11-19
SE8100735L (en) 1981-08-12
NL8100631A (en) 1981-09-01
SE456051B (en) 1988-08-29
FR2475763B1 (en) 1984-05-04
CA1155231A (en) 1983-10-11
ES8201745A1 (en) 1982-01-16

Similar Documents

Publication Publication Date Title
DE2704842C2 (en) Data processing device operating in pipeline operation
DE69534113T2 (en) Compression of the command words of a computer
DE69738188T2 (en) METHOD AND APPARATUS FOR INCREASED ACCURACY IN THE BRANCHING FORECAST IN A SUPERSCALAR MICROPROCESSOR
DE2714805C2 (en)
DE2753062C2 (en) Device for the repeated execution of program loops
DE2715073C3 (en) Microprogrammed computer control device
DE2611892C2 (en) Microprogram control arrangement
DE2230102A1 (en) CALCULATOR FOR VARIABLE WORD LENGTHS
DE69133571T2 (en) Data processor with the ability to execute two instructions simultaneously
DE1928202B2 (en) Device for the creation of statistical data on the operational sequence of program-controlled data processing systems
DE2847934A1 (en) DATA PROCESSING DEVICE WITH A MICRO COMMAND MEMORY
DE2318069A1 (en) COMPUTER CONTROL SYSTEM USING MICROPROGRAMMING AND STATIC / DYNAMIC EXTENSION OF CONTROL FUNCTIONS USING HARDWIRED LOGICAL MATRIX
DE2421130C2 (en)
DE3900246C2 (en)
DE3507584C2 (en)
DE4134392C2 (en) Method and apparatus for invalidating commands in devices with parallel processing
DE2753650C2 (en) Time keeping device with a register for storing time counting data
DE2702722C2 (en) Device for processing instructions that cannot be directly executed
DE3104256C2 (en)
DE1524114C3 (en) Address computing device for a data processing system
DE1179027B (en) Programmed digital computer system
DE2725614C2 (en)
DE3121046C2 (en)
DE2835110A1 (en) FAST REAL-TIME COMPUTER EMULATOR
DE2245284A1 (en) DATA PROCESSING SYSTEM

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