DE69819347T2 - Bootstrap prozessorauswahl in einem multiprozessorsystem - Google Patents

Bootstrap prozessorauswahl in einem multiprozessorsystem Download PDF

Info

Publication number
DE69819347T2
DE69819347T2 DE69819347T DE69819347T DE69819347T2 DE 69819347 T2 DE69819347 T2 DE 69819347T2 DE 69819347 T DE69819347 T DE 69819347T DE 69819347 T DE69819347 T DE 69819347T DE 69819347 T2 DE69819347 T2 DE 69819347T2
Authority
DE
Germany
Prior art keywords
processor
boot
message
processors
bsp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69819347T
Other languages
English (en)
Other versions
DE69819347D1 (de
Inventor
Muthurajan Jayakumar
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE69819347D1 publication Critical patent/DE69819347D1/de
Application granted granted Critical
Publication of DE69819347T2 publication Critical patent/DE69819347T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multi Processors (AREA)

Description

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

Claims (20)

  1. Verfahren zur Auswahl eines Bootprozessors in einem Mehrprozessorsystem, wobei das Verfahren die folgenden Schritte umfasst: Detektieren eines Rücksetzzustands (210); Senden (220) einer Bootnachricht an Prozessoren mit Prozessorkennungen mit niedrigerem Wert; und Betrieb (250) als Bootprozessor, wenn keine antwortende Nachricht von einem Prozessor mit einer Prozessorkennung mit niedrigerem Wert empfangen (230) wird.
  2. Verfahren nach Anspruch 1, wobei der Schritt des Detektierens die folgenden Teilschritte umfasst: Detektieren eines Bootzustands; Abrufen einer Prozessorkennnummer.
  3. Verfahren nach Anspruch 2, wobei das Verfahren den zusätzlichen Schritt des Einstellens des Wertes der Prozessorkennung gemäß der abgerufenen Prozessorkennnummer umfasst.
  4. Verfahren nach Anspruch 1, wobei der Schritt des Sendens die folgenden Teilschritte umfasst: Abrufen einer Bootroutine aus einer nichtflüchtigen Speichervorrichtung; und Ausführen einer Bootroutine zum Senden von Bootnachrichten an Prozessoren mit Prozessorkennungen mit niedrigerem Wert.
  5. Verfahren nach Anspruch 1, wobei der Bootzustand einen Neustartzustand darstellt, und wobei das Verfahren den zusätzlichen Schritt des Kennzeichnens eines ausgesuchten Prozessors als Bootprozessor umfasst, wenn das Mehrprozessorsystem das erste Mal gestartet wird.
  6. Verfahren nach Anspruch 5, wobei der Schritt des Kennzeichnens die folgenden Teilschritte umfasst: Abrufen einer Prozessorkennung aus einem nichtflüchtigen Speicherplatz; und Verwenden der abgerufenen Prozessorkennung zur Kennzeichnung des Bootprozessors.
  7. Verfahren nach Anspruch 6, wobei das Verfahren den zusätzlichen Schritt des Schreibens der Kennung des Prozessors umfasst, der als Bootprozessor in einem nichtflüchtigen Speicherplatz arbeitet.
  8. Verfahren nach Anspruch 1, wobei das Verfahren die folgenden zusätzlichen Schritte umfasst: Detektieren einer Bootnachricht von einem Prozessor mit einer Kennung mit höherem Wert; und Senden einer Nachricht an den Prozessor mit der Kennung mit höherem Wert, welche anzeigt, dass es sich nicht um den Bootprozessor handelt.
  9. Verfahren nach Anspruch 1, wobei der Schritt des Betriebs die folgenden Teilschritte umfasst: Senden einer Nachricht, die den Bootprozessor durch die Prozessorkennung identifiziert; und Abschließen des Bootprozesses für das Mehrprozessorsystem.
  10. Speichermedium, auf dem Daten zur Ausführung durch einen Prozessor in einem Mehrprozessorsystem gespeichert werden, wobei die ausgeführten Daten ein Verfahren zur Auswahl eines Bootprozessors implementieren, wobei das Verfahren die folgenden Schritte umfasst: Bestimmen einer Prozessorkennung; Senden einer Bootnachricht an alle Prozessoren mit einer Prozessorkennung mit niedrigerem Wert; und Betrieb als Bootprozessor, wenn keine antwortende Nachricht von den Prozessoren mit einer Prozessorkennung mit niedrigerem Wert empfangen wird.
  11. Speichermedium nach Anspruch 10, wobei der Schritt des Bestimmens, der durch die ausgeführten Daten implementiert wird, die folgenden Teilschritte umfasst: Überwachen einer Eingabe zur Bestimmung einer Prozessorkennnummer; und Einstellen des Wertes der Prozessorkennung gemäß der Prozessorkennnummer.
  12. Speichermedium nach Anspruch 10, wobei der durch die ausgeführten Daten implementierte Schritt des Betriebs die folgenden Teilschritte umfasst: Warten über einen ausgewählten Zeitraum auf eine Antwort von einem Prozessor mit niedrigerem Wert; und Senden einer durch den Bootprozessor ausgesuchten Nachricht, wenn keine Antwort innerhalb des ausgewählten Zeitraums empfangen wird.
  13. Speichermedium nach Anspruch 10, wobei das durch die ausgeführten Daten implementierte Verfahren die folgenden zusätzlichen Schritte umfasst: Detektieren einer Bootnachricht von einem Prozessor mit einer Prozessorkennung mit höherem Wert; und Senden einer Nachricht an den Prozessor, die anzeigt, dass es sich nicht um den Bootprozessor handelt.
  14. Speichermedium nach Anspruch 10, wobei der durch die ausgeführten Daten implementierte Schritt des Betriebs die folgenden Teilschritte umfasst: Senden einer Nachricht an die Prozessoren des Mehrprozessorsystems, wodurch sie sich selbst als Bootprozessor identifizieren; und Abschließen des Bootprozesses für das Mehrprozessorsystem.
  15. Verfahren nach Anspruch 1, wobei der Schritt des Betriebs den folgenden Teilschritt umfasst: Senden einer ausgewählten Bootprozessornachricht an alle anderen Prozessoren in dem System, wenn keine antwortende Nachricht von einer Prozessorkennung mit niedrigerem Wert empfangen wird.
  16. Verfahren nach Anspruch 15, wobei der Schritt des Sendens die folgenden Teilschritte umfasst: Warten über einen ausgewählten Zeitraum auf eine Nachricht von einem Prozessor mit einer Prozessorkennung mit niedrigerem Wert; und Selbstidentifikation an dem Mehrprozessorsystem als Bootprozessor, wenn keine Nachricht von einem Prozessor mit einer Prozessorkennung mit niedrigerem Wert vor Ablauf des ausgewählten Intervalls empfangen wird.
  17. Mehrprozessorsystem, das folgendes umfasst: eine Mehrzahl von Prozessoren, die jeweils eine Prozessorkennung aufweisen; einen Bus, der mit der Mehrzahl von Prozessoren gekoppelt ist; und eine Speichervorrichtung, die mit dem Bus gekoppelt ist und Befehle speichert, die, wenn sie durch einen der Prozessoren ausgeführt werden, eine Bootnachricht an jeden Prozessor mit einer Prozessorkennung mit niedrigerem Wert senden und den Prozessor als Bootprozessor kennzeichnen, wenn keine antwortende Nachricht von einem Prozessor mit einer Prozessorkennung mit niedrigerem Wert empfangen wird.
  18. Verfahren nach Anspruch 1, wobei der Schritt des Sendens den folgenden Teilschritt umfasst: Senden einer Auswahlnachricht an jeden Prozessor mit einer Prozessorkennung mit niedrigerem Wert; und Senden einer Stoppnachricht an jeden Prozessor mit einer Prozessorkennung mit einem höheren Wert, von dem eine Auswahlnachricht empfangen wird.
  19. Verfahren nach Anspruch 18, wobei das Verfahren den zusätzlichen Schritt des Betriebs als Bootprozessor umfasst, wenn keine Stoppnachricht empfangen wird.
  20. Verfahren nach Anspruch 19, wobei der Schritt des Betriebs als Bootprozessor die folgenden Teilschritte umfasst Senden einer Auswahlnachricht an alle Prozessoren, welche den Bootprozessor durch die zugeordnete Prozessorkennung bezeichnen; und Booten des Systems.
DE69819347T 1997-07-31 1998-07-28 Bootstrap prozessorauswahl in einem multiprozessorsystem Expired - Fee Related DE69819347T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/904,109 US5904733A (en) 1997-07-31 1997-07-31 Bootstrap processor selection architecture in SMP systems
US904109 1997-07-31
PCT/US1998/015537 WO1999006908A1 (en) 1997-07-31 1998-07-28 Bootstrap processor architecture selection in a multiprocessor system

Publications (2)

Publication Number Publication Date
DE69819347D1 DE69819347D1 (de) 2003-12-04
DE69819347T2 true DE69819347T2 (de) 2004-07-22

Family

ID=25418572

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69819347T Expired - Fee Related DE69819347T2 (de) 1997-07-31 1998-07-28 Bootstrap prozessorauswahl in einem multiprozessorsystem

Country Status (5)

Country Link
US (2) US5904733A (de)
EP (1) EP1010062B1 (de)
AU (1) AU8594498A (de)
DE (1) DE69819347T2 (de)
WO (1) WO1999006908A1 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5904733A (en) * 1997-07-31 1999-05-18 Intel Corporation Bootstrap processor selection architecture in SMP systems
US6122677A (en) * 1998-03-20 2000-09-19 Micron Technology, Inc. Method of shortening boot uptime in a computer system
US6158000A (en) * 1998-09-18 2000-12-05 Compaq Computer Corporation Shared memory initialization method for system having multiple processor capability
US6336185B1 (en) * 1998-09-24 2002-01-01 Phoenix Technologies Ltd. Use of other processors during BIOS boot sequence to minimize boot time
US6601165B2 (en) * 1999-03-26 2003-07-29 Hewlett-Packard Company Apparatus and method for implementing fault resilient booting in a multi-processor system by using a flush command to control resetting of the processors and isolating failed processors
US6453426B1 (en) * 1999-03-26 2002-09-17 Microsoft Corporation Separately storing core boot data and cluster configuration data in a server cluster
US6401120B1 (en) * 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
US7774469B2 (en) * 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US6594756B1 (en) * 1999-09-08 2003-07-15 Intel Corporation Multi-processor system for selecting a processor which has successfully written it's ID into write-once register after system reset as the boot-strap processor
US6662219B1 (en) 1999-12-15 2003-12-09 Microsoft Corporation System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource
US6611911B1 (en) * 1999-12-30 2003-08-26 Intel Corporation Bootstrap processor election mechanism on multiple cluster bus system
US7076551B2 (en) * 2000-04-03 2006-07-11 Texas Instruments Incorporated Using remote procedure calls to manage co-processor resources
US6584560B1 (en) * 2000-04-19 2003-06-24 Dell Usa, L.P. Method and system for booting a multiprocessor computer
US6766474B2 (en) * 2000-12-21 2004-07-20 Intel Corporation Multi-staged bios-based memory testing
US20020087828A1 (en) * 2000-12-28 2002-07-04 International Business Machines Corporation Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors
US6760838B2 (en) * 2001-01-31 2004-07-06 Advanced Micro Devices, Inc. System and method of initializing and determining a bootstrap processor [BSP] in a fabric of a distributed multiprocessor computing system
US6925556B2 (en) * 2001-02-14 2005-08-02 Intel Corporation Method and system to determine the bootstrap processor from a plurality of operable processors
US7251723B2 (en) * 2001-06-19 2007-07-31 Intel Corporation Fault resilient booting for multiprocessor system using appliance server management
US20040235550A1 (en) * 2001-07-20 2004-11-25 Mcnally Gordon Game device
GB0328153D0 (en) * 2003-12-04 2004-01-07 Electronic Game Card Ltd An electronic game device
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US7350063B2 (en) * 2002-06-11 2008-03-25 Intel Corporation System and method to filter processors by health during early firmware for split recovery architecture
US7065641B2 (en) * 2002-06-13 2006-06-20 Intel Corporation Weighted processor selection apparatus and method for use in multiprocessor systems
US7100034B2 (en) * 2003-05-23 2006-08-29 Hewlett-Packard Development Company, L.P. System for selecting another processor to be the boot strap processor when the default boot strap processor does not have local memory
TW591538B (en) * 2003-07-25 2004-06-11 Via Tech Inc Process for loading operating system
FR2862397A1 (fr) * 2003-11-13 2005-05-20 St Microelectronics Sa Demarrage securise d'un appareil electronique a architecture smp
US7222200B2 (en) * 2004-10-14 2007-05-22 Dell Products L.P. Method for synchronizing processors in SMI following a memory hot plug event
US20060156291A1 (en) * 2005-01-12 2006-07-13 Dell Products L.P. System and method for managing processor execution in a multiprocessor system
US7702889B2 (en) * 2005-10-18 2010-04-20 Qualcomm Incorporated Shared interrupt control method and system for a digital signal processor
US7984281B2 (en) * 2005-10-18 2011-07-19 Qualcomm Incorporated Shared interrupt controller for a multi-threaded processor
US7600109B2 (en) * 2006-06-01 2009-10-06 Dell Products L.P. Method and system for initializing application processors in a multi-processor system prior to the initialization of main memory
US7702893B1 (en) * 2006-09-22 2010-04-20 Altera Corporation Integrated circuits with configurable initialization data memory addresses
EP2083532B1 (de) 2008-01-23 2013-12-25 Comptel Corporation Konvergentes Vermittlungssystem mit verbesserter Datenübertragung
EP2107464A1 (de) * 2008-01-23 2009-10-07 Comptel Corporation Konvergentes Vermittlungssystem mit dynamischer Ressourcenzuweisung
US8954721B2 (en) 2011-12-08 2015-02-10 International Business Machines Corporation Multi-chip initialization using a parallel firmware boot process
CN103164234A (zh) * 2011-12-13 2013-06-19 鸿富锦精密工业(深圳)有限公司 双处理器切换装置
US9658861B2 (en) * 2011-12-29 2017-05-23 Intel Corporation Boot strap processor assignment for a multi-core processing unit
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9588572B2 (en) 2013-08-28 2017-03-07 Via Technologies, Inc. Multi-core processor having control unit that generates interrupt requests to all cores in response to synchronization condition
EP3324288B1 (de) * 2016-11-21 2021-09-08 VIA Technologies, Inc. Mehrkernmikroprozessor, der einen seiner prozessorkerne dynamisch als bootstrap-prozessor bestimmt
US11113113B2 (en) 2017-09-08 2021-09-07 Apple Inc. Systems and methods for scheduling virtual memory compressors
US11010173B2 (en) * 2019-09-17 2021-05-18 Dell Products L.P. Adjusting a processing state of an information handling system from multi-socket mode to multi-single socket mode

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2111237C (en) * 1991-06-26 2002-01-15 Barry Kennedy Multiprocessor distributed initialization and self-test system
US5642506A (en) * 1994-12-14 1997-06-24 International Business Machines Corporation Method and apparatus for initializing a multiprocessor system
US5495569A (en) * 1994-12-30 1996-02-27 Compaq Computer Corp. Circuit for ensuring that a local interrupt controller in a microprocessor is powered up active
US5675772A (en) * 1995-03-23 1997-10-07 Industrial Technology Research Institute Device and method for reconfiguring a computer system with an incompatible CPU
AU5029896A (en) * 1995-03-31 1996-10-16 Intel Corporation Memory testing in a multiple processor computer system
US5758325A (en) * 1995-06-21 1998-05-26 Mark Voting Systems, Inc. Electronic voting system that automatically returns to proper operating state after power outage
US5768585A (en) * 1995-11-21 1998-06-16 Intel Corporation System and method for synchronizing multiple processors during power-on self testing
US5724527A (en) * 1995-12-28 1998-03-03 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US5860002A (en) * 1996-07-12 1999-01-12 Digital Equipment Corporation System for assigning boot strap processor in symmetric multiprocessor computer with watchdog reassignment
US5790850A (en) * 1996-09-30 1998-08-04 Intel Corporation Fault resilient booting for multiprocessor computer systems
US5862151A (en) * 1997-01-23 1999-01-19 Unisys Corporation Array self-test fault tolerant programmable threshold algorithm
US5904733A (en) * 1997-07-31 1999-05-18 Intel Corporation Bootstrap processor selection architecture in SMP systems

Also Published As

Publication number Publication date
EP1010062A1 (de) 2000-06-21
EP1010062A4 (de) 2001-11-21
US5904733A (en) 1999-05-18
US6108781A (en) 2000-08-22
EP1010062B1 (de) 2003-10-29
AU8594498A (en) 1999-02-22
WO1999006908A1 (en) 1999-02-11
DE69819347D1 (de) 2003-12-04

Similar Documents

Publication Publication Date Title
DE69819347T2 (de) Bootstrap prozessorauswahl in einem multiprozessorsystem
DE4104781C2 (de) Speicherzugriffssteuerung
DE68928311T2 (de) Fern-Urlader
DE60217394T2 (de) Methode und system zur parallelen ausführung von interrupt-routinen in einer smi- und pmi-basierten verteilungs- und ausführungsumgebung
DE69727407T2 (de) Verteilte Ausführung von modusungeeigneten Befehlen in Multiprozessorsysteme
DE3127349C2 (de)
DE69027164T2 (de) Ladeverfahren und Ladegerät für ein Rechnersystem
DE69022716T2 (de) Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür.
DE69811148T2 (de) Mitgliedschaft in einem unzuverlässigen verteilten Rechnersystem
DE4244266C2 (de) Verfahren und Schaltungseinrichtung zum dynamischen Konfigurieren von Gerätetreibern für Computersystem-Betriebsmittel
DE69219657T2 (de) Fortsetzung der Aufgabe eines fehlerhaften Prozessors von einem alternativen Prozessor
DE3856030T2 (de) Vorrichtung und Verfahren zur Durchführung von änderbarer Betriebsmittelaufteilung in einem Datenverarbeitungssystem mit zentralen Datenverarbeitungseinheiten mit verschiedenen Betriebssystemen
DE112006003598T5 (de) Fehlertolerantes Booten in Multiprozessorsystemen
DE60319125T2 (de) Integrierte schaltung mit mehreren betriebsarten
DE60318556T2 (de) Verhandlungsprotokoll für system management controller
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE69124470T2 (de) Initialisierung von Rechnersystemen
DE3485980T2 (de) Datenverarbeitungsapparat zur verbindung mit einem gemeinsamen uebertragungsbus in einem datenverarbeitungssystem.
DE112004001887B4 (de) Optimierung der SMI-Behandlung und -Initialisierung
DE2902465A1 (de) Datenverarbeitungsanordnung
DE19525013A1 (de) Multiprozessorsystem
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2612139A1 (de) Ein/ausgang-steuerungssystem
DE2750721A1 (de) Ein/ausgabe-system
DE4026911A1 (de) Computersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806

8339 Ceased/non-payment of the annual fee