-
Stand der Technik
-
Gebiet der Technik
-
Die vorliegende Erfindung betrifft
das Gebiet von Mehrprozessorsystemen, und im Besonderen Systeme
und Verfahren zur Auswahl eines Bootprozessors in Mehrprozessorsystemen.
-
Beschreibung
des Stands der Technik
-
Moderne Computersysteme setzen zunehmend
auf mehrere Prozessoren, um die erforderliche Rechenleistung zur
Erfüllung
der Anforderungen der ausgeführten
Applikationen zu erfüllen.
In diesen Systemen werden die Verarbeitungsfunktionen auf die vorhandenen
Prozessoren verteilt, um Engpässe an
den einzelnen Prozessoren zu verhindern. Ein besonders erfolgreicher
Einsatz für
das Multiprocessing behandelt jeden Prozessor in dem System auf
die gleiche Weise. Diese Systeme werden als symmetrische Multiprocessing-Systeme
(SMP-Systeme) bezeichnet, da sich einzelnen Prozessoren für die Zwecke
der Laufzeitzuweisung (Scheduling) und der Ausführung von Code nicht unterschieden
werden können.
Die Identität
erleichtert die ausgewogene Verteilung der Arbeiten unter den Prozessoren
und vereinfacht die Anforderungen an das Betriebssystem. Da alle
Prozessoren für
die Ausführung
von Threads gleich behandelt werden, können SMP-Systemen weitere Prozessoren
hinzugefügt
werden, ohne die Software zu verändern.
Diese Fähigkeit,
die Rechenleistung eines Systems durch das Hinzufügen von
Ressourcen wie z. B. Prozessoren zu steigern, wird als Skalierbarkeit
bezeichnet.
-
Ein Element der Asymmetrie in SMP-Systemen
wird dadurch eingeführt,
dass es erforderlich ist, einen einzelnen Prozessor zum Booten bzw.
Starten des Systems auszuwählen.
Beim Starten des Systems und bei jedem Zurücksetzen bzw. Neustart des Systems
ist jeder Prozessor in einem SMP-System für gewöhnlich dafür verantwortlich, zu bestimmen, dass
seine internen Komponenten und Schnittstellen ordnungsgemäß arbeiten.
Der Bootprozessor (BSP) ist dahingehend einzigartig, dass er die
Initialisierungsprozeduren für
das System insgesamt bearbeitet bzw. ausführt. Diese Prozeduren umfassen
die Integritätsprüfung des
Speichers, das Identifizieren der Eigenschaften der Systemlogik,
das Laden des Betriebssystems in den Speicher und das Starten der anderen
Prozessoren. Da diese Funktionen vorübergehend in SMP-Systemen eine
Asymmetrie erzeugen, indem dem BSP eine einzigartige Rolle zugewiesen
wird, ist es wünschenswert,
die Auswahl BSP so asymmetrisch wie möglich zu gestalten.
-
Herkömmliche Systeme verwenden eine Vielzahl
von Techniken für
die Auswahl eines BSP unter den Prozessoren eines SMP-Systems. Bei
einem SMP-System sind die Prozessoren über einen dedizierten Unterbrechungsbus
mit offenem Kollektor miteinander verbunden. Beim Neustart bzw.
Zurücksetzen
macht jeder Prozessor eine invertierte Form einer zugewiesenen Prozessorkennnummer (Prozessor-ID)
an einer gemeinsam genutzten Leitung des Unterbrechungsbusses geltend.
Sobald ein Prozessor, der eine Eins auf der Leitung geltend macht,
feststellt, dass ein anderer Prozessor eine Null geltend macht,
gibt der erste Prozessor die Leitung frei. Der diese Arbitrierungsprozedur
erfolgreich überstehende
Prozessor ist der Prozessor mit der Prozessor-ID mit dem höchsten Wert.
Dieser Prozessor übernimmt
die Steuerung des Busses und sendet eine Nachricht an alle Prozessoren
an dem Unterbrechungsbus, wobei er sich selbst als BSP identifiziert. Dieser
Ansatz wird durch SMP-Systeme auf der Basis des Pentium® Pro
Mikroprozessors der Intel Corporation beispielhaft ausgeführt.
-
Dieser Ansatz zur Auswahl des BSP
weist jedoch eine Reihe von Unzulänglichkeiten auf. Dabei ist
ein dedizierter Unterbrechungsbus erforderlich. Dieser Bus ist in
Anbetracht der heute gegebenen Standards in Bezug auf die Prozessorgeschwindigkeiten
verhältnismäßig langsam,
wodurch sich der Bootprozess unnötig
verlangsamt. Darüber
hinaus kann jeder Bus nur Cluster von bis zu vier Prozessoren unterstützen. Zusätzliche
Prozessoren müssen
in separaten Clustern untergebracht werden, und die Notwendigkeit
eines dedizierten Unterbrechungsbusses macht es schwierig, das Verfahren
auf mehrere Cluster auszuweiten.
-
Ein anderes Verfahren zur Auswahl
des BSP wird in dem U.S. Patent US-A-5.659.748 offenbart. Das Verfahren
kennzeichnet einfach den Prozessor in einem spezifizierten Slot
als BSP. Diese Strategie führt
in dem SMP-System zu einer permanenten Asymmetrie.
-
Andere Verfahren zur Auswahl von
BSPs in SMP-Systemen identifizieren den ersten Prozessor zum Schreiben
einer gemeinsam genutzten Variablen als BSP. In einem dieser SMP-Systeme wird ein Semaphor-Wert
an einer spezifizierten Speicheradresse gespeichert, und der erste
der Systemprozessoren, der den Semaphor-Wert erfolgreich liest und einstellt,
wird als BSP gekennzeichnet. Dieses Verfahren erfordert jedoch den
Speichereinsatz bevor der Speicher durch den BSP auf Zuverlässigkeit
geprüft
worden ist.
-
In einem alternativen Verfahren auf
Semaphor-Basis schreiben die Prozessoren in dem SMP-System in einen
nichtflüchtigen Speicherplatz, bei
dem es sich für
gewöhnlich
um ein Register der Systemlogik oder des Chipsatzes handelt. Bei
dieser Alternative weist der Chipsatz ein Schreib-Lese-Register
für jeden
Prozessor in dem SMP-System und ein gemeinsam genutztes Register
auf, auf das alle Prozessoren zugreifen können. Die Prozessorregister
und das gemeinsam genutzte Register arbeiten für den kritischen Codebereich,
der von dem BSP ausgeführt
werden muss, als Semaphor zusammen. Verschiedene Algorithmen werden
eingesetzt, um sicherzustellen, dass nur ein Prozessor den kritischen Code
ausführt
und dass die Kennung dieses Prozessors in dem gemeinsam genutzten
Register zur Identifikation des BSP gespeichert wird.
-
Bei diesem Verfahren ist es erforderlich, dass
die Anzahl der Prozessoren in dem System vorab bekannt ist, da in
dem Chipsatz für
jeden Prozessor ein Register vorgesehen sein muss. Dies beschränkt die
Skalierbarkeit des SMP-Systems und setzt eine zusätzliche
Logik in dem Chipsatz zum Speichern der Prozessor-ID des ersten
Prozessors voraus, der in das zugewiesene Register an dem gemeinsam
genutzten Speicherplatz schreibt. Ferner ist eine Koordination zwischen
der Chipsatzlogik und den Prozessoren vor dem Startvorgang voraus.
-
Benötigt werden somit ein System
und ein Verfahren zur Auswahl eines Bootprozessors in einem skalierbaren
Mehrprozessorsystem, und wobei das System und das Verfahren schnell
durch die Prozessoren des Systems implementiert werden können, ohne
Koordination mit dem Speicher, der Chipsatz-Logik und anderen von
der Implementierung abhängigen
Bestandteilen des Mehrprozessorsystems.
-
Zusammenfassung
der Erfindung
-
Die vorliegende Erfindung sieht die
Auswahl eines skalierbaren Bootprozessors (BSP) in einem Mehrprozessorsystem
vor, ohne dass dafür
zusätzliche
Systemhardware, ein Zugriff auf ungeprüfte Systemkomponenten während dem
Startvorgang oder vorab eine Kenntnis über die Anzahl der Prozessoren in
dem System erforderlich sind. Der BSP wird über ein verteiltes Nachrichtenweiterleitungsverfahren ausgewählt, das
unabhängig
von der Anzahl der Prozessoren in dem System funktionsfähig ist.
-
Gemäß der vorliegenden Erfindung
ist jeder Prozessor durch einen Prozessorkenncode (Prozessor-ID)
gekennzeichnet. Wenn ein Prozessor einen Rücksetzzustand erfasst, erzeugt
er eine Bootnachricht an jeden Prozessor mit einer Prozessor-ID
mit niedrigerem ert. Wenn der Prozessor keine antwortende Nachricht
von einem Prozessor mit einer Prozessor-ID mit niedrigerem Wert
empfängt,
arbeitet er als BSP.
-
In einem Ausführungsbeispiel der Erfindung werden
das Verfahren zur Nachrichtenweiterleitung darstellende Befehle
an einem nichtflüchtigen
Speicherplatz gespeichert und Bootnachrichten werden über einen
Hochgeschwindigkeitsbus weitergeleitet, der die Prozessoren des
Mehrprozessorsystems mit Systemkomponenten wie etwa dem Speicher
und der Chipsatz-Logik
koppelt.
-
Kurze Beschreibung
der Zeichnungen
-
Die vorliegende Erfindung wird in
Bezug auf die folgenden Zeichnungen besser verständlich, in denen die gleichen
Elemente mit übereinstimmenden Bezugsziffern
bezeichnet sind.
-
Die Zeichnungen dienen der Veranschaulichung
möglicher
Ausführungsbeispiele
der vorliegenden Erfindung und sie schränken den vorgesehenen Umfang
der vorliegenden Erfindung nicht ein. Es zeigen:
-
1 ein
Blockdiagramm eines Mehrprozessorsystems, das sich zur Implementierung
des BSP-Auswahlverfahrens gemäß der vorliegenden Erfindung
eignet;
-
2 ein
Flussdiagramm eines Überblicks über das
Verfahren zur Auswahl eines Bootprozessors in dem Mehrprozessorsystem
aus 1;
-
die 3A und 3B Blockdiagramme von Nachrichtenübertragungsbefehlen
in einem Ausführungsbeispiel
der vorliegenden Erfindung;
-
4 ein
detailliertes Blockdiagramm eines Bootvorgangs einschließlich eines
Verfahrens zur Auswahl des BSP gemäß der vorliegenden Erfindung;
-
die 5A bis 5F ausgewählte Stufen des Verfahrens
zur Auswahl des Bootprozessors aus der Abbildung aus 4;
-
6 ein
Flussdiagramm eines Verfahrens zur Auswahl des Bootprozessors unter
Verwendung des erfindungsgemäßen Verfahrens;
und
-
7 ein
Verfahren zur Auswahl eines Bootprozessors in einem hierarchischen
Mehrprozessorsystem unter Verwendung des erfindungsgemäßen Verfahrens.
-
Genaue Beschreibung
der Erfindung
-
Wenn ein Computersystem zum ersten
Mal eingeschaltet wird (Kaltstart oder Neustart) oder wenn dieser
neugestartet wird, ohne die Stromzufuhr auszuschalten (Warmstart
oder Neustart), müssen eine
Reihe von Tests ausgeführt
werden, um die Identität
und den Status der Komponenten des Systems zu bestimmen, die wesentliche
Software zu laden, wie z. B. das Betriebssystem, und Übertragungsverbindungen
zwischen den einzelnen Komponenten zu erzeugen. Dieser Startvorgang
wird als Bootvorgang oder Booten bezeichnet, wodurch die Tatsache
wiedergegeben werden soll, dass sich das System inkremental selbst
einschaltet. Für
gewöhnlich
testen die einzelnen Prozessoren jeweils ihre Komponenten und Schnittstellen.
Danach wird ein Prozessor aus der Mehrzahl von Prozessoren ausgewählt, um Übertragungsverbindungen
mit dem Rest des Systems herzustellen und die systemweiten Schritte
des Bootvorgangs abzuschließen.
Der ausgewählte
Prozessor ist der Bootprozessor. In Intel-Prozessoren und mit der
Intel-Architektur
kompatiblen Prozessoren wird der Bootvorgang durch Geltendmachung
eines Rücksetzsignals
eingeleitet, das in jeden Prozessor eingegeben wird. Die vorliegende Erfindung
ist nicht auf ein bestimmtes Rücksetzsignal oder
einen bestimmten Zustand beschränkt
und kann mit jedem dieser Rücksetz-
bzw. Neustartindikatoren implementiert werden, die von den verschiedenen Prozessorarchitekturen
eingesetzt werden.
-
Bei der vorliegenden Erfindung handelt
es sich um ein System zur Auswahl eines Bootprozessors (BSP) in
einem Mehrprozessorsystem ohne Verweis auf den Speicher, die Chipsatz-Logik
und andere Plattformkomponenten und ohne, dass dedizierte Busse
oder Logikvorrichtungen erforderlich sind. In einem Ausführungsbeispiel
kommunizieren die einzelnen Prozessoren des Mehrprozessorsystems
miteinander und mit einem nichtflüchtigen Speicherplatz unter
Verwendung eines Systembusses. Die Erfindung wird über Nachrichten
zwischen den Prozessoren in Form von Unterbrechungen zwischen den
Prozessoren (IPIs), Power-Management-Unterbrechungen (PMIs) und
vergleichbaren Übertragungsprotokollen
implementiert.
-
Der erfindungsgemäße Prozess zur Auswahl des
BSP ermöglicht
es, dass jeder Prozessor in dem System als BSP gekennzeichnet werden
kann, wobei im Wesentlichen die Symmetrie des Mehrprozessorsystems
aufrechterhalten wird. Das Auswahlverfahren lässt sich auch leicht auf Systeme
anwenden, die als Prozessor-Cluster aufgebaut sind. Die vorliegende
Erfindung kann zum Beispiel dazu verwendet werden, zuerst einen
BSP aus jedem Cluster ("Cluster-BSP") zu identifizieren,
und wobei danach aus den Cluster-BSPs ein einziger System-BSP ausgewählt wird.
Wenn die Cluster selbst hierarchisch organisiert sind, kann die
vorliegende Erfindung dazu eingesetzt werden, einen BSP auf jeder
Hierarchieebene zu identifizieren, bis ein einziger, für das ganze System
gültiger
BSP identifiziert worden ist.
-
Das erfindungsgemäße Auswahlverfahren kann auch
mit anderen BSP-Auswahlverfahren zur Beschleunigung der BSP-Identifizierung kombiniert werden.
Zum Beispiel kann es schneller sein, einen Prozessor an einer bestimmten
Slot-Position als
vorgeschlagenen BSP zu kennzeichnen. Wenn der Prozessor an diesem
Slot ausfällt
oder dessen Leistung unter ein bestimmtes Niveau sinkt, kann die
vorliegende Erfindung verwendet werden, um einen neuen BSP aus den
verbleibenden Prozessoren auszuwählen.
-
In erstem Bezug auf die Abbildung
aus 1 ist ein Ausführungsbeispiel
eines Mehrprozessorsystems (MPS) 100 dargestellt, das sich
zur Implementierung des erfindungsgemäßen BSP-Auswahlverfahrens eignet.
In dem offenbarten Ausführungsbeispiel
umfasst das MPS 100 die Prozessoren 110(1)–110(n),
einen Speicher 130 und einen nichtflüchtigen Speicher 140),
die alle über
einen Systembus 120 miteinander kommunizieren. Jeder Prozessor 110(1)–110(n) weist
eine entsprechende lokale Unterbrechungssteuerung 112(1)–112(n) auf.
Die Unterbrechungssteuerungen 112(1)–112(n) bearbeiten
Unterbrechungen zwischen Prozessoren (IPIs), Prozessorverwaltungsunterbrechungen
(PMIs) und andere Nachrichtenformate auf Unterbrechungsbasis, die
für die
Kommunikation zwischen Prozessoren 110(1)–110(n) eingesetzt
werden. In der folgenden Beschreibung werden die Zusätze bei
Verweisen auf die Prozessoren 110(1)–110(n), die lokalen
Unterbrechungssteuerungen 112(1)–112(n) und andere
Elemente mit Zusatz bzw. Index weggelassen, sofern die Beschreibung
nicht für
einen bestimmten Prozessor 110, eine bestimmte lokale Unterbrechungssteuerung 112 oder
ein anderes bestimmtes Indexelement gilt.
-
Zur Vollständigkeit ist das MPS 100 auch
mit anderen Bestandteilen bzw. Komponenten dargestellt, die für gewöhnlich in
Computersystemen vorhanden sind. Dazu zählen eine Busbrücke 150,
ein E/A-Bus 160, eine E/A-Unterbrechungssteuerung 170 und
ein E/A-Chipsatz 180. Die Brücke 150 verbindet
den E/A-Bus 160 mit dem Systembus 120, so dass
E/A-Vorrichtungen (nicht abgebildet) mit Vorrichtungen auf dem Systembus 120 kommunizieren können, wie
etwa Prozessoren 110, dem Speicher 130 und dem
nichtflüchtigen
Speicher 140. Die E/A-Unterbrechungssteuerung 170 und
der E/A-Chipsatz 180 führen Unterbrechungen
von E/A-Vorrichtungen 190 zu den Prozessoren 110.
-
Der nichtflüchtige Speicher 140 speichert
für gewöhnlich verschiedene
Prozeduren, die von den Prozessoren 110 verwendet werden,
wenn das MPS 100 zum ersten Mal eingeschaltet wird oder
wenn das MPS 100 durch ein Software- oder Hardware-Ereignis zurückgesetzt
wird. Der nichtflüchtige
Speicher 140 wird in diesen Situationen verwendet, da darin
gespeicherte Daten auch dann noch vorhanden sind, wenn die Stromversorgung
zu dem MPS 100 unterbrochen ist. Bis der Speicher 130 getestet
und als zuverlässig
befunden worden ist, ist es ferner gefährlich, sich auf die darin
gespeicherten Daten zu verlassen. In einem Ausführungsbeispiel der vorliegenden
Erfindung wird das durch die Prozessoren 110 implementierte
BSP-Auswahlverfahren in dem nichtflüchtigen Speicher 140 gespeichert
und darauf über
den Systembus 120 zugegriffen. Dies macht es nicht mehr
erforderlich, dass BSP-Routinen in Form eines Mikrocodes an den
Prozessoren gespeichert werden.
-
Bei der lokalen Unterbrechungssteuerung 112 handelt
es sich um eine Einheit eines Prozessors 110, die zum Senden
und Empfangen von Unterbrechungen zwischen Prozessoren und verwandten
Signalen auf Unterbrechungsbasis verwendet wird. Die Übertragungen
zwischen der lokalen Unterbrechungssteuerung 112 und dem
Prozessor 110 erfolgen über
Register 190 und einen Unterbrechungszufuhrbereich 114 eines
Prozessor-E/A-Adressblocks 118.
Während
dem Booten kann der Prozessor 110 zum Beispiel eine IPI
erzeugen, indem Unterbrechungsdaten und ein Unterbrechungsbefehl
in den Unterbrechungszufuhrbereich 114 des E/A-Adressblocks 118 geschrieben
werden. Der Prozessor 110 kommuniziert mit dem nichtflüchtigen
Speicher 140 über
den Systembus 120 über
einen anderen Bereich 116 des E/A-Adressblocks 118, der dem Speicher 140 zugewiesen
ist.
-
Die Register 190 umfassen
ein lokales ID-Register (LID) 192, ein Unterbrechungsvektorregister
(IVR) 194, ein Aufgabenprioritätsregister (TPR) 196,
ein Unterbrechungsendregister (EOI) 198 und ein Unterbrechungsanforderungsregister
(IRR) 199. Das LID 192 speichert einen Prozessor-ID-Code oder
eine Nummer des Prozessors 110. Der Prozessor-ID-Code kann
durch eine Reihe von Verfahren festgelegt werden, wie zum Beispiel
durch Zuweisen der ID durch das System-BIOS oder Lesen des Zustands
ausgesuchter Eingabestifte (nicht abgebildet), wenn ein Rücksetzereignis
detektiert wird. In jedem Fall stellt das Verfahren sicher, dass
jeder Prozessor 110 an dem Bus 120 eine eindeutige
Prozessor-ID aufweist.
-
Die Register 190 sehen eine
Steuerung über externe
und E/A-bezogene
Unterbrechungen vor und verfolgen den Status ausstehender Unterbrechungen.
In einem Ausführungsbeispiel
speichert das IVR 192 eine Anzeige der für den Prozessor 110 ausstehenden
Unterbrechung mit der höchsten
Priorität. Das
TPR 196 speichert einen erforderlichen Prioritätswert zur
Unterbrechung der gegenwärtig
durch den Prozessor 110 ausgeführten Prozedur.
-
Das EOI 198 speichert einen
Wert, der anzeigt, wenn eine Unterbrechung verarbeitet worden ist,
und das IRR 199 speichert die ausstehenden, d. h. die noch
nicht bearbeiteten Unterbrechungen für den Prozessor 110.
-
In dem offenbarten Ausführungsbeispiel
bilden Prozessoren 110 den Kern des MPS 100, und der
Bootvorgang beginnt für gewöhnlich damit,
dass jeder Prozessor 110 einen integrierten Selbsttest (BIST)
ausführt,
wenn ein geltend gemachtes Rücksetzsignal
detektiert wird. Der BIST wird zur Bestimmung des Status der Funktionseinheiten
und Schnittstellen des Prozessors verwendet, wie zum Beispiel der
lokalen Unterbrechungssteuerung 112 des Prozessors. Danach
wird einer der Prozessoren 110 als Bootprozessor (BSP) 110 ausgewählt. Der
BSP koordiniert die Tests des Rests des MPS 100 und lädt das Betriebssystem
aus dem Speicher 130 oder einer anderen Speichervorrichtung,
wie etwa einer Festplatte oder einem Diskettenlaufwerk (nicht abgebildet),
auf welche über
den E/A-Bus 160 zugegriffen
wird. Diese und andere Bootprozeduren werden für gewöhnlich über einen Selbsttest eingeleitet,
der beim Einschalten des Systems ausgeführt wird (POST als engl. Abkürzung für Power-On
Self Test).
-
Die Zuverlässigkeit des Speichers 130 und der
Datenpfade zwischen dem Speicher 130 und den Prozessoren 110 werden
nicht getestet, bevor der BSP ausgewählt und der POST ausgeführt worden ist.
Folglich werden die von den Prozessoren 110 ausgeführten Selbsttestprogramme
und die durch den BSP ausgeführten
Bootprozeduren für
gewöhnlich
in statischen Speichervorrichtungen wie etwa dem nichtflüchtigen
Speicher 140 gespeichert. Da statische Speichervorrichtungen
die Integrität
ihrer Daten auch dann aufrechterhalten, wenn die Stromzufuhr zu
dem MPS 100 abgeschaltet wird, müssen die Daten nicht bei jedem
Einschalten des MPS 100 wieder neu geladen werden. Bei
dem nichtflüchtigen Speicher 140 handelt
es sich kennzeichnenderweise um eine Nur-Lesespeichervorrichtung
(ROM), wie etwa ein EEPROM oder einen Flash-Speicher. In einigen
Prozessoren können
die BIST- und POST-Prozeduren oder Teile dieser Prozeduren als Mikrocode an
dem Prozessor selbst gespeichert werden. Die verfügbare Kapazität an dem
Prozessor ist jedoch für gewöhnlich begrenzt,
so dass die Speicherung in dem nichtflüchtigen Speicher 140 bevorzugt
wird.
-
Zusätzlich zu dem Einschalten aus
dem ausgeschalteten Zustand (Kaltstart oder Neustart) kann das MPS 100 zurückgesetzt
werden, wenn das System bereits eingeschaltet ist (Warmstart oder
Neustart). In diesem Fall müssen
die Prozessoren 110 ihre BISTs unter Umständen nicht
ausführen
und andere Teile des Kaltstartvorgangs können ebenfalls umgangen werden.
Ein BSP muss jedoch auch in diesem Fall aus den Prozessoren 110 ausgewählt werden
und verschiedene POST-Prozeduren müssen ebenfalls ausgeführt werden.
Das Ereignis, dass das Zurücksetzen
auslöst,
kann durch einen Fehler des BSP selbst verursacht werden, wobei
die Auswahl eines neuen BSP in diesem Fall imperativ ist.
-
In folgendem Bezug auf die Abbildung
aus 2 ist eine Übersicht
eines erfindungsgemäßen Verfahrens 200 zur
Auswahl eines BSP aus den Prozessoren eines MPS dargestellt. Das
Verfahren 200 kann zum Beispiel durch jeden Prozessor 110 implementiert
werden, der für
den Betrieb als BSP in dem MPS 100 zur Verfügung steht.
Bei einem vollständig symmetrischen
MPS betrifft dies alle funktionalen Prozessoren 110 in
dem System, wie z. B. alle Prozossoren 110, die ihren BIST
erfolgreich ausführen. Das
Verfahren 200 bietet eine schnelle, zuverlässige und
flexible Möglichkeit
zur Identifikation des Prozessors mit der Prozessor-ID mit dem niedrigsten
Wert in einem Mehrprozessorsystem und kennzeichnet diesen Prozessor
als BSP. In der folgenden Beschreibung wird zum Zwecke der Veranschaulichung
angenommen, dass es sich bei der Prozessor-ID um einen numerischen Wert handelt.
Die Prozessor-ID kann allgemein auch einen alphabetischen Code,
einen alphanumerischen Code oder jeden anderen Code darstellen,
der gemäß einer
bestimmten Wertzuweisung angeordnet ist.
-
Das Verfahren 200 wird eingeleitet,
wenn ein Rücksetzsignal
als Folge eines externen oder internen Ereignisses geltend gemacht
wird. Wenn jeder Prozessor ein geltend gemachtes Rücksetzsignal
detektiert 210, sendet 220 er eine BSP-Nachricht mit der
eigenen Prozessor-ID an alle Prozessoren mit Prozessor-IDs mit einem
niedrigeren Wert, wie z. B. alle Prozessoren mit niedrigerer Nummer
oder LNPs. In einem System 100 mit acht Prozessoren sendet der
Prozessor 110(3) zum Beispiel eine BSP-Nachricht an die
Prozessoren 110(2) und 110(1). Der Prozessor 110(3) sendet
keine BSP-Nachricht an die Prozessoren 110(4) bis 110(8).
-
Der Prozessor wartet 230 danach
auf eine antwortende Nachricht von einem LNP. Wenn keine antwortende
Nachricht empfangen 230 wird, fährt der Prozessor so fort,
als wäre
er der Prozessor mit der niedrigsten Nummer, der in dem System arbeitet,
wobei sich der Prozessor selbst als BSP kennzeichnet 250.
Andererseits zeigt der Empfang 230 einer Antwortnachricht
von einem LNP an, dass der Prozessor 110 nicht der Prozessor
mit dem niedrigsten Wert in dem System ist, woraufhin er seinen
Anspruch auf den BSP-Status aufgibt 240.
-
Durch Senden von BSP-Nachrichten
nicht nur an die Prozessoren mit niedrigeren Nummern, ist es bei
dem Verfahren 200 nicht erforderlich, dass die Gesamtanzahl
der Prozessoren in dem System bekannt sein muss. Dies ermöglicht es,
dass zusätzliche
Prozessoren 110 dem MPS 100 hinzugefügt werden
können,
ohne dass eine Änderung
des Bootvorgangs erforderlich ist. Jeder Prozessor muss ferner nur
antworten, wenn er eine Nachricht von einem Prozessor mit einer
höheren
ID-Nummer empfängt, d.
h. einem Prozessor mit höherer
Nummer oder HNP.
-
Wie dies vorstehend festgestellt
worden ist, handelt es sich bei den bei der Auswahl des BSP aus den
Prozessoren 110 für
gewöhnlich
um Nachrichten auf Unterbrechungsbasis. Diese Nachrichten werden vorzugsweise über den
Systembus 120 anstatt über einen
langsameren, dedizierten Unterbrechungsbus übermittelt. In einem Ausführungsbeispiel
der Erfindung erzeugt jeder funktionale Prozessor eine Boot-IPI
(BIPI) an jeden LNP, wenn er einen Rücksetzstift detektiert. In
dem offenbarten Ausführungsbeispiel
des MPS 100 erzeugt jeder Prozessor 110 eine BIPI,
indem ein Unterbrechungsbefehl an den Unterbrechungszufuhrbereich 114 des
E/A-Adressblocks 118 geschrieben wird. Die BIPIs und andere IPI-Nachrichten
werden über
den Systembus 120 übertragen
und jeder Prozessor liest ein Identitätsfeld in der Nachricht, um
zu bestimmen, ob es sich um das Ziel handelt.
-
In folgendem Bezug auf die Abbildung
aus 3A ist ein Ausführungsbeispiel
eines Unterbrechungsbefehls 310 dargestellt, das sich zur
Verwendung in der vorliegenden Erfindung eignet. In dem vorliegenden
Ausführungsbeispiel
handelt es sich bei den Feldern 312 und 314 jeweils
um Nullen, wobei das Feld 318 eine Basisadresse für den Prozessor-E/A-Block anzeigt, und
wobei die Felder 320 und 324 die ID und die erweiterte
ID (EID) des Prozessors anzeigen, an welche die IPI gerichtet ist.
In einem Mehrprozessorsystem mit 32 Prozessoren, die in 8 Clustern
mit jeweils 4 Prozessoren angeordnet sind, zeigt zum Beispiel das
Basisadressfeld 318 eine Basisadresse in dem E/A-Adressraum
an, der dem Cluster zugeordnet ist, in dem sich der Zielprozessor befindet,
und wobei die ID- und EID-Felder 320, 324 entsprechend
einen Versatz von der Basisadresse 318 vorsehen, die dem
Zielprozessor zugeordnet ist. Wenn di IPI an dem Systembus 120 erzeugt
wird, liest jeder Prozessor 110 in einem Ausführungsbeispiel
der Erfindung die Felder 318, 320 und 324,
um zu bestimmen, ob es sich um den vorgesehenen Empfänger handelt.
-
Die zum Erzeugen der IPI verwendeten
Daten werden in einem durch die Abbildung aus 3B angezeigten Format gespeichert. In
diesem Ausführungsbeispiel
besteht das Feld 330 ausschließlich aus Nullen, wobei die
Felder 334 und 338 reserviert sind. Das Feld 340 zeigt
einen Auslösemodus
(TM) für
die Unterbrechung an, wobei das Feld 344 den Zufuhrmodus
(DM) für
die Unterbrechung anzeigt, und wobei das Feld 350 die Art
der übermittelten
Unterbrechung identifiziert. Der Auslösemodus einer Unterbrechung
(Feld 340) zeigt an, ob die Unterbrechung durch eine Flanke
oder einen Wert an dem entsprechenden Prozessorstift eingeleitet
wird. Der Zufuhrmodus einer Unterbrechung (Feld 344) zeigt an,
wie sich die lokalen Unterbrechungssteuerungen 112 nach
dem Empfang der IP verhalten sollen. In einem Ausführungsbeispiel
der Erfindung kann die Unterbrechung durch Geltendmachung einer
Unterbrechung (INTR), einer nicht-maskierbaren Unterbrechung (NMI),
einer Prozessorverwaltungsunterbrechung (PMI) oder eines Initialisierungsstiftes
(INIT) an dem Zielprozessor signalisiert werden.
-
Die Abbildung aus 3B zeigt ferner ein Ausführungsbeispiel
des Felds 350, das sich zur Spezifizierung der Art der übermittelten
Unterbrechung eignet. In dem vorliegenden Ausführungsbeispiel zeigt ein Ein-Bit-Feld
an Bit 7 an, ob es sich bei der Nachricht (MSG) um eine BSP-Nachricht
handelt. Zum Beispiel kann das Bit 7 auf 1 gesetzt werden, so dass
eine BSP-Nachrichtenart angezeigt wird, und wobei es auf Null gesetzt
werden kann, um alle anderen Nachrichtenarten anzuzeigen. Die Bits
2 bis 6 werden zum Anzeigen der ID-Nummer des Prozessors verwendet,
der die Nachricht sendet. Das Zwei-Bit-Feld an den Bits 0 und 1 zeigt einen
Untertyp für
die Nachricht an. Zum Beispiel kann es sich bei einer BSP-Nachricht um eine
BSP-Auswahlnachricht (00), eine BSP-Stoppnachricht (01) oder Nachricht über einen
ausgewählten
BSP (10) handeln. Eine BSP-Auswahlnachricht ist die Nachricht, die
von einem Prozessor (Quellprozessor) an alle Prozessoren mit niedrigerer
Nummer gesendet wird, wenn es die Geltendmachung einer Rücksetzung
detektiert. Ein Prozessor, der eine BSP-Auswahlnachricht von einem Prozessor
mit höherer
Nummer empfängt, antwortet
mit einer BSP-Stoppnachricht, um dem Quellprozessor anzuzeigen,
dass ein Prozessor mit niedrigerer Nummer vorhanden ist, und folglich
handelt es sich bei dem Quellprozessor nicht um den BSP. Eine BSP-Auswahlnachricht
wird von dem Prozessor gesendet, der als Prozessor mit der niedrigsten
(niedrigster Wert) Prozessor-ID bestimmt worden ist, um den Prozessoren
anzuzeigen, dass es sich um den BSP handelt.
-
Ein Prozessor bestimmt, dass keine
Prozessoren mit niedrigerer Nummer für die Funktion als BSP zur
Verfügung
stehen, wenn dieser keine BSP-Stoppnachricht von einem Prozessor
mit niedrigerer Nummer empfängt.
In einem Ausführungsbeispiel
der Erfindung wartet ein Prozessor über einen ausgewählten Zeitraum
auf eine derartige Nachricht, nachdem er seine BSP-Auswahlnachricht(en)
gesendet hat. Wenn der Zeitraum abläuft, bevor eine Antwortnachricht
empfangen worden ist, sendet der Prozessor eine BSP-Auswahlnachricht
an alle anderen Prozessoren, wodurch angezeigt wird, dass die BSP-Auswahl
abgeschlossen ist und er sich selbst als BSP-Prozessor identifiziert.
In einem Ausführungsbeispiel
der vorliegenden Erfindung werden Unterbrechungsbehandlungsroutinen
für Bootroutinen,
einschließlich
zur Erzeugung verschiedener BSP-Nachrichten
verwendeter Routinen, an Eintrittspunkten, die durch das Feld 350 angezeigt
werden, in dem nichtflüchtigen
Speicher 140 gespeichert.
-
Das Verfahren 200 ist nicht
auf die offenbarten Konfigurationen der Unterbrechungssteuerung 112,
der Register 190 oder Befehle 310 begrenzt, vielmehr
kann es unter Verwendung einer Vielzahl von Hardware für die Nachrichtenbehandlung
und Nachrichtenformaten implementiert werden.
-
In folgendem Bezug auf die Abbildung
aus 4 ist ein detailliertes
Flussdiagramm eines BSP-Verfahrens 400 dargestellt, einschließlich eines Verfahrens
zur Auswahl eines BSP gemäß der vorliegenden
Erfindung. Das Verfahren 400 wird durch jeden Prozessor
in einem MPS implementiert, der als BSP gekennzeichnet werden kann.
Das Verfahren 400 wird eingeleitet, wenn ein Zurücksetzen
detektiert wird 410. Wenn das Zurücksetzen als Kaltstart bestimmt
worden ist 414, wie z. B. ein Kaltstart, der beim ersten
Einschalten des Systems erzeugt wird, so wird ein BIST ausgeführt 417,
um sicherzustellen, dass der Prozessor ordnungsgemäß arbeitet.
Der Prozessor gilt als ungeeignet 422 für den Betrieb als BSP, wenn
der BIST anzeigt 420, dass der Prozessor nicht vollständig funktionsfähig ist.
Ein Prozessor, der seinen BIST erfolgreich ausführt, beginnt mit der erforderlichen
Nachrichtenweiterleitungsfolge für
die Auswahl eines BSP mit dem Schritt 424. Wenn ein Warmstart
detektiert wird 414, der anzeigt, dass das System bereits
eingeschaltet ist, ist es für gewöhnlich nicht
erforderlich, den BIST auszuführen,
und der Prozessor springt direkt zu dem Zustand 424.
-
Der Prozessor bestimmt 424 seine
Prozessor-Kennnummer, um sich selbst in den eigenen BSP-Nachrichten
bei anderen Prozessoren zu identifizieren sowie zu bestimmen, welcher
der anderen Prozessoren dessen BSP-Auswahlnachrichten empfängt. Im
Besonderen sendet der Prozessor in dem Schritt 428 eine
BSP-Auswahlnachricht
an jeden Prozessor in dem System mit einer Prozessor-Kennnummer,
die niedriger ist als die eigene Prozessor-Kennnummer. In dem offenbarten
Ausführungsbeispiel
der Erfindung verwendet der Prozessor 110 eine lokale Unterbrechungssteuerung 112 zur
Behandlung der Nachrichtenweiterleitung über den Systembus 120,
gesteuert durch die in dem nichtflüchtigen Speicher 140 gespeicherten
Routinen.
-
Zusätzlich zu dem enden 428 von
BSP-Auswahlnachrichten an Prozessoren mit niedrigerer Nummer, prüft 430 der
Prozessor Auswahlnachrichten von HNPs und sendet 434 auf
diese Weise eine Stoppnachricht an alle HNPs. Der Prozessor sucht 438 ferner
nach Nachrichten, die von LNPs als Reaktion auf die Auswahlnachricht
des Prozessors gesendet werden, wie z. B. eine Stoppnachricht von
einem LNP. Wenn ein LNP antwortet 438, handelt es sich bei
dem Prozessor nicht um den Prozessor mit der niedrigsten Nummer
in dem System und er gibt seinen Anspruch auf den BSP-Status auf 450.
Wenn keine LNP-Nachricht empfangen wird, überprüft 440 der Prozessor
einen Intervalltimer, um zu bestimmen, ob ein ausgewählter Zeitraum
abgelaufen ist. Wenn dieser nicht abgelaufen ist, sucht der Prozessor
weiter nach Nachrichten von HNPs (Zustand 430) und LNPs
(Zustand 438). Wenn der Zeitraum abgelaufen ist 440,
sendet der Prozessor eine Nachricht über einen ausgewählten BSP
an alle Prozessoren, wobei er sich selbst als BSP identifiziert.
-
In folgendem Bezug auf die Abbildungen
der 5A bis 5F sind die Schritte der
BSP-Auswahl gemäß der vorliegenden
Erfindung für
eine Gruppe von acht Prozessoren (PO bis P7) dargestellt. In diesem Beispiel
wird die BSP-Auswahl eingeleitet, wenn der aktuelle BSP (PO) einen
Fehler aufweist, und P3 sendet BSP-Auswahlnachrichten an LNPs P2,
P1 und PO (5A). Da P2
und P1 niedrigere Kennnummern als P3 aufweisen und aktuell funktionsfähig sind,
antworten sie auf P3 mit Stoppnachrichten (5B). P2 sendet Auswahlnachrichten an
die LNPs P1 und PO (5C)
und P1 antwortet mit einer Stoppnachricht (5D). Da PO nicht mehr funktionstüchtig ist,
ruft die Auswahlnachricht von P1 an PO keine Antwort hervor (5E) und P1 sendet eine BSP-Auswahlnachricht,
um die Prozessoren darüber
zu informieren, dass es sich um den neuen BSP handelt (5F).
-
Hiermit wird festgestellt, dass das
Zuweisungsschema aus den Abbildungen der 5A bis 5F den
Systembus den Prozessoren PO bis P7 in fallender Reihenfolge ihrer
Prozessor-IDs zuweist. Dabei handelt es sich um ein Round-Robin-Zuweisungsschema,
das häufig
in SMP-Systemen eingesetzt wird, wobei die vorliegende Erfindung
aber auch mit einer Vielzahl anderer Zuweisungsschemata eingesetzt
werden kann. In dem offenbarten Beispiel hat P3 die Nachrichtenweiterleitung
eingeleitet, da der Prozessor in der Round-Robin-Rotation als nächstes an
der Reihe gewesen ist.
-
Der in den Abbildungen der 4 und 5 veranschaulichte BSP wurde unter Verwendung
spezifischer Nachrichtenarten beschrieben, wie z. B. BSP-Auswahl,
Stopp- und ausgewählte Nachrichten, wobei
er jedoch nicht auf diese Nachrichten beschränkt ist. Zum Beispiel kann
zur Implementierung der vorliegenden Erfindung eine Art von Quittungsaustauschprotokoll
verwendet werden, dass es Prozessoren in einem MPS ermöglicht,
den Prozessor mit der niedrigsten Nummer zu identifizieren, der
gegenwärtig
funktionsfähig
ist.
-
Die vorliegende Erfindung wurde für die Situation
beschrieben, in der das BSP-Auswahlverfahren für Kalt- und Warmstarts identisch
ist. Dieses Verfahren ist zwar verhältnismäßig effizient, allerdings ist
es wahrscheinlich langsamer als die Designierung eines Standardprozessors
als BSP, da der letztgenannte Ansatz die Schritte der Nachrichtenweiterleitung
der Verfahren 200 und 400 eliminiert. Die einfache
Designierung eines BSP-Prozessors reicht alleine jedoch nicht aus,
da der designierte BSP einen Fehler aufweisen kann, wobei in diesem
Fall ein flexibles Verfahren erforderlich ist, um einen neuen BSP
auszuwählen.
-
In folgendem Bezug auf die Abbildung
aus 6 ist ein Ausführungsbeispiel
der vorliegenden Erfindung dargestellt, das eine flexible BSP-Auswahl mit
einer Standardkennzeichnung des BSP kombiniert. In diesem Ausführungsbeispiel
beginnt ein Verfahren 600, wenn ein Zurücksetzen detektiert 610 wird
und fährt
mit der Bestimmung 614 fort, ob es sich dabei um einen
Kaltstart, d. h. der beim Einschalten des Systems erzeugt wird,
oder einen Warmstart, d. h. der bei bereits eingeschaltetem System
erzeugt worden ist, gehandelt hat. Wenn bestimmt 614 worden
ist, dass es sich bei dem Zurücksetzen
um einen Kaltstart gehandelt hat, wird ein Standardprozessor als
BSP designiert. Dies kann zum Beispiel durch Speichern der Prozesor-ID
des designierten BSP an einem nichtflüchtigen Speicherplatz und Lesen
der ID beim Detektieren eines Kaltbootvorgangs erfolgen. Zu Beginn
kann es sich bei dem designierten BSP um den Prozessor an einer ausgewählten Position
(Prozessor-Slot) der Systemlogik 116 handeln.
-
Wenn bestimmt 614 wird,
dass ein Warmstart erfolgt ist, wird der BSP durch das Nachrichtenweiterleitungsverfahren
aus den Abbildungen der 2 und 4 ausgewählt 630. Das heißt, jeder
Prozessor sendet BSP-Auswahlnachrichten an alle LNPs (in Bezug auf
das Senden der Prozessorkennnummern), und alle zu diesem Zeitpunkt
funktionsfähigen
LNPs antworten mit BSP-Stoppnachrichten. Konstruktionsbedingt
empfängt
der aktuell funktionstüchtige
Prozessor mit der niedrigsten Nummer keine BSP-Stoppnachricht, und
nach einem Timeout-Intervall benachrichtigt der Prozessor die anderen
Prozessoren über
ihren Status übe
eine BSP-Auswahlnachricht. Nachdem der BSP ausgewählt worden
ist, wird er in dem Schritt 634 als Standard-BSP designiert,
indem dessen Prozessorkennnummer an dem designierten nichtflüchtigen
Speicherplatz gespeichert wird. In dem Schritt 640 beendet
der BSP, entweder der Standardprozessor oder der durch die Nachrichtenweiterleitung
(Schritt 630) ausgewählte Prozessor,
den Startvorgang und kehrt zurück
zu dem Zustand 610.
-
Das Ausführungsbeispiel des Verfahrens 600 nimmt
an, dass ein Warmstart bedeutet, dass der aktuelle BSP einen Fehler
aufgewiesen hat, und wobei die Nachrichtenweiterleitung eingesetzt
wird, um einen neuen BSP zu identifizieren. Allerdings werden nicht
alle Warmstarts durch einen Fehler des BSP verursacht. In einem
alternativen Ausführungsbeispiel
des Verfahrens 600 (angezeigt durch gestrichelte Linien)
wird dies durch das Hinzufügen
eines zusätzlichen
Tests (Schritt 620) vor der Implementierung der Nachrichtenweiterleitung berücksichtigt.
Im Besonderen bestimmt 620 das alternative Ausführungsbeispiel
des Verfahrens 600 ob der Warmstart durch einen Fehler
des BSP verursacht worden ist. Wenn dies nicht der Fall ist, wird
der Standard-BSP erneut als BSP designiert 618. In diesem
Fall springt das Verfahren 600 zu dem Schritt 630 und
folgenden, um einen neuen BSP aus den verbleibenden funktionstüchtigen
Prozessoren auszuwählen.
-
Das Verfahren zur Auswahl des BSP
gemäß der vorliegenden
Erfindung ist leicht skalierbar, teilweise aufgrund der Tatsache,
das jeder Prozessor mit Prozessoren mit niedrigeren Nummern kommuniziert.
Die erfindungsgemäße Skalierbarkeit
geht teilweise auch darauf zurück,
dass das Verfahren auf hierarchische Art und Weise auf Prozessor-Cluster, Cluster
von Prozessor-Clustern, etc. angewandt werden kann. Zum Beispiel
können
große
Systeme auf Mehrprozessorbasis Hunderte von Prozessoren aufweisen,
die in Clustern angeordnet sind. In diesen Systemen können die
Cluster selbst wiederum in Gruppen von Clustern angeordnet werden.
Zum Beispiel kann ein Mehrprozessorsystem mit 200 Prozessoren in
25 Gruppen von Prozessor-Clustern organisiert werden, wobei jedes
Cluster jeweils 8 Prozessoren umfasst. Große Systeme können die
Cluster-Gruppen ferner in Supergruppen anordnen, dies zur Koordination
der Systemoperationen erforderlich ist.
-
In diesen sehr großen Systemen
wird ein BSP für
jede Gruppierung unter Verwendung der Verfahren aus den Abbildungen
der 2 und 4 ausgewählt. In dem vorstehend vorgesehenen
Beispiel wird ein Cluster-BSP-Prozessor für jedes Cluster mit 8 Prozessoren
ausgewählt.
Die resultierenden 25 Cluster-Prozessoren
tauschen danach BSP-Nachrichten gemäß den Verfahren 200, 400 und 600 aus. Auf
diese Weise werden die Cluster zum Beispiel unter Verwendung des
Basisadressenfelds
318 aus 3A identifiziert.
Jeder Cluster-BSP sendet eine Nachricht an den Cluster-BSP jedes
Clusters mit niedrigerer Nummer (EID mit niedrigerer Nummer) und
wartet auf eine Antwortnachricht. Der Cluster-BSP, der keine Stopp-BSP-Nachricht empfängt, ist
der BSP für
das System insgesamt. Wie dies bereits vorstehend im Text ausgeführt worden
ist, kann dieses Verfahren leicht so angepasst werden, dass es zusätzliche
Konfigurationen und Hierarchien von Prozessoren in Mehrprozessorsystemen
einschließt.
-
In folgendem Bezug auf die Abbildung
aus 7 ist ein Verfahren
zur Auswahl eines BSP aus den Prozessoren eines Mehrprozessorsystems
dargestellt, das in einer Mehrzahl lokaler Gruppen von Clustern
organisiert ist. Wenn ein Zurücksetzen
detektiert wird 710, wird für jedes Cluster unter Verwendung
des erfindungsgemäßen Verfahrens
ein BSP ausgewählt 720.
Nachdem ein BSP für
jedes Cluster ausgewählt
worden ist, wird ein lokaler Gruppen-BSP für die lokale Cluster-Guppe
ausgewählt 730,
erneut unter Verwendung des erfindungsgemäßen Verfahrens. Wenn ein lokaler
Gruppen-BSP für
jede lokale Cluster-Gruppe ausgewählt worden ist, wird ein System-BSP
gemäß der vorliegenden
Erfindung aus den lokalen Gruppen-BSPs ausgewählt 740. Das Verfahren 700 ist
eindeutig auf hierarchische Strukturen mit zusätzlichen Organisationsebenen
erweiterbar.
-
Vorgestellt wurden somit ein System
und ein Verfahren zur Auswahl eines Bootprozessors aus den Prozessoren
eines Mehrprozessorsystems. Wenn ein Rücksetzereignis eintritt, sendet
jeder Prozessor eine Auswahlnachricht an alle Prozessoren in dem
System mit niedrigerer Nummer (oder in dem jeweiligen lokalen System,
wenn das System hierarchisch organisiert ist). Wenn der Prozessor
keine Antwort von einem Prozessor mit niedrigerer Nummer empfängt, designiert
er sich selbst als BSP und sendet eine Nachricht, die seinen Status
anzeigt, an alle Prozessoren in dem System.
-
Die vorliegende Erfindung wurde vorstehend in
Bezug auf ein bestimmtes System (1)
und bestimmte Nachrichtenarten (3A, 3B, 4 und 5)
beschrieben. Die Beschreibungen dienen ausschließlich als Beispiele und schränken die
Erfindung nicht ein. Der von der vorliegenden Offenbarung profitierende
Fachmann erkennt mögliche
Abänderungen des
offenbarten Verfahrens und Systems, die gemäß dem Umfang der anhängigen Ansprüche möglich sind.