DE3689474T2 - Teilassoziativer inhaltsadressierter Speicher mit Schutzeinrichtung. - Google Patents

Teilassoziativer inhaltsadressierter Speicher mit Schutzeinrichtung.

Info

Publication number
DE3689474T2
DE3689474T2 DE86308095T DE3689474T DE3689474T2 DE 3689474 T2 DE3689474 T2 DE 3689474T2 DE 86308095 T DE86308095 T DE 86308095T DE 3689474 T DE3689474 T DE 3689474T DE 3689474 T2 DE3689474 T2 DE 3689474T2
Authority
DE
Germany
Prior art keywords
data
tlb
match
address
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE86308095T
Other languages
English (en)
Other versions
DE3689474D1 (de
Inventor
Danny L Freitas
Craig C Hansen
Christopher Rowen
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 DE3689474D1 publication Critical patent/DE3689474D1/de
Publication of DE3689474T2 publication Critical patent/DE3689474T2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Polarising Elements (AREA)
  • Emergency Protection Circuit Devices (AREA)
  • Telephonic Communication Services (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Computersysteme mit Cache-Speicher.
  • Chips mit einer zentralen Rechnereinheit (CPU, Central Processing Unit) oder Sätze von Chips, die von einer hohen Integrierung ausgehen (Large Scale Integration, LSI) und Adreßschemata mit virtuellen Adressen verwenden, erfordern eine Seitentafel bzw. Seitentabelle für die Umwandlung von virtuellen Adressen (VA), welche von der CPU erzeugt werden, in reale Adressen (RA), die man auch physikalische Adressen (PA) nennt und die durch externe Vorrichtungen (wie z. B. Hauptspeicher oder Peripheriegeräte) genutzt werden können. Die Seitentafel kann in dem Hauptspeicher oder in einem getrennten Speicher angeordnet sein und kann für die Hardware, das Betriebssystem oder beide zugänglich sein. Um den Adressenumwandlungsvorgang zu beschleunigen, weisen die CPUs häufig einen Adressenumsetzpuffer (Translation Lookaside Buffer (TLB), auf, der ein kleiner Cache-Speicher ist, welcher die verschiedenen, zuletzt verwendeten virtuellen Adressen und ihre entsprechenden realen Adressen speichert.
  • Eine allgemeine Beschreibung von Cache-Speichern findet man in Strecker, "Cache Memories for PDP-11 Family Computers", in Beil, Computer Engineering (Digital Press), auf den Seiten 263 bis 267. Wie man sehen kann, können Cache-Speicher auf verschiedene, alternative Arten organisiert werden. Ein direkt angeschlossener bzw. angehängter Cache-Speicher weist einen Hochgeschwindigkeits-Daten-RAM und einen parallelen Hochgeschwindigkeits-Markierungs- RAM auf. Die Adresse eines Platzes für jeden Eintrag in dem Cache ist dieselbe wie der Abschnitt niedriger Ordnung der Hauptspeicheradresse, welcher der Eintrag entspricht, während der Abschnitt höherer Ordnung der Hauptspeicheradresse in dem Markierungs-RAM gespeichert wird. Wenn man sich also den Hauptspeicher vorstellt in Form von 2m Blöcken mit jeweils 2n Worten, so ist das i-te Worte in dem Cache-Datenvektor eine Kopie des i-ten Wortes eines der 2m Blöcke in dem Hauptspeicher. Die Identität dieses Blockes ist an dem i-ten Platz in dem Markierungsvektor gespeichert. Wenn die CPU Daten von dem Speicher anfordert, so wird der Abschnitt niedriger Ordnung der Adresse sowohl den Cache-Daten als auch den Markierungsvektoren als Adresse zugeführt. Die Markierung (tag) für den ausgewählten Cache-Eintrag wird mit dem Abschnitt höherer Ordnung der Adresse der CPU verglichen und falls sie paßt, werden die Daten aus dem Cache-Datenvektor auf den Ausgangsbus bzw. die Busleitung freigegeben. Wenn die Markierung nicht mit dem Abschnitt höherer Ordnung der CPU-Adresse übereinstimmt, so werden die Daten aus dem Hauptspeicher herbeigeholt. Sie werden auch in dem Cache angeordnet für eine mögliche weitere Verwendung, wobei eine vorherige Eintragung überschrieben wird.
  • Im Zusammenhang mit einem TLB (Adressenumsetzpuffer) ist der "Hauptspeicher", auf welchen zugegriffen wird, die Seitentafel, die "Daten" in dem Datenvektor sind eine reale oder physikalische Adresse und die "Adresse", welche von der CPU zugeführt wird, ist eine virtuelle Adresse. Für einen direkt angeschlossenen TLB wird also der Abschnitt niedriger Ordnung der virtuellen Adresse als Adresse sowohl dem TLB-Datenvektor (auch der Realadressen (RA) oder physikalische Adressen (PA)-Vektor genannt) und dem TLB-Markierungsvektor zugeführt. Die Markierung in dem ausgewählten TLB-Eintrag wird mit dem Abschnitt höherer Ordnung der virtuellen Adresse von der CPU verglichen und falls er paßt, wird die physikalische Adresse in dem PA-Vektor auf die Ausgangsbusleitung freigegeben für eine weitere Verwendung in dem Computer. Falls er nicht paßt, so erhält man die physikalische Adresse aus der vollen Seitentabelle bzw. -tafel.
  • Eine andere im Zusammenhang mit dem TLB verwendbare Cache-Organisation wird als "two way set associative" bezeichnet. Bei dieser Organisation wird ein zweites Paar von Markierungs- und Datenvektoren (tag und PA-Vektoren) entlang des ersten Paares angeordnet mit einem hierzu parallelen Zugriff. Wenn also die CPU eine virtuelle Adresse bereitstellt, so kann die entsprechende physikalische Adresse in einem der beiden Paare gefunden werden. Die Bestimmung kann nacheinander mit einem einzelnen Passungsvergleicher erfolgen, indem der Abschnitt höherer Ordnung der virtuellen Adresse nacheinander mit jedem der beiden Tags bzw. Markierungsspeicher verglichen wird, oder sie kann auch parallel durchgeführt werden durch zwei Passungsvergleicher, von denen jeder den Abschnitt höherer Ordnung der virtuellen Adresse mit einem der beiden Markierungsspeicher bzw. der Markierungen vergleicht. In jedem Fall wird, wenn mit einem der beiden Tags eine Übereinstimmung festgestellt wird, die entsprechende physikalische Adresse auf den Ausgangsbus freigegeben für die weitere Verwendung in dem Computer. Falls keine der Markierungen paßt, so wird die physikalische Adresse aus der Seitentafel herbeigeholt bzw. beschafft. Falls beide passen, was beim Normalbetrieb eines Computers nicht geschehen sollte, so wird eine Einrichtung verwendet, um den einen oder anderen auszuwählen und/oder es wird ein fehlerhafter Zustand angezeigt. Das Konzept der Satzvereinigung bzw. der Inhaltsadressierung von Sätzen (oder "Assoziativspeicherung") kann ausgedehnt werden, um eine beliebige Anzahl von Markierungs-/Datenpaaren (Tag/PA-Paare) abzudecken, wobei dieser Typ von Organisation im allgemeinen als "n-way set associativity" (n- Wege Satzassoziativität) bezeichnet wird.
  • Eine weitere Cache-Organisation, die in Verbindung mit dem TLB verwendbar ist, wird "vollassoziativ" (full associative) genannt. Dieser Typ von Organisation verwendet ein einzelnes Markierungs-/Daten- (Tag/PA)-Vektorpaar, jedoch hat die Position bzw. der Platz der Markierungs/Daten- (Tag/PA)-Information in den Vektoren keinerlei Bezug mehr zu ihrer Position in dem Hauptspeicher (Seitentabelle). Statt dessen findet man die Information an irgendeiner Stelle in dem Vektorpaar. Kein Abschnitt der Adresse von der CPU wird als Adresse für das Vektorpaar verwendet sondern statt dessen wird die gesamte Adresse mit allen Markierungen in dem Vektor verglichen. Wie bei den n-Wege Satzassoziativ Caches kann der Vergleich seriell oder parallel (oder durch irgendeine Kombination dieser beiden Methoden) durchgeführt werden. Falls man eine Übereinstimmung mit einer Markierung findet, so wird die entsprechende Information in dem Daten- (PA)-Vektor auf den Ausgangsbus freigegeben für die weitere Verwendung innerhalb des Systems. Wenn keine Übereinstimmung gefunden wird, so erhält man die Daten (PA) aus dem Hauptspeicher (oder der vollen Seitentafel bzw. Seitentabelle). Wenn mehr als eine Markierung paßt bzw. übereinstimmt, was wiederum normalerweise nicht vorkommen sollte, so wird irgendeine Einrichtung verwendet, um die Daten (PA) auszuwählen, welche einer der passenden Markierungen entsprechen und/oder es wird ein Fehlerzustand signalisiert.
  • Ausführungsformen der Erfindung beziehen sich auf Cache- und TLB-Organisationen, bei welchen eine gegebene Adresse an mehr als einer Stelle in dem Cache oder TLB gefunden werden kann und genauer gesagt auf solche Organisationen bzw. Organisationsformen, bei welchen der Vergleich auf Übereinstimmung bzw. Zusammenpassen zumindest teilweise parallel ausgeführt wird. Systeme, welche diese Organisationsformen verwenden, unterliegen dem Risiko, daß mehrere (mehr als ein) Übereinstimmungsvergleicher, welche parallel arbeiten, eine Übereinstimmung feststellen und dadurch mehr als ein Datenwort (mehr als eine physikalische Adresse) auf denselben Ausgangsbus freigeben. Falls es vorkommt, daß verschiedene Datenworte (physikalische Adressen) unterschiedliche Information enthalten, so könnte ein übermäßiger Stromfluß durch die in Konflikt stehenden Ausgangstransistoren erzeugt wird. Dies kann im günstigsten Fall den Verlust der Daten und im schlimmsten Fall die physikalische Beschädigung des Chips verursachen.
  • Eine Lösung dieses Problems könnte darin bestehen, eine Logik zwischen der parallelen Ausgänge der Übereinstimmungskomparatoren und die Freigabeeingänge einzusetzen, um sicherzustellen, daß jeweils nur ein Datenwort (nur eine physikalische Adresse) zu einem Zeitpunkt auf den Ausgangsbus freigegeben wird. Diese zusätzliche Logikebene fügt jedoch auch eine unerwünschte Verzögerung hinzu, insbesondere wenn sie unter einem Welleneffekt arbeitet.
  • Eine weitere Lösung, die in dem US-Patent Nr. US-A-4,473,878 (Zolnowsky) offenbart ist, beinhaltet die Vermeidung der Speicherung von miteinander in Widerspruch stehenden Daten von Anfang an. Diese Lösung vermindert nicht die Verzögerung, weil sie lediglich den Vergleichsschritt auf den Abschnitt der Datenspeicherung des Zyklus verschiebt. Zusätzlich bewältigt sie nicht die Situation, die man beim Einschalten vorfindet, wenn die Daten in jedem Speicher Zufallsdaten sind.
  • Eine weitere Lösung dieses Problems könnte darin bestehen, daß man lediglich durch die Software sicherstellt, daß miteinander in Widerspruch stehende Daten zu keinem Zeitpunkt in dem Cache oder TLB gespeichert werden. Dies ist jedoch nicht wünschenswert, da es erforderlich macht, daß jeder Systemprogrammierer sich des Risikos bewußt ist und Zeit und Mühe aufwendet, um es zu vermeiden. Außerdem besteht die Möglichkeit, daß die Software Fehler enthält, die man vor dem Betrieb nicht festgestellt hat. Darüberhinaus kann die Software nicht den Inhalt des Speichers beim Einschalten kontrollieren, wobei der Cache typischerweise mit Zufallsdaten angefüllt ist.
  • In dem US-Patent Nr. US-A-4,357,656 (Saltz) ist ein Schema beschrieben für das Blockieren eines Teiles des oder des gesamten Cache-Speichers für Zwecke der Cache- Diagnose. Es weist einen normalen, direkt angehängten Cache-Speicher auf mit dem Zusatz einer Cache-Kontrollogik. Unter Mikrocodesteuerung kann die Cache-Kontrollogik in eine von vier Betriebsarten gesetztwerden: Außerbetriebsetzen des gesamten Cache, Außerbetriebsetzen von keinem Teil des Cache, Außerbetriebsetzen der oberen Hälfte oder Außerbetriebsetzen der unteren Hälfte. Wenn eine Diagnose ausgeführt werden soll, wird zuerst die Cache-Kontroliogik in die passende Betriebsart eingestellt. Die Cache-Kontrollogik vergleicht dann jede Speicherzugriffsadresse in Verbindung mit der darin gespeicherten Betriebsart und erzwingt, falls angemessen, einen "Fehl"-Zustand unabhängig von dem Ausgang des Übereinstimmungsvergleichers.
  • In dem IBM Bulletin für Technische Offenbarung (IBM Technical Disclosure Bulletin), Band 27, Nr. 2, Juli 1984, auf den Seiten 1128 bis 1130 ist ein Schema zum Ungültigmachen eines Verzeichnisses offenbart, um den gesamten Inhalt eines 4-Wege-Assoziativ-Caches ungültig zu machen auf eine Anforderungsänderung hin während eines Multiprocessing Vorganges.
  • Die EP-A-0,127,008 offenbart das Sperren von ausgewählten Wortdekodern aus einem Array (Anordnung), um ein mehrfaches Lesen derselben Speicherzelle als Ergebnis einer mehrfachen Adreßübereinstimmung zu verhindern, wodurch Ausgangsdaten auf alle Ausgangsleitungen geschaltet werden, die dieselbe Adresse wie die nicht gesperrten Wortdekoder haben.
  • Das IEEE Journal of Solid-State Circuits, Band SC-20, Nr. 6, Dezember 1985, Selten 1277 bis 1282 offenbart einen Assoziativspeicher mit 4 Kbit einschließlich eines mehrfach ansprechenden Auflösers bzw. Koordinatenwandlers, um eine mögliche Wortstelle unter leeren Wortstellen während der Dateneingabe auszuwählen.
  • Die vorliegende Erfindung stellt ein Computersystem bereit, welches aufweist: eine Ausführungseinheit für das Erzeugen von Datenanforderungsbefehlen einschließlich Adreßanweisungen, und einer Speichereinrichtung zum Erzeugen von Daten unter Ansprechen auf die Datenanforderungsbefehle bzw. -anweisungen, wobei die Speichereinrichtung einen Cachespeicher aufweist und der Cache-Speicher Datenspeichereinrichtungen einschließt für das Halten bzw. Bereithalten einer Mehrzahl von Datengruppen, mit einer Mehrzahl von Markierungsregistern bzw. Tag-Registern für das Bereithalten von Adressen, wobei jedes Markierungsregister mit einer entsprechenden Datengruppe in der Datenspeichereinrichtung verknüpft ist, und eine Vergleichseinrichtung für das Vergleichen einer Adreßanweisung mit Adressen in der Mehrzahl von Markierungsregistern, wobei die Vergleichseinrichtung ein Übereinstimmungssignal für jede Übereinstimmung zwischen einer Adreßanweisung und Adressen in der Mehrzahl von Markierungsregistern erzeugt, wobei die Vergleichseinrichtung weiterhin die Ausgabe einer Datengruppe aus der Datenspeichereinrichtung zuläßt bzw. ansteuert unter Ansprechen auf die Erzeugung zumindest eines Übereinstimmungssignales, gekennzeichnet durch Erfaß- und Sperreinrichtungen für das Erfassen einer vorgewählten Anzahl von Übereinstimmungssignalen, die durch die Vergleichseinrichtung erzeugt wurden unter Ansprechen auf einen Vergleich zwischen der Adreßanweisung und Adressen in der Mehrzahl von Markierungsregistern, wobei die Erfassungs- und Sperreinrichtung ein Sperrsignal für das Sperren der Speichereinrichtung erzeugt, wenn die Erfassung der vorgewählten Anzahl von Übereinstimmungssignalen vorliegt.
  • In einer bevorzugten Ausführungsform der Erfindung ist ein Schema zum Verhindern der Chipbeschädigung oder eines Datenverlustes vorgesehen, was ansonsten auftreten kann, wenn ein TLB mehrere identische, darin gespeicherte Einträge enthält.
  • Die bevorzugte Ausführungsform der Erfindung sieht eine Steigerung in der Geschwindigkeit und Dichte von Cache-Speichern von TLBs vor, in welchen Übereinstimmungsvergleiche parallel stattfinden. Die bevorzugte Ausführungsform sieht ein Schutzschema für einen vollassoziativen bzw. Inhaltsadressierten TLB vor.
  • Die obigen Gesichtspunkte der bevorzugten Ausführungsform werden erreicht durch Erfassen gewisser vordefinierter Bedingungen, die in dem Normalbetrieb des Systems auftreten, und durch Außerbetriebsetzen des Cache oder TLB, wenn ein solcher Zustand bzw. derartige Bedingungen festgestellt werden. Das heißt, wenn eine der vordefinierten Bedingungen erfaßt wird, so wird ein Schaltkreis aktiviert, der den Cache oder TLB sperrt bzw. daran hindert, irgendwelche Daten auf den Ausgangsbus zu geben. Eine solche Sperrung muß nicht sofort stattfinden, sollte jedoch genügend schnell oder bald stattfinden, so daß ein Datenverlust und/oder eine Chipbeschädigung vermieden wird. Während keine Beeinträchtigung auftreten würde, falls nicht mehr als ein vorgewählter Eintrag auf den Ausgabebus trotz des Auftretens der vorbestimmten Bedingungen freigegeben würde, so könnte außerdem jeglicher Vorteil, den man aus einem solchen Merkmal ziehen könnte, möglicherweise nicht ausreichen, um die Schwierigkeiten zu überwiegen, wenn man diesen Vorteil nutzen will.
  • Beispielsweise kann in Verbindung mit dem TLB ein Schutzschaltkreis eingearbeitet werden, welcher den TLB außer Betrieb setzt, wenn eine der zwei folgenden Bedingungen eintritt: (1) Die virtuelle Adresse der CPU liegt innerhalb eines Bereiches, der kein Nachschlagen in der Seitentabelle erfordert. Das heißt, bestimmte Bereiche des Hauptspeichers sind vorabgekennzeichnet als "nicht Zugriffs-" oder "Direktzugriffs-"Speicher, was bedeutet, daß die virtuelle Adresse entweder immer dieselbe ist wie die physikalische Adresse oder immer in die physikalische Adresse gemäß einer relativ einfachen Formel übersetzbar ist. Wenn die virtuelle Adresse von der CPU innerhalb des Direktzugriffsspeichers liegt, wird das TLB außer Betrieb gesetzt; (2) Die vorliegende Anweisung ist keine Speicherzugriffsanweisung. Die CPU kann während der Ausführung von Befehlen, die nicht auf den Speicher zugreifen, wie z. B. Register-zu- Register-Anweisungen, Zufallsadressen erzeugen. Der Schutzschaltkreis kann das TLB außer Betrieb setzen, wenn diese Anweisungen ausgeführt werden.
  • Ein Abschaltschema dieser Art sollte zusätzlich einen fehlersicheren Mechanismus einschließen, um den Chip in solchen Situationen zu sichern, die nicht durch die vorbestimmten Bedingungen abgedeckt sind. Im Zusammenhang mit dem TLB kann der fehlersichere Mechanismus das TLB außer Betrieb setzen, sobald mehr als etwa fünf Markierungsvergleicher gleichzeitig eine Übereinstimmung anzeigen.
  • Dementsprechend ist die bevorzugte Ausführungsform so betreibbar, daß sie das TLB beim Auftreten von gewissen, vorbestimmten Systembedingungen außer Betrieb setzt. Solche Bedingungen können von einem ersten Typ sein, von dem man vorher festgelegt hat, daß er ein größeres Risiko anzeigt, daß zwei oder mehr virtuelle Adressen, die in dem TLB gespeichert sind, gleichzeitig mit der eingehenden virtuellen Adresse übereinstimmen, und/oder von einem zweiten Typ, bei welchem ein Zugriff auf den TLB nicht erforderlich ist. Ein Beispiel des ersten Typs ist eine Bezugnahme auf ein nicht festgelegtes bzw. nicht eingeteiltes Segment eines Speichers. Ein Beispiel des zweiten Typs ist das Ausführen einer Anweisung, die keine Speicherzugriffsanweisung ist. Die Vorrichtung kann weiterhin einen Sicherheitsschaltkreis bzw. fehlersicheren Schaltkreis für das Abschalten des TLB aufweisen, wenn zumindest eine gegebene Anzahl (größer als 1) von Übereinstimmungen zu beliebiger Zeit (gleichzeitig und aus beliebigem Grund) auftritt. Die. Vorrichtung verhindert den Verlust von Daten oder die Beschädigung des Chips, soweit Übereinstimmungsvergleiche parallel ausgeführt werden.
  • Die Erfindung wird jetzt anhand eines veranschaulichenden und nicht beschränkenden Beispiels unter Bezug auf die zugehörigen Zeichnungen beschrieben, von denen:
  • Fig. 1 ein Blockdiagramm eines Computersystems ist,
  • Fig. 2 die Zuordnung einer virtuellen zu einer physikalischen Seite für den Computer gemäß Fig. 1 zeigt, und
  • Fig. 3 eine Adreßübersetzungseinheit zeigt, welche Aspekte der bevorzugten Ausführungsform der vorliegenden Erfindung beinhaltet.
  • Eine Ausführungsform der Erfindung ist in einem System verwirklicht worden, welches von den vorliegenden Anmeldern entworfen wurde und welches in den folgenden Artikeln beschrieben ist: DeMoney et al., "Operating System Support on a RISC" (Betriebssystem unter Stützung auf einem RISC), Proceedinas. 1986 COMPCON IEEE, Seiten 138 bis 143; Moussouris, et al., "A CMOS RISC Processor with Integrated System Functions" (ein CMOS RISC-Prozessor mit integrierten Systemfunktionen), Proceedin 5 1986 COMPSON IEEE Seiten 126 bis 131; Chow. F., et al., "Engineering a RISC Compiler System" (Aufbau eines RISC Compilersystems), Proceedins 1986 COMPCON IEEE Seiten 132 bis 137, Rowen et al., "RISC VLSI Design for System-Level Perforance" (RISC VLSI-Entwurf für Verbesserung auf der Systemebene), VLSI Systems Desian, Band 7, Seiten 81 bis 88 (1986). Hinsichtlich weiterer Hintergrundinformationen für diesen Typ von System wird auf diese Artikel Bezug genommen.
  • Fig. 1 zeigt eine Gesamtblockdiagrammsübersicht eines Computers, mit einer Ausführungseinheit 10, die ein zweiseitiges (bidirektionales) Interface zu einem Datenbus (bzw. einer Datenbusleitung) 12 hat. Die Ausführungseinheit 10 erzeugt auch virtuelle Adressen, die sie über einen virtuellen Adreßbus 14 (VA-Bus) für eine Adreßübersetzungseinheit 16 bereitstellt. Die Adreßübersetzungseinheit 16 wandelt die eingehenden virtuellen Adressen in physikalische Adressen um und gibt sie auf einen physikalischen Adreßbus 18 (PA) aus. Der physikalische Adreßbus ist mit einem CPU-Adreßbus 20 verbunden und auch mit einem Cache-Untersystem 22. Das Cache-Untersystem 22 schließt einen Daten-Cache und einen separaten Befehls- bzw. Anweisungs-Cache (nicht für sich gezeigt) ein, um separat Befehls- und Datenströme im Cache- System zu speichern. Das Cache-Untersystem 22 Ist ebenfalls bidirektional mit der Datenbusleitung 12 verbunden. Der CPU-Adreßbus 20 kann Adressen für ein Speicherinterface 24 und für ein Start-ROM 26 bereitstellen. Das Start- bzw. Neustart-ROM 26 kann Daten auf die Datenbusleitung 12 bringen. Das Speicherinterface 24 ist weiterhin mit einem Speicherunter- System 28 verbunden, welches sowohl einen Hauptspeicher als auch einen abgeschlossenen Speicher (für sich nicht gezeigt) einschließt. Außerdem können mit dem Datenbus und dem CPU- Adreßbus Koprozessoren, Eingabe-/Ausgabevorrichtungen und andere lokale Peripheriegeräte verbunden sein. Diese sind in dem Diagramm der Fig. 1 alle pauschal mit 30 bezeichnet. Der Computer enthält außerdem zahlreiche Kontroll- bzw. Steuerleitungen (die in Fig. 1 nicht dargestellt sind).
  • Vor der genaueren Beschreibung des erfinderischen Teils der Ausführungsform ist es zweckmäßig, das verwendete Adressierschema zu beschreiben. Wie in Fig. 2 dargestellt, verwendet die Ausführungsform einen virtuellen Adreßspeicherraum 40 von GByte, der an einen physikalischen Adreßspeicherraum 42 von 4 GByte angeschlossen ist. Der virtuelle Adreßraum ist in vier Segmente aufgeteilt. Das Benutzersegment, welches als kuseg bezeichnet wird, ist ein 2 GByte Segment mit den Speicherstellen von der Byteadresse 0 bis 7FFF FFFF. Kuseg hat eine TLB-Verbindung zu jedem Teil des physikalischen Adreßspeicher und kann entsprechend der Software optional als Cache-Speicher verwendet werden. Ksego, ein 512 MByte Speicherraum, welcher von dem Kernbereich verwendet wird, ist an den Speicherstellen von Adresse 8000 0000 bis 9FFF FFFF angeordnet. Ksego ist als Cache-Speicher direkt angeschlossen an die Adressen 0000 0000 bis 3FFF FFFF des physikalischen Adreßraumes. Die einzige Adreßübersetzung, die bei einer Speicherbezugnahme auf Ksego stattfinden sollte, ist das zwangsweise Einsetzen von Nullen in die drei Bits höherer Ordnung der 32-Bitadresse. Kseg1 ist identisch mit Kseg0 und an denselben physikalischen Adreßbereich angeschlossen wie Kseg0 mit Ausnahme der Tatsache, daß er nicht als Cache-Speicher eingerichtet ist. Kseg1 wird für I/O-Register (Ein-/Ausgaberegister) und das Start-ROM, für Plattenspeicher und für andere Codes oder Daten verwendet, deren Verwendung den Cache-Vorgang verlangsamt. Kseg2 ist ein 1 GByte Segment mit der Speicherstelle von C000 0000 bis FFFF FFFF und ist als Cache-Speicher einrichtbar und hat TLB-Verbindung zu jedem Bereich des physikalischen Speichers.
  • Fig. 3 zeigt die Adreßübersetzungseinheit 16 im einzelnen. Diese ist aufgeteilt in einen vollassoziativen TLB 60 (Translation Lookaside Buffer - Adreßumsetzspeicher) mit 64 Einträgen und einen vollassoziativen Mikro-TLB (MTLB) 62 mit zwei Einträgen. Der MTLB 62 wird nur für den Abruf von Anweisungen verwendet, während der TLB 60 sowohl für Datenverweise als auch als Cache auf einer zweiten Ebene für den MTLB 62 bei Anweisungsabrufen verwendet wird. Sowohl der TLB 60 als auch der MTLB 62 sind mit ihren Eingängen an einen virtuellen Seitenzahlbus 64 (VPN-Bus) von 20 Bit angeschlossen, welcher die 20 Bits höherer Ordnung des in Fig. 1 gezeigten VA-Bus 14 bildet.
  • Der Ausgang des TLB 60 ist mit einem 20 Bit TLBOUT-Bus 68 verbunden, der an einen ersten Eingang eines Multiplexers 70 (MUX) angeschlossen ist. Der Ausgang des MTLB 62 ist mit einem zweiten Eingang des MUX 70 verbunden. Ein dritter Eingang des MUX 70 ist mit seinen 17 Bits niedriger Ordnung an die 17 Bits niedriger Ordnung des VPN-Bus 64 angeschlossen und seine 3 Bits höherer Ordnung sind mit Masse verbunden. Dieser dritte Eingang wird verwendet für die Direktzugriffsadressierung. Der TLBOUT-Bus 68 ist außerdem mit dem MTLB 62 verbunden,. um den MTLB 62 im Falle eines MTLB-Fehlzustandes wieder zu füllen. Der TLB 60 wird bei einem TLB-Fehlzustand unter Softwaresteuerung von dem VPN-Bus 64 über einen nicht dargestellten Pfad gefüllt. Der Ausgang des MUX 70 ist mit einem PAHIGH-Bus 72 von 20 Bit verbunden, welcher den Abschnitt höherer Ordnung des physikalischen Adreßbusses 18 (PA) bildet, der auch in Fig. 1 dargestellt ist. PALOW, der Abschnitt niedriger Ordnung des PA-Bus 18 ist mit den 12 Bits niedriger Ordnung des VA-Bus 14 verbunden.
  • Der TLB 60 weist ein Feld von 64 Einträgen auf, welche jeweils einen ENTRY-HI Abschnitt 80 und einen ENTRY-LO Abschnitt 82 aufweisen. Der ENTRY-HI Abschnitt 80i jedes einzelnen Eintrages hält eine virtuelle Seitenzahl für die Übereinstimmung mit der virtuellen Seitenzahlnummer auf dem VPN-Bus 64 und kann weiterhin einen Job ID (PID) beinhalten für die Übereinstimmung mit dem Inhalt eines PID-Registers (nicht dargestellt), welches ebenfalls in den TLB 60 integriert sein kann. Der Einschluß eines PID-Registers würde es erlauben, daß der TLB 60 Adreßübersetzungsinformation für verschiedene Jobs bzw. Vorgänge bereithält, selbst wenn mehr als ein solcher Job kontinuierlich Daten in physikalische Adreßbereiche adressieren, auf die von demselben virtuellen Adreßbereich aus zugegriffen wird.
  • Der ENTRY-LO Abschnitt 82i jedes individuellen Eintrages hält die physikalische Seitenzahl bereit, welcher der virtuellen Seitenzahl in dem entsprechenden ENTRY-HI Abschnitt 80i entspricht. Der ENTRY-LO Abschnitt 82i kann auch zusätzliche Statusbits, wie z. B. ein Gültigkeitsbit, ein Allgemeinbit (global bit) oder andere Bits enthalten, die für die Erfindung nicht wichtig sind. Jeder individuelle ENTRY-HI Abschnitt 80i ist an seinem Ausgang mit einem Eingang eines Komparators 84i verbunden. Es gibt 64 derartige Vergleicher bzw. Komparatoren 84i, so daß der Übereinstimmungsvergleich vollständig parallel durchgeführt wird. Der zweite Eingang jedes der Komparatoren 84i ist mit dem VPN-Bus 64 verbunden. Jeder Komparator 84i erzeugt ein Ausgangssignal auf einer Übereinstimmungsleitung 89i, welches entweder auf hohem Niveau liegt (High), wenn die Information in dem ENTRY-HI Abschnitt 80i mit der Information auf dem VPN-Bus 64 übereinstimmt, oder auf niedrigem Niveau (Low) liegt, wenn dies nicht der Fall ist. Jede Übereinstimmungsleitung 89i ist mit einem Eingang eines entsprechenden UND-Gatters 90i verbunden, dessen Ausgang (Leitung 91i) mit einer Ausgangsfreigabe des entsprechenden ENTRY-LO Abschnittes 82i verbunden ist. Unter der Annahme also, daß der zweite Eingang des UND-Gatters 90i (dessen Zweck weiter unten beschrieben wird), auf hohem Niveau (High) liegt, so wird die physikalische Seitenzahlnummer in jedem einzelnen ENTRY-LO Abschnitt 82i des TLB 60 auf den TLBOUT-Bus 68 freigegeben, wenn die Information in dem entsprechenden ENTRY-HI Abschnitt 80i mit der Information auf dem VPN-Bus 64 übereinstimmt.
  • Zusätzlich zu der Verbindung der Ausgangsfreigabe eines ENTRY-LO Abschnittes 82i ist jede Leitung 91i auch mit dem Gatter bzw. Tor eines entsprechenden MOSFET 92i verbunden. Die Quellen (sources) aller MOSFETS 92i sind mit Masse verbunden und die Senken (drains) sind alle mit einer gemeinsamen Pull-Down-Leitung 94 verbunden. Die Pull-Down-Leitung 94 ist über einen Pull-Up-Widerstand 96 (welcher einen MOSFET aufweisen kann, dessen Tor (Gate) an die Senke oder an eine Bezugsspannung angeschlossen ist) mit der Versorgungsspannung verbunden. Die Pull-Down-Leitung 94 ist auch mit dem nicht invertierenden Eingang eines analogen Komparators 98 verbunden, wobei der invertierende Eingang desselben mit einem Spannungsbezugswert Vref1 verbunden ist. Vref1 wird so ausgewählt, daß der analoge Komparator 98 einen Ausgabewert auf hohem Niveau hat, wenn keiner der MOSFETS 92i aktiv ist, und einen Ausgabewert auf niedrigem Niveau hat, wenn zumindest einer der MOSFETS 92i aktiv ist. Wiederum unter der Annahme, daß die zweiten Eingänge all der UND-Gatter 90i auf hohem Niveau liegen, so ist der Ausgang des analogen Komparators 98, der NOTLBMATCH genannt wird, deshalb auf hohem Niveau, wenn keiner der Komparatoren 84i eine Übereinstimmung anzeigt und er ist auf niedrigem Niveau, wenn zumindest einer eine Übereinstimmung anzeigt.
  • Wie in Fig. 3 dargestellt, ist die Pull-Down-Leitung 94 weiterhin mit dem nicht invertierenden Eingang eines zweiten analogen Komparators 100 verbunden, dessen Invertierender Eingang mit einer zweiten Bezugsspannung Vref2 verbunden ist, die niedriger als Vref1 ist. Vref2 wird so ausgewählt, daß der Ausgang des analogen Komparators 100 auf niedrigem Niveau liegt, wenn zumindest etwa fünf der MOSFETS 92i gleichzeitig aktiv sind. Der Ausgang des analogen Komparators 100 ist mit dem "Einstell"-Eingang eines Einstellungs-/Zurücksetzungsflipflop 102 verbunden, das nur beim Einschalten des Systems zurückgesetzt werden kann (Reset). Da das Vorhandensein von zumindest etwa fünf gleichzeitigen Übereinstimmungsanzeigen einen Systemfehler kennzeichnet, sollte die Arbeit des Systems unterbrochen bzw. beendet werden, sobald das Flipflop 102 gesetzt worden ist. Der Zustand des Flipflops ist für diesen Zweck für die Software verfügbar. Der Q Ausgang des Flipflops 102 ist auch mit einem Eingang eines UND-Gatters 101 mit zwei Eingängen verbunden, dessen Ausgang mit dem zweiten Eingang jedes der UND-Gatter 90i verbunden ist. Der zweite Eingang des UND-Gatters 101 ist mit dem Ausgang eines NAND-Gatters 85 (Nicht-UND-Gatter) verbunden. Wenn das Flipflop 102 jemals aktiv wird, werden deshalb die UND-Gatter 90i alle ausgeschaltet bzw. unterbrochen und verhindern damit schnell die Ausgabe jeglicher Information von irgendeinem ENTRY-LO Abschnitt 82i auf den TLBOUT-Bus 68. Die Sperre verhindert nicht, daß jemals mehrfache physikalische Adressen auf den TLBOUT-Bus 68 gleichzeitig ausgegeben werden, jedoch werden sie, falls dieses auftritt, schnell genug von dem Bus entfernt, so daß keine Beschädigung auftreten kann.
  • Die Eingänge des NAND-Gatters 85 sind mit den Ausgängen zweier zusätzlicher NAND- Gatter 86 bzw. 87 verbunden. Das NAND-Gatter 86 hat zwei Eingänge, die jeweils mit einem ZUGRIFF-Signal (MAPPED signal), welches von der Ausführungseinheit 10 erzeugt wird, um anzuzeigen, daß der Speicherzugriff auf einen angeschlossenen bzw. anhängenden Bereich des virtuellen Speichers vorliegt, sowie mit einer Taktphase 1 verbunden sind. Das NAND-Gatter 87 hat drei Eingänge, die jeweils mit einem MEMACC-Signal, welches von der Ausführungseinheit 10 erzeugt wird, um anzuzeigen, daß die laufende Anweisung eine Speicherzugriffsanweisung ist, sowie mit dem ZUGRIFF- bzw. MAPPED-Signal und mit einer Taktphase 2 verbunden sind. Die NAND-Gatter 85, 86 und 87 werden verwendet, um den TLB außer Betrieb zu setzen beim Auftreten bestimmter, zuvor definierter Systemzustände.
  • Es wird jetzt der Betrieb der Adreßübersetzungseinheit 16 beschrieben, wobei zunächst zu bemerken ist, daß der generelle Aufbau bzw. die Architektur des Computers derart ist, daß Anweisungen mit jeder Phase 1 eines zweiphasigen Taktes geholt werden und daß Speicherdatenverweise bei Phase 2 gemacht werden. Bei Phase 1 stellt die Ausführungseinheit 10 die virtuelle Adresse für einen Anweisungsabruf bereit. Die 12 Bits niedriger Ordnung der virtuellen Adresse bilden unmittelbar den Abschnitt niedriger Ordnung des PA-Bus 18. Die 20 Bits höherer Ordnung der virtuellen Adresse werden über den VPN-Bus 64 an den MTLB 62 und an alle 64 Komparatoren 84i in dem TLB 60 weitergeleitet. Der MTLB, dessen Aufbau und Betrieb konventionell ist, vergleicht die Information mit der in seinen zwei virtuellen Adreßregistern schon gespeicherten Informationen. Wenn eine Übereinstimmung festgestellt wird, wird die entsprechende physikalische Seitenzahl für den zweiten Eingang des MUX 70 bereitgestellt und es wird ein Auswahlsignal, PAHIGHSEL, erzeugt, was bewirkt, daß der MUX 70 eine derartige physikalische Seitenzahl auf den PA-Bus 18 ausgibt. Wenn keine Übereinstimmung festgestellt wird, tritt die Ausführungseinheit 10 in einen Haltezustand, während der Haupt-TLB 60 versucht, die virtuelle Adreßanweisung mit der folgenden Phase 1 zu übersetzen. Jeder der Komparatoren 84i vergleicht die virtuelle Adresse mit ihrem entsprechenden ENTRY-HI Abschnitt 80i und gibt einen Wert auf hohem Niveau auf die entsprechende Übereinstimmungsleitung 89i aus, wenn eine Gleichheit festgestellt wird. Unter der Ahnnahme, daß MEMACC und MAPPED auf hohem Niveau liegen, und unter der Annahme, daß genau eine Übereinstimmung festgestellt worden ist, so wird die Pull-Down-Leitung 94 durch einen der MOSFETS 92i auf Niedrigniveau gezogen. Das Niveau der Pull-Down-Leitung 94 ist niedrig genug, um den NOTLBMATCH-Ausgang des analogen Komparators 98 auszuschalten, ist jedoch nicht niedrig genug, um den Ausgang des analogen Komparators 100 auf Niedrigniveau zu bringen. Die zweiten Eingänge der UND-Gatter 90i sind deshalb alle auf hohem Niveau und ermöglichen damit, daß die Ausgangsfreigaben der ENTRY- LO Abschnitte 82i durch den Zustand der Übereinstimmungsleitungen 98i gesteuert werden. Genau einer der ENTRY-LO Abschnitte 82i bringt daher eine physikalische Seitenzahl auf den TLBOUT-Bus 68 und es existiert kein Konflikt. Diese physikalische Seitenzahl wird auf den ersten Eingang des MUX 70 gegeben und das PAHIGHSEL-Signal wird (mit nicht dargestellten Mitteln) geändert, um zu bewirken, daß der MUX 70 seine erste Eingabe auf den PAHIGH-Bus 72 überträgt. Die physikalische Seitenzahl von dem TLBOUT-Bus 68 wird zu diesem Zeitpunkt für eine mögliche künftige Verwendung auch in den MTLB 62 geschrieben.
  • In Phase 2 stellt die Ausführungseinheit 10 für die Adreßübersetzungseinheit 16 virtuelle Adressierungsinformation für einen Datenverweis bereit. Da diese Information in Phase 2 erscheint, wird sie von dem MTLB 62 ignoriert. Statt dessen versucht nur der TLB 60 die Übersetzung wie oben beschrieben. Wiederum unter der Annahme, daß genau eine Übereinstimmung festgestellt wird, so wird die übersetzte physikalische Seitenzahl auf dem TLBOUT-Bus 68 angeordnet und von dem MUX 70 an den PA-Bus 18 übermittelt.
  • Wie bereits beschrieben, gibt es in dem TLB 60 keine Logik, um sicherzustellen, daß einer Übereinstimmung, die mit zwei oder mehr ENTRY-HI Abschnitten 80i auftritt, nicht bewirkt, daß mehr als einer der ENTRY-LO Abschnitte 82i den TLB-Bus 68 gleichzeitig treibt. Der TLB 60 enthält deshalb eine Schaltung, um sich zeitweise oder dauerhaft abzuschalten beim Auftreten bestimmter, zuvor definierter Systemzustände. Diese Zustände werden ausgewählt, um allgemein Situationen zu umfassen, die bei mehrfachen Übereinstimmungen am wahrscheinlichsten auftreten, wie z. B. der anfängliche Hochlaufvorgang, der beim Einschalten aktiviert wird. Mehrfache Übereinstimmungen haben hier eine stärkere Möglichkeit (größere Wahrscheinlichkeit), weil die Inhalte des ENTRY-HI Abschnittes 80 beim Einschalten zufällig sind und nicht unter irgendeiner Softwaresteuerung stehen. Eine Möglichkeit, diesen Aspekt zu verwirklichen, läge darin, das Start-ROM in einem nicht anhängenden (nicht gemappten) Bereich des virtuellen Speichers anzuordnen, um jedes Erfordernis zu vermeiden, den TLB während des Hochfahrens bzw. Startens zu benutzen. Die Ausführungseinheit 10 würde ein Hochfahrsignal beim Einschalten erzeugen, welches sie nur nach der Vollendung des Hochfahrvorganges löschen würde. Das "Hochfahr"-Signal würde verwendet werden, um den TLB abzuschalten unter Verhinderung irgendeiner möglichen Freigabe von mehrfachen physikalischen Seitenzahlen auf den TLBOUT- Bus 68, und die Hochfahrprozedur selbst würde einen Code enthalten, um nicht Identische Einträge in den ENTRY-HI Abschnitt 80 des TLB 60 zu schreiben. Wenn also das Hochfahren beendet ist und das Hochfahrsignal gelöscht ist, besteht keine Möglichkeit einer mehrfachen Freigabe physikalischer Seitenzahlen auf den TLBOUT-Bus 68 aufgrund von zufälligen Einschaltdaten in dem ENTRY-HI Abschnitt 80.
  • Die bevorzugte Ausführungsform schützt jedoch gegen diese Quelle von Identischen Daten auf eine andere Art und Weise, welche auch eine größere Flexibilität in der Softwarecodierung ermöglicht. In der bevorzugten Ausführungsform ist das Start-ROM in einem direkt angehängten Segment des virtuellen Speichers angeordnet, wie in der oben beschriebenen Ausführungsform, jedoch wird der TLB 60 Immer abgeschaltet, wenn ein Speicherverweis auf irgendeine direkt angehängte Seite bzw. eine Seite mit Direktzugriff bzw. "Direktabbildung" erfolgt. Dies ist zulässig, weil der TLB 60 während solcher Speicherverweise nicht benötigt wird und es ist auch wünschenswert, weil es ein ansonsten nicht verfügbares Verfahren für die Software bereitstellt, Einträge von dem TLB 60 zu löschen, falls erforderlich. Ohne dieses Merkmal müßte die Software eine virtuelle Ersatzadresse oder Prozeß-ID auswählen, um in den Eintrag zu schreiben, was Zeit erfordert, um sicherzustellen, daß die virtuelle Ersatzadresse und die Prozeß-ID nicht mit irgendeiner anderen virtuellen Adresse bzw. Prozeß-ID identisch sind, die schon in dem TLB 60 gespeichert sind. Statt dessen muß in der bevorzugten Ausführungsform die Software lediglich eine feste virtuelle Adresse in den gewünschten TLB-Eintrag schreiben, wobei diese virtuelle Adresse durch den Programmierer zuvor ausgewählt wurde, so daß sie in den direkt angeschlossenen Speicherraum fällt (direkt mapped Speicherraum). In der bevorzugten Ausführungsform kann also die Software einen Eintrag (oder sogar mehrere Einträge) in dem TLB löschen, indem einfach ein fester Wert in diese Einträge bzw. Eintragspositionen geschrieben wird. Es kommt nicht darauf an, daß diese Einträge bzw. Plätze dann identische Informationen enthalten, weil sie so ausgewählt wurden, daß sie sich in einem direkt angehängten Bereich des Speichers befinden. Aufgrund der Art und Weise, wie die bevorzugte Ausführungsform gegen die Plazierung mehrfacher physikalischer Adressen auf den TLB-Bus 68 schützt, wird der Ausgangsfreigabe irgendeines ENTRY-LO Abschnittes 82i niemals ein auf diesen Einträgen beruhendes Übereinstimmungssignal geboten.
  • Eine zweite Quelle mehrfach er identischer Einträge in dem ENTRY-HI Abschnitt 80 des TLB 60 liegt in der Software. Typischerweise könnte dieses nur dann auftreten, wenn die Software Fehler oder Störungen enthält. Man kann jedoch nicht von einer fehlerfreien Software ausgehen, sondern die Hardware sollte sich selbst für den Fall schützen, daß Fehler existieren. Offensichtlich kann das TLB-Schutzschema nicht mit demselben Ansatz eines "groben Besens" arbeiten, um diese Quelle von mehrfachen Identischen Einträgen zu behandeln, welche die bevorzugte Ausführungsform bezüglich der Zufallseintragungen beim Start gewählt hat. Dies würde jedes Mal bei einem Speicherzugriff ein Abschalten erfordern. Statt dessen vermindert die bevorzugte Ausführungsform das Risiko von mehrfachen Übereinstimmungen dadurch etwas, daß der TLB immer abgeschaltet wird, wenn er nicht benötigt wird. Dies tritt auf, wenn die Adresse, auf welche verwiesen wird, sich in einem Direktzugriffsbereich bzw. direkt angehängten Bereich eines Speichers (direct mapped-Bereich eines Speichers) befindet, oder wenn die gerade ausgeführte Anweisung überhaupt keine Speicherverweisanweisung ist. Der erstere Zustand ist derselbe wie derjenige, der erfaßt wird, um die zuerst beschriebene Quelle mehrfacher identischer Eintragungen zu behandeln, und es ist kein zusätzlicher Schaltkreis erforderlich, um zu verhindern, daß mehrfache physikalische Seitenzahlen auf den TLBOUT-Bus 68 während des Vorhandenseins eines solchen Zustandes gegeben werden. Der letztere Zustand tritt auf, weil, wenn nicht auf irgendeine Art und Weise verhindert, der TLB 60 eine Übersetzung jeglicher auf dem VPN-Bus 64 befindlicher Information zu Beginn jeder Taktphase versucht. Viele Anweisungen sind keine Speicherzugriffsanweisungen und die auf derartigen Bussen während der Phase 2 vorhandene Information ist entweder zufällig oder ist für einen vollständig unterschiedlichen Zweck bestimmt. Diese Information bildet mit ebenso großer Wahrscheinlichkeit wie irgendeine andere eine virtuelle Adresse, die zufällig mit mehrfachen TLB-Einträgen übereinstimmt, welche dort durch fehlerhafte Software angeordnet wurden. Unter der theoretischen Annahme, daß jegliche Reduzierung in der Anzahl von TLB-Adreßübersetzungen eine Verbesserung darstellt, solange andere Teile des Systems nicht darunter leiden, schaltet die bevorzugte Ausführungsform den TLB in Phase 2 ab, sobald die ausgeführte Anweisung keine Speicherzugriffsanweisung ist.
  • Das System sollte einen fehlersicheren Abschnitt in dem TLB-Schutzschaltkreis haben, welcher den TLB abschaltet, wenn trotz aller anderen Abschnitte des Schutzschaltkreises mehr als eine Übereinstimmungsleitung 89i aktiv wird. Dieser Schaltkreis hängt nicht von irgendeinem Systemzustand ab, sondern er arbeitet, indem er direkt das Auftreten mehrfacher Übereinstimmungen erfaßt. Da der Fehlersicherungsabschnitt nur bei einem nicht bekannten und nicht vorhergesehenen Fall aktiviert wird, kann jedes TLB-Abschalten auf der Basis eines solchen Falles dauerhaft gemacht werden, bis das nächste Einschaltreset stattgefunden hat, um eine Chipbeschädigung zu vermeiden. In der bevorzugten Ausführungsform aktiviert die Gegenwart von etwa fünf gleichzeitigen Übereinstimmungen den Fehlersicherungsabschnitt und das Abschalten ist von Dauer. Die Wahl der Zahl 5 entspricht einem Kompromiß zwischen dem Wunsch so wenig wie möglich Übereinstimmungen von mehr als einer zu erfassen, und dem Erfordernis, verrauschte bzw. gestörte Betriebsbereiche zu vermeiden.
  • Die bevorzugte Ausführungsform der Erfindung hat daher drei Gesichtspunkte: (1) zeitweiliges Abschalten des TLB bei Verweisen auf nicht angehängte Adressen, (2) zeitweiliges Abschalten des TLB nur in Phase 2, falls die laufende Anweisung keine Speicherzugriffsanweisung ist, und (3) dauerhaftes Abschalten des TLB, wenn zumindest etwa fünf Übereinstimmungen gleichzeitig erfaßt werden. Diese drei Aspekte des TLB-Abschaltschemas sind in der bevorzugten Ausführungsform folgendermaßen verwirklicht. Zunächst erzeugt, wenn die Ausführungseinheit 10 eine virtuelle Adresse erzeugt, ein Kombinationsschaltkreis (nicht dargestellt), ein begleitendes MAPPED-Signal, um anzuzeigen, ob die virtuelle Adresse sich in einem angehängten oder nicht angehängten (direct mapped) Bereich des Speichers befindet. Dieses Signal wird bei beiden Taktphasen erzeugt, da sowohl Anweisungen als auch Daten in den angehängten oder nicht angehängten Bereichen des Speichers auftreten können. Beide Taktphasen werden durch das MAPPED-Signal torgesteuert (Phase 1 durch das NAND-Gatter 86 und Phase 2 durch das NAND-Gatter 87) und die Ergebnisse werden gemeinsam mit NAND torgesteuert (durch das NAND-Gatter 85). Das resultierende Signal wird verwendet, um die Übereinstimmungsleitungen 89i torzusteuern (UND-Gatter 90i), bevor sie die Ausgangsfreigaben der ENTRY-LO Abschnitte 82i erreichen. Deshalb wird zu keinem Zeitpunkt eine der Ausgangsfreigaben aktiviert aufgrund eines Speicherverweises auf einen nicht angehängten ("gemappten") Bereich des Speichers. Auch wenn MAPPED inaktiv ist, wird PAHIGHSEL geändert, so daß der MUX 70 die direkt abgebildete Adresse für die Darbietung auf dem PA-Bus 18 auswählt.
  • Der zweite Aspekt des Abschaltschemas wird ähnlich wie der erste verwirklicht. Eine Kombinationslogik in der Ausführungseinheit 10 decodiertden OP-Code der laufenden Anweisung und erzeugt ein MEMACC-Signal, welches anzeigt, ob die Anweisung eine Speicherzugriffsanweisung ist. Das MEMACC-Signal ist nur über die Taktphase 2 (über NAND-Gatter 87) torgesteuert, da Anweisungsabrufe, welche die einzig bedeutsamen Vorfälle sind, die in Taktphase 1 auftreten können, immer einen Speicherzugriff erfordern. Die Phase 2 ist daher sowohl durch MAPPED als auch durch MEMACC torgesteuert und beide müssen aktiv sein, damit irgendeine der Leitungen 91i in Phase 2 aktiviert ist.
  • Der Analogvergleicher 100, Flipflop 102, die MOSFETs 92i, die UND-Gatter 90i und das UND-Gatter 101 verwirklichen den dritten, Fehlersicherungs-Aspekt des Abschaltschemas. Wenn zu irgendeiner Zeit und aus irgendeinem Grund eine Leitung 91i aktiv ist, so wird auch der entsprechende MOSFET 92i eingeschaltet. Die Bemessung aller MOSFETs 92i ist ähnlich und ist so ausgewählt, daß ihre "Ein"-Widerstände in der Größenordnung des Widerstandes des Pull- Up-Bauteiles 96 liegt. Der "Ein"-MOSFET 92i wirkt deshalb als ein Spannungsteiler (Widerstandsteiler) Netzwerk in Kombination mit dem Pull-Up-Bauteil 96. Die Spannung der Pull-Down-Leitung 94 wird also zu jeder Zeit durch die Anzahl der MOSFETs 92i bestimmt, die sich in ihrem "Ein"- Zustand befinden. Nimmt man beispielsweise an, daß jeder MOSFET 92i einen "Ein"-Widerstand R hat, ebenso wie das Pull-Up-Bauteil 96, so befindet sich die Pull-Down-Leitung 94 auf irgendeinem Spannungswert V&sub0;, wenn keiner der MOSFETs 92i eingeschaltet ist. Wenn einer eingeschaltet ist, so beträgt die Spannung der Pull-Down-Leitung 94 V&sub1; = V&sub0;/2. Wenn n eingeschaltet sind, so beträgt die Spannung Vn = V&sub0;(n + 1). Der analoge Vergleicher 98 unterscheidet leicht zwischen den Spannungen, die vorhanden sind, wenn keiner oder einer der MOSFETs 92i ein ist, da er nur zwischen V&sub0; und V&sub0;/2 unterscheiden muß. Es ist schwieriger, zwei aktive MOSFETs 92i zu erfassen und sie von nur einem aktiven MOSFET 92i zu unterscheiden, da hier eine kleinere Spannungsdifferenz (V&sub0;/2 - V&sub0;/3) eine Rolle spielt. Diese Spannungsdifferenz ist klein genug, um das Auslösen des Fehlersicherungsschaltkreises durch Rauschen zu riskieren. Deshalb ist der analoge Komparator 100 nur so ausgestaltet, daß er einen aktiven MOSFET 92i von etwa fünf unterscheidet. Die Spannungsdifferenz (V&sub0;2 - V&sub0;/6) ist größer und leichter zu erfassen, ohne daß Probleme mit dem Rauschen auftreten.
  • Wenn der analoge Komparator 100 erfaßt, daß die entsprechende Anzahl von MOSFETs aktiv ist, was anzeigt, daß mehr als eine Übereinstimmung trotz der anderen Aspekte des Schutzschemas erfaßt worden ist, so gibt der Komparator 100 ein Signal auf niedrigem Niveau aus, was den Flipflop 102 setzt bzw. aktiviert. Der Ausgang des Flipflop 102 Ist ebenfalls torgesteuert mit all den Übereinstimmungsleitungen 89i (über UND-Gatter 101 und die UND-Gatter 90i) und sperrt sie alle gegen eine Freigabe jeglicher Information auf den TLBOUT-Bus 68. Es wird dadurch verhindert, daß das Vorhandensein mehrfacher Übereinstimmungen irgendeine physikalische Beschädigung an dem Chip verursacht.

Claims (4)

1. Computersystem mit:
einer Ausführungseinheit (10), für die Erzeugung von Datenanforderungsanweisungen einschließlich Adressanweisungen (VA),
Speichereinrichtungen (16,22,24,26,28) zum Erzeugen von Daten unter Ansprechen auf die Datenanforderungsanweisungen, wobei die Speichereinrichtungen einen Cache- Speicher (22,60) aufweisen, der Cache-Speicher eine Datenspeichereinrichtung (82) einschließt, um eine Mehrzahl von Datengruppen zu halten, eine Mehrzahl von Markierungsregister (80i) um Addressen (VAHIGH) zu halten, wobei jedes Markierungsregister einer entsprechenden Datengruppe (PAHIGH) in der Datenspeichereinrichtung (82) zugeordnet ist, mit Vergleichsmitteln (84i), um eine Addressanweisung mit Adressen in der Mehrzahl von Markierungsregistern zu vergleichen, wobei die Vergleichseinrichtung ein Übereinstimmungssignal erzeugt für jede Übereinstimmung zwischen einer Adressenanweisung und Adressen in der Mehrzahl von Markierungsregistern, und wobei die Vergleichseinrichtung die Ausgabe einer Datengruppe aus der Datenspeichereinrichtung (82) ermöglicht unter Ansprechen auf die Erzeugung zumindest eines Übereinstimmungssignales, gekennzeichnet durch Erfassungs- und Verhinderungseinrichtungen (90i,92i,96,1 00,102) für das Erfassen einervorgewählten Anzahl von Übereinstimmungssignalen, welche durch die Vergleichseinrichtung erzeugt werden unter Ansprechen auf einen Vergleich zwischen der Adressenanweisung und Adressen in der Mehrzahl von Markierungsregistern, wobei die Erfassungs- und Verhinderungseinrichtung ein Verhinderungssignal (Q) erzeugt, um die Speichereinrichtung zu blockieren, wenn die Erfassung der vorgewählten Anzahl von Übereinstimmungssignalen vorliegt.
2. Computersystem nach Anspruch 1, wobei der Cache-Speicher einen Adressenumsetzpuffer (60) (translation lookaside buffer) aufweist.
3. Computersystem nach einem der Ansprüche 1 oder 2, mit einem Hauptspeicher (28), welcher einen Bereich (kseg0, kseg1) mit direktem Zugriff hat, um auf Daten zuzugreifen, bei welchen der Zugriff über direkte Anweisungen erfolgt, und einen anderen Bereich (kuseg kseg2) hat, für den Zugriff auf Daten über die Speichereinrichtung, wobei die Ausführungseinheit unmittelbare Anweisungen für den Zugriff auf Daten in dem direkten Zugriffsbereich erzeugt, während die Speichereinrichtung bei Vorliegen der direkten Anweisungen blockiert wird.
4. Computersystem nach einem der Ansprüche 1 oder 2, mit einem Hauptspeicher (28), wobei die Ausführungseinheit die Datenanforderungsanweisungen für den Zugriff auf den Hauptspeicher und die Speichereinrichtung sowie die Nicht-Zugriffsanweisungen für andere Aufgaben erzeugt, wobei die Speichereinrichtung bei Vorliegen der Nicht- Zugriffsanweisungen blockiert ist.
DE86308095T 1986-05-02 1986-10-17 Teilassoziativer inhaltsadressierter Speicher mit Schutzeinrichtung. Expired - Lifetime DE3689474T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US85907586A 1986-05-02 1986-05-02

Publications (2)

Publication Number Publication Date
DE3689474D1 DE3689474D1 (de) 1994-02-10
DE3689474T2 true DE3689474T2 (de) 1994-04-28

Family

ID=25329962

Family Applications (1)

Application Number Title Priority Date Filing Date
DE86308095T Expired - Lifetime DE3689474T2 (de) 1986-05-02 1986-10-17 Teilassoziativer inhaltsadressierter Speicher mit Schutzeinrichtung.

Country Status (10)

Country Link
EP (1) EP0244532B1 (de)
JP (1) JPH0614324B2 (de)
KR (1) KR870011536A (de)
AT (1) ATE99436T1 (de)
CA (1) CA1280831C (de)
DE (1) DE3689474T2 (de)
DK (1) DK61187A (de)
IE (1) IE870173L (de)
IL (1) IL81401A (de)
NO (1) NO870225L (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920890A (en) * 1996-11-14 1999-07-06 Motorola, Inc. Distributed tag cache memory system and method for storing data in the same
JP4576172B2 (ja) 2004-07-29 2010-11-04 富士通株式会社 演算処理装置,情報処理装置及び演算処理装置の制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US3800286A (en) * 1972-08-24 1974-03-26 Honeywell Inf Systems Address development technique utilizing a content addressable memory
US4357656A (en) 1977-12-09 1982-11-02 Digital Equipment Corporation Method and apparatus for disabling and diagnosing cache memory storage locations
US4473878A (en) 1981-11-23 1984-09-25 Motorola, Inc. Memory management unit
US4558433A (en) * 1983-05-31 1985-12-10 International Business Machines Corporation Multi-port register implementations

Also Published As

Publication number Publication date
IE870173L (en) 1987-11-02
IL81401A0 (en) 1987-08-31
DK61187D0 (da) 1987-02-06
EP0244532A3 (en) 1989-05-10
NO870225D0 (no) 1987-01-20
EP0244532A2 (de) 1987-11-11
DK61187A (da) 1987-11-03
KR870011536A (ko) 1987-12-24
JPH0614324B2 (ja) 1994-02-23
NO870225L (no) 1987-11-03
ATE99436T1 (de) 1994-01-15
DE3689474D1 (de) 1994-02-10
EP0244532B1 (de) 1993-12-29
JPS62260245A (ja) 1987-11-12
CA1280831C (en) 1991-02-26
IL81401A (en) 1991-06-10

Similar Documents

Publication Publication Date Title
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE69132005T2 (de) Vorrichtung und Verfahren für einen raumsparenden Adressenübersetzungspuffer für inhaltsadressierbaren Speicher
DE69424767T2 (de) Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers
DE112005003859B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE69223386T2 (de) Umsetzungspuffer für virtuelle maschinen mit adressraumübereinstimmung
DE69329080T2 (de) Cache-Speicher
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE2847960C2 (de) Speichersteuereinrichtung
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69210714T2 (de) Durch Doppelzweck-On-Chip-Speicher implementierter Echtzeit-Cachespeicher
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE3689287T2 (de) Datenverarbeitungsgerät.
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE69533312T2 (de) Geschütztes speichersystem und verfahren dafür
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE69029173T2 (de) Mikroprozessor
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE3151745C2 (de)
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE4410060A1 (de) Rechenvorrichtung
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers

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