DE3724730A1 - Cache-steuereinrichtung - Google Patents
Cache-steuereinrichtungInfo
- Publication number
- DE3724730A1 DE3724730A1 DE19873724730 DE3724730A DE3724730A1 DE 3724730 A1 DE3724730 A1 DE 3724730A1 DE 19873724730 DE19873724730 DE 19873724730 DE 3724730 A DE3724730 A DE 3724730A DE 3724730 A1 DE3724730 A1 DE 3724730A1
- Authority
- DE
- Germany
- Prior art keywords
- cache
- prefetch
- bus
- address
- memory
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
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)
- Bus Control (AREA)
- Multi Processors (AREA)
Description
Die Erfindung bezieht sich auf ein Datenverarbeitungssystem
und insbesondere auf eine Einrichtung zur Steuerung eines
Cache-Speichers, der ein lokales Speichermedium für häufig
zugegriffene Speicherplätze bildet.
Ein Cache-Speicher ist ein relativ schneller, kleiner, geräteeigener
Speicher, der der örtlichen Speicherung häufig benutzter
Speicherplätze eines größeren, relativ langsamen Hauptspeichers
dient. Durch örtliche Speicherung der Information
oder einer Kopie der Information ist der Cache-Speicher in der
Lage, Speicherreferenzen abzufangen und ohne Übertragung der
entsprechenden Anforderung an den Hauptspeicher über den Systembus
Speicherreferenzen direkt zu bearbeiten. Die Folge ist
ein geringerer Verkehr über den Speicherbus und eine verringerte
Latenz auf dem lokalen oder geräteeigenen Bus zum anfordernden
Prozessor. Bei einem Multiprozessorsystem erhöht die
Verwendung eines Cache-Speichers auch die mögliche Leistungsfähigkeit
der Systeme, indem der Bedarf eines jeden Prozessors
an Systembusbandbreite verringert und dadurch die Anbindung
von mehr Prozessoren an das System ermöglicht wird.
Es ist vorteilhaft, einen einzigen Cache-Speicher mit zugehöriger
Steuereinrichtung und Adreßverzeichnis vorzusehen, in
den sich eine Anzahl von Prozessoren teilen. Bei sehr großen
Integrationssystemen (VLSI) ist es auch vorteilhaft, den
Cache-Speicher so auslegen zu können, daß er je nach Systemkonfugation
einen, zwei oder mehr Prozessoren bedienen
kann.
Der Erfindung liegt die Aufgabe zugrunde, eine Cache-Inhaltsverzeichnis-
und Steuereinrichtung zu schaffen, welche in zwei
oder mehr logische Inhaltsverzeichnisse (directories) zur
Steuerung der Anforderungen von zwei oder mehr Prozessoren
aufgeteilt werden kann.
Zur Lösung dieser Aufgabe sieht die Erfindung die Merkmale des
Anspruchs 1 vor.
Die Erfindung sieht also eine Cache-Directory-Anordnung vor,
die in eine Vielzahl von Wegen konfiguriert werden kann, wobei
jeder Weg ein Zustandskennzeichen und eine Gültigkeitsbitspeicherung
zum assoziativen Suchen nach Cache-Datenfeldadressen
im Directory aufweist. Ein Cache-Konfigurationsregister teilt
den Cache-Directory in zwei oder mehr logische Inhaltsverzeichnisse,
die die Anforderungen aus zwei oder mehr Prozessoren
steuern können.
Ein Vorabrufpuffer ist zusammen mit einem Vorabruf-Steuerregister
vorgesehen, wobei letzteres den Vorabrufpuffer in zwei
oder mehr logische Kanäle unterteilt. Die logischen Kanäle
verarbeiten Cache-Vorabrufe, die den von zwei oder mehr Prozessoren
kommenden Anforderungen zugeordnet sind.
Die Erfindung hat den Vorteil, daß eine einzige Cache-Inhaltsverzeichnis-
bzw. -Directory- und Steuereinrichtung von zwei
oder mehr Prozessoren benutzt und auf die im System verfügbare
Anzahl von Prozessoren konfiguriert werden kann.
Im folgenden wird die Erfindung anhand eines in der Zeichnung
dargestellten Ausführungsbeispiels näher erläutert. In der
Zeichnung zeigen:
Fig. 1 ein Blockschaltbild eines Dualsystembus-Multiprozessorsystems,
in welchem die Erfindung realisiert
werden kann;
Fig. 2 ein Blockschaltbild einer Bus-Erweiterungseinheit
(BXU), in der die Erfindung verwirklicht ist;
Fig. 3 ein Blockschaltbild der Cache-Directory-Anordnung
gemäß Fig. 2;
Fig. 4 ein detaillierteres Blockdiagramm der in Fig. 2
gezeigten I/O Vorabruflogik; und
Fig. 5 ein Zeitgabediagramm bei einer typischen Cache-
Fülloperation.
In Fig. 1 ist ein Blockdiagramm eines Dual-Systembus-Multiprozessorsystems
gezeigt. Bus-Erweiterungseinheiten 10, 12, 30,
32 sind mit Dual-Systembussen 20, 22 und lokalen (internen)
Bussen oder Ortsbussen 18, 38 verbunden. Die Ortsbusse bilden
die Schnittstelle zu Kanalprozessoren 14, 16 und generalisierten
Datenprozessoren 34, 36. Der örtliche Bus wird auf der
Seite der Bus-Erweiterungseinheit (BXU) von einer Ortsbus-
Steuerlogik gesteuert. Diese Logik bildet Adreßerkenner zur
Unterstützung von Mehrfachspeicheradreßbereichen. Sie unterstützt
auch die Zusammenarbeit zwischen Mehrfachbus-Erweiterungseinheiten
zur Schaffung einer wirksamen Operation mit den
Mehrfachbussen 20, 22.
Fig. 2 ist ein Blockschaltbild der in Fig. 1 gezeigten Bus-Erweiterungseinheit
10. Die Bus-Erweiterungseinheit 10 ist mit
einem Systembus 20 über eine Systembus-Steuerlogik 60 und mit
einem Ortsbus 18 über eine Ortsbus-Steuerlogik 68 verbunden.
Der Aufbau des Systembus 20 ist beispielsweise in den US-PS'n
43 15 308, 44 80 307 und 44 73 880 beschrieben. Die Systembus-
Steuerlogik 60 weist eine Logik für Zuweisungsentscheidung,
Pipeline-Überwachung, Adreßerkennung und Bussignalisierung
auf, wie in den oben genannten Patenten beschrieben ist. Die
Systembus-Steuerlogik 60 bewirkt eine Pufferung zum Halten von
Anforderungen und Antworten bei deren Bewegung zwischen dem
Bus und der internen Logik der BXU. Die Systembus-Steuerlogik
60 bildet sechs Puffer, von denen jeder ein gesamtes Buspaket
halten bzw. puffern kann. Drei Puffer sind abgehenden Anforderungen
und drei Puffer einlaufenden Anforderungen zugeordnet.
Zwei Vorabrufkanäle sind zur Verarbeitung von I/O-Übertragungsströmen
vorgesehen. Jeder Kanal bildet zwei 16-Byte-Puffer.
Wenn der Kanalprozessor Daten aus den Puffern anfordert,
ruft der BXU automatisch den nächsten Datenblock im voraus ab.
Dies erhöht die I/O-Leistungsfähigkeit beträchtlich, da die
Kanalprozessoranforderungen nach Daten unmittelbar von den
Vorabrufpuffern bearbeitet werden.
Die Kanalprozessoren 14, 16 in Fig. 1 sorgen für die Steuerung
von Datenübertragungen zu und von Geräten, die an die I/O-Busse
46, 48 angeschlossen sind.
Die Speichersteuereinheiten 50, 51 sorgen für die Steuerung
von Datenübertragungen zu und aus Speicherfeldern, die mit den
Speicherbussen 54, 56 verbunden sind.
Die Cache-Directory-Anordnung 62 und die Cache-Steuerung 64 im
BXU gemäß Fig. 2 sind in Fig. 3 genauer gezeigt. Sie steuern
einen Cache-Speicher 24, der extern zur BXU oder auf demselben
Chip wie die BXU angeordnet sein kann. Der Vorteil eines externen
Cache-Speichers liegt darin, daß größere Cache-Speicher
vorgesehen sein können.
Die dem Cache-Speicher zugeordnete Directory- und Steuerlogik
enthält einen Kohärenzalgorithmus, der sicherstellt, daß Prozessoranforderungen
stets korrekt bedient werden, selbst wenn
sich mehrere Prozessoren jeweils mit eigenen Cache-Speichern
in dieselben Datenstrukturen teilen.
Im folgenden wird auf Fig. 3 Bezug genommen. Die Funktion der
Directory-Anordnung 62 ist die Speicherung von Adressen, welche
im Cache-Speicher 24 gespeicherten Daten entsprechen. Die
Directory-Anordnung kann in einem oder mehreren Wegen konfiguriert
sein. In Fig. 3 ist die Directory-Anordnung in vier Wege
0, 1, 2, 3 konfiguriert. Eine Zeile (line) ist die Basiseinheit
von zwischen dem Cache-Speicher und dem Hauptspeicher
übertragenen Daten. Sie besteht aus 16 Datenbytes. Eine Zeile
ist auch als Übertragungsblock bekannt. Wenn die einer besonderen
Adresse entsprechenden Daten im Cache-Speicher gespeichert
sind, kann der Cache-Speicher die Daten zur Verfügung
stellen und dadurch den Zugriff zum Hauptspeicher überflüssig
machen. Dies wird als "Cache-Treffer" (cache hit) bezeichnet.
Die Entscheidung ob Treffer oder nicht wird auf einer Pro-Zeilen-
Basis gefällt. Ein Adreßblock ist die Grundeinheit einer
Cache-Adressierung. Jeder Adreßblock beschreibt die physikalische
Adresse von acht oder vier benachbarten Zeilen von Daten.
Jeder Zeile innerhalb eines Adreßblocks ist ein gültiges Bit
zugeordnet. Wenn die Zeile im Cache-Speicher vorhanden ist, so
wird das gültige Bit eingeschaltet. Die Adreßinformation, die
im Cache-Directory gehalten wird, wird als Kennzeichen (tag)
bezeichnet. Da viele Adressen zu einem einzigen Adreßblock
zusammengefaßt sind, dient die Kennzeicheninformation zur
Identifizierung der genauen Speicherplätze, die derzeit einem
Adreßblock zugeordnet sind. Ein Treffer ergibt sich, wenn das
Kennzeichen eines Adreßblocks mit der Busadresse übereinstimmt
und das gewünschte Zeilen-Gültigkeitsbit ansteht.
Jeder Weg schafft eine Speicherung für die Kennzeichen- und
Gültigkeitsbits. Im Falle von mehreren Wegen wie bei dem Ausführungsbeispiel
gemäß Fig. 3 werden mehrere gleichzeitige
Vergleiche in Vergleichsschaltungen 70 . . . 76 zwischen der
Busadresse und den Kennzeichenfeldern in den Wegen durchgeführt,
um zu bestimmen, ob sich die Daten im Cache-Datenfeld
befinden. Ein Satz ist eine Gruppierung von Adreßblöcken,
bestehend aus einem Adreßblock aus jedem Weg. Alle Adreßblöcke
in einem Satz werden gleichzeitig ausgewählt, wenn ein Abschnitt
der örtlichen Busadresse von dem Decodierer in eine
Satzadresse decodiert wird. Die Directory-Anordnung gemäß Fig. 3
sorgt für 64 Sätze.
Wenn ein neuer Datenblock in den Cache-Speicher gezogen werden
muß, kann es notwendig werden, einen alten, bereits im Cache-
Speicher befindlichen Datenblock zu entfernen, um Platz für
die neuen Daten zu schaffen. Eine beliebige Folge bestimmt,
welcher Weg ersetzt wird, wenn eine neue Adresse in einem
Adreßblock benötigt wird.
Wenn eine Schreibtransaktion auf dem örtlichen Bus eine Adresse
bedingt, die nicht im Cache-Speicher enthalten ist (Nicht-
Treffer) wird kein Versuch unternommen, die entsprechenden
Daten im Cache-Speicher abzulegen. Wenn jedoch eine Schreibtransaktion
auf dem Ortsbus eine Adresse betrifft, welche sich
im Cache-Speicher befindet (ein Cache-Treffer), so benutzt die
Directory-Anordnung eine Durch-Schreib-Politik. Dies bedeutet,
daß Ortsbus-Schreibbefehle, die zu einem Cache-Treffer führen,
sowohl in den Cache-Speicher als auch in den Hauptspeicher
geschrieben werden. Dies gewährleistet, daß der Hauptspeicher
stets eine gültige Kopie aller Datenplätze enthält.
Das Cache-Konfigurationsregister, das in der Cache-Konfigurations-
und Steuerlogik 64 der Fig. 2 angeordnet ist, ist nachfolgend
gezeigt:
Das Cache-Konfigurationsregister enthält die Bits, welche die
Zeilenzahl pro Adreßblock, die Anzahl von Wegen im Cache-Directory,
Diagnosebits, Zeitgabebits und ein Cache-Aktivierungsbit
bestimmen, wobei letzteres den Cache-Speicher für die
Operation aktiviert.
Wenn ein generalisierter Datenprozessor (GDP) mehrere BXU's
entsprechend der Darstellung in Fig. 1 verwendet, können diese
BXU's so konfiguriert werden, daß sie zur Bildung eines größeren
Directories und zur Adressierung eines größeren Datenspeichers
kooperieren. Die BXU's arbeiten als eine einzige Logikeinheit
zusammen. Wichtig ist, daß diese größere Directory-Anordnung
eine erhöhte Anzahl von Sätzen hat. Daher hat ein von
zwei BXU's gesteuerter Cache-Speicher einen Directory aus 128
Sätzen, anstelle von 64. Um mehrere BXU's zusammenarbeiten zu
lassen, muß der Cache-Speicher zu einer Verzahnung geeignet
aufgebaut sein. Die Anzahl von BXU's muß dieselbe wie der
Verzahnungsfaktor sein. Wenn es keine Verzahnung gibt, muß der
Cache-Speicher von einer einzigen BXU gesteuert werden. Die
Verzahnung wird durch die Verzahnungssteuerbits im Anpassungsregister
in der Systembus-Steuerlogik 60 wie folgt aufgebaut:
Die Systembus-Steuerlogik 60 enthält einen Adressenerkenner.
Sein Zweck liegt in der Unterteilung des Adreßraums in einen
Ortsbus-Adreßraum und einen Systembus-Adreßraum. Die Logik
ändert die Adresse einer Referenz nicht, die sie zum örtlichen
Bus durchläßt. Der Adressenerkenner dient zur Anpassung der
Adresse an allen Anforderungspaketen, die unter den oberen 16
M-Bytes-Adreßraum fallen.
Der Adreßerkenner besteht aus zwei Registern, dem oben gezeigten
Anpaßregister und dem Maskierregister. Gemeinsam definieren
sie einen Fenster-Abbildungs- bzw. Einteilungsspeicher
(window mapping memory) von einem Bus zum anderen. Das Anpaßregister
definiert, wo der Ortsbus-Adreßraum im gesamten
Adreßraum des Systembusses (der "Basis") beginnt, und das
Maskierregister definiert, wie viel des auf dem Systembus
verfügbaren Adreßraums auf den Ortsbus abgebildet (mapped)
wird (die "Größe").
Das Maskierregister dient zum Abdecken bzw. Abgrenzen der
Adreßbits, welche einen Platz im Lokalbus-Adreßraum auswählen.
Die Größe des auf dem entgegengesetzten Bus abgebildeten
Adreßraums bestimmt die Anzahl von Nullen niedriger Ordnung im
Maskierregister. Dies bedeutet, daß die N-Bits niedriger Ordnung
des Maskierregisters mit Nullen gefüllt sein müssen,
damit zwei NO-Bytes zur Übertragung auf den entgegengesetzten
Bus erkannt werden. Die oberen Bits von N bis 31 müssen mit
Einsen gefüllt sein. Die Größe des Abbildungsfensters reicht
von 256K Bytes bis zu dem gesamten Adreßraum (4G Bytes).
Das Anpaßregister dient zur Auswahl der Lage des Adreßraums
des lokalen Busses im AP-Bus-Adreßraum. Die N-Bits niederer
Ordnung des Anpaßregisters werden ignoriert, da sie vom Maskierregister
maskiert sind. Dies bedeutet, daß der Adreßraum
des entgegengesetzten Bus auf ganzzahligen Vielfachen des
erkannten Bereichs ausgerichtet sein muß.
Die Systembus-Steuerlogik 60 trägt die Verzahnung für einlaufende
Speicherreferenzen. Dies wird als Modulverzahnung bezeichnet.
Die Verzahnung besteht aus einer Ausbreitung von
Anforderungen auf unterbrochenen 16-Byte-Bereichsgrenzen mit
16-Byte-Körnigkeit (granularity). Die Verzahnung kann einwegig
(keine Verzahnung), zweiwegig oder vierwegig sein. Einwegige
Verzahnung bedeutet, daß jede Anforderung, die vom Speicheradreßerkenner
der Systembus-Steuerlogik 60 erkannt worden ist,
von der BXU bearbeitet wird. Bei einer Zwei-Wege-Verzahnung
wird der Systembus-Adreßraum effektiv in zwei Abschnitte unterteilt,
wobei die Adressen 0-15, 32-47, . . . dem ersten Abschnitt
und die Adressen 16-31, 48-63, . . . dem zweiten Abschnitt
zugeordnet sind. Eine BXU kann nur antworten, wenn ein
Zugriff von dem Ortsbus-Adreßerkenner erkannt worden ist und
in den zugeordneten Abschnitt fällt. Die Vier-Wege-Verzahnung
funktioniert ähnlich der Zwei-Wege-Verzahnung, jedoch sind
vier Abschnitte vorhanden, von denen der erste aus 0-15,
64-77, usw. Adressen besteht. In keinem Falle wird die Adresse
von der BXU modifiziert, bevor sie zum örtlichen bzw. lokalen
Bus durchgelassen worden ist. Die Verzahnungsfunktionen werden
von den Verzahnungssteuerbits in den Anpaß- und Maskierregistern
gesteuert.
Der aktuelle Adressenerkenner-Registersatz besteht aus zwei
Anpaß/Maskier-Registern. Sowohl das Anpaßregister als auch die
AP-Busadresse werden vom Maskierregister maskiert, und die
Ergebnisse werden verglichen, um festzustellen, ob der Zugriff
erkannt worden ist. Generell bestimmen die Erkennungsfelder
der Maskier- und Anpaßregister die Lage der Abbildungsfenster
(mapping windows). Auf diese Felder wird gewöhnlich Bezug
genommen, wenn man die Adreßerkenner erörtert.
Anpaß/Maskier-Registerfelddefinitionen:
Erkenne: Im Maskierregister bewirkt jedes gesetzte Bit im
Erkennungsfeld, daß das entsprechende AP-Bus-Adreßbit mit dem
entsprechenden Anpaßregisterbit verglichen wird. Wenn ein Bit
gelöscht ist, so ist dessen Bitposition während der Adreßerkennung
ein "unbeachtlich" ("don't care").
Im Anpaßregister wird jedes Bit im Erkennungsfeld mit den
entsprechenden Bits in AP-Bus-Adreßzyklen verglichen. Daher
liefern diese Bits eine Adresse für den von diesem Adreßerkenner
identifizierten Speicherabschnitt.
Verzahnungssteuerung: Diese beiden Felder bestimmen den Verzahnungsfaktor
und die Übereinstimmung für den Erkenner in der
Systembus-Steuerlogik 60. Die nachfolgende Tabelle zeigt den
Einfluß der unterschiedlichen Konfigurationen dieser Bits:
Aktivierung
1 = Die Gruppe von Maskier- und Anpaßregistern wird aktiviert.
0 = Dieser Erkenner wird entaktiviert.
1 = Die Gruppe von Maskier- und Anpaßregistern wird aktiviert.
0 = Dieser Erkenner wird entaktiviert.
Die lokale Bus-Steuerlogik 68 hat vier Speicheradreßerkenner
bzw. -identifizierer und die folgenden Steuerregister:
Diese beiden Felder bestimmen den Verzahnungsfaktor und die
Anpassung für die Cache-Steuerlogik 64 und die Speicheradreßerkenner
in der Ortsbus-Steuerlogik, welche die Verzahnung
ermöglichten.
BXU-Modus
0 = Speichermodus.
1 = Prozessormodus.
0 = Speichermodus.
1 = Prozessormodus.
Entaktivier-INIT-RAM
0 = INIT-RAM Speichererkenner ist abgeschaltet.
1 = INIT-RAM Speichererkenner ist eingeschaltet.
0 = INIT-RAM Speichererkenner ist abgeschaltet.
1 = INIT-RAM Speichererkenner ist eingeschaltet.
Entscheidungseigner (arbitration owner)
1 = Eigner.
0 = Mieter.
1 = Eigner.
0 = Mieter.
Entscheidungsaktivierung
1 = BXU treibt und überwacht Entscheidungsleitungen als Eigner oder Mieter.
0 = BXU ignoriert die Entscheidungsleitungen.
1 = BXU treibt und überwacht Entscheidungsleitungen als Eigner oder Mieter.
0 = BXU ignoriert die Entscheidungsleitungen.
Funktion
00 = Dieser Satz von Registern wird entaktiviert.
01 = Bei diesem Satz von Registern ist die Bus-Rückgewinnung (bus recovery) aktiviert, und es werden die Verzahnungskonfigurationsbits im Ortsbus-Steuerregister zur Ermöglichung der Cache-Speicherung benutzt. Die Verzahnung wird vom Ortsbus- Steuerregister gesteuert.
00 = Dieser Satz von Registern wird entaktiviert.
01 = Bei diesem Satz von Registern ist die Bus-Rückgewinnung (bus recovery) aktiviert, und es werden die Verzahnungskonfigurationsbits im Ortsbus-Steuerregister zur Ermöglichung der Cache-Speicherung benutzt. Die Verzahnung wird vom Ortsbus- Steuerregister gesteuert.
Erkennung
Im Maskierregister bewirkt jedes in diesem Feld gesetzte Bit, daß ein entsprechendes Ortsbus-Adreßbit mit dem korrespondierenden Anpaßregisterbit verglichen wird.
Im Maskierregister bewirkt jedes in diesem Feld gesetzte Bit, daß ein entsprechendes Ortsbus-Adreßbit mit dem korrespondierenden Anpaßregisterbit verglichen wird.
Im Maskierregister wird jedes Bit in diesem Feld mit dem korrespondierenden
Ortsbus-Adreßbit verglichen. Diese Bits bilden
eine Basisadresse für den Abschnitt des Speichers, der vom
Adreßerkenner betrachtet wird.
Cache-Sperrung
1 = Anforderungen, welche diesen Erkenner treffen, werden nicht Cache-gespeichert.
0 = Anforderungen, welche diesen Erkenner treffen, werden dann Cache-gespeichert (cached), wenn andere Steuerbits geeignet gesetzt sind.
1 = Anforderungen, welche diesen Erkenner treffen, werden nicht Cache-gespeichert.
0 = Anforderungen, welche diesen Erkenner treffen, werden dann Cache-gespeichert (cached), wenn andere Steuerbits geeignet gesetzt sind.
Cache-Vorabruf
Ein Cache-Vorabrufalgorithmus wird von der BXU verwendet, um die Leistungsfähigkeit des Prozessors ohne wesentliche Erhöhung der Busbenutzung durch diesen Prozessor zur erhöhen. Ein Vorabruf wird ausgelöst, wenn die aktuelle Anforderung ein Vier-Wort-Cache-speicherbarer Lesebefehl ist, sich die nächstfolgende Zeile nicht im Cache-Speicher befindet und wenn die nächstfolgende Zeile in demselben Adreßblock ist wie die gerade angeforderte Zeile. Bei dem beschriebenen Ausführungsbeispiel der Erfindung benutzen sowohl Prozessorbefehlsabrufe als auch Stringoperationen Vier-Wort-Lesezugriffe. Ein Vier-Wort- Lesezugriff ist die einzige Zugriffsart, die mit großer Wahrscheinlichkeit von einem Zugriff auf den nächsten Platz im Hauptspeicher gefolgt wird. Selbstverständlich kann die Erfindung auch in Systemen mit anderen als Vier-Wort-Zugriffen, d. h. mit N-Wort-Zugriffen, verwendet werden, solange der N-Wort-Zugriffstyp die hohe Wahrscheinlichkeit hat, von einem Zugriff auf den nächsten Platz im Hauptspeicher gefolgt zu werden.
Ein Cache-Vorabrufalgorithmus wird von der BXU verwendet, um die Leistungsfähigkeit des Prozessors ohne wesentliche Erhöhung der Busbenutzung durch diesen Prozessor zur erhöhen. Ein Vorabruf wird ausgelöst, wenn die aktuelle Anforderung ein Vier-Wort-Cache-speicherbarer Lesebefehl ist, sich die nächstfolgende Zeile nicht im Cache-Speicher befindet und wenn die nächstfolgende Zeile in demselben Adreßblock ist wie die gerade angeforderte Zeile. Bei dem beschriebenen Ausführungsbeispiel der Erfindung benutzen sowohl Prozessorbefehlsabrufe als auch Stringoperationen Vier-Wort-Lesezugriffe. Ein Vier-Wort- Lesezugriff ist die einzige Zugriffsart, die mit großer Wahrscheinlichkeit von einem Zugriff auf den nächsten Platz im Hauptspeicher gefolgt wird. Selbstverständlich kann die Erfindung auch in Systemen mit anderen als Vier-Wort-Zugriffen, d. h. mit N-Wort-Zugriffen, verwendet werden, solange der N-Wort-Zugriffstyp die hohe Wahrscheinlichkeit hat, von einem Zugriff auf den nächsten Platz im Hauptspeicher gefolgt zu werden.
Die vorabgerufene Zeile ist die nächstfolgende Zeile. Wenn die
BXU's verzahnt sind, wird die aktuelle Anforderung von einer
BXU bearbeitet, während der Vorabruf von einer anderen BXU
abgewickelt wird. Wenn Daten vorabgerufen werden, werden vier
Wörter in die BXU gebracht. Diese Daten werden intern gehalten
und nicht in den Cache-Speicher ausgelesen. Wenn eine nachfolgende
Anforderung für diesen Platz erzeugt wird, wird sie als
ein Cache-Nicht-Treffer behandelt, und es werden keine Busanforderungen
erzeugt. Der Cache-Speicher wird sofort aus dem
internen Puffer der BXU gefüllt und gibt keine Anforderung an
den Hauptspeicher.
Es gibt zwei Vorabrufkanäle in der BXU. Wenn beide Kanäle
aktiviert sind, wird jeder einem speziellen Prozessor zugeordnet.
Diese beiden Kanäle sind total unabhängig. Der Zustand
oder die Daten in einem Vorabrufkanal wird oder werden von den
Aktionen des anderen Prozessors oder Vorabrufkanals nicht
geändert oder beeinflußt.
Die Directory- und Steuerlogik garantiert, daß die Cache-Daten
und die Cache-Vorabruf-Daten mit der letzten Version der Daten
im Hauptspeicher übereinstimmen, selbst wenn mehrere Cache-
Speicher vorhanden sind. Dies geschieht durch die Aktualisierungspolitik,
welche bedingt, daß Daten beim Einschreiben in
den Cache-Speicher auch durch den Hauptspeicher geschrieben
werden. Außerdem wird der Systembus 20 auf gerade im Cache-
Speicher vorgenommenen Änderungen an Speicherplätzen überwacht.
Die Durchschreib-Aktualisierungspolitik (write-through update
policy) gewährleistet, daß der Hauptspeicher stets die jüngste
Kopie aller Daten hat. Dies bedeutet, daß ein BXU-Cache niemals
die einzig gültige Datenkopie hält. Ein Zugriff, der
durch den Hauptspeicher fließen kann, erhält garantiert die
letzte Kopie eines Datenelements. Eine Aktualisierung des
Cache-Speichers kann nicht durchgeführt werden, ohne eine
Schreibanforderung an den AP-Bus zu senden, um dadurch den
Hauptspeicher entsprechend zu aktualisieren.
Der Kohärenz-Mechanismus überwacht alle Busanforderungen. Wenn
er eine Schreibanforderung von einer anderen BXU feststellt
oder eine nicht-Cache-speicherbare Schreibanforderung von sich
selbst, wird die Adresse dieser Anforderung in die Cache-Directory-
Anordnung eingegeben. Wenn ein Cache-Treffer auftritt,
so wird die dem Treffer entsprechende Zeile (line) als ungültig
markiert. Dieser Kohärenz-Mechanismus ist sowohl auf den
Cache-Directory als auch auf den Vorabruf-Directory anwendbar.
Wenn der Prozessor eine Cache-speicherbare Leseanforderung
ausgibt, die zu einem Cache-Nicht-Treffer führt, muß die BXU
zunächst die fehlende Cache-Zeile aus dem Speicher abrufen und
danach die Datenanforderung zum Prozessor retournieren. Das
Zeitgabediagramm gemäß Fig. 5 zeigt die Signalfolge zur Durchführung
dieser Fülloperation. Bei Feststellung des Fehlens
bzw. Nicht-Treffers erzeugt die BXU die richtige 16-Byte-Anforderung
auf dem AP-Bus. Diese Anforderung ist stets auf
einer 16-Byte-Bereichsgrenze ausgerichtet. Wenn die Daten von
dem Systembus zurückkehren, schreibt die BXU die Daten in den
Cache-Speicher, beginnend an der Wortadresse 0.
Im folgenden wird auf Fig. 4 Bezug genommen, die ein Blockschaltbild
der I/O-Vorabruflogik 63 der Fig. 2 zeigt. Letztere
weist ein I/O-Vorabruf-Steuerregister 80 und die I/O-Vorabrufpuffer
82, 84, 86 und 88 auf.
Zwei I/O-Vorabrufkanäle, Kanal 0 und Kanal 1, sind vorgesehen.
Jeder Kanal hat zwei Eingangspuffer, gebildet aus vier Worten
(16 Bytes). Jedes Speicherwort enthält auch ein Kennzeichenbit,
so daß die Kennzeicheninformation richtig gepuffert wird.
Wenn Daten aus den Puffern angefordert werden, wird der nächste
Datenblock automatisch vorabgerufen und in den leeren
Puffer geladen. Die Schaltung nutzt die in den oben bezeichneten
US-Patenten beschriebene Drei-Tiefe-Systembus-Pipeline
aus, um die Puffer rasch zu füllen, wenn sie wegen momentaner
Überlastungen im Systembusverkehr zurückliegen.
Der Vorabrufstift (Pr¢) wird an den Schnittstellensteuerungen
90 in Verbindung mit einem Cache-speicherbaren (CT) Signal und
einem Schreib/Lese (WR)-Signal zur Definition der Art der ausgegebenen
Anforderungen verwendet. Die unten angegebene Tabelle
definiert alle diese verschiedenen Anforderungstypen:
Wenn der Vorabrufstift (Pr¢) hoch (1) ist, ist der laufende
Zyklus ein normaler Ortsbuszyklus. Wenn der Vorabstufstift
niedrig (0) ist, ist der laufende Zyklus ein I/O-Vorabrufzyklus,
währenddessen der Cache-speicherbare (CT) Stift zur
Auswahl eines der beiden I/O-Vorabrufkanäle verwendet wird.
Die Schnittstellensteuerungen 90 antworten auf zwei spezielle
Befehle, den Startkanal 0-Befehl und den Startkanal 1-Befehl.
Das Vorabruf-Steuerregister 80- Format ist nachfolgend gezeigt:
Die vier Bits des Vorabruf-Steuerregisters werden von den
Konfigurationssteuerungen 92 wie folgt decodiert. Das I/O-Kanal
0-Aktiv-Bit wird über die Setze-Aktiv-Leitung 91 automatisch
gesetzt, wenn ein Startkanal 0 I/O-Vorabrufbefehl durchgeführt
wird und die Konfigurationsbits 93 gesetzt sind, um
den Vorabrufer in den I/O-Modus (Konfigurationsbits = 01) zu
bringen. Das I/O-Kanal 0-Aktiv-Bit wird immer gesetzt, wenn
die Konfigurationsbits so gesetzt sind, daß der Vorabrufer im
Cache-Modus ist (Konfigurationsbits = 10 oder 11). Wenn das
I/O-Kanal 0-Aktiv-Bit auf 1 gesetzt ist, wird Kanal 0 aktiv,
vorausgesetzt, daß die Konfigurationsbits auf den I/O-Modus
gesetzt sind (Konfigurationsbits = 01). Kanal 0 überwacht
aktiv den Ortsbusverkehr für Adressenübereinstimmungen und
führt die zugehörigen Vorabrufoperationen aus.
Das I/O-Kanal 1-Aktiv-Bit ist ähnlich dem I/O-Kanal 0-Aktiv-
Bit und wird über die Setze-Aktiv-Leitung 91 automatisch
gesetzt, wenn ein Startkanal 1 I/O-Vorabrufbefehl durchgeführt
wird und die Konfigurationsbits auf den I/O-Modus gesetzt sind
(Konfigurationsbits = 01).
Die Konfigurationsbits 93 werden wie folgt decodiert. Wenn sie
auf 00 gesetzt sind, ist der Vorabrufer ausgeschaltet. Wenn
sie auf 01 gesetzt sind, wird eine I/O-Vorabrufoperation
durchgeführt, und beide Vorabrufkanäle 0 und 1 stehen für die
Verwendung bei der Übertragung sequentieller I/O-Datenströme
zur Verfügung.
Wenn die Konfigurationsbits auf 10 gesetzt sind, wird eine
Cache-Vorabrufoperation für einen Kanal konfiguriert. Kanal 0
steht mit dem Cache-Speicher zur Verfügung, und Kanal 1 ist
entaktiviert.
Wenn die Konfigurationsbits auf 11 gesetzt sind, ist eine
Cache-Vorabrufoperation für zwei Kanäle konfiguriert. Beide
Kanäle 0 und 1 stehen zur Verwendung mit dem Cache-Speicher
zur Verfügung. Kanal 0 wird stets zur Ausführung von den Anforderungen
aus dem Prozessor 0 zugeordneten Vorabrufen verwendet,
und Kanal 1 bearbeitet den Anforderungen vom Prozessor 1
zugehörige Cache-Vorabrufe. Der Prozessor, dem die Anforderung
gehört, wird durch Überwachung der Ortsbus-Entscheidungsleitungen
bestimmt.
Bevor ein Vorabrufkanal benutzt werden kann, muß ein Startbefehl
ausgegeben werden. Ein Startbefehl ist definiert als eine
Ein-Wort oder weniger Schreibanforderung an einen der Vorabrufkanäle.
Die Adresse in der Schreibanforderung ist die
Startadresse für den Vorabrufkanal. In Abhängigkeit vom Startbefehl
führt die Vorabruf-Steuerlogik die folgenden Aktionen
durch:
Zunächst markiert sie beide Vorabrufpuffer in dem angegebenen
Kanal als leer, und zwar über die Markierleitung 96 oder die
Markierleitung 94. Sodann berechnet sie "meine Startadresse".
Wenn diese BXU in die Datenübertragung einbezogen werden soll,
so wird das geeignete I/O-Kanal-Aktiv-Bit im Vorabruf-Steuerregister
80 gesetzt. Wenn diese BXU in die Datenübertragung
einbezogen werden soll, gibt die Steuerlogik 90 in der BXU
zwei Vorabrufanforderungen 98 auf den AP-Bus. Diese Anforderung
dient zum Füllen der 32 Datenbytes-Pufferung im zugehörigen
Kanal. Die BXU antwortet auf den Startbefehl, wenn die
oben angegebenen Aktionen in allen anderen BXU's abgeschlossen
sind. Die SS-belegt ¢-Leitung wird für eine BXU-zu-BXU-Kommunikation
überwacht. Wenn die SS-belegt ¢-Leitung bestätigt
ist, so ist die Vorabrufanforderung in allen BXU's eingeleitet.
Die Kombination des Startbefehls und des Vorabrufstifts (Pr¢)
eliminiert alle gegenstandslos gewordenen Daten. Der Startbefehl
löscht alle möglichen gegenstandslos gewordenen Daten,
die während der vorhergehenden I/O-Vorabruffolge vorabgerufen
worden sind. Das Vorabrufsignal (Pr¢) gewährleistet, daß nur
die den Vorabrufkanal derzeit benutzende Software Daten aus
den Vorabrufpuffern erhält. Selbst wenn eine Anforderung an
einen bereits im I/O-Vorabrufpuffer enthaltenen Platz gerichtet
ist, geht die BXU für die Daten an den Speicher, wenn das
Vorabrufsystem (Pr¢) bestätigt wird.
Bevor eine I/O-Vorabrufoperation beginnen kann, müssen die
Konfigurationsbits (Bits 2 und 3) im Vorabruf-Steuerregister
80 auf 01 gesetzt sein.
Wenn Vorabrufkanäle nicht statisch zugeordnet sind, muß die
Software oder der Mikrocode einen Kanal einer speziellen Datenübertragung
zuordnen. Danach wird ein Startbefehl an diesen
I/O-Vorabrufkanal angelegt. Dies beinhaltet eine Schreibanforderung
(WR) bei belegtem Vorabrufstift (Pr¢) unter Verwendung
der Adresse des ersten vorabzurufenden Bytes.
Damit eine Datenübertragungsanforderung für die Beantwortung
durch den Vorabrufer gültig wird, muß sie den folgenden Kriterien
genügen. Sie muß eine Standard-Leseanforderung sein. Die
Länge der Datenanforderung muß ein Byte, Doppelbyte, Wort oder
Mehrfachwort sein, und die Adresse muß in einem der Ortsbus-
Adreßerkenner erkannt worden sein. Die Anforderung muß auch
das Vorabrufsignal (Pr¢) auf ein niedriges Niveau drücken und
den CT-Signalpunkt auf dem richtigen Vorabrufkanal haben.
Normalerweise sind die angeforderten Daten stets im I/O-Vorabrufkanal-
Datenpuffer vorhanden, und in diesem Falle schickt
der Vorabrufer die Daten unmittelbar zurück. Wenn sich die
Daten nicht in dem Puffer befinden, so wird die Anforderung
festgehalten, bis die AP-Busanforderung 98, die zu einem früheren
Zeitpunkt, bei dem Puffer zunächst entleert worden ist,
angelegt wurde, den Puffer gefüllt hat.
Wenn eine Datenpufferanforderung aufgenommen wird, benutzt die
Steuerlogik 90 die Wort- und Größen-Adreßleitungen (word and
size address lines) und die Byte-Aktivierungsleitungen (nicht
gezeigt) zur Bestimmung der in dem aktuellen Vorabrufpuffer zu
benutzenden Bytes.
Wenn das letzte Byte in einem Puffer gelesen worden ist, berechnet
der Vorabrufer 63 die Adresse für den nächsten vorabzurufenden
16-Byte-Block und gibt eine AP-Bus-Leseanforderung
98 aus. Die mit der Vorabrufanforderung des Prozessors mitgeschickte
Adresse wird für diese Berechnung zusammen mit dem
aktuellen Verzahnungsfaktor benutzt, der von der Ortsbus-
Schnittstelle an der Ortsbus-Steuerlogik 68 für diesen Adreßbereich
angegeben ist. Die auf den AP-Bus geschickte Adresse
liegt garantiert innerhalb des LBI-Speichererkennungsfensters,
da der Adreßinkrementer nur durch LAD-Bit 17 geht und die
Speichererkenner nur auf Bits 18 bis 31 achten.
Claims (6)
1. Datenverarbeitungssystem, bei dem ein erster Prozessor
(14) und ein zweiter Prozessor (16) über einen Ortsbus (18)
mit mehreren an einen Systembus oder mehrere Systembusse (20,
22) angeschlossenen Agenten (Teilnehmerstationen) in Verbindung
stehen, mit einer Bus-Erweiterungseinheit (10) als
Schnittstelle zwischen dem Ortsbus (18) und dem Systembus (20)
und einem mit der Bus-Erweiterungseinheit (10) und dem Ortsbus
(18) verbundenen Cache-Speicher (24),
dadurch gekennzeichnet,
daß die Bus-Erweiterungseinheit (10) eine Systembus-Steurlogik
(60) zur Steuerung des Zugriffs auf den Systembus (20),
eine Ortsbus-Steuerlogik (68) zur Steuerung der Zugriffe auf
den Ortsbus (18) und eine die Referenzen auf den Cache-Speicher
(24) steuernde Steuerlogik (62, 64) aufweist und daß die
zuletzt genannte Steuerlogik eine Datenfeldadressen speichernde
Cache-Directory-Anordnung (62), die in mehrere, jeweils
Kennzeichen und Gültig-Bit-Speicherung zur Erleichterung der
Zugehörigkeitssuche nach Datenfeldadressen enthaltende Wege
(0, 1, 2, 3) konfigurierbar ist und mit der Cache-Directory-
Anordnung (62) verbundene erste Mittel (64) einschließlich
ersten Konfigurationsmitteln (Cache-Konfigurationsregisterbits
1-5) zum Aufteilen der Cache-Directory-Anordnung in zwei logische
Directories enthält, wobei das eine Directory zum Steuern
von Anforderungen aus dem ersten Prozessor (14) und das andere
Directory zur Steuerung von Anforderungen aus dem zweiten
Prozessor (16) vorgesehen sind.
2. System nach Anspruch 1, dadurch gekennzeichnet, daß ein
Vorabrufpuffer (63) mit der Ortsbus-Steuerlogik (68) verbunden
ist und daß die ersten Mittel (64) erste Vorabruf-Steuermittel
(Vorabruf-Steuerregisterbits 2 und 3) aufweisen, die mit dem
Vorabrufpuffer zum Aufteilen desselben in zwei logische Kanäle
gekoppelt sind, wobei ein erster Kanal die Anforderungen von
dem ersten Prozessor zugeordneten Vorabrufen und ein zweiter
Kanal die Anforderungen von dem zweiten Prozessor (16) zugeordneten
Vorabrufen bearbeitet.
3. System nach Anspruch 2, dadurch gekennzeichnet, daß die
ersten Mittel (64) zweite Vorabruf-Steuermittel enthalten, die
unter der Bedingung, daß die ersten Vorabruf-Steuermittel
(Vorabruf-Steuerregisterbits 2 und 3) zur Ermöglichung der
Vorabrufe gesetzt sind, wirksam sind, um einen Vorabruf auszulösen
unter den weiteren Bedingungen, daß
eine aktuelle Speicheranforderung eine n-Wort Cache-speicherbare Leseanforderung ist, wobei sowohl Prozessor-Befehlsabrufe als auch Stringoperationen n-Wort-Lesezugriffe benutzen,
die nächstfolgende Zeile, die aus dem besonderen Speicherplatz vorabgerufen werden soll, sich nicht im Cache-Speicher (24) befindet und
die nächstfolgende und vorabzurufende Zeile in demselben Adreßblock steht wie die gerade angeforderte Zeile.
eine aktuelle Speicheranforderung eine n-Wort Cache-speicherbare Leseanforderung ist, wobei sowohl Prozessor-Befehlsabrufe als auch Stringoperationen n-Wort-Lesezugriffe benutzen,
die nächstfolgende Zeile, die aus dem besonderen Speicherplatz vorabgerufen werden soll, sich nicht im Cache-Speicher (24) befindet und
die nächstfolgende und vorabzurufende Zeile in demselben Adreßblock steht wie die gerade angeforderte Zeile.
4. System nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet,
daß die ersten Mittel (64) zweite Cache-Konfigurationsmittel
(Cache-Konfigurationsregisterbit 0), verbunden mit
der Cache-Directory-Anordnung (62) zur Bestimmung der Zahl von
Zeilen pro Adreßblock, und dritte Cache-Konfigurationsmittel
(Cache-Konfigurationsregisterbit 11) enthält, wobei die dritten
Cache-Konfigurationsmittel mit der Cache-Directory-Anordnung
(62) verbunden sind und eine Cache-Operation aktivieren.
5. System nach einem der Ansprüche 2 bis 4, dadurch gekennzeichnet,
daß die ersten Vorabruf-Steuermittel (Vorabruf-Steuerregisterbits
2 und 3) so angeordnet und ausgebildet sind,
daß ihr Zustand angibt, ob der Vorabrufer ausgeschaltet, zur
sequentiellen Übertragung von I/O-Datenströmen aktiviert ist
oder mit dem Cache-Speicher (24) arbeitet.
6. System nach Anspruch 4 oder 5, dadurch gekennzeichnet,
daß die zweiten Cache-Konfigurationsmittel (Cache-Konfigurationsregisterbit
0), die mit der Cache-Directory-Anordnung (62)
zur Bestimmung der Anzahl von Zeilen pro Adreßblock gekoppelt
sind, Mittel aufweisen, die mehrere BXU's benutzenden generalisierten
Datenprozessoren (34, 36) eine kooperative Konfiguration
ermöglichen, um eine größere Directory-Anordnung und
Adressierung für eine größere Datenspeicherung zu schaffen,
wobei die größere Directory-Anordnung eine erhöhte Anzahl von
Sätzen hat, so daß ein von den n BXU's gesteuerter Cache-Speicher
eine Directory-Anordnung, bestehend aus der n-fachen
Anzahl von Sätzen einer für eine einzige BXU konfigurierten
Directory-Anordnung hat, und Mittel zur Verzahnungskonfiguration
des Cache-Speichers (24), wobei der Verzahnungsfaktor
gleich n gemacht wird, so daß bei einer n-Wege-Verzahnung der
Systembus-Adreßraum effektiv in n-Abschnitte unterteilt wird,
wobei ein erster Adreßbereich einem ersten Abschnitt, ein
zweiter Adreßbereich einem zweiten Abschnitt und ein n'ter
Adreßbereich dem n-ten Abschnitt zugeordnet ist, und daß
Adreßerkennermittel vorgesehen sind, welche der Ortsbus-Steuerlogik
eine Antwort nur dann gestatten, wenn ein Zugriff von
dem Ortsbus-Adreßerkenner festgestellt worden ist, der in den
zugehörigen Abschnitt fällt.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/890,859 US4853846A (en) | 1986-07-29 | 1986-07-29 | Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE3724730A1 true DE3724730A1 (de) | 1988-02-11 |
Family
ID=25397234
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19873724730 Withdrawn DE3724730A1 (de) | 1986-07-29 | 1987-07-25 | Cache-steuereinrichtung |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US4853846A (de) |
| JP (1) | JPS6336466A (de) |
| KR (1) | KR950010528B1 (de) |
| CN (1) | CN87105300A (de) |
| DE (1) | DE3724730A1 (de) |
| FR (1) | FR2602353B1 (de) |
| GB (1) | GB2193356B (de) |
Families Citing this family (68)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5307494A (en) * | 1987-08-05 | 1994-04-26 | Fuji Xerox Co., Ltd. | File name length augmentation method |
| DE68917326T2 (de) * | 1988-01-20 | 1995-03-02 | Advanced Micro Devices Inc | Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen. |
| JPH0727492B2 (ja) * | 1988-01-21 | 1995-03-29 | 三菱電機株式会社 | 緩衝記憶装置 |
| US5553262B1 (en) * | 1988-01-21 | 1999-07-06 | Mitsubishi Electric Corp | Memory apparatus and method capable of setting attribute of information to be cached |
| US5327545A (en) * | 1988-05-26 | 1994-07-05 | International Business Machines Corporation | Data processing apparatus for selectively posting write cycles using the 82385 cache controller |
| US5125084A (en) * | 1988-05-26 | 1992-06-23 | Ibm Corporation | Control of pipelined operation in a microcomputer system employing dynamic bus sizing with 80386 processor and 82385 cache controller |
| US5045998A (en) * | 1988-05-26 | 1991-09-03 | International Business Machines Corporation | Method and apparatus for selectively posting write cycles using the 82385 cache controller |
| US5097409A (en) * | 1988-06-30 | 1992-03-17 | Wang Laboratories, Inc. | Multi-processor system with cache memories |
| US5111423A (en) * | 1988-07-21 | 1992-05-05 | Altera Corporation | Programmable interface for computer system peripheral circuit card |
| US5032985A (en) * | 1988-07-21 | 1991-07-16 | International Business Machines Corporation | Multiprocessor system with memory fetch buffer invoked during cross-interrogation |
| US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
| US5222224A (en) * | 1989-02-03 | 1993-06-22 | Digital Equipment Corporation | Scheme for insuring data consistency between a plurality of cache memories and the main memory in a multi-processor system |
| US5253358A (en) * | 1989-05-19 | 1993-10-12 | Compaq Computer Corporation | Cache memory expansion and transparent interconnection |
| US5170476A (en) * | 1990-01-22 | 1992-12-08 | Motorola, Inc. | Data processor having a deferred cache load |
| US5123094A (en) * | 1990-01-26 | 1992-06-16 | Apple Computer, Inc. | Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers |
| US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
| EP0449540B1 (de) * | 1990-03-27 | 2000-05-17 | Digital Equipment Corporation | Speicher-Anordnung und Verfahren mit Vorausholungspuffer |
| US5261066A (en) * | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
| US5263142A (en) * | 1990-04-12 | 1993-11-16 | Sun Microsystems, Inc. | Input/output cache with mapped pages allocated for caching direct (virtual) memory access input/output data based on type of I/O devices |
| US5450564A (en) * | 1990-05-04 | 1995-09-12 | Unisys Corporation | Method and apparatus for cache memory access with separate fetch and store queues |
| US5452463A (en) * | 1990-05-25 | 1995-09-19 | Dell Usa, L.P. | Processor and cache controller interface lock jumper |
| JPH05108484A (ja) * | 1990-06-07 | 1993-04-30 | Intel Corp | キヤツシユメモリ |
| EP0496439B1 (de) * | 1991-01-15 | 1998-01-21 | Koninklijke Philips Electronics N.V. | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür |
| JP2703418B2 (ja) * | 1991-04-24 | 1998-01-26 | 株式会社東芝 | 中央演算処理装置 |
| US5546587A (en) * | 1991-05-30 | 1996-08-13 | Tandem Computers Incorporated | Decentralized bus arbitration system which continues to assert bus request signal to preclude other from asserting bus request signal until information transfer on the bus has been completed |
| US5371863A (en) * | 1991-05-30 | 1994-12-06 | Tandem Computers Incorporated | High speed processor bus extension |
| JP3599334B2 (ja) * | 1991-08-16 | 2004-12-08 | マルティチップ テクノロジー, インコーポレイテッド | 高性能ダイナミックメモリシステム |
| US5708784A (en) * | 1991-11-27 | 1998-01-13 | Emc Corporation | Dual bus computer architecture utilizing distributed arbitrators and method of using same |
| US5367653A (en) * | 1991-12-26 | 1994-11-22 | International Business Machines Corporation | Reconfigurable multi-way associative cache memory |
| US5263139A (en) * | 1992-05-19 | 1993-11-16 | Sun Microsystems, Inc. | Multiple bus architecture for flexible communication among processor modules and memory subsystems and specialized subsystems |
| US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
| US5337414A (en) * | 1992-09-22 | 1994-08-09 | Unisys Corporation | Mass data storage and retrieval system |
| US6487626B2 (en) | 1992-09-29 | 2002-11-26 | Intel Corporaiton | Method and apparatus of bus interface for a processor |
| US5898894A (en) | 1992-09-29 | 1999-04-27 | Intel Corporation | CPU reads data from slow bus if I/O devices connected to fast bus do not acknowledge to a read request after a predetermined time interval |
| US6098113A (en) * | 1992-10-22 | 2000-08-01 | Ncr Corporation | Apparatus and method for address translation and allocation for a plurality of input/output (I/O) buses to a system bus |
| US5442754A (en) * | 1992-12-04 | 1995-08-15 | Unisys Corporation | Receiving control logic system for dual bus network |
| US5640530A (en) * | 1992-12-17 | 1997-06-17 | International Business Machines Corporation | Use of configuration registers to control access to multiple caches and nonvolatile stores |
| US5502828A (en) * | 1992-12-18 | 1996-03-26 | Advanced Micro Devices, Inc. | Reducing memory access in a multi-cache multiprocessing environment with each cache mapped into different areas of main memory to avoid contention |
| EP0795820B1 (de) * | 1993-01-21 | 2000-03-01 | Advanced Micro Devices Inc. | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. |
| US5551000A (en) * | 1993-03-18 | 1996-08-27 | Sun Microsystems, Inc. | I/O cache with dual tag arrays |
| TW228580B (en) * | 1993-10-01 | 1994-08-21 | Ibm | Information processing system and method of operation |
| US5524216A (en) * | 1994-05-13 | 1996-06-04 | Hewlett-Packard Company | Coherent transaction ordering in multi-tiered bus system |
| JP3132749B2 (ja) * | 1994-12-05 | 2001-02-05 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | マルチプロセッサ・データ処理システム |
| US5678018A (en) * | 1994-12-16 | 1997-10-14 | International Business Machines Corporation | Cache address modification control |
| US6223255B1 (en) * | 1995-02-03 | 2001-04-24 | Lucent Technologies | Microprocessor with an instruction level reconfigurable n-way cache |
| US6289408B1 (en) * | 1995-05-08 | 2001-09-11 | Apple Computer, Inc. | Bus interface with address mask register for transferring selected data from one bus to another |
| US5835970A (en) * | 1995-12-21 | 1998-11-10 | Cypress Semiconductor Corp. | Burst address generator having two modes of operation employing a linear/nonlinear counter using decoded addresses |
| US5845308A (en) * | 1995-12-27 | 1998-12-01 | Vlsi Technology, Inc. | Wrapped-line cache for microprocessor system |
| US5724613A (en) * | 1996-05-06 | 1998-03-03 | Vlsi Technology, Inc. | System and method for automatically enabling and disabling a prefetching capability |
| US5829010A (en) * | 1996-05-31 | 1998-10-27 | Sun Microsystems, Inc. | Apparatus and method to efficiently abort and restart a primary memory access |
| JPH1173370A (ja) * | 1997-08-29 | 1999-03-16 | Fujitsu Ltd | 情報処理装置 |
| US6434671B2 (en) * | 1997-09-30 | 2002-08-13 | Intel Corporation | Software-controlled cache memory compartmentalization |
| US6778444B1 (en) * | 2000-08-18 | 2004-08-17 | Intel Corporation | Buffer for a split cache line access |
| US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
| US6851007B1 (en) * | 2001-05-30 | 2005-02-01 | Lsi Logic Corporation | Multi-channel interface controller for enabling a host to interface with one or more host devices |
| EP1367493A1 (de) | 2002-05-30 | 2003-12-03 | STMicroelectronics Limited | Vorausholungspuffer |
| JP2005221731A (ja) * | 2004-02-05 | 2005-08-18 | Konica Minolta Photo Imaging Inc | 撮像装置 |
| US7266651B1 (en) | 2004-09-07 | 2007-09-04 | Sun Microsystems, Inc. | Method for in-place memory interleaving and de-interleaving |
| US8886895B2 (en) * | 2004-09-14 | 2014-11-11 | Freescale Semiconductor, Inc. | System and method for fetching information in response to hazard indication information |
| US7434009B2 (en) * | 2004-09-30 | 2008-10-07 | Freescale Semiconductor, Inc. | Apparatus and method for providing information to a cache module using fetch bursts |
| US7318114B1 (en) | 2004-10-29 | 2008-01-08 | Sun Microsystems, Inc. | System and method for dynamic memory interleaving and de-interleaving |
| WO2008047180A1 (en) * | 2006-10-20 | 2008-04-24 | Freescale Semiconductor, Inc. | System and method for fetching an information unit |
| EP2261805B1 (de) * | 2009-06-12 | 2013-07-31 | Siemens Aktiengesellschaft | Verfahren zur Speicherung von Echtzeitwerten |
| JP2013008094A (ja) * | 2011-06-22 | 2013-01-10 | Sony Corp | メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体 |
| US10635590B2 (en) * | 2017-09-29 | 2020-04-28 | Intel Corporation | Software-transparent hardware predictor for core-to-core data transfer optimization |
| US10482017B2 (en) * | 2017-09-29 | 2019-11-19 | Intel Corporation | Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization |
| TWI716167B (zh) * | 2019-10-29 | 2021-01-11 | 新唐科技股份有限公司 | 儲存裝置及其映射方法 |
| CN114064126B (zh) * | 2021-11-16 | 2025-08-19 | 海光信息技术股份有限公司 | 串操作方法、串操作装置以及存储介质 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE2547488C2 (de) * | 1975-10-23 | 1982-04-15 | Ibm Deutschland Gmbh, 7000 Stuttgart | Mikroprogrammierte Datenverarbeitungsanlage |
| US4349871A (en) * | 1980-01-28 | 1982-09-14 | Digital Equipment Corporation | Duplicate tag store for cached multiprocessor system |
| US4371929A (en) * | 1980-05-05 | 1983-02-01 | Ibm Corporation | Multiprocessor system with high density memory set architecture including partitionable cache store interface to shared disk drive memory |
| US4400770A (en) * | 1980-11-10 | 1983-08-23 | International Business Machines Corporation | Cache synonym detection and handling means |
| US4445174A (en) * | 1981-03-31 | 1984-04-24 | International Business Machines Corporation | Multiprocessing system including a shared cache |
| US4533995A (en) * | 1981-08-03 | 1985-08-06 | International Business Machines Corporation | Method and system for handling sequential data in a hierarchical store |
| US4484267A (en) * | 1981-12-30 | 1984-11-20 | International Business Machines Corporation | Cache sharing control in a multiprocessor |
| DE3380645D1 (en) * | 1982-12-28 | 1989-11-02 | Ibm | Method and apparatus for controlling a single physical cache memory to provide multiple virtual caches |
| US4622631B1 (en) * | 1983-12-30 | 1996-04-09 | Recognition Int Inc | Data processing system having a data coherence solution |
| US4736293A (en) * | 1984-04-11 | 1988-04-05 | American Telephone And Telegraph Company, At&T Bell Laboratories | Interleaved set-associative memory |
-
1986
- 1986-07-29 US US07/890,859 patent/US4853846A/en not_active Expired - Lifetime
-
1987
- 1987-05-28 GB GB8712513A patent/GB2193356B/en not_active Expired - Lifetime
- 1987-07-25 DE DE19873724730 patent/DE3724730A1/de not_active Withdrawn
- 1987-07-27 FR FR878710620A patent/FR2602353B1/fr not_active Expired - Fee Related
- 1987-07-28 CN CN198787105300A patent/CN87105300A/zh active Pending
- 1987-07-29 JP JP62187886A patent/JPS6336466A/ja active Pending
- 1987-07-29 KR KR87008288A patent/KR950010528B1/ko not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| GB2193356B (en) | 1991-04-17 |
| CN87105300A (zh) | 1988-02-10 |
| GB8712513D0 (en) | 1987-07-01 |
| KR950010528B1 (en) | 1995-09-19 |
| US4853846A (en) | 1989-08-01 |
| FR2602353B1 (fr) | 1994-03-04 |
| GB2193356A (en) | 1988-02-03 |
| JPS6336466A (ja) | 1988-02-17 |
| KR880002080A (ko) | 1988-04-29 |
| FR2602353A1 (fr) | 1988-02-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3724730A1 (de) | Cache-steuereinrichtung | |
| EP0013737B1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
| DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
| DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
| DE69732938T2 (de) | Hybrides Speicherzugangsprotokoll in einem Datenverarbeitungssystem mit verteiltem, gemeinsamem Speicher | |
| DE2415900C3 (de) | Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen | |
| DE69721643T2 (de) | Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen | |
| DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
| DE68902193T2 (de) | Datenspeicheranordnung. | |
| DE69708188T2 (de) | Speichersteuerungseinheit | |
| DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
| DE60204687T2 (de) | Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird | |
| DE69228521T2 (de) | Mikroprozessorarchitektur mit der möglichkeit zur unterstützung mehrerer verschiedener prozessoren | |
| DE2240433C3 (de) | Hierarchische Datenspeicheranordnung für mehrere über Pufferspeicher angeschlossene Einheiten und ein Verfahren zu deren Betrieb | |
| DE3621321A1 (de) | Cache-speicher- bzw. multiprozessor-system und betriebsverfahren | |
| DE69628493T2 (de) | Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert | |
| DE102009023898B4 (de) | Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll | |
| DE69724355T2 (de) | Erweiterte symmetrische Multiprozessorarchitektur | |
| DE2241257B2 (de) | Datenverarbeitende Anlage | |
| DE2847960A1 (de) | Speichersteuereinrichtung | |
| DE2841041A1 (de) | Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren | |
| DE68928454T2 (de) | Multiprozessorsystem mit hierarchischer cachespeicheranordnung | |
| EP0600112A1 (de) | Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff | |
| DE68921365T2 (de) | Anordnung und Verfahren zum automatischen Auffinden von Speicherplätzen mit hoher Zugriffsrate und zum Ableiten dieser Zugriffe vom Speicherverkehr in einem Multiprozessorsystem. | |
| DE2226382A1 (de) | Datenverarbeitungsanlage |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8141 | Disposal/no request for examination |