DE69033272T2 - Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem - Google Patents

Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem

Info

Publication number
DE69033272T2
DE69033272T2 DE69033272T DE69033272T DE69033272T2 DE 69033272 T2 DE69033272 T2 DE 69033272T2 DE 69033272 T DE69033272 T DE 69033272T DE 69033272 T DE69033272 T DE 69033272T DE 69033272 T2 DE69033272 T2 DE 69033272T2
Authority
DE
Germany
Prior art keywords
cluster
computer processing
memory
processing system
processors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69033272T
Other languages
English (en)
Other versions
DE69033272D1 (de
Inventor
Douglas Beard
Steve Chen
Roger Eckert
Edward Miller
Frederick Simmons
George Spix
Jimmie Wilson
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.)
Cray Research LLC
Original Assignee
Cray Research LLC
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23823339&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69033272(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Cray Research LLC filed Critical Cray Research LLC
Publication of DE69033272D1 publication Critical patent/DE69033272D1/de
Application granted granted Critical
Publication of DE69033272T2 publication Critical patent/DE69033272T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3632Software debugging of specific synchronisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

    TECHNISCHES GEBIET
  • Diese Erfindung betrifft allgemein das Gebiet paralleler Computerarchitekturen für Vielfachprozessor-Computerverarbeitungssysteme mit sehr hoher Geschwindigkeit, die zu einer skalaren und vektoriellen Parallelverarbeitung in der Lage sind. Die vorliegende Erfindung betrifft insbesondere ein Verfahren und eine Vorrichtung zum Erzeugen einer Clusterarchitektur für ein hochparalleles skalares/vektorielles Vielfachprozessorsystem. Die Clusterarchitektur sieht einen oder mehrere Cluster eng gekoppelter Hochgeschwindigkeitsprozessoren vor, die zu einer vektoriellen und einer skalaren Parallelverarbeitung in der Lage sind, durch die symmetrisch auf dem Cluster zugeordnete geteilte Betriebsmittel sowie auf anderen Clustern zugeordnete geteilte Betriebsmittel zugegriffen werden kann.
  • STAND DER TECHNIK
  • Verschiedene manchmal als Höchstleistungscomputer bezeichnete Hochgeschwindigkeits-Computerverarbeitungssysteme wurden entwickelt, um eine Vielzahl rechenintensiver Anwendungen, wie solche aus den Bereichen Wettermodellierung, Strukturanalyse, Flüssigkeitsdynamik, numerische Physik, Kerntechnik, Echtzeitsimulation, Signalverarbeitung usw., zu lösen. Die Architekturen solcher gegenwärtiger Höchstleistungscomputersysteme können im allgemeinen in eine von zwei breiten Kategorien eingeteilt werden, nämlich minimal parallele Verarbeitungssysteme und massiv parallele Verarbeitungssysteme.
  • Die minimal parallele Klasse von Höchstleistungscomputern umfaßt sowohl Einzelprozessoren als auch Vielfachprozessoren mit geteiltem Speicher. Ein Einzelprozessor ist ein Prozessor mit sehr hoher Geschwindigkeit, der zahlreiche Funktionselemente, eine vektorielle Verarbeitung, Pipeline- und Vorausschautechniken verwendet, um die Rechengeschwindigkeit des einzelnen Prozessors zu erhöhen. Vielfachprozessoren mit geteiltem Speicher bestehen aus einer geringen Anzahl von Hochgeschwindigkeitsprozessoren (typischerweise zwei, vier oder acht), die eng miteinander und mit einem gemeinsamen geteilten Speicher gekoppelt sind, wobei eine über einen Bus verbundene oder eine direkt verbundene Architektur verwendet wird.
  • Die massiv parallele Klasse von Höchstleistungscomputern umfaßt sowohl Matrixprozessoren als auch Vielfachcomputer mit verteiltem Speicher. Matrixprozessoren bestehen im allgemeinen aus einer sehr großen Matrix von Einzelbitprozessoren oder kleinen Prozessoren, die in einem Ein-Befehl- mehrere-Daten-(SIMD)-Modus arbeiten, der beispielsweise bei der Signal- oder Bildverarbeitung verwendet wird. Vielfachcomputer mit verteiltem Speicher weisen auch eine sehr große Anzahl von Computern (typischerweise 1024 oder mehr) auf, die unter Verwendung einer Vielzahl von Verbindungstopologien, wie Hyperwürfel-, Ring-, Schmetterlingsschalter- und Hyperbaum-Topologien zum Übermitteln von Meldungen und Daten zwischen den Computern in einem Vielfach-Befehlvielfach-Daten-(MIMD)-Modus locker miteinander gekoppelt sind.
  • Der Begriff Vielfachprozessor betrifft so, wie er innerhalb der vorliegenden Erfindung verwendet wird, ein eng gekoppeltes Vielfachprozessor-Computerverarbeitungssystem mit geteiltem Speicher. Der Begriff Vielfachcomputer betrifft ein locker gekoppeltes Vielfachprozessor-Computerverarbeitungssystem mit verteilten lokalen Speichern. Die Begriffe eng gekoppelt und locker gekoppelt betreffen die relative Schwierigkeit und die zeitliche Verzögerung beim Übermitteln von Meldungen und Daten zwischen Prozessoren. Eng gekoppelte Prozessoren teilen sich ein gemeinsames Verbindungsmittel, und sie reagieren relativ schnell auf Meldungen und Daten, die zwischen Prozessoren ausgetauscht werden. Locker gekoppelte Computer teilen sich andererseits nicht unbedingt ein gemeinsames Verbindungsmittel, und sie können relativ langsam auf zwischen den Computern ausgetauschte Meldungen und Daten reagieren. Eine Architektursemantik für die bestehenden Architekturen moderner Höchstleistungscomputer bei Verwendung dieser Definitionen ist in "Parallel Processing for Supercomputers and Artificial Intelligence", S. 31-67 (1989) von Hwang, K. dargelegt. Bei den meisten Anwendungen, bei denen ein Höchstleistungscomputersystem nützlich ist, besteht das Ziel darin, ein Computerverarbeitungssystem mit der höchsten Verarbeitungsgeschwindigkeit und dem größten Problemlösungsraum, also der Fähigkeit, eine große Vielzahl traditioneller Anwendungsprogramme zu verarbeiten, bereitzustellen. In einem Versuch, den Problemlösungsraum und die Verarbeitungsgeschwindigkeit von Höchstleistungscomputersystemen zu erhöhen, wurden die zuvor beschriebenen minimal parallelen und massiv parallelen Architekturen in Höchstleistungscomputersysteme aufgenommen.
  • Es wird erkannt werden, daß parallele Computerverarbeitungssysteme unter Aufteilen eines komplexen Auftrags in Prozesse und unter Verteilen der Programmbefehle und Daten für diese Prozesse zwischen den verschiedenen Prozessoren und anderen Betriebsmitteln, die das Computerverarbeitungssystem bilden, arbeiten. Bei parallelen Computerverarbeitungssystemen wird der Aufwand der zwischen Synchronisationspunkten in einem Auftrag auszuführenden Verarbeitung als Granularität des Auftrags bezeichnet. Falls es zwischen Synchronisationspunkten einen geringen Verarbeitungsaufwand gibt, wird der Auftrag als feinkörnig bezeichnet. Falls es zwischen Synchronisationspunkten einen hohen Verarbeitungsaufwand gibt, wird der Auftrag als grobkörnig bezeichnet. Im allgemeinen ist der Synchronisations- und Kommunikationsbedarf zwischen Prozessoren unabhängig davon, ob das Computerverarbeitungssystem ein minimal paralleles oder massiv paralleles System ist, um so größer, je feiner die Granularität eines Auftrags ist. Die Ausnahme dieser Situation ist das SIMD-Prozessormatrixsystem, das äußerst parallele Probleme bearbeitet, bei denen die begrenzte Lokalität der geteilten Daten eine Kommunikation zwischen nur sehr wenigen Prozessoren erfordert.
  • Die Vorgehensweise bei gegenwärtigen massiv parallelen Computerverarbeitungssystemen besteht darin, die Verarbeitungsgeschwindigkeit durch Erhöhen der Anzahl der an einem Problem arbeitenden Prozessoren zu erhöhen. Die Verarbeitungsgeschwindigkeit jedes parallelen Computerverarbeitungssystems sollte theoretisch durch die mit der Verarbeitungsgeschwindigkeit jedes Prozessors multiplizierte Anzahl der beim Lösen einer gegebenen Aufgabe verwendeten Prozessoren gegeben sein. Tatsächlich verhindern die bei gegenwärtigen parallelen Computerverarbeitungssystemen stets vorhandenen Probleme, daß sie ihr volles Potential verwirklichen. Die Hauptprobleme massiv paralleler Computerverarbeitungssysteme bestehen darin, daß sie nicht in der Lage sind, Aufgaben mit Erfolg in mehrere im allgemeinen gleiche, jedoch unabhängige Prozesse einzuteilen, und daß die Verteilung und die Koordination oder Synchronisation dieser Prozesse zwischen den verschiedenen Prozessoren und Betriebsmitteln während der tatsächlichen Verarbeitung schwierig sind. Die gegenwärtigen Architekturen für massiv parallele Computerverarbeitungssysteme können die Kommunikation und Koordination zwischen Prozessoren nicht wirksam genug ausführen, um den hohen Zusatzaufwand zur Einrichtung eines solchen Systems zu rechtfertigen, weil die Zwischenprozessorkommunikation bestenfalls indirekt erfolgt. Weiterhin opfern massiv parallele Systeme den Problemlösungsraum der Geschwindigkeit, indem sie von Benutzern fordern, traditionelle Anwendungen so umzuprogrammieren, daß sie zur verteilten Speicherarchitektur solcher Systeme passen. Diese Probleme ähneln in Analogie den Problemen, die verhindern, daß ein 1000 Personenstunden benötigender Auftrag von 1000 Arbeitern in einer einzigen Stunde abgeschlossen wird.
  • Minimal parallele Computerverarbeitungssysteme versuchen andererseits, den Problemlösungsraum und die Verarbeitungsgeschwindigkeit durch Erhöhen der Geschwindigkeit der einzelnen Prozessoren zu vergrößern. Solche minimal parallelen Systeme haben einen größeren Problemraum, weil ein geteiltes Speichersystem erforderlich ist, um traditionelle Anwendungsprogramme auszuführen. Unglücklicherweise nähert sich die Taktgeschwindigkeit der bei gegenwärtigen minimal parallelen Computerverarbeitungssystemen verwendeten einzelnen Prozessoren den praktischen und theoretischen Grenzen, die unter Verwendung der heutigen Halbleitertechnolo gie erreichbar sind. Wenngleich diese Technik bei grobkörnigen Problemen relativ gut funktioniert, bei denen die Zwischenprozessorkommunikation begrenzt ist, begrenzt die geringe Anzahl von Prozessoren unabhängig von der Geschwindigkeit jedes einzelnen Prozessors die Anzahl der unabhängigen Parallelprozesse, die gleichzeitig ausgeführt werden können. Wiederum in Analogie kann eine 1000 Personenstunden beanspruchende Aufgabe selbst dann, wenn jede Person zweimal so schnell wie eine normale Person arbeiten kann, nicht in weniger als 125 Stunden abgeschlossen werden, wenn maximal vier Personen an der Aufgabe arbeiten können.
  • Es wäre im Idealfall wünschenswert, die Direktverbindungsverfahren der Zwischenprozessorkommunikation minimal paralleler Computerverarbeitungssysteme auf die Anzahl der bei massiv parallelen Computerverarbeitungssystemen verwendeten Prozessoren zu erweitern. Unglücklicherweise begrenzen die gegenwärtigen Direktverbindungsverfahren des Koordinierens von Prozessoren bei minimal parallelen Systemen erheblich die Anzahl der Prozessoren, die wirksam miteinander verbunden werden können, und sie können nicht so erweitert werden, daß sie der Anzahl der Prozessoren dienen, die bei einem massiv parallelen System verwendet werden. Beispielsweise wird bei der Architektur für das von Cray Research, Inc. entwickelte Cray-X-MP-Höchstleistungscomputersystem, die Gegenstand des US-Patents 4 363 942 ist, ein Verklemmungs-Unterbrechungsmittel zum Koordinieren von zwei Hochgeschwindigkeitsprozessoren verwendet. Wenngleich dieser Typ eines eng gekoppelten Direktverbindungsverfahrens ein wirksames Mittel zum Koordinieren zweier Hochgeschwindigkeitsprozessoren ist, ist der in dieser Erfindung beschriebene Hardwareverklemmungs-Unterbrechungsmechanismus am wirksamsten, wenn die Anzahl der miteinander gekoppelten Prozessoren sehr gering ist, also acht oder weniger beträgt.
  • Wegen der stets vorhandenen Begrenzungen der gegenwärtigen Architekturen minimal paralleler und massiv paralleler Höchstleistungscomputersysteme sind solche Computerverarbeitungssysteme nicht in der Lage, erheblich erhöhte Verarbeitungsgeschwindigkeiten und Problemlösungsräume gegenüber aktuellen Systemen zu erreichen. Daher ist eine neue Architektur zum Verbinden von Parallelprozessoren und zugeordneten Betriebsmitteln erforderlich, die es ermöglicht, die Geschwindigkeit und Koordination aktueller minimal paralleler Vielfachprozessorsysteme auf größere Anzahlen von Prozessoren auszudehnen, wobei auch einige der mit massiv parallelen Vielfachcomputersystemen verbundenen Synchronisationsprobleme gelöst werden. Dieser Bereich zwischen minimal parallelen und massiv parallelen Systemen wird als hochparallele Computerverarbeitungssysteme bezeichnet und kann Vielfachprozessorsysteme mit 16 bis 1024 Prozessoren einschließen.
  • Bis heute waren die einzigen Versuche zum Festlegen einer zur Verwendung bei solchen hochparallelen Computerverarbeitungssystemen geeigneten Architektur Höchstleistungscomputer mit einer Speicherhierarchie. Bei diesen Systemen ist irgendeine Art eines hierarchischen oder geteilten Speichers in das Höchstleistungscomputersystem eingebaut.
  • Beim an der Universität von Illinois entwickelten Cedar- Höchstleistungscomputersystem wird ein Zweistufenschalter zum Verbinden eines existierenden Clusters von Prozessoren in Form eines Alliant-FX/8-Acht-Prozessor- Höchstleistungscomputers zu einem externen globalen Spei chermodul verwendet. Bei diesem System ist der globale Speicher vom Clusterspeicher getrennt und abgesetzt. Die Koordination zwischen Clustern wird durch Umspeichern von Daten- oder Befehlsblöcken in jeden Clusterspeicher oder aus diesem heraus von gemeinsamen Daten- oder Befehlsblöcken im globalen Speicher erreicht, wie in "Parallel Supercomputing Today and the Cedar Approach", Science, Band 231, S. 967-974 (Februar 1986) von Kuck, D. beschrieben ist.
  • In US-A-4 667 287 ist ein weiteres Clustersystem offenbart. Die Prozessoren jedes Clusters sind mit zwei Zwischenprozessorbussen und ihren jeweiligen Clustermodulen verbunden.
  • Beim von Control Data Corporation entwickelten, aber nun aufgegebenen ETA-10-Höchstleistungscomputersystem hat jeder von acht Prozessoren eine Registerdatei und einen zentralen Prozessorspeicher. Auch hat jeder Prozessor Zugriff auf einen gemeinsamen geteilten Speicher und einen geteilten virtuellen Speicher, der im Plattenspeicher existiert und über achtzehn Ein-/Ausgabeeinheiten zugänglich ist. Ein Kommunikationspuffer, der nicht Teil des virtuellen Speichersystems ist, bietet schnelle Verriegelungs- und Synchronisationsfunktionen, wie in ETA10 System Overview: EOS, Tech, Note, Publ. 1006, Rev. B, ETA Systems, September 30, 1988 beschrieben ist.
  • Beim am IBM Watson Research Center entwickelten RP3- Höchstleistungscomputersystem sind 512 32-Bit- Mikroprozessoren zusammen in acht Gruppen von 64 Mikroprozessoren konfiguriert. Jeder Mikroprozessor hat seinen eigenen lokalen Speicher, wobei ein Teil davon während der Ausführungszeit eines bestimmten Auftrags als globaler Speicher umkonfigurierbar sein kann. Im wesentlichen wird die lokale/globale Grenze in einem Versuch, die Granularität des Systems zu maximieren, während Zwischenprozessor- Kommunikationsengpässe minimiert werden, zu Beginn jedes Auftrags dynamisch bestimmt, wie in "The IBM Research Parallel Processor Prototype (RP3): Introduction and Architecture", International Conference an Parallel Processing, S. 764-771, August 1985 von Pfister, G. beschrieben ist.
  • Das Hauptproblem bei der Verwendung dieser Arten von Architekturen mit einer Speicherhierarchie für hochparallele Höchstleistungscomputersysteme besteht darin, daß die Struktur jedes Softwareanwendungsprogramms optimiert werden muß, um zur speziellen Speicherhierarchiearchitektur dieses Höchstleistungscomputersystems zu passen. Mit anderen Worten muß der Softwareprogrammierer wissen, wie der Speicher in der Speicherhierarchie aufgeteilt ist, um den Auftrag in ähnlicher Weise in Aufgaben einzuteilen, um die Verarbeitungsgeschwindigkeit für den speziellen Auftrag zu optimieren. Falls ein Auftrag nicht für die spezielle Speicherhierarchie optimiert ist, geschieht es nicht nur, daß sich der Speicherhierarchie-Höchstleistungscomputer nicht seiner maximalen theoretischen Verarbeitungsgeschwindigkeit nähert, sondern die Verarbeitungsgeschwindigkeit kann wegen der Speicherverschwendung, die zwischen den verschiedenen Speicherebenen auftreten kann, tatsächlich geringer sein als bei anderen vergleichbaren Höchstleistungs-Computern.
  • Wenngleich es die gegenwärtigen Architekturen für Höchstleistungscomputersysteme diesen Systemen ermöglicht haben, Spitzenleistungsfähigkeiten im Bereich von 0,2 bis 2,4 GFLOPS (Milliarden Gleitkommaoperationen je Sekunde) zu erreichen, wäre es vorteilhaft, ein Verfahren und eine Vorrichtung zum Erzeugen einer Clusterarchitektur für ein hochparalleles skalares/vektorielles Vielfachprozessorsystem zu erzeugen, das in der Lage ist, zwischen 16 und 1024 Prozessoren in einer hochparallelen Architektur wirksam miteinander zu verbinden, um Spitzengeschwindigkeiten im Bereich von 10 bis 1000 GFLOPS zu erreichen. Es besteht insbesondere ein Bedarf an einer hochparallelen Architektur für ein Vielfachprozessor-Computerverarbeitungssystem, die einen symmetrischen Zugriff aller Prozessoren auf alle geteilten Betriebsmittel zuläßt und die Notwendigkeit zur Optimierung von Softwareanwendungen für eine spezielle Speicherhierarchie minimiert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Gemäß der ersten Erscheinungsform der vorliegenden Erfindung ist ein Entscheidungsnetzwerk für ein Computerverarbeitungssystem vorgesehen, wobei das System Betriebsmittelteilungsmittel zur Speicherung und Wiedergewinnung von Daten und Steuerinformationen, wenigstens 4 Prozessormittel zur Durchführung einer Computerverarbeitung von Daten und von Steuerinformationen und wenigstens zwei externe Schnittstellenmittel zur Übertragung von Daten und Steuerinformationen zwischen den Betriebsmittelteilungsmitteln und einer oder mehreren externen Datenquellen aufweist, wobei das Entscheidungsnetzwerk aufweist: wenigstens zwei Entscheidungsknotenmittel, wobei jedes Entscheidungsknotenmittel operativ mit wenigstens zwei eindeutigen der Prozessoren, wenigstens einem eindeutigen der externen Schnittstellenmittel und den Betriebsmittelteilungsmitteln zur symmetrischen Kopplung der Prozessoren und der externen Schnittstellenmittel mit den Betriebsmittelteilungsmitteln durch Entscheidung unter einer Anzahl von Anforderungsports, welche den wenigstens zwei Prozessormitteln und dem wenigstens einen Schnittstellenmittel zugeordnet sind, und einer Anzahl von Betriebsmittelports, welche den Betriebsmittelteilungsmitteln zugeordnet sind, operativ verbunden ist, um gleichzeitige Zusammenschaltungen zwischen ausgewählten Anforderungsports und Betriebsmittelports zur Verfügung zu stellen, wobei das Verhältnis der Anzahl der Prozessormittel zu der Anzahl der Entscheidungsknotenmittel größer oder gleich 2 ist.
  • Gemäß einer zweiten Erscheinungsform der vorliegenden Erfindung ist ein Computerverarbeitungssystem mit einem Vielfachprozessor-Cluster für ein hochparalleles Computerverarbeitungssystem vorgesehen, wobei der Vielfachprozessor- Cluster zur Verbindung mit anderen ähnlichen Vielfachprozessor-Clustern in dem hochparallelen Computerverarbeitungssystem eingerichtet ist, wobei der Vielfachprozessor- Cluster aufweist: Betriebsmittelteilungsmittel zur Speicherung und Wiedergewinnung von Daten und Steuerinformationen, P Prozessormittel zur Ausführung einer Computerverarbeitung von Daten und Steuerinformationen, wobei P eine ganze Zahl von 4 bis 256 ist, Q externe Schnittstellenmittel zur Übertragung von Daten und Steuerinformationen zwischen den Betriebsmittelteilungsmitteln und einer oder mehreren externen Datenquellen, wobei Q eine ganze Zahl von 2 bis 256 ist, und Z Entscheidungsknotenmittel, welche operativ mit den Prozessormitteln, den externen Schnittstellenmitteln und den Betriebsmittelteilungsmitteln zur symmetrischen Kopplung der Prozessormittel und der externen Schnittstellenmittel mit den Betriebsmittelteilungsmitteln verbunden sind, wobei Z eine ganze Zahl von 2 bis 128 ist und das Verhältnis von P zu Z größer oder gleich 2 ist. Das hochparallele Vielfachprozessorsystem gemäß der vorliegenden Erfindung besteht aus einem oder mehreren operativ miteinander verbundenen Vielfachprozessor-Clustern. Jeder Vielfachprozessor-Cluster beinhaltet geteilte Betriebsmittel zum Speichern und Wiedergewinnen von Daten und Steuerinformationen, mehrere eng gekoppelte Hochgeschwindigkeitsprozessoren, die zu einer vektoriellen und einer skalaren Parallelverarbeitung in der Lage sind, und mehrere verteilte externe Schnittstellen, die die Übertragung von Daten und Steuerinformationen zwischen den geteilten Betriebsmitteln und einer oder mehreren externen Datenquellen ermöglichen. Alle Prozessoren und externen Schnittstellen in einem Cluster sind sowohl innerhalb der Cluster als auch zwischen den Clustern über mehrere Entscheidungsknoten symmetrisch mit den geteilten Betriebsmitteln gekoppelt. Wenigstens zwei Prozessoren sind mit jedem Entscheidungsknoten verbunden. Für einen Zwischenclusterzugriff ist ein jedem Cluster zugeordneter Fernclusteradapter operativ mit Fernclusteradaptern in allen anderen Clustern verbunden. Der Fernclusteradapter ermöglicht es den Entscheidungsknoten in einem Cluster, auf die geteilten Betriebsmittel aller anderen Cluster zuzugreifen, und er ermöglicht es auch allen anderen Clustern, auf die geteilten Betriebsmittel innerhalb dieses Clusters zuzugreifen. Der Fernclusteradapter ermöglicht es, daß die innerhalb eines Clusters existierende symmetrische Architektur auf mehr als einen Vielfachprozessor-Cluster ausgedehnt wird.
  • Die geteilten Betriebsmittel der vorliegenden Erfindung beinhalten einen geteilten Hauptspeicher, eine geteilte Gruppe globaler Register und einen geteilten Unterbrechungsmechanismus. Der Zugriff auf die geteilten Betriebsmittel ist unabhängig davon, ob die Prozessoren und externen Schnittstellen mit demselben Entscheidungsknoten, mit verschiedenen Entscheidungsknoten im selben Cluster oder mit Entscheidungsknoten in verschiedenen Clustern verbunden sind, zwischen allen Prozessoren und externen Schnittstellen äquivalent und symmetrisch. Wenngleich die durchschnittlichen Zugriffszeiten für Anforderungen von geteilten Betriebsmitteln zwischen Anforderungen innerhalb von Clustern und Anforderungen zwischen Clustern etwas unterschiedlich sein können, unterscheiden sich die Protokolle und Formate dieser Anforderungen nicht. Der Bedarf an einer Auftragsoptimierung, die ansonsten erforderlich wäre, um einer bestimmten Speicherhierarchie Rechnung zu tragen, ist bei der vorliegenden Erfindung durch die Symmetrie des Bugriffs auf die geteilten Betriebsmittel minimiert.
  • Ein weiteres wichtiges Merkmal der vorliegenden Erfindung sind die verteilten externen Schnittstellen, die eine Kommunikation von Daten und Steuerinformationen zwischen den geteilten Betriebsmitteln und externen Datenquellen ermöglichen. Diese externen Datenquellen können beispielsweise Sekundärspeichersysteme (SMS-Systeme), Plattenlaufwerk- Speichersysteme, andere externe Prozessoren, wie Leitprozessoren oder Vorprozessoren, Kommunikationsnetzwerke und herkömmliche Ein-/Ausgabevorrichtungen, wie Drucker, Bildschirme und Arbeitsplatzrechner, umfassen. Die externen Schnittstellen sind bei der vorliegenden Erfindung mit einem oder mehreren Ein-/Ausgabe-Konzentratoren verbunden. Die Ein-/Ausgabe-Konzentratoren sind wiederum mit mehreren Kanaladaptern zum Koppeln mit externen Datenquellen (Peripherievorrichtungen) über Standardkanäle und mit einem einzigen Hochgeschwindigkeitskanal zum Koppeln mit einem SMS- System verbunden. Anders als die zentralen Ein- /Ausgabesteuerungen der vorliegenden Höchstleistungscomputersysteme mit geteiltem Speicher oder die gepufferten Ein- /Ausgabesysteme gegenwärtiger Höchstleistungscomputersysteme mit einer Speicherhierarchie erhöhen die verteilten ex ternen Schnittstellen gemäß der vorliegenden Erfindung die wirksame Übertragungsbandbreite zwischen den geteilten Betriebsmitteln und den externen Datenquellen. Weil die Verantwortlichkeit für die Ein-/Ausgabekommunikation über mehrere externe Schnittstellen verteilt ist und weil die externen Schnittstellen über mehrere Entscheidungsknoten mit den geteilten Betriebsmitteln verbunden sind, sind Übertragungsengpässe verringert.
  • Die vorliegende Erfindung betrifft eine Architektur für ein hochparalleles skalares/vektorielles Vielfachprozessorsystem mit einem größeren Problemlösungsraum und einer höheren Verarbeitungsgeschwindigkeit als bei gegenwärtigen Höchstleistungscomputerarchitekturen. Diese Ziele werden durch die Symmetrie und die Ausgebogenheit des Aufbaus dieser Architektur auf mehreren Ebenen erreicht. Erstens wird den Prozessoren und den externen Schnittstellenmitteln ein gleichwertiger und symmetrischer Zugriff auf alle geteilten Betriebsmittel gewährt. Zweitens sind alle Prozessoren, externen Schnittstellenmittel und geteilten Betriebsmittel in der Lage, verteilt und demokratisch zu arbeiten. Dies ermöglicht es, daß die Prozessoren und die externen Schnittstellenmittel von der Betriebssystemsoftware als gleiche anfordernde Stellen angesehen werden. Drittens wird der Entwurf des Zugriffs auf das geteilte Betriebsmittel aus der Perspektive des geteilten Betriebsmittels und nicht aus der Perspektive des anfordernden Prozessors oder der anfordernden Ein-/Ausgabevorrichtung erzeugt. Schließlich kann das Betriebssystem bei der bevorzugten Ausführungsform die verschiedenen Prozesse von einem oder mehreren Benutzerprogrammen bei der Zuordnung dieser Prozesse zwischen den verschiedenen Prozessoren, externen Schnittstellenmittel und geteilten Betriebsmittel der vorliegenden Erfindung als gleiche und symmetrische Prozesse behandeln. Die Symmetrie der anfordernden Stellen ist im wesentlichen von der Zuordnung der Funktionseinheiten innerhalb eines Prozessors bis zur Zuordnung von Prozessen zu den verschiedenen Betriebsmitteln durch das Betriebssystem auf allen Ebenen der Architektur vorhanden. Die Symmetrie der Architektur ist bei der vorliegenden Erfindung von der Ebene oder dem Umfang der erwogenen Anforderung von Betriebsmitteln unabhängig.
  • Weiterhin wird bei der Architektur der vorliegenden Erfindung die Tatsache erkannt und verwendet, daß zwischen dem Zeitpunkt, zu dem eine anfordernde Stelle ein Betriebsmittel anfordert, und dem Zeitpunkt, zu dem das Betriebsmittel der anfordernden Stelle antwortet, eine Verzögerung auftritt. Bei der vorliegenden Erfindung wird im wesentlichen eine Pipelinetechnik zwischen einer Gruppe von anfordernden Stellen und den diesen anfordernden Stellen zugeordneten Betriebsmitteln verwendet, so daß zahlreiche Anforderungen eingeleitet werden können, ohne daß es erforderlich ist, auf den Abschluß einer früheren Anforderung zu warten.
  • Diese Pipelinetechnik ist in der ganzen Architektur der vorliegenden Erfindung auf jeder Ebene vorhanden. Auf der Prozessorebene werden ein skalares Mittel und ein vektorielles Mittel gleichzeitig pipelineförmig auf verschiedene Funktionseinheiten angewendet, um arithmetische und logische Operationen auszuführen. Auf der Entscheidungsknotenebene werden Anforderungen der geteilten Betriebsmittel auf einer symmetrischen Grundlage pipelineförmig angeordnet und eingereiht, und es wird auf einer symmetrischen Grundlage über sie entschieden. Auf der Clusterebene ordnet der Fernclusteradapter Anforderungen zwischen Clustern pipelineförmig an, reiht sie ein und entscheidet über sie. Auf der Be triebssystemebene werden die globalen Register und Unterbrechungsmechanismen verwendet, um auszuführende Prozesse pipelineförmig anzuordnen und einzureihen. Weiterhin unterstützt der Prozessor die pipelineförmige Ausführung während und durch den Übergang vom Benutzer zum Betriebssystem und zurück zum Benutzer, der auftritt, wenn eine Betriebssystemanforderung vorgenommen wird oder ein Signal (eine Unterbrechung) empfangen wird. Auf der Kompilationsebene verwendet der Kompilierer einen Datenmarkierungsmechanismus und einen Lade- und Kennzeichnungsmechanismus zum pipelineförmigen Anordnen von Aktivitäten geteilter Betriebsmittel innerhalb und zwischen Funktionseinheiten, Adressenströmen, Datenports, Teilprozessen, Prozessoren, externen Schnittstellenmitteln und Clustern. Weiterhin wird die Befehlspipeline durch die Verwendung des Füllbefehls durch den Kompilierer zum Vorladen des Befehls-Cache erhalten.
  • Eine Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Erzeugen einer Clusterarchitektur für ein hochparalleles skalares/vektorielles Vielfachprozessorsystem bereitzustellen, das in der Lage ist, 16 bis 1024 Hochgeschwindigkeitsprozessoren in einer hochparallelen Architektur wirksam miteinander zu verbinden, durch die Spitzengeschwindigkeiten im Bereich von 10 bis 1000 GFLOPS erreicht werden können.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, einen Vielfachprozessor-Cluster aus eng gekoppelten Hochgeschwindigkeitsprozessoren bereitzustellen, der zu einer vektoriellen und einer skalaren Parallelverarbeitung in der Lage ist und der auf geteilte Betriebsmittel im selben Cluster und in verschiedenen Clustern symmetrisch zugreifen kann.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine Clusterarchitektur für ein hochparalleles skalares/vektorielles Vielfachprozessorsystem bereitzustellen, das den symmetrischen Zugriff aller Prozessoren auf alle geteilten Betriebsmittel ermöglicht und die Anforderung zum Optimieren von Softwareanwendungen für eine spezielle Speicherhierarchie minimiert.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, eine Clusterarchitektur für ein hochparalleles skalres/vektorielles Vielfachprozessorsystem mit verteilten externen Schnittstellen bereitzustellen, die eine Kommunikation von Daten und Steuerinformationen zwischen geteilten Betriebsmitteln und externen Datenquellen ermöglichen.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Mechanismen bereitzustellen, um die Verwirklichung paralleler Hochleistungsanwendungen jenseits des aktuellen Gebrauchs unter Einschluß einer Architekturunterstützung von Gleitkommaberechnungen mit erhöhter Genauigkeit, Festkommaberechnungen mit unbegrenzter Genauigkeit, einer booleschen Einheit für Hochleistungsbitmatrixmanipulationen, verschachtelter Parallelitätsebenen, des Anhaltens aller zusammenwirkenden Prozessoren bei einem Fehler und des Anhaltens aller zusammenwirkenden Prozessoren, wenn auf bestimmte Speicherstellen Bezug genommen wird, zu unterstützen.
  • Diese und andere Aufgaben der vorliegenden Erfindung werden anhand der Zeichnung, der detaillierten Beschreibung der bevorzugten Ausführungsform und der anliegenden Ansprüche verständlich werden.
  • BESCHREIBUNG DER ZEICHNUNG
  • Fig. 1 ist ein Blockdiagramm eines einzelnen Vielfachprozessor-Clusters gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Die Fig. 2a und 2b sind ein Blockdiagramm einer Vier- Cluster-Verwirklichung der bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 3 ist ein Blockdiagramm eines einzelnen Vielfachprozessor-Clusters, in dem das Entscheidungsknotenmittel der bevorzugten Ausführungsform dargestellt ist.
  • Fig. 4 ist ein Blockdiagramm eines einzelnen skalaren/vektoriellen Prozessors gemäß der bevorzugten Ausführungsform.
  • Fig. 5 ist ein detaillierteres Blockdiagramm der Befehlsausführung-Logikelemente des in Fig. 4 dargestellten skalaren Mittels.
  • Fig. 6 ist ein detaillierteres Blockdiagramm des in Fig. 4 dargestellten vektoriellen Mittels.
  • Fig. 7 ist ein Blockdiagramm der booleschen Einheit beim vektoriellen Mittel der bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 8 ist ein Blockdiagramm der verschiedenen Befehlspuffer, die den Befehls-Cache aufweisen.
  • Fig. 9 ist ein vereinfachtes Blockdiagramm des Betriebsablaufs eines Pufferfüllvorgangs des Befehls-Cache.
  • Fig. 10 ist ein Blockdiagramm des Bereichs des Hauptspeichers, der real einem einzelnen Cluster zugeordnet ist.
  • Die Fig. 11a und 11b sind Blockdiagramme für das Adressentranslationsschema der bevorzugten Ausführungsform.
  • Die Fig. 12a und 12b sind Diagramme der Speicheradressierungsschemata der vorliegenden Erfindung.
  • Fig. 13 ist ein Gesamtblockdiagramm eines einzelnen Entscheidungsknotens.
  • Fig. 14 ist ein detailliertes Blockdiagramm des Speicherdatenflusses zwischen einem Entscheidungsknoten und einem Speicherabschnitt.
  • Fig. 15 ist eine schematische Darstellung eines Zustandsdiagramms für ein MRT-System mit vier anfordernden Stellen gemäß der vorliegenden Erfindung.
  • Die Fig. 16a, 16b, 16c, 16d und 16e sind Zustandsdiagramme für das in Fig. 15 dargestellte MRT-System mit vier anfordernden Stellen.
  • Fig. 17 ist ein schematisches Diagramm eines Bankentscheidungsnetzwerks, in der eine Matrix relativer Zustände eines MRT-Systems mit siebzehn anfordernden Stellen dargestellt ist.
  • Die Fig. 18a, 18b und 18c sind detaillierte Schaltungsdiagramme für die in Fig. 17 dargestellte Matrix relativer Zustände für das MRT-System.
  • Die Fig. 19a und 19b sind Blockdiagramme für das MRCA- und das NRCA-Mittel.
  • Fig. 20 ist eine schematische Darstellung der verschiedenen Typen von Konflikten zwischen geteilten Betriebsmitteln, die bei der vorliegenden Erfindung auftreten können.
  • Die Fig. 21a, 21b, 21c und 21d sind schematische Darstellungen der Pipelinetechniken des Stands der Technik und der vorliegenden Erfindung.
  • Fig. 22 ist ein Blockdiagramm der globalen Register der vorliegenden Erfindung.
  • Fig. 23 ist ein Blockdiagramm eines Dateimittels globaler Register innerhalb der in Fig. 22 dargestellten globalen Register.
  • Fig. 24 ist eine schematische Darstellung eines Ablaufdiagramms, in dem die Adressierung globaler Register dargestellt ist.
  • Die Fig. 25a und 25b sind schematische Darstellungen der Abbildung realer Adressen globaler Register und der Verwirklichung der Adressen globaler Register.
  • Fig. 26 ist eine schematische Darstellung der Verwirklichung einer Signalvorrichtungsauswahl.
  • Fig. 27 ist ein Gesamtblockdiagramm, in dem die Signale (Unterbrechungen) der vorliegenden Erfindung dargestellt sind.
  • Die Fig. 28a und 28b sind Blockdiagramme der Schnelle- Unterbrechung-Einrichtung der vorliegenden Erfindung.
  • Fig. 28c ist ein detailliertes Schaltungsdiagramm der in den Fig. 28a und 28b dargestellten Schnelle- Unterbrechung-Einrichtung.
  • Fig. 29 ist ein Gesamtblockdiagramm des Ein-/Ausgabe- Untersystems der vorliegenden Erfindung.
  • Fig. 30a, 30b und 30c sind schematische Diagramme der verschiedenen Befehlsformate.
  • Fig. 31 ist ein schematisches Flußdiagramm der Verarbeitung einer Unterbrechung, einer Ausnahme oder eines Systemaufrufs.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Mit Bezug auf Fig. 1 wird nun ein einzelner Vielfachprozessor-Cluster gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung beschrieben. Eine Clusterarchitektur für ein hochparalleles skalares/vektorielles Vielfachprozessorsystem gemäß der vorliegenden Erfindung ist in der Lage, mehrere Hochgeschwindigkeitsprozessoren 10 zu unterstützen, die eine große Gruppe geteilter Betriebsmittel 12 (beispielsweise einen Hauptspeicher 14, globale Register 16 und Unterbrechungsmechanismen 18) geteilt verwenden. Die Prozessoren 10 sind zu einer vektoriellen und einer skala ren Parallelverarbeitung in der Lage und über ein Entscheidungsknotenmittel 20 mit den geteilten Betriebsmitteln 12 verbunden. Die Prozessoren 10 sind auch über das Entscheidungsknotenmittel 20 und mehrere externe Schnittstellenmittel 22 und Ein-/Ausgabe-Konzentratormittel 24 mit einer Anzahl externer Datenquellen 26 verbunden. Die externen Datenquellen 26 können ein Sekundärspeichersystem (SMS- System) 28 aufweisen, das über einen Hochgeschwindigkeitskanal 30 mit dem Ein-/Ausgabe-Konzentratormittel 24 verknüpft ist. Die externen Datenquellen 26 können auch eine Anzahl anderer peripherer Vorrichtungen und Schnittstellen 32 aufweisen, die über einen oder mehrere Standardkanäle 34 mit dem Ein-/Ausgabe-Konzentratormittel verknüpft sind. Die peripheren Vorrichtungen und Schnittstellen 32 können Plattenspeichersysteme, Bandspeichersysteme, Endgeräte und Arbeitsstationen, Drucker, externe Prozessoren und Kommunikationsnetzwerke umfassen. Die Prozessoren 10, geteilten Betriebsmittel 12, Entscheidungsknotenmittel 20 und externen Schnittstellenmittel 22 weisen zusammen einen einzelnen Vielfachprozessor-Cluster 40 für ein hochparalleles vektorielles/skalares Vielfachprozessorsystem gemäß der vorliegenden Erfindung auf.
  • Die vorliegende Erfindung löst die bei Schnittstellen mit Direktverbindung auftretenden Probleme gegenwärtiger Höchstleistungscomputersysteme mit geteiltem Speicher durch reales Organisieren der Prozessoren 10, geteilten Betriebsmittel 12, Entscheidungsknotenmittel 20 und externen Schnittstellenmittel 22 zu einem oder mehreren Clustern 40. Es gibt bei der in Fig. 2 dargestellten bevorzugten Ausführungsform vier Cluster, nämlich 40a, 40b, 40c und 40d. Jeder der Cluster 40a, 40b, 40c und 40d weist real seine eigene Gruppe von Prozessoren 10a, 10b, 10c und 10d, geteil ten Betriebsmitteln 12a, 12b, 12c und 12d und externen Schnittstellenmitteln 22a, 22b, 22c und 22d auf, die diesem Cluster zugeordnet sind. Die Cluster 40a, 40b, 40c und 40d sind über ein Fernclusteradaptermittel 42 miteinander verbunden, das ein integrierter Bestandteil jedes Entscheidungsknotenmittels 20a, 20b, 20c und 20d ist, wie später in näheren Einzelheiten erklärt wird. Wenngleich die Cluster 40a, 40b, 40c und 40d real getrennt sind, ermöglicht die logische Organisation der Cluster und die reale Verbindung über das Fernclusteradaptermittel 42 den gewünschten symmetrischen Zugriff auf alle geteilten Betriebsmittel 12a, 12b, 12c und 12d über alle Cluster 40a, 40b, 40c und 40d hinweg.
  • Bei der bevorzugten Ausführungsform eines einzelnen Clusters 40 sind, wie in Fig. 1 dargestellt ist, insgesamt 32 einzelne Prozessoren 10 und 32 externe Schnittstellenmittel 22 über das Entscheidungsknotenmittel 20 mit den geteilten Betriebsmitteln 12 verbunden. Die Clusterarchitektur gemäß der vorliegenden Erfindung ermöglicht das Organisieren von maximal 256 Prozessoren 10 und 256 externen Schnittstellenmitteln 22 zu einem einzelnen Cluster 40. Wenngleich vier Cluster 40a, 40b, 40c und 40d bei der in Fig. 2 dargestellten bevorzugten Ausführungsform miteinander verbunden sind, sei bemerkt, daß bei einem einzelnen hochparallelen Vielfachprozessorsystem gemäß der vorliegenden Erfindung maximal 256 Cluster miteinander verbunden werden können. Demgemäß würde sich bei einer vollen Erweiterung der Architektur der vorliegenden Erfindung ein Vielfachprozessorsystem mit 65536 Prozessoren ergeben.
  • Mit Bezug auf Fig. 3 wird nun die bevorzugte Ausführungsform des Entscheidungsknotenmittels 20 für einen einzelnen Cluster 40 beschrieben. Auf einer Konzeptebene beinhaltet das Entscheidungsknotenmittel 20 mehrere Kreuzschienenschaltermechanismen, die die Prozessoren 10 und externen Schnittstellenmittel 22 symmetrisch mit den geteilten Betriebsmitteln 12 im selben Cluster 40 und über das Fernclusteradaptermittel 42 mit den geteilten Betriebsmitteln 12 in anderen Clustern 40 verbinden. Typischerweise ermöglicht ein Voll-Kreuzschienenschalter das Verbinden jeder anfordernden Stelle mit jedem Betriebsmittel, wenn es eine entsprechende Anzahl von anfordernden Stellen und Betriebsmitteln gibt. Bei der vorliegenden Erfindung ermöglicht das Entscheidungsknotenmittel 20 das Erreichen eines ähnlichen Ergebnisses wie bei einem Voll-Kreuzschienenschalter, wenn es mehr anfordernde Stellen als Betriebsmittel gibt. Bei der bevorzugten Ausführungsform besteht das Entscheidungsknotenmittel 20 aus sechzehn Entscheidungsknoten 44 und dem Fernclusteradaptermittel 42. Das Fernclusteradaptermittel 42 ist in ein Knotenfernclusteradaptermittel (NRCA-Mittel) 46 und ein Speicherfernclusteradaptermittel (MRCA-Mittel) 48 unterteilt. Das NRCA-Mittel 46 ermöglicht es dem Entscheidungsknoten 44, auf das Fernclusteradaptermittel 42 aller anderen Vielfachprozessor-Cluster 40 zuzugreifen. In ähnlicher Weise steuert das MRCA-Mittel 48 den Zugriff des Fernclusteradaptermittels 42 aller anderen Vielfachprozessor-Cluster 40 auf die geteilten Betriebsmittel 12 dieses Clusters 40.
  • Bei dieser Ausführungsform verbinden die sechzehn Entscheidungsknoten 44 zweiunddreißig Prozessoren 10 und zweiunddreißig externe Schnittstellenmittel 22 mit dem Hauptspeicher 14 und dem NRCA-Mittel 46. Jeder Entscheidungsknoten 44 ist durch acht bidirektionale parallele Wege 50 mit dem Hauptspeicher 14 verbunden. Ein einzelner paralleler bidi rektionaler Weg 52 verbindet jeden Entscheidungsknoten 44 mit dem NRCA-Mittel 46. Bei der bevorzugten Ausführungsform wird derselbe Weg 52 von jedem Entscheidungsknoten 44 auch verwendet, um den Entscheidungsknoten 44 mit den globalen Registern 16 und dem Unterbrechungsmechanismus 18 zu verbinden, wenngleich zu bemerken ist, daß zum Erreichen dieser Verbindung getrennte Wege verwendet werden könnten. Wie weiter unten in näheren Einzelheiten erklärt wird, beträgt das minimale Verhältnis zwischen den Prozessoren 10 und den Entscheidungsknoten 44 2 : 1. Demgemäß beträgt die maximale Anzahl von Entscheidungsknoten 44 je Cluster 40 128.
  • Ebenso wie jeder der Entscheidungsknoten 44 ist das MRCA- Mittel 48 über acht parallele bidirektionale Wege 54 mit dem Hauptspeicher 14 verbunden. In ähnlicher Weise verbindet ein einziger paralleler bidirektionaler Weg 56 das MRCA-Mittel 48 mit den globalen Registern 16 und dem Unterbrechungsmechanismus 18. Es werden insgesamt sechs parallele bidirektionale Wege 58 verwendet, um den Cluster mit zwei bidirektionalen Wegen 58 von jedem Cluster zu jedem anderen Cluster zu verbinden. Beispielsweise weist der Cluster 40a zwei Wege 58 auf, die eine Verbindung mit jedem Cluster 40b, 40c und 40d herstellen. Auf diese Weise ermöglicht das MRCA-Mittel 48, daß andere Cluster 40 direkten Zugriff auf die geteilten Betriebsmittel 12 dieses Clusters 40 haben.
  • Die Wege 50, 52, 54, 56 und 58 weisen jeweils einen Anforderungsdatenweg und einen Speicherdatenweg mit Fehlerkorrekturcodes und Steuer- und Adreßsignalen mit Paritätsbits auf. Alle Wege 50, 52, 54, 56 und 58 sind in der Lage, Übertragungen bei einer Rate von einem Datenwort in jedem Taktzyklus anzufordern. Es wird geschätzt, daß die Latenz bei einem Zugriff auf ein geteiltes Betriebsmittel bei einer Zwischenclusteranforderung über die Wege 58 das 1,5- bis 2fache der Latenz eines Innerclusterzugriffs über die Wege 50 ist. Bei der bevorzugten Ausführungsform bestehen alle Wege aus zwei elektrischen Verbindungen, die ein differentielles Signal für jedes Informationsbit unterstützen können. Differentielle Signale werden zum Verringern des elektrischen Rauschens, von Überspannungen und von Interferenzen verwendet, die bei der bevorzugten Ausführungsform infolge der hohen Taktgeschwindigkeiten und der großen realen Nähe der Wege auf den Wegen 50, 52, 54, 56 und 58 auftreten können.
  • Anders als bei den Direktverbindungsschnittstellen der Höchstleistungscomputer mit einem geteilten Speicher oder dem unterteilten Speicher der Höchstleistungscomputer mit einem Hierarchiespeicher bietet das Entscheidungsknotenmittel 20 einen logisch symmetrischen Zugriff jedes Prozessors 10 auf alle geteilten Betriebsmittel 12 und minimiert die Anforderung, Softwareanwendungen für eine spezielle Speicherhierarchie zu optimieren. Diese Symmetrie des Zugriffs geschieht sowohl innerhalb des Clusters 40 als auch zwischen Clustern 40 über das Fernclusteradaptermittel 42. Wenngleich die vorliegende Erfindung die logische Fähigkeit, symmetrisch auf alle geteilten Betriebsmittel 12 in jedem Cluster 40 zuzugreifen, und die physikalische Gleichheit des symmetrischen Zugriffs auf alle geteilten Betriebsmittel 12 bereitstellt, wird verständlich sein, daß sich die Raten des realen Zugriffs auf das geteilte Betriebsmittel 12 ändern. Zum Verstehen, wie das Entscheidungsknotenmittel 20 einen symmetrischen Zugriff auf die geteilten Betriebsmittel 12 bereitstellen kann, ist es wichtig, die Organisation des Prozessors 10 und des Hauptspeichers 14 bei der vorliegenden Erfindung zu verstehen.
  • Der Prozessor
  • In Fig. 4 zeigt ein Blockdiagramm einen einzelnen Prozessor 100, der einen der mehreren Prozessoren 10 gemäß der bevorzugten Ausführungsform der vorliegenden Erfindung aufweist.
  • Der Prozessor 100 ist logisch und real in ein skalares Mittel 102 und ein vektorielles Mittel 104 unterteilt. Das skalare Mittel 102 und das vektorielle Mittel 104 haben jeweils ihre eigene Registergruppe und zweckgebundene arithmetische Betriebsmittel, wie weiter unten in näheren Einzelheiten beschrieben wird. Alle Register und Datenwege im Prozessor 100 sind 64 Bits (ein Wort) breit. Für das skalare Mittel 102 gibt es 64 skalare S-Register und 512 lokale L-Register. Die L-Register dienen als ein durch Software verwalteter Register-Cache für das skalare Mittel 102. Das vektorielle Mittel 104 weist 16 vektorielle V-Register auf. Die Architektur kann bis zu einer Gesamtkombination von 256 S- und V-Registern je Prozessor 100 unterstützen. Jeder Prozessor 100 weist auch bis zu 256 Steuer-C-Register auf (Fig. 5), die real über den Prozessor 100 verteilt sind und verwendet werden, um Steuerinformationen zu sammeln und festzulegen, die dem Betrieb des Prozessors zugeordnet sind.
  • Anders als die meisten bisherigen skalaren/vektoriellen Prozessoren sind das skalare Mittel 102 und das vektorielle Mittel 104, die den Hochgeschwindigkeitsprozessor 100 gemäß der bevorzugten Ausführungsform aufweisen, zu einem gleichzeitigen Betrieb in der Lage. Das skalare Mittel 102 und das vektorielle Mittel 104 weisen jeweils mehrere arithmetische Betriebsmittel in Form arithmetischer Funktionseinheiten 106 auf. Für das skalare Mittel 102 weisen die arithmetischen Funktionseinheiten 106 folgendes auf: eine skalare Einheit SU0 (Teilen, Abheben und Parität), eine skalare Einheit SU1 (Gleiten, Multiplikation, Multiplikation ganzer Zahlen und logische Operationen) sowie eine skalare Einheit SU2 (Gleiten, Addition, Addition ganzer Zahlen und Verschiebungsoperationen). Für das vektorielle Mittel 104 weisen die arithmetischen Funktionseinheiten 106 folgendes auf: eine vektorielle Einheit VU0 (Teilen, Abheben, Parität und boolescher Wert), vektorielle Einheiten VUl und W2 (Gleiten, Multiplikation, Multiplikation ganzer Zahlen und logische Operationen) sowie vektorielle Einheiten W3 und VU4 (Gleiten, Addition, Addition ganzer Zahlen, logische Operationen und Verschiebungsoperationen). Interne Wege 108 zu jeder der Funktionseinheiten 106 können in dem skalaren Mittel 102 und dem vektoriellen Mittel 104 unabhängig voneinander zugeordnet werden, und es können alle Funktionseinheiten 106 gleichzeitig arbeiten, wodurch es dem skalaren Mittel 102 und dem vektoriellen Mittel 104 ermöglicht wird, gleichzeitig zu arbeiten. Es werden zwischen dem skalaren Mittel 102 und dem vektoriellen Mittel 104 keine gemeinsamen Funktionseinheiten 106 geteilt.
  • Mit Bezug auf Fig. 5 sei bemerkt, daß das skalare Mittel 102 alle Steuerinformationen in Form von Anweisungen über einen Befehls-Cache 110 empfängt. Der Befehls-Cache 110 ist über einen Befehlsanforderungsport 112 mit einem Entscheidungsknoten 44 verbunden. Dem skalaren Mittel 102 und dem vektoriellen Mittel 104 werden über eine Reihe von Datenports Dateninformationen zugeführt. Ein einzelner bidirektionaler skalarer Datenport 114 unterstützt sowohl ein Le sen aus den S- und L-Registern im skalaren Mittel 102 als auch ein Schreiben in diese. Vier vektorielle Leseports 116 und zwei vektorielle Schreibports 118 unterstützen Datenübertragungen zum vektoriellen Mittel 104. Die Arbeitsweise der Ports 112, 114, 116 und 118 wird nachfolgend in näheren Einzelheiten in Zusammenhang mit der Erörterung der Entscheidungsknoten 44 beschrieben.
  • Eine Befehlsausführungseinheit 120 im skalaren Mittel 102 weist ein Decodier- und Ausgabemittel 122, ein Verzweigungslogikmittel 124, ein Programmzählerregister (PC- Register) 126 und ein Literalübertragungsmittel 128 auf. Die Befehlsausführungseinheit 120 ist hinsichtlich des Anforderns, Decodierens und Ausführens von Befehlen pipelineförmig aufgebaut. Die Befehlspipeline kann eine Befehlsausgaberate von einem Befehl je Zyklus aufrechterhalten. Alle Befehle werden direkt ohne das Unterstützen von Mikrocode decodiert. Die Befehlsausgabe und -steuerung wird für skalare und vektorielle Befehle getrennt durch das skalare Mittel 102 bzw. das vektorielle Mittel 104 behandelt. Ein- und Zwei-Paket-Befehle (32 Bits je Paket) werden im Befehls-Cache 110 unterstützt. Eine detailliertere Erörterung der Befehle des Prozessors 100 wird nachfolgend in Zusammenhang mit den Anhängen A und B vorgenommen.
  • Jeder Befehl, ob vektoriell oder skalar, hat einen als Ausgabe bezeichneten nominellen Anfangspunkt. Alle skalaren und vektoriellen Befehle müssen einen Befehl zur Zeit ausgeben (also mit seiner Ausführung beginnen). Nach dem Ausgabe-Taktzyklus werden unter Verwendung der verschiedenen arithmetischen Funktionseinheiten 106 des skalaren Mittels 102 bzw. des vektoriellen Mittels 104 Operanden pipelineförmig gelesen und Operationen pipelineförmig ausgeführt, falls diese Funktionen vom Befehl angefordert werden. Die Befehle können in jeder beliebigen Reihenfolge abgeschlossen werden.
  • Skalare und vektorielle Befehle müssen zur Ausgabe unterschiedliche Anforderungen erfüllen. Eine skalare Operation wird nicht eingeleitet, bevor alle Operandendaten und die erforderlichen Betriebsmittel verfügbar sind. Sobald ein skalarer Befehl ausgegeben wird, wird seine Ausführung in einer festgelegten Anzahl von Taktzyklen abgeschlossen. Anders als bei aktuellen Vektorprozessoren kann ein vektorieller Befehl bei der vorliegenden Erfindung ohne Berücksichtigung der Verfügbarkeit der erforderlichen vektoriellen Betriebsmittel ausgegeben werden. Es ist nicht nur möglich, daß die erforderlichen vektoriellen Daten nicht verfügbar sind, sondern es sind möglicherweise die V-Register, die Speicherports (wie weiter unten erklärt) und die Funktionseinheiten 106 alle belegt. Für das Ausgeben eines vektoriellen Befehls muß jedoch die Verfügbarkeit skalarer Daten geprüft werden, die möglicherweise erforderlich sind, wie es bei skalaren/vektoriellen Operationen oder bei einem für eine Speicheradresse erforderlichen skalaren Wert der Fall ist.
  • Mit Bezug auf Fig. 6 sei bemerkt, daß ein vektorieller Befehl "eingeleitet" werden muß, sobald er ausgegeben wurde. Die vektorielle Steuereinheit 130 beginnt jeden vektoriellen Befehl wiederum so, daß maximal einer je Taktzyklus ausgeführt wird, nachdem die Verfügbarkeit der erforderlichen Betriebsmittel für den vektoriellen Befehl geprüft wurde. Bei der bevorzugten Ausführungsform der vorliegenden Erfindung enthält eine vektorielle Einleitungswarteschlange 132 bis zu fünf vektorielle Befehle, die ausgegeben, aber noch nicht eingeleitet wurden. Ein vektorieller Befehl kann nur dann eingeleitet werden, wenn die erforderlichen V- Register nicht belegt sind. Ein vektorieller Befehl kann eingeleitet werden, bevor eine Funktionseinheit 106 oder ein Speicherport verfügbar ist, die vektorielle Steuereinheit 130 verzögert das erste Element der vektoriellen Operation jedoch so lange, bis die vorhergehende Operation bezüglich der Funktionseinheit 106 oder dem Speicherport abgeschlossen ist.
  • Wegen dem Unterschied zwischen der Ausgabe und dem Einleiten hinsichtlich des vektoriellen Mittels 104 befinden sich das vektorielle Mittel 104 und das skalare Mittel 102 nicht im Verriegelungsschritt, so daß keine Annahmen über die Synchronisation gemacht werden sollten. Zwischen dem skalaren Mittel 102 und dem vektoriellen Mittel 104 sollten Speichersynchronisationsregeln befolgt werden. Daß ein zweites Laden in ein V-Register eingeleitet worden ist, bedeutet beispielsweise noch nicht, daß das erste Laden in dieses V-Register abgeschlossen ist.
  • Mit Bezug auf Fig. 7 wird nun die Arbeitsweise der booleschen Einheit beschrieben. Die boolesche Einheit ist eine der dem vektoriellen Mittel 104 zugeordneten Funktionseinheiten 106. Die boolesche Einheit ist ein vom Benutzer programmierbares, vollständig pipelineförmiges, paralleles Bitmanipulationsmittel, das in der Lage ist, in jedem Takt einen 64-Bit-Operanden in ein 64-Bit-Ergebnis umzuwandeln. Dieses Bitmanipulationsmittel wird durch Laden einer 4096- Bit-Zustandsmatrix aus einem Vektorregister unter Verwendung des Idbool-Befehls programmiert. Die Zustandsmatrix spezifiziert die logische Transformation des Operandenbitstroms. Diese Transformation geschieht, wenn der boole sche Befehl mit einem Vektorregisteroperanden und einem Vektorregisterergebnis ausgeführt wird.
  • Mit Bezug auf die Fig. 8 und 9 wird nun die Arbeitsweise des Befehls-Cache 110 (Fig. 4 und 5) beschrieben. Der Befehls-Cache 110 besteht aus sechzehn Puffern 140. Jeder Puffer 140 kann 32 Wörter (64 Pakete) an Befehlen halten. Die Puffer sind logisch und real zu vier Spalten 142a, 142b, 142c und 142d mit vier Puffern 140 je Spalte 142a - d organisiert. Jede Spalte 142a - d weist eine Fülladressenlogik und eine Leseadressenlogik auf, die voneinander getrennt sind. Die Puffer 140 in jeder Spalte 142a - d sind so angeordnet, daß ein folgender Block von Adressen mit von 0-31 (Puffer 0, 1, 2 und 3), 32-63_(Puffer 4, 5, 6 und 7), 64-95 (Puffer 8, 9, 10 und 11) und 96-127 (Puffer 12, 13, 14 und 15) reichenden Adressen niederwertiger Bits adressiert wird. Auf diese Weise sind die Spalten 142a - d über vier Wege assoziativ, was bedeutet, daß ein Wort bei irgendeiner gegebenen Adresse abhängig von den höherwertigen Bits der Adresse in einer der vier Spalten 142a - d gefunden werden kann. Eine Wählpufferlogik 144 wird verwendet, um zu wählen, welche der vier Spalten 142a - d zur Befehlsausführungseinheit 120 hin multiplexiert wird (Fig. 5).
  • Im Grunde ist ein Befehls-Cache ein Kompromiß zwischen der Anforderung, Befehle dem Prozessor schnell verfügbar zu machen und der praktischen Unmöglichkeit, daß jeder Befehl an einer getrennt adressierbaren Speicherzelle gespeichert wird. Bei einem typischen Befehls-Cache wird ein einzelner kleinerer Block von Befehlen in eine Cache-Hardware mit einem schnelleren Zugriff geladen, um die Zugriffszeit zu erhöhen. Falls ein Befehl nicht im Cache gefunden wird (es wird beispielsweise aus dem Bereich des Cache herausgesprungen), müssen neue Befehle aus dem. Hautspeicher in den Cache geladen werden. Falls ein Programm viele Sprünge oder Verzweigungen enthält, kann dieser Prozeß des Ladens neuer Befehle in den Cache wiederholt ausgeführt werden, was zu einem als Cache-Verschwendung bekannten unerwünschten Zustand führt. Die Organisation des Befehls-Cache 110 als ein über vier Wege assoziativer Puffer ermöglicht es, daß beim Befehls-Cache 110 gemäß der bevorzugten Ausführungsform sowohl die Befehlsanforderungszeiten als auch die Cache- Verschwendung minimiert werden.
  • Bei der bevorzugten Ausführungsform enthält das PC-Register 126 (Fig. 5) eine 34-Bit-Wort-Adresse, die verwendet wird, um die 64-Bit-Wörter aus dem Befehls-Cache 110 abzurufen. Wörter werden aus dem Befehls-Cache 110 bei einer Rate von bis zu einem Wort je Taktzyklus abgerufen, je nachdem, wie es die Befehlsausführungseinheit 120 benötigt. Es gibt keinen Zyklus-Mehraufwand für Zwei-Paket-Befehle. Die im PC- Register 126 angetroffenen Adressen sind folgendermaßen definiert:
  • die Bits 0-4 wählen ein Wort innerhalb eines Puffers 140 aus,
  • die Bits 5-6 wählen einen Puffer 140 innerhalb einer Spalte 142 aus, und
  • die Bits 7-33 werden verwendet, um eine Übereinstimmung mit dem Etikett für diesen Befehl herzustellen.
  • Das Etikett für den Befehl wird erzeugt, wenn der Befehl aus dem Hauptspeicher 14 ausgelesen wird, wie weiter unten in dem Abschnitt bezüglich des Hauptspeichers beschrieben wird. Im allgemeinen kann das Etikett als die höherwertigen logischen Adreßbits für einen 32-Wort-Block von Befehlen angesehen werden. Für jeden Puffer 140 ist den in diesem Puffer gespeicherten Befehlen ein eindeutiges Etikett zugeordnet. Beispielsweise könnte der Puffer 0 die 32 Befehle enthalten, die die Adressen "1C00" bis "1C1F" aufweisen, und der Puffer 4 könnte die 32 Befehle enthalten, die die Adressen "C320" bis "C33F" aufweisen.
  • Falls für das Etikett des nächsten angeforderten Befehls nicht innerhalb von einem der Puffer 140 eine Übereinstimmung gefunden wird, tritt eine "Außerhalb-des-Puffers"- Bedingung auf, und die Hardware beginnt automatisch mit einem Pufferfüllvorgang. Einer der vier Puffer 14 0, der die gleichen niedrigstwertigen Bits wie der angeforderte Befehl (die Bits 0-4) enthält, wird während des Pufferfüllvorgangs zum Überschreiben auf einer "Am-längsten-nicht- benutzt-Grundlage" ausgewählt. Diesem Puffer wird ein neuer Etikettwert gegeben, und er wird vom Hauptspeicher 14 gefüllt. Der Pufferfüllvorgang beginnt mit dem Wort, auf das das PC-Register 126 zeigt, und durchläuft zyklisch alle 32 Wörter in diesem speziellen Puffer 140. Wenn der Pufferfüllvorgang abgeschlossen ist, enthält der Puffer 140 32 neue Befehlswörter, die im Hauptspeicher 14 als eine 32- Wort-Grenze angeordnet sind.
  • In Fig. 9 ist ein vereinfachtes Diagramm des Betriebsablaufs bei einem automatischen Pufferfüllvorgang dargestellt. Bei diesem Beispiel bewirkt ein Springe-zur-Stelle- "84"-Befehl den Pufferfüllvorgang, weil die Stelle "84" in keinem der Puffer 140 des Cache 110 gefunden wird. Eine der vier Spalten der Puffer 140 wird durch einen "Am-längsten- nicht-benutzt-Algorithmus" ausgewählt. Die Zeile wird auf der Grundlage der Bits 5-6 des PC-Registers 26 ausgewählt. Der Pufferfüllvorgang beginnt beim Wort "84" im Hauptspeicher 14, wird über das Ende des 32-Wort-Bereichs fortgesetzt und läuft dann zyklisch zur vorhergehenden 32- Wort-Grenze zurück und wird über das Wort "83" fortgesetzt, wodurch das Füllen des bestimmten Puffers 140 abgeschlossen wird. Auf diese Weise wird ein 32-Wort-Befehlsblock aus dem Hauptspeicher 14 geladen, das Zielwort wird jedoch zuerst geladen. Die Ausführung kann wiederaufgenommen werden, sobald das Wort "34" im Befehlspuffer 140 auftritt. Ein Programm kann durch Angeben eines "Füllbefehls" explizit einen Pufferfüllvorgang anfordern. Der Füllbefehl gibt eine Adresse im Hauptspeicher 14 an, er gibt jedoch nicht an, in welchen Puffer 140 die Befehle geladen werden. Der Puffer wird auf der Grundlage desselben Am-längsten-nicht-benutzt- Algorithmus ausgewählt, der in Reaktion auf eine Außerhalb- des-Puffers-Bedingung für ein automatisches Pufferfüllen verwendet wird.
  • Der Hauptspeicher
  • Mit Bezug auf Fig. 10 zeigt ein Blockdiagramm des Hauptspeichers 14 den geteilten Bereich des Hauptspeichers 14, der sich real innerhalb eines einzelnen Clusters 40 befindet. Der Speicherbereich 200 ist ein stark verschachteltes Mehrport-Speichersystem, das eine äußerst hohe Bandbreite bereitstellt. Bei der bevorzugten Ausführungsform ist der Speicherbereich 200 für jeden Cluster 40 zu acht Speicherabschnitten 202 organisiert. Die Architektur der vorliegenden Erfindung kann bis zu 256 Abschnitte 202 des Speichers je Cluster 40 unterstützen.
  • Jeder Speicherabschnitt 202 weist siebzehn Ports 204 zum Verbinden des Speicherabschnitts 202 mit den parallelen Lese-/Schreibwegen 50 und 54 auf. Ein Port 204 ist jedem der sechzehn Entscheidungsknotenmittel 20 zugeordnet, und der siebzehnte Port 204 unterstützt das MRCA-Mittel 48. Jeder Speicherabschnitt 202 ist durch eine Ein- und Ausgabesteuerlogik weiter in acht Unterabschnitte 206 eingeteilt. Jeder Unterabschnitt 206 weist acht Bänke 208 für einen Gesamt-Cluster-Bank-Verschachtelungsfaktor von 512 auf. Bei der bevorzugten Ausführungsform ist der Speicherbereich 200 unter Verwendung von 1-Megabit-SRAMs verwirklicht, die einen Gesamtspeicherplatz von 512 Millionen Wörtern je Cluster 40 bereitstellen, wobei eine Million Wörter je Bank 208 vorgesehen sind. Alle Datenwörter sind 64 Bits breit, und sie sind durch einen 8-Bit-SECDED-(einfache Fehlerkorrektur, doppelte Fehlererfassung)-Code geschützt.
  • Jede von einem Prozessor 100 an den Hauptspeicher 14 gerichtete Anforderung, unabhängig davon, ob sie eine Lese- oder eine Schreibanforderung ist, wird als ein Speicherbezug dargestellt und durchläuft eine als Speicherabbildung bezeichnete Transformation. Eine Speicherabbildung wird vom Betriebssystem des Vielfachprozessorsystems der vorliegenden Erfindung verwendet, um die geteilten Betriebsmittel 12 zuzuweisen und es zu ermöglichen, daß mehr als ein Programm oder Prozeß in einem einzelnen Prozessor 100 ausgeführt wird, wie weiter unten in näheren Einzelheiten erklärt wird. Insbesondere wird durch das Speicherabbildungsschema der vorliegenden Erfindung die Anforderung minimiert, Softwareprogramme für eine bestimmte Speicherhierarchie zu optimieren. Weil die reale Abbildung in dem Sinne vor dem Benutzerprogramm verborgen ist, daß die realen Adressen nicht explizit codiert sind, braucht der Benutzercode nicht geändert zu werden, um eine Änderung in den Prozessoren 10, den Speicherabschnitten 202, den globalen Registern 16 oder den Clustern 40 auszuführen, in denen das Programm abläuft. Es sei bemerkt, daß Konfigurationsänderungen des Speicheradressierungsschemas keine Änderungen des Benutzerprogramms erfordern.
  • Nun wird der Speicherabbildungsprozeß gemäß der bevorzugten Ausführungsform mit Bezug auf die Fig. 11a und 11b erklärt. Jeder Speicherbezug ist als ein Befehlsbezug oder ein Operandenbezug klassifiziert. Ein Befehlsbezug liest, wie in Fig. 11a dargestellt ist, Wörter des Speichers in Form von Befehlen in den Befehls-Cache 110. Ein in Fig. 11b dargestellter Operandenbezug liest oder schreibt S- Register, L-Register oder Elemente eines V-Registers. Für jede Anforderung wird durch den Prozessor 100 von einem Befehl, einem Register oder einer Speicherstelle eine logische Adresse erzeugt und in eine reale Adresse abgebildet und in Form eines Speicherbezugs an den Hauptspeicher 14 übergeben.
  • Bei der bevorzugten Ausführungsform sind ein oder mehrere Segmente durch den Inhalt von mehreren Abbildungsregistern bestimmt, die die Anfangs-, End- und Verschiebungswerte für jedes Segment festlegen. Ein Befehlsbezug wird bezüglich des Befehlsabbildungsregisters geprüft, und ein Operandenbezug wird bezüglich des Datenabbildungsregisters geprüft. Die Abbildungsregister sind eine Untergruppe der C-Register des Prozessors 100. Für Operandenbezüge ist wenigstens ein Segment je Cluster 40 definiert, das bei der speziellen Konfiguration des Vielfachprozessorsystems verwendet wird.
  • Zum Abbilden werden zwei Operationen für jeden Speicherbezug ausgeführt. Zuerst kann die logische Adresse einem Segment zugeordnet werden, und sie muß innerhalb eines durch einen Anfang/Ende-Vergleich für dieses Segment defi nierten Adressenbereichs liegen. Falls der Speicherbezug für irgendwelche der Segmente nicht innerhalb des aktuellen Adressenbereichs liegt, wird eine Adressentranslationsausnahme erzeugt, und es wird keine Anforderung an den Hauptspeicher 14 gerichtet. Als nächstes wird die Verschiebung für das geeignete Segment zur logischen Adresse addiert, um die reale Adresse zu erzeugen. Bei der bevorzugten Ausführungsform wird der Anfang/Ende-Wert in den Befehlsregistern mit den 20 höchstwertigen Bits einer logischen 34-Bit- Adresse verglichen, wodurch eine minimale Abbildungsgranularität von 16 K Wörtern festgelegt wird. Für Befehlsbezüge gleichen die 14 niedrigstwertigen Bits der logischen und realen Adressen einander. Die minimale Abbildungsgranularität für einen Operandenbezug beträgt 64 K Wörter, wenn die Anfang/Ende-Werte der Operandenregister mit den 18 höchstwertigen Bits einer logischen 34-Bit-Adresse verglichen werden. Für Operandenbezüge gleichen die 16 niedrigstwertigen Bits der logischen und realen Adressen einander. Sobald ein Speicherbezug abgebildet wurde, wird er adressiert und zur geeigneten realen Bank 208 des Hauptspeichers 14 übertragen, unabhängig davon, ob sich die Speicherbank 208 im Speicherbereich 200 des Clusters 40 des den Speicherbezug vornehmenden Prozessors 100 oder anderswo in einem anderen Bereich des Hauptspeichers 14, der physikalisch einem Ferncluster 40 zugeordnet ist, befindet.
  • Das vom Hauptspeicher 14 gemäß der vorliegenden Erfindung verwendete Speicheradressierungsschema ist so aufgebaut, daß die Speichersystem-Wartezeiten minimiert werden. Die niedrigstwertigen Adreßbits werden verwendet, um zwischen den Hauptbetriebsmitteln innerhalb des Hauptspeichers 14 (also zwischen den Speicherabschnitten 202) zu verschachteln, während die nächst-niedrigstwertigen Bits verwendet werden, um bei der nächst-wesentlichen Unterteilung (also den Unterabschnitten 206, den Bänken 208) zu verschachteln und dergleichen. Bei dieser Organisation ist die Verteilung des Speicherbezüge für Adressenströme mit einer ungeraden Schrittweite, also einem ungeraden Inkrement zwischen aufeinanderfolgenden Adressen, maximiert. Im allgemeinen ist bei geraden Schrittweiten die Funktionsweise umso besser, je kleiner die Schrittweite oder das Adresseninkrement ist.
  • Zum Erleichtern des Verständnisses der verschiedenen Konfigurationen der bevorzugten Ausführungsform der vorliegenden Erfindung ist jeder Cluster 40 mit dem Bezugszeichen X/YY (d. h. 4/28) bezeichnet. Für jeden Cluster 40 definiert X die Anzahl der Prozessoren 10 als 2**X Prozessoren, und YY definiert die Anzahl der Speicheradressen im Speicherbereich 200 als 2**YY Wörter des Speichers. Beispielsweise repräsentiert eine 5/29-Konfiguration 32 (2**5) Prozessoren und 512 Millionen (2**29) Wörter des Hauptspeichers je Cluster. Das Speicheradressierungsschema für zwei mögliche Konfigurationen der vorliegenden Erfindung, X/28 und X/29, ist in Fig. 12a bzw. 12b dargestellt.
  • Es sei bemerkt, daß es die Clusterarchitektur der vorliegenden Erfindung ermöglicht, daß die Anzahl der Prozessoren 10, der externen Schnittstellen 22 und die Größe des Speicherbereichs 200 jedes Clusters 40 innerhalb der oben beschriebenen Bereiche konfigurierbar sind. Diese Möglichkeit, den Vielfachprozessor-Cluster 40 zu konfigurieren, macht das Computerverarbeitungssystem gemäß der vorliegenden Erfindung modular und erweiterbar. Beispielsweise kann ein Benutzer des Computerverarbeitungssystems die Vielfachprozessor-Cluster 40 so konfigurieren, daß sie mit mehr Prozessoren 10 und weniger externen Schnittstellen 22 be legt werden, wenn die höchstwahrscheinlich vom System auszuführenden Aufgaben oder Programme verarbeitungsintensiv und nicht datenintensiv sind. Umgekehrt könnten die Anzahl der externen Schnittstellen 22 und die Größe des Speicherbereichs 200 unter Einschluß der Anzahl von Abschnitten 208 erhöht werden, wenn die Aufgaben oder Programme datenintensiv sind und eine erhebliche Datenübertragungsbandbreite erfordern. In ähnlicher Weise kann die Anzahl der Cluster 40 innerhalb des Bereichs der Clusterarchitektur abhängig von den Rechenverarbeitungsanforderungen des speziellen Benutzers des Computerverarbeitungssystems gemäß der vorliegenden Erfindung verringert oder erhöht werden.
  • Die Entscheidungsknoten
  • Bei der bevorzugten Ausführungsform verwaltet jeder Entscheidungsknoten 44 Anforderungen für die geteilten Betriebsmittel und die Ein-/Ausgabevorgänge von zwei Prozessoren 100 und zwei externen Schnittstellenmitteln 22, wie in Fig. 13 dargestellt ist. Das vektorielle Mittel 104 weist für jeden Prozessor 100 vier Leseports 116 und zwei Schreibports 118 auf, die die V-Register über den Port 302 bzw. 304 mit dem Entscheidungsknotenmittel 20 verbinden. Jedes skalare Mittel 102 weist einen bidirektionalen Port 114 für die S- und L-Register auf. Ein bidirektionaler Port 112 des Befehls-Cache 110 ist mit dem Port 308 im Entscheidungsknoten 44 verbunden. Weiterhin teilt sich jedes externe Schnittstellenmittel 22 denselben realen Port 112 mit dem Befehls-Cache 110. Demgemäß beträgt die Gesamtzahl der mit der Prozessorseite jedes Entscheidungsknotens 44 gekoppelten Ports bei der bevorzugten Ausführungsform sechzehn. Auf der Seite der geteilten Betriebsmittel weist jeder Entscheidungsknoten 44 acht getrennte bidirektionale Ports 310 auf, die die Entscheidungsknotenmittel 20 über die bidirektionalen Wege 50 mit dem Speicherbereich 200 verbinden, wobei einer für jeden der acht Speicherabschnitte 202 vorgesehen ist. Ein einziger bidirektionaler Port 312 verbindet den Entscheidungsknoten 44 über den Weg 52 mit dem NRCA- Mittel 46 und den globalen Registern 16. Jeder Entscheidungsknoten kann bis zu sechzehn Anforderungen je Taktzyklus empfangen, wobei jeweils eine je Anforderungsport 302, 306 oder 308 empfangen wird. Bei der bevorzugten Ausführungsform wirkt der Entscheidungsknoten 44 wie ein 16 · 9- Kreuzschienenschalter, der in jedem Zyklus über die sechzehn Anforderungsports für die neun geteilten Betriebsmittelports entscheidet. Alle Ports im Entscheidungsknoten 44 sind in der Lage, eine Spitzenübertragungsrate von einem Wort je Taktzyklus aufrechtzuerhalten. Diese Spitzenübertragungsrate wird durch Speicher- und Prozessorkonflikte beeinträchtigt. Alle Zugriffe sind Einzelwortzugriffe. Aufeinanderfolgende Zugriffe können jede beliebige zufällige Mischung von Lese- und Schreibvorgängen sein.
  • Die Anzahl der Anforderungen, die von jedem Entscheidungsknoten 44 behandelt werden können, wird durch Begrenzen der Anzahl der Prozessoren 100 und der externen Schnittstellenmittel 22, die mit jedem Entscheidungsknoten 44 verbunden sind, erhöht. Bei der bevorzugten Ausführungsform beträgt das Verhältnis zwischen den Prozessoren 100 und den Entscheidungsknotenmitteln 20 2 : 1. Wenngleich anerkannt wird, daß die Anzahl der Verbindungen, die wirksam über einen Entscheidungsknoten 44 vorgenommen werden können, möglicherweise durch alternative Technologien erhöht werden können, wird erwartet, daß das Verhältnis zwischen den Prozessoren 100 und den Entscheidungsknoten 44 unter Verwendung gegenwärtiger Technologien auf 8 : 1 erhöht werden kann, bevor die Leistungsfähigkeit des Entscheidungsknotens 44 unter annehmbare Werte absinkt. Es sei auch bemerkt, daß das Verhältnis zwischen den Prozessoren 100 und den externen Schnittstellenmitteln 22 für jeden Entscheidungsknoten 44 bei der bevorzugten Ausführungsform 1 : 1 beträgt. Wie jedoch zuvor erörtert wurde, ist das Verhältnis zwischen den Prozessoren 100 und den externen Schnittstellenmitteln 22 konfigurierbar.
  • Wenn Anforderungen vom Prozessor 100 oder vom externen Schnittstellenmittel 22 an irgendwelche der geteilten Betriebsmittel 12 ausgegeben werden, entscheidet der Entscheidungsknoten 44 über die Anforderungen zum Zugriff auf die Speicherbereiche 202, die globalen Register 16, den Unterbrechungsmechanismus 18 oder das NRCA-Mittel 46. Diese Entscheidung stellt für jeden Port 310 und 312 einen gerechten und zeitlich geregelten Zugriff auf jedes der geteilten Betriebsmittel 12 bereit. In Fig. 14 ist ein Paar ähnlicher Entscheidungsnetzwerke 320 und 322 für einen der Speicherports 310 und einen der Prozessorports 308 dargestellt. Es wird erkannt, daß eine ähnliche Schaltungsanordnung für jeden der Speicherports 310 und den MRCA-Port 312 und für jeden der Ports 302, 304, 306 und 308, die an die Prozessoren 100 angeschlossen sind, wiederholt ausgebildet ist. Wie weiter unten in näheren Einzelheiten erklärt wird, verwenden die Entscheidungsnetzwerke 320 und 322 ein Hin- und-her-Schaltsystem für mehrere anfordernde Stellen, wobei diejenige zuerst bedient wird, die zuerst kommt, um zu gewährleisten, daß der älteste Bezug zuerst verarbeitet wird. Bei mehreren alten Bezügen desselben Alters gewährleistet ein Gerechtigkeitsalgorithmus für die mit diesem Entscheidungsnetzwerk 320 oder 322 verbundenen Ports einen gleichen Zugriff.
  • Aus der Perspektive des Entscheidungsknotens 44 wird über jede abgehende Anforderung an einen Speicherabschnitt 202 oder durch den Port 312 an die globalen Register 16, den Unterbrechungsmechanismus 18 oder das NRCA-Mittel 46 durch ein Anforderungsentscheidungsnetzwerk 320 entschieden. Ein ähnliches Anforderungsentscheidungsnetzwerk 322 entscheidet über die von jeder Anforderung zu den jeweiligen Prozessorports 302, 304, 306 oder 308 zurückkehrenden Antworten. Für eingehende Anforderungen vom Prozessor 100 hält eine Eingabeportwarteschlange 34 bis zu sechzehn Anforderungen, die darauf warten, über das Anforderungsentscheidungsnetzwerk 320 verbunden zu werden. Für zurückkehrende Antworten hält eine Datenwarteschlange 326 bis zu 64 Antworten, die darauf warten, durch das Antwortentscheidungsnetzwerk 322 mit dem ursprünglichen Prozessorport 302, 306 oder 308 verbunden zu werden.
  • Wenn das Anforderungsentscheidungsnetzwerk 320 bestimmt, daß eine eingehende Anforderung die höchste Priorität hat, werden die Adressen- und Datenkomponenten dieser Anforderung auf den Weg 50 oder 52 gegeben, der dem Anforderungsentscheidungsnetzwerk 320 zugeordnet ist, um dem richtigen geteilten Betriebsmittel 12 zugeführt zu werden. Für Speicherbezüge sammelt eine Unterabschnitt-Einfangwarteschlange 330 in jedem Speicherabschnitt 204 alle eingehenden Anforderungen für diesen speziellen Speicherunterabschnitt 204. Ein Bankanforderungsentscheidungsnetzwerk 332 entscheidet zwischen der Gruppe von Unterabschnitt- Einfangwarteschlangen 330, die für diese Bank 208 in jedem Zyklus wartende Anforderungen aufweisen. Sobald die Anforderung ausgewählt wurde, wird die gewählte Anforderung (Adressen und Daten) an die Bestimmungsbank 208 ausgegeben, falls die Anforderung ein Speichern (Schreiben) ist. Falls die Anforderung ein Laden oder ein Laden und Kennzeichnen (Lesen) ist, werden die aus der Bank 208 gelesenen Daten (die Antwort) in einer Haltewarteschlange 334 gehalten, bevor ein Rückkehrentscheidungsnetzwerk 336 die Priorität der abgehenden Antworten vom Speicherabschnitt 202 bestimmt. Die verschiedenen Konfliktbedingungen, die während dieses Prozesses auftreten können, werden weiter unten in Verbindung mit dem Abschnitt über entscheidende Speicherbezüge detailliert beschrieben.
  • Die von einem Abschnittsspeicher 202 zum Port 310 oder vom globalen Register 16 zum Port 312 zurückkehrenden Daten werden in einer Datenwarteschlange 326 empfangen. Jeder Port 310 und 312 weist eine eigene Datenwarteschlange 326 auf. Während jedes Taktzyklus entscheidet das Antwortentscheidungsnetzwerk 322 über den Rückkehrdatenweg für jeden Ladeport 310 oder 312. Die geeigneten Daten werden von der Datenwarteschlange 326 ausgewählt und zu den anfordernden Ports 302, 306 oder 308 zurückgegeben. Anders als bei Systemen aus dem Stand der Technik können die Antworten in jeder beliebigen Reihenfolge zu den anfordernden Ports zurückgegeben werden, wie weiter unten in Zusammenhang mit dem Abschnitt über einen Außerhalb-der-Reihenfolge-Zugriff detailliert beschrieben wird.
  • Die Entscheidungsnetzwerke
  • Mit Bezug auf die Fig. 15-18 wird nun die bevorzugte Ausführungsform der verschiedenen Entscheidungsnetzwerke 320, 322, 332 und 336 beschrieben. Es sei bemerkt, daß bei der bevorzugten Ausführungsform zur einfachen Verwirklichung für jedes dieser Entscheidungsnetzwerke sehr ähnliche Schaltungsanordnungen verwendet werden, wenngleich es möglich wäre, für jedes der Entscheidungsnetzwerke 320, 322, 332 und 336 unterschiedliche Typen von Entscheidungssystemen zu verwirklichen. Alle Entscheidungsnetzwerke 320, 322, 332 und 336 verwenden ein Hin-und-her-Schaltsystem für mehrere anfordernde Stellen (MRT), wobei diejenige zuerst bedient wird, die zuerst kommt, um zu gewährleisten, daß der älteste Bezug zuerst verarbeitet wird und daß jeder der mit diesem Entscheidungsnetzwerk 320, 322, 332 oder 336 verbundenen Ports den gleichen Zugriff auf das bestimmte geteilte Betriebsmittel 12 hat.
  • Das MRT-System gemäß der vorliegenden Erfindung ist eine wirksame Art zum Erhalten der relativen Priorität jeder beliebigen Anzahl von anfordernden Stellen, über die bezüglich von einem oder mehreren Betriebsmittel entschieden werden muß. Das Ziel des MRT-Systems besteht darin, die Differenz zwischen der minimalen und der maximalen Zugriffszeit in Reaktion auf eine Anforderung zu minimieren, während gleichzeitig allen anfordernden Stellen der gleiche Zugriff gegeben wird und die relative zeitliche Abfolge der anfordernden Stellen beibehalten wird. Das Prinzip hinter dem MRT-System gemäß der vorliegenden Erfindung besteht darin, den geteilten Betriebsmitteln 12 und insbesondere dem Hauptspeicher 14 ein deterministisches Verhalten zu geben, wobei der größte Teil der Anforderungen näher bei der minimalen Zugriffszeit bedient wird. Dieses Prinzip ergibt sich aus der Annahme, daß die relative zeitliche Abfolge der Informationsanforderungen bevorzugt ist und ihre Priorität bestimmen sollte, weil Programme und Aufträge typischerweise die zuerst benötigten geteilten Betriebsmittel 12 anfordern.
  • Mit Bezug auf Fig. 15 wird nun ein Beispiel eines MRT- Systems mit vier anfordernden Stellen gemäß der bevorzugten Ausführungsform beschrieben. Es ist ersichtlich, daß es zum Aufrechterhalten der relativen Priorität zwischen vier anfordernden Stellen mit gleicher Priorität erforderlich ist, Informationen über sechs Bedingungen oder Zustände zu speichern, die die relative Priorität von jeder der sechs möglichen Kombinationen von Prioritätspaaren, also die Priorität von Req 0 bezüglich Req 1, die Priorität von Req 0 bezüglich Req 2 usw. angeben. Beim MRT-System gemäß der vorliegenden Erfindung wird der Zustand jedes Prioritätspaars als ein Einzelbit gespeichert, das die relative Priorität der anfordernden Stelle bezüglich einer speziellen anderen anfordernden Stelle darstellt. Weil eine anfordernde Stelle eine höhere oder eine niedrigere Priorität hat als die bestimmte andere anfordernde Stelle, ist ein Zustand (ein Bit) ausreichend, um jedes Prioritätspaar darzustellen. Es ist demgemäß für N anfordernde Stellen möglich, die Anzahl der relativen Prioritätszustände zwischen allen N anfordernden Stellen mit (N*(N - 1)/2) Bits darzustellen.
  • In den Fig. 16a-16e ist eine Matrix der relativen Zustände für alle Prioritätspaare des in Fig. 15 dargestellten Systems mit vier anfordernden Stellen dargestellt. Bei diesem System ist jedes Prioritätspaar durch ein Einzelbit dargestellt. Die Einträge der Matrix relativer Zustände bestehen aus einer positiven und einer negativen Darstellung jeder anfordernden Stelle. Wenn jede anfordernde Stelle eine gültige Anforderung empfängt, versucht die anfordernde Stelle, alle Bits auf die niedrigste Priorität zu setzen, was bedeutet, daß positive Bits auf "0" gesetzt werden und daß negative Bits auf "1" gesetzt werden. Zum "Lesen" der in Fig. 16a dargestellten Matrix relativer Zustände wird jede Zeile untersucht. Beim in Fig. 16a dargestellten Anfangszustand zeigt die Zeile 0, daß Req 0 niedriger ist als Req 1, Req 2 und Req 3. Zeile 1 zeigt, daß Req 1 niedriger ist als Req 2 und Req 3. Zeile 2 zeigt, daß Req 2 niedriger ist als Req 3. Demgemäß werden die Prioritätspaare für alle sechs Zustände in der Matrix relativer Zustände dargestellt.
  • In Fig. 16b ist die Matrix relativer Zustände zum Zeitpunkt 1 dargestellt, wenn Req 2 eine gültige Anforderung aufweist. Wie ersichtlich ist, modifiziert Req 2 die Matrix relativer Zustände auf die gültige Anforderung hin und ist nun die Anforderung mit der niedrigsten Priorität. Alle positiven Zustände von Req 2 werden auf "0" gesetzt, und alle ihre negativen Zustände werden auf "1" gesetzt. Beim Lesen von Zeile 0 ergibt sich, daß Req 2 niedriger ist als Req 0, daß Req 0 jedoch noch niedriger ist als Req 3 und Req 1. Zeile 1 zeigt, daß Req 2 niedriger ist als Req 1, daß Req 1 jedoch noch niedriger ist als Req 3. Schließlich zeigt Zeile 2, daß Req 2 niedriger ist als Req 3. Demgemäß ist Req 2 auf die niedrigste Priorität gesetzt und wird so bedient, falls Req 0, Req 1 oder Req 3 gegenwärtig keinen Zugriff auf das Betriebsmittel, über das entschieden wird, anfordert.
  • Die Matrix relativer Zustände ist in Fig. 16c zum Zeitpunkt 2 dargestellt, zu dem neue Anforderungen für Req 1 und Req 3 empfangen werden. Wiederum wird ein Versuch unternommen, alle Bits in den Prioritätspaaren, die jeder anfordernden Stelle mit einer gültigen Anforderung zugeordnet sind, auf die niedrigste Priorität zu setzen. In Zeile 0 sind Req 1 und Req 3 nun niedriger als Req 0. Req 2 ist noch niedriger als Req 0, weil das Prioritätspaarbit (0/2') auch dann in seinem vorhergehenden Zustand bleibt, wenn die Anforderung für Req 2 zum Zeitpunkt 1 bereits bedient wurde. Das eingekreiste Prioritätspaarbit (1/3') veranschaulicht den Hin- und-her-schalt-Fall, wenn ein Konflikt zwischen zwei anfordernden Stellen auftritt. In diesem Fall ist Req 1 höher als Req 3 und ist die anfordernde Stelle, die zuerst bedient wird. Weil Req 2 zum Zeitpunkt 2 bedient wurde, wird Req 1 zum Zeitpunkt 3 bedient, und Req 3 wird dann zum Zeitpunkt 4 bedient.
  • In Fig. 16d ist die Matrix relativer Zustände zum Zeitpunkt 3 dargestellt. Während des Zeitpunkts 3 wird von Req 0 eine neue gültige Anforderung empfangen, die alle Prioritätspaarbits aktualisiert. Bei Req 3 steht noch eine aktive Anforderung an, weil Req 1 und Req 3 dasselbe Betriebsmittel während des Zeitpunkts 2 angefordert haben, Req 1 jedoch Priorität hatte. Die verzögerte Anforderung von Req 3 konkurriert nun mit der neuen Anforderung von Req 0. Weil Req 3 älter ist, wird sie während des Zeitpunkts 4 zugelassen, und Req 0 wird um einen Taktzyklus verzögert. Nachdem beide Anforderungen bedient wurden, und unter der Annahme, daß keine der anfordernden Stellen eine neue gültige Anforderung hat, beginnt die Matrix relativer Zustände, das Prioritätspaarbit in jedem Taktzyklus umzuschalten, bis eine der anderen anfordernden Stellen den Zustand mit einer neuen gültigen Anforderung "einfriert". Dieses Umschalten gewährleistet, daß beide anfordernden Stellen die gleiche Chance haben, beim Prioritätspaarbit der Matrix relativer Zustände auf die höhere Priorität gesetzt zu werden, falls gleichzeitige Anforderungen wieder empfangen werden.
  • Schließlich zeigt Fig. 16e die Matrix relativer Zustände zum Zeitpunkt 4. Nun wird die vorhergehende Anforderung von Req 0 bedient. Es sei bemerkt, daß beim in den Fig. 16a -16e dargestellten MRT-System eine maximale Verzögerung von vier Zyklen auftreten kann, falls alle vier anfordernden Stellen während desselben Zyklus gültige Anforderungen an dasselbe Betriebsmittel haben.
  • In Fig. 17 ist die bevorzugte Verwirklichung des MRT- Systems für ein Bankentscheidungsnetzwerk 332 dargestellt. Die gültigen Anforderungen werden in den Unterabschnitt- Einfangwarteschlangen 330 gehalten, bis sie die ersten in der Warteschlange sind. Zu diesem Zeitpunkt wird die neue gültige Anforderung den positiven und den negativen Eingängen der Matrix 340 relativer Zustände zugeführt. Die neue gültige Anforderung wird auch jedem der acht Bankdecodierer 342 zugeführt. Ein Ausgangsverzweigungsmittel 342 überträgt die Ausgabe der Matrix 340 relativer Zustände zu jeder der acht Bankbehinderungsmatrizen 346. Diese Technik ermöglicht es einer einzigen Matrix 340 relativer Zustände, die Entscheidungslogik für einen ganzen Unterabschnitt für Speicherbänke 208 zu steuern, wodurch die Anforderung einer ansonsten bei jeder Bank 208 vorhandenen doppelten Entscheidungslogik beseitigt wird.
  • In den Fig. 18a, 18b und 18c ist ein detailliertes Schaltungsdiagramm zum Verwirklichen des in Fig. 17 dargestellten Bankentscheidungsnetzwerks 332 dargestellt. Fig. 18a zeigt die logischen Elemente, die einer der Bankbehinderungsmatrizen 346 zugeordnet sind. Es sei bemerkt, daß alle Prioritätspaareingaben (beispielsweise 1/0', 2/0') von der Matrix 340 relativer Zustände erzeugte Eingaben sind. Die in den Fig. 18b und 18c dargestellte Verwirklichung ermöglicht es der Matrix 340 relativer Zustände, die Verbindung zwischen der anfordernden Stelle und dem Ziel in einem einzigen Zyklus zu verarbeiten. In Fig. 18b ist die Beziehung zwischen einer Anforderung-gültig-Angabe und der Unterabschnitt-Einfangwarteschlange 330 dargestellt, beispielsweise bevor es einer Anforderung ermöglicht wird, in die Matrix 340 relativer Zustände und in die Behinderungsmatrix 346 einzutreten. In Fig. 18c ist die unteilbare Operation gemäß der bevorzugten Ausführungsform eines Prioritätspaars innerhalb der Matrix 340 relativer Zustände dargestellt.
  • Das Fernclusteradaptermittel
  • Das Fernclusteradaptermittel 42 besteht aus zwei getrennten logischen Bestandteilen, nämlich dem NRCA-Mittel 46 und dem MRCA-Mittel 48. Bei der bevorzugten Ausführungsform ist das NRCA-Mittel 46 real mit der gleichen Schaltungsanordnung verwirklicht, die die globalen Register 16 und die Unterbrechungsmechanismen 18 unterstützt, und das MRCA-Mittel 48 ist real als ein siebzehnter Entscheidungsknoten 44 verwirklicht. In Fig. 19a ist ein Blockdiagramm des MRCA- Mittels 48 dargestellt. Anders als die Ports 302, 304, 306 und 308 bei einem normalen Entscheidungsknoten 44 hat das MRCA-Mittel 48 nur sechs Ein-/Ausgabeports 350. Zusätzlich zur Eingabewarteschlange 324 und zur Datenwarteschlange 332 für jeden Port 350 im Entscheidungsknoten 44 weist das MRCA-Mittel 48 sechs Ein-/Ausgabewarteschlangen 352 auf, die als ein zusätzlicher Puffermechanismus zwischen dem MRCA-Mittel 48 und dem MRCA-Mittel 46 anderer Cluster 40 wirken. Jede Ein-/Ausgabewarteschlange 352 ist in der Lage, bis zu 64 Anforderungen von ihrem zugeordneten Ferncluster zu halten.
  • Mit Bezug auf Fig. 19b wird nun das NRCA-Mittel 46 beschrieben. Die Wege 52 von jedem der 16 Entscheidungsknoten 44 sind mit einer Eingabewarteschlange 360 verbunden, die Anforderungen für die anderen Ferncluster 40 aufreiht. Ein 16 · 6-Kreuzschienenschalter 362 verbindet den geeigneten Weg 58 mit der Anforderung in der Eingabewarteschlange 360. Wenn die Anforderungen von einem Ferncluster 40 zurückkehren, werden sie in eine von sechs Eingabewarteschlangen 366 geleitet. Ein 6 · 16-Kreuzschienenschalter verbindet dann die zurückgegebenen Antworten von der Eingabewarteschlange 366 mit dem geeigneten Weg 52.
  • Entscheidungs-Speicherbezüge
  • Wie in Fig. 16c dargestellt ist, können Konflikte auftreten, wenn eine oder mehrere anfordernde Stellen versuchen, auf dasselbe geteilte Betriebsmittel 12 (also eine Bank 208, einen Datenweg 50 usw.) während desselben Taktzyklus zuzugreifen, oder wenn dieses geteilte Betriebsmittel 12 bereits eine andere Anforderung bedient und ihr eine Belegungs- oder Reservierungszeit zugeordnet ist. Bei einer Speicheranforderung erzeugt ein Konflikt eine Wartebedingung für den Speicherbezug, welcher abhängig vom Konflikttyp von einer bis zu mehreren Taktzyklen reichen kann.
  • Mit Bezug auf Fig. 20 werden nun die verschiedenen Typen von Konflikten geteilter Betriebsmittel, die auftreten können, beschrieben. Ein Speicherbezug kann aus fünf Phasen bestehend angesehen werden. Jede Phase muß nacheinander abgeschlossen werden. Bei irgendeiner gegebenen Phase auftretende Konflikte werden nicht beurteilt, bevor der Speicherbezug alle Konflikte in einer vorhergehenden Phase durchlaufen hat.
  • Phase I ist das Ausgeben eines Speicherbezugs durch einen Prozessor 10 oder ein externes Schnittstellenmittel 22. Dieser Phase ist eine konstante Pipelinelatent von N1 Taktzyklen zugeordnet. Dieser Phase ist weiterhin eine veränderliche Verzögerung von V1 Taktzyklen zugeordnet. V1 wird durch das Anforderungsentscheidungsnetzwerk 320 als Funktion eines Gleichzeitiger-Abschnitt-Konflikts (SSC) und von Einfangwarteschlange-Voll-(CQF)-Konflikten bestimmt. Ein SSC tritt auf, wenn zwei oder mehr Ports 310 oder 312, die sich denselben Entscheidungsknoten 44 teilen, denselben Speicherabschnitt 202 im selben Tyktzyklus anfordern. Ein CQF tritt auf, wenn die Anzahl der ausstehenden Speicherbezüge von einem gegebenen Entscheidungsknoten 44 zu einem gegebenen Unterabschnitt 206 die maximale Anzahl von Pipelinestufen in der Einfangwarteschlange 330 zum Einreihen dieser Speicherbezüge auf der Eingabeseite der Bank 208 übersteigt.
  • Phase II ist das Ausgeben eines Speicherbezugs auf dem Bankniveau. Dieser Phase sind eine konstante Pipelinelatent von N2 Taktzyklen und eine veränderliche Verzögerung von V2 Taktzyklen zugeordnet. V2 wird durch das Bankentscheidungsnetzwerk 332 bestimmt und ist eine Funktion eines Gleichzeitige-Bank-Konflikts (SBC), eines Bank-belegt-Konflikts (BBC) und von Haltewarteschlange-voll-(HCQ)-Konflikten. Ein SBC-Konflikt tritt auf, wenn zwei oder mehr Speicherbezüge von verschiedenen Entscheidungsknoten 44 versuchen, im selben Taktzyklus auf dieselbe Bank 208 zuzugreifen. Dies ist ein Ein-Zyklus-Konflikt, der dann in einen BBC-Konflikt übergeht. Ein BBC-Konflikt tritt auf, wenn ein Speicherbezug eine Bank 208 adressiert, die infolge eines vorhergehenden Bezugs gerade belegt ist, und er ist eine Funktion der in den Bänken 208 verwendeten SRAM-Technologie. Ein HQF-Konflikt tritt auf, wenn die Anzahl der ausstehenden Speicherbezüge von einem gegebenen Entscheidungsknoten 44 zu einem gegebenen Unterabschnitt 204 die maximale Anzahl der Pipelinestufen in der Haltewarteschlange 334 zum Einreihen der Antworten auf die Speicherbezüge auf der Ausgabeseite der Bank 208 übersteigt.
  • Phase III eines Speicherbezugs ist das Fortschreiten des Speicherbezugs durch die Bank. Dieser Phase ist eine konstante Verzögerung von N3 Taktzyklen entsprechend der Zugriffszeit der SRAMs in der Bank 208 zugeordnet.
  • Phase IV ist das Wiederausgeben der zurückgegebenen Ladedaten an den anfordernden Entscheidungsknoten 44. Dieser Phase sind eine konstante Pipelineverzögerung von N4 Takten und eine veränderliche Verzögerung von V4 Takten zugeordnet. V4 ist durch den Speicher als eine Funktion eines Gleichzeitige-Rückgabe-Konflikts (SRC) und von Datenwarteschlange-voll-(DQF)-Konflikten bestimmt. Ein SRC-Konflikt tritt auf, wenn zwei oder mehr Speicherbezüge von einem gegebenen Entscheidungsknoten 44 zum selben Speicherabschnitt 202 gesendet werden, wenn jedoch verschiedene Unterabschnitte 206 versuchen, Wörter im selben Taktzyklus zurückzugeben. Dieser Konflikt tritt wegen Bankkonflikten und nachfolgenden Abweichungen der Speicherbezüge auf, und er wird durch das Antwortentscheidungsnetzwerk 336 gelöst. Dieser Konflikt tritt auch auf, wenn diese Speicherbezüge an ihren jeweiligen Bänken in verschiedenen Zyklen ausgegeben werden und eine Verzögerung infolge von DQF-Konflikten eine zeitliche Umordnung hervorruft, so daß die Speicherbezüge versuchen, denselben Ladedatenrückgabeweg im selben Taktzyklus zu verwenden. Ein DQF-Konflikt tritt auf, wenn die Anzahl der ausstehenden Speicherbezüge von einem gegebenen Entscheidungsknoten 44 zu einem gegebenen Speicherabschnitt 202 die maximale Anzahl der Pipelinestufen in der Datenwarteschlange 326 zum Einreihen dieser zurückgegebenen Bezüge am Entscheidungsknoten 44 übersteigt.
  • Phase V eines Speicherbezugs ist das Zurückgeben von Datenwörtern zum anfordernden Port 302, 306 oder 308 im Entscheidungsknoten 44. Dieser Phase sind eine konstante Verzögerung von N5 Taktzyklen und eine veränderliche Verzögerung von V5 Taktzyklen zugeordnet. V5 ist durch das Antwortentscheidungsnetzwerk 322 als eine Funktion irgendwelcher Port-belegt-Konflikte (PBC) bestimmt. Ein PBC-Konflikt tritt auf, wenn zwei oder mehr Speicherbezüge von verschiedenen Speicherabschnitten 202 versuchen, im selben Taktzyklus zum selben Port 302, 306 oder 308 zurückzugeben.
  • Außerhalb-der-Reihenfolge-Zugriff
  • Daten können in einer anderen Reihenfolge zu den anfordernden Ports 302, 306 und 308 zurückgegeben werden, als sie angefordert wurden. Der Entscheidungsknoten 44 empfängt eine Gruppe von Etiketten mit jeder Ladeadresse und reiht sie für künftige Bezüge ein. Wenn Daten vom Hauptspeicher 14 zurückgegeben werden, werden die Etiketten wieder an die entsprechenden Datenwörter angefügt, und es werden sowohl die Daten als auch die Etiketten zum anfordernden Port zurückgeführt. Die Prozessoren 100 und die externen Schnittstellenmittel 22 verwenden die Etiketten, um die Daten an ihre richtige Stelle zu leiten. Für das vektorielle Mittel 104 und die externen Schnittstellenmittel 22 gewährleistet die richtige Stelle eine korrekte Ablaufsteuerung von Operationen. Für das skalare Mittel 102 betrifft die richtige Stelle die bestimmten Register (S oder L) oder die Stelle im Befehls-Cache 110, der die Daten zugeleitet werden sollen. Weil das Außerhalb-der-Reihenfolge-Zugriffsmerkmal automatisch durch die dem Entscheidungsknoten 44 zugeordnete Hardware behandelt wird, braucht sich ein Benutzer nicht mit seiner Funktionsweise auseinanderzusetzen.
  • Mit Bezug auf die Fig. 21a - 21d wird nun eine schematische Darstellung des pipelineförmigen Außerhalb-der- Reihenfolge-Zugriffsmechanismus gemäß der vorliegenden Erfindung im Vergleich zum Stand der Technik dargelegt. Diese Figuren sind auf jeder Ebene in der Architektur, beispielsweise zwischen den Registern und den Funktionseinheiten eines skalaren Mittels 102 oder eines vektoriellen Mittels 104, zwischen den Anforderungsports eines Entscheidungsknotens 44 und den verschiedenen geteilten Betriebsmitteln 12 oder zwischen vom Betriebssystem geplanten Vielfachprozessen auf eine Operation hinsichtlich anfordernden Stellen und Betriebsmitteln anwendbar. In Fig. 21a ist dargestellt, wie ein Strom von Anforderungen und Antworten bei einem System aus dem Stand der Technik gehandhabt werden würde. Weil es keine Möglichkeit eines Außerhalb-der-Reihenfolge- Zugriffs gibt, muß jede der aufeinanderfolgenden Anforderungen darauf warten, daß die zugeordnete Antwort abgeschlossen ist, bevor die nächste Anforderung eingeleitet werden kann. Wie in Fig. 21b dargestellt ist, unterstützen einige vektorielle Prozessoren aus dem Stand der Technik die Möglichkeit, aufeinanderfolgende Anforderungen zum Laden eines Vektorregisters oder zum Schreiben in dieses vorzunehmen, ohne daß es erforderlich ist, auf das Zurückgeben jeder Antwort zu warten. Die in Fig. 21b dargestellte eingeschränkte Pipelinetechnik wurde nur auf vektorielle Prozessoren und nicht auf andere Systembetriebsmittel angewen det. Die in den Fig. 21c-21d dargestellten Pipelinetechniken wurden im Stand der Technik nicht verwendet. Bei der vorliegenden Erfindung kann auf alle Systembetriebsmittel unter Verwendung aller in den Fig. 21b- 21d dargestellten Pipelinetechniken zugegriffen werden. Beim Betrachten von Fig. 21c wird verständlich werden, daß die bidirektionalen Ports und das Einreihen von Anforderungen und Antworten im Entscheidungsknoten 44 beispielsweise das Zurückgeben der Antwort 1 ermöglichen, bevor die Anforderung n ausgegeben wurde. Wie in Fig. 21d dargestellt ist, ermöglicht der Etikettierungsmechanismus gemäß der vorliegenden Erfindung schließlich die Rückgabe der Antwort 2 vor der Antwort 1.
  • Zum Verarbeiten eines Außerhalb-der-Reihenfolge-Datenstroms ist es für die Prozessoren 100 und die externen Schnittstellenmittel 22 erforderlich, daß der Entscheidungsknoten 44 über die Etiketten hinaus Informationen liefert. Diese Informationen betreffen die Ablaufsteuerung der Anforderungen und die Zeitpunkte, zu denen diese Anforderungen angewiesen werden, um von einem bestimmten geteilten Betriebsmittel 12 verarbeitet zu werden. Bei der bevorzugten Ausführungsform werden diese Informationen in Form eines weiter unten erörterten Datenmarkierungsmechanismus bereitgestellt.
  • Der Datenmarkierungsmechanismus
  • Zum Unterstützen der Koordination und der Synchronisation der verschiedenen Pipelines gemäß der vorliegenden Erfindung wird auch ein Datenmarkierungsmechanismus verwendet. Der Datenmarkierungsmechanismus ist ein Mittel zum Erreichen der Synchronisation der Aktivität geteilter Betriebs mittel durch die Verwendung der Lokale-Markierung-(mark)- und Globale-Markierung-(gmark)-Befehle. Wenn gleichzeitige Zugriffe (zwischen Ports in einem Entscheidungsknoten 44 oder zwischen Prozessoren 10) oder Außerhalb-der- Reihenfolge-Zugriffe auf die geteilten Betriebsmittel 12 erlaubt sind, existiert ein Synchronisationsproblem. Der Datenmarkierungsmechanismus richtet sich auf dieses Problem. Der Datenmarkierungsmechanismus ist mit anderen Worten der Prozeß, der verwendet wird, um zu garantieren, daß Daten, von denen erwartet wird, daß sie von einem geteilten Betriebsmittel 12 zurückgegeben werden, tatsächlich die Daten sind, die unabhängig von der Anforderungsreihenfolge zurückgegeben werden.
  • Der Datenmarkierungsmechanismus ermöglicht es einem Prozessor oder einer Ein-/Ausgabevorrichtung, zu bestimmen, wenn keine anderen Anforderungen (lokal oder global) vor die markierten Anforderungen in der Pipeline gelangen können. Alle nachfolgenden Anforderungen von dieser anfordernden Stelle werden aufgeschoben, bis die markierten Anforderungen das geteilte Betriebsmittel verlassen haben. Ein lokaler markierter Bezug wird von dem bestimmten geteilten Betriebsmittel 12 bestätigt, wenn die Anforderung vom Entscheidungsknoten 44 angewiesen wurde. Ein globaler markierter Bezug wird bestätigt, wenn die Anforderung vom bestimmten geteilten Betriebsmittel 12 angewiesen worden ist. Der lokale Datenmarkierungsmechanismus wird relativ schnell behandelt, während der globale Datenmarkierungsmechanismus für Innerclusterprüfungen etwas langsam und für Zwischenclusterprüfungen erheblich langsamer ist.
  • Bei der bevorzugten Ausführungsform ist der Datenmarkierungsmechanismus unter Verwendung der mark-, gmark- und waitmk-Befehle verwirklicht, wie in näheren Einzelheiten im Anhang B erklärt wird. Anders als bei Schemata aus dem Stand der Technik zum Markieren von Daten als nicht verfügbar, bis ein bestimmtes Ereignis auftritt, trennt der Datenmarkierungsmechanismus gemäß der vorliegenden Erfindung das Markieren eines geteilten Betriebsmittels 12 (mark oder gmark) von der folgenden Warteaktivität (waitmk). Diese Trennung ermöglicht das Planen von dazwischen stattfindenden unabhängigen Aktivitäten, wodurch die beim Warten auf das Anweisen markierter Bezüge verlorene Zeit minimiert wird.
  • Lade- und Kennzeichnungsmechanismus
  • Der Lade- und Kennzeichnungsmechanismus ist eine unteilbare Speicheroperation, die gleichzeitig den aktuellen Wert einer Speicherstelle zurückgibt und an dessen Stelle ein vorgegebenes Muster speichert.
  • In Zusammenhang mit den in näheren Einzelheiten in Verbindung mit Anhang B erklärten Sammel- und Zerstreuungsbefehlen stellt der Lade- und Kennzeichnungsmechanismus ein mächtiges Mittel dar, um traditionelle skalare "Monte- Carlo"-Anwendungen in mehrere Teilprozesse einzuteilen, zu vektorisieren und pipelineförmig anzuordnen. Der Begriff "Monte-Carlo" betrifft die zufällige Natur des von diesen Anwendungen erzeugten angeforderten Speicheradressenstroms, wenn sie versuchen, verschiedene durch Pseusozufallstechniken bestimmte Speicherstellen zu aktualisieren. Im Stand der Technik hat dieser zufällige Adressenstrom die Verwendung von Pipelines, eine Vektorisierung und eine Aufteilung in mehrere Teilprozesse verhindert, weil Adressenkonflikte auftreten könnten. Bei dieser Erfindung beseitigt der Lade- und Kennzeichnungsmechanismus diese Konflikte nicht, sondern er unterstützt vielmehr das pipelineförmige Anordnen der Erfassung und Verarbeitung dieser Konflikte. Bei der bevorzugten Ausführungsform wird der Lade- und Kennzeichnungsmechanismus durch gleichzeitiges Ausgeben einer Lese- und einer Schreibfunktion an eine Stelle im Hauptspeicher 14 erreicht. Die Logik an jeder Bank 208 interpretiert diese Lese- und Schreibfunktion als ein Schreiben eines vordefinierten Kennzeichnungsmusters in die Speicherstelle. Weil die Adresse, für die Speicherstelle vor der Ausgabe des Schreibens des vordefinierten Kennzeichnungsmusters festgelegt wird, kann diese Logik die Daten lesen, die sich gegenwärtig einen Taktzyklus vor der Ausgabe des Schreibvorgangs an der Speicherstelle befinden. Die gelesenen Daten werden dann unter Verwendung der normalen Lesemechanismen zur anfordernden Stelle zurückgegeben. Wenn die anfordernde Stelle das Modifizieren der Daten an der gekennzeichneten Stelle abgeschlossen hat, "löscht" ein von der anfordernden Stelle an die gekennzeichneten Stelle ausgegebenes nachfolgendes Speichern das Hinweiszeichen.
  • Die globalen Register
  • Die globalen Register 16 werden zum Synchronisieren und zum Teilen von Daten zwischen den Prozessoren 10 und externen Schnittstellen 22 verwendet. Alle Prozessoren 10 und externen Schnittstellenmittel 22 können in jedem gegebenen Taktzyklus gleichzeitig auf dieselben oder auf verschiedene globale Register 16 zugreifen. Die globalen Register 16 sind real und logisch zu Dateigruppen organisiert. Gleichzeitige Bezüge auf Register in getrennten Gruppen finden im selben Taktzyklus statt. Gleichzeitige Bezüge auf ein Register in derselben Gruppe werden über eine Anzahl von Takt zyklen seriell ausgeführt. Die Logik der globalen Register löst jegliche Zugriffskonkurrenz durch serielles Gewähren von Zugriff für jede anfordernde Stelle, so daß nur eine Operation zur Zeit ausgeführt wird. Bezüge auf ein einziges globales Register werden in der Reihenfolge verarbeitet, in der sie ankommen. Bezüge auf globale Register innerhalb einer gegebenen Gruppe finden bei der Rate einer Operation in jedem Taktzyklus statt.
  • Mit Bezug auf die Fig. 22 und 23 wird nun die reale Organisation der globalen Register 16 bei der bevorzugten Vier-Cluster-Ausführungsform gemäß der vorliegenden Erfindung beschrieben. Die bevorzugte Ausführungsform stellt die Adressierung für einen sequentiellen Block von 32768 globalen Registern, die in den vier Clustern 40 angeordnet sind, bereit. Es gibt 8192 globale Register je Cluster 40. Die globalen Register sind innerhalb jedes Clusters 40 als acht globale Registerdateien 400 organisiert, so daß Zugriffe auf verschiedene Dateien 400 globaler Register gleichzeitig auftreten können. Bei dieser Ausführungsform befinden sich die globalen Register 16 für jeden Cluster 40 real innerhalb des NRCA-Mittels 46 dieses Clusters.
  • Wie in Fig. 22 dargestellt ist, gibt es sechzehn Ports 402 für die globalen Register 16 von den zweiunddreißig Prozessoren 100 und zweiunddreißig externe Schnittstellenmittel 22 in einem Cluster 40. Jeder Port 402 wird von zwei Prozessoren 100 und zwei externen Schnittstellenmitteln 22 geteilt verwendet, und es wird über den Weg 52 auf ihn zugegriffen. Ein ähnlicher Port 404 dient Zwischenclusteranforderungen für die globalen Register 16 in diesem Cluster, die vom MRCA-Mittel 48 empfangen werden, und es wird über den Weg 56 auf ihn zugegriffen. Wenn jede Anforderung bei einem Port 402 oder 404 empfangen worden ist, decodiert eine Decodierlogik 406 die einem Entscheidungsnetzwerk 410 für globale Register zuzuführende Anforderung. Falls für mehrere globale Register 16 in derselben Datei 400 globaler Register gleichzeitige Anforderungen ankommen, werden diese Anforderungen durch die FIFOs 412, die Pipelines 414 und das Entscheidungsnetzwerk 410 für globale Register pipelineförmig behandelt.
  • Eine Priorität wird durch ein FIFO-(zuerst hinein, zuerst heraus)-Schema, das durch ein rotierendes Prioritätsschema für gleichzeitige Ankünfte ergänzt ist, zugewiesen. Das Entscheidungsnetzwerk 410 für globale Register verwendet eine Entscheidungslogik, die derjenigen ähnelt, die zuvor in Verbindung mit dem Abschnitt über Entscheidungsknoten erörtert wurde. Wenn die Priorität durch das Entscheidungsnetzwerk 410 bestimmt wird, bringt ein 17 · 10- Kreuzschienenschaltermittel 420 die Anforderungen im FIFO 412 mit der geeigneten Datei 400 globaler Register oder dem Unterbrechungsmechanismus 18 oder dem SETN-Register in Übereinstimmung, wie weiter unten in Verbindung mit dem Abschnitt über Unterbrechungen in näheren Einzelheiten beschrieben wird. Nach dem Abschließen des Vorgangs leitet ein weiteres Kreuzschienenschaltermittel 422 jegliche Ausgaben des Vorgangs zum anfordernden Port zurück. Es wird erkannt werden, daß die Zugriffszeit auf globale Register 16 im allgemeinen etwas höher ist als die auf den Hauptspeicher 14, wenn Anforderungen im selben Cluster 40 bleiben. Es gibt weiterhin keine Störungen zwischen einem Verkehr innerhalb des Clusterspeichers und einem Verkehr globaler Register, weil die Anforderungen über andere Wege übertragen werden.
  • Wie in Fig. 23 dargestellt ist, weist jede Datei 400 globaler Register 1024 64-Bit-Register für allgemeine Zwecke auf. Jede Datei 400 globaler Register enthält auch eine unabhängige ALU-Operationseinheit 430, die acht unabhängige Operationen globaler Register in einem einzigen Taktzyklus je Cluster gestattet. Die Dateien 400 globaler Register sind über acht Wege ineinander verschachtelt, so daß beim Bezugnehmen auf aufeinanderfolgende Stellen bei jedem Bezug auf eine andere Datei zugegriffen wird. Bei dieser Ausführungsform sind die globalen Register unter Verwendung eines sehr schnellen 1024 · 64-Bit-RAM 432 verwirklicht.
  • Mit Bezug auf Fig. 24 wird nun das Verfahren zum Zugreifen auf die globalen Register 16 veranschaulicht. Die vorliegende Erfindung verwendet ein relatives Adressierungsschema für die globalen Register 16, um die Notwendigkeit zu beseitigen, Adressen globaler Register im Benutzerprogramm explizit zu codieren. Berechnungen von Adressen globaler Register beruhen auf dem Inhalt von drei Prozessorsteuerregistern, nämlich von GOFFSET, GMASK und GBASE. Das Setzen von GMASK ausschließlich auf Einsen gestattet es dem Benutzer, auf alle verfügbaren globalen Register 16 zuzugreifen. GOFFSET und GMASK sind geschützte Register, in die nur durch das Betriebssystem geschrieben werden kann. Sie definieren zusammen ein Segment des Platzes globaler Register, den der Prozessor adressieren kann. Es wird angenommen, daß die drei niedrigstwertigen Bits von GOFFSET null sind, wenn die Adressenberechnung ausgeführt wird, und es wird angenommen, daß die drei niedrigstwertigen Bits von GMASK Einsen sind.
  • GBASE ist ein für einen Benutzer zugängliches 15-Bit- Register. Der im j-Feld eines Befehls enthaltene. Wert wird zur Bildung der Benutzeradresse zu GBASE addiert. Das j- Feld wird als vorzeichenfrei angesehen, und es wird jeder Übertrag ignoriert. Die Summe von GBASE und dem j-Feld eines Befehls wird mit dem Inhalt von GMASK durch ein logisches UND verknüpft, wobei eine Grenze für die maximale Verschiebung in die Registergruppe, die der Benutzer adressieren kann, festgelegt wird. Das Ergebnis der Maskierungsoperation wird zum Inhalt von GOFFSET addiert. Jeder Übertrag wird ignoriert. Es sei bemerkt, daß die zwei höchstwertigen Bits der sich ergebenden 15-Bit-Summe verwendet werden, um auszuwählen, auf welchen Cluster 40 zugegriffen wird. Ein Übertrag, der infolge einer der Addieroperationen bis zu den oberen zwei Bits gelangt, ändert die Clusterwählbits. Es sei bemerkt, daß GOFFSET ein 16-Bit-Register ist. Das sechzehnte Bit wird zum Auswählen der SETN- Register verwendet (in näheren Einzelheiten weiter unten in Zusammenhang mit dem Unterbrechungsabschnitt beschrieben) und muß null sein, wenn auf die globalen Register 16 zugegriffen wird.
  • Die durch dieses Verfahren erzeugte Adresse ermöglicht einen Zugriff auf die Gruppe der globalen Register 16, die das Betriebssystem einem bestimmten Prozessor zuweist. Alle Prozessoren 10 könnten einer bestimmten Gruppe oder zwei verschiedenen Gruppen globaler Register 16 zugewiesen werden, was von der Anwendung und der Verfügbarkeit von Prozessoren abhängt. Nach der Initialisierung wird den globalen Registern in jedem Cluster eine Basisadresse zugewiesen. Die Logisch-zu-real-Anordnung dieses Adressierungsschemas ist in Fig. 25a dargestellt.
  • Die Ein-/Ausgabe-Konzentratormittel 24 können auch Operationen globaler Register ausführen. Das Betriebssystem re serviert für sich selbst irgendeine Anzahl von Gruppen globaler Register, die zur Parameterübergabe, zur Unterbrechungsbehandlung, zur Synchronisation und zur Ein- /Ausgabesteuerung verwendet werden. Bei der bevorzugten Ausführungsform enthalten die verschiedenen Ein-/Ausgabe- Konzentratormittel 24 einen Teil der Betriebssystemsoftware, und sie sind in der Lage, auf alle globalen Register 16 in allen Clustern 40 zuzugreifen. Das Adressierungsschema zur Adressierung globaler Register von den Ein-/Ausgabe- Konzentratormitteln 24 über die externen Schnittstellenmittel 22 ist in Fig. 25b dargestellt. Dieses Verfahren gestattet es, 8192 globale Register in jedem der vier Cluster 40 zu adressieren. Es sei bemerkt, daß Adressenwerte, die an der Bitposition 13 eine binäre Eins angeben, die SETN- Register und nicht die globalen Register 16 adressieren.
  • Ein Schlüsselmerkmal der globalen Register 16 gemäß der vorliegenden Erfindung ist ihre Fähigkeit, eine Lese- Modifizierungs-Schreiboperation in einer einzigen nicht unterbrechbaren Operation auszuführen. Es werden mehrere Versionen einer solchen "unteilbaren" Operation unterstützt. Die Operationen globaler Register sind die folgenden:
  • - Prüfen und Setzen (TAS). In das ausgewählte Register geschriebene Daten werden durch ein logisches ODER mit Daten in dem Register verknüpft. Der Inhalt des Registers vor der Modifikation wird zur die Anforderung einleitenden Stelle zurückgegeben.
  • - Setzen (SET). In das ausgewählte Register geschriebene Daten werden durch ein logisches ODER mit Daten im Register verknüpft.
  • - Löschen (CLR). Löschbits in dem ausgewählten globalen Register werden in Daten gesetzt, die von der die Anforderung einleitenden Stelle zugeführt werden.
  • - Addieren (ADD). In das ausgewählte Register geschriebene Daten werden arithmetisch zum Wert des Registers addiert, und das Ergebnis wird in das Register gegeben.
  • - Anfordern und Addieren (FAA). In das ausgewählte Register geschriebene Daten werden arithmetisch zum Wert im Register addiert. Der Registerinhalt vor der Addition wird zur die Anforderung einleitenden Stelle zurückgegeben.
  • - Anfordern und bedingtes Addieren (FCA). In das ausgewählte Register geschriebene Daten werden arithmetisch zum Wert im Register addiert. Falls das Ergebnis des Addierens kleiner als null ist, wird der Registerinhalt nicht geändert. Der Registerinhalt vor der Addition wird zur die Anforderung einleitenden Stelle zurückgegeben.
  • - SWAP. Der die Anforderung einleitenden Stelle zugeführte Daten werden in das ausgewählte Register geschrieben. Der Inhalt des Registers vor der Modifikation wird zur die Anforderung einleitenden Stelle zurückgegeben.
  • - Lesen. Der Inhalt des Registers wird zur die Anforderung einleitenden Stelle zurückgegeben.
  • - Schreiben. Der die Anforderung einleitenden Stelle zugeführte Daten werden in das ausgewählte Register geschrieben.
  • Die Synchronisation über eine Semaphor-artige Operation unter Verwendung der globalen Register 16 wird durch den Prüfe-und-Setze-(TAS)-Befehl und eine Softwareübereinkunft erreicht, um zu veranlassen, daß ein spezielles globales Re gister 16 Semaphorinformationen enthält. Der TAS-Befehl bewirkt das Setzen einer Anzahl von Bits im globalen Register 16. Bevor die Daten jedoch modifiziert werden, wird der Inhalt des globalen Registers 16 zum ausgebenden Prozessor 100 zurückgesendet. Der Prozessor 100 prüft dann, ob diese Bits verschieden sind. Falls sie verschieden sind, hat der Prozessor 100 den Semaphor erreicht, weil zu einem Zeitpunkt nur ein Register irgendwelche Daten in einem globalen Register 16 ändern kann. Falls die Bits die gleichen sind, kann die Software in der Schleife zurückspringen, um die TAS-Operation wieder zu versuchen.
  • Abgesehen von der zum Unterstützen einer Parallelverarbeitung erforderlichen offensichtlichen Fähigkeit zur schnellen Synchronisation wurden zusätzliche Funktionen in die globalen Register 16 und die Gesamtarchitektur aufgenommen. Beim Kompilieren bestimmt jeder Prozeß, wie viele Prozessoren 100 er für verschiedene Abschnitte des Codes verwenden kann. Dieser Wert kann als die Prozessoranforderungsnummer des Prozesses in die aktive Gruppe globaler Register gegeben werden. Jeder freie Prozessor befindet sich der Definition nach im Betriebssystem und kann durch einfaches Ändern der GMASK- und GOFFSET-Steuerregister und durch Suchen nach der Prozessoranforderungsnummer eines aktiven Prozesses nach möglicher Arbeit suchen.
  • Nachdem Prozessoren zu einem Prozeß hinzugefügt wurden, wird die Prozessoranforderungsnummer verringert. Das Betriebssystem kann auf der Grundlage des Bedarfs und der Verwendung leicht Prozessoren zu einem Prozeß hinzufügen oder Prozessoren von einem Prozeß abziehen. Der Anfordern- und-bedingtes-Addieren-(FCA)-Befehl gewährleistet, daß zu einem Prozeß nicht mehr Prozessoren als erforderlich hinzu gefügt werden. Dieser Befehl erleichtert auch die Parallelschleifenbehandlungsfähigkeit mehrerer Prozessoren, die weiter unten in näheren Einzelheiten erörtert wird.
  • Der Unterbrechungsmechanismus
  • In Fig. 27 zeigt ein logisches Blockdiagramm die Operation von Signalen (Unterbrechungen) innerhalb der vorliegenden Erfindung. Sowohl Prozessoren 100 als auch Ein-/Ausgabe- Konzentratormittel 24 können Signale im selben und in verschiedenen Clustern senden und empfangen. Prozessoren 100 können durch Ausführen des Signalbefehls oder durch Erzeugen einer schnellen Unterbrechung Signale einleiten. Sobald das Unterbrechungssignal (über einen Signalbefehl oder über eine schnelle Unterbrechung) die Unterbrechungsabfertigungslogik 450 im NRCA-Mittel 46 erreicht hat, wird es von dort in der gleichen Weise abgefertigt. Eine Unterbrechungs-Ausgangsverzweigungslogik 452 gibt das Unterbrechungssignal von der Unterbrechungsabfertigungslogik 450 zum Entscheidungsknoten 44 des unterbrochenen Prozessors 100 oder der unterbrochenen externen Schnittstelle 22 zurück. Eine weitere Unterbrechungsdecodierlogik 454 innerhalb des Entscheidungsknotens 44 übergibt dann das Unterbrechungssignal an den geeigneten Prozessor 100 oder das geeignete externe Schnittstellenmittel 22.
  • Für vom Signalbefehl erzeugte Unterbrechungen wird der Wert im vom Signalbefehl ausgewählten S-Register als der Zielauswahlwert interpretiert. Signale werden von den Prozessoren 100 als Unterbrechungsanforderungen empfangen. Unterbrechungsanforderungen werden im Systemmodusregister durch die Deaktivier-Typ-Bits (DTO-3) maskiert. Masken für die Intervallzeitgeber- und Schnelle-Unterbrechung- Anforderungen, die weiter unten beschrieben werden, befinden sich auch im Systemmodusregister. Ausstehende Unterbrechungen werden in das Ausstehende-Unterbrechung-(PI)- Steuerregister aufgenommen. Ein Bit im PI-Register entspricht jedem Unterbrechungstyp. Ein eingehendes Signal setzt das geeignete PI-Registerbit und bewirkt eine Unterbrechung, falls die SM-Maske für dieses Bit nicht gesetzt ist. PI-Bits werden nach dem Erkennen der Unterbrechungen vom Unterbrechungsbehandlungscode gelöscht.
  • Das Ein-/Ausgabe-Konzentratormittel 24 kann durch Schreiben des Zielauswahlwerts in die Unterbrechungslogik Signale einleiten. Vom Standardkanal 34 wird ein Befehlscode unterstützt, der es der Peripheriesteuerung ermöglicht, diese Operation auszuführen. Der Standardkanal 34 und das SMS 28 können auch Signale zu Peripherievorrichtungssteuerungen senden. Wie weiter unten in näheren Einzelheiten erörtert wird, leitet die Logik im Ein-/Ausgabesystem die geeignete Kanalaktivität ein, wenn sie erkennt, daß ein Signal zu der einem gegebenen Kanal zugeordneten Vorrichtung gesendet worden ist. Dieses Verfahren wird zum Einleiten von Signalen verwendet, und die auf ein Signal hin vorgenommene Tätigkeit ändert sich entsprechend dem Vorrichtungstyp. Signale werden durch Senden eines Zielauswahlwerts zur Signallogik eingeleitet. Fig. 26 zeigt die Logisch-zu-real- Abbildung für die Zielauswahlwerte.
  • - Substratauswahl bestimmt, welcher reale Prozessor oder Ein-/Ausgabe-Konzentrator die Unterbrechung empfängt.
  • - Klassenauswahl bestimmt, welcher Vorrichtungstyp die Unterbrechung empfängt. Der Zwei-Bit-Code ist der folgende: 0 - Prozessor, 1 - Ein-/Ausgabe- Konzentrator, 2 - Sekundärspeicher- Übertragungssteuerung und 3 - reserviert.
  • - Kanalauswahl. Wenn ein Ein-/Ausgabe-Konzentrator im Klassenauswahlfeld angegeben ist, adressieren die Bits 4 bis 2 einen Kanaladapter in dem im Substratauswahlfeld ausgewählten Konzentrator. Wenn die Sekundärspeicher-Übertragungssteuerung im Klassenauswahlfeld angegeben ist, wählt das Bit 2 aus, welche Sekundärspeicher-Übertragungssteuerung in einem Ein-/Ausgabe-Konzentratormittel unterbrochen wird. Dieses Feld wird für alle anderen Klassenauswahlen ignoriert.
  • - Typauswahl bestimmt, welcher Unterbrechungstyp zu übertragen ist. Der Signaltyp wird an der Zielvorrichtung entgegengenommen. Die Wirkung der verschiedenen Signaltypen ist vorrichtungsunabhängig.
  • Mit Bezug auf die Fig. 28a, 28b und 28c wird nun die Schnelle-Unterbrechung-Einrichtung beschrieben. Die Schnelle-Unterbrechung-Einrichtung ermöglicht es einem Prozessor 100, gleichzeitig eine Unterbrechung zu allen anderen demselben Prozeß zugeordneten Prozessoren 100 zu senden. Die Prozessoren 100 werden zur Betriebssystemsteuerung durch den Inhalt eines Satzes von Gruppennummern-(SETN)- Registern, die Teil jedes Clusters 40 sind, in logische Gruppen abgebildet. Es gibt im System globaler Register für einen einzigen Cluster 40 32 SETN-Register, wobei jeweils eines jedem Prozessor 100 zugeordnet ist. Wenn ein Prozessor einer Gruppe eine Schnelle-Unterbrechung-Anforderung erzeugt, sendet die Unterbrechungsabfertigungslogik 450 Unterbrechungen zu allen Prozessoren 100, die sich in derselben Gruppe wie derjenige befinden, der die Anforderung eingeleitet hat, indem ein über 36 Wege erfolgender simultaner Vergleich aller SETN-Werte vorgenommen wird, wie in Fig. 28a dargestellt ist. Bevor das Unterbrechungssignal tatsächlich zum Prozessor 100 gesendet wird, werden die Vergleichsergebnisse einer Prüfschaltung zugeführt, die gewährleistet, daß tatsächlich eine gültige Schnelle- Unterbrechung-Anforderung vom anfordernden Prozessor gesendet wurde. Falls dies der Fall ist, wird dann das Schnelle- Unterbrechung-Signal zu jedem der Prozessoren gesendet, der dieselbe Gruppennummer wie der anfordernde Prozessor aufweist. Fig. 28b zeigt die zusätzliche Logik im NRCA-Mittel 46, die verwendet wird, um schnelle Unterbrechungen zu anderen Fernclustern 40 zu senden. Ein detailliertes Schaltungsdiagramm der bevorzugten Verwirklichung der Unterbrechungslogik für den simultanen Vergleich und die Prüfschaltung für ein Vier-Unterbrechungen-System sind in Fig. 28c dargestellt.
  • Es sei bemerkt, daß die Schnelle-Unterbrechung-Einrichtung gleichzeitig alle in einem einzigen Zyklus bei der Unterbrechungslogik empfangenen Unterbrechungssignale verarbeiten kann. Durch die Fähigkeit, alle in einem einzigen Zyklus empfangenen schnellen Unterbrechungen innerhalb dieses Zyklus zu behandeln, werden die Probleme beseitigt, die mit dem Einreihen von Unterbrechungen verbunden sind. Es wird jedoch erkannt werden, daß Signalverzögerungen das Verzögern des Ausgebens und des Empfangens schneller Unterbrechungen um mehrere Zyklen vor oder nach der Unterbrechungslogik hervorrufen können. Selbst wenn dies so ist, führen diese Verzögerungen nicht zu einem Einreihen von Unterbrechungen.
  • Die schnelle Unterbrechung wird durch drei Prozessormechanismen eingeleitet: (1) eine Ausnahmebedingung (im Ausnehmezustandsregister entgegengenommen), (2) das Ausgeben eines Schnelle-zugeordnete-Unterbrechung-Anforderung- (FAIR)-Befehls zum Anfordern einer Unterbrechung in der Gruppe zugeordneter Prozessoren oder (3) das Einschreiben einer Gruppennummer in das SETI-Register. Die sich im Systemmodusregister befindende Schnelle-Unterbrechung- Anforderung-Maske (FIRM) unterbindet die Erzeugung einer Schnelle-Unterbrechung-Anforderung, wenn eine Ausnahme angetroffen wird. Durch das Setzen von FIRM auf eine binäre Eins werden Schnelle-Unterbrechung-Anforderungen unterbunden. Falls eine individuelle Ausnahme unterbunden ist, kann die schnelle Unterbrechung für diesen Ausnahmetyp nicht auftreten. Ein weiteres Systemmodusregisterbit, Unterbindeschnelle-Unterbrechung (DFI), unterbindet eingehende Schnelle-Unterbrechung-Anforderungen. Ein Prozessor kann nicht durch eine Schnelle-Unterbrechung-Anforderung unterbrochen werden, während DFI gesetzt ist.
  • Der Schnelle-zugeordnete-Unterbrechung-Anforderung-(FAIR)- Befehl erzeugt auch eine Schnelle-Unterbrechung-Anforderung. Das Ausführen eines FAIR-Befehls bewirkt das Auftreten einer schnellen Unterbrechung in den zugeordneten Prozessoren, jedoch nicht im ausgebenden Prozessor. Es sind zwei Schritte erforderlich, um einen Prozessor in eine Gruppe aufzunehmen: (1) in das SETN-Register für diesen Prozessor muß die Nummer der zugeordneten Gruppe geschrieben werden, und (2) das DFI-Bit in diesem Systemmodusregister des Prozessors muß auf Null gesetzt werden.
  • Wenngleich Ein-/Ausgabe-Peripherievorrichtungen 32 und auch das SMS 28 schnelle Unterbrechungen einleiten können, können nur Prozessoren durch schnelle Unterbrechungsoperationen unterbrochen werden. Das Ein-/Ausgabe-Untersystem er möglicht es einer Vorrichtung, die Nummer der zu unterbrechenden Gruppe direkt in die Schnelle-Unterbrechung-Logik zu schreiben. Dies geschieht durch Schreiben in das SETI- Register. Alle Prozessoren, deren SETN-Register den geschriebenen Gruppennummernwert enthalten, werden dann unterbrochen.
  • Das Ein-/Ausgabe-Untersystem
  • Mit Bezug auf Fig. 29 wird nun das Ein-/Ausgabe- Unterssystem gemäß der vorliegenden Erfindung beschrieben. Die Ein-/Ausgabe-Peripherievorrichtungen 32 sind über die Standardkanäle 34, die Ein-/Ausgabe-Konzentratormittel 24 und die externen Schnittstellenmittel 22 mit dem Hauptspeicher 14 und den globalen Registern 16 verbunden, und sie können direkt aus diesen geteilten Betriebsmitteln 12 innerhalb desselben Clusters 40 sowie in anderen Clustern 40 lesen und in diese schreiben. Die Ein-/Ausgabe- Peripherievorrichtungen 32 können auch aus dem demselben Cluster 40 zugeordneten Sekundärspeichersystem (SMS) 28 lesen und in dieses schreiben, sie können jedoch nicht auf das SMS 28 in einem anderen Cluster 40 zugreifen. Es sei bemerkt, daß kein Weg verfügbar ist, um es Prozessoren 10 und Ein-/Ausgabe-Peripherievorrichtungen 32 zu ermöglichen, direkt Daten auszutauschen. Alle dieser Austauschvorgänge müssen über den Hauptspeicher 14, das SMS 28 oder die globalen Register 16 stattfinden.
  • Das Ein-/Ausgabe-Konzentratormittel 24 enthält die Datenwege, Schalter und Steuerfunktionen zum Unterstützen von Datenübertragungen zwischen den verschiedenen Ein- /Ausgabekomponenten. Bei der bevorzugten Ausführungsform befinden sich in einer einzigen Ein-/Ausgabeumgebung 500 real bis zu acht Ein-/Ausgabe-Konzentratormittel 24. Jedes Ein-/Ausgabe-Konzentratormittel 24 unterstützt bis zu acht Kanaladapter 502 zu den Standardkanälen 34, eine Sekundärspeicher-Übertragungssteuerung (SMTC) 504, die eine Hochgeschwindigkeitskanal-Schnittstelle 506 zum Hochgeschwindigkeitskanal 30 und zum SMS 28 steuert, einen Hauptspeicherport 508, der eine Verbindung zu den externen Schnittstellenmitteln 22 herstellt, ein Signalschnittstellenmittel 510, das Unterbrechungssignale zu den Kanaladaptern 502 und der SMTC 504 und von diesen verteilt und ein Datenweg- Kreuzschienenschaltermittel 512. Jedes Ein-/Ausgabe- Konzentratormittel 24 kann in jedem zweiten Taktzyklus ein einzelnes 64-Bit-Wort im Hauptspeicher 14 lesen oder in diesen schreiben. Es kann auch ein Wort im SMS 28 lesen oder in dieses schreiben, während gleichzeitig auf den Hauptspeicher 14 zugegriffen wird.
  • Jeder Kanaladapter 502 enthält die Funktionen, die erforderlich sind, um Daten mit einer Ein-/Ausgabe-Peripherievorrichtung 32 über einen Standard-Ein-/Ausgabekanal 34 austauschen. Die Kanaladapter 502 greifen auf den Hauptspeicher 14, das SMS 28 und globale Register 16 zu und senden über das Ein-/Ausgabe-Konzentratormittel 24 Signale zu den Prozessoren 10. Ein Ein-/Ausgabe-Konzentratormittel 24 multiplexiert Zugriffsanforderungen zwischen den daran angebrachten Kanaladaptern 502, wobei Daten durch eine gegebene Übertragung zum ausgewählten Ziel geleitet werden. Alle bei der maximalen Rate Daten anfordernden acht Kanaladapter 502 benötigen die maximal verfügbare Rate vom Hauptspeicher 14 oder die maximal verfügbare Rate vom SMS 28.
  • Die SMTC 504 regelt den Austausch von Datenblöcken zwischen dem Hauptspeicher 14 und dem SMS 28. Diese Austauschvorgänge können bei einer Rate von einem Wort in jedem zweiten Taktzyklus ablaufen, welches die maximale für den Speicherport 508 mögliche Rate ist. Alle acht Kanaladapter 502 und eine Sekundärspeicheranforderung an die SMTC 504 können gleichzeitig aktiv sein. Weil die SMTC 504 in der Lage ist, alle verfügbaren Speicherzyklen anzufordern, kann die relative Zuordnung von Zyklen zwischen der SMTC 504 und den Kanaladaptern 502 ausgewählt werden. Die SMTC-Zuordnung kann von allen verfügbaren Speicherzyklen bis zu keinen reichen. Diese Zuordnung wird der SMTC zusammen mit anderen Übertragungsparametern angegeben, wenn mit der Übertragung begonnen wird. Das Ein-/Ausgabe-Konzentratormittel 24 verwendet diese Priorität, wenn sie einen Speicherzugriff zwischen aktiven anfordernden Stellen zuordnet.
  • Der Kreuzschienenschalter 512 ermöglicht das parallele Auftreten von bis zu vier Übertragungen in jedem Zyklus. Die möglichen Quellen und Ziele sind:
  • - Zum Hauptspeicher von einem Kanaladapter oder einem Sekundärspeicher
  • - Zum Sekundärspeicher von einem Kanaladapter oder vom Hauptspeicher
  • - Zu einem Kanaladapter vom Sekundärspeicher
  • - Zu einem Kanaladapter vom Hauptspeicher
  • Die Priorität zwischen den Kanälen beruht auf einem rotierenden Prioritätsschema. Kanalanforderungen können eine Länge zwischen 1 und n Wörtern aufweisen. Die Bandbreite des Schalters und des Ein-/Ausgabe-Prioritätsschemas ist hoch genug, um zu garantieren, daß alle Kanäle bei ihrer maximalen Übertragungsrate bedient werden können. Ein Ein- /Ausgabe-Entscheidungssteuernetzwerk 514, das den zuvor beschriebenen Entscheidungsnetzwerken ähnelt, behandelt die Auflösung konkurrierender Anforderungen entsprechend der Prioritätszuordnung zwischen der SMTC 504 und den Kanaladaptern 502.
  • Wie zuvor in Zusammenhang mit dem Datenmarkierungsabschnitt erörtert wurde, können Hauptspeicher-Schreibvorgänge außerhalb der Reihenfolge abgeschlossen werden. Ebenso wie bei den Prozessoren 10 können eine Ein-/Ausgabe-Peripherievorrichtung 34 und das SMS 28 auch den Datenmarkierungsmechanismus verwenden, um festzustellen, wann alle früheren Bezüge abgeschlossen sind. Ein markierter Bezug wird vom Speichersystem bestätigt, wenn die Daten in den Speicher eingeschrieben worden sind. Die Kanaladapter 502 oder die SMTC 504 können jeden Block oder jede Gruppe von Bezügen markieren. Alle nachfolgenden Anforderungen für diese anfordernde Stelle werden ignoriert, bis die markierten Einschreibungen das Speichersystem verlassen haben.
  • Wie ebenfalls zuvor in Zusammenhang mit dem Unterbrechungsmechanismusabschnitt erörtert wurde, sind Ein/Ausgabe- Peripherievorrichtungen 32 und die SMTC 504 in der Lage, Signale zu den Prozessoren 10 im selben oder in anderen Clustern zu senden und von diesen zu empfangen. Durch das Signalisieren eines Prozessors 10 wird der Befehlsausführungsstrom dieses Prozessors unterbrochen, wobei typischerweise ein Unterbrechungs-Handler aufgerufen wird. Durch das Senden eines Signals zu einer Ein-/Ausgabevorrichtung in der Art der SMTC 504 wird bewirkt, daß die Vorrichtung, der das Signal gesendet wurde, eine für diese Vorrichtung kennzeichnende Tätigkeit ausführt. Ein typisches Ergebnis besteht darin, daß bewirkt wird, daß die Vorrichtung einen Block von im Hauptspeicher gebliebenen Befehlsinformationen anfordert.
  • Es gibt bei der bevorzugten Ausführungsform zweiunddreißig Ein-/Ausgabe-Konzentratormittel 24 in einem einzigen Cluster, wobei jeweils eines in jedem externen Schnittstellenmittel 22 vorgesehen ist. Das ganze Ein-/Ausgabe- Untersystem für jeden Cluster 40 kann 256 Standardkanäle 34 (8 je Konzentratormittel) und zweiunddreißig SMTCs 504 unterstützen. Es wird nur ein Vollwortzugriff (64-Bit- Zugriff) unterstützt, und es tritt daher kein Lesen oder Schreiben von Teilwörtern auf. Bezüge auf das Ein-/Ausgabe- Untersystem sind auch so eingeschränkt, daß sie auf die Grenzen vollständiger Wörter gerichtet sind, und es wird daher kein Byteversatz unterstützt. Es kann ein Bezug auf jede Adresse in jedem Zyklus vorgenommen werden. Anforderungen für Hauptspeicherübertragungen (Lese- oder Schreibvorgänge) können durch die Kanaladapter 502 oder die SMTC 504 eingeleitet werden. Eine Erkennung und Korrektur von Fehlern wird am Hauptspeicherport 508 vorgenommen.
  • Bei der bevorzugten Ausführungsform steuert die SMTC 504 Übertragungen zum SMS 28. Die einzige adressierbare Einheit im SMS ist ein Block von zweiunddreißig 64-Bit-Wörtern. Übertragungen sind so eingeschränkt, daß sie an einer Blockgrenze beginnen. Anforderungen von Sekundärspeicherübertragungen (Lese- oder Schreibvorgängen) können durch die Kanaladapter 502 oder die SMTC 504 eingeleitet werden. Übertragungen zu den Kanaladaptern 502 und zum Hauptspeicherport 508 können gleichzeitig ablaufen. Eine Erkennung und Korrektur von Fehlern erfolgt an der SMTC 504.
  • Der Befehlssatz
  • Mit Bezug auf die Fig. 30a-30c werden nun die verschiedenen Befehlsformate für den Befehlssatz des Prozessors 100 beschrieben.
  • Befehle umfassen entweder ein Paket (32 Bits) oder zwei Pakete (64 Bits). Ein Zwei-Paket-Befehl kann eine Wortgrenze nicht kreuzen. Daher kann ein 64-Bit-Befehl einen Zwei- Paket-Befehl (Fig. 30a), zwei Ein-Paket-Befehle, wobei das obere Paket zuerst auszuführen ist (Fig. 30b), oder einen Ein-Paket-Befehl im oberen Paket und einen Füllcode im unteren Paket (Fig. 30c) enthalten. Der Füllcode ist kein Befehl, und seine Ausführung nimmt keine Zeit in Anspruch.
  • Die Felder im Befehlsformat können verschiedene Informationen enthalten. Das "op"-Feld enthält einen 8-Bit- Operationscode. Das "i"-Feld bezeichnet gewöhnlich das Ziel des Befehls. Dies ist entweder die Nummer eines S-Registers oder das Einerkomplement der Nummer eines V-Registers. Bei Einspeicherungen bezeichnet das "i"-Feld das zu speichernde Register. Dieses Feld enthält manchmal einen Operationscodemodifizierer in der Art eines Vergleichstyps. Das "j"-Feld bezeichnet gewöhnlich einen der Operanden. Falls dies der Fall ist, muß "j" die Nummer eines S-Registers oder das Einerkomplement der Nummer eines V-Registers enthalten. Bei den meisten Befehlen ist es erforderlich, daß "j" genau dann ein V-Register angibt, wenn "i" ein V- Register angibt. Das "k"-Feld bezeichnet entweder ein Register (S oder V wie oben) für den zweiten Operanden, oder es enthält eine vorzeichenbehaftete 8-Bit-Konstante, die als ein Operand zu verwenden ist. Bei Befehlen, bei denen ein Operand ein Vektor ist und der andere ein Skalar oder eine Konstante ist, wird das "k"-Feld für den Skalar oder die Konstante verwendet. Bei manchen Befehlen wird ein kombiniertes "jk"- oder "ij"-Feld für eine 16-Bit-Konstante verwendet. Das "m"-Feld kann eine 32-Bit-Konstante für Ladeliteral-Befehle oder relative Verzweigungen enthalten. Es kann mit dem "j"- und "k"-Feld kombiniert werden, um ein 48-Bit-"jkm"-Feld für Ladeliteral-Befehle oder absolute Adressen zu bilden.
  • Eine Zusammenfassung des Befehlssatzes für die vorliegende Erfindung ist im beigefügten Anhang A dargelegt. Eine detaillierte Beschreibung jedes Befehls ist im beigefügten Anhang B dargelegt. Eine Zusammenfassung und eine detaillierte Beschreibung der verschiedenen Prozessor-C-Register, die durch die Befehle gesteuert oder beeinflußt werden, ist im beigefügten Anhang C dargelegt.
  • Das Betriebssystem und die Kontextschalter
  • Um zu verstehen, wie das Betriebssystem Prozesse plant und auch wie das Betriebssystem das Planen mehrerer auf dem Vielfachprozessorsystem gemäß der vorliegenden Erfindung abzuarbeitender Prozesse berücksichtigt, ist es wichtig, die zwei Zeitgeber, die innerhalb jedes Prozessors 100 existieren und vom Betriebssystem verwendet werden, nämlich einen Echtzeit-Taktgeber (RTC) und einen Intervallzeitgeber (IT), sowie die Prozeduren zum Behandeln der vier Unterbrechungstypen, die verwendet werden, um Kontextumschaltungen unter Einschluß von Unterbrechungen, Ausnahmen, Einsperrbefehlen und Einsperrückgaben auszuführen, zu beschreiben.
  • Der RTC ist ein 64-Bit-Zähler, der mit jedem Systemtaktzyklus inkrementiert. Er kann nicht unter der Programmsteuerung geladen werden, und er kann nur vor dem Kaltstart des Systems initialisiert werden. Falls der RTC jedes Prozessors 100 demgemäß auf demselben Wert initialisiert wird und die Prozessortaktgeber zu einem Zeitpunkt gestartet werden, enthalten die verschiedenen RTCs immer identische Werte. Der RTC kann mit zwei Einschränkungen zur Zeitsteuerung des Ablaufs von Programmen verwendet werden. Die Zeit ist erstens eine Echtzeit. Falls ein Programm unterbrochen wird, ausgelagert wird usw., mißt der RTC noch die abgelaufene Gesamtzeit. Die Zeit wird zweitens in Taktzyklen gemessen. Ein Programm muß die Taktfrequenz des Prozessors kennen, um den Zählwert in eine abgelaufene Zeit umzuwandeln.
  • Der IT ist ein 32-Bit-Zähler, der fortlaufend dekrementiert. Er kann vom Systemcode geladen werden. Immer dann, wenn der IT negativ ist und die Unterbrechung aktiviert ist, wird eine "Intervallzeitgeberunterbrechung" erzeugt. Der IT gibt die Steuerung zum Betriebssystem zurück, wenn der Zeitschlitz eines Benutzers verstrichen ist. Wenn die Unterbrechung erzeugt wird, setzt der IT das Zählen dennoch zu stärker negativen Zahlen hin fort. Demgemäß kann das System bestimmen, wieviel Zeit über den zugeordneten Zeitschlitz hinaus tatsächlich verwendet wurde. Falls die verstrichene Zeit jedes Zeitschlitzes vom Betriebssystem gespeichert und akkumuliert wird, kann der IT verwendet werden, um zu bestimmen, wieviel Prozessorzeit ein Programm verwendet hat. Falls der IT-Zeitgeber über seinen ganzen negativen Bereich zählt und zu positiven Zahlen hin überläuft, wird eine "Zeitüberwachungsfehler"-Angabe zu einer Wartungssteuereinheit gesendet, die verwendet wird, um einen fehlerhaften Prozessor zu erkennen.
  • Der grundlegende Prozessorplanungsmechanismus innerhalb des Vielfachprozessorsystems ist ein Kontextschalter. Ein Pro zessorkontextschalter schaltet zwischen dem Benutzercode und dem Betriebssystemcode um. Ein Prozessorkontextschalter kann vier Wege aufweisen, nämlich Unterbrechung, Ausnahme, Einsperrbefehl und Einsperrückgabe.
  • Wie zuvor in Zusammenhang mit dem Abschnitt über Unterbrechungsmechanismen erörtert wurde, sind Unterbrechungen Ereignisse, die außerhalb der Steuerung des aktuell ausführenden Programms liegen und die den Prozessor einnehmen, so daß er für andere Zwecke verwendet werden kann. Eine Unterbrechung kann durch (1) eine Ein-/Ausgabevorrichtung, (2) einen anderen Prozessor über den Signalbefehl oder (3) den Intervallzeitgeber (IT), wenn er einen negativen Wert erreicht, hervorgerufen werden. Unterbrechungen können über das SM-Register maskiert werden. Falls dies der Fall ist, werden ausstehende Unterbrechungen am Prozessor gehalten, bis das Maskenbit gelöscht wurde. Falls mehrere Unterbrechungen empfangen werden, bevor die erste wirksam wird, haben die nachfolgenden Unterbrechungen keine zusätzliche Wirkung. Eine Unterbrechungsbehandlungssoftware muß durch eine Softwarekonvention die Quelle einer Unterbrechung von anderen Prozessoren oder von der Ein-/Ausgabe bestimmen. Sie kann das IT-Register lesen, um das Ablaufen eines Zeitschlitzes zu bestimmen (wenngleich sie nicht unbedingt weiß, ob er vor oder nach der Unterbrechung abgelaufen ist).
  • Eine Ausnahme beendet das aktuell ausführende Programm wegen einiger Unregelmäßigkeiten seiner Ausführung. Die Ursachen sind (1) ein Operandenbereichsfehler, wobei ein Lesen oder Schreiben von Daten nicht abgebildet werden kann, (2) ein Programmbereichsfehler, wobei eine Befehlsanforderung nicht abgebildet werden kann, (3) eine Schreibschutzverlet zung, wobei Daten in ein geschütztes Segment geschrieben werden, (4) ein Doppelbit-ECC-Fehler, (5) eine Gleitkommaausnahme, (6) eine Befehlsschutzverletzung, wobei ein Versuch erfolgt, bestimmte privilegierte Befehle von einem nicht privilegierten Code auszuführen, (7) ein Befehlsausrichtungsfehler, wobei ein Zwei-Paket-Befehl im unteren Paket eines Worts liegt, und (8) ein ungültiger Wert im SM (das Gültigkeitsbit ist nicht gesetzt).
  • Im allgemeinen werden Ausnahmen nicht sofort wirksam, und es können mehrere Befehle nach dem Programmbefehl ausgeführt werden, bevor das Kontextumschalten stattfindet. Weiterhin tritt eine Ausnahme nie zwischen den zwei Ein-Paket- Befehlen im selben Wort auf. Einige Ausnahmen können durch Bits im Benutzermodusregister gesteuert werden. Falls sie maskiert ist, bewirkt die Bedingung keine Ausnahme. Anders als Unterbrechungen wird die Bedingung auf eine Änderung der Maske hin nicht gespeichert, und es werden mit Ausnahme der Gleitkommabedingungen, die im Benutzerstatusregister aufgenommen werden, maskierte Fehler nicht aufgezeichnet.
  • Eine Unterbrechung geht einer Ausnahme vor, falls (1) eine Unterbrechung zur gleichen Zeit wie eine Ausnahme auftritt, (2) eine Unterbrechung auftritt, während nach einer Ausnahme darauf gewartet wird, daß der aktuelle Befehl abgeschlossen wird, und (3) eine Ausnahme auftritt, während nach einer Unterbrechung darauf gewartet wird, daß Befehle abgeschlossen werden. In diesen Fällen wird die Ursache der Ausnahme im Es-(Ausnahmezustand)-Register gespeichert. Falls der Unterbrechungs-Handler Ausnahmen wieder ermöglicht oder einen rtt-Befehl ausführt, der Ausnahmen ermöglicht, wird die Ausnahme zu diesem Zeitpunkt gemacht.
  • Ein beliebiges Kontextumschalten in den Systemcode kann über den Einsperrbefehl vorgenommen werden. Das Systemaufrufadressen-(SCA)-Register weist eine Basisadresse für eine Tabelle von Eingangspunkten auf, der Eingangspunkt innerhalb der Tabelle wird jedoch durch das "t"-Feld des Befehls ausgewählt. Demgemäß sind für Betriebssystemaufrufe und andere Dienstleistungen, die einen Zugriff mit geringer Latenz auf privilegierten Code erfordern, 256 unabhängige Eingangspunkte verfügbar. Anders als Unterbrechungen und Ausnahmen ist ein Einsperren exakt, was bedeutet, daß nach dem Einsperren keine Befehle ausgeführt werden, bevor das Einsperren wirksam wird. Das Betriebssystem kehrt über die Einsperrückgabe zum Programmcode zurück. Die durch den rtt- Befehl hervorgerufene Einsperroperation wird auch immer dann verwendet, wenn der Systemcode ein Kontextumschalten veranlassen will, um (1) ein Programm neu zu starten, das unterbrochen war oder eine Ausnahme aufwies, (2) zu einem Programm zurückzukehren, das einen Einsperrbefehl ausgeführt hat, (3) ein neues Benutzerprogramm einzuleiten oder (4) zu einem nicht betroffenen System oder einem Benutzermodusauftrag umzuschalten.
  • Es gibt ein gemeinsames Verfahren zum Antworten auf Unterbrechungen, Ausnahmen und Einsperrungen. Wie in Fig. 31 dargestellt ist, speichert die Handler-Routine die Register, die sie verwenden muß, falls sie zum aufgeschobenen Programm zurückkehren soll, wobei diese Register intakt sind. Dies schließt S-, L-, V- und Steuerregister ein, von denen keines automatisch gespeichert wird. In jedem Fall werden diese Schritte ausgeführt:
  • - Warten auf eine Wortgrenze oder einen Abschluß eines verzögerten Sprungs. Dies bedeutet, daß dann, wenn der nächste Befehl, auf dessen Aus gabe gewartet wird, das zweite Paket eines Worts oder ein Verzögerungsbefehl, dem ein verzögerter Sprung folgt, ist, gewartet wird, bis er ausgegeben wird. (Dieser Schritt wird für Einsperrbefehle nicht ausgeführt.)
  • - Verschieben des PC-Registers (so eingestellt, daß es auf den nächsten auszuführenden Befehl zeigt) in das OPC-Register.
  • - Verschieben des SM-Registers in das OSM- Register.
  • - Laden des PC-Registers von IAD, EAD oder SCA. (Falls SCA, "or" im verschobenen "t"-Feld, um einen der 256 möglichen Eingangspunkte zu bilden).
  • - Setzen des SM-Registers ausschließlich auf Einsen. Hierdurch werden Unterbrechungen und Ausnahmen unterbunden, wird das Abbilden von Befehlen und Daten unterbunden und wird ein privilegierter Modus festgelegt.
  • - Wiederaufnehmen der Ausführung bei der neuen Adresse.
  • Verwendung der vorliegenden Erfindung
  • Zum besseren Verstehen der Art, in der die vorliegende Erfindung verwendet wird, ist es nützlich, einige der Begriffe festzulegen, die die Ausführung eines Auftrags oder eines Programms im hochparallelen Computerverarbeitungssystem gemäß der vorliegenden Erfindung beschreiben. Der Begriff Auftrag oder Programm betrifft ein vollständiges Benutzeranwendungsprogramm, das in der Betriebssystemsoftware als eine Sammlung von einem oder mehreren Aufgaben oder Prozessen dargestellt werden kann. Weil ein auf einem parallelen Computerverarbeitungssystem ablaufendes Programm auf jeder beliebigen Anzahl von Prozessoren ausgeführt werden kann, ist es erforderlich, zwei Begriffsgruppen zum Einteilen des Programms in Segmente, die parallel ablaufen können, zu definieren. Die erste Gruppe von Begriffen betrifft das Aufteilen des Programms in parallele Segmente durch einen Kompilierer. Die zweite Gruppe von Begriffen betrifft die Art, in der das Betriebssystem tatsächlich diese auszuführenden aufgeteilten Segmente unter einer Anzahl von Parallelprozessoren einteilt.
  • Beim Kompilieren eines Programms, das auf dem parallelen Computerverarbeitungssystem gemäß der vorliegenden Erfindung ablaufen soll, führt ein Kompilierer einen als Aufteilen in mehrere Teilprozesse bekannten Prozeß entweder von sich aus oder in Reaktion auf Befehle im Quellencode für den Auftrag aus. Das Aufteilen in mehrere Teilprozesse ist das logische Zerlegen eines Benutzerprogramms in Aufgaben ohne Betrachtung der Anzahl der Prozessoren, die die Aufgaben ausführen. Der Begriff Auftrag wird vom Kompilierer verwendet und betrifft eine Ausführungsfolge in einem Programm, die ohne Synchronisierung zur gleichen Zeit ausgeführt werden kann wie andere Aufgaben. Eine Folge ist als eine unabhängige Sequenz ausführbaren Codes definiert.
  • Sobald die Aufgaben kompiliert worden sind, ist das Programm bereit, zur Ausführung durch das Betriebssystem eingeplant zu werden. An diesem Punkt werden die parallelen Abschnitte des Programms nun als Prozesse bezeichnet. Wenngleich es möglich sein kann, ein Programm in mehrere Aufgaben aufzuteilen, ist es nicht erforderlich, daß alle oder auch nur die meisten dieser Aufgaben zwischen verschiedenen Prozessoren zur Ausführung aufgeteilt werden. Daher ist ein Prozeß als eine oder mehrere Aufgaben und ein zugeordnetes Prozeßbild definiert, deren Ablauf auf einem Prozessor vom Betriebssystem unabhängig geplant wird. Das Prozeßbild ist die Darstellung der Betriebsmittel des Prozesses innerhalb des Betriebssystems, wie die Ausführungskontextinformationen des Prozesses (Speicherzuordnung, Register, Ein- /Ausgabetabellen usw.), die Kontextinformationen für vom Prozeß aufgerufene Betriebssystemunterroutinen und die ausführbaren Codes und Daten für den Prozeß. Das Betriebssystem ist dann für das Zuweisen und Synchronisieren der Prozesse verantwortlich, die ein Programm unter den verschiedenen Prozessoren 10, externen Schnittstellenmitteln 22 und geteilten Betriebsmitteln 12 gemäß der vorliegenden Erfindung aufweist.
  • Es ist mit diesem Verständnis nun möglich, zu erklären, wie es die Architektur der vorliegenden Erfindung einem Vielfachprozessorsystem ermöglicht, eine parallele Funktionsweise für traditionelle Anwendungen zu verwirklichen. Es ist bei der vorliegenden Erfindung nicht erforderlich, die Anwendungsprogramme für eine bestimmte Speicherhierarchie umzuschreiben. Weiterhin werden Pipelinetechniken auf jeder Ebene einer Operation zwischen aufrufenden Stellen und Betriebsmitteln verwendet, um die parallele Verwendung der Betriebsmittel innerhalb des Vielfachprozessorsystems zu erhöhen.
  • Die verschiedenen Mechanismen, die es dem Betriebssystem und Benutzerprogrammen ermöglichen, die verschiedenen Betriebsmittel des Vielfachprozessorsystems zu koordinieren und zu synchronisieren, umfassen ohne Einschränkung das Entscheidungsknotenmittel, das verteilte Ein-/Ausgabe- Untersystem, die globalen Register und die unteilbaren Ope rationen, wie TAS, FAA und FCA, die bezüglich der globalen Register wirken können, eine Speicherabbildung, den Außerhalb-der-Reihenfolge-Zugriff, den Etikettier- und den Datenmarkierungsmechanismus, den Lade- und Kennzeichnungsmechanismus, die Schnelle-Unterbrechung-Einrichtung, die gleichzeitige skalare und vektorielle Operation sowie den über vier Wege assoziativen Befehls-Cache. Diese Mechanismen unterstützen zusammen und einzeln den symmetrischen Zugriff auf geteilte Betriebsmittel und die Mehrebenen- Pipelineoperation des Vielfachprozessorsystems der vorliegenden Erfindung.
  • Durch Verwenden der in der vorliegenden Erfindung beschriebenen und beanspruchten Clusterarchitektur wird eine Computerverarbeitungsumgebung erzeugt, in der eine Parallelität bevorzugt ist. Die Anzahl der Prozessoren im Vielfachprozessorsystem gemäß der vorliegenden Erfindung kann über diejenige gegenwärtiger minimal paralleler Computerverarbeitungssysteme hinaus bis zu derjenigen von Computerverarbeitungssystemen im hochparallelen Bereich erhöht werden, wodurch der Problemlösungsraum des Vielfachprozessorsystems vergrößert wird, während gleichzeitig die Verarbeitungsgeschwindigkeit des Systems erhöht wird. Die Merkmale der vorliegenden Erfindung ermöglichen es, daß ein Parallelverarbeitungs-Betriebssystem eine wiederholte Bilanzierung der Parallelcodeausführung vornimmt, ohne daß Benutzer dafür bestraft werden, solchen Parallelcode zu erzeugen. Es wird wegen der zuvor beschriebenen speziellen Unterbrechungsmechanismen auch ein wirksames Austesten eines solchen Parallelcodes unterstützt. Das Endergebnis besteht darin, daß das Vielfachprozessorsystem gemäß der vorliegenden Erfindung unter Verwendung traditioneller Anwendungsprogramme bei erhöhter Leistungsfähigkeit und erhöhtem Durchsatz des Systems konsistente und wiederholbare Antworten liefern kann.
  • Wenngleich die bevorzugten Ausführungsformen beschrieben wurden, wird davon ausgegangen, daß verschiedene Änderungen vorgenommen werden könnten. Es ist dementsprechend vorgesehen, daß der Schutzumfang der vorliegenden Erfindung durch die anliegenden Ansprüche und nicht durch die Beschreibung der bevorzugten Ausführungsform vorgeschrieben wird.

Claims (24)

1. Entscheidungsnetzwerk für ein Computerverarbeitungssystem, wobei das System Betriebsmittelteilungsmittel (12) zur Speicherung und Wiedergewinnung von Daten und Steuerinformationen, wenigstens 4 Prozessormittel (10) zur Durchführung einer Computerverarbeitung von Daten und von Steuerinformationen und wenigstens zwei externe Schnitt- Stellenmittel (22) zur Übertragung von Daten und Steuerinformationen zwischen den Betriebsmittelteilungsmitteln (12) und einer oder mehrerer externer Datenquellen (26) aufweist, wobei das Entscheidungsnetzwerk (20) aufweist:
wenigstens zwei Entscheidungsknotenmittel (20), wobei jedes Entscheidungsknotenmittel operativ mit wenigstens zwei eindeutigen der Prozessoren, wenigstens einem eindeutigen der externen Schnittstellenmittel, und den Betriebsmittelteilungsmitteln zur symmetrischen Schnittstellenbildung bzw. Kopplung der Prozessoren und der externen Schnittstellenmittel mit den Betriebsmittelteilungsmitteln durch Entscheidung unter einer Anzahl von Abfrageports, welche den wenigstens zwei Prozessormitteln und den wenigstens einen Schnittstellenmitteln zugeordnet sind, und einer Anzahl von Betriebsmittelports, welche den Betriebsmittelteilungsmitteln zugeordnet sind, operativ verbunden ist, um gleichzeitige Zusammenschaltungen zwischen ausgewählten Anforderungs- bzw. Abfrageports und Betriebsmittelports zur Verfügung zu stellen, wobei das Verhältnis der Anzahl der Pro zessormittel zu der Anzahl der Entscheidungsknotenmittel größer oder gleich 2 ist.
2. Entscheidungsnetzwerk nach Anspruch 1, bei welchem das Verhältnis der Anzahl der externen Schnittstellenmittel (22) zu der Anzahl der Entscheidungsknotenmittel (20) größer oder gleich 2 ist.
3. Entscheidungsnetzwerk nach Anspruch 2, bei welchem die Anzahl der Prozessormittel und die Anzahl der externen Schnittstellenmittel gleich sind, und jedes Entscheidungsknotenmittel eindeutig mit N der Prozessormittel und N der externen Schnittstellenmittel verbunden ist, wobei N eine ganze Zahl von 2 bis 8 ist.
4. Entscheidungsnetzwerk nach Anspruch 1, bei welchem die Anzahl der Abfrageports größer als die Anzahl der Betriebsmittelports ist.
5. Entscheidungsnetzwerk nach Anspruch 1, bei welchem jedes Abfrageport eine neue Abfrage pro Taktzyklus generieren kann.
6. Entscheidungsnetzwerk nach Anspruch 1, bei welchem die Abfrageports und die Betriebsmittelports jeweils mit einer Warteschlange zum Stapeln von wartenden Abfragen bzw. Antworten ausgebildet sind.
7. Entscheidungsnetzwerk nach Anspruch 1, bei welchem die Entscheidungsknotenmittel (20) ein wer-zuerst-kommt-wird- zuerst-bedient, vielfach-requester-hin-und-her-Schaltsystem bzw. Hin-und-Her-Schaltsystem für mehrere anfordernde Stellen, wobei diejenige zuerst bedient wird, die zuerst kommt.
8. Computerverarbeitungssystem mit einem Vielfachprozessor-Cluster (40) für ein hochparalleles Computerverarbeitugnssystem, wobei der Multiprozessor-Cluster zur Verbindung mit anderen ähnlichen Multiprozessor-Clustern in dem hochparallelen Computerverarbeitungssystem eingerichtet ist, wobei der Multiprozessor-Cluster aufweist:
- Betriebsmittelteilungsmittel (12) zur Speicherung und Wiedergewinnung von Daten und Steuerinformationen;
- P Prozessormittel (10) zur Ausführung einer Computerverarbeitung von Daten und Steuerinformationen, wobei P eine ganze Zahl von 4 bis 256 ist;
- Q externe Schnittstellenmittel (22) zur Übertragung von Daten und Steuerinformationen zwischen den Betriebsmittelteilungsmitteln und einer oder mehreren externen Datenquellen (26), wobei Q eine ganze Zahl von 2 bis 256 ist; und
- Z Entscheidungsknotenmittel (20), welche operativ mit den Prozessormitteln, den externen Schnittstellenmitteln, und den Betriebsmittelteilungsmitteln zur symmetrischen Schnittstellenbildung bzw. Kopplung der Prozessormittel und der externen Schnittstellenmittel mit den Betriebsmittelteilungsmitteln verbunden sind, wobei Z eine ganze Zahl von 2 bis 128 ist, und das Verhältnis von P zu Z größer oder gleich 2 ist.
9. Computerverarbeitungssystem nach Anspruch 8, bei welchem P und Q identische ganze Zahlen zwischen 8 und 128 sind.
10. Computerverarbeitungssystem nach Anspruch 9, bei welchem jedes der Entscheidungsknotenmittel eindeutig mit N der Prozessormittel und N der externen Schnittstellenmittel verbunden ist, wobei N eine ganze Zahl von 2 bis 8 ist.
11. Computerverarbeitungssystem nach Anspruch 8, bei welchem jedes der P Prozessormittel sowohl eine vektorielle als auch eine skalare Parallelverarbeitung durchführen kann.
12. Computerverarbeitungssystem nach Anspruch 11, bei welchem jedes der Entscheidungsknotenmittel eindeutig mit N der Prozessoren und mit N der verteilten externen Schnittstellenmittel verbunden ist, wobei N eine ganze Zahl von 2 bis 8 ist.
13. Computerverarbeitungssystem nach Anspruch 11, bei welchem die Betriebsmittelteilungsmittel aufweisen:
- S Abschnitte eines Hauptspeichers (14), wobei jeder Abschnitt einen unabhängigen Zugriffsweg zur Speicherung, Manipulation und Wiedergewinnung von Daten aufweist, wobei S eine ganze Zahl von 2 bis 256 ist;
- G Gruppen von globalen Registern (16) zum Senden und zum Empfangen von Steuersignalen, wobei G eine ganze Zahl von 2 bis 256 ist; und
- Unterbrechungsmittel (18) zum Senden und zum Empfangen von Steuersignalen.
14. Computerverarbeitungssystem nach Anspruch 11, ferner mit Eingangs/Ausgangs-Konzentratormitteln (24), welche mit jedem der externen Schnittstellenmittel verbunden sind.
15. Computerverarbeitungssystem nach Anspruch 14, ferner mit einem sekundären Speichersystem (28) und einer Anzahl von Kanaladaptoren, welche operativ mit den Eingabe/Ausgabe-Konzentratormitteln verbunden sind.
16. Computerverarbeitungssystem nach Anspruch 8, mit:
- C der Multiprozessor-Cluster, welche operativ miteinander verbunden sind, wobei C eine ganze Zahl von 2 bis 256 ist, wobei jeder der Multiprozessor-Cluster ferner aufweist:
- Fernclusteradaptermittel, welche operativ mit den Betriebsmittelteilungsmitteln in diesem Multiprozessor- Cluster und mit Fernclusteradaptermitteln in sämtlichen anderen Multiprozessor-Clustern verbunden sind, um den Entscheidungsknotenmitteln des Multiprozessor-Clusters Zugriff auf die Betriebsmittelteilungsmittel sämtlicher anderer Multiprozessor-Cluster zu gestatten und sämtlichen anderen Multiprozessor-Clustern den Zugriff auf die Betriebsmittelteilungsmittel des Multiprozessor-Clusters zu gestatten.
17. Computerverarbeitungssystem nach Anspruch 16, bei welchem C eine ganze Zahl von 2 bis 16 ist, und bei welchem P und Q ganze Zahlen von 8 bis 128 sind.
18. Computerverarbeitungssystem nach Anspruch 16, wobei die Betriebsmittelteilungsmittel aufweisen:
- acht Abschnitte eines Hauptspeichers zur Speicherung und zur Rückgewinnung von Daten und von Steuerinformationen;
- zweiunddreißig Gruppen von zweihundertsechsundfünfzig globalen Registern zur Speicherung und Wiedergewinnung von Daten und Steuerinformationen;
- Unterbrechungsmittel zur Speicherung und Wiedergewinnung von Steuerinformationen;
- wobei P gleich zweiunddreißig ist, und die P Prozessormittel in der Lage sind, sowohl vektorielle als auch skalare Parallelverarbeitung durchzuführen;
- wobei Q gleich zweiunddreißig ist;
- wobei Z gleich sechzehn ist, und jedes Entscheidungsknotenmittel eindeutig mit zwei der Prozessoren und zwei der verteilten externen Schnittstellenmittel verbunden ist; und
- bei welchem die Fernclusteradaptermittel aufweisen:
- Knotenfernclusteradaptermittel (NRCA) um den Entscheidungsknotenmitteln zu gestatten, auf die Fernclusteradaptermittel sämtlicher anderer der Multiprozessor-Cluster zuzugreifen; und
- Speicherfernclusteradaptermittel (MRCA) zur Steuerung des Zugriffs auf die Betriebsmittelteilungsmittel dieses Clusters durch die Fernclusteradaptermittel sämtlicher anderer Multiprozessor-Cluster.
19. Computerverarbeitungssystem nach Anspruch 16, bei welchem jedes der P Prozessormittel in der Lage ist, sowohl vektorielle als auch skalare Parallelverarbeitung durchzuführen.
20. Computerverarbeitungssystem nach Anspruch 19, bei welchem jedes der Entscheidungsknotenmittel eindeutig mit N der Prozessoren und N der verteilten externen Schnittstellenmittel verbunden ist, wobei N eine ganze Zahl von 2 bis 8 ist.
21. Computerverarbeitungssystem nach Anspruch 20, bei welchem die Betriebsmittelteilungsmittel für jeden Cluster aufweisen
- S Abschnitte eines Hauptspeichers, wobei jeder Abschnitt einen separaten Zugriffsweg zur Speicherung und Wiedergewinnung von Daten und Steuerinformationen aufweist, wobei S eine ganze Zahl von 2 bis 256 ist;
- G Gruppen von globalen Registern zum Speichern, Manipulieren und Wiedergewinnen von Daten, wobei G eine ganze Zahl von 2 bis 256 ist; und
- Unterbrechungsmittel zum Senden und Empfangen von Steuersignalen.
22. Computerverarbeitungssystem nach Anspruch 19, bei welchem die Fernclusteradaptermittel aufweisen:
- Knotenfernclusteradaptermittel (NRCA) um den Entscheidungsknotenmitteln Zugriff auf die Fernclusteradaptermittel sämtlicher anderer der Multiprozessor-Cluster zu gestatten; und
- Speicherfernclusteradaptermittel (MRCA) zur Steuerung des Zugriffs auf die Betriebsmittelteilungsmittel dieses Clusters durch die Fernclusteradaptermittel von Sämtlichen anderen Multiprozessor-Clustern.
23. Computerverarbeitungssystem nach Anspruch 19, ferner mit Eingangs/Ausgangs-Konzentratormitteln, welche mit jedem der externen Schnittstellenmittel verbunden sind.
24. Computerverarbeitungssystem nach Anspruch 23, ferner mit einem sekundären Speichersystem und einer Anzahl von Kanaladaptern, welche operativ mit den Eingangs/Ausgangs- Konzentratormitteln verbunden sind.
DE69033272T 1989-12-29 1990-12-27 Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem Expired - Fee Related DE69033272T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/459,083 US5197130A (en) 1989-12-29 1989-12-29 Cluster architecture for a highly parallel scalar/vector multiprocessor system
PCT/US1990/007665 WO1991010194A1 (en) 1989-12-29 1990-12-27 Cluster architecture for a highly parallel scalar/vector multiprocessor system

Publications (2)

Publication Number Publication Date
DE69033272D1 DE69033272D1 (de) 1999-10-07
DE69033272T2 true DE69033272T2 (de) 2000-04-20

Family

ID=23823339

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69033272T Expired - Fee Related DE69033272T2 (de) 1989-12-29 1990-12-27 Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem

Country Status (8)

Country Link
US (8) US5197130A (de)
EP (1) EP0512007B1 (de)
JP (1) JPH05502958A (de)
KR (1) KR920704231A (de)
AU (1) AU7151991A (de)
CA (1) CA2071481A1 (de)
DE (1) DE69033272T2 (de)
WO (1) WO1991010194A1 (de)

Families Citing this family (368)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276893A (en) * 1989-02-08 1994-01-04 Yvon Savaria Parallel microprocessor architecture
US5544337A (en) * 1989-12-29 1996-08-06 Cray Research, Inc. Vector processor having registers for control by vector resisters
US5623650A (en) * 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5598547A (en) * 1990-06-11 1997-01-28 Cray Research, Inc. Vector processor having functional unit paths of differing pipeline lengths
US6928500B1 (en) * 1990-06-29 2005-08-09 Hewlett-Packard Development Company, L.P. High speed bus system that incorporates uni-directional point-to-point buses
US5815723A (en) 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US5809292A (en) 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5828894A (en) 1990-11-13 1998-10-27 International Business Machines Corporation Array processor having grouping of SIMD pickets
US5963745A (en) 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5765012A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5765015A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Slide network for an array processor
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5752067A (en) 1990-11-13 1998-05-12 International Business Machines Corporation Fully scalable parallel processing system having asynchronous SIMD processing
US5794059A (en) 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5966528A (en) 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5617577A (en) 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
ATE180586T1 (de) 1990-11-13 1999-06-15 Ibm Paralleles assoziativprozessor-system
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5630162A (en) 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
US5963746A (en) 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
JP2770603B2 (ja) * 1991-03-14 1998-07-02 三菱電機株式会社 並列計算機
US5594918A (en) 1991-05-13 1997-01-14 International Business Machines Corporation Parallel computer system providing multi-ported intelligent memory
US5515523A (en) * 1991-06-03 1996-05-07 Digital Equipment Corporation Method and apparatus for arbitrating conflicts by monitoring number of access requests per unit of time in multiport memory systems
US6282583B1 (en) * 1991-06-04 2001-08-28 Silicon Graphics, Inc. Method and apparatus for memory access in a matrix processor computer
FR2678400B1 (fr) * 1991-06-27 1995-08-04 Texas Instruments France Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation.
US5440752A (en) * 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5355492A (en) * 1991-11-05 1994-10-11 Thinking Machines Corporation System for compiling parallel communications instructions including their embedded data transfer information
US5742842A (en) * 1992-01-28 1998-04-21 Fujitsu Limited Data processing apparatus for executing a vector operation under control of a master processor
US5742839A (en) * 1992-01-30 1998-04-21 Fujitsu Limited Coprocessor for performing an arithmetic operation by automatically reading data from an external memory
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
JP2642039B2 (ja) 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5428803A (en) * 1992-07-10 1995-06-27 Cray Research, Inc. Method and apparatus for a unified parallel processing architecture
US5581778A (en) * 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
US5485626A (en) * 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
JP3304444B2 (ja) * 1992-11-30 2002-07-22 富士通株式会社 ベクトル処理装置
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
WO1994022102A1 (en) * 1993-03-16 1994-09-29 Ht Research, Inc. A chassis for a multiple computer system
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH06314264A (ja) * 1993-05-06 1994-11-08 Nec Corp セルフ・ルーティング・クロスバー・スイッチ
JP3248992B2 (ja) * 1993-07-13 2002-01-21 富士通株式会社 マルチプロセッサ
JP3261239B2 (ja) * 1993-07-27 2002-02-25 富士通株式会社 データ転送の一括化処理方法
CA2117506C (en) * 1993-08-19 2000-10-10 Minoru Oda Return address adding mechanism for use in parallel processing system
US5669013A (en) * 1993-10-05 1997-09-16 Fujitsu Limited System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions
US5765181A (en) * 1993-12-10 1998-06-09 Cray Research, Inc. System and method of addressing distributed memory within a massively parallel processing system
US5696922A (en) * 1993-12-10 1997-12-09 Cray Research, Inc. Recursive address centrifuge for distributed memory massively parallel processing systems
EP0733236B1 (de) * 1993-12-10 2003-08-06 Silicon Graphics, Inc. Speicheradressierung für ein massivparalleles verarbeitungsystem
US5560027A (en) * 1993-12-15 1996-09-24 Convex Computer Corporation Scalable parallel processing systems wherein each hypernode has plural processing modules interconnected by crossbar and each processing module has SCI circuitry for forming multi-dimensional network with other hypernodes
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5577200A (en) * 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5751986A (en) * 1994-03-01 1998-05-12 Intel Corporation Computer system with self-consistent ordering mechanism
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5553298A (en) * 1994-04-14 1996-09-03 Merryman, Deceased; Philip I. Method and apparatus for mutual exclusion in self-directed distributed systems
US5761466A (en) * 1994-05-09 1998-06-02 Lsi Logic Corporation Soft programmable single-cycle/pipelined micro-programmed control system
US5590323A (en) * 1994-05-13 1996-12-31 Lucent Technologies Inc. Optimal parallel processor architecture for real time multitasking
US5568649A (en) * 1994-05-31 1996-10-22 Advanced Micro Devices Interrupt cascading and priority configuration for a symmetrical multiprocessing system
JP2766217B2 (ja) * 1994-06-14 1998-06-18 甲府日本電気株式会社 並列処理装置
US5544330A (en) * 1994-07-13 1996-08-06 Emc Corporation Fault tolerant interconnect topology using multiple rings
US5717895A (en) * 1994-12-01 1998-02-10 Cray Research, Inc. Associative scalar data cache with write-through capabilities for a vector processor
US5699538A (en) * 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
JP2793517B2 (ja) * 1995-03-22 1998-09-03 甲府日本電気株式会社 データ転送制御装置
US5752264A (en) * 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
US5710933A (en) * 1995-03-31 1998-01-20 International Business Machines Corporation System resource enable apparatus
US5860108A (en) * 1995-04-26 1999-01-12 Nec Corporation Method and clustered multi-processor system for controlling a clock phase for clusters
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US5680578A (en) * 1995-06-07 1997-10-21 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify expanded functionality and a computer system employing same
US5815701A (en) * 1995-06-29 1998-09-29 Philips Electronics North America Corporation Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time
JPH0981508A (ja) * 1995-08-31 1997-03-28 Internatl Business Mach Corp <Ibm> 通信方法及び装置
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5590301A (en) * 1995-10-06 1996-12-31 Bull Hn Information Systems Inc. Address transformation in a cluster computer system
US5960211A (en) * 1995-12-15 1999-09-28 Hughes Aircraft Data formatting method and apparatus for a data processing array
US5819080A (en) * 1996-01-02 1998-10-06 Advanced Micro Devices, Inc. Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor
US5913070A (en) * 1996-01-16 1999-06-15 Tm Patents, L.P. Inter-connector for use with a partitionable massively parallel processing system
DE19606629A1 (de) * 1996-02-22 1997-08-28 Siemens Nixdorf Inf Syst Mehrprozessor-Zentraleinheit
US5940870A (en) * 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
DE69728081T2 (de) * 1996-05-30 2004-08-19 Matsushita Electric Industrial Co., Ltd., Kadoma Verfahren und Schaltkreis zur Steuerung verzögerter Verzweigungsbefehle
US6370636B1 (en) 1996-07-31 2002-04-09 Hyundai Electronics Industries Co., Ltd. Accessing byte lines from dual memory blocks and aligning for variable length instruction execution
KR100205351B1 (ko) * 1996-07-31 1999-07-01 구본준 반도체 기억 장치의 주소 정렬 장치
KR100280285B1 (ko) * 1996-08-19 2001-02-01 윤종용 멀티미디어 신호에 적합한 멀티미디어 프로세서
US6330619B1 (en) * 1996-09-04 2001-12-11 Siemens Nixdorf Informationssysteme Aktiengesellschaft Method of synchronization
US5822570A (en) * 1996-10-30 1998-10-13 Microsoft Corporation System and method for parsing and executing a single instruction stream using a plurality of tightly coupled parsing and execution units
JPH10143365A (ja) * 1996-11-15 1998-05-29 Toshiba Corp 並列処理装置及びその命令発行方式
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
DE19750927B4 (de) * 1996-12-11 2007-10-18 Rohde & Schwarz Gmbh & Co. Kg Verfahren zum kontinuierlichen Auslesen einer Datenfolge aus einem Speicher
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
EP0851343B1 (de) * 1996-12-31 2005-08-31 Metaflow Technologies, Inc. System zur Ausführung von Gleitkommaoperationen
KR100207598B1 (ko) * 1997-01-27 1999-07-15 윤종용 상호연결망으로서 파이브 채널을 사용한 클러스터시스템
US6401194B1 (en) * 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
US5935230A (en) * 1997-02-07 1999-08-10 Amiga Development, Llc Multiprocessor arrangement including bus arbitration scheme involving plural CPU clusters that address each other as "phantom" CPUs
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
FR2760547B1 (fr) * 1997-03-07 1999-05-21 Patrick Lanquetin Equipement informatique forme d'une pluralite de modules interconnectes et procede pour l'optimisation de telles ressources informatiques
US5870597A (en) * 1997-06-25 1999-02-09 Sun Microsystems, Inc. Method for speculative calculation of physical register addresses in an out of order processor
US6088782A (en) * 1997-07-10 2000-07-11 Motorola Inc. Method and apparatus for moving data in a parallel processor using source and destination vector registers
US6026463A (en) * 1997-09-10 2000-02-15 Micron Electronics, Inc. Method for improving data transfer rates for user data stored on a disk storage device
US6230259B1 (en) 1997-10-31 2001-05-08 Advanced Micro Devices, Inc. Transparent extended state save
US6157996A (en) * 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6101181A (en) * 1997-11-17 2000-08-08 Cray Research Inc. Virtual channel assignment in large torus systems
US6230252B1 (en) 1997-11-17 2001-05-08 Silicon Graphics, Inc. Hybrid hypercube/torus architecture
US5970232A (en) * 1997-11-17 1999-10-19 Cray Research, Inc. Router table lookup mechanism
US6185646B1 (en) * 1997-12-03 2001-02-06 International Business Machines Corporation Method and apparatus for transferring data on a synchronous multi-drop
US5913069A (en) * 1997-12-10 1999-06-15 Cray Research, Inc. Interleaving memory in distributed vector architecture multiprocessor system
US5946496A (en) * 1997-12-10 1999-08-31 Cray Research, Inc. Distributed vector architecture
EP1042435B1 (de) * 1997-12-19 2002-07-24 Unilever N.V. Olivenöl enthaltende nahrungsmittelzusammensetzung
US6480927B1 (en) * 1997-12-31 2002-11-12 Unisys Corporation High-performance modular memory system with crossbar connections
US6182196B1 (en) * 1998-02-20 2001-01-30 Ati International Srl Method and apparatus for arbitrating access requests to a memory
JP3573614B2 (ja) * 1998-03-05 2004-10-06 株式会社日立製作所 画像処理装置及び画像処理システム
US6154765A (en) 1998-03-18 2000-11-28 Pasocs Llc Distributed digital rule processor for single system image on a clustered network and method
US6038651A (en) * 1998-03-23 2000-03-14 International Business Machines Corporation SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum
JPH11296381A (ja) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
JP3209205B2 (ja) 1998-04-28 2001-09-17 日本電気株式会社 プロセッサにおけるレジスタ内容の継承装置
US6282634B1 (en) 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6275890B1 (en) * 1998-08-19 2001-08-14 International Business Machines Corporation Low latency data path in a cross-bar switch providing dynamically prioritized bus arbitration
US6141794A (en) * 1998-10-16 2000-10-31 Sun Microsystems, Inc. System and method for synchronizing access to shared variables in a virtual machine in a digital computer system
US20040030873A1 (en) * 1998-10-22 2004-02-12 Kyoung Park Single chip multiprocessing microprocessor having synchronization register file
GB2359162B (en) * 1998-11-10 2003-09-10 Fujitsu Ltd Parallel processor system
CA2346831A1 (en) * 1998-11-12 2000-05-25 Alexander Roger Deas A system and a method for transformation of memory device addresses
US6275984B1 (en) * 1998-11-20 2001-08-14 Sega Of America, Inc. System and method for delaying indirect register offset resolution
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6266759B1 (en) * 1998-12-14 2001-07-24 Cray, Inc. Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor
AU2590700A (en) * 1998-12-17 2000-07-03 California Institute Of Technology Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs
US6826752B1 (en) 1998-12-17 2004-11-30 California Institute Of Technology Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs
US6253338B1 (en) 1998-12-21 2001-06-26 International Business Machines Corporation System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block
US6496902B1 (en) * 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
US6282628B1 (en) * 1999-02-24 2001-08-28 International Business Machines Corporation Method and system for a result code for a single-instruction multiple-data predicate compare operation
US6336191B1 (en) 1999-03-08 2002-01-01 International Business Machines Corporation Method and system for clock compensation in instruction level tracing in a symmetrical multi-processing system
DE69935066D1 (de) 1999-05-03 2007-03-22 St Microelectronics Sa Befehlsvorausholeinheit
US6622240B1 (en) 1999-06-18 2003-09-16 Intrinsity, Inc. Method and apparatus for pre-branch instruction
US6438671B1 (en) * 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US6389478B1 (en) 1999-08-02 2002-05-14 International Business Machines Corporation Efficient non-contiguous I/O vector and strided data transfer in one sided communication on multiprocessor computers
US6553486B1 (en) * 1999-08-17 2003-04-22 Nec Electronics, Inc. Context switching for vector transfer unit
US7552440B1 (en) 1999-09-28 2009-06-23 Rockwell Automation Technologies, Inc. Process communication multiplexer
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6674720B1 (en) 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US6542983B1 (en) * 1999-10-01 2003-04-01 Hitachi, Ltd. Microcomputer/floating point processor interface and method
WO2001025941A1 (en) 1999-10-06 2001-04-12 Cradle Technologies Multiprocessor computer systems with command fifo buffer at each target device
US6496975B1 (en) * 1999-10-15 2002-12-17 International Business Machines Corporation Method, system, and program for performing conditional program operations
US6628662B1 (en) 1999-11-29 2003-09-30 International Business Machines Corporation Method and system for multilevel arbitration in a non-blocking crossbar switch
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
EP1247195A4 (de) 1999-12-22 2005-01-05 Ubicom Inc System und verfahren zur auf befehlsebene arbeitenden multithreading in einem eingebetteten prozessor mit nullzeitkontextumschaltung
WO2001053951A1 (fr) * 2000-01-19 2001-07-26 Fujitsu Limited Dispositif et procede de commande de memoire
US6539457B1 (en) * 2000-02-21 2003-03-25 Hewlett-Packard Company Cache address conflict mechanism without store buffers
JP2001283413A (ja) * 2000-03-29 2001-10-12 Tdk Corp スピンバルブ膜の製造方法
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6658553B1 (en) * 2000-04-14 2003-12-02 Koninklijke Philips Electronics N.V. Universal pointer implementation scheme for uniformly addressing distinct memory spaces in a processor's address space
US6584531B1 (en) * 2000-04-27 2003-06-24 Lsi Logic Corporation Arbitration circuit with plural arbitration processors using memory bank history
US6505269B1 (en) * 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US6807557B1 (en) 2000-05-31 2004-10-19 International Business Machines Corporation Method, system and program products for providing clusters of a computing environment
US6801937B1 (en) 2000-05-31 2004-10-05 International Business Machines Corporation Method, system and program products for defining nodes to a cluster
US7010612B1 (en) 2000-06-22 2006-03-07 Ubicom, Inc. Universal serializer/deserializer
US7047396B1 (en) 2000-06-22 2006-05-16 Ubicom, Inc. Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
US6981132B2 (en) 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US6877084B1 (en) 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
JP2002108837A (ja) * 2000-09-29 2002-04-12 Nec Corp 計算機システムとその計算制御方法
ATE498158T1 (de) * 2000-11-06 2011-02-15 Broadcom Corp Umkonfigurierbares verarbeitungssystem und - verfahren
US7436954B2 (en) 2001-02-28 2008-10-14 Cavium Networks, Inc. Security system with an intelligent DMA controller
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US6968447B1 (en) 2001-04-13 2005-11-22 The United States Of America As Represented By The Secretary Of The Navy System and method for data forwarding in a programmable multiple network processor environment
US6978459B1 (en) * 2001-04-13 2005-12-20 The United States Of America As Represented By The Secretary Of The Navy System and method for processing overlapping tasks in a programmable network processor environment
US7152151B2 (en) * 2002-07-18 2006-12-19 Ge Fanuc Embedded Systems, Inc. Signal processing resource for selective series processing of data in transit on communications paths in multi-processor arrangements
US6848074B2 (en) * 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
US6920534B2 (en) * 2001-06-29 2005-07-19 Intel Corporation Virtual-port memory and virtual-porting
US7027446B2 (en) * 2001-07-18 2006-04-11 P-Cube Ltd. Method and apparatus for set intersection rule matching
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
US6834332B2 (en) * 2001-08-30 2004-12-21 International Business Machines Corporation Apparatus and method for swapping-out real memory by inhibiting i/o operations to a memory region and setting a quiescent indicator, responsive to determining the current number of outstanding operations
US20030046501A1 (en) * 2001-09-04 2003-03-06 Schulz Jurgen M. Method for interleaving memory
GB2382887B (en) * 2001-10-31 2005-09-28 Alphamosaic Ltd Instruction execution in a processor
GB2382674B (en) * 2001-10-31 2005-11-16 Alphamosaic Ltd Data access in a processor
US6898546B2 (en) * 2001-10-31 2005-05-24 Infineon Technologies Ag Method for processing data representing parameters relating to a plurality of components of an electrical circuit, computer readable storage medium and data processing system containing computer-executable instructions for performing the method
CN1311348C (zh) * 2001-12-14 2007-04-18 皇家飞利浦电子股份有限公司 数据处理系统
US7305540B1 (en) * 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US7324919B2 (en) * 2002-01-18 2008-01-29 Spm Instrument Ab Apparatus for analysing the condition of a machine
US20030163643A1 (en) * 2002-02-22 2003-08-28 Riedlinger Reid James Bank conflict determination
US20030182518A1 (en) * 2002-03-22 2003-09-25 Fujitsu Limited Parallel processing method for inverse matrix for shared memory type scalar parallel computer
US7346746B2 (en) * 2002-04-26 2008-03-18 Infineon Technologies Aktiengesellschaft High performance architecture with shared memory
US20030196072A1 (en) * 2002-04-11 2003-10-16 Chinnakonda Murali S. Digital signal processor architecture for high computation speed
TWI289789B (en) 2002-05-24 2007-11-11 Nxp Bv A scalar/vector processor and processing system
US7103636B2 (en) * 2002-05-28 2006-09-05 Newisys, Inc. Methods and apparatus for speculative probing of a remote cluster
US7155525B2 (en) * 2002-05-28 2006-12-26 Newisys, Inc. Transaction management in systems having multiple multi-processor clusters
US7281055B2 (en) * 2002-05-28 2007-10-09 Newisys, Inc. Routing mechanisms in systems having multiple multi-processor clusters
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
WO2003102758A1 (en) * 2002-05-31 2003-12-11 University Of Delaware Method and apparatus for real-time multithreading
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7577755B2 (en) * 2002-11-19 2009-08-18 Newisys, Inc. Methods and apparatus for distributing system management signals
US7228351B2 (en) * 2002-12-31 2007-06-05 International Business Machines Corporation Method and apparatus for managing resource contention in a multisystem cluster
US20040139142A1 (en) * 2002-12-31 2004-07-15 International Business Machines Corporation Method and apparatus for managing resource contention
US7124284B2 (en) * 2003-01-06 2006-10-17 Sun Microsystems, Inc. Method and apparatus for processing a complex instruction for execution and retirement
US20040139299A1 (en) * 2003-01-14 2004-07-15 International Business Machines Corporation Operand forwarding in a superscalar processor
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7194568B2 (en) * 2003-03-21 2007-03-20 Cisco Technology, Inc. System and method for dynamic mirror-bank addressing
JP2004302647A (ja) * 2003-03-28 2004-10-28 Seiko Epson Corp ベクトルプロセッサおよびレジスタのアドレス指定方法
US7383336B2 (en) * 2003-04-24 2008-06-03 International Business Machines Corporation Distributed shared resource management
JP2005004350A (ja) * 2003-06-10 2005-01-06 Sony Ericsson Mobilecommunications Japan Inc リソース管理方法及び装置、リソース管理プログラム、記憶媒体
US7386626B2 (en) * 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US7103823B2 (en) 2003-08-05 2006-09-05 Newisys, Inc. Communication between multi-processor clusters of multi-cluster computer systems
US7395347B2 (en) * 2003-08-05 2008-07-01 Newisys, Inc, Communication between and within multi-processor clusters of multi-cluster computer systems
US7159137B2 (en) * 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems
US7117419B2 (en) * 2003-08-05 2006-10-03 Newisys, Inc. Reliable communication between multi-processor clusters of multi-cluster computer systems
US6983359B2 (en) * 2003-08-13 2006-01-03 Via-Cyrix, Inc. Processor and method for pre-fetching out-of-order instructions
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
US7437521B1 (en) 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
US7421565B1 (en) * 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US7503048B1 (en) 2003-08-18 2009-03-10 Cray Incorporated Scheduling synchronization of programs running as streams on multiple processors
US7735088B1 (en) 2003-08-18 2010-06-08 Cray Inc. Scheduling synchronization of programs running as streams on multiple processors
US7366873B1 (en) 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus
US8924654B1 (en) * 2003-08-18 2014-12-30 Cray Inc. Multistreamed processor vector packing method and apparatus
US7379424B1 (en) 2003-08-18 2008-05-27 Cray Inc. Systems and methods for routing packets in multiprocessor computer systems
US7519771B1 (en) 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US8307194B1 (en) * 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
JP4085389B2 (ja) * 2003-12-24 2008-05-14 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7401316B2 (en) * 2004-04-23 2008-07-15 Sony Computer Entertainment Inc. Methods and apparatus for synthesizable pipeline control
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US7478198B2 (en) * 2004-05-24 2009-01-13 Intel Corporation Multithreaded clustered microarchitecture with dynamic back-end assignment
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
JP4086813B2 (ja) * 2004-06-09 2008-05-14 キヤノン株式会社 ネットワークプリントシステム及びネットワークプリントシステムにおけるグリッド網構築方法
US7600102B2 (en) * 2004-06-14 2009-10-06 Broadcom Corporation Condition bits for controlling branch processing
US20140067771A2 (en) * 2004-07-09 2014-03-06 International Business Machines Corporation Management of a Scalable Computer System
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7756237B2 (en) * 2004-10-19 2010-07-13 Lawrence Livermore National Security, Llc Absolute nuclear material assay
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8194813B2 (en) 2004-10-19 2012-06-05 Lawrence Livermore National Security, Llc Absolute nuclear material assay using count distribution (LAMBDA) space
US7536525B2 (en) * 2004-11-09 2009-05-19 Dell Products L.P. Virtual machine hot cloning including freezing and unfreezing memory in a distributed network
US8698817B2 (en) 2004-11-15 2014-04-15 Nvidia Corporation Video processor having scalar and vector components
US7446773B1 (en) * 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US7466316B1 (en) 2004-12-14 2008-12-16 Nvidia Corporation Apparatus, system, and method for distributing work to integrated heterogeneous processors
US7898545B1 (en) 2004-12-14 2011-03-01 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors
US7594102B2 (en) * 2004-12-15 2009-09-22 Stmicroelectronics, Inc. Method and apparatus for vector execution on a scalar machine
US20060155543A1 (en) * 2005-01-13 2006-07-13 Korg, Inc. Dynamic voice allocation in a vector processor based audio processor
US8732368B1 (en) * 2005-02-17 2014-05-20 Hewlett-Packard Development Company, L.P. Control system for resource selection between or among conjoined-cores
US7478769B1 (en) 2005-03-09 2009-01-20 Cray Inc. Method and apparatus for cooling electronic components
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US20070074008A1 (en) * 2005-09-28 2007-03-29 Donofrio David D Mixed mode floating-point pipeline with extended functions
US7676535B2 (en) * 2005-09-28 2010-03-09 Intel Corporation Enhanced floating-point unit for extended functions
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
CN101438242B (zh) * 2006-03-30 2013-09-18 晶像股份有限公司 共享非易失性存储器体系结构
US7831778B2 (en) 2006-03-30 2010-11-09 Silicon Image, Inc. Shared nonvolatile memory architecture
US8156493B2 (en) 2006-04-12 2012-04-10 The Mathworks, Inc. Exception handling in a concurrent computing process
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US20070248111A1 (en) * 2006-04-24 2007-10-25 Shaw Mark E System and method for clearing information in a stalled output queue of a crossbar
WO2007149688A2 (en) * 2006-05-30 2007-12-27 Schneider Automation Inc. Remote virtual placeholder configuration for distributed input/output modules
US7493468B2 (en) * 2006-06-01 2009-02-17 International Business Machines Corporation Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing
US8453147B2 (en) * 2006-06-05 2013-05-28 Cisco Technology, Inc. Techniques for reducing thread overhead for systems with multiple multi-threaded processors
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US20080046684A1 (en) * 2006-08-17 2008-02-21 International Business Machines Corporation Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
US8010966B2 (en) * 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
WO2008070172A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for remote direct memory access to a solid-state storage device
US8683126B2 (en) * 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8780123B2 (en) * 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US7984273B2 (en) 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
EP2249939B1 (de) * 2008-02-06 2017-05-10 Proseon Biosystems A/S Durchflusssteuerung in der hochleistungsflüssigchromatografie
US8681861B2 (en) * 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) * 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US20090300030A1 (en) * 2008-05-30 2009-12-03 Microsoft Corporation Large capacity data processing models
US8464009B2 (en) * 2008-06-04 2013-06-11 Oracle America, Inc. Method for memory interleave support with a ceiling mask
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US8549265B2 (en) 2008-08-15 2013-10-01 Apple Inc. Processing vectors using wrapping shift instructions in the macroscalar architecture
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation instructions in the macroscalar architecture
US8560815B2 (en) 2008-08-15 2013-10-15 Apple Inc. Processing vectors using wrapping boolean instructions in the macroscalar architecture
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8527742B2 (en) 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US8539205B2 (en) 2008-08-15 2013-09-17 Apple Inc. Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
WO2010032330A1 (ja) * 2008-09-22 2010-03-25 富士通株式会社 情報処理装置及びそのメモリ保護方法
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
JP2010102479A (ja) * 2008-10-23 2010-05-06 Hitachi Ltd 計算機システム、ストレージ装置及びデータ更新方法
US20100115232A1 (en) * 2008-10-31 2010-05-06 Johnson Timothy J Large integer support in vector operations
US8489851B2 (en) * 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US9015452B2 (en) * 2009-02-18 2015-04-21 Texas Instruments Incorporated Vector math instruction execution by DSP processor approximating division and complex number magnitude
EP2499576A2 (de) * 2009-11-13 2012-09-19 Richard S. Anderson Verteilte symmetrische multiprozessor-datenverabreitungsarchitektur
US10175990B2 (en) 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US8082467B2 (en) * 2009-12-23 2011-12-20 International Business Machines Corporation Triggering workaround capabilities based on events active in a processor pipeline
JP5835942B2 (ja) 2010-06-25 2015-12-24 キヤノン株式会社 画像処理装置、その制御方法及びプログラム
US20120060016A1 (en) * 2010-09-07 2012-03-08 International Business Machines Corporation Vector Loads from Scattered Memory Locations
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
GB2484904A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing system with a plurality of data processing units and a task-based scheduling scheme
GB2484900A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing unit with scalar processor, vector processor array, parity and FFT accelerator units
GB2484907B (en) * 2010-10-21 2014-07-16 Bluwireless Tech Ltd Data processing systems
GB2484906A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing unit with scalar processor and vector processor array
US9285793B2 (en) 2010-10-21 2016-03-15 Bluewireless Technology Limited Data processing unit including a scalar processing unit and a heterogeneous processor unit
GB2484899A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing system with a plurality of data processing units and a task-based scheduling scheme
GB2484902A (en) * 2010-10-21 2012-05-02 Bluwireless Tech Ltd Data processing system with a plurality of data processing units each with scalar processor, vector processor array, parity and FFT accelerator units
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
WO2012100316A1 (en) * 2011-01-25 2012-08-02 Cognivue Corporation Apparatus and method of vector unit sharing
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8933954B2 (en) 2011-03-23 2015-01-13 Qualcomm Incorporated Register allocation for graphics processing
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
EP2689330B1 (de) 2011-03-25 2022-12-21 Intel Corporation Registerspeichersegmente zur unterstützung einer codeblockausführung mittels durch partitionierbare engines realisierter virtueller kerne
EP2710481B1 (de) 2011-05-20 2021-02-17 Intel Corporation Dezentralisierte zuordnung von ressourcen und verbindungsstrukturen zur unterstützung der ausführung von anweisungssequenzen durch mehrere maschinen
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
US9632188B2 (en) 2011-08-02 2017-04-25 Raytheon Company Noble gas detector for fissile content determination
EP2783280B1 (de) 2011-11-22 2019-09-11 Intel Corporation Beschleunigter codeoptimierer für einen mehrmotor-mikroprozessor
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US8903824B2 (en) * 2011-12-09 2014-12-02 International Business Machines Corporation Vertex-proximity query processing
SE536099C2 (sv) * 2011-12-20 2013-05-07 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US8909892B2 (en) * 2012-06-15 2014-12-09 Nokia Corporation Method, apparatus, and computer program product for fast context switching of application specific processors
US9063532B2 (en) 2012-08-31 2015-06-23 Micron Technology, Inc. Instruction insertion in state machine engines
EP2757468A1 (de) * 2013-01-22 2014-07-23 Siemens Aktiengesellschaft Vorrichtung und Verfahren zur Verwaltung eines Softwareentwicklungs- und -wartungssystems
EP2972836B1 (de) 2013-03-15 2022-11-09 Intel Corporation Verfahren zur emulierung einer zentralisierten gast-flag-architektur mithilfe einer nativen verteilten flag-architektur
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
CN105431819A (zh) 2013-09-06 2016-03-23 华为技术有限公司 异步处理器消除亚稳态的方法和装置
US9081560B2 (en) * 2013-09-30 2015-07-14 Sungard Systems International Inc. Code tracing processor selection
US10834109B2 (en) 2014-12-23 2020-11-10 Mcafee, Llc Determining a reputation for a process
JP6378123B2 (ja) * 2015-04-02 2018-08-22 株式会社東芝 半導体記憶装置
US9870275B2 (en) * 2015-05-12 2018-01-16 International Business Machines Corporation Processor thread management
US9851957B2 (en) * 2015-12-03 2017-12-26 International Business Machines Corporation Improving application code execution performance by consolidating accesses to shared resources
CN107315563B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量比较运算的装置和方法
CN107315717B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
GB2553783B (en) 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
GB2558220B (en) * 2016-12-22 2019-05-15 Advanced Risc Mach Ltd Vector generating instruction
EP3602276A1 (de) * 2017-03-31 2020-02-05 Intel Corporation Verfahren und vorrichtung zum umwandeln von streuungssteuerelementen zum sammeln von steuerelementen zum sortieren von vektoriellen datenelementen
CN109960673B (zh) * 2017-12-14 2020-02-18 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN109062604B (zh) * 2018-06-26 2021-07-23 飞腾技术(长沙)有限公司 一种面向标量和向量指令混合执行的发射方法及装置
DE112022000529T5 (de) * 2021-04-27 2023-11-16 Microchip Technology Inc. Verfahren und vorrichtung für gather/scatter-vorgänge in einem vektorprozessor
US11782871B2 (en) 2021-04-27 2023-10-10 Microchip Technology Inc. Method and apparatus for desynchronizing execution in a vector processor
US20220342590A1 (en) * 2021-04-27 2022-10-27 Microchip Technology Inc. Method and Apparatus for Gather/Scatter Operations in a Vector Processor

Family Cites Families (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3510844A (en) * 1966-07-27 1970-05-05 Gen Electric Interprocessing multicomputer systems
US3618045A (en) * 1969-05-05 1971-11-02 Honeywell Inf Systems Management control subsystem for multiprogrammed data processing system
US3676861A (en) * 1970-12-30 1972-07-11 Honeywell Inf Systems Multiple mask registers for servicing interrupts in a multiprocessor system
US4044333A (en) * 1972-07-26 1977-08-23 Siemens Aktiengesellschaft Data processing switching system
US3811040A (en) * 1972-09-27 1974-05-14 Gen Electric Vector contour plot of physiological parameters
US3854126A (en) * 1972-10-10 1974-12-10 Digital Equipment Corp Circuit for converting virtual addresses into physical addresses
US3916383A (en) * 1973-02-20 1975-10-28 Memorex Corp Multi-processor data processing system
GB1443064A (en) * 1973-07-18 1976-07-21 Int Computers Ltd Microprogramme unit for a data processor
IT995721B (it) * 1973-10-10 1975-11-20 Honeywell Inf Systems Italia Apparato per l interpretazione di codici di funzione in calcolatori microprogrammati e per l indirizza mento indipendente di fasi inter pretative ed esecutive di micro programma
US3889237A (en) * 1973-11-16 1975-06-10 Sperry Rand Corp Common storage controller for dual processor system
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
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
US4042972A (en) * 1974-09-25 1977-08-16 Data General Corporation Microprogram data processing technique and apparatus
US4009470A (en) * 1975-02-18 1977-02-22 Sperry Rand Corporation Pre-emptive, rotational priority system
US4028664A (en) * 1975-03-26 1977-06-07 Honeywell Information Systems, Inc. Apparatus for dispatching data of the highest priority process having the highest priority channel to a processor
US4003033A (en) * 1975-12-22 1977-01-11 Honeywell Information Systems, Inc. Architecture for a microprogrammed device controller
US4124889A (en) * 1975-12-24 1978-11-07 Computer Automation, Inc. Distributed input/output controller system
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
JPS533029A (en) * 1976-06-30 1978-01-12 Toshiba Corp Electronic computer
US4075704A (en) * 1976-07-02 1978-02-21 Floating Point Systems, Inc. Floating point data processor for high speech operation
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4099229A (en) * 1977-02-14 1978-07-04 The United States Of America As Represented By The Secretary Of The Navy Variable architecture digital computer
US4200930A (en) * 1977-05-23 1980-04-29 Burroughs Corporation Adapter cluster module for data communications subsystem
US4161778A (en) * 1977-07-19 1979-07-17 Honeywell Information Systems, Inc. Synchronization control system for firmware access of high data rate transfer bus
JPS5448449A (en) * 1977-09-26 1979-04-17 Hitachi Ltd Virtual addressing sustem
JPS5931734B2 (ja) * 1977-10-25 1984-08-03 デイジタル イクイプメント コ−ポレ−シヨン 特別のオペランド指定子を持つた命令を実行する中央処理装置
US4354232A (en) * 1977-12-16 1982-10-12 Honeywell Information Systems Inc. Cache memory command buffer circuit
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
US4219874A (en) * 1978-03-17 1980-08-26 Gusev Valery Data processing device for variable length multibyte data fields
US4257095A (en) * 1978-06-30 1981-03-17 Intel Corporation System bus arbitration, circuitry and methodology
US4229791A (en) * 1978-10-25 1980-10-21 Digital Equipment Corporation Distributed arbitration circuitry for data processing system
US4236206A (en) * 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4240143A (en) * 1978-12-22 1980-12-16 Burroughs Corporation Hierarchical multi-processor network for memory sharing
US4484262A (en) * 1979-01-09 1984-11-20 Sullivan Herbert W Shared memory computer method and apparatus
US4707781A (en) * 1979-01-09 1987-11-17 Chopp Computer Corp. Shared memory computer method and apparatus
US4351025A (en) * 1979-07-06 1982-09-21 Hall Jr William B Parallel digital computer architecture
US4449183A (en) * 1979-07-09 1984-05-15 Digital Equipment Corporation Arbitration scheme for a multiported shared functional device for use in multiprocessing systems
US4365292A (en) * 1979-11-26 1982-12-21 Burroughs Corporation Array processor architecture connection network
JPS5687282A (en) * 1979-12-14 1981-07-15 Nec Corp Data processor
US4392200A (en) * 1980-01-28 1983-07-05 Digital Equipment Corporation Cached multiprocessor system with pipeline timing
US4314335A (en) * 1980-02-06 1982-02-02 The Perkin-Elmer Corporation Multilevel priority arbiter
US4418382A (en) * 1980-05-06 1983-11-29 Allied Corporation Information exchange processor
US4400768A (en) * 1980-06-04 1983-08-23 Burroughs Corporation Parallel access computer memory system employing a power-of-two memory modules
US4363096A (en) * 1980-06-26 1982-12-07 Gte Automatic Electric Labs Inc. Arbitration controller providing for access of a common resource by a duplex plurality of central processing units
US4445171A (en) * 1981-04-01 1984-04-24 Teradata Corporation Data processing systems and methods
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US4453214A (en) * 1981-09-08 1984-06-05 Sperry Corporation Bus arbitrating circuit
FR2513407B1 (fr) * 1981-09-24 1987-01-16 Finger Ulrich Systeme d'arbitrage des demandes d'acces de plusieurs processeurs a des ressources communes, par l'intermediaire d'un bus commun
US4488256A (en) * 1981-11-23 1984-12-11 Motorola, Inc. Memory management unit having means for detecting and preventing mapping conflicts
US4435756A (en) * 1981-12-03 1984-03-06 Burroughs Corporation Branch predicting computer
DE3151120C2 (de) * 1981-12-23 1983-12-01 Siemens AG, 1000 Berlin und 8000 München Datenverarbeitungsanlage mit Arbeitsspeicher und mehreren in Serie geschalteten Prozessoren
US4473880A (en) * 1982-01-26 1984-09-25 Intel Corporation Arbitration means for controlling access to a bus shared by a number of modules
JPS58149548A (ja) * 1982-03-02 1983-09-05 Hitachi Ltd メモリ制御方式
US4926316A (en) * 1982-09-29 1990-05-15 Apple Computer, Inc. Memory management unit with overlapping control for accessing main memory of a digital computer
US4667287A (en) * 1982-10-28 1987-05-19 Tandem Computers Incorporated Multiprocessor multisystem communications network
US4901230A (en) * 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
US4724518A (en) * 1983-07-29 1988-02-09 Hewlett-Packard Company Odd/even storage in cache memory
GB8334079D0 (en) * 1983-12-21 1984-02-01 Hemdal G A H Computer systems
JPH0724036B2 (ja) * 1983-12-23 1995-03-15 株式会社日立製作所 データベース処理方法
CA1221464A (en) * 1983-12-26 1987-05-05 Hidehiko Nishida Data processor system having improved data throughput of multiprocessor system
US4905145A (en) * 1984-05-17 1990-02-27 Texas Instruments Incorporated Multiprocessor
US4745545A (en) * 1985-06-28 1988-05-17 Cray Research, Inc. Memory reference control in a multiprocessor
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
US4945479A (en) * 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
US4710872A (en) * 1985-08-07 1987-12-01 International Business Machines Corporation Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4719569A (en) * 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
JPH0622035B2 (ja) * 1985-11-13 1994-03-23 株式会社日立製作所 ベクトル処理装置
JPS62159274A (ja) * 1986-01-08 1987-07-15 Hitachi Ltd 条件分岐の分割・複写によるベクトル化方式
US4763244A (en) * 1986-01-15 1988-08-09 Motorola, Inc. Paged memory management unit capable of selectively supporting multiple address spaces
JPH0740252B2 (ja) * 1986-03-08 1995-05-01 株式会社日立製作所 マルチプロセツサシステム
US4774659A (en) * 1986-04-16 1988-09-27 Astronautics Corporation Of America Computer system employing virtual memory
US4729095A (en) * 1986-05-19 1988-03-01 Ncube Corporation Broadcast instruction for use in a high performance computer system
US4760525A (en) * 1986-06-10 1988-07-26 The United States Of America As Represented By The Secretary Of The Air Force Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction
US5010476A (en) * 1986-06-20 1991-04-23 International Business Machines Corporation Time multiplexed system for tightly coupling pipelined processors to separate shared instruction and data storage units
US4845609A (en) * 1986-07-25 1989-07-04 Systech Corporation Computer communications subsystem using an embedded token-passing network
US4920485A (en) * 1986-09-02 1990-04-24 Amdahl Corporation Method and apparatus for arbitration and serialization in a multiprocessor system
US5109521A (en) * 1986-09-08 1992-04-28 Compaq Computer Corporation System for relocating dynamic memory address space having received microprocessor program steps from non-volatile memory to address space of non-volatile memory
JPH0814817B2 (ja) * 1986-10-09 1996-02-14 株式会社日立製作所 自動ベクトル化方法
US5010477A (en) * 1986-10-17 1991-04-23 Hitachi, Ltd. Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations
US4816990A (en) * 1986-11-05 1989-03-28 Stratus Computer, Inc. Method and apparatus for fault-tolerant computer system having expandable processor section
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US4894769A (en) * 1987-02-20 1990-01-16 Ag Communication Systems Corporation Increased bandwith for multi-processor access of a common resource
US4964037A (en) * 1987-02-27 1990-10-16 Bull Hn Information Systems Inc. Memory addressing arrangement
US4891751A (en) * 1987-03-27 1990-01-02 Floating Point Systems, Inc. Massively parallel vector processing computer
US4961137A (en) * 1987-04-17 1990-10-02 U.S. Philips Corporation Method for operating a multiprocessor system for therein establishing a global binary assertion and a multiprocessor apparatus comprising synchronization means for such establishing, in particular for effecting a garbage collection operation
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
US4947368A (en) * 1987-05-01 1990-08-07 Digital Equipment Corporation Lookahead bus arbitration system with override of conditional access grants by bus cycle extensions for multicycle data transfers
US4834483A (en) * 1987-05-06 1989-05-30 Bell Communications Research, Inc. Fast optical cross-connect for parallel processing computers
US5063497A (en) * 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
US5168573A (en) * 1987-08-31 1992-12-01 Digital Equipment Corporation Memory device for storing vector registers
US4845722A (en) * 1987-10-16 1989-07-04 Digital Equipment Corporation Computer interconnect coupler employing crossbar switching
US5051889A (en) * 1987-10-23 1991-09-24 Chips And Technologies, Incorporated Page interleaved memory access
US4924375A (en) * 1987-10-23 1990-05-08 Chips And Technologies, Inc. Page interleaved memory access
JPH01112450A (ja) * 1987-10-27 1989-05-01 Sharp Corp メモリ管理ユニット
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
US5016167A (en) * 1987-12-21 1991-05-14 Amdahl Corporation Resource contention deadlock detection and prevention
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
US5008812A (en) * 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
US5043867A (en) * 1988-03-18 1991-08-27 Digital Equipment Corporation Exception reporting mechanism for a vector processor
US5113521A (en) * 1988-03-18 1992-05-12 Digital Equipment Corporation Method and apparatus for handling faults of vector instructions causing memory management exceptions
US5016162A (en) * 1988-03-30 1991-05-14 Data General Corp. Contention revolution in a digital computer system
DE68928113T2 (de) * 1988-04-01 1997-10-09 Nippon Electric Co Reihenfolgesteuersystem zur Behandlung von Befehlen
US5184307A (en) * 1988-04-18 1993-02-02 3D Systems, Inc. Method and apparatus for production of high resolution three-dimensional objects by stereolithography
US4924380A (en) * 1988-06-20 1990-05-08 Modular Computer Systems, Inc. (Florida Corporation) Dual rotating priority arbitration method for a multiprocessor memory bus
US4920484A (en) * 1988-10-05 1990-04-24 Yale University Multiprocessor/memory interconnection network wherein messages sent through the network to the same memory are combined
US4972342A (en) * 1988-10-07 1990-11-20 International Business Machines Corporation Programmable priority branch circuit
US5053942A (en) * 1988-11-01 1991-10-01 The Regents Of The University Of California Bit-sliced cross-connect chip having a tree topology of arbitration cells for connecting memory modules to processors in a multiprocessor system
US5123095A (en) * 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US5127093A (en) * 1989-01-17 1992-06-30 Cray Research Inc. Computer look-ahead instruction issue control
US5175862A (en) * 1989-12-29 1992-12-29 Supercomputer Systems Limited Partnership Method and apparatus for a special purpose arithmetic boolean unit
US5193187A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Fast interrupt mechanism for interrupting processors in parallel in a multiprocessor system wherein processors are assigned process ID numbers
US5208914A (en) * 1989-12-29 1993-05-04 Superconductor Systems Limited Partnership Method and apparatus for non-sequential resource access
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system

Also Published As

Publication number Publication date
WO1991010194A1 (en) 1991-07-11
US5430884A (en) 1995-07-04
JPH05502958A (ja) 1993-05-20
DE69033272D1 (de) 1999-10-07
AU7151991A (en) 1991-07-24
EP0512007A4 (en) 1995-11-29
EP0512007A1 (de) 1992-11-11
US5659706A (en) 1997-08-19
US5640524A (en) 1997-06-17
US5745721A (en) 1998-04-28
KR920704231A (ko) 1992-12-19
EP0512007B1 (de) 1999-09-01
US5561784A (en) 1996-10-01
US5706490A (en) 1998-01-06
US5197130A (en) 1993-03-23
CA2071481A1 (en) 1991-06-30
US5717881A (en) 1998-02-10

Similar Documents

Publication Publication Date Title
DE69033272T2 (de) Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE3789104T2 (de) Netzwerkübertragungsadapter.
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE60006270T2 (de) Parallele prozessorarchitektur
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE68924934T2 (de) Parallelsynchronisationstechnik.
DE68929317T2 (de) Modulare Kreuzschienen zwischen Verbindungen in einem digitalen Rechner
DE69619366T2 (de) Sperr- und eurekasynchronisierungsarchitektur für multiprozessoren
DE69909829T2 (de) Vielfadenprozessor für faden-softwareanwendungen
DE102008022080B4 (de) Nachrichten-Warteschlangensystem für eine parallel integrierte Schaltkreisarchitektur und zugehöriges Betriebsverfahren
DE68928980T2 (de) Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
DE69701802T2 (de) Paralleler prozessor mit redundanz von prozessorpaaren und verfahren
DE69130138T2 (de) Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
DE69130106T2 (de) Arbitrierung von paketvermittelten Bussen, einschliesslich Bussen von Multiprozessoren mit gemeinsam genutztem Speicher
DE3689087T2 (de) Modularer Mehrfachportdatenknoten.
DE3856552T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE69424114T2 (de) Nachrichtenübertragungssystem für Multiprozessorsystem mit verteiltem gemeinsamen Speicher und dazu gehöriges Nachrichtenübertragungsverfahren
EP1057102B1 (de) VERFAHREN ZUR DEADLOCKFREIEN KONFIGURATION VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, O. DGL.)
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
DE69128017T2 (de) Verteiltes rechnersystem
DE10110504A1 (de) Controller für Prozessoren mit mehreren Befehlsthreads
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee