DE10393803T5 - Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff - Google Patents

Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff Download PDF

Info

Publication number
DE10393803T5
DE10393803T5 DE10393803T DE10393803T DE10393803T5 DE 10393803 T5 DE10393803 T5 DE 10393803T5 DE 10393803 T DE10393803 T DE 10393803T DE 10393803 T DE10393803 T DE 10393803T DE 10393803 T5 DE10393803 T5 DE 10393803T5
Authority
DE
Germany
Prior art keywords
memory
page
bus
latency
memory access
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.)
Withdrawn
Application number
DE10393803T
Other languages
English (en)
Inventor
Eric Portland Sprangle
Anwar Hillsboro Rohillah
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 DE10393803T5 publication Critical patent/DE10393803T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • 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
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • 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

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)

Abstract

Busschnittstelle, umfassend:
eine Buszugriffswarteschlange, die Speicherzugriffsanforderungen serialisiert,
einen Bus-Scheduler, der Speicherzugriffsanforderungen in die Buszugriffswarteschlange einteilt und
einen Page-Hit-Prädiktor, der Page-Hit-Vorhersagedaten an den Bus-Scheduler liefert und eine Matrix aus Zählern i, j umfaßt, wobei i einer Anzahl von Speicherseiten in einer Bank und j einer möglichen Seitenverwaltungsimplementierung entspricht.

Description

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

Claims (26)

  1. Busschnittstelle, umfassend: eine Buszugriffswarteschlange, die Speicherzugriffsanforderungen serialisiert, einen Bus-Scheduler, der Speicherzugriffsanforderungen in die Buszugriffswarteschlange einteilt und einen Page-Hit-Prädiktor, der Page-Hit-Vorhersagedaten an den Bus-Scheduler liefert und eine Matrix aus Zählern i, j umfaßt, wobei i einer Anzahl von Speicherseiten in einer Bank und j einer möglichen Seitenverwaltungsimplementierung entspricht.
  2. Busschnittstelle nach Anspruch 1, umfassend einen Zeitmesser, der eine beobachtete Latenz bestimmt.
  3. Busschnittstelle nach Anspruch 2, umfassend einen Latenzmittelwertszähler, der eine mittlere Latenz bestimmt.
  4. Busschnittstelle nach Anspruch 3, wobei der Page-Hit-Prädiktor bestimmt, ob die beobachtete Latenz abzüglich der mittleren Latenz größer als ein Schwellwert ist.
  5. Busschnittstelle nach Anspruch 4, wobei der Page-Hit-Prädiktor ein Logiksignal auf "wahr" setzt, wenn die mögliche Seitenverwaltungsimplementierung, die j entspricht, und die Anzahl von Speicherseiten, die i entspricht, vorhersagen, daß ein aktueller Speicherzugriff im Vergleich zu einem vorausgegangenen Speicherzugriff auf einer neuen Speicherseite liegt.
  6. Busschnittstelle nach Anspruch 5, wobei der Zähler i, j hochgezählt wird, wenn das Logiksignal wahr ist.
  7. Busschnittstelle nach Anspruch 5, wobei der Zähler i, j heruntergezählt wird, wenn das Logiksignal falsch ist.
  8. Verfahren, umfassend: Einrichten eines Satzes von Zählern, die jeweils Kombinationen aus möglichen Seitenverwaltungsimplementierungen und Anzahlen von Speicherseiten in einem Block entsprechen, Bestimmen, ob eine für einen Speicherzugriff beobachtete Latenz eine mittlere Latenz übersteigt, und, falls dem so ist, Hochzählen eines der Zähler, wenn die entsprechende Kombination aus möglicher Seitenverwaltungsimplementierung und Anzahl von Speicherseiten vorhersagt, daß der Speicherzugriff auf einer anderen Speicherseite als ein vorausgegangener Speicherzugriff liegt.
  9. Verfahren nach Anspruch 8, wobei das Bestimmen umfaßt: Bestimmen, ob die für einen Speicherzugriff beobachtete Latenz abzüglich der mittleren Latenz einen Schwellwert übersteigt.
  10. Verfahren nach Anspruch 8, weiterhin umfassend: falls das Bestimmen zu diesem Ergebnis kommt, Herunterzählen eines der Zähler, wenn die entsprechende Kombination aus möglicher Seitenverwaltungsimplementierung und Anzahl von Speicherseiten vorhersagt, daß der Speicherzugriff nicht auf einer anderen Speicherseite als ein vorausgegangener Speicherzugriff liegt.
  11. Verfahren nach Anspruch 8, weiterhin umfassend das Aktualisieren der mittleren Latenz.
  12. Verfahren nach Anspruch 8, weiterhin umfassend das Bestimmen eines Maximums aus einem Satz von Werten des Satzes von Zählern.
  13. Verfahren nach Anspruch 12, weiterhin umfassend das Bereitstellen einer der Kombinationen aus einer möglichen Seitenverwaltungsimplementierung und einer Anzahl von Speicherseiten, die dem Zähler entspricht, dessen Wert das Maximum ist, an einen Page-Hit-Prädiktor.
  14. Computerlesbares Medium, das Programmanweisungen enthält, die bei Ausführung durch einen Prozessor folgendes ausführen: Einrichten eines Satzes von Zählern, die jeweils Kombinationen aus möglichen Seitenverwaltungsimplementierungen und Anzahlen von Speicherseiten in einem Block entsprechen, Bestimmen, ob eine für einen Speicherzugriff beobachtete Latenz eine mittlere Latenz übersteigt, und, falls dem so ist, Hochzählen eines der Zähler, wenn die entsprechende Kombination aus möglicher Seitenverwaltungsimplementierung und Anzahl von Speicherseiten vorhersagt, daß der Speicherzugriff auf einer anderen Speicherseite als ein vorausgegangener Speicherzugriff liegt.
  15. Computerlesbares Medium nach Anspruch 14, wobei das Bestimmen umfaßt: Bestimmen, ob die für einen Speicherzugriff beobachtete Latenz abzüglich der mittleren Latenz einen Schwellwert übersteigt.
  16. Computerlesbares Medium nach Anspruch 14, weiterhin umfassend: falls das Bestimmen zu diesem Ergebnis kommt, Herunterzählen eines der Zähler, wenn die entsprechende Kombination aus möglicher Seitenverwaltungsimplementierung und Anzahl von Speicherseiten vorhersagt, daß der Speicherzugriff nicht auf einer anderen Speicherseite als ein vorausgegangener Speicherzugriff liegt.
  17. Computerlesbares Medium nach Anspruch 14, weiterhin umfassend das Aktualisieren der mittleren Latenz.
  18. Computerlesbares Medium nach Anspruch 14, weiterhin umfassend das Bestimmen eines Maximums aus einem Satz von Werten des Satzes von Zählern.
  19. Computerlesbares Medium nach Anspruch 18, weiterhin umfassend das Bereitstellen einer der Kombinationen aus einer möglichen Seitenverwaltungsimplementierung und einer Anzahl von Speicherseiten, die dem Zähler entspricht, dessen Wert das Maximum ist, an einen Page-Hit-Prädiktor.
  20. System, umfassend: einen Prozessor, der aufweist: eine Buszugriffswarteschlange, die Speicherzugriffsanforderungen serialisiert, einen Bus-Scheduler, der Speicherzugriffsanforderungen in die Buszugriffswarteschlange einteilt, und einen Page-Hit-Prädiktor, der Page-Hit-Vorhersagedaten an den Bus-Scheduler liefert und eine Matrix aus Zählern i, j umfaßt, wobei i einer Anzahl von Speicherseiten in einer Bank und j einer möglichen Seitenverwaltungsimplementierung entspricht, einen Systembus, der an den Prozessor gekoppelt ist, einen Speichercontroller, der an den Systembus gekoppelt ist und die Speicherzugriffsanforderungen empfängt, und ein Audio-Eingabe/Ausgabe-Gerät, das an den Systembus gekoppelt ist.
  21. System nach Anspruch 20, wobei der Prozessor einen Zeitmesser umfaßt, der eine beobachtete Latenz bestimmt.
  22. System nach Anspruch 21, wobei der Prozessor einen Latenzmittelwertszähler umfaßt, der eine mittlere Latenz bestimmt.
  23. System nach Anspruch 22, wobei der Page-Hit-Prädiktor bestimmt, ob die beobachtete Latenz abzüglich der mittleren Latenz größer als ein Schwellwert ist.
  24. System nach Anspruch 23, wobei der Page-Hit-Prädiktor ein Logiksignal auf "wahr" setzt, wenn die mögliche Seitenverwaltungsimplementierung, die j entspricht, und die Anzahl von Speicherseiten, die i entspricht, vorhersagen, daß ein aktueller Speicherzugriff im Vergleich zu einem vorausgegangenen Speicherzugriff auf einer neuen Speicherseite liegt.
  25. System nach Anspruch 24, wobei der Zähler i, j hochgezählt wird, wenn das Logiksignal wahr ist.
  26. System nach Anspruch 25, wobei der Zähler i, j heruntergezählt wird, wenn das Logiksignal falsch ist.
DE10393803T 2002-12-24 2003-12-04 Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff Withdrawn DE10393803T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/328,576 2002-12-24
US10/328,576 US7020762B2 (en) 2002-12-24 2002-12-24 Method and apparatus for determining a dynamic random access memory page management implementation
PCT/US2003/038727 WO2004061685A2 (en) 2002-12-24 2003-12-04 Method and apparatus for determining a dynamic random access memory page management implementation

Publications (1)

Publication Number Publication Date
DE10393803T5 true DE10393803T5 (de) 2005-10-20

Family

ID=32594518

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393803T Withdrawn DE10393803T5 (de) 2002-12-24 2003-12-04 Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff

Country Status (7)

Country Link
US (2) US7020762B2 (de)
JP (1) JP4203022B2 (de)
CN (1) CN100416529C (de)
AU (1) AU2003298950A1 (de)
DE (1) DE10393803T5 (de)
TW (1) TWI236591B (de)
WO (1) WO2004061685A2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020762B2 (en) * 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation
JP4250989B2 (ja) * 2003-03-26 2009-04-08 日本電気株式会社 メモリアクセス制御装置
US7404047B2 (en) * 2003-05-27 2008-07-22 Intel Corporation Method and apparatus to improve multi-CPU system performance for accesses to memory
US8028143B2 (en) * 2004-08-27 2011-09-27 Qualcomm Incorporated Method and apparatus for transmitting memory pre-fetch commands on a bus
US8443162B2 (en) 2005-01-21 2013-05-14 Qualcomm Incorporated Methods and apparatus for dynamically managing banked memory
US7587547B2 (en) * 2006-03-30 2009-09-08 Intel Corporation Dynamic update adaptive idle timer
US20090132769A1 (en) * 2007-11-19 2009-05-21 Microsoft Corporation Statistical counting for memory hierarchy optimization
CN101453361B (zh) * 2007-12-07 2012-03-14 中国科学院声学研究所 一种网站请求队列管理方法
EP2455865B1 (de) 2009-07-17 2020-03-04 Toshiba Memory Corporation Speicherverwaltungsvorrichtung
US8260991B2 (en) * 2009-09-15 2012-09-04 Arm Limited Data processing apparatus and method for measuring a value of a predetermined property of transactions
US8935489B2 (en) * 2010-01-19 2015-01-13 Rambus Inc. Adaptively time-multiplexing memory references from multiple processor cores
US9720859B1 (en) 2010-04-30 2017-08-01 Mentor Graphics Corporation System, method, and computer program product for conditionally eliminating a memory read request
US9418011B2 (en) * 2010-06-23 2016-08-16 Intel Corporation Region based technique for accurately predicting memory accesses
US9183041B2 (en) * 2012-09-21 2015-11-10 International Business Machines Corporation Input/output traffic backpressure prediction
US9336164B2 (en) * 2012-10-04 2016-05-10 Applied Micro Circuits Corporation Scheduling memory banks based on memory access patterns
GB2517195A (en) * 2013-08-15 2015-02-18 Ibm Computer system productivity monitoring
US10387046B2 (en) * 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
TWI595412B (zh) * 2016-09-09 2017-08-11 大心電子(英屬維京群島)股份有限公司 資料傳輸方法、記憶體儲存裝置及記憶體控制電路單元
US20180150125A1 (en) * 2016-11-28 2018-05-31 Qualcomm Incorporated Wifi memory power minimization
US11029879B2 (en) * 2018-01-29 2021-06-08 Samsung Electronics Co., Ltd Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel
US10846363B2 (en) 2018-11-19 2020-11-24 Microsoft Technology Licensing, Llc Compression-encoding scheduled inputs for matrix computations
US11493985B2 (en) * 2019-03-15 2022-11-08 Microsoft Technology Licensing, Llc Selectively controlling memory power for scheduled computations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US586106A (en) * 1897-07-13 Flour-sifter
US5651130A (en) * 1993-03-22 1997-07-22 Compaq Computer Corporation Memory controller that dynamically predicts page misses
US5787267A (en) * 1995-06-07 1998-07-28 Monolithic System Technology, Inc. Caching method and circuit for a memory system with circuit module architecture
US5860106A (en) 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
US6088772A (en) * 1997-06-13 2000-07-11 Intel Corporation Method and apparatus for improving system performance when reordering commands
US6035377A (en) * 1997-12-17 2000-03-07 Ncr Corporation Method and apparatus for determining memory pages having greatest frequency of access in a non-uniform memory access computer system
US6199145B1 (en) * 1998-02-27 2001-03-06 Intel Corporation Configurable page closing method and apparatus for multi-port host bridges
US6539440B1 (en) * 1998-11-16 2003-03-25 Infineon Ag Methods and apparatus for prediction of the time between two consecutive memory accesses
US6212598B1 (en) * 1998-11-30 2001-04-03 Micron Technology, Inc. Controlling a paging policy based on a requestor characteristic
US6684304B2 (en) * 1999-01-29 2004-01-27 Micron Technology, Inc. Method to access memory based on a programmable page limit
WO2001075620A1 (en) * 2000-04-03 2001-10-11 Advanced Micro Devices, Inc. Bus bridge including a memory controller having an improved memory request arbitration mechanism
TW544575B (en) * 2000-08-15 2003-08-01 Silicon Integrated Sys Corp Page organizer within memory controller
US6799257B2 (en) 2002-02-21 2004-09-28 Intel Corporation Method and apparatus to control memory accesses
US7020762B2 (en) 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation

Also Published As

Publication number Publication date
US7020762B2 (en) 2006-03-28
AU2003298950A1 (en) 2004-07-29
AU2003298950A8 (en) 2004-07-29
CN100416529C (zh) 2008-09-03
JP2006511886A (ja) 2006-04-06
US20040123067A1 (en) 2004-06-24
US7536530B2 (en) 2009-05-19
CN1729462A (zh) 2006-02-01
US20060112255A1 (en) 2006-05-25
JP4203022B2 (ja) 2008-12-24
TWI236591B (en) 2005-07-21
WO2004061685A2 (en) 2004-07-22
TW200416535A (en) 2004-09-01
WO2004061685A3 (en) 2004-11-04

Similar Documents

Publication Publication Date Title
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE69427421T2 (de) Speichersteuereinheit mit hohem Grade der Gleichzeitigkeit und Arbeitsteilung
DE60115795T2 (de) Adaptiver Wiederholungsmechanismus
DE69906156T2 (de) Mikroprozessorvorrichtung mit programmierbaren wartezuständen
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE69124905T2 (de) Datenverarbeitungsvorrichtung zur dynamischen Zeiteinstellung in einem dynamischen Speichersystem
DE3687947T2 (de) Schnittstelle und Verfahren für Buszugriff in einem Rechner.
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE19983026B4 (de) Brücke zwischen zwei Bussen mit einem Puffer mit einer einstellbaren Mindestspeicherraummenge für ein Akzeptieren einer Schreibanforderung und Verfahren hierzu
DE69031658T2 (de) Vorrichtung und verfahren für instandhaltung von cache/zentralspeicherkonsistenz
DE19681745B4 (de) Verfahren zum Übergeben der Kontrolle des Zugriffs auf einen Hauptspeicher von einer Speichersteuereinrichtung auf eine weitere Steuereinrichtung und ein solches Verfahren ausführendes Computersystem
DE60009355T2 (de) Busbrücke mit einer speichersteuerung mit verbessertem speicheranforderungsarbitrierungsmechanismus
DE602005002691T2 (de) Verfahren zur Programmierung einer System auf Chip DMA Steuerung, sowie ein System auf Chip dafür.
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE112007000645B4 (de) Dynamisch aktualisierbarer, adaptiver Leerlauf-Zeitgeber
CH619309A5 (de)
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
DE69617404T2 (de) Durchführung von spekulativen systemspeicherauslesen
DE112004000694B4 (de) Ein Verfahren und eine Vorrichtung zur Verbesserung der Multi-CPU-Systemleistung für Speicherzugriffe
DE60132961T2 (de) Unabhängige Initialisierung von Arbitern und Agenten, um verzögerte Agent-Initialisierung zu ermöglichen
DE102018119881A1 (de) Verwaltung einer DRAM-Bankaktivierung
DE10113191B4 (de) Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung
DE3911721C2 (de)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10393803

Country of ref document: DE

Date of ref document: 20051020

Kind code of ref document: P

R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee