DE69810064T2 - Verfahren und Anordnung zur Veränderung der Durchführung eines Nachfolgebefehls in einem Dataprozessor - Google Patents
Verfahren und Anordnung zur Veränderung der Durchführung eines Nachfolgebefehls in einem DataprozessorInfo
- Publication number
- DE69810064T2 DE69810064T2 DE69810064T DE69810064T DE69810064T2 DE 69810064 T2 DE69810064 T2 DE 69810064T2 DE 69810064 T DE69810064 T DE 69810064T DE 69810064 T DE69810064 T DE 69810064T DE 69810064 T2 DE69810064 T2 DE 69810064T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- data processor
- instructions
- interrupt
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 12
- 238000001514 detection method Methods 0.000 claims description 65
- 238000012545 processing Methods 0.000 claims description 15
- 230000001934 delay Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 20
- 230000008859 change Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 4
- 239000004020 conductor Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000819038 Chichester Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf Datenprozessoren und insbesondere auf die Beeinflussung der Abarbeitung von Folgebefehlen in einem Datenprozessor.
- Da Datenprozessoren mehr und mehr Anwendung in Echtzeit-Steuerungssystemen finden, sind neue Techniken erforderlich, die eine effiziente Nutzung von Systemressourcen sicherstellen. In vielen Multitasking-Systemen beispielsweise gibt es verschiedene Tasks, die sich einige derselben Systemressourcen zu teilen versuchen, wie etwa Speicherplatz, einen Drucker, einen Anschluss oder eine Anzeige. Es ist in solchen Multitasking-Systemen entscheidend, dass die Systemressourcen so effizient wie möglich genutzt werden. Wenn sich beispielsweise mehrere Tasks eine Ressource teilen, muss es eine Möglichkeit geben, festzustellen, welche Task augenblicklich die Ressource nutzt und ob diese Task eine Funktion erfüllt, die nicht gestört werden darf. In vielen Multitasking-Systemen werden hierfür Semaphoren benutzt.
- Semaphoren sind eine Art Flags oder Zustandsanzeiger, die den momentanen Zustand einer Systemressource widerspiegeln. Üblicherweise zeigt die Zustandsinformation eines Semaphors an, ob eine Systemressource momentan benutzt wird oder nicht. Bei manchen Multitasking-Systemen kann der Semaphor auch Informationen darüber enthalten, welche Task die Ressource augenblicklich nutzt und möglicherweise sogar über den Funktionstyp, der mit der Ressource ausgeführt wird.
- Beispielsweise kann ein spezieller Speicherplatz als Ort des Semaphors für eine gemeinsame Variable (shared variable) X bestimmt sein. Wenn ein Task die gemeinsame Variable X nutzen will, muss dies Task den Semaphor für die gemeinsame Variable X lesen, indem sie jenen speziellen Speicherplatz ausliest. Der Semaphor der Variablen X umfasst Informationen zu dem Zustand der Variablen X, wie etwa, ob die Variable X derzeit für den exklusiven Zugriff einer besonderen Task reserviert ist. Zeigt der Semaphor der Variablen X an, dass diese derzeit reserviert und daher belegt ist, muss die neue Task warten, Die neue Task kann damit fortfahren, den Semaphor der Variablen X abzufragen, indem sie den Semaphor der Variablen X periodisch ausliest und nachsieht, ob die Variable X noch immer in Benutzung ist oder ob sie zugänglich geworden ist.
- Zeigt der Semaphor der Variablen X an, dass die Variable X nicht mehr reserviert und daher zugänglich ist, schreibt die wartende Task den Semaphor der Variablen X um, sodass dieser seinen Zustand in "besetzt" oder "nicht zugänglich" ändert. Die wartende Task hat somit die Variable X in effizienter Weise zur Eigenbenutzung blockiert. Keine andere Task kann die Variable X benutzten, solange der Semaphor der Variable X anzeigt, dass die Variable X in Benutzung ist. Sobald die wartende Task ihre Benutzung der Variablen X beendet hat, schreibt sie an den Ort des Semaphors der Variablen X einen neuen Wert, um den Semaphor der Variablen X dahingehend zu ändern, dass er anzeigt, dass die Variable X wieder zugänglich ist.
- Es gibt ein wesentliches Problem, das bei Systemen entsteht, die Semaphoren für die Zuweisung gemeinsamer Systemressourcen benutzen. Das Problem entsteht, wenn mehr als eine Task den Semaphor der gemeinsamen Ressource abfragen und nachsehen, ob die Ressource schon zugänglich geworden ist. Es sei bespielsweise angenommen, dass Task #1 und Task #2 beide den Semaphor der Variablen X abfragen. Task #1 sei die erste, die den Semaphor der Variablen X ausliest, nachdem dieser so geändert wurde, dass er die Variable X als zugänglich anzeigt. Task #2 liest nun den Semaphor der Variablen X aus und erfährt ebenfalls, dass die Variable X zugänglich ist. Weder Task #1 noch Task #2 ist sich darüber im Klaren, dass mit ihr eine andere Task um die Benutzung der Variablen X konkurriert. Wenn Task #1 einen Interrupt empfängt, muss Task #1 zunächst eine Interrupt-Routine abarbeiten, bevor sie wieder dort ansetzen kann, wo sie aufgehört hat. Inzwischen schreibt Task #2 dem Semaphor der Variablen X einen Wert zu, der anzeigt, dass die Variable X nun belegt ist. Task #2 fährt dann damit fort, die Variable X zu benutzen. Task #1 beendet ihre Interrupt-Routine und setzt dort wieder an, wo sie ihr Software-Programm verlassen hatte. Task #1 hat angehalten in dem Wissen, dass die Variable X zugänglich ist. Task #1 schreibt dem Semaphor der Variablen X also einen Wert zu, der anzeigt, dass die Variable X nun belegt ist und fährt dann damit fort, zu versuchen, die Variable X zu benutzen. Die Variable X wird aber bereits von Task #2 benutzt. Es ergibt sich eine Kollision. In der Folge kann die Variable X verfälscht werden und die Tasks erhalten einen falschen Wert der Variablen X. Es ist daher ein Ansatz von Nöten, der es gestattet, dass mehrere Tasks gemeinsame Ressourcen effektiv und effizient nutzen.
- Ein Artikel mit dem Titel "Practical considerations for non-blocking concurrent objects" in Proceedings of the International Conference on Distributed Computing Systems, US Los Alamitos, IEEE Comp. Soc. Press, Vol CONF. 13, Seiten 264-273, lehrt Compare-And-Swap-Operationen, einschließlich der Benutzung von Test-And-Set und Atomic- Exchange-Grundelementen im Zusammenhang mit zeitgemäßen Shared-Memory-Multiprozessoren. Die Referenz "Implementing atomic sequences on uniprocessors using rollforward", Software Practice and Experience, GB, John Wiley & Sons Ltd., Chichester Vol. 26, Nr. 1, Seiten 1-23, lehrt eine nur auf Software gestützte Lösung des Synchronisationsproblems für Uniprozessoren, wobei atomare Sequenzen ohne jeglichen Hardwareschutz durchgeführt werden können und lehrt in dem seltenen Fall des Vorgreifens das Vorspulen einer Sequenz bis zum Ende, wobei die atomare Eigenschaft erhalten bleibt.
- Fig. 1 illustriert in Form eines Blockdiagramms einen Datenprozessor 10 gemäß einer Ausführungsform der vorliegenden Erfindung.
- Fig. 2 illustriert in Form eines Blockdiagramms einen Teil der zentralen Berechnungseinheit (CPU: Central Processing Unit) 12 in Fig. 1 gemäß einer Ausführungsform der vorliegenden Erfindung.
- Fig. 3 illustriert in Tabellenform ein Ausführungsbeispiel eines Befehls zur Verzögerung der Erkennung von Interrupts gemäß einer Ausführungsform der vorliegenden Erfindung.
- Fig. 4 illustriert in Tabellenform ein Ausführungsbeispiel einer Folge von Befehlen zur Ausführung einer Test- And-Set-Funktion gemäß einer Ausführungsform der vorliegenden Erfindung.
- Fig. 5 illustriert in Tabellenform ein Ausführungsbeispiel eines Befehls zur Ausführung einer Exchange-Memory- Operand-Funktion gemäß einer Ausführungsform der vorliegenden Erfindung.
- Fig. 6 illustriert in Tabellenform ein Ausführungsbeispiel eines Befehls zur Ausführung einer Funktion zur Erhöhung eines speicherbasierten Zählers gemäß einer Ausführungsform der vorliegenden Erfindung.
- Fig. 1 illustriert einen Datenprozessor 10. In einer Ausführungsform schließt der Datenprozessor 10 eine zentrale Berechnungseinheit (CPU: Central Processing Unit) 12, einen Speicher 14, ein Bus-Schnittstellenmodul 16 und andere Module 18 ein, die alle über den Bus 20 bidirektional miteinander verbunden sind. Das Bus-Schnittstellenmodul 16 kann über einen externen Bus 26 extern mit dem Datenprozessor 10 verbunden sein. Die Sonstigen Module 18 können optional durch ein oder mehrere integrierte Schaltkreisterminals 28 extern mit dem Datenprozessor 10 verbunden sein. Der Speicher 14 kann optional über einen oder mehrere integrierte Schaltkreisterminals 24 extern mit dem Datenprozessor 10 verbunden sein. Die zentrale Berechnungseinheit kann optional über einen oder mehrere integrierte Schaltkreisterminals 22 extern mit dem Datenprozessor 10 verbünden sein.
- Unter weiterer Bezugnahme auf Fig. 1 können alternative Ausführungsformen der vorliegenden Erfindung jede Art von Struktur eines Datenprozessors 10 verwenden. Außerdem kann der Datenprozessor eine breite Vielfalt von Funktionen durchführen können. Beispielsweise kann der Datenprozessor 10 eine RISC-Architektur (Reduced Instruction Set Computer) oder eine Harvard-Architektur verwenden, ein Vektor- Prozessor oder ein SIMD-Prozessor (Single Instruction Multiple Data) sein, Fließkomma-Arithmetik oder digitale Signalverarbeitungsberechnungen durchführen usw.
- Fig. 2 illustriert einen Teil der CPU 12 von Fig. 1. In einer Ausführungsform enthält die CPU 12 eine Befehls- Pipe-Schaltung 30, eine Befehlsdekodierungsschaltung 32, Register 34, eine arithmetische Logikeinheit (ALU: Arithmetic Logic Unit) 40 und eine CPU-Steuerschaltung 42. Die CPU-Steuerschaltung 42 steht über Steuer-/Zustandssignale 58 bidirektional mit der Befehls-Pipe 30, der Befehlsdekodierung 32, dem Register 34 und der ALU 40 in Verbindung, um Steuerinformationen zu liefern und Zustandsinformationen zu empfangen. Die Befehls-Pipe 30 erhält Anweisungen über den Bus 20. Die Befehls-Pipe 30 kann eine oder mehrere Befehle, die abgearbeitet werden sollen, speichern. Die Befehls-Pipe 30 liefert über die Leiterbahnen 54 Befehle an die Befehlsdekodierungsschaltung 32. Die Befehlsdekodierungsschaltung 32 dekodiert die Befehle, die sie von der Befehls-Pipe 30 empfängt und liefert die Ausgabesignale über die Leiterbahnen 56 an die CPU-Steuerschaltung 42. Die CPU-Steuerschaltung 42 enthält eine Ausnahme-Steuerschaltung 44, eine Interrupt-Steuerschaltung 46 und eine Zähler- /Zeitgeberschaltung 48.
- Bei einer Ausführungsform der vorliegenden Erfindung ist die Interrupt-Steuerschaltung 46 bidirektional mit der Zähler-/Zeitgeberschaltung 48 verbunden. Die CPU- Steuerschaltung 42 empfängt von dem Bus 20 durch Interruptsignale 50 ein oder mehrerer Interruptanfrage-Signale. Weitere Module (siehe Fig. 1) oder (nicht dargestellte) Schaltungen die an den externen Bus 26 angeschlossen sind, können der Ursprung der einen oder mehreren Interruptanfragen sein, die die CPU-Steuerschaltung 42 durch die Interruptsignale 50 erhält. Die CPU-Steuerschaltung 42 kann durch Interruptsignale 50 dem Bus 20 eine oder mehrere Interrupfbestätigungen oder andere Interrupt-bezogenen Signale liefern. Die CPU-Steuerschaltung 42 kann optional durch Ausnahmesignale 52 ein oder mehrere "Ausnahme-aufgetreten"- Signale empfangen. Bei einigen Ausführungsformen der vorliegenden Erfindung kann die CPU-Steuerschaltung 42 dem Bus 20 eine oder mehrer Ausnahmebestätigungen oder andere Ausnahme-Zustandssignale liefern.
- Es wird weiter auf Fig. 2 Bezug genommen. Bei einer Ausführungsform der vorliegenden Erfindung ist die Ausnahme-Steuerschaltung 44 mit Ausnahmesignalen 52 und die Interrupt-Steuerschaltung 46 mit Interruptsignalen 50 verbunden. Die Ausnahme-Steuerschaltung 44 und die Interrupt- Steuerschaltung 46 sind beide mit Leiterbahnen 56 und Steuer-/Zustandssignalen 58 verbunden. Die Interrupt- Steuerschaltung 46 kann optional eine Programmeingriffsschaltung 47 enthalten. Bei alternativen Ausführungsformen der vorliegenden Erfindung kann die Programmeingriffsschaltung 47 an anderer Stelle in der CPU-Steuerschaltung 42 angeordnet sein. Die CPU-Steuerschaltung 42 kann optional über integrierte Schaltkreisterminals 22 extern mit dem Datenprozessor 10 verbunden sein. Die Register 34 sind bidirektional mit dem Bus 20 verbunden, um Datenwerte zu liefern und zu empfangen. Die Register 34 enthalten ein Register 36. Das Register 36 enthält ein Bedingungsbit 38. Die Register 34 sind mit der ALU 40 über Leiterbahnen 60 und Leiterbahnen 62 verbunden, um Werte zu liefern. Der Ausgang der ALU 40 ist über Leiterbahnen 64 mit den Registern 34 verbunden, um Ausgabewerte von der ALU 40 zu liefern.
- Fig. 3 illustriert eine Ausführungsform eines Befehls zur Verzögerung der Erkennung von Interrupts, die von der CPU in Fig. 2 ausgeführt werden kann.
- Fig. 4 illustriert eine Ausführungsform einer Befehlsfolge, die verwendet werden kann, um eine Test-And-Set- Funktion unter Verwendung des Befehls zur Verzögerung der Erkennung von Interrupts gemäß Fig. 3 durchgeführt werden kann.
- Fig. 5 illustriert eine Ausführungsform einer Befehlsfolge, die verwendet werden kann, um eine Speicheroperanden-Austausschfunktion ("Exchange-Memory-Operand"-Funktion) unter Verwendung des Befehls zur Verzögerung der Erkennung von Interrupts gemäß Fig. 3 durchzuführen.
- Fig. 6 illustriert eine Ausführungsform einer Befehlsfolge, die verwendet werden kann, um eine Funktion zu Erhöhung eines speicherbasierten Zählers ("Increment-Memory- Based-Counter"-Funktion) unter Verwendung des Befehls zur Verzögerung der Erkennung von Interrupts gemäß Fig. 3 durchzuführen.
- Die Arbeitsweise der bevorzugten Ausführungsformen soll nun beschrieben werden. Bei einer Ausführungsform stellt die vorliegende Erfindung ein effizientes Verfahren und eine Vorrichtung zur Verzögerung der Erkennung von Interrupts während eines kontrollierten Intervalls zur Verfügung, sei es für eine vorgegebene Zeitspanne oder für eine vorgegebene Anzahl von Befehlen, sodass eine Schreibe/Modifiziere/Lies-Folge von Befehlen ohne besondere Befehle, die die Modifikationsoperation beschreiben, durchgeführt werden kann.
- Der Ausdruck "Bus" wird hier benutzt für eine Vielzahl von Signalen, oder Leiterbahnen, die benutzt werden können, um eine oder mehrere Arten von Information zu übertragen, wie etwa Daten, Adressen, Steuerbefehle oder Zustände. Die Ausdrücke "auf Ja setzen" und "auf Nein setzen" werden benutzt, wenn auf eine Veränderung eines Signals, eines Zustandsbits, oder einer ähnlichen Einrichtung in einen logisch wahren bzw. einen logisch falschen Zustand Bezug genommen wird. Wenn ein logisch wahrer Zustand die logische Stufe eins hat, dann hat ein logisch falscher Zustand die logische Stufe null. Und wenn ein logisch wahrer Zustand die logische Stufe null hat, dann hat ein logisch falscher Zustand die logische Stufe eins.
- Es wird auf Fig. 3 Bezug genommen. Bei einer Ausführungsform der vorliegenden Erfindung kann ein Befehl zur Erkennung einer Verzögerung von Interrupts (zum Beispiel IDLY4) benutzt werden, um die Erkennung von Interrupts für eine vorgegebene Anzahl von Befehlen in einem Prozessor zu verzögern, der eine Laden/Speichern-Architektur verwendet, wie etwa der in den Fig. 1 und 2 dargestellte Datenprozessor 10.
- Bei einer Ausführungsform der vorliegenden Erfindung kann eine vorbestimmte Anzahl von unmittelbar aufeinanderfolgenden Befehlen, während derer die Erkennung von Interrupts aufgeschoben wird, ein fester Wert sein (zum Beispiel vier Befehle). Alternative Ausführungsformen der vorliegenden Erfindung können die vorbestimmte Anzahl von Befehlen auf jede positive ganze Zahl festsetzen. Eine Ausführungsform der vorliegenden Erfindung, die in Fig. 3 dargestellt ist, schiebt die Erkennung von Interrupts für vier Befehle, die unmittelbar nach Ausführung des Befehls zur Verzögerung der Erkennung von Interrupts (IDLY4) ausgeführt werden, auf. Daher wird der Befehl zur Verzögerung der Erkennung von Interrupts ausgeführt, während der folgenden vier Befehle werden dann keine Interrupts erkannt und die Erkennung von Interrupts startet wieder mit Beginn der Ausführung des fünften Befehls, der auf den IDLY4-Befehl folgt.
- Man beachte, dass manche Ausführungsformen der vorliegenden Erfindung, die als Teil der Abarbeitung von Ausnahmen ausgeführten Befehle als Teil der vorbestimmten Anzahl aufeinanderfolgender Befehle zählen können, während andere Ausführungsformen der vorliegenden Erfindung, die als Teil der Ausnahmebearbeitung ausgeführten Befehle nicht als Teil der vorbestimmten Anzahl aufeinanderfolgender Befehle zählen.
- Bei einer ersten Ausführungsform der vorliegenden Erfindung wird die Erkennung von Interrupts während einer vorbestimmten Anzahl von Befehlen nach Ausführung des Befehls zur Verzögerung der Erkennung von Interrupts unterbunden oder verzögert. Diese vorbestimmte Anzahl von Befehlen, während derer die Erkennung von Interrupts unterbunden oder verzögert ist, kann auf eine Vielzahl von Weisen festgelegt werden. Beispielsweise kann der Befehl zur Verzögerung der Erkennung von Interrupts selbst ein Feld aufweisen, das die Anzahl von Befehlen definiert, während derer die Erkennung von Interrupts aufgeschoben wird (siehe zum Beispiel das optionale Bestimmungsfeld 70 in Fig. 3). Bei alternativen Ausführungsformen kann ein Steuerregister (zum · Beispiel eines der Register 34 in Fig. 2), das vom Benutzer programmierbar ist, einen Wert enthalten, der die vorbestimmte Anzahl an Befehlen bestimmt, während derer die Erkennung von Interrupts aufgeschoben wird. Alternative Ausführungsformen der vorliegenden Erfindung können jede Art von Verfahren zu Auswahl der vorbestimmten Anzahl von Befehlen anwenden, wie etwa beispielsweise das Liefern einer Befehlszahl über die integrierten Schaltkreisterminals oder über eine maskenprogrammierbare Speichervorrichtung.
- Bei einer Ausführungsform der vorliegenden Erfindung arbeitet die in Fig. 2 illustrierte Schaltung, wenn der Befehl zur Verzögerung der Erkennung von Interrupts die Erkennung von Interrupts für eine vorbestimmte Anzahl aufeinanderfolgender Befehle aufschiebt, folgender Maßen: Der Befehl zu Verzögerung der Erkennung von Interrupts wird durch die Befehls-Pipe 30 von dem Bus 20 empfangen. Die Befehls- Pipe 30 liefert diesen Befehl dann zu gegebener Zeit an die Befehlsdekodierungsschaltung 32. Die Befehlsdekodierungsschaltung 32 liefert dann ein angemessen dekodiertes Signal für den Befehl zu Verzögerung der Erkennung von Interrupts über die Leiterbahnen 56 an die CPU-Steuerschaltung 42. Die CPU-Steuerschaltung 42 benutzt dann die Interrupt- Steuerschaltung 46, um die Erkennung der über Interruptsignale 50 empfangenen Interruptanfragen zu verzögern. Die CPU-Steuerschaltung 42 schiebt die Erkennung von Interruptanfragen für eine vorbestimmte Anzahl von Befehlen auf. Die CPU-Steuerschaltung 42 kann den Zähler/Zeitgeber 48 sowie Informationen, die sie über Signale 58 von der Befehls- Pipe 30 und der Befehlsdekodierungsschaltung 32 erhält, benützen, um zu bestimmen, wie viele Befehle unmittelbar auf die Ausführung des Befehls zur Verzögerung der Erkennung von Interrupts folgend ausgeführt wurden.
- Bei einigen Ausführungsformen der vorliegenden Erfindung, insbesondere bei denjenigen, die eine Pipeline- Prozessorarchitektur verwenden, zählt die CPU- Steuerschaltung 42 nur die Folgebefehle, deren Ausführung vollendet ist oder sie kann jegliche Folgebefehle zählen, für die eine vorbestimmte Stufe während des Einlese-, Dekodierungs- oder Ausführungszyklusses jedes Befehls erreicht ist.
- Anstelle der Verzögerung der Erkennung von Interrupts während einer vorbestimmte Anzahl von Folgebefehlen, können alternative Ausführungsformen der vorliegenden Erfindung eine vorbestimmte Zeitspanne definieren, während derer die Erkennung von Interrupts aufgeschoben wird. Bei diesen alternativen Ausführungsformen, kann ein Zähler oder Zeitgeber (zum Beispiel der Zähler/Zeitgeber 48 in Fig. 2) benutzt werden, um eine vorbestimmte Anzahl von Zeitgeberzyklen zu zählen oder eine vorbestimmte Anzahl von Nanosekunden zu zählen, während derer die Erkennung von Interrupts verzögert wird.
- Bei einer Ausführungsform der vorliegenden Erfindung, benutzt die in Fig. 2 illustrierte CPU-Steuerschaltung 42 den Zähler/Zeitgeber 48, um Nanosekunden oder Zeitgeberzyklen an Stelle der Anzahl von ausgeführten Befehlen zu zählen, wenn der Befehl zu Verzögerung der Erkennung von Interrupts die Erkennung von Interrupts während der Ausführung einer vorbestimmten Anzahl von aufeinander folgenden Zeitgeberzyklen oder Nanosekunden aufschiebt. Auch hier können ein vom Benutzer programmierbarer Mechanismus, wie etwa der Befehl selbst (zum Beispiel durch das optionale Bestimmungsfeld 70 in Fig. 3), ein Registerwert oder ein anderes programmierbares Verfahren benutzt werden, um dem Zähler/Zeitgeber 48 die Anzahl der Nanosekunden oder Zeitgeberzyklen zur Bestimmung der Länge des Intervalls zu liefern, während dessen Interrupts nach der Ausführung des Befehls zur Verzögerung der Erkennung von Interrupts nicht erkannt werden.
- Bei einer Ausführungsform der vorliegenden Erfindung, beginnt die CPU-Steuerschaltung 42 damit, das Intervall der Nichterkennung von Interrupts zu zählen, nachdem der Befehl zur Verzögerung der Erkennung von Interrupts ausgeführt wurde. Bei anderen Ausführungsformen der vorliegenden Erfindung jedoch kann die CPU-Steuerschaltung 42 zu jedem Zeitpunkt nach Beginn der Dekodierung des Befehls zur Verzögerung der Erkennung von Interrupts mit dem Zählen des Intervalls der Nichterkennung von Interrupts beginnen.
- Bei einigen Ausführungsformen der vorliegenden Erfindung kann dem Befehl zur Verzögerung der Erkennung von Interrupts jede Art von Befehl folgen. In manchen Situationen kann jedoch die Ausgabe eines Befehls, der eine erhebliche Anzahl von Zyklen benötigt, wie etwa ein Divisionsbefehl, im Rahmen der Befehlsfolge, die auf einen Befehl zu Verzögerung der Erkennung von Interrupts folgt, zu einer allzu langen Interruptlatenz führen. Um diesem Problem zu begegnen, beschränken einige Ausführungsformen der vorliegenden Erfindung die Art der Befehle, die unmittelbar auf einen Befehl zu Verzögerung der Erkennung von Interrupts folgen dürfen. Unter Bezugnahme auf Fig. 3 können beispielsweise die vier Befehle, die unmittelbar auf den Befehl zu Verzögerung der Erkennung von Interrupts folgen, auf arithmetische oder logische Einzelzyklusbefehle, Verzweigungsbefehle sowie Lade- oder Speicherbefehle beschränkt werden. Der Zweck der Beschränkung der Befehle, während derer die Erkennung von Interrupts verzögert wird, ist es, die maximale Latenzzeit für Interrupts zu reduzieren. Alternative Ausführungsformen der vorliegenden Erfindung können die Befehlsarten, während derer die Erkennung von Interrupts verzögert wird, limitieren oder dies unterlassen und damit die Befehlsarten, die einem Befehl zu Verzögerung der Erkennung von Interrupts folgen können, beschränken oder nicht. Der spezielle Satz von Befehlen, die einem Befehl zu Verzögerung der Erkennung von Interrupts folgen dürfen, kann für unterschiedliche Prozessoren 10 variieren und in einigen Ausführungsformen vom Benutzer programmierbar sein.
- Alternative Ausführungsformen der vorliegenden Erfindung können von einer Ausnahmenbehandlung in unterschiedlicher Weise beeinflusst werden. Bei der in Fig. 3 illustrierten Ausführungsform der vorliegenden Erfindung werden Ausnahmen auch noch während des Intervalls detektiert, in dem Interrupts nicht erkannt werden. Alternative Ausführungsformen der vorliegenden Erfindung können jedoch Ausnahmen, die während des Intervalls, in dem die Erkennung von Interrupts aufgeschoben ist, zwar detektieren, jedoch nicht abarbeiten. Bei wieder anderen Ausführungsformen können Ausnahmen während des Intervalls, in dem die Erkennung von Interrupts aufgeschoben ist, nicht einmal detektiert und daher auch nicht abgearbeitet werden. Außerdem können bei alternativen Ausführungsformen der vorliegenden Erfindung unterschiedliche Arten von Ausnahmen auch unterschiedlich behandelt werden. Beispielsweise erlaubt der in Fig. 3 illustrierte Befehl zu Verzögerung der Erkennung von Interrupts während des Intervalls, in dem die Erkennung von Interrupts (IDLY4) aufgeschoben ist, das Auftreten von "non- trace"- und "non-breakpoint"-Ausnahmen, um das Bedingungsbit 38 zurück zu setzen (siehe Fig. 2), während "trace"- und "breakpoint"-Ausnahmen das Bedingungsbit 38 nicht beeinflussen.
- Bei einigen Ausführungsformen der vorliegenden Erfindung kann ein Mechanismus zur erneuten Zulassung von Interrupts während des der Ausführung eines Befehl zu Verzögerung der Erkennung von Interrupts folgenden Intervalls der Nichterkennung von Interrupts benutzt werden. Beispielsweise kann der Zähler/Zeitgeber 48 benutzt werden, um zu registrieren, dass ein Interrupt einer bestimmten Stufe seit einer vorgegebenen Zeit während des Intervalls in Wartestellung ist und daher erkannt werden muss, bevor das Intervall der Nichterkennung von Interrupts abgelaufen ist. Bei einigen Ausführungsformen der vorliegenden Erfindung können daher Interrupts unter Verwendung der Programmeingriffsschaltung 47 erneut zugelassen werden, während die Abarbeitung noch immer in dem Intervall der Nichterkennung von Interrupts verharrt (das heißt wie durch die vorbestimmte Anzahl von Befehlen, Zeitgeberzyklen oder Nanosekunden definiert). Wird die Erkennung von Interrupts erneut zugelassen, kann der aktuelle Befehl mittendrin unterbrochen oder die Fortsetzung und Vollendung seiner Abarbeitung gestattet werden, bevor Interrupts wieder erkannt werden.
- Einige Ausführungsformen der vorliegenden Erfindung können die Erkennung aller Interrupts verzögern, während andere Ausführungsformen der vorliegenden Erfindung nur die Erkennung solcher Interrupts verzögern, die unterhalb einer vorgegebenen Interruptstufe liegen. Die vorgegebene Interruptstufe kann auf jede beliebige Weise bestimmt werden. Beispielsweise kann die vorgegebene Interruptstufe spezifiziert werden als Teil des Formats des Befehls zu Verzögerung der Erkennung von Interrupts selbst, durch Speichern eines Wertes in einem vom Benutzer programmierbaren Register, durch Lieferung eines Wertes durch integrierte Schaltungsterminals oder durch Speichern eines Wertes in einer maskenprogrammierbaren Speicherschaltung.
- Bei einer alternativen Ausführungsform gestattet es die vorliegende Erfindung einem ersten Befehl, die Art und Weise zu ändern, in der ein nachfolgender Befehl eine Zustands-Flag beeinflusst. Bei einer Ausführungsform der vorliegenden Erfindung kann der in Fig. 3 illustrierte Befehl zu Verzögerung der Erkennung von Interrupts (IDLY4) die Art und Weise ändern, in der ein oder mehrere Folgebefehle das Bedingungsbit 38 in Fig. 2 beeinflussen. Bezug nehmend auf Fig. 4-6 setzt beispielsweise der IDLY4-Befehl das Bedingungsbit 38 auf Ja. Wenn dann eine Ausnahme während irgend eines der vier Folgebefehle auftritt, setzt derjenige Befehl, der gerade abgearbeitet wird, wenn die Ausnahme auftritt, das Bedingungsbit 38 auf "Nein". Daher kann nun ein Befehl der normalerweise so definiert ist, dass er das Bedingungsbit 38 niemals zurück oder auf Nein setzt (zum Beispiel ein Ladebefehl), das Bedingungsbit 38 zurück setzen, falls eine Ausnahme während der Abarbeitung des Ladebefehls auftritt, wenn der Ladebefehl einer der vier Folgebefehle nach dem IDLY4-Befehl ist. Der IDLY4-Befehl kann daher die Art und Weise beeinflussen, in der ein Folgebefehl (zum Beispiel ein Ladebefehl) das Bedingungsbit 38 beeinflusst. Ein Zweck, zu dem das Bedingungsbit 38 auf diese Weise verwendet werden kann, ist um anzuzeigen, dass die vier Folgebefehle nicht in einer unteilbaren Weise abgearbeitet wurden und dass eine Ausnahmen-Abarbeitung eine gemeinsame Ressource beeinflusst haben könnte.
- Man beachte, dass die in Fig. 4-6 illustrierten Befehlsfolgen alle eine Prüfung des Bedingungsbits 38 enthalten, um zu bestimmen, ob während der vier Befehle der Nichtbearbeitung von Ausnahmen nach dem IDLY4-Befehl (zum Beispiel Verzweigung nach SEQUENCE_FAILED, falls das Bedingungsbit 38 gleich null ist) eine Ausnahme empfangen und abgearbeitet wurde. Wurde nach dem IDLY4-Befehl eine Ausnahme empfangen und abgearbeitet, folgt der "BF"-Befehl der Verzweigung zu einer Subroutine von Befehlen, die mit SEQUENCE_FAILED bezeichnet ist und benutzt werden kann, um anzuzeigen, dass die vier Befehle nach dem IDLY4-Befehl nicht in einer unteilbaren Weise abgearbeitet wurden und dass die Abarbeitung der Ausnahme eine gemeinsame Ressource, wie etwa einen Semaphor beeinflusst haben könnte.
- Fig. 4 illustriert eine Serie von Befehlen, die den in Fig. 3 illustrierten Befehl zu Verzögerung der Erkennung von Interrupts (IDLY4) benutzen, um eine Test-And-Set- Funktion durchzuführen. Die in Fig. 4 illustrierte Test- And-Set-Funktion testet einen Speicheroperanden, um festzustellen, ob der aktuelle Wert des Speicheroperanden überall null ist und ändert den Wert des Speicheroperanden überall auf eins (das heißt alle Bits des Speicheroperanden werden gesetzt). Daher kann die in Fig. 4 illustrierte Serie von Befehlen benutzt werden, um eine Test-And-Set-Funktion auf einem im Speicher gespeicherten Semaphorwert durchzuführen. Der Befehl zu Verzögerung der Erkennung von Interrupts (ID- LY4) kann benutzt werden, um sicherzustellen, dass die Test-And-Set-Funktion in ungeteilter Weise durchgeführt wird, sodass der Semaphorwert nicht von einer anderen Task verfälscht wird, die die in Fig. 4 illustrierte Softwareroutine zwischen der Test-Operation und der Set-Operation unterbricht.
- Man beachte, dass die in Fig. 4 illustrierte Befehlsfolge tatsächlich die Set-Operation vor Durchführung der Test-Operation durchführt. Dies ist möglich, weil der ID- LY4-Befehl benutzt werden kann, um sicherzustellen, dass sowohl die Set- als auch die Test-Operation vollständig ausgeführt werden, bevor es einem anderen Task gestattet wird, zu unterbrechen und weil der Semaphorwert in diesem Fall nur zwei mögliche Werte annehmen kann, nämlich überall null oder überall eins. Wenn daher der Semaphorwert ursprünglich überall eins war, ändert der Schritt des Setzens des Semaphors den Semaphorwert nicht. Man beachte, dass alternative Befehlsfolgen, die eine Test-And-Set-Funktion durchführen, statt dessen die Test-Operation vor der Set- Operation durchführen können.
- Fig. 5 illustriert eine Serie von Befehlen, die den in Fig. 3 illustrierten Befehl zu Verzögerung der Erkennung von Interrupts (IDLY4) benutzen, um eine "exchange-memoryoperand-with-register-operand"-Funktion, also eine Funktion zum Austausch eines Speicheroperanden durch einen Registeroperanden, durchzuführen. Die in Fig. 5 illustrierte Funktion zum Austausch eines Speicheroperanden durch einen Registeroperanden bewegt effektiv mit einen "EXCHANGE VALUE" bezeichneten Wert von seiner ursprünglichen Position im Speicher in das Register R1 und dann an die Position des Semaphorwertes. Man beachte, dass auf die Position des Semaphorwertes ein mit "SEMAPHOR" bezeichneter Pointer zeigt. Der Semaphorwert wird von seiner ursprünglichen Position im Speicher in das Register R3 bewegt. In der speziellen, in Fig. 5 illustrierten Befehlsfolge führt die abschließende "OR"-Anweisung keine andere nützliche Operation durch, als die Folge von vier Befehlen nach dem IDLY4-Befehl abzuschließen und so den Aufschub der Erkennung von Interrupts zu unterbrechen. Daher hat die abschließende "OR"-Funktion denselben Effekt, wie ein "no-operation"-Befehl (NOP) und kann durch verschiedene Befehle ersetzt werden.
- Fig. 6 illustriert eine Serie von Befehlen, die den in Fig. 3 illustrierten Befehl zu Verzögerung der Erkennung von Interrupts (IDLY4) benutzt, um eine "increment-memorybased-counter"-Funktion, also eine Funktion zur Erhöhung eines speicherbasierten Zählers, durchzuführen. Die in Fig. 6 illustrierte Funktion zur Erhöhung eines speicherbasierten Zählers bewegt effektiv den Semaphorwert von seiner ursprünglichen Position im Speicher in das Register R3 und erhöht dann den Semaphorwert durch Addition von eins. Man beachte, dass auf die Position des Semaphorwertes ein mit "SEMAPHOR" bezeichneter Pointer zeigt. Der erhöhte Semaphorwert wird dann von dem Register R3 zurück an die ursprüngliche Position im Speicher bewegt.
- Während die vorliegende Erfindung unter Bezugnahme auf spezielle Ausführungsformen illustriert und beschrieben wurde, sind für den Fachmann weitere Modifikationen und Verbesserungen ersichtlich. Es versteht sich daher, dass diese Erfindung nicht auf die im Besonderen dargestellten Formen beschränkt ist.
Claims (10)
1. Verfahren zur Beeinflussung der Abarbeitung von
Folgebefehlen in einem Datenprozessor (10), umfassend die
Verfahrensschritte:
Empfangen eines vorgegebenen Befehls; und
Dekodieren des vorgegebenen Befehls,
wobei das Verfahren weiter gekennzeichnet ist durch die
Schritte:
als Antwort auf die Dekodierung ein Verzögern der
Abarbeitung einer Ausnahme durch den Datenprozessor, die
der Datenprozessor entweder während einer vorgegebene
Anzahl von Befehlen im Anschluss an die Dekodierung des
vorgegebenen Befehls oder während eines vorgegebenen
Zeitintervalls im Anschluss an die Dekodierung des vorgegebenen
Befehls antrifft; und
Ausführen des vorgegebenen Befehls vor der Verzögerung
der Abarbeitung der Ausnahme.
2. Verfahren nach Anspruch 1, wobei der vorgegebene
Befehl mit IDLY4 bezeichnet ist.
3. Verfahren nach Anspruch 1 oder 2, wobei der Schritt
des Verzögerns der Abarbeitung einer Ausnahme weiter den
folgenden Schritt umfasst:
Verzögern der Abarbeitung einer Ausnahme bis zur
Vollendung der Abarbeitung von vier Folgebefehlen, die von
dem Datenprozessor im Anschluss an die Dekodierung des
vorgegebenen Befehls ausgeführt werden.
4. Verfahren nach Anspruch 1, wobei der Schritt des
Verzögerns der Abarbeitung einer Ausnahme weiter den Schritt
umfasst:
Verwendung eines Zählers als Zeitgeber (48) zur
Bestimmung des vorgegebenen Zeitintervalls im Anschluss an
die Dekodierung des vorgegebenen Befehls.
5. Verfahren nach Anspruch 1, 2, 3 oder 4, wobei der
Schritt der Verzögerung der Abarbeitung einer Ausnahme
durch den Datenprozessor weiter den Schritt der Verzögerung
der Abarbeitung als Antwort lediglich auf
Interruptbedingungs-Ausnahmen umfasst.
6. Datenprozessor (10), umfassend:
eine Befehlsausführungsschaltung (12), die einen
vorgegebenen Satz von Befehlen ausführt und weiter dadurch
gekennzeichnet ist, dass der vorgegebene Satz von Befehlen
wenigstens einen Befehl enthält, der, wenn er von der
Befehlsausführungsschaltung ausgeführt wird, den
Datenprozessor veranlasst, die Erkennung von Interruptbedingungen, die
mit dem Betrieb des Datenprozessors zusammenhängen, während
einer vorgegebenen Anzahl von Folgebefehlen im Anschluss an
die Ausführung des wenigstens einen Befehls verzögert.
7. Datenprozessor nach Anspruch 6, wobei die vorgegebene
Anzahl von Folgebefehlen, während derer der Datenprozessor
die Erkennung einer Interruptbedingung verzögert, von einem
Benutzer des Datenprozessor programmierbar ist.
8. Datenprozessor nach Anspruch 6 oder 7, wobei die
vorbestimmte Anzahl von Folgebefehlen vier ist.
9. Datenprozessor nach Anspruch 6, 7 oder 8, wobei die
Befehlsausführungsschaltung ein Registerbit (38) umfasst,
das durch die Ausführung des wenigstens einen Befehls
gesetzt wird.
10. Datenprozessor nach Anspruch 6, 7, 8 oder 9, wobei der
wenigstens eine Befehl mit IDLY4 bezeichnet ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/963,321 US6000029A (en) | 1997-11-03 | 1997-11-03 | Method and apparatus for affecting subsequent instruction processing in a data processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69810064D1 DE69810064D1 (de) | 2003-01-23 |
DE69810064T2 true DE69810064T2 (de) | 2003-04-17 |
Family
ID=25507071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69810064T Expired - Fee Related DE69810064T2 (de) | 1997-11-03 | 1998-10-26 | Verfahren und Anordnung zur Veränderung der Durchführung eines Nachfolgebefehls in einem Dataprozessor |
Country Status (9)
Country | Link |
---|---|
US (2) | US6000029A (de) |
EP (1) | EP0913767B1 (de) |
JP (2) | JP4883824B2 (de) |
KR (1) | KR100588790B1 (de) |
CN (1) | CN1098487C (de) |
DE (1) | DE69810064T2 (de) |
HK (1) | HK1020218A1 (de) |
SG (2) | SG71861A1 (de) |
TW (1) | TW494363B (de) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805724B1 (en) * | 1998-05-27 | 2010-09-28 | Arc International I.P., Inc. | Apparatus, method and computer program for dynamic slip control in real-time scheduling |
JP2000330785A (ja) * | 1999-05-18 | 2000-11-30 | Sharp Corp | 実時間プロセッサおよび命令実行方法 |
US6618800B1 (en) * | 2000-01-18 | 2003-09-09 | Systemonic Ag | Procedure and processor arrangement for parallel data processing |
GB2369464B (en) | 2000-11-27 | 2005-01-05 | Advanced Risc Mach Ltd | A data processing apparatus and method for saving return state |
US6857036B2 (en) * | 2001-07-17 | 2005-02-15 | Hewlett Packard Development Company, L.P. | Hardware method for implementing atomic semaphore operations using code macros |
US20030154347A1 (en) * | 2002-02-12 | 2003-08-14 | Wei Ma | Methods and apparatus for reducing processor power consumption |
US7539876B2 (en) | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7532722B2 (en) | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7844053B2 (en) | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7529367B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
US7502943B2 (en) | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7925891B2 (en) | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7542566B2 (en) | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7529368B2 (en) | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US7321910B2 (en) | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7519833B2 (en) | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US7392400B2 (en) | 2003-04-18 | 2008-06-24 | Via Technologies, Inc. | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
US7900055B2 (en) | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7536560B2 (en) | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
CN100495324C (zh) * | 2006-07-27 | 2009-06-03 | 中国科学院计算技术研究所 | 复杂指令集体系结构中的深度优先异常处理方法 |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
CN110535790B (zh) * | 2019-08-23 | 2022-03-18 | 天津芯海创科技有限公司 | 基于semaphore的交换芯片异常报文处理方法 |
US12039363B2 (en) * | 2022-06-29 | 2024-07-16 | Red Hat, Inc. | Synchronizing concurrent tasks using interrupt deferral instructions |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5440049A (en) * | 1977-09-06 | 1979-03-28 | Toshiba Corp | Information process system |
US4236204A (en) | 1978-03-13 | 1980-11-25 | Motorola, Inc. | Instruction set modifier register |
US4435766A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Nested resource control using locking and unlocking routines with use counter for plural processes |
CN1004234B (zh) * | 1985-04-01 | 1989-05-17 | 坦德姆计算机有限公司 | 增强的中央处理器(cpu)微转移结构 |
US4764893A (en) * | 1985-04-26 | 1988-08-16 | International Business Machines Corporation | Noise-immune interrupt level sharing |
CN1009399B (zh) * | 1987-06-02 | 1990-08-29 | 德国Itt工业股份公司 | 中央处理器 |
US5499356A (en) * | 1989-12-29 | 1996-03-12 | Cray Research, Inc. | Method and apparatus for a multiprocessor resource lockout instruction |
JPH03210649A (ja) * | 1990-01-12 | 1991-09-13 | Fujitsu Ltd | マイクロコンピュータおよびそのバスサイクル制御方法 |
JP2665813B2 (ja) * | 1990-02-23 | 1997-10-22 | 三菱電機株式会社 | 記憶制御装置 |
JPH05508496A (ja) * | 1990-06-11 | 1993-11-25 | クレイ、リサーチ、インコーポレーテッド | 命令をロードおよびフラグする方法および装置 |
JPH0467229A (ja) * | 1990-07-06 | 1992-03-03 | Hitachi Ltd | マイクロプロセッサおよびメモリシステム |
JPH0474229A (ja) * | 1990-07-17 | 1992-03-09 | Toshiba Corp | 情報処理装置 |
JPH04306735A (ja) * | 1991-04-04 | 1992-10-29 | Toshiba Corp | 非同期割込み禁止機構 |
US5301312A (en) * | 1991-08-21 | 1994-04-05 | International Business Machines Corporation | Method and system for utilizing benign fault occurrence to measure interrupt-blocking times |
US5283870A (en) * | 1991-10-04 | 1994-02-01 | Bull Hn Information Systems Inc. | Method and apparatus for avoiding processor deadly embrace in a multiprocessor system |
JPH05143322A (ja) * | 1991-11-15 | 1993-06-11 | Sanyo Electric Co Ltd | マイクロコンピユータ |
DE69326705T2 (de) * | 1992-02-14 | 2000-04-27 | Motorola, Inc. | Verfahren und Anordnung zur Feststellung der Befehlsablauffolge in einem Datenverarbeitungssystem |
US5590380A (en) * | 1992-04-22 | 1996-12-31 | Kabushiki Kaisha Toshiba | Multiprocessor system with processor arbitration and priority level setting by the selected processor |
JPH06110846A (ja) * | 1992-09-25 | 1994-04-22 | Fujitsu Ltd | 排他制御方式 |
US5768619A (en) * | 1996-02-16 | 1998-06-16 | Advanced Micro Devices, Inc. | Method and system for enabling and disabling functions in a peripheral device for a processor system |
-
1997
- 1997-11-03 US US08/963,321 patent/US6000029A/en not_active Expired - Lifetime
-
1998
- 1998-10-14 TW TW087117065A patent/TW494363B/zh not_active IP Right Cessation
- 1998-10-26 EP EP98120220A patent/EP0913767B1/de not_active Expired - Lifetime
- 1998-10-26 DE DE69810064T patent/DE69810064T2/de not_active Expired - Fee Related
- 1998-10-30 SG SG1998004357A patent/SG71861A1/en unknown
- 1998-10-30 JP JP31026898A patent/JP4883824B2/ja not_active Expired - Fee Related
- 1998-10-30 SG SG200106112A patent/SG101487A1/en unknown
- 1998-11-02 CN CN98121455A patent/CN1098487C/zh not_active Expired - Lifetime
- 1998-11-03 KR KR1019980046900A patent/KR100588790B1/ko not_active IP Right Cessation
-
1999
- 1999-10-22 US US09/425,469 patent/US6237089B1/en not_active Expired - Lifetime
- 1999-11-12 HK HK99105223A patent/HK1020218A1/xx not_active IP Right Cessation
-
2009
- 2009-02-18 JP JP2009035190A patent/JP4750865B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR100588790B1 (ko) | 2006-10-04 |
JP4750865B2 (ja) | 2011-08-17 |
JP4883824B2 (ja) | 2012-02-22 |
EP0913767B1 (de) | 2002-12-11 |
SG71861A1 (en) | 2000-04-18 |
JP2009104675A (ja) | 2009-05-14 |
TW494363B (en) | 2002-07-11 |
US6237089B1 (en) | 2001-05-22 |
SG101487A1 (en) | 2004-01-30 |
KR19990044957A (ko) | 1999-06-25 |
EP0913767A3 (de) | 2000-01-26 |
US6000029A (en) | 1999-12-07 |
DE69810064D1 (de) | 2003-01-23 |
CN1098487C (zh) | 2003-01-08 |
EP0913767A2 (de) | 1999-05-06 |
JPH11219302A (ja) | 1999-08-10 |
CN1216375A (zh) | 1999-05-12 |
HK1020218A1 (en) | 2000-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69810064T2 (de) | Verfahren und Anordnung zur Veränderung der Durchführung eines Nachfolgebefehls in einem Dataprozessor | |
DE68927218T2 (de) | Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE3689394T2 (de) | Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor. | |
DE3650413T2 (de) | Verfahren und Vorrichtung zur Annulierung eines Befehls. | |
DE69701141T2 (de) | Multithreaded mikroprozessor ausgestaltet zur ausführung von unterbrechungsverarbeitungsroutinen als threads | |
DE69129565T2 (de) | Hochleistungsfähiger Emulator mit Pipelining | |
DE3686789T2 (de) | Vektorverarbeitungsgeraet. | |
DE3751164T2 (de) | Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten. | |
DE3851033T2 (de) | Datenprozessor mit Entwicklungsunterstützungsmerkmalen. | |
DE3750306T2 (de) | System zum Gewährleisten der logischen Unversehrtheit von Daten. | |
DE3789345T2 (de) | Erweiterte Gleitkommaoperationen zur Unterstützung der Emulation von Quellbefehlsausführungen. | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE69027471T2 (de) | Fehlersuchperipherie für Mikrorechner, Mikroprozessoren und Kernprozessor beinhaltende integrierte Schaltungen und Vorrichtung die diese Fehlersuchperipherie verwendet | |
DE69032635T2 (de) | Verfahren und Vorrichtung zur Erkennung von Betriebsmittelkonflikten in einer Pipeline-Verarbeitungseinheit | |
DE69028138T2 (de) | Mechanismus zur präzisen Behandlung von Ausnahmebedingungen in einem Prozessor mit gepaarten Befehlen | |
DE60217157T2 (de) | Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts | |
DE69621405T2 (de) | Verarbeitungssystem, prozessor, befehlsstromspeicher und kompilierer | |
DE69322283T2 (de) | Hoch schnelligkeit speicher programmierbar steuerung | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE69414592T2 (de) | Ausführung von datenverarbeitungsbefehlen | |
DE10297597T5 (de) | Suspendieren der Ausführung eines Threads in einem Mehrfach-Thread-Prozessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: FREESCALE SEMICONDUCTOR, INC., AUSTIN, TEX., US |
|
8339 | Ceased/non-payment of the annual fee |