DE3586524T2 - Durch beide, physikalische und virtuelle addressen, addressierbarer cache-speicher. - Google Patents
Durch beide, physikalische und virtuelle addressen, addressierbarer cache-speicher.Info
- Publication number
- DE3586524T2 DE3586524T2 DE8585307393T DE3586524T DE3586524T2 DE 3586524 T2 DE3586524 T2 DE 3586524T2 DE 8585307393 T DE8585307393 T DE 8585307393T DE 3586524 T DE3586524 T DE 3586524T DE 3586524 T2 DE3586524 T2 DE 3586524T2
- Authority
- DE
- Germany
- Prior art keywords
- address
- data
- virtual
- physical
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 claims description 256
- 230000004044 response Effects 0.000 claims description 10
- 238000000034 method Methods 0.000 claims description 8
- 230000002457 bidirectional effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 9
- 102100039164 Acetyl-CoA carboxylase 1 Human genes 0.000 description 6
- 101710190443 Acetyl-CoA carboxylase 1 Proteins 0.000 description 6
- 102100021641 Acetyl-CoA carboxylase 2 Human genes 0.000 description 6
- 101000677540 Homo sapiens Acetyl-CoA carboxylase 2 Proteins 0.000 description 6
- 101000894929 Homo sapiens Bcl-2-related protein A1 Proteins 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect 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
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung betrifft allgemein Cache-Speicher und insbesondere die Adressierbarkeit eines Cache-Speichers sowohl mittels einer physikalischen als auch mittels einer virtuellen Adresse.
- Bei modernen Computersystemen verwendet man Cache-Speicher- Systeme, um das System in die Lage zu versetzen, bei einer viel höheren Ausführungsgeschwindigkeit mit den großen Speicherkapazitäten, die Hauptspeicher unterstützen können, zu arbeiten. Der Cache-Speicher speichert eine begrenzte Anzahl von Befehlen oder Datenworten, auf die mittels einer zentralen Recheneinheit schnell zugegriffen wird. Bei der Erfassung von Daten oder Befehlen vom Speicher wird zunächst der Cache- Speicher daraufhin untersucht, ob die Information darin verfügbar ist. Falls die Information darin gespeichert ist, wird sie aus dem Cache-Speicher gelesen; andernfalls wird sie aus dem Hauptspeicher gelesen. Wenn die Information aus dem Hauptspeicher gelesen werden muß, wird diese neue Information im Cache-Speicher gespeichert, und sie ersetzt eine darin bereits vorhandene Information. Um die zu ersetzende Information im Cache-Speicher zu bestimmen, wird festgestellt, auf welche der im Cache-Speicher gespeicherten Daten oder Befehle am längsten nicht mehr zugegriffen wurde oder welche "am längsten nicht benutzt" wurden. Aufgrund dieses Vorgehens werden die am häufigsten benutzten Daten oder Befehle statistisch im Cache-Speicher verfügbar sein, wodurch die Ausführungsgeschwindigkeit eines gegebenen Systems erhöht wird.
- Beim Einsatz eines Systems, das auf der geringsten Aktualität beruht, ist es notwendig, den Vorrang zwischen den verschiedenen Registern im gegebenen Cache-Speicher zu bestimmen. Es gibt verschiedene, bereits angewandte Verfahren, um dies auszuführen, etwa dasjenige aus dem US-Patent Nr. 4 458 310, auf den Namen Shin-Jeh Chang erteilt und auf die AT&T Bell-Laboratorien übertragen. Es ist im wesentlichen erforderlich, zusätzlichen Speicher zum Speichern der dem Vorrang der verschiedenen Datenregister entsprechenden Information einzusetzen. Dies wird durch Zeiger oder dergleichen möglich gemacht. Allerdings hat sich die Verwirklichung von Systemen auf der Grundlage der geringsten Aktualität als schwierig erwiesen, und sie erfordert einen umfangreichen Schaltungsaufwand und zeitraubende Verarbeitungstechniken.
- Neben der Bestimmung des Vorrangs einer gegebenen Speicherstelle in einem Cache-Speicher ist auch das Adressieren eines Cache-Speichers problematisch, wenn es bei einem System mehrerer Prozessoren mit mehreren Cache-Speichern angewandt wird. Bei einem derartigen System arbeiten der Hauptspeicher und die Cache-Speicher in einem physikalisch adressierenden Zustand, wohingegen die mehreren Prozessoren in einem virtuell adressierenden Zustand arbeiten. Daher muß ein Prozessor eine Übersetzung von virtueller zu physikalischer Adressierung vornehmen, um auf seinen zugeordneten Cache-Speicher zuzugreifen. Dies stellt insofern einen Nachteil dar, als es zur Durchführung dieser Übersetzung eines vorbestimmten Umfangs an Rechenzeit bedarf, was die Ausführungsgeschwindigkeit herabsetzen kann. Daher besteht ein Bedarf nach einem Cache-Speicher, der sowohl die virtuellen als auch die physikalischen Adressen erkennt, so daß beide Arten von Adressen direkt bei einem Cache-Speicher benutzt werden können, was die Übersetzungszeit virtuell zu physikalisch beseitigt.
- Bei der Herstellung von Cache-Speichern ist es notwendig, daß sämtliche Speicherstellen, auf die zugegriffen werden kann, betriebsfähig sind, damit beim Einbau des Speichers in ein System keine Fehler eingebracht werden. Zwar kann eine fehlerhafte Stelle in einer N-Weg-Assoziativgruppe geduldet werden; es ist aber zunächst erforderlich, diese fehlerhafte Stelle zu inaktivieren, so daß ein Versuch, Daten darin zu speichern oder Daten daraus zu lesen, nicht unternommen wird. Dies wird nach dem Stand der Technik ermöglicht, indem beim Einschalten eines Systems ermittelt wird, welches Datenregister fehlerhaft ist, und indem diese Information in einem Speicher gespeichert wird. Man verwendet dann einen Schaltungsteil, um einen Zugriff auf den fehlerhaften Teil des Cache-Speichers zu verhindern. Ein derartiges System ist in Architecture of a VLSI Instruction Cache for a RISC, Patterson et. al, 10th International Symposium on COMPUTER ARCHITECTURE, 13.-16. Juni 1983 beschrieben. Dies erfordert jedoch einen komplizierten Schaltungsaufbau und eine Durchprüfung des Systems vor seiner Aktivierung.
- Im Hinblick auf die obigen Unzulänglichkeiten besteht ein Bedarf nach einer Architektur, die es einem System ermöglicht, sowohl über physikalische als auch über virtuelle Adressen direkt mit einem Cache-Speicher zu kommunizieren und außerdem in einer zuverlässigen und wirkungsvollen Weise festzustellen, welches Datenregister in einem gegebenen Cache-Speicher dasjenige ist, auf das am längsten nicht mehr zugegriffen wurde.
- Im IBM Technical Disclosure Bulletin, Vol. 21, Nr. 11, April 1979, Seite 4541, ist ein Betriebssystem für einen Cache- Speicher beschrieben, bei dem für jeden Eintrag im Cache- Speicher eine virtuelle Kennung und eine reale Kennung im Cache-Dateiverzeichnis gespeichert werden. Wenn die VPU eine Speicheradresse erzeugt, wird eine virtuelle Kennung abgeleitet und das Cache-Dateiverzeichnis nach einem Gegenstück durchsucht. Wenn ein Gegenstück gefunden wird, wird der Eintrag aus dem Cache-Speicher gelesen. Wenn kein Gegenstück gefunden wird, wird die entsprechende reale Kennung aus einer Übersetzungstabelle gewonnen und das Cache-Dateiverzeichnis noch einmal nach der realen Kennung durchsucht. Wenn kein Gegenstück zu der realen Kennung gefunden wird, wird dann der angeforderte Block von Daten vom Hauptspeicher in den Cache- Speicher übertragen, und die adressierten Daten werden ausgelesen. Wenn andererseits ein Gegenstück zu der realen Kennung im Cache-Dateiverzeichnis gefunden wird, wird der Eintrag aus dem Cache-Speicher gelesen, und die Identität der virtuellen Kennung im Dateiverzeichnis wird so geändert, daß sie zu derjenigen paßt, die von der mittels der CPU erzeugten Speicheradresse abgeleitet ist.
- Mit der vorliegenden Erfindung wird ein Cache-Speicher geschaffen, der sowohl mittels virtueller als auch mittels physikalischer Adressen adressierbar ist, mit:
- einer Buseinrichtung zum Empfangen einer Adresse aus einer externen Quelle, welche gewünschte Daten darstellt, wobei die Adressen einen LSB-Teil und einen Kennungsteil aufweisen, wobei der LSB-Teil aus einer vorbestimmten Anzahl von niederwertigen Bits der Adresse und der Kennungsteil aus den verbleibenden Bits der Adresse gebildet ist und wobei den Daten sowohl eine physikalische als auch eine virtuelle Adresse zugeordnet ist;
- einem Cache-Datenspeicher, der durch den LSB-Teil der empfangenen Adresse adressierbar ist, um Auswahldaten darin an LSB- Adressenstellen zu speichern, wobei diese LSB-Adressenstellen dem LSB-Teil der den Auswahldaten zugeordneten Adresse entsprechen;
- einem Virtuelle-Kennungs-Speicher, der durch den LSB-Teil der empfangenen Adresse adressierbar ist, um den Kennungsteil der den Auswahldaten zugeordneten virtuellen Adresse an LSB- Adressenstellen zu speichern, die dem LSB-Teil des gespeicherten virtuellen Kennungsteils entsprechen;
- einem Physikalische-Kennungs-Speicher, der durch den LSB-Teil der empfangenen Adresse adressierbar ist, um den Kennungsteil der den Auswahldaten zugeordneten physikalischen Adresse an LSB-Adressenstellen zu speichern, die dem LSB-Teil des gespeicherten physikalischen Kennungsteils entsprechen;
- wobei der Cache-Speicher die Auswahldaten ansprechend auf die Adressierung der empfangenen Adresse durch den LSB-Teil ausgibt und der Virtuelle- sowie der Physikalische-Kennungs- Speicher den Kennungsteil der virtuellen bzw. der physikalischen Adressen ausgeben, die den Auswahldaten entsprechen, welche der Cache-Speicher ansprechend auf die Adressierung durch den LSB-Teil der empfangenen Adresse ausgibt;
- gekennzeichnet durch:
- die Tatsache, daß der LSB-Teil der virtuellen Adresse völlig mit dem der physikalischen Adresse übereinstimmt;
- eine an die Buseinrichtung angeschlossene Arbitriereinrichtung, um festzustellen, ob die empfangene Adresse eine physikalische oder eine virtuelle Adresse ist, und um ein Steuersignal in einem ersten Zustand auszugeben, wenn die empfangene Adresse eine virtuelle Adresse ist, und in einem zweiten Zustand auszugeben, wenn die empfangene Adresse eine physikalische Adresse ist;
- eine durch das Steuersignal gesteuerte Multiplexer-Einrichtung, die über eine Schnittstelle mit dem Virtuelle- sowie mit dem Physikalische-Kennungs-Speicher verbunden ist, um den virtuellen Kennungsteil ansprechend auf den ersten Zustand und den physikalischen Kennungsteil ansprechend auf den zweiten Zustand auszugeben;
- einen Komparator zum Vergleichen des virtuellen oder des physikalischen Kennungsteils, der durch die Multiplexereinrichtung ausgegeben wird, mit dem Kennungsteil der empfangenen Adresse; und
- einen Schalter, der mit dem Ausgang des Cache-Speichers verbunden ist und durch den Komparator gesteuert wird, um die Adreßdaten des Cache-Speichers auszugeben, wenn der Komparator eine Übereinstimmung feststellt.
- Mit der vorliegenden Erfindung wird ferner ein Verfahren zum Adressieren eines Cache-Datenspeichers sowohl mit virtuellen als auch mit physikalischen Adressen geschaffen, umfassend:
- das Empfangen einer Adresse für gewünschte Daten aus einer externen Quelle, wobei die den Daten zugeordneten Adressen einen LSB-Teil und einen Kennungsteil aufweisen, wobei der LSB-Teil eine vorbestimmte Anzahl von niederwertigen Bits und der Kennungsteil die verbleibenden Bits umfaßt und wobei Daten sowohl einer physikalischen als auch einer virtuellen Adresse zugeordnet sind;
- das Speichern von Cache-Daten an Speicherstellen, die durch den LSB-Teil der empfangenen Adresse adressierbar sind, wobei die LSB-Adressenstellen dem LSB-Teil der den gespeicherten Daten zugeordneten Adresse entsprechen; und
- das Speichern der Kennungsteile der physikalischen und der virtuellen Adressen, die den gespeicherten Cache-Daten zugeordnet sind, wobei die gespeicherten physikalischen und virtuellen Kennungsteile durch den LSB-Teil der empfangenen Daten adressierbar sind;
- dadurch gekennzeichnet, daß
- der LSB-Teil der virtuellen Adressen völlig übereinstimmt mit dem der physikalischen Adressen;
- der gespeicherte virtuelle Kennungsteil ausgewählt wird, wenn die empfangene Adresse virtuell ist, und der gespeicherte physikalische Kennungsteil ausgewählt wird, wenn die empfangene Adresse physikalisch ist;
- der empfangene Kennungsteil mit dem ausgewählten Kennungsteil verglichen wird; und
- Daten, die durch den empfangenen LSB-Teil der Adresse adressiert werden, aus dem Cache-Datenspeicher ausgegeben werden, wenn der Vergleich zwischen dem empfangenen Kennungsteil und dem ausgewählten Kennungsteil eine Übereinstimmung ergibt.
- Zwecks eines vollständigeren Verständnisses der vorliegenden Erfindung und ihrer Vorteile wird nun auf die nachstehende Beschreibung in Verbindung mit den anliegenden Zeichnungen Bezug genommen. In den Zeichnungen zeigt:
- Fig. 1 ein schematisches Diagramm eines erfindungsgemäßen Mehr-Prozessor-Systems, bei dem mehrere Prozessoren mit zugeordneten Cache-Speichern eingesetzt sind;
- Fig. 2 die Erfassung der virtuellen und der physikalischen Adressen im Kennungsspeicher für einen gegebenen Cache-Speicher;
- Fig. 3 den Kennungs- und Datenspeicher eines Cache-Speichers zur Erkennung sowohl von virtuellen als auch von physikalischen Adressen;
- Fig. 4 ein schematisches Blockdiagramm einer Assoziativgruppe von Cache-Speichern;
- Fig. 5 ein schematisches Blockdiagramm des LRU-Treibers; und
- Fig. 6 ein schematisches Diagramm eines Blocks des LRU- Treibers.
- In Figur 1, auf die nun Bezug genommen wird, ist ein Blockdiagramm eines Computersystems dargestellt, bei dem mehrere Mikroprozessoreinheiten mit zugeordneten Cache-Speichern verwendet sind. Das System tauscht über einen Bus 10, der von der als NU-Bus bezeichneten Art ist, Daten aus. Dies ist ein 32-Bit-Bus, der physikalische 32-Bit-Adressen überträgt. Man kann jedoch jedwede Art von Systembus verwenden. Ein Speicher 12 ist über einen Bus 14 mit dem NU-Bus 10 verbunden, und ein Speicher 16 ist über einen Verbindungs-Bus 18 ebenfalls mit dem Bus 10 verbunden. Mehrere weitere Speicher sind durch eine Folge punktierter Linien zwischen den Speichern 12 und 16 dargestellt. Bei jedem der Speicher 12 und 16 kann es sich um irgendeine Form eines Massenspeichers handeln, der eine physikalische Adresse verlangt, wenn man auf ihn zugreifen will.
- Ein Cache-Speicher 20 ist über einen Verbindungs-Datenbus 24 mit einer Bus-Schnittstelle 22 verbunden. Die Bus-Schnittstelle 22 und der Bus 10 sind über einen Verbindungs-Bus 26 miteinander verbunden. Der Cache-Speicher 20 ist ferner über einen Verbindungs-Bus 30 mit einem Prozessor 28 verbunden. Die auf dem Verbindungs-Bus 24 liegenden Adressen sind physikalische Adressen, während die auf dem Verbindungs-Bus 30 liegenden Adressen virtuelle Adressen sind, da der Prozessor 28 nur mit virtuellen Adressen eine Schnittstelle bildet.
- Der reale Eingang einer Einrichtung zur Übersetzung von virtuellen in reale Adressen (V/R-Übersetzer) 32 ist über einen Verbindungs-Bus 34 mit dem Verbindungs-Bus 24 verbunden, und ihr virtueller Eingang ist über einen Verbindungs-Bus 36 mit dem Verbindungs-Bus 30 verbunden. Der V/R-Übersetzer 32 ermöglicht es dem Prozessor 28, über die Bus-Schnittstellenschaltung 22 mit dem Datenbus 10 Daten auszutauschen.
- Im Betrieb werden vom Prozessor 28 ausgegebene virtuelle Adressen direkt mittels des Cache-Speichers 20 verarbeitet und mit ihm verglichen, um festzustellen, ob Daten darin gespeichert sind. Falls der Cache-Speicher 20 von dem Bus 10 adressiert ist, wird dem Cache-Speicher 20 auf dem Verbindungs-Bus 24 eine physikalische Adresse eingegeben, und es wird festgestellt, ob diese Daten im Cache-Speicher 20 gespeichert sind. Daher ist es nicht notwendig, vor einer Adressierung des Cache-Speichers 20 vom Prozessor 28 aus eine Übersetzung von einer virtuellen zu einer realen Adresse zu durchlaufen. Dies vermindert den Rechenzeitaufwand, da der Cache-Speicher 20 normalerweise vor dem Adressieren des Hauptspeichers adressiert wird.
- Zwar ist der V/R-Übersetzer 32 zum Adressieren des Cache- Speichers 20 nicht notwendig, er wird aber dafür benötigt, daß der Prozessor 28 physikalische Adressen direkt an den Bus 10 senden kann. Dies wird dann angewendet, wenn der Cache- Speicher 20 nicht adressiert ist, etwa wenn andere, periphere Tätigkeiten mittels des Prozessors 28 durchgeführt werden.
- Ein zweiter Cache-Speicher 38 ist über einen Verbindungs-Bus 42 mit einer Bus-Schnittstellenschaltung 40 verbunden, so daß er über einen Verbindungs-Bus 44 als Schnittstelle mit dem Bus 10 verbunden ist. Ferner ist der Cache-Speicher 38 über einen Verbindungs-Bus 48 mit einem Prozessor 46 verbunden, wobei der Prozessor 46 dem Prozessor 28 ähnlich ist. Der virtuelle Eingang eines V/R-Übersetzers 50 ist über einen Verbindungs-Bus 52 mit dem Verbindungs-Bus 48 verbunden, und sein realer Ausgang ist über einen Verbindungs-Bus 54 mit dem Verbindungs-Bus 42 verbunden, um physikalische Adressen dorthin zu senden. Der V/R-Übersetzer 50 ist dem V/R-Übersetzer 32 ähnlich, wobei beide mit Hilfe von Standartschaltungen verwirklicht sind.
- Das System der Figur 1 kann eine beliebige Anzahl von Hauptspeichern und eine beliebige Anzahl von Prozessoren mit zugeordneten Cache-Speichern aufweisen. Wenn ein System dieser Größe arbeitet, speichern die Cache-Speicher 20 und 38 Daten, die vom statistischen Standpunkt aus am häufigsten gebraucht werden. Daher werden Daten aus den Hauptspeichern 12 oder 16, auf die zugegriffen wird, zum späteren Gebrauch im jeweiligen Cache-Speicher gespeichert. Danach wird eine zum Wiederauffinden von Daten und/oder Befehlen auf einen Bus gegebene Adresse zunächst in den zugeordneten Cache-Speicher eingegeben, um festzustellen, ob die Daten darin gespeichert sind. Falls nicht, werden die Daten zur Anwendung durch den Prozessor, der die Adresse erzeugte, aus dem Hauptspeicher zurückgeholt, und außerdem werden diese Daten im zugeordneten Cache-Speicher gespeichert. Beim Speichern dieser Daten wird das zuletzt benutzte Datenregister im Cache-Speicher überschrieben.
- Wenn Daten gelesen werden, ergibt sich die Schwierigkeit, daß die Daten sowohl im Cache-Speicher als auch im diesem entgegengesetzten Hauptspeicher gespeichert sein können. Daher muß man irgendeinen Algorithmus anwenden, mit dem gewährleistet ist, daß auf die richtigen Daten zugegriffen wird. Hierzu gehört es normalerweise, die Inhalte sämtlicher Cache-Speicher im System zu überprüfen. Wenn beispielsweise der prozessor 28 Daten aus dem Bus 10 liest, muß festgestellt werden, ob die gelesenen Daten im Cache-Speicher 38 gespeichert sind. Dies setzt voraus, daß die Cache-Speicher 20 und 38 auf physikalische Adressen antworten, um die Integrität der Systemdaten zu gewährleisten. Jedoch werden die Cache-Speicher auch direkt durch den jeweils zugeordneten Prozessor 28 oder 46 adressiert, welcher mit virtueller Adressierung arbeitet. Um die Leistung des Systems zu erhöhen, verwendet man einen Cache-Speicher, der direkt entweder eine virtuelle oder eine physikalische Adresse annimmt, ohne einen V/R-Übersetzer zu verwenden.
- Figur 2, auf die nun Bezug genommen wird, zeigt eine schematische Darstellung der virtuellen und physikalischen Adressen und des Formats eines Cache-Adressiersystems zur direkten Adressierung mittels dieser Adressen. Eine virtuelle Adresse kann irgendeine Anzahl von Bits aufweisen, die gemäß des vorbestimmten Musters in Feldern angeordnet sind. Außerdem kann die physikalische Adresse auch in einer vorbestimmten Reihenfolge angeordnet sein. Die Daten sind in "Seiten" angeordnet, bei denen es sich um Einheiten des Speichers handelt. Dies gestattet es, die verschiedenen Stellen im Speicher auf andere Stellen im Speicher abzubilden. Die ersten acht Bits der Adresse legen sowohl bei virtuellem als auch bei physikalischem Speicher die Position innerhalb einer Seite fest. Aufgrund der Verwendung eines gemeinsamen Formats können sie direkt ineinander abgebildet werden. Beispielsweise ergeben acht Bits 256 Worte je Speicherseite. Es versteht sich jedoch, daß auch andere Seitengrößen verwendet werden können. Die acht Bits, welche die Seitenlänge festlegen, sind die niederwertigen Bits "LSB" der Adresse. Die höherwertigen Bits (MSB) bilden den Rest der Adresse. Die MSB's der physikalischen und der virtuellen Adressen müssen in der Länge nicht übereinstimmen, da der virtuelle Speicher eine größere Kapazität haben kann, wenn auch manche Systeme relativ kleinere virtuelle Adressen aufweisen. Die Anzahl der Seiten ist durch die MSB's der Adresse festgelegt.
- Bei herkömmlichen Cache-Speichern ist die Adresse in das Acht-Bit-LSB-Feld und das verbleibende MSB-Feld unterteilt. Das Acht-Bit-LSB-Feld ist in ein Drei-Bit-Feld 56 und ein Fünf-Bit-Feld 58 unterteilt. Die beiden Felder 56 und 58 bilden Blöcke des Cache-Speichers, wobei jeder Block in eine vorbestimmte Anzahl von Speicherstellen unterteilt ist. Das Fünf-Bit-Feld 58 entspricht den Blöcken innerhalb des Cache- Speichers und bildet 32 gesonderte Blöcke, während das Drei- Bit-Feld 56 den einzelnen Registern in einem gegebenen Block entspricht und in jedem der Blöcke acht Speicherstellen definiert. Jede dieser Stellen in dem gegebenen Block dient zum Speichern von Daten.
- Der MSB-Teil der Cache-Adresse ist in zwei Typen unterteilt, einen ersten Typ 60, der als die virtuelle Kennung definiert ist, und einen zweiten Typ 62, der als die physikalische Kennung definiert ist. Die Typen 60 und 62 besetzen jeweils den gleichen Teil der Cache-Adresse; das heißt, daß die MSB's der Cache-Adresse entweder von einer virtuell oder einer physikalisch adressierenden Einheit empfangen werden. Wie nachstehend unter Bezugnahme auf Figur 3 beschrieben wird, sind die MSB's der im Datenteil eines Cache-Speichers vorhandenen Cache-Adresse im Kennungsspeicher gespeichert, der in 32 gesonderte Speicherstellen unterteilt ist.
- In Figur 3, auf die nun Bezug genommen wird, ist ein schematisches Blockdiagramm der Cache-Speicher 20 bzw. 38 der Figur 1 dargestellt. Jeder der Cache-Speicher ist in einen Datenspeicher 64 und einen Kennungsspeicher 66 unterteilt. Der Datenspeicher ist in 32, mit "0" bis "31" beschriftete Blöcke geteilt. Jeder dieser Blöcke ist in acht gesonderte, mit "0" bis "7" beschriftete Speicherstellen unterteilt. Somit enthält der Datenspeicher 64 256 Datenworte, die auf einer Seite des Speichers zu speichern sind. Allerdings entsprechen die im Datenspeicher 64 enthaltenen Daten nicht notwendigerweise einer bestimmten Seite des Speichers. Vielmehr kann jeder Block im Datenspeicher 64 einem Acht-Worte-Block von irgendeiner Seite des Speichers entsprechen. Die Stelle innerhalb des Datenspeichers 64 hängt allein von den acht LSB's ab. Wie nachstehend beschrieben wird, entsprechen die im Kennungsspeicher 66 gespeicherten MSB's lediglich einem Datenwort im Datenspeicher 64. Jedoch sind sämtliche diesem zugeordnete Daten im gleichen Block des Datenspeichers gespeichert, wie mittels des Drei-Bit-Feldes 56 definiert.
- Der Kennungsspeicher 66 ist in zwei getrennte Speicher unterteilt, einen Virtuelle-Kennungs-Speicher 68 und einen Physikalische-Kennungs-Speicher 70. Die beiden Speicher 68 und 70 enthalten jeweils 32, mit "0" bis "31" beschriftete Speicherstellen. Die Breite des Speichers ist gleich der Breite der MSB's entweder im physikalischen Kennungsteil 62 oder im virtuellen Kennungsteil 60. Wäre beispielsweise die physikalische Adresse 32 Bits lang, so würde der MSB-Teil 24 Bits lang und folglich der Physikalische-Kennungs-Speicher 70 24 Bits breit sein. Der Virtuelle-Kennungs-Speicher 68 könnte andererseits abhängig von der Länge der MSB's darin eine andere Länge haben.
- Alle im Kennungsspeicher 66 gespeicherten MSB's entsprechen den MSB's einer gegebenen physikalischen oder virtuellen Adresse. Die Stelle hängt von dem Fünf-Bit-Feld 58 ab, welches seinerseits einem Block des Datenspeichers 64 entspricht. Daher legt das Fünf-Bit-Feld 58 fest, in welchem Block des Datenspeichers die entsprechenden Daten gespeichert sind und an welcher Stelle im Kennungsspeicher 66 die MSB's der Kennung gespeichert sind. Außerdem legt das Drei-Bit-Feld 56 der Adresse fest, an welcher der acht Stellen in einem gegebenen Block Daten, die dieser Adresse entsprechen, gespeichert sind.
- Um sowohl den Datenspeicher 64 als auch den Kennungsspeicher 66 zu addressieren, werden die LSB's der Cache-Adresse von der Cache-Adresse abgetrennt und auf einen LSB-Adressenbus 72 gegeben. Das Fünf-Bit-Feld 58 der Cache-Adresse wird dem LSB- Bus 72 entnommen und einem Fünf-Bit-Bus 74 übergeben, der sich für eine Eingabe sowohl in den Virtuelle-Kennungs-Speicher 68 als auch in den Physikalische-Kennungs-Speicher 70 verzweigt, um diesem eine Adresse zu liefern. Der Ausgang des Virtuelle-Kennungs-Speichers 68 wird zur Eingabe in einen Schalter 78 auf einem Bus 76 ausgegeben, und der Ausgang des Physikalische-Kennungs-Speichers 70 wird zur Eingabe in den verbleibenden Eingang des Schalters 78 auf einem Bus 80 ausgegeben. Der Schalter 78 wählt zwischen den Ausgängen der beiden Speicher 68 und 70 aus.
- Der Datenspeicher 64 wird über die acht LSB's adressiert, die die Felder 56 und 58 der Cache-Adresse bilden, wobei diese Bits von dem LSB-Adressenbus 72 empfangen werden. Für jede der LSB-Adressen wird eine der 256 Stellen im Datenspeicher 64 ausgewählt und zur Eingabe in einen Schalter 84 auf einem Datenbus 82 ausgegeben. Der Schalter 84 ist ein normalerweise offener Schalter, dessen Ausgang für eine Ausgabe zum Rest des Systems mit einem Bus 86 verbunden ist.
- Der Schalter 78 wird mittels einer Arbitriereinheit 88 gesteuert, die auf einer Steuerleitung 90 ein Steuersignal zur Eingabe in den Steuereingang des Schalters 78 abgibt. Die Arbitriereinheit 88 weist zwei Eingänge auf, deren einer über einen Bus 94 mit einer Virtuelle-Adressen-Einrichtung 92 und deren anderer Eingang über einen Bus 98 mit einer Physikalische-Adressen-Einrichtung 96 verbunden ist. Die Arbitriereinheit 88 kann so betrieben werden, daß zwischen den virtuellen Adressen und den physikalischen Adressen unterschieden wird, um den auszuwählenden der Kennungsspeicher 68 bzw. 70 auszuwählen.
- Der Ausgang des Schalters 78 liegt über einen Bus 102 am Eingang eines Komparators 100. Der andere Eingang der Komparators ist mit einem MSB-Adressenbus 104 verbunden, der die MSB's der Cache-Adresse für entweder die virtuelle Adresse oder die physikalische Adresse, wie durch die Teile 60 bzw. 62 in Figur 2 dargestellt, überträgt. Der Adressenbus 104 ist mit dem Ausgang der Arbitriereinheit 88 verbunden. Ferner ist der Adressenbus 104 mit dem Verbindungsbus 102 verbunden, um eine Eingabe von Adressendaten in den Schalter 78 zu ermöglichen. Der Komparator 100 vergleicht die MSB's in den Adressen, die von der Virtuelle-Adressen-Einrichtung 92 oder der Physikalische-Adressen-Einrichtung 96 geliefert werden, mit den im Kennungsspeicher 66 gespeicherten MSB's. Wenn eine Übereinstimmung festgestellt wird, wird auf einer Steuerleitung 106 ein Signal ausgegeben, um den Schalter 84 so zu steuern, daß er Daten aus dem Bus 82 zu dem Bus 86 ausgibt. Wenn beispielsweise eine virtuelle Adresse in die Arbitriereinheit 88 eingegeben wird, wählt der Schalter 78 den Ausgabebus 76 aus. Für eine Adresse, bei der das Fünf-Bit-Feld 58 einer logischen "4" entspricht, wird die mit "4" beschriftete Speicherstelle aus dem Virtuelle-Kennungs-Speicher 68 zur Ausgabe auf dem Bus 102 ausgewählt. Gleichzeitig empfängt der Datenspeicher die acht LSB's der Adresse und gibt eines der 256 Datenworte davon zu dem Datenbus 82 aus. Wenn die an der Stelle "4" des Virtuelle-Kennungs-Speichers 68 gespeicherten Adressen-MSB's den von der Virtuelle-Adressen-Einrichtung 92 gelieferten MSB's entsprechen, gibt der Komparator 100 auf der Leitung 106 ein Steuersignal aus, um die Daten auf dem Datenbus 82 zur Weiterleitung an den Rest des Systems auf den Datenbus 86 zu leiten. Wenn jedoch kein Gegenstück gefunden wird, wird anderswo im System ein "Verlust" angezeigt, und die Daten werden zur Verwendung durch die Adressiereinheit aus dem Hauptspeicher wiederbeschafft, und außerdem werden die MSB's jener Adresse in den Kennungsspeicher 66 geschrieben und die ihr zugeordneten Daten in den Datenspeicher 64 geschrieben. Cache-Speicher, die in einer N-Weg-Assoziativgruppe angeordnet sind, erfordern jedoch irgendeine Art von Vorrang-Anzeigeeinrichtung zum Bestimmen der Speicherstelle, wie nachstehend beschrieben wird. Um Daten in die Kennungsspeicher 68 und 70 zu schreiben, werden MSB-Daten auf dem Bus 102 eingegeben, und der Schalter 78 wählt ansprechend auf die Arbitriereinheit 88 den passenden der Speicher 68 und 70 aus. Die Arbitriereinheit 88 kann so betrieben werden, daß sie über den Schalter 78 sowohl den MSB-Teil der physikalischen Adresse in den Kennungsspeicher 70 als auch den MSB-Teil der virtuellen Adresse in den Kennungsspeicher 68 schreibt.
- In Figur 4, auf die nun Bezug genommen wird, ist ein schematisches Blockdiagramm eines Vierweg-Gruppenassoziativ-Cache- Speichers mit einem entsprechenden Schaltungsteil zur Feststellung der am längsten nicht benutzten Datenposition darin dargestellt. Zwecks Vereinfachung ist der vorstehend beschriebene Schaltungsteil zur Unterscheidung zwischen virtuellen und physikalischen Adressen nicht darin enthalten. Der Datenspeicher besteht aus vier Datenspeichern 108, 110, 112 und 114, und der Kennungsspeicher besteht aus vier Kennungsspeichern 116, 118, 120 und 122. Jedem der Datenspeicher 108-114 ist einer der Kennungsspeicher 116-122 zugeordnet, und die Datenspeicher und die Kennungsspeicher sind jeweils mit Ziffern "1", "2", "3" und "4" beschriftet.
- Adressen für den Cache-Speicher werden auf einem Adressenbus 124 übertragen, und Daten werden auf einem Datenbus 126 übertragen. Der Datenbus 126 ist zum Einlesen von Daten über einen Leitungstreiber 125 mit dem Datenspeicher 108 verbunden und zum Auslesen von Daten über einen Leitungstreiber 128 mit dem Datenspeicher 108 verbunden. In ähnlicher Weise werden Daten aus dem Datenbus über Leitungstreiber 130, 132 und 134 jeweils in die Datenspeicher 110, 112 und 114 eingelesen. Daten aus den Datenspeichern 110, 112 und 114 werden jeweils über Leitungstreiber 136, 138 und 140 zum Datenbus 126 ausgelesen. Wie oben beschrieben, besteht die Adresse für die Datenspeicher 108-114 aus den acht LSB's aus dem Adressenbus 124, der über einen LSB-Datenbus 142 am Adresseneingang empfangen wird. Die Daten werden in der bei Cache-Speichern üblichen Art und Weise in die Speicher 108-114 geschrieben und daraus gelesen.
- Den Kennungsspeichern 116, 118, 120 und 122 sind jeweils Komparatoren 144, 146, 148 und 150 zugeordnet. Jeder der Komparatoren 144-150 weist zwei Eingänge auf, deren einer mit dem entsprechenden Kennungsspeicher 116-120 und deren anderer mit den MSB's der Adresse auf dem Adressenbus 124 verbunden ist. Der Komparator 144 ist über einen Datenbus 152 mit dem Kennungsspeicher 116 und über einen MSB-Datenbus 154 mit dem Adressenbus 124 verbunden. In ähnlicher Weise sind die Komparatoren 146, 148 und 150 jeweils über Datenbusse 156, 158 und 160 mit den jeweils entsprechenden Kennungsspeichern 118, 120 und 122 verbunden. Die anderen Eingänge der Komparatoren 146, 148 und 150 sind jeweils mit den MSB-Datenbussen 162, 164 und 166 verbunden. Die Adresseneingänge der Kennungsspeicher 116-122 sind mit einem LSB-Datenbus 168 verbunden, der mit den höherwertigen fünf Bits des Acht-Bit-LSB-Feldes der Cache- Adresse verbunden ist. Obgleich nicht eingezeichnet, sind die MSB-Datenbusse 154, 162, 164 und 166 über Puffer mit den Dateneingängen der Kennungsspeicher 116-122 verbunden, um Daten in die Kennungsspeicher 116-122 schreiben zu können.
- Die Ausgänge der Komparatoren 144-150 sind jeweils mit einem der vier Eingänge einer NOR-Torschaltung 170 verbunden. Ferner sind die Ausgänge der Komparatoren 144-150 jeweils mit dem Steuereingang eines der Leitungstreiber 128, 136, 138 und 140 verbunden, um ein Zurückholen von Daten aus den Datenspeichern 108-114 zu ermöglichen. Der Ausgang der NOR-Torschaltung 170 bestimmt, ob ein "Treffer" oder ein "Fehlversuch" bezogen auf Daten im Speicher erzielt wurde. Ein "Treffer" zeigt an, daß auf die Daten aus dem Cache-Speicher zugegriffen wurde, und ein "Fehlversuch" zeigt an, daß die Daten nicht im Cache-Speicher gespeichert sind und daß im Hauptspeicher auf sie zugegriffen werden muß. Zum Zurückholen von Daten aus dem Hauptspeicher werden herkömmliche Techniken angewandt. Wenn sie jedoch zurückgeholt wurden, müssen sie im am längsten nicht benutzten Speicherblock des Datenspeichers gespeichert werden. Wie zuvor beschrieben, werden Daten in Blöcken von acht Worten zurückgeladen, die den niederwertigen Bits der Adresse entsprechen.
- Um den am längsten nicht benutzten Block des Speichers festzustellen, werden die Ausgänge der Komparatoren 144-150 über die Leitungen 174 in einen LRU-Treiber 172 eingegeben. Der LRU-Treiber 172 ist über einen bidirektionalen Datenbus 178 als Schnittstelle mit einem LRU-Speicher 176 verbunden. Der LRU-Speicher 176 empfängt die Adresse dafür von dem Adressenbus 124 über einen Datenbus 180, der die fünf höherwertigen Bits der acht Bits LSB enthält.
- Wenn Daten adressiert wurden, die nicht in den Datenspeichern 108-114 gespeichert sind, muß auf sie im Hauptspeicher zugegriffen werden, und man muß sie im Cache-Speicher zwischenspeichern. Beim Zwischenspeichern von Daten im Cache-Speicher überprüft der LRU-Treiber 172 zunächst den LRU-Speicher 176 daraufhin, welcher der Datenspeicher 108-114 für einen gegebenen Acht-Bit-LSB-Teil einer Adresse am längsten nicht benutzt wurde. Sobald dies festgestellt ist, wird ein Signal auf den Leitungen 182 zu den Datenspeichern 108-114 und zu den Kennungsspeichern 116-122 ausgegeben. Diese Leitungen sind mit WE für Schreiben/Freigeben beschriftet. Der Schaltungsteil zum Schreiben von Daten in einen gegebenen Datenspeicher und in den einem Cache-Speicher zugeordneten Kennungsspeicher ist eine Standardschaltung.
- Außer dem Empfangen von Daten vom LRU-Speicher 176 zur Feststellung, welcher der Cache-Speicher am längsten nicht benutzt wurde, bringt der LRU-Treiber 172 auch den LRU-Speicher 176 bei jedem Zugriff auf den Cache-Speicher auf den neuesten Stand. Dies setzt allerdings voraus, daß jede Speicherstelle im zugeordneten Cache-Speicher zulässig ist, so daß Daten daraus gelesen und Daten dahinein geschrieben werden können. Wenn eine der Speicherstellen fehlerhaft ist, kann ein Fehler entweder einen Nicht-Zugriff auf die gespeicherten Daten oder einen Zugriff auf die falschen Daten ergeben. Obwohl die Existenz eines Fehlers bei einem N-Weg-Assoziations-Cache-Speicher nicht schädlich ist, ist es erforderlich, festzustellen, welche der Speicherstellen fehlerhaft ist, und zu verhindern, daß Daten in diese fehlerhafte Speicherstelle geschrieben oder daraus gelesen werden. Dies wird bei der vorliegenden Erfindung mittels eines Fehlerspeichers 184 möglich gemacht, dessen Adresseneingang über einen LSB-Datenbus 186 mit dem Adressenbus 124 verbunden ist, um die fünf höherwertigen Bits des Acht-Bit-LSB-Feldes zu empfangen, und dessen Datenausgang über einen Datenbus 188 mit dem LRU-Treiber 172 verbunden ist. Der Fehlerspeicher 184 enthält Daten, die den Fehlerstatus aller Speicherstellen des Cache-Speichers anzeigen, so daß es dem LRU-Treiber 172 unmöglich ist, jene Speicherstelle als am längsten unbenutzte Speicherstelle zu bezeichnen. Ferner wird die Ausgabe des Fehlerspeichers 184 allen Komparatoren 144-150 eingegeben, wobei eines ihrer Bits so angeschlossen ist, daß der Komparatorausgang unwirksam gemacht wird. Wenn ein Zugriff auf eine fehlerhafte Stelle stattfindet, verhindern die im Fehlerspeicher 184 gespeicherten Daten, daß ein "Treffer" registriert wird.
- Bei der bevorzugten Ausführungsform ist der Fehlerspeicher 184 werkseitig so vorprogrammiert, daß er eine permanente Aufzeichnung des Fehlerstatus sämtlicher Speicherstellen im Cache-Speicher liefert. Mit Hilfe des LRU-Treibers 172 ist es daher möglich, das Zwischenspeichern von Daten in einem N- Weg-Assoziations-Cache-Speicher zu steuern, ohne dafür einen unangemessenen Rechenaufwand zu benötigen, wie nachstehend beschrieben wird.
- Unter Bezugnahme auf die Figuren 3 und 4 wird nun die Betriebsweise des Systems detaillierter beschrieben. Anfänglich gibt einer der Prozessoren oder eine der Adressiereinheiten entweder eine virtuelle oder eine physikalische Adresse zu der Arbitriereinheit sowie zu dem Adressenbus 124 aus. Die LSB's der Adresse werden dann in die Kennungsspeicher 116-122 eingegeben, und die passenden, darin gespeicherten MSB's werden an die Komparatoren 144-150 ausgegeben. Der Schalter 78 in Figur 3 stellt fest, ob die virtuelle oder die physikalische Kennung an die Komparatoren 144-150 ausgegeben wurde. Es versteht sich, daß die Komparatoren 144-150 mit dem Komparator 100 der Figur 3 identisch sind.
- Gleichzeitig mit der Ausgabe der MSB's aus der ausgewählten Kennungsstelle werden ferner Daten in den Datenspeichern 108-114 adressiert und diese Daten daraus ausgegeben. Bei einer Übereinstimmung in irgendeinem der Komparatoren 144-150 wird jeweils der passende Leitungstreiber 128, 136, 138 oder 140 durch einen der Komparatoren 144, 146, 148 und 150 aktiviert, und Daten werden auf dem Datenbus 126 ausgegeben. Außerdem wird der Ausgang der NOR-Torschaltung 170 auf logisch "niedrig" gesetzt, um einen "Treffer" zu registrieren.
- Wenn die einem gegebenen Acht-Bit-LSB-Feld entsprechenden MSB's nicht in den Kennungsspeichern 116-122 gefunden werden, ist der Ausgang der N0R-Torschaltung 170 logisch "hoch" und repräsentiert einen "Fehlversuch". Das System greift dann auf den Hauptspeicher zu, um die erwünschten Daten, die sich an jener Adressenstelle befinden, zu gewinnen. Außerdem müssen diese Daten an der richtigen Stelle in den Cache-Speicher geschrieben werden. Da, wie oben beschrieben, jedem Datenwort ein Block von Daten zugeordnet ist, wird der durch das Fünf-Bit- Feld 58 in der Cache-Adresse festgelegte Block zurückgeholt und zusammen mit dem adressierten Wort gespeichert. Wenn beispielsweise das Fünf-Bit-Feld 58 ein logisches Äquivalent des Blocks "31" ist und das Drei-Bit-Feld 56 das logische Äquivalent des vierten Abschnitts im Block "31" ist, werden sämtliche Daten mit den gleichen MSB's und dem gleichen Fünf-Bit- Feld 58 im Block "31" abgelegt, das heißt, daß alle Datenworte, die das Datenwort im vierten Segment umgeben, im Block "31" abgelegt werden. Ferner wird das zugeordnete MSB-Feld der Adresse im zugeordneten Kennungsspeicher gespeichert. Das Verfahren, mit dem diese Daten und die zugeordneten Kennungen in die Datenspeicher 108-114 und in die Kennungsspeicher 116- 122 eingespeichert werden, ist standardmäßig. Ehe vorhandene Cache-Daten überschrieben werden, wird außerdem geprüft, ob entsprechende, im Hauptspeicher befindliche Daten aktualisiert werden müssen.
- Bevor Daten in die Datenspeicher 108-114 geschrieben werden, ist zu prüfen, welcher Datenspeicher die am längsten unbenutzten Daten enthält. Dies geschieht mittels des LRU-Speichers 176 und des LRU-Treibers 172. Nachdem Daten geschrieben wurden, wird der LRU-Speicher aktualisiert, und dem Cache-Speicher kann die nächste Adresse zugeführt werden.
- Figur 5, auf die nun Bezug genommen wird, zeigt ein schematisches Blockdiagramm des LRU-Treibers 172, der in einer Baumstruktur hergestellt ist, wobei die Zweige des Baumes mit allen einzelnen Kennungsspeichern und den entsprechenden Komparatoren verbunden sind. Gleiche Bezugszeichen beziehen sich auf gleiche Teile in den beiden Figuren. Zwei der Cache-Speicher in der Assoziativgruppe sind über eine Schnittstelle mit einer Steuerschaltung 190 verbunden, und die übrigen beiden Cache-Speicher sind mit einer Steuerschaltung 192 verbunden. Die beiden Steuerschaltungen 190 und 192 sind über eine Schnittstelle mit einer auf höherer Ebene liegenden Steuerschaltung 194 verbunden. Diese Art des Aufbaus ist eine hierarchische Architektur, die in Abhängigkeit von der Anzahl von Cache-Speichern in einer N-Weg-Assoziativgruppe mehrere Ebenen aufweist. Wenn es beispielsweise acht getrennte Cache- Speicher in einer Assoziativgruppe gäbe, wären vier Steuerschaltungen auf niederer Ebene, zwei Steuerschaltungen auf mittlerer Ebene und eine Steuerschaltung auf hoher Ebene zu verwenden, also insgesamt sieben. Daher gäbe es bei einer N-Weg-Assoziativgruppe N-1 Steuerschaltungen. Jeder Steuerschaltung wäre ein Bit an Speicher zugeordnet, um festzustellen, welcher der daran angeschlossenen Zweige der am längsten unbenutzte Zweig ist, so daß eine N-Weg-Assoziativgruppe N-1 Bits an Speicher für jede adressierbare Stelle in den Kennungsspeichern erfordern würde, um die am längsten unbenutzte Speicherstelle festzustellen.
- Beide Steuerschaltungen niederer Ordnung 190 und 192 empfangen an ihren Eingängen zwei Zugriffssignale (ACC) aus den Leitungen 174, welche von den Komparatoren 144-150 ausgegeben werden, und zwei Fehlersignale (FI) aus dem Fehlerspeicher 184. Beide Steuerschaltungen 190 und 192 geben ferner auf den mit "WE" beschrifteten Leitungen 182 ein LRU-Signal (LRU) aus. Außerdem werden Zugriffs-Ausgangssignale (ACC) und Fehler-Ausgangssignale (FO) zu der auf der nächst höheren Ebene liegenden Steuerschaltung 194 ausgegeben, nebst des Empfangs eines LRU-Signals von dieser an einem mit LRU beschrifteten Eingang. Die auf höherer Ebene liegende Steuerschaltung 194 ist mit den auf niederer Ebene liegenden Steuerschaltungen 190 und 192 identisch.
- Jeweils eine Bit-Leitung des Datenbusses 178 ist über je einen Sende-Empfänger 196, 198 und 200 mit je einer der Steuerschaltungen 190-194 verbunden. Jeder Sende-Empfänger 196-200 weist einen Freigabeeingang (EN) auf, um festzustellen, ob Daten aus dem Datenbus 178 gelesen oder in den Datenbus 178 geschrieben werden. Die Ausgänge der Sende-Empfänger 196-200 sind mit Eingängen verbunden, die mit LRU MEM EIN und LRU MEM AUS beschriftet sind.
- Die auf längster Nichtbenutzung aufbauende Konfiguration der Figur 5 und ihre Architektur ermöglicht eine große Anzahl von Cache-Elementen in einer N-Weg-Assoziativgruppe, indem ein leistungsfähiges Verfahren zur Bestimmung des am längsten unbenutzten Elements bereitgestellt wird. Dies gewinnt an Bedeutung, wenn man Cache-Elemente verwendet, die direkt sowohl mittels virtueller als auch mittels physikalischer Adressen adressierbar sind. Dies beruht auf den Begrenzungen der Größe des einzelnen Elements in Bezug auf die Größe einer Seite. Wenn beispielsweise die Seitengröße 256 Worte beträgt, erhalten die physikalischen und die virtuellen Adressen ein gemeinsames Feld von acht Bits. Dies schließt es aus, die Größe der einzelnen Cache-Elemente zu erhöhen, was die Verwendung einer großen N-Weg-Assoziativgruppe erforderlich macht.
- Figur 6, auf die nun Bezug genommen wird, zeigt ein schematisches Diagramm einer der Steuerschaltungen 190-194. Der mit LRU MEM EIN beschriftete Eingang ist mit einem Knotenpunkt 202 verbunden, und der Zustand der daran angelegten Daten ist entweder logisch "1" oder logisch "0". Für eine logische "1" wird die Schaltung in eine Richtung gelenkt, um anzuzeigen, daß der eine Zweig die am längsten unbenutzte Einrichtung ist, und für eine logische "0" wird die Schaltung in die gegenteilige Richtung gelenkt, um anzuzeigen, daß der andere Zweig der am längsten unbenutzte Zweig ist. Ein Eingang einer ODER-Torschaltung 204 ist mit dem Knotenpunkt 202 verbunden, und sein anderer Eingang ist mit dem Fehlereingang verbunden, der zwecks Darstellung mit FI1 beschriftet ist. Der Ausgang der ODER-Torschaltung 204 ist mit einem Eingang einer UND- Torschaltung 206 verbunden, deren Ausgang mit einem Eingang einer UND-Torschaltung 208 verbunden ist. Der andere Eingang der UND-Torschaltung 206 ist über einen Inverter 210 mit dem anderen Fehlereingang FI2 verbunden. Der Ausgang der UND- Torschaltung 208 ist mit dem mit LRU2 beschrifteten Ausgang verbunden, der an die mit WE beschrifteten Leitungen 182 angeschlossen ist. Der andere Eingang der UND-Torschaltung 208 ist mit dem LRU-Eingang von der auf höherer Ebene liegenden Steuerschaltung verbunden, welcher mit LRUI beschriftet ist.
- Die UND-Torschaltung 208 kann so betrieben werden, daß sie die LRU2- Leitung aktiviert, wenn je ein Signal sowohl vom LRUI- Eingang aus auch vom Ausgang der UND-Torschaltung 206 empfangen wird. Diese Bedingung ergibt sich aus der Steuerschaltung höherer Ebene, die den Zweig als einen am längsten unbenutzten Zweig auswählt, wobei außerdem das vom LRU-Speicher 176 empfangene Datenbit im richtigen logischen Zustand ist, der bei dieser Betriebsweise logisch "1" ist. Eine logische "1" am Eingang der ODER-Torschaltung 204 neben der Ausgabe einer logischen "1" durch den Inverter 210 veranlaßt die UND-Torschaltung 206, eine logische "1" zum Eingang der UND-Torschaltung 208 auszugeben. Wenn eine logische "1" am LRUI- Eingang eingegeben wird, wird der LRU2-Ausgang aktiviert.
- Der andere, mit LRU1 beschriftete Ausgang des LRU-Speichers ist mit dem Ausgang einer UND-Torschaltung 212 verbunden, deren einer Eingang mit dem LRUI-Signal verbunden ist und deren anderer Eingang mit dem Ausgang einer UND-Torschaltung 214 verbunden ist. Ein Eingang der UND-Torschaltung 214 ist über einen Inverter 216 mit dem mit FI1 beschrifteten Fehlersignal verbunden, und ihr anderer Eingang ist mit dem Ausgang einer ODER-Torschaltung 218 verbunden. Ein Eingang der ODER- Torschaltung 218 ist über einen Inverter 220 mit dem Knotenpunkt 202 verbunden, und ihr anderer Eingang ist mit dem anderen Fehlersignal FI2 verbunden. Damit die UND-Torschaltung 212 aktiviert ist, muß das vom LRU-Speicher 176 empfangene Datenbit eine logische "0" sein, was die Ausgabe einer logischen "1" aus dem Inverter 220 zur Folge hat.
- Damit die im LRU-Speicher 176 gespeicherten Daten das LRU- Signal entweder zum LRU1-Ausgang oder zum LRU2-Ausgang lenken, müssen die Fehlereingänge FI1 und FI2 logisch "0" sein. Wenn allerdings ein Fehler im Fehlerspeicher 184 gespeichert ist, der einem gegebenen Zweig entspricht, drängt dieser Fehler das LRU-Signal zu der gegenüberliegenden Seite der Steuerschaltung. Wenn beispielsweise ein Fehler in dem Cache- Speicher vorliegt, der mittels des LRU1-Signals gesteuert wird, wird ein Signal, das logisch "1" ist, in den FI1-Eingang eingegeben. Dies setzt eine logische "1" auf den Ausgang der ODER-Torschaltung 204 sowie eine logische "0" auf den Ausgang des Inverters 216. Dies sperrt die UND-Torschaltung 212, damit kein LRU1-Signal vorhanden ist, und beeinflußt die UND-Torschaltung 208 derart, daß lediglich ein LRUI-Signal erforderlich ist, um den LRU2-Eingang zu aktivieren.
- Das Zugriffssignal, das dem LRU1-Signal zugeordnet ist, ist mit ACC1 bezeichnet und mit dem Eingang einer UND-Torschaltung 224 verbunden, deren anderer Eingang mit dem Ausgang des Inverters 216 verbunden ist. Der Ausgang der UND-Torschaltung 224 ist mit einem Eingang einer ODER-Torschaltung 226 verbunden, deren Ausgang mit dem LRU MEM AUS -Anschluß der Steuerschaltung verbunden ist. Das andere Zugriffssignal, das dem LRU2-Ausgang zugeordnet ist, ist mit einem Eingang einer UND- Torschaltung 228 verbunden, deren anderer Eingang mit dem Ausgang des Inverters 210 verbunden ist. Der Ausgang der UND- Torschaltung 228 ist über einen Inverter 232 mit einem Eingang einer UND-Torschaltung 230 verbunden. Der andere Eingang der UND-Torschaltung 230 ist mit dem LRU MEM EIN -Eingang verbunden, und der andere Ausgang der UND-Torschaltung 230 ist mit dem anderen Eingang der ODER-Torschaltung 226 verbunden. Die Ausgänge der UND-Torschaltungen 224 und 228 sind jeweils mit Eingängen einer ODER-Torschaltung 234 verbunden, deren Ausgang mit dem mit ACC beschrifteten Ausgangs- Zugriffssignal der Steuerschaltung verbunden ist.
- Im Betrieb aktiviert ein Zugriffssignal an einem der beiden Eingänge ACC1 oder ACC2 die jeweilige UND-Torschaltung 224 oder 228, wenn die Fehlersignale an FI1 und FI2 auf logisch "0" sind. Falls ACC1 aktiviert ist, liegt der Ausgang der ODER-Torschaltung 226 auf logisch "hoch". Falls der ACC2-Eingang aktiviert ist und das Fehlersignal FI2 logisch "0" ist, wird die UND-Torschaltung 228 dazu aktiviert, eine logische "0" auf den Ausgang des Inverters 232 zu geben, was eine logische "0" am LRU MEM AUS -Ausgang zur Folge hat. Es versteht sich, daß lediglich ein Zugriffssignal an den Eingängen ACC1 oder ACC2 vorhanden sein kann, und daß beide Eingänge nicht gleichzeitig aktiviert werden können.
- Wenn weder ACC1 noch ACC2 aktiviert ist, sind die Ausgänge der UND-Torschaltungen 224 und 228 auf logisch "0". Dies hat zur Folge, daß eine logische "0" von der UND-Torschaltung 224 in einen Eingang der ODER-Torschaltung 226 eingegeben und eine logische "1" aus dem Inverter 232 in die UND-Torschaltung 230 eingegeben werden. Der andere Eingang der UND-Torschaltung 230 ist mit dem LRU MEM EIN -Eingang verbunden, so daß eine logische "0" darauf die Ausgabe einer logischen "0" aus der UND-Torschaltung 230 zur Folge hat. Eine logische "1" darauf hat eine logische "1" am Ausgang der UND-Torschaltung 230 zur Folge, wenn kein ACC2-Signal vorhanden ist.
- Die Gegenwart eines Zugriffssignals ändert den Zustand des Speicherbits, um die Schaltung zum Cache-Speicher auf dem gegenüberliegenden Zweig zu lenken. Wenn beispielsweise der LRU MEM EIN -Eingang auf logisch "0" ist, ist das LRU1-Signal aktiviert, wodurch angezeigt wird, daß dies der am längsten unbenutzte der beiden Zweige ist. Wenn der dem ACC1-Signal zugeordnete Zweig aktiviert ist, muß der LRU MEM AUS -Ausgang zu einer logischen "1" wechseln. Dieses Bit wird dann im LRU- Speicher 176 gespeichert. Dies bereitet die Steuerschaltung in Abhängigkeit vom Zustand der LRU1-Eingabe der auf höherer Ebene liegenden Steuerschaltungen, für die LRU2-Ausgabe vor. Wenn beim nächsten Zugriff auf den Zweig zugegriffen wird, der dem LRU2-Eingang zugeordnet ist, wird das ACC2-Signal aktiviert, wodurch eine logische "0" auf den Ausgang des Inverters 232 gegeben wird. Dies hat zur Folge, daß der Ausgang der ODER-Torschaltung 226 logisch "0" wird, um die Steuerschaltung für die LRU1-Ausgabe zu vorzubereiten.
- Die Fehlersignale FI1 und FI2 werden beide in eine UND-Torschaltung 236 eingegeben, deren Ausgang mit dem FO-Ausgangssignal verbunden ist. Dieses Ausgangssignal wird in einen Zweig der auf höherer Ebene liegenden Steuerschaltung eingegeben. Wie vorstehend beschrieben, setzt sich die Gegenwart eines Fehlers über das im LRU-Speicher 176 gespeicherte Datenbit hinweg, um das LRU-Signal stets zum gegenüberliegenden Zweig der gegebenen Steuerschaltung zu drängen. Auf diese Weise erscheint der Zweig, dem der Fehler zugeordnet ist, stets als derjenige der beiden Zweige, auf den zuletzt zugegriffen wurde, wodurch verhindert wird, daß Daten in diesen Zweig geschrieben werden.
- Zusammengefaßt heißt das, daß ein Cache-Speicher geschaffen wurde, der direkt entweder mit einer virtuellen oder mit einer physikalischen Adresse adressierbar ist. Eine hierarchische Baumstruktur wird verwendet, um die am längsten unbenutzte Speicherstelle in einer N-Weg-Assoziativgruppe festzustellen, indem N-1 Bits an gespeichertem Speicher verwendet werden. Der LRU-Algorithmus basiert auf einem gespeicherten Speicherbit, welches anzeigt, welche Einrichtung das am längsten unbenutzte Bit ist, und außerdem auf einem Fehlerbit, welches verhindert, daß eine fehlerhafte Speicherstelle als am längsten unbenutzte Speicherstelle bezeichnet wird, so daß verhindert wird, daß Daten dort hingeschrieben werden.
Claims (8)
1. Cache-Speicher, der sowohl mittels virtueller als auch
mittels physikalischer Adressen adressierbar ist, mit:
einer Buseinrichtung (10) zum Empfangen einer Adresse aus
einer externen Quelle, welche gewünschte Daten darstellt,
wobei Adressen einen LSB-Teil (72) und einen Kennungsteil
(76, 80) aufweisen, wobei der LSB-Teil aus einer
vorbestimmten Anzahl von niederwertigen Bits der Adresse und der
Kennungsteil aus den verbleibenden Bits der Adresse gebildet ist
und wobei den Daten sowohl eine physikalische als auch eine
virtuelle Adresse zugeordnet ist;
einem Cache-Datenspeicher (64), der durch den LSB-Teil
(72) der empfangenen Adresse adressierbar ist, um
Auswahldaten darin an LSB-Adressenstellen zu speichern, wobei diese
LSB-Adressenstellen dem LSB-Teil der den Auswahldaten
zugeordneten Adresse entsprechen;
einem Virtuelle-Kennungs-Speicher (68), der durch den
LSB-Teil (72) der empfangenen Adresse adressierbar ist, um
den Kennungsteil (76) der den Auswahldaten zugeordneten
virtuellen
Adresse an LSB-Adressenstellen zu speichern, die dem
LSB-Teil des gespeicherten virtuellen Kennungsteils
entsprechen;
einem Physikalische-Kennungs-Speicher (70), der durch den
LSB-Teil (72) der empfangenen Adresse adressierbar ist, um
den Kennungsteil (80) der den Auswahldaten zugeordneten
physikalischen Adresse an LSB-Adressenstellen zu speichern, die
dem LSB-Teil des gespeicherten physikalischen Kennungsteils
entsprechen;
wobei der Cache-Speicher die Auswahldaten ansprechend auf
die Adressierung der empfangenen Adresse durch den LSB-Teil
(72) ausgibt und der Virtuelle- sowie der
Physikalische-Kennungs-Speicher (68, 70) den Kennungsteil der virtuellen bzw.
der physikalischen Adressen ausgeben, die den Auswahldaten
entsprechen, welche der Cache-Speicher ansprechend auf die
Adressierung durch den LSB-Teil der empfangenen Adresse
ausgibt;
gekennzeichnet durch:
die Tatsache, daß der LSB-Teil der virtuellen Adresse
völlig mit dem der physikalischen Adresse übereinstimmt;
eine an die Buseinrichtung angeschlossene
Arbitriereinrichtung (88), um festzustellen, ob die empfangene Adresse
eine physikalische oder eine virtuelle Adresse ist, und um
ein Steuersignal (90) in einem ersten Zustand auszugeben,
wenn die empfangene Adresse eine virtuelle Adresse ist, und
in einem zweiten Zustand auszugeben, wenn die empfangene
Adresse eine physikalische Adresse ist;
eine durch das Steuersignal (90) gesteuerte Multiplexer-
Einrichtung (78), die über eine Schnittstelle mit dem
Virtuelle- sowie mit dem Physikalische-Kennungsspeicher (68, 70)
verbunden ist, um den virtuellen Kennungsteil (76)
ansprechend
auf den ersten Zustand und den physikalischen
Kennungsteil (80) ansprechend auf den zweiten Zustand auszugeben;
einen Komparator (100) zum Vergleichen des virtuellen oder
des physikalischen Kennungsteils, der durch die Multiplexer-
Einrichtung (78) ausgegeben wird, mit dem Kennungsteil der
empfangenen Adresse; und
einen Schalter (84), der mit dem Ausgang des
Cache-Speichers verbunden ist und durch den Komparator gesteuert wird,
um die Adressdaten des Cache-Speichers auszugeben, wenn der
Komparator eine Übereinstimmung feststellt.
2. Cache-Speicher nach Anspruch 1, dadurch gekennzeichnet,
daß der Cache-Datenspeicher (64) in Blöcken von Daten
organisiert ist und der LSB-Teil der Adresse unterteilt ist in ein
erstes Feld und ein zweites Feld, wobei das erste Feld die
Adressenstelle jedes der Datenblöcke definiert und das zweite
Feld die Lage der Daten in jedem dieser Blöcke definiert,
wobei ferner der Kennungsteil der zugeordneten Adresse der
Auswahldaten den Adressen gemeinsam ist, die allen
Auswahldaten in einem gegebenen Block zugeordnet sind, und wobei der
Virtuelle- sowie der Physikalische-Kennungs-Speicher, die
durch das erste Feld des LSB-Teils der empfangenen Adresse
adressiert werden, so ausgebildet sind, daß weniger
Kennungsteile in diesem Virtuelle- sowie dem Physikalische-Kennungs-
Speicher (68, 70) gespeichert werden müssen.
3. Cache-Speicher nach Anspruch 1 oder Anspruch 2, dadurch
gekennzeichnet, daß der Komparator (100) eine Exklusiv-OR-
Schaltung enthält.
4. Cache-Speicher nach Anspruch 1, dadurch gekennzeichnet,
daß er ferner Mittel umfaßt, um den virtuellen Kennungsteil
und den physikalischen Kennungsteil von Adressen zu
speichern, die aktualisierten Daten entsprechen, welche in dem
Cache-Datenspeicher gespeichert werden, wobei diese
aktualisierten virtuellen Kennungsteile an Adressenstellen in dem
Virtuelle-Kennungs-Speicher (68) bzw. diese physikalischen
Kennungsteile in Adressenstellen in dem
Physikalische-Kennungs-Speicher (70) gespeichert werden, die den LSB-Teilen
der den aktualisierten Daten zugeordneten Adressen
entsprechen.
5. Cache-Speicher nach Anspruch 4, dadurch gekennzeichnet,
daß die Aktualisierungseinrichtung umfaßt:
Mittel zum Ausgeben sowohl des virtuellen Teils als auch
des Kennungsteils der den aktualisierten Daten entsprechenden
Adresse ansprechend auf den Empfang entweder einer virtuellen
oder einer physikalischen Adresse, wobei die Kennungsteile
der virtuellen und der physikalischen Adressen in die
Multiplexer-Einrichtung (78) eingegeben werden und wobei diese
Multiplexer-Einrichtung bidirektional ausgebildet ist, um
eine Schnittstelle für die den aktualisierten Daten
zugeordneten virtuellen und physikalischen Kennungsteile zum
Einspeichern derselben in dem Virtuelle-Kennungs-Speicher (68)
und in dem Physikalische-Kennungs-Speicher (70) zu bilden;
und
die Arbitriereinheit (88) die Multiplexer-Einrichtung in
solcher Weise steuert, daß der virtuelle Kennungsteil in dem
Virtuelle-Kennungs-Speicher und der physikalische
Kennungsteil in dem Physikalische-Kennungs-Speicher an einer
Adressenstelle gespeichert wird, welche dem LSB-Teil der
zugeordneten Adresse der aktualisierten Daten zugeordnet ist.
6. Verfahren zum Adressieren eines Cache-Datenspeichers
sowohl mit virtuellen als auch mit physikalischen Adressen,
umfassend:
das Empfangen einer Adresse für gewünschte Daten aus einer
externen Quelle, wobei die Daten zugeordneten Adressen einen
LSB-Teil und einen Kennungsteil aufweisen, wobei der LSB-Teil
eine vorbestimmte Anzahl von niederwertigen Bits und der
Kennungsteil die verbleibenden Bits umfaßt und wobei Daten
sowohl einer physikalischen als auch einer virtuellen Adresse
zugeordnet sind;
Cache-Daten an Speicherstellen gespeichert werden, die
durch den LSB-Teil der empfangenen Adresse adressierbar sind,
wobei die LSB-Adressenstellen dem LSB-Teil der den
gespeicherten Daten zugeordneten Adresse entsprechen; und
Speichern der Kennungsteile der physikalischen und der
virtuellen Adressen, die den gespeicherten Cache-Daten
zugeordnet sind, wobei die gespeicherten physikalischen und
virtuellen Kennungsteile durch den LSB-Teil der empfangenen
Daten adressierbar sind;
dadurch gekennzeichnet, daß
der LSB-Teil der virtuellen Adressen völlig übereinstimmt
mit dem der physikalischen Adressen;
der gespeicherte virtuelle Kennungsteil ausgewählt wird,
wenn die empfangene Adresse virtuell ist, und der
gespeicherte physikalische Kennungsteil dann, wenn die empfangene
Adresse physikalisch ist;
der empfangene Kennungsteil mit dem ausgewählten
Kennungsteil verglichen wird; und
Daten, die durch den empfangenen LSB-Teil der Adresse
adressiert werden, aus dem Cache-Datenspeicher ausgegeben
werden, wenn der Vergleich zwischen dem empfangenen
Kennungsteil und dem ausgewählten Kennungsteil eine Übereinstimmung
ergibt.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß
ferner der virtuelle und der physikalische Kennungsteil der
aktualisierten Daten gespeichert wird, wenn aktualisierte
Daten in dem Cache-Datenspeicher gespeichert werden, wobei
der virtuelle und der physikalische Kennungsteil an einer
Adressenstelle gespeichert werden, die dem LSB-Teil der
aktualisierten Daten entspricht.
8. Verfahren nach Anspruch 6 oder Anspruch 7, dadurch
gekennzeichnet, daß der Cache-Datenspeicher in Datenblöcke
unterteilt wird und der LSB-Teil von Adressen in ein erstes sowie
ein zweites Feld unterteilt wird, wobei das erste Feld
Datenblöcke und das zweite Feld Adressenstellen innerhalb eines
ausgewählten Blockes definiert und wobei ferner der
Kennungsteil der Adresse, die in dem Cache-Speicher gespeicherten
Daten zugeordnet ist, für alle in einem gegebenen Block
gespeicherten Daten genau gleich ist, der durch das erste Feld
des LSB-Teils adressierte Kennungsteil.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US66685384A | 1984-10-31 | 1984-10-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3586524D1 DE3586524D1 (de) | 1992-09-24 |
DE3586524T2 true DE3586524T2 (de) | 1993-01-21 |
Family
ID=24675763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8585307393T Expired - Fee Related DE3586524T2 (de) | 1984-10-31 | 1985-10-15 | Durch beide, physikalische und virtuelle addressen, addressierbarer cache-speicher. |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0180369B1 (de) |
JP (1) | JPH06100979B2 (de) |
CN (1) | CN1003680B (de) |
DE (1) | DE3586524T2 (de) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2619641B1 (fr) * | 1987-08-22 | 1992-05-07 | Nec Corp | Dispositif de cache hierarchique |
US4996641A (en) * | 1988-04-15 | 1991-02-26 | Motorola, Inc. | Diagnostic mode for a cache |
DE68928454T2 (de) * | 1988-07-04 | 1998-04-23 | Sun Microsystems Inc | Multiprozessorsystem mit hierarchischer cachespeicheranordnung |
GB2260429B (en) * | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
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 |
US5805855A (en) * | 1994-10-05 | 1998-09-08 | International Business Machines Corporation | Data cache array having multiple content addressable fields per cache line |
GB2297398B (en) * | 1995-01-17 | 1999-11-24 | Advanced Risc Mach Ltd | Accessing cache memories |
JP3582782B2 (ja) | 1999-08-20 | 2004-10-27 | ワールドピーコム株式会社 | 飲食店用接客管理装置 |
CN101324868B (zh) * | 2008-07-11 | 2010-06-16 | 中兴通讯股份有限公司 | 处理器与boot flash间的连接装置及实现方法 |
US8615637B2 (en) * | 2009-09-10 | 2013-12-24 | Advanced Micro Devices, Inc. | Systems and methods for processing memory requests in a multi-processor system using a probe engine |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5072542A (de) * | 1973-10-30 | 1975-06-16 |
-
1985
- 1985-10-15 EP EP85307393A patent/EP0180369B1/de not_active Expired - Lifetime
- 1985-10-15 DE DE8585307393T patent/DE3586524T2/de not_active Expired - Fee Related
- 1985-10-30 JP JP60243820A patent/JPH06100979B2/ja not_active Expired - Lifetime
- 1985-10-30 CN CN85108184.3A patent/CN1003680B/zh not_active Expired
Also Published As
Publication number | Publication date |
---|---|
EP0180369A2 (de) | 1986-05-07 |
EP0180369A3 (en) | 1988-03-16 |
EP0180369B1 (de) | 1992-08-19 |
JPH06100979B2 (ja) | 1994-12-12 |
JPS61180347A (ja) | 1986-08-13 |
DE3586524D1 (de) | 1992-09-24 |
CN85108184A (zh) | 1987-01-07 |
CN1003680B (zh) | 1989-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
DE2235841C2 (de) | Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern | |
DE69131610T2 (de) | Ermittlung des Speicheradressraums durch Verwendung von programmierbaren Grenzregistern mit Komparatoren mit einzelnen Ausgängen | |
DE69030945T2 (de) | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69225622T2 (de) | Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE2749850C3 (de) | Hybrider Halbleiterspeicher mit assoziativer Seitenadressierung, Seitenaustausch und Steuerung auf dem Chip | |
DE69432314T2 (de) | Cachespeicher mit aufgeteiltem pegel | |
DE68907518T2 (de) | Inhaltsadressierte Speicheranordnung. | |
DE68923403T2 (de) | Verfahren und Anordnung zur Adressierung eines Seitenmodus-Speichers in einem Computersystem. | |
DE69721368T2 (de) | Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69230211T2 (de) | Integrierter Speicher, Verwaltungsverfahren und resultierendes Informationssystem | |
DE68923694T2 (de) | LRU-Fehlerdetektion unter Verwendung der Sammlung der geschriebenen und gelesenen LRU-Bits. | |
DE3587031T2 (de) | Zugriffpruefungseinrichtung fuer digitale datenverarbeitungsanordnung, welche einen speicher mit seitenabruf hat. | |
DE3888438T2 (de) | Cachespeichersteuerungsvorrichtung für eine Datenverarbeitungsanordnung mit virtuellem Speicher. | |
DE3586524T2 (de) | Durch beide, physikalische und virtuelle addressen, addressierbarer cache-speicher. | |
DE3046912C2 (de) | Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage | |
DE3873388T2 (de) | Cache-speicher. | |
DE69029815T2 (de) | Zentralisierte referenz- und änderungstabelle für eine virtuelle speicheranordnung | |
DE69715993T2 (de) | Cache-Speicher mit Verwendung fehlerhaften Ettikettenspeichers | |
DE69623691T2 (de) | Ein Gerät und Verfahren, das ein für Cache-Kollisionen weniger anfälliges Cache-Indizierungsverfahren vorsieht |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |