[go: up one dir, main page]

DE3724730A1 - Cache-steuereinrichtung - Google Patents

Cache-steuereinrichtung

Info

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
Application number
DE19873724730
Other languages
English (en)
Inventor
David Bedford Johnson
Ronald James Ebersole
Joel C Huang
Manfred Neugebauer
Steven Ray Page
Keith Self
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE3724730A1 publication Critical patent/DE3724730A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using 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.
Kanalprozessoren
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.
Speichersteuereinheiten
Die Speichersteuereinheiten 50, 51 sorgen für die Steuerung von Datenübertragungen zu und aus Speicherfeldern, die mit den Speicherbussen 54, 56 verbunden sind.
Cache-Directory und Steuerlogik
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.
Cache-Konfigurationsregister
Das Cache-Konfigurationsregister, das in der Cache-Konfigurations- und Steuerlogik 64 der Fig. 2 angeordnet ist, ist nachfolgend gezeigt:
Cache-Konfigurationsregister
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:
System (AP)-Bus-Maskier- und Anpassungsregister
Speicheradressenerkennung
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ß.
Busverzahnung
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.
Adressenerkenner
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.
Lokale Bus-Steuerlogik
Die lokale Bus-Steuerlogik 68 hat vier Speicheradreßerkenner bzw. -identifizierer und die folgenden Steuerregister:
Ortsbus-Steuerregister
Verzahnungsmaske/Anpassung
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.
Entaktivier-INIT-RAM
0 = INIT-RAM Speichererkenner ist abgeschaltet.
1 = INIT-RAM Speichererkenner ist eingeschaltet.
Entscheidungseigner (arbitration owner)
1 = Eigner.
0 = Mieter.
Entscheidungsaktivierung
1 = BXU treibt und überwacht Entscheidungsleitungen als Eigner oder Mieter.
0 = BXU ignoriert die Entscheidungsleitungen.
Ortsbus-Maskier- und Anpaßregister
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.
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 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.
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.
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.
Cache-Speicher-Füllsequenz
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.
Vorabruf
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:
Vorabruf-Steuerregister
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.
Startbefehl
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.
Typische I/O-Vorabrufoperation
Bevor eine I/O-Vorabrufoperation beginnen kann, müssen die Konfigurationsbits (Bits 2 und 3) im Vorabruf-Steuerregister 80 auf 01 gesetzt sein.
Startprozedur
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.
Datenübertragung
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.
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.
DE19873724730 1986-07-29 1987-07-25 Cache-steuereinrichtung Withdrawn DE3724730A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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