-
GEBIET DER
ERFINDUNG
-
Die
Erfindung betrifft Zwischenspeicher-Verwaltung und, insbesondere,
Verwaltung des Ersetzens von Daten in einem Zwischenspeicher auf
einem Knoten aufgrund von Zwischenspeichern anderer Knoten.
-
HINTERGRUND
DER ERFINDUNG
-
Ein
Cluster ist eine Sammlung von Knoten (nodes), wobei jeder mit volatilen
dynamischen Speichervorrichtungen („dynamischer Speicher") ist, der von einem
oder einer Mehrzahl von CPU's
geteilt wird. Jeder Knoten in einem Cluster ist mit den anderen
Knoten in dem Cluster über
eine Zwischenverbindung gekoppelt. Typischerweise teilt sich jeder
Knoten in dem Cluster Ressourcen mit anderen Knoten in dem Cluster.
Solche Ressourcen können,
zum Beispiel, Datenwerte sein, wie zum Beispiel Seiten, die in einer
statischen Speichervorrichtung (z.B. Platten-Speichervorrichtungen)
gespeichert sind.
-
Software,
die als Anwendung bezeichnet wird, läuft auf jedem der Knoten. Die
Anwendung wird auf Daten von geteilten Datenressourcen betrieben.
Zum Beispiel kann ein Datenbanksystem auf jedem Knoten in dem Cluster
laufen und Daten verwalten, die in den Datenblöcken auf den Plattenspeichervorrichtungen
gespeichert sind.
-
Zum
Beschleunigen des Zugriffs auf Datenwerte, die von einer Anwendung
benötigt
werden, die auf einem Knoten in einem Cluster läuft, werden Kopien der Datenwerte
in dem Zwischenspeicher des Knotens gehalten. Ein Zwischenspeicher
(Cache) ist ein Speichermedium, das zum Speichern einer Kopie eines
Datenwerts zum effektiven Zugriff verwendet wird, wobei dieser Datenwert
von anderen Quellen weniger effizient erhalten werden kann. Die
andere Quelle, auf die weniger effizient zugegriffen wird, wird nachstehend
als eine sekundäre
Datenquelle bezeichnet. Zum Beispiel speichert ein Datenbanksystem,
das auf einem Knoten in einem Cluster läuft, typischerweise Datenblöcke dauerhaft
auf einer Speicherscheibe. Jedoch lädt das Datenbanksystem Kopien
der Datenblöcke
in einen Zwischenspeicher in einem dynamischen Speicher, um darauf
zuzugreifen. In ähnlicher
Weise speichert ein Browser, der auf einem persönlichem Rechner läuft, Webseiten,
auf die häufig
zugegriffen wird, die über
ein Netzwerk erhalten werden, in einem Zwischenspeicher in der Form
von Platten-Dateien.
-
Ein
Speicher auf einem Knoten wird von einem Zwischenspeicher-Manager
verwaltet. Ein Zwischenspeicher-Manager
ist ein Softwaresystem, das versucht, einen Zwischenspeicher in
einer Weise zu verwalten, die Eingabe und Ausgabe zwischen dem Zwischenspeicher
und einer sekundären
Datenressource reduziert. Typischerweise hält der Zwischenspeicher-Manager
eine Kopie der Datenwerte, auf die am häufigsten zugegriffen wird,
in dem Zwischenspeicher. Zusätzlich
kann ein Zwischenspeicher-Manager Änderungen nachverfolgen, die
von einer Anwendung an einem Datenwert gemacht werden, und kann
durch „Zurückschreiben", „Hindurchschreiben" und verschiedene
Logging-Mechanismen arrangieren, dass jeder Datenwert dauerhaft
in einer sekundären
Datenressource (z.B. Plattenspeichervorrichtung) gespeichert wird.
-
Datenwerte,
auf die von einer bestimmten Anwendung häufig zugegriffen wird, werden
gemeinsam als Arbeitssatz der Anwendung bezeichnet. Wenn der Arbeitssatz
einer Anwendung zu groß ist, um
in den Zwischenspeicher eines Knotens zu passen, auf dem die Anwendung
läuft,
stürzt
die Anwendung ab. Abstürzen
beinhaltet Ersetzen von zwischengespeicherten Datenwerten in einem
Zwischenspeicher durch Datenwerte aus sekundären Datenressourcen mit einer
unerwünschten
hohen Frequenz. Abstürzen
tritt auf, wenn Datenwerte, auf die häufig zugegriffen wird, sich
kontinuierlich gegenseitig in dem Zwischenspeicher ersetzen, wodurch häufige Zwischenspeicher-Verluste verursacht
werden und dadurch die durchschnittliche Datenwert-Zugriffszeit
drastisch erhöht
wird. Wenn ein Absturz auftritt und eine Anwendung Datenwerte benötigt, verspätet sich
die Anwendung zu oft, indem auf das Abfragen eines benötigten Datenwerts
aus der sekundären
Datenressource gewartet wird. Abstürzen reduziert daher einen
Durchsatz. Andererseits stürzt die
Anwendung nicht ab und der Durchsatz des Systems ist verbessert,
wenn der Arbeitssatz in verfügbaren
dynamischen Speicher passt.
-
Ein
skalierbarer Cluster ist ein Cluster zu dem Ressourcen hinzugefügt werden
können,
um die Kapazität
des Clusters als ein Ganzes proportional zu erhöhen. Eine Ressource kann, zum
Beispiel, ein Computer, eine CPU, eine Speichervorrichtung, Verbindungsbandbreite
oder dynamischer Speicher pro Computer sein. Typischerweise wird
die Kapazität
gemäß einem
Maß von
Geschäftswachstum
gemessen, wie zum Beispiel der Anzahl der Benutzer, dem Webseiten-Zugriff
pro Sekunde, den Übermittlungen
pro Zeitperiode und/oder Terabyte von Daten.
-
Wenn
der Bedarf an Kapazität
in einem Cluster steigt, steigt üblicherweise
der Bedarf an CPU's und
manchmal steigt der Arbeitssatz. Zum Anpassen des Bedarfs nach zusätzlichen
CPU's können mehr Knoten
zu dem Cluster hinzugefügt
werden. Jedoch benötigt
ein Anpassen an einen erhöhten
Arbeitssatzes mehr als nur ein Hinzufügen von Rechnern zu dem Cluster.
Stattdessen muss der dynamische Speicher aller Knoten in dem Cluster
erhöht
werden, da jeder Knoten genügend
dynamischen Speicher zum Speichern des Arbeitssatzes benötigt. Jeder Knoten
benötigt
genügend
dynamischen Speicher zum Speichern des gesamten Arbeitssatzes, da
ein großer
Teil der Seiten, auf die am häufigsten
zugegriffen wird, typischerweise in dem Zwischenspeicher jedes Knotens
wiederholt ist.
-
Für jeden
Rechner ist die Menge von dynamischen Speicher, die hinzugefügt werden
kann, begrenzt. Sogar bevor die Grenze erreicht ist, ist die Gesamtmenge
von dynamischen Speicher, die von der Anwendung benötigt ist,
gleich seinem Arbeitssatz multipliziert mit der Anzahl von Knoten
in dem Cluster. Wenn der Cluster wächst, falls der Arbeitssatz
genauso wächst,
dann verringert sich die Preis-Leistung mit der Cluster-Größe und somit
skaliert sich der Cluster nicht. Falls der Arbeitssatz größer als
die Grenze ist, dann stürzt
die Anwendung ab. Hinzufügen
von Knoten zu dem Cluster kann die CPU-Kapazität des Clusters erhöhen, aber
sie wird das Abstürzen
nicht eliminieren. Folglich leidet der Durchsatz des Clusters.
-
Basierend
auf dem Vorangegangenen ist es wünschenswert,
einen Mechanismus zum Reduzieren des Abstürzens auf einem Cluster bereitzustellen,
für den
es nicht nötig
ist, jedem Knoten in dem Cluster dynamischen Speicher hinzuzufügen.
-
Die
folgenden Bezugnahmen geben den Stand der Technik an:
- US-Patent
Nr. 6,092,157 für
Suzuki beschreibt ein Informationsverarbeitungssystem, das eine
Mehrzahl von Knoten verwendet, in dem jeder der Knoten fähig ist,
sowohl auf seinen eigenen internen Speicher als auch auf Speicher
anderer Knoten zuzugreifen;
- Feeley M. J. et al. „Implementing
Global Memory Management a Workstation Cluster Operating Systems Review
(SIGin OPS), ACM-Hauptquartier, New York, U.S. Vol. 29, Nr. 5, 1.
Dezember 1995, Seiten 201, 212, XP000584826 beschreibt den Entwurf
eines Workspace-Clusters mit dem Ziel des Verwendens eines einzelnen,
vereinheitlichten aber verteilten Speicherverwaltungsalgorithmus
auf dem untersten Level des Betriebssystems;
- US-Pat. Nr. 5,680,576 für
Laudon beschreibt ein Multiprozessorsystem mit einer Mehrzahl von
Nachfragern, wobei ein Speicher und ein Speicherverzeichnis-Steuergerät, die eine
Verzeichnis-basierte Kohärenz
anwenden, ein Verfahren zum Detektieren eines Fallens von Sauber-exklusiven
(clean-exclusive)
Daten implementieren. Nur einer Interventionsnachricht wird erlaubt,
auf ein exklusives Objekt zuzugreifen, das von einem ersten Nachfrager
gehalten wird, wobei die Interventionsnachricht von einem zweiten Nachfrager
hervorgerufen ist. Das System detektiert, ob der erste Nachfrager
ein außergewöhnliches
Zurückschreiben
(writeback) für
das Ziel, auf das von der Interventionsnachricht gezielt wird, sowie
ob der erste Nachfrager eine Sauber-exklusive, Schmutzig-exklusive
(dirty-exclusive) oder ungültige
Kopie des Objekts, auf das von der Interventionsnachricht gezielt
wird, aufweist. Eine Sauber-exklusive Kopie des Ziels wurde fallen
gelassen, wenn kein außerordentliches
Zurückschreiben
detektiert wurde und der erste Nachfrager das Objekt in dem ungültigen Zustand
aufweist.
- US-Pat. Nr. 5,297,269 für
Howard et al. beschreibt ein Zwischenspeicher-Kohärenzprotokoll
für ein
Multiprozessorsystem, das für
Lese/Schreib-, Nur-Lese- und Übergangsdatenzustände bereitsteht
und für
ein Anzeigen dieser Zustände,
die in einem Speicherverzeichnis im Hauptspeicher zu speichern sind;
und
- US-Pat. Nr. 5,829,032 für
Yamagami et al. beschreibt, wodurch so viele Bezeichner (tag)-Informationen
wie der Anzahl von Blöcken
entsprechen, die in Hauptspeichern gespeichert sind, in Bezeichner-Speichern
gespeichert sind. Die Bezeichner-Information zeigt an, ob ein Prozessor,
der zu einem anderen Knoten gehört
wie die Knoten, die Bezeichner-Speicher
aufweisen, eine Zugriffsanfrage gemacht hat, und die Inhalte eines
Zwischenspeichers erneut geschrieben wurden, oder nicht. Bus-Brücken führen ein
Zwischenspeicher-Kohärenzprotokoll durch,
das auf die Bezeichner-Informationen bezogen ist. Wen die Bezeichner-Information „modifiziert" anzeigt, stoppen
die Bus-Brücken
das Lesen von Daten aus den Hauptspeichern und senden die korrekten
Daten an den anfragenden Prozessor, nachdem ein Zurück-Speichern-Prozess
des modifizierten Blocks abgeschlossen ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
Erfindung schafft ein Verfahren zum Verwalten des Ersetzens von
Daten, die in Puffern einer Mehrzahl von Zwischenspeichern gespeichert
sind, wobei die Mehrzahl von Zwischenspeichern auf einem Knoten
eines Satzes von einem oder einer Mehrzahl von Knoten angeordnet
sind. Jeder Knoten des Satzes von einem oder einer Mehrzahl von
Knoten weist einen oder eine Mehrzahl von Zwischenspeichern der
Mehrzahl von Zwischenspeichern auf, wobei die Mehrzahl von Zwischenspeichern
einen ersten Zwischenspeicher aufweist. Das Verfahren weist Auswählen zum
Ersetzen eines ersten Puffers aus dem ersten Zwischenspeicher auf
der Basis von einem oder einer Mehrzahl von Faktoren aus einer Mehrzahl
von Puffern auf, die zum Ersetzen in dem ersten Zwischenspeicher
verfügbar
sind. Der eine oder die Mehrzahl von Faktoren in einer bestimmten Ausführungsform
weisen entweder den Zustand von wenigstens einem anderen Zwischenspeicher
der Mehrzahl von Zwischenspeichern, oder die Konfiguration des wenigstens
einen anderen Zwischenspeichers der Mehrzahl von Zwischenspeichern
auf. Das Verfahren weist ferner den Vorgang des Ersetzen des ersten
Datenwerts, der in dem ersten Puffer gespeichert ist, durch einen
zweiten Datenwert, und des Übertragens
des ersten Datenwertes in einen anderen bestimmten Zwischenspeicher
der Mehrzahl von Zwischenspeicher auf. In Antwort auf das Übertragen des
ersten Datenwerts in den bestimmten Hilfsspeicher, weist das Verfahren
ferner auf ein Erzeugen von Daten, die anzeigen, dass der erste
Puffer Daten aufweist, die aus dem ersten Zwischenspeicher entfernt
werden können,
wobei der eine oder die Mehrzahl von Faktoren Daten aufweisen, die
anzeigen, dass der erste Puffer einen Datenwert aufweist, der ersetzt
werden kann.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Erfindung ist beispielhaft und nicht beschränkend in den Figuren der begleitenden
Zeichnungen dargestellt, und in der gleiche Bezugszeichen ähnliche
Elemente bezeichnen, und in der:
-
1 ein
Blockdiagramm eines beispielhaften Clusters ist;
-
2 ein
Ablaufdiagramm eines Prozesses ist, der Techniken zum Verwalten
eines Zwischenspeichers gemäß einem
Ausführungsbeispiel
der Erfindung implementiert;
-
3 ein
Ablaufdiagramm eines Prozesses ist, der Techniken zum Verwalten
eines Zwischenspeichers gemäß einem
Ausführungsbeispiel
der Erfindung implementiert;
-
4 ein
Blockdiagramm eines Rechnersystems ist, auf dem ein Ausführungsbeispiel
der Erfindung implementiert sein kann.
-
DETAILLIERTE
BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
-
Ein
Verfahren und eine Vorrichtung zum Verwalten (managing) von Zwischenspeichern
(Caches) auf den Knoten eines Clusters wird beschrieben. In der
folgenden Beschreibung werden, zum Zwecke der Erklärung, zahlreiche
spezifische Details erklärt, um
ein gründliches
Verständnis
der Erfindung zu schaffen. Es wird für einen Fachmann jedoch offensichtlich
sein, dass die Erfindung ohne diese spezifischen Details ausgeführt werden
kann. Andererseits sind bekannte Strukturen und Vorrichtungen in
Blockdiagramm-Form gezeigt, um ein unnötiges Verdecken der Erfindung
zu vermeiden.
-
BEISPIELHAFTER
CLUSTER
-
1 ist
ein Blockdiagramm, das einen beispielhaften Cluster 100 abbildet,
auf dem ein Ausführungsbeispiel
der Erfindung eingerichtet sein kann. Der Cluster 100 weist
Knoten 110, 130 und 150 auf. Eine Zwischenverbindung 160 verbindet
die Knoten 110, 130 und 150, so dass
jeder Knoten im Cluster 100 Daten an den dynamischen Speicher
eines anderen Rechners übermitteln
kann.
-
Jeder
der Knoten 110, 130 und 150 weist einen
Zwischenspeicher und einen Zwischenspeicher-Manager auf. Insbesondere
weist der Knoten 110 einen Zwischenspeicher 114 und
einen Zwischenspeicher-Manager 112 auf, der Knoten 130 weist
einen Zwischenspeicher 134 und einen Zwischenspeicher-Manager 132 auf
und der Knoten 150 weist einen Zwischenspeicher 154 und
einen Zwischenspeicher-Manager 152 auf. Während ein
Ausführungsbeispiel
der Erfindung unter Verwendung von Zwischenspeichern dargestellt
ist, die alle auf verschiedenen Knoten sitzen, ist die Erfindung
nicht auf Zwischenspeicher beschränkt, die auf verschiedenen
Knoten sitzen. Sondern die Erfindung kann mit Zwischenspeichern
eingerichtet sein, die eine Untermenge von Zwischenspeichern aufweisen,
die auf dem gleichen Knoten sitzen, oder die alle auf dem gleichen
Knoten sitzen.
-
Zwischenspeicher 114, 134 und 154 werden jeweils
von Zwischenspeicher-Managern 112, 132 bzw. 152 zum
Speichern von Datenwerten verwaltet, auf die von einem Satz von
Anwendungen zugegriffen wird, die auf dem Cluster 100 laufen.
In einem Ausführungsbeispiel
der Erfindung kann der Anwendungssatz ein Datenbanksystem sein.
Jeder der Zwischenspeicher-Manager 112, 132 und 152 läuft unter der
Kontrolle eines Datenbanksystems. Die Zwischenspeicher 114, 134 und 154 werden
zum Speichern von Datenblöcken
verwendet, die Daten aufweisen, die von dem Datenbanksystem verwaltet werden.
-
Die
Zwischenspeicher-Manager 112, 132 und 152 bilden
gemeinsam einen „kohärenten Cluster-Zwischenspeicher-Manager". Ein kohärenter Cluster-Zwischenspeicher-Manager
ist ein System aus Software, das auf einem Cluster läuft, der
die Zwischenspeicher in solch einer Weise global verwaltet, dass,
wenn eine Anwendung Zugriff auf einen Datenwert in einem gegebenen
Zwischenspeicher anfragt, und der Datenwert nicht in dem gegebenen Zwischenspeicher
gespeichert ist, aber in einem anderen Zwischenspeicher gespeichert,
ein Kopie des Datenwerts direkt von dem anderen Zwischenspeicher
zu dem gegebenen Zwischenspeicher kopiert wird. Falls der Datenwert
modifiziert wurde, kann eine Kopie des Datenwerts, wie modifiziert,
zu einem gegebenen Zwischenspeicher übermittelt werden, ohne zuerst
den Datenwert dauerhaft in einer sekundären Datenressource zu speichern.
Ein Beispiel eines kohärenten
Zwischenspeicher-Managers ist in Klots offenbart, der ein Datenbanksystem
beschreibt, das einen Zwischenspeicher verwaltet.
-
Ein
kohärenter
Cluster-Zwischenspeicher-Manager unterscheidet sich von dem typischen herkömmlichen
Zwischenspeicher-Manager auf einem Cluster. Ein herkömmlicher
Zwischenspeicher-Manager wird typischerweise nicht auf einem Knoten
in einem Cluster betrieben, und, wenn der Knoten einen Datenwert
benötigt,
der nicht auf dem Knoten zwischengespeichert ist, bekommt er eine Kopie
eines Datenwerts von einer sekundären Datenressource, und nicht
von dem Zwischenspeicher eines anderen Knotens. Tatsächlich weist
der herkömmliche
Zwischenspeicher-Manager kein Wissen auf, dass eine Kopie des angefragten
Datenwerts in einem anderen Zwischenspeicher existiert, egal ob der
Zwischenspeicher auf dem gleichen Knoten sitzt oder auf einem verschiedenen
Knoten. Folglich zieht sich ein herkömmlicher Zwischenspeicher-Manager zum
Bekommen einer Kopie des Datenwerts die Kosten des Zugriffs auf
eine sekundäre
Datenressource zu, wie zum Beispiel eines Plattenspeichersystems.
-
Zugreifen
auf eine sekundäre
Datenressource, wie zum Beispiel ein Plattenspeichersystem, verursacht
relativ teure Eingabe- und Ausgabevorgänge. Andererseits ist Zugreifen
auf dynamischen Speicher eines anderen Knotens in dem Cluster eine
relativ kostengünstiger
Vorgang. Folglich ist das Bekommen einer Kopie eines Datenwerts
von einem anderen Zwischenspeicher, ob der Zwischenspeicher auf
einem anderen Knoten ist oder nicht, weit billiger als ein Bekommen
einer Kopie von einer sekundären
Datenressource.
-
Mit
der Fähigkeit
zum kostengünstigeren
Bekommen eines angefragten Datenwerts von einem anderen Zwischenspeicher,
können
Duplikate von Datenwerten, auf die häufig zugegriffen wird, von
einigen anderen Zwischenspeichern entfernt werden, ohne ein Abstürzen zu
verursachen, solange sie in wenigstens einem Zwischenspeicher in
dem Cluster gespeichert werden. Eher als erneutes Zugreifen auf eine
Kopie einer Seite, auf die häufig
zugegriffen wird, von einer sekundären Datenressource, wird ein Kopie
weit weniger teuer von dem Zwischenspeicher eines anderen Knotens
wieder bekommen.
-
Da
Duplizieren von Datenwerten, ohne ein Abstürzen zu verursachen, reduziert
werden kann, wird eine Aufteilung des Arbeitssatzes (working set) auf
die Knoten in einem Cluster realisierbar. Da der Arbeitssatz zwischen
den Knoten aufgeteilt wird, und nicht auf allen dupliziert wird,
kann zusätzlicher
dynamischer Speicher für
einen Arbeitssatz vorgesehen werden, indem dem Rechner eher ein
Knoten hinzugefügt
wird, als dass der dynamische Speicher auf allen Knoten vergrößert wird.
Aus Effizienzgründen,
ist die Größe des Arbeitssatzes
daher nicht durch die Kapazität
des dynamischen Speichers eines Rechners beschränkt, und folglich ist die Skalierbarkeit nicht
durch die Größe des Arbeitssatzes
und der Kapazität
des dynamischen Speichers der Knoten in dem Cluster begrenzt.
-
Zum
Beispiel gibt es 1000 Datenblöcke,
auf die häufig
von einem Datenbanksystem zugegriffen wird, das auf einem Vier-Knoten-Cluster läuft. Wenn der
Arbeitssatz aufgeteilt wird, brauchen die Blöcke, auf die häufig zugegriffen
wird, nicht in dem Zwischenspeichern der Knoten dupliziert werden.
Der Arbeitssatz kann folglich geteilt werden, so dass jeder der
Zwischenspeicher 250 der Datenblöcke hält, auf die häufig zugegriffen
wird. Falls ein anderer Knoten hinzugefügt wird, dann würde jeder
der Knoten 200 Blöcke
zu halten haben. Falls der Arbeitssatz nicht geteilt wird, dann
muss jeder Knoten genug dynamischen Speicher aufweisen, um 1000
Blöcke
zu halten.
-
ERSETZUNGSPOLITIK, DIE
DUPLIZIEREN VON DATENWERTEN REDUZIERT
-
Die
hierin beschriebenen Techniken zum Reduzieren der Duplikate von
Datenwerten, die im globalen Zwischenspeicher gespeichert sind,
sind in die Ersetzungspolitik einer Zwischenspeicher-Manager eingeschlossen.
Der Begriff globaler Zwischenspeicher wird nachstehend zum Bezeichnen
einer Zwischenspeichermenge von einem oder einer Mehrzahl von Knoten
verwendet, zum Beispiel der Knoten in einem Cluster, wo jeder der
Zwischenspeicher Datenwerte hält,
auf die von einem Satz von einer oder einer Mehrzahl von Anwendungen
zugegriffen wird. Ein bestimmter Zwischenspeicher, der von einer
Zwischenspeicher-Manager verwaltet wird, wird als ein lokaler Zwischenspeicher
bezüglich
der Zwischenspeicher-Manager bezeichnet. Eine Ersetzungspolitik
ist der Satz von Regeln und Prozeduren, denen ein Zwischenspeicher-Manager
folgt, zum Auswählen
eines Puffers, der schon einen Datenwert enthält, wenn ein Puffer zum Halten
eines gegebenen Datenwerts benötigt
wird. Der Datenwert in dem ausgewählten Puffer wird mit dem gegebenen
Datenwert ersetzt. Folglich wählt
der Zwischenspeicher-Manager einen Puffer aus, der Daten aufweist,
die einen relativ kleinen Zwischenspeicher-Beibehaltungswert aufweisen.
-
Ein
Zwischenspeicher-Beibehaltungswert ist ein Maß für den Grad bis zu dem ein Behalten
eines Datenwerts in dem Zwischenspeicher dem effizienten Betrieb
des Zwischenspeichers nützt.
Typischerweise weisen die Datenwerte, auf die am häufigsten zugegriffen
wird, einen größeren Zwischenspeicher-Beibehaltungswert
auf, da das Behalten derselben im Zwischenspeicher eine größere Anzahl
von Eingabe- und Ausgabevorgängen
zwischen dem Zwischenspeicher und einer sekundären Datenquelle verhindert.
Der Begriff Behalten bezeichnet ein Ausführen von Vorgängen, die
die Wahrscheinlichkeit erhöhen,
dass ein bestimmter Datenwert in einem Zwischenspeicher länger bleiben
wird, als ein anderer Datenwert, typischerweise ein Datenwert mit einem
kleineren Zwischenspeicher-Beibehaltungswert. Behalten kann sich
auf ein Auswählen
zum Ersetzen eines anderen Datenwerts oder einfach Zuweisen eines
kleineren Zwischenspeicher-Beibehaltungswert für den anderen Datenwert beziehen.
-
Eine
Mehrzahl von Faktoren kann zum Bestimmen des Zwischenspeicher-Beibehaltungswerts eines
Puffers verwendet werden. Zum Beispiel weisen die Datenwerte, auf
die vor kürzester
Zeit zugegriffen wurde, einen größeren Zwischenspeicher-Beibehaltungswert
auf als diejenigen, auf die vor längster Zeit zugegriffen wurde,
da die Datenwerte, auf die vor kürzester
Zeit zugegriffen wurde, die wahrscheinlichsten sind, auf die in
der Zukunft zugegriffen wird. Ein Zwischenspeicher-Manager kann
eine vor kürzestem
verwendete Liste (LRU, least recently used) aufrechterhalten, die
Puffer von den vor kürzester Zeit
zugegriffenen zu den am wenigsten kurz zugegriffenen anweist. Die
Gegenstände,
auf die vor kürzestem
zugegriffen wurde, sind am Kopf der Liste und die vor wenigsten
kurzem zugegriffenen sind am Boden der Liste. Folglich zeigt die
Position eines Puffers innerhalb einer LRU den Zwischenspeicher-Beibehaltungswert
des Datenwerts an, der innerhalb eines Puffers gehalten wird. Ein
anderer Faktor, der in Betracht gezogen werden kann, ist, wie häufig auf
einen Datenwert innerhalb einer letzten Zeitperiode zugegriffen
wurde. Die Datenwerte, auf die in der unmittelbaren Vergangenheit
am häufigsten
zugegriffen wurde, weisen einen größeren Zwischenspeicher-Beibehaltungswert
auf, da diese Datenwerte die wahrscheinlichsten sind, auf die in
der nächsten
Zukunft zugegriffen wird. Beim Bestimmen des Zwischenspeicher-Beibehaltungswerts
gemäß den hierin
beschriebenen Techniken, folgt ein Zwischenspeicher-Manager einer
Ersetzungspolitik, die auch Faktoren berücksichtigt, die den globalen
Zwischenspeicher beinhalten, nicht nur einen lokalen Zwischenspeicher.
Einer dieser Faktoren ist, ob ein Datenwert in den Zwischenspeichern
eines globalen Zwischenspeichers verdoppelt ist.
-
REDUZIEREN
VON DOPPELTEN KOPIEN EINES DATENWERTS
-
2 ist
ein Ablaufdiagramm, das einen Prozess abbildet, dem, zumindest teilweise,
beim Implementieren einer Ersetzungspolitik, die doppelte Kopien
von Datenwerten in den Zwischenspeichern eines Clusters reduziert,
gefolgt werden kann. Die Schritte werden von einem Zwischenspeicher-Manager durchgeführt, wenn
er eine Anfrage nach einen Datenwert in dem Zwischenspeicher empfängt, der von
der Zwischenspeicher-Manager
verwaltet wird. Die Schritte werden unter Verwendung des in 1 gezeigten
Clusters 100 dargestellt.
-
Mit
Bezugnahme auf 1 empfängt der Zwischenspeicher-Manager 112 in
Schritt 210 eine Anfrage von dem Zwischenspeicher-Manager 132 zum
direkten Übermitteln
eines Datenwerts, der in dem Zwischenspeicher 114 gespeichert
ist, an den Zwischenspeicher 134. In Schritt 220 übermittelt
der Zwischenspeicher-Manager 112 den angefragten Datenwert
direkt an den Zwischenspeicher 134.
-
In
Schritt 230 wird bestimmt, ob der übermittelte Datenwert ein Datenwert
ist, der eine Verdopplung in anderen Zwischenspeichern verdient.
Im Allgemeinen weisen Datenwerte, die eine Verdopplung verdienen,
solch einen hohen Zwischenspeicher-Beibehaltungswert auf, dass die
Kosten des Verdoppelns derselben bezüglich, zum Beispiel, eines
erhöhten
dynamischen Speicherverbrauchs, ihre Verdopplung rechtfertigen.
Zum Beispiel können
die Datenwerte, auf die am häufigsten
zugegriffen wird, in dem Zwischenspeicher 110 eine Verdopplung
verdienen. Falls bestimmt wird, das der übermittelte Datenwert ein Datenwert
ist, der eine Verdopplung verdient, enden die in 1 gezeigten
Schritte. Ansonsten schreitet die Ausführung der Schritte mit Schritt 240 fort.
-
Mit
Schritt 240 richtet der Zwischenspeicher-Manager 112 den
Puffer, der den Datenwert hält,
als ersetzbar ein. Einrichten des Puffers als ersetzbar qualifiziert
ihn zum Auswählen
während
des Ersetzungs-Verarbeiten. Es gibt eine Mehrzahl von Wegen zum
Einrichten eines Puffers als ersetzbar. Zum Beispiel kann ein Puffer
als unmittelbar ersetzbar markiert werden, indem eine Markierung
(Flag) in dem Puffer gesetzt wird, oder zu einer Liste von Puffern
hinzugefügt
wird, die ersetzbar sind.
-
Wenn
der Zwischenspeicher-Manager 112 eine Ersetzungs-Verarbeitung durchführt, kann
er einen Puffer auswählen,
der als unmittelbar ersetzbar eingerichtet wurde. Der Puffer kann
ausgewählt
werden obwohl, zum Beispiel, sein Platz auf einer LRU, die von der
Zwischenspeicher-Manager 112 aufrechterhalten wird, anzeigt,
dass der Puffer einen Datenwert hält, dessen Neuheit des Zugriffs
relativ hoch ist. Wenn ein Zwischenspeicher-Manager zum Ersetzen
einen Puffer auswählt,
der als unmittelbar ersetzbar eingerichtet wurde, da der Datenwert
des Puffers zu einem anderen Zwischenspeicher übermittelt wurde, folgt der
Zwischenspeicher-Manager einer Ersetzungspolitik, die den Zustand
des globalen Zwischenspeichers berücksichtigt. Insbesondere ersetzt der
Zwischenspeicher-Manager den Datenwert mindestens teilweise, da
er in einem anderen Zwischenspeicher gespeichert ist.
-
Andererseits
ist die Existenz einer Kopie eines Datenwerts in einem anderen Zwischenspeicher nur
ein Faktor, der zum Auswählen
eines Puffers zum Ersetzen seiner enthaltenen Daten verwendet werden
kann. Andere Faktoren zum Berücksichtigen weisen
bereits genannte ein, wie zum Beispiel die Position eines Puffers
in einer LRU-Liste.
-
BERÜCKSICHTIGEN
DES ZWISCHENSPEICHER-BEIBEHALTUNGSWERTS ZWISCHEN DATENWERTEN IN
VERSCHIEDENEN ZWISCHENSPEICHERN
-
Eine
Ersetzungspolitik, die berücksichtigt,
ob ein Datenwert auf einem anderen Zwischenspeicher verdoppelt wurde,
ist nur ein Beispiel dafür,
wie der Zustand von Zwischenspeichern auf einer Mehrzahl von Knoten
in einem Cluster berücksichtigt
werden kann. 3 bildet einen anderen Prozess
ab, der den Zustand von Zwischenspeichern auf einer Mehrzahl von
Knoten berücksichtigt.
Der Prozess wird durchgeführt,
wenn ein Zwischenspeicher-Manager einen Datenwert anfragt, der in
dem Zwischenspeicher eines anderen Knotens gespeichert ist.
-
Mit
Bezugnahme auf 3 empfängt der Zwischenspeicher-Manager 112 in
Schritt 310 eine Anfrage von dem Zwischenspeicher-Manager 132 zum
direkten Übermitteln
eines Datenwerts, der im Zwischenspeicher 114 gespeichert
ist.
-
In
Schritt 320 übermittelt
der Zwischenspeicher-Manager 112 den angefragten Datenwert
und die Daten, die den niedrigsten Zwischenspeicher-Beibehaltungswert
anzeigen, die irgendeinem Puffer in dem Zwischenspeicher 114 zugeordnet sind,
direkt an der Zwischenspeicher-Manager 132. Der Puffer
im Zwischenspeicher 114 mit dem niedrigsten Zwischenspeicher-Beibehaltungswert
muss nicht der Puffer im Zwischenspeicher 114 sein, in dem
der angefragte Datenwert sitzt. Verschiedene Mechanismen können zum
Einrichten des Zwischenspeicher-Beibehaltungswerts
von Puffern verwendet werden. Zum Beispiel können Daten, die den niedrigsten
Zwischenspeicher-Beibehaltungswert
anzeigen, die Daten sein, die die letzte Zeit anzeigen, zu der auf
einen Datenwert zugegriffen wurde, oder Daten, die die Häufigkeit
angeben, mit der auf ihn innerhalb einer Zeitperiode zugegriffen
wurde.
-
In
Schritt 330 empfängt
der Zwischenspeicher-Manager 132 den angefragten Datenwert
und die Daten, die den niedrigsten Zwischenspeicher-Beibehaltungswert
(„empfangener
Zwischenspeicher-Beibehaltungswert") anzeigen.
-
In
Schritt 335 wählt
der Zwischenspeicher-Manager 132 einen Puffer im Zwischenspeicher 134 zum
Ersetzen mit den angefragten Datenwerten, die von der Zwischenspeicher-Manager 112 an
der Zwischenspeicher-Manager 132 übermittelt sind, aus.
-
In
Schritt 340 bestimmt der Zwischenspeicher-Manager 132,
ob der empfangene Zwischenspeicher-Beibehaltungswert größer ist
als der Zwischenspeicher-Beibehaltungswert des Datenwerts im Puffer,
der zum Ersetzen ausgewählt
ist (der „ausgewählte Datenwert"). Falls der ausgewählte Datenwert
einen Zwischenspeicher-Beibehaltungswert aufweist, der größer ist
als der empfangene Beibehaltungswert, dann geht die Steuerung weiter
zu Schritt 350, wo der Zwischenspeicher-Manager 132 den ausgewählten Datenwert
an den Zwischenspeicher-Manager 112 übermittelt.
-
Falls,
andererseits, der empfangene Zwischenspeicher-Beibehaltungswert größer ist als der Zwischenspeicher-Beibehaltungswert
des ausgewählten
Datenwerts, dann ersetzt der anfragende Knoten den ausgewählten Datenwert
in Schritt 375 mit dem empfangenen Datenwert, ohne den
ausgewählten
Datenwert an den Zwischenspeicher-Manager 112 übermittelt
zu haben.
-
In
Schritt 350 übermittelt
der Zwischenspeicher-Manager 132 den ausgewählten Datenwert
an den Zwischenspeicher-Manager 112. In Schritt 360 empfängt der
Zwischenspeicher-Manager 112 den ausgewählten Datenwert. In Schritt 370 ersetzt
der Zwischenspeicher-Manager 112 mit dem ausgewählten Datenwert
einen Datenwert in einem Puffer durch den niedrigsten Zwischenspeicher-Beibehaltungswert
im Zwischenspeicher 114. Die Steuerung fährt dann
mit Schritt 375 fort.
-
ERSETZUNGSPOLITIKEN, DIE
AUF DER KONFIGURATION DES GLOBALEN ZWISCHENSPEICHERS BASIEREN
-
Die
hierin beschriebenen Techniken beinhalten Ersetzungspolitiken, die
den globalen Zustand der Zwischenspeicher in einem Cluster berücksichtigen. Ersetzungspolitiken
können
jedoch andere globale Erwägungen
berücksichtigen
als den globalen Zustand eines Zwischenspeichers. Zum Beispiel kann
die Ersetzungspolitik für
einen bestimmten Zwischenspeicher auf der Konfiguration anderer
Zwischenspeicher basieren. Die Konfiguration eines Zwischenspeichers
sind die Logik und die Werte, die den Betrieb des Zwischenspeichers
beherrschen, die sich während
des Betriebs nicht ändern.
Andererseits sind der Zustand eines Zwischenspeichers kollektiv
die gegenwärtigen
Werte, die sich während
des Betriebs des Zwischenspeichers ändern. Zum Beispiel weist der
Zustand eines Zwischenspeichers den Datenwert in einem Puffer eines
Zwischenspeichers auf. Zusätzlich
weist der Zustand eines Zwischenspeichers Werte auf, die ein Attribut
des Puffers oder des Datenwerts in dem Puffer repräsentieren,
das sich ändert,
wenn auf dem Zwischenspeicher tätig geworden
wird, wie zum Beispiel die Position eines Puffers in einer LRU oder
die Häufigkeit
des Zugriffs auf einen Puffer. Die Konfiguration des Zwischenspeichers
kann Software, die den Betrieb des Zwischenspeichers beherrscht,
und Betriebsparameterwerte, wie zum Beispiel die Größe des Zwischenspeichers,
oder die Anzahl von Puffern in dem Zwischenspeicher aufweisen.
-
Das
folgende Beispiel stellt dar, wie eine Ersetzungspolitik eines Zwischenspeichers
auf der Konfiguration anderer Zwischenspeicher basieren kann. Es
wird angenommen, dass ein Datenbanksystem auf einem Cluster läuft, und
dass die Zwischenspeicher an den Knoten des Clusters eingerichtet sind,
so dass ein Zwischenspeicher eine "Heimat" für einen
bestimmten Satz von Datenblöcken
ist. Ein Zwischenspeicher, der "Heimat" für einen
bestimmten Satz von Datenblöcken
ist, wird nachstehend als Haupt-Zwischenspeicher für diesen
Satz von Datenblöcken
bezeichnet. Wenn ein Zwischenspeicher-Manager einen Puffer im Zwischenspeicher zum
Ersetzen auswählen
muss, wählt
ein Zwischenspeicher-Manager zuerst Puffer mit Datenwerten aus,
deren Haupt-Zwischenspeicher
ein anderer Zwischenspeicher ist, bevor Datenwerte ohne einen Haupt-Zwischenspeicher
oder Datenwerte, deren Haupt-Zwischenspeicher der gegenwärtige Zwischenspeicher
ist, ausgewählt
werden. Wenn ein Zwischenspeicher-Manager einen Puffer in dem Zwischenspeicher
auswählt,
der von dem Zwischenspeicher-Manager verwaltet wird, folgt ein Zwischenspeicher-Manager
einer Ersetzungspolitik, die die Konfiguration des anderen Zwischenspeichers
berücksichtigt,
da die Konfiguration eines anderen Zwischenspeichers ihn zu dem
Haupt-Zwischenspeicher des Datenwerts im Puffer macht.
-
HAUPT-ZWISCHENSPEICHER
FÜR NICHTS-GETEILT-SYSTEME
-
Ein
weiteres Beispiel einer Ersetzungspolitik, die auf dem Haupt-Zwischenspeicher
eines Datenwerts basiert, ist eine Ersetzungspolitik für einen
globalen Zwischenspeicher, wo ein Haupt-Zwischenspeicher für einen
bestimmten Datenwert ein Zwischenspeicher auf einem Knoten ist,
der direkt auf die sekundäre
Datenressource für
einen Datenwert zugreifen kann. Ein Behandeln des Zwischenspeicher
als einen Haupt-Zwischenspeicher
für einen
Datenwert auf diese Weise kann insbesondere für ein Nichts-geteilt-System
(shared nothing system) vorteilhaft sein. Eine Beschreibung von
Nichts-geteilt-Systemen
ist daher nützlich.
-
Es
gibt drei allgemeine Arten von Mehrfach-Verarbeitungssystemen: Alles-geteilt
(shared everything)-, Platte-geteilt-Systeme (shared disk systems)
und Nichts-geteilt-Systeme.
In Alles-geteilt-Systemen weisen Prozesse auf allen Prozessoren
einen direkten Zugriff auf alle dynamischen Speichervorrichtungen
und auf alle statischen Speichervorrichtungen im System auf. Ein
hoher Grad an Verdrahtung zwischen den verschiedenen Rechnerkomponenten
ist zum Bereitstellen einer Alles-geteilt-Funktionalität notwendig.
-
In
Platte-geteilt-Systemen sind Prozessoren und dynamische Speichervorrichtung
in Knoten gruppiert. Jeder Knoten in einem Platte-geteilt-System kann
selbst ein Alles-geteilt-System aufweisen, das eine Mehrzahl von
Prozessoren und ein Mehrzahl von Speichern aufweist. Prozesse auf
allen Prozessoren können
auf alle statischen Speichervorrichtungen in dem System zugreifen,
aber nur die Prozesse auf Prozessoren, die zu einem bestimmten Knoten gehören, können auf
die dynamischen Speichervorrichtungen innerhalb des bestimmten Knotens
direkt zugreifen. Platte-geteilt-Systeme benötigen im Allgemeinen weniger
Verdrahtung als Alles-geteilt-Systeme.
-
In
Nichts-geteilt-Systemen sind alle Prozessoren, dynamische Speichervorrichtungen
und statische Speichervorrichtungen in Knoten gruppiert. In Nichts-geteilt-Systemen sowie in
Platte-geteilt-Systeme kann jeder Knoten selbst ein Alles-geteilt-System oder
ein Platte-geteilt-System bilden. Nur die Prozesse, die auf einem
bestimmten Knoten laufen, können auf
die dynamischen Speichervorrichtungen und statische Speichervorrichtungen
innerhalb des bestimmten Knotens direkt zugreifen.
-
In
Nichts-geteilt-Systemen liest der Knoten, der direkten Zugriff auf
die statische Speichervorrichtung hat, den Datenwert in den dynamischen
Speicher des Knotens, wenn ein Datenwert in Zwischenspeicher in
dynamischen Speicher von einer sekundären Datenressource in der Form
einer statischen Speichervorrichtung übermittelt wird. Falls ein
Zwischenspeicher in einem anderen dynamischen Speicher eines anderen
Knotens der Haupt-Zwischenspeicher für den Datenwert ist, dann wird
der Datenwert dorthin übermittelt,
was zu einer zusätzlichen Übermittlung
des Datenwerts führt.
Das kann verhindert werden, indem der Knoten, der direkten Zugriff auf
die sekundäre
Ressource hat, die den Datenwert hält, als der Haupt-Zwischenspeicher
für den
Datenwert behandelt wird.
-
HARDWARE-ÜBERBLICK
-
4 ist
ein Blockdiagramm, das ein Rechnersystem 400 darstellt,
das zum Implementieren einer Ausführungsform der Erfindung verwendet
werden kann. Das Rechnersystem 400 weist einen Bus 402 oder
einen anderen Kommunikationsmechanismus zum Berechnen von Informationen
und einen Prozessor 404, der mit dem Bus 402 gekoppelt
ist, zum Verarbeiten von Informationen auf. Das Rechnersystem 400 weist
auch einen Hauptspeicher 406, wie zum Beispiel einen Speicher
mit wahlfreiem Zugriff (RAM, random access memory) oder eine andere
dynamische Speichervorrichtung, die mit dem Bus 402 zum
Speichern von Informationen und Anweisungen, die von dem Prozessor 404 auszuführen sind,
gekoppelt sind, auf. Der Hauptspeicher 406 kann auch zum
Speichern temporärer
Variablen oder anderer Zwischeninformationen während einer Ausführung von
Anweisungen, die von dem Prozessor 404 auszuführen sind,
verwendet werden. Das Rechnersystem 400 weist ferner einen
Nur-Lese-Speicher (ROM, read only memory) 408 oder eine
andere statische Speichervorrichtung, die mit dem Bus 402 gekoppelt
ist, zum Speichern statischer Informationen und Anweisungen für den Prozessor 404 auf.
Eine Speichervorrichtung 410, wie zum Beispiel eine Magnetplatte
oder optischen Scheiben, ist vorgesehen und mit dem Bus 402 gekoppelt
zum Speichern von Informationen und Anweisungen.
-
Das
Rechnersystem 400 kann über
den Bus 402 mit einer Anzeige 412 gekoppelt sein,
wie zum Beispiel einer Kathodenstrahlröhre (CRT, cathode ray tube),
zum Anzeigen von Informationen für
einen Rechnerbenutzer. Eine Eingabevorrichtung 414, einschließlich alphanumerischer
und anderer Tasten, ist mit dem Bus 402 gekoppelt zum Austauschen
von Informationen und Befehlsauswahlen mit dem Prozessor 404.
Ein anderer Typ von Benutzer-Eingabevorrichtung ist eine Cursor-Steuerung 416,
wie zum Beispiel eine Maus, ein Trackball oder Cursor-Richtungstasten
zum Austauschen von Richtungsinformationen und Befehlsauswahlen
mit dem Prozessor 404 und zum Steuern einer Cursorbewegung
auf der Anzeige 412. Diese Eingabevorrichtung weist typischerweise
zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z.B. x)
und einer zweiten Achse (z.B. y) auf, die es der Vorrichtung ermöglichen,
Positionen in einer Ebene anzugeben.
-
Die
Erfindung betrifft den Gebrauch des Rechnersystems 400 zum
Einrichten der hierin beschriebenen Techniken. Gemäß einer
Ausführungsform
der Erfindung sind diese Techniken mit dem Rechnersystem 400 in
Antwort auf den Prozessor 404 eingerichtet, der eine Sequenz
oder eine Mehrzahl von Sequenzen von einer Anweisung oder einer Mehrzahl
von Anweisungen, die im Hauptspeicher 406 enthalten sind,
ausführt.
Solche Anweisungen können
in den Hauptspeicher 406 von einem anderen Rechnerlesbaren
Medium, wie zum Beispiel der Speichervorrichtung 410, eingelesen
werden. Eine Ausführung
der Sequenzen von Anweisungen, die im Hauptspeicher 406 enthalten
sind, bewirkt, dass der Prozessor 404 die hierin beschriebenen
Prozessschritte durchführt.
In alternativen Ausführungsformen
kann ein hart-verdrahteter Schaltkreis anstatt von oder zusammen
mit Software-Anweisungen zum Implementieren der Erfindung verwendet
werden. Folglich sind Ausführungsformen
der Erfindung nicht auf irgendeine spezifische Kombination von Hardware-Schaltkreisen
und Software beschränkt.
-
Der
Begriff "Rechnerlesbares
Medium" wie er nachstehend
verwendet wird, betrifft jedes Medium, das beim Bereitstellen von
Anweisungen für
den Prozessor 404 zur Ausführung teilnimmt. Solch ein Medium
kann viele Formen annehmen einschließlich aber nicht beschränkt auf
nicht-flüchtige
Medien, flüchtige
Medien und Übertragungsmedien.
Nichtflüchtige
Medien weisen zum Beispiel optische oder magnetische Platten, wie
zum Beispiel die Speichervorrichtung 410 auf. Flüchtige Medien
weisen dynamischen Speicher, wie zum Beispiel den Hauptspeicher 406 auf. Übermittlungsmedien
weisen Koaxialleitungen, Kupferdrähte und Glasfaser auf einschließlich der
Drähte,
die den Bus 402 aufweisen. Übermittlungsmedien können auch
die Form von akustischen Wellen oder Lichtwellen annehmen, wie zum
Beispiel jene, die während
einer Hochfrequenz- und Infrarot-Datenkommunikation erzeugt werden.
-
Allgemeine
Formen von rechnerlesbaren Medien weisen zum Beispiel eine Floppy-Disk,
eine flexible Disk, eine Festplatte, ein Magnetband oder jedes andere
magnetische Medium, eine CD-ROM, jedes andere optische Medium, Lochkarten,
Papierbänder,
jedes andere physikalische Medium mit Strukturen von Löchern, ein
RAM, ein PROM und ein EPROM, ein FLASH-EPROM, jeden anderen Speicherchip
oder jedes andere Speichercartridge, eine Trägerwelle, wie nachstehend beschrieben,
oder jedes andere Medium, von dem ein Rechner lesen kann, auf.
-
Verschiedene
Formen von rechnerlesbaren Medien können beim Tragen von einer
oder einer Mehrzahl von Sequenzen von einer oder einer Mehrzahl
von Anweisungen zum Prozessor 404 zur Ausführung einbezogen
sein. Zum Beispiel können
die Anweisungen ursprünglich
auf einer Magnetscheibe eines entfernten Rechners getragen werden.
Der entfernte Rechner kann die Anweisungen in seinen dynamischen
Speicher laden und die Anweisungen über eine Telefonleitung unter
Verwendung eines Modems senden. Ein Modem, das zu dem Rechnersystem 400 lokal
ist, kann die Daten auf der Telefonleitung empfangen und einen Infrarot-Transmitter zum
Umwandeln der Daten in ein Infrarot-Signal verwenden. Ein Infrarot-Detektor
kann die Daten empfangen, die in dem Infrarot-Signal getragen sind,
und ein geeigneter Schaltkreis kann die Daten auf dem Bus 402 platzieren.
Der Bus 402 trägt
die Daten zum Hauptspeicher 406, aus dem der Prozessor 404 die Anweisungen
abruft und ausführt.
Die von dem Hauptspeicher 406 empfangenen Anweisungen können wahlweise,
entweder vor oder nach Ausführung durch
den Prozessor 404, auf der Speichervorrichtung 410 gespeichert
werden.
-
Das
Rechnersystem 400 weist auch eine Kommunikationsschnittstelle 418 auf,
die mit dem Bus 402 gekoppelt ist. Die Kommunikationsschnittstelle 418 stellt
eine Zwei-Wege-Datenkommunikation bereit, die mit einer Netzwerkverbindung 420 gekoppelt
ist, die mit einem lokalen Netzwerk 422 gekoppelt ist.
Zum Beispiel kann die Kommunikationsschnittstelle 418 eine
ISDN (integrated services digital network)-Karte oder ein Modem
zum Bereitstellen einer Datenkommunikationsverbindung zu einem entsprechenden
Typ von Telefonleitung sein. Als ein anderes Beispiel kann die Kommunikationsschnittstelle 418 eine
LAN (local area network)-Karte
zum Bereitstellen einer Datenkommunikationsverbindung mit einem
kompatiblen LAN sein. Drahtlose Verbindungen können auch implementiert sein.
In jeder solchen Implementierung sendet und empfängt die Kommunikationsschnittstelle 418 elektrische,
elektromagnetische oder optische Signale, die digitale Datenströme tragen,
die verschiedene Informationstypen repräsentieren.
-
Die
Netzwerkverbindung 420 stellt typischerweise eine Datenkommunikation
durch eines oder eine Mehrzahl von Netzwerken zu anderen Datenvorrichtungen
bereit. Zum Beispiel kann die Netzwerkverbindung 420 ein
Verbindung durch das lokale Netzwerk 422 zu einem Host-Rechner 424 oder
zu einer Datenausrüstung,
die von einem Internet-Dienstanbieter (ISP, internet service provider) 426 betrieben
wird, bereitstellen. Der ISP 426 stellt im Gegenzug Datenkommunikationsdienst
durch das weltweite Paket-Daten-Kommunikationsnetzwerk bereit, das
jetzt allgemein als das "Internet" 428 bezeichnet
wird. Das lokale Netzwerk 422 und das Internet 428 verwenden
beide elektrische, elektromagnetische oder optische Signale, die
digitale Datenströme
tragen. Die Signale durch die verschiedenen Netzwerke und die Signale
auf der Netzwerkverbindung 420 und durch die Kommunikationsschnittstelle 418,
die die digitalen Daten zu und von dem Rechnersystem 400 tragen,
sind beispielhafte Formen von Trägerwellen,
die die Informationen transportieren.
-
Das
Rechnersystem 400 kann Nachrichten senden und Daten empfangen,
einschließlich
Programmkode, durch das/die Netzwerk(e), die Netzwerkverbindung 420 und
die Kommunikationsschnittstelle 418. In dem Internet-Beispiel
kann ein Serverrechner 430 einen angefragten Kode für ein Anwendungsprogramm
durch das Internet 428, den ISP 426, das lokale
Netzwerk 422 und die Kommunikationsschnittstelle 418 übermitteln.
Gemäß der Erfindung
implementiert eine solche heruntergeladene Anwendung die hierin
beschriebenen Techniken.
-
Der
empfangene Kode kann durch den Prozessor 404 wenn er empfangen
wird ausgeführt
werden, und/oder in der Speichervorrichtung 410 oder einer
anderen nichtflüchtigen
Speicher gespeichert werden zur späteren Ausführung. Auf diese Weise kann
das Rechnersystem 400 einen Anwendungskode in der Form
einer Trägerwelle
erhalten.
-
In
der vorangegangenen Beschreibung wurde die Erfindung mit Bezugnahme
auf spezifische Ausführungsformen
davon beschrieben. Es wird jedoch offensichtlich sein, dass verschiedene
Modifikationen und Änderungen
dabei gemacht werden können,
ohne vom Umfang der Erfindung abzurücken. Die Beschreibung und
die Zeichnungen sind folglich eher in einer darstellenden als in
einem beschränkenden
Sinn zu sehen.