EP1470477A1 - Method for processing instructions - Google Patents

Method for processing instructions

Info

Publication number
EP1470477A1
EP1470477A1 EP20030706230 EP03706230A EP1470477A1 EP 1470477 A1 EP1470477 A1 EP 1470477A1 EP 20030706230 EP20030706230 EP 20030706230 EP 03706230 A EP03706230 A EP 03706230A EP 1470477 A1 EP1470477 A1 EP 1470477A1
Authority
EP
European Patent Office
Prior art keywords
command
block
program
instruction
processing
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.)
Withdrawn
Application number
EP20030706230
Other languages
German (de)
French (fr)
Inventor
Helge Betzinger
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.)
NXP BV
Original Assignee
Philips Semiconductors Dresden AG
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 Philips Semiconductors Dresden AG filed Critical Philips Semiconductors Dresden AG
Publication of EP1470477A1 publication Critical patent/EP1470477A1/en
Withdrawn 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Definitions

  • the invention relates to a method for command processing in a processor, wherein a currently executable command of a program memory is addressed by a program control unit on the one hand by means of a program counter status of a program counter implemented in it, by the program control unit controlling the counting mode and the Specifies the step size of the program counter and also stores a jump address from which it continues its counting mode when a jump command occurs, and on the other hand the addressed command is read out, decoded and executed by the program control unit.
  • parallelism primarily means the operations and calculations that can be carried out in parallel in a processor and are independent of one another.
  • ILP instruction level parallelism
  • ILP-based systems use conventional high-level programming languages, which were created for sequential processors, on the one hand, and compiler technology and hardware, on the other hand, to automatically detect parallelism.
  • ILP-based systems for programming, however, it should be noted that program branches cannot be parallelized.
  • VLIW Very long instruction word
  • the program contains the information about existing parallelism.
  • a disadvantage of this processor technology is the fact that the predictive instruction processing of program branches, the branch prediction and the speculative code processing are not manageable.
  • an EPIC program In addition to the ILP, an EPIC program also tells the processor the conditions under which certain instructions are to be executed. The processor gets all the commands execute, but only adopt results that meet the additional conditions (predicated instruction).
  • This technology also has the disadvantage that the command processing of fixed blocks of commands can only be implemented by command-intensive subroutines. It is also not possible to optimally design the branch prediction of program branches where the return address is already set.
  • a software method known in the prior art to process program branches in a time-saving manner is to save the jumps back and forth to the called subroutines by programming the instructions in such a way that they can be executed "inline".
  • This multiple occurrence of the UP in the program harbors the disadvantage of the high memory consumption.
  • the task is therefore to expand the EPIC processor technology with options for fast command processing of command blocks that go beyond the usual call of subroutines.
  • the solution to the problem according to the invention provides that an additional block command is implemented in the processors on the hardware side, so that the program control unit provides for a program branch in which a certain number of commands to be processed one after the other is provided and so that the return address is fixed after command processing, this implemented block command is optionally called instead of a subroutine, in which the current program counter status and the number of commands in succession of commands are additionally stored.
  • a further embodiment of the solution of the task according to the invention provides that the additional block command is executed by the arithmetic unit as a conditional command (predicated instruction), the command word containing the information under which condition the stored number of commands of the command block are processed.
  • conditional command predicated instruction
  • both branches are executed in a preliminary processing phase until the result of the condition query at the end of the associated delayed slot has been evaluated in an execute phase.
  • the delayed slots serve as respective execution channels in the area of the program for each command being processed in this way. program control. They are only closed after the execution phase of each command.
  • command processing times can be saved by the fact that an execute phase of a previous command does not necessarily have to be reached before the next command can be read out.
  • the respective processing status of the interrupted first command block and the end address to be saved for the return, which results from the second block command, are stored in a local program control stack.
  • the addresses of the commands combined in the respective command block are placed in the special address area that can be read by the compiler.
  • the invention will be explained in more detail below on the basis of an exemplary embodiment.
  • the associated drawing figure shows a schematic representation of the arithmetic unit with its processes during command processing.
  • the program instructions are present in the program sequence 1 in the program memory 1.
  • the program counter 5 contained in the program control unit 10 has addressed a command word of the program memory 1 and this has been recognized as a jump command by its subsequent decoding.
  • the number of commands from the block command is also stored in the command number memory 6.
  • the return address can thus be calculated and specified by the program control unit 10 after the command block has been processed.
  • the drawing shows that the first command block 2 contains a further block command.
  • the associated jump address is stored in the jump address memory 3 by this command and the second command block 11 is thereby addressed.
  • the calculation is made from the number of commands in the local stack 8 to the calculated return address and the command processing in the first command block 2 can be continued until its end.
  • the program control unit 10 loads the contents of the memory of the current program counter status 4, which represents the processing status of the interrupted program in the program memory 1 by the stored return address, into the program counter and the program instructions 1 to be processed are returned to. gene.
  • the program in program memory 1 can thus be continued at the interrupted point.
  • Calculator program memory first instruction block jump address memory memory of the current program counter status program counter instruction number memory delayed slots (Execute Phase) instruction number memory of the local stack processing status memory of the local stack program control unit second instruction block local stack of the program control

Abstract

The invention relates to a method for executing instructions in a processor, according to which an instruction to be executed of a programme memory is addressed by a programme control unit by means of a programme counter reading of a programme counter that operates in said unit. The addressed instruction is then read out, decoded and executed by the programme control unit. The aim of the invention is to extend EPIC processor technology by the rapid execution of instruction blocks, thus accelerating the instruction execution, without having to call up subroutines. To achieve this, the programme control unit additionally stores the current programme counter reading and the number of successive instructions when a jump instruction occurs in the form of a block instruction, according to which a specific number of instructions are to be executed successively, thus defining the return address after execution. After the last instruction of the instruction block to be executed, the programme counter resumes the counting operation from the stored programme counter reading.

Description

Verfahren zur Befehlsbearbeitung Command processing procedures
Die Erfindung betrifft ein Verfahren zur Befehls-Abarbeitung in einem Prozessor, wobei ein aktuell abzuarbeitender Befehl eines Programmspeichers durch eine Programmsteuer-Einheit einerseits mittels eines Programm-ZählerStandes eines in ihr implementierten Programm-Zählers adressiert wird, indem die Programmsteuer- Einheit den Zählmodus und die Schrittweite des Programm-Zählers vorgibt und außerdem eine Sprungadresse speichert von welcher dieser bei einem auftretenden Sprungbefehl seinen Zähl-Modus fortsetzt, und anderseits der adressierte Befehl von der Programmsteuer-Einheit ausgelesen, dekodiert und zu seiner Ausführung gebracht wird.The invention relates to a method for command processing in a processor, wherein a currently executable command of a program memory is addressed by a program control unit on the one hand by means of a program counter status of a program counter implemented in it, by the program control unit controlling the counting mode and the Specifies the step size of the program counter and also stores a jump address from which it continues its counting mode when a jump command occurs, and on the other hand the addressed command is read out, decoded and executed by the program control unit.
Die Forderungen nach Leistungssteigerung von Prozessoren konnte bisher die Halbleiterhersteller mit Steigerungen bei Taktfrequenz, Verarbeitungsbreite und Komplexität beantworten. Dieser Entwicklungsrichtung sind physikalische Grenzen gesetzt.The semiconductor manufacturers have so far been able to answer the demands for increased performance of processors by increasing the clock frequency, processing width and complexity. There are physical limits to this direction of development.
So werden weitere Leistungssteigerungen durch das Erkennen und Nutzen von Parallelitäten im Prozess der Programmabarbeitung erwartet .Further increases in performance are expected through the recognition and use of parallelism in the program execution process.
Eine umfassende Darstellung zu den diesbezüglichen neuen Entwicklungsrichtungen wird in "Computer Architecture a quantita- tive Approach" von John L. Hennessy, David A. Patterson (ISBN 1-55860-329-8) gegeben.A comprehensive description of the new development directions in this regard is given in "Computer Architecture a quantitative Approach" by John L. Hennessy, David A. Patterson (ISBN 1-55860-329-8).
Mit Parallelitäten sind hier vorrangig die in einem Prozessor parallel durchführbaren Operationen und Berechnungen voneinan- der unabhängiger Vorgänge gemeint.In this context, parallelism primarily means the operations and calculations that can be carried out in parallel in a processor and are independent of one another.
Diese Entwicklungsrichtung bei Prozessoren ist auch unter der Bezeichnung Instruction-Level-Parallelism (ILP) bekannt. ILP entsteht durch eine Kombination von Prozessor und Compilertechniken, welche die Ausführungsgeschwindigkeit steigern, indem RISC-ähnliche Operationen parallel ausgeführt werden.This development direction in processors is also known as instruction level parallelism (ILP). ILP is the result of a combination of processor and compiler techniques that increase execution speed by performing RISC-like operations in parallel.
ILP-basierende Systeme nutzen einerseits konventionelle High- Level-Programmiersprachen, die für sequenzielle Prozessoren geschaffen wurden, und andererseits Compilertechnologie und Hardware, um automatisch enthaltene Parallelitäten zu erkennen. Bei der programmtechnischen Anwendung ILP-basierende Systeme ist aber zu beachten, dass Programmverzweigungen grundsätzlich nicht parallelisierbar sind.ILP-based systems use conventional high-level programming languages, which were created for sequential processors, on the one hand, and compiler technology and hardware, on the other hand, to automatically detect parallelism. When using ILP-based systems for programming, however, it should be noted that program branches cannot be parallelized.
Beim Stand der Technik sind Super-Scalar-Prozessoren bekannt. Bei diesen sind ILP Prozessoren für sequenzielle Befehlsströme realisiert. Dabei enthält das Programm keinerlei Angaben über verfügbarer Parallelitäten. Dies muss von der Hardware entdeckt werden. Dies ist der Grund, dass solche Prozessoren eine ständig wachsende Komplexität der Hardware erfordern, wobei mit wachsender Anforderung an die Performance der Prozessoren die Komplexität überproportional steigt.Super scalar processors are known in the prior art. ILP processors for sequential instruction streams are implemented in these. The program does not contain any information about available parallelism. This must be discovered by the hardware. This is the reason that such processors require an ever increasing complexity of the hardware, whereby with increasing demands on the performance of the processors the complexity increases disproportionately.
Beim Stand der Technik sind weiterhin very-long-instruction- word (VLIW) -Prozessoren bekannt. Bei diesen enthält das Programm die Informationen über vorhandene Parallelitäten. Nachteilig für diese Prozessortechnologie ist der Umstand, dass die vorausschauende Befehlsabarbeitung von Programmverzweigungen, der Branch Prediction und die spekulative Code- Abarbeitung, nicht handhabbar sind.Very long instruction word (VLIW) processors are also known in the prior art. The program contains the information about existing parallelism. A disadvantage of this processor technology is the fact that the predictive instruction processing of program branches, the branch prediction and the speculative code processing are not manageable.
Dagegen vereint die Explicitly Parallel Instruction Computing (EPIC) -Prozessorentechnologie - als Weiterentwicklung - die Vorteile der vorgenannten beiden Entwicklungsrichtungen. Hierbei wird das Maximum an Komplexität von der Hardware in die Compiler, also der Software, verlagert.In contrast, the Explicitly Parallel Instruction Computing (EPIC) processor technology - as a further development - combines the advantages of the aforementioned two development directions. The maximum complexity is shifted from the hardware to the compiler, i.e. the software.
So teilt ein EPIC Programm dem Prozessor neben dem ILP zusätzlich mit, unter welchen Bedingungen bestimmte Anweisungen ausgeführt werden sollen. Der Prozessor wird sämtliche Befehle ausführen, aber nur ene Ergebnisse übernehmen, welche die zusätzlichen Bedingungen erfüllen (predicated instruction) .In addition to the ILP, an EPIC program also tells the processor the conditions under which certain instructions are to be executed. The processor gets all the commands execute, but only adopt results that meet the additional conditions (predicated instruction).
Auch bei dieser Technologie verbleibt der Nachteil, dass die Befehlsabarbeitung von festliegenden Blöcken von Befehlen nur durch befehlsaufwändige Unterprogramme realisiert werden können. Auch ist dabei eine optimale Gestaltung der Branch Predic- tion von Programm Verzweigungen bei denen die Rücksprung Adresse schon festliegt nicht möglich.This technology also has the disadvantage that the command processing of fixed blocks of commands can only be implemented by command-intensive subroutines. It is also not possible to optimally design the branch prediction of program branches where the return address is already set.
Dieser Nachteil macht sich besonders dann in Performance- Verlusten bemerkbar, wenn solche Befehls-Blöcke in den Programmen häufig vorkommen.This disadvantage is particularly noticeable in loss of performance if such instruction blocks occur frequently in the programs.
Auch eine zeitsparende Berücksichtigung von abzuarbeitenden Befehle, die gerade in den delayed slots der Programmsteuerung bearbeitet werden, findet nicht statt.There is also no time-saving consideration of commands to be processed that are currently being processed in the delayed slots of the program control.
Eine beim Stand der Technik bekannte softwaremäßige Methode Programmverzweigungen zeitsparend zu verarbeiten besteht darin, die Hin- und Rücksprünge zu den aufgerufenen Unterprogrammen einzusparen, indem die Anweisungen so programmiert werden, dass sie "inline" ausgeführt werden können. Das bedingt aber, dass die Unterprogramme (UP) vollständig in den Programmbereich ko- piert werden, in dem der Funktionsaufruf auch erfolgt. Dieses mehrfache Auftreten der UP im Programm birgt hierbei den Nachteil der hohen Speicherplatzaufwendung.A software method known in the prior art to process program branches in a time-saving manner is to save the jumps back and forth to the called subroutines by programming the instructions in such a way that they can be executed "inline". However, this means that the subroutines (UP) are copied completely into the program area in which the function is also called. This multiple occurrence of the UP in the program harbors the disadvantage of the high memory consumption.
Es besteht somit die Aufgabe, die EPIC-Prozessor-Technologie mit Möglichkeiten der schnellen Befehlsabarbeitung von Befehlsblöcken zu erweitern, die über den üblichen Aufruf von Unter- Programmen hinausgehen.The task is therefore to expand the EPIC processor technology with options for fast command processing of command blocks that go beyond the usual call of subroutines.
Die erfindungsgemäße Lösung der Aufgabenstellung sieht vor, dass hardwareseitig ein zusätzlicher Blockbefehl in die Prozessoren implementiert wird, sodass von der Programmsteuer-Einheit bei Auftreten einer Programmverzweigung, bei der eine bestimmte Anzahl von hintereinander abzuarbeitenden Befehlen vorgesehen ist und damit die Rücksprungadresse nach Befehlsabarbeitung festliegt, wahlweise anstatt eines Unterprogramms dieser implementierte Blockbefehl aufgerufen wird, bei dem zusätzlich ein Speichern des aktuellen Programmzählerstandes und ein Speichern der Befehlsanzahl aufeinanderfolgender Befehle ausgeführt wird.The solution to the problem according to the invention provides that an additional block command is implemented in the processors on the hardware side, so that the program control unit provides for a program branch in which a certain number of commands to be processed one after the other is provided and so that the return address is fixed after command processing, this implemented block command is optionally called instead of a subroutine, in which the current program counter status and the number of commands in succession of commands are additionally stored.
Nach dem letzten abzuarbeitenden Befehl des Befehlsblockes wird wieder beim eingespeicherten Programmzählerstand der Zählvorgang des Programmzählers fortgesetzt.After the last command of the command block to be processed, the counting process of the program counter is continued again when the program counter status is stored.
Eine weitere Ausgestaltung der erfindungsgemäßen Lösung der Aufgabenstellung sieht vor, dass der zusätzliche Blockbefehl als bedingter Befehl (predicated instruction) vom Rechenwerk ausgeführt wird, wobei im Befehlswort die Information enthalten ist, unter welcher Bedingung die gespeicherte Anzahl von Befehlen des Befehlsblockes abgearbeitet werden.A further embodiment of the solution of the task according to the invention provides that the additional block command is executed by the arithmetic unit as a conditional command (predicated instruction), the command word containing the information under which condition the stored number of commands of the command block are processed.
Es wird somit realisiert, dass der spezielle Blockbefehl auch als bedingter Befehle ausgeführt wird.It is thus realized that the special block command is also executed as a conditional command.
In einer vorteilhaften, an die EPIC-Prozessortechnologie ange- passten erfindungsgemäßen Lösung der Aufgabenstellung ist vorgesehenen, dass bei einer durch einen bedingten Blockbefehl ausgelösten Programm-Verzweigungen beide Zweige in einer vor- läufigen Abarbeitungsphase so lange ausgeführt werden, bis das Ergebnis der Bedingungsabfrage am Ende des zugehörigen delayed Slot in einer Execute-Phase ausgewertet worden ist.In an advantageous solution of the task according to the invention, which is adapted to the EPIC processor technology, it is provided that in the case of a program branching triggered by a conditional block instruction, both branches are executed in a preliminary processing phase until the result of the condition query at the end of the associated delayed slot has been evaluated in an execute phase.
Hierbei wird nach dem Verwerfen eines, diese Bedingung nicht erfüllenden Alternativ-Zweiges, die Befehls-Abarbeitung sofort in der fortgeschrittenen Position der nunmehr gültigen Abarbeitungsphase des anderen Zweiges fortgesetzt.In this case, after an alternative branch which does not meet this condition is rejected, the instruction processing is continued immediately in the advanced position of the processing phase of the other branch which is now valid.
Da die Befehle überwiegend jeweils nur während mehreren Maschi- nentakten ausgelesen, decodiert und ausgeführt werden, dienen die delayed slots für jeden so in Bearbeitung befindlichen Befehl als jeweilige Ausführungskanäle im Bereich der Pro- grammsteuerung. Sie werden erst nach der Execute-Phase eines jeden Befehls geschlossen.Since the commands are mostly only read, decoded and executed during several machine cycles, the delayed slots serve as respective execution channels in the area of the program for each command being processed in this way. program control. They are only closed after the execution phase of each command.
Somit können Befehlsbearbeitungszeiten dadurch gespart werden, dass eine Execute-Phase eines vorangegangenen Befehls nicht unbedingt erreicht sein muss, bevor der nächste Befehl ausgelesen werden kann.In this way, command processing times can be saved by the fact that an execute phase of a previous command does not necessarily have to be reached before the next command can be read out.
Dies hat aber zur Folge, dass für einige Maschinentakte über- läppend die in Bearbeitung befindlichen Befehle in den delayed slots abgearbeitet werden.However, this means that for some machine cycles the commands being processed are processed in the delayed slots.
Für die Anwendung des erfindungsgemäßen Block-Befehls ergibt sich am Ende der Abarbeitung der dem Block zugehörigen Befehle ein Zeitvorteil auch dadurch, dass bei vorher festliegendem genau bekannten Rücksprung-Zeitpunkt die Bearbeitung der delayed Slots dadurch vermieden wird, dass zu dem frühest möglichen Zeitpunkt der Rücksprung eingeleitet wird, bei dem auch alle delayed Slots geschlossen bleiben können. Solche günstigen zeitlichen Steuerungen wären im Falle eine Unterprogrammabarbeitung nicht möglich.For the application of the block command according to the invention, there is also a time advantage at the end of the processing of the commands belonging to the block in that, at a previously known exactly known return time, the processing of the delayed slots is avoided by returning at the earliest possible time is initiated, in which all delayed slots can also remain closed. Such favorable time controls would not be possible in the case of subroutine processing.
In einer weiteren vorteilhaften Ausgestaltung der erfindungsgemäßen Lösung der Aufgabenstellung ist vorgesehenen, dass im Falle eines auftretenden zweiten Blockbefehles während der Abarbeitungsphase eines ersten Blockbefehls in dem ersten Befehlsblock eine erforderliche Verzweigung vorgenommen wird.In a further advantageous embodiment of the solution of the task according to the invention, it is provided that in the event of a second block command occurring, a necessary branching is carried out in the first command block during the processing phase of a first block command.
Der jeweilige Bearbeitungsstand des unterbrochenen ersten Be- fehlsblockes und die für den Rücksprung abzuspeichernde End- Adresse, die aus dem zweiten Blockbefehl resultiert, werden in einem lokalen Stack der Programmsteuerung abgelegt.The respective processing status of the interrupted first command block and the end address to be saved for the return, which results from the second block command, are stored in a local program control stack.
Diese Lösung sieht vor, dass die abzuarbeitenden Blockbefehle auch in sich geschachtelt ausgeführt werden. Hierbei ist zu gewährleisten, dass je Blockbefehl die Adresse des Bearbeitungsstandes des vorhergehenden unterbrochenen Befehlsblockes und die sich durch die Befehlsanzahl der abzuarbeitenden Befehle des weiteren Befehlsblockes ergebende Rücksprungsadresse in einem lokalen Stack abgelegt und beim Rücksprung dort wieder ausgelesen wird. Der lokale Stack befindet sich in der Programmsteuerung.This solution provides that the block instructions to be processed are also executed nested. It must be ensured here that for each block command the address of the processing status of the previous interrupted command block and the number of commands to be processed are determined by the number of commands the return address resulting from the further command block is stored in a local stack and is read there again on the return. The local stack is in the program control.
In einer an den Compiler angepassten Ausgestaltung der erfindungsgemäßen Lösung der Aufgabenstellung ist vorgesehenen, dass die Adressen der im jeweiligen Befehlsblock zusammengefassten Befehle im speziellen, vom Compiler lesbaren Adress-Bereich ge- legt werden.In an embodiment of the task solution according to the invention that is adapted to the compiler, it is provided that the addresses of the commands combined in the respective command block are placed in the special address area that can be read by the compiler.
Die Erfindung soll nachfolgend anhand eines Ausführungsbeispie- les näher erläutert werden. Die zugehörige Zeichnungsfigur zeigt eine schematische Darstellung des Rechenwerks mit seinen Vorgängen während der Befehlsabarbeitung.The invention will be explained in more detail below on the basis of an exemplary embodiment. The associated drawing figure shows a schematic representation of the arithmetic unit with its processes during command processing.
In der Zeichnungsfigur ist ersichtlich, dass im Programmspeicher 1 die Programmbefehle in der Programmreihenfolge vorliegen. Der in der Programmsteuerungseinheit 10 enthaltene Pro- grammzähler 5 hat ein Befehlswort des Programmsspeichers 1 adressiert und dieses ist durch seine nachfolgende Decodierung als Sprungbefehl erkannt worden.In the drawing figure it can be seen that the program instructions are present in the program sequence 1 in the program memory 1. The program counter 5 contained in the program control unit 10 has addressed a command word of the program memory 1 and this has been recognized as a jump command by its subsequent decoding.
Somit wird seine ausgelesene Sprungadresse im Sprungadressen- Speicher 3 abgelegt. Weiterhin wird mit dieser Sprungadresse der erste Befehlsblock 2 adressiert. Außerdem ist dieser Sprungbefehl als Blockbefehl von der Programmsteuer-Einheit 10 erkannt worden. Dieses hat zur Folge, dass in dem Speicher des aktuellen Programmzählerstandes 4 der vorliegende Programm- Zählerstand abgelegt wird.His read jump address is thus stored in the jump address memory 3. Furthermore, the first command block 2 is addressed with this jump address. In addition, this jump instruction has been recognized as a block instruction by the program control unit 10. The result of this is that the present program counter status is stored in the memory of the current program counter status 4.
Weiterhin wird vom Blockbefehl die Befehlsanzahl ebenfalls im Befehlsanzahl-Speicher 6 abgelegt. Damit kann von der Programmsteuereinheit 10 die Rücksprungadresse nach Abarbeitung des Befehlsblockes berechnet und vorgegeben werden.Furthermore, the number of commands from the block command is also stored in the command number memory 6. The return address can thus be calculated and specified by the program control unit 10 after the command block has been processed.
In der Zeichnungsfigur ist dargestellt, dass im ersten Befehlsblock 2 ein weiterer Blockbefehl enthalten ist. Entsprechend der üblichen Sprungadressebehandlung wird von diesem Befehl die zugehörige Sprungadresse in den Sprungadressenspeicher 3 abgelegt und der 2. Befehlsblock 11 wird dadurch ad- ressiert.The drawing shows that the first command block 2 contains a further block command. In accordance with the usual jump address handling, the associated jump address is stored in the jump address memory 3 by this command and the second command block 11 is thereby addressed.
Da dieser Befehl als Blockbefehl erkannt wurde, wird nunmehr auch der Bearbeitungsstand des ersten Befehlsblockes 2 im Bearbeitungsstand-Speicher des lokalen Stack 9 und die Befehlsan- zahl des zweiten Befehlsblockes 11 im Befehlsanzahl-Speicher des lokalen Stack 8 abgelegt.Since this command was recognized as a block command, the processing status of the first command block 2 is now also stored in the processing status memory of the local stack 9 and the number of commands of the second command block 11 in the command number memory of the local stack 8.
Nach dem Erreichen des letzten Befehls des zweiten Befehlsblockes 11 wird entsprechend der Vorgaben aus dem Befehlsanzahl- Speicher des lokalen Stack 8 auf die berechnete Rücksprungsadresse gesprungen und es kann die Befehlsabarbeitung im ersten Befehlsblock 2 bis zu dessen Ende fortgesetzt werden.After the last command of the second command block 11 has been reached, the calculation is made from the number of commands in the local stack 8 to the calculated return address and the command processing in the first command block 2 can be continued until its end.
Hierbei erfolgt durch die Programmsteuer-Einheit 10 das Laden des Inhaltes des Speichers des aktuellen Programmzählerstandes 4, welcher den Bearbeitungsstand des unterbrochenen des Programms im Programmspeicher 1 durch die gespeicherte Rücksprungadresse repräsentiert, in den Programmzähler und es wird zu den abzuarbeitenden Befehlen des Programmspeichers 1 zurückgesprun- gen.In this case, the program control unit 10 loads the contents of the memory of the current program counter status 4, which represents the processing status of the interrupted program in the program memory 1 by the stored return address, into the program counter and the program instructions 1 to be processed are returned to. gene.
Damit kann das Programm im Programmspeicher 1 an der unterbrochenen Stelle wieder fortgesetzt werden. The program in program memory 1 can thus be continued at the interrupted point.
Verfahren zur BefehlsbearbeitungCommand processing procedures
BezugzeichenlisteLIST OF REFERENCE NUMBERS
Rechenwerk Programmspeicher erster Befehlsblock Sprungadressenspeicher Speicher des aktuellen Programmzählerstandes Programmzähler Befehlsanzahl-Speicher delayed slots (Execute Phase) Befehlsanzahl-Speicher des lokalen Stack Bearbeitungsstand-Speieher des lokalen Stack Programmsteuer-Einheit zweiter Befehlsblock lokaler Stack der Programmsteuerung Calculator program memory first instruction block jump address memory memory of the current program counter status program counter instruction number memory delayed slots (Execute Phase) instruction number memory of the local stack processing status memory of the local stack program control unit second instruction block local stack of the program control

Claims

Verfahren zur BefehlsbearbeitungPatentansprüche Command processing procedures
1. Verfahren zur Befehls-Abarbeitung in einem Prozessor, wo- bei ein aktuell abzuarbeitender Befehl eines Programmspeichers durch eine Programmsteuer-Einheit einerseits mittels eines Programmzählerstandes eines in ihr implementierten Programmzählers adressiert wird, indem die Programmsteuer- Einheit den Zählmodus und die Schrittweite des Programm- zählers vorgibt und außerdem eine Sprungadresse speichert von welcher dieser bei einem auftretenden Sprungbefehl seinen Zähl-Modus fortsetzt und anderseits der adressierte Befehl von der Programmsteuer-Einheit ausgelesen, dekodiert und zu seiner Ausführung gebracht wird, dadurch gekennzeichnet, dass hardwaremäßig ein zusätzlicher Blockbefehl in den Prozessor implementiert wird, so- dass von der Programmsteuer-Einheit (10) bei Auftreten einer Programmverzweigung, bei der eine bestimmte Anzahl von hintereinander abzuarbeitenden Befehlen vorgesehen ist und damit die Rücksprungadresse nach Befehlsabarbeitung festliegt, wahlweise anstatt eines Unterprogramms dieser implementierte Blockbefehl aufgerufen wird, bei dem zusätzlich ein Speichern des aktuellen Programmzählerstandes und ein Speichern der Befehlsanzahl aufeinanderfolgender Be- fehle ausführt und dass nach dem letzten abzuarbeitender Befehl des Befehlsblockes wieder beim eingespeicherten Programmzählerstand der Zählvorgang des Programmzählers (5) fortgesetzt wird.1. Process for command processing in a processor, whereby a currently executable command of a program memory is addressed by a program control unit on the one hand by means of a program counter reading of a program counter implemented in it, by the program control unit changing the counting mode and the step size of the program specifies the counter and also stores a jump address from which it continues its counting mode when a jump command occurs and on the other hand the addressed command is read out, decoded and executed by the program control unit, characterized in that an additional block command is hardware-wise in the processor is implemented, so that the program control unit (10) optionally when a program branch occurs, in which a certain number of commands are to be processed in succession and thus the return address is fixed after command processing t a subroutine, this implemented block command is called, in which the current program counter status and the number of commands in succession are additionally stored and that after the last command to be processed in the command block, the counting process of the program counter (5) is continued again at the stored program counter status.
2. Verfahren nach Anspruch 1 dadurch gekennzeichnet, dass der zusätzliche Blockbefehl als bedingter Befehl (predica- ted instruction) vom Rechenwerk (0) ausgeführt wird, wobei im Befehlswort die Information enthalten ist, unter wel- eher Bedingung die gespeicherte Anzahl von Befehlen des Befehlsblockes abgearbeitet werden.2. The method according to claim 1, characterized in that the additional block instruction is executed as a conditional instruction (predicted instruction) by the arithmetic unit (0), the instruction word containing the information under which rather condition the stored number of commands of the command block are processed.
3. Verfahren nach Anspruch 1 und 2 dadurch gekennzeichnet, dass bei einer, durch einen bedingten Blockbefehl ausgelösten Programm-Verzweigungen, beide Zweige in einer vorläufigen Abarbeitungsphase so lange ausgeführt werden, bis das Ergebnis der Bedingungsabfrage am Ende des zugehörigen delayed slot (7) in einer Execute-Phase verwertet werden kann, wobei nach dem Verwerfen eines diese Bedingung nicht erfüllenden Alternativ-Zweiges die Befehlsabarbeitung sofort in der fortgeschrittenen Position der nunmehr gültigen Abarbeitungsphase des anderen Zweiges fortgesetzt wird.3. The method according to claim 1 and 2, characterized in that in a program branches triggered by a conditional block instruction, both branches are executed in a preliminary processing phase until the result of the condition query at the end of the associated delayed slot (7) in an Execute phase can be used, whereby after discarding an alternative branch that does not meet this condition, the command processing is continued immediately in the advanced position of the now valid processing phase of the other branch.
4. Verfahren nach Ansprüche 1 bis 3 dadurch gekennzeichnet, dass im Falle eines auftretenden zweiten Blockbefehles zusätzlich zur Sprungbefehlsbearbeitung während der Abarbeitungsphase eines ersten Blockbefehls von dem ersten Be- fehlsblock (2) der jeweilige Bearbeitungsstand dieses unterbrochenen ersten Befehlsblockes (2) und die für den Rücksprung aus dem zweiten Befehlsblock (11) abzuspeichernde End-Adresse, die aus der Sprungadresse und der Befehlsanzahl des zweiten Blockbefehls resultiert, in einem lokalen Stack der Programmsteuerung (12) abgelegt wird.4. The method according to claims 1 to 3, characterized in that in the event of a second block command occurring in addition to the jump command processing during the processing phase of a first block command from the first command block (2), the respective processing status of this interrupted first command block (2) and for the Return from the second command block (11) end address to be stored, which results from the jump address and the number of commands of the second block command, is stored in a local stack of the program controller (12).
5. Verfahren nach den Ansprüchen 1 bis 4 dadurch gekennzeichnet, dass die Adressen der im jeweiligen Befehlsblock zu- sammengefassten Befehle im speziellen, vom Compiler lesba- ren Adress-Bereich gelegt werden. 5. The method according to claims 1 to 4, characterized in that the addresses of the commands combined in the respective command block are placed in the special address area that can be read by the compiler.
EP20030706230 2002-02-01 2003-01-17 Method for processing instructions Withdrawn EP1470477A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10204345A DE10204345A1 (en) 2002-02-01 2002-02-01 Command processing procedures
DE10204345 2002-02-01
PCT/DE2003/000126 WO2003065204A1 (en) 2002-02-01 2003-01-17 Method for processing instructions

