DE69224084T2 - Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür - Google Patents

Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür

Info

Publication number
DE69224084T2
DE69224084T2 DE69224084T DE69224084T DE69224084T2 DE 69224084 T2 DE69224084 T2 DE 69224084T2 DE 69224084 T DE69224084 T DE 69224084T DE 69224084 T DE69224084 T DE 69224084T DE 69224084 T2 DE69224084 T2 DE 69224084T2
Authority
DE
Germany
Prior art keywords
data
cache
buffer
storing
references
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
DE69224084T
Other languages
English (en)
Other versions
DE69224084D1 (de
Inventor
Chi Hung Chi
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69224084D1 publication Critical patent/DE69224084D1/de
Application granted granted Critical
Publication of DE69224084T2 publication Critical patent/DE69224084T2/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die Erfindung bezieht sich auf elektronische Rechneranordnungen. Insbesondere bezieht sich die Erfindung auf eine Rechnerarchitektur, die einen effizienten Austausch von Daten zwischen einem relativ schnellen Prozessor und einem relativ langsamen Speicher erlaubt.
  • HINTERGRUND DER ERFINDUNG
  • Rasche Fortschritte in der Technologie der integrierten Schaltungen und auf dem Gebiet der Rechnerarchitektur haben zu einer wachsenden "Speicher-Referenz- Verzögerungslücke" zwischen relativ schnellen Verarbeitungseinheiten und relativ langsamen Speichern geführt. Hochleistungs-Prozessor-Chips mit einem maximalen Durchsatz von über 100 MIPS sind im Handel erhältliche Produkte. Multiprozessor-Systeme, die diese Prozessor-Chips als Verarbeitungseinheiten nutzen, können ebenfalls implementiert werden. Das Speichersystem aber, das zur Unterstützung dieser Hochleistungssysteme benötigt wird, damit diese mit Spitzengeschwindigkeit laufen können, ist entweder zu komplex oder zu aufwendig in der Herstellung. Der resultierende Leistungsengpaß von vielen derzeitigen Hochleistungs-Rechneranordnungen ist daher nicht die Geschwindigkeit ihrer Verarbeitungseinheiten, sondern die Effizienz des Speichersystems.
  • Um das Problem der immer größer werdenden Speicher-Referenz-Verzögerungslücke zwischen den schnellen Verarbeitungseinheiten und dem langsamen Speicher zu überwinden, lehrt der Stand der Technik die Verwendung von Cachespeicher. Cachespeicher ist ein kleiner schneller Pufferspeicher zwischen der zentralen Verarbeitungseinheit und dem Hauptspeicher einer Rechneranordnung. Sein hauptsächlicher Zweck besteht darin, schnelle Daten/Befehls-Zugriffe zu erhalten, ohne den gesamten Primärspeicher mit Hochgeschwindigkeitstechnologie bauen zu müssen und die hiermit verbundenen Kosten aufzuwenden. Dies wird erreicht, indem Daten/Befehle, auf die voraussichtlich in naher Zukunft verwiesen wird, im Cachespeicher gehalten werden. Bei derzeitigen Cache-Entwürfen erhalten die Befehlscaches immer eine höhere Priorität für die Implementierung und Optimierung als Datencaches. Wenn nur eine begrenzte Chipfläche zur Verfügung steht, wird sie benutzt, um Befehlseache zu implementieren. Sehr oft wird der Datencache erst auf dem Prozessor-Chip angeordnet, wenn der Befehlscache implementiert wurde und noch genügend Platz übriggeblieben ist. Dies ist auf das derzeitige Verständnis des Befehlsreferenzverhaltens und des Datenreferenzverhaltens zurückzuführen sowie auf die Genauigkeit der aktuellen Cache-Modelle für Befehle und für Daten.
  • Da Befehlsreferenzen eine in hohem Maße sequentielle Referenzeigen schaft besitzen, lehrt der Stand der Technik ein als "Cache Prefetching" (Cache-Vorabrufen) bezeichnetes Verfahren, bei dem Referenzen in den Cachespeicher gebracht werden, bevor sie wirklich benötigt werden. Wenn das Vorabrufen korrekt ist, können sich Speicher-Referenz-Verzögerungszeiten (teilweise oder vollständig) mit der Programmausführung überlappen. Für nicht-sequentielle Befehlsreferenzen aufgrund von Verzweigungs- oder Sprunganweisungen lehrt der Stand der Technik ein als "branch target prediction" (Sprungzielvorhersage) bekanntes Verfahren, um vorherzusagen, welchen Weg die Programmausführung einschlagen wird. Zusammen mit dem Cache- Vorabruf-Verfahren kann die Anzahl der Cache-Fehlschläge reduziert werden, wenn die Vorhersage korrekt ist. Außerdem kann "Sprungziel-Puffer oder -Cache" auch benutzt werden, um das Cache-Volltrefferverhältnis zu verbessern, indem Sprungziele in einen Puffer/Cache gebracht werden und Nicht-Sprung-Referenzen in einen anderen Puffer/- Cache. Demzufolge kann die Anzahl der Cache-Fehlschläge, die für die Verarbeitungseinheit sichtbar sind, reduziert werden, und man erhält eine gute Befehlscache-Leistung. Der hier benutzte Ausdruck "Cache-Volltrefferverhältnis" ist definiert als die Wahrscheinlichkeit, daß ein durch eine Prozessoreinheit angeforderter Dateneintrag im Cachespeicher gefunden wird, und die "Cache-Fehlschlag-Strafzeit" ist definiert als die Zeit, die die Prozessoreinheit warten muß, bis der angeforderte Dateneintrag eintrifft, wenn ein Cache-Fehlschlag auftritt.
  • Seit der Einführung von Cache in den sechziger Jahren wurden Cache Partitionierung und Mehrfachpuffer-Cache-Verfahren oft angewendet, um das Cache- Volltrefferverhältnis zu verbessern und den Datenverkehr auf dem Bus zu reduzieren. Einige der am häufigsten angewendeten Cache-Partitionierungsverfahren nach dem Stand der Technik sind:
  • DATENCACHE VERSUS BEFEHLSCACHE - die Cache-Speicherkapazität wird in zwei sich gegenseitig ausschließende Partitionen unterteilt, eine zur Speicherung von Befehlen und eine zur Speicherung von Daten.
  • CACHE-PARTITION FÜR ECHTZEITSYSTEME - die Cache-Speicherkapazität wird in mehrere Partitionen unterteilt, von denen jedesmal, wenn eine Ausgabe ausgeführt wird, nur eine zugewiesen und durch die Aufgabe genutzt wird.
  • HINZUFÜGEN VON SPRUNGZIEL-CACHE - ein separater Puffer/- Cache, der nur zum Speichern von Sprungziel-Befehlen dient, wird zum vorhandenen Cache hinzugefügt.
  • HINZUFÜGEN VON VORABRUF-PUFFER - ein separater Puffer, der nur zum Speichern von sequentiell vorabgerufenen Befehlen dient, wird zum vorhandenen Cache hinzugefügt.
  • HINZUFÜGEN VON OPFER-CACHE ODER FEHLSCHLAG-CACHE - ein separater Puffer/Cache, der zur vorübergehenden Speicherung von Daten dient, die gerade vom Cache ersetzt wurden, wird zwischen dem vorhandenen Cache und dem Hauptspeicher eingefügt.
  • Nach dem Stand der Technik wird das Datenreferenzverhalten im allgemeinen als "zufällig" betrachtet und es gibt kein genaues Modell für Dateneache-Entwürfe nach dem Stand der Technik. Daher können diejenigen Cache-Verfahren, die die Leistung des Befehlscache verbessern können, ineffizient werden, wenn sie auf Datencache angewendet werden. Alle diese Verfahren verlieren bei Datencache-Entwürfen ihre Effizienz. Das erste Verfahren (Datencache versus Befehlscache) versucht, das Übergreifen der Befehlsreferenzen auf Datenreferenzen in Cachespeichern zu verhindern, während das zweite Verfahren (Cache-Partitionierung für Echtzeitsysteme) versucht, das Übergreifen von Befehls- und Datenreferenzen von einer Aufgabe auf die Befehls- und Datenreferenzen einer anderen Aufgabe zu verhindern. Das Problem des unvorhersagbaren Datenreferenzverhaltens bleibt jedoch bestehen. Das dritte Verfahren (Hinzufügen eines Sprungziel-Cache) kann in Datencaches nicht angewendet werden, weil es keine Sprungziele in Datenreferenzen gibt. Das vierte Verfahren (Hinzufügen von Vorabruf-Puffer) ist nicht sehr nützlich für die Verbesserung der Datencache-Leistung, weil das Referenzverhalten der Daten mehr oder weniger zufällig ist und nicht sequentiell. Das sequentielle Vorabrufen in Datenreferenzen verschlechtert oft die Datencache-Leistung statt sie zu verbessern. Das letzte Verfahren (Hinzufügen von Opfer- Cache oder Fehlschlag-Cache) kann die Datencache-Leistung leicht verbessern, indem mehr Assoziativität zum Cache hinzugefügt wird. Hierdurch wird jedoch das Problem des unvorhersagbaren Datenreferenzverhaltens nicht gelöst.
  • Eine weitere Beschreibung der Organisation und Konstruktion von Cache- Speicherpuffern und -systemen ist in "High-Speed Memory Systems", Pohm und Agrawal, Reston Publishing Company (1983), und in "Cache Memories", von A.J. Smith, Computing Surveys, Band 14, Nummer 3, September 1982, S.473 - 530 zu finden.
  • Cache-Vorabruf-Verfahren sind für Datencaches relativ weniger effizient als für Befehlscaches. Manchmal setzen sie die Rechnerleistung sogar herab. Dies ist vor allem auf Problem der Cache-Verunreinigung und des Bus-Konkurrenzbetriebs zurückzuführen. Der Ausdruck "Cache-Verunreinigung" bezieht sich hier auf die Situation, in der Daten oder Befehle in den Cache geholt werden, aber auf die in der Zeit, während der sie sich im Cache befinden, nicht verwiesen wird. "Bus-Konkurrenzbetrieb" ist eine Situation, bei der es mehr Anforderungen gibt, die versuchen, den Datenbus zu benutzen, als der Bus gleichzeitig bedienen kann. Im Vergleich zu dem Verhalten der Befehlsreferenzen, die normalerweise von sequentieller Beschaffenheit sind, ist das Gesamtverhalten der Datenreferenzen mehr oder weniger zufällig. Da nach dem Stand der Technik das Referenzverhalten der Daten viel weniger vorhersagbar war als das Referenzverhalten von Befehlen, tritt die Cache-Verunreinigung bei Datencache- Vorabruf viel schwerwiegender auf als bei Befehlscache-Vorabruf. Es wird nicht nur Cache-Speicherkapazität vergeudet, um vorabgerufene Daten, auf die nicht verwiesen wird, zu speichern, sondern auch Daten im Cache, auf die in Kürze verwiesen wird, könnten durch die Daten ersetzt werden, auf die nicht verwiesen wird. Auch das Abrufen von Daten, auf die nicht verwiesen wird, trägt zum Busverkehr bei. In Systemen, bei denen die Bus-Bandbreite eine begrenzte Ressource darstellt, kann es zu einem Bus- Konkurrenzbetrieb kommen und die Rechnerleistung wird weiter verschlechtert. Wenn der Bus mit dem Vorabrufen von Daten beschäftigt ist, auf die nicht verwiesen wird, können andere Anforderungen zur Nutzung des Busses (z.B. Abrufen von Befehlen) verzögert werden. Die ist sehr häufig bei Hochleistungs-Prozessor-Chips der Fall, wo die Verarbeitungsgeschwindigkeit sehr hoch sein kann, aber die Bus-Bandbreite durch physikalische Zwänge begrenzt ist, zum Beispiel durch die Gesamtzahl der Stifte an einem Chip. Das Verfahren der Sprungvorhersage und die Verwendung von Sprungziel- Puffer/Cache ist nicht auf Datencache anwendbar. Bei Datencache-Entwürfen nach dem Stand der Technik werden die Datenreferenzen nicht entsprechend ihrem sequentiellen Referenzverhalten in verschiedene Typen untergeteilt. Die Unterscheidung zwischen Sprung-Referenzen und sequentiellen Referenzen bei Befehisreferenzen tritt bei Datenreferenzen nicht auf. Die Leistung der derzeitigen Datencache-Entwürfe ist daher wesentlich geringer als die Leistung von Befehlscache-Entwürfen.
  • In der Patentschrift EP-A-0 250 702 wird ein System beschrieben, in dem die Befehle, die Daten in einem Cache anfordern, einen Cache-Steuerungs-Spezifizierer enthalten, der den Cache über den Typ der Daten informiert, auf die durch die genannten Befehle verwiesen wird. Der Cache kann daher dasjenige Ersatz-Schema wählen, das am besten für den identifizierten Datentyp geeignet ist.
  • Die Erfindung hat zur Aufgabe, die Effizienz von Datencache zu verbessern.
  • Eine Ausführungsform der Erfindung erfüllt die Aufgabe, weil sie eine Rechneranordnung schafft, die folgendes enthält:
  • eine Verarbeitungseinheit;
  • einen Hauptspeicher zum Speichern der durch die Verarbeitungseinheit benutzten Daten;
  • einen Datencache, der mit der Hauptspeichereinheit und der Verarbeitungseinheit verbunden ist, um Daten zu speichern und/oder vom Hauptspeicher vorabzurufen, auf die durch die Befehle der Verarbeitungseinheit verwiesen wird;
  • wobei der Datencache folgendes umfaßt:
  • Mittel, die Datenanforderungen von der Verarbeitungseinheit analysieren und die Datenreferenzen in den genannten Anforderungen auf der Grundlage von vorhergesagten statistischen Assoziationen der Gebundenheiten der genannten Datenreferenzen in eine Vielzahl von unterschiedlichen Gruppen einteilen; mindestens zwei Datenpuffer; und
  • Mittel, die jede Datenreferenz einem der genannten Puffer zuordnen, um die Cache-Leistung auf der Basis von vorhergesagten statistischen Assoziationen zu optimieren. Dank der Mittel, die die Anforderungen analysieren, werden Datenobjekte, die von Befehlen mit unterschiedlicher Referenz-Gebundenheit stammen (zum Beispiel Befehle, die auf Stapeldaten verweisen oder auf globale Variable, oder Array-Elemente oder direkt adressierte Daten), entsprechend der Referenz-Gebundenheit, zum Beispiel zeitliche Gebundenheit oder räumliche Gebundenheit, in verschiedene Datenpuffer gebracht. Diese Referenz-Gebundenheit wird dynamisch, also wie die Datenobjekte angefordert werden, durch die Mittel vorhergesagt, welche die Datenanforderung analysieren; ein einzelnes Objekt kann also, wenn von verschiedenen Teilen des Programms darauf zugegriffen wird, in verschiedene Puffer gebracht werden, je nachdem, wie seine Verwendung vorhergesagt wurde. Das Halten der Daten in den Datenpuffern, ihr Umfang und Vorabrufstrategien können für jeden Datenpuffer separat optimiert werden, und das unvorhersagbare Verhalten der einen Art von Referenz braucht zum Beispiel nicht andere Datenpuffer zu verunreinigen oder dazu zu führen, daß nützliche Datenobjekte daraus entfernt werden.
  • In einer Ausführungsform der Erfindung umfassen die genannten Gruppen auf der Basis von statistischen Assoziationen eine S-Referenz-Datengruppe, für die eine starke zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird, und auch eine P-Referenz-Datengruppe, für die eine relativ schwache zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird und eine relativ starke räumliche Gebundenheit der Referenzeigenschaften, wobei es unter den Datenpuffern einen S-Puffer zum Speichern von S-Referenzdaten und einen P-Puffer zum Speichern und Vorabrufen von P- Referenzdaten gibt.
  • Die Datenreferenzen werden entsprechend des Adressiermodus und der bei der Adressenberechnung benutzten Register in zwei Typen mit den Bezeichnungen S_Referenzen und P_Referenzen aufgeteilt. Datenreferenzen vom Hauptspeicher werden in einem Cache gespeichert, der zwei Puffer umfaßt, einen S_Puffer und einen P_ Puffer, von denen jeder für die Behandlung eines Datenreferenztyps optimiert ist und benutzt wird. Der S_Puffer ist für S_Referenzen optimiert und der P_Puffer für P_ Referenzen. Jeder dieser beiden Referenztypen hat seine eigenen Eigenschaften, die er nicht mit dem anderen Referenztyp teilt. Die Optimierung wird erreicht, indem im Fall von P_Referenzen für das Vorabrufen von Daten gesorgt wird, die an diejenigen Daten angrenzen sind, auf die verwiesen wird, jedoch nicht im Fall von S_Referenzen. Es können auch andere Typen von Haltestrategien, wie sie für Befehlscache beschrieben werden, für den S_Puffer oder den P_Puffer verwendet werden. Auf diese Weise erhält man mit dem Mehrfachpuffer-Datencache eine wesentliche Verbesserung der Cache- Leistung.
  • Bei derzeitigen Cache-Entwürfen wird das Programm-Referenzverhalten oft mit der Gebundenheit der Referenz beschrieben. Es gibt zwei Arten von Gebundenheitsreferenzen, "zeitliche Gebundenheit" (Zeitgebundenheit) und "räumliche Gebundenheit" (Ortsgebundenheit). Während eines kurzen Zeitraums sind durch ein Referenzprogramm getätigte Speicherreferenzen nicht gleichförmig über den Adreßraum verteilt. Stattdessen treten Referenzen oft in kleinen Clustern - dem arbeitenden Referenzsatz -auf. Der erste Gebundenheitstyp, die zeitliche Gebundenheit, bezieht sich auf die Tatsache, daß zur Zeit benutzte Informationen wahrscheinlich in naher Zukunft erneut benutzt werden. Dies ist das Grundprinzip für die meisten Cachespeicher nach dem Stand der Technik: Die meisten Programm versuchen, Daten oder Codes während der Programmausführung mehrmals zu benutzen. Diese Art von Referenzverhalten ist in Programmschleifen zu finden, in denen sowohl Daten- als auch Befehlsreferenzen voraussichtlich wiederholt für jede Schleife oder in Subroutinen benutzt werden, die während der Programmausführung mehrmals aufgerufen werden.
  • Der Adreßraum ist normalerweise in eine Anzahl von einzelnen, aneinander angrenzenden Segmenten dieses Raums gruppiert, und es wird nur auf wenige Segmente gleichzeitig wiederholt verwiesen. Der zweite Gebundenheitstyp, die räumliche Gebundenheit, legt nahe, daß die Orte der Referenzen eines Programs in naher Zukunft wahrscheinlich in der Nähe der aktuellen Orte der Referenz liegen werden. Diese Art von Referenzverhalten ist in wissenschaftlichen Programmen üblich, wo Befehle meist in sequentieller Reihenfolge ausgeführt werden und es gebräuchlich ist, auf Sequenzen von Array-Elementen zuzugreifen, die typischerweise im Speicher aneinander angrenzen.
  • Mit diesen Gebundenheiten von Zeit und Raum versucht die vorliegende Erfindung, Informationen, die der Prozessor zur Zeit bearbeitet (Zeitgebundenheit), zusammen mit Informationen in der Nähe des aktuellen Orts der Referenzen (Ortsgebundenheit), im Cache und leicht verfügbar zu halten. Es wird jedoch allgemein erkannt, daß dieses Entwurfsprinzip gut für Befehlscaches funktioniert, aber nicht für Datencaches. Dies ist auf das sehr unterschiedliche Referenzverhalten bei Befehlen und Daten zurückzuführen. Während das Befehlsreferenzverahlten eine in hohem Maße sequentielle Referenzeigenschaft besitzt und gut vorhersagbar ist, lehrt der Stand der Technik, daß das Datenreferenzverhalten zufällig ist und viel weniger vorhersagbar als Befehlsreferenzen. Da die meisten aktuellen Cache-Modelle in Management-Strukturen vor allem für Befehlscache entworfen wurden, ist es nicht erstaunlich, daß diese Strukturen und Steuerungsmechanismen viel weniger effizient sind, wenn sie auf Dateneaches angewendet werden. Sorgfältige Untersuchungen zeigen jedoch, daß das Datenreferenzverhalten in Wirklichkeit nicht so zufällig ist, wie es den Anschein hat. Es handelt sich hier vielmehr um eine Kombination von S_Referenzen und P_Referenzen, und jeder dieser beiden Referenztypen ist in hohem Maße vorhersagbar. Der erste Typ von Datenreferenzen, die P_Referenz, ist hauptsächlich auf Zugriffe von Daten-Array-Elementen mit Hilfe von Zeigern zurückzuführen. Sie hat stark sequentielle Referenzeigenschaften, die der sequentiellen Referenzeigenschaft von Befehlen ähnlich sind. Die nächste Referenz dieses Typs von Daten ist daher in hohem Maße vorhersagbar. Das bedeutet, sie verfügt über eine starke vorwärtsgerichtete (oder vielleicht rückwärtsgerichtete) räumliche Referenz-Gebundenheit. Der aktive Bereich der P_Referenzen ist jedoch normalerweise sehr kurz, üblicherweise wenige Befehle lang, und seine Referenzfrequenz ist sehr gering. Das bedeutet, daß die zeitliche Gebundenheit von P_Referenzen sehr schwach ist.
  • Der zweite Typ von Datenreferenzen, die S_Referenz, ist hauptsächlich auf Zugriffe von Stapelvariablen und globalen Skalar-Variablen zurückzuführen. Auf diesen Referenztyp wird üblicherweise während seines aktiven Bereichs sehr oft verwiesen. Bei diesem Referenztyp liegt also eine stark zeitliche Gebundenheit der Referenzeigenschaft vor. Die räumliche Gebundenheit der S_Referenzen ist jedoch sehr schwach, weil das Zugriffsmuster nahezu zufällig ist.
  • Durch Prüfung des Adressiermodus und der bei der Adressenberechnung während der Befehlsdecodierung benutzten Register können Datenreferenzen in Laufzeit mit hoher Genauigkeit als S_Referenzen oder P_Referenzen angenommen werden. Dies liegt daran, daß nur Referenzen mit indirektem Adressiermodus P_Referenzen sein können und einige Register oft für spezielle Zwecke vorgesehen sind. Referenzen zum Beispiel, die einen direkten Adressiermodus nutzen, sind wahrscheinlich S_Referenzen; indirekte Referenzen, die das Stapelzeigerregister nutzen, sind wahrscheinlich lokale Stapelvariablen.
  • Durch Aufteilen der Datenreferenzen in S_Referenzen und P_Referenzen kann die Gebundenheit von jedem dieser beiden Datenreferenztypen genauer beschrieben werden. Auf der Grundlage dieses Datenreferenzmodells enthält eine erfindungsgemäße Rechneranordnung einen Datencache mit einem S_Puffer, der für das Vorabrufen und Speichern von S_Referenzdaten optimiert ist, und mit einem P_Puffer, der für das Vorabrufen und Speichern von P_Referenzdaten optimiert ist. Der Datencache umfaßt eine Steuereinheit, die den Adressiermodus und die bei der Adressenberechnung während der Befehlsdecodierung benutzten Register analysiert, um zu ermitteln, ob die Referenzdaten eine S_Referenz oder eine P_Referenz sein sollen.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung wird im folgenden unter Bezugnahme auf eine Figur beschrieben, die eine erfindungsgemäße Rechneranordnung mit einem Datencache zeigt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Die Figur zeigt einen erfindungsgemäßen Mehrfachpuffer-Datencache. Der Cache steuert das Abrufen der Daten, auf die durch eine Verarbeitungseinheit 10 von einem Hauptspeicher 20 verwiesen wird. Wie nach dem Stand der Technik üblich, umfaßt die Verarbeitungseinheit eine Decodereinheit 30, die die Befehle decodiert, um unter anderem den Typ der darin enthaltenen Datenreferenzen und die für die indirekte Datenadressierung benutzten Register zu bestimmen.
  • Ein Mehrfachpuffer-Datencache 100 ist zwischen den Hauptspeicher 20 und die Verarbeitungseinheit 10 geschaltet. Er besteht aus einem S_Puffer 40, einem P_Puffer 50 und einer Steuereinheit 60. Die Steuereinheit 60 regelt den Datenfluß, so daß der P_Puffer und der S_Puffer jeweils eigene einzigartige Merkmale und Steuerschemata haben, um einen Datenreferenztyp zu optimieren: der S_Puffer dient zur Behandlung der S_Referenzen und der P_Puffer zur Behandlung der P_Referenzen. Die Puffer sind ansonsten nach dem Stand der Technik konstruiert und verbunden.
  • Wenn eine Datenreferenz in einem Befehl gefunden wird, werden der Adressiermodus und die für die Adressenberechnung benutzten Register durch die Decodereinheit 30 bestimmt und an die Steuereinheit 60 geschickt, die bestimmt, ob es sich um eine S_Referenz oder eine P_Referenz handelt. Dies geschieht in Übereinstimmung mit vorgegebenen Regeln, die in die Logik der Steuereinheit eingebaut sind. Eine Referenz zum Beispiel, die mit dem indirekten Adressiermodus arbeitet und das Stapelzeigerregister bei ihrer Adressenberechnung nutzt, wird als S_Referenz betrachtet. Wenn eine Datenreferenz erfolgt, werden beide Puffer geprüft, um festzustellen, ob es einen Cache-Fehlschlag oder einen Cache-Volltreffer gibt.
  • Der S_Puffer wird hauptsächlich benutzt, um S_Referenzen zu speichern. Da eine S_Referenz keine starke sequentielle Referenzpriorität besitzt, wird kein sequentielles Vorabrufen genutzt, weil die schwerwiegende Cache-Verunreinigung, die der Daten-Vorabruf mit sich bringt, zu einer Verschlechterung der Leistung führen könnte statt zu einer Verbesserung. Dies trifft vor allem zu, wenn der S_Puffer klein ist. Wenn ein S_Puffer-Cache-Volltreffer für eine S_Referenz vorliegt, gibt es keine Änderung im Inhalt des Cache. Wenn ein S_Puffer-Cache-Volltreffer für eine P_Referenz vorliegt, gibt es keine Änderung im Inhalt des Cache. Wenn ein Cache-Fehlschlag für eine S_ Referenz vorliegt, wird der Cache-Block, der diesem Fehlschlag entspricht, vom Hauptspeicher in den S_Puffer geholt.
  • Der P_Puffer dient hauptsächlich zum Speichern von P_Referenzen. Da P_Referenzen in hohem Maße über eine sequentielle Referenzeigenschaft verfügen, wird im P_Puffer das sequentielle Vorabrufen genutzt. Wenn ein P_Puffer-Cache-Volltreffer für eine P_Referenz vorliegt, gibt es keine Änderung im Inhalt des Cache. Wenn ein P_Puffer-Volltreffer für eine S_Referenz vorliegt, wird der Cache-Block, der dieser Referenz entspricht, vom P_Puffer in den S_Puffer übertragen. Nach der Blockübertragung wird der Cache-Block im P_Puffer, der die aktuelle S_Referenz enthält, als leer gekennzeichnet. Wenn ein Cache-Fehlschlag für eine P_Referenz vorliegt, wird der Cache-Block, der diesem Fehlschlag entspricht, vom Hauptspeicher in den P_Puffer geholt. Alle vorabgerufenen Daten werden in den P_Puffer gebracht. Es kann ein Vorabrufschema wie "immer vorabrufen" verwendet werden.
  • Obwohl die Erfindung in bezug auf einen Zwei-Puffer-Cache beschrieben wurde, ist ihr Umfang nicht darauf begrenzt. Es können zusätzliche Cache-Puffer neben dem P_Puffer und dem S_Puffer vorgesehen werden, die über spezielle Datenabruf- und Speichereigenschaften verfügen, welche für andere identifizierbare Datenreferenztypen mit einzigartigen Eigenschaften optimiert sind.

Claims (11)

1. Rechneranordnung, die folgendes enthält: eine Verarbeitungseinheit;
einen Hauptspeicher zum Speichern der durch die Verarbeitungseinheit benutzten Daten;
einen Datencache, der mit der Hauptspeichereinheit und der Verarbeitungseinheit verbunden ist, um Daten zu speichern und/oder vom Hauptspeicher vorabzurufen, auf die durch die Befehle der Verarbeitungseinheit verwiesen wird;
wobei der Datencache folgendes umfaßt:
Mittel, die Datenanforderungen von der Verarbeitungseinheit analysieren und die Datenreferenzen in den genannten Anforderungen auf der Grundlage von vorhergesagten statistischen Assoziationen der Gebundenheiten der genannten Datenreferenzen in eine Vielzahl von unterschiedlichen Gruppen einteilen; mindestens zwei Datenpuffer; und
Mittel, die jede Datenreferenz einem der genannten Puffer zuordnen, um die Cache-Leistung auf der Basis von vorhergesagten statistischen Assoziationen zu optimieren.
2. Rechneranordnung nach Anspruch 1, wobei die genannten Gruppen auf der Basis von statistischen Assoziationen eine S-Referenz-Datengruppe enthalten, für die eine starke zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird, und auch eine P-Referenz-Datengruppe, für die eine relativ schwache zeitliche Gebundenheit der Referenzeigenschaften vorhergesagt wird und eine relativ starke räumliche Gebundenheit der Referenzeigenschaften, wobei es unter den Datenpuffern einen S-Puffer zum Speichern von S-Referenzdaten und einen P-Puffer zum Speichern und Vorabrufen von P-Referenzdaten gibt.
3. Anordnung nach Anspruch 2, wobei die Mittel, die die Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen für Stapeldaten identifizieren und diese identifizierten Daten über den S_Puffer speichern.
4. Anordnung nach Anspruch 2 oder 3, wobei die Mittel, die die Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen für globale Variablendaten identifizieren und diese identifizierten Daten über den S_Puffer speichern.
5. Anordnung nach Anspruch 2, 3 oder 4, wobei die Mittel, die die Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen für Array- Element-Daten identifizieren und die genannten identifizierten Daten über den P_Puffer vorabrufen und/oder speichern.
6. Anordnung nach Anspruch 2, 3, 4 oder 5, wobei die Mittel, die die Datenanforderungen analysieren, Mittel umfassen, welche Datenanforderungen identifizieren, die den direkten Adressiermodus nutzen, und die genannten identifizierten Daten über den S_Puffer speichern.
7. Anordnung nach Anspruch 2, 3, 4, 5 oder 6, wobei die Verarbeitungseinheit ein Stapelzeigerregister enthält und die Mittel, die die Datenanforderungen identifizieren, Mittel umfassen, welche Datenanforderungen identifizieren, die einen indirekten Adressiermodus auf der Basis des Stapelregisters benutzen, und die genannten identifizierten Daten über den S_Puffer speichern.
8. Anordnung nach einem der Ansprüche 1 bis 7, wobei die Mittel, die die Datenanforderungen analysieren, Mittel umfassen, die eine Prozessoranweisung, welche die Daten anfordert, decodieren.
9. Anordnung nach einem der Ansprüche 2 bis 8, die weiterhin Cache-Steuermittel umfaßt, die bestimmen, ob sich die angeforderten Daten im Cache befinden, und bei einem Cache-Fehlschlag oder bei S_Referenzdaten einen Cache-Block mit den Daten, die dem Fehlschlag entsprechen, aus dem Hauptspeicher in den S_Puffer holen.
10. Anordnung nach einem der Ansprüche 2 bis 9, die weiterhin Cache-Steuermittel umfaßt, die bestimmen, ob sich die angeforderten Daten im P_Puffer befinden, und bei einem P Puffer-Cache-Volltreffer für S_Referenzdaten zuerst den Cache-Block mit den Daten, die dem Volltreffer entsprechen, vom P_Puffer in den S_Puffer übertragen und dann den Cache-Block im P_Puffer als frei kennzeichnen.
11. Verfahren zur Cache-Speicherung von Daten in einer Rechneranordnung, die eine Verarbeitungseinheit zur Ausführung von Befehlen und einen Speicher zum Speichern von Daten enthält, wobei das Verfahren folgende Schritte umfaßt: Analysieren der Befehle von der Verarbeitungseinheit und Einteilen der in den genannten Befehlen enthaltenden Datenreferenzen auf der Grundlage von vorhergesagten stastistischen Assoziationen der Gebundenheiten der genannten Datenreferenzen in eine Vielzahl von unterschiedlichen Gruppen;
Zuordnen jeder Datenreferenz zu einem aus der Vielzahl der Puffer auf der Basis der vorhergesagten statistischen Assoziationen; und
Speichern und/oder Vorabrufen von Daten aus dem Speicher über die zugeordneten Puffer mit Hilfe von verschiedenen Speicher- und/oder Vorabruf-Algorithmen für jeden Puffer, wobei die genannten Algorithmen so gewählt werden, daß die Daten- Cachespeicherung für Daten optimiert wird, die die statistischen Assoziationen der Gebundenheit der dem zugehörigen Puffer zugeordneten Datengruppe besitzen.
DE69224084T 1991-01-15 1992-01-06 Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür Expired - Fee Related DE69224084T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US64123691A 1991-01-15 1991-01-15

Publications (2)

Publication Number Publication Date
DE69224084D1 DE69224084D1 (de) 1998-02-26
DE69224084T2 true DE69224084T2 (de) 1998-07-23

Family

ID=24571535

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69224084T Expired - Fee Related DE69224084T2 (de) 1991-01-15 1992-01-06 Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür

Country Status (4)

Country Link
US (1) US5822757A (de)
EP (1) EP0496439B1 (de)
JP (1) JP3425158B2 (de)
DE (1) DE69224084T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19943938B4 (de) * 1998-10-26 2014-05-22 Infineon Technologies Ag Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06180669A (ja) * 1992-12-14 1994-06-28 Nec Niigata Ltd キャッシュシステム
US5848432A (en) 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
JPH0895857A (ja) * 1994-09-29 1996-04-12 Shikoku Nippon Denki Software Kk 入出力キャッシュ
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
DE19713178A1 (de) * 1997-03-27 1998-10-01 Siemens Ag Schaltungsanordnung mit einem Prozessor und einem Datenspeicher
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6122708A (en) * 1997-08-15 2000-09-19 Hewlett-Packard Company Data cache for use with streaming data
US6393526B1 (en) 1997-10-28 2002-05-21 Cache Plan, Inc. Shared cache parsing and pre-fetch
US6151662A (en) * 1997-12-02 2000-11-21 Advanced Micro Devices, Inc. Data transaction typing for improved caching and prefetching characteristics
US6202129B1 (en) * 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
WO2000031642A1 (de) * 1998-11-25 2000-06-02 Fujitsu Siemens Computers Gmbh Cache-speichereinrichtung
US6378042B1 (en) * 1999-08-11 2002-04-23 Fast-Chip, Inc. Caching associative memory
WO2001038970A2 (en) * 1999-11-22 2001-05-31 Ericsson Inc Buffer memories, methods and systems for buffering having seperate buffer memories for each of a plurality of tasks
JP2001273137A (ja) * 2000-03-28 2001-10-05 Toshiba Corp マイクロプロセッサ
US6578111B1 (en) * 2000-09-29 2003-06-10 Sun Microsystems, Inc. Cache memory system and method for managing streaming-data
US6668307B1 (en) * 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
US6598124B1 (en) * 2000-09-29 2003-07-22 Sun Microsystems, Inc. System and method for identifying streaming-data
JP4116413B2 (ja) * 2002-12-11 2008-07-09 株式会社日立製作所 プリフェッチアプライアンスサーバ
US7284014B2 (en) 2003-04-07 2007-10-16 Hitachi, Ltd. Pre-fetch computer system
JPWO2006109421A1 (ja) * 2005-04-08 2008-10-16 松下電器産業株式会社 キャッシュメモリ
GB2425030A (en) * 2005-04-09 2006-10-11 Tenomichi Ltd Managed network render targets for routing graphical information
JP2008257508A (ja) * 2007-04-05 2008-10-23 Nec Electronics Corp キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US10114750B2 (en) 2012-01-23 2018-10-30 Qualcomm Incorporated Preventing the displacement of high temporal locality of reference data fill buffers
US10552329B2 (en) * 2014-12-23 2020-02-04 Prophetstor Data Services, Inc. SSD caching system for hybrid storage
US9772824B2 (en) 2015-03-25 2017-09-26 International Business Machines Corporation Program structure-based blocking
KR20160148952A (ko) * 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
JPS5891570A (ja) * 1981-11-27 1983-05-31 Nec Corp 情報処理システム
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
US4719568A (en) * 1982-12-30 1988-01-12 International Business Machines Corporation Hierarchical memory system including separate cache memories for storing data and instructions
US4701844A (en) * 1984-03-30 1987-10-20 Motorola Computer Systems, Inc. Dual cache for independent prefetch and execution units
CA1279731C (en) * 1986-06-27 1991-01-29 Ruby Bei-Loh Lee Cache memory with variable fetch and replacement schemes
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
US4853846A (en) * 1986-07-29 1989-08-01 Intel Corporation Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors
US4980823A (en) * 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19943938B4 (de) * 1998-10-26 2014-05-22 Infineon Technologies Ag Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus

Also Published As

Publication number Publication date
EP0496439B1 (de) 1998-01-21
JP3425158B2 (ja) 2003-07-07
EP0496439A2 (de) 1992-07-29
EP0496439A3 (en) 1993-07-21
DE69224084D1 (de) 1998-02-26
JPH04303248A (ja) 1992-10-27
US5822757A (en) 1998-10-13

Similar Documents

Publication Publication Date Title
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE69132186T2 (de) Cache-Speicherverwaltungsanordnung
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69606648T2 (de) Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE4227345C2 (de) Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE68911398T2 (de) Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem.
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE69331039T2 (de) Rechnersystem mit einem Vorausholungscachespeicher
DE69129872T2 (de) Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher
DE69128741T2 (de) Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE69131917T2 (de) Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE69322244T2 (de) Verfahren und System zur Erhöhung der Systemspeichergleichzeitigkeit eines Multiprozessor-Rechnersystems
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher
WO2007017373A1 (de) Vorrichtung und verfahren zur speicherung von daten und/oder befehlen in einem rechnersystem mit wenigstens zwei verarbeitungseinheiten und wenigstens einem ersten speicher oder speicherbereich für daten und/oder befehle

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: KONINKLIJKE PHILIPS ELECTRONICS N.V., EINDHOVEN, N

8328 Change in the person/name/address of the agent

Representative=s name: VOLMER, G., DIPL.-ING., PAT.-ANW., 52066 AACHEN

8339 Ceased/non-payment of the annual fee