-
GEBIET DER
ERFINDUNG
-
Die vorliegende Erfindung betrifft
allgemein das Gebiet der Computersysteme auf Mikroprozessorbasis.
Im Besonderen betrifft die vorliegende Erfindung ein verbessertes
Mehrprozessorsystem zur Behandlung der Unterbrechungsanforderungen.
-
STAND DER
TECHNIK
-
Auf dem Gebiet der Mikroprozessoren
handelt es sich bei Unterbrechungen um Ereignisse, die während der
Befehlsverarbeitung auftreten, wobei bewirkt wird, dass die Ablaufsteuerung
zu einer Unterbrechungsbehandlungsroutine geleitet wird. Während des
Ablaufs werden bestimmte Prozessorzustandsinformationen automatisch
durch die Hardware gespeichert, die sich normalerweise auf der gleichen
integrierten Schaltung befindet wie die Zentraleinheit (CPU). Nach
Abschluss der Unterbrechungsverarbeitung wird ein "Rücksprung von der Unterbrechung" ausgeführt, wobei
der gespeicherte Prozessorzustand wiederhergestellt wird, wobei
die Ausführung
ab dem Unterbrechungsbefehl fortfährt. Jedes komplexe Computersystem
weist eine gewisse Art eines Mechanismus für den Umgang mit Unterbrechungen
auf.
-
In der Vergangenheit mussten sich
kleine Computer auf der Basis der beliebten Mikroprozessoren i386
und i486 nicht mit Unterbrechungskommunikationen unter Prozessoren
bzw. innerhalb von Prozessoren auseinandersetzen. Diese System waren
zur Kommunikation über
einen Systembus ausgerichtet, wobei der Systembus jedoch nicht für Unterbrechungskommunikationen
in Prozessoren eingesetzt werden konnte, da die Busarchitektur die
Abwärtskompatibilität mit der älteren ×86-Plattform beibehalten
musste. Diese Situation hat beispielsweise zu der Entwicklung eines
separaten Busses geführt,
und zwar eines designierten Busses zur Abwicklung der Funktion der
Prozessorunterbrechungskommunikationen, ohne die existierende Plattform zu
stören
oder die Abwärtskompatibilität zu beeinträchtigen.
Dieser Ansatz wird zum Beispiel in dem U.S. Patent US-A-5,511,200
offenbart, das auf den Zessionar des vorliegenden Patents übertragen
worden ist.
-
Andere Ansätze zur Lösung des Problems der Unterbrechungsbehandlung
umfassen das U.S. Patent US-A-4,495,569,
worin ein Mehrprozessorsystem mit einer Unterbrechungs-Steuereinheit
gelehrt wird, die dazu dient eine Unterbrechung an einem Zielprozessor
anzuwenden. Eine Busschnittstellen-Unterbrechungsanordnung, die
separate Unterbrechungs-Controller für jeden Bus in einem Computersystem
mit mehreren Bussen vorsieht, wird in dem U.S. Patent US-A-5,134,706
gelehrt. In dem U.S. Patent US-A-5,155,853
wird ein weiterer Ansatz zur Lösung
des Problems gelehrt, wobei darin eine in einer CPU integrierte
Unterbrechungs-Steuereinheit gelehrt wird. Die Unterbrechungs-Steuereinheit spricht
auf Unterbrechungs-Anforderungssignale an und startet eine Unterbrechungsbehandlungsroutine.
-
Bei Mehrprozessorsystemen auf der
Basis der Intel ArchitectureTM hat der Einsatz
eines dedizierten Busses für
die Prozessorunterbrechungssteuerung (PIC) deutlich zugenommen.
Folglich wurde ein ganzes Protokoll zur Regelung des Betriebs über den
PIC-Bus entwickelt. Zum Beispiel wurden in der Mehrprozessorsystemumgebung
bestimmte Merkmale erzeugt, die schnell von Softwareentwicklern übernommen
worden sind. Ein derartiges Merkmal ist das Arbitrierungskonzept
eines Ziels mit niedrigster Priorität (LPD). Gemäß dem LPD- Arbitrierungsplan
wird eine in dem Mehrprozessorsystem erzeugte Unterbrechung zur
Unterbrechungsbehandlung zu dem am wenigsten ausgelasteten Prozessor
(d. h. dem Prozessor mit der niedrigsten Priorität) übertragen. Anders ausgedrückt bedeutet
dies, dass der am wenigsten ausgelastete Prozessor in dem System
gemäß dem LPD-Plan
identifiziert wird, und wobei dieser Prozessor daraufhin die Aufgabe
zur Behandlung von Unterbrechungen übertragen bekommt. Hiermit
wird festgestellt, dass die Priorität in einem derartigen System
dynamisch ist, das heißt,
ein Prozessor kann zu einem bestimmten Zeitpunkt sehr ausgelastet
sein (d. h. höchste
Priorität),
während
er zum nächsten
Zeitpunkt gar nicht ausgelastet ist.
-
Der Erfolg der PIC-Architektur führte zu
deren Aufnahme in Mehrprozessorsysteme auf der Basis von Mehrprozessor-Computersystemen
vom Typ Pentium® und
Pentium® ProTM. Beide Prozessoren wurden kompatibel mit
einem PIC-Bus entwickelt.
-
Im Zuge weiter ansteigender CPU-Frequenzen
und immer geringer werdenden Stromversorgungspotentialen hat sich
das Problem entwickelt, dass die inhärenten Einschränkungen
der PIC-Busarchitektur
deutlich geworden sind. Im Besonderen weist die PIC-Busarchitektur
bestimmte elektrische Anforderungen in Bezug auf Spannungshübe, Arbeitsfrequenzen,
Spannungspotentiale, etc. auf, die mit den modernsten Mehrprozessorsystemen
mit hohen Frequenzen und geringer Leistungsaufnahme nicht kompatibel
sind. Anders ausgedrückt
ist die elektrische Beschaffenheit des PIC-Busses durch dessen Abhängigkeit
von hohen Spannungsebenenanforderungen eingeschränkt, die mit den Bauarten modernerer
Mehrprozessorsysteme nicht kompatibel sind. Die Herausforderung,
die sich Systementwicklern stellt, ist die Frage, wie Hardwareverbesserungen
umgesetzt werden können, ohne
dass die Softwarekompatibilität
darunter leidet, wie etwa die Zielausrichtung auf den Prozessor
mit der niedrigsten Priorität,
die für
die ×86-Kompatibilität erforderlich
ist. Mit anderen Worten machen weitere Verbesserungen der Hardware
und der Software für
zukünftige
Mikroprozessorsysteme die Abkehr von der herkömmlichen PIC-Busarchitektur
erforderlich. Gleichzeitig müssen
zukünftige
Prozessorentwicklungen die Merkmale der PIC-Busarchitektur unterstützen, wie
etwa die Zielausrichtung auf den Prozessor mit der niedrigsten Priorität, um eine
umfassende binäre
Kompatibilität
mit bereits vorhandener Software zu erreichen.
-
Wie die deutlich wird, sieht die
vorliegende Erfindung einen Mechanismus zum Emulieren des Prozessors
mit der niedrigsten Priorität
in einem Mehrprozessorsystem vor, wobei Prozessorunterbrechungen über einen
Hochgeschwindigkeits-Systembus übertragen
werden.
-
KURZE BESCHREIBUNG DER
ZEICHUNGEN
-
Die vorliegende Erfindung wird beim
Lesen der folgenden genauen Beschreibung in Verbindung mit den Zeichnungen
besser verständlich.
In den Zeichnungen zeigen:
-
1 ein
Blockdiagramm auf höherer
Ebene eines gemäß der vorliegenden
Erfindung arbeitenden Mehrprozessorsystems;
-
2 ein
Blockdiagramm auf Architekturebene eines Ausführungsbeispiels eines Prozessors,
der die vorliegende Erfindung aufweist
-
3 ein
detailliertes Blockdiagramm des in einem Ausführungsbeispiel eines erfindungsgemäßen Mikroprozessors
implementierten Emulationsmechanismus;
-
4A ein
Adressierungsformat für
externe Unterbrechungsnachrichten gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung;
-
4B das
Datenformat für
externe Unterbrechungsnachrichten gemäß einem Ausführungsbeispiel der
vorliegenden Erfindung; und
-
5 die
Struktur des in einem Ausführungsbeispiel
der vorliegenden Erfindung verwendeten lokalen Identifikationsregisters.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Bei der vorliegenden Erfindung handelt
es sich um ein Mehrprozessor-Computersystem, das ein Emulationsmerkmal
für eine
Softwarekompatibilität
für einen
Prozessor mit niedrigster Priorität aufweist und fehlertolerant
ist.
-
In einem Ausführungsbeispiel weist das System
erste und zweite Prozessoren auf, die mit einem Systembus gekoppelt
sind, der die Übermittlung
von Unterbrechungsnachrichten in dem System behandelt. Wenn ein
Befehl durch den ersten Prozessor decodiert wird, und dieser Befehl
ein Unterbrechungsmerkmal spezifiziert, bewirkt ein Mikrocode in
dem ersten Prozessor das Auftreten einer Trap. Als Reaktion auf
die Trap liest der Mikrocode ID-Informationen aus einem Register
des ersten Prozessors. Diese ID-Informationen dienen als physikalischer
Name des ersten Prozessors. Danach übermittelt der erste Prozessor
eine Unterbrechungsnachricht über
den Systembus. Die Unterbrechungsnachricht weist die ID-Informationen
auf, die aus dem ID-Register gelesen worden sind. Diese ID-Informationen sind
in einem ID-Feld der Nachricht für
den Zielprozessor enthalten.
-
Nach der Übermittlung auf dem Systembus
akzeptiert der erste Prozessor letztendlich die Unterbrechungsnachricht,
da das ID-Feld des
Zielprozessors mit dem physikalischen Namen des ersten Prozessors übereinstimmt.
Der erste Prozessor wird dadurch als der Prozessor in dem Mehrprozessorsystem
(MP-System) bezeichnet,
der die Unterbrechung behandelt.
-
GENAUE BESCHREIBUNG
-
Die Abbildung aus 1 zeigt ein allgemeines Blockdiagramm
eines Computersystems 10, das vier Prozessoren (CPU1–4)
umfasst, von denen jeder mit einem gemeinsamen Systembus 12 gekoppelt
ist. In einem Ausführungsbeispiel
der vorliegenden Erfindung umfasst der Systembus 12 einen
250 MT/SEC oder höheren
Systembus, der auch für
die Unterbrechungskommunikationen innerhalb der Prozessoren verwendet wird.
Der Systembus 12 ist mit anderen Worten so gestaltet, dass
Unterbrechungsnachrichten über
den Systembus übermittelt
werden.
-
Zum besseren Verständnis der
vorliegenden Erfindung zählen
zu den verschiedenen Klassen, die während der Befehlsverarbeitung
auftreten können,
folgende Optionen: Fehler, Traps, Unterbrechungen und Abbrüche. Ein
Fehler tritt ein, wenn das aktuelle Befehlspaket einen bestimmten
Befehl aufweist, der eine Handlung anfordert, die nicht ausgeführt werden
kann oder soll, oder es ist eine anderweitige Systemintervention
vor der Ausführung
des Befehls erforderlich. Fehler sind in Bezug auf den Befehlsstrom
synchron. Der Prozessor führt
Zustandsänderungen
vollständig
aus, die in Befehlen vor dem fehlerhaften Befehl aufgetreten sind.
Der fehlerbehaftete Befehl und folgende Befehle weisen jedoch keinen
Effekt auf den Maschinenzustand auf. Traps sind in Bezug auf den
Befehlsstrom ebenfalls synchron und treten auf, wenn der gerade
ausgeführte Befehl
einen Systemeingriff erfordert. Der Trap-Befehl und vorherige Befehle
werden vollständig
ausgeführt. Folgende
Befehle wirken sich nicht auf den Maschinenzustand aus. Unterbrechungen
treten auf, wenn eine externe oder unabhängige Entität, wie zum Beispiel eine Ein/Ausgabevorrichtung
(E/A), ein Timer, ein Ereignis, etc. eine gewisse Aufmerksamkeit
erfordern. Unterbrechungen sind im Verhältnis zu dem Befehlsstrom asynchron.
Alle vorherigen Befehle erscheinen ausgeführt. Der aktuelle Befehl und
folgende Befehle wirken sich nicht auf den Maschinenzustand auf.
Schließlich
tritt ein Abbruch auf, wenn der Prozessor eine interne Fehlfunktion
oder ein Rücksetzereignis
feststellt. Abbrüche
können
im Verhältnis
zu dem Befehlsstrom synchron oder asynchron sein und sie können es
bewirken, dass der Prozessor den Befehlsstrom an einer unvorhersehbaren
Position anhält.
-
Die Abbildung aus 2 zeigt ein Blockdiagramm, das die Grundarchitektur
eines Prozessors 20 veranschaulicht, der gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung implementiert wird. Die Architektur des
Prozessors 20 teilt die Verantwortlichkeiten für die Ausführung auf,
und zwar zwischen einem Kernlogikabschnitt 22, der in Bezug
auf eine erste Befehlsgruppenarchitektur arbeitet, und einem Abschnitt 21,
der eine andere, zweite Befehlsgruppenarchitektur emuliert. In einem
speziellen Ausführungsbeispiel
decodiert der Abschnitt 21 speziell Befehle der Intel Architecture.
Der Kernlogikabschnitt 22 sieht Befehle gemäß einer ersten
Befehlsgruppenarchitektur vor sowie Daten, Ausführungsressourcen und einen
Registersatz. Mit der Intel Architecture kompatible Befehle werden
in dem Abschnitt 21 decodiert, wobei auch eine Folge interner
Mikrobefehle erzeugt wird, die in einen Silbensatz umgesetzt werden,
die an den Kernlogikabschnitt 22 ausgegeben werden. Diese
werden in dem Abschnitt 22 danach durch die Ausführungseinheiten
der Kernlogik ausgeführt.
Die Mikroarchitektur des Prozessors 20 implementiert somit
Makrobefehle mit Mikrocodesequenzen der Intel Architecture, wobei
eine Mehrzahl der Makrobefehle einen Code umfasst, der mit dem Kernlogikabschnitt 22 kompatibel
ist, in Verbindung mit zusätzlichen
Steuersignalen, spezifisch für
die Mikroarchitektur. Hiermit wird festgestellt, dass die Architektur
des Prozessors 20 binär
und codekompatibel ist, jedoch nicht unbedingt Abwärts-PINkompatibel.
Der Prozessor 20 kann mit anderen Worten so implementiert
werden, dass er mit älteren
Computersystemen nicht Steckverbindungs-kompatibel ist. Diesbezüglich implementiert
der Prozessor 20 nicht den gewöhnlichen dedizierten Unterbrechungs-Steuerungsbus,
der dem Stand der Technik entsprechenden PIC-Architekturen zugeordnet
ist. Stattdessen ist der Prozessor 20 so gestaltet, dass
er in einem System funktionsfähig
ist, wie dies etwa in der Abbildung aus 1 dargestellt ist, in dem Unterbrechungsnachrichten über den
Systembus 12 übermittelt
werden. Die Codekompatibilität
zur Unterstützung
der architektonischen Merkmale, wie etwa der Arbitrierung des Prozessors
mit er niedrigsten Priorität,
werden durch die vorliegende Erfindung unter Verwendung eines Mikrocodes
erreicht, der das Ziel mit der niedrigsten Priorität auf die
CPU richtet, welche die Software zu diesem Zeitpunkt ausführt.
-
Der Mikrocode greift auf ein spezielles
Register zur CPU-Identifikation
(CPU-ID) zu und gewinnt einen ID-Wert. Von dieser Stelle erfolgt
eine Zielausrichtung auf das Prozessorziel mit der niedrigsten Priorität. Da das
Ziel mit der niedrigsten Priorität
in Bezug auf Software transparent ist, stellt diese Implementierung
die ×86-Softwarekompatibilität sicher,
während
gleichzeitig eine Fehlertoleranz in einem Mehrprozessorsystem vorgesehen
wird. Da der Mikrocode aufgrund der speziellen Beschaffenheit atomar
ist, treten Kohärenzprobleme
in dem Unterbrechungskommunikationsschema der vorliegenden Erfindung
nicht auf. An dieser Stelle sollten Fachleute auf dem Gebiet erkennen,
dass die vorliegende Erfindung den wichtigen Vorteil vorsieht, dass sie
in die CPU eingeschlossen wird, so dass keine Modifikationen der
Hardwareanwendungsschicht (HAL) des Systems erforderlich sind, wodurch
keine zusätzlichen
Hardwarekosten verursacht werden. Dies bedeutet, dass die Erfindung
in Mehrprozessorsystemen integriert werden kann, ohne. dass eine
zusätzliche
Unterstützung
durch andere Plattformsystemkomponenten erforderlich ist.
-
Die Abbildung aus 3 zeigt ein Blockdiagramm verschiedener
interner funktionaler Einheiten eines Prozessors 20, die
für die
vorliegende Erfindung relevant sind. Da Softwareentwickler von Betriebssystemen in
ihren Code Merkmale wie etwa das Prozessorziel mit der niedrigsten
Priorität
aufgenommen haben, kann der Prozessor 20 Software ausführen und
zu jedem Zeitpunkt auf einen Befehl mit spezifiziertem Adressierungsmodus
mit niedrigster Priorität
treffen. Diesbezüglich
arbeitet die Translationslogik in Abschnitt 21 in Verbindung
mit dem Kernlogikabschnitt 22 des Prozessors, um Befehle
zu erfassen und zu decodieren, die mit der Intel Befehlssatzarchitektur
kompatibel sind, welche einen spezifizierten Adressierungsmodus
mit niedriger Priorität
aufweist. Die Decodierung und Translation für diesen Code erfolgt in Abschnitt 21.
Wenn ein Befehl auf einen spezifizierten Adressierungsmodus mit
niedrigster Priorität
trifft, signalisiert die Translationslogik in Abschnitt 21 über ein über die
Leitung 33 übermitteltes
Signal an die Decodierungs- und Trap-Logik 45. Als Reaktion
auf einen Befehl mit spezifiziertem Adressierungsmodus mit niedrigster
Priorität
erzeugt die Decodierungs- und Trap-Logik 45 eine Trap.
Der Mikrocode in dem Abschnitt 21 weist verschiedene Schritte
und Befehle auf, wodurch die Behandlung der Trap in der Trap-Steuereinheit 40 eingeleitet
wird. Der Mikrocode verwendet die vorhandene PIC-Logik in der Einheit 50,
die auch die CPU-ID speichert. Die CPU liest das ID-Register und
platziert die ID-Informationen danach in dem Befehlsstrom, so dass
es sich bei der laufenden CPU, welche die Unterbrechungen erzeugt
hat, um die gleiche CPU handelt, welche die Trap behandelt.
-
Die Signalspeicher 41–43 werden
zur Kommunikation zwischen der Decodierungs- und Trap-Logikeinheit 45 und
der PIC-Logikeinheit 50 eingesetzt.
Zum Beispiel speichert der Signalspeicher 41 die Anforderungsinformationen
für einen
Zugriff auf das CPU ID-Register in der PIC-Logikeinheit 50.
Das Lesen und Schreiben von Informationen aus der und in die PIC-Logikeinheit 50 erfolgt über die
Signalspeicher 42 und 43. Informationen über den
Mikrotrap-Status und die Steuerregister-ID-Nummer werden über die
entsprechenden Signalleitungen 34 und 35 zu der
Translationslogik in dem Abschnitt 21 übertragen. Der Steuerregisterzugriff wird über die
Leitung 36 signalisiert.
-
Hiermit wird festgestellt, dass jeder
CPU eine Anzahl von Steuerregistern zugeordnet ist. Außerhalb der
CPU können
E/A-Register, Speicherregister
und speicherabgebildete E/A-Register
vorhanden sein, wobei die herkömmliche
PIC-Architektur
ein Element darstellt. In dem Ausführungsbeispiel aus 3 sind die PIC-Register
als Steuerregister in der Einheit 50 implementiert. Dies
bedeutet, dass die Speicheradresse der PIC-Register nicht auf die
dem Kernlogikabschnitt 22 zugeordnete Steuerregisteranzahl
umgesetzt werden muss.
-
In folgendem Bezug auf die Abbildung
aus 4A ist ein Adressierungsformat
für externe
Unterbrechungsnachrichten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung dargestellt. Die Abbildung aus 4B veranschaulicht das Datenformat
für externe
Unterbrechungsnachrichten. Die Adressprozessor-Bezeichnerfelder
EID und ID spezifizieren den Zielprozessor und sind in der folgenden
Tabelle 1 definiert.
-
-
Hiermit wird festgestellt, dass das
Feld EID alle 0en und da Feld ID alle 1en aufweist, wobei die Unterbrechung
an alle Prozessoren in dem Mehrprozessorsystem übermittelt wird.
-
Speichervorgänge in den physikalischen Adressbereich
0X000 0000 FFEX XXXX, bei denen es sich um nicht ausgerichtete nicht
8 Bytes handelt oder die durch einen Cache-Speicher abgebildet werden,
sind unzulässig
und können
zu einem unvorhersehbaren Verhalten oder einem Maschinenprüfungsabbruch
führen.
-
Das LID-Register ist in der PIC-Logikeinheit 50 angeordnet
und speichert die lokalen Bezeichnerfelder des Prozessors. Diese
Felder verwalten den physikalischen Namen des Prozessors in allen
externen Unterbrechungsnachrichten. Das LID-Register wird beim Einschalten
durch Firmware auf der Basis der physikalischen Position des Prozessors
geladen. Ein Datenserialisierungsvorgang kann eingesetzt werden,
um sicherzustellen, dass das LID-Register für zukünftig ankommende Unterbrechungen
aktualisiert worden ist. Die Struktur des LID-Registers ist in der
Abbildung aus 5 dargestellt,
und die Felder EID und ID des lokalen Bezeichnerregisters werden
in Tabelle 1 beschrieben. Hiermit wird festgestellt, dass es sich
bei dem LID-Register in der PIC-Logikeinheit 50 um ein
Schreib-Lese-Register handelt, auf das nur auf der Privilegebene
0 zugegriffen werden kann, wobei ansonsten ein Privilegbetriebsfehler
erzeugt wird.
-
Wie dies bereits vorstehend im Text
beschrieben worden ist, übermittelt
das erfindungsgemäße Mehrprozessorsystem
Unterbrechungsnachrichten über
den Systembus, anstatt einen dedizierten Unterbrechungsbus zu verwenden.
Implementiert wird dies unter Verwendung des Busanforderungspfads
der CPU zur Übermittlung
der Unterbrechungsnachricht auf den Systembus 12, wie dies
in der Abbildung aus 3 dargestellt ist.
Eine Busanforderungswarteschlange 60 wird verwendet, um
Unterbrechungsnachrichten zur Übermittlung über den
Systembus 12 von der Kernlogikeinheit 22 über die
Leitung 61 zu stapeln. Wenn der Prozessor 20 gemäß der vorliegenden
Erfindung einen Prozessorunterbrechungsnachricht über den
Bus 12 übermittelt,
wird diese von allen anderen Prozessoren in dem System ignoriert
und kommt zurück
zu der CPU 20, von der sie ausging. Dies bedeutet, dass
die CPU 20 die Unterbrechungsanforderung behandelt, die
sie zu dem Systembus 12 übermittelt hat. Wenn in dem
an dem Prozessor 20 ausgeführtem Code auf die Informationen
mit der niedrigsten Priorität
getroffen wird, ist der Prozessor 20 automatisch der designierte
Prozessor mit der niedrigsten Priorität. Hiermit wird jedoch festgestellt,
dass für
den Fall, dass der gleiche Softwarecode von einer anderen CPU in
dem Mehrprozessorsystem ausgeführt
wird, die aus dem Befehl erzeugte Unterbrechung, der die Informationen
mit der niedrigsten Priorität
aufweist, zu dieser CPU übermittelt
wird. Der Fachmann erkennt, dass diese Lösung auf jede Anzahl von CPUs
skalierbar ist, ohne dass etwaige Probleme in Bezug auf die Aufrechterhaltung
der Kohärenz
auftreten.