DE69031411T2 - Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff - Google Patents

Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff

Info

Publication number
DE69031411T2
DE69031411T2 DE69031411T DE69031411T DE69031411T2 DE 69031411 T2 DE69031411 T2 DE 69031411T2 DE 69031411 T DE69031411 T DE 69031411T DE 69031411 T DE69031411 T DE 69031411T DE 69031411 T2 DE69031411 T2 DE 69031411T2
Authority
DE
Germany
Prior art keywords
address
memory
bits
column
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69031411T
Other languages
English (en)
Other versions
DE69031411D1 (de
Inventor
Robert W Horst
Ajay K Shah
I Ko Yamamoto
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.)
Tandem Computers Inc
Original Assignee
Tandem Computers 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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of DE69031411D1 publication Critical patent/DE69031411D1/de
Application granted granted Critical
Publication of DE69031411T2 publication Critical patent/DE69031411T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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]

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)
  • Memory System (AREA)
  • Dram (AREA)

Description

  • Die Erfindung betrifft einen Computerspeicher und ein Verfahren zum Lesen, Schreiben und Auffrischen der Inhalte des Speichers. Insbesondere betrifft die Erfindung ein schnelles Verfahren zum virtuellen Adressieren eines dynamischen Hochgeschwindigkeitsseiten-Direktzugriffsspeichers (FPDRAM).
  • Seit einiger Zeit gibt es einen Trend zu größerer Speicherkapazität in Computern. Obwohl größere Speicherkapazitäten eine Anzahl von gut bekannten Vorteilen schaffen, stoßen große Speichersysteme auch auf verschieden Schwierigkeiten. Allgemein nimmt, so wie die Speichergröße zunimmt, auch die Zeit zu, die zum Speicherzugriff benötigt wird, während andere Faktoren gleich bleiben.
  • In vielen modernen Rechnersystemen ist der Speicher in einem hierarchischen Schema vorgesehen. Bei einem derartigen Schema wird ein großer, relativ langsamer Speicher in Kombination mit einem kleineren, schnelleren Speicher verwendet, der eine Teilmenge des größeren Speichers enthält. Zum Beispiel wird ein Hauptspeicher, der einen relativ langsamen dynamischen Direktzugriffsspeicher (DRAM) enthält, in Kombination mit einem kleineren statischen Direktzugriffsspeicher (SRAM) verwendet, der off als ein "Cache" bezeichnet wird. Andere Hierarchien enthalten das Vorsehen eines großen Speichers in der Form eines relativ langsamen Plattenspeichers, der in Kombination mit dem relativ dazu schnelleren DRAM-Hauptspeicher verwendet wird. Eine Speicherhierarchie könnte alle drei dieser Niveaus enthalten: Langzeit-Plattenspeicher, Haupt-DRAM- Speicher und SRAM-Cache-Speicher.
  • In vielen Speichersystemen wird ein virtuelles Adressierverfahren verwendet. Die virtuelle Adresse ist eine Adresse, die genügend Bits enthält, um eine eindeutige Identifikation für jeden Speicherort bereitzustellen, auf den vom Anwender zugegriffen werden kann. Auf einen physikalischen Speicher wird durch eine physikahsche Adresse zugegriffen, die vom virtuellen Adressenraum erfaßt werden muß.
  • Wenn für den Inhalt eines Speichers, der durch seine virtuelle Adresse identifiziert ist, eine Anfrage erfolgt, muß bestimmt werden, ob die virtuelle Adresse einem Speicherort entspricht, der gegenwärtig in dem physikalischen Speicher liegt. Eine Adresse "entspricht" einer anderen Adresse, wenn sie demselben Speicherort entspricht.
  • Eine oder mehrere Tabellen werden üblicherweise vorgesehen, um eine virtuelle Adresse in eine entsprechende physikalische Adresse zu übersetzen (wenn es eine Entsprechung gibt). Eine Verweisprozedur für eine derartige Tabelle ist oft relativ langsam. Die Tabelle enthält typischerweise nur eine Übersetzung von Speicherblöcken, die oft als "Seiten" bezeichnet werden. Glücklicherweise wurde herausgefunden, daß Bezugnahmen auf die Seitentabelle eine Lage zeigen, d.h., daß es unter all den möglichen virtuellen Seiten, von denen es erforderlich sein könnte, daß sie in der Seitentabelle nachgesehen werden müssen, während irgend einer kurzen Zeitperiode eine Tendenz für einige dieser Seiten gibt, wiederholt nachgesehen zu werden. Diese Lage gestattet eine gewisse Zeitersparnis durch Bereitstellen einer zweiten kleineren und schnelleren, als ein "Seitentabellen-Cache" (PTC) (oder manchmal ein "Übersetzungs-Seitenblick-Puffer"; engl.: "translation lookaside buffer") bezeichneten Tabelle, die verwendet wird, um die Einträge aus der größeren Seitentabelle zu enthalten, auf die als letzte zugegriffen wurde. Der PTC enthält somit eine Teilmenge der Seitentabelle, von der es wahrscheinlich ist, die Einträge zu enthalten, die nachfolgend angefordert werden. Der PTC enthält zwei Felder. Ein Feld ist das PTC-Eintrags- oder -Datenfeld, das die Virtuell-in-Physikalisch-Adressenkarte ist. Das andere Feld ist die PTC-Markierung, die verwendet wird, um zu bestimmen, ob die Daten im PTC-Eintrag gültig sind oder nicht.
  • Zusätzlich zur Lage, die durch die Seitentabelle gezeigt wird, wird eine bestimmte Lage auch durch den Speicher selbst gezeigt. Gemäß diesem Lagenphänomen ist es für eine gegebene Referenz auf einen Speicherort wahrscheinlich (d.h. mit größerer Wahrscheinlichkeit, als zufällig erwartet), daß ihr innerhalb einer relativ kurzen Zeitperiode eine Anforderung für einen naheliegenden Speicherort folgt. Die Wahrscheinlichkeitsverteilungen, die "nahe" und "relativ kurze Zeitperiode" definieren, können für ein gegebenes Speichersystem und eine gegebene Bearbeitungsaufgabe empirisch bestimmt werden. Diese Lage wurde auf verschiedene Weisen ausgewertet, um die mittlere Speicherzugriffszeit zu verringern. Ein Verfahren dieser Auswertung ist das Vorsehen eines dynamischen Hochgeschwindigkeitsseiten-Direktzugriffsspeichers (FPDRAM).
  • Ein FPDRAM kann am besten verstanden werden, indem es einem gewöhnlichen Speicherzug riff gegenübergestellt wird. In einem typischen DRAM werden Speicherorte durch eine Reihe und Spalte adressiert, wobei jede Reihe Elemente mit benachbarten Adressen enthält. Beim normalen Zugriff wird eine Reihenadresse präsentiert und in einen Signalspeicher mit einem Reihenadressenhinweissignal (RAS) freigegeben, das typischerweise ausgegeben wird. Später wird ein Spaltenadressenhinweissignal (QAS) präsentiert und ausgegeben, um das Lesen oder Schreiben des DRAMs auszuführen. Jeder neue Zugriff muß durch den gesamten Zyklus gehen. Aus diesem Grund erfordert jeder Zugriff das Präsentieren und Freigeben der Reihenadresse und nachfolgend Freigeben einer Spaltenadresse. Da die zwei Adressen, selbst wenn sie relativ nahe beieinander sind, für jeglichen Zugriff in dem Speicher aufeinanderfolgend freigegeben werden müssen, zieht diese Art von Zugriff nicht den vollen Vorteil aus der Speicherlage.
  • Dagegen nutzt FPDRAM die Speicherlage, d.h. Situationen, in welchen es relativ wahrscheinlich ist, daß einem Zugriff auf einen Speicherort in einer speziellen Reihe innerhalb einer kurzen Zeit eine Anfrage für einen Speicherort in derselben Reihe folgt. In diesem Fall ist es möglich, RAS für eine relativ lange Periode gelten zu lassen, während der mehrfache Zugriffe auf die ausgewählte Reihe (definiert durch den Inhalt eines Reihenadressensignalspeichers) ausgeführt werden können. Die mehrfachen Zugriffe werden durch sequentielles Präsentieren von Spaltenadressen erreicht, während eine einzelne Reihenadresse fortgesetzt gilt. Für jeden Zugriff auf einen Speicher in einer Reihe, auf die vorher zugegriffen wurde (d.h. eine Reihe, die durch den Inhalt einer der Reihenadressensignalspeicher adressiert ist), ist nur das Ausgeben von CAS erforderlich, d.h., es ist nicht erforderlich, für jeden Zugriff aufeinanderfolgend RAS auszugeben und dann CAS auszugeben. Auf diese Weise ist, wenn eine nachfolgende Speicheranfrage für einen Ort in derselben Reihe erfolgt, diese nachfolgende Adresse zum Lesen oder Schreiben durch die relativ schnelle Prozedur des Präsentierens einer neuen Spaltenadresse und Ausgebens des Spaltenadressenhinweissignals (CAS) verfügbar. Wenn eine Anforderung für einen Speicherort in einer anderen Reihe erfolgt (angenommen, es gibt keine anderen FPDRAM-Reihenadressensignalspeicher, die für diese Anforderung verwendbar sind), folgt eine normale Zugriffsprozedur, d.h. sequentielles Laden und Freigeben einer Reihenadresse, dann einer Spaltenadresse. Auf diese Weise werden in dem Ausmaß, daß nachfolgende Speicherzugriffe auf Orte in derselben Speicherreihe erfolgen, relativ schnelle FPDRAM-Speicherzugriffe statt den langsameren normalen Speicherzugriffen verwendet.
  • Um die Geschwindigkeit eines FPDRAMs zu nutzen, ist es erforderlich, für jede Speicheranforderung zu bestimmen, ob jene Anforderung für ein Speicherelement ist, das in einer der Reihen liegt, die einer Reihenadresse in einem der Reihenadressensignalspeicher entspricht. Bei früheren Systemen, die dem Anmelder bekannt sind, wurde eine Indikation der physikalischen Reihenadresse für die Reihe oder Reihen, auf die jüngst zugegriffen wurde, gespeichert. Wenn eine physikalische Adressenanforderung erfolgte, wurde ein Vergleich durchgeführt, um zu bestimmen, ob die angeforderte Adresse in einer kürzlich adressierten Reihe war, d.h. für welche das RAS noch galt. Wenn eine virtuelle Adressenanfrage erfolgte, wurde die virtuelle Adresse zuerst in eine physikalische Adresse übersetzt, und dann wurde der Vergleich mit den gespeicherten physikalischen Adressen durchgeführt.
  • Selbst mit dem relativ schnellen Zugriff, der durch FPDRAM geschaffen wird, ist der Speicherzugriff noch immer ein begrenzender Faktor in vielen Systemen, insbesondere jenen mit großen Speichern. Solche großen Speichersysteme sind typischerweise durch die Geschwindigkeit einer Qache-Fülloperation und die Schreibbandbreite begrenzt.
  • Die GB-A-2 193 017 offenbart entsprechend dem Oberbegriff des Anspruchs 1 ein Speicherzugriffssystem, wobei ein Prozessor Reihen- und Spaltenadressen bereitstellt, um auf Daten zuzugreifen, die in einem DRAM gespeichert sind. Die hochwertigen Bits der virtuellen Adresse bilden die virtuelle Reihenadresse, während die niederwertigen Bits eine reale Spaltenadresse darstellen, so daß nur die virtuelle Reihenadresse in eine reale Reihenadresse übersetzt werden muß. Ein Komparator vergleicht die gegenwertige virtuelle Reihenadresse mit der vorhergehenden Reihenadresse, die in einem Signalspeicher gespeichert ist. Wenn es eine Übereinstimmung gibt, koppelt eine Zyklussteuerschaltung die reale Spaltenadresse an das DRAM und legt ein CAS-Signal an, so daß auf die gewünschten Daten in dem Speicher ohne das Erfordernis zugegriffen wird, die Reihenadresse neu anzulegen, und wenn es keine Übereinstimmung gibt, wird ein vollständiger Speicherholzyklus initiiert, wodurch sowohl die Reihen- als auch die Spaltenadresse zusammen mit den jeweiligen RAS- und CAS-Signalen an das DRAM angelegt werden.
  • Die W086105917 offenbart ein Speichersystem, das Auffrischsteuereinrichtungen hat, wobei in einem "Seitenmodus" sequentielle Zug riffe auf eine RAM-Speichervorrichtung in derselben Reihe durch Halten einer ursprünglichen Reihenadresse, die zum Beginn der Seitenmodusoperation in die Vorrichtung freigegeben wurde, und anschließendes Freigeben nur neuer Spatenadressen in die Vorrichtung durchgeführt wird.
  • Gemäß der vorliegenden Erfindung wird ein Speichersystem geschaffen, wie es im Anspruch 1 beansprucht ist.
  • Die Erfindung schafft auch ein Verfahren, wie es im Anspruch 3 beansprucht ist.
  • Die vorliegende Erfindung enthält einen Computerspeicher und ein Verfahren zum Speicherzugriff, der/das verglichen mit früheren Systemen für einen schnelleren Speicherzugriff sorgt, insbesondere für Konfigurationen mit sehr großen Speichern, wie 128 Megabyte oder mehr Speicher. Die vorliegende Erfindung kann in Verbindung mit jeglicher Art von Direktzugriffsspeichern (RAM) verwendet werden, in denen die Zugriffszeit auf eine Teilmenge der RAM-Elemente schneller als auf andere Elemente ist. FPDRAMs sind ein Beispiel von Speichern dieser Art, da ein Zugriff auf Elemente in einer gegenwärtig ausgewählten Reihe schneller als ein Zugriff auf andere Elemente ist.
  • Bei einer Ausführung der vorliegenden Erfindung bildet/bilden ein oder mehrere FPDRAM(s) den Hauptspeicher, von dem angeforderte Seiten in ein Gache geladen werden. Wie vollständiger unten beschrieben wird, werden Seiten von einem speziellen FPDRAM nur angefordert, wenn bestimmt wurde, daß die Adresse, auf die vom PTC hingewiesen wird, der Speicherort ist, der angefordert wurde, indem die Adresse in der PTC-Markierung nachgesehen wird.
  • Jeder Reihenadressensignalspeicher des FPDRAMs ist mit zwei Registern verbunden. Ein "Indikator"-Register (genannt der "CAMPhyAdr") enthält die physikalische Reihenadresse (plus zusätzliche Bits, wie Paritätsbits). Der andere "virtuelle/physikalische" Register (genannt der "CAMTag") enthält entweder die physikalische Reihenadresse oder die virtuelle Reihenadresse in Abhängigkeit von der Adressenart, die ursprünglich angefordert wurde. Wenn eine virtuelle Adresse angefordert wurde (nach dem Verifizieren ihrer Präsenz in dem PTCMarkierungsfeld) kann sie auf diese Weise mit dem virtuellen/physikalischen (CAMTag)-Register ohne das Erfordernis zunächst einer Übersetzung verglichen werden, um die physikalische Adresse zu erhalten. Das somit beschriebene System sorgt für einen schnellen Speicherzugriff in dem Fall von Anforderungen virtueller Adressen, was der üblichste Modus von Adressenanforderungen ist. Das System sorgt auch für einen Speicherzugriff, der aus Anforderungen physikalischer Adressen resultiert, unter Verwendung derselben Verfahren wie jene für Anforderungen virtueller Adressen. Die beschriebenen Verfahren arbeiten insbesondere gut, weil für Speicheranforderungen in den meisten Situationen herausgefunden wurde, daß sie eine virtuelle/physikalische "Lage" zeigen, d.h. wiederholte Anforderungen von derselben Reihe dazu tendieren, vom selben Typ zu sein, entweder virtuell oder physikalisch. Das Vermeiden der Notwendigkeit der Virtuell-in-Physikalisch-Übersetzung, um in jedem Fall zu bestimmen, ob die ausgewählte Adresse in einer Reihe ist, die durch Inhalte eines Reihenadressensignalspeichers adressiert ist, stellt eine wertvolle Zeitersparnis dar. Da eine Virtuell-in-Physikalisch-Übersetzung nicht für jeden Speicherzug riff erforderlich ist, kann eine solche Übersetzung mit langsameren, billigeren Komponenten erledigt werden, z.B. einem langsameren Seitentabellen-Cache, während noch immer ein schnelles Speicherlesen und -schreiben erzielt wird.
  • Wenn für die angeforderte Reihe keine Übereinstimmung gefunden wird, wird auf die benötigte Reihe durch den langsameren normalen Zugriffsmodus zugegriffen. Wenn auf ein Speicherelement in einer neuen Reihe zugegriffen werden soll, ist es erforderlich, zu bestimmen, ob die Speicheranforderung eine virtuelle Adresse oder eine physikalische Adresse war. Aus diesem Grund wird ein Bit, das angibt, ob die Adresse virtuell oder physikalisch ist, zusammen mit der virtuellen oder physikalischen Adresse in dem CAMTag-Register gespeichert.
  • Ein zusätzlicher Aspekt der Erfindung betrifft das Anpassen der Breite einer Adresse. Die Breite, die zum eindeutigen Adressieren von Elementen in einem Speicherblock erforderlich ist, hängt von der Größe des Blockes ab. Bei einer bevorzugten Ausführung der vorliegenden Erfindung benötigen die DRAMs, die verwendet werden, 10 Spaltenadressenbits und 10 Reihenadressenbits. Die virtuelle Adresse in diesem System enthält Seitenadressenbits und Wortadressenbits. Die Wortadressenbits sind in den virtuellen und physikalischen Adressen identisch, und somit werden die Wortadressenbits nicht übersetzt. Die Anzahl von Wortadressenbits in einer virtuellen Adresse ist durch die Anzahl von Wörtern auf einer Seite bestimmt. Bei der bevorzugten Ausführung ist die Seitengröße 2 kBytes oder 1k-16-Bitwörter. Eine Seite dieser Größe kann unter Verwendung von 10 Bits adressiert werden, und somit enthält die virtuelle Adresse zehn Wortadressenbits. Dies bedeutet, daß 10 Bits in der virtuellen Adresse identisch mit den entsprechenden Bits der physikalischen Adresse sind.
  • Die DRAMs, die den Speicher bilden, sind in einer verschachtelten Vierwegweise organisiert, d.h. vier aufeinanderfolgende Wörter im Speicher kommen von vier verschiedenen DRAMs statt von vier Zellen in demselben DRAM. Bei diesem Schema werden während einer Leseoperation die zwei geringstwertigen Bits der 10-Bit-Wortadresse verwendet, um aus den vier verschachtelten Wörtern auszuwählen. Somit werden die geringstwertigen Bits der Wortadresse bei einer Leseoperation nicht verwendet und werden verworfen (zu Zwecken der DRAM- Adressierung). Somit verbleiben acht Wortadressenbits (die keinerlei Übersetzung erfordern) zur Verwendung als Spaltenadressenbits. Da die DRAMs 10 Spaltenadressenbits erfordern, müssen zwei Spaltenadressenbits von dem Teil der physikalischen Adresse kommen, der eine Übersetzung erfordert. Außerdem ist es wünschenswert, das Übersetzungserfordernis bei Wiederholungszugriffen auf dieselbe Seite von 1k-Wörtern zu eliminieren. Dies wird durch Speichern der erforderlichen zusätzlichen zwei Spaltenadressenbits in dem CAMPhyAdr-Register zusammen mit den 10 Reihenadressenbits (und ebenfalls enthaltenen Paritätsoder anderen Fehlerdetektionsbits, Bankauswahlbits und/oder Baugruppenauswahlbits) erreicht. Da nur acht Bits der Wortadresse zu der 10-Bit-Spaltenadresse beitragen, wechseln zwei Spaltenadressenbits des Adressenraums nicht zwischen Verfehlungen.
  • Das Speichern von zwei Spaltenadressenbits wird ähnlich zum Adressieren eines DRAMs in einer Schreiboperation eingesetzt. Bei der bevorzugten Ausführung werden jedoch nur ein Wort oder zwei Wörter in einer einzelnen Schreiboperation geschrieben. Um ein Überschreiben von unadressierten Wörtern zu verhindern, werden die zwei Bits, die bei einer Leseoperation verworfen würden, verwendet, um auszuwählen, welches eine Wort oder welche zwei Wörter unter den vier potentiell adressierbaren eine ausgegebene Spaltenadresse hat/haben, um an jenem Ort ein Schreiben auszuführen.
  • Das Speichern von Spaltenadressenbits zur Verwendung während CAM-Trefferzug riffen ist eine Einrichtung, die zur Verwendung bei verschiedenen Speicherarten verallgemeinert werden kann. Zum Beispiel können drei oder mehr Bits in dem Indikator- (CAMPhyAdr) Register gespeichert werden, um insgesamt 11 oder mehr Spaltenadressenbits zu schaffen. Das Bereitstellen von 11 Spalten- und Reihenbits wäre nützlich, z.B. in Verbindung mit einem 4-Megabit-DRAM, das typischerweise 11 Spaltenadressenbits und 11 Reihenadressenbits erfordert, um auf ein Speicherelement zuzugreifen. Das Speichern von mehr als zwei Spaltenadressenbits kann auch nützlich sein, um zusätzliche niedrigstwertige Bits zum Auswählen unter verschachtelten DRAMs im Fall von z.B. Acht-Wege-Verschachtelung zu schaffen.
  • Das vorliegende System erzielt eine verringerte Cache-Füllzeit und eine erhöhte effektive Schreibbandbreite im Vergleich zu früheren Systemen, die die offenbarte Erfindung nicht einsetzen.
  • Die vorliegende Erfindung enthält einen Auffrischzyklus für das DRAM, der effizient ist, da die Inhalte des zugehörigen CAMTag-Registers und CAMPhyAdr-Registers erhalten werden. Das RAS wird während dem DRAM-Auffrischen zurückgenommen. Folgend auf das Auffrischen wird das RAS in einer Weise neu aufgestellt, die ähnlich dem RAS-Aufstellen ist, die einer CAM-Verfehlung folgt (d.h. Verschiedenheit der Inhalte des CAMTag's und entsprechender Teile der angeforderten Adressen). Auf diese Weise ist die Speicherkonfiguration, die dem Auffrischzyklus folgt, dieselbe, wie sie vor dem Auffrischzyklus war. Somit können nachfolgende Speicherzugriffe unter Nutzung des Vorteils der Speicherlage basierend auf Reihenzug riffen durchgeführt werden, die vor dem Auffrischzyklus ausgeführtwurden.
  • Fig. 1A-H sind vereinfachte schematische Diagramme des Speichersystems der vorliegenden Erfindung,
  • Fig. 2 ist ein schematisches Blockdiag ramm des Speichersystems der vorliegenden Erfindung, das Datenwege, aber keine Steuerwege zeigt,
  • Fig. 3 ist ein Flußdiagramm einer Speicherleseoperation bei einem CAM-Treffer gemäß der vorliegenden Erfindung,
  • Fig. 4 ist ein Flußdiagramm einer Speicherschreiboperation bei einem CAM- Treffer gemäß der vorliegenden Erfindung,
  • Fig. 5 ist ein Flußdiagramm einer Speicherleseoperation bei einem CAM- Verfehlen gemäß der vorliegenden Erfindung,
  • Fig. 6 ist ein Flußdiagramm eines DRAM-Auffrischzyklus gemäß der vorliegenden Erfindung,
  • Fig. 7 ist ein Zustandsdiagramm der MEMOP-Zustandsmaschine,
  • Fig. 8 ist ein Zustandsdiagramm für die Empfangszustandsmaschine,
  • Fig. 9 ist ein Zustandsdiagramm der Auffrischzustandsmaschine,
  • Fig. 10A ist ein schematisches Diagramm einer virtuellen Adresse,
  • Fig. 10B ist ein schematisches Diagramm einer physikalischen Adresse,
  • Fig. 10C ist ein schematisches Diagramm einer Adresse, die von einem RAM verwendet wird,
  • Fig. 11A stellt die Bitarten dar, die in den CAMTag-Registern gespeichert werden,
  • Fig. 11B stellt die Bitarten dar, die in den CAMPhyAdr-Registern gespeichert werden, und
  • Fig. 12 ist ein schematisches Blockdiagramm eines PTCS mit verteilten Eintragsund Markierungsfeldern.
  • Die bevorzugte Ausführung der vorliegenden Erfindung wird im Kontext eines speziellen Verarbeitungssystems beschrieben, obwohl es, wie den Fachleuten klar ist, bei vielen Arten von Verarbeitungssystemen verwendet werden kann. Das beschriebene Verarbeitungssystem ist ein Mehrprozessorsystem, das bis zu 16 Prozessoren enthält, wobei jeder Prozessor ein mit ihm verbundenes Speichersystem hat. Bei der bevorzugten Ausführung enthält das mit jedem Prozessor verbundene Speichersystem zwei funktionale Einheiten 93a (Fig. 2). Vorzugsweise ist jede funktionale Einheit auf einer oder zwei Leiterplatte(n) ausgebildet, wobei jede Leiterplatte 32 oder vorzugsweise 64 Megabytespeicher zusammen mit Speichersteuervorrichtungen enthält. Die vorliegende Erfindung betrifft eine Speichereinheit, die mit einem solchen Prozessor verbunden ist. Jede der Speichereinheiten in dem Verarbeitungssystem arbeitet im wesentlichen auf dieselbe Weise.
  • Die Fig. 10A stellt die Konfiguration einer virtuellen Adresse dar, die eine Segmentadresse 2 in den Bits 0-14, eine Seitenadresse 4 in den Bits 15-20 und eine Wortadresse 5 in den Bits 21-31 enthält. Die Fig. 10B stellt die Konfiguration einer physikalischen Adresse dar, in der die physikalische Seitenadresse 6 in den Bits 0-20 enthalten ist und die Wortadresse 5 in den Bits 21-30 enthalten ist.
  • Unter Bezugnahme nun auf die Fig. 10C ist eine Adresse, wie sie zum Zugreifen auf das DRAM verwendet wird, mit einer 30-Bit-Breite dargestellt. Die Adresse enthält 10 Bits einer Spaltenadresse und 10 Bits einer Reihenadresse. Die Reihenadresse ist in den Bits 7-16 (12,14) vorgesehen. Die Spaltenadresse ist in den Bits 17 und 18 (16) und den Bits 2128 (20) vorgesehen. Die Bits 1-5 (22) geben an, welches Speicherbauteil adressiert ist. Das Bit 6 (24) gibt an, welche Sektion des Speichers ("X" oder "Y") adressiert ist. Die Bits 19 und 20 (26) sind Bankauswahlbits. Die Bits 29 und 30 (28) werden bei dem Pseudoverschachtelungsschema verwendet.
  • Vor der genauen Beschreibung der Operation der bevorzugten Ausführung der Erfindung werden die Hauptkonzepte der Erfindung anhand eines vereinfachten Beispiels unter Bezugnahme auf die Fig. 1A-1E beschrieben. Eine vereinfachte zweite Einheit, die in den Fig. 1A-1E dargestellt ist, enthält einen 64-Elemente- Speicher 10, der acht Reihen 1a-1h und acht Spalten 2a-2h hat. Der Speicher ist vom Hochgeschwindigkeitsseitentyp, bei dem der Reihenselektor 3 dafür belassen werden kann, eine gegebene Reihe gemäß der Adresse in einem Reihenadressensignalspeicher 4 unter einer Anzahl von aufeinanderfolgenden Spaltenadressen durch den Spaltenselektor 5 auszuwählen. Verbunden mit dem Speicher sind zwei Register, ein CAMPhyAdr-Register 6, der eine physikalische Adresse hält, und einen CAMTag 7, der eine Adresse hält, die entweder eine physikalische Adresse oder eine virtuelle Adresse sein kann. Zu Zwecken der vereinfachten Erklärung wird angenommen, daß eine Adressenanforderung 8 gerade angekommen ist. Die Adressenanforderung 8 kann eine Adresse sein, die für entweder ein Lesen vom oder ein Schreiben zum Speicher verwendet wird. Bei einem typischen Szenario kommt eine derartige Adressenanforderung an, nachdem ein Prozessor einen Versuch unternommen hat, zu lesen von oder zu schreiben zu einem Cache, was erfolglos war, weil die erforderliche Adresse nicht in dem Cache vorhanden war. Im Falle eines derartigen "Cache-Verfehlens" muß vom Hauptspeicher 10 eine Speicherung zur Übertragung zum Cache geholt werden.
  • Beim vorliegenden Beispiel wird angenommen, daß der frühere Zugriff auf den Speicher die Speichereinheit in der Konfiguration belassen hat, die in der Fig. 1A gezeigt ist, d.h. mit der achten Reihe, Reihe 111, ausgewählt. Entsprechend enthält der Reihenadressensignalspeicher 4 die Reihenadressenbits 111, und CAMPhyAdr 6 enthält dieselbe Reihenadresse (111). Es wird ferner angenommen, daß eine frühere Adressenanforderung für eine virtuelle Adresse war. Entsprechend enthält CAMTag 7, wie in der Fig. 1A gezeigt ist, eine Reihenadresse, die von der früheren Adressenanfrage übriggelassen wurde und somit die virtuelle Adresse entsprechend der physikalischen Adresse 111 ist. Wie anhand der Seitentabelle 9 zu sehen ist, ist die virtuelle Adresse, die der physikalischen Adresse 111 entspricht, 101.
  • Wie anhand der Fig. 1A zu sehen ist, ist die neue Adressenanfrage in der Form 001110. Um die neue Anforderung zu verarbeiten, wird zuerst ein Vergleich zwischen den Reihenbits in der Adressenanforderung 8 und den Inhalten von CAMTag 7 durchgeführt. In diesem Fall sind die Reihenbits in der Adressenanfrage 8 001, während die Inhalte von CAMTag 7 101 (übriggeblieben von der früheren Speicheranfrage) sind. Entsprechend gibt der Komparator 11 an, daß es eine CAM-Verfehlung gibt. Dies bedeutet, daß die neu angekommene Adressenanforderung 8 für eine Reihe ist, die von der Reihe verschieden ist, die vorher aufgestellt wurde (d.h. verschieden von der Reihe III).
  • Wenn der Komparator 11 eine Verfehlung angibt, werden die Register 6, 7 aktualisiert, wie in der Fig. 1B dargestellt ist. CAMTag 7 wird mit der Reihenadresse von der Adressenanfrage (d.h. 001) geladen. In einem Fall, in dem die neue Adressenanfrage eine physikalische Adresse ist, können die Reihenbits der physikahschen Adresse direkt zu CAMPhyAdr 6 übertragen werden. In einem solchen Fall werden CAMTag und CAMPhyAdr identische Angaben der angefragten Reihe enthalten. Wie hierin verwendet wird, wird eine Adressen- oder Speicherstelle von einer Bit-Folge "angegeben", wenn wenigstens ein Teil enthält oder übersetzt werden kann in eine Adresse entsprechend der Speicherstelle.
  • Beim vorliegenden Beispiel wird jedoch angenommen, daß die Adressenanfrage 8 eine virtuelle Adresse ist, was somit eine Übersetzung erfordert. Die Seitentabelle wird verwendet, um zu bestimmen, welche physikalische Adresse einer virtuel len Adresse 001 entspricht. Die Seitentabelle 9 gibt an, daß die entsprechende physikalische Adresse 010 ist. Wie in der Fig. 1B gezeigt ist, wird diese neue physikalische Adresse in CAMPhyAdr 6 geladen. Wie anhand der Fig. 1B zu sehen ist, enthält CAMTag 7 nun die virtuelle Reihenadresse für die neue Anfrage, während CAMPhyAdr 6 die entsprechende physikalische Reihenadresse enthält. Die physikalische Reihenadresse von CAMPhyAdr 6 wird zum Reihenadressensignalspeicher 4 geschickt, was den Reihenselektor 3 veranlaßt, die Reihe auszuwählen, die durch die physikalische Reihenadresse adressiert ist, nämlich die Reihe 101.
  • Wie in der Fig. 1C angegeben ist, wird die Adressenanfrage 8 nun unter Verwendung der neuen inhalte von CAMTag 7 und CAMPhyAdr 6 wieder versucht. Diesmal gibt, wenn die Reihenbits der Adressenanfrage 8 mit den Inhalten von CAMTag 7 verglichen werden, der Komparator 11 einen Treffer an. Der Spaltenselektor 5 wählt eine Spalte gemäß den Spaltenbits von der Adressenanfrage 8 aus.
  • Die Fig. 1D stellt die nächste nachfolgende Adressenanfrage dar, die in diesem Beispiel 001000 ist. Die Reihenbits von der Adressenanfrage 8 stimmen mit den Inhalten von CAMTag 7 überein. Entsprechend ist die virtuelle Reihenadresse der neuen Anfrage 8 identisch mit der virtuellen Reihenadresse von der vorhergehen den Anfrage, die in der Fig. IC dargestellt ist. Als eine Folge ist der Reihenselektor 3 immer noch konfiguriert, um die dritte Reihe 010 auszuwählen. Da es einen Treffer gab, der durch den Komparator 11 angegeben wurde, werden die Spaltenbits von der Adressenanfrage 8 (d.h. 000) von dem Spaltenselektor 5 verwendet, um die Spalte 000 auszuwählen.
  • Die Fig. 1E-1G stellen eine vereinfachte Version einer Ausführung der Erfindung dar, die verwendet werden kann, wenn nicht alle Spaltenbits direkt verwendet werden können, um den Spaltenselektor 5 zu steuern. Bei der Ausführung, die in den Fig. 1E-1G dargestellt ist, ist das Bit der dritten Spalte in CAMPhyAdr zu sammen mit den physikalischen Reihenbits gespeichert, und ist ebenfalls in CAMTag 7 zusammen mit den virtuellen oder physikalischen Reihenbits gespeichert. Es ist somit zu sehen, daß bei der Ausführung, die in den Fig. 1E-1G dargestellt ist, das Bit der dritten Spalte in vielerlei Hinsicht behandelt wird, als wenn es ein zusätzliches Reihenbit wäre. Es ist in CAMPhyAdr zusammen mit den physikalischen Reihenbits gespeichert, und ein vorher gespeichertes Bit der dritten Spalte (übriggeblieben vom vorhergehenden Speicherzugriff) wird mit dem neuen Bit der dritten Spalte in der eingehenden Adressenanforderung 8 verglichen. Durch Speichern des Bits der dritten Spalte und seine Kombination mit den ersten zwei Spaltenbits von der Adressenanfrage 8, wie unten beschrieben ist, wird das Bit der dritten Spalte in der Adressenanfrage 8 für andere Zwecke freigegeben, wie Steuerung der Verschachtelung, wie unten beschrieben ist. Da ferner nur die ersten zwei Bits vom Spaltenteil der Adressenanfrage direkt beim Steuern des Spaltenselektors 5 verwendet werden, kann das dargestellte Schema verwendet werden, wenn die Adressenanfrage nur 5 Bits von direkt verwendbarer Adresseninformation (d.h. Reihenbits 1-3 und Spaltenbits 1-2) enthält, wie im Zusammenhang mit einer Seitengröße von 2&sup5; oder 32 adressierbaren Speicherelementen.
  • Die Fig. 1E stellt dieselbe Adressenanfrage und -operation dar, die in der Fig. 1D dargestellt ist, wobei jedoch die Ausführung verwendet wird, bei der das Bit der dritten Spalte ähnlich einem Reihenbit behandelt wird. Wie in der Fig. 1E zu sehen ist, enthält CAMTag 7 das virtuelle oder physikalische Reihenbit, das von der vorherigen Adressenanfrage (d.h. die in der Fig. 1C dargestellte Adressenanfrage) übriggeblieben ist, und enthält auch das Bit (0) der dritten Spalte, das von der vorhergehenden Adressenanfrage (dargestellt in Fig. 1C) übriggeblieben ist. Die in CAMTag 7 gespeicherten Bits, werden mit den Reihenbits und dem Bit der dritten Spalte in der Adressenanfrage 8 verglichen. Da sowohl die Reihenbits als auch das Bit der dritten Spalte der eingehenden Adresse 8 mit den Reihenbits und dem Bit der dritten Spalte übereinstimmen, die von der vorhergehenden Anfrage übriggeblieben sind, gibt der Komparator 11 in diesem Fall einen Treffer an. Da es einen Treffer gegeben hat, wird der Spaltenseektor 5 verwendet, um die Spalte auszuwählen, die durch die Kombination der ersten zwei Spaltenbits von der Adressenanfrage 8 und das Bit der dritten Spalte, das in CAMPhyAdr 6 gespeichert ist, angegeben ist. Die Tatsache, daß der Komparator 11 einen Treffer angegeben hat, garantiert, daß das Bit der dritten Spalte, das in CAMPhyAdr 6 (übriggeblieben von der vorhergehenden Adressenanfrage) gespeichert ist, dasselbe wie das Bit der dritten Spalte bei der eingehenden Adressenanforderung 8 ist.
  • Die Fig. 1F stellt die nächste nachfolgende Anfrage dar, die in diesem Beispiel 001001 ist. In diesem Fall stimmen die Reihenbits von der Adressenanfrage 8 mit den Inhalten der Reihenbits in CAMTag 7 überein. Jedoch unterscheidet sich das Bit der dritten Spalte in der Adressenanfrage 8 (d.h. 1) von dem Biteintrag der dritten Spalte in CAMtag 7. Entsprechend registriert der Komparator 11 eine Verfehlung. Wegen der Verfehlung werden die CAMPhyAdr-6 und CAMTag-Register aktualisiert, wie in der Fig. 1G dargestellt ist. Die Fig. 1G ist identisch mit der Aktualisierung, die in der Fig. 1B dargestellt ist, mit der Ausnahme, daß das Bit der dritten Spalte von der eingehenden Adressenanfrage sowohl in CAMTag 7 als CAMPhyAdr 6 gespeichert wird.
  • Der Aktualisierung folgend, wird die Adressenanfrage nochmals versucht, wie in der Fig. 1H dargestellt ist. Diesmal stimmen, da CAMTag 7 aktualisiert wurde, die inhalte von CAMTag mit den Reihenbits und dem Bit der dritten Spalte von der neuen Adressenanfrage 8 überein. Entsprechend registriert der Komparator 11 einen Treffer. Da der Komparator 11 einen Treffer registriert, wählt der Spatenselektor 5 eine Spalte entsprechend den ersten zwei Spaltenbits von der eingehenden Adressenanfrage 8 in Kombination mit dem Adressenbit der dritten Spalte, das in CAMPhyAdr 6 gespeichert ist.
  • Nachfolgende Zugriffe auf den Speicher würden dann unter Verwendung derselben oben beschriebenen Verfahren ausgeführt. Wenn eine neue Adressenanfrage für eine Adresse in derselben Reihe ist, und dasselbe Bit der dritten Spalte hat, wie jenes der vorhergehenden Adressenanfrage, wie in den Fig. 1E und 1H dargestellt ist, gibt der Komparator 11 einen Treffer an, und nur der Spaltenseektor 5 braucht verwendet zu werden, um auf das benötigte Speicherelement zuzugreifen. Wenn eine Adressenanfrage für eine Adresse in einer Reihe ist, die sich von der Reihe unterscheidet, auf die vorher zugegriffen wurde, wie in der Fig. 1A zu sehen ist, oder für eine Spalte mit einem Bit der dritten Spalte, das sich von einer Spalte unterscheidet, auf die vorher zugegriffen wurde, wie in der Fig. 1F zu sehen ist, werden die CAMTag-7 und CAMPhyAdr-Register 6 aktualisiert, wie in der Fig. 1G dargestellt ist, und ein Zugriff kann dann nochmals versucht werden.
  • Es gibt wenigstens zwei Arten oder Niveaus von "Verfehlung", die mit einem Speicherzug riff einhergehen kann. Wie oben angegeben wurde, tritt, wenn ein Prozessor einen erfolglosen Versuch durchführt, auf einen Speicher in einem Cache zuzugreifen, eine "Cache-Verfehlung" auf, was ein Wiederauffinden eines Speicherblocks (typischerweise einige Wörter) vom Hauptspeicher 10 erfordert. Während dieses Versuchs beim Lesen oder Schreiben des Hauptspeichers 10 kann auch eine "CAM-Verfehlung" auftreten, d.h. eine Anfrage für eine Reihe, die von jener, auf die vorher zugegriffen wurde (wie in der Fig. 1A gezeigt ist) verschieden ist, oder eine Spalte mit einem Bit der dritten Spalte, das von einer Spalte verschieden ist, auf die vorher zugegriffen wurde (wie in der Fig. 1F gezeigt ist).
  • Mit der vereinfachten Erklärung als Hintergrund wird die bevorzugte Ausführung unter spezieller Bezugnahme auf die Fig. 2 beschrieben. Wie in der Fig. 2 dargestellt ist, ist der Speicher 30 in einer der funktionalen Speichereinheiten ein dynamischer Hochgeschwindigkeitsseiten-Direktzugriffsspeicher, wie das Modell TC511000, das von Toshiba bereitgestellt wird. Der Speicher 30 ist in vier Bänken 32, 34, 36 und 38 organisiert, die als Bänke A, B, C bzw. D bezeichnet sind. Jede Bank 32, 34, 36 und 38 ist in 0, 1, ungerade und gerade Blöcke unterteilt, um eine Pseudo-Vierwegeverschachtelung bereitzustellen. Gemäß der Pseudo-Vierwegeverschachtelung enthalten die ungeraden und geraden Blöcke aufeinanderfolgen de Wörter, spezifisch Wörter, deren Adressen sich im niedrigstwertigsten Bit der Adresse unterscheiden. Die 0- und 1-Blöcke enthalten Wörter, deren Adressen sich im zweitniedrigstwertigsten Bit unterscheiden. Entsprechend sind in irgendeiner Bank, zum Beispiel 32, vier aufeinanderfolgende Wörter in A0Ev, A00d, A1Ev bzw. A10d gespeichert. Das nächste (fünfte) anschließende Wort wird in A0Ev gespeichert und so weiter. Jede Bank besteht aus 2 gleich großen Speichersektionen, die als X und Y bezeichnet sind. Jede Bank 32, 34, 36 und 38 enthält 2²² Wörter von jeweils 22 Bits. Somit benötigt jedes spezielle Wort in einer Bank zweiundzwanzig Adressenbits, um eindeutig identifiziert zu werden. Diese sind als Reihenadressenbits, 10 Spaltenadressenbits und zwei Pseudo-Verschachtelungsbits organisiert. Bei einer bevorzugten Ausführung hält jeder Reihenadressensignalspeicher 42, 44, 46, 48 10 Adressenbits. Obwohl zur Klarheit die Reihenadressensignalspeicher 42, 44, 46, 48 in der Fig. 2 als bezüglich des Speichers 30 extern dargestellt sind, sind diese tatsächlich typischerweise als ein integraler Teil des Speichers 30 ausgebildet.
  • Ein Satz 52 von Schreibdatenregistern 52a, 52b, 52c, 52d ist zum Speichern von 4 22-Bitwörtern Schreibdaten vorgesehen. Zwei Adressenregister 53a, 53b erhalten Adressenbits von zwei entsprechenden Spalten/Reihen-Multiplexern 54, 56. Jede Speicherbank 32, 34, 36, 38 hat damit verbunden einen zusätzlichen Spalten/Reihen-Multiplexer 58, 60, 62, 64. Diese Multiplexer 58, 60, 62, 64 stellen zwei Adressenbits in einer unten beschriebenen Weise bereit, die mit den 8 Adressenbits, die von den Adressensignaspeichern 53a, 53b bereitgestellt werden, kombiniert die erforderlichen 10 Adressenbits zur Spaltenadressierung bilden.
  • Schreibdaten für die Schreibdatenregister 52 werden von zwei Datenregistern 66, 68 nach dem Verarbeiten durch einen Fehlerkorrekturcodegenerator 70, 72 bereitgestellt. Die Fehlerkorrekturcodegeneratoren 70, 72 kommunizieren, wie unten beschrieben ist, mit einem von vier CAMPhyAdr-Registern 74, 76, 78, 80. Die Schreibdaten in den Datenregistern 66, 68 werden durch Datenbusse 84a, 84b, 84c, 84d und verbundene Multiplexer 86a, 86b bereitgestellt.
  • Die Adressenbits, die den Spalteneingängen der ersten zwei Spalten/Reihen- Multiplexer 56, 54 bereitgestellt werden, kommen von Inkrementierern 88a, 88b an, die eine Spaltenadresse vom Speicheranfragenadressenregister (MemRqAdr) 90 erhalten. Der MemRqAdr-Register 90 enthält eine Eingabe von einem Multiplexer 91 und einer zugehörigen Logik 93. Der Multiplexer 91 ist mit einem oder mehreren Adressenbus(sen) 305, 307, 309 verbunden. Ob die eingehende Adresse virtuell oder physikalisch ist, kann dadurch bestimmt werden, auf welchem Bus die Adresse ankommt, möglicherweise kombiniert mit dem Speicherspezifikationscode. Der Speicherspezifikationscode ist ein Code, der spezifiziert, welche Speicheroperation ausgeführt wird, z.B. Lesen, Schreiben, Diagnose oder andere Operationen. Diese Bestimmung wird durch die Logik 93 durchgeführt. Ein Bit, das angibt, ob die Adresse virtuell oder physikalisch ist, wird zum MemRqAdr-Register 90 geschickt.
  • Ebenfalls verbunden mit jeder Speicherbank 32, 34, 36, 38 sind zwei Adressenregister, nämlich die CAMPhyAdr-Register 74, 76, 78, 80 und die CAMTag- Register 94, 96, 98, 100. Ein Bitmuster, das auf jeden der CAMPhyAdr-Register 74, 76, 78, 80 anwendbar ist, ist in der Fig. 11B gezeigt. CAMPhyAdr 74 enthält ein X/Y-Auswahl-Bit 910, ein Baugruppenauswahlbit 912, sechs Paritätsbits 914, zwei Spaltenadressenbits 916 und eine physikalische Reihenadresse 918. Die physikalische Reihenadresse 918 wird, wie unten vollständiger erklärt wird, von einer von zwei Quellen erhalten. Wenn die Adressenanfrage eine physikalische Adresse repräsentiert, kann die physikalische Reihenadresse direkt in CAMPhyAdr 74, 76, 78, 80 gespeichert werden. Wenn die angefragte Adresse eine virtuelle Adresse repräsentiert, wird die virtuelle Reihenadresse zuerst unter Verwendung des PTC-Eintrags 92 übersetzt.
  • Bei der bevorzugten Ausführung wird auf den Seitentabeilen-Cache (PTC) unter Verwendung einer Hash-Logik 95 zugegriffen. Wie oben angegeben wurde, enthält der PTC einen Eintragsabschnitt 92 und einen Markierungsabschnitt 95, 97 (Fig. 12). Bei der bevorzugten Ausführung gibt es zwei separate PTC-Markierungsfelder. Ein Markierungsfeld wird für den Daten-Cache 95 verwendet; das andere Markierungsfeld wird für den Befehls-Cache 97 verwendet. Ferner ist bei der bevorzugten Ausführung, wie in der Fig. 12 dargestellt ist, der PTC in dem Sinn verteilt, daß, während es für jede funktionale Speichereinheit 93a, 93b, 93n ein PTC-Eintragsfeld 92 gibt, die PTC-Markierungen 95, 97 nicht auf der Speicherbaugruppe oder -funktionseinheit 93a, 93b, 93n angeordnet. Dies vermeidet die Notwendigkeit, eine PTC-Markierung 95,97 auf jeder funktionalen Einheit aufzunehmen. Es gibt wenigstens drei mögliche Konfigurationen für PTC-Eintrag und -Markierung. Sowohl der Eintrag, als auch die Markierung könnten beim Speicher positioniert werden. Jedoch würde eine derartige Konfiguration für einen langsameren Zugriff im normalen (CAM-Treffer-) Fall sorgen. Zweitens könnten der Eintrag und die Markierung beide bei der Quelle der Anfragen positioniert sein. Jedoch würde eine derartige Konfiguration mehr Speicher als andere Optionen erfordern und würde eine Übersetzung bei jedem Hauptspeicherzugriff notwendig machen. Bei der bevorzugten Ausführung sind die PTC-Markierungen 95, 97 bei der Quelle der Anfragen, während es ein PTC-Eintragsfeld 92 für jede funktionale Speichereinheit (Fig. 12) gibt. Diese Konfiguration sorgt für einen schnellen Zugriff im normalen (CAM-Treffer-) Fall, sorgt für eine effiziente Verwendung des Speichers und sorgt für eine Vermeidung einer Übersetzung bei jedem Speicherzugriff.
  • Ferner sind mit jeder Speicherbank 32, 34, 36, 38 die CAMTag-Register 94, 96, 98, 100 verbunden. Wie in der Fig. 11A dargestellt ist, enthält ein CAMTag-Register 94 ein virtuelles/physikalisches Bit 919, zwei Paritätsbits 920 und ein virtuelles oder physikalisches Adressenbit 1-20 (922). Verbunden mit jedem CAMTag-Register 94, 96, 98, 100 ist entsprechend ein Komparator 102, 104, 106, 108.
  • Eine Logik zum Steuern der Operation der Speichereinheit ist in einer Empfangszustandsmaschine 112, einer MEMOP-Zustandsmaschine 114 und einerauffrischzustandsmaschine 115 vorgesehen. Die Empfangszustandsmaschine 112 steuert die Verteilung von Daten zurück zu den Requestern. Die Auffrischzustandsmaschine 115 steuert das Spaltenadressenhinweissignal (CAS) und Reihenadressenhinweissignal (RAS) sowie die Speicherauffrischung. Die Memop-Zustandsmaschine 114 entscheidet, initiiert Speicherzyklen und kooperiert mit der Auffrischzustandsmaschine bei Auffrischungen und Speicherzug riffen, wie unten genauer beschrieben ist.
  • Der Ausgabeabschn itt der Speichereinheit enthält Ausgaberegister, Fehlerkorrekturvorrichtungen und Bus-Gates. Der Ausgaberegister 116 hält acht Speicherwörter entsprechend zwei Zyklen des Pseudo-Vierwegeverschachtelungslesens. Die Speicherdaten, die gelesen wurden, werden durch Multiplexer 118a, 118b zu einer Fehlerkorrekturschaltung 120a, 120b und danach zu Ausgaberegistern 122a, 122b geschickt. Die Ausgaberegister 122a und 122b sind mit Datenbussen 124a, 124b durch Steuer-Gates 126a, 126b verbunden.
  • Die Beschreibung der Operation der vorliegenden Erfindung wird eine Beschreibung unter Bezugnahme auf vier Speichersystemoperationen enthalten: eine Leseoperation, wenn es einen CAM-Treffer gibt, eine Schreiboperation, wenn es einen CAM-Treffer gibt, eine Lese- oder Schreiboperation, wenn es eine CAM- Verfehlung gibt, und eine Auffrischoperation.
  • Bevor eine Adressenanfrage von einer funktionalen Speichereinheit verarbeitet wird, wird zuerst bestimmt, daß die Adresse gültig ist, in dem Sinn, daß die Adresse, die von der funktionalen Speichereinheit wiedererlangt wird, die gewünschte Adresse ist. Das Verifizieren der Gültigkeit enthält das Verifizieren der Präsenz in der PTC-Markierung.
  • Die PTC-Markierung 95, 97 (Fig. 12) wird konsultiert, um zu bestimmen, ob die Seite, die angefragt wurde, in dem PTC existiert. Wenn die Seite in dem PTC nicht präsent ist, was eine "PTC-Verfehlung" genannt wird, führt der Operationssystemmikrocode eine Neuanlage des Seitentabellen-Caches 92, 95, 97 aus, und der Adressenzugriff wird neu gestartet. im Fall einer PTC-Verfehlung ist es erforderlich, die PTC-Markierung 95, 97 und den PTC-Eintrag 92 von der größeren Seitentabelle (nicht gezeigt) zu aktualisieren. Die PTC-Markierung 95, 97 wird direkt von der Seitentabelle aktualisiert. Zum Aktualisieren des PTC-Eintrags 92 kommt die physikalische Adresse durch den Datenbus 84 an, und die virtuelle Adresse kommt durch einen der MemAdr-Busse 305, 307, 309 (Fig. 2) an. Die physikalische Adresse wird über den RqData-Bus 82 durch ein Gate 162 zum PhyAd-Bus 142 und dann zur PTC-Eintragstabelle 92 übertragen. Die virtuelle Adresse wird zum Adressenbus 130 durch ein Gate 144 zum PhyAd-Bus 142 und dann zur PTC-Eintragstabelle 92 übertragen. Der neue Eintrag wird zweimal geschrieben, einmal in der unteren Hälfte 92a und einmal in der oberen Hälfte 92b der PTC-Eintragstabelle. Als nächstes werden alle CAMTags 94, 96, 98, 100 für ungültig erklärt, und die Speicheranforderung, die die PTC-Aktualisierung verursachte, wird neu versucht.
  • Wie oben angegeben wurde, ist in einem FPDRAM ein Speicherzugriff relativ schnell, wenn das angeforderte Speicherelement in einer Reihe liegt, für welche RAS bereits ausgegeben gehalten wird (wie das Ergebnis einer vorhergehenden Anfrage, die auf ein Element in jener Reihe gerichtet war). Bei der bevorzugten Ausführung gibt es vier Reihenadressensignalspeicher 42, 44, 46, 48, so daß es einen CAM-Treffer gibt, wenn irgendeiner der vier Signalspeicher 42, 44, 46, 48 eine Reihenadresse für die Reihe enthält, die das Speicherelement enthält, das aufgerufen wurde. Wenn keiner der vier Reihensignalspeicher 42, 44, 46, 48 die Reihenadresse für das aufgerufene Speicherelement enthält, gibt es eine CAM- Signalspeicherverfehlung, und einer der Reihenadressensignalspeicher 42, 44, 46, 48 muß mit der neuen Reihenadresse geladen werden, wie unten vollständiger beschrieben ist.
  • Die Speicheroperation, bei der es einen CAM-Treffer für ein aufgerufenes Datenelement gibt, wird bezüglich der Vorrichtung beschrieben, die in einem normalen operativen Zustand ist, d.h., die ausreichend lang gearbeitet hat, so daß jeder der vier Reihenadressensignalspeicher 42, 44, 46, 48 eine Reihenadresse als ein Ergebnis einer vorhergehenden Anfrage für ein Element in einer solchen Reihe enthält. Die Weise, in der ein neu inituertes oder eingeschaltetes Speicherelement diesen Zustand erreicht, ist von Fachleuten nach der Beschreibung eines Lesens oder Schreibens mit einer CAM-Verfehlung leicht zu verstehen, die unten vollständiger beschrieben ist.
  • Unter Bezugnahme nun auf die Fig. 2 und 3 beginnt, wenn das in der Fig. 2 dargestellte Speichersystem in dem beschriebenen normalen operativen Zustand ist eine Speicherleseoperation mit einer Speicherleseanfrage, die bei 310 über einen der Adressenbusse 305, 307, 309 ankommt. Wenn mehr als eine Speicheranfrage präsent ist, entscheidet eine Entscheidungslogik in der Empfangszustandsmaschine 112 unter diesen Anforderungen 312 und stellt gemäß einem vorgegebe nen Prioritätssystem (und, nachdem das Speichersystem in einem Zustand zum Empfangen der nächsten Speicheranfrage ist) den Multiplexer 91 zum Weiterleiten einer der angeforderten Speicheradressen zum MemRqAdr-Register 90 ein. Ebenfalls während dieser Zeit werden Daten, die auf den Datenbussen 84A, 848, 84C, 84D sind, durch Multiplexer 86a, 86b zu Datenregistern MemRqDataOd 68 und MemRqDataEv 66 geleitet. Da die Anforderung, die vorliegend in Betracht gezogen wird, eine Leseanforderung ist, sind die Daten auf diesen Datenbussen unecht, d.h., sie repräsentieren, wenn überhaupt, irgendwelche Daten, die zu dieser Zeit auf den Datenbussen auftreten. Somit sind diese Daten in keiner Beziehung zu der Leseanforderung und bleiben ungenutzt. Ferner wird während dieser Zeit eine Logikschaltung 93 verwendet, um bei 314 zu bestimmen, ob die Speicheranfrage, die durch den Multiplexer 91 zugeführt wurde, eine physikalische Adresse oder eine virtuelle Adresse ist. Diese Bestimmung kann basierend darauf durchgeführt werden, von welchem der Adressenbusse die Adressenanfrage herrührt und in einigen Fällen Teilen des Speicherspezifikationscodes, der mit jener Speicheranfrage verbunden ist. Die Logik 93 setzt nach dem Berechnen, ob die Adresse virtuell oder physikalisch ist, ein Bit in dem MemRqAdr-Register 90, um anzugeben, ob die Adresse virtuell oder physikalisch ist 314.
  • In der nächsten Stufe der Operation werden fünf Prozeduren zu ungefähr derselben Zeit initiiert: das Laden einer Spaltenadresse 315, ein Vergleich 316, Erhalten von Bits 317, Initiieren einer Übersetzung 318 und Baugruppen- und XY-Auswahl 320.
  • Die Bits vom MemRqAdr-Register 90, die acht der zehn Spaltenadressenbits bilden, liegen in den Bit-Positionen 21-28. Während des Ladens der Spaltenadresse 315 werden diese Bits durch einen Adressenbus 130 zu einem Inkrementerbus 132 geführt, um bei Inkrementern 88a und 88b anzukommen. Die drei niedrigstwertigsten Wortadressenbits (bei einer Gache-Füllung) werden immer Null sein. Dies liegt daran, daß eine Cache-Leitung aus acht Wörtern (2³) besteht und das erste Wort in der Leitung eine Adresse hat, für welche die letzten drei Bits 000 sind. In der ersten Hälfte der Leseoperation ist die Adresse, die durch den Inkrementer 88a ankommt, uninkrementiert (d.h. inkrementiert durch Null), und die Bits 21-28 (20, Fig. 10C) werden durch einen Spalten/Reihen-Multiplexer 54 geführt, der im gegenwärtigen Zustand auf "Spalten" eingestellt ist, und durch den Adressensignalspeicher 53a zu einem Adressenregisterbus 134a geführt. Die Spaltenadresse, die durch den zweiten Inkrementer 88b hindurchgeht, ist mit Eins inkrementiert, und die Bits 21-28 (20, Fig. 10C) werden durch einen zweiten Spalten/Reihen-Multiplexer 56, der ebenfalls auf "Spalten" eingestellt ist, durch den Adressensignalspeicher 53b zu einem zweiten Adressenregisterbus 134b geführt. Die durch die Adressensignalspeicher 53a, 53b ankommenden Adressen enthalten somit nur einige der Spaltenadressenbits, nämlich die Bits 21-28. Ferner ist es wichtig, zu beachten, daß die Adressensignalspeicher 53a, 53b die Inhalte für jede Speicherzugriffsanforderung ändern.
  • Um die zehn Spaltenadressenbits zu komplettieren, die für eine vollständige Spaltenadresse erforderlich sind, werden jeder der Speicherbänke 32, 34, 36, 38 durch Spalten/Reihen-Multiplexer 58, 60, 62, 64, die auf "Spalten" eingestellt sind zwei zusätzliche Spaltenadressenbits zugeführt. Jedoch werden, anders als die Spaltenadressenbits, die durch die Adressenregister 53a, 53b hindurchgingen, diese zwei Spaltenadressenbits, die den Bits 17 und 18 der physikalische Adressen entsprechen, nicht direkt vom MemRqAdr-Register zugeführt. Statt dessen werden diese Bits von den vier physikalischen Adressenregistern, oder CAM- PhyAdr A, B, C und D, 74, 76, 78, 80 bereitgestellt. Es ist möglich, zwei Spaltenadressenbits von diesen Registern zuzuführen, da diese zwei Spaltenadressenbits unverändert oder konstant sind, solange es keine CAM-Verfehlungsindikation gegeben hat. Wie genauer unten beschrieben wird, ändern sich diese zwei Spaltenbits nur, wenn es eine CAM-Verfehlung gibt. Auf diese Weise wirken die zwei Spaltenadressenbits 17 und 18, die von den CAMPhyAdr-Registern 74, 76, 78, 80 zugeführt wurden, in einer Weise ähnlich den Reihenadressenbits. Entsprechend enthält der in der Fig. 3 dargestellte Prozeß das Aufrechterhalten dieser zwei Bits 317 von jedem CAMPhyAdr-Register zu jedem entsprechenden Reihen/Spalten- Multiplexer 58, 60, 62, 64.
  • Obwohl jeder der vier Reihen/Spalten-Multiplexer 58, 60, 62, 64 zwei Bits bereitstellt (für eine Gesamtheit von acht Bits) wird nur einer dieser Multiplexer (d.h. nur zwei Bits) während irgendeines Speicherzugriffs verwendet. Dies liegt daran, daß ein Spaltenadressenhinweissignal über nur eine der vier Speicherbänke 32, 34, 36, 38 aufgestellt wird.
  • Während derselben Zeit finden vier Vergleiche 316 statt. Die Vergleiche, die durchgeführt werden, sind Vergleiche zwischen den Bits vom MEMRqAdr-Register 90 und den Inhalten jedes der CAMTag-Register 94, 96, 98, 100. Die zwei Bits, die mit den CAMTag-Registern verglichen werden sollen, enthalten die Reihenadresse, die Baugruppenauswahlbits, das X/Y-Auswahlbit und die Bankauswahlbits zusammen mit dem virtuellen/physikalischen Bit, das durch die virtuelle/physikalische Logik 93 eingestellt wurde. Die 20 Bits, die in jedem der CAMTag- Register 94, 96, 98, 100 liegen, enthalten auch virtuelle oder physikalische Reihenadressenbits (von einem vorhergehenden Speicherzugnif), Baugruppenauswahlbits, Bankauswahlbits, ein X/Y-Auswahlbit und ein virtuelles/physikalisches Bit. Die Vergleiche werden durch vier Komparatoren 102,104,106,108 ausgeführt, die Eingaben von den CAMTag-Registern 94, 96, 98, 100 und von einem virtuellen/physikalischen Bus 136 erhalten, der in Kommunikation mit dem Adressenbus 130 ist.
  • Jeder Komparator 102, 104, 106, 108, der eine Identität zwischen seinen zwei Eingängen herausfindet, erzeugt ein Treffersignal und überträgt dieses Treffersignal zur MEMOP-Zustandsmaschine 114. Bei der bevorzugten Ausführung gibt es eine direkte Abbildung zwischen dem CAMTag-Registern 94, 96, 98, 100 und den vier Speicherbänken 32, 34, 36, 38. Unter einer solchen direkten Abbildung wird CAMTagA 94 nur eine Adresse entsprechend Speicheradressen in der ersten Bank 32 enthalten, CAMTagB 96 wird nur eine Adresse entsprechend den Speicherinhalten der zweiten Bank 34 enthalten, und so weiter. Wegen diesem Direktabbildungsaspekt wird im Normalbetrieb wenigstens einer der vier Komparatoren 102, 104, 106, 108 einen Treffern anzeigen.
  • An dieser Stelle enthält die MEMOP-Maschine 114 eine Indikation, ob es einen Treffer gegeben hat oder nicht, und welche der vier Bänke A, B, C, D (32, 34, 36, 38) den Treffer enthält. Die Auswahl des X- oder Y-Teils des Speichers 320 wird 39 durch das Bit 6 gesteuert, das von den CAMPhyAdr-Registern 74, 76, 78, 80 zum Ausgeben an die Spaltenadressenhinweissignallogik 152, 154, 156, 158 ausgegebenwird.
  • Ebenfalls zu dieser Zeit wird eine Virtuell-in-Physikalisch-Übersetzung initiiert 318. Wie oben angegeben wurde, kann die Adresse, die im MemRqAdr-Register 90 ist, entweder physikalisch oder virtuell sein. Die Ergebnisse einer Virtuell-in-Physikalisch-Übersetzung werden nur verwendet, wenn (1) der Inhalt von MemRqAdr 90 eine virtuelle Adresse ist, und (2) es keinen Treffer mit einem der vier CAMTag-Register 94, 96, 98, 100 gegeben hat. Da jedoch die Virtuell-in- Physikalisch-Übersetzung eine Anzahl von Maschinenzyklen zum Ausführen verwendet, wird die Übersetzung zu dieser Zeit initiiert, so daß, sollte sich die Übersetzung als notwendig herausstellen (wie in der Fig. 5 dargestellt ist), der Übersetzungsprozeß begonnen haben wird, bevor die Ergebnisse als notwendig bestimmt wurden. In jenen Fällen, wenn eine Übersetzung nicht notwendig ist, werden die Ergebnisse der Übersetzung ignoriert.
  • Die nachfolgenden Abschnitte der Operation hängen davon ab. ob es einen CAM- Treffer gab 322, der, wie oben angegeben wurde, eine Bestimmung ist, die an dieser Stelle von der MEMOP-Zustandsmaschine 114 durchgeführt wurde. Bei dem in der Fig. 3 dargestellten Szenario gibt eine der CAMTags 94, 96, 98, 100 einen Treffer bezüglich den Bits 1-20 von MemRqAdr 90 an. Zur Erleichterung der folgenden Diskussion wird angenommen, daß der Treffer durch den zweiten Komparator 104 angegeben wurde. Wie den Fachleuten klar ist, ist die folgende Diskussion auf eine Trefferangabe durch irgendeinen anderen Komparator 102, 106,108 anwendbar.
  • Da es einen Treffer beim zweiten Komparator 104 gab, enthält der zweite Reihenadressensignalspeicher 44 die Reihe, die das Speicherelement enthält, das aufgerufen wurde. Diese Tatsache wird angegeben, da der entsprechende (zweite) CAMTag 96 die Reihenadresse für die Reihe enthält, die in dem zweiten Reihenadressensignalspeicher 44 gespeichert ist. Die Reihenadresse in dem zweiten CAMTag 96 kann entweder eine physikalische Reihenadresse oder eine virtuelle Reihenadresse sein. Jedoch muß ungeachtet dessen, ob die Reihenadresse in dem zweiten CAMTag 96 virtuell oder physikalisch ist, wenn es eine Identität zwischen einer CAMTag 96 und Bits 1-20 von MemRqAdr 90 gibt, die Adresse, die angefragt wurde, in der Reihe liegen, die durch die Inhalte des entsprechenden Reihenadressensignalspeichers 44 adressiert ist. Auf diese Weise ist es möglich, einen CAM-Treffer zu erhalten, ohne auf eine Virtuell-in- Physikalisch-Übersetzung warten zu müssen. Die Wirksamkeit dieses Schemas wird durch die oben angegebene Lage einer "Virtualität" unterstützt, d.h. die Tatsache, daß, wenn einmal eine virtuelle oder physikalische Adressenanforderung erfolgte, nachfolgende Anforderungen für Speicherelemente in derselben Reihe höchstwahrscheinlich vom selben Typ sind (d.h. virtuell oder physikalisch).
  • Wie oben angegeben wurde, gingen Teile einer Spaltenadresse durch die ersten zwei Spaltenlreihen-Multiplexer 54, 56 hindurch, und andere Teile gehen durch die verbleibenden Spalten/Reihen-Multiplexer 58, 60, 62, 64 hindurch. Nachdem sich diese Adressen niedergelassen haben, um die angeforderte Spalte von der Reihe auszuwählen, die durch den zweiten Adressensignalspeicher 44 adressiert ist, muß ein Spaltenadressenhinweissignal an die zweite Speicherbank 34 aufgestellt werden. Wie oben angegeben wurde, enthält die MEMOP-Zustandsmaschine 114 eine Angabe, daß die zweite Bank B 34 das Speicherelement enthält das der Trefferangabe entspricht. Daher gibt die MEMOP-Zustandsmaschine ein Spaltenadressenhinweissignal (CAS) 324 an die zweite Speicherbank 34.
  • Bei der bevorzugten Ausführung, die in der Fig. 2 dargestellt ist, wird eine Übertragung von Lesedaten während eines Lesens in zwei Stufen erreicht: eine Hälfte der angeforderten Daten wird zum Ausgaberegister 116 übertragen, die Adressen werden geeignet inkrementiert, und die zweite Hälfte wird übertragen. Unter Bezug nahme auf die Fig. 3 wird nachfolgend dem Aufstellen des Spaltenadressenhinweissignals 324 eine Hälfte der Daten zum Memrd-Register 116 übertragen 326. Als nächstes nimmt die MEMOP-Zustandsmaschine 114 gleichzeitig das Spaltenadressenhinweissignal zurück 328 und greift in die Inkrementer 88A, 88B ein 330. Das Eingreifen in den ersten Inkrementer 88A verursacht, daß der Inkrementer die Adresse, die durch jenen Inkrementer hindurchgeht, um 4 inkrementiert. Diese Inkrementierung entspricht einem Einstellen eines einzelnen Bits der Adresse von einer 0 zu einer 1. Ähnlich inkrementiert der zweite Inkrementer 88B ebenfalls die Adresse, die durch jenen inkrementer geht, um 4. Die inkrementierten Adressen werden durch Spalten/Reihen-Multiplexer 54, 56 (beide auf "Spalten" eingestellt) zu den Adressensignaispeichern 53a, 53b geführt.
  • An dieser Stelle initiiert die MEMOP-Zustandsmaschine 114 gleichzeitig die Fehlerkorrekturlogik 120A, 120B zur Fehlerkorrektur in der ersten Hälfte der gelesenen Daten 334 und nimmt CAS zurück 322. Wegen der Zurücknahme von CAS 332 gefolgt von einer Inkrementierung 330 (und folgendem Freigeben der geeigneten Signaspeicher in dem Datenregister 116) wird eine Übertragung der zweiten Hälfte der Lesedaten 336 zu den Memrd-Registern 116 ausgeführt. Als nächstes wird gleichzeitig CAS zurückgenommen 340 und eine Fehlerkorrektur für die zweite Hälfte der Lesedaten wird initiiert 342. Schließlich werden Lesedaten von der Fehlerkorrekturschaltung zu Datenregistern 122A und 122B und dann durch Gates 126A, 126B, die durch eine Baugruppenausgabefreigabelogik 150 gesteuert werden, zu Datenausgabebussen 124A, 124B geliefert 344.
  • Unter Bezugnahme nunmehr auf die Fig. 4 ist eine zweite Operation dargestellt, die ein Speicherschreiben enthält, wenn es einen CAM-Treffer gibt. Die Anfangszustände dieser Operation sind ähnlich jenen, die oben in Verbindung mit einer Leseoperation beschrieben wurden. Eine oder mehrere Speicheranforderung(en) kommt/kommen an 410, und die Anforderungen werden entscheiden 412. Die angeforderte Adresse wird an MemRqAdr geschickt und die Schreibdaten kommen über Datenbusse an und werden zu MemRqdata-Registern 66, 68 geschickt. In diesem Fall sind die Schreibdaten reale Daten (im Gegensatz zu den unechten oder Scheindaten der Leseanforderung). Ebenso zu dieser Zeit wird bestimmt, ob die Adresse virtuell oder physikalisch ist 414 und das Virtuell/Physikalisch-Bit in MemRqAdr wird eingestellt. Als nächstes werden gleichzeitig die Spaltenadressenbits geladen 415 und aufrechterhalten 417, ein Vergleich mit den CAMTags wird durchgeführt 416 und eine Virtuell-in-Physikalisch-Übersetzung wird initiiert 418. Gleichzeitig zu diesen Schritten werden die Schreibdaten von dem Datenregister 66, 68 zu Fehlerkorrekturcode-Überprüfungsbitgeneratoren 70, 72 und dann zu den Signapeichern in dem Schreibdatenregister 52 geschickt.
  • In dem Prozeß, der in der Fig. 4 dargestellt ist, bestimmt die MEMOP-Zustandsmaschine 114, daß es einen CAM-Treffer gegeben hat 422, und bestimmt entsprechend auf welcher der vier Speicherbänke 32, 34, 36, 38 das CAS und die Schreibfreigabe (WE) ausgegeben werden soll 424. Die Schreibfreigabe wird zuerst ausgegeben und in einem Abstand von einem Zyklus folgend wird das Spaltenadressenhinweissignal ausgegeben. Das Ausgeben des Spaltenadressenhinweissignals und der Schreibfreigabe verursacht eine Übertragung der Schreibdaten 446 vom Schreibdatenregister 52 zu einer der Speicherbänke 32, 34, 36, 38. Folgend auf die Übertragung wird das Spaltenadressenhinweissignal zurückgenommen 448.
  • Es ist zu beachten, daß bezüglich Operationen, die in den Fig. 3 und 4 dargestellt sind, das Lesen und Schreiben von Daten mit Aufstellen und Zurücknehmen des Spaltenadressenhinweissignals ausgeführt wird. Während diesen beiden Operationen ist das Reihenadressenhinweissignal durchgehend ausgegeben. Die in den Fig. 3 und 4 dargestellten Operationen, die das Aufstellen und Zurücknehmen von nur dem Spaltenadressenhinweissignal verwenden, sind relativ schnell. Gemäß der vorliegenden Erfindung wird der vollständige Vorteil dieser relativ schnellen Operation erhalten, da sie ohne das Erfordernis des Erhatens einer Virtuell-in- Physikalisch-Übersetzung der Adresse durchgeführt wird. Obwohl eine solche Übersetzung in allen Fällen initiiert wird, geht, wenn einmal bestimmt wurde, daß es einen CAM-Treffer gibt und daß folglich die Übersetzung nicht erforderlich ist, die Operation ohne ein Warten auf eine solche Übersetzung weiter, um abgeschlossen zu werden. Diese relativ schnelle Übertragung von Daten ermöglicht relativ schnelle Cache-Füllungen und hohe Schreibbandbreiten.
  • Unter Bezugnahme nun auf die Fig. 5 wird ein Prozeß dargestellt, der entweder ein Leseprozeß oder ein Schreibprozeß sein kann, bei dem jedoch es eine CAM- Verfehlung bezüglich allen vier CAMTags 94, 96, 98, 100 gibt.
  • Der erste Teil des Prozesses ist ähnlich dem ersten Teil des Prozesses der Fig. 3 und 4. Eine oder mehrere Speicheranforderung(en) kommt/kommen an 510 und werden entschieden 512, wobei die Adresse zu MemRqAdr geschickt wird und die Daten von den Datenbussen zu MemRqData 66, 68 geschickt werden. Es wird bestimmt, ob die Adresse virtuell oder physikalisch ist, und das Virtuell/Physikalisch-Bit wird in MemRqAdr eingestellt 514. Gleichzeitig werden Spaltenadressenbits geladen 515 und aufrechterhalten 517, ein Vergleich wird mit jedem CAMTag durchgeführt 516, und eine Virtuell-in-Physikalisch-Übersetzung wird initiiert 518. In diesem Fall bestimmt die MEMOP-Zustandsmaschine 114, daß es keinen Treffer bei einem der CAMTags 94, 96, 98, 100 gegeben hat, was eine CAM-Verfehlung bildet 522.
  • Nachfolgende Prozesse hängen davon ab, ob die Adresse, die in MemRqAdr 90 liegt, eine virtuelle oder eine physikalische Adresse ist. Diese Bestimmung wird durch die MEMOP-Zustandsmaschine durchgeführt 550 unter Verwendung des Virtuelllphysikalisch-Bits, das von der Virtuell/Physikalisch-Logik 93 berechnet wurde. Wenn bestimmt wurde, daß die Adresse in MemRqAdr 90 eine physikalische Adresse ist, werden die Reihenadressenbits (Bits 7-16) zusammen mit dem X/Y-Auswahlbit, Bit 6, direkt durch das Gate 144 zum Phyad-Bus 142 geschickt.
  • Wenn die Adresse in MemRqAdr als virtuell bestimmt ist, ist es erforderlich, daß die Virtuell-in-Physikalisch-Adressenübersetzung verwendet wird. Wie oben angegeben wurde, wurde die Virtuell-in-Physikalisch-Adressenübersetzung vorher initiiert 518. Diese Übersetzung wird unter Verwendung eines Hash-Schemas unter Einsatz einer Hash-Logik 95 in einer in der Technik gut bekannten Weise durchgeführt. Die gehashte Adresse wird als Nachschauindex in der unteren Hälfte 92a der PTC-Eintragstabelle 92 verwendet. Die untere Hälfte 92a und die obere Hälfte 92b der Eintragstabellen sind Duplikate voneinander. Normalerweise wird die untere Hälfte 92a verwendet. Wenn jedoch ein Fehler detektiert wird 553, wenn versucht wird, auf die untere Hälfte des Seitentabellen-Caches 92 zuzugreifen, wird der Reserveauswahlschalter 160 aktiviert, um auf die obere Hälfte oder "Reserve" der PTC-Eintragstabelle 92b zuzugreifen.
  • Nachdem die Übersetzung durchgeführt wurde, werden die Ergebnisse der Über setzung zum Phyad-Bus 142 geschickt 560. Wenn einmal die Reihenadresse entweder direkt vom MemRqAdr-Register 90 oder als ein Ergebnis der Übersetzung 560 auf dem PhyAd-Bus 142 verfügbar ist, kann der Prozeß weitergehen. Bei der vorliegenden Ausführung wird, selbst wenn die MemRqAdr-Adresse physikalisch ist, eine Verzögerung initiiert 562, um den Zeitbetrag aufzunehmen, der erforderlich sein würde, wenn eine Übersetzung einer virtuellen Adresse durchgeführt worden wäre.
  • Als nächstes werden die Bits 19 und 20 auf dem PhyAd-Bus 142 von der MEMOP-Zustandsmaschine 114 beobachtet, um zu bestimmen, welche der Bänke 32, 34, 36, 38 aktualisiert werden muß 564. Zu beachten ist, daß bei dieser Ausführung zwei Bits erforderlich sind, um die Bank zu spezifizieren, da es vier Bänke gibt. Bei anderen Ausführungen könnten mehr oder weniger Bänke in Verbindung mit mehr oder weniger Bankbestimmungsbits verwendet werden. Zur Erleichterung der nachfolgenden Diskussion wird angenommen, daß die Speicheranforderung für ein Speicherelement ist, das in der zweiten Bank 34 des Speichers liegt. Wie Fachleuten klar ist, ist die nachfolgende Diskussion auf eine Speicheranfrage für ein Element anwendbar, das in jeder anderen Bank 32, 36, 38 liegt.
  • Im nächsten Schritt werden drei Operationen gleichzeitig ausgeführt: eine Zurücknahme von RAS 566, ein Laden von CAMTag 568 und ein Laden von CAM- PhyAdr 570. Das Reihenadressenhinweissignal wird zurückgenommen 566 nur bezüglich des zweiten Reihenadressensignalspeichers 44, der der Bank 34 entspricht, die einen Aktualisierung benötigt, wie vorher bestimmt wurde 564. Der zweite CAMTag 96, der der zweiten Bank 34 entspricht, die aktualisiert wird, wird mit Bits 1-20 direkt vom MemRqAdr-Register 90 geladen. Es kann entweder eine virtuelle oder eine physikalische Adresse sein. Durch Laden entweder einer vir tuellen oder einer physikalischen Adresse in den zweiten CAMTag 96 werden nachfolgende Anforderungen desselben Typs (d.h. virtuell oder physikalisch), die für Speichereemente in jener Reihe erfolgen, deren Adresse in den zweiten Reihenadressensignalspeicher 44 geladen wird, einen Treffer bezüglich des zweiten CAMTags 96 erzeugen.
  • Gleichzeitig wird die physikalische Adresse, die auf dem Phyad-Bus 142 liegt, (zusammen mit anderen Bits, die in dem CAMPhyAdr-Register gespeichert sind, wie Baugruppenauswahlbits, Bankauswahlbits und Paritätsbits, wie oben beschrieben wurde) über den Phyad-Bus 142 in den zweiten CAMPhyAdr-Register 76 geladen, der der zweiten Bank 34 entspricht. Auf diese Weise werden sowohl der zweite CAMPhyAdr-Register 76, als auch der zweite CAMTag 96 aktualisiert, um die physikalische Reihenadresse und die entsprechende virtuelle oder physikalische Reihenadresse der Reihe, die in den zweiten Reihenadressensignalspeicher 44 geladen wurde, wiederzugeben.
  • Die Reihenlspalten-Multiplexer 54, 56, 58, 60, 62 und 64 sind alle auf "Reihe" geschaltet 572. Die Reihenadressen bildenden Bits 7-14 werden über einen ersten Reihenadressenbus 166 vom zweiten CAMPhyAdr-Register 7rdurch die ersten zwei Spalten/Reihen-Multiplexer 54, 56 zu Adressensignapeichern des Schreibdatenregisters 52 geschickt. Gleichzeitig werden Bits 15 und 16 der Reihenadresse vom zweiten CAMPhyAdr-Register 76 über den Reihenadressenbus 166 zum entsprechenden (zweiten) Spalten/Reihen-Multiplexer 60 geschickt. An dieser Stelle wird das Reihenadressenhinweissignal zurückgenommen 578. Die Spalten/Reihen-Multiplexer 54, 56, 58, 60, 62, 64 werden auf "Spalte" geschaltet 580, und der Speicherzugriff, der die CAM-Verfehlung verursachte, wird neu versucht 582.
  • Wie oben angegeben wurde, enthält bei der bevorzugten Ausführung die Verarbeitungsumgebung eine Mehrzahl von funktionalen Einheiten oder Speichereinheiten 93a üede liegt typischerweise auf einer oder zwei Baugruppe(n)), wie jene, die in der Fig. 2 dargestellt sind. Entsprechend wird ein System zum Bestimmen geschaffen, ob der angefragte Speicher auf einer bestimmten Speichereinheit 93a liegt, und zum Sicherstellen, daß eine Speicherung, die nicht auf einer gegebenen Speichereinheit 93a ist, nicht gelesen wird von oder geschrieben wird zu jener Speichereinheit 93a. Um dieses Ziel zu erreichen, enthält jede CAMPhyAdr 74, 76, 78, 80 ein Baugruppenauswahlbit. Der Wert jedes Baugruppenauswahlbits 912 wird während der Prozeduren, die jeder CAM-Verfehlung folgen, verarbeitet. Jede Speichereinheit enthält eine Vorrichtung 138 zum Speichern einer Angabe der "Baugruppenbasis" und einer Angabe der Größe einer bestimmten Speichereinheit (z.B. 32 oder 64 Megabyte). Die Baugruppenbasis und die Größe werden in jede Speichereinheit 93a beim Einschalten geladen. Die Baugruppenbasis gibt die Startadresse der Speichereinheit an. Von der Startadresse der Speichereinheit und der Größe der Speichereinheit kann der Bereich von Adres sen, die auf der Speichereinheit liegen, bestimmt werden. Während den Prozeduren, die einer CAM-Verfehlung folgen, wird die angeforderte Adresse unter Verwendung eines Komparators 146 mit dem Adressenbereich auf der Speichereinheit verglichen, und der Baugruppenauswahlindikator 148 wird erzeugt, der angibt, ob die angeforderte Adresse auf jener Speichereinheit ist. Der Baugruppen auswahlindikator 148 wird in der entsprechenden CAMPhyAdr 74, 76, 78, 80 als das Baugruppenauswahlbit 912 gespeichert. Während einer Schreiboperation wird, wenn das Baugruppenauswahbit 912 für jenen CAMPhyAdr 74, 76, 78, 80, für den es einen Treffer gegeben hat, angibt, daß die Adresse nicht in jener Speichereinheit liegt, das Spaltenadressenhinweissignal nicht aufgestellt, und somit wird ein Schreiben zu jener Speichereinheit verhindert. Während eine Leseoperation verhindert, wenn das Baugrauppenauswahbit 912 in dem CAMPhyAdr 74, 76, 78, 80, für den es einen Treffer gegeben hat, angibt, daß die aufgerufene Speicherung nicht auf jener Speichereinheit liegt, die MEMOP-Zustandsmaschine 114, die die Baugruppenausgabefreigabelogik 150 verwendet, die Daten daran, durch die Speichereinheit-Ausgabebusse 124 übertragen zu werden.
  • Unter Bezugnahme nun auf die Fig. 6 ist eine Prozedur dargestellt, die während der Auffrischung eines dynamischen Speichers, wie jenem der in der Fig. 2 dargestellt ist, verwendet wird. Bei der bevorzugten Ausführung wird eine Auffrischung in einer "Datenblock"-Weise durchgeführt. Bei diesem Schema wird ein Speicherblock während eines gegebenen Auffrischungszyklus aufgefrischt. Die Größe des Blocks, der aufgefrischt wird, und die Verzögerung zwischen Auffrischungszyklen werden ausgewählt, um im Durchschnitt die erforderliche Auffrischungsfrequenz für jegliches einzelne Speicherelement bereitzustellen. Das Auffrischen ist vorzugsweise gesteuert, so daß es mit RAS-Aufstellzeitspezifikationen (d.h. jener Zeitperiode, die der FPDRAM-Hersteller als die maximale Zeitperiode spezifiziert, die das RAS sicher kontinuierlich aufgestellt bleiben kann) koordiniert ist. Vorzugsweise wird ein Auffrischzyklus oder Datenblock verzögert, bis möglichst ungefähr die Zeit, die als die maximale Zeit vom Speicherhersteller für eine RAS-Aufstellung spezifiziert wurde, vergangen ist. Auf diese Weise können Speicherauffrischungen nicht nur zum Einhalten der erforderlichen Frequenz der Dynamikspeicherauffrischung, sondern auch zum Einhalten von maximalen RAS- Aufstellspezifikationen verwendet werden.
  • Das Auffrischen wird für den gesamten Speicher durchgeführt. Dem Speicherauffrischen folgt eine RAS-Wiederherstellung, die in einer bankweisen Weise durchgeführt wird, wie unten beschrieben wird. Nachfolgend wird das Auffrischen in einem bevorzugten Schema beschrieben, bei dem die Reihenfolge der RAS- Wiederherstellung Bank A, Bank B, Bank D und Bank C ist (d.h. gemäß einem Gray-Code). Andere Auffrischreihenfolgen sind möglich, wie Fachleuten klar ist.
  • Unter Bezugnahme auf die Fig. 6 werden während eines Anfangsteils der Auffrischoperation alle CAS- und RAS-Signale zurückgenommen. Als nächstes werden vier Reihen aller DRAMs 30 aufgefrischt. Vorzugsweise werden verschiedene Auffrischzyklen verwendet, z.B. vier oder acht Auffrischzyklen.
  • Während des Endteils der Auffrischoperation wird die RAS-Wiederherstellung bankweise durchgeführt. Die Speicherbank A wird zur RAS-Zurücknahme ausgewählt 610, und gleichzeitig werden die Reihenlspalten-Multiplexer 54, 56, 58, 60, 62, 64 auf "Reihe" geschaltet 612. Die Reihenadresse, die in dem ersten CAMPhyAdr-Register 74 liegt, wird über den Reihenadressenbus 166 in einer Weise ähnlich jener, die oben in Zusammenhang mit einer CAM-Verfehlung 574, 576 beschrieben wurde, geführt. Als nächstes wird RAS zur ersten Speicherbank 32 zurückgenommen 618, was dieselbe Reihenadresse, die vorher in dem ersten Reihenadressensignalspeicher 42 lag, veranlaßt, zurück in jenen Reihenadressensignalspeicher geladen zu werden 618, im wesentlichen wie oben im Zusammenhang mit einer CAM-Verfehlung 578 beschrieben wurde.
  • Es kann somit gesehen werden, daß anschließend an die Auffrischung der ersten Speicherbank 32 der Reihenadressensignalspeicher 42 im wesentlichen in derselben Konfiguration wie vor der Auffrischung ist, und somit seine Korrespondenz zum ersten CAMPhyAdr-Register 74 und dem ersten CAMTag-Register 94 aufrechterhält. Nachfolgend der Zurücknahme von RAS wird die Bankselektion zur Bank B inkrementiert 620, und die RAS-Wiederherstellung wird bezüglich dieser Bank komplettiert 622. Das Auffrischen bezüglich den Bänken B, D und C wird ebenfalls die Reihenadressensignalspeicher 44, 48, 46 CAMPhyAdr-Register 76, 80, 78 und CAMTag-Register 96, 100, 98 in im wesentlichen demselben Zustand wie vor der Auffrischung belassen. Auf diese Weise kann dem abgeschlossenen Auffrischzyklus folgend der Zugriff auf Speicher in derselben Weise wie vor dem Auffrischen fortgesetzt werden, wobei der volle Vorteil der Lagestruktur und Information inhärent in den Inhalten der CAMPhyAdr-Register 74, 76, 78, 80, CAMTag-Register 94, 96, 98, 100 und Reihenadressensignalspeichern 42, 44, 46, 48 erhalten werden kann, der vor dem Auffrischzyklus hergestellt wurde.
  • Bei einigen Computeroperationen, hauptsächlich diagnostischen und Fehlerrückgewinnungsoperationen, ist es erwünscht, die Inhalte der PTC-Eintragstabelle zu lesen. Wenn dies erwünscht ist, wird ein Datenweg bereitgestellt, um Daten von der PTC-Eintragstabelle zu den Datenausgabebussen 124 zu transportieren. Dieser Datenweg geht von der PTC-Eintragstabelle 92 längs dem PhyAdr-Bus 142 durch ein Gate 170 zu einem Teil des RqData-Busses 82 und dann zu einem PTC-Eintragsbus 172 zur Lieferung durch Multipexer 174,176 zu Ausgaberegistern 116 und evtl. zu Ausgabedatenregistern 122 und Datenbussen 124.
  • Die Operation der Speichereinheit, wie oben beschrieben, wird größtenteils durch drei Zustandsmaschinen gesteuert: MEMOP-Zustandsmaschine 114, die Empfangszustandsmaschine 112 und die Auffrischzustandsmaschine 115. Jede Zustandsmaschine operiert etwas unabhängig von den anderen, obwohl, wo es unten angegeben ist, Zustände für einige Zustandsmaschinen mit bestimmten Zuständen für andere Zustandsmaschinen koordiniert sind und bestimmte Zustandsübergänge in einer Zustandsmaschine vom Status einer anderen Zustandsmaschine abhängen.
  • Nachfolgend wird die Operation der Zustandsmaschinen bezüglich Zustandsdiagrammen beschrieben. In den Zustandsdiagrammen repräsentieren Elemente in durchgezogenen Kästen Zustände der Zustandsmaschine, und die durchgezogenen Linien mit Pfeilen geben Übergänge des vorliegenden Zustandes zum nächsten Zustand an. Gestrichelte Kästen mit gestrichelten Pfeilen, die an den durchgezogenen Pfeilen enden, geben Zustände an, die erfüllt sein müssen, damit der angegebene Übergang stattfindet. Ein Stern (*) bei einem Zustand gibt ein logisches "nicht" an. RqOp gibt die "Anforderungsoperation" an. Ein "v" gibt ein logisches "oder" an. Ein Zeichen (&) gibt ein logisches "und" an. Ein "< > "-Symbol gibt nicht gleich zu" an.
  • Die MEMOP-Zustandsmaschine 114 führt alle Nichtauffrischzugriffe auf den Speicher und alle Zug riffe auf die PTC-Eintragstabelle durch. Wenn einmal eine Anforderung akzeptiert wurde, decodiert die Logik der MEMOP-Zustandsmaschine 114 die Anforderung und schickt Steuersignale zu CAS- und RAS-Steuer-PALs (programmierbare Feldlogik) (nicht gezeigt), um anzugeben, wenn Signale für das Speicherfeld 30 freizugeben sind. Zusätzlich gibt die MEMOP-Zustandsmaschine 114 der Empfangsschnittstelle (nicht gezeigt) an, wenn Lesedaten vom Speicher zum Laden in die Stapelregister 122 bereit sind, und gibt dem CAMPhyAdr 74, 76, 78, 80 an, wenn Daten von der PTC-Eintragstabelle 92 zum Laden für CAM- PhyAdr-Aktualisierungen bereit sind. Die MEMOP-Zustandsmaschine 114 entscheidet zwischen Anforderungen für Speicherauffrischung und Anforderungen für Speicherzugriffe von externen Anforderern. Die MEMOP-Zustandsmaschine 114 hält eine Operation nur in einem Start- oder Leerlaufzustand 710 an (Fig. 7).
  • Unter Bezugnahme auf die Fig. 7 führt die MEMOP-Zustandsmaschine 114 einen Zyklus 711 durch, um indem Startzustand 710 zu bleiben, solange entweder (1) die MEMOP-Zustandsmaschine noch nicht bereit ist, eine neue Operation zu initiieren (angegeben durch MemOpRdy*=wahr), so wie wenn die MEMOP-Zustandsmaschine bereits in einer Konfliktoperation steckt oder wenn eine Inituerung einer Operation in der MEMOP-Zustandsmaschine mit einer Operation mit einer anderen Zustandsmaschine in Konflikt wäre, oder (2), wenn die angeforderte Operation für ein diagnostisches Schreiben ist (RqOp=DiagWrite). Die MEMOP-Zustandsmaschine bleibt in dem Startzustand 710 während Auffrischzyklen (unten beschrieben).
  • Von dem Leerlauf- oder Startzustand 710 kann die MEMOP-Zustandsmaschine 114 einen Übergang zu einem von vier Zuständen durchmachen. Bei einer Speicherleseanforderung mit CAM-Treffer ist der Anfangsübergang zum MEMRd1- Zustand 712. Bei einer Speicherschreibanforderung mit CAM-Treffern ist der Anfangsübergang zum MEMWr1-Zustand 714. Bei einer PTC-Schreibanforderung ist der Anfangsübergang zum PTCWr1 -Zustand 716. Ein vierter Zustand, PTCRd1 718, wird in Zusammenhang mit einer CAM-Verfehlung, einer PTC-Leseanforderung oder einer diagnostischen Leseanforderung verwendet. Ein Übergang zu jeglicher dieser vier Anfangszustände erfordert, daß die MEMOP- Zustandsmaschine 114 bereit ist (d.h. MemOpRdy = wahr).
  • Die Operation der MEMOP-Zustandsmaschine 114 während einer Leseanforderung mit CAM-Treffer entspricht allgemein der Speicheroperation, die oben in Zusammenhang mit der Fig. 3 diskutiert wurde. Wie in der Fig. 7 dargestellt ist, tritt, wenn die Anforderung, die erfüllt wird, eine Leseanforderung ist (d.h. RqOp=MemRead), und es eine CAM-Trefferindikation (d.h. AnyCAMHit = wahr) 720 von einem der vier Komparatoren 102, 104, 106, 108 gegeben hat, die MEMOP 114 in den Zustand MEMRd1 712ein. Während MEMRd1 wird ein Nachsehen von Daten in dem DRAM initiiert. Nach dem Eingreifen des Inkrementers 88a, 88b wird CAS ausgegeben. MEMOP 114 durchläuft dann den Übergang zum Zustand MEMRd2 722. Während dieses Zustandes wird der erste Zyklus des Speicherlesezugriffs abgeschlossen, d.h. die erste Gruppe von vier Wörtern wird zu den MEMRD-Registern 116 übertragen. Der Übergang von MEMRd2 hängt von verschiedenen Faktoren ab. Wenn die Empfangsmaschine nicht im Leerlauf ist, was dadurch angegeben ist, daß das Signal Rcvldle*"wahr" ist 724, bleibt die MEMOP-Maschine für einen Zyklus in MemRd2 722. Das Signal MemRd2R* gibt an, daß MEMOP 114 für den ersten Zyklus im Zustand MemRd2 ist. Beim nächsten Zyklus (MemRd2R=wahr) wird, wenn Rcvldle* immer noch wahr ist 726, MEMOP 114 dann zum Startzustand 710 zurückkehren und versuchen, wieder zu lesen.
  • Wenn die Empfangsmaschine 112 im Leeraufzustand ist (Rcvldle=wahr), hängt der Übergang von MemRd2 davon ab, welche Art von Leseanforderung durchgeführt wurde. Eine erste Art von Leseanforderung, genannt "Read 2" führt zum Übergang von zwei Wörtern. Die zweite Art von Leseanforderung, genannt "Read 8" überträgt bis zu acht Wörtern zurück zum Anforderer. Read 8 wird typischerweise in Verbindung mit einer Cache-Fülloperation verwendet. Wenn die Anforderung für eine Read 2-Operation war, wird dies durch RqOp < 3> = wahr 728 angegeben. In diesem Fall wird MemRd2 722 einen Übergang zum Startzustand 710 durchmachen. Wenn die Anforderung für Read 8 (RqOp < 3> * = wahr) war, ist der Übergang zum "Vorladungs"-Zustand 734. Dieser Zustand ist ein Zwischenzu stand, in dem CAS zurückgenommen ist, während die Adressen für den Speicher 30 sich auf einen neuen Wert einstellen. Die Vorladung 734 macht einen Übergang zu MemRd3 736 durch. Während MemRd3 736 ist CAS zum Zugriff auf die zweite Hälfte der Lesedaten ausgegeben. MemRd3 736 macht einen Übergang zu MemRd4 738 durch, um die Übertragung der zweiten Gruppe von vier Wörtern (d.h. die zweite Hälfte der Lesedaten) abzuschließen. MemRd4 738 macht einen Übergang zum Startzustand 710 durch.
  • Die zweite Operation der MEMOP-Maschine 114 enthält das Schreiben von Daten zum Speicher. Diese Operation der Zustandsmaschine entspricht allgemein der Prozedur, die oben in Verbindung mit der Fig. 4 diskutiert wurde. Vom Startzustand 710 macht MEMOP 114 einen Übergang zu MemWr1 714 durch, wenn es eine Speicherschreibanforderung (RqOp=Mem Write) mit einem CAM-Treffer 742 gab. Während MemWr1 714 ist das Schreibfreigabesignal für alle DRAMs ausgegeben. Das CAS-Signal ist zurückgenommen, während sich Adressen zu den DRAMs setzen. Vom MemWr1-Zustand 714 macht MEMOP 114 einen Übergang zu MemWr2 744 durch. Während dieses Zustandes werden Speicherschreiboperationen abgeschlossen. Die Schreibfreigabe bleibt an alle DRAMs aufgestellt und CAS wird ausgegeben. Der Übergang vom MemWr2-Zustand 744 hängt davon ab, ob eine zweite Schreibanforderung anhängig ist. Wenn es keinen CAM-Treffer gibt oder wenn MEMOP nicht bereit ist, oder wenn es keine anhängige Schreibanforderung (RqOp < > MemWrite) 746 gibt, macht MemWr2 744 einen Übergang zum Startzustand 710 durch. Wenn es einen CAM-Treffer gibt, MEMOP 114 bereit ist und es eine anhängige Schreibanforderung (RqOp = MemWrite) 748 gibt, macht MemWr2 einen Übergang zu MemWr1 714 durch.
  • Die dritte Operation von MEMOP 114 ist eine Anforderung zum Schreiben des PTC-Eintrags 92, so als wenn der PTC-Eintrag 92 aktualisiert werden soll. Wie in der Fig. 7 zu sehen ist, macht MEMOP 114 einen Übergang zu PTCWr1 716 durch, wenn es eine PTC-Schreibanforderung (RqOp=PTCWrite) gegeben hat 752. Danach macht MEMOP 114 invariabel Übergänge aufeinanderfolgend in Zustände PTCWr2 754, PTCWr3 756, PTCWr4 758 und PTCWr5 762 durch, woraufhin MEMOP 114 zum Startzustand 710 zurückkehrt. In PTCWr1 werden die CAMs am Ende des Zyklus unwirksam gemacht. Die PTC-Schreibfreigabe wird während dieses Zyklus aktiv. Während PTCWr2 754 wird die PTC-Schreibfreigabe inaktiv. Während PTCWr3 756 wird die PTC-Adresse von Bank 0 zu Bank 1 geändert, so daß die zweite Bank 92b während PTCWr4 758 und PTCWr5 762 mit Schreibdaten beschrieben wird. Während PTCWr4 758 wird die PTC-Schreibfreigabe aktiv, und während PTCWr5 762 wird die PTC-Schreibfreigabe inaktiv.
  • Die abschließende Operation von MEMOP 114 tritt während eines CAM-Verfehlens (AnyCAMHit* und RqOp < 0> ) auf, wie allgemein in der Fig. 5 dargestellt ist, oder während einer PTC-Leseanforderung (RqOp=PTCRd) oder einer diagnostischen Leseanforderung (RqOp=DiagRd). Unter jeglicher dieser Bedingungen 764 gibt es, wie in der Fig. 7 dargestellt ist, einen Übergang der MEMOP-Zustandsmaschine 114 zu PTCRd1 718. Die MEMOP 114 macht aufeinanderfolgende Übergänge zu PTCRd2 768 und PTCRd3 772 durch. Bei der beschriebenen Ausführung ist der PTC-Zugriff relativ langsam, größtenteils, weil die PTC-Eintragsvorrichtung 92 eine langsame Zugriffsvorrichtung ist. Entsprechend werden drei Zyklen 718, 768, 722 benötigt, um den Zugriff abzuschließen. Da jedoch eine CAM- Verfehlung nicht bei jedem Speicherzugriff auftreten wird, verlangsamt ein solcher gelegentlicher langsamer Zugriff die Gesamtausführung nicht ernsthaft. Wenn die Anforderung entweder eine PTC-Leseanforderung oder eine diagnostische Leseanforderung 766 war, macht MEMOP 114 einen Übergang von PTCRd3 zum Startzustand 710 durch. Im Fall einer CAM-Verfehlung 774 macht PTCRd3 772 einen Übergang zu PTCRd4 776 durch. Während PTCRd4 werden PTC-Paritätsfehler überprüft. Wenn es keinen Paritätsfehler 778 gibt, macht PTCRd4 776 einen Übergang zum Startzustand 710 durch. Wenn es einen PTC-Paritätsfehler in der PTC-Bank 0 782 irgendeiner funktionalen Einheit (MUOPTCParErr oder MU1PTCParErr) gibt, ist die Operation eine Read2-, Read8-, Write1- oder Write2- Operation (RqOp=00xx), und das PTC-Feld wird nicht umgangen (PTCArrayBypass, prinzipiell verwendet während Baugruppentestens), wobei ein Zugriff auf Bank 1 des PTCs versucht wird. Ein Zugriff auf Bank tritt während drei Zyklen PTCRd5 784, PTCRd6 786 und PTCRd7 788 auf.
  • Die Empfangszustandsmaschine 112 führt den Übergang von Lesedaten von der Speicherbaugruppe zum ausgewählten Anforderer durch. Sie steuert das Laden des RDData-Registers 122 über den Lesedatenweg. Sie wählt auch Wörter zur ECC-Korrektur 120 während des Speicherlesens aus. Die Empfangszustandsmaschine 112 hat zwei Operationsarten: Read2-Art und Read8-Art. Die Read2- Operationen übertragen zwei Wörter, während die Read8-Operationen bis zu acht Wörter zurück zum Anforderer übertragen. Die Empfangszustandsmaschine 112 bleibt im Leerlaufzustand 792, wenn der MemRd-Register 116 nicht geladen (LdMemRdLo*) ist oder die Operation eine Read8-Operation (RqOp=Read8) ist, vorausgesetzt die Daten in dem Memrd-Register 116 sind noch nicht als gültig angegeben (MemRDVld*).
  • Während der Read2-Operation (angegeben durch RqOp< > Read8) macht die Empfangsmaschine 112 einen Übergang vom Leerlaufzustand 792 zum ECCRd2 794 durch, wenn gültige Daten in 0:1 des MemRd-Registers 116 durch die MEMOP-Zustandsmaschine 114 (angegeben durch MemRdVld = wahr oder LDMemRdLo = wahr) 796 geladen wurden. Im ECCRd2-Zustand 794 führt die Empfangszustandsmaschine 112 eine ECC-Korrektur durch. ECCRd2 794 macht einen Übergang zu Trd2 798 durch. Im TRd2-Zustand 798 werden Daten, die gemäß MemRd2, PTC-Lesen oder diagnostischem Lesen erhalten wurden, wie oben diskutiert wurde, zum Anforderer übertragen. Die Empfangszustandsmaschine 112 bleibt in diesem Zustand 798, so lange Rcv und LRcv nicht aufgestellt sind (Rcv* und LRcv* = wahr) 802. Rcv gibt an, daß ein Empfänger einen Datenempfang initiiert. LRcv gibt an, daß ein Empfänger einen Empfang des letzten Teils von Daten initiiert, die angefordert wurden. Wenn entweder LRcv oder Rcv wahr ist 804, macht die Maschine einen Übergang zum Leerlaufzustand 792 durch.
  • Für eine Read8-Operation macht die Empfangszustandsmaschine 112 einen Übergang vom Leerlaufzustand 792 zu ECCRdB 808 durch, wenn eine Read8- Anforderung anhängig ist (RqOp = ReadB) und es gültige Daten in 0:1 des MEMRd-Registers 116 (d.h. MemRDVld = wahr) 806 gibt. In ECCRd8 808 führt die Empfangsmaschine 112 eine ECC-Korrektur und ein Überprüfen von Daten in 0:1 von MEMRd 116 durch. Eine Übertragung der Lesedaten zum Anforderer tritt mittels vier Übertragungen von Zweiwortdaten auf. Diese vier Übertragungen treten jeweils während Zuständen T1 810, T2 812, T3 814 und T4 816 auf. In jedem dieser vier Zustände T1, T2, T3 und T4 bleibt die Zustandsmaschine in dem jeweiligen Zustand solange als weder Rcv noch LRcv ausgegeben wird 818, 822, 824, 842. Das Ausgeben von LRcv während T1, T2, T3 oder T4 826, 828, 832, 844 verursacht einen sofortigen Übergang zum Leeraufzustand 792. Wenn Rcv während den T1-, T2- oder T3-Zuständen 834, 836, 838 aufgestellt wird, macht die Empfangsmaschine 112 einen Übergang zum nächsten nachfolgenden Zustand durch. Wenn die Maschine 112 einmal den Zustand T4 816 erreicht, wartet sie in diesem Zustand 842, bis der Anforderer Rcv oder LRcv 844 ausgibt. Die Empfangszustandsmaschine 112 macht dann einen Übergang zum Leerlaufzustand 792 durch.
  • Die Auffrischzustandsmaschine 115, deren Zustände in der Fig. 9 dargestellt sind, führt zwei Aufgaben aus. Als erstes steuert die Auffrischzustandsmaschine 115 die RAS- und CAS-Steuerungen des DRAM-Feldes. In diesem Modus ist die Auffrischzustandsmaschine unter der Steuerung der MEMOP-Zustandsmaschine 114. Die zweite Aufgabe der Auffrischzustandsmaschine ist es, CAS-vor-RAS- Auffrischungen des DRAMs durchzuführen. In diesem Modus steuert die Auffrischzustandsmaschine die RAS- und CAS-Signale. Ein 12-Bit-Abwärtszähler (nicht gezeigt) mit einem abtastbaren Rückstellwert von zwischen 256 und 4096 (in Mehrfachen von 256 Zyklen) triggert eine einzelne Auffrischanforderung jedesmal, wenn er überläuft. Jede solche Anforderung veranlaßt die Auffrischmaschine wieder zu einem Kreislauf, wählbar durch entweder vier oder acht CAS-vor RAS-Auffrischungen, bevor zu einem Leerlaufzustand 852 zurückgekehrt wird. Wenn die Auffrischmaschine 115 nicht im Leerlauf ist, können Speicheranforderungen nicht verarbeitet werden. Somit gibt es Austauschsignale zwischen der MEMOP-Maschine 114 und der Auffrischmaschine 115, um sicherzustellen, daß eine der zwei Maschinen immer im Leerlauf ist.
  • Ein Signal, das den Auffrischzyklus initiiert, genannt "Refresh Go" 854 wird ausgegeben, wenn der Auffrischzähler angibt, daß ein Auffrischzyklus erforderlich ist, und nach richtigem Austauschprotokoll von der MEMOP-Zustandsmaschine 114. Bis dieses Signal ausgegeben ist 853, bleibt die Auffrischzustandsmaschine 115 im Leerlaufzustand 852. Das Refresh Go-Signal 854 veranlaßt einen Übergang zu einem Pausenzustand 856. Während der Pause 856 sind alle RAS- und CAS- Leitungen zurückgenommen. Als nächstes durchläuft die Auffrischzustandsmaschine Schleifen durch Zustände Rfsh1 858, Rfsh2 862, Rfsh3 864, Rfsh4 866 und Rfsh5 868.
  • Die Anzahl von Schleifen durch die Zustände Rfsh1-Rfsh5 folgt der Spur von Rfshrowgtr. Vorzugsweise geht die Maschine im Kreislauf durch vier Auffrischungen, wie in der Fig. 9 dargestellt ist, oder acht Auffrischungen. Die nachfolgende Beschreibung betrifft die Vier-Zyklen-Option. Wie Fachleuten klar ist, ist das Acht-Zyklen-Schema ähnlich, wobei aber die Bedingungen von Rfsh5 872, 874 auf 7, statt auf 3 eingestellt sind. Bei jeder Schleife werden RAS und CAS während Rfsh1 858 zurückgenommen, CAS wird aufgestellt und RAS wird zurückgenommen, während Rfsh2 862 und RAS und CAS sind beide während Rfsh3 864, Rfsh4 866 und Rfsh5 868 aufgestellt.
  • Nach der letzten Schleife 874 macht Rfsh5 868 einen Übergang zu einem Wartezustand 876 durch. Wenn das Run Mode-Signal zurückgenommen wird (RunMode* = wahr), bleibt die Auffrischzustandsmaschine entweder im Wartezustand 876, wenn Refresh Go zurückgenommen ist 878, oder kehrt zum Rfsh1- Zustand 858 zurück, wenn Refresh Go ausgegeben ist 882. RunMode wird verwendet, um sicherzustellen, daß einen Operation, wenn sie einmal begonnen wurde, abgeschlossen wird. Der Wartezustand 876 gestattet den Adressensignal speichern Zeit, sich selbst für die Reihenadresse des ersten Blocks zu lösen, so daß, wenn RAS zurückgenommen wird (während Rasrestore 892), die Signalspeicher in den DRAM-Vorrichtungen jene Informationen enthalten, von denen die CAMPhyAdr- und CAMTag-Register angeben, daß sie sie haben. Wenn Runode ausgegeben ist 884, anschließend an den Wartezustand 876, gibt es einen Über gang zum Verriegelungszustand 886. Der Verriegelungszustand 886 schafft eine Einstellzeit für die Adressensignaspeicher, um die Adressenleitungen so zu steuern, daß die CAMTag-Register 92, 94, 96, 98 und CAMPhyAdr-Register 72, 74, 76, 78 wieder gültig gemacht werden können.
  • Nach dem Verriegelungszustand 886 gibt es einen Übergang zum RAS-Wiederherstellungszustand 892. Während RAS-Wiederherstellungen 892 wird RAS zu einem der vier Blöcke des Speichers 32, 34, 36, 38 ausgegeben, was zu einer Neuladung von einer der vier Reihenadressensignalspeicher 42, 44, 46, 48 führt. Der Verriegelungs-RAS-Wiederherstellungszyklus wird viermal wiederholt, was durch RfshRowCtr 894 gezählt wird, einmal für jeden Reihenadressensignalspeicher.
  • Eine Anzahl von Variationen und Modifikationen der beschriebenen Erfindung können ebenfalls verwendet werden. Wie Fachleuten klar ist, können bestimmte hierin offenbarte Ideen unabhängig von anderen hierin offenbarten Ideen oder in verschiedenen Kombinationen damit verwendet werden. Ein Speicher kann in anderen Formen als dem Hochgeschwindigkeitsseitenmodus bereitgestellt werden wie statische Spaltenmodus-DRAM, und kann mit mehr oder weniger als vier Speicherblöcken versehen sein. Allgemein sind größere Anzahlen von Speicherblöcken Oeder hat entsprechend CAMTag und CAMPhyAdr) wirksam, um ein Abfallen zu verringern, erfordern jedoch kompliziertere und teuerere Hardware und Software. Die Abbildung zwischen CAMTags und dem Speicher kann eine direkte Abbildung, eine satzassoziative Abbildung oder eine vollassoziative Abbildung sein. Die Erfindung kann in Zusammenhang anderer Speicherhierarchien verwendet werden und ist nicht auf Situationen beschränkt, in denen Lesen zum Ausführen eines Cache-Füllens durchgeführt wird. Die vorliegende Erfindung kann auch in einem System verwendet werden, das keine Speicherhierarchie hat, sondern statt dessen einen Einzelniveau-Speicherzugriff hat. Die Erfindung kann mit anderen als den beschriebenen Speichergrößen und Adressenbreiten verwendet werden. Die Erfindung kann mit einem Verschachtelungssystem anders als die angegebene Vierwege-Pseudoverschachtelung oder mit insgesamt keinem Verschach telungssystem verwendet werden. Bei einigen Ausführungen der Erfindung ist es möglich, ein Aktualisieren von Reihenadressensignalspeichern auf eine CAMTag- Verfehlung folgend zu vermeiden, wenn die CAMTag-Verfehlung nur durch eine Nichtidentität der Spaltenbits, die in der CAMTag gespeichert sind, mit entsprechenden Teilen der Adressenanfrage verursacht wurde, wie in der Fig. 1F gezeigt ist.
  • Unter Bezugnahme auf die Fig. 5 ist es möglich, die Verzögerung 562 zu eliminieren, um die Zeitersparnisse zu nutzen, die auftreten, wenn keine Virtuell-in- Physikalisch-Übersetzung erforderlich ist. Es ist möglich, eine Lese/Schreib- Operation sofort nach dem Zurücknehmen von RAS 578 und Schalten des Multiplexers 580 zu initiieren, statt den Speicherzugriff 582 zum Beispiel durch Initiieren des Schrittes des Bestimmens noch einmal zu versuchen, auf welche Bank das CAS ausgegeben werden soll, wie in der Fig. 3 bei 324 oder in der Fig. 4 bei 424 dargestellt ist. Obwohl alle sechs Reihen/Spalten-Multiplexer auf "Reihe" 572 geschaltet sind, ist es möglich, nur jene Reihen/Spalten-Multiplexer zu schalten die benötigt werden, um die neue Reihenadresse in einen ausgewählten Reihenadressensignalspeicher zu laden.
  • Obwohl der Auffrischzyklus Lageinformationen beibehält, wie oben beschrieben wurde, ist es möglich, das Speichersystem nach einer Auffrischung neu zu initialisieren.
  • Bei der vorliegenden Erfindung gibt es eine Erhöhung beim Leistungsverbrauch wegen des hohen Zeitanteils, während dem RAS aufgestellt ist. Es ist somit möglich, RAS für einen größeren Zeitanteil zurückzunehmen, um den Leistungsverbrauch zu verringern, allerdings auf Kosten einer Verringerung der Wirksamkeit.

Claims (3)

1. Speichersystem zum Zugreifen auf Speicherelemente in einem Feld (30) mit einer ersten Mehrzahl von Speicherelementen (32, 34, 36, 38) in Abhängigkeit von einer Sequenz von virtuellen oder physikalischen Speicheradressenabfragen, wobei die Adresse einer virtuellen oder einer physikalischen Speicheradressenabfrage eine erste Anzahl m von Reihenadressenbits und eine zweite Anzahl n von Spaltenadressenbits enthält, welche zweite Anzahl n von Spaltenadressenbits aus einer dritten Anzahl p von höherwertigen Spaltenadressenbits und einer vierten Anzahl q von geringerwertigen Spaltenadressenbits besteht, wobei wenigstens eine der Speicheradressenabtragen eine Korrespondenz mit wenigstens einer der Mehrzahl von Speichereementen hat, wobei jedes der Speicherelemente eine physikalische Adresse hat, die die erste Anzahl von physikalischen Reihenadressenbits und eine zweite Anzahl von Spaltenadressenbits enthält, gekennzeichnet durch
Übersetzungseinrichtungen (95, 92) zum Übersetzen der virtuellen Reihenadressenbits in physikalische Reihenadressenbits, Reihenadresseneinrichtungen (42, 44, 46, 48), die geeignet sind, eine zweite Mehrzahl von Speicherstelen anzugeben, die eine gemeinsame physikalische Reihenadresse haben,
erste Adressenregistereinrichtungen (53a, 53b) zum Halten der dritten Anzahl p von Spaltenadressenbits zur Verwendung beim Zugreifen auf ein Speicherelement, das eine Adresse hat, die die dritte Anzahl von Spaltenadressenbits enthält,
zweite Einrichtungen (58, 60, 62, 64), die die vierte Anzahl q von Spaltenadressenbits zur Verwendung beim Zugreifen auf ein Speicherelement verwenden, das eine Adresse hat, die die vierte Anzahl von Spatenadressenbits enthält,
dritte Einrichtungen (88a, 88b, 90, 91), um dem ersten Adressenregister die dritte Anzahl p von Bits jeder der sequentiellen Mehrzahl von Speicheradressenabfragen bereitzustellen,
vierte Einrichtungen (94, 96, 98, 100) zum Halten der m virtuellen oder physikalischen Reihenadressenbits und der q Spaltenadressenbits, die von der vorhergehenden virtuellen oder physikalischen Speicheradressenabfrage übriggeblieben sind,
Vergleichseinrichtungen (102,104,106,108) zum Vergleichen der Inhalte der vierten Einrichtungen und der gegenwärtigen Speicheradressenabfrage, um ein Treffersignal bereitzustellen, wenn es Koinzidenz gibt, fünfte Einrichtungen (74, 76, 78, 80), die mit dem Eingang der zweiten Einrichtungen (58, 60, 62, 64) verbunden sind, um die physikalischen Reihenadressenbits und die vierte Anzahl q von Spaltenadressenbits während wenigstens zwei aufeinanderfolgenden Speicheradressenabfragen in den zweiten Einrichtungen zu halten, und
sechste Einrichtungen ("ADR", 32, 34, 36, 38) zum Zugreifen auf wenigstens eines der ersten Mehrzahl von Speicherelementen, das die dritte Anzahl p von Spaltenadressenbits in den ersten Adressenregistereinrichtungen und die vierte Anzahl q von Spaltenadressenbits verwendet, die durch die zweiten Einrichtungen zugeführt wurden.
2. Speichersystem nach Anspruch 1, wobei die Reihenadresseneinrichtungen die zweite Mehrzahl von Speichereementen kontinuierlich angeben, bis zumindest eine erste Bedingung, kein "TREFFER", auftritt, welche erste Bedingung auftritt, wenn eine der Mehrzahl von Speicheradressenabfragen keine Korrespondenz mit der zweiten Mehrzahl von Speicherelementen hat, und
die fünften Einrichtungen (74, 76, 78, 80) Einrichtungen zum Aufrechterhalten der vierten Anzahl q von Spaltenbits in den zweiten Einrichtungen enthalten, bis zumindest die erste Bedingung auftritt.
3. Verfahren zum sequentiellen Zugreifen auf eine erste Mehrzahl von Speicherelementen (32, 34, 36, 38) in einem Speicherfeld (30), das durch ein Feld von Speicherelementen gebildet ist, in Abhängigkeit von einer Sequenz von virtuellen oder physikalischen Speicheradressenabfragen, wobei die Adresse einer virtuellen oder einer physikalischen Speicheradressenabfrage eine erste Anzahl m von Reihenadressenbits und eine zweite Anzahl n von Spaltenadressenbits enthält, welche zweite Anzahl n von Spaltenadressenbits aus einer dritten Anzahl p von höherwertigen Spaltenadressenbits und einer vierten Anzahl q von geringerwertigen Spatenadressenbits besteht, wobei jedes Element eine physikalische Adresse hat, die die erste Anzahl m von physikalischen Reihenadressenbits und die zweite Anzahl n von Spaltenadressenbits enthält, gekennzeichnet durch die folgenden Schritte
Vorsehen von Übersetzungseinrichtungen (95, 92) zum Übersetzen der virtuellen Reihenadressenbits in physikalische Adressenbits, Vorsehen von Reihenadresseneinrichtungen (42, 44, 46, 48) zum Angeben einer zweiten Mehrzahl von Speicherstellen, die eine gemeinsame physikalische Reihenadresse haben,
Vorsehen von ersten Adressenregistereinrichtungen (53a, 53b) zum Halten der dritten Anzahl p von Spaltenadressenbits zur Verwendung beim Zugreifen auf ein Speicherelement, das eine Adresse hat, die die dritte Anzahl von Spaltenadressenbits enthält,
Vorsehen von zweiten Einrichtungen (58, 60, 62, 64), die die vierte Anzahl q von Spaltenadressenbits zur Verwendung beim Zugreifen auf ein Speicherelement verwenden, das eine Adresse hat, die die vierte Anzahl von Spaltenadressenbits enthält,
Übertragen der dritten Anzahl p von Bits von jeder der sequentiellen Mehrzahl von Speicheradressenabfragen zu dem ersten Register,
Vorsehen von vierten Einrichtungen (94, 96, 98, 100) zum Halten der m virtuellen oder physikalischen Reihenadressenbits und der q Spaltenadressenbits, die von der vorhergehenden virtuellen oder physikalischen Speicheradressenabfrage übriggeblieben sind,
Vergleichen der Inhalte der vierten Einrichtungen und der gegenwärtigen Speicheradressenabfrage, um ein Treffersignal bereitzustellen, wenn es Koinzidenz gibt,
Halten der physikalischen Reihenadressenbits und der vierten Anzahl q von Spaltenadressenbits während wenigstens zwei aufeinanderfolgender Speicheradressenabfragen in den zweiten Einrichtungen, und
Zugreifen auf ein Speicherelement, das die dritte Anzahl p von Spaltenadressenbits in den ersten Adressenregistereinrichtungen und die vierte Anzahl q von Spaltenadressenbits verwendet, die durch die zweiten Einrichtungen zugeführt wurden.
DE69031411T 1989-07-03 1990-07-02 Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff Expired - Fee Related DE69031411T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/375,428 US5329629A (en) 1989-07-03 1989-07-03 Apparatus and method for reading, writing, and refreshing memory with direct virtual or physical access

Publications (2)

Publication Number Publication Date
DE69031411D1 DE69031411D1 (de) 1997-10-16
DE69031411T2 true DE69031411T2 (de) 1998-02-12

Family

ID=23480857

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69031411T Expired - Fee Related DE69031411T2 (de) 1989-07-03 1990-07-02 Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff

Country Status (6)

Country Link
US (1) US5329629A (de)
EP (1) EP0407119B1 (de)
JP (1) JPH087718B2 (de)
AU (1) AU637616B2 (de)
CA (1) CA2020275C (de)
DE (1) DE69031411T2 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619445A (en) * 1970-12-28 1997-04-08 Hyatt; Gilbert P. Analog memory system having a frequency domain transform processor
US5907512A (en) * 1989-08-14 1999-05-25 Micron Technology, Inc. Mask write enablement for memory devices which permits selective masked enablement of plural segments
US5535354A (en) * 1991-03-11 1996-07-09 Digital Equipment Corporation Method for addressing a block addressable memory using a gray code
US5410664A (en) * 1993-03-31 1995-04-25 Intel Corporation RAM addressing apparatus with lower power consumption and less noise generation
JPH0778106A (ja) * 1993-09-08 1995-03-20 Hitachi Ltd データ処理システム
MY112118A (en) * 1993-12-23 2001-04-30 Hitachi Global Storage Tech Netherlands B V System and method for skip-sector mapping in a data recording disk drive.
JPH07281948A (ja) * 1994-04-06 1995-10-27 Mitsubishi Electric Corp メモリ制御装置
US5506747A (en) * 1994-12-15 1996-04-09 Northern Telecom Limited Provision of FIFO buffer in RAM
US5765182A (en) * 1995-04-13 1998-06-09 Lsi Logic Corporation Interleaving memory on separate boards
US5617348A (en) * 1995-07-24 1997-04-01 Motorola Low power data translation circuit and method of operation
US6125425A (en) * 1996-03-29 2000-09-26 Intel Corporation Memory controller performing a mid transaction refresh and handling a suspend signal
JPH10240612A (ja) * 1997-02-27 1998-09-11 Canon Inc データ読出装置及び方法とそれを用いた印刷装置
US6173356B1 (en) * 1998-02-20 2001-01-09 Silicon Aquarius, Inc. Multi-port DRAM with integrated SRAM and systems and methods using the same
US6230237B1 (en) * 1998-09-09 2001-05-08 3Dfx Interactive, Inc. Content addressable memory with an internally-timed write operation
US6477598B1 (en) 2000-07-20 2002-11-05 Lsi Logic Corporation Memory controller arbitrating RAS, CAS and bank precharge signals
US6625685B1 (en) * 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US6493814B2 (en) * 2001-03-08 2002-12-10 International Business Machines Corporation Reducing resource collisions associated with memory units in a multi-level hierarchy memory system
US7346746B2 (en) * 2002-04-26 2008-03-18 Infineon Technologies Aktiengesellschaft High performance architecture with shared memory
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
US6961280B1 (en) 2003-12-08 2005-11-01 Altera Corporation Techniques for implementing address recycling in memory circuits
US7225287B2 (en) * 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US20070044003A1 (en) * 2005-08-04 2007-02-22 Jack Doweck Method and apparatus of detecting and correcting soft error
US20110035557A1 (en) * 2009-08-05 2011-02-10 Nokia Corporation Fragmentation reduction using virtual sectors for static data
JP2011175450A (ja) * 2010-02-24 2011-09-08 Renesas Electronics Corp メモリアクセスシステムおよびメモリアクセス制御方法
US9880900B2 (en) 2015-12-08 2018-01-30 Nvidia Corporation Method for scrubbing and correcting DRAM memory data with internal error-correcting code (ECC) bits contemporaneously during self-refresh state
US10049006B2 (en) 2015-12-08 2018-08-14 Nvidia Corporation Controller-based memory scrub for DRAMs with internal error-correcting code (ECC) bits contemporaneously during auto refresh or by using masked write commands
US9823964B2 (en) 2015-12-08 2017-11-21 Nvidia Corporation Method for memory scrub of DRAM with internal error correcting code (ECC) bits during either memory activate and/or precharge operation
US11721384B2 (en) * 2020-04-17 2023-08-08 Advanced Micro Devices, Inc. Hardware-assisted dynamic random access memory (DRAM) row merging
US20240104023A1 (en) * 2022-09-26 2024-03-28 Advanced Micro Devices, Inc. A/D Bit Storage, Processing, and Modes

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3893084A (en) * 1973-05-01 1975-07-01 Digital Equipment Corp Memory access control system
US4453230A (en) * 1977-12-29 1984-06-05 Tokyo Shibaura Electric Co., Ltd. Address conversion system
US4292674A (en) * 1979-07-27 1981-09-29 Sperry Corporation One word buffer memory system
DE3138973A1 (de) * 1981-09-30 1983-04-21 Siemens AG, 1000 Berlin und 8000 München Vlsi-gerechter onchip mikroprozessorcachespeicher und verfahren zu seinem betrieb
JPS58102380A (ja) * 1981-12-11 1983-06-17 Hitachi Ltd 仮想記憶管理方法
JPS59207082A (ja) * 1983-05-10 1984-11-24 Nec Corp アドレス変換装置
US4725945A (en) * 1984-09-18 1988-02-16 International Business Machines Corp. Distributed cache in dynamic rams
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4637024A (en) * 1984-11-02 1987-01-13 International Business Machines Corporation Redundant page identification for a catalogued memory
JPS61206057A (ja) * 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
US4774653A (en) * 1985-08-07 1988-09-27 Hewlett-Packard Company Hybrid hardware/software method and apparatus for virtual memory address translation using primary and secondary translation buffers
JPS62222344A (ja) * 1986-03-25 1987-09-30 Hitachi Ltd アドレス変換機構
US4774659A (en) * 1986-04-16 1988-09-27 Astronautics Corporation Of America Computer system employing virtual memory
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
JPS6398048A (ja) * 1986-10-14 1988-04-28 Matsushita Electric Ind Co Ltd 半導体記憶装置
JPH0812636B2 (ja) * 1986-12-24 1996-02-07 株式会社東芝 仮想記憶制御方式の計算機システム
JPH0721777B2 (ja) * 1987-02-25 1995-03-08 横河電機株式会社 キヤツシユ・メモリ制御装置
US4920477A (en) * 1987-04-20 1990-04-24 Multiflow Computer, Inc. Virtual address table look aside buffer miss recovery method and apparatus
US4839796A (en) * 1987-07-16 1989-06-13 Icon International, Inc. Static frame digital memory
JPH01119843A (ja) * 1987-11-04 1989-05-11 Pfu Ltd アドレス変換装置
US4985825A (en) * 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer

Also Published As

Publication number Publication date
AU5809190A (en) 1991-01-03
JPH03135642A (ja) 1991-06-10
EP0407119A2 (de) 1991-01-09
JPH087718B2 (ja) 1996-01-29
DE69031411D1 (de) 1997-10-16
US5329629A (en) 1994-07-12
AU637616B2 (en) 1993-06-03
EP0407119A3 (en) 1992-09-23
EP0407119B1 (de) 1997-09-10
CA2020275C (en) 1996-08-27
CA2020275A1 (en) 1991-01-04

Similar Documents

Publication Publication Date Title
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE3689488T2 (de) Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher.
DE69913366T2 (de) Lese/schreibe-puffern für ein komplettes verdecken des auffrischen eines halbleiterspeichers und verfahren zum betreiben derselben
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE68926936T2 (de) Vorrichtung und Technik für Burstprogrammierung
DE69018112T2 (de) Hochleistungsspeichersystem.
DE69203842T2 (de) Speichersteuerungsvorrichtung mit Snoop-Mechanismus.
DE3750107T2 (de) Cachespeicherkohärenzsteuerung mit einem Speicher, der ein laufendes Lesen anzeigt.
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE3724317C2 (de)
DE2749850C3 (de) Hybrider Halbleiterspeicher mit assoziativer Seitenadressierung, Seitenaustausch und Steuerung auf dem Chip
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE3687307T2 (de) Computeranordnungen mit cache-speichern.
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE68902193T2 (de) Datenspeicheranordnung.
DE69029173T2 (de) Mikroprozessor
DE68924313T2 (de) Mehrprozessoranordnungen mit kreuzweise abgefragten Schreib-in-Cachespeichern.
DE2847960A1 (de) Speichersteuereinrichtung
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE3688400T2 (de) Cachespeicherschaltung geeignet zur verarbeitung einer leseanforderung waehrend der uebertragung eines datenblocks.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee