-
GEBIET
-
Die
vorliegende Erfindung betrifft im allgemeinen Mikroprozessorsysteme
und im speziellen Mikroprozessorsysteme, die über einen Systembus mit einem
Speichercontroller betrieben werden können.
-
STAND DER
TECHNIK
-
Dynamische
Speicher mit wahlfreiem Zugriff (DRAM-Speicher) können Speicher-Vorlade-, Aktivierungs-,
Lese- und Schreiboperationen aufweisen. Im speziellen muß ein Speichercontroller,
der eine Bank des Speichers adressiert, die Speicherbank zunächst vorladen,
und daraufhin muß die
adressierte Seite innerhalb der Bank aktiviert werden, bevor auf die
adressierte Spalte in dieser Seite zugegriffen (d.h. diese gelesen
oder beschrieben) wird. Ein Zustand "DRAM-Seite offen" bzw. ein "Page-Hit" ("Seitentreffer") zeigt an, daß der Speicher,
auf den zugegriffen wird, bereits vorgeladen und aktiviert wurde und
Daten aus der Seite ausgelesen oder in diese geschrieben werden
können,
ohne daß der
Speicher bei jedem Speicherzugriff vorgeladen oder aktiviert werden
muß. Wenn
ein "Page-Miss" ("Seitenverfehlung") auftritt (d.h.,
wenn auf Daten aus einer anderen als der offenen Seite im Speicher
zugegriffen wird), muß die
offene Seite von den Leseverstärkern
auf den DRAM-Chip
zurückgeschrieben
werden. Als nächstes
muß die
neue Speicherseite zunächst
vorgeladen und aktiviert werden, bevor auf sie zugegriffen wird.
Das Schreiben der alten Seite in den DRAM und das Vorladen und Aktivieren
der neuen DRAM-Seiten benötigt
Zeit und verlangsamt die Speicherzugriffe, was zu ineffizienter
Auslastung des Speicherbusses (reduzierter Bandbreite) und Leistungseinbußen einer
Vorrichtung (z.B. eines Computers), in der DRAM eingesetzt wird,
führt.
-
Ein
Prozessor kann mit Systemspeicher, wie etwa DRAM, in Kontakt treten,
indem er über
einen Systembus Speicherzugriffsbefehle an einen Speichercontroller
absetzt. Eine Busschnittstellenschaltung des Prozessors kann einen
Bus-Scheduler aufweisen, der über
eine Buszugriffswarteschlange Zugriffe (Lese- und Schreibzugriffe)
vom Prozessor an den Systemspeicher einteilt. Falls es dem Bus-Scheduler
möglich
wäre, die
Speicherzugriffsanforderungen in die Buszugriffswarteschlange in
einer Reihenfolge einzusortieren, die zu weniger Page-Misses und
mehr Page-Hits führt,
ließen
sich die Zugriffslatenzen verringern. Ein solcher Bus-Scheduler
könnte hergestellt
werden, wenn dem Prozessor sowohl die Speicherseiten-Verwaltungsimplementierung
als auch die Seitenanzahl pro Bank, die normalerweise vom Speichercontroller
gesteuert werden, bekannt wären.
Diese Informationen können
jedoch im allgemeinen nicht aus einem Speichercontroller ausgelesen
werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielhaft, und nicht einschränkend, an
den Figuren der beigefügten
Zeichnungen erläutert,
wobei sich gleiche Bezugszahlen auf gleichartige Elemente beziehen;
es zeigen:
-
1 eine
schematische Darstellung eines Mehrprozessorsystems gemäß einer
Ausführungsform,
-
2 eine
schematische Darstellung einer Speicherverwaltungsimplementierung
gemäß einer Ausführungsform,
-
3 eine
schematische Darstellung der Busschnittstelle aus 1 gemäß einer
Ausführungsform
der vorliegenden Offenbarung,
-
4 eine
schematische Darstellung eines Satzes von Zählern, die möglichen
Speicherverwaltungsimplementierungen und Speicherseitenanzahlen
pro Block entsprechen, gemäß einer
Ausführungsform
der vorliegenden Offenbarung und
-
5 ein
Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform
der vorliegenden Offenbarung.
-
DETAILLIERTE
BESCHREIBUNG
-
Die
nachstehende Beschreibung beschreibt Verfahren, mit denen ein Prozessor
eine von einem Speichercontroller benutzte Speicherseiten-Verwaltungsimplementierung
bestimmen kann, ohne notwendigerweise direkten Zugriff auf die Schaltungen oder
Register des Speichercontrollers zu haben. In der nachstehenden
Beschreibung werden zahlreiche spezifische Details, wie etwa Logikimplementierungen,
Bussignalisierungsverfahren und Ablaufdetails dargestellt, die ein
tieferes Verständnis
der vorliegenden Erfindung ermöglichen
sollen. Der Fachmann versteht jedoch, daß die Erfindung ohne derartige spezifische
Details umgesetzt werden kann. In anderen Fällen werden Ablaufsteuerungen,
Schaltungen auf Gateebene und Software-Anweisungsfolgen nicht im
Detail gezeigt, um die Verständlichkeit
der Ausführungsformen
der Erfindung nicht zu beeinträchtigen.
Mit den beigefügten
Beschreibungen kann der Durchschnittsfachmann die entsprechende Funktionalität ohne übermäßiges Experimentieren implementieren.
Die Erfindung wird in Form eines Prozessors und eines Speichercontrollers
offenbart; die in einem Mikroprozessorsystem durch einen Systembus
verbunden werden, wobei der Systemspeicher an den Speichercontroller
angeschlossen ist. Die Erfindung kann jedoch auch in anderen Prozessor-
und Systemspeicherkonfigurationen in die Praxis umgesetzt werden.
-
Es
wird nun auf 1 Bezug genommen, die eine schematische
Darstellung eines Mehrprozessorsystems 100 gemäß einer
Ausführungsform
zeigt. Das System aus 1 kann mehrere Prozessoren enthalten,
von denen der Übersichtlichkeit
halber nur zwei Prozessoren 140, 160 gezeigt werden.
Die Prozessoren 140, 160 können Level-1-Caches 142, 162 aufweisen.
Das Mehrprozessorsystem 100 aus 1 kann mehrere
Funktionen aufweisen, die über Busschnittstellen 144, 164, 112, 108 mit
einem Systembus 106 verbunden sind. In einer Ausführungsform
kann es sich bei dem Systembus 106 um den Front Side Bus
(FSB) handeln, der bei von der Intel® Corporation
hergestellten Mikroprozessoren der Pentium®-Klasse
genutzt wird. Eine über
eine Busschnittstelle mit einem Systembus verbundene Funktion wird
allgemein "Agent" genannt. Beispiele
für Agenten
sind die Prozessoren 140, 160, die Bus-Brücke 132 und
der Speichercontroller 134. In einigen Ausführungsformen
können
der Speichercontroller 134 und die Bus-Brücke 132 gemeinsam
als Chipsatz bezeichnet werden. In einigen Ausführungsformen können die
Funktionen eines Chipsatzes anders als in der Ausführungsform
aus 1 über
physikalische Chips aufgeteilt sein.
-
Die
Busschnittstellen 144, 164 der Prozessoren 140 bzw. 160 können in
einer Ausführungsform jeweils
folgendes enthalten: eine Buszugriffswarteschlange, die Speicherzugriffsanforderungen
serialisiert, einen Bus-Scheduler, der Speicherzugriffsanforderungen
in die Buszugriffswarteschlange einreiht, und einen Page-Hit-Prädiktor,
der den Bus-Scheduler dabei unterstützt, Buszugriffsanforderungen
in einer Reihenfolge einzureihen, welche die Anzahl von Zugriffen
mit Page-Miss verringert.
-
Der
Speichercontroller 134 kann den Prozessoren 140, 160 das
Lesen und Beschreiben des Systemspeichers 110 und eines
lösch-
und programmierbaren BIOS-Festwertspeichers (EPROM) 136 erlauben.
In einigen Ausführungsformen
kann der BIOS-EPROM 136 Flashspeicher nutzen. Der Speichercontroller 134 kann
eine Busschnittstelle 108 aufweisen, die den Transport
von aus dem Speicher gelesenen oder in diesen zu schreibenden Daten über den
Systembus 106 an bzw. von Busagenten erlaubt. Der Speichercontroller 134 kann
außerdem über eine
Hochleistungs-Grafikschnittstelle 139 mit einer Hochleistungs-Grafikschaltung 138 in
Verbindung stehen. In bestimmten Ausführungsformen kann es sich bei
der Hochleistungs-Grafikschnittstelle 139 um eine AGP-Schnittstelle
("Advanced Graphics
Port") oder eine
mit einem Vielfachen der Geschwindigkeit betriebene AGP-Schnittstelle,
wie etwa 4x-AGP oder 8x-AGP, handeln. Der Speichercontroller 134 kann
gelesene Daten vom Systemspeicher 110 über die Hochleistungs-Grafikschnittstelle 139 an
die Hochleistungs-Grafikschaltung 138 leiten.
-
Die
Bus-Brücke 132 kann
den Datenaustausch zwischen dem Systembus 106 und dem Bus 116 zulassen,
bei dem es sich in einigen Ausführungen
um einen ISA-Bus ("Industry
Standard Architecture")
oder einen PCI-Bus ("Peripheral
Component Interconnect")
handeln kann. Auf dem Bus 116 können verschiedene Eingabe-/Ausgabe-Geräte (E/A-Geräte) 114 vorhanden
sein, so etwa, in einigen Ausführungsformen,
Grafikcontroller mit niedriger Leistung, Videocontroller und Netzwerkcontroller. Eine
weitere Bus-Brücke 118 kann
in einigen Ausführungsformen
benutzt werden, um den Datenaustausch zwischen dem Bus 116 und
dem Bus 120 zu ermöglichen.
Bei dem Bus 120 kann es sich in einigen Ausführungsformen
um einen SCSI-Bus ("Small Computer
System Interface"),
einen IDE-Bus ("Integrated Drive
Electronics") oder
einen USB-Bus ("Universal
Serial Bus") handeln.
-
Mit
dem Bus 120 können
zusätzliche E/A-Geräte verbunden
sein. Zu diesen können
zählen:
Tastatur- und Cursor-Steuergeräte 122,
insbesondere Mäuse,
Audio-E/A 124, Kommunikationsgeräte 126, insbesondere
Modems und Netzwerkschnittstellen, und Datenspeichergeräte 128.
Auf dem Datenspeichergerät 128 kann
Softwarecode 130 gespeichert sein. In einigen Ausführungsformen kann
es sich bei dem Datenspeichergerät 128 um eine
magnetische Festplatte, ein Diskettenlaufwerk, ein optisches Laufwerk,
ein magnetooptisches Laufwerk, ein Magnetband oder um nichtflüchtigen
Speicher, insbesondere um Flashspeicher, handeln.
-
Es
wird nun auf 2 Bezug genommen, die eine schematische
Darstellung einer Speicherverwaltungsimplementierung gemäß einer
Ausführungsform
zeigt. Speicher ist im Allgemeinen in Bänke eingeteilt, die wiederum
in Seiten (engl. "pages") unterteilt sind.
Die Einzelheiten bezüglich
dessen, wie auf den Speicher zugegriffen wird, lassen sich als Speicherseiten-Verwaltungsimplementierung
bezeichnen. Für
eine gegebene Speichergröße sind
viele Speicherseiten-Verwaltungsimplementierungen möglich. Beispielsweise
kann DRAM in verschiedenen spezifischen Formaten erworben werden,
wie etwa FPM-DRAM ("Fast
Page Mode"), EDO-DRAM ("Extended Data Out"), SDRAM (synchroner
DRAM), DDR-SDRAM ("Dual
Data Rate SDRAM")
und RDRAM (Rambus®-DRAM). Es ist zu erwarten,
daß künftig noch
viele weitere Formate verfügbar
sein werden. Durch die Kombination aus einem Speichercontroller 134 mit
dem Systemspeicher 110 kann eine konkrete Speicherseiten-Verwaltungsimplementierung
spezifiziert werden. In eine konkrete Speicherseiten-Verwaltungsimplementierung
können
der Speichertyp, die Größe des Speichers,
ob verschachtelter Zugriff zur Anwendung kommt, und viele andere
Faktoren eingehen.
-
2 zeigt
eine mögliche
Speicherseiten-Verwaltungsimplementierung. Es können zwei oder mehr Speicherbänke vorliegen;
gezeigt sind zwei Bänke:
Bank 0 220 und Bank 1 230. Pro Bank sind vier
Seiten gezeigt, aber in anderen Ausführungsformen können andere
Seitenanzahlen pro Bank vorliegen, insbesondere auch Seiten mit
ungleichen Größen. In
Bank 0 220 sind die Seiten als Seite 0 222, Seite
1 224, Seite 2 226 und Seite 3 228 beschriftet.
In anderen Ausführungsformen
können
in verschiedenen Bänken
0 220 und 1 230 unterschiedliche Seitenanzahlen
vorliegen. Die Ausführungsform aus 2 geht
davon aus, daß gleichzeitig
immer nur eine Seite pro Bank offen sein kann, aber andere Ausführungsformen
können
auch für
mehrere gleichzeitig offene Seiten pro Bank ausgelegt sein.
-
Wir
betrachten nun eine Abfolge von Speicherzugriffen 240, 242, 244 in
Bank 0 220. In diesem Beispiel wollen wir annehmen, daß Seite
1 224 bereits offen ist. Seite 1 224 bleibt somit
während
des Zugriffs 240 offen, der einen Page-Hit darstellt. Ein nachfolgender
Zugriff 242 auf dieselbe Seite 1 224 sollte die
Seite 1 224 ebenfalls offen vorfinden, somit sollte der
Zugriff 242 ebenfalls ein Page-Hit sein. Der Zugriff 244 jedoch
findet auf Seite 2 226 zu, die zu Beginn des Zugriffs 244 geschlossen
ist. Daher sollte es sich bei Zugriff 244 um einen Page-Miss
handeln. Im allgemeinen sollte der Zugriff 244 meßbar mehr Zeit
benötigen
als der Zugriff 242.
-
Es
scheint, als könne
ein Prozessor die tatsächliche
Seitenverwaltungsimplementierung bestimmen, indem er Speicherzugriffe über den
ganzen Speicher hinweg vornimmt und registriert, wann die Zugriffslatenzzeiten
länger
als die Norm sind. In solchen Fällen
ließe
sich schlußfolgern,
daß Seitengrenzen überschritten
wurden. In der Praxis liefert dieses Verfahren jedoch möglicherweise
keine korrekten Ergebnisse. Es gibt zum Beispiel viele andere Gründe, aus
denen ein gegebener Speicherzugriff eine Zugriffslatenzzeit aufweisen
kann, die länger
als eine Norm ist. DRAM nutzt Auffrischungszyklen. Ein während eines
Auffrischungszyklus abgesetzter Zugriff kann eine Latenzzeit aufweisen,
die länger
als die Norm ist. Ebenso können
in dem in 1 gezeigten Mehrprozessorsystem
Speicherzugriffe, die von Prozessor 140 abgesetzt werden,
durch vorausgegangene Speicherzugriffe, die von Prozessor 160 abgesetzt
wurden, verzögert
werden. Die von Prozessor 160 abgesetzten Speicherzugriffe
nehmen nicht nur Zeit in Anspruch, sondern sie können auch andere Seiten im
Speicher öffnen.
Diese beiden Effekte können
die Speicherzugriffslatenzen von Zugriffen beeinflussen, die von
Prozessor 140 abgesetzt werden.
-
Es
wird nun auf 3 Bezug genommen, die eine schematische
Darstellung der Busschnittstelle aus 1 gemäß einer
Ausführungsform
der vorliegenden Offenbarung zeigt. 3 veranschaulicht eine
Busschnittstelle, bei der es sich in einer Ausführungsform um eine FSB-Schnittstelle
(Front Side Bus-Schnittstelle) handeln kann, die Speicherzugriffe einteilt.
Die Busschnittstelle 144 kann einen Bus-Scheduler 320 aufweisen,
der unter Verwendung einer Buszugriffswarteschlange 310 DRAM-Zugriffe
vom Prozessor 140 auf den DRAM einteilt. Die Busschnittstelle 144 kann über zusätzliche
Busse innerhalb des Cache 142 an den Prozessor 140 und über den
Systembus 106 an die Busschnittstelle 108 des
Speichercontrollers 134 gekoppelt sein. Der Speichercontroller 134 kann über einen
Speicherbus an den Systemspeicher 110 gekoppelt sein. In
einer Ausführungsform
kann es sich bei dem Systemspeicher 110 um DRAM handeln.
-
Der
Prozessor 140 kann einen Out-of-Order-Kern und eine Hardware-Prefetcheinheit
(HWP) umfassen. Der Out-of-Order-Kern kann ein Pipelining-Verfahren
benutzen, wobei mit dem Ziel, die Gesamtleistung des Prozessors
zu steigern, mehrere Anweisungen bei der Ausführung überlappt werden. Die HWP kann
im Voraus DRAM-Zugriffe abrufen, die voraussichtlich zu einem späteren Zeitpunkt
von Ausführungseinheiten
im Out-of-Order-Kern benötigt werden.
-
Die
Busschnittstelle 144 kann einen Bus-Scheduler 320 und
einen Page-Hit-Prädiktor 330 aufweisen.
In einer Ausführungsform
kann der Bus-Scheduler 320 an den Page-Hit-Prädiktor 330 gekoppelt
sein, und der Bus-Scheduler 320 kann an die Buszugriffswarteschlange 310 gekoppelt
sein. Bei alternativen Ausführungsformen
können
sowohl der Page-Hit-Prädiktor 330 als
auch der Bus-Scheduler 320 an die Buszugriffswarteschlange 310 gekoppelt
sein. In einer Ausführungsform
werden Zugriffe vom Prozessor 140 (d.h. von dem Out-of-Order-Kern
und der HWP) auf den Systemspeicher 110 vom Bus-Scheduler 320 basierend
auf der Anwendung oder auf Teilen der Anwendung, die von dem Prozessor
abgearbeitet wird, eingeteilt. Wenn beispielsweise die abgearbeitete
Anwendung latenztolerant ist, kann der Bus-Scheduler 320 Speicherzugriffe
so einteilen, daß dieverfügbare Bandbreite
des Speicherbusses ausgenutzt wird.
-
Wenn
die abgearbeitete Anwendung dagegen latenztolerant ist, kann der
Bus-Scheduler 320 Speicherzugriffe
so einteilen, daß die
Latenz beim Speicherzugriff reduziert wird. Anders gesagt kann der
Bus-Scheduler 320 Speicherzugriffe basierend auf den Eigenschaften
der vom Prozessor 140 abgearbeiteten Anwendung in der Buszugriffswarteschlange 310 anordnen.
Eine Anwendung kann latenzintolerant sein, z.B., wenn ein Speicherzugriff
benötigt
wird, um eine falsche Verzweigungsvorhersage aufzulösen. In
diesem Beispiel kann, wenn eine Verzweigung falsch vorhergesagt
worden ist, die von dem Kern ausgeführte spekulative Arbeit solange nutzlos
sein, bis der Speicherzugriff abgeschlossen ist und der Prozessor
Anweisungen aus dem richtigen Programmausführungspfad abruft. Um zu bestimmen,
ob eine Anwendung "latenztolerant" oder "latenzintolerant" ist, kann der Bus-Scheduler 320 die von
der HWP und dem Bus-Scheduler erzeugten Speicherzugriffe überwachen.
-
Um
Systemspeicherzugriffe einzuteilen, die voraussagegemäß auf Daten
von einer offenen Seite des Systemspeichers zugreifen, kann der
Bus-Scheduler 320 den Page-Hit-Prädiktor 330 nutzen.
In einer Ausführungsform
kann der Page-Hit-Prädiktor 330 über die
Abfolge der Zugriffe auf Seiten innerhalb des Systemspeichers Buch
führen,
und der Page-Hit-Prädiktor 320 kann
basierend auf der Abfolge der Seiten, auf die zugegriffen wird,
eine Liste derjenigen Seiten innerhalb des Systemspeichers erzeugen,
die voraussagegemäß offen
sind. Wenn zum Beispiel zuvor auf die Seiten 12, 14, 16 und 18 zugegriffen
wurde und die Seitenverwaltungsimplementierung des Systemspeichers 110 vier
gleichzeitig offene Seiten erlaubt, kann der Page-Hit-Prädiktor vorhersagen,
daß ein
neuer Zugriff auf Seite 12 ein Page-Hit sein wird, und daß ein neuer
Zugriff auf Seite 13 ein Page-Miss sein wird. In einer Ausführungsform der
Erfindung kann der Page-Hit-Prädiktor 330 die Liste
der voraussagegemäß offenen
Seiten im Systemspeicher mindestens einmal pro Speicherbuszyklus
erzeugen (oder aktualisieren). In anderen Ausführungsformen kann der Page-Hit-Prädiktor 330 die Liste
der voraussagegemäß offenen
Seiten im Systemspeicher jeweils nur nach einigen (z.B. zwei oder mehr)
Speicherbuszyklen erzeugen (oder aktualisieren).
-
Um
die offenen Seiten im Speicher zu bestimmen, sollte dem Page-Hit-Prädiktor 330 die
tatsächliche
Seitenverwaltungsimplementierung des Systemspeichers 110 bekannt
sein. Dies kann sich in vielen Ausführungsformen schwierig gestalten,
da der Prozessor 140 möglicherweise
nicht über
direkten Zugriff auf diejenigen Abschnitte des Speichercontrollers 134 verfügt, die
die tatsächliche
Seitenverwaltungsimplementierung anzeigen. Und es ergeben sich,
wie in der obenstehenden Behandlung von 2 erwähnt wurde,
möglicherweise
nicht die gewünschten
Ergebnisse, wenn über
den ganzen Speicher Speicherzugriffe vorgenommen werden und versucht
wird, hieraus durch Registrieren von erhöhten Speicherzugriffslatenzen
den Ort der Speicherseitengrenzen abzuleiten.
-
In
einer Ausführungsform
der vorliegenden Offenbarung kann der Page-Hit-Prädiktor 330 daher zur
Unterstützung
bei der Bestimmung der tatsächlichen
Seitenverwaltungsimplementierung des Systems zusätzliche Schaltungsanordnungen
aufweisen. In der Ausführungsform
aus 3 können
zur Unterstützung
bei dieser Bestimmung ein Zeitmesser 332, ein Latenzmittelwertszähler 334 und
eine Zählermatrix 336 benutzt
werden. In anderen Ausführungsformen
könnten
andere Schaltungen benutzt werden. In wiederum anderen Ausführungsformen könnte von
einem Softwareprogramm, das auf einem Prozessor ausgeführt wird,
ein Verfahren der vorliegenden Offenbarung durchgeführt werden.
-
Der
Zeitmesser 332 kann benutzt werden, um für einen
gegebenen, vom Prozessor 140 abgesetzten Speicherzugriff
eine gemessene Speicherzugriffslatenz zu liefern. In einer Ausführungsform
kann diese Latenzzeit als die Zeit gegeben sein, die ab dem Absetzen
der Zugriffsanforderung von der Buszugriffswarteschlange 310 über den
Systembus 106 verstreicht, bis die gelesenen Daten an der
Busschnittstelle 144 ankommen oder die zu schreibenden
Daten die Busschnittstelle 144 verlassen. Ein Zeitmesser 332 kann
unter Verwendung von auf dem Fachgebiet bekannten Schaltungen implementiert werden.
-
Der
Latenzmittelwertszähler 334 kann
benutzt werden, um ein laufendes Latenzmittel der von Prozessor 140 abgesetzten
Speicherzugriffe zu verfolgen. Im allgemeinen können für bestimmte Arten von DRAM
nominelle Speicherzugriffszeiten vorliegen. Zum Beispiel kann in
einem DRAM-Beispiel für einen
Page-Hit eine Speicherzugriffslatenz von 125 Nanosekunden erwartet
werden, und für
einen Page-Miss können
180 Nanosekunden erwartet werden. Diese Werte sind im allgemeinen
statisch und verändern
sich nicht mit der Zeit. Einige DRAMs können eine dritte mögliche nominelle
Speicherzugriffszeit aufweisen, die einem Zugriff auf einen "Page-empty"-Zustand entspricht.
Der Page-empty-Zustand kann auftreten, wenn keine der Leseschaltungen
einer Bank geladen ist (d.h., keine der Seiten ist offen), so daß zwar die
Leseschaltungen, die der Seite, auf die zugegriffen wird, entsprechen,
geladen werden müssen,
jedoch keine offene Seite existiert, die von den Leseverstärkern zurück ins DRAM
geschrieben werden müßte. Aus
diesem Grunde kann ein Speicherzugriff auf eine "Page-empty"-Bank eine nominale Zugriffslatenz aufweisen,
die irgendwo zwischen derjenigen eines Page-Hit und derjenigen eines
Page-Miss-Zustands liegt.
-
In
einigen Ausführungsformen
wäre es
möglich,
eine der oben genannten statischen Speicherzugriffszeiten, oder
eine Kombination derselben, als mittlere Latenz zu benutzen. Jedoch
kann der Latenzmittelwertszähler 334 dazu
benutzt werden, ein laufendes Latenzmittel zu liefern. Der Latenzmittelwertszähler 334 kann
auf einen gewählten
Wert initialisiert werden. Daraufhin wird für jede beobachtete Speicherzugriffslatenz
der neue Wert mit dem Inhalt des Latenzmittelwertszählers 334 kombiniert,
und es ergibt sich ein neuer Wert für die mittlere Latenz. In einer
Ausführungsform
kann der Latenzmittelwertszähler 334 jedesmal,
wenn ein Speicherzugriff abgeschlossen wird, um 1000 hochgezählt werden.
Daraufhin kann der Latenzmittelwertszähler 334 bei jedem
Taktzyklus mit 0,999 multipliziert werden. Falls nominell alle 100
Taktzyklen ein Speicherzugriff abgeschlossen wird, so kann die durchschnittliche Rückkehrlatenz
[105/(Inhalt des Latenzmittelwertszählers)]
betragen. In anderen Ausführungsformen können andere
Implementierungen eines Latenzmittelwertszählers benutzt werden, um andere
laufende Latenzmittel zu liefern.
-
Die
Zählermatrix 336 kann
eine große
Anzahl von Zählern
aufweisen, von denen jeder sowohl einer konkreten möglichen
Seitenverwaltungsimplementierung als auch einer konkreten möglichen
Seitenanzahl pro Bank entsprechen kann. Für jeden auftretenden Speicherzugriff
kann die Zählermatrix 336 für alle Kombinationen
aus konkreten möglichen
Seitenverwaltungsimplementierungen und Seitenanzahlen pro Bank jeweils
eine Vorhersage darüber
berechnen, ob im Vergleich zu dem unmittelbar vorausgegangenen Speicherzugriff
eine Seitengrenze überschritten
wird oder nicht. Wenn der Unterschied zwischen einer Speicherzugriffslatenz
(die in einer Ausführungsform
vom Zeitmesser 332 geliefert wird) und der mittleren Latenz
(die in einer Ausführungsform vom
Latenzmittelwertszähler 334 geliefert
wird) größer ist
als ein gewählter
Schwellwert, so können
alle Zähler
der Zählermatrix 336 entweder
hochgezählt oder
heruntergezählt
werden. Ein konkreter Zähler kann
heruntergezählt
werden, wenn die Vorhersage darüber,
ob im Vergleich zu dem unmittelbar vorausgegangenen Speicherzugriff
eine Seitengrenze überschritten
wird oder nicht, nicht zutraf. Andererseits kann ein konkreter Zähler hochgezählt werden,
wenn die Vorhersage darüber,
ob im Vergleich zu dem unmittelbar vorausgegangenen Speicherzugriff
eine Seitengrenze überschritten
wird oder nicht, zutraf. In einer Ausführungsform beträgt der Betrag,
um den die Zähler
hochgezählt
werden können,
10, und der Betrag, um den die Zähler
heruntergezählt
werden können,
beträgt
1. Es können
andere Beträge
gewählt
werden. Auf diese Weise kann nach einer gewissen Zeitspanne schlußgefolgert
werden, daß der Zähler mit
dem größten Wert
der tatsächlichen
Seitenverwaltungsimplementierung und der tatsächlichen Seitenanzahl pro Bank
entspricht.
-
Die
in 3 gezeigten Schaltungen setzen voraus, daß bei allen
Bänken
innerhalb des Systemspeichers die gleiche Seitenverwaltungsimplementierung
und die gleiche Seitenanzahl pro Bank vorliegen kann. In anderen
Ausführungsformen
können zusätzliche Zählermatrizen
aufgenommen werden, die Bänken
mit anderen Seitenverwaltungsimplementierungen und Seitenanzahlen
pro Block entsprechen.
-
Es
wird nun auf 4 Bezug genommen; diese zeigt
gemäß einer
Ausführungsform
der vorliegenden Offenbarung eine schematische Darstellung eines
Satzes von Zählern,
die möglichen
Speicherverwaltungsimplementierungen und Anzahlen von Speicherseiten
pro Block entsprechen. In 3 wird der
Satz von Zählern
i, j gezeigt, der als reguläre
Zählermatrix 336 aufgebaut
ist. In anderen Ausführungsformen
kann der Satz von Zählern
i, j jedoch auch anders als als Matrix aufgebaut sein.
-
Entlang
der Oberseite der Zählermatrix 336 sind
eine Reihe von möglichen
Seitenverwaltungsimplementierungen (SVI) aufgetragen, die als SVI
0, SVI 1 bis SVI 4 beschriftet sind. In einer gegebenen Ausführungsform
können
mehr oder weniger Seitenverwaltungsimplementierungen vorliegen.
In einigen Ausführungsformen
können
in einer Zählermatrix überzählige Spalten
vorhanden sein, die das Hinzufügen
neuer Formen von Seitenverwaltungsimplementierungen zu einem späteren Zeitpunkt
ermöglichen.
Beispiele für
eine j-te SVI könnten
sein: "FPM – nicht
verschachtelt", "FPM – verschachtelt", "EDO – nicht
verschachtelt", "EDO – verschachtelt" und viele andere
Arten von Seitenverwaltungsimplementierungen.
-
Entlang
der linken Seite der Zählermatrix 336 sind
Seitenanzahlen pro Bank in einer Bank gezeigt. Die Ausführungsform
aus 4 zeigt die i Seitenzahlen pro Bank als Zweierpotenzen.
In anderen Ausführungsformen
könnten
jedoch andere Werteabfolgen benutzt werden. In einigen Ausführungsformen
können
in einer Zählermatrix überzählige Zeilen
vorhanden sein, die das Hinzufügen
neuer Seitenanzahlen pro Bank zu einem späteren Zeitpunkt ermöglichen.
-
Jeder
der in 4 gezeigten Zähler
i, j entspricht der j-ten möglichen
Seitenverwaltungsimplementierung und der i-ten Seitenanzahl pro
Bank. Zum Beispiel entspricht der Zähler 2,3 428 der dritten Seitenverwaltungsimplementierung
und der zweiten Seitenanzahl (8 Seiten) pro Bank. Nachdem der obenstehend
im Zusammenhang mit 3 beschriebene Vorgang ausgeführt wurde,
entspricht der Zähler
i, j, der den höchsten
Wert enthält,
der tatsächlichen
Seitenverwaltungsimplementierung und der tatsächlichen Seitenanzahl pro Bank.
Wenn zum Beispiel der Zähler
2,1 424 den höchsten
Wert enthält, so handelt
es sich bei der tatsächlichen
Seitenverwaltungsimplementierung um die erste Implementierung und
bei der tatsächlichen
Seitenanzahl pro Bank um die zweite Seitenanzahl (8 Seiten).
-
Der
höchste
Wert in einem Zähler
i, j kann auf verschiedene Weisen bestimmt werden. In einer Ausführungsform
kann eine feste Schwelle M gewählt
werden, und der Vorgang kann angehalten werden, sobald ein beliebiger
der Zähler
i, j größer oder gleich
M ist. In anderen Ausführungsformen
können die
Zähler
eine unbegrenzte Zeit überlaufen
und nötigenfalls
ausgelesen werden. Es ist bemerkenswert, daß die tatsächliche Seitenverwaltungsimplementierung
unter bestimmten Umständen
in einer gegebenen Zählermatrix
nicht aufgelistet sein kann. Jedoch kann es dennoch vorteilhaft
sein, in einem Page-Hit-Prädiktor wie
etwa dem Page-Hit-Prädiktor 330 die
potentielle Seitenverwaltungsimplementierung, die dem Zähler i,
j mit dem höchsten
Wert entspricht, zu benutzen.
-
Es
wird nun auf 5 Bezug genommen, die ein Ablaufdiagramm
eines Verfahrens gemäß einer Ausführungsform
der vorliegenden Offenbarung zeigt. Der gezeigte Vorgang erörtert der Übersichtlichkeit
halber Speicherlesezugriffe, es können jedoch auch Speicherschreibzugriffe
benutzt werden. Der Vorgang aus 5 beginnt
bei Block 514, wo die verschiedenen Zähler i, j der Zählermatrix
auf einen Anfangswert gesetzt werden können. Zu diesem Zeitpunkt kann
zur Initialisierung des Latenzmittelwertszählers ein Anfangswert für mittlere
Latenz benutzt werden. Daraufhin wartet der Vorgang in Block 518 darauf,
daß vom
Speicher her Daten eingehen. Wenn die Daten vom Speicher her eingehen,
beginnt der Vorgang in Block 522 bei Zeile 0, Spalte 0
der Zählermatrix.
In Block 526 kann für
den aktuellen Speicherzugriff der vorausgesagte Ort auf einer Seite gemäß der i-ten
Seitenanzahl und der j-ten Seitenverwaltungsimplementierung bestimmt
werden. Daraufhin kann in Entscheidungsblock 530 bestimme werden,
ob die Differenz zwischen der beobachteten Latenz und der mittleren
Latenz einen Schwellwert T übersteigt
oder nicht.
-
Falls
das Ergebnis von Entscheidungsblock 530 JA ist, fährt der
Vorgang mit Entscheidungsblock 534 fort. In Entscheidungsblock 534 kann
bestimmt werden, ob der vorhergesagte Ort auf einer Seite, der in
Block 526 bestimmt wurde, auf einer anderen Seite liegt
als der für
den unmittelbar vorausgegangenen Speicherzugriff bestimmte Ort.
Falls das Ergebnis von Entscheidungsblock 534 JA ist, erhöht der Vorgang
in Block 538 den Zähler
i, j. Falls das Ergebnis von Entscheidungsblock 534 jedoch
NEIN ist, vermindert der Vorgang in Block 542 den Zähler i,
j. In beiden Fällen
fährt der
Vorgang daraufhin mit Entscheidungsblock 546 fort, wo bestimmt
werden kann, ob sich der Vorgang auf der letzten Zeile der Zählermatrix
befindet oder nicht. Falls die Antwort NEIN lautet, wird in Block 554 der
Wert von i hochgezählt,
und der Vorgang wird beginnend mit Block 526 wiederholt.
Falls die Antwort JA lautet, fährt
der Vorgang daraufhin mit Entscheidungsblock 550 fort,
wo bestimmt werden kann, ob sich der Vorgang in der letzten Spalte
der Zählermatrix
befindet oder nicht. Falls die Antwort NEIN lautet, wird in Block 558 der
Wert von i auf 0 zurückgesetzt,
und der Wert von j wird hochgezählt.
Der Vorgang wird daraufhin beginnend mit Block 526 wiederholt.
Falls die Antwort dagegen JA lautet, wird in Block 562 der
mittlere Latenzwert aktualisiert, und der Vorgang springt zurück zu Block 518 und
wartet auf Daten.
-
Es
wird nun wieder Entscheidungsblock 530 betrachtet. Falls
die hier vorgenommene Entscheidung NEIN lautet, wird ebenso in Block 562 der
mittlere Latenzwert aktualisiert, und der Vorgang springt zurück zu Block 518 und
wartet auf Daten.
-
In
der vorstehenden Patentschrift wurde die Erfindung anhand spezifischer
Ausführungsbeispiele beschrieben.
Es ist jedoch offenkundig, daß vielfältige Abwandlungen
und Änderungen
hieran vorgenommen werden können,
ohne von dem in den beigefügten
Ansprüchen
dargelegten Umfang und wesentlichen Gedanken der Erfindung abzuweichen. Dementsprechend
sind die Patentschrift und die Zeichnungen in einem veranschaulichenden
und nicht in einem einschränkenden
Sinne zu verstehen.
-
ZUSAMMENFASSUNG
-
Es
werden ein System und ein Verfahren offenbart, mit denen ein Prozessor
eine von einem Speichercontroller benutzte Speicherseiten-Verwaltungsimplementierung
bestimmen kann, ohne notwendigerweise direkten Zugriff auf die Schaltungen oder
Register des Speichercontrollers zu haben. In einer Ausführungsform
entspricht eine Matrix aus Zählern
potentiellen Seitenverwaltungsimplementierungen und Seitenanzahlen
pro Block. Abhängig
davon, ob die entsprechenden Seitenverwaltungsimplementierungen
und Seitenanzahlen eine Seitengrenze vorhersagen, können die
Zähler
jedesmal, wenn eine lange Zugriffslatenz beobachtet wird, hochgezählt oder
heruntergezählt
werden. Der Zähler,
der nach einer gewissen Zeitspanne den größten Wert aufweist, kann der
tatsächlichen
Seitenverwaltungsimplementierung und Seitenanzahl pro Block entsprechen.