DE69328841T2 - Mehrfachprozessorrechnersystem - Google Patents

Mehrfachprozessorrechnersystem

Info

Publication number
DE69328841T2
DE69328841T2 DE69328841T DE69328841T DE69328841T2 DE 69328841 T2 DE69328841 T2 DE 69328841T2 DE 69328841 T DE69328841 T DE 69328841T DE 69328841 T DE69328841 T DE 69328841T DE 69328841 T2 DE69328841 T2 DE 69328841T2
Authority
DE
Germany
Prior art keywords
pointer
buffer
memory
message
computer device
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 - Lifetime
Application number
DE69328841T
Other languages
English (en)
Other versions
DE69328841D1 (de
Inventor
Stewart F. Bryant
Michael J. Seaman
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.)
Compaq Computer Corp
Original Assignee
Compaq Computer 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 Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69328841D1 publication Critical patent/DE69328841D1/de
Application granted granted Critical
Publication of DE69328841T2 publication Critical patent/DE69328841T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

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

Description

    Technisches Gebiet
  • Die vorliegende Erfindung betrifft ein Mehrprozessor-Rechnersystem und insbesondere ein Schema zur Kommunikation von Nachrichten zwischen Prozessoren des Mehrprozessor- Rechnersystems.
  • Hintergrund der Erfindung
  • Moderne Rechnersysteme werden oft als Mehrprozessorsysteme implementiert, in denen eine Mehrzahl von Prozessoren zum Beispiel über einen Bus aneinander gekoppelt sind. Beim Betrieb des Rechnersystems müssen die Prozessoren häufig einander Nachrichten übermitteln. Bei einem bekannten Schema wird jede Nachricht von dem sie erzeugenden Prozessor (dem Quellprozessor) in einem Puffer gespeichert. Der Quellprozessor überreicht dann einen Zeiger (pointer) auf den Puffer an denjenigen Prozessor, an den die Nachricht gerichtet ist (den Zielprozessor), und der Zielprozessor verwendet den Zeiger, um die Nachricht aus dem Puffer zu lesen. Es versteht sich, dass dabei jeder Prozessor die Quelle oder das Ziel von Nachrichten sein kann.
  • Das Schema der Pufferzeigerübergabe verhindert temporäre Eingabe/Ausgabe-Bandbreitenprobleme (bandwidth crunches) bei einem bestimmten Zielprozessor, die zum Beispiel auftreten könnten, falls jede vollständige Nachricht direkt an den Zielprozessor übermittelt würde und mehrere Quellprozessoren während derselben Zeitperiode Nachrichten an den bestimmten Quellprozessor übermitteln müssten. Die Übergabe von Zeigern erlaubt es jedem Zielprozessor, die Bewegung von Nachrichten aus den passenden Puffern an den entsprechenden Zielprozessor einzuteilen. Ein bestimmter Zielprozessor kann so ohne weiteres Zeiger empfangen und speichern und auf die zugehörigen Puffer mit den vollständigen Nachrichten während einer mit der Eingabe/Ausgabe-Bandbreite des Zielprozessors konsistenten Zeitperiode zugreifen.
  • Die zur Kommunikation von Nachrichten verwendeten Puffer können alle in einem gemeinsamen zentralen Speicher angeordnet sein, der an den Bus gekoppelt ist. Die Verwendung eines zentralen Speichers vereinfacht die Anforderungen an die gesamte Auslegung des Puffersystems und gewährleistet eine Flexibilität für die Zuordnung von Speichern zwischen Prozessoren. Bei der Initialisierung des Systems erhält jeder Quellprozessor eine Anzahl von Puffern in nerhalb des zentralen Speichers zugeteilt, die mit dem erwarteten Nachrichtenaufkommen von jener Quelle konsistent ist. Zusätzlich kann der gemeinsame Speicher mit einer Eingabe/Ausgabe-Bandbreite implementiert werden, die zum Beispiel bei dem Zweifachen der Spitzenempfangsrate für Nachrichten liegt, so dass der Zentralspeicher die höchstmögliche Menge an vollständigem Nachrichtenverkehr, der innerhalb des Systems generiert wird, beherrschen kann. Auf diese Weise gibt es bei jedem potentiellen Zielprozessor weniger strenge Bandbreitenanforderungen, welche wie angedeutet nur Zeiger auf die die vollständigen Nachrichten speichernden Puffer empfangen müssen und welche so arbeiten, dass sie sich die Übertragung der vollständigen Nachrichten mit einer Rate innerhalb der Eingabe/Ausgabe- Bandbreite des bestimmten Zielprozessors einteilen.
  • Während der bekannte Pufferzeigeransatz für die Mehrprozessor-Kommunikation ein vorteilhaftes Schema zur effizienten Übertragung von Nachrichten zwischen Prozessoren bereitstellt, gewährleistet das Schema nicht in adäquater Weise einen sichergestellten Vorrat freier Puffer für jeden Quellprozessor vermöge einer verlässlichen Rückgabe freier Puffer durch Zielprozessoren. Dies trifft insbesondere auf Mehrprozessorsysteme mit hohem Nachrichtenverkehr zu.
  • Die europäische Veröffentlichung 0 424 758 offenbart ein Verfahren zur Verwaltung von seriell wiederverwendbaren Ressourcen zwischen N Prozessoren, bei dem ringförmige Felder von, Elementen verwendet werden, welche die verfüg baren Ressourcen repräsentieren. Zu diesem Zweck werden Zulassungsflags und Ressourcenhandles in Verbindung mit einem Quellen-Wiederherstellungsprozess verwendet. Eine Hinzufüge-Referenz und eine Wiederherstellungs-Referenz werden verwendet, um die Elemente in dem ringförmigen Feld zu referenzieren.
  • Zusammenfassung der Erfindung
  • Gemäß der Erfindung wird ein Verfahren zur Übertragung von Nachrichten zwischen Computereinrichtungen mit den Merkmalen von Anspruch 1 bereitgestellt.
  • Gemäß der Erfindung wird ebenfalls ein Rechnersystem mit den Merkmalen von Anspruch 3 bereitgestellt.
  • Die vorliegende Erfindung stellt ein Schema zur Nachrichtenkommunikation zur Verfügung, welches eine geordnete und garantierte Rückgabe von freien Puffern an einen Quellprozessor als Teil des Protokolls zur Nachrichtenweiterleitung sicherstellt. Im allgemeinen umfasst die vorliegende Erfindung ein Pufferswapping (Übergabe)-Schema, bei welchem ein Zeiger auf einen freien Puffer durch einen Zielprozessor an einen Quellprozessor zurückgegeben wird als Bedingung des Quellprozessors dafür, einen Zeiger auf einen Puffer, welcher eine an den Zielprozessor gerichtete Nachricht enthält, zu übergeben. Auf diese Weise wird der Verbraucher der Puffer, der Zielprozessor, dafür verantwortlich gemacht, einen adäquaten Vorrat der Pufferressource aufrecht zu erhalten. Gemäß einem Merkmal der vor liegenden Erfindung ist das Pufferswapping-Schema in einer solchen Weise implementiert, dass die Notwendigkeit zur Synchronisation der Quell- und Zielprozessoren für den Austausch von Pufferzeigern oder die Notwendigkeit des Synchronisation von Quellprozessoren, die Nachrichten an einen gemeinsamen Zielprozessor übertragen, vermieden wird.
  • Zu diesem Zweck hält der Zielprozessor einen Vorrat an Zeigern auf freie Puffer aufrecht, und der Quellprozessor führt während der Übergabe eines Zeigers an den Zielprozessor eine unabhängige Reihenfolge von Schritten aus, um einen der freien Puffer zu bekommen, bevor der Zeiger auf den die Nachricht für den Zielprozessor enthaltenen Puffer übertragen wird. Jeder Zielprozessor ist so eingerichtet, dass er eine Menge von Pufferringspeichern unterhält, von denen jedem potentiellen Quellprozessor je einer zugeordnet ist, um jedes potentielle Ziel mit allen potentiellen Quellen von Nachrichten zu verbinden. Die Ringspeicher eines bestimmten Zielprozessors können als ein lokaler Speicher beim Zielprozessor implementiert werden. Alternativ können alle Ringspeicher in einer zentralen Speicherressource implementiert werden, die für den Austausch von Pufferzeigern für alle Quell- und Zielprozessoren zugänglich ist.
  • Jeder Pufferringspeicher enthält eine Reihe von Speicherstellen (locations) für die Speicherung von Zeigern auf Puffer, die an den zum Pufferring zugehörigen Zielprozessor gerichtete Nachrichten von einer entsprechenden Quelle enthalten. Die Verwendung von zugeordneten Ringspeichern befreit von der Notwendigkeit, Quellprozessoren, die Nachrichten an einen gemeinsamen Zielprozessor übertragen, zu synchronisieren. Wie beschrieben hat jeder Quellprozessor einen definierten, zugeordneten Speicherraum innerhalb seines Pufferringspeichers für die Speicherung von Pufferzeigern und kann daher unter Ausschluss von anderen potentiellen Quellprozessoren von diesem Speicherraum lesen und dorthin schreiben. Die Verwendung eines gemeinsamen Zeigerspeicherraumes für einen bestimmten Zielprozessor, welcher von allen Quellprozessoren, die Nachrichten an den bestimmten Zielprozessor übermitteln, geteilt wird, würde atomare (ätomic) oder verriegelte (interlocked) Bustransaktionen wie zum Beispiel lies-verändere-schreibe verriegelte (read-modify-write interlocked) Bustransaktionen erfordern, um die Vervollständigung eines Pufferaustausches durch einen der Quellprozessoren sicherzustellen. Die atomaren Bustransaktionen würden benötigt, um den Zugriff auf den gemeinsamen Speicherraum durch einen anderen Quellprozessor auszuschließen, bevor der aktuelle Pufferzeigeraustausch abgeschlossen ist.
  • An jeder Speicherstelle eines Pufferringspeichers wird eine geeignete Anzeige wie zum Beispiel ein "Eigentümerbit" vorgesehen, um die Speicherstelle als zulässig/nicht zulässig in Bezug auf jeden der Quell- und Zielprozessoren, die durch den entsprechenden Pufferringspeicher verbunden sind, zu markieren. Das Eigentümerbit wird verwendet, um einem die Speicherstelle lesenden Prozessor mitzuteilen, ob der an der Speicherstelle gespeicherte Zeiger jenem Prozessor "gehört". Im allgemeinen enthält eine Speicherstelle, die einem zum Pufferringspeicher korrespondierenden Quellprozessor gehört, einen Zeiger auf einen freien Puffer, der für die Rückübertragung an den Quellprozessor verfügbar ist. Andererseits enthält eine Speicherstelle, die einem zum Pufferring korrespondierenden Zielprozessor gehört, einen Zeiger auf einen Puffer, der eine an den Zielprozessor gerichtete Nachricht vom entsprechenden Quellprozessor speichert.
  • Eine Nachrichtenübertragung durch Übertragung eines Zeigers auf den Puffer, in dem die Nachricht gespeichert ist, kann zwischen irgendeinem Quellprozessor und irgendeinem Zielprozessor in zwei Bustransaktionen ausgeführt werden. Ein Quellprozessor mit einer an einen bestimmten Zielprozessor zu sendenden Nachricht speichert anfänglich die Nachricht in einem freien Puffer im zentralen gemeinsamen Speicher. Während einer ersten Bustransaktion liest der Quellprozessor eine nächste Speicherstelle seines Pufferringspeichers, der zu dem beabsichtigten Zielprozessor gehört. Falls die Speicherstelle dem Quellprozessor gehört, liest der Quellprozessor den darin gespeicherten Zeiger zwecks Verwendung als freier Puffer in einer nachfolgenden Nachrichtenübertragung.
  • Der Quellprozessor schreibt dann während der zweiten Bustransaktion an die Speicherstelle des Pufferringspeichers, von der er gerade den Zeiger auf einen freien Puffer gelesen hat, den Zeiger auf den Puffer im zentralen Speicher, in welchem er die Nachricht für den entsprechen den Zielprozessor gespeichert hat. Der Quellprozessor ändert ferner den Zustand des Eigentümerbits um anzuzeigen, dass die Speicherstelle jetzt dem entsprechenden Zielprozessor gehört und um anzuzeigen, dass die Speicherstelle einen Zeiger auf einen Puffer mit einer Nachricht für das Ziel speichert. Auf diese Weise erhält der Quellprozessor einen freien Puffer als Teil und Paket (parcel) der Übertragung einer Nachricht über unabhängige Bustransaktionen zum Zugriff auf seinen Pufferringspeicher.
  • Jeder Zielprozessor wird so betrieben, dass er die Speicherstellen der lokalen Pufferringspeicher nach in seinem Eigentum befindlichen Speicherstellen abfragt (poll), das heißt nach Speicherstellen, die Zeiger auf Puffer mit Nachrichten für den entsprechenden Zielprozessor enthalten. Wenn der Zielprozessor eine in seinem Eigentum befindliche Speicherstelle ausmacht, liest er den darin gespeicherten Zeigerwert und überschreibt dann die Speicherstelle mit einem Zeiger auf einen freien Puffer aus seinem Vorrat an freien Puffern. Danach ändert der Zielprozessor das Eigentümerbit, so dass es erneut anzeigt, dass dem Quellprozessor jene Speicherstelle und der darin gespeicherte Zeiger auf einen freien Puffer gehört. Dementsprechend muss jeder Zielprozessor einem bestimmten Quellprozessor beim Lesen eines jeden Nachrichtenzeigers einen freien Puffer zugänglich machen. Der Zielprozessor kann Zeiger auf Nachrichten enthaltende Puffer für einen zukünftigen Zugriff auf den zentralen Pufferspeicher in eine Warteschlange einreihen, um die Nachrichten mit der Eingabe/Ausgabe-Bandbreite des Zielprozessors zu lesen.
  • Dementsprechend wird jedesmal, wenn ein Zeiger auf einen eine Nachricht enthaltenden Puffer an einen Zielprozessor übertragen wird, ein freier Puffer durch den Zielprozessor an einen Quellprozessor verfügbar gemacht. Weiterhin wird der Zeigeraustausch durch den unabhängigen Betrieb der Quell- und Zielprozessoren über die zwei Bustransaktionen des Quellprozessors zum Lesen und Schreiben von einem entsprechenden zugeordneten Ringspeicher und über das separate Abfragen/Schreiben freier Zeiger des Zielprozessors vollendet. Daher besteht keine Notwendigkeit, die Prozessoren zu synchronisieren, um jeden Freier-Zeiger-/ Nachrichtenzeiger-Austausch zu beeinflussen, und der Austausch kann in einer unabhängigen Busoperation ohne die Notwendigkeit für ein Lesen-Verändern-Schreiben oder andere verriegelte Bustransaktionen erfolgen.
  • Der unabhängige Betrieb der Quell- und Zielprozessoren in dem Pufferswapping-Schema kann auch dazu verwendet werden, Latenzanforderungen zu erleichtern oder die Busbreite weiter zu reduzieren. Der Quellprozessor kann zum Beispiel so betrieben werden, dass er eine Anzahl von Speicherstellen in einem Pufferringspeicher "im voraus liest", um eine vorgegebene Anzahl von freien Puffern in einer einzigen Bustransaktion zu bekommen. Ein Hochleistungs-Quellprozessor kann hierdurch darauf vorbereitet werden, einen burst von Nachrichten unter Verwendung der erworbenen Anzahl von freien Puffern zu senden. In ähnlicher Weise kann der Quellprozessor so betrieben werden, dass er in einer einzigen Bustransaktion mehrere Nachrichtenzeiger in die Anzahl Speicherstellen in dem Pufferringspeicher schreibt, um Latenzen weiter zu erleichtern und die Busbandbreite zu reduzieren. Zusätzlich setzt die Verwendung von zugeordneten Pufferringspeichern bei jedem potentiellen Zielprozessor - einem für jede potentielle Quelle - jeden bestimmten Zielprozessor in die Lage, automatisch zu wissen, woher Nachrichten kommen und an welchen Quellprozessor er freie Puffer zurückgibt.
  • In einer Ausgestaltung der vorliegenden Erfindung wird zusätzlich zum Eigentümerbit an jeder Pufferring-Speicherstelle Steuerinformation bereitgestellt. Die Steuerinformation enthält ein "Anfang/Fortsetzung/Letzter"-Markierungsfeld und in bestimmten Zeigern ein "Leseerlaubnis"- Feld.
  • Das "Anfang/Fortsetzung/Letzter"-Markierungsfeld wird verwendet, um Puffer aneinander zu binden, so dass Nachrichten, die zu groß sind, um in einem einzigen Puffer fester Größe gespeichert zu werden, in mehreren logisch zusammenhängenden Puffern gespeichert werden können. Das Markierungsfeld eines einen ersten Teil einer langen Nachricht speichernden Puffers wird zur Anzeige des "Anfang"-Zustands gesetzt, wobei nachfolgende Puffer für nachfolgende Teile der Nachricht ihre entsprechenden Markierungsfelder jeweils in einen "Fortsetzung"-Zustand gesetzt haben, bis zum den letzten Teil der Nachricht speichernden Puffer, dessen Markierungsfeld in den "Letzter"-Zustand gesetzt ist. Auf diese Weise können Nachrichten variierender Größe zwischen Prozessoren übermittelt werden, während für jeden Puffer eine feste Größe beibehalten wird.
  • Das Merkmal fester Puffergröße erleichtert das Pufferswapping-Schema gemäß der vorliegenden Erfindung, da jeder freie Puffer, welcher für einen Nachrichtenpuffer getauscht wird, vorteilhafterweise an einer Pufferringspeicherstelle gespeichert wird, bevor wie oben beschrieben der Nachrichtenpuffer beschrieben wird. Auf diese Weise stellt die Verwendung einer festen Größe für alle Puffer sicher, dass konsistent adäquater Pufferraum während des Pufferswapping-Betriebs zurückgegeben wird. Mit anderen Worten wird in dem Pufferaustausch für einen Nachrichtenpuffer jedesmal ein freier Puffer mit einer dem Nachrichtenpuffer gleichen Größe übergeben. Durch Verwendung des "Anfang/Fortsetzung/Letzter"-Markierungsfeldes kann die feste Größe der Puffer für eine effiziente Speicherzuordnung durch eine solche Festsetzung der Größe, dass diese kleiner als die maximal mögliche Nachrichtengröße ist, optimiert werden, also zum Beispiel eine Größe, welche näherungsweise gleich der mittleren Nachrichtengröße ist. Dennoch gewährleistet das "Anfang/Fortsetzung/Letzter" - Markierungsfeld die Flexibilität, Puffer zusammenzubinden und so Nachrichten bis zu einer maximalen Nachrichtengröße zu bewältigen.
  • Das "Leseerlaubnis"-Feld ermöglicht einem Quellprozessor, in einer Nachrichtenübertragungsoperation eine Nachricht an mehrere Ziele zu übertragen. Der Einschluss eines "Leseerlaubnis"-Feldes in einem Zeiger teilt jedem angesprochenen Zielprozessor mit, dass der Pufferringspeicher einen Zeiger auf eine Nachricht enthält, dass aber die Pufferringspeicherstelle einen Nur-Lese-Zugriff hat und der Puffer weiterhin der Quelle gehört. Der Quellprozessor unterhält eine Tabelle, in der Informationen über Zielprozessoren gespeichert sind, an die eine bestimmte Nachricht übertragen werden soll. Eine "Nachricht- Gelesen"-Mitteilung wird von jedem angesprochenen Zielprozessor nach Lesen der bestimmten Pufferringspeicherstelle an den Quellprozessor zurückgegeben, so dass der Quellprozessor die Tabelle in dem Maße fortschreitend löschen kann, wie "Nachricht-Gelesen"-Mitteilungen empfangen werden. Wenn alle der angesprochenen Zielprozessoren die Nachricht gelesen haben, ist der Puffer erneut zur Verwendung frei mit einer positiven Anzeige aus der jetzt gelöschten Tabelle, dass die Nachricht von allen angesprochenen Zielprozessoren empfangen wurde.
  • Auf diese Weise stellt die vorliegende Erfindung ein geradliniges Schema zur Übertragung von Nachrichten zwischen Prozessoren zur Verfügung. Das Schema kann in einem busunabhängigen Transfer implementiert werden, welcher eine garantierte Rückgabe von freien Puffern an jeden Quellprozessor sicherstellt. Die Größen der Pufferringspeicher bei jedem Zielprozessor sind fixiert, so dass die Abfrageoperation eines Zielprozessors zeitlich optimal abgestimmt werden kann, um mit der Übertragung von Nachrichten an den Zielprozessor Schritt zu halten. Wenn jeder Quellprozessor sich entlang der ihm zugeordneten Pufferringspeicher bewegt, gehört auf diese Weise eine nächste Speicherstelle immer dem Quellprozessor. Somit kann jeder Quellprozessor auch so eingerichtet werden, dass er einen Fehlfunktionsalarm abgibt, wenn die Eigentümerschaft der nächsten Pufferringspeicherstelle, die vom Quellprozessor gelesen wird, nicht der Quelle gehört. Auf diese Weise kann das Pufferswapping-Schema der vorliegenden Erfindung verwendet werden, um eine effiziente Alarmfunktion zu implementieren, so dass eine geeignete Aktion durch einen Netzwerkmanager ergriffen werden kann, um das System zu rekonfigurieren, damit der freie Pufferaustausch sichergestellt ist.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm eines beispielhaften Mehrprozessor-Rechnersystems, welches das Pufferswapping-Schema der vorliegenden Erfindung implementiert.
  • Fig. 2 ist eine schematische Darstellung eines Pufferswapping-Schemas, das im Rechnersystem von Fig. 1 implementiert ist.
  • Fig. 3 ist ein Software-Blockdiagramm eines Quellprozessors, welcher eine Pufferübergabe in Bezug auf eine an einen Zielprozessor zu übertragende Nachricht ausführt.
  • Fig. 4 ist ein Software-Blockdiagramm eines Zielprozessors, welcher eine Pufferübergabe in Bezug auf eine von einem Quellprozessor übertragene Nachricht ausführt.
  • Fig. 5 ist ein Blockdiagramm einer Zeigerspeicherstelle.
  • Fig. 6 ist ein Blockdiagramm eines Mechanismus für eine gestreute Nachrichtensendung (broadcast).
  • Fig. 6A ist ein Blockdiagramm für eine Zeigerspeicherstelle, welche bei einem gestreuten Nachrichtensenden (broadcast) verwendet wird.
  • Detaillierte Beschreibung der Zeichnungen
  • In den Zeichnungen und insbesondere in Fig. 1 ist ein Mehrprozessor-Rechnersystem dargestellt, welches allgemein durch die Bezugsziffer 10 bezeichnet wird. Irr dargestellten System ist eine Mehrzahl von Leitungskarten 12 (line cards) so angeordnet, dass jede Leitungskarte 12 an einen Rückwandbus 14 (backplane bus) gekoppelt ist. Ein zentraler Pufferspeicher 16 ist ebenfalls an den Bus 14 gekoppelt, so dass die Leitungskarten 12 auf den zentralen Pufferspeicher 16 zugreifen können, um zwischen den Leitungskarten 12 zu kommunizierende Nachrichten zu lesen und zu schreiben.
  • Es gibt n Leitungskarten 12, welche mit 0 bis n bezeichnet werden und welche zusammen einen Multi-Protokoll-Router / eine Brücke in einem Computernetzwerk (nicht dargestellt) bereitstellen. Jede Leitungskarte 12 enthält eine Leitungsschnittstelle 18, einen Prozessor 20, eine Busschnittstelle 22 und einen Ringspeicher 24.
  • Jede Leitungsschnittstelle 18 ist dazu eingerichtet, an einen Datenübertragungsdienst wie zum Beispiel T&sub1; oder 64 K bps Dienste gekoppelt zu werden, welche von Fern- Telekommunikationsunternehmen bereitgestellt werden, oder an ein LAN, um Datenpakete von anderen Komponenten des Computernetzwerkes zu empfangen oder dorthin zu übermitteln. Die Leitungsschnittstellen 18 sind jeweils so konfiguriert, dass sie eine Funktionalität auf physikalischem Niveau und dem Niveau der Datenübertragung gemäß dem Netzwerkprotokoll bereitstellen, welches in denn Datenübertragungsdienst implementiert ist, an den die jeweilige Leitungsschnittstelle 18 gekoppelt werden soll.
  • Der Prozessor 20 jeder Leitungskarte 12 führt eine Routing- oder Überbrückungsverarbeitung in Bezug auf die Datenpakete aus, die bei der entsprechenden Leitungskarte 12 empfangen werden oder hiervon übermittelt werden sollen. Auf der Empfängerseite überprüft jeder Prozessor 20 zum Beispiel die im Header des empfangenen Datenpaketes enthaltene Netzwerkadresse um festzustellen, welche Leitungskarte 12 dazu verwendet werden soll, das Datenpaket für ein fortgesetztes Routing oder eine Überbrückung innerhalb des Computernetzwerks zu übermitteln.
  • Jedes Datenpaket ist daher eine potentielle "Nachricht" an einen Prozessor 20 einer anderen Leitungskarte 12, das heißt, das empfangene Datenpaket muss an den Prozessor 20 der übertragenden Leitungskarte 12 zur Verarbeitung und eventuellen Übermittlung über die Leitungsschnittstelle 18 der anderen Leitungskarte 12 übergeben werden. Dement sprechend stellt das Mehrprozessor-Rechnersystem 10 von Fig. 1 ein Beispiel eines Systems mit hohem Nachrichtenverkehr dar. Jeder Prozessor 20 verarbeitet primär Datenpakete, welche von anderen Prozessoren 20 empfangen werden sollen oder welche an andere Prozessoren 20 übermittelt werden sollen, um die Übermittlung von Datenpaketen durch den Router oder die Brücke, die vom Mehrprozessor-Rechnersystem 10 bereitgestellt werden, zu vollenden.
  • Zu diesem Zweck speichert jeder Prozessor 20 jede empfangene Nachricht über die entsprechende Busschnittstelle 22 der Leitungskarte 12 in einem freien Puffer im Pufferspeicher 16. Die Busschnittstelle 22 arbeitet entsprechend einem auf dem Bus 14 implementierten Busprotokoll, um die Kontrolle des Busses 14 zu erhalten und danach über den Bus 14 eine Schreiboperation in den ausgewählten Puffer des Pufferspeichers 16 auszuführen. Erfindungsgemäß wird dann ein Zeiger auf den Puffer an den Prozessor 20 der übermittelnden Leitungskarte 12 übermittelt, welche den Zeiger verwendet, um für die Netzwerkverarbeitung und eventuelle Übermittlung das vollständige Datenpaket aus dem Pufferspeicher 16 zu lesen.
  • Der Ringspeicher 24 jeder Leitungskarte 12 ist in n Pufferringe eingeteilt, von denen den anderen Leitungskarten 12 des Systems 10 je einer und einer dem Prozessor 20 derselben Leitungskarte 12 zugeordnet ist. (In dem Beispielssystem wird ein Datenpaket, welches von einer Leitungskarte 12 empfangen wird und das letztendlich durch dieselbe Leitungskarte 12 weiter übertragen werden soll, durch dasselbe Nachrichtenweiterleitungsschema wie andere Datenpakete von der Leitungskarte weg und zurück zu der Leitungskarte gesendet.) Die Ringspeicher 24 werden jeweils verwendet, um Zeiger von den anderen Leitungskarten 12 zu speichern, bis der Prozessor 20 der Leitungskarte 12 eine Buslesetransaktion über den Bus 14 ausführen kann, um das vollständige Datenpaket vom zentralen Speicher 16 zu lesen.
  • In Fig. 2 ist eine schematische Darstellung des Pufferswapping-Schemas gemäß der vorliegenden Erfindung gezeigt. RX1 und RX2 repräsentieren jeweils eine der Leitungskarten 12, wenn die entsprechende Leitungskarte als Empfänger von Datenpaketen agiert. TXa und TXb repräsentieren jeweils eine der Leitungskarten 12, wenn die entsprechende Leitungskarte als Sender von Datenpaketen agiert. RXP repräsentiert ein Datenpaket-Empfangsmodul, welches bei jedem Prozessor 20 einer Leitungskarte 12 bereitgestellt ist, um empfangene Datenpakete zu verarbeiten, während TXP ein Datenpaket-Sendemodul repräsentiert, welches bei jedem Prozessor 20 einer Leitungskarte 12 vorgesehen ist, um Datenpakete für die Sendung zu verarbeiten.
  • Wie oben beschrieben ist jeder Pufferringspeicher 24 in n Ringe 24A eingeteilt, wobei jeder Ring eine vorgewählte Anzahl von Speicherstellen 26 für die Speicherung von Zeigern auf Puffer im zentralen Speicher 16 aufweist.
  • Außerdem ist jeder Ring 24A der Verwendung durch eines der RXP-Module gewidmet, wie durch die Linien 28 illustriert wird. Durch das TXP-Modul jeder Leitungskarte 12 wird eine FREE-Pufferwarteschlange 30 und eine Sende (TXQ)-Pufferwarteschlange 32 unterhalten.
  • Wenn ein RXP-Modul eine zuvor in einem Puffer des zentralen Speichers 16 gespeicherte Nachricht an ein bestimmtes TXP-Modul mitteilen muss, liest es zunächst eine Speicherstelle 26 des zugeordneten Ringes 24A der entsprechenden Leitungskarte 12. Jedes RXP kann zum Beispiel einen Ringzeiger für jeden zugeordneten Pufferring 24A bereithalten. Jeder Ringzeiger enthält eine Adresse einer Speicherstelle 26 des korrespondierenden Pufferringes 24A, der während einer bestimmten Transaktion gelesen werden soll. Das RXP-Modul inkrementiert die Adresse nach jeder Transaktion, um kontinuierlich den Ringpuffer 24A zu durchlaufen.
  • Unter vorübergehender Bezugnahme auf Fig. 5 wird ersichtlich, dass jede Speicherstelle 26 ein Zeigerfeld 34 enthält, um einen Zeiger auf einen Puffer des zentralen Speichers 16 zu speichern, und ein Eigentümerfeld 36 enthält, das ein Bit umfasst, welches entweder einen gesetzten Zustand oder einen gelöschten Zustand repräsentiert. Der gesetzte Zustand kann die Eigentümerschaft an der Speicherstelle 26 durch das RXP-Modul (den Quellprozessor) repräsentieren, während der gelöschte Zustand die Eigentümerschaft an der Speicherstelle 26 durch das TXP-Modul (den Zielprozessor) repräsentieren kann. Wenn die vom RXP- Modul gelesene Speicherstelle 26 diesem Modul gehört, ist der Zeigerwert 34 (vgl. Fig. 5) ein Zeiger auf einen freien Puffer im zentralen Speicher 16. Das RXP-Modul liest den Zeigerwert und speichert den Wert zur Verwendung in einer nachfolgenden Nachrichtenübertragung.
  • Das RXP-Modul schreibt dann den Zeigerwert 34 für den Puffer, in dem die Nachricht (Datenpaket) im zentralen Speicher 16 gespeichert ist, und ändert den Zustand des Eigentümerfeldes 36, um die Eigentümerschaft durch das TXP-Modul der Leitungskarte 12 anzuzeigen.
  • Jedes TXP-Modul ist so eingerichtet, dass es die Speicherstellen 26 der Ringe 24A auf den entsprechenden Leitungskarten 12 abfragt. Wenn eine Speicherstelle 26 dem TXP- Modul gehört, wird der an dieser Speicherstelle 26 gespeicherte Zeigerwert 36 gelesen und in die TXQ-Warteschlange 32 geladen. Zur selben Zeit schreibt das TXP- Modul auch einen Zeigerwert von seiner FREE-Warteschlange 30 an die Speicherstelle 26 und ändert das Eigentümerbit, so dass es erneut anzeigt, dass die Speicherstelle 26 dem RXP-Modul gehört.
  • Das TXP-Modul bedient jeden in die TXQ-Warteschlange geladenen Zeiger zum Beispiel auf einer FIFO-Basis, um für die vollständige Nachricht auf den zentralen Speicher zuzugreifen. Nachdem das TXP-Modul die mit einem bestimmten Zeigerwert verbundene vollständige Nachricht gelesen hat, überträgt es diesen Zeigerwert in seine FREE-Warteschlange 30 zur Verwendung in einer zukünftigen Pufferswapping-Operation.
  • Auf diese Weise werden Puffer automatisch und kontinuierlich zwischen den Leitungskarten 12 gewechselt, um die Nachrichtenkommunikation durch eine garantierte Rückgabe von freien Puffern zu erleichtern. Die Fig. 3 und 4 veranschaulichen das oben beschriebene Pufferswapping- Schema detaillierter in Bezug auf die Nachrichtenverarbeitung von Quelle beziehungsweise Ziel. Wie in Fig. 3 dargestellt ist, wird jede vollständige Nachricht (Datenpaket) in eine DEVICE-Warteschlange 100 geladen. Das RXP- Modul liest die Nachrichten eine nach der anderen von der DEVICE-Warteschlange 100 und prüft den Header jeden Datenpakets, um in bekannter Weise die Netzwerkadresse zur Bestimmung des TXP-Moduls zu extrahieren, welches die Nachricht (Datenpaket) zur Sendung empfangen soll.
  • Zu diesem Zweck wird eine die Netzwerkadresse umfassende ARE-Anforderung an eine Adressenerkennungsmaschine (nicht dargestellt) gesendet, um relevante Netzwerkinformation einschließlich der Identität des TXP-Moduls, das zum Senden des Datenpakets verwendet werden soll, zu ermitteln. Das RXP-Modul schreibt ferner das Datenpaket in einen Puffer im zentralen Speicher 16. Eine RXP Freie-Puffer- Warteschlange 102 speichert eine Mehrzahl von Zeigern auf freie Puffer, die aus vorangegangenen Pufferswappings gewonnen sind. Das RXP-Modul liest einen obersten freien Pufferzeiger aus der Warteschlange 102 und schreibt das aktuelle Datenpaket in den durch den Zeiger referenzierten Puffer. Die RXP Freie-Puffer-Warteschlange 102 ermöglicht dem RXP-Modul, die Datenpakete am Fließband zu verarbeiten (pipeline). Das heißt, das RXP-Modul kann durch Speichern mehrerer freier Speicherzeiger in der RXP Freie-Warteschlange 102 mit der Verarbeitung eines nachfolgenden Datenpakets von der DEVICE-Warteschlange 100 vor der Rückgabe eines freien Puffers in Bezug auf ein unmittelbar vorangegangenes Datenpakete) beginnen.
  • Es versteht sich, dass das Datenpaket über eine Bustransaktion über den Bus 14 unter Verwendung der Busschnittstelle 22 der entsprechenden Leitungskarte 12 in den zentralen Speicherpuffer geschrieben wird, auf den durch den Zeiger gezeigt wird, welcher aus der RXP Freie-Puffer- Warteschlange 102 erhalten wurde. Das RXP-Modul schreibt dann den Zeigerwert in eine PRE-ADDRESS-Warteschlange 104. RXBA ist ein Submodul des RXP-Moduls, welches dazu eingerichtet ist, das ARE-Ergebnis zu empfangen und das Ergebnis, das die Identität des zum Senden des Datenpakets zu verwendenden TXP-Moduls einschließt, mit dem Zeigerwert auf die Zentralspeicherstelle des Datenpakets zu verbinden. Die verbundene Zeiger-/TXP-Information wird durch das RXBA-Modul in einen Rx BIN 106 für eine schließliche Eingabe an ein RxBD-Modul geladen.
  • Das RxBD-Modul verwendet die Eingabeinformation, um einen Descriptor zu erzeugen, welcher die für das Datenpaket relevante Netzwerkinformation enthält. Der Descriptor wird durch das RxBD-Modul zur Verwendung durch das TXP-Modul bei der Sendeverarbeitung auch in den Puffer des zentralen Speichers geschrieben, wo das Datenpaket selbst gespeichert ist. Der Descriptor kann irgendwelche durch das RxP- Modul erhaltene Netzwerkverarbeitungsinformation enthal - ten, welche auch in der vom TXP-Modul ausgeführten Sendeverarbeitung benötigt wird. Das RxBD-Modul gibt jedes verbundene Paar von Zeiger-/TXP-Information an eine SOURCE-Warteschlange 108 weiter.
  • Ein SWAP-Modul entfernt verbundene Paare von Zeiger-/TXP- Information aus der SOURCE-Warteschlange 108 und führt die oben beschriebenen zwei Bustransaktionen über den Bus 14 aus in Bezug auf eine im Eigentum befindliche Speicherstelle 26 des entsprechenden Rings 24A des TXP-Moduls, das mit einem bestimmten Zeiger in der Zeiger-/TXP-Information verbunden ist. Der über die erste Bustransaktion erhaltene freie Puffer wird in die RXP Freie-PufferWarteschlange 102 zur Verwendung durch das RXP-Modul in nachfolgenden Nachrichtenkommunikationen geladen, und der von der SOURCE- Warteschlange 108 erhaltene Zeiger wird an die aktuelle Speicherstelle 26 des entsprechenden Rings 24A geschrieben. Das SWAP-Modul ändert ferner das Eigentümerbit, um die TXP-Eigentümerschaft der aktuellen Speicherstelle 26 anzuzeigen.
  • Gemäß Fig. 4 fragt ein Ringabfragemodul SCAV RINGS bei jedem Prozessor 20 der Leitungskarten 12 jede Speicherstelle der n zu den Leitungskarten 12 gehörigen Ringe 24A ab, um die im Eigentum befindlichen Speicherstellen 26 zu lokalisieren. Das SCAV RINGS Modul ist dafür verantwortlich, die Zeiger jeder in Eigentum befindlichen Speicherstelle 26 zu lesen und danach einen Zeiger aus der FREE- Warteschlange 30 an jene Speicherstelle 26 zu schreiben. Das SCAV RINGS Modul ändert ferner das Eigentümerbit der Speicherstelle 26 zurück in den RXP-Eigentümerschaft-Zustand.
  • Gemäß Fig. 4 enthält die TXQ-Warteschlange 32 eine Menge von Zielbins (Vorratsbehälter) 200 und eine Menge von Zielwarteschlangen 202. Jedes Zielbin 200 wird einem der Ringe 24A zugeordnet, und jede Zielwarteschlange 202 wird in der beispielhaften Ausgestaltung einer Multiprotokoll- Router/Überbrückung einem speziellen Netzwerkprotokoll oder Überbrückungsprotokoll zugeordnet, wobei zum Beispiel OSI und IP Netzwerkprotokolle und BR ein Überbrückungsprotokoll repräsentieren. Die Anordnung der Menge an Bins/Warteschlangen wird dazu verwendet, Nachrichten zunächst nach Quell- und dann nach Protokolltyp abzusondern. Dieses Merkmal der vorliegenden Erfindung gewährleistet Flexibilität bei der Handhabung der Nachrichten in Bezug auf die Quelle der Nachricht und die Art der Nachricht, wie nachfolgend deutlich wird.
  • Gemäß Fig. 5 enthält jede Speicherstelle 26 ein "Anfang/Fortsetzung/Letzter"-Markierungsfeld 38. Wie oben beschrieben sind alle Puffer im zentralen Speicher von gleicher Größe um sicherzustellen, dass eine gleiche Menge an Pufferplatz bei jedem Austausch "Freier Puffer"/ Nachrichtenpuffer gewechselt wird. Das "Anfang/Fortsetzung/- Letzter"-Markierungsfeld 38 stellt einen Mechanismus zur Verbindung von Puffern bereit für die Mitteilung von Nachrichten, die zu groß für die Speicherung in einem einzigen Puffer sind.
  • Wenn ein RXP-Modul eine Nachricht (Datenpaket und zugehörigen Descriptor) mitteilt, welches zu groß für einen einzigen Puffer des zentralen Speichers 16 ist, übermittelt es die Nachricht in mehreren Puffern und verbindet die Puffer über das "Anfang/Fortsetzung/Letzter"-Markierungsfeld. Der erste Abschnitt der Nachricht wird in einem ersten Puffer untergebracht und das RXP-Modul setzt das "Anfang/Fortsetzung/Letzter"-Markierungsfeld des Zeigers auf den ersten Puffer so, dass er ein "Anfang"-Puffer anzeigt. Puffer mit nachfolgenden Teilen der Nachricht werden im zentralen Speicher 16 gespeichert, wobei die entsprechenden Markierungsfelder der zugehörigen Zeiger jeweils zur Anzeige der "Fortsetzung" gesetzt werden, bis zum letzten Teil der Nachricht. Das RXP-Modul setzt das Markierungsfeld für den Pufferzeiger, welcher den letzten Teil der Nachricht enthält, auf die Anzeige "Letzter". Die Anfangs-, Fortsetzungs- und Letzter-Pufferzeiger werden in zusammenhängenden Speicherstellen des passenden Pufferrings 24A, der mit dem Zielprozessor verbunden ist, gespeichert.
  • Um jedoch einen fairen Abfragebetrieb in den SCAV-RINGS Modulen der Prozessoren 20 zu implementieren, kann jedes SCAV-RINGS Modul zum Beispiel so eingerichtet werden, dass es eine Speicherstelle eines bestimmten Ringes 24A abfragt und erst zu jedem anderen Ring 24A weitergeht, bevor es zur nächsten Speicherstelle des bestimmten Ringes 24A zurückkehrt. Auf diese Weise entfernt das SCAV-RINGS Modul die durch ihre entsprechenden "Anfang/Fortsetzung/ Letzter"-Markierungsfelder verbundenen Zeiger nicht der Reihe nach. Die mehreren Zielbins 200 werden verwendet, um einen fairen Abfragebetrieb zu erhalten und dabei noch eine stetige Beziehung zwischen den verbundenen Pufferzeigern, die von einem bestimmten RXP-Modul gesendet werden, aufrecht zu erhalten. Jedes SCAV-RINGS Modul lädt jeden von einem bestimmten Ring 24A gelesenen Zeiger in das dem Ring 24A entsprechende Bin, so dass alle Anfangs-, Fortsetzungs- und Letzter-Pufferzeiger zusammenhängend bleiben, während sie sich durch die sendende Leitungskarte 12 bewegen.
  • Ein SCAV-BINS-Modul wird verwendet, um Pufferzeiger von den Zielbins 200 an passende Zielwarteschlangen 202 zu transferieren. Wie oben beschrieben ist jede Zielwarteschlange 202 einem bestimmten Protokoll gewidmet. Gemäß Fig. 5 wird jede Speicherstelle 26 mit einem TYPE-Feld 40 versehen, welches verwendet wird, um das für die Sendung des Datenpakets in der durch den Zeigerwert angezeigten Nachricht zu verwendende Protokoll anzuzeigen. Das RXP- Modul fügt den Protokolltyp in dem TYPE-Feld vor der Pufferswapping-Operation ein. Das SCAV-BINS Modul prüft das "Anfang/Fortsetzung/Letzter"-Markierungsfeld und das TYPE-Feld für jeden von einem bestimmten Bin 200 entfernten Zeiger und lädt alle verbundenen Pufferzeiger für eine bestimmte Nachricht in die Zielwarteschlange, die dem durch das TYPE-Feld angezeigten Protokoll entspricht.
  • Die verschiedenen Zielwarteschlangen werden auch verwendet, um durch Bereitstellung einer Warteschlange vorgegebener begrenzter Größe für jeden Protokolltyp Fairness in das System einzuführen. Ein TxBS-Modul entfernt Zeiger aus den Zielwarteschlangen 202 in einer "straight round robin" Abfrageoperation, so dass bei jedem Protokolltyp beim Senden von Nachrichten ein Fortschritt stattfindet und kein Protokoll ein anderes Protokoll daran hindern kann, beim Senden von Nachrichten Fortschritte zu machen. Die Anordnung mehrfacher Zielwarteschlangen 202 ist vorteilhaft, da Protokolle verschiedene Charakteristiken wie zum Beispiel verschiedene Überlastungs- (congestion) Algorithmen haben. Bestimmte Überlastungsalgorithmen könnten andere Protokolle blockieren, indem sie die Routeroperation dominierten, falls die round robin Reihenfolge durch die verschiedenen Protokolltypen nicht implementiert wäre.
  • Das TxBS-Modul lädt von den Zielwarteschlangen 202 entfernte Zeiger in eine TRANSMIT PACKET Warteschlange 204. Das TXP-Modul der Leitungskarte 12 entfernt Zeiger von der TRANSMIT PACKET Warteschlange 204 einen nach dem anderen und verwendet jeden Zeiger für den Zugriff auf den zentralen Speicher 16 über den Bus 14, um den Header und den Körper eines Datenpakets und den zugehörigen Descriptor (die Nachricht) für die Übermittlungsverarbeitung zu lesen. Das aus dem zentralen Speicher 16 erhaltene Datenpaket wird in eine DEVICE Warteschlange 206 abgelegt für die schließliche Übertragung durch die Leitungsschnittstelle 18 der Leitungskarte 12. Zusätzlich lädt das TXP-Modul den gerade für den Zugriff auf eine Nachricht verwendeten Zeiger in die FREE-Pufferwarteschlange 30 zur Verwendung durch das SCAV RINGS Modul in einem zukünftigen Pufferswapping wie oben beschrieben.
  • In den Fig. 6 und 6A ist ein Mechanismus und ein Pufferzeigerformat illustriert für das gestreute Senden (broadcasting) einer Nachricht an mehrere Zielprozessoren. Gemäß Fig. 6A wird ein Broadcast-Zeiger 126 wie der Pufferzeiger 26 von Fig. 5 zur Verwendung beim Senden mit einem Eigentümerfeld 134, einem Zeigerwertfeld 136, einem "Anfang/Fortsetzung/Letzter"-Markierungsfeld 138 und einem TYPE-Feld 140 versehen. Zusätzlich wird jeder Broadcast- Pufferzeiger 126 so formatiert, dass er ein Leseerlaubnisfeld enthält, welches als ein HOOK 142 bezeichnet wird. Ein RXP-Modul erzeugt einen HOOK-Wert, um einen bestimmten Broadcast-Pufferzeiger 126 zu identifizieren und den Broadcast-Pufferzeiger 126 damit wie nachfolgend ersichtlich zu verfolgen.
  • Gemäß Fig. 6 schreibt das eine Nachricht sendende RXP- Modul einen Broadcast-Zeiger 126, welcher den Pufferzeigerwert für den Puffer enthält, in dem die Sendenachricht im zentralen Speicher 16 gespeichert ist, und den HOOK- Wert an jeden Zielprozessor, welcher die Sendung erhalten soll. Eine spezielle Broadcast-Warteschlange 300 wird an jedem Zielprozessor für jede potentielle Broadcast-Quelle vorgesehen. Broadcast-Pufferzeiger 126 werden in die entsprechenden Broadcast-Warteschlangen jeder Ziel-Leitungskarte geschrieben, welche die Nachricht empfangen soll. Die SCAV RINGS Module der Ziel-Leitungskarten fragen auch die Broadcast-Warteschlangen nach Nachrichten ab. Das Eigentümerbit jeder Speicherstelle wird wie in dem regulären Nachrichtenweiterleitungsschema verwendet um anzuzeigen, ob ein Zeiger auf eine durch das SCAV RINGS Modul zu lesende Nachricht ansteht. Das HOOK-Feld 142 wird jedoch durch die SCAV RINGS Module des Ziels dahingehend interpretiert, dass es einen Nur-Lese-Zugriff auf die Zeigerspeicherstelle der Warteschlange hat. Nachdem das SCAV RINGS Modul die Speicherstelle der Broadcast-Warteschlange liest, setzt es das Eigentümerbit um anzuzeigen, dass die Quelle für eine zukünftige Verwendung erneut im Besitz der Speicherstelle der Broadcast-Warteschlange ist.
  • Jede Quellen-Leitungskarte unterhält eine Tabelle 302 von HOOK-Werten mit einem Eintrag 304 für jeden spezifischen HOOK-Wert, der in einem Broadcast-Zeiger 126 verwendet wird. Jeder Eintrag 304 der Tabelle 302 enthält eine Menge von Bits, einem für jeden potentiellen Zielprozessor. Das RXP-Modul setzt nur jene Bits in einen bestimmten Eintrag 304, die den Zielprozessoren entsprechen, an welche es den Broadcast-Zeiger 126 mit dem HOOK-Wert des Eintrags 304 gesendet hat.
  • Das SCAV RINGS Modul eines jeden Zielprozessors, der eine Broadcast-Nachricht empfängt, sendet die HOOK-Zahl an die der Broadcast-Warteschlange, von der es die Broadcast- Nachricht gelesen hat, entsprechende Quelle. Dies kann durch einen Zeigeraustausch gemäß der vorliegenden Erfindung in den Broadcast-Warteschlangen erreicht werden. Zum Beispiel schreibt das SCAV RINGS Modul einen Zeiger mit einem HOOK-Wert von einer zuvor gelesenen Broadcast-Nachricht, die durch eine bestimmte Quelle gesendet wurde, an eine Speicherstelle der Broadcast-Warteschlange, die der Quelle entspriqht, nachdem es die Speicherstelle für eine aktuelle Broadcast-Nachricht gelesen hat. Das SCAV RINGS Modul ändert das Eigentümerbit um anzuzeigen, dass die bestimmte Quelle wiederum im Besitz der Speicherstelle ist.
  • Nach Lesen eines jeden HOOK-Wertes während eines Pufferaustausches in einer Broadcast-Warteschlange löscht das RXP-Modul im Eintrag 304 der Tabelle 302, welche den HOOK- Wert anzeigt, das Bit, welches dem Zielprozessor entspricht, der den HOOK-Wert sendet. Wenn alle dieser Bits für einen HOOK-Wert gelöscht worden sind, weiß der Quellprozessor, dass alle beabsichtigten Zielprozessoren die Broadcast-Nachricht empfangen haben, und der Broadcast- Zeiger ist erneut für einen anderen Nachrichtentransfer frei.
  • Das erfindungsgemäße Pufferswapping-Schema stellt auch Nullzeiger bereit, die unter bestimmten Umständen verwendet werden können. Zum Beispiel kann ein Nullzeiger durch einen Zielprozessor zurückgegeben werden, wenn er für eine vorübergehende Zeitdauer keine Zeiger auf freie Puffer hat und es dennoch wünschenswert ist, entlang eines Pufferringspeichers fortzufahren, bis freie Puffer verfügbar werden. Dieses wäre eine Ausnahme zu dem wahren Pufferswapping-Mechanismus der vorliegenden Erfindung, stellt jedoch einen Mechanismus zum Umgang mit vorübergehenden Knappheiten an freien Pufferzeigern bei einem bestimmten Zielprozessor zur Verfügung. Die Nullzeiger können auch bei der Initialisierung des Systems verwendet werden, um die freien Puffervorräte über einen Austausch freier Pufferzeiger gegen Nullzeiger zwischen einem Managementprozessor und den Betriebsprozessoren des Systems über Ringspeicher zu bevölkern oder um die Anzahl von Puffern zwischen den Quell- und den Zielprozessoren erneut auszubalancieren.
  • Wie oben allgemein beschrieben wurde, kann ein SWAP-Modul so eingerichtet werden, dass es einen Alarm abgibt, wenn eine nächste Speicherstelle eines Pufferringes, auf den das SWAP-Modul zugreift, nicht im Eigentum des Quellprozessors ist. Dies ist ein einfacher Weg um sicherzustellen, dass jeder Zielprozessor beim Zugriff auf im Eigentum befindliche Speicherstellen Fortschritte macht, um Puffer für Nachrichten zu lesen. Falls nötig kann ein Ziel Fortschritte machen durch Rückgabe von Nullzeigern oder durch bloßes Ändern des Eigentümerbits zurück zur Anzeige der Eigentümerschaft durch die entsprechende Quelle (und hierdurch die Nachricht nicht beachten). Wann immer eine Speicherstelle nicht im Eigentum der entsprechenden Quelle steht, ist dies daher üblicherweise eine Anzeige dafür, dass das Ziel nicht ordnungsgemäß darin arbeitet, die Nachricht zu handhaben oder entlang der Pufferringspeicher um zugelassene Alternativen fortzuschreiten (das heißt Rückgabe von Nullzeigern oder Änderung des Eigentümerbits).
  • Effekt der Erfindung
  • Es wurde ein verbessertes Nachrichtenübertragungssystem zur Übertragung einer Nachricht von einem Quellprozessor an einen Zielprozessor beschrieben. Puffer wurden zwischen einem Quellprozessor und einem Zielprozessor verwendet, um Eingabe/Ausgabe-Bandbreitenprobleme am Zielprozessor zu verhindern. Im Stand der Technik, wo Nachrichtenübertragungen unter Verwendung von Pufferspeichern für die Nachrichtenübertragung ausgeführt wurden, war es notwendig, die Quell- und Zielprozessoren zu synchronisieren. Dies ist ein Nachteil, und die vorliegende Erfindung vermeidet den Nachteil durch Verwendung eines Pufferswapping-Systems, wobei jedesmal, wenn ein Nachrichtentransfer vom Quell- auf einen Zielprozessor stattfindet, ein freier Puffer dem Quellprozessor verfügbar gemacht wird.
  • Das System 10 hat mehrere Leitungskarten, wobei jede Leitungskarte 12 eine Leitungsschnittstelle 18, einen Prozessor 20, eine Busschnittstelle 22 und einen Ringspeicher 24 umfasst. Lese-/Schreibnachrichten müssen zwischen den Leitungskarten 12, zum Beispiel den Prozessoren 20, welche Teil der Zeitkarten sind, ausgetauscht werden.
  • Die vorliegende Erfindung lehrt ein Puffer (16) Swapping- Schema, wobei durch einen Zielprozessor ein Zeiger auf einen freien Puffer an den Quellprozessor jedesmal zurückgegeben wird, wenn ein Nachrichtentransfer stattfinden muss. Auf diese Weise wird ein Vorrat von frei verfügbaren Puffern sichergestellt.
  • Jede Speicherstelle 26, die einem Quellprozessor 20 gehört, enthält ein Zeigerwertfeld 34, um einen Zeiger auf einen Puffer im zentralen Speicher 16 zu speichern. Ein TXP-Modul (Zielprozessor) wird verwendet, um das Datenpaket an einen Puffer im zentralen Speicher zu senden. Das obige System arbeitet effizient beim Übertragen von Lese- /Schreibnachrichten von einem Quellprozessor zu einem Zielprozessor ohne die Notwendigkeit, die beiden zu synchronisieren, und ohne Bandbreitenprobleme beim Zielprozessor.

Claims (11)

1. Verfahren zur Übertragung von Nachrichten zwischen Computereinrichtungen unter Verwendung von Zeigern für den Zugriff auf Puffer in einem gemeinsamen Speicher, wobei eine in einem Quellmodus arbeitende Computereinrichtung eine Nachricht in einem ausgewählten Puffer des gemeinsamen Speichers speichert und einen Zeiger auf diesen Speicherort einer anderen der Computereinrichtungen übergibt, damit diese andere in einem Zielmodus arbeitende Computereinrichtung sie beim Lesen der Nachricht vom gemeinsamen Speicher verwenden kann,
dadurch gekennzeichnet, dass
die andere, in einem Zielmodus arbeitende Computereinrichtung
(i) in Reaktion auf den Zugang zum ausgewählten Zeiger der genannten einen Computereinrichtung einen Zeiger auf einen zum Speichern einer Nachricht verfügbaren gemeinsamen Pufferspeicher übergibt, wobei der Zeiger aus einem der genannten anderen Computer einrichtung zugeordneten Vorrat solcher Zeiger auf verfügbaren gemeinsamen Pufferspeicher übertragen wird, und
(ii) nach Lesen der Nachricht den Zeiger auf den gemeinsamen Pufferspeicher, aus welchem die gespeicherte Nachricht gelesen wurde, als einen Zeiger des genannten, mit der anderen Computereinrichtung verbundenen Vorrats von Zeigern bestimmt.
2. Verfahren nach Anspruch 1, wobei ein für die Computereinrichtungen zugänglicher Zeigerspeicher Plätze zum Speichern von Zeigern, die entsprechende Puffer des gemeinsamen Speichers bestimmen, aufweist, und wobei die genannte eine Computereinrichtung eine Nachricht in einem Pufferspeicher des gemeinsamen Speichers ablegt, welcher durch Schreiben eines Zeigers auf einen zum Speichern einer Nachricht verfügbaren Puffer bestimmt ist, weiterhin dadurch gekennzeichnet, dass die andere Computereinrichtung in Reaktion auf den Zugriff auf den ausgewählten Zeiger im Zeigerspeicher den Zeiger vom Vorrat von Zeigern auf verfügbare gemeinsame Pufferspeicher an den Platz des ausgewählten Zeigers in dem Zeigerspeicher überträgt.
3. Computersystem (10), enthaltend zwei Computereinrichtungen (20), von denen jede für den Zugriff auf Pufferspeicher eines gemeinsamen Speichers (16) zum Speichern von Nachrichten, welche von einer Computereinrichtung (20) zu einer anderen Computereinrichtung (20) übertragen werden sollen, angekoppelt ist;
wobei eine Computereinrichtung (20) so arbeitet, dass sie eine Nachricht an die andere Computereinrichtung (20) durch Schreiben der Nachricht in einen ausgewählten der gemeinsamen Pufferspeicher überträgt und einen Zeiger auf jenen ausgewählten Pufferspeicher an die andere Computereinrichtung zur Benutzung beim Zugriff auf die Nachricht in dem ausgewählten gemeinsamen Pufferspeicher überträgt;
wobei jede der beiden Computereinrichtungen mit einem für beide Computereinrichtungen zugänglichen Zeigerspeicher (24) verbunden ist, wobei der Zeigerspeicher (24) eine Menge von Plätzen (26) zum Speichern von Zeigern auf die gemeinsamen Pufferspeicher (16) hat;
wobei eine Computereinrichtung (20) zur Übertragung einer Nachricht an die andere Computereinrichtung (20) so arbeitet, dass sie die Nachricht in einen verfügbaren der gemeinsamen Pufferspeicher schreibt, der durch einen an einem ausgewählten Ort im Zeigerspeicher (24) abgelegten Zeiger bestimmt wird, und jenen Zeiger an die andere Computereinrichtung (20) überträgt,
dadurch gekennzeichnet, dass
die andere Computereinrichtung (20) so arbeitet, dass sie den ausgewählten Platz (26) des Zeigerspeichers (24) liest, um den Zeiger für einen Zugriff auf die Nachricht im gemeinsamen Pufferspeicher, welcher die Nachricht speichert, zu erhalten, und anschließend an den ausgewählten Platz des Zeigerspeichers (24) zur Benutzung durch die genannte eine Computereinrichtung einen Zeiger auf einen der gemeinsamen, zum Speichern einer Nachricht verfügbaren Pufferspeicher überträgt.
4. Computersystem nach Anspruch 3, weiterhin dadurch gekennzeichnet, dass jede der Computereinrichtungen verbunden ist mit einem individuellen Zeigerspeicher (24) zur Verwendung durch jene Computereinrichtung, welche zum Schreiben von Nachrichten in den gemeinsamen Speicher in einem Quellmodus arbeitet, und zur Verwendung durch eine Computereinrichtung, an welche die Nachricht zu übertragen ist und welche zum Lesen von Nachrichten vom gemeinsamen Speicher in einem Zielmodus arbeitet,
und dadurch gekennzeichnet, dass
die genannte andere Computereinrichtung so arbeitet, dass sie auf die Nachricht im gemeinsamen Speicher zugreift durch Lesen des Zeigers an dem ausgewählten Platz des Zeigerspeichers der genannten einen Computereinrichtung und durch Laden jenes Zeigers in eine Warteschlange für gemeinsame Pufferspeicher für einen nachfolgenden Zugriff durch die genannte andere Computereinrichtung, und dass sie dann einen Zeiger auf freien Puffer aus einem Vorrat von Zeigern auf freien Puffer, welcher mit der genannten anderen Computer einrichtung verbunden ist, an jenen ausgewählten Platz des Zeigerspeichers der genannten einen Computereinrichtung schreibt.
5. Computersystem nach Anspruch 3 oder 4, wobei das Computersystem n Computereinrichtungen (20) enthält, von denen jede für einen Zugriff auf Puffer des gemeinsamen Speichers (16) zum Speicher von Nachrichten angekoppelt ist, welche von einer Computereinrichtung (20) an eine andere der Computereinrichtungen (20) übertragen werden sollen;
dadurch gekennzeichnet, dass
jede der Computereinrichtungen n Zeigerspeicher hat, die für jene Computereinrichtung zur Verwendung beim Speichern von Nachrichten in gemeinsamen Pufferspeichern zugänglich sind und die entsprechend durch individuelle der n Computereinrichtungen zur Verwendung beim Lesen von Nachrichten von gemeinsamen Pufferspeichern zugänglich sind.
6. Computersystem nach Anspruch 3, wobei jeder Platz (26) des Zeigerspeichers ein Eigentümerfeld (36) enthält, welches einen ersten Zustand und einen zweiten Zustand hat, wobei der erste Zustand anzeigt, dass der entsprechende Platz (26) einen Zeiger auf einen gemeinsamen Pufferspeicher enthält, welcher zur Verwendung durch die genannte eine Computereinrichtung bereit ist, um eine Nach richt an die andere Computereinrichtung (20) zu speichern, und wobei der zweite Zustand anzeigt, dass der entsprechende Platz einen Zeiger auf einen gemeinsamen Pufferspeicher enthält, welcher zur Verwendung durch die andere Computereinrichtung (20) bereit ist, um eine Nachricht im Puffer des gemeinsamen Speichers (16) zu lesen, auf welchen durch den Zeiger gezeigt wird.
7. Computersystem nach Anspruch 6, wobei die genannt eine Computereinrichtung (20) so arbeitet, dass sie nur dann Zeiger von einem Platz (26) des Zeigerspeichers liest und dorthin zurückschreibt, wenn das Eigentümerfeld (26) jenes Platzes (26) im ersten Zustand ist.
8. Computersystem nach Anspruch 6 oder 7, wobei die genannte eine Computereinrichtung (20) nach Lesen eines Zeigers auf einen zur Verwendung verfügbaren Puffer des gemeinsamen Speichers (16) von einem Platz (26) und Schreiben des Zeigers auf jenen Puffer an jenen Platz (26) des Zeigerspeichers (24) den Zustand des Platzes (26) des Zeigerspeichers vom ersten Zustand in den zweiten Zustand ändert.
9. Computersystem nach Anspruch 6, wobei die andere Computereinrichtung (20) so arbei tet, dass sie nur dann Zeiger von einem Platz des Zeigerspeichers (26) liest und dorthin schreibt, wenn das Eigentümerfeld jenes Platzes (26) im zweiten Zustand ist.
10. Computersystem nach Anspruch 9, wobei die andere Computereinrichtung (20) den Zustand eines Platzes des Zeigerspeichers vom zweiten Zustand in den ersten Zustand ändert nach Lesen eines Zeigers auf den einen der gemeinsamen Pufferspeicher aus jenem Platz (26), Entfernen eines Zeigers auf einen zur Benutzung verfügbaren gemeinsamen Pufferspeicher vom Vorrat der Zeiger (126) und Schreiben des entfernten Zeigers an jenen Platz (26) des Zeigerspeichers.
11. Computersystem nach Anspruch 3, wobei die gemeinsamen Pufferspeicher von gleicher Speichergröße sind, wobei jeder Platz (26) des Zeigerspeichers (24) ein "Anfang/Fortsetzung/Letzter" Markierungsfeld (38) enthält, um Pufferspeicher gleicher Größe zu verbinden, auf welche durch Zeiger gezeigt wird, die am entsprechenden Platz (26) des Zeigerspeichers gespeichert sind, so dass eine Nachricht, die größer ist als die Größe eines jeden Puffers, in Puffern gespeichert werden kann, welche durch "Anfang/Fortsetzung/Letzter" Markierungsfelder (38) verbunden sind, wobei das genannte "An fang/Fortsetzung/Letzter" Markierungsfeld (38) eines ersten Platzes (26) des Zeigerspeichers, welcher einen Zeiger auf einen gemeinsamen Pufferspeicher enthält, der einen ersten Abschnitt. einer Nachricht speichert, in einen "Anfang" Zustand gesetzt wird, und dass das "Anfang/Fortsetzung/Letzter" Markierungsfeld (38) jeder der n Zeigerspeicherplätze (26), welche Zeiger auf gemeinsame Pufferspeicher enthalten, die n nachfolgende Teile der Nachricht enthalten, in einen "Fortsetzung" Zustand gesetzt wird, und dass "Anfang/Fortsetzung/Letzter" Markierungsfeld (38) eines letzten Zeigerspeicherplatzes (26), welcher einen Zeiger auf einen gemeinsamen Pufferspeicher enthält, der einen Endabschnitt der Nachricht enthält, in den "Letzter" Zustand gesetzt wird.
DE69328841T 1992-01-10 1993-01-08 Mehrfachprozessorrechnersystem Expired - Lifetime DE69328841T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/818,608 US5315707A (en) 1992-01-10 1992-01-10 Multiprocessor buffer system

Publications (2)

Publication Number Publication Date
DE69328841D1 DE69328841D1 (de) 2000-07-20
DE69328841T2 true DE69328841T2 (de) 2001-01-11

Family

ID=25225934

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69328841T Expired - Lifetime DE69328841T2 (de) 1992-01-10 1993-01-08 Mehrfachprozessorrechnersystem

Country Status (4)

Country Link
US (1) US5315707A (de)
EP (1) EP0551242B1 (de)
JP (1) JPH0612383A (de)
DE (1) DE69328841T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10360637A1 (de) * 2003-12-19 2005-07-21 Infineon Technologies Ag Programmgesteuerte Einheit

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408613A (en) * 1991-12-24 1995-04-18 Matsushita Electric Industrial Co., Ltd. Data transfer apparatus
US6026452A (en) * 1997-02-26 2000-02-15 Pitts; William Michael Network distributed site cache RAM claimed as up/down stream request/reply channel for storing anticipated data and meta data
AU4219693A (en) * 1992-09-30 1994-04-14 Apple Computer, Inc. Inter-task buffer and connections
EP0689138A3 (de) * 1994-06-22 1998-02-04 International Business Machines Corporation Verfahren und Gerät mit temporären Daten für ein Mikrokernendatenverarbeitungssystem
SE515265C2 (sv) * 1994-10-17 2001-07-09 Ericsson Telefon Ab L M System och förfarande för behandling av signaldata samt kommunikationssystem omfattande ett signaldatabehandlingssystem
US5748634A (en) * 1995-09-14 1998-05-05 Level One Communications, Inc. Method and apparatus for implementing a two-port ethernet bridge using a semaphoring technique
US5907717A (en) * 1996-02-23 1999-05-25 Lsi Logic Corporation Cross-connected memory system for allocating pool buffers in each frame buffer and providing addresses thereof
US5819060A (en) * 1996-10-08 1998-10-06 Lsi Logic Corporation Instruction swapping in dual pipeline microprocessor
US6341301B1 (en) 1997-01-10 2002-01-22 Lsi Logic Corporation Exclusive multiple queue handling using a common processing algorithm
US5922057A (en) * 1997-01-10 1999-07-13 Lsi Logic Corporation Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore
US6385658B2 (en) * 1997-06-27 2002-05-07 Compaq Information Technologies Group, L.P. Method and apparatus for synchronized message passing using shared resources
US6487202B1 (en) 1997-06-30 2002-11-26 Cisco Technology, Inc. Method and apparatus for maximizing memory throughput
US6526060B1 (en) 1997-12-05 2003-02-25 Cisco Technology, Inc. Dynamic rate-based, weighted fair scheduler with explicit rate feedback option
SE511849C2 (sv) * 1998-03-31 1999-12-06 Ericsson Telefon Ab L M Anordning och metod för buffertskydd
AU5929700A (en) * 1999-07-13 2001-01-30 Alteon Web Systems, Inc. Method and architecture for optimizing data throughput in a multi-processor environment using a ram-based shared index fifo linked list
WO2001013229A2 (en) * 1999-08-19 2001-02-22 Venturcom, Inc. System and method for data exchange
EP1214652A2 (de) * 1999-08-31 2002-06-19 Times N Systems, Inc. Effizientes warten auf ein ereignis
US6910082B1 (en) * 1999-11-18 2005-06-21 International Business Machines Corporation Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US8271316B2 (en) * 1999-12-17 2012-09-18 Buzzmetrics Ltd Consumer to business data capturing system
US6931643B2 (en) 2000-04-03 2005-08-16 Texas Instruments Incorporated Interrupt throttling for inter-processor communications
DE60139601D1 (de) * 2001-04-11 2009-10-01 Texas Instruments Inc Unterbrechungsregelung für Interprozesskommunikation
DE10148767A1 (de) * 2001-10-02 2003-04-17 Thomson Brandt Gmbh Verfahren und Vorrichtung zur Zwischenspeicherung von über eine eingerichtete Verbindung zu übertragenden Datenpaketen
US20040107240A1 (en) * 2002-12-02 2004-06-03 Globespan Virata Incorporated Method and system for intertask messaging between multiple processors
US20060153185A1 (en) * 2004-12-28 2006-07-13 Intel Corporation Method and apparatus for dynamically changing ring size in network processing
US8880746B2 (en) * 2006-01-31 2014-11-04 Cisco Technology, Inc. Method using virtual ASIC pins to reconfigure hardware
US7581163B1 (en) * 2006-06-01 2009-08-25 Juniper Networks, Inc. Detection of corrupted memory pointers within a packet-processing device
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9069489B1 (en) 2010-03-29 2015-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic random access memory front end
IL211490A (en) * 2010-03-02 2016-09-29 Marvell Israel(M I S L ) Ltd Early next packets of information
US8327047B2 (en) * 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
US8566537B2 (en) * 2011-03-29 2013-10-22 Intel Corporation Method and apparatus to facilitate shared pointers in a heterogeneous platform
US9069602B2 (en) * 2013-09-25 2015-06-30 Netronome Systems, Incorporated Transactional memory that supports put and get ring commands
US8972630B1 (en) * 2013-09-25 2015-03-03 Netronome Systems, Incorporated Transactional memory that supports a put with low priority ring command
US11288193B2 (en) * 2019-05-06 2022-03-29 Cirrus Logic, Inc. Flexible, non-blocking asynchronous transfer of time-variant atomic data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5833972B2 (ja) * 1979-11-12 1983-07-23 富士通株式会社 計算機システム間通信方式
JPS57153359A (en) * 1981-03-18 1982-09-21 Ibm Data processing system with common memory
US4543627A (en) * 1981-12-14 1985-09-24 At&T Bell Laboratories Internal communication arrangement for a multiprocessor system
NL8501143A (nl) * 1985-04-19 1986-11-17 Philips Nv Kommunikatiesysteem voorzien van een eerst-in-eerst-uit-buffer.
US4744023A (en) * 1985-12-16 1988-05-10 American Telephone And Telegraph Company, At&T Information Systems Processor access control arrangement in a multiprocessor system
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
JPH03138751A (ja) * 1989-10-23 1991-06-13 Internatl Business Mach Corp <Ibm> 資源管理方法
EP0444376B1 (de) * 1990-02-27 1996-11-06 International Business Machines Corporation Nachrichtenführungseinrichtung durch mehrere Rechner, die mittels eines geteilten intelligenten Speichers gekoppelt sind

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10360637A1 (de) * 2003-12-19 2005-07-21 Infineon Technologies Ag Programmgesteuerte Einheit
DE10360637B4 (de) * 2003-12-19 2010-10-07 Infineon Technologies Ag Programmgesteuerte Einheit

Also Published As

Publication number Publication date
JPH0612383A (ja) 1994-01-21
DE69328841D1 (de) 2000-07-20
EP0551242B1 (de) 2000-06-14
US5315707A (en) 1994-05-24
EP0551242A3 (de) 1995-04-12
EP0551242A2 (de) 1993-07-14

Similar Documents

Publication Publication Date Title
DE69328841T2 (de) Mehrfachprozessorrechnersystem
DE3850881T2 (de) Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher.
EP1456722B1 (de) Datenübertragungsverfahren, serielles bussystem und anschalteinheit für einen passiven busteilnehmer
DE69519926T2 (de) Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke
DE69130392T2 (de) Hochgeschwindigkeitspufferverwaltung
DE3751514T2 (de) Adressieranordnung für RAM-Puffer-Steuereinrichtung.
DE69826930T2 (de) System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe
DE68927214T2 (de) Verfahren zur Datenübertragung zwischen einem Medienzugriffskontroller und einem Pufferspeicher in einem Tokenring-Netz
DE69332532T2 (de) Verfahren und Einrichtung für Stapelung des Empfanges von Datenpaketen
DE69130881T2 (de) Massiv paralleler Rechner mit auf Schlangen basiertem Nachrichtenablieferungssystem
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE4121446C2 (de) Terminal-Server-Architektur
DE69836778T2 (de) Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten
DE69620070T2 (de) Vielfachknoten-Datenverarbeitungssystem und Verfahren zur Übertragung von Nachrichten in diesem Vielfachknoten-Datenverarbeitungssystem
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
DE69125816T2 (de) DÜE und Verfahren zur Bearbeitung von DÜE empfangener Daten zum Einsatz verschiedener Betriebsarten
DE3103786A1 (de) Datenuebertragungssystem
EP1370952B1 (de) Kommunikationsverfahren zur realisierung von ereigniskanälen in einem zeitgesteuerten kommunikationssystem
DE102005003011A1 (de) Verfahren zum Übertragen von Nachrichten über eine Punkt-zu-Punkt-Verbindung
EP2294763A1 (de) Teilnehmerknoten eines kommunikationssytems mit funktional getrenntem sende-ereignisspeicher
DE60036121T2 (de) Hochgeschwindigkeitsverbindung für eingebettete Systeme in einem Rechnernetzwerk
DE4129412A1 (de) Verfahren zur datenuebertragung und datenverarbeitungsanlage mit verteilten rechnerknoten
DE19904049A1 (de) Mehrprozessorsystem mit einer Einrichtung zum Entscheiden zwischen einer Speicherzugriffanforderung und einer Steuerung zum Aufrechterhalten eines Kohärenzzustands
DE3937021C2 (de)
DE3333847C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R071 Expiry of right

Ref document number: 551242

Country of ref document: EP