[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE69630126T2 - Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet - Google Patents

Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet Download PDF

Info

Publication number
DE69630126T2
DE69630126T2 DE69630126T DE69630126T DE69630126T2 DE 69630126 T2 DE69630126 T2 DE 69630126T2 DE 69630126 T DE69630126 T DE 69630126T DE 69630126 T DE69630126 T DE 69630126T DE 69630126 T2 DE69630126 T2 DE 69630126T2
Authority
DE
Germany
Prior art keywords
processor
memory
access
unit
state
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
DE69630126T
Other languages
English (en)
Other versions
DE69630126D1 (de
Inventor
W. David AUCSMITH
C. Robert KNAUERHASE
C. James STANLEY
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE69630126D1 publication Critical patent/DE69630126D1/de
Publication of DE69630126T2 publication Critical patent/DE69630126T2/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control

Landscapes

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

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf die Kommunikation zwischen Computersystemen. Insbesondere bezieht sich die vorliegende Erfindung auf eine Einrichtung und ein Verfahren zum Arbitrieren bzw. Entscheiden des Zugriffs auf einen gemeinsam genutzten Speicherbereich.
  • HINTERGRUND DER ERFINDUNG
  • Wenn Prozessoren einen gemeinsamen Speicherbereich gemeinsam nutzen, ist eine Koordination des Speicherzugriffs zwischen den Prozessoren erforderlich. Die Koordination des Speicherzugriffs gewährleistet, dass Daten, die in den gemeinsam genutzten Speicherbereich geschrieben sind, nicht vorzeitig von einem Prozessor überschrieben werden, bevor sie von einem anderen Prozessor gelesen wurden. Die Koordination des Speicherzugriffs gewährleistet ebenfalls, dass zwei Prozessoren nicht gleichzeitig versuchen, auf den gemeinsam genutzten Speicherbereich zuzugreifen. Ohne die Koordination des Speicherzugriffs kann es bei Systemen, die einen gemeinsamen Speicherbereich gemeinsam nutzen, zu Datenverlusten oder, noch schwerwiegender, zu einem Hardware-Fehler kommen.
  • Eine Methode zum Koordinieren des Speicherzugriffs ist die Verwendung eines Hauptprozessors. Ein Hauptprozessor managt die Aktivitäten von Nebenprozessoren auf dem gemeinsam genutzten Speicher. Ein Hauptprozessor behält die Übersicht über die verschiedenen Bereiche im Speicher, auf welche zugegriffen wird, und über den Zweck, für welchen sie genutzt werden. Jeder Nebenprozessor, der Zugriff auf den gemeinsam genutzten Speicher anstrebt, muss zuerst die Erlaubnis vom Hauptprozessor erhalten. Üblicherweise arbitriert der Hauptprozessor den Speicherzugriff zwischen den Nebenprozessoren, indem er die Priorität der auszuführenden Aufgaben und die Tatsache berücksichtigt, ob auf den Speicher aktuell von einem anderen Prozessor zugegriffen wird.
  • Eine weitere Methode zum Koordinieren des Speicherzugriffs ist die Selbst-Arbitrierung der Prozessoren durch die Verwendung eines Band-externen Übermittlungspfades. Üblicherweise wird ein separater Bus verwendet, welcher kein Speicherzugriffsbus ist, um Zustandsinformationen von einem Prozessor an einen anderen zu übermitteln, die den gemeinsamen Speicherbereich gemeinsam nutzen. Dies gestattet den Prozessoren, den Speicherzugriff untereinander selbst zu koordinieren. Nachdem beispielsweise ein erster Prozessor das Schreiben von Daten an einen Ort in dem gemeinsam genutzten Speicher beendet hat, kann der erste Prozessor einem zweiten Prozessor zum Lesen dieser Informationen Zugriff zu diesem Ort des gemeinsam genutzten Speichers gewähren, indem er dem zweiten Prozessor über den Band-externen Übermittlungspfad ein Signal sendet. Nur der zweite Prozessor kann zu diesem Zeitpunkt für diesen bestimmten Zweck auf den gemeinsam genutzten Speicher zugreifen.
  • Eine weitere Methode zum Koordinieren des Speicherzugriffs wird in Fried et al. (US-Patent Nr. 5,142,676, 25. August 1992, nachstehend „Fried") beschrieben. Fried offenbart eine Verriegelungsschaltung zum Steuern des Zugriffs auf verriegelte Segmente eines gemeinsam genutzten Speichers. Die Schaltung enthält einen inhaltsadressierbaren Speicher (CAM) zum Speichern von Adressen der verriegelten Speichersegmente und zum gleichzeitigen Vergleichen einer Zieladresse (aus einem Anforderungsprozess) mit den Adressen der verriegelten Speichersegmente und zum Bereitstellen eines Übereinstimmungssignals, wenn die Zieladresse mit einer der Adressen der gesperrten Speichersegmente übereinstimmt. Während eines Speicherzugriffszyklus wird eine Zieladresse an den CAM bereitge stellt. Wenn die Zieladresse mit einer Adresse in dem CAM übereinstimmt, dann hindert ein Übereinstimmungssignal die Steuerschaltung daran, den Speicherzugriffszyklus abzuschließen. Wenn jedoch die anfordernde ID des Prozesses mit der (in einem zweiten Speicher gespeicherten) Verriegelungs-ID des Prozesses übereinstimmt, der das Übereinstimmungssignal erzeugt hat, dann wird der Speicherzugriffszyklus freigegeben.
  • Die Verwendung eines Hauptprozessors hat mehrere Nachteile. Üblicherweise benötigen Prozessoren zum Arbeiten eine große Menge an Energie. Dies ist ein Problem für Computersysteme, die unter starken Energiebeschränkungen arbeiten, wie beispielsweise für Systeme, die mit Batterien arbeiten. Prozessoren sind außerdem im Vergleich zu anderen IC-Komponenten relativ groß im Format. Je nach der Umgebung des Computersystems, erlaubt die Verfügbarkeit von physischem Platz die Implementierung eines weiteren Prozessors somit möglicherweise nicht. Am wichtigsten ist vielleicht die Tatsache, dass die Verwendung eines weiteren Prozessors zum Zweck der Speicherarbitrierung unerwünschte zusätzliche Kosten für das gesamte Computersystem verursacht.
  • Die Selbst-Arbitrierung hat ebenfalls ihre Grenzen. Computersysteme, bei welchen die Selbst-Arbitrierung implementiert werden soll, müssen einen Band-externen Übermittlungspfad bereitstellen, um den Prozessoren, die den Speicherplatz gemeinsam nutzen, die Kommunikation miteinander zu ermöglichen. Die Design-Spezifikationen einiger Computersysteme gestatten möglicherweise die Implementierung eines Band-externen Übermittlungspfades nicht.
  • Somit werden ein Verfahren und eine Einrichtung zum Arbitrieren des Zugriffs auf einen gemeinsam genutzten Speicher benötigt, wobei die Implementierung eines weiteren Prozessors oder eines außerbandigen bzw. Band-externen Übermittlungspfades nicht erforderlich ist.
  • ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
  • Es werden eine Einrichtung und ein Verfahren zum Arbitrieren des Zugriffs auf einen gemeinsam genutzten Speicher offenbart. Ein Ausführungsbeispiel einer Speichereinheit der vorliegenden Erfindung weist eine Speicherzelle zum Speichern von Daten auf. Eine Zugriffsanzeigeeinheit ist mit der Speicherzelle gekoppelt. Die Zugriffsanzeigeeinheit zeigt die Identität eines ersten Prozessors an, der auf die Speicherzelle zugreift. Eine Zustandsaufzeichnungseinheit ist mit der Zugriffsanzeigeeinheit gekoppelt. Die Zustandsaufzeichnungseinheit zeichnet eine Aufgabe auf, die von dem ersten Prozessor ausgeführt wird. Eine Semaphor-Einheit ist ebenfalls mit der Zugriffsanzeigeeinheit gekoppelt. Die Semaphor-Einheit liest die Zugriffsanzeigeeinheit und verhindert, dass ein zweiter Prozessor auf die Speicherzelle zugreift, während der erste Prozessor auf die Speicherzelle zugreift. Eine Arbitrierungseinheit ist mit der Zugriffsanzeigeeinheit gekoppelt. Die Arbitrierungseinheit dient dazu, den Zugriff auf die Speicherzelle auf jeweils einen Prozessor zu beschränken.
  • Ein Ausführungsbeispiel eines erfindungsgemäßen Systems zur Bereitstellung der Kommunikation zwischen einem ersten Computersystem und einem zweiten Computersystem weist einen Speicher auf, der das erste Computersystem mit dem zweiten Computersystem verbindet. Der Speicher speichert Daten, die zwischen dem ersten Computersystem und dem zweiten Computersystem übertragen werden. Eine Zugriffsanzeigeeinheit ist mit dem Speicher gekoppelt. Die Zugriffsanzeigeeinheit zeigt die Identität eines Computersystems an, das Zugriff auf den Speicher hat. Eine Zustandsaufzeichnungseinheit ist mit der Zugriffsanzeigeeinheit gekoppelt. Die Zustandsaufzeichnungseinheit zeichnet eine Aufgabe, die von dem Prozessor ausgeführt wird, als Zustand auf. Eine erste Zustandsmaschine ist mit der Zustandsaufzeichnungseinheit gekoppelt. Die erste Zustandsmaschine instruiert den ersten Prozessor, wie die Daten in dem Speicher als Reaktion auf das Lesen einer vorherigen Aufgabe, die in der Zustandsaufzeichnungseinheit aufgezeichnet ist, zu verarbeiten sind. Eine zweite Zustandsmaschine ist mit der Zustandsaufzeichnungseinheit gekoppelt. Die zweite Zustandsmaschine instruiert den zweiten Prozessor, wie die Daten in dem Speicher als Reaktion auf das Lesen der vorherigen Aufgabe, die in der Zustandsaufzeichnungseinheit aufgezeichnet ist, zu verarbeiten sind.
  • Ein Ausführungsbeispiel eines Verfahrens zum Senden von Daten zwischen einem ersten Prozessor und einem zweiten Prozessor umfasst die Schritte, dass zuerst ein gemeinsam genutzter Speicherplatz auf Verfügbarkeit überprüft wird. Nachdem der gemeinsam genutzte Speicherplatz überprüft wurde, wird eine letzte Aufgabe identifiziert, die auf dem gemeinsam genutzten Speicherplatz ausgeführt wurde. Aus der letzten Aufgabe wird bestimmt, ob eine aktuelle Aufgabe mit einer höheren Priorität zuerst ausgeführt werden muss. Als Nächstes werden die Daten zwischen dem ersten Prozessor und dem gemeinsam genutzten Speicherplatz übermittelt. Nachdem die Daten übermittelt sind, wird die aktuelle Aufgabe aufgezeichnet, die auf dem gemeinsam genutzten Speicherplatz ausgeführt wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird aus der unten gegebenen detaillierten Beschreibung und den zugehörigen Zeichnungen der verschiedenen Merkmale und Elemente, die in der Erfindung enthalten sind, umfassender verständlich. Die Beschreibung und die Zeichnungen haben nicht den Zweck, die Erfindung auf das spezielle Ausführungsbeispiel zu beschränken. Sie dienen der Erklärung und dem Verständnis.
  • 1 stellt ein Ausführungsbeispiel der vorliegenden Erfindung dar, das in einem Computersystem implementiert ist.
  • 2 stellt ein Ausführungsbeispiel der vorliegenden Erfindung dar, das in einem Multiprozessor-Computersystem implementiert ist.
  • 3 stellt ein Ausführungsbeispiel der vorliegenden Erfindung dar, das in zwei autonomen Computersystemen implementiert ist.
  • 4 zeigt eine Blockdarstellung einer Speichermarkierungseinheit gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 5 stellt ein Ausführungsbeispiel einer Zugriffsanzeigeeinheit und einer Zustandsaufzeichnungseinheit gemäß einem Ausführungsbeispiel der vorliegenden Erfindung dar.
  • 6 ist ein Zustandsdiagramm einer Zustandsmaschine gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. 7 stellt eine Software-Implementierung der Zustandsmaschine der vorliegenden Erfindung dar.
  • 8 ist ein Flussdiagramm, das ein Verfahren zum Arbitrieren des Zugriffs auf einen gemeinsam genutzten Speicher gemäß einem Ausführungsbeispiel der vorliegenden Erfindung darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird eine neuartige Zugriffssteuerungseinheit beschrieben. In der folgenden detaillierten Beschreibung werden zahlreiche Details dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung zu ermöglichen. Fachleute werden jedoch verstehen, dass die vorliegende Erfindung ohne diese speziellen Details ausgeführt werden kann. In anderen Fällen sind bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht im Detail beschrieben worden, um die vorliegende Erfindung nicht zu verschleiern.
  • Einige Teile der detaillierten Beschreibungen, welche folgen, werden anhand von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten in der Datenverarbeitungstechnik verwendet werden, um den Inhalt ihrer Arbeit am effektivsten an andere Fachleute zu übermitteln. Ein Algorithmus wird als eine in sich widerspruchsfreie Abfolge von Schritten betrachtet, die zu einem gewünschten Ergebnis führen. Die Schritte sind solche, die physikalische Manipulationen physikalischer Größen erfordern. Normalerweise – obwohl nicht notwendigerweise – sind diese Größen elektrische oder magnetische Signale, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich hin und wieder, im Allgemeinen aus Gründen der allgemeinen Verwendung, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu benennen. Es sollte jedoch berücksichtigt werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen zu verknüpfen sind, und dass sie ausschließlich geeignete Bezeichnungen sind, die auf diese Größen angewendet werden. Sofern nicht anderweitig festgelegt und wie aus den folgenden Erörterungen ersichtlich, ist klar, dass in der gesamten vorliegenden Erfindung Erörterungen, in welchen Begriffe wie beispielsweise „Verarbeiten" oder „Berechnen" oder „Kalkulieren" oder „Bestimmen" oder „Anzeigen" oder dergleichen verwendet werden, auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechnereinrichtung bezogen sind, die Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt sind, in andere Daten verarbeiten und transformieren, die auf ähnliche Weise als physikalische Größen in den Speichern oder Registern des Com putersystems oder anderen derartigen Informationsspeicherungs-Übertragungs- oder Anzeigeeinrichtungen dargestellt sind.
  • 1 stellt in Form einer Blockdarstellung ein Computersystem eines Ausführungsbeispiels der vorliegenden Erfindung dar. Das Computersystem umfasst einen Bus 100, eine Tastaturschnittstelle 101, einen externen Speicher 102, eine Massenspeichereinrichtung 103, einen Prozessor 104 und eine Rnzeigeeinrichtungs-Steuereinrichtung 105. Der Bus 100 ist mit der Anzeigeeinrichtungs-Steuereinrichtung 105, der Tastaturschnittstelle 101, dem Mikroprozessor 104, dem Speicher 102 und der Massenspeichereinrichtung 103 gekoppelt. Die Anzeigeeinrichtungs-Steuereinrichtung 105 kann mit einer Anzeigeeinrichtung gekoppelt sein. Die Tastaturschnittstelle 101 kann mit einer Tastatur gekoppelt sein.
  • Der Bus 100 kann ein einzelner Bus oder eine Kombination von mehreren Bussen sein. Beispielsweise kann der Bus 100 ein Bus der Industrie-Standard-Architektur (ISA), ein Bus der Erweiterten Industrie-Standard-Architektur (EISA), ein Systembus, ein X-Bus, ein PS/2-Bus, ein Peripheriekomponentenverbindungs(PCI)-Bus oder ein anderer Bus sein. Der Bus 100 kann auch eine beliebige Kombination von Bussen umfassen. Der Bus 100 stellt Kommunikationsverbindungen zwischen den Komponenten in dem Computersystem bereit. Die Tastaturschnittstelle 101 kann eine Tastatursteuereinrichtung oder eine andere Tastaturschnittstelle sein. Die Tastaturschnittstelle 101 kann eine spezielle Einrichtung sein oder kann sich in einer anderen Einrichtung befinden, wie beispielsweise in einer Bussteuereinrichtung oder einer anderen Steuereinrichtung. Die Tastaturschnittstelle 101 gestattet das Koppeln einer Tastatur mit dem Computersystem und übermittelt Signale von einer Tastatur an das Computersystem. Der externe Speicher 102 kann eine dynamische Speichereinrichtung mit wahlfreiem Zugriff (DRAM), eine statische Speichereinrichtung mit wahlfreiem Zugriff (SRAM) oder eine andere Speichereinrichtung sein. Der externe Speicher 102 speichert Informationen und Daten von der Massenspeichereinrichtung 103 und dem Prozessor 104 zur Verwendung durch den Prozessor 104. Die Massenspeichereinrichtung 103 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Einrichtung, eine Flash-Speichereinrichtung oder eine andere Massenspeichereinrichtung sein. Die Massenspeichereinrichtung 103 stellt Informationen und Daten an den externen Speicher 102 bereit.
  • Der Prozessor 104 verarbeitet Informationen und Daten von dem externen Speicher 102 und speichert Informationen und Daten in dem externen Speicher 102. Der Prozessor 104 empfängt auch Signale von der Tastatursteuereinrichtung 101 und übermittelt Informationen und Daten an die Anzeigeeinrichtungs-Steuereinrichtung 105 zur Anzeige auf einer Anzeigeeinrichtung. Der Prozessor 104 übermittelt ebenfalls Videobilder an die Anzeigesteuereinrichtung zur Anzeige auf einer Anzeigeeinrichtung. Der Prozessor 104 kann ein Mikroprozessor mit komplexem Befehlssatz (CISC), ein Mikroprozessor mit reduziertem Befehlssatz (RISC), ein Mikroprozessor mit überlangem Befehlswort (VLIW) oder eine andere Prozessoreinrichtung sein. Die Anzeigeeinrichtungs-Steuereinrichtung 105 gestattet das Koppeln einer Anzeigeeinrichtung mit dem Computersystem und dient als eine Schnittstelle zwischen der Anzeigeeinrichtung und dem Computersystem. Die Anzeigeeinrichtungs-Steuereinrichtung 105 kann eine Schwarzweiß-Anzeige-Adapter(MDA)-Karte, eine Farbgrafik-Adapter(CGA)-Karte, eine Verbesserte-Grafik-Adapter(EGA)-Karte, eine Mehrfarbgrafik-Matrix(MCGA)-Karte, eine Videografik-Matrix(VGA)-Karte, eine Erweiterte-Grafik-Matrix(XGA)-Karte oder eine andere Anzeigeeinrichtungs-Steuereinrichtung sein. Die Anzeigeeinrichtung kann ein Fernsehgerät, ein Computermonitor, eine Flachbildschirmanzeige oder eine andere Anzeigeeinrichtung sein. Die Anzeigeeinrichtung empfängt über die Anzeigeeinrichtungs-Steuereinrichtung 105 Informationen und Daten vom Prozessor 104 und zeigt dem Benutzer des Computersystems die Informationen und Daten an.
  • Das Computersystem enthält ebenfalls einen gemeinsam genutzten Speicher 106. Der gemeinsam genutzte Speicher 106 ist mit dem Bus 100 gekoppelt. Der gemeinsam genutzte Speicher 106 kann eine dynamische Speichereinrichtung mit wahlfreiem Zugriff (DRAM), eine statische Speichereinrichtung mit wahlfreiem Zugriff (SRAM) oder andere Speichereinrichtungen enthalte. Der gemeinsam genutzte Speicher 106 umfasst ferner die Speichermarkierungseinheit 107. Die Speichermarkierungseinheit 107 dient zur Aufzeichnung der Identität des Mikroprozessors, der aktuell auf den gemeinsam genutzten Speicher 106 zugreift, und des Prozesses, der zuletzt auf dem gemeinsam genutzten Speicher 106 ausgeführt wurde. Die Zustandsmaschine 108 ist mit dem Bus 108 gekoppelt. Die Zustandsmaschine 108 empfängt Informationen darüber, welcher Prozess zuletzt auf dem gemeinsam genutzten Speicher 106 ausgeführt wurde, von der Speichermarkierungseinheit 107. Die Zustandsmaschine 108 verwendet diese Informationen, um den Prozessor 104 darüber zu instruieren, was mit dem gemeinsam genutzten Speicher 106 geschehen sollte. Die Speichermarkierungseinheit 107 und die Zustandsmaschine 108 gestatten, dass auf den gemeinsam genutzten Speicher 106 von mehreren Prozessoren zugegriffen werden kann. Diese Prozessoren können entweder Prozessoren innerhalb desselben Computersystems wie das des gemeinsam genutzten Speichers 106 oder völlig autonome Computersysteme sein.
  • 2 stellt ein Ausführungsbeispiel der vorliegenden Erfindung dar, bei welchem der gemeinsam genutzte Speicher 106 von zwei Prozessoren desselben Computersystems genutzt wird. Der gemeinsam genutzte Speicher 106 wird von dem mit Bus 100 gekoppelten Prozessor 104 und dem mit Bus 100 gekoppelten Prozessor 204 gemeinsam genutzt. Die Speichermarkierungseinheit 107 und die Zustandsmaschine 108 arbitrieren den gemeinsam genutzten Speicher 106 zwischen dem Prozessor 104 und dem Prozessor 204. Wenn entweder der Prozessor 104 oder der Prozessor 204 den Zugriff auf den gemeinsam genutzten Speicher 106 anstrebt, liest er zuerst den Inhalt der Speichermarkierungseinheit 107. Wenn auf den gemeinsam genutzten Speicher aktuell von dem anderen Prozessor zugegriffen wird, wird der Prozessor, der den Zugriff anstrebt, nicht versuchen, gleichzeitig auf den gemeinsam genutzten Speicher 106 zuzugreifen. Er wird stattdessen warten und fortfahren, den Status des gemeinsam genutzten Speichers 106 zu überprüfen, indem er periodisch den Inhalt der Speichermarkierungseinheit 107 liest. Wenn jedoch auf den gemeinsam genutzten Speicher 106 nicht von dem anderen Prozessor zugegriffen wird, verändert der Prozessor, der den Zugriff anstrebt, den Inhalt der Speichermarkierungseinheit 107, um anzuzeigen, dass er aktuell den Zugriff auf den gemeinsam genutzten Speicher 106 hat. Dies hindert den anderen Prozessor daran, auf den gemeinsam genutzten Speicher 106 zuzugreifen, während auf den gemeinsam genutzten Speicher 106 zugegriffen wird.
  • Der Prozessor, der den Zugriff auf den gemeinsam genutzten Speicher 106 hat, lädt Informationen über den auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführten Prozess von der Speichermarkierungseinheit 107 in die Zustandsmaschine 108. Die Zustandsmaschine 108 verwendet diese Informationen, um den Prozessor mit Zugriff zu instruieren, was er mit dem gemeinsam genutzten Speicher 106 tun sollte. Der auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführte Prozess kann erfordern, dass der Prozessor mit Zugriff zuerst eine Aufgabe mit einer höheren Priorität ausführt, bevor er irgendetwas anderes mit dem gemeinsam genutzten Speicher 106 tun kann. In dieser Situation instruiert die Zustandsmaschine 108 den Prozessor, der den Zugriff hat, diese Aufgabe hoher Prio rität auszuführen. Wenn andererseits der auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführte Prozess nicht verlangt, dass der Prozessor, der den Zugriff anstrebt, irgendeine andere Aufgabe ausführt, kann der Prozessor jede beliebige Aufgabe ausführen, die er ausführen will. Nachdem der Prozessor, der den Zugriff hat, die Ausführung seiner Aufgabe beendet hat, aktualisiert er den Inhalt in der Speichermarkierungseinheit 107, um die Aktivitäten wiederzugeben, die erfolgt sind. Dies gestattet dem nächsten Prozessor, der den Zugriff auf den gemeinsam genutzten Speicher 106 anstrebt, zu erfahren, ob es eine Aufgabe gibt, die er ausführen muss.
  • In einem System mit mehr als zwei mit dem Bus 100 gekoppelten Prozessoren kann der auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführte Prozess erfordern, dass ein dritter Prozessor eine Aufgabe ausführt, die eine Abhängigkeit von den Daten aufweist, die sich aktuell in dem gemeinsam genutzten Speicher 106 befinden, bevor der Prozessor, der den Zugriff hat, auf den gemeinsam genutzten Speicher 106 zugreifen kann. In dieser Situation instruiert die Zustandsmaschine 108 den Prozessor, der den Zugriff hat, auf seine Zugriffsrechte zu verzichten und dem dritten Prozessor den Zugriff auf den gemeinsam genutzten Speicher 106 zu gestatten.
  • Die Speichermarkierungseinheit 107 und die Zustandsmaschine 108 gestatten den Prozessoren in einem Multiprozessor-Computersystem, ohne einen auflerbandigen bzw. Band-externen Übertragungspfad miteinander zu kommunizieren. Dies gestattet die Arbitrierung des gemeinsam genutzten Speicherplatzes ohne zusätzliche Hardware-Kosten, die mit der Bereitstellung einer gemeinsamen Verbindung zwischen den Prozessoren in dem Computersystem verbunden sind. Die Speichermarkierungseinheit 107 und die Zustandsmaschine 108 gestatten den Prozessoren in einem Multiprozessor-Computersystem ebenfalls, ohne einen Hauptprozessor miteinander zu kommunizieren, der die Aktivitäten in dem gemeinsam genutzten Speicherbereich 106 steuert. Dies ermöglicht, dass das Computersystem arbeitet, ohne zusätzliche Energie zu verbrauchen, ohne zusätzlichen Platz erforderlich zu machen oder ohne dass zusätzliche Komponentenkosten anfallen.
  • 3 stellt ein Ausführungsbeispiel der vorliegenden Erfindung dar, bei welchem der gemeinsam genutzte Speicher 106 von zwei Prozessoren in zwei autonomen Computersystemen gemeinsam genutzt wird. Der gemeinsam genutzte Speicher 106 wird vom Prozessor 104 in einem ersten Computersystem 150 und dem Prozessor 304 in einem zweiten Computersystem 350 gemeinsam genutzt. Die Speichermarkierungseinheit 107 und die Zustandsmaschine 108 arbeiten ähnlich, wie es in dem Ausführungsbeispiel zu dem Multiprozessor-Computersystem beschrieben wurde, um den Zugriff auf den gemeinsam genutzten Speicher für den Prozessor 104 in dem ersten Computersystem 150 zu koordinieren. Die Speichermarkierungseinheit 107 des ersten Computersystems 150 und die Zustandsmaschine 308, die sich in dem zweiten Computersystem 350 befindet, dienen zur Koordinierung des Zugriffs auf den gemeinsam genutzten Speicher 106 für den Prozessor 304 in dem zweiten Computersystem. Wenn entweder der Prozessor 104 in dem ersten Computersystem oder der Prozessor 304 in dem zweiten Computersystem 350 den Zugriff auf den gemeinsam genutzten Speicher 106 anstrebt, liest er zuerst den Inhalt der Speichermarkierungseinheit 107. Wenn auf den gemeinsam genutzten Speicher aktuell von dem anderen Prozessor zugegriffen wird, wird der Prozessor, der den Zugriff anstrebt, nicht versuchen, gleichzeitig auf den gemeinsam genutzten Speicher 106 zuzugreifen. Er wird stattdessen warten und fortfahren, den Status des gemeinsam genutzten Speichers 106 zu überprüfen, indem er periodisch den Inhalt der Speichermarkierungseinheit 107 liest. wenn jedoch auf den gemeinsam genutzten Speicher 106 nicht von einem anderen Prozessor zugegriffen wird, verändert der Prozessor, der den Zugriff anstrebt, den Inhalt der Speichermarkierungseinheit 107, um anzuzeigen, dass er aktuell den Zugriff auf den gemeinsam genutzten Speicher 106 hat. Dies hindert den anderen Prozessor daran, den gemeinsam genutzten Speicher 106 zu benutzen, während auf den gemeinsam genutzten Speicher 106 zugegriffen wird.
  • Der Prozessor, der den Zugriff auf den gemeinsam genutzten Speicher 106 hat, lädt Informationen von der Speichermarkierungseinheit 107 über den auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführten Prozess in eine Zustandsmaschine in seinem Computersystem. Die Zustandsmaschine verwendet diese Informationen, um den Prozessor, der den Zugriff hat, zu instruieren, was mit dem gemeinsam genutzten Speicher 106 getan werden sollte. Der auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführte Prozess kann erfordern, dass der Prozessor, der den Zugriff hat, zuerst eine Aufgabe mit einer höheren Priorität ausführt, bevor er irgendetwas anderes mit dem gemeinsam genutzten Speicher 106 tun kann. In dieser Situation instruiert die Zustandsmaschine den Prozessor, der den Zugriff hat, diese Aufgabe hoher Priorität auszuführen. Wenn andererseits der auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführte Prozess nicht verlangt, dass der Prozessor, der den Zugriff anstrebt, irgendeine andere Aufgabe ausführt, kann der Prozessor jede beliebige Aufgabe ausführen, die er ausführen will. Nachdem der Prozessor, der den Zugriff hat, die Ausführung seiner Aufgabe beendet hat, aktualisiert er den Inhalt in der Speichermarkierungseinheit 107, um die Aktivitäten wiederzugeben, die erfolgt sind. Dies gestattet dem nächsten Prozessor, der den Zugriff auf den gemeinsam genutzten Speicher 106 anstrebt, zu erfahren, ob es eine Aufgabe gibt, die er ausführen muss.
  • Bei einem Ausführungsbeispiel der vorliegenden Erfindung ist der gemeinsam genutzte Speicher 106 über einen PCMCIA-Slot 310 des zweiten Computersystems 350 verbunden. Die Speichermarkierungseinheit 107 und die Zustandsmaschine 108 des ersten Computersystems 150 und die zweite Zustandsmaschine 308 des zweiten Computersystems 350 ermöglichen, dass die Kommunikation zwischen den Computersystemen über den gemeinsam genutzten Speicherplatz 106 stattfindet. Der Vorteil der Verwendung einer gemeinsam genutzten Speicherregion vereinfacht die Implemenitierung des Systems. Andere Verfahren der Kommunikation zwischen den Prozessoren (ein Spezialbus, über eine serielle Leitung oder ein Netzwerk etc.) machen zusätzliche Hardware, zusätzliche Software-Komplexität oder beides erforderlich. Außerdem beseitigt das Verfügbarmachen der Daten über einen gemeinsam genutzten Speicher teilweise die Notwendigkeit, dass jede CPU Daten von irgendeinem Kommunikationskanal in ihren eigenen Speicher kopiert; da der gemeinsam genutzte Platz als irgendein beliebiger anderer RAM erscheint, muss die CPU nicht ständig Zeit aufwenden, um auf den/von dem Kommunikationskanal zu kopieren.
  • Die Kommunikation über den gemeinsam genutzten Speicher 106 gestattet, dass zwischen den zwei Computersystemen Fernprozeduraufrufe (RPC) ausgeführt werden. RPC ist der Mechanismus, mit welchem eine Anwendung auf einem Computersystem die Systemdienste (Bibliotheken) auf dem anderen verwenden kann. Beispielsweise kann eine Anwendung auf dem ersten Computersystem 150 RPC verwenden, um auf CPU-intensive Routinen auf dem zweiten Computersystem 350 zuzugreifen, oder umgekehrt. Die RPC-Schnittstelle gestattet ebenfalls, dass ein Computersystem Systeminformationen an das andere Computersystem bereitstellt. Die vorliegende Erfindung gestattet auch die Inter-Prozess-Kommunikation (IPC). Die IPC gestattet, dass Informationen zwischen zwei auf zwei verschiedenen Computer systemen laufenden Aufgaben gesendet werden. Anwendungen eines Computersystems ist es gestattet, außerhalb des Computersystems zu kommunizieren. Beispielsweise kann ein Schlüsselprogramm in einem Computersystem mit einer Türknopf-Anwendung in einer intelligenten Tür sprechen, oder ein Banking-Programm in einem Computersystem kann mit einem Geldautomat(ATM)-Programm in einem Geldautomaten sprechen.
  • Beide Prozessoren 104 und 304 reagieren auf Veränderungen in der Speichermarkierungseinheit 107. Die Prozessoren 104 und 304 können eine Abrufroutine implementieren, welche den Status der Speichermarkierungseinheit 107 periodisch überprüft. Wenn der Inhalt der Speichermarkierungseinheit 107 verändert wird, um die Beendigung einer Aufgabe wiederzugeben, aktivieren die Prozessoren 104 und 304 die Zustandsmaschinen 108 und 308 in ihren jeweiligen Computersystemen. Aus den Informationen über die auf dem gemeinsam genutzten Speicher 106 zuletzt ausgeführte Aufgabe instruieren die Zustandsmaschinen 108 und 308 die Prozessoren darüber, was mit dem gemeinsam genutzten Speicher 106 getan werden sollte.
  • Die Prozessoren 104 und 304 können auch eine Schaltung implementieren, welche den Status der Speichermarkierungseinheit 107 überwacht und immer dann einen Interrupt an die Prozessören 104 und 304 sendet, wenn der Inhalt der Speichermarkierungseinheit 107 verändert wird. Dann starten die Prozessoren 104 und 304 wieder die Zustandsmaschinen 108 und 308, welche die Prozessoren 104 und 304 zu den Prozeduren instruieren, die mit dem gemeinsam genutzten Speicher 106 ausgeführt werden sollten. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird eine Abfrageroutine für Computersysteme implementiert, welche über Prozessoren verfügen, die mit Geschwindigkeiten arbeiten, welche gestatten, dass das Abfragen mit geringer oder keiner Auswirkung auf die Benutzerreaktionszeit ausgeführt wird. Eine Schaltung, welche die Speichermar kierungseinheit 107 überwacht und Interrupts erzeugt, wird für Computersysteme implementiert, welche Prozessoren aufweisen, die mit Geschwindigkeiten arbeiten, die zu gering sind, um in der Lage zu sein, den Inhalt der Speichermarkierungseinheit effektiv abzufragen.
  • 4 zeigt eine Blockdarstellung eines Ausführungsbeispiels der Speichermarkierungseinheit der vorliegenden Erfindung. Die Speichermarkierungseinheit 407 umfasst die Zugriffsanzeigeeinheit 410, die Zustandsaufzeichnungseinheit 411, die Arbitrierungseinheit 412 und die Semaphor-Einheit 413. Die Zugriffsanzeigeeinheit 410 dient der Identifizierung eines Prozessors, welcher aktuell auf den gemeinsam genutzten Speicher zugreift. Der Inhalt der Zugriffsanzeigeeinheit 410 kann von einem Prozessor verändert werden, wenn auf den gemeinsam genutzten Speicher aktuell nicht zugegriffen wird, oder wenn der Prozessor, der den Inhalt der Zugriffsanzeigeeinheit 410 verändert, der Prozessor ist, der aktuell auf den gemeinsam genutzten Speicher zugreift.
  • Die Arbitrierungseinheit 412 ist mit der Zugriffsanzeigeeinheit 410 gekoppelt. Die Arbitrierungseinheit 412 stellt eine Hardware-Arbitrierung bereit, so dass, wenn mehr als ein Prozessor gleichzeitig versucht, den Inhalt der Zugriffsanzeigeeinheit 410 zu verändern, nur einer erfolgreich sein wird. Wenn mehr als ein Prozessor gleichzeitig versucht, auf den gemeinsam genutzten Speicher zuzugreifen, versucht jeder der Prozessoren, den Inhalt der Zugriffsanzeigeeinheit 410 zu verändern, so dass sie anzeigt, dass sie Zugriff auf den gemeinsam genutzten Speicher haben. Die Arbitrierungseinheit 412 kann so programmiert werden, dass sie einem Prozessor die Priorität gegenüber einem anderen einräumt, oder dass sie eine festgelegte physikalische Eigenschaft nutzt, um zu arbitrieren, welcher Prozessor das Recht hat, den Inhalt der Zugriffsanzeigeeinheit 410 zuerst zu verändern.
  • Die Semaphor-Einheit 413 ist mit der Zugriffsanzeigeeinheit 410 gekoppelt. Die Semaphor-Einheit 413 liest den Inhalt der Zugriffsanzeigeeinheit 410. Wenn die Zugriffsanzeigeeinheit 410 feststellt, dass ein bestimmter Prozessor den Zugriff auf den gemeinsam genutzten Speicher hat, hindert die Semaphor-Einheit 413 jeden anderen Prozessor daran, auf den gemeinsam genutzten Speicher zuzugreifen.
  • Die Zustandsaufzeichnungseinheit 411 ist mit der Zugriffsanzeigeeinheit 410 gekoppelt. Die Zustandsaufzeichnungseinheit 411 dient der Identifizierung einer Aufgabe, die von einem Prozessor vorher auf dem gemeinsam genutzten Speicher ausgeführt wurde. Die Identität einer Aufgabe wird als Zustand gekennzeichnet. Die Zustände, die von der Zustandsaufzeichnungseinheit 411 aufgezeichnet werden, können nur von einem Prozessor verändert werden, der aktuell auf den gemeinsam genutzten Speicher zugreift.
  • 5 stellt ein Ausführungsbeispiel einer Zugriffsanzeigeeinheit und einer Zustandsaufzeichnungseinheit der vorliegenden Erfindung dar. Ein Zustandsregister 500 ist ein 8-Bit-Register, welches eine Zugriffsanzeigeeinheit 510 und eine Zustandsaufzeichnungseinheit 511 umfasst. Das Zustandsregister 500 ist in dem ersten Byte des gemeinsam genutzten Speichers angeordnet. Das Anordnen des Zustandsregisters in dem gemeinsam genutzten Platz ist in der Hinsicht hilfreich, dass es der Software gestattet, auf die Informationen genauso zuzugreifen, wie sie auf einen beliebigen anderen Wert in dem Computerspeicher zugreifen würde; einige Beispiele des Standes der Technik erfordern spezielle CPU-Anweisungen oder das Vorhandensein einer separaten Speicherregion. Für die Kommunikation zwischen zwei separaten Systemen gestattet die Unterbringung der Semaphor-/Zustandseinheit in der gleichen Speicherregion, dass zur Übermittlung von Steuerinformationen und Daten ein „Kommunikationskanal" gemeinsam genutzt wird – im Gegensatz dazu, dass ein weiterer Bus oder irgendein anderer Kommunikationspfad für die Steuerinformationen erforderlich ist. Die ersten zwei Bits 501 und 502 des Zustandsregisters 500 repräsentieren die Zugriffsanzeigeeinheit 510. Wenn ein erster Prozessor den Zugriff auf den gemeinsam genutzten Speicher hat, wird das Bit 501 auf Eins und das Bit 502 auf Null gesetzt. Wenn ein zweiter Prozessor den Zugriff auf den gemeinsam genutzten Speicher hat, wird das Bit 501 auf Null und das Bit 502 auf Eins gesetzt. Die letzten vier Bits 505, 506, 507 und 508 des Zustandsregisters 500 repräsentieren die Zustandsaufzeichnungseinheit 511. Die Zustandsaufzeichnungseinheit 511 kann bis zu sechzehn verschiedene Zustände aufzeichnen. Es ist klar, dass weitere Bits für die Zugriffsidentifikationseinheit 510 und die Zustandsaufzeichnungseinheit 511 verwendet werden können, wenn mehr als zwei Prozessoren Zugriff auf den gemeinsam genutzten Speicher haben, oder wenn mehr als sechzehn Zustände vorhanden sind.
  • 6 ist ein Zustandsdiagramm einer Zustandsmaschine gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. 6 stellt fünf Zustände dar, die zum Arbitrieren des Zugriffs auf einen gemeinsam genutzten Speicher zwischen zwei Prozessoren implementiert werden können. Der Kreis 600 repräsentiert den Zustand 0. Aus Zustand 0 kann die Zustandsmaschine jeden Prozessor anweisen, in den gemeinsam genutzten Speicher zu schreiben. Der Kreis 601 repräsentiert den Zustand 1. Im Zustand 1 schreibt ein erster Prozessor Daten in den gemeinsam genutzten Speicher. Aus dem Zustand 1 weist die Zustandsmaschine den zweiten Prozessor an, die Daten zu lesen, die vorher in den gemeinsam genutzten Speicher geschrieben wurden. Der Kreis 602 repräsentiert den Zustand 2. Im Zustand 2 ist der zweite Prozessor bereit, die Daten in dem gemeinsam genutzten Speicher zu lesen. Aus dem Zustand 2 kehrt die Zustandsmaschine zu Zustand 0 zurück. Der Kreis 603 repräsen tiert den Zustand 3. Im Zustand 3 schreibt ein zweiter Prozessor Daten in den gemeinsam genutzten Speicher. Aus dem Zustand 3 weist die Zustandsmaschine den ersten Prozessor an, die Daten zu lesen, die vorher in den gemeinsam genutzten Speicher geschrieben wurden. Der Kreis 604 repräsentiert den Zustand 4. Im Zustand 4 ist der erste Prozessor bereit, die Daten in dem gemeinsam genutzten Speicher zu lesen. Aus dem Zustand 4 kehrt die Zustandsmaschine zu Zustand 0 zurück.
  • 7 zeigt in Form einer Blockdarstellung eine Software-Implementierung der Zustandsmaschine der vorliegenden Erfindung. Das Computersystem umfasst einen Bus 700, einen Mikroprozessor 710, einen Speicher 720, eine Datenspeichereinrichtung 730, eine Tastatursteuereinrichtung 740 und eine Anzeigeeinrichtungs-Steuereinrichtung 750.
  • Der Mikroprozessor 710 kann ein Mikroprozessor mit komplexem Befehlssatz (CISC), ein Mikroprozessor mit reduziertem Befehlssatz (RISC) oder eine andere Prozessoreinrichtung sein. Der Mikroprozessor 710 führt Anweisungen oder Codes aus, die in Speicher 720 gespeichert sind, und führt Operationen an Daten aus, die in Speicher 720 gespeichert sind. Das Computersystem umfasst ferner eine Datenspeichereinrichtung 730, wie beispielsweise ein Festplatten-, Disketten-, oder ein CD-Laufwerk, welches mit Bus 700 gekoppelt ist. Die Anzeigeeinrichtungs-Steuereinrichtung 750 ist ebenfalls mit Bus 700 gekoppelt. Die Anzeigeeinrichtungs-Steuereinrichtung 750 gestattet das Koppeln einer Anzeigeeinrichtung mit dem Computersystem. Die Tastatursteuereinrichtung 740 gestattet das Koppeln einer Tastatur mit dem Computersystem und übermittelt Signale von einer Tastatur an das Computersystem. Der gemeinsam genutzte Speicher 706 und die Speichermarkierungseinheit 707 funktionieren ähnlich wie der gemeinsam genutzte Speicher 106 und die Speichermarkierungseinheit 107, die in 1 beschrieben sind.
  • Der Speicher 720 ist über den Bus 700 mit dem Mikroprozessor 710 gekoppelt. Der Speicher 720 kann eine dynamische Speichereinrichtung mit wahlfreiem Zugriff (DRAM), eine statische Speichereinrichtung mit wahlfreiem Zugriff (SRAM) oder eine andere Speichereinrichtung sein. Der Speicher 720 kann vom Prozessor 710 ausführbare Anweisungen oder Codes speichern, die Bestandteil von Anwendungsprogrammen, Betriebssystemprogrammen oder anderen Computerprogrammen sind. Der Speicher 720 enthält die Zustandsmaschine 721. Die Zustandsmaschine 721 umfasst eine Mehrzahl von Prozessor-ausführbaren Anweisungen, die vom Prozessor 710 auf die in 8 gezeigte Weise ausgeführt werden. Die Zustandsmaschine 721 führt Funktionen aus, die denen der Zustandsmaschine 108 von 1 ähnlich sind.
  • 8 ist ein Flussdiagramm, das ein Verfahren zum Arbitrieren des Zugriffs auf einen gemeinsam genutzten Speicher gemäß einem Ausführungsbeispiel der vorliegenden Erfindung darstellt. Zuerst, lies den Inhalt einer Speichermarkierungseinheit in einem gemeinsam genutzten Speicher, wie in Block 801 gezeigt. Die Speichermarkierungseinheit kann zum Beispiel ein Zustandsregister sein. Die Speichermarkierungseinheit enthält Informationen darüber, ob ein Prozessor aktuell auf die Zustandsmaschine zugreift, und identifiziert eine auf dem gemeinsam genutzten Speicher zuletzt ausgeführte Aufgabe. Als Nächstes, bestimme, ob auf den gemeinsam genutzten Speicher aktuell von einem anderen Prozessor zugegriffen wird, wie in Block 802 gezeigt. Wenn auf den gemeinsam genutzten Speicher aktuell von einem anderen Prozessor zugegriffen wird, kehre zu Block 801 zurück. Wenn auf den Speicher von einem ersten Prozessor zugegriffen wird, muss ein zweiter Prozessor, der den Zugriff anstrebt, warten, bis der erste Prozessor beendet hat. Wenn auf den gemeinsam genutzten Speicher nicht von einem anderen Prozessor zugegriffen wird, gehe zu Block 803. Der Block 803 instruiert die Routine, den Inhalt der Speichermarkierungseinheit zu verändern, so dass sie anzeigt, dass auf den gemeinsam genutzten Speicher aktuell von einem Prozessor zugegriffen wird. Als Nächstes, bestimme, ob eine Aufgabe mit hoher Priorität ausgeführt werden muss. Dies kann erreicht werden, indem die Informationen über die Identität der zuletzt auf dem gemeinsam genutzten Speicher ausgeführten Aufgabe an eine Zustandsmaschine gesendet werden. Die Zustandsmaschine kann eine Zustandstabelle enthalten, welche die Aufgaben definiert? die basierend auf einer vorherigen Aufgabe ausgeführt werden müssen. Dies wird in Block 804 gezeigt. Wenn es eine Aufgabe mit hoher Priorität gibt, gehe zu Block 805. Wenn es keine Aufgabe mit hoher Priorität gibt, gehe zu Block 807. Wenn eine Aufgabe mit hoher Priorität ausgeführt werden muss, weise den Prozessor an, welcher die Aufgabe ausführen muss, die Aufgabe auszuführen. Dies wird in Block 805 gezeigt. Nachdem die Aufgabe ausgeführt ist, zeichne die Aufgabe in der Speichermarkierungseinheit auf, wie in Block 806 gezeigt. Als Nächstes, kehre zu Block 804 zurück, um zu bestimmen, ob eine weitere Aufgabe mit hoher Priorität ausgeführt werden muss. Dann gestatte dem Prozessor den Zugriff auf den gemeinsam genutzten Speicher für seinen ursprünglichen Zweck. Dies wird in Block 807 gezeigt. Nachdem der Prozessor die Aufgabe abgeschlossen hat, zeichne die ausgeführten Aufgabe in der Speichermarkierungseinheit auf, wie in Block 808 gezeigt. Verändere die Informationen in der Speichermarkierungseinheit, so dass sie anzeigt, dass auf den gemeinsam genutzten Speicher aktuell nicht von einem Prozessor zugegriffen wird. Dies wird in Block 809 gezeigt.
  • In der vorhergehenden Beschreibung wird die Erfindung unter Bezugnahme auf bestimmte exemplarische Ausführungsbeispiele derselben beschrieben. Es wird jedoch ersichtlich sein, dass daran verschiedene Modifikationen und Veränderungen vor genommen werden können, ohne den breiteren Schutzbereich der Erfindung, wie er in den beigefügten Ansprüchen dargelegt ist, zu verlassen. Die Beschreibung und Zeichnungen sind dementsprechend im erläuternden und nicht im beschränkenden Sinne zu betrachten.
  • während viele Änderungen und Modifikationen der vorliegenden Erfindung einem Fachmann einfallen werden, nachdem die vorhergehende Beschreibung gelesen wurde, sollte klar sein, dass die speziellen Ausführungsbeispiele, die zur Veranschaulichung gezeigt und beschrieben wurden, in keiner Weise als Beschränkung dienen sollen. Daher haben die Verweise auf Details bestimmter Ausführungsbeispiele nicht den Zweck, den Schutzbereich der Ansprüche zu beschränken, welche ihrerseits nur jene Merkmale angeben, die als wesentlich für die Erfindung betrachtet werden.

Claims (12)

  1. Eine Speichereinheit (107, 407) in einem gemeinsamen Speicher (106), die Speichereinheit (107, 407) enthaltend: eine datenspeichernde Speicherzelle; eine mit der Speicherzelle gekoppelte Zugriffsanzeigeeinheit (410), welche eine Identität eines auf die Speicherzelle zugreifenden ersten Prozessors (104) aufzeichnet; eine mit der Zugriffsanzeigeeinheit (410) gekoppelte Semaphoreinheit (413), welche einen Zugriff eines zweiten Prozessors (204, 304) auf die Speicherzelle verhindert, während die Identität des ersten Prozessors (104) in der Zugriffsanzeigeeinheit (410) aufgezeichnet wird; dadurch gekennzeichnet, daß die Speichereinheit ferner enthält: eine mit der Zugriffsanzeigeeinheit (410) gekoppelte Zustandsaufzeichnungseinheit (411), welche vom ersten Prozessor (104) geschriebene Zustandsinformationen aufzeichnet, die von einer Zustandsmaschine (108, 308) gelesen werden, um eine zuvor auf der Speicherzelle ausgeführte Task und die nächsten Tasks zu bestimmen, die auf der Speicherzelle ausgeführt werden können.
  2. Die Speichereinheit nach Anspruch 1, ferner enthaltend eine mit der Zugriffsanzeigeeinheit (410) gekoppelte Arbitereinheit (412), welche einem Prozessor (104, 204, 304) zu einem Zeitpunkt Zugriff auf die Speicherzelle gewährt.
  3. Die Speichereinheit nach Anspruch 1, wobei die Zugriffsanzeigeeinheit (410) ein Register aufweist.
  4. Die Speichereinheit nach Anspruch 1, wobei die Zustandsaufzeichnungseinheit (411) ein Register enthält.
  5. Ein Computersystem mit einem Bus (100), einem mit dem Bus gekoppelten ersten Prozessor (104) und einem zweiten Prozessor (204, 304), wobei das Computersystem aufweist: eine gemeinsame Speichereinheit (106) mit einer datenspeichernden Speicherzelle, eine mit der Speicherzelle gekoppelte Zugriffsanzeigeeinheit (410), die eine Identität des auf die Speicherzelle zugreifenden ersten Prozessors (104) aufzeichnet, eine mit der Zugriffsanzeigeeinheit (410) gekoppelte Semaphoreinheit (413), welche einen Zugriff des zweiten Prozessors (204, 304) auf die Speicherzelle verhindert, während die Identität des ersten Prozessor (104) in der Zugriffsanzeigeeinheit (410) aufgezeichnet wird; dadurch gekennzeichnet, daß das Computersystem ferner enthält: eine erste Zustandsmaschine (108); und daß die Speichereinheit (106) ferner enthält: eine mit der Zugriffsanzeigeeinheit (410) gekoppelte Zustandsaufzeichnungseinheit (411), die von dem ersten Prozessor (104) geschriebene Zustandsinformationen aufzeichnet, welche von der ersten Zustandsmaschine (108) gelesen wird, um eine zuvor auf der Speicherzelle ausgeführte Task und nächste auf der Speicherzelle auszuführende Tasks zu bestimmen.
  6. Das Computersystem nach Anspruch 5, ferner enthaltend: eine zweite Zustandsmaschine (308), welche den zweiten Prozessor (304) anweist, wie Daten in der Speicherzelle in Abhängigkeit von den in der Zustandsaufzeichnungseinheit (411) aufgezeichneten Zustandsinformationen zu verarbeiten sind.
  7. Das Computersystem nach Anspruch 5, ferner eine mit der Zustandsaufzeichnungseinheit (411) gekoppelte Überwachungseinheit enthaltend, wobei die Überwachungseinheit die Zustandsinformationen überwacht und ein Interrupt-Signal an den ersten Prozessor (104) sendet, welcher die erste Zu standsmaschine (108) startet, wenn es eine Änderung in den Zustandsinformationen gibt.
  8. Das Computersystem nach Anspruch 5, ferner eine mit der Zustandsaufzeichnungseinheit (411) gekoppelte Abfrageeinheit enthaltend, die die Zustandsaufzeichnungseinheit (411) nach einer vorgegebenen Zeitspanne überwacht und die erste Zustandsmaschine (108) startet, wenn die Abfrageeinheit eine Änderung der Zustandsinformationen feststellt.
  9. Verfahren zur Zugriffsentscheidung auf einen gemeinsamen Speicher (106) unter einer Vielzahl von Prozessoren (104, 204, 304), das Verfahren gekennzeichnet durch Bestimmen, ob gerade auf den gemeinsamen Speicher (106) zugegriffen wird; Identifizieren eines Zustandes des gemeinsamen Speichers (106); Bestimmen von auf den gemeinsamen Speicher (106) auszuführenden nächsten Tasks aus dem Zustand des gemeinsamen Speichers (106); und Gewähren von Zugriff auf den gemeinsamen Speicher (106) für einen Prozessor (104, 204, 304) der zum Durchführen einer der nächsten Tasks bezeichnet ist.
  10. Das Verfahren nach Anspruch 9, wobei das Bestimmen, ob auf den gemeinsame Speicher (106) zugegriffen wird, durch Lesen des Inhalts einer Semaphoreinheit (413) erreicht wird.
  11. Das Verfahren nach Anspruch 9, wobei das Identifizieren des Zustands des gemeinsamen Speichers (106) durch Lesen von Zustandsinformationen in einer Zustandsaufzeichnungseinheit (411) erreicht wird.
  12. Das Verfahren nach Anspruch 9, wobei das Bestimmen der auf dem gemeinsamen Speicher (106) auszuführenden nächsten Tasks durch Prüfen eines nächsten Zustands in einer Zustandsmaschine erfolgt.
DE69630126T 1995-07-27 1996-07-02 Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet Expired - Fee Related DE69630126T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US50796295A 1995-07-27 1995-07-27
US507962 1995-07-27
PCT/US1996/011306 WO1997005550A1 (en) 1995-07-27 1996-07-02 Protocol for arbitrating access to a shared memory area using historical state information

Publications (2)

Publication Number Publication Date
DE69630126D1 DE69630126D1 (de) 2003-10-30
DE69630126T2 true DE69630126T2 (de) 2004-06-17

Family

ID=24020812

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69630126T Expired - Fee Related DE69630126T2 (de) 1995-07-27 1996-07-02 Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet

Country Status (5)

Country Link
US (1) US6243793B1 (de)
EP (1) EP0842470B1 (de)
AU (1) AU6452396A (de)
DE (1) DE69630126T2 (de)
WO (1) WO1997005550A1 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9724028D0 (en) * 1997-11-13 1998-01-14 Advanced Telecommunications Mo Shared memory access controller
US6996656B2 (en) * 2002-10-31 2006-02-07 Src Computers, Inc. System and method for providing an arbitrated memory bus in a hybrid computing system
US6665708B1 (en) * 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US6725457B1 (en) * 2000-05-17 2004-04-20 Nvidia Corporation Semaphore enhancement to improve system performance
DE10030380A1 (de) * 2000-06-21 2002-01-03 Infineon Technologies Ag Mehrere CPUs enthaltendes System
IL137085A (en) * 2000-06-29 2004-08-31 Eci Telecom Ltd Method for effective utilizing of shared resources in computerized systems
US7174552B2 (en) * 2002-01-12 2007-02-06 Intel Corporation Method of accessing a resource by a process based on a semaphore of another process
JP2004078683A (ja) * 2002-08-20 2004-03-11 Toshiba Corp コンピュータシステムおよび共有メモリ制御方法
US7133978B1 (en) * 2003-06-19 2006-11-07 Xilinx, Inc. Method and apparatus for processing data stored in a memory shared among a plurality of processors
US20050041510A1 (en) * 2003-08-19 2005-02-24 Jean Khawand Method and apparatus for providing interprocessor communications using shared memory
KR100652690B1 (ko) * 2004-10-28 2006-12-07 엘지전자 주식회사 이동 통신 단말기의 멀티 프로세서 장치
CN100535862C (zh) * 2004-11-30 2009-09-02 皇家飞利浦电子股份有限公司 优先化任务之间的有效切换
JP4748641B2 (ja) 2004-12-06 2011-08-17 ルネサスエレクトロニクス株式会社 情報処理システム
US7823153B1 (en) 2005-09-30 2010-10-26 Symantec Corporation System and method for detecting and logging in-line synchronization primitives in application program code
US7930684B2 (en) * 2005-10-12 2011-04-19 Symantec Operating Corporation System and method for logging and replaying asynchronous events
US8117600B1 (en) 2005-12-29 2012-02-14 Symantec Operating Corporation System and method for detecting in-line synchronization primitives in binary applications
JP4874165B2 (ja) * 2006-07-07 2012-02-15 ルネサスエレクトロニクス株式会社 マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
US7949815B2 (en) * 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
CN102112972B (zh) * 2008-08-07 2014-05-07 日本电气株式会社 多处理器系统及其控制方法
TWI425364B (zh) * 2010-06-22 2014-02-01 Mstar Semiconductor Inc 記憶體共享系統及方法
FR2986346A1 (fr) * 2012-01-27 2013-08-02 Tymis Procede d'utilisation d'une memoire partagee
US9959727B2 (en) 2012-09-21 2018-05-01 Google Llc Handling visitor interaction at a smart-home in a do not disturb mode
US10332059B2 (en) 2013-03-14 2019-06-25 Google Llc Security scoring in a smart-sensored home
US9711036B2 (en) 2012-09-21 2017-07-18 Google Inc. Leveraging neighborhood to handle potential visitor at a smart-home
US9881474B2 (en) 2012-09-21 2018-01-30 Google Llc Initially detecting a visitor at a smart-home
US9640055B2 (en) 2012-09-21 2017-05-02 Google Inc. Interacting with a detected visitor at an entryway to a smart-home
US20150120015A1 (en) * 2012-09-21 2015-04-30 Google Inc. Automated handling of a package delivery at a smart-home
US9953514B2 (en) 2012-09-21 2018-04-24 Google Llc Visitor feedback to visitor interaction with a doorbell at a smart-home
US9626841B2 (en) 2012-09-21 2017-04-18 Google Inc. Occupant notification of visitor interaction with a doorbell at a smart-home
US10735216B2 (en) * 2012-09-21 2020-08-04 Google Llc Handling security services visitor at a smart-home
US9978238B2 (en) 2012-09-21 2018-05-22 Google Llc Visitor options at an entryway to a smart-home
US9600645B2 (en) 2012-09-21 2017-03-21 Google Inc. Smart invitation handling at a smart-home
US9652912B2 (en) 2012-09-21 2017-05-16 Google Inc. Secure handling of unsupervised package drop off at a smart-home
US9960929B2 (en) 2012-09-21 2018-05-01 Google Llc Environmental sensing with a doorbell at a smart-home
CN103268290B (zh) * 2013-01-04 2016-02-17 深圳爱淘城网络科技股份有限公司 基于优先级锁定的闪存存储方法
US9152474B2 (en) * 2014-01-20 2015-10-06 Netapp, Inc. Context aware synchronization using context and input parameter objects associated with a mutual exclusion lock

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4402046A (en) * 1978-12-21 1983-08-30 Intel Corporation Interprocessor communication system
JPS5852264B2 (ja) * 1981-06-12 1983-11-21 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション マルチユニツト・システム
US5274809A (en) * 1988-05-26 1993-12-28 Hitachi, Ltd. Task execution control method for a multiprocessor system with enhanced post/wait procedure
JP2650965B2 (ja) * 1988-05-27 1997-09-10 株式会社日立製作所 計算機システムおよびそのタスクスケジュール方法
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
JP2570872B2 (ja) * 1989-12-04 1997-01-16 三菱電機株式会社 ワンチップマイクロコンピュータ
CA2057446C (en) * 1991-04-04 1998-02-17 Brian Neil Baker Shared memory access and data structure access control
US5440752A (en) * 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU

Also Published As

Publication number Publication date
WO1997005550A1 (en) 1997-02-13
EP0842470B1 (de) 2003-09-24
AU6452396A (en) 1997-02-26
US6243793B1 (en) 2001-06-05
EP0842470A4 (de) 2002-01-02
EP0842470A1 (de) 1998-05-20
DE69630126D1 (de) 2003-10-30

Similar Documents

Publication Publication Date Title
DE69630126T2 (de) Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE69023018T2 (de) Prozessor-Unterbrechungssteuerung.
DE68925474T2 (de) Verriegelungsrechnersysteme
DE69032334T2 (de) Virtuelles Computersystem mit Ein-/Ausgabeunterbrechungssteuerung
DE69032254T2 (de) Rechner mit Tastaturkennwortfunktionen
DE3689696T2 (de) Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln.
DE69534181T2 (de) System mit Endgerät und Karte, Karte und Endgerät
DE3786967T2 (de) Protokoll zum Ungültigerklären eines Cachespeichers für ein digitales Datenverarbeitungssystem.
DE69032862T2 (de) Intelligenter Ein-/Ausgabeprozessor und Datenverarbeitungssystem
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE3586912T2 (de) Datenverarbeitungsanlage mit geschuetzten systemdateien.
DE3879947T2 (de) Verteilte dateiserver-architektur.
DE69620062T2 (de) Datenzugriffimplementierung von Gerätetreiberschnittstelle
DE2629459C2 (de)
DE69031547T2 (de) Befehlsausgabe für ein Rechnersystem
DE19733151B4 (de) Vorrichtung und Verfahren für einen virtuellen Gerätezugriff in einem Computersystem
DE69329104T2 (de) Verfahren und Anordnung zum Übertragen und Verarbeiten von Daten
DE2612139A1 (de) Ein/ausgang-steuerungssystem
DE2750721A1 (de) Ein/ausgabe-system
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2755371A1 (de) Ein/ausgabe-verarbeitungssystem
DE102009050983A1 (de) Eine Technik, um Interrupts in einem Computersystem zu kommunizieren
DE68924992T2 (de) Symmetrische Steuerungsanordnung für Multiverarbeitung.
DE69131763T2 (de) Verfahren zur Kommunikation zwischen Prozessoren eines Mehrprozessorsystems

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee