DE69419525T2 - Nachrichten-einrichtung für ein massiv paralleles verarbeitungsystem - Google Patents
Nachrichten-einrichtung für ein massiv paralleles verarbeitungsystemInfo
- Publication number
- DE69419525T2 DE69419525T2 DE69419525T DE69419525T DE69419525T2 DE 69419525 T2 DE69419525 T2 DE 69419525T2 DE 69419525 T DE69419525 T DE 69419525T DE 69419525 T DE69419525 T DE 69419525T DE 69419525 T2 DE69419525 T2 DE 69419525T2
- Authority
- DE
- Germany
- Prior art keywords
- message
- processing element
- queue
- message queue
- processor
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 72
- 239000007787 solid Substances 0.000 title 1
- 230000015654 memory Effects 0.000 claims description 68
- 239000000872 buffer Substances 0.000 claims description 29
- 230000005540 biological transmission Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 16
- 238000012546 transfer Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 4
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 102100036409 Activated CDC42 kinase 1 Human genes 0.000 description 2
- 230000009365 direct transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 210000001357 hemopoietic progenitor cell Anatomy 0.000 description 2
- 238000001167 microscope projection photolithography Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000004886 head movement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
- Die Erfindung betrifft allgemein ein massiv-paralleles Verarbeitungssystem mit hoher Leistung und insbesondere eine Mitteilungseinrichtung, die eine effiziente Emulation eines mehrfach verarbeitenden Systems an einem Muliprozessorsystem zulässt.
- Massiv-Parallel-Verarbeitungs-(MPP)-Systeme sind Computersysteme, die hunderte oder tausende von Prozessorelementen (PEs) aufweisen, die einzeln durch ein gemeinsames Hochgeschwindigkeits-Kommunikationsnetzwerk miteinander verbunden sind. Viele MPPs sind heute Multicomputer, wobei jedes PE als ein alleinstehender Computer mit seinem eigenen zentralen Prozessor, lokalen Speicher und zugeordneter Steuerlogik betrachtet wird. In einem Multicomputer kann jedes PE nur seinen eigenen lokalen Speicher adressieren und kann nicht direkt aus dem lokalen Speicher, der einem anderen PE zugeordnet ist, lesen oder in diese einschreiben. Jedes PE liest Daten aus dem Speicher eines weiteren PE durch Senden eines Mitteilungs- und I/O-artigen Paketes zum Ziel-PE mit der Anfrage, dass einige Daten von dessen Speicher formatiert und zu dem anfragenden PE zurückgeschickt werden oder umgekehrt für den Fall des Einschreibens. Somit ist in einem Multicomputersystem jede Fernreferenz im wesentlichen ein I/O-Vorgang. Dieser Stil von Interprozessor-Kommunika tionen wird "Mitteilungsverschickung" (message passing) genannt. Message passing ist ein allgemein bekanntes und vorherrschendes MPP-Programmiermodell, weil Multicomputer relativ leicht zu bauen sind. Die Einfachheit der Konstruktian eines Multicomputer-MPP rührt von der Gebräuchlichkeit der Verwendung von Mikroprozessoren in einer Umgebung her, die sich sehr ihrem "natürlichen Standort" annähert (das heißt, Hardware- und Softwareimplementierung, die von den Mikroprozessordesignern ins Auge gefasst werden), das heißt einem Netzwerk kleiner autonomer Computer.
- Für viele Anwendungen ist jedoch ein Multiprozessor-MPP wünschenswerter als ein Multicomputer-MPP. In einem Multiprozessor-MPP kann jedes PE direkt alle Speicher adressieren, einschließlich dem Speicher eines weiteren (entfernten) PE, ohne dass der Prozessor am PE involviert ist. Anstatt der Behandlung von PE- zu entfernten Speicherkommunikationen als I/O-Vorgang wird das Auslesen und Einschreiben in den Speicher eines weiteren PE's auf die gleiche Art und Weise wie das Auslesen oder Einschreiben in einen lokalen Speicher durchgeführt.
- Multiprozessoren haben gegenüber Multicomputern den Vorteil der leichteren Programmierung. In einem Multicomputer muss jede Kommunikation zwischen den PEs durch den Programmierer explizit koordiniert und initiiert werden. In einem Multiprozessor jedoch treten Kommunikationen natürlich und implizit durch die Spezifikation der variablen Konstanten in den Programmbefehlen auf. Wenn die Daten, welche durch den variablen oder konstanten Namen repräsentiert sind, im Speicher eines entfernten PE sich befinden, wird der Zugriff auf die Daten automatisch auf die gleiche Art und Weise initiiert, als wenn die Daten im lokalen Speicher wären.
- Es sind Softwaretechniken bekannt, die die Emulation eines Multiprozessors und deren zugehörige leichte Programmierung eines Multicomputers zulassen. Solche Softwareemulatoren übersetzen das Anwendungsprogramm von entfernten Lese- und Einschreibvorgängen in explizite I/O-artige Mitteilungsübertragungsvorgänge auf eine Art und Weise, die für den Anwendungsprogrammierer verborgen ist. Die Software eines globalen Adressenraums unter Verwendung von message passing (Mitteilungsübertragung) ist jedoch sehr ineffizient, weil die I/O-artigen Vorgänge zugeordnet zu jeder Mitteilung einen großen Software-Start-Overhead haben. Erfolgreiche Mitteilungsübertragungsprogrammiermodelle bei Multicomputern beziehen sich auf relativ grobkörnige Programmierung, übertragen große Datenmengen mit jeder Kommunikation, um den Start-Overhead für viele Datenelemente zu amortisieren.
- Es besteht daher ein dringendes Bedürfnis nach einem massiv-parallelen Verarbeitungssystem, das die gewünschten Eigenschaften von sowohl Multiprozessor- als auch Multicomputer-MPPs hat und das ferner nicht die Einschränkungen durch hohen Overhead und Grobkörnigkeit des vorliegenden Softwaremanagements der message passing-Techniken hat.
- Die europäische Patentanmeldung EP/0 460 599 A2, veröffentlicht am 11. Dezember 1991, eingereicht am 4. Juni 1991 mit der Priorität vom 6. Juni 1990 der Firma Thinking Machines Corporation, beschreibt ein massiv-paralleles Computersystem mit einem auf einer Warteschlange basierenden Mitteilungsliefersystem. Die Verarbeitungsknoten stehen unter Steuerung einer Systemsteuerung und sind durch Kommunikationslinks miteinander verbunden. Jeder Verarbeitungsknoten hat wenigstens einen Prozessor, einen Speicher und einen Routerknoten zum Übertragen von Mitteilungen über die Kommunikationslinks. Die Systemsteuerung ermöglicht die Errichtung von Mitteilungswarteschlangen im Speicher jedes Verarbeitungsknotens. Die Systemsteuerung ermöglicht auch das Speichern von Mitteilungen, die von den Verarbeitungsknoten für deren entsprechende Prozessoren empfangen worden sind, um in der Mitteilungswarteschlange gespeichert zu werden. Es besteht jedoch der Bedarf nach einer auf einer Warteschlange basierenden Mitteilungseinrichtung, die eine effizientere Mitteilungsübertragung schafft und den Overhead verringert, der der Mitteilungsübertragung zugeordnet ist.
- Dies kann begreiflicherweise ein sehr effizienter Vorgang sein, der potentiell die Leistung eines tatsächlichen Multicomputers überschreitet, wenn die Grobkörnigkeit von Kommunikationen kleiner ist. Um in einem Multiprozessor eine effiziente Mitteilungsübertragung durchzuführen, ist es notwendig, eine gewisse Grundhardware zu schaffen, um zu ermöglichen, dass ein PE Daten zur Mitteilungswarteschlange eines anderen PE schickt und das Ziel-PE bei Mitteilungsankunft unterbricht. Die vorliegende Erfindung bezieht sich auf ein Bedürfnis nach effizienter Mitteilungsübertragungsemulation in einem Multiprozessor-MPP-System.
- Die vorliegende Erfindung, wie in den anhängenden Patentansprüchen definiert, schafft eine Hardwareunterstützung für eine Mitteilungseinrichtung in einem Multiprozessor-MPP-System, um die Emulation eines Multicomputersystems auf einem Multiprozessor-MPP-System zuzulassen. Die Mitteilungseinrichtung gemäß der vorliegenden Erfindung ermöglicht das Übertragen von Datenpaketen von einem PE zu einem anderen PE, ohne eine explizite Zieladresse im Speicher des Ziel- PE. Eine Mitteilung ist ein spezielles Cache-Leitungsgröße- Ferneinschreiben, das als Ziel eine hardware-verwaltete Mitteilungswarteschlange im Speicher des empfangenden PE's hat. Ankommende Mitteilungen werden in der Mitteilungswarteschlange in der Reihenfolge, mit der sie ankommen, durch die Hardwaremechanismen plaziert, die auch den Kommunikations-Handshaking-Protokollservice auf niedrigstem Niveau erzeugen. Die Flusssteuerung zwischen Prozessoren wird durch die Warteschlangenverwaltungshardware durchgeführt, wobei nötigenfalls Softwareintervention verwendet wird, um mit den fehlerhaften Fällen umzugehen, die durch Warteschlangenüberfüllung etc. verursacht werden.
- Mitteilungen können durch Benutzerniveaucode übertragen werden. Um das empfangende PE zu alarmieren, wenn eine Mitteilung angekommen ist, setzen alle Mitteilungen an dem Zielknoten eines Prozessors einen Interrupt. Weil das Empfangen von Mitteilungen ein Antworten auf den Mitteilungsankunftsinterrupt mit sich bringt, muss ein gewisser Systemniveaucode für die empfangenen Mitteilungen durchgeführt werden.
- Die Mitteilungseinrichtung kann dazu verwendet werden, eine Fernaktion durchzuführen oder einen Fernvorgang zu initiieren, indem eine Opcode-Konvention definiert wird, die es erlaubt, dass ein Prozessor eine Mitteilung die einen Opcode, Adresse und Argumente enthält, zu einem anderen schickt. Der Zielprozessor kann bei Empfangen der Mitteilung nach dem Ankunftsinterrupt den Opcode decodieren und die angegebene Aktion unter Verwendung der Argumentadresse und Daten durchführen.
- Beim Start eines Programms werden ein Kopf- und End-Adressverweis initialisiert, um auf die Basis der Warteschlange zu weisen und ein Grenzzähler wird auf einen Wert initialisiert, der die Anzahl des zur Verfügung stehenden Mitteilungsraums in der Warteschlange repräsentiert. Wenn eine Mitteilung an einem Knoten ankommt, wird sie als Ganzes in sequentielle Adressen kopiert, beginnend bei der Adresse, die durch den End-Adressverweis angezeigt ist. Der End- Adressverweis wird nach jeder Mitteilung erhöht, um den nächsten Mitteilungsplatz in der Warteschlange anzugeben. Der Grenzzähler, der von den Flusssteuerungsschaltungen verwendet wird, um den Warteschlangenraum zu überwachen, wird jedes Mal dann vermindert, wenn eine Mitteilung ankommt, um anzuzeigen, dass die Warteschlange sich auffüllt. Am Prozessor wird jedes Mal dann ein Interrupt gesetzt, wenn der End-Adressverweis durch eine neu ankommende Mitteilung erhöht wird. Der empfangende Prozessor liest die Mitteilungen in der Reihenfolge, in welcher sie angekommen sind, indem er den Kopf-Adressverweis verwendet und muss irgendwelche codierten Befehle und Adressen in der Software auswerten, um die durch die Mitteilung angeforderte Aktion zu entschlüsseln. Der End-Adressverweis kann durch den Prozessor gelesen werden, wenn ein Interrupt bedient wird, um zu bestimmen, wann der Anfang aufgefangen worden ist (keine weiteren Mitteilungen zu bedienen).
- Die Mitteilungseinrichtung schafft die Grundelemente für den Aufbau eines Mitteilungsübertragungs-Interprozessor- Kommunikationsprotokolls. Die Mitteilungseinrichtung erlaubt die Verwendung der Betriebssystemkommunikation und der Mitteilungsübertragungs-Programmiermodelle, wie beispielsweise das Defacto-Standard-Parallel-Virtuell-Maschine-(PVM)-Protokoll.
- Die vorstehenden und andere Aspekte, Merkmale und Vorteile der Erfindung sowie die vorliegenden bevorzugten Ausführungsformen derselben werden durch die folgende detaillierte Beschreibung und die begleitenden Figuren verständlich, in welchen zeigt:
- Fig. 1 ein vereinfachtes Blockschaltbild eines repräsentativen MPP-Systems, mit welchem die vorliegende Adresszentrifuge verwendet werden kann;
- Fig. 2 ein Blockschaltbild eines PE, mit einem Prozessor und dem zugehörigen Schalen-(Shell-)Schaltungsaufbau;
- Fig. 3 das Mitteilungseinrichtungspaketformat;
- Fig. 4 das NACK-Paketformat;
- Fig. 5 das Format einer Mitteilung in der Mitteilungswarteschlange;
- Fig. 6 eine Mustermitteilungswarteschlange vor und nach dem Einschreiben einer Mitteilung;
- Fig. 7 eine Mustermitteilungswarteschlange vor und nach dem Empfangen einer Mitteilung;
- Fig. 8 eine Mustermitteilungswarteschlange vor und nachdem der End-Adressverweis den ersten Eintritt der Mitteilungswarteschlange einhüllt;
- Fig. 9 eine Mustermitteilungswarteschlange vor und nach dem Empfangen eines ACK-Pakets;
- Fig. 10 eine Mustermitteilungswarteschlange vor und nach dem Empfangen eines NACK-Pakets;
- Fig. 11 ein Mustermitteilungspaket vor und nachdem der Mikroprozessor eine Mitteilung oder ein NACK-Paket aus der Warteschlange liest; und
- Fig. 12, 13 und 14 das Format der Fehlermitteilungen, wie sie in der Mustermitteilungswarteschlange gespeichert sind.
- In der folgenden detaillierten Beschreibung der bevorzugten Ausführungsform wird auf die begleitenden Figuren Bezug genommen, die einen Teil derselben bilden und in welchen zur Illustration eine spezifische Ausführungsform gezeigt ist, in welcher die Erfindung in die Praxis umgesetzt werden kann. Anzumerken ist, dass andere Ausführungsformen verwendet werden können und strukturelle Änderungen durchgeführt werden können, ohne dass vom Schutzumfang der Erfindung, wie beansprucht, abgewichen wird.
- Das bevorzugte MPP-System, für welches die vorliegende Erfindung eine Adressenzentrifuge schafft, ist ein MIMD-massiv-paralleler Multiprozessor mit einem physikalisch verteilten, global adressierbaren Speicher. Ein repräsentatives MPP-System ist in der Fig. 1 gezeigt.
- Fig. 2 zeigt ein vereinfachtes Blockschaltbild eines PE 200. Ein einzelnes PE enthält einen Hochleistungs-RISC- (Computer mit reduziertem Befehlssatz)-Mikroprozessor 202. In dem bevorzugten MPP-System ist der Mikroprozessor 202 ein DEC-Chip 21064-AA-RISC-Mikroprozessor, der von der Firma Digital Equipment Corporation erhältlich ist. Jedes PE ist an einen lokalen Speicher 204 gekoppelt der ein Verteilabschnitt des global adressierbaren Systemspeichers ist, und enthält einen Shell-Schaltungsaufbau, der die Synchronisations- und Kommunikationsfunktionen erleichternden Interaktionen zwischen den Prozessoren implementiert.
- Der Shell-Schaltungsaufbau enthält einen Verbindungsnetzwerkrouter 206, der dazu verwendet wird, Mehrfach-PEs in dem dreidimensionalen ringförmigen "Gewebe" zu verbinden. Das Verbindungsnetzwerk trägt alle Daten, die zwischen PEs und Speichern, die nicht lokal sind, kommuniziert werden. Eine Blockübertragungsmaschine 208 in dem PE-Shell-Schaltungsaufbau erlaubt eine asynchrone (das heißt unabhängig vom lokalen Prozessor) Bewegung der Daten zwischen dem lokalen Speicher 204 und entfernten Speichern, die anderen PEs zugeordnet sind, z. B. Blockübertragungen, mit flexiblen Adressiermodi, die einen hohen Grad von Steuerung über die Verteilung von Daten zwischen den verteilten Abschnitten des Systemspeichers erlauben. Das flexible Adressierschema und die Adressierzentrifuge sind in der zugehörigen und vom selben Anmelder stammenden US-Patentanmeldung US-A- 5,696,922 mit dem Titel "ADDRESS CENTRIFUGE FOR DISTRIBUTED MEMORY MASSIVELY PARALLEL PROCESSING SYSTEMS" mit selbem Anmeldedatum für Oberlin et al. angemeldet, beschrieben. Der Shell-Schaltungsaufbau enthält auch eine vorab eingelesene Datenwarteschlange 210, die es ermöglicht, dass der Prozessor 202 direkt die Datenbewegung zwischen entfernten Speichern und dem lokalen Prozessor auf eine Art und Weise initiieren kann, die die Zugriffslatenz verstecken kann und zulässt, dass Mehrfach-Fernspeicherreferenzen ausstehen. Die Synchronisationsschaltungen in der Shell erlauben eine Synchronisation auf unterschiedlichen Niveaus der Programm- oder Datenkörnigkeit, um das Synchronisationsverfahren, welches für eine vorgegebene Paralleltechnik "natürlich" ist, am besten anzupassen. Bei der feinsten Körnigkeit wird die Datenpegelsynchronisation durch einen atomaren Austauschmechanismus erleichtert, der das Sperren der Daten auf einer Element-für-Element-Basis erlaubt. Ein grobkörnigeres Datenpegel-Synchronisationsgrundelement ist durch die vorliegende Mitteilungseinrichtung geschaffen, die es ermöglicht, dass ein PE ein Datenpaket zu einem anderen PE schickt und bei Mitteilungsankunft einen Interrupt verursacht, der für die Verwaltung von Mitteilungswarteschlangen und Niedrigpegelmitteilungsprotokoll in der Hardware sorgt. Die Steuerpegelsynchronisation auf dem Programmschleifenpegel wird durch einen großen Satz global zugreifbarer Abruf- und Erhöhungsregister geschaffen, die dazu verwendet werden können, die Arbeit (in Form von beispielsweise Schleifeniterationen) unter Prozessoren bei Laufzeit dynamisch zu verteilen. Eine weitere Form der Steuerpegelsynchronisation, die Barrierensynchronisation, ist nützlich, um die Steuerübergänge zwischen Hauptprogrammblöcken zu steuern (das heißt zwischen Schleifen, die an denselben Datensätzen Aktionen durchführen). Der Barrieremechanismus ist im einzelnen in der zugehörigen und vom gemeinsamen Anmelder eingereichten US-PS 5,434,995 mit dem Titel "BARRIER SYNCHRONIZATION FOR DISTRIBUTED MEMORY MASSIVELY PARALLEL PROCESSING SYSTEMS" mit gleichem Anmeldedatum von Oberlin et al. beschrieben.
- Die vorliegende Erfindung unterstützt ein Mitteilungsübertragungsprogrammierbeispiel an einem bevorzugten MPP-Multiprozessorsystem. Die Mitteilungseinrichtung schafft eine Einrichtung zum Einschreiben in ein anderes PE ohne Angeben einer spezifischen Adresse im Speicher des Ziel-PE's. Die Mitteilungsinformation wird in einer Mitteilungswarteschlange in dem lokalen Speicher des Ziel-PE's gespeichert. Bei Mitteilungsankunft wird das PE unterbrochen, um die Information zu geben, dass eine Mitteilung angekommen ist. Die Hardware am Empfangs-PE decodiert ein Befehlsfeld der Mitteilung, welches das Ziel-PE über die Aktion informiert, die bezogen auf die Mitteilungsdatenschuld durchzuführen ist.
- Die Mitteilungseinrichtung hat mehrere Vorteile gegenüber herkömmlichen Multicomputer-Mitteilungsübertragungsmechanismen. Als erstes ist die geschickte Mitteilung sehr leicht. In einem Multicomputer, wie vorstehend erörtert, wird eine Mitteilung sehr ähnlich einer I/O-Operation verschickt. Es ist für den Fachmann allgemein bekannt, dass Anfragen vom I/O-Typ ein signifikantes Maß an Mitteilungsformatierung erfordern. Zusätzlich ist durch eine I/O-Anfrage ein wesentlicher Gesamtaufwand vom Anruf bis zum Betriebssystem einzulösen, um Kommunikationen zwischen dem übertragenden Computer und dem Empfänger zu errichten. Weil jedoch das bevorzugte MPP-System ein Multiprozessor ist, kann, anders als beim Multicomputer, das Ziel-PE stattdessen direkt adressiert werden und es ist keine Formatierung vom I/O-Typ erforderlich. Gleichzeitig stellt ein normaler gemeinsamer Globalspeicher-Sicherheitshardware-Mechanismus sicher, dass zwischen den sendenden und empfangenden Prozessoren eine ordentliche Kommunikationserlaubnis etc. besteht.
- In der vorliegenden Mitteilungseinrichtung ist auch eine Hardware-Mitteilungswarteschlangen-Verwaltung eingebaut. Normalerweise muss die Mitteilungswarteschlange im Speicher durch Softwaremittel verwaltet und beeinflusst werden, die zu dem Gesamtaufwand, welcher einer Mitteilung zugeordnet ist, zusätzlich vorgesehen werden müssen und die erforder liche Körnigkeit der Datenübertragung erhöhen, um den Gesamtaufwand zu amortisieren.
- Die vorliegende Mitteilungseinrichtung hat auf dem niedrigsten Niveau eine Hardwareflusssteuerung eingebaut (Handshaking). Dies erlaubt die Anwendung, Mitteilungen effizient zu schicken, ohne dass Flusssteuerungsergebnisse im üblichen Fall in Betracht gezogen werden müssen. Nur wenn die Mitteilungswarteschlangen voll sind und ein Überfließen oder zurückgewiesene Pakete auftritt, wird die Verantwortung der Flusssteuerung auf die Software umgeschaltet. Der Hardwareflusssteuerungsmechanismus ist so konzipiert, dass alle solche Fehlerbedingungen durch Software abdeckbar sind. Die Hardwareflusssteuerung verringert auch den Gesamtaufwand der Mitteilungsübertragung, ermöglicht, dass eine noch feinere Kommunikationskörnigkeit profitabel parallel unter Verwendung von Mitteilungsübertragungsprogrammiertechniken verarbeitet wird.
- Die vorliegende Mitteilungseinrichtung dient zur effizienten Übertragung von kurzen Mitteilungen durch direktes Senden. Lange Mitteilungen werden zwischen Prozessoren durch direktes Senden nur der Steuerinformation übertragen. Die Steuerinformation beschreibt die Größe und den Platz der langen Mitteilung in dem Speicher des übertragenden Prozessors. Der Empfangsprozessor kann nach Decodieren der Steuerinformation infolge des Multiprozessorvermögens des direkten Adressierens und des Referenzfernspeichers effizient auf die lange Mitteilung, da wo sie sitzt, zugreifen. Dies hat mehrere Vorteile gegenüber der herkömmlichen Mitteilungsübertragung in Multicomputern: die Latenz der Mitteilungsübertragung (die Zeit für das Senden der Mitteilung bis der Empfänger anfängt, auf die ersten Elemente der Mitteilung zu reagieren) wird signifikant verringert. Es muss nur die Steuerinformation tatsächlich geschickt werden, bevor der Empfänger für die "Ankunft" der Mitteilung alarmiert ist. Das tatsächliche Bewegen der langen Mitteilungs daten zum Empfänger kann unter Steuerung des Empfängers als Teil einer Rechenschleife, die auf die Daten wirkt, durchgeführt werden, wodurch die Latenz der Mitteilungsbewegung verborgen wird. Datenpufferungsanforderungen sind ebenfalls verringert, weil die Mitteilung nicht tatsächlich immer in den Speicher des Empfangsprozessors kopiert werden muss.
- Fig. 3 zeigt das Format eines Mitteilungspaketes, das die Einheit der Information ist, die durch das Netzwerk zwischen den Prozessoren in dem Multiprozessorsystem transportiert wird. Die Mitteilungspakete bestehen aus zwei Teilen: einem Kopfsatz, der Steuer- und Adressinformation enthält, und dem Körper, bestehend aus vier Worten der Datenzahllast.
- Der Kopfsatz besteht aus vier Teilen:
- 1. Befehl
- 2. Ziel-PE-Nummer
- 3. Quellen-PE-Nummer
- 4. Adresse
- Das Befehlsfeld ist ein 12-Bit-Feld, das den Pakettyp enthält (beispielsweise Last, Speicher, Mitteilung, NACK etc.). Gewisse Pakettypen, die das Mitteilungspaket enthalten, haben ein 8-Bit-Subfeld im Befehl, welches eine Halbwort-(32 Bit)-Maske enthält, die gültige Daten in dem Datenfeld, das auf den Kopfsatz folgt, anzeigt. Ein Mitteilungspaket wird typischerweise einen Befehl mit einer Maske für alle Einheiten tragen (es sei denn, dass die Mitteilungsübertragung unterbrochen wird, was eine Mitteilungsfragmentierung verursacht, die später erörtert wird). Die Tabelle 1 zeigt die Codierung des Befehlsfeldes. Tabelle 1
- In der Tabelle 1 zeigen Bits 2¹¹ bis 2&sup9; des Befehlsfeldes den Pakettyp an, in welchem sich der Befehl befindet. Wenn auf 1 gesetzt wird, zeigt das Bit 2&sup8; des Befehlsfeldes an, dass das Paket eine Anfrage ist. Wenn auf 0 gesetzt ist, zeigt das Bit 2&sup8; des Befehlsfeldes an, dass das Paket eine Antwort ist.
- Die Bits 2&sup7; bis 2&sup0; des Befehlsfeldes enthalten einen Opcode, der dem Unterstützungsschaltungsaufbau in dem Ziel-PE signalisiert, welcher Typ von Operation durchzuführen ist. In einigen Fällen enthält der Opcode Maskenbits (m), die anzeigen, welche 32-Bit-Halbwörter im Datenkörper des Paketes die gültigen Daten enthalten
- Die 12-Bit-Ziel-PE-Nummer ist ein Teil des Kopfsatzes, aber wird nicht durch die Mitteilungshandhabungssoftware verwendet, mit Ausnahme als. Teil einer Fehlerhandhabungsroutine. Die Ziel-PE-Nummer wird durch die Hardware verwendet, um zu bestätigen, dass die Netzwerkpakete zum korrekten PE geschickt worden sind. Die Ziel-PE-Nummer repräsentiert in der bevorzugten Ausführungsform eine logische PE-Nummer.
- Die Quellen-PE-Nummer wird typischerweise dazu verwendet, Antworten zum anfragenden PE zurückzuschicken. Die Hardware verwendet die Quellen-PE-Nummer dazu, eine neue Wegmarke für die Mitteilung ACK oder NACK (unten erörtert) zum sendenden Prozessor bei Mitteilungsankunft zu konstruieren. Die Quellen-PE-Nummer hat 12 Bits und repräsentiert vorzugsweise eine logische PE-Nummer.
- Die 24-Bit-Adresse ist die teil-physikalische Adresse, die der sendende Prozessor verwendet, um die Mitteilung zu schicken. Die Software-Opcodes sind in das Adressenfeld eingebettet. Die Adresse ist für das Übertragen durch das. Netzwerk in zwei Hälften, jeweils mit 12 Bits Größe, aufgeteilt.
- Eine Mitteilung kann in der bevorzugten Ausführungsform bis zu 32 Bytes Information enthalten. Mitteilungen, die kleiner als 32 Byte sind, müssen auf 32 Byte ergänzt werden, so dass die Empfangssoftware zwischen kleinen Mitteilungen und Mitteilungsfragmenten unterscheiden kann. Mitteilungsfragmentation kann durch einen Interrupt verursacht werden, wenn er während des Betriebs der vier Speicher auftritt, die notwendig sind, um einen Schreibpuffer während der Mitteilungsübertragung aufzufüllen.
- Mitteilungen, die größer als 32 Bytes sind, können als Zeichenkette von unabhängigen 32-Bytes-Mitteilungen geschickt werden. Oberhalb eines gewissen Schwellwertes der Mitteilungsgröße wird es schneller, und effizienter sein, nur Protokollinformation unter Verwendung der Mitteilungseinrichtung auszutauschen und die Daten unter Verwendung von anderen Einrichtungen zu bewegen. Beispielsweise könnte vor dem Bewegen eines großen Datenblockes ein Quellenprozessor eine Mitteilung schicken, die eine Zuweisung von Speicher am Zielort anfragt. Nach der Platzzuweisung für die große Mitteilung kann der Ziel-PE einen Verweis auf den zugewiesenen Speicher zurückschicken, entweder in einer Mitteilung oder durch direktes Einschreiben in ein Antwort-"Brieffach" in dem Speicher des Quellen-PE's, und zwar unter Verwendung eines Verweises, der als ein Teil der Anfragemitteilung übertragen worden ist. Der Sender kann dann direkt die große Mitteilung zum Fernknoten an den zugewiesenen Platz kopieren und schickt dann eine kurze Schlussmitteilung, um anzuzeigen, wenn die Kopie durchgeführt worden ist. Alternativ können große Mitteilungen durch den Empfänger bewegt werden, indem die Adresse und Größeninformation verwendet werden, welche im Protokoll und in der Steuermitteilung, die vom Sender geschickt worden ist, übertragen worden ist, wobei sie im Detail angeben, wo die Daten im Speicher des Senders sitzen und wie groß der Datenblock ist.
- Mitteilungen werden einfach durch Einschreiben einer speziellen Fernadresse in eine Cacheleitung übertragen. Mitteilungen werden von gewöhnlichen Fern-Cacheleitungseinschreibungen durch das Abbilden der Zieladresse unterschieden. Spezielle Adressen werden in dem physikalischen Speicheradressenbereich reserviert, um als Mitteilungsübertragungstrigger interpretiert zu werden. Wenn eine Speicherung bezüglich der Spezialadresse durchgeführt worden ist, decodiert die Hardware die Zieladresse, um anzugeben, dass die Speicherung tatsächlich eine geschickte Mitteilung ist. Der PE-Unterstützungsschaltungsaufbau erzeugt dann ein Mitteilungspaket und schickt das Paket in das Verbindungsnetzwerk, um den Ziel-PE zu routen.
- In dem bevorzugten MPP-System werden Mitteilungen in Schaltungen auf dem Mikroprozessorchip, die "Schreibpuffer" genannt werden, zusammengestellt. Das Cacheleitungseinschreiben auf die spezielle Adresse muss in Form von sequentiellen Speicherungen auf Adressen in der gleichen Cacheleitung durchgeführt werden. Die Einschreibpuffer auf dem Mikroprozessor versuchen, volle Cacheleitungen zusammenzustellen, bevor ein Buszyklus angefragt wird, und werden in den meisten Fällen Erfolg haben, falls keine intervenierenden Speicherverweise während dem Senden einer Mitteilung gemacht worden sind. Wenn der Prozessor unterbrochen wird, während die Cacheleitungsmitteilung aufgebaut wird, wird die Mitteilung als zwei unvollständige Cacheleitungen in zwei separaten Mitteilungen (Mitteilungsfragmente genannt) geschickt. Das Halbwortmaskenfeld in dem Mitteilungskopfsatz muss durch die Software bei Erhalt einer Mitteilung überprüft werden, um zu sehen, ob die vollständige Mitteilung vorhanden ist. Wenn nicht, muss der Empfangsprozessor die Verarbeitung des Mitteilungsfragmentes solange verschieben, bis die übrigen Teile ankommen.
- In der bevorzugten Ausführungsform ist es wichtig, ein Verständnis des Funktionierens der Mikroprozessoreinschreibpuffer zu haben, um die ordentliche Mitteilungsübertragung sicherzustellen. Es gibt vier Puffer, jeweils in einer Cacheleitungsgröße. Bei jeder Speicherung überprüft der Mikroprozessor alle vier Puffer auf ein mögliches Übereinstimmen zwischen der Adresse der derzeitigen Speicherung und einer, die in den Einschreibpuffern anhängen kann. Wenn eine Übereinstimmung gefunden wird, werden die Einschreibdaten an ihren ordentlichen Platz in der Cacheleitung, wie durch die Wort-innerhalb-Cacheleitung-Bits in der Adresse angezeigt, verschoben. Wenn an diesem Platz in dem Einschreibpuffer Daten von einer früheren Speicherung mit derselben Cacheleitungsadresse und demselben Wort-innerhalb- Cacheleitungs-Verweis waren, sind die vorhergehenden Daten verloren.
- Der DEC-Chip-Mikroprozessor, der für das bevorzugte MPP-System verwendet wird, hält die Daten in den Einschreibpuffern für eine unbestimmte Zeitdauer, bis spezifische Schritte unternommen werden, um diese in das Speichersubsystem herauszuspülen. Einer oder mehrere Einschreibpuffer werden entleeren, wenn: eine Speicherung an einer Adresse durchgeführt wird, die mit keiner der Cacheleitungsadressen übereinstimmt, die derzeit in den Einschreibpuffern ist, ein Speicherbarrierenbefehl ausgegeben wird oder eine Aus nahme oder ein Interrupt auftritt. Obwohl sie bei jedem dieser Vorfälle sperren, werden die Einschreibpuffer immer noch schließlich ableiten, aber der Zeitpunkt des tatsächlichen Einschreibens ist schwierig vorherzusagen.
- Es ist zu ersehen, dass, wenn Mehrfachmitteilungen sequentiell zu einem bestimmten Prozessor geschickt werden, für alle fünf Mitteilungen in einer Zeile unterschiedliche Spezial-Cache-Leitungsadressen verwendet werden müssen, oder es kann ein unbeabsichtigtes Vermischen von Mitteilungen in den Einschreibpuffern auftreten.
- Der Fachmann kann ersehen, dass die Mitteilungszusammenstellfunktionen der Einschreibpuffer auch leicht durch Puffer durchgeführt werden könnten, die außerhalb des Mikroprozessors implementiert sind, wenn der Mikroprozessor keine Einschreibpuffer hat oder es aus irgendwelchen Gründen nicht wünschenswert war, für die Mitteilungszusammenstellung Einschreibpuffer auf der Karte zu verwenden.
- Nach dem Empfangen des Mitteilungspaketes vom Netzwerkrouter versucht der Unterstützungsschaltungsaufbau in dem Ziel-PE, die Mitteilung in der Mitteilungswarteschlange zu speichern. Wenn die Mitteilungswarteschlange die Mitteilung aufnehmen kann, speichert der Unterstützungsschaltungsaufbau die Mitteilung in der Warteschlange und die Mitteilungshardwareinterrupt für den empfangenden Mikroprozessor.
- Der Unterstützungsschaltungsaufbau in dem Ziel-PE erzeugt dann ein Mitteilungsbestätigungs-(ACK)-Paket und schickt das Paket zum Quellen-PE. Die Fig. 3 zeigt auch das Format eine ACK-Pakets und die vorstehende Tabelle 1 zeigt das Format des Befehlsfeldes in einem ACK-Paket.
- Wenn die Mitteilungswarteschlange im Ziel-PE die Mitteilung nicht aufnehmen kann, kehrt der Unterstützungsschaltungsaufbau die Mitteilung zum anfragenden PE zurück, indem er ein Nichtbestätigungs-(NACK)-Paket erzeugt. Ein NACK-Paket enthält die gleiche Information wie das Mitteilungspaket, das NACK-Paket hat jedoch den Zielknoten und die Quell- Phits ausgetauscht und das Bit 28 des Befehlsfeldes ist auf 0 gesetzt, wie dies in der Fig. 4 gezeigt ist. Ein Phit ist ein Paket mit minimaler Größe. Nach dem Empfangen eines NACK-Paketes speichert der Unterstützungsschaltungsaufbau in dem PE, welches die Mitteilung gespeichert hat, das NACK in seiner eigenen Mitteilungswarteschlange. Die Mitteilungswarteschlange enthält immer Platz für NACK-Pakete, wie weiter unten erörtert, und weist ein NACK-Paket niemals ab.
- Der Prozessor, welcher die Mitteilung geschickt hat, kann dann das NACK aus der Mitteilungswarteschlange lesen. Weil das NACK die gesamte Information enthält, die die Originalmitteilung enthielt, kann der sendende Mikroprozessor die Originalmitteilung, falls gewünscht, rekonstruieren und zurücksenden. Dieser Vorgang kann solange wiederholt werden, bis die Mitteilung aufgenommen worden ist und der sendende Unterstützungsschaltungsaufbau ein ACK-Paket (anstatt eines NACK) enthält, welches das Einschreiben der Mitteilung beendet.
- Nach dem Empfangen eines Mitteilungspaketes plaziert der Unterstützungsschaltungsaufbau in einem PE die Mitteilung an einem bezeichneten Platz in dem lokalen Speicher, der die Mitteilungswarteschlange genannt ist, wo ankommende Mitteilungen vor dem Verarbeiten gespeichert werden. Die bevorzugte Mitteilungswarteschlange speichert bis zu 4080 Mitteilungen, NACK oder Fehlerpakete plus 16 reservierte Plätze für eine geringe Menge an Überlauf (insgesamt 256 K- Bytes Information), obwohl bei anderen Implementierungen irgendeine gewünschte Größe der Mitteilungswarteschlange gewählt werden könnte. Der Unterstützungsschaltungsaufbau plaziert die Mitteilungspakete in der Mitteilungswarteschlange in der Reihenfolge, in welcher sie empfangen worden sind. Die Mitteilungswarteschlange in der bevorzugten Ausführungsform ist ein First-in/First-out-(FIFO)-Kreispuffer.
- Wenn eine Mitteilung übertragen wird, reserviert der Unterstützungsschaltungsaufbau am übertragenden Knoten einen Platz in seiner eigenen lokalen Mitteilungswarteschlange. Durch Reservieren eines Mitteilungsplatzes in der lokalen Warteschlange garantiert der Unterstützungsschaltungsaufbau, dass Platz in der Mitteilungswarteschlange für den Fall des Empfangens eines NACK ist.
- Wenn von einem entfernten Knoten eine Mitteilung empfangen wird, speichert der Unterstützungsschaltungsaufbau die Mitteilung in dem nächsten sequentiellen Platz in der Mitteilungswarteschlange. Ähnlich wird, wenn ein NACK empfangen wird, der Unterstützungsschaltungsaufbau das NACK in der Mitteilungswarteschlange speichern, wobei Platz verbraucht wird, der reserviert worden war, als die Originalmitteilung abgeschickt worden war.
- Wenn ein ACK empfangen wird, gibt der Unterstützungsschaltungsaufbau den Platz in der Mitteilungswarteschlange, der für ein NACK reserviert worden war, frei. Der reservierte Platz wird nach dem Empfangen eines ACK nicht mehr benötigt.
- In dem bevorzugten MPP-System enthält der Unterstützungsschaltungsaufbau einen Hardwarezähler und zwei fest zugeordnete Speicherplätze für Register, die zum Steuern der Mitteilungswarteschlange verwendet werden. Der Hardwarezähler, genannt Grenzzähler (MQ_LC), ist ein 13-Bit-Auf-/Ab- Zähler, der anzeigt, wie viele Mitteilungsschlitze in der Mitteilungswarteschlange keine Information enthalten oder nicht für mögliche NACK-Pakete reserviert sind. Der Grenzzähler kann nicht direkt gelesen oder eingeschrieben werden, aber kann auf 4079 rückgesetzt werden, wenn die Software irgendeinen Wert für den Mitteilungswarteschlangendadressenverweis (MQ_TP) in das Register mit fest zugeordneten Speicherplätzen einschreibt. Der MQ_LC ist der Indikator dafür, wie viel Platz in der Mitteilungswarteschlange zur Verfügung steht. Der MQ_LC wird bei dem maximalen Mitteilungszählwert für die gewählte Warteschlangengröße initialisiert (minus einem gewissen Slack, um nach Interrupt und Fehlermitteilungen einen weiteren Pipelinebetrieb zu ermöglichen). Das Erhöhen oder Senken des MQ_LC um 1 rückt den Zählwert des zur Verfügung stehenden Platzes um eine Mitteilung vor oder verzögert ihn um eine Mitteilung. Der MQ_LC wird durch die Hardware jedes Mal dann gesenkt, wenn eine Mitteilung übertragen worden ist und jedes Mal dann erhöht, wenn eine Mitteilungsbestätigung ankommt. Der MQ_LC wird durch Software für jede Mitteilung, die aus der Warteschlange genommen worden ist, erhöht. Wenn gleichzeitig eine software-getriggerte Erhöhung und eine hardware- getriggerte Senkung erfolgt, tut sich an dem Zähler nichts. Wenn gleichzeitig eine software-getriggerte Erhöhung und eine hardwaregetriggerte Erhöhung erfolgt, erhöht sich MQ_LC um 2.
- Das MQ_TP-Register ist ein les- und einschreibbarer 12-Bit- Hardwarezähler, der den Endadressenverweis enthält. Der Endadressenverweis ist ein Wert, der den Schlitz in der Mitteilungswarteschlange repräsentiert, wo die nächste Mitteilung, welche ankommt, gespeichert wird. Das aktuelle Speicheroffset, welches durch den Endadressenverweis repräsentiert ist, wird durch Multiplizieren des Endadressenverweises mit 64 berechnet und das Ergebnis wird der Basisadresse der Mitteilungswarteschlange addiert. Der Wert von MQ_TP kann gelesen werden und kann auf 0 rückgesetzt werden. Um das MQ_TP-Register auf 0 rückzusetzen, muss die Software irgendeinen Wert in das MQ_TP-Register einschreiben.
- Wenn MQ_TP gelesen ist, kehrt MQ_TP zu dem laufenden Wert von MQ_TP zurück. Wenn irgendein Wert in das MQ_TP eingeschrieben wird, setzt der Unterstützungsschaltungsaufbau den Wert von MQ_TP auf 0 zurück und setzt den Mitteilungswarteschlangengrenzzähler auf 4079 zurück.
- Das Mitteilungswarteschlangengrenzerhöhungsregister (MQ_LIR) ist ein einem Speicher zugeordnetes Register, das die Software verwendet, den Grenzzähler zu manipulieren. Das MQ_LIR ist ein Nureinschreiben-Pseudoregister, das keinen Inhalt hat. Das MQ_LIR wird durch die Software verwendet, um MQ_LC vorzurücken. Jedes Speichern in das MQ_LIR verursacht eine Erhöhung um eine Mitteilung in MQ_LC. Der Wert, der in dem MQ_LIR gespeichert ist, ist irrelevant: der Akt des Einschreibens an diesem Platz triggert eine unteilbare Erhöhung des Grenzzählers. Wenn die Software irgendeinen Wert in das MQ_LIR einschreibt, wird der Wert des Grenzzählers um 1 erhöht. Wenn die Software den Wert des MQ_LIR liest, enthält das Bit 212 des MQ_LIR-Registers das Zeichenbit des Grenzzählers und die verbleibenden Bits werden nicht definiert.
- Zusätzlich zu diesen Hardwareregistern und -zählern muss die Mitteilungseinrichtungssoftware einen 12-Bit-Kopfadressenverweis aufrechterhalten. Der Kopfadressenverweis zeigt den Platz der nächsten Mitteilung in der Mitteilungswarteschlange an, der durch den Mikroprozessor gelesen wird.
- Der Unterstützungsschaltungsaufbau steuert auch die Mitteilungs- und Fehlerhardwareinterrupts. Der Mitteilungsinterrupt zeigt dem Mikroprozessor an, dass ein oder mehrere Mitteilungs-, NACK- oder Fehlerpakete in der Mitteilungswarteschlange gespeichert worden sind. Der Fehlerinterrupt zeigt dem Mikroprozessor an, dass einer oder mehrere Fehler aufgetreten sind.
- Die folgenden Abschnitte beschreiben, wie die Register, Zähler und Signale dazu verwendet werden, die Mitteilungseinrichtung zu steuern.
- Wenn der Mikroprozessor dem Unterstützungsschaltungsaufbau signalisiert, dass der Mikroprozessor eine Mitteilung einschreibt, überprüft der Unterstützungsschaltungsaufbau den Wert des Mitteilungswarteschlangengrenzzählers. Wenn der Grenzzähler größer oder gleich 0 ist, senkt der Unterstützungsschaltungsaufbau den Grenzzähler um 1. Ein übertragendes PE muss in der Mitteilungswarteschlange für den Fall, dass die Zielmitteilungswarteschlange voll ist, Platz für rückkehrende Mitteilungen aufrechterhalten. Der Unterstützungsschaltungsaufbau in dem Quellen-PE senkt den Wert des Grenzzählers, um einen Platz in der Mitteilungswarteschlange für jede übertragene Mitteilung zu reservieren. Fig. 6 zeigt eine Mitteilungswarteschlange einer Musterquelle vor und nach dem Abschicken einer Mitteilung. Nach Senken des Grenzzählers schickt der Unterstützungsschaltungsaufbau ein Mitteilungspaket an das Ziel-PE. Wenn der Prozessor versuchen sollte, eine Mitteilung zu übertragen, wenn der Grenzzähler gleich 0 ist (kein Platz für NACKs), wird der Prozessor mit einem Fehler unterbrochen. Dies wird als ein Mitteilungswarteschlange-Voll-Fehler bezeichnet.
- Obwohl der Mitteilungswarteschlange-Voll-Fehler besteht, erhöht der Unterstützungsschaltungsaufbau weiterhin den Grenzzähler um 1 und schickt eine Mitteilungspaket an das Ziel-PE. Wenn ein Mitteilungswarteschlange-Voll-Fehler auftritt, sollte das Betriebssystem sofort ungelesene Mitteilungen, die in der Mitteilungswarteschlange gespeichert sind, anordnen, um in der Mitteilungswarteschlange mehr Platz zu schaffen.
- Wenn der Unterstützungsschaltungsaufbau in einem Ziel-PE an einem Netzwerkrouter empfängt, überprüft der Unterstützungsschaltungsaufbau als erstes den Wert des Grenzzählers in der Mitteilungswarteschlange. Wenn der Wert des Grenzzählers größer als 0 ist, nimmt der Unterstützungsschaltungsaufbau die Mitteilung an. Wenn der Wert des Grenzzählers weniger als oder gleich O ist, ist die Mitteilungswarteschlange voll und der Unterstützungsschaltungsaufbau weist die Mitteilung zurück.
- Fig. 7 zeigt ein Muster einer Ziel-Mitteilungswarteschlange vor und nach dem Empfangen einer Mitteilung. Wenn der Unterstützungsschaltungsaufbau eine Mitteilung annimmt, speichert er die Mitteilung in der Mitteilungswarteschlange an dem Platz, der durch den End-Adressenverweis ausgezeichnet ist. Nach dem Speichern der Mitteilung in der Warteschlange erhöht der Unterstützungsschaltungsaufbau den End-Adressenverweis, verringert den Grenzzähler und setzt den Mitteilungshardwareinterrupt für den Mikroprozessor.
- Jede Mitteilungsankunft unterbricht den Zielprozessor für Empfang. Eine ankommende Mitteilung setzt einen Haltekreis, der sicherstellt, dass der Mitteilungsinterrupt in den EV-4 eingegeben wird. Der Haltekreis bleibt solange gesetzt bis er durch ein Einschreiben in das MQ_LIR-Register gelöscht wird.
- Bei normalem Betriebsverlauf würde der Prozessor in der Mitteilungshandhabungsroutine bleiben, bis der Kopfindexadressenverweis gleich dem MQ_TP ist, das heißt die Warteschlange sich geleert hat, bevor er zum Benutzer zurückkehrt.
- Um ein unbeabsichtigtes Ausfallen einer Mitteilungsankunft zu vermeiden, sollte das MQ_LIR-Einschreiben vor dem Lesen des MQ_TP und dem Vergleich mit dem Softwarekopfindexadressenverweis durchgeführt werden.
- Nur der Endadressenverweis erhöht. Wegen dieser Eigenschaft wird, wenn der End-Adressenverweis den letzten Eintritt in der Mitteilungswarteschlange erreicht, der End-Adressenverweis automatisch in den ersten Eingang der Mitteilungswarteschlange rutschen, wenn der Unterstützungsschaltungsaufbau eine weitere Mitteilung annimmt. Die Fig. 8 zeigt eine Muster-Ziel-Mitteilungswarteschlange vor und nachdem der End-Adressenverweis in den ersten Eintrag der Mitteilungswarteschlange gerutscht ist. Wenn der Kopfadressenverweis den letzten Eintrag in der Mitteilungswarteschlange erreicht, muss die Software den Wert des Kopfadressenverweises auf den Anfang der Mitteilungswarteschlange rücksetzen.
- Nach dem Annehmen der Mitteilung erzeugt der Unterstützungsschaltungsaufbau ein Mitteilungsbestätigungs-(ACK)-Paket. Der Unterstützungsschaltungsaufbau schickt ein Mitteilungs-ACK-Paket an das PE, welches die Originalmitteilung geschickt hat.
- Nach dem Empfangen des ACK-Pakets erhöht der Unterstützungsschaltungsaufbau in dem PE, das die Mitteilung geschickt hat, den Wert des Grenzzählers, um den Schlitz in der Mitteilungswarteschlange, der für ein mögliches NACK reserviert worden ist, aufzuheben. Grundsätzlich reserviert ein Senken des Grenzzählers einen Platz in der Mitteilungswarteschlange für mögliche Zurückweisungen, ACKs oder NACKs geben den reservierten Platz frei. Beispielsweise zeigt Fig. 9 eine Muster-Quellen-Mitteilungswarteschlange vor und nach dem Empfangen eines ACK-Pakets.
- Durch Erhöhen des Wertes des Grenzzählers macht der Unterstützungsschaltungsaufbau Platz in der Mitteilungswarteschlange zum Senden oder Empfangen einer weiteren Mitteilung. Diese Aktion beendet einen erfolgreichen Mitteilungstransfer von einem PE zu einem anderen.
- Wie vorstehend angegeben, überprüft der Unterstützungsschaltungsaufbau, wenn er ein Mitteilungspaket empfängt, zuerst den Wert des Grenzzählers in der Mitteilungswarteschlange. Wenn der Wert des Grenzzählers kleiner als oder gleich 0 ist, weist der Unterstützungsschaltungsaufbau die Mitteilung zurück.
- Wenn der Unterstützungsschaltungsaufbau in dem Ziel-PE eine Mitteilung zurückweist, wandelt er die Mitteilung in ein NACK-Paket um. Nach dem Umwandeln des Paketes schickt der Unterstützungsschaltungsaufbau das NACK-Paket zu dem PE zurück, das die Originalmitteilung geschickt hat.
- Fig. 10 zeigt eine Muster-Quellen-Mitteilungswarteschlange vor und nach dem Empfangen eines NACK-Pakets. Nach dem Empfangen des NACK-Pakets speichert der Unterstützungsschaltungsaufbau in dem PE, welches die Mitteilung geschickt hat, das NACK-Paket in der Mitteilungswarteschlange an den Platz, der durch den End-Adressenverweis angegeben ist. Nach dem Speichern des NACK-Pakets in der Warteschlange erhöht der Unterstützungsschaltungsaufbau den End-Adressenverweis und setzt den Mitteilungshardwareinterrupt für den Mikroprozessor.
- Wenn der Mikroprozessor die Originalmitteilung schickt, senkt der Unterstützungsschaltungsaufbau den Wert des Grenzzählers. Weil der Grenzzähler zu diesem Zeitpunkt gesenkt worden war, erhöht der Unterstützungsschaltungsaufbau den Grenzzähler nicht, wenn der Unterstützungsschaltungsaufbau ein NACK-Paket empfängt.
- Nachdem der Unterstützungsschaltungsaufbau den Mitteilungsinterrupt für den Mikroprozessor gesetzt hat, liest der Mikroprozessor die NACK-Information aus der Mitteilungswarteschlange. Der Mikroprozessor schickt dann die Mitteilung wieder zum Ziel-PE.
- Nachdem der Unterstützungsschaltungsaufbau ein Mitteilungspaket, ein NACK-Paket oder eine Fehlermitteilung in der Mitteilungswarteschlange gespeichert hat, setzt der Unterstützungsschaltungsaufbau den Mitteilungshardwareinterrupt für den Mikroprozessor. Dies signalisiert dem Mikroprozessor, dass eine oder mehrere Mitteilungseinrichtungspakete angekommen sind und in der Mitteilungswarteschlange gespeichert sind.
- Der Mikroprozessor kann dann die Mitteilung, das NACK oder Fehlermitteilungspaket aus der Mitteilungswarteschlange lesen und den Softwarecode, codierte Befehle oder Adressen zum Entschlüsseln der von der Mitteilung angeforderten Aktion interpretieren. Fig. 11 zeigt eine Muster-Mitteilungswarteschlange vor und nachdem der Mikroprozessor eine Mitteilung oder ein NACK-Paket aus der Warteschlange gelesen hat. Nach dem Lesen eines Paketes aus der Mitteilungswarteschlange erhöht der Mikroprozessor den software-gesteuerten Kopfadressenverweis und erhöht den Grenzzähler durch Einschreiben irgendeines Wertes in das MQ_LIR-Register. Wenn der Mikroprozessor den Grenzzähler erhöht, löscht der Unterstützungsschaltungsaufbau den Mitteilungshardwareinterrupt.
- Normalerweise fährt der Mikroprozessor, nachdem er den Mitteilungshardwareinterrupt empfangen hat, fort, die Mitteilungen aus der Mitteilungswarteschlange zu lesen, bis der Wert des Kopfadressenverweises gleich dem Wert des End- Adressenverweises ist. Dies zeigt dem Mikroprozessor an, dass keine weiteren Mitteilungen oder NACK-Pakete in der Mitteilungswarteschlange sind.
- Um zu vermeiden, dass eine Mitteilungsankunft verloren geht, sollte der Mikroprozessor den Grenzzähler erhöhen, bevor der Wert des End-Adressenverweises und des Kopfadressenverweises verglichen wird. Der Grenzzähler wird durch Einschreiben irgendeines Wertes in das MQ_LIR-Register erhöht.
- Ein Ausfall der Aktionen, die beim Mitteilungsübertragen involviert sind, und die Auswirkung, die auf die Kopf-, End- und Grenzzähler folgt (T = Ende, H = Kopf, L = Grenze, +1 oder -1 bedeutet Erhöhen durch die Mitteilungsgröße):
- EINSCHREIBEN (Mitteilung schicken):
- Wenn (L < = 0) FEHLER - lokalen Prozessor unterbrechen
- L = L - 1
- MITTEILUNGSANKUNFT:
- Wenn (L < = 0) NACK - Mitteilung zurück an Sender
- Sonst T = T + 1 - Mitteilungsinterrupt setzen
- L = L - 1
- MITTEILUNG EMPFANGEN (Verarbeiten von Mitteilungsinterrupt):
- Daten (H) lesen
- H = H + 1 (rutschen, falls notwendig)
- L = L + 1
- ACK-ANKUNFT:
- L = L + 1
- NACK-ANKUNFT (zurückgewiesene Mitteilung):
- L = L + 1
- T = T + 1 - Setzen von Mitteilungsinterrupt
- Es können drei Arten von Fehlerbedingungen bei der bevorzugten Ausführungsform überprüft werden. Erstens könnte die Mitteilungspaketinformation während dem Übertragen der Mitteilung von der Quelle zum Ziel-PE zerstört sein. Zweitens könnte ein PE versuchen, eine Mitteilung in seine Mitteilungswarteschlange einzuschreiben, wenn die Mitteilungswarteschlange bereits voll ist. Schließlich könnte Mitteilung durch das Ringnetzwerk auf den falschen Weg geleitet worden sein und an dem falschen Ziel-PE ankommen.
- Fig. 5 zeigt die Platzierung des 12-Bit-Befehls, der Quelle, des Zielortes oder Adressenfeldes in der 16-Bit- Parzelle, wie in der Mitteilungswarteschlange gespeichert. Der Körper des Pakets ist an den Speicherplätzen n bis n+3 gespeichert. Mehrere Kopien der Kopf-Phits des Pakets sind an den Speicherplätzen n+4 bis n+7 gespeichert. Die Mitteilungszahllastdaten sind vorzugsweise in dem lokalen Speicher in den Mitteilungswarteschlangenplätzen mit geltenden Ein-Fehler-Korrektur-Doppelfehler-Detektions-(SECDED)-Überprüfungsbits gespeichert, wie sie vom übertragenden Prozessor erzeugt sind. Wenn ein Speicherfehler in der Mitteilungswarteschlange DRAM, der die Daten hält, auftritt, wird dieser zu detektieren sein, wenn der Prozessor die Daten lädt.
- Der Mitteilungskopf ist nicht von den SECDED-Überprüfungsbits begleitet. Stattdessen hat jede 16-Bit-Parzelle des Kopfes 2 bezüglich der Bitpositionen 2¹² und 2¹³ paritätische Bits. Das Bit 2¹&sup5; ist normalerweise 0. Das Bit 2¹&sup4; ist immer 0. Das Bit 2¹&sup5; wird in der Befehlsparzelle auf 1 gesetzt, um anzuzeigen, wenn ein Netzwerkfehler aufgetreten ist, um zwischen Mitteilungen und Netzwerkfehlermitteilungen zu unterscheiden.
- Obwohl die paritätischen Bits in den Kopf-Phits des Mitteilungspaketes die Netzwerkschnittstelle in die Lage versetzen, zu überprüfen, ob während einer Übertragung ein Fehler aufgetreten ist, verwendet der Mikroprozessor nicht die paritätischen Bits, um zu überprüfen, ob ein Fehler während dem Lesen der Kopf-Phits aus der Mitteilungswarteschlange aufgetreten ist. Um zu ermöglichen, dass der Mikroprozessor Fehler detektiert, wenn die Kopf-Phits aus der Mitteilungswarteschlange gelesen werden, platziert der Unterstützungsschaltungsaufbau mehrere Kopien der Kopf-Phits in der Mitteilungswarteschlange.
- Um Fehler in den Kopf-Phits zu überprüfen, vergleicht die Mitteilungshandhabungssoftware das Wort der Kopf-Phit-Information, die an dem Platz n+4 gespeichert ist, mit dem Wort der Kopf-Phit-Information, die an dem Platz N+6 gespeichert ist, und zwar unter Verwendung eines bitweisen Exklusiv-ODER. Ähnlich vergleicht die Mitteilungshandhabungssoftware das Wort der Kopf-Phit-Information, das am Platz N+5 gespeichert ist, mit dem Wort der Kopf-Phit-Information, die am Platz N+7 gespeichert ist (wiederum bezugnehmend auf Fig. 5).
- Wenn das Wort am Platz N+4 mit dem Wort am Platz N+6 übereinstimmt und das Wort am Platz N+5 mit dem Wort am Platz N+7 übereinstimmt, wurden die Kopf-Phits des Pakets während dem Übertragen von der Mitteilungswarteschlange zum Mikroprozessor nicht zerstört. Wenn die Worte nicht übereinstimmen, haben ein oder mehrere der Kopf-Phit-Bits ihren Wert beim Übertragen von der Mitteilungswarteschlange auf den Mikroprozessor geändert.
- Wenn die Mitteilungshandhabungssoftware einen Fehler detektiert, muss die Software bestimmen, welches Kopf-Phit einen Fehler enthält. Um dies durchzuführen, untersucht die Software jedes Kopf-Phit in dem Wort, das aus der Mitteilungswarteschlange gelesen worden ist und erzeugt einen neuen Satz von paritätischen Bits für das Kopf-Phit. Wenn die neuen paritätischen Bits mit den paritätischen Bits übereinstimmen, die aus der Mitteilungswarteschlange gelesen worden sind, ist das Kopf-Phit nicht zerstört. Wenn die neuen paritätischen Bits nicht mit den paritätischen Bits übereinstimmen, die aus der Mitteilungswarteschlange gelesen worden sind, ist das Kopf-Phit zerstört.
- Wenn der Mikroprozessor den Körper der Mitteilung aus der Mitteilungswarteschlange liest, signalisiert der Mikroprozessor den Unterstützungsschaltungsaufbau, das er an den Worten SECDED durchführen möchte. Der Unterstützungsschaltungsaufbau schickt dann den Körper der Mitteilung an den Mikroprozessor mit einem Datenbestätigungscode, der bewirkt, dass die SECDED-Hardware in dem Mikroprozessor in die Lage versetzt wird, Fehler in den Mitteilungsdaten zu detektieren und/oder zu korrigieren.
- Für den Mikroprozessor ist es möglich, dass er von einem Mitteilungswarteschlangen-Voll-Fehler benachrichtigt wird, wenn noch bis zu vier Mitteilungen in dem Einschreibpuffer sind. Wenn der Mikroprozessor einen Interrupt empfängt, der den Warteschlange-Voll-Fehler anzeigt, leert der Mikroprozessor den Einschreibpuffer.
- Wenn der Unterstützungsschaltungsaufbau jede der vier Mitteilungseinschreibungen von dem Mikroprozessor empfängt, senkt der Unterstützungsschaltungsaufbau den Mitteilungswarteschlangengrenzzähler in Vorbereitung für mögliche NACK-Pakete und schickt die Mitteilungen an die Ziel-PEs. In diesem Fall wird der Wert des Grenzzählers fortgesetzt mit jeder gesendeten Mitteilung negativ werden. Der negative Wert zeigt an, dass die Mitteilungswarteschlange vollständig belegt ist und jedes empfangene NACK-Paket in einem der 16 reservierten Plätze für Überlaufpakete gespeichert wird.
- Zusätzlich zu möglichen NACK-Paketen von den Mitteilungen, die in dem Einschreibpuffer gespeichert waren, kann der Unterstützungsschaltungsaufbau eine Fehlermitteilung zu jedem Zeitpunkt empfangen. Wenn der Unterstützungsschaltungsaufbau eine Fehlermitteilung empfängt und die Mitteilungswarteschlange voll ist, speichert der Unterstützungsschaltungsaufbau die Fehlermitteilung noch in der Mitteilungswarteschlange und senkt den Grenzzähler um 1. Weil der Grenzzähler bereits negativ ist, wird dadurch auch einer der reservierten 16 Schlitze in der Mitteilungswarteschlange für Überlaufpakete verwendet.
- Ein weiterer Zustand, der möglicherweise auftreten könnte, wenn ein PE 4080 Mitteilungseinschreibungen ausgibt und noch keines der ACK-Pakete empfangen hat. In diesem Fall ist die Mitteilungswarteschlange voll, aber leer. Wenn dies auftritt, muss die Software periodisch den Wert des MQ_LIR- Registers lesen und das Bit 212 des Registers überprüfen. Wenn dieses Bit auf 1 gesetzt ist, ist der Wert des Grenzzählers negativ und es sollten keine weiteren Mitteilungseinschreibungen ausgegeben werden. Wenn das Bit auf 0 gesetzt ist, ist der Wert des Grenzzählers positiv und Mitteilungseinschreibungen können ausgegeben werden.
- Wenn ein Warteschlange-Voll-Zustand existiert (MQ_LC < = 0) und ein Prozessor versucht, eine Mitteilung abzuschicken, tritt ein Fehlerinterrupt auf.
- Weil der Prozessor eine Mitteilung haben könnte, die zum Zeitpunkt des Detektierens des Warteschlange-Voll-Zustandes darauf wartet, abgeschickt zu werden, wird der überschüssige Platz in der lokalen Warteschlange ("Slack") aufrechterhalten, um zu ermöglichen, dass der Platz für mögliche NACKs und den wartenden Mitteilungen belegt werden kann.
- Slack wird durch Initiieren des MQ_LC mit einem Wert, etwas kleiner als der maximal zur Verfügung stehende Warteschlan genplatz, errichtet. MQ_LC darf negativ werden, wenn eine Warteschlange-Voll-Sendung detektiert ist, aber nur, um die gesicherten Mitteilungen zu senden. Mitteilungen, die von externen Knoten ankommen, werden zurückgewiesen, wenn das MQ_LC kleiner oder gleich 0 ist. NACKs und ACKs können zu jedem Zeitpunkt, ungeachtet des Wertes von MQ_LC, ankommen.
- Die Größe des Slacks, die erforderlich ist, um das Pipeline-Weiterlaufen bei Warteschlange voll in Rechnung zu stellen, kann berechnet werden, indem den Prozessoreinschreibpuffern, die die ausgehenden Mitteilungsdaten halten, bevor diese durch das Ringnetzwerk übertragen werden (4 bei dem bevorzugten Mikroprozessor), plus der fehlerhaften Mitteilung an der externen Busschnittstelle (1) plus zusätzlichen Einschreibungen, die in der Lade-/Speicherpipeline hinter den Einschreibpuffern sein können (3 Speicher gleich einem oder mehreren Mitteilungsfragmenten) für eine Summe 6 bei der bevorzugten Ausführungsform addiert werden.
- Zusätzliche Slacks müssen enthalten sein, um Platz für Netzwerkfehlermitteilungen zu schaffen (siehe nächster Abschnitt).
- Es gibt zwei Arten von Netzwerkpaketfehlern: ein fehlgeleiteter Paketfehler und ein Paketparitätsfehler. Wenn die Netzwerkschnittfläche ein Paket empfängt und der Wert des Ziel-Phits nicht mit dem Wert für das Ziel-PE übereinstimmt, tritt ein fehlgeleiteter Paketfehler auf. Wenn die Netzwerkschnittfläche einen Paritätsfehler in dem Kopf-Phit eines Pakets detektiert, tritt ein Paketparitätsfehler auf. Die Kopfparzellenparitätsbits werden durch die Netzwerkschnittstellenhardware bei Ankunft irgendeines Pakettyps überprüft. Wenn irgendeine Parität nicht mit den übertragenen Paritätsbits übereinstimmt, wird das Paket von der Hardware in eine Netzwerkfehlermitteilung umgewandelt und in der Mitteilungswarteschlange gespeichert.
- Die Mitteilungshandhabungssoftware kann bestimmen, ob eine Mitteilung eine Fehlermitteilung ist, indem das Bit 215 der Befehlsparzelle getestet wird.
- Für den Fall eines fehlgeleiteten Paketfehlers kann das Empfangs-PE versuchen, die Mitteilung zu dem geeigneten Ziel-PE weiterzuleiten. In diesem Fall muss der Fehler nicht notwendigerweise zu einer Systemstörung führen.
- Virtuell sind alle Netzwerkstörungen, die unter Verwendung der Kopfparität detektiert werden, fatal. Die Information, die in der Mitteilungswarteschlange gefangen ist, soll eine Hilfe für die Problembewältigung sein, anstatt dass sie ein Mittel für die Gesamtsystemwiederherstellung schafft.
- Wenn irgend ein Netzwerkpaketfehler auftritt, kehrt die Netzwerkschnittfläche das empfangene Paket um in eine Fehlermitteilung, indem das Bit 2¹&sup5; des Befehls-Phits auf 1 gesetzt wird. Die Netzwerkschnittstelle schickt dann die Fehlermitteilung an das geeignete PE im Knoten.
- Die Fehlermitteilung wird so behandelt, als wenn sie eine ankommende Mitteilung sei, ungeachtet des Pakettyps. Sie wird in der Mitteilungswarteschlange durch die Netzwerkschnittstellenhardware gespeichert und der Fehlerinterrupt für den Prozessor wird sichergestellt. Es wird kein ACK geschickt.
- Nur das erste Fehlerpaket wird eingefangen. Weitere Fehlermitteilungen werden einfach solange nicht berücksichtigt, bis der Fehlerzustand durch die Software gelöscht ist.
- Weil eine Netzwerkfehlermeldung zu jedem Zeitpunkt auftreten kann, einschließlich dann, wenn bereits ein Warte schlange-Voll-Zustand existiert, muss Platz für eine zusätzliche Mitteilung in der Slack-Berechnung vorgesehen werden, um zu ermöglichen, dass eine Fehlermitteilung absorbiert wird. Dies bringt die Slack-Summe auf 7 Mitteilungen.
- Die Netzwerkschnittstelle kann eine Fehlermeldung aus irgendeinem der sieben Pakettypen erzeugen, dem Mitteilungspaket, dem ACK-Paket oder dem NACK-Paket. Die Fig. 12, 13 und 14 zeigen das Format der Fehlermitteilungen, wie sie in der Mitteilungswarteschlange gespeichert sind.
Claims (19)
1. Multiprozessor-Computersystem mit einer Anzahl von
Verarbeitungselementen, die durch ein n-dimensionales
Verbindungsnetzwerk miteinander verbunden sind, wobei jedes
Verarbeitungselement einen Prozessor und einen lokalen
Speicher hat, wobei global adressierbare Teile eines lokalen
Speichers jedes Verarbeitungselementes einen verteilten
Speicher bilden, das Multiprozessor-Computersystem eine
Mitteilungseinrichtung hat mit einem Netzwerkrouter zum
Übertragen einer Mitteilung von einem
QuellenVerarbeitungselement auf ein Ziel-Verarbeitungselement über das
Verbindungsnetzwerk, eine Mitteilungswarteschlange in einem
bezeichneten Bereich des lokalen Speichers des
Ziel-Verarbeitungselementes zum Speichern der übertragenen Mitteilung
und einem Ende-Adressenverweis zum Indexieren in der
Mitteilungswarteschlange, um einen Ort anzuzeigen, wo die
übertragene Mitteilung in der Mitteilungswarteschlange zu
speichern ist, wobei die Mitteilungseinrichtung
gekennzeichnet ist durch:
Puffermittel in dem Quellen-Verarbeitungselement, um die
Mitteilung zusammenzustellen, die von dem
Quellen-Verarbeitungselement zum Ziel-Verarbeitungselement geschickt werden
soll, auf der Basis von Information, die von dem Prozessor
des Quellen-Verarbeitungselementes geschaffen wird;
Interruptmittel zum Schaffen eines Interrupts am Prozessor
des Ziel-Verarbeitungselementes in Antwort auf die
Mitteilung, die in der Mitteilungswarteschlange gespeichert ist,
und
einen Kopf-Adressenverweis zum Indexieren eines Ortes, wo
die Mitteilung in der Mitteilungswarteschlange gespeichert
ist, in die Warteschlange, zum Auslesen durch den Prozessor
des Ziel-Verarbeitungs-Elementes in Antwort auf den
Interrupt.
2. Multiprozessor-Computersystem nach Anspruch 1,
wobei die Mitteilungseinrichtung weiterhin aufweist:
einen Warteschlangen-Grenzzähler zum Schaffen eines
Grenzzählwertes, der repräsentativ für die verbleibenden zur
Verfügung stehenden Plätze in der Mitteilungswarteschlange
ist.
3. Multiprozessor-Computersystem nach Anspruch 2,
wobei die Mitteilungseinrichtung weiterhin aufweist:
Mittel, die bewirken, daß der Warteschlangengrenzzähler den
Grenzzählwert erhöht, wenn Mitteilungen aus der
Mitteilungswarteschlage gelesen werden; und
Mittel, die bewirken, daß der Warteschlangen-Grenzzähler
den Warteschlangen-Grenzzählwert vermindert, wenn
Mitteilungen in der Mitteilungswarteschlange gespeichert werden.
4. Multiprozessor-Computersystem nach einem der
vorstehenden Ansprüche,
wobei die Mitteilungseinrichtung weiterhin aufweist:
Mittel zum Erzeugen einer Bestätigungsmitteilung basierend
auf dem Grenzzählwert, der anzeigt, daß ein zur Verfügung
stehender Platz zum Speichern der übertragenen Mitteilung
vorhanden ist, und zum Erzeugen einer nichtbestätigenden
Mitteilung, basierend auf dem Grenzzählwert, die anzeigt,
daß für das Speichern der übertragenen Mitteilung keine
Plätze zur Verfügung stehen.
5. Multiprozessor-Computersystem nach Anspruch 4,
wobei das Quellen-Verarbeitungselement eine
Mitteilungswarteschlange und einen Warteschlangen-Grenzzähler aufweist,
und wobei die Mitteilungseinrichtung weiterhin aufweist:
Mittel, die bewirken, daß der Warteschlangen-Grenzzähler
des Quelle-Verarbeitungselementes den Grenzzählwert
vermin
dert, nachdem die Mitteilung in den Puffermitteln
zusammengestellt ist, um dadurch einen Platz in der
Mitteilungswarteschlange des Quelle-Verarbeitungselementes für eine nicht
bestätigte Mitteilung zu reservieren, die von dem
Ziel-Verarbeitungselement in Antwort auf die übertragene Mitteilung
erzeugt worden ist.
6. Multiprozessor-Computersystem nach Anspruch 4 oder 5,
wobei die Mitteilungseinrichtung weiterhin aufweist:
Mittel, die bewirken, daß der Warteschlangen-Grenzzähler
des Quelle-Verarbeitungselementes den Grenzzählwert erhöht,
in Antwort auf das Empfangen einer Bestätigungsmitteilung
von dem Ziel-Verarbeitungselement, welche anzeigt, daß das
Ziel-Verarbeitungselement die übertragene Mitteilung
angenommen hat.
7. Multiprozessor-Computersystem nach einem der
vorstehenden Ansprüche,
wobei der Ende-Adressenverweis angeordnet ist, um die
Mitteilungs-Warteschlange zirkular zu indexieren.
8. Multiprozessor-Computersystem nach Anspruch 7,
wobei die Mitteilungs-Warteschlange ein first-in/first-out-
Kreispuffer ist.
9. Multiprozessor-Computersystem nach einem der
vorstehenden Ansprüche, wobei der Ende-Adressenverweis in Form von
Hardware implementiert ist.
10. Multiprozessor-Computersystem nach einem der Ansprüche
1 bis 8,
wobei der Kopf-Adressenverweis in Form von Software
implementiert ist.
11. Multiprozessor-Computersystem nach einem der
vorstehenden Ansprüche, wobei die Mitteilungseinrichtung weiterhin
aufweist:
Mittel zum Detektieren möglicher Fehlerbedingungen und zum
Schaffen eines Fehlerinterrupts am Prozessor des
Ziel-Verarbeitungselementes in Antwort auf das Detektieren einer
Fehler-Bedingung.
12. Mulitprozessor-Computersystem nach Anspruch 12,
wobei die Mitteilungseinrichtung weiterhin aufweist:
Mittel zum Antworten auf eine Fehlerbedingung, die anzeigt,
daß eine Mitteilung während der Übertragung von dem Quelle-
Verarbeitungselement zum Ziel-Verarbeitungselement
verstümmelt worden ist, um die verstümmelte Mitteilung in eine
Fehlermitteilung umzuformen, die in der
Mitteilungs-Warteschlange zur Wiederauffindung während der
Software-Fehlerbeseitigung gespeichert wird.
13. Verfahren zum Durchleiten von Mitteilungen in einem
Multiprozessor-Computersystem mit einer Anzahl von
Verarbeitungselementen, die durch ein n-dimensionales
Verbindungsnetzwerk verbunden sind, wobei jedes
Verarbeitungselement einen Prozessor und einen lokalen Speicher hat, wobei
global adressierbare Teile des lokalen Speichers jedes
Verarbeitungselementes einen verteilten Speicher bilden, wobei
das Verfahren die Schritte aufweist:
Zusammenstellen einer Mitteilung, die von einem
Quelle-Verarbeitungselement zu einem Ziel-Verarbeitungselement
geschickt werden soll, basierend auf der Information, die von
dem Prozessor des Quelle-Verarbeitungselementes geschaffen
worden ist;
Übertragen der zusammengestellten Mitteilung von dem
Quelle-Verarbeitungselement zu dem
Ziel-Verarbeitungselement über das Verbindungsnetzwerk;
Indexieren in einen bezeichneten Bereich des lokalen
Speichers des Ziel-Verarbeitungselementes, um einen Platz
anzuzeigen, wo die übertragene Mitteilung zu speichern ist;
Speichern der übertragenen Mitteilung an dem indexierten
Platz in dem bezeichneten Bereich des lokalen Speichers des
Ziel-Verarbeitungselementes;
Schaffen eines Interrupt am Prozessor des
Ziel-Verarbeitungselementes in Antwort auf die Mitteilung, die an dem
indexierten Platz gespeichert worden ist; und
Indexieren in den bezeichneten Bereich des lokalen
Speichers des Ziel-Verarbeitungselementes, um einen Platz
anzuzeigen, wo die Mitteilung gespeichert ist zum Auslesen
durch den Prozessor des Ziel-Verarbeitungselementes in
Antwort auf den Interrupt.
14. Multiprozessor-Computersystem mit einer Anzahl von
Verarbeitungselementen, die durch ein n-dimensionales
Verbindungsnetz miteinander verbunden sind, wobei jedes
Verarbeitungselement einen Prozessor, einen lokalen Speicher mit
einem bezeichneten Mitteilungs-Warteschlangenbereich und
einen Shell-Schaltkreis hat, wobei jeder Shell-Schaltkreis
einen Netzwerkrouter zum Übertragen von zusammengestellten
Mitteilungen von einem Quellen-Verarbeitungselement zu
einem Ziel-Verarbeitungselement über das Verbindungsnetzwerk
hat, die in dem bezeichneten
Mitteilungs-Warteschlagenbereich des lokalen Speichers des Ziel-Verarbeitungselementes
gespeichert werden, wobei das Multiprozessor-Computersystem
einen Ende-Adressenverweis zum Indexieren in den
bezeichneten Mitteilungs-Warteschlagenbereich des lokalen Speichers
des Ziel-Verarbeitungselementes hat, um einen Platz
anzuzeigen, wo die übertragene Mitteilung zu speichern ist,
wobei das Multiprozessor-Computersystem gekennzeichnet ist
durch:
Puffermittel in jedem Shell-Schaltkreis zum Zusammenstellen
einer Mitteilung, die von einem
Quellen-Verarbeitungselement zu einem Ziel-Verarbeitungselement geschickt werden
soll, basierend auf Information, die vom Prozessor eines
Quellen-Verarbeitungselementes geliefert worden ist;
wobei der Ende-Adressenverweis einen
Ende-Adressenverweisschaltkreis in jedem Shell-Schaltkreis aufweist;
einen Interrupt-Schaltkreis in jedem Shell-Schaltkreis, der
am Prozessor des Ziel-Verarbeitungselementes einen
Interrupt in Antwort auf die Mitteilung, die in dem bezeichneten
Mitteilungs-Warteschlagenbereich gespeichert ist, schafft;
und
eine Mitteilungseinrichtungssoftware, die
Kopf-Adressenverweise schafft, um Plätze anzuzeigen, wo Mitteilungen in dem
bezeichneten Mitteilungs-Warteschlagenbereichen der lokalen
Speicher der Ziel-Verarbeitungselemente gespeichert sind,
zum Auslesen durch die Prozessoren der
Ziel-Verarbeitungselemente in Antwort auf die Interrupts von dem
Interruptschaltkreis der Ziel-Verarbeitungselemente.
15. Verarbeitungselement zur Verwendung in einem
Multiprozessor-Computersystem mit einer Anzahl von
Verarbeitungselementen, die durch ein n-dimensionales
Verbindungsnetzwerk miteinander verbunden sind, mit einer
Mitteilungseinrichtung, die einen Netzwerkrouter hat zum Übertragen einer
Mitteilung, die in einem Puffer eines
Quelle-Verarbeitungselementes zusammengestellt ist, auf das
Verarbeitungselement über das Verbindungsnetzwerk, wobei das
Verarbeitungselement aufweist:
einen Prozessor;
einen lokalen Speicher mit einem global adressierbaren
Teil, der so angeordnet ist, daß er einen verteilten
Speicher des Systems mit global adressierbaren Teilen des
lokalen Speichers der anderen Verarbeitungselemente bildet;
eine Mitteilungs-Warteschlange in einem bezeichneten
Bereich des lokalen Speichers zum Speichern der übertragenen
Mitteilung;
einen Ende-Adressenverweis zum Indexieren in die
Mitteilungswarteschlange, um einen Platz anzuzeigen, wo die
über
tragene Mitteilung in den Mitteilungsschlangen zu speichern
ist,
dadurch gekennzeichnet, daß das
Verarbeitungselement weiterhin aufweist:
Interruptmittel zum Schaffen eines Interrupts am Prozessor
in Antwort auf die Mitteilung, die in der
Mitteilungswarteschlange gespeichert ist; und
einen Kopf-Adressenverweis zum Indexieren in die
Mitteilungsschlange, um einen Platz anzuzeigen, wo die Mitteilung
in der Mitteilungswarteschlange gespeichert ist, zum
Auslesen durch den Prozessor in Antwort auf den Interrupt.
16. Verarbeitungselement nach Anspruch 15,
wobei der Ende-Adressenverweis so angeordnet ist, daß er
die Mitteilungswarteschlange zirkular indexiert.
17. Verarbeitungselement nach Anspruch 16,
wobei die Mitteilungs-Warteschlange ein first-in/first-out-
Kreispuffer ist.
18. Verarbeitungselement nach einem der Ansprüche 15 bis
17,
wobei der Ende-Adressenverweis in Form von Hardware
implementiert ist.
19. Verarbeitungselement nach einem der Ansprüche 15 bis
18,
wobei der Kopf-Adressenverweis in Form von Software
implementiert ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/166,443 US5581705A (en) | 1993-12-13 | 1993-12-13 | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
PCT/US1994/014349 WO1995016967A1 (en) | 1993-12-13 | 1994-12-13 | Message facility for massively parallel processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69419525D1 DE69419525D1 (de) | 1999-08-19 |
DE69419525T2 true DE69419525T2 (de) | 2000-02-03 |
Family
ID=22603327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69419525T Expired - Fee Related DE69419525T2 (de) | 1993-12-13 | 1994-12-13 | Nachrichten-einrichtung für ein massiv paralleles verarbeitungsystem |
Country Status (5)
Country | Link |
---|---|
US (1) | US5581705A (de) |
EP (1) | EP0734554B1 (de) |
JP (1) | JPH09506727A (de) |
DE (1) | DE69419525T2 (de) |
WO (1) | WO1995016967A1 (de) |
Families Citing this family (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3639319B2 (ja) * | 1994-01-25 | 2005-04-20 | 富士通株式会社 | 並列計算機システム,データ転送制御方法および送受信制御装置 |
US6247064B1 (en) * | 1994-12-22 | 2001-06-12 | Unisys Corporation | Enqueue instruction in a system architecture for improved message passing and process synchronization |
US5925099A (en) * | 1995-06-15 | 1999-07-20 | Intel Corporation | Method and apparatus for transporting messages between processors in a multiple processor system |
US5659758A (en) * | 1995-07-07 | 1997-08-19 | Sun Microsystems, Inc. | Interrupt modular for receiving bursty high speed network traffic |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
DE69525531T2 (de) * | 1995-09-04 | 2002-07-04 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Dataverarbeitungssystem mit ringförmiger Warteschlange in einem Seitenspeicher |
JP3120963B2 (ja) * | 1995-12-14 | 2000-12-25 | 株式会社日立製作所 | メッセージを転送する方法およびメッセージを転送するシステム |
US5841973A (en) * | 1996-03-13 | 1998-11-24 | Cray Research, Inc. | Messaging in distributed memory multiprocessing system having shell circuitry for atomic control of message storage queue's tail pointer structure in local memory |
US5864738A (en) * | 1996-03-13 | 1999-01-26 | Cray Research, Inc. | Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller |
US6006255A (en) * | 1996-04-05 | 1999-12-21 | International Business Machines Corporation | Networked computer system and method of communicating using multiple request packet classes to prevent deadlock |
US5951657A (en) * | 1996-06-19 | 1999-09-14 | Wisconsin Alumni Research Foundation | Cacheable interface control registers for high speed data transfer |
US5900023A (en) * | 1996-06-28 | 1999-05-04 | Cray Research Inc. | Method and apparatus for removing power-of-two restrictions on distributed addressing |
US5948060A (en) * | 1997-01-24 | 1999-09-07 | International Business Machines Corporation | Speeding-up communication rates on links transferring data structures by a method of handing scatter/gather of storage blocks in commanded computer systems |
US5865718A (en) * | 1997-01-27 | 1999-02-02 | Beckman Instruments, Inc. | System and method of operating a centrifuge utilizing a protocol record database |
US5938747A (en) * | 1997-03-13 | 1999-08-17 | Adapter, Inc. | Hardware command block delivery queue for host adapters and other devices with onboard processors |
US6285679B1 (en) * | 1997-08-22 | 2001-09-04 | Avici Systems, Inc. | Methods and apparatus for event-driven routing |
US6370145B1 (en) | 1997-08-22 | 2002-04-09 | Avici Systems | Internet switch router |
US6446253B1 (en) * | 1998-03-20 | 2002-09-03 | Novell, Inc. | Mechanism for achieving transparent network computing |
KR19990079607A (ko) * | 1998-04-07 | 1999-11-05 | 김영환 | 이동통신 시스템의 메시지 큐 관리방법 |
US6205532B1 (en) | 1998-05-22 | 2001-03-20 | Avici Systems, Inc. | Apparatus and methods for connecting modules using remote switching |
US7013305B2 (en) | 2001-10-01 | 2006-03-14 | International Business Machines Corporation | Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange |
US6216174B1 (en) | 1998-09-29 | 2001-04-10 | Silicon Graphics, Inc. | System and method for fast barrier synchronization |
US6229813B1 (en) * | 1998-11-25 | 2001-05-08 | Alcatel Canada Inc. | Pointer system for queue size control in a multi-task processing application |
JP2003512746A (ja) * | 1999-05-21 | 2003-04-02 | エイヴィシー・システムズ | フリット・キャッシングを備えたファブリック・ルータ |
US6457146B1 (en) * | 1999-09-30 | 2002-09-24 | Silicon Graphics, Inc. | Method and apparatus for processing errors in a computer system |
US6408409B1 (en) * | 1999-11-15 | 2002-06-18 | Sun Microsystems, Inc. | Method and apparatus for ring buffer flow error detection |
US7106742B1 (en) * | 2000-01-13 | 2006-09-12 | Mercury Computer Systems, Inc. | Method and system for link fabric error detection and message flow control |
US6799317B1 (en) | 2000-06-27 | 2004-09-28 | International Business Machines Corporation | Interrupt mechanism for shared memory message passing |
US7174372B1 (en) | 2000-09-13 | 2007-02-06 | Fortinet, Inc. | System and method for managing router metadata |
US7444398B1 (en) | 2000-09-13 | 2008-10-28 | Fortinet, Inc. | System and method for delivering security services |
US7111072B1 (en) | 2000-09-13 | 2006-09-19 | Cosine Communications, Inc. | Packet routing system and method |
US7272643B1 (en) | 2000-09-13 | 2007-09-18 | Fortinet, Inc. | System and method for managing and provisioning virtual routers |
US7574495B1 (en) * | 2000-09-13 | 2009-08-11 | Fortinet, Inc. | System and method for managing interworking communications protocols |
US7389358B1 (en) * | 2000-09-13 | 2008-06-17 | Fortinet, Inc. | Distributed virtual system to support managed, network-based services |
US8250357B2 (en) | 2000-09-13 | 2012-08-21 | Fortinet, Inc. | Tunnel interface for securing traffic over a network |
US7487232B1 (en) | 2000-09-13 | 2009-02-03 | Fortinet, Inc. | Switch management system and method |
SE0003398D0 (sv) * | 2000-09-22 | 2000-09-22 | Ericsson Telefon Ab L M | Optimization of a pipelined processor system |
GB2368247A (en) * | 2000-10-18 | 2002-04-24 | Power X Ltd | Method and apparatus for regulating process state control messages |
US7181547B1 (en) | 2001-06-28 | 2007-02-20 | Fortinet, Inc. | Identifying nodes in a ring network |
US7240347B1 (en) * | 2001-10-02 | 2007-07-03 | Juniper Networks, Inc. | Systems and methods for preserving the order of data |
US7162608B2 (en) * | 2001-10-24 | 2007-01-09 | Cray, Inc. | Translation lookaside buffer-based memory system and method for use in a computer having a plurality of processor element |
JP2003316595A (ja) * | 2002-04-23 | 2003-11-07 | Casio Comput Co Ltd | インストール方法、ファイル更新方法、プログラム及びコンピュータシステム |
US7376125B1 (en) | 2002-06-04 | 2008-05-20 | Fortinet, Inc. | Service processing switch |
US7340535B1 (en) | 2002-06-04 | 2008-03-04 | Fortinet, Inc. | System and method for controlling routing in a virtual router system |
US7177311B1 (en) * | 2002-06-04 | 2007-02-13 | Fortinet, Inc. | System and method for routing traffic through a virtual router-based network switch |
US7203192B2 (en) | 2002-06-04 | 2007-04-10 | Fortinet, Inc. | Network packet steering |
US7161904B2 (en) * | 2002-06-04 | 2007-01-09 | Fortinet, Inc. | System and method for hierarchical metering in a virtual router based network switch |
US7415594B2 (en) | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
EP1408417A1 (de) * | 2002-08-01 | 2004-04-14 | Fujitsu Siemens Computers, LLC | Effiziente Benachrichtung in einem parallelen Verarbeitungsystem |
US7096383B2 (en) | 2002-08-29 | 2006-08-22 | Cosine Communications, Inc. | System and method for virtual router failover in a network routing system |
US7953588B2 (en) | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
US8108843B2 (en) | 2002-09-17 | 2012-01-31 | International Business Machines Corporation | Hybrid mechanism for more efficient emulation and method therefor |
US9043194B2 (en) * | 2002-09-17 | 2015-05-26 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor memory consistency |
US7146607B2 (en) | 2002-09-17 | 2006-12-05 | International Business Machines Corporation | Method and system for transparent dynamic optimization in a multiprocessing environment |
US7496494B2 (en) | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US7266120B2 (en) | 2002-11-18 | 2007-09-04 | Fortinet, Inc. | System and method for hardware accelerated packet multicast in a virtual routing system |
US7355601B2 (en) * | 2003-06-30 | 2008-04-08 | International Business Machines Corporation | System and method for transfer of data between processors using a locked set, head and tail pointers |
US6862027B2 (en) * | 2003-06-30 | 2005-03-01 | Microsoft Corp. | System and method for parallel execution of data generation tasks |
US7720095B2 (en) | 2003-08-27 | 2010-05-18 | Fortinet, Inc. | Heterogeneous media packet bridging |
JP2005132525A (ja) * | 2003-10-29 | 2005-05-26 | Toyota Industries Corp | 産業車輌における立席型運転席用背もたれ構造 |
US7840757B2 (en) * | 2004-07-29 | 2010-11-23 | International Business Machines Corporation | Method and apparatus for providing high speed memory for a processing unit |
US7499419B2 (en) | 2004-09-24 | 2009-03-03 | Fortinet, Inc. | Scalable IP-services enabled multicast forwarding with efficient resource utilization |
US8332592B2 (en) * | 2004-10-08 | 2012-12-11 | International Business Machines Corporation | Graphics processor with snoop filter |
US20060080511A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Enhanced bus transactions for efficient support of a remote cache directory copy |
US7577794B2 (en) | 2004-10-08 | 2009-08-18 | International Business Machines Corporation | Low latency coherency protocol for a multi-chip multiprocessor system |
US7305524B2 (en) * | 2004-10-08 | 2007-12-04 | International Business Machines Corporation | Snoop filter directory mechanism in coherency shared memory system |
US7475190B2 (en) * | 2004-10-08 | 2009-01-06 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
US20070115979A1 (en) * | 2004-11-18 | 2007-05-24 | Fortinet, Inc. | Method and apparatus for managing subscriber profiles |
US7808904B2 (en) * | 2004-11-18 | 2010-10-05 | Fortinet, Inc. | Method and apparatus for managing subscriber profiles |
US7499452B2 (en) * | 2004-12-28 | 2009-03-03 | International Business Machines Corporation | Self-healing link sequence counts within a circular buffer |
US20060140122A1 (en) * | 2004-12-28 | 2006-06-29 | International Business Machines Corporation | Link retry per virtual channel |
US7549151B2 (en) * | 2005-02-14 | 2009-06-16 | Qnx Software Systems | Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment |
US20060190655A1 (en) * | 2005-02-24 | 2006-08-24 | International Business Machines Corporation | Apparatus and method for transaction tag mapping between bus domains |
US7275125B2 (en) * | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Pipeline bit handling circuit and method for a bus bridge |
US7234017B2 (en) * | 2005-02-24 | 2007-06-19 | International Business Machines Corporation | Computer system architecture for a processor connected to a high speed bus transceiver |
US7469312B2 (en) * | 2005-02-24 | 2008-12-23 | International Business Machines Corporation | Computer system bus bridge |
US7275124B2 (en) | 2005-02-24 | 2007-09-25 | International Business Machines Corporation | Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability |
US7194567B2 (en) * | 2005-02-24 | 2007-03-20 | International Business Machines Corporation | Method and system for ordering requests at a bus interface |
US7330925B2 (en) * | 2005-02-24 | 2008-02-12 | International Business Machines Corporation | Transaction flow control mechanism for a bus bridge |
US7206886B2 (en) * | 2005-02-24 | 2007-04-17 | International Business Machines Corporation | Data ordering translation between linear and interleaved domains at a bus interface |
US7899557B2 (en) * | 2005-03-01 | 2011-03-01 | Asm Japan K.K. | Input signal analyzing system and control apparatus using same |
US7840682B2 (en) | 2005-06-03 | 2010-11-23 | QNX Software Systems, GmbH & Co. KG | Distributed kernel operating system |
US8667184B2 (en) | 2005-06-03 | 2014-03-04 | Qnx Software Systems Limited | Distributed kernel operating system |
US7680096B2 (en) * | 2005-10-28 | 2010-03-16 | Qnx Software Systems Gmbh & Co. Kg | System for configuring switches in a network |
GB0524348D0 (en) * | 2005-11-30 | 2006-01-04 | Ibm | Method and system for concurrent processing of list items |
GB2435335A (en) * | 2006-02-21 | 2007-08-22 | Sony Computer Entertainment Inc | Multi-processor emulation by a multi-processor |
JP2007272694A (ja) * | 2006-03-31 | 2007-10-18 | Fujitsu Ltd | 通信インターフェース装置及び通信方法 |
CN100538690C (zh) * | 2006-04-10 | 2009-09-09 | 中国科学院研究生院 | 一种多cpu系统及cpu之间消息传递的方法 |
KR100907830B1 (ko) * | 2007-05-30 | 2009-07-14 | 주식회사 신한은행 | 병렬 처리된 기업업무통합 시스템에 대한 전문 직렬화 방법및 시스템과 이를 위한 기록매체 |
US8051338B2 (en) * | 2007-07-19 | 2011-11-01 | Cray Inc. | Inter-asic data transport using link control block manager |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
CN104040541B (zh) | 2011-12-08 | 2018-04-10 | 甲骨文国际公司 | 用于更高效地使用存储器至cpu带宽的技术 |
US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US9606921B2 (en) | 2013-09-21 | 2017-03-28 | Oracle International Corporation | Granular creation and refresh of columnar data |
US10599356B2 (en) | 2014-02-11 | 2020-03-24 | Hiveio Inc. | Aggregating memory to create a network addressable storage volume for storing virtual machine files |
WO2016109778A1 (en) | 2014-12-31 | 2016-07-07 | Servicenow, Inc. | Failure resistant distributed computing system |
US10073885B2 (en) | 2015-05-29 | 2018-09-11 | Oracle International Corporation | Optimizer statistics and cost model for in-memory tables |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10585623B2 (en) | 2015-12-11 | 2020-03-10 | Vivante Corporation | Software defined FIFO buffer for multithreaded access |
US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
JP2020154805A (ja) * | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | マルチプロセッサシステム及び共有メモリの制御方法 |
CN111628859B (zh) * | 2020-06-05 | 2021-01-05 | 上海创蓝文化传播有限公司 | 一种基于分布式高并发条件下审核短信文本的方法及装置 |
US20220222129A1 (en) * | 2021-01-12 | 2022-07-14 | GM Global Technology Operations LLC | System for parallel processing middleware node application algorithms using threads |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4814973A (en) * | 1983-05-31 | 1989-03-21 | Hillis W Daniel | Parallel processor |
US4933933A (en) * | 1986-12-19 | 1990-06-12 | The California Institute Of Technology | Torus routing chip |
DE3689151D1 (de) * | 1986-12-30 | 1993-11-11 | Ibm | Nicht-sperrender Warteschlangenmechanismus. |
US4984235A (en) * | 1987-04-27 | 1991-01-08 | Thinking Machines Corporation | Method and apparatus for routing message packets and recording the roofing sequence |
US5008882A (en) * | 1987-08-17 | 1991-04-16 | California Institute Of Technology | Method and apparatus for eliminating unsuccessful tries in a search tree |
US5105424A (en) * | 1988-06-02 | 1992-04-14 | California Institute Of Technology | Inter-computer message routing system with each computer having separate routinng automata for each dimension of the network |
JPH0237422A (ja) * | 1988-07-28 | 1990-02-07 | Oki Electric Ind Co Ltd | 数値管理方式 |
US5027330A (en) * | 1988-12-30 | 1991-06-25 | At&T Bell Laboratories | FIFO memory arrangement including a memory location fill indication |
US4995056A (en) * | 1989-01-13 | 1991-02-19 | International Business Machines Corporation | System and method for data communications |
US4965793A (en) * | 1989-02-03 | 1990-10-23 | Digital Equipment Corporation | Method and apparatus for interfacing a system control unit for a multi-processor |
US5036459A (en) * | 1989-03-09 | 1991-07-30 | U.S. Philips Corporation | Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism |
JP3072646B2 (ja) * | 1989-03-20 | 2000-07-31 | 富士通株式会社 | 並列計算機間通信制御方式 |
US5218676A (en) * | 1990-01-08 | 1993-06-08 | The University Of Rochester | Dynamic routing system for a multinode communications network |
US5161156A (en) * | 1990-02-02 | 1992-11-03 | International Business Machines Corporation | Multiprocessing packet switching connection system having provision for error correction and recovery |
CA2043505A1 (en) * | 1990-06-06 | 1991-12-07 | Steven K. Heller | Massively parallel processor including queue-based message delivery system |
US5412782A (en) * | 1992-07-02 | 1995-05-02 | 3Com Corporation | Programmed I/O ethernet adapter with early interrupts for accelerating data transfer |
-
1993
- 1993-12-13 US US08/166,443 patent/US5581705A/en not_active Expired - Lifetime
-
1994
- 1994-12-13 EP EP95905923A patent/EP0734554B1/de not_active Expired - Lifetime
- 1994-12-13 WO PCT/US1994/014349 patent/WO1995016967A1/en active IP Right Grant
- 1994-12-13 DE DE69419525T patent/DE69419525T2/de not_active Expired - Fee Related
- 1994-12-13 JP JP7516912A patent/JPH09506727A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US5581705A (en) | 1996-12-03 |
EP0734554A1 (de) | 1996-10-02 |
WO1995016967A1 (en) | 1995-06-22 |
DE69419525D1 (de) | 1999-08-19 |
JPH09506727A (ja) | 1997-06-30 |
EP0734554B1 (de) | 1999-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69419525T2 (de) | Nachrichten-einrichtung für ein massiv paralleles verarbeitungsystem | |
DE3751091T2 (de) | Übertragungsprotokoll zwischen Prozessoren. | |
DE69331311T2 (de) | Datenkommunikationssystem und Verfahren | |
DE3854361T2 (de) | Programmierbare Protokollvorrichtung. | |
DE69317481T2 (de) | Ein-/Ausgabesteuerungssystem und Verfahren | |
DE69229473T2 (de) | Verfahren und vorrichtung zum puffern von daten in nachrichtennetzwerkstationen | |
DE69230093T2 (de) | Multiprozessorsystem | |
DE69132945T2 (de) | Schalter und Verfahren zum Verteilen von Paketen in Netzwerken | |
DE112020002495T5 (de) | System und verfahren zur erleichterung der betriebsverwaltung in einer netzwerkschnittstellensteuerung (nic) für beschleuniger | |
DE60213616T2 (de) | Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung | |
DE3280451T2 (de) | Verfahren zur Initialisierung eines Datenverarbeitungssystems. | |
DE69130798T2 (de) | Eine netzwerkschnittstelle um ein programmierbares logiksteuergerät an ein hochgeschwindigkeitskommunikationsnetzwerk zu schalten | |
DE3114961C2 (de) | ||
DE69327679T2 (de) | Nachrichtenübertragung zwischen Prozessoren und einer Koppeleinrichtung | |
DE69906585T2 (de) | Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten | |
DE19924922A1 (de) | System und Verfahren für Nachrichtenübermittlung zwisfchen Netzwerkknoten, die durch parallele Verbindungen verbunden sind | |
DE69826930T2 (de) | System und Verfahren zur wirksamen Fernplatte Ein-/Ausgabe | |
DE69832943T2 (de) | Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem | |
DE69131436T2 (de) | Netzanpassungseinrichtung mit als logische FIFOs gestalteten Speichern zur Übertragung und Empfang von Datenpaketen | |
DE3689990T2 (de) | Flexible Datenübertragung für nachrichtenorientierte Protokolle. | |
DE69628631T2 (de) | Dateneingangs/-ausgangsvorrichtung durch Referenzierung zwischen zentralen Verarbeitungseinheiten und Ein-/Ausgabevorrichtungen | |
DE3882989T2 (de) | Verfahren und anordnung zur verwaltung von mehrverriegelungsanzeigen in einem multiprozessordatenverarbeitungssystem. | |
DE69905594T2 (de) | Protokoll für replizierte server | |
DE60219047T2 (de) | Eine allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zum aufbau virtueller kanäle darin | |
DE69223303T2 (de) | Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |