DE69229667T2 - Simulierte cachespeicher-assoziativität - Google Patents

Simulierte cachespeicher-assoziativität

Info

Publication number
DE69229667T2
DE69229667T2 DE69229667T DE69229667T DE69229667T2 DE 69229667 T2 DE69229667 T2 DE 69229667T2 DE 69229667 T DE69229667 T DE 69229667T DE 69229667 T DE69229667 T DE 69229667T DE 69229667 T2 DE69229667 T2 DE 69229667T2
Authority
DE
Germany
Prior art keywords
cache
main memory
pages
data
cache misses
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 - Fee Related
Application number
DE69229667T
Other languages
English (en)
Other versions
DE69229667D1 (de
Inventor
Richard Sites
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment 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 Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of DE69229667D1 publication Critical patent/DE69229667D1/de
Publication of DE69229667T2 publication Critical patent/DE69229667T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring

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)

Description

    Hintergrund der Erfindung
  • Diese Erfindung bezieht sich auf das Betreiben eines Computers und insbesondere auf ein Verfahren zur Simulation der Leistung eines teilassoziativen Cache, indem in einem Computer, der einen virtuellen Speicher benutzt, ein Direct-Mapped-Cache verwendet wird.
  • Mit steigender Geschwindigkeit der Prozessoren wird die Verwendung von schnellen Cache-Speichern in Computersystemen immer wichtiger. Zum Beispiel kann ein schneller RISC-Prozessor des Typs, der in der kanadischen Vorveröffentlichung 2.045.833-0 offenbart ist, so aufgebaut sein, daß er bei einer CPU-Zykluszeit von 5 ns arbeitet und während jedes Zyklus einen Befehl ausführt (aufgrund des realisierten Konzepts des Computers mit vermindertem Befehlssatz (RISC)). Wenn der Hauptspeicher eine Zykluszeit von 300 ns hat, kann errechnet werden, daß die CPU 95% ihrer Zeit damit verbringt, auf den Speicher zu warten, wenn Cache-Trefferraten benutzt werden, die gegenwärtig typisch sind. Um die Leistungsfähigkeit des Speichers an die der CPU anzupassen, wird der Cache- Speicher hierarchisch aufgebaut, indem Caches mit ersten, zweiten und in einigen Fällen dritten Ebenen vorgesehen werden, wobei die Geschwindigkeit der Cache-Speicher selbstverständlich nur erhöht wird, soweit dies wirtschaftlich ist. Dennoch muß die Trefferrate des Cache erhöht werden, um eine annehmbare Leistung für diese schnellen CPUs zu erzielen.
  • Cache-Speicher sind entweder in einer Direct-Mapped- Architektur oder N-Wege-assoziativ aufgebaut. Ein Direct- Mapped-Cache ermöglicht, daß ein gegebenes Datenelement an nur einer Stelle im Cache gespeichert wird, weswegen die Trefferrate geringer ist, der Vorteil eines Direct- Mapped-Cache besteht jedoch darin, daß die Schaltung einfach und sehr schnell ist. Ein N-Wege-Assoziativ-Cache gestattet, daß ein gegebenes Datenelement an irgendeiner von N unterschiedlichen Stellen im Cache gespeichert wird, und dies erzeugt eine höhere Trefferrate als bei einem Direct-Mapped-Cache der gleichen Größe. Die höhere Trefferrate eines N-Wege-Assoziativ-Cache ist ein Ergebnis der erhöhten Flexibilität bei der Plazierung von Informationen im Cache.
  • Aus IBM TDB Bd. 32, N.8A, Jan 90, S. 334-337 "Pages allocation control", ist ein Verfahren bekannt, um das Cache-Trefferverhältnis eines Computersystems durch die Steuerung der physikalischen Seitenzuweisung zu verbessern, indem eine Aktivitätsüberwachungsschaltung benutzt wird. Die Cache-Aktivitätsüberwachungsschaltung ist ein an die Cache-Managementhardware angefügter Teil der Hardwareschaltung. Sie besteht aus Ereigniszählern, die die jeweilige Anzahl der Zugriffe und der Zeilen- Ersetzungen für jede Seite innerhalb des Cache zählen. Ein Aktivitätsüberwachungsprogramm liest periodisch in der Überwachungshardware und berechnet die Anzahl der Cache-Zugriffe und das Ersetzungsverhältnis (Anzahl der Ersetzungen/Anzahl der Zugriffe) für jede Seite auf der Grundlage der Anzahl, die von der Hardware erhalten wird. Sie speichert die jeweilige Gesamtanzahl der Zugriffe und die Ersetzungsverhältnisse aller Cache-Seiten über den unmittelbar vergangenen Zeitabschnitt, so daß sich das Seitenzuweisungsunterprogramm auf diese beziehen kann.
  • Aus IBM TDB Bd. 25, Nr. 11b, April 83, S. 5978-5980, Rechtschaffen, "Cache history table", ist eine analoge Technik zur Reduzierung des Mehraufwands bekannt, der mit einem Cache-Nichttreffer verbunden ist.
  • Es wäre wünschenswert, einen Direct-Mapped-Cache wegen der Geschwindigkeit und des einfachen Aufbaus dieses Cache-Typs in einem Hochleistungs-Computersystem verwenden zu können, um noch höhere Cache-Trefferraten als jene zu erzielen, die N-Wege-Assoziativ-Caches inhärent sind.
  • Zusammenfassung der Erfindung
  • Die Erfindung ist in ihrer Gesamtheit in den Ansprüchen 1 und 7 definiert. Weitere Ausführungen sind in den Unteransprüchen definiert.
  • Gemäß einer Ausführung der Erfindung wird ein Computersystem, das einen Direct-Mapped-Cache aufweist, in einer Weise betrieben, um die Wirkung eines teilassoziativen Cache zu simulieren. Dieses Verfahren ist bei einer CPU nützlich, die ein Betriebssystem mit virtuellem Speichertyp ausführt, bei dem Daten seitenweise behandelt werden und über physikalische Adressen auf den Cache zugegriffen wird. Das Verfahren beinhaltet das Erfassen von Cache- Nichttreffern und darauffolgend die Neuabbildung der Seiten, die die Adressen der erfaßten Cache-Nichttreffer enthalten, im Hauptspeicher, so daß Speicherbezüge, die Zeitverschwendung verursachen, dann auch im Cache vorhanden sein können. Zwei Speicheradressen, die in unterschiedlichen physikalischen Seitenrahmen liegen, die aber auf den gleichen Platz im Cache abbilden, können sich nicht zur gleichen Zeit im Direct-Mapped-Cache befinden; abwechselnde Bezugnahmen auf diese zwei Adressen durch eine Aufgabe, die in der CPU ausgeführt wird, würde Zeitverschwendung verursachen. Wenn jedoch der Platz einer dieser Adressen im Hauptspeicher geändert wird, können die Datenelemente, die diese Adressen aufweisen, auch im Cache vorhanden sein, und die Leistungsfähigkeit wird beträchtlich verbessert sein, da sich keine Zeitver schwendung mehr ergibt. Für eine CPU, die ein Betriebssystem mit virtuellem Speicher ausführt, kann eine Seite mit Daten oder Befehlen zu einem anderen physikalischen Seitenrahmen bewegt werden, jedoch weiterhin die gleiche virtuelle Adresse haben. Dies wird durch einfache Aktualisierung der seitenabbildenden Tabellen realisiert, um den neuen physikalischen Platz der Seite wiederzugeben, und durch das Kopieren der Daten vom alten zum neuen Seitenrahmen. Der Zustand der Zeitverschwendung wird erkannt und durch die Zwischenspeicherung der Cache- Nichttrefferadressen und die periodische Abfrage des Zwischenspeichers und daraufhin durch die Neuabbildung von Seiten, die die bei der Abfrage gefundenen Adressen enthalten, dynamisch korrigiert. Der Direct-Mapped-Cache muß groß genug sein, um zwei oder mehr Seiten zu halten. Für einen Cache, der wesentlich mehr als vier Seiten hält, kann die simulierte Technik der Erfindung eine höhere Assoziativität erzielen als es typischerweise bei hardwaremäßiger Realisierung wirtschaftlich ist.
  • Kurzbeschreibung der Zeichnungen
  • Ein genaueres Verständnis der Erfindung kann aus der folgenden genauen Beschreibung spezieller beispielhafter Ausführungen gewonnen werden, wenn diese in Verbindung mit der beigefügten Zeichnung gelesen wird, worin:
  • Fig. 1 ein elektrischer Blockschaltplan eines Computersystems ist, das die Merkmale einer Ausführung der Erfindung verwenden kann;
  • Fig. 2 ein Diagramm der Speicherabbildung für ein virtuelles Speicherschema ist, das im System von Fig. 1 verwendet werden kann;
  • Fig. 3 ein Schaltplan eines Cache-Speichers ist, der im System von Fig. 1 unter Verwendung der Erfindung benutzt wird;
  • Fig. 4 ein Diagramm eines Teils der Hauptspeicherabbildung ist, wenn die Seitennummerauslagerungsoperation gemäß einer Ausführung der Erfindung ausgeführt wird;
  • die Fig. 5a und 5b Diagramme von Cache-Nichttreffern sind, die in einer Darstellung der Cache-Adresse gegenüber der Zeit gezeigt werden, für ein System, das die Erfindung verwendet, und für ein weiteres System, das die Erfindung nicht verwendet.
  • Genaue Beschreibung spezieller Ausführungen
  • In Fig. 1 ist ein Computersystem dargestellt, das das Cache-Assoziativitätsverfahren der Erfindung verwenden kann. Eine CPU 10 ist über einen Cache-Controller 12 und einen CPU-Bus 13 an einen Systembus 11 gekoppelt. Ein Hauptspeicher 14 ist mit dem Systembus 11 verbunden, der auf den Hauptspeicher zugreift, und ein Cache-Speicher 15 ist mit dem Cache-Controller 12 verbunden, deswegen wird durch den CPU-Bus 13 direkt auf den Cache-Speicher zugegriffen. Die CPU 10 enthält ein virtuelles Speichermanagementsystem, etwa jenes, das durch die Betriebssysteme UNIXTM oder VAX/VMSTM bereitgestellt wird, wobei Seiten von Daten zwischen dem physikalischen Speicher, der durch den Hauptspeicher 14 dargestellt wird, und einem Nebenspeicher in Form eines Plattenspeichers 16 ausgelagert werden. Die VAX-Architektur wird durch Levy und Eckhouse in "Computer Programming and Architecture: The VAX", 2. Ausgabe, Digital Press, 1989 beschrieben, das hier durch Literaturhinweis eingefügt ist. Die CPU 10 kann vom Typ VAXTM sein, wie im Text von Levy u. a. oder im US- Patent 5.006.980 offenbart, das an Sander, Uhler & Brown erteilt wurde und auf Digital Equipment Corporation, den Anmelder dieser Erfindung, lautet, oder kann vorzugsweise ein verbesserter 64-Bit-RISC-Typ sein, wie in der kanadischen Patentvorveröffentlichung 2.045833-0 offenbart, die ebenfalls auf Digital Equipment Corporation lautet.
  • Die CPU 10 erzeugt Speicherbezüge, indem zunächst eine virtuelle Adresse gebildet wird, die, wie in Fig. 2 ersichtlich, die Adresse innerhalb des gesamten Adressbereichs 17 darstellt, der durch die Architekturspezifikationen des Computers oder jenem Teil von ihm, der durch das Betriebssystem ermächtigt ist, definiert wird, und indem nachfolgend die virtuelle Adresse in eine physikalische Adresse in einer Adressenabbildung 18 übersetzt wird, die durch die Größe des Hauptspeichers 14 beschränkt ist. Die Übersetzung erfolgt seitenweise, deswegen wird eine virtuelle Seitenadresse für eine Seite 19 in der virtuellen Speicherabbildung 17 in eine physikalische Adresse 19' für eine Seite in der physikalischen Speicherabbildung 18 übersetzt. Im Speicher wird eine Seitentabelle geführt, um die Übersetzung zwischen virtueller Adresse und physikalischer Adresse zu gewährleisten, und gewöhnlich ist ein Übersetzungspuffer 20, der in Fig. 1 ersichtlich ist, in der CPU 10 enthalten, um die zuallerletzt verwendeten Übersetzungen zu halten, damit kein Bezug zu einer Tabelle im Speicher 14 hergestellt werden muß, um die Übersetzung zu erhalten, bevor der Datenbezug hergestellt werden kann. Nur diejenigen Seiten, die durch Aufgaben benutzt werden, die momentan ausgeführt werden, (und das Betriebssystem selbst) sind wahrscheinlich zu einem gegebenen Zeitpunkt im physikalischen Speicher 14; in der Seitentabelle ist eine Übersetzung in eine Adresse 19' nur für diejenigen Seiten vorhanden, die tatsächlich vorhanden sind. Wenn festgestellt wird, daß sich die Seite, auf die durch die CPU 10 Bezug genommen wird, nicht im physikalischen Speicher 14 befindet, wird ein Seitenfehler ausgeführt, um eine Auslagerungsoperation auszulösen, bei der eine Seite vom physikalischen Speicher 14 mit der gewünschten Seite, die im Plattenspeicher 16 aufrechterhalten wird, ausgelagert wird, wobei diese Auslagerung unter der Steuerung des Betriebssystems verläuft.
  • Die CPU 10 von Fig. 1 kann ebenfalls einen internen Cache-Speicher enthalten, der, wie in der obenerwähnten kanadischen Vorveröffentlichung beschrieben, einen Befehls-Cache oder I-Cache 21 und einen Daten-Cache oder D- Cache 22 enthält, diese sind jedoch bei der Funktion des Direct-Mapped-Cache 15 nach dieser Ausführung der Erfindung nicht von Bedeutung. Der Speicher, der durch das Computersystem von Fig. 1 verwendet wird, ist folglich hierarchisch, wobei die internen Caches 21 und 22 die schnellsten sind, der nächstschnellste ist der Cache 15, dann folgt der Hauptspeicher 14 und schließlich der Auslagerungsraum im Plattenspeicher 16. Der Geschwindigkeitsunterschied zwischen dem schnellsten und langsamsten beträgt viele Größenordnungen. Auf die internen Caches und den Cache 15 wird innerhalb weniger CPU-Zyklen zugegriffen, während auf den Hauptspeicher 14 in vielleicht zehn bis einhundert und mehr CPU-Zyklen zugegriffen wird und eine Seitenauslagerung auf den Plattenspeicher 16 viele hunderte oder tausende CPU-Zyklen erfordert. Die Leistungsfähigkeit des Systems ist deswegen in hohem Maße von der Verwaltung der momentan benutzten Befehle und Daten in den Caches abhängig. Eine Untermenge der Daten im physikalischen Speicher 14 (abgebildet auf 18 von Fig. 2) befindet sich zu einem gegebenen Zeitpunkt im Cache 15, und eine Untermenge der Daten im Cache 15 befindet sich in den internen Caches 21 und 22.
  • Der Cache-Speicher 15 ist ein Direct-Mapped-Cache und ist in einer Weise aufgebaut, die in Fig. 3 ersichtlich ist. Die Daten werden in einer Matrix von Speicherchips gespeichert, die als eine Matrix 23 der Zeilen 24 dargestellt werden kann, wobei jede Zeile eine Anzahl von Blöcken 25 aufweist. Jeder Block 25 enthält zum Beispiel 64 Bytes Daten oder acht Vierfachdatenworte. Eine physikalische Adresse 26 auf dem CPU-Bus 13, die benutzt wird, um auf den Cache 15 (oder Hauptspeicher 14) zuzugreifen, enthält ein niederwertiges Feld 27, das das Byte (oder Wort) innerhalb eines Blocks 25 auswählt, ein Feld 28, das den Block 25 innerhalb einer Zeile 24 auswählt, ein Feld 29, das die Zeile auswählt, und ein Kennzeichenfeld 30. Das Feld 28 wird zur Auswahl des Blocks innerhalb der Zeile an einen Decodierer 31 angelegt, und das Feld 29 wird an einen Decodierer 32 angelegt, um die Zeile zur Ausgabe an den Decodierer 31 auszuwählen. Die niederwertigen Bits der Adresse im Feld 27 werden an einen Decodierer 33 angelegt, um das Byte oder Wort innerhalb eines Blocks zur Schaltung auf den Datenbus im CPU-Bus 13 auszuwählen. Im Cache-Controller 12 hält ein Kennzeichenspeicher 34 eine Anzahl von Kennzeichen, die der Anzahl der Blöcke 25 entspricht, und die Felder 28 und 29 von der Adresse 26 auf dem Adressbus des CPU-Busses 13 werden durch die Zeilen- und Spaltendecodierer 35 verwendet, um eines der Kennzeichen zum Anlegen an die Kennzeichenvergleichsschaltung 36 auszuwählen. Der andere Eingang in die Kennzeichenvergleichsschaltung 36 ist das Kennzeichenfeld 30 von der Adresse 26. Wenn das gespeicherte Kennzeichen, das durch die Decodierer 35 ausgewählt wurde, und das Kennzeichenfeld 30 übereinstimmen, wird durch den Ausgang 37 ein Kennzeichentreffer signalisiert, und die Daten am Ausgang 38 der Datenmatrix 23 werden verwendet, andernfalls wird ein Nichttreffer signalisiert und der Datenausgang wird gelöscht. Wenn ein Nichttreffer auftritt, muß ein Bezug zum Speicher 14 hergestellt werden und deswegen wird die Adresse über den Cache- Controller 12 zum Systembus 11 geleitet.
  • Der Cache 15 von Fig. 3 ist direkt abgebildet (ein Direct-Mapped-Cache), weil ein erstes Datenelement, das einen gegebenen Wert der Adressbits in den Feldern 28 und 29 aufweist, an einem und nur einem Platz (Block 25) in der Cache-Matrix 23 gespeichert werden muß. Wenn ein Speicherbezug zu einem zweiten Speicherplatz hergestellt wird, der den gleichen Wert der Adressbits in den Feldern 28 und 29 aufweist, wird dies auf den gleichen Platz abbilden, den das erste Datenelement bezeichnet, und deswegen muß das erste Datenelement durch das zweite überschrieben werden. Wenn zum Beispiel die Aufgabe, die in der CPU 10 ausgeführt wird, einen Bezug auf den gleichen Index in zwei unterschiedlichen Seiten herstellt, die in den Feldern 28 und 29 die gleichen Adressbits aufweisen, wird der Block, der diesen Index von den zwei Seiten enthält, im Cache wiederholt überschrieben, was einen Zustand der Zeitverschwendung erzeugt. Im Unterschied dazu gestattet ein teilassoziativer Cache, daß ein gegebener Adresswert auf mehr als einen Platz in einer Cache-Matrix abgebildet wird, deswegen können zwei Adressen von unterschiedlichen Seiten, die eine entsprechende Menge gleicher Bits aufweisen, zum gleichen Zeitpunkt im Cache vorhanden sein. Die Hardware zur Realisierung eines Direct-Mapped-Cache, die aus Fig. 3 ersichtlich ist, ist jedoch im Vergleich mit einem teilassoziativen Cache im Betrieb schneller, denn es wird nur eine Kennzeichenvergleichsoperation benötigt, die in der Vergleichsschaltung 36 ausgeführt wird. In einem teilassoziativen Cache muß die Kennzeichenadresse mit einer Anzahl möglicher Übereinstimmungen verglichen werden und anschließend müssen außerdem die entsprechenden Daten ausgewählt werden (nachdem der Kennzeichenvergleich beendet ist); dieser zusätzliche Schritt macht den Betrieb notwendigerweise langsamer.
  • Als Beispiel wird angenommen, daß die Seitengröße im virtuellen Speichersystem, das im Computersystem von Fig. 1 läuft, 1 KByte beträgt, deswegen wiederholen sich die niederwertigen Byte-Adressen (binär) nach einem 10-Bit Adresswert. Es wird ebenfalls angenommen, daß die Konfiguration des Cache 15 2 KByte beträgt, so daß der Cache Teile mit einem Gesamtumfang von 2 KByte der physikalischen Speicherabbildung 18 von Fig. 2 abbildet, die zu jedem gegebenen Zeitpunkt aus vielen Blöcken von unterschiedlichen Seiten, jedoch im Gesamtumfang aus 2 Seiten bestehen. Ein Datenelement mit einer physikalischen Adresse, die in der binären Adresse an einer Begrenzung mit den Bits < 10 : 0> Null beginnt, wird immer zum ersten Block im Cache 15 abbilden. Somit werden die physikalischen Adressen 0000, 2048, 4096, etc. auf die gleiche Stelle im Cache abbilden, d. h. die Felder 28 und 29 enthalten zum Beispiel die Bits < 10 : 4> der Adresse 26, die völlig gleich sind. Eine Aufgabe, die abwechselnd auf die physikalischen Plätze 0000 und 2048 zugreift, wird deswegen immer einen Cache-Nichttreffer im Direct-Mapped- Cache 15 von Fig. 3 erzeugen. Im Unterschied dazu können in einem Zwei-Wege Assoziativ-Cache (oder in einem mit höherer Assoziativität) die zwei Datenelemente im Cache zum gleichen Zeitpunkt aufrechterhalten werden, deswegen werden durch wiederholte abwechselnde Zugriffe auf diese zwei physikalischen Adressen Cache-Treffer erzeugt. Wenn zwei oder mehr Plätze wiederholt Nichttreffer erzeugen und sich gegenseitig aus einem Cache schieben, wird dies "Zeitverschwendung" genannt.
  • Wenn, wie hier beschrieben wird, der Cache 15 groß genug ist, um N Seiten in der Umgebung des virtuellen Speichermanagements, das in der CPU 10 ausgeführt wird, zu halten, werden die Seiten neuabgebildet, um den Effekt der N-Wege Assoziativität hervorzurufen. Im Beispiel von Fig. 4, wo der Cache 15 zwei der 1 KByte Seiten halten kann, kann das Betriebssystem virtuelle Seiten auf physikalische Seiten im Speicher 14 (Speicherabbildung 18) neu abbilden, um den erwünschten Effekt der Simulation einer Zwei-Wege Assoziativität hervorzurufen. Die virtuellen Adressen 0000 und 2048 befinden sich in unterschiedlichen virtuellen Adresseiten und können auf zwei physikalische Seiten (etwa die Seitenrahmennummern 301 und 303) abgebildet werden, die auf die gleichen Plätze im Cache 15 abbilden. Für eine solche Abbildung verschwendet der Direct-Mapped-Cache 15 Zeit, wenn wiederholt Zugriffe auf die virtuellen Adressen 0000 und 2048 erfolgen. Eine andere virtuell-physikalische Abbildung (etwa die Zuweisung der Seitenrahmennummern (PFN) 301 und 302 an Stelle von 301 und 303) ermöglicht, daß beide Seiten zum gleichen Zeitpunkt im 2 KByte Cache 15 sind, und der Cache ruft den Effekt eines Zwei-Wege Assoziativ-Cache hervor. Die gleichen Daten, die in der Seitenrahmennummer PFN 303 waren, werden auf die PFN 302 im physikalischen Speicher 14 neu geschrieben, wodurch ein Blockpaar, das vorher auf einen völlig gleichen Platz im Cache 15 abbildete, nun auf verschiedene Blockplätze abbildet. Die Mengen der Adressbits der physikalischen Adressen 26 für die zwei Elemente werden nun ein Bit aufweisen, das in den Feldern 28 und 29 verschieden ist.
  • Es ist eine einfache Aufgabe, die Daten zu kopieren und die Seitenrahmennummern, die den virtuellen Seiten durch das Betriebssystem zugewiesen sind, neu abzubilden (diese Funktion existiert bereits in UNIX oder VAX/VMS zur Neuabbildung fehlerhafter Speicherblöcke, d. h. diejenigen, die weiche Fehler oder ähnliches aufweisen). Zuerst müssen jedoch die Datenelemente, die Zeitverschwendung hervorrufen, erfaßt werden. Das Vorhandensein dieser Elemente ist natürlich datenabhängig und von der Anwendungssoftware abhängig, deswegen ist eine Vorhersage, wann der Zustand auftritt, vor dem Durchlauf praktisch unmöglich; weiterhin werden die Fälle der Zeitverschwendung bei einem weiteren Aufruf der Software zu unterschiedlichen Zeitpunkten und Programmstellen auftreten. Die fragliche Software muß laufen, bevor bekannt wird, ob der Zustand existiert, und bevor die Position jedes Auftretens des Zustands bekannt wird. Ein Verfahren der Erfassung der Zustands der Zeitverschwendung während des Programmlaufs besteht darin, eine Untermenge (etwa 1 aus 64, gesteuert durch einen 6-Bit Nichttrefferzähler 40) der Adressen, die einen Cache-Nichttreffer erzeugen, zwischenzuspeichern (im Speicher oder in einem Register 39, das in Fig. 3 ersichtlich ist), und anschließend die Adressen dieses Zwischenspeichers 39 durch eine Zeitgeberunterbrechungsroutine periodisch zu lesen. Auf der Grundlage dieser Abtastung des Stroms der Nichttrefferadressen, bildet das realisierte Verfahren dann die Seitennummern (wie in Fig. 4) neu ab, um die Zeitverschwendung zu reduzieren. Der Zweck der Abtastung einer Untermenge des Stroms der Nichttrefferadressen besteht darin, zu verhindern, daß die Zeitgeberunterbrechungsroutine immer die Adresse der Zeitgeberunterbrechungsroutine selbst in dem Zwischenspeicher der Nichttrefferadressen 39 findet. Der Nichttrefferzwischenspeicher 39 und der Zähler 40 können als Teil des Cache-Controllers 12 oder der CPU 10 aufgebaut sein oder können eine separate, an den CPU-Bus 13 gekoppelte Hardware sein.
  • Ein Neuabbildungsalgorithmus, der verwendet werden kann, sollte am Nichttrefferzwischenspeicher 39 100 bis 1000 Abtastungen pro Sekunde vornehmen und jede abgetastete Seite auf einen anderen physikalischen Speicherplatz (anderen Seitenrahmen) neu abbilden, wie in Fig. 4 dargestellt ist. Der Algorithmus zur Wahl der neuen PFN kann darin bestehen, nur die vorhandene PFN zu vermindern und die verschobene PFN zu erhöhen. Ein weiterer Algorithmus könnte darin bestehen, eine der "nicht zugewiesenen Seiten" im physikalischen Speicher zu benutzen, durch die sich das Betriebssystem auf dem Laufenden hält, d. h., dem Seitenrahmen, der bewegt werden soll, wird eine der unbenutzten Seitenrahmennummern gegeben, somit gibt es dann keine verschobene Seite, die umgestellt werden müßte. Nachdem die neuen Nummern zugewiesen sind, erfordert das Verfahren, daß eine Seite oder zwei Seiten auf neue Plätze im physikalischen Speicher 14 bewegt werden. Mit einer großen Wahrscheinlichkeit werden Plätze, die aktiv Zeit verschwenden, schließlich abgetastet und bewegt. Die Zeit verschwendenden Seiten werden ebenfalls mit großer Wahrscheinlichkeit (mindestens nach ein paar solcher Verschiebungen) eine Cache-Konfiguration erreichen, die mit der eines durch Hardware realisierten N-Wege Assoziativ-Cache gleichwertig ist (wobei N die Anzahl der Seiten ist, die der Direct-Mapped-Cache 15 halten kann) und die Zeitverschwendung wird vermindert.
  • Als eine Demonstration des Effekts der Verwendung des Verfahrens der Erfindung wurde eine Aufzeichnung von Cache-Nichttreffern dargestellt, wie in Fig. 5a ersichtlich ist, bei der die Verbesserung nicht benutzt wird. Die Koordinaten der Darstellung sind die Zeit, die in der Figur von oben nach unten abläuft, und die Cache-Speicheradresse, die von links nach rechts läuft; jede Markierung ist ein Cache-Nichttreffer, somit ist die Dichte der Markierungen ein Maß für den Grad der Zeitverschwendung - oder im Idealfall würde es überhaupt keine Markierungen geben. In diesem Beispiel läuft ein Anwendungsprogramm, das Nichttreffer zeigt, indem es ein Muster zeichnet, das anscheinend den Cache ungefähr bis zu einem Ein- Seiten-Pegel ausfüllt, dann auf Null zurückgeht und beginnt, das gleiche allgemeine Muster neu zu zeichnen. Obwohl vorhanden, erscheint in dieser Zeichnung die zweite Seite des Cache unbenutzt, oder mindestens erscheinen fast keine Nichttreffer. Zeitlich ist keine Verbesserung der Leistung in Fig. 5a zu erkennen; das anfängliche Muster scheint sich unendlich zu wiederholen. Im Unterschied dazu ist in Fig. 5b die Cache-Größe die gleiche, jedoch wird das Verfahren der Erfindung benutzt. Hier ist das erste Muster oben auf der Darstellung das gleiche wie in Fig. 5a, dann scheint das zweite Muster zu beginnen, die zweite Seite des Cache zu füllen, und wenn das Programm weiterläuft, verringert sich die Anzahl der Nichttreffer (Dichte der Markierungen) stufenweise, bis die Dichte an der Unterkante der Darstellung erheblich geringer ist. Die Gesamtzeit dieser Darstellung beträgt von oben nach unten ungefähr 2 Sekunden. Ein Kennzeichen der Verwendung der Erfindung besteht darin, daß sich die Ausführung eines Programms zeitlich verändert; die Leistungsfähigkeit wird sich verbessern, wenn das Muster der Adressierung in der Weise ist, daß Zeitverschwendung auf Grund des oben erläuterten Phänomens auftreten würde. Bei einigen Programmen kann die Adressierung jedoch in viel höherem Maße zufällig sein, und der in den Fig. 5a und 5b dargestellte Effekt würde nicht auftreten. Ein Experiment, das vollkommen zufällige Adressen erzeugt, beweist, daß die Verwendung des Verfahrens der Erfindung überhaupt keine Verbesserung bringt, und es gibt tatsächlich einen kleinen Einbruch der Leistungsfähigkeit auf Grund der Zeit, die benötigt wird, um Seiten zu bewegen, nachdem die Zufallszeitverschwendung erfaßt wurde. Fast alle Programme haben jedoch in hohem Maße nichtzufällige Adressierungsmuster auf Grund des Vorherrschens von Schleifen, deswegen zeigen die meisten Programme eine zeitliche Verbesserung der Leistungsfähigkeit, wenn das Verfahren der Erfindung verwendet wird.
  • Der verbesserte Betrieb, der durch das Verfahren der Erfindung gewährleistet wird, gestattet die Verwendung einer schnellen, einfach aufgebauten, Direct-Mapped- Cache-Speichervorrichtung, wobei eine Cache-Trefferlei stung erreicht wird, die mit der einer langsameren, komplexen, N-Wege Assoziativ-Cache-Hardware fast gleichwertig ist. Die Gesamtleistungsfähigkeit vom Standpunkt der Geschwindigkeit ist jedoch wegen des Fehlens der einem teilassoziativen Cache inhärenten Hardwareverzögerung besser als bei der Verwendung eines teilassoziativen Cache.

Claims (14)

1. Verfahren zum Betreiben eines Computersystems, das einen Prozessor, einen Hauptspeicher zum Speichern von Daten und einen Cache zum Speichern von Daten, die den an ausgewählten Hauptspeicheradressen gespeicherten Daten entsprechen, enthält, wobei das Verfahren die folgenden Schritte enthält:
Zugreifen auf den Cache, um mehrere Seiten von Daten zu erhalten, unter Verwendung der Hauptspeicheradressen, um mehrere Cache-Plätze zu identifizieren, an denen die Seiten gespeichert sein können;
Erfassen jedes von mehreren Cache-Nichttreffern, die Cache-Zugriffe enthalten, die Seiten ergeben, die sich nicht an den identifizierten Plätzen befinden;
wobei das Verfahren gekennzeichnet ist durch die folgenden Schritte;
Speichern einer im voraus gewählten Untermenge der Hauptspeicheradressen, die bei den Cache-Nichttreffern verwendet werden, wobei die Untermenge mehr als einen und weniger als alle Cache-Nichttreffer enthält;
Abtasten der gespeicherten Hauptspeicheradressen zu ausgewählten Zeitpunkten; und
Bewegen der Daten an jeder abgetasteten Hauptspeicheradresse zu einer anderen der Hauptspeicheradressen.
2. Verfahren nach Anspruch 1, bei dem der Prozessor ein virtuelles Speichersystem verwendet, in dem jede der Hauptspeicheradresssen einer Seitenrahmennummer entspricht, der eine virtuelle Adresse zugewiesen ist, und bei dem der Bewegungsschritt den Schritt des Zuweisens verschiedener virtueller Adressen an die Seitenrahmennummern, die den Daten an jeder der abgetasteten Hauptspeicheradressen entsprechen, enthält.
3. Verfahren nach Anspruch 1, bei dem die Daten in dem Hauptspeicher in mehreren Seiten gespeichert sind, wobei jede Seite des Hauptspeichers einer der Hauptspeicheradressen entspricht, wobei der Cache wenigstens zwei der Seiten hält, und bei dem die Bewegung das Bewegen der Seite an jeder Hauptspeicheradresse enthält.
4. Verfahren nach Anspruch 1, bei dem der Schritt des Speicherns der Hauptspeicheradressen das Zwischenspeichern der Hauptspeicheradresse jedes solchen Cache- Nichttreffers enthält.
5. Verfahren nach Anspruch 4, bei dem die Schritte des Abtastens und Bewegens das periodische Abtasten der zwischengespeicherten Hauptspeicheradresse sowie das Bewegen der der abgetasteten Hauptspeicheradresse entsprechenden Daten umfassen.
6. Verfahren nach Anspruch 1, bei dem der Speicherschritt die Schritte des Zählens der Cache-Nichttreffer und des Speicherns jedes von jeweils N Cache-Nichttreffern enthält, wobei N eine ganze Zahl größer als eins und kleiner als die Gesamtzahl der Cache-Nichttreffer ist.
7. Speichermanagementvorrichtung in einem Computersystem, das einen Prozessor, einen Hauptspeicher zum Speichern von Daten und einen Cache zum Speichern von Daten, die den an ausgewählten Hauptspeicheradressen gespeicherten Daten entsprechen, enthält, wobei die Speichermanagementvorrichtung enthält:
eine Zugriffseinrichtung, die mit dem Cache gekoppelt ist, um auf den Cache zuzugreifen, um mehrere Seiten von Daten unter Verwendung der Hauptspeicheradressen zu erhalten, um mehrere Cache-Plätze zu identifizieren, an denen die Seiten gespeichert sein können;
eine Erfassungseinrichtung, die mit der Zugriffseinrichtung gekoppelt ist, um jeden von mehreren Cache-Nichttreffern zu erfassen, die Cache-Zugriffe umfassen, die Seiten ergeben, die sich nicht an den identifizierten Plätzen befinden;
wobei die Speichermanagementvorrichtung gekennzeichnet ist durch
eine Speichereinrichtung, die mit der Erfassungseinrichtung gekoppelt ist, um eine im voraus gewählte Untermenge der Hauptspeicheradressen, die bei den Cache- Nichttreffern verwendet werden, zu speichern, wobei die Untermenge mehr als einen und weniger als alle Cache- Nichttreffer enthält;
eine Abtasteinrichtung, die mit der Speichereinrichtung gekoppelt ist, um die gespeicherten Hauptspeicheradressen zu ausgewählten Zeitpunkten abzutasten; und
eine Einrichtung, die mit der Abtasteinrichtung gekoppelt ist, um die Daten an jeder abgetasteten Hauptspeicheradresse an eine andere der Hauptspeicheradressen zu bewegen.
8. Vorrichtung nach Anspruch 7, wobei die Speichereinrichtung einen Zähler zum Zählen der Cache-Nichttreffer sowie eine Einrichtung zum Speichern jedes von jeweils N Cache-Nichttreffern enthält, wobei N eine ganze Zahl größer als eins und kleiner als die Gesamtzahl der Cache-Nichttreffer ist.
9. Vorrichtung nach Anspruch 7, wobei die Speichereinrichtung einen Nichttreffer-Zwischenspeicher enthält, der sequentiell jede der Hauptspeicheradressen speichert, die bei den Cache-Nichttreffern verwendet werden.
10. Vorrichtung nach Anspruch 9, wobei die Speichereinrichtung einen Zähler zum Zählen der Cache-Nichttreffer sowie eine Einrichtung zum Speichern jedes von jeweils N Cache-Nichttreffern enthält, wobei N eine ganze Zahl größer als eins und kleiner als die Gesamtzahl der Cache-Nichttreffer ist.
11. Vorrichtung nach Anspruch 7, wobei der Prozessor ein virtuelles Speichersystem verwendet.
12. Vorrichtung nach Anspruch 11, wobei Daten im Hauptspeicher in Seiten gespeichert sind und die Seiten zwischen dem Hauptspeicher und einem Plattenspeicher unter Verwendung des virtuellen Speichersystems ausgelagert werden.
13. Vorrichtung nach Anspruch 7, wobei Daten im Hauptspeicher in Seiten gespeichert sind, wobei jede Seite eine Hauptspeicheradresse besitzt und der Cache wenigstens zwei der Seiten hält, und wobei die Einrichtung zum Bewegen das Bewegen der Seite an jeder Hauptspeicheradresse umfaßt.
14. Vorrichtung nach Anspruch 7, wobei die Einrichtung zum Bestimmen der Hauptspeicheradresse einen Zwischenspeicher zum Halten der Hauptspeicheradresse jedes derartigen Cache-Nichttreffers enthält.
DE69229667T 1991-06-17 1992-05-21 Simulierte cachespeicher-assoziativität Expired - Fee Related DE69229667T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US71639791A 1991-06-17 1991-06-17
PCT/US1992/004281 WO1992022867A1 (en) 1991-06-17 1992-05-21 Improving computer performance by simulated cache associativity

Publications (2)

Publication Number Publication Date
DE69229667D1 DE69229667D1 (de) 1999-09-02
DE69229667T2 true DE69229667T2 (de) 2000-02-10

Family

ID=24877837

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69229667T Expired - Fee Related DE69229667T2 (de) 1991-06-17 1992-05-21 Simulierte cachespeicher-assoziativität

Country Status (12)

Country Link
US (1) US5442571A (de)
EP (1) EP0543991B1 (de)
JP (1) JPH07104816B2 (de)
KR (1) KR960005443B1 (de)
AU (1) AU658914B2 (de)
CA (1) CA2088779C (de)
DE (1) DE69229667T2 (de)
IE (1) IE921691A1 (de)
IL (1) IL102001A (de)
MX (1) MX9202907A (de)
TW (1) TW219986B (de)
WO (1) WO1992022867A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2688612A1 (fr) * 1992-03-13 1993-09-17 Inst Nat Rech Inf Automat Dispositif d'antememoire.
US5732409A (en) * 1994-03-21 1998-03-24 Legend Research Limited Caching disk controller implemented by hardwired logic
US6129458A (en) * 1994-03-23 2000-10-10 At&T Global Information Solutions Company Cache optimization method
US6223255B1 (en) 1995-02-03 2001-04-24 Lucent Technologies Microprocessor with an instruction level reconfigurable n-way cache
US5845106A (en) * 1996-01-26 1998-12-01 Advanced Micro Devices, Inc. Method for simulating cache operation
US5752261A (en) * 1996-11-07 1998-05-12 Ncr Corporation Method and apparatus for detecting thrashing in a cache memory
US6301641B1 (en) * 1997-02-27 2001-10-09 U.S. Philips Corporation Method for reducing the frequency of cache misses in a computer
KR100231707B1 (ko) * 1997-08-04 2000-01-15 정선종 통신 장비의 디엠에이 처리 방법 및 그 장치
US6209062B1 (en) * 1997-11-24 2001-03-27 Intel Corporation Method for holding cache pages that are not invalidated within normal time duration for a second access or that are likely to be accessed again soon
US6446170B1 (en) * 1999-01-19 2002-09-03 International Business Machines Corporation Efficient store machine in cache based microprocessor
US6408368B1 (en) 1999-06-15 2002-06-18 Sun Microsystems, Inc. Operating system page placement to maximize cache data reuse
US6366994B1 (en) * 1999-06-22 2002-04-02 Sun Microsystems, Inc. Cache aware memory allocation
JP2001109661A (ja) 1999-10-14 2001-04-20 Hitachi Ltd キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
US6523092B1 (en) * 2000-09-29 2003-02-18 Intel Corporation Cache line replacement policy enhancement to avoid memory page thrashing
US6947052B2 (en) * 2001-07-13 2005-09-20 Texas Instruments Incorporated Visual program memory hierarchy optimization
GB2381886B (en) * 2001-11-07 2004-06-23 Sun Microsystems Inc Computer system with virtual memory and paging mechanism
US7366871B2 (en) 2004-11-18 2008-04-29 Sun Microsystems, Inc. Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table
US7373480B2 (en) * 2004-11-18 2008-05-13 Sun Microsystems, Inc. Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table
JP2007272691A (ja) * 2006-03-31 2007-10-18 Fujitsu Ltd プロセッサ装置およびスラッシング回避方法
US8806461B2 (en) * 2007-06-21 2014-08-12 Microsoft Corporation Using memory usage to pinpoint sub-optimal code for gaming systems
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10310811B2 (en) 2017-03-31 2019-06-04 Hewlett Packard Enterprise Development Lp Transitioning a buffer to be accessed exclusively by a driver layer for writing immediate data stream
CN111666230B (zh) * 2020-05-27 2023-08-01 江苏华创微系统有限公司 在组相联tlb中支持巨页的方法
US20220206946A1 (en) * 2020-12-28 2022-06-30 Advanced Micro Devices, Inc. Method and apparatus for managing a cache directory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119290A (en) * 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
US5210843A (en) * 1988-03-25 1993-05-11 Northern Telecom Limited Pseudo set-associative memory caching arrangement
JPH02273843A (ja) * 1989-04-14 1990-11-08 Nec Corp スワッピング装置
US5101485B1 (en) * 1989-06-29 1996-12-10 Frank L Perazzoli Jr Virtual memory page table paging apparatus and method

