Vorige Seite  Inhalt  Nächste Seite

2. Technik von SMP-Systemen

In diesem Kapitel wollen wir die technischen Besonderheiten von Intel-basierten SMP-Rechnern näher betrachten. Obwohl diese überwiegend aus PC-Standardkomponenten bestehen, gibt es doch einige Unterschiede zu herkömmlichen PCs. Besonders SMP-Rechner mit mehr als zwei Prozessoren (üblicherweise Serverboards, z.B. Intel SC450NX MP) sind intern viel komplizierter aufgebaut, als Rechner mit nur zwei Prozessoren. Das liegt unter anderem auch an dem gestiegenen Ressourcenbedarf, der nicht mehr durch Standard-Komponenten gedeckt werden kann. Trotzdem sind diese Rechner aber PC/AT-kompatibel.

2.1. Die Intel-Multiprozessor-Spezifikation

Die von Intel initiierte Multiprozessor-Spezifikation ist eine Erweiterung des PC/AT-Standards um symmetrische MP-Systeme. Wie oben schon erwähnt, sind solche Systeme überwiegend aus "normalen" PC-Komponenten aufgebaut. Um eine SMP-Fähigkeit zu gewährleisten, müssen aber sowohl an Hard- als auch Software Änderungen vorgenommen werden. Eine wesentliche Rolle z.B. bei der Repräsentation eines SMP-Systems gegenüber der Software spielt das SMP-BIOS, das deswegen auch das "Herz" des SMP-Konzeptes ist.

Die oben angesprochenen Änderungen werden in der Spezifikation festgelegt. Betriebssysteme und Hardware, die nach den Richtlinien der MP-Spezifikation angefertigt werden, sind zu Intel-basierten SMP-Systemen kompatibel. Die Spezifikation liegt mittlerweile in der Version 1.4 vom Mai 1997 vor und kann unter http://developer.intel.com/design/intarch/MANUALS/242016.htm heruntergeladen werden.

Folgende Grafik gibt einen Überblick über das durch die MP-Spezifikation definierte Konzept:

SMP-Konzept

Bild 2.1.

Wie aus dem Bild ersichtlich, vermittelt das SMP-BIOS zwischen der Hardware und den Treibern bzw. der HAL (Hardware Abstraction Layer) des Betriebssystems. Es stellt eine Reihe von SMP-spezifischen Datenstrukturen zur Konfiguration des Systems (Prozessoranzahl, etc.) bereit, die von einem SMP-Betriebssystem genutzt werden können. Nicht SMP-fähige Betriebsysteme wie MS-DOS sehen diese Datenstrukturen nicht, können aber die gewohnten PC/AT-Funktionen des SMP-BIOS nutzen und laufen somit auch auf einem SMP-Rechner. Durch diesen "Trick" gewährleisten derartige Systeme eine gewisse Rückwärtskompatibilität, wobei man aber sagen muss, daß SMP-Systeme die mit einem nicht SMP-fähigen Betriebssystem benutzt werden, reine Verschwendung sind.

Selbstverständlich ist das von der MP-Spezifikation angegebene Konzept nicht das einzig mögliche, um Multiprozessor-Architekturen zu realisieren. Vielmehr sollte PC-Herstellern damit die Möglichkeit gegeben werden, PC/AT-kompatible MP-Systeme herzustellen, auf denen auch die üblichen Betriebssysteme laufen. Der wesentliche Aspekt sind hier die Kosten. Die Hersteller müssen Dank der MP-Spezifikation nicht erst ein eigenes proprietäres Betriebssystem schreiben. Es ist aber auch klar, daß es unter Umständen sinnvoll ist, von der Spezifikation abzuweichen, um einen Spezialrechner herzustellen, der nur in einem bestimmten Umfeld besser skaliert und schneller arbeitet als ein normaler SMP-Rechner. Beispielsweise könnte die PC/AT-Kompatibilität keine Rolle spielen, wenn man einen robusten und schnellen Prozeßrechner bauen möchte, der mit einem eigenen Echtzeitbetriebssystem arbeiten soll. Solche Rechner werden oft im Produktionsumfeld zur Steuerung komplexer Fertigungswerkzeuge benutzt (Roboter, Werkzeugmaschinen).

2.2. Eigenschaften eines Intel SMP-Rechners

Rechner, die zur Intel-MP-Spezifikation kompatibel sein sollen, müssen folgende wichtige Anforderungen erfüllen:

Die Intel MP-Spezifikation implementiert das in 1.2. vorgestellte Konzept eines symmetrischen Multiprozessorsystems mit I/O- und Speichersymmetrie. Das folgende Bild gibt einen Überblick über die wesentlichen Hardwarekomponenten eines solchen Systems:

SMP-Systemarchitektur

Bild 2.2.

Wie man in dem Bild sieht, haben alle Prozessoren gleichberechtigt Zugriff auf den Speicherbus. Es existiert auch kein spezieller I/O-Prozessor, über den alle I/O-Anfragen abgewickelt werden, was ein weiters wichtiges Merkmal von symmetrischen Multiprozessorsystemen ist. Die Prozessoren können somit frei über den Speicherbus verfügen. Eine weitere wichtige Komponente, die in Bild 2.2. zu erkennen ist, ist der ICC-Bus (Interrupt Controller Communications). Über ihn kommunizieren die lokale und die entferente I/O-Controller-Einheit (I/O-APIC).

2.2.1. Prozessoren in Intel-SMP-Systemen

Die schon oft erwähnte Kompatibilität zu PC/AT-Hard- und Software wird unter anderem dadurch erreicht, indem man Prozessoren der Intel 80x86-Architektur ab dem i80486 in SMP-Systemen einsetzt. Heutige (Stand 07/2000) SMP-Rechner setzen üblicherweise Pentium Xeon-Prozessoren ein, die im Vergleich zu normalen Pentium III-Prozessoren u.a. den Vorteil eines größeren und höher getakteten Caches haben. SMP-Systeme mit nicht-Intel 80x86-Prozessoren (z.B. von AMD, Cyrix oder anderen) sind zwar theoretisch denkbar, jedoch mit den heutigen Boards nicht möglich. Das liegt zum einen an unterschiedlichen Prozessorbussen (bei AMDs Athlon z.B.) und zum anderen an Einheiten innerhalb der Prozessoren, die SMP erst ermöglichen, z.B. dem APIC. AMD wird aber in naher Zukunft eigene SMP-Implementationen vorstellen. Dabei wird man sich wahrscheinlich an der Intel-Spezifikation orientieren, da in diesem Bereich schon eine große Erfahrung besteht und sich Intel-SMP-Systeme bestens bewährt haben.

Obwohl die Prozessoren laut Definition funktionell identisch und von gleichem Status sind, gibt es beim Start- und beim Halteprozess doch eine gewisse Einteilung, die aber nur kurz besteht. Dabei unterscheidet man

Welcher der Prozessoren beim Start der Bootprozessor ist, wird entweder durch die Hardware oder durch das SMP-BIOS bestimmt. Der BSP hat die Aufgabe, das System zu initialisieren und anschließend das Betriebssystem zu booten. Erst nachdem das Betriebssystem gestartet ist und läuft, werden die APs aktiviert. Die Konsequenz davon ist aber, daß auch ein nicht SMP-taugliches Betriebssystem auf einem SMP-Rechner gebootet werden kann, da sich zum Bootprozess der Computer wie ein Einprozessor-System repräsentiert. Hier verwirklicht sich also eine Forderung der Intel-Spezifikation, daß auch vorhandene Betriebssysteme ohne SMP-Unterstützung auf SMP-Computern laufen müssen.

2.2.2. Intels "Advanced Programmable Interrupt Controller" (APIC)

Die APICs gehören neben den Prozessoren zu den Kernbestandteilen eines Intel SMP-Systemes. Wie in jedem PC/AT-kompatiblen System, müssen auch auf einem SMP-Rechner die Interrupt-Anfragen von irgendwelchen Quellen von den Prozessoren beantwortet werden. Da aber kein spezieller I/O-Prozessor existiert, muss eine solche Anfrage natürlich auf die vorhandenen Prozessoren verteilt werden. Unter anderem dafür sind die APICs zuständig. In Intel SMP-Systemen kommen zwei Kategorien von APICs vor: Die Wörter "lokal" und "entfernt" beziehen sich hierbei auf den Abstand vom Prozessor. Betrachtet man nocheinmal Bild 2.2., so stellt man fest, daß jede CPU einen APIC-Bestandteil enthält (laut Spezifikation muss jede CPU zumindest einen ihr zugeordneten APIC haben), den man als lokalen APIC bezeichnet. Bis auf wenige Ausnahmen (einige frühe Pentium-Prozessoren) weisen fast alle Prozessoren ab dem Intel Pentium einen solchen APIC auf dem Chip auf. Weiter entfernt vom Prozessor befinden sich die I/O-APICs, die üblicherweise in den Chipsatz des Rechners integriert sind. Diese beiden Einheiten kommunizieren über den schon erwähnten Interrupt Controller Communications-Bus und teilen die anstehenden Controller-Funktionen zwar untereinander auf, bilden aber zusammen eine Einheit. Die lokalen APICs haben neben den obenganannten Funktionen noch die Aufgabe, Interprozessor-Interrupts (IPIs) weiterzuleiten. IPIs erlauben es, das ein Prozessor einen Interrupt an einen anderen sendet, was z.B. für Steuersignale von Nutzen sein kann. Es gibt verschiedene Typen von IPIs, von denen einige bei Start- und Haltevorgängen eine Rolle spielen. Diese Zusammenhänge macht das folgende Bild 2.3. nochmals deutlich:

APIC-Konzept

Bild 2.3.

Wir sehen hier die im Abschnitt 2.2.1 erwähnte Unterteilung in Boot- und Anwendungsprozessor, wie sie beim Systemstart herrscht. Weiterhin sind die in diesem Abschnitt besprochenen Komponenten APIC und ICC sichtbar. Die Benutzung des ICC-Busses hat auch den Vorteil, eine gewisse Skalierbarkeit des Gesamtsystemes zu sichern. Denn durch den ICC-Bus wird

2.2.3. Speicherbenutzung in SMP-Systemen

Systeme, die zur Intel-Spezifikation kompatibel sind, benutzen die PC/AT-Speicherarchitektur, d.h. maximal sind 4 GB physischer Speicher möglich. Der Speicher kann von allen Prozessoren benutzt werden, deswegen sind SMP-Systeme echte Shared-Memory-Architekturen (Gemeinsamer Speicher). Das Speicher-Layout (memory map) sieht in einem SMP-System natürlich etwas anders aus, da einige Komponenten (wie APICs) vorhanden sind, die es in normalen PCs nicht gibt. Bild 2.4. gibt einen Überblick über das Layout:

Speicher-Layout

Bild 2.4.

Im Vergleich zu einem Einprozessor-System sind an den Speicherbus eines SMP-Systemes wesentlich höhere Anforderungen gestellt, da unter Umständen alle Prozessoren gleichzeitig Speicher-Transaktionen durchführen können. Daraus resultiert zum einen, daß ein SMP-Speicherbus breiter als der eines PCs sein sollte. Zum anderen ist es hier unvermeidlich, mit möglichst großen Caches zu arbeiten, da der Speicherbus der Flaschenhals eines SMP-Systemes ist, was wir später noch sehen werden. Die Verwendung von Caches wirft aber gleich ein schwerwiegendes Problem auf: Cache-Kohärenz. Angenommen CPU A liest mehrere Male vom Hauptspeicher an einer bestimmten Stelle. Die CPU holt sich dabei die Daten in den Cache, so daß weitere Leseanfragen aus dem Cache beantwortet werden. Ändert aber in der Zwischenzwit eine zweite CPU, sagen wir CPU B, die Daten im Hauptspeicher, so sind Cache von CPU A und Hauptspeicher inkonsistent; es handelt sich bei dem Cache-Inhalt um veraltete Daten (Stale Data). In einer Multiprozessorumgebung mit einem Programm, das auf mehreren Prozessoren verteilt arbeitet wobei die Prozessoren auf den selben Speicherstellen arbeiten, könnte das zu ernsten Problemen führen, weshalb man sogenannte Cache-Kohärenz-Protokolle implementieren muss, die dafür sorgen, daß bei Änderung von Daten die CPUs eventuell informiert werden. Ein solches Protokoll ist das z.B. das bekannte MESI-Protokoll. Glücklicherweise sind Cache-Kohärenz-Protokolle schon in den Intel-Prozessoren implementiert.

2.3. SMP-BIOS

Ein PC/AT-BIOS hat im wesentlichen folgende Aufgaben zu erfüllen: Zusätzlich zu diesen Aufgaben muss ein SMP-BIOS aber noch die folgenden Dinge erledigen: Minimal muss ein SMP-BIOS die Konfigurationstabelle bereitstellen. Komfortablere BIOS-Programme könnten aber sogar eine Umkonfiguration der SMP-Konfigurationstabelle während des Betriebes durchführen, falls eine Systemkomponente ausfällt. Hier ist den Entwicklern durch die Intel MP-Spezifikation eine gewisse "Freiheit" gelassen worden. Wichtig bei der Erstellung eines SMP-BIOS ist aber, daß der BIOS-Code nur auf einem Prozessor ausgeführt wird. Dazu müssen ggf. die APs deaktiviert werden. Generell kann man sagen, daß ein einfaches BIOS in einem höheren Hardware-Aufwand, ein komplexeres BIOS aber in einem höheren Software-Aufwand resultiert. So könnte man z.B. die Initialisierung verschiedener SMP-Komponenten (z.B. APICs, I/O-APICs) einer Hardware überlassen.
Vorige Seite  Inhalt  Nächste Seite
Copyright © 2000 by Ralph Schlosser, alle Rechte vorbehalten.
Datum der letzten Änderung: 13.07.2000