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

DE69019247T2 - Kontrollverfahren und Vorrichtung bei der Kommunikation zwischen Rechnern. - Google Patents

Kontrollverfahren und Vorrichtung bei der Kommunikation zwischen Rechnern.

Info

Publication number
DE69019247T2
DE69019247T2 DE69019247T DE69019247T DE69019247T2 DE 69019247 T2 DE69019247 T2 DE 69019247T2 DE 69019247 T DE69019247 T DE 69019247T DE 69019247 T DE69019247 T DE 69019247T DE 69019247 T2 DE69019247 T2 DE 69019247T2
Authority
DE
Germany
Prior art keywords
message
virtual
link
packet
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69019247T
Other languages
English (en)
Other versions
DE69019247D1 (de
Inventor
Michael David Bristol Bs8 2Ej May
Brian Jeremy Clifton Bs8 4Hy Parsons
Peter William Hrofield Bristol Bs7 0De Thompson
Christopher Paul Hulme Portishead Avon Bs20 9Ld Walker
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.)
STMicroelectronics Ltd Great Britain
Original Assignee
Inmos Ltd
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 Inmos Ltd filed Critical Inmos Ltd
Publication of DE69019247D1 publication Critical patent/DE69019247D1/de
Application granted granted Critical
Publication of DE69019247T2 publication Critical patent/DE69019247T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • 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/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

  • Die Erfindung bezieht sich auf ein Verfahren zum Steuern der Kommunikation zwischen Computern.
  • Es sind Mikrocomputer bekannt, die vorzugsweise auf einem einzigen Siliziumchip einen Prozessor und einen Speicher aufweisen. Der Prozessor ist in der Lage, gemaß den programmierbaren Befehlen aus dem Speicher zu arbeiten. Ein besonderes Beispiel solch eines Mikrocomputers ist in der US-Patentschrift Nr 4 704 678 beschrieben. Dieser Mikrocomputer hat vier serielle Nachrichtenverbindungsstücke, von denen jedes ein Paar unidirektionaler Kommunikationskanäle min jeweils einem dedizierten Anschluß aufweist, welche eine Übermittlung von Nachrichten in entgegengesetzte Richtungen zwischen dem Mikrocomputer und der mit ihm verbundenen Einrichtung erlaubt. Diese Einrichtung kann ein weiterer, ähnlicher Mikrocomputer sein, wobei der Ausgangsanschluß und der Eingangsanschluß des seriellen Verbindungsstücks eines Mikrocomputers mit dem Eingangsanschluß und dem Ausgangsanschluß des seriellen Verbindungsstücks des anderen Mikrocomputers über unidirekzionale Kommunikationskanäle entsprechend verbunden sind. Wenn die unidirektionalen Kommunikationskanäle fest verdrahtet oder durch andere physikalische Mittel ausgeführt sind, werden sie nachfolgend "Hardware-Kanäle" genannt.
  • Solche Mikrocompucer vermögen mehrere gleichzeitig ablaufende Prozesse auszuführen. Jeder Prozeß besteht aus einem festgelegten Befehlssatz eines Programms, das auf dem Mikrocomputer laufen soll. Der Mikrocomputer führt eine Anzahl von Prozessen zusammen aus, indem er seine Zeit zwischen ihnen aufteilt. Prozesse, die zusammen ausgeführt werden, werden als gleichzeitig ablaufende Prozesse bezeichnet. Zu jeder Zeit wird tatsächlich nur einer der Prozesse durch den Mikrocomputer ausgeführt. Dieser Prozeß wird als laufender Prozeß bezeichnet. Jeder von dem Mikrocomputer abzuarbeitende, gleichzeitig ablaufende Prozess verwendet einen Speicherbereich, Arbeitsraum genannt, zum Halten der lokalen Variablen und der durch den Prozeß gehandhabten zeitweiligen Werte. Der Mikrocomputer erlaubt nicht nur die Kommunikation zwischen gleichzeitig ablaufenden Prozessen auf dem gleichen Mikrocomputer, sondern mittels der Hardware-Kanäle auch zwischen den Prozessen auf unterschiedlichen an einem Netzwerk angeschlossenen Mikrocomputern. Ganz gleich, ob zwischen gleichzeitig ablaufenden Prozessen oder zwischen Prozessen verschiedener Mikrocomputer, der Mikrocomputer arbeitet so, daß eine synchrone Prozeß-zu-Prozeß-Kommunikation gewährleistet wird. Dies ist in dem US-Patent Nr. 4 704 678 im einzelnen erläutert. An dieser Stelle werden kurze Erläuterungen gegeben, die das Verständnis der vorliegenden Erfindung fördern sollen. Wie bereits dargelegt, kann der Mikrocomputer eine Anzahl gleichzeitig ablaufender Prozesse ausführen. Er stellt daher ein Ablauffolgesystem bereit, um festzulegen, welcher Prozeß zu einer bestimmten Zeit durchgeführt werden soll. Der Arbeitsraum des laufenden Prozesses und die Arbeitsräume der anderen auf die Ausführung wartenden Prozesse bilden eine Liste, in der ein Bereich eines jeden Arbeitsraumes einen Arbeitsraumzeiger für den nächsten Prozeß auf der Liste enthält. Der Prozessor führt im Normalfall die Prozesse auf der Liste der Reihe nach aus, gehe jedoch zum nachfolgenden Prozeß über, wenn der laufende Prozeß storniert wird. Der laufende Prozeß beendet die Ausführung weiterer Befehle. Der Prozessor geht zum nächsten Prozeß, der durch die Adresse des nächsten Prozesses bestimmt wurde. Ein Prozeß wird des öfteren storniert, weil er zu einem Befehl gelangt ist, der die Ausgabe von Daten an einen bestimmten, durch eine Kanalnummer gekennzeichneten Kanal zur Folge hat. Dort, wo der zum Empfang dieser Daten vorgesehene Prozeß bei einem anderen Mikrocomputer vorliegt, wäre dies ein Hardware-Kanal, der die Mikrocomputer -wie oben beschrieben- miteinander verbindet. Um die Kommunikation zwischen verschiedenen, durch den selben Mikrocomputer ausgeführte Prozesse zu gestatten, sind eine Vielzahl von sogenannten Software-Kanälen in dem Speicher bereitgestellt. Jeder Software-Kanal besteht aus zwei Wortbereichen im Speicher, nämlich einem zum Zwecke der Identifizierung desjenigen Prozesses, der den Kanal benutzen möchte, und dem zweiten zum Speichern der Daten, die über den Kanal übermittelt werden sollen. Der Ausgabeprozeß wird solange nicht wieder in die Ablauffolge aufgenommen, bis der "Eingabeprozeß" also der Prozeß, für den die Daten bestimmt waren, jene Daten erhalten hat und eine Bestätigungsnachricht an den ausgebenden Prozeß zurückgesandt hat. In diesem Stadium wird der Prozeß in die Ablauffolge wieder aufgenommen und wird, seine Ausführung abwartend, an das Ende der Prozeß liste gesetzt werden. Die Eingabe- und Ausgabeprozesse werden als Kommunikationsprozesse bezeichnet.
  • Aus dem obigen ergibt sich, daß die Anzahl der Prozesse auf einem Mikrocomputer, welche gleichzeitig mit Prozessen auf anderen Mikrocomputern kommunizieren können, durch die Anzahl der verfügbaren Hardware-Kanäle begrenzt ist. Auch dort, wo verschiedene Prozesse den gleichen Hardware-Kanal zur Kommunikation benötigen, ist es notwendig, auf jedem Mikrocomputer einen Prozeß vorzusehen, dessen Aufgabe es ist, die Nutzung jedes Nachrichtenverbindungsstücks zu organisieren. Daraus ergibt sich, daß die Verbindungsstücke nicht nur für den Empfang von Daten und für die Zuteilung dieser an den Eingabeprozeß verantwortlich sind, sondern auch für die Erzeugung und für die Rücksendung der Bestätigungen an den ausgebenden Prozeß. Es ist auch allgemein der Fall, wenn Prozesse Mikrocomputern in einem Netzwerk zugeteilt werden, daß es Prozesse gibt, deren Kommunikation entweder auf dem selben Mikrocomputer oder auf Mikrocomputern, die direkt durch ein Nachrichtenverbindungsstück miteinander verbunden sind, erfolgt.
  • In Microprozessor and Microsystems 13, März 1989, Nr. 2, "Massage passing in a transputer System", Seiten 113-123 ist eine Software-Implementierung virtueller Kanäle beschrieben, die für Datenpfade zwischen Prozessen in einem Knoten eines Netzwerks und Prozessen in einem anderen Knoten eines Netzwerks bereitstehen. Die in diesem Dokument beschriebene Software-Ausführung erfordert verhältnismäßig komplexe Software für den Einsatz beim Prozessor jedes Transputers. Gegenstand der vorliegenden Erfindung ist es, virtuelle Kanäle auf einfachere Weise zu implementieren und den Prozessor von komplexen Prozeßanforderungen zu befreien.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird eine Computervorrichtung bereitgestellt mit einem Prozessor zum Ausführen einer Vielzahl von gleichzeitig ablaufenden Prozessen, die jeweils eine Folge von Befehlen enthalten, einen ein RAM enthaltenden Speicher, mindestens ein Nachrichtenverbindungsstück mit einem Eingang und einem Ausgang zum Anschluß an eine von der Computervorrichtung getrennte Vorrichtung und zum aufeinanderfolgenden Senden von Nachrichtenpaketen zwischen der Computervorrichtung und der getrennten Vorrichtung, dadurch gekennzeichnet, daß der Speicher eine Vielzahl von adressierbaren Speicherplätzen aufweist, die adressierbare virtuelle Kommunikationsverbindungsstücke bilden, von denen jedes einen Adreßspeicherplatz aufweist, der die Information speichert, die das Ziel eines zu sendenden Nachrichtenpaketes auf diesem virtuellen Kommunikationsverbindungsstück festlegt, und gekennzeichnet durch eine Kommunikationssteuerschaltung, die an dem Prozessor, den Speicher, und das Nachrichtenverbindungsstück gekoppelt ist, wobei die Kommunikationssteuerschaltung betreibbar ist; i) als Antwort auf das Ausführen eines Nachrichtenbefehles durch den Prozessor, um ein ausgewähltes virtuelles Kommunikationsverbindungsstück der virtuellen Kommunikationsverbindungsstücke zu adressieren und in das ausgewählte virtuelle Kommunikationsverbindungsstück Information zu laden, in Bezug auf die über die virtuelle Kommunikationsverbindung zu bewirkende Nachricht; und ii) um eine sequenzielle Übertragung durch das eine Nachrichtenverbindungsstück von Nachrichtenpaketen, bezogen auf eine Vielzahl von virtuellen Kommunikationsverbindungsstücken zu steuern, wobei, wenn ein Nachrichtenpaket gesendet werden soll, dessen Ziel durch die Information festgelegt wird, die im ausgewählten Kommunikationsverbindungsstück der virtuellen Kommunikationsverbindungsstücke gespeichert ist.
  • So hat jedes virtuelle Nachrichtenverbindungsstück einen Speicherbereich, der zur Identifizierung einer Paketkopfzeile geeignet ist, welche wiederum an die zum Zwecke der Identifizierung seiner endgültigen Bestimmung gesendeten Nachrichtenpaket angehängt ist. Dadurch werden Prozeßverbindungstabellen zum Anfertigen von Kopfzeilen, wie sie beim Stand der Technik verwendet werden, entbehrlich.
  • Wenn ein Prozessor eine Nachricht senden möchte, gibt er vorzugsweise eine Nachrichtensendeanforderung an die Kommunikationssteuerschaltung aus. Die Anforderung umfaßt einen Adreßabschnitt zur Identifizierung des virtuellen Nachrichtenverbindungsstücks über welche die Nachricht gesendet wird und einen Prozeßbeschreibungssatz zur Identifizierung des anfordernden Prozesses.
  • Der Prozeßbeschreibungssatz umfaßt vorzugsweise einen Zeiger zu einem den Arbeitsraum des sendenden Prozesses bildenden Speicherplatz und kann ebenso die Priorität des Prozesses anzeigen. Ein Zeiger zu den zu sendenden Daten kann dann in einem festen Gffsetplatz (der Kommunikationssteuerschaltung bekannt) des Arbeitsraumes gespeichert werden.
  • Vorzugsweise gestattet der Betrieb der Kommunikationssteuerschaltung, daß Nachrichten zwischen dem durch den Prozessor auszuführenden Prozeß und einem Prozeß, der von einem Prozessor einer separaten Vorrichtung ausgeführt wird, übertragen werden in der Weise, wie eine synchronisierte Prozeß-zu- Prozeßkommunikation implementiert wird. Unter synchronisierter Prozeß-zu-Prozeßkommunikation ist zu verstehen, daß die kommunizierenden Prozesse sich in korrespondierenden Programmstadien befinden, wenn die Nachrichtenübertragung bewirkt wird.
  • Der Speicher kann auch Kommunikationskanäle bereitstellen, um durch besagten Prozessor ausgeführten, gleichzeitig ablaufenden Prozessen die Kommunikation miteinander zu gestatten. In gleicher Weise können die Kommunikationskanäle eine synchronisierte Prozeß-zu-Prozeßkommunikation zwischen gleichzeitig ablaufenden Prozessen des besagten Prozessors erlauben. Diese Kommunikationskanäle können bei einer Ausgestaltung der Software-Kanäle, die in obengenannter Patentschrift Nr. 4 704 678 beschrieben sind, korrespondieren. Die Entscheidung, ob entweder ein Speicherplatz als Software-Kanal (für die interne Kommunikation) handelt oder ein Hardware-Kanal (für externe Kommunikation) wird allein durch die Speicherplatzadresse bewirkt.
  • Die Computervorrichtung umfaßt vorzugsweise eine integrierte Schaltung auf einem einzigen Chip, die den Prozessor, den Speicher und die Kommunikationssteuerschaltung enthält.
  • Die Erfindung umfaßt bei einer anderen Ausführungsform ein Netzwerk von durch ihre Nachrichtenverbindungsstücke miteinander verbundenen Computervorrichtungen.
  • Eine weitere Ausgestaltung der Erfindung umfaßt ein Verfahren zum Ausführen gleichzeitig ablaufender Prozesse in einer Computervorrichtung mit einem Prozessor, einem ein RAM enthaltenden Speicher, einer Kommunikationssteuerschaltung, und mindestens einem Nachrichtenverbindungsstück mit einem Eingang und einem Ausgang, das an eine von der Computervorrichtung separate Vorrichtung angeschlossen ist, um Nachrichtenpakete zwischen der Computervorrichtung und der separaten Vorrichtung zu übertragen, wobei das Verfahren die Schritte aufweist; Festlegen einer Vielzahl von adressierbaren Speicherplätzen als virtuelle Kommunikationsverbindungsstücke, Speichern einer Information, die das Ziel des auf diesem virtuellen Kommunikationsverbindungsstück zu sendenden Nachrichtenpaketes bestimmt, an einem Adreßspeicherplatz jedes virtuellen Kommunikationsverbindungsstückes; Durchführen einer Folge von Befehlen, die eine Vielzahl von Nachrichtenbefehlen enthalten; Betreiben der Kommunikationssteuerschaltung als Antwort auf das Durchführen eines jeden der Nachrichtenbefehle, um ein ausgewähltes virtuelles Kommunikationsverbindungsstück zu adressieren und Informationen in die ausgewählten Verbindungsstücke zu laden in Bezug auf die zu bewirkende Nachricht; und Verwendung der Kommunikationssteuerschaltung, um eine sequentielle Übertragung eines Nachrichtenpaketes durch eines der Nachrichtenverbindungsstücke zu bewirken, indem ein Nachrichtenpaket, das vom ausgewählten virtuellen Kommunikationsverbindungsstück abgeleitete Zielinformation enthält, gebildet wird.
  • Jedes Nachrichtenpaket kann zur Übertragung als mindestens eine Bitsequenz kodiert werden, in welcher jede Bitsequenz eine gleiche Anzahl von Einsen und Nullen enthält, wobei die Bitsequenzen eine vorbestimmte Bitlänge aufweisen und einen endlichen Satz von Permutationen mit gleicher Anzahl von Einsen und Nullen bilden, wobei ein erster Teilsatz des begrenzten Satzes ausgewählt wird, um als Datencodes verwendet zu werden, und ein zweiter, unterschiedlicher Teilsatz des begrenzten Satzes ausgewählt wird, um als Steuercodes verwendet zu werden.
  • Bevorzugt weist jede Bitsequenz eine Länge von sechs Bit min drei Einsen und drei Nullen auf, wobei 16 Permutationen ausgewählt werden, um als Datencodes verwendet zu werden, und vier Permutationen ausgewählt werden, um als Steuercodes verwendet zu werden.
  • Vorzugsweise wird eine Schlange von virtuellen Kommunikationsverbindungsstücken gebildet, die darauf warten, ein Nachrichtenverbindungsstück zu benutzen, indem in jedes virtuelle Kommunikationsverbindungsstück ein Zeiger zum nächsten virtuellen Kommunikationsverbindungsstück geladen wird, wodurch eine verbundene Liste gebildet wird.
  • Bei der bevorzugten Ausgestaltung ist das Nachrichtenverbindungsstück derart ausgestaltet, um eine synchronisierte Prozeß-zu-Prozeßkommunikation vorzusehen, bei welcher jedes Nachrichtenpaket, das durch Ausführung eines Prozesses auf einer Computervorrichtung, die ein virtuelles Verbindungsstück verwendet, ausgegeben wird, durch eine Eingabevorrichtung vor der Übertragung eines weiteren Nachrichtenpaketes, das das gleiche virtuelle Verbindungsstück verwendet, bestätigt wird.
  • Jedes virtuelle Verbindungsstück, das darauf wartet, ein Nachrichtenverbindungsstück zu benutzen, kann dann zwei Positionen in der verbundenen Liste annehmen, eine erste Position, die sich auf die Ausgabe eines Datenpaketes bezieht, und eine zweite Position, die sich auf die Ausgabe eines Bestätigungspaketes bezieht.
  • Vorzugweise steht jedes virtuelle Kommunikationsverbindungsstück damit in Verbindung mit einem Pufferspeicherplatz zum Speichern eines ankommenden, an das virtuelle Kommunikationsverbindungsstück adressierten Nachrichtenpakets. In dem Fall, daß ein Prozeß zum Empfang einer Nachricht bereit ist, gibt der Prozessor eine Anforderung an die Kommunikationssteuerschaltung heraus. Die Kommunikationssteuerschaltung antworten auf die Anforderung, eine Nachricht zu empfangen, durch Identifizierung des virtuellen Verbindungsstücks, bei dem die Nachricht erwartet wird, durch Feststellen, ob der dem virtuellen Verbindungsstück zugeordnete Pufferspeicherplatz Daten enthält, und veranlaßt wenn dies der Fall, daß Daten von dem Prozessor aufgenommen werden, oder veranlaßt, wenn dies nicht der Fall ist, daß der den empfangenen Prozeß identifizierende Prozeßbeschreibungssatz in dem virtuellen Kommunikationsverbindungsstück gespeichert wird.
  • Um die für die Steuerung der Ausgabe und den Empfang von Nachrichten über das Nachrichtenverbindungsstück benötigte Steuerlogik zu vereinfachen und auch um eine Vorabzuweisung des Speicherraums für die virtuellen Kommunikationsverbindungsstücke zuzulassen, kann jede Nachricht in ein oder mehrere, eine vorgegebene Bitlänge nicht übersteigende Nachrichtenpakete aufgeteilt werden. Nachrichten, die von den durch den Prozessor ausgeführten Prozessen gesendet werden, enthalten Daten und werden im weiteren als "Datenpakete" bezeichnet. Datenpakete können einen Datenauszählung beinhalten, die die Länge der gesamten Nachricht identifiziert.
  • Jedes virtuelle Kommunikationsverbindungsstück kann entsprechende Speicherplätze aufweisen, um die Datenauszählungen der zu sendenden und der zu empfangenden Nachrichten zu speichern. Eine Bestätigung für die Implementierung einer synchronisierten Prozeß-zu-Prozeß-Kommunikation wird nur herausgegeben, wenn die Übertragung einer vollständigen Nachricht bewirkt wurde.
  • Das Konzept der vorliegenden Erfindung kann dazu verwendet werden, das Ausgeben sowohl von Datenpaketen als auch von Bestätigungspaketen durch Verwendung eines Schlangenzeigers eines jeden virtuellen Verbindungsstückes zur Identifizierung des nächsten, ein Nachrichtenverbindungsstück erwartenden, virtuellen Verbindungsstückes in einer Schlange zu steuern. Um ein Datenpaket zu übertragen, zeigt ein Schlangenzeiger für ein virtuelles Verbindungsstück auf eine Adresse. Um jedoch ein Bestätigungspaket zu übertragen, zeige ein Schlangenzeiger auf eine andere Adresse für dieses virtuelle Verbindungsstück. Auf diese Weise gibt es eine einzige Schlange für den ausgebenden Kommunikationskanal mit jeweils virtuellen Verbindungsstücken, die in der Lage sind, zwei Positionen in der Schlange (eine für ein Datenpaket und eine für ein Bestätigungspaket) anzunehmen.
  • Der Mikrocomputer kann eine Vielzahl von Nachrichtenverbindungsstücken haben mit einem Satz virtueller Verbindungsstücke, die jeden einzelnen Ausgabekommunikationskanal zugeordnet sind. Ist ein Mikrocomputer mit einem beispielsweise in der mitanhängigen Anmeldung Nr. (Page White & Farrer Ref. 66592) beschriebenen Leitwegschalter kombiniert, werden alle Nachrichten über den Schalter geleitet und so kann eine einzige Schlange gebildet werden, um alle Nachrichtenverbindungsstücke zu bedienen.
  • Durch Verwendung des Konzeptes von adressierbaren virtuellen Kommunikationsverbindungsstücken bei jedem Mikrocomputer in einem Netzwerk können verschiedene Nachrichten über jedes Hardware-Verbindungsstück des Mikrocomputers gemultiplext werden und es kann ein Mikrocomputer mit einer Vorrichtung, die nicht direkt daran angeschlossen ist, nur unter der Voraussetzung kommunizieren, daß die Vorrichtung ähnlich adressierbare virtuelle Kommunikationskanäle hat. Das bedeutet, daß es notwendig ist, die genauen Details einer Netzwerkarchitektur zu kennen, wenn ein Programm in mehrere Prozesse, die auf verschiedenen Mikrocomputern in dem Netzwerk laufen sollen, aufgeteilt werden soll. Dies macht die Aufgabe des Programmierers wesentlich leichter.
  • Vorzugsweise ist in einem Netzwerk von miteinander verbundenen Mikrocomputern jedes virtuelle Verbindungsstück auf einem Mikrocomputer gepaart mit einem virtuellen Verbindungsstück auf einem anderen Mikrocomputer, die direkt mit dem einen Mikrocomputer oder damit über einen Leitwegschalter oder ein Netzwerk von Leitwegschaltern des Typs verbunden ist, der in den mit anhängigen Patentanmeldungen Nrn. (Page White & Farrer Refs: 66592 and 66589) beschrieben ist. Die virtuellen Verbindungsstücke sind in dem Sinne gepaart, daß jedes virtuelle Verbindungsstück Information zur Identifizierung des gepaarten empfangenden virtuellen Verbindungsstückes bei dem entfernten Mikrocomputer beinhaltet, so daß auf jenem virtuellen Verbindungsstück gesendete Nachrichtenpakete immer zu dem paarweise angeordneten empfangenden virtuellen Verbindungsstück geleitet werden und über das empfangende virtuelle Verbindungsstück herausgegebene Bestätigungen zurück zum virtuellen Verbindungsstück geleitet werden, von dem das Nachrichtenpaket ursprünglich gesendet wurde. Auf diese Weise werden dauerhafte Kanäle errichtet in Richtung des Programmierers durch Laden der korrekten Information in die virtuellen Verbindungsstücke, wenn ein Netzwerk zum Betrieb eines gegebenen Programmes errichtet wird. Von nun an kann jedes beliebige Netzwerk verwendet werdend um ein gegebenes Programm auszuführen und umgekehrt ein beliebiges Programm kann in einem bestimmten Netzwerk laufen. Ebenso besteht keine Notwendigkeit, den Sender einer Nachricht in der Nachricht selbst zu identifizieren, so lange das Paar virtueller Verbindungsstücke wirksam einander zugeordnet ist.
  • Eine besondere Ausgestaltung, bei der die Datenpakete 6 Bit lang sind, ist in der mitanhängigen Patentanmeldung Nr. (Page White & Farrer Ref: 66592) beschrieben und wird hiermit miteinbezogen.
  • Die vorliegende Erfindung wird nachfolgend anhand der in den Figuren der Zeichnung dargestellten Ausführungsbeispiele näher erläutert. Es zeigt:
  • Figur 1 das Blockdiagramm einer Computervorrichtung gemäß einer Ausgestaltung der Erfindung;
  • Figur 2 die Struktur eines Datenpakets;
  • Figur 3 das Blockdiagramm einer Computervorrichtung, bei dem die Nachrichtenverbindungsstücke im Detail dargestellt sind;
  • Figur 4 das Blockdiagramm der Struktur einer Kommunikation- steuerschaltung;
  • Figur 5 die Struktur eines virtuellen Verbindungsstückkontrollblocks;
  • Figur 6 und 7 diesbezüglich Blockdiagramme von Eingangs- und Ausgangsspeicherdirektzugriffsvorrichtungen;
  • Figuren 8 bis 14 den Zustand virtueller Verbindungsstücke, wenn Eingabe und Ausgabe einer Nachricht bewirkt sind; und
  • Figur 15 das Diagramm eines Netzwerkes.
  • Figur 1 zeigt die Hauptkomponenten eines Mikrocomputers, der auf einem einzigen Chip realisiert ist. Der Mikrocomputer umfaßt einen Prozessor 2, einen Speicher 4 einschließlich eines Schreib-Lese-Speichers (RAM), welcher mit dem Prozessor 2 und der Kommunikationssteuerschaltung 6 über einen Datenbus 8 verbunden ist. Die Kommunikatonssteuerschaltung wird im folgenden auch als Kommunikationscontroller bezeichnet. Die Vorrichtung enthält auch ein Nachrichtenverbindungsstück 10 mit Eingabe- und Ausgabeanschlüssen, die allgemein mit 12 bezeichnet sind. Jeder Anschluß ist einem unidirektionalen seriellen Kommunikationskanal zugeordnet. Der Prozessor 2 kann mit der Kommunikationssteuerschaltung 6 über ein bidirektionales Paar von unidirektionalen Kanälen 12, 14 kommunizieren. Das Nachrichtenverbindungsstück 10 sendet und empfängt Nachrichten in Form von Nachrichtenpaketen, beispielsweise seriellen Bitpaketen, an den und vom dem Mikrocomputer an eine daran angeschlossene, separate Vorrichtung. Jeder Mikrocomputer kann mehreren beispielsweise vier, Nachrichtenverbindungsstücke haben.
  • Die Nachrichtenverbindungsstücke werden dazu verwendet, um den Mikrocomputer an andere Vorrichtungen in einem Netzwerk anzuschließen. Diese Vorrichtungen können beispielsweise ähnliche Mikrocomputer oder Leitwegschalter des Typs sein, wie er in den mitanhängigen Patentanmeldungen Nr. (Page White & Farrer Refs: 64318 und 64475) beschrieben ist. Figur 15 zeigt ein derartiges Netzwerk, wobei Mikrocomputer durch N und Leitwegschalter durch RS gekennzeichnet sind. Der Betrieb des Nachrichtenverbindungsstücks 10 wird durch die Kommunikationssteuerschaltung 6 gesteuert, um die Nachrichtenübertragung zwischen Prozessen zu multiplexen, die von Prozessoren auf separaten Mikrocomputern in dem Netzwerk ausgeführt werden. Jede zu übertragende Nachricht von einem Prozeß, der von einem Mikrocomputer in dem Netzwerk ausgeführt wird, an einem Prozeß, der von einem separaten Mikrocomputer in dem Netzwerk ausgeführt wird, wird durch die Kommunikationssteuerschaltung 6 desjenigen Mikrocomputers, dessen Prozessor den Sendeprozeß ausführt, in eine Vielzahl von Datenpaketen aufgeteilt, die jeweils nicht mehr als eine festgelegte maximale Datenmenge beinhalten. Diese Datenpakete beinhalten eine zusätzliche Information, welche das Bestimmungsziel des Pakets identifiziert. Diese Information wird hierin als Kopfzeilenanteil bezeichnet, der passenderweise am Anfang des Pakets angeordnet ist. Die Struktur eines Datenpakets ist in Figur 2 gezeigt.
  • Der Schreib-Lese-Speicher des Speichers 4 des Mikrocomputers umfaßt eine Vielzahl von adressierbaren virtuellen Kommunikationskanälen, die nachfolgend detailiert beschrieben werden. Jeder virtuelle Kanal bei einem Mikrocomputer in einem Netzwerk erlaubt das Übertragen einer Nachricht von einem durch diesen Mikrocomputer ausgeführten Prozeß zu einem separten Mikrocomputer in dem Netzwerk und ist gepaart mit einem weiteren virtuellen Kanal, der die Kommunikation in der umgekehrten Richtung zwischen durch diese Mikrocomputer entsprechend ausgeführten Prozessen erlaubt. Jedes bidirektionale Paar von unidirektionalen virtuellen Kanälen wird hierbei als virtuelles Verbindungsstück bezeichnet.
  • Der hierbei verwendete Ausdruck Mikrocomputer bezieht sich auf kleinformatige Computer, die im allgemeinen auf einzelnen integrierten Schaltungsvorrichtungen basieren, wird aber nicht ausschließlich dazu verwendet, um solche Vorrichtungen zu bezeichnen. Wie bekannt ist, kann der Prozessor eines Mikrocomputers dazu verwendet werden, um eine Vielzahl von gleichzeitig ablaufenden Prozessen auszuführen, von denen jeder eine Reihe von Befehlen umfaßt. Solche Prozesse sind in der Lage, Nachrichten zu senden und zu empfangen. Jedes virtuelle Verbindungsstück ist in dem Speicher 4 durch einen Kontrollblock, der eine Vielzahl von Speicherplätzen aufweist, repräsentiert. Jeder Block speichern Information über den laufenden Fortgang der Nachrichtenübertragung in beide Richtungen. Diese Information enthält bevorzugt mindestens den Prozeßbeschreibungssatz zum Identifizieren von Nachrichten sendenden und/oder empfangenden Prozessen. Eine Vielzahl von virtuellen Verbindungsstücken heilen sich das Nachrichtenverbindungsstück 10, indem sie eine Schlage virtueller Nachrichtenstücke bilden, die auf die Nutzung des Nachrichtenverbindungsstück warten. Dies erfolgt durch Laden eines Zeigers zum nächsten virtuellen Verbindungsstück in jedes virtuelle Verbindungsstück, wobei eine verbundene Liste gebildet wird. Jedes virtuelle Verbindungsstück ist in der Lage, die Übertragung von sowohl Datenpaketen als auch Bestätigungspaketen zu bewirken. So kann zu jeder Zeit entweder ein Datenpaket oder ein Bestätigungspaket oder beide über das selbe virtuelle Verbindungsstück gesendet werden. In dem Fall, daß sowohl das Bestätigungspaket als auch das Datenpaket durch das selbe virtuelle Verbindungsstück gesendet werden, nimmt dieses virtuelle Verbindungsstück zwei Positionen auf der verbundenen Liste an, welche die auf die Nutzung des Nachrichtenverbindungsstücks 10 wartende Schlange bildet.
  • Jeder virtuelle Verbindungsstückkontrollblock enthält entweder zusätzliche Information in Verbindung mit jedem auf diesem virtuellen Verbindungsstück gesendeten Paket oder zeigt an, wo es in dem Speicher des Mikrocomputers gefunden werden kann. Verknüpft mit jedem virtuellen Verbindungsstück ist ein Speicherplatz, der dazu verwendet wird, Pakete zu speichern, die bei dem virtuellen Verbindungsstück in dem Falle ankommen, daß kein Prozeß den Empfang dieses Pakets erwartet. Der virtuelle Verbindungsstückkontrollblock zeigt an, wo dieser Platz ist. Dieser Platz wird nachfolgend als virtueller Verbindungsstückpuffer bezeichnet.
  • Es folgt eine detaillierte Beschreibung der Verwendung dieser virtuellen Verbindungsstücke zur Durchführung der Nachrichtenübertragung zwischen Mikrocomputern in einem Netzwerk. Es ist aus der nachfolgenden Diskussion leicht zu ersehen, daß diese Mikrocomputer nicht durch irgendwelche Mittel direkt miteinander verbunden sein müssen, jedoch über Leitwegvorrichtungen in dem Netzwerk verbunden sein können.
  • Reaktion des Kommunikationscontrollers auf eine Ein-/Ausgabeanforderung durch den Prozessor
  • Wenn ein durch den Prozessor 2 eines Mikrocomputers ausgeführter Prozeß P1 mit einem Prozeß P2 bei einem anderen Mikrocomputer zu kommunizieren wünscht, sendet der Prozessor 2 des ersten Mikrocomputers eine Anforderung an den Kommunikationscontroller 6 des selben Mikrocomputers. Jede Anforderung kann eine Anforderung zum Senden einer Nachricht oder eine Anforderung zum Empfangen einer Nachricht sein. Jede Anforderung ist begleitet durch eine Kennzeichnung des virtueilen Verbindungsstücks VLi, auf dem die Nachricht gesendet oder von dem es empfangen wird, die Länge der Nachricht in Bytes und den Prozeßbeschreibungssatz zur Identifizierung des anfordernden Prozesses. Jede Anforderung, eine Nachricht zu senden, wird auch von einer Adresse (Datenzeiger) des Platzes im Speicher 4 des Mikrocomputers, bei der die zu sendenden Daten beginnen, begleitet. Jede Anforderung, eine Nachricht zu empfangen, ist auch begleitet von einer Adresse des Speicherplatzes, bei dem die empfangene Nachricht gespeichert ist. Für die weiteren Erläuterungen wird angenommen, daß ein auf einem Mikrocomputer ausgeführter Prozeß P1 Daten an einen durch einen entfernten Mikrocomputer ausgeführten Prozeß P2 zu übertragen wünscht.
  • Ausgabeanforderungen
  • Wenn der Prozessor 2 eines Mikrocomputers eine Anforderung an den Kommunikationscontroller 6 des Mikrocomputers abgibt, um eine Nachricht auf einem speziellen virtuellen Verbindungsstück VLi zu senden, speichert der Kommunikationscontroller 6 den Beschreibungssatz des sendenden Prozesses P1 im Kontrollblock des ausgewählten virtuellen Verbindungsstücks VLi und speichert auch die Länge der Nachricht und den Datenzeiger im Speicher des Mikrocomputers. Er setzt den Kontrollblock dieses virtuellen Verbindungsstücks VLi an das Ende der Schlange virtueller Verbindungsstücke, die darauf warten, ein Nachrichtenverbindungsstück 10 in einer nachfolgend beschriebenen Weise zu benutzen. Wenn das virtuelle Verbindungsstück am Anfang der Schlange für die Nutzung eines Nachrichtenverbindungsstücks steht und das Nachrichtenverbindungsstück verfügbar wird, entfernt der Kommunikationscontroller 6 das virtuelle Verbindungsstück VLi aus der Schlange, liest die Länge der Nachricht und den Zeiger zu den von dem Speicher des Mikrocomputers zu sendenden Daten und veranlaßt, daß ein Datenpaket, welches einen von dem Kontrollblock des virtuellen Verbindungsstücks VLi bereitgestellten Kopfzeilenteil enthält zur Identifizierung des virtuellen Verbindungsstücks VLj bei dem entfernten Mikrocomputer, an den die Daten gesendet werden sollen, über den Kommunikationscontroller gesendet wird. Wenn die zu sendende Datenmenge kleiner oder gleich der maximalen Datenmenge ist, die in einem Paket enthalten sein kann, wird die gesamte Nachricht in einem Paket gesendet. Ist die zu sendende Datenmenge größer als die maximale Datenmenge, die einem Paket enthalten sein kann, wird der erste Teil der Nachricht in einem die maximale Datenmenge beinhaltenden Paket gesendet. Der Kommunikationscontroller 6 modifiziert die Nachrichtenlänge und den Zeiger zu den zu sendenden Daten, um der Tatsache Rechnung zu tragen, daß ein Teil oder die gesamte Nachricht gesendet wurde, und speichert diese dann zurück in den Speicher des Mikrocomputers.
  • Eingabeanforderungen
  • Wenn der durch den Prozessor 2 des entfernten Mikrocomputers ausgeführte Prozeß P2 eine Anforderung an den Kommunikationscontroller 6 des Mikrocomputers für den Empfang einer Nachricht auf einem speziellen virtuellen Verbindungsstück VLj abgibt, überprüft der Kommunikationscontroller 6, ob oder ob nicht der dem eingehenden virtuellen Kanal dieses Verbindungsstücks zugeordnete Puffer leer ist.
  • Wenn der dem virtuellen Kanal zugeordnete Puffer leer ist, speichert der Kommunikationscontroller 6 das Kennzeichen des anfordernden Prozesses P2 in dem Kontrollblock des ausgewählten virtuellen Verbindungsstücks VLj und speichert die Nachrichtenlänge und die Adresse, unter der die Daten in den Speicher des Mikrocomputers eingeschrieben worden sind.
  • Wenn der dem virtuellen Kanal zugeordnete Puffer nicht leer ist, weist der Kommunikationscontroller 6 den Prozessor 2 des Mikrocomputers an, die in dem Puffer gespeicherten Daten in den dem eingebenden Prozeß P2 zugeordneten und in der Anforderung durch die Adresse gekennzeichneten Datenspeicherbereich zu kopieren. Wenn ein Prozeß eine Anforderung zum Empfang einer Nachricht auf dem virtuellen Verbindungsstück abgibt nachdem damit begonnen worden ist, ein Paket in den Puffer zu schreiben, vervollständigt der Kommunikationscontroller das Einschreiben der Daten in den Puffer und verlangt von dem Prozessor, Daten von dem Puffer in den Arbeitsraum des eingebenden Prozesses zu kopieren. Der Kommunikationscontroller reiht dann das virtuelle Verbindungsstück VLi in einer Schlange für ein Nachrichtenverbindungsstück ein, so daß ein Bestätigungspaket auf dem ausgehenden virtuellen Kanal des Verbindungsstückes VLj gesendet wird, mit einem von dem virtuellen Verbindungsstück bereitgestellten Kopfzeilenteil, der das virtuelle Verbindungsstück VLi kennzeichnet, von dem das Paket gesendet wurde. Ist die Auszählung der Zahl von zu empfangenden Bytes, die dem Kommunikationscontroller durch den Prozeß P2 bereitgestellt wurden, kleiner oder gleich der maximalen Datenmenge, die in einem Paket enthalten sein kann, so müssen die im Buffer enthaltenen Daten die gesamte Nachricht sein. Sobald die Nachricht vollständig empfangen wurde, sendet der Kommunikationscontroller den Beschreibungssatz des eingebenden Prozesses P2 an den Prozessor zurück, so daß er folglich ausgeführt werden kann. Ist die Nachricht nicht vollständig empfangen worden, speichert der Kommunikationscontroller den Beschreibungssatz des eingebenden Prozesses P2 im Kontrollblock des ausgewählten virtuellen Verbindungsstücks und speichert im Speicher des Mikrocomputers die verbleibende Nachrichtenlänge und die Adresse der nächsten Position, an der Daten eingeschrieben werden sollen.
  • Antwort des Kommunikationscontrollers auf die Ankunft eines Pakets
  • Wenn ein Paket auf einem Nachrichtenverbindungsstück 10 ankommt, trennt der Kommunikationscontroller 6 den das virtuelle Verbindungsstück kennzeichnenden Kopfzeilenteil von einer zusätzlich in dem Paket enthaltenen Information.
  • Datenpaket
  • Wenn das Paket auch Daten enthält, inspiziert der Kommunikationscontroller den Kontrollblock des identifizierten virtueilen Verbindungsstückes VLj, ob ein Prozeßbeschreibungssatz eines Prozesses P2, der auf den Empfang einer Nachricht auf diesem virtuellen Verbindungsstück wartet, gespeichert ist.
  • Wenn es einen Prozeß P2 gibt, der auf den Empfang einer Nachricht wartet, liest der Kommunikationscontroller die gespeicherte Adresse des Datenspeicherbereichs des Prozessors P2 und veranlaßt daß die Daten in dem Paket in den Datenbereich jenes Prozesses geschrieben werden, beginnend von dem relevanten Speicherplatz. Der Kommunikationscontroller reiht den Kontrollblock des virtuellen Verbindungsstücks VLj in eine Schlange für ein Nachrichtenverbindungsstück ein, so daß ein Bestätigungspaket auf dem ausgehenden virtuellen Kanal des Verbindungsstücks VLj an das virtuelle Verbindungsstück VLi gesendet wird. Der Kommunikationscontroller liest die gespeicherte Auszählung der Zahl von empfangenen Bytes. Wenn die Auszählung der Zahl von empfangenen Bytes kleiner oder gleich der maximalen Datenmenge ist, die in einem Paket enthalten sein kann, müssen die im Paket enthaltenen Daten die gesamte Nachricht sein. Sobald die Nachricht vollständig empfangen wurde, sendet der Kommunikationscontroller den Beschreibungssatz des eingebenden Prozesses P2, der in dem virtuellen Verbindungsstück VLj gespeichert ist, an den Prozessor, so daß er demzufolge ausgeführt werden kann. Der Kommunikationscontroller speichert auch einen Nullprozessorbeschreibungssatz in dem virtuellen Verbindungsstück VLj anstelle des Beschreibungssatzes des eingebenden Prozesses. Wenn die Nachricht nicht vollständig empfangen worden ist, erniedrigt der Kommunikationscontroller den Wert der Nachrichtenlänge unter Beibehalutng der maximalen Datenmenge, die in einem Paket enthalten sein kann, und erhöht die Adresse des nächsten Speicherplatzes, bei dem Daten in den Speicher des Mikrocomputers von der selben Menge eingeschrieben sind. Der Kommunikationscontroller speichert überarbeitete Länge und Adresse zurück in den Speicher des Mikrocomputers.
  • Gibt es keinen Prozeß, der auf den Empfang einer Nachricht auf dem virtuellen Verbindungsstück VLj wartet, inspiziert der Kommunikationscontroller den Kontrollblock des virtuellen Verbindungsstücks, um den Platz des dem virtuellen Verbindungsstück zugeordneten Puffers zu erhalten. Der Kommunikationscontroller veranlaßt dann das Einschreiben der Daten des ankommenden Pakets in diesen Puffer. Wie bereits beschrieben, vervollständig der Kommunikationscontroller das Einschreiben der Daten in den Puffer, wenn ein Prozeß eine Anforderung zum Empfang einer Nachricht auf dem virtuellen Verbindungsstück abgibt nachdem das Einschreiben eines Pakets in den Puffer begonnen hat, und veranlaßt den Prozessor, die Daten von dem Puffer in den Arbeitsraum des eingebenden Prozesses zu kopieren. Der Kommunikationscontroller reiht den Kontrollblock des virtuellen Verbindungsstücks in eine Schlange für ein Nachrichtenverbindungsstück ein, so daß ein Bestätigungspaket auf dem abgehenden virtuellen Kanal des Verbindungsstücks gesendet wird. Wenn die Auszählung der Zahl von empfangenen Bytes, die dem Kommunikationscontroller durch den Prozessor zur Verfügung gestellt worden sind, kleiner oder gleich der maximalen Datenmenge ist, die in einem Paket enthalten sein kann, so müssen die in dem Paket enthaltenen Daten die gesamte Nachricht sein. Sobald die Nachricht vollständig empfangen worden ist, sendet der Kommunikationscontroller den Beschreibungssatz des eingebenden Prozesses an den Prozessor, so daß er demzufolge ausgeführt werden kann. Wenn die Auszählung der Zahl von empfangenen Bytes, die dem Kommunikationscontroller durch den Prozessor zur Verfügung gestellt worden sind, größer ist als die maximale Datenmenge, die in einem Paket enthalten sein kann, können die Daten in dem Paket nicht die gesamte Nachricht sein. Sobald die Nachricht nicht vollständig empfangen worden ist, speichert der Kommunikationscontroller den Beschreibungssatz des eingebenden Prozesses in den Kontrollblock des ausgewählten Verbindungsstückes und speichert in dem Speicher des Mikrocomputers die Länge der verbleibenden Nachricht und die Adresse in den nächsten Platz, bei dem Daten eingeschrieben werden sollen.
  • Bestätigungspaket
  • Wenn keine Daten in dem ankommenden Paket enthalten sind, behandelt der Kommunikationscontroller das Paket als eine Bestätigung, daß ein vormals von dem Prozeß P1 durch das virtuelle Verbindungsstück VLi gesendetes Datenpaket durch den eingebenden Prozeß P2 empfangen worden ist. Der Kommunikationscontroller liest aus dem Speicher des Mikrocomputers die Auszählung der Zahl von Bytes der Nachricht von dem Prozeß P1, die noch über das ausgewählte virtuelle Verbindungsstück VLi gesendet werden soll.
  • Ist die Auszählung der Zahl von Bytes, die noch gesendet werden soll, nicht gleich Null, reiht der Kommunikationscontroller das virtuelle Verbindungsstück VLi zurück in die Schlange für ein Nachrichtenverbindungsstück ein, so daß ein weiteres Datenpaket dieser Nachricht vom Prozeß P1 auf dem ausgehenden virtuellen Kanal des Verbindungsstücks gesendet wird.
  • Wenn die Auszählung der Zahl von Bytes, die noch gesendet werden sollen, gleich Null ist, ist die von dem Prozeß P1 gesendete Nachricht vollständig durch den Prozeß P2 empfangen worden und so liest der Kommunikationscontroller den Beschreibungssatz des sendenden Prozesses P1, der in dem virtueilen Verbindungsstück VLi gespeichert ist, und überprüft, ob die Übertragung des Pakets, das gerade bestätigt worden ist, vollständig ist und sendet den Beschreibungssatz an den Prozessor zurück, so daß dieser Prozeß demzufolge ausgeführt werden kann. Der Kommunikationscontroller speichert auch einen Nullprozeßbeschreibungssatz in dem virtuellen Verbindungsstück VLi. Auf diese Weise kann eine synchronisierte Prozeß-zu-Prozeß-Kommunikation zwischen Prozessoren auf entfernten Computern bewirkt werden.
  • Datenaustausch zwischen dem Prozessor und dem Kommunikationscontroller
  • Damit bei Ausführung eines Prozesses durch den Prozessor 2 auf dem Mikrocomputer das Senden einer Nachricht an einen anderen Mikrocomputer veranlasst werden kann, müssen der Prozessor und der Kommunikationscontroller 6 aufeinander einwirken. Zu diesem Zweck gibt es einen Logikkanal 12 vom Prozessor 2 zum Kommunikationscontroller 6. Damit der Kommunikationscontroller 6 die Vollständigkeit der Nachrichten dem Prozessor 2 signalisieren kann, gibt es auch einen Logikkanal 14 in der Gegenrichtung. Jeder der Logikkanäle 12, 14 umfaßt einen Satz von Signalen. Der Hauptdatenbus des Mikrocomputers wird dazu verwendet, Wortlängenwerte auszutauschen, sobald eine Synchronisierung durch Mittel des Signalkanals erzielt worden ist.
  • Es gibt zwei Arten von Kontrollsignalen: Anforderungen und Antworten. Anforderungen werden selbständig sowohl durch den Prozessor 2 als auch durch den Kommunikationscontroller 6 gesendet. Antworten werden nach Erhalt von Anforderungen und Daten gesendet.
  • Wann auch immer der Prozessor 2 eine Anforderung an den Kommunikationscontroller 6 auf dem Logikkanal sendet, wartet er auf eine Antwort auf dem anderen Kanal 14. Wann auch immer der Kommunikationscontroller 6 eine Anforderung an den Prozessor 2 auf dem Logikkanal 14 sendet, wartet er auf eine Antwort auf dem anderen Kanal 12. Dies gestattet dem Kommunikationscontroller 6, den Datenfluß von dem Prozessor 2 zu regulieren und gestattet auch dem Prozessor 2 den Datenwertefluß vom Kommunikationscontroller 6 zu regulieren.
  • Solange der Prozessor 2 und der Kommunikationscontroller 6 unabhängig arbeiten und Tätigkeiten ausführen, die unterschiedliche Zeitlängen beanspruchen, können beide eine Anforderung an den anderen zur gleichen Zeit senden. Demzufolge muß einer von ihnen darauf vorbereitet sein, seine eigene Anforderung abzubrechen und dem anderen zu antworten, andernfalls kommt es zum Stillstand. Bei der bevorzugten Ausführungsform bricht der Prozessor seine Anforderung ab, wenn er eine Anforderung anstelle einer Antwort von dem Kommunikationscontroller empfängt.
  • Wenn ein Prozeß P1, der von einem Mikrocomputer ausgeführt wird, eine Nachricht an einen Prozeß P2 bei einem anderen Mikrocomputer senden möchte, sendet der Prozessor eine Anforderung an den Kommunikationscontroller, deren Inhalt für "Ausgabe" steht. Wenn diese Anforderung durch den Kommunikationscontroller bestätigt wird, sendet der Prozessor das Kennzeichen des virtuellen Verbindungsstücks VLi, das der Prozeß verwenden möchte. Wenn dieses durch den Kommunikationscontroller bestätigt wurde, sendet der Prozessor den Datenzeiger, beispielsweise die Adresse des Basisblocks der zu übertragenden Daten. Wenn das durch den Kommunikationscontroller bestätigt worden ist, sendet der Prozessor die Zahl der Bytes der zu übertragenden Daten, die größer sein muß als Null. Wenn das durch den Kommunikationscontroller bestätigt worden ist, sendet der Prozessor den Beschreibungssatz des sendenden Prozesses. Wenn das durch den Kommunikationscontroller bestätigt worden ist, setzt der Prozessor dann die Ausführung eines anderen Prozesses fort. Es ist anzumerken, daß der Datenzeiger, der die Adresse der Basis des Datenbereichs und die Auszählung der Zahl von Bytes der zu übertragenden Daten enthält, ersetzt werden kann durch einen Zeiger auf den Basisblock der Daten und einen Zeiger auf die Spitze des Datenblocks, oder einen Zeiger zu der Spitze des Datenblocks und eine Auszählung der Zahl von Bytes der zu übertragenden Daten, ohne die gesamte Operation substanziell zu beeinflussen.
  • Wenn eine Nachricht, deren Übersendung der Prozeß P1 anfordert, an einen Prozeß P2 bei einem anderen Mikrocomputer übertragen worden ist und dieser Mikrocomputer den Empfang der Nachricht bestätigt hat, sendet der Kommunikationscontroller des ersten Mikrocomputers eine Anforderung an den Prozessor des ersten Mikrocomputers. Wenn dieser Prozessor die Anforderung bestätigt, sendet der Kommunikationscontroller an den Prozessor den Beschreibungssatz des sendenden Prozesses P1, der von dem Prozessor an den Kommunikationscontroller gesendet worden ist, als der Prozessor die Übersendung der Nachricht angefordert hat.
  • Wenn ein Prozeß P2, der von dem Mikrocomputer ausgeführt wird, eine Nachricht von dem Prozeß P1 auf einem anderen Mikrocomputer zu empfangen wünscht, sendet der Prozessor eine Anforderung an den Kommunikationscontroller, deren Inhalt für "Eingabe" steht. Wenn diese Anforderung durch den Kommunikationscontroller bestätigt wurde, sendet der Prozessor das Kennzeichen des virtuellen Verbindungsstücks VLj, das der Prozeß P2 verwenden möchte. Wenn das durch den Kommunikationscontroller 6 bestätigt wurde, sendet der Prozessor 2 einen Zeiger zu der Basis des Datenbereichs, in welchen die empfangenen Daten geladen werden sollen. Wenn das durch den Kommunikationscontroller 6 bestätigt worden ist, sendet der Prozessor 2 die Zahl der Bytes der zu empfangenden Daten, die größer sein muß als Null. Es ist anzumerken, daß der Zeiger zu der Basis des Datenbereichs und eine Auszählung der Zahl von Bytes zu empfangener Daten ersetzt werden kann durch einen Zeiger zu der Basis des Datenbereichs und einen Zeiger zu der Spitze des Datenbereichs, oder einen Zeiger zu der Spitze des Datenbereichs eine Auszählung der Zahl von Bytes zu empfangener Daten, ohne die gesamte Operation substanziell zu beeinflussen. Wenn die Zahl der Bytes durch den Kommunikationscontroller bestätigt worden ist, sendet der Prozessor den Beschreibungssatz des Prozesses P2.
  • Es gibt nun zwei Möglichkeiten. Wenn der Kommunikationscontroller mit einer Bestätigung antwortet, dann fährt der Prozessor damit fort, einen anderen Prozeß auszuführen. Alternativ kann der Kommunikationscontroller auf den Empfang des Kennzeichens des virtuellen Verbindungsstücks von dem Prozessor mit einem Kontrollwert, der "Datenbewegung" bedeutet, antworten. Der Prozessor 2 bestätigt dies und der Kommunikationscontroller 6 sendet dann einen Zeiger zu der Basis des Blocks der zu bewegenden Daten. Der Prozessor 2 bestätigt dies und der Kommunikationscontroller 6 sendet eine Auszählung der zu bewegenden Datenmenge. Der Prozessor 2 bestätigt dies und kopiert dann die von dem Kommunikationscontroller 6 angeforderte Datenmenge, beginnend mit dem durch den Kommunikationscontroller vorgegebenen Zeiger bis zu dem Datenspeicherbereich, auf dessen Basis durch den bereits an dem Kommunikationscontroller gesendeten Zeiger hingedeutet wird. Der Prozessor fährt dann fort, andere Prozesse auszuführen. Es ist anzumerken, daß der Zeiger zu der Basis der zu bewegenden Daten und Bytes zu bewegender Daten ersetzt werden kann durch einen Zeiger zu der Basis des Datenblocks und einen Zeiger zu der Spitze des Datenblocks, oder einen Zeiger zu der Spitze des Datenblocks und eine Auszählung der Zahl von Bytes zu bewegender Daten, ohne die gesamte Operation substanziell zu beeinflussen.
  • Es ist anzumerken, daß dieses Protokoll dem Kommunikationscontroller die Notwendigkeit erspart, Daten von einem Teil des Mikrocomputerspeichers in einen anderen kopieren zu können, vorausgesetzt, daß der Prozessor in der Lage ist, dies zu tun. Im Falle des in der US-Patentschrift 4,704,678 beschriebenen Mikrocomputers ist der Prozessor in der Lage, sehr effizient zu kopieren.
  • Wenn eine Nachricht, deren Empfang vom Prozessor angefordert worden ist, von einem anderen Mikrocomputer empfangen wurde, sendet der Kommunikationscontroller des ersten Mikrocomputers eine Anforderung an den Prozessor des ersten Mikrocomputers. Wenn dieser Prozessor die Anforderung bestätigt, sendet der Kommunikationscontroller an den Prozessor den Prozeßbeschreibungssatz, der von dem Prozessor an den Kommunikationscontroller gesendet wurde, als der Prozessor den Empfang der Nachricht bestätigt hat.
  • Die Anordnung, bei der der Prozessor eines Mikrocomputers aufhört, den Prozeß auszuführen nachdem dieser Prozeß eine Eingabe oder eine Ausgabe einer Nachricht auf einem Logikkanal angefordert hat, und nur die Ausführung dieses Prozesses fortsetzt nachdem der Kommunikationscontroller den Beschreibungssatz zurückgesendet hat, stellt sicher, daß aus der Sicht jedes Prozesses eine Nachrichtenübertragung vollständig synchronisiert ist, in dem zwei eine Nachricht austauschende Prozesse nur dann fortfahren können, nachdem die Nachricht von einem zu anderen vollständig übertragen worden ist.
  • Aufteilung von Nachrichten willkürlicher Länge in Pakete
  • Verständlicherweise können die Nachrichten, die von einem Prozeß P1 auf einen Mikrocomputer an einen Prozeß P2 auf einem anderen Mikrocomputer gesendet werden, von willkürlicher Länge sein. Der Kommunikationscontroller spaltet jede Nachricht, um deren Übesendung durch den Prozeß des Mikrocomputers er gebeten hat, in eine Vielzahl von Paketen auf und ordnet die Pakete unterschiedlicher Nachrichten auf jedem Nachrichtenverbindungsstück, um all die gleichzeitig übertragenen Nachrichten in Erscheiung treten zu lassen.
  • Damit Pakete, die Teile verschiedener Nachrichten sind, durch den Kommunikationscontroller des Mikrocomputers, der sie empfängt, unterschieden werden können, muß jedes Paket eine zusätzliche Information über den Anteil der Nachricht- den das Datenpaket repräsentiert, enthalten. Da es Prozessen nur erlaubt ist, über vorher zugeteilte virtuelle Kanäle zu kommunizieren, ist es ausreichend für die in dem Paket zusätzlich enthaltene Information, wenn sie empfangen wird, um einen eingebenden virtuellen Kanal des empfangenden Mikrocomputers zu identifizieren. Wenn das Paket übertragen wird, kann es auch Informationen enthalten, um das Paket durch ein Leitwegschalternetzwerk zu leiten, das zum Beispiel aus in der mitanhängigen Patentanmeldung Nr. (Page White & Farrer Ref. 64318) beschriebenen Leitwegschaltern zusammengesetzt ist. Diese Leitweginformation kann in dem Kennzeichen des Eingabekanals des empfangenden Mikrocomputers enthalten sein oder andernfalls durch einen Leitwegschalter abgelegt werden bevor das Paket durch den Mikrocomputer empfangen wird. Die Kombination irgendwelcher Leitweginformation und die Identifikation des virtuellen Eingabekanals VLj des empfangenden Mikrocomputers identifiziert den virtuellen Ausgabekanal VLi des sendenden Mikrocomputers.
  • Das Einbringen von Information über den virtuellen Kanal in die Datenpakete gestattet es einer willkürlichen Anzahl von Kanälen, auf jedem Nachrichtenverbindungsstück gemultiplext zu werden, bis zu der durch die in den Paketen enthaltene Informationsmenge eines virtuellen Kanals festgelegte Grenze. Darüber hinaus kann von Zeitpunkt zu Zeitpunkt die Anzahl der auf jeder Kommunikationseinrichtung gemultiplexten virtuellen Kanäle variieren.
  • Die in den Paketen enthaltene Datenmenge ist auf ein Maximum begrenzt. Jede Nachricht wird durch den Kommunikationscontroller in eine Folge von einem oder mehreren Paketen aufgeteilt. Alle außer dem letzten dieser Pakete enthalten die maximale Datenmenge und das letzte enthält die maximale Datenmenge oder weniger. Der Vorteil dieser Aufteilung von Nachrichten auf Pakete ist, daß im Falle, daß verschiedene DMAs mit Arbeit von einer einzigen Schlange versorgt werden, es möglich ist, die Übertragung von mehr als einem Paket der gleichen Nachricht sicher zu überlappen.
  • Bei einer bevorzugten Ausführungsform sind die Nachrichten eine willkürliche Zahl von Bytes. Pakete enthalten ein oder zwei "Kopfzeilenbytes", die von dem empfangenden Mikrocomputer als die Zahl des virtuellen Eingabekanals interpretiert werden. Die Wahl zwischen einem oder zwei Bytes ist festgelegt durch ein Flag 118 (Figur 7, nachfolgend beschrieben) in dem Kommunikationscontroller. Pakete enthalten eine maximale Zahl von Datenbytes, die bei der bevorzugten Ausführungsform gleich 32 ist. Es ist anzumerken, daß diese Grenze durch den Wert eines Registers in dem Kommunikationscontroller festgesetzt werden kann.
  • So lange kurze Nachrichten (und die letzten Anteile von langen Nachrichten) ein gesamtes Paket nicht zu belegen vermögen und die Leitwegsinformation von willkürlicher Länge sein mag, muß es eine Information geben, wo das Paket endet. Bei der bevorzugten Ausführungsform ist diese Information in dem Niedriglevelprotokoll, das von den Nachrichtenverbindungsstücken verwendet wird, verschlüsselt und wird nachfolgend behandelt. Dieses Protokoll kann von dem Typ sein, der in Bezug auf die Verbindungsstückmodule in dem Leitwegsschalter der anhängigen Patentanmeldung Nr. (Page White & Farrer Ref. 64318) behandelt wird. Es ist verständlich, daß, wenn das von den Nachrichtenverbindungsstücken verwendete Protokoll eine solche Verschlüsselung nicht erlaubt, eine explizite Auszählung der Länge jedes Pakets in der zu den Daten in dem Paket zusätzlichen Information enthalten sein kann.
  • Bei der bevorzugten Ausführungsform hat jedes Paket eine in Figur 2 erläuterte Struktur. Diese Figur ist von links nach rechts zu lesen. Die Kopfzeile hat Bytes für den Leitweg und die Kanalinformation, welche zunächst übertragen werden, gefolgt von den Datenbytes des Pakets, gefolgt von dem verschlüsselten Ende des Paketsignals.
  • Es ist verständlich, daß jedes Paket, das Teil ist einer Nachricht, zumindest ein Datenbyte enthalten muß, jedoch das allgemeine Paketformat zu sendende Nulldatenbytes erlaubt. Nur Leitwegs- und Kanalinformation enthaltende Pakete mit einem Nulldatenabschnitt werden als Bestätigungspakete interpretiert.
  • Prozeß-zu-Prozeß-Kommunikation
  • Der Kommunikationscontroller 6 eines Mikrocomputers sendet das erste Nachrichtenpaket über einen virtuellen Kanal VLi an einen anderen Mikrocomputer nachdem er die Bestätigung für die zu sendende Nachricht von dem Prozeß P1, der durch den Prozessor 2 des ersten Mikrocomputers ausgeführt wird, erhalten hat, ohne Rücksicht darauf, ob irgendein Prozeß auf dem zweiten Mikrocomputer gerade eine Eingabe auf dem zugeordneten virtuellen Eingabekanal VLj ausgeführt hat. Wenn der zweite Mikrocomputer das Paket erhält, identifiziert er den virtuellen Kanal VLj, auf dem das Paket gesendet worden ist, nach der in dem Paket enthaltenen zusätzlichen Information. Wenn ein Prozeß P2 auf dem zweiten Mikrocomputer einen Eingabebefehl auf jenem virtuellen Kanal VLj ausgeführt hat, werden die in dem Paket enthaltenen Daten in den Datenraum des eingebenden Prozesses P2 gespeichert. Wenn noch kein Prozeß eine Eingabe auf jenem virtuellen Kanal ausgeführt hat, werden die in dem Paket gespeicherten Daten in einem dem virtuellen Kanal zugeordneten Puffer gespeichert. Wenn ein Prozeß P2 auf dem zweiten Mikrocomputer demzufolge eine Eingabe auf jenem virtuellen Kanal VLi durchgeführt hat, werden die in den dem Kanal VLj zugeordneten Puffer enthaltenen Daten in den Datenraum des Prozesses P2 kopiert. Wie oben beschrieben, stellt das Protokoll zwischen dem Kommunikationscontroller und dem Prozessor des Mikrocomputers sicher, daß dieses Kopieren durch den Prozessor vorgenommen wird.
  • Der dem virtuellen Eigabekanal eines Mikrocomputers zugeordnete Puffer ist groß genug, um ein ganzes Datenpaket zu beinhalten, so daß keine Daten verloren gehen, wenn ein Paket ankommt, bevor ein Prozeß eine Eingabe auf jenem Kanal durchgeführt hat. Bei der bevorzugten Ausführungsform ist der Puffer ein Bereich des Speichers des Mikrocomputers, der zum Zwecke des Pufferns von Datenpaketen gegebenenfalls durch einen Compiler zugeordnet wird. Die Grenze der Datenmenge, die irgendein Paket beinhaltet, gibt die zum Determinieren benötigte maximale Größe des Puffers frei. Ein Puffer mit kleinerer Größe als der maximalen kann verwendet werden, wenn ein virtueller Kanal nur für Nachrichten bekannter Größe verwendet werden soll, welche kleiner als die maximale Datenmenge in einem Paket ist.
  • Damit die in einem Puffer enthaltenen Daten nicht überschrieben werden, sendet der Kommunikationscontroller eines Mikrocomputers, der ein Paket einer Nachricht auf einem virtuellen Kanal VLi an einen anderen Mikrocomputer gesendet hat, kein anderes Paket auf jenem Kanal VLi bis er eine Bestätigung erhalten hat, daß das erste Paket in dem Datenspeicherraum eines Prozesses auf dem zweiten Mikrocomputer gespeichert worden ist. Die Bestätigung ist ein durch den Kommunikationscontroller des zweiten Mikrocomputers über einen virtueilen Kanal VLj an den ersten Mikrocomputer gesendetes Paket. Dieser zweite virtuelle Kanal VLj ist dem ersten Logikkanal VLi durch den Kommunikationscontroller beider Mikrocomputer zugeordnet. Auf diese Weise sind virtuelle Kanäle zwischen Mikrocomputern immer gepaart, so daß Bestätigungen als Antwort auf empfangene Pakete durch einen Prozeß gesendet werden können.
  • Jeder virtuelle Kanal eines zugeordneten Paares virtueller Kanäle zwischen zwei Mikrocomputern kann sowohl Datenpakete als auch Bestätigungspakete tragen, vorausgesetzt, daß die zwei Arten von Paketen durch die Kommunikationscontroller der beiden Mikrocomputer unterschieden werden können. Bei der bevorzugten Ausführungsform enthalten die Bestätigungspakete nur Leitweg- und Logikkanalinformation, jedoch keine Daten. Der Kommunikationscontroller kann solche Pakete deshalb unterscheiden, weil das Ende des Paketsignals empfangen wird ohne, daß irgendwelche Daten empfangen wurden.
  • Wenn das erste Paket einer Nachricht auf einem virtuellen Kanal VLj bei einem Mikrocomputer angekommen ist und ein Prozeß P2 auf jenem Mikrocomputer eine Eingabe auf jenem Kanal durchgeführt hat, wird ein Bestätigungspaket an den Mikrocomputer zurückgesendet, der die Pakete durch den Kommunikationscontroller desjenigen Mikrocomputers, der das Paket empfangen hat, gesendet hat. Wenn der Prozeß einen Eingabebefehl auf dem virtuellen Kanal ausführt bevor irgendein Paket auf jenem virtuellen Kanal angekommen ist, wird das Bestätigungspaket gesendet, wenn ein Paket auf jenem virtuellen Kanal ankommt. Wenn das Paket ankommt, bevor irgendein Prozeß einen Eingabebefehl auf dem virtuellen Kanal ausgeführt hat, wird ein Bestätigungspaket gesendet sobald ein Prozeß eine Eingabe auf jenem virtuellen Kanal durchführt.
  • Struktur eines virtuellen Verbindungsstückkontrollblocks
  • Ein Beispiel eines virtuellen Verbindungsstückkontrollblocks, der in einem 32-Bit-Mikrocomputer verwendet werden kann, ist in Figur 5 gezeigt. Es handelt sich um einen Block von acht 32-Bitwörtern, der bei einem exakten Vielfachen von acht Wörtern bei einem Basisplatz des Speichers 4 beginnt. Adressen sind durch Verwendung einer Null als Basis des Speichers gegeben. Der Block kann in verbundene Listen unter Verwendung der zwei Schlangenzeiger (8.1) und (8.2) eingereiht werden.
  • Der Kanalkopfzeilenzeiger (8.3) ist ein Zeiger zur Kopfzeileninformation, die in jedem auf diesem virtuellen Verbindungsstück gesendeten Paket enthalten sein sollte. Die Ausgabedatenmenge (8.4) ist die Auszählung der Zahl von Datenbytes, die zur Versendung von den virtuellen Verbindungsstücken verbleiben. Der ausgebende Prozeßbeschreibungssatz (8.5) enthält den Beschreibungssatz des Prozesses, der im Augenblick eine Nachricht auf dem virtuellen Verbindungsstück sendet, oder ansonsten den speziellen Nullprozeßwert Not- Process.p, wenn es im Augenblick keinen solchen Prozeß gibt. Der eingebende Prozeßbeschreibungssatz (8.6) ist der Beschreibungssatz des im Augenblick eine Nachricht auf dem kritischen Verbindungsstück empfangenden Prozesses oder ansonsten der spezielle Nullprozeßwert, wenn es keinen solchen Prozeß gibt. Der eingebende Prozeßzählwert (8.7) ist die Auszählung der Zahl von Datenbytes, die für den Empfang auf dem virtuellen Verbindungsstück verbleiben. Der Kanalpufferzeiger (8.8) ist ein Zeiger zu dem Puffer zur Aufnahme eines Pakets, das ankommt, wenn es keinen laufenden Eingabeprozeß gibt.
  • Figur 3 ist ein Blockdiagramm, das die Struktur eines Nachrichtenverbindungsstückes detaillierter zeigt. Die gezeigten zwei Nachrichtenverbindungsstücke 10a, 10b enthalten jeweils eine Kommunikationseinrichtung 20 in Kommunikation mit Eingabe- und Ausgabedirektspeicherzugreifern (DMAs) 22, 24. Die DMAs 22, 24 kommunizieren auch mit dem Kommunikationscontroller wie nachfolgend beschrieben.
  • Kommunikationscontroller
  • Wie in Figur 4 im Detail gezeigt ist, enthält der Kommunikationscontroller eine arithmetische Logikeinheit (ALU) 30 und eine Vielzahl von an einen X-Bus 32, einen Y-Bus 34 und den bidirektionalen Datenbus 8 angeschlossene Datenregister. Einige dieser Register sind auch an einen Z-Bus 70 angeschlossen. Der Betrieb der Register und ihrer Verbindungen mit den Bussen wird durch eine Vielzahl von Schaltern gesteuert, die ihrerseits durch Signale gesteuert werden, die von einen in einem Mikrocode-ROM 36 enthaltenen Mikrobefehlsprogramm abgeleitet sind. Die Kommunikation zwischen dem Kommunikationscontroller 6 und dem Speicher 4 wird über ein von einem Speicheradressregister 38 zu einem Speicherinterface 42, zudem auch der Datenbus 8 führt, führenden unidirektionalen Adresspfad 40 bewirkt. Der Datenbus 8 wird auch für die Kommunikation von Werten zwischen Registern in dem Prozessor 2 (Figur 1) und Registern in dem Kommunikationscontroller 6 verwendet. Die Register des Kommunikationscontrollers sind wie folgt:
  • Speicheradresse 38 Ein Register, das die Adresse des benötigten Speicherplatzes beinhaltet.
  • Daten-Aus 44 Ein Register zum Bereitstellen von Daten an den Speicher oder den Prozessor auf den Datenbus.
  • Kanalkopfzeilenbasis 46 Ein Register zum Halten des niedrigsten zu erwartenden Kopfzeilenwertes. Dieser Wert wird von dem Wert der ankommenden Kopf zeile als teil des Dekodierprozesses subtrahiert.
  • Prozeßbeschreibungssatz 48 Ein Register zum Halten des Beschreibungssatzes des laufenden Referenzprozesses.
  • Datenauszählung 50 Ein Register zum Halten der Länge einer zu sendenden oder zu empfangenden Nachricht.
  • Datenzeiger 52 Ein Register zum Halten eines Zeigers zu dem Platz im Speicher, von dem aus Daten übertragen oder in den Daten eingeschrieben werden sollen.
  • VLCB-Zeiger 54 Ein Register, das einen Zeiger zu dem laufenden virtuellen Referenzverbindungsstückcontrollblock hält.
  • Zeiger 56 Ein temporäres Register zur Verwendung für die Bildung von Zeigerwerten.
  • Verbindungsstückzahl 58 Ein Register, das die Zahl des laufenden Referenzverbindungsstücks hält. Der Wert in diesem Register steuert, welche Register zu den Buscontrollschaltern (allgemein mit 53 bezeichnet) gesetzt sind und gelöscht und welches Signal an die Verbindungsstücke durch die Ausgabe von dem Mikrocode ROM 36 beeinflußt sind und welche Signale von den Verbindungsstücken durch einen Conditionsmultiplexer 57 in das Mikrocodebefehlsregister 60 gemultiplext werden.
  • MIR 60 Ein Register, dessen Wert das Mikrobefehlswort in dem Mikrocode ROM auswählt.
  • Wenn der virtuelle Verbindungsstückcontrollblockzeiger VLCBP als Basis verwendet wird, von der verschiedene Posten in dem Block adressiert werden können, ist es notwendig, Offsetwerte von dem durch den virtuellen Verbindungsstückcontrollblockzeiger angezeigten Speicherplatz zu berechnen. Eine Konstantenbox 62 ist an den Y-Bus 34 angeschlossen, um die Plazierung von konstanten Werten auf diesem Bus unter Steuerung durch das Mikrocode-ROM 36 zu gestatten. Dies kann durch das Zeigen auf Offsetplätze in einem virtuellen Verbindungsstückcontrollblock genutzt werden. Die Konstantenbox 62 gestattet auch, daß Maskenwerte in dem Y-Bus plaziert werden, so daß Bitfelder durch Mittel der ALU 30 ausgewählt werden können und in den Kommunikationscontrollerregistern in Worten gehaltene Bits gesetzt oder gelöscht werden können. Die Konstantenbox gestattet auch die Plazierung der Zahl irgendeines physikalischen (Hardware-) Verbindungsstückes in das Verbindungsstücknummerregister 58 unter der Steuerung des Mikrocode-ROMS 36.
  • DMAs
  • Wie in Figur 3 gezeigt ist, enthält jedes Nachrichtenverbindungsstück auch ein Paar von DMAs 22, 24. Einige Register davon sind an die X-, Y- und Z-Busse 32, 34, 70 des Kommunikationscontrollers angeschlossen, wie in Figur 4 gezeigt ist, die zum Zwecke der Klarheit nur ein Verbindungsstück zeigt umgeben von einer gebrochenen Linie und einer gekennzeichneten DMA. Die gezeigten Register sind die folgenden:
  • Eingabezeiger 72 Ein Register, das den Zeiger zum nächsten Byte, das durch die Eingabe-DMA 22 eingeschrieben werden soll, hält.
  • Kopfzeilenpuffer 74 Ein Register, in das die Kopfzeile eines ankommenden Pakets durch die Eingabe-DMA 22 gesetzt wird. Nachdem die Kopfzeile dekodiert ist, hält es einen Zeiger zu dem Kontrollblock des virtuellen Verbindungsstücks.
  • Ausgabezählwert 76 Ein Register zum Halten der Länge einer Reihe von Bytes, die durch die Ausgabe-DMA 24 ausgegeben werden sollen.
  • Ausgabezeiger 78 Ein Register zum Halten eines Zeigers zum Beginn einer Reihe von Bytes, die durch die Ausgabe-DMA ausgegeben werden sollen.
  • Schlangenanfangszeiger 80 Ein Zeiger zu dem Controllblock des ersten virtuellen Verbindungsstückes, das aufgereiht ist für die Benutzung der Ausgabe-DMA. Wenn keine virtuellen Verbindungsstücke aufgereiht sind für den Gebrauch der Ausgabe-DMA, so enthält dieses einen speziellen Wert.
  • Schlangenendezeiger 82 Ein Zeiger zu dem Controllblock des letzten virtuellen Verbindungsstückes, das in der Reihe für die Nutzung der Ausgabe-DMA steht.
  • Die Struktur der Eingabe- und Ausgabe-DMAs ist ausführlicher in dem Blockdiagrammformular der Figuren 6 und 7 gezeigt.
  • Interaktion des Kommunikationscontrollers und der DMAs
  • Der Kommunikationscontroller 6 steuert eine Vielzahl dieser DMAs. Die Eingabe-DMA 22a nimmt Daten von einer Kommunikationseinrichtung 20a entgegen, die bei der bevorzugten Ausführungsform ein Datenbyte zu einem Zeitpunkt bereitstellt, und schreibt es in den Speicher 4 des Mikrocomputers. Eine Ausgabe-DMA 24b liest Datenbytes aus dem Speicher 4 des Mikrocomputers und sendet diese an eine Kommunikationsvorrichtung 20b, welche bei der bevorzugten Ausgestaltung zu einem Zeitpunkt ein Datenbyte zur Übertragung an einen anderen Mikrocomputer annimmt. Jede Kommunikationsvorrichtung 20 ist mit einer Eingabe-DMA 22a und einer Ausgabe-DMA 24b verbunden.
  • Ausgabe-DMA
  • Gemäß Figur 6 enthält jede Ausgabe-DMA vier in zwei Paaren angeordnete Register, ein Datenzeigerregister 90 und ein Datenauszählungsregister 92, sowie ein Zeigerregister 94 und ein Auszählungsregister 96. Das erste Paar 90, 92 ist an den Z-Bus 70 des Kommunikationscontrollers, wie in Figur 4 gezeigt, angeschlossen. Sie werden durch den Kommunikationscontroller mit dem Zeiger zu dem Speicherplatz des Beginns einer Reihe von Bytes, die gesendet werden sollen (Register 90), und einer Auszählung der Länge in Bytes der Sequenz (Register 92) geladen. Die Inhalte des ersten Paares von Registern 90, 92 können in das zweite Paar von Registern 94, 96 kopiert werden, welches die Datenübertragung von dem Speicher 4 zu der Kommunikationsvorrichtung 20 steuert. Das Zeigerregister 94 wird dazu verwendet, ein Speicherinterface 100 mit der Adresse des nächsten zu lesenden Datenbytes zu versorgen, und wird inkrementiert, nachdem das Byte gelesen worden ist. Das Auszählungsregister 96 hält die Zahl der noch zu sendenden Bytes und wird jedesmals, wenn ein Datenbyte gesendet wird, dekrementiert. Es erzeugt ein Signal an die DMA-Steuerschaltung 102, wenn diese Auszählung gleich Null ist.
  • Um die Übersendung eines Pakets durch eine Ausgabe-DMA zu bewirken, lädt der Kommunikationscontroller 6 den Zeiger in das erste Byte der Paketkopfzeile und die Auszählung der Länge der Kopfzeile in das erste Paar von Registern 90, 92. Der Kommunikationscontroller 6 signalisiert dann der Ausgabe- DMA über die DMA-Steuerschaltung 102, die Inhalte des ersten Paares von Registern 90, 92, die gerade geladen worden sind, in das zweite Paar 94, 96 zu kopieren. Der Kommunikationscontroller lädt dann den Zeiger zu dem ersten Datenbyte und die Auszählung der Datenlänge in das erste Paar von Registern 90, 92 der Vorrichtung. Der Kommunikationscontroller signalisiert dann der Ausgabe-DMA, das Paket über die Kommunikationsvorrichtung 20 zu übertragen.
  • Arbeitsweise der Ausgabe DMA im einzelnen
  • Das erste Paar von Registern 90, 92 kopiert seine Inhalte in das zweite Paar von Registern 94, 96 nach Erhalt des Kopiersignals von der Steuerschaltung 102. Das Zeigerregister 94 stellt die Adresse des nächsten auszugebenden Bytes dem Speicherinterface 100 zur Verfügung. Es inkrementiert seinen Wert um 1 nach Erhalt des Bytesendesignals von der Steuerschaltung 102. Das Auszählungsregister 96 hält die Auszählung der Zahl von noch zu sendenden Bytes. Es dekrementiert um 1 nach Erhalt des Bytesendesignals. Es signalisiert der Kontrollschaltung 102 eine Nullauszählung CountZero immer, wenn es den Wert Null enthält. Ein Tokeniser 104 nimmt Datenbytes von dem Datenbus 8 an. Er signalisiert der Steuerschaltung 102 auf GotData immer, wenn er ein Datenbyte von dem Datenbus empfangen hat. Er teilt ein Datenbyte in ein Paar von Datentokens. Er sendet ein Token immer, wenn er ein Signal auf SendData empfangen hat. Er sendet ein Paketendetoken immer, wenn er ein Signal auf SendEOP empfangen hat. Die Kontrollschaltung registriert ihre Bereitschaft zur Übertragung eines Pakets auf Waiting. Wenn sie zuerst ein Signal von dem Kommunikationscontroller 6 empfängt auf Proceed, kopiert die Ausgabe-DMA die Daten in dem ersten Paar von Registern in das zweite Paar und signalisiert dann auf Waiting. Wenn es ein zweites Signal auf Proceed empfängt, liest die Ausgabe- DMA zunächst die Bytes aus dem Speicher unter Verwendung des Zeigers in dem zweiten Paar von Registern 94, 96 bis die Auszählung in dem zweiten Paar von Registern bis auf Null zurückgegangen ist. Sie kopiert dann den Inhalt des ersten Paares von Registern 90, 92 in das zweite Paar von Registern 94, 96 und liest Bytes aus dem Speicher unter Verwendung des Zeigers in dem zweiten Paar von Registern bis die Auszählung in dem zweiten Paar von Registern wieder bis auf Null herabgesetzt worden ist. Die Ausgabe-DMA veranlaßt dann die Kommunikationsvorrichtung 20 ein Paketendetoken zu senden. Sie signalisiert dann auf Waiting an den Kommunikationscontroller 6.
  • Betriebsweise der Eingabe DMA
  • Die Struktur jeder Eingabe-DMA ist in einem Blockdiagrammformular in Figur 7 gezeigt. Es gibt zwei Register, einen Kopf zeilenpuffer 74 und ein Eingabezeigerregister 72, die an den Z-Bus 70 des Kommunikationscontrollers wie bereits beschrieben angeschlossen sind. Es gibt einen Zeichenpuffer 112, der ein Token halten kann, das entweder ein Datenbruchstück- oder ein Paketendetoken sein kann. Dieser Puffer 112 signalisiert auf der mit Got.EOP markierten Leitung, wenn er ein Zeichen entlang des Kanals DataIn empfangen hat, das ein Paketendetoken ist, und signalisiert auf der mit Got.token.b markierten Leitung, wann immer er irgendein anderes Zeichen empfängt. Er überträgt seinen Inhalt an einen Schalter 114, wenn er ein Signal auf Send.t empfängt. Wenn das Signal Set.s gleich "1" ist, überträgt der Schalter 114 seine Eingabe an den Kopfzeilenpuffer 74. Eine Steuerlogik 116 fordert Daten von der Kommunikationsvorrichtung 20 an und bringt Daten in den Kopfzeilenpuffer 74 so lange der Kopfzeilenpuffer signalisiert, daß er eine komplete Paketkopfzeile auf dem Kanal Full enthält. Der wirksame Umfang des Kopfzeilenpuffers wird gesteuert durch ein zugeordnetes Flag 118, weiches das Paketkopfzeilenlängenflag ist. Ist das Flag gesetzt, sind Paketkopfzeilen zwei Bytes lang und der Kopfzeilenpuffer 74 signalisiert auf dem Kanal Full nur dann, wenn er vier Zeichen enthält. Ist dieses Flag nicht gesetzt, dann sind die Paketkopfzeilen 1 Byte lang und der Kopfzeilenpuffer signalisiert auf dem Kanal Full nur dann, wenn er zwei Zeichen enthält.
  • Nach Erhalt eines Signals von dem Kopfzeilenpuffer 74 auf dem Kanal Full fordert die Steuerlogik 116 ein anderes Zeichen von der Kommunikationsvorrichtung an und wartet auf ein Signal von dem Zeichenpuffer 112. Wenn dieses Signal auf Got.token.b. auftritt, ist das Paket ein Datenpaket und die Steuerlogik 116 signalisiert dem Kommunikationscontroller 6 auf DataPacket. Wenn das Signal des Zeichenpuffers 112 auf Got.EOP auftritt, ist das Paket ein Bestätigungspaket und die Steuerlogik 116 signalisiert dem Kommunikationscontroller auf AckPacket. Der Kommunikationscontroller dekodiert die Kopfzeile und schreibt einen Zeiger in das Eingabezeigerregister 72 der Eingabe-DMA und signalisiert dann der Steuerlogik 116 auf Acknowledge. Wenn das Paket ein Bestätigungspaket war, beginnt der Ablauf von neuem. Wenn das Paket ein Datenpaket ist, dann setzt die Kontrollogik 116 den Schalter 114 nicht und bewirkt einen Datenfluß in ein Daten-Aus-Register 120, von wo es über ein Speicherinterface 117 in einen Speicher eingeschrieben wird. Jedesmal wenn ein Byte in den Speicher geschrieben wird, signalisiert die Steuerlogik 116 dem Eingabezeigerregister 120 auf Increment, um es dazu zu veranlassen, den Zeiger auf den nächsten Platz zu verschieben. Die Steuerlogik fährt fort, bis sie ein Signal auf Got.EOP empfängt wenn sie dem Kommunikationscontroller 6 auf PaketEnd signalisiert.
  • Wenn ein Paket über die Kommunikationsvorrichtung 20 ankommt, gibt die Eingabe-DMA 22 ein oder zwei Bytes (abhängig davon, ob sein Flag 118 gesetzt ist) in seinen Kopfzeilenpuffer 74 ein und signalisiert dann dem Kommunikationscontroller, um anzuzeigen, dar ein Paket angekommen ist. Dieser Kanal trägt Datapacket, AckPacket und PacketEnd und wird allgemein in Figur 3 als PaketArrive bezeichnet. Die Eingabe-DMA gibt dann den nächsten Datenposten von der Kommunikationsvorrichtung ein und wartet gleichzeitig auf eine Bestätigung von dem Kommunikationscontroller. Der Kommunikationscontroller dekodiert die Kopfzeile, um das Kennzeichen eines virtuellen Verbindungsstückes zu erhalten, das er in den Kopfzeilenpuffer 74 der Eingabe-DMA speichert und bestätigt dann dem Empfang der Kopfzeile auf dem Kanal Acknowledge Wenn der Datenposten, den die Eingabe-DMA eingegeben hat nachdem die Kopfzeile des Pakets eine Paketendemarkierung war, signalisiert er dem Kommunikationscontroller 6, daß das Paket ein Bestätigungspaket ist, andernfalls signalisiert er, daß es ein Datenpaket ist. Der Kommunikationscontroller bestätigt den Erhalt dieses Signals. Wenn das Paket ein Bestätigungspaket ist, so ist die Transaktion zwischen der Eingabe-DMA und dem Kommunikationscontroller nun vorüber. Eine neue wird immer dann beginnen, wenn ein anderes Paket über die Kommunikationsvorrichtung 20 ankommt. Wenn das Paket ein Datenpaket ist, liest der Kommunikationscontroller 6 den virtuellen Verbindungsstücksteuerblock, um einen Platz zu erhalten, an dem die in dem Paket enthaltenen Daten plaziert werden können. Dies wird entweder ein Zeiger zu dem Datenbereich eines eingebenden Prozesses oder ein Zeiger zu dem den virtuellen Verbindungsstück zugeordneten Puffer. Der Kommunikationscontroller schreibt diesen Zeiger in das Eingabezeigerregister 72 der Eingabe-DMA und signalisiert dann auf dem Kanal PacketArrive. Die Eingabe-DMA geht dann dazu über, von der Kommunikationsvorrichtung erhaltene Daten einzuschreiben unter Verwendung der Inhalte des Eingabezeigerregisters 72 als Adresse, wobei es das Eingabezeigerregister jedesmal inkrementiert, wenn ein Byte in den Speicher geschrieben wird, so lange bis es ein Paketendezeichen von der Kommunikationsvorrichtung erhält. Sie signalisiert dann dem Kommunikationscontroller, daß die Eingabe vollständig ist.
  • Eine Maschinenzustandsbeschreibung der Ausgabesteuerschaltung der Ausgabe-DMA ist in Tabelle 1 gezeigt ebenso wie in Tabelle 2 die Steuerlogik der Eingabe-DMA.
  • Jede Kommunikationsvorrichtung weist vier Logikkanäle zwischen sich und dem Kommunikationscontroller auf. Die vier Kanäle bilden zwei Paare, eine für jede Datenrichtung. Die Datenkanäle befördern Datenpositionen, die Datenteile oder eine Paketendemarkierung sein können. Bestätigungskanäle befördern Handshake-Signale, die den Datenpositionsfluß auf dem anderen Kanal des Paares steuern. Bei der bevorzugten Ausführungsform kann die Kommunikationsvorrichtung direkt die Paketendemarkierung in dem Protokoll, über das beide untereinander kommunizieren, entschlüsseln.
  • Beispiel für die Arbeitsweise bei einer bevorzugten Ausführungsform
  • Figur 8 zeigt die Schlangenanfangs- und Schlangenendezeiger zweier Verbindungsstücke (80a,b und 82a,b) sowie fünf virtuelle Verbindungsstücke in dem Speicher eines Mikrocomputers nach einer Initialisierung. Die Figur zeigt auch, wie der Kanalkopfzeilenzeiger 8.3 eines jeden virtuellen Verbindungsstücks auf einen anderen Bereich des Speichers zeigt der die Nummer des zu verwendenden physikalischen Verbindungsstückes, die Länge der Kopfzeile und die Kopfzeile selbst enthält. Die Verbindungsstücknummern sind derart gezeigt, daß sie symbolisch auf das korrespondierende physikalische Verbindungsstück hindeuten. Aus der Figur ist zu ersehen, daß zwei der virtuellen Verbindungsstücke das Verbindungsstück 1 und die anderen drei das Verbindungsstück 0 verwenden. In der Figur ebenfalls gezeigt sind die Kanalpaketpuffer, auf die durch den Pufferzeiger 8.8 hingedeutet wird. Es ist anzumerken, daß weder die virtuellen Verbindungsstücke noch die korrespondierenden Kopfzeilen noch die korrespondierenden Kanalpaketpuffer in benachbarten Bereichen des Speichers liegen müssen. Sie sind derart gezeigt, daß sie bedarfsweise benachbarte Bereiche des Speichers belegen, da dies eine einfache Anordnungsstrategie darstellt.
  • Unter der Annahme, daß ein Prozeß P1 auf einem Mikrocomputer P1 eine Ausgabe durchführt unter Verwendung des virtuellen Verbindungsstücks VLi (Speicherplätze 8.1i bis 8.8i) . Entsprechend der Arbeitsweise der Kommunikationseinheit -wie oben beschrieben- sind das Schlangenregister und die Speicherbereiche des Mikrocomputers T1 so, wie in Figur 9 gezeigt. Einige der in der vorhergehenden Figur gezeigten Pfeile sind zum Zwecke der Klarheit weggelassen worden.
  • Wenn ein anderer Prozeß P2 auf einem Mikrocomputer T2 eine Eingabe durchführt unter Verwendung des virtuellen Verbindungsstücks VLj (Speicherbereiche 8.1j bis 8.8j), dann sind der bereits beschriebenen Arbeitsweise der Kommunikationseinheit folgend das Schlangenregister und die Speicherbereiche des Mikrocomputers T2 so, wie in Figur 10 gezeigt.
  • Angenommen, daß das Verbindungsstück 1 des Mikrocomputers P1 mit dem Verbindungsstück 0 des Mikrocomputers T2 verbunden ist und daß ein Nachrichtenpaket von dem Mikrocomputer T1 zum Mikrocomputer T2 -wie bereits beschrieben- gesendet wird. Es wird angenommen, dar das virtuelle Verbindungsstück VLi auf dem Mikrocomputer T1 und das virtuelle Verbindungsstück VLj auf dem Mikrocomputer T2 ein Paar virtueller Verbindungsstücke -wie bereits beschrieben- bilden. Wenn dann das Nachrichtenpaket ankommt, wird seine Kopfzeile dekodiert, um die Adresse des virtuellen Verbindungsstücks VLj abzugeben. Wenn keine Eingabe durchgeführt worden ist auf diesem virtuellen Verbindungsstück, wird das Paket in den zugeordneten Puffer im Speicher des Mikrocomputers T2 -wie in Figur 11 gezeigtgespeichert.
  • Wenn eine Eingabe demzufolge durch den Prozeß P2 auf dem virtuellen Verbindungsstück VLj durchgeführt wird, dann ist der Zustand auf den virtuellen Verbindungsstücken auf dem Mikrocomputer T2 so, wie in Figur 12 gezeigt, unter der Annahme, daß die gesamte Nachricht länger ist als ein Nachrichtenpaket (andernfalls würde der Prozeß neu eingeplant und der Prozeßbeschreibungssatz in dem virtuellen Verbindungsstück VLj auf NotProcess.p rückgesetzt worden sein.
  • Wenn der Prozeß P2 die Eingabe auf dem virtuellen Verbindungsstück VLj durchführt bevor das Nachrichtenpaket ankommt, so dar das Schlangenregister und die virtuellen Verbindungsstücke so sind, wie in Figur 11 gezeigt, und ein Nachrichtenpaket demzufolge ankommt, wird der Zustand des Schlangenregisters und des Speichers des Mikrocomputers T2 so, wie in Figur 13 gezeigt.
  • Wenn ein anderer Prozeß P3 auf dem Mikrocomputer T2 eine Ausgabe auf dem virtuellen Verbindungsstück VLj durchführt bevor das Bestätigungspaket abgesendet worden ist, wird der Zustand des Schlangenregisters und der virtuelien Verbindungsstücke des Mikrocomputers T2 so sein, wie in Figur 14 gezeigt.
  • Es folgt eine Erläuterung der Arbeitsweise des Kommunikationscontrollers mit Bezug auf die OCCAM-2-Sprache. Tabelle 1: state Input Output Next State Ready wait wait.for.tok.and.req send.second read.again final.req Ready for Data Proceed Got Data Count Zero Waiting Copy Read Send Data Byte Data Tabelle 2: state Input Output Next State start go wait Got.token Full Acknowledge Request Data Data Packet Write Packet End
  • Arbeitsweise des Kommunikationscontrollers
  • Es wird nun die Arbeitsweise des Kommunikationscontrollers beschrieben unter Verwendung der OCCAM-Sprache. Die Register des Kommunikationscontrollers werden durch OCCAM-Variable wie folgt repräsentiert:
  • Das folgende Feld von Bool-schen Variablen repräsentiert Signale von den Verbindungsstücken an den Bedingungsmultiplexer des Kommunikationscontrollers:
  • Die folgenden Bool-schen Variablen repräsentieren Zustandsbits des Kommunikationscontrollers:
  • Die Register der DMA-Vorrichtungen, die mit den Bussen der Kommunikationseinheiten verbunden sind, werden durch Variablenfelder repräsentiert. Die Elemente der Felder korrespondieren mit den zu einzelnen Verbindungsstücken gehörenden Registern. Die Nummer der Verbindungsstücke wird durch die Konstante NLinks repräsentiert.
  • Ein Satz grundlegender Operationen wird nun unter Verwendung von Occam-Prozeduren beschrieben. Diese können als lediglich zum Zwecke der Erläuterung verwendet angesehen werden, so lange der Gegenstand einer Prozedur für ein Ausführungsbeispiel ausgetauscht werden kann, vorausgesetzt, daß die Prozedurparameter durch aktuelle Parameter ersetzt werden.
  • Verschiedene benannte Konstanten werden in den folgenden Beschreibungen verwendet. Bei der bevorzugten Ausführungsform können sie die folgenden Werte haben und zwar für eine 32- Bit-Maschine, in der die Adressen durch Bytes gegeben sind:
  • Verschiedene Operationen zum Bilden einer Adresse, zum Plazieren der Adresse in dem Speicheradressregister, zum Plazieren von in das Datenausregister zu schreibenden Daten (im Falle eines Signals write) und zum Signalisieren an das Speicherinterface werden durch die folgenden Prozeduren repräsentiert:
  • Diese Prozedur reiht einen virtuellen Verbindungsstücktabelleneingang in die Ausgabeschlange für das Verbindungsstück "link.number" ein. Es wird davon ausgegangen, dar dieses virtuelle Verbindungsstück noch nicht auf diese Weise eingereiht ist. Der Offset ist der Offset innerhalb jedes virtuellen Verbindungsstückkontrollblocks des Schlangenverbindungsstückwortes. Er legt fest, ob das virtuelle Verbindungsstück eingereiht werden soll, um ein Datenpaket oder ein Bestätigungspaket zu senden.
  • Diese Prozedur nimmt den Posten vom Anfang der Ausgabeschlange für das Verbindungsstück "link.number". Sie nimmt an, die Schlange sei nicht leer, wenn sie aufgerufen wird.
  • Die folgende Prozedur liest die Nummer des dem laufenden virtuellen Verbindungsstück zugeordneten physikalischen Verbindungsstücks aus den Daten, auf die durch den Kanalkopfzeilenzeiger hingedeutet wird:
  • Die Kommunikation zwischen der Kommunikationseinheit und der CPU wird durch OCCAM-Kanäle repräsentiert. Die Kommunikation auf den OCCAM-Kanälen ist synchronisiert. Das bedeutet, daß eine einzige OCCAM-Kommunikation mit einem Anforderung/Antwort-Paar wie oben beschrieben korrespondiert. Die Kommunikation von Datenwerten schließt auch die Verwendung des Datenbusses des Mikrocomputers mit ein. Die Kommbination aus einer Anforderung, einer Antwort und einer Datenübertrades Datenbusses des Mikrocomputers mit ein. Die Kommbination aus einer Anforderung, einer Antwort und einer Datenübertragung wird durch eine OCCAM-Kommunikation auf den folgenden Kanälen repräsentiert:
  • Die Signale zwischen dem Kommunikationscontroller und den DMA-Vorrichtungen werden gleichzeitig durch die folgenden Felder von OCCAM-Kanälen repräsentiert:
  • Die folgende Prozedur lädt den Zeiger zu der Kopf zeile des Pakets und die Auszählung seiner Länge in die DMA-Ausgabevorrichtung, unter der Annahme, dar das Zeigerregister schon die Adresse des Beginns der Kopfzeile enthält:
  • Die folgende Prozedur arbeitet die Länge des nächsten Pakets aus und dekrementiert die gespeicherte Auszählung um diesen Wert. Wenn die Auszählung immer noch ungleich 0 ist, erneuert er den gespeicherten Zeiger in dem Prozeßarbeitsraum in gleicher Weise. Durch Fortfahren auf diese Weise vor Absendung der Kopfzeile, stellt man sicher, daß wenn ein Bestätigungspaket zurückkommt bevor das Paket vollständig gesendet worden ist, das nächste Paket mit den korrekten Daten gesendet (oder der Prozeß neu eingeplant) werden kann. Er bewirkt dann, daß das Datenpaket gesendet wird.
  • Der folgende Ausschnitt aus OCCAM zeigt, wie der Kommunikationscontroller auf eine Anforderung von der CPU, eine Nachricht zu senden, antwortet:
  • Die folgende Prozedur zeigt, wie die DMA-Ausgabevorrichtung in Betrieb gesetzt wird, um ein Bestätigungspaket zu senden (beispielsweise eines ohne Daten):
  • Die folgende Prozedur sendet einen Prozeßbeschreibungssatz an die CPU zurück, so daß dieser demzufolge einmal mehr ausgeführt werden kann:
  • Der folgende Ausschnitt aus OCCAM zeigt, wie der Kommunikationscontroller auf eine Anforderung von der CPU, eine Nachricht zu empfangen, antwortet:
  • Die folgende Prozedur dekodiert die Paketkopfzeile, um die Adresse des Kontrollblocks des virtuellen Verbindungsstücks zu erhalten, an das das Paket adressiert ist.
  • Es ist zu beachten, daß (header.buffer[link.number]-channel.header.base) die Zahl des adressierten virtuellen Verbindungsstückes ist, z.B. ein Block-Offset von der Basis der virtuellen Verbindungsstücktabelle. Auf diese Weise muß dies mit 8 (entsprechend einer Linksschiebung um 3) multipliziert werden, um einen Wortoffset der Basis der Tabelle zu erhalten. Durch Addieren der Adresse der Basis der Tabelle erhält man die aktuelle Adresse.
  • Der folgende Ausschnitt aus OCCAM zeigt den Kommunikationscontroller antwortend, wenn eine DMA-Eingabevorrichtungen ein Bestätigungspaket empfängt:
  • Der folgende Ausschnitt aus OCCAM zeigt den Kommunikationscontroller antwortend, wenn eine der DMA-Eingahevorrichtungen ein Datenpaket empfängt.
  • Das untere Bit von header.buffer[link.number] wird dazu verwendet, zu entscheiden, ob der eingebende Prozeß (wenn es solche gibt) neu eingeplant werden sollte, wenn die Paketeingabe endet. So lange es ein Eingabeende auf diesem Kanal gibt, kann man annehmen, daß keine andere Eingabe auf diesem vorgenommen wird, so daß man sicher den Wert dieses Registers verwerfen kann, ohne die nach einer Eingabe getätigten Vergleiche zu zerstören.
  • Der folgende Ausschnitt aus OCCAM zeigt, wie der Kommunikationscontroller auf das paketendesignal von einer der DMA- Eingabevorrichtungen antwortet:
  • Der folgende Ausschnitt aus OCCAM zeigt, wie der Kommunikationscontroller auf das Signal "Waiting" von einer der DMA- Ausgabevorrichtungen antwortet:

Claims (36)

1. Computervorrichtung mit einem Prozessor (2) zum Ausführen einer Vielzahl von gleichzeitig ablaufenden Prozessen, die jeweils eine Folge von Befehlen enthalten, einen ein RAM enthaltenden Speicher (4), mindestens ein Nachrichtenverbindungsstück (10) mit einem Eingang (22) und einem Ausgang (24) zum Anschluß an eine von der Computervorrichtung getrennte Vorrichtung und zum aufeinanderfolgenden Senden von Nachrichtenpaketen zwischen der Computervorrichtung und der getrennten Vorrichtung, dadurch gekennzeichnet, daß der Speicher eine Vielzahl von adressierbaren Speicherplätzen aufweist, die adressierbare virtuelle Kommunikationsverbindungsstücke (VLi, VLj) bilden, von denen jedes einen Adreßspeicherplatz (1002) aufweist, der die Information (8.3) speichert, die das Ziel eines zu sendenden Nachrichtenpaketes auf diesem virtuellen Kommunikationsverbindungsstück festlegt, und gekennzeichnet durch eine Kommunikationssteuerschaltung (6), die an den Prozessor (2), den Speicher, und das Nachrichtenverbindungsstück gekoppelt ist, wobei die Kommunikationssteuerschaltung betreibbar ist:
i) als Antwort auf das Ausführen eines Nachrichtenbefehles durch den Prozessor, um ein ausgewähltes virtuelles Kommunikationsverbindungsstück der virtuellen Kommunikaionsverbindungsstücke zu adressieren und in das ausgewählte virtuelle Kommunikationsverbindungsstück Information zu laden, in bezug auf die über die virtuelle Kommunikationsverbindung zu bewirkende Nachricht; und
ii) um eine sequentielle Übertragung durch das eine Nachrichtenverbindungsstiick von Nachrichtenpaketen, bezogen auf eine Vielzahl von virtuellen Kommunikationsverbindungsstücken zu steuern, wobei, wenn eln Nachrichtenpaket gesendet werden soll, dessen Ziel durch die Information festgelegt wird, die im ausgewählten Kommunikationsverbindungsstück der virtuellen Kommunikationsverbindungsstücke gespeichert ist.
2. Computervorrichtung nach Anspruch 1, bei welcher der Speicher auch eine Vielzahl von Kommunikationskanälen vorsieht, um zu erlauben, daß die durch den Prozessor durchzuführenden, gleichzeitig ablaufenden Prozesse gegenseitig kommunizieren.
3. Computervorrichtung nach Anspruch 2, bei welcher das Verhalten eines Speicherplatzes als virtuelles Verbindungsstück oder als Kommunikationskanal durch die Adresse des Speicherplatzes bestimmt ist.
4. Computervorrichtung nach Anspruch 1, 2 oder 3, bei welcher die Kommunikationssteuerschaltung (6) derart betreibbar ist, um zu übertragenden Nachrichten zwischen dem durch den Prozessor auszuführenden Prozeß und einem Prozeß, der von einem Prozessor einer separaten Vorrichtung ausgeführt wird, zu erlauben, daß eine synchronisierte Prozeß-zu-Prozeßkommunikation implementiert wird.
5. Computervorrichtung nach Anspruch 3 oder 4, wenn rückbezogen auf Anspruch 3, bei welcher die Kommunikationskanäle eine synchronisierte Prozeß-zu-Prozeßkommunikation zwischen gleichzeitig ablaufenden Prozessen des Prozessors (2) erlauben.
6. Computervorrichtung nach einem der vorangegangenen Ansprüche, die eine integrierte Schaltung auf einem Einzelchip, der den Prozessor, den Speicher und die Kommunikationssteuerschaltung vorsieht, aufweist.
J. Computervorrichtung nach Anspruch 4 und 6, bei welchem die Kommunikationssteuerschaltung (6) betreibbar ist, um eine synchronisisrte Prozeß-zu-Prozeßkommunikation zwischen Prozessen, die von dem auf dem Chip befindlichen Prozessor durchgeführt werden, und Prozessen, die von einem Prozessor auf einer separaten Vorrichtung durchgeführt werden, zu implementieren.
8. Netzwerk mit einer Vielzahl von Computervorrichtungen (N) gemäß einem der vorangegangenen Ansprüche, die durch ihre Nachrichtenverbindungsstücke miteinander verbunden sind.
9. Netzwerk nach Anspruch 8 mit einer Vielzahl von Leitwegschaltern (RS), um die Nachrichten zwischen den Computervorrichtungen zu leiten.
10. Verfahren zum Ausführen gleichzeitig ablaufender Prozesse in einer Computervorrichtung mit einem Prozessor (2), einen ein RAM enthaltenden Speicher (4), einer Kommunikationssteuerschaltung (6), und mindestens einem Nachrichtenverbindungsstück (10) mit einem Eingang (22) und einem Ausgang (24), das an eine von der Computervorrichtunq separate Vorrichtung angeschlossen sind, um Nachrichtenpakete zwischen der Computervorrichtung und der separaten Vorrichtung zu übertragen, wobei das Verfahren die Schritte aufweist:
- Zuweisen einer Vielzahl von adressierbaren Speicherplätzen als virtuelle Kommunikationsverbindungsstücke (VLi, VLj);
- Speichern einer Information, die das Ziel des auf dieser virtuellen Kommunikationsverbindung zu sendenden Nachrichtenpaketes festlegt an einem Adreßspeicherplatz jedes virtuellen Kommunikationsverbindungs- stückes;
- Durchführen einer Folge von Befehlen, die eine Vielzahl von Nachrichtenbefehlen enthalten;
- Betreiben der Kommunikationssteuerschaltung als Antwort auf das Durchführen jeder der Nachrichtenbefehle, um ein ausgewähltes virtuelles Kommunikationsverbindungsstück zu adressieren und Informationen in die ausgewählten Verbindungsstücke zu laden in bezug auf die zu bewirkende Nachricht; und
- Verwendung der Kommunikationssteuerschaltung, um eine sequentielle Übertragung eines Nachrichtenpaketes durch eine der Nachrichtenverbindungsstücke zu bewirken, indem ein Nachrichtenpaket, das die Zielinformation, abgeleitet vom ausgewählten virtuellen Kommunikationsverbindungsstück, enthält, gebildet wird.
11. Verfahren nach Anspruch 10, bei welchem die Steuerschaltung (6) als Antwort auf den Empfang eines Nachrichtenpaketes durch ein Nachrichtenverbindungsstück arbeitet, um ein ausgewähltes virtuelles Kommunikationsverbindungsstück (VLi) abhängig vom Inhalt der Nachricht zu adressieren.
12. Verfahren nach Anspruch 10, bei welchem die über das ausgewählte virtuelle Kommunikationsverbindungsstück zu bewirkende Nachricht durch die Kommunikationssteuerschaltung in eine Vielzahl von Nachrichtenpaketen, die jeweils eine Länge haben, die nicht größer als eine vorbestimmte Länge ist, aufgeteilt wird.
13. Verfahren nach Anspruch 12, bei welchem die Zielinformation jedes Nachrichtenpaketes ein Adreßteil ist, das deren zugeordnetes virtuelles Verbindungsstück des Adreßteiles identifiziert, das verwendet wird, um die Nachrichten zu leiten.
14. Verfahren nach einem der Ansprüche 10 bis 13, das weiter den Schritt enthält, eine Schlange von virtuellen Kommunikationsverbindungsstücken zu bilden, die warten, um ein Nachrichtenverbindungsstück zu benutzen, indem in jedes virtuelle Kommunikationsverbindungsstück ein Zeiger (8.1, 8.2) zum nächsten virtuellen Kommunikationsverbindungsstück geladen wird, wodurch eine verbundene Liste gebildet wird.
15. Verfahren nach einem der Ansprüche 10 bis 14, bei welchem die Nachrichtenverbindung (10) angeordnet ist, um eine synchronisierte Prozeß-zu-Prozeßkommunikation vorzusehen, bei welcher jedes Nachrichtenpaket, das durch Ausführung eines Prozesses auf einer Computervorrichtung, die ein virtuelles Verbindungsstück (VLi) verwendet, ausgegeben wird, durch eine Eingabevorrichtung vor der Übertragung eines weiteren Nachrichtenpaketes, das das gleiche virtuelle Verbindungsstück (VLi) verwendet, bestätigt wird.
16. Verfahren nach Anspruch 15, bei welchem jedes virtuelle Verbindungsstück (VLi) einen Statusindikator aufweist, um anzuzeigen, daß das virtuelle Verbindungsstück zum Bewirken der Übertragung einer Nachricht verwendet worden ist, und keine weiteren Nachrichten über das virtuelle Verbindungsstück übertragbar sind, bis der Statusindikator durch Empfang einer Bestätigung durch das virtuelle Verbindungsstück verändert worden ist.
17. Verfahren nach Anspruch 15 oder 16, bei welchem jedes virtuelle Verbindungsstück betreibbar ist, um sowohl die Eingabe von Datenpaketen als auch die Ausgabe von korrespondierenden Bestätigungspaketen zu bewirken.
18. Verfahren nach Anspruch 17, bei welchem jedes virtuelle Verbindungsstück betreibbar ist, um die Eingabe und Ausgabe sowohl von Datenpaketen als auch korrespondierenden Bestätigungspaketen zu bewirken.
19. Verfahren nach Anspruch 14 und 18, bei welchem jedes virtuelle Verbindungsstück, das wartet, ein Nachrichtenverbindungsstück zu verwenden, fähig ist, zwei Positionen in der verbundenen Liste anzunehmen, eine erste Position (8.1), die sich auf die Ausgabe eines Datenpaketes bezieht, und eine zweite Position (8.2), die sich auf die Ausgabe eines Bestätigungspaketes bezieht.
20. Verfahren nach Anspruch 10, bei welchem jedes Nachrichtenpaket zur Übertragung als mindestens eine Bitsequenz codiert ist, in welcher jede Bitsequenz eine gleiche Anzahl von Einsen und Nullen enthält, wobei die Bitsequenzen eine vorbestimmte Bitlänge aufweisen und einen endlichen Satz von Permutationen von gleichen Anzahlen von Einsen und Nullen bilden, wobei ein erster Teilsatz des endlichen Satzes ausgewählt ist, um als Datencodes verwendet zu werden, und ein zweiter, unterschiedlicher Teilsatz des endlichen Satzes ausgewählt ist, um als Steuercodes verwendet zu werden.
21. Verfahren nach Anspruch 20, bei welchem jede Bitsequenz eine Länge von sechs Bits mit drei Einsen und drei Nullen aufweist, wobei 16 Permutationen ausgewählt sind, um als Datencodes verwendet zu werden, und vier Permutationen ausgewählt sind, um als Steuercodes verwendet zu werden.
22. Verfahren nach Anspruch 10, bei welchem jedes Nachrichtenpaket zur Übertragung in Bitsequenzen mit jeweils sechs Bits Länge codiert ist, und bei welchem jede Bitsequenz drei Einsen und drei Nullen enthält, wovon 16 Kombinationen hergenommen werden, um unterschiedliche Werte von vier Bits von Daten, die Datencodes zugeordnet sind, zu repräsentieren, eine Kombination eingesetzt wird, um ein Ende eines Nachrichtenpaketcodes zu repräsentieren, und eine Kombination eingesetzt wird, um den Flug von Datencodes und das Ende von Nachrichtenpaketcodes in der entgegengesetzten Richtung zu steuern.
23. Computervorrichtung nach Anspruch 1, bei welcher die Kommunikationssteuerschaltung betreibbar ist, um eine Nachricht in eine Vielzahl von Nachrichtenpakten zu unterteilen, von denen jedes eine Länge aufweist, die nicht größer als eine vorbestimmte Länge ist.
24. Computervorrichtung nach einem der Ansprüche 1 bis 7 oder Anspruch 23, bei welcher die Kommunikationssteuer- Schaltung ein Datenzählregister (50) enthält, um die Länge der Nachricht, die verbleibt, über das ausgewählte virtuelle Kommunikationsverbindungsstück übertragen zu werden, zu halten.
25. Computervorrichtung nach Anspruch 23, bei welcher die Vielzahl von Nachrichtenpaketen über das gleiche virtuelle Kommunikationsverbindungsstück übertragen werden und ein gemeinsames Ziel aufweisen, wie durch die Information festgelegt ist, die in dem Ausgewählten der virtuellen Kommunikationsverbindungsstücke gespeichert ist, wobei die Nachrichtenpakete über das eine Nachrichtenverbindungsstück übertragen werden, das mit Nachrichtenpaketen, die über andere der virtuellen Kommunikationsverbindungsstücke übertragen werden, verschachtelt ist.
26. Computervorrichtung nach Anspruch 1, bei welcher jedes virtuelle Verbindungsstück einen Prozeßidentifikationsspeicherplatz zur Identifizierung eines Prozeßbeschreibungssatzes (8.5) einer der Vielzahl von gleichzeitig ablaufenden Prozessen aufweist, die einen Nachrichtenbefehl ausgeführt haben, um ein Nachrichtenpaket auszutauschen.
27. Computervorrichtung nach Anspruch 26, bei welcher der Prozeßidentifikationsspeicherplatz einen Zeiger am Arbeitsraum eines Prozesses speichert.
28. Computervorrichtung nach Anspruch 23, bei welcher jedes virtuelle Kommunikationsverbindungsstück einen Speicherplatz zum Speichern des Ausgangsdatenzählerstandes (8.4) enthält, der die Länge einer Nachricht darstellt, die verbleibt, um über das virtuelle Kommunikationsverbindungsstück ausgesendet zu werden.
29. Computervorrichtung nach Anspruch 1, bei welcher jedes virtuelle Kommunikationsverbindungsstück einen Speicherplatz (8.1, 8.2) enthält, um eine Schlange zur Übertragung über ein Nachrichtenverbindungsstück zu bilden.
30. Computervorrichtung nach Anspruch 1, bei welcher jedes virtuelle Kommunikationsverbindungsstück einen Prozeßidentifikationsspeicherplatz (8.6) zur Identifizierung eines Prozesses enthält, der den Empfang einer Nachricht auf diesem virtuellen Kommunikationsverbindungsstück erwartet.
31. Computervorrichtungnach Anspruch 1 oder 30, bei welcher jedes virtuelle Kommunikationsverbindungsstück einen Speicherplatz für einen Eingangsdatenzählerstand (8.7) enthält, der die Länge einer Nachricht darstellt, die durch das virtuelle Kanalverbindungsstück empfangen wird.
32. Computervorrichtung nach Anspruch 1, bei welcher das virtuelle Kommunikationsverbindungsstück einen Speicherplatz (8.8) enthält, das einen Bereich im Speicher identifiziert, wo ein eingehendes Nachrichtenpaket gespeichert werden kann.
33. Verfahren nach Anspruch 12, bei welchem Nachrichtenpakete unterschiedlicher Nachrichten über ihre jeweiligen ausgewählten virtuellen Kommunikationsverbindungsstücke in einer verschachtelten Weise über das ein Nachrichtenverbindungsstück auf der Computervorrichtung übertragen werden.
34. Verfahren nach Anspruch 15, bei welchem, wenn alle der Nachrichtenpakete einer Nachricht ausgegeben und bestätigt worden sind, eine Information, betreffend den Prozeß, der die Nachricht ausgab, an einen Prozessor der Computervorrichtung zurückgegeben wird, so daß der Prozeß fortfahren kann, ausgeführt zu werden.
35. Computervorrichtung nach Anspruch 1, bei welcher der Speicher einen Teil desdem Prozessor zugeordneten Hauptspeichers bildet.
36. Verfahren nach Anspruch 10, bei welchem, wenn ein Nachrichtenpaket von der Computervorrichtung empfangen wird, die Kommunikationssteuerschaltung bestimmt, ob das Nachrichtenpaket ein Datenpaket oder ein Bestätigungspaket ist, und als Antwort auf ein Datenpaket, das an ein ausgewähltes virtuelles Kommunikationsverbindungsstück adressiert ist, agiert, um eine Übertragung eines Bestätigungspaketes über das ausgewählte virtuelle Kommunikationsverbindungsstück zu bewirken, und als Antwort auf ein Bestätigungspaket, das an ein ausgewähltes virtuelles Kommunikationsverbindungsstück adressiert ist, eine Übertragung des Datenpaketes bewirkt, wenn keine Daten verbleiben, um über das ausgewählte virtuelle Kommunikationsverbindungsstück gesendet zu werden.
DE69019247T 1989-06-30 1990-06-28 Kontrollverfahren und Vorrichtung bei der Kommunikation zwischen Rechnern. Expired - Fee Related DE69019247T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB898915136A GB8915136D0 (en) 1989-06-30 1989-06-30 Method for controlling communication between computers

Publications (2)

Publication Number Publication Date
DE69019247D1 DE69019247D1 (de) 1995-06-14
DE69019247T2 true DE69019247T2 (de) 1996-02-15

Family

ID=10659382

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69019247T Expired - Fee Related DE69019247T2 (de) 1989-06-30 1990-06-28 Kontrollverfahren und Vorrichtung bei der Kommunikation zwischen Rechnern.

Country Status (5)

Country Link
US (1) US5495619A (de)
EP (1) EP0409434B1 (de)
JP (1) JP2988971B2 (de)
DE (1) DE69019247T2 (de)
GB (1) GB8915136D0 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5881310A (en) * 1990-07-16 1999-03-09 Atlantic Richfield Company Method for executing an instruction where the memory locations for data, operation to be performed and storing of the result are indicated by pointers
US7088990B1 (en) 1996-02-26 2006-08-08 Nokia Mobile Phones, Ltd. Communication network terminal supporting a plurality of applications
US6360281B1 (en) * 1998-05-29 2002-03-19 3Com Corporation System and method for communicating with a serial communications device using multiple virtual ports
US9361243B2 (en) 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6438642B1 (en) 1999-05-18 2002-08-20 Kom Networks Inc. File-based virtual storage file system, method and computer program product for automated file management on multiple file system storage devices
US8234477B2 (en) * 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US7392234B2 (en) * 1999-05-18 2008-06-24 Kom, Inc. Method and system for electronic file lifecycle management
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6938094B1 (en) 1999-09-17 2005-08-30 Advanced Micro Devices, Inc. Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6950438B1 (en) 1999-09-17 2005-09-27 Advanced Micro Devices, Inc. System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system
US6888843B2 (en) * 1999-09-17 2005-05-03 Advanced Micro Devices, Inc. Response virtual channel for handling all responses
KR100385233B1 (ko) * 2000-03-14 2003-05-23 삼성전자주식회사 데이터 프로세싱 시스템의 익스포넌트 유닛
ATE411561T1 (de) * 2001-06-28 2008-10-15 Nokia Corp Verfahren zum ermöglichen von übertragung zwischen prozessen und verarbeitungssystem unter verwendung desselben
US6715055B1 (en) * 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space
US20050131561A1 (en) * 2003-12-16 2005-06-16 Dell Products L.P. Information handling system including docking station with digital audio capability
US7512721B1 (en) * 2004-05-25 2009-03-31 Qlogic, Corporation Method and apparatus for efficient determination of status from DMA lists
US8571834B2 (en) * 2010-01-08 2013-10-29 International Business Machines Corporation Opcode counting for performance measurement
US8321753B2 (en) * 2010-04-13 2012-11-27 Juniper Networks, Inc. Optimization of packet buffer memory utilization
CN104794096A (zh) 2015-01-21 2015-07-22 李振华 可动态组合和调整的个人工作系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3406380A (en) * 1965-11-26 1968-10-15 Burroughs Corp Input-output data service computer
US4419728A (en) * 1981-06-22 1983-12-06 Bell Telephone Laboratories, Incorporated Channel interface circuit providing virtual channel number translation and direct memory access
US5243698A (en) * 1982-11-26 1993-09-07 Inmos Limited Microcomputer
US4547880A (en) * 1983-05-13 1985-10-15 Able Computer Communication control apparatus for digital devices
GB8329510D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer apparatus
US4933933A (en) * 1986-12-19 1990-06-12 The California Institute Of Technology Torus routing chip
US4901231A (en) * 1986-12-22 1990-02-13 American Telephone And Telegraph Company Extended process for a multiprocessor system
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US4905231A (en) * 1988-05-03 1990-02-27 American Telephone And Telegraph Company, At&T Bell Laboratories Multi-media virtual circuit

Also Published As

Publication number Publication date
GB8915136D0 (en) 1989-08-23
JP2988971B2 (ja) 1999-12-13
DE69019247D1 (de) 1995-06-14
EP0409434A1 (de) 1991-01-23
US5495619A (en) 1996-02-27
EP0409434B1 (de) 1995-05-10
JPH03131146A (ja) 1991-06-04

Similar Documents

Publication Publication Date Title
DE69019247T2 (de) Kontrollverfahren und Vorrichtung bei der Kommunikation zwischen Rechnern.
DE69514550T2 (de) Adaptiver leitweglenkungsmechanismus für torusverbindungsnetzwerk
DE69519926T2 (de) Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke
DE69229716T2 (de) Schaltungsarchitektur zum mehrkanaligen DMA-Betrieb
DE69229473T2 (de) Verfahren und vorrichtung zum puffern von daten in nachrichtennetzwerkstationen
DE69130881T2 (de) Massiv paralleler Rechner mit auf Schlangen basiertem Nachrichtenablieferungssystem
DE3248215C2 (de)
DE3689087T2 (de) Modularer Mehrfachportdatenknoten.
DE3850881T2 (de) Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher.
DE3688893T2 (de) Datentransfer und Puffersteuerung mit mehrfachen prozesstransparenten Speicherbetriebsarten.
DE3486141T2 (de) Parallel-prozessor.
DE68909426T2 (de) Datenverarbeitung und -übertragung.
DE69029763T2 (de) Weglenkung von Nachrichtenpaketen
DE3854361T2 (de) Programmierbare Protokollvorrichtung.
DE69620070T2 (de) Vielfachknoten-Datenverarbeitungssystem und Verfahren zur Übertragung von Nachrichten in diesem Vielfachknoten-Datenverarbeitungssystem
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE3685599T2 (de) Vermittlungssystem fuer datenuebertragung.
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE3820544C2 (de) Ortsbereichsnetzsystem mit einem hiermit gekoppelten Mehrcomputersystem und Verfahren zur Steuerung hiervon
DE69332058T2 (de) Mehrprozessorsystem
CH634940A5 (en) Channel-adapter arrangement
DE68928759T2 (de) Rechner mit intelligentem Speichersystem und zugehöriges Verfahren
DE3887552T2 (de) Zeitsteuerung für Doppelanschluss.
DE69026367T2 (de) Prioritätsvorrichtung mit programmierbarer knotenverweilzeit
DE69030678T2 (de) Datenübertragungsbetrieb zwischen zwei asynchronen Bussen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: SGS-THOMSON MICROELECTRONICS LTD., MARLOW, BUCKING

8339 Ceased/non-payment of the annual fee