-
Querverweis auf verwandte
Anmeldungen
-
Diese
Anmeldung ist verwandt mit der US-Patentanmeldung Seriennummer _/_,_ Anwaltsaktenzeichen
QIMO/0263, mit dem Titel CONTROL PROTOCOL AND SIGNALING IN A NEW
MEMORY ARCHITECTURE, der US-Patentanmeldung Seriennummer _/_,_,
Anwaltsaktenzeichen QIMO/0267, mit dem Titel METHOD FOR ACCESSING
A NON-VOLATILE MEMORY VIA A VOLATILE MEMORY INTERFACE, und der US-Patentanmeldung
Seriennummer _/_,_, Anwaltsaktenzeichen QIMO/0269, mit dem Titel
METHOD FOR ACCESSING CONTROL REGISTERS VIA A MEMORY DEVICE, die
alle am 6. Juli 2006 eingereicht wurden. Jede dieser verwandten
Patentanmeldungen ist durch Bezugnahme in ihrer Gesamtheit hierin
aufgenommen.
-
Hintergrund der Erfindung
-
Gebiet der Erfindung
-
Die
Erfindung bezieht sich im Allgemeinen auf ein Zugreifen auf einen
Speicher in einem Computersystem.
-
Beschreibung der verwandten
Technik
-
Viele
moderne elektronische Vorrichtungen, wie z. B. zelluläre Telefone,
PDAs, tragbare Musikabspielgeräte,
Haushaltsgeräte
usw. umfassen in der Regel ein eingebettetes Computersystem. Ein
eingebettetes Computersystem enthält in der Regel einen Computerprozessor
(als Host bezeichnet), einen nichtflüchtigen Speicher (wie z. B.
einen Flash-Speicher und/oder einen ROM-Speicher) und einen flüchtigen
Speicher, wie z. B. einen Direktzugriffsspeicher mit dynamischem
Zugriff (DRAM = dynamic random access memory). Der Host kann eine
zentrale Verarbeitungseinheit (CPU = central processing unit), einen
Digitalsignalprozessor (DSP = digital signal processor), eine Mikrosteuerungseinheit
(MCU = microcontroller unit) oder eine Speicherdirektzugriffsdatenübertragungsvorrichtung
(DMA-Datenübertragungsvorrichtung;
DMA = direct memory access) umfassen. Das eingebettete System kann
auch eine Nichtflüchtiger-Speicher-Steuerung
umfassen, die verwendet werden kann, um den nichtflüchtigen
Speicher zu steuern und/oder auf denselben zuzugreifen.
-
In
dem eingebetteten System kann auf den flüchtigen Speicher in der Regel
schneller zugegriffen werden als auf den nichtflüchtigen Speicher. So kann z.
B. ein Code, der durch den Host ausgeführt wird, in dem flüchtigen
Speicher gespeichert werden und es kann durch den Host von dem flüchtigen
Speicher aus auf denselben zugegriffen werden. Da der flüchtige Speicher
jedoch in der Regel eine Leistungsquelle benötigt, um die in demselben gespeicherten
Daten aufrechtzuerhalten, wird der flüchtige Speicher in der Regel
gelöscht,
wenn das eingebettete System abgeschaltet wird. Dementsprechend
kann der nichtflüchtige
Speicher, der in der Regel keine Leistungsquelle benötigt, um
gespeicherte Daten aufrechtzuerhalten, verwendet werden, um den
durch den Host ausgeführten
Code zu speichern, während
das eingebettete System abgeschaltet wird. Wenn das eingebettete
System eingeschaltet wird (z. B., wenn das eingebettete System in
einen Rücksetzzustand
eintritt), kann der durch das Hostsystem verwendete Code in den
flüchtigen
Speicher geladen werden und durch den Host von dem flüchtigen
Speicher aus ausgeführt
werden. Der Prozess des Ladens eines in dem nichtflüchtigen
Speicher gespeicherten Codes in den flüchtigen Speicher und Ausführen des
Codes von dem flüchtigen
Speicher aus kann als Code-Schattenbildung bezeichnet werden.
-
Um
eine Flexibilität
beim Zugreifen auf Daten in dem eingebetteten System aufrechtzuerhalten, kann
der Wunsch bestehen, Daten zwischen dem Host, dem flüchtigen
Speicher und dem nichtflüchtigen
Speicher auf eine Vielfalt von Arten zu übertragen. Es kann z. B. ein
Wunsch bestehen, Datenübertragungen
zwischen dem flüchtigen
Speicher und dem Host, dem nichtflüchtigen Speicher und dem Host
und dem flüchtigen
Speicher und dem nichtflüchtigen
Speicher durchzuführen.
Bei gleichzeitiger Aufrechterhaltung einer Flexibilität beim Zugreifen auf
Daten in dem eingebetteten System kann auch ein Wunsch bestehen,
die Kosten und Komplexität der
Schnittstelle zwischen dem Host und den Komponenten des Speichersystems
zu verringern.
-
Dementsprechend
besteht Bedarf an einem verbesserten System und verbesserten Verfahren zum
Zugreifen auf einen Speicher in einem eingebetteten System.
-
Zusammenfassung der Erfindung
-
Ausführungsbeispiele
der Erfindung stellen ein Verfahren, Vorrichtungen und ein System
zum Ausgeben von Befehlen von einer ersten Vorrichtung an eine zweite
Vorrichtung bereit. Bei einem Ausführungsbeispiel umfasst das
Verfahren ein Empfangen, durch die erste Vorrichtung, eines ersten
Befehls, der einen zweiten Befehl in einen Speicherort in der ersten
Vorrichtung schreibt. Der zweite Befehl umfasst einen Befehlscode,
einen ersten Wert, der einen Operandversatz für Operanden des zweiten Befehls kennzeichnet,
und einen zweiten Wert, der eine Anzahl der Operanden des zweiten
Befehls kennzeichnet. Das Verfahren umfasst auch ein Liefern des zweiten
Befehls zu der zweiten Vorrichtung. Bei einem Ausführungsbeispiel
lädt die
zweite Vorrichtung die Operanden des zweiten Befehls unter Verwendung
des durch den zweiten Befehl bereitgestellten Versatzes und der
durch den zweiten Befehl bereitgestellten Anzahl.
-
Kurze Beschreibung der Zeichnungen
-
Um
die Art und Weise der die im Vorhergehenden genannten Merkmale der
vorliegenden Erfindung im Detail zu verstehen, kann eine genauere
Beschreibung der Erfindung, die im Vorhergehenden kurz zusammengefasst
wurde, durch Bezugnahme auf Ausführungsbeispiele,
von denen manche in den beigefügten
Zeichnungen veranschaulicht sind, gewonnen werden. Es sei jedoch
darauf hingewiesen, dass die beigefügten Zeichnungen lediglich
typische Ausführungsbeispiele
dieser Erfindung veranschaulichen und deswegen den Schutzbereich
derselben nicht beschränken
sollen, da die Erfindung auch auf andere, gleich wirksame Ausführungsbeispiele
anwendbar ist.
-
1A bis 1C sind
Blockdiagramme, die eingebettete Systeme darstellen, gemäß Ausführungsbeispielen
der Erfindung;
-
2A bis 2B sind
Flussdiagramme, die Prozesse zum Konfigurieren eines Überlagerungsfensters
darstellen, gemäß Ausführungsbeispielen
der Erfindung;
-
3A bis 3D sind
Blockdiagramme, die Aspekte einer Überlagerungsfensterkonfiguration darstellen,
gemäß einem
Ausführungsbeispiel
der Erfindung;
-
4 ist
ein Zeitdiagramm, das Befehle darstellt, die ausgegeben werden,
um ein Überlagerungsfenster
zu konfigurieren, gemäß einem
Ausführungsbeispiel
der Erfindung;
-
5A bis 5B sind
Flussdiagramme, die Prozesse zum Zugreifen auf Daten und Ausgeben
von Befehlen über
ein Überlagerungsfenster darstellen,
gemäß Ausführungsbeispielen
der Erfindung;
-
6 bis 7 sind
Blockdiagramme, die Steuerregister und Puffer in einem Überlagerungsfenster
darstellen, gemäß Ausführungsbeispielen
der Erfindung;
-
8 ist
ein Blockdiagramm, das einen Befehl darstellt, der an ein Op-Code-Register
ausgegeben wird, gemäß einem
Ausführungsbeispiel
der Erfindung;
-
9A bis 9D sind
Blockdiagramme, die Datenübertra
gungen in einem eingebetteten System darstellen, gemäß Ausführungsbeispielen der
Erfindung;
-
10A bis 10B sind
Flussdiagramme, die Prozesse zum Durchführen von DMA-Übertragungen
zwischen einem Host und einem nichtflüchtigen Speicher darstellen,
gemäß Ausführungsbeispielen
der Erfindung;
-
11 ist
ein Blockdiagramm, das gespiegelte Steuerregister darstellt, auf
die über
ein Überlagerungsfenster
zugegriffen wird, gemäß einem
Ausführungsbeispiel
der Erfindung; und
-
12 ist
ein Flussdiagramm, das einen Prozess zum Spiegeln von Steuerregisterdaten
darstellt, gemäß einem
Ausführungsbeispiel
der Erfindung.
-
Ausführliche Beschreibung des bevorzugten
Ausführungsbeispiels
-
Ausführungsbeispiele
der Erfindung stellen ein Verfahren, Vorrichtungen und ein System
zum Ausgeben von Befehlen von einer ersten Vorrichtung an eine zweite
Vorrichtung bereit. Bei einem Ausführungsbeispiel umfasst das
Verfahren ein Empfangen, durch die erste Vorrichtung, eines ersten
Befehls, der einen zweiten Befehl in einen Speicherort in der ersten
Vorrichtung schreibt. Der zweite Befehl umfasst einen Befehlscode,
einen ersten Wert, der einen Operandversatz für Operanden des zweiten Befehls kennzeichnet,
und einen zweiten Wert, der eine Anzahl der Operanden des zweiten
Befehls kennzeichnet. Das Verfahren umfasst auch ein Liefern des zweiten
Befehls zu der zweiten Vorrichtung. Bei einem Ausführungsbeispiel
lädt die
zweite Vorrichtung die Operanden des zweiten Befehls unter Verwendung
des durch den zweiten Befehl bereitgestellten Versatzes und der
durch den zweiten Befehl bereitgestellten Anzahl.
-
Ein eingebettetes System
-
1A ist
ein Blockdiagramm, das ein eingebettetes System 100 gemäß einem
Ausführungsbeispiel
der Erfindung darstellt. Wie dargestellt, kann das eingebettete
System 100 einen Host 102, einen flüchtigen
Speicher 104, eine Nichtflüchtiger-Speicher-Steuerung 106 und
einen nichtflüchtigen
Speicher 108 umfassen.
-
Bei
einem Ausführungsbeispiel
kann der Host 102 eine Steuerschaltungsanordnung 132 und eine
Flüchtiger-Speicher-Schnittstelle 110 zum
Kommunizieren mit einer Flüchtiger-Speicher-Schnittstelle 112 des
flüchtigen
Speichers 104 umfassen. Bei einem Ausführungsbeispiel kann die Flüchtiger-Speicher-Schnittstelle 112 eine
Schnittstelle umfassen, die der Vorschrift des Joint Electron Device Engineering
Council (JEDEC = eine US-amerikanische Organisation zur Standardisierung
von Halbleitern) bezüglich
synchroner Doppeldatenraten-Direktzugriffsspeicher mit dynamischen
Zugriff mit niedriger Leistung (LPDDR-SDRAM = Low Power Double Data
Rate synchronous dynamic random access memory) entspricht. Optional
kann jede andere beliebige geeignete Flüchtiger-Speicher-Schnittstelle
(z. B. unter Verwendung von DRAM-Schnittstellensteuersignalen, wie
z. B. Schreibfreigabe (WE = write enable), Zeilenzugriffsübernahmesignal
(RAS = row access strobe), Spaltenzugriffsübernahmesignal (CAS = column
access strobe) und Chipansteuerung (CS = chip select)) verwendet
werden. Die Steuerschaltungsanordnung kann z. B. verwendet werden,
um Computerinstruktionen und Prozessdaten, die von dem flüchtigen
Speicher 104 oder einem anderen Ort (z. B. einem Plattenlaufwerk
oder einer anderen Speicherungsvorrichtung) empfangen wurden, auszuführen. In
manchen Fällen
kann der Host 102 auch zusätzliche Schaltungsanordnung,
z. B. Eingabe/Ausgabe-Schnittstellen (I/O-Schnittstellen) zum Empfangen
einer Benutzereingabe und zusätzliche Schnittstellen
mit anderen eingebetteten Systemkomponenten, wie z. B. zusätzlichen
Speicherkomponenten, Plattenlaufwerken und anderen Vorrichtungen,
umfassen. Wie es nachfolgend beschrieben ist, kann der Host 102 auch
die Flüchtiger-Speicher-Schnittstelle 112 verwenden,
um Befehle und Informationen bereitzustellen und um Informationen von
dem flüchtigen
Speicher 104, der Nichtflüchtiger-Speicher-Steuerung 106 und/oder
dem nichtflüchtigen
Speicher 108 zu empfangen.
-
Bei
einem Ausführungsbeispiel
kann der flüchtige
Speicher 104 eine Flüchtiger-Speicher-Schnittstelle 112 zum
Kommunizieren mit dem Host 102 und eine Nichtflüchtiger-Speicher-Schnittstelle 120 zum
Kommunizieren mit der Nichtflüchtiger-Speicher-Steuerung 106 umfassen.
Der flüchtige Speicher 104 kann
hinsichtlich sowohl des Hosts 102 als auch der Nichtflüchtiger-Speicher-Steuerung 106 als
ein Slawe (untergeordneter Computer) fungieren (z. B. kann der flüchtige Speicher
durch die andere Komponente der Schnittstelle gesteuert werden). Optional
kann der flüchtige
Speicher 104 der Master (Leitrechner) hinsichtlich der
Nichtflüchtiger-Speicher-Steuerung 106 sein.
Die Nichtflüchtiger-Speicher-Schnittstelle 112 kann
eine beliebige Schnittstelle umfassen, die verwendet wird, um auf
den nichtflüchtigen
Speicher 108 zuzugreifen, einschließlich z. B. der Schreibfreigabe(WE)-,
der Ausgabefreigabe(OE = Output enable)- und der Chipansteuerungs(CS)-Steuersignale.
-
Der
flüchtige
Speicher 104 kann auch eine Flüchtiger-Speicher-Steuerschaltungsanordnung 114 zum
Verarbeiten von Befehlen, die über
die Flüchtiger-Speicher-Schnittstelle 112 und/oder
die Nichtflüchtiger-Speicher-Schnittstelle 120 empfangen
wurden, umfassen. Der flüchtige
Speicher 104 kann ferner ein Flüchtiger-Speicher-Array 116 zum Speichern
von Daten indem flüchtigen
Speicher 104 und einen oder mehrere Puffer 118 zum Übertragen von
Daten und/oder Befehlen zwischen dem Host 102, dem flüchtigen
Speicher 104, der Nichtflüchtiger-Speicher-Steuerung 106 und/oder
dem nichtflüchtigen
Speicher 108 umfassen. Bei einem Ausführungsbeispiel können die
Puffer 118 ein RAM-Speicher
mit dynamischem Zugriff (DRAM-Speicher) sein. Optional können die
Puffer 118 ein statischer RAM-Speicher (SRAM-Speicher) sein.
Der flüchtige
Speicher 104 kann auch eine Nichtflüchtiger-Speicher-Schnittstelle 120 zum
Kommunizieren mit der Nichtflüchtiger-Speicher-Steuerung 106 umfassen.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann die Nichtflüchtiger-Speicher-Steuerung 106 eine
erste Nichtflüchtiger-Speicher-Schnittstelle 122 zum
Kommunizieren mit dem flüchtigen
Speicher 104 und eine zweite Nichtflüchtiger-Speicher-Schnittstelle 126 zum
Kommunizieren mit dem nichtflüchtigen
Speicher 108 umfassen. Die Nichtflüchtiger-Speicher-Steuerung 106 kann
auch eine Nichtflüchtiger-Speicher-Steuerschaltungsanordnung 124 zum
Steuern von Datenübertragungen
zwischen dem flüchtigen
Speicher 104, der Nichtflüchtiger-Speicher-Steuerung 106 und
dem nichtflüchtigen Speicher
umfassen. Auf den nichtflüchtigen
Speicher 108 kann über
eine Nichtflüchtiger-Speicher-Schnittstelle 128 zugegriffen
werden. Daten in dem nichtflüchtigen
Speicher 108 können
in dem Nichtflüchtiger-Speicher-Array 130 gespeichert
werden.
-
Während sie
im Vorhergehenden im Hinblick auf einen gesonderten flüchtigen
Speicher 104 und eine gesonderte Nichtflüchtiger-Speicher-Steuerung 106 beschrieben
wurden, können
Ausführungsbeispiele
der Erfindung, die hierin beschrieben sind, auch mit einem flüchtigen
Speicher 134 verwendet werden, der eine Nichtflüchtiger-Speicher-Steuerschaltungsanordnung 124 umfasst
und auf den nichtflüchtigen
Speicher 108 über
die Nichtflüchtiger-Speicher-Schnittstelle 128 zugreift,
wie es in 1B dargestellt ist.
-
1C ist
ein Blockdiagramm, das weitere Details des flüchtigen Speichers 104 und
der Nichtflüchtiger-Speicher-Steuerung 106 gemäß einem Ausführungsbeispiel
der Erfindung darstellt. Wie dargestellt kann der flüchtige Speicher 104 eine
Befehls- und Adressendecodierschaltungsanordnung 164 umfassen
(z. B. als Teil der Flüchtiger-Speicher-Steuerschaltungsanordnung 114).
Wenn die Befehls- und
Adressendecodierschaltungsanordnung 164 einen Befehl von
dem Host 102 empfängt, der
auf Daten in einer der Bänke 136 in
dem Flüchtiger-Speicher-Array 116 zugreift,
kann auf die Daten über
die Flüchtiger-Speicher-Zugriffssteuerung 160 des
Hosts für
das Flüchtiger-Speicher-Array 116 zugegriffen
werden. Der flüchtige
Speicher 104 kann auch Modusregister 170 zum Steuern
der Arbeitsweise des flüchtigen
Speichers 104, Überlagerungsfenstersteuerregister 138 zum
Steuern eines Überlagerungsfensters,
und einen Überlagerungsfensterpuffer 146 zum Übertragen
von Daten zwischen den Komponenten des eingebetteten Systems 100 bereitstellen,
wie es nachfolgend noch genauer beschrieben ist.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der flüchtige
Speicher 104 ferner Steuerregister 140 zum internen
Speicherdirektzugriff (iDMA = internal direct memory access) zum
Steuern von DMA-Übertragungen
zwischen dem nichtflüchtigen
Speicher 108, der Nichtflüchtiger-Speicher-Steuerung 106 und
dem flüchtigen
Speicher 104 bereitstellen. Wie es nachfolgend beschrieben
ist, kann ein Modifizieren der Einstellungen der iDMA-Steuerregister
in dem flüchtigen
Speicher 104 bewirken, dass der flüchtige Speicher 104 Befehle
an die Nichtflüchtiger-Speicher-Steuerung 106 ausgibt,
die bewirken, dass entsprechende Veränderungen in iDMA-Steuerregistern 152 in
einer iDMA-Steuerung 150 der
Nichtflüchtiger-Speicher-Steuerung 106 vorgenommen werden.
Derartige Veränderungen
können
z. B. zur Folge haben, dass ein Befehl an die iDMA-Steuerung 150 ausgegeben
wird, der bewirkt, dass eine DMA-Übertragung durchgeführt wird,
z. B. zwischen dem flüchtigen
Speicher 104, der Nichtflüchtiger-Speicher-Steuerung 106 und
dem nichtflüchtigen Speicher 108.
-
Bei
einem Ausführungsbeispiel
kann die DMA-Übertragung
z. B. Puffer 154 in der Nichtflüchtiger-Speicher-Steuerung 106 verwenden,
um Daten, die zwischen dem nichtflüchtigen Speicher 108 und dem
flüchtigen
Speicher 104 übertragen
werden, temporär
zu fassen. Hinsichtlich des flüchtigen
Speichers 104 kann die DMA-Übertragung eine iDMA-Flüchtiger-Speicher-Zugriffssteuerung 162 verwenden,
um auf das Flüchtiger-Speicher-Array 116 zuzugreifen
(z. B., um Daten für
die DMA-Übertragung
zu lesen oder zu schreiben). Daten von dem Flüchtiger-Speicher-Array 116 können zu
einem iDMA-Puffer 144 oder von demselben übertragen
werden, der wiederum verwendet werden kann, um Daten über die
Nichtflüchtiger-Speicher-Schnittstelle 120 des
flüchtigen
Speichers 104 zu übertragen. Eine
iDMA-Puffersteuerung 148 kann
verwendet werden, um die Datenübertragung
zwischen der iDMA-Flüchtiger-Speicher-Zugriffssteuerung 162,
dem iDMA-Puffer 144 und der Nicht flüchtiger-Speicher-Schnittstelle 120 des
flüchtigen
Speichers 104 zu steuern.
-
Bei
einem Ausführungsbeispiel
kann der flüchtige
Speicher 104 auch Universeller-Serieller-Bus/Fortschrittliche-Technologie-Anschluss-Register
(USB/ATA-Register;
USB = Universal Serial Bus; ATA = Advanced Technology Attachment) 142 umfassen,
die verwendet werden können,
um eine USB/ATA-Funktionalität
in der Nichtflüchtiger-Speicher-Steuerung 106 zu
steuern. Zum Beispiel kann, wie es nachfolgend beschrieben ist,
wenn eine Änderung
an den USB/ATA-Registern in dem flüchtigen Speicher 104 vorgenommen
wird, der flüchtige
Speicher 104 automatisch bewirken, dass eine entsprechende
Veränderung
in USB/ATA-Steuerregistern 158 in
der Nichtflüchtiger-Speicher-Steuerschaltungsanordnung 124 der
Nichtflüchtiger-Speicher-Steuerung 106 vorgenommen
wird. Somit kann der Host 102 in der Lage sein, auf die USB/ATA-Funktionalität der Nichtflüchtiger-Speicher-Steuerung 106 über den
flüchtigen
Speicher 104 zuzugreifen.
-
Konfigurieren eines Überlagerungsfensters zum Zugreifen
auf Daten
-
Bei
einem Ausführungsbeispiel
der Erfindung kann ein Abschnitt des Flüchtiger-Speicher-Adressraums
für den
flüchtigen
Speicher 104 einem Überlagerungsfenster
zugeordnet werden. 3A ist ein Blockdiagramm, das
ein Überlagerungsfenster 304 darstellt,
das einen Abschnitt des Flüchtiger-Speicher-Adressraums 302 belegt,
gemäß einem
Ausführungsbeispiel
der Erfindung. Der Flüchtiger-Speicher-Adressraum 302 des
flüchtigen Speichers 104 umfasst
im Allgemeinen den Bereich von Adressen, auf die über die
Flüchtiger-Speicher-Schnittstelle 112 des
flüchtigen
Speichers 104 zugegriffen werden kann. Zum Beispiel kann,
wenn die Flüchtiger-Speicher-Schnittstelle 112 insgesamt 18
Adressbits bereitstellt (z. B. zwei Bankadressbits BA0 und BA1 und
16 Adressbits A[15:0]), der Adressraum 302 des flüchtigen
Speichers 104 262, 144 Adressen (2 potenziert
mit 18) umfassen, was bis zu 256k Zeileneinträge (wobei jeder Zeileneintrag
einer gegebenen Adresse entspricht) von Daten in den flüchtigen
Speicher 104, auf die zugegriffen wird, ermöglichen
kann.
-
In
manchen Fällen
kann durch ein Zugreifen auf Adressen in dem Überlagerungsfenster 304 über die
Flüchtiger-Speicher-Schnittstelle 112 der
Host 102 in der Lage sein, auf Daten in dem nichtflüchtigen
Speicher 108 sowie in dem Überlagerungsfenstersteuerungsregister 138,
den iDMA-Steuerregistern 140 und den USB/ATA-Steuerregistern 142 zuzugreifen.
Somit kann das Überlagerungsfenster 304 einen
Zugriff über
die Flüchtiger-Speicher-Schnittstelle 112 auf
andere Register und Speicherarrays als das Flüchtiger-Speicher-Array 116 ermöglichen. Wenn
ein Zugriffsbefehl (z. B. ein Lese- oder Schreibbefehl), der über die
Flüchtiger-Speicher-Schnittstelle 112 empfangen
wurde, nicht in den Bereich von durch das Überlagerungsfenster spezifizierten Adressen
fällt,
kann der Zugriffsbefehl verwendet werden, um auf das Flüchtiger-Speicher-Array 116 zuzugreifen.
Wenn die empfangene Adresse nicht in das Überlagerungsfensters 304 fällt, kann
der Zugriffsbefehl verwendet werden, um auf andere Daten (z. B.
Daten in dem Überlagerungsfensterpuffer 146 oder
in den Steuerregistern 138, 140, 142 in
dem flüchtigen
Speicher 104) zuzugreifen.
-
Wie
im Vorhergehenden beschrieben, kann das Überlagerungsfenster 304 einen
Abschnitt des Flüchtiger-Speicher-Adressraums 302 belegen.
Bei einem Ausführungsbeispiel
kann das Überlagerungsfenster 304 z.
B. als Folge eines Befehls, der über
die Flüchtiger-Speicher-Schnittstelle 112 empfangen wurde,
freigegeben oder gesperrt werden. Ferner können in manchen Fällen die
durch das Überlagerungsfenster
belegten Flüchtiger-Speicher-Adressen 302 konfigurierbar
sein. Somit können
die Basisadresse 306 des Überlagerungsfensters 304 sowie
die Größe 308 des Überlagerungsfensters 304 (in 3A dargestellt)
durch ein Modifizieren von Steuerungsregistereinstellungen in dem
flüchtigen
Speicher 104 konfigurierbar sein.
-
Dort
wo das Überlagerungsfenster 304 Flüchtiger-Speicher-Adressraum 302 belegt,
der in der Regel verwendet wird, um auf das Flüchtiger-Speicher-Array 116 zuzugreifen,
ist es möglich, dass
auf den Abschnitt des Flüchtiger-Speicher-Arrays 116,
der durch das Überlagerungsfenster 304 adressiert
wird, nicht zugegriffen werden kann (z. B. können Zugriffe auf diese Adressen
Daten außerhalb des
Flüchtiger-Speicher-Arrays 116 modifizieren). Jedoch
können
durch Bewegen des Überlagerungsfensters 304 verschiedene
Teile des Flüchtiger-Speicher-Arrays 116 „offengelegt" werden (z. B. kann
auf dieselben über
die Flüchtiger-Speicher-Schnittstelle 112 zugegriffen
werden) oder "abgedeckt" werden (z. B. können Zugriffe
auf diese Adressen mittels des Überlagerungsfensters 304 umgeleitet
werden). Ferner kann, dort wo das Überlagerungsfenster 304 gesperrt
ist, auf das gesamte Flüchtiger-Speicher-Array 116 über den
Flüchtiger-Speicher-Adressraum 302 zugegriffen
werden. Auch kann bei einem Ausführungsbeispiel
der Flüchtiger-Speicher-Adressraum 302 größer als
die Menge von Daten in dem Flüchtiger-Speicher-Array 116 sein
(z. B. können
mehr Datenadressen als Daten bereitgestellt sein), was es möglich macht,
dass das Überlagerungsfenster 304 in
einem Abschnitt des Flüchtiger-Speicher-Adressraums 302,
der keine Datenadressen für
das Flüchtiger-Speicher-Array 116 überlappt,
platziert wird.
-
2A ist
ein Flussdiagramm, das einen Prozess 200 zum Konfigurieren
des Überlagerungsfensters 304 gemäß einem
Ausführungsbeispiel
der Erfindung darstellt. Der Prozess 200 kann bei Schritt 202 beginnen,
in dem das Überlagerungsfenster 304 freigegeben
wird. Bei Schritt 204 kann die Basisadresse 306 für das Überlagerungsfenster 304 eingestellt
werden. Die Basisadresse 306 kann eine Flüchtiger-Speicher-Adresse
anzeigen, an der das Überlagerungs fenster 304 beginnt.
Bei einem Ausführungsbeispiel
kann die Basisadresse 306 derart begrenzt sein, dass die
ausgewählte
Basisadresse 306 lediglich auf eine Grenze in der Größe einer
Seite fällt.
Optional kann jede beliebige Ausrichtung für die Basisadresse 306 verwendet
werden (z. B. eine Byteausrichtung). Bei Schritt 206 kann
die Größe 308 des Überlagerungsfensters 304 eingestellt
werden. Die Größe 308 des Überlagerungsfensters 304 kann
z. B. einen Bereich von Flüchtiger-Speicher-Adressen
anzeigen, beginnend bei der Basisadresse 306, die das Überlagerungsfenster 304 belegt.
Bei einem Ausführungsbeispiel
kann der für
die Größe 308 bereitgestellte
Wert multipliziert werden, um die tatsächliche Größe zu bestimmen (z. B. kann
die tatsächliche Größe des Überlagerungsfensters 304 die
bereitgestellte Größe multipliziert
mit 1024 (1K) oder 2048 (2K) sein), derart, dass die Größe 308 eine
ganze Zahl von Blöcken
von Speicheradressen für
das Überlagerungsfenster 304 zuordnet.
Bei Schritt 208 kann das Überlagerungsfenster 304 für einen
Datenzugriff verwendet werden (z. B., um auf den Überlagerungsfensterpuffer 146 und/oder
Steuerregister 138, 140, 142 zuzugreifen).
-
Im
Allgemeinen kann der Prozess 200, der in 2A dargestellt
ist, unter Verwendung eines beliebigen Verfahrens, das den Fachleuten
auf dem Gebiet bekannt ist, durchgeführt werden. Zum Beispiel kann
jeder Schritt durch Ausgeben von Befehlen an den flüchtigen
Speicher 104 durchgeführt
werden. Optional können änderbare
Voreinstellungseinstellungen und/oder dauerhafte, voreingestellte
Einstellungen für
jedes Überlagerungsfensterattribut
bereitgestellt werden (z. B., ob das Überlagerungsfenster 304 freigegeben
ist, die Basisadresse 306 und/oder die Größe).
-
2B ist
ein Flussdiagramm, das einen exemplarischen Prozess 210 zum
Konfigurieren des Überlagerungsfensters 304 gemäß einem
Ausführungsbeispiel
der Erfindung darstellt. Der Prozess 210 kann bei Schritt 212 beginnen,
in dem das Überlagerungsfenster
durch Setzen eines Überla gerungsfensterfreigabebits
(OWE-Bits; OWE = overlay window enable) Bits in einem Modusregister 170 des flüchtigen
Speichers 104 unter Verwendung eines Modusregistereinstellbefehls
(MRS-Befehls; MRS = mode register set) freigegeben wird. Anschließend kann
bei Schritt 214 die Basisadresse 306 für das Überlagerungsfenster 304 unter
Verwendung eines MRS-Befehls eingestellt werden.
-
Bei
einem Ausführungsbeispiel
kann, nachdem die Basisadresse 306 des Überlagerungsfensters 304 eingestellt
worden ist, der flüchtige
Speicher 104 automatisch einen Voreinstellungsadressraum 310 für das Überlagerungsfenster 304 an
dem Beginn der im Vorhergehenden eingestellten Basisadresse 306 zuordnen,
wie es in 3B dargestellt ist. Der automatisch
zugeordnete Adressraum 310 für das Überlagerungsfenster 304 kann
verwendet werden, um auf die Überlagerungsfenstersteuerregister 138 und
die anderen Steuerregister 140, 142 zuzugreifen.
Da auf die Steuerregister 138, 140, 142 unter
Verwendung von Zugriffsbefehlen (z. B. Lese- und Schreibbefehlen),
die an Adressen in dem flüchtigen
Speicher 104 über
die Flüchtiger-Speicher-Schnittstelle 112 ausgegeben
werden, zugegriffen werden kann, können die Steuerregister 138, 140, 142 als
speicherabgebildete Register bezeichnet werden. Somit kann durch
Lesen einer Adresse in dem Flüchtiger-Speicher-Adressraum 302,
der dem automatisch zugeordneten Adressraum 310 für das Überlagerungsfenster 304 entspricht,
oder Schreiben in dieselbe Adresse in ein Überlagerungsfensterregister,
das der Adresse entspricht, auf die zugegriffen wird, geschrieben
werden oder aus demselben gelesen werden.
-
Bei
Schritt 218 kann die Größe 308 des Überlagerungsfensters 304 durch
Schreiben mittels der Flüchtiger-Speicher-Schnittstelle 112 in
die speicherabgebildeten Überlagerungsfenstersteuerregister 138 eingestellt
werden. Die Größe 308,
die durch Schreiben in die Überlagerungsfenstersteuerregister 138 eingestellt
wird, kann eine Größe des Überlagerungsfensters 304 beginnend
von der im Vorher gehenden eingestellten Basisadresse 306 anzeigen. Optional
kann die Größe 308 eine
Größe des Überlagerungsfensters 304 zusätzlich zu
und beginnend bei dem Ende des automatisch zugeordneten Überlagerungsfensteradressraums 310 anzeigen.
Die Größe 308,
die für
das Überlagerungsfenster 304 bereitgestellt
ist, kann einen Pufferadressraum 330 (dargestellt in 3B)
umfassen, der auf den Überlagerungsfensterpuffer 146 abgebildet
und für
einen Datenzugriff verwendet wird, wie es nachfolgend beschrieben
ist. Nachdem das Überlagerungsfenster 304 wie
in Schritten 212, 214, 216 und 218 beschrieben
konfiguriert worden ist, kann das Überlagerungsfenster für einen
Datenzugriff bei Schritt 208 verwendet werden. Zum Beispiel
kann der zugeordnete Raum für
das Überlagerungsfenster 304 verwendet werden,
um Befehle an den flüchtigen
Speicher 104, die Nichtflüchtiger-Speicher-Steuerung 106 und
den nichtflüchtigen
Speicher 108 auszugeben (nachfolgend ausführlicher
beschrieben).
-
3C ist
ein Blockdiagramm, das eine exemplarische MRS-Befehlsstruktur zum
Freigeben des Überlagerungsfensters 304 und
Einstellen der Überlagerungsfensterbasisadresse 306 gemäß einem
Ausführungsbeispiel
der Erfindung darstellt. Wie dargestellt kann ein über die
Flüchtiger-Speicher-Schnittstelle 112 an
den flüchtigen
Speicher 104 ausgegebener Befehl einen Befehlsabschnitt 312 und
einen Adressabschnitt 314 umfassen, der Bankadressbits
BA0, BA1, die eine Bank 136 des Flüchtiger-Speicher-Arrays 116,
auf die zugegriffen wird, anzeigen und Adressbits Ai ... A0, die
eine Adresse in der spezifizierten Bank 136, auf die zugegriffen wird,
anzeigen, umfasst.
-
Wenn
ein ausgegebener Befehl 312 ein MRS-Befehl ist, können die
Bankadressbits verwendet werden, um einen MRS-Befehlstyp zu kennzeichnen,
und die Adressbits Ai ... A0 können
zum Auswählen
und Modifizieren eines der Modusregister 170 verwendet
werden. Wie dargestellt können
die Bankadressbits verwendet werden, um einen von vier MRS-Befehlstypen auszuwählen. Wenn
die Bankadressbits beide Null sind, kann der MRS-Befehl verwendet
werden, um das Voreinstellungsmodusregister (MRS) zu modifizieren.
Wenn BA1 Null und BA0 Eins ist, kann der MRS-Befehl verwendet werden,
um das erweiterte Modusregister (EMRS = extended mode register)
zu modifizieren. Wenn BA1 Eins und BA0 Null ist, kann der MRS-Befehl
für eine Statusregisterleseoperation
verwendet werden.
-
Wenn
beide mit einem MRS-Befehl empfangenen Bankadressbits Eins sind,
kann der MRS-Befehl ein Modusregister-11-Befehl (MRS-11-Befehl) sein
und verwendet werden, um ein MRS-11-Teilregister 320, 322, 324, 326,
das durch Adressbits A9 und A8 gekennzeichnet ist, zu modifizieren.
Wie dargestellt können
die Adressbits A9 und A8 durch eine Auswahlschaltungsanordnung 316 verwendet
werden, um das entsprechende Teilregister 320, 322, 324, 326 auszuwählen, das
durch einen durch Adressbits A7-A0 bereitgestellten Teilregisterwert modifiziert
wird.
-
Bei
einem Ausführungsbeispiel
kann, um das Überlagerungsfenster 302 freizugeben,
ein MRS-Befehl ausgegeben werden, bei dem beide Bankadressbits auf
Eins gesetzt sind, was anzeigt, dass der MRS-Befehl eines der MRS-11-Teilregister 320, 322, 324, 326 modifiziert.
Um das Teilregister 320, das das Überlagerungsfensterfreigabebit (OWE-Bit) enthält, auszuwählen, können die
Adressbits A9 und A8 in dem ausgegebenen Befehl beide Null sein.
Schließlich
kann, um das OWE-Bit zu setzen, das Adressbit A6 in dem ausgegebenen MRS-11-Befehl
Eins sein.
-
Bei
einem Ausführungsbeispiel
kann die Überlagerungsfensterbasisadresse 306 eine
ausgerichtete Adresse sein (z. B. eine Adresse, ein ganzes Vielfaches
einer gewissen durch eine Anzahl von Adressbits gekennzeichneten
Datengröße ist).
Wie dargestellt kann die Basisadresse 306 aus den Werten
von den drei Teilregistern 322, 324, 326 erhalten werden.
Somit können,
um die Basisadresse 306 einzustellen, drei MRS-11-Befehle
mit [A9:A8] gleich „11", „10” bzw. „01" ausgegeben werden,
wodurch die Basisadressbits den Teilregistern 326, 324 bzw. 322 bereitgestellt
werden.
-
Wie
im Vorhergehenden erwähnt,
können bei
einem Ausführungsbeispiel
der Erfindung Voreinstellungseinstellungen für Überlagerungsfensterattribute,
wie z. B. die Überlagerungsfensterbasisadresse 306,
die Überlagerungsfenstergröße 310,
und ob das Überlagerungsfenster 304 freigegeben
ist (z. B., ob OWE als eine Voreinstellungseinstellung gesetzt oder
gelöscht
ist) bereitgestellt werden. Bei einem Ausführungsbeispiel können die
Voreinstellungsüberlagerungsfensterbasisadresse 306,
die Voreinstellungsüberlagerungsfenstergröße 310 und
die OWE-Einstellung durch Erfassen-bei-Rücksetzen-eins 350 bereitgestellt
sein, wie es in 3D gezeigt ist. Die Pins 350 können (z.
B. durch den Hersteller des eingebetteten Systems 100)
mit Hoch- oder Niedrigspannungspegeln
verbunden sein, die von der erwünschten Überlagerungsfensterbasisadresse 306,
der Überlagerungsfenstergröße 310 abhängen und
davon abhängen,
ob das Überlagerungsfenster 304 durch
Voreinstellung freigegeben sein soll. Wenn der flüchtige Speicher 104 ein
Rücksetzsignal
empfängt
(z. B., wenn zum ersten Mal Leistung an den flüchtigen Speicher 104 angelegt wird,
oder wenn der flüchtige
Speicher 104 rückgesetzt
wird), kann der flüchtige
Speicher 104 automatisch die Überlagerungsfenstersteuerregister 138 und
Modusregister 170 mit den durch die Erfassen-bei-Rücksetzen-Pins 350 bereitgestellten
Einstellungen laden. Diese Einstellungen können nachfolgend aufgehoben
werden, z. B. durch Ausgeben von Befehlen an die Modusregister 170 und
die Überlagerungsfenstersteuerregister 138,
wie es vorhergehend beschrieben ist. Optional können die Voreinstellungseinstellungen
durch ein Schmelzen von Sicherungen in dem flüchtigen Speicher 104 gemäß den erwünschten
Einstellungen oder durch Verdrahten der Einstellungen in die Schaltungsanordnung des
flüchtigen
Speichers 104 eingestellt werden.
-
4 ist
ein Zeitsteuerungsdiagramm, das Befehle darstellt, die ausgegeben
werden, um das Überlagerungsfenster 304 zu
konfigurieren, gemäß einem
Ausführungsbeispiel
der Erfindung. Wie dargestellt kann zu einem Zeitpunkt T1 ein MRS-11-Befehl
ausgegeben werden, der das OWE-Bit
in dem MRS-11-Teilregister „00" setzt (BA1, BA0
gleich „11", A9, A8 gleich „00" und A7-A0 gleich "40h" in Hexadezimal,
derart, dass A6 gleich „1" ist). Anschließend können, zu
Zeitpunkten T2-T4, zusätzliche MRS-11-Befehle
ausgegeben werden, die die Überlagerungsfensterbasisadresse 306 in
den MRS-11-Teilregistern 322, 324, 326 einstellen (base0,
base1 bzw. base2). Wie im Vorhergehenden beschrieben kann, nachdem
das Überlagerungsfenster 304 freigegeben
worden ist und die Überlagerungsfenstergröße 308 eingestellt
worden ist, der automatisch zugeordnete Adressraum 310 für das Überlagerungsfenster 304 verwendet
werden, um auf Daten, die die Überlagerungsfenstersteuerregister 138 umfassen,
zuzugreifen. Somit kann, z. B. zu einem Zeitpunkt T6, ein Schreibbefehl
ausgegeben werden, der die Überlagerungsfenstergröße 308 in die
entsprechende Flüchtiger-Speicher-Adresse
in dem automatisch zugeordneten Adressraum 310 schreibt.
Die Adresse des Überlagerungsfenstergrößenregisters
kann durch die Adressbits BA1-BA0 und A9-A0 bereitgestellt werden,
während
die Größeneinstellung über Daten-Eingänge/Ausgänge (DQ)
der Flüchtiger-Speicher-Schnittstelle 11 bereitgestellt
werden kann. Weitere Befehle, z. B. Zugreifen auf den Flüchtiger-Speicher-Adressraum 302, können bei
Schritt T7 ausgegeben werden.
-
Während sie
im Vorhergehenden hinsichtlich einer Freigabe eines Überlagerungsfensters 304,
eines Einstellens einer Basisadresse 306 und eines Einstellens
einer Größe 308 beschreiben
wurden, können
die Befehle, die ausgegeben werden, um das Überlagerungsfenster 304 zu
konfigurieren, in einer beliebigen Reihenfolge durchgeführt werden.
Auch kann, wie im Vorhergehenden beschrieben, in manchen Fällen das
Fenster 306 durch Voreinstellung freigegeben sein und/oder
es können
Voreinstellungswerte für
die Basisadres se 306 und die Größe 308 bereitgestellt
sein. In derartigen Fällen
werden unter Umständen
im Vorhergehenden beschriebene Konfigurationsbefehle nicht verwendet,
oder es werden derartige Konfigurationsbefehle unter Umständen nur
dort verwendet, wo sie durch den Entwickler des eingebetteten Systems
erwünscht
sind.
-
Ausgeben von Befehlen über das Überlagerungsfenster
-
Bei
einem Ausführungsbeispiel
der Erfindung kann, nachdem das Überlagerungsfenster 304 konfiguriert
worden ist, das Überlagerungsfenster 304 verwendet
werden, um auf die Speicherregister 138, 140, 142 und
den Überlagerungsfensterpuffer 146 zuzugreifen.
Durch Zugreifen auf die Steuerregister 138, 140, 142 und
den Überlagerungsfensterpuffer 146 kann
der Host 102 in der Lage sein, Befehle über die Flüchtiger-Speicher-Schnittstelle 110 auszugeben,
die Konfigurationsänderungen
in der Nichtflüchtiger-Speicher-Steuerung 106 und/oder
Datenübertragungen
zwischen dem flüchtigen
Speicher 104 und dem nichtflüchtigen Speicher 108 über die
Nichtflüchtiger-Speicher-Steuerung 106 zur
Folge haben.
-
5 ist ein Flussdiagramm, das einen Prozess 500 zum
Zugreifen auf die Steuerregister 138, 140, 142 und
den Überlagerungsfensterpuffer 146 über das Überlagerungsfenster 304 darstellt,
gemäß einem
Ausführungsbeispiel
der Erfindung. der Prozess 500 kann bei Schritt 502 beginnen,
an dem über die
Flüchtiger-Speicher-Schnittstelle 112 des
flüchtigen
Speichers 104 ein Zugriffsbefehl empfangen wird. Bei Schritt 504 kann
eine Entscheidung getroffen werden, ob das Überlagerungsfenster 304 freigegeben
ist. Wenn das Überlagerungsfenster 304 gesperrt
ist (OWE = 0), kann der Zugriffsbefehl verwendet werden, um bei
Schritt 508 auf das Flüchtiger-Speicher-Array 116 zuzugreifen.
Wenn das Überlagerungsfenster
freigegeben ist (OWE = 1), kann bei Schritt 506 eine Entscheidung
getroffen werden, ob der Zugriffsbefehl auf eine Speicheradresse
innerhalb des Überlagerungsfensters 304 zugreift.
Wenn sich die Adresse, auf die zugegriffen wird, außerhalb des Überlagerungsfensters 304 befindet,
kann der Zugriffsbefehl verwendet werden, um auf das Flüchtiger-Speicher-Array 116 an
der durch den Befehl bei Schritt 108 bereitgestellten Speicheradresse
zuzugreifen.
-
Wenn
sich jedoch die Adresse für
den Zugriffsbefehl innerhalb des Überlagerungsfensters 304 befindet,
dann kann bei Schritt 512 eine Entscheidung getroffen werden,
ob der Zugriffsbefehl auf eine Speicheradresse innerhalb des automatisch
zugeordneten Steuerregisteradressraums 310 des Überlagerungsfensters 304 zugreift.
Wenn sich die Adresse innerhalb des Steuerregisteradressraums 310 des Überlagerungsfensters 304 befindet,
kann der Zugriffsbefehl verwendet werden, um bei Schritt 514 auf die
speicherabgebildeten Steuerregister (z. B. die Überlagerungsfenstersteuerregister 138 oder
die anderen speicherabgebildeten Register 140, 142)
zuzugreifen. Wenn sich die durch den Zugriffsbefehl bereitgestellte
Adresse innerhalb des Überlagerungsfensters 304,
jedoch außerhalb
des Steuerregisterspeicherraums 310 (und somit innerhalb
des Pufferadressraums 330) befindet, kann der Zugriffsbefehl verwendet
werden, um auf eine entsprechende Adresse innerhalb des Überlagerungsfensterpuffers 146 des
nichtflüchtigen
Speichers 108 zuzugreifen. Der Prozess 500 kann
anschließend
bei Schritt 510 fortfahren.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der Host 102 Befehle an den nichtflüchtigen
Speicher 108 und/oder die Nichtflüchtiger-Speicher-Steuerung 106 durch
Schreiben der Befehle in ein Steuerregister ausgeben. Zum Beispiel
kann der Host 102 einen Schreibbefehl an eine Adresse eines speicherabgebildeten
Steuerregisters 138, 140, 142 in dem Überlagerungsfensteradressraum 304 ausgeben.
Die durch den Schreibbefehl geschriebenen Daten können selbst
ein Befehl sein. Wenn der Befehl in das Überlagerungsfenster 304 geschrieben
wird, kann der flüchtige
Speicher 104 den empfangenen Befehl verwenden, um entsprechende
Befehle an die Nichtflüchtiger-Speicher-Steuerung 106 und/oder den
nichtflüchtigen
Speicher 108 auszugeben. Der Host 102 kann den
Status des ausgeführten
Befehls (z. B., ob der Befehl anstehend oder abgeschlossen ist),
durch Lesen von Statusdaten aus einem geeigneten speicherabgebildeten
Register 138, 140, 142 in dem Überlagerungsfenster 304 bestimmen.
Optional kann ein durch den flüchtigen
Speicher 104 an den Host 102 ausgegebenes Unterbrechungssignal verwendet
werden, um dem Host 102 zu signalisieren, dass der Befehl
abgeschlossen ist. In manchen Fällen
kann, wenn ein Unterbrechungssignal verwendet wird, die Flüchtiger-Speicher-Schnittstelle 112 modifiziert
werden, um eine derartige Unterbrechung aufzunehmen.
-
In
manchen Fällen
können,
wenn der in das Überlagerungsfenster 304 geschriebene
Befehl Daten von dem Host 102 verwendet oder Daten von dem
nichtflüchtigen
Speicher 108 zurücksendet,
die Daten unter Verwendung des Überlagerungsfensterpuffers 146 übertragen
werden. Optional können
die Daten auch aus einem speicherabgebildeten Register innerhalb
des Steuerfensters 304 oder aus dem Flüchtiger-Speicher-Array 116 erhalten
werden. Wenn Daten für
den Befehl in den Überlagerungsfensterpuffer 146 oder
ein speicherabgebildetes Register innerhalb des Überlagerungsfensters 304 platziert
werden, kann der Host 102 auf den Überlagerungsfensterpuffer 146 über das Überlagerungsfenster 304 zugreifen,
wie es im Vorhergehenden beschrieben ist. Die Puffer 144 und 146 in
dem flüchtigen
Speicher 104 bzw. die Nichtflüchtiger-Speicher-Steuerung 106 können auch
verwendet werden, um Daten zwischen dem nichtflüchtigen Speicher 108 und
dem flüchtigen
Speicher 104 zu übertragen.
-
5B ist
ein Flussdiagramm, das einen Prozess 540 zum Ausführen von
in das Überlagerungsfenster 304 in
dem flüchtigen
Speicher 104 geschriebenen Befehlen dar stellt, gemäß einem
Ausführungsbeispiel
der Erfindung. Der Prozess 540 kann bei Schritt 550 beginnen,
in dem der Host 102 den flüchtigen Speicher 104 prüft, um zu
bestimmen, ob irgendwelche Befehle (z. B. im Vorhergehenden durch
den Host 102 ausgegebene Befehle) anstehen. Wenn vorhergehende
Befehle nicht abgeschlossen worden sind und nach wie vor anstehen,
kann der Host 102 warten, bis die vorhergehenden Befehle abgeschlossen
sind (z. B., bis die Nichtflüchtiger-Speicher-Steuerung 106 eine
Ausführung
der vorhergehenden Befehle abgeschlossen hat). Bei einem Ausführungsbeispiel
kann der Host 102 durch Lesen eines speicherabgebildeten
Statusregisters über
das Überlagerungsfenster 304 bestimmen,
ob ein Befehl ansteht. Optional kann der flüchtige Speicher 104 dem
Host 102 durch Ausgeben einer Unterbrechung an den Host 102 anzeigen,
dass ein vorhergehender Befehl abgeschlossen worden ist. Wie im
Vorhergehenden beschrieben, kann, wenn ein Unterbrechungssignal
verwendet wird, die Flüchtiger-Speicher-Schnittstelle 112 modifiziert
werden, um eine derartige Unterbrechung aufzunehmen.
-
Nach
dem Bestimmen, dass keine Befehle anstehen, kann anschließend in
Schritt 552 der Host 102 einen Befehl in eine
Adresse eines speicherabgebildeten Steuerregisters 138, 140, 142 innerhalb des Überlagerungsfensters 304 des
flüchtigen
Speichers 304 schreiben, wodurch der Befehl in das Steuerregister
platziert wird. In manchen Fällen
können, wenn
der Befehl zusätzliche
Daten erforderlich macht, die Daten auch in ein Steuerregister 138, 140, 142 oder
in den speicherabgebildeten Überlagerungsfensterpuffer 146 geschrieben
werden. Bei Schritt 554 kann der Host 102 ein
Steuerregisterbit setzen, das anzeigt, dass der Befehl in den flüchtigen Speicher 104 geschrieben
worden ist. Bei einem Ausführungsbeispiel
kann der Host 102 das Steuerregisterbit durch Schreiben
in eine Adresse, die einem speicherabgebildeten Steuerregister 138, 140, 142 in
dem Überlagerungsfenster 304 entspricht,
setzen. Optional kann bei einem Ausführungsbeispiel der flüchtige Speicher 104 auto matisch
erkennen, dass der Befehl geschrieben worden ist, ohne dass das
Steuerregisterbit gesetzt wird.
-
[0058]
Bei Schritt 560 kann der flüchtige Speicher 104 die
Anzeige empfangen, dass der Befehl durch den Host 102 geschrieben
worden ist. Anschließend
kann bei Schritt 562 der flüchtige Speicher 104 der
Nichtflüchtiger-Speicher-Steuerung 106 über die
Nichtflüchtiger-Speicher-Schnittstelle 102 anzeigen,
dass ein Befehl empfangen worden ist. Bei einem Ausführungsbeispiel
kann der flüchtige
Speicher 104 durch Ausgeben einer Unterbrechung an die
Nichtflüchtiger-Speicher-Steuerung 106 anzeigen,
dass ein Befehl empfangen worden ist. Auf ein Empfangen der Unterbrechung
hin kann die Nichtflüchtiger-Speicher-Steuerung 106 den
Befehl über ihre
Nichtflüchtiger-Speicher-Schnittstelle 122 bei Schritt 566 lesen
und den empfangenen Befehl bei Schritt 568 ausführen.
-
Optional
kann, statt eines Ausgebens einer Unterbrechung an die Nichtflüchtiger-Speicher-Steuerung 106 der
flüchtige
Speicher 104 einen entsprechenden Befehl direkt an die
Nichtflüchtiger-Speicher-Steuerung 106 ausgeben.
Der flüchtige
Speicher 104 kann auch ein Statusregisterbit setzen, das anzeigt,
dass ein neuer Befehl empfangen worden ist. Das Statusregisterbit
kann durch die Speichersteuerung 106 abgefragt werden.
Auf ein Erfassen hin, dass das Bit gesetzt worden ist, kann die
Speichersteuerung 106 den Befehl z. B. durch Ausgeben eines
Lesebefehls an den flüchtigen
Speicher 104 abrufen.
-
Ein
Ausführen
des empfangenen Befehls kann ein Lesen von Daten aus dem nichtflüchtigen Speicher 108 und
ein Platzieren der gelesenen Daten in das Flüchtiger-Speicher-Array 116 oder den Überlagerungsfensterpuffer 146 des
flüchtigen
Speichers 104 umfassen. Ein Ausführen des Befehls kann auch ein
Schreiben von Daten aus dem Überlagerungsfensterpuffer 146 oder
dem Flüchtiger-Speicher-Array 116 in
den nichtflüchtigen
Speicher 108 umfassen. Ein Ausführen des Befehls kann ferner
ein Durchführen
einer DMA-Übertragung
zwischen dem nichtflüchtigen
Speicher 108 und dem flüchtigen Speicher 104,
ein Modifizieren von Steuerregistereinstellungen in der Nichtflüchtiger-Speicher-Steuerung 106 (z.
B. in der iDMA-Steuerung 150 oder in der Nichtflüchtiger-Speicher-Steuerschaltungsanordnung 124),
ein Durchführen
von NAND-Verwaltungsfunktionen
oder ein Übertragen
von Steuerregistereinstellungen zwischen der Nichtflüchtiger-Speicher-Steuerung 106 und
dem flüchtigen
Speicher 104 umfassen, wie es nachfolgend beschrieben ist.
-
Bei
Schritt 570 kann, nachdem der Befehl ausgeführt worden
ist, die Nichtflüchtiger-Speicher-Steuerung 106 einen
Befehl an den flüchtigen Speicher 104 über die
Nichtflüchtiger-Speicher-Schnittstelle 122 ausgeben,
um ein Steuerregisterbit (z. B. in einem der speicherabgebildeten
Steuerregister 138, 140, 142) zu setzen,
das anzeigt, dass der empfangene Befehl ausgeführt worden ist. Bei Schritt 564 kann
der flüchtige
Speicher 104 das entsprechende Steuerregisterbit aktualisieren,
um anzuzeigen, dass der Befehl ausgeführt worden ist, und bei Schritt 556 kann
der Host die Anzeige empfangen, dass der Befehl ausgeführt worden
ist. Der Prozess 540 kann dann bei Schritt 558 fortfahren.
Bei einem Ausführungsbeispiel
kann der Host 102 durch Lesen eines Steuerregisters, das
das gesetzte Bit enthält,
das anzeigt, dass der Befehl ausgeführt worden ist (z. B. durch
Abfragen des geeigneten Bits in einem Steuerregister 138, 140, 142 über das Überlagerungsfenster 304)
bestimmen, dass der Befehl ausgeführt worden ist. Optional kann
bei einem Ausführungsbeispiel
eine Unterbrechung an den Host 102 ausgegeben werden, die
anzeigt, dass der Befehl ausgeführt
worden ist.
-
Exemplarische speicherabgebildete Register
und Puffer, auf die über
das Überlagerungsfenster
zugegriffen werden kann
-
Wie
im Vorhergehenden beschrieben kann, wenn das Überlagerungsfenster 304 durch
das Setzen des OWE-Bits freigegeben ist, der Steuerregisterspeicherraum 310 automatisch
zugeordnet werden. Auf ein Einstellen der Größe 308 des Überlagerungsfensters 304 hin
kann ein zusätzlicher
Pufferspeicherraum 330 zugeordnet werden. Das Überlagerungsfenster 304 kann
auch andere Puffer, speicherabgebildete Register usw. enthalten. 6 ist ein
Blockdiagramm, das exemplarische Steuerregister 600, die
durch den automatisch zugeordneten Steuerregisterraum 310 abgebildet
sind, darstellt. Wie im Vorhergehenden beschrieben, kann der Steuerregisterraum
an der Überlagerungsfensterbasisadresse 306 beginnen
und sich zu höheren
Adressen bin (z. B. von der Basisadresse 306 zu der Basisadresse 306 plus „M" in dem Diagramm)
erstrecken. Die speicherabgebildeten Register 600 können Systemkonfigurationsregister 606,
Laden-Speichern-Befehlsregister 608,
Pufferzugriffsbefehlsregister 610, NAND-Verwaltungseinrichtungsbefehlsregister 612, Befehlsoperandregister 614 und
Puffergrößeninformationsregister 616 umfassen.
-
Die
Systemkonfigurationsregister 606 können verwendet werden, um eine
Konfiguration des eingebetteten Systems 100 zu modifizieren,
z. B. durch Auswählen
von geeigneten Datenaustauschraten zwischen dem flüchtigen
Speicher 104 und der Nichtflüchtiger-Speicher-Steuerung 106.
Die Laden-Speichern-Befehlsregister 608 können durch den
Host 102 geschriebene Datenzugriffsbefehle empfangen. Die
durch den Host 102 geschriebenen Datenzugriffsbefehle können Lesebefehle
zum Lesen von Daten von dem nichtflüchtigen Speicher 108 in
einen Ort in dem flüchtigen
Speicher umfassen (z. B. in den Überlagerungsfensterpuffer 146 oder
das Flüchtiger-Speicher-Array 116).
Die durch den Host 102 geschriebenen Datenzugriffsbefehle
können
ferner Schreibbefehle zum Schreiben von Daten von dem flüchtigen
Speicher 104 (z. B. von dem Überlagerungsfensterpuffer 146,
dem Flüchtiger-Speicher-Array 116 oder
von einem Befehlsope randregister 614) in den nichtflüchtigen
Speicher 108 umfassen. Die durch den Host 102 geschriebenen
Datenzugriffsbefehle können
ferner DMA-Befehle zum Durchführen
von DMA-Übertragungen
zwischen dem flüchtigen
Speicher 104 und dem nichtflüchtigen Speicher 108 über die
Nichtflüchtiger-Speicher-Steuerung 106 umfassen.
-
Bei
einem Ausführungsbeispiel
kann das Pufferzugriffsbefehlsregister 610 durch den Host 102 verwendet
werden, um Befehle zum Zugreifen auf den Überlagerungsfensterpuffer 146 auszugeben. Das
NAND-Verwaltungseinrichtungsbefehlsregister 612 kann durch
den Host 602 verwendet werden, um Befehle an die Nichtflüchtiger-Speicher-Steuerung 106 auszugeben.
Zum Beispiel kann, nachdem der Host 102 einen NAND-Verwaltungseinrichtungsbefehl
an das NAND-Verwaltungseinrichtungsbefehlsregister 612 geschrieben
hat, der Host 102 ein Steuerregisterbit in dem flüchtigen
Speicher 104 setzen, das anzeigt, dass der Befehl geschrieben
worden ist. Der flüchtige
Speicher 104 kann anschließend eine Unterbrechung an
die Nichtflüchtiger-Speicher-Steuerung 106 ausgeben,
die anzeigt, dass der NAND-Verwaltungseinrichtungsbefehl
empfangen worden ist. Auf ein Empfangen der Unterbrechung hin kann
die Nichtflüchtiger-Speicher-Steuerung 106 den
Befehl aus dem flüchtigen
Speicher 104 über
die Nichtflüchtiger-Speicher-Schnittstelle 120 des
flüchtigen
Speichers 104 abrufen. Der NAND-Verwaltungseinrichtungsbefehl kann dann
durch die Nichtflüchtiger-Speicher-Steuerschaltungsanordnung 124 ausgeführt werden.
-
Bei
einem Ausführungsbeispiel
kann der Steuerregisterraum 310 auch Befehlsoperandregister 614 zum
Speichern von Befehlsoperanden und Puffergrößeninformationsregister 616 umfassen.
Die Puffergrößeninformationsregister 616 können verwendet
werden, um auf Informationen, z. B. über den Überlagerungsfensterpuffer 146,
zuzugreifen. Die Informationen können
die Größe des Puffers 146 und/oder
die Menge von Daten in dem Puffer 146 umfassen (z. B. welcher Abschnitt
des Puffers für eine
Datenspeicherung verwendet wird). Während einer Datenübertragung
kann durch den Host 102 oder die Nichtflüchtiger-Speicher-Steuerung 106 auf die
Informationen zugegriffen werden, um zu bestimmen, ob der Puffer 146 voll
ist, und um zu bestimmen, ob mehr Daten, die übertragen werden müssen, in den
Puffer 146 platziert werden oder ob zusätzliche Daten aus dem Puffer 146 gelesen
werden.
-
7 ist
ein Blockdiagramm, das einen Speicherraum, der jedem der speicherabgebildeten Register 600 zugeordnet
ist, darstellt, gemäß einem Ausführungsbeispiel
der Erfindung. Wie dargestellt kann ein Systemoperationscoderegister
(System-OP-Code-Register) 702 an einer ersten Adresse (z.
B. der Überlagerungsfensterbasisadresse 306) bereitgestellt
sein. Ähnlich
kann ein Laden/Speichern-OP-Code-Register
(LD/ST-OP-Code-Register; LD/ST = load/store) 704 an einem
ersten Versatz bereitgestellt sein, ein Puffer-OP-Code-Register (BUFF-OP-Code-Register;
BUFF = buffer) 706 an einem zweiten Versatz bereitgestellt
sein und ein NAND-OP-Code-Register 708 an einem dritten
Versatz bereitgestellt sein.
-
Operandregister 308, 712, 714 können an zahlreichen
Adressversätzen
bereitgestellt sein, wie es dargestellt ist. Jeder der Operanden
kann verwendet werden, um Informationen zum Ausführen von über die OP-Code-Register 702, 704, 706, 708 spezifizierten
Befehlen bereitzustellen. Die Operandregister können ein Register 308 für die Überlagerungsfenstergröße und ein
Register 712 für
Laden/Speichern-Operanden (die z. B. eine Startadresse (SA) und
eine Zieladresse (DA = destination address) für Daten, die übertragen
werden, aufweisen) umfassen. Die Operandregister können auch ein
Operandregister 714 zum Speichern von NAND-Adressinformationen
und anderen Daten umfassen. Wie im Vorhergehenden beschrieben können die
speicherabgebildeten Register 600 auch das Puffergrößeninformationsregister 616 umfassen.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der Pufferraum 330 in mehrere RAM-Puffer
[1 ... n] partitioniert werden. Durch Bereitstellen mehrerer RAM-Puffer
(z. B. als Partition des Überlagerungsfensterpuffers,
des iDMA-Puffers 144 oder anderer Puffer in dem flüchtigen
Speicher 104) kann der flüchtige Speicher 104 durch
den Host 102 und/oder die Nichtflüchtiger-Speicher-Steuerung 106 verwendet
werden, um mehrere Datenübertragungen
zwischen unterschiedlichen Orten in dem Flüchtiger-Speicher-Array 116 und/oder
dem nichtflüchtigen
Speicher 108 durchzuführen.
-
Spezifizieren von Operanden für über das Überlagerungsfenster
ausgegebene Befehle
-
Bei
einem Ausführungsbeispiel
der Erfindung können
unterschiedlichen OP-Codes, die den speicherabgebildeten Registern 600 bereitgestellt sind,
unterschiedliche Operandregister 308, 712, 714,
die an unterschiedlichen Versätzen
innerhalb des Speicherregisterraums 310 angeordnet sind, verwenden.
In manchen Fällen
kann der in einem OP-Code-Register 702, 704, 706, 708 platzierte
Befehl spezifizieren, welche Operanden mit dem OP-Code verwendet
werden sollen, wodurch es der Vorrichtung, die den Befehl liest
(z. B. dem flüchtigen Speicher 104 oder
der Nichtflüchtiger-Speicher-Steuerung 106)
ermöglicht
wird, zu bestimmen, wo die Operanden für den gegebenen Befehl zu lokalisieren sind.
Somit können
in manchen Fällen
verschiedene Orte und Operandgrößen für einen
gegebenen Befehl verwendet werden.
-
8 ist
ein Blockdiagramm, das einen Befehl darstellt, der an ein OP-Code-Register
(z. B. an eines der OP-Code-Register 702, 704, 706, 708) ausgegeben
wurde, gemäß einem
Ausführungsbeispiel
der Erfindung. Wie dargestellt kann der Befehl 808 den
Befehls-OP-Code, eine Ope randlänge
für den
Befehl 808 und einen Operandversatz für den Befehl 808 umfassen.
Wenn eine Vorrichtung den Befehl 808 liest, kann die Vorrichtung
die Operandlänge
und den Operandversatz verwenden, um zu bestimmen, wo die Befehlsoperanden
zu erhalten sind. Bei einem Ausführungsbeispiel
der Erfindung kann der Operandversatz eine vollständige Adresse spezifizieren,
an der die Operanden zu finden sind. Optional kann der Operandversatz
einen Versatz von einem vorbestimmten Ort in dem Speicher, z. B.
von der Überlagerungsfensterbasisadresse 306,
von der Adresse 802 des Befehls 808 oder von einer
anderen vorbestimmten Adresse spezifizieren.
-
Wie
dargestellt kann der Operandversatz einen Versatz von der Adresse
,n' 802 dese
Befehls bereitstellen. Die Adresse ,i' 804, die durch den Versatz angezeigt
ist, kann einen ersten Operanden für den Befehl 808 enthalten.
Andere Operanden für
den Befehl 808 können
von der Adresse ,i' 804 zu
der Adresse ,i + j' 806,
die durch den Operandversatz angezeigt ist, lokalisiert werden.
-
Durchführen
einer Datenübertragung
zwischen einem Flüchtiger-Speicher-Array
und dem nichtflüchtigen
Speicher
-
Wie
im Vorhergehenden beschrieben kann das Überlagerungsfenster 304 verwendet
werden, um Befehle an die Nichtflüchtiger-Speicher-Steuerung 106 auszugeben.
Die ausgegebenen Befehle können
NAND-Verwaltungseinrichtungskonfigurationsbefehle und iDMA-Konfigurationsbefehle
umfassen, die nicht zu zusätzlichen
Datenübertragungen zwischen
dem flüchtigen
Speicher 104 und dem nichtflüchtigen Speicher 108 führen. Derartige
Befehle können
Informationen an die Nichtflüchtiger-Speicher-Steuerung 106 liefern,
die durch die Steuerung 106 verwendet werden, um Steuerregistereinstellungen
zu ändern.
Die Steuerregistereinstellungen können verwendet werden, um nachfolgende
Datenübertragungen
durchzuführen
oder um NAND-Verwaltungseinrichtungs funktionen durchzuführen. Befehle, die über das Überlagerungsfenster 304 durch
den Host 102 ausgegeben werden, können auch Lese- oder Schreibbefehle
umfassen, die über
die Nichtflüchtiger-Speicher-Steuerung 106 Daten
von einer Quellenadresse in dem flüchtigen Speicher 104 (z.
B. von einem Operandregister 714, von einem Überlagerungsfensterpuffer 146 oder
von dem Flüchtiger-Speicher-Array 116)
an eine Zieladresse in dem nichtflüchtigen Speicher 108 übertragen.
Die Befehle können
auch Daten von dem nichtflüchtigen
Speicher 108 an einen Ort in dem flüchtigen Speicher 104 übertragen.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der durch den Host 102 bereitgestellte
Datenübertragungsbefehl
eine DMA-Übertragung
sein. Ein erster Typ von DMA-Übertragungsbefehl
(als ein STORE-Befehl bezeichnet; STORE = Speichern) kann zur Folge
haben, dass Daten von dem Flüchtiger-Speicher-Array 116 zu
dem nichtflüchtigen
Speicher 108 übertragen
werden, wie es in 9A dargestellt ist. Der Befehl
kann eine spezifizierte Datenmenge bereitstellen, die übertragen
werden soll. In manchen Fällen
kann die iDMA-Steuerung 150 für jede Datenadresse, die übertragen
wird, Anforderungen an den flüchtigen
Speicher 104 ausgeben. Die angeforderten Daten können anschließend zu
dem iDMA-Puffer 144 in dem flüchtigen Speicher 104, dann
zu einem Puffer 154 in der Nichtflüchtiger-Speicher-Steuerung 106 und
schließlich
zu der Zieladresse in dem nichtflüchtigen Speicher 108 übertragen werden.
-
Bei
einem Ausführungsbeispiel
kann die iDMA-Steuerung 150 in
der Nichtflüchtiger-Speicher-Steuerung 106 den
iDMA-Puffer 148 verwenden, um einen Teil der DMA-Übertragungsarbeitslast abzuladen.
Zum Beispiel kann die iDMA-Steuerung 150 einen Befehl an
die iDMA-Puffersteuerung 148 in dem flüchtigen Speicher 104 ausgeben,
der die Datenmenge, die von dem Flüchtiger-Speicher-Array 116 übertragen
werden soll, und die Quellenadresse der zu übertragenden Daten anzeigt.
Die iDMA-Puffersteuerung 148 kann anschlie ßend auf
das Flüchtiger-Speicher-Array 116 zugreifen
und mit dem Übertragen
von Daten in den iDMA-Puffer 144 beginnen. Die iDMA-Puffersteuerung 148 kann
mit dem Beladen des iDMA-Puffers 144 fortfahren, bis die
spezifizierte Datenmenge übertragen
worden ist, oder bis der Puffer 144 voll ist.
-
Während die
iDMA-Puffersteuerung 148 den iDMA-Puffer 144 lädt, kann
die iDMA-Steuerung 150 in der Nichtflüchtiger-Speicher-Steuerung 106 den Status
des iDMA-Puffers 144 bestimmen.
Eine derartige Bestimmung kann z. B. durch Abfragen eines Puffergrößeninformationsregisters 616 in
dem flüchtigen
Speicher 104 vorgenommen werden. Optional kann eine derartige
Bestimmung als Folge einer Unterbrechung, die durch die iDMA-Puffersteuerung 148 in
dem flüchtigen
Speicher 104 an die Nichtflüchtiger-Speicher-Steuerung 106 ausgegeben
wird, vorgenommen werden. Eine derartige Unterbrechung kann z. B.
ausgegeben werden, wenn beliebige Daten in dem Puffer 144 platziert
werden, wenn eine vorbestimmte Datenmenge in dem Puffer 144 platziert
wird, wenn eine durch die iDMA-Steuerung 150 spezifizierte
Datenmenge in dem Puffer 144 platziert wird und/oder wenn
der Puffer 144 voll ist. Wenn die iDMA-Puffersteuerung 148 bestimmt,
dass der Puffer 144 Daten enthält, kann die iDMA-Puffersteuerung 148 anschließend die
Daten in den Puffer 154 in der Nichtflüchtiger-Speicher-Steuerung 106 laden,
bevor sie die Daten an den nichtflüchtigen Speicher 108 überträgt.
-
Nachdem
die iDMA-Steuerung 150 die Daten aus dem iDMA-Puffer 144 geladen
hat, kann die iDMA-Steuerung 150, wenn mehr Daten zurückbleiben,
die von dem Flüchtiger-Speicher-Array 116 übertragen
werden sollen, der iDMA-Puffersteuerung 148 in
dem flüchtigen
Speicher 104 anzeigen, dass in dem Puffer 144 Pufferraum
verfügbar
ist, und dass die DMA-Übertragung
fortgeführt
werden kann. Optional kann die iDMA-Puffersteuerung 148 einen
Status des iDMA-Puffers 144 überwachen
und automatisch erfassen, wann Pufferraum verfügbar ist. Auf ein Erfassen,
dass Pufferraum verfügbar
ist, hin, kann die iDMA-Puffersteuerung 148 wiederum fortfahren,
den Puffer 144 mit Daten aus dem Flüchtiger-Speicher-Array 116 zu
beladen, bis der Puffer 144 wiederum gefüllt ist,
oder bis die spezifizierte Datenmenge übertragen worden ist.
-
Wie
in 9B dargestellt, können die DMA-Übertragungen auch von dem nichtflüchtigen Speicher 108 zu
dem Flüchtiger-Speicher-Array 116 durchgeführt werden.
Der Befehl, der verwendet wird, um derartige Übertragungen durchzuführen, kann
als LOAD-Befehl bezeichnet werden (LOAD = Laden). In manchen Fällen kann,
wie es im Vorhergehenden beschrieben ist, die iDMA-Steuerung 150 in der
Nichtflüchtiger-Speicher-Steuerung 106 die DMA-Übertragungsarbeitslast in die
iDMA-Puffersteuerung 148 in dem flüchtigen Speicher 104 abladen.
Zum Beispiel kann die iDMA-Steuerung 150 einen Befehl an
die iDMA-Puffersteuerung 148 ausgeben, der anzeigt, dass Daten in
das Flüchtiger-Speicher-Array 116,
beginnend bei einer Zieladresse, die durch den DMA-Übertragungsbefehl
spezifiziert ist, übertragen
werden sollen. Die iDMA-Puffersteuerung 148 kann anschließend den
iDMA-Puffer 144 überwachen.
Wenn die iDMA-Steuerung 150 Daten
von dem nichtflüchtigen
Speicher 108 in den iDMA-Puffer 144 platziert,
kann die iDMA-Puffersteuerung 148 anschließend mit
dem Schreiben der empfangenen Daten in das Nichtflüchtiger-Speicher-Array 116 beginnen.
Bei einem Ausführungsbeispiel
kann die iDMA-Puffersteuerung 148 automatisch
erfassen, dass der Puffer 144 zu schreibende Daten enthält. Optional
kann die iDMA-Steuerung 150 ein
Signal (z. B. durch Setzen eines Statusregisterbits, Ausgeben eines
Befehls oder Ausgeben einer Unterbrechung) an die iDMA-Puffersteuerung 148 liefern,
wenn der Puffer 144 Daten enthält, die an den flüchtigen
Speicher 116 übertragen
werden sollen.
-
In
manchen Fällen
kann die iDMA-Steuerung 150 den Puffer 144 überwachen
(z. B. über
ein Pufferstatusregis ter), um zu bestimmen, ob der Puffer 144 voll
ist und/oder zu bestimmen, ob mehr Daten in den Puffer 144 zu
platzieren sind. Optional kann die iDMA-Puffersteuerung 148 eine
Anzeige (z. B. eine Unterbrechung) an die iDMA-Steuerung 150 liefern, wenn
der Puffer 144 leer ist und/oder wenn der Puffer 144 einen
vordefinierten oder spezifizierten Betrag an freiem Raum enthält.
-
In
manchen Fällen
kann, nachdem eine DMA-Übertragung
durch die Nichtflüchtiger-Speicher-Steuerung 106 durchgeführt worden
ist, die Nichtflüchtiger-Speicher-Steuerung 106 dem
Host 102 über
den flüchtigen
Speicher 104 anzeigen, dass der Befehl abgeschlossen worden
ist. Die Anzeige kann durch die Nichtflüchtiger-Speicher-Steuerung 106 z.
B. durch Setzen eines Statusregisterbits in einem der Modusregister 170 oder
speicherabgebildeten Steuerregister 138, 140, 142 durchgeführt werden.
Das Statusbit kann anschließend
durch den Host 102 abgefragt werden, um zu bestimmen, wann der
Befehl abgeschlossen wurde. Optional kann, nach dem Empfangen eines
Befehls von der Nichtflüchtiger-Speicher-Steuerung 106 oder
nachdem durch die Nichtflüchtiger-Speicher-Steuerung 106 ein Statusbit
gesetzt worden ist, der flüchtige
Speicher 104 eine Unterbrechung an den Host 102 ausgeben, um
anzuzeigen, dass die DMA-Übertragung
abgeschlossen worden ist.
-
In
manchen Fällen
versucht u. U. während DMA-Übertragungen, die das Flüchtiger-Speicher-Array 116 betreffen,
der Host 102, gleichzeitig mit der Nichtflüchtiger-Speicher-Steuerung 106 oder der
iDMA-Puffersteuerung 148 auf das Flüchtiger-Speicher-Array 116 zuzugreifen.
In derartigen Fällen
können
die Host-Flüchtiger-Speicher-Zugriffssteuerung 160 des
und die iDMA-Flüchtiger-Speicher-Zugriffssteuerung 162 bestimmen,
welcher Zugriff stattfindet. Bei einem Ausführungsbeispiel kann Zugriffen
durch den Host 102 auf das Flüchtiger-Speicher-Array 116 der
Vorzug gegenüber
Zugriffen über
die iDMA-Flüchtiger-Speicher-Zugriffssteuerung 162 gegeben
werden. In manchen Fällen können, wenn
Zugriffe über
mehrere Taktzyklen hinweg durchgeführt werden, Zugriffe durch
den Host 102 Zugriffe über
die iDMA-Flüchtiger-Speicher-Zugriffssteuerung 162 aufheben
und somit unterbrechen. Optional kann jedem beliebigen Zugriff,
der zuerst eingeleitet wird, der Vorzug gegeben werden. Ferner kann,
wenn die iDMA-Puffersteuerung 148 eine DMA-Übertragung
durchführt,
die DMA-Übertragung
angehalten werden, um es dem Host 102 zu ermöglichen,
auf das Flüchtiger-Speicher-Array 116 zuzugreifen.
Nachdem der Host 102 auf das Flüchtiger-Speicher-Array 116 zugegriffen
hat, kann anschließend
die DMA-Übertragung
wieder beginnen.
-
Bei
einem Ausführungsbeispiel
der Erfindung können
mehrere Zugriffe auf das Flüchtiger-Speicher-Array 116 parallel
durchgeführt
werden. Zum Beispiel können,
wenn ein durch den Host 102 durchgeführter Zugriff auf eine erste
Speicherbank (z. B. Bank 1360 )
in dem Flüchtiger-Speicher-Array 116 zugreift,
während
ein Zugriff durch die iDMA-Puffersteuerung 148 auf eine
zweite Speicherbank (z. B. Bank 1363 )
zugreift, beide Zugriffe gleichzeitig durchgeführt werden, ohne dass dieselben
einander stören. Ähnlich kann,
wenn eine DMA-Übertragung
durch die Nichtflüchtiger-Speicher-Steuerung 106,
die einen Puffer 146, 144 in dem flüchtigen
Speicher 104 verwendet, durchgeführt wird, der Host 102 gleichzeitig
Zugriffe auf das Flüchtiger-Speicher-Array 116 durchführen, ohne
dass Störungen
auftreten. Ähnlich
kann, wenn der Host 102 auf die Modusregister 170,
die Steuerregister 138, 140, 142 über das Überlagerungsfenster 304 oder
auf die Puffer 146 über
das Überlagerungsfenster 304 zugreift,
die Nichtflüchtiger-Speicher-Steruerung 106 (oder
die iDMA-Puffersteuerung 148) gleichzeitig auf das Flüchtiger-Speicher-Array 116 zugreifen,
ohne dass Störungen
auftreten.
-
Durchführen
einer Datenübertragung
zwischen dem Host und dem nichtflüchtigen Speicher über das Überlagerungsfenster
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der Host 102 einen DMA-Übertragungsbefehl über das Überlagerungsfenster 304 ausgeben,
der Daten zwischen dem Überlagerungsfensterpuffer 146 und
dem nichtflüchtigen
Speicher 108 überträgt, wie
es in 9C dargestellt ist. Zum Beispiel
kann der Befehl eine Quellenadresse in dem Überlagerungsfensterpuffer 146 und
eine Zieladresse in dem nichtflüchtigen
Speicher 108 spezifizieren. Der Befehl kann auch eine zu übertragende
Datenmenge spezifizieren. Auf ein Empfangen des Befehls hin kann
die iDMA-Steuerung 150 automatisch die spezifizierte von
Datenmenge von dem Überlagerungsfensterpuffer 146 zu
dem nichtflüchtigen
Speicher 108 übertragen.
Der Host 102 kann auch einen entsprechenden Datenbefehl
ausgeben, um eine spezifizierte Datenmenge von dem Nichtflüchtiger-Speicher-Array 108 in
den Überlagerungsfensterpuffer 146 zu übertragen.
Der Host 102 kann anschließend über das Überlagerungsfenster 304 auf die übertragenen
Daten zugreifen, wie es in 9D dargestellt
ist.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der Host 102 DMA-Übertragungsbefehle an die Nichtflüchtiger-Speicher-Steuerung 106 ausgeben,
die bewirken, dass die iDMA-Steuerung 150 automatisch Daten
zwischen dem nichtflüchtigen Speicher 108 und
dem Überlagerungsfensterpuffer 146 überträgt. Somit
kann die iDMA-Steuerung entweder durch Abfragen eines Statusregisters
oder durch Empfangen von Unterbrechungen von dem flüchten Speicher 104 bestimmen,
ob Daten in den Überlagerungsfensterpuffer 146 übertragen
oder von dem Überlagerungsfensterpuffer 146 gelesen
werden sollen. Der Host 102 kann in ähnlicher Weise ein Statusregister
abfragen, um Unterbrechungen von dem flüchtigen Speicher 104 zu
empfangen und dadurch zu bestimmen, ob Daten von dem Überlagerungsfensterpuffer 146 gelesen
oder zur Übertragung
in den nichtflüchtigen
Speicher 108 in den Überlagerungsfensterpuffer 146 geschrieben
werden sollen.
-
10A ist ein Blockdiagramm, das einen Prozess 1000 zum
Durchführen
einer automatischen DMA-Übertragung
von dem Host 102 zu dem nichtflüchtigen Speicher 108 durchzuführen, gemäß einem
Ausführungsbeispiel
der Erfindung. Der Prozess 100 kann bei Schritt 1002 beginnen,
in dem der Host 102 anstehende Befehle in dem flüchtigen
Speicher 104 prüft.
Nachdem bestimmt wurde, dass keine Befehle anstehen, kann der Host 102 einen
DMA-Übertragungsbefehl
ausgeben, der bei Schritt 1004 eine Quellenadresse in dem Überlagerungsfensterpuffer 146 und
eine Zieladresse in dem nichtflüchtigen Speicher 108 anzeigt.
Die Nichtflüchtiger-Speicher-Steuerung 106 kann,
auf ein Erfassen des Befehls über
ein abgefragtes Statusregister oder eine Unterbrechung von dem flüchtigen
Speicher 104 hin, wie es im Vorhergehenden beschrieben
ist, den DMA-Übertragungsbefehl
bei Schritt 1016 empfangen.
-
Nachdem
der Befehl empfangen wurde, können
durch den Host 102 und die Nichtflüchtiger-Speicher-Steuerung 106 durchgeführte Schritte
unabhängig
voneinander fortfahren (z. B. ohne dass weitere Befehle zwischen
der Nichtflüchtiger-Speicher-Steuerung 106 und
dem Host 102 ausgegeben werden). Bei Schritt 1006 kann
der Host 102 den Überlagerungsfensterpuffer 146 auf Überlauf
prüfen,
z. B. durch Prüfen
des Puffergrößeninformationsregisters 616 über das Überlagerungsfenster 304.
Optional kann bei einem Ausführungsbeispiel
der Erfindung eine Unterbrechung an den Host 102 ausgegeben werden,
um anzuzeigen, wann der Puffer 146 leer ist oder wann ein
vordefinierter Betrag von Raum in dem Puffer 146 verfügbar ist.
Besteht kein Pufferüberlauf, kann
der Host 102 bei Schritt 108 Daten in den Puffer 146 schreiben.
Wenn der Host 102 oder die Nichtflüchtiger-Speicher-Steuerung 106 Daten
von dem Puffer liest oder Daten in denselben überträgt, kann der flüchtige Speicher 104 bei
Schritt 1014 den Pufferstatus aktualisieren, z. B. durch
Modifizieren der Einstellungen in dem Puffergrößeninformationsregister 616.
-
Bei
Schritt 1010 kann der Host 102 bestimmen, ob mehr
Daten in den nichtflüchtigen
Speicher 108 geschrieben werden sollen. Wenn mehr Daten geschrieben
werden sollen, kann der Host 102 bei Schritt 1006 mit
dem Prüfen
auf Raum in dem Speicher 146 und bei Schritt 1008 mit
dem Schreiben in den Puffer 146 fortfahren, wenn Raum in
dem Puffer 146 verfügbar
ist. Andernfalls kann der Host 102 mit dem Verarbeiten
von Daten bei Schritt 1012 fortfahren.
-
Während der
Host 102 Daten in den Puffer 146 platziert, kann
die Nichtflüchtiger-Speicher-Steuerung 106 den
Puffer 146 überwachen
und Daten von dem Puffer 146 lesen, wenn dort Daten durch den
Host 102 platziert sind. Somit kann bei Schritt 1018 die
Nichtflüchtiger-Speicher-Steuerung 106 den
Puffer 146 auf Daten prüfen.
Die Überprüfung kann
z. B. durch Lesen des Puffergrößeninformationsregisters 616,
das durch den flüchtigen
Speicher 104 aktualisiert wird, durchgeführt werden.
Optional kann eine Unterbrechung an die Nichtflüchtiger-Speicher-Steuerung 106 ausgegeben
werden, wenn Daten in dem Puffer 146 platziert sind, wenn
eine spezifische Datenmenge in dem Puffer 146 platziert
ist, oder wenn der Puffer 146 voll ist. Wenn die Nichtflüchtiger-Speicher-Steuerung 106 bei
Schritt 1020 bestimmt, dass der Puffer 146 Daten
enthält,
kann die Steuerung 106 die Daten aus dem Puffer 146 abrufen
und die Daten in die Zieladresse in dem nichtflüchtigen Speicher 108 schreiben.
Optional kann, wenn sich keine Daten in dem Puffer 146 befinden, die
Steuerung 106 bei Schritt 1018 mit dem Prüfen auf
Daten fortfahren.
-
Wenn
die Steuerung 106 Daten aus dem Puffer liest, können die
Puffergrößeninformationen 616 durch
den flüchtigen
Speicher 104 aktualisiert werden. Bei Schritt 1024 kann
die Steuerung 106 bestimmen, ob die Datenübertragung
vollständig
ist. Wenn die Datenübertragung
nicht vollständig
ist, kann die Steuerung 106 bei Schritt 1018 mit
dem Prüfen
des Puffers 146 auf Daten fortfahren. Optional kann die
Steuerung 106, wenn die Datenübertragung vollständig ist,
bei Schritt 1026 mit dem Verarbeiten der Daten fortfahren.
Bei einem Ausführungsbeispiel kann
die Steuerung 106 durch Bestimmen, ob eine spezifizierte
Datenmenge übertragen
worden ist, bestimmen, dass eine Datenübertragung vollständig ist. Der
spezifizierte Betrag von Daten kann z. B. durch den durch den Hast 102 ausgegebenen
DMA-Übertragungsbefehl
spezifiziert werden. Optional kann die Steuerung 106 bestimmen,
dass die Übertragung vollständig ist,
wenn von dem Hast 102 über
das Überlagerungsfenster 304 ein
Befehl an die Steuerung 106 ausgegeben wird, der anzeigt,
dass die Übertragung
vollständig
ist. Optional kann die Steuerung 106 den Puffer 146 oder
einen Abschnitt des Puffers 146 kontinuierlich prüfen, um
zu bestimmen, ob der Hast 102 dort Daten platziert hat,
die zu dem nichtflüchtigen
Speicher 108 übertragen
werden sollen.
-
10B ist ein Blockdiagramm, das einen Prozess 1050 zum
Durchführen
einer automatischen DMA-Übertragung
von dem nichtflüchtigen
Speicher 108 zu dem Hast 102 darstellt, gemäß einem
Ausführungsbeispiel
der Erfindung. Der Prozess 1050 kann bei Schritt 1052 beginnen,
in dem der Hast 102 anstehende Befehle in dem flüchtigen
Speicher 104 prüft.
Nachdem bestimmt wurde, dass keine Befehle anstehen, kann der Hast 102 einen
DMA-Übertragungsbefehl
ausgeben, der bei Schritt 1054 eine Quellenadresse in dem
nichtflüchtigen
Speicher 108 und eine Zieladresse in dem Überlagerungsfensterpuffer 146 anzeigt.
Die Nichtflüchtiger-Speicher-Steuerung 106 kann
auf ein Erfassen des Befehls über
ein abgefragtes Statusregister oder eine Unterbrechung von dem flüchtigen
Speicher 104 hin, wie es im Vorhergehenden beschrieben
ist, bei Schritt 1068 den DMA-Übertragungsbefehl empfangen.
-
Nachdem
der Befehl empfangen wurde, können
durch den Hast 102 und die Nichtflüchtiger-Speicher-Steuerung 106 durchgeführte Schritte
unabhängig
voneinander fortfahren (z. B., ohne dass weitere Befehle zwischen
der Nichtflüchtiger-Speicher-Steuerung 106 und
Hast 102 ausgegeben wer den). Bei Schritt 1070 kann
die Steuerung 106 den Überlagerungsfensterpuffer 146 auf Überlauf
prüfen,
z. B. durch Prüfen
des Puffergrößeninformationsregisters 616 über das Überlagerungsfenster 304.
Optional kann bei einem Ausführungsbeispiel
der Erfindung eine Unterbrechung an die Steuerung 106 ausgegeben
werden, um anzuzeigen, wann der Puffer 146 leer ist oder
wann ein vorbestimmten Betrag von Raum in dem Puffer 146 verfügbar ist.
Liegt kein Pufferüberlauf
vor, kann die Steuerung 106 Schritt 1072 Daten
aus dem nichtflüchtigen
Speicher 108 bei in den Puffer 146 schreiben.
Wenn die Steuerung 106 oder der Host 102 Daten
von dem Puffer liest oder Daten in denselben überträgt, kann der flüchtige Speicher 104 bei
Schritt 1066 den Pufferstatus aktualisieren, z. B. durch
Modifizieren der Einstellungen in dem Puffergrößeninformationsregister 616,
wie es im Vorhergehenden beschrieben ist.
-
Bei
Schritt 1074 kann die Steuerung 106 bestimmen,
ob noch mehr Daten von dem nichtflüchtigen Speicher 108 in
den Puffer 146 geschrieben werden sollen. Wenn mehr Daten
geschrieben werden sollen, kann die Steuerung 106 bei Schritt 1070 mit dem
Prüfen
auf Raum in dem Puffer 146 und bei Schritt 1072 mit
dem Schreiben in den Puffer 146 fortfahren, wenn Raum in
dem Puffer 146 verfügbar
ist. Andernfalls kann die Steuerung 106 bei Schritt 1012 mit
dem Verarbeiten von Daten fortfahren. Bei einem Ausführungsbeispiel
kann die Steuerung 106 durch Bestimmen, ob eine durch den
DMA-Übertragungsbefehl
bestimmte Datenmenge übertragen
worden ist, bestimmen, ob weitere Daten übertragen werden sollen. Optional
kann die Steuerung 106 mit dem Schreiben von Daten fortfahren,
bis der Host 102 einen Befehl an die Steuerung 106 ausgibt,
der anzeigt, dass die Übertragung
vollständig
ist.
-
Während die
Steuerung 106 Daten in dem Puffer 146 platziert,
kann der nichtflüchtige
Host 102 den Puffer 146 überwachen und Daten von dem
Puffer 146 lesen, wenn dort Daten durch die Steuerung 106 platziert
sind. Somit kann bei Schritt 1056 die Nichtflüchtiger-Speicher-Steuerung 106 den
Puffer 146 auf Daten prüfen.
Die Überprüfung kann
z. B. durch Lesen des Puffergrößeninformationsregisters 616,
das durch den flüchtigen
Speicher 104 aktualisiert wird, durchgeführt werden.
Optional kann eine Unterbrechung an den Host 102 ausgegeben
werden, wenn Daten in dem Puffer 146 platziert sind, wenn
eine spezifische Datenmenge in dem Puffer 146 platziert
ist oder wenn der Puffer 146 voll ist. Wenn der Host 102 bei
Schritt 1058 bestimmt, dass der Puffer 146 Daten
enthält,
kann der Host 102 die Daten aus dem Puffer 146 abrufen.
Optional kann der Host 102, wenn sich keine Daten in dem
Puffer 146 befinden, in Schritt 1056 mit dem Prüfen auf
Daten fortfahren.
-
Wenn
der Host 102 Daten aus dem Puffer liest, können die
Puffergrößeninformationen 616 durch
den flüchtigen
Speicher 104 aktualisiert werden. Bei Schritt 1062 kann
der Host 102 bestimmen, ob die Datenübertragung vollständig ist.
Wenn die Datenübertragung
nicht vollständig
ist, kann der Host 102 bei Schritt 1056 mit dem
Prüfen
des Puffers 146 auf Daten fortfahren. Optional kann anschließend der Host 102,
wenn die Datenübertragung
vollständig
ist, bei Schritt 1064 mit dem Verarbeiten der Daten fortfahren.
Bei einem Ausführungsbeispiel
kann der Host 102 durch Bestimmen, ob eine spezifizierte
Datenmenge übertragen
worden ist, bestimmen, dass eine Datenübertragung vollständig ist,
wie es im Vorhergehenden beschrieben wurde. Optional kann der Host 102,
jedes Mal wenn der Host 102 zusätzliche Daten benötigt, kontinuierlich
Daten von dem Puffer 146 oder einem Abschnitt des Puffers 146 lesen. Auch
kann, wie es vorhergehend beschrieben ist, der Host 102 durch
Ausgeben eines Befehls an die Speichersteuerung 106 über das Überlagerungsfenster 304 die Übertragung
beenden.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der Puffer 146 in mehrere Sektionen
partitioniert sein. Jede Sektion kann verwendet werden, um unterschiedliche
DMA-Übertragungen,
wie sie durch durch den Host 102 ausge gebene Befehle spezifiziert
sind, durchzuführen.
Somit kann in manchen Fällen
ein Abschnitt des Puffers 146 durch den Host 102 verwendet
werden, um automatisch Daten aus einer Quellenadresse und aufeinanderfolgenden Adressen
in dem nichtflüchtigen
Speicher 108 abzurufen, während ein anderer Abschnitt
des Puffers 146 durch den Host 102 verwendet werden
kann, um automatisch Daten in eine Zieladresse und aufeinanderfolgende
Adressen in dem nichtflüchtigen
Speicher 108 zu schreiben.
-
Zugreifen auf gespiegelte Steuerregister über das Überlagerungsfenster
-
Bei
einem Ausführungsbeispiel
der Erfindung kann der Host 102 das Überlagerungsfenster 304 verwenden,
um auf Fernsteuerregister in der Nichtflüchtiger-Speicher-Steuerung 106 zuzugreifen. Die
Fernsteuerregister, auf die über
das Überlagerungsfenster
zugegriffen werden kann, können
die USB/ATA-Steuerregister 158 sowie andere Steuerregister
(z. B. die iDMA-Steuerregister 152) umfassen. Ein derartiger
Zugriff kann ein Bestimmen des Status der Steuerregister 158 und
ein Verändern
der Einstellungen der Steuerregister 158 umfassen.
-
Bei
einem Ausführungsbeispiel
kann ein Speicherraum 1102 in dem Überlagerungsfenster 304 bereitgestellt
werden, um auf die gespiegelten Steuerregister 1104 in
dem flüchtigen
Speicher 104 zuzugreifen, wie es in 11 dargestellt
ist. Bei einem Ausführungsbeispiel
kann der gespiegelte Steuerregisterspeicherraum 1102 in
dem Speicherraum 310, der automatisch zugeordnet wird,
wenn das Überlagerungsfenster 304 freigegeben
wird (z. B., wenn das Überlagerungsfensterbit
OWE gesetzt ist), angeordnet sein. Optional kann der Speicherregisterraum 1102 zugeordnet
werden, wenn die Überlagerungsfenstergröße 308 eingestellt
wird. In manchen Fällen
kann der Steuerregisterraum 1102 direkt nach dem Speicherraum
für die
Steuerregister 600, was hinsichtlich 6 beschrieben
ist, zugeordnet werden. Optional kann der Steuerregisterraum 1102 nach
dem Pufferraum 330 zugeordnet werden. Ferner kann bei einem
Ausführungsbeispiel
der Ort des gespiegelten Steuerregisterraums 1102 konfigurierbar
sein, z. B. durch Bereitstellen eines speicherabgebildeten Steuerregisters
in dem Überlagerungsfenster 304,
das verwendet werden kann, um eine Basisadresse und/oder Größe für den gespiegelten Steuerregisteradressraum 1102 zu
spezifizieren.
-
12 ist
ein Flussdiagramm, das einen Prozess 1200 zum Zugreifen
auf die Fernsteuerregister 158 über die gespiegelten Steuerregister 1104 darstellt,
gemäß einem
Ausführungsbeispiel
der Erfindung. Der Prozess 1200 kann bei Schritt 1202 beginnen,
in dem der Host 102 den flüchtigen Speicher 104 auf
anstehende Befehle prüft.
Wenn der Host 102 bestimmt, dass keine Befehle anstehen,
kann der Host 102 über
die Flüchtiger-Speicher-Schnittstelle 112 des
flüchtigen
Speichers 104 Daten in den gespiegelten Steuerregisteradressraum 1102 schreiben.
Die in den gespiegelten Steuerregisterraum 1102 geschriebenen
Daten können
in die gespiegelten Steuerregister 1104 platziert werden.
Der Host 102 kann anschließend bei Schritt 1206 ein
Steuerregisterbit in dem flüchtigen
Speicher 104 setzen, das anzeigt, dass die gespiegelten
Steuerregister 1104 modifiziert worden sind. Optional kann
der flüchtige Speicher 104 automatisch
bestimmen, dass die gespiegelten Steuerregister 1104 aktualisiert
worden sind.
-
Bei
Schritt 1212 kann der flüchtige Speicher 104 die
Anzeige erhalten, dass die gespiegelten Steuerregister 1104 modifiziert
worden sind. Der flüchtige
Speicher 104 kann bei Schritt 1214 anschließend der
Nichtflüchtiger-Speicher-Steuerung 106 anzeigen,
dass die gespiegelten Steuerregister 1104 modifiziert worden
sind. Die Anzeige kann anschließend
der Nichtflüchtiger-Speicher-Steuerung 106 entweder
durch Ausgeben einer Unterbrechung an die Nichtflüchtiger-Speicher-Steuerung 106 oder durch
Setzen eines Statusbits, das durch die Nichtflüchtiger-Speicher-Steuerung 106 abgefragt
werden kann, zur Verfügung
werden. Auf ein Empfangen der Anzeige hin, dass die gespiegelten
Register 1104 modifiziert worden sind, kann die Nichtflüchtiger-Speicher-Steuerung 106 bei
Schritt 1218 die Daten von den gespiegelten Registern 1104 in
den flüchtigen
Speicher 104 laden und bei Schritt 1220 die geladenen
Daten in die Steuerregister 158 platzieren.
-
Bei
Schritt 1222 kann die Nichtflüchtiger-Speicher-Steuerung 106 einen
Befehl an den flüchtigen
Speicher 104 ausgeben, um ein Steuerregisterbit zu setzen,
das anzeigt, dass die Fernsteuerregister 158 erfolgreich
aktualisiert worden sind. In manchen Fällen kann die Nichtflüchtiger-Speicher-Steuerung 106 auch
eine Kopie von aktualisierten Informationen aus den Fernsteuerregistern 158 bereitstellen,
die in die gespiegelten Steuerregister 1104 in dem flüchtigen
Speicher 104 zu platzieren sind. Bei Schritt 1216 kann
der flüchtige
Speicher 104 das Steuerregisterbit, das anzeigt, dass die
Fernsteuerregister 158 aktualisiert worden sind, aktualisieren.
Der Host 102 kann die Anzeige, dass die Steuerregister 158 aktualisiert
worden sind, bei Schritt 1208 empfangen. Der Prozess 1200 kann dann
bei Schritt 1210 fortfahren.
-
Auch
wenn es im Vorhergehenden mit Bezug auf ein Spiegeln, das als Folge
von durch den Host 102 ausgegebenen Befehlen durchgeführt wird,
beschrieben ist, kann Spiegeln in manchen Fällen auch automatisch durch
den flüchtigen
Speicher 104 (z. B. durch Setzen eines Statusregisterbits,
das durch die Nichtflüchtiger-Speicher-Steuerung 106 oder
durch Ausgeben einer Unterbrechung an die Nichtflüchtiger-Speicher-Steuerung 106 geprüft wurde)
durchgeführt
werden, z. B. jedes Mal, wenn die gespiegelten Steuerregister 1104 aktualisiert
werden. Wenn das Statusregisterbit oder die Unterbrechung durch die
Speichersteuerung 106 erfasst wird, kann die Speichersteuerung 106 automatisch
die gespiegelten Steuerregister 1104 in die Fernsteuerregister 158 laden. Optional
kann das Spiegeln durch den flüchtigen
Speicher 104 in einem spezifizierten Intervall durchgeführt werden.
-
Ferner
kann in manchen Fällen
ein Spiegeln von aktualisierten Daten aus den Fernsteuerregistern 158 durch
die Nichtflüchtiger-Speicher-Steuerung 106 eingeleitet
werden, z. B. durch Ausgeben von Befehlen an oder Schreiben von
Daten in den flüchten
Speicher 104, der aktualisierte Daten von den Fernsteuerregistern 158,
die in die gespiegelten Steuerregister 1104 zu platzieren
sind, enthält.
Bei einem Ausführungsbeispiel
kann die Nichtflüchtiger-Speicher-Steuerung 106 das
Spiegeln periodisch einleiten, z. B. in einem spezifizierten Intervall.
Das spezifizierte Intervall kann bei einem Ausführungsbeispiel durch den Host 102 über die
gespiegelten Steuerregister 1104 spezifiziert werden. Optional kann
die Nichtflüchtiger-Speicher-Steuerung 106 die gespiegelten
Steuerregister 1104 jedes Mal, wenn die Fernsteuerregister 158 modifiziert
werden, aktualisieren.
-
Bei
einem Ausführungsbeispiel
kann, wenn die gespiegelten Steuerregister 1104 durch die
Nichtflüchtiger-Speicher-Steuerung 106 aktualisiert
werden, der flüchtige
Speicher 104 eine Anzeige der Aktualisierung für den Host 102 bereitstellen.
Die Anzeige kann z. B. durch Ausgeben einer Unterbrechung von dem
flüchtigen
Speicher 104 an den Host 102 oder durch Setzen
eines Statusregisterbits in dem flüchtigen Speicher 104,
auf das durch den Host 102 über die Modusregister 170 oder über einen
der Sätze
von speicherabgebildeten Steuerregistern 138, 140, 142 zugegriffen
werden kann (z. B. abgefragt werden kann) bereitgestellt werden.
-
Schlussfolgerung
-
Während sie
im Vorhergehenden hinsichtlich eines Prozessors, der durch eine
Flüchtiger-Speicher- Schnittstelle auf
einen flüchtigen
Speicher und einen nichtflüchtigen
Speicher zugreift, beschrieben wurden, können Ausführungsbeispiele der Erfindung auch
in eingebetteten System verwendet werden, in denen der Hostprozessor über zusätzliche
Schnittstellen auf zusätzliche
Speicherkomponenten (z. B. flüchtige
Speicher und nichtflüchtige
Speicher) zugreift. Ähnlich
können
Ausführungsbeispiele
der Erfindung, auch wenn sie im Vorhergehenden hinsichtlich eines
flüchtigen
Speichers, eines nichtflüchtigen Speichers
und einer Nichtflüchtiger-Speicher-Steuerung
beschrieben wurden, die auf gesonderten Chips erzeugt sind, auch
verwendet werden, wenn getrennte Komponenten (z. B. der flüchtige Speicher
und die Nichtflüchtiger-Speicher-Steuerung
oder der nichtflüchtige
Speicher und die Nichtflüchtiger-Speicher-Steuerung)
auf demselben Chip erzeugt sind.
-
Auch
wenn sich das Vorhergehende auf Ausführungsbeispiele der vorliegenden
Erfindung richtet, können
andere und weitere Ausführungsbeispiele der
Erfindung entwickelt werden, ohne von dem grundlegenden Schutzbereich
derselben abzuweichen, und der Schutzbereich derselben wird durch die
folgenden Patentansprüche
bestimmt.