DE69030945T2 - Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung - Google Patents

Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung

Info

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
Application number
DE69030945T
Other languages
English (en)
Other versions
DE69030945D1 (de
Inventor
Michael P Farmwald
George S Taylor
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MIPS Tech LLC
Original Assignee
Silicon Graphics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Graphics Inc filed Critical Silicon Graphics Inc
Application granted granted Critical
Publication of DE69030945D1 publication Critical patent/DE69030945D1/de
Publication of DE69030945T2 publication Critical patent/DE69030945T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page 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.
DE69030945T 1989-12-01 1990-11-29 Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung Expired - Lifetime DE69030945T2 (de)

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)

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

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

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