DE19526007C2 - Horizontal partitionierter Befehls-Cache-Speicher - Google Patents

Horizontal partitionierter Befehls-Cache-Speicher

Info

Publication number
DE19526007C2
DE19526007C2 DE19526007A DE19526007A DE19526007C2 DE 19526007 C2 DE19526007 C2 DE 19526007C2 DE 19526007 A DE19526007 A DE 19526007A DE 19526007 A DE19526007 A DE 19526007A DE 19526007 C2 DE19526007 C2 DE 19526007C2
Authority
DE
Germany
Prior art keywords
cache
memory
array
instruction
region
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
DE19526007A
Other languages
English (en)
Other versions
DE19526007A1 (de
Inventor
Rajendra Kumar
Paul Gene Emerson
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19526007A1 publication Critical patent/DE19526007A1/de
Application granted granted Critical
Publication of DE19526007C2 publication Critical patent/DE19526007C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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

Description

Die vorliegende Erfindung bezieht sich auf einen Befehls- Cache-Speicher, der in zwei oder mehr Abschnitte logisch horizontal partitioniert ist.
Die meisten Mikroprozessoren haben Befehls-Cache-Speicher auf dem Chip, um einen schnelleren Zugriff auf die Daten, die im Speicher enthalten sind, zu ermöglichen. Typischer­ weise sind diese Cache-Speicher aufgrund ihrer Platzanfor­ derungen und ebenfalls aufgrund der Zykluszeitbeschränkungen relativ klein. Folglich ist es wichtig, daß diese Cache- Speicher effizient und effektiv verwendet werden; ansonsten leidet das Verhalten des Mikroprozessors.
Neben dem Verarbeitungssystem weist ein moderner Mikropro­ zessor typischerweise einen Daten-Cache-Speicher und einen Befehls-Cache-Speicher auf. Der Daten-Cache-Speicher spei­ chert Daten, von denen es wahrscheinlich ist, daß sie durch das Verarbeitungssystem (zum Beispiel Funktionaleinheiten oder eine zentrale Verarbeitungseinheit) als nächstes benö­ tigt werden. Der Befehls-Cache-Speicher speichert Befehle, die vor ihrer wahrscheinlichen Ausführung geholt wurden. Befehls-Cache-Speicher werden verwendet, um zwei unter­ schiedliche Typen von Befehlen, nämlich sequentielle Befehle und Verzweigungszielbefehle, zu speichern. Sequentielle Be­ fehle bilden den Hauptteil der Befehle bei den meisten Pro­ grammen. Verzweigungszielbefehle treten ebenfalls bei den meisten Programmen zum Beispiel aufgrund des Vorhandenseins von Schleifen innerhalb der Programme auf.
Bekannte Techniken zur Ausführung von Befehls-Cache-Spei­ chern weisen normalerweise zwei getrennte und unterschied­ liche Cache-Speicher auf, einen Befehls-Cache-Speicher, der die sequentiellen Befehle speichert, und einen weiteren Be­ fehls-Cache-Speicher, der die Verzweigungszielbefehle spei­ chert. Dieser herkömmliche Ansatz ist jedoch teuer in der Ausführung, weil zusätzliche Chipfläche sowie zusätzliche Busse zwischen den zwei Cache-Speichern erforderlich sind. Ferner kann dieser Ansatz auch zusätzliche Verzögerungen einführen. Ein weiterer bekannter Ansatz plaziert sowohl die sequentiellen als auch die Verzweigungszielbefehle in dem­ selben Befehls-Cache-Speicher. Dieser herkömmliche Ansatz hat ein erhebliches Verunreinigungsproblem derart, daß eine Befehlsart den anderen Typ ersetzen kann, wodurch möglicher­ weise erhebliche Verzögerungen eingeführt werden.
Die WO 93/09497 betrifft ein Cache-Speichersystem, das einen Cache-Speicher umfaßt, der in vier direkt abgebildete Cache-Speicherseiten partitioniert ist. Eine Partitionie­ rungsschaltung ist vorgesehen, die die Partitionierung des Cache-Speichers in die vier seiten bewirkt. Während einer Schreiboperation wirken die erste und die zweite Speicher­ region (die die vier Cache-Seiten umfassen), als getrennte Cache-Speicher. Während eines Lesezyklusses wird ein einzel­ ner Leseadreßewert an alle Cache-Speicherpartitionierungen angelegt und der Zieldatenwert wird dann aus den Werten aus­ gewählt, die durch die verschiedenen Partitionierungen be­ reitgestellt werden. Jeder Cache-Speicherseite ist ein Adreß-Array zugeordnet, das eine Übersetzung der absoluten Adresse, mit der die die Daten im Hauptspeicher gespeichert sind, in eine lokale Adresse in dem Cache-Speicher durch­ führt.
Die DE 43 30 751 A1 betrifft ein Cache-Speichersystem, bei dem die Daten, die nur einige wenige Male verwendet werden, nicht durch den Cache-Speicher durchtreten müssen.
Ausgehend von diesem Stand der Technik liegt der vorliegen­ den Erfindung die Aufgabe zugrunde, einen Cache-Speicher zu schaffen, der fähig ist, zwei Befehlstypen auf eine flexible und effektive Art zu speichern.
Diese Aufgabe wird durch einen Cache-Speicher nach Anspruch 1 gelöst.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend anhand der beiliegenden Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm einer Befehlseinheit gemäß einem ersten Ausführungsbeispiel der Erfindung;
Fig. 2 ein Blockdiagramm, das das erste Ausführungsbei­ spiel der Erfindung während einer Schreiboperation darstellt;
Fig. 3 ein Blockdiagramm eines Ausführungsbeispiels einer Adresschaltung gemäß der Erfindung; und
Fig. 4 ein Blockdiagramm, das das erste Ausführungsbei­ spiel der Erfindung während einer Leseoperation darstellt.
Fig. 1 ist ein Blockdiagramm einer Befehlseinheit 2 gemäß einem ersten Ausführungsbeispiel der Erfindung. Die Gesamt­ aufgabe der Befehlseinheit 2 (während einer Schreibopera­ tion) besteht darin, einen Befehl zusammen mit seinem zuge­ ordneten Tag (Adress-Tag; Tag = Markierung) zu empfangen und den Befehl und den Tag in einem Befehls-Cache-Speicher zu speichern. Bei Hochleistungscomputern würde der Befehl und das Tag typischerweise von einem Hauptspeicher oder einem Cache-Speicher der zweiten Stufe in einer vorgeholten Art erhalten. Die Befehlseinheit 2 führt nachfolgend (während einer Leseoperation) die geeigneten Befehle einer oder meh­ reren Funktionaleinheiten eines Verarbeitungssystems zu. Die Funktionaleinheiten führen dann die Befehle durch Ausführen verschiedener Operationen aus.
Die Befehlseinheit 2 schließt einen Tag-Puffer 4 und einen Vorhol-Puffer 6 ein. Der Vorhol-Puffer 6 empfängt Befehle von einem Befehlsstrom innerhalb eines Programms, das aus­ geführt wird (oder kurz davor steht, ausgeführt zu werden) und speichert die Befehle in dem Vorhol-Puffer 6. Die Be­ fehle können abhängig vom Entwurf des Verarbeitungssystems decodiert oder nicht decodiert sein. Der Tag-Puffer 4 spei­ chert die Tags, die den Befehlen, die in dem Vorhol-Puffer 6 gespeichert sind, entsprechen. Wie es oben beschrieben wur­ de, kann der Befehl und das Tag, die durch die Befehlsein­ heit 2 empfangen werden, von einem Cache-Speicher einer nie­ drigeren Stufe (zum Beispiel der Stufe Zwei) oder von einem Hauptspeicher kommen.
Die Befehlseinheit 2 schließt ebenfalls einen Cache-Speicher 10 ein. Der Cache-Speicher 10 ist ein einzelner Cache-Spei­ cher, das heißt, daß er ein einzelnes Speicherarray enthält. Der Cache-Speicher 10 ist horizontal in eine erste Speicher­ region 12 und in eine zweite Speicherregion 14 partitio­ niert. Während einer Schreiboperation in den Cache-Speicher 10 würde ein sequentieller Befehl und sein zugeordneter Tag in der ersten Speicherregion 12 über den Vorhol-Puffer 6 bzw. den Tag-Puffer 4 gespeichert. Alternativ würde, wenn der in den Cache-Speicher 10 zu schreibende Befehl ein Ver­ zweigungszielbefehl ist, der Befehl und sein zugeordneter Tag dann von dem Vorhol-Puffer 6 bzw. dem Tag-Puffer 4 in der zweiten Speicherregion 14 des Cache-Speichers 10 ge­ speichert werden.
Die Partitionierung des Cache-Speichers 10 wird durch wirk­ sames Anordnen eines Teilers innerhalb des Befehls-Cache- Speichers 10 erreicht, um eine Teilungslinie 16 der Parti­ tionierung zu bezeichnen. Die Teilungslinie ist jedoch nicht physikalisch vorhanden, wie es nachfolgend erklärt wird, sondern wird durch Adressierungsschemata erreicht.
Während einer Leseoperation wird ein Befehl entweder aus der ersten Speicherregion 12 oder aus der zweiten Speicherregion 14 gelesen, unabhängig von der Partitionierung bei der Tei­ lungslinie 16. Das heißt, welcher Befehl innerhalb des Cache-Speichers 10 auch immer ein Tag aufweist, das mit dem Tag übereinstimmt, das dem zu lesenden Befehl zugeordnet ist, wird an einen Befehlspuffer 18 zugeführt. Danach führt der Befehlspuffer 18 den Befehl der entsprechenden Funk­ tionaleinheit des Verarbeitungssystems zu.
Fig. 2 ist ein Blockdiagramm das das erste Ausführungsbei­ spiel der Erfindung während einer Schreiboperation dar­ stellt. Im allgemeinen sind während einer Schreiboperation die Tag-Daten 20 und die Befehls-Daten 22 (die über die Puf­ fer 4 und 6 bereitgestellt sind) auf Schreibbitleitungen (WBL) 24 angeordnet. Der Cache-Speicher 10 verwendet während der Schreiboperation ebenfalls Schreibwortleitungen (WWL) 26. Eine Speicherzelle ist an jedem Schnittpunkt einer WBL und einer WWL innerhalb des Cache-Speichers 10 vorhanden. Ein Decodierer 28 empfängt eine Adresse 30, die eine von mehreren Schreibwortleitungen (WWL) 26 auswählt. Die ausge­ wählte WWL wird dann aktiviert, um die Tag-Daten 20 und die Befehls-Daten 22 in dem Cache-Speicher 10 bei der Speicher­ zelle, die der ausgewählten WWL zugeordnet ist, zu spei­ chern.
Um die Erfindung auszuführen, ist die Teilungslinie 16 wirk­ sam, um den Cache-Speicher 10 in die erste Speicherregion 12 und in die zweite Speicherregion 14 zu partitionieren. Dem­ entsprechend ist der Decoder 28 derart wirksam, daß er eine der Schreibwortleitungen WWL1-WWLn als die ausgewählte WWL auswählt, wenn der in den Cache-Speicher 10 zu schreibende Befehl ein sequentieller Befehl ist. Dies bewirkt, daß der sequentielle Befehl in der ersten Speicherregion 12 des Cache-Speichers 10 gespeichert wird. Der Decoder 28 wird an­ dererseits wirksam sein, um eine der Schreibwortleitungen WWLn + 1 bis WWLn + m als ausgewählte WWL auszuwählen, wenn der in das Cache-Speicher 10 zu schreibende Befehl ein Verzwei­ gungszielbefehl ist.
Bei diesem Ausführungsbeispiel wird die Adresse 30, die dem Decodierer 28 zugeführt wird, auf eine neuartige Art gesteu­ ert, so daß der Decodierer 28 die geeignete Schreibwortlei­ tung (WWL) 26 auf der Grundlage des Befehlstyps, der in dem Cache-Speicher 10 zu speichern ist, auswählt.
Fig. 3 ist ein Blockdiagramm eines Ausführungsbeispiels einer Adresschaltung 32 gemäß der Erfindung. Die Adresschal­ tung 32 schließt eine sequentielle Adresserzeugungsschaltung 34 ein, die eine sequentielle Adresse erzeugt, und eine Zieladresserzeugungsschaltung 36 ein, die eine Zieladresse erzeugt. Beide Adresserzeugungsschaltungen 34, 36 empfangen eine Basisnummer von einem programmierbaren Basisregister 38, eine Cache-Speicher-Größe von einem Cache-Speicher- Größenregister 40, und ein Rücksetzsignal 42. Der Basiswert, der in dem programmierbaren Basisregister 38 gespeichert ist, ist ein Wert, der anzeigt, wo der Cache-Speicher 10 zu partitionieren ist. Wenn der Cache-Speicher 10 in mehr als zwei Regionen zu partitionieren ist, wird das programmier­ bare Basisregister unterschiedliche Werte enthalten, die an­ zeigen, wo die Partitionierungen auftreten. Der (die) Basis­ wert(e) können in dem programmierbaren Basisregister 38 beim Einschalten oder alternativ durch Softwaretechniken gespei­ chert sein. Der Vorteil der Softwaretechniken besteht darin, daß das programmierbare Basisregister 38 dynamisch verändert werden kann. Beispielsweise könnte das programmierbare Ba­ sisregister 38 adressierbar sein, und ein spezieller Lade­ befehl könnte ausgeführt werden, um einen Basiswert in das programmierbare Basisregister 38 zu schreiben.
Die Adresschaltung 32 schließt ebenfalls einen Auswähler 44 ein, der auf der Grundlage eines Auswahlsignals 46 die se­ quentielle Adresse oder die Zieladresse aussucht. Das Aus­ wahlsignal 46 kann durch Hardware (nicht dargestellt) in der Befehlseinheit 2 bereitgestellt sein, die ohne weiteres be­ stimmen kann, ob der vorgeholte Befehl zum Beispiel ein se­ quentieller Befehl oder ein Verzweigungszielbefehl ist. Beim Vorholen eines Befehls weiß die Befehlseinheit 2 zum Bei­ spiel, ob sie einen sequentiellen Befehl oder einen Verzwei­ gungszielbefehl holt, da eine Art von Vorhersageschema ty­ pischerweise verwendet wird, um zu entscheiden, ob eine Ver­ zweigung wahrscheinlich durchgeführt wird oder nicht. Wäh­ rend des Vorholens eines Befehls kann daher ein Ziel/Sequen­ tiell-Bit gesetzt werden und danach verwendet werden, um das Auswahlsignal 46 zu erzeugen.
Tatsächlich entspricht der Basiswert, der in dem program­ mierbaren Basisregister 38 gespeichert ist, dem Wert n, der in Fig. 2 gezeigt ist, und die Cache-Speicher-Größe, die in dem Cache-Speicher-Größenregister 40 gehalten ist, ent­ spricht dem Wert n + m, der in Fig. 2 gezeigt ist. Bei dem oben beschriebenen Ausführungsbeispiel, bei dem der Cache- Speicher 10 lediglich in zwei Regionen partitioniert ist, würde die Schreibwortleitung WWLn + m die letzte Wortleitung für die zweite Speicherregion 14 anzeigen. Der Wert, der in dem programmierbaren Basisregister 38 gespeichert ist, würde den Wert n anzeigen, was die letzte Schreibwortleitung (WWLn) in der ersten Speicherregion 12 ist.
Die Adresserzeugungsschaltungen 34 und 36 können durch di­ gitale Zähler ausgeführt sein. Ferner können die Techniken, die verwendet werden, um die bestimmte Schreibwortleitung zu bestimmen, die innerhalb der Region, die die zu schreibenden Daten speichert, aktiviert werden soll, durch zahlreiche be­ kannte Algorithmen bestimmt werden. Ein bekannter Algorith­ mus ist ein zufälliger Ersetzungsalgorithmus. Bei der Ver­ wendung der zufälligen Ersetzung würde die Adresserzeugungs­ schaltungen 34 und 36 einfach zufällig eine Adresse inner­ halb der fraglichen Region erzeugen. Ein weiterer bekannter Algorithmus würde darin bestehen, die Region innerhalb des Cache-Speichers zu durchsuchen, bis eine verfügbare Schreib­ wortleitung gefunden ist. Die erste Schreibwortleitung, von der bestimmt wurde, daß sie verfügbar ist, würde dann ver­ wendet, um die zu schreibenden Daten zu speichern. Mittels dieses Ansatzes wird die Verfügbarkeit einer bestimmten Schreibwortleitung typischerweise durch ein Extra-Bit ange­ zeigt, das jedem in dem Cache-Speicher gespeicherten Wort zugeordnet ist. Dieses Extra-Bit wird bevorzugterweise in einem Hintergrundmodus des Verarbeitungssystems gesetzt oder zurückgesetzt. In diesem Fall könnte das Verarbeitungssystem jede Region innerhalb des Cache-Speichers durchsuchen, bis es eine Schreibwortleitung findet, die verfügbar ist, und dann die zu speichernden Daten als nächstes an diesem Ort speichern. Wenn keine verfügbare Schreibwortleitung inner­ halb einer vorbestimmten Zeitdauer gefunden wird, dann könn­ te eine Schreibwortleitung willkürlich ausgewählt werden.
Fig. 4 ist ein Blockdiagramm eines Cache-Speichers während einer Leseoperation. Der Cache-Speicher 10 schließt Lesebit­ leitungen (RBL) 48 und 49, Übereinstimmungsleitungen 50 und Schreibleitungen 52 ein. Während einer Leseoperation sind die Tag-Daten 54 auf einer bestimmten der Lesebitleitungen (RBL) 48 angeordnet. Die Tag-Daten 54 werden dann mit dem Tag, das an den Speicherzellen, die jeder der Übereinstim­ mungsleitungen (ML) 50 zugeordnet sind, gespeichert ist, verglichen. Im besten Fall würde eine der Übereinstimmungs­ leitungen ML 50 beim Finden einer Übereinstimmung zwischen dem gespeicherten Tag und dem zugeführten Tag aktiviert. Die aktivierte Übereinstimmungsleitung wird in einen hohen Zu­ stand getrieben und im Latch 56 zwischengespeichert. Der Latch 56 treibt dann seinerseits getrennt seine zugeordnete Wortleitung (WL) 52 über einen Puffer 58. Obwohl lediglich ein Latch 56 und ein Puffer 58 in Fig. 4 gezeigt sind, ist es offensichtlich, daß jeder Übereinstimmungsleitung ein Latch 56 und ein Puffer 58 zugeordnet ist. Die bestimmte Wortleitung (WL) 52, die getrieben ist, bewirkt, daß die Daten, die dem Befehl zugeordnet sind, der in den Speicher­ zellen, die dieser Wortleitung zugeordnet sind, gespeichert ist, auf den Lesebitleitungen 49 angeordnet werden, die den gespeicherten Befehlen zugeordnet sind. Die gespeicherten Befehle werden dadurch dem Befehlspuffer über die Lesebit­ leitungen 49 zugeführt.
Das Verarbeitungssystem führt Operationen oder Befehle in Übereinstimmung mit einem Zeitverlaufstakt (CLK), der eine Periode P hat, aus. Als ein Beispiel sei die Periode P ge­ nannt, die derzeitig bei Hochleistungscomputern, wie zum Beispiel Workstations, etwa vier Nanosekunden beträgt. Um solche Geschwindigkeiten zu erreichen, wird das Vergleichen des Daten-Tags 54 mit dem bei den Speicherzellen gespei­ chertem Tag bevorzugterweise durch Verwendung eines Inhalts­ adressierbaren Speichers (CAM = Content-Addressable Memory) für die Speicherzellen, die den Tag enthalten, erreicht. Die Speicherzellen, die den Befehl enthalten, sind bevorzugter­ weise durch Speicher mit wahlfreiem Zugriff (RAM) ausge­ führt. Während einer ersten Hälfte des Zeitverlaufstaktzy­ klus erfolgt eine Adressbeurteilung in dem CAM, und die RAM-Speicherung wird vorgeladen. Während der zweiten Hälfte des Zeitverlaufstaktzyklus wird das RAM gelesen, und der CAM wird vorgeladen.
Obwohl sich die oben beschriebenen Ausführungsbeispiele alle auf ein Cache-Speicher beziehen, das in zwei Regionen parti­ tioniert ist, kann die Erfindung ebenfalls verwendet werden, um das Cache-Speicher in mehr als zwei Partitionierungen zu partitionieren. Ein Cache-Speicher könnte zum Beispiel in drei Regionen partitioniert sein, die eine sequentielle Be­ fehlsregion, eine Verzweigungszielbefehlregion und eine Op­ fer-Cache-Speicher-Region einschließen. In diesem Fall kann, wenn Fehlgriffe (Miss) in einem Cache-Speicher der zweiten Ebene auftritt, die Leitung in dem Cache-Speicher der zwei­ ten Ebene, die ersetzt wird, in dem Opfer-Cache-Speicher ge­ speichert werden. Hierbei könnten die Schreibbitleitungen verwendet werden, um die Cache-Speicher-Leitung, die ersetzt wird, zurück in den Opfer-Cache-Speicher zu schreiben. Wenn die sequentielle Befehlsregion, die Verzweigungszielbefehl­ region und eine Opfer-Cache-Speicher-Region alle dieselben Tags (zum Beispiel alle physikalischen oder alle virtuellen Tags) verwenden, dann kann auf die drei Regionen während einer Ein-Zyklus-Leseoperation gleichzeitig Bezug genommen werden. Wenn alle Regionen nicht dieselben Tags verwenden, dann sind zwei Zyklen erforderlich. Im ersten Zyklus kann das virtuelle Tag verglichen werden, und eine Adressüberset­ zung wird durchgeführt, um ein physikalisches Tag zu erhal­ ten. Wenn ein Fehlgriff in dem ersten Zyklus auftritt, dann werden in dem zweiten Zyklus die Region(en), die ein physi­ kalisches Tag verwenden, auf einen Treffer hin überprüft. Wenn ein Treffer in dem zweiten Zyklus auftritt, dann wird die Cache-Leitung gelesen und möglicherweise in eine andere Region des Cache-Speichers bewegt, um den Ein-Zyklus-Nach­ teil bei zukünftigen Zugriffen auf dieselbe Cache-Speicher- Leitung zu vermeiden.
Eine dynamische oder adaptive Anwendung der Erfindung wäh­ rend des Ausführens eines Softwareprogramms ist vorteilhaft, wenn die Software Schleifen innerhalb des Programmcodes ent­ hält. Ein Compiler würde zum Beispiel Abschnitte in dem Pro­ grammcode identifizieren, in denen eine Schleife ausgeführt wird, und dann in dem Code einen Befehl anzeigen, der (wenn ausgeführt) die Größe der Region in dem Cache-Speicher, die den Verzweigungszielbefehlen vor solchen Schleifenabschnit­ ten zugeordnet sind, erhöhen würde. Dann würde, wenn der Programmcode den Schleifenabschnitt verläßt, der Compiler einen weiteren Befehl einfügen, der bewirkt, daß sich die Größe der Verzweigungszielbefehlregion innerhalb des Cache- Speichers erniedrigt. Eine solche Technik würde die Verwen­ dung des Cache-Speichers in Übereinstimmung mit der Natur des ausgeführten Programms optimieren. Das programmierbare Basisregister 38 könnte verwendet werden, um die Partitio­ nierungsinformationen dynamisch zu speichern.
Die Erfindung arbeitet sowohl für direkt-abgebildete als auch für vollständig assoziative Cache-Speicher gut. Über­ dies kann, obwohl die Erfindung oben primär anhand von Be­ fehls-Cache-Speicher-Ausführungsbeispielen beschrieben wur­ de, die Erfindung ebenfalls als Daten-Cache-Speicher ausge­ führt sein, wo es sinnvoll wäre, aus Verhaltensgründen un­ terschiedliche Datenstücke zu partitionieren. Die Erfindung kann verwendet werden, um einen Cache-Speicher in eine Be­ fehls-Cache-Speicher-Region und in eine Daten-Cache-Spei­ cher-Region zu partitionieren.

Claims (3)

1. Cache-Speicher, mit:
einem einzigen Array von Speicherzellen zum Speichern von Daten mit zugeordneter Adresse; und
einer Partitionierungsschaltung, die das Array während einer Schreiboperation in eine erste Speicherregion (12) und in eine zweite Speicherregion (14) partitio­ niert;
wobei während einer Schreiboperation in das Array die erste und die zweite Speicherregion (12, 14) als ge­ trennte Cache-Speicher wirksam sind;
wobei während einer Leseoperation das Array als ein einziger Cache-Speicher unabhängig von der ersten und der zweiten Speicherregion (12, 14) wirksam ist;
dadurch gekennzeichnet,
daß die Partitionierungsschaltung aufweist:
  • 1. - ein Basisregister (38), das einen Basiswert enthält, der anzeigt, an welcher Stelle das Array partitio­ niert ist;
  • 2. - eine Adresserzeugungseinrichtung (34, 44), die den Basiswert und Informationen bezüglich der Art der in dem Array zu speichernden Daten empfängt, und auf der Grundlage des Basiswertes und der Informationen eine Adresse in der ersten Speicherregion (12) oder in der zweiten Speicherregion (14) des Arrays bestimmt, an der die Daten mit ihrer zugeordneten Adresse gespei­ chert werden.
2. Cache-Speicher nach Anspruch 1, bei dem die Partitio­ nierungsschaltung das Array dynamisch partitioniert.
3. Cache-Speicher nach Anspruch 2, bei dem die Partitio­ nierungsschaltung die Partitionierung des Array dyna­ misch durch einen Programmbefehl, der in einem Compu­ terprogramm enthalten ist, das durch ein Verarbeitungs­ system, das den Cache-Speicher einschließt, ausgeführt wird, verändert.
DE19526007A 1994-08-31 1995-07-17 Horizontal partitionierter Befehls-Cache-Speicher Expired - Fee Related DE19526007C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US29886194A 1994-08-31 1994-08-31

Publications (2)

Publication Number Publication Date
DE19526007A1 DE19526007A1 (de) 1996-03-07
DE19526007C2 true DE19526007C2 (de) 1998-08-20

Family

ID=23152282

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19526007A Expired - Fee Related DE19526007C2 (de) 1994-08-31 1995-07-17 Horizontal partitionierter Befehls-Cache-Speicher

Country Status (4)

Country Link
US (1) US5737750A (de)
JP (1) JPH08328958A (de)
DE (1) DE19526007C2 (de)
GB (1) GB2292822A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10056764B4 (de) * 1999-12-08 2007-09-06 International Business Machines Corp. Verfahren und System für eine verbesserte Nutzung der Puffergröße in einem parallelen Prozessor

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5787472A (en) * 1995-07-31 1998-07-28 Ibm Corporation Disk caching system for selectively providing interval caching or segment caching of vided data
JP3348367B2 (ja) * 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
US6745292B1 (en) * 1995-12-08 2004-06-01 Ncr Corporation Apparatus and method for selectively allocating cache lines in a partitioned cache shared by multiprocessors
GB2311880A (en) * 1996-04-03 1997-10-08 Advanced Risc Mach Ltd Partitioned cache memory
US5966734A (en) * 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
GB9701960D0 (en) * 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
US5963972A (en) * 1997-02-24 1999-10-05 Digital Equipment Corporation Memory architecture dependent program mapping
US6058456A (en) * 1997-04-14 2000-05-02 International Business Machines Corporation Software-managed programmable unified/split caching mechanism for instructions and data
TW322549B (en) * 1997-05-29 1997-12-11 United Microelectronics Corp Memory saving method and devices
US5909694A (en) * 1997-06-12 1999-06-01 International Business Machines Corporation Multiway associative external microprocessor cache
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
GB9727485D0 (en) * 1997-12-30 1998-02-25 Sgs Thomson Microelectronics Processing a data stream
DE19815382C2 (de) * 1998-04-06 2000-02-10 Sgs Thomson Microelectronics Elektrische Schaltungsanordnung mit einer wählbaren Zuordnung von physikalisch dikreten RAM-Speichern zu einzelnen Datenkategorien
US6286081B1 (en) * 1998-05-19 2001-09-04 Advanced Micro Devices, Inc. Mechanism for ensuring data coherency during sequential readings of portions of data that changes with time
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
JP3738134B2 (ja) * 1998-06-19 2006-01-25 三洋電機株式会社 デジタル信号処理装置
US6370619B1 (en) * 1998-06-22 2002-04-09 Oracle Corporation Managing partitioned cache
US6205537B1 (en) 1998-07-16 2001-03-20 University Of Rochester Mechanism for dynamically adapting the complexity of a microprocessor
US6427192B1 (en) * 1998-09-21 2002-07-30 Advanced Micro Devices, Inc. Method and apparatus for caching victimized branch predictions
US6859861B1 (en) * 1999-01-14 2005-02-22 The United States Of America As Represented By The Secretary Of The Army Space division within computer branch memories
GB2345770B (en) * 1999-01-15 2003-06-25 Advanced Risc Mach Ltd Data processing memory system
GB9901933D0 (en) * 1999-01-28 1999-03-17 Univ Bristol Cache memory
US6378066B1 (en) * 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US6314494B1 (en) * 1999-04-15 2001-11-06 Agilent Technologies, Inc. Dynamically size configurable data buffer for data cache and prefetch cache memory
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US7051192B2 (en) * 2000-05-31 2006-05-23 Sun Microsystems, Inc. Facilitating value prediction to support speculative program execution
US6792509B2 (en) 2001-04-19 2004-09-14 International Business Machines Corporation Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria
US6678814B2 (en) * 2001-06-29 2004-01-13 International Business Machines Corporation Method and apparatus for allocating data usages within an embedded dynamic random access memory device
US20030105926A1 (en) * 2001-12-03 2003-06-05 International Business Machies Corporation Variable size prefetch cache
US7330954B2 (en) * 2002-04-18 2008-02-12 Intel Corporation Storing information in one of at least two storage devices based on a storage parameter and an attribute of the storage devices
US6895475B2 (en) * 2002-09-30 2005-05-17 Analog Devices, Inc. Prefetch buffer method and apparatus
JP4258332B2 (ja) * 2003-09-30 2009-04-30 ティアック株式会社 光ディスク装置
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US9075730B2 (en) * 2012-12-21 2015-07-07 Advanced Micro Devices, Inc. Mechanisms to bound the presence of cache blocks with specific properties in caches
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US10296465B2 (en) 2016-11-29 2019-05-21 Board Of Regents, The University Of Texas System Processor using a level 3 translation lookaside buffer implemented in off-chip or die-stacked dynamic random-access memory
US11256618B2 (en) 2017-07-06 2022-02-22 Silicon Motion, Inc. Storage apparatus managing system comprising local and global registering regions for registering data and associated method
CN109213692B (zh) * 2017-07-06 2022-10-21 慧荣科技股份有限公司 存储装置管理系统以及存储装置管理方法
US10261915B2 (en) * 2017-09-15 2019-04-16 Board Of Regents, The University Of Texas System Intelligently partitioning data cache to allocate space for translation entries
US10282129B1 (en) * 2017-10-24 2019-05-07 Bottomline Technologies (De), Inc. Tenant aware, variable length, deduplication of stored data
US11550577B2 (en) 2019-05-15 2023-01-10 Western Digital Technologies, Inc. Memory circuit for halting a program counter while fetching an instruction sequence from memory
US11048636B2 (en) * 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets
KR102472721B1 (ko) * 2020-12-02 2022-11-30 울산과학기술원 전자 장치 및 이의 제어 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993000497A1 (en) * 1991-06-26 1993-01-07 Blindart Pomezia S.P.A. Entrance unit for rooms to be protected

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4583162A (en) * 1983-01-13 1986-04-15 The Singer Company Look ahead memory interface
JPS63257853A (ja) * 1987-04-03 1988-10-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン キヤツシユ・メモリ・システム
US5101344A (en) * 1988-01-28 1992-03-31 Motorola, Inc. Data processor having split level control store
US4945512A (en) * 1988-09-07 1990-07-31 Unisys Corporation High-speed partitioned set associative cache memory
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
FR2664719A1 (fr) * 1990-07-10 1992-01-17 Philips Electronique Lab Dispositif de controle pour une memoire tampon a partitionnement reconfigurable.
JPH0799508B2 (ja) * 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5293609A (en) * 1991-04-19 1994-03-08 International Business Machines Corporation Hit-density-based replacement for data cache with prefetching
DE69224649T2 (de) * 1991-11-04 1998-06-25 Unisys Corp Speichereinheit mit mehrfach schreibbarem cachespeicher
US5434992A (en) * 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US5381528A (en) * 1992-10-15 1995-01-10 Maxtor Corporation Demand allocation of read/write buffer partitions favoring sequential read cache
JPH06242951A (ja) * 1992-12-22 1994-09-02 Toshiba Corp キャッシュメモリシステム
US5619699A (en) * 1995-05-22 1997-04-08 Bull Hn Information Systems Inc. Operating system translator incorporating unix piping capability for a proprietary operating system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993000497A1 (en) * 1991-06-26 1993-01-07 Blindart Pomezia S.P.A. Entrance unit for rooms to be protected

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10056764B4 (de) * 1999-12-08 2007-09-06 International Business Machines Corp. Verfahren und System für eine verbesserte Nutzung der Puffergröße in einem parallelen Prozessor

Also Published As

Publication number Publication date
DE19526007A1 (de) 1996-03-07
JPH08328958A (ja) 1996-12-13
US5737750A (en) 1998-04-07
GB9513272D0 (en) 1995-09-06
GB2292822A (en) 1996-03-06

Similar Documents

Publication Publication Date Title
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE602004007532T2 (de) Integrierte schaltung und verfahren zum cache-umabbilden
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE112005003863B3 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE3724317C2 (de)
DE2617408C3 (de) Speichermodul fur ein Datenverarbeitungsgerät mit Speicherhierarchie
DE3151745C2 (de)
DE19943938B4 (de) Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE3618163C2 (de) Speichermanagementanordnung für ein Mikroprozessorsystem
DE2944419C2 (de)
DE112007001397T5 (de) Vorrichtung und Verfahren zum Vorabholen von Daten
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE4234695C2 (de) Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache
DE4234194A1 (de) System und verfahren zur speichersegmentierung fuer einen mikroprozessor
DE102021108478A1 (de) System und Verfahren zur Cache-Verzeichnis-TCAM-Fehlererkennung und - Korrektur
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers
DE60029270T2 (de) Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers
DE19947055A1 (de) Verfahren und Vorrichtung zur Steuerung eines Cache-Speichers

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee