DE69130626T2 - Verfahren zur Verwaltung einer Cache-Speicheranordnung - Google Patents

Verfahren zur Verwaltung einer Cache-Speicheranordnung Download PDF

Info

Publication number
DE69130626T2
DE69130626T2 DE69130626T DE69130626T DE69130626T2 DE 69130626 T2 DE69130626 T2 DE 69130626T2 DE 69130626 T DE69130626 T DE 69130626T DE 69130626 T DE69130626 T DE 69130626T DE 69130626 T2 DE69130626 T2 DE 69130626T2
Authority
DE
Germany
Prior art keywords
data
bytes
memory
cache memory
cache
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
DE69130626T
Other languages
English (en)
Other versions
DE69130626D1 (de
Inventor
Edward C. Fremont King
Forrest O. Springboro Arnold
Jackson L. Fort Collins Ellis
Robert B. San Diego Moussavi
Pirmin L. Weisser
Fulps V. Vermeer
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.)
NCR International Inc
Original Assignee
NCR International Inc
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 NCR International Inc filed Critical NCR International Inc
Application granted granted Critical
Publication of DE69130626D1 publication Critical patent/DE69130626D1/de
Publication of DE69130626T2 publication Critical patent/DE69130626T2/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/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU

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

  • Die Erfindung bezieht sich auf Computer-Speichersysteme.
  • Die Leistungsfähigkeit eines Computersystems läßt sich durch die Verwendung einer Speicherhierarchie vergrößern. Beispielsweise kann ein dreistufiger Speicher aus langsamen, mittleren und schnellen Speichern aufgebaut werden. Ein langsamer Speicher kann eine Magnetplatte sein, um mit geringen Kosten große Datenmengen zu speichern. Ein mittelschneller Speicher kann aus DRAMs aufgebaut werden, um als Hauptspeicher des Computersystems verwendet zu werden. Ein schneller Speicher kann SRAMs verwenden, um als schneller Prozessor-Pufferspeicher (cache) zu dienen. Hinter der Speicherhierarchie steht die Theorie, Code(Instruktions)- und andere Daten, die vom Systemprozessor verarbeitet werden sollen, im schnellsten Speicher zu gruppieren. Da ein Hochgeschwindigkeitsspeicher typischerweise der kostspieligste verfügbare Speicher ist, soll er aus Wirtschaftlichkeitsgründen relativ klein sein. Der aus DRAMs bestehende Hauptspeicher ist dichter und weniger kostspielig als ein Cache-Speicher mit SRAMs und kann daher erheblich größer als der Cache-Speicher sein.
  • Im Betrieb werden Befehle und andere Daten vom Systemspeicher zum Cache-Speicher übertragen, damit ein schneller Zugriff zu den Variablen des gerade ausgeführten Programms besteht. Wenn nicht im Cache-Speicher enthaltene zusätzliche Daten benötigt werden, werden diese vom Hauptspeicher übertragen, indem ausgewählte Daten im Cache-Speicher ersetzt werden. Man verwendet verschiedene Ersetzungsalgorithmen zur Bestimmung, welche Daten ersetzt werden.
  • Eine effizient arbeitende Cache-Speicher-Architektur zeichnet sich durch ein hohes Verhältnis von Treffern zu Zugriffen aus. Ein Treffer liegt vor, wenn die gesuchten Daten sich im Cache-Speicher befinden. Diese Trefferquote wird durch eine Anzahl von Faktoren beeinflußt. Der Hauptfaktor ist der Ortsbezug der gerade verarbeiteten Codes. Mit anderen Worten, ist der Code an räumlich benachbarten Stellen im Speicher lokalisiert, dann ist die Trefferquote höher, als wenn der Code im Speicher weit verstreut ist. Ein anderer Faktor, welcher die Trefferquote eines Cache-Speichers beeinflußt, ist die Anzahl von Geräteeinheiten, welche Zugriff zum Speicher haben. Hat nur ein einziger Datenbus-Master, wie etwa der Systemprozessor, Zugriff zum Speicher, dann können die im Cache-Speicher gespeicherten Daten so kontrolliert werden, daß die Trefferquote vernünftig hoch wird. Hat jedoch mehr als ein einziger Datenbus-Master über denselben Cache-Speicher Zugriff zum Hauptspeicher, dann kann der Cache-Speicher zwischen den Anforderungen der Datenbus-Master hin und her pendeln, wodurch die Trefferquote stark absinkt. Mit anderen Worten unterscheidet der Cache-Speicher nicht zwischen den Anforderungen des Systemprozessors und anderer Datenbus-Master, welche den Cache-Speicher in gleicher Weise beeinflussen. Ein Betriebsfall kann die Datenbehandlung des Cache-Speichers erheblich stören. So können beispielsweise vom Zentralprozessor benötigte Daten überschrieben werden von Daten, die in Abhängigkeit von Speicherzugriffen seitens eines anderen CPU-Datenbus-Masters als der Host gepuffert worden sind.
  • Ein weiterer die Trefferquote beeinflussender Faktor hängt damit zusammen, daß sowohl Codedaten wie auch Nicht-Codedaten gepuffert werden. Datenblöcke im Systemspeicher werden an verschiedenen räumlichen Stellen des Cache-Speichers abgebildet. Wenn jeder Datenblock im Systemspeicher nur in einem einzigen Bereich abgebildet wird, dann nennt man einen solchen Cache-Speicher einen "Direct Mapped Cache". Eine satzassoziative Abbildung beinhaltet, daß jeder Datenblock an mehr als einem einzigen Bereich abgespeichert wird. Wenn beispielsweise jeder Datenblock an einem von zwei Bereichen gespeichert werden kann, dann nennt man den Cache-Speicher zweifach-satzassoziativ. Unabhängig von der Anzahl der für einen Systemspeicherblock verfügbaren Plätze für die Cache-Speicherung von sowohl Codedaten wie auch Nicht-Codedaten er geben sich Überlappungen der jeweiligen Abbildungen. Wenn also sowohl Codedaten als auch Nicht-Codedaten gepuffert werden, kann es zu erheblichen Überschreibungen kommen, wenn Daten bei Speicherzugriffen ersetzt werden.
  • Eine mit Cache-Speichertreffern zusammenhängende Angelegenheit ist, ob ein Datenelement im Cache-Speicher gültig und/oder "dirty" ist. Ein Datenelement im Cache-Speicher ist gültig, solange kein entsprechendes Element im Systemspeicher aktueller ist. Ein Datenelement im Cache-Speicher ist dirty, wenn es aktueller als ein entsprechendes Element im Systemspeicher ist. Ein Datenelement wird dirty, wenn ein Datenbus-Master das Element in einen Cache-Speicher und nicht in den Systemspeicher einschreibt.
  • Sind alle Bytes eines Datenelements gültig, dann liefert der Cache-Speicher bei einem Treffer das gewünschte Datenelement. Wenn irgendwelche der Bytes ungültig sind, reagiert der Systemspeicher auf die Speicherauslesung für das Datenelement. Wenn jedoch eins und nicht alle der Datenbytes gültig und dirty sind, dann werden jegliche solche Bytes zuerst vom Cache-Speicher in den Systemspeicher geschrieben, ehe das Datenelement aus dem Systemspeicher ausgelesen werden kann. Ein solcher Stand der Technik ist aus der EP-A-0 379 769 bekannt. Dieses Rückschreib-Merkmal erhöht die Reaktionszeit des Speichersystems, und dadurch wird die Leistungsfähigkeit des Systems beeinträchtigt.
  • Aus der US-A-4157586 ist ein Verfahren zur Durchführung einer Teil-Speicheroperation bekannt. Hierbei wird ein zu speicherndes Datenwort in ein Datenregister eingegeben. In Übereinstimmung mit in einem getrennten Maskenregister gespeicherten Steuerbits werden ausgewählte Bytes des Wortes im Datenregister in einem Mischregister mit ausgewählten Bytes aus dem Cache-Speicher vermischt, und der Ausgang des Mischregisters wird einer Speicher-Steuereinheit für den Hauptspeicher zugeführt.
  • Eine Aufgabe der Erfindung besteht in der Schaffung eines Verfahrens zur Verbesserung der Reaktionszeit eines Computer-Speichersystems.
  • Demnach wird gemäß der Erfindung ein Verfahren zum Lesen eines sowohl in einem Cache-Speicher als auch in einem Systemspeicher gespeicherten Mehrfach-Byte-Datenelementes geschaffen, in welchem ausgewählte Bytes des Datenelementes im Cache-Speicher ungültig gemacht werden und welches gekennzeichnet ist durch die Schritte, daß im Cache-Speicher für jedes Byte des in ihm gespeicherten Datenelements eine Gültig/Ungültig-Marke gespeichert wird, die angibt, ob das Byte gültig oder ungültig ist, und daß bei einem ersten Ausleseabruf für dieses Datenelement die gültigen Bytes vom Cache-Speicher mit den übrigen Bytes aus dem Systemspeicher ohne vorheriges Rückschreiben der gültigen Bytes in den Systemspeicher kombiniert werden.
  • Es sei nun eine Ausführungsform als Beispiel der Erfindung mit Bezug auf die beiliegenden Zeichnungen erläutert, in denen
  • 1 eine Blockdarstellung eines Hochleistungs-Computer-Speichersystems gemäß der Erfindung, und
  • 2 ein detaillierteres Diagramm des Computer-Speichersystems nach 1 darstellen.
  • 1 zeigt ein Blockschaltbild eines Computer-Speichersystems 10. Das System enthält einen Systemspeicher 12, der bei einer bevorzugten Ausführung durch DRAM-Chips (dynamic random access memories) gebildet wird. Die im Speicher 12 gespeicherten Daten können generell in Codedaten (Instruktionen oder Befehle) und Nicht-Codedaten unterteilt werden. Im folgenden bezieht sich der Ausdruck "Daten" auf Information und enthält sowohl Codedaten (Instruktionen, Befehle) und Nicht-Codedaten. Der Speicher 12 ist über einen Datenbus 14 mit anderen Teilen eines Computersystems verbunden, was hier nicht dargestellt ist. Das Speichersystem 10 ist für die Verwendung mit zwei oder mehr Datenbus-Mastern ausgelegt. Genauer gesagt ist es bestimmt für die Verwendung mit einem Zentral prozessor wie einem Intel-Prozessor 386, 386sx oder 486 in Verbindung mit anderen Datenbus-Mastern oder Einheiten, die sich mit dem Zentralprozessor den Zugang zum Speichersystem 10 teilen. Der Zugang zum DRAM 12 wird gesteuert durch die DRAM-Steuerschaltung 22, die im Zuge des Datenbusses 14 angeordnet ist.
  • Das Speichersystem 10 enthält ferner einen internen Cache-Speicher 16, einen Vorabruf-Cache-Speicher 18 und einen Schreib-Cache-Speicher 20, die jeweils mit dem Datenbus 14 verbunden sind. Bei einer bevorzugten Form ist der interne Cache-Speicher 16 ein 4 K-Byte-Vierfach-Satzassoziativ-Cache-Speicher, der Vorabruf-Cache-Speicher 18 ein 128-Byte-Direct-Mapped-Cache-Speicher und der Schreib-Cache-Speicher 20 ein 128-Byte-Zweifach-Satzassoziativ-Cache-Speicher.
  • Ein Merkmal der Cache-Speicher besteht darin, daß ihre Funktionalität variiert werden kann, je nachdem, was für ein Zentralprozessortyp (386, 386sx oder 486) benutzt wird. Jedoch ändern sich bestimmte Merkmale der Cache-Speicher nicht. Beispielsweise speichert der interne Cache-Speicher 16 Daten, die allein auf Basis von Speicherzugängen durch den Zentralprozessor ausgewählt sind. Mit anderen Worten ist der interne Cache-Speicher 16 auf den Zentralprozessor zugeschnitten und wird nicht durch Speicherzugänge seitens anderer Datenbus-Master beeinflußt. Es versteht sich, daß jeder der Cache-Speicher durch irgendeinen der Datenbus-Master gelesen werden kann. Das heißt, obwohl der Cache-Speicher 16 keine Dateneinschreibung aufgrund von Speicherzugängen durch andere als den Systemprozessor erlaubt, kann er von anderen Datenbus-Mastern ausgelesen werden, wenn die gesuchten Daten in ihm enthalten sind. Es versteht sich ferner, daß jeder der Cache-Speicher nicht für ihn bestimmte Dateneinschreibungen beobachtet, um seine Inhalte bei Beobachtungstreffern ungültig zu machen und damit Kohärenz sicherzustellen.
  • Als weiteres unwandelbares Merkmal der Cache-Speicher enthält der Vorabruf-Cache-Speicher 18 nur Codedaten, die vom DRAM 12 vorab geholt worden sind. Er holt weiterhin vorab nur Daten aufgrund eines Speicherzugangs seitens des Zentralprozessors. Wenn immer im Betrieb der Systemprozessor Codedaten anfordert, die nicht schon im Vorabruf-Speicher sind, dann werden die nächstfolgenden 128 Bytes des Codes vorab in den Cache-Speicher 18 in Warteposition geholt im Vorgriff auf nachfolgende Codeanforderungen.
  • Der Schreib-Cache-Speicher 20 puffert nur Daten, die in den DRAM 12 eingeschrieben werden sollen. Er ist nicht nur ein Schreibpuffer, sondern ein Cache-Speicher, der wie oben gesagt, durch irgendeinen Datenbus-Master gelesen werden kann. Er puffert jedoch keine Daten vom DRAM 12.
  • Ein wichtiges Merkmal der Cache-Speicher ist die Trennung der Betriebsweisen jedes der Cache-Speicher, so daß die Definition derjenigen Funktionen, die durch den Prozessortyp bedingt sind, leicht gewählt werden können. Aufgrund dieser Einsicht ist das erfindungsgemäße System in der Lage, die Leistungsfähigkeit eines Systems zu erreichen oder zu überschreiten, welches einen einzigen Cache-Speicher benutzt, der viele Male größer als die Gesamtgröße der Cache-Speicher bei der Erfindung ist. Bezüglich der wahlweisen Funktionsdefinition, je nach Prozessortyp, für ein System mit einem 486-Prozessor speichert der Schreib-Cache-Speicher 20 Dateneinschreibungen aller anderen Datenbus-Master als der Systemprozessor. Für ein System, welches einen 386- oder 386sx-Systemprozessor benutzt, hält der interne Cache-Speicher 16 nur Codedaten und ist ein nur auslesbarer Cache-Speicher für den Systemprozessor, und der Schreib-Cache-Speicher 20 puffert Dateneinschreibungen von jeglichem Datenbus-Master einschließlich des Systemprozessors. Die Betriebseigenschaften der Cache-Speicher werden bestimmt durch Selbstkonfigurierung beim Netzeinschalten aufgrund von Informationen über den Typ des vorhandenen Zentralprozessors.
  • Die DRAM-Steuerschaltung 22 sorgt für einen Fast-Page-Mode für die Zugriffe zum DRAM 12. Fast-Page-Mode ist eine gut bekannte Technik zur Beschleunigung der Zugriffe zum DRAM durch Aktivierung einer Zeilenlinie in einer Speicherseite mit anschließendem "Anblitzen" aufeinanderfolgender Spalten zur Datenübertragung in oder aus dem DRAM. Der DRAM 12 ist in Seiten unterteilt, welche entweder Code- oder Nicht-Codedaten enthalten. Ein dem DRAM 12 zugeordnetes Register ist entweder im DRAM 12 oder in der DRAM-Steuerschaltung 22 vorgesehen und hält die Seitenadresse einer Seite, auf welche zuletzt zugegriffen worden ist. Im Effekt sorgt das System für eine Tendenz zu Codeseiten oder Nicht-Codeseiten, je nach dem mit dem System verbundenen Prozessortyp. Wenn beispielsweise der Systemprozessor ein 486iger ist, dann wird die Adresse derjenigen Codeadressenseite im Register gehalten, zu welcher zuletzt Zugriff erfolgt ist. Im Betrieb kann sowohl zu Codedatenseiten wie auch zu Nicht-Codedatenseiten im DRAM 12 willkürlich Zugriff genommen werden. Wenn in einem Zyklus Zugriff zu einer Codeseite genommen wird und beim nächsten Zyklus zu einer Nicht-Codeseite, dann wird die Adresse der Codeseite in einem Register gehalten, während Zugriff zur Nicht-Codeseite erfolgt. Unmittelbar nach dem Zugriff zur Nicht-Codeseite wird die Adresse im Register benutzt, um die Codeseite wieder zu öffnen. Wenn andererseits der Systemprozessor ein 386 oder ein 386sx ist, dann wird die Adresse derjenigen Nicht-Codeadressenseite im Register gehalten, zu der zuletzt Zugriff erfolgt ist. Die Kombination der wahlweisen Tendenz zur Seitenöffnung, der Fast-Page-Mode-Zugriffe und mehrfacher Cache-Speicher ergibt eine Erhöhung der Leistungsfähigkeit des Systems.
  • Der Schreib-Cache-Speicher 20 ist ein Zweifach-Satzassoziativspeicher. Der Nicht-Code-Datenbereich des Speichers kann in drei Bereiche unterteilt werden, die als Liste, Haufen oder Stapel bekannt sind (list, heap, stack). Die Datenblöcke im Speicher werden reserviert für Liste, Haufen und Stapel, von denen jeder seine eigene Organisation und eigenen Zweck hat. Beispielsweise ist ein Stapel ein Satz von Datenelementen, von denen zu einem Zeitpunkt immer nur auf eines Zugriff erfolgen kann. Die Listendaten werden hauptsächlich gelesen und im allgemeinen nicht eingeschrieben. In strukturierten Programmen betrifft ein hoher Prozentsatz von Einschreibungen den Stapel, und die am zweiten häufigsten Dateneinschreibungen betreffen den Haufen. Durch geeignete Zuordnung der Haufen- und Stapel-Datenblocks im DRAM und durch Abbildung (mapping) jeweiliger Blocks zu entgegengesetzten Sätzen in dem Zweifach-Satzassoziativ-Cache-Speicher läßt sich eine erhöhte betriebliche Wirksamkeit realisieren. Weiterhin ist die Tendenz für eine offene Seite im DRAM für Nicht-Codedaten effektiv eine Tendenz für eine offene Seite von Listendaten. Auf diese Weise läßt sich die Wirksamkeit des Betriebes weiter vergrößern.
  • 2 zeigt weitere Einzelheiten des Computer-Speichersystems 10. DRAM 12 und Steuerschaltung 22 sind über 3-Zustands-Einheiten 300 mit dem Datenbus 14 verbunden. Der Datenbus 14 hat eine Kapazität für 4 Bytes, so daß die 4 Bytes eines Doppelwortes (mit 0, 1, 2 und 3 bezeichnet) parallel übertragen werden können. Jedes Byte eines vom DRAM 12 übertragenen Doppelwortes durchläuft eine 3-Zustands-Einheit 300, welche ausgewählte Bytes sperren oder durchlassen kann, entsprechend von jeder Einheit 300 erhaltenen Steuersignalen. Jede 3-Zustands-Einheit 300 erhält von den Cache-Speichern 16 und 20 ein Sperrsignal über eine Steuerleitung 302.
  • Die Cache-Speicher 16 und 20 sind über 3-Zustands-Einheiten 304 bzw. 306 mit der Datenleitung 14 verbunden. Wie beim DRAM 12 sind die Datenelemente in den Cache-Speichern 16 und 20 in vier parallelen Bytes (Doppelwort) zugänglich. Einzelne Bytes können durch die 3-Zustands-Einheiten 304 und 306 gesperrt oder durchgelassen werden, je nach den von den Cache-Speichern 16 und 20 erhaltenen Steuersignalen.
  • Bei einer Ausführungsform ist das Steuersignal zur Sperrung eines Datenbytes vom DRAM 12 aktiv, wenn das entsprechende Datenbyte in einem der Cache-Speicher 16 oder 20 gültig oder dirty ist. Jedem Byte eines Mehrfachbyte-Datenelementes im Cache-Speicher 16 und 20 ist ein Bit zugeordnet, welches als gültig gesetzt wird, wenn das Datenelement anfangs in den Cache-Speicher eingeschrieben wird. Unter bestimmten Betriebsbedingungen kann es notwendig sein, ein oder mehrere Bytes in einem Element ungültig zu machen. Wenn beispielsweise eine schnelle Übertragung von einem Datenbus-Master direkt zum DRAM 12 (schneller Seiten-Betrieb) durchgeführt wird, dann beobachtet jeder Cache-Speicher den Datenbus 14. Wenn irgendwelche Datenelemente, die denjenigen in einem Cache-Speicher entsprechen, auf diese Weise in den DRAM 12 eingeschrieben werden, dann werden die jeweiligen Bytes in dem entsprechenden Datenelement als ungültig gesetzt. Als weiteres Beispiel kann es manchmal erwünscht sein, Datenelemente von einem Cache-Speicher in einen anderen zu übertragen. Irgendein so übertragenes Byte wird im Quellen-Cache-Speicher ungültig gesetzt, um Mehrdeutigkeiten zu vermeiden. Jedem Mehrfachbyte-Datenelement im Cache-Speicher 16 und 20 ist auch ein Bit zugeordnet, welches als dirty Bit bezeichnet wird. Ein dirty Bit ist ein Marker, der anzeigt, daß der Cache-Speicher, in welchen eingeschrieben wird, Information erhält, die noch nicht in den Speicher geschrieben worden ist. Sie stellt also den aktuellsten Wert eines gegebenen Datenelementes dar. Das dirty Bit wird typischerweise gesetzt, wenn Daten von einem Datenbus-Master in den Cache-Speicher eingeschrieben werden. Dirty Daten werden sauber, indem sie in den Systemspeicher eingeschrieben werden. Obgleich die Erfindung ein gültiges Bit auf dem Byte-Level und ein dirty Bit auf dem Element-Level liefert, ist es möglich, die Granularität zu ändern.
  • Die Erfindung erlaubt mehrere Betriebsarten. In der ersten müssen einzelne Datenelemente durch einen Datenbus-Master gelesen werden. Normalerweise werden die Cache-Speicher überprüft, und wenn sich in ihnen ein Datenelement befindet, wird es sehr schnell zum Datenbus-Master zurückgeführt. Ist das Datenelement nicht im Cache-Speicher, dann werden die DRAM-Steuerschaltung 22 und der DRAM 12 aktiviert und das Datenelement wird aus dem DRAM 12 geholt (ein etwas längeres Verfahren als das Herausholen aus einem Cache-Speicher). Wenn das Datenelement in einem oder mehreren der Cache-Speicher ist, und wenn einige aber nicht alle seiner Datenbytes gültig oder dirty sind, werden die DRAM-Steuerschaltung 22 und der DRAM 12 aktiviert und ihre Bytes den 3-Zustands-Einheiten 300 zuge führt. Jedes Byte, zu dem ein entsprechendes dirty oder gültiges Byte in einem der Cache-Speicher enthalten ist, wird jedoch von einer 3-Zustands-Einheit 300 gesperrt. Gleichzeitig lassen die 3-Zustands-Einheiten 304 und 306 nur Bytes passieren, die sowohl dirty als auch gültig sind. Auf diese Weise kann ein komplettes Datenelement durch einen Datenbus-Master gelesen werden.
  • Genauer gesagt, wenn ein Datenelement sowohl in einem Cache-Speicher als auch im DRAM 12 gespeichert ist, kann es sein, daß ausgewählte Bytes des Datenelementes im Cache-Speicher ungültig gemacht worden sind. Für jedes Byte jedes im Cache-Speicher gespeicherten Datenelementes wird eine Gültig/Ungültig-Marke vorgesehen. Die Marken für die jeweiligen Bytes werden gültig gesetzt, wenn das Datenelement erstmalig in den Cache-Speicher eingeschrieben wird. Danach werden ausgewählte Marken ungültig gesetzt, wenn die vorstehend angeführten Bedingungen vorliegen. Bei den meisten Anwendungen ist eine weitere notwendige Bedingung, daß ausgewählte Bytes von woanders als vom DRAM 12 auch in den Cache-Speicher eingeschrieben und als dirty bezeichnet worden sind. Wenn ein Datenbus-Master das Datenelement zu lesen versucht, werden zuerst die Cache-Speicher überprüft. Ist das Element in einem Cache-Speicher zu finden, enthält jedoch einige ungültige Bytes, dann wird ein Signal zur Aktivierung des DRAM 12 geliefert. Nur ein gültiges und dirty Byte vom Cache-Speicher wird mit Bytes vom DRAM 12 kombiniert. Die Gültig-Marke für ein dirty Byte wird benutzt zum Abtrennen der entsprechenden Leitung vom DRAM 12 zur Datenleitung 14, um die Übertragung des entsprechenden Datenbytes vom DRAM 12 zu sperren. Ähnlich wird eine Gültig-Marke für ein dirty Byte (oder eine invertierte Form von ihm) benutzt zur Verbindung einer entsprechenden Byte-Leitung vom Cache-Speicher zur Datenleitung 14.
  • Die zweite Methode ist auch wirksam, wenn das betreffende Datenelement über mehr als einen einzigen Cache-Speicher verteilt ist. Mit anderen Worten ist das Datenelement einem zweiten Cache-Speicher von einem anderen als dem DRAM 12 ge liefert und somit als dirty bezeichnet worden. Weiterhin sind ausgewählte Datenbytes im zweiten Cache-Speicher-Datenelement ungültig gemacht worden. Es ist jedoch wichtig, daß mindestens eines von jedem der entsprechenden Bytes in zwei Cache-Speichern ungültig ist, um Mehrdeutigkeiten auszuschließen. Auf eine Datenauslesung aus einem Datenbus-Master hin wird jeder Cache-Speicher wiederum nach dem speziellen Datenelement abgesucht. Wenn das Element in beiden Cache-Speichern enthalten ist und wenn beide Datenbytes irgendeines Paares entsprechender Datenbytes in den beiden Cache-Speichern als ungültig ermittelt wurden, wird ein Signal zur Aktivierung des DRAM 12 ausgegeben. Wie vorher werden gültige und dirty Bytes von einem Cache-Speicher geliefert, und die entsprechenden Bytes vom DRAM 12 werden gesperrt.
  • In einer zweiten Betriebsart reagiert die erfindungsgemäße Anordnung auf große Datentransfers direkt vom DRAM 12 zu einem Datenbus-Master. Beispielsweise arbeitet die Erfindung nach einem "Streaming"-Betrieb, wie er sich bei der IBM Micro Channel-Architektur findet. Hierbei arbeitet der DRAM 12 in einem schnellen Seiten-Betrieb und reagiert sequentiell auf Lesebefehle durch Übertragung von Datenelementen vom DRAM 12. Die Cache-Speicher werden nach jeden Datenelement abgesucht, jedoch zur gleichen Zeit, wo der DRAM 12 aktiviert ist und nicht ehe er aktiviert wird, wie im oben beschriebenen ersten Betrieb. Wenn jedoch ein dirty und gültiges Byte in einem der Cache-Speicher festgestellt wird, dann wird die entsprechende Datenbyteleitung vom DRAM 12 gesperrt und die dirty und gültigen Datenbytes werden vermischt.

Claims (10)

  1. Verfahren zum Lesen eines Mehrfachbyte-Datenelementes, welches sowohl in einem Cache-Speicher (16) und einem Systemspeicher (12) gespeichert ist, wobei ausgewählte Bytes des Datenelementes in dem Cache-Speicher ungültig gemacht worden sind, gekennzeichnet durch die Schritte: daß in dem Cache-Speicher (16) ein Gültig/Ungültig-Marker (flag) für jedes in ihm gespeicherte Datenelement abgespeichert wird, welches angibt, ob das Byte gültig oder ungültig ist, und daß auf einen ersten Ausleseabruf für dieses Datenelement hin gültige Bytes aus dem Cache-Speicher (16) mit den übrigen Bytes aus dem Systemspeicher (12) kombiniert werden ohne vorheriges Rückschreiben der gültigen Bytes in den Systemspeicher.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Marker für die jeweiligen Bytes des Datenelementes im Cache-Speicher (16) gültig gesetzt werden, wenn das Datenelement erstmalig in den Cache-Speicher eingeschrieben wird, und daß die Marker ungültig gesetzt werden, wenn das entsprechende Datenelement in den Systemspeicher (12) oder einen anderen Speicher (20) eingeschrieben wird.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß vor der Reaktion auf den Leseabruf ausgewählte Bytes des Datenelementes in den Cache-Speicher (16) von woanders als vom Systemspeicher (12) eingeschrieben werden und diese Bytes als dirty bezeichnet werden.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß nur gültige und dirty Bytes von dem Cache-Speicher mit Bytes vom Systemspeicher (12) kombiniert werden.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß vor der Kombinierung der Bytes der Abrufschritt folgende Schritte umfaßt: Prüfung des Cache-Speichers (16) nach dem Element und Erzeugung eines Signals zur Aktivierung des Systemspeichers (12), wenn im Cache ungültige Bytes festgestellt werden.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß Marker für gültige und dirty Bytes benutzt werden zur Blockierung der Übertragung entsprechender Datenbytes vom Systemspeicher (12).
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Cache-Speicher (16) und der Systemspeicher (12) mit einem Datenbus (14) zur Übertragung von Datenelementen verbunden sind, daß der Datenbus (14) dieselbe Anzahl von Datenbreite-Leitungen wie die Anzahl von Daten im Datenelement hat, daß die Datenbytes durch Abtrennen entsprechender Leitungen vom Systemspeicher (12) blockiert werden, und daß jedes dirty und gültige Byte vom Cache-Speicher (16) mit den übrigen Bytes vom Systemspeicher (12) durch Verbindung entsprechender Leitungen vom Cache-Speicher (16) kombiniert werden.
  8. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß der Systemspeicher (12) und der Cache-Speicher (16) mit einem Datenbus (14) zur Übertragung von Datenelementen verbunden sind, daß mit dem Datenbus (14) auch ein zweiter Cache-Speicher (20) verbunden ist, und daß die Reaktion auf den Leseabruf eine Überprüfung jedes Cache-Speichers (16,20) nach dem Datenelement umfaßt.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, durch die Schritte: vor der Reaktion auf den ersten Leseabruf wird das Datenelement an den zweiten Cache-Speicher (20) geliefert, wobei mindestens ein Byte des Datenelementes von einem anderen als dem Systemspeicher (12) in den zweiten Cache-Speicher (20) eingeschrieben wird und als dirty bezeichnet wird, daß ausgewählte Datenbytes des Datenelements im zweiten Cache-Speicher ungültig erklärt werden, so daß für jedes Byte in dem Datenelement mindestens eines der entsprechenden Bytes im ersten oder zweiten Cache-Speicher ungültig ist, und daß ein Signal zur Aktivierung des Systemspeichers (20) erzeugt wird, wenn entsprechende Datenbytes des Elementes im Cache-Speicher sowohl festgestellt werden als auch ungültig sind.
  10. Verfahren nach Anspruch 3, dadurch gekennzeichnet, durch die Schritte: vor der Reaktion auf den ersten Leseabruf wird sequentiell auf andere Leseabrufe reagiert durch Übertragung einer Mehrzahl von Datenelementen aus dem Systemspeicher (12), der Systemspeicher (12) wird aktiviert, während der Cache-Speicher als Reaktion auf den ersten Leseabruf nach dem Datenelement überprüft wird, wobei gültige Bytes aus dem Cache-Speicher (16) mit übrigen Bytes aus dem Systemspeicher (12) nur für solche Bytes im Datenelement des Cache-Speichers kombiniert werden, welche dirty und gültig sind.
DE69130626T 1990-08-06 1991-07-26 Verfahren zur Verwaltung einer Cache-Speicheranordnung Expired - Fee Related DE69130626T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/563,219 US5420994A (en) 1990-08-06 1990-08-06 Method for reading a multiple byte data element in a memory system with at least one cache and a main memory
US563219 1995-11-27

Publications (2)

Publication Number Publication Date
DE69130626D1 DE69130626D1 (de) 1999-01-28
DE69130626T2 true DE69130626T2 (de) 2006-02-23

Family

ID=24249595

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69130626T Expired - Fee Related DE69130626T2 (de) 1990-08-06 1991-07-26 Verfahren zur Verwaltung einer Cache-Speicheranordnung

Country Status (4)

Country Link
US (1) US5420994A (de)
EP (1) EP0470739B1 (de)
JP (1) JPH04253240A (de)
DE (1) DE69130626T2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
US5623633A (en) * 1993-07-27 1997-04-22 Dell Usa, L.P. Cache-based computer system employing a snoop control circuit with write-back suppression
TW228580B (en) * 1993-10-01 1994-08-21 Ibm Information processing system and method of operation
EP0661638A1 (de) * 1993-12-28 1995-07-05 International Business Machines Corporation Verfahren und Einrichtung zur Datenübertragung in einem Rechner
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
JPH0916470A (ja) 1995-07-03 1997-01-17 Mitsubishi Electric Corp 半導体記憶装置
US5712970A (en) * 1995-09-28 1998-01-27 Emc Corporation Method and apparatus for reliably storing data to be written to a peripheral device subsystem using plural controllers
US5781916A (en) * 1996-03-25 1998-07-14 Motorola, Inc. Cache control circuitry and method therefor
US5860113A (en) * 1996-06-03 1999-01-12 Opti Inc. System for using a dirty bit with a cache memory
US5900016A (en) * 1997-04-02 1999-05-04 Opti Inc. System for using a cache memory with a write-back architecture
US6895475B2 (en) * 2002-09-30 2005-05-17 Analog Devices, Inc. Prefetch buffer method and apparatus
US8291174B2 (en) * 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US7822911B2 (en) * 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US8055852B2 (en) 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4157586A (en) * 1977-05-05 1979-06-05 International Business Machines Corporation Technique for performing partial stores in store-thru memory configuration
US4323968A (en) * 1978-10-26 1982-04-06 International Business Machines Corporation Multilevel storage system having unitary control of data transfers
JPS58133696A (ja) * 1982-02-03 1983-08-09 Hitachi Ltd 記憶制御方式
US4680702A (en) * 1984-04-27 1987-07-14 Honeywell Information Systems Inc. Merge control apparatus for a store into cache of a data processing system
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5019971A (en) * 1987-04-13 1991-05-28 Prime Computer, Inc. High availability cache organization
US4926317A (en) * 1987-07-24 1990-05-15 Convex Computer Corporation Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses
EP0310446A3 (de) * 1987-10-02 1990-08-16 COMPUTER CONSOLES INCORPORATED (a Delaware corporation) Verwaltungsverfahren für einen Cachespeicher
JPH0254383A (ja) * 1988-08-18 1990-02-23 Mitsubishi Electric Corp アレイプロセッサ
US5185875A (en) * 1989-01-27 1993-02-09 Digital Equipment Corporation Method and apparatus for reducing memory read latency in a shared memory system with multiple processors
US5155824A (en) * 1989-05-15 1992-10-13 Motorola, Inc. System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address
US5091851A (en) * 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
US5073851A (en) * 1990-02-21 1991-12-17 Apple Computer, Inc. Apparatus and method for improved caching in a computer system

Also Published As

Publication number Publication date
EP0470739A1 (de) 1992-02-12
DE69130626D1 (de) 1999-01-28
US5420994A (en) 1995-05-30
EP0470739B1 (de) 1998-12-16
JPH04253240A (ja) 1992-09-09

Similar Documents

Publication Publication Date Title
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE3621321A1 (de) Cache-speicher- bzw. multiprozessor-system und betriebsverfahren
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE3151745A1 (de) Multitasking-datenverarbeitungsanlage
DE3102150A1 (de) "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage
DE2241257A1 (de) Datenverarbeitende anlage
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System
DE102006030879A1 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE69822364T2 (de) Aufspürung von heissen Stellen in einer Maschine mit nichtuniformen Speicherzugriffen
DE60003426T2 (de) Statusbits für cachespeicher
DE4234695A1 (de) Speichermanagementsystem und verfahren zur aufrechterhaltung der cache-kohaerenz zwischen einem daten-cache und einem segmentdeskriptor-cache
DE102021108478A1 (de) System und Verfahren zur Cache-Verzeichnis-TCAM-Fehlererkennung und - Korrektur
WO2003048943A2 (de) Speicher für die zentraleinheit einer rechenanlage, rechenanlage und verfahren zum synchronisieren eines speichers mit dem hauptspeicher einer rechenanlage
DE2750126A1 (de) Datenverarbeitungssystem mit einem zwischenpufferspeicher
DE10249433A1 (de) Präemptive Räumung veralteter Einträge in einem Computer-Cache durch die Verwendung von Alters-Bits

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: V. BEZOLD & SOZIEN, 80799 MUENCHEN

8320 Willingness to grant licences declared (paragraph 23)
8339 Ceased/non-payment of the annual fee