Publications (1)

Publication Number Publication Date
EP1470477A1 true EP1470477A1 (en) 2004-10-27

Family

ID=27588306

Family Applications (1)

Application Number Title Priority Date Filing Date
EP20030706230 Withdrawn EP1470477A1 (en) 2002-02-01 2003-01-17 Method for processing instructions

Country Status (5)

Country Link
US (3) US20050246571A1 (en)
EP (1) EP1470477A1 (en)
JP (1) JP2005516301A (en)
DE (1) DE10204345A1 (en)
WO (1) WO2003065204A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT500858B8 (en) * 2004-08-17 2007-02-15 Martin Schoeberl INSTRUCTION CACHE FOR REAL-TIME SYSTEMS
DE102012218363A1 (en) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Method for controlling a separate flow of linked program blocks and control device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0374419A3 (en) * 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
JPH07160585A (en) * 1993-12-13 1995-06-23 Hitachi Ltd Low power data processor
US5805863A (en) * 1995-12-27 1998-09-08 Intel Corporation Memory pattern analysis tool for use in optimizing computer program code
US5710913A (en) * 1995-12-29 1998-01-20 Atmel Corporation Method and apparatus for executing nested loops in a digital signal processor
US5898865A (en) * 1997-06-12 1999-04-27 Advanced Micro Devices, Inc. Apparatus and method for predicting an end of loop for string instructions
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6453407B1 (en) * 1999-02-10 2002-09-17 Infineon Technologies Ag Configurable long instruction word architecture and instruction set

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO03065204A1 *

Also Published As

Publication number Publication date
WO2003065204A1 (en) 2003-08-07
JP2005516301A (en) 2005-06-02
US20050246571A1 (en) 2005-11-03
US20100049949A1 (en) 2010-02-25
US20090070557A1 (en) 2009-03-12
DE10204345A1 (en) 2003-08-14

Similar Documents

Publication Publication Date Title
DE4217012C2 (en) Microprocessor operating with a variety of instruction streams and static interleaving
DE69833008T2 (en) PROCESSOR WITH INSTRUCTION CODING BY MEANS OF A TEMPLATE
DE19527031C2 (en) Branch processor for a data processing system and method for operating a data processing system
DE60115982T2 (en) Method and apparatus for allocating functional units in a multi-threaded VLIM processor
DE69133571T2 (en) Data processor with the ability to execute two instructions simultaneously
DE4342250A1 (en) Computer architecture and method for operating a parallel computer
DE69835425T2 (en) IMPROVED COMMUNICATION MECHANISM FOR A PROTECTED VLIW ARCHITECTURE
DE19983098B4 (en) Multi-bit display for handling write-to-write errors and eliminating bypass comparators
DE2054835A1 (en) Processor for an information processing system and an operating method for this processor
EP0825540B1 (en) Pipeline processor
DE4430195B4 (en) Procedure for evaluating Boolean expressions
DE2548720C2 (en) Microprogram control unit
EP1117037B1 (en) Data processing apparatus for parallel processing of independent processes (threads)
EP1470477A1 (en) Method for processing instructions
DE102015109662A1 (en) Computer-implemented method for the computer-aided generation of an executable control program and computer-implemented method for the computer-aided translation of a graphical model describing the functionality of a control program
DE3104256A1 (en) DIGITAL PIPELINE PROCESSOR FOR CONDITIONAL OPERATIONS
EP0537302B1 (en) Method of processing a user programme in a parallel-computer system
DE19945940C2 (en) Method and device for processing conditional jump instructions in a processor with PIPELINE computer architecture
EP0073004B1 (en) Cpu of a digital multibit computer system
EP0983545B1 (en) Risc processor
DE102007060783A1 (en) Asynchronous control transfer
DE102006020178A1 (en) A method and computer program product for executing a program on a multithreaded architecture processor
DE19532527C2 (en) Process for dynamic associative control of parallel processors
DE3619036C2 (en)
DE19948100A1 (en) Processor system

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20040722

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PT SE SI SK TR

AX Request for extension of the european patent

Extension state: AL LT LV MK RO

17Q First examination report despatched

Effective date: 20070530

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: NXP SEMICONDUCTORS GERMANY GMBH

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: NXP B.V.

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20100803