-
Die
Erfindung bezieht sich auf ein Verfahren zum Durchführen einer
Burst-Leseoperation eines Bus-Masters aus einem Systemspeicher eines
Computersystems und ein Computersystem zur Durchführung des
Verfahrens.
-
Eine
Art bekannter Computersysteme weist einen Mikroprozessor auf, der
mit einem externen Cache-Speicher, einem Systemspeicher und verschiedenen
Peripherie-Einrichtungen, die sich an einem Systembus aufhalten,
verbunden ist. Der Mikroprozessor kommuniziert mit dem Cache-Speicher, dem
Systemspeicher und den Peripherie-Einrichtungen über ein Chip, das als Speichersteuereinrichtung und
Brücke
zu dem Systembus agiert. Der Speichersteuereinrichtungsabschnitt
des Chip koordiniert die Datenübertragungen
zu und von diesen Speicherkomponenten bei Anforderung durch den
Mikroprozessor oder die Peripherie-Einrichtungen.
-
1 veranschaulicht
ein bekanntes Computersystem, das ein Speichersteuereinrichtungschip benutzt.
Der Mikroprozessor 110 ist mit einem externen Cache-Speicher 120 und
einem Systemspeicher 130 gekoppelt, die sich an einem Wirtsbus 160 befinden.
Der Wirtsbus 160 ist mit einem Speichersteuereinrichtungs-
und Brücken-Chip
("Speicher-Controller") 140 verbunden.
Ein zweiter Bus, der Systembus 170, ist mit dem Speicher-Controller 140 verbunden. Der
Speicher-Controller 150 fungiert als Brücke zwischen dem Mikroprozessor 110 und
dem Bus-Master 150. Der Bus-Master 150 repräsentiert
eine Peripherie-Einrichtung, die mit dem Systembus 150 gekoppelt
ist. Beispielsweise kann der Bus-Master 150 Einrichtungen,
wie beispielsweise Small-Computer-System-Interconnect(SCSI)-Steuereinrichtungen,
einen Graphikbeschleuniger oder Ergänzungsplatinen, umfassen.
-
Der
Speicher-Controller 140 behandelt Datenübertragungsanforderungen zu
und von sowohl dem Mikroprozessor 110 als auch dem Bus-Master 150.
Der Mikroprozessor 110 kann entweder auf den externen Cache-Speicher 120 oder
den Systemspeicher 130 zugreifen. Der Bus-Master 150 kann
auf die Systemspeichereinrichtung 130 zugreifen. Der Speicher-Controller 140 empfängt eine
Lese- oder Schreibanforderung entweder von dem Mikroprozessor 110 oder
von dem Bus-Master 150 und bestimmt, ob eine dieser Einrichtungen
die Quelle oder das Ziel ist. Der Mikroprozessor gibt eine Lese-
oder eine Schreibanforderung unter Verwendung von Standard-Mikroprozessorzeitgaben
aus, und der Bus-Master gibt eine Lese- oder eine Schreibanforderung
so aus, wie es durch die Protokollregeln für den Systembus 170 definiert
ist. Beispielsweise kann der Systembus 170 das Peripheriekomponentenverbindungs(PCI)-Protokoll
benutzen, wie es in der PCI Local Bus Specification, Rev. 2.1 (Juli
1995) beschrieben ist, die von der PCI Special Interest Group (SIG)
in Hillsboro, Oregon, erhältlich
ist.
-
Eine
Art eines bekannten Speicher-Controllers 140 enthält die folgenden
Funktionsblöcke:
Eine Mikroprozessorschnittstelle 142 zum Kommunizieren mit
dem Mikroprozessor 110, eine Cache-Steuereinrichtung 141 zum
Kommunizieren mit dem externen Cache-Speicher 120, eine
Systemspeichersteuereinrichtung 143 zum Kommunizieren mit
dem Systemspeicher 130 und eine Bus-Steuereinrichtung 144 zum Kommunizieren
mit dem Systembus 170. Diese Funktionskomponenten des Speicher-Controllers sind üblicherweise
auf einem Chip einer integrierten Schaltung enthalten. Alternativ
teilen einige Hersteller die Funktionen auf mehr als ein Chip auf.
-
Bei
einem typischen Datenlesen empfängt der
Speicher-Controller 140 Lesekommandos von dem Mikroprozessor 110 oder
dem Bus-Master 150. Der Speicher-Controller 140 bestimmt
(1) die "Quelle", d. h. die die angeforderten
Daten enthaltende Einrichtung, und (2) die Adresse innerhalb der
Einrichtung, an welcher die Daten zu finden sind. Wenn als Quelle
der Systemspeicher 130 bestimmt wird, legt der Speicher-Controller 140 Signale
an, um die Datenübertragung
auf dem Speicherbus 180 zu steuern.
-
Üblicherweise
weist der Systemspeicher 130 dynamischen Speicher mit wahlfreiem
Zugriff (DRAM) auf. Der Systemspeicher 130 kann beispielsweise
synchrone oder asynchrone DRAM enthalten. Synchrone DRAMs verbessern
die Systemleistung gegenüber
asynchronen DRAMs, sind aber üblicherweise
teurer. Jüngst
wurde eine weitere Art DRAM für
Computersystemplattformen verwendet. Der Erweiterte-Datenausgabe(EDO)-DRAM
verbessert theoretisch die Systemleistung bei relativ geringen Kosten
im Vergleich zu Seitenmodus-DRAM-Bauelementen.
-
Zwei
Signale auf dem Speicherbus 180 werden verwendet, um den
Systemspeicher 130 in Vorbereitung eines Datenlesens freizugeben.
Der DRAM wird folglich in zwei Stufen adressiert. Zunächst wird eine
bestimme Zeile adressiert und dann eine Spalte innerhalb der Zeile.
Eine Zeile wird adressiert, indem eine Adresse auf dem Speicherbus 180 bei
Anlegen eines Zeilenadreß-Strobe(RAS#)-Signals
latch-gespeichert wird. Dann wird auf eine Adresse innerhalb der
Zeile zugegriffen, indem die Spaltenadresse auf dem Speicherbus 180 mit
einem Spaltenadreß-Strobe(CAS#)-Signal
latch-gespeichert wird. Die Speicherzeile, auf die durch die beim
Anlegen des RAS#-Signals latch-gespeicherte Adresse zugegriffen
wird, wird oftmals als "Seite" des Speichers bezeichnet.
Die Seite wird solange als geöffnet
angesehen, wie das Signal RAS# angelegt ist. In Abhängigkeit
von dem speziell verwendeten DRAM-Bauelement kann die Seite von
irgendeiner Größe sein.
Beispielsweise kann eine typische Seite 2 oder 4 Kilobyte aufweisen.
-
Computersysteme
erfahren oftmals erhebliche Leistungsrückschläge immer dann, wenn sie auf den
Systemspeicher zugreifen. Es gibt eine Verzögerung bei der Systemspeicherzugriffszeit
infolge des Anlegens und der Wegnahme des RAS#-Signals. Dies ist
der Fall, weil jedesmal dann, wenn das RAS#-Signal angelegt wird,
es eine bestimmte Anzahl von Takten braucht, bis die DRAM-Seite
anschließend
verfügbar
wird. Darüber
hinaus muß, nachdem
das Signal RAS# weggenommen worden ist, das RAS#-Signal für eine vorgegebene Zeitdauer vor-aufgeladen
werden, bevor es erneut angelegt werden kann. Folglich tritt jedesmal
dann, wenn das RAS#-Signal weggenommen wird, eine Verzögerung auf,
bevor das Signal RAS# erneut angelegt werden kann.
-
Eine
Art bekannter Speicher-Controller versucht, die Systemspeicherzugriffszeit
zu senken, indem die Aktivität
auf dem Speicherbus 180 überwacht wird, und dementsprechend
das RAS#-Signal weggenommen
wird, wenn der Speicherbus inaktiv ist. Somit startet der Speicher-Controller
das Vor-Aufladen für
einen späteren
Speicherzugriff pro-aktiv. Jedoch kann dieses Verfahren einen Leistungsrückschlag
verursachen, wenn der Speicherbus 180 inmitten eines Burst-Speicherlesens
inaktiv wird.
-
Beispielsweise
gibt es Zeiten, zu denen der Speicherbus 180 untätig wird,
weil der Systembus 170 Daten nicht schnell genug empfängt. Der Speicherbus
ist doppelt so schnell wie der Systembus 170, da der Speicherbus
64 Bit breit und der Systembus 32 Bit breit ist. Folglich müssen Daten
aus dem Systemspeicher 130 gelesen und in einem Puffer
in dem Speicher-Controller 140 gespeichert werden. Dann
fertigt der Speicher-Controller 140 die Daten aus dem Puffer
an dem Systembus 170 ab. Der Speicherbus 180 wird
untätig,
wenn der Puffer in dem Speicher-Controller 140 voll ist.
Dann wird die Seite in dem Systemspeicher 130 inmitten
einer Leseoperation geschlossen.
-
Ein
weiterer Fall, bei dem der Speicherbus 180 inaktiv wird,
liegt dann vor, wenn ein Cache-Treffer auftritt und eine Rückschreiben
durchgeführt
wird. Der Speicher-Controller 140 führt Cache-Snoop-Operationen
parallel zu einem Lesen aus dem Systemspeicher 130 aus.
Ein interner Cache innerhalb des Mikroprozessors 110 wird
einer Snoop-Operation unterzogen, und ebenso wird der externe Cache-Speicher 120 einer
Snoop-Operation unterzogen. Sofern die Snoop-Operation feststellt,
daß ein Rückschreiben
in den Systemspeicher 130 erforderlich ist, werden die
Daten sowohl zu dem Systemspeicher 130 als auch dem Systembus 170 geschrieben.
Das Rückschreiben
in den Systemspeicher 130 kann viel schneller als das Rückschreiben
zu dem Systembus 170 erfolgen, was ein Untätig-werden des
Speicherbusses 180 verursacht. Wiederum wird die Seite
im Systemspeicher 130 inmitten einer Leseoperation geschlossen.
-
EP 0 692 764 A1 beschreibt
die Kopplung eines Systembusses (PCI-Bus) über eine PCI-Brücke und
eine Speichersteuereinrichtung mit einem Systemspeicher (DRAM-Bänke). Mit
dem Systembus (PCI-Bus) kann ein Bus-Master gekoppelt werden, der
eine Burst-Leseoperation aus dem Systemspeicher anfordern kann.
In einer Adressierphase eines Burst-Zyklus wird zunächst einer
Speichersteuereinheit die Speicheradresse übermittelt, so daß diese daraus
das Spaltenadreßsignal
und das Spaltenadreß-Strobe-Signal (RAS)
ableiten kann und somit die zugehörige Speicherseite öffnet. Um
die mit einem Schließen
und Neuöffnen
einer Speicherseite verbundene Verzögerung zu verringern, legt
die PCI-Brücke
während
der Zeit, in der sie darauf wartet, daß der PCI-Master am Systembus
anzeigt, daß er
bereit ist, Daten zu lesen, ein MEMWAIT-Signal an die Speichersteuereinheit
an, welches diese veranlaßt,
die Speicherseite geöffnet
zu halten. Wenn einige Zeit später
der Bus-Master am PCI-Bus anzeigt, daß er weitere Daten aufnehmen
kann, wird das MEMWAIT-Signal wieder weggenommen und die MCU legt
das Spaltenadreß-Strobe-Signal
(CAS) an, um das Datenlesen zu bewirken. Somit wird durch Anlegen
des Signals MEMWAIT die weitere Aktivität des Systemspeichers "heruntergedrosselt".
-
Es
ist Aufgabe der Erfindung, die Gesamtgeschwindigkeit bei Burst-Leseoperationen
zu erhöhen.
-
Diese
Aufgabe wird erfindungsgemäß durch ein
Verfahren mit den Merkmalen des Patentanspruchs 1 bzw. ein Computersystem
mit den Merkmalen des Patentanspruchs 6 gelöst.
-
Vorteilhafte
Weiterbildungen sind in den Unteransprüchen gekennzeichnet.
-
Die
vorliegende Erfindung wird beispielhaft und nicht in einschränkendem
Sinne anhand der begleitenden Figuren veranschaulicht, in welchen:
-
1 ein
bekanntes Computersystem veranschaulicht.
-
2 veranschaulicht
ein Signalzeitdiagramm eines bekannten PCI-Burst-Speicherlesens.
-
3 veranschaulicht
ein Signalzeitdiagramm eines bekannten Systemspeicherlesezyklus.
-
4 veranschaulicht
eine Zeitleiste eines Burst-Speicherlesens gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
5 veranschaulicht
ein Prozeßablaufdiagramm
eines Ausführungsbeispiels
der vorliegenden Erfindung.
-
6 veranschaulicht
ein Blockschaltbild eines Ausführungsbeispiels
einer Speichersteuereinrichtung gemäß der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG
-
Es
werden eine Speichersteuereinrichtung und ein Verfahren zum Zugreifen
auf eine Seite des Systemspeichers beschrieben. In der folgenden
Beschreibung werden zahlreiche spezielle Details angegeben, wie
beispielsweise spezielle Signalprotokolle, Zeitdiagramme und Bauelemente
in integrierter Schaltungstechnik, um ein besseres Verständnis der vorliegenden
Erfindung zu erreichen. Für
den Fachmann ist es jedoch klar, daß diese speziellen Details nicht
benutzt werden müssen,
um die vorliegende Erfindung auszuführen. An anderen Stellen werden
gut bekannte Schaltungen oder Signale nicht im Detail beschrieben,
um eine Verdunkelung der vorliegenden Erfindung zu vermeiden.
-
In
der folgenden Beschreibung wird ein Verfahren zum Durchführen eines
Systemspeicher-Burst-Lesens, das durch einen Bus-Master (z. B. einen
Mikroprozessor) initiiert worden ist, beschrieben. Eine Speichersteuereinrichtung öffnet eine
Seite des Systemspeichers bei Initiierung des Burst-Lesens durch
den Bus-Master. Die Speichersteuereinrichtung schließt die Seite
des Systemspeichers bei Beendigung des Burst-Lesens durch den Bus-Master.
Bei einem Ausführungsbeispiel
der Erfindung wird das Burst-Lesen initiiert, indem ein Zyklusrahmensignal
auf einer Leitung eines Systembusses angelegt wird, und beendet,
indem das Zyklusrahmensignal weggenommen wird. Folglich ist die
Seite des Speichers geöffnet,
während
das Zyklusrahmensignal angelegt ist, und geschlossen, wenn das Zyklusrahmensignal
nicht anliegt.
-
Die
erfindungsgemäße Speichersteuereinrichtung
bildet eine Schnittstelle zu einem PCI-Bus und einem Systemspeicher.
Der Systemspeicher weist eines der verschiedenen gut bekannten Bauelemente
dynamischen Speichers mit wahlfreien Zugriff (DRAM-Bauelemente)
auf. Der Systembus 170 braucht nicht gemäß dem PCI-Protokoll
zu arbeiten. Der Systembus kann nach einem anderen gut bekannten
Systembusprotokoll, wie beispielsweise dem Industriestandardarchitektur(ISA)-Bus
oder dem erweiterten ISA(EISA)-Bus, arbeiten.
-
2 veranschaulicht
ein Zeitdiagramm einer bekannten Anforderung zum Lesen aus dem Systemspeicher 130,
die durch den Bus-Master 150, beide gemäß 1, initiiert
worden ist. Bei dem in 2 veranschaulichten Ausführungsbeispiel
ist der Systembus 170 ein synchroner 33-MHz-Bus, der nach dem
PCI-Protokoll arbeitet.
Darüber
hinaus ist der PCI-Bus in der Lage, ein Doppelwort (DWORD) Daten
bzw. 32 Bits, gleichzeitig zu übertragen.
-
Datenübertragungen über den
PCI-Bus erfolgen in "Burst-Übertragungen", wobei das Burst eine
Adreßphase
und eine oder mehrere Datenphasen umfaßt. Das Burst weist üblicherweise
eine Anzahl von Datenzugriffen auf die gleiche Seite des Speichers
im DRAM auf. Bursts sind insbesondere bei Multimedia-Anwendungen üblich, wie
beispielsweise bei solchen Anwendungen, die Routinen zur Verarbeitung
ursprünglicher
Signale (NSP-Routinen; Native Signal Processing) aufweisen.
-
Das
Signal FRAME# auf Leitung 210 wird von dem Bus-Master 150 im
Takt 21 angelegt, um den Beginn einer Transaktion auf dem Systembus 170 anzuweisen.
Das "#"-Symbol nach dem
Signalnamen kennzeichnet, daß das
Signal aktiv-niedrig ist. Somit wird das Signal "angelegt", wenn es auf niedrigem Pegel (logisch
Null) ist, und "weggenommen", wenn es auf hohem
Pegel (logisch Eins) ist.
-
Während desselben
Taktes 21 legt der Bus-Master 150 Kommandotypsignale auf
die C/BE#-Leitungen 250 und Adreßsignale auf den AD[31:0]-Leitungen
an. Die C/BE#-Leitungen 250 stellen das Buskommando ("C") und Byte-Freigaben ("BE"; Byte Enables) dar.
während
der Adreßphase, wie
beispielsweise im Takt 21, dienen die C/BE#-Leitungen 250 als
Buskommando-Leitungen. Während der
Datenphase dienen die C/BE#-Leitungen 250 als Byte-Freigabe-Leitungen.
Bei einem Ausführungsbeispiel
sind die C/BE#-Leitungen 250 vier Bits breit und werden
während
des Taktes 21 mit einem Kommando vom Typ "Speicherlesen" (0110) beaufschlagt.
-
Die
Speichersteuereinrichtung 140 empfängt das Signal FRAME# auf Leitung 210,
die Adreßsignale
auf den Leitungen 240 und die Kommandotypsignale auf den
Leitungen 250. Der Kommandotyp wird von der Speichersteuereinrichtung
dekodiert, um die richtige Quelleneinrichtung zu bestimmen. Bei
dem Speicherlesekommando gibt die Speichersteuereinrichtung 140 den
Systemspeicher 130 für
ein Lesen frei, wie es im folgenden detailliert beschrieben wird.
-
Takt
22 ist ein Umschwenk-Takt, in welchem der Bus-Master 150 das
Initiator-Bereit-Signal IRDY# auf Leitung 220 anlegt. Das
Anlegen des IRDY# zeigt an, daß der
Bus-Master 150 in der Lage ist, die Datenphase der Transaktion
zu starten und folglich bereit ist, Daten aus dem Systemspeicher 130 aufzunehmen.
Der Bus-Master 150 stoppt das Beaufschlagen der AD[31:0]-Leitungen 240 während dieses Taktes.
-
Im
Takt 23 wird das Ziel-Bereit-Signal TRDY# auf Leitung 230 von
der Speichersteuereinrichtung 140 angelegt. Dieser Schritt
startet den Anfang der Datenphase. Das Anlegen von TRDY# zeigt an,
daß das
Ziel, d. h. der Systemspeicher 130, die angeforderten Daten
an die Speichersteuereinrichtung 140 zur Verfügung gestellt
hat, und daß die Speichersteuereinrichtung 140 die
Daten auf den AD[31:0]-Leitungen 240 präsentiert hat.
-
Anschließend werden
gültige
Daten auf den AD[31:0]-Leitungen 240 in den Takten 24 bis
27 zur Verfügung
gestellt. Dies wird als Datenphase der Bustransaktion bezeichnet,
in welcher Datenworte aus dem Systemspeicher 130 zu dem
Bus-Master 150 gelesen werden. Der Bus-Master 150 befehligt das
Ende der Datenphase, indem er das FRAME#-Signal auf Leitung 210 im
Takt 27 wegnimmt. Dann werden die Signale IRDY# und TRDY# auf den Leitungen 220 bzw. 230 im
Takt 28 weggenommen. Dieses Verfahren zum Durchführen eines Speicherlesens bei
dem PCI-Protokoll wird detailliert in der PCI Local Bus Specification,
Rev. 2.1 (Juli 1995) beschrieben, die von der PCI Special Interest
Group (SIG) in Hillsboro, Oregon, erhältlich ist.
-
3 veranschaulicht
ein Zeitdiagramm der Signale auf dem Speicherbus 180 während eines Systemspeicherlesens.
Gemäß 3 wird
im Takt 31 eine Adresse auf den MA-Leitungen 330 durch
die Speichersteuereinrichtung 140 angelegt. Die Adresse
zeigt an, auf welche Seite innerhalb des Systemspeichers zugegriffen
werden soll. Die Adresse wird zunächst im Takt 31 ausgegeben
und wird dann in dem Systemspeicher 130 durch Anlegen des RAS#-Signals
auf Leitung 310 im Takt 32 latch-gespeichert. Das RAS#-Signal
auf Leitung 310 wird von der Speichersteuereinrichtung 140 angelegt,
um den Beginn des Speicherlesens zu signalisieren. Das RAS#-Signal
auf Leitung 310 wird üblicherweise
von der Speichersteuereinrichtung 140 bei Erfassen einer
Anforderung nach einer Transaktion mit dem Systemspeicher 130 angelegt.
Es sei daran erinnert, daß das
Systemspeicherlesen durch Anlegen des Signals FRAME#, Treiben der
Speicheradresse auf die AD[31:0]-Leitungen 240 und Treiben
des Systemspeicherlesetyps auf die C/BE#-Leitungen angefordert wird.
Die Speichersteuereinrichtung 140 dekodiert diese Signale,
und dann wird, sofern festgestellt worden ist, daß der Bus-Master 150 eine
Leseoperation angefordert hat und der Systemspeicher 130 die Zieleinrichtung
ist, das RAS#-Signal auf Leitung 310 angelegt.
-
Wie
zuvor erwähnt,
kann das Signal RAS# auf Leitung 310 nur angelegt werden,
nachdem es für eine
vorgegebene Zeitdauer vor-aufgeladen worden ist. Diese Vor-Auflade-Zeit
hängt von
der Spezifikation des bestimmten bei der Implementierung des Systemspeichers 130 verwendeten
DRAMs ab. Sofern das RAS#-Signal auf Leitung 310 vor dem
Takt 31 angelegt war, muß eine
Zeitdauer, die größer als
oder gleich der Vor-Auflade-Zeit ist, vergehen, bevor das RAS#-Signal
auf Leitung 310 erneut angelegt werden kann. Bei einem
Ausführungsbeispiel
ist die Vor-Auflade-Zeit gleich drei Takten, und folglich muß das RAS#-Signal
auf Leitung 310 für
mindestens drei Takte weggenommen bleiben, bevor es im Takt 32 angelegt
wird. Die gestrichelte Linie 39 veranschaulicht, daß das RAS#-Signal
auf Leitung 310 für
eine gewisse Zeitdauer vor dem Takt 31 weggenom men gewesen sein
kann, um die Vor-Auflade-Anforderungen zu erfüllen.
-
Im
Takt 33 wird eine Adresse auf den MA-Leitungen 330 präsentiert.
Diese Adresse wird verwendet, um eine Spalte in dem Systemspeicher 130 auszuwählen. Die
Adresse wird in den Speicher 130 latch-gespeichert, indem
das Spaltenadreß-Strobe-Signal
CAS# auf Leitung 320 durch die Speichersteuereinrichtung 140 angelegt
wird.
-
Dann
erscheinen die Daten auf dem Datenbus MD 340 im Takt 34.
Es ist folglich aus dem Zeitdiagramm zu entnehmen, daß es eine
Verzögerung von
drei Takten benötigt
(vom Anlegen der Seitenadresse auf MA 330 in Takt 31 bis
zum Erscheinen gültiger
Daten auf MD 340 in Takt 34), um einen anfänglichen
Datenzugriff auf eine Seite auszuführen. Anschließend wird
das Signal CAS# 320 im Takt 35 zusammen mit einer weiteren
Spaltenadresse auf MA 330 angelegt. Gültige Daten werden auf MD 340 im nächsten Takt
36 präsentiert.
Es beansprucht demzufolge zwei Takte, um auf eine beliebige Adresse
innerhalb der gleichen DRAM-Seite zuzugreifen, sobald die Seite
geöffnet
ist.
-
Im
Takt 37 wird das RAS#-Signal auf Leitung 310 weggenommen,
was anzeigt, daß die
Seite geschlossen werden soll. Dies tritt üblicherweise auf, weil die
Leseanforderung aus dem Bus-Master 150 in die
nächste
Seite des DRAM "gelaufen" ist und das RAS#-Signal
auf Leitung 310 für
diese Seite weggenommen und für
die nächste
Seite erneut angelegt werden muß,
oder weil die Leseanforderung in dem DRAM abgeschlossen ist. In
beiden Fällen
wird die Seite des Speichers geschlossen, wenn die Speichersteuereinrichtung 140 das
RAS#-Signal auf Leitung 310 wegnimmt.
-
Wie
zuvor erwähnt,
ist dann, wenn die Seite geschlossen wird, eine Verzögerung eingeschlossen, bevor
auf den Systemspeicher 130 erneut zugegriffen werden kann.
Diese Verzögerung
ist von den Vor-Auflade-Spezifikationen des konkreten Speicherbauelements 130 abhängig.
-
Wenn
von dem Bus-Master 150 ein Burst-Lesen angefordert wird,
werden oftmals eine Menge Daten von der gleichen Seite des Speichers 130 angefordert.
Insbesondere bei Multimedia-An wendungen werden große Blöcke von
Daten an einem Ort gespeichert, die von dem Multimedia-Bus-Master 150 angefordert
werden können.
Dies ist folglich die ideale Situation, in welcher die Speichersteuereinrichtung 140 die
Seite des Systemspeichers während der
gesamten Leseanforderung, die viele DRAM-Lesezyklen umfassen kann,
geöffnet
halten kann. Im folgenden wird ein Verfahren und eine Vorrichtung zum
Geöffnet-Halten
einer Seite des Systemspeichers während eines Burst-Lesens zu
dieser Seite beschrieben.
-
4 veranschaulicht
eine Reihe von Zeitleisten, die die Operation jedes Bauelements
innerhalb des Computersystems 100 zeigt. Die zwei Zeitleisten 463 und 464 zeigen
den Status der Speicherseite im Stand der Technik (463)
und gemäß der vorliegenden
Erfindung (464).
-
Zunächst initiiert
der Bus-Master 150 ein Lesen auf dem Systembus 170,
indem er das FRAME#-Signal im Punkt 410 anlegt. Die Leseanforderung
wird von der Speichersteuereinrichtung 140 empfangen. Dann
führt die
Speichersteuereinrichtung 140 zwei Funktionen parallel
durch. Im Punkt 420 wird seine Snoop-Operation an einem
Cache ausgeführt,
wie auf dem Cache-Speicherbus 190 zu sehen ist. Sowohl
der externe Cache-Speicher 120 als auch ein Cache-Speicher
im Inneren des Mikroprozessors 110 müssen einer Snoop-Operation
unterzogen werden, um zu sehen, ob sich die angeforderten Daten
dort aufhalten. Punkt 420 veranschaulicht die Snoop-Operation
eines der beiden Cache-Speicher. Gleichzeitig startet die Speichersteuereinrichtung 140 das
Lesen auf dem Speicherbus 180, indem sie das RAS#-Signal
im Punkt 430 anlegt.
-
Innerhalb
des Standes der Technik wird das RAS#-Signal von der Speichersteuereinrichtung 140 auf
der Basis eines intern erzeugten Signals angelegt bzw. weggenommen,
welches zum Teil von der Busaktivität auf dem Speicherbus 180 abhängig ist.
Im Unterschied dazu überprüft das Verfahren
gemäß der vorliegenden
Erfindung die Aktivität
auf dem Systembus 170, um zu bestimmen, wann das RAS#-Signal
angelegt und weggenommen werden soll.
-
Bei
Anlegen des RAS#-Signals auf einer Leitung des Speicherbusses im
Punkt 430 wird die Speicherseite an den Punkten 440 und 450 sowohl
im Stand der Technik als auch bei der vorliegenden Erfindung geöffnet.
-
Es
sei angenommen, daß das
Ergebnis der ersten Cache-Snoop-Operation
im Punkt 420 darin besteht, daß die Daten in dem Cache-Speicher
gefunden werden. Sofern die Cache-Speicher Rückschreib-Cache-Speicher sind,
werden die Daten zurück
zu dem Systemspeicher 130 geschrieben, sofern der Treffer
zum Cache-Speicher als modifiziert vorgefunden wird.
-
In 4 werden
die Daten als modifiziert vorgefunden, und im Punkt 421 ist
das Rückschreiben
auf den Cache-Speicherbus 190 zu sehen. Bei einem Ausführungsbeispiel
der Erfindung werden die Daten zu dem Systemspeicher 130 parallel
mit dem Schreiben der Daten zu dem Bus-Master 150 auf dem
Systembus 170 zurückgeschrieben.
-
Die
Speichersteuereinrichtung 140 führt das Rückschreiben zum Systemspeicher 130 durch,
indem vorübergehend
das Burst-Lesen
ausgesetzt wird. Im Punkt 431 werden die Daten zu dem Speicher 130 auf
dem Speicherbus 180 zurückgeschrieben.
-
Bei
einem Ausführungsbeispiel
werden die Daten darüber
hinaus zu dem Bus-Master 150 parallel zum Rückschreiben
zum Speicher geschrieben. Somit werden die Daten aus dem Cache-Speicher auf dem
Systembus 170 als Teil des Burst-Lesens geliefert. Alternativ
können
die Daten zunächst
zu dem Systemspeicher 130 zurückgeschrieben und dann aus
dem Systemspeicher 130 als Teil des Burst-Lesezyklus gelesen
werden.
-
Sobald
das Rückschreiben
abgeschlossen ist, führt
die Speichersteuereinrichtung 140 die Snoop-Operation des
sekundären
Cache-Speichers im Punkt 422 durch. Man beachte, daß das Lesen
auf dem Speicherbus 180 nicht wieder aufgenommen wurde,
während
diese Snoop-Operation auftritt. Somit ist der Speicherbus 180 untätig, wie
es im Punkt 432 gezeigt ist.
-
Bei
der bekannten Speichersteuereinrichtung wird die Aktivität des Speicherbusses 180 überwacht,
um festzustellen, ob das RAS#-Signal angelegt werden soll, um die
Seite geöffnet
zu halten. Somit wird dann, wenn der Speicherbus 180 am
Punkt 432 untätig
ist, die Speicherseite geschlossen, indem das RAS#-Signal im Punkt 441 weggenommen
wird. Es ist klar, daß dies
nicht der effektivste Weg ist, um ein Burst-Lesen durchzuführen, da
der Bus-Master 150 sich inmitten seines Lesezyklus' befindet und folglich
auf den Systemspeicher 130 bald zugreifen wird.
-
Um
Vorteile aus diese Kenntnis zu ziehen, verwendet die vorliegende
Erfindung (Zeitleiste 464) das FRAME#-Signal auf einer
Leitung des Systembusses 170 anstelle von Signalen auf
Leitungen des Speicherbusses 180 um festzustellen, ob die
Seite geöffnet
gehalten werden soll oder nicht. Die Seite wird während der
Zeit, in der das FRAME#-Signal angelegt ist, geöffnet gehalten. Wie in Verbindung
mit 2 erörtert
wurde, wird im Stand der Technik das FRAME#-Signal während des
gesamten Burst-Lesens angelegt. Die Seite bleibt deshalb während der gesamten
Leseoperation geöffnet,
selbst wenn der Speicherbus 180 untätig ist.
-
Die
zweite Snoop-Operation gemäß 4 ist
ein Cache-Fehlversuch,
so daß kein
Rückschreibzyklus
erforderlich ist. Das Burst-Lesen wird folglich fortgesetzt, wie
es am Punkt 433 auf dem Speicherbus 180 zu sehen
ist. Parallel dazu wird eine Cache-Snoop-Operation im Punkt 424 auf
dem Cache-Bus 190 durchgeführt. Im Stand der Technik wird die
Speicherseite dann erneut im Punkt 442 geöffnet. Es
sei daran erinnert, daß die
Speicherseite nur dann geöffnet
werden kann, wenn das RAS#-Signal
für zumindest
die Vor-Auflade-Zeitdauer nicht angelegt war. Folglich kann die
Seite nicht im Punkt 442 geöffnet werden, bis diese Zeitdauer
vergangen ist. Darüber
hinaus sei daran erinnert, daß dann,
wenn die Speicherseite durch Anlegen des RAS#-Signals geöffnet wird,
es zumindest drei Takte Verzögerung
beansprucht, bevor gültige
Daten auf dem Systembus 170 aus dem Systemspeicher 130 geliefert
werden. Somit gibt es bei der bekannten Speichersteuereinrichtung 140 eine
Verzögerung
jedesmal dann, wenn die Speicherseite inmitten eines Burst-Lesens
geschlossen wird.
-
Das
Burst-Lesen wird fortgesetzt, bis der Bus-Master 150 das
Ende der Lesetransaktion im Punkt 411 auf dem Systembus signalisiert.
Bei einem Ausführungsbeispiel
wird dies durch Wegnehmen des Signals FRAME# ausgeführt. An
diesem Punkt kehren der Cache-Bus 190 und der Speicherbus 180 zur
Untätigkeit
zurück,
wie es an den Punkten 425 und 434 veranschaulicht
ist.
-
Im
Stand der Technik erfaßt
die Speichersteuereinrichtung 140, daß der Speicherbus 180 untätig ist,
und schließt
folglich die Speicherseite, indem in Erwiderung dessen am Punkt 443 das
RAS#-Signal auf Leitung 130 weggenommen wird. Bei der vorliegenden
Erfindung erfaßt
die Speichersteuereinrichtung 140, daß das FRAME#-Signal durch den Bus-Master 150 im
Punkt 411 weggenommen worden ist, und schließt folglich
die Speicherseite am Punkt 451.
-
5 veranschaulicht
ein Prozeßablaufdiagramm
eines Ausführungsbeispiels
der vorliegenden Erfindung. Der Bus-Master 150 fordert
ein Lesen aus dem Systemspeicher 130 im Schritt 510 an.
Folglich wird das Signal FRAME# auf einer Leitung des Systembusses
angelegt. Die Speichersteuereinrichtung 140 erfaßt das Anlegen
des FRAME#-Signals und legt danach das RAS#-Signal im Schritt 520 an.
Das Anlegen des RAS#-Signals öffnet
eine Seite des Systemspeichers 130.
-
Dann
wird das Burst-Lesen durchgeführt, welches
als Schritt 530 veranschaulicht ist. Während des Burst-Lesens gemäß Schritt 530 können eine Reihe
von Ereignissen auftreten. Beispielsweise kann ein Cache-Treffer
auftreten, was ein Rückschreiben
von Daten an den Systemspeicher 130 und an den Bus-Master 150 bewirkt.
Das RAS#-Signal wird kontinuierlich angelegt und somit wird eine Seite
des Systemspeichers 130 während dieser Ereignisse geöffnet gehalten.
-
Es
ist möglich,
daß ein
Burst-Lesen irgendwelche gelesenen Daten umfassen kann, die sich
innerhalb einer Seite des Systemspeichers aufhalten, und einige
Daten in einer anderen Seite. Dieses Szenarium ist als Schritt 540 veranschaulicht.
In diesem Fall werden die Daten aus einer ersten Seite gelesen, und
dann wird die Seite durch Wegnahme des RAS#-Signals geschlossen.
Anschließend
wird die nächste
Seite mit einer neuen Zeilenadresse auf dem Speicherbus 180 durch
erneutes An legen des RAS#-Signals geöffnet (sobald die erforderliche Vor-Auflade-Zeit abgelaufen
ist).
-
Dann
beendet der Bus-Master die Lesetransaktion, indem er das FRAME#-Signal
im Schritt 550 wegnimmt. Die Speichersteuereinrichtung 140 erfaßt die Wegnahme
des FRAME#-Signals und schließt
dementsprechend die aktuelle Seite des Systemspeichers 130,
indem sie das RAS#-Signal im Schritt 560 wegnimmt.
-
Aus 5 wird
ersichtlich, daß bei
einem Ausführungsbeispiel
die Speicherseite in Beantwortung von zwei Situationen geschlossen
wird. Die erste Situation, bei der das RAS#-Signal weggenommen wird, tritt auf,
wenn der Bus-Master 150 das Ende einer Lesetransaktion
signalisiert, indem er das FRAME#-Signal wegnimmt. Die andere Situation
tritt auf, wenn sich einige der Burst-Lesedaten in mehr als einer
Seite des Systemspeichers 130 aufhalten.
-
Die
vorliegende Erfindung ist vorteilhaft, da das RAS#-Signal für die gegenwärtig geöffnete Seite grundsätzlich dem
Anlegen und dem Wegnehmen des FRAME#-Signals auf dem Systembus 170 folgt. Dies
gestattet der gegenwärtig
aktiven Seite des Speichers, während
einer gesamten auf diese Seite gerichteten Burst-Leseoperation geöffnet zu
bleiben.
-
6 veranschaulicht
ein Blockschaltbild der RAS#-Erzeugungsschaltung, die sich innerhalb der
Speichersteuerschaltung 143 der Speichersteuereinrichtung 140 aufhält. Die
Speichersteuereinrichtung 140 ist mit dem Systemspeicher 130 über das RAS#-Signal
auf Leitung 612, das CAS#-Signal auf Leitung 613,
den Speicheradreßbus
MA 614 und den Speicherdatenbus MD 615 gekoppelt.
Es ist klar, daß andere
Signale ebenfalls verwendet werden können, um die Speichersteuereinrichtung 140 und
den Systemspeicher 130 zu koppeln, ohne vom Umfang der vorliegenden
Erfindung abzuweichen.
-
Es
sei daran erinnert, daß die
Bussteuereinrichtung 144 eine Schnittstelle mit dem Systembus 170 bildet.
Die Bussteuereinrichtung 144 erfaßt ein Anlegen des FRAME#-Signals
auf Leitung 622 und legt dementsprechend ein Signal auf
Leitung 623 an, welches ein Eingangssignal an die RAS#-Erzeugungsschaltung 611 ist.
Die RAS#-Erzeugungsschaltung erfaßt das An legen eines Eingangssignals
auf Leitung 623 und legt dementsprechend das RAS#-Signal
auf Leitung 612 an. Das RAS#-Signal wird dann an den Systemspeicher 130 geliefert.
-
Bei
einem Ausführungsbeispiel
enthält
die RAS#-Erzeugungsschaltung 611 darüber hinaus eine Logik, um festzustellen,
wenn sich ein Datenwort des aktuellen Burst-Lesens innerhalb einer
anderen Seite aufhält.
Bei diesem alternativen Ausführungsbeispiel
schließt
die RAS#-Erzeugungsschaltung 611 die Seite des Speichers,
indem sie das RAS#-Signal auf Leitung 612 wegnimmt. Das RAS#-Signal
auf Leitung 612 wird dann erneut angelegt, um eine neue
Seite des Speichers zu öffnen
und um die Burst-Leseoperation fortzusetzen.
-
Wenn
das FRAME#-Signal auf Leitung 622 weggenommen wird, erfaßt die Bussteuerschaltung 144 die
Wegnahme und signalisiert dementsprechend dieses Ereignis an die
RAS#-Erzeugungsschaltung 611 auf Leitung 623.
Für den
Fachmann ist es klar, daß das
Signal auf Leitung 623 als eine Kombination eines oder
mehrerer Signale implementiert werden kann. Es ist nur wesentlich,
daß die
Bussteuerschaltung 144 irgendwelche Mittel aufweist, durch welche
sie den Zustand des FRAME#-Signals an die RAS#-Erzeugungsschaltung 611 übermitteln
kann.
-
Die
RAS#-Erzeugungsschaltung 611 erfaßt, daß das Signal auf Leitung 623 weggenommen
worden ist, und schließt
die Seite des Systemspeichers 130, indem sie das RAS#-Signal
auf Leitung 612 wegnimmt.
-
Somit
wird aus der obigen Beschreibung klar, daß das Verfahren und die Vorrichtung
gemäß der vorliegenden
Erfindung, bei dem bzw. bei der die Speicherseite des Systemspeichers 130 gemäß dem Zustand
des Signals FRAME# auf Leitung 622 geöffnet und geschlossen wird,
ungewünschte
Verzögerungen
beim Burst-Lesen
vom Bus-Master 150 eliminiert.
-
Das
beschriebene Verfahren wird durch eine Speichersteuereinrichtung
durchgeführt,
die der Schnittstellenbildung zwischen einem Mikroprozessor und
(1) einem externen Cache, (2) einem Systemspeicher und (3) einem
Systembus dient. Alternativ kann das Verfahren gemäß der vorliegenden
Erfindung bei einem Mikroprozessorcomputersystem durchgeführt werden,
bei dem eine oder mehrere der oben beschriebenen Einrichtungen fehlen.
Darüber hinaus
kann die vorliegende Erfindung in einem Computersystem benutzt werden,
das mehr als einen Mikroprozessor, mehr als ein Systemspeicherbauelement,
mehr als einen Bus-Master an dem Systembus oder mehr als einen externen
Cache benutzt.
-
In
der vorstehenden detaillierten Beschreibung wurden eine Speichersteuereinrichtung
und ein Verfahren zum Durchführen
eines Systemspeicherlesens beschrieben. Es ist jedoch klar, daß verschiedene Änderungen
und Modifikationen davon durchgeführt werden können, ohne
vom Umfang der Erfindung abzuweichen. Beispielsweise kann der Systembus 170 mit
abweichenden Breiten und Busgeschwindigkeiten implementiert werden.
Die hier als aktiv-niedrig oder aktiv-hoch beschriebenen Signale können von
umgekehrter Bezeichnung sein. Darüber hinaus kann anstelle des
Rückschreib-Cache
ein Durchschreib-Cache implementiert werden.