EP1470477A1 - Verfahren zur befehlsbearbeitung - Google Patents

Verfahren zur befehlsbearbeitung

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
English (en)
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/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Der Erfindung, die ein Verfahren zur Befehlsabarbeitung in einem Prozessor betrifft, wobei ein aktuell abzuarbeitende Befehl eines Programmspeichers durch eine Programmsteuer-Einheit einerseits mittels eines Programm-Zählerstandes eines in ihr implementierten Programm-Zählers adressiert wird und andererseits wird der adressierte Befehl von der Programmsteuer-Einheit ausgelesen, dekodiert und zu seiner Ausführung gebracht, liegt die Aufgabezugrunde, die EPIC-Prozessortechnologie durch eine schnelle Befehlsabarbeitung von Befehlsblöcken zu erweitern und dabei die Befehlsabarbeitung zu beschleunigen, ohne den üblichen Aufruf von Unter-Programmen auszuführen. Dies wird dadurch gelöst, dass die Programmsteuer-Einheit bei Auftreten eines Sprungbefehls in Gestalt eines Blockbefehls, bei dem eine bestimmte Anzahl von hintereinander abzuarbeitenden Befehlen vorgesehen ist und damit die Rücksprungadresse nach der Befehlsabarbeitung festliegt, zusätzlich ein Speichern des aktuellen Programmzählerstandes und ein Speichern der Befehls-Anzahl aufeinanderfolgender Befehlen ausführt. Nach dem letzten abzuarbeitender Befehl des Befehlsblockes wird dadurch der Zählvorgang des Programmzählers wieder beim eingespeicherten Programmzählerstand fortgesetzt.

Description

Verfahren zur Befehlsbearbeitung
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.
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.
So werden weitere Leistungssteigerungen durch das Erkennen und Nutzen von Parallelitäten im Prozess der Programmabarbeitung erwartet .
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.
Mit Parallelitäten sind hier vorrangig die in einem Prozessor parallel durchführbaren Operationen und Berechnungen voneinan- der unabhängiger Vorgänge gemeint.
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.
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.
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.
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.
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.
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) .
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.
Dieser Nachteil macht sich besonders dann in Performance- Verlusten bemerkbar, wenn solche Befehls-Blöcke in den Programmen häufig vorkommen.
Auch eine zeitsparende Berücksichtigung von abzuarbeitenden Befehle, die gerade in den delayed slots der Programmsteuerung bearbeitet werden, findet nicht statt.
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.
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.
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.
Nach dem letzten abzuarbeitenden Befehl des Befehlsblockes wird wieder beim eingespeicherten Programmzählerstand der Zählvorgang des Programmzählers fortgesetzt.
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.
Es wird somit realisiert, dass der spezielle Blockbefehl auch als bedingter Befehle ausgeführt wird.
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.
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.
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.
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.
Dies hat aber zur Folge, dass für einige Maschinentakte über- läppend die in Bearbeitung befindlichen Befehle in den delayed slots abgearbeitet werden.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Damit kann das Programm im Programmspeicher 1 an der unterbrochenen Stelle wieder fortgesetzt werden.
Verfahren zur Befehlsbearbeitung
Bezugzeichenliste
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

Claims

Verfahren zur BefehlsbearbeitungPatentansprüche
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.
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.
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.
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.
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.
EP20030706230 2002-02-01 2003-01-17 Verfahren zur befehlsbearbeitung Withdrawn EP1470477A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10204345A DE10204345A1 (de) 2002-02-01 2002-02-01 Verfahren zur Befehlsbearbeitung
DE10204345 2002-02-01
PCT/DE2003/000126 WO2003065204A1 (de) 2002-02-01 2003-01-17 Verfahren zur befehlsbearbeitung

Publications (1)

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

Family

ID=27588306

Family Applications (1)

Application Number Title Priority Date Filing Date
EP20030706230 Withdrawn EP1470477A1 (de) 2002-02-01 2003-01-17 Verfahren zur befehlsbearbeitung

Country Status (5)

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

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT500858B8 (de) * 2004-08-17 2007-02-15 Martin Schoeberl Instruction cache für echtzeitsysteme
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0374419A3 (de) * 1988-12-21 1991-04-10 International Business Machines Corporation Verfahren und Anordnung zur wirkungsvollen Errichtung von Schleifen in Hardware und Mikrokodierung
JPH07160585A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
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 (de) 2003-08-07
DE10204345A1 (de) 2003-08-14
US20090070557A1 (en) 2009-03-12
US20100049949A1 (en) 2010-02-25
JP2005516301A (ja) 2005-06-02
US20050246571A1 (en) 2005-11-03

Similar Documents

Publication Publication Date Title
DE69209888T2 (de) Befehlablaufsteuerung für einen Rechner
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE60115982T2 (de) Verfahren und Vorrichtung zum Zuordnen funktioneller Einheiten in einem Mehrfachthread-VLIM-Prozessor
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE3856220T2 (de) Digitaler Signalprozessor der bedingte Mehrpunkt-Sprungbefehle im Pipelinemodus bearbeitet
DE68929215T2 (de) Datenprozessor
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69719235T2 (de) Prozessor und Verfahren zur spekulativen Ausführung von bedingten Verzweigungsbefehlen unter Verwendung einer von mehreren Verzweigungsvorhersageverfahren
DE3750625T2 (de) Datenverarbeitungssystem mit zwei Ausführungseinheiten.
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE69835425T2 (de) Verbesserter befehlszuteilungsmechanismus für eine geschützte vliw-architektur
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE2548720C2 (de) Mikroprogramm-Steuerwerk
EP1117037B1 (de) Datenverarbeitungsvorrichtung zum parallelen Verarbeiten von unabhängigen Prozessen (Threads)
EP1470477A1 (de) Verfahren zur befehlsbearbeitung
DE102015109662A1 (de) Computerimplementiertes Verfahren zur rechnergestützten Erzeugung eines ausführbaren Steuerungsprogramms sowie computerimplementiertes Verfahren zur rechnergestützten Übersetzung eines die Funktionalität eines Steuerungsprogramms beschreibenden grafischen Modells
DE102016108081A1 (de) Mikroprozessor mit Zusatz-Befehlen für Binärsuche und zugehöriges Suchverfahren
DE102007060783A1 (de) Asynchroner Steuerungstransfer
EP0537302B1 (de) Verfahren zur bearbeitung eines benutzerprogramms auf einem parallelrechnersystem
DE19945940C2 (de) Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur

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