Die Erfindung betrifft ein Verfahren zur Erhöhung der Nutz
leistung von Multiprozessorsystemen gemäß dem Oberbegriff des
Patentanspruches 1.
Multiprozessorsysteme mit prozessorindividuellen Zwischen
speichern, sogenannten Caches, erfordern gesonderte Steuer
mechanismen, um sicherzustellen, daß bei konkurrierenden Zu
griffen von verschiedenen Prozessoren des Systems auf diesel
ben Daten die erforderliche Datenkonsistenz gewahrt bleibt.
Das gilt insbesondere für sogenannte "Store-in-Caches", bei
denen zwischengespeicherte Daten nur bei Verdrängung in den
gemeinsamen Speicher zurückgeschrieben werden.
Außerdem erhöhen sich die Zugriffszeiten erheblich, wenn die
gewünschten Daten nicht im eigenen Cache vorhanden sind, son
dern erst aus dem gemeinsamen Speicher oder dem Cache eines
anderen Prozessors geholt und gegebenenfalls im anderen Cache
für ungültig erklärt werden müssen.
Konkurrierende Schreibzugriffe auf gemeinsame Speicherberei
che von verschiedenen Prozessoren aus können vermieden wer
den, wenn man jeweils alle Prozesse, die auf dieselben Spei
cherbereiche zugreifen müssen, auf demselben Prozessor des
Systems zum Ablauf bringt. Diese "statische Affinität" von
Prozeß und Prozessor erlaubt jedoch keinen dynamischen
Lastausgleich zwischen den Prozessoren des Systems. Hierdurch
wird die Nutzleistung des Multiprozessorsystems reduziert,
weil die Leistung von möglicherweise freien Prozessoren nicht
genutzt werden kann.
Eine andere Möglichkeit zur Verringerung der konkurrierenden
Speicherzugriffe, bei der Prozesse zeitweise unterbrochen
werden können, um anderen Prozessen den Prozessor zu überlas
sen, basiert auf der Überlegung, daß Daten eines verdrängten
Prozesses mit hoher Wahrscheinlichkeit noch für eine gewisse
Zeitspanne im Cache vorhanden sein werden. Man berechnet da
her z. B. in Abhängigkeit von der durchschnittlichen Spei
cherbelegungsgröße des Prozesses beim Verlust des Prozessors
eine Zeitspanne und stellt sicher, daß innerhalb dieser
Sperrzeit nur eine Zuteilung desselben Prozessors möglich
ist. Diese "natürliche Affinität" berücksichtigt jedoch nur
das Verhalten eines Prozesses in Bezug auf einen zugeteilten
Prozessor, nicht aber gegenseitige Abhängigkeiten verschiede
ner, im gleichen Zeitraum ablaufender Prozesse. Bei konkur
rierenden Speicherzugriffen verschiedener Prozesse kann es
daher im Gegensatz zur erhofften Leistungserhöhung zu erheb
lichen Leistungseinbußen beim Multiprozessorsystem kommen,
wenn die Prozesse aufgrund der natürlichen Affinität auf ver
schiedenen Prozessoren festgehalten werden und sich wechsel
seitig die jeweils benötigten Daten aus dem Cache des anderen
Prozessors entziehen, dort auf ungültig setzen und im eigenen
Cache neu aufbauen.
Aus der Druckschrift US-A-5 261 053 ist ein Multiprozessor
system bekannt, das das Prinzip der "natürlichen Affinität"
ohne Berücksichtigung einer gegenseitigen Affinität von Pro
zessen, die gemeinsame Betriebsmittel in Form des Arbeits
speichers benutzen, realisiert.
Weiterhin ist aus der US-A-5 317 738 ein Multiprozessorsyste
men bekannt, bei dem die unkontrollierte Wanderung von Pro
zessen von einem Prozessor auf einen anderen Prozessor ver
hindert wird. Dazu ist eine Vorrichtung mit einem Affinitäts
speicher vorgesehen, um darin Speicherzugriffsdaten kurz zu
vor ausgeführter Prozesse zu speichern. Anhand dieser Daten
stellen Vergleichsmittel fest, ob ein auszuführender Prozeß
eine Affinität zu einem verfügbaren Prozessor hat.
Aufgabe der Erfindung ist es, ein Verfahren zur Erhöhung der
Nutzleistung von Multiprozessorsystemen der eingangs genann
ten Art anzugeben, das einerseits einen dynamischen Lastaus
gleich zwischen den Prozessoren des Multiprozessorsystems er
möglicht und andererseits Leistungsverluste bei Auftreten
konkurrierender Schreibzugriffe auf gemeinsame Speicherberei
che durch verschiedene Programmläufe verhindert.
Diese Aufgabe wird durch die kennzeichnenden Merkmale des Pa
tentanspruches 1 gelöst. Danach wird das Prinzip der
"natürlichen Affinität" durch einen weiteren Steuerungsme
chanismus ergänzt, indem Prozessabschnitte verschiedener Pro
zesse, welche Daten aus denselben Speicherbereichen benöti
gen, einheitlich markiert und aufgrund dieser Markierung dem
selben Prozessor zugewiesen werden, wenn der Datenzugriff
zeitlich konkurrierend, also im gleichen Zeitraum erfolgt.
Damit wird die zeitlich beschränkte Affinität verschiedener
Prozesse berücksichtigt und dadurch die Anzahl der Speicher
zugriffe auf die Caches der anderen Prozessoren weiter ver
ringert.
Dieser Steuerungsmechanismus vereint die Nutzleistung des
Multiprozessorsystem erhöhenden Eigenschaften der "statischen
Affinität" und der "natürlichen Affinität", indem in Zeiträu
men konkurrierender Zugriffe auf gemeinsame Speicherbereiche
die Affinität der betroffenen Prozesse fest vorgeschrieben
und damit deren Ablauf auf denselben Prozessor eingeschränkt
wird, in den restlichen Zeiträumen jedoch die dynamische Zu
teilung beliebiger freier Prozessoren unter den Vorgaben der
natürlichen Affinität zugelassen bleibt. Die eingangs erwähn
ten negativen Auswirkungen der statischen und natürlichen Af
finität auf die Leistung des Multiprozessorsystem werden ver
mieden.
Die Markierung erfolgt zweckmäßig programmgesteuert. Durch
als Unterprogrammaufrufe für das Setzen und Löschen der Mar
kierung vorgesehene Befehle im innerhalb des Prozesses ablau
fenden Programms besteht für den Programmierer in einfacher
Weise die Möglichkeit, Programmabschnitte mit vorhersehbarem
Zugriff auf zusammen mit anderen Prozessen zu nutzende Spei
cherbereiche wahlweise festzulegen.
Bei Erreichen eines derartig markierten Programmabschnitts
übernimmt der aktuell zugeteilte Prozessor ebenfalls die Mar
kierung. Die dadurch bedingte Zuordnung bleibt dann solange
bestehen, bis die bei Unterbrechung oder Beendigung eines
markierten Programmabschnitts die aktivierte Sperrzeit ver
strichen ist. Zur Überwachung der Sperrzeit wird zweckmäßig
ein den Ablauf kennzeichnender Zeitstempel verwendet.
Als Markierung wird jeweils ein Affinitätskennzeichen verwen
det, das zweckmäßig in Tabellen mit prozeßspezifischer und
prozessorindividueller Zuordnung geführt wird, so daß die je
weiligen Zuordnungen leicht überprüfbar sind. Dabei können
einem Prozeß auch mehrere Affinitätskennzeichen zugewiesen
werden.
Ein Prozeß ist zu einem vorgegebenen Prozessor genau dann af
fin, also ohne Einbußen aufgrund fremder Cache-Belegungen auf
dem genannten Prozessor ablauffähig, wenn weder die natürli
che Affinität noch eine Zuordnung mittels Affinitätskennzei
chen zu einem fremden Prozessor wirksam ist. Maßgebend für
die Wirksamkeit ist hierbei jeweils der Ablauf der für die
natürliche Affinität und die betroffenen Affinitätskennzei
chen definierten Sperrzeiten. Ein Prozeß heißt genau dann
nicht-affin zum betrachteten Prozessor, wenn eine wirksame
Bindung zu einem fremden Prozessor durch Affinitätskennzei
chen oder aufgrund von natürlicher Affinität besteht. Insbe
sondere braucht ein Prozeß, um affin zum vorgegebenen Prozes
sor zu sein, nicht zwingend eine Zuordnung zu diesem Prozes
sor mittels Affinitätskennzeichen zu besitzen.
Um zu vermeiden, daß Leerlaufverluste entstehen, weil einem
freien Prozessor kein affiner Prozeß zugeteilt werden kann,
wird gemäß einer anderen vorteilhaften Weiterbildung der Er
findung entsprechend Anspruch 8 einem freiem Prozessor immer
ein Prozeß zugeordnet. Liegt für diesen ein Affinitätskenn
zeichen vor, das einem anderen Prozessor gültig zugeordnet
ist, dann wird diese nicht affine Zuordnung gekennzeichnet,
damit bei Eintreten der Ablaufbereitschaft eines zu diesem
Prozessor affinen Prozesses die Unterbrechung des nicht affi
nen Prozesses herbeigeführt werden kann. Damit hat die Pro
zessorauslastung Vorrang vor der Affinität, und diese hat
wiederum Vorrang vor einer zu starken Nutzung gemeinsamer
Speicherbereiche durch auf verschiedenen Prozessoren gleich
zeitig ablaufende Prozesse.
Einzelheiten der Erfindung seien nachfolgend anhand eines in
der Zeichnung dargestellten Ausführungsbeispieles näher er
läutert. Im Einzelnen zeigen
Fig. 1 eine schematische Darstellung eines üblichen Multi
prozessorsystems,
Fig. 2A einen Prozeß mit einem mit einem Affinitätskennzei
chen versehenen Programmabschnitt,
Fig. 2B eine prozeßspezifische Tabelle, in der alle einem be
treffenden Prozeß aktuell zugeordneten Affinitäts
kennzeichen hinterlegt sind,
Fig. 3 ein Flußdiagramm für die Ausführung eines Markierbe
fehls (Setzen eines Affinitätskennzeichens),
Fig. 4 ein Flußdiagramm für die Ausführung eines Löschbe
fehls für die Markierung (Zurücksetzen eines Affini
tätskennzeichens),
Fig. 5 ein Flußdiagramm für die Auswahl eines ablaufbereiten
Prozesses für einen frei gewordenen Prozessor unter
Berücksichtigung eines vorhandenen Affinitätskennzei
chens,
Fig. 6A und Fig. 6B ein Flußdiagramm für die in Fig. 5 vorgese
hene Prüfschleife, und
Fig. 7 eine prozessorspezifische Tabelle, in der alle Affi
nitätskennzeichen einschließlich des Zustands "aktiv"
oder "inaktiv" (letzterer mit Zeitstempel) hinterlegt
sind.
Das in Fig. 1 dargestellte Multiprozessorsystem besteht bei
spielsweise aus vier Prozessoren CPU, die jeweils über einen
sogenannten "Store-In-Cache" SIC mit dem gemeinsamen Arbeits-
oder Hauptspeicher MM gekoppelt sind. Dargestellt sind wei
terhin zwei Warteschlangen, nämlich WSR für ablaufbereite und
WSW für nicht ablaufbereite Prozesse P. Die Prozesse P in der
Warteschleife WSR sind in der üblichen Weise nach Grup
penprioritäten geordnet und werden dem jeweils frei werdenden
Prozessor CPU abhängig von diesen Prioritäten durch den soge
nannten Dispatcher DISP zugewiesen.
Bei dem dadurch zum Ablauf kommenden Prozeß P kommen nun die
einzelnen Befehle des innerhalb dieses Prozesses P durchlau
fenen Programmes nacheinander zur Ausführung.
Wie Fig. 2 zeigt, können in einem solchen Programm gesonderte
Befehle "SET AKZx" und "RESET AKZx" vorgesehen werden. Die
hierdurch eingerahmte Befehlsfolge stellt einen Programmab
schnitt dar, der mit ebenso gekennzeichneten Programmab
schnitten in anderen Prozessen P dieselben Speicherbereiche
nutzt. Die Markierung eines solchen affinen Programmab
schnitts erfolgt also programmgesteuert, wobei der Befehl
"SET AKZx" zum Setzen eines Affinitätskennzeichens AKZx und
der Befehl "RESET AKZx" zum Zurücksetzen desselben führt.
Diese Befehle für die Markierung einzelner Programmabschnitte
innerhalb der verschiedenen Prozesse P können vom Programmie
rer wahlweise gesetzt werden, um zueinander affine Pro
grammabschnitte verschiedener Prozesse P zu kennzeichnen.
Zur Identifikation der Kennzeichnung einzelner Prozesse P mit
Affinitätskennzeichen dient die in Fig. 2B gezeigte Prozeß-
AKZ-Tabelle, in welcher die Affinitätskennzeichen für die
Zeit, in der sie für den Prozeß P gesetzt sind, hinterlegt
werden. Diese jedem Prozeß P zugeordnete Tabelle wird vom
Dispatcher DISP zentral überwacht.
Die Befehle "SET AKZx" und "RESET AKZx" werden in neuen Rou
tinen des Schedulings realisiert, die nachfolgend anhand von
Fig. 3 und Fig. 4 beschrieben werden.
Nach dem Start der den Befehle "SET AKZx" realisierenden Rou
tine in Fig. 3 wird zunächst überprüft, ob das betreffende Af
finitätskennzeichen AKZx bereits einem anderen Prozessor CPU
zugeordnet ist (Verfahrensschritt 1). Ist dieses nicht der
Fall, wird gemäß Verfahrensschritt 2 das Affinitätskennzei
chen in eine zentrale, vom Dispatcher DISP überwachte Tabelle
mit prozessorindividueller Zuordnung eingetragen und als ak
tiv markiert. Danach kann der "SET AKZx" aufrufende Prozeß P
gemäß Verfahrensschritt 3 in der üblichen Weise fortgesetzt
werden.
Ist dagegen im Verfahrensschritt 1 festgestellt worden, daß
das Affinitätskennzeichen AKZx bereits einem anderen Prozes
sor CPU entsprechend der AKZ-Prozessor-Tabelle in Fig. 7 zuge
ordnet ist, dann ist zu prüfen, ob gemäß Verfahrensschritt 4
der dortige Affinitätskennzeicheneintrag noch als aktiv mar
kiert ist. Ist dieses der Fall, wird im nächsten Verfahrens
schritt 5 der laufende Prozeß P in die Warteschleife WSR mit
seinem Affinitätskennzeichen AKZ zurückgekettet und der zuge
ordnete Prozessor CPU freigegeben. Die "SET AKZx" realisie
rende Routine ist damit beendet, und es wird zum Dispatcher
DISP verzweigt, um dem frei gewordenen Prozessor einen neuen
ablaufbereiten Prozeß P zuzuteilen. Der unterbrochene Prozeß
P wird hinter dem Befehl "SET AKZx" fortgesetzt, sobald er
dem bezüglich des Affinitätskennzeichens affinen Prozessor
zum Ablauf zugeteilt worden ist (Verfahrensschritt 5a). Ana
loges gilt, wenn der Eintrag für das Affinitätskennzeichen
nicht als aktiv markiert ist, aber die dann gemäß dem Verfah
rensschritt 6 zu überprüfende Sperrzeit im betrachteten Ein
trag des Affinitätskennzeichens noch nicht verstrichen ist
(Zeitstempel in Prozessor-AKZ-Tabelle nach Fig. 7). Ist dage
gen die Sperrzeit bereits abgelaufen, kann in den Verfahrens
schritt 2 übergeleitet und das Affinitätskennzeichen in die
Prozessor-AKZ-Tabelle des zugeteilten Prozessors eingetragen
werden.
Bei der den Löschbefehl "RESET AKZx" realisierenden Routine
gemäß Fig. 4 wird zunächst im Verfahrensschritt 7 geprüft, ob
das Affinitätskennzeichen AKZx für den zugeteilten Prozessor
CPU eingetragen und als aktiv markiert ist. Ist dieses nicht
der Fall, kann sofort auf den Verfahrensschritt 8 zur Fort
setzung des Prozesses P hinter dem Aufruf "RESET AKZx" ver
zweigt werden. Im anderen Falle wird gemäß Verfahrensschritt
9 das eingetragene Affinitätskennzeichen als inaktiv markiert
und damit die Sperrzeit durch Setzen des Zeitstempels in der
Prozessor-AKZ-Tabelle aktiviert.
Solange die Sperrzeit wirksam ist, dürfen Prozesse P mit die
sem Affinitätskennzeichen keinem anderen Prozessor zugeteilt
werden. Auf diese Weise wird die Affinität des unterbrochenen
oder beendeten Prozesses P zu einem anderen affinen Prozeß P
für eine gewisse Zeit gewahrt. Die Sperrzeit wird wie bei der
Steuerung innerhalb der natürlichen Affinität abhängig vom
jeweils benötigten Speicherbereich berechnet, wobei das Ende
der Sperrzeit durch einen entsprechenden Zeitstempel markiert
wird. Nach dem Aktivieren der Sperrzeit wird dann der Prozeß
P wiederum mit dem Verfahrensschritt 8 hinter dem Aufruf von
"RESET AKZx" fortgesetzt.
Fig. 5 zeigt das Flußdiagramm für den Dispatcherlauf zwecks
Prozeßzuweisung an einen freien Prozessor CPU, der entspre
chend der Erfindung ergänzt ist und die zusätzliche Affini
tätskennzeichnung zu beachten hat. Im ersten Verfahrens
schritt 10 wird dazu eine Art Normierung durchgeführt, indem
als aktiv markiert vorgefundene Affinitätskennzeichen AKZ in
der Prozessor-AKZ-Tabelle des Prozessors als inaktiv markiert
werden und die jeweilige Sperrzeit aktiviert wird. Danach
wird im Verfahrensschritt 11 der erste ablaufbereite Prozeß P
in der Warteschlange WSR ausgewählt und mit Verfahrensschritt
12 in eine Prüfschleife für die Affinitätsprüfung übergelei
tet (eine genauere Betrachtung der Prüfschleife erfolgt in
Fig. 6A und Fig. 6B).
Ergibt dabei die Prüfung gemäß Verfahrensschritt 13, daß der
Prozessor wegen mangelnder Affinität nicht zugeteilt werden
konnte und befinden sich noch ablaufbereite Prozesse P in der
Warteschlange WSR, dann wird gemäß Verfahrensschritt 14 der
nächste ablaufbereite Prozeß P in der Warteschlange ausge
wählt und überprüft, bis endlich gemäß der Affinitätsprüfung
ein passender Prozeß P gefunden ist oder alle ablaufbereiten
Prozesse P überprüft sind und damit gemäß Schritt 15 das Ende
der Prüfschleife erreicht wird.
Da beim Durchlaufen der Prüfschleife möglicherweise kein af
finer Prozeß P gefunden und daher der Prozessor CPU nicht zu
geteilt worden ist, wird gemäß Verfahrensschritt 16 über
prüft, ob bei nicht zugeteiltem Prozessor noch ablaufbereite
Prozesse P in der Warteschleife sind. Ist dies nicht der
Fall, verbleibt der Prozessor im Leerlaufzustand und das Ende
des Dispatcherlaufes ist erreicht. Im anderen Falle wird ge
mäß Verfahrensschritt 17 der erste Prozeß P aus der Warte
schleife WSR dem Prozessor CPU zugeteilt und außerdem ein In
dikator in der Prozessor-AKZ-Tabelle (oberster Eintrag in Fig.
7) gesetzt, der anzeigt, daß ein nicht affiner Prozeß P bear
beitet wird.
Bei der genaueren Betrachtung der Prüfschleife aus Fig. 5 wird
nach deren Start gemäß Verfahrensschritt 12 in
Fig. 6A zunächst mit Verfahrensschritt 20 überprüft, ob der
ausgewählte Prozeß P in der zugeordneten Prozeß-AKZ-Tabelle
nach Fig. 2B mit einem Affinitätskennzeichen AKZ belegt ist.
Ist dies nicht der Fall, wird gemäß Schritt 21 überprüft, ob
noch eine natürliche Affinität zu einem fremden Prozessor CPU
wirksam ist. Trifft dies ebenfalls nicht zu, wird gemäß
Schritt 22 der Prozeß P dem freien Prozessor zugeteilt und
dieser als zugeteilt gekennzeichnet. Diese Kennzeichnung ist
nur für den momentanen Ablauf von Bedeutung und erfolgt daher
in einem temporären Arbeitsbereich des Prozesses P.
Ergibt die Prüfung gemäß Schritt 20, daß der ausgewählte Pro
zeß P mit einem Affinitätskennzeichen AKZ belegt ist, dann
wird gemäß Schritt 24 weiterhin geprüft, ob dieses Affini
tätskennzeichen bereits einem anderen Prozessor zugeteilt
worden ist. Ist dies nicht der Fall, dann bleibt noch die
Wirksamkeit der natürlichen Affinität zu einem fremden Pro
zessor in Verfahrensschritt 31 zu prüfen. Ist diese gegeben,
bleibt der Prozessor als nicht zugeteilt gekennzeichnet. An
dernfalls wird gemäß Verfahrensschritt 25 der Prozeß P mit
seinem Affinitätskennzeichen AKZ dem Prozessor CPU zugeteilt
und dieser als zugeteilt gekennzeichnet. Außerdem wird das
Affinitätskennzeichen AKZ in der Prozessor-AKZ-Tabelle nach
Fig. 7 auf aktiv gesetzt.
Ergibt dagegen die Überprüfung gemäß Verfahrensschritt 24,
daß das Affinitätskennzeichen bereits einem anderen Prozessor
zugeteilt ist, existiert also ein entsprechender Eintrag in
der Prozessor-AKZ-Tabelle eines fremden Prozessors, dann ist
gemäß Fig. 6B zunächst gemäß Schritt 26 zu prüfen, ob auf die
sem anderen Prozessor gerade ein nicht affiner Prozeß P ab
läuft und der entsprechende Indikator im ersten Eintrag von
dessen Prozessor-AKZ-Tabelle gesetzt ist. Verläuft diese Prü
fung positiv, dann wird gemäß dem Verfahrensschritt 27 der
auf dem anderen Prozessor gerade aktive Prozeß P unterbrochen
und in die Warteschlange WSR zurückgekettet. Danach wird der
zuvor aus der Warteschlange WSR ausgewählte Prozeß P mit sei
nem Affinitätskennzeichen dem anderen Prozessor zugeteilt und
dieser als zugeteilt gekennzeichnet. Außerdem wird wiederum
das Affinitätskennzeichen als aktiv markiert. Der freie
(lokale) Prozessor bleibt dagegen als nicht zugeteilt gekenn
zeichnet.
Bei negativem Ergebnis der Prüfung gemäß dem Verfahrens
schritt 26 erfolgt gemäß dem Verfahrensschritt 28 eine wei
tere Prüfung, nämlich daraufhin, ob das dem anderen Prozessor
CPU zugeteilte Affinitätskennzeichen als inaktiv markiert ist
und außerdem die Sperrzeit sowie die Bindungsfrist wegen na
türlicher Affinität abgelaufen ist. Ist dies der Fall, dann
kann gemäß Schritt 29 das Affinitätskennzeichen in der Pro
zessor-AKZ-Tabelle des anderen Prozessors gelöscht werden und
der Prozeß P aus der Warteschleife WSR mit dem Affinitäts
kennzeichen dem freien (lokalen) Prozessor zugeteilt werden,
der dann als zugeteilt gekennzeichnet wird. Weiterhin wird
wiederum das Affinitätskennzeichen AKZ als aktiv markiert.
Ist dagegen gemäß Schritt 28 das Affinitätskennzeichen AKZ
auf dem anderen Prozessor noch aktiv oder die Sperrzeit noch
nicht abglaufen, dann kann der mit demselben Affinitätskenn
zeichen belegte Prozeß P dem freien Prozessor nicht zugeteilt
werden. Dies gilt auch, wenn noch eine wirksame natürliche
Affinität zum anderen Prozessor besteht.
Nach Durchlaufen der verschiedenen Prüfzweige wird wieder in
den Verfahrensschritt 13 von Fig. 5 übergeleitet und über
prüft, ob der Prozessor CPU einem ablaufbereiten Prozeß P aus
der Warteschlange WSR zugeteilt wurde. Abhängig vom Ergebnis
dieser Prüfung wird dann wieder in den Verfahrensschritt 14
übergeleitet oder das Ende der Prüfschleife gemäß 15 er
reicht.