Also Published As

Publication number Publication date
EP0543991B1 (de) 1999-07-28
IL102001A0 (en) 1992-12-30
JPH07104816B2 (ja) 1995-11-13
AU2247492A (en) 1993-01-12
TW219986B (de) 1994-02-01
CA2088779C (en) 1998-09-01
IL102001A (en) 1996-01-31
AU658914B2 (en) 1995-05-04
DE69229667D1 (de) 1999-09-02
KR960005443B1 (ko) 1996-04-25
IE921691A1 (en) 1992-12-30
MX9202907A (es) 1993-03-01
WO1992022867A1 (en) 1992-12-23
EP0543991A1 (de) 1993-06-02
CA2088779A1 (en) 1992-12-18
JPH05509189A (ja) 1993-12-16
US5442571A (en) 1995-08-15

Similar Documents

Publication Publication Date Title
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE68923437T2 (de) Adressenübersetzung für Seiten mehrfacher Grösse.
DE69030945T2 (de) Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung
DE69317729T2 (de) Cache-Etikettenspeicher
DE69132005T2 (de) Vorrichtung und Verfahren für einen raumsparenden Adressenübersetzungspuffer für inhaltsadressierbaren Speicher
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE69331039T2 (de) Rechnersystem mit einem Vorausholungscachespeicher
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE69228380T2 (de) Verfahren zur erhöhung der datenverarbeitungsgeschwindigkeit in einem rechnersystem
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69029173T2 (de) Mikroprozessor
DE68924833T2 (de) Verfahren und Anordnung zur Datenabbildung in einem Datenverarbeitungssystem mit virtuellem Speicher.
DE3151745C2 (de)
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE69130942T2 (de) Vorrichtung zur Erhöhung der Leistung eines Adressenübersetzungspuffers
DE3805107A1 (de) Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers
DE19526960A1 (de) Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN

8339 Ceased/non-payment of the annual fee