22.12.2013 Aufrufe

Verbindungsnetzwerke für parallel und verteilte Systeme.pdf

Verbindungsnetzwerke für parallel und verteilte Systeme.pdf

Verbindungsnetzwerke für parallel und verteilte Systeme.pdf

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Jeder Knoten ist ein eigenständiger Rechner mit MACH Mikro Kernel, auf dem<br />

das HP-UX Betriebssystem, eine UNIX-Variante, läuft. Zur Unterstützung der<br />

Betriebsprogramme trägt wesentlich der Agent-Baustein bei, der <strong>für</strong> die Arbitrierung<br />

der beiden Knotenprozessoren beim Speicherzugriff <strong>und</strong> beim Zugriff<br />

auf den gemeinsamen Kreuzschienenverteiler sorgt. Die <strong>für</strong> das UNIX Betriebssystem<br />

unerläßlichen Festplattenzugriffe der Rechenknoten werden über<br />

den Agent Chip <strong>und</strong> den Kreuzschienenverteiler abgewickelt.<br />

5.3.8 Kommunikations- <strong>und</strong> Programmiermodelle<br />

Trotz der Heterogenität der <strong>Verbindungsnetzwerke</strong> in x- <strong>und</strong> y-Richtung existiert<br />

ein einheitliches, von der Richtung unabhängiges Programmiermodell,<br />

das wahlweise auf Botschaftenaustausch oder gemeinsamen Variablen basiert.<br />

Darüberhinaus können auch hybride Programmiermodelle, wie gemeinsamer<br />

Speicher in den Hyperknoten <strong>und</strong> Botschaftenaustausch zwischen den Hyperknoten<br />

verwendet werden. Auch die umgekehrte Reihenfolge ist möglich, um<br />

dem Benutzer volle Flexibilität zu ermöglichen.<br />

Weiterhin gibt es zur schnellen Prozeßsynchronisation eine Barrierenfunktion,<br />

die von Anwenderprogrammen aus aufrufbar ist <strong>und</strong> mit deren Hilfe die<br />

Beendigung einer <strong>parallel</strong>en Schleife beispielsweise effizient detektierbar ist.<br />

Ebenso sind unteilbare fetch&increment-Operationen implementiert, die <strong>für</strong><br />

Semaphoren notwendig sind. Insgesamt können von der Exemplar drei verschiedene,<br />

atomare Semaphoroperationen zur Unterstützung der <strong>parallel</strong>en Programmierung<br />

ausgeführt werden:<br />

• fetch&clear (Liest den Wert einer Variablen <strong>und</strong> setzt ihn anschließend auf<br />

Null)<br />

• fetch&increment (Liest den Wert einer Variablen <strong>und</strong> erhöht ihn um Eins)<br />

• fetch&decrement (Liest den Wert <strong>und</strong> erniedrigt ihn um Eins)<br />

Semaphorvariablen müssen aus dem Cache entfernt werden (sog. Cache Flush),<br />

bevor eine Operation auf sie angewandt wird, um sicherzustellen, daß jede<br />

Semaphore ein Unikat ohne Kopien ist. Dazu ist die betreffende Semaphorvariable<br />

in ein CPU-Register unter Umgehung des Cache zu lesen. Dies<br />

leistet der Spezialbefehl "fetch", der eine Variable aus dem globalen Adreßraum<br />

ohne Cache-Intervention in ein CPU-Register lädt, in dem sie anschließend<br />

modifiziert werden kann. In gleicher Weise arbeiten die drei oben dargestellten<br />

Semaphor-Befehle. Mit Hilfe der Semaphoroperationen sind in der<br />

Exemplar binäre Verriegelungen (Locks), Barriensynchronisation (Barriers),<br />

multiple Schreibe/Lese-Synchronisationen sowie die Synchronisation gemeinsamer<br />

Listen implementiert, die von mehreren Prozessoren verwaltet werden.<br />

Da die beschriebenen höheren Programmierfunktionen, die dem Benutzer<br />

transparent zur Verfügung stehen, in Software realisiert sind, erhöht sich der<br />

Verkehr auf dem Verbindungsnetzwerk um die dazu notwendigen Kernel-<br />

Kommunikationen.<br />

Zur Kompatibilität mit Programmen, die <strong>für</strong> HP-Arbeitsplatzrechner geschrieben<br />

wurden, <strong>und</strong> zur Vereinfachung der Portierung vorhandener sequen-<br />

278

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!