DE69030945T2 - Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung - Google Patents
Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur GeschwindigkeitserhöhungInfo
- Publication number
- DE69030945T2 DE69030945T2 DE69030945T DE69030945T DE69030945T2 DE 69030945 T2 DE69030945 T2 DE 69030945T2 DE 69030945 T DE69030945 T DE 69030945T DE 69030945 T DE69030945 T DE 69030945T DE 69030945 T2 DE69030945 T2 DE 69030945T2
- Authority
- DE
- Germany
- Prior art keywords
- virtual
- tlb
- cache
- memory
- data
- 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 - Lifetime
Links
- 238000013519 translation Methods 0.000 title claims description 31
- 239000000872 buffer Substances 0.000 title claims description 10
- 230000015654 memory Effects 0.000 claims description 88
- 238000000034 method Methods 0.000 claims description 14
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000014616 translation Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 13
- 230000008901 benefit Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004040 coloring Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 101000911753 Homo sapiens Protein FAM107B Proteins 0.000 description 1
- 102100026983 Protein FAM107B Human genes 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003749 cleanliness Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012546 transfer Methods 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/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/1054—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 physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/653—Page colouring
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 Umsetz-Look-Aside- Puffer (TLB) für das Umsetzen virtueller Adressen in physikalische Adressen.
- Bei einem Computersystem für mehrere Anwender können verschiedene unterschiedliche Programme den Bedarf haben, dieselbe virtuelle Adresse zu benutzen. Um dies auszuführen, enthält ein Umsetz-Look-Aside- Puffer (TLB) eine Tabelle, welche die "virtuelle" Adresse, die von mehreren Programmen benutzt werden kann, zu einer separaten "physikalischen" Adresse für jedes Programm dirigiert. Dies erfolgt oft, da jedes Programm es bevorzugt, mit Adresse 0 zu beginnen. Ein TLB kann auch verwendet werden, wenn zwei unterschiedliche virtuelle Adressen sich dieselbe physikalische Adresse teilen und das System verfolgen muß, wer in diese physikalische Adresse als letzter geschrieben hat. Ein TLB kann demgemäß die Möglichkeit geben, Speicherzugriffe zu kontrollieren und zu verfolgen. Einige Teile des Speichers können beispielsweise für bestimmte Programme nicht schreibbar bzw. nicht lesbar sein. In einer Version unterscheidet der TLB zwischen derselben virtuellen Adresse für verschiedene Programme unter Verwendung eines Prozeßidentifikationscodes (PID), der jedem Programm zugeordnet ist.
- Der TLB kann vollständig assoziativ sein, direkttabelliert sein oder irgendwo dazwischen. Bei einem vollständig assoziativen TLB kann eine bestimmte Umsetzung irgendwo in dem TLB sein. Bei jeder Speicheradresse muß die virtuelle Adresse mit dem gesamten Inhalt des TLB verglichen werden. Dies wäre, wenn es sequentiell erfolgt, sehr zeitaufwendig und wird deshalb gleichzeitig durchgeführt, indem man eine große Menge an Hardware und Komparatoren einsetzt. Für einen direkttabellierten TLB gibt es eine einzelne Stelle in dem TLB für die Umsetzung jeder virtuellen Seitenadresse. Die virtuelle Seitenadresse wird demgemäß als ein Index für die richtige Stelle in dem TLB für die Umsetzung verwendet. Wenn die Eingabe sich nicht in dem TLB befindet, erfolgt ein Obergang auf Software, die eine vollständige Liste aller Umsetzungen enthält.
- Obwohl ein Prozessor nur einen TLB und einen Hauptspeicher enthalten kann, wird oft ein Cachespeicher in Verbindung mit einem TLB verwendet. Der Cachespeicher ist ein kleiner Speicher, auf den schnell zugegriffen werden kann und der die Daten (oder Befehle) speichert, auf die zuletzt zugegriffen wurde, in der Erwartung, daß diese erneut benötigt werden, womit die längere Zugriffszeit zum Hauptspeicher eliminiert werden kann. Ein Cachespeicher hat einen Datenabschnitt und einen Tagabschnitt. Der Tagabschnitt enthält die Adressen der Daten, die in dem Datenabschnitt gespeichert sind. Jede von einem Programm angeforderte Adresse wird mit den Tagadressen verglichen, um zu sehen, ob die Daten vorhanden sind. Ist dies der Fall, wird auf die Daten von dem Datencache zugegriffen. Anderenfalls muß das System zum Hauptspeicher für diese Daten übergehen. In diesem Falle werden die Daten verwendet und ebenfalls im Cache gespeichert, so daß sie für den nächsten Zugriff verfügbar sind. Typischerweise werden die Daten von dem Hauptspeicher zu dem Cache überführt, und auf sie wird dann von dem Cache zugegriffen. Auf diese Weise ist nur ein einziger Zugriffspfad erforderlich, da es keine Notwendigkeit für einen separaten Zugriff direkt auf den Hauptspeicher unter Umgehung des Cache gibt.
- Daten werden in den Cache typischerweise in einem Block eingeschrieben, der die gewünschten Daten und andere Bytes von Daten in demselben Speicherbereich enthält. Dies erfolgt, weil es wahrscheinlich ist, daß ein späterer Speicherzugriff auf denselben Block erfolgen wird.
- Ein "vollständig assoziativer" Cache kann so viele Blöcke halten, wie in den Cache passen, unabhängig davon, wo die Blöcke in dem Hauptspeicher lokalisiert waren. Bei jedem Speicherzugriff müssen jedoch alle Tags mit der Adresse verglichen werden, was erheblich den Speicherzugriff verlangsamt oder mehr Hardware benötigt. Ein weniger teures und schnelleres Cache-System ist ein "direkttabellierter" Cache, wo jeder Block eine zugeordnete Lokalisierung in dem Cache hat. Diese Lokalisierung wird von einer Anzahl von Blöcken benutzt. Bei einem Speicherzugriff braucht nur auf diese Lokalisierung zugegriffen zu werden, um festzustellen, ob der Tag für den gewünschten Block vorhanden ist. Dies hat den Vorteil geringerer Kosten und größerer Geschwindigkeit, jedoch den Nachteil, daß nur ein Block aus der Gruppe, die der einzelnen Cache- Lokalisierung zugeordnet ist, in dem Cache zu irgendeinem Zeitpunkt vorhanden sein kann. Der Hauptgeschwindigkeitsvorteil der direkttabellierten Struktur besteht darin, daß der Prozessor beginnen kann, die Daten parallel mit einer Bestimmung zu benutzen, daß es sich um die korrekten Daten handelt (Cache-Treffer). Wenn es einen Cache-Fehltreffer gibt, wird die Verwendung der Daten verworfen.
- Der Standard-Cachespeicher ist ein physikalischer Cache, der einen physikalischen Index nimmt und physikalische Tags hat (IBM 3090, DEC VAX 11/780, MIPS RC3260). Ein physikalischer Cache wird lokalisiert, nachdem der TLB eine virtuelle Adresse in eine physikalische Adresse umgesetzt hat (siehe Fig. 5). Dieser Typ von Cache verwendet die Adresse, nachdem sie in eine physikalische Adresse von dem TLB umgesetzt worden ist und hat demgemäß eine physikalische Adresse für den Vergleich mit einem physikalischen Cache-Tag. Ein anderer Cachetyp ist ein virtueller Cache, der mit einer virtuellen Adresse indexiert wird. Ein virtueller Cache eliminiert die Notwendigkeit für einen TLB im Falle eines Cache- Treffers, womit der Speicherzugriff beschleunigt wird, da keine TLB-Umsetzung zu erfolgen hat, bevor zu dem Gache übergegangen wird. Ein Typ (Sun 3/200) speichert einen virtuellen Adreßtag an einem virtuellen Adreßindex (siehe Fig. 6). Dieser Typ von virtuellem Cache-System erfordert ein Systemmanagement, um sicherzustellen, daß virtuelle Adressen, die in eine einzelne physikalische Adresse tabelliert werden, in angemessener Weise gehandhabt werden. Ein anderer Typ von virtuellem Cache verwendet virtuelle Indices, doch physikalische Tags (ELXSI 6400). Bei diesem Typ arbeitet ein TLB parallel zum Erzeugen der physikalischen Adresse zwecks Vergleich mit dem Cachetag, um zu bestimmen, ob ein Treffer vorliegt (siehe Fig. 7).
- EP-A-0 019 358 offenbart ein hierarchisches Datenspeichersystem, bei dem ein Cachespeicher, abgespeichert auf einem RAM, die virtuelle Adresse hält, die reale Adresse und die Daten von bestimmten Datengegenständen und zusätzlich ein Änderungsbit, das anzeigt, ob der jeweilige Datengegenstand in vorgehenden Operationen geändert worden ist. Um mehrfache Rückschreiboperationen zum Hauptspeicher von geänderten Daten zu vermeiden, ist eine Änderungsliste nach Art einer Schlangenbildung vorgesehen, welche die Adressen geänderter Datengegenstände speichert und geänderte Datengegenstände des Cache in den Hauptspeicher nur dann rückschreibt, wenn ein Schlangenübertrag erfolgt. Das Datenspeichersystem verarbeitet ferner eine Adreßumsetzeinheit, auf die mit der virtuellen Adresse von der Verarbeitungseinheit zugegriffen wird und sie in eine reale Adresse umsetzt. Die reale Adresse wird verwendet, um in dem Cache gespeichert zu werden, auf das mit der virtuellen Adresse zugegriffen wird und darüber hinaus für direkte Adressierung des Hauptspeichers.
- Der Artikel mit dem Titel "FAST CACHE ACCESS BASED ON MOST RECENTLY USED HITS" in IBM Technical Disclosure Bulletin, Band 30, Nr. 10, Seiten 1-4 (März 1988) zeigt eine Operation für das Adressieren eines Speichers mit einem Umsetz-Look-Aside-Puffer (TLD) für den Empfang der Seitenzahl an einer virtuellen Adresse und deren Umsetzung in eine korrespondierende physikalische Adresse. Die vollständige virtuelle Adresse wird dem TLB für nachfolgende Verarbeitung darin zugeführt, zusätzlich wird ein Abschnitt der Umsetzung als ein Multiplexauswählsignal für das Indexieren eines von acht möglichen Auswählsignalen für nachfolgende Multiplexierung in dem Cache verwendet unter Erzielung der Auswahl der physikalischen Adresse der Daten durch eine Kaskade von Multiplexoperationen. Der Abschnitt der umgesetzten physikalischen Adresse, der als Auswähleingang für das Multiplexieren eines physikalischen Adreßcachespeichers verwendet wird, verwertet die Tatsache, daß ein hoher Prozentsatz von Anfragen sich auf Daten bezieht, die in einem gerade zuletzt benutzten Bereich abgespeichert sind, so daß für diese Zugriffe eine hohe Geschwindigkeit erzielt wird, indem die Logik umgangen wird, die konventionellerweise die physikalische Adresse bestimmt, auf die zuzugreifen ist. Deshalb werden zwei Operationen ausgeführt, um die Adresse eines Datengegenstandes zu bestimmen. Eine primäre Operation unter Verwendung einer Multiplexerkaskade für das Entnehmen der Daten in einer zuletzt verwendeten Region und eine sekundäre Operation unter Verwendung eines vollständigen TLB.
- Es ist der Gegenstand der Erfindung, eine Vorrichtung für das Adressieren eines physikalischen Speichers unter Verwendung einer gegebenen virtuellen Adresse mit erhöhter Geschwindigkeit zu schaffen. Es ist der weitere Gegenstand der Erfindung, ein Verfahren für das Betreiben dieser Vorrichtung zu schaffen.
- Diese Gegenstände werden in einer Vorrichtung mit den Merkmalen des Anspruchs 1 und durch ein Verfahren mit den Merkmalen des Anspruchs 10 erreicht.
- Die Vorrichtung gemäß der Erfindung ermöglicht es, eine Umsetzung eines Teils einer virtuellen Seitennummer in einen Teil einer physikalischen Seitennummer in einer "TLB-Scheibe" vorzunehmen. Die Scheibenumsetzung wird verwendet, um in einem physikalischen Cachespeicher zu indexieren, der virtuellen Text zusätzlich zu physikalischem Text aufweist und dessen Adressen physikalisch sind. Durch Vergleich des virtuellen Tag mit der eingegebenen virtuellen Adressenseitennummer kann bestimmt werden, ob es einen Treffer oder einen Fehltreffer in Kombination der TLB-Scheibe und des Cachespeichers gibt.
- Durch Umsetzen nur einiger weniger Bits der virtuellen Adresse in einige wenige Bits einer physikalischen Adresse wird die Geschwindigkeit der Vorrichtung erheblich verbessert. Diese erhöhte Geschwindigkeit wird erzielt, indem man die TLB-Scheibe direkttabelliert ausführt und durch Verwerten des Vorteils ihrer kleinen Größe, um sie mit spezieller Hardware auszugestalten (entweder Hochgeschwindigkeits-RAM oder mit Latchschaltungen und Multiplexern).
- Es gibt keinen separaten Vergleich an dem TLB-Scheibenausgang für die Bestimmung eines TLB-Scheibentreffers. Der nachfolgende Cache- Tag-Vergleich wird verwendet, um anzuzeigen sowohl, ob die Umsetzung korrekt war als auch ob es einen Cachetreffer gibt. Um diesen Doppelzweckvergleich zu erzielen, muß jedoch ein virtueller Tag mit einem physikalischen Cache kombiniert werden, um zu bestimmen, ob es einen Treffer gibt, da die gesamte virtuelle Adresse nicht umgesetzt worden ist und deshalb keine umgesetzte physikalische Adresse mit einem physikalischen Tag verglichen werden kann.
- Ein vollständiger TLB kann nach wie vor in dem Falle verwendet werden, daß ein Fehltreffer vorliegt, jedoch braucht der vollständige TLB nicht so schnell zu sein und erfordert demgemäß keine spezielle Bank von RAMS. Der kleine Hardwaremechanismus der vorliegenden Erfindung macht es möglich, die Adreßumsetzung auf demselben Chip wie den Prozessor auszubilden, selbst bei einer Technik mit begrenzter Dichte, was erheblich die Adreßzugriffsgeschwindigkeit auf einen physikalischen Cache erhöht.
- Die TLB-Scheibe der vorliegenden Erfindung ist viel kleiner und deshalb viel schneller als ein normaler TLB. Sie ist in der Größenordnung von 100 mal kleiner. Es gibt mehrere Faktoren, welche es ermöglichen, die TLB-Scheibe klein zu halten. Da kein Vergleich zum Bestimmen eines Fehltreffers erfolgt, gibt es keine Notwendigkeit, die virtuelle Seitennummer zu speichern. Auch brauchen nur ein paar physikalische Seitenzahlenbits und einige wenige Einträge vorgesehen zu werden infolge der Verwendung einer großen Seitenabmessung und eines Zwei-Pegel-Cache.
- Vorzugsweise werden separate TLB-Scheiben für Befehle und Daten verwendet. Dieses macht jede der TLB-Scheiben noch kleiner und schneller. Man erhält Vorteile, vergleichbar mit den Vorteilen eines satzassoziativen Zweiwege-Speichers, bei dem es zwei mögliche Plätze für Umsetzungen in einen bestimmten Block gibt, womit die Chancen auf einen Treffer erhöht werden. Da die TLB-Scheibe keinen Vergleich ausführt, kann eine satzassoziative Zweiwege-Struktur nicht direkt verwendet werden.
- Für ein vollständigeres Verständnis der Natur und Vorteile der Erfindung wird auf die nachfolgende detaillierte Beschreibung Bezug genommen in Verbindung mit den begleitenden Zeichnungen, in welchen:
- Fig. 1 ein Diagramm eines vollständig assoiiativen Umsetz- Look-Aside-Puffers (TLB) nach dem Stand der Technik ist;
- Fig. 2 ein Diagramm des Formats einer TLB-Eingabe nach dem Stand der Technik ist;
- Fig. 3 ein Diagramm eines direkttabellierten Cachesystems nach dem Stand der Technik ist;
- Fig. 4 ein Diagramm eines satzassoziativen Zweiwege-Cachesystems nach dem Stand der Technik ist;
- Fig. 5 ein Diagramm eines physikalischen Cachesystems mit physikalischen Tags nach dem Stand der Technik ist;
- Fig. 6 ein Diagramm eines virtuellen Cachesystems mit virtuellen Tags nach dem Stand der Technik ist;
- Fig. 7 ein Diagramm eines virtuellen Cachesystems mit physikalischen Tags nach dem Stand der Technik ist;
- Fig. 8 ein Hochpegel-Diagramm eines TLB-Scheibensystems gemäß der vorliegenden Erfindung ist;
- Fig. 9 ein mehr ins Einzelne gehende Diagramm des Systems der Fig. 8 ist;
- Fig. 10 ein Flußdiagramm der Zustandsmaschine der Fig. 9 ist; und
- Fig. 11 ein Schaltungsdiagramm der TLB-Scheibe ist.
- Fig. 1 zeigt einen vollständig assoziativen Umsetz-Look-Aside- Puffer (TLB) nach dem Stand der Technik. Eine virtuelle Adresse wird von einem Computersystem (nicht dargestellt) in einem virtuellen Adreßregister 10 produziert. Die Bits höherer Ordnung der Adresse bilden eine virtuelle Seitenzahl (VPN) 12. Die Bits niedriger Ordnung bilden einen Versatz 14, der die exakte Lokalisierung des gewünschten Bytes in der Seite wiedergibt. Ein Prozeß ID (PID) 16, gespeichert in dem System, identifiziert den jeweils ablaufenden Prozeß. Ein TLB 18 ist vorgesehen, typischerweise in RAM. TLB 18 kann beispielsweise 64 Eingaben, wie Eingabe 20, aufweisen. Die Eingabe 20 umfaßt die virtuelle Seitennummer (VPN) 22, Prozeß ID (PID) 24 und die entsprechende physikalische Seitenzahl (PPN) 26.
- Eine Anzahl von Komparatoren 28 ist vorgesehen. Wenn es 64 Einträge in dem TLB gibt, gibt es 64 Komparatoren 28. Jeder Komparator vergleicht PID 16 und VPN 12 mit jedem der VPNS 22 und PIDS 24 in TLB 20. Die eine, die paßt, wird durch die Auswähllogik 30 bestimmt, die ihrerseits einen Adreßeingang auf Leitungen 32 zu dem TLB legt, um zu bewirken, daß die richtige PPN 26 auf Leitungen 34 als physikalische Seitennummer ausgegeben wird. Die PPN wird mit dem Versatz auf Leitungen 36 kombiniert, um die gesamte physikalische Adresse zu liefern. Wie man erkennen kann, wird ein erheblicher Bedarf an Hardware benötigt, um den gleichzeitigen Vergleich aller Einträge im TLB 20 zu ermöglichen. Alternativ könnte für einen direkttabellierten TLB ein einziger Komparator verwendet werden, wobei jeder Eintrag eine einzige zugeordnete Lokalisierung aufweist, zu der ein Teil der virtuellen Adresse indexiert. Der TLB-Eintrag 20 kann eingeschrieben und modifiziert werden, um die jeweiligen Programme aufzunehmen, die das System bei irgendeinem Zeitpunkt benutzt. Wie man erkennen kann, können mehrere unterschiedliche Programme dieselbe VPN haben, werden jedoch unterschiedliche PIDS besitzen, was die Decodierung zu unterschiedlichen physikalischen Adressen ermöglicht.
- Der in Fig. 1 gezeigte TLB ist vollständig assoziativ: jede Eingabe kann sich bei irgendeiner Lokalisierung befinden. Alternativ könnte der TLB direkttabelliert sein, dann würde jeder TLB-Eintrag eine einzige zugeordnete Lokalisierung aufweisen, und ein Teil der virtuellen Adresse würde auf diese Lokalisierung weisen. Anstatt demgemäß viele Komparatoren hinter dem TLB vorzusehen, könnte eine Hinweislogik vor dem TLB zusammen mit einem einzigen Komparator eingesetzt werden.
- Fig. 2 zeigt eine typische TLB-Eingabe nach dem Stand der Technik, die oft mehr Bits haben wird als die VPN, PID und PPN aus Fig. 1. Zusätzlich zu diesen Zahlen umfaßt die TLB-Eingabe ein Bit (N), das anzeigt, daß die Seite "nicht cachierbar ist". Wenn dieses Bit gesetzt ist, wird die Seite als nicht-cachierbar markiert, und das System greift direkt auf den Hauptspeicher zu anstatt zunächst auf den Cache. Das Bit "D" zeigt an, daß die Seite "verschmutzt" ist. Wenn dieses Bit gesetzt ist, ist die Seite beschreibbar, und das Bit dient deshalb als ein Schreibschutzbit, das die Software verwenden kann, um eine Datenveränderung zu verhindern. Das "V"-Bit ist ein Validitätsbit, das, wenn es gesetzt ist, anzeigt, daß der TLB-Eintrag gültig ist. Andernfalls erfolgt ein Fehltreffer. Das "G"-Bit ist ein globales Bit. Wenn dieses Bit gesetzt ist, werden die PID-Anpaßerfordernisse ignoriert für eine gültige Umsetzung. Das Globalbit ermöglicht mehreren Programmen, sich denselben Raum zu teilen (dieselben virtuellen Seitenzahlen zu denselben physikalischen Seitenzahlen zu tabellieren). Die mit "0" markierten Bits sind Reservebits.
- Fig. 3 ist ein Blockdiagramm eines typischen direkttabellierten Cachesystems nach dem Stand der Technik. Das Cachesystem ermöglicht Adressen, die häufig aufgerufen werden, in einem Cache-RAM 40 zu speichern, auf das schnell zugegriffen wird. Ein Abschnitt der Adresse 42 ist als ein Index vorgesehen, der ein bestimmtes Tag 46 von einem Tag- RAM 48 auswählt und ein bestimmtes Datenbyte 50 in einem Block 52 in dem Cache-RAM 40. Da auf sequentielle Speicherlokalisierungen oft zugegriffen wird, wird jedes Datenbyte, das in den Cache gezogen ist, typischerweise mit einem Block umgebender Bytes gezogen, der in den Cacherahmen 52 des Cache-RAM eingefügt wird.
- Das in Fig. 3 gezeigte System ist ein "direkttabelliertes" Cache, bei welchem jeder Adresse ein bestimmter Cache-Rahmen 52 zugeordnet ist, in welchem sie zu speichern ist. Eine Gruppe von verschiedenen Speicherblöcken ist demselben Cache-Rahmen zugeordnet. Ein Abschnitt der Adresse 42 dient als ein Index zum Auswählen des jeweiligen Cache-Rahmens, basierend auf der Adresse. Um zu bestimmen, ob die exakt gewünschte Adresse sich in dem ausgewählten Rahmen befindet, wird der Tag 46 mit dem Abschnitt höherer Ordnung der Adresse 42 mittels Komparator 54 verglichen. Die Begrenzung eines Cache in dieser Art ist, daß nur ein einzelner Block von jeder Gruppe zu irgendeinem Zeitpunkt gespeichert sein kann.
- Ein anderer Typ von Cache ist ein vollständig assoziativer Cache, bei dem jede Adresse irgendwo in dem Cache-Rahmen gespeichert sein kann. Dieser Typ von Cache erfordert jedoch, daß alle Tags im Tag-RAM 48 mit der Adresse verglichen werden. Dies benötigt ein System mit einer umfangreichen Hardware, wie die multiplen Komparatoren der Fig. 1 oder ein System, das viel langsamer ist wegen der Notwendigkeit, eine große Zahl aufeinanderfolgender Vergleiche mit all den Tags im RAM 48 auszuführen.
- Fig. 4 zeigt ein System nach dem Stand der Technik für die Verbesserung des Trefferverhältnisses bei einem direkttabellierten Cache. Zwei Caches sind parallel vorgesehen mit zwei Tag-RAMs parallel zueinander. Wenn auf einen Block X zugegriffen wird, werden beide Tags mit der Adresse verglichen. Demgemäß können zwei unterschiedliche Blöcke von derselben Gruppe gleichzeitig präsent sein. Dieser Typ von System kann auf mehrere parallele Caches ausgedehnt werden, doch ist zwei eine hoch effiziente Zahl.
- Eine Kombination eines Caches mit einem TLB kann auf zweierlei Weise erfolgen. Der Cache bearbeitet eine von dem Computersystem erzeugte Adresse und, wie aus Fig. 1 ersichtlich, sind zwei Adressen vorhanden, die virtuelle Adresse und die physikalische Adresse.
- Ein physikalisches Cachesystem nach dem Stand der Technik mit physikalischen Tags ist in Fig. 5 gezeigt. Ein TLB 66 bearbeitet die virtuelle Adresse zum Erzeugen einer physikalischen Adresse. Diese physikalische Adresse wird dann dem physikalischen Cache 68 bereitgestellt. Wenn es einen Fehltreffer gibt, wird die Adresse danach zu dem Hauptspeicher 70 weitergeleitet.
- Fig. 6 zeigt ein System, bei dem ein virtueller Cache mit virtuellen Tags verwendet wird, um eine virtuelle Adresse zu bearbeiten, bevor die TLB-Umsetzung erfolgt. Ein virtueller Cache 60 empfängt die virtuelle Adresse, und wenn ein Fehltreffer vorliegt, wird die Adresse dem TLB 62 zugeführt. Ein physikalischer Adreßausgang von TLB 62 kann dann dem Hauptspeicher 64 zur Verfügung gestellt werden.
- Fig. 7 zeigt einen virtuellen Cache mit physikalischen Tags. Die virtuelle Adresse wird einem Cache 71 und einem TLB 73 parallel zugeführt. Durch Indexieren in den Cache direkt mit der virtuellen Adresse können Daten (oder ein Befehl) ohne Warten auf eine Umsetzung entnommen werden. Die Umsetzung erfolgt parallel und wird in einem Komparator 75 mit einem physikalischen Tag verglichen. Wenn ein Fehltreffer vorliegt, werden die Cachedaten nicht verwertet, und die TLB-Umsetzung wird vorgenommen, um die korrekten Daten dem Hauptspeicher 77 zu entnehmen.
- Fig. 8 ist ein vereinfachtes Diagramm des TLB-Scheibensystems gemäß der vorliegenden Erfindung. Eine virtuelle Adresse 72 wird bereitgestellt, die eine virtuelle Seitenzahl (VPN) 74 und einen Versatz 76 umfaßt. Die niedigststelligen drei Bits von (VPN) 74 werden auf Leitungen 78 als eine Adresse zu einem Speicher (TLB-Scheibe) 82 übertragen, der 8 Einträge von 4 Bits enhält (eine von 4 verschiedene Zahl könnte verwendet werden). Der Ausgang der TLB-Scheibe 82 wird als ein physikalischer Index verwendet, kombiniert mit dem Versatz 76, um einen physikalischen Cache 88 und einen virtuellen Tag-Speicher 90 zu adressieren. Der Versatz 76 wird auf Leitungen 92 zum Cache 88 überführt, um ein bestimmtes Byte 94 in einem Block 96 auszuwählen, angezeigt durch einige der Versatzbits und die Bits höherer Ordnung von der TLB-Scheibe 82. Ein virtueller Tag 98, zugeordnet dem Block 96, wird einem Komparator 100 für Vergleich mit der vollständigen VPN 74 zugeführt. Der Vergleich kann günstigerweise einen Treffer ergeben. Es ist festzuhalten, daß irgendeine Anzahl von Indexierschemata verwendet werden kann und daß ein Block im Cache 88 nicht einer Seite zu entsprechen braucht.
- Jeder der acht Einträge in der TLB-Scheibe 82 speichert den physikalischen Index zum Cache 88 für die letzte verwendete virtuelle Adresse, deren niedrigststellige drei Seitenbits der Adresse des Eintrags in der TLB-Scheibe 82 entsprechen. Wenn demgemäß eine nachfolgende Bezugnahme auf dieselbe virtuelle Adresse greift, ergibt sich ein Cachetreffer. In dem Fall eines TLB-Scheiben- oder Cachefehltreffers muß eine vollständige TLB-Umsetzung erfolgen. Es ist festzuhalten, daß, weil es keine getrennte Treffer/Fehltreffer-Bestimmung für die TLB-Scheibe gibt, ein Fehltreffer auf entweder die TLB-Scheibe oder den Cache zurückzuführen sein kann. Die vollständige TLB-Umsetzung ermöglicht eine Bestimmung, ob es ein TLB-Scheiben-Fehltreffer oder ein Cache-Fehltreffer war. Für einen Cache-Fehltreffer werden die korrekten Daten in den Cache 88 geholt und gespeichert. Für einen TLB-Scheiben-Fehltreffer wird die TLB- Scheibe 82 aufgefrischt. Da Adressen häufig sequentiell aufgerufen werden, stellt die Verwendung von den nierigstelligen drei Bits der VPN sicher, daß eine sequentielle Serie von 8 Adressen in der TLB-Scheibe 82 gespeichert werden kann. Die TLB-Scheibe könnte mit von den drei niedigstelligen Bits der VPN abweichenden Zahl implementiert werden.
- Fig. 9 zeigt eine bevorzugte Ausführungsform der TLB-Scheibe gemäß der vorliegenden Erfindung in größeren Einzelheiten. Der TLB- Scheibenmechanismus ist in einem Prozessorchip 102 enthalten. Zwei TLB- Scheiben sind vorgesehen, eine TLB-Datenscheibe 104 und TLB-Befehlsscheibe 106 (104 und 106 sind in der Realität ein einziger Logikschaltkreis mit einem Steuersignal, das den einen bzw. anderen Abschnitt auswählt). Der Zutreffende, welcher zu verwenden ist, wird durch einen Multiplexer 108 unter Steuerung durch eine Wählleitung 110 bestimmt, welche die eine oder andere auswählt, abhängig davon, ob die Operation für Daten oder für einen Befehl bestimmt ist, festgelegt durch die Decodierschaltung des Prozessors (nicht dargestellt). Drei Bits einer virtuellen Adresse 112 werden auf Leitungen 114 sowohl der TLB-Datenscheibe 104 als auch der TLB-Befehlsscheibe 106 zugeführt.
- Der physikalische Index von der entsprechenden Scheibe wird einem Cache-RAM 120 zugeführt. Cache-RAM 120 enthält sowohl den Tag als auch die Daten für den ausgewählten Block. In der dargestellten bevorzugten Ausführungsform sind zwei parallele Caches nach der in Fig. 4 gezeigten Art für einen satzassoziativen Zweiwege-Cache vorgesehen. Hier jedoch sind die Tags virtuelle Tags. Beide Tags werden ausgewählt und den Komparatoren 122 bzw. 124 zugeführt. Diese Komparatoren vergleichen die Tags mit der virtuellen Seitennummer, um zu bestimmen, ob einer von ihnen ein Treffer ist und welcher der korrekte Tag ist. Eine Logikschaltung 126 bestimmt, welcher der korrekte Tag ist und wählt die entsprechenden Daten durch einen Wähleingang 128 zu einem Multiplexer 130. Die richtigen Daten werden dann auf der Datenleitung 132 zum Prozessor 102 zurückgeführt. Die Logikschaltung 126 liefert auch eine Treffer-/Fehltrefferanzeige auf einer Leitung 134 an die Zustandsmaschinenlogik 136 im Prozessor 102. Im Stand der Technik würden zwei Treffer-/Fehltrefferleitungen benötigt, eine für den Cache und eine für den TLB.
- Der vollständige TLB ist in einer Ausführungsform in einem Bereich 140 des Cache-RAM 120 gespeichert.
- Die vorliegende Erfindung wird vorzugsweise in einem System implementiert, das einen virtuellen Cache mit virtuellen Tags verwendet, bevor auf die TLB-Scheibe zugegriffen wird. Treffer in diesem primären Cache eliminieren die Bezugnahme auf die TLB-Scheibe und ergeben insgesamt ein befriedigendes Trefferverhältnis, um den Mechanismus zu rechtfertigen. Auf die TLB-Scheibe wird erst zugegriffen, nachdem ein Fehltreffer in diesem primären virtuellen Cache vorliegt. In der Ausführungsform der Fig. 9 ist der virtuelle Cache in RAM 150 gespeichert, und der Vergleich verwendet einen Komparator 152. Das Treffer-/Fehltreffer Signal wird auf Leitung 154 bereitgestellt. Die Zustandsmaschine 136 umfaßt Logikschaltungen für den Zugriff auf die TLB-Scheibe 104, 106 bei einem Cache-Fehltreffer. Die TLB-Scheibenumsetzung erfolgt in der Realität parallel, um eine verbesserte Geschwindigkeit zu erzielen, doch wenn es einen virtuellen Cache-Treffer gibt, wählt die Trefferleitung 154 die Daten aus Cache 150, indem ein Wählsignal dem Multiplexer 156 zugeführt wird.
- Ein Flußdiagramm, das die Wirkungsweise der Zustandsmaschine 136 beschreibt, ist in Fig. 10 gezeigt. Bei der Bestimmung, daß ein virtueller Tag-Cache-Fehltreffer vorliegt (Schritt A), wird der vollständige TLB 140 gelesen (Schritt B), und sein Inhalt wird in einem Register A in der Zustandsmaschine gespeichert. Wenn auch der vollständige TLB einen Fehltreffer liefert (Schritt C), wird eine Flagge gesetzt, und Software übernimmt es, ein vollständiges Lesen aus dem Speicher vorzunehmen und die entsprechenden Resultate im vollständigen TLB zu speichern. Wenn sich ein Treffer in dem vollständigen TLB ergibt, wird der vollständige TLB mit der TLB-Scheibe verglichen (Schritt D). Bei einer Passung bedeutet dies einen Cache-Fehltreffer. Wenn es keine Passung gibt, zeigt dies einen TLB-Scheiben-Fehltreffer. Für einen TLB-Scheiben-Fehltreffer wird der korrekte physikalische Index, wie durch den vollständigen TLB bestimmt, in die richtige TLB-Scheibenposition eingeschrieben (Schritt E).
- Wenn ein Cache-Fehltreffer vorlag, werden die beiden physikalischen Tags gelesen und in Registern B und C in der Zustandsmaschine gespeichert (Schritt F). (In einer Ausführungsform werden die physikalischen Tags in einem reservierten Abschnitt des Cache gespeichert, doch könnte ein separates RAM für die physikalischen Tags vorhanden sein). Der Inhalt des Registers A (vollständiger TLB) und der Register B und C (Tags 1 und 2) wird dann verglichen (Schritt G). Wenn es eine Passung bei einem dieser Vergleiche gibt, zeigt dies, daß es tatsächlich ein Cache-Treffer war, daß jedoch die beiden virtuellen Adressen in dieselbe einzelne physikalische Adresse tabelliert wurden. Um einen virtuellen Tag-Treffer mit der nächsten Referenz auf dieser selben Cache-Leitung zu bewirken, wird der virtuelle Tag korrigiert durch Kopieren des korrekten PID in den Cache-Tag (Schritt H), und die Cache-Daten werden verwertet (Schritt I).
- Wenn der Schritt G keine Passung ergibt, handelte es sich um einen physikalischen Tag-Cache-Fehltreffer. Das Verschmutzungsbit wird dann überprüft (Schritt J). Wenn das Verschmutzungsbit gesetzt ist, ist der Cache mit irgendeiner Adresse beschrieben worden, und der Hauptspeicher ist nicht beschrieben worden. Demgemäß wird der Inhalt des Cache in den Hauptspeicher geschrieben (Schritt K), und der neue Block wird aus dem Hauptspeicher gelesen und in dem Cache gespeichert (Schritt L). Gleichzeitig werden der virtuelle Tag und der physikalische Tag für den Cache-Block eingeschrieben, und das Verschmutzungsbit wird geändert, um anzuzeigen, daß Sauberkeit vorhanden ist. Wenn die Daten als nicht verschmutzt durch das Verschmutzungsbit indiziert wurden, wird der Schritt des Einschreibens in den Speicher (Schritt K) übersprungen.
- In der MIPS Architektur können bestimmte virtuelle Adressen untabelliert sein und sich direkt auf physikalische Speicherlokalisierungen beziehen. Vorzugsweise wird eine 32 Bit-Adresse mit einem spezifiztierten Muster in den Adreß-Bits 31-29 verwendet, um untabellierte Referenzen zu indizieren. Untabellierte Referenzen benötigen weder die TLB-Scheibe noch den vollen TLB.
- Nicht-cachierbare Referenzen werden ebenfalls markiert mittels eines speziellen codierten Wertes in den Adreß-Bits 31-29 oder durch ein Bit in dem vollen TLB-Eintrag. Da im letzten Falle es keine Cache-Tag gibt, auf die Bezug zu nehmen wäre, wird die TLB-Scheibe ein Fehltreffer sein. Das nicht-cachierbare Bit in dem vollständigen TLB wird nach einem Cache-Fehltreffer entdeckt. Die Adreßumsetzung wird mit einem vollständigen TLB ausgeführt.
- In der bevorzugten Ausführungsform haben die 32 Bits der Adresse identische Adreß-Bits 13-0 für die virtuelle und die physikalische Adresse. Bits 16-14 der virtuellen Adresse werden verwendet, um auf die entsprechende TLB-Scheibe hinzuweisen. Der Eintrag der ausgewählten TLB-Scheibe enthält physikalische Adreß-Bits 17-14. Die VPN besteht aus Bits 31-14. Physikalische Adreß-Bits 17-0 werden verwendet, um den Cache-Speicher zu lesen. Wenn der vollständige TLB gelesen wird, werden physikalische Adreß-Bits 35-14 von dem vollständigen TLB mit den physikalischen Tag-Bits 35-14 verglichen.
- Die TLB-Scheibe kann aus einer kleinen Zahl von Worten bestehen (in der bevorzugten Ausführungsform 8), jedoch gleichwohl eine hohe Trefferrate ermöglichen, wenn die Seitengröße ausreichend ist (in der bevorzugten Ausführungsform 16K Bytes) oder wenn sie nach dem virtuellen Index-Cache verwendet wird. Die TLB-Scheibenbreite ist gleich dem natürlichen Logarithmus des Verhältnisses der Größe einer Bank des Cache zu der Seitengröße. Dieses Verhältnis ist in der bevorzugten Ausführungsform 16, so daß die TLB-Scheibe vier Bits breit ist.
- Fig. 11 zeigt eine bevorzugte Ausführungsform der TLB-Scheibe unter Verwendung von Latch-Schaltungen und Multiplexern. Fig. 11 zeigt 16 Zeilen von jeweils vier Latch-Schaltungen, wobei die Latch-Schaltungen 1A, 1B, 1C und 1D die erste Zeile bilden und die Latch-Schaltungen 16A, 16B, 16C und 16D die letzte Zeile bilden. Die in den Latch-Schaltungen zu speichernden Daten liegen auf Dateneingangsleitungen DI1-DI4. Der Ausgang jeder Zeile von Latch-Schaltungen gelangt zu einem 16-1 Multiplexer, wobei die Ausgänge von Multiplexern 170, 172, 174 und 176 die vier Datenbitausgänge D01, D02, D03 und D04 sind. In der ersten Zeile legen die Latch-Schaltungen 1A, 2A, und herauf bis zu 16A ihre Ausgänge auf die Eingänge des 16-1 Multiplexers 170. Der Ausgang des Multiplexers 170 bildet das erste Datenausgangsbit. Die Auswahl des Betreffenden aus den sechzehn Eingängen zu den vier zu lesenden Latch-Schaltungen erfolgt durch einen Vierbitwähleingang, der allen Multiplexern auf vier Leseadreßleitungen 178 zugeführt wird.
- Wie ersichtlich, zeigt Fig. 11 einen sehr schnellen Speicher, da die Ausgänge aller Latch-Schaltungen an den Eingängen der Multiplexer anliegen und die Speicherzugriffszeit einfach die Zeit ist, die benötigt wird, um mittels der Leseadresse den richtigen Multiplexereingang für die Verwendung als Ausgang auszuwählen.
- Um Daten in die Latch-Schaltungen der Fig. 11 einzuschreiben, wird eine der Schreibentsperrleitungen WE1-WE16 entsperrt. Wenn beispielsweise WE2 entsperrt ist, sind die Latch-Schaltungen 2A, 2B, 2C und 2D an ihren Entsperreingängen freigegeben, so daß die Daten auf den Datenleitungen DI1-DI4 in diese Latch-Schaltungen eingeschrieben werden und nicht in irgendwelche anderen Latch-Schaltungen. Das Schreibentsperrsignal wird durch das Decodieren von vier Schreibadreßbits erzeugt, bereitgestellt an dem Decoder 180. Nur einer der 16 Ausgänge des Decoders wird entsperrt und entsperrt die entsprechende Zeile von Latch- Schaltungen. Der Ausgang wird mit einem Schreibentsperrsignal auf einer Leitung 182 in einer Anzahl von UND-Gattern AND1-AND16 UND-verknüpft. Dies macht man so, damit die Schreibentsperrausgänge nicht anliegen, bis die Decoderausgänge sich stabilisiert haben. Die Schreibadresse und die Leseadresse könnten natürlich von demselben Adreßbus kommen mit dem Inversen der Schreibentsperrung oder einem Lesesignal, das als ein Entsperreingang zu den Multiplexern bereitgestellt wird.
- Wenn die Anzahl von Einträgen in der TLB-Scheibe groß genug ist, ist es möglich, eine "Seitenfärbung" zu verwenden, so daß die TLB- Scheiben-Fehltrefferrate auf null fällt. Im Gegensatz kann die Seitenfärbung nicht die Fehltrefferrate in einem konventionellen TLB reduzieren. Die Seitenfärbung ist eine Möglichkeit, die Zuordnung von virtuellen Seiten zu physikalischen Speicherlokalisierungen zu beschränken, so daß N-Bits niedriger Ordnung der virtuellen Seitennummer zu N-Bits niedriger Ordnung der physikalischen Seitennummer passen. Wenn die Breite der TLB-Scheibe N beträgt und die Anzahl der Einträge in dem TLB 2N ist, dann wird die TLB-Scheibe eine Identität, und die Fehlerrate fällt auf null.
- Fachleute werden verstehen, daß die vorliegende Erfindung in anderen spezifischen Formen ausführbar ist, ohne vom Geist oder den wesentlichen Merkmalen derselben abzuweichen. Beispielsweise könnte die TLB-Scheibe ein RAM sein anstelle der Verwendung von Latch-Schaltungen und Multiplexern. Dementsprechend soll die Offenbarung der bevorzugten Ausführungsform der Erfindung illustrativ, jedoch nicht beschränkend, bezüglich der Erfindung verstanden werden, die in den nachfolgenden Ansprüchen wiedergegeben ist.
Claims (11)
1. Einrichtung zum Adressieren von Speichern unter Verwendung
von virtuellen Adressen (72; 112), wobei die virtuellen Adressen eine
virtuelle Seitennumer (74) und einen Seitenversatz (76) aufweisen,
umfassend einen Translationsseitenpuffer- - TLB - speicher mit einem
Eingang, welcher derart verbunden ist, daß er einen Teil der virtuellen
Adresse (72; 112) zum Speichern von Informationen über Adressen, auf die
zuvor zugegriffen wurde, erhält,
dadurch gekennzeichnet,
daß der TLB Speicher ein TLB Scheibenspeicher (82; 104, 106) ist, mit
einem Adresseneingang, der verbunden ist, um eine vorbestimmte Anzahl
von niedrigstelligen Bits einer virtuellen Seitennummer (74) zu
empfangen zum Adressieren eines Ortes, der eine vorbestimmte Anzahl von
niedrigstelligen Bits einer physischen Seitennummer einer Adresse, auf
die zuvor zugegriffen wurde, enthält, wobei die niedrigstelligen Bits
der physischen Seitennummer mit dem Seitenversatz (76) verkettet werden
zur Bildung eines physischen Index für einen physischen Cache- (88) und
einen virtuellen Feldspeicher (90).
2. Einrichtung nach Anspruch 1, bei der die Einrichtung ferner
umfaßt
- den physischen Cachespeicher (88; 120) zum Speichern von
Daten mit physischen Indices;
- den virtuellen Feldspeicher (90) zum Speichern eines
virtuellen Seitennummernfelds (98) für die Daten an einem entsprechenden
physischen Index; und
- Mittel zum Vergleichen (100; 122-126) des ausgewählten
virtuellen Seitennummernfelds (98) mit der virtuellen Seitennumer (74),
um festzustellen, ob die korrekten Daten ausgewählt wurden, und
dementsprechend ein erstes Treffer/Fehler Ausgabesignal abzuliefern.
3. Einrichtung nach Anspruch 2, bei der die Einrichtung ferner
umfaßt
- einen vollständigen Translationsseitenpuffer - TLB - (140);
- Mittel (Komparator in 102) zum Vergleichen, im Falle eines
Treffers im vollständigen TLB, der Ausgabe von dem vollständigen TLB mit
einer Ausgabe des TLB Scheibenspeichers (82; 104-108), wobei diese
Mittel ein zweites Treffer/Fehler Ausgabesignal abliefern;
- Statusmaschinenlogik (136), angekoppelt an dem zweiten
Treffer/Fehler-Ausgabesignal, zum Steuern, bei Erhalt eines
Fehlersignais, des Schreibens von Daten und Adressen in den TLB
Scheibenspeicher (82; 104, 106), wenn die TLB Scheibenausgabe und die Ausgabe
des vollständigen TLB nicht zusammenpassen, und Schreiben in den
Cachespeicher (88, 120) und virtuellen Feldspeicher (90), wenn die TLB
Scheibenausgabe und die Ausgabe des vollständigen TLB zusammenpassen.
4. Einrichtung nach Anspruch 2 oder 3, bei der
- der Cachespeicher (120) ein zwei-Wege satzassoziativer
Cachespeicher ist, umfassend einen ersten Cachespeicher zum Speichern
von ersten Daten und einen zweiten Cachespeicher zum Speichern von
zweiten Daten, wobei die Daten physische Indices aufweisen;
- der virtuelle Feldspeicher einen ersten und einen zweiten
virtuellen Feldspeicher umfaßt, jeweils zum Speichern eines virtuellen
Seitennummernfelds für die Daten des ersten bzw. des zweiten
Cachespeichers an entsprechenden physischen Indices; und
- Mittel (122, 124) vorgesehen sind zum Vergleichen der
ausgewählten virtuellen Seitennummernfelder des ersten und des zweiten
virtuellen Feldspeichers mit der virtuellen Seitennummer, um so ein
erstes Treffer/Fehler-Ausgabesignal zu liefern.
5. Einrichtung nach Anspruch 4, bei der die Einrichtung umfaßt
- einen Multiplexer (130) mit einem ersten und einem zweiten
Eingang, angekoppelt um Daten jeweils von dem ersten bzw. dem zweiten
Cachespeicher zu empfangen; und
- Logikmittel (126), angekoppelt mit den Ausgängen der
Vergleichsmittel (122, 124) zum Bereitstellen eines Auswahleingangs an
den Multiplexer (130) zum Auswählen von Daten entsprechend einem
zusammenpassenden Feld und um eine Treffer-Ausgabe abzuliefern, wenn
eines der Vergleichsmittel (122, 124) einen Treffer anzeigt, und eine
Fehler-Ausgabe sonst.
6. Einrichtung nach einem der Ansprüche 1 bis 5, bei der der
TLB Scheibenspeicher (82) ein erstes und ein zweites
Scheibenspeichermittel (104, 106) und Multiplexmittel (108) umfaßt zum Auswählen der
Datenausgaben eines der Scheibenspeichermittel (104, 106).
7. Einrichtung nach Anspruch 6, bei der Mittel (110) ein
erstes Auswahlsignal für einen Datenabruf oder ein zweites Auswahlsignal
für einen Befehlsabruf zu dem Multiplexmittel (108) abliefern.
8. Einrichtung nach einem der Ansprüche 1 bis 7, bei der die
vorbestimmte Anzahl niedrigstelliger Bits der dem TLB Scheibenspeicher
(82; 104, 106) zugeführten virtuellen Seitennummer (74) drei ist, und
die vorbestimmte Anzahl niedrigstelliger Bits der physischen
Seitennummer, auf die zuvor zugegriffen wurde, vier ist.
9. Einrichtung nach einem der Ansprüche 1 bis 8, bei der die
Einrichtung ferner umfaßt
- einen virtuellen Cachespeicher (150);
- Mittel zum Zugreifen auf den virtuellen Cachespeicher (150)
mit einer virtuellen Adresse (72; 112); und
- Mittel (152) zum Anzeigen eines Fehlers in dem virtuellen
Cachespeicher (150) und zum Ermöglichen des Zugriffs auf den TLB
Scheibenspeicher (82; 104-108) mit der virtuellen Adresse (82, 112).
10. Verfahren für den Betrieb einer Einrichtung nach einem der
Ansprüche 3 oder 4 bis 9, soweit abhängig von Anspruch 3, wobei die
virtuellen Adressen eine virtuelle Seitennummer (74) und einen
Seitenversatz (76) aufweisen, wobei die Einrichtung einen
Translationsseitenpuffer -TLB - Scheibenspeicher (82; 104, 106) umfaßt, der in jedem
Eingang eine vorbestimmte Anzahl von niedrigstelligen Bits einer
physischen Seitennummer, auf die zuvor zugegriffen wurde, speichert, und
umfassend einen Cachespeicher (88; 120) zum Speichern von Daten, die
physische Indeces aufweisen, und umfassend einen virtuellen Feldspeicher
(90) zum Speichern eines virtuellen Seitennummernfelds (98) für die
Daten an einem entsprechenden physischen Index, und umfassend einen
vollständigen Translationsseitenpuffer -TLB - (140), wobei das Verfahren
zum Betrieb die folgenden Schrittsequenzen umfaßt:
(a) Zugreifen auf den TLB Scheibenspeicher (82; 104, 106) mit
einer vorbestimmten Anzahl niedrigstelliger Bits der virtuellen
Seitennnummer (74);
(b) Zugreifen auf den Cachespeicher (88; 120) und auf den
virtuellen Feldspeicher (90) mit dem physischen Index, der gebildet
wurde durch Verketten der niedrigstelligen Bits der physischen
Seitennummer und des Seitenversatzes (76);
(c) Bestimmen, ob die korrekten Daten ausgewählt wurden
- "virtueller Feldtreffer" - oder nicht - "virtueller Feldfehler" -;
(d) Bei einem virtuellen Feldtreffer, herauslesen der Daten
von dem physischen Cachespeicher (88);
(e) Bei einem virtueller Feldfehler, Zugreifen auf den
vollständigen TLB Speicher (140) mit der virtuellen Seitennummer (74) und
Bestimmen, ob die korrekten Daten ausgewählt wurden - "vollständiger TLB
Treffer" - oder nicht - "vollständiger TLB Fehler" -;
(f) Bei einem volständigen TLB Treffer
- Einlesen der Daten von dem vollständigen TLB Speicher (140);
- Vergleichen eines entsprechenden Teils der eingelesenen
Daten mit dem Inhalt in dem TLB Scheibenspeicher (82; 104, 106), ob eine
Übereinstimmung vorliegt - "Cachefehler" - oder nicht - "TLB
Scheibenfehler" -;
- bei Auftreten eines TLB Scheibenfehlers, Schreiben der
korrekten niedrigstelligen Bits der physischen Seitenzahl an den Ort des
TLB Scheibenspeichers (82; 104, 106);
- bei einem Cachefehler, Vergleichen eines entsprechenden
Teils der eingelesenen Daten mit dem virtuellen Feld (98), auf das
zugegriffen wurde, um zu bestimen, ob eine Übereinstimung vorliegt oder
nicht; bei einer Übereinstimmung, Schreiben der korrekten
Seitenidentifikation in den virtuellen Feldspeicher (90) und Entnehmen der Daten von
dem physischen Cachespeicher (88); bei keiner Übereinstimung, Speichern
eines neuen Blocks in dem Cachespeicher (88; 120) und Aktualisieren des
virtuellen Feldspeichers (90);
(g) Bei einem vollständigen TLB Fehler, Entnehmen der Daten
über eine Softwareroutine und Speichern der entsprechenden Ergebnisse in
dem vollständigen TLB Speicher.
11. Verfahren zum Betreiben einer Einrichtung, nach Anspruch
10, wobei die Einrichtung ferner einen virtuellen Cachespeicher (150),
Mittel für den Zugriff auf den virtuellen Cachespeicher (150) mit einer
virtuellen Adresse (72; 112), und Mittel (152) zum Anzeigen eines
Fehlers in dem virtuellen Cachespeicher (150) und zum Ermöglichen eines
Zugriffs auf den TLB Scheibenspeicher (82; 104-108) mit der virtuellen
Adresse (82; 112) umfaßt, wobei das Verfahren die folgende
Schrittsequenz umfaßt:
(i) Zugreifen auf den virtuellen Cachespeicher (150) mit der
virtuellen Seitennummer (74);
(ii) Bestimmen, ob die korrekten Daten ausgewählt wurden
-"virtueller Cachetreffer" - oder nicht - "virtueller Cachefehler" -;
(iii) Bei einem virtuellen Cachetreffer, Entnehmen der Daten
aus dem virtuellen Cachespeicher (150);
(iv) Bei einem virtuellen Cachefehler, Ausführen der
Schrittsequenz gemäß Anspruch 10.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/444,594 US5226133A (en) | 1989-12-01 | 1989-12-01 | Two-level translation look-aside buffer using partial addresses for enhanced speed |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69030945D1 DE69030945D1 (de) | 1997-07-24 |
DE69030945T2 true DE69030945T2 (de) | 1998-01-29 |
Family
ID=23765553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69030945T Expired - Lifetime DE69030945T2 (de) | 1989-12-01 | 1990-11-29 | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5226133A (de) |
EP (1) | EP0431463B1 (de) |
JP (1) | JPH03266153A (de) |
DE (1) | DE69030945T2 (de) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
JPH03216744A (ja) * | 1990-01-22 | 1991-09-24 | Fujitsu Ltd | 内蔵キャッシュ・メモリ制御方式 |
US5584003A (en) * | 1990-03-29 | 1996-12-10 | Matsushita Electric Industrial Co., Ltd. | Control systems having an address conversion device for controlling a cache memory and a cache tag memory |
US5479630A (en) * | 1991-04-03 | 1995-12-26 | Silicon Graphics Inc. | Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same |
JP3190700B2 (ja) * | 1991-05-31 | 2001-07-23 | 日本電気株式会社 | アドレス変換装置 |
GB2256296B (en) * | 1991-05-31 | 1995-01-18 | Integrated Device Tech | Multiplexed status and diagnostic pins in a microprocessor with on-chip caches |
JP3259969B2 (ja) * | 1991-07-09 | 2002-02-25 | 株式会社東芝 | キャッシュメモリ制御装置 |
WO1993004431A1 (fr) * | 1991-08-15 | 1993-03-04 | Fujitsu Limited | Systeme de commande de memoire tampon |
JPH0546475A (ja) * | 1991-08-15 | 1993-02-26 | Fujitsu Ltd | バツフア記憶制御方式 |
US5392410A (en) * | 1992-04-30 | 1995-02-21 | International Business Machines Corporation | History table for prediction of virtual address translation for cache access |
US5450558A (en) * | 1992-05-27 | 1995-09-12 | Hewlett-Packard Company | System for translating virtual address to real address by duplicating mask information in real page number corresponds to block entry of virtual page number |
US5574877A (en) * | 1992-09-25 | 1996-11-12 | Silicon Graphics, Inc. | TLB with two physical pages per virtual tag |
US5603008A (en) * | 1992-09-30 | 1997-02-11 | Amdahl Corporation | Computer system having cache memories with independently validated keys in the TLB |
GB2273179A (en) * | 1992-12-02 | 1994-06-08 | Ibm | Cache indexing in interative processes. |
US5712998A (en) * | 1993-07-13 | 1998-01-27 | Intel Corporation | Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes |
US5848432A (en) | 1993-08-05 | 1998-12-08 | Hitachi, Ltd. | Data processor with variable types of cache memories |
GB2282471B (en) * | 1993-09-29 | 1997-11-05 | Advanced Risc Mach Ltd | Cache storage |
US5463750A (en) * | 1993-11-02 | 1995-10-31 | Intergraph Corporation | Method and apparatus for translating virtual addresses in a data processing system having multiple instruction pipelines and separate TLB's |
US5996062A (en) * | 1993-11-24 | 1999-11-30 | Intergraph Corporation | Method and apparatus for controlling an instruction pipeline in a data processing system |
EP0668565B1 (de) * | 1994-02-22 | 2002-07-17 | Advanced Micro Devices, Inc. | Virtuelle Speicheranordnung |
US6129458A (en) * | 1994-03-23 | 2000-10-10 | At&T Global Information Solutions Company | Cache optimization method |
US5913222A (en) * | 1994-04-15 | 1999-06-15 | Gmd-Forschungszentrum Informationstechnik Gmbh | Color correction method in a virtually addressed and physically indexed cache memory in the event of no cache hit |
JPH09512122A (ja) * | 1994-04-22 | 1997-12-02 | ゲーエムデー−フォルシュングスツェントルム インフォルマチオンシュテクニク ゲーエムベーハー | データ記憶用キャッシュ記憶装置 |
US5751990A (en) * | 1994-04-26 | 1998-05-12 | International Business Machines Corporation | Abridged virtual address cache directory |
WO1996012231A1 (en) | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein |
US5659697A (en) * | 1994-12-14 | 1997-08-19 | International Business Machines Corporation | Translation lookaside buffer for faster processing in response to availability of a first virtual address portion before a second virtual address portion |
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 |
US6029224A (en) * | 1995-06-07 | 2000-02-22 | Lucent Technologies Inc. | Self-contained memory apparatus having diverse types of memory and distributed control |
US5924125A (en) * | 1995-08-01 | 1999-07-13 | Arya; Siamak | Method and apparatus for parallel access to consecutive TLB entries |
US6101590A (en) * | 1995-10-10 | 2000-08-08 | Micro Unity Systems Engineering, Inc. | Virtual memory system with local and global virtual address translation |
US6026476A (en) * | 1996-03-19 | 2000-02-15 | Intel Corporation | Fast fully associative translation lookaside buffer |
US5809562A (en) * | 1996-05-20 | 1998-09-15 | Integrated Device Technology, Inc. | Cache array select logic allowing cache array size to differ from physical page size |
US5928352A (en) * | 1996-09-16 | 1999-07-27 | Intel Corporation | Method and apparatus for implementing a fully-associative translation look-aside buffer having a variable numbers of bits representing a virtual address entry |
US5946718A (en) * | 1997-05-30 | 1999-08-31 | National Semiconductor Corporation | Shadow translation look-aside buffer and method of operation |
US6065091A (en) * | 1997-05-30 | 2000-05-16 | Via-Cyrix, Inc. | Translation look-aside buffer slice circuit and method of operation |
US6049855A (en) * | 1997-07-02 | 2000-04-11 | Micron Electronics, Inc. | Segmented memory system employing different interleaving scheme for each different memory segment |
US6079003A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6079005A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address |
US6356996B1 (en) * | 1998-03-24 | 2002-03-12 | Novell, Inc. | Cache fencing for interpretive environments |
US6564311B2 (en) * | 1999-01-19 | 2003-05-13 | Matsushita Electric Industrial Co., Ltd. | Apparatus for translation between virtual and physical addresses using a virtual page number, a physical page number, a process identifier and a global bit |
US6469705B1 (en) * | 1999-09-21 | 2002-10-22 | Autodesk Canada Inc. | Cache addressing |
US6604187B1 (en) * | 2000-06-19 | 2003-08-05 | Advanced Micro Devices, Inc. | Providing global translations with address space numbers |
EP1213650A3 (de) * | 2000-08-21 | 2006-08-30 | Texas Instruments France | Auf aktueller Aufgabe basierte Prioritätsarbitrierung und Speicherverwaltungseinheit |
US20020144078A1 (en) * | 2001-03-30 | 2002-10-03 | Siroyan Limited | Address translation |
GB2373889A (en) * | 2001-03-30 | 2002-10-02 | Siroyan Ltd | Address translation with partial physical addresses |
KR100389867B1 (ko) * | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US20030163643A1 (en) * | 2002-02-22 | 2003-08-28 | Riedlinger Reid James | Bank conflict determination |
US6920693B2 (en) * | 2002-07-24 | 2005-07-26 | L&L Products, Inc. | Dynamic self-adjusting assembly for sealing, baffling or structural reinforcement |
JP2004164395A (ja) * | 2002-11-14 | 2004-06-10 | Renesas Technology Corp | アドレス変換装置 |
US7117290B2 (en) * | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
US20050182903A1 (en) * | 2004-02-12 | 2005-08-18 | Mips Technologies, Inc. | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer |
US7558939B2 (en) * | 2005-03-08 | 2009-07-07 | Mips Technologies, Inc. | Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor |
DE602005023273D1 (de) | 2005-04-29 | 2010-10-14 | St Microelectronics Srl | Ein verbessertes Cache-Speicher System |
US9075733B1 (en) * | 2010-05-20 | 2015-07-07 | Seagate Technology Llc | Selective storage of address mapping metadata in a system having multiple memories |
US10372618B2 (en) * | 2016-10-14 | 2019-08-06 | Arm Limited | Apparatus and method for maintaining address translation data within an address translation cache |
CN112631962A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 存储管理装置、存储管理方法、处理器和计算机系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4170039A (en) * | 1978-07-17 | 1979-10-02 | International Business Machines Corporation | Virtual address translation speed up technique |
US4218743A (en) * | 1978-07-17 | 1980-08-19 | International Business Machines Corporation | Address translation apparatus |
EP0019358B1 (de) * | 1979-05-09 | 1984-07-11 | International Computers Limited | Hierarchisches Datenspeichersystem |
US4400774A (en) * | 1981-02-02 | 1983-08-23 | Bell Telephone Laboratories, Incorporated | Cache addressing arrangement in a computer system |
US4493026A (en) * | 1982-05-26 | 1985-01-08 | International Business Machines Corporation | Set associative sector cache |
US4602368A (en) * | 1983-04-15 | 1986-07-22 | Honeywell Information Systems Inc. | Dual validity bit arrays |
US4682281A (en) * | 1983-08-30 | 1987-07-21 | Amdahl Corporation | Data storage unit employing translation lookaside buffer pointer |
US4991081A (en) * | 1984-10-31 | 1991-02-05 | Texas Instruments Incorporated | Cache memory addressable by both physical and virtual addresses |
US4737909A (en) * | 1985-04-01 | 1988-04-12 | National Semiconductor Corp. | Cache memory address apparatus |
US4763244A (en) * | 1986-01-15 | 1988-08-09 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
US4914582A (en) * | 1986-06-27 | 1990-04-03 | Hewlett-Packard Company | Cache tag lookaside |
US4833599A (en) * | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
US4969122A (en) * | 1989-08-21 | 1990-11-06 | Sun Microsystems, Inc. | Apparatus for page tagging in a computer system |
-
1989
- 1989-12-01 US US07/444,594 patent/US5226133A/en not_active Expired - Lifetime
-
1990
- 1990-11-29 DE DE69030945T patent/DE69030945T2/de not_active Expired - Lifetime
- 1990-11-29 EP EP90122808A patent/EP0431463B1/de not_active Expired - Lifetime
- 1990-11-30 JP JP2330971A patent/JPH03266153A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69030945D1 (de) | 1997-07-24 |
JPH03266153A (ja) | 1991-11-27 |
EP0431463B1 (de) | 1997-06-18 |
EP0431463A2 (de) | 1991-06-12 |
US5226133A (en) | 1993-07-06 |
EP0431463A3 (en) | 1992-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69030945T2 (de) | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung | |
DE4410060B4 (de) | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69329080T2 (de) | Cache-Speicher | |
DE68924206T2 (de) | Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen. | |
DE69225622T2 (de) | Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE2227882C2 (de) | Virtuelle Speicheranordnung | |
DE69427625T2 (de) | Adressübersetzungsmechanismus für Rechnersystem mit virtuellen Speicher, der eine Vielzahl von Seitengrössen unterstützt | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE2415900C3 (de) | Rechenautomat mit mehreren mit je einem Vorratsspeicher versehenen Rechenanlagen | |
DE3586635T2 (de) | Vorausholungsanordnung fuer einen schnellpufferspeicher. | |
DE3151745C2 (de) | ||
DE69323863T2 (de) | Verfahren und Vorrichtung zur Adressübersetzung | |
DE69029173T2 (de) | Mikroprozessor | |
DE3724317C2 (de) | ||
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE10002120B4 (de) | Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung | |
DE69229667T2 (de) | Simulierte cachespeicher-assoziativität | |
DE2154106A1 (de) | Arbeitsspeicherwerk | |
DE2841041A1 (de) | Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren | |
DE3102150A1 (de) | "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage | |
DE19526960A1 (de) | Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung | |
DE69130942T2 (de) | Vorrichtung zur Erhöhung der Leistung eines Adressenübersetzungspuffers | |
DE69131917T2 (de) | Cache-Speicher mit rekonfigurierbarer Blocklänge und Verfahren dafür |
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: MIPS TECHNOLOGIES,INC., MOUNTAIN VIEW,CALIF.,, US |