DE69735575T2 - Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern - Google Patents

Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern Download PDF

Info

Publication number
DE69735575T2
DE69735575T2 DE69735575T DE69735575T DE69735575T2 DE 69735575 T2 DE69735575 T2 DE 69735575T2 DE 69735575 T DE69735575 T DE 69735575T DE 69735575 T DE69735575 T DE 69735575T DE 69735575 T2 DE69735575 T2 DE 69735575T2
Authority
DE
Germany
Prior art keywords
bus
agents
interrupt
computer system
agent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69735575T
Other languages
English (en)
Other versions
DE69735575D1 (de
Inventor
Dale J. Houston Mayer
Sompong P. Cypress Olarig
William F. Cypress Whiteman
David F. Tomball Heinrich
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.)
Compaq Computer Corp
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of DE69735575D1 publication Critical patent/DE69735575D1/de
Application granted granted Critical
Publication of DE69735575T2 publication Critical patent/DE69735575T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System (AREA)

Description

  • Die vorliegende Erfindung betrifft Computersysteme und insbesondere ein Verfahren und eine Vorrichtung zur Verteilung von Unterbrechungen in einem skalierbaren, symmetrischen Multiprozessorsystem.
  • Das Entstehen von symmetrischen Multiprozessorsystemen (symmetric multiprocessing – "SMP") in heutigen High-End-Personalcomputer- ("PC") und Server-Märkten hat einen Bedarf für neue Ausführungsansätze erzeugt, die eine optimale Leistung innerhalb dieses erweiterten Systemaufbaus erreichen. Einige der bedeutendsten Herausforderungen der Multiprozessorsystem-Entwicklung beinhaltet die Ausführung von einem Multiprozessor-fähigen Bus (multiprocessor capable bus – "MP-Bus") und die Kanalisierung und Verarbeitung von Unterbrechungen durch eine SMP-bewusste Unterbrechungssteuereinheit. Wie in der Technik gut verständlich ist, bedient der MP-Bus Mehrfachverarbeitungseinheiten, wobei ein Zugriff auf den Hauptspeicher und andere Komponenten des Systems bereitgestellt wird.
  • Herkömmlicherweise ist ein Multiprozessorsystem ein Computersystem, das mehr als einen Prozessor hat und das typischerweise für High-End-Datenstationen oder die Nutzung von Daten-Servern ausgelegt ist. Ein solches System kann einen Hochleistungs-Bus, eine enorme Größe eines Fehlerkorrekturspeichers, Antriebssysteme mit einer redundanten Reihe unabhängiger Platten (redundant array of inexpensive disk – "RAID"), erweiterte Systemaufbauten, die Engpässe verringern, und redundante Merkmale wie Mehrfach-Stromversorgungen beinhalten.
  • Im umfassendsten Sinn wird der Multiprozessorbetrieb bzw. die Mehrfachverarbeitung als die Verwendung mehrerer Prozessoren definiert, um Rechneraufgaben durchzuführen. Der Begriff könnte auf eine Gruppe von vernetzten Computern an unterschiedlichen Stellen oder auf ein einzelnes System angewandt werden, das verschiedene Prozessoren enthält. Wie jedoch bekannt ist, wird der Begriff am häu figsten verwendet, um einen Aufbau zu beschreiben, in dem zwei oder mehr verknüpfte Prozessoren in einem einzigen Gehäuse enthalten sind. Des Weiteren findet eine Mehrfachverarbeitung nicht statt, nur weil mehrere Prozessoren vorhanden sind. Zum Beispiel ist ein Paket von PCs in einem Gestell keine Mehrfachverarbeitung. Ähnlich dazu ist auch ein Server mit einem oder mehreren "Bereitschafts-"Prozessoren keine Mehrfachverarbeitung. Der Begriff "Mehrfachverarbeitung" ist daher nur anwendbar, wenn zwei oder mehr Prozessoren in einer zusammenwirkenden Weise an einer Aufgabe oder an einer Gruppe von Aufgaben arbeiten.
  • Es gibt viele Variationen zum Grundthema der Mehrfachverarbeitung. Im Allgemeinen beziehen sich die Unterschiede darauf, wie unabhängig die verschiedenen Prozessoren arbeiten und wie die Arbeitslast unter diesen Prozessoren verteilt ist. In einer lose gekoppelten Mehrfachverarbeitung führen die Prozessoren zusammenhängende Aufgaben durch, wobei sie aber so tun, als wären sie selbstständige Prozessoren. Jeder Prozessor kann seinen eigenen Speicher und sogar seinen eigenen Massenspeicher haben. Des Weiteren läuft jeder Prozessor auf seiner eigenen Kopie eines Betriebssystems und steht mit dem anderen Prozessor oder den anderen Prozessoren durch ein Meldungsweitergabe-Schema in Verbindung, ganz so wie Anlagen, die über ein lokales Netzwerk in Verbindung stehen. Lose gekoppelte Mehrfachverarbeitung war bei Großrechnern und Minicomputern weit verbreitet, wobei die Software, die dies ausführt, sehr eng an die Hardware-Ausführung gebunden ist. Aus diesem Grund wurde die Unterstützung von Software-Verkäufern nicht gewonnen und ist bei PC-Servern nicht weit verbreitet.
  • Bei der fest gekoppelten Mehrfachverarbeitung sind die Vorgänge der Prozessoren im Gegensatz dazu enger integriert. Sie teilen sich typischerweise den Speicher und können sogar einen geteilten Pufferspeicher bzw. Cache haben. Die Prozessoren müssen nicht miteinander identisch sein und können ähnliche Aufgaben durchführen oder nicht. Typischerweise teilen sie sich jedoch andere Systemressourcen wie den Massenspeicher und die Ein-/Ausgabe ("I/O"). Darüber hinaus laufen sie statt auf getrennten Kopien des Betriebssystems für jeden Prozessor typischerweise auf einer einzigen Kopie, wobei das Betriebssystem die Koordination der Aufgaben zwischen den Prozessoren erledigt. Das Teilen von Systemressourcen macht die eng gekop pelte Mehrfachverarbeitung weniger kostspielig, wobei es der vorherrschende Multiprozessor-Aufbau bei Netzwerk-Servern ist.
  • Der Hardware-Aufbau für eng gekoppelte Multiprozessorsysteme kann weiter in zwei ausgedehnte Kategorien eingeteilt werden. Bei symmetrischen Multiprozessorsystemen werden Systemressourcen wie der Speicher und die Platten-Ein-/Ausgabe von allen Mikroprozessoren im System geteilt. Die Arbeitslast ist gleichmäßig auf alle verfügbaren Prozessoren verteilt, so dass nicht einer frei ist, während ein anderer mit spezifischen Aufgaben belastet wird. Die Leistung von SMP-Systemen erhöht sich, zumindest theoretisch, für alle Aufgaben, wenn mehr Prozessoreinheiten hinzugefügt werden. Dieses Ausführungsziel, nach dem so sehr gesucht wurde, wird Skalierbarkeit genannt.
  • Bei asymmetrischen Multiprozessorsystemen werden Aufgaben und Systemressourcen von unterschiedlichen Prozessoreinheiten verwaltet. Zum Beispiel kann ein Prozessor die Ein-/Ausgabe verarbeiten, wobei ein weiterer die Aufgaben des Netzwerk-Betriebssystems (network operating system – "NOS") erledigen kann. Man kann ohne weiteres sehen, dass asymmetrische Multiprozessorsysteme die Arbeitslasten nicht ausgleichen. Damit ist es leicht vorstellbar, dass eine Prozessoreinheit, die eine Aufgabe erledigt, überlastet sein kann, während eine andere Einheit frei ist.
  • Es kann ferner angemerkt werden, dass es innerhalb der Kategorie von SMP-Systemen zwei Unterkategorien gibt, die auf der Art basieren, wie der Cache ausgeführt wird. Die Unterkategorie mit geringerer Leistung beinhaltet eine Mehrfachverarbeitung mit "geteiltem Cache", wobei die Unterkategorie mit höherer Leistung das einschließt, was als Mehrfachverarbeitung mit "zugeordnetem Cache" bekannt ist. Bei der Mehrfachverarbeitung mit zugeordnetem Cache hat jeder Prozessor zusätzlich zu seinem chipinternen Speicher einer "Ebene 1" einen zugeordneten chipexternen Cache-Speicher einer "Ebene 2" (einen pro Prozessor). Diese Cache-Speicher beschleunigen das Zusammenwirken der Prozessorspeicher in einer MP-Umgebung. Andererseits teilen sich bei einer Mehrfachverarbeitung mit geteiltem Cache die Prozessoren einen einzigen Cache der "Ebene 2". Typischerweise bietet ein Aufbau mit geteiltem Cache weniger Skalierbarkeit als ein Aufbau mit zugeordnetem Cache.
  • wie oben kurz erwähnt wurde, ist in jeder umfassenden Kategorie der Mehrfachverarbeitung eine der wichtigsten Herausforderungen der Ausführung die Führung und die Verarbeitung von Unterbrechungen. Herkömmlicherweise ist eine Unterbrechungssteuereinheit für die Zuführung von Unterbrechungen von Unterbrechungsquellen zu Unterbrechungszielen in einem MP-System verantwortlich. Eine Unterbrechung kann als ein Ereignis verallgemeinert werden, das anzeigt, dass es irgendwo im System einen Zustand gibt, der die Aufmerksamkeit von wenigstens einem Prozessor erfordert. Die Handlung, die von einem Prozessor als Reaktion auf eine Unterbrechung vorgenommen wird, wird üblicherweise als "Bedienung" oder "Erledigung" bezeichnet.
  • Bei einem SMP-System hat jede Unterbrechung eine Identität, die sich von den anderen unterscheidet. Diese Identität wird üblicherweise als der "Vektor" der Unterbrechung bezeichnet. Der Vektor ermöglicht es dem bedienenden Prozessor oder den Prozessoren, das entsprechende Behandlungsprogramm für die Unterbrechung zu finden. Wenn ein Prozessor eine Unterbrechung akzeptiert, nutzt er den Vektor, um den Eingangspunkt des Behandlungsprogramms in seiner Unterbrechungstabelle aufzufinden. Zusätzlich kann jede Unterbrechung eine Unterbrechungspriorität haben, die die Pünktlichkeit bestimmt, mit der die Unterbrechung relativ zu den anderen schwebenden Aktivitäten oder Aufgaben des bedienenden Prozessors bedient werden sollte.
  • Es gibt im Allgemeinen zwei Unterbrechungsverteilungs-Modi, die für eine Unterbrechungssteuereinheit zur Zuführung von Unterbrechungen an deren entsprechenden Zielen in einem MP-System verfügbar sind. In einem gerichteten Zuführungsmodus ("statische" Zuführung) wird die Unterbrechung bedingungslos einem spezifischen Prozessor zugeführt, der mit der Zielinformation übereinstimmt, die mit der Unterbrechung geliefert wird. Beim verteilten Zuführungsmodus ("dynamische" Zuführung) werden die Unterbrechungsereignisse von einer besonderen Quelle unter einer Gruppe von Prozessoren verteilt, die durch den Zielfeldwert festgelegt wird.
  • Anhand des vorangegangenen sollte erkannt werden, dass ein Ausgleich der Unterbrechungsbelastung unter den verschiedenen Prozessoren in einem skalierbaren MP-System ein sehr wünschenswertes Ziel ist. Wie jedoch in der Technik gut verständlich ist, ist dieses Ziel aus der Sicht des Designers des Systems schwer zu erfüllen. Architektonisch gibt es zwei Arten von Lösungen zur Zuführung von Unterbrechungen an deren Zielen in einer SMP-Umgebung. Bei einer Lösung ist zum Beispiel eine zentral angeordnete Unterbrechungssteuereinheit zwischen einem Host-Bus und einem System-Bus wie einem PCI-Bus (PCI – Peripheral Component Interconnect für periphere Komponentenverbindung) angeordnet, um Unterbrechungen von deren Quellen zu empfangen und sie zu deren Zielen in entweder einem gerichteten oder verteilten Modus zu führen. Des Weiteren wird bei dieser Art von Lösung typischerweise ein Zähler einer bestimmten Bit-Länge mit jeder Verarbeitungseinheit darin bereitgestellt. Die Zählergröße ist an einem Aufgabenprioritätsregister angehängt, das einer speziellen Verarbeitungseinheit entspricht. Die Inhalte des Aufgabenprioritätsregisters und die daran angehängte Zählergröße werden verwendet, um die gesamte Prioritätsebene für diese Verarbeitungseinheit zu bestimmen. Der mit der Verarbeitungseinheit verbundene Zähler wird in der Regel mit der Option einer zyklischen Aufeinanderfolge weitergeschaltet, wenn eine Ein-/Ausgabe-Unterbrechung dieser Verarbeitungseinheit abgeschickt wird.
  • Die zweite Lösung sieht ein verteiltes Unterbrechungssteuerschema vor, in dem eine Unterbrechungssteuereinheit umfassende oder auf Systemebene befindliche Funktionen wie zum Beispiel die Ein-/Ausgabe-Unterbrechungsführung annimmt, während mehrere lokale Unterbrechungsteuereinheiten, die jeweils mit einer Verarbeitungseinheit verbunden sind, lokale Funktionen wie zum Beispiel Interprozessor-Unterbrechungen steuern. Beide Klassen von Unterbrechungssteuereinheiten können durch einen separaten Bus in Verbindung stehen und sind gemeinsam für die Zuführung von Unterbrechungen von Unterbrechungsquellen zu Unterbrechungszielen im ganzen System verantwortlich.
  • Beide oben beschriebenen Arten von Lösungen sind dafür bekannt, dass sie mehrere Nachteile haben. Zum Beispiel hängt beim zentral angeordneten Unterbrechungssteuerschema des vorangegangenen die Breite des Zählers von der maximalen Anzahl der im System zulässigen Prozessoren ab, und da die Breite am Aufgabenprioritätsregister eines Prozessors angehängt ist, gibt es keine Garantie, dass der ausge wählte Prozessor für die Unterbrechungszuführung tatsächlich die niedrigste Priorität hat, das heißt, die am wenigsten belegte Einheit unter den aufgelisteten Prozessoren ist. Da zusätzlich das Schema die Kopplung der zentral angeordneten Unterbrechungssteuereinheit mit dem Host-Bus und dem System-Bus erfordert, werden die Unterbrechungsmeldungen wertvolle Bandbreite an beiden Bussen verbrauchen, wodurch die Gesamtleistung des Systems negativ beeinflusst wird. Des Weiteren wird die Skalierbarkeit des zentral angeordneten Schemas beeinträchtigt, wenn mehrere Prozessoren zum System hinzugefügt werden.
  • Obwohl andererseits der verteilte Aufbau bestimmte Vorteile hat, garantieren auch die gegenwärtigen Lösungen der verteilten Unterbrechungssteuereinheit nicht, dass der ausgewählte Prozessor in der Tat der mit der niedrigsten Priorität ist, da es typischerweise erforderlich ist, dass nur jene lokalen Unterbrechungssteuereinheiten, die freie Unterbrechungssteckplätze haben, in der Zuteilung mit der niedrigsten Priorität enthalten sein sollten. Damit ist es möglich, dass der ausgewählte Prozessor die höchste Priorität haben kann, aber der einzige ist, bei dem wenigstens ein Unterbrechungssteckplatz verfügbar ist.
  • Eine Lösung mit verteilter Unterbrechungssteuereinheit, die diese und andere Nachteile überwindet, wird ausführlicher in der gleichzeitig übertragenen Patentanmeldung US-A-5 944 809 beschrieben, auf die hier mit Querverweis hingewiesen wird. Diese mit Querverweis erwähnte Patentanmeldung beschreibt jedoch nicht die Bus-Zuteilung für ein skalierbares Schema, in dem Mehrfachprozessoren, typischerweise in Mehrfachgruppen von vier Prozessoren – ein Aufbau, der durch die digitale Ausführung bevorzugt wird –, in einem verteilten Unterbrechungssteuersystem unterstützt werden, ohne die Bus-Breite oder das Bus-Protokoll zu ändern.
  • Demzufolge kann man ohne weiteres erkennen, dass es einen Bedarf an einer kostenwirksamen Lösung zur Bereitstellung eines skalierbaren MP-kompatiblen Unterbrechungssteuerschemas gibt, das eine ausgeglichene Zuführung von Unterbrechungen an einen Prozessor garantiert, der die niedrigste gegenwärtige Aufgabenpriorität unter vier oder mehr Prozessoren hat, ohne die Bus-Breite oder das Bus-Protokoll zu ändern. Ferner wäre es vorteilhaft, ein solches Schema zu haben, das mit dem gegenwärtigen Industrieaufbau kompatibel ist, um so die Zwischen-Betriebsfähigkeit und Zwischen-Austauschbarkeit zu maximieren. Die nachfolgend beschriebene und beanspruchte, vorliegende Erfindung stellt ein Verfahren und eine Vorrichtung zur Erfüllung dieser und weiterer Aufgaben bereit.
  • US-A-5 283 904 offenbart ein Multiprozessorsystem mit einer Unterbrechungssteuereinheit, die Unterbrechungsanforderungen von peripheren Geräten verwaltet.
  • Gemäß einer ersten Ausführungsform der vorliegenden Erfindung wird ein Verfahren zur Unterstützung von Mehrfachverteilungs-Unterbrechungssteuereinheiten, als Bus-Agenten bezeichnet, in einem symmetrischen Multiprozessorsystem bereitgestellt, wobei das Verfahren die Schritte umfasst:
    • – Zuweisen einer einmaligen Identifikationsnummer für jedem Bus-Agenten, gekennzeichnet durch die Schritte
    • – Zuteilen von Bus-Anforderungen von den Bus-Agenten durch Empfangen von Bus-Anforderungen von den Bus-Agenten in Vierergruppen über einen Bus mit vier Datenleitungen, wobei die Existenz von mehr als vier Bus-Agenten den Empfangsschritt erfordert, so dass Mehrfach-Zuteilungsphasen einbezogen sind, wobei jede dieser Phasen einer besonderen Vierergruppe von Bus-Agenten entspricht; und
    • – Erteilen eines Bus-Eigentumsrechts für einen ausgewählten der anfordernden Bus-Agenten als ein Ergebnis der Zuteilung der Bus-Anforderungen.
  • Gemäß einer zweiten Ausführungsform der vorliegenden Erfindung wird ein Computersystem bereitgestellt, das Mehrfachverteilungs-Unterbrechungssteuereinheiten, als Bus-Agenten bezeichnet, in einem symmetrischen Multiprozessorsystem unterstützt, wobei das Computersystem umfasst:
    • – Einrichtungen zum Zuweisen einer einmaligen Identifikationsnummer an jeden Bus-Agenten,
    • – einen Bus mit vier Datenleitungen zum Empfangen von Bus-Anforderungen von den Bus-Agenten in Vierergruppen,
    • – Einrichtungen zum Aufnehmen eines Zuteilungsschemas als Reaktion auf die Busanforderungen, wobei es die Existenz von mehr als vier Bus-Agenten erfordert, dass der Bus Bus-Anforderungen über Mehrfach-Zuteilungsphasen empfängt, wobei jede der Phasen einer besonderen Vierergruppe von Bus-Agenten entspricht; und
    • – Einrichtungen zum Erteilen eines Bus-Eigentumsrechts für einen ausgewählten der anfordernden Bus-Agenten als ein Ergebnis der Zuteilung.
  • Ein Verfahren zum Zuteilen von Bus-Steuerungsanforderungen kann in einem Computersystem von der Art bereitgestellt werden, das ein oder mehrere Verarbeitungseinheiten, von denen jede mit einem entsprechenden Bus-Agenten in Verbindung steht, und einen Hauptzuteiler mit einem internen Zuteilungs-Pointer aufweist, wobei der Bus-Agent und der Hauptzuteiler auf einem Bus für programmierbare Unterbrechungssteuereinheiten angeordnet sind und das Verfahren die Schritte umfasst: Initialisieren der Inhalte des internen Zuteilungs-Pointers, Bestätigen eines Anforderungssignals zur Bus-Steuerung durch jeden Bus-Agenten, wobei der Bestätigungsschritt in Vierergruppen herbeigeführt wird, wenn mehr als vier Bus-Agenten aufgelistet sind, und Aussuchen eines Bus-Agenten durch den Hauptzuteiler auf der Basis eines Zuteilungsprotokolls, Übertragen einer Bus-Meldung durch den ausgesuchten Bus-Agenten und Aktualisieren des internen Zuteilungs-Pointers, um den gewählten Bus-Agenten aufzuzeigen.
  • Es kann ein Computersystem mit einer oder mehreren Verarbeitungseinheiten bereitgestellt werden, von denen jede mit einer Cache-Speichereinheit in Verbindung steht, wobei das Computersystem eine oder mehrere lokale programmierbare Unterbrechungssteuereinheiten, von denen jede auf einem Bus für programmierbare Unterbrechungssteuereinheiten angeordnet ist, und wenigstens eine zentrale programmierbare Unterbrechungssteuereinheit umfasst, die ebenfalls auf dem Bus für programmierbare Unterbrechungssteuereinheiten angeordnet ist. Jede der lokalen pro grammierbaren Unterbrechungssteuereinheiten umfasst ein Prioritätsregister für gegenwärtige Aufgaben, einen Interprozessor-Unterbrechungsbefehlsanschluss, ein Wer-bin-ich-Register, ein Unterbrechungs-Rückmelderegister, ein Unterbrechungsendregister, einen ersten lokalen Zeitgeber und einen zweiten lokalen Zeitgeber. Des Weiteren umfasst die zentrale programmierbare Unterbrechungssteuereinheit mindestens ein Merkmalmelderegister, mindestens ein Gesamt-Konfigurationsregister, mindestens ein verkäuferspezifisches Register, ein Verkäufer-Identifikationsregister, ein Prozessor-Initialisierungsregister, mindestens ein Interprozessor-Unterbrechungsvektor-Prioritätsregister, ein Stör-Vektorregister, mindestens ein Gesamt-Zeitgeberregister und mindestens ein Unterbrechungsquellenregister. Das Computersystem kann außerdem einen Host-Bus, der zwischen den Cache-Speichereinheiten zur Bereitstellung eines Kommunikationspfades dazwischen angeordnet ist, einen ersten System-Bus, der mit dem Host-Bus durch eine erste Bus-zu-Bus-Brücke gekoppelt ist, und einen zweiten System-Bus aufweisen, der mit dem ersten System-Bus durch eine zweite Bus-zu-Bus-Brücke gekoppelt ist. Außerdem kann eine 8259A-kompatible Standard-Unterbrechungssteuereinheit auf dem zweiten System-Bus bereitgestellt werden, so dass eine Anlauf-Einschalt-Kompatibilität enthalten ist. Zusätzlich kann der Bus für programmierbare Unterbrechungssteuereinheiten sechs elektrisch leitende Übertragungsleitungen, eine Takt-, eine Steuer- und vier Datenleitungen, umfassen. In einem weiteren Ausführungsbeispiel kann jede der lokalen programmierbaren Unterbrechungssteuereinheiten mit ihrer entsprechenden Verarbeitungseinheit integriert sein.
  • Ein Verfahren zur Zuführung von Unterbrechungen kann in einem skalierbaren Multiprozessor-Computersystem von der Art bereitgestellt werden, die einen Hauptzuteiler, der sich in der zentralen Unterbrechungssteuereinheit befindet, und einen oder mehrere Bus-Agenten aufweist, wobei die zentrale Unterbrechungssteuereinheit und die Bus-Agenten auf einem Bus für programmierbare Unterbrechungssteuereinheiten angeordnet sind und das Verfahren die Schritte umfasst: Bestimmung des Vorhandenseins einer Unterbrechung, Erlangen der Steuerung des Busses für programmierbare Unterbrechungssteuereinheiten, Bestimmung des Status, ob die Unterbrechung eine gerichtete Zuführungsunterbrechung ist, Zuführung der Unterbrechung zu einem vorher festgelegten Prozessor, wenn bestimmt wird, dass die Unterbrechung eine gerichtete Zuführungsunterbrechung ist, als Reaktion auf den Schritt zur Bestimmung des Status; ansonsten Auswählen der Einheit mit dem niedrigsten Wert in ihrem Prioritätsregister für gegenwärtige Aufgaben und Zuführung der Unterbrechung dorthin als Reaktion auf den Auswahlschritt.
  • In einem weiteren Ausführungsbeispiel umfasst der Schritt zum Erlangen der Steuerung ferner die Schritte: Bestätigen eines Bus-Anforderungssignals durch einen Bus-Agenten; Aussuchen des Bus-Agenten durch den Hauptzuteiler, wobei der Bus-Agent durch einen internen Zuteilungs-Pointer aufgezeigt wird; Übertragen einer Bus-Meldung durch den ausgesuchten Bus-Agenten und Weiterschaltung der Inhalte des Zuteilungs-Pointers mit einer zyklischen Aufeinanderfolge.
  • In einem noch weiteren Ausführungsbeispiel umfasst der Auswahlschritt des Weiteren die Schritte: Senden eines verteilten Unterbrechungsbefehls an die aufgelisteten Bus-Agenten durch den Hauptzuteiler; Übertragung der Daten der Prioritätsebene für gegenwärtige Aufgaben nacheinander auf den Bus für programmierbare Unterbrechungssteuereinheiten durch die aufgelisteten Bus-Agenten als Reaktion auf den verteilten Unterbrechungsbefehl und Bestimmen, welcher aufgelistete Bus-Agent die niedrigste Prioritätsebene für gegenwärtige Aufgaben hat. In diesem Ausführungsbeispiel der Erfindung gilt ebenfalls: wenn nur ein Bus-Agent die niedrigste Prioritätsebene für gegenwärtige Aufgaben hat, dann Aussuchen des Bus-Agenten zur Zuführung der Unterbrechung dorthin, ansonsten Aussuchen des Bus-Agenten, der vorher die Unterbrechung für die Unterbrechungszuführung bedient hat. Des Weiteren gilt in diesem Ausführungsbeispiel der Erfindung noch; wenn vorher kein Agent die Unterbrechung bedient hat, dann wird der mit dem niedrigsten Bus-Identifikationswert für die Zuführung ausgesucht.
  • Ein vollständigeres Verstehen des Verfahrens und der Vorrichtung der vorliegenden Erfindung kann man durch Bezug auf die folgende ausführliche Beschreibung erhalten, wenn sie in Verbindung mit den begleitenden Zeichnungen aufgenommen wird, in denen zeigen:
  • 1 ein Blockschaltbild eines herkömmlichen Multiprozessor-Computersystems mit einer zentral angeordneten Unterbrechungssteuereinheit;
  • 2 ein Blockschaltbild eines zweiten Ausführungsbeispiels des herkömmlichen Multiprozessor-Computersystems mit einer zentral angeordneten Unterbrechungssteuereinheit;
  • 3 ein Blockschaltbild eines ersten Ausführungsbeispiels der vorliegenden Erfindung, das auf ein skalierbares Multiprozessor-Computersystem mit einem verteilten Unterbrechungssteuerschema gerichtet ist, in dem vier oder mehr Verarbeitungseinheiten angeordnet sind;
  • 4 ein Blockschaltbild eines zweiten Ausführungsbeispiels der vorliegenden Erfindung;
  • 5 ein exemplarisches Ablaufdiagramm zur Zuführung von Unterbrechungen in einem Multiprozessor-Computersystem mit einem verteilten Unterbrechungssteuerschema entsprechend der Lehre der vorliegenden Erfindung;
  • 6 ein exemplarisches Ablaufdiagramm für die Bus-Zuteilung in einem skalierbaren Multiprozessor-Computersystem mit vier oder mehr Verarbeitungseinheiten;
  • 7 ein exemplarisches Zeitdiagramm für die Bus-Zuteilung mit mehreren Zuteilungszyklen entsprechend der Lehre der vorliegenden Erfindung;
  • 8 ein exemplarisches Ausführungsbeispiel einer lokalen programmierbaren Unterbrechungssteuereinheit entsprechend der Lehre der vorliegenden Erfindung; und
  • 9 ein exemplarisches Ausführungsbeispiel einer zentralen programmierbaren Unterbrechungssteuereinheit entsprechend der Lehre der vorliegenden Erfindung.
  • Mit Bezug nun auf die Zeichnungen, in denen gleiche oder ähnliche Elemente überall in den verschiedenen Ansichten mit identischen Bezugszahlen gekennzeichnet sind und in denen die verschiedenen dargestellten Elemente, speziell in 1, nicht unbedingt maßstabsgerecht gezeichnet sind, wird ein Blockschaltbild eines herkömmlichen Multiprozessor-Computersystems mit einer zentral angeordneten Unterbrechungssteuereinheit 112 dargestellt. Das Multiprozessor-Computersystem umfasst mehrere Prozessor- bzw. Verarbeitungseinheiten, von denen zwei Prozessoren gezeigt werden, die CPU1 und CPU2 benannt und mit dem Bezugszahlen 105 bzw. 106 gekennzeichnet sind.
  • Jeder der Prozessoren 105 und 106 ist mit einer entsprechenden Puffer- bzw. Cache-Speichereinheit gekoppelt, die mit 107 bzw. 108 gekennzeichnet sind. Ein Systemspeicher 109 steht mit den kombinierten Prozessor/Cache-Einheiten über einen Host-Bus 110 in Verbindung. Die zentral angeordnete Unterbrechungssteuereinheit (benannt "CIC" für centralized interrupt controller) 112 ist mit dem Host-Bus 110 und einem ersten System-Bus 113 wie einem Bus zum Verbinden peripherer Komponenten verbunden. Der erste System-Bus 113 ist mit dem Host-Bus 110 über eine erste Bus-zu-Bus-Brücke gebrückt, die PCI-Brücke (PCI – programmable communication interface für programmierbare Verbindungsschnittstelle) genannt wird und mit Bezugszahl 111 gekennzeichnet ist.
  • Weiter mit Bezug auf 1 ist der erste System-Bus 113 auch mit einem zweiten System-Bus 115 wie einem ISA-Bus (ISA – industry standard architecture für Industriestandardarchitektur) über eine zweite Bus-zu-Bus-Brücke gebrückt, die PCI/ISA-Brücke genannt wird und mit Bezugszahl 114 gekennzeichnet ist. Auf dem ersten System-Bus 113 ist eine erste Vielzahl von Ein-/Ausgabe-Vorrichtungen angeordnet, von denen eine mit Bezugszahl 120 bezeichnet wird, die als Ein-/Ausgabe-Unterbrechungsquelle fungieren können. Wie hier gezeigt wird, ist jede dieser Ein-/Ausgabe-Vorrichtungen mit der CIC 112 über ihren eigenen IRQ-Pfad (IRQ – interrupt request für Unterbrechungsanforderung) wie zum Beispiel der IRQ-Leitung 121 verbunden.
  • Immer noch 1 betreffend sind auf dem zweiten System-Bus 115 ein zweiter Ein-/Ausgabe-Block 116 und eine herkömmliche 8259-Unterbrechungssteuereinheit 117 angeordnet. Der zweite Ein-/Ausgabe-Block 116 kann für das Multiprozessor-Computersystem auch als eine Unterbrechungsquelle fungieren. Der Ausgang der 8259-Unterbrechungssteuerung 117 ist über eine IRQ-Leitung 119 mit der CIC 112 verbunden, um den Durchleitungsmodus für Anlaufvorgänge zu ermöglichen.
  • Beim allgemeinen Betrieb wird nach einem Einschalt-Reset die herkömmliche CIC 112 für den 8259-Durchführungsmodus vorgegeben. In diesem Modus wird die 8259-Unterbrechungsanforderungsausgabe direkt durch die CIC 112 zu einer einzelnen, vorher ausgewählten Unterbrechungsanforderungs-Eingangsleitung des Prozessors geführt, wobei die CIC 112 in der Hauptsache gesperrt sein wird. Während des SMP-Betriebs wird der 8259-Durchleitungsmodus gesperrt sein, wobei die CIC 112 alle System-Unterbrechungsereignisse verteilen wird, wie unmittelbar im Anschluss beschrieben wird.
  • Jeder Prozessor, zum Beispiel CPU1 105, ist in einer exemplarischen 4-Prozessor-Ausführung mit einem Zwei-Bit-Zähler (nicht dargestellt) versehen, der mit entweder 00, 01, 10 oder 11 initialisiert wird. Jeder dieser Zwei-Bit-Zähler ist an einem Vier-Bit-Aufgabenprioritätsregister (nicht dargestellt) angehängt, das mit einem Prozessor, zum Beispiel CPU1 105, verbunden ist. Daher hat jeder Prozessor im Wesentlichen eine interne Sechs-Bit-Prioritätsebene, wobei jeder der vier Prozessoren eine unterschiedliche, interne Sechs-Bit-Proritätsebene haben wird, wie man ohne weiteres sehen kann, selbst wenn alle Vier-Bit-Aufgabenprioritätsregister die gleichen Prioritätsdaten enthalten. Wenn eine Ein-/Ausgabe-Unterbrechung an einen beliebigen der Prozessoren gesandt wird, wird jeder der Zwei-Bit-Zähler des Prozessors um eins weitergeschaltet (oder folgt zyklisch aufeinander, wenn notwendig). Dies bewirkt, dass der Prozessor, der die niedrigste interne Sechs-Bit-Prioritätsebene hatte, bevor sein Zähler weitergeschaltet hat, nach dem Weiterschaltungsvorgang nicht die niedrigste Priorität hat.
  • Wie oben erwähnt wurde, garantiert diese Ausführung nicht, dass der ausgewählte Prozessor die niedrigste Vier-Bit-Prioritätsebene haben wird. Da es dieses System zusätzlich erfordert, dass die CIC 112 sowohl am Host-Bus 110 als auch am ersten System-Bus 113 angefügt sein sollte, werden sich die Unterbrechungsmeldungen stauen und Bus-Bandbreite an beiden Bussen verbrauchen. Wie ohne weiteres erkannt werden kann, wird durch Erhöhen der Anzahl von Prozessoren im System der Bus-Verkehr für die Unterbrechungssteuerung die Situation nur verschlimmern, wobei dadurch die Skalierbarkeit des Systems gefährdet wird.
  • Mit Bezug nun auf 2 wird darin ein Blockschaltbild eines zweiten Ausführungsbeispiels des herkömmlichen Multiprozessor-Computersystems mit einer zentral angeordneten Unterbrechungssteuereinheit gezeigt, die unmittelbar zuvor mit Bezug auf 1 beschrieben wurde. Im Wesentlichen kann man sehen, dass das Ausführungsbeispiel nach 2 dem in 1 dargestellten Ausführungsbeispiel sehr ähnlich ist. Im Ausführungsbeispiel von 2 ist die CIC 112 jedoch in einem logischen System-Chipsatz 205 integriert, so dass sie eine interne Verbindungsfähigkeit sowohl zum Host-Bus 110 als auch zum ersten System-Bus 113 hat. Obwohl dieses Ausführungsbeispiel gegenüber dem Ausführungsbeispiel von 1 bestimmte Vorteile wie zum Beispiel niedrigere Kosten und Pin-Zahlen bereitstellen kann, ist es jedoch mit Nachteilen wie zum Beispiel Verbrauch und Stau von Host/System-Bussen, Unsicherheit bei der Priorität des ausgewählten Prozessors und weniger als optimale Skalierbarkeit belastet, wie oben erörtert wurde.
  • 3 stellt ein Blockschaltbild eines ersten exemplarischen Ausführungsbeispiels der vorliegenden Erfindung dar, das auf ein skalierbares Multiprozessor-Computersystem mit einem verteilten Unterbrechungssteuerschema gerichtet ist. Dieses exemplarische Multiprozessor-Computersystem hat mehrere Prozessoren, von denen zwei als CPU 105 und CPU 106 benannt und gekennzeichnet sind. Jeder der Prozessoren, zum Beispiel CPU 105 oder CPU 106, ist jeweils mit einer entsprechenden, lokalen programmierbaren Unterbrechungssteuereinheit, zum Beispiel LOPIC 305 oder LOPIC 306, gekoppelt. Gemäß der Lehre der vorliegenden Erfindung bearbeitet jede LOPIC ein Unterbrechungszuführungs-Protokoll mit ihrem entsprechenden Prozessor. Die LOPIC bearbeitet außerdem die Zugriffe auf die internen Register der Prozessoren, Interprozessor-Unterbrechungen (interprocessor interrupt – "IPI") und Fernzugriffe. Zusätzlich kann jede LOPIC durch Hardware oder Software gesperrt werden. Jede LOPIC kann in Verbindung mit einer 8259A-kompatiblen Standard-Unterbrechungssteuereinheit (in dieser Abbildung nicht dargestellt) für die Fähigkeit eines Anlauf-Durchleitungsmodus genutzt werden. In einem gegenwärtig bevorzugten Ausführungsbeispiel enthält jede LOPIC zwei lokale Zeitgeber (nicht dargestellt), die durch die Systemsoftware zur Überwachung der Systemleistung und/oder für diagnostische Zwecke verwendet werden können. Des Weiteren enthält jede LOPIC einen Interprozessor-Unterbrechungsbefehlsanschluss (nicht dargestellt), der aufzeichnet, an welchem Anschluss eine an einen oder mehrere Prozessoren zu sendende IPI bewirkt wird, und ein Prioritätsregister für gegenwärtige Aufgaben (current-task-priority register – "CTPR"), das verwendet wird, um die Priorität der gegenwärtigen Aufgabe von jedem Prozessor einzustellen. Die Aufgabenpriorität zeigt die relative Wichtigkeit der gegenwärtig ausgeführten Aufgabe an. In diesem exemplarischen Ausführungsbeispiel werden Prioritätsebenen von 0 bis 15 ausgeführt.
  • Weiterhin 3 betreffend enthält jede LOPIC, zum Beispiel LOPIC 305, ferner ein Wer-bin-ich-Register, das für jeden Prozessor, zum Beispiel CPU 105, einen Mechanismus bereitstellt, um dem ID-Wert von dem Prozessor zu bestimmen. Dieser Wert kann verwendet werden, um den Wert der für die Zuführung der Unterbrechungen verwendeten Zielmasken zu bestimmen. Die LOPIC 305 enthält außerdem ein Unterbrechungs-Rückmelderegister und ein Unterbrechungsendregister (end-of-interrupt – "EOI"), das eine Null aufzeichnet, an welches Register das Ende der Verarbeitung der Unterbrechung signalisiert wird, die für den zugehörigen Prozessor gegenwärtig durchgeführt wird.
  • 8 stellt ein exemplarisches Ausführungsbeispiel der LOPIC 305 und ihrer Inhalte dar, wobei die Inhalte herkömmlich ausgeführt und miteinander verbunden sein können, um die Ausführung der LOPIC-Funktionen in Ausführungsbeispielen der vorliegenden Erfindung zu ermöglichen.
  • Mit Bezug wiederum auf 3 steht jeder Prozessor, zum Beispiel CPU 105, mit einer zugehörigen Cache-Speichereinheit, zum Beispiel Cache 107, in Datenverbindung. Es kann auch einen sekundären Cache, zum Beispiel Cache RAM 307 und Cache RAM 308, geben, der über einen Datenpfad 309 mit einem Hauptspeicher 313 verbunden ist. Cache 107 und Cache 108 sind mit einem Host-Bus 110 elekt risch verbunden, der über eine erste Bus-zu-Bus-Brücke, Brücke 320, mit einem ersten System-Bus 113 wie einem PCI-Bus verbunden ist. Obwohl in dieser Abbildung nicht gezeigt, kann man erkennen, dass ein zweiter System-Bus, zum Beispiel ein EISA- oder ISA-Bus mit dem Bus 113 über eine geeignete Bus-zu-Bus-Brücke gebrückt sein kann.
  • Immer noch weiter 3 betreffend ist jede LOPIC, zum Beispiel LOPIC 305 oder LOPIC 306, über einen Bus für programmierbare Unterbrechungssteuereinheiten 311 mit einer zentralen programmierbaren Unterbrechungssteuereinheit COPIC 312 verbunden. Obwohl nur eine COPIC 312 in diesem Ausführungsbeispiel gezeigt wird, kann mit Bezug darauf ohne weiteres verstanden werden, dass mehrere zentrale programmierbare Unterbrechungssteuereinheiten in einem System verwendet werden können, das entsprechend der Lehre der vorliegenden Erfindung aufgebaut ist. In einer SMP-Umgebung arbeiten mehrere LOPIC- und COPIC-Einheiten zusammen und sind gemeinsam für die Zuführung der Unterbrechungen von Unterbrechungsquellen zu Unterbrechungszielen überall im System verantwortlich. Die COPIC 312 ist mit mehreren Ein-/Ausgabe-Unterbrechungsquellen (nicht dargestellt) verbunden und stellt Funktionen wie die Ein-/Ausgabe-Unterbrechungsführung, die Maskierung von Unterbrechungen und die Bus-Zuteilung bereit. Das gegenwärtig bevorzugte Ausführungsbeispiel der COPIC 312 enthält umfassende Register wie Merkmalmelderegister, Gesamt-Konfigurationsregister, verkäuferspezifische Register, ein Verkäufer-Identifikationsregister, ein Prozessor-Initialisierungsregister, IPI-Vektor/Prioritätsregister, ein Stör-Vektorregister, Gesamt-Zeitgeberregister und Unterbrechungsquellenregister.
  • 9 stellt eine exemplarische COPIC 312 und ihre Inhalte dar, wobei die Inhalte herkömmlich ausgeführt und miteinander verbunden sein können, um die Ausführung der COPIC-Funktionen in Ausführungsbeispielen der vorliegenden Erfindung zu ermöglichen.
  • Mit Bezug wiederum auf 3 ist der Bus für programmierbare Unterbrechungssteuereinheiten 311 vorzugsweise eine bidirektionaler, geteilter Sechs-Draht-Mehrphasen-Bus mit vier Datenleitungen, einer Steuerleitung und einer Taktleitung. Der Bus 311 ist gegenwärtig bevorzugt für eine Umgebung mit vier Prozessoren optimiert. Wie jedoch nachfolgend mit spezifischem Bezug auf 5, 6 und 7 zu sehen sein wird, ist das Bus-Zuteilungsprotokoll entsprechend der Lehre der vorliegenden Erfindung für die Aufnahme von mehr als vier Prozessoren offen, ohne die Bus-Breite ändern zu müssen, wobei dadurch die Skalierbarkeit aufrechterhalten wird. In einem System mit mehreren COPIC- und LOPIC-Einheiten wird eine COPIC a priori als Master/Zuteiler gekennzeichnet sein, wobei die Nicht-Master-COPICs und die LOPICs (die gemäß diesen Abbildungen mit deren jeweiligen Verarbeitungseinheiten integriert sein können) gemeinsam als Bus-Agenten behandelt werden. Die allgemeine Funktionsweise der Bus-Zuteilung und der Unterbrechungszuführung wird unten mit spezifischem Bezug auf 5, 6 und 7 erörtert.
  • Mit Bezug nun auf 4 wird darin ein Blockschaltbild eines zweiten Ausführungsbeispiels der vorliegenden Erfindung dargestellt, das auf ein Multiprozessor-Computersystem mit einem verteilten Unterbrechungssteuerschema gerichtet ist. Dieses Ausführungsbeispiel ist dem ähnlich, das oben ausführlich mit Bezug auf 3 erörtert wurde. Die LOPIC-Einheiten 305 und 306 werden in diesem Ausführungsbeispiel jedoch als externe Einheiten, die mit deren entsprechenden Prozessoren CPU 105 und 106 über externe Pfade 401 bzw. 402 in Verbindung stehen, anstatt als integrierte Einheiten mit Prozessoren, die einen internen Zugriff dorthin haben, bereitgestellt. Es kann ohne weiteres verstanden werden, dass das exemplarische Ausführungsbeispiel, das mit Bezug auf 3 erörtert wurde, eine bessere Lösung angesichts niedrigerer Kosten und niedrigerer Pin-Zahlen als das in dieser Abbildung beschriebene bereitstellt, wobei aber diese Ausführung eine alternative Ausführung ist, die in einigen Anwendungen zweckdienlich ausgeführt werden kann.
  • 5 ist ein exemplarisches Ablaufdiagramm zur Zuführung von Unterbrechungen in einer SMP-Umgebung entsprechend der Lehre der vorliegenden Erfindung. Während des System-Anlauf- und Initialisierungsschritts 505 wird jeder Bus-Agent (mit Bezug auf 3 erörtert) einem einmaligen Wert der Zuteilungs-Identifikation ("Arb ID") zugeordnet. Auf Grund der 8259A-Kompatibilität wird der Anlauf-Reset durch einen vorher festgelegten Prozessor im System verarbeitet worden sein. Zusätzlich wird jeder Bus-Agent bezüglich der Gesamtzahl von Bus-Agenten des Busses für pro grammierbare Unterbrechungssteuereinheiten 311 (gemäß 3) initialisiert. Das bevorzugte Verfahren ist es, es der Systemsoftware ("OS") zu ermöglichen, alle notwendigen Informationen während der System-Initialisierungsphase 505 zu steuern und bereitzustellen. Um die Skalierbarkeit aufrechtzuerhalten, verwendet das bevorzugte Ausführungsbeispiel ein codiertes 5-Bit-Register, in denen ein Wert "00000" das Vorhandensein von einem Bus-Agenten und einer Master-COPIC anzeigt, wobei ein Wert von "00001" zwei Bus-Agenten und eine Master-COPIC angezeigt usw., bis zu einem Wert von "11110", der 31 Bus-Agenten und eine Master-COPIC angezeigt. Zusätzlich zeigt ein Wert von "11111" im codierten 5-Bit-Register ein RESET im exemplarischen Ausführungsbeispiel an.
  • Wenn das System das Vorhandensein einer Unterbrechung erfasst, wie es im Entscheidungsblock 510 vorgesehen ist, dann muss entweder eine COPIC oder eine LOPIC die Steuerung des Busses für programmierbare Unterbrechungssteuereinheiten 311 erlangen, bevor eine Bus-Meldung dort hindurch zugeführt werden kann. Wenn der Bus 311 belegt ist, wie im Entscheidungsblock 515 ermittelt wird, dann muss ein Bus-Agent warten, bis der Bus 311 frei ist, wie im Entscheidungsblock 517 angezeigt wird. Dann muss der Bus-Agent, sobald die gegenwärtige Bus-Transaktion beendet ist, entscheiden, eine Bus-Erteilung zu erlangen, da nur die Master/Zuteiler-COPIC die Gesamtsteuerung seiner Bus-Anforderungsleitung haben wird, die mit der Steuerleitung des Busses verbunden ist. Die Zuteilungsphase 520 wird nachfolgend mit spezifischem Bezug auf 6 und 7 zusammengenommen ausführlicher erörtert. Wenn der Bus 311 frei ist, können ein Agent oder der Master direkt einen Zuteilungszyklus beginnen, um eine Bus-Erteilung zu erlangen.
  • Beim Eintritt in den Entscheidungsblock 525, nachdem man die Steuerung des Busses 311 erlangt hat, wird bestimmt, ob die Unterbrechung eine Unterbrechung im direkten Zuführungsmodus oder eine Unterbrechung im verteilten Zuführungsmodus ist. Wenn die Bestimmung die ist, dass die Unterbrechung eine Unterbrechung im direkten Zuführungsmodus ist, dann werden, indem von dort der JA-Pfad übernommen wird, Daten zum Zielprozessor (oder Bus-Agenten/LOPIC, wenn der Prozessor und seine LOPIC nicht miteinander integriert sind) auf mehreren Datenleitungen, zum Beispiel vier Datenleitungen, die einen Teil des Busses 311 umfassen, zugeführt.
  • Wenn im Schritt 525 bestimmt wird, dass die Unterbrechung eine Unterbrechung in einem verteilten Zuführungsmodus ist, dann wird eine COPIC einen Befehl "verteilte Unterbrechung" an alle aufgelisteten Agenten senden, wie im Schritt 530 vorgesehen ist. Jeder Agent stellt dann seine Prioritätsebene für gegenwärtige Aufgaben (CTPR) nacheinander durch Übertragen seiner Vier-Bit-Prioritätsebene über die Datenleitung bereit, die genutzt wird, um damit den Bus anzufordern. Da die Anzahl von Bits in einer CTPR Vier ist, sind für jeden Agenten insgesamt vier Zyklen erforderlich, um seinen CTPR-Wert für die COPIC bereitzustellen.
  • Nach dem Empfang der CTPR-Werte vergleicht und wählt im Schritt 535 die COPIC den Agenten aus, der den niedrigsten CTPR-Wert hat (0 ist der niedrigste und bedeutet, am wenigsten belegt; 15 ist der höchste). Wenn nur ein Agent den niedrigsten CTPR-Wert hat, dann wird die Unterbrechung dem Agenten zugeführt, indem der JA-Pfad vom Entscheidungsblock 540 übernommen wird. Ansonsten wird im Entscheidungsblock 550 bestimmt, den Agenten auszuwählen, der vorher die gleiche Unterbrechung für deren Zuführung bedient hat, wie im Schritt 555 vorgesehen ist. Wenn andererseits kein Agent vorher die Unterbrechung bedient hat, dann wird im Schritt 565 eine Wahl getroffen, den Agenten auf der Basis seiner einmaligen Arb ID auszuwählen, wobei zum Beispiel derjenige mit der niedrigsten Arb ID ausgewählt wird, um die Unterbrechung dorthin zuzuführen.
  • Es wird jetzt mit Bezug auf 6 und 7 zusammen ein Schema für die Bus-Zuteilung in einem exemplarischen skalierbaren MP-System mit vier oder mehr Verarbeitungseinheiten (von denen jede mit ihrer entsprechenden LOPIC integriert sein kann) in einem Ablaufdiagramm in 6 und einem Bus-Zeitdiagramm in 7 beschrieben. Wie man ohne weiteres erkennen kann, kann das gleiche Bus-Zuteilungsschema in einem Ausführungsbeispiel mit weniger als vier Verarbeitungseinheiten genutzt werden, ohne vom Umfang der vorliegenden Erfindung, wie sie beansprucht wird, abzuweichen. Wenn es zum Beispiel nur zwei Verarbeitungseinheiten gibt, werden nur zwei Datenleitungen auf HIGH für die Zuteilung gezogen, wie nachfolgend mit Bezug auf ein exemplarisches, allgemeines Ausführungsbeispiel beschrieben wird.
  • In die Zuteilungsphase, die in 5 als Schritt 520 gekennzeichnet war, gelangt man mit dem Start einer Bus-Transaktion gemäß dem Schritt 601. Nach dem Initialisierungsschritt 602, während des ersten Zuteilungszyklus, geben die ersten vier Bus-Agenten durch Bestätigung von ACTIVE HIGH ihre jeweiligen Bus-Anforderungssignale auf deren eigenen Bus-Anforderungsleitungen aus, die mit den Datenleitungen des Busses 311 (gemäß 3) verbunden sind. Zum Beispiel steuert während des ersten Zuteilungszyklus Agent 0, der mit OPDATA 0 (gemäß 7) verbunden ist, jene Leitung, die in diesem Ablaufdiagramm als DATA 0 bezeichnet wird. Ähnlich dazu steuert Agent 1, der mit OPDATA 1 (gemäß 7) verbunden ist, jene Leitung, die als DATA 1 in diesem Ablaufdiagramm bezeichnet wird, Agent 2, der mit OPDATA 2 (gemäß 7) verbunden ist, steuert jene Leitung, die als DATA 2 in diesem Ablaufdiagramm bezeichnet wird, wobei Agent 3, der mit OPDATA 3 (gemäß 7) verbunden ist, jene Leitung steuert, die in diesem Ablaufdiagramm als DATA 3 bezeichnet wird. Wenn keine weiteren Agenten vorhanden sind oder erfasst werden, wie im Schritt 604 vorgesehen ist, wird die Master/Zuteiler-COPIC einen Bus-Agenten durch Verwendung eines Zuteilungsprotokolls mit einer "rotierenden Priorität" oder einer "zyklischen Suche (round robin)" auswählen, um den Bus 311 zur Meldungszuführung gemäß Schritt 607 und 608 zu erteilen. Zu diesem Zweck nutzt die Master/Zuteiler-COPIC im exemplarischen Ausführungsbeispiel einen internen Kreis-Pointer, bezeichnet als ARB_PTR, der den Bus-Agenten zeigt, der für die jüngste Bus-Anforderung erteilt wurde. Gemäß einer Ausführungsform der vorliegenden Erfindung wird dem Bus-Agenten, auf den durch die Inhalte des ARB_PTR gezeigt wird, die geringste Priorität der Bus-Zuteilung gewährt, wobei ferner dem Bus-Agenten, auf den durch Weiterschaltung der zyklischen Aufeinanderfolge des ARB_PTR-Wertes um Eins gezeigt wird, die höchste Priorität gewährt wird. In einem gegenwärtig bevorzugten, exemplarischen Ausführungsbeispiel wird ein 5-Bit-ARB_PTR bereitgestellt, um bis zu 32 Einheiten, 31 Bus-Agenten und eine Master-COPIC, skalierbar aufzunehmen. Beim Einschalten wird dieser 5-Bit-ARB_PTR auf "11111" initialisiert, so dass der Bus-Agent, auf den durch "00000" gezeigt wird, die höchste Priorität für die bevorstehende Bus-Zuteilung haben wird. Wenn andererseits die Gesamtzahl von Bus-Agenten und Master-COPIC weniger als 32 beträgt, dann werden die signifikantesten Bits des ARB_PTR entsprechend maskiert sein.
  • Sobald weiterhin 6 betreffend die Steuerung des Busses 311 erteilt ist, kann der Anforderer unmittelbar mit der Sendung seiner Meldung mit einer zyklischen Blockprüfung (Cyclic Reduncy Check – "CRC") und Fehlerprüfung (gemäß 7) beginnen. Nach jeder erfolgreich übertragenen Meldung schaltet die Master/Zuteiler-COPIC ihren ARB_PTR weiter oder aktualisiert ihn, um den Bus-Agenten zu zeigen, der die Meldung erfolgreich übertragen hat, wie im Schritt 609 vorgesehen ist. Am Ende der gegenwärtigen Bus-Transaktion kann die Bus-Zuteilungs-Bearbeitungsphase für die nächste Bus-Transaktion 610 wieder beginnen.
  • Wenn andererseits mehr als vier Agenten die Bus-Steuerung zuteilen, dann wird, indem der NEIN-Pfad von Entscheidungsblock 604 übernommen wird, gemäß Schritt 606 der Zuteilungszyklus-Zähler weitergeschaltet, wobei der nächste Zuteilungszyklus mit zusätzlichen Agenten, zum Beispiel den Agenten 4, 5, 6 und 7, erneut beginnen kann, die die Datenleitungen OBDATA 0, OBDATA 1, OBDATA 2 bzw. OBDATA 3 gemäß 7 ansteuern. Wenn die Liste von Agenten aufgebraucht ist, wie in 604 vorgesehen ist, dann wird die Bus-Steuerung in der gleichen Weise erteilt, wie sie oben erörtert ist.
  • Anhand des vorangegangenen kann der Fachmann ohne weiteres erkennen, dass die vorliegende Erfindung eine äußerst kosteneffektive Lösung für die ausgeglichene Zuführung von Unterbrechungen an ihre Ziele in einer skalierbaren MP-Umgebung mit vier oder mehr Verarbeitungseinheiten bereitstellt, ohne die Bus-Breite oder das Bus-Protokoll zu ändern. Das offenbarte Verfahren erfordert, dass nur CTPR-Werte für jeden Bus-Agenten verglichen werden, um die gegenwärtig niedrigste Aufgabenpriorität zu bestimmen, wobei dadurch gewährleistet wird, dass im dynamischen Zuführungsmodus eine Unterbrechung immer an den Agenten verteilt wird, der am wenigsten belegt ist. Des Weiteren kann es durch Verteilung der Steuerung zwischen lokalen Unterbrechungssteuereinheiten und zentralen Unterbrechungssteuereinheiten, die auf einem zugeordneten Unterbrechungs-Bus angeordnet sind, realisiert werden, dass die Einwirkung auf den Host-Busverkehr oder den System-Busverkehr verschwindend gering gemacht wird. Mit der Integration von lokalen Unterbrechungssteuereinheiten mit deren entsprechenden Verarbeitungseinheiten wird eine Lösung mit niedrigen Kosten und niedrigen Pin-Zahlen erreicht, die in einem MP-Systemaufbau mit vier oder mehr Prozessoren äußerst skalierbar sind. Darüber hinaus kann die vorliegende Erfindung, wie oben beschrieben ist, auch mit weniger als vier Verarbeitungseinheiten praktiziert werden, ohne die Bus-Breite oder das Bus-Protokoll ändern zu müssen. Demzufolge soll verständlich sein, dass die vorliegende Erfindung eine äußerst skalierbare Lösung bereitstellt, die eine oder mehr Verfahrenseinheiten in einer MP-Umgebung unterstützen kann.

Claims (6)

  1. Verfahren zur Unterstützung von Mehrfachverteilungs-Unterbrechungssteuereinheiten, als Bus-Agenten (305, 306) bezeichnet, in einem symmetrischen Multiprozessorsystem, wobei das Verfahren die Schritte umfasst: – Zuweisen einer einmaligen Identifikationsnummer für jedem Bus-Agenten (305, 306); gekennzeichnet durch die Schritte – Zuteilen von Busanforderungen von den Bus-Agenten (305, 306) durch Empfangen von Busanforderungen in Vierergruppen von einem Bus (311) mit vier Datenleitungen, wobei die Existenz von mehr als vier Bus-Agenten (305, 306) den Empfangsschritt erfordert, so dass Mehrfach-Zuteilungsphasen einbezogen sind, wobei jede dieser Phasen einer besonderen Vierergruppe von Bus-Agenten (305, 306) entspricht; und – Erteilen eines Bus-Eigentumsrechts (607) für einen ausgewählten der anfordernden Bus-Agenten (305, 306) als ein Ergebnis der Zuteilung der Busanforderungen.
  2. Verfahren nach Anspruch 1, wobei bis zu zweiunddreißig Bus-Agenten (305, 306) unterstützt werden können, ohne das Busprotokoll oder die Busbreite zu ändern.
  3. Computersystem, das Mehrfachverteilungs-Unterbrechungssteuereinheiten, als Bus-Agenten (305, 306) bezeichnet, in einem symmetrischen Multiprozessorsystem unterstützt, wobei das Computersystem umfasst: – Einrichtungen zum Zuweisen einer einmaligen Identifikationsnummer an jeden Bus-Agenten (305, 306); – einen Bus (311) mit vier Datenleitungen zum Empfangen von Busanforderungen von den Bus-Agenten (305, 306) in Vierergruppen; gekennzeichnet durch – Einrichtungen zum Aufnehmen eines Zuteilungsschemas als Reaktion auf die Busanforderungen, wobei es die Existenz von mehr als vier Bus-Agenten erfordert, dass der Bus Busanforderungen über Mehrfach-Zuteilungsphasen empfängt, wobei jede der Phasen einer besonderen Vierergruppe von Bus-Agenten (305, 306) entspricht; und – Einrichtungen zum Erteilen eines Bus-Eigentumsrechts für einen ausgewählten der anfordernden Bus-Agenten (305, 306) als ein Ergebnis der Zuteilung.
  4. Computersystem nach Anspruch 3, wobei bis zu zweiunddreißig Bus-Agenten (305, 306) unterstützt werden können, ohne das Busprotokoll oder die Busbreite zu ändern.
  5. Computersystem nach Anspruch 3 oder Anspruch 4, wobei die Einrichtung zum Zuweisen einen zentralen Prozessor (105, 106) umfasst.
  6. Computersystem nach einem der Ansprüche 3 bis 5, wobei die Einrichtung zum Erteilen eine zentrale programmierbare Unterbrechungssteuereinheit (312) umfasst.
DE69735575T 1996-08-20 1997-08-13 Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern Expired - Lifetime DE69735575T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US69991296A 1996-08-20 1996-08-20
US699912 1996-08-20

Publications (2)

Publication Number Publication Date
DE69735575D1 DE69735575D1 (de) 2006-05-18
DE69735575T2 true DE69735575T2 (de) 2006-08-24

Family

ID=24811451

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69735575T Expired - Lifetime DE69735575T2 (de) 1996-08-20 1997-08-13 Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern

Country Status (4)

Country Link
US (2) US6041377A (de)
EP (1) EP0827085B1 (de)
JP (1) JPH1097490A (de)
DE (1) DE69735575T2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69735575T2 (de) * 1996-08-20 2006-08-24 Compaq Computer Corp., Houston Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
US6633916B2 (en) 1998-06-10 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for virtual resource handling in a multi-processor computer system
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6332180B1 (en) 1998-06-10 2001-12-18 Compaq Information Technologies Group, L.P. Method and apparatus for communication in a multi-processor computer system
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6542926B2 (en) 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6199179B1 (en) 1998-06-10 2001-03-06 Compaq Computer Corporation Method and apparatus for failure recovery in a multi-processor computer system
US6260068B1 (en) * 1998-06-10 2001-07-10 Compaq Computer Corporation Method and apparatus for migrating resources in a multi-processor computer system
US6219741B1 (en) 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6418496B2 (en) * 1997-12-10 2002-07-09 Intel Corporation System and apparatus including lowest priority logic to select a processor to receive an interrupt message
US6374320B1 (en) * 1998-08-10 2002-04-16 Micron Technology, Inc Method for operating core logic unit with internal register for peripheral status
US6275893B1 (en) * 1998-09-14 2001-08-14 Compaq Computer Corporation Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US6205508B1 (en) * 1999-02-16 2001-03-20 Advanced Micro Devices, Inc. Method for distributing interrupts in a multi-processor system
US6513084B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US7996843B2 (en) * 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US6606676B1 (en) * 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US6804736B2 (en) * 2000-11-30 2004-10-12 Hewlett-Packard Development Company, L.P. Bus access arbitration based on workload
US6848015B2 (en) * 2001-11-30 2005-01-25 Hewlett-Packard Development Company, L.P. Arbitration technique based on processor task priority
US7028302B2 (en) * 2002-04-24 2006-04-11 Hewlett-Packard Development Company, L.P. System and method for automatically tuning a multiprocessor computer system
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US7817157B2 (en) 2004-08-23 2010-10-19 Hewlett-Packard Company, L.P. Method and apparatus for capturing slices of video data
US20060136916A1 (en) * 2004-12-17 2006-06-22 Rowland John R Method and apparatus for transaction performance and availability management based on program component monitor plugins and transaction performance monitors
US8656145B2 (en) * 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
US8959270B2 (en) 2010-12-07 2015-02-17 Apple Inc. Interrupt distribution scheme
US8458386B2 (en) 2010-12-07 2013-06-04 Apple Inc. Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements
CN111553473B (zh) * 2017-07-05 2023-10-13 上海寒武纪信息科技有限公司 数据冗余方法及执行数据冗余方法的神经网络处理器
RU183879U1 (ru) * 2017-10-25 2018-10-08 Публичное акционерное общество "Институт электронных управляющих машин им. И.С. Брука" Процессорный модуль

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5125093A (en) 1990-08-14 1992-06-23 Nexgen Microsystems Interrupt control for multiprocessor computer system
US5410710A (en) 1990-12-21 1995-04-25 Intel Corporation Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
WO1993000638A1 (en) 1991-06-26 1993-01-07 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
US5437042A (en) 1992-10-02 1995-07-25 Compaq Computer Corporation Arrangement of DMA, interrupt and timer functions to implement symmetrical processing in a multiprocessor computer system
US5434997A (en) 1992-10-02 1995-07-18 Compaq Computer Corp. Method and apparatus for testing and debugging a tightly coupled mirrored processing system
EP0602858A1 (de) * 1992-12-18 1994-06-22 International Business Machines Corporation Vorrichtung und Verfahren zur Unterbrechungsbedienung in einem Mehrrechnersystem
US5481725A (en) 1993-08-03 1996-01-02 Intel Corporation Method for providing programmable interrupts for embedded hardware used with programmable interrupt controllers
US5555430A (en) 1994-05-31 1996-09-10 Advanced Micro Devices Interrupt control architecture for symmetrical multiprocessing system
US5530891A (en) 1994-05-31 1996-06-25 Advanced Micro Devices System management interrupt mechanism within a symmetrical multiprocessing system
US5564060A (en) 1994-05-31 1996-10-08 Advanced Micro Devices Interrupt handling mechanism to prevent spurious interrupts in a symmetrical multiprocessing system
ATE245290T1 (de) * 1994-05-31 2003-08-15 Advanced Micro Devices Inc Unterbrechungssteuerungsgeräte in symmetrischen mehrprozessorsystemen
US5613126A (en) 1994-05-31 1997-03-18 Advanced Micro Devices, Inc. Timer tick auto-chaining technique within a symmetrical multiprocessing system
US5568649A (en) 1994-05-31 1996-10-22 Advanced Micro Devices Interrupt cascading and priority configuration for a symmetrical multiprocessing system
DE69735575T2 (de) * 1996-08-20 2006-08-24 Compaq Computer Corp., Houston Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern

Also Published As

Publication number Publication date
EP0827085A3 (de) 1999-02-03
US6249830B1 (en) 2001-06-19
EP0827085B1 (de) 2006-03-29
EP0827085A2 (de) 1998-03-04
US6041377A (en) 2000-03-21
DE69735575D1 (de) 2006-05-18
JPH1097490A (ja) 1998-04-14

Similar Documents

Publication Publication Date Title
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE69429279T2 (de) Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern
DE69419680T2 (de) Skalierbare Unterbrechungsstruktur für ein Simultanverarbeitungssystem
DE3789104T2 (de) Netzwerkübertragungsadapter.
DE69223303T2 (de) Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
DE3854837T2 (de) Vorrichtung für ein Datenverarbeitungssystem mit gleichmengiger Beziehung zwischen einer Vielzahl von zentralen Datenverarbeitungseinheiten
DE3853574T2 (de) Steuerung von Benutzerantworten in einem Übertragungsbus.
DE69129477T2 (de) Unterbrechungsverarbeitungszuordnung in einem Mehrprozessorsystem
DE69701078T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren
DE69130620T2 (de) Datenübertragungsadapter und Verfahren zu dessen Betrieb
DE3688763T2 (de) Mehrfachport-Übertragungsadaptiervorrichtung.
DE3650036T2 (de) Mehrfachport-Diensterweiterungsadapter für Übertragungssteuerung.
DE3856030T2 (de) Vorrichtung und Verfahren zur Durchführung von änderbarer Betriebsmittelaufteilung in einem Datenverarbeitungssystem mit zentralen Datenverarbeitungseinheiten mit verschiedenen Betriebssystemen
DE69905287T2 (de) Unterbrechungsarchitektur für ein rechnersystem mit nichtuniformem speicherzugriff
DE60015395T2 (de) Speicher, der zwischen verarbeitenden threads geteilt ist
DE69230093T2 (de) Multiprozessorsystem
DE69030640T2 (de) Multiprozessorarbitrierung in für Einzelprozessor bestimmten Arbitrierungsschemas
DE69613423T2 (de) Unterbrechungssystem in einem Mikroprozessor
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE3688810T2 (de) Mehrfachport-integrierter Steuerer und Arbitrierer für DMA und Unterbrechungen.
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE68927375T2 (de) Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem
DE69032614T2 (de) Verfahren zur Datenverteilung in einer Speicherplattenanordnung
DE69833503T2 (de) Mechanismus der unterbrechung von bestimmungsortredirektion ausführt
DE69024753T2 (de) Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt

Legal Events

Date Code Title Description
8364 No opposition during term of opposition