DE10228778B4 - Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros - Google Patents

Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros Download PDF

Info

Publication number
DE10228778B4
DE10228778B4 DE10228778A DE10228778A DE10228778B4 DE 10228778 B4 DE10228778 B4 DE 10228778B4 DE 10228778 A DE10228778 A DE 10228778A DE 10228778 A DE10228778 A DE 10228778A DE 10228778 B4 DE10228778 B4 DE 10228778B4
Authority
DE
Germany
Prior art keywords
resource
semaphore
interrupt
interruption
current process
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
Application number
DE10228778A
Other languages
English (en)
Other versions
DE10228778A1 (de
Inventor
Gregg B. Fort Collins Lesartre
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10228778A1 publication Critical patent/DE10228778A1/de
Application granted granted Critical
Publication of DE10228778B4 publication Critical patent/DE10228778B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

Verfahren zum Steuern einer Unterbrechung eines Computerprozesses, der eine Systemressource (10, 12, 14) nutzt, wobei das Verfahren folgende Schritte aufweist:
Erfassen einer Nutzung einer Ressource (10, 12, 14) durch einen aktuellen Prozeß durch ein Erfassen, ob ein Semaphor durch den Prozeß für die Ressource gesperrt worden ist, wobei das Semaphor einen Zugriff auf die Ressource steuert, so daß nur ein Prozeß zu einem Zeitpunkt einen Zugriff auf die Ressource hat;
wobei der aktuelle Prozeß eine Unterbrechung (40, 42, 44) des aktuellen Prozesses von einem zweiten Prozeß durch ein Empfangen eines Signals von dem zweiten Prozeß empfängt, der einen Zugriff auf die Ressource anfordert;
wobei der aktuelle Prozeß die Unterbrechung (40, 42, 44) verzögert, um es dem aktuellen Prozeß zu ermöglichen, ein Nutzen der Ressource (10, 12, 14), fortzusetzen; und
wobei der aktuelle Prozeß die Unterbrechung (40, 42, 44) nach einem Verzögern der Unterbrechung annimmt, und...

Description

  • Die vorliegende Erfindung bezieht sich allgemein auf eine Computerchiparchitektur. Im einzelnen bezieht sie sich auf ein Computerhardware-Verfahren und -System zum Bearbeiten von Semaphoroperationen.
  • Auf dem Gebiet der Computerchiparchitektur ist es wünschenswert, Systemressourcen effizient zu nutzen. Eine Möglichkeit, die Effizienz zu verbessern, besteht darin, eine gemeinsame Nutzung von Ressourcen, beispielsweise Verarbeitungs- und Speicherressourcen, durch verschiedene Operationen zu bewerkstelligen. Bei einem System, das mehrere Prozessoren oder mehrere Prozesse aufweist, werden Semaphoroperationen verwendet, um Ressourcen zu maximieren. Ein Semaphor ist eine Erlaubnis, eine Systemressource, beispielsweise einen Speicherplatz, zu verwenden, der durch einen Prozeß, der durch das Computersystem durchgeführt wird, „gesperrt" sein kann. Durch Sperren des Semaphors verfügt der Prozeß über einen Zugriff auf die Systemressourcen, solange er die Steuerung des Semaphors behält. Wenn ein Prozeß mit dem Verwenden einer Ressource fertig ist, gibt er das Semaphor frei, so daß ein anderer Prozeß die Ressource nutzen kann. Die Verwendung eines Semaphors gewährleistet, daß andere Systemprozesse nicht versuchen, auf die selbe Systemressource zuzugreifen, während sie durch einen anderen Prozeß genutzt wird.
  • Eine Semaphoroperation liest, modifiziert und beschreibt einen bestimmten Speicherplatz während einer einzigen atomischen Operation. Beispielhafte Semaphoroperationen umfassen Laden und Löschen, Abrufen und Inkrementieren, Abrufen und Dekrementieren sowie Vergleichen und Umlagern. Diese Semaphoroperationen können in Hardware implementiert sein, aber Schaltungsaufbauten für andere Operationen als Laden und Löschen sind kompliziert. Eine Implementierung von Semaphoroperationen implementiert lediglich eine Laden-Und-Löschen-Operation in Hardware, um das Semaphor zu erfassen, und implementiert die anderen Operationen in Software-Makros, die um die Laden-Und-Löschen-Operation herumgebaut sind. Dieses System wird beispielsweise bei Präzisionsarchitektur-Reduzierter-Anweisungssatz-Rechen-Architektur (PA-RISC = PA-RISC-Architektur) verwendet. Ein Prozeß, der in dem System läuft, führt daraufhin seine Operation durch, wobei er eine Sequenz von Anweisungen verwendet, und schreibt das Ergebnis in den Platz des Semaphors, um das Semaphor freizugeben. Die Laden-Und-Löschen-Operation schreibt ihren Wert auf Null, was angibt, daß das Semaphor gerade genutzt wird.
  • Es entsteht ein Problem, wenn die Semaphoroperationen durch einen Systeminterrupt unterbrochen werden. Ein Prozeß kann während seiner Durchführung bzw. Operation jederzeit unterbrochen werden. Dies schafft ein Problem, wenn der Prozeß unterbrochen wird, während er ein Semaphor gesperrt hat. Der Prozeß kann über einen langen Zeitraum blockieren oder „einzuschlafen" scheinen, wobei das Semaphor in dem Prozeß lahmgelegt wird. Ein Semaphor kann ein beträchtlicher Ressourcenengpaß in dem System sein, und der Interrupt kann beträchtliche Probleme für andere Prozesse verursachen, die auf ein Semaphor zugreifen möchten. Eine sorgfältige Codierung ist eine Möglichkeit, zu versuchen, das Interruptproblem zu lösen, aber es erfordert ein beträchtliches Maß an Zeit und geht nicht auf außerplanmäßige, asynchrone Interrupte ein. Synchrone Interrupte sind jene Interrupte, von denen man erwartet, daß sie zu bestimmten geplanten Zeiten bezüglich einer Codeausführung auftreten. Externe, oder asynchrone, Interrupte oder Traps, beispielsweise Eingangs-/Ausgangs-Treiber-Interrupte (I-/O-Treiber-Interrupte) stellen größere Probleme dar. In manchen Fällen ist es möglich, daß asynchrone Interrupte eine Semaphoroperation unterbrechen und Systemressourcen lahmlegen. Was benötigt wird, ist ein besseres Verfahren und System zum Verarbeiten von Semaphoroperationen.
  • US 5,613,129 beschreibt eine Mechanismus zur effektiven Handhabung von Interrupts. Danach wird ein anliegender Interrupt nach Ablauf einer Verzögerung bedient, wobei die Verzögerungszeit abhängig von einer Auslastung des Systems ist.
  • EP 0 564 256 A2 beschreibt ein Verfahren, das es erlaubt, einen Prozess mit aktivierten Interrupts laufen zu lassen. Der Prozess wird mit einem „Lock" ausgestattet, das eine Unterbrechung des Prozesses verhindert. Jeder während der Ausführung des Prozesses generierter Interrupt wird von einer Warteschleifenlogik behandelt, wenn er sich auf die gleiche Ressource wie der Prozess bezieht. Nach Beendigung des Prozesses überprüft das System die Verzögerungsschleife, um festzustellen, ob verzögerte Interrupts existieren. Wenn verzögerte Interrupts existieren, werden diese abgearbeitet und anschließend wird das „Lock" freigegeben.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein effizienteres Verfahren und ein effizienteres System zum Steuern einer Unterbrechung eines Computerprozesses bzw. zum Handhaben von Unterbrechungen zu schaffen.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1, ein Verfahren gemäß Anspruch 11 sowie ein System gemäß Anspruch 15 gelöst.
  • Es wird ein Verfahren zum Handhaben von Unterbrechungen einer Semaphoroperation, beispielsweise von asynchronen Interrupten oder Kohärenzanforderungen, offenbart. Das Verfahren bestimmt, ob ein Prozeß, der die Unterbrechung empfängt, ein Semaphor für eine Systemressource aufweist. Falls der Prozeß ein Semaphor gesperrt hat und der Prozeß eine Unterbrechung empfängt, protokolliert das Verfahren die Unterbrechung und verzögert ein Annehmen der Unterbrechung, bis der Prozeß, der die Ressource derzeit nutzt, abgeschlossen und das Semaphor freigegeben ist. Das Verfahren kann in einem System implementiert sein, das einen Zugriff von Prozessen auf Ressourcen unter Verwendung von Semaphoren steuert, die die Ressourcen sperren, während sie genutzt werden. Das Verfahren bestimmt, ob eine Ressource derzeit genutzt wird, indem es eine Laden-Und-Löschen-Operation erfaßt, was darauf hinweist, daß ein Semaphor die Ressource gesperrt hat. Das Verfahren verzögert eine Annahme der Unterbrechung, bis entweder ein Verzweigungsbefehl ausgeführt wird, ein Speicherbefehl ausgeführt wird, bis sich eine festgelegte Anzahl von Anweisungen zurückzieht oder bis eine festgelegte Anzahl von Taktzyklen durchlaufen werden.
  • Es wird ferner ein Computersystem offenbart, das Ressourcen und Prozesse, die auf die Ressourcen zugreifen, aufweist. Ein Zugriff von Prozessen auf die Ressourcen wird durch ei ne Semaphoroperation gesteuert, durch die einer der Prozesse das Semaphor zu einem bestimmten Zeitpunkt aufweist und das Semaphor seinen Inhaber berechtigt, auf die Ressource zuzugreifen. Semaphorunterbrechungen, beispielsweise asynchrone Interrupte oder Kohärenzanforderungen, werden durch die Prozesse empfangen. Falls ein Prozeß derzeit eine Ressource nutzt, so protokolliert dieser Prozeß die Unterbrechung und verzögert ein Annehmen der Unterbrechung, bis der Prozeß seine Operation abschließt, falls möglich. Bei einem Ausführungsbeispiel wird die Unterbrechung verzögert, bis entweder ein Verzweigungsbefehl ausgeführt wird, ein Speicherbefehl ausgeführt wird, bis sich eine festgelegte Anzahl von Anweisungen zurückzieht oder eine festgelegte Anzahl von Taktzyklen durchlaufen wird.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines Systems, das Semaphoroperationen verwendet;
  • 2 ein weiteres Blockdiagramm eines Systems, das Semaphoroperationen verwendet;
  • 3 ein Flußdiagramm des Verfahrens zum Implementieren von Semaphoroperationen;
  • 4 ein detaillierteres Flußdiagramm des Verfahrens der 1;
  • 5 ein Flußdiagramm einer Implementierung des Verfahrens;
  • 6 ein Flußdiagramm einer weiteren Implementierung des Verfahrens;
  • 7 ein Blockdiagramm eines Computersystems, in dem das Verfahren implementiert werden kann.
  • 1 zeigt ein Blockdiagramm eines Systems, das Semaphoroperationen verwendet, um auf Systemressourcen zuzugreifen. Bei dem in 1 gezeigten Beispiel weist das System 50 eine Mehrzahl von Ressourcen 10, 12, 14 auf. Hierin wird der Begriff „Ressource" im allgemeinsten Sinn verwendet und bezieht sich auf eine jegliche Ressource, auf die durch eine Mehrzahl von Prozessen oder Prozessoren zugegriffen werden kann. Bei einer Verwendung greifen die Prozesse eventuell immer nur einzeln auf die Ressourcen 10, 12, 14 zu, so daß nicht mehrere Prozessoren gleichzeitig auf dieselbe Ressource 10, 12, 14 zugreifen. Die Ressourcen 10, 12, 14 können beispielsweise knappe Ressourcen, wie beispielsweise Speicher, Busleitungen oder Eingangs-/Ausgangsports, umfassen. Eine Mehrzahl von Prozessoren 240, 242, 244 greift über eine Systeminfrastruktur 30 auf die Ressourcen 10, 12, 14 zu. Obwohl dies nicht in 1 gezeigt ist, können mehrere Prozesse von einem einzelnen Prozessor 240 einen Zugriff auf die Ressourcen 10, 12, 14 suchen. Bei dem in 1 gezeigten Beispiel umfaßt die Infrastruktur 30 einen Bus 30.
  • Semaphore 20, 22, 24 werden verwendet, um einen Zugriff auf die Systemressourcen 10, 12, 14 zu steuern, und werden durch gestrichelte Kästen um die Ressourcen 10, l2, 14 dargestellt. Während ein Semaphor 20 gesperrt ist und seine zugrundeliegende Ressource 10 gerade durch einen Prozeß oder einen Prozessor 240 genutzt wird, kann der Prozessor 240 eine Unterbrechung 40 der Semaphoroperation empfangen. Gemäß seiner Verwendung hierin bezieht sich der Begriff „Unterbrechung" auf ein(en) beliebiges(n) Signal, Code oder Prozeß, das bzw. der in der Lage ist, eine Semaphoroperation zu unterbrechen, und ist insbesondere nicht auf das Konzept eines Interrupts in einem Computersystem beschränkt. Beispielsweise umfaßt eine Unterbrechung 40, 42, 44 einen asynchronen Interrupt 40, 42, 44, der durch einen Prozessor 240, 242, 244 empfangen wird, und eine Kohärenzanforderung, die durch einen Prozessor 240 von einem anderen Prozessor 242 empfangen wird. Ein asynchroner Interrupt 40, 42, 44 bezieht sich auf einen beliebigen Interrupt, der nicht Bestandteil des Codes ist, der gerade durch einen Prozessor 240, 242, 244, dessen Operation unterbrochen wird, ausgeführt wird.
  • Unterbrechungen 40, 42, 44, beispielsweise der in 1 gezeigte asynchrone Interrupt 40, versuchen einen Prozeß oder einen Prozessor 240, der ein Semaphor 20 gesperrt hat und unter Nutzung der Systemressource 10 gerade eine Operation durchführt, umzuleiten. Beispielsweise fordert ein asynchroner Interrupt 40 einen Zugriff auf einen Prozessor 240 an, der eine Systemressource 10 mit einem Semaphor 20 lahmgelegt haben kann, wenn der asynchrone Interrupt 40 empfangen wird.
  • Bei einer Verwendung fordert ein Prozeß oder Prozessor 240, 242, 244 eine Nutzung einer Ressource 10, 12, 14 an. Falls die Ressource 10, 12, 14 zur Verfügung steht, erhält der anfordernde Prozessor 240 das Semaphor 20, 22, 24 für diese Ressource 10, 12, 14. Das Semaphor 20, 22, 24 verhindert, daß andere Systemprozesse auf dieselbe Ressource 10, 12, 14 zugreifen, bis der anfordernde Prozessor 240 mit der Ressource 10, 12, 14 fertig ist und das Semaphor 20, 22, 24 freigegeben wird. Während einer Operation kann ein asynchroner Interrupt 40 einen Zugriff auf den Prozessor 240, der ein Semaphor 20 gesperrt hat, verlangen. Dieses stellt für herkömmliche Systeme ein Problem dar, da die Unterbrechung 40 inmitten eines Verarbeitens der Semaphoroperation auftreten kann, wobei das Semaphor 20 in diesem Fall gesperrt bleiben kann, bis der asynchrone Interrupt 40, 42, 44 freigegeben ist und der Prozessor 240, 242, 244 seine Semaphoroperation wieder aufnimmt und abschließt. Dies verhindert, daß andere Prozessoren 240, 242, 244 die Ressource 10, 12, 14 nutzen, da das Semaphor 20, 22, 24 nicht freigegeben wurde. Während ein Prozessor 240, 242, 244 eine Un terbrechung 40, 42, 44 verarbeitet, wird die Ressource 10, 12, 14 eventuell nicht durch den Prozessor 240, 242, 244 genutzt, sondern die Ressource 10, 12, 14 kann durch das Semaphor 20, 22, 24 lahmgelegt sein, was verhindert, daß andere Prozesse 240, 242, 244 auf die Ressource 10, 12, 14 zugreifen. Das System 50 verhindert derartige Probleme, indem es den Interrupt 40, 42, 44 verzögert, bis das Semaphor 20, 22, 24 freigegeben wird.
  • 2 zeigt ein weiteres Beispiel eines Systems 50, in dem das Verfahren angewendet wird. Bei dem Beispiel der 2 ist die Unterbrechung eine Kohärenzanforderung 46. Eine Kohärenzanforderung 46 bezieht sich auf eine beliebige Anforderung durch einen Prozessor 240, die Verfügbarkeit einer Systemressource 10, 12, 14 zu bestimmen. Bei dem Beispiel der 2 hat der Prozessor A ein Semaphor 20, 22, 24 für eine Systemressource 10, 12, 14 gesperrt. Ein Prozessor B möchte auf dieselbe Ressource 10, 12, 14 zugreifen und sendet eine Kohärenzanforderung 46 an die Infrastruktur 30. Die Kohärenzanforderung 46 bestimmt, ob ein Semaphor 20, 22, 24 gesperrt ist, indem sie die Cacheleitung für das Semaphor 20 wiedererlangt. Bei dem Beispiel der 2 zieht der Prozessor B die Cacheleitung von dem Prozessor A, da der Prozessor A das Semaphor 20 gesperrt hat. Nach einem Wiedererlangen der Cacheleitung wird sich der Prozessor B gewahr, daß der Prozessor A das Semaphor 20, 22, 24 gesperrt hat und daß die Ressource 10, 12, 14 nicht zur Verfügung steht. Wenn der Prozessor A dann die Cacheleitung benötigt, um die Semaphoroperation abzuschließen, muß er die Cacheleitung von dem Prozessor B ziehen. Unter Verwendung des Verfahrens empfängt der Prozessor A die Kohärenzanforderung 46 von dem Prozessor B über die Infrastruktur 30, verzögert jedoch ein Annehmen der Anforderung 46 und ein Bereitstellen der Cacheleitung, bis das Semaphor 20, 22, 24 freigegeben wird. Dadurch spart das System 50 Ressourcen ein, indem es nicht auf die Kohärenzanforderung 46 antworten muß, während die Semaphoroperation stattfindet.
  • 3 zeigt ein Flußdiagramm des Verfahrens 100 zum Verarbeiten von Semaphoroperationen. Das Verfahren 100 kann durch den Prozessor 240, welcher eine Unterbrechung 40, 42, 44, 46 empfängt, in Hardware implementiert sein. Das Verfahren 100 bestimmt 110, ob der Prozessor 240 ein Semaphor gesperrt hat. Bei einem Ausführungsbeispiel wird das Vorliegen eines Semaphors 20 durch Erfassen einer Laden-Und-Löschen-Operation bestimmt, die darauf hindeutet, daß ein Semaphor durch einen Prozeß gesperrt wurde. Während das Semaphor 20 gesperrt ist, verweigert 120 das Verfahren 100 Unterbrechungen 40 der Semaphoroperation, indem es eine Erkennung der Unterbrechung 40 verzögert. Die Unterbrechungen 40 werden nach einer Verzögerungszeit protokolliert und angenommen 130. Die Unterbrechung 40 kann beispielsweise durch Setzen eines Flagbits in einem Register protokolliert werden. Die Verzögerung trägt dazu bei, sicherzustellen, daß die Semaphoroperation abgeschlossen ist und das Semaphor freigegeben wird, bevor die Unterbrechung 40 genommen wird.
  • 4 zeigt ein detaillierteres Flußdiagramm einer Implementierung des in 3 gezeigten Verfahrens 100. Das Verfahren 100 bestimmt 110, ob ein Rückzug einer Laden-Und-Löschen-Operation stattgefunden hat. Wenn eine Laden-Und-Löschen-Operation zurückgetreten ist, tritt das Verfahren 100 in einen Unterbrechungsverzögerungsmodus 120 ein, der Unterbrechungen lange genug verzögert, damit eine Semaphoroperation abgeschlossen werden kann. Bei dem in 4 gezeigten Ausführungsbeispiel veranlaßt das Auftreten einer von vier Informationseinheiten (122, 124, 126, 128), daß das System den Verzögerungsmodus verläßt 130 und Unterbrechungen annimmt. Das Verfahren 100 bestimmt 122, ob eine Verzweigung ausgeführt wird. Verzweigungen sind in der Regel kein Bestandteil des Semaphoroperationscodes, obwohl sie verwendet werden können, um in der Schleife zurückzugehen und die Semaphoroperation erneut zu starten. Das Vorliegen einer Verzweigung weist darauf hin, daß das Verfahren 100 aus der Semaphoroperation ausbrechen kann, indem es den Verzögerungsmodus verläßt 130 und die Unterbrechung annimmt. Das Verfahren 100 bestimmt 124 ferner, ob eine Speicheranweisung ausgeführt wird. Eine Speicheranweisung weist darauf hin, daß ein Semaphormakrocode abgeschlossen wurde, da ein Semaphorcode die allgemeine Form aufweist, die liest, modifiziert und das Ergebnis speichert. Auf das Auftreten einer Speicheroperation hin verläßt 130 das Verfahren 100 den Verzögerungsmodus und nimmt die Unterbrechung an. Das Verfahren 100 bestimmt 126 ferner, ob eine festgelegte Anzahl von Anweisungen verarbeitet wurde, und verläßt 130 den Verzögerungsmodus, nachdem sie ausgeführt wurden. Dies gewährleistet, daß das Verfahren 100 nach einer festgelegten Anzahl von Anweisungen austritt, ohne auf unbestimmte Zeit auf einen weiteren Hinweis zu warten, daß die Semaphoroperation abgeschlossen ist. Das Verfahren 100 bestimmt 128 ferner, ob eine festgelegte Anzahl von Taktzyklen durchlaufen ist, seitdem in den Verzögerungsmodus eingetreten 120 wurde, und verläßt 130 den Verzögerungsmodus nach der festgelegten Anzahl von Zyklen. Dies gewährleistet ebenfalls, daß das Verfahren 100 nicht zu lange in dem Verzögerungsmodus blockiert ist.
  • 5 zeigt ein Flußdiagramm eines Ausführungsbeispiels eines Verfahrens 90 zur Verwendung des Unterbrechungsverzögerungsverfahrens 100, um einen asynchronen Interrupt 40 zu verarbeiten. Ein erster Prozessor, Prozessor A, fordert ein Semaphor 20 an 91, um auf eine Systemressource 10 zuzugreifen. Der Prozessor A empfängt 92 die Cacheleitung für das Semaphor 20 und verwendet die Cacheleitung, um zu bestimmen 94, ob das Semaphor 20 zur Verfügung steht. Falls das Semaphor 20 für die Ressource 10 nicht zur Verfügung steht, bleibt der Prozessor A in der Schleife, bis das Semaphor 20 verfügbar wird, wobei beispielsweise eine Verzögerung verwendet wird (nicht gezeigt). Wenn das Semaphor 20 verfügbar ist, sperrt 96 der Prozessor A das Semaphor 20 und nutzt die Ressource 10. Der Prozessor A empfängt 98 daraufhin einen asynchronen Interrupt 40, der einen Zugriff auf den Prozessor A anfordert. Der Prozessor A protokolliert die Unterbrechung 40, 42, 44, 46, indem er beispielsweise ein Flagbit setzt. Das Verzögerungsverfahren 100 bestimmt 110, ob der Prozessor A ein Semaphor 20 gesperrt hat. Falls dies nicht der Fall ist, nimmt es den Interrupt 40 einfach an 130. Falls der Prozessor A ein Semaphor 20 gesperrt hat, verzögert 120 es den Interrupt 40 und schließt die Semaphoroperation ab und gibt das Semaphor 20 frei 129. Daraufhin verläßt der Prozessor A den Verzögerungsmodus und nimmt den Interrupt 40 an 130. Dies ermöglicht es einem anderen Prozessor, Prozessor B, das Semaphor 20 zu nehmen 140.
  • 6 zeigt ein Flußdiagramm einer weiteren beispielhaften Verwendung des Verfahrens 90 zum Verwenden des Unterbrechungsverzögerungsverfahrens 100, in diesem Beispiel um eine Kohärenzanforderung 46 zu verarbeiten. Nachdem der Prozessor A das Semaphor 20 gesperrt 99 hat, empfängt der Prozessor A eine Kohärenzanforderung 46 von dem Prozessor B. Die Kohärenzanforderung 46 wird durch den Prozessor A protokolliert. Das Verzögerungsverfahren 100 bestimmt 110, ob ein Semaphor 20 durch den Prozessor A gesperrt ist, und verzögert 120 eine Antwort auf die Kohärenzanforderung 46, falls ein Semaphor 20 gesperrt ist. Der Prozessor A schließt daraufhin seine Semaphoroperation ab und. gibt das Semaphor frei 129. Daraufhin verläßt er den Verzögerungsmodus und antwortet 130 auf die Kohärenzanforderung 46, die es dem Prozessor B ermöglicht, das Semaphor 20 zu nehmen 140.
  • 7 zeigt ein Blockdiagramm eines Computersystems 200, das eine zentrale Verarbeitungseinheit (CPU – central processing unit) 230 aufweist, die mit einer Eingabevorrichtung 220 und einer Anzeigevorrichtung 230 verbunden ist. Die CPU 230 weist eine Mehrzahl von miteinander verbundenen Prozessoren 240, 242, 244, 246 auf, die auf einen Speicher 250 in dem Computersystem 200 zugreifen. Bei einer Verwendung empfängt die Eingabevorrichtung 220 Befehle, die die CPU 230 anweisen, Anweisungen auszuführen. Die Ergebnisse der Analyse können auf der Anzeigevorrichtung 210 angezeigt werden. Bei den Prozessoren 240, 242, 244, die mehrere Prozesse aufweisen, die unter Verwendung der Semaphore 20 auf dieselben Ressourcen 10, 12, 14 zugreifen, kann das Verfahren 100 in jedem der Prozessoren 240, 242, 244 implementiert sein, um Unterbrechungen zwischen Prozessen zu steuern. Das Verfahren 100 kann ferner zwischen mehreren Prozessoren 240, 242, 244 implementiert sein, falls die Prozessoren 240, 242, 244 eine gemeinsame Ressource 10, 12, 14 nutzen. Falls beispielsweise Plätze in dem in 7 gezeigten Speicher 250 knapp sind und falls durch jeden der Prozessoren 240 auf sie zugegriffen wird, kann eine Semaphoroperation verwendet werden, um einen Zugriff auf den Speicher 250 zu steuern. Bei einer Verwendung kann eine Unterbrechung 40, 42, 44, 46 aus einem Prozessor 240, 242, 244 oder von einer externen Quelle ankommen, die versucht, eine Semaphoroperation zu unterbrechen. Das Verfahren 100 verzögert eine Annahme der Unterbrechung 40, 42, 44, 46, bis die Semaphoroperation abgeschlossen ist.
  • Fachleute werden erkennen, daß das Verfahren und System überall dort verwendet werden kann, wo es wünschenswert ist, eine Unterbrechung eines Prozesses zu begrenzen oder zu steuern, und daß diese nicht auf eine Verwendung bei Semaphoroperationen oder bei Interrupten oder asynchronen Interrupten beschränkt sind. Beispielsweise können das Verfahren und System implementiert sein, um Kohärenzanforderungen zu steuern, die sich auf eine Wiedererlangung von Daten, wo Daten wiederholt erzeugt und verbraucht werden, beziehen, und zwar an einem einzigen Speicherplatz. Die Kohärenzanforderung kann Daten von einem Platz in einem Speicher suchen. Zur gleichen Zeit kann es sein, daß eine aktuelle Version der Daten in dem Speicherplatz nicht einmal vorhanden ist oder unvollständig ist. Es ist daher wünschenswert, ein Antworten auf die Kohärenzanforderung zu verzögern, bis der Speicherplatz die korrekten Daten aufweist. Eine Semaphoroperation kann verwendet werden, um den Speicherplatz zu sperren, jedoch kann die Kohärenzanforderung bei einer Implementierung in der Lage sein, sie zu überschreiben und zu versuchen, die Daten sofort wiederzuerlangen, ganz ähnlich wie ein asynchroner Interrupt eine sofortige Nutzung einer Systemressource verlangt. Bei diesem Beispiel kann das Verfahren 100 implementiert sein, um die Kohärenzanforderung zu verzögern, bis die Daten korrekt sind. Falls eine Semaphoroperation verwendet wird, kann das Verfahren 100 die Kohärenzanforderung verzögern, bis das Semaphor freigegeben wird oder bis ein festgelegter Zeitraum verstrichen ist.
  • Obwohl die vorliegende Erfindung in bezug auf bestimmte Ausführungsbeispiele derselben beschrieben wurde, sind Variationen möglich. Die vorliegende Erfindung kann in spezifischen Formen verkörpert sein, ohne von der Wesensart oder Attributen derselben abzuweichen. Obwohl Aspekte einer Implementierung, die mit der vorliegenden Erfindung übereinstimmen, als in einem Speicher gespeichert beschrieben sind, werden Fachleute überdies einsehen, daß diese Aspekte auch in anderen Typen von Computerprogrammprodukten oder computerlesbaren Medien gespeichert und von denselben gelesen werden können, beispielsweise sekundären Speichervorrichtungen, einschließlich Festplatten, Floppy-Disks oder CD-ROM; einer Trägerwelle aus dem Internet oder einem anderen Netz; oder anderen Formen von RAM. oder Nur-Lese-Speichern (ROM). Es wird gewünscht, daß die hierin beschriebenen Ausführungsbeispiele in jeglicher Hinsicht als veranschaulichend und nicht einschränkend angesehen werden, und daß eine Bezugnahme auf die beigefügten Patentansprüche und ihre Äquivalente zum Bestimmen des Schutzbereichs der Erfindung erfolgt.

Claims (15)

  1. Verfahren zum Steuern einer Unterbrechung eines Computerprozesses, der eine Systemressource (10, 12, 14) nutzt, wobei das Verfahren folgende Schritte aufweist: Erfassen einer Nutzung einer Ressource (10, 12, 14) durch einen aktuellen Prozeß durch ein Erfassen, ob ein Semaphor durch den Prozeß für die Ressource gesperrt worden ist, wobei das Semaphor einen Zugriff auf die Ressource steuert, so daß nur ein Prozeß zu einem Zeitpunkt einen Zugriff auf die Ressource hat; wobei der aktuelle Prozeß eine Unterbrechung (40, 42, 44) des aktuellen Prozesses von einem zweiten Prozeß durch ein Empfangen eines Signals von dem zweiten Prozeß empfängt, der einen Zugriff auf die Ressource anfordert; wobei der aktuelle Prozeß die Unterbrechung (40, 42, 44) verzögert, um es dem aktuellen Prozeß zu ermöglichen, ein Nutzen der Ressource (10, 12, 14), fortzusetzen; und wobei der aktuelle Prozeß die Unterbrechung (40, 42, 44) nach einem Verzögern der Unterbrechung annimmt, und wobei der Schritt des Verzögerns den Schritt des Verzögerns der Unterbrechung bis zu einem Erfassen einer Anzeige einer Ausführung eines Verzweigungsbefehls oder eines Speicherbefehls oder bei dem der Schritt des Verzögerns den Schritt des Verzögerns der Unterbrechung bis eine festgelegte Anzahl von Anweisungen abgeschlossen ist, umfaßt.
  2. Verfahren gemäß Anspruch 1, bei dem der Schritt des Erfassens ferner den Schritt des Erfassens, ob eine Laden-Und-Löschen-Operation abgesclossen ist, umfaßt.
  3. Verfahren gemäß einem der Ansprüche 1 oder 2, bei dem der Schritt des Empfangens den Schritt des Setzens eines Flags, um die Unterbrechung (40, 42, 44) anzuzeigen, umfaßt.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, bei dem der Schritt des Empfangens den Schritt des Empfangens eines asynchronen Interrupts umfaßt.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, bei dem der Schritt des Verzögerns den Schritt des Verzögerns, bis eine festgelegte Anzahl von Taktzyklen durchlaufen ist, umfaßt.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, bei dem der Schritt des Empfangens den Schritt des Empfangens einer Kohärenzanforderung umfaßt.
  7. Verfahren zum Handhaben von Unterbrechungen eines Systemprozesses, der ein Semaphor für eine Ressource gesperrt hat, wobei das Verfahren folgende Schritte aufweist: Bestimmen, ob der aktuelle Prozeß ein Semaphor für die Systemressource gesperrt hat, wobei das Semaphor einen Zugriff auf die Ressource steuert, so daß nur ein Prozeß zu einem Zeitpunkt einen Zugriff auf die Ressource hat, eine Steuerung über eine Systemressource aufweist; wobei der aktuelle Prozeß eine Unterbrechung des aktuellen Prozesses von einem zweiten Prozeß durch ein Empfangen eines Signals von dem zweiten Prozeß empfängt, der einen Zugriff auf die Ressource anfordert; wobei der aktuelle Prozeß die Unterbrechung speichert; und wobei der aktuelle Prozeß eine Annahme der Unterbrechung verzögert, um dem aktuellen Prozeß eine zusätzliche Zeit bereitzustellen, um die Ressource zu nutzen, wobei der Schritt des Verzögerns folgende Schritte aufweist: Bestimmen, ob eine festgelegte Anzahl von Anweisungen abgeschlossen ist; Annehmen der Unterbrechung nachdem die festgelegte Anzahl von Anweisungen abgeschlossen ist; Bestimmen, ob eine festgelegte Anzahl von Taktzyklen durchlaufen ist; und Annehmen der Unterbrechung nachdem die festgelegte Anzahl von Taktzyklen durchlaufen ist.
  8. Verfahren gemäß Anspruch 7, bei dem der Schritt des Verzögerns ferner folgende Schritte aufweist: Bestimmen, ob ein Verzweigungsbefehl ausgeführt wurde; und Annehmen der Unterbrechung nachdem der Verzweigungsbefehl ausgeführt wurde.
  9. Verfahren gemäß Anspruch 7 oder 8, bei dem der Schritt des Verzögerns ferner folgende Schritte aufweist: Bestimmen, ob ein Speicherbefehl ausgeführt wurde; und Annehmen der Unterbrechung nachdem ein Speicherbefehl ausgeführt wurde.
  10. Verfahren gemäß einem der Ansprüche 7 bis 9, bei dem der Schritt des Empfangens den Schritt des Empfangens eines asynchronen Interrupts umfaßt.
  11. System zum Verarbeiten von Unterbrechungen eines Prozesses in einem Computersystem, bei dem Prozesse Systemressourcen gemeinsam nutzen, wobei das System folgende Merkmale aufweist: eine Ressource, auf die durch eine Mehrzahl von Prozessen zugegriffen wird, wobei der Zugriff durch ein Semaphor gesteuert wird, durch das einer der Mehrzahl von Prozessen zu einem Zeitpunkt auf die Ressource Zugriff hat; und eine Unterbrechung, die durch einen zweiten Prozeß eingeleitet wird und versucht, einen oder mehrere Prozesse zu unterbrechen, indem sie ein Signal an einen aktuellen Prozeß, der das Semaphor für die Ressource aufweist, sendet, wobei der aktuelle Prozeß die Unterbrechung durch ein Freigeben des Semaphor für die Ressource nach einer Verzögerung annimmt, die es dem aktuellen Prozeß ermöglicht, ein Nutzen der Ressource fortzusetzen, und wobei die Unterbrechung nach einem Erfassen einer Anzeige, daß ein Verzweigungs- oder Speicherbefehl ausgeführt wird, angenommen wird oder wobei die Unterbrechung nach einer festgelegten Anzahl von abgeschlossen, Anweisungen angenommen wird.
  12. System gemäß Anspruch 11, bei dem die Unterbrechung nach einer festgelegten Anzahl von Taktzyklen angenommen wird.
  13. System gemäß einem der Ansprüche 11 oder 12, bei dem das System durch Erfassen einer Laden-Und-Löschen-Operation bestimmt, ob das Semaphor gesperrt ist.
  14. System gemäß einem der Ansprüche 11 bis 13, bei dem die Unterbrechung ein asynchroner Interrupt ist.
  15. System gemäß einem der Ansprüche 11 bis 14, bei dem die Unterbrechung eine Kohärenzanforderung ist.
DE10228778A 2001-07-17 2002-06-27 Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros Expired - Fee Related DE10228778B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/907,072 US6857036B2 (en) 2001-07-17 2001-07-17 Hardware method for implementing atomic semaphore operations using code macros
US09/907072 2001-07-17

Publications (2)

Publication Number Publication Date
DE10228778A1 DE10228778A1 (de) 2003-02-13
DE10228778B4 true DE10228778B4 (de) 2004-09-30

Family

ID=25423471

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10228778A Expired - Fee Related DE10228778B4 (de) 2001-07-17 2002-06-27 Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros

Country Status (2)

Country Link
US (1) US6857036B2 (de)
DE (1) DE10228778B4 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6874049B1 (en) * 2001-02-02 2005-03-29 Cradle Technologies, Inc. Semaphores with interrupt mechanism
US20050102457A1 (en) * 2003-11-12 2005-05-12 Dell Products L.P. System and method for interrupt processing in a multiple processor system
US7899663B2 (en) * 2007-03-30 2011-03-01 International Business Machines Corporation Providing memory consistency in an emulated processing environment
US9824039B2 (en) * 2013-09-09 2017-11-21 International Business Machines Corporation Signal interrupts in a transactional memory system
US10003648B2 (en) * 2014-10-02 2018-06-19 Samsung Electronics Co., Ltd. Mechanism for universal parallel information access

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0564256A2 (de) * 1992-03-31 1993-10-06 International Business Machines Corporation Serialisierung von Betriebsmittelzugriffsanforderungen für Unterbrechungen und Prozesse
US5613129A (en) * 1994-05-02 1997-03-18 Digital Equipment Corporation Adaptive mechanism for efficient interrupt processing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448743A (en) * 1992-07-21 1995-09-05 Advanced Micro Devices, Inc. General I/O port interrupt mechanism
US5440746A (en) * 1992-11-06 1995-08-08 Seiko Epson Corporation System and method for synchronizing processors in a parallel processing environment
US6018785A (en) * 1993-12-30 2000-01-25 Cypress Semiconductor Corp. Interrupt-generating hardware semaphore
US5513349A (en) * 1994-03-24 1996-04-30 International Business Machines Corporation System and method for safing of asynchronous interrupts
US5623670A (en) * 1995-02-17 1997-04-22 Lucent Technologies Inc. Method and apparatus for crash safe enforcement of mutually exclusive access to shared resources in a multitasking computer system
US5937199A (en) * 1997-06-03 1999-08-10 International Business Machines Corporation User programmable interrupt mask with timeout for enhanced resource locking efficiency
US6000029A (en) * 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US6360243B1 (en) * 1998-03-10 2002-03-19 Motorola, Inc. Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US6081867A (en) * 1998-05-20 2000-06-27 Sony Corporation Software configurable technique for prioritizing interrupts in a microprocessor-based system
US6633940B1 (en) * 1999-10-11 2003-10-14 Ati International Srl Method and apparatus for processing interrupts in a computing system
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0564256A2 (de) * 1992-03-31 1993-10-06 International Business Machines Corporation Serialisierung von Betriebsmittelzugriffsanforderungen für Unterbrechungen und Prozesse
US5613129A (en) * 1994-05-02 1997-03-18 Digital Equipment Corporation Adaptive mechanism for efficient interrupt processing

Also Published As

Publication number Publication date
US6857036B2 (en) 2005-02-15
US20030018841A1 (en) 2003-01-23
DE10228778A1 (de) 2003-02-13

Similar Documents

Publication Publication Date Title
DE69130630T2 (de) Synchrones Verfahren und Gerät für Prozessoren
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE69023018T2 (de) Prozessor-Unterbrechungssteuerung.
DE69619885T2 (de) Datenverarbeitungsanordnung mit Koprozessor
DE69230462T2 (de) Arbitrierung des Multiprozessorzugriffs zu gemeinsamen Mitteln
DE68928772T2 (de) Datenverarbeitungssystem mit sich um Zugriff auf verteilte Betriebsmittel bewerbenden Einheiten und mit auf den Status der verteilten Betriebsmittel reagierender Schiedsrichtereinheit
DE2714805C2 (de)
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE3883532T2 (de) Knoten für die bedienung von unterbrechungsanforderungsnachrichten auf einem anstehenden bus.
DE2629459C2 (de)
DE102007060806A1 (de) Rangbasierter Speicher-Lese/Schreib-Mikrobefehls-Scheduler
DE3750028T2 (de) Pipelineprozessor mit schwacher Kopplung.
DE69515355T2 (de) Mehrfacharbitrierungsschema
DE69222468T2 (de) Vorrichtung zur Steigerung der Leistung eines einer Multiprozessorstruktur mit einer möglicherweise hohen Anzahl von Prozessoren zugeordneten Echtzeitsteuerprogrammkerns
DE2411963B2 (de) Datenverarbeitungsanlage
DE2317417A1 (de) Takt- und steuerlogikschaltung
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE3650165T2 (de) Buszustandssteuerungsschaltung.
DE60000925T2 (de) Monitorkonvertierung in einem multi-threaded computer system
DE69230483T2 (de) Quadraturbusprotokoll zum Ausführen von Transaktionen in einer Rechneranordnung
DE69418082T2 (de) System und Verfahren zur Vermeidung von Verklemmung in einem Rechner
DE4223454A1 (de) Datenuebertragungssystem fuer eine digitale signalverarbeitungsvorrichtung
DE68926374T2 (de) Seriellumsetzungssteuerungssystem für Hauptspeicherreferenz
DE102004061339A1 (de) Scheduling-Verfahren, insbesondere Kontex-Scheduling-Verfahren, und Einrichtung zur Verwendung bei einem Scheduling-Verfahren
DE10228778B4 (de) Hardware-Verfahren zum Implementieren von atomischen Semaphoroperationen unter Verwendung von Codemakros

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee