DE69625486T2 - Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen - Google Patents

Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen Download PDF

Info

Publication number
DE69625486T2
DE69625486T2 DE69625486T DE69625486T DE69625486T2 DE 69625486 T2 DE69625486 T2 DE 69625486T2 DE 69625486 T DE69625486 T DE 69625486T DE 69625486 T DE69625486 T DE 69625486T DE 69625486 T2 DE69625486 T2 DE 69625486T2
Authority
DE
Germany
Prior art keywords
access
address
row address
write
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69625486T
Other languages
English (en)
Other versions
DE69625486D1 (de
Inventor
L. Randall MOTE
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from US08/414,948 external-priority patent/US5666494A/en
Priority claimed from US08/415,038 external-priority patent/US5638534A/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE69625486D1 publication Critical patent/DE69625486D1/de
Application granted granted Critical
Publication of DE69625486T2 publication Critical patent/DE69625486T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Description

  • Hintergrund der Erfindung
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Speichersteuerschaltungen für dynamische Random-Access-Speicher in einem Mikroprozessor-basierten Rechnersystem, die Schreibbefehle abschicken und die Verarbeitung fortsetzen können, ohne auf den Abschluß dieser Schreibbefehle zu warten.
  • Beschreibung des Stands der Technik
  • Dynamische Random-Access-Speicher (DRAMs) werden als die Hauptspeicher für die meisten Mikroprozessor-basierten Rechnersysteme verwendet, weil DRAMs einen vernünftigen Kompromiß zwischen der Speicherkapazität, der Zugriffszeit und den Kosten bieten. Es ist auf dem Fachgebiet wohlbekannt, daß DRAMs gesteuert werden, indem zuerst eine Zeilenadresse auf einen oder mehrere DRAMs angewendet wird, die Zeilenadresse durch Aktivieren eines Zeilenadreß-Freigabesignals (RAS-Signals), das die gewählte Zeile vorlädt, in den DRAMs freigegeben wird, wenigstens während einer minimalen Zeilenzugriffszeit gewartet wird, eine Spaltenadresse auf die DRAMs angewendet wird und dann die Spaltenadresse durch Aktivieren eines Spaltenadreß-Freigabesignals (CAS-Signals) in den DRAMs freigegeben wird, um die Daten aus einer Spalte der Zeile, auf die zugegriffen wird, zu wählen.
  • Die meisten gegenwärtig verfügbaren DRAMs arbeiten im sogenannten ”Seitenmodus”, in dem auf in derselben Zeile (also Seite), jedoch in einer anderen Spalte gespeicherte Daten durch einfaches Ändern der Spaltenadresse zugegriffen werden kann, wie in US-A-4 429 375 offenbart ist. Es ist nicht erforderlich, die Zeilenadresse erneut auf den DRAM anzuwenden, weil alle Daten in der Zeile bereits zum Lesen oder Ändern zugänglich sind. Wegen des durch dieses Seitenmodusmerkmal bereitgestellten Geschwindigkeitsvorteils ist es sehr vorteilhaft, vor dem Ändern der Zeilenadresse auf viele Speicherstellen in einer einzelnen Zeile zuzugreifen. Wenn beispielsweise große Datenblöcke zu einem DRAM-basierten Speichersystem oder von diesem übertragen werden, greifen die sequentiellen Adressen typischerweise auf die meisten oder alle Spalten in einer bestimmten Zeile zu, bevor die Zeilenadresse geändert wird.
  • Bei einem typischen Mikroprozessor-basierten Rechnersystem werden Daten an zufälligen Adressen aus einem Speichersystem gelesen und in dieses geschrieben, insbesondere wenn Befehle und Daten im selben Speichersystem gespeichert werden oder wenn Operandendaten aus einem Bereich von Speicherstellen gelesen werden und Datenergebnisse in einem anderen Bereich von Adressenstellen gespeichert werden. Daher können die Vorteile des Seitenmodusbetriebs wegen des ”zufälligen” Zugriffs auf das Speichersystem oft nicht ausgenutzt werden.
  • Ein Merkmal neuerer Mikroprozessoren besteht darin, daß abgeschickte Schreibanforderungen zugelassen sind. Dies bedeutet, daß ein Mikroprozessor Daten ausgeben kann, die an einer Speicherstelle zu speichern sind. Die Adresse und die Daten werden vorübergehend in einem Puffer in einer Speichersteuerung gespeichert, und es wird dem Mikroprozessor erlaubt, mit seinem nächsten Arbeitsgang fortzufahren, ohne auf den Abschluß des Schreibvorgangs in die gewählte Speicherstelle zu warten. Es kann ein ausreichendes Puffern vorgesehen werden, um zu ermöglichen, daß mehrere Schreibvorgänge vom Mikroprozessor abgeschickt werden, bevor er auf den Abschluß der Schreibvorgänge warten muß.
  • Das Merkmal der abgeschickten Schreibanforderungen ausnutzende Systeme umfassen eine Logik, die Leseadressen mit Schreibadressen vergleicht, um sicherzustellen, daß ein anschließendes Lesen aus dem Speichersystem nicht auf eine Speicheradresse gerichtet ist, die abgeschickte Schreibdaten aufweist, welche noch nicht geschrieben wurden. Falls die Leseadresse der Adresse einer abgeschickten Schreibanforderung entspricht, kann die Speichersteuerung mit der Antwort auf die Leseanforderung warten, bis der abgeschickte Schreibvorgang abgeschlossen ist (ein ähnliches System ist in US-A-5 022 004 offenbart), oder die Speichersteuerung kann alternativ auf die Leseanforderung antworten, indem Daten direkt aus dem Puffer für abgeschickte Schreibanforderungen übertragen werden. Falls die Leseadresse von den Adressen aller abgeschickten Schreibanforderungen verschieden ist, kann die Speichersteuerung eine ”Read-Around”-Logik aufweisen, damit die Speichersteuerung vor dem Abschluß der abgeschickten Schreibvorgänge auf den Lesezugriff auf eine andere Stelle antworten kann.
  • Bekannte Speichersteuerungen, die abgeschickte Schreibvorgänge verwirklichen, arbeiten nach dem First-In-First-Out-Prinzip. Dies bedeutet, daß die abgeschickten Schreibanforderungen in der gleichen Reihenfolge in den Speicher geschrieben werden, in der sie von der Speichersteuerung empfangen werden. Falls sequentielle abgeschickte Schreibvorgänge auf Adressen in verschiedenen Seiten der DRAMs gerichtet sind, tritt im Speichersystem der durch die Zeilenzugriffszeit bewirkte zeitliche Mehraufwand auf. Selbst dann, wenn zwei abgeschickte Schreibanforderungen im Puffer auf dieselbe Speicherseite gerichtet sind, schreibt eine herkömmliche Speichersteuerung die zwei abgeschickten Schreibanforderungen nicht in sequentieller Folge, falls eine auf eine andere Seite gerichtete dritte abgeschickte Schreibanforderung zwischen ihnen abgeschickt wird. Falls die Speichersteuerung weiterhin Read-Around-Vorgänge zuläßt, kann der Lesezugriff von einer anderen Seite aus als eine vorhergehende oder eine nachfolgende abgeschickte Schreibanforderung erfolgen. Dies ruft wiederum den zeitlichen Mehraufwand beim Zeilenzugriff hervor. Falls der Mikroprozessor keine weiteren Schreibanforderungen abschicken kann oder auf Lesedaten warten muß, wenn sich die Speichersteuerung wegen häufiger Seitenumschaltung verlangsamt, wird die Gesamtsystemleistung verschlechtert.
  • Es ist demgemäß ersichtlich, daß viele Vorteile von Systemen mit einer Fähigkeit zu abgeschickten Schreibanforderungen und einer Read-Around-Fähigkeit durch den durch Ändern der Zeilenadresse zwischen Speicherzugriffen hervorgerufenen zeitlichen Mehraufwand aufgehoben werden.
  • Zusammenfassung der Erfindung
  • Gemäß einer Erscheinungsform sieht die vorliegende Erfindung eine Speichersteuerung nach Anspruch 1 vor. Gemäß einer weiteren Erscheinungsform sieht die vorliegende Erfindung ein Verfahren zum Wählen eines nächsten Zugriffs in einem dynamischen Random-Access-Speicher (DRAM) nach Anspruch 6 vor.
  • Die Speichersteuerung gemäß der bevorzugten Ausführungsform ist speziell dafür ausgelegt, die Speicherzugriffszeit für Lese- und Schreibzykluszugriffe in einem Speichersystem mit Seitenmoduszugriffen zu verringern, indem die Verarbeitungsreihenfolge der Lese- und Schreibzyklus-Zugriffsanforderungen umgeordnet wird. Insbesondere ermöglicht die Speichersteuerung das derartige Umordnen der Lese- und Schreibzyklus-Zugriffsanforderungen, daß alle Lese- und Schreibzugriffe, die Zugriff auf die aktuelle Seite (die bei einem Seitenmodus-Zugriffsschema in eine Zeilenadresse übersetzt wird) erfordern, vor den Lese- und Schreibzyklus-Zugriffsanforderungen ausgeführt werden, die Zugriff auf eine andere Seite (Zeile) erfordern. Gemäß alternativen Ausführungsformen werden alle Lesezugriffe vor jeglichen Schreibzugriffen ausgeführt. Gemäß diesen Ausführungsformen werden Lesezugriffe auf eine aktuelle Seite vor Lesezugriffen auf eine neue Seite ausgeführt und werden Schreibzugriffe auf eine aktuelle Seite vor Schreibzugriffen auf eine neue Seite ausgeführt.
  • Wie vorstehend erörtert wurde, muß die Speichersteuerung bei einem typischen Adressierschema zwischen Speicherzugriffen, die eine Änderung der Zeilenadresse erfordern, eine festgelegte Zeit warten, bis die neue Zeile des DRAM vollständig geladen wurde, bevor die neue Zeilenadresse im DRAM freigegeben werden kann. Diese Verzögerung beim Bereitstellen der neuen Zeilenadresse wird als Zeilenadressen-Vorladezeit bezeichnet. Vorteilhafterweise ordnet die Speichersteuerung gemäß der bevorzugten Ausführungsform die Lese- und Schreibzykluszugriffe um, so daß mehrere Zugriffe für dieselbe Seite zusammen ausgeführt werden. Demgemäß verringert die Speichersteuerung gemäß der bevorzugten Ausführungsform die Gesamt-Speicherzugriffszeit, indem die Zeilenadreß-Vorladezeit zwischen den Zykluszugriffen auf dieselbe Zeile beseitigt wird, die bei einer Verarbeitung der Speicherzyklusanforderungen in ihrer ursprünglichen Reihenfolge auftreten würde.
  • Eine Erscheinungsform der bevorzugten Ausführungsform ist eine Speichersteuerung, die ein dynamisches Random-Access-Speichersystem (DRAM-System) steuert, das mehrere Schreibzugriffsanforderungen mit jeweiligen Adressen und in das DRAM-System an den Adressen zu schreibenden zugeordneten Daten aufweist. Jede der Schreibadressen hat einen Zeilenadreßteil und einen Spaltenadreßteil. Die Speichersteuerung weist einen Puffer mit mehreren Stellen auf, der die Schreibadressen und zugeordnete Daten für jede der Schreibzugriffsanforderungen vorübergehend speichert, bis die Daten in das DRAM-System geschrieben werden können. Die gespeicherten Adressen und Daten werden im Puffer in einer Reihenfolge gehalten, die der Reihenfolge entspricht, in der die Schreibzugriffsanforderungen empfangen werden. Eine Zugriffsfolge-Steuerschaltung wählt eine Adresse und Daten, die einer der mehreren Schreibzugriffsanforderungen zugeordnet sind, als einen nächsten Zugriff auf das DRAM-System. Die Zugriffsfolge-Steuerschaltung weist einen Komparator auf, der den Zeilenadreßteil jeder der gespeicherten Adressen mit dem Zeilenadreßteil eines laufenden Zugriffs vergleicht und Schreibzugriffsanforderungen mit jeweiligen Zeilenadreßteilen identifiziert, die mit dem Zeilenadreßteil des laufenden Zugriffs identisch sind. Die Zugriffsfolge-Steuerschaltung weist weiterhin eine auf den Komparator ansprechende Zugriffswählschaltung auf. Die Zugriffswählschaltung wählt eine der identifizierten Schreibzugriffsanforderungen als einen nächsten Zugriff auf das DRAM-System, bevor eine nicht identifizierte Schreibzugriffsanforderung mit einem vom Zeilenadreßteil des laufenden Zugriffs verschiedenen Zeilenadreßteil gewählt wird. Die Wahl einer der identifizierten Schreibzugriffsanforderungen wird selbst dann vorgenommen, wenn die nicht identifizierte Schreibzugriffsanforderung vor der identifizierten Schreibzugriffsanforderung erfolgt ist.
  • Die Speichersteuerung kann auch eine Lesezugriffsanforderung mit einer Leseadresse empfangen. Die Leseadresse hat einen Zeilenadreßteil und einen Spaltenadreßteil. Der Komparator vergleicht den Zeilenadreßteil der Leseadresse und erkennt, ob der Zeilenadreßteil der Leseadresse auf den Zeilenadreßteil des laufenden Zugriffs gerichtet ist. Die Zugriffswählschaltung wählt vor dem Wählen der nicht identifizierten Schreibzugriffsanforderung als einen nächsten Zugriff die Lesezugriffsanforderung als einen nächsten Zugriff. Vorzugsweise hat der Komparator weiterhin eine Logik, die mindestens einen Teil des Spaltenadreßteils der Leseadresse mit einem entsprechenden Teil der Spaltenadreßteile der mehreren Schreibadressen im Puffer vergleicht. Die Adreßwählschaltung wählt vorzugsweise die Lesezugriffsanforderung vor einer Schreibzugriffsanforderung, wenn der Zeilen adreßteil der Leseadresse mit dem Zeilenadreßteil des laufenden Zugriffs identisch ist und wenn sich der Teil des Spaltenadreßteils der Leseadresse von den entsprechenden Teilen der Spaltenadreßteile der identifizierten Schreibzugriffsanforderungen unterscheidet.
  • Eine weitere Erscheinungsform der bevorzugten Ausführungsform ist ein Verfahren zum Steuern des Zugriffs auf ein mehrere Speicherstellen aufweisendes dynamisches Random-Access-Speichersystem (DRAM-System). Es wird auf das DRAM-System zugegriffen, indem darauf eine Zeilenadresse und dann eine Spaltenadresse angewendet wird. Das DRAM-System bietet Zugriff auf mehrere Stellen mit der gleichen Zeilenadresse, wobei zwischen Zugriffen nur die Spaltenadresse geändert wird. Das Verfahren beinhaltet den Schritt des Speicherns einer Adresse und zugeordneter Daten für jede von mehreren Schreibzugriffsanforderungen in einem Puffer. Jede Adresse von den mehreren Zugriffsanforderungen weist einen Zeilenadreßteil und einen Spaltenadreßteil auf. Jede Adresse und zugeordnete Daten werden in der Reihenfolge gespeichert, in der die Speichersteuerung die Zugriffsanforderungen empfängt. Das Verfahren umfaßt die weiteren Schritte des Ausführens eines ersten Zugriffs auf das DRAM-System an einer ersten Zeilenadresse und einer ersten Spaltenadresse und des Vergleichens des ersten Zeilenadreßteils mit dem Zeilenadreßteil jeder im Puffer gespeicherten Zugriffsanforderung. Wenn mindestens eine Zugriffsanforderung im Puffer einen mit dem Zeilenadreßteil des ersten Zugriffs identischen Zeilenadreßteil hat, wählt das Verfahren die früheste empfangene Zugriffsanforderung von der mindestens einen Zugriffsanforderung, die einen mit dem Zeilenadreßteil des ersten Zugriffs identischen Zeilenadreßteil aufweist, als einen zweiten Zugriff auf das DRAM-System. Die einen identischen Zeilenadreßteil aufweisende Zugriffsanforderung wird vor nicht identische Zeilenadreßteile aufweisenden früheren Zugriffsanforderungen gewählt. Wenn keine im Puffer vorhandene Zugriffsanforderung einen mit dem Zeilenadreßteil des ersten Zugriffs identischen Zeilenadreßteil aufweist, wählt das Verfahren die früheste empfangene Zugriffsanforderung im Puffer als den zweiten Zugriff. Bei dieser Ausführungsform umfaßt das Verfahren vorzugsweise den weiteren Schritt des Vergleichens eines Zeilenadreßteils und mindestens eines Bits eines Spaltenadreßteils einer Lesezugriffsanforderung mit Zeilenadreßteilen und einem entsprechenden Bit von Spaltenadreßteilen der mehreren im Puffer enthaltenen Schreibzugriffsanforderungen. Wenn der Zeilenadreßteil des Lesezugriffs mit einem Zeilenadreßteil mindestens einer der Schreibzugriffsanforderungen identisch ist, führt das Verfahren den Lesezugriff vor den einen identischen Zeilenadreßteil aufweisenden Schreibzugriffen aus, wenn die entsprechenden Bits der Spaltenadreßteile verschieden sind. Andernfalls führt das Verfahren einen Schreibzugriff vor dem Lesezugriff aus, wenn das mindestens eine Bit des Spaltenadreßteils des Lesezugriffs mit dem mindestens einen Bit des Spaltenadreßteils eines der Schreibzugriffe identisch ist.
  • Eine andere Erscheinungsform der bevorzugten Ausführungsform ist ein Verfahren zum Wählen eines nächsten Zugriffs in einem dynamischen Random-Access-Speichersystem (DRAM-System), das abgeschickte Schreibanforderungen an das DRAM-System aufweist, wenn mindestens eine der abgeschickten Schreibanforderungen eine Adresse aufweist, die auf eine Speicherstelle mit einer mit der Zeilenadresse eines aktuellen Zugriffs auf das DRAM-System identischen Zeilenadresse gerichtet ist, und wenn mindestens eine der abgeschickten Schreibanforderungen eine Adresse aufweist, die auf eine Speicherstelle mit einer von der Zeilenadresse des aktuellen Zugriffs verschiedenen Zeilenadresse gerichtet ist. Das Verfahren umfaßt die Schritte des vor dem Wählen eines Schreibzugriffs mit einer verschiedenen Zeilenadresse erfolgenden Wählens des frühesten empfangenen Schreibzugriffs mit einer identischen Zeilenadresse als einen nächsten Zugriff und des dann, wenn kein Schreibzugriff eine identische Zeilenadresse aufweist, erfolgenden Wählens der frühesten Schreibzugriffsanforderung mit einer verschiedenen Zeilenadresse als einen nächsten Zugriff.
  • Eine weitere Erscheinungsform der bevorzugten Ausführungsform ist eine Pufferschaltung, die ermöglicht, daß Daten in sequentieller Reihenfolge empfangen werden und an mehreren Stellen in der Pufferschaltung gespeichert werden und daß die Daten in nicht sequentieller Reihenfolge aus der Pufferschaltung ausgegeben werden. Die Pufferschaltung umfaßt einen die nächste leere Stelle zum Empfangen einer nächsten Dateneingabe identifizierenden Eingabezeiger und einen die nächste volle Stelle als Quelle für die nächste Ausgabe identifizierenden Ausgabezeiger sowie eine Zeigersteuerschaltung, die den Eingabezeiger und den Ausgabezeiger unabhängig steuert und die einen auf eine vorbestimmte Eigenschaft der Daten ansprechenden Prioritätsplaner zum Wählen einer der vollen Stellen als die Quelle für die nächste Ausgabe aufweist. Vorzugsweise umfassen die Daten Adressen, die Speicherstellen in einem dynamischen Random-Access-Speichersystem (DRAM-System) identifizieren, und die vorbestimmte Eigenschaft der Daten umfaßt das Ergebnis eines Vergleichs zur Bestimmung, ob die Zeilenadreßteile der Adressen mit den Zeilenadreßteilen einer Speicherstelle im DRAM-System, auf die gerade zugegriffen wird, identisch sind.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein vereinfachtes Blockdiagramm eines Rechnersystems, das ein Speicheruntersystem aufweist.
  • 2 ist ein vereinfachtes Blockdiagramm des Speicheruntersystems aus 1.
  • 3 zeigt ein Zeitablaufdiagramm eines Lesezugriffs in einem als Beispiel dienenden DRAM-System.
  • 4 zeigt ein Zeitablaufdiagramm eines Schreibzugriffs in einem als Beispiel dienenden DRAM-System.
  • 5 zeigt den Zeitablauf erfolgreicher Schreibvorgänge in verschiedene Zeilen eines DRAMs.
  • 6 zeigt den Zeitablauf erfolgreicher Schreibvorgänge in dieselbe Zeile eines DRAMs.
  • 7 zeigt ein Blockdiagramm eines Speicheruntersystems, das einen FIFO-Puffer für abgeschickte Schreibanforderungen aufweist.
  • 8 zeigt ein Blockdiagramm eines Speicheruntersystems, das einen Puffer für abgeschickte Schreibanforderungen und eine Speichersteuerung gemäß der vorliegenden Erfindung aufweist.
  • 9 ist eine Tabelle, in der eine Ausführungsform der Auswahlen der nächsten Zugriffsadresse für die Kombinationen von Zeilenadreßteilen von Lesezugriffsanforderungen und abgeschickten Schreibanforderungen im Vergleich zur aktuellen Zeilenadresse dargestellt ist.
  • 10 ist eine Tabelle, in der eine alternative Ausführungsform der Auswahlen der nächsten Zugriffsadresse für die Kombinationen von Zeilenadreßteilen von Lesezugriffsanforderungen und abgeschickten Schreibanforderungen im Vergleich zur aktuellen Zeilenadresse dargestellt ist.
  • 11 ist eine Tabelle, in der die Auswahlen der nächsten Schreibzugriffsadresse für die Kombinationen abgeschickter Schreibanforderungen dargestellt ist, die Seitentreffer (also Zeilentreffer), Seitenfehlschläge oder Seitentreffer und Seitenfehlschläge einschließen können.
  • 12 zeigt ein detaillierteres Blockdiagramm der Vergleichs- und Zeigerlogik aus 8.
  • 13 zeigt eine Funktionsdarstellung hoher Ebene des Puffers für abgeschickte Schreibanforderungen aus den 8 und 12.
  • 14 zeigt die Funktionslogik der Zeigersteuerlogik aus 12, die den Basiseintragszeiger erzeugt.
  • 15 zeigt die Funktionslogik der Zeigersteuerlogik aus 12, die den Ausgabezeiger erzeugt.
  • 16 zeigt die Funktionslogik der Zeigersteuerlogik aus 12, die den Eingabezeiger erzeugt.
  • Detaillierte Beschreibung des bevorzugten Ausführungsbeispiels
  • In 1 ist ein als Beispiel dienendes Rechensystem 100 gemäß der vorliegenden Erfindung dargestellt. Das Rechensystem 100 weist ein CPU-Modul 110 auf, das beispielsweise einen Mikroprozessor 113 und einen Cache-Speicher 115 aufweist. Es ist auf dem Fachgebiet gut verstanden, daß das CPU-Modul 110 andere herkömmliche Schaltungen, wie eine Bussteuerung, eine Busschnittstelle und dergleichen, aufweist, die hier nicht dargestellt sind. Das CPU-Modul 110 kommuniziert mit einem Speicheruntersystem 120 über einen Systembus 125. Das Speicheruntersystem 120 weist zusätzlich eine Speichersteuerung 130 und mehrere dynamische Random-Access-Speicher (DRAMs) 135 auf. Ein typisches Rechnersystem 100 beinhaltet andere Komponenten, wie eine E/A-Schnittstelle, Plattenlaufwerke und Plattenlaufwerk-Steuerungen, Bildschirmgeräte, Tastaturen und dergleichen, die in 1 ebenfalls nicht dargestellt sind, um die vorliegende Erfindung hervorzuheben. Es sei weiterhin bemerkt, daß andere derartige Komponenten unter Verwendung von Direktspeicherzugriffs-(DMA)-Transaktionen über den Systembus auf das Speicheruntersystem 120 zugreifen können.
  • Der Systembus 125 ist in 1 als ein zusammengesetzter Bus dargestellt. Fachleute werden erkennen, daß der Systembus 125 mehrere Adreßleitungen, mehrere Datenleitungen und mehrere Steuerleitungen aufweist. Die Steuerleitungen können beispielsweise eine EA/MEM-Leitung, die zwischen Übertragungen zwischen dem CPU-Modul 110 und den E/A-Vorrichtungen (nicht dargestellt) oder Übertragungen zwischen dem CPU-Modul 110 und dem Speicheruntersystem 120 wählt, und eine Lese/Schreibleitung, die zwischen Übertragungen vom Speicheruntersystem 120 zum CPU-Modul 110 (Lesen) oder vom CPU-Modul zum Speicheruntersystem 120 (Schreiben) wählt, aufweisen. Sie können auch Bytewählleitungen, die bestimmen, welche Datenbytes in einem aus mehreren Bytes bestehenden Wort zu übertragen sind, und ein oder mehrere Zyklusauslösesignale, die vom Mikroprozessor 113 im CPU-Modul 110 zum Einleiten eines Zugriffszyklus aktiviert werden, aufweisen. Beispielsweise aktiviert ein Intel®-Mikroprozessor, wie ein 80486, ein Pentium oder dergleichen, ein Adreßfreigabesignal (ADS), um einen Zugriffszyklus einzuleiten.
  • Das Speicheruntersystem 120 spricht auf die jeweiligen Signale auf der Adreß-, Daten- und Steuerleitung an und beginnt mit einem Zugriffszyklus, und Daten werden, falls vom Mikroprozessor 113 ein Lesezugriff gewählt wird, von einer durch die Adreßsignale und die Bytewählsignale bestimmten Speicherstelle über die Datenleitungen des Systembusses 125 zum Mikroprozessor 113 übertragen. Falls vom Mikroprozessor 113 ein Schreibzugriff gewählt wird, werden Daten vom Mikroprozessor 113 über die Datenleitungen zum Speicheruntersystem 120 übertragen.
  • 2 ist ein vereinfachtes Blockdiagramm eines als Beispiel dienenden Speicheruntersystems 120 zum Erläutern der grundlegenden Arbeitsweise der DRAMs 135. Die 3 und 4 zeigen als Beispiel dienende Zeitablaufdiagramme für einen Lesezugriff (3) und einen Schreibzugriff (4) auf die DRAMs. Wie dargestellt, weist die Speichersteuerung 130 einen Adreßbereichsdecodierer 138, einen Taktgenerator 140, einen Zeilen/Spaltenadreßmultiplexer (MUX) 142 und einen bidirektionalen Datenpuffer 144 auf.
  • Die Speichersteuerung 130 empfängt vom Systembus 125 auf mehreren Adreßleitungen 154 mehrere Adreßbits, die für die Zwecke dieser Darstellung die Adreßbits AD2 bis AD31 sind. Bytewählleitungen werden von der Speichersteuerung anstelle von Adreßbits AD0 und AD1 verwendet, um bestimmte Bytes eines aus 4 Bytes bestehenden Speicherwort auszuwählen, auf die zuzugreifen ist. Bei einigen Systemen kann ein Speicherwort eine größere Anzahl von Bytes aufweisen, und Adreßbits AD2 oder höher können durch zusätzliche Bytewählleitungen ersetzt werden, um aus der größeren Anzahl von Bytes auszuwählen. Gemäß der hier beschriebenen Ausführungsform werden Adreßbits AD20–AD31 verwendet, um ansprechend auf einen Zugriff auf dem Systembus 135 ein bestimmtes Untersystem, wie beispielsweise das Speicheruntersystem 120, auszuwählen. Des weiteren werden gemäß der beschriebenen Ausführungsform die Adreßbits AD2–AD21 zum Auswählen einer bestimmten Speicherstelle innerhalb des Speicheruntersystems 120 verwendet. Es sei weiterhin bemerkt, daß die Zuordnung der Adreßbits AD0–AD31 zur Steuerung des Speicheruntersystems 120 entsprechend der Speicherkapazität und dem gewählten Adreßbereich des Speicheruntersystems 120 variiert.
  • Die Adreßleitungen 154 sind an den Zeilen/Spaltenadreßmultiplexer 142 angeschlossen. Ein Fachmann wird verstehen, daß eine Adreßnormierschaltung (nicht dargestellt) vorteilhafterweise in das Speicheruntersystem 120 aufgenommen werden kann, um die Adressen zu normieren, bevor sie auf den Zeilen/Spaltenadreßmultiplexer 142 angewendet werden. Bei als Beispiel dienenden DOS-basierten Systemen, bei denen Prozessoren der Intel®-Familie verwendet werden, weist der Adreßbereich eine Anzahl von ”Lücken” auf, die beispielsweise durch Zuordnung von Teilen des Adreßbereichs zum Video-RAM hervorgerufen werden. Diese Adressen werden vom Betriebssystem nicht direkt als Speicherstellen adressiert. Weil die diesen ”Lücken” entsprechenden physikalischen Speicherstellen andernfalls nicht verwendet werden würden, übersetzt eine Adreßnormierschaltung logische Adressen oberhalb des Anfangs der Lücken, um die Zugriffe auf den ”Lückenstellen” entsprechende physikalische Adressen umzulenken. Solche Adreßnormierschaltungen sind auf dem Fachgebiet wohlbekannt, und sie sind in den 2, 7 und 8 nicht dargestellt und werden hier nicht beschrieben.
  • Der Taktgenerator 140 spricht auf Steuersignale vom Systembus 125 an, um geeignete Zugriffssignale für die DRAMs 135 zu erzeugen. Der Adreßbereichsdecodierer 138 decodiert eine auf die Speichersteuerung 130 angewendete Adresse (die die Adreßbits AD2–AD31 aufweist) und bestimmt, ob die angewendete Adresse innerhalb eines dem Speicheruntersystem 120 zugeordneten Adreßbereichs liegt. Der Adreßbereichsdecodierer 138 führt dem Taktgenerator 140 ein aktives Ausgangssignal zu, wenn die angewendete Adresse innerhalb eines solchen Adreßbereichs liegt. Wenn ein Adreßfreigabesignal (ADS-Signal) auf einer Leitung 150 aktiviert wird, während die Ausgabe des Adreßbereichsdecodierers 138 aktiv ist, leitet der Taktgenerator 140 einen Zugriff auf die DRAMs 135 ein. Falls auf einer Lese/Schreibleitung 152 ein L/S-Signal für einen Lesezugriff ausgewählt wird, wird der Zugriff als ein Lesezugriff eingeleitet. Wenn das L/S-Signal für einen Schreibzugriff ausgewählt wird, leitet der Taktgenerator in ähnlicher Weise einen Schreibzugriff auf die DRAMs 135 ein.
  • Die Speichersteuerung 130 empfängt weiterhin mehrere Datensignale (D0–D31) auf entsprechenden mehreren Datenleitungen 156. Das hier beschriebene als Beispiel dienende System ist ein 32-Bit-System. Es sei bemerkt, daß die nachfolgende Beschreibung nur für Systeme gilt, die eine größere Anzahl von Bits je Datenwort aufweisen.
  • Der Taktgenerator 140 erzeugt auf einer Leitung 160 ein Zeilenadreß-Freigabesignal (RAS*-Signal), auf einer Leitung 162 ein Spaltenadreß-Freigabesignal (CAS*-Signal), auf einer Leitung 164 ein Schreibfreigabesignal (WE*-Signal), auf einer Leitung 166 ein Ausgabefreigabesignal (OE*-Signal) und auf einer Leitung 168 ein Multiplexer-Wählsignal (S). (Ein Stern (*) nach einem Signalnamen gibt hier ein aktives niedriges Signal an.) Mehrere RAS*- und CAS*-Signale können mehreren DRAM-Banken zugeführt werden, so daß nur bestimmte DRAMs durch jedes RAS*- und CAS*-Signal gesteuert werden.
  • Die Arbeitsweise des als Beispiel dienenden Speicheruntersystems 120 wird kurz in Zusammenhang mit den Zeitablaufdiagrammen aus den 3 und 4 beschrieben. Eine mit DRAMs vertraute Person wird verstehen, daß DRAM-Schaltungen typischerweise nur die Hälfte der zum vollständigen Adressieren der Speicherstellen in jeder Schaltung erforderlichen Adreßleitungen aufweisen. Um beispielsweise einen 1 048 576 Speicherstellen aufweisenden 1-Megabit-DRAM zu adressieren, sind 20 Adreßbits erforderlich. Wegen der Stiftbegrenzungen und der Betriebseigenschaften von DRAMs werden jedoch nur 10 Adreßstifte bereitgestellt. Die zum vollständigen Adressieren des DRAMs erforderlichen 20 Adreßbits werden zum DRAM multiplexert, wobei 10 Adreßbits zur Zeit verarbeitet werden. Insbesondere wird das Multiplexer-Wählsignal (S) zuerst auf einem ersten Logikpegel an den Zeilen/Spaltenadreßmultiplexer 142 angelegt, um die ersten 10 Bits der Adresse vom Systembus 125 als eine Zeilenadresse anzulegen, wie durch einen Zeilenteil des Adreßsignals (ADDR-Signals) in 3 dargestellt ist. Historisch werden die höchstwertigen Adreßbits als die Zeilenadresse angelegt, es können jedoch auch andere Kombinationen von Adreßbits mit einem Teil der höchstwertigen Bits und einem Teil der niedrigstwertigen Bits verwendet werden. Es sei beispielsweise auf das US-Patent 5 247 643 verwiesen, auf dessen Lehren hier Bezug genommen wird. Nach dem Wählen der Adreßbits für die Zeilenadresse aktiviert der Taktgenerator 140 das RAS*-Signal, wie in 3 dargestellt ist. Nach einer durch die spezifischen Eigenschaften der DRAMs 135 bestimmten angemessenen Verzöge rung schaltet der Taktgenerator 140 den Pegel auf der Wählleitung 168 um, um zu veranlassen, daß der Zeilen/Spaltenadreßmultiplexer 142 die restlichen Adreßbits als die Spaltenadreßbits anlegt, wie durch den Spaltenteil des Adreßsignals in 3 dargestellt ist. Der Taktgenerator 140 aktiviert das CAS*-Signal, um zu veranlassen, daß die Spaltenadresse in den DRAMs 135 freigegeben wird. Weil dies ein Lesezugriff ist, ist das WE*-Signal auf der Leitung 164 inaktiv und das OE*-Signal auf der Leitung 166 aktiv, so daß gültige Daten aus den DRAMs nach einer durch die Spaltenadreß-Zugriffszeit bestimmten kurzen Verzögerung ausgegeben werden. Der Puffer 144 wird auch durch das OE*-Signal gesteuert, um die von den DRAMs 135 ausgegebenen Daten zu den Datenleitungen 156 des Systembusses 125 zu übertragen. (Bei einigen Systemen können die DRAMs 135 ohne Verwendung des Puffers 144 direkt mit dem Systembus 125 verbunden sein.)
  • In 4 ist eine ähnliche Zeitabfolge für einen Schreibzugriff dargestellt. Vor dem Anlegen der Spaltenadreßbits und dem Aktivieren des CAS*-Signals wird jedoch das WE*-Signal auf der Leitung 164 aktiviert, und das OE*-Signal auf der Leitung 166 ist inaktiv. Somit werden Daten vom Systembus 125 über den Puffer 144 zu den DRAMs 135 übertragen und darin gespeichert.
  • Wie in den 3 und 4 dargestellt ist, beinhaltet ein Zugriff auf die DRAMs 135 einen aus zwei Teilen bestehenden Arbeitsgang, bei dem eine Zeilenadresse an die DRAMs 135 angelegt und durch Aktivieren des RAS*-Signals in den DRAMs freigegeben wird. Hierdurch wird veranlaßt, daß die DRAMs mit dem Zugriff auf mehrere Datenspeicherstellen beginnen, die die gemeinsame Zeilenadresse verwenden. Die Daten aus der gesamten Zeile werden nach einer als Zeilenzugriffszeit bezeichneten Verzögerung einem innerhalb jedes DRAMs vorhandenen Ausgabemultiplexer zugeführt. Die mehreren Datenbits, auf die in einer einzelnen Zeile zugegriffen wird, werden als in Spalten innerhalb der Zeile liegend bezeichnet. Wenn die Spaltenadresse an die DRAMs 135 angelegt wird und das CAS*-Signal aktiviert wird, wählt die Spaltenadresse dann eine der Datenspalten aus, die von jedem der DRAMs 135 auszugeben sind. Alternativ werden bei einem Schreibzugriff die dem Eingang jedes DRAMs 135 zugeführten Daten in der ausgewählten Zeile an der durch die ausgewählte Spaltenadresse festgelegten Spalte gespeichert.
  • Falls dem DRAM eine neue Adresse zuzuführen ist, muß das RAS*-Signal für eine ausreichende Zeit deaktiviert werden, um zu ermöglichen, daß die internen Zeilenadressen vorgeladen und wieder mit den neuen Zeilenadressen zugeführt werden. Die der Zeilenzugriffszeit entsprechende Verzögerung tritt wiederum auf, bevor die Spaltenadresse zugeführt und die bestimmte Datenspalte zum Lesen oder Schreiben gewählt werden kann. Wie in 5 dargestellt ist, tritt dadurch ein erheblicher zeitlicher Mehraufwand bei jedem Einleiten eines neuen Zeilenzugriffs auf.
  • Die neuesten DRAMs reduzieren den zeitlichen Mehraufwand teilweise, wobei sie im sogenannten Seitenmodus arbeiten, in dem sequentielle Zugriffe auf mehrere Spalten in derselben Zeile eines DRAMs ohne weitere Zeilenzugriffe erfolgen können. Wie insbesondere in 6 dargestellt ist, wird eine Anzahl von Zugriffen auf die gleiche Zeile durch Anlegen einer Zeilenadresse an die DRAMs und Aktivieren des RAS*-Signals eingeleitet. Daraufhin wird an die DRAMs eine erste Spaltenadresse angelegt und das CAS*-Signal aktiviert. Das RAS*-Signal wird nach dem ersten Zugriff nicht deaktiviert. Stattdessen wird nur das CAS*-Signal deaktiviert, es wird eine neue Spaltenadresse angelegt, und die Daten aus der neuen Spalte oder die Daten für die neue Spalte sind erst nach der kurzen Spaltenzugriffszeit verfügbar bzw. werden erst nach dieser gespeichert. Wenn demgemäß eine Folge von Zugriffen in derselben Zeile stattfindet, wird ein wesentlicher Zeitvorteil erreicht.
  • Wie vorstehend erörtert wurde, können die durch den Betrieb eines DRAM-Speichersystems im Seitenmodus bereitgestellten Zeitersparnisse nicht erhalten werden, wenn der Mikroprozessor 113 oder eine andere Speicherzugriffsvorrichtung Adressen in nichtsequentieller Weise anlegt. Beispielsweise kann der Mikroprozessor 113 Daten in eine einer bestimmten Zeile der DRAMs 135 entsprechende Adresse schreiben und dann Daten von einer einer anderen Zeile der DRAMs 135 entsprechenden Adresse lesen oder in eine solche Adresse schreiben. Es ist in diesen Fällen erforderlich, die Zeilenadresse zu ändern und den vorstehend erörterten zeitlichen Mehraufwand beim Zeilenzugriff hinzunehmen.
  • Der zeitliche Mehraufwand kann bei einem Mikroprozessor-basierten System erheblicher sein, das abgeschickte Schreibanforderungen an den Speicher zuläßt. Wie vorstehend erörtert wurde, legt bei einem System mit abgeschickten Schreibanforderungen, wie einem in 7 dargestellten System 180, der Mikroprozessor 113 eine Adresse, Schreibdaten und geeignete Steuersignale an den Systembus 125 an, um einen Schreibzugriff auf das Speicheruntersystem 120 einzuleiten. Statt auf den Abschluß des Schreibzugriffs zu warten, der durch die Aktivierung und die nachfolgende Deaktivierung eines Besetztsignals vom Speicheruntersystem 120 angegeben wird, gibt der Mikroprozessor 113 weiterhin Bustransaktionen aus. Zur Aufnahme abgeschickter Schreibanforderungen weist eine im Speicheruntersystem 180 vorhandene Speichersteuerung 182 einen Puffer 184 für abgeschickte Schreibanforderungen auf. Der Puffer 184 für abgeschickte Schreibanforderungen speichert die Adresse und die Daten, die in die DRAMs 135 zu schreiben sind. Bei bekannten Systemen mit abgeschickten Schreibanforderungen kann der Puffer 184 für abgeschickte Schreibanforderungen einen Speicher für mehr als eine abgeschickte Schreibanforderung aufweisen, und er arbeitet als ein First-In/First-Out-(FIFO)-Puffer. Die Speichersteuerung 182 überträgt die frühesten abgeschickten Schreibdaten zu den DRAMs 135, indem die Adresse am Ausgang des Puffers 184 für abgeschickte Schreibanforderungen als ein Zeilenadreßteil und ein Spaltenadreßteil an die DRAMs 135 angelegt wird, wie vorstehend beschrieben wurde, wobei die Adresse und die Daten jedoch vom Puffer 184 für abgeschickte Schreibanforderungen statt direkt vom Systembus 125 zugeführt werden. Die Zeitsteuerung zum Speichern von Schreibzugriffsanforderungsinformationen in den FIFO-Puffer 184 und zum Zuführen der vom FIFO-Puffer ausgegebenen Adresse und Daten zu den DRAMs 135 wird von einer Taktgenerator- und FIFO-Steuerung 186 über einen Steuerbus 187 bereitgestellt. Die Taktgenerator- und FIFO-Steuerung 186 steuert einen Zeilen/Spaltenadreßmultiplexer (MUX) 188 in einer der vorstehend beschriebenen ähnlichen Weise.
  • Wenn der Mikroprozessor 113 einen Lesezugriff auf das Speicheruntersystem 120 einleitet, benötigt er im allgemeinen die Antwortdaten, bevor er mit seinem nächsten Arbeitsgang fortfährt. Demgemäß stellen als Beispiel dienende Speichersysteme mit abgeschickten Schreibanforderungen einen Read-Around-Modus bereit, in dem die Speichersteuerung 182 einer Lesezugriffsanforderung auf dem Systembus 125 Priorität gegenüber anstehenden abgeschickten Schreibanforderungen gibt. Das heißt, daß der Lesezugriff unabhängig davon, ob eine abgeschickte Schreibanforderung ansteht, ausgeführt wird, falls eine Leseanforderung ansteht, wenn ein laufender Zugriff abgeschlossen ist, sofern die Lesezugriffsanforderung nicht auf die gleiche Adreßstelle wie eine abgeschickte Schreibanforderung gerichtet ist. Weil es wichtig ist, daß beim Lesezugriff die aktuellsten Daten abgerufen werden, führen bekannte Systeme mit abgeschickten Schreibanforderungen einen von zwei Arbeitsgängen aus, wenn eine Leseanforderung auf die gleiche Adreßstelle wie eine abgeschickte Schreibanforderung gerichtet ist. Der Puffer für abgeschickte Schreibanforderungen wird gelöscht, um die Schreibdaten in die DRAMs 135 zu schreiben, oder die Leseanforderung wird alternativ erfüllt, indem die angeforderten Daten ähnlich wie bei einem Cache-Speicher-Untersystem aus dem Puffer 184 für abgeschickte Schreibanforderungen ausgegeben werden. Der Read-Around-Modus wird von einem Lese/Schreibadreßmultiplexer (MUX) 190 unterstützt, der während Schreibzugriffen Adreßinformationen vom Ausgang des FIFO-Puffers 184 für abgeschickte Schreibanforderungen empfängt und der während Lesezugriffen Adreßinformationen direkt vom Systembus 125 empfängt. Ein Datenausgabepuffer 192 puffert die Ausgabedaten von den DRAMs 135 auf den Systembus 125.
  • Bei herkömmlichen Systemen mit abgeschickten Schreibanforderungen tritt der zeitliche Mehraufwand weiterhin auf, wenn sequentielle abgeschickte Schreibanforderungen auf verschiedene Zeilen der DRAMs 135 gerichtet werden. Wenn die Speichersteuerung 182 insbesondere auf den FIFO-Puffer 184 für abgeschickte Schreibanforderungen zugreift, muß sie die Zeilenadresse jedesmal dann ändern, wenn zwei sequentielle abgeschickte Schreibanforderungen auf verschiedene Zeilen in den DRAMs 135 gerichtet sind. Wenn weiterhin ein Lesezugriff eine von der Zeile des aktuellen Zugriffs verschiedene Zeile identifiziert, muß der zeitliche Mehraufwand beim Zeilenzugriff hingenommen werden. Eine herkömmliche Speichersteuerung reduziert teilweise den zeitlichen Mehraufwand, indem sie es erkennt, wenn sequentielle Adressen auf die gleiche Seite (also Zeile) gerichtet sind. Wie in 7 dargestellt ist, ist eine Zeilenzwischenspeicher- und Komparatoreinrichtung 194 aufgenommen, die den Zeilenadreßteil der Ausgabe des Lese/Schreibadreßmultiplexers 190 empfängt. Die Zeilenzwischenspeicher- und Komparatoreinrichtung 194 speichert beim Auftreten eines aktiven RAS*-Signals den Zeilenadreßteil eines vorhergehenden Zugriffs im Zwischenspeicher. Der zwischengespeicherte Zeilenadreßteil wird mit dem Zeilenadreßteil des aktuellen Zugriffs verglichen, um zu bestimmen, ob die beiden Zeilenadressen gleich sind. Falls die beiden Zeilenadressen gleich sind, führt die Zeilenzwischenspeicher- und Komparatoreinrichtung 194 der Taktgenerator- und FIFO-Steuerung ein aktives Signal zu, um zu bewirken, daß sie die aktuelle Seite (also Zeile) offen hält und nur die Spaltenadresse ändert, indem sie das CAS*-Signal für den neuen aktuellen Zugriff erzeugt.
  • In 8 ist ein erfindungsgemäßes Speicheruntersystem 200 dargestellt. Insbesondere weist das Speicheruntersystem 200 eine Speichersteuerung 202 auf, die einen verbesserten Puffer 204 für abgeschickte Schreibanforderungen umfaßt. Die Speichersteuerung 202 weist weiterhin eine Taktgenerator- und Puffersteuerung 206 auf, die nachfolgend in näheren Einzelheiten beschrieben wird. Die Taktgenerator- und Puffersteuerung 206 ist über einen bidirektionalen Steuerbus 208 mit dem Puffer 204 für abgeschickte Schreibanforderungen verbunden.
  • Ein Lese/Schreibadreßmultiplexer 210, ein Zeilen/Spaltenadreßmultiplexer 212 und ein Datenausgabepuffer 214 arbeiten in einer Weise, die derjenigen der entsprechenden vorstehend beschriebenen Elemente ähnelt.
  • Die Speichersteuerung 202 aus 8 weist einen Zeilenadreß-Zwischenspeicher 220 auf, die den Zeilenadreßteil der Ausgabe des Lese/Schreibadreßmultiplexers 210 empfängt und zwischenspeichert. Der Zeilenadreß-Zwischenspeicher 220 wird beim Auftreten des aktiven RAS*-Signals zwischengespeichert, so daß der Zeilenadreßteil eines laufenden Zugriffs jedesmal dann gespeichert wird, wenn die Zeilenadresse auf die DRAMs angewendet wird. Die zwischengespeicherte Ausgabe des Zeilenadreß-Zwischenspeichers 220 wird der Taktgenerator- und Puffersteuerung 206 als eine Eingabe zugeführt.
  • Ähnlich wie die herkömmlichen Speichersteuerungen für abgeschickte Schreibanforderungen in der Art der in 7 dargestellten verfolgt der Taktgenerator in der Speichersteuerung 202 für abgeschickte Schreibanforderungen aus 8 die Zeilenadresse des laufenden Zugriffs durch den Zeilenadreß-Zwischenspeicher 220. Im Gegensatz zu herkömmlichen Speichersteuerungen weist die Taktgenerator- und Puffersteuerung 206 eine Vergleichs- und Zeigerlogik 230 auf, die die Zeilenadreßteile der momentan geöffneten Seite (also Zeile), die im Puffer 204 für abgeschickte Schreibanforderungen gespeichert ist, vergleicht und bestimmt, ob irgendeine der aktiven abgeschickten Schreibanforderungen einen Adreßteil aufweist, der der zwischengespeicherten Zeilenadresse des laufenden Zugriffs auf die DRAMs 135 entspricht. Die Vergleichs- und Zeigerlogik 230 gibt weiterhin über einen Eingabezeiger die Stelle im Puffer 204 für abgeschickte Schreibanforderungen an, an der die Adresse und die Daten eingehender Schreibanforderungen zu speichern sind, und gibt über einen Ausgabezeiger die Stelle an, von der die Adresse und die Daten einer für den nächsten Zugriff auf die DRAMs 135 gewählten abgeschickten Schreibanforderung auszugeben sind.
  • Die Taktgenerator- und Puffersteuerung 202 empfängt weiterhin die laufende Adresse auf dem Systembus 125, und wenn der Signalpegel auf der Lese/Schreibwählleitung 152 angibt, daß die Zugriffsanforderung auf dem Systembus 125 eine Lesezugriffsanforderung ist, vergleicht die innerhalb der Taktgenerator- und Puffersteuerung 206 vorhandene Vergleichs- und Zeigerlogik 230 den Zeilenadreßteil der angeforderten Leseadresse mit der zwischengespeicherten Zeilenadresse, um zu bestimmen, ob sie gleich sind. Die Vergleichs- und Zeigerlogik 230 vergleicht auch den Zeilenadreßteil der angeforderten Leseadresse mit den Zeilenadreßteilen der abgeschickten Schreibbefehle, um zu bestimmen, ob die Zeilenadreßteile übereinstimmen. Die Ergebnisse der Vergleiche zwischen der Leseadresse, den abgeschickten Schreibadressen und der zwischengespeicherten Zeilenadresse bestimmen, welcher Zugriff auf die DRAMs 135 als der nächste Zugriff ausgewählt wird.
  • Die Auswahlen des nächsten DRAM-Zugriffs sind in einer Tabelle 300 in 9 für eine erste bevorzugte Ausführungsform der vorliegenden Erfindung dargestellt. Jede Zeile der Tabelle 300 hat drei Spalten, wobei die erste (äußerste linke), als ”LESEN” bezeichnete Spalte das Ergebnis des Vergleichs des Zeilenteils des angeforderten Lesezugriffs mit der zwischengespeicherten Zeilenadresse (also dem Zeilenteil des laufenden Zugriffs) ist, die zweite (mittlere), als ”SCHREIBEN” bezeichnete Spalte das Ergebnis des Vergleichs der Zeilenteile der abgeschickten Schreibbefehle mit der zwischengespeicherten Zeilenadresse und dem Zeilenteil des angeforderten Lesezugriffs ist und die dritte (äußerste rechte), als ”ZUGRIFF” bezeichnete Spalte die Anforderung angibt, die als der nächste Zugriff auf die DRAMs 135 angewendet wird.
  • Wie durch die erste Zeile 301 der Tabelle 300 dargestellt ist, wird der Lesezugriff dann, wenn der angeforderte Lesezugriff nicht mit dem laufenden Zugriff übereinstimmt und der Puffer für abgeschickte Schreibanforderungen leer ist, als der nächste Zugriff auf die DRAMs 135 angewendet, wobei das RAS*-Signal von der Taktgenerator- und Puffersteuerung 206 deaktiviert werden muß und das Vorladen der Zeilenadressen nach einer vorgegebenen Verzögerung erlauben muß, wobei der Zeilenadreßteil der Lesezugriffsanforderung auf die DRAMs angewendet wird, das RAS*-Signal aktiviert wird und der Zugriff wie zu vor beschrieben fortgesetzt wird. Es wird für diesen Zugriff kein besonderer Geschwindigkeitsvorteil gewährleistet.
  • Wie in der zweiten Zeile 302, der dritten Zeile 303 und der vierten Zeile 304 der Tabelle 300 dargestellt ist, hängt der als der nächste Zugriff gewählte Zugriff vom Zeileninhalt der abgeschickten Schreibanforderungen im Puffer 204 für abgeschickte Schreibanforderungen ab, wenn der angeforderte Lesezugriff nicht mit dem laufenden Zugriff übereinstimmt und der Puffer 204 für abgeschickte Schreibanforderungen nicht leer ist. Wie insbesondere in der vierten Zeile 304 dargestellt ist, kann die früheste abgeschickte Schreibanforderung mit dem entsprechenden Zeilenadreßteil als der nächste Zugriff gewählt werden, falls eine oder mehrere der abgeschickten Schreibanforderungen der aktuellen zwischengespeicherten Zeilenadresse entsprechende Zeilenadreßteile aufweisen, woraus sich der Vorteil ergibt, daß die Zeilenadresse nicht geändert werden muß und nur eine neue Spaltenadresse freigegeben werden muß, um den Zugriff auszuführen. Gemäß besonders bevorzugten Ausführungsformen stellt die Taktgenerator- und Puffersteuerung 206 zwei Betriebsmodi bereit, die über ein programmierbares Modusbit in einem Konfigurationsregister (nicht dargestellt) gewählt werden können. In einem hier beschriebenen ersten Modus haben abgeschickte Schreibanforderungen, die denselben Zeilenadreßteil wie die aktuelle zwischengespeicherte Zeilenadresse aufweisen, Priorität gegenüber Leseanforderungen, die einen anderen Zeilenadreßteil aufweisen. In einem zweiten Modus wird Lesezugriffen immer Priorität gegenüber abgeschickten Schreibanforderungen gegeben. Abhängig von der Mischung von Adressen setzen verschiedene Anwendungen das Modusbit derart, daß entweder der erste oder der zweite Modus gewählt wird, wobei dies davon abhängt, mit welchem Modus die optimale Gesamtausführzeit für eine bestimmte Anwendung erreicht wird. Es können an verschiedenen Anwendungen empirische Laufzeitprüfungen vorgenommen werden, um zu bestimmen, welcher Modus für bestimmte Anwendungen bevorzugt ist.
  • Falls keine abgeschickte Schreibanforderung einen mit der aktuellen zwischengespeicherten Zeilenadresse übereinstimmenden Zeilenadreßteil aufweist, wird der Zeilenadreßteil des angeforderten Lesezugriffs mit dem Zeilenadreßteil aller abgeschickten Schreibanforderungen verglichen. Falls der Zeilenadreßteil des angeforderten Lesezugriffs von den Zeilenadreßteilen aller abgeschickten Schreibanforderungen verschieden ist, was durch den Eintrag ”NEU (VERSCHIEDEN)” in der zweiten Zeile 302 der Tabelle 300 angegeben wird, wird der Lesezugriff als der nächste Zugriff gewählt. Falls andererseits der Zeilenadreßteil des angeforderten Lesezugriffs mit dem Zeilenadreßteil einer oder mehrerer abgeschickter Schreibanforderungen übereinstimmt, wird die früheste abgeschickte Schreibanforderung für den nächsten Zugriff verwendet. Diese Entscheidung wird getroffen, um zu gewährleisten, daß ein Lesezugriff auf eine soeben beschriebene Datenstelle, der immer noch im Puffer 204 für abgeschickte Schreibanforderungen vorhanden sein kann, die richtigen Daten empfängt. Wie vorstehend erörtert wurde, kann die Taktgenerator- und Puffersteuerung 204 eine Logik (nicht dargestellt) aufweisen, die im Puffer 204 für abgeschickte Schreibanforderungen abgeschickte Daten als Ausgabedaten zuführt, wenn die Leseanforderung auf eine Stelle gerichtet ist, die eine abgeschickte Schreibanforderung aufweist, die momentan im Puffer 204 für abgeschickte Schreibanforderungen gespeichert ist.
  • Wie in der fünften Zeile 305 und in der sechsten Zeile 306 der Tabelle 300 dargestellt ist, wird der Lesezugriff dann, wenn der Zeilenadreßteil der Lesezugriffsanforderung mit dem zwischengespeicherten Zeilenadreßteil übereinstimmt, als der nächste Zugriff ausgeführt, wenn der Puffer 204 für abgeschickte Schreibanforderungen leer ist (Zeile 305) oder der Puffer 204 für abgeschickte Schreibanforderungen nur abgeschickte Schreibanforderungen enthält, die vom aktuellen zwischengespeicherten Zeilenadreßteil verschiedene Zeilenadreßteile aufweisen. Daher wird ein Geschwindigkeitsvorteil dadurch erreicht, daß die Zeilenadresse zwischen Zugriffen nicht geändert werden muß.
  • Wie in der siebten Zeile 307 der Tabelle 300 dargestellt ist, wird dann, wenn der Zeilenadreßteil des angeforderten Lesezugriffs und der Zeilenadreßteil einer oder mehrerer abgeschickter Schreibanforderungen mit dem aktuellen zwischengespeicherten Zeilenadreßteil übereinstimmen, der früheste mit den abgeschickten Schreibanforderungen übereinstimmende Zugriff als der nächste Zugriff gewählt.
  • Der vorhergehende Prozeß wird am Ende jedes laufenden Zugriffs wiederholt, um zu bestimmen, welcher von dem angeforderten Lesezugriff und den abgeschickten Schreibanforderungen für den nächsten Zugriff gewählt wird. Es sei bemerkt, daß die Taktgenerator- und Puffersteuerung 206 eine Logik aufweist, um festzustellen, wenn der Puffer 204 für abgeschickte Schreibanforderungen voll wird, so daß eine oder mehrere der abgeschickten Schreibanforderungen unabhängig von den Ergebnissen der Vergleiche des Zeilenadreßteils des Lesezugriffs und des aktuellen zwischengespeicherten Zeilenadreßteils für den nächsten Zugriff auf die DRAMs 135 gewählt werden können.
  • Es ist anhand der vorhergehenden Beschreibung verständlich, daß die durch die Tabelle 301 dargestellte Ausführungsform eine restliche Lesewartezeit aufweist, wenn der Zeilenadreßteil des angeforderten Lesezugriffs und der Zeilenadreßteil einer oder mehrerer abgeschickter Schreibanforderungen übereinstimmen. Wenngleich der Lesezugriff auf die gleiche DRAM-Zeile erfolgen kann, besteht jedoch eine erhebliche Wahrscheinlichkeit, daß der Lesezugriff auf eine andere Spalte innerhalb der Zeile erfolgt. In einem solchen Fall ist es nicht erforderlich, die abgeschickten Schreibdaten in einer Spalte vor dem Lesen von Daten aus der anderen Spalte zu speichern. Falls daher der Vergleich zwischen der Lesezugriffsadresse und den abgeschickten Schreibadressen auf den Spaltenadreßteil erweitert wird, kann eine Anzahl von Konflikten vermieden werden, so daß der Lesezugriff vor den abgeschickten Schreibanforderungen ausgeführt werden kann. Durch Vergleich eines Bits des Spaltenadreßteils des angeforderten Lesezugriffs und der abgeschickten Schreibanforderungen kann beispielsweise die Wahrscheinlichkeit eines Konflikts innerhalb derselben Zeile auf etwa 50% verringert werden. Jedes zusätzliche verglichene Bit verringert weiter die Wahrscheinlichkeit eines Konflikts. Es muß jedoch ein Komparator für jedes zusätzliche Bit für jede der abgeschickten Schreibanforderungen bereitgestellt werden. Es kann ein Kompromiß zwischen der für die Vergleiche erforderlichen zusätzlichen Logik und der durch jedes zusätzliche Bit bereitgestellten wahrscheinlichen Verringerung der Lesewartezeit erreicht werden.
  • Eine Tabelle 310 in 10 zeigt die alternativen Auswahlen für den nächsten DRAM-Zugriff, wenn der Vergleich der Leseanforderung mit den abgeschickten Schreibanforderungen auf den Spaltenadreßteil erweitert wird, wie soeben erörtert wurde. Die Tabelle 310 ähnelt der Tabelle 300, wobei die Zeile 311 der Tabelle 310 der Zeile 301 der Tabelle 300 entspricht usw. Die Arbeitsweise der alternativen Ausführungsform hinsichtlich der Zeile 313, der Zeile 313 und der Zeile 317 ist jedoch verschieden, und es wurde eine neue Zeile 318 hinzugefügt.
  • In der zweiten Spalte der Zeile 312 und der Zeile 313 beziehen sich die Einträge ”NEU (VERSCHIEDEN)” und ”NEU (GLEICH)” nun auf den erweiterten Vergleich, wobei der Zeilenadreßteil des angeforderten Lesezugriffs und der Zeilenadreßteil jeder abgeschickten Schreibanforderung wie zuvor verglichen werden. Ein gewähltes Bit oder gewählte Bits der Spaltenadreßteile des angeforderten Lesezugriffs und der abgeschickten Schreibanforderungen werden jedoch auch verglichen. Demgemäß wird eine abgeschickte Schreibanforderung für eine neue Zeilenadresse über einen angeforderten Lesezugriff auf eine neue Zeilenadresse nur gewählt, falls die Zeilenadresse und das gewählte Bit oder die gewählten Bits der Spaltenadresse gleich sind. Andernfalls wird der angeforderte Lesezugriff als der nächste Zugriff gewählt.
  • Wenn der angeforderte Lesezugriff und eine oder mehrere abgeschickte Schreibanforderungen Zeilenadreßteile aufweisen, die mit dem zwischengespeicherten Zeilenadreßteil übereinstimmen, wird in Zeile 317 und Zeile 318 die Auswahl darüber, welcher Zugriff als der nächste Zugriff anzuwenden ist, durch einen weiteren Vergleich des oder der gewählten Spaltenbits bestimmt. Falls die Zeilenadreßteile gleich sind und das gewählte Spaltenbit oder die gewählten Spaltenbits verschieden sind, wird, wie in Zeile 317 dargestellt ist, der Lesezugriff in derselben DRAM-Zeile wie der laufende Zugriff als der nächste Zugriff gewählt, wodurch die Lesewartezeit verringert wird. Wie andererseits in Zeile 318 dargestellt ist, wird die früheste abgeschickte Schreibanforderung mit demselben Zeilenadreßteil und dem selben gewählten Bit oder denselben gewählten Bits wie der Spaltenadreßteil als der nächste Zugriff auf die DRAMs 135 angewendet, falls die Zeilenadreßteile gleich sind und das gewählte Bit oder die gewählten Bits der Spaltenadreßteile auch gleich sind.
  • Die Tabellen 300 und 310 zeigen die Auswahlen zwischen Lesezugriffen und Schreibzugriffen. Eine Tabelle 310 in 11 zeigt weitere Einzelheiten zu Auswahlen zwischen abgeschickten Schreibzugriffen in Übereinstimmung damit, ob irgendwelche der abgeschickten Schreibanforderungen auf dieselbe Zeile wie der laufende Zugriff gerichtet sind. Die Tabelle 310 weist vier Eintragszeilen 321, 322, 323 und 324 auf. Eine erste Spalte jeder der Zeilen 321324 gibt an, ob der Puffer für abgeschickte Schreibanforderungen mindestens einen abgeschickten Schreibzugriff enthält, der auf dieselbe Zeile wie der Zeilenadreßteil des laufenden Zugriffs (beispielsweise ein Seitentreffer) gerichtet ist. Eine zweite Spalte in jeder der Zeilen 321324 gibt an, ob der Puffer 204 für abgeschickte Schreibanforderungen mindestens einen abgeschickten Schreibzugriff enthält, der auf eine vom Zeilenadreßteil des laufenden Zugriffs (beispielsweise ein Seitenfehltreffer) verschiedene Zeile gerichtet ist. Eine dritte Spalte gibt an, welcher Schreibzugriff vom Puffer 204 für abgeschickte Schreibanforderungen als der nächste Schreibzugriff gewählt wird.
  • Wie in der ersten Zeile 321 dargestellt ist, wird kein Schreibzugriff ausgeführt, wenn keine abgeschickten Schreibanforderungen an die laufende Zeile oder an eine neue Zeile vorhanden sind. Wie in der zweiten Zeile 322 dargestellt ist, wird der nächste Schreibzugriff auf eine neue Zeile ausgeführt und die älteste abgeschickte Schreibanforderung für den nächsten Schreibzugriff ausgewählt, wenn abgeschickte Schreibanforderungen an eine oder mehrere neue Zeilen (beispielsweise Seitenfehltreffer) vorhanden sind, jedoch keine abgeschickten Schreibanforderungen für die laufende Zeile vorhanden sind. Wie in der dritten Zeile 323 dargestellt ist, erfolgt der nächste Schreibzugriff auf die laufende Zeile und wird die älteste abgeschickte Schreibanforderung an die laufende Zeile für den nächsten Zugriff gewählt, wenn mindestens eine abgeschickte Schreibanforderung für die laufende Zeile (beispielsweise ein Seitentreffer) vorhanden ist. Wie weiterhin in der vierten Zeile 324 dargestellt ist, wird selbst dann, wenn eine abgeschickte Schreibanforderung für eine neue Zeile vorhanden ist, die älter als die abgeschickten Schreibanforderungen für die laufende Zeile ist, den abgeschickten Schreibanforderungen für die laufende Zeile Priorität gegeben, und der nächste Schreibzugriff wird auf die laufende Zeile ausgeführt. Die älteste abgeschickte Schreibanforderung für die laufende Zeile wird für den nächsten Schreibzugriff ausgewählt.
  • Die Implementierung der Ausführungsformen aus den 811 bedarf eines nicht herkömmlichen Puffers 204 für abgeschickte Schreibanforderungen, weil die abgeschickten Schreibanforderungen nicht notwendigerweise in derselben Reihenfolge, in der sie im Puffer gespeichert werden, aus dem Puffer ausgegeben werden. Daher kann ein her kömmlicher First-In/First-Out-(FIFO)-Puffer nicht verwendet werden. Das Verfolgen der Stellen der aktiven abgeschickten Schreibanforderungen, wenn die abgeschickten Schreibanforderungen außerhalb der Reihenfolge entfernt werden können, und das Vergleichen der Zeilenadreßteile und der gewählten Bits der Spaltenadreßteile werden von der Vergleichs- und Zeigerlogik 230 in der Taktgenerator- und Puffersteuerung 206 ausgeführt. Die Vergleichs- und Zeigerlogik 230 ist in den 1216 in näheren Einzelheiten dargestellt.
  • 12 zeigt ein Gesamtblockdiagramm der Vergleichs- und Zeigersteuerlogik 230 und auch weitere Einzelheiten des Puffers 204 für abgeschickte Schreibanforderungen. Der Puffer 204 für abgeschickte Schreibanforderungen weist ein Pufferfeld 400 auf die mehrere Pufferstellen aufweist, die gemäß der bevorzugten Ausführungsform vier Stellen 401404 umfassen. Jede der Pufferstellen 401404 stellt einen Speicher für mehrere Datenbits (beispielsweise 32 Bits), mehrere Adreßbits (beispielsweise Adressen AD2–AD21) und ein Bereitschaftsbit (BEREIT-Bit) bereit. Der Puffer 204 für abgeschickte Schreibanforderungen ist vorzugsweise ein Dual-Port-Puffer, der unabhängige Adressierfähigkeiten für Datenschreibanforderungen und Datenleseanforderungen bereitstellt. Zusätzlich werden die im Schreibpuffer 204 enthaltenen Daten direkt der Vergleichs- und Zeigerlogik 230 als Ausgabedaten zugeführt, wie nachfolgend beschrieben wird. Beispielsweise weist der in 12 dargestellte Puffer 204 für abgeschickte Schreibanforderungen eine Lesewählschaltung 410 auf, die auf einen Ausgabezeiger von der Vergleichs- und Zeigerlogik 230 anspricht, um die Daten in einer der Pufferstellen 401404 als die Ausgabedaten aus dem Puffer 204 für abgeschickte Schreibanforderungen zu wählen. Die Lesewählschaltung 410 ist vorzugsweise beispielsweise ein 1-zu-4-Decodierer. Alternativ kann der Ausgabezeiger zum Adressieren eines Ausgabemultiplexers (nicht dargestellt) verwendet werden.
  • Der Puffer 204 für abgeschickte Schreibanforderungen weist auch eine Schreibwählschaltung 412 auf, die ansprechend auf einen Eingabezeiger und ein Pufferschreibsignal von der Vergleichs- und Zeigerlogik 230 ein Schreibsignal für eine ausgewählte der Pufferstellen 401404 erzeugt. Wenn das Pufferschreibsignal aktiviert wird, decodiert die Schreibwählschaltung 412 den Eingabepunkt und schreibt die Daten und Adreßinformationen sowie das Bereitschaftssignal am Eingang der Pufferschaltung 400 in die decodierte Pufferstelle 401404.
  • Wie in 12 dargestellt ist, ist der Adreßteil jeder Pufferstelle 401404 weiter in einen Zeilenteil (beispielsweise ZEILE0, ZEILE1, ZEILE2 bzw. ZEILE3) und einen Spaltenteil (SPALTE0, SPALTE1, SPALTE2 bzw. SPALTE3) eingeteilt. Die jeweiligen Bereitschaftsbits werden in ähnlicher Weise identifiziert (beispielsweise BEREIT0, BEREIT1, BEREIT2 bzw. BEREIT3).
  • Die Vergleichs- und Zeigersteuerlogik 230 weist einen Zeigersteuerlogikteil 420 und mehrere Komparatoren 430438 auf. Die Komparatoren 430433 sind Lesekomparatoren, die den Zeilenadreßteil und gewählte Bits des Spaltenadreßteils der Leseanforderung auf dem Systembus 125 mit den Adreßteilen und gewählten Bits des Spaltenteils jeder der abgeschickten Schreibanforderungen im Pufferfeld 400 vergleichen. Beispielsweise vergleicht der Komparator 430 den Zeilenadreßteil und den gewählten Spaltenadreßteil der Leseanforderung mit ZEILE0 und gewählten Bits von SPALTE0 von der Pufferstelle 401. Die Ausgabe des Komparators 430 ist ein Übereinstimmungssignal (ÜBEREINSTIMMUNG0), das angibt, daß die Leseanforderung auf dieselbe Zeilenadresse und möglicherweise dieselbe Spaltenadresse wie die an der Pufferstelle 401 gespeicherte abgeschickte Schreibanforderung gerichtet ist. (Falls der Komparator 430 so erweitert wird, daß er alle Spaltenbits umfaßt, kann er eine genaue Übereinstimmung bestimmen.) In gleicher Weise stellen die Komparatoren 431, 432 und 433 jeweilige ÜBEREINSTIMMUNG1-, ÜBEREINSTIMMUNG2- und ÜBEREINSTIMMUNG3-Ausgaben bereit, um Übereinstimmungen zwischen den abgeschickten Schreibanforderungen an den Stellen 402, 403 bzw. 404 anzugeben.
  • Der Komparator 434 empfängt den Zeilenadreßteil der aktuellen Leseanforderung und die zwischengespeicherte Zeilenadresse vom Zeilenadreß-Zwischenspeicher 220 (8). Der Komparator 434 gibt ein aktives LESETREFFER-Signal aus, wenn die zwei Zeilenadreßteile identisch sind, um anzugeben, daß die Lesezugriffsanforderung auf die momentan geöffnete Speicherseite (also die Zeile der DRAMs 135, auf die momentan zugegriffen wird) gerichtet ist.
  • Der Komparator 435 empfängt den Zeilenadreßteil (ZEILE0) von der Pufferstelle 401 und den zwischengespeicherten Zeilenadreßteil vom Zeilenadreß-Zwischenspeicher 220. Der Komparator 435 stellt eine aktive TREFFER0-Ausgabe bereit, wenn die zwei Zeilenadreßteile gleich sind. In ähnlicher Weise stellen die Komparatoren ansprechend auf einen Vergleich zwischen der zwischengespeicherten Zeilenadresse und den ZEILE1, ZEILE2 bzw. ZEILE3-Sigalen jeweilige TREFFER1-, TREFFER2- und TREFFER3-Ausgaben bereit. Gemäß alternativen Ausführungsformen können der ÜBEREINSTIMMUNG- und der TREFFER-Komparator zeitmultiplexert werden, um den Gesamtumfang der erforderlichen Hardware zu verringern.
  • Die Signale ÜBEREINSTIMMUNG0, ÜBEREINSTIMMUNG1, ÜBEREINSTIMMUNG2, ÜBEREINSTIMMUNG3, LESETREFFER, TREFFER0, TREFFER1, TREFFER2 und TREFFER3 werden zusammen mit den Signalen BEREIT0, BEREIT1, BEREIT2 und BEREIT3 als Eingaben der Zeigersteuerlogik 420 zugeführt. Die Bereitschaftssignale werden mit den Übereinstimmungssignalen und den Treffersignalen kombi niert, so daß die Zeigersteuerlogik 420 nur auf Treffer und Übereinstimmungen für abgeschickte Schreibanforderungen anspricht, die noch nicht in die DRAMs 135 geschrieben wurden. Demgemäß muß nach dem Speichern der einer abgeschickten Schreibanforderung zugeordneten Daten nur das jeweilige Bereitschaftssignal gelöscht werden, um die jeweiligen Treffer- und Übereinstimmungssignale zu sperren.
  • Die Zeigersteuerlogik erzeugt auf einer Leitung 450 ein Lesewähl-Ausgangssignal, um den Lese/Schreibadreßmultiplexer 210 zu steuern. Das Lesewahl-Ausgangssignal wird aktiviert, wenn ein Lesetreffer auftritt, und der Lesezugriff wird gemäß Tabelle 310 in 10 gewählt, wie vorstehend beschrieben wurde. Die detaillierten Logikdiagramme oder Logikgleichungen zum Erzeugen des Lesewahl-Ausgangssignals auf der Grundlage von Tabelle 310 werden hier nicht beschrieben, weil die Erstellung solcher Logikdiagramme oder Logikgleichungen dem Fachmann gut bekannt ist.
  • Wie vorstehend erörtert wurde, muß es zum Verringern der Wartezeit des Speicheruntersystems 120 gemäß der vorliegenden Erfindung möglich sein, Daten vom Puffer 204 für abgeschickte Schreibanforderungen in einer Reihenfolge zu den DRAMs 135 zu übertragen, die von der Reihenfolge, in der die Daten vom Systembus 125 empfangen werden, verschieden ist. Daher kann ein herkömmlicher FIFO-Puffer nicht verwendet werden. Weiterhin werden durch außerhalb der Reihenfolge erfolgendes Übertragen von Daten ”Lücken” im Puffer 204 für abgeschickte Schreibanforderungen belassen, die beim Wählen der nächsten abgeschickten Schreibanforderung zum Übertragen zu den DRAMs 135 berücksichtigt werden müssen. Wenn zwei oder mehr abgeschickte Schreibanforderungen auf dieselbe Speicherzeile gerichtet sind, ist es, wie vorstehend erörtert wurde, schließlich notwendig, die Daten in der Reihenfolge, in der sie empfangen werden, zu übertragen, um sicherzustellen, daß auf dieselbe Spalte gerichtete spätere Daten frühere Daten überschreiben und nicht umgekehrt.
  • 13 zeigt eine Funktionsdarstellung hoher Ebene des Puffers 204 für abgeschickte Schreibanforderungen, die beim Verstehen der Arbeitsweise der Zeigersteuerlogik 430 aus 12 helfen soll. Der Puffer 204 ist eine vier Einträge aufweisende Warteschlange, es kann gemäß der vorliegenden Erfindung jedoch auch leicht eine größere Warteschlange (also ein größerer Puffer) verwirklicht werden. Die Warteschlange 204 ähnelt in mancher Hinsicht einem FIFO-Puffer, sie erlaubt jedoch, daß die Einträge in beliebiger Reihenfolge, und nicht nur von den Enden der Warteschlange, eingefügt und entfernt werden. Die Warteschlange 204 verwendet auf feste Eintragspositionen innerhalb des Felds weisende Zeiger in einer Weise, die derjenigen eines Standard-FIFO-Puffers ähnelt. Im Gegensatz zu einem Standard-FIFO-Puffer verwendet die Warteschlange 204 jedoch keinen Füllzählwert, um zu verfolgen, welcher Eintrag zum Speichern verfügbar ist. Stattdessen wird ein Eingabebereitschaftsbit für jede Speicherstelle bereitgestellt (in 13 als BEREIT-Bits bezeichnet).
  • Zeiger in die Warteschlangenstruktur und die jeweiligen Eingabebereitschaftsbits für jede Position definieren den Zustand der Warteschlange. Ein Zeiger zeigt auf eine bestimmte Position, falls er die jeweilige Positionsnummer enthält, die in 13 links von jeder Position dargestellt ist. Es ist in 13 dargestellt, daß die Eintragspositionen 1 und 2 in die Warteschlange eingereihte Einträge (also abgeschickte Schreibanforderungen, die noch nicht zu den DRAMs 135 übertragen wurden) aufweisen und die Positionen 0 und 3 leer sind (alle zuvor an diesen Positionen vorhandenen abgeschickten Schreibanforderungen wurden also bereits zu den DRAMs übertragen). Demgemäß sind die Eingabebereitschaftsbits für die Positionen 1 und 2 gesetzt (haben also einen Wert von 1) und für die Positionen 0 und 3 gelöscht (haben also einen Wert von 0).
  • Ein Eingabezeiger weist auf den nächsten verfügbaren leeren Schlitz in der Warteschlange. Der Eintragszeiger ist gültig, falls das entsprechende Eingabebereitschaftsbit nicht gesetzt (also 0) ist. Falls das Eingabebereitschaftsbit andererseits gesetzt (also 1) ist, ist der Eingabezeiger ungültig, weil die Position bereits belegt ist.
  • Ein Ausgabezeiger weist auf den Warteschlangeneintrag, der gerade verarbeitet wird oder bald zu verarbeiten ist. Der Ausgabezeiger ist gültig, wenn das Eingabebereitschaftsbit an der entsprechenden Position gesetzt (also 1) ist, und er ist ungültig, wenn das Eingabebereitschaftsbit nicht gesetzt ist.
  • Der Basiseintragszeiger weist im allgemeinen auf den ältesten nicht verarbeiteten Eintrag innerhalb der Warteschlangenstruktur. Der Basiseintragszeiger wird nicht zum direkten Zugriff auf die Warteschlangenstruktur verwendet, sondern er wird zum Erzeugen des Eingabezeigers und des Ausgabezeigers verwendet, wie nachfolgend beschrieben wird.
  • Die hier beschriebenen Zeiger sind Zwei-Bit-Zeiger, die die vier Positionen der Warteschlange codieren. Falls zusätzliche Warteschlangenpositionen bereitgestellt sind, sind auch zusätzliche Bits in den Zeigern erforderlich.
  • Wenn die Warteschlange 204 leer ist, sind alle Eingabebereitschaftsbits inaktiv, und der Eingabezeiger, der Ausgabezeiger und der Basiseintragszeiger weisen alle auf die gleiche Position in der Warteschlange.
  • Wenn die Warteschlange 204 Einträge in der Reihenfolge verarbeitet, in der sie empfangen werden, funktioniert die Warteschlange als ein herkömmlicher Zeiger-basierter FIFO-Puffer, wobei der Basiseintragszeiger und der Ausgabezeiger stets auf dieselbe Position zeigen. Mit anderen Worten ist die nächste zu den DRAMs 135 zu übertragende abgeschickte Schreibanforderung der älteste durch den Basiseintragszeiger angegebene Eintrag. Ein neuer Eintrag kann in die Warteschlange eingereiht werden, falls der Eingabezeiger auf eine Stelle zeigt, die ein inaktives Eingabebereitschaftsbit aufweist. Falls sich der Eingabezeiger so entwickelt hat, daß er auf dieselbe Position wie der Basiseintragszeiger zeigt, können keine weiteren Einträge angenommen werden. Bei jeder Speicherung eines neuen Eintrags in der Warteschlange wird das Eingabebereitschaftsbit der Position, an der der Eintrag gespeichert wird, gesetzt, und der Eingabezeiger wird zur nächst höheren Speicherpositionsnummer verschoben. Die Zeiger werden modulo 4 gezählt, so daß beim Erhöhen eines Zeigers von einem Wert 3 (also dem Binärwert 11) der nächste Wert 0 (also der Binärwert 00) ist. Mit anderen Worten wechselt der Zeiger zyklisch von 3 auf 0.
  • Einträge werden an der durch den Ausgabezeiger angegebenen Position aus der Warteschlange entfernt. Nach dem Entfernen eines Eintrags wird das Eingabebereitschaftsbit zurückgesetzt, und der Basiseintragszeiger und der Ausgabezeiger werden beide erhöht und ändern sich auf 0, falls der entfernte Eintrag an der Stelle 3 lag.
  • Wenn ein Eintrag in einer von der Eingabereihenfolge verschiedenen Reihenfolge aus der Warteschlange entfernt wird, werden in der Warteschlange Lücken gebildet. Die Eingabebereitschaftsbits definieren, wo sich die Lücken befinden. Die Warteschlange wird durch Setzen aller Eingabebereitschaftsbits in einen inaktiven Zustand initialisiert. Auf die Eingabebereitschaftsbits wird als ein Feld (Eingabebereitschaftsfeld) zugegriffen, wobei die Bitnummer innerhalb des Felds der Positionsnummer eines Eintrags in der Warteschlangenstruktur gleicht. Warteschlangeneinträge können der Warteschlange hinzugefügt oder aus dieser gelöscht werden, indem die jeweiligen Eingabebereitschaftsbits gesetzt oder gelöscht werden.
  • Um zu ermöglichen, daß die Einträge in einer anderen Reihenfolge aus der Warteschlange entfernt werden als derjenigen, in der sie gespeichert wurden, wird erlaubt, daß sich der Ausgabezeiger unabhängig vom Basiseintragszeiger bewegt. Die durch den Ausgabezeiger angegebene Positionsnummer wird auf der Grundlage einer für die Warteschlange definierten Prioritätsplanungsfunktion gewählt. Die Prioritätsplanungsfunktion wird für die bestimmte Anwendung gewählt, für die die Warteschlange bestimmt ist. Die Prioritätsplanungsfunktion des Ausgabezeigers für die vorliegende Erfindung wird hier beschrieben.
  • Die Zeigersteuerlogik 230 ist eine Zustandsmaschine, die den nächsten Zustand der Warteschlange 204 (also den nächsten Eingabezeiger, den nächsten Ausgabezeiger und den nächsten Basiszeiger) bestimmt. Der nächste Zustand der Warteschlange 204 ist eine Funktion des aktuellen Basiseintragszeigers und der aktuellen Eingabebereitschaftsbits, und er ist auch eine Funktion der Prioritätsplanungshardware, die im Fall der vorliegenden Erfindung die Ausgaben der Trefferkomparatoren umfaßt.
  • Der Basiseintragszeiger ändert sich nur, wenn der Ausgabezeiger auf dieselbe Position wie der Basiseintragszeiger zeigt, und der Eintrag an dieser Position wird durch Über tragen der Daten zu den DRAMs 135 entfernt. Falls der Eintrag an der nächsten Warteschlangenposition bereits entfernt wurde, muß die Logik diese ”Lücke” überspringen. Wie insbesondere in 14 dargestellt ist, wird das Eingabebereitschaftsfeld (BEREIT2, BEREIT2, BEREIT1, BEREIT0 aus dem Pufferfeld 400) auf die Eingänge einer zyklischen Vier-Bit-Verschiebeeinrichtung 500 angewendet, die vom Zwei-Bit-Wert (B1, B0) des aktuellen Basiseintragszeigers 502 gesteuert wird. Die Eingaben in die zyklische Verschiebeeinrichtung werden kreisförmig um einen Betrag, der dem Wert des aktuellen Basiseintragszeigers gleicht, nach rechts verschoben (also nach rechts rotiert). Falls der aktuelle Basiseintragszeiger beispielsweise einen Wert von 2 hat, verschiebt sich das Eingabebereitschaftsfeld um zwei Stellen nach rechts, wobei die zwei niedrigstwertigen Bits der Eingaben in die zyklische Verschiebeeinrichtung 500 zu den zwei höchstwertigen Bits der Ausgabe der zyklischen Verschiebeeinrichtung 502 werden. Ein Prioritätscodierer 504 wählt die Bitnummer des ersten in der rotierten Ausgabe gefundenen aktiven Eingabebereitschaftsbits. Diese Bitnummer wird dann in einem Moduln-4-Addierer 506 zum aktuellen Basiseintragszeiger addiert, um den nächsten Basiseintragszeiger 508 zu erhalten. Der nächste Basiszeiger wird zum aktuellen Basiszeiger, wenn die nächsten Daten in die DRAMs 135 geschrieben werden, wie durch das Schreibsignaltakten des aktuellen Basiseintragszeigers dargestellt ist.
  • Das vorhergehend Beschriebene kann anhand des folgenden Beispiels verstanden werden, bei dem der aktuelle Basiseintragszeiger 1 ist und das Eingabebereitschaftsfeld 1011 ist (d. h., BEREIT3 = 1, BEREIT2 = 0, BEREIT1 = 1 und BEREIT0 = 1). Demgemäß existieren Einträge an den Positionen 3, 1 und 0 und existiert eine Lücke an der Position 2. Durch Entfernen des Eintrags an der Position 1 wird das Eingabebereitschaftsfeld zu 1001 geändert. Wenn um ein Bit nach rechts rotiert wird (der Wert des aktuellen Basiseintragszeigers), liegt die Ausgabe der zyklischen Verschiebeeinrichtung 500 bei 1100. Der erste aktive Eintrag von rechts ist das Bit 2. Aus dem Addieren von 2 zu 1 (modulo 4) ergibt sich ein Wert von 3 für den neuen Basiseintragszeiger, wodurch die Lücke übersprungen wird.
  • Wie in 15 dargestellt ist, können eine oder mehrere Prioritätsplanungsfunktionen zum Einstufen des Eingabebereitschaftsfelds für die nächste zu verarbeitende Aufgabe verwendet werden. Der Ausgabezeiger wird durch UND-Verknüpfen des Eingabebereitschaftsfelds mit einer Prioritätseinstufungsmaske, die gemäß der vorliegenden Erfindung die Trefferbits (TREFFER3, TREFFER2, TREFFER1, TREFFER0 von den Komparatoren 435438 in 120) aufweist, in mehreren UND-Gliedern 521524 gebildet, wie in 15 dargestellt ist. Die maskierten Ausgaben der UND-Glieder 521524 werden als jeweilige erste Eingaben entsprechenden Zwei-zu-Eins-(2:1)-Multiplexern (MUX) 525528 zugeführt. Die jeweiligen zweiten Eingaben in die 2:1-Multiplexer 525528 werden verbunden, um die jeweiligen Bereitschaftsbits (BEREIT3, BEREIT2, BEREIT1, BEREIT0) zu empfangen. Die maskierten Ausgaben der UND-Glieder 521524 werden auch als Eingaben einem vier Eingänge aufweisenden ODER-Glieder 529 zugeführt, das eine aktive EINGABE_BEREIT- und SEITENTREFFER-Ausgabe jedesmal dann liefert, wenn eine oder mehrere der maskierten Ausgaben der UND-Glieder 521524 aktiv sind. Mit anderen Worten liefert das ODER-Glied 529 jedesmal dann eine aktive EINGABE_BEREIT- und SEITENTREFFER-Ausgabe, wenn mindestens einer der aktiven abgeschickten Schreibeinträge auf die Zeile gerichtet ist, auf die momentan zugegriffen wird, was dadurch angegeben wird, daß ihr Bereitschaftsbit und ihr entsprechendes Trefferbit beide aktiv sind. Die EINGABE_BEREIT- und SEITENTREFFER-Ausgabe des ODER-Gliedes 529 wird jedem der 2:1-Multiplexer 525528 als die Wähleingabe zugeführt. Wenn die Wähleingabe aktiv ist, werden die maskierten Ausgaben der UND-Glieder 521524 als die Ausgaben der Multiplexer gewählt. Demgemäß haben nur die Multiplexer eine aktive Ausgabe, die Einträgen entsprechen, welche sowohl ein aktives Eintragsbit als auch ein aktives Trefferbit aufweisen. Daher beruht die nachfolgend beschriebene Erzeugung der Ausgabezeigers nur auf Seitentreffer (also Zeilentreffer) aufweisenden Einträgen, und es wird der älteste aktive Eintrag mit einem Seitentreffer ausgewählt. Falls andererseits keiner der aktiven Einträge ein aktives Trefferbit hat, ist die Ausgabe des ODER-Gliedes 529 inaktiv, um zu bewirken, daß die 2:1-Multiplexer 525528 die unmaskierten Bereitschaftsbits wählen. Demgemäß wird der Ausgabezeiger auf der Grundlage aller aktiven Einträge erzeugt, und es wird der älteste aktive Eintrag ausgewählt.
  • Die Ausgaben der 2:1-Multiplexer 525528 werden als die Eingaben einer zyklischen Verschiebeeinrichtung 530 zugeführt. Die zyklische Verschiebeeinrichtung 530 arbeitet ansprechend auf den aktuellen Basiseintragszeiger in einer der in 14 dargestellten zyklischen Verschiebeeinrichtung 500 ähnlichen Weise. Die verschobenen Ausgaben von der zyklischen Verschiebeeinrichtung 530 werden einem Prioritätscodierer 532 als Eingaben zugeführt, der die Bitnummer des ersten Eingabebereitschaftsbits von der rechten Seite der rotierten Ausgabe wählt. Diese Bitnummer wird dann in einem Moduln-4-Addierer 534 zum Basiseintragszeiger addiert, um den neuen Ausgabezeiger (als ein Block 526 dargestellt) zu erzeugen.
  • Das vorhergehend Beschriebene kann durch das folgende Beispiel veranschaulicht werden, bei dem der Basiseintragszeiger 3 ist, das Eingabebereitschaftsfeld 1101 ist und die Prioritätseinstufungsmaske (also die Trefferbits) 0111 ist, um anzugeben, daß nur die Zeilenadreßteile an den Positionen 2, 1 und 0 mit dem zwischengespeicherten Zeilenadreßteil übereinstimmen und somit eine höhere Priorität als der Eintrag an der Position 3 haben, der mit dem aktuellen Zeilenadreßteil nicht übereinstimmt. Aus der UND-Verknüpfung der Ein gabebereitschaftsbits mit den Trefferbits (also 1101 UND 0111) ergibt sich eine Eingabe 0101 in die zyklische Verschiebeeinrichtung. Das Rotieren der Eingabe der zyklischen Verschiebeeinrichtung um 3 führt zu einer Ausgabe der zyklischen Verschiebeeinrichtung von 1010. Die Bitnummer des ersten aktiven Bits von rechts ist 1. Das Addieren dieses Bits zum Basiseintragszeiger (modulo 4) ergibt einen Wert von 0 (1 + 3 = 4 (modulo 4) = 0). Somit ist bei diesem Beispiel der neue Ausgabezeiger 0, und er weist auf die Stelle der ”ältesten1 abgeschickten Schreibanforderung, die den gleichen Zeilenadreßteil wie die aktuelle zwischengespeicherte Zeilenadresse aufweist, wodurch eine ältere abgeschickte Schreibanforderung übersprungen wird, die nicht den gleichen Zeilenadreßteil wie die aktuelle zwischengespeicherte Zeilenadresse aufweist.
  • Es sei bemerkt, daß der vorhergehend beschriebene Prozeß in der gleichen Weise abläuft, falls keine Seitentreffer auftreten, wobei alle aktiven Einträge jedoch über die Multiplexer 525528 der zyklischen Verschiebeeinrichtung als Eingaben zugeführt werden, und der Ausgabezeiger weist demgemäß unabhängig von ihrer Zeilenadresse auf die älteste abgeschickte Schreibanforderung.
  • Wie in 16 dargestellt ist, wird der nächste Eingabezeiger erzeugt, indem das Eingabebereitschaftsfeld um den Wert des Basiseintragszeigers in einer zyklischen Verschiebeeinrichtung 550 nach rechts rotiert wird. Die nach rechts verschobenen Ausgaben werden als Eingaben einem Prioritätscodierer 552 zugeführt, der in diesem bestimmten Fall das äußerste linke (d. h. die höchste Priorität aufweisende) aktive Bit auswählt und einen die Position des ausgewählten Bits darstellenden Ausgabewert erzeugt. Die Ausgabe des Prioritätscodierers 552 wird in einem Moduln-4-Addierer 554 zu einem Wert 1 addiert, und die sich ergebende Summe wird in einem Moduln-4-Addierer 556 zum Wert des aktuellen Basiseintragszeigers addiert. Die Ausgabe des Moduln-4-Addierers 556 ist der neue Eingabezeiger, wie durch einen Block 558 dargestellt ist.
  • Das vorhergehend Beschriebene kann durch das folgende Beispiel veranschaulicht werden, bei dem der Basiseintragszeiger 1 ist und das Eingabebereitschaftsfeld 1010 ist. Durch Rotieren des Eingabebereitschaftsfelds um Eins nach rechts wird eine Ausgabe von 0101 von der zyklischen Verschiebeeinrichtung 550 erzeugt. Der Prioritätscodierer 552 erzeugt eine Ausgabe von 2, um das äußerste linke aktive Bit an der Position 2 darzustellen. Das Addieren des Werts 2 zu einem Wert 1 ergibt eine Summe von 3, die beim Addieren zum Wert des Basiseintragszeigers (also 1 in diesem Beispiel) eine Summe von 4 (modulo 4) ergibt, was einen Endwert von 0 ergibt. Demgemäß wird der nächste Eingabeeintrag an die Position 0 gegeben, wobei die Lücke an der Position 2 übersprungen wird.
  • Die in Zusammenhang mit den 14, 15 und 16 beschriebene Warteschlangensteuerlogik wird vorzugsweise in einer ASIC implementiert, um die Struktur der Zeigersteuerlogik 420 aus 12 zu bilden.
  • Wenngleich sie vorstehend in Zusammenhang mit der vorliegenden Erfindung für einen Puffer für abgeschickte Schreibanforderungen beschrieben wurde, sei bemerkt, daß die hier beschriebene Warteschlangensteuerlogik auch in anderen Anwendungen verwendet werden kann.
  • Wenngleich sie vorstehend in Zusammenhang mit bestimmten Ausführungsformen der vorliegenden Erfindung beschrieben wurden, sollten die Beschreibungen der Ausführungsformen der Erfindung lediglich als erläuternd und nicht als einschränkend angesehen werden. Dem Fachmann werden verschiedene Modifikationen und Anwendungen einfallen, die nicht vom in den anliegenden Ansprüchen definierten Schutzumfang der Erfindung abweichen.

Claims (8)

  1. Speichersteuerung (130) zur Steuerung eines seitenorganisierten Speichersystems (120) mit einer Pufferschaltung (204), die es gestattet, daß Schreibzugriffsdaten in sequentieller Folge empfangen und an mehreren Stellen in der Pufferschaltung gespeichert werden, wobei die Schreibzugriffsdaten Speicherstellen in dem seitenorganisierten Speichersystem identifizierende Adressen enthalten, und wobei die Pufferschaltung einen die nächste leere Stelle der Pufferschaltung zur Aufnahme der nächsten Dateneingabe identifizierenden Eingabezeiger und einen die nächste volle Stelle der Pufferschaltung als Quelle für die nächste Ausgabe identifizierenden Ausgabezeiger aufweist, wobei die Speichersteuerung (130) dadurch gekennzeichnet ist, daß die Pufferschaltung eine Zugriffssteuerschaltung (230) aufweist, die es gestattet, daß die Schreibzugriffsdaten von der Pufferschaltung nicht-sequentiell ausgegeben werden, wobei die Zugriffssteuerschaltung den Eingabezeiger und den Ausgabezeiger unabhängig steuert, wobei die Zugriffssteuerschaltung entsprechend dem Ergebnis einer Identifizierung, ob Seitenadreßteile der Adressen der Schreibzugriffsdaten identisch sind mit einem Seitenadreßteil einer Speicherstelle in dem seitenorganisierten Speichersystem, auf die gerade zugegriffen wird, aus mehreren vollen Pufferschaltungsstellen eine identifizierte volle Stelle als Quelle für die nächste Ausgabe wählt, bevor eine nicht identifizierte volle Pufferstelle mit einem Seitenadreßteil gewählt wird, der von dem Seitenadreßteil der Speicherstelle, auf die gerade zugegriffen wird, verschieden ist, selbst wenn die Schreibzugriffsdaten für die nicht-identifizierte volle Pufferschaltungsstelle vor den Schreibzugriffsdaten für die gewählte identifizierte volle Pufferschaltungsstelle von der Pufferschaltung empfangen wurden.
  2. Speichersteuerung nach Anspruch 1, wobei das seitenorganisierte Speichersystem (120) einen dynamischen Random-Access-Speicher (DRAM) (135) aufweist, der in mehreren Zeilen und mehreren Spalten organisiert ist, wobei jede Zeile eine Seite des seitenorganisierten Speichersystems ist.
  3. Speichersteuerung nach Anspruch 2, wobei die Speicherstellen in dem seitenorganisierten Speichersystem (120) identifizierenden Adressen einen eine Zeile in dem DRAM (135) identifizierenden Zeilenadreßteil und einen eine Spalte in dem DRAM (135) identifizierenden Spaltenadreßteil enthält, und wobei die Zugriffssteuerschaltung (230) gekennzeichnet ist durch einen Komparator (430438), der den Zeilenadreßteil jeder Adresse in der Pufferschaltung (204) mit dem Zeilenadreßteil eines laufenden Zugriffs vergleicht und Schreibzu griffsanforderungen mit jeweiligen Zeilenadreßteilen identifiziert, die mit dem Zeilenadreßteil des gegenwärtigen Zugriffs identisch sind, und eine auf den Komparator ansprechende Zugriffswählschaltung (420), die eine der identifizierten Schreibzugriffsanforderungen als nächste Adresse für den DRAM wählt, bevor eine nicht-identifizierte Schreibzugriffsanforderung mit einem Zeilenadreßteil gewählt wird, der von dem Zeilenadreßteil des gegenwärtigen Zugriffs verschieden ist, wobei die Wahl der einen identifizierten Schreibzugriffsanforderung auch dann erfolgt, wenn die nicht-identifizierte Schreibzugriffsanforderung vor der identifizierten Schreibzugriffsanforderung erfolgte.
  4. Speichersteuerung (130) nach Anspruch 3, wobei die Speichersteuerung eine Lesezugriffsanforderung mit einer Leseadresse empfängt, die einen Zeilenadreßteil und einen Spaltenadreßteil aufweist, der Komparator (430438) den Zeilenadreßteil der Leseadresse vergleicht und identifiziert, ob der Zeilenadreßteil der Leseadresse auf den Zeilenadreßteil des gegenwärtigen Zugriffs gerichtet ist, und die Zugriffswählschaltung (420) die Lesezugriffsanforderung für den nächsten Zugriff wählt, bevor die nicht-identifizierte Schreibzugriffsanforderung für den nächsten Zugriff gewählt wird.
  5. Speichersteuerung (130) nach Anspruch 4, wobei der Komparator (430438) eine Logikstufe aufweist, die mindestens einen Teil des Spaltenadreßteils der Leseadresse mit einem entsprechenden Teil des Spaltenadreßteils mehrerer Schreibadressen in dem Puffer vergleicht, und die Zugriffswählschaltung (420) die Lesezugriffsanforderung vor jeder Schreibzugriffsanforderung wählt, wenn der Zeilenadreßteil der Leseadresse mit dem Zeilenadreßteil des gegenwärtigen Zugriffs übereinstimmt und der Teil des Spaltenadreßteils der Leseadresse von den entsprechenden Teilen der Spaltenadreßteile der identifizierten Schreibzugriffsanforderungen verschieden ist.
  6. Verfahren zum Wählen der nächsten Adresse in einem dynamischen Random-Access-Speichersystem (DRAM-System) (120) mit an das DRAM-System abgeschickten Schreibanforderungen, wobei Zugriff auf das DRAM-System dadurch erfolgt, daß ihm eine Zeilenadresse und dann eine Spaltenadresse zugeführt werden, wobei das DRAM-System Zugriff zu mehreren Speicherstellen mit gleicher Zeilenadresse dadurch gewährt, daß zwischen den Zugriffen nur die Spaltenadresse geändert wird, wobei die abgeschickten Schreibanforderungen in einer Pufferschaltung (204) gespeichert werden, bis Daten der abgeschickten Schreibanforderungen in das DRAM-System geschrieben werden, wobei mindestens eine der abgeschickten, in der Pufferschaltung gespeicherten Schreibanforderungen eine Adresse aufweist, die auf eine Speicherstelle mit einer Zeilenadresse gerichtet ist, die mit einer Zeilenadresse eines gegenwärtigen Zugriffs auf das DRAM-System identisch ist, und mindestens eine der abgeschickten, in der Pufferschaltung gespeicherten Schreibanforderungen eine Adresse aufweist, die auf eine Speicherstelle mit einer Zeilenadresse gerichtet ist, die von der Zeilenadresse des gegenwärtigen Zugriffs verschieden ist, wobei das Verfahren dadurch gekennzeichnet ist, daß für den nächsten Zugriff der früheste empfangene Schreibzugriff mit identischer Zeilenadresse gewählt wird, bevor ein Schreibzugriff mit einer unterschiedlichen Zeilenadresse gewählt wird, und daß dann, wenn kein Schreibzugriff eine identische Zeilenadresse aufweist, für den nächsten Zugriff der früheste Schreibzugriff mit einer unterschiedlichen Zeilenadresse gewählt wird.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß für jede von mehreren Schreibzugriffsanforderungen eine Adresse und zugehörige Daten in der Pufferschaltung (204) gespeichert werden, wobei jede Adresse der mehreren Schreibzugriffsanforderungen einen Zeilenadreßteil und einen Spaltenadreßteil aufweist, und wobei die jeweilige Adresse und die zugehörigen Daten in der Pufferschaltung in einer Reihenfolge gespeichert werden, in der die Schreibzugriffsanforderungen von der Pufferschaltung empfangen werden, daß der erste Zugriff auf das DRAM-System an einer ersten Zeilenadresse und einer ersten Spaltenadresse erfolgt, daß der erste Zeilenadreßteil mit dem Zeilenadreßteil jeder in der Pufferschaltung gespeicherten Schreibzugriffsanforderung verglichen wird, daß dann, wenn mindestens eine Schreibzugriffsanforderung in der Pufferschaltung einen dem Zeilenadreßteil des ersten Zugriffs identischen Zeilenadreßteil aufweist, als zweite Adresse für das DRAM-System (120) die früheste empfangene Schreibzugriffsanforderung der mindestens einen Zugriffsanforderung mit einem mit dem Zeilenadreßteil des ersten Zugriffs identischen Zeilenadreßteil gewählt wird, wobei die mindestens eine Zugriffsanforderung mit identischem Zeilenadreßteil vor früheren Zugriffsanforderungen mit nicht-identischen Zeilenadreßteilen gewählt wird, und daß dann, wenn keine Zugriffsanforderung in der Pufferschaltung einen mit dem Zeilenadreßteil des ersten Zugriffs identischen Zeilenadreßteil aufweist, die in der Puffer schaltung am frühesten empfangene Schreibzugriffsanforderung für den zweiten Zugriff gewählt wird.
  8. Verfahren nach Anspruch 7, wobei ein Zeilenadreßteil und mindestens ein Bit eines Spaltenadreßteils einer Lesezugriffsanforderung mit Zeilenadreßteilen und einem entsprechenden Bit von Spaltenadreßteilen der mehreren Schreibzugriffsanforderungen in der Pufferschaltung (204) verglichen werden, und dann, wenn der Zeilenadreßteil des Lesezugriffs mit einem Zeilenadreßteil mindestens einer der Schreibzugriffsanforderungen identisch ist: der Lesezugriff vor den Schreibzugriffen mit identischem Zeilenadreßteil durchgeführt wird, wenn die entsprechenden Bits der Spaltenadreßteile verschieden sind, und ein Schreibzugriff vor dem Lesezugriff durchgeführt wird, wenn das mindestens eine Bit des Spaltenadreßteils des Lesezugriffs mit dem mindestens einen Bit des Spaltenadreßteils eines der Schreibzugriffe identisch ist.
DE69625486T 1995-03-31 1996-03-22 Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen Expired - Lifetime DE69625486T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US415038 1995-03-31
US414948 1995-03-31
US08/414,948 US5666494A (en) 1995-03-31 1995-03-31 Queue management mechanism which allows entries to be processed in any order
US08/415,038 US5638534A (en) 1995-03-31 1995-03-31 Memory controller which executes read and write commands out of order
PCT/US1996/003877 WO1996030838A1 (en) 1995-03-31 1996-03-22 Memory controller which executes read and write commands out of order

Publications (2)

Publication Number Publication Date
DE69625486D1 DE69625486D1 (de) 2003-01-30
DE69625486T2 true DE69625486T2 (de) 2009-09-17

Family

ID=27022792

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69625486T Expired - Lifetime DE69625486T2 (de) 1995-03-31 1996-03-22 Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen

Country Status (10)

Country Link
EP (1) EP0838057B1 (de)
JP (1) JPH0955081A (de)
KR (1) KR100295187B1 (de)
CN (1) CN1088215C (de)
AU (1) AU693668B2 (de)
DE (1) DE69625486T2 (de)
RU (1) RU2157562C2 (de)
SG (1) SG73403A1 (de)
TW (1) TW388982B (de)
WO (1) WO1996030838A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748539A (en) * 1997-03-05 1998-05-05 Sun Microsystems, Inc. Recursive multi-channel interface
US6145065A (en) * 1997-05-02 2000-11-07 Matsushita Electric Industrial Co., Ltd. Memory access buffer and reordering apparatus using priorities
GB9719047D0 (en) * 1997-09-08 1997-11-12 Sgs Thomson Microelectronics Arbitration system
WO1999019805A1 (en) * 1997-10-10 1999-04-22 Rambus Incorporated Method and apparatus for two step memory write operations
US6401167B1 (en) 1997-10-10 2002-06-04 Rambus Incorporated High performance cost optimized memory
US6038646A (en) * 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
EP1026595B1 (de) * 1999-01-11 2008-07-23 STMicroelectronics Limited Speicherschnittstellenvorrichtung und Verfahren zum Speicherzugriff
GB2348717B (en) 1999-01-11 2003-08-06 Sgs Thomson Microelectronics Data flow control circuitry
KR100287188B1 (ko) * 1999-04-06 2001-04-16 윤종용 데이터 처리속도 및 데이터 입출력핀의 효율을 향상시킬 수 있는 반도체 메모리장치 및 이의 독출기입 제어방법
EA001895B1 (ru) * 2001-02-15 2001-10-22 Лев Лазаревич Матвеев Способ получения, обработки и хранения ссылок на информационные источники, списков ссылок и полных копий информационных источников
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7469316B2 (en) 2003-02-10 2008-12-23 Intel Corporation Buffered writes and memory page control
AU2003900733A0 (en) * 2003-02-19 2003-03-06 Canon Kabushiki Kaisha Dynamic Reordering of Memory Requests
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US7076611B2 (en) * 2003-08-01 2006-07-11 Microsoft Corporation System and method for managing objects stored in a cache
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
US20060112240A1 (en) * 2004-11-24 2006-05-25 Walker Robert M Priority scheme for executing commands in memories
US20070005868A1 (en) * 2005-06-30 2007-01-04 Osborne Randy B Method, apparatus and system for posted write buffer for memory with unidirectional full duplex interface
US9262326B2 (en) 2006-08-14 2016-02-16 Qualcomm Incorporated Method and apparatus to enable the cooperative signaling of a shared bus interrupt in a multi-rank memory subsystem
CN101299326B (zh) * 2007-05-14 2010-05-26 深圳艾科创新微电子有限公司 一种图形显示系统中变长显存预读系统及方法
US7890668B2 (en) * 2008-02-14 2011-02-15 International Business Machines Corporation Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous
US7848144B2 (en) * 2008-06-16 2010-12-07 Sandisk Corporation Reverse order page writing in flash memories
US20140219021A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Data protection for unexpected power loss
CN102945213B (zh) * 2012-09-24 2016-08-10 无锡众志和达数据计算股份有限公司 一种基于fpga的乱序内存控制器及其实现方法
US9021228B2 (en) 2013-02-01 2015-04-28 International Business Machines Corporation Managing out-of-order memory command execution from multiple queues while maintaining data coherency
CN113672529A (zh) * 2020-05-15 2021-11-19 恩智浦美国有限公司 用于直接存储器访问的系统和方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5727477A (en) * 1980-07-23 1982-02-13 Nec Corp Memory circuit
JPS59136859A (ja) * 1983-01-27 1984-08-06 Nec Corp バツフア制御装置
JP2714944B2 (ja) * 1987-08-05 1998-02-16 三菱電機株式会社 半導体記憶装置
US5335336A (en) * 1988-03-28 1994-08-02 Hitachi, Ltd. Memory device having refresh mode returning previous page address for resumed page mode
US5034917A (en) * 1988-05-26 1991-07-23 Bland Patrick M Computer system including a page mode memory with decreased access time and method of operation thereof
JP3255908B2 (ja) * 1988-06-30 2002-02-12 エルジー・セミコン・カンパニー・リミテッド メモリー制御ユニット
US5022004A (en) * 1988-10-28 1991-06-04 Apollo Computer, Inc. Method and apparatus for DRAM memory performance enhancement
US5072420A (en) * 1989-03-16 1991-12-10 Western Digital Corporation FIFO control architecture and method for buffer memory access arbitration
US5206834A (en) * 1989-10-14 1993-04-27 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device performing last in-first out operation and the method for controlling the same
JP2777247B2 (ja) * 1990-01-16 1998-07-16 三菱電機株式会社 半導体記憶装置およびキャッシュシステム
US5278967A (en) * 1990-08-31 1994-01-11 International Business Machines Corporation System for providing gapless data transfer from page-mode dynamic random access memories
US5325499A (en) * 1990-09-28 1994-06-28 Tandon Corporation Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory
US5265236A (en) * 1990-11-29 1993-11-23 Sun Microsystems, Inc. Method and apparatus for increasing the speed of memory access in a virtual memory system having fast page mode
US5247643A (en) * 1991-01-08 1993-09-21 Ast Research, Inc. Memory control circuit for optimizing copy back/line fill operation in a copy back cache system
US5485589A (en) * 1991-12-31 1996-01-16 Dell Usa, L.P. Predictive addressing architecture
US5247355A (en) * 1992-06-11 1993-09-21 Northwest Starscan Limited Partnership Gridlocked method and system for video motion compensation
US5388247A (en) * 1993-05-14 1995-02-07 Digital Equipment Corporation History buffer control to reduce unnecessary allocations in a memory stream buffer
US5524220A (en) * 1994-08-31 1996-06-04 Vlsi Technology, Inc. Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems
US5487049A (en) * 1994-11-23 1996-01-23 Samsung Semiconductor, Inc. Page-in, burst-out FIFO

Also Published As

Publication number Publication date
KR960035270A (ko) 1996-10-24
AU693668B2 (en) 1998-07-02
KR100295187B1 (ko) 2001-09-17
CN1180430A (zh) 1998-04-29
JPH0955081A (ja) 1997-02-25
EP0838057A4 (de) 2000-05-10
CN1088215C (zh) 2002-07-24
AU5039896A (en) 1996-10-10
TW388982B (en) 2000-05-01
EP0838057B1 (de) 2002-12-18
WO1996030838A1 (en) 1996-10-03
DE69625486D1 (de) 2003-01-30
EP0838057A1 (de) 1998-04-29
SG73403A1 (en) 2000-06-20
RU2157562C2 (ru) 2000-10-10

Similar Documents

Publication Publication Date Title
DE69625486T2 (de) Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen
DE3887324T2 (de) Speicheranordnung.
DE69228679T2 (de) Speicher, speichersteuerungsvorrichtung und speichersteuerungsverfahren zur anwendung mit einem copy-back-cachespeichersystem
DE3724317C2 (de)
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE3909896C2 (de)
DE3588009T2 (de) Vorrichtung und Verfahren zum Rekonfigurieren eines Speichers in einer Datenverarbeitungsanordnung.
DE3689042T2 (de) Gerät zur Pufferung von Schreibanforderungen.
DE68911398T2 (de) Methode und digitaler computer zum vorausholen von vektordaten aus dem speicher in einem für skalaverarbeitung bestimmten speichersystem.
DE68926936T2 (de) Vorrichtung und Technik für Burstprogrammierung
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
DE68910391T2 (de) Verfahren zum Speicherdatenzugriff.
DE69823180T2 (de) Speicherzugangsschutz
DE69722117T2 (de) Einheitliche Speicherarchitektur mit dynamischer Grafikspeicherzuordnung
DE69032655T2 (de) Seitenspeicher-Steuerschaltung
DE69518286T2 (de) Speicherübertragungsgeschwindigkeitsbegrenzung für PCI-Meister
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE69509134T2 (de) Doppelbankspeicher und systeme, die diesen benutzen
DE68920419T2 (de) Verfahren und Anordnung für eine leistungsfähige DRAM-Steuerung.
DE69523395T2 (de) Datenprozessor mit gesteuertem Stoss-Speicherzugriff und Vorrichtung dafür
DE2944419C2 (de)
DE19900365A1 (de) Hochgeschwindigkeits-Halbleiterspeichervorrichtung, die eine Datensequenz für eine Burst-Übertragung ändern kann
DE2854485A1 (de) Datenverarbeitungssystem mit speicherhierarchie
EP0218280B1 (de) Datenverarbeitungsanordnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition