DE10085373B4 - Verfahren zum Flushen von Cache-Zeilen - Google Patents

Verfahren zum Flushen von Cache-Zeilen Download PDF

Info

Publication number
DE10085373B4
DE10085373B4 DE10085373T DE10085373T DE10085373B4 DE 10085373 B4 DE10085373 B4 DE 10085373B4 DE 10085373 T DE10085373 T DE 10085373T DE 10085373 T DE10085373 T DE 10085373T DE 10085373 B4 DE10085373 B4 DE 10085373B4
Authority
DE
Germany
Prior art keywords
cache
write
clflush
memory
micro
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.)
Expired - Lifetime
Application number
DE10085373T
Other languages
English (en)
Other versions
DE10085373T1 (de
Inventor
Salvador Folsom Palanca
Stephen Gold River Fischer
Subramaniam Gold River Maiyuran
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 DE10085373T1 publication Critical patent/DE10085373T1/de
Application granted granted Critical
Publication of DE10085373B4 publication Critical patent/DE10085373B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating

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

Verfahren zum Flushen von Cache-Zeilen in einer hierarchischen Cache-Einrichtung, der ein Schreib-Kombinier-Puffer (132) zugeordnet ist, dadurch gekennzeichnet, daß die Löschbefehle mit zugehörigen Speicheradressen des zu flushenden Cache-Speichers (124, 126; 146) in dem Schreib-Kombinier-Puffer (132) in einer Warteschlange gespeichert und abgearbeitet werden.

Description

  • Die Erfindung betrifft ein Verfahren gemäß dem Oberbegriff des Patentspruchs 1.
  • Ein Cache-Speicher ist ein kleiner, schneller Speicher, der dazu dient, die am häufigsten angesprochenen Daten (oder "Wörter") von einem größeren, langsameren Speicher zu enthalten.
  • Dynamische Speicher mit wahlfreiem Zugriff (DRAM) haben große Mengen von Speicherkapazität bei verhältnismäßig geringen Kosten. Unglücklicherweise ist die Zugriffszeit für dynamische Random-Speicher langsam im Verhältnis zu der Verarbeitungsgeschwindigkeit von modernen Mikroprozessoren. Eine kostengünstige Lösung oder Schaffung eines Cache-Speichers besteht darin, einen statischen Random-Speicher (SRAM) als Cache-Speicher vorzusehen oder den Cache-Speicher auf dem Prozessor unterzubringen. Obwohl die Speicherkapazität des Cache-Speichers verhältnismäßig klein sein kann, gestattet sie einen Hochgeschwindigkeitszugriff zu den darin gespeicherten Daten.
  • Das Funktionsprinzip der Cache-Speicher ist Folgendes: Wenn zum ersten Mal eine Instruktion oder ein Datenort angesprochen wird, muß von dem langsameren Speicher aus zugegriffen werden. Die Instruktion oder die Daten werden dann im Cache-Speicher gespeichert. Ein nachfolgender Zugriff auf die gleiche Instruktion oder die Daten erfolgt dann über den schnelleren Cache-Speicher, wodurch die Zugriffszeit minimiert und die Gesamtwirkung des Systems verbessert wird. Da die Speicherkapazität des Cache-Speichers begrenzt und typischerweise viel kleiner als. die Speicherkapazität des Systemspeichers ist, ist der Cache-Speicher häufig voll und ein Teil seines Inhalts muß verändert werden, wenn auf neue Befehle oder Daten zugegriffen wird.
  • Der Cache-Speicher wird auf verschiedene Weise betrieben, so daß er die Befehle oder Daten speichert, die zu einer bestimmten Zeit wahrscheinlich benötigt werden. Wenn auf den Cache-Speicher zugegriffen wird und er die angeforderten Daten enthält, tritt ein Cache-"Hit" auf. Wenn andererseits der Cache-Speicher die angefragten Daten nicht enthält, dann wird dies "Miss" genannt. Daher werden die Inhalte des Cache-Speichers typischerweise so verwaltet, daß das Verhältnis von Hit zu Miss maximiert wird.
  • Das Löschen einer bestimmten Speicheradresse in einem Cache-Speicher erfolgt nach einem Ersetzungs-Algorithmus.
  • Ein Cache-Speicher kann in seiner Gesamtheit periodisch gelöscht werden, oder wenn bestimmte vorgegebene Zustände auftreten. Ferner können die einzelnen Cache-Zeilen als Teil eines Ersetzungs-Algorithmus gelöscht werden. In Systemen, die einen Cache-Speicher enthalten, ist die Cache-Zeile der vollständige Datenteil, der zwischen dem Cache-Speicher und dem Hauptspeicher ausgetauscht wird. In jedem Fall werden als unsauber ("dirty") gekennzeichnete Daten in den Hauptspeicher zurück geschrieben. Daten werden als "dirty" bezeichnet, wenn sie noch nicht in den Hauptspeicher eingeschrieben sind. Cache-Zeilen, die mit dirty-Bit gekennzeichnet sind, werden dann gelöscht. Der gelöschte Cache-Speicher oder die gelöschte Cache-Zeile können dann neue Daten speichern.
  • Wenn eine Cache-Säuberung vorgesehen ist oder wenn vorgegebene Bedingungen für eine Cache-Säuberung erfüllt sind, wird der Cache-Speicher geleert. Das heißt, alle Zeilen, die "dirty" Daten im Cache-Speicher enthalten, werden in den Hauptspeicher geschrieben.
  • Für die Intel-Familie der P6 Mikroprozessoren (z.B. Pentium II, Celeron) existiert eine Gruppe von Mikrooperationen, die benutzt werden, um die Cache-Zeilen für bestimmte Cache-Levels zu leeren.
  • Systeme, die eine hohe Datenrate erfordern, löschen die Daten. kontinuierlich, während sie "dirty" werden. Dies gilt insbesondere für Systeme, die einen hohe Datenfluss zwischen dem Prozessor und dem Systemspeicher haben, wie dies bei graphischen Pixelmanipulationen der anspruchsvollsten Art für 3-D- und Video-Anwendungen der Fall ist. Die Probleme bei derzeitigen Systemen liegen in der hohen Bandbreite zwischen dem Cache-Speicher und dem Systemspeicher die benötigt wird, um die Kopien vom Schreib-Kombinier-Puffer und vom Speicher-Puffer aufzunehmen.
  • Es muß daher einem Prozessor erlaubt sein, die Cache-Zeile zu säubern, die zu einer linearen Speicheradresse von allen Cache-Speichern in der Kohärenzdomäne gehört.
  • Aus der US 5,530,075 A ist bereits ein Schreib-Kombinier-Puffer (Write-Combining-Buffer) in Verbindung mit einem Mikroprozessor bekann, der nicht nur ein reines WRITE-COMBINE, sondern auch ein WRITE-BACK durchführt. Allerdings werden dabei keine Mikrooperationen abgespeichert.
  • Aufgabe der Erfindung ist es, ein Verfahren anzugeben, mit dem ein effizientes Cache-Flushen durchgeführt werden kann.
  • Zur Lösung dieser Aufgabe dient das Verfahren nach Patentanspruch 1.
  • Der Schreib-Kombinier-Puffer (auch Write-Combining-Buffer genannt) wird gemäß der Erfindung dazu verwendet, einen Löschbefehl und eine Speicheradresse zunächst zu speichern und anschließend den Löschbefehl zusammen mit der Speicheradresse an einen Bus-Controller zu übertragen, der dann die Speicheradresse löscht. Mit anderen Worten verwendet die Erfindung den Write-Combining Buffer des Write-Combining Memory in einer neuen Weise.
  • Die hier beanspruchte Erfindung wird in Einzelheiten unter Bezugnahme auf die Zeichnungen beschrieben, in welchen gleiche Teile mit gleichen Bezugszeichen versehen sind und wobei:
  • 1 eine Mikroprozessorarchitektur verdeutlicht; und
  • 2 Flussbilder einer Ausführungsform des Cache-Zeilen-Säuberungsprozesses sind.
  • Per Definition ist eine Cache-Zeile entweder vollständig valid oder vollständig invalid; eine Cache-Zeile kann niemals teilweise valid sein. Zum Beispiel, wenn der Prozessor nur wünscht, ein Byte zu lesen, müssen alle Bytes einer zugehörigen Cache-Zeile in dem Cache-Speicher gespeichert werden; anderenfalls tritt ein Cache-Miss auf. Ein Cache-Verzeichnis wird für die Cache-Verwaltung verwendet. Cache-Zeilen enthalten üblicherweise mehr Daten als in einem einzigen Bus-Zyklus übertragen werden können. Aus diesem Grund setzen die meisten Cache-Controller einen Burst-Modus ein, wodurch vorgegebene Adressenfolgen es möglich machen, Daten schneller durch einen Bus zu übertragen. Dies wird für das Füllen von Cache-Zeilen oder für das Rückschreiben von Cache-Zeilen benutzt, da diese Cache-Zeilen einen zusammenhängenden und ausgerichteten Adressenbereich darstellen.
  • Eine Technik für das Säubern der Cache-Zeile kann einer linearen Speicheradresse zugeordnet werden. Nach der Durchführung löscht das System die Cache-Zeile, die zu dem Operanden von allen Cache-Speichern in der Kohärenzdomäne gehört. In einer Multi-Prozessorumgebung wird die angesprochene Cache-Zeile von allen Cache-Levels der Hierarchie in allen Mikroprozessoren des Systems (d.h. der Kohärenzdomäne) gesäubert, und zwar in Abhängigkeit vom Prozessorzustand. Das MESI-Protokoll (Modified, Exklusive, Shared, Invalid) teilt jeder Cache-Zeile einen von vier Zuständen zu, die von zwei MESI-Bits verwaltet werden. Die vier Zustände identifizieren außerdem die vier möglichen Zustände einer Cache-Zeile. Wenn sich herausstellt, daß der Prozessor im "Exklusive"- oder "Shared"-Zustand ist, dann gehört das Säubern zu der Cache-Zeile, die invalid gemacht wird. Ein weiteres Beispiel trifft zu, wenn gefunden wird, daß sich der Cache im "Modified"-Zustand befindet. Wenn ein Cache-Controller ein Zurückschreiben durchführt und, bei einem Cache-Hit, lediglich Daten von dem Prozessor in seinen Cache-Speicher speichert, dann muß der Cache-Zeileninhalt zum Hauptspeicher übertragen werden und die Cache-Zeile wird invalid gemacht.
  • Im Vergleich zu anderen Speicher-Makrobefehlen, ist die Cache-Zeilen-Säuberung (CLFLUSH) nicht streng geordnet, und zwar unabhängig vom Speichertyp, zu dem die Cache-Zeilensäuberungs-Makrobefehle gehören. Im Gegensatz dazu ist das Verhalten des Speicher-Subsystems des Prozessors schwach geordnet. Andere Makrobefehle können verwendet werden, um das Beladen, Speichern, oder Wiederherstellen der sequentiellen Ablauffolge unmittelbar vor und gleich nach CLFLUSH für den Speicherzugriff stark zu ordnen und zu garantieren.
  • Eine Mikrooperation, die sich "clflush_micro_op" nennt, wird verwendet, um den CLFLUSH-Makrobefehl durchzuführen.
  • In 1 ist ein Beispiel für einen Mikroprozessorspeicher und ein Bus-Subsystem mit den Funktionen Lesen und Schreiben dargestellt. In 1 sind zwei Cache-Levels in dem Mikroprozessor angenommen: Ein (L1) Cache-Speicher auf dem Chip, welches der Cache-Level am nächsten zum Prozessor ist, und ein Cache-Speicher eines zweiten Levels (L2), welches der Cache-Level ist, der am weitesten vom Prozessor entfernt liegt.
  • Eine Befehlsholeinheit 102 nimmt Makrobefehle für eine Befehlsdekodereinheit 104 auf. Die Dekodereinheit 104 dekodiert die Makrobefehle in eine Folge von Mikrobefehlen, die an eine Wartestation 106 und an einen Aufzeichnungs-Zwischenspeicher und Registerdatei 108 weitergeleitet wird. Wenn eine Instruktion in das Speicher-Subsystem eintritt, wird es im Lade-Zwischenspeicher 112 oder Speicherungs-Zwischenspeicher 114 zunächst gehalten, und zwar in Abhängigkeit davon, ob es eine Lese- oder Schreibe-Speichermikroinstruktion ist. In der Einheit des Speicher-Subsystem, in dem sich solche Zwischenspeicher befinden, laufen diese Befehle durch Speicherauswahlsüberprüfungen, die durch die Speicherauswahleinheit 110 vorgenommen werden. Wenn keine Speicherabhängigkeiten existieren, wird die Instruktion an die nächste Einheit in dem Speicher-Subsystem weitergeleitet, nachdem sie einer physikalischen Adressenveränderung unterzogen wurde. Im Falle eines Miss wird die Instruktion in eine Gruppe von Puffern oder Zwischenspeichern übertragen, von wo aus sie an das Subsystem 140 des Mikroprozessors geleitet wird. Im Falle eines cachebaren Lese-Miss, wird die Instruktion an Lesespeicher 122 geleitet, oder im Falle von Speicherungsfehlern für die Cache-Speicher werden die Befehle an Schreib-Zwischenspeicher 130 gesandt. Die Schreib-Zwischenspeicher können entweder schwach geordnete Schreib-Kombinierpuffer 132 oder Nicht-Schreib-Kombinierpuffer 134 sein. In der Bus-Controllereinheit 140 wird die Lese- oder Schreibmikrooperation in eine Out-of-Order Warteschlange 144 gestellt. Wenn die Mikrooperation cachebar ist, wird der L2 Cache 146 auf einen Hit/Miss überprüft. Im Falle eines Miss wird die Instruktion durch eine In-Order Warteschlange 142 zum Vorderseitenbus 150 geleitet, um die gewünschten Daten von einem Hauptspeicher zu holen oder zu aktualisieren.
  • Der Weg des "clflush_micro_op" der Mikrooperation durch das Prozessorspeicher-Subsystem ist ebenfalls in 2 beschrieben. Zu Beginn ruft die Befehlsholeinheit 102 eine Cache-Zeilen-Säuberungsinstruktion auf, Block 202. Im Block 204 wird der Cache-Zeilen-Säuberungsbefehl dekodiert zu dem "clflush_micro_op" Mikrovorgang durch die Befehlsdekodereinheit. Die Mikrooperation wird dann zu einer Wartestation 106, einem Aufzeichnungspuffer und Registerfile 208 geleitet, Block 206. Die "clflush_micro_op" Mikrooperation wird dann zu dem Speicher-Subsystem an einen Ladungseingang gelegt, Block 208. Ihm wird eine Eingabe im Ladepuffer 112 in der Speicher-Ordereinheit 110 zugeordnet.
  • Das Verhalten der "clflush_micro_op" in der Speicher-Anforderungseinheit 110 ist spekulativ. Einfach gesagt bedeutet dies, daß die "clflush_micro_op" außer Funktion in Bezug auf andere CLFLUSH-Makrobefehle, Lesen und Speichern durchführen kann. Sofern nicht MFENCE-Befehle verwendet werden, (unmittelbar vor und nach den CLFLUSH Makrobefehlen), ist die Durchführung von "clflush_micro_op" in Bezug auf andere Speicher-Beladungen und Speicherungen nicht garantiert in Ordnung, vorausgesetzt, daß es keine Adressenabhängigkeiten gibt. Das Verhalten von CLFLUSH durch das Speicher-Subsystem ist schwach geordnet. Die folgenden Tabellen führen die Orderbedingungen für CLFLUSH auf. Tabelle 1 listet die Verwaltungsbedingungen, die von späteren Speicher-Zugriffsbefehlen beeinflusst werden, im Vergleich zu einem früheren CLFLUSH auf. Tabelle 2 listet das Gegenteil von Tabelle 1, indem die Verwaltungsbeschränkungseinflüsse von früheren Speicher-Zugriffsbefehlen in Bezug auf spätere CLFLUSH-Instruktionen angezeigt werden. Die aufgeführten Speicher-Zugriffstypen sind nicht cachebarer Speicher (UC), Rückschreibespeicher (WB), und nicht-cachebarer spekulativer Schreibkombinationsspeicherzugriff (USWC).
    Figure 00080001
    Tabelle 1: Anordnung von Befehlen im Speicher in Bezug auf einen älteren CLFLUSH
    • Hinweis: N = nicht zugelassen, J = zugelassen
  • Figure 00080002
    Tabelle 2: Anordnung von Befehlen im Speicher in Bezug auf einen früheren CLFLUSH
  • Von der Speicher-Verwaltungseinheit 110 wird die "clflush_micro_op" Mikrooperation an die L1 Cache-Controllereinheit 120, Block 210 gelegt. Die "clflush_micro_op" Mikrooperation wird an den Ladeeingang gelegt; sie wird jedoch in einem Schreib-Kombinierpuffer 132 gepipelined. Von der L1 Cache-Controllereinheit weiter wird der "clflush_micro_op" vom der Ladepuffer zum Speicherpuffer geschaltet.
  • Der Entscheidungsblock 212 stellt fest, ob keine Schreib-Kombinierpuffer 132 verfügbar sind. Wenn keine verfügbar sind, geht der Fluss zurück zum Block 210. Im anderen Fall geht es weiter zum Block 214. Unabhängig vom Speichertyp und ob der L1 Cache einen Hit oder Miss ausgibt, ist ein Schreib-Kombinierpuffer 132 vorgesehen, um einen einlaufenden "clflush_micro_op" zu bedienen, Block 214. Ein Steuerfeld wird jedem Schreib-Kombinierpuffer 132 in der L1 Controllereinheit zugeordnet, um festzustellen, welche Self-snoops an den Bus-Controller 140 gesendet werden müssen. Dieses Kontrollbit, das "clflush_miss" genannt wird, wird exklusiv für ein "clflush_micro_op" gesetzt, wenn der L1 Cache-Speicher einen Miss ausgibt.
  • Beim Eintreten in das Speicher-Subsystem des Mikroprozessors werden mehrere Bits der Adresse, die den Cache-Zeilenzugriff von einem "clflush_micro_op" freigeben, auf Null gesetzt, Block 216. In der Pentium pro Familie von Mikroprozessoren wären dies die unteren 5 Bits der Adresse (Adresse[4:0]). Dies wird sowohl in dem L1 Cache, als auch in der L2 Cache-Controllereinheit 120 nach Durchführung des Säuberungsbefehls getan. Das Auf-Null-Setzen hilft bei der Bestimmung, ob ein Cache-Zeilen-Hit oder -Miss vorliegt. Da lediglich eine Kennzeichnungsübereinstimmung festlegt, ob ein Hit oder ein Miss vorliegt, wird kein Byte-Freigabe-Vergleich benötigt. Es wird darauf hingewiesen, daß gemäß Definition kein teilweiser Hit möglich ist. Das Auf-Null-Setzen der Adressenbits [4:0] liefert ferner einen alternativen Mechanismus zu dem, der in der Speicher-Verwaltungseinheit 110 für die Maskierung von Leitungsteilzugriffen verwendet wird.
  • Ein weiteres Kontrollbit, das jedem Schreib-Kombinierpuffer 132 in der L1 Cache-Controllereinheit 120 hinzugefügt wird, wird verwendet, um zwischen einem Schreib-Kombinierpuffer 132, der für ein "clflush_micro-_op" dient, und einem anderen, der für eine Schreib-Kombinierspeicherung vorgesehen ist, zu unterscheiden, Block 218. Dieses Kontrollbit, das "clflush_op" genannt wird, wird exklusiv für jene Schreib-Kombinierpuffer gesetzt, die ein "clflush_micro-_op" ausführen. Es wird verwendet, um die Anforderung und Säuberungsattribute auszuwählen, die von dem L1 Cache-Controller 120 zum Bus-Controller 140 geschickt werden.
  • Im Falle eines L1 Cache-Hits, wie er durch den Entscheidungsblock 222 bezeichnet ist, werden sowohl "säubere L1" und "säubere L2" Attribute an den Bus-Controller 140 gesendet, bei einer Ausgabe aus der L1 Cache-Controllereinheit 120, Blöcke 224 und 228. Der Bus-Controller 140 enthält den L2 Cache 146 und externe Bus-Steuereinheiten.
  • Andererseits wird im Falle eines L1 Cache-Miss, wie er durch den Entscheidungsblock 222 definiert wird, das "clflush_miss" Kontrollbit gesetzt und lediglich das "säubere L2" Attribut wird zu den Blöcken 228 und 232 geleitet. Dies hilft, die Wirkungsweise zu verbessern, indem das interne Selfsnooping beim L1 Cache-Speicher weggelassen wird.
  • Bei ihrer Ausgabe aus der Speicher-Verwaltungseinheit 110 wird die "clflush_micro_op" Mikrooperation von der L1 Cache-Controllereinheit 120 geblockt, wenn keine Schreib-Kombinierpuffer 132 verfügbar wären, Block 212. In solchem Falle gibt es einen Schreib-Kombinierpuffer 132 frei, wie dies durch den Schreib-Kombinierzeiger mit zirkularer Zuordnung angedeutet wird. Dies garantiert, daß keine Blockade Zustände aufgrund des Fehlens von freien Schreib-Kombinierpuffern 132 auftreten. Wenn sie blockiert sind, wird "clflush_micro_op" wieder angelegt, sobald der Blockierzustand entfernt ist. Ein Beispiel, das das Absetzen der "clflush_micro_op" Instruktion hervorrufen würde, ist die abgeschlossene Freigabe eines zuvor angesprochenen Schreib-Kombinierpuffers 132.
  • Die "clflush_micro_op" Mikrooperation wird durch das Speicher-Subsystem beendet, wenn es in einen Schreib-Kombinierpuffer 132 im L1 Cache-Controller 120 untergebracht ist. Dies gestattet ein Pipelining: Nachfolgende Befehle können durchgeführt werden vor dem Abschluss der "clflush_micro_op" Mikrooperation. Das Pipelining verbessert die Gesamtwirksamkeit des Systems.
  • Es gibt zwei. Verfahren, um einen Schreib-Kombinierpuffer freizugeben, der einen "clflush_micro_op" Mikrovorgang bedient.
  • Ein Schreib-Kombinierpuffer 132, der ein "clflush_micro_op" bedient, wird von den gleichen laufenden Freigabebedingungen freigegeben, die gerade an die Schreib-Kombinierpuffer 132 in der Familie der Intel P6 Mikroprozessoren gelegt wird. Ferner geben auch MFENCE Makrobefehle einen Schreib-Kombinierpuffer frei, der einen "clflush_micro_op" Mikrovorgang durchführt.
  • Ferner geben einige Ausführungsformen einen "clflush_micro_op" Exklusiv aus. Dies wird getan, um zu verhindern, daß ein Schreib-Kombinierpuffer, der einen "clflush_micro_op" über einen langen Zeitraum durchführt, wenn der Programmierer die Verwaltung nicht unterstützen will und wenn eine Abschirmungsinstruktion nicht verwendet wird, hängen bleibt. Ein Steuerungsbit, das "clflush_evict" genannt wird, wird jedem Schreib-Kombinierpuffer 132 zugeordnet, der ein "clflush_micro_op" bedient. Dieses Kontrollbit wird gesetzt, wenn ein Schreib-Kombinierpuffer 132 einem "clflush_micro_op" zugeordnet wird. Sobald das "clflush_evict" Bit gesetzt ist, ist der entsprechende Schreib-Kombinierpuffer zum Zurückschreiben markiert und das Steuerungsbit wird zurückgesetzt, Block 230. Dieser Austreibungszustand gilt exklusiv für Schreib-Kombinierpuffer 132, die eine "clflush_micro_op" Mikrooperation bedienen. Es wird die Ausführung von Programmen, die CLFLUSH verwenden, verbessert, indem nicht erlaubt wird, daß "clflush_micro_op" Mikrooperationen die Schreib-Kombinierpuffer 132 Möglichkeiten für längere Zeiträume belegen und sie daher für andere Schreib-Kombinieroperationen freigeben.
  • Figure 00120001
    Tabelle 3: Speicher zu Bus-Transaktionen für CLFLUSH
  • Es wird darauf hingewiesen, daß dann, wenn "clflush_miss" = "clflush_op" = '0' ist, der Anforderungstyp eine der existierenden Transaktionen in der P6 Familie von Mikroprozessoren ist (jedoch nicht CLFLUSH), und die Säuberungsattribute werden dementsprechend gesetzt/gelöscht.
  • Die Tabelle 4 weiter unten zeigt die Bedingungen, unter den die drei Kontrollbits für die Schreib-Kombinierpuffer 132 gesetzt und rückgesetzt werden. Das "clflush_evict" Kontrollbit kann nur nach dem "clflush_micro_op" Kontrollbit gesetzt werden. Das "clflush_micro_op" wird aufgrund spekulativer Zuordnungen der Schreib-Kombinierpuffer 132 gesetzt, während "clflush_evict" ausschließlich aufgrund einer realen Zuordnung eines Schreib-Kombinierpuffers 132 für ein "clflush_op" gesetzt wird. Das "clflush_miss" Kontrollbit wird ebenso bei spekulativen Schreib-Kombinierpuffer 132 Zuordnungen gesetzt, wenn das "clflush_micro_op" den L1 Cache-Speicher misses. Sowohl die "clflush_miss" als auch die "clflush_op" Kontrollbits werden gelöscht bei einer spekulativen Zuordnung von Schreib-Kombinierpuffern 132, um irgendeinen Befehl außer ein "clflush_micro_op" zu bedienen. Funktional ist dies ähnlich wie das Löschen solcher Steuerbits bei der Aufhebung der Zuordnung eines Schreib-Kombinierpuffers, der ein "clflush_micro_op" bedient. In einer Prozessorverwirklichung werden die gleichen Schreibspeicher 130 für Mikrooperationen des Schreib-Kombinierens und Nicht-Schreibkombinierens geteilt. Die "clflush_miss" und "clflush_micro_op" Bits werden gelöscht bei einer spekulativen Zuordnung von irgendeinem Schreibspeicher 130. Dieses Verhalten stellt sicher, daß die drei Kontrollbits niemals für einen Schreibspeicher 130 gesetzt werden können, der nicht ein "clflush_micro_op" bedient. In einer Prozessorausführung, bei der alle L1 Cache-Controllerpuffer für sowohl Lesen als auch Schreiben verwendet werden, wie dies bei der Familie der P6 Mikroprozessoren ist, müssen nur die "clflush_miss" und "clflush_op" Kontrollbits bei der Zuordnung eines Puffers zur Bedienung eines Speichervorgangs gelöscht werden, Block 234. Zwischenspeicher, die dazu dienen, Lesedaten zu bedienen, ignorieren die Werte dieser drei neuen Kontrollbits.
  • Figure 00130001
    Tabelle 4: Bedingungen zum Setzen/Löschen des neuen Kontrollbits von einem Schreib-Kombinierpuffer im L1 Cache-Controller
  • Es wird darauf hingewiesen, daß alle drei neuen WC Pufferkontrollbits auch bei einer "Reset" Sequenz gelöscht werden.
  • Ausführungsformen können verwirklicht werden, die den Bus-Controller 140 verwenden. Wenn ein Schreib-Kombinierpuffer 132, der ein "clflush_micro_op" bedient, für das Auslagern markiert ist, wird es zu dem Bus-Controller 140 geliefert, Block 236. Die gesendete Anforderung ist dieselbe wie für eine Schreib-Kombiniertransaktion für eine Gesamtzeilen-cachebare Schreib-Kombiniertransaktion, bis auf die Selfsnoopingattribute. Snooping wird verwendet, um die Anwesenheit einer spezifischen Speicheradresse in dem zugehörigen Cache-Speicher zu bestätigen. Für eine "clflush_micro_op" Auslagerung schnüffelt die Bus-Steuerung 140 die L1 und L2 Caches basierend auf den "säubere L1" und "säubere L2" Anforderungsattribute, Block 250. Ferner gibt der Bus-Controller 140 ein "Bus-Lesen-Ungültigmachen-Leitung" auf dem externen Bus aus, Block 236. Wenn die L1 Cache-Controllereinheit 120 einen L1 Cache-Miss feststellt, wird beispielsweise keine "säubere L1" Botschaft gesendet. Die "Bus-Lesen-Ungültigmachen"-Transaktion säubert auf der gleichen Zeile in jedem anderen Cache-Speicher in der Kohärenzdomäne. Auf die externe Bus-Transaktion werden alle Byte-Freigaben freigegeben, was die Datenphase gegenüber dem Kern markiert. Entscheidungsblöcke 238 und 152 bestimmen, ob ein Hit oder eine modifizierte Cache-Zeile (HITM) in einem anderen Cache-Speicher innerhalb der Kohärenzdomäne auftrat (d.h. nicht die L1 oder L2 Caches in dem abfragenden Mikroprozessor). Wenn HITM auftritt, dann schreibt der angesprochene Cache in den Hauptspeicher zurück und Daten werden zu dem abfragenden Mikroprozessor in Blöcken 244 und 254 zurückgeführt. Der Schreib-Kombinierpuffer 132 in der L1 Cache-Controllereinheit 120 bleibt bis zum Abschluss der Schnüffelphase und möglicherweise bis zur Rückübertragung von Daten von einem anderen Cache-Speicher in der Kohärenzdomäne zugeordnet, beispielsweise ein HITM auf einem externen Bus. Daten, die als Folge der Schnüffelphase oder eines Abfragezyklus zurück zu dem Schreib- Kombinierpuffer 132 kommen, werden ignoriert, Blöcke 246 und 248.
  • Alle Säuberungen sind dann abgeschlossen und die Schreib-Kombinierpuffer 132 sind im Block 260 wieder nicht-zugeordnet.
  • Die nachfolgende Tabelle 5 zeigt wie der externe Bus-Controller 140 alle Schreib-Kombinierauslagerungen behandelt. Die Anforderung von dem L1 Cache an den Bus-Controller 140 für eine "clflush_micro_op"-Auslagerung, wie beispielsweise der CLFLUSH Makrobefehl, kann auf das gleiche Anforderungssignal wie das für ein Auslagern einer Vollzeilen-cachebaren Schreib-Kombinierung gelesen werden; die Selfsnoopingattribute unter-scheiden sich jedoch. Tabelle 5: Externe Bus-Controllertransaktionen für Schreib-Kombinieraustreibungen
    Figure 00160001
    • Hinweis: USWC Speicherungen sind nicht aliased in der P6 Familie von Mikroprozessoren und werden daher nicht self-snooped.
  • Zur Prüfbarkeit und zu Fehlerbehebungszwecken kann ein für den Benutzer nicht sichtbares Modusbit zu dem CLFLUSH Freigabe/Sperren Makrobefehl hinzugefügt werden. Im gesperrten Zustand behandelt die L1 Cache-Controllereinheit 120 die eingehende "clflush_micro_op" Mikrooperation als einen No-Operation-Opcode ("NOP") und ordnet niemals einen Schreib-Kombinierpuffer 132 zu. Das NOP-Verhalten kann an uncachebaren Daten-Vorzugriffen implementiert werden.

Claims (4)

  1. Verfahren zum Flushen von Cache-Zeilen in einer hierarchischen Cache-Einrichtung, der ein Schreib-Kombinier-Puffer (132) zugeordnet ist, dadurch gekennzeichnet, daß die Löschbefehle mit zugehörigen Speicheradressen des zu flushenden Cache-Speichers (124, 126; 146) in dem Schreib-Kombinier-Puffer (132) in einer Warteschlange gespeichert und abgearbeitet werden.
  2. Verfahren nach Anspruch 1, wobei ein erstes Steuerbit für einen Bus-Controller (140) angibt, ob der Schreib-Kombinier-Puffer (132) dem Löschbefehl mit der Speicheradresse zugeordnet wurde.
  3. Verfahren nach Anspruch 2, wobei ein zweites Steuerbit für den Bus-Controller (140) angibt, ob die Speicheradresse in einem am nächsten liegenden Cache-Speicher (124, 126) in der Kohärenzdomäne gespeichert ist.
  4. Verfahren nach Anspruch 3, wobei ein drittes Steuerbit für den Bus-Controller (140) anzeigt, dass der Löschbefehl mit der Speicheradresse aus dem Schreib-Kombinier-Puffer (132) entfernt werden soll.
DE10085373T 1999-12-30 2000-12-28 Verfahren zum Flushen von Cache-Zeilen Expired - Lifetime DE10085373B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/475,759 US6546462B1 (en) 1999-12-30 1999-12-30 CLFLUSH micro-architectural implementation method and system
US09/475,759 1999-12-30
PCT/US2000/035481 WO2001050274A1 (en) 1999-12-30 2000-12-28 Cache line flush micro-architectural implementation method and system

Publications (2)

Publication Number Publication Date
DE10085373T1 DE10085373T1 (de) 2003-04-24
DE10085373B4 true DE10085373B4 (de) 2007-11-22

Family

ID=23889009

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10085373T Expired - Lifetime DE10085373B4 (de) 1999-12-30 2000-12-28 Verfahren zum Flushen von Cache-Zeilen

Country Status (9)

Country Link
US (1) US6546462B1 (de)
CN (2) CN100416515C (de)
AU (1) AU5789201A (de)
DE (1) DE10085373B4 (de)
GB (1) GB2374962B (de)
HK (2) HK1049217A1 (de)
TW (1) TW508575B (de)
WO (1) WO2001050274A1 (de)
ZA (1) ZA200205198B (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
DE10243446B4 (de) * 2002-09-19 2005-12-15 Celanese Chemicals Europe Gmbh Verfahren zur Herstellung von Aldehyden
US6976128B1 (en) * 2002-09-26 2005-12-13 Unisys Corporation Cache flush system and method
US6973541B1 (en) * 2002-09-26 2005-12-06 Unisys Corporation System and method for initializing memory within a data processing system
US7107405B2 (en) * 2003-05-30 2006-09-12 Intel Corporation Writing cached data to system management memory
US7143246B2 (en) * 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus
US7321954B2 (en) * 2004-08-11 2008-01-22 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
JP4819369B2 (ja) * 2005-02-15 2011-11-24 株式会社日立製作所 ストレージシステム
JP2007193866A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 情報記録装置及びその制御方法
US7882325B2 (en) * 2007-12-21 2011-02-01 Intel Corporation Method and apparatus for a double width load using a single width load port
US8127085B2 (en) * 2008-12-02 2012-02-28 Intel Corporation Method and apparatus for pipeline inclusion and instruction restarts in a micro-op cache of a processor
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US8352685B2 (en) 2010-08-20 2013-01-08 Apple Inc. Combining write buffer with dynamically adjustable flush metrics
US8543766B2 (en) * 2011-06-10 2013-09-24 Freescale Semiconductor, Inc. Writing data to system memory in a data processing system in which cache line states are tracked
US9990287B2 (en) * 2011-12-21 2018-06-05 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction
US10387331B2 (en) * 2012-06-05 2019-08-20 Vmware, Inc. Process for maintaining data write ordering through a cache
US9754648B2 (en) 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
US9563565B2 (en) 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US10216640B2 (en) 2014-03-21 2019-02-26 Samsung Electronics Co., Ltd. Opportunistic cache injection of data into lower latency levels of the cache hierarchy
CN104932989B (zh) * 2014-03-21 2020-05-19 三星电子株式会社 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入
US20150317158A1 (en) * 2014-04-03 2015-11-05 Applied Micro Circuits Corporation Implementation of load acquire/store release instructions using load/store operation with dmb operation
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
JP6489840B2 (ja) * 2015-01-20 2019-03-27 エイブリック株式会社 ホール素子
US9971686B2 (en) * 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
US20190042479A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Heuristic and machine-learning based methods to prevent fine-grained cache side-channel attacks
US10691594B2 (en) * 2018-06-29 2020-06-23 Intel Corporation Selective execution of cache line flush operations
US10802830B2 (en) * 2019-03-05 2020-10-13 International Business Machines Corporation Imprecise register dependency tracking
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524233A (en) * 1993-03-31 1996-06-04 Intel Corporation Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US5630075A (en) * 1993-12-30 1997-05-13 Intel Corporation Write combining buffer for sequentially addressed partial line operations originating from a single instruction
US5963978A (en) * 1996-10-07 1999-10-05 International Business Machines Corporation High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4426682A (en) * 1981-05-22 1984-01-17 Harris Corporation Fast cache flush mechanism
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4713755A (en) * 1985-06-28 1987-12-15 Hewlett-Packard Company Cache memory consistency control with explicit software instructions
CH672816A5 (de) * 1986-10-03 1989-12-29 Pantex Stahl Ag
DE3740834A1 (de) * 1987-01-22 1988-08-04 Nat Semiconductor Corp Aufrechterhaltung der kohaerenz zwischen einem mikroprozessorenintegrierten cache-speicher und einem externen speicher
US5214770A (en) * 1988-04-01 1993-05-25 Digital Equipment Corporation System for flushing instruction-cache only when instruction-cache address and data-cache address are matched and the execution of a return-from-exception-or-interrupt command
US5408636A (en) * 1991-06-24 1995-04-18 Compaq Computer Corp. System for flushing first and second caches upon detection of a write operation to write protected areas
US5551006A (en) * 1993-09-30 1996-08-27 Intel Corporation Low cost writethrough cache coherency apparatus and method for computer systems without a cache supporting bus
US5606687A (en) * 1993-10-07 1997-02-25 Sun Microsystems, Inc. Method and apparatus for optimizing supervisor mode store operations in a data cache
US6000017A (en) * 1995-01-20 1999-12-07 Intel Corporation Hybrid tag architecture for a cache memory
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
US5860105A (en) * 1995-11-13 1999-01-12 National Semiconductor Corporation NDIRTY cache line lookahead
US6021473A (en) * 1996-08-27 2000-02-01 Vlsi Technology, Inc. Method and apparatus for maintaining coherency for data transaction of CPU and bus device utilizing selective flushing mechanism
US5926830A (en) * 1996-10-07 1999-07-20 International Business Machines Corporation Data processing system and method for maintaining coherency between high and low level caches using inclusive states
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US5895488A (en) * 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US6260117B1 (en) * 1997-09-18 2001-07-10 International Business Machines Corporation Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US6205521B1 (en) * 1997-11-03 2001-03-20 Compaq Computer Corporation Inclusion map for accelerated cache flush
US6145062A (en) * 1998-01-26 2000-11-07 Intel Corporation Selective conflict write flush

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524233A (en) * 1993-03-31 1996-06-04 Intel Corporation Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US5630075A (en) * 1993-12-30 1997-05-13 Intel Corporation Write combining buffer for sequentially addressed partial line operations originating from a single instruction
US5963978A (en) * 1996-10-07 1999-10-05 International Business Machines Corporation High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators

Also Published As

Publication number Publication date
CN101446923A (zh) 2009-06-03
HK1066991A1 (en) 2005-03-18
CN100416515C (zh) 2008-09-03
GB2374962A (en) 2002-10-30
DE10085373T1 (de) 2003-04-24
HK1049217A1 (en) 2003-05-02
US6546462B1 (en) 2003-04-08
WO2001050274A1 (en) 2001-07-12
AU5789201A (en) 2001-07-16
GB0217123D0 (en) 2002-09-04
TW508575B (en) 2002-11-01
CN1425154A (zh) 2003-06-18
CN101446923B (zh) 2015-06-24
GB2374962B (en) 2004-12-15
ZA200205198B (en) 2004-02-03

Similar Documents

Publication Publication Date Title
DE10085373B4 (de) Verfahren zum Flushen von Cache-Zeilen
DE69327981T2 (de) Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
DE69721961T2 (de) Mikroprozessor mit einem Nachschreibcachespeicher
DE69900797T2 (de) Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen
DE69616223T2 (de) Datenstromvorausladepufferspeicher mit Datenstromfilters
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE69128741T2 (de) Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE4218003C2 (de) Cache-Steuereinrichtung für ein sekundäres Cache-Speichersystem
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69708188T2 (de) Speichersteuerungseinheit
DE69427421T2 (de) Speichersteuereinheit mit hohem Grade der Gleichzeitigkeit und Arbeitsteilung
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE69231197T2 (de) Verfahren und Vorrichtung für eine verbesserte Speicherarchitektur
DE68902193T2 (de) Datenspeicheranordnung.
DE112005002180T5 (de) Lösen von Cachekonflikten
DE112006003453T5 (de) Per-Satz-Relaxation der Cache-Inklusion
DE69219433T2 (de) Virtueller Durchschreibcachespeicher Synonym-Adressierung und Cache-Ungültigkeitserklärungen
DE102013206336A1 (de) Cache-Steuerung zur Reduktion von Transaktions-Rollback
DE69900611T2 (de) Cache-Speicherkohärenzprotokoll mit einem Schwebezustand (H) mit einem genauen und einem ungenauen Modus

Legal Events

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

Ref document number: 10085373

Country of ref document: DE

Date of ref document: 20030424

Kind code of ref document: P

8364 No opposition during term of opposition
R071 Expiry of right