DE68921906T2 - Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. - Google Patents

Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.

Info

Publication number
DE68921906T2
DE68921906T2 DE68921906T DE68921906T DE68921906T2 DE 68921906 T2 DE68921906 T2 DE 68921906T2 DE 68921906 T DE68921906 T DE 68921906T DE 68921906 T DE68921906 T DE 68921906T DE 68921906 T2 DE68921906 T2 DE 68921906T2
Authority
DE
Germany
Prior art keywords
processors
processor
execution
parallel
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE68921906T
Other languages
English (en)
Other versions
DE68921906D1 (de
Inventor
David M Chastain
Gary B Gostin
James E Mankovich
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Convex Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Convex Computer Corp filed Critical Convex Computer Corp
Publication of DE68921906D1 publication Critical patent/DE68921906D1/de
Application granted granted Critical
Publication of DE68921906T2 publication Critical patent/DE68921906T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

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

Description

    Technisches Feld
  • Die vorliegende Erfindung betrifft allgemein Computersysteme und im besonderen Systeme mit einer Mehrzahl von unabhängigen Prozessoren.
  • Hintergrund der Erfindung
  • Die Rechenbedürfnisse im Feld der wissenschaftlichen Datenverarbeitung haben sich bis zu einem Punkt gesteigert, bei dem es schwierig ist, einen einzelnen Prozessor zu bauen, der ausreichende Leistungsfähigkeit hat. Dies ist durch Grenzen in der physikalischen Technologie beim Computerbau begründet. Ein Ansatz, dieses Problem zu lösen, besteht in der Verwendung von einer Mehrzahl von Prozessoren, um die Datenverarbeitungsleistung eines Systems zu erhöhen. Jedoch begegnet man vielen Problemen bei dem Versuch, Vielfach-Prozessoren zu verwenden. Vielfach-Prozessorsysteme können gleichzeitig mehrere unabhängige Prozesse (Programme) ausführen, und dies führt zu einer Steigerung des Systemdurchsatzes. Es besteht jedoch der Bedarf nach einem Vielfach-Prozessorsystem, das die Ausführung eines einzelnen Prozesses beschleunigen kann.
  • Es wurde bereits eine Anzahl von Systemen beschrieben, die das Ziel haben, die Rechengeschwindigkeit für einen einzelnen Prozeß zu erhöhen, aber alle diese Systeme haben einen oder mehrere Nachteile. Ein Beispiel eines solchen Systems ist in US-Patent Nr. 4 636 942 von Chen et al. beschrieben. Dieses Patent beschreibt ein System, in dem mehrere Prozessoren einen Satz gemeinsamer Register teilen. Diese Register werden in Cluster eingeteilt, und die Prozessoren, die zur Ausführung der gleichen Task zugewiesen sind, werden durch das Betriebssystem zum Zugriff auf einen gemeinsamen Cluster zugewiesen. Die Cluster- Register schaffen, zusammen mit einem Satz von Hardware-Semaphoren, eine schnelle Synchronisation zwischen den zusammenarbeitenden Prozessoren. Dieses System hat eine Anzahl von Nachteilen, die tendenziell zur Verschlechterung der Leistungsfähigkeit des Systems führen, wenn es zum parallelen Prozessieren eingesetzt wird. Wenn ein Prozeß parallele Operationen startet, muß die Cluster-Zuweisung von Registern durch das Betriebssystem ausgeführt werden. Diese Übergabe der Steuerung vom ausführenden Prozeß zum Betriebssystem und zurück ist recht zeitaufwendig. Nach Zuordnung der Prozessoren wird eine Task-Synchronisierung zwischen den Prozessoren mit einer Laufzeitbibliothek durchgeführt, die in den Prozeßcode eingebettet sein muß und erhebliche Ausführungszeit benötigt, um die Task-Synchronisierung durchzuführen. Ferner wird der Multi-Task-Betrieb für eine parallele Ausführung eines Prozesses bei Chen et al. durch den Programmierer aufgerufen. Daher wird eine Parallelisierung nur aufgerufen, wenn dies zuvor durch den Programmierer bestimmt worden ist. Grundsätzlich benutzt der Ansatz von Chen et al. einen erheblichen Zeitüberhang, um den Multi-Task-Betrieb innerhalb eines Prozesses aufzurufen. Als Ergebnis dessen kann das in dem Patent von Chen et al. beschriebene System nur effektiv angewendet werden, wenn sehr große parallelisierbare Abschnitte des Codes innerhalb eines Prozesses vorhanden sind. Dies wird als "grobkörnige Parallelisierung" bezeichnet. Das von Chen et al. beschriebene System kann nicht in effizienter Weise verwendet werden, um Parallelisierung in kleinen Bereichen auszuführen.
  • Ein anderer Ansatz, der vorgeschlagen worden ist, besteht darin, Prozessoren im voraus für eine Task im Programm zu reservieren, wenn der Prozeß zur Ausführung geladen wird, wobei alle reservierten Prozessoren für die gesamte Ausführungszeit reserviert bleiben. Ein solcher Ansatz wurde vorgeschlagen in "Microtasking on IBM Multiprocessors", P. Carnevali et al., Proc. of the 1986 IBM Europe Institute Seminar on Parallel Computing: Parallel Systems and Computation, Oberlech, AT, August 1986, Seiten 41- 46. Durch Reservieren der Prozessoren im voraus können die parallelen Segmente des Prozesses mit reduzierter Synchronisationszeit ausgeführt werden. Die meisten Prozesse haben aber sowohl serielle als auch parallele Codesegmente, und wenn ein serielles Segment in einem Prozessor ausgeführt wird, laufen die übrigen reservierten Prozessoren im Leerlauf. Wenn der Prozeß in seriellem Code ausgeführt wird, laufen die übrigen Prozessoren im Leerlauf zustand. In den meisten praktischen Anwendungen führt der Ansatz, Prozessoren im voraus im Programm für parallele Ausführung zu reservieren, wie in dem obigen Artikel beschrieben, zu einem Verlust von Systemdurchsatz aufgrund des Leerlauf zustands der nicht benötigten Prozessoren während serieller Programmausführung.
  • In Hinblick auf den Bedarf für eine erhöhte Verarbeitungsgeschwindigkeit für einzelne Prozesse und auf die Schwierigkeiten, denen man beim Versuch, Multi-Prozessoren einzusetzen, begegnete, besteht ein Bedarf für ein Verfahren, das die parallelen Segmente eines Prozesses mit einem geringen Zeitüberhang ausführen kann, während keine Prozessoren im Leerlaufzustand gehalten werden, wenn ein Prozeß in einem seriellen Segment ausgeführt wird.
  • Gemäß der Erfindung wird ein Verfahren zur parallelen Ausführung eines Prozesses in einem Computersystem mit einer Mehrzahl von Prozessoren geschaffen, wobei das Verfahren die Schritte aufweist:
  • Beginnen der Ausführung eines Prozesses durch Schreiben von Prozeßstatusparametern für den Prozeß in definierte Register in einem Kommunikationsregistersatz, der für alle Prozessoren in dem System zugänglich ist,
  • Starten einer seriellen Ausführung des Instruktionscodes des Prozesses durch einen ersten der Prozessoren,
  • auf die Ausführung einer Parallelisierungsinstruktion für den Prozeß durch den ersten Prozessor, welche Parallelisierungsinstruktion parallele Prozeßoperationen für den Prozeß, welche parallel ausführbar sind, anzeigen, hin (a) Schreiben von zusätzlichen Prozeßstatusparametern für den Prozeß in den Kommunikationsregistersatz, um anderen der Prozessoren zu ermöglichen, bei der Ausführung der parallelen Prozeßoperationen für. den Prozeß mitzuwirken, und (b) Signalisieren an alle anderen Prozessoren, daß paralle Prozeßoperationen zur Ausführung bereitstehen, indem ein den Prozeßstatusparametern zugeordnetes Semaphorregister gesetzt wird,
  • Überwachen des Semaphors durch einen oder mehrere der anderen Prozessoren, wenn die anderen Prozessoren in einem Leerlauf zustand sind, um nachzuweisen, wann der erste Prozessor das Semaphor gesetzt hat, um die anderen Prozessoren zur Mitwirkung in der Ausführung von parallelen Prozeßoperationen des Prozesses aufzufordern, und
  • auf den Nachweis der Setzung des Semaphors durch einen oder mehrere der anderen Prozessoren hin Zugreifen auf die in dem Kommunikationsregistersatz gespeicherten Prozeßstatusparameter und Beginnen der Ausführung der parallelen Prozeßoperationen durch den einen oder die mehreren Prozessoren.
  • Kurzbeschreibung der Zeichnungen
  • Für ein vollständigeres Verständnis der vorliegenden Erfindung und ihrer Vorteile wird nun auf die folgende Beschreibung im Zuammenhang mit den zugehörigen Zeichnungen Bezug genommen, in denen:
  • Figur 1 ein Blockdiagramm eines Multi-Prozessor-Computersystems zeigt, das zur Ausführung des Verfahrens gemäß der vorliegenden Erfindung geeignet ist;
  • Figur 2 ein Blockdiagramm der genauen Schaltungen für die in Figur 1 dargestellte Speicher/Kommunikationsregister- Steuerung zeigt;
  • Figur 3 eine Darstellung der dem Mikrocode zugänglichen Inhalte eines Kommunikationsregisterblocks zeigt;
  • Figur 4 ein Blockdiagramm zeigt, das eine Mikrocode-Operation innerhalb eines Prozessors darstellt; und
  • Figur 5 eine Zeitskalendarstellung ist, die die Prozessorverwendung zur Ausführung eines einzelnen Prozesses zeigt, wobei der Prozeß anfangs in serieller Weise auf einem einzelnen Prozessor ausgeführt wird und dann zur parallelen Ausführung auf mehreren Prozessoren aufgespalten wird, und dann zur fortgesetzten seriellen Ausführung auf einem einzelnen Prozessor zurückkehrt.
  • Detaillierte Beschreibung
  • Zweck der vorliegenden Erfindung ist es, die Verwendung von Multi-Prozessoren zu ermöglichen, um die Leistung eines einzelnen Programms zu beschleunigen, während gleichzeitig eine maximale Leistungsfähigkeit für mehrere simultane Programme erhalten bleibt. Im allgemeinen haben Anwendungsprogramme Segmente, die nur in serieller Weise durch einen einzelnen Prozessor ausgeführt werden können, und zwar grundsäztlich aufgrund der Datenabhängigkeiten, und haben ferner Segmente, die parallel durch eine Mehrzahl von Prozessoren ausgeführt werden können. Um in effizienter Weise kurze Segmente von parallelen Operationen verwenden zu können, ist es wesentlich, daß der erforderliche Zeitüberhang zum Starten von Multi-Prozessor-Operationen so gering wie möglich ist. Nur wenn dieser Zeitüberhang genügend klein gemacht wird, kann Parallelisierung mit feiner Granularitaut ausgenutzt werden. Wenn immer ein Prozeß bei der Ausführung stoppen und das Betriebssystem rufen muß, gibt es einen erheblichen Zeitverlust. Die vorliegende Erfindung macht es überflüssig, das Betriebssystem zu rufen, um parallele Operationen zu starten.
  • Um die vorliegende Erfindung besser zu verstehen, ist es wichtig, das als "Pfad" bezeichnete Programmablaufkonzept zu verstehen. Ein Pfad ist ein Ausführungsweg des Prozesses (Programm). Ein rein sequentieller Prozeß hat einen einzelnen Pfad. Wenn ein Prozeß ein Segment hat, das parallel durch mehrere Prozessoren ausgeführt werden kann, dann kann der Prozeß mehrere Pfade während dieser Zeit haben. Die maximale Anzahl von Pfaden, die an einem beliebigen Punkt bestehen können, wird gelegentlich als "logische" Pfadzahl bezeichnet. Da typische Programmabläufe zwischen seriellen und parallelen Segmenten hin und her gehen, variiert die logische Pfadzahl von Segment zu Segment. Es ist aber nicht erforderlich, daß jeder Pfad einen gesonderten Prozessor hat, auf dem er ausgeführt wird. Alle logischen Pfade können sequentiell auf einem einzelnen Prozessor ausgeführt werden, wie es normalerweise auf einem Einzelprozessorsystem geschieht. Bei der vorliegenden Erfindung kann das Betriebssystem einen gegebenen Prozeß auf eine Anzahl von Pfaden beschränken, die er parallel ausführen kann. Diese Grenze kann als die maximale "physikalische" Pfadzahl bezeichnet werden. Wenn die physikalische Pfadzahl für ein gegebenes Segment kleiner als die logische Pfadzahl, bedeutet dies lediglich, daß einige logische Pfade sequentiell und nicht parallel ausgeführt werden. Die maximale physikalische Pfadzahl für einen Prozeß ist ein Parameter, der durch das Betriebssystem, durch einen Parameter gesteuert werden kann, der in einem Kommunikationsregistersatz als eine Pfadreservierungsmaske gespeichert ist.
  • Die vorliegende Erfindung schafft ein Verfahren, mit dein ein einzelner Prozeß mit parallelen Segmenten entweder auf einem einzelnen Prozessor oder, für die parellelen Segmente, durch eine Mehrzahl von Prozessoren ausgeführt werden kann, wenn diese Prozessoren zur Verfügung stehen. Wenn ein Prozessor die Ausführung eines Pfades eines Prozesses abgeschlossen hat und andere Pfade dieses Prozesses noch in Arbeit sind, dann kann dieser Prozessor freigegeben werden, so daß er andere Prozesse im Computersystem abarbeiten kann. Ein sehr wichtiger Aspekt der vorliegenden Erfindung besteht darin, daß Prozessoren "eingeladen" werden, beim parallelen Prozessieren mitzuwirken, eher als auf Befehl reserviert zu werden. Ein Prozessor nimmt die Einladung an, wenn er in einem Leerlaufzustand ist und daher nicht irgendeinen anderen Prozeß abarbeitet. Diese Technik der nicht-Befehl- Reservierung schafft einen sehr hohen Grad an Ausnutzung von allen Prozessoren innerhalb eines Computersystems und schafft daher einen hohen Durchsatz für das Gesamtsystem. Eine detaillierte Beschreibung des Verfahrens der vorliegenden Erfindung ist in den folgenden Figuren zusammen mit den in den Anhängen I und II aufgeführten Listen gegeben.
  • Unter Bezugnahme auf Figur 1 ist dort ein Blockdiagramm für ein Multi-Prozessor-Computersystem 20 zu sehen, das zur Ausführung eines Verfahrens gemäß der vorliegenden Erfindung geeignet ist. Das System 20 enthält einen Hauptspeicher 22 und eine Mehrzahl von Prozessoren wie 24 und 26. Der Prozessor 24 ist als erster Prozessor im System durch die Bezeichnung PROZESSOR 0 gekennzeichnet. Der letzte Prozessor in der Gruppe ist als PROZESSOR n bezeichnet. Es kann jede beliebige Anzahl von Prozessoren in dem System 20 geben, aber eine ausgewählte Ausführungsform hat z.B. eine Gruppe von vier Prozessoren.
  • Jeder der Prozessoren enthält eine Vektorprozessoreinheit 24A und 26A, und auch eine skalare Prozessoreinheit 24B und 26B. Solche vektoriellen und skalaren Prozessoreinheiten sind detailliert in US Patent 4 620 275 von Wallach et al. beschrieben, welche Patentbeschreibung hier durch Bezugnahme aufgenommen wird.
  • Jeder der Prozessoren 24 und 26 enthält weiter eine Speicher/Kommunikationsregistersteuerung, 24C und 26C. Diese Steuerungen sind detaillierter in Figur 2 erläutert.
  • Prozessor 24 kommuniziert mit dem Hauptspeicher 22 über einen Adreßbus 28, einen Lese-Datenbus 30 und einen Schreib-Datenbus 32. Der Prozessor 26 kommuniziert mit dein Hauptspeicher 22 über einen Adreßbus 34, einen Lese-Datenbus 36 und einen Schreib-Datenbus 38.
  • Das System 20 enthält weiter eine Gruppe von Kommunikationsregistern 46, die in acht Blöcke 46A bis 46H unterteilt sind. Jeder Block kann auch als ein Satz von Kommunikationsregistern bezeichnet werden. Jeder Satz von Kommunikationsregistern oder jeder Block, wie etwa 46A, weist eine Mehrzahl von Registern auf. Diese werden bei Bezugnahme auf Figur 3 näher beschrieben.
  • Jedem Satz von Kommunikationsregistern ist ein Semaphor zugeordnet, das dazu verwendet wird, einen mit den Daten in diesem Registersatz verbundenen Status zu signalisieren. Diese sind als Semaphore 48 gezeigt. Diese Semaphore werden implizit durch Instruktionen manipuliert, die die Kommunikationsregister lesen und beschreiben. Eine "Sende"-Instruktion prüft das Semaphor des Zielregisters und schreibt, wenn es gelöscht ist, die Daten und setzt das Semphor. In ähnlicher Weise liest eine "Empfange"- Instruktion die Registerdaten und löscht das Semphor, wenn es gesetzt ist. Semaphor-Operationen übergeben auch den Status auf einem Semaphor-Statusbus 49, der den Erfolg oder Fehlschlag der Semaphor-Operation anzeigt. Dieser Status steht dann den Steuerabschnitten des Prozessors, wie etwa 24 und 26, zur Verfügung, so daß eine geeignete Antwort gegeben werden kann.
  • Das System 20 enthält weiter einen Lese-Datenbus 50, einen Schreib-Datenbus 51 und einen Adreßbus 52 für die Kommuikation zwischen den Prozessoren, wie etwa 24 und 26, und Kommunikationsregistern 46. Das System 20 hat einen Kommunikationsindexregisterbus 53 und einen Schutzflaggenbus 55, die beide mit den Steuerungen 24C und 26C verbunden sind. Die Steuerung 24C des Prozessors 24 ist verbunden, um Adressen von der Steuerung durch den Adreßbus 52 und den Registerbus 53 zu einer Kommunikationsregister-Adreßabbilundungs/Prüfschaltung 57 zu übertragen, um irgendein Register in den Kommunikationsregistern 46 über eine Leitung 59 zu adressieren. Die Steuerung 24C ist ferner so angeschlossen, um den Datenbus 50 auszulesen, um Daten aus den Kommunikationsregistern 46 zu lesen, und auf den Datenbus 51 zu schreiben, um Daten in die Kommunikationsregister 46 zu schreiben. Die Steuerung 24C kann ferner jedes mit den Kommunikationsregistern 46 verbundene Semaphor 48 setzen und löschen. Die Steuerung 26C kommuniziert in ähnlicher Weise durch die Busse 49, 50, 51, 52, 53 und 55 mit dem Kommunikationsregistern 46 und Semaphoren 48.
  • Ein Schutzflaggenbus 55 ist mit den Steuerungen 24C und 26C verbunden, um einen Schutzstatus der Kommunikationsregister-Adreßabbildungs/Prüfschaltung 57 bereitzustellen. Diese Schaltung 57 kann dann Adressen nachweisen, die durch Anwenderprogramme fehlerhaft erzeugt wurden.
  • In dem Computersystem 20 kann jeder Prozessor, wie etwa 24 und 26, unabhängig auf den Hauptspeicher zugreifen. Bei herkömmlichem Multi-Prozessieren können separate Prozesse (Programme) unabhängig voneinander in Prozessoren, wie etwa 24 und 26, laufen, während sie auf den gleichen Hauptspeicher zugreifen. Ebenso kann ein einzelner Prozeß in mehreren Pfaden ausgeführt werden, wie weiter unten beschrieben wird, durch Verwendung der Koinmunikationsregister 46 und der Semaphore 48. Kurz gesagt, wenn ein Prozeß auszuführen ist, der sowohl serielle als auch parallele Komponenten enthält, wird er anfangs bei irgendeinem der Prozessoren ausgeführt, wie beispielsweise Prozessor 24. Wenn der Prozeß begonnen hat, wird einer der Kommunikationsregisterblöcke, z.B. 46A, durch das Betriebssystem dem Prozeß zugeordnet. Ein Anfangssatz von Prozeßstatusinforination, der weiter bei Bezugnahme auf Figur 3 beschrieben wird, wird dann durch den Prozessor 24 in die Register des Blocks 46A durch Ausführung des Betriebssystems geschrieben, das dann den Prozessor veranlaßt, die Ausführung des ausgewählten Prozesses zu beginnen. Während der Prozessor 24 den ausgewählten Prozeß ausführt, können andere Prozessoren in dem System entweder andere Prozesse ausführen oder in einem Leerlauf zustand sein. Wenn der Prozessor 24 einer Parallelisierungsinstruktion begegnet, die weiter unten beschrieben wird, führt er eine Abfolge von Operationen aus., um die anderen Prozessoren zu informieren, daß parallele Ausführung möglich ist. Zunächst sperrt er den "Verzweigungsblock", welcher die Kommunikationsregister 000A-000D enthält, indem er ein Senden zu Register 000A ausführt (siehe Figur 3). Durch Setzen dieses Semaphors, das als das "Verzweigungssperr"-Semaphor bezeichnet wird, informiert er die anderen Prozessoren im System, daß die Verzweigungsblockgruppe von Registern modifiziert wird. Der Prozessor 24 schreibt dann zusätzliche Prozeßstatusinformationen in den Verzweigungsblock, und schließt durch Setzen des dem Register 000D zugeordneten Semaphors ab, des "Verzweigungsspeicher"-Semaphors.
  • Die Kombination der Setzung der Verzweigungssperre und des Verzweigungsspeichers signalisiert den anderen Prozessoren, daß parallele Ausführung möglich ist.
  • Während der ausgewählte Prozeß in dem Prozessor 24 ausgeführt wird, sind alle anderen Prozessoren, die keine Prozesse ausführen, in einem Leerlauf zustand. In dem Leerlauf zustand zählt jeder dieser Prozessoren ein Adressregister herauf, um sequentiell bestimmte Semaphor-Register innerhalb der Kommunikationsregister 46 zu überprüfen. Die Prozessoren im Leerlaufzustand suchen kontinuierlich nach Semaphoren, die gesetzt sind, um anzuzeigen, daß parallele Operationen zur Ausführung bereitstehen. Wenn ein Leerlauf-Prozessor, z.B. Prozessor 26, feststellt, daß ein Semaphor innerhalb des Blocks 46 A gesetzt worden ist, um anzuzeigen, daß parallele Operationen verfügbar sind, dann liest der Prozessor 26 die Prozeßstatusinformation aus dem Block 46A und beginnt, auf Grundlage dieser Prozeßstatusinformation, mit der Ausführung eines parallelen Pfades des Prozesses, wie oben definiert. Der Zugriff auf die Prozeßstatusinformation erlaubt es dein Prozessor 26, unmittelbar mit der Ausführung von Prozeßinstruktionen durch Zugriff auf den Hauptspeicher 22 zu beginnen. In den meisten Fällen wird der Prozessor 24 einen ersten der parallelen Pfade für den ausgewählten Prozeß ausgeführt haben. Nachdem Pfade durch die Prozessoren 24 und 26. gestartet wurden, kann jeder andere Prozessor, der in einem Leerlaufzustand ist, ebenfalls einen Pfad zur Ausführung aufnehmen. Am Ende einer Pfadausführung begegnet der den Pfad aus führende Prozessor einer "Verbindungs"-Instruktion (Join). Jeder Prozessor, der das Verbinden ausführt, ersetzt eine Flagge in einer Pfadzuordnungsmaske (unten beschrieben) und zählt einen zugehörigen Pfadzähler (unten beschrieben) herunter. Beide Parameter sind an Stelle 0017 des Kommunikationsregistersatzes 46A. Der letzte Prozessor, der eine Verbindungsinstruktion ausführt, erkennt sie als die letzte Verbindungsinstruktion, weil der Pfadzähler 1 ist, und dieser Prozessor fährt mit der seriellen Ausführung des Prozesses fort. Es ist zu bemerken, daß dieser letzte Prozessor jeder beliebe Prozessor in dem System sein kann und nicht notwendig derjenige sein muß, der ursprünglich die Verzweigung gespreichert hat. Sollte dieser letzte Prozessor einer weiteren Parallelisierungsinstruktion begegnen, wird der oben beschriebene Vorgang wiederholt. Es ist zu bemerken, daß, wenn keiner der Prozessoren im Leerlauf zustand ist, Prozessor 24 jeden der Pfade des ausgewählten Prozesses sequentiell abarbeitet. Daher führt das Computersystem der vorliegenden Erfindung parallele Operation auf Basis von Einladung und nicht auf Befehl aus.
  • Eine detailliertere Beschreibung der Funktionsweise der vorliegenden Erfindung und ihrer Rechnerarchitektur wird weiter unten gegeben.
  • In Figur 2 ist ein schematisches Diagrainm für die Speicher-/Kommunikationsregistersteuerung 24 aus Figur 1 dargestellt. Diese Steuerung arbeitet in Verbindung mit der vektoriellen und der skalaren Prozessoreinheit 24A und 24B, um Adressen zu generieren und Daten von und zu dem Kommunikationsregistern 46 und dem Hauptspeicher 22 zu übertragen. Die vektorielle Prozessoreinheit 24A und die skalare Prozessoreinheit 24B führen Makroinstruktionen durch Anwendung von Mikrocode aus, der selbst dekodiert wird, um die Operationen mit verschiedenen Logikeinheiten, und Registern in dem Prozessor auszulösen. Diese Befehlsausführung ist in der Industrie üblich.
  • Innerhalb der Steuerung 24C ist eine Registerdatei vorgesehen, die so angeschlossen ist, um Daten und Adressen zwischen dein Prozessor 24 und den Kommunikationsregisterbussen 50, 51 und 52 zu übertragen. Es ist ferner eine ALU 62 vorgesehen, die die durch die Prozeßinstruktionen geforderte Adreßarithmetik ausführen kann. Die Registerdatei 60 empfängt Steuerungsbefehle aus dekodierten Mikroinstruktionen, die durch die Prozessoreinheiten 24A und 24B erzeugt werden. Die besonderen Steuerleitungen sind nicht dargestellt, aber sind in der Industrie wohlbekannt. Die Steuerung 24 enthält weiter ein Literalregister 64, das Adreßinformationen aus Prozeßinstruktionen empfängt. Das Literalregister 64 ist so angeschlossen, um eine zweite Eingabe für die ALU 62 zu liefern.
  • Die Ausgabe aus der ALU 62 ist ein 16 Bit Adressensegment, das durch die Instruktionen für einen ausgewählten Prozeß erzeugt wird, der durch einen Prozessor ausgeführt wird. Dieses Adressensegment wird streng durch die Prozeßsoftware erzeugt. Dieses Adressensegment wird nach der Erzeugung in der Registerdatei 60 gespeichert, bevor es auf den Adreßbus 52 übertragen wird.
  • Die Steuerung 24 enthält weiter ein Kornmunikationsindexregister 66, das einen Kommunikationsregisterindexwert speichert. Das Register 66 ist unabhängig von der Prozeßsoftware, d.h. es kann nicht durch irgendeine Prozeßinstruktion gesetzt oder gelesen werden. Das Register 66 arbeitet ausschließlich in Reaktion auf Mikroinstruktionen, die durch einen Prozessor ausgeführt werden, wenn er in dem Leerlaufzustand ist. Diese Mikrocode-Operation wird weiter in Verbindung mit Figur 4 beschreiben. Wenn ein Prozessor, wie etwa Prozessor 24, in einem Leerlaufzustand ist, führt er wiederholt eine Folge von Operationen aus, die als Leerlaufschleife bekannt ist. Eine der in dieser Leerlaufschleife ausgeführten Operationen besteht darin, die Verzweigungsspeicher-Semaphore (siehe Figur 3) der verschiedenen Kommunikationsregistersätze durchzugehen auf der Suche nach einem parallelen Segment, bei dem er bei Ausführung teilnehmen kann. Dieses Durchgehen erfolgt unter Verwendung eines speziellen Satzes von Adressen, der dem Mikrocode zur Verfügung steht, aber nicht den Anwenderprogrammen. Der Prozessor zeigt sein Recht zur Benutzung dieser speziellen Adressen an, indem er den Inhalt seines Schutzstatusflaggenregisters 65 über den Schutzstatusbus 55 zu der Prüfschaltung 57 schickt. Diese Statusflagge ist in einem Statuszustand, wenn ein Anwenderprozeß in einem Prozessor ausgeführt wird, und ist in einem anderen Zustand, wenn das Betriebssystem oder eine Leerlaufschleife in dem Prozessor läuft.
  • Die Ausgaben des Kommunikationsindexregisters 66, des Kommunikationsregisteradreßbusses 52 und der Schutzstatusflaggenschaltung 65 werden zu der Kommunkationsregister-Adreßabbildungs-/Prüfschaltung 57 geleitet. Die Schaltung 57 untersucht die empfangene Adresse um sicherzustellen, daß sie Kommunikationsregister adressiert, die physikalisch vorhanden sind und für die die Schutzstatusflagge den Zugriff erlaubt. Anwenderprogramme dürfen nicht auf die durch Mikrocode und das Betriebssystem verwendeten Register zugreifen. Die Schaltung 57 fügt auch ausgewählte Adreßbits mit Adreßbits des Kommunikationsadreßregisters 66 zusammen, um eine zusammengesetzte 10-Bitadresse zu erzeugen, um ein ausgewähltes Kommunikationsregister zu adressieren. Die Schaltung 57 kombiniert ein erstes, prozeßunabhängiges Adreßsegment aus dem Register 66 mit einem zweiten, prozeßabhängigen Adreßsegment aus der ALU 62, um eine zusammengesetzte Adresse zur Adressierung eines Registers in dem Register 46 zu erzeugen.
  • Es wird nun auf Figur 3 Bezug genommen, worin ein Detail der in einem Block innerhalb des Kommunikationsregisters 64 gespeicherten Information gezeigt ist. In der vorliegenden Ausführungsform enthält der Block 46A 128 64 Bit Register. Der Block 46 enthält prozeßstatusinformation, die durch einen ablaufenden Prozeß festgelegt ist und es anderen Prozessoren erlaubt, eine Prozeß operation, die durch den in dem Block gespeicherten Prozeßstatus definiert ist, parallel aufzunehmen und auszuführen.
  • Die in einen Kommunikationsregisterblock wie 46A gespeicherte Information ist folgende:
  • (1) Speicherplätze 000A-000D sind der "Verzweigungsblock". Sie enthalten Inf ormationen, die durch einen eine Parallelisierungsinstruktion ausführenden Prozessor erzeugt wird, um anderen Prozessoren zu ermöglichen, ein paralleles Codesegment des ausgeführten Prozesses auszuführen.
  • (2) Speicherplätze 000E-0011 enthalten Segmentbeschreibungsregister (SDR). Sie bilden die oberste Stufe des Prozeß-Speicherabbildungsbaums und werden sowohl für die serielle als auch für die parallele Ausführung benötigt.
  • (3) Speicherplätze 0012-0016 enthalten Trap-Instructions-Register, was spezielle Bitflags zur Fehlersuche in auf mehreren Prozessoren laufenden Programmen sind.
  • (4) Speicherplatz 0017 enthält Pfadzuordnungs-Steuerinformation. Die Pfadzuordnungsmaske enthält ein Bit für jeden möglichen physikalischen Pfad in dem Prozeß. Die zugeordnete Pfadzahl beschreibt die Anzahl der momentan ausgeführten Pfade. Ein sich selbst zuordnender Prozessor löscht ein Bit in der Pfadmaske und zählt die Pfadzahl herauf. Der Prozessor verfährt umgekeht, wenn er die Zuordnung auflöst.
  • (5) Speicherplätze 0018-001F enthalten Zeitwerte, die die Ausführungszeit auf jeder CPU des Prozesses überwachen, die von diesem Kommunikationsregistersatz aus laufen. Diese Information wird zur Kontoführung benutzt.
  • (6) Speicherplätze 4000-401F sind zur Verwendung durch das Betriebssystem reserviert.
  • (7) Speicherplätze 8000-803F sind für die Anwenderprogramme reserviert. Die Zuordnung dieser Register wird für einen typischen Prozeß automatisch durch den Compiler ausgeführt.
  • Alle Register werden während der Prozeßerzeugung durch das Betriebssystem initialisiert. Darauf werden die obigen Ziffern 1, 3, 4, 5 und 6 durch das Betriebssystem und durch Mikrocode während der Ausführung des Prozesses manipuliert. Obiger Punkt 7 wird direkt durch den Anwenderprozeß kontrolliert.
  • Wenn ein Prozeß in einem Prozessor ausgeführt wird und eine Parallelisierungsinstruktion auftritt, verursacht die Ausführung der Parallelisierungsinstruktion, daß zusätzliche Statusinformation in den entsprechenden Kommunikationsregisterblock geschrieben wird. Die durch eine Parallelisierungsinstruktion in den Block geschriebene Information wird als "Verzweigungsblock" Information bezeichnet. Die innerhalb des Verzweigungsblocks, welcher durch einen Prozessor geschrieben wird, der andere Prozessoren zur Teilnahme bei paralleler Ausführung eines Codesegments einlädt, enthaltene Information ist folgende:
  • fork.FP Anfangsblockzeiger, der durch einen neuen Pfad zu verwenden ist.
  • fork.AP Anfangsargumentzeiger, der durch den neuen Pfad zu verwenden ist.
  • fork.PC Adresse der ersten Instruktion, die durch den neuen Pfad auszuführen ist.
  • fork.PSW Anfangs-Programmstatuswort, das durch den neuen Pfad zu verwenden ist.
  • fork.Source_PC Adresse der Instruktion, die den Verzweigungs- oder Gabelungsbefehl aufgestellt hat.
  • fork.type Definition, ob eine Verzweigungs- oder Gabelungsinstruktion den neuen Pfad erzeugt hat (eine Verzweigungsinstruktion lädt nur einen Prozessor zur Teilnahme bei paralleler Ausführung ein, während eine Gabelungsinstruktion mehr als einen Prozessor zur Teilnahme im Parallelbetrieb einlädt.)
  • fork.SP Anfänglicher Stapelzeiger des neuen Pfades.
  • Ferner wird das dem fork.FP zugeordnete Semaphor als "Verzweigungssperre"-Flagge verwendet, und das mit dein fork. SP verbundene Semaphor als "Verzweigungsspeicher"-Flagge verwendet. Wenn die Verzweigungssperre-Flagge gesetzt ist, zeigt sie an, daß eine Verzweigung durch einen Prozessor gespeichert oder aufgenommen ist, und daß kein anderer Prozessor auf den Verzweigungsblock zugreifen sollte, bis die Flagge gelöscht ist. Wenn die Verzweigungsspeicher-Flagge gesetzt ist, zeigt sie an, daß eine gültige Verzweigung gespeichert ist und daß ein leerlauf ender Prozessor eingeladen ist, die Verzweigung aufzunehmen.
  • Wenn ein leerlaufender Prozessor festgestellt hat, daß ein Semaphor gesetzt worden ist und Parallele Operationen zur Verfügung stehen, ist alle erforderliche Information, um mit der Ausführung dieser Operation zu beginnen, in einem Block des Kommunikationsregisters wie oben und in bezug auf Figur 3 beschrieben, vorhanden.
  • Es wird nun auf Figur 4 Bezug genommen, worin ein Mikrocode- System 80 zur Verwendung in den Prozessoren der vorliegenden Erfindung gezeigt ist. Das System 80 ist in jeder skalaren Prozessoreinheit für jeden Prozessor, wie 24 und 26, implementiert. Prozeß-Makroinstruktionen werden aus dem Hauptspeicher abgeleitet und zu einem Instruktionsverteiler-Übersetzer 82 geführt. Der Übersetzer erzeugt eine erste Mikroinstruktionsadresse, für jede Makroinstruktion über eine Leitung 84 zu einem ersten Multiplexer 86. Die erste Mikroinstruktionsadresse wird dann durch eine Leitung 88 zu einem Mikrocode-Steuerspeicher 90 geleitet. Die erste Mikroinstruktion wird dann durch eine Leitung 92 zu einem Mikrocode-Instruktionsregister 94 geleitet, das auch als Decoder arbeitet. Wenn eine Mikrocode-Instruktion dekodiert ist, werden Steuersignale erzeugt, die auf Register und andere Logikeinheiten innerhalb des Prozessors gerichtet sind. Verschiedene beispielhafte Steuerleitungssignale sind durch die gestrichelten Linien in Figuren 2 und 4 gezeigt.
  • Nachdem die erste Mikroinstruktion aus der Tabelle 82 gesendet und in dem Register 94 dekodiert ist, werden nachfolgende Mikroinstruktionen durch den Mikrocode-Steuerspeicher 90 erteilt, um die Ausführung der entsprechenden Makroinstruktion abzuschließen. Die nächste Mikrocode-Adresse und Abwandlungen werden durch das Register 94 erzeugt und über eine Leitung 96 zu einer nächsten Adreßlogikschaltung 98 übertragen. Die Leitung 96 ist auch an einen Multiplexer 99 angeschlossen, der verschiedene Prozeßstatusinformationen aus einer Vielzahl von Leitungen empfängt, einschließlich Leitung 49, die den Semaphorstatus aus den Kommunikationsregistern anzeigt. Dieser Status kann während Zugriff auf das Kommunikationsregister nachgewiesen werden, um den Mikrocode zu veranlassen, in Abhängigkeit vom Semaphorstatus auf zuzweigen. Dies erlaubt es z.B., daß der Mikrocode in der Leerlaufschleife eines Prozessors feststellen kann, ob ein Verzweigungssemaphor gespeichert worden ist, um andere Prozessoren zur Teilnahme bei der Ausführung eines parallelen Prozeßsegments einzuladen.
  • Wenn irgendeiner der Prozessoren in dem System 20, wie etwa Prozessor 24 oder 26, nicht bei der Ausführung eines Prozesses ist, wird dieser Prozessor, wie oben bemerkt, in einen Leerlaufzustand versetzt, der die Ausführung einer Mikrocode-Leerlaufschleife bewirkt. Bei einem Schritt in dieser Mikrocode-Leerlaufschleife wird das Kommunikationsindexregister 66 während jeder Schleife um eine Einheit heraufgezählt durch ein Steuersignal aus dem Register 94 zu den Kommunikationsindexregister 66. Das Register 66 hat in einer ausgewählten Ausführungsform drei Bits, was eine Adressierbarkeit von acht Blöcken 46A-46H ermöglicht. 16 Adreßbits wählen ein bestimmtes Register in dem ausgewählten Block während der normalen Prozeßausführung aus, aber zusätzlich ist ein spezieller Bereich von Adressen für den Mikrocode verfügbar, der es ihm ermöglicht, auf jede beliebige Adresse in irgendeinem der Blöcke zuzugreifen.
  • Mithin sorgt die Durchführung des Leerlauf zustandes für ein kontinuierliches Überprüfen des "Verzweigungsspeicher"-Semaphors in jedem der Blöcke in der Suche nach einem gesetzten Semaphor. Wenn ein solches Semaphor gefunden wird, wird der entsprechende Wert des Kommunikationsindexregisters (CIR) in dem CIR-Register 66 gehalten. Der Prozessor fährt dann fort, die in dem ausgewählten Block gespeicherte Prozeßstatusinformation zu verwenden, um mit dem Start eines Prozeßpfades zu beginnen. Während der Ausführung des Prozesses werden verschiedene Adreßinformationen für die Kommunikationsregister erzeugt, aber diese enthält nur 16 Adreßbits, die den Speicherplatz innerhalb eines Blocks definieren, aber nicht definieren, welcher Block adressiert werden soll. Die Adreßinformation für einen bestimmten Block wird durch das Adreßsegment, welches in dein Kommunikationsindexregister 66 gespeichert ist, definiert. Mithin arbeitet der Prozeß unabhängig von und ohne Wissen von dem speziellen Block, der die Prozeßstatusinformation enthält. Die Identifizierung des bestimmten Blockes wird vollständig unabhängig von den Prozeßinstruktionen ausgeführt. Die Prozeßausführung ist ferner unabhängig von dem bestimmten Prozessor, in dem der Prozeß ausgeführt wird.
  • Die vorliegende Erfindung erfordert die Verwendung von Parallelisierungsinstruktionen, die innerhalb des Objektcodes enthalten sind, der von den Prozessoren ausgeführt wird. In Anhang I ist eine Auflistung eines Quellcodes in FORTRAN für einen Prozeß dargestellt, der Matrixmultiplikation durchführt. Vor der Multiplikation löschen die Programminstruktionen einen Speicherbereich. Sowohl die Multiplikations- als auch die Löschoperationen enthalten "Do"-Schleifen, die ein besonderer Typ von Instruktionen sind, die besonders für Parallelisierung geeignet sind.
  • Wenn der in Anhang I gezeigte Quellcode kompiliert wird, wird ein Objektcode erzeugt, der in Anhang II gezeigt ist. Unter dem mit Instruktionen bezeichneten Abschnitt, in etwa der 13. Zeile darunter, befindet sich eine als "Spawn" bezeichnete Instruktion. Dies ist eine Parallelisierungsinstruktion. Die Gabelungsinstruktion (Spawn) entspricht nicht einem bestimmten Befehl in der Quellsprache, sondern resultiert aus einer Analyse des Compilers von möglichen Datenabhängigkeiten der verschiedenen Iterationen, die durch die Schleife ausgeführt werden, welche durch den Continue-Befehl beim Quellzeichen 10 abgeschlossen wird. Diese spezielle Gabelung (Spawn) hat eine maximale logische Pfadzahl von 100, da alle Iterationen der Schleife 10 parallel ausgeführt werden können. Wie zuvor diskutiert, wird die maximale physikalische Pfadzahl zum Zeitpunkt der Ausführung durch das Betriebssystem festgesetzt, in Abhängigkeit von vorgegebenen Reservierungsparametern.
  • Vor der Ausführung jeder Iteration einer parallelen Operation, greift ein teilnehmender Prozessor auf ein bestimmtes Kommunikationsregister (hier Register 8000) zu und stellt fest, ob noch eine andere Iteration auszuführen ist oder nicht. Wenn keine Iteration mehr vorhanden ist, dann wird der Prozessor abzweigen und die auf das Zeichen L6 folgende Verbindungsinstruktion (Join) ausführen. Während der Ausführung der Verbindungsinstruktion stellt der Prozessor fest, ob er der letzte Prozessor beim Abschluß eines Pfades ist oder nicht. Wenn nicht, geht er in den Leerlauf zustand über und beginnt mit der Suche nach einem parallelen Prozeß, in den er sich zur Ausführung einschalten kann. Wenn er der letzte Prozessor bei der Ausführung eines parallelen Pfades ist, beginnt er mit der Ausführung des nächsten Pfades folgend auf die Verbindung.
  • Es ist zu bemerken, daß, wie in unserem Beispiel, der Code unmittelbar mit einem anderen parallelen Segment beginnen und sich wieder auf gabeln kann, um parallele Ausführung zu ermöglichen.
  • Infolge dieser Gabelungsinstruktion wird ein Semaphorregister gesetzt, um jeden verfügbaren Prozessor zur parallelen Ausführung der Do-Schleife einzuladen. Die Parameter für die parallele Ausführung werden in den in Figur 3 gezeigten Kommunikationsregisterblock geladen. Diese bestimmte Gabelungsinstruktion ("Spawn") wird durch eine Verbindungsinstruktion ("Join") etwa 13 Zeilen später abgeschlossen. Jeder Prozessor, der einen Pfad zur Ausführung aufnimmt, führt die erforderlichen Prozeßoperationen aus und begegnet dann der Verbindungsinstruktion. Diese "Join"-Instruktion veranlaßt den Prozessor, zu überprüfen, ob er den letzten Pfad ausführt oder nicht. Wenn nicht, kehrt er in den Leerlauf zustand zurück und sucht nach einem anderen parallelen Prozeß zur Ausführung. Wenn er der letzte ist, dann beginnt er mit der Ausführung des seriellen Pfades, der auf die Verbindung folgt.
  • Genau vor der mit "L7" bezeichneten Zeile befindet sich eine weitere Gabelungsinstruktion ("Spawn"), die anzeigt, daß die Operationen in dem mit "20" bezeichneten Quellbefehl parallel ausgeführt werden können. Diese Gabelungsinstruktion wird durch eine Verbindungsinstruktion ("Join") nahe dem Ende der Liste abgeschlossen.
  • Die Funktionsweise der vorliegenden Erfindung wird nun unter Bezugnahme auf die Figuren und insbesondere auf Figur 5 weiter beschrieben. Figur 5 illustriert ebenfalls das Pfadkonzept der vorliegenden Erfindung. Wie in dieser Figur dargestellt, wird ein Prozeß A seriell als ein einzelner Pfad 110 durch den Prozessor P0 durchgeführt. Die Prozessoren P1 und P3 sind im Leerlauf. Ein Prozeß B ist in Ausführung durch den Prozessor P2. Zum Zeitpunkt T1 führt Prozessor P0 eine Gabelungsinstruktion ("Spawn") im Prozeß A aus. Die Prozeßstatusinformation für die parallele Ausführung des Codes in Prozeß A wird in einen entsprechenden Kommunikationsregistersatz geschrieben. Die leerlaufenden Prozessoren P1 und P3 bemerken das Semaphor, das in dem Kommunikationsregistersatz gesetzt ist, und nehmen die Pfade 116 und 118 zur Ausführung auf. Prozessor P1 übernimmt den Pfad 114 zur Ausführung und, bis zum Zeitpunkt T2, arbeiten die Prozessoren P0, P1 und P3 parallel Code für Prozeß A ab. Zum Zeitpunkt T2 schließt Prozessor P2 Prozeß B ab und geht in den Leerlaufzustand über. Prozessor P2 nimmt dann Pfad 120 von Prozeß A an und wird der vierte Prozessor bei der gleichzeitigen Ausführung von Prozeß A.
  • Zum Zeitpunkt T3 empfängt Prozessor P3 einen Unterbrechungsbefehl und beginnt mit der Ausführung des Betriebssystems. Dies dauert bis zum Zeitpunkt T4, zu dem der Prozessor T3 zur Ausführung des Pfades 118 zurückgeht.
  • Prozessor P0 schließt die Ausführung des Pfades 114 zum Zeitpunkt T5 ab und führt eine Verbindungsinstruktion ("Join") aus. Da die anderen Prozessoren immer noch Pfade von Prozeß A ausführen, geht Prozessor P0 in den Leerlauf zustand.
  • Prozessoren P1 und P3 schließen die Ausführung der Pfade 116 und 118 zum Zeitpunkt T6 ab und gehen in den Leerlaufzustand über, da Prozessor P2 immer noch Pfad 120 von Prozeß A ausführt.
  • Zum Zeitpunkt T7 schließt Prozessor P2 die Ausführung von Pfad 120 ab und führt eine Verbindungsinstruktion ("Join") aus. Da keine anderen Prozessoren mehr einen Teil von Prozeß A ausführen, beginnt Prozessor P2 mit der seriellen Ausführung von Prozeß A mit Pfad 124.
  • Zum Zeitpunkt T8 tritt ein Unterbrechungsbefehl für Prozessor P0 auf, um diesen Prozessor zur Ausführung des Betriebssystems zu veranlassen. Zum Zeitpunkt T9 beginnt der Prozessor P0 mit der Ausführung eines neuen Programms C mit Pfad 126.
  • Wie aus der obigen Beschreibung erkennbar ist, kann ein einzelner Prozeß auf einem oder mehreren Prozessoren ausgeführt werden und nach einer Aufgabelung kann der ursprüngliche Prozeß auf einem anderen Prozessor fortgeführt werden. Der Prozeß selbst weiß nicht, welcher Prozessor den Prozeß ausführt oder wieviele Prozessoren den Prozeß ausführen. Diese Verfahrensweise schafft große Unabhängigkeit für das Computersystem und eine verbesserte Ausnutzung der Mehrzahl von Prozessoren.
  • Obwohl eine Ausführungsform der Erfindung in den folgenden Zeichnungen dargestellt und in der vorhergehenden detaillierten Beschreibung beschrieben worden ist, ist dies so zu verstehen, daß die Erfindung nicht auf die beschriebene Ausführungsform beschränkt ist, sondern zu einer Vielzahl von Neuanordnungen, Abwandlungen und Ersetzungen in der Lage ist.

Claims (4)

1. Verfahren zur parallelen Ausführung eines Prozesses in einem Computersystem (20) mit einer Mehrzahl von Prozessoren (24, 25, 26,..., N), wobei das Verfahren die Schritte aufweist:
Beginnen der Ausführung eines Prozesses durch Schreiben von Prozeßstatusparametern für den Prozeß in definierte Register (46A-46H) in einem Kommunikationsregistersatz (46), der für alle Prozessoren in dem System zugänglich ist,
Starten einer seriellen Ausführung des Instruktionscodes des Prozesses durch einen ersten der Prozessoren (24),
auf die Ausführung einer Parallelisierungsinstruktion für den Prozeß durch den ersten Prozessor (24), welche Parallelisierungsinstruktion parallele Prozeßoperationen für den Prozeß, welche parallel ausführbar sind, anzeigen, hin (a) Schreiben von zusätzlichen Prozeßstatusparametern für den Prozeß in den Kommunikationsregistersatz (46), um anderen der Prozessoren (26) zu ermöglichen, bei der Ausführung der parallelen Prozeßoperationen für den Prozeß mitzuwirken, und (b) Signalisieren an alle anderen Prozessoren (25,..., N), daß paralle Prozeßoperationen zur Ausführung bereitstehen, indem ein den Prozeßstatusparametern zugeordnetes Semaphorregister (48) gesetzt wird,
Überwachen des Semaphors (48) durch einen oder mehrere der anderen Prozessoren, wenn die anderen Prozessoren in einem Leerlauf zustand sind, um nachzuweisen, wann der erste Prozessor (24) das Semaphor (48) gesetzt hat, um die anderen Prozessoren zur Mitwirkung in der Ausführung von parallelen Prozeßoperationen des Prozesses auf zufordern, und
auf den Nachweis der Setzung des Semaphors (48) durch einen oder mehrere der anderen Prozessoren hin Zugreifen auf die in dem Kommunikationsregistersatz (46) gespeicherten Prozeßstatusparameter und Beginnen der Ausführung der parallelen Prozeßoperationen durch den einen oder die mehreren Prozessoren.
2. Verfahren nach Anspruch 1, welches den Schritt einschließt Rückführen aller bis auf einen von dem einen oder mehreren Prozessoren, die die parallelen Prozeßoperationen ausgeführt haben, in einen Leerlauf zustand und Fortführen der seriellen Ausführung des Prozesses durch den verbleibenden einen von dem einen oder mehreren Prozessoren.
3. Verfahren nach Anspruch 2, wobei der eine der Prozessoren, der die serielle Ausführung des Prozesses fortsetzt, der letzte von dem einen oder mehreren Prozessoren ist, um die Ausführung der parallelen Prozeßoperationen zu beenden.
4. Verfahren nach Anspruch 1, wobei der Schritt des Beginnens der Ausführung eines Prozesses durch ein Betriebssystem des Computersystems ausgeführt wird, wobei das Betriebssystem in einem der Prozessoren arbeitet.
DE68921906T 1988-02-29 1989-01-25 Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. Expired - Lifetime DE68921906T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/161,768 US5050070A (en) 1988-02-29 1988-02-29 Multi-processor computer system having self-allocating processors

Publications (2)

Publication Number Publication Date
DE68921906D1 DE68921906D1 (de) 1995-05-04
DE68921906T2 true DE68921906T2 (de) 1995-07-27

Family

ID=22582640

Family Applications (2)

Application Number Title Priority Date Filing Date
DE68928848T Expired - Fee Related DE68928848T2 (de) 1988-02-29 1989-01-25 Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern
DE68921906T Expired - Lifetime DE68921906T2 (de) 1988-02-29 1989-01-25 Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE68928848T Expired - Fee Related DE68928848T2 (de) 1988-02-29 1989-01-25 Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern

Country Status (3)

Country Link
US (1) US5050070A (de)
EP (2) EP0330836B1 (de)
DE (2) DE68928848T2 (de)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261108A (en) * 1988-10-08 1993-11-09 Nec Corporation Multiprocessor communications register providing complete access in a full access mode, and mapped access in a partial access mode
DE69031233T2 (de) * 1989-02-24 1997-12-04 At & T Corp Adaptive Arbeitsfolgeplanung für Mehrfachverarbeitungssysteme
US5353418A (en) * 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
WO1990014629A2 (en) * 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
US5127092A (en) * 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
DE3923872A1 (de) * 1989-07-19 1991-01-24 Philips Patentverwaltung Schaltungsanordnung zum steuern des zugriffs auf einen speicher
US5249293A (en) * 1989-06-27 1993-09-28 Digital Equipment Corporation Computer network providing transparent operation on a compute server and associated method
US5247676A (en) * 1989-06-29 1993-09-21 Digital Equipment Corporation RPC based computer system using transparent callback and associated method
US5430876A (en) * 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
EP0422310A1 (de) * 1989-10-10 1991-04-17 International Business Machines Corporation Verteilter Mechanismus für die schnelle Planung von gemeinsamen Objekten
JPH0640324B2 (ja) * 1989-10-26 1994-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプロセス同期方法
US5263169A (en) * 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5524255A (en) * 1989-12-29 1996-06-04 Cray Research, Inc. Method and apparatus for accessing global registers in a multiprocessor system
JPH04219859A (ja) * 1990-03-12 1992-08-10 Hewlett Packard Co <Hp> 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
JP2818016B2 (ja) * 1990-08-09 1998-10-30 株式会社日立製作所 プロセス並列実行方法および装置
US5381540A (en) * 1990-08-13 1995-01-10 Dallas Semiconductor Corporation Interface: interrupt masking with logical sum and product options
US5349680A (en) * 1990-11-07 1994-09-20 Kabushiki Kaisha Toshiba Information processing apparatus for executing application programs under control of a system program
US5257372A (en) * 1990-12-19 1993-10-26 Cray Research, Inc. Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system
US5434970A (en) * 1991-02-14 1995-07-18 Cray Research, Inc. System for distributed multiprocessor communication
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5895489A (en) * 1991-10-16 1999-04-20 Intel Corporation Memory management system including an inclusion bit for maintaining cache coherency
US5349682A (en) * 1992-01-31 1994-09-20 Parallel Pcs, Inc. Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors
CA2106280C (en) * 1992-09-30 2000-01-18 Yennun Huang Apparatus and methods for fault-tolerant computing employing a daemon monitoring process and fault-tolerant library to provide varying degrees of fault tolerance
US5892944A (en) * 1993-07-20 1999-04-06 Kabushiki Kaisha Toshiba Program execution and operation right management system suitable for single virtual memory scheme
DK0635784T3 (da) * 1993-07-23 2000-03-27 Siemens Ag Multiprocessorsystem.
JPH0784973A (ja) * 1993-09-16 1995-03-31 Fujitsu Ltd マルチ処理プロセッサ制御装置および制御方法
US5537542A (en) * 1994-04-04 1996-07-16 International Business Machines Corporation Apparatus and method for managing a server workload according to client performance goals in a client/server data processing system
US5473773A (en) * 1994-04-04 1995-12-05 International Business Machines Corporation Apparatus and method for managing a data processing system workload according to two or more distinct processing goals
US5606666A (en) * 1994-07-19 1997-02-25 International Business Machines Corporation Method and apparatus for distributing control messages between interconnected processing elements by mapping control messages of a shared memory addressable by the receiving processing element
US6327607B1 (en) 1994-08-26 2001-12-04 Theseus Research, Inc. Invocation architecture for generally concurrent process resolution
US5550970A (en) * 1994-08-31 1996-08-27 International Business Machines Corporation Method and system for allocating resources
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
US5740350A (en) * 1995-06-30 1998-04-14 Bull Hn Information Systems Inc. Reconfigurable computer system
US5696939A (en) * 1995-09-29 1997-12-09 Hewlett-Packard Co. Apparatus and method using a semaphore buffer for semaphore instructions
US6532487B1 (en) 1995-12-04 2003-03-11 International Business Machines Corporation Method and system for managing semaphores in an object-oriented multi-tasking computer system
US5706514A (en) * 1996-03-04 1998-01-06 Compaq Computer Corporation Distributed execution of mode mismatched commands in multiprocessor computer systems
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US5799182A (en) * 1997-01-21 1998-08-25 Ford Motor Company Multiple thread micro-sequencer apparatus and method with a single processor
WO1998043193A2 (en) 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5938753A (en) * 1997-09-19 1999-08-17 International Business Machines Corporation Method and apparatus for controlling autonomous units transferring data between buses having different ordering policies
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US20040030873A1 (en) * 1998-10-22 2004-02-12 Kyoung Park Single chip multiprocessing microprocessor having synchronization register file
FR2799020A1 (fr) * 1999-09-28 2001-03-30 Koninkl Philips Electronics Nv Dispositif a plusieurs processeurs ayant une interface pour une memoire collective
US6738840B1 (en) * 1999-08-31 2004-05-18 Koninklijke Philips Electronics N.V. Arrangement with a plurality of processors having an interface for a collective memory
ATE390788T1 (de) 1999-10-14 2008-04-15 Bluearc Uk Ltd Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
US6804769B1 (en) * 2000-02-18 2004-10-12 Hewlett-Packard Development Company, L.P. Unified buffer for tracking disparate long-latency operations in a microprocessor
US6745274B1 (en) * 2000-04-25 2004-06-01 Hewlett-Packard Development Company, L.P. Apparatus and method for synchronizing multiple accesses to common resources
US7162718B1 (en) 2000-12-12 2007-01-09 International Business Machines Corporation Language extension for light weight threading in a JVM
US7124224B2 (en) * 2000-12-22 2006-10-17 Intel Corporation Method and apparatus for shared resource management in a multiprocessing system
US7178009B2 (en) * 2001-04-04 2007-02-13 Intel Corporation Different register data indicators for each of a plurality of central processing units
JP3702813B2 (ja) 2001-07-12 2005-10-05 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
JP3632635B2 (ja) 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7487504B2 (en) * 2002-02-06 2009-02-03 International Business Machines Corporation Thread dispatch for multiprocessor computer systems
US7363546B2 (en) * 2002-07-31 2008-04-22 Sun Microsystems, Inc. Latent fault detector
US7000091B2 (en) * 2002-08-08 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for independent branching in systems with plural processing elements
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7356568B2 (en) 2002-12-12 2008-04-08 International Business Machines Corporation Method, processing unit and data processing system for microprocessor communication in a multi-processor system
US7493417B2 (en) 2002-12-12 2009-02-17 International Business Machines Corporation Method and data processing system for microprocessor communication using a processor interconnect in a multi-processor system
US7359932B2 (en) * 2002-12-12 2008-04-15 International Business Machines Corporation Method and data processing system for microprocessor communication in a cluster-based multi-processor system
US7360067B2 (en) 2002-12-12 2008-04-15 International Business Machines Corporation Method and data processing system for microprocessor communication in a cluster-based multi-processor wireless network
US7451224B1 (en) 2003-04-23 2008-11-11 Cisco Technology, Inc. Method and apparatus for automatically synchronizing a unique identifier of a network device
US7631055B1 (en) 2003-04-23 2009-12-08 Cisco Technology, Inc. Method and apparatus providing automatic connection announcement from a modular network device to a network management point
US7523185B1 (en) 2004-01-13 2009-04-21 Cisco Technology, Inc. Method and apparatus for providing automatic frame relay and ATM provisioning of network devices
US7290164B1 (en) 2004-03-03 2007-10-30 Cisco Technology, Inc. Method of reverting to a recovery configuration in response to device faults
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US20060156316A1 (en) * 2004-12-18 2006-07-13 Gray Area Technologies System and method for application specific array processing
US8104030B2 (en) * 2005-12-21 2012-01-24 International Business Machines Corporation Mechanism to restrict parallelization of loops
WO2007084700A2 (en) * 2006-01-19 2007-07-26 University Of Maryland Office Of Technology Commercialization System and method for thread handling in multithreaded parallel computing of nested threads
US20070250681A1 (en) * 2006-04-10 2007-10-25 International Business Machines Corporation Independent programmable operation sequence processor for vector processing
US7673166B2 (en) * 2006-10-24 2010-03-02 Hewlett-Packard Development Company, L.P. Computation of processor clock frequency ratios
US20080114506A1 (en) * 2006-11-10 2008-05-15 Davis Christopher L Hard landing detection
US8051423B2 (en) * 2007-02-06 2011-11-01 Mba Sciences, Inc. System and method for tracking resources during parallel processing
US8065681B2 (en) * 2007-10-12 2011-11-22 International Business Machines Corporation Generic shared memory barrier
US20090182983A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Compare and Branch Facility and Instruction Therefore
EP2435914B1 (de) * 2009-05-26 2019-12-11 Telefonaktiebolaget LM Ericsson (publ) Verfahren und planer in einem betriebssystem
US10834109B2 (en) * 2014-12-23 2020-11-10 Mcafee, Llc Determining a reputation for a process
US9582312B1 (en) 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL134125C (de) * 1958-04-25
US3229260A (en) * 1962-03-02 1966-01-11 Ibm Multiprocessing computer system
US3346851A (en) * 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3337854A (en) * 1964-07-08 1967-08-22 Control Data Corp Multi-processor using the principle of time-sharing
US3348210A (en) * 1964-12-07 1967-10-17 Bell Telephone Labor Inc Digital computer employing plural processors
US3374465A (en) * 1965-03-19 1968-03-19 Hughes Aircraft Co Multiprocessor system having floating executive control
US3386082A (en) * 1965-06-02 1968-05-28 Ibm Configuration control in multiprocessors
US3541516A (en) * 1965-06-30 1970-11-17 Ibm Vector arithmetic multiprocessor computing system
US3440611A (en) * 1966-01-14 1969-04-22 Ibm Parallel operations in a vector arithmetic computing system
US3480914A (en) * 1967-01-03 1969-11-25 Ibm Control mechanism for a multi-processor computing system
US3496551A (en) * 1967-07-13 1970-02-17 Ibm Task selection in a multi-processor computing system
US3593300A (en) * 1967-11-13 1971-07-13 Ibm Arrangement for automatically selecting units for task executions in data processing systems
US3614742A (en) * 1968-07-09 1971-10-19 Texas Instruments Inc Automatic context switching in a multiprogrammed multiprocessor system
US3611306A (en) * 1969-02-05 1971-10-05 Burroughs Corp Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system
US3560934A (en) * 1969-06-10 1971-02-02 Ibm Arrangement for effecting vector mode operation in multiprocessing systems
US3643227A (en) * 1969-09-15 1972-02-15 Fairchild Camera Instr Co Job flow and multiprocessor operation control system
US3648253A (en) * 1969-12-10 1972-03-07 Ibm Program scheduler for processing systems
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
CS164932B2 (de) * 1971-09-07 1975-11-28
GB1434186A (en) * 1972-04-26 1976-05-05 Gen Electric Co Ltd Multiprocessor computer systems
USRE27703E (en) * 1972-09-05 1973-07-24 Configuration control in multiprocessors
US3916383A (en) * 1973-02-20 1975-10-28 Memorex Corp Multi-processor data processing system
US3833889A (en) * 1973-03-08 1974-09-03 Control Data Corp Multi-mode data processing system
FR2253423A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4073005A (en) * 1974-01-21 1978-02-07 Control Data Corporation Multi-processor computer system
US4130865A (en) * 1974-06-05 1978-12-19 Bolt Beranek And Newman Inc. Multiprocessor computer apparatus employing distributed communications paths and a passive task register
US4034347A (en) * 1975-08-08 1977-07-05 Bell Telephone Laboratories, Incorporated Method and apparatus for controlling a multiprocessor system
JPS5841538B2 (ja) * 1975-12-04 1983-09-13 株式会社東芝 マルチプロセツサシステム ノ ユウセンセイギヨホウシキ
US4318174A (en) * 1975-12-04 1982-03-02 Tokyo Shibaura Electric Co., Ltd. Multi-processor system employing job-swapping between different priority processors
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4228495A (en) * 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system
US4481580A (en) * 1979-11-19 1984-11-06 Sperry Corporation Distributed data transfer control for parallel processor architectures
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
IT1126475B (it) * 1979-12-03 1986-05-21 Honeywell Inf Systems Apparato di comunicazione tra piu' processori
FR2471631B1 (fr) * 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
NL7909178A (nl) * 1979-12-20 1981-07-16 Philips Nv Rekenmachine met verspreide redundantie welke is verdeeld over verschillende isolatiegebieden voor fouten.
US4318173A (en) * 1980-02-05 1982-03-02 The Bendix Corporation Scheduler for a multiple computer system
US4368514A (en) * 1980-04-25 1983-01-11 Timeplex, Inc. Multi-processor system
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
JPS57757A (en) * 1980-06-04 1982-01-05 Hitachi Ltd Job execution schedule system
CH651950A5 (de) * 1980-10-20 1985-10-15 Inventio Ag Multiprozessoranordnung.
US4495570A (en) * 1981-01-14 1985-01-22 Hitachi, Ltd. Processing request allocator for assignment of loads in a distributed processing system
JPS57121750A (en) * 1981-01-21 1982-07-29 Hitachi Ltd Work processing method of information processing system
FR2500659B1 (fr) * 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
JPS57164340A (en) * 1981-04-03 1982-10-08 Hitachi Ltd Information processing method
US4394727A (en) * 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
US4445197A (en) * 1981-10-27 1984-04-24 International Business Machines Corporation Weak synchronization and scheduling among concurrent asynchronous processors
US4543627A (en) * 1981-12-14 1985-09-24 At&T Bell Laboratories Internal communication arrangement for a multiprocessor system
US4507726A (en) * 1982-01-26 1985-03-26 Hughes Aircraft Company Array processor architecture utilizing modular elemental processors
JPS58134357A (ja) * 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
JPS58225422A (ja) * 1982-06-25 1983-12-27 Toshiba Corp デ−タ制御装置
US4691280A (en) * 1982-06-28 1987-09-01 The Singer Company High performance multi-processor system
US4539637A (en) * 1982-08-26 1985-09-03 At&T Bell Laboratories Method and apparatus for handling interprocessor calls in a multiprocessor system
US4530051A (en) * 1982-09-10 1985-07-16 At&T Bell Laboratories Program process execution in a distributed multiprocessor system
JPS5955565A (ja) * 1982-09-24 1984-03-30 Fujitsu Ltd マルチフア−ムウエア方式
NL8204038A (nl) * 1982-10-20 1984-05-16 Philips Nv Multiprocessorrekenmachinesysteem, bevattende n parallel werkende rekenmachinemodules, en rekenmachinemodule te gebruiken in zo een multiprocessorrekenmachinesysteem.
US4482956A (en) * 1982-11-04 1984-11-13 International Business Machines Corporation Parallel queueing method
US4504906A (en) * 1982-11-30 1985-03-12 Anritsu Electric Company Limited Multiprocessor system
US4543626A (en) * 1982-12-06 1985-09-24 Digital Equipment Corporation Apparatus and method for controlling digital data processing system employing multiple processors
US4633387A (en) * 1983-02-25 1986-12-30 International Business Machines Corporation Load balancing in a multiunit system
SE435975B (sv) * 1983-03-18 1984-10-29 Ellemtel Utvecklings Ab Anordning i ett datorstyrt telekommunikationssystem for att vid overforing av datainformation mellan en regional processor och en central processor medelst ett kosystem utfora lastreglering
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
EP0131658B1 (de) * 1983-07-08 1987-10-28 International Business Machines Corporation Synchronisationsvorrichtung für ein Multiprocessing-System
US4591975A (en) * 1983-07-18 1986-05-27 Data General Corporation Data processing system having dual processors
US4646231A (en) * 1983-07-21 1987-02-24 Burroughs Corporation Method of synchronizing the sequence by which a variety of randomly called unrelated activities are executed in a digital processor
US4589063A (en) * 1983-08-04 1986-05-13 Fortune Systems Corporation Data processing system having automatic configuration
JPS6077265A (ja) * 1983-10-05 1985-05-01 Hitachi Ltd ベクトル処理装置
JPS6079460A (ja) * 1983-10-07 1985-05-07 Nec Corp 密結合多重演算装置における制御方式
GB8328396D0 (en) * 1983-10-24 1983-11-23 British Telecomm Multiprocessor system
US4639856A (en) * 1983-11-04 1987-01-27 International Business Machines Corporation Dual stream processor apparatus
US4660141A (en) * 1983-12-06 1987-04-21 Tri Sigma Corporation Self configuring computer network with automatic bus exchange of module identification numbers and processor assigned module numbers
US4635187A (en) * 1983-12-19 1987-01-06 At&T Bell Laboratories Control for a multiprocessing system program process
US4569017A (en) * 1983-12-22 1986-02-04 Gte Automatic Electric Incorporated Duplex central processing unit synchronization circuit
US4683531A (en) * 1984-07-02 1987-07-28 Ncr Corporation Polling method for data processing system
US4704680A (en) * 1984-08-15 1987-11-03 Tektronix, Inc. Address computation system for updating starting addresses of data arrays in an array processor within an instruction cycle
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
JPS61114363A (ja) * 1984-11-07 1986-06-02 Hitachi Ltd 計算機システム間ジヨブ転送方式
US4674036A (en) * 1984-11-23 1987-06-16 Gte Communication Systems Corporation Duplex controller synchronization circuit for processors which utilizes an address input
US4642756A (en) * 1985-03-15 1987-02-10 S & H Computer Systems, Inc. Method and apparatus for scheduling the execution of multiple processing tasks in a computer system
US4725946A (en) * 1985-06-27 1988-02-16 Honeywell Information Systems Inc. P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment

Also Published As

Publication number Publication date
EP0330836A3 (de) 1992-04-29
DE68928848T2 (de) 1999-06-10
EP0623875A3 (de) 1995-07-05
EP0623875A2 (de) 1994-11-09
EP0623875B1 (de) 1998-11-04
US5050070A (en) 1991-09-17
DE68921906D1 (de) 1995-05-04
DE68928848D1 (de) 1998-12-10
EP0330836A2 (de) 1989-09-06
EP0330836B1 (de) 1995-03-29

Similar Documents

Publication Publication Date Title
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE68925646T2 (de) Pipeline-multiprozessorsystem
DE3210816C2 (de)
DE69408601T2 (de) System und Verfahren zur Emulierung von Vielfachprozess-Pipelines in einer Einprozessumgebung
DE69428396T2 (de) Bildverarbeitungssystem mit Fliessbandarbeitsprinzip für Einzelanwendungsumgebung
DE69637020T2 (de) Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen
DE68926956T2 (de) Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem
DE69522842T2 (de) Gleichzeitige Verarbeitung in parallelen und fast parallelen objektorientierten Systemen
DE69622305T2 (de) Verfahren und Gerät für einen optimierenden Kompiler
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE3638572C2 (de)
DE69909829T2 (de) Vielfadenprozessor für faden-softwareanwendungen
DE69032418T2 (de) Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
DE3686789T2 (de) Vektorverarbeitungsgeraet.
DE69130630T2 (de) Synchrones Verfahren und Gerät für Prozessoren
DE69030523T2 (de) Synchronisierung für Multiprozessorsystem
DE3750625T2 (de) Datenverarbeitungssystem mit zwei Ausführungseinheiten.
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE68921776T2 (de) Prozessorssimulation.
DE2430127C2 (de) Einrichtung zur Steuerung des Speicherzugriffs konkurrierender Benutzer
DE69132675T2 (de) Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
DE68921775T2 (de) Prozessorssimulation.
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE2317870C2 (de) Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage

Legal Events

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

Owner name: HEWLETT-PACKARD CO., PALO ALTO, CALIF., US

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE