-
Die vorliegende Erfindung betrifft
ein Computersystem und ein Verfahren zum Bereitstellen einer flexiblen
Speicherhierarchie mit einem dedizierten Speichertransferbus, gesteuert
durch ein Betriebssystem, zum Austauschen von Daten zwischen verschiedenen
Speichertypen.
-
Es ist allgemein bekannt, dass ein
konventionelles Computersystem eine Zentraleinheit ("CPŲ") und
ein Speichersystem umfasst. Im Allgemeinen holt die CPU bei Lesezyklen
Daten einer arbiträren Bitlänge (z.
B. Blöcke)
aus physikalischen (oder Realspeicher-) Adressstellen im Speichersystem.
Da die CPU gewöhnlich
mit einer höheren
Geschwindigkeit arbeitet als das Speichersystem, wird die Gesamtleistung
des Computersystems durch die Rate; mit der vom Speicher auf Daten
zugegriffen werden kann ("Bandbreite"), und die Zeitverzögerung erheblich
beeinflusst, die die CPU erfährt,
bevor sie Zugang zu solchen Daten erhält ("Speicherlatenz").
-
Typischerweise wird das Speichersystem, um
eine benötigte
Bandbreite zu erzielen und um eine benötigte Menge an adressierbarem
Speicherraum zu schaffen, gemäß einer
strengen und unflexiblen Hierarchie angeordnet. Diese Hierarchie
hat gewöhnlich
mehrere Speichertypen, wobei jeder dieser Speichertypen einen vorbestimmten,
einzigartigen physikalischen (oder Realspeicher-) Adressraum hat.
Beispiele für
diese Speichertypen sind u. a. langsamer Hauptspeicher (z. B. dynamischer
Arbeitsspeicher "DRAM", Video-Arbeitsspeicher "VRAM", usw.), schneller
Cache-Speicher (gewöhnlich ein Mehrlevel-Cache-Speicher
mit einer Bandbreite, die größer ist
als die des langsamen Speichers) und Fernspeicher (Plattenspeichergeräte, Hauptspeicher eines
anderen Computersystems usw.), der "langsamer" ist (d.h. eine geringere
Bandbreite hat) als Cache- und Hauptspeicher. "Schneller" Speicher
hat gewöhnlich
eine Bandbreite von etwa 12 Nanosekunden, während langsamer Speicher und
entfernt befindlicher Speicher eine Bandbreite von jeweils etwa 50
Nanosekunden und 300 Mikrosekunden haben.
-
Gemäß dieser unflexiblen Speicherhierarchie
werden die zuletzt verwendeten Daten im schnellen Cache-Speicher
und weniger häufig
verwendete Daten in den anderen langsameren Speichertypen gespeichert.
Die oben beschriebene unflexible Hierarchie ergibt zwar einen rentablen
Ansatz bei der Erzielung einer benötigten Bandbreite für einen
bestimmten Speicherraum, sie hat aber eine Reihe von Nachteilen.
-
Ein Nachteil in Verbindung mit der
konventionellen unflexiblen Speicherhierarchie ist, dass vorkonfigurierte
Hardware (z. B. ein CPU-Controller), die in dem Computersystem eingesetzt
wird, als Orakel verwendet wird, um vorherzusagen, auf welche Daten
wahrscheinlich in der nächsten
Zukunft zugegriffen wird, und diese Daten sowohl in den Cache- als auch
in den Hauptspeicher geschrieben werden. Dieses Vorhersageverfahren
kann jedoch weder vom Computer-Operator noch vom Betriebssystem
des Computersystems variiert werden, die beide genauere Prädiktoren
wären als
der CPU-Controller. In der Tat hätte
der Computer-Operator Kenntnis darüber, auf welche Daten ein Anwendungsprogramm
häufiger
zugreift.
-
Ein weiterer Nachteil in Verbindung
mit der konventionellen unflexiblen Speicherhierarchie ist der,
dass sie recht anfällig
für Cache-Speicherkollisionen
ist. Eine solche Anfälligkeit
ist vornehmlich auf die Tatsache zurückzuführen, dass bestimmte Cache-Leitungen
häufiger
wiederverwendet werden als andere Cache-Leitungen gemäß in der
Technik bekannten konventionellen Cache- und Betriebssystem-Speichertechniken.
-
Noch ein weiterer Nachteil ist, dass
die konventionelle Speicherhierarchie Beschränkungen im Hinblick auf die
Größe einer
Datenübertragung
auferlegt, die gewöhnlich
auf eine einzelne Cache-Leitung oder eine andere vorbestimmte Datenstruktur äquivalenter
Größe begrenzt
ist. Diese Beschränkungen werden
deshalb auferlegt, weil Datenübertragungen von
mehr als einer Cache-Leitung größere Speicherbusbandbreite
belegen, die Speicherlatenz erhöhen und
die CPU-Bandbreite
reduzieren würden.
-
Ein existierendes Computer-Speichersystem mit
mehr als einem Speichertyp ist in der US-A-5,386,547 beschrieben, die ein einfaches
gemischtes First-Level-Cache-Speichersystem offenbart, das einen
Cache-Speicher auf Level 1 beinhaltet, der über Lese-
und Schreibdatenleitungen mit einem Prozessor verbunden ist. Der
Cache-Speicher Level 1 ist mit Umlagerungs-Tag-Leitungen,
Umlagerungs-Datenleitungen, einem Multiplexer und einer Umlagerungs-/Leseleitung
mit dem Cache-Speicher Level 2 verbunden. Der Cache-Speicher
Level 2 ist über
Schreib-Tag- und Schreib-Datenleitungen mit der nächsttieferen
Ebene in der Speicherhierarchie verbunden. Die nächsttiefere Ebene in der Speicherhierarchie
unter Cache-Speicher
Level 2 ist auch über
eine Lesedatenleitung durch den Multiplexer und die Umlagerungs/Leseleitung
mit Cache-Speicher Level 1 verbünden. Wenn der Prozessor eine Anweisung
oder Daten benötigt,
dann gibt er eine Adresse auf den Anweisungs- oder Datenadressleitungen
aus. Wenn die Anweisung oder die Daten im Cache-Speicher Level 1 vorhanden
ist/sind, dann werden sie dem Prozessor auf der Lesedatenleitung zugeführt. Wenn
Anweisung oder Daten im Cache-Speicher
Level 1 nicht vorhanden ist/sind, dann sucht der Prozessor
im Cache-Speicher Level 2 danach, indem er die Adresse der Anweisung
oder Daten auf den Anweisungs- oder Datenadressleitungen ausgibt.
Wenn sich Anweisung oder Daten im Cache-Speicher Level 2 befindet
befinden, dann wird/werden sie dem Prozessor über einen Umlagerungsvorgang
auf den Tag-Umlagerungsleitungen, den Umlagerungs-Datenleitungen,
dem Multiplexer und der Umlagerungs-/Lesedatenleitung durch den Cache-Speicher
Level 1 zugeführt.
Wenn Anweisung oder Daten weder im Cache-Speicher Level 1 noch im
Cache-Speicher Level 2 vorhanden ist/sind, dann holt die
Adresse auf den Anweisungs- oder Datenadressleitungen die Anweisung
oder Daten aus aufeinander folgend tieferen Ebenen in der Speicherhierarchie
nach Bedarf über
die Lesedatenleitung, den Multiplexer und die Umlagerungs-/Lesedatenleitung. Anweisung
oder Daten wird/werden dann vom Cache-Speicher Level 1 zum
Prozessor gesendet.
-
Ein weiteres existierendes Multilevel-Speichersystem
ist in der US-A-5,249,282 beschrieben, bei der eine Zentraleinheit
ein Cache-Speichersystem umfasst, das damit für eine Verbindung mit einem
Hauptspeichersystem assoziiert ist. Das Cache-Speichersystem beinhaltet
einen aus SRAMs bestehenden primären
Cache-Speicher und einen sekundären
Cache-Speicher, der aus DRAM besteht. Der primäre Cache-Speicher hat schnellere
Zugriffszeiten als der sekundäre
Cache-Speicher. Wenn ermittelt wird, dass die angeforderten Daten
im primären
Cache-Speicher gespeichert
sind, dann werden sie sofort zur Zentraleinheit übertragen. Wenn festgestellt
wird, dass sich die Daten nur im sekundären Cache-Speicher befinden,
dann wird auf die Daten vor dort zugegriffen und sie werden zur
Zentraleinheit geleitet und gleichzeitig im primären Cache-Speicher gespeichert. Wenn im primären Cache-Speicher
ein Hit auftritt, dann wird darauf zugegriffen und die Daten werden
auf einen lokalen Datenbus ausgegeben. Wenn nur der sekundäre Cache-Speicher
einen Hit anzeigt, dann wird auf Daten von der entsprechenden einen
der Arrays zugegriffen, und sie werden über Transferschaltungen durch
den primären
Cache- Speicher zum Datenbus übertragen.
Gleichzeitig damit werden die Daten in einer entsprechenden einen
der Arrays gespeichert. Wenn kein Hit im sekundären oder im primären Cache-Speicher
auftritt, dann werden die Daten aus dem Hauptspeichersystem durch
eine Puffer/Multiplexerschaltung auf einer Seite des sekundären Cache-Speichers
zurückgespeichert
und durch den sekundären
und den primären
Cache-Speicher geleitet und aufgrund des durch die Transferschaltungen
gegebenen zeilenweisen Transfers in einem einzigen Vorgang darin
gespeichert.
-
Gemäß einem ersten Aspekt der vorliegenden
Erfindung wird ein Computersystem gemäß Anspruch 1 bereitgestellt.
-
Gemäß einem zweiten Aspekt der
vorliegenden Erfindung wird ein Verfahren zum Übertragen einer Seite von Daten
gemäß Anspruch
6 bereitgestellt. Weitere Aspekte der Erfindung sind in den Unteransprüchen definiert.
-
Die vorliegende Erfindung wird nachfolgend beispielhaft
unter Bezugnahme auf die Begleitzeichnungen näher beschrieben. Dabei zeigt:
-
1 ein
Blockdiagramm einer illustrativen Ausgestaltung eines Computersystems,
das einen dedizierten Speichertransferbus verwendet;
-
2 ein
Ablaufdiagramm einer illustrativen Prozedur, die von Prozessorknoten
und Speicherelement beim Durchführen
von Speicherübertragungen auf
dem dedizierten Speichertransferbus von schnellem Speicher auf langsamen
Speicher durchgeführt wird;
-
3 ein
Ablaufdiagramm einer illustrativen Prozedur, die von Prozessorknoten
und Speicherelement bei der Durchführung von Speicherübertragungen
auf dem dedizierten Speichertransferbus von langsamem Speicher auf
schnellen Speicher durchgeführt
wird;
-
4 ein
Ablaufdiagramm, das eine Speicher-"Lese"-Anforderung illustriert,
die im Computersystem durchgeführt
wird und Datenübertragungen über einen
Speichertransferbus gemäß 1 unterstützen kann;
-
5 ein
Ablaufdiagramm, das eine Speicher-"Schreib"-Anforderung illustriert,
die im Computersystem durchgeführt
wird, das Datenübertragungen über einen
Speichertransferbus gemäß 1 unterstützen kann.
-
Die nachfolgende ausführliche
Beschreibung der vorliegenden Erfindung offenbart ein System und ein
Verfahren zum Bereitstellen einer flexiblen Speicherhierarchie unter
Verwendung eines Speichertransferbusses, der zum Übertragen
von Daten zwischen verschiedenen Speichertypen, von einer programmierbaren
Betriebssystemsoftware gesteuert, dediziert ist. Die Offenbarung
beschreibt die Übertragung
von Daten zwischen schnellen und langsamen Speichern, die einen
einzelnen Realspeicher-Adressraum gemeinsam nutzen, da Übertragungen
zwischen diesen Speichern und Fernspeichern auf dieselbe Weise erfolgen.
-
In der gesamten Beschreibung wird
eine Reihe spezifischer Einzelheiten dargelegt, während in einigen
Fällen
bekannte Schaltungen oder Prozedurschritte nicht dargelegt sind,
um die vorliegende Erfindung nicht unnötig zu verkomplizieren. Es
wird für eine
durchschnittliche Fachperson jedoch offensichtlich sein, dass die
vorliegende Erfindung auch ohne Integration dieser spezifischen
Komponenten oder durch eine geringfügige Modifikation von in den
illustrativen Ablaufdiagrammen aufgeführten Prozedurschritten praktiziert
werden kann.
-
Für
den Umfang der vorliegenden Anmeldung ist ein "Knoten" als eine
oder mehrere Hardware-Komponenten definiert, die zur Durchführung eines
bestimmten Vorgangs verwendet werden. Ferner können "Daten" binäre Daten
und/oder Anweisungen beinhalten, die beide generisch als "Daten" bezeichnet
werden, es sei denn, dass sie auf andere Weise unterschieden werden.
Darüber
hinaus wird eine "Seite" als eine Mehrzahl von Subblöcken definiert,
die jeweils wenigstens ein Byte Daten und Statusinformationen (z.
B. ein Statusbit) enthalten, um anzuzeigen, ob das/die in dem Subblock
gespeicherte(n) Datenbytes) "gültig"
oder "ungültig"
ist/sind.
-
1 zeigt
eine illustrative Ausgestaltung eines Computersystems 100 gemäß der vorliegenden Erfindung.
Das Computersystem 100 umfasst einen ersten Bus 110,
vorzugsweise einen Zentraleinheits- ("CPU") Bus, einschließlich Daten-,
Adresssteuerbusleitungen, die vorzugsweise mit Bitbreiten von jeweils
128, 32 und 8 Bit konfiguriert sind. Es ist jedoch vorgesehen, dass
diese oben aufgeführten
Busleitungen mit jeder beliebigen Bandbreite konfiguriert werden
können.
Der erste Bus 110 ermöglicht
die Kommunikation von Informationen (d.h. Daten, Adresse und/oder
Steuerung) zwischen einer Mehrzahl von Knoten, einschließlich, aber
nicht begrenzt auf, einem Prozessorknoten 120, einem Speicherknoten 130 und
einem Ein/Ausgabe- ("E/A") Knoten 150.
-
Wie gezeigt, beinhaltet der Prozessorknoten 120 wenigstens
eine Verarbeitungseinheit 121 und eine Speichermanagementeinheit
("MMU") 122. In dieser Ausgestaltung ist zwar nur eine Verarbeitungseinheit 121 illustriert,
aber es ist vorgesehen, dass hierin auch mehrere Verarbeitungseinheiten eingesetzt
werden können.
In 1 ist die Verarbeitungseinheit 121 über ein
Paar unidirektionaler Signalleitungen 123 und 124,
die kollektiv die Verarbeitungseinheit 121 zum Empfangen
von Informationen von und zum Übertragen
von Informationen zu dem Speicherknoten 130 befähigen, mit
dem ersten Bus 110 gekoppelt.
-
Die Verarbeitungseinheit 121 ist
ferner über Kommunikationsleitungen 125 mit
der MMU 122 gekoppelt, so dass die Verarbeitungseinheit 121 eine virtuelle
Adresse zur MMU 122 übertragen
kann, die die virtuelle Adresse wiederum in eine reale Speicheradresse
umsetzt. Eine solche Umsetzung erfolgt durch Umsetztabellen, die
von der Betriebssystemsoftware bereitgestellt werden. Diese Umsetztabellen
beinhalten eine schnelle Speicherumsetztabelle und eine langsame
Umsetztabelle zum Umwandeln einer bestimmten virtuellen Adresse
in ihre entsprechende Realspeicheradresse, die jeweils vom schnellen
und vom langsamen Speicher verwendet wird. Die MMU 122,
die über
eine unidirektionale Signalleitung 126 mit dem ersten Bus 110 gekoppelt
ist, setzt die der virtuellen Adresse entsprechende Realspeicheradresse
und notwendige Steuerinformationen auf den ersten Bus 110,
der vom Speicherknoten 130 gelesen werden soll. Die Steuerinformationen können, unter
anderen, Vorgangstyp, Buszuteilung, Buseigentum und Gemeinschaftszugriffsbetriebsarten
wie MOESI, MESI usw. beinhalten.
-
Der E/A-Knoten 150 beinhaltet einen E/A-Controller
155, der als Schnittstelle zwischen dem ersten Bus 110 und
einem konventionellen E/A-Bus 160 arbeitet. So entsteht ein Kommunikationspfad
(d.h. Gateway), so dass Knoten mit dem ersten Bus 110 und
dem E/A-Bus 160 zum Austauschen von Informationen gekoppelt werden
können.
Der E/A-Bus 160 überträgt Informationen
zu wenigstens einem Peripheriegerät im Computersystem 100,
einschließlich,
u. a., ein Anzeigegerät 161 (z.
B. Kathodenstrahlröhre,
Flüssigkristallanzeige,
Flachbildschirm usw.) zum Anzeigen von Bildern; ein alphanumerisches
Eingabegerät 162 (z.
B. alphanumerische Tastatur usw.) zum Übertragen von Informationen und
Befehlsselektionen zur Verarbeitungseinheit 121; und ein
Cursor-Steuergerät 163 (z.
B. Maus, Trackball, Touchpad, Joystick usw.) zum Steuern von Cursor-Bewegungen;
ein Massenspeichergerät 164 (z.
B. Magnetbänder,
Festplattenlaufwerk, Diskettenlaufwerk usw.) zum Speichern von Daten;
ein Informationssende-/-empfangsgerät 165 (Faxmaschine, Modem,
Scanner usw.) zum Senden von Informationen vom Computersystem 100 zu
einem anderen System und zum Empfangen von Informationen von einem
anderen System; und ein Festkopie-Gerät 166 (z. B. Plotter,
Drucker usw.) zum Bereitstellen einer fassbaren visuellen Darstellung
der Informationen. Es ist vorgesehen, dass das in 1 gezeigte Computersystem 100 einige
oder alle dieser Komponenten oder andere als die illustrierten Komponenten verwenden
kann.
-
Der Speicherknoten 130 beinhaltet
ein Speicherelement 135, das Daten in Verbindung mit der
realen Speicheradresse speichert, und einen Fernspeichercontroller 140, ähnlich einem
CPU- Controller, der
eine Übertragung
eines einzelnen Subblocks von Daten (z. B. eine einzelne Cache-Leitung von 32 Byte Größe) zwischen
dem Computersystem 100 und einem Fernsystem steuert. Das
Speicherelement 135 ist ein seitenweise abgebildeter Speicher,
der in eine Mehrzahl von Seiten organisiert ist, wobei jede Seite eine
Mehrzahl von konsekutiven Speicheradressen hat. Das Speicherelement 135 ist
mit schnellem Speicher 136 (z. B. statischem Arbeitsspeicher)
und langsamem Speicher 137 (z. B. dynamischem Arbeitsspeicher
"DRAM", Video-Arbeitsspeicher "VRAM" und dergleichen) bestückt. Diese
Speicher 136 und 137 haben zwar verschiedene Leistungsniveaus, aber
sie nutzen einen einzigen Realspeicher-Adressraum gemeinsam, im
Gegensatz zu konventionellen Speicherhierarchien. Somit ist das
Speicherelement 135 dahingehed skalierbar, dass Bandbreite
des Speicherelementes 135 erhöht und Speicherlatenz reduziert
werden kann, indem sie mit einem größeren Anteil an schnellem Speicher 136 bestückt wird.
-
Speicherelement 135 und
Fernspeichercontroller 140 werden mit einem dedizierten
Speichertransferbus 145 mit einer willkürlich gewählten Bitbreite gekoppelt.
Diese Bitbreite wird für
einen optimalen Datentransfer gewählt und kann somit von der Bitbreite
des ersten Busses 110 abweichen. Der Speichertransferbus 145 unterstützt vornehmlich
Datenübertragungen
zwischen dem schnellen und dem langsamen Speicher 136 und 137.
Diese Datenübertragungen
werden durch die Verarbeitungseinheit 121 eingeleitet und
durch die Verarbeitungseinheit mit Betriebssystemsoftware gesteuert.
Diese Datenübertragungen
sind typischerweise "Massen"-Speicherübertragungen
in Inkrementen von jeweils einer "Seite" von Daten. Im Gegensatz
zu konventionellen Speicherhierarchien erfolgen Datenübertragungen durch
den dedizierten Speichertransferbus 145 ohne erhebliche
Beeinflussung der Latenzbandbreite des ersten Busses 110.
-
Gemäß 2 beginnt eine Datenübertragung von langsamem Speicher
auf schnellen Speicher durch den dedizierten Speichertransferbus
mit Schritt 105 durch den Prozessorknoten, nämlich MMU, wobei eine angestrebte
Realspeicher-Seitenadresse ("T_Address") in eine verfügbare Einsprungadresse
einer schnellen Speicherumsetztabelle eingefügt wird. Die T Address ist
die Adresse des schnellen Speichers, die angestrebt wird, um eine
Seite von Daten während
der Datenübertragung
zu empfangen (nachfolgend als "Zielspeicher" bezeichnet). Dies erfolgt,
damit jede nachfolgende Speicher-"Lese"- oder "Schreib"-Anweisung
zu der der T Address entsprechenden virtuellen Adresse zum schnellen
Speicher gerichtet wird. Danach sendet, wie in Schritt 110 gezeigt,
die MMU eine FLUSH PAGE Anweisung zum Speicherelement, die bewirkt,
dass das Speicherelement die Statusbits jedes Subblocks des Zielspeichers
setzt oder aufdrückt,
um anzuzeigen, dass diese Subblöcke
"ungültige"
Daten enthalten (Schritt 115). Die Ausführung dieser Anweisung ermöglicht das
Schreiben von Daten auf den Zielspeicher und unterbricht eventuelle
Speicher-"Lese"-Anforderungen, die vor dem Wegnehmen oder Deaktivieren
der Statusbits auf den Zielspecher gesendet werden, um die Anwesenheit
von "gültigen"
Daten zu reflektieren.
-
Weiterhin mit Bezug auf 2, in Schritt 120 sendet
die MMU eine Anweisung ("MOVE_PAGE") zum Speicherelement, um eine
Seite von Daten beginnend mit einer Quellseitenadresse "S Address" (nachfolgend
als "Quellseite" bezeichnet) vom langsamen Speicher zum Zielspeicher
zu übertragen. Nach
dem Empfang der MOVE PAGE Anweisung setzt der langsame Speicher
nacheinander die Daten von jedem Subblock der Quellseite auf den
Speichertransferbus (Schritt 125). Vor dem Übertragen eines ersten Subblocks
der Quellseite ermittelt das Speichersystem, ob ein erster Subblock
des Zielspeichers (d.h. "erster angestrebter Subblock"), der das Ziel
des ersten auf den Speichertransferbus gesetzten Subblocks ist,
"gültig"
is (Schritt 130). Mit dieser Ermittlung soll überprüft werden, ob, wenn die Verarbeitungseinheit
Daten auf den ersten angestrebten Subblock nach der FLUSH PAGE Anweisung,
aber vor der MOVE PAGE Anweisung geschrieben hat, weil die Vorgänge auf
dem Speichertransferbus von den ersten Busvorgängen unabhängig sind. Wenn der erste angestrebte
Subblock "gültig"
ist, dann ist das Speichersystem so konfiguriert, dass die Daten in
Verbindung mit dem ersten Subblock verworfen werden (Schritt 135),
und es wird geprüft,
ob der erste Subblock der letzte Subblock der Quellseite ist (Schritt
145). Wenn jedoch der angestrebte Subblock "ungültig" ist, dann werden die
Daten im ersten Subblock in den ersten angestrebten Subblock geschrieben,
und das Statusbit des ersten angestrebten Subblocks wird weggenommen,
um anzuzeigen, dass sich hier gültige
Daten befinden (Schritt 140). Die Datentransferprozedur wird so
lange fortgesetzt, bis die Daten in Verbindung mit dem letzten Subblock der
Quellseite übertragen
sind (Schritt 145).
-
Danach sendet das Speicherelement
ein Bestätigungssignal
("MOVE_FINISH") zur MMU (Schritt 150). Das MOVE_FIINISH Signal hat
zur Folge, dass die MMU einen "Null"-Wert in eine Einsprungadresse einer
langsamen Speicherumsetztabelle einfügt, die zuvor die S Address
enthielt (Schritt 155). Durch Einfügen des Null-Wertes wird die
Einsprungadresse freigegeben, so dass das Betriebssystem die Einsprungadresse
und den dieser Einsprungadresse entsprechenden Speicher wiederverwenden
kann. Darüber
hinaus sendet die MMU eine FLUSH PAGE Anweisung zum langsamen Speicher,
um diejenigen Subblöcke,
die zum Speichern der Quellseite verwendet werden, in einen "ungültig" Zustand
zu setzen (Schritt 160).
-
Neben dem Durchführen von Datenübertragungen
von langsamem Speicher auf schnellen Speicher unterstützt der
Speichertransferbus auch Datenübertragungen
von schnellem Speicher auf langsamen Speicher. Zunächst fügt die Betriebssystemsoftware,
die vornehmlich eine Virtuell-aufreal-Abbildung steuert, eine T
Address in eine verfügbare
Einsprungadresse der langsamen Speicherumsetztabelle ein und fügt eine
Null-Wert in eine Einsprungadresse in Verbindung mit der schnellen
Speicherumsetztabelle bei S Address ein (Schritte 205–10). In
dieser Ausgestaltung hat der Prozessorknoten keinerlei Kontrolle über die
Datenübertragungen
von schnellem auf langsamen Speicher, da solche Datenübertragungen
von der Verarbeitungseinheit nicht sofort benötigt werden.
-
Wenn die Betriebssystemsoftware die
langsamen und schnellen Speicherumsetztabellen eingestellt hat,
sendet die MMU eine MOVE PAGE Anweisung zum Speicherelement, um
das Speicherelement aufzufordern, eine Quellseite beginnend mit
S Address im schnellen Speicher in den langsamen Speicher an T_Address
zu übertragen
(Schritt 215). Daher sendet das Speicherelement nach Abschluss der
Datenübertragung
mittels des Speichertransferbusses wie oben in den Schritten 125–145 beschrieben,
mit der Ausnahme, dass die Datenübertragung vom
schnellen zum langsamen Speicher erfolgt, ein MOVE FINISH Signal
zurück,
das bestätigt,
dass die Datenübertragung
abgeschlossen ist (Schritte 220–225).
Dadurch wird die MMU aufgefordert, die FLUSH_PAGE Anweisung zum
Speicherelement zu senden, um Statusbits der Subblöcke in Verbindung mit
der Quellseite bei S Address in einen "ungültig" Zustand zu setzen (Schritt
230).
-
Wieder bezugnehmend auf 1, während der Ausführung eines
Anwendungsprogramms benötigt
die Verarbeitungseinheit 121 häufig Daten, die im Speicherelement 135 gespeichert
sind. Um solche Daten zu holen, erzeugt der Prozessorknoten 120 typischerweise
die Speicher-"Lese"-Anforderung.
Da Datenübertragungen
zwischen verschiedenen Speichertypen über den dedizierten Speichertransferbus 145 während der
Speicherleseanforderung auftreten können, wird eine Prozedur benötigt, die
beide Vorgänge
simultan unterstützt.
-
4 zeigt
eine illustrative Prozedur zum Unterstützen von Speicherleseanforderungen
und Datenübertragungen
durch den Speichernansferbus. Zum Ausführen einer Speicherleseaufforderung
leitet die Verarbeitungseinheit eine Speicher-"Lese"-Anweisung (Schritt
305) ein und überträgt danach
die Speicher-"Lese"-Anweisung für
in einer bestimmten virtuellen Adresse gespeicherte Daten in die
MMU (Schritt 310). Wenn die MMU ermittelt, dass sich die virtuelle
Adresse nicht in der schnellen Speicherumsetztabelle befindet, die
normalerweise durch Betriebssystemsoftware verwaltet wird, dann
bildet die MMU die virtuelle Adresse in eine langsame Realspeicheradresse
gemäß der langsamen
Speicherumsetztabelle ab (Schritte 315–320). Danach gibt die MMU
eine Speicherleseanforderung aus, indem sie die langsame Realspeicheradresse
zusammen mit eventuell notwendigen Steuerinformationen einschließlich Vorgangstyp,
Buszuteilung, Buseigentum, Gemeinschaftszugriffsbetriebsarten wie
MOESI, MESI usw. auf den ersten Bus zur Erledigung durch das Speicherelement
setzt (Schritt 325). Wenn erfasst wurde, dass die MMU die Speicherleseanforderung
durchgeführt
hat, kommt das Speicherelement der Speicherleseanforderung nach,
indem es die angeforderten Daten auf den ersten Bus setzt, so dass sie
danach von der Verarbeitungseinheit gelesen werden (Schritte 330–335).
-
Alternativ bildet die MMU, wenn sie
ermittelt, dass sich die virtuelle Adresse in der schnellen Speicherumsetztabelle
befindet, die virtuelle Adresse in eine schnelle Realspeicheradresse
gemäß der schnellen
Speicherumsetztabelle ab (Schritt 340). Danach gibt die MMU eine
Speicherleseanforderung aus, indem sie die schnelle Realspeicheradresse
zusammen mit eventuellen Steuerinformationen auf den ersten Bus
zur Erledigung durch das Speicherelement setzt (Schritt 345).
-
Nach dem Erkennen der Speicherleseanforderung
ermittelt das Speicherelement, ob die Daten an der Realspeicheradresse
"gültig"
sind (Schritt 350). Damit soll ein Zugriff auf Daten verhindert
werden, die ungültig
sind, weil beispielsweise eine ausstehende Datenübertragung vor der Speicherleseanforderung
noch nicht abgeschlossen ist. Wenn gültig, kommt das Speicherelement
der Speicherleseanforderung nach, indem es die angeforderten Daten
auf den Datenbus setzt, so dass sie nachfolgend von der Verarbeitungseinheit
gelesen werden (Schritt 330-335).
Ansonsten, wenn die Daten ungültig
sind, wartet das Speicherelement, bis die Datenübertragung fertig ist und die
Daten validiert sind. Die Adresse bleibt in den Speichersystempuffern,
bis die Daten zur Verfügung
stehen. Speicheradressanforderungen werden im Speichersystem gepuffert.
-
5 zeigt
eine illustrative Prozedur zum Unterstützen einer Speicherschreibanforderung
und einer Datenübertragung
durch den Speichertransferbus. Die Verarbeitungseinheit leitet eine
Speicherschreibanweisung ein (Schritt 405) und überträgt danach die Speicherschreibanweisung
für in
einer bestimmten virtuellen Adresse gespeicherte Daten in die MMU
(Schritt 410). Wenn die MMU ermittelt, dass sich die virtuelle Adresse
nicht in der schnellen Speicherumsetztabelle befindet, dann bildet
die MMU die virtuelle Adresse in eine langsame Realspeicheradresse
gemäß der langsamen
Speicherumsetztabelle ab (Schritt 415–420). Danach gibt die MMU
eine Speicherschreibanforderung aus, indem sie die langsame Realspeicheradresse
zusammen mit eventuell notwendigen Steuerinformationen auf den ersten Bus
setzt, so dass sie vom Speicherelement erledigt wird, wenn der Prozessor
die Daten auf den ersten Bus setzt, so dass sie in den langsamen
Speicher des Speicherelementes geschrieben werden (Schritt 425–430).
-
Alternativ bildet die MMU, wenn sie
ermittelt, dass sich die virtuelle Adresse in der schnellen Speicherumsetztabelle
befindet, die virtuelle Adresse in eine schnelle Speicheradresse
gemäß der schnellen Speicherumsetztabelle
ab (Schritte 415, 435). Danach gibt die MMU eine Speicherschreibanforderung aus,
indem sie die schnelle Realspeicheradresse zusammen mit eventuellen
Steuerinformationen auf den ersten Bus setzt, so dass sie vom Speicherelement
erledigt wird (Schritt 440). Danach werden die Daten in den Subblock
geschrieben, und das Statusbit in Verbindung mit dem Subblock wird
weggenommen, um anzuzeigen, dass die Daten "gültig" sind. (Schritt 445).
-
Es ist vorgesehen, dass Datenübertragungen
zwischen dem Speicherelement und einem Fernsystem über den
Speichertransferbus nach denselben Prozeduren ablaufen wie in den 2 und 3 erörtert,
mit ein paar Ausnahmen. Eine Ausnahme ist die, dass das Fernsystem
nur "Kopierblöcke"
mit Nur-Lese-Zugriff vom Speicherelement des Computersystems lesen
kann; das Computersystem kann jedoch einen einzelnen Block (z. B.
eine Cache-Leitung) von Daten vom Fernsystem lesen und einen einzelnen
Datenblock vom Fernsystem in das Speicherelement schreiben. Eine
zweite Ausnahme ist die, dass es dem Fernsystem nicht möglich ist,
Daten auf ein anderes Fernsystem zu schreiben, ohne dass eine entsprechende
Genehmigung vom Betriebssystem des Computersystems erteilt wird.
Dies kann jedoch durch zusätzliche
Statusinformationen umgangen werden.
-
Die hierin beschriebene vorliegende
Erfindung kann auf viele verschiedene Weisen und mit vielen verschiedenen
Konfigurationen ausgelegt werden. Während die vorliegende Erfindung
im Hinblick auf verschiedene Ausgestaltungen beschrieben wurde,
werden der Fachperson noch weitere Ausgestaltungen einfallen; die
nicht vom Umfang der vorliegenden Erfindung gemäß Definition in den nachfolgenden
Ansprüchen
abweichen.