DE19526007C2 - Horizontal partitionierter Befehls-Cache-Speicher - Google Patents
Horizontal partitionierter Befehls-Cache-SpeicherInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims description 71
- 238000005192 partition Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 10
- 238000000638 solvent extraction Methods 0.000 claims description 9
- 239000000872 buffer Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 238000000034 method Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 241001432959 Chernes Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
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)
- Advance Control (AREA)
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:
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.
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)
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)
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 | ティアック株式会社 | 光ディスク装置 |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US7594081B2 (en) | 2004-09-10 | 2009-09-22 | Cavium Networks, Inc. | Direct access to low-latency memory |
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 |
WO2014143036A1 (en) | 2013-03-15 | 2014-09-18 | 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)
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)
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 |
KR940703050A (ko) * | 1991-11-04 | 1994-09-17 | 로날드 씨. 안데르슨 | 다중 기록 캐쉬를 포함한 메모리 유닛(memory unit including a multiple write cache) |
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 |
-
1995
- 1995-06-29 GB GB9513272A patent/GB2292822A/en not_active Withdrawn
- 1995-07-17 DE DE19526007A patent/DE19526007C2/de not_active Expired - Fee Related
- 1995-08-29 JP JP7245358A patent/JPH08328958A/ja not_active Ceased
-
1996
- 1996-12-09 US US08/762,539 patent/US5737750A/en not_active Expired - Lifetime
Patent Citations (1)
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)
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 |
---|---|
GB2292822A (en) | 1996-03-06 |
DE19526007A1 (de) | 1996-03-07 |
GB9513272D0 (en) | 1995-09-06 |
JPH08328958A (ja) | 1996-12-13 |
US5737750A (en) | 1998-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19526007C2 (de) | Horizontal partitionierter Befehls-Cache-Speicher | |
DE69432314T2 (de) | Cachespeicher mit aufgeteiltem pegel | |
DE69132495T2 (de) | Verteilter Verarbeitungsspeicher | |
DE69025302T2 (de) | Hochleistungsrasterpuffer- und -cachespeicheranordnung | |
DE602004007532T2 (de) | Integrierte schaltung und verfahren zum cache-umabbilden | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69721368T2 (de) | Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher | |
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE3687307T2 (de) | Computeranordnungen mit cache-speichern. | |
DE69028153T2 (de) | Cache-Speicherfehlgriffsvorhersageverfahren und -vorrichtung | |
DE69723286T2 (de) | Echtzeitprogramm-sprachbeschleuniger | |
DE69620702T2 (de) | Prozessor mit vom Kompilierer zugewiesener Zwischenspeicherung variabler Länge | |
DE3151745C2 (de) | ||
DE19943938B4 (de) | Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69316955T2 (de) | Rechenanlage mit synchronem, dynamischem Speicher | |
DE69229667T2 (de) | Simulierte cachespeicher-assoziativität | |
DE2617408B2 (de) | Speichermodul für ein Datenverarbeitungsgerät mit Speicherhierarchie | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3724317A1 (de) | Speicherzugriffssystem | |
DE69131917T2 (de) | Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür | |
DE10002120A1 (de) | Logikstruktur eines Adressumsetzpuffers | |
DE69130942T2 (de) | Vorrichtung zur Erhöhung der Leistung eines Adressenübersetzungspuffers | |
DE19526008A1 (de) | Vertikal partitionierter, primärer Befehls-Cache-Speicher |
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 |