DE3688192T2 - Seitenorganisierter cachespeicher mit virtueller adressierung. - Google Patents
Seitenorganisierter cachespeicher mit virtueller adressierung.Info
- Publication number
- DE3688192T2 DE3688192T2 DE86117604T DE3688192T DE3688192T2 DE 3688192 T2 DE3688192 T2 DE 3688192T2 DE 86117604 T DE86117604 T DE 86117604T DE 3688192 T DE3688192 T DE 3688192T DE 3688192 T2 DE3688192 T2 DE 3688192T2
- Authority
- DE
- Germany
- Prior art keywords
- page
- address
- memory
- cache
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 264
- 238000010200 validation analysis Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 14
- 239000003607 modifier Substances 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000001143 conditioned effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 21
- 230000008520 organization Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
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 bezieht sich auf Computersysteme und im besonderen auf ein Cache-System zur Verwendung in solchen Systemen.
- Immer mehr Computersysteme weisen Prozessoren auf, die in der Lage sind, Anweisungen bei immer höheren Geschwindigkeiten im Vergleich zu der Geschwindigkeit eines Hauptspeichersystems hoher Kapazität auszuführen. Um die Anweisungsausführungsgeschwindigkeit zu verbessern verwenden diese Systeme Cachespeicher mit niedriger Kapazität und hoher Geschwindigkeit. Die Cachespeicher werden verwendet, um eine begrenzte Anzahl von Anweisungen und/oder Datenblöcken zu speichern. Bei jeder Speicherleseoperation prüft der Prozessor den Cachespeicher, um zu bestimmen, ob die Information dort gespeichert ist (ein Treffer ist eingetreten). Wenn es eine Trefferbedingung gibt, wird die Information aus dem Cachespeicher ausgelesen werden; anderweitig (eine Fehlbedingung) wird sie vom Hauptspeicher geholt werden.
- Bei solch immer höheren Prozessoranweisungs-Ausführungsgeschwindigkeiten wird die Cache-Trefferrate extrem wichtig in bezug auf sowohl die Prozessor- als auch die Systemleistungsfähigkeit. Das heißt, eine Trefferrate von weniger als 95% kann zu einer wesentlichen Verringerung in der Gesamtsystemleistungsfähigkeit führen. Dies gilt besonders in dem Fall von Vielfachverarbeitungssystemen.
- Normalerweise adressiert der Prozessor den Haupt- und Cachespeicher unter Verwendung einer virtuellen Adresse, die eine relative Speicherstelle festlegt. Die echte oder physische Adresse, die eine tatsächliche Speicherstelle festlegt, wird durch Übersetzen der virtuellen Adresse erhalten. Die virtuelle Adresse weist normalerweise Segment-, Seiten- und Wortadreßbits auf. Die Wortadreßbits werden nicht übersetzt, jedoch werden die Segment- und Seitenadreßbits durch einen Adreß- Übersetzpuffer (ATB) oder eine Speicher-Managementeinheit (MMU) übersetzt.
- Da der Hauptspeicher viel größer als der Cachespeicher ist, gibt es mehrere übliche Abbildungstechniken, die zum effizienten Abbilden von Information vom Hauptspeicher in den Cachespeicher verwendet werden. Eine Anzahl dieser Techniken ist in einem Artikel von C.J. Conti beschrieben mit dem Titel "Concepts for Buffer Storage", veröffentlicht im März 1969, Ausgabe von IEEE Computer Group News. Eine Technik ist die Sektortechnik, in der der Cache- und Hauptspeicher in eine Anzahl von Bereichen oder Seiten aufgeteilt wird, von denen jede aus einer großen Anzahl von Blöcken besteht. Ein Hauptspeichersektor oder eine -seite wird auf einen oder mehrere Sektoren des Cachespeichers blockweise abgebildet. Jeder Block, der sich in dem Cachespeicher befindet, weist eine ihm zugehörige Marke auf zum Bestimmen, wenn der Block in dem Cachespeicher ist. Der Cachespeicher ist in der Lage, nur eine kleine Anzahl von Sektoren zu halten, und jeder Cachespeicher kann zu irgendeiner gegebenen Zeit nur Blöcke von dem gleichen Hauptspeichersektor enthalten. Die Suche in dem in Sektoren organisierten Cache ist vollständig assoziativ darin, daß irgendein Block potentiell in irgendeinem der Cachesektoren gefunden werden kann.
- Während das System nur eine Marke pro Sektor und ein Gültigkeitsbit pro Block erfordert, müssen alle Markierungen aller Blöcke, die in dem Cachespeicher gespeichert sind, abgesucht werden, was zeitaufwendig ist oder zusätzliche Hardware erfordert.
- In einer anderen Technik, jener assoziativer Sätze, werden der Cache- und Hauptspeicher in eine Vielzahl von Sätzen von Blöcken aufgeteilt.
- Ein Hauptspeicherblock kann auf irgendeinen der Cachespeicherblöcke in einem Satz abgebildet sein. Während diese Technik die Menge an Hardware, die von der vollständig assoziativen Technik erfordert wird, reduziert, erfordert sie dennoch eine Marke für jeden gespeicherten Block. Daher ist die Anzahl von Einträgen innerhalb eines Satzes erhöht. Dies wird begleitet von einer faktoriellen Zunahme an Vergleichshardware.
- In einer weiteren Technik, jener des Direktabbildens, kann irgendein Hauptspeicherblock in nur einen Cacheblock plaziert werden. Das heißt, jeder Hauptspeicherblock ist einer bestimmten Cachespeicherstelle vorher zugewiesen. Daher ist ein Suchen schneller und erfordert eine geringe Menge an Hardware. Während diese Anordnung diese Vorteile aufweist, werden ihr mangelnde Flexibilität nachgesagt. Daher ist die Technik assoziativer Sätze unter Verwendung einer begrenzten Anzahl von Einträgen pro Satz verwendet worden.
- Um einen Ausgleich zwischen diesen Extremen bei der Cacheorganisation bereitzustellen, und zwar im Übertragen zu vieler Daten oder im Erfordern einer großen Anzahl von Markierungen, wendet ein System einen Sektorcache mit assoziativen Sätzen an. Dieses System ist in US-PS- 4,493,026 offenbart. Während eine Effektivität über die vollständig assoziative Technik erzielt wird, begrenzt das System dennoch die Anzahl von Einträgen pro Satz und begrenzt die Menge an Datenblöcken, die gespeichert werden können.
- Es ist demgemäß ein Hauptziel dieser Erfindung, eine verbesserte Seiten- oder Sektorcacheeinheit bereitzustellen.
- Es ist ein weiteres Ziel dieser Erfindung, eine Cacheeinheit für eine Verarbeitungseinheit bereitzustellen, die eine geringe Anzahl von Markierungen erfordert, wodurch die Menge an Hardwareschaltungen und Kosten minimiert werden.
- Es ist noch ein weiteres Ziel der vorliegenden Erfindung, eine Cacheeinheit bereitzustellen, die zum Speichern von Anweisungen oder Daten verwendet werden kann und in einem Vielfachverarbeitungssystem einsetzbar ist.
- Es ist noch ein zusätzliches Ziel der vorliegenden Erfindung, eine Cacheeinheit mit schnellem Zugriff bereitzustellen, die in der Lage ist, Daten einer Anzahl von Seiten mit großer Flexibilität zu speichern.
- Die vorgenannten Ziele werden gemäß der vorliegenden Erfindung erreicht durch einen Cachespeicher, der eine Anzahl von inhaltsadressierbaren Speichern (CAMs) und direktadressierbaren Speichern (RAMs) aufweist, die organisiert sind, um assoziatives und direktes Abbilden von Daten oder Anweisungen auf der Basis von Seiten zu kombinieren. Im spezielleren stellt ein Eingangs-CAM in Antwort auf eine Adresse, die durch eine zugehörige Verarbeitungseinheit (CPU) erzeugt ist, eine Cacheadresse bereit, die eine Seitenebenennummer aufweist, die identifiziert, wo alle die erforderlichen Informationen sich in den anderen Speichern befinden, zum Verarbeiten der Anforderung, die sich auf die angegebene Seite bezieht. Diese Organisation erlaubt das effiziente Verarbeiten von entweder virtuellen oder physischen Adressen mit verbesserter Geschwindigkeit und reduzierter Komplexität und die Fähigkeit, sowohl Übereinstimmungs- und Synonymprobleme zu eliminieren.
- Ein Übereinstimmungs- oder Kohärenzproblem kann über ein Multicache- Speichersystem auftreten, wenn Unstimmigkeit in den privaten Cachespeichern und dem Hauptspeicher existiert. Das heißt, der Inhalt des gleichen Hauptspeicherblocks kann potentiell in mehreren Cachespeichern zur gleichen Zeit erscheinen. Wenn keine ausreichenden Schritte unternommen werden, können mehrfache Kopien jenes Blocks, der in den Cachespeichern gespeichert ist, sich voneinander und von dem Hauptspeicher unterscheiden.
- Der Cachespeicher der vorliegenden Erfindung verwendet einen CAM mit physischen Adressen, der gekoppelt ist, um auf die Datenadressen zu antworten, die in den Hauptspeicher durch irgendeine andere Verarbeitungseinheit geschrieben werden. Der CAM arbeitet, um eine Seitenebenennummer zu erzeugen, die von einem der verbleibenden Speicher verwendet werden kann, die Blockadreßinformationen speichern, um den betroffenen Block ungültig zu machen, wenn er in dem Cachespeicher gespeichert ist.
- Wegen der zufallsartigen Beziehung, die zwischen einer virtuellen (logischen) und seiner übersetzten physischen (absoluten) Adresse existiert, können zwei virtuelle Adressen in die gleiche physische Adresse abgebildet werden. Dies führt zu einem Synonymproblem. Der gleiche CAM mit physischen Adressen wird also verwendet, um potentielle Synonymprobleme zu erfassen. Das heißt, der CAM mit physischen Adressen arbeitet, um irgendeinen Vergleich zwischen der neuen physischen Adresse der VMMU und einer vorher gespeicherten gültigen physischen Adresse zu erfassen. Nach einer solchen Erfassung wird die Seitenebenennummer, die durch den CAM mit physischen Adressen bereitgestellt wird, verwendet, um die neue virtuelle Adresse in dem Eingangs-CAM in der angegebenen Ebene zu speichern. Dies eliminiert sowohl die Notwendigkeit, die gleiche Seite erneut zu laden, als auch das Synonymproblem.
- Die Verwendung einer gewöhnlichen Cacheadresse (Seitenebenennummer) zum Zugriff auf alle die erforderlichen Informationen, die eine Seite betreffen, reduziert die Komplexität und verbessert die Gesamtleistungsfähigkeit des Cachespeichers. Die Cacheorganisation erlaubt auch, daß eine Adreßübersetzung sich mit der Abfrage des Eingangs-CAM überlappt. Wie in den verschiedenen Ausführungsbeispielen der vorliegenden Erfindung veranschaulicht, kann diese gleiche Organisation für sowohl Anweisungs- als auch Datencachespeicher verwendet werden.
- Zusätzlich kann der Cachespeicher der vorliegenden Erfindung verwendet werden, um entweder virtuelle oder physische Adressen zu verarbeiten. Das heißt, die gewöhnliche Cacheadresse wird in der gleichen Weise in Antwort auf entweder eine virtuelle oder eine physische Adresse erzeugt werden.
- Die Organisation des Cachespeichers erlaubt die Verwendung von ähnlichen VLSI-Speicherelementen, wobei Kosten weiter reduziert werden und die Betriebsgeschwindigkeit verbessert wird.
- Die neuen Merkmale, die als charakteristisch für die Erfindung sowohl bezüglich ihrer Organisation als auch ihres Betriebsverfahrens sind, werden zusammen mit weiteren Zielen und Vorteilen besser von der folgenden Beschreibung verstanden werden, wenn sie in Zusammenhang mit der begleitenden Zeichnung betrachtet wird. Es wird jedoch ausdrücklich verstanden, daß jede der Figuren nur zum Zwecke der Veranschaulichung und Beschreibung angegeben ist und diese nicht als eine Definition der Grenzen der vorliegenden Erfindung beabsichtigt sind.
- Fig. 1 ist ein Blockdiagramm eines Vielfachverarbeitungssystems, das die Vorrichtung der vorliegenden Erfindung aufweist.
- Fig. 2 und 3 sind jeweils Blockdiagramme von Daten- und Anweisungscachespeichern, die gemäß der vorliegenden Erfindung konstruiert sind.
- Fig. 4a bis 4e sind Diagramme, die die logischen Organisationen der verschiedenen Speicher veranschaulichen, die in den Cachespeichern von Fig. 2 und 3 enthalten sind.
- Fig. 5a bis 5d sind Diagramme, die die Adreßtypen veranschaulichen, die in den Cachespeichern von Fig. 2 und 3 verwendet werden.
- Fig. 6a und 6b sind Flußdiagramme, die zum Beschreiben des Betriebs des Datencachespeichers von Fig. 2 verwendet werden.
- Fig. 7a und 7b sind Flußdiagramme, die zum Beschreiben des Betriebs des Anweisungscachespeichers von Fig. 3 verwendet werden.
- Die Übersetzung des Inhalts der einzelnen Flußdiagramme der Fig. 6 und 7 ist im Anhang A bzw. B beigefügt.
- Fig. 1 zeigt ein Vielfachverarbeitungssystem 10, das eine Vielzahl von Subsystemen 14 bis 32 aufweist, die gemeinsam an einen Systembus 12 gekoppelt sind. Der Systembus weist eine Vielzahl von zentralen Subsystemen 14 bis 16, eine Vielzahl von Speichersubsystemen 20 bis 28 und eine Anzahl von peripheren Eingabe-/Ausgabe-Subsystemen 30 bis 38 auf. Jedes Subsystem weist einen Schnittstellenbereich (nicht gezeigt) auf, der die zugehörige Einheit oder die Einheiten befähigt, Anforderungen in der Form von Daten, Adressen und Befehlen an den Systembus 12 zu übertragen oder von diesem zu empfangen.
- Die Organisation jedes zentralen Subsystems ist die gleiche. Jedes zentrale Subsystem weist eine Pipeline-artig verbundene Zentralverarbeitungseinheit (CPU) auf, wie z. B. 14-2, welche an eine Cacheeinheit, wie z. B. 14-4, koppelt. Für den Zweck der vorliegenden Erfindung kann jede CPU als herkömmlich im Design angesehen werden und unter Verwendung von 32-Bit-Mikroprozessorchips eingerichtet werden, die in der Lage sind, virtuelle und physische Adressen zu verarbeiten.
- Jede Cacheeinheit weist einen Datencachespeicher und einen Anweisungscachespeicher auf, die im Detail in Fig. 2 und 3 gezeigt sind. Beide Cachespeicher sind auf die gleiche Weise organisiert, wobei der hauptsächliche Unterschied darin besteht, daß der Cachespeicher von Fig. 2 Daten verarbeitet und der Cachespeicher von Fig. 3 Anweisungen verarbeitet. Daher wird die gleiche Beschreibung von Fig. 2 für Fig. 3 nicht wiederholt werden.
- Bezugnehmend auf Fig. 2 kann gesehen werden, daß der Datencachespeicher 14-40 eine virtuelle Speicher-Managementeinheit (VMMU) 14-400 zum Übersetzen von virtuellen 32-Bit-Adressen einer CPU in physische Adressen aufweist. Die CPU-Adressen werden empfangen und anfänglich in einem 32-Bit-Adreßregister (AR) 14-402 gespeichert.
- Für den Zweck der vorliegenden Erfindung kann die VMMU 14-400 aus herkömmlichen integrierten Schaltungschips konstruiert sein. Die VMMU 14-400 ist in der Lage, in einem virtuellen Adreßmodus und einem physischen Adreßmodus zu arbeiten gemäß einer Funktion eines Modussignals, das von den Cachesteuerschaltungen von Block 14-404 bereitgestellt wird. Bei Betrieb im virtuellen Adreßmodus wandelt die VMMU 14-400 die virtuellen Adreßsegmente und Seitennummerbits von Fig. 5a in die physischen Adreß-Seitenrahmennummer-Bits von Fig. 5b um. Bei Betrieb im physischen Adreßmodus sperrt die VMMU 14-400 die Übersetzung, und die CPU-Adreßbits werden zur direkten Verwendung übertragen.
- Zusätzlich zu den Übersetzschaltungen weist die VMMU 14-400 weitere Schaltungen auf. Zum Beispiel weist sie einen Vier-Bit-Wort-Zähler auf, der zum Bezeichnen von Wortadressen während Cacheschreiboperationen verwendet wird.
- Die Cachesteuerschaltungen von Block 14-404 arbeiten, um die Cacheanforderungen, die sie von der CPU 14-2 empfängt, zu decodieren. In Antwort auf solche Anforderungen erzeugt sie die erforderliche Folge von Steuersignalen zusätzlich zu Befehlssignalen, die über den gemeinsamen Befehlsabschnitt des Systembus 12 angelegt werden, um die Übertragung der Daten in den und aus dem Cachespeicher 14-40 auf der Grundlage der Eingabesignale, die sie von der CPU 14-4 und anderen Einheiten innerhalb des Cachespeichers 14-40 empfängt, zu richten, wie hier beschrieben. Zur Erleichterung eines Programmierens nehmen die Steuerschaltungen die Form einer mikroprogrammierten Steuereinheit an.
- Wie gezeigt weist der Cachespeicher 14-40 inhaltsadressierbare Speicher auf, wie z. B. einen Cacheadressenspeicher-CAM (CAC) 14-406 und einen physischen Adressenspeicher-CAM (PAC) 14-408, zusätzlich zu direktadressierbaren Speichern, wie z. B. Seitenspeicher-RAM (PGR) 14-410, physischer Adressenspeicher-RAM (PAR) 14-412, Blockmarkierung-Matrixspeicher (BTA) 14-414 und Seitenmarkierung-Matrixspeicher (PTA) 14- 416. Gemäß der Lehre der vorliegenden Erfindung sind alle diese Speicher gemeinsam an einen internen gemeinsamen Bus 14-420, wie gezeigt, verbunden. Die Cachesteuerschaltungen von Block 14-404 bestimmen durch Anlegen von Freigabesignalen an die unterschiedlichen Speicher, welche Speicher als die Quelle von Seitenebenennummersignalen dienen soll.
- Wie hier beschrieben erlaubt diese Organisationsstruktur allen verwandten Informationen betreffend einer gegebenen Seite, direkt in die gleiche Ebene in jeden der Speicher abgebildet zu werden, wo die verwandten Informationen gespeichert werden sollen. Daher wird gleichzeitiger direkter Zugriff auf alle diese Informationen leicht erhalten durch Anlegen eines einzelnen Cacheadressen-Seitenebenen-Nummerwertes an den Bus 14-420. Dies minimiert die Komplexität, reduziert die Kosten, verbessert die Betriebsgeschwindigkeit, und gewährleistet zusätzliche Flexibilität.
- Zusätzliche Eingänge an dem PGR-Speicher 14-410 sind der Ausgang eines Auswählschalters 14-430 mit vier Positionen, die Seitenebenennummer von Bus 14-420 und ein Löscheingabesignal von den Steuerschaltungen 14-404. Der Schalter 14-430 empfängt Adreßsignale von vier Quellen, die unter der Steuerung der Cache-Steuerschaltungen 14-404 in Antwort auf codierte Signale SW1 ausgewählt sind. Das Adreßregister 14-402 legt Block- und Wortnummer-Adreßsignale an Position 3 an, die VMMU 14-400 legt PAL- und CTR-Adreßbits an Position 2 an, der BTA-Speicher 14-414 legt Blocknummerbits an Position 1 an, und ein 10- Bit-Offset-Register 14-432 und ein Inkrementierer 14-434 legen Block- und Wortnummerbits an Position 0 an. Der PGR-Speicher 14-410 ist mit einem Datenbus der CPU 14-2 und mit den Datenleitungen des Systembus 12 über eine Daten-FIFO-Matrix 14-436 verbunden. Die FIFO-Matrix 14-436 enthält acht 36-Bit-Registerstellen zum Speichern von Datenwörtern, die zwischen dem Speicher PGR 14-410 und dem Systembus 12 übertragen werden. Der FIFO 14-436 kann als herkömmlich im Design angesehen werden und könnte die Form der FIFO-Schaltungen annehmen, die in US-PS 4,195,340 offenbart sind.
- Die gleichen vier Quellen, die mit dem Schalter 14-430 verbunden sind, sind auch mit einem zweiten Schalter 14-440 verbunden, wie gezeigt. Die Ausgabe das Schalters 14-440 von der Quelle, die in Antwort auf codierte Signale SW2 ausgewählt ist, wird als eine der Eingaben an ein 30-Bit-Ausgangsspeicher-Adreßregister 14-442 angelegt. Das Register 14- 442 empfängt 20 physische Adreßbits von dem PAR-Speicher 14-412, der sie an den Adreßbus des Systembus 12 zusammen mit den 10 Adreßbits von dem Schalter 14-440 und mit Paritätsbits anlegt.
- Ein Auswählschalter 14-444 mit zwei Positionen empfängt Blocknummer- (BN)-Adreßsignale von dem Adreßregister 14-402 und dem Offset-Register 14-432, die in Antwort auf ein Signal SW3 ausgewählt werden. Die Ausgabe des Schalters 14-444 wird an eine Eingabe des BTA-Speichers 14-414 angelegt. Der BTA-Speicher 14-414 ist ebenso verbunden, um Blocknummer-(BN)-Adreßsignale von dem Adreßbus des Systembus 12 zu empfangen, die vorher in einem Abhörregister von Block 14-450 in Antwort auf einen Busschreibbefehl gespeichert worden sind. Der BTA- Speicher 14-414 empfängt auch Übereinstimmungs-Seitennummerebenen- Signale und ein Treffersignal von dem PAC-Speicher 14-408.
- Wie gezeigt ist der PAC-Speicher 14-408 mit den Befehls- und Adreßbussen des Systembus 12 über das "Abhör"-Register und Decodiererschaltungen von Block 14-450 gekoppelt. Wie hier beschrieben erlauben diese Verbindungen mit dem Systembus 12 die Verwendung des PAC-Speichers 14-408 zum Aufrechterhalten von Datenübereinstimmung. Zusätzlich empfängt der PAC-Speicher 14-408 die oberen 20 physischen Adreßbits (PAU) von der VMMU 14-400.
- Eine weitere Einheit, die ebenso mit dem gemeinsamen Bus 14-420 verbunden ist, ist die Ebenenersetzschaltung (Level Replacement Circuit, LRU) 14-422. Die Schaltungen erzeugen in Antwort auf ein Fehlsignal von dem CAC 14-406 einen Seitenebenen-Nummercode auf dem Bus 14- 420, um anzugeben, wo die verwandten Informationen betreffend der neuen Seite gespeichert werden sollen. Die LRU 14-422 weisen eine Ersetzmatrix auf, die Informationen zum Festlegen der zuletzt verwendeten Seitenebene zum Ersetzen speichert. Die LRU 14-422 können unter Verwendung herkömmlicher Registerchips konstruiert sein. Ein bevorzugtes Ausführungsbeispiel der LRU-14-422 ist in der gleichzeitig anhängigen Patentanmeldung von Ming T. Miu, et al. offenbart mit dem Titel "Least Recently Used Replacement Level Generating Apparatus", Seriennummer ---------------, eingereicht am gleichen Tag und für die gleichen wie hier genannten Anmelder.
- Die Organisation der verschiedenen CAM- und RAM-Speicher ist in Fig. 4a bis 4e gezeigt. Der CAC-Speicher 14-406 ist eine 32 Stellen x 21 Bit inhaltsadressierbare Speichermatrix (CAM). Das heißt, ihre Stellen werden durch ihre Inhalte identifiziert oder adressiert. Als solche weist der CAC-Speicher 14-406 zusätzlich zu den 32 21-Bit-Registerstellen 32 Vergleichsschaltungen auf, deren Ausgänge eine Prioritätscodierschaltung speisen. Ein identischer Vergleich oder ein Abgleich zwischen den gültigen 20-Bit Inhalten irgendeiner Stelle und der 20-Bit effektiven Seitennummeradresse (EPN) von Fig. 5c erzeugt ein Treffersignal, das in einen 5-Bit Seitenebenen-Nummerwert durch die Prioritätscodierschaltung codiert wird. Um das Auftreten von sowohl Segment- als auch Seitentreffern zu erfassen, werden Segment- und Seitenadreßbits separat verglichen. Die Prioritätscodierschaltung wird verwendet, um ein ungültiges Auftreten von mehr als einem Treffersignal zu signalisieren und um die Eingabe einer binären EINS höchster Priorität in dieser Situation auszuwählen. Sowohl der CAC-Speicher 14-406 als auch die anderen CAM- Speicher von Fig. 2 können aus standard-integrierten Schaltungschips unter Verwendung wohlbekannter Techniken konstruiert sein.
- Wie von Fig. 4a gesehen wird, speichern 20-Bits des CAC-Speichers 14- 406 einen 20-Bit effektiven Seitennummerwert (EPN) und ein gültiges Bit (VN). Die EPN-Werte stellen die 32 zuletzt verwendeten Seiten, die sich zu irgendeinem gegebenen Zeitpunkt in dem PGR-Speicher 14-410 befinden, und deren Gültigkeitsstatus dar. Die EPN-Werte stellen üblicherweise virtuelle Adressen dar, die aus einem 10-Bit Segmentnummerwert und einem 10-Bit Seitennummerwert bestehen, abgeleitet von einer 32-Bit virtuellen CPU-Adresse, wie veranschaulicht durch einen Vergleich von Fig. 5a und 5c.
- In dem System des bevorzugten Ausführungsbeispiels ist ein Hauptspeicher logisch in eine Anzahl von gleichen Segmenten aufgeteilt, was der größten Unterteilung des Speicherraums entspricht. Jedem Segment wird von dem Benutzer eine eindeutige Identifizierung gegeben zum Spezifizieren der Ansammlung von Information, die zur Ausführung eines Prozesses gehört. Der Hauptspeicher hat 2¹&sup0; oder 1024 Segmente, wie festgelegt durch die Größe des Segmentnummerabschnitts der virtuellen Adresse von Fig. 5a.
- Jedes Segment ist in kleinere Einheiten unterteilt, die Seiten genannt werden. Alle Seiten eines Segments sind von der gleichen Größe. Es gibt 2¹&sup0; oder 1024 Seiten, wie festgelegt durch die Größe des Seitennummerabschnitts der virtuellen Adresse von Fig. 5a. Jede Seite hat eine Größe von 2&sup6; oder 64 Blöcken und jeder Block hat 2&sup4; oder 16 Wörter oder 8 Doppelwörter. Diese Werte werden durch die Größe des Blocks und durch die Wortnummerabschnitte der virtuellen Adresse von Fig. 5a festgelegt. Jedes Wort hat 16 Bits, das zwei 8-Bit Datenbytes entspricht.
- Ein Zugriff auf die Segmente wird durch einen Ringmechanismus gesteuert, der durch einen 2-Bit Ringnummerabschnitt jeder virtuellen Adresse festgelegt ist (siehe Fig. 5a). Ein Segment- und Seitenadressieren wird durch die Verwendung von Segment-Deskriptor-Tabellen und Seitentabellen erreicht. Zur weiteren Information über diese Mechanismen kann auf den Inhalt von "The Multics System: An Examination of Its Structure" von Elliott I. Organick, Copyright 1972, verwiesen werden.
- Wenn die EPN-Werte physische Adressen darstellen, bestehen sie aus einer 20-Bit Seitenrahmennummer, die von einer 30-Bit physischen CPU- Adresse abgeleitet wird, wie aus einem Vergleich von Fig. 5b und 5c gesehen werden kann. Aus der Sicht des CAC-Speichers 14-406 gibt es keinen Unterschied im Betrieb von dem von den virtuellen Adressen. In jedwedem Fall stellt der CAC-Speicher 14-406 eine Seitenebenennummer bereit, die mit den Block- und Wortnummerwerten kombiniert wird, die von der virtuellen CPU-Adresse oder einem Offset-Wert der physischen CPU-Adresse abgeleitet wird, um die Cache-Adresse von Fig. 5d zu bilden.
- Fig. 4b offenbart die Organisation des PAC-Speichers 14-408 und des PAR-Speichers 14-412. Beide Speicher enthalten 32 Registerstellen zum Speichern der 32 zuletzt verwendeten Seitenrahmennummerwerte (d. h., die oberen 20 Bits der physischen Adresse), die durch die VMMU 14- 400 erzeugt werden. Jedoch enthält der PAC-Speicher 14-408 auch eine Validierbitstelle (VB) in jeder Registerstelle. Die Inhalte des PAC- Speichers 14-408 sind durch irgendeinen 20-Bit Seitenrahmen-Nummerabschnitt (PFN) einer physischen Speicheradresse eines Schreibbefehls adressierbar, der an den Systembus 12 von einem der anderen Subsysteme von Fig. 1 angelegt wird.
- Vergleichsschaltungen innerhalb des Speichers 14-408 arbeiten, um ein Treffersignal zu erzeugen, wenn ein identischer Vergleich in den Seitenrahmennummern erfaßt ist. Dies erhält eine Einheitlichkeit, indem die Invalidierung dieser Kopien von Blöcken zugelassen wird, die in dem PGR-Speicher 14-410 gespeichert sind und die durch andere Subsysteme/- Vorrichtungen durch den BTA-Speicher 14-414 geändert worden sind. Das heißt der PAC-Speicher 14-408 erzeugt durch seine Vergleichs- Prioritätscodierschaltungen ein Treffersignal und einen Seitenebenen- Nummerwert, der verwendet wird, um die erforderliche Invalidierung zu erreichen.
- Auf eine ähnliche Weise erfaßt der PAC-Speicher 14-408 Synonym-Probleme in Antwort auf eine neue Seitenrahmennummer, die durch die VMMU 14-400 erzeugt wird. Wenn Seitennummerwerte virtueller Adressen in die gleiche physische Adreßrahmennummer abgebildet worden sind, erzeugt der PAC-Speicher 14-408 ein Treffersignal, das an die Steuerschaltungen 14-404 angelegt wird, und einen Seitenebenen-Nummerwert, der an den Bus 14-420 angelegt wird. Dies resultiert ihrerseits in der Invalidierung der jeweiligen Seite virtueller Adresse in dem CAC- Speicher 14-406.
- Der PAR-Speicher 14-412 dient als eine Abbildungseinheit, und zwar dadurch, daß sie die erforderlichen Seitenrahmen-Nummerwerte physischer Adresse in dem Falle eines Cache-Verfehlens bereitstellt. Da der PAR- Speicher 14-412 die gleichen Seitenrahmen-Nummerwerte speichert, die in dem PAC-Speicher 14-408 gespeichert sind, kann es möglich sein, die zwei Speicher in einer Weise zu kombinieren, daß sie sich einen Satz gemeinsamer Speicherregister teilen. Jedoch sind aus Gründen der Klarheit und Einfachheit beide Speicher getrennt gezeigt.
- Fig. 4c zeigt die Organisation des BTA-Speichers 14-414. Er hat 32 Ebenen, wobei jede 64 2-Bit breite direktadressierbare Registerstellen aufweist. Dieser Speicher wird verwendet, um den gültigen und geschriebenen Status der Blöcke innerhalb jeder der 32 in dem PGR- Speicher gespeicherten Seiten nachzuverfolgen. Die Schreibbitstellen (WB) werden während Rückschreib- oder Siphon-Operationen verwendet, um Blöcke zu identifizieren, die durch die CPU 14-2 geändert worden sind. Zu diesem Zweck weist der BTA-Speicher 14-414 weiterhin eine Prioritätscodierschaltung auf zum Erfassen des Vorhandenseins geschriebener Blöcke, die durch binäre EINSEN bezeichnet werden, wenn auf eine Anzahl von Stellen parallel zugegriffen wird. Die Validierbitstelle (VB) wird verwendet, um eine Dateneinheitlichkeit zu erhalten, wie vorher diskutiert.
- Fig. 4d zeigt die Organisation des PGR-Speichers 14-410. Dieser Speicher dient als der Datenspeicher und hält bis zu 32 Seiten, jede in einer Größe von zwei Kilobytes. Wie gezeigt, ist jede Seite in 64 Blöcke unterteilt, wobei jeder Block 8 Doppelwörter oder 16 Wörter oder 32 Bytes aufweist.
- Fig. 4e zeigt die Organisation des PTA-Speichers 14-416. Dieser Speicher hält den Status für jede der 32 in dem PGR-Speicher 14-410 gespeicherten Seiten, den der Datencache 14-40 verwendet, um Steuerentscheidungen bezüglich der Seiten zu machen. Wie gezeigt, hat der Speicher 14-416 32 2-Bit Stellen. Die erste Bitstelle speichert ein Privatbit, das, wenn gesetzt, anzeigt, daß nur der laufende Prozeß diese Seite verwenden wird. Die zweite Bitstelle speichert ein Modifizier-Bit, das, wenn gesetzt, anzeigt, daß das gemeinsam benutzte Speicherabbild einer Seite in dem Hauptspeicher geändert worden ist, seit es zuletzt von dem virtuellen Speicher gewonnen wurde (z. B. I/O-Plattenspeicher).
- Wie von Fig. 3 gesehen wird, ist der Anweisungs-Cachespeicher 14-50 auf die gleiche Weise wie der Daten-Cachespeicher 14-40 organisiert. Ähnliche Bezugszeichen werden verwendet, um ähnliche Blöcke in Fig. 2 und Unterschiede sind jene Änderungen, die zur effizienten und Hochgeschwindigkeits-Anweisungsverarbeitung erforderlich sind. Aus diesem Grund wird eine Kombination von Seitenregistern 14-535A, 14-535B und Anweisungsadreßregistern 14-534A, 14-534B anstelle eines Offset-Registers 14-432 zum Speichern der Seitenebenen-Nummer- bzw. Offset-Werte verwendet.
- Wie gezeigt, sind die Ausgänge der Seitenregister 14-535A und 14-535B mit verschiedenen Positionen eines Wählschalters 14-533 mit zwei Positionen verbunden. Die Ausgänge der Anweisungsadreßregister 14-532A und 14-532B sind mit der 0- und 1-Position des Wählschalters 14-530 verbunden. Die Anweisungsadreßregister 14-532A und 14-532B weisen auch Inkrementierschaltungen 14-534A und 14-534B auf.
- Die Paare von Seiten- und Anweisungsadreßregister 14-535A und 14-535B und 14-532A und 14-532B erlauben das gleichzeitige Verarbeiten von Anweisungen von zwei Anweisungsblöcken. Kurz, wenn eine Anweisungs- Hole-Anforderung von dem Cachespeicher 14-50 empfangen wird, wird der Offset-Wert einer virtuellen Adresse, der aus der Blocknummer und einer Doppelwortnummer besteht, in das Anweisungsadreßregister geladen, das gerade nicht verwendet wird (z. B. IAR2). Zur gleichen Zeit wird das entsprechende Seitenregister (z. B. PR1) mit dem Seitenebenen-Nummerwert geladen. Danach werden unter der Steuerung von Signalen von den Cache-Steuerschaltungen 14-504 die ersten Positionen der Auswählschalter 14-530 und 14-533 zum Übertragen von Signalen freigegeben, die für die Offset- und Seitenebenen-Nummerwerte repräsentativ sind. Jedesmal wenn die CPU 14-2 auf eine Anweisung zugreift, werden die Inhalte der Anweisungsadreßregister (z. B. IAR2) um Eins inkrementiert und an die Register zurückgegeben.
- Es wird bemerkt werden, daß, da der Cachespeicher 14-50 vielmehr zum Verarbeiten von CPU-Anforderungen für Anweisungen als für Daten vorgesehen ist, er in bestimmter Hinsicht vereinfacht werden kann. Das heißt, die Modifizierbit-Positionen des BTA-Speichers 14-414, gezeigt in Fig. 4c, und der Prioritätscodierer können eliminiert werden. Ebenso kann der PTA-Speicher 14-416 eliminiert werden.
- Mit Bezug auf die Fig. 1, 2, 4a bis 4e und 5a bis 5d wird nun der Betrieb des Cachespeichers 14-40 in Verbindung mit den Flußdiagrammen von Fig. 6a und 6b beschrieben werden. Es wird angenommen, daß der Cachespeicher 14-40 eine Anforderung für Daten empfängt. Die Anforderung schließt Signale ein, die den Anforderungstyp spezifizieren, zusammen mit einer virtuellen Adresse, die das Format von Fig. 5a hat. Wie von Fig. 6a gesehen wird, wird vor dem Verarbeiten von Anforderungen der Cachespeicher 14-40 vorher initialisiert worden sein auf einen bekannten Zustand, nachfolgend dem Einschalten des Systems von Fig. 1 (d. h., Block 602).
- Von Fig. 6b wird gesehen, daß während der Initialisierung die Cache- Steuerschaltungen 14-404 den CAC-Speicher 14-406, den PAC-Speicher 14-408, den BTA-Speicher 14-414 und den PTA-Speicher 14-416 über ein Löschsignal initialisieren, das an die Löscheingangsanschlüsse jedes Speichers angelegt wird (d. h., Block 602-2). Dies resultiert in den Validierbit-Positionen (VB) innerhalb der CAC- und PAC-Speicher 14-406 und 14-408 gemäß Fig. 4a und 4b, den Validier- und Schreib-Bit-Positionen des BTA-Speichers 14-414 gemäß Fig. 4c und in den Privat- und Modifizier-Bit-Positionen des PTA-Speichers 14-416 gemäß Fig. 4e, wobei alle auf binäre NULLEN gelöscht werden.
- Wie gezeigt in Block 602-4, setzen die Ersetz-Steuerschaltungen 14-422 in Antwort auf das Löschsignal 32 Stellen mit anfänglichen Ebenenwerten in ihrer Matrix auf. Den Stellen werden Werte von 0 bis 31 zugewiesen, wobei der Wert 31 der zuletzt verwendete und der Wert 0 der älteste verwendete Wert ist. Die Stellen werden in einer wettkampfartigen Weise erneuert, um das Ersetzen von Seiten auf der Basis der zuletzt verwendeten zu gewährleisten. Als nächstes werden die Cache- Adreßregister 14-432 und 14-442 zu NULLEN gelöscht (d. h., Block 602- 6). Jetzt ist der Cachespeicher 14-40 bereit, CPU-Anforderungen (d. h., Block 604) und Monitorbus-Schreibanforderungen, die von anderen Subsystemen von Fig. 1 empfangen werden (d. h., Block 608), zu verarbeiten.
- Wie vorher erwähnt, führt der PAC-Speicher 14-408 eine Busaufsicht- oder Überwachungsfunktion in der Weise aus, wie sie durch Blöcke 608- 2 bis 608-8 veranschaulicht ist. Im spezielleren überwachen die Abhörregister und Decodierschaltungen 14-450 die Anforderungen, die an den Systembus 12 durch andere Subsysteme angelegt werden. Nach Erfassen eines Speicherschreibbefehls erzeugen die Schaltungen 14-450 ein Ausgabeschreibsignal, das an den PAC-Speicher 14-408 angelegt wird. Dies verursacht, daß die 20 Seitenrahmen-Nummerbits einer physischen Adresse dieser Anforderung in den Abhörregisterteil von Block 14-450 geladen wird. Das Schreibsignal veranlaßt auch, daß der PAC-Speicher 14-408 seine Inhalte unter Verwendung der Seitenrahmen-Nummerbits abfragt. Wenn kein Abgleich oder Treffer erfaßt wird, werden die obigen Operationen wiederholt.
- Wenn ein Treffer erfaßt wird, legt der PAC-Speicher 14-408 ein Treffersignal als eine Eingabe an die Cache-Steuerschaltungen 14-404 an. Er legt ebenso einen Seitenebenen-Nummerwert als eine Eingabe an den BTA-Speicher 14-414 zusammen mit der Blocknummer der Schreibanforderung, die vorher durch die Schaltungen 14-450 gespeichert worden ist, an. Unter der Steuerung der Schaltungen 14-404 wird das Validierbit des bezeichneten Blocks an der spezifizierten Ebene auf eine binäre NULL rückgesetzt. Nur das Vorhandensein einer Schreibanforderung oder eines Schreibbefehls, welche durch ein anderes Subsystem erzeugt sind, wird durch die Schaltungen von Block 14-450 erfaßt werden. Wie von Block 608-8 gesehen wird, fährt die Überwachung nach der Invalidierungsoperation fort. Es wird bemerkt werden, daß durch die Verwendung des Seitenebenen-Nummerwerts der Cachespeicher 14-40 eine Dateneinheitlichkeit in einer schnellen und effizienten Weise aufrechterhält.
- Parallel zum Aufrechterhalten der Buseinheitlichkeit verarbeitet der Cachespeicher 14-40 CPU-Datenanforderungen. Das Auftreten von Datenanforderungen resultiert in dem Ausführen der Folge von Operationen, gezeigt in den Blöcken 604-2 bis 604-18 von Block 2 von Fig. 6b. Wie gezeigt, wird in Antwort auf eine CPU-Datenanforderung das virtuelle Adreßregister 14-402 mit einer virtuellen Adresse geladen, die wie gezeigt in Fig. 5a formatiert ist. Unter Verwendung der 20-Bit effektiven Adreßnummerbits (EPN) (Fig. 5c) werden die Inhalte des CAC- Speichers 14-406 abgefragt. Wenn der CAC-Speicher 14-406 einen identischen Abgleich zwischen den EPN-Bits und den Segment- und Seitennummer-Bitinhalten einer der CAC-Speicherstellen erfaßt, arbeitet er, um ein Treffersignal und einen Seitenebenen-Nummerwert auf dem internen Bus 14-420 zu erzeugen.
- Die Cacheadresse, die aus der Seitenebenennummer von CAC-Speicher 14-406 und aus dem Offset von Register 14-432 aufgebaut ist, wird in die Adreßregister des BTA-Speichers 14-414 und des PGR-Speichers 14- 410 geladen. Auch werden die Block- und Wortwerte (BN, WN) in das Offset-Register 14-432 geladen. Das Validierbit VB für den spezifizierten Block wird durch den BTA-Speicher 14-414 geprüft. Wenn es gültig ist (eine binäre EINS) und die CPU-Cacheanforderung eine Leseanforderung ist, veranlassen die Cache-Steuerschaltungen 14-404, daß das angeforderte 36-Bit Datendoppelwort aus dem PGR-Speicher 14-410 auf den Eingangsbus der CPU 14-2 ausgelesen wird und in die Ausführungseinheit-Datenregister (E) der CPU geladen wird. Während des gleichen Cachesteuerzyklus der Operation werden die Inhalte des Offset-Registers 14-432 um Eins inkrementiert.
- Wie gezeigt, wenn die Cache-Steuerschaltungen 14-404 bestimmen, daß die Leseoperation abgeschlossen ist (d. h., nur ein Doppelwort angefordert), vervollständigt dies die Operation, und der Cachespeicher 14-40 ist bereit, eine andere CPU-Anforderung auszuführen. Wenn die Leseoperation nicht abgeschlossen ist (d. h. mehr als ein einzelnes Doppelwort angefordert), dann prüfen die Cache-Steuerschaltungen 14-404 das Auftreten einer Offset-Überlaufbedingung. Wenn ein Überlauf erfaßt wird, wird der Cachespeicher 14-40 eine andere neue Adreßsequenz auslösen. Bei Nichtvorhandensein eines Überlaufs wird mit der Leseoperation auf ein anderes Doppelwort von dem PGR-Speicher 14-410 hin fortgefahren.
- Wie von Block 604-4 gesehen wird, wenn ein CAC-Verfehlen erfaßt wird, wird die Folge von Operationen der Blöcke 605-2 bis 605-22 durchgeführt (Fig. 6b, Blatt 3). Im spezielleren veranlassen die Cache-Steuerschaltungen 14-404, daß die LRU-Ersetzschaltungen 14-422 einen Seitenebenen-Nummerwert an den Bus 14-420 anlegen. Diese Nummer, die mit dem Offset-Wert verknüpft ist, wird als die Cacheadresse durch die Siphon-Alte-Seiten-Sequenz von Block 614 verwendet.
- Als nächstes erzeugt die VMMU 14-400 eine 20-Bit physische Adresse mit dem Format von Fig. 5b. Die Seitenrahmen-Nummerbits (PAU) werden an den PAC-Speicher 14-408 angelegt und verwendet, um das Vorhandensein von virtuellen Adreßsynonymen zu prüfen. Wenn der PAC-Speicher 14-408 einen identischen Vergleich zwischen den Seitenrahmennummern entdeckt, erzeugt er ein Treffersignal und Seitenebenen- Nummersignale als Ausgaben. Die Seitenebenen-Nummer- und Offset- Werte werden verknüpft, um die Cacheadresse zu bilden, die an den Bus 14-420 angelegt wird. Wie von Block 605-10 gesehen wird, wird die CAC-Stelle, die durch die PAC-Seitenebenen-Nummersignale bezeichnet ist, durch die Cache-Steuerschaltungen 14-404 mit dem EPN-Wert von dem AR-Register 14-402 geladen. Zur gleichen Zeit wird das Validierbit VB in der CAC-Stelle auf eine binäre EINS gesetzt. Dies verhindert das Abbilden von mehr als einer virtuellen Adresse in die gleiche physische Adresse.
- Wenn kein Seitenrahmentreffer durch den PAC-Speicher 14-408 erfaßt wird, dann wird eine Siphon-Operation ausgeführt, wie angezeigt durch Block 605-12. Das heißt, die Folge von Operationen der Blöcke 614-2 bis 614-12 wird ausgeführt. Dies resultiert in der Übertragung geschriebener Blöcke einer Seite zurück in den Hauptspeicher, so daß die Blöcke einer neuen Seite in die gleiche Seite geschrieben werden können.
- Wie von Block 614-2 gesehen wird, wird der Seitenebenen-Nummerwert, der durch die LRU-Ersetzschaltungen 14-422 erzeugt wird, verwendet, um den Blocknummerwert für irgendeinen geschriebenen Block in dieser Seite zu erhalten. Eine Gruppe von Schreibbitstellen (WB) wird ausgelesen, und die BTA-Prioritätscodierschaltung erzeugt einen Blocknummerwert (BN) für die Stelle höchster Priorität, die eine binäre EINS enthält. Die Seitenebenennummer von den LRU-Schaltungen 14-422, die mit dem BTA-Blocknummerwert verknüpft ist, der über die Position 2 des Schalters 14-430 ausgewählt ist, wird als eine Cacheadresse verwendet, um den Block von Wörtern von dem PGR-Speicher 14-410 auszulesen, ein Doppelwort nach dem anderen in den FIFO-Speicher 14-436.
- Auch wird der LRU-Seitenebenen-Nummerwert verwendet, um die Seitenrahmennummer einer physischen Adresse von dem PAR-Speicher 14-412 auszulesen. Die Seitenrahmennummer des PAR-Speichers, die mit der Schreibblocknummer des BTA-Speichers und mit dem VMMU-Wortzähler verknüpft ist, ausgewählt über Position 1 des Schalters 14-440, wird in die Speicheradreßregister 14-442 geladen. Diese Adresse wird durch die VMMU 14-400 inkrementiert und wird verwendet, um den Block aus 8 Doppelwörtern von dem PGR-Speicher 14-410 in den Hauptspeicher zu schreiben. Wie von dem Block 614-10 gesehen wird, wenn der gesamte Block geschrieben worden ist, werden die LRU-Seitenebenen-Nummer- und BTA-Schreibblock-Nummerwerte, die an den Bus 14-420 angelegt sind, verwendet, um das Blockschreibbit des in den Hauptspeicher geschriebenen Blockes rückzusetzen.
- Wie von Fig. 6b gesehen wird, wird die Folge von Operationen der Blöcke 614-2 bis 614-12 für jeden geschriebenen Block wiederholt, der durch die BTA-Prioritätscodierschaltung erfaßt wird. Das heißt, es wird auf die gleiche Gruppe von Blockschreibbits zugegriffen und nach binären EINSEN untersucht, bis keine erfaßt werden. Die gleiche Operation wird auf einer nächsten Gruppe von Blockschreibbits ausgeführt bis alle der 64 Blockschreibbits untersucht worden sind und rückgesetzt sind. Zu dieser Zeit ist die Siphon-Operation abgeschlossen und die Folge wird wiederaufgenommen.
- Wie durch den Block 605-16 angezeigt, wird der LRU-Seitenebenen- Nummerwert, der an den Bus 14-420 angelegt ist, verwendet, um den neuen VMMU-Seitenrahmen-Nummerwert (PAU) in die geeigneten Stellen der PAR- und PAC-Speicher 14-412 und 14-408 zu schreiben. Auch werden die effektiven Seitennummer-Adreßbits (EPN) vom AR-Register 14-402 in die CAC-Speicherstelle geschrieben, die durch den gleichen LRU-Seitenebenen-Nummerwert angegeben ist, wobei die Validierbitposition der Stelle auf eine binäre EINS gesetzt wird. Wie Block 605-20 anzeigt, werden Signale, die für die Privat- und Modifizierbits von den Segment- und Seitendeskriptoren durch die VMMU 14-400 repräsentativ sind in die PTA-Speicherstelle geschrieben, die durch den LRU-Seitenebenen-Nummerwert angegeben ist. Dies vervollständigt die Seitenverfehl-Folge.
- Wie von Block 604-6 gesehen wird, wird die Cacheadresse, die aus der Seitenebenennummer von den LRU-Schaltungen 14-422 und aus dem Offset von Register 14-432 aufgebaut ist, in die BTA- und PGR-Adreßregister geladen. Wiederum wird das Validierbit VB wie oben beschrieben geplant. Von Block 604-8 wird gesehen, daß, wenn das Blockvalidierbit des angeforderten Blocks nicht gültig ist, die Folge von Operationen festgelegt durch die Blöcke 606-2 bis 606-8 ausgeführt wird. Dies resultiert darin, daß der angeforderte Block von dem Hauptspeicher geholt wird. Wie angezeigt durch Block 606-2 wird der Seitenebenen-Nummerwert der Cacheadresse, die an den Bus 14-420 durch den CAC-Speicher 14-406 angelegt wird, verwendet, um den Seitenrahmen-Nummerwert von dem PAR-Speicher 14-412 in das Speicheradreßregister 14-442 zu legen.
- Der Seitenebenen-Nummerwert, der mit dem Blocknummerwert (BN) verknüpft ist, der in dem Block erhalten wird, der vorher in dem Offset- Register 14-432 in Block 604-6 gespeichert wurde, wird als eine Basisadresse verwendet, ausgewählt über Position 0 des Schalters 14-440, um den fehlenden Block von dem Hauptspeicher in den Cachespeicher 14-40 zu übertragen. Die Doppelwörter, die von dem Hauptspeicher in den FIFO-Speicher 14-436 übertragen werden, werden in den PGR-Speicher 14-410 in die Stellen geschrieben, die durch die Seitenebenen-Nummer- und BTA-Blocknummer- und Wortzähler-Werte festgelegt sind, die über Position 1 des Schalters 14-430 angelegt werden. Beim Abschluß der Übertragung der 8 Doppelwörter wird die Validierbitposition in dem BTA-Speicher 14-414 des Blocks, der durch die CAC/LRU-Seitenebenennummer festgelegt ist, auf eine binäre EINS gesetzt. Dies vervollständigt die Blockverfehlsequenz.
- Unter der Annahme, daß der angeforderte Block gültig war, wird von Block 604-10 gesehen werden, daß die Cache-Steuerschaltungen 14-404 nach Erfassen, daß die Anforderung ein Schreiben war, veranlassen, daß die Folge von Operationen der Blöcke 609-2 bis 609-10 ausgeführt wird. Dies führt dazu, daß ein Doppelwort in den PGR-Speicher 14-410 von dem Ausgangsbus der CPU 14-2 geschrieben wird. Im spezielleren werden der CAC/LRU-Seitenebenen-Nummerwert und der effektive Blocknummerwert vom AR-Register 14-402, der über Position 3 des Schalters 14-430 angelegt wird, als eine Cacheadresse verwendet, um auf die geeignete Stelle in dem PGR-Speicher 14-410 zuzugreifen. Das Doppelwort wird in die Stelle unter der Steuerung der Cache-Steuerschaltungen 14-404 geschrieben.
- Der gleiche CAC/LRU-Seitenebenen-Nummerwert wird verwendet, um den PTA-Speicher 14-416 zum Prüfen des Zustands des Seitenmodifizierbits zu adressieren. Wenn das Modifizierbit eingeschaltet ist (d. h., eine binäre EINS), wird auf das Seiten-Privat-Bit ebenso von dem PTA-Speicher 14-416 unter Verwendung des gleichen CAC/LRU-Seitenebenen- Nummerwertes zugegriffen. Wenn das Seiten-Privat-Bit eingeschaltet ist (eine binäre EINS), wird der Seitenebenen-Nummerwert, der mit dem effektiven Blocknummerwert des AR-Registers 14-402 verknüpft, der über Position 1 des Schalters 14-444 angelegt ist, verwendet, um den BTA- Speicher 14-414 zu adressieren. Die Cache-Steuerschaltungen 14-404 veranlassen, daß das Schreibbit des angegebenen Blocks auf eine binäre EINS gesetzt wird. Zu diesem Zeitpunkt ist die Schreibsequenz vervollständigt. Es wird angenommen, daß jede Schreibanforderung von der CPU separat ausgelöst wird. Daher werden nun die Cache-Steuerschaltungen 14-404 auf neue Cache-Betriebsanforderungen warten, wie gezeigt durch Block 602-8.
- Wie aus Fig. 6b gesehen wird, veranlaßt die Tatsache, daß das Modifizierbit und das Privat-Bit nicht gesetzt worden ist, daß Setzmodifizier- und Global-Sequenzen ausgeführt werden. Die Setzmodifiziersequenz der Operationen der Blöcke 610-2 bis 610-8 veranlassen die VMMU 14-400, eine Gültigkeitsprüfung an dem Seitendeskriptor auszuführen, der von dem Hauptspeicher geholt wird, und den Deskriptor an dem Hauptspeicher zu erneuern und zurückzuspeichern, wenn gültig. Die Globalsequenz der Operationen der Blöcke 612-2 und 612-4 veranlaßt, daß nichtprivate oder gemeinsam genutzte Daten, die durch die CPU 14-2 in den PGR-Speicher 14-410 geschrieben wurden, auch in den Hauptspeicher geschrieben werden.
- Wie von Block 612-2 gesehen wird, wird die CAC-Seitenebenennummer verwendet, um die Seitenrahmen-Nummeradresse vom PAR-Speicher 14- 412 zu erhalten. Dieser Wert wird mit den Inhalten des Offset-Registers 14-432 verknüpft, der über die Position 0 des Schalters 14-440 angelegt ist, um die physische Adresse zu bilden, die in ein MAR-Register 14-442 geladen wird. Unter Verwendung der gleichen Seitenebenennummer und des gleichen Offset-Registerwertes, der über Position 0 des Schalters 14- 430 als eine Cacheadresse angelegt wird, werden die Dateninhalte der Stelle, in die durch die CPU 14-2 geschrieben wurde, in den FIFO- Speicher 14-436 ausgelesen. Von dort werden die Daten in den Hauptspeicher geschrieben an die Stelle, die durch die in dem MAR-Register 14-442 gespeicherte physische Adresse angegeben ist.
- Fig. 6c zeigt ein Beispiel, wie die Cache-Organisation der vorliegenden Erfindung auch die Ausführung bestimmter Betriebssystemfunktionen (Systembefehle) erleichtert, die Abänderungen an Informationen betreffend einer gegebenen Seite erfordern. Zum Beispiel wird es nach einer gegebenen Zeitperiode ohne Aktivität wünschenswert, Daten betreffend einen älteren Prozeß zu eliminieren. Dies kann durch einen Systembefehl geschehen, der durch irgendein zentrales Subsystem ausgelöst wird und an alle zentralen Subsysteme von Fig. 1 über den Befehlsbusabschnitt des Systembus 12 gesendet wird. Dies veranlaßt, daß die Folge von Operationen der Blöcke 616-2 bis 616-8 ausgeführt wird. Die Operation bezeichnet das Löschen eines Seitenrahmen-Nummerwertes, der durch den Systembefehl angegeben ist, der in dem Abhörregister 14-450 gespeichert worden ist. Wie gezeigt, wird dieser Wert von dem Abhörregister 14-450 an den PAC-Speicher 14-408 angelegt. Wenn ein Treffer erfaßt ist, erzeugt der PAC-Speicher 14-408 ein Treffersignal und legt die Seitenebenennummer an den Bus 14-420 an. Der Seitenebenen- Nummerwert wird verwendet, um die Seiteninformation in der angegebenen Ebene in sowohl dem CAC-Speicher 14-406 als auch dem PAC- Speicher 14-408 für ungültig zu erklären, indem veranlaßt wird, daß die Cache-Steuerschaltungen 14-404 die zugehörigen Validierbitpositionen zu NULLEN rücksetzen. Damit kann durch die Verwendung des Seitenebenen-Nummerwertes die angegebene Operation prompt ausgeführt werden.
- Aus einem Vergleich der Fig. 6a bis 6c und der Fig. 7a bis 7c kann gesehen werden, daß sowohl die Daten- als auch die Anweisungs-Cachespeicher 14-40 und 14-50 von Fig. 2 bzw. 3 in einer ähnlichen Weise arbeiten. Dies wird veranschaulicht durch die Verwendung von ähnlichen Bezugszeichen in den Fig. 6a bis 6c und den Fig. 7a bis 7c. Die Unterschiede liegen darin, daß, da der Cachespeicher 14-40 Anweisungen holt, bestimmte Folgen von Operationen eliminiert werden können (d. h., Siphon- und Schreib-Sequenzen). Damit wird die Adreßsequenz von Fig. 6b vereinfacht.
- Es wird bemerkt werden, daß das Vorhandensein eines CAC-Speichertreffers und einer gültigen Blockbedingung in dem Laden der CPU- Anweisungseinheit (I) mit dem angeforderten Anweisungsdoppelwort, das von einem ICR-Speicher 14-510 erhalten wird, resultiert. Zu dieser Zeit werden die Anweisungsadreßregister-Offset-Blocknummer und die Doppelwortinhalte des verwendeten IAR-Registers um Eins inkrementiert. Diese Anordnung von Anweisungsadreß- und Seitenebenennummer-Registern erlaubt eine schnelle Übertragung von Anweisungen an die CPU 14-2 durch den Cachespeicher 14-50. Das heißt, da es wahrscheinlicher ist, daß die CPU 14-20 fortfahren wird, Anweisungen von dem gleichen Block anzufordern, gewährleistet eine Wiederholung der gezeigten Schleife einen schnellen Zugriff und eine schnelle Übertragung von Anweisungen von dem ICR-Speicher 14-510. Die Übertragung tritt auf, bis ein Überlauf erfaßt ist, zu welcher Zeit eine andere Seite angefordert werden wird.
- Wie von dem obigen gesehen wird, kann die gleiche Cache-Organisation der vorliegenden Erfindung in der Konstruktion von sowohl Daten- als auch Anweisungs-Cachespeichern verwendet werden. Sie gewährleistet unmittelbaren Zugriff auf alle verwandten Informationen betreffend eine Seite durch die Verwendung einer gemeinsamen Cacheadresse. Wann immer es wünschenswert wird, andere Operationen an einer Seite auszuführen (z. B. Sicherheitsoperationen), können zusätzliche Speicher zu dem Seitenebenen-Nummerbus hinzugefügt werden, um auf die zugehörige Information zuzugreifen.
- Da der Eingangs-CAM-Speicher einen virtuellen oder physischen Adreßvergleich an nur einem Markierungswert ausführt, wird die Betriebsgeschwindigkeit zur Seitenebenen-Nummererzeugung erhöht. Darüber hinaus kann im Falle des Datencachespeichers 14-40, obwohl nur 32 Ebenen gezeigt sind, die Anzahl von Seiten wesentlich mit nur geringer Auswirkung auf die Betriebsgeschwindigkeit erhöht werden. Es wird vom Fachmann verstanden werden, daß die Operationen, die in den Flußdiagrammen von Fig. 6a bis 6c und Fig. 7a bis 7c ausgeführt sind, zum Zwecke der Veranschaulichung sind. Zum Beispiel kann es möglich sein, bestimmte Operationen zu kombinieren oder sie zu unterschiedlichen Zeiten auszuführen, um Schritte zu reduzieren und Cache-Steuerzyklen zu sparen.
- Es wird ebenso vom Fachmann anerkannt werden, daß viele andere Änderungen an dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung gemacht werden können.
Claims (8)
1. Cachespeicher zur Verwendung mit einer Verarbeitungseinheit (14-2),
die an einen Hauptspeicher (20-28) verbindet, wobei der
Hauptspeicher Informationen in der Form von Segmenten hält, wobei jedes
Segment eine Vielzahl von Seiten aufweist, wobei jede Seite eine
Vielzahl von Blöcken aufweist, wobei jeder Block eine Vielzahl von
Informationseinheiten aufweist, und wobei der Cachespeicher
schnellen Zugriff auf die Informationseinheiten vorsieht, die von dem
Hauptspeicher als Antwort auf Anforderungen, die von der
Verarbeitungseinheit empfangen werden, angefordert werden, wobei jede
Anforderung eine Hauptspeicheradresse der angeforderten
Informationseinheiten einschließt,
dadurch gekennzeichnet, daß
jede der Adressen einen ersten Teil (effektive Seitennummer EPN)
mit einer Identifizierung (Segmentnummer/Seitennummer) der Seite,
die die angeforderten Informationseinheiten einschließt, und einen
zweiten Teil (Blocknummer und Wortnummer), der die Stelle
innerhalb der Seite der angeforderten Informationseinheiten
identifizieren, aufweist; wobei der Cachespeicher aufweist:
eine Vielzahl von inhaltsadressierbaren Speichern (CAMs) (14-406,
14-408), wobei jeder CAM eine Vielzahl von Zellen eines ersten
Typs von Information betreffend jeder Seite der Vielzahl von Seiten
enthält, und wobei ein erster (14-406) der CAMs gekoppelt ist, um
den ersten Teil der Anforderungsadresse von der
Verarbeitungseinheit zu empfangen;
eine Vielzahl von direkt adressierbaren Direktzugriffsspeichern
(RAMs) (14-410, 14-412), wobei jeder eine Vielzahl von Zellen zum
Speichern anderer Typen von Informationen betreffend jede der
Seiten enthält;
einen internen Bus (14-520), der einen Ausgangsanschluß des einen
CAM (14-406) und Eingangsanschlüsse der anderen CAMs und der
RAMs zusammenkoppelt;
wobei alle der CAMs und RAMs eine gleiche Anzahl von Zellen
aufweisen, wobei alle entsprechend numerierten Zellen der CAMs
und RAMs Information bezüglich einer bestimmten Seite halten;
wobei der eine CAM (14-406) in jeder Zelle davon die
Seitenidentifizierung der Seite hält, für die Information in den entsprechend
numerierten Zellen der anderen CAMs und der RAMs gehalten ist;
eine Cachesteuereinrichtung (14-404), die auf eine Anforderung
anspricht, die von der Verarbeitungseinheit gemacht wird, um den
einen CAM zu veranlassen, den ersten Teil der Anforderungsadresse
anzunehmen und die Zellen davon nach einer zweiten Identifizierung
entsprechend dem ersten Teil zu durchsuchen, und wobei dieser eine
CAM nach Erfassung einer solchen entsprechenden
Seitenidentifizierung
an den Ausgangsanschluß zur Übertragung auf den internen
Bus eine Zellennummer (Seitenebenennummer) liefert, die die Zelle
des einen CAM identifiziert, der die entsprechende
Seitenidentifizierung hielt;
wobei wenigstens einer der RAMs (14-410) auf die auf den Bus
gelieferte Zellennummer und den zweiten Teil der
Anforderungsadresse antwortet, um auf bestimmte Informationseinheiten, die in
deren Zelle gehalten werden, die von dieser Zellennummer
dargestellt wird, zuzugreifen und sie auszuliefern; und
wobei wenigstens einer der anderen CAMs auf die auf den Bus
gelieferte Zellennummer antwortet, um Information auszuliefern, die
in der alle davon gehalten wird, die von der Zellennummer
dargestellt wird.
2. Cachespeicher nach Anspruch 1, wobei die Stellen eines ersten der
direkt adressierbaren Direktzugriffsspeicher gültige Bitanzeiger für die
Vielzahl von Blöcken der Anzahl von Seiten speichern, und wobei
die Cachesteuereinrichtung als Antwort auf ein Signal vom ersten
inhaltsadressierbaren Speicher als Anzeige auf die Trefferbedingung
den ersten direkt adressierbaren Direktzugriffsspeicher befähigt, einen
gültigen Bitanzeiger auszulesen, der durch den Wert der
Seitenebenennummer und eines Blocknummerabschnitts der anderen
Abschnitte der Hauptspeicheradresse gegeben ist zum Festlegen, ob ein oder
ob kein gültiger Block, der die angeforderten Informationsworte
enthält, in dem Cachespeicher enthalten ist.
3. Cachespeicher nach Anspruch 2, wobei ein zweiter der
inhaltsadressierbaren Speicher Stellen aufweist zum Speichern der physikalischen
Adressen der den Seiten zugewiesenen Speicherstellen in dem
Cachespeicher und der Anzeiger des Gültigkeitsstatus' der physikalischen
Adressen, wobei ein weiterer der inhaltsadressierbaren Speicher mit
der Übersetzungseinrichtung für virtuellen Speicher zum Empfangen
jeder neuen physikalischen Adresse gekoppelt ist, wobei der zweite
inhaltsadressierbare Speicher betrieben wird nach Erfassung eines
Vergleichs zwischen der neuen physikalischen Adresse und
irgendeiner gültigen physikalischen Adresse, um den Wert der
Seitenebenennummer auf dem Bus zum Speichern der neuen virtuellen
Adresse in einer der Stellen des ersten inhaltsadressierbaren Speichers zu
erzeugen, der durch den Wert der Seitenebenennummer gegeben ist,
wobei ein erneutes Laden der gleichen Seite eliminiert wird und die
Abbildung von zwei virtuellen Adressen in die gleiche physikalische
Adresse verhindert wird.
4. Cachespeicher nach Anspruch 3, wobei der Cachespeicher weiterhin
ein Abhörregister und Dekodiereinrichtungspaare gemeinsam mit dem
Hauptspeicher einschließt, um Schreibanforderungen einschließlich der
physikalischen Adressen im Hauptspeicher zu empfangen, in die die
Information geschrieben werden soll, wobei die
Abhörregistereinrichtung mit dem zweiten inhaltsadressierbaren Speicher gekoppelt ist
und als Antwort auf jede empfangene Schreibanforderung betrieben
wird, um den zweiten inhaltsadressierbaren Speicher zu
konditionieren, einen Wert einer Seitenebenennummer nach Erfassung eines
Vergleichs zwischen der physikalischen Adresse der
Schreibanforderung und irgendeiner physikalischen Adresse zu erzeugen zur
Aufrechterhaltung der Widerspruchsfreiheit zwischen den Inhalten des
Hauptspeichers und des Cachespeichers.
5. Cachespeicher nach Anspruch 4, wobei der erste direkt adressierbare
Direktzugriffsspeicher mit der Abhörregistereinrichtung und mit dem
zweiten inhaltsadressierbaren Speicher koppelt, wobei der zweite
inhaltsadressierbare Speicher betrieben ist, um ein Treffersignal zu
erzeugen, um den Vergleich zu signalisieren, den ersten direkt
adressierbaren Direktzugriffsspeicher zu konditionieren, den gültigen
Bitanzeiger des Blocks ungültig zu machen, der durch die
physikalische Adresse der Abhörregistereinrichtung gegeben ist und der an
einer Ebene angeordnet ist, der durch die an den Bus angelegte
Seitenebenennummer gegeben ist.
6. Cachespeicher nach Anspruch 1, wobei der Cachespeicher eine
Ersetzeinrichtung einschließt zum Erzeugen von Werten von
Seitenebenennummern, wobei die Ersetzeinrichtung mit dem ersten
inhaltsadressierbaren Speicher und mit dem gemeinsamen internen Bus
gekoppelt ist, wobei die Ersetzeinrichtung als Antwort auf ein Signal
betrieben ist, das von dem ersten inhaltsadressierbaren Speicher
konditioniert ist, das die Abwesenheit einer Trefferbedingung anzeigt,
um einen Wert einer Seitenebenennummer an den Bus anzulegen
zum Angeben, wo die Information betreffend der neuen Seite
geschrieben werden soll in unterschiedliche der inhaltsadressierbaren
Speicher und der direktadressierbaren Direktzugriffsspeicher.
7. Cachespeicher nach Anspruch 6, wobei ein zweiter der direkt
adressierbaren Direktzugriffsspeicher Datenwörter von wenigstens einer
Vielzahl von Datenblöcken von jeder der Vielzahl den Seiten
zugeordneten Speicherstellen speichert und wobei ein dritter der direkt
adressierbaren Direktzugriffsspeicher weiterhin Speicherstellen
einschließt, die geschriebene Bitanzeiger enthalten zum Bezeichnen
irgendwelcher Blöcke von jeder Seite, die in den dritten der
direktadressierbaren
Direktzugriffsspeicher geschrieben worden sind, und
wobei die Cachesteuereinrichtung bei der Abwesenheit der
Trefferbedingung betrieben ist, um eine Operation an der Seite
auszuführen, die jeden vorher geschriebenen Block, die durch die
geschriebenen Bitanzeiger bezeichnet werden, veranlaßt, aus dem zweiten
direkt adressierbaren Direktzugriffsspeicher zur Übertragung auf den
Hauptspeicher ausgelesen zu werden, um eine neue Seite zu
befähigen, den gleichen Speicherstellen innerhalb des zweiten Speichers
zugewiesen zu werden.
8. Cachespeicher nach Anspruch 1, wobei die Hauptspeicheradresse eine
virtuelle Adresse ist und die ersten inhaltsadressierbaren
Speicherstellen Seiten virtueller Adressen enthalten, die identifizieren,
welchen der Hauptspeicherseiten Speicherstellen in dem Cachespeicher
zugewiesen worden sind;
wobei der Cachespeicher weiterhin eine Übersetzungseinrichtung für
virtuelle Speicheradressen einschließt, die gekoppelt ist, um die
Hauptspeicheradresse von der Verarbeitungseinheit zu empfangen,
wobei die Übersetzung der virtuellen Adresse in eine physikalische
Adresse ermöglicht wird, um die Abfrage des ersten
inhaltsadressierbaren Speichers zur Bestimmung der Anwesenheit der
Trefferbedingung und die Erzeugung des Wertes einer Seitenebenennummer zum
Zugreifen auf die angeforderten Informationswörter zu überlappen.
ANHANG A
Fig. 6a
Element 600: Einschalten
Element 602: Initialisieren
Element 604: Neue Adresse
Element 608: Schreibe Benachrichtigung Abhören
Fig. 6b
Element 608: Abhören
Element 608-2: Schreibe in Speicher?
Element 608-4: Befrage PA-CAM mit der Seitenrahmennummer des
Geschriebenen, welches im Abhörregister aufgenommen ist.
Element 608-6: PA CAM Abhörtreffer?
Element 608-8: Unter Verwendung der PAC-Seitentreffer-Ebennummer und des
Blocknummerabschnitts des Abhörregisters mache diesen Element
in der Blockvalidiermatrix ungültig.
Element 602: Initialisieren
Element 602-2: Lösche Cache-Adreß-CAM, Seitenrahmen-CAM,
Blockmarkierungsmatrix und Seitenmarkenmatrix unter Verwendung der
Löschleitung.
Element 602-2: Lösche D-Cache-Adreßregister (Seite und Offset).
Element 602-4: Setze anfängliche Ebenen in der LRU von 0 bis 31 auf, wobei
31 die zuletzt verwendete und 0 die älteste ist.
Element 602-8: PCU-Datenanforderung?
Element 604: Neue Adresse
Element 604-16: Neue Adresse Ende
Element 608: Abhören
Blatt 2 von Fig. 6b
Element 604: Neue Adresse
Element 604-2: Lade Variablen-Register, befrage CAC unter Verwendung der
effektiven Seitennummer (EPN) von dem Variablen-Register.
Element 604-4: CAC Treffer?
Element 604-6: Lade D-Cache-Adreßregister mit Cacheadresse
[CAC-Trefferebenennummer: Offset]; Prüfe, ob Element gültig ist; Lade Offset-
Register vom Variablen-Register.
Element 604-8: Block gültig?
Element 605: Seite verfehlen
Element 605-22: Seite verfehlen Ende
Element 606: Block verfehlen
Element 606-10: Block verfehlen Ende
Element 604-10: Lese ?
Element 609: Schreibe
Element 604-12: Lese D-Cache-Daten vom RAM unter Verwendung der Cache-
Adresse; Lade in E-Einheit Datenregister; inkrementiere Offset-
Register um 1.
Element 604-18: Offset-Überlauf
Element 604-14: Ist Lesen abgeschlossen?
Element 604-16: Neue Adresse Ende
Blatt 3 von Fig. 6b
Element 606: Block verfehlen
Element 605: Seite verfehlen
Element 606-2: Unter Verwendung der Seitenebenennummer von der Cache-
Adresse, Lese die Seitenrahmennummer von dem Seitenrahmen-
RAM.
Element 606-4: Verwende die Seitenebenennummer verknüpft mit der
Blocknummer des fehlenden Blocks als eine Basisadresse und den
Wortzähler, um den fehlenden Block vom Hauptspeicher zu
adressieren und zu lesen.
Element 606-6: Schreibe den geholten Block in den D-Cache-RAM bei der
Seitenebenennummer und Blocknummer des fehlenden Blocks.
Element 606-8: Setze das Validierbit der Blocknummer in der
Blockvalidiermatrix.
Element 605-2: Cache-Adresse ist auf Ersetzebene gesetzt: Offset.
Element 605-4: VMMU erzeugt eine Seitenrahmennummer einer physischen
Adresse.
Element 605-6: Prüfe nach einem virtuellen Synonym durch Prüfen des
Seitenrahmen-CAM nach einem Treffer unter Verwendung der neuen
Seitenrahmennummer als Daten.
Element 605-10: Cache-Adresse ist auf PAC-Trefferebene gesetzt: Offset; Lade
CAC mit AR-Register-EPN; Setze CAC-Validierbit auf PAC-
Seitenebenennummer.
Element 605-20: Kopiere Privat-Bit vom Segmentdeskriptor in der VMMU und
das Modifizierbit von der VMMU in die Seitenmarkierungsmatrix
an der Ebenennummer, die durch die LRU bereitgestellt ist.
Element 605-8: Seitenrahmen-CAM-Treffer
Element 605-12: Siphon Alte Seite
Element 605-16: Speichere neue Seitenrahmennummer in den PAR-PAC-Speichern
bei der LRU-Seitenebenennummer.
Element 605-18: Speichere EPN-Adresse von AR-Register im CAC-Speicher bei
der LRU-Seitenebenennummer und setze CAC-Validierbit.
Element 614: Siphon-Alte-Seite
Element 605-22: Seite verfehlen Ende
Element 606-10: Block verfehlen Ende
Blatt 4 von Fig. 6b
Element 616: Lösche Seitenrahmennummer
Element 609: Schreiben
Element 616-2: Sichere Seitenrahmennummer und befrage PF-CAM unter
Verwendung dieser als Daten.
Element 609-2: Schreibe DBL-Wort in D-Cache-RAM unter Verwendung der
Cache-Adresse von CAC/LRU; Lese Seitenmodifizierbit von der
Seitenmarkierungmatrix unter Verwendung der
Cache-Seitenebenennummer als Adresse.
Element 616-4: Seitenrahmennummer gefunden?
Element 616-6: Zurück
Element 609-4: Modifizierbit ein?
Element 616-8: Unter Verwendung der PAC-Seitentreffernummer, mache diese
Ebene in sowohl dem CAC als auch dem PAC-Speicher ungültig.
Element 610: Setze modifiziert
Element 610-10: Setze modifiziert Ende
Element 609-6: Lese Privat-Bit von der Seitenmarkierungmatrix unter Verwendung
der Cache-Seitenebenennummer als Adresse.
Element 616-10: Zurück
Element 609-8: Privatbit ein?
Element 609-10: Unter Verwendung der Seitenebenennummer und der
Blocknummer vom AR-Register, Setze das Schreibbit in der
Blockmarkierungsmatrix.
Element 609-12: Neue Adresse Ende
Blatt 5 von Fig. 6b
Element 610: Setze modifiziert
Element 610-2: Veranlasse, daß die VMMU den Seitendeskriptor vom
Hauptspeicher liest; Prüfe das Validierbit in dem Seitendeskriptor.
Element 610-4: Seitendescriptor gültig?
Element 610-6: Benachrichtige CPU über einen Seitenfehler
Element 610-8: Veranlasse, daß die VMMU den verwendeten Seitendeskriptor
und die Modifizierbits setzt und in den Hauptspeicher
zurückspeichert.
Element 610-10: Setze modifiziert Ende
Element 612-2: Unter Verwendung der Seitenebenennummer, hole
Seitenrahmennummer vom PA-RAM; Verknüpfe sie mit Offset, um eine
physische Adresse zu bilden; unter Verwendung der
Cache-Adresse, lese die D-Cache-RAM-Daten und unter Verwendung der
gerade erzeugten physischen Adresse, schreibe die Daten in den
Hauptspeicher.
Element 609-12: Neue Adresse Ende
Element 614-2: Unter Verwendung der Seitenebenennummer, hole die
Blocknummer für irgendeinen geschriebenen Block in diese Seite von
dem Prioritätscodierer innerhalb der Blockmarkierungmatrix.
Element 614-4: Irgendwelche Schreibbits ein?
Element 614-6: Zurück
Element 654-8: Verwende die Seitenebenennummer und die Schreibblocknummer,
um den D-Cache-RAM und den PA-RAM zu lesen.
Element 614-10: Unter Verwendung der Inhalte des Seitenrahmen-RAM und des
Wortzählers in der VMMU, schreibe den ganzen Block zurück in
den Hauptspeicher.
Element 614-12: Unter Verwendung der Seitenebenennummer und der
Schreibblocknummer setze das Schreibblockbit in der
Blockmarkierungmatrix zurück.
ANHANG B
Blatt 1 von Fig. 7b
Element 700: Einschalten
Element 702: Initialisieren
Element 708: Schreibe Benachrichtigung Abhören
Element 704: Neue Adresse
Element 708: Abhören
Element 708-2: Schreibe in Speicher?
Element 702-2: Lösche Cache-Adreß-CAM, Seitenrahmen-CAM und
Blockmarkenmatrix unter Verwendung der Löschleitung.
Element 702-4: Setze anfängliche Ebenen in dem LRU von 0 bis 31 auf, wobei
31 die zuletzt verwendete und 0 die älteste ist.
Element 702-6: Lösche I-Cache-Adreßregister (Seite und Offset).
Element 704-16: Neue Adresse Ende
Element 702-8: CPU Datenanforderung?
Element 708: Abhören
Element 708-4: Befrage PF-CAM mit der Seitenrahmennummer des
Geschriebenen, die in dem Abhörregister erfaßt ist.
Element 708-6: PF CAM Abhörtreffer?
Element 708-8: Unter Verwendung der PFC-Seitentreffer-Ebenennummer und des
Blocknummerabschnitts des Abhörregisters, mache diesen Block in
der Blockvalidiermatrix ungültig.
Blatt 2 der Fig. 7b
Element 704: Neue Adresse
Element 704-2: Lade Variablen-Register, befrage CAC unter Verwendung der
effektiven Seitennummer (EPN) von den Variablen-Registern.
Element 704-4: CAC Treffer?
Element 705: Seite verfehlen
Element 705-22: Seite verfehlen Ende
Element 704-6: Lade I-Cache-Adreßregister mit Cache-Adresse
[CAC-Trefferebenennummer: Offset]; Prüfe, ob Block gültig ist; Lade Offset-
Register von dem Variablen-Register.
Element 704-8: Block gültig?
Element 706: Block verfehlen
Element 706-10: Block verfehlen Ende
Element 704-12: Lese 1-Cache-Daten vom RAM unter Verwendung der Cache-
Adresse; Lade in die I-Einheit-Register; Inkrementiere
IAR-Register um 1.
Element 704-18: Offset-Überlauf?
Element 704-14: Ist Lesen abgeschlossen?
Element 704: Neue Adresse
Element 704-16: Neue Adresse Ende
Blatt 3 von Fig. 7b
Element 706: Block verfehlen
Element 706-2: Unter Verwendung der Seitenebenennummer von der Cache-
Adresse, lese die Seitenrahmennummer von dem Seitenrahmen-
RAM.
Element 706-4: Verwende die Seitenebenennummer verknüpft mit der
Blocknummer des fehlenden Blocks als eine Basisadresse und den
Wortzähler, um den fehlenden Block von dem Hauptspeicher in den
I-Cache-RAM zu adressieren und zu lesen.
Element 706-6: Schreibe den geholten Block in den I-Cache-RAM an der
Seitennummer und der Blocknummer des Verfehlens.
Element 706-8: Setze das Validierbit der Blocknummer in der
Blockvalidiermatrix.
Element 706-10: Block verfehlen Ende
Element 705: Seite verfehlen
Element 705-2: Cache-Adresse ist auf Ersetzebene gesetzt: Offset.
Element 705-4: VMMU erzeugt eine Seitenrahmennummer einer physischen
Adresse.
Element 705-6: Prüfe nach virtuellem Synonym durch Prüfen des Seitenrahmen-
CAM nach einem Treffer unter Verwendung der
Seitenrahmennummer als Daten.
Element 705-8: Seitenrahmen-CAM-Treffer?
Element 705-10: Cache-Adresse ist auf PFC-Trefferebene gesetzt: Offset; Lade
CAC mit EPN vom AR-Register; Setze CAC-Validierbit auf
PFC-Seitenebenennummer.
Element 705-22: Seite verfehlen Ende
Element 705-16: Speichere neue Seitenrahmennummer in den PFR- und PFC-
Speichern bei der LRU-Seitenebenennummer.
Element 705-18: Speichere EPN-Adresse vom AR-Register in den CAC-Speicher
an der LRU-Seitenebenennummer und setze CAC-Validierbit.
Element 705-22: Seite verfehlen Ende
Fig. 7c
Vom Systembus 12
Element 716: Lösche Seitenrahmennummer
Element 716-2: Sichere Seitenrahmennummer und befrage PF-CAM unter
Verwendung dieser als Daten.
Element 716-4: Seitenrahmennummer gefunden?
Element 716-16: Zurück
Element 716-8: Unter Verwendung der PAC-Seitentreffernummer, mache diese
Ebene in sowohl dem CAC- als auch dem PFC-Speicher ungültig.
Element 716-10: Zurück.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/811,044 US4785398A (en) | 1985-12-19 | 1985-12-19 | Virtual cache system using page level number generating CAM to access other memories for processing requests relating to a page |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3688192D1 DE3688192D1 (de) | 1993-05-06 |
DE3688192T2 true DE3688192T2 (de) | 1993-11-04 |
Family
ID=25205385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE86117604T Expired - Fee Related DE3688192T2 (de) | 1985-12-19 | 1986-12-17 | Seitenorganisierter cachespeicher mit virtueller adressierung. |
Country Status (7)
Country | Link |
---|---|
US (1) | US4785398A (de) |
EP (1) | EP0232526B1 (de) |
KR (1) | KR920005280B1 (de) |
AU (1) | AU595846B2 (de) |
CA (1) | CA1278101C (de) |
DE (1) | DE3688192T2 (de) |
ES (1) | ES2039351T3 (de) |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4972338A (en) * | 1985-06-13 | 1990-11-20 | Intel Corporation | Memory management for microprocessor system |
US4783735A (en) * | 1985-12-19 | 1988-11-08 | Honeywell Bull Inc. | Least recently used replacement level generating apparatus |
US4953073A (en) * | 1986-02-06 | 1990-08-28 | Mips Computer Systems, Inc. | Cup chip having tag comparator and address translation unit on chip and connected to off-chip cache and main memories |
JPS62194563A (ja) * | 1986-02-21 | 1987-08-27 | Hitachi Ltd | バツフア記憶装置 |
JPH0769868B2 (ja) * | 1986-09-25 | 1995-07-31 | 松下電器産業株式会社 | 高速アドレス変換装置 |
US5123101A (en) * | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5249276A (en) * | 1987-06-22 | 1993-09-28 | Hitachi, Ltd. | Address translation apparatus having a memory access privilege check capability data which uses mask data to select bit positions of priviledge |
US5119290A (en) * | 1987-10-02 | 1992-06-02 | Sun Microsystems, Inc. | Alias address support |
JPH0195347A (ja) * | 1987-10-08 | 1989-04-13 | Nec Corp | アドレス変換方式 |
JPH01112450A (ja) * | 1987-10-27 | 1989-05-01 | Sharp Corp | メモリ管理ユニット |
GB8728494D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Multi-cache data storage system |
US5003459A (en) * | 1988-04-01 | 1991-03-26 | Digital Equipment Corporation | Cache memory system |
DE3919802C2 (de) * | 1988-06-17 | 1997-01-30 | Hitachi Ltd | Speichersteuersystem für ein Multiprozessorsystem |
US5058006A (en) * | 1988-06-27 | 1991-10-15 | Digital Equipment Corporation | Method and apparatus for filtering invalidate requests |
GB8823077D0 (en) * | 1988-09-30 | 1988-11-09 | Int Computers Ltd | Data processing apparatus |
JPH0769865B2 (ja) * | 1988-10-08 | 1995-07-31 | 日本電気株式会社 | 情報処理装置 |
US5224217A (en) * | 1988-12-30 | 1993-06-29 | Saied Zangenehpour | Computer system which uses a least-recently-used algorithm for manipulating data tags when performing cache replacement |
CA1325288C (en) * | 1989-02-03 | 1993-12-14 | Ricky C. Hetherington | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system |
JPH0348951A (ja) * | 1989-07-18 | 1991-03-01 | Fujitsu Ltd | アドレスモニタ装置 |
US5077826A (en) * | 1989-08-09 | 1991-12-31 | International Business Machines Corporation | Cache performance in an information handling system employing page searching |
US5125085A (en) * | 1989-09-01 | 1992-06-23 | Bull Hn Information Systems Inc. | Least recently used replacement level generating apparatus and method |
US5148538A (en) * | 1989-10-20 | 1992-09-15 | International Business Machines Corporation | Translation look ahead based cache access |
CA2028085A1 (en) * | 1989-11-03 | 1991-05-04 | Dale J. Mayer | Paged memory controller |
GB2239724B (en) * | 1990-01-05 | 1993-11-24 | Sun Microsystems Inc | Apparatus for maintaining consistency in a multi-processor computer system using virtual caching |
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 |
US5450564A (en) * | 1990-05-04 | 1995-09-12 | Unisys Corporation | Method and apparatus for cache memory access with separate fetch and store queues |
US5317708A (en) * | 1990-06-29 | 1994-05-31 | Digital Equipment Corporation | Apparatus and method for an improved content addressable memory |
JPH04233642A (ja) * | 1990-07-27 | 1992-08-21 | Dell Usa Corp | キャッシュアクセスと並列的にメモリアクセスを行なうプロセッサ及びそれに用いられる方法 |
US5283876A (en) * | 1990-10-05 | 1994-02-01 | Bull Hn Information Systems Inc. | Virtual memory unit utilizing set associative memory structure and state machine control sequencing with selective retry |
US5193170A (en) * | 1990-10-26 | 1993-03-09 | International Business Machines Corporation | Methods and apparatus for maintaining cache integrity whenever a cpu write to rom operation is performed with rom mapped to ram |
EP0488566A3 (en) * | 1990-11-29 | 1992-10-21 | Sun Microsystems, Inc. | Method and apparatus for fast page mode selection |
JP3015493B2 (ja) * | 1991-04-26 | 2000-03-06 | 株式会社東芝 | 半導体連想記憶装置 |
JPH0520197A (ja) * | 1991-07-09 | 1993-01-29 | Hitachi Ltd | 記憶管理システム及びマイクロプロセツサ |
JP3065736B2 (ja) * | 1991-10-01 | 2000-07-17 | 松下電器産業株式会社 | 半導体記憶装置 |
GB2260429B (en) * | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
US5584017A (en) * | 1991-12-19 | 1996-12-10 | Intel Corporation | Cache control which inhibits snoop cycles if processor accessing memory is the only processor allowed to cache the memory location |
GB9205551D0 (en) * | 1992-03-13 | 1992-04-29 | Inmos Ltd | Cache memory |
US5428759A (en) * | 1992-03-30 | 1995-06-27 | Unisys Corporation | Associative memory system having segment and page descriptor content-addressable memories |
US5603011A (en) * | 1992-12-11 | 1997-02-11 | International Business Machines Corporation | Selective shadowing and paging in computer memory systems |
US5426602A (en) * | 1993-03-31 | 1995-06-20 | Mentor Graphics Corporation | Detection of multiple hits within a device having multiple sense outputs |
US5640534A (en) * | 1994-10-05 | 1997-06-17 | International Business Machines Corporation | Method and system for concurrent access in a data cache array utilizing multiple match line selection paths |
US5890221A (en) * | 1994-10-05 | 1999-03-30 | International Business Machines Corporation | Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit |
US5682495A (en) * | 1994-12-09 | 1997-10-28 | International Business Machines Corporation | Fully associative address translation buffer having separate segment and page invalidation |
US6006312A (en) * | 1995-02-27 | 1999-12-21 | Sun Microsystems, Inc. | Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses |
US5897651A (en) * | 1995-11-13 | 1999-04-27 | International Business Machines Corporation | Information handling system including a direct access set associative cache and method for accessing same |
US5995967A (en) * | 1996-10-18 | 1999-11-30 | Hewlett-Packard Company | Forming linked lists using content addressable memory |
US6148364A (en) * | 1997-12-30 | 2000-11-14 | Netlogic Microsystems, Inc. | Method and apparatus for cascading content addressable memory devices |
US6199140B1 (en) * | 1997-10-30 | 2001-03-06 | Netlogic Microsystems, Inc. | Multiport content addressable memory device and timing signals |
US6219748B1 (en) | 1998-05-11 | 2001-04-17 | Netlogic Microsystems, Inc. | Method and apparatus for implementing a learn instruction in a content addressable memory device |
US6240485B1 (en) | 1998-05-11 | 2001-05-29 | Netlogic Microsystems, Inc. | Method and apparatus for implementing a learn instruction in a depth cascaded content addressable memory system |
US6381673B1 (en) | 1998-07-06 | 2002-04-30 | Netlogic Microsystems, Inc. | Method and apparatus for performing a read next highest priority match instruction in a content addressable memory device |
US6499081B1 (en) | 1999-02-23 | 2002-12-24 | Netlogic Microsystems, Inc. | Method and apparatus for determining a longest prefix match in a segmented content addressable memory device |
US6539455B1 (en) | 1999-02-23 | 2003-03-25 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a ternary content addressable memory device |
US6574702B2 (en) | 1999-02-23 | 2003-06-03 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a content addressable memory device |
US6460112B1 (en) | 1999-02-23 | 2002-10-01 | Netlogic Microsystems, Llc | Method and apparatus for determining a longest prefix match in a content addressable memory device |
US6892272B1 (en) | 1999-02-23 | 2005-05-10 | Netlogic Microsystems, Inc. | Method and apparatus for determining a longest prefix match in a content addressable memory device |
US6137707A (en) * | 1999-03-26 | 2000-10-24 | Netlogic Microsystems | Method and apparatus for simultaneously performing a plurality of compare operations in content addressable memory device |
CN100384180C (zh) * | 1999-06-30 | 2008-04-23 | 倾向探测公司 | 用于监控网络流量的方法和设备 |
US6763425B1 (en) * | 2000-06-08 | 2004-07-13 | Netlogic Microsystems, Inc. | Method and apparatus for address translation in a partitioned content addressable memory device |
US6934795B2 (en) | 1999-09-23 | 2005-08-23 | Netlogic Microsystems, Inc. | Content addressable memory with programmable word width and programmable priority |
US7143231B1 (en) | 1999-09-23 | 2006-11-28 | Netlogic Microsystems, Inc. | Method and apparatus for performing packet classification for policy-based packet routing |
US7110407B1 (en) | 1999-09-23 | 2006-09-19 | Netlogic Microsystems, Inc. | Method and apparatus for performing priority encoding in a segmented classification system using enable signals |
US7487200B1 (en) | 1999-09-23 | 2009-02-03 | Netlogic Microsystems, Inc. | Method and apparatus for performing priority encoding in a segmented classification system |
US7272027B2 (en) | 1999-09-23 | 2007-09-18 | Netlogic Microsystems, Inc. | Priority circuit for content addressable memory |
US6944709B2 (en) | 1999-09-23 | 2005-09-13 | Netlogic Microsystems, Inc. | Content addressable memory with block-programmable mask write mode, word width and priority |
US6567340B1 (en) | 1999-09-23 | 2003-05-20 | Netlogic Microsystems, Inc. | Memory storage cell based array of counters |
US6751720B2 (en) | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy |
US6784892B1 (en) | 2000-10-05 | 2004-08-31 | Micron Technology, Inc. | Fully associative texture cache having content addressable memory and method for use thereof |
US6983318B2 (en) * | 2001-01-22 | 2006-01-03 | International Business Machines Corporation | Cache management method and system for storing dynamic contents |
US6556466B2 (en) * | 2001-04-26 | 2003-04-29 | International Business Machines Corporation | Method and structure for a CAMRAM cache memory |
KR100518576B1 (ko) * | 2003-05-24 | 2005-10-04 | 삼성전자주식회사 | 버스 중재기 및 버스 중재방법 |
US7809888B1 (en) * | 2004-09-29 | 2010-10-05 | Emc Corporation | Content-aware caching techniques |
US20080189487A1 (en) * | 2007-02-06 | 2008-08-07 | Arm Limited | Control of cache transactions |
US7996534B2 (en) * | 2008-10-09 | 2011-08-09 | Axiometric, Llc | File distribution in wireless networks |
US10394558B2 (en) | 2017-10-06 | 2019-08-27 | International Business Machines Corporation | Executing load-store operations without address translation hardware per load-store unit port |
US10572256B2 (en) | 2017-10-06 | 2020-02-25 | International Business Machines Corporation | Handling effective address synonyms in a load-store unit that operates without address translation |
US10606590B2 (en) | 2017-10-06 | 2020-03-31 | International Business Machines Corporation | Effective address based load store unit in out of order processors |
US10417002B2 (en) | 2017-10-06 | 2019-09-17 | International Business Machines Corporation | Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses |
US10606591B2 (en) | 2017-10-06 | 2020-03-31 | International Business Machines Corporation | Handling effective address synonyms in a load-store unit that operates without address translation |
US11175924B2 (en) | 2017-10-06 | 2021-11-16 | International Business Machines Corporation | Load-store unit with partitioned reorder queues with single cam port |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3618040A (en) * | 1968-09-18 | 1971-11-02 | Hitachi Ltd | Memory control apparatus in multiprocessor system |
US3601812A (en) * | 1969-01-22 | 1971-08-24 | Rca Corp | Memory system |
US3723976A (en) * | 1972-01-20 | 1973-03-27 | Ibm | Memory system with logical and real addressing |
US3848234A (en) * | 1973-04-04 | 1974-11-12 | Sperry Rand Corp | Multi-processor system with multiple cache memories |
US4453230A (en) * | 1977-12-29 | 1984-06-05 | Tokyo Shibaura Electric Co., Ltd. | Address conversion system |
US4264953A (en) * | 1979-03-30 | 1981-04-28 | Honeywell Inc. | Virtual cache |
US4467414A (en) * | 1980-08-22 | 1984-08-21 | Nippon Electric Co., Ltd. | Cashe memory arrangement comprising a cashe buffer in combination with a pair of cache memories |
DE3177181D1 (de) * | 1980-11-10 | 1990-06-21 | Ibm | Anordnung zur erkennung und verarbeitung von synonymen in cache-speichern. |
US4481573A (en) * | 1980-11-17 | 1984-11-06 | Hitachi, Ltd. | Shared virtual address translation unit for a multiprocessor system |
JPS5898893A (ja) * | 1981-12-09 | 1983-06-11 | Toshiba Corp | 情報処理装置 |
US4493026A (en) * | 1982-05-26 | 1985-01-08 | International Business Machines Corporation | Set associative sector cache |
US4612612A (en) * | 1983-08-30 | 1986-09-16 | Amdahl Corporation | Virtually addressed cache |
US4669043A (en) * | 1984-02-17 | 1987-05-26 | Signetics Corporation | Memory access controller |
-
1985
- 1985-12-19 US US06/811,044 patent/US4785398A/en not_active Expired - Lifetime
-
1986
- 1986-12-12 AU AU66478/86A patent/AU595846B2/en not_active Ceased
- 1986-12-17 ES ES198686117604T patent/ES2039351T3/es not_active Expired - Lifetime
- 1986-12-17 EP EP86117604A patent/EP0232526B1/de not_active Expired - Lifetime
- 1986-12-17 DE DE86117604T patent/DE3688192T2/de not_active Expired - Fee Related
- 1986-12-18 CA CA000525688A patent/CA1278101C/en not_active Expired - Lifetime
- 1986-12-19 KR KR1019860010922A patent/KR920005280B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
AU595846B2 (en) | 1990-04-12 |
DE3688192D1 (de) | 1993-05-06 |
US4785398A (en) | 1988-11-15 |
CA1278101C (en) | 1990-12-18 |
KR870006471A (ko) | 1987-07-11 |
EP0232526A3 (en) | 1989-08-30 |
EP0232526B1 (de) | 1993-03-31 |
KR920005280B1 (ko) | 1992-06-29 |
ES2039351T3 (es) | 1993-10-01 |
AU6647886A (en) | 1987-06-25 |
EP0232526A2 (de) | 1987-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE3750107T2 (de) | Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt. | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE3689488T2 (de) | Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher. | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE68911398T2 (de) | Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem. | |
DE69030945T2 (de) | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69721368T2 (de) | Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher | |
DE3587960T2 (de) | Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät. | |
DE3486161T2 (de) | Datenverarbeitungssystem mit Datenkohärenz. | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE3886182T2 (de) | Mehrcachedatenspeicheranordnung. | |
DE69025302T2 (de) | Hochleistungsrasterpuffer- und -cachespeicheranordnung | |
DE69029173T2 (de) | Mikroprozessor | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE2241257B2 (de) | Datenverarbeitende Anlage | |
DE69109803T2 (de) | Verfahren und Vorrichtung zur Aufrechterhaltung der Integrität eines Cachespeichers. | |
DE3102150A1 (de) | "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage | |
DE112008001666T5 (de) | Hierarchische Cache-Tag-Architektur | |
DE69626070T2 (de) | Verfahren und Vorrichtung zum Etikettieren eines Mehrweg-assoziativen Cache-Speichers | |
DE3873388T2 (de) | Cache-speicher. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: BULL HN INFORMATION SYSTEMS INC., BILLERICA, MASS. |
|
8339 | Ceased/non-payment of the annual fee |