-
HINTERGRUND
-
Rechengeräte umfassen
typischerweise Speichercontroller, um den Zugriff auf Speicher z.
B. durch einen Prozessor, der Daten lesen und schreiben will, zu
steuern. Zum Beispiel kann ein Speicher als dynamischer Speicher
mit wahlfreiem Zugriff (DRAM – Dynamic
Random Ac cess Memory) gestaltet sein, der den "Hauptspeicher" des Rechengerätes bildet, der verwendet wird,
um Daten für
die Verwendung durch den Prozessor zu speichern, so wie vom Computer
ausführbare
Befehle, Daten für
die weitere Verarbeitung entsprechend den vom Computer ausführbaren
Befehlen und so weiter.
-
Eine
Technik, die verwendet worden ist, um die Leistungsfähigkeit
beim Zugriff auf den DRAM zu verbessern, ist es, eine "Seite" gegenüber dem
Hauptspeicher zu schließen,
wenn der Verkehr zu dem Speicher über eine vorbestimmte Zeitdauer,
die als eine "Leerlaufzeit" bezeichnet werden
kann, geschlafen hat. Somit werden zukünftige Anfragen an den Speicher
mit einer "Seite
leer"-Zeitgebung
ausgeführt
und stehen somit nicht dem zusätzlichen
Aufwand gegenüber,
die Seite zu schließen,
bevor eine andere Seite geöffnet
wird. Eine Verbesserung des Leistungsverhaltens kann zum Beispiel
erwartet werden, wenn eine zukünftige
Anfrage zu mehr "Seitenverfehlungen" (z. B. wird eine
andere Seite als die, die offen ist, einer nächsten Speichertransaktion
unterworfen) als "Seitentreffern" führt. Wenn
daher die "verfehlte" Seite bereits geschlossen
ist, wird der Aufwand bei der Anfrage nach einer weiteren Seite
minimiert.
-
Herkömmliche
Techniken, die verwendet worden sind, um die Leerlaufzeit einzustellen,
wurden jedoch durch ein grundlegendes Eingage/Ausgabe-System (BIOS – Basic
Input Output System) beim Hochfahren eingerichtet und wurden während des
Betriebs des Speichercontrollers nicht geändert. Daher waren diese herkömmlichen
Techniken statisch und somit nicht in der Lage, Änderungen in den Daten, die
vom Speichercontroller herbeigeführt
werden, zu berücksichtigen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
eine Veranschaulichung einer beispielhaften Implementierung eines
Rechengerätes,
das so zu betreiben ist, dass es die Techniken für das dynamische Aktualisieren
von Leerlauf-Zeitgebern
ausführt.
-
2 ist
eine Veranschaulichung einer beispielhaften Implementierung, die
einen dynamischen Leerlauf-Zeitgeber der 1 in weiteren
Einzelheiten zeigt.
-
3 veranschaulicht
eine beispielhafte Implementierung einer Zustandsmaschine, die so
zu betreiben ist, dass sie einen Zähler eines Leerlauf-Zeitgebers
der 2 steuert.
-
4 veranschaulicht
eine beispielhafte Implementierung eines Countdown-Zeitgebers für den Leerlauf-Zeitgeber
der 2.
-
5 veranschaulicht
ein beispielhaftes Zusammenspiel eines Arbiters für die dynamische
Aktualisierung und eines Verfolgers der dynamischen Aktualisierung
bei dem dynamischen Leerlauf-Zeitgeber der 2.
-
6 ist
eine Veranschaulichung einer beispielhaften Zustandsmaschine für einen
Seiteninformation-Beobachter der 2, der Seitenübergänge verfolgt
und Angaben für
eine "gute" und eine "schlechte" Entscheidung für den Arbiter
für das
dynamische Aktualisieren der 5 erzeugt.
-
7 ist
eine Veranschaulichung einer beispielhaften Implementierung einer "Vorab-Auftrag (pre-charge)" und einer "Vorab-Auftrag an
alle (pre-charge all)"-Anfragetechnik.
-
8 ist ein Ablaufdiagramm, das eine Prozedur
bei einer beispielhaften Implementierung veranschaulicht, bei der
eine Geschichte der Seitenzugriffe verwendet wird, um den Zugriff
auf einen Speicher zu verwalten.
-
Fallweise
werden in der Diskussion dieselben Bezugsziffern verwendet, um auf
gleiche Strukturen und Komponenten Bezug zu nehmen.
-
GENAUE BESCHREIBUNG
-
In
der folgenden Diskussion werden beispielhafte Vorrichtungen beschrieben,
die einen dynamisch aktualisierbaren, adaptiven Leerlauf-Zeitgeber
zur Verfügung
stellen und/oder benutzen können.
Dann werden beispielhafte Prozeduren beschrieben, die von den beispielhaften
Vorrichtungen verwendet werden können, ebenso
wie von anderen Vorrichtungen, ohne dass man sich von deren Gedanken
und Umfang entfernt.
-
Beispielhafte Vorrichtungen
-
1 veranschaulicht
eine beispielhafte Implementierung 100 eines Rechengerätes 102,
das so zu betreiben ist, dass es Techniken für einen dynamisch aktualisierbaren,
adaptiven Leerlauf-Zeitgeber verwendet. Das Rechengerät 102 kann
vielfältig
gestaltet sein, so wie als ein herkömmlicher Desktop-Computer (z. B.
ein Desktop-PC), ein Server, ein Notebook-Computer, ein Hilfsmittel für die persönliche Information
und so weiter. Somit kann das Rechengerät 102 als ein "dickes" Rechengerät, das wesentliche
Verarbeitungs- und Speicherressourcen hat (z. B. ein Server) bis
hin zu einem "dünnen" Rechengerät mit relativ
beschränkten
Verarbeitungs- und/oder Speicherressourcen, so wie ein Hilfsmittel
für die
persönliche
Information, gestaltet sein. Eine weite Vielfalt anderer Ausgestaltungen
wird auch in Betracht gezogen.
-
Das
Rechengerät 102,
wie es in der 1 veranschaulicht ist, umfasst
einen Prozessor 104, einen Speicher 106, einen
Speichercontroller 108 und eine Steuervorrichtung 110 für einen
Cursor. Die Steuervorrichtung 110 für den Cursor (z. B. eine Maus,
ein Touchscreen, ein Touchpad und so weiter) ist mit dem Prozessor 104 über einen
Bus, so wie über
einen Host-Bus in
einem Grafikspeichercontroller-Hub, betrieblich gekoppelt. Der Prozessor 104 kann
vielfältig
gestaltet sein und ist somit nicht durch die Materialien, aus denen er
gebildet sein kann, oder die Bearbeitungsmechanismen, die hierin
verwendet werden, beschränkt.
Zum Beispiel kann der Prozessor aus Halbleiter(n) und/oder Transistoren
(z. B. elektronischen integrierten Schaltungen (ICs – Integrated
Circuits)) und so weiter bestehen. Zusätzlich, obwohl ein einzelner
Prozessor 104 veranschaulicht ist, kann der Prozessor 104 ein
Vertreter für mehrere
Prozessoren sein, die durch Verwendung eines Busses zur Kommunikation
mit dem Speichercontroller 108 gekoppelt sind.
-
Ähnlich ist
der Speicher 106, der ein Vertreter für den "Hauptspeicher" des Rechengerätes 102 sein kann,
vielfältig
gestaltbar. Zum Beispiel kann der Speicher 106 als DRAM
gestaltet sein, der einen synchronen DRAM (SDRAM), einen Rambus
DRAM (RDRAM), einen mit doppelter Datenrate arbeitenden synchronen DRAM
(DDR DRAM) und so weiter umfassen kann.
-
Der
Speichercontroller 108 ist so gestaltet, dass er "Speicheranfragen" (die hiernach auch
als "Anfragen" bezeichnet werden)
bedient, was, wie es hierin verwendet wird, sich auf eine Übergabe
von Befehl und Adresse zwischen einem Auftraggeber und dem Speicher 106 bezieht.
Zum Beispiel ist eine "Speicherleseanfrage" eine Übergabe
von Daten von dem Speicher 106 an einen Auftraggeber. Zum
Beispiel kann der Prozessor 104 die Speicherleseanfrage
einleiten (z. B. als Antwort auf eine Eingabe, die er von der Steuervorrichtung 110 für den Cursor
erhalten hat), um Daten von dem Speicher 106 an den Prozessor 104 zu übergeben.
Eine "Speicherschreibanfrage" ist eine Übergabe
von Daten von dem Auftraggeber an den Speicher 106. Weiter
mit dem voranstehenden Beispiel kann der Prozessor 104 eine
Speicherschreibanfrage einleiten, um Daten von dem Prozessor 104 an
den Speicher 106 zu übergeben.
Steuerinformation (z. B. ein Prioritätswert und eine Lese/Schreib-Eigenschaft
der Speicheranfrage) kann als ein Teil der Speicheranfrage transportiert
werden, durch Verwendung eines vordefinierten Protokolls in Bezug
auf das Durchleiten der Adresse und so weiter.
-
Der
Speichercontroller 108 ist in einer Implementierung so
gestaltet, dass er Daten zwischen dem Speicher 106 und
dem Prozessor 104 über
die Verwendung von "Seiten" überträgt. Zum Beispiel kann sich eine "Seite" auf einen Block
aus Daten beziehen, der innerhalb einer Zeile eines oder mehrerer
DRAMs gespeichert ist, die den Speicher 106 implementieren.
Auf die Zeile wird in diesem Fall über eine Zeilenadresse zugegriffen,
die von dem Speichercontroller 108 zur Verfügung gestellt
wird, und dann wird die Spaltenadresse der bestimmten Daten, die angesprochen
werden, zur Verfügung
gestellt. Eine weitere Spaltenadresse kann außerdem verwendet werden, um
auf zusätzliche
Daten innerhalb der Zeile zuzugreifen, ohne die Zeilenadresse erneut
zur Verfügung
zu stellen, was als ein "Seitentreffer" bezeichnet werden
kann. Das Lesen oder Schreiben zusätzlicher Daten aus derselben
Zeile bzw. in dieselbe Zeile auf diese Weise (was als "Seitenmodus" bezeichnet werden
kann) sorgt für
weniger Verzögerungszeit,
wenn auf die Daten zugegriffen wird, da Spaltenzugriffe ausgeführt werden
können,
ohne die Zeilenadresse zwischen den Spaltenzugriffen zur Verfügung zu stellen
und ohne eine gegenwärtig "offene" Seite zu schließen, auf
die nicht zugegriffen wird. Somit kann dieses zu einem verbesserten
Leistungsgrad bei der Nutzung des Speichers 106 führen.
-
Wenn
eine Speicherleseanfrage eine "offene" Seite trifft, wird
die Speicherleseanfrage zu dem Speichercontroller 108 gesendet,
in dem sie bedient wird. Bei einer Implementierung zeichnet der
Speichercontroller 108 die Seite (z. B. einen Zeilenteil
der Adresse) der vorliegenden Speicheranfrage in Seitenregistern
in dem Speichercontroller 108 auf. Wenn innerhalb einer
Leerlaufzeitdauer (deren weitere Diskussion hiernach zu finden ist)
eine weitere Speicheranfrage erfasst wird und zu derselben Seite
geleitet wird, wie die vorliegende Speicheranfrage, was erfasst
werden kann, indem die Seite, die in den Seitenregistern aufgezeichnet
ist, verglichen wird, dann kann die gegenwärtige Datenübertragung ohne das Schließen der
Seite weitergeführt werden.
-
Der
Speichercontroller 108 kann dann eine Adresse der ausgewählten Speicheranfrage
an den Speicher 106 zusammen mit entsprechender Steuerinformation über einen
Bus durchleiten. Bei einer Implementierung umfasst die Steuerinformation
einen Schreiben-Freigabe-Anteil (z. B. eine Datenmaske eines Protokolls
mit doppelter Datenrate (DDR)), um anzugeben, welche Bytes der Daten
zu schreiben sind, einen Zeilenadress-Anteil, um einen Zeilenbereich
der Adresse anzugeben, der durchgeleitet wird, und einen Spaltenadressen-Anteil,
um die Spaltenadresse anzugeben, die durchgeleitet wird. Wenn die
Anfrage ein Lesen ist, werden die ausgewählten Daten von dem Speicher 106 zur
Verfügung
gestellt.
-
Wenn
der ankommende Agent auf eine andere Seite zugreift (d. h. ein "Verfehlen" vorliegt), dann
wird eine vorliegende Seite (wenn es eine gibt) geschlossen, und
auf die andere Seite wird zugegriffen, indem eine Zeilenadresse
der Speicheranfrage und dann die entsprechenden Spaltenadressen
zur Verfügung
gestellt werden.
-
Wie
zuvor beschrieben, besteht ein Technik, die verwendet werden kann,
um den Leistungsgrad des Zugriffs auf den Speicher 106 zu
verbessern, darin, eine Seite in dem Speicher 106 zu schließen, wenn
kein Verkehr zu dem Speicher über
eine vorbestimmte Zeitdauer stattgefunden hat, was als eine "Leerlaufzeit" bezeichnet werden
kann. Daher werden zukünftige
Anfragen an den Speicher mit einer "Seite leer"-Zeitgebung behandelt und stehen daher
nicht einem zusätzlichen
Aufwand gegenüber,
die Seite zu schließen,
bevor eine andere Seite geöffnet
wird.
-
Um
festzustellen, ob und wann Seiten beim Speicher 106 zu
schließen
sind, kann der Speichercontroller 108 einen dynamischen
Leerlauf-Zeitgeber 112 und eine Anzeigetafel 114 benutzen.
Die Anzeigetafel 114 ist so gestaltet, dass sie das Vorliegen
anhängiger
Anfragen, die in Warteschlangen 116 gespeichert sind, an
den Speicher 106 verfolgt, die von dem Speichercontroller 108 verarbeitet
werden sollen. Zum Beispiel kann die Anzeigetafel Rank und Bank
des Speichers 106, die adressiert werden, verfolgen. Wenn
es keine anhängigen
Speicheranfragen gibt, kann die Anzeigetafel 114 eine Angabe
an den dynamischen Leerlauf-Zeitgeber 112 liefern, um eine
Zeitkontrolle einzuleiten, damit vorliegende Seiten geschlossen
werden.
-
Der
dynamische Leerlauf-Zeitgeber 112 ist so gestaltet, dass
er Techniken verwendet, um die Seiten zu schließen und um dynamisch sich ändernde
Codeströme
zu adressieren, indem die vorangegangenen Entscheidungen, die über das
Schließen
von Seiten getroffen wurden, verfolgt werden. Der dynamische Leerlauf-Zeitgeber 112 kann
auch während
des Betriebs dynamisch anpassen, um "schlechte" Entscheidungen über das Schließen von
Seiten ebenso wie "gute" Entscheidungen zu
kompensieren, damit die Anzahl aufeinander folgender "guter" Entscheidungen erhöht wird.
Zum Beispiel kann der dynamische Leerlauf-Zeitgeber 112 eine "Skalier"-Technik benutzen,
die durch eine Skala vorbestimmter Zeitüberschreitungswerte läuft, welche
auf vorangegangenen Entscheidungen basieren, die getroffen wurden,
um Seiten zu schließen,
je nachdem, ob die Entscheidungen "gut" oder "schlecht" sind. Somit kann
der dynamische Leerlauf-Zeitgeber 112 das Verhalten anstehender
Codeströme
basierend auf vorangegangenen Codeströmen vorhersagen und eine Leerlaufzeit
anpassen, indem die Zeitüberschreitungswerte
entsprechend verwendet werden, die für die Feststellung benutzt
werden, wann die Seiten zu schließen sind. Eine weitere Diskussion
des dynamischen Leerlauf-Zeitgebers 112 kann
mit Bezug auf die folgende Zeichnungsfigur gefunden werden. Obwohl
die beispielhafte Implementierung 100 der 1 Komponenten,
die für
die Funktionalität
repräsentativ
sind, als getrennt veranschaulicht, können diese Komponenten weiter
kombiniert (z. B. können
der Prozessor 104 und der Speichercontroller 108 durch
denselben Chip gebildet werden), aufgeteilt und so weiter werden,
ohne dass man sich vom Gedanken und Umfang dessen entfernt.
-
2 ist
eine Veranschaulichung einer beispielhaften Implementierung 200,
die den dynamischen Leerlauf-Zeitgeber 112 der 1 in
weiteren Einzelheiten zeigt. Der dynamische Leerlauf-Zeitgeber 112 der 2 umfasst
fünf Komponenten,
die als ein Leerlauf-Zeitgeber 202, ein Seiteninformation-Beobachter 204, ein
Arbiter 206 für
die dynamische Aktualisierung, ein Verfolger 208 des dynamischen
Aktualisierens und ein Verwalter 210 für das Schließen von
Seiten bezeichnet werden.
-
Der
Leerlauf-Zeitgeber 202 stellt einen Hauptzähler dar,
der die Anzahl von Leerlauf-Zyklen sowohl für geöffnete als auch für geschlossene
Seiten zu zählt,
was für
jeden Rank/jede Bank dupliziert wird. Der Seiteninformation-Beobachter 204 verfolgt
gegenwärtige
und vergangene Seitenstatusinformation und erzeugt Interpretationen
für das
Entscheiden über
das Schließen
von Seiten, die für
jeden Rank/jede Bank dupliziert werden, wobei eine Ausgabe an den
Arbiter 206 für
das dynamische Aktualisieren und an den Verfolger 208 des dynamischen
Aktualisierens geliefert wird.
-
Der
Arbiter 206 für
das dynamische Aktualisieren behandelt das Schlichten der Rechte
am Verfolger 208 des dynamischen Aktualisierens zwischen
jedem der Ränge/Bänke, wenn
eine Aktualisierung über
Entscheidungen für
das Schließen
von Seiten durchgeführt
werden soll. Der Verfolger 208 des dynamischen Aktualisierens
kann als ein auf dem "Wasserstand" basierender Haben/Soll-Verfolger
implementiert werden, der das Inkrementieren/Dekrementieren der
Zeit des Zählers
des Leerlauf-Zeitgebers 202 verwaltet. Der Verfolger 208 des
dynamischen Aktualisierens stellt auch Logik zur Verfügung, um
den Zeitüberlaufwert
für den
gewinnenden Rank/die Bank zu inkrementieren oder zu dekrementieren,
für die
von dem Arbiter 206 für
das dynamische Aktualisieren geschlichtet worden ist. Der Verwalter 206 für das Schließen von
Seiten verhandelt Anfragen über
das Schließen
von Seiten von jedem der Leerlauf-Zeitgeber 202 des Rank/der
Bank und gibt ein Anfragepaket 212 an einen zwischengeschalteten
(Interstream-)Arbiter 214 für die Taktausgabe 216.
-
Die
Anzeigetafel 114 beliefert den Leerlauf-Zeitgeber 202 mit
einer Angabe, wenn es in keiner der Lese/Schreib-Warteschlangen
des Speichercontrollers anhängigen
Anfragen an einen bestimmten Rank/eine Bank gibt. Der Leerlauf-Zeitgeber 202 wird
dann das Herabzählen
von einem Zeitüberlaufwert
beginnen (gesteuert durch den Verfolger 208 des dynamischen
Aktualisieren und den Arbiter 206 für das dynamische Aktualisieren)
und dem Verwalter 210 für
das Schließen
von Seiten eine Anfrage zum Schließen einer Seite vorlegen, wenn
das Zeitherabzählen
abgeschlossen ist. Der Seiteninformation-Beobachter 204 verfolgt
vorangegangene Seitenstatusinformation und Entscheidungen über das
Schließen
von Seiten basierend auf der Geschichte der ausgegebenen Takte und
der vorliegenden Aktualisierungsanfragen an den Arbiter 206 für das dynamische
Aktualisieren. Der Arbiter 206 für das dynamische Aktualisieren
ist so gestaltet, dass er zwischen mehreren Aktualisierungsanfragen
zwischen den Rängen/Bänken und
der vorliegenden Information über
den gewinnenden Rank/die Bank mit dem Beobachter 204 für das dynamische
Aktualisieren schlichtet, um einen Zeitüberschreitungswert für den entsprechenden
Rank/die Bank für
zukünftige
Schließungen
von Seiten zu aktualisieren.
-
3 veranschaulicht
eine beispielhafte Implementierung einer Zustandsmaschine 300,
die so zu betreiben ist, dass sie einen Zähler des Leerlauf-Zeitgebers 202 der 2 steuert.
Der Leerlauf-Zeitgeber 202 ist ein "Haupt"-Zeitgeberblock, der so gestaltet ist,
dass er von einem Zeitüberschreitungswert
herabzählt,
um das Schließen
von Seiten zu steuern, wobei diese Steuerung von der Zustandsmaschine 300 der 3 durchgeführt werden
kann.
-
Die
Zustandsmaschine umfasst einen Leerlauf 302-Zustand, einen
Zähl 304-Zustand,
einen Anfrage 306-Zustand und einen Leerlauf-Zähl 308-Zustand.
Der Leerlauf 302-Zustand ist ein Zustand, während dem Speicherregister
des Speichercontrollers 108 untätig sind, z. B. mit anhängigen Anfragen
geöffnet
oder geschlossen sind.
-
Der
Zähl 304-Zustand
bewirkt, dass der Leerlauf-Zeitgeber 202 ein Herabzählen für geöffnete Seiten ausführt, die
keine anhängigen
Anfragen haben. In den Anfrage 306-Zustand wird eingetreten,
wenn der Leerlauf-Zeitgeber 202 unterbrochen hat, Anfragen
für das
Schließen
von Seiten für
die Bank an den Verwalter 210 für das Schließen von
Seiten geltend zu machen. Anfragen bleiben geltend, bis sie von
dem Verwalter 210 für das
Schließen
von Seiten bedient sind, während
sie in diesem Zustand sind. Der Leerlauf-Zähl 308-Zustand bewirkt
ein Herabzählen
eines Leerlauf-Zyklus, das für
geschlossene Seiten durchgeführt
wird, was benutzt werden kann, um Datenströme mit zwischengeschalteten
Pulsen "schlechter" Entscheidungen zu
kompensieren, so dass sie nicht die Entscheidungen des Verfolgers 208 des
das dynamischen Aktualisierens insgesamt beeinflussen. Im Folgenden
werden Beschreibungen für
die Architektur einer Zustandsmaschine 300 der 3 angegeben,
woran sich dann eine Beschreibung von Übergängen zwischen den Zuständen der
Zustandsmaschine 300 anschließt.
"mrst_b"
-
Aktiv
niedriges Rücksetzen
der Zustandsmaschine 300.
"q_noreq"
-
Es
gibt keine anhängigen
Anfragen von einer der Warteschlangen 116 an den Rank/die
Bank.
"dpgregval"
-
Eine
bestimmte Seite (d. h. ein Rank/eine Bank) ist offen.
"idle_timer"
-
Der
Leerlauf-Zeitgeber 202 ist der tatsächliche Zähler, der beim Eintritt in
den Zähl 304-Zustand von Zeitüberschreitungswert
herabzählt.
"infinite_override"
-
Der
Zeitüberschreitungswert
für das
Herabzählen
kann auf "unendlich" (z. B. "FFh") gesetzt werden, um
eine unendliche Leerlauf-Herabzählzeit
anzugeben, damit verhindert wird, dass Anfragen für das Schließen von
Seiten jemals geltend gemacht werden.
"zero_override"
-
Der
Zeitüberschreitungswert
für das
Herabzählen
kann auf "Null" (z. B. "00h") gesetzt werden,
um eine Leerlauf-Herabzählzeit
von Null für
unmittelbare Anfragen zum Schließen von Seiten anzugeben.
"scr_use_dit"
-
Dies
ist ein Konfigurationsbit, das angibt, dass der Leerlauf-Zeitgeber 202 aktiviert
ist.
"scr_idle_cnt_en"
-
Dies
ist ein Konfigurationsbit, das angibt, dass das Herabzählen des
Leerlaufzyklus für
geschlossene Seiten aktiviert ist.
-
Nach
dem Rücksetzen
tritt die Zustandsmaschine 300 in den Leerlauf 302-Zustand
ein. Wenn eine Seite geöffnet
wird, die keine anhängigen
Anfragen von einer der Warteschlagen hat, und wenn die Zeitüberschreitungswerte
für das
Herabzählen
nicht Null (z. B. "00h") oder unendlich
(z. B. "FFh") sind, und wenn
der Leerlauf-Zeitgeber 202 aktiviert ist, geht die Zustandsmaschine 300 in
den Zähl 304-Zustand über. Dies
gibt an, dass der Rank/die Bank für opportunistische Schließungen von
Seiten bereit ist und das Laden des Herabzähl-Zeitgebers mit dem Zeitüberschreitungswert
anstoßen
wird.
-
Während er
in dem Zähl 304-Zustand
ist, zählt
der Zähler
des Leerlauf-Zeitgebers 202 kontinuierlich mit jedem Speichertakt
vom Zeitüberschreitungswert
hinunter, bis er Null erreicht. Wenn eine Seite geschlossen wurde,
bevor der Leerlauf-Zeitgeber 202 abgelaufen ist (beispielsweise
aufgrund einer Anfrage an den Speicher 106 war der Leerlauf-Zeitgeber 202 auf
einen unendlichen Wert programmiert/dynamisch bewegt worden und
so weiter), wird der Leerlauf-Zeitgeber 202 zurück in den
Leerlauf 302-Zustand übergehen.
-
Der Übergang
von dem Zähl 304-Zustand
zu der Anfrage 306 wird ausgelöst, wenn die folgenden Bedingungen
erfüllt
sind:
- • Der
Leerlauf-Zeitgeber 202 hat unterbrochen (idle_timer = =
0) ODER der Zeitüberschreitungswert
wird vom Programm her/dynamisch auf Null (z. B. "00h) bewegt (zero_override), UND
- • es
gibt noch keine Anfrage an die Bank (q_noreq) UND
- • die
Seite ist noch geöffnet
(pgregvalid).
-
Wenn
er in dem Anfrage 306-Zustand ist, bestätigt der Leerlauf-Zeitgeber 202 dem
Verwalter 210 für das
Schließen
von Seiten eine Anfrage zum Schließen von Seiten (pgclose_req),
wenn es sicher ist, einen Vorab-Auftrag auszugeben (prech_safe)
und geht zurück
in den Leerlauf 302-Zustand über, wenn die Seite geschlossen
ist. Mit anderen Worten bestätigt
der Leerlauf- Zeitgeber 202 den "Vorab-Auftrag", um eine gegenwärtige Seite
zu schließen,
und geht in den Leerlauf 302-Zustand über, wenn die Seite geschlossen
ist. Es sollte auch angemerkt werden, dass es einen direkten Bogen
von dem Leerlauf 302-Zustand zu dem Anfrage 306-Zustand
für Fälle gibt,
in denen der Zeitüberschreitungswert
Null (z. B. "00h") ist und es sicher
ist, unmittelbar einen Befehl für
einen Vorab-Auftrag auszugeben (d. h. eine gegenwärtige Seite
zu schließen).
-
Der
Leerlauf-Zeitgeber 202 kann auch als ein Ersatz-Zeitgeber
arbeiten, wenn der Rank/die Bank untätig und geschlossen ist. Dies
wird in der Zustandsmaschine 300 durch den Leerlauf-Zähl 308-Zustand
dargestellt. In den Leerlauf-Zähl 308-Zustand
wird eingetreten, wenn die Bank ohne anhängige Anfrage an den Rank/die
Bank untätig
ist und der Rank/die Bank geschlossen wird. Dies löst den Leerlauf-Zähler 202 aus,
falls er aktiviert ist (scr_idle_cnt_en), eine Anzahl Leerlaufzyklen
zu zählen,
während
derer die Bank geschlossen ist. In regelmäßigen Intervallen (scr_idle_ctn[7:0])
wird dem Leerlauf-Zähler 202 eine "Belohnung" gegeben, eine Anzahl "schlechter" Entscheidungen zum
Schließen
von Seiten beiseite zu legen, wenn eine ausreichende Zeitdauer vergangen
ist, wobei eine weitere Diskussion dieses Sachverhalts mit Bezug
auf die folgende Figur gefunden werden kann.
-
4 veranschaulicht
eine beispielhafte Implementierung eines Countdown-Zeitgebers für den Leerlauf-Zeitgeber 202.
Wie zuvor beschrieben zählt
der Leerlauf-Zeitgeber 202 kontinuierlich herunter, bis
er Null erreicht, und bleibt dort, bis ein neuer Zeitüberschreitungswert
geladen wird. Das Herabzählen
geschieht, wenn die Zustandsmaschine 300 in dem Zähl 304-Zustand oder dem
Leerlauf-Zähl 308-Zustand
ist. Die veranschaulichten Flops "dyn_cnt" und "slot_cnt" der 4 dienen
als ein Speicherpunkt für
das dem Wasserstand basierenden Schema in dem dynamischen Leerlauf-Zeitgeber 112.
Der "slot_cnt" kann auch als ein
Index in einen Multiplexierer mit 8 Bit 8:1 verwendet werden, der
die vorbestimmten (z. B. vorprogrammierten) Zeitüberschreitungswerte enthält (in der 4 als "scr_timeout" veranschaulicht),
die für
den Leerlauf-Zeitgeber 202 zu benutzen sind. Es sollte
angemerkt werden, dass die Strukturen der 3 und 4 für Rank und Bank
dupliziert werden.
-
Der
Arbiter 206 für
das dynamische Aktualisieren schlichtet Anfragen von jeder der Bänke, die
die Benutzung des Verfolgers 208 des dynamischen Aktualisierens
anfragen. Der Arbiter 206 für das dynamische Aktualisieren
kann zum Beispiel jede der gültigen
Anfragen von jeder Bank überprüfen und
für einen
besten Kandidaten entscheiden, das Recht am Verfolger 208 des
dynamischen Aktualisierens zu übernehmen,
um seine Werte "dyn_cnt" und "slot_cnt" zu aktualisieren.
Auf diese Weise kann eine verringerte Gatter-Zahl erhalten werden,
da der Verfolger 208 des dynamischen Aktualisierens gemeinsam
genutzt wird.
-
Das
Schlichten für
den Verfolger 208 des dynamischen Aktualisierens kann durchgeführt werden,
indem zwei Stufen ausgeführt
werden. Die erste Stufe der Schlichtung basiert auf einem ersten
verfügbaren
Algorithmus mit einem niedrigsten Rank, der eine höchste Priorität hat, gefolgt
von einer niedrigsten Bank, die dem Verwalter 210 für das Schließen von
Seiten ähnlich
sein kann. Die Verhandlung wird auf dem qualifizierten "idle_inc_rerq" von dem Leerlauf-Zeitgeber
jedes Rank/jeder Bank ausgeführt.
Ein qualifizierter "idle_inc_req" (d. h. die "Belohnung" des Leerlauf-Zählers) beschreibt
irgendeinen Rank/eine Bank, die die "idle_inc_req" geltend macht, da der Leerlauf-Zeitgeber 202,
wenn er in einem "Leerlauf-Zähl"-Zustand ist, abgelaufen ist und die
Skala sich nicht in der "Mitte", z. B. an einem
Zählwert "20h", befindet. Dies
verringert beträchtlich
die Menge der "idle_inc_req", die geschlichtet
werden, da keine Anfragen verhandelt werden, die nicht zu einer Änderung
der Skala führen
werden.
-
Der
Gewinner der ersten Stufe erhält
das Recht am Verfolger 208 des dynamischen Aktualisieren, wenn
es keine Angaben für
einen Treffer einer ungültigen
Seite (PIH – Page
Invalid Hit), das Verfehlen einer ungültigen Seite (PIM – Page Invalid
Miss), den Treffer einer gültigen
Seite (PVH – Page
Valid Hit) oder das Verfehlen einer gültigen Seite (PVM – Page Valid
Miss) gibt, die von dem Seiteninformation-Beobachter 204 für jede der
Bänke erhalten
worden ist. Darüber
hinaus wird jeder Bank, die ihren Seiteninformationsstatus bestätigt, die
Inhaberpriorität
gegeben. Diese Implementierung nimmt an, dass sich von einem architektonischen Standpunkt
her PIH, PIM, PVH und PVM wechselseitig ausschließen, da
der zwi schengeschaltete Arbiter 214 jeder Bank in einem
gegebenen Taktzyklus einen einzigen Zyklus zuteilt, obwohl weitere
Implementierungen ebenfalls in Betracht gezogen werden.
-
Die
Bank, die das Schlichten gewonnen hat, wird im nächsten Taktzyklus alle folgenden
Eigenschaften ausmultiplexiert und an den Verfolger 208 des
dynamischen Aktualisierens geschickt haben:
- • Treffer
für ungültige Seite
(PIH);
- • Verfehlen
einer gültigen
Seite (PVM);
- • Angabe
einer Belohnung (Belohnung), die gegeben wird, wenn die Belohnung
für den
dynamischen Leerlauf-Zeitgeber 112 aktiviert ist und gute
Entscheidungen (PVH und PIM) und "idle_inc_req" umfasst;
- • Zähler für das dynamische
Aktualisieren (dyn_cnt[5:0]); und
- • Rank/Bank-Index,
der im vorangegangenen Takt erteilt worden ist.
-
Das
Folgende wird dann multiplexiert und in den nächsten zwei Taktzyklen gesendet:
- • Zeitfensterzähler (slot_cnt[2:0]);
- • Überschreiben
des Zählers
mit Null (zero_override);
- • Überschreiben
des Zählers
mit Unendlich (infinite_override); und
- • Rank/Bank-Index,
der zwei Taktzyklen zuvor erteilt worden ist.
-
Der
Verfolger
208 des dynamischen Aktualisierens verfolgt die
Anzahl "guter" und "schlechter" Entscheidungen zum
Schließen
von Seiten, die von dem Leerlauf-Zeitgeber
202 getroffen werden,
wobei Beispiele davon in der folgenden Tabelle gezeigt sind. Der
Verfolger
208 dynamischen Aktualisierens kann zum Beispiel
als eine Skala mit 6 Bit implementiert werden. Bei einer Implementierung
wird der Zähler
auf eine Mitte der Skala (z. B. "20h") voreingestellt,
wann immer er einen Schwellenwert abruft oder wenn ein Rücksetzen geltend
gemacht wird.
Entscheidung | Seitenstatus | Treffer/Verfehlen | Gut/Schlecht | Beschreibung |
Treffer für ungültige Seite
(PIH) | ungültig | Treffer | Schlecht | Die
Seite wurde zu früh
geschlossen und der nächste Zugriff
auf die Bank war ein Seitentreffer |
Verfehlen einer ungültigen Seite (PIM) | ungültig | Verfehlen | Gut | Die
Seite wurde früh
genug geschlossen und der nächste
Zugriff auf die Bank war das Verfehlen einer Seite |
Treffer
für eine
gültige
Seite (PVH) | gültig | Treffer | Gut | Die
Seite wurde nicht zu früh
geschlossen, und der nächste
Zugriff auf die Bank war ein Seitentreffer |
Verfehlen
einer ungültigen
Seite (PVM) | gültig | Verfehlen | Schlecht | Die
Seite wurde zu spät
geschlossen und der nächste Zugriff
auf die Bank war ein Verfehlen der Seite |
-
Diese
Entscheidungen werden verwendet, um zwischen den vorbestimmten Zählerwerten
wie folgt zu skalieren. Ein Übergang
(z. B. einen Wert in der Skala der Zeitüberschreitungswerte "nach unten") auf einen Zeitüberschreitungswert
mit einer relativ geringeren Zeitdauer wird ausgeführt, wenn
man einer vorbestimmten Anzahl "schlechter" Entscheidung gegenübersteht,
weil der Zeitüberschreitungswert
zu "groß" war, d. h. eine Zeitdauer,
auf die mit dem Zeitüberschreitungswert
Bezug genommen wurde. Wenn zum Beispiel einem PIH vier PVM folgen,
und ein Schwellwert mit niedrigem Wasserstand auf drei Zähler unterhalb
von "20h" gesetzt wird (d.
h. auf 1Ch), kann ein Übergang
durch eine auf Wasserstand basierende Skala mit sechs Bit auf "21h" durchgeführt werden,
wenn man dem PIH gegenübersteht,
und bei einem ersten PVM, dem man gegenübersteht, "zurück" auf "20h" bewegt werden. Außerdem werden Übergänge nach "1Fh", "1Eh" bzw. "1Ch" für die nächsten drei
PVMs, denen man gegenübersteht,
durchgeführt
werden. Da der niedrige Wasserstand auf "1Ch" gesetzt
ist, wird es den 6-Bit-Wasserstand in der niedrigen Phase auslösen, was
bewirkt, dass das "slot_cnt" ein niedrigeres
Zeitfenster auswählen
wird, das auf einen Zeitüberschreitungswert
programmiert war, welcher eine relativ kürzere Zeitdauer für den Rank/die
Bank beschreibt. Sobald sie ausgelöst hat, wird die auf einem
Wasserstand mit 6-Bit basierende Skala für den Rank/die Bank auf "20h" zurückgesetzt
werden.
-
Wenn
eine "Belohnung" aktiviert ist und
einem PIH drei PVMs, eine "gute" Entscheidung und
eine PVM folgen, würden Übergänge wie
folgt durchgeführt
werden. Die Skala würde
von "20h" auf "21h" (für den PIH) gehen,
auf "20h" (erstes PVM), auf "1Fh" (zweites PVM), auf "Eh" (drittes PVM), auf "1Fh" ("gute" Entscheidung) und
schließlich
auf "Eh" für das vierte
PVM. Da bei diesem Beispiel der niedrige Wasserstand auf "1Ch" programmiert war,
wurde der niedrige Wasserstand nicht unterschritten, da er um eine "gute" Entscheidung versetzt
war, und somit werden mehr PVMs benötigt, um den niedrigen Wasserstand
zu unterschreiten. Dies geschieht, um die Notwendigkeit nach einem
zusätzlichen
Befehl für
einen Vorab-Auftrag (d. h. Seite schließen) zu berücksichtigen. Ein ähnlicher Übergang
wird einen Wert "höher" in der Skala der
Zeitüberschreitungswerte
durchgeführt,
auf einen Zeitüber schreitungswert
mit einer relativ größeren Zeitdauer,
wenn man einer vorbestimmten Anzahl "guter" Entscheidungen gegenübersteht.
-
Ein Übergang
zu einem anderen Zeitüberschreitungswert,
der sich auf eine Zeitdauer bezieht, die näher (z. B. um einen Wert) an
einer Mitte (z. B. "20h") der Skala liegt,
wird durchgeführt,
wenn ein Verfehlen einer ungültigen
Seite oder ein Treffer einer gültigen
Seite beobachtet wird. Dies berücksichtigt
die verbesserte Verzögerungszeit
durch einen zusätzlichen
Vorab-Auftrag- oder einen Aktivierungsbefehl. Weiter wird ein Übergang
durchgeführt,
um sich näher
an eine Mitte der Skala zu bewegen, wenn eine vorbestimmte Anzahl von
Zählungen
aufgetreten ist, während
derer Verkehr zwischen dem Speicher und dem Speichercontroller nicht
vorgekommen ist. Dies beseitigt Fälle, in denen relativ lange
Zyklen der Inaktivität
bei geschlossenen Seiten nach einer Anzahl relativ weit beabstandeter "schlechter" Entscheidungen beobachtet
worden ist, wie es zuvor in Bezug auf den Leerlauf-Zähl 308-Zustand
der 3 beschrieben worden ist.
-
Wie
zuvor beschrieben, wird das Recht am Verfolger 208 des
dynamischen Aktualisierens von dem Arbiter 206 für das dynamische
Aktualisieren ausgehandelt. Wenn das Recht einmal festgelegt worden
ist, wird die Aktualisierungsinformation für den gewinnenden Rank/die
Bank ausmultiplexiert und an einen Leerlauf-Zeitgeber 202 gesendet,
um das "dyn_cnt" und das "slot_cnt" zu aktualisieren.
Die unmittelbare Seiteninformation wird verwendet, um die "dyn_cnt"-Skala in dem Leerlauf-Zeitgeber 202 für den Rank/die
Bank in dem nächsten
Taktzyklus zu aktualisieren. In dem folgenden Taktzyklus wird der "slot_cnt" für den Rank/die
Bank aktualisiert.
-
Der
Verfolger 208 des dynamischen Aktualisierens kann auch
zwei programmierbare Wasserstandswerte enthalten, z. B. einen "hohen" und einen "niedrigen" Wasserstand. Wenn
der "hohe" Wasserstand erreicht
ist, bewegt sich der "slot_cnt" zu einem "größeren" Zeitfenster, z.
B. einem Wert auf der Skala, der einen relativ größeren Zeitüberschreitungswert
beschreibt. Typischerweise wird das größere Zeitfenster auf einen Zeitüberschreitungswert
programmiert, der größer ist
als das gegenwärtige
Zeitfenster, und somit wird dieses den Zeitüberschreitungswert, der von
dem Leerlauf-Zeitgeber 202 benutzt wird, inkrementieren.
In ähnlicher Weise
bewegt sich, wenn der niedrige Wasserstand erreicht ist, der "slot_cnt" zu einem kleineren
Zeitfenster (z. B. einem Wert auf der Skala, der einen relativ kleineren
Zeitüberschreitungswert
beschreibt), was somit den Zeitüberschreitungswert
für den
Leerlauf-Zeitgeber 202 dekrementiert. Die Zeitfensterbewegung
kann gedeckelt werden, wenn der Zeitüberschreitungswert an irgendeinem
Zeitfenster auf Null (z. B. "00h") oder Unendlich
(z. B. "FFh") programmiert wird,
um den Zeitfensterbereich, d. h. den Bereich der Skala, zu beschränken. Zum
Beispiel kann ein Zeitfensterbereich mit acht Zeitfenstern (d. h.
Werten) programmiert werden.
-
Die
Skala des Verfolgers 208 des dynamischen Aktualisierens
für den
gewinnenden Rank/die Bank kann auf eine Mitte (z. B. "20h") der Skala zurückgesetzt
werden, wenn:
das Rücksetzen
geltend gemacht ist ODER
der hohe Wasserstand überschritten
worden ist ODER
der niedrige Wasserstand unterschritten worden
ist.
-
Die
weitere Diskussion der Wechselwirkung zwischen dem Verfolger 208 des
dynamischen Aktualisierens und dem Arbiter 206 für das dynamische
Aktualisieren kann in Bezug auf die folgende Figur gefunden werden.
-
5 veranschaulicht
eine beispielhafte Wechselwirkung 500 zwischen dem Arbiter 206 für das dynamische
Aktualisieren und dem Verfolger 208 des dynamischen Aktualisierens.
Die Angaben für
PIH, PIM, PVH und PVM werden auf Seitenregistern des Speichercontrollers 108 entsprechend
einer Zustandsmaschine 600 der 6 erzeugt,
welche eine beispielhafte Zustandsmaschine 600 für den Seiteninformation-Verfolger 206 veranschaulicht,
der Seitenübergänge verfolgt.
-
Seiteninformation
wird erzeugt, wenn die Zustandsmaschine 600 in den PIH-,
dem PIM-, dem PVH- oder dem PVM-Zustand ist. Die Zustände Wait_Valid
und Wait_Invalid werden verwendet, um den Seiteninformation-Beobachter 204 in
einem anhängigen
Zustand zu halten, bis sich die Seite von einem PVM oder PIH/PIM
erholt, um das fehlerhafte Gutschreiben aufgrund einer vorangegangenen
Entscheidung zu verhindern. Zum Beispiel wird das Gutschreiben eines
aktiven Befehls von einem vorangegangenen PVM oder das Gutschreiben
einer Lese/Schreib-Ausgabe von einem vorangegangenen PIH die von
dem PVM/PIH herrühren Strafe
beseitigen.
-
Das
Folgende diktiert die Einzelheiten der Angaben des Seiteninformation-Verfolgers.
Der Treffer für eine
ungültige
Seite (PIH) wird geltend gemacht, wenn:
das Seitenregister
für den
Rank/die Bank ungültig
ist (!pgregvalid), UND
ein Aktivierungsbefehl an den Rank/die
Bank ausgegeben wurde (setvalid), UND
die vorangegangene Zeilenadresse
der gegenwärtigen
Zeilenadresse äquivalent
ist (samelaunch).
-
Das
Verfehlen einer ungültigen
Seite (PIM) wird geltend gemacht, wenn:
das Seitenregister
für den
Rank/die Bank ungültig
ist (!pgregvalid), UND
ein Aktivierungsbefehl an den Rank/die
Bank ausgegeben wurde (setvalid), UND
die vorangegangene Zeilenadresse
nicht zu der gegenwärtigen
Zeilenadresse äquivalent
ist (!samelaunch).
-
Ein
Treffer für
eine gültige
Seite (PVH) wird geltend gemacht, wenn:
das Seitenregister
für den
Rank/die Bank gültig
ist (pgregvalid), UND
ein Lese/Schreibbefehl an den Rank/die
Bank ausgegeben wurde (dlaunchrdwrcmd·samerkbk), UND
eine
Anfrage zum Schließen
der Seite wurde für
den Rank/die Bank in vorangegangenen Zyklus nicht geltend gemacht
wurde (!pgcls_req_f).
-
Ein
Verfehlen einer gültigen
Seite (PVM) wird geltend gemacht, wenn:
das Seitenregister
für den
Rank/die Bank gültig
ist (pgregvalid), UND
ein Befehl für einen Vorab-Auftrag oder
einen Vorab-Auftrag an alle an den Rank/die Bank ausgegeben wurde (clrvalid),
UND
die Anfrage von einer der Warteschlangen bewilligt wurde
(q_req_gnt), UND
eine Anfrage zum Schließen der Seite in dem vorangegangenen
Zyklus für
den Rank/die Bank nicht geltend gemacht wurde (!pgcls_req_f), UND
der
sichere Vorlab-Auftrag für
den Rank/die Bank für
wenigstens zwei Zyklen bestätigt
worden ist (presafe_ff), UND
ein Wiederauffrischbefehl nicht
bewilligt wurde (!refresh_gnt).
-
Wie
zuvor beschrieben umfasst der dynamische Leerlauf-Zeitgeber 112 einen
Verwalter 210 für
das Schließen
einer Seite, welcher jede der Anfragen zum Schließen einer
Seite von jedem Rank/jeder Bank sammelt und über den besten Kandidaten für eine Anfrage
zum Schließen
einer Seite mit dem zwischengeschalteten Arbiter 214 verhandelt.
Bei einer Implementierung gibt es zwei Ebenen der Schlichtung für den Verwalter 210 zum
Schließen
einer Seite, z. B. pro Bank und pro Rank.
-
Die
erste Ebene der Schlichtung entscheidet über einen besten Kandidaten
für jede
der Bänke
in demselben Rank, basierend auf einer ersten verfügbaren Anfrage,
z. B. von der Bank 0 zu der Bank 7. Die zweite Ebene der Schlichtung
entscheidet über
einen besten Kandidaten für
jeden der Ranks basierend auf einer ersten verfügbaren Anfrage, z. B. von Rank
0 zu Rank 3. Bei diesem Beispiel impliziert dies eine Schlichtungsreihenfolge
Bank 0 von Rank 0, Bank 0 von Rank 1, Bank 0 von Rank 2, Bank 0
von Rank 3, Bank 1 von Rank 0, Bank 1 von Rank 1 usw.
-
Der
Verwalter 210 für
das Schließen
einer Seite kann auch einen "Vorab-Auftrag
an alle"-Zyklus (z. B. ein
Seitenbandsignal für
den Zwischenstrom-Arbiter 214) für einen bestimmten Rank anfragen,
der
zwei oder mehr Bänke
hat, die das Schließen
einer Seite anfragen (potential_prechall_rk[3:0]) UND
jede
der Bänke
in dem Rank fragt entweder nach dem Schließen einer Seite (pgclose_req[31:0])
oder eine Seite ist ungültig
(!pgregvalid[31:0]) und es ist sicher, ein Vorladen auf der ungültigen Seite
auszugeben (prechln_safe[31:0]).
-
Eine "Vorab-Auftrag an
alle"-Anfrage kann
Anfragen zum Schließen
einer Seite von anderen Bänken/Rängen verdrängen. Bei
einer Implementierung, wenn mehrere "Vorab-Auftrag an alle"-Anfragen für mehr als
einen Rank geltend gemacht sind, kann der niedrigste Rank bedient
werden. 7 veranschaulicht eine beispielhafte
Implementierung dieser Technik.
-
Beispielhafte Prozeduren
-
Die
folgende Diskussion beschreibt Techniken für einen dynamisch aktualisierten,
adaptiven Leerlauf-Zeitgeber, die implementiert werden, indem die
zuvor beschriebenen Systeme und Vorrichtungen verwendet werden.
Die Prozeduren sind als ein Satz Blöcke gezeigt, die Arbeitsgänge festlegen,
welche von einer oder von mehreren Vorrichtungen ausgeführt werden
und die nicht notwendigerweise auf die Reihenfolge beschränkt ist,
die zum Ausführen
der Arbeitsgänge
mit den jeweiligen Blöcken
gezeigt ist.
-
8 veranschaulicht eine Prozedur 800 bei
einer beispielhaften Implementierung, die von dem Speichercontroller 108 der 1 benutzt
werden kann. Eine Geschichte der Seitenzugriffe auf einen Speicher
wird erhalten (Block 802). Zum Beispiel kann der Beobachter 204 für Seiteninformation
verwendet werden, um Seitenzugriffe zu verfolgen. Beobachtungen
werden von einem Speichercontroller gemacht, welche der Seitenzugriffe
zu einem Treffer für
eine ungültige
Seite, ein Verfehlen einer gültigen
Seite, einem Verfehlen einer ungültigen
Seite oder einen Treffer für
eine gültige
Seite führen
(Block 804). Somit kann der Speichercontroller 108 bestimmen,
welche der Entscheidungen "gut" (z. B. ein Verfehlen
einer ungültigen
Seite oder ein Treffer für eine
gültige
Seite) oder "schlecht" (z. B. ein Treffer
für eine
ungültige
Seite oder ein Verfehlen einer gültigen Seite)
waren. Der Zugriff auf den Speicher durch den Speichercontroller
wird basierend auf den Beobachtungen verwaltet (Block 806).
Zum Beispiel kann eine skalenbasierte Technik verwendet werden,
um zwischen Werten (d. h. Zeitfenstern) einer Skala überzugehen,
die eine Vielzahl von Zeitüberschreitungswerten
umfasst.
-
Schlussfolgerung
-
Obwohl
die Erfindung in einer Sprache beschrieben worden ist, die für strukturelle
Merkmale und/oder methodologische Taten spezifisch ist, soll verstanden
werden, dass die Erfindung, die in den angehängten Ansprüchen definiert ist, nicht notwendigerweise
auf die beschriebenen bestimmten Merkmale oder Handlungen beschränkt ist.
Stattdessen sind die bestimmten Merkmale und Handlungen als beispielhafte
Formen des Implementierens der beanspruchten Erfindung offenbart.
-
Zusammenfassung
-
Ausführungsformen
eines dynamischen, aktualisierbaren, adaptiven Leerlauf-Zeitgebers
werden hierin vorgestellt.