DE3751642T2 - Verwaltung von getrennten Befehls- und Operanden-Cachespeichern - Google Patents

Verwaltung von getrennten Befehls- und Operanden-Cachespeichern

Info

Publication number
DE3751642T2
DE3751642T2 DE3751642T DE3751642T DE3751642T2 DE 3751642 T2 DE3751642 T2 DE 3751642T2 DE 3751642 T DE3751642 T DE 3751642T DE 3751642 T DE3751642 T DE 3751642T DE 3751642 T2 DE3751642 T2 DE 3751642T2
Authority
DE
Germany
Prior art keywords
operand
cache
instruction
line
tag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3751642T
Other languages
English (en)
Other versions
DE3751642D1 (de
Inventor
Robert A Ertl
Christopher D Finan
James P Millar
Joseph A Petolino
Theodore S Robinson
Mark W Semmelmeyer Semmelmeyer
Ajay K Shah
Jeffrey A Thomas
Shen H Wang
Gary A Woffinden
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.)
Fujitsu IT Holdings Inc
Original Assignee
Amdahl 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 Amdahl Corp filed Critical Amdahl Corp
Application granted granted Critical
Publication of DE3751642D1 publication Critical patent/DE3751642D1/de
Publication of DE3751642T2 publication Critical patent/DE3751642T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung betrifft im allgemeinen auf Cachespeichern basierende Prozessor- (CPU-)Architekturen, die in Hochleistungsdatenverarbeitungssystemen verwendet werden, und insbesondere eine auf getrennten Cachespeichern basierende CPU-Architektur, die fur eine effiziente Steuerung und Verwaltung von entsprechenden Befehls- und Operandendaten- Cachespeichern sorgt, insbesondere dort, wo Anwendungsprogrammbefehle und ihre entsprechenden Daten in dem Anwendungsprogramm dicht bzw. eng gemischt werden.
  • Cachespeicher werden in CPU-Architekturen verwendet, um die Zugriffszeit der von der CPU angeforderten Befehls- und Operandendaten zu verbessern. Typischerweise ist ein Cachespeicher ein Hochgeschwindigkeitsspeicher relativ niedriger Kapazität, der sehr nahe an eine einzelne CPU gekoppelt ist. Derartige Cachespeicher werden als "lokal" in bezug auf ihre unmittelbar assoziierte CPU beschrieben. Cachespeicher sind somit sehr verschieden von der wesentlich größeren, aber signifikant langsameren Hauptspeicher-Speichereinheit, die typischerweise als eine Einrichtung implementiert ist, die allen CPUs des Datenverarbeitungssystems gemein ist.
  • Eine Anzahl von Erwägungen gehen mit der Verwendung von Cachespeichern einher. Konventionelle Cachespeicher schaffen eine selektive temporäre Speicherung von Befehls- und Operandendatenzeilen, die einem Transfer von dem Hauptspeicher in die CPU folgt. Nahe aufeinanderfolgende Anforderungen von cachegespeicherten Befehls- oder Operandendaten werden lokal durch Zugriffe der in dem lokalen Cachespeicher derzeit vorhandenen Kopie erfüllt. Die Bestimmung, ob eine bestimmte CPU-Anforderung durch Zugreifen auf den lokalen Cachespeicher erfüllt werden kann, wird durch eine CPU-Speichereinheit (SU), die im allgemeinen einen Cachecontroller umfaßt, der ebenfalls sehr nahe an den lokalen Cachespeicher gekoppelt ist, durchgeführt. Typischerweise hält der Cachecontroller eine Tagliste, welche die in dem Cachespeicher vorhandenen Befehls- und Datenzeilen identifiziert. Wo eine Anforderung nicht durch einen Cachespeicherzugriff erfüllt werden kann, gibt die Speichereinheit die Anforderung an die Hauptspeicher-Speichereinheit für den nachfolgenden Abschluß weiter. Eine Kopie der Datenzeile, welche die angeforderten Befehlsoder Operandendaten enthält, wird in den lokalen Cachespeicher der CPU gesetzt. Somit kann der Cachespeicher beschrieben werden, als ob er eine "CPU"-Seitenschnittstelle hat, wo Befehls- und Operandendaten zwischen der CPU und dem Cachespeicher vor- und zurückgegeben werden, und eine "Hauptspeicherseiten"-Schnittstelle, die zwischen dem Cachespeicher und der Hauptspeicher-Speichereinheit zum Transfer von Befehls- und Operandendatenzeilen gekoppelt ist.
  • Bei gegebener finiter Kapazität des Cachespeichers erfordern typische CPU-Anforderungen, die erfordern, daß Befehls- und Operandendaten von der Hauptspeicher-Speichereinheit geliefert werden, weiter den vorherigen Transfer einer Datenzeile von dem Cachespeicher in den Hauptspeicher, um adäquaten Speicherplatz für derzeitig angeforderte Befehle oder Daten freizumachen. Diese Verwaltung des lokalen Cachespeicherinhalts wird typischerweise als eine bw level oder fundamentale Systemintegritäts funktion angesehen.
  • Eine Konsequenz dieser Systemintegritätsfunktion ist es, daß die Erfüllung der CPU-Befehls- oder Operandenspeicherzeilenanforderung signifikant durch das wechselnde heraus- und hereinholen (Swappen) einer Cache-Zeile in den Hauptspeicher verzögert wird. Die Swap-Verzögerung kann durch temporäres Puffern der geswapten Speicherzeile anstelle eines direkten Schreibens in den Hauptspeicher verringert werden. Wenn die angeforderte Speicherzeile einmal gepuffert ist, kann sie in den Cache transferiert werden. Allerdings müssen die temporär gepufferten Datenzeilen sofort aus dem Hauptspeicher geschrieben werden, um ihre für die unmittelbar nachfolgende CPU-Anforderung potentielle Verfügbarkeit zu sichern. Somit stößt man wiederum auf die Swap-Verzögerung, wenn immer nahe aufeinanderfolgende CPU-Anforderungen von neuen Speicherzeilen gegeben sind. Konsequenterweise zieht die CPU Nutzen aus einer signifikant höheren CPU-Seiten-Cache-Befehls- und Operandendatenbusbandbreite, immer wenn Anforderungen direkt durch Zugriffe auf den lokalen Cachespeicher erfüllt werden können. Allerdings ist die CPU im allgemeinen auf die signifikant geringere Hauptspeicher-Speicherseiten-Cache- Datenzeilenbusbandbreitenbegrenzung beschränkt, wo Befehle oder Operandendaten nur von dem Hauptspeicher verfügbar sind.
  • Eine andere Komplikation bei der Verwendung von Cachespeichern ist es, daß typische Mainframe-Datenverarbeitungsarchitekturen eine segmentierte oder gepipelinete Verarbeitungsstruktur für simultane, aber gestufte Ausführung von Befehlen und die Verarbeitung der entsprechenden Operandendaten verwenden. Als Ergebnis treten Zugriffskonflikte zwischen den verschiedenen Pipelinesegmenten auf, wenn sie versuchen, Befehls- und Operandendaten, die in dem Cachespeicher vorhanden sind, abzurufen. Eine Lösung dieses Problems wird durch ein Schaffen separater Cachespeicher für Befehls- und Operandendaten erhalten. Derartige getrennte Cache-Architekturen ermöglichen es, daß die Befehlsausführungs-Pipelinesegemente mit ihren Operandendaten Manipulations-Gegenparts um den Zugriff auf entsprechende Befehls- und Operandendaten-Caches konkurrieren.
  • Unglücklicherweise tritt ein signifikantes Problem bei der Verwendung einer getrennten Cache-Architektur auf. Typischerweise werden alle Anforderungen von Befehls- und Operandendaten von der Hauptspeicher-Speichereinheit durch Transfer der gesamten Speicherzeile an die anfordernde CPU erfüllt. Jede Zeile enthält die angeforderten Befehls- oder Operandendaten, die in die Zeile zusammen mit allen Befehls- und Operandendaten, die sich dieselbe Zeilenadresse teilen, eingebettet sind.. Wo eine Anforderung von Operandendaten gemacht wird, wird die entsprechende Speicherzeile ausdrücklich in dem Operandendaten-Cache gespeichert. Umgekehrt führt eine Befehlsanforderung zur Speicherung der Datenzeile in dem Befehls- Cachespeicher. Konsequenterweise kann eine Kopie der spezifischen Operandendaten sowohl in dem Befehls- als auch dem Operandendaten-Cachespeicher auftreten. Dies führt zu einem Datenintegritätsproblem. Wenn Operandendaten durch die CPU modifiziert werden und in den Operandendaten-Cachespeicher zurückgespeichert werden, resultiert, wenn auf die Befehls- Cachespeicherkopie der Operandendaten nachfolgend als ein integraler Teil eines ausführbaren Befehls zugegriffen wird, ein inkorrekter Betrieb der CPU. Deshalb muß die Datenintegritätserhaltungsfunktion eines getrennten Cachespeicherdatenverarbeitungssystems alle Speicherzeilen, welche die durch die Anforderung spezifizierte Zeilenadresse haben, ungültig machen oder in die Hauptspeicher-Speichereinheit schreiben, bevor eine Anforderung von modifizierten Operandendaten erfüllt wird. Dies stellt sicher, daß der Hauptspeicher-Speicher richtig aktualisiert wird und daß nur eine modifizierbare Kopie der angeforderten Speicherzeile außerhalb des Hauptspeichers existiert. Ähnlich muß, immer wenn eine Befehlsspeicherzeilenanforderung erfüllt werden soll, wenn diese Speicherzeile bereits als modifizierbare Speicherzeile in einem Operanden-Cachespeicher existiert, die Operandendatenspeicherzeile entweder, falls modifiziert, in die Hauptspeicher-Speichereinheit geschrieben werden, oder ungültig gemacht werden, um eine Modifizierung auszuschließen und sicherzustellen, daß die einzige als letztes modifizierte Speicherzeile an die anfordernde CPU zurückgegeben wird.
  • Normalerweise wird, wo die modifizierbaren Anwendungsprogrammdaten distinkt von dem ausführbaren Code-Abschnitt des Anwendungsprogramms getrennt gehalten werden, die getrennte Cache-Datenintegritätsfunktion kaum aufgerufen. Somit besteht nur ein kleiner Einfluß auf die Systemperformance. Allerdings tritt eine Bedingung&sub1; die typischerweise als "Trashing" bezeichnet wird, dort auf, wo der Anwendungsprogrammbefehlscode und potentiell modifizierbare Operandendaten dicht vermischt werden, wie dies häufig bei Speicherzeilen des Anwendungsprogramms der Fall ist. Das heißt, eine Speicherzeile, die sowohl Befehle als auch Operandendaten enthält, kann geholt und in den Befehls-Cachespeicher kopiert werden, um sofort ungültig gemacht zu werden, so daß von derselben Speicherzeile eine nachfolgende modifizierbare Operandendatenanforderung erfüllt werden kann. Eine dicht nachfolgende Befehlsanforderung zur Ausführung desselben oder des nächsten Befehls bewirkt, daß die modifizierte Speicherzeile nur in und aus dem Hauptspeicher geschrieben wird, um dann in den Befehls- Cachespeicher zurückgeholt zu werden. Diese Schritte können wiederholt und in dichter Aufeinanderfolge auftreten, insbesondere, wenn das Anwendungsprogramm die Ausführung einer kurzen Programmausführungsschleife aufruft. Konsequenterweise tritt eine signifikante und distinkt unerwünschte CPU- Performancedegradierung auf.
  • Die EP-A-0144249 schafft ein Pufferspeichersystem für einen Pipelineprozessor, der separate Pufferspeicher für die Befehlseinheit und die Ausführungseinheit umfaßt. Dieses System umfaßt eine Einrichtung, um zu bestimmen, ob ein bestimmter Datenblock in beiden Puffern gespeichert ist, so daß, falls dies der Fall ist, diese Daten dann durch die Ausführungseinheit aktualisiert werden, die neuen Daten in beide Puffer gegeben werden.
  • Andere Dokumente gemäß dem Stand der Technik, wie beispielsweise die unten aufgelisteten, offenbaren verschiedene Schemata zur Behandlung von Daten, die simultan durch mehr als einen einer Anzahl von Mehrfach-Caches gehalten werden, insbesondere wenn Aktualisierungen solcher Daten in einem der Cachespeicher durchgeführt werden. Ein Tagbit bzw. Kennzeichnungsbit ist zur Identifizierung derartiger wiederholten Daten vorgesehen. Die Dokumente, auf die oben Bezug genommen wurde, sind:
  • 11. Annual International Symposium on Computer Architecture, 5.-7. Juni 1984, LEBE, Seiten 355-362, "An Economical Solution to the Cache Coherence Problem";
  • Computing Surveys, Vol 14, Nr. 3, September 1982, Seiten 473-530, "Cache Memories";
  • EP-A-0198574; und
  • US-A-3735360.
  • Die vorliegende Erfindung schafft eine Vorrichtung zur Verwendung in einem Datenverarbeitungssystem, wie sie in Anspruch 1 beansprucht ist.
  • Deshalb schafft die vorliegende Erfindung ein Steuersystem, das ein Mehrfach-CPU-Architekturcomputersystem mit getrenntem Cachespeicher ohne Kompromisse in bezug auf CPU-Performance betreibt, während die Systemintegrität erhalten wird und unabhängig davon, ob Befehle und Opeandendaten eng vermischt werden.
  • Dies wird in einer spezifischen Anordnung durch die systematische Verwaltung von Speicherzeilenpaaren erreicht, immer wenn ein Speicherzeilentransfer in bezug auf Befehls- und Operandenspeicherzeilenpuffer eines getrennten Cachespeichers in einer Mehrfach-CPU-Computersystemarchitektur auftritt. Jede Datenzeile hat eine assoziierte Systemspeicheradresse. Die getrennte Cachespeicherarchitektur umfaßt eine Sucheinrichtung erster Stufe zur Bestimmung, ob eine Datenzeile mit einer ersten vorbestimmten Systemadresse innerhalb sowohl des Befehls- als auch des Operanden-Cachespeichers vorhanden ist. Die Sucheinrichtung der ersten Stufe schafft ein Bedingungsergebnis, das anzeigt, ob und wo die Speicherzeile resident ist. Ebenso ist eine Datenpfadauswahleinrichtung enthalten, die auf die Sucheinrichtung der ersten Stufe anspricht, um die Datenzeile mit der ersten vorbestimmten Systemspeicheradresse entweder an den Befehls- oder den Operandendaten- Cachespeicher, oder an beide, in Abhängigkeit von dem durch die Sucheinrichtung für das erste Tag bzw. die erste Markierung bestimmten Bedingungsergebnis zu transferieren.
  • Beim Implementieren der Grundfähigkeit der vorliegenden Erfindung wird ein Befehls- und Operandendaten- (IF/OP-)Zeilenpaar-Bit in dem Tag- bzw. Tagpeicherbereich sowohl für den Befehls- als auch den Operandendaten-Cachespeicher definiert. Zusätzlich sorgen die Tagspeicherstellen die Speicherung der hinreichenden Information, entweder implizit oder explizit, um die entsprechenden Daten und Befehlszeilenspeicherstellen innerhalb des Befehls- und Operanden-Cachespeicher für jedes Speicherzeilenpaar zu schaffen.
  • Somit ist ein Vorteil der vorliegenden Erfindung, daß sie einen effizienten Architekturmechanismus zur Verwaltung getrennter Cachespeicher in einer Mehrfach-CPU-Computerarchitektur schafft, ohne eine Systemperformancedegradierung und bei Erhaltung der Systemintegrität.
  • Ein anderer Vorteil der vorliegenden Erfindung ist es, daß alle signifikanten Architekturmerkmale des Controllers für die getrennten Cachespeicher so implementiert werden können, daß er parallel abarbeitet, wobei bevorzugte oder erwünschte Architekturfunktionen des Prozessors und der Systemintegritätsfunktion des Systemcontrollers existieren.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist es, daß ihre Implementierung im wesentlichen unabhängig von der Anzahl der in dem Datenverarbeitungssystem vorhandenen CPUs ist.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist es, daß sie optimale Verwendung der existierenden Architekturmerkmale des Datenverarbeitungssystems macht, wobei insbesondere das Vorsehen eines Systemcontroller-Tagpuffers als eine Basis zur Lieferung einer systemweiten Datenintegrität in einer bevorzugten Ausführungsform umfaßt ist.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist es, daß sie das Auftreten eines Speicherzeilen-Trashings zwischen den Befehls- und Operandenpuffern eines getrennten Cachespeichers verringert, wenn nicht sogar eliminiert.
  • Kurze Beschreibung der Zeichnungen
  • Diese und andere begleitenden Vorteile der vorliegenden Erfindung werden offensichtlich und schnell einsehbar, wenn dieselbe durch Bezugnahme auf die folgende detaillierte Beschreibung der Erfindung besser verstanden wird, wenn sie in Zusammenhang mit den beigefügten Zeichnungen gesehen wird, in welchen in allen Figuren gleiche Bezugszeichen gleiche Teile derselben bezeichnen, und in welchen:
  • Fig. 1 ein vereinfachtes Blockdiagramm eines Mehrfach-CPU- Architekturdatenverarbeitungssystems mit getrenntem Cachespeicher, der eine bevorzugte Ausführungsform der vorliegenden Erfindung inkorporiert, ist; und
  • Fig. 2 ein detailliertes Blockdiagramm eines getrennten Befehls- und Operanden-Cachespeichers ist, der gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung aufgebaut ist.
  • Detaillierte Beschreibung der Erfindung
  • Die Hauptelemente eines Mehrfach-Prozessor- (CPU-)Datenverarbeitungssystems 10 mit getrenntem Cachespeicher sind in Fig. 1 gezeigt. Umfaßt sind eine erste CPU 12, eine identische, aber optionale zweite CPU 12', ein Systemcontroller (SC) 20 und eine Hauptspeicher-Speichereinheit (MSU) 22 mit einer eng verbundenen Speicherzeilen-Streckenschalteinheit (SB) 24.
  • Der Systemcontroller 20 arbeitet als bezeichneter Fokuspunkt für alle Systemanforderung zum Zugriff auf die Hauptspeicher- Speichereinheit 22. Derartige Anforderungen werden durch den Systemcontroller 20 über die Anforderungsteuerungsleitungen 26 von der CPU 12 empfangen. Andere Anforderungen können an den Systemcontroller 20 über die Anforderungsteuerleitungen 28 von anderen Elementen des Datenverarbeitungssystems 10, das insbesondere solche wie die zweite CPU 12' umfaßt, geliefert werden. Demgemäß implementiert der Systemcontroller 20 eine Zuteilungs- und Steuerlogik, um Hauptspeicher- Speichereinheitszugriffe ordnungsgemäß zu verwalten und jeden resultierenden Speicherzugriff durch Anwendung des Hauptspeicher-Steuersignals über die Hauptspeicher- Speichersteuerleitung 30 zu überwachen.
  • Ein Hauptspeicher-Speichereinheitszugriff umfaßt typischerweise den Transfer einer vollen Speicherzeile in oder von der Hauptspeicher-Speichereinheit 22. Jede solche Speicherzeile besteht aus 64 Daten-Bytes. Alle Speicherzeilentransfers werden durch die Schalteinheit 24 durch den Systemcontroller 20 basierend auf einem Streckenauswahlsteuersignal, das über die Schalteinheit-Steuerleichtung 32 angelegt wird, gesendet. Wie gezeigt ist die Schalteinheit 22 mit den zwei getrennten CPUs 12, 12' durch entsprechende CPU-Speicherzeilendatenbusse 34, 36 verbunden. Die Schalteinheit 24 unterstützt ein Bypass- Transfer-Routing der Speicherzeilen zwischen den CPUs 12, 12' sowie bidirektionale Speicherzeilentransfers in bezug auf die Hauptspeicher-Speichereinheit 22.
  • Die bevorzugte Ausführungsform der CPU 12 (und in gleicher Weise der CPU 12') umfaßt eine Befehlseinheit (IU) 14, eine Ausführungseinheit (EU) 16 und eine Speichereinheit (SU) 18 als ihre Hauptfunktionsblöcke. Die Befehlseinheit 14 implementiert eine gepipelinete Befehlsverarbeitungsfunktion, die für die segmentierte und gestufte sequentielle Ausführung von Befehlen, im allgemeinen in der Sequenz, die über einen CPU- internen Befehlsabrufbus 38 empfangen wird, sorgt. Die Ausführungseinheit 16 sorgt für die Verarbeitung von Operandendaten, die über einen CPU-internen Operandendatenbus 40 empfangen werden. Die spezifische Natur der Operandendatenverarbeitungsfunktion, die durch die Ausführungseinheit 16 durchgeführt wird, ist typischerweise spezifiziert durch und von der Ausführung der entsprechenden Befehle durch die Befehlseinheit 14 verwaltet. Das heißt, daß während der gestuften Ausführung eines jeden Befehls, die Befehlseinheit 14 ein Befehlseinheitsteuersignal über den internen CPU-Ausführungseinheitssteuerbus 42 schafft, um die entsprechende Verarbeitung von Operandendaten, die begleitet werden, von oder auf die Bezug genommen wird durch einen Befehl, auszuwählen und zu steuern. Der Reihe nach werden über Leitungen 44 Ausführungsergebnis-Statussignale, die von der Verarbeitung der Operandendaten erhalten werden, an die Befehlseinheit 14 zurückgeliefert.
  • Die Speichereinheit 18 funktioniert insbesondere zur Unterstützung der Abruf- und Speicheranforderungen der Befehlsund Ausführungseinheiten 14, 16. Für diesen Zweck sind ein getrennter Cachespeicher 46, der einen Adressidentifizierungspuffer (Tag 1) 48 umfaßt, und ein Cachecontroller (CC) 50 als Komponentenelemente der Speichereinheit 18 vorgesehen. Der getrennte Cachespeicher 46 sorgt für die temporäre Speicherung der Hauptspeicher-Speicherzeilen in einem Befehlspuffer (IF) 52 und einem Operandenpuffer (OP) 54. Der Tag-1- Puffer 48 speichert die Adressidentifizierung, die mit jeder Speicherzeile, die in dem getrennten Cachespeicher 46 vorhanden ist, assoziiert ist. Anforderungen von der Befehlseinheit 14 von Befehlen, jeder durch eine Adresse identifiziert, werden der Speichereinheit 18 über einen Befehlsanforderungsbus 56 zugeführt. Anforderungen, Operanden zu empfangen oder zu speichern, ebenfalls durch eine Adresse identifiziert, werden im Auftrag der Ausführungseinheit 16 durch die Befehlseinheit 14 plaziert. Die Speichereinheit 18 antwortet anfänglich auf jede solche Anforderung durch Aufrufen des Cachecontrollers (CC) 50, um zu bestimmen, ob die Anforderung durch einen unmittelbaren Zugriff entweder des Befehls oder des Operandenpuffers 52, 54 erfüllt werden kann. Im allgemeinen führt der Cachecontroller 50 diese Bestimmung basierend auf einer Untersuchung der Adressidentifizierungen, die derzeit in dem Tag-1-Puffer 48 gespeichert sind, durch. Falls eine Anforderung nicht sofort durch einen Befehls- oder Operandenpufferzugriff erfüllt werden kann, wird die Anforderung, die die Adresse oder den angeforderten Befehl oder den Operanden umfaßt, durch die Speichereinheit 18 an dem Systemcontroller 20 über CPU-Anforderungsleitungen 26 weitergegeben. Im allgemeinen wird dann auf eine Hauptspeicher-Speicherzeile, die den angeforderten Befehl oder Operanden umfaßt, zugegriffen und von der Hauptspeichereinheit 22 über die Schalteinheit 24 unter kooperativer Steuerung der Speichereinheit 18 und des Systemcontrollers 20 mittels des ersten CPU-Datenbusses 34 zurückgegeben. Die zurückgegebene Speicherzeile wird im allgemeinen entweder in dem Befehls- oder dem Operandenpuffer 52, 54 des getrennten Cachespeichers 46 gespeichert, abhängig da von, ob die Anforderung ursprünglich nach einem Befehl oder einem Operanden war. Die Adressidentifizierung, welche die zurückgegebene Speicherzeile begleitet, wird an einem logisch entsprechenden Ort innerhalb des Tag-1-Puffers 48 gespeichert.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung werden die Befehls- und Operdandendatenpuffer 52, 54 und der Tag-1-Puffer 48 als Hochgeschwindigkeitsspeicher implementiert. Der Befehlspuffer 52 sorgt für den Satz assoziativer Speicher aus 256 Speicherzeilen von 64 Bytes in jeder der zwei Befehlspufferspeicherbänke. Ähnlich sorgt der Operandenpuffer 54 für den Satz assoziativer Speicher von 512 Speicherzeilen in jedem der zwei Operandenpufferspeicherbänke. Die Speicherbänke in jedem Paar der Pufferspeicherbänke werden entsprechend als A- und B-Assoziative bezeichnet.
  • Der Tag-1-Puffer 48 ist als ein Satz assoziativer Speicher implementiert, die physikalisch sowie logisch den Befehlsund Operandenpuffern 52, 54 entsprechen. Das heißt, der Tag- 1-Puffer 48 wird mit einer Adressidentifizierungsspeicherstelle implementiert, die jeden der möglichen 1.536 getrennt cachegespeicherten Speicherzeilen entspricht. Jede dieser 1.536 Tag-1-Pufferspeicherstellen sorgt für die Speicherung einer vollständigen Speicherzeilenadreßidentifizierung, umfassend die Systemadresse und die Steuerdaten, die mit der Speicherzeile assoziiert sind. Diese Steuerdaten werden prinzipiell zur Verwaltung der Speicherzeile verwendet, während sie außerhalb der Hauptspeichereinheit 22 vorhanden ist.
  • Der gesamte getrennte Cache 46 wird als Teil eines virtuellen Cache-Systems betrieben, das ein virtuelles oder effektives Adressschema, im Gegensatz zu konventionellen Real- oder Systemadreß-Cache-Systemen, verwendet. Für den Zweck der vorliegenden Erfindung ist die effektive Adresse einer Speicherzeile, wenn sie entweder in dem Befehls- oder Operandenpuffer 52, 54 ist, einfach seine Cache-Adresse. Systemadreß-Bits < SA26:31 > liefern eine hinreichende Adressdefinition, um jedes Byte in einer einzelnen 64 Byte-Speicherzeile eindeutig zu spezifizieren. Basierend auf der Speicherzeilen-Speicheranforderungen des Befehls- und Operandenpuffers 52, 54 kann jede Speicherzeile in dem Cache-Puffer eindeutig durch effektive Adressbits < EA17:25 > spezifiziert werden; die kombinierte Adresse von EA17:25 und SA26:31 spezifizieren eindeutig ein einzelnes getrennt cachegespeichertes Byte. Ein effektives Adress-Bit < EA17 > wird allerdings nur in bezug auf den Operandenpuffer 54 gefordert, unter der Vorraussetzung, daß der Operandenpuffer 54 zweimal soviel Speicherzeilen wie der Befehlspuffer 52 speichert. Die Tabelle 1 stellt die Beziehung zwischen System- und effektiven Adressen für die Zwecke der vorliegenden Erfindung dar. TABELLE I Adressschema Cache oder Effektiv System Beschreibung OP/If Page-Adresse SU Select OP/IF Select Assoziativität Cache-Adresse/Tag Index Line in Page Index Byte in Line Index
  • Die Tabelle II faßt das Hauptadreß- und Steuerfeld einer Speicherzeilenadreßidentifizierung, wie sie in dem Tag-1- Puffer 48 gespeichert ist, zusammen. TABELLE II Tag 1 Adress -Tag-Felder #Bits Impliziert - Tag-Index < EA17:25 > - IF/OP-Assoziativität Explizit - System-Adresse < SA3:19 > - Tag-Validisierung - IF/OP Zeilenpaar - IF/OP Paar-Assoziativität - EA17 des OP-Paars - öffentlich/privat - OP Line modifiziert * verwendet nur für IF-Adresstags ** verwendet nur für OP-Adresstags
  • Obwohl die vollständigen Systemadressen 32 Bit lang sind (wobei das Bit < SA0 > das signifikanteste Bit ist), müssen die Tag-1-Adressidentifizierungen explizit nur die Systemadressenbits < SA3:19 > speichern. Die gesamten Speicherzeilen werden durch den Tag-1-Puffer 48 gespeichert, wodurch das Erfordernis einer expliziten Speicherung eines Speicherzeilen-in- line-Byte-Bits < SA26:31 > als ein Teil der Adressidentifizierung umgangen wird. Zusätzlich braucht der Tag-Index und die Assoziativität nicht explizit gespeichert werden. Sätze von Tag-1-Speicherstellen werden logisch auf assoziative Sätze von entweder Befehls- oder Operandenspeicherstellen abgebildet. Eine Adressidentifizierung wird in einem Satz von Tag-1- Pufferspeicherstellen abgespeichert, die eindeutig dem Assoziativitätssatz der Speicherzeilenspeicherstellen entsprechen, die ihre Speicherzeile speichern. Sowohl die Adressidentifizierung als auch seine Speicherzeile werden in derselben Assoziativität ihrer entsprechenden Tag-1- und Befehls- oder Operandenpuffer 48, 53, 54 gespeichert. Bei der Speicherung einer Speicherzeile in den Cache 46 basiert die Wahl eines Assoziativitätssatzes von Speicherzeilenspeicherstellen auf dem Tag-Index-Bit < EA17:25 > der Zeile, die gespeichert wird. Die Adressidentifizierung wird der Speicherstelle, durch die mit demselben Tag-Index und Assoziativität verwiesen wird, entweder in dem Befehls- oder Operandenabschnitt des Tag-1-Puffers gespeichert. Danach kann der Tag-Index und die Assoziativität dieser oder irgendeiner anderen Speicherzeile in dem getrennten Cache 46 direkt aus der relativen Pufferspeicherstelle ihrer assoziierten Adressidentifizierung innerhalb des Tag-1-Puffers 26 bestimmt werden.
  • Die verbleibenden Steuerdatenfelder, die als Teil einer Tag-1-Adressidentifizierung behalten werden, umfassen Tag- Validisierungs-, Zeilenpaar-, Öffentlich/Privat- und modifizierte Daten-Bits. Das Tag-Validisierungs-Bit zeigt an, ob die derzeitige Adressidentifizierung und ihre assoziierte Speicherzeile gültig sind. Wenn die assoziierte Speicherzeile in dem Operandenpuffer 54 auftritt, dann bestimmt das Öffentlich/Privat-Bit, ob die CPU 12, 12' private (Lese/Schreibzugriff) Privilegien auf dieser speziellen Speicherzeile hat, während sie in ihrem lokalen Cache 46 vorhanden ist. Das modifizierte Speicherzeilen-Bit gibt an, ob die Speicherzeile in der Tat durch einen Schreibzugriff modifiziert worden ist.
  • Das Zeilenpaar-Bit der Tag-1-Adressidentifizierung wird verwendet, um anzuzeigen, ob eine Speicherzeile in dem Komplementärpuffer des getrennten Caches 46 dubliziert ist. Das heißt, daß gemäß der vorliegenden Erfindung eine Befehls- und eine Privatoperandenkopie einer einzelnen Speicherzeile gleichzeitig vorhanden sein kann und unter bestimmten Bedingungen in dem getrennten Cache 46 geeignet verwaltet werden kann. Im allgemeinen umfassen diese Bedingungen, daß zwei Speicherzeilenkopien in den entsprechenden Befehls- und Operandenpuffern 52, 54 eines einzelnen getrennten Cache 46 existieren, beide Speicherzeilen müssen dieselbe Systemadresse haben und beide Speicherzeilen haben denselben Tag-Index. Ein Paar von Speicherzeilen in einem getrennten Cache 46, die diese Bedingungen erfüllen, werden als Zeilenpaar definiert. Das Zeilenpaar-Bit wird in den Adressidentifizierungen beider Speicherzeilenmitglieder des Zeilenpaars gesetzt. Da Speicherzeilen mit demselben Tag-Index nicht in derselben Assoziativität des Befehls- und Operandenpuffers 52, 54 gespeichert werden dürfen, wird ein zusätzliches Paar Assoziativitäts-Bits explizit in jedem Adress-Tag beibehalten, um die Assoziativität des anderen Mitglieds des Zeilenpaars zu identifizieren. Eine Kopie des effektiven Adress-Bits EA17 wird ebenso in den Adress-Tags der Befehlsspeicherzeilenpaarmitglieder gehalten. Der Tag-Index der Befehlsspeicherzeilen wird vollständig durch effektive Adressen < EA18:25 > , wobei der Zustand von EA17 undefiniert ist, spezifiziert. Somit muß eine Kopie des effektiven Adress-Bits < EA17 > gehalten werden, um die eindeutige Identifizierung des Operandenelements des Zeilenpaars, nur auf den Bits < EA18:25 > des Tag-Index des Befehls, zu ermöglichen.
  • Die Verwaltung der Zeilenpaare folgt den folgenden Regeln: eine Kopie einer öffentlichen (es ist nur Lesezugriff erlaubt) Speicherzeile kann in jedem der Puffer 52, 54 der CPUs 12, 12' existieren; nur eine einzelne Kopie einer privaten (Schreibzugriff privilegierten) Speicherzeile kann in irgendeinem der Operandenpuffer 54 der CPUs 12, 12' (Befehlspufferspeicherzeilen werden immer öffentlich gehalten) existieren; und ein Zeilenpaar einer spezifischen Speicherzeile kann in einem getrennten Cache 46 existieren, wo die Zeilenpaarelemente in entsprechenden Befehls- und Operandenpuffern 52, 54 gespeichert sind und wo das Operandenpufferelement des Zeilenpaars mit privaten Zugriffsprivilegien gehalten wird. Immer wenn diese Verwaltungsregeln und Bedingungen in bezug auf die zwei Kopien einer einzelnen Speicherzeile erfüllt sind oder werden, wird ein Zeilenpaar erzeugt. Das Adress-Tag eines jeden Elements des Paars wird aktualisiert, um seinen Status als ein Element eines Zeilenpaars wiederzugeben und um die Assoziativität und, falls nötig, das effektive Operandenadreß-Bit < EA17 > seines Paarelements einzuschließen. Somit kann irgendeine Anzahl von Zeilenpaaren verschiedener Speicherzeilen in den getrennten Caches 46 der CPUs 12, 12' des Datenprozessors 10 existieren. Solange die Regeln und Bedingungen für die Existenz von Zeilenpaaren weiter erfüllt sind, verbleiben die Zeilenpaare intakt. Falls eine Bedingung oder Regel gebrochen wird, werden die Zeilenpaarzustände zerstört. Das heißt, auf die entsprechenden Adress-Tags des Zeilenpaars wird zugegriffen und ihre Zeilenpaar-Bits werden zurückgesetzt und als öffentlich markiert oder als ungültig markiert. Wenn beispielsweise ein Zeilenpaar in dem getrennten Cache 46 der ersten CPU 12 gehalten ist und der Systemcontroller 20 eine CPU 12'-Anforderung für dieselbe Speicherzeile, allerdings mit privaten Zugriffsprivilegien, empfängt, und das Operandenelement des Zeilenpaars nicht modifiziert worden ist, werden beide Kopien des Zeilenpaars einfach ungültig während die Datenintegritätsfunktion durch den Systemcontroller 20 ausgeführt wird, bevor eine neue Kopie der angeforderten privaten Speicherzeile an die CPU 12' übertragen wird. Eine Anforderung von der Speicherzeile mit öffentlichen Zugriffsprivilegien durch die zweite CPU 12' wird nur in dem Ausmaß verschieden behandelt, indem der Zeilenpaarstatus beider Zeilenpaaradreß-Tags zurückgesetzt wird und der Operandenadreß-Tag als öffentlich markiert wird. Wenn allerdings das Operandenelement des durch den getrennten Cache 46 der ersten CPU 12 gehaltenen Zeilenpaars modifiziert worden ist, dann wird die Datenintegritätsfunktion des Systemcontrollers 20 einen Datenintegritäts-Move-Out (DIMO) der modifizierten Speicherzeile für den Speicher in dem Hauptspeicher 22 durchführen, bevor beide Elemente des Zeilenpaars in dem getrennten Cache 46 der CPU 12 als ungültig markiert werden. Wenn dann die zweite CPU 12' eine nachfolgende Move-In-Anforderung des Systemcontrollers 20 für dieselbe Speicherzeile in bezug auf ihren Befehlspuffer 52 macht, wird der Systemcontroller 20 ein Zeilenpaar in dem getrennten Cache 46 der CPU 12' auf Move-In der angeforderten Befehlsspeicherzeile hin erzeugen. Die Erzeugung des Zeilenpaars wird durch Aktualisierung der Adress-Tags der beiden Elemente des neuen Zeilenpaar erzielt. Schließlich wird, wenn die zweite CPU 12' eine andere unzusammenhängende Anforderung des Systemcontrollers 20 nach dem Move-In einer Speicherzeile mit demselben Tag-Index, wie dem eines Elements eines Zeilenpaars, das bereits in seinem getrennten Cache 46 vorhanden ist, obwohl es eine unterschiedliche Systemadresse hat, macht, der Systemcontroller 20 das existierende Zeilenpaar mittels Durchführung seiner Datenintegritätsfunktion zerstören. Falls die Bestimmung der angeforderten Speicherzeile der Operandenpuffer 54 ist und das Operandenelement des Zeilenpaars modifiziert worden ist, wird ein Operandenspeicherzeilen-Swap-Move-Out durchgeführt. In jedem Fall wird dann auf die Adress-Tags des Zeilenpaars zugegriffen, beide Zeilenpaar-Bits werden zurückgesetzt und das Move-In-Bestimmungspufferzeilenpaarelement wird als ungültig markiert. Wenn der Bestimmungspuffer der Befehlspuffer ist oder das Opeandenzeilenpaarelement nicht modifiziert worden ist, führt der Systemcontroller 20 nur die Datenintegritäts- Tag-Zugriffsoperation oder einen kurzen Move-Out durch. Der angeforderte Speicherzeilen-Move-In wird dann mit einem anderen Zugriff des entsprechenden Speicherzeilenadreß-Tags durchgeführt, um es als gültig zu markieren und die neue Systemadresse und andere Steuerdaten zu schreiben, so daß die Anwesenheit der neuen Move-In-Speicherzeile dargestellt wird.
  • Die Verwaltung von Zeilenpaarzuständen in dem Datenverarbeitungssystem 10 wird kooperativ durch die Speichereinheit 18 beider CPUs 12, 12' und den Systemcontroller 20 durchgeführt. Um das Erfordernis, den Tag-1-Puffer 48 der CPUs 12, 12' als Antwort auf jede Speicherzeilenanforderung abzufragen, zu umgehen, implementiert der Systemcontroller 20 seinen eigenen Adress-Tag-(Tag-2)-Puffer 60. Der Tag-2-Puffer 60 umfaßt eine Anzahl von Tag-2-Adress-Tag-Speicherstellen, die gleich der kombinierten Anzahl von Speicherstellen in dem Tag-1-Puffer 48 der CPUs 12, 12' sind. Die Tabelle III faßt die Tag-2- Adress-Tag-Felder, die für jede Adress-Tag-Speicherstelle innerhalb des Tag-2-Puffers 60 gehalten sind, zusammen. TABELLE III Tag 2 Tag Felder #Bits Impliziert - SU-Identifizierer - Tag-Index < EA17:25 > - IF/OP-Assoziativität Explizit -System-Adressee < SA3:19 > - Tag-Validisierung
  • Der physikalische Aufbau des Tag-2-Puffers 60 ermöglicht, daß die Tag-2-Adress-Tag-Speicherstellen logisch auf die entsprechenden Tag-1-Pufferspeicherstellen für beide Tag-1-Puffer 48 der CPUs 12, 12' abgebildet werden. Bedingt durch die Konstruktion speichert der Systemcontroller 20 sein Tag-2- Adress-Tag innerhalb des Tag-2-Puffers 60 an den logisch entsprechenden Speicherstellen, wenn das Tag-1-Adress-Tag durch einen der beiden Cachecontroller 50 in seinem assoziierten Tag-1-Puffer 48 einer der CPUs 12, 12' gespeichert wird. Konsequenterweise werden der Speichereinheitidentifizierer, der Tag-Index und die Assoziativität alle direkt durch die spezifische Speicherstelle impliziert, an der ein Adress-Tag in dern Tag-2-Puffer 60 gespeichert ist.
  • Die expliziten Speicheranforderungen des Tag-2-Puffers sind deshalb auf die Systemadresse < SA3:19 > der Adress-Tags, die der Speicherzeile entspricht, ein Bit, um anzuzeigen, ob das Tag gültig ist, und ein Bit, um anzuzeigen, ob die Speicherzeile mit öffentlichen oder privaten Zugriffsprivilegien gehalten wird, beschränkt.
  • Eine typische Anforderung, die an den Systemcontroller 20 gerichtet wird, ist nach einem Speicherzeilen-Move-In (MI). Angenommen, daß die getrennten Cache-Puffer 52, 54 der anfordernden CPU typischerweise immer nahezu voll sind, wird eine Anforderung von einem Move-In einer weiteren Speicherzeile ein vorheriges Swap-Move-Out (MO) einer Speicherzeile erfordern, um Platz für die angeforderte Move-In-Speicherzeile zu schaffen. Dies Swap-Move-Out-Zeile ist die Speicherzeile, die derzeit die Pufferspeicherzeilenstelle einnimmt, die die Bestimmung der angeforderten Move-In-Speicherzeile sein soll. Die Tabelle IV faßt die Anforderungsinformation zusammen, die dern Systemcontroller 20 als ein Teil einer Move-In- Anforderung geliefert wird. TABELLE IV Move-In Anforderung #Bits Move-In-Op-Code SU-Indentifizierer (impliziert) System-Adresse < SA3:19 > IF/OP Speicherzeilenanforderung Assoziativität Tag-Index < EA17:25 > Öffentlich/Privat Swap Öffentlich/Privat OP-Zeile modifiziert IF/OP Zeilen-Paar IF/OP Paar-Assoziativität EA17 des OP Paars + Teil des Op-Codes * nur EA18:25, falls eine IF-Zeilenanforderung ** nur für die IF-Zeilenanforderung verwendet # Swap Move-Out-Ersetzungssteuerdaten
  • Der Move-In-Op-Code steuert den Systemcontroller 20, so daß ein Move-In-Prozeß durchgeführt wird. Die Tabelle V faßt den Systemcontrolleprozeß zusammen, der als Antwort auf eine Move- In-Op-Code -Anforderung aufgerufen wird. TABELLE V Move-In Systemcontrollerprozeß SC-Anforderung Systemcontroller-MI-Prozeß Swap MO Aktualisiere Tag Hauptspeicherzugriff DI Suche MI Zeile
  • Bei der Implementierung der bevorzugten Ausführungsform der vorliegenden Erfindung ist der Systemcontroller 20 in der Lage, unabhängig die Quelle einer jeden Anforderung zu identifizieren. Somit ist der Speichereinheitsidentifizierer impliziert. Die Move-In-Anforderung identifiziert explizit die angeforderte Move-In-Speicherzeile durch Liefern ihrer Systemadresse < SA3:19 > und des Tag-Index < EA17:25 > . Zusätzlich zeigt die Anforderung an, ob die Speicherzeilenbestimmung der Befehls- oder Operandenpuffer 52, 54 sein soll und ob öffentliche oder private Zug riffprivilegien für die Speicherzeile erforderlich sind. Aus dieser essentiellen Move-In-Information kann der Systemcontroller eindeutig die Speicherzeile identifizieren, die im Move-Out-Verfahren ausgetauscht werden soll bevor ein Move-In der angeforderten Speicherzeile durchgeführt wird.
  • Um den Move-Out-Austausch zu ermöglichen, schafft die anfordernde Speichereinheit 18 als Teil ihrer Move-In-Anforderung eine Steuerinformation, die die Austausch-Move-Out-Speicherzeile betrifft. Das Öffentlich/Privat-Privileg und die modifizierten Bits der Speicherzeile, die im Move-Out-Verfahren ausgetauscht werden sollen, werden geliefert, um dem Systemcontroller 20 zu ermöglichen, zu bestimmen, ob ein langer oder ein kurzer Operandenspeicherzeilenaustausch-Move-Out durchgeführt werden muß. Wenn die Austausch-Move-Out- Speicherzeile in dem Befehlspuffer 52 lokalisiert ist, kann das Move-Out immer durch einen kurzen Move-Out bewirkt werden, um die Befehlsspeicherzeile in dem Befehls-Tag-1-Puffer als ungültig zu markieren. Zusätzlich werden das Zeilenpaar, die Paarassoziativität und die EA17-Paar-Bits geliefert, so daß der Systemcontroller 20 das verbleibende Zeilenpaarelernentadreß-Tag am Ende entweder des langen oder des kurzen Austausch-Move-Out lokalisieren und aktualisieren kann, um sein Linienpaarstart-Bit zurückzusetzen
  • Bei gegebener Information&sub1; die in der Move-In-Anforderung enthalten ist, iniziiert der Systemcontroller 20 das Austausch-Move-Out der angeforderten Speicherzeile von der anfordernden Speichereinheit 18, sobald die Anforderung empfangen und akzeptiert ist. Tabelle VI faßt die Anforderungsinformation, die dem Systemcontroller 20 zugeführt wird, um das Austausch-Move-Out durchzuführen, zusammen. TABELLE VI Swap Move-Out Anforderung #Bits Swap-Move-Out-Op-Code IF/OP-Speicherzeile lang/kurz Assoziativität Tag-Index < EA17:25 > IF/OP-Zeilenpaar IF/OP-Paar-Assoziativität EA17 des OP-Paars Teil des Op-Code * nur EA18:25, falls eine IF-Zeilenanforderung ** nur für die IF-Zeilenanforderung verwendet
  • Der Austausch-Move-Out-Anforderungs-Op-Code identifiziert für den Cachecontroller 50, ob die Move-Out-Speicherzeile in dem Befehls- oder Operandenpuffer ist, ob sie ein Teil eines Zeilenpaars ist und ob ein langer oder kurzer Move-Out in bezug auf die Operandenspeicherzeile, falls mit ihr ein Move-Out durchzuführen ist, durchzuführen ist.
  • Ein Hauptspeicherzugriff wird ebenfalls umgehend iniziiert, um den Prozeß des Erhaltens der angeforderten Move-In- Speicherzeile zu beginnen. Die Datenintegritätsfunktion des Systemcontrollers 20 wird ebenfalls gleichzeitig aufgerufen. Das heißt, eine Datenintegritäts-(DI)Suche der Adress-Tags in dern Tag-2-Puffer 60 wird durchgeführt, um zu bestimmen, ob und wo Kopien der angeforderten Speicherzeile außerhalb der Hauptspeichereinheit 22 existieren. Die gesamte Datenintegritätssuche des Tag-2-Puffers 60 wird in einer Sequenz von vier Suchzyklen abgeschlossen. Die physikalische Struktur des Tag-2-Puffers 60 und der Suchschaltung erlaubt einen simultanen Zugriff auf eine Adress-Tag-Speicherstelle für jede Kombination von Speichereinheit, Befehlspuffer, Operandenpuffer (einschließlich beider EA17-Hälften) und Assoziativitäten während jedes Suchzyklus. Die Suchspeicherstelle wird durch die effektiven Adress-Bits < EA18:25 > der Move-In-Anforderung definiert. Da die effektiven Adress-Bits < EA2O:25 > dieselben wie die Systemadreß-Bits < SA20:25 > sind, ist die Suchspeicherstelle innerhalb des Tag-2-Puffers 60 für diese Bits < EA20:25 > für die Zwecke der Datenintegritätssuche bekannt. Allerdings können virtuelle Adresssynonyme in bezug auf die effektiven Adress-Bits < EA18:19 > existieren. Somit werden alle Synonyme der angeforderten Speicherzeile in dem Tag-2- Puffer 60 durch Inkrernentieren des Werts der effektiven Adress-Bits < EA1B:19 > nach jedem Datenintegritätssuchzyklus, beginnend mit dem EA18:19-Wert, der mit der Move-In- Anforderung geliefert wird, überprüft. Das Suchergebnis, das zum Abschluß eines jeden Datenintegritätssuchzyklus für jede der durchsuchten Speicherstellen innerhalb des Tag-2-Puffers 60 zurückgegeben wird, ist in Tabelle VII zusammengefaßt. Während eines jeden Tag-2-Suchzyklus wird die Systemadresse < SA3:19 > mit der eines jeden Tag-2-Adress-Tags, auf das zugegriffen wird, verglichen. Eine Übereinstimmung tritt immer dann auf, wenn die zwei Systemadressen gleich sind. Falls zwei übereinstimmende Speicherzeilen gefunden werden, die weiterhin die Bedingungen und Regeln für die Existenz eines Zeilenpaars erfüllen, nimmt der Systemcontroller 20 an, daß die Speicherzeilen in der Tat Elemente eines Zeilenpaars sind. TABELLE VII DI Suchergebnis DI Übereinstimmungs-Ergebnisfelder #Bits Impliziert übereinstimmende Zeilen gefunden Element eines Zeilenpaars Explizit SU-Identifizierer IF/OP-Assoziativitä Potentielle Zeilenpaar-Erzeugg MI * nur bei OP Tag 2 Übereinstimmung verwendet
  • Mit jeder Datenintegritätssuchübereinstimmung in dem Tag-2- Puffer 60 ist der Systemcontroller 20 in der Lage, die eindeutige Speicherstelle der übereinstimmenden Speicherzeile in jedem der getrennten Caches 46 der CPUs 12, 12' zu identifizieren. Im allgemeinen iniziiert der Systemcontroller 20 ein Datenintegritäts-Move-Out (DIMO) in bezug auf jedes übereinstimmende Zeilenpaar, das als Konsequenz der Datenintegritätssuche gefunden worden ist. Das heißt, für jede Kopie der angeforderten Move-In-Speicherzeile, die während der Tag-2- Puffersuche gefunden wird, plaziert der Systemcontroller 20 selbst eine Datenintegritäts-Move-Out-Rückanforderung an die Speichereinheit 18, die die gefundene Speicherzeilenkopie enthält. Tabelle VIII faßt die Information zusammen, die einer Speichereinheit 18 als Teil einer Datenintegritäts-Move- Out-Anforderung zur Verfügung gestellt wird. TABELLE VIII DI MO Anforderung #Bits DIMO-Op-Code IF/OP-Speicherzeile lang/kurz System-Adressee < SA3:19 > Assoziativität Tag-Index < EA17:25 > IF/OP-Zeilenpaar IF/OP-Paarassoziativität EA17 des OP-Paars + Teil des Op-Code * nur EA18:25, falls eine IF-Zeilenanforderung ** nur für die IF-Zeilenanforderung verwendet
  • Die Information, die als Teil der Datenintegritäts-Move-Out- Anforderung zur Verfügung gestellt wird, ist im wesentlichen die, die für die Speichereinheit 18, welche die Anforderung empfängt, notwendig ist, um eine einzelne Speicherzeile innerhalb ihres getrennten Caches 46 zu identifizieren. Der Datenintegritäts-Move-Out-Anforderungs-Op-Code zeigt für den Cachecontroller 50 an, ob die Move-Out-Speicherzeile in dem Befehls- oder Operandenpuffer ist und ob sie als Teil eines Zeilenpaars zu behandeln ist. Normalerweise spezifiziert der Op-Code, ob ein langes Move-Out in bezug auf eine Operandenspeicherzeile durchzuführen ist, falls sie als privat gehalten ist. Anderenfalls werden kurze Move-Outs spezifiziert. Der Typ des Datenintegritätsoperanden-Move-Outs, der tatsächlich durchgeführt wird, wird durch den Cachecontroller 50 basierend auf der Tatsache festgelegt, ob die identifizierte Speicherzeile modifiziert worden ist, wie von einem Zugriff auf den entsprechenden Tag-1-Pufferadressen-Tag bestimmt wird. Das heißt, daß ein langer Move-Out durch den Systemcontroller 20 für eine private Operandenspeicherzeile angefordert wird. Ein langer Move-Out wird durchgeführt, falls die Speicherzeile modifiziert worden ist. Umgekehrt gibt, falls ein langer Move-Out einer unmodifizierten Operandenspeicherzeile angefordert wird, der Cachecontroller 50 ein Abruchsignal für einen langen Move-Out an den Systemcontroller 20 und führt einen kurzen Move-Out durch. In jedem Fall wird auf den Adress-Tag der Speicherzeile, die durch die Datenintegritäts- Move-Out-Anforderung identifiziert ist, zugegriffen und er wird als ungültig (langer Move-Out) oder öffentlich (kurzer Move-Out) markiert. Falls der Datenintegritäts-Move-Out-Op- Code anzeigt, daß die Move-Out-Speicherzeile ein Mitglied eines Zeilenpaars ist, wird das Zeilenpaarbegleiterelement gleichzeitig ausgegeben. Ob der Move-Out des Zeilenpaarbegleiterelements lang oder kurz ist, wird durch den Systemcontroller 20, wenn durch den Cachecontroller 50 qualifiziert, bestimmt. Abhängig von dem Typ des Move-Outs, der tatsächlich an dem Zeilenpaarbegleiterelement durchgeführt wird, wird auf dessen Tag-1-Adress-Tag zugegriffen und es wird entweder als öffentlich und ungültig markiert. Unabhängig werden das Zeilenpaar-Bit beider Adress-Tags des Zeilenpaars im Tag-1- Puffer 48 zurückgesetzt.
  • Gemäß der vorliegenden Erfindung gibt es eine Ausnahme bei der Durchführung der Datenintegritäts-Move-Outs. Bei der Durchführung der Datenintegritätssuche des Tag-2-Puffers 60 bestimmt der Systemcontroller 20, ob ein geeignetes Zeilenpaar auf den Move-In der angeforderten Speicherzeile hin erzeugt werden kann. Das heißt, daß, falls die Datenintegritätssuche des Tag-2-Puffers 60 eine übereinstimmende Speicherzeile findet, die in dem komplementären Befehls- oder Operandenpuffer 52, 54 der ursprünglich die Move-In- Speicherzeile anfordernde CPU 12, 12' gehalten wird, der Systemcontroller 20 das Potential zum Erzeugen eines Zeilenpaars durch das Move-In der angeforderten Speicherzeile erkennt. Der Systemcontroller 20 wird deshalb keinen Datenintegritäts-Move-Out in bezug auf diese potentielle Zeilenpaarspeicherzeile durchführen. Stattdessen wird der Systemcontroller 20 eine Handlung verschieben, bis auf das Move-In- Speicherzeilenadreß-Tag in dem Tag-1-Puffer 48 zugegriffen wird. Zu dieser Zeit wird der Systemcontroller 20 den Adress- Tag des vorher existierenden Zeilenpaarelements aktualisieren, um die nötige Information zur Verfügung zu stellen&sub1; so daß angezeigt wird, daß die vorher existierende und die Move- In-Zeile, die in dem Befehls- und Operandenspeicher 52, 54 nun vorhanden sind, gemeinsame Elemente eines Zeilenpaars sind.
  • Nachdem alle Datenintegritäts-Move-Outs abgeschlossen worden sind, liefert der Systemcontroller 20 die angeforderte Move- In-Zeile an die Speichereinheit 18, die ursprünglich die Move-In-Anforderung an den Systemcontroller 20 gestellt hat. Die der Speichereinheit 18 durch den Systemcontroller 20 zur Verfügung gestellte Information zum Inizueren des tatsächlichen Move-In der angeforderten Speicherzeile ist in Tabelle IX zusammengefaßt. TABELLE IX MI-Zeilen Anforderung #Bits Move-In-Op-Code System-Adresse < SA3:19 > IF/OP-Speicherzeile Assoziativität Öffentlich/Privat Tag-Index Erzeuge IF/OP-Zeilenpaar Zeilenpaar-Assoziativität OP-Paar EA17 * nur 8 Bits < EA1B:19 > , falls eine IF-MI ** nur für IF-MI verwendet
  • Da es wahrscheinlich ist, daß die Speichereinheit 18 in andere die Speichereinheit betreffende Operationen involviert ist, während sie die Rückgabe ihrer angeforderten Move-In- Zeile erwartet, wiederholt der Systemcontroller im wesentlichen die ursprüngliche Move-In-Zeilenanforderung, um die nötige Information für die Speichereinheit 18 zu schaffen, um eindeutig die Speicherzeile, die eingebracht wird, wo sie in dern getrennten Cache 46 gespeichert werden soll und ob und wo ein Zeilenpaar erzeugt werden soll, zu identifizieren. Zur selben Zeit gibt der Systemcontroller seine Version der Move- In-Zeilenanforderung aus, die Hauptspeichereinheit 22 beginnt typischerweise&sub1; die angeforderte Move-In-Speicherzeile über die Schalteinheit 24 und die geeignete der CPU-Hauptspeicherdatenleitungen 34, 36, wie sie durch den Systemcontroller 20 über Steuerleitungen 32 ausgewählt werden, zur Verfügung zu stellen. Demgemäß beginnt die Speichereinheit 18, auf Empfang der Systemcontroller-Move-In-Zeilenanforderung, sofort das Annehmen der Move-In-Speicherzeilen. In der bevorzugten Ausführungsform der vorliegenden Erfindung wird die Speicherzeile in vier Zyklen von jeweils 16 Byte übertragen. Während des vierten Move-In-Datentransferzyklus werden die Move-In- und vorher existierende Zeilenpaarelementadreß-Tags geschrieben bzw. aktualisiert.
  • Bezug nehmend auf Fig. 2 werden nun die Datenpfade und Hauptelemente des getrennten Cache 46 gezeigt. Eine Speicherzeile, die für den Operandenpuffer 70 bestimmt ist, wird von dem CPU-Speicherzeilendatenbus 34 auf einen internen Speicherzeileneingabebus 90 als einem der zwei Eingänge zu einem Selektor 80 empfangen. Ein zweiter Eingang zu dem Selektor 80 kommt von der Ausführungseinheit 16 über den CPU-internen Operandenbus 40 und den Operandenrückgabebus 94. Auf Empfangen einer Systemcontroller-Speicherzeilen-Move-In-Anforderung hin liefert der Cachecontroller 50 weiter die IF/OP-Auswahl, den Tag-Index und die Speicherzeilenassoziativität der Move- In-Anforderung an den Befehls- und Operandenpuffer 70, 72, um einen einzelnen Speicherzeilenbestimmungsspeicherplatz auszuwählen. Das heißt, daß falls die durch die Move-In- Anforderung gemachte IF/OP-Auswahl spezifiziert, daß die Speicherzeile, die auf dem internen Speicherzeileneingabebus 90 geliefert wird&sub1; für den Operandenpuffer 70 bestimmt ist, der Cachecontroller 50 den Selektor 80 so konfiguriert, daß die Speicherzeilendaten, die auf dem Speicherzeileneingabebus 90 vorhanden sind, an den Operandenpuffer 70 über den Selektorausgangsbus 98 geführt werden. Für eine für den Befehlspuffer bestimmte Speicherzeile konfiguriert der Cachecontroller stattdessen einen Selektor 82, so daß die Speicherzeile an den Befehlsspeicher 72 über den Selektorausgangsdatenbus 112 zur Speicherung in durch den Tag-Index und die Assoziativität bestimmten Speicherstelle geführt wird.
  • Während des vierten und letzten Speicherzeilentransferzyklus des Move-Ins, konfiguriert der Cachecontroller weiter einen oder beide der Tag-1-Selektoren 84, 86, um die Befehls- und Operandenadreß-Tags zu aktualisieren. Die notwendige Tag-1- Aktualisierungsinformation wird durch den Systemcontroller als Teil der Systemcontroller-Move-In-Anforderung über die Steuerleitungen 110 (einer Teilmenge der Systemcontrollersteuerleitungen 26) zur Verfügung gestellt. Insbesondere basiert die Wahl der Konfiguration beider Selektoren 84 für den Adress-Tag-Zugriff auf dem Zeilenpaarerzeugungs-Bit der Systerncontroller-Move-In-Anforderung. Die Systemadresse, die öffenliche/private, die Tag-Gültigkeits- und die auf das Zeilenpaar bezogene Tag-Aktualisierungsinformation wird von dem Systemcontroller 20 durch die Selektoren 84, 86 für die entsprechenden Befehle und Operanden-Tag-1-Puffer 74, 76 empfangen. Die Speicherstelle der Adress-Tags, die aktualisiert werden sollen, wird durch den Cachecontroller 50 von der von der Systemcontroller-20-Move-In-Anforderung zur Verfügung gestellten Information erhalten und auf die Auswahl einer Speicherzeilenspeicherstelle in dem Befehls- und Operandenpuffer 70, 72 angewendet. Die somit geschriebenen Adress-Tags, falls für ein Zeilenpaar, sind weitgehend identisch, obwohl sie sich darin unterscheiden, daß sie mit komplementärer Information geschrieben sind, welche die Speicherstelle ihrer Paarelernentspeicherstellen in dem Befehls- oder Operandenpuffer 70, 72 identifiziert.
  • Der getrennte Cache 46 unterstützt das Lesen partieller Speicherzeilen (Doppeiwort) von dem Befehlspuffer 72 als Antwort auf eine Befehlsabrufanforderung durch die Befehlseinheit 14. Ähnlich werden partielle Speicherzeilen in oder von dem Operandenpuffer 70 entweder als Teil eines Speicherzeilen-Move- Outs oder als Transfer von Operanden an die Ausführungseinheit 16 übertragen. Für eine Befehlsabruf wird der angeforderte Befehl aus der partiellen Befehlsspeicherzeile, wie sie von dem Befehlspuffer 72 erhalten wird, extrahiert, ausgerichtet und dann der Ausführungseinheit 14 über den CPU- internen Befehlsbus 38 zur Verfügung gestellt. Für einen Speicherzeilen-Move-Out wirkt der Operandenpuffer 70 als Quelle der vier 16-Byte-Datentransfers, die in den vier Datentransferzyklen auftreten. Der Cachecontroller 50 überträgt effektiv die Viertelspeicherzeilensegmente auf den CPU- Speicherzeilendatenbus 34 mittels des Operandenpufferausgabedatenbusses 100. Umgekehrt werden, wo Operanden von dem Operandenpuffer 70 an die Ausführungseinheit 16 auszulesen sind, Doppelwortoperanden auf den CPU-internen Datenbus 40 über den Operandenausgabedatenbus 96 übertragen.
  • Mit der Rückkehr der Operanden von der Ausführungseinheit 16 führt der Cachecontroller eine Aktualisierungsoperation an dern Adress-Tag, die den zu dem Operandenpuffer 70 zurückgekehrten Operandendaten entspricht, durch. Das heißt, der Selektor 84 wird durch den Cachecontroller so konf iguriert, daß die Adress-Tag-Aktualisierungsinformation, die von dem Cachecontroller zur Verfügung gestellt wird, über Cachecontroller- Tag-Leitungen 102 auf einen Eingang 106 des Selektors 84 zur selben Zeit, zu der die Befehlseinheit Operandendaten zu dem Operandenpuffer 70 zurückkehren, geführt wird. Das Operandenspeicherzeilen-Tag-1-Adress-Tag wird im allgemeinen einfach aktualisiert, um die Speicherzeilen, die den Operanden empfangen, als modifiziert zu markieren.
  • Gemäß der vorliegenden Erfindung können Operanden, die in oder durch die Ausführungseinheit 16 erzeugt bzw. modifiziert werden, auch in den Befehlspuffer 72 zur selben Zeit, zu der sie in den Operandenpuffer 70 geschrieben werden, zurückgeschrieben werden. Normalerweise werden nur vollständige Speicherzeilen in den Befehlspuffer 72 als Antwort auf eine Befehlsspeicherzeilen-Move-In-Anforderung, die von dem Systemcontroller 20 ausgegeben wird, geschrieben. Wo allerdings ein Zeilenpaar in dem getrennten Cache 46 existiert und das Operandenpufferelement mit den Operandendaten von der Ausführungseinheit 16 hineingeschrieben wird, sorgt die vorliegende Erfindung für das residente Befehlspufferelement des Zeilenpaars, das äquivalent modifiziert werden soll. Demgemäß konfiguriert der Cachecontroller 50 den Selektor 82, um die modifizierten Operandendaten in ein Speicherzeilenpaarelement, das in dem Befehlspuffer 72 vorhanden ist, gleichzeitig mit dern Schreiben derselben Operandendaten in das entsprechende Speicherzeilenpaarelement in dem Operandenpuffer 70 zu schreiben. Wie vorher, aktualisiert der Cachecontroller 50 das entsprechende Speicherzeilenadreß-Tag, das in dem Operanden-Tag-1-Puffer 74 vorhanden ist, um den modifizierten Status der Operandenspeicherzeile anzuzeigen. Auf das Adress-Tag einer Befehlsspeicherzeile eines Zeilenpaars braucht nicht entsprechend zugegriffen werden, da das Tag-1-modifizierte Daten-Bit für eine Befehlsspeicherzeile nicht definiert ist und keine andere Adress-Tag-Information aktualisiert werden muß.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung sind die Operandendatenzeilen 94'von beschränkter Datenbreite, so daß nur Operanden, die weniger als 8 Byte breit sind oder ausgerichtete 8 Byte Halbworte von der Ausführungseinheit 16 in eine in dem Befehlspuffer 72 gespeicherten Speicherzeile geschrieben werden können. Ausführungseinheitoperanden bis zu 32 Byte, ausgerichtet oder unausgerichtet, können in eine Speicherzeile in den Operandenpuffer 70 geschrieben werden. Wo ein durch die Ausführungseinheit 16 zurückgegebener Operand nicht in den Befehlspuffer 72 über die Datenbuszeilen 94' geschrieben werden kann, erklärt der Cachecontroller 50 stattdessen das Befehlspufferzeilenpaarelement während des anderenfalls normalen Aktualisierungszugriffs des Befehls-Tag-1-Puffers 76 für ungültig. Die Aktualisierungs- Operation, die an dem Adress-Tag des Operanden-Tag-1-Puffers 74 zur Änderung des Zustands des modifizierten Bits durchgeführt wird, wird weiter das Operanden-IF/OP-Zeilenpaarzustands-Bit zurücksetzen, falls das Befehlszeilenpaarelement ungültig ist. Somit wird der Zeilenpaarzustandsstatus effektiv zerstört und das Befehlszeilenpaarelement ungültig, obwohl die Operandenspeicherzeile weiter gültig in dem Operandenpuffer 70 existiert.
  • Eine Operandenspeicherungültigmachung des Befehls-Tag-1- Adress-Tags ohne Mitteilung an den Systemcontroller 20 schafft allerdings das Potential, daß eine Linienpaarungenauigkeit nachfolgend zwischen dem Befehls- und den Operanden- Tag-1-Adress-Tag auftritt. Eine solche Bedingung ist als ein Geisterlinienpaarzustand definiert. Das hießt, das Operandenadreß-Tag wird auf ein nicht existierendes oder Geisterbefehlsadreß-Tag als ein gemeinsames Element eines Linienpaars Bezug nehmen.
  • Dieser Geisterlinienpaarzustand kann auftreten, wenn der Systemcontroller 20 an dem Operandenlinienpaarelement nach einer Operandenspeicherungültigmachung des Linienpaarbegleitspeichers, allerdings ohne eine dazwischenliegende Operanden-Tag-1-Adress-Tag-Ungültigmachung oder ein Move-In in den Befehlsspeicher 72 beim Befehlslinienpaar-Tag-Index und der Assoziativität, ein Move-In durchführt. Der Befehlsadreß- Tag-Ungültigmachung folgend muß eine andere CPU 12' die Operandenspeicherzeile nur mit öffentlichen Privilegien anfordern und der Systemcontroller 20 muß nur das Operanden-Tag-1- Adress-Tag aktualisieren, da es nun öffentlich gehalten ist. Die Operandenspeicherzeile muß dann durch die CPU 12, wiederum mit privaten Privilegien, zurückgefordert werden. Bei der Durchführung des erforderlichen Move-Ins, basierend auf dem Inhalt des Tag-2-Puffers 60, führt der Systemcontroller 20 eine kurze Move-In-Aktualisierung des Tag-1-Adress-Tags sowohl des noch ungültigen Befehls- als auch des Operandenspeicherpaars durch, um anzuzeigen, daß sie gemeinsame Elemente eines Zeilenpaars sind. Es wird keine Überprüfung durchgeführt, ob das Befehls-Tag-1-Adress-Tag als ungültig markiert ist. Allerdings führt dieser scheinbare Fehler in der Verwaltung der Zeilenpaarzustände nicht zu irgendeiner Degradierung des Betriebs des getrennten Caches 46. Der Befehls- und Operanden-Tag-1-Puffer 74, 76 bleibt genau in bezug auf die Speicherzeilen, die in den entsprechenden Befehls- und Operandenspeicherzeilenpuffern 70, 72 enthalten sind. Das heißt, Anforderungen von Befehlen oder Operanden durch die Befehlsund Ausführungseinheit 14, 16 werden durch die Speichereinheit 18 basierend auf den entsprechenden Cachecontroller- Suchen des Befehls- und Operanden-Tag-1-Puffers 74, 76 behandelt. Solche Cachecontroller-Suchen hängen nicht von dem Tag- 1-Adress-Tag-Validisierungs-Bit ab und sind deshalb unabhängig von der Präsenz eines Geisterzeilenzustands.
  • Der Geisterzustand wird sogar toleriert, wo auf die verbleibenden gültigen Operandenspeicherzeilen des Geisterzeilenpaars wiederum zur Speicherung eines durch die Ausführungseinheit modifizierten Operanden zugegriffen wird. Der modifizierte Operand wird, wie vorher, gleichzeitig in das Speicherzeilenelement in dem Befehlspuffer 72 geschrieben, obwohl er als Geist existiert. Dieses blinde Aktualisieren des Befehls-Tag-1-Puffers ist eine Konsequenz des Zeilenpaar markierten Adress-Tags, das in dem Operanden-Tag-1-Puffer 74 vorhanden ist, das die Präsenz des Befehlsspeicherzeilenelements des Paars anzeigt. Der Cachecontroller 50 aktualisiert das Adress-Tag der ungültigen Speicherzeile&sub1; die in dem Befehlspuffer 72 vorhanden ist, wo die Speicherung der Operandendaten in den Befehlspuffer 72 möglich ist, nicht. Wo die Operandenbefehlspufferspeicherung aufgrund der Befehlspufferzugriffslimitierung des Datenbusses 94' nicht möglich ist, invalidisiert der nachfolgende Zugriff des Befehls-Tag-1- Puffers 96 lediglich das bereits ungültige Befehlspufferadreß-Tag.
  • Hauptsächlich ist das Geisterelement eines Geisterzeilenpaars immer ungültig. Falls eine Befehlsspeicherzeilen-Move-In- Anforderung in bezug auf dieselbe Tag-Index-Befehlsspeicherstelle, wie der Geist, abgeschlossen ist, wird dort eine gültige Zeile existieren. Die eingebrachte Speicherzeile kann entweder dieselbe Speicherzeile wie die Geistspeicherzeile oder eine andere Speicherzeile mit demselben Tag-Index sein. Falls die Speicherzeile dieselbe wie der Geist ist, dann existiert das Linienpaar gültig. Nachfolgendes Schreiben von Operanden in ein Befehlszeilenpaarelement ist ordnungsgemäß. Umgekehrt, falls eine unterschiedliche Speicherzeile eingebracht wird, dann muß das Zeilenpaar-Bit des Operanden-Tags während des Swap-Move-Out-Prozesses, der als Antwort auf Befehls-Move-In-Anforderung aufgerufen wird, korrigiert werden. Das heißt, daß die ursprüngliche Move-In-Anforderung die Geistbefehlsspeicherzeile zum Swap-Move-Out, unabhängig davon, ob die Zeile ungültig ist, identifiziert. Der Systemcontroller 20 antwortet durch Anforderung des Befehls-Move-Outs, einschließlich der Identifikation der Geistspeicherzeile als ein Element eines Zeilenpaars. Wie vorher, invalidisiert der Cachecontroller einfach die Befehlsspeicherzeile durch eine Aktualisierung ihres Befehls-Tag-1-Adress-Tags. Ebenso wird, basierend auf der Zeilenpaaridentifikation der Swap-Move-Out- Zeile, insbesondere auf das Operanden-Tag-1-Adress-Tag zugegriffen, um das Operandenadreß-Tag-Zeilenpaar-Bit zurückzusetzen.
  • Somit ist eine Computersystemarchitektur beschrieben worden, die mehrere CPUs mit getrenntem Befehls- und Operanden-Caches umf aßt und die gleichzeitige Existenz von anderenfalls identischen Speicherzeilen sowohl in dem Befehls- als auch den Operanden-Cache einer einzelnen CPU erlaubt, die durch die Implementierung eines Zeilenpaarzustands für jedes identische Paar von Speicherzeilen verwaltet wird.

Claims (11)

1. Vorrichtung (18) zum Einsatz in einer Datenverarbeitungsanlage, die eine Hauptspeichereinheit (22) enthält, die Datenzeilen speichert, wobei die Vorrichtung die Übertragung von Datenzeilen verwaltet, die von einer Eefehlsein heit (14) und einer Ausführungseinheit (16) einer zentralen Verarbeitungseinheit (CPU) (12) genutzt werden, wobei die CPU des weiteren umfaßt:
einen Befehls-Cachespeicher (72), der Befehlsdatenzeilen speichert, die von der Befehlseinheit (16) genutzt werden; und
und einen Operanden-Cachespeicher (70), der Operandendatenzeilen speichert, die durch die Ausführungseinheit (16) genutzt werden;
wobei die Vorrichtung gekennzeichnet ist durch:
einen Operandenmarkierungs-Zwischenspeicher (74), der Operandenmarkierungs-Zwischenspeicherstellen schafft, die jeweils Adressen- und Steuerdaten für eine entsprechende der Operandendatenz eilen enthalten;
wobei die Operandenmarkierungs-zwischenspeicherstellen ein Zeilenpaar-Statusfeld enthalten, das anzeigt, ob eine gültige Kopie der entsprechenden Operandendatenzeile in einer entsprechenden der Befehlsdatenzeilen enthalten ist; und
eine Cachespeicher-Steuerung (504, die während der Ausführung eines CPU-Speicherbefehls an eine bestimmte der Operandendatenzeilen zur Prüfung ihrer entsprechenden Operandenmarkierungs-Zwischenspeicherstelle auf die Ausführungseinheit anspricht und ihr entsprechendes Zeilenpaar-Statusfeld prüft, um festzustellen, ob eine gültige Kopie der bestimmten Operandendatenzeile in dem Befehls- Cachespeicher gespeichert ist, und, falls dies der Fall ist, bewirkt, daß die gültige Kopie aktualisiert wird,
wobei das Zeilenpaar-Statusfeld jeder Operandenmarkierungs-Zwischenspeicherstelle des weiteren ein Assoziativitäts-/Adressenbit enthält, das die Adresse seiner entsprechenden Befehlszeile anzeigt, wie sie in dem Befehls-Cachespeicher (72) gespeichert ist.
2. Vorrichtung nach Anspruch 1, wobei:
jedes Operandenmarkierungs-Zwischenspeicherstellenzeilenpaar-Statusfeld ein Befehls-Cachespeicher- Assoziativitätsfeld enthält.
3. Vorrichtung nach Anspruch 1, wobei:
jedes Operandenmarkierungs-Zwischenspeicherstellen- Zeilenpaar-Statusfeld ein Befehls-Cachespeicher- Adressenfeld enthält.
4. Vorrichtung nach Anspruch 1, die des weiteren umfaßt:
einen Befehlsmarkierungs-Zwischenspeicher (76), der Befehlsmarkierungs-Zwischenspeicherstellen schafft, die jeweils Zeilenadressen- und Steuerdaten für eine entsprechende der Befehlsdatenzeilen enthalten; und
- die Befehlsmarkierungs-Zwischenspeicherstellen jeweils ein Zeilenpaar-Statusfeld enthalten, das anzeigt, ob eine gültige Kopie der entsprechenden Befehlsdatenzeile in einer entsprechenden der Operandendatenzeilen enthalten ist.
5. Vorrichtung nach Anspruch 4, wobei:
der Befehls-Cachespeicher (72) jede der Befehlsdatenzeilen an einer eines Paars von Speicherstellen speichert;
der Operanden-cachespeicher (70) jede der Operandendatenzeilen an einer eines Paars von Speicherstellen speichert;
das Zeilenpaar-Statusfeld jeder Befehlsmarkierungs- Zwischenspeicherstelle ein Paar Assoziativitätsbits enthält, das anzeigt, an welcher Stelle in dem Paar von Speicherstellen des Operanden-Cachespeichers (70) jede der Operandendatenzeilen gespeichert ist; und
das Zeilenpaar-Statusfeld jeder Operandenmarkierungs- Zwischenspeicherstelle ein Paar Assoziativitätsbits enthält, die anzeigen, an welcher Stelle in dem Paar Speicherstellen des Befehls-Cachespeichers (72) jede entsprechende der Befehlsdatenzeilen gespeichert ist.
6. Vorrichtung nach Anspruch 41 wobei:
der Operanden-Cachespeicher (70) zwei Adressenstellen zum Speichern einer der Operandendatenzeilen für jede der Adressenstellen zum Speichern einer entsprechenden der Befehlsdatenzeilen in dem Befehls-Cachespeicher (72) enthält; und
das Zeilenpaar-Statusfeld jeder Befehlmarkierungs- Zwischenspeicherstelle ein Erweiterungsadressenbit (EA< 17 > ) enthält, das anzeigt, an welcher Stelle von den zwei Adressenstellen des Operanden-Cachespeichers (70) jede entsprechende der Operandendatenzeilen gespeichert ist.
7. Vorrichtung nach Anspruch 4, wobei:
jedes Befehlsmarkierungs-Zwischenspeicherstellen-Zeilenpaar-Statusfeld ein EA< 17 > -Adressenbit enthält.
8. Vorrichtung nach Anspruch 4, wobei:
die Cachespeicher-Steuerung (50) auf eine Anforderung, eine Befehlsdatenzeile ungültig zu machen oder zu entfernen, anspricht und das entsprechende Befehlmarkierungs- Zwischenspeicher-Operandenzeilenpaar-Statusfeld prüft, um festzustellen, ob eine gültige Kopie der Befehlsdatenzeile in dem Operanden-cachespeicher vorhanden ist, und wenn dies der Fall ist, das zugehörige Operandenmarkierungs-zwischenspeicher-Befehlszeilenpaar-Statusfeld ungültig macht,
die cachespeicher-Steuereinrichtung (50) auf eine Anfor - derung, eine Operandendatenzeile ungültig zu machen oder zu entfernen, anspricht und das entsprechende Operandenrnarkierungs-Zwischenspeicher-Befehlszeilenpaar-Statusfeld prüft, um festzustellen, ob eine gültige Kopie der Operandendatenzeile in dem Befehls-Cachespeicher vorhanden ist, und, falls dies der Fall ist das dazugehörige Befehlsmarkierungs-Zwischenspeicher-Operandenzeilenpaar- Statusfeld ungültig macht.
9. Vorrichtung nach Anspruch 4, die des weiteren umfaßt:
eine Systemsteuerung (20), die ein Markierungs2-Register (60) enthält, um festzustellen, welche Datenzeilen in dem Befehls-Cachespeicher verweilen, und
die Systemsteuerung (20) auch auf die Cachespeicher- Steuerung (50) anspricht und eine angeforderte Datenzeile für den Befehls-Cachespeicher aufruft und das Markierungs2-Register durchsucht, um festzustellen, ob die angeforderte Datenzeile bereits in dem Operanden-Cachespeicher verweilt, und falls dies der Fall ist, einen neuen Operandenzeilenpaar-Status zu der Cachespeicher-Steuerung zurückleitet, und
wobei die Cachespeicher-Steuerung (50) auf den neuen Operandenzeilenpaar-Status der Systemsteuerung anspricht und eines der Operandenmarkierungs- Zwischenspeicherstellen- Zeilenpaar-Statusfelder entsprechend der angeforderten Datenzeile setzt und das entsprechende Befehlmarkierungs- Zwischenspeicherstellen-Zeilenpaar-Statusfeld entsprechend der passenden Befehls-Cachespeicher-Datenzeile setzt, um gültigen leilenpaar-Status anzuzeigen.
10. Vorrichtung nach Anspruch 91 wobei: die Systemsteuerung mit mehreren CPU's verbunden ist.
11. Vorrichtung nach Anspruch 4, die des weiteren umfaßt:
eine Systemsteuerung (20), die ein Markierungs2-Register (60) enthält, um festzustellen, welche Datenzeilen in dem Operanden-Cachespeicher verweilen, und
die Systemsteuerung (20) auch auf die Cachespeicher- Steuerung (50) anspricht und eine angeforderte Datenzeile für den Operanden-Cachespeicher aufruft und das Markierungs2-Register durchsucht, um festzustellen, ob die angeforderte Datenzeile bereits in dem Befehls-Cachespeicher verweilt, und falls dies der Fall ist, einen neuen Befehlszeilenpaar-Status zu der Cachespeicher-Steuerung zurückleitet, und
wobei die Cachespeicher-Steuerung (50) auf den neuen Befehlszeilenpaar-Status der systemsteuerung anspricht, und eines der Befehlsmarkierungs-Zwischenspeicherstellen- Zeilenpaar-Statusfelder entsprechend der angeforderten Datenzeile setzt, und das entsprechende Operandenmarkierungs-zwischenspeicherstellen-Zeilenpaar-Statusfeld entsprechend der passenden Operanden-Cachespeicher-Datenzeile setzt, um gültigen Zeilenpaar-Status anzuzeigen.
DE3751642T 1986-10-17 1987-10-05 Verwaltung von getrennten Befehls- und Operanden-Cachespeichern Expired - Fee Related DE3751642T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US92070786A 1986-10-17 1986-10-17

Publications (2)

Publication Number Publication Date
DE3751642D1 DE3751642D1 (de) 1996-02-01
DE3751642T2 true DE3751642T2 (de) 1996-09-05

Family

ID=25444252

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3751642T Expired - Fee Related DE3751642T2 (de) 1986-10-17 1987-10-05 Verwaltung von getrennten Befehls- und Operanden-Cachespeichern

Country Status (5)

Country Link
EP (1) EP0271187B1 (de)
JP (1) JP2685455B2 (de)
AU (1) AU600982B2 (de)
CA (1) CA1290861C (de)
DE (1) DE3751642T2 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1299767C (en) * 1987-02-18 1992-04-28 Toshikatsu Mori Cache memory control system
US5548742A (en) * 1994-08-11 1996-08-20 Intel Corporation Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory
EP0945794B1 (de) * 1998-03-27 2003-10-15 Motorola, Inc. Verfahren zum Speichern von Datenstrukturen in einem Speicher
GB2426082B (en) * 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing
US9405690B2 (en) 2013-08-07 2016-08-02 Oracle International Corporation Method for storing modified instruction data in a shared cache

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3735360A (en) * 1971-08-25 1973-05-22 Ibm High speed buffer operation in a multi-processing system
JPS5587362A (en) * 1978-12-22 1980-07-02 Fujitsu Ltd Buffer memory control system
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
JPS6063650A (ja) * 1983-09-19 1985-04-12 Fujitsu Ltd バッファメモリ一致制御方式
JPS60123936A (ja) * 1983-12-07 1985-07-02 Fujitsu Ltd バッフア記憶制御方式
EP0156307A3 (de) * 1984-03-30 1988-04-20 Four-Phase Systems Inc. Pipeline-Prozessor mit Doppelcachespeichern
JPS6149250A (ja) * 1984-08-17 1986-03-11 Fujitsu Ltd バツフア記憶制御方式
US4624908A (en) * 1985-04-15 1986-11-25 J. T. Baker Chemical Company Deep ultra-violet lithographic resist composition and process of using

Also Published As

Publication number Publication date
JPS63177238A (ja) 1988-07-21
AU7984087A (en) 1988-04-21
EP0271187A2 (de) 1988-06-15
EP0271187B1 (de) 1995-12-20
CA1290861C (en) 1991-10-15
EP0271187A3 (en) 1990-04-11
JP2685455B2 (ja) 1997-12-03
AU600982B2 (en) 1990-08-30
DE3751642D1 (de) 1996-02-01

Similar Documents

Publication Publication Date Title
DE68926059T2 (de) Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen
DE68922326T2 (de) Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher.
DE68917326T2 (de) Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.
US5095424A (en) Computer system architecture implementing split instruction and operand cache line-pair-state management
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE68917325T2 (de) Verfahren und Vorrichtung zum Schreiben gegenseitiger verriegelter Variablen in einen integrierten Cachespeicher.
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE3586635T2 (de) Vorausholungsanordnung fuer einen schnellpufferspeicher.
DE3486161T2 (de) Datenverarbeitungssystem mit Datenkohärenz.
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE3751426T2 (de) Busschnittstellenschaltung für digitalen Datenprozessor.
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE68926385T2 (de) Methode und Hardware-Ausführung von komplexen Datentransferbefehlen
DE69029173T2 (de) Mikroprozessor
DE69027253T2 (de) Multiprozessor-Cachespeichersystem
DE60211076T2 (de) Datenübertragung zwischen virtuellen Adressen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE68925470T2 (de) Verfahren zum Abrufen von potentiell ungültigen Daten in einem Mehrrechnersystem
DE3854369T2 (de) Zentralprozessoreinheit für digitale datenverarbeitungsanordnung mit cache-speicherverwaltungsvorrichtung.
DE2241257B2 (de) Datenverarbeitende Anlage
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee