DE112022003383T5 - Hierarchisches verbindungsnetzwerk auf ringgrundlage für symmetrische mehrprozessoren - Google Patents

Hierarchisches verbindungsnetzwerk auf ringgrundlage für symmetrische mehrprozessoren Download PDF

Info

Publication number
DE112022003383T5
DE112022003383T5 DE112022003383.5T DE112022003383T DE112022003383T5 DE 112022003383 T5 DE112022003383 T5 DE 112022003383T5 DE 112022003383 T DE112022003383 T DE 112022003383T DE 112022003383 T5 DE112022003383 T5 DE 112022003383T5
Authority
DE
Germany
Prior art keywords
node
token
command
multiprocessor
network
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.)
Pending
Application number
DE112022003383.5T
Other languages
English (en)
Inventor
Charles Marino
William Starke
Praveen Reddy
John Jr. Hollaway
Daniel C. Howe
David Krolak
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112022003383T5 publication Critical patent/DE112022003383T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/37Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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/17362Indirect interconnection networks hierarchical topologies
    • 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/17375One dimensional, e.g. linear array, ring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • H04L12/417Bus networks with decentralised control with deterministic access, e.g. token passing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/433Loop networks with decentralised control with asynchronous transmission, e.g. token ring, register insertion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/044Network management architectures or arrangements comprising hierarchical management structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)

Abstract

Offenbart wird ein symmetrischer Mehrprozessor, der ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage enthält. Der symmetrische Prozessor enthält eine Mehrzahl von Bussen, die in dem symmetrischen Mehrprozessor enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird. Der symmetrische Mehrprozessor enthält außerdem eine Mehrzahl von Mehrprozessorknoten, die durch die Busse miteinander verbunden werden, um ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage zu bilden und Befehle zwischen den Mehrprozessorknoten zu übertragen. Das Verbindungsnetzwerk enthält ein Befehlsnetzwerk, das konfiguriert wird, um Befehle auf Grundlage von Befehls-Token zu übertragen, wobei die Token ein Ziel des Befehls, ein Teilantwort-Netzwerk, das konfiguriert wird, um Teilantworten zu übertragen, die durch die Mehrprozessorknoten erzeugt werden, und ein Netzwerk für kombinierte Antworten vorgeben, das konfiguriert wird, um die durch die Mehrprozessorknoten erzeugten Teilantworten unter Verwendung von Token für kombinierte Antworten zu kombinieren.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung bezieht sich auf Computertechnologie und im Besonderen auf ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage von symmetrischen Mehrprozessorknoten (Symmetric Multi-Processing, SMP), die verwendet werden, um Daten innerhalb eines symmetrischen Mehrprozessors bereitzustellen.
  • Moderne symmetrische Mehrprozessoren verbinden eine große Anzahl von Verarbeitungskernen unter Verwendung eines Verbindungsnetzwerks, um Befehle und Antworten zwischen den Verarbeitungskernen zu übertragen. Verbindungsnetzwerke können gemäß ihrer Topologie, Weiterleitungsstrategie und Paketvermittlungsmethode kategorisiert werden. Die Netzwerktopologie, d.h. die Art und Weise, wie die Komponenten miteinander verbunden werden, ist ein wesentlicher bestimmender Faktor für den Aufwand einer Nachrichtenweiterleitung. Entsprechend streben Netzwerkentwürfe an, sowohl die Anzahl der erforderlichen Nachrichten als auch die Entfernungen zu minimieren, über die sie transportiert werden müssen.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Offenbarung enthalten einen symmetrischen Mehrprozessor mit einem hierarchischen Verbindungsnetzwerk auf Ringgrundlage. Der symmetrische Prozessor enthält eine Mehrzahl von Bussen, die in dem symmetrischen Mehrprozessor enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird. Der symmetrische Mehrprozessor enthält außerdem eine Mehrzahl von Mehrprozessorknoten, die durch die Busse miteinander verbunden werden, um ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage zu bilden und Befehle zwischen den Mehrprozessorknoten zu übertragen. Das Verbindungsnetzwerk enthält ein Befehlsnetzwerk, das konfiguriert wird, um Befehle auf Grundlage von Befehls-Token zu übertragen, wobei die Token ein Ziel des Befehls vorgeben, ein Teilantwort-Netzwerk, das konfiguriert wird, um Teilantworten zu übertragen, die durch die Mehrprozessorknoten erzeugt werden, und ein Netzwerk für kombinierte Antworten, das konfiguriert wird, um die durch die Mehrprozessorknoten erzeugten Teilantworten unter Verwendung von Token für kombinierte Antworten zu kombinieren.
  • Zusätzliche Ausführungsformen enthalten einen symmetrischen Mehrprozessorknoten, der ein Kohärenzbefehlsnetzwerk aufweist. Das Kohärenzbefehlsnetzwerk enthält eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Busse wird in einer kreisförmigen Topologie konfiguriert, die einen Befehlsringbus, einen Steuerringbus und einen Token-Ringbus enthält. Das Kohärenzbefehlsnetzwerk enthält außerdem eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Datenübertragungsanschlüsse wird mit einem oder mehreren der Busse verbunden und kann betrieben werden, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten. Das Kohärenzbefehlsnetzwerk enthält des Weiteren eine Mehrzahl von Knotenstationsagenten. Einer oder mehrere der Knotenstationsagenten werden mit mindestens einem der Datenübertragungsanschlüsse verbunden, und die Knotenstationsagenten können betrieben werden, um durch einen oder mehrere der Busse miteinander Daten auszutauschen. Das Kohärenzbefehlsnetzwerk enthält außerdem einen Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen.
  • Weitere Ausführungsformen enthalten einen symmetrischen Mehrprozessorknoten, der ein Teilantwort-Netzwerk aufweist. Das Teilantwort-Netzwerk enthält eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Busse wird in einer kreisförmigen Topologie konfiguriert, die einen Ringbus für lokale Teilantworten und einen Ringbus für entfernt angeordnete Teilantworten enthält. Das Teilantwort-Netzwerk enthält außerdem eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Datenübertragungsanschlüsse wird mit einem oder mehreren der Busse verbunden und kann betrieben werden, um Daten von einem Quellbus an einen Zielbus weiterzuleiten. Das Teilantwort-Netzwerk enthält des Weiteren eine Mehrzahl von Verarbeitungsknoten. Einer oder mehrere der Knotenstationsagenten werden mit mindestens einem der Datenübertragungsanschlüsse verbunden, und die Knotenstationsagenten können betrieben werden, um durch einen oder mehrere der Busse miteinander Daten auszutauschen. Das Teilantwort-Netzwerk enthält außerdem Teilantwort-Warteschlangen, die sich innerhalb der Datenübertragungsanschlüsse befinden, um Antworten von den Knotenstationsagenten zu erfassen.
  • Weitere Ausführungsformen enthalten einen symmetrischen Mehrprozessorknoten, der ein Netzwerk für kombinierte Antworten aufweist. Das Netzwerk für kombinierte Antworten enthält eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Busse wird in einer kreisförmigen Topologie konfiguriert, die einen Ringbus für kombinierte Antworten, einen Steuerringbus und einen Token-Ringbus enthält. Das Netzwerk für kombinierte Antworten enthält außerdem eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Datenübertragungsanschlüsse wird mit einem oder mehreren der Busse verbunden und kann betrieben werden, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten. Das Netzwerk für kombinierte Antworten enthält des Weiteren eine Mehrzahl von Knotenstationsagenten. Einer oder mehrere der Knotenstationsagenten werden mit mindestens einem der Datenübertragungsanschlüsse verbunden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen. Das Netzwerk für kombinierte Antworten enthält des Weiteren einen Antwort-Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen. Die vorliegende Zusammenfassung soll nicht jeden Aspekt, jede Realisierung und/oder jede Ausführungsformen der vorliegenden Offenbarung veranschaulichen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Diese und andere Merkmale, Aspekte und Vorteile der vorliegenden Offenbarung werden aus der folgenden Beschreibung, den beigefügten Ansprüchen und zugehörigen Zeichnungen deutlich, wobei:
    • 1 ein Blockschaubild ist, das ein Kohärenzbefehlsnetzwerk eines Mehrprozessorknotens veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 2 ein Blockschaubild ist, das einen Befehls-Token-Ausgabeagenten veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 3 und 4 Blockschaubilder sind, die einen Knotenstationsagenten veranschaulichen und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet werden;
    • 5 ein Blockschaubild ist, das eine Mehr-Chip-Topologie eines symmetrischen Mehrprozessors veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 6 ein Blockschaubild ist, das ein Teilantwort-Netzwerk eines Mehrprozessorknotens veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 7 ein Blockschaubild ist, das ein Netzwerk für kombinierte Antworten eines Mehrprozessorknotens veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 8 ein Blockschaubild ist, das eine Teilantwort-Verbindungsstruktur veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 9 ein Blockschaubild ist, das einen Token-Ausgabeagenten für kombinierte Antworten veranschaulicht und durch eine oder mehrere Ausführungsformen der vorliegenden Offenbarung verwendet wird;
    • 10 ein Blockschaubild ist, das einen Ende-zu-Ende-Kohärenzfluss zwischen Mehrprozessorknoten veranschaulicht;
    • 11 ein allgemeines Blockschaubild ist, das ein Beispiel-Computersystem veranschaulicht, das zum Realisieren eines oder mehrerer der hierin beschriebenen Verfahren, Werkzeuge und Module sowie etwaiger verwandter Funktionen verwendet werden kann, bei denen die Offenbarung realisiert werden kann.
  • Obwohl die vorliegende Offenbarung für verschiedene Modifizierungen und alternative Formen offen ist, wurden Besonderheiten hiervon in den Zeichnungen beispielhaft gezeigt und werden im Detail beschrieben. Dabei sollte jedoch klar sein, dass keine Beschränkung auf die bestimmten, beschriebenen Ausführungsformen vorgesehen ist. Vielmehr sollen alle Modifikationen, Entsprechungen und Alternativen abgedeckt sein, die unter den inhaltlichen Umfang der vorliegenden Offenbarung fallen. Gleichlautende Bezugsziffern sollen gleichartige Teile in den beigefügten Zeichnungen bezeichnen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenbarung bezieht sich auf Computertechnologie und im Besonderen auf ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage von symmetrischen Mehrprozessorknoten (Symmetric Multi-Processing, SMP), die verwendet werden, um Daten innerhalb eines symmetrischen Mehrprozessors bereitzustellen. Obwohl die vorliegende Offenbarung nicht notwendigerweise auf solche Anwendungen beschränkt ist, lassen sich verschiedene Aspekte der Offenbarung besser würdigen, wenn die verschiedenen Beispiele in diesem Kontext erörtert werden.
  • Moderne symmetrische Mehrprozessoren verbinden eine große Anzahl von Verarbeitungskernen, um Berechnungen durchzuführen. Eine Datenübertragung zwischen den Verarbeitungskernen ist von wesentlicher Bedeutung für eine synchronisierte Verarbeitung und gemeinsame Datennutzung. Die Art und Weise, wie Nachrichten zwischen Systemkomponenten weitergeleitet werden, bestimmt den Gesamtentwurf eines Mehrprozessors. Ein Mehrprozessor kann zum Beispiel einen gemeinsam genutzten Arbeitsspeicher verwenden oder als ein Verbindungsnetzwerkmodell entworfen werden. Gemeinsam genutzte Arbeitsspeichersysteme haben einen großen Arbeitsspeicher, auf den alle Prozessoren auf die gleiche Art und Weise zugreifen. Bei miteinander verbundenen Systemen kann jeder Prozessor seinen eigenen Arbeitsspeicher haben, und den Prozessoren wird gestattet, über das Verbindungsnetzwerk auf Arbeitsspeicher anderer Prozessoren zuzugreifen.
  • Verbindungsnetzwerke werden häufig gemäß ihrer Topologie, Weiterleitungsstrategie und Paketvermittlungsmethode kategorisiert. Die Netzwerktopologie, d.h. die Art und Weise, wie die Komponenten miteinander verbunden werden, ist ein bestimmender Faktor für den Aufwand einer Nachrichtenweiterleitung. Die Effizienz einer Nachrichtenweiterleitung kann durch die Bandbreite, die Nachrichtenlatenz, die Transportlatenz und den Aufwand begrenzt werden, der für die Übertragung notwendig sind.
  • Zusätzlich hierzu können Verbindungsnetzwerke statisch oder dynamisch sein. Bei dynamischen Verbindungsnetzwerken kann sich der Pfad zwischen zwei Entitäten (z.B. ein Prozessor oder Arbeitsspeicher) von Datenübertragung zu Datenübertragung verändern. Statische Netzwerke erlauben keine Veränderung der Pfade. Statische Verbindungsnetzwerke werden üblicherweise für eine Nachrichtenweiterleitung zwischen Prozessoren verwendet. Dynamische Verbindungsnetzwerke werden üblicherweise für eine Nachrichtenweiterleitung zwischen Prozessoren und einem Arbeitsspeicher verwendet.
  • Verbindungsnetzwerke können auch ein vollständig verbundenes Netzwerk sein, wobei alle Komponenten mit allen anderen Komponenten verbunden werden. Diese Netzwerke enthalten zum Beispiel Topologien wie sternförmig verbundene Netzwerke, linear angeordnete Netzwerke, Ringnetzwerke und vermaschte Netzwerke. Ringnetzwerke ermöglichen einer Entität, direkt mit ihren Nachbarn Daten auszutauschen. Andere Datenübertragungen müssen mehrere Entitäten durchlaufen, um an ihrem Ziel anzukommen.
  • Allerdings verbleiben Beschränkungen für symmetrische Mehrprozessoren mit Verbindungsnetzwerken. Je nach der ausgewählten Netzwerktopologie können sich die Geschwindigkeit, Aufwand, Zuverlässigkeit, Konfiguration und Komplexität des Netzwerks auf den symmetrischen Mehrprozessor auswirken. Zum Beispiel kann ein Netzwerk auf Busgrundlage unter Engpässen leiden, wenn zu viele Prozessoren gleichzeitig Arbeitsspeicheranforderungen stellen. Parallele Busse können Engpässe abmildern, wobei der Aufwand für ein Realisieren dieser Busse jedoch beträchtlich sein kann und die Komplexität der Architektur zu belastend werden kann.
  • Ausführungsformen der vorliegenden Offenbarung können die oben erwähnten und andere Probleme überwinden, indem ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage auf einen symmetrischen Mehrprozessor angewendet wird. Das Verbindungsnetzwerk auf Ringgrundlage stellt dem System ein Adress-/Befehlsnetzwerk, ein Teilantwort-Netzwerk und ein Netzwerk für kombinierte Antworten bereit, die Datenübertragungspfade für den symmetrischen Mehrprozessor sind. Das Verbindungsnetzwerk kombiniert Gruppen von Verarbeitungsknoten in einer Ringtopologie mit zusätzlichen Verbindungen zwischen den Gruppen.
  • Zusätzlich hierzu stellt das Verbindungsnetzwerk eine Unterstützung für mehrere Bereiche bereit, in denen Befehle rundgesendet werden. Zum Beispiel kann ein Befehl auf einen Verarbeitungsknoten beschränkt bleiben, ein Befehl kann innerhalb einer Gruppe von Verarbeitungsknoten rundgesendet werden, oder der Befehl kann an das gesamte Netzwerk rundgesendet werden. Befehle von einem in dem Netzwerk befindlichen Knotenstationsagenten werden durch Token gesteuert, die durch einen Token-Ausgeber bereitgestellt werden, der sich in jedem Verarbeitungsknoten befindet. Das durch den Knotenstationsagenten ausgewählte Token kann den Bereich des Befehls vorgeben. Zum Beispiel gibt es lokale Token für lokale Übertragungen, Gruppen-Token für Rundsendungen an die Gruppe von Verarbeitungsknoten und System-Token für Rundsendungen an das gesamte Netzwerk.
  • Ausführungsformen der vorliegenden Offenbarung stellen ein Verbindungsnetzwerk zum Ausgeben von Befehlen zwischen Mehrprozessorknoten bereit, die in dem Netzwerk miteinander verbunden werden. Ein Knotenstationsagent, der mit einem Mehrprozessorknoten verbunden wird, kann einen Befehl ausgeben. Um den Befehl auszugeben, erhält der Knotenstationsagent zuerst ein Token des Bereichs, in dem der Agent den Befehl rundsenden möchte. Der Knotenstationsagent kann dann den Befehl ausgeben und dieser wird in dem Bereich des erhaltenen Tokens rundgesendet. Andere Knotenstationsagenten innerhalb des Bereichs können den Befehl erfassen und Teilantworten auf den Befehl ausgeben. Der Mehrprozessorknoten, der den Knotenstationsagenten enthält, welcher den Befehl ausgegeben hat, kann ein Netzwerk für kombinierte Antworten verwenden, um eine kombinierte Antwort zu erzeugen, indem er die Teilantworten zusammenfügt, die durch die anderen Knotenstationsagenten ausgegeben werden. Die kombinierte Antwort kann dann an den Knotenstationsagenten übertragen werden, der an dem Befehl teilgenommen hat.
  • Bei manchen Ausführungsformen enthält das Verbindungsnetzwerk symmetrische Mehrprozessorknoten mit einem Befehlsnetzwerk, das konfiguriert wird, um Kohärenzbefehle zu übertragen. Das Befehlsnetzwerk kann eine Mehrzahl von Bussen enthalten, die in einem Mehrprozessorknoten enthalten sind. Jeder der Busse wird in einer kreisförmigen Topologie konfiguriert, die einen Befehlsringbus, einen Steuerringbus und einen Token-Ringbus enthält. Das Befehlsnetzwerk enthält außerdem eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Datenübertragungsanschlüsse wird mit einem oder mehreren der Busse verbunden und kann betrieben werden, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten. Das Befehlsnetzwerk enthält außerdem eine Mehrzahl von Knotenstationsagenten. Einer oder mehrere der Knotenstationsagenten werden mit mindestens einem der Datenübertragungsanschlüsse verbunden. Die Knotenstationsagenten können betrieben werden, um durch einen oder mehrere der Busse Daten miteinander auszutauschen. Das Befehlsnetzwerk enthält außerdem einen Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen, die den Bereich des Befehls bestimmen.
  • Bei manchen Ausführungsformen verteilt der Token-Ausgabeagent auf Grundlage eines Prozentsatzes der verschiedenen Arten von Token, die sich gegenwärtig auf dem Token-Ringbus befinden, Token auf den Token-Ringbus. Zusätzlich hierzu setzt der Token-Ausgabeagent Verbindungs-Token auf den Token-Ringbus, damit Datenverkehr außerhalb des Rings in den Mehrprozessorknoten eintreten kann. Die verschiedenen Arten von Token können auch ein lokales Token enthalten, das eine lokal begrenzte Datenübertragung in dem Knoten ermöglicht, ein Gruppen-Token, das Datenübertragungen innerhalb einer Gruppe von Knoten ermöglicht, und ein System-Token, das eine Datenübertragung mit jedem Knoten innerhalb eines Systems von Knoten ermöglicht. Indem die verschiedenen Token auf Grundlage eines Prozentsatzes verwaltet werden, kann der Token-Ausgabeagent Datenverkehr innerhalb des Rings gegenüber Datenverkehr außerhalb des Rings regeln.
  • Bei manchen Ausführungsformen überträgt der Steuerringbus Datenverkehr in einer entgegengesetzten Richtung wie der Befehlsringbus. Der Steuerringbus kann außerdem Zähler für die verschiedenen Arten von Token bereitstellen, sodass der Token-Ausgabeagent die Token auf Grundlage eines Prozentsatzes verschiedener Token auf den Token-Ringbus verteilen kann. Zusätzlich hierzu können Knotenstationsagenten in dem Steuerring den Steuerring analysieren, wenn Befehle ausgegeben werden. Wenn ein Knotenstationsagent einen Befehl einer bestimmten Art (z.B. Knoten, Gruppe, System, Verbindung) auf dem Befehlsringbus ausgeben muss, stellt der Knotenstationsagent einen Hinweis auf den Befehl bereit, indem er den Zähler für diese Art von Klasse inkrementiert. Wenn der Knotenstationsagent zum Beispiel einen Befehl innerhalb des Knotens ausgeben möchte, wird der Knotenzähler inkrementiert, usw.
  • Bei manchen Ausführungsformen können Knotenstationsagenten beim Ausgeben eines Befehls den Steuerringbus auf die Klasse des Befehls analysieren, die er ausgegeben hat. Der Knotenstationsagent wartet ab, bis entsprechend viele Befehle dieser Art von vorgelagerten Stationsagenten den Agenten durchlaufen haben, bevor der Agent einen weiteren Befehl derselben Art ausgeben kann. Zum Beispiel gibt ein Knotenstationsagent unter Verwendung eines Befehls-Tokens einen Gruppenbefehl auf dem Befehlsringbus aus. Vor dem Senden eines weiteren Gruppenbefehls kann dieser Knotenstationsagent den Token-Ringbus auf die Anzahl der Gruppen-Token auf dem Token-Ringbus analysieren. Wenn entsprechend viele Befehle von vorgelagerten Knotenstationsagenten diesen Knotenstationsagenten durchlaufen haben, kann er einen weiteren Gruppenbefehl ausgeben.
  • Bei manchen Ausführungsformen verwaltet der Token-Ausgabeagent die verfügbaren Token auf dem Token-Ringbus, indem die Zählwerte der verschiedenen Arten von Token in dem Ring zurückgesetzt werden. Zusätzlich kann der Token-Ausgabeagent die Mischung der verfügbaren Token dynamisch anpassen, um die Leistung des symmetrischen Mehrprozessors auf Grundlage der Anzahl erfolgreicher Befehle für jede Art von Bereich zu optimieren. Wenn es zum Beispiel eine Zunahme erfolgreicher Gruppenbefehle gibt, kann der Token-Ausgabeagent dem Token-Ringbus zusätzliche Gruppen-Token zuteilen.
  • Bei manchen Ausführungsformen stellt der Token-Ausgabeagent Golden Token bereit. Um eine Blockierung eines Knotenstationsagenten zu vermeiden, kann ein Golden Token ausgegeben werden, das einem bestimmten Agenten die Ausgabe eines Befehls ermöglicht. Der Token-Ausgabeagent kann den Token-Ringbus in einem regelmäßigen Intervall leeren, um sicherzustellen, dass der Knotenstationsagent mit dem Golden Token in der Lage ist, einen Befehl auszugeben, wenn das Golden Token eingeht. Sobald der Token-Ringbus keine Token mehr enthält, kann der Token-Ausgabeagent das Golden Token an den Knotenstationsagenten ausgeben, damit dieser seinen Befehl ausgeben kann. Dieser Prozess kann über den gesamten Ring hinweg fortgesetzt werden, wobei der Token-Ringbus jedes Mal geleert wird und jedem Knotenstationsagenten in dem Mehrprozessorknoten ein Golden Token übergeben wird. Auf diese Weise hat jeder Agent die Möglichkeit, zumindest einen gewissen minimalen Datenverkehrsfluss durch das Verbindungsnetzwerk zu leiten.
  • Bei manchen Ausführungsformen enthält das Verbindungsnetzwerk symmetrische Mehrprozessorknoten mit einem Teilantwort-Netzwerk zum Übertragen von Teilantworten in dem Verbindungsnetzwerk. Das Teilantwort-Netzwerk enthält eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Busse wird in einer kreisförmigen Topologie konfiguriert, die einen Ringbus für lokale Teilantworten und einen Ringbus für entfernt angeordnete Teilantworten enthält. Das Teilantwort-Netzwerk enthält außerdem eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Datenübertragungsanschlüsse wird mit einem oder mehreren der Busse verbunden und kann betrieben werden, um Daten von einem Quellbus an einen Zielbus weiterzuleiten. Das Teilantwort-Netzwerk enthält außerdem eine Mehrzahl von Verarbeitungsknoten. Einer oder mehrere der Knotenstationsagenten werden mit mindestens einem der Datenübertragungsanschlüsse verbunden. Die Knotenstationsagenten können betrieben werden, um durch einen oder mehrere der Busse Daten miteinander auszutauschen. Das Teilantwort-Netzwerk enthält außerdem Teilantwort-Warteschlangen, die sich innerhalb der Datenübertragungsanschlüsse befinden, um Antworten von den Knotenstationsagenten zu erfassen.
  • Bei manchen Ausführungsformen ermöglichen die Ringbusse für lokale und entfernt angeordnete Teilantworten den Knotenstationsagenten, ausgegebene Befehle zu erfassen. Das Erfassen kann nach Befehlen des geeigneten Bereichs für den Mehrprozessorknoten suchen. Zum Beispiel kann ein Befehl mit einem Gruppen-Bereich gesucht werden. Wenn sich der Mehrprozessorknoten innerhalb der Gruppe befindet, können die Knotenstationsagenten als Reaktion auf den Befehl Teilantworten bereitstellen. Der Ringbus für entfernt angeordnete Teilantworten kann verwendet werden, um die Teilantworten an die Datenübertragungsanschlüsse zu übertragen, sodass sie an den als Ausgangspunkt dienenden Knotenstationsagenten zurückübertragen werden können, der den Befehl ausgegeben hat.
  • Bei manchen Ausführungsformen enthält das Verbindungsnetzwerk symmetrische Mehrprozessorknoten mit einem Netzwerk für kombinierte Antworten zum Erfassen von Teilantworten von dem Verbindungsnetzwerk. Das Netzwerk für kombinierte Antworten enthält eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Busse wird in einer kreisförmigen Topologie konfiguriert, die einen Ringbus für kombinierte Antworten, einen Steuerringbus und einen Token-Ringbus enthält. Das Netzwerk für kombinierte Antworten enthält außerdem eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind. Jeder der Datenübertragungsanschlüsse wird mit einem oder mehreren der Busse verbunden und kann betrieben werden, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten. Das Netzwerk für kombinierte Antworten enthält des Weiteren eine Mehrzahl von Knotenstationsagenten. Einer oder mehrere der Knotenstationsagenten werden mit mindestens einem der Datenübertragungsanschlüsse verbunden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen. Das Netzwerk für kombinierte Antworten enthält des Weiteren einen Antwort-Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen.
  • Bei manchen Ausführungsformen verteilt der Antwort-Token-Ausgabeagent auf Grundlage eines durch einen Arbeitslastvektor bereitgestellten Bedarfs Token auf den Token-Ringbus. Wenn der Arbeitslastvektor zum Beispiel eine größere Anzahl von Gruppenbefehlen hat, kann der Antwort-Token-Ausgabeagent dem Token-Ringbus mehr Gruppen-Token zuteilen. Zusätzlich hierzu enthalten die verschiedenen Arten von Token, die der Antwort-Token-Ausgabeagent ausgibt, ein Gruppen-Token, das eine Datenübertragung innerhalb einer Gruppe von Knoten ermöglicht, und ein System-Token, das eine Datenübertragung mit anderen Knoten innerhalb des gesamten Verbindungsnetzwerks ermöglicht.
  • 1 veranschaulicht ein Kohärenzbefehlsnetzwerk 100 für einen Mehrprozessorknoten, das gemäß Ausführungsformen der vorliegenden Offenbarung konfiguriert wird, um Befehle zu verwalten. Das Kohärenzbefehlsnetzwerk 100 enthält Knotenstationsagenten 110A bis 110P, Datenübertragungsanschlüsse 120A bis 120H, einen Befehls-Token-Ausgabeagenten 130 (Token Dispenser (TD), Token-Ausgeber), einen Befehlsringbus 140, einen Steuerringbus 150 und einen Token-Ringbus 160. Wenn auf eine Komponente und ihre zugehörige Ziffer Bezug genommen wird, z.B. auf den Knotenstationsagenten 110, kann dieser Bezug für jede beliebige der Komponenten mit dieser zugehörigen Ziffer gelten, z.B. für die Knotenstationsagenten 110A bis 110P, mit einem oder ohne einen zusätzlich zugehörigen Buchstaben. Das Kohärenzbefehlsnetzwerk 100 wird in einer kreisförmigen Topologie konfiguriert, die die Knotenstationsagenten 110 mit dem Befehlsringbus 140, dem Steuerringbus 150 und dem Token-Ringbus 160 verbindet. Der Knotenstationsagent 110A wird mit den Datenübertragungsanschlüssen 120A und 120B verbunden. Der Knotenstationsagent 110D wird mit den Datenübertragungsanschlüssen 120C und 120D verbunden. Der Knotenstationsagent 1101 wird mit den Datenübertragungsanschlüssen 120E und 120F verbunden. Der Knotenstationsagent 110L wird mit den Datenübertragungsanschlüssen 120G und 120H verbunden. Obwohl 1 drei Busse 140, 150 und 160 enthält, ist zu beachten, dass nach Wunsch auch eine größere Anzahl von Bussen enthalten sein kann. Obwohl nur sechzehn Knotenstationsagenten 110 gezeigt werden, kann zusätzlich hierzu eine größere oder kleinere Anzahl der Knotenstationsagenten 110 verwendet werden.
  • Die Knotenstationsagenten 110 sind Komponenten des Mehrprozessorknotens in dem Kohärenzbefehlsnetzwerk 100, die konfiguriert werden, um Operationen durchzuführen. Die Knotenstationsagenten 110 können zum Beispiel einen Prozessor, einen E/A-Controller, einen Arbeitsspeicher oder eine Hybrid-Aufgabeneinheit enthalten (z.B. eine aufgabenspezifische Hybrid-Einheit (ASIC, Application-Specific Integrated Circuit, anwendungsspezifische integrierte Schaltung) oder eine universelle Hybrid-Aufgabeneinheit). Ein Prozessor kann eine CPU (Central Processing Unit, Zentraleinheit), FPU (Floating Point Unit, Gleitkommaeinheit) oder ein E/A-Controller in einer Vielfalt von möglichen Formen sein. Ein Prozessor kann ein RAM (Random Access Memory, Direktzugriffsspeicher), ROM (Read-Only Memory, Nur-Lese-Speicher) oder aktiver Arbeitsspeicher in einer Vielfalt von möglichen Formen sein. Hybrid-Einheiten können aufgabenspezifisch wie eine ASIC oder universell für alle Aufgaben geeignet sein. Zusätzliche Einzelheiten zu den Knotenstationsagenten 110 werden weiter unten in Bezug auf die 3 und 4 dargelegt.
  • Die Datenübertragungsanschlüsse 120 sind Komponenten des Mehrprozessorknotens in dem Kohärenzbefehlsnetzwerk 100, die konfiguriert werden, um Daten von den Knotenstationsagenten 110 an andere Mehrprozessorknoten weiterzuleiten. Jeder der Datenübertragungsanschlüsse 120A bis 120H wird des Weiteren mit einem zugehörigen Knotenstationsagenten 110A bis 110P verbunden, die gemeinsam in einer kreisförmigen Topologie mit den Bussen 140, 150 und 160 verbunden werden. Auch andere Verbindungen für die Datenübertragungsanschlüsse 120 sind möglich, z.B. mit einem weiteren Modul oder mit zusätzlichen Datenübertragungsanschlüssen in anderen Mehrprozessorknoten. Zusätzliche Einzelheiten zu den Datenübertragungsanschlüssen 120 werden weiter unten in Bezug auf 8 dargelegt.
  • Der Befehls-Token-Ausgabeagent 130 ist eine Komponente des Mehrprozessorknotens in dem Kohärenzbefehlsnetzwerk 100, die konfiguriert wird, um Token auf dem Token-Ringbus 160 bereitzustellen. Der Befehls-Token-Ausgabeagent gibt verschiedene Arten von Token aus, die auf den Token-Ringbus 160 gegeben werden. Die verschiedenen Arten von Token enthalten ein Knoten-Token, ein Gruppen-Token, ein System-Token und ein Verbindungs-Token.
  • Diese Token stellen Befehle, die auf den Befehlsringbus 140 gegeben werden sollen, mit ihrem Weitergabebereich und der jeweiligen Autorisierung bereit. Knoten-Token ermöglichen die Weitergabe von Befehlen innerhalb des Mehrprozessorknotens. Gruppen-Token ermöglichen die Weitergabe von Befehlen an andere Mehrprozessorknoten in derselben Gruppe. System-Token ermöglichen die Weitergabe des Befehls an ein gesamtes Netzwerk von miteinander verbundenen Mehrprozessorknoten. Ein Knotenstationsagent 110 kann zum Beispiel ein Gruppen-Token aus dem Token-Ringbus 160 erhalten und einen Befehl an die Gruppe von Mehrprozessorknoten ausgeben, in der sich der aktuelle Mehrprozessorknoten befindet. Die Verbindungs-Token ermöglichen einem weiteren Knotenstationsagenten in einem über Kreuz liegenden Ring, einen Befehl in dem Mehrprozessorknoten zu veranlassen, um ermöglichen ferner, dass dieser von einem weiteren Mehrprozessorknoten stammte. Die Verbindungs-Token ermöglichen Datenverkehr außerhalb des Rings, in das Kohärenzbefehlsnetzwerk 100 einzutreten.
  • Der Befehls-Token-Ausgabeagent 130 wird des Weiteren konfiguriert, um den Prozentsatz der verschiedenen Arten von Token auf dem Token-Ringbus 160 zu verwalten. Der Befehls-Token-Ausgabeagent 130 kann zum Beispiel die Token so auf den Token-Ringbus 160 verteilen, dass 25 % der Token Knoten-Token sind, 25 % der Token Gruppe-Token sind, 25 % der Token System-Token sind und 25 % der Token Verbindungs-Token sind. Dabei sollte klar sein, dass diese prozentualen Anteile auf Grundlage der Erfordernisse und der Konfiguration des Befehls-Token-Ausgabeagenten 130 variieren können. Die prozentualen Zuteilungen ermöglichen dem Befehls-Token-Ausgabeagenten 130, den Datenverkehr innerhalb des Rings gegenüber dem Datenverkehr außerhalb des Rings zu regeln, der in dem Kohärenzbefehlsnetzwerk 100 stattfinden kann.
  • Der Befehls-Token-Ausgabeagent 130 wird des Weiteren konfiguriert, um die Mischung der verfügbaren Token auf dem Token-Ringbus 160 dynamisch anzupassen. Der Befehls-Token-Ausgabeagent 130 kann die Art der verfügbaren Token auf Grundlage dessen anpassen, welche Token aus dem Token-Ringbus 160 entfernt werden. Wenn zum Beispiel mehr Token aus dem Token-Ringbus 160 entfernt werden, kann der Befehls-Token-Ausgabeagent 130 dem Bus 160 mehr Gruppen-Token zuteilen, um den größeren Bedarf zu befriedigen.
  • Der Befehls-Token-Ausgabeagent 130 wird des Weiteren konfiguriert, um den Zählwert der verfügbaren Token auf dem Token-Ringbus 160 zurückzusetzen, nachdem die Token vollständig durch den Token-Ringbus 160 weitergegeben wurden. Nachdem der Befehls-Token-Ausgabeagent 130 die Token ausgibt, wartet er zum Beispiel auf Token, die noch nicht vollständig durch den Token-Ringbus 160 weitergegeben wurden, bevor er die Zuteilung von Token auf dem Bus 160 zurücksetzt. Auf diese Weise stellt der Befehls-Token-Ausgabeagent 130 sicher, dass es eine ausreichende Anzahl von Token auf dem Token-Ringbus 160 gibt.
  • Der Befehls-Token-Ausgabeagent 130 wird des Weiteren konfiguriert, um ein Golden Token zu verteilen. Ein Golden Token ermöglicht einem Knotenstationsagenten 110, einen Befehl auszugeben, um eine Blockierung zu vermeiden. Der Befehls-Token-Ausgabeagent 130 kann in einem regelmäßigen Intervall alle Token aus dem Token-Ringbus 160 entfernen. Sobald der Ring keine Token mehr enthält, kann der Befehls-Token-Ausgabeagent 130 das Golden Token ausgeben, um einem Knotenstationsagenten 110 zu ermöglichen, einen Befehl auszugeben, nachdem er das Golden Token erhalten hat. Danach kann der Befehls-Token-Ausgabeagent 130 den Token-Ringbus 160 mit den regulären Arten von Token neu befüllen. Die Verteilung des Golden Tokens in dem Ring kann mit jedem Knotenstationsagenten 110 in dem Kohärenzbefehlsnetzwerk 100 fortfahren. Das Golden Token wird so lange an jeden Knotenstationsagenten 110 verteilt, bis alle Knotenstationsagenten in dem Kohärenzbefehlsnetzwerk 100 die Möglichkeit gehabt haben, das Golden Token zu erhalten. Auf diese Weise stellt der Befehls-Token-Ausgabeagent 100 einen Mechanismus bereit, der mindestens einen gewissen Datenverkehrsfluss von jedem der Knotenstationsagenten 110 ermöglicht. Zusätzliche Einzelheiten zu dem Befehls-Token-Ausgabeagenten 130 werden weiter unten in Bezug auf 2 dargelegt.
  • Der Befehlsringbus 140, der Steuerringbus 150 und der Token-Ringbus 160 sind Komponenten des Mehrprozessorknotens, die konfiguriert werden, um Teile des Kohärenzbefehlsnetzwerks 100 zu bilden, das mehrere kreisförmige Topologien verwendet, um die Mehrzahl der Knotenstationsagenten 110A bis 110P in dem Mehrprozessorknoten miteinander zu verbinden und ein On-Chip-Netzwerk zu bilden. Der Datenübertragungsbus 130 wird des Weiteren konfiguriert, um einen elektrischen Pfad für Datenübertragungen zwischen der Mehrzahl der Verarbeitungsknoten 110 bereitzustellen, die auf dem Computer-Chip 100 enthalten sind. Obwohl die Ausführungsform der 1 und 2 zwei Busse 130 und 140 enthält, ist zu beachten, dass nach Wunsch auch eine größere Anzahl von Bussen enthalten sein kann.
  • Der Befehlsringbus 140, der Steuerringbus 150 und der Token-Ringbus 160 können unidirektional sein, d.h. Daten nur in eine Richtung übertragen. Die Busse 140, 150 und 160 können auch konfiguriert werden, um Daten in zwei Richtungen zu übertragen. Zusätzlich zu Datenleitungen können die Busse 140, 150 und 160 auch Adressierungs- und Steuerleitungen enthalten. Nach Wunsch können auch andere Leitungen mit einer Spezialfunktion in den Bussen 140, 150 und 160 enthalten sein. Wenn ein Knotenstationsagent 110 einen Befehl ausgibt, erhält er zuerst ein Token von dem Token-Ringbus 160 und gibt den Befehl dann auf den Befehlsringbus 140. Der Befehl kann auf Grundlage des Bereichs, der durch das erhaltene Token autorisiert wird, von dem Befehlsringbus 140 an sein jeweiliges Ziel weitergegeben werden.
  • Es wird darauf verwiesen, dass 1 die repräsentativen Hauptkomponenten eines Kohärenzbefehlsnetzwerks 100 darstellen soll. Allerdings können bei manchen Ausführungsformen einzelne Komponenten eine größere oder geringere Komplexität als in 1 gezeigt haben, andere oder zusätzliche Komponenten als die in 2 gezeigten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren. Es ist darauf zu verweisen, dass die Komponenten in dem Kohärenzbefehlsnetzwerk 100 mehrfach (z.B. viermal) dupliziert werden können, um genügend Kapazität für Datenverkehr bereitzustellen. Nachdem sie dupliziert wurden, wechselt die Richtung der Busse zwischen den verschiedenen Duplikationen.
  • 2 ist ein Blockschaubild, das gemäß Ausführungsformen der vorliegenden Offenbarung einen Befehls-Token-Ausgabeagenten 200 veranschaulicht (der gleich dem oder im Wesentlichen gleich dem Befehls-Token-Ausgabeagenten 130 aus 1 sein kann), der konfiguriert wird, um dem Token-Ringbus 160 Token zuzuteilen. Der Token-Ausgabeagent 200 enthält einen Knoten-Token-Ausgeber 210 (NP-Token-Ausgeber), einen Gruppen-Token-Ausgeber 220 (GP-Token-Ausgeber), einen System-Token-Ausgeber 230 (SP-Token-Ausgeber), einen Verbindungs-Token-Ausgeber 240, einen Golden-Token-Ausgeber 250 und einen Round-Robin-Arbiter 260.
  • Der Knoten-Token-Ausgeber 210 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um ein Knoten-Token an den Round-Robin-Arbiter 260 auszugeben. Knoten-Token ermöglichen die Weitergabe von Befehlen innerhalb des Mehrprozessorknotens. Der Knoten-Token-Ausgeber 210 lädt einen Knoten-Startratenzähler (NP Launch Rate Counter (NP LR Counter), NP-LR-Zähler), der die Rate bestimmt, mit der ein Knoten-Token ausgegeben wird. Der Knoten-Startratenzähler kann den Prozentsatz der Token-Verteilung auf den Token-Ringbus 160 zur Grundlage haben. Bei manchen Ausführungsformen ändert der Befehls-Token-Ausgabeagent 200 den Knoten-Startratenzähler dynamisch, um die Häufigkeit der Knoten-Token-Verteilung anzupassen. Ein höherer Knoten-Startratenzähler kann zum Beispiel die Häufigkeit der Knoten-Token-Verteilung vermindern, wohingegen ein niedrigerer Knoten-Startratenzähler die Häufigkeit der Knoten-Token-Verteilung erhöhen kann.
  • Nach dem Laden kann der Knoten-Token-Ausgeber 210 den Knoten-Token-Startratenzähler dekrementieren. Der Knoten-Startratenzähler kann analysiert werden, um zu ermitteln, ob der Knoten-Startratenzähler gleich Null ist. Wenn der Knoten-Startratenzähler nicht Null ist, kann der Knoten-Token-Ausgeber 210 damit fortfahren, den Knoten-Startratenzähler in einem Intervall zu dekrementieren. Wenn der Knoten-Startratenzähler jedoch Null ist, kann der Knoten-Token-Ausgeber 210 ein Knoten-Token an den Round-Robin-Arbiter 260 senden. Wenn der Knoten-Token-Ausgeber 210 den Knoten-Startratenzähler analysiert, analysiert er bei manchen Ausführungsformen auch, ob es etwaige Anforderungen von den Knotenstationsagenten 110 für Gruppen-Token, System-Token oder Verbindungs-Token gibt. Wenn es keine Anforderungen gibt, kann ein Knoten-Token an den Round-Robin-Arbiter 260 gesendet werden.
  • Der Gruppen-Token-Ausgeber 220 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um ein Gruppen-Token an den Round-Robin-Arbiter 260 auszugeben. Gruppen-Token ermöglichen die Weitergabe von Befehlen an andere Mehrprozessorknoten in derselben Gruppe. Der Gruppen-Token-Ausgeber 230 lädt einen Gruppen-Startratenzähler (GP Launch Rate Counter (GP LR Counter, GP-LR-Zähler), der die Rate bestimmt, mit der ein Gruppen-Token ausgegeben wird. Der Gruppen-Startratenzähler kann den Prozentsatz der Token-Verteilung auf den Token-Ringbus 160 zur Grundlage haben. Bei manchen Ausführungsformen ändert der Befehls-Token-Ausgabeagent 200 den Gruppen-Startratenzähler dynamisch, um die Häufigkeit der Gruppen-Token-Verteilung anzupassen. Ein höherer Gruppen-Startratenzähler kann zum Beispiel die Häufigkeit der Gruppen-Token-Verteilung vermindern, wohingegen ein niedrigerer Gruppen-Startratenzähler die Häufigkeit der Gruppen-Token-Verteilung erhöhen kann.
  • Nach dem Laden kann der Gruppen-Token-Ausgeber 220 den Gruppen-Token-Startratenzähler dekrementieren. Der Gruppen-Startratenzähler kann analysiert werden, um zu ermitteln, ob der Gruppen-Startratenzähler gleich Null ist. Wenn der Gruppen-Startratenzähler nicht Null ist, kann der Gruppen-Token-Ausgeber 220 damit fortfahren, den Gruppen-Startratenzähler in einem Intervall zu dekrementieren. Wenn der Gruppen-Startratenzähler jedoch Null ist, kann der Gruppen-Token-Ausgeber 220 ein Gruppen-Token an den Round-Robin-Arbiter 260 senden. Wenn der Gruppen-Token-Ausgeber 220 den Gruppen-Startratenzähler analysiert, analysiert er bei manchen Ausführungsformen auch, ob es etwaige Anforderungen von den Knotenstationsagenten 110 für Knoten-Token, System-Token oder Verbindungs-Token gibt. Wenn es keine Anforderungen gibt, kann ein Gruppen-Token an den Round-Robin-Arbiter 260 gesendet werden.
  • Der System-Token-Ausgeber 230 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um ein System -Token an den Round-Robin-Arbiter 260 auszugeben. System-Token ermöglichen die Weitergabe von Befehlen an andere Mehrprozessorknoten in einem gesamten Verbindungsnetzwerk. Der System-Token-Ausgeber 230 lädt einen System-Startratenzähler (SP Load Rate Counter,(SP LR Counter), SP-LR-Zähler), der bestimmt, wie ein System-Token ausgegeben wird. Der System-Startratenzähler kann den Prozentsatz der Token-Verteilung auf den Token-Ringbus 160 zur Grundlage haben. Bei manchen Ausführungsformen ändert der Befehls-Token-Ausgabeagent 200 den System-Startratenzähler dynamisch, um die Häufigkeit der System-Token-Verteilung anzupassen. Ein höherer System-Startratenzähler kann zum Beispiel die Häufigkeit der System-Token-Verteilung vermindern, wohingegen ein System-Startratenzähler die Häufigkeit der System-Token-Verteilung erhöhen kann.
  • Nach dem Laden kann der System-Token-Ausgeber 230 den System-Token-Startratenzähler dekrementieren. Der System-Startratenzähler kann analysiert werden, um zu ermitteln, ob der System-Startratenzähler gleich Null ist. Wenn der System-Startratenzähler nicht Null ist, kann der System-Token-Ausgeber 230 damit fortfahren, den System-Startratenzähler in einem Intervall zu dekrementieren. Wenn der Gruppen-Startratenzähler jedoch Null ist, kann der System-Token-Ausgeber 230 ein System-Token an den Round-Robin-Arbiter 260 senden. Wenn der System-Token-Ausgeber 230 den System-Startratenzähler analysiert, analysiert er bei manchen Ausführungsformen auch, ob es etwaige Anforderungen von den Knotenstationsagenten 110 für Knoten-Token, Gruppen-Token oder Verbindungs-Token gibt. Wenn es keine Anforderungen gibt, kann ein System-Token an den Round-Robin-Arbiter 260 gesendet werden.
  • Der Verbindungs-Token-Ausgeber 240 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um ein Verbindungs-Token an den Round-Robin-Arbiter 260 auszugeben. Verbindungs-Token ermöglichen Datenverkehr außerhalb des Rings, in den Mehrprozessorknoten einzutreten, der mit dem Token-Ausgabeagenten 200 verbunden wird. Der Verbindungs-Token-Ausgeber 230 kann analysieren, ob der Befehls-Token-Ausgabeagent 200 die Verteilung von Verbindungs-Token ermöglicht hat. Wenn dies der Fall ist, kann der Verbindungs-Token-Ausgeber 240 ein Verbindungs-Token in einem vorgegebenen Intervall an den Round-Robin-Arbiter 260 ausgeben.
  • Der Golden-Token-Ausgeber 250 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um ein Golden Token an den Round-Robin-Arbiter 260 auszugeben. Der Token-Ausgabeagent 200 kann den Token-Ringbus in einem regelmäßigen Intervall leeren, um sicherzustellen, dass der Knotenstationsagent, der das Golden Token erhält, in der Lage ist, einen Befehl auszugeben. Sobald der Token-Ringbus keine Token mehr enthält, kann der Golden-Token-Ausgeber 250 das Golden Token sofort an den Token-Ringbus 160 ausgeben und dabei den Round-Robin-Arbiter 260 übergehen. Dieser Prozess kann über gesamten Ring hinweg fortgesetzt werden, wobei der Token-Ringbus jedes Mal geleert wird und jedem Knotenstationsagenten 110 in dem Mehrprozessorknoten ein Golden Token übergeben wird.
  • Der Round-Robin-Arbiter 260 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um Token auf den Token-Ringbus 160 zu geben. Der Round-Robin-Arbiter 260 verwaltet die Verteilung der Token auf den Token-Ringbus 130. Auf Grundlage von Zuteilung, Notwendigkeit und Konfiguration kann der Round-Robin-Arbiter 260 zusätzliche Token aus den Ausgebern 210, 220 und 230 nehmen und diese Token auf den Token-Ringbus 160 geben. Wenn dem Round-Robin-Arbiter 260 ein Verbindungs-Token bereitgestellt wird, wird dieses Verbindungs-Token gegenüber den anderen Token automatisch priorisiert und auf den Token-Ringbus 160 gegeben.
  • Es wird darauf verwiesen, dass 2 die repräsentativen Hauptkomponenten eines Befehls-Token-Ausgabeagenten 200 darstellen soll. Allerdings können bei manchen Ausführungsformen einzelne Komponenten eine größere oder geringere Komplexität als in 2 gezeigt haben, andere oder zusätzliche Komponenten als die in 2 gezeigten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren.
  • Die 3 und 4 sind Blockschaubilder, die einen Knotenstationsagenten 300 veranschaulichen (der gleich dem oder im Wesentlichen gleich dem Knotenstationsagenten aus 1 sein kann), der konfiguriert wird, um Operationen gemäß Ausführungsformen der vorliegenden Offenbarung durchzuführen. Der Knotenstationsagent 300 enthält einen Knoten-Arbeitslastagenten 310, einen Gruppen-Arbeitslastagenten 320, einen System-Arbeitslastagenten 330, einen Verbindungs-Arbeitslastagenten und einen Round-Robin-Arbiter 350.
  • Der Knoten-Arbeitslastagent 310 ist eine Komponente des Knotenstationsagenten 300, die konfiguriert wird, um Knoten-Arbeitslastvektoren (NP WTD) zu überwachen und zu erfassen, die den Knotenstationsagenten 300 durchlaufen. Der Knoten-Arbeitslastvektor kann verwendet werden, um zu ermitteln, wann der Knotenstationsagent 300 einen weiteren Token von dem Token-Ringbus 160 entfernen kann. Der Knoten-Arbeitslastagent 310 wird des Weiteren konfiguriert, um seine eigene Gruppen-Arbeitslast zu dem Gruppen-Arbeitslastvektor auf dem Steuerringbus 150 hinzuzufügen.
  • Ein Knoten-Arbeitslastagent 310 kann einen eingehenden Knoten-Arbeitslastvektor von dem Steuerringbus 150 erfassen und seine eigene Arbeitslast hinzufügen, bevor der neue Arbeitslastvektor auf dem Steuerringbus 150 an nachgeordnete Einheiten übertragen wird. Der Knoten-Arbeitslastagent 310 kann +1 zu dem Vektor hinzufügen oder +2, wenn er mit den Datenübertragungsanschlüssen 120 verbunden ist. Gleichzeitig kann der Knoten-Arbeitslastagent 310 Befehlsanforderungen von den mit ihm verbundenen Einheiten verarbeiten. Wenn es eine neue Anforderung gibt, kann der Knoten-Arbeitslastagent 310 den aktuellen Arbeitslastvektor für diesen Bereich in einen Zähler laden. Wenn der Knoten-Arbeitslastagent 310 den Befehl auf den Befehlsringbus 140 gibt, dekrementiert er den Arbeitslastvektor-Zählwert jedes Mal, wenn auf dem Token-Ringbus 160 ein Token desselben Bereichs festgestellt wird. Wenn der Arbeitslastvektor-Zähler (WTD-Zähler) Null erreicht, kann er einen weiteren Befehl desselben Bereichs senden.
  • Der Gruppen-Arbeitslastagent 320 ist eine Komponente des Knotenstationsagenten 300, die konfiguriert wird, um Gruppen-Arbeitslastvektoren (GP WTD) zu überwachen und zu erfassen, die den Knotenstationsagenten 300 durchlaufen. Der Gruppen-Arbeitslastvektor kann verwendet werden, um zu ermitteln, wann der Knotenstationsagent 300 eine weitere Gruppe von dem Token-Ringbus 160 entfernen kann, um einen Befehl dieses Bereichs zu senden. Der Gruppen-Arbeitslastagent 320 wird des Weiteren konfiguriert, um seine eigene Gruppen-Arbeitslast zu dem Gruppen-Arbeitslastvektor auf dem Steuerringbus 150 hinzuzufügen.
  • Ein Gruppen-Arbeitslastagent 320 kann einen eingehenden Gruppen-Arbeitslastvektor von dem Steuerringbus 150 erfassen und seine eigene Arbeitslast hinzufügen, bevor der neue Arbeitslastvektor auf dem Steuerringbus 150 an nachgeordnete Einheiten übertragen wird. Der Gruppen-Arbeitslastagent 320 kann +1 zu dem Vektor hinzufügen oder +2, wenn er mit den Datenübertragungsanschlüssen 120 verbunden ist. Gleichzeitig kann der Gruppen-Arbeitslastagent 320 Befehlsanforderungen von den mit ihm verbundenen Einheiten verarbeiten. Wenn es eine neue Anforderung gibt, kann der Gruppen-Arbeitslastagent 320 den aktuellen Arbeitslastvektor für diesen Bereich in einen Zähler laden. Wenn der Gruppen-Arbeitslastagent 320 den Befehl auf den Befehlsringbus 140 gibt, dekrementiert er den Arbeitslastvektor-Zählwert jedes Mal, wenn auf dem Token-Ringbus 160 ein Token desselben Bereichs festgestellt wird. Wenn der Arbeitslastvektor-Zähler (WTD-Zähler) Null erreicht, kann er einen weiteren Befehl desselben Bereichs senden.
  • Der System-Arbeitslastagent 330 ist eine Komponente des Knotenstationsagenten 300, die konfiguriert wird, um System-Arbeitslastvektoren (SP WTD) zu überwachen und zu erfassen, die den Knotenstationsagenten 300 durchlaufen. Der System-Arbeitslastvektor kann verwendet werden, um zu ermitteln, wann der Knotenstationsagent 300 ein weiteres System von dem Token-Ringbus 160 entfernen kann, um einen Befehl dieses Bereichs zu senden. Der Gruppen-Arbeitslastagent 320 wird des Weiteren konfiguriert, um seine eigene System-Arbeitslast zu dem System-Arbeitslastvektor auf dem Steuerringbus 150 hinzuzufügen.
  • Ein System-Arbeitslastagent 330 kann einen eingehenden System-Arbeitslastvektor von dem Steuerringbus 150 erfassen und seine eigene Arbeitslast hinzufügen, bevor der neue Arbeitslastvektor auf dem Steuerringbus 150 an nachgeordnete Einheiten übertragen wird. Der System-Arbeitslastagent 320 kann +1 zu dem Vektor hinzufügen oder +2, wenn er mit den Datenübertragungsanschlüssen 120 verbunden ist. Gleichzeitig kann der System-Arbeitslastagent 320 Befehlsanforderungen von den mit ihm verbundenen Einheiten verarbeiten. Wenn es eine neue Anforderung gibt, kann der System-Arbeitslastagent 330 den aktuellen Arbeitslastvektor für diesen Bereich in einen Zähler laden. Wenn der System-Arbeitslastagent 330 den Befehl auf den Befehlsringbus 140 gibt, dekrementiert er den Arbeitslastvektor-Zählwert jedes Mal, wenn auf dem Token-Ringbus 160 ein Token desselben Bereichs festgestellt wird. Wenn der Arbeitslastvektor-(WTD-)Zähler Null erreicht, kann er einen weiteren Befehl desselben Bereichs senden.
  • Der Verbindungs-Arbeitslastagent 340 ist eine Komponente des Knotenstationsagenten 300, die konfiguriert wird, um Verbindungs-Arbeitslastvektoren (Verbindungs-WTD) zu überwachen und zu erfassen, die den Knotenstationsagenten 300 durchlaufen. Der Verbindungs-Arbeitslastvektor kann verwendet werden, um zu ermitteln, wann der Knotenstationsagent 300 eine weitere Gruppe von dem Token-Ringbus 160 entfernen kann, um einen Befehl dieses Bereichs zu senden. Der Verbindungs-Arbeitslastagent 320 wird des Weiteren konfiguriert, um seine eigene Verbindungs-Arbeitslast zu dem Verbindungs-Arbeitslastvektor auf dem Steuerringbus 150 hinzuzufügen.
  • Ein Verbindungs-Arbeitslastagent 340 kann einen eingehenden Verbindungs-Arbeitslastvektor von dem Steuerringbus 150 erfassen und seine eigene Arbeitslast hinzufügen, bevor der neue Arbeitslastvektor auf dem Steuerringbus 150 an nachgeordnete Einheiten übertragen wird. Der Verbindungs-Arbeitslastagent 340 kann +1 zu dem Vektor hinzufügen oder +2, wenn er mit den Datenübertragungsanschlüssen 120 verbunden ist. Gleichzeitig kann der Verbindungs-Arbeitslastagent 340 Befehlsanforderungen von den mit ihm verbundenen Einheiten verarbeiten. Wenn es eine neue Anforderung gibt, kann der Verbindungs-Arbeitslastagent 340 den aktuellen Arbeitslastvektor für diesen Bereich in einen Zähler laden. Wenn der Verbindungs-Arbeitslastagent 340 den Befehl auf den Befehlsringbus 140 gibt, dekrementiert er den Arbeitslastvektor-Zählwert jedes Mal, wenn auf dem Token-Ringbus 160 ein Token desselben Bereichs festgestellt wird. Wenn der Arbeitslastvektor-(WTD-)Zähler Null erreicht, kann er einen weiteren Befehl desselben Bereichs senden.
  • Der Round-Robin-Arbiter 350 ist eine Komponente des Knotenstationsagenten 300, die konfiguriert wird, um Befehle auf den Befehlsringbus 140 zu geben. Der Round-Robin-Arbiter 350 kann Befehle auf Grundlage ihres Bereichs und der Verteilung auf den Befehlsringbus 140 zuteilen. Der Round-Robin-Arbiter 350 kann Befehlen eines bestimmten Bereichs Priorität einräumen, die mit einer höheren Häufigkeit an den Round-Robin-Arbiter 350 gesendet werden. Zum Beispiel kann ein Knotenbefehl mit einer häufigeren Übertragung als andere Befehle möglicherweise auf eine höhere Arbeitslast dieses Bereichs hinweisen. Diese Befehle erhalten Priorität, wenn dem Befehlsringbus 140 Befehle zugeteilt werden. Wenn ein Verbindungs-Token in dem Befehl enthalten ist, hat der Befehl Vorrang vor den anderen Befehlen und erhält Priorität, wenn er auf den Befehlsringbus 140 gegeben wird.
  • Es wird darauf verwiesen, dass die 3 und 4 die repräsentativen Hauptkomponenten eines Knotenstationsagenten 300 darstellen sollen. Allerdings können bei manchen Ausführungsformen einzelne Komponenten eine größere oder geringere Komplexität als in 3 und 4 gezeigt haben, andere oder zusätzliche Komponenten als die in 3 und 4 gezeigten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren.
  • 5 ist ein Blockschaubild, das gemäß Ausführungsformen der vorliegenden Offenbarung eine Mehr-Chip-Topologie 500 in einem abgestuften Format veranschaulicht. Die Mehr-Chip-Topologie 500 enthält eine erste Gruppe 510 von Mehrprozessorknoten 510A bis 510D, eine zweite Gruppe 520 von Mehrprozessorknoten 520A bis 520D, eine dritte Gruppe 530 von Mehrprozessorknoten 530A bis 530D und eine vierte Gruppe 540 von Mehrprozessorknoten 540A bis 540D.
  • Eine ausschließlich innerhalb eines Mehrprozessorknoten erfolgende Rundsendung kann als eine Stufe-0-Rundsendung betrachtet werden und erfordert ein Knoten-Token, um den Befehl auszugeben. Eine Rundsendung eines Befehls innerhalb einer Gruppe (z.B. der Gruppe 510, 520, 530, 540) kann als eine Stufe-1-Rundsendung betrachtet werden und erfordert ein Gruppen-Token, um den Befehl auszugeben. Wenn zum Beispiel ein Gruppen-Token von dem Mehrprozessorknoten 520A ausgegeben wird, wird der Befehl innerhalb der Gruppe 520 rundgesendet, da sich der Verarbeitungsknoten 520A in der Gruppe 520 befindet. Rundsendungen eines Befehls innerhalb des gesamten Systems können als eine Stufe-2-Rundsendung betrachtet werden und erfordern ein System-Token, um den Befehl auszugeben.
  • Jeder der Mehrprozessorknoten wird mit den anderen Mehrprozessorknoten 510 bis 540 über deren Datenübertragungsanschlüsse verbunden. Die Datenübertragungsanschlüsse enthalten Verbindungen, die die Mehrprozessorknoten durch die Gruppen 510 bis 540 sowie mit den verschiedenen Gruppen 510 bis 540 miteinander verbinden. Zum Beispiel enthält der Mehrprozessorknoten 510A mindestens fünf Datenübertragungsanschlüsse. Drei Datenübertragungsanschlüsse werden verwendet, um den Mehrprozessorknoten 510A über eine Verbindung mit den Mehrprozessorknoten 510B bis 510D mit seiner Gruppe zu verbinden. Ein weiterer Datenübertragungsanschluss kann verwendet werden, um den Mehrprozessorknoten 510A mit der Gruppe 520 zu verbinden, ein weiterer Datenübertragungsanschluss für eine Verbindung mit der Gruppe 530 und ein weiterer Datenübertragungsanschluss für eine Verbindung mit der Gruppe 540. Die Verbindung mit den anderen Gruppen kann als eine Stufe-2-Datenübertragung betrachtet werden.
  • 6 veranschaulicht ein Teilantwort-Netzwerk 100 für einen Mehrprozessorknoten, das gemäß Ausführungsformen der vorliegenden Offenbarung konfiguriert wird, um Teilantworten an ein Ziel zu übertragen. Das Kohärenzbefehlsnetzwerk 600 enthält die Knotenstationsagenten 110A bis 110P, die Datenübertragungsanschlüsse 120A bis 120H, einen Ringbus 610 für lokale Teilantworten und einen Ringbus 620 für entfernt angeordnete Teilantworten. Wenn auf eine Komponente und ihre zugehörige Ziffer Bezug genommen wird, z.B. auf den Knotenstationsagenten 110, kann dieser Bezug für jede beliebige der Komponenten mit dieser zugehörigen Ziffer gelten, z.B. für die Knotenstationsagenten 110A bis 110P, mit einem oder ohne einen zusätzlich zugehörigen Buchstaben. Das Teilantwort-Netzwerk 600 wird in einer kreisförmigen Topologie konfiguriert, die die Knotenstationsagenten 110 mit dem Ringbus 610 für lokale Teilantworten und dem Ringbus 620 für entfernt angeordnete Teilantworten verbindet. Der Knotenstationsagent 110A wird mit den Datenübertragungsanschlüssen 120A und 120B verbunden. Der Knotenstationsagent 110D wird mit den Datenübertragungsanschlüssen 120C und 120D verbunden. Der Knotenstationsagent 1101 wird mit den Datenübertragungsanschlüssen 120E und 120F verbunden. Der Knotenstationsagent 110L wird mit den Datenübertragungsanschlüssen 120G und 120H verbunden. Obwohl die Ausführungsform aus 6 zwei Busse 610 und 620 enthält, ist zu beachten, dass nach Wunsch auch eine größere Anzahl von Bussen enthalten sein kann. Obwohl nur sechzehn Knotenstationsagenten 110 gezeigt werden, kann zusätzlich hierzu eine größere oder kleinere Anzahl der Knotenstationsagenten 110 verwendet werden.
  • Die Knotenstationsagenten 110 und die Datenübertragungsanschlüsse 120 sind gleich oder im Wesentlichen gleich den Knotenstationen 110 und den Datenübertragungsanschlüssen 120, wie sie in 1 veranschaulicht und weiter oben beschrieben werden. Der Ringbus 610 für lokale Teilantworten ist eine Komponente des Teilantwort-Netzwerks 600, die konfiguriert wird, um Teilantworten zu übertragen. Die Teilantworten können innerhalb eines festen Zeitraums nach dem Erfassen eines Befehls zurückgegeben werden. Die Teilantworten können so lange durch den Ringbus 610 für lokale Teilantworten weitergegeben werden, bis sie ihr beabsichtigtes Ziel erreichen. Der Knotenstationsagent 110, der den Befehl ausgegeben hat, kann die Teilantwort erfassen, wodurch die Übertragung beendet wird.
  • Der Ringbus 620 für entfernt angeordnete Teilantworten ist eine Komponente des Teilantwort-Netzwerks 600, die konfiguriert wird, um Teilantworten von Befehlen zu übertragen, die nicht von dem Mehrprozessorknoten stammen. Ein Knotenstationsagent kann eine entfernt angeordnete Teilantwort auf den Ringbus 620 für entfernt angeordnete Teilantworten geben, wo sie dann an einen Datenübertragungsanschluss 120 weitergegeben werden kann. Bei manchen Ausführungsformen enthalten die Datenübertragungsanschlüsse 120 interne Teilantwort-Warteschlangen. Die Teilantwort-Warteschlangen können alle Teilantworten erfassen, die lokal durch die Knotenstationsagenten 110 erzeugt werden. Nach der Erfassung kann der Datenübertragungsanschluss 120, der die Teilantworten erfasst, die Teilantworten an den Knotenstationsagenten 110 zurückleiten, von dem der Befehl stammte.
  • Das Teilantwort-Netzwerk 600 wird so konfiguriert, dass der Ringbus 610 für lokale Teilantworten auf eine festgelegte Anzahl von Zyklen nach der Adresse des Knotenstationsagenten 110 folgt. Die Knotenstationsagenten 110 benötigen somit keinen Mechanismus, der die Knotenstationsagenten 110 auf dem Ringbus 610 für lokale Teilantworten erlaubt. Jedem Knotenstationsagent 110 wird ein Zeitfenster garantiert, um nach einer festgelegten Anzahl von Zyklen eine Teilantwort zu platzieren.
  • Es wird darauf verwiesen, dass 6 die repräsentativen Hauptkomponenten eines Teilantwort-Netzwerks 600 darstellen soll. Allerdings können bei manchen Ausführungsformen einzelne Komponenten eine größere oder geringere Komplexität als in 6 gezeigt haben, andere oder zusätzliche Komponenten als die in 6 gezeigten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren. Es ist darauf zu verweisen, dass die Komponenten in dem Teilantwort-Netzwerk 600 mehrfach (z.B. viermal) dupliziert werden können, um genügend Kapazität für Datenverkehr bereitzustellen. Nachdem sie dupliziert wurden, wechselt die Richtung der Busse zwischen den verschiedenen Duplikationen.
  • 7 veranschaulicht ein Netzwerk 700 für kombinierte Antworten für einen Mehrprozessorknoten, das gemäß Ausführungsformen der vorliegenden Offenbarung konfiguriert wird, um Antworten zu verwalten. Das Netzwerk 700 für kombinierte Antworten enthält Knotenstationsagenten 110A bis 110P, Datenübertragungsanschlüsse 120A bis 120H, einen Token-Ausgabeagenten 710 für kombinierte Befehle, einen Ringbus 720 für kombinierte Antworten, einen Steuerringbus 730 und einen Token-Ringbus 740. Wenn auf eine Komponente und ihre zugehörige Ziffer Bezug genommen wird, z.B. auf den Knotenstationsagenten 110, kann dieser Bezug für jede beliebige der Komponenten mit dieser zugehörigen Ziffer gelten, z.B. für die Knotenstationsagenten 110A bis 110P, mit einem oder ohne einen zusätzlich zugehörigen Buchstaben. Das Netzwerk 700 für kombinierte Antworten wird in einer kreisförmigen Topologie konfiguriert, die die Knotenstationsagenten 110 mit dem Ringbus 720 für kombinierte Antworten, dem Steuerringbus 730 und dem Token-Ringbus 740 verbindet. Der Knotenstationsagent 110A wird mit den Datenübertragungsanschlüssen 120A und 120B verbunden. Der Knotenstationsagent 110D wird mit den Datenübertragungsanschlüssen 120C und 120D verbunden. Der Knotenstationsagent 110I wird mit den Datenübertragungsanschlüssen 120E und 120F verbunden. Der Knotenstationsagent 110L wird mit den Datenübertragungsanschlüssen 120G und 120H verbunden. Obwohl 7 drei Busse 720, 730 und 740 enthält, ist zu beachten, dass nach Wunsch auch eine größere Anzahl von Bussen enthalten sein kann. Obwohl nur sechzehn Knotenstationsagenten 110 gezeigt werden, kann zusätzlich hierzu eine größere oder kleinere Anzahl der Knotenstationsagenten 110 verwendet werden.
  • Die Knotenstationsagenten 110 und die Datenübertragungsanschlüsse 120 sind gleich oder im Wesentlichen gleich den Knotenstationen 110 und den Datenübertragungsanschlüssen 120, wie sie in 1 veranschaulicht und weiter oben beschrieben werden. Der Token-Ausgabeagent 710 für kombinierte Antworten ist eine Komponente des Mehrprozessorknotens in dem Netzwerk 700 für kombinierte Antworten, die konfiguriert wird, um auf dem Token-Ringbus 740 Token bereitzustellen. Der Token-Ausgabeagent 710 für kombinierte Antworten gibt verschiedene Arten von Token aus, die auf den Token-Ringbus 740 gegeben werden. Die verschiedenen Arten von Token enthalten ein Gruppen-Token, ein System-Token, ein Token für entfernt angeordnete Knotenpunkte und ein Token für entfernt angeordnete Endknoten. Lokale Antworten erfordern nicht, dass ein Token auf den Ringbus 710 für kombinierte Antworten gegeben wird, da sie ähnlich dem Teilantwort-Netzwerk 600 verarbeitet werden, wo lokalen Teilantworten nach einer bestimmten Anzahl von Zyklen, nachdem der Befehl ausgegeben wurde, ein Zeitfenster garantiert wird.
  • Diese Token stellen Antworten mit ihrem Weitergabebereich und der jeweiligen Autorisierung bereit, die auf den Ringbus 720 für kombinierte Befehle gegeben werden sollen. Gruppen-Token ermöglichen die Weitergabe von Antworten an andere Mehrprozessorknoten in derselben Gruppe. System-Token ermöglichen die Weitergabe von Antworten an ein gesamtes Netzwerk von miteinander verbundenen Mehrprozessorknoten. Die Token für entfernt angeordnete Knotenpunkte ermöglichen die Weitergabe von kombinierten Antworten, die von anderen Mehrprozessorknoten innerhalb der Gruppe stammen, durch den Ringbus 720 für kombinierte Antworten. Die Token für entfernt angeordnete Endknoten ermöglichen die Weitergabe von kombinierten Antworten, die von anderen Mehrprozessorknoten innerhalb des Systems oder Endknotens stammen, durch den Ringbus 720 für kombinierte Antworten.
  • Der Token-Ausgabeagent 710 für kombinierte Antworten wird des Weiteren konfiguriert, um die Mischung der verfügbaren Token auf dem Token-Ringbus 720 dynamisch anzupassen. Der Token-Ausgabeagent 710 für kombinierte Antworten kann die Art der verfügbaren Token auf Grundlage eines Verbindungsbedarfs anpassen. Zum Beispiel kann der Token-Ausgabeagent 710 für kombinierte Antworten die Anzahl der Gruppen-Token und System-Token verringern, wenn die Anzahl der Token für entfernt angeordnete Endknoten und Token für entfernt angeordnete Knotenpunkte einen Schwellenwert übersteigt. Durch die Reduzierung dieser Token ermöglicht der Token-Ausgabeagent 710 für kombinierte Antworten, dass Datenverkehr das Netzwerk 700 für kombinierte Antworten durchlaufen kann. Zusätzliche Einzelheiten zu dem Token-Ausgabeagenten 710 für kombinierte Antworten werden weiter unten in Bezug auf 9 dargelegt.
  • 8 ist ein Blockschaubild, das gemäß Ausführungsformen der vorliegenden Offenbarung eine Teilantwort-Warteschlange 800 veranschaulicht, die konfiguriert wird, um Teilantworten von verschiedenen Quellen zu erfassen. Die Teilantwort-Warteschlange enthält Warteschlangen 810, 810 für entfernt angeordnete Knotenpunkte (RHA/PQ), eine Gruppen-Warteschlange 830 (GP-Warteschlange), eine System-Warteschlange 840 (SP-Warteschlange) und eine RHX-Warteschlange 850. Die Datenübertragungsanschlüsse 120A und 120B werden mit einem A-Bus und einem X-Bus konfiguriert, um Informationen durch das Verbindungsnetzwerk weiterzuleiten.
  • Der Ringbus 620 für entfernt angeordnete Teilantworten wird für die externen eingehenden Teilantworten innerhalb der Gruppe (Stufe 1) und innerhalb des Systems (Stufe 2) verwendet. Diese externen Antworten werden an die Gruppen-Warteschlange 830 und die System-Warteschlange 840 weitergeleitet. Sowohl die Gruppen-Warteschlange 830 als auch die System-Warteschlange 840 können Teilantworten mit einer First-In-First-Out-Konfiguration speichern. Für die externen eingehenden Stufe-1-Verbindungen gibt es keine Teilantwort-Speicherung. Eine Warteschlange für Teilantworten von entfernt angeordneten Knotenpunkten ist erforderlich, um X-Bus-Teilantworten für Stufe-2-Rundsendebefehle für die Warteschlangen 810 und 820 für ausgehende A-Bus-Teilantworten zu erfassen. Die Multi-Hop-Kohärenz erfasst Teilantworten in den Chip-Verbindungsquadranten in der RHX-Teilantwort-Struktur 850, der GP-Teilantwortstruktur 830 und der SP-Teilantwortstruktur 850 und leitet die erfassten Teilantworten an den lokalen Master weiter.
  • 9 ist ein Blockschaubild, das gemäß Ausführungsformen der vorliegenden Offenbarung einen Token-Ausgabeagenten 900 für kombinierte Antworten veranschaulicht (der gleich dem oder im Wesentlichen gleich dem Token-Ausgabeagenten 710 für kombinierte Antworten aus 7 sein kann), der konfiguriert wird, um dem Token-Ringbus 740 Token zuzuteilen. Der Token-Ausgabeagent 900 für kombinierte Antworten enthält einen System-Token-Ausgeber 910, einen Gruppen-Token-Ausgeber 920, einen Token-Ausgeber 930 für entfernt angeordnete Endknoten, einen Token-Ausgeber 940 für entfernt angeordnete Endknoten und einen Sequenzierer 950.
  • Der System-Token-Ausgeber 910 ist eine Komponente des Token-Ausgabeagenten 900 für kombinierte Antworten, die konfiguriert wird, um ein System-Token an den Sequenzierer 950 auszugeben. System-Token ermöglichen die Weitergabe von Antworten an andere Mehrprozessorknoten in einem gesamten Verbindungsnetzwerk. Der System-Token-Ausgeber 910 lädt einen System-Arbeitslastzähler (SP-WTD-Zähler), der die Rate bestimmt, mit der ein System-Token ausgegeben wird. Der System-Arbeitslastzähler kann eine Rate zur Grundlage haben, mit der die Arbeitslast eines entfernt angeordneten Knotenpunkts oder entfernt angeordneten Endknotens durch den Mehrprozessorknoten weitergegeben wird. Bei manchen Ausführungsformen ändert der Token-Ausgabeagent 900 für kombinierte Antworten den System-Arbeitslastzähler dynamisch, um die Häufigkeit der System-Token-Verteilung anzupassen. Ein höherer System-Arbeitslastzähler kann zum Beispiel die Häufigkeit der System-Token-Verteilung vermindern, wohingegen ein System-Arbeitslastzähler die Häufigkeit der System-Token-Verteilung erhöhen kann.
  • Nach dem Laden kann der System-Token-Ausgeber 910 den System-Token-Arbeitslastzähler dekrementieren. Der System-Arbeitslastzähler kann analysiert werden, um zu ermitteln, ob der System-Arbeitslastzähler gleich Null ist. Wenn der System-Arbeitslastzähler nicht Null ist, kann der System-Token-Ausgeber 910 damit fortfahren, den System-Arbeitslastzähler in einem Intervall zu dekrementieren. Wenn der Gruppen-Startratenzähler jedoch Null ist, kann der System-Token-Ausgeber 910 ein System-Token an den Sequenzierer 950 senden.
  • Der Gruppen-Token-Ausgeber 920 ist eine Komponente des Token-Ausgabeagenten 900 für kombinierte Antworten, die konfiguriert wird, um ein Gruppen-Token an den Sequenzierer 950 auszugeben. Gruppen-Token ermöglichen die Weitergabe von Antworten an andere Mehrprozessorknoten in derselben Gruppe. Der Gruppen-Token-Ausgeber 920 lädt einen Gruppen-Arbeitslastzähler (GP-WTD-Zähler), der die Rate bestimmt, mit der ein Gruppen-Token ausgegeben wird. Der Gruppen-Startratenzähler kann den Prozentsatz der Token-Verteilung auf den Token-Ringbus 740 zur Grundlage haben. Bei manchen Ausführungsformen ändert der Token-Ausgabeagent 900 für kombinierte Antworten den Gruppen-Arbeitslastzähler dynamisch, um die Häufigkeit der Gruppen-Token-Verteilung anzupassen. Ein höherer Gruppen-Arbeitslastzähler kann zum Beispiel die Häufigkeit der Gruppen-Token-Verteilung vermindern, wohingegen ein niedrigerer Gruppen-Arbeitslastzähler die Häufigkeit der Gruppen-Token-Verteilung erhöhen kann.
  • Nach dem Laden kann der Gruppen-Token-Ausgeber 920 den Gruppen-Arbeitslastzähler dekrementieren. Der Gruppen-Arbeitslastzähler kann analysiert werden, um zu ermitteln, ob der Zählwert gleich Null ist. Wenn der Gruppen-Arbeitslastzähler nicht Null ist, kann der Gruppen-Token-Ausgeber 920 damit fortfahren, den Gruppen-Arbeitslastzähler in einem Intervall zu dekrementieren. Wenn der Gruppen-Arbeitslastzähler jedoch Null ist, kann der Gruppen-Token-Ausgeber 920 ein Gruppen-Token an den Sequenzierer 950 senden.
  • Der Token-Ausgeber 930 für entfernt angeordnete Knotenpunkte ist eine Komponente des Token-Ausgabeagenten 900 für kombinierte Antworten, die konfiguriert wird, um ein Token für entfernt angeordnete Knotenpunkte an den Sequenzierer 950 auszugeben. Token für entfernt angeordnete Knotenpunkte ermöglichen die Weitergabe von Antworten an andere Mehrprozessorknoten in derselben Gruppe. Der Token-Ausgeber 930 für entfernt angeordnete Knotenpunkte lädt einen Arbeitslastzähler für entfernt angeordnete Knotenpunkte (RH-WTD-Zähler), der die Rate bestimmt, mit der ein Token für entfernt angeordnete Knotenpunkte ausgegeben wird. Der Arbeitslastzähler für entfernt angeordnete Knotenpunkte kann den Prozentsatz der Token-Verteilung auf den Token-Ringbus 740 zur Grundlage haben. Nach dem Laden kann der Token-Ausgeber 930 für entfernt angeordnete Knotenpunkte den Arbeitslastzähler für entfernt angeordnete Knotenpunkte dekrementieren. Der Arbeitslastzähler für entfernt angeordnete Knotenpunkte kann analysiert werden, um zu ermitteln, ob der Zählwert gleich Null ist. Wenn der Arbeitslastzähler für entfernt angeordnete Knotenpunkte nicht Null ist, kann der Token-Ausgeber 930 für entfernt angeordnete Knotenpunkte damit fortfahren, den Arbeitslastzähler für entfernt angeordnete Knotenpunkte in einem Intervall zu dekrementieren. Wenn der Arbeitslastzähler für entfernt angeordnete Knotenpunkte jedoch Null ist, kann der Token-Ausgeber 930 für entfernt angeordnete Knotenpunkte ein Token für entfernt angeordnete Knotenpunkte an den Sequenzierer 950 senden.
  • Der Token-Ausgeber 940 für entfernt angeordnete Verbindungen ist eine Komponente des Token-Ausgabeagenten 900 für kombinierte Antworten, die konfiguriert wird, um ein Token für entfernt angeordnete Verbindungen an den Sequenzierer 950 auszugeben. Token für entfernt angeordnete Verbindungen ermöglichen die Weitergabe von Antworten an andere Mehrprozessorknoten in dem System. Der Token-Ausgeber 940 für entfernt angeordnete Verbindungen lädt einen Arbeitslastzähler für entfernt angeordnete Verbindungen (RL-WTD-Zähler), der die Rate bestimmt, mit der ein Token für entfernt angeordnete Verbindungen ausgegeben wird. Der Arbeitslastzähler für entfernt angeordnete Verbindungen kann den Prozentsatz der Token-Verteilung auf den Token-Ringbus 740 zur Grundlage haben. Nach dem Laden kann der Token-Ausgeber 940 für entfernt angeordnete Verbindungen den Arbeitslastzähler für entfernt angeordnete Verbindungen dekrementieren. Der Arbeitslastzähler für entfernt angeordnete Verbindungen kann analysiert werden, um zu ermitteln, ob der Zählwert gleich Null ist. Wenn der Arbeitslastzähler für entfernt angeordnete Verbindungen nicht Null ist, kann der Token-Ausgeber 940 für entfernt angeordnete Verbindungen damit fortfahren, den Arbeitslastzähler für entfernt angeordnete Verbindungen in einem Intervall zu dekrementieren. Wenn der Arbeitslastzähler für entfernt angeordnete Verbindungen jedoch Null ist, kann der Token-Ausgeber 940 für entfernt angeordnete Verbindungen ein Token für entfernt angeordnete Verbindungen an den Sequenzierer 950 senden.
  • Der Sequenzierer 950 ist eine Komponente des Befehls-Token-Ausgabeagenten 200, die konfiguriert wird, um Token auf den Token-Ringbus 160 zu geben. Der Sequenzierer 950 verwaltet die Verteilung der Token auf den Token-Ringbus 740. Der Sequenzierer 950 kann Token eines jeden Bereichs verteilen, indem er den Arbeitslast-Zählwert als Anfangswert verwendet. Er gibt Token eines jeden Bereichs so lange aus, bis der Arbeitslast-Zählwert Null erreicht, bevor er mit dem Token des nächsten Bereichs fortfährt. Er kann alle Bereiche nacheinander durchlaufen, bevor die Abfolge von System-Token, Gruppen-Token, Token für entfernt angeordnete Knotenpunkte und Token für entfernt angeordnete Endknoten wiederholt wird.
  • Es wird darauf verwiesen, dass 9 die repräsentativen Hauptkomponenten eines Token-Ausgabeagenten 900 für kombinierte Antworten darstellen soll. Allerdings können bei manchen Ausführungsformen einzelne Komponenten eine größere oder geringere Komplexität als in 9 gezeigt haben, andere oder zusätzliche Komponenten als die in 9 gezeigten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren.
  • 10 ist ein Ablaufplan, der einen Prozess 1000 einer Verarbeitung eines Befehls durch ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage eines symmetrischen Mehrprozessors gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Der Prozess 1000 kann durch Hardware, Firmware, auf einem Prozessor ausgeführte Software oder eine Kombination hiervon durchgeführt werden. Zum Beispiel können alle Schritte des Prozesses 1000 durch einen oder mehrere Prozessoren durchgeführt werden, die in eine Datenverarbeitungseinheit eingebettet werden. Ein Knotenstationsagent 110 gibt einen Befehl aus einem Mehrprozessorknoten heraus aus. Dies wird in einem Schritt 1010 veranschaulicht. Um den Befehl auszugeben, erhält der Knotenstationsagent 110 ein Token des geeigneten Bereichs für den Befehl. Die verschiedenen Arten von Token enthalten ein Knoten-Token, ein Gruppen-Token, ein System-Token und ein Verbindungs-Token.
  • Nachdem er erhalten wurde, kann der Befehl auf Grundlage des Bereichs des Tokens durch das Verbindungsnetzwerk weitergegeben werden. Ein Knotenstationsagent 110 kann zum Beispiel ein Gruppen-Token aus dem Token-Ringbus 160 erhalten und einen Befehl an die Gruppe von Mehrprozessorknoten ausgeben, in der sich der aktuelle Mehrprozessorknoten befindet. Die Knotenstationsagenten 110 innerhalb des Bereichs des Tokens erfassen den Befehl. Dies wird in einem Schritt 1020 veranschaulicht. Die anderen Knotenstationsagenten 110 innerhalb des Bereichs können den Befehl erfassen, sodass sie Teilantworten für den Befehl ausgeben können. Dies wird in einem Schritt 1030 veranschaulicht. Die Teilantworten können zurück an den Knotenstationsagenten 110 weitergegeben werden, von dem der Befehl stammt. Während der Weitergabe erzeugen die Knotenstationsagenten 110 eine kombinierte Antwort, während die Teilantworten die Agenten 110 durchlaufen. Dies wird in einem Schritt 1030 veranschaulicht. Die kombinierten Antworten werden dann an den Knotenstationsagenten zurückgesendet. Dies wird in einem Schritt 1040 veranschaulicht.
  • Unter Bezugnahme auf 11 wird ein allgemeines Blockschaubild eines Beispiel-Computersystems 1100 gezeigt, das gemäß Ausführungsformen der vorliegenden Offenbarung zum Realisieren eines oder mehrerer der hierin beschriebenen Verfahren, Werkzeuge und Module sowie aller damit in Verbindung stehenden Funktionen verwendet werden kann (z.B. unter Verwendung eines oder mehrerer Prozessorschaltkreise oder Computerprozessoren des Computers). Bei manchen Ausführungsformen können die Hauptkomponenten des Computersystems 1100 einen oder mehrere Prozessoren 1102, einen Arbeitsspeicher 1104, eine Terminal-Schnittstelle 1112, eine E/A(Eingabe/Ausgabe)-Einheitenschnittstelle 1114, eine Speicherschnittstelle 1116 und eine Netzwerkschnittstelle 1118 aufweisen, die alle für eine komponentenübergreifende Datenübertragung über einen Arbeitsspeicherbus 1103, einen E/A-Bus 1108 und eine E/A-Busschnittstellen-Einheit 1110 direkt oder indirekt im Datenaustausch verbunden werden können.
  • Das Computersystem 1100 kann eine oder mehrere Universal-Zentraleinheiten (CPUs) 1102-1, 1102-2, 1102-3 und 1102-N enthalten, die hierin verallgemeinernd als der Prozessor 1102 bezeichnet werden. Bei manchen Ausführungsformen kann das Computersystem 1100 mehrere Prozessoren enthalten, die typisch für ein vergleichsweise großes System sind; bei anderen Ausführungsformen kann das Computersystem 1100 alternativ hingegen ein System mit einer einzigen CPU sein. Jeder Prozessor 1102 kann Anweisungen ausführen, die in dem Arbeitsspeicher 1104 gespeichert werden, und kann eine oder mehrere Ebenen eines integrierten Caches enthalten.
  • Der Arbeitsspeicher 1104 kann ein durch ein Computersystem lesbares Medium in Form eines flüchtigen Arbeitsspeichers wie z.B. eines Direktzugriffsspeichers 1122 (RAM) oder eines Cache-Arbeitsspeichers 1124 enthalten. Das Computersystem 1100 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten. Nur um ein Beispiel zu geben, kann ein Speichersystem 1126 zum Lesen von und Schreiben auf ein nicht entfernbares, nicht flüchtiges magnetisches Medium wie z.B. eine „Festplatte“ bereitgestellt werden. Obwohl hierin nicht gezeigt, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine entfernbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine entfernbare, nicht flüchtige optische Platte wie z.B. ein CD-ROM, ein DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. Zusätzlich kann der Arbeitsspeicher 1104 einen Flash-Arbeitsspeicher wie z.B. einen Flash-Speicher-Stick oder ein Flash-Laufwerk enthalten. Arbeitsspeichereinheiten können durch eine oder mehrere Datenmedienschnittstellen mit dem Arbeitsspeicherbus 1103 verbunden werden. Der Arbeitsspeicher 1104 kann mindestens ein Programmprodukt mit einem Satz von (z.B. mindestens einem) Programmmodulen enthalten, die konfiguriert werden, um die Funktionen verschiedener Ausführungsformen auszuführen.
  • Obwohl der Arbeitsspeicherbus 1103 in 11 als eine einzelne Busstruktur gezeigt wird, die einen direkten Datenübertragungspfad zwischen der CPU 1102, dem Arbeitsspeicher-Teilsystem 1104 und der E/A-Busschnittstelle 11102 bereitstellt, kann der Arbeitsspeicherbus 1103 bei manchen Ausführungsformen mehrere unterschiedliche Busse und Datenübertragungspfade enthalten, die in einer beliebigen Weise angeordnet werden können, z.B. als Punkt-zu-Punkt-Verbindungen in hierarchischen, Stern- oder Netzwerk-Konfigurationen, als mehrere hierarchische Busse, parallele und redundante Pfade oder als jede andere geeignete Art von Konfiguration. Obwohl die E/A-Busschnittstelle 1110 und der E/A-Bus 1108 als jeweils einzelne Einheiten gezeigt werden, kann das Computersystem 1100 darüber hinaus bei manchen Ausführungsformen mehrere E/A-Busschnittstellen-Einheiten, mehrere E/-A-Busse oder beides enthalten. Obwohl mehrere E/A-Schnittstelleneinheiten gezeigt werden, die den E/A-Bus 1108 von verschiedenen Datenübertragungspfaden zu den verschiedenen E/A-Einheiten trennen, können bei anderen Ausführungsformen des Weiteren einige oder alle der E/A-Einheiten direkt mit einem oder mehreren E/A-Systembussen verbunden werden.
  • Bei manchen Ausführungsformen kann das Computersystem 1100 ein Mehrbenutzer-Mainframe-Computersystem, ein Einzelbenutzer-System oder ein Server-Computer oder eine ähnliche Einheit sein, die nur eine geringfügige oder keine direkte Benutzerschnittstelle aufweist, aber Anforderungen von anderen Computersystemen (Clients) empfängt. Des Weiteren kann das Computersystem 1100 bei manchen Ausführungsformen als ein Desktop Computer, tragbarer Computer, Laptop oder Notebook Computer, Tablet Computer, Taschencomputer, Telefon, Smartphone, als Netzwerk-Switches oder Router oder als jede andere geeignete Art von elektronischer Einheit realisiert werden.
  • Es wird darauf verwiesen, dass 11 die repräsentativen Hauptkomponenten eines beispielhaften Computersystems 1100 darstellen soll. Allerdings können bei manchen Ausführungsformen einzelne Komponenten eine größere oder geringere Komplexität als in 11 gezeigt haben, andere oder zusätzliche Komponenten als die in 11 gezeigten können vorhanden sein, und die Anzahl, Art und Konfiguration solcher Komponenten kann variieren.
  • Eines oder mehrere Programme/Dienstprogramme 1128 mit jeweils mindestens einem Satz von Programmmodulen 1130 (z.B. dem Prozess, der einen Befehl durch ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage eines symmetrischen Mehrprozessors 1000 verarbeitet) können in dem Arbeitsspeicher 1104 gespeichert werden. Die Programme/Dienstprogramme 1128 können einen (auch als einen Überwacher einer virtuellen Maschine bezeichneten) Hypervisor, ein oder mehrere Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten enthalten. Jedes der Betriebssysteme, des einen oder der mehreren Anwendungsprogramme, der anderen Programmmodule und der Programmdaten oder einer Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung enthalten. Die Programme 1128 und/oder Programmmodule 1130 führen im Allgemeinen die Funktionen oder Verfahrensweisen verschiedener Ausführungsformen durch.
  • Bei der vorliegenden Offenbarung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit einem beliebigen möglichen Grad an technischer Integration handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit computerlesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Offenbarung auszuführen.
  • Bei dem computerlesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit behalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des computerlesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein computerlesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium auf jeweilige Datenverarbeitungs-/ Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei computerlesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Offenbarung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandseinstellende Daten, Konfigurationsdaten für eine integrierte Schaltung oder sowohl um Quellcode als auch um Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art von Netzwerk verbunden werden, zum Beispiel ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). Bei manchen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, Field Programmable Gate Arrays) oder programmierbare Logikanordnungen (PLA, Programmable Logic Arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Offenbarung durchzuführen.
  • Aspekte der vorliegenden Offenbarung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels computerlesbarer Programmanweisungen ausgeführt werden können.
  • Diese computerlesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Schritte erzeugen. Diese computerlesbaren Programmanweisungen können auch auf einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das computerlesbare Speichermedium, auf dem Anweisungen gespeichert werden, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der bzw. des in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen computerrealisierten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion bzw. Funktionen aufweisen. Bei manchen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zum Beispiel können zwei nacheinander gezeigte Blöcke in Wirklichkeit als ein Schritt erfolgen, gleichzeitig, im Wesentlichen gleichzeitig, in einer teilweisen oder vollständig zeitlich überlappenden Weise ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die hier verwendete Begrifflichkeit dient lediglich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Beschränkung der verschiedenen Ausführungsformen gedacht. Im hier verwendeten Sinne sollen die Singularformen „ein/e/r, und „der/die/das” auch die Pluralformen enthalten, sofern der Kontext dies nicht eindeutig anderweitig vorgibt. Des Weiteren wird darauf verwiesen, dass die Begriffe „enthält“ und/oder „enthaltend“ in dieser Beschreibung das Vorhandensein der genannten Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, ohne jedoch das Vorhandensein oder die Hinzufügung von einem/einer oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen derselben auszuschließen. In der obigen ausführlichen Beschreibung von Beispiel-Ausführungsformen der verschiedenen Ausführungsformen wurde auf die beigefügten Zeichnungen verwiesen (bei denen gleichlautende Bezugsziffern für gleiche Elemente stehen), die einen Teil hiervon bilden und in denen zum Zwecke der Veranschaulichung spezifische Beispiel-Ausführungsformen gezeigt werden, in denen die verschiedenen Ausführungsformen realisiert werden können. Diese Ausführungsformen wurden in ausreichender Detailgenauigkeit beschrieben, um dem Fachmann die Realisierung der Ausführungsformen zu ermöglichen, wobei jedoch andere Ausführungsformen verwendet und logische, mechanische, elektrische und andere Änderungen vorgenommen werden können, ohne vom Geltungsbereich der verschiedenen Ausführungsformen abzuweichen. In der obigen Beschreibung wurden zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis der verschiedenen Ausführungsformen bereitzustellen. Allerdings können die beschriebenen Ausführungsformen auch ohne diese spezifischen Einzelheiten realisiert werden. In anderen Fällen wurden bekannte Schaltungen, Strukturen und Methoden nicht im Detail gezeigt, um die Ausführungsformen nicht unverständlich zu machen.
  • Wenn verschiedene Bezugsziffern eine gemeinsame Zahl gefolgt von unterschiedlichen Buchstaben (z.B. 100a, 100b, 100c) oder ein Satzzeichen gefolgt von unterschiedlichen Zahlen (z.B. 100-1, 100-2 oder 100.1, 100.2) aufweisen, kann sich eine Verwendung lediglich der Bezugsziffer ohne den Buchstaben oder die folgenden Zahlen (z.B. 100) auf die Gruppe von Elementen als Ganzes, auf einen beliebigen Teilsatz der Gruppe oder auf ein Beispielexemplar aus der Gruppe beziehen.
  • Des Weiteren bedeutet der Ausdruck „mindestens eines von“ bei Verwendung mit einer Liste von Elementen, dass verschiedene Kombinationen aus einem oder mehreren der aufgeführten Elemente verwendet werden können und dass von jedem Element aus der Liste womöglich nur eines notwendig ist. In anderen Worten bedeutet „mindestens eines von“, dass jede beliebige Kombination von Elementen und jede beliebige Anzahl von Elementen aus der Liste verwendet werden kann, dass jedoch nicht alle Elemente in der Liste notwendig sind. Das Element kann ein bestimmtes Objekt, ein Gegenstand oder eine Kategorie sein.
  • Zum Beispiel, und ohne darauf beschränkt zu sein, kann „mindestens eines von Element A, Element B oder Element C“ Element A, Element A und Element B oder Element B enthalten. Dieses Beispiel kann außerdem Element A, Element B und Element C oder Element B und Element C enthalten. Selbstverständlich können beliebige Kombinationen dieser Elemente gegeben sein. In manchen veranschaulichenden Beispielen kann „mindestens eines von“ zum Beispiel, und ohne darauf beschränkt zu sein, zwei von Element A, eines von Element B und zehn von Element C, vier von Element B und sieben von Element C oder andere geeignete Kombinationen sein.
  • Verschiedene Vorkommen des Worts „Ausführungsform“, die innerhalb dieser Beschreibung auftreten, beziehen sich nicht notwendigerweise auf dieselbe Ausführungsform, können dies jedoch tun. Alle hier veranschaulichten oder beschriebenen Daten und Datenstrukturen sind lediglich Beispiele, und in anderen Ausführungsformen können andere Mengen von Daten, Arten von Daten, Felder, Zahlen und Arten von Fehlern, Feldnamen, Zahlen und Arten von Zeilen, Datensätze, Einträge oder Organisationsformen von Daten verwendet werden. Zusätzlich können alle Daten mit Logik kombiniert werden, so dass eine separate Datenstruktur unter Umständen nicht notwendig ist. Die vorangegangene ausführliche Beschreibung ist somit nicht in einem beschränkenden Sinne zu verstehen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Modifikationen und Abwandlungen möglich sind, ohne vom inhaltlichen Umfang und gedanklichen Wesensgehalt der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Begrifflichkeit wurde gewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • Obwohl die vorliegende Offenbarung mit Blick auf spezifische Ausführungsformen beschrieben wurde, ist davon auszugehen, dass Änderungen und Abwandlungen hiervon für den Fachmann offensichtlich sein werden. Aus diesem Grund sind die folgenden Ansprüche so auszulegen, dass sie alle derartigen Änderungen und Abwandlungen umfassen, die innerhalb des tatsächlichen gedanklichen Wesensgehalts und Geltungsbereich der Offenbarung liegen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Modifikationen und Abwandlungen möglich sind, ohne vom inhaltlichen Umfang und gedanklichen Wesensgehalt der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Begrifflichkeit wurde gewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.

Claims (25)

  1. Symmetrischer Mehrprozessorknoten, aufweisend ein Befehlsnetzwerk, wobei das Befehlsnetzwerk aufweist: eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird, die einen Befehlsringbus, einen Steuerringbus und einen Token-Ringbus enthält; eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Datenübertragungsanschlüsse mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten; eine Mehrzahl von Knotenstationsagenten, wobei einer oder mehrere der Knotenstationsagenten mit mindestens einem der Datenübertragungsanschlüsse verbunden werden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen; und einen Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen.
  2. Befehlsnetzwerk nach Anspruch 1, wobei der Token-Ausgabeagent auf Grundlage eines Prozentsatzes der verschiedenen Arten von Token auf dem Token-Ringbus Token auf den Ringbus verteilt.
  3. Befehlsnetzwerk nach Anspruch 1, wobei die verschiedenen Arten von Token ein lokales Token, das eine lokal begrenzte Datenübertragung in dem Knoten ermöglicht, ein Gruppen-Token, das Datenübertragungen innerhalb einer Gruppe von Knoten ermöglicht, und ein System-Token enthalten, das eine Datenübertragung mit jedem Knoten innerhalb eines Systems von Knoten ermöglicht.
  4. Befehlsnetzwerk nach Anspruch 1, wobei der Steuerringbus Zähler für die verschiedenen Arten von Token auf dem Token-Ringbus bereitstellt.
  5. Befehlsnetzwerk nach Anspruch 4, wobei die Knotenstationsagenten die Zähler in dem Steuerring analysieren, bevor ein Befehl übertragen wird.
  6. Befehlsnetzwerk nach Anspruch 4, wobei die Knotenstationsagenten einen Zählwert der verfügbaren Token eines Befehlsbereichs, den die Knotenstationsagenten zuvor ausgegeben haben, vergleichen und darauf warten, dass diese Art von Befehlsbereich durchgeleitet wird, bevor ein weiterer Befehl dieses Bereichs ausgegeben wird.
  7. Befehlsnetzwerk nach Anspruch 4, wobei der Token-Ausgabeagent die Zähler nach jeder Runde durch den Steuerring zurücksetzt.
  8. Befehlsnetzwerk nach Anspruch 1, wobei der Token-Ausgabeagent konfiguriert wird, um ein Golden Token bereitzustellen, das einem Knotenstationsagenten der Knotenstationsagenten ermöglicht, einen Befehl auszugeben, um eine Blockierung des Knotenstationsagenten zu vermeiden.
  9. Befehlsnetzwerk nach Anspruch 1, wobei der Token-Ausgabeagent konfiguriert wird, um die Token von dem Token-Ringbus zu entfernen und jedem der Knotenstationsagenten ein Golden Token bereitzustellen.
  10. Symmetrischer Mehrprozessorknoten, aufweisend ein Teilantwort-Netzwerk, wobei das Teilantwort-Netzwerk aufweist: eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird, die einen Ringbus für lokale Teilantworten und einen Ringbus für entfernt angeordnete Teilantworten enthält; eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Datenübertragungsanschlüsse mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um Daten von einem Quellbus an einen Zielbus weiterzuleiten; eine Mehrzahl von Knotenstationsagenten, wobei einer oder mehrere der Knotenstationsagenten mit mindestens einem der Datenübertragungsanschlüsse verbunden werden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen; und Teilantwort-Warteschlangen, die sich innerhalb der Datenübertragungsanschlüsse befinden, um Antworten von den Knotenstationsagenten zu erfassen.
  11. Teilantwort-Netzwerk nach Anspruch 10, wobei der Ringbus für lokale Teilantworten und der Ringbus für entfernt angeordnete Teilantworten einen Bus zum Erfassen eines Befehls bereitstellen, der eine Runde durch ihren jeweiligen Bus absolviert.
  12. Teilantwort-Netzwerk nach Anspruch 10, wobei der Ringbus für entfernt angeordnete Teilantworten einen Bus zum Übertragen einer Teilantwort von den Datenübertragungsanschlüssen bereitstellt, wobei die Teilantwort an einem als Ausgangspunkt dienenden Knotenstationsagenten der Knotenstationsagenten endet.
  13. Symmetrischer Mehrprozessorknoten, aufweisend ein Netzwerk für kombinierte Antworten, wobei das Netzwerk für kombinierte Antworten aufweist: eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird, die einen Ringbus für kombinierte Antworten, einen Steuerringbus und einen Token-Ringbus enthält; eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Datenübertragungsanschlüsse mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten; eine Mehrzahl von Knotenstationsagenten, wobei einer oder mehrere der Knotenstationsagenten mit mindestens einem der Datenübertragungsanschlüsse verbunden werden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen; und einen Antwort-Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen.
  14. Netzwerk für kombinierte Antworten nach Anspruch 13, wobei der Antwort-Token-Ausgabeagent auf Grundlage eines durch einen Arbeitslastvektor bereitgestellten Bedarfs Token auf den Token-Ringbus verteilt.
  15. Netzwerk für kombinierte Antworten nach Anspruch 13, wobei die verschiedenen Arten von Token ein Gruppen-Token, das eine Datenübertragung innerhalb einer Gruppe von Knoten ermöglicht, und ein System-Token enthalten, das eine Datenübertragung mit anderen Knoten innerhalb eines gesamten Verbindungsnetzwerks ermöglichen.
  16. Netzwerk für kombinierte Antworten nach Anspruch 13, wobei der symmetrische Mehrprozessorknoten auf Grundlage einer Arbeitslast eines Off-Chip-Netzwerks seine Arbeitslast zu einem Arbeitslastvektor hinzufügt.
  17. Netzwerk für kombinierte Antworten nach Anspruch 13, wobei der Steuerringbus Arbeitslastvektoren für jeden der Knotenstationsagenten überträgt.
  18. Netzwerk für kombinierte Antworten nach Anspruch 17, wobei der Steuerringbus in einer entgegengesetzten Richtung wie der Ringbus für kombinierte Antworten und der Token-Ringbus arbeitet.
  19. Netzwerk für kombinierte Antworten nach Anspruch 13, wobei der Token-Ausgabeagent einen Sequenzierer zum Verteilen der verschiedenen Arten von Token enthält.
  20. Netzwerk für kombinierte Antworten nach Anspruch 19, wobei die Token auf Grundlage von Arbeitslastzählern der verschiedenen Arten von Token in den Sequenzierer eingegeben werden.
  21. Symmetrischer Mehrprozessor, aufweisend: eine Mehrzahl von Bussen, die in dem symmetrischen Mehrprozessor enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird; und eine Mehrzahl von Mehrprozessorknoten, die durch die Busse miteinander verbunden werden, um ein hierarchisches Verbindungsnetzwerk auf Ringgrundlage zu bilden und Befehle zwischen den Mehrprozessorknoten zu übertragen, wobei das Verbindungsnetzwerk enthält: ein Befehlsnetzwerk, das konfiguriert wird, um Befehle auf Grundlage von Befehls-Token zu übertragen, wobei die Token ein Ziel des Befehls vorgeben, ein Teilantwort-Netzwerk, das konfiguriert wird, um Teilantworten zu übertragen, die durch die Mehrprozessorknoten erzeugt werden, und ein Netzwerk für kombinierte Antworten, das konfiguriert wird, um die durch die Mehrprozessorknoten erzeugten Teilantworten durch Verwenden von Token für kombinierte Antworten zu kombinieren.
  22. Symmetrischer Mehrprozessor nach Anspruch 21, wobei das Befehlsnetzwerk des Weiteren aufweist: eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird, die einen Befehlsringbus, einen Steuerringbus und einen Token-Ringbus enthält; eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Datenübertragungsanschlüsse mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten; eine Mehrzahl von Knotenstationsagenten, wobei einer oder mehrere der Knotenstationsagenten mit mindestens einem der Datenübertragungsanschlüsse verbunden werden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen; und einen Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen.
  23. Symmetrischer Mehrprozessor nach Anspruch 21, wobei das Teilantwort-Netzwerk des Weiteren aufweist: eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird, die einen Ringbus für lokale Teilantworten und einen Ringbus für entfernt angeordnete Teilantworten enthält; eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Datenübertragungsanschlüsse mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um Daten von einem Quellbus an einen Zielbus weiterzuleiten; eine Mehrzahl von Verarbeitungsknoten, wobei einer oder mehrere der Knotenstationsagenten mit mindestens einem der Datenübertragungsanschlüsse verbunden werden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen; und Teilantwort-Warteschlangen, die sich innerhalb der Datenübertragungsanschlüsse befinden, um Antworten von den Knotenstationsagenten zu erfassen.
  24. Symmetrischer Mehrprozessor nach Anspruch 21, wobei das Netzwerk für kombinierte Antworten des Weiteren aufweist: eine Mehrzahl von Bussen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Busse in einer kreisförmigen Topologie konfiguriert wird, die einen Ringbus für kombinierte Antworten, einen Steuerringbus und einen Token-Ringbus enthält; eine Mehrzahl von Datenübertragungsanschlüssen, die in dem Mehrprozessorknoten enthalten sind, wobei jeder der Datenübertragungsanschlüsse mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um Daten von einem Quellknoten an einen Zielknoten weiterzuleiten; eine Mehrzahl von Knotenstationsagenten, wobei einer oder mehrere der Knotenstationsagenten mit mindestens einem der Datenübertragungsanschlüsse verbunden werden, wobei die Knotenstationsagenten betrieben werden können, um durch einen oder mehrere der Busse Daten miteinander auszutauschen; und einen Token-Ausgabeagenten, der in dem Mehrprozessorknoten enthalten ist und mit einem oder mehreren der Busse verbunden wird und betrieben werden kann, um verschiedene Arten von Token zu verteilen und eine Datenübertragung auf verschiedenen Stufen zu ermöglichen.
  25. Verfahren zum Verarbeiten eines Befehls in einem symmetrischen Mehrprozessor mit einem hierarchischen Verbindungsnetzwerk auf Ringgrundlage, wobei das Verfahren aufweist: Ausgeben eines Befehls von einem Knotenstationsagenten in einem Mehrprozessorknoten, der in einem Verbindungsnetzwerk auf Ringgrundlage des symmetrischen Mehrprozessors konfiguriert wird, wobei der Befehl ein Token enthält, das einen Bereich des Befehls bereitstellt; Erfassen des Befehls durch andere Knotenstationsagenten in dem Verbindungsnetzwerk, die mit dem Bereich des Befehls übereinstimmen; Ausgeben von Teilantworten auf den Befehl durch die anderen Knotenstationsagenten; Erzeugen einer kombinierten Antwort durch den Mehrprozessorknoten durch Zusammenfügen der Teilantworten, die durch die anderen Knotenstationsagenten ausgegeben werden; und Übertragen der kombinierten Antwort an den Knotenstationsagenten, der den Befehl ausgegeben hat.
DE112022003383.5T 2021-08-30 2022-08-25 Hierarchisches verbindungsnetzwerk auf ringgrundlage für symmetrische mehrprozessoren Pending DE112022003383T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/446,422 2021-08-30
US17/446,422 US11580058B1 (en) 2021-08-30 2021-08-30 Hierarchical ring-based interconnection network for symmetric multiprocessors
PCT/EP2022/073700 WO2023031016A1 (en) 2021-08-30 2022-08-25 Hierarchical ring-based interconnection network for symmetric multiprocessors

Publications (1)

Publication Number Publication Date
DE112022003383T5 true DE112022003383T5 (de) 2024-04-18

Family

ID=83283292

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022003383.5T Pending DE112022003383T5 (de) 2021-08-30 2022-08-25 Hierarchisches verbindungsnetzwerk auf ringgrundlage für symmetrische mehrprozessoren

Country Status (4)

Country Link
US (2) US11580058B1 (de)
DE (1) DE112022003383T5 (de)
GB (1) GB2623735A (de)
WO (1) WO2023031016A1 (de)

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68916231T2 (de) 1989-03-23 1995-02-02 Ibm Verfahren und Vorrichtung zum Vielfachzugriff mit verteilten Warteschlangen in einem Kommunikationssystem.
US5280478A (en) 1989-08-29 1994-01-18 Digital Equipment Corporation No-owner frame and multiple token removal mechanism for token ring networks
EP0465027A3 (en) 1990-06-29 1992-03-11 Digital Equipment Corporation Frame removal mechanism for token ring network
US5953510A (en) 1991-09-05 1999-09-14 International Business Machines Corporation Bidirectional data bus reservation priority controls having token logic
US5908468A (en) * 1997-10-24 1999-06-01 Advanced Micro Devices, Inc. Data transfer network on a chip utilizing a multiple traffic circle topology
US6848003B1 (en) * 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
US6516368B1 (en) * 1999-11-09 2003-02-04 International Business Machines Corporation Bus master and bus snooper for execution of global operations utilizing a single token for multiple operations with explicit release
US6865695B2 (en) * 2001-07-26 2005-03-08 International Business Machines Corpoation Robust system bus recovery
US7113488B2 (en) * 2002-04-24 2006-09-26 International Business Machines Corporation Reconfigurable circular bus
US7493417B2 (en) 2002-12-12 2009-02-17 International Business Machines Corporation Method and data processing system for microprocessor communication using a processor interconnect in a multi-processor system
US20040210696A1 (en) * 2003-04-18 2004-10-21 Meyer Michael J. Method and apparatus for round robin resource arbitration
US7085898B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Coherency management for a “switchless” distributed shared memory computer system
WO2005003907A2 (en) * 2003-06-26 2005-01-13 Ebay Inc. Method and apparatus to authenticate and authorize user access to a system
US7131020B2 (en) * 2003-10-14 2006-10-31 Broadcom Corporation Distributed copies of configuration information using token ring
US7747771B1 (en) * 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US20090067428A1 (en) 2005-06-14 2009-03-12 Sergey Balandin Apparatus, Method and Computer Program Product Providing High Performance Communication Bus Having Preferred Path Source Routing, Multi-Guarantee QoS and Resource Reservation, Management and Release
US7380102B2 (en) 2005-09-27 2008-05-27 International Business Machines Corporation Communication link control among inter-coupled multiple processing units in a node to respective units in another node for request broadcasting and combined response
US7650076B2 (en) 2005-11-17 2010-01-19 Fujitsu Limited Dynamic blocking of token-controlled data transmissions in communication networks
US7826399B2 (en) 2006-06-27 2010-11-02 International Business Machines Corporation Structure for preventing starvation in a slotted ring data communications network
WO2009020551A1 (en) 2007-08-03 2009-02-12 Staccato Communications, Inc. Token passing data transfer mechanism for reservation based protocols
US7870337B2 (en) 2007-11-28 2011-01-11 International Business Machines Corporation Power-aware line intervention for a multiprocessor snoop coherency protocol
US8560776B2 (en) 2008-01-29 2013-10-15 International Business Machines Corporation Method for expediting return of line exclusivity to a given processor in a symmetric multiprocessing data processing system
US20120030448A1 (en) * 2009-03-30 2012-02-02 Nec Corporation Single instruction multiple date (simd) processor having a plurality of processing elements interconnected by a ring bus
US20120102561A1 (en) 2010-10-26 2012-04-26 International Business Machines Corporation Token-based reservations for scsi architectures
US8938588B2 (en) * 2010-12-16 2015-01-20 International Business Machines Corporation Ensuring forward progress of token-required cache operations in a shared cache
US20140082238A1 (en) * 2012-09-14 2014-03-20 Nvidia Corporation Method and system for implementing a control register access bus
US8897292B2 (en) * 2012-12-31 2014-11-25 Telefonaktiebolaget L M Ericsson (Publ) Low pass filter for hierarchical pipelined distributed scheduling traffic manager
US9444913B2 (en) 2013-03-14 2016-09-13 Alcatel Lucent Multi-ring reliable messaging system
US9213660B2 (en) * 2013-06-14 2015-12-15 Arm Limited Receiver based communication permission token allocation
US10764185B2 (en) 2013-06-25 2020-09-01 Amazon Technologies, Inc. Token-based policies burst-mode operations
US9178827B2 (en) 2013-08-05 2015-11-03 Globalfoundries U.S. 2 Llc Rate control by token buckets
US9170752B2 (en) 2013-12-19 2015-10-27 International Business Machines Corporation Dynamic feedback-based throughput control for black-box storage systems
US9979668B2 (en) 2014-12-22 2018-05-22 Intel Corporation Combined guaranteed throughput and best effort network-on-chip
US10524278B2 (en) 2015-11-20 2019-12-31 Qualcomm Incorporated Scheduling and token bucket for communication co-existence
US10679214B2 (en) 2016-03-09 2020-06-09 Mastercard International Incorporation Method and system for electronic distribution of controlled tokens
US10693867B2 (en) 2017-03-01 2020-06-23 Futurewei Technologies, Inc. Apparatus and method for predictive token validation
JP6882681B2 (ja) * 2017-07-12 2021-06-02 富士通株式会社 情報処理システム、情報処理装置、及び情報処理システムの制御方法
US10642760B2 (en) * 2017-08-02 2020-05-05 International Business Machines Corporation Techniques for command arbitation in symmetric multiprocessor systems
CN109725829B (zh) 2017-10-27 2021-11-05 伊姆西Ip控股有限责任公司 用于数据存储系统的端到端QoS解决方案的系统和方法
US11593134B2 (en) * 2018-01-26 2023-02-28 Nicira, Inc. Throttling CPU utilization by implementing a rate limiter
US10705985B1 (en) * 2018-03-12 2020-07-07 Amazon Technologies, Inc. Integrated circuit with rate limiting
CN112205058A (zh) 2018-03-27 2021-01-08 诺基亚通信公司 基于一个或多个令牌计数器的网络切片
US10664398B2 (en) * 2018-07-31 2020-05-26 International Business Machines Corporation Link-level cyclic redundancy check replay for non-blocking coherence flow
US20220308877A1 (en) * 2021-03-26 2022-09-29 Intel Corporation High performance constant cache and constant access mechanisms

Also Published As

Publication number Publication date
GB2623735A (en) 2024-04-24
US20230118362A1 (en) 2023-04-20
US11580058B1 (en) 2023-02-14
GB202402580D0 (en) 2024-04-10
WO2023031016A1 (en) 2023-03-09
US20230061266A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
DE112013003180B4 (de) Verfahren, Zonenserver und Speichermedium zum Verwalten von Server-Hardware-Ressourcen in einer Cloud-Datenzentrum-Umgebung
DE69334172T2 (de) Verfahren und Vorrichtung zur Arbitrierung auf einen acyclischen gerichteten Graph
DE602006000516T2 (de) Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE112013003733B4 (de) Adaptive Paketumleitung, um angemessene, kostengünstige und/oder Energie-effiziente Dienstgüte im Netzwerk auf Chipvorrichtungen zu erreichen
DE69332778T2 (de) Verfahren und geraet mit einzigadressenzuweisung, knotenselbstidentifizierung und topologieabbildung fuer einen gerichteten, acyclischen graph
EP1941674B1 (de) Teilnehmer und kommunikationscontroller eines kommunikationssystems und verfahren zur realisierung einer gateway-funktionalität in einem teilnehmer eines kommunikationssystems
DE112013004750B4 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE112009000834B4 (de) Expressvirtuelle Kanäle in einem Paketvermittelten Auf-Chip Verbindungsnetzwerk
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE102013208431B4 (de) Großer verteilter Switch auf Fabric-Basis unter Verwendung virtueller Switches und virtueller Steuereinheiten
DE112005001556T5 (de) Eine Vorrichtung und ein Verfahren zur Zusammenfügung von Paketen in Netzwerk-Verbindungsroutern
DE112010001469T5 (de) Flexible Integration von Endpunktlogik in unterschiedlichen Plattformen
DE112018001156T5 (de) Skalierbare rechenzentrums-netzwerktopologie auf verteilter vermittlungseinheit
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112017000302T5 (de) Hierarchisches autonomes Kapazitätsmanagement
DE112011105911T5 (de) Server mit Switch-Schaltungen
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE112012003462T5 (de) Durchführung einer atomaren Operation ohne Stilllegung einer Verbindungsstruktur
DE102018204577A1 (de) Techniken zum Erfüllen von Dienstgüteanforderungen für eine Fabric-Punkt-zu-Punkt-Verbindung
DE102018005759A1 (de) Verbinden von beschleunigerressourcen unter verwendung einesswitches
DE202014009422U1 (de) NOC-Elektronikelement
AT512665B1 (de) Verfahren und Apparat zur Bildung von Software Fault Containment Units in einem verteilten Echtzeitsystem
DE112012004554B4 (de) Serielle Verarbeitung des Zugriffs auf Daten bei Datenverarbeitungsumgebungen mitmehreren Grossrechnern

Legal Events

Date Code Title Description
R012 Request for examination validly filed