-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Computersysteme und insbesondere
ein netzwerkbasiertes Computersystem.
-
Hintergrund
-
Modulare,
stark verbundene Computernetzwerksysteme ermöglichen das Austauschen von
Daten zwischen individuellen Knoten in. dem Netzwerk und das gemeinsame
Verwenden von Hardware-Ressourcen. Viele Netzwerke bewegen große Datenmengen
und viele Nachrichten zwischen den Netzwerkknoten. Infolge des großen Umfangs
der Datenbewegung in einem solchen System kann der Kommunikationsverkehr
zwischen den Knoten gestaut werden. Nachrichten und Daten werden
in abgeschlossenen Paketen gesendet, die die erforderliche Adresse,
den erforderlichen Befehl und die erforderlichen Daten aufweisen.
Pakete können über mehrere
Zwischenknoten von einer Quelle zu einem Ziel gesendet werden. Hierdurch
wird Zeit gespart und werden Staus vermieden, weil die Prozessoren nicht
darauf warten, dass jede Nachricht über die Länge des Netzwerks läuft, bevor
das nächste
Paket gesendet wird.
-
Es
sind noch Probleme mit Nachrichten verbunden, die in einem Computernetzwerksystem
von einer Quelle zu einem Ziel gesendet werden. Eines der Probleme
besteht darin, dass Wartezeiten oder Verzögerungen in Prozessoren hervorgerufen
werden können,
die entweder die Quelle oder das Ziel für mehrere Nachrichten sind.
Gegenwärtig
erzeugt jedes Nachrichtenpaket beim Empfang einen Interrupt. Der
Prozessor muss auf jeden Interrupt antworten, bevor die nächste Nachricht
empfangen werden kann. Dies ist bei vielen Computersystemen kein
Problem. Bei netzwerkbasierten Systemen müssen von einem Prozessor jedoch
möglicherweise
mehrere Nachrichten zu einer gegebenen Zeit empfangen werden. Mehrere
Nachrichten erzeugen mehrere Interrupts. In dem Fall, in dem mehrere
Nachrichten in etwa gleichzeitig an einem Prozessor ankommen, ist die
CPU nur in der Lage, die Nachrichten seriell abzuwickeln und muss
auf einen Interrupt für
eine erste Nachricht antworten und den Interrupt abarbeiten, bevor
auf den nächsten
Nachrichteninterrupt geantwortet und dieser abgearbeitet werden
kann. Wenn mehrere Nachrichten an einer CPU ankommen, kann die CPU übermäßig viel
Zeit dafür
aufwenden, die den Nachrichten zugeordneten verschiedenen Interrupts
zu verarbeiten. Dieses Problem ist in einem netzwerkbasierten System
verstärkt,
in dem es üblicher
ist, dass eine bestimmte CPU mehrere Nachrichten verarbeiten muss.
Wenn eine CPU oder ein Prozessor eine Anzahl von Nachrichten abarbeiten muss,
kann in dem bestimmten Computersystem viele Male eine Wartezeit
herbeigeführt
werden. Mit anderen Worten verbringt die CPU, die mehrere Nachrichten
abarbeiten muss, mehr Zeit damit, Interrupts abzuarbeiten, die den
mehreren Nachrichten zugeordnet sind, als andere Operationen auszuführen. Die
anderen Operationen können
daher verzögert werden,
was als Wartezeit infolge eines Zusatzaufwands des Systems bezeichnet
wird und zu einer erhöhten
Antwortzeit eines bestimmten Prozessors führt. Es besteht ein Bedarf
an einem Prozessor für die
Verwendung in einem Netzwerksystem, der mehrere Nachrichten wirksam
empfangen und behandeln kann. Es besteht auch ein Bedarf an einer
CPU, die mehrere Nachrichten in einem Strom behandeln kann und mehrere
Nachrichten in einem Durchgang durch das Betriebssystem behandeln
kann. Es besteht auch ein Bedarf an einem System oder einer CPU,
wodurch mehrere Nachrichten mit einem Interrupt behandelt werden
können.
Ein solches System könnte
prüfen,
ob zusätzliche
Nachrichten angekommen sind, während
ein erster Interrupt für
eine Nachricht verarbeitet wird. Es besteht auch ein Bedarf an einer
CPU, die weniger Zeit damit verbringt, mehrere Interrupts von mehreren
Nachrichten abzuarbeiten, und die einen größeren Teil ihrer Zeit für andere
Aufgaben aufwendet. Es besteht auch ein Bedarf an einem Computersystem,
der einen verkleinerten Befehlssatz für das Behandeln des Empfangs
von Paketen oder Nachrichten von einem Netzwerk aufweist. Es besteht
auch ein Bedarf an einem wirksameren Weg für das Senden von Nachrichten
zu einem Client-Zielcomputer im Netzwerk und für das Empfangen von Nachrichten
oder Paketen von dem Netzwerk. Ein solches System würde Nachrichten wirksamer
behandeln, wodurch ein Netzwerk mit einer erhöhten Geschwindigkeit und einem
kleineren Zusatzaufwand in Bezug auf einen Befehlssatz und die verwendeten
Taktzyklen erzeugt wird.
-
In
EP-A-646 876 ist ein Nachrichtenweiterleitungssystem für ein verteiltes,
gemeinsam verwendetes Speicher-Mehrfachprozessorsystem beschrieben,
wobei den verteilten gemeinsam verwendeten Speichern allen Prozessormodulen
gemeinsame globale Adressen zugewiesen sind und die Adressen des
verteilten gemeinsam verwendeten Speichers jedes Prozessormoduls
mit dem verteilten gemeinsam verwendeten Speicher jedes Prozessormoduls,
das das Ziel der Datenübertragung
ist, gemeinsam verwendet werden. Nachrichtenpuffer und Nachrichtensteuerbereiche
in dem verteilten gemeinsam verwendeten Speicher sind in Bereiche
unterteilt, die durch eine Kombination sendender und empfangender
Prozessormodule spezifiziert sind.
-
Gemäß einem
Aspekt sieht die vorliegende Erfindung ein Verfahren zum Abwickeln
der Kommunikation von und zu einem einem Prozessor zugeordneten
Speicher mit einem oder mehreren Eingabepuffern und einem Ausgabepuffer,
wobei der Prozessor an ein Computernetzwerk angeschlossen ist, vor, wobei
das Verfahren durch die folgenden Schritte gekennzeichnet ist:
Empfangen
einer Nachricht in einem Empfangspuffer und Erzeugen eines die empfangene
Nachricht anzeigenden Interrupts,
Empfangen mindestens einer
zusätzlichen
Nachricht im Empfangspuffer, ohne zusätzliche Interrupts für diese
weiteren empfangenen Nachrichten zu verwenden,
Erhöhen eines
Empfangseingabezählers
beim Empfang einer Nachricht im Empfangspuffer, indem die Länge der
Nachricht zum Empfangseingabezähler addiert
wird, um einen Empfangspuffer-Begrenzungszählerwert zu erzeugen,
Addieren
der Länge
jeder vom Empfangspuffer gesendeten Nachricht zu einem zweiten Empfangszähler, um
einen Empfangspuffer-Anfangswert zu erzeugen, und
Senden von
Nachrichten vom Empfangspuffer, bis der Empfangspuffer-Anfangswert
auf den Empfangspuffer-Begrenzungswert
erhöht
wurde.
-
Gemäß einem
weiteren Aspekt sieht die vorliegende Erfindung ein Computernetzwerksystem
mit mehreren Netzwerkknoten, wobei jeder Netzwerkknoten einen Client-Computer
enthält,
der durch Paketnachrichten kommuniziert, und mit einer Kommunikationssteuerung,
die den Client-Computer mit dem Computernetzwerk verbindet, wobei
die Kommunikationssteuerung ferner einen Nachrichtenempfangspuffer
enthält,
vor, wobei das System dadurch gekennzeichnet ist, dass es ferner
aufweist:
einen dem Nachrichtenempfangspuffer zugeordneten
Empfangseingabe-Pufferzähler,
wobei die Kommunikationssteuerung für das Erhöhen des Empfangseingabe-Pufferzählers beim
Empfang der Nachricht im Empfangspuffer eingerichtet ist, um einen
der letzten Adresse der letzten empfangenen Nachricht zugeordneten
Empfangspuffer-Zählerbegrenzungswert
zu erzeugen,
einen dem Nachrichtenempfangspuffer zugeordneten
zweiten Pufferzähler,
wobei die Kommunikationssteuerung für das Senden von Nachrichten
vom Empfangspuffer eingerichtet ist, bis der zweite Empfangspufferzähler auf
den Empfangspuffer-Zählerbegrenzungswert
erhöht
wurde, wobei das System für das
Erzeugen eines Interrupts beim Empfang einer ersten Nachricht im
Empfangspuffer und für
das Empfangen mindestens einer zusätzlichen Nachricht im Empfangspuffer
eingerichtet ist, ohne zusätzliche Interrupts
für diese
weiteren empfangenen Nachrichten zu verwenden, bis der zweite Empfangspufferzähler auf
den Empfangsbegrenzungswert erhöht wurde.
-
Gemäß einem
weiteren Aspekt sieht die vorliegende Erfindung eine Kommunikationssteuerung vor,
die einen Empfangspuffer und eine dem Empfangspuffer zugeordnete
Empfangspuffersteuerung aufweist, dadurch gekennzeichnet, dass
die
Empfangspuffersteuerung für
das Erhöhen
eines dem Empfangspuffer zugeordneten Zählers auf eine neue letzte
Adresse des Empfangspuffers eingerichtet ist, wenn eine zweite Nachricht
empfangen wird, bevor ein Interrupt für eine erste Nachricht gelöscht wurde.
-
Gemäß einem
weiteren Aspekt sieht die vorliegende Erfindung ein Verfahren für das Abwickeln der
Kommunikation von und zu einem einem Prozessor zugeordneten Speicher
mit mehreren Eingabepuffern und einem Ausgabepuffer, wobei der Prozessor
an ein Computernetzwerk angeschlossen ist, vor, wobei das Verfahren
durch die folgenden Schritte gekennzeichnet ist:
Empfangen
einer Nachricht in einem Sendepuffer,
Empfangen mindestens
einer zusätzlichen
Nachricht im Sendepuffer, ohne zusätzliche Interrupts für diese weiteren
empfangenen Nachrichten zu verwenden,
Erhöhen eines Sendepuffer-Eingabezählers beim Empfangen
der Nachricht im Sendepuffer, indem die Länge der Nachricht zum Sendepuffer-Eingabezähler addiert
wird, um einen Sendepuffer-Begrenzungswert zu erzeugen,
Addieren
der Länge
jeder vom Sendepuffer gesendeten Nachricht zu einem zweiten Sendepufferzähler, um
einen Sendepuffer-Anfangswert zu erzeugen, und
Senden von Nachrichten
vom Sendepuffer, bis der Sendepuffer-Anfangswert auf den Sendepuffer-Begrenzungswert
erhöht
wurde.
-
Ein
Computer zur Verwendung in einem Netzwerksystem hat eine Kommunikationssteuerung zum
Steuern des Empfangs und des Sendens von Paketen oder Nachrichten
an jedem Client- Computer.
Die jedem Client-Computer zugeordnete Schnittstelle weist einen
Sendenachrichtenpuffer und einen Empfangsnachrichtenpuffer auf.
Der Sendenachrichtenpuffer hat einen Sendenachrichten-Pufferzähler, der
ansprechend auf den Empfang von Nachrichten vom Client-Computer
für das
Senden auf dem Ringnetzwerk erhöht
wird. Die Kommunikationssteuerung sendet Nachrichten vom Sendepuffer,
bis der Sendenachrichten-Pufferzähler die
Adresse oder einen Wert erreicht, die oder der der letzten empfangenen Nachricht
zugeordnet ist. Ähnlich
weist der Empfangsnachrichtenpuffer einen Empfangsnachrichten-Pufferzähler auf,
der zu einem Empfangsnachrichtenpuffer-Zählerwert erhöht wird,
wenn jede Nachricht empfangen wird. Der Empfangsnachrichtenpuffer
wird geleert, bis der Empfangsnachrichtenpuffer-Zählerwert
erreicht wurde. Der Empfangspuffer kann auch einen aktiven und einen
inaktiven Abschnitt aufweisen. Diese können auch als ein Vordergrundabschnitt
und ein Hintergrundabschnitt bezeichnet werden. Die Kommunikationssteuerung schaltet
fortlaufend zwischen dem aktiven und dem inaktiven Abschnitt des
Speichers um und kennzeichnet jeden Speicherabschnitt nach dem Umschalten
neu. Die Kommunikationssteuerung kann auch Prioritätsschemata
für die
Nachrichten erkennen.
-
Vorteilhafterweise
lässt die
Kommunikationssteuerung minimale Störungen zu, wenn Nachrichten übertragen
werden. Die Kommunikationssteuerung ermöglicht auch ein minimales Unterbrechen
dieses Prozessors, wenn Nachrichten in einen Empfangspuffer oder
einen Sendepuffer übertragen
oder von diesen ausgesendet werden. Weil die Kommunikationssteuerung
einen Empfangspaketzähler
(RPC) innerhalb des Empfangspuffers erhöht, wenn Nachrichten in einen
Puffer eingegeben werden, um einen Zähler mit einer zugeordneten
Adresse oder einem zugeordneten Wert zu erzeugen, wodurch die letzte empfangene
Nachricht wiedergegeben wird, braucht die Kommunikationssteuerung,
wenn Ausgaben vom Sendepuffer zu senden sind, lediglich Nachrichten
zu senden, bis der Wert des Zählers
gleich dem Wert ist, der der Begrenzungsadresse für eine bestimmte Nachricht
zugeordnet ist. Wenn der Zählerwert
der Adresse gleicht, die der Grenze der Nachricht zugeordnet ist,
unterbricht die Kommunikationssteuerung das Senden von Nachrichten.
Der Vorteil besteht darin, dass in der Vergangenheit verschiedene
Hinweiszeichen und Interrupts verwendet werden mussten, um anzugeben,
wenn eine einzige Nachricht vollständig war. Wenn beispielsweise
vier Nachrichten gesendet werden mussten, wurden vier Interrupts vom
Prozessor der Kommunikationssteuerung verarbeitet, um die vier Nachrichten
zu empfangen. Bei der vorliegenden Kommunikationssteuerung wird Zeit
gespart, weil die in den Puffer eingegebenen Nachrichten nicht die
Verarbeitung eines Interrupts erfordern. Die Nachrichten werden
empfangen, und es wird ein RPC-Zähler
erhöht,
um den Empfang der Nachricht wiederzugeben. Daher können mehrere Nachrichten
verarbeitet werden, nachdem mit der Verarbeitung eines anfänglichen
Interrupts begonnen worden ist. Die anschließenden Nachrichten brauchen
keinen Interrupt zu verarbeiten. Falls anschließende Nachrichten im Speicher
empfangen werden, kann der RPC erhöht werden, bevor die CPU den vorhergehenden
Interrupt beendet. Infolge des gleichen Mittels ist es nicht erforderlich,
dass eine Anzahl von Nachrichtenende-Interrupts verarbeitet wird, wenn
Nachrichten vom Sendepuffer ausgesendet werden. Das Endergebnis
besteht darin, dass mehrere Nachrichten oder Pakete bei einem minimalen Zusatzaufwand
und einer minimalen Verarbeitung in die Empfangspuffer gesendet
oder von diesen empfangen werden können.
-
Kurzbeschreibung der Zeichnung
-
1 ist
ein Blockdiagramm mehrerer über ein
Netzwerk verbundener Client-Computer,
-
2 ist
ein Blockdiagramm einer Ringnetzwerktopologie, die in dem System
aus 1 verwendet werden könnte,
-
3 zeigt
ein Peripheriekanal-Ringnetzwerk mit vier Knoten,
-
4 zeigt
ein schematisches Diagramm einer in einem Ringnetzwerk verwendeten
Schnittstellenvorrichtung,
-
5 ist
ein Flussdiagramm, in dem die Schritte für die Kommunikationssteuerung
beim Empfangen von Nachrichten oder Paketen innerhalb eines Puffers
dargestellt sind,
-
6 ist
ein Flussdiagramm, in dem die Schritte zusätzlich zu den in 5 dargestellten
für das
Abwickeln der Kommunikation in einem Nachrichtenempfangspuffer dargestellt
sind, wobei der Nachrichtenempfangspuffer einen Vordergrund- und einen
Hintergrundbereich im Speicher aufweist,
-
7 ist
ein Flussdiagramm zur Ausgabe von Nachrichten aus einem Puffer,
-
8 ist
ein Blockdiagramm mehrerer Register, die mehreren Kanälen eines
Ringnetzwerks zugeordnet sind, und
-
9 ist
ein Blockdiagramm der Transferinformationsregister aus 8.
-
Detaillierte Beschreibung
-
In
der folgenden detaillierten Beschreibung wird auf die anliegende
Zeichnung Bezug genommen, in der zur Erläuterung spezifische Ausführungsformen
dargestellt sind, in denen die Erfindung verwirklicht werden kann.
Diese Ausführungsformen werden
in ausreichenden Einzelheiten beschrieben, um es Fachleuten zu ermöglichen,
die Erfindung zu verwirklichen und zu verwenden, und es ist zu verstehen,
dass auch andere Ausführungsformen
verwendet werden. können
und dass Änderungen
vorgenommen werden können,
ohne vom in den anliegenden Ansprüchen dargelegten Schutzumfang
der vorliegenden Erfindung abzuweichen.
-
1 zeigt
ein allgemeines Computernetzwerksystem mit mehreren als Knoten 110 bezeichneten
Computervorrichtungen, die über
eine Kommunikationsleitung 130 mit dem Netzwerk 120 verbunden sind. 2 zeigt
eine mögliche
Topologie eines solchen Computernetzwerksystems. Hierbei sind die Knoten 210 durch
die Kommunikationsleitung 220 so verbunden, dass ein Ringnetzwerk
gebildet ist. Pakete können
auf der Kommunikationsleitung 220 in beiden Richtungen
gesendet werden. Die Kommunikationsleitung 220 kann ein
beliebiges Übertragungsmedium,
einschließlich
einer Leitung mit verdrillten Paaren, eines Koaxialkabels oder einer
Lichtleitfaser, sein. Das Bewegen von Daten in beiden Richtungen entlang
den Kommunikationsleitungen erfordert jedoch ein hohes Maß an Steuerung,
um Datenkollisionen zu vermeiden.
-
Es
sei bemerkt, dass, wenngleich in dieser Anmeldung ein Ringnetzwerk
als eine als Beispiel dienende Umgebung für diese Erfindung beschrieben
ist, die Erfindung auch für
einen beliebigen Typ einer Computernetzwerkkonfiguration verwendet werden
kann.
-
Ein
Weg zum Verringern des erforderlichen Ausmaßes der Verkehrssteuerung besteht
darin, die Kommunikationsleitung 220 als zwei getrennte
unidirektionale Leitungen zu implementieren. Dieser Ansatz ist in 3 dargestellt. 3 zeigt
einen Dualring-Peripheriekanal 380, in dem sich der Verkehr
in einem Ring im Uhrzeigersinn und im anderen Ring entgegen dem
Uhrzeigersinn bewegt. Hierdurch wird der auf der Kommunikationsleitung
erforderliche Vereinbarungsaufwand erheblich verringert, weil sich alle
Daten als Einzeldatei in dieselbe Richtung bewegen. Die Redundanz,
die durch die Doppelringe und ihre sich entgegengesetzt drehende
Orientierung bereitgestellt wird, ermöglicht das Fortsetzen des Betriebs
während
des Hinzufügens,
Entfernens oder Hot-Swapping
von Client-Knoten oder bei Vorhandensein einer fehlerhaften Verbindung
oder eines fehlerhaften Knotens. Hierdurch wird das Netzwerk sehr
fehlertolerant gemacht.
-
Der
Peripheriekanal 380 weist eine Anzahl von Knoten 310 auf,
die miteinander durch entgegengesetzt drehende Ringe 360 und 370 verbunden sind.
Jeder Knoten 310 weist einen Client 320 und eine
Schnittstellenvorrichtung 330 auf. Gemäß einer Ausführungsform
kann die Schnittstellenvorrichtung 330 als ein einziger
ASIC implementiert werden. Die Schnittstellen vorrichtung 330 könnte auch
als eine Computerplatine oder als eine externe Vorrichtung implementiert
werden, welche den Client und den Peripheriekanal 380 über ein
Kabel verbindet. Der Client 320 kann ein allein stehender
Computer oder eine Workstation sein. Der Client 320 könnte auch eine
Peripherievorrichtung in der Art eines Plattenfelds sein. Bei einem
System kommuniziert der Clientcomputer 320 über den
Peripheriekanal 380 mit Massenspeichervorrichtungen. Gemäß einer
anderen Ausführungsform
kommuniziert ein massiv paralleles Verarbeitungssystem (MPP) mit
anderen Computersystemen und mit dem Massenspeicher über den
Peripheriekanal 380. Bei einer solchen Ausführungsform
ist die Schnittstellenvorrichtung 330 über eine E/A-Steuerung mit
Prozessoren innerhalb des MPP-Systems verbunden. Bei einer Ausführungsform
enthält
die Schnittstellenvorrichtung 330 einen 32-Bit-breiten Kanalport 350 für jeden
der Dualnetzwerkkanäle
und eine 64-Bit-breite bidirektionale Clientportschnittstelle 340 zur
Kommunikation mit dem Client 320. Gemäß einer Ausführungsform
sind die Ringe 360 und 370 in der gleichen Weise
implementiert, in der ein einzelner Ring in einer skalierbaren Kanalschnittstelle
implementiert ist. Es könnten
auch andere Verbindungsverfahren verwendet werden, ohne vom Schutzumfang
der Erfindung abzuweichen.
-
Bei
einer Ausführungsform
werden die Ringe 360 und 370 für aktiven Datenverkehr verwendet.
Sie arbeiten unabhängig
und wirken nur an den Portschnittstellen zusammen. Der Verkehr wird
zwischen den beiden Ringen nicht umgeschaltet. Dadurch, dass zwei
aktive Ringe bereitgestellt sind, ist die Datenübertragungsrate gegenüber einem
Netzwerk mit einem einzigen Ring erhöht.
-
4 ist
ein Blockdiagramm eines Abschnitts eines Clients 320, der
mit dem Client-Port 340 verbunden ist. Der Abschnitt des
Clients 320 ist ein Blockdiagramm der Nachrichtenabwicklungshardware 400,
die eingehende und abgehende Nachrichten oder Pakete abwickelt.
Die Nachrichtenabwicklungshardware 400 ist Teil der Kommunikationssteuerung.
-
Wie
in 4 dargestellt ist, weist der Client 320 einen
Prozessor 410 und einen Speicher 420 auf. Der
Speicher 420 weist einen Sendepuffer 480 und einen
Empfangspuffer 470.1 sowie einen Empfangspuffer 470.2 auf.
Jeder der Puffer 470.1, 470.2 und 480 sind
Puffer, die innerhalb des Speichers durch Register, die auf die
aktuelle Adresse und die Begrenzungsadresse zeigen, relativierbar
sind. Jeder dieser Puffer hat einen Zähler, der die aktuelle Adresse
liest, und einen Zähler,
der die Begrenzungs- oder Endadresse liest. Es sei bemerkt, dass der
Sendepuffer 480 auch als ein Paar von Sendepuffern ähnlich den
Empfangspuffern 470.1 und 470.2 eingerichtet werden
könnte.
Das Nachrichtenabwicklungssystem 400 weist eine Nachrichtenausgangssteuerung 430 und
eine Nachrichteneingangssteuerung 440 auf. Sowohl die Nachrichteneingangssteuerung 440 als
auch die Nachrichtenausgangssteuerung 430 weisen zweckgebundene
Hardware und Software auf, die der Steuerung hoher Ebene durch den
Prozessor 410 unterliegen. Zum Abwickeln vom Sendepuffer 480 gesendeter
Nachrichten leitet die CPU beispielsweise den Auftrag einfach an die
Nachrichtenausgangssteuerung 430 weiter, die auch als CH
21 bezeichnet wird. Die Nachrichtenausgangssteuerung ist dem Abwickeln
der Nachrichtenausgabe aus dem Puffer 480 zugewiesen und
weist zweckgebundene Hardware und Software zum Erreichen dieser
Aufgabe oder der damit verbundenen Aufgaben auf. Ähnlich weist
die Nachrichteneingangssteuerung 440 Hardware und Software
auf, die für
das Abwickeln der Nachrichteneingabe vom Client-Port 340,
während
die Nachrichten in die Empfangspuffer 470.1 und 470.2 im
Speicher 420 laufen, vorgesehen sind. Die Nachrichtenausgangssteuerung 430 steuert
auch einen Nachrichten-FIFO 432. Der Nachrichten-FIFO empfängt vom
Sendepuffer 480 gesendete Nachrichten und hält sie fest,
um sie zum Client-Port 340 zu senden. Ähnlich steuert die auch als
CH 20 bekannte Nachrichteneingangssteuerung 440 einen Nachrichten-FIFO 442,
der Nachrichten vom Client-Port empfängt und sie im Empfangspuffer 470.1 oder 470.2 platziert.
Es sei bemerkt, dass das System in der Lage ist, einen Staudruck
auf eine Ursprungsstelle auszuüben,
falls einer der FIFOs 442 und 432 voll werden
sollte. Falls ein Ursprungscomputer beispielsweise Nachrichten sendet,
die für
einen bestimmten Client bestimmt sind, kann der diesem Client zugeordnete
Nachrichten-FIFO 442 voll werden oder nahezu voll werden. Um
zu gewährleisten,
dass keine Nachrichten verloren gehen, kann eine Nachricht zum Ursprungscomputer
gesendet werden, um zu verhindern, dass er Nachrichten zu dem speziellen
Ziel sendet. Der Client 320 ist über den bidirektionalen Client-Port 340 mit
der Schnittstellenvorrichtung 330 verbunden.
-
Der
Verkehr im Peripheriekanal 380 ist in Pakete organisiert,
die von einem Ursprungsknoten zu einem Zielknoten gesendet werden.
Ein Paket wird auf einem der Kanalringe übertragen, wobei es über die
Zwischenknoten läuft,
bis es den Zielknoten erreicht. Der Zielknoten entfernt das Paket
aus dem Kanal und antwortet mit einem Echopaket. Der Ursprungsknoten
behält
eine Kopie des gesendeten Pakets, bis er das entsprechende Echopaket
empfängt.
Das Echo informiert die Quelle, ob das gesendete Paket am Zielknoten
erfolgreich empfangen wurde, oder ob er belegt war. Falls das Paket
akzeptiert wurde, gibt der Ursprungsknoten den vom gesendeten Paket
belegten Pufferplatz frei. Falls das Paket belegt war, sendet der
Ursprungsknoten das Paket erneut.
-
Pakete,
die in die Knoten-Schnittstellenvorrichtung 330 eintreten,
durchlaufen zuerst den Phasenkorrektor und Decodierer, um die Pakete
mit der Umgebung der Schnittstellenvorrichtung auszurichten. Die
Pakete werden dann von einem Parser interpretiert und entweder durch
den Knoten geleitet oder von der Schnittstellenvorrichtung 330 entnommen und
in Empfangspuffer 470 geleitet. Pakete, die vom Client 320 ankommen,
werden in einem aktiven Sendepuffer 480 zusammengestellt
und durchlaufen den Client-Port 340, bevor sie in den Peripheriekanal 380 selbst
eintreten.
-
Der
Peripheriekanal 380 und die Schnittstellenvorrichtung 330 können auch
als ein Dualringsystem oder als ein Einzelringsystem konfiguriert
sein. Der Client 320 verwendet ein Kommunikationssteuersystem
zum Verwalten des Empfangens und Sendens von Paketen, die über die
Client-Schnittstelle 340 in die Schnittstellenvorrichtung 330 laufen
und von dieser kommen. Unabhängig
davon, ob das Netzwerksystem ein Einzelringsystem, ein Dualringsystem
oder ein Mehrfachringsystem ist, steuert das Kommunikationssteuersystem
die Empfangspuffer 470 für das Empfangen von Paketen
oder Nachrichten vom Kanal 310 und zum Ausgeben dieser
Nachrichten oder Pakete an den Client über den Client-Port 340 in
der gleichen Weise. Ähnlich
steuert das Kommunikationssteuersystem auch die Sendepuffer 480 zum
Senden von Nachrichten vom Client 320 zum Client-Port 340 und
zur Schnittstellenvorrichtung 330 des Netzwerks. Die Kommunikationssteuerung
kann auf eine Anzahl von Arten implementiert werden. Bei diesem
bestimmten System ist die Kommunikationssteuerung im Betriebssystem
eines Prozessors in dem Client-Computer, der der Aufgabe zugeordnet
ist, konfigurierbar.
-
Diese
Erfindung konzentriert sich auf die Steuerung der Empfangspuffer 470 und
der Sendepuffer 480. Der allgemeine Betrieb sowohl der
Empfangspuffer 470 als auch der Sendepuffer 480 wird zuerst
erörtert.
Nach dieser allgemeinen Erörterung des
allgemeinen Betriebs werden die spezifischen Befehlssätze dargelegt.
-
Steuerung
von Empfangs- und Sendepuffern
-
Der
allgemeine Betrieb der Empfangspuffer 470 und der aktiven
Sendepuffer 480 wird nun anhand des in 5 dargestellten
Flussdiagramms erörtert. 5 ist
ein Flussdiagramm, in dem die Schritte dargestellt sind, die die
Kommunikationssteuerung beim Empfangen von Nachrichten oder Paketen
innerhalb eines Puffers, beispielsweise in der Nachrichtenausgangssteuerung 430 oder
der Nachrichteneingangssteuerung 440, implementiert. Jedem
Puffer 470.1, 470.2 oder 480 ist durch
Software ein Platz im Speicher 420 zugewiesen, und seine Länge beträgt n Nachrichten.
Wenn eine Nachricht empfangen wird, wird sie durch die Nachrichteneingangssteuerung 440 (CH
20) zum Puffer 470 hinzugefügt. Der Nachrichteneingangssteuerung 440 (CH 20)
ist ein Paar von Zählern
zugeordnet. Wenn jede Nachricht dem Puffer 470.1 hinzugefügt wird,
wird einer der Zähler
erhöht,
um die Adresse anzugeben, an der die letzte Nachricht oder das letzte
Paket gespeichert wurde. Wenn zusätzliche Pakete oder Nachrichten
ankommen, wird der Zähler
wieder erhöht,
um eine neue Endadresse anzugeben, an der das letzte Paket oder
die letzte Nachricht gespeichert wurde. Wenn eine neue Nachricht
oder ein neues Paket im Puffer 470.1 platziert wird, wird
sie bzw. es vorteilhafterweise lediglich im Puffer plaziert, statt
dass es erforderlich wäre,
einen Interrupt zu erzeugen, der von der CPU erkannt werden muss,
bevor eine weitere Nachricht oder ein weiteres Paket im Puffer 470.1 plaziert
wird. Dies ist vorteilhaft, weil zu jeder Zeit mehrere oder zahlreiche
Nachrichten in einen Puffer 470.1 eingegeben werden können. Hierdurch
wird der mit der Kommunikationssteuerung verbundene Zusatzaufwand
verringert, weil nicht auf Interrupts geantwortet werden muss, um
Nachrichten zu den Nachrichtenpuffern 470.1 hinzuzufügen. Hierdurch wird
auch Zeit gespart, weil die Nachrichten einfach an einen Puffer 470.1 angehängt werden
können
und ein Zähler
erhöht
werden kann, um die der letzten Nachricht zugeordnete Adresse anzugeben.
-
Wie
durch eine Bezugszahl 510 angegeben ist, besteht der Anfangsschritt
darin zu bestimmen, ob eine Nachricht in den Puffer 470.1 eingegeben wird.
Falls keine eingehende Nachricht oder kein eingehendes Paket vorhanden
ist, wird nichts unternommen. Falls eine eingehende Nachricht vorhanden
ist, reagiert die Steuerung 440 durch Senden der Nachricht
zu 470.1. Der Interrupt wird dann, wie in Schritt 520 dargestellt
ist, gesetzt, und der einem CR/CL-Register 470.1 zugeordnete
RPC-Zähler
wird erhöht,
um die neue Adresse für
die letzte Nachricht anzugeben, wie in Schritt 530 dargestellt
ist. Der nächste
Schritt, der durch eine Bezugszahl 540 angegeben ist, besteht
darin zu bestimmen, ob zusätzliche
Nachrichten empfangen worden sind. Falls keine zusätzlichen
Nachrichten empfangen worden sind, wird der Puffer zurückgesetzt
und wartet auf den nächsten
Interrupt, wie durch die zu Schritt 510 zurücklaufende
Linie dargestellt ist. Falls zusätzliche Nachrichten
empfangen worden sind, werden die zusätzlichen Nachrichten zum Puffer
hinzugefügt,
und der der letzten Adresse zugeordnete Zähler wird dann erhöht, um die
neue letzte Adresse anzugeben, die der letzten empfangenen Nachricht
oder dem letzten empfangenen Paket zugeordnet ist, wie durch die
Linie zu Schritt 530 dargestellt ist. Die in 5 dargestellten
Schritte sind jedem Puffer in der Art des Empfangspuffers 470.1 zugeordnet,
dem ein einziger Puffer zugeordnet ist. Jede Nachricht, die zu einem Empfangspuffer
läuft,
könnte
einen Interrupt erzeugen, Software erlaubt es der CPU jedoch, Interrupts außer Acht
zu lassen, die während
eines Interrupts empfangen werden, weil gerade eine Nachricht verarbeitet
wird. Durch die Verarbeitung mehrerer Nachrichten mit einem Interrupt
wird die CPU davon befreit, andere Aufgaben zu behandeln, wodurch
die mit der Ausführung
der anderen Aufgaben verbundene Wartezeit verringert wird.
-
Bei
einer bevorzugten Ausführungsform
besteht jeder Empfangspuffer 470 aus mindestens zwei Puffern 470.1 und 470.2,
die im Speicher zugeordnet sind. Dies ist vorteilhaft, weil dadurch
eine nicht zusammenhängende
Zuordnung von Speicher möglich ist.
Typischerweise wird ein Abschnitt oder Puffer als Vordergrund bezeichnet,
wie durch die Markierung FG am Puffer 470.1 dargestellt
ist. Der Vordergrund ist der Abschnitt des Speichers, in dem Nachrichten oder
Datenpakete empfangen werden. Sobald der Vordergrund oder Abschnitt
des Speichers gefüllt wurde,
fügt die
Kommunikationssteuerung dem Hintergrund (durch die Markierung BG
am Puffer 470.2 dargestellt) künftige Pakete hinzu und bringt
den Hintergrund in den Vordergrund. Mit anderen Worten wird der
Vordergrund, wenn er voll ist, zum Hintergrund gemacht oder gekennzeichnet,
und der andere Speicherabschnitt, der zuvor als Vordergrund bezeichnet
wurde, wird nun zum Vordergrund oder Abschnitt des Speichers gemacht.
-
6 ist
ein Flussdiagramm, in dem die Schritte dargestellt sind, die zusätzlich zu
den in 5 dargestellten zum Abwickeln der Kommunikation
in einem Nachrichtenempfangspuffer 470 mit einem ersten
Speicherabschnitt und einem zweiten Speicherabschnitt oder mit zwei
Puffern ausgeführt werden.
Einer der Puffer 470.1 ist als Vordergrund gekennzeichnet,
und der andere Puffer, der Empfangspuffer 470.2, ist als
Hintergrund gekennzeichnet. Die Puffer lagern fortlaufend zwischen
dem Vordergrund und dem Hintergrund um, wenn beide voll werden.
Der Vordergrund ist der Ort, von dem aus die Übertragungen stattfinden. Der
Hintergrund ist ein anderer Registersatz, an dem entweder gerade
beendete letzte Übertragung
oder die nächste Übertragung
stattfindet. Nach einem Umschalten vom Vordergrund zum Hintergrund
verarbeitet der Prozessor das letzte Paket bzw. die letzten Pakete
und richtet dann den Hintergrund für die nächste Übertragung ein. Dies geschieht,
während
der Vordergrund Nachrichten überträgt. Die
Inaktivität
wird eingeleitet, nachdem die letzte Nachricht empfangen wurde und die
Registereinstellung zu Hintergrund gewechselt ist. Die Inaktivität endet,
wenn die CPU den Hintergrund für
die nächste Übertragung
einrichtet. Dies ist dann der Fall, wenn der Hintergrund aktiv wird.
Es ist auf diese Weise möglich,
dass sowohl der Vordergrund als auch der Hintergrund aktiv (oder
inaktiv) sind. Es ist recht normal, wenn beide aktiv sind. Es ist nicht
normal, wenn beide inaktiv sind. Wenn beide inaktiv sind, bedeutet
dies, dass der Vordergrund keine Nachrichten empfangen kann. Dieses
System lässt der
CPU einen Zeitraum zum Einrichten des Hintergrunds, ohne dass die
Befürchtung
besteht, Nachrichten zu verlieren oder aufzuhalten.
-
Es
sei bemerkt, dass der Empfangspuffer aus mehr als zwei Puffern bestehen
könnte.
Es könnten
mehrere Vordergründe oder
Hintergründe
implementiert werden. Zusätzlich
könnten
auch mehrere Puffer als Sendepuffer verwendet werden. Der Sendepuffer 480 könnte aus
einem Hintergrund und einem Vordergrund oder aus mehreren Vordergründen und
mehreren Hintergründen
bestehen.
-
Software
führt den
Interrupt aus und setzt die CA/CL-Register auf den inaktiven Hintergrund
zurück und
setzt sie auf aktiv zurück.
Wie durch eine Bezugszahl 610 dargestellt ist, dient der
erste Schritt der Bestimmung, ob der Vordergrundspeicher voll geworden
ist. Falls dies nicht der Fall ist, werden in den Empfangspuffer 470 eingehende
Nachrichten an den Vordergrundpuffer angehängt, wie in Schritt 620 dargestellt
ist. Natürlich
wird, wenn neue Nachrichten zum Vordergrund hinzugefügt werden,
der dem Puffer zugeordnete Zähler
erhöht,
um die neue letzte Nachrichtenadresse anzugeben (in Schritt 530 in 5 dargestellt).
Falls der Vordergrundspeicher voll geworden ist, schaltet die Kommunikationssteuerung zum
Hintergrundspeicher um und fügt
die neuen eingehenden Nachrichten dem Hintergrundspeicher hinzu,
wie in Schritt 630 dargestellt ist. Sobald die Umschaltung
zwischen dem Vordergrund und dem Hintergrund vorgenommen wurde,
kennzeichnet die Kommunikationssteuerung den Vordergrund als den Hintergrund
um, wie in Schritt 640 dargestellt ist. Ähnlich wird
das, was zuvor der Hintergrund war, nun zum Vordergrund, wie Schritt 650 zeigt.
Die Schritte 630, 640 und 650 können innerhalb
der Kommunikationssteuerung im Wesentlichen gleichzeitig geschehen.
Nach Schritt 650 geht die Kommunikationssteuerung zur Überwachung
und Bestimmung, ob der Vordergrundspeicher voll geworden ist, zurück, wie
in Schritt 610 dargestellt ist. Sobald der Vordergrundspeicher
voll geworden ist, werden die Schritte 630, 640 und 650 wiederholt.
Der Vordergrund- und der Hintergrundspeicher werden üblicherweise
mit den Empfangspuffern 470 implementiert.
-
7 zeigt
ein Flussdiagramm zur Ausgabe von Nachrichten von einem Puffer in
der Art der Sendepuffer 480. Wie vorstehend erwähnt wurde,
sind jedem Puffer zwei Zähler
zugeordnet. Wenn die Nachrichten gesendet werden, wird der erste
Zähler
erhöht,
um die der letzten gesendeten Nachricht zugeordnete Adresse wiederzugeben.
Der andere Zähler hält die Endadresse
der letzten Nachricht, die gesendet werden muss, im Puffer. Dies
ist die Begrenzungsadresse. Das Senden von Nachrichten oder Datenpaketen
ist ein einfacher Prozess des Erhöhens des Anfangsadressenzählers, wenn
jede Nachricht vom Puffer ausgegeben wird, um die dieser bestimmten
Nachricht oder diesem bestimmten Paket zugeordnete Adresse wiederzugeben.
Wenn der Anfangsadressenzähler
bis zur Begrenzungsadresse der letzten Nachricht erhöht wird,
weiß der
Puffer, wie das Ausgeben von Nachrichten zu unterbrechen ist. Vorteilhafterweise
können
andere Nachrichten an den Puffer angehängt werden, wenn Nachrichten vom
Puffer gesendet werden. Wenn eine Nachricht hinzugefügt wird,
wird die Begrenzungsadresse erhöht,
um die letzte Adresse wiederzugeben, die der letzten empfangenen
Nachricht zugeordnet ist. Die Kommunikationssteuerung muss nicht
auf eine Unterbrechung antworten, um die hinzugefügte Nachricht
aufzunehmen, und der Adressenzähler,
der der Anfangsadresse der gesendeten Nachricht zugeordnet ist,
arbeitet weiter, bis der Adressenzähler die neue Begrenzungsadresse
erreicht, die der letzten hinzugefügten Nachricht zugeordnet ist.
Auf diese Weise können
Nachrichten hinzugefügt
werden, während
ein anderer Abschnitt des Puffers Nachrichten sendet. Es braucht
auf keine Unterbrechungen reagiert zu werden, und der Betrieb des
Sendens kann fortgesetzt werden, wenn der Puffer neue hinzugefügte Nachrichten
aufweist.
-
Wie
in 7 dargestellt ist, wird zuerst festgestellt, ob
ein Befehl zur Ausgabe von Nachrichten vorliegt, wie durch Schritt 710 dargestellt
ist. Falls kein solcher Befehl vorliegt, wartet die Kommunikationssteuerung
einfach auf den Befehl, wie durch eine Bezugszahl 720 dargestellt
ist. Falls ein solcher Befehl vorliegt, reagiert die Kommunikationssteuerung auf
ihn, wie durch eine Bezugszahl 730 dargestellt ist. Die
Kommunikationssteuerung sendet dann Nachrichten, bis die Adresse,
die der gegenwärtig gesendeten
Nachricht zugeordnet ist, gleich der Adresse ist, die der letzten
empfangenen Nachricht zugeordnet ist, wie durch Schritt 740 dargestellt
ist. Die letzte bekannte Adresse, die dem Puffer zugeordnet ist,
kann auch als der Pufferzählwert
bezeichnet werden. Selbst nachdem die Begrenzungsadresse erreicht
worden ist, können
zusätzliche
Nachrichten hinzugefügt
werden, und die Begrenzungsadresse ändert sich und die Kommunikationssteuerung wird
wieder aktiv und sendet die hinzugefügten Nachrichten. Interrupts
werden nur erzeugt, wenn der Anfangsadressenzähler der Begrenzungsadresse gleicht.
-
Es
gibt mehrere Erweiterungen, die in einem Netzwerk implementiert
werden können,
um abgehende Informationspakete oder Daten und/oder Nachrichten
zu priorisieren. Beispielsweise könnte das Kommunikationssteuersystem,
ebenso wie die Empfangssteuerung, mehrere Anfangs- und Endadressen
erkennen und eine Vordergrund-/Hintergrundkonfiguration implementieren.
Zusätzlich
könnten
die Pakete Indikatoren aufweisen, die die in dem Paket enthaltenen
Informationen widerspiegeln. Ein solcher Informationsindikator könnte auch
zum Priorisieren der zu sendenden Informationen verwendet werden.
Ein weiterer Weg zum Priorisieren der einem Paket zugeordneten Daten
oder Nachricht besteht darin, die Nachrichtenquelle und das Ziel,
zu der die Nachricht zu senden ist, anzugeben. Bestimmte Clients 320 in
einem Netzwerk können
Funktionen ausführen,
die Priorität
gegenüber
jenen anderer Clients gewinnen, die mit dem Netzwerk verbunden sind,
so dass die für
diesen bestimmten Client-Computer oder Mikroprozessor bestimmten
Nachrichten oder Nachrichten von einem bestimmten Client oder Mikroprozessor
nach Wunsch priorisiert werden können.
-
Ein
weiterer Weg zum Priorisieren würde
darin bestehen, bestimmte Nachrichten zu einem bestimmten Vordergrund
hinzuzufügen,
wenn mehrere Vordergründe
einem Sendepuffer 480 oder Empfangspuffer 470 zugeordnet
sind.
-
In 8 sind
mehrere Register dargestellt, die dem Kanal 20, dem Kanal 21,
dem Kanal 22 und dem Kanal 23 zugeordnet sind.
-
Der
Peripheriekanal 380 und die Schnittstellenvorrichtung 330 können als
ein Dualringsystem oder als ein Einzelringsystem konfiguriert werden, wie
in 4 dargestellt ist. Die Kommunikationssteuerungen
für ein
Einzelringsystem oder ein Dualringsystem sind gleich. Das Kommunikationssteuersystem
steuert die Empfangspuffer 470 für das Empfangen von Daten von
den Kanälen 410 des
bidirektionalen Mehrkanalrings und zum Ausgeben dieser Pakete an
das ringbasierte Netzwerk. Das Kommunikationssteuersystem steuert
auch die Puffer für
das Erhalten von Paketen oder Nachrichten von dem Ring und zum Übertragen
dieser Pakete zum Client-Computer.
-
Kommunikationssteuerung
-
Alle
Kanäle
werden mit einem Transferinformationsblock ("Transfer Information Block" – TIB) implementiert, der die
Informationen enthält,
die die Client-Schnittstellenvorrichtung 330 benötigt, um
von den Empfangspuffern 470 und 480 empfangene Nachrichten
abzuwickeln. Es gibt zwei Sätze
von TIB-Registern.
-
CPU-Befehlssatz
-
- 0010jk Set CA: Setze den TIB-Zeiger der Kanalnummer Aj auf
die Adresse Ak.
- 0011jk Set CL: Schreibe in den Adressenort, auf den der TIB-Zeiger
des Kanals Aj zeigt, den Wert in Ak und erhöhe den TIB-Zeiger.
- 0012j0 Clr CI: Lösche
den Interrupt des Kanals Aj.
- 0012j1 Clr Chnl MC: Lösche
den Kanal Aj und breche alle gerade ausgeführten Übertragungen ab.
- 033ij0 Read CA: Lese den Adressenort, auf den der TIB-Zeiger des Kanals
Aj zeigt, in Ai.
-
Nachrichteneingabe
-
Der
Nachrichteneingabe-TIB hat zwei Sätze von Transferinformationsregistern
(TI-Registern) und zwei Sätze
von CA/CL-Registern. Zu jeder gegebenen Zeit ist ein Satz von CA/CL-Registern
im Vordergrund (FG) und der andere im Hintergrund (BG). Das FG/BG-Umschalten
geschieht, wenn CA = CL für
einen Registersatz ist. Zum Setzen des TIB-Zeigers für eine Nachrichteneingabe
muss ein Set CA ausgegeben werden, wobei Aj auf 20 gesetzt ist.
Ak wird als die TIB-Zeigeradresse geladen. Jedes Set CL schreibt
den CL-Wert an den TIB-Ort, auf den der TIB-Zeiger zeigt. Dieser
TIB wird sequenziell durch Set CL-Befehle geladen. Nachdem die Daten
in den TIB geschrieben worden sind, wird der TIB-Zeiger zum nächsten Ort
erhöht.
Ein Set CL für
die Orte 2 oder 5 (CL) setzt das aktive Bit im TI-Register 0 oder 1.
Ein Set CL für
die Orte oder 4 (CA) löscht
den RPC im TI-Register 0 oder 1. Die Adressenzuordnung des TIBs
ist in 8 dargestellt.
-
TI – Transferinformationsregister
-
9 zeigt
weitere Einzelheiten der Transferinformationsregister (TI-Register)
des in 8 dargestellten Kanals 20. Die TI-Register
sind Software-Nurleseregister und enthalten Nachrichteneingabeinformationen
für die
beiden Sätze
von CA/CL-Registern. Die Bits 0–21
des TI-Registers 0, 1 zeigen den Status, bei dem CA/CL auf 0 bzw.
1 gesetzt ist. Die Bits 30–31
beider TI-Register geben an, welcher Kanal den Interrupt gesendet
hat. Die Formate der TI-Register sind nachstehend dargestellt.
RPC:
Die Bits 0–19
sind der Empfangspaket-Zählwert
(RPC), der eine laufende Gesamtzahl der Nachrichten im Hauptspeicher
für einen
Satz von CA/CL-Registern ist.
Der RPC wird gelöscht, wenn
CA eines CA/CL-Satzes geschrieben wird.
Act: Das Bit 20 ist
ein aktives Hinweiszeichen, das gesetzt wird, wenn CL eines CA/CL-Satzes
geschrieben wird, und das gelöscht
wird, wenn der CA/CL-Satz in den Hintergrund gesendet wird.
FG:
Das Bit 21 ist ein Hinweiszeichen, das aussagt, ob das gerade gelesene
TI-Register gegenwärtig
im Vordergrund (1) oder im Hintergrund (0) ist.
PE: Das Bit
22 legt fest, ob FG und ACT gesetzt sind und ein Paritätsfehler
auf einer Nachricht erfasst wird.
Bits 24, 23: Kennungsbits
des TI-Registers.
INT-0, INT-1: Die Bits 31, 30 geben an, dass
der CA/CL-Satz 0,
1 den Interrupt gesendet hat.
-
Nachrichteneingabeprotokoll
-
Zum
Empfangen von Nachrichten muss ein Set CA ausgegeben werden und
ein TIB-Zeiger so gesetzt werden, dass er auf CA eines CA/CL-Satzes zeigt.
Ein Set CL kann dann verwendet werden, um CA zu schreiben, worauf
ein weiteres Set CL zum Schreiben von CL folgt. Die Hardware ist
nun für
den Empfang von Nachrichten bereit. Wenn eine Nachricht empfangen
worden ist, wird sie in den Hauptspeicher geschrieben, und es wird
ein Interrupt für den
Kanal 20 gesendet. Von der Zeit an, zu der der Interrupt
gesendet wird, können
mehrere Nachrichten in den Speicher geschrieben werden, und die Zeitsoftware
liest den RPC. Der Interrupt kann durch Lesen eines der TI-Register verarbeitet
werden, um herauszufinden, welches CA/CL den Interrupt gesendet
hat. Sobald dies bestimmt wurde, gibt der RPC von dem geeigneten
TI-Register an, wie viele 35-Wort-Nachrichtenpakete sich im Hauptspeicher befinden.
Nachdem die Nachrichten verarbeitet worden sind, kann ein Clr CI
ausgegeben werden, um den Interrupt zu löschen, und RPC sollte dann
erneut gelesen werden, um zu prüfen,
ob weitere Nachrichten in den Speicher geschrieben worden sind.
Falls dies der Fall ist, sollten sie verarbeitet werden. Falls der
RPC nach einem Clr CI nicht erneut gelesen wird, könnten unverarbeitete
Nachrichtenpakete im Speicher verbleiben, ohne dass ein Interrupt
gesetzt wird. Nachrichten werden gegenwärtig geschrieben, wobei das
erste Wort die Länge
des Pakets angibt, das folgt.
-
Anfänglich werden
sowohl FG-CA/CL als auch BG-CA/CL geschrieben und dadurch aktiv
gesetzt. Nachrichten werden in den CA/CL-Satz 0 (Puffer A) geschrieben,
bis CA0 = CL0 gilt. Zu dieser Zeit wird das FG/BG-Umschalten vorgenommen
und der CA/CL-Satz 0 inaktiv gesetzt. Die aktiven Bits befinden
sich im TI-Register. Nachdem der Puffer A geleert worden ist, kann
der CA/CL-Satz 0 erneut geladen werden. Falls das aktive Bit im
TI-Register gesetzt ist, gilt CA # CL, und CA/CL sollte offensichtlich nicht
erneut geladen werden. Das aktive Bit ist die Warteschlange zum
erneuten Laden von CA/CL.
-
Die
Hardware sendet keinen Interrupt, wenn keine Nachricht zum Speicher
gesendet worden ist. Der RPC ist eine laufende Gesamtzahl und nicht
die Anzahl der Nachrichten seit dem letzten Interrupt. Die Interrupt-Bits
im TI-Register geben immer an, welches CA/CL-Paar den Interrupt
gesendet hat. Falls ein FG/BG-Umschalten vorgenommen wird, bevor alle
Nachrichten verarbeitet worden sind, ist es möglich, beide INT-Bits zu setzen.
-
Nachrichtenausgabe und
Nachrichtenausgabeprotokoll
-
Der
Nachrichtenausgabe-TIB hat einen Satz von CA/CL-Registern. Zum Senden von Nachrichten muss
ein Set CA ausgegeben werden und der TIB-Zeiger auf die Adresse
0 (CA) gesetzt werden. Ein Set CL kann dann verwendet werden, um
CA zu schreiben, dem ein weiteres Set CL folgt, um CL zu schreiben.
Jedes Mal dann, wenn CL geladen wird, wird die Fähigkeit eines Interrupts für den Kanal 21 eingeschaltet,
und falls CL größer als
CA ist, beginnt die Nachrichtenausgabeaktivität. Um die Interrupt-Fähigkeit
des Kanals 21 auszuschalten, muss ein Clr CI ausgegeben
werden, nachdem CL gesetzt wurde. Wenn CA = CL ist, wird die Nachrichtenausgabeaktivität unterbrochen,
und falls ein Interrupt eingeschaltet wird, wird ein Interrupt auf
dem Kanal 21 gesendet. Zur Wiederaufnahme der Nachrichtenausgabeaktivität muss ein
neues CL geladen werden, und die Interrupt-Fähigkeit des Kanals 21 wird
wieder eingeschaltet. Ein Clr CI müsste wieder ausgegeben werden,
um den Interrupt auszuschalten. Demgemäß hat Clr CI einen doppelten
Zweck, es wird dadurch nämlich
ein Interrupt gelöscht,
wenn es gesetzt ist, und die Interrupt-Fähigkeit des Kanals 21,
jedes Mal dann, wenn es ausgegeben wird, ausgeschaltet.
-
Das
erste Wort abgehender Nachrichten gibt die Länge der zu sendenden Nachricht
an. Das "Außerhalb-des-Bands-Wort" wird nicht auf den
Ring gesendet.
-
Vorteilhafterweise
ermöglicht
die Kommunikationssteuerung eine minimale Prozessorunterbrechung,
wenn Nachrichten entweder von einem Empfangspuffer oder von einem
Sendepuffer aufgenommen oder ausgegeben werden. Weil die Kommunikationssteuerung
einen Zähler
innerhalb des Empfangspuffers erhöht, wenn Nachrichten in einen
Puffer eingegeben werden, um einen Zähler mit einer Adresse oder
einem zugeordneten Wert zu erzeugen, wodurch die letzte empfangene
Nachricht widergespiegelt wird, kann die Kommunikationssteuerung, wenn
Ausgaben vom Sendepuffer gesendet werden müssen, lediglich Nachrichten
senden, bis der Wert des Zählers
dem Wert gleicht, der der Adresse für eine bestimmte Nachricht
zugeordnet ist. Wenn der Zählerwert
der einer Nachricht zugeordneten Begrenzungsadresse gleicht, unterbricht
die Kommunikationssteuerung das Senden von Nachrichten. Der Vorteil
besteht darin, dass in der Vergangenheit verschiedene Hinweiszeichen
und Interrupts verwendet werden mussten, um anzugeben, wenn eine
einzelne Nachricht abgeschlossen war. Falls beispielsweise vier
Nachrichten in einen Empfangspuffer gesendet wurden, wurden vier
Interrupts von dem Prozessor verarbeitet, um die vier Nachrichten
zu empfangen. Bei der gegenwärtigen
Kommunikationssteuerung wird Zeit gespart, weil die in den Puffer
eingegebenen Nachrichten nicht die Verarbeitung eines Interrupts
benötigen.
Die Nachrichten werden empfangen, und ein Zähler wird erhöht, um den
Empfang der Nachricht widerzuspiegeln. Daher können mehrere Nachrichten in
einem einzigen Interrupt verarbeitet werden. Die nachfolgenden Nachrichten
brauchen keinen Interrupt zu verarbeiten, falls sie empfangen werden,
bevor der erste Interrupt abgeschlossen wurde. Wenn Nachrichten
vom Sendepuffer ausgesendet werden, ist es aus dem gleichen Grunde
nicht erforderlich, eine Anzahl von Nachrichtenendbefehlen zu verarbeiten.
Das Endergebnis ist ein Netzwerk, das in der Lage ist, mehrere Nachrichten
oder Informationspakete in die Sende- und Empfangspuffer bei einem
minimalen Zusatzaufwand und einer minimalen Verarbeitung einzulesen
und von diesen auszusenden.
-
Zusammenfassend
sei bemerkt, dass ein Verfahren zum Abwickeln der Kommunikation
von und zu einem einem Prozessor zugeordneten Speicher mit mehreren
Eingabepuffern und einem Ausgabepuffer, wobei der Prozessor an ein
Computernetzwerk angeschlossen ist, die folgenden Schritte aufweist:
Empfangen einer Nachricht in einem Empfangspuffer und Erhöhen eines
Empfangseingabezählers
beim Empfang der Nachricht im Empfangspuffer, indem die Länge der
Nachricht zum Empfangseingabezähler
addiert wird, um einen Empfangseingabe-Zählerwert zu erzeugen. Das Verfahren
beinhaltet auch den Schritt des Sendens von Nachrichten vom Empfangspuffer,
bis der Empfangseingabezähler
auf den Empfangsgrenzwert erhöht wurde.
-
Ein
Computernetzwerksystem beinhaltet mehrere Netzwerkknoten. Jeder
der Netzwerkknoten weist einen Client-Computer, der mit Paketnachrichten
kommuniziert, und eine Kommunikationssteuerung, die den Client-Computer
mit dem Computernetzwerk verbindet, auf. Die Kommunikationssteuerung
weist weiter einen Nachrichtenempfangspuffer und einen dem Nachrichtenempfangspuffer
zugeordneten Empfangspufferzähler
auf. Die Kommunikationssteuerung erhöht einen Empfangspufferzähler beim
Empfangen der Nachricht im Empfangspuffer, um einen Pufferzählerwert
zu erzeugen, der der letzten Adresse der letzten empfangenen Nachricht
zugeordnet ist. Die Kommunikationssteuerung sendet Nachrichten vom
Empfangspuffer, bis der Empfangspufferzähler bis zum Grenzwert für den Empfang
erhöht
wurde.
-
Eine
Kommunikationssteuerung weist einen Empfangspuffer und eine dem
Empfangspuffer zugeordnete Empfangspuffersteuerung auf. Die Empfangspuffersteuerung
erhöht
einen dem Empfangspuffer zugeordneten Zähler bis zu einer letzten Empfangspufferadresse,
wenn eine zweite Nachricht empfangen wird, bevor ein Interrupt für eine erste Nachricht
gelöscht
wurde.
-
Ein
Verfahren zum Abwickeln der Kommunikation von und zu einem einem
Prozessor zugeordneten Speicher mit mehreren Eingabepuffern und
einem Ausgabepuffer, wobei der Prozessor an ein Computernetzwerk
angeschlossen ist, beinhaltet die folgenden Schritte: Empfangen
einer Nachricht in einem Sendepuffer und Erhöhen eines Empfangseingabezählers beim
Empfangen der Nachricht im Sendepuffer durch Addieren der Länge der
Nachricht zum Empfangseingabezähler,
um einen Sendeeingabe-Zählerwert
zu erzeugen. Die Nachrichten vom Sendepuffer werden gesendet, bis
der Sendeeingabezähler
auf den Grenzwert für
das Senden erhöht wurde.
-
Wenngleich
hier spezifische Ausführungsformen
erläutert
und beschrieben wurden, werden Fachleute verstehen, dass die dargestellte
spezifische Ausführungsform
durch jede beliebige Anordnung ersetzt werden kann, die berechnet
ist, um dieselben Zwecke zu erreichen. Diese Anmeldung soll alle
Anpassungen oder Variationen der vorliegenden Erfindung einschließen. Es
ist daher ausschließlich vorgesehen,
dass diese Erfindung nur durch die Ansprüche und gleichwertige Ausgestaltungen
von ihnen beschränkt
ist.