-
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.