DE112007000645T5 - Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber - Google Patents

Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber Download PDF

Info

Publication number
DE112007000645T5
DE112007000645T5 DE112007000645T DE112007000645T DE112007000645T5 DE 112007000645 T5 DE112007000645 T5 DE 112007000645T5 DE 112007000645 T DE112007000645 T DE 112007000645T DE 112007000645 T DE112007000645 T DE 112007000645T DE 112007000645 T5 DE112007000645 T5 DE 112007000645T5
Authority
DE
Germany
Prior art keywords
page
memory
decisions
pages
memory controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112007000645T
Other languages
English (en)
Other versions
DE112007000645B4 (de
Inventor
Chee Georgetown Teh
Zohar Folsom Bogin
Suryaprasad Folsom Kareenahalli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112007000645T5 publication Critical patent/DE112007000645T5/de
Application granted granted Critical
Publication of DE112007000645B4 publication Critical patent/DE112007000645B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Storage Device Security (AREA)
  • Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
  • Control Of Vehicle Engines Or Engines For Specific Uses (AREA)
  • Electrical Control Of Ignition Timing (AREA)

Abstract

Vorrichtung, mit einem Speichercontroller, der durch eine Skala wandert, welche eine Vielzahl von Zeitüberschreitungswerten hat, die auf vorangegangenen Entscheidungen basieren, welche getroffen wurden, um Seiten gegenüber einem Speicher zu schließen.

Description

  • 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.

Claims (20)

  1. Vorrichtung, mit einem Speichercontroller, der durch eine Skala wandert, welche eine Vielzahl von Zeitüberschreitungswerten hat, die auf vorangegangenen Entscheidungen basieren, welche getroffen wurden, um Seiten gegenüber einem Speicher zu schließen.
  2. Vorrichtung nach Anspruch 1, bei der der Speicher ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM – Dynamic Random Access Memory) ist.
  3. Vorrichtung nach Anspruch 1, bei der der Speichercontroller von einem der Zeitüberschreitungswerte zu einem anderen der Zeitüberschreitungswerte, der sich auf eine relativ kürzere Zeitdauer bezieht, übergeht, wenn eine vorbestimmte Anzahl eine Hebelwirkung ausübende schlechte Entscheidungen gegenüber guten Entscheidungen, Seiten zu schließen, vorhanden ist, aufgrund des einen der Zeitüberschreitungswerte, der sich auf einen Zeitdauer bezieht die zu lang ist.
  4. Vorrichtung nach Anspruch 1, bei der der Speichercontroller von einem der Zeitüberschreitungswerte zu einem anderen der Zeitüberschreitungswerte, der sich auf eine relativ längere Zeitdauer bezieht, übergeht, wenn eine vorbestimmte Anzahl eine Hebelwirkung ausübender schlechter Entscheidungen gegenüber guter Entscheidungen vorhanden ist, aufgrund des einen Zeitüberschreitungswertes, der sich auf eine Zeitdauer bezieht, die zu kurz ist.
  5. Vorrichtung nach Anspruch 1, bei der der Speichercontroller von einem der Zeitüberschreitungswerte zu einem anderen der Zeitüberschreitungswerte, der sich auf eine Zeitdauer bezieht, die näher an einer Mitte der Skala ist, übergeht, wenn eine gute Entscheidung eines Verfehlens einer ungültigen Seite beobachtet wird.
  6. Vorrichtung nach Anspruch 1, bei der der Speichercontroller von einem der Zeitüberschreitungswerte zu einem anderen der Zeitüberschreitungswerte, der sich auf eine Zeitdauer bezieht, die näher an einer Mitte der Skala ist, übergeht, wenn eine gute Entscheidung eines Treffers einer gültigen Seite beobachtet wird.
  7. Vorrichtung nach Anspruch 1, bei der der Speichercontroller von einem der Zeitüberschreitungswerte zu einem anderen der Zeitüberschreitungswerte, der sich auf eine Zeitdauer bezieht, die näher an einer Mitte der Skala ist, übergeht, wenn eine vorbestimmte Anzahl von Zählwerten aufgetreten ist, während derer Verkehr zwischen dem Speicher und dem Speichercontroller nicht geschehen ist.
  8. Vorrichtung nach Anspruch 1, bei der eine Zeitfensterzählung, die verwendet wird, um durch die Skala zu laufen, exponentiell ist.
  9. Vorrichtung nach Anspruch 1, bei der der Speichercontroller durch die Skala basierend auf einer variablen Abtastgröße der vorangegangenen Entscheidungen läuft.
  10. Vorrichtung mit einem Speichercontroller, um eine skalenbasierte Technik zu verwenden, um Übergänge zwischen einer Vielzahl von Zeitüberschreitungswerten vorzunehmen, die auf vorangegangen Entscheidungen basieren, welche getroffen worden sind, um Seiten in dem Speicher zu schließen, wobei wenigstens ein Übergang basierend darauf, ob eine vorbestimmte Anzahl von Zählungen erreicht worden ist, während derer der Speichercontroller keinem Speicherverkehr gegenübergestanden ist, während eine besondere Seite in dem Speicher geschlossen ist, auftritt.
  11. Vorrichtung nach Anspruch 10, bei der die vorangegangenen Entscheidungen gute Entscheidungen, Seiten in dem Speicher zu schließen, umfassen.
  12. Vorrichtung nach Anspruch 1, bei der die guten Entscheidungen Verfehlungen ungültiger Seiten und Treffer gültiger Seiten umfassen.
  13. Vorrichtung nach Anspruch 10, bei der die vorangegangenen Entscheidungen schlechte Entscheidungen, Seiten in dem Speicher zu schließen, umfassen.
  14. Vorrichtung nach Anspruch 13, bei der die schlechten Entscheidungen Treffer ungültiger Seiten und Verfehlen gültiger Seiten umfassen.
  15. System, das aufweist: eine Steuervorrichtung für einen Cursor; Speicher; einen Speichercontroller, der zur Kommunikation mit dem Speicher gekoppelt ist, um eine Speicheranfrage zu bedienen und um eine skalenbasierte Technik zu verwenden, um Übergänge zwischen einer Vielzahl von Zeitüberschreitungswerten, basierend auf vorangegangenen Entscheidungen, die getroffen worden sind, um Seiten in dem Speicher zu schließen, vorzunehmen; und einen Prozessor, der zur Kommunikation mit der Steuervorrichtung für den Cursor und den Speichercontroller gekoppelt ist, wobei der Prozessor die Speicheranfrage als Antwort auf eine Eingabe, die von der Steuervorrichtung für den Cursor empfangen worden ist, zur Verfügung stellt.
  16. System nach Anspruch 15, bei dem die vorangegangenen Entscheidungen einen Treffer für eine ungültige Seite, ein Verfehlen einer ungültigen Seite, einen Treffer für eine ungültige Seite und ein Verfehlen einer gültigen Seite umfassen.
  17. System nach Anspruch 15, bei dem der Speichercontroller umfasst: einen Verfolger des dynamischen Aktualisierens, um eine Skala für den Übergang zwischen Zeitüberschreitungswerten zu verwalten; und einen Arbiter für das dynamische Aktualisieren, um die Rechte an dem Verfolger des dynamischen Aktualisierens zu verhandeln.
  18. Verfahren, das aufweist: Erhalten einer Geschichte von Seitenzugriffen für einen Speicher; Beobachten, mittels eines Speichercontrollers, welcher der Seitenzugriffe zu einem Treffer einer ungültigen Seite, einem Verfehlen einer gültigen Seite, einem Verfehlen einer gültigen Seite oder einem Treffer für eine gültige Seite führt; und Verwalten des Zugriffs auf den Speicher durch den Speichercontroller basierend auf den Beobachtungen.
  19. Verfahren nach Anspruch 18, bei dem das Verwalten mittels eines Durchgangs durch eine Sammlung von Zeitfenstern ausgeführt wird, wobei jede Sammlung einen Zeitüberschreitungswert hat.
  20. Verfahren nach Anspruch 18, bei dem das Verwalten basierend auf guten Entscheidungen, Seiten in dem Speicher zu schließen, wie es durch das Verfehlen von ungültigen Seiten und die Treffer für gültige Seiten angezeigt wird, und schlechten Entscheidungen, Seiten in dem Speicher zu schließen, wie es von dem Treffer für ungültige Seiten und dem Verfehlen gültiger Seiten angegeben wird, ausgeführt wird.
DE112007000645.5T 2006-03-30 2007-03-20 Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber Expired - Fee Related DE112007000645B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/394,461 2006-03-30
US11/394,461 US7587547B2 (en) 2006-03-30 2006-03-30 Dynamic update adaptive idle timer
PCT/US2007/064452 WO2007115004A1 (en) 2006-03-30 2007-03-20 Dynamic update adaptive idle timer

Publications (2)

Publication Number Publication Date
DE112007000645T5 true DE112007000645T5 (de) 2009-02-05
DE112007000645B4 DE112007000645B4 (de) 2016-07-28

Family

ID=38560795

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007000645.5T Expired - Fee Related DE112007000645B4 (de) 2006-03-30 2007-03-20 Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber

Country Status (6)

Country Link
US (1) US7587547B2 (de)
CN (1) CN101071403B (de)
DE (1) DE112007000645B4 (de)
GB (1) GB2450007B (de)
TW (1) TWI350456B (de)
WO (1) WO2007115004A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101525872B1 (ko) * 2008-11-06 2015-06-04 삼성전자주식회사 반도체 메모리 시스템의 동작 방법
US8380916B2 (en) 2009-06-04 2013-02-19 Micron Technology, Inc. Control of page access in memory
US8234422B2 (en) * 2009-09-11 2012-07-31 Avago Technologies Enterprise IP (Singapore) Pte. Ltd Interfaces, circuits, and methods for communicating with a double data rate memory device
US8279697B2 (en) 2009-09-11 2012-10-02 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Circuits and methods for reducing noise in the power supply of circuits coupled to a bidirectional bus
US20120059983A1 (en) * 2010-09-03 2012-03-08 David Wilkins Nellans Predictor-based management of dram row-buffers
US20140181427A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Compound Memory Operations in a Logic Layer of a Stacked Memory
US10191689B2 (en) * 2016-12-29 2019-01-29 Intel Corporation Systems and methods for page management using local page information
CN106875971B (zh) 2017-02-16 2021-01-22 上海兆芯集成电路有限公司 动态随机存取存储器控制器及其控制方法
KR102480017B1 (ko) * 2017-08-11 2022-12-21 삼성전자 주식회사 입출력 장치의 성능 및 전력소모를 조절하는 메모리 컨트롤러, 어플리케이션 프로세서 및 메모리 컨트롤러의 동작방법
US11854102B2 (en) * 2019-05-02 2023-12-26 EMC IP Holding Company LLC Evaluating software license usage using reinforcement learning agents

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3058456A (en) * 1959-08-25 1962-10-16 Jr Lee Ellis Combined arrow and pellet-shooting cane
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5651130A (en) * 1993-03-22 1997-07-22 Compaq Computer Corporation Memory controller that dynamically predicts page misses
US6571323B2 (en) * 1999-03-05 2003-05-27 Via Technologies, Inc. Memory-access management method and system for synchronous dynamic Random-Access memory or the like
US6799241B2 (en) * 2002-01-03 2004-09-28 Intel Corporation Method for dynamically adjusting a memory page closing policy
US6976122B1 (en) * 2002-06-21 2005-12-13 Advanced Micro Devices, Inc. Dynamic idle counter threshold value for use in memory paging policy
US6910114B2 (en) * 2002-11-15 2005-06-21 Intel Corporation Adaptive idle timer for a memory device
US7020762B2 (en) * 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation
US20050060533A1 (en) * 2003-09-17 2005-03-17 Steven Woo Method, device, software and apparatus for adjusting a system parameter value, such as a page closing time
US7076617B2 (en) * 2003-09-30 2006-07-11 Intel Corporation Adaptive page management

Also Published As

Publication number Publication date
US20070233943A1 (en) 2007-10-04
TWI350456B (en) 2011-10-11
US7587547B2 (en) 2009-09-08
DE112007000645B4 (de) 2016-07-28
CN101071403A (zh) 2007-11-14
GB2450007A (en) 2008-12-10
GB0812515D0 (en) 2008-08-13
WO2007115004A1 (en) 2007-10-11
TW200817913A (en) 2008-04-16
GB2450007B (en) 2011-02-16
CN101071403B (zh) 2010-12-08

Similar Documents

Publication Publication Date Title
DE112007000645B4 (de) Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber
DE60115795T2 (de) Adaptiver Wiederholungsmechanismus
DE60215417T2 (de) Netzwerkschaltung
DE68922784T2 (de) Mehrfachbus-Mikrorechnersystem mit Busarbitrierung.
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE60031404T2 (de) Verfahren und vorrichtung zur dynamischen änderung der grössen von pools, die die leistungsaufnahme von speichern steuern
DE19782177B4 (de) Verfahren zur Durchführung von TLB-Shootdown-Operationen in einem Multiprozessorsystem
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE69307717T2 (de) Priorisierung von mikroprozessoren in multiprozessorrechnersystemen
DE102012216035B4 (de) Aktivierung der drosselung auf den durchschnittlichen schreibdurchsatz bei festkörperspeichereinheiten
DE69824688T2 (de) System und Verfahren zur Leistungsoptimierung eines Rechnersystems
DE69031086T2 (de) Cache-Speicherinhaltssteuerung in Mehrprozessornetzwerken
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE3751284T2 (de) Verfahren für die Abschätzung der Leistung eines Datenprozessorsystems.
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE102010054337A1 (de) Mechanismen, um ineffizientes Core-Hopping zu vermeiden und Hardware-unterstützte Auswahl eines Niedrigleitungszustands bereitzustellen
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112008001223T5 (de) Datenverarbeitung mit einem Cache-Zugriffsmodus mit geringer Leistung
DE112012005210T5 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE112006001642T5 (de) Adressfensterunterstützung für Direktspeicherzugriffsumsetzung
DE102012206019A1 (de) Zuweisung von Zählern aus einem Bestand an Zählern, um Zuordnungenlogischer Register zu physischen Registern für die von einer Zuordnungseinheit veranlasste Ausführung von Anweisungen zu kontrollieren
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE102013200032A1 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R019 Grant decision by federal patent court
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee