DE69709483T2 - Ein Computersystem mit auf Anforderungstyp der CPU basierender Cache-Vorausladefähigkeit - Google Patents
Ein Computersystem mit auf Anforderungstyp der CPU basierender Cache-VorausladefähigkeitInfo
- Publication number
- DE69709483T2 DE69709483T2 DE69709483T DE69709483T DE69709483T2 DE 69709483 T2 DE69709483 T2 DE 69709483T2 DE 69709483 T DE69709483 T DE 69709483T DE 69709483 T DE69709483 T DE 69709483T DE 69709483 T2 DE69709483 T2 DE 69709483T2
- Authority
- DE
- Germany
- Prior art keywords
- request
- prefetch
- cpu
- cache
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung betrifft allgemein Computersysteme und speziell ein Computersystem mit Daten-Cache-Fähigkeit.
- Um die Zeit, die die CPU eines Computersystems benötigt, um Informationen aus dem Arbeitsspeicher abzurufen, zu reduzieren, verwenden die Systeme zunehmend Cache-Speicher in irgendeiner Form. Dem Fachmann ist bekannt, dass ein Cache- Speicher eine schnelle Speichervorrichtung umfasst, die zur Speicherung einer Kopie der am häufigsten benutzten Instruktionen und Daten aus dem Hauptspeicher verwendet wird. Die aktuelle Computergeneration mit einem Prozessor des Typs Intel Pentium, Pentium Pro, IBM PowerPC oder einem ähnlichen Prozessor besitzt typischerweise einen internen Cache der Ebene 1 (L1) (Intel und Pentium sind Warenzeichen der Intel Corp. Und IBM und PowerPC sind Warenzeichen der IBM Corp.). Nach dem Verständnis der Fachleute ist der L1-Cache-Speicher CPU-intern und über einen internen Bus zugänglich. Ferner verwenden immer mehr Computersysteme auch einen externen Cache-Speicher der Ebene 2 (L2), um die Leistungsfähigkeit des Systems weiter zu steigern. L2-Caches sind in der Regel größer als L1-Caches und befinden sich zwischen der CPU und dem Arbeitsspeicher des Systems. L2-Caches sind somit für die CPU über einen externen Verarbeitungsbus zugänglich.
- Um die Leistungsfähigkeit des Systems weiter zu steigern, sind einige konventionelle Systeme mit einer Vorausladefähigkeit ausgestattet, die es einem Speichercontroller ermöglicht, Informationen zu laden, ohne dass dies ausdrücklich von der CPU angefordert wird. Diese Vorausladefähigkeit basiert auf der Annahme, dass die CPU die vorausgeladene Information nach Anforderung mit der Geschwindigkeit des Cache-Speichers, die wesentlich höher ist als die Geschwindigkeit des Systemspeichers, abgerufen hätte. Konventionelle Vorausladeverfahren laden aber Informationen in Form einer vordefinierten Anzahl von Cache-Zeilen in die CPU. Das heißt, dass wenn die CPU Daten von einem Cache-Controller anfordert, dieser zusätzlich zu den angeforderten Daten eine vorgegebene Anzahl von Bytes (z. B. eine 32 Bytes lange Cache-Zeile) der Daten aus dem Systemspeicher vorauslädt und diese Daten im Cache-Speicher für einen möglichen Zugriff durch die CPU bereit hält. In dem Dokument EP-0366325A wird ein System beschrieben, in dem zwei verschiedene vorbestimmte und festgelegte Cache-Füllsequenzen von 16 Byte und 64 Byte zur Verfügung stehen, deren Auswahl sich nach der Größe und Adressausrichtung der vom zugehörigen Prozessor angeforderten Daten richtet. Wenn sich die Adresse im Cache befindet, findet kein Datentransfer aus dem Hauptspeicher statt. Liegt kein Cache-Treffer vor und wird entweder kein Quadwort oder ein nicht an einem Vielfachen von 64 Byte ausgerichtetes Quadwort angefordert, so wird ein kürzerer Block von 16 Byte Länge aus dem Hauptspeicher geholt. Liegt kein Cache-Treffer vor und wird ein Quadwort angefordert, so wird ein längerer Block von 64 Byte Länge aus dem Hauptspeicher geholt. Ein Quadwort besteht in diesem Zusammenhang aus 8 Bytes. Wenn nun aber eine vorgegebene Anzahl von Datenbytes in den Cache geladen wird, bleiben Variationen in den Adressierungsmustern einer steuernden Software außer Betracht, und es kann sein, dass unnötige Daten vorausgeladen werden. Da das Vorausladen insgesamt eine stärkere Speichernutzung zur Folge hat, kann das Laden unnötiger Daten in den Cache in manchen Umgebungen sich sogar nachteilig auf die Leistungsfähigkeit des Systems auswirken. So kann zum Beispiel in einer Umgebung das Vorausladen von Instruktionscode aus dem Systemspeicher vorteilhaft für die globale Systemleistungsfähigkeit sein, während das Vorausladen von Daten einen nachteiligen Effekt hat. In einer anderen Umgebung liegt vielleicht genau der umgekehrte Fall vor. Das heißt, das Vorausladen von Daten verbessert die Leistungsfähigkeit, während das Vorausladen von Instruktionscode sich nachteilig auf die Systemleistung auswirkt.
- Deshalb wird ein Cache-Speichersystem mit Vorausladefähigkeit benötigt, das für eine große Vielfalt an Software-Umgebungen optimiert ist.
- In der vorliegenden Erfindung wird, kurz gesagt, ein Computersystem gemäß dem unabhängigen Anspruch 1 definiert.
- Im folgenden wird die Erfindung exemplarisch unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Die Zeichnungen haben folgenden Inhalt:
- Fig. 1 ist ein Blockdiagramm eines Computersystems mit dem erfindungsgemäßen Cache-Controller.
- Fig. 2 ist ein Blockdiagramm eines erfindungsgemäßen Cache- Controllers.
- Fig. 3 ist ein Diagramm eines Vorauslader-Steuerregisters (prefetcher control register - PCR) im Cache-Controller aus Fig. 2.
- Fig. 4 ist ein Diagramm eines Vorauslader- Anforderungswarteschlangenregisters im Cache-Controller aus Fig. 2.
- Fig. 5 ist ein Diagramm eines Vorauslader-Arbeitsregisters (prefetcher working register - PWR) im Cache-Controller aus Fig. 2.
- In Fig. 1 ist ein Blockdiagramm eines exemplarischen Computersystems 100 mit der vorliegenden Erfindung zu sehen. Das Computersystem 100 kann ein Personal-Computer-System wie den IBM Personal Computer umfassen. Das Computersystem 100 kann als eigenständige Workstation agieren oder als Client- oder Serverstation Teil eines größeren Computernetzwerks sein.
- Das Computersystem 100 umfasst zwei Verarbeitungsseiten, eine Hostverarbeitungsseite 110, die die höheren Verarbeitungsfunktionen wie die vom Betriebssystem und den Anwendungsprogrammen angegebenen Funktionen ausführt, und eine lokale Verarbeitungsseite 120, die Peripheriefunktionen wie Speicher- oder Kommunikationsschnittstellenfunktionen für das Computersystem 100 ausführt. Die Hostverarbeitungsseite 110 und die lokale Verarbeitungsseite 120 sind über einen Ein- /Ausgabe-Erweiterungsbus (E/A-Erweiterungsbus) 130 miteinander gekoppelt. Der E/A-Erweiterungsbus 130 befolgt eines der vielen geeigneten E/A-Erweiterungsbusprotokolle, die es einem lokalen Schnittstellencontroller ermöglichen, die Kontrolle über den Bus zu übernehmen, um eine bestimmte Funktion wie z. B. die Übertragung von Datenblöcken über den E/A- Erweiterungsbus 130 auszuführen. Beispiele für solche Busprotokolle sind die durch die PCI- oder MicroChannel- Spezifikationen definierten Protokolle, die hiermit durch Bezugnahme einverleibt werden.
- Die Hostverarbeitungsseite 110 kann eine einzige CPU 103 oder, in einem Multiprocessing-System, mehrere CPUs zur Steuerung der Gesamtfunktion des Computersystems 100 besitzen.
- Die CPU 103 kann eine der handelsüblichen CPUs wie der Pentium-Prozessor von der Intel Corporation oder ein PowerPC- Prozessor von der IBM Corporation sein. Bekanntlich beginnt die CPU 103 ihre Arbeit, indem sie die in einem Nur-Lese- Speicher (Read-Only Memory - ROM) 101 gespeicherten Firmware- Instruktionen ausführt. Die Firmware-Instruktionen, auch bekannt als BIOS (Basic Input/Output System - Basis-E/A- System) können Instruktionen zum Erkennen angeschlossener Geräte und Instruktionen für einen Selbsttest beim Einschalten (Power on self test - POST) enthalten. Allgemein führt die CPU 103 nach den Firmware-Instruktionen Betriebssysteminstruktionen aus, indem das Betriebssystem von einer Speichervorrichtung 114 der lokalen Seite in den Hauptspeicher 107 geladen wird. Der Datentransfer zwischen der CPU 103, dem ROM 101 und dem Systemspeicher 107 wird von einem Speicher-Controller 109 gesteuert. Der Datentransfer zwischen der Hostverarbeitungsseite 110 und dem E/A-Erweiterungsbus 130 wird hingegen von einer E/A-Brückenschnittstelle 111 gesteuert. Die E/A-Brückenschnittstelle 111 ist als Schnittstelle zwischen dem Speichercontroller 109, der CPU 103 über den externen Cache-Controller 106 und dem E/A- Erweiterungsbus 130 konstruiert. Die CPU 103 ist mit dem E/A- Erweiterungsbus 130 und folglich auch mit der lokalen Verarbeitungsseite 120 über eine geeignete E/A-Busbrücken- Schnittstelle 111 verbunden.
- Um die Prozessorleistung zu steigern, kann die CPU 130 einen internen Cache (L1-Cache) 104 und einen optionalen externen Cache (L2-Cache) 105 zur Speicherung der zuletzt verwendeten Daten und Instruktionen enthalten, so dass die Notwendigkeit einer Einleitung langer Systemspeicherzugriffszyklen entfällt. Der Cache-Speicher enthält in der Regel einen schnellen statischen Direktzugriffsspeicher (static random access memory - SRAM), der sich sehr nahe bei der CPU 103 befindet. Die Datentransfers in die und aus den L1- und L2-Caches werden von einem Cache-Controller 106 gesteuert, der eine erfindungsgemäße Cache-Vorausladefunktion enthält. Der Cache- Controller 106 ist über einen CPU-Bus 108, der einen Datenbus, einen Adressbus und einen Steuerbus umfasst, mit der CPU verbunden. Der Cache-Controller 106 speichert Instruktionen und Daten in ganzzahligen Vielfachen der Bits der Datenbusbreite, die als Cache-Zeilen bezeichnet werden, und ruft sie auch in dieser Form ab.
- Wenn die Programme von der CPU ausgeführt werden, generiert die CPU eine Anzahl von Anforderungen bezüglich des Transfers von Daten und Instruktionen aus dem Systemspeicher 107. Bei diesen Anforderungen kann es sich um Instruktionsanforderungen oder Datenanforderungen handeln. Außerdem können solche Anforderungen je nach Anforderungstyp das Abrufen oder Lesen von Informationen aus dem Systemspeicher 107 oder das Speichern oder Schreiben von Informationen in den Systemspeicher 107 betreffen. Die CPU generiert deshalb ein Anforderungstypsignal, das die Art der Anforderung angibt, z. B. ob es sich um eine Instruktions- oder um eine Datenanforderung handelt, und ein zweites Steuersignal, das die Übertragungsrichtung, d. h. Lesen oder Schreiben, angibt. Die CPU signalisiert den Anforderungstyp und die Richtung des Transfers durch Aktivierung entsprechender Signale auf dem CPU-Steuerbus.
- Auf der lokalen Verarbeitungsseite 120 kann das Computersystem 100 mehrere lokale Schnittstellencontroller 113 wie die an verschiedene Peripheriegeräte 115 angeschlossenen SCSI- Controller (Small Computer System Interface) enthalten. Als solche können z. B. Speichervorrichtungen, Kommunikationsvorrichtungen, Drucker, Netzwerkvorrichtungen, Abbildungsvorrichtungen usw. als Erweiterung der Funktionalität und Möglichkeiten des Systems hinzu kommen. So kann beispielsweise das Computersystem 100 als Serverstation mit einem Fast Wide SCSI Lokalschnittstellencontroller mit einer redundanten Anordnung kostengünstiger Laufwerke (Redundant Array of Inexpensive Drives - RAID) als Speichervorrichtungen verwendet werden.
- Für einen Durchschnittsfachmann ist zu erkennen, dass die beschriebene Hostverarbeitungsseite 110 und die beschriebene lokale Verarbeitungsseite 120 nur exemplar zu verstehen sind und je nach Anwendung verschiedene Systemarchitekturen, entweder Uni- oder Multiprocessing-Architekturen, entwickelt werden können, um die Funktionsanforderungen dieser Verarbeitungsseiten zu implementieren.
- In Fig. 2 ist ein Blockdiagramm des erfindungsgemäßen Cache- Controllers 106 aus Fig. 1 dargestellt. Der Cache-Controller 106 enthält die Controllerlogik 201, die den gesamten Betrieb des Cache-Controllers 106 steuert. Die Controllerlogik 201 reagiert auf den CPU-Bus, den Adress- und den Steuerbus, und enthält eine Logik zur Generierung von Adress- und Steuersignalen zum Lesen und Schreiben vom und in den Systemspeicher 107 (in Fig. 1) und den Cache-Speicher 105. Ferner enthält die Controllerlogik 201 Logikschaltungen und Tag-Register 202 zum Feststellen, ob sich angeforderte Informationen im Cache befinden oder nicht. Ein Cache-Treffer liegt vor, wenn von der CPU angeforderte Daten oder Instruktionen im Cache-Speicher gefunden werden. Der schnelle Cache-Speicher 105 ist mit dem Cache-Controller 106 über einen wohlbekannten Cache-Schnittstellenbus 211 verbunden, über den Cache-Daten übertragen werden.
- Der Cache-Controller 106 enthält eine Vorausladelogik 203 sowie eine Anzahl von Registern zur Steuerung der erfindungsgemäßen Vorausladefunktion. Wie weiter unten noch im Detail zu sehen sein wird, steuert ein programmierbares Vorauslade-Steuerregister 207, das eine Anzahl von Voraus- Ladesteuerregister-Feldern verwendet, wieviel der Cache- Controller 106 bei Instruktionsabrufen, Datenlese- und Datenschreiboperationen vorauslädt. Das Vorauslade- Steuerregister 207 ist von der Steuersoftware adressierbar, um programmierbare Werte in den einzelnen Vorauslade- Steuerregister-Feldern zu speichern. Ein Vorausladeanforderungs-Warteschlangenregistersatz 209, der aus einer Anzahl von Vorauslade-Warteschlangenregistern besteht, speichert eine Anzahl ausstehender CPU-Anforderungen zum Vorausladen, die noch nicht von Cache-Controller 106 abgearbeitet worden sind. Ein vom Cache-Controller programmierbares Vorauslade-Arbeitsregister 208 speichert Informationen zur gerade ausgeführten Vorausladeanforderung.
- In Fig. 3 ist ein Diagramm des Vorauslade-Steuerregisters 207 zu sehen. Das Vorauslade-Steuerregister umfasst drei Vorauslade-Steuerregisterfelder, nämlich ein Instruktions- Vorausladefeld 301, ein Datenlese-Vorausladefeld 302 und ein Datenschreib-Vorausladefeld 303. Je nach Implementierung besteht jedes Feld des Vorauslade-Steuerregisters 207 aus einer Anzahl von Bits, die einen programmierbaren Wert darstellen, der eine Anzahl vorauszuladender Cache-Zeilen angibt. Im Instruktions-Vorausladefeld 301 wird ein Wert gespeichert, der angibt, wie viele Cache-Zeilen vorausgeladen werden sollen, wenn die CPU eine Instruktionsabrufanforderung signalisiert. Entsprechend wird im Datenlese-Vorausladefeld 302 ein Wert gespeichert, der angibt, wie viele Cache-Zeilen vorausgeladen werden sollen, wenn die CPU eine Datenleseanforderung signalisiert. Schließlich wird im Datenschreib-Vorausladefeld 303 ein Wert gespeichert, der angibt, wie viele Cache-Zeilen vorausgeladen werden sollen, wenn die CPU eine Datenschreibanforderung signalisiert.
- In Fig. 4 ist ein exemplarisches Diagramm des Vorausladeanforderungs-Warteschlangenregistersatzes 209 zu sehen. Der Vorausladeanforderungs-Warteschlangenregistersatz 209 umfasst eine Anzahl von Registerelementen 410 zur Speicherung der Adresse und des CPU-Anforderungstyps ausstehender Anforderungen. Der Cache-Controller speichert in jedem Registerelement 410 Informationen zu den ausstehenden Vorausladeanforderungen. Jedes Element 410 umfasst zwei Registerfelder: ein Adressfeld 410 und ein Typfeld 402. Das Adressfeld ist die Speicheradresse für die Prozessoranforderung, für die das Vorausladen erfolgen soll.
- Das Typfeld wird vom Cache-Controller anhand der CPU- Anforderung und der Transfertypsignale generiert und gibt an, ob die Anforderung, für die eine Vorausladeoperation ausgeführt werden soll, ein Instruktionsabruf, eine Datenlese- oder eine Datenschreiboperation ist.
- In Fig. 5 ist ein exemplarisches Diagramm des Vorauslader- Arbeitsregisters (PWR) 208 zu sehen. Das Vorauslader- Arbeitsregister 208 besteht aus drei Feldern: dem Adressfeld 501, dem Richtungsfeld 502 und dem Zählerfeld 503. Wenn eine Vorausladeoperation ausgeführt werden soll, lädt der Cache- Controller 106 das Vorauslader-Arbeitsregister 208 mit den Informationen, die zur Ausführung der aktuellen Vorausladeoperation notwendig sind. Das Adressfeld 501 wird mit einer Speicheradresse geladen, die ursprünglich vom Adressfeld 401 des Vorausladeanforderungs- Warteschlangenelement 410 empfangen worden ist, und dient zur Ermittlung der vorauszuladenden Speicheradresse der Cache- Zeile. Das Richtungsfeld 502 wird verwendet, um festzustellen, ob Cache-Zeilen aus dem Systemspeicher 107 in aufsteigender oder absteigender Reihenfolge nacheinander vorausgeladen werden sollen. Wenn die Vorausladelogik 203 die vorauszuladenden Cache-Zeilen in aufsteigender Reihenfolge abruft, haben alle vorausgeladenen Cache-Zeilen Speicheradressen, die größer sind als die im Adressfeld 501 enthaltene Speicheradresse. Wenn der Vorauslader die Cache- Zeilen in absteigender Reihenfolge vorauslädt, haben alle vorauszuladenden Cache-Zeilen Speicheradressen, die kleiner sind als die im Adressfeld 501 enthaltene Speicheradresse. Das Zählerfeld 503 dient zur Angabe, wie viele Cache-Zeilen vorausgeladen werden sollen.
- Fig. 6 ist ein Flussdiagramm der Schritte zur Durchführung der vorliegenden Erfindung. In Block 601 empfängt der Cache- Controller 106 eine Anforderung von der CPU. In Block 603 wird festgestellt, ob die Anforderung cache-fähig ist oder nicht. Wenn die Anforderung nicht cache-fähig ist, ignoriert der Cache-Controller die Anforderung und gibt sie an den Systemspeicher 107 weiter. In Block 605 stellt der Cache- Controller 106 durch Abfrage der Cache-Tag-Register 202 fest, ob die Anforderung einen Cache-Treffer ergibt oder nicht. Bei einem Cache-Treffer stellt der Cache-Controller in Block 607 durch Abfrage der Steuerbussignale fest, ob es sich bei der Anforderung um eine Leseanforderung oder um eine Schreibanforderung handelt. Bei einer Leseanforderung holt der Cache-Controller 106 die Instruktion oder Daten aus dem Cache und übergibt der CPU eine Cache-Zeile (Block 609). Handelt es sich um eine Schreibanforderung, empfängt der Cache-Controller die Daten von der CPU, schreibt sie in den Cache und aktualisiert die Register 202 nach einem vordefinierten Cache- Kohärenzprotokoll (Block 611). Wenn kein Cache-Treffer vorliegt, wird die Anforderung nach dem Cache- Kohärenzprotokoll bedient (Block 623). Zu diesem Zeitpunkt erstellt der Cache-Controller 106 ein Vorausladeanforderungs- Warteschlangenelement 410 (Block 613). Nach der Erstellung eines Vorausladeanforderungs-Warteschlangenelementes 410 in Block 615 wird festgestellt, ob die Anzahl der Warteschlangenelemente eine vorgegebene Zahl überschreitet, d. h. ob die Vorauslade-Warteschlange voll ist. Ist dies der Fall, so wird das erste Element der Warteschlange, d. h. die älteste nicht bediente Anforderung, aus der Warteschlange entfernt. In diesem Stadium oder wenn die Warteschlange nicht voll ist, wird das Vorausladeanforderungselement in die Warteschlange gestellt.
- Fig. 7 ist ein exemplarisches Flussdiagramm der von der Vorausladelogik 203 ausgeführten Schritte. Die Vorausladelogik 203 prüft ständig den Inhalt der Vorausladeanforderungs- Warteschlange (Block 701). Wenn die Warteschlange nicht leer ist, entfernt die Vorausladelogik 203 die erste Anforderung aus der Vorausladeanforderungs-Warteschlange (Block 705). Dann lädt die Vorausladelogik 203 den Adressteil des Vorauslade- Arbeitsregisters 208 mit der im Adressfeld 401 des Warteschlangenelementes angegebenen Adresse (Block 707). In Block 709 stellt die Vorausladelogik anhand des im Typfeld 402 angegebenen Anforderungstyps fest, ob es sich um eine Leseanforderung oder um eine Schreibanforderung handelt. Bei einer Schreibanforderung setzt die Vorausladelogik 203 das Richtungsfeld 502 auf einen Wert, der eine absteigende Richtung angibt (Block 711). Bei einer Leseanforderung hingegen setzt die Vorausladelogik 203 das Richtungsfeld 502 auf einen Wert, der eine aufsteigende Richtung angibt (Block 713). In Block 715 wird festgestellt, ob die CPU-Anforderung eine Instruktionsabrufanforderung ist. Wenn dies der Fall ist, wird das Zählerfeld 503 des Arbeitsregisters auf einen Wert gesetzt, der durch den im Instruktionsvorausladefeld 301 des Vorauslade-Steuerregisters 207 enthaltenen Wert dargestellt wird. Andernfalls stellt die Vorausladelogik 203 in Block 719 fest, ob es sich um eine Datenleseanforderung handelt. Ist dies der Fall, so wird das Zählerfeld 503 des Arbeitsregisters auf einen Wert gesetzt, der durch den im Datenlese- Vorausladefeld 302 des Vorauslade-Steuerregisters 207 enthalten ist (Block 721). Andernfalls wird angenommen, dass es sich um eine Datenschreibanforderung handelt, und das Zählerfeld 503 des Arbeitsregisters wird auf einen Wert gesetzt, der durch den im Datenschreibfeld 303 des Vorauslade- Steuerregisters 207 enthaltenen Wert dargestellt wird (Block 723). Dann beginnt die Vorausladelogik 203 anhand der im Zählerfeld 503 geladenen Werte, eine Anzahl von Cache-Zeilen aus dem Systemspeicher von einer im Adressfeld 501 angegebenen Startadresse und in einer im Richtungsfeld 502 angegebenen Richtung vorauszuladen (Block 725). Nach Abschluss der aktuellen Vorausladeoperation kehrt das Flussdiagramm zu Block 701 zurück, um festzustellen, ob andere ausstehende Vorausladeanforderungen bedient werden müssen.
Claims (11)
1. Ein Computersystem (100), umfassend
einen Hauptspeicher (107);
eine CPU (103) zur Generierung eines ersten CPU-
Steuersignals, das angibt, ob es sich bei einer
Informationsanforderung um eine Instruktionsanforderung
oder um eine Datenanforderung handelt, und zur Generierung
eines zweiten CPU-Steuersignals, das angibt, ob es sich
bei einer Anforderung um eine Anforderung zum Abrufen von
Informationen aus dem Speicher oder um eine Anforderung
zum Speichern von Information im Speicher handelt;
ein Cache-Speichersystem mit einem Cache-Speicher (104,
105); und
einen an den Cache-Speicher angeschlossenen Cache-
Controller (106, 202) mit einer Vorausladelogik (203), die
auf das erste CPU-Signal und das zweite CPU-Signal
reagiert, um anzugeben, ob die Anforderung, für die eine
Vorausladeoperation ausgeführt werden soll, eine
Instruktionsabrufanforderung, eine Datenleseanforderung
oder eine Datenschreibanforderung ist, und um die aus dem
Hauptspeicher in den Cache-Speicher vorauszuladende
Datenmenge basierend auf einem vorausgeladenen
Steuerregister, das im Cache-Controller enthalten ist,
anhand einer Anzahl von Vorauslade-Steuerregisterfeldern
zur unabhängigen Steuerung des Umfangs der
Vorausladeoperation, die der Cache-Controller für
Instruktionsabrufoperationen, Datenleseoperationen und
Datenschreiboperationen ausführen wird, zu bestimmen.
2. Ein Computersystem (100) nach Anspruch 1, wobei das Cache-
Speichersystem ein hierarchisches Cache-System umfasst und
der Cache-Speicher eine erste Ebene (104) des Cache-
Speichers und eine niedrigere zweite Ebene (105) des
Cache-Speichers umfasst.
3. Ein Computersystem (100) nach Anspruch 1, bei dem der
Cache-Controller (106, 202) das programmierbare
Vorauslade-Steuerregister (207) enthält, um einen Wert zu
speichern, der eine programmierbare Anzahl
vorauszuladender Instruktionsbytes angibt.
4. Ein Computersystem (100) nach Anspruch 3, wobei der Cache-
Controller (106, 202) auf das erste CPU-Steuersignal, das
eine Instruktionsanforderung zum Vorausladen der im
programmierbaren Vorausladesteuerregister (207)
gespeicherten Anzahl von Instruktionsbytes angibt,
reagiert.
5. Ein Computersystem (100) nach Anspruch 1, bei dem der
Cache-Controller (106, 202) das programmierbare
Vorauslade-Steuerregister (207) zum Speichern eines Wertes
enthält, der eine programmierbare Anzahl von Datenbytes
angibt, die vorausgeladen werden sollen, wenn das erste
CPU-Steuersignal eine Datenanforderung signalisiert und
das zweite CPU-Steuersignal signalisiert, dass es sich bei
der Datenanforderung um eine Anforderung zum Abrufen von
Information aus dem Hauptspeicher (107) handelt.
6. Ein Computersystem (100) nach Anspruch 1, bei dem der
Cache-Controller (106, 202) das programmierbare
Vorauslade-Steuerregister (207) zum Speichern eines Wertes
enthält, der eine programmierbare Anzahl von Datenbytes
angibt, die vorausgeladen werden sollen, wenn das erste
CPU-Steuersignal eine Datenanforderung signalisiert und
das zweite CPU-Steuersignal signalisiert, dass es sich bei
der Datenanforderung um eine Anforderung zum Speichern von
Information im Hauptspeicher (107) handelt.
7. Ein Computersystem (100) nach Anspruch 5 oder Anspruch 6,
wobei der Cache-Controller (106, 202) darauf, dass das
erste CPU-Steuersignal eine Datenanforderung signalisiert
und das zweite CPU-Steuersignal angibt, ob es sich bei der
Datenanforderung um eine Anforderung zum Abrufen von
Information in den oder aus dem Hauptspeicher (107)
handelt, reagiert, um die Anzahl der im programmierbaren
Vorauslade-Steuerregister (207) gespeicherte Anzahl von
Datenbytes vorauszuladen.
8. Ein Computersystem (100) nach Anspruch 1, wobei der Cache-
Controller (106, 202) einen Vorauslade-
Warteschlangenregistersatz (209) enthält, der eine Anzahl
von Vorauslade-Warteschlangenregistern zur Speicherung
einer Anzahl ausstehender CPU-Anforderungen zum
Vorausladen enthält.
9. Ein Computersystem (100) nach Anspruch 8, bei dem jedes der
Vorauslade-Warteschlangenregister (209) ein erstes
Registerfeld (401) zur Speicherung der Adresse der CPU-
Anforderung und ein zweites Feld (402) zur Speicherung
eines Anforderungstyps basierend auf dem ersten CPU-Signal
und dem zweiten CPU-Signal enthält.
10. Ein Computersystem (100) nach Anspruch 9, wobei der Cache-
Controller (106, 202) eine Richtungslogik enthält, die auf
den Anforderungstyp reagiert, um festzustellen, ob das
Vorausladen aus dem Hauptspeicher (107) in aufsteigender
oder absteigender Reihenfolge erfolgen soll.
11. Ein Computersystem (100) nach Anspruch 10, wobei der
Cache-Controller (106, 202) Information aus dem
Hauptspeicher (107) in aufsteigender Reihenfolge
vorauslädt, wenn der Anforderungstyp eine Daten- oder
Instruktionsanforderung zum Abrufen aus dem Hauptspeicher
signalisiert, und wobei der Cache-Controller Information
aus dem Hauptspeicher in absteigender Reihenfolge
vorauslädt, wenn der Anforderungstyp eine Datenanforderung
zum Speichern von Information im Hauptspeicher
signalisiert.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/636,112 US5802569A (en) | 1996-04-22 | 1996-04-22 | Computer system having cache prefetching amount based on CPU request types |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69709483D1 DE69709483D1 (de) | 2002-02-14 |
DE69709483T2 true DE69709483T2 (de) | 2002-09-19 |
Family
ID=24550492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69709483T Expired - Lifetime DE69709483T2 (de) | 1996-04-22 | 1997-03-24 | Ein Computersystem mit auf Anforderungstyp der CPU basierender Cache-Vorausladefähigkeit |
Country Status (6)
Country | Link |
---|---|
US (1) | US5802569A (de) |
EP (1) | EP0803817B1 (de) |
JP (1) | JPH1055307A (de) |
AT (1) | ATE211837T1 (de) |
DE (1) | DE69709483T2 (de) |
ES (1) | ES2169319T3 (de) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421715B1 (en) * | 1997-06-11 | 2002-07-16 | Oracle Corporation | System and method for generating and transmitting a command in response to a request for additional data and data described in the request |
US6085263A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computer Corp. | Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor |
JP3289661B2 (ja) * | 1997-11-07 | 2002-06-10 | 日本電気株式会社 | キャッシュメモリシステム |
US7089331B1 (en) | 1998-05-29 | 2006-08-08 | Oracle International Corporation | Method and mechanism for reducing client-side memory footprint of transmitted data |
US6728839B1 (en) * | 1998-10-28 | 2004-04-27 | Cisco Technology, Inc. | Attribute based memory pre-fetching technique |
US8225002B2 (en) * | 1999-01-22 | 2012-07-17 | Network Disk, Inc. | Data storage and data sharing in a network of heterogeneous computers |
US7089367B1 (en) * | 1999-08-11 | 2006-08-08 | Intel Corporation | Reducing memory access latencies from a bus using pre-fetching and caching |
US6470427B1 (en) * | 1999-11-09 | 2002-10-22 | International Business Machines Corporation | Programmable agent and method for managing prefetch queues |
TW449695B (en) * | 1999-11-26 | 2001-08-11 | Via Tech Inc | PCI data reading system for using reading requirement pipe and its method |
US7389284B1 (en) | 2000-02-29 | 2008-06-17 | Oracle International Corporation | Method and mechanism for efficient processing of remote-mapped queries |
US6701387B1 (en) | 2000-08-31 | 2004-03-02 | Hewlett-Packard Development Company, L.P. | Adaptive data fetch prediction algorithm |
US6795878B2 (en) * | 2000-12-11 | 2004-09-21 | International Business Machines Corporation | Verifying cumulative ordering of memory instructions |
US7103590B1 (en) | 2001-08-24 | 2006-09-05 | Oracle International Corporation | Method and system for pipelined database table functions |
US6760818B2 (en) * | 2002-05-01 | 2004-07-06 | Koninklijke Philips Electronics N.V. | Memory region based data pre-fetching |
US7610351B1 (en) | 2002-05-10 | 2009-10-27 | Oracle International Corporation | Method and mechanism for pipelined prefetching |
US6973457B1 (en) | 2002-05-10 | 2005-12-06 | Oracle International Corporation | Method and system for scrollable cursors |
US6957306B2 (en) * | 2002-09-09 | 2005-10-18 | Broadcom Corporation | System and method for controlling prefetching |
US6871246B2 (en) * | 2003-05-07 | 2005-03-22 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
US7200719B2 (en) * | 2003-07-31 | 2007-04-03 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
US7370153B1 (en) * | 2004-08-06 | 2008-05-06 | Nvidia Corporation | System and method of pre-fetching using an extended data structure including required data and a pre-fetch flag |
US7526604B1 (en) | 2004-08-09 | 2009-04-28 | Nvidia Corporation | Command queueing speculative write prefetch |
KR20060116916A (ko) * | 2005-05-11 | 2006-11-16 | 삼성전자주식회사 | 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법 |
KR100648293B1 (ko) * | 2005-08-09 | 2006-11-23 | 삼성전자주식회사 | 그래픽 시스템 및 그것의 그래픽 처리 방법 |
US7502913B2 (en) | 2006-06-16 | 2009-03-10 | Microsoft Corporation | Switch prefetch in a multicore computer chip |
JP4945200B2 (ja) * | 2006-08-29 | 2012-06-06 | 株式会社日立製作所 | 計算機システム及びプロセッサの制御方法 |
US20100010965A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Query Management Systems |
EP2529374A4 (de) | 2010-01-28 | 2014-04-02 | Hewlett Packard Development Co | Speicherzugangsverfahren und -vorrichtung |
US20140173170A1 (en) * | 2012-12-14 | 2014-06-19 | Hewlett-Packard Development Company, L.P. | Multiple subarray memory access |
US11061853B2 (en) | 2015-12-08 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Processor with memory controller including dynamically programmable functional unit |
US10268586B2 (en) | 2015-12-08 | 2019-04-23 | Via Alliance Semiconductor Co., Ltd. | Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests |
US10642617B2 (en) | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
US10521350B2 (en) | 2016-07-20 | 2019-12-31 | International Business Machines Corporation | Determining the effectiveness of prefetch instructions |
US10621095B2 (en) | 2016-07-20 | 2020-04-14 | International Business Machines Corporation | Processing data based on cache residency |
US10169239B2 (en) * | 2016-07-20 | 2019-01-01 | International Business Machines Corporation | Managing a prefetch queue based on priority indications of prefetch requests |
US10452395B2 (en) | 2016-07-20 | 2019-10-22 | International Business Machines Corporation | Instruction to query cache residency |
US10452551B2 (en) * | 2016-12-12 | 2019-10-22 | Intel Corporation | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register |
US11157285B2 (en) * | 2020-02-06 | 2021-10-26 | International Business Machines Corporation | Dynamic modification of instructions that do not modify the architectural state of a processor |
US20240377945A1 (en) * | 2023-05-09 | 2024-11-14 | Samsung Electronics Co., Ltd. | Systems and methods for cache management of a storage device |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3898624A (en) * | 1973-06-14 | 1975-08-05 | Amdahl Corp | Data processing system with variable prefetch and replacement algorithms |
US4489378A (en) * | 1981-06-05 | 1984-12-18 | International Business Machines Corporation | Automatic adjustment of the quantity of prefetch data in a disk cache operation |
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
US4882642A (en) * | 1987-07-02 | 1989-11-21 | International Business Machines Corporation | Sequentially processing data in a cached data storage system |
US4994962A (en) * | 1988-10-28 | 1991-02-19 | Apollo Computer Inc. | Variable length cache fill |
US5146578A (en) * | 1989-05-01 | 1992-09-08 | Zenith Data Systems Corporation | Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests |
US5133060A (en) * | 1989-06-05 | 1992-07-21 | Compuadd Corporation | Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter |
EP0463874A2 (de) * | 1990-06-29 | 1992-01-02 | Digital Equipment Corporation | Cache-Anordnung für ein Dateisystem in einem digitalen Datenverarbeitungssystem |
US5410653A (en) * | 1992-06-16 | 1995-04-25 | International Business Machines Corporation | Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length |
US5361391A (en) * | 1992-06-22 | 1994-11-01 | Sun Microsystems, Inc. | Intelligent cache memory and prefetch method based on CPU data fetching characteristics |
US5588128A (en) * | 1993-04-02 | 1996-12-24 | Vlsi Technology, Inc. | Dynamic direction look ahead read buffer |
US5550998A (en) * | 1993-06-14 | 1996-08-27 | Storage Technology Corporation | Pre-seeking process for enhancing reading and writing performance in a mass storage system having multiple individual disk drives |
-
1996
- 1996-04-22 US US08/636,112 patent/US5802569A/en not_active Expired - Fee Related
-
1997
- 1997-03-24 EP EP97301963A patent/EP0803817B1/de not_active Expired - Lifetime
- 1997-03-24 ES ES97301963T patent/ES2169319T3/es not_active Expired - Lifetime
- 1997-03-24 AT AT97301963T patent/ATE211837T1/de not_active IP Right Cessation
- 1997-03-24 DE DE69709483T patent/DE69709483T2/de not_active Expired - Lifetime
- 1997-04-14 JP JP9095754A patent/JPH1055307A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69709483D1 (de) | 2002-02-14 |
EP0803817B1 (de) | 2002-01-09 |
US5802569A (en) | 1998-09-01 |
JPH1055307A (ja) | 1998-02-24 |
EP0803817A1 (de) | 1997-10-29 |
ATE211837T1 (de) | 2002-01-15 |
ES2169319T3 (es) | 2002-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69709483T2 (de) | Ein Computersystem mit auf Anforderungstyp der CPU basierender Cache-Vorausladefähigkeit | |
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE69708188T2 (de) | Speichersteuerungseinheit | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE10232926B4 (de) | Verfahren zum Aufrechterhalten der Kohärenz in einer hierarchischen Cacheanordnung eines Computersystems | |
DE60222402T2 (de) | Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE69432133T2 (de) | Datenprozessor mit Cache-Speicher | |
DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
DE69616223T2 (de) | Datenstromvorausladepufferspeicher mit Datenstromfilters | |
DE69032781T2 (de) | System und Verfahren zur Optimierung von Cachespeicherung in einem auf Plattenspeicher basierendem Rechnersystem | |
DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
DE69721368T2 (de) | Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher | |
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE69132018T2 (de) | Rechner mit Vorausholungs-Cache-Speicher | |
DE69900797T2 (de) | Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen | |
US6651115B2 (en) | DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69902392T2 (de) | Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen | |
DE69814137T2 (de) | Cache-speicherbetrieb | |
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE69109803T2 (de) | Verfahren und Vorrichtung zur Aufrechterhaltung der Integrität eines Cachespeichers. | |
DE10050171B4 (de) | Verfahren zur Steuerung von Cache-Speichern |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8320 | Willingness to grant licences declared (paragraph 23) | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7 |