-
Die
vorliegende Erfindung betrifft einen Speicher-Controller für einen
IC mit externem DRAM, insbesondere einen Speicher-Controller mit einem
Befehlsplaner (Command-Scheduler).
-
In
der Statistik der am meisten verkauften bespielten Bilddatenträger in Deutschland
hat im letzten Jahr die DVD erstmals die Videokassette abgelöst. Es ist
somit davon auszugehen, dass in absehbarer Zukunft DVD-Videorekorder
den analogen Videorekorder als Aufnahmegerät ablösen werden. Insbesondere der sich
z. Z. schnell verbreitende digitale Fernsehempfang (DVB) wird auch
den Wunsch nach digitaler Speicherung wecken. Es zeigt sich hier
aber bereits, dass selbst moderne Kompressionsverfahren wie MPEG-4
nur die Speicherung von durchschnittlich zwei Kinofilmen auf einer
beschreibbaren DVD ermöglichen.
Im Zuge von High Definition Television (HDTV) wird daher die Entwicklung
neuer optischer Speichermedien mit größerer Speicherkapazität vorangetrieben.
Ein solches optisches Speichermedium ist beispielsweise die Blu-ray
Disk mit einer Kapazität
von bis zu 54 GB. Zukünftige
Laufwerke für
optische Speichermedien sollten vorzugsweise zumindest die Formate
von Blu-ray Disk, DVD und CD sowohl lesend als auch schreibend unterstützen. Zu diesem
Zweck wird ein IC zur Steuerung des optischen Laufwerkes benötigt, der
die genannten Formate beherrscht. Auch im Bereich der Bildverarbeitung,
z.B. in DVB-Empfängern,
werden leistungsfähige
IC benötigt.
-
Zur
Verringerung der Kosten digitaler Endverbraucher-Geräte werden
heutzutage monolithische IC-Lösungen
verwendet, sogenannte Ein-Chip-Lösungen,
wo immer dies möglich
ist. Dies bedeutet, dass eingebettete zentrale Recheneinheiten (CPU,
central processing unit) und/oder digitale Signal-Prozessoren (DSP, digital
signal processor) anstelle von dedizierter Hardware verwendet werden,
um die Entwicklungszeit der Systeme zu reduzieren. Zum Speichern
von Instruktionen und Daten dieser Prozessoren und zum Puffern des Datenstroms
eines Laufwerks oder eines Videodatenstroms werden große Speicher
mit bis zu mehreren Megabyte benötigt.
Um die Kosten des Speichers gering zu halten, wird üblicherweise
DRAM (dynamic RAM) anstelle von SRAM (static RAM) eingesetzt. Vorzugsweise
wird für
das DRAM ein SDRAM (synchronous DRAM) verwendet, aber auch andere
Arten von DRAM, wie DDR-RAM (double data rate RAM), ESDRAM (enhanced synchronous
DRAM), SLDRAM (synchronous link DRAM) oder RDRAM (Rambus DRAM) finden
Verwendung. Im Folgenden wird entweder allgemein auf DRAM oder speziell
auf SDRAM Bezug genommen. Selbstverständlich beschränkt sich
die Erfindung nicht auf die Verwendung von SDRAM.
-
Eingebettetes
DRAM ist verhältnismäßig teuer
und IC-Prozesse, die eingebettetes DRAM unterstützen, sind selten. Daher wird
in der Regel externes DRAM verwendet. Um die Kosten für die IC-Entwicklung gering
zu halten, wird mit einer begrenzten Anzahl von Pins gearbeitet,
insbesondere um eine geringe Baugröße des ICs zu erzielen. Aufgrund
dieser Beschränkung
ist oftmals der externe Datenbus zum DRAM schmaler als der interne
Datenbus. Dies führt
zu einem Engpass. Darüber
hinaus wird das DRAM zum Speichern unterschiedlichster Daten genutzt,
d.h. es wird gemeinsam von den vorhandenen CPU, DSP und Echtzeit-Datenströmen verwendet.
Dies verschlimmert den Engpass zusätzlich.
-
Typische
SDRAM-Module bestehen aus vier unabhängigen Speicherbänken. Jede
Speicherbank besteht aus Zeilen, die wiederum aus Spalten bestehen.
Um einen konkreten Datenwert anzusprechen, muss die entsprechende
Zeile der entsprechenden Speicherbank zunächst aktiviert werden ('activate'). Nach der Aktivierung,
die zwei bis vier Taktzyklen in Anspruch nimmt, kann der Datentransfer
durch das Senden eines Lese- ('read') oder Schreibbefehls
('write') zusammen mit der
gewünschten
Spaltenadresse initiiert werden. Nach dem Datentransfer wird die
Speicherbank 'vorgeladen' ('precharge'), um die offene
Zeile zu deaktivieren und die Speicherbank für den nächsten Aktivierungsbefehl vorzubereiten. 'Vorladen' bedeutet konkret,
dass eine Speicheradresse bereits zum Zugriff vorbereitet wird,
weil das System von vorneherein weiß, dass in den nächsten Taktzyklen
eine Anfrage an diese Adresse kommen wird.
-
Üblicherweise
wird ein Burst-Transfer verwendet um mehrere Datenwerte mit nur
einem einzigen Lese- oder Schreibbefehl zu lesen oder zu schreiben.
Der Zugriff startet an einer vorgegebenen Stelle (Spalte) und wird über eine
programmierte Anzahl von Stellen fortgesetzt. Nach der Initiierung
eines neuen Bursts ist der Befehlsbus frei und kann für das Aktivieren
oder Vorladen anderer Speicherbänke
genutzt werden.
-
Die
Speicherbänke
werden also unabhängig
voneinander kontrolliert, sie teilen sich aber die gleichen Befehlsleitungen.
In jedem Taktzyklus kann daher nur ein Befehl abgesetzt werden.
-
Um
mit der geringstmöglichen
Anzahl an Pins und einer kleinen Baugröße auszukommen, muss der Datendurchsatz
des externen Datenbusses zum DRAM-Modul maximiert werden. Ein Problem
dabei ist, das DRAM wie oben am Beispiel von SDRAM erläutert, mehrere
Taktzyklen zum Aktivieren von Zeilen und zum 'Vorladen' von Speicherbänken benötigt. Dies führt zu Wartezeiten
von mehreren Taktzyklen zwischen den Datentransfers. Abhängig von
der Länge
der Lese- oder Schreibbursts können
diese Wartezeiten dazu führen, dass
insgesamt mehr Taktzyklen ungenutzt bleiben als Taktzyklen für den Datentransfer
verwendet werden. Ein Beispiel dafür liefert 1a),
die zwei Schreibbursts über
je vier Taktzyklen zeigt. Zwischen den Schreibbursts liegen sieben
Taktzyklen ohne Datentransfer. Zum Verbergen der Wartezeiten muss
der nächste
Datentransfer bereits vorbereitet werden, während ein Lese- oder Schreibburst
im Gange ist. Ein Beispiel dafür
ist in 1b) dargestellt, die ebenfalls
zwei Schreibbursts über
je vier Taktzyklen zeigt. Die Wartezeiten sind hinter anderen Datentransfers
verborgen.
-
Es
ist bekannt, zur Beseitigung des Engpasses einen breiteren externen
Datenbus zum DRAM-Modul oder alternativ ein eingebettetes SRAM zu
verwenden, um so die Arbeitslast des externen Datenbusses zu verringern.
Beide Lösung
sind in der Implementierung relativ teuer.
-
Es
ist eine Aufgabe der Erfindung, einen Speicher-Controller vorzuschlagen,
der einen hohen Datendurchsatz mit reduzierten Wartezeiten ermöglicht und
kostengünstig
zu implementieren ist.
-
Die
Erfindung wird im Folgenden am Beispiel eines einzelnen DRAM-Moduls
erläutert.
Es ist ebenfalls möglich,
mehrere Speichermodule zu verwenden, indem alle Speichermodule mit
dem selben Datenbus und dem selben Befehlsbus verbunden werden.
In diesem Fall wird ein Chip-Freigabesignal verwendet, um das gewünschte Modul
auszuwählen.
-
Um
ein oder mehrere DRAM-Module gemeinsam für mehrere Anwendungen zu verwenden
muss sichergestellt werden, dass die Speicherbereiche für die verschiedenen
Prozessoren und den Echtzeit-Datenstrom physikalisch getrennt sind.
Dies bedeutet, dass alle eine oder mehrere speziell zugeordnete DRAM-Speicherbänke haben.
Diese Anforderung kann entfallen, wenn gewährleistet ist, dass keine aufeinanderfolgenden
Zugriffe auf eine gemeinsam verwendete Speicherbank auftreten.
-
Gemäß der Erfindung
wird bei einem Verfahren zum Kommunizieren eines ICs mit einem externen DRAM,
wobei das externe DRAM zumindest zwei Speicherbänke aufweist und über zumindest
einen Kanal mit dem IC kommuniziert, das Senden von Speicherbank-Befehlen gemäß einer
statischen Prioritätsvergabe für Befehle
und einer dynamischen Prioritätsvergabe
für Kanäle priorisiert.
-
Für die Erfindung
ist es von Vorteil, wenn die Zustände der DRAM-Speicherbänke durch
zugeordnete State-Machines abgebildet werden. Dies erlaubt es, alle
Speicherbänke
unabhängig
voneinander zu kontrollieren. Die State-Machines empfangen für jeden
Zugriff den Typ des Transfers (Lesen oder Schreiben), die Zeilennummer
und die Spaltennummer. Durch das Einhalten bestimmter Regeln für die zeitliche
Koordinierung kontrollieren sie die Speicherbänke, indem sie Befehle an den
Befehlsplaner schicken. Jeder Kanal ist dabei mit der State-Machine
verbunden, die die zugehörige
Speicherbank kontrolliert. Falls ein Kanal auf mehrere Speicherbänke zugreifen
darf, ist ein Netzwerk notwendig. Der Befehlsplaner stellt sicher,
dass die gleiche Speicherbank nicht mehrfach nacheinander angesprochen
wird. Zwischen zwei Zugriffen auf eine Speicherbank erfolgt stets
ein Zugriff auf eine andere Speicherbank. Alternativ werden zwei
aufeinanderfolgende Zugriffe auf eine Speicherbank jedoch dann zugelassen,
wenn sie auf die gleiche Zeile der Speicherbank erfolgen, so dass
keine Wartezeiten durch das Aktivieren oder Vorladen entstehen.
Durch die Prioritätsvergabe werden
die anhängigen
Befehle derart gemäß ihrer
Fähigkeit,
einen neuen Burst zu starten, sortiert, dass eine optimale Nutzung
des DRAM-Datenbusses erreicht wird. Dies bedeutet, dass Lese- und
Schreibbefehle eine hohe Priorität
haben, gefolgt von Aktivierungsbefehlen, die eine Voraussetzung
für Lese-
oder Schreibbefehle sind. Vorladebefehle erhalten die niedrigste
Priorität,
da sie nicht Teil des aktuellen Transfers sind. Vorladebefehle sind
nur für
aufeinanderfolgende Transfers notwendig, sie können daher verzögert werden.
Wenn alles Bursts eine Länge
von vier oder mehr Takten haben, ist die Arbeitslast der Befehlsleitungen
gering genug, um Befehle mit niedriger Priorität ohne lange Verzögerung zu
senden. Um die Reihenfolge der wartenden Befehle festzulegen, müssen die
Befehle analysiert, gruppiert und gemäß ihrer Fähigkeit, einen Datentransfer
so schnell wie möglich
zu starten, sortiert werden:
-
Durch
die Erfindung ist die erreichte Bandbreite des DRAM-Moduls nah am physikalischen
Maximum. Bei großer
Arbeitslast sind die Latenzen durch Activate und Precharge vollständig versteckt,
so dass die Zugriffszeiten weiterhin kurz sind. Die anspruchsvolle
Aufgabe, für
einige Kanäle
Zugriffe mit geringer Latenz zu ermöglichen und gleichzeitig für andere
Kanäle
einen hohen Datendurchsatz zu gewährleisten, wird durch den erfindungsgemäßen Speicher-Controller
sehr gut gelöst.
-
Gemäß einem
weiteren Aspekt der Erfindung weist ein Speicher-Controller für einen IC mit einem externen
DRAM, wobei das externe DRAM zumindest zwei Speicherbänke aufweist
und über
zumindest einen Kanal mit dem IC kommuniziert, einen Befehlsplaner
auf, der das Senden von Speicherbank-Befehlen gemäß einer
statischen Prioritätsvergabe
für Befehle
und einer dynamischen Prioritätsvergabe
für Kanäle priorisiert.
-
Vorteilhafterweise
weist ein Gerät
zum Lesen und/oder Beschreiben optischer Speichermedien einen erfindungsgemäßen Speicher-Controller
auf oder verwendet ein erfindungsgemäßes Verfahren zum Kommunizieren
eines ICs mit einem externen DRAM.
-
Zum
besseren Verständnis
soll die Erfindung nachfolgend anhand der 1 bis 5 erläutert werden.
Gleiche Bezugszeichen bezeichnen dabei gleiche Elemente. Selbstverständlich ist
die Erfindung nicht auf die gezeigten Ausführungsbeispiele beschränkt. Merkmale
der Erfindung können
ohne Weiteres kombiniert oder abgewandelt werden, ohne den Geltungsbereich
der Erfindung zu verlassen. Es zeigen:
-
1 zwei
Beispiele für
zwei Schreibbursts über
je vier Taktzyklen;
-
2 das
Blockschaltbild eines erfindungsgemäßen Speicher-Controllers;
-
3 das
Blockschaltbild eines Befehlsplaners;
-
4 ein
Zustandsdiagramm der Prioritätsvergabe;
und
-
5 ein
Flussdiagramm des Befehlsplaners.
-
2 zeigt
das Blockschaltbild eines erfindungsgemäßen Speicher-Controllers am
Beispiel eines SDRAM-Controllers 1 in einem System mit
drei Kanälen:
eine über
einen AMBA-Bus 8 verbundene CPU sowie Input 6 und
Output 7 eines Echtzeitdatenstroms. Jeder Speicherbank 21, 22, 23, 24 im
SDRAM-Modul 2 ist eine State-Machine 41, 42, 43, 44 einer
Speicherbank-Kontrolleinheit 4 zugeordnet, die den jeweiligen
Zustand der Speicherbank 21, 22, 23, 24 abbildet
und für
die Einhaltung der Wartezeiten und der korrekten Zustandsabfolge
zuständig
ist. Diese State-Machines 41, 42, 43, 44 senden
ihre Befehle für
die Speicherbänke 21, 22, 23, 24 an
einen Befehlsplaner 3 (Command-Bus-Scheduler), der über die
Vergabe des externen Befehls- und Daten-Busses wacht. In jedem Takt-Zyklus sendet der
Befehlsplaner 3 einen nach Priorität ausgewählten Befehl an das DRAM-Modul 2.
Ihre Transferaufträge
erhalten die State-Machines 41, 42, 43, 44 direkt
von den drei Kanälen
(Input 6, AMBA 8 und Output 7), die von
einer Speicherbank-Planungseinheit 5 an Hand ihrer Adresse
und Priorität
an die entsprechende Speicherbank 21, 22, 23, 24 weitergeleitet
werden. Die Speicherbank-Planungseinheit 5 enthält ein Netzwerk
um allen Kanälen 6, 7, 8 den
Zugriff auf alle Speicherbänke 21, 22, 23, 24 zu
ermöglichen.
Der Input-Kanal 6 übernimmt
bei einem Lesezugriff auf das Speichermedium die Daten von einer
ECC-Einheit (ECC: Error Correcetion Code, nicht dargestellt), der
Output-Kanal 7 reicht die Daten an einen ATAPI-Block (nicht
dargestellt) weiter. Beide Kanäle 6, 7 beinhalten
FIFOs (nicht dargestellt), um ein Stocken des Datenflusses zu vermeiden.
Bei einem Schreibzugriff auf das Speichermedium erhält der Input-Kanal 6 die
Daten vom ATAPI-Block
und der Output-Kanal 7 sendet sie an die ECC-Einheit weiter.
Der AMBA-Kanal 8 (AMBA: Advanced Microcontroller Bus Architecture)
besteht aus einem AMBA-Slave, der zudem auch Zugriffe auf ein Registerfile 34 (siehe 3)
ermöglicht.
Es enthält
einen Lese- und einen Schreibcache (nicht dargestellt), um die Blockierungsdauer
des AMBA-Busses zu reduzieren. Da der interne Zustand jeder der
vier SDRRM-Speicherbänke 21, 22, 23, 24 durch
eine eigene State-Machine abgebildet wird, kann es bereits beim
Zugriff auf eine State-Machine 41, 42, 43, 44 zur
Konkurrenz durch die drei Kanäle 6, 7, 8 kommen,
die nicht durch einen vorgeschalteten Planungs-Algorithmus behandelt
wird. Jedoch kann gewährleistet werden,
dass diese Konkurrenzsituation nur selten auftritt. Daher wird dem
Echtzeitdatenstrom der Sektordaten hier Vorrang gegenüber den
ARM-Zugriffen gewährt.
-
Ein
detaillierteres Blockschaltbild des Befehlsplaners 3 ist
in 3 dargestellt. Die eingehenden Befehle der State-Machines 41, 42, 43, 44,
die die vier Speicherbänke 21, 22, 23, 24 verwalten,
werden von einem Befehlsanalysator 31 analysiert. Dabei
wird für
jeden der fünf
möglichen
Befehle – Activate,
Read, Write, Precharge und Burst-Terminate – ermittelt, ob er mindestens
einmal anliegt. Wenn dies der Fall ist, wird das erste Vorkommen
an einen Planer 32 übermittelt.
Es ist also nur relevant, ob ein Befehl wartet; die Speicherbank 21, 22, 23, 24 oder
der in diesem Moment dazugehörige
Kanal 6, 7, 8 sind ohne Belang. Der Planer 32 hat
Zugriff auf ein Registerfile 34, das bestimmte Arbeitsparameter
für den
Planer 32 enthält.
-
Der
Planer 32 selbst prüft
zuerst das Vorhandensein eines globalen Befehls. Liegt ein Befehl
zur Programmierung des Mode-Registers,
das die Operationsparameter des DRAM enthält, für einen globalen Refresh oder
ein globales Precharge an, so wird dieser direkt ausgeführt. Da
von der Speicherbank-Kontrolleinheit 4 sichergestellt
wird, dass ein globaler Befehl nur auftreten kann, wenn die Speicherbänke 21, 22, 23, 24 sich
im Ruhezustand (Idle) befinden, ist hier keine weitere Prüfung notwendig.
-
Wird
als globaler Befehl ein NOP (No Operation) übermittelt, so darf ein Speicherbank-Befehl
an das DRAM-Modul 2 gesendet werden. Das Senden von Speicherbank-Befehlen
erfolgt gemäß einer
statischen Prioritätsvergabe
für Befehle
und einer dynamischen Prioritätsvergabe
für Kanäle 6, 7, 8 die
von einer Prioritätsvergabeeinheit 33 ausgeführt wird.
Dabei ist die Priorität
von Befehlen höher
als die der Kanäle 6, 7, 8.
Das bedeutet, dass erst ein Befehlstyp gewählt wird und, wenn es mehrere
Kanäle 6, 7, 8 gibt,
die diesen Befehl absetzen wollen, anschließend der Kanal 6, 7, 8 gewählt wird,
der den Befehl absetzen darf.
-
Bei
den Befehlen hat die höchste
Priorität
der Burst-Terminate-Befehl,
um Bursts zu beenden. Die zweithöchste
Priorität
haben die Read- und Write-Befehle, da sie einen neuen Burst einleiten
und ihr schnellstmögliches
Absetzen somit die Voraussetzung für eine gute Auslastung des
Datenbusses ist. Die nächst
niedrigere Priorität
hat der Activate-Befehl, der zum Öffnen einer Zeile dient. Da
das Öffnen
einer Zeile Voraussetzung für
das Starten eines Bursts ist, liegt die Priorität des Activate-Befehls oberhalb
der des Precharge-Befehls, welcher die niedrigste Priorität hat, da
er nach Beendigung eines Bursts ausgeführt wird und, solange kein
Folgezugriff ansteht, die Gesamtleistung nicht beeinflusst.
-
Die
dynamische Priorisierung der Kanäle 6, 7, 8 erfolgt
durch einen Algorithmus, wie er in Form einer Final-State-Machine,
d.h. einem Zustandsdiagramm, in 4 dargestellt
ist. Der gezeigte Algorithmus kontrolliert die Zugriffe einer CPU über einen
AMBA-AHB (Advanced High-performance Bus) und eines Echtzeit-Datenstroms
mit seinen beiden Kanälen
(Input und Output). Die Zustände
stellen die Prioritätsstufen
dar. Dabei hat der im oberen Zustand gezeigte Kanal die höchste Priorität und der
untere Kanal die niedrigste Priorität. Die Zustandsübergänge stellen
den Kanal dar, der letztlich einen Lese- oder Schreibburst starten
kann. Ein eventueller Zusatzkanal für einen Flash-Controller, beispielweise
zum Übermitteln
von Firmware etc., ist nicht berücksichtigt,
da er nicht mit den anderen Kanälen
konkurriert.
-
Wie
zu sehen ist, wird die Abfolge Input → AMBA → Output → AMBA immer eingehalten, wenn
alle drei Kanäle
aktiv sind. Kann der Kanal mit der höchsten Priorität keinen
Befehl absetzen, da er gerade nicht aktiv ist oder sein Befehl eine
zu geringe Priorität
besitzt, erhält
der Kanal, der letztlich seinen Befehl absetzen kann, im nächsten Taktzyklus
die niedrigste Priorität.
Gleichzeitig wird aber sichergestellt, dass im nächsten Taktzyklus der AMBA-Kanal 8 die
höchste
Priorität
erhält,
wenn er im aktuellen Taktzyklus nicht die höchste Priorität hat und
ein anderer Kanal zum Zuge kommt. Hat der AMBA-Kanal 8 die
höchste
Priorität
erhalten, verliert er sie nur wieder, wenn er einen Befehl absetzen
kann. Dadurch wird für
den ARM die geringstmögliche
Latenz sichergestellt.
-
Das
gezeigte Zustandsdiagramm garantiert niedrige Verzögerungszeiten
für die
CPU-Zugriffe, da der AMBA-Kanal 8 nach jedem Burst über den
Inputkanal 6 oder den Outputkanal 7 die höchste Priorität erhält. Weiterhin
stellt das Zustandsdiagramm eine gerechte Benutzung des Datenbusses
und abwechselnde Zugriffe auf die Speicherbänke 21, 22, 23, 24 sicher.
Der Algorithmus ist für
CPU-Zugriffe mit hoher Priorität
und damit geringer Latenz bei gleichzeitigem garantierten Datendurchsatz
für den
Echtzeit-Datenstrom ausgelegt. Der Datendurchsatz wird durch die
Länge der
Lese- und Schreibbursts
durch den Inputkanal 6 und den Outputkanal 7 beim
Datentransfer vom und zum DRAM 2 festgelegt.
-
Die
Entscheidung, welcher Kanal seinen Befehl absetzen darf, soll nachfolgend
anhand des in 5 dargestellten Flussdiagramms
erläutert
werden. Möchte
eine Speicherbank-FSM (FSM: Final State-Machine) ihren Burst beenden,
hat dies die höchste
Priorität.
Wenn folglich nach den Start 9 bei der Analyse 10 ein Burst-Terminate
(BST) gefunden wurde, wird der laufende Burst abgebrochen. Dies
kann auf zwei Arten geschehen: zum einen durch das einfache Weitersenden 12 des
Burst-Terminate-Befehls,
zum anderen durch das Starten 14 eines neuen Bursts. Bevor
nun ein Burst-Terminate abgesetzt wird, wird geprüft 11,
ob ein Read- oder Write-Befehl ebenfalls auf sein Absetzen wartet.
Ist dies der Fall, wird dieser Befehl anstelle des Burst-Terminate
abgesetzt 14. Bei der Analyse wird lediglich geprüft, ob mindestens
ein Read- oder Write-Befehl anliegt. Daher wird vor dem Absetzen 14 des
Read- oder Write-Befehls
anhand der dynamischen Prioritätsvergabe
für die
Kanäle
geprüft,
welches der Kanal ist, der einen Read- oder Write-Befehl und die höchste Priorität hat. Dieser
Kanal darf dann seinen Befehl absetzen. Die Wahl des Kanals wird
der Prioritätsvergabe mitgeteilt,
die dadurch im nächsten
Taktzyklus in einen neuen Zustand mit einer neuen Verteilung der
Prioritäten
geht. Die einzige Einschränkung
bei der Ersetzung des Burst-Terminate-Befehls durch einen Read-
oder Write-Befehl liegt darin, dass ein Leseburst nicht durch einen
Schreibburst beendet werden darf, da sonst der Speicher-Controller 1 und
das DRAM-Modul 2 gleichzeitig den Datenbus treiben. Bei
Verwendung einer geringeren Taktfrequenz lässt sich diese Einschränkung aber
umgehen, da die Hold-Zeit der Ausgänge des DRRM konstant ist und
nicht von der Taktfrequenz abhängt.
-
Liegt
kein Burst-Terminate-Befehl an, so wird auf das Vorhandensein von
Read- oder Write-Befehlen geprüft 13 und
bei Vorhandensein gemäß der Prioritätsvergabe
der Befehl gesendet 14. Liegen auch keine Read- oder Write-Befehle
an, so wird auf Activate-Befehle geprüft 15. Wartet ein
solcher Activate-Befehl,
so wird er gesendet 16. Ist kein Activate-Befehl vorhanden,
so wird auf Precharge-Befehle geprüft 17. Ein eventuell
anliegender Precharge-Befehl wird gesendet 18. Sollte kein
Kanal 6, 7, 8 bzw. keine Speicherbank 21, 22, 23, 24 einen
Befehl absetzen wollen, wird ein NOP (No Operation) gesendet. Wird
ein Befehl an das DRAM-Modul 2 abgesetzt, wird die Speicherbank-FSM,
von der dieser Befehl stammt, durch ein Signal informiert, wodurch
sie im folgenden Taktzyklus in einen neuen Zustand geht.
-
Um
bei der Befehlsübermittlung
die Setup- und Hold-Zeiten des DRAM-Moduls 2 einzuhalten,
wird das DRAM-Modul 2 vorzugsweise mit einem invertierten
Systemtakt betrieben. Die Befehle und die Daten eines Schreibzugriffes
werden vom DRAM-Modul 2 somit mit einer Verzögerung von
einem halben Taktzyklus plus der Signallaufzeit durch die Input-
und Output-Treiber und der Signallaufzeit auf der Schaltkreisplatine übernommen.