-
Die vorliegende Erfindung betrifft
Verfahren und entsprechende Vorrichtungen zum Verarbeiten und Speichern
großer
Datenmengen in einem Computer auf effektive Weise, die wiederholte
Vorgänge des
Lesens und Schreibens in dem Speicher ermöglicht.
-
Die Erfindung betrifft insbesondere
die Speicherung und die Verwendung von Daten in RAM und wird beispielsweise
in Computergrafikvorrichtungen eingesetzt.
-
Computer enthalten Direktzugriffsspeicher (Random
Access Memory – RAM),
der während
des Betriebes eines Computers genutzt wird, um Daten zu speichern,
die für
den Betrieb des Computers von Belang sind, so beispielsweise Programminformationen
oder Grafikdaten. Derartige Daten werden nur gehalten, während der
Computer angeschaltet ist, um dem Speicher Strom zuzuführen, RAM
wird jedoch aufgrund seiner gegenüber permanenten Speichervorrichtungen,
wie beispielsweise magnetischen Speichermedien, höheren Zugriffsgeschwindigkeiten eingesetzt.
-
Normale Computer-Anzeigesysteme haben beispielsweise
einen Anzeigespeicher, der in RAM ausgeführt ist, in dem Informationen
bezüglich
der erforderlichen Parameter für
jeden Bildpunkt auf einer Bildschirmanzeige gespeichert sind. Dieser
Speicher wird wiederholt gelesen, und die Informationen werden zu
dem Anzeigebildschirm geleitet, so dass der Bildschirm den Inhalt
des Speichers wiedergibt. Wenn der Computer das auf dem Bildschirm
angezeigte Bild ändern
möchte,
bewirkt er, dass die entsprechenden Informationen in dem Anzeigespeicher geändert werden,
wobei diese Änderungen
danach auf dem Bildschirm wiedergegeben werden. Daher hängt die
Leistung eines Grafik-Anzeigesystems und anderer Teilsysteme des
Computers, die RAM nutzen, in großem Maße von der Fähigkeit
ab, Daten schnell aus dem Speicher zu lesen und in ihn zu schreiben.
-
Bei vielen Systemen wird dynamischer
Speicher (Dynamic Memory – DRAM)
zum Speichernder Informationen aufgrund der verglichen mit statischem RAM
(SRAM) hohen Dichte, die mit DRAM-Speicher erreicht wird, eingesetzt,
die normalerweise, gemessen in Siliziumfläche pro Bit, wenigstens viermal
höher ist.
Dieser Vorteil wird auf Kosten der Zugriffsgeschwindigkeit zu dem
Speicher erreicht, d. h. SRAM der erforderlichen Größe erlaubt
das Auftreten von Speicherzyklen normalerweise in Intervallen von
30 ns, während
DRAM normalerweise Intervalle von 120 ns benötigt. Der Rest des Systems,
der versucht, den Speicherinhalt zu modifizieren, kann bei SRAM-Geschwindigkeiten
arbeiten, d. h., es werden erhebliche Anstrengungen unternommen,
um Systeme zu entwickeln, die aus Kostengründen DRAM-Nutzen, jedoch SRAM-Leistung
erreichen. Das übliche
Herangehen an dieses Problem besteht im Einsatz von Cache-Speicherverfahren,
die auf verschiedenen Ebenen des Systems eingesetzt werden.
-
Die niedrigste Ebene, auf der dieses
Verfahren eingesetzt wird, ist die Verwendung von "Seitenmodus"-DRAM-Zyklen, wobei
die Speichervorrichtung eine Reihe von Bits, die einmal aus der
zweidimensionalen Anordnung von Speicherelementen in der Vorrichtung
gelesen worden sind, zurückhält, diese
Bits mit Geschwindigkeiten, die nahezu so hoch sind wie bei SRAM,
lesen oder modifizieren lässt
und schließlich
die modifizierte Reihe wieder in die DRAM-Speicheranordnung schreibt,
wenn dies erforderlich ist. Damit lässt sich eine ungefähr vierfache Verbesserung
erreichen, wenn zahlreiche Zugriffe auf die gleiche Reihe ohne störende Zugriffe
auf andere Reihen erfolgen, der Vorteil verringert sich jedoch,
wenn zahlreiche Echtzeit-Abfragen an das Speichersystem gerichtet
werden, wodurch der Overhead der anfänglichen Lese-Reihen- und der abschließenden Schreib-Reihenoperationen
zunimmt. Die herkömmliche
Lösung
für dieses
zweite Problem besteht darin, FIFO-Puffer zu jedem Zugriffsweg zu
dem Speicher hinzuzufügen,
so dass Blöcke
sequentiell adressierter Werte in der gleichen Reihe zusammengehalten
werden können.
Für die Umsetzung
dieser FIFOs kann erhebliche Siliziumfläche erforderlich sein.
-
Die zweite Ebene, auf der dieses
Verfahren eingesetzt wird, besteht darin, einen kleinen SRAM in den
Speicher, beispielsweise eine Grafiksteuerung, einzusetzen, der
von der Speichereinrichtung getrennt ist, und ihn zu verwenden,
um Informationen zu speichern, auf die von dem DRAM zugegriffen wird,
wenn sie in naher Zukunft erneut gebraucht werden sollten, wobei
in diesem Fall die angeforderten Daten von dem SRAM mit SRAM-Geschwindigkeit
bereitgestellt werden. Mehrere Schreibvorgänge in den Cache-Speicher können darüber hinaus
erfolgen, bevor das abschließende
Ergebnis wieder in den DRAM geschrieben wird.
-
Die höchste Cache-Ebene in der Grafiksteuerung
ist ein einfacher "Schreib-Puffer", der die Adressen
und Daten vom Hauptsystem annimmt und sie sofort passieren lässt. Der
Inhalt des Schreib-Puffers wird dann mit niedrigerer Geschwindigkeit
in den Speicher geschrieben. Mit diesem Verfahren wird der Betrieb
beschleunigt, solange Zwischenräume
zwischen den Schreibzyklen auftreten, wenn sie jedoch kontinuierlich
sind, laufen die Operationen mit der niedrigeren Geschwindigkeit
des DRAM-Zyklus ab. Ein "Lese-Puffer" kann den Betrieb
ebenfalls beschleunigen, wenn er das Lesen des Hauptrechners an
einer bestimmten Stelle vorwegnimmt und den Wert in einen Speicher
liest, bevor er benötigt
wird, so dass er zum sofortigen Zugriff bereit ist. Da insbesondere
in Grafiksystemen viele Operationen sequentiell den Speicher durchlaufen,
kann diese Vorwegnahme annehmbare Genauigkeit erreichen. Auch dies
funktioniert, wenn Zwischenräume
zwischen den Lesevorgängen
auftreten. Jeder dieser Puffer kann erweitert werden, indem eine
Anzahl von Lese- oder Schreibzyklen in dem Puffer aufgereiht werden,
jedoch um den Preis zusätzlicher
Siliziumfläche
und höherer
Komplexität.
-
Die Verbesserungen, die mit derartigen
Anordnungen erreicht werden können,
werden durch die Geschwindigkeit begrenzt, mit der Daten aus dem Cache
wieder in den Hauptspeicher gelesen werden können, wenn Zugriff auf einen
Teil des Speichers erforderlich ist, der nicht in dem Cache liegt,
um diesen Teil des Speichers in den Cache lesen zu können. Diese
Geschwindigkeit wird durch die Breite des Busses begrenzt, über den
Daten zwischen dem Hauptspeicher und dem Cache übertragen werden: Daher besteht
ein weiteres Verfahren zur Verbesserung der Systemleistung darin,
größere Teile
des Speicherinhaltes innerhalb eines einzelnen Speicherzyklus zu modifizieren.
Wenn beispielsweise 32 Bit Speicher in einem einzelnen Zyklus modifiziert
werden können, dann
lässt sich
einer ersten Näherung
zufolge die doppelte Leistung eines Systems erreichen, das lediglich
16 Bit in einem einzelnen Zyklus modifizieren kann. Aus diesem Grund
haben die Busbreiten zwischen dem Speicher und der Steuerung beginnend mit
8 Bit und schnell über
16 und 32 Bit bis 64 fortschreitend zugenommen. Die Einführung von
Systemen mit 128 Bit ist durch die diesem Verfahren innewohnenden
Probleme verzögert
worden, da die große
Anzahl von Signalen zusätzliche
Signal-, Strom- und Erdungsstifte auf den integrierten Schaltungen der
Steuerung erforderlich macht, eine größere Fläche der Leiterplatte für alle Signale
benötigt
wird und die zusätzlichen
Speichervorrichtungen die Speicherbreite erhalten müssen.
-
In WO 88/09970 wird ein satzadressierter Cache
geschaffen, indem statische Datenpuffer mit einer dynamischen Speicheranordnung
verbunden werden. Jeder Puffer kann eine Reihe von Daten speichern,
und Datenabfragen, die von einem der Puffer abgearbeitet werden
können,
bewirken keine neue Adressoperation im Hauptspeicher.
-
EP-A-0552667 offenbart ebenfalls
den Einsatz von SRAM-Zellen mit einer Cache-Funktion in Bezug auf eine DRAM-Anordnung.
-
Die vorliegende Erfindung schafft
eine Speichervorrichtung, die umfasst:
einen DRAM, umfassend
eine Array aus einer Mehrzahl von Reihen und Spalten von Speicherelementen;
einen
Cache-Speicher, der einstückig
mit dem DRAM ausgebildet ist und wenigstens ein Register umfasst, wobei
das oder jedes Register eine Mehrzahl von Speicherelementen umfasst;
und
Verbindungsmittel, um das oder jedes Register mit dem DRAM
zu verbinden, wobei das Verbindungsmittel für das oder jedes Register ein
Bus mit einer Breite ist, die der Anzahl der Speicherelemente darin entspricht;
dadurch
gekennzeichnet, dass die das oder jedes Register bildenden Speicherelemente
in einer abstandsabgestimmten Beziehung zur DRAM-Array angeordnet
sind.
-
Die Struktur der vorliegenden Erfindung
beschleunigt den Betrieb des Cache-Speichers und seine Wechselwirkung
mit dem DRAM erheblich. Dies ist ein Ergebnis der breiten Buseinrichtung,
die es ermöglicht,
den Inhalt eines gesamten Cache-Registers in einem Schritt aus der
Hauptspeicheranordnung aus- oder in sie einzulesen. Normalerweise kann
jedes Register 640 Bit breit sein, so dass sich eine effektive Busbreite
von 640 Bit ergibt, obwohl größere Breiten,
beispielsweise 5128 Bit, von der vorliegenden Erfindung vorgesehen
sind.
-
Die physikalische Anordnung des Registers bzw.
der Register in abstandsabgestimmter Beziehung zu den Speicherelementen
der DRAM-Anordnung optimiert die Leistung der Register im Zusammenhang
mit dem Hauptspeicher weiter.
-
In einer bevorzugten Ausführung werden drei
Register an die Speicheranordnung angehängt, und jedes Register kann
Informationen von einem Teil des Speichers aufnehmen, vorzugsweise
eine komplette Reihe des Speicherinhalts. Operationen, die den Einsatz
von Daten aus den Speicherbereichen erforderlich machen, die in
diesen Registern dupliziert sind, können daher mit voller Geschwindigkeit laufen.
Die Register werden als am längsten
nicht mehr genutzter (least recently used – LRU) Cache genutzt.
-
In einer weiteren bevorzugten Abwandlung haben
die Register auch angrenzende Rasteroperations(raster operation – ROP)-Einheiten
an das Silizium angrenzend, und diese nutzen den Inhalt der Register,
um modifizierte Reiheninhalte zu bewerten und wieder in den Speicher
zu schreiben und so einfache Speicheroperationen auszuführen. Daher
kann eine große
Anzahl an Bits parallel manipuliert werden, so dass ein erheblicher
Leistungsvorteil erzielt wird, ohne dass sehr breite Busse über das
Silizium oder die Leiterplatte geführt werden müssen.
-
Die vorliegende Erfindung weist daher
Vorteile dahingehend auf, dass eine Speichervorrichtung geschaffen
wird, die alle Vorteile des Seitenmodusbetriebes aufweist, ohne
dass jedoch FIFOs erforderlich sind, um Seitenkonkurrenz und die
damit verbundene Verringerung der Leistung aufzuheben. Des weiteren
lässt die
vorliegende Erfindung die größtmögliche Breite
der Speichermodifikation innerhalb eines einzelnen Speicher-Zeitzyklus zu.
-
Weitere Merkmale und Vorteile der
vorliegenden Erfindung werden aus der folgenden Beschreibung einer
bevorzugten Ausführung
ersichtlich, die unter Bezugnahme auf die beigefügten Zeichnungen als Beispiel
dargestellt wird, wobei:
-
1 eine
schematische Zeichnung einer ersten Ausführung der vorliegenden Erfindung
ist; und
-
2 eine
schematische Zeichnung einer weiteren bevorzugten Ausführung ist.
-
In 1 ist
die Speicheranordnung der Hauptanzeigespeicher und ist in dieser
Ausführung als
DRAM ausgeführt.
-
Die Struktur der hier beschriebenen
Vorrichtung ähnelt
der in EP-A-0690430 sowie US-5,694,143 beschriebenen stark, und
daher sollte für
ausführlichere
konstruktive Details auf diese Dokumente Bezug genommen werden.
Die Funktion der Vorrichtung unterscheidet sich jedoch dahingehend
erheblich, dass bei der vorliegenden Erfindung die Vorrichtung als
Cache-Speicher betrieben wird, wie dies oben und im Folgenden ausführlicher
beschrieben ist.
-
Ein Satz breiter Register wird direkt
an den DRAM-Speicherbereich angehängt, wobei jedes Register eine
vollständige
Reihe des Speicherinhaltes aufnimmt. Bei drei Registern wird der
Vorteil erreicht, dass 3 Seiten des DRAM effektiv genutzt werden, wodurch
Operationen möglich
sind, die die sequentielle Verwendung von Werten aus 3 Bereichen
des Speichers erforderlich machen, um mit voller Geschwindigkeit
zu laufen. Diese Register werden in abstandsangepasster Form an
den Speicherbereich angrenzend konfiguriert, um maximale Geschwindigkeit
und Flächennutzung
zu erreichen. Die Register werden als am längsten nicht mehr genutzter (LRU)-Cache
verwendet, um Operationen an dem Speicher zu beschleunigen.
-
Beim Zugreifen auf Speicher zum Ändern der gespeicherten
Daten ist es häufig
erforderlich, Zugriffe auf mehrere separate Bereiche des Speichers
zu verschachteln. Da diese drei Bereiche normalerweise auf verschiedenen
Reihen der Speichervorrichtungen liegen, erbringt der Speichermodusbetrieb der
Speicher eingeschränkten
Nutzen. Das Hauptproblem besteht darin, dass in jedem Augenblick
nur eine "Seite" aktiv sein kann.
-
Der erste Schritt bei dem neuen Verfahren besteht
darin, eine Anzahl von Registern, die im Folgenden mit S, D und
P bezeichnet werden, direkt an den Speicherbereich anzufügen, die
jeweils eine Reihe von Daten aufnehmen können, wenn diese aus dem Speicherbereich
gelesen wird. Wenn ein Zugriff auf den Speicher erfolgt, werden
die Daten zunächst in
eines der Register gelesen, dann wird auf das Register zugegriffen,
um die erforderlichen Daten zurückzuführen. Anschließende Zugriffe
auf die gleiche Reihe können
von dem Register direkt schneller erfolgen als aus dem DRAM-Speicherbereich.
Ein Algorithmus, wie beispielsweise der LRU-Algorithmus, wird verwendet,
um zu entscheiden, in welches Register gelesen werden sollte, wenn
keines der drei Register bereits über die benötigte Reihe verfügt. Es ist
nunmehr möglich,
sequentiell Werte aus den drei Bereichen des Speichers zu verarbeiten,
ohne dass es zu Leistungsverlust aufgrund von Seitenmodus-Fehlern
kommt. Die Register werden als Teil der DRAM-Anordnung ausgeführt, wobei
ein Anordnungsabstand an den der DRAM-Kerntechnologie angepasst
wird. Dies hat den Vorteil sehr effektiver Konfiguration, bei der
Siliziumfläche
eingespart wird und schneller Betrieb möglich ist.
-
Die Anzahl von Bits, die in jedem
Register gespeichert werden, und die Anzahl von Registern müssen nicht
der Beschreibung entsprechen, sondern es ist möglich, weniger als eine komplette
Reihe von Speicherdaten bei gewissem Leistungsverlust in jedem Register
zu speichern oder die Anzahl von Registern auf höhere oder niedrigere Werte
zu ändern.
-
Obwohl der Einsatz der Register,
wie er oben beschrieben ist, zu einer Leistungssteigerung führt, wird
der Gesamtvorteil dennoch durch die Breite des Datenbusses beschränkt, der
zum Zugriff auf den Speicher eingesetzt wird. Um dies zu verbessern, kann
Logik, die einfache Speicheroperationen, so beispielsweise Rasteroperationen
in einem Grafiksystem durchführt,
dupliziert und direkt an die Register angehängt werden, wobei die Logik
dazu dient, ein Bit zu manipulieren, das für die Registerwerte gültig ist,
die sie benötigt,
und zu denen sie das Ergebnis zurückführt. Dies ist in 2 dargestellt. Das heißt, die
Register weisen an das Silizium angrenzend einen Satz von abstandsangepassten
Rasteroperations(ROP)-Einheiten auf, die den Inhalt der Register nutzen,
um einen modifizierten Reiheninhalt zu bewerten und wieder in den
Speicher zu schreiben.
-
Dieses Verfahren macht es überflüssig, die Daten über sehr
breite Busse in der Vorrichtung zu übertragen, d. h. alle Daten
werden für
die einfachen Operationen lokal verarbeitet. Die Rasteroperations-Einheit
(ROP) ist in einer abstandsangepassten Form zur direkten Anbringung
an den Registern konfiguriert, so dass hohe Flächenausnutzung und hohe Leistung
erreicht werden. Die zu der normalen Architektur äquivalente
Datenbusbreite ist nunmehr die Breite einer Speicherreihe, die normalerweise
1024 oder 2048 Bit beträgt,
wodurch eine große
Leistungssteigerung gegenüber
einem System mit einem 64 Bit breiten Datenbus erreicht wird.
-
In einem Grafiksystem ist es auch
von Vorteil, die Breite der Speicherreihe, der Register und der
Rasteroperations-Einheit auf die Breite des angezeigten Bildes zu
beziehen, das normalerweise 1280 Pixel breit sein kann, so dass
Register- und andere Breiten von 1280, 640 oder 320 wirkungsvolle
Zahlen sind. Es ist nicht notwendig, dass der Speicher, die Register
und die ROP-Einheit sämtlich
die gleiche Breite haben, so können
beispielsweise eine Speicherbreite von 1280 Bit, eine Registerbreite
von 640 Bit und eine Breite der ROP-Einheit von 32 Bit ein System
mit hoher Leistung ergeben.
-
Die ROP-Einheit kann möglicherweise
lediglich eine Teilgruppe aller möglichen ROP-Funktionen erfüllen, und zwar insbesondere
eine Teilgruppe, die so ausgewählt
wird, dass die Funktionen ausgeführt werden,
die den Großteil
der betreffenden Arbeit bilden. Die verbleibenden ROP-Funktionen
können dann
von der Haupt-CPU oder einer anderen Verarbeitungseinheit mit niedriger
Geschwindigkeit, jedoch lediglich mit einem geringen Gesamtleistungsverlust
durchgeführt
werden.
-
Die kombinierte Funktion von Speicheranordnung,
Registern und ROP-Einheit kann selbst auf dem Silizium dupliziert
werden, um höhere
Leistung zu erreichen, so können
beispielsweise 8 Kopien verwendet werden, um die Leistung eines
Anzeigesystems mit 8 Bit pro Pixel zu steigern. Jedes Bit der Pixeltiefe
wird in einem separaten Block gespeichert, wobei alle 8 Bits parallel
verarbeitet werden. Dies führt
zu einer effektiven Datenbusbreite, die 8-mal größer bzw. 8 × 640, ist, wodurch ein effektiv
5120 Bit breiter Datenbus mit einer entsprechenden Leistungsverbesserung
entsteht.
-
Aus der Kombination dieser verschiedenen Nutzungen
der Register ergibt sich ein Vorteil. Wenn sie für die Beschleunigung der Rasteroperation
erforderlich sind, bilden sie einen breiten, lokal verfügbaren Satz
von Eingängen
zu der ROP-Einheit, wodurch sich die Leistung erheblich verbessert.
Beim Einsatz bei Cache-Rasteroperationen, die durch die Haupt-CPU
oder eine andere Verarbeitungsvorrichtung durchgeführt werden,
ermöglichen
sie den optimalen Satz im Cache gespeicherter Daten, um verschwendete
Speicherzyklen zu vermeiden.
-
Schließlich ergibt sich durch sie,
wenn auf den Anzeigespeicher unstrukturiert zugegriffen wird, der
Vorteil, der von einem Standard-Mehrzeilen-LRU-Speicher zu erwarten
ist, sowie der breite Buszugriff auf den Hauptspeicher, der oben
erläutert wurde.
-
Diese integrierte Grafikanzeigevorrichtung kann
besonders vorteilhaft in dem System eingesetzt werden, das in der
internationalen Patentanmeldung WO 96/17301 beschrieben ist.