-
Die
Erfindung betrifft eine Speicherkarte und eine zugehörige Speichersteuereinheit.
-
Speicherkarten
werden allgemein in digitalen Geräten, wie in persönlichen
digitalen Assistenten (PDAs), in tragbaren Audiogeräten, in
Mobiltelefonen und in Personalcomputern, benutzt, um Informationen
zu speichern und um auf Informationen zuzugreifen. Eine typische
Speicherkarte umfasst einen nichtflüchtigen Speicher und eine korrespondierende Speichersteuereinheit
bzw. Speichersteuerschaltung, welche eine Schnittstelle zwischen
der Speicherkarte und einem Hostsystem zur Verfügung stellt.
-
-
1 zeigt
ein allgemeines Layout einer Speicherkarte 100, welche
mit einem Hostsystem 200 verbunden ist. Unter Bezugnahme
auf 1 umfasst die Speicherkarte 100 ein Flashspeichermodul 120 und
eine Speichersteuereinheit 140. Das Hostsystem 200 kommuniziert über die
Speichersteuerschaltung 140 mit dem Flashspeichermodul 120.
Das Hostsystem 200 kann über die Speichersteuerschaltung 140 insbesondere
Lese-, Programmier- und Löschvorgänge im Flashspeichermodul 120 ausführen.
-
Speicherzellen
im Flashspeichermodul 120 sind in Blöcken und Seiten organisiert.
Jeder Block umfasst im Wesentlichen ein oder mehrere Seiten und
jede Seite umfasst im Wesentlichen eine Mehrzahl von Speicherzellen
zum Speichern einer spezifizierten Anzahl von Bytes. Ein 1-GB-NAND-Flashspeichermodul
(GB: Gigabyte) kann beispielsweise in 8192 Blöcken organisiert sein, wobei
jeder Block 32 Seiten aufweist und jede Seite 512 Datenbyte speichert.
-
Im
Flashspeichermodul 120 können Daten einer Seite gleichzeitig
gelesen oder programmiert werden und blockweise gleichzeitig gelöscht werden. Entsprechend
wird eine Seite von Daten zum oder vom Flashspeichermodul 120 immer
dann übertragen,
wenn das Hostsystem 200 einen Lese- oder Programmiervorgang
im Flashspeichermodul 120 ausführt.
-
Die
Leistungsfähigkeit
der Lese-, Programmier- und Löschvorgänge im Flashspeichermodul 120 kann
durch Erhöhen
der Größe von jedem
Block verbessert werden. Zusätzlich
kann die Vergrößerung der
Blockabmessungen auch die Chipabmessungen des Flashspeichermoduls 120 durch
die Reduzierung der peripheren Schaltungen per Byte reduzieren,
welche erforderlich sind, um jeden Block zu steuern. Die Blockgröße wird
allgemein entweder durch eine Erhöhung der Anzahl von Seiten
je Block oder durch eine Erhöhung
der Bytes in jeder Seite erhöht.
-
2 zeigt
zwei Blöcke
mit verschiedenen Blockgrößen: einen „kleinen
Block” und
einen „großen Block”. Der kleine
Block umfasst 32 Seiten, welche jeweils eine Seitengröße von 512
Byte (B) aufweisen. Die Seiten sind in 32 Zeilen angeordnet, wobei
jede Zeile eine einzelne Seite repräsentiert. Der große Block
weist 64 Seiten auf, welche jeweils eine Seitengröße von 2
Kilobyte (KB) aufweisen. Die Seiten im großen Block sind in 64 Zeilen
angeordnet, wobei jede Zeile eine einzelne 2 KB-Seite speichert. Um 2 zu
vereinfachen, sind jedoch nicht alle 64 Seiten dargestellt.
-
Innerhalb
des großen
Blocks kann jede 2 KB-Seite in vier kleine Seiten von jeweils 512
Byte aufgeteilt werden. Auf die kleinen Seiten im großen Block
kann durch Spezifizieren einer Zeile und einer Startspalte, wie
durch Pfeile angezeigt, zugegriffen werden. In der Beschreibung
wird der Begriff „kleine Seite” verwendet,
um einen Abschnitt eines großen Blocks
zu bezeichnen, der die gleiche Größe wie eine Seite im kleinen
Block aufweist.
-
Die
entsprechenden Größen der
kleinen und großen
Blöcke
in 2 werden nur als Beispiele verwendet. In der Praxis
können
die Anzahl und Größen der
Seiten im kleinen und im großen
Block variieren. Ein kleiner Block hat jedoch allgemein wenigstens eine
Abmessung, welche kleiner als eine korrespondierende Abmessung in
einem großen
Block ist, und Seitenadressen in kleinen Blöcken können auf Seitenadressen in
großen
Blöcken
abgebildet werden. In der vorliegenden Beschreibung werden Adressen in
kleinen Blöcken
als „kleine
Blockadressen” bezeichnet
und Adressen in großen
Blöcken
werden als „große Blockadressen” bezeichnet.
-
Die
kleinen Blockadressen und die großen Blockadressen umfassen
beide eine Speicherblockadresse und eine Seitenadresse. Die Speicherblockadresse
zeigt einen Block im Flashspeichermodul 120 an, wo die
Adresse angeordnet ist, und die Seitenadresse zeigt eine Seite im
Flashspeichermodul 120 an, wo die Adresse angeordnet ist.
-
Um
eine logische Abbildung zwischen einem kleinen Block und einem großen Block
darzustellen, sind die Seiten im kleinen Block mit 0P bis 31P bezeichnet.
Ein großer
Pfeil zeigt in 2 den Zusammenhang zwischen
logischen Adressen im kleinen Block und physikalischen Adressen
im großen
Block an. Eine solche logische Abbildung kann beispielsweise erforderlich
sein, wenn das Hostsystem 200 dafür ausgelegt ist, unter Verwendung
von kleinen Blockadressen auf Daten zuzugreifen, während auf das
Flashspeichermodul 120 unter Verwendung großer Blockadressen
zugegriffen wird. In anderen Worten ausgedrückt, wenn das Hostsystem 200 der
Speichersteuerschaltung 140 eine kleine Blockadresse sendet,
muss die Speichersteuerschaltung 140 die kleine Blockadresse
in eine große
Blockadresse konvertieren, um auf das Flashspeichermodul 120 zuzugreifen.
-
Es
sei beispielsweise angenommen, dass das Hostsystem 200 einen
Lesebefehl mit einer Adresse einer Seite 1P im kleinen Block an
die Speichersteuerschaltung 140 sendet. Die Speichersteuerschaltung 140 muss
die Adresse für
die Seite 1P in eine physikalische Adresse im großen Block
konvertieren. Wie aus 2 ersichtlich ist, ist die Seite
1P in Zeile 1, Spalte 0 des kleinen Blocks und in Zeile 0, Spalte
1 im großen
Block angeordnet.
-
Leider
verlangsamt die Adressenkonvertierungsanforderung den Lesevorgang
im Flashspeichermodul 120, wodurch die Gesamtleistungsfähigkeit
der Speicherkarte verschlechtert werden kann.
-
Die
Offenlegungsschrift
US
2003/0200413 A1 offenbart ein Speichersystem mit einem
Chipsatz vom AGP(Accelerated Graphics Port)-Typ, der eine Kernlogik
zur Übersetzung
von virtuellen Betriebssystemadressen in physikalische Speicheradressen mittels
einer speicherbasierten Grafikadressenabbildungstabelle (GART) beinhaltet.
Dabei kann sich die Speicherseitengröße der Kernlogik von derjenigen eines
das Speichersystem verwendenden Datenverarbeitungssystems unterscheiden,
wofür dann
spezielle Übersetzungs-/Abbildungsmaßnahmen
vorgesehen sind.
-
Es
ist Aufgabe der Erfindung, eine Speicherkarte und eine zugehörige Speichersteuereinheit
anzugeben, welche die oben genannten Unzulänglichkeiten des Standes der
Technik wenigstens teilweise beseitigen.
-
Die
Erfindung löst
diese Aufgabe durch eine Speicherkarte mit den Merkmalen des Patentanspruchs
1, durch eine Speichersteuereinheit mit den Merkmalen des Patentanspruchs
21 und durch eine nichtflüchtige
Speicherkarte mit den Merkmalen des Patentanspruchs 23.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
-
Vorteilhafte,
nachfolgend beschriebene Ausführungsformen
der Erfindung sowie das zu deren besserem Verständnis oben erläuterte,
herkömmliche
Ausführungsbeispiel
sind in den Zeichnungen dargestellt. Es zeigen:
-
1 ein
Blockdiagramm eines allgemeinen Layouts einer mit einem Hostsystem
verbundenen Speicherkarte,
-
2 ein
Diagramm zur Darstellung einer logischen Abbildung von Seiten in
einem Flashspeichermodul mit kleinen Blöcken und einem Flashspeichermodul
mit großen
Blöcken,
-
3 ein
Blockdiagramm einer Speichersteuereinheit gemäß der Erfindung,
-
4 ein
Blockdiagramm eines Hardwarebeschleunigers (HWACC) für die Speichersteuereinheit
in 3,
-
5 ein
Flussdiagramm zur Darstellung eines Lese-/Schreibvorgangs einer
Speicherkarte gemäß der Erfindung,
-
6 ein
Diagramm zur Darstellung des Timings von sequentiellen Lesevorgängen, welche
von Speicherkarten mit verschiedenen Speichersteuerungskonfigurationen
ausgeführt
werden,
-
7 ein
Diagramm zur Darstellung des Timings von zufälligen Lesevorgängen, welche
von Speicherkarten mit verschiedenen Speichersteuerungskonfigurationen
ausgeführt
werden, und
-
8 ein
Blockdiagramm einer weiteren Speichersteuereinheit gemäß der Erfindung.
-
Die
Erfindung wird nachfolgend unter Bezugnahme auf die zugehörigen 3 bis 8,
welche Ausführungsbeispiele
der Erfindung zeigen, detaillierter beschrieben. In den Zeichnungen
bezeichnen gleiche Bezugszeichen Elemente bzw. Komponenten, welche
gleiche bzw. analoge Funktionen ausführen.
-
3 zeigt
eine Speichersteuereinheit 140 gemäß der Erfindung, die eine Hostschnittstellensteuereinheit 310,
eine Mikrosteuereinheit (MCU) 320, einen internen Speicher 330,
ein Register 340, einen Schalter 350, eine Speicherschnittstellensteuereinheit 360,
einen Hardwarebeschleuniger 370 und einen Pufferspeicher 380 umfasst.
-
Das
Hostsystem 200 überträgt Eingabebefehle
und Adressen an die Speichersteuerschaltung 140 unter Verwendung
von kleinen Blockadressen und auf das Flashspeichermodul 120 wird
unter Verwendung von großen
Blockadressen zugegriffen. Entsprechend muss die Speichersteuerschaltung 140 die
vom Hostsystem 200 bereitgestellten kleinen Blockadressen
in große
Blockadressen konvertieren, um auf das Flashspeichermodul 120 zuzugreifen. Wenn
der Eingabebefehl mit dem Flashspeichermodul 120 inkompatibel
ist, muss die Speichersteuer schaltung 140 auch den Eingabebefehl
in einen mit dem Flashspeichermodul 120 kompatiblen Ausgabebefehl
konvertieren.
-
In
der vorliegenden Beschreibung wird der Begriff „externe Adresse” in Bezug
auf kleine Blockadressen verwendet, welche von einer externen Quelle,
wie dem Hostsystem 200, an die Speichersteuerschaltung 140 gesendet
werden, und der Begriff „interne
Adresse” wird
in Bezug auf große
Blockadressen verwendet, welche von der Speichersteuerschaltung 140 an
das Flashspeichermodul 120 gesendet werden.
-
Eine
externe oder interne Adresse umfasst im Wesentlichen eine Speicherblockadresse
und eine Seitenadresse. Zudem kann die externe Adresse Start- und
Endseitenadressen umfassen, um einen Bereich von Seiten anzugeben,
auf welche durch einen sequentiellen Lesevorgang zugegriffen werden soll.
Zusätzlich
kann die interne Adresse eine Startspalte aufweisen, welche die
Position einer kleinen Seite innerhalb eines großen Blocks im Flashspeichermodul 120 anzeigt.
-
Das
Hostsystem 200 sendet allgemein drei Arten von Eingabebefehlen
an die Speichersteuerschaltung 140: Schreibbefehle, sequentielle
Lesebefehle und zufällige,
unsortierte Lesebefehle. Ein Schreibbefehl initiiert einen Schreibvorgang,
um eine kleine Seite im Flashspeichermodul 120 zu programmieren,
ein sequentieller Lesebefehl initiiert einen sequentiellen Lesevorgang,
um eine Sequenz von kleinen Seiten aus dem Flashspeichermodul 120 zu
lesen, und ein unsortierter Lesebefehl initiiert einen unsortierten
Lesevorgang, um eine einzelne kleine Seite aus dem Flashspeichermodul 120 zu
lesen. Der Schreibbefehl und der unsortierte Lesebefehl benutzen
beide eine einzelne Adresse und sie greifen auf eine einzelne Datenseite
im Flashspeichermodul 120 zu. Im Gegensatz dazu verwendet
der sequentielle Lesebefehl eine einzelne Adresse, welche jedoch
einen bestimmten Bereich von Seiten mit der Start- und Endseitenadresse
spezifiziert, um potentiell auf mehr als eine kleine Seite im Flashspeichermodul 120 zuzugreifen.
-
Wenn
das Hostsystem 200 einen Lesebefehl an die Speichersteuerschaltung 140 sendet,
nimmt die Speichersteuerschaltung 140 in Abhängigkeit
davon, ob der Lesebefehl ein sequentieller Lesebefehl oder ein unsortierter
Lesebefehl ist, entweder einen sequentiellen Lesevorgangsmodus oder
einen unsortierten Lesevorgangsmodus an. In Abhängigkeit vom Betriebmodus der
Speichersteuerschaltung 140 arbeitet der Hardwarebeschleuniger 370 verschieden,
was nachfolgend beschrieben wird.
-
Das
Hostsystem 200 kommuniziert über die Hostschnittstellensteuerschaltung 310 mit
der Speichersteuerschaltung 140. Die Hostschnittstellensteuerschaltung 310 umfasst
ein Befehls-/Adressenregister 311, welches einen Eingabebefehl
und eine externe Adresse speichert, die vom Hostsystem 200 empfangen
werden. Zudem speichert das Befehls-/Adressenregister 311 ein Interruptflagsignal, das
zum Steuern von verschiedenen Vorgängen in der Speichersteuerschaltung 140 verwendet
wird. Während
das Befehls-/Adressenregister 311 in 3 in
der Hostschnittstellensteuerschaltung 310 angeordnet ist,
kann es alternativ außerhalb
der Hostschnittstellensteuerschaltung 310 angeordnet sein. Das
Befehls-/Adressenregister 311 kann mehr als ein Register
umfassen.
-
Das
Interruptflagsignal im Befehls-/Adressenregister 311 kann
zur Steuerung verwendet werden, ob die Speichersteuerschaltung 140 die
Hardwarebeschleunigungsschaltung 370 zum Erzeugen einer
internen Adresse für
einen Lesevorgang verwendet oder nicht. Wenn das Interrupzflagsignal während des
Ablaufs eines Lese- oder Schreibvorgangs „gesetzt” ist, erzeugt die MCU 320 eine
erste interne Adresse und einen ersten Ausgabebefehl für das Flashspeichermodul 120.
Andererseits erzeugt die Hardwarebeschleunigungsschaltung 370 basierend
auf der externen Adresse eine zweite interne Adresse und einen zweiten
Ausgabebefehl für
das Flashspeichermodul 120, wenn das Interruptflagsignal
nicht gesetzt ist.
-
Die
Begriffe „Setzen” und „Löschen” bezeichnen
Vorgänge,
bei welchen ein Bit oder Bits, welche ein logisches Flag aufweisen,
umgeschaltet werden, um verschiedene Zustände des Flagsignals zu erhalten.
Das Interruptflag ist beispielsweise „gesetzt”, wann immer das Befehls-/Adressenregister 311 einen
Schreibbefehl empfängt.
Analog ist das Interruptflag auch gesetzt, wann immer das Befehls-/Adressenregister 311 einen
Lesebefehl empfängt,
der ohne Konvertierung einer kleinen Blockadresse unter Verwendung
der Hardwarebeschleunigungsschaltung 370 ausgeführt wird.
Das Interruptflag wird nach dem Abschluss eines Schreib- oder Lesevorgangs
oder nach dem Lesen einer kleinen Seite während eines sequentiellen Lesevorgangs „gelöscht”.
-
Wann
immer das Interruptflagsignal gesetzt ist, holt die MCU 320 die
externe Adresse und den Eingabebefehl aus dem Befehls-/Adressenregister 311.
Dann konvertiert die MCU 320 die externe Adresse in die
erste interne Adresse und erzeugt den zweiten Ausgabebefehl. Diese
Konvertierung wird im Allgemeinen von einem im internen Speicher 330 gespeicherten
Programm umgesetzt. Nach dem Abschluss der Konvertierung werden
die erste interne Adresse und der Ausgabebefehl als erste Befehls-/Adressendaten
zum Schalter 350 übertragen.
-
Wenn
das Interruptflagsignal nicht gesetzt ist, erzeugt die Hardwarebeschleunigungsschaltung 370 die
zweite interne Adresse und den Ausgabebefehl als zweite Befehls-/Adressendaten.
-
Wann
immer die Hardwarebeschleunigungsschaltung 370 die zweite
Adresse erzeugt, konvertiert die MCU 320 die externe Adresse
nicht in die erste interne Adresse. Dies ermöglicht es der Speichersteuerschaltung 140,
die Geschwindigkeit für den
Lesevorgang durch Vermeiden der Zeitdauer zu erhöhen, welche zum Ausführen des
Konvertierungsprogramms erforderlich ist.
-
Der
Schalter 350 empfängt
die jeweiligen ersten und zweiten Befehls-/Adressendaten von der MCU 320 und
von der Hardwarebeschleunigungsschaltung 370 und wählt eine
der ersten Befehls-/Adressendaten basierend auf einem von der MCU 320 ausgegebenen
Auswahlsignal SEL zur Ausgabe an die Speicherschnittstellensteuerschaltung 360 aus.
Wenn das Interruptflagsignal gesetzt ist, bewirkt das Auswahlsignal
SEL, dass der Schalter 350 die ersten Befehls-/Adressendaten
ausgibt, und wenn das Interruptflagsignal gelöscht ist, bewirkt das Auswahlsignal
SEL, dass der Schalter 350 die zweiten Befehls-/Adressendaten
ausgibt.
-
Wann
immer die MCU 320 die externe Adresse in die erste interne
Adresse konvertiert, werden die erste interne Adresse und die externe
Adresse an die Hardwarebeschleunigungsschaltung 370 übertragen,
wo sie als „vorherige
interne Adresse” bzw.
als „vorherige
externe Adresse” gespeichert werden.
Die Hardwarebeschleunigungsschaltung 370 verwendet die
vorherige interne und externe Adresse, um nachfolgende interne Adressen
zu erzeugen.
-
Wann
immer die MCU 320 eine Adressenkonvertierung ausführt, modifiziert
sie ein Hardwarebeschleunigungsflagsignal in der Hardwarebeschleunigungsschaltung 370.
Wenn die Adressenkonvertierung für
einen Lesebefehl ist, setzt die MCU 320 das Hardwarebeschleunigungsflag,
und wenn die Adressenkonvertierung für einen Schreibbefehl ist,
löscht die
MCU 320 das Hardwarebeschleunigungsflag. Wenn die MCU 320 keine
Adressenkonvertierung ausführt,
d. h. wenn das Interruptflag gelöscht
ist, wird das Hardwarebeschleunigungsflag nicht modifiziert.
-
Die
Speicherschnittstellensteuerschaltung 360 empfängt die
ersten oder zweiten Befehls-/Adressendaten, welche durch den Schalter 350 übertragen
werden, und gibt die ersten oder zweiten Befehls-/Adressendaten
an das Flashspeichermodul 120 aus. Das Flashspeichermodul 120 umfasst
typischerweise einen NAND-Flashspeicher und daher benutzt die Speicherschnittstellensteuerschaltung 360 im
Allgemeinen ein herkömmliches NAND-Schnittstellentiming,
um mit dem Flashspeichermodul 120 zu kommunizieren.
-
Die
Speicherschnittstellensteuerschaltung 360 überträgt Daten
zum und vom Pufferspeicher 380 und dem Flashspeichermodul 120 in
Reaktion auf die Befehls-/Adressendaten, welche über den Schalter 350 empfangen
werden. Entsprechend kann der Pufferspeicher 380 abwechselnd
durch Befehls-/Adressendaten von der MCU 320 und der Hardwarebeschleunigungsschaltung 370 gesteuert werden.
-
Wenn
das Hardwarebeschleunigungsflag gesetzt ist, erzeugt die Hardwarebeschleunigungsschaltung 370 basierend
auf der vorherigen internen und externen Adresse die zweite interne
Adresse und den Ausgabebefehl. Wenn ein aktueller Befehl beispielsweise
ein unsortierter Lesebefehl ist und das Hardwarebeschleunigungsflag
gesetzt ist, vergleicht die Hardwarebeschleunigungsschaltung 370 eine
aktuelle externe Adresse im Befehls-/Adressenregister 311 mit
der vorherigen externen Adresse und bestimmt, ob die Speicherblockadresse
in der aktuellen externen Adresse die gleiche wie die in der vorherigen
externen Adresse ist. Zusätzlich
vergleicht die Hardwarebeschleunigungsschaltung 370 auch,
ob die Seitenadresse der aktuellen externen Adresse zwischen der
Start- und Endseitenadresse der vorherigen externen Adresse liegt.
-
Wenn
die Speicherblockadressen der aktuellen und der vorherigen externen
Adresse gleich sind, und die Seitenadresse der aktuellen exter nen
Adresse zwischen der Start- und Endseitenadresse der vorherigen
externen Adresse liegt, erzeugt die Hardwarebeschleunigungsschaltung 370 die
zweite interne Adresse basierend auf der aktuellen und der vorherigen
externen Adresse und der vorherigen internen Adresse. Die zweite
interne Adresse und ein korrespondierender Ausgabebefehl werden
dann über den
Schalter 350 zur Speicherschnittstellensteuerschaltung 360 übertragen.
-
Wenn
die Speicherblockadressen der aktuellen und der vorherigen externen
Adresse nicht gleich sind, oder die Seitenadresse der aktuellen
externen Adresse nicht zwischen der Start- und Endseitenadresse
der vorherigen externen Adresse liegt, setzt die Hardwarebeschleunigungsschaltung 370 das
Interruptflag im Befehls-/Adressenregister 311. Durch das
Setzen des Interruptflag auf diese Weise wird bewirkt, dass die
MCU 320 die aktuelle externe Adresse in die erste interne
Adresse konvertiert.
-
4 zeigt
eine vorteilhafte Realisierung der Hardwarebeschleunigerschaltung 370 gemäß der Erfindung.
Unter Bezugnahme auf 4 umfasst die Hardwarebeschleunigungsschaltung 370 ein
Register 371, eine Auswahlschaltung 372, eine
Beurteilungsschaltung 373, einen Adressengenerator 374 und
eine Zustandsmaschine 375.
-
Das
Register 371 speichert eine Referenzadresse, welche verwendet
wird, um zu bestimmen, ob die zweite interne Adresse basierend auf
einer neuen Adresse REQ_ADD erzeugt werden kann. Die Referenzadresse
wird mit der neuen Adresse REQ_ADD verglichen, und wenn diese Adressen „ausreichend ähnlich” sind,
erzeugt der Hardwarebeschleuniger 370 die zweite interne
Adresse basierend auf der neuen Adresse REQ_ADD.
-
Die
Referenzadresse im Register 371 wird typischerweise mit
einer ersten Adresse initialisiert, welche nach der ausgeführten Adressenkonvertierung
mit der ersten externen Adresse von der MCU 320 empfangen
wird. Die erste externe Adresse wird auch verwendet, um eine im
Adressengenerator 374 gespeicherte Adresse zu initialisieren.
-
Der
Adressengenerator 374 berechnet eine nächste Adresse NEXT_ADD in Reaktion
auf ein Steuersignal von der Zustandsmaschine 375 und gibt die
nächste
Adresse NEXT_ADD an das Register 371 aus. Die nächste Adresse
NEXT_ADD wird typischerweise durch Inkrementieren der Seitenadresse der
im Adressengenerator 374 gespeicherten Adresse berechnet.
Wenn die Speichersteuerschaltung 140 jedoch im unsortierten
Lesevorgangsmodus ist, wird eine in die Auswahlschaltung 372 eingegebene aktuelle
externe Adresse CUR_ADD im Allgemeinen durch den Adressengenerator 374 hindurchgeführt und
als nächste
Adresse NEXT_ADD ausgegeben. Die aktuelle externe Adresse CUR_ADD
ist eine externe Adresse, welche aktuell im Befehls-/Adressenregister 311 gespeichert
ist.
-
Die
nächste
Adresse NEXT_ADD, die neue Adresse REQ_ADD und die Referenzadresse
werden alle auf eine Weise aktualisiert, dass die neue Adresse REQ_ADD
eine aktualisierte Adresse in Bezug auf die Referenzadresse repräsentiert.
Die nächste
Adresse NEXT_ADD kann beispielsweise aktualisiert werden, bevor
die neue Adresse REQ_ADD in der Beurteilungsschaltung 373 mit
der Referenzadresse verglichen wird, und die Referenzadresse kann
nach demselben Vergleich in der Beurteilungsschaltung 373 mit
der nächsten
Adresse NEXT_ADD aktualisiert werden.
-
Die
Auswahlschaltung 372 empfängt die nächste Adresse NEXT_ADD und
die aktuelle externe Adresse CUR_ADD und wählt basierend auf einem Modusauswahlsignal
MODE, welches den sequentiellen Lese vorgangmodus oder den unsortierten
Lesevorgangmodus anzeigt, die nächste
Adresse NEXT_ADD oder die aktuelle externe Adresse CUR_ADD zur Ausgabe
aus. Wenn das Modusauswahlsignal MODE den sequentiellen Lesevorgangmodus
anzeigt, wählt
die Auswahlschaltung 372 die nächste Adresse NEXT_ADD zur
Ausgabe aus. Andererseits wählt
die Auswahlschaltung 372 die aktuelle externe Adresse CUR_ADD
zur Ausgabe aus, wenn das Modusauswahlsignal MODE den unsortierten
Lesevorgangmodus anzeigt. Die Beurteilungsschaltung 373 und
der Adressengenerator 374 empfangen beide die neue Adresse
REQ_ADD.
-
Die
Beurteilungsschaltung 373 arbeitet in Reaktion auf ein
Beschleunigungsfreigabesignal HWACC_EN und ein Lesesignal READ.
Wenn das Beschleunigungsfreigabesignal HWACC_EN und das Lesesignal
READ aktiviert sind, vergleicht die Beurteilungsschaltung 373 die
neue Adresse REQ_ADD mit der im Register 371 gespeicherten Referenzadresse.
In anderen Worten ausgedrückt, die
Beurteilungsschaltung 373 vergleicht die aktuelle externe
Adresse CUR_ADD oder die nächste
Adresse NEXT_ADD mit der vorherigen externen Adresse.
-
Die
Hardwarebeschleunigungsschaltung 370 aktiviert das Beschleunigungsfreigabesignal HWACC_EN
immer dann, wenn das Hardwarebeschleunigungsflag gesetzt ist. Das
Hardwarebeschleunigungsflag ist immer dann gesetzt, wenn ein vorheriger
Befehl vom Hostsystem 200 ein Lesebefehl ist. Wann immer
beispielsweise die MCU 320 eine Adressenkonvertierung für einen
Lesebefehl ausführt,
setzt sie das Hardwarebeschleunigungsflag, so dass das Beschleunigungsfreigabesignal HWACC_EN
aktiviert ist. Andererseits wird das Hardwarebeschleunigungsflag
immer dann auf inaktiv gelöscht,
wenn der vorherige Befehl vom Hostsystem 200 ein Schreibbefehl
ist.
-
Das
Lesesignal READ ist aktiviert, wann immer der aktuell im Befehls-/Adressenregister 311 gespeicherte
Befehl ein Lesebefehl ist. Entsprechend ist die Beurteilungsschaltung 373 aktiviert,
wann immer der vorherige und der aktuelle Befehl vom Hostsystem
Lesebefehle sind.
-
Wenn
die Beurteilungsschaltung 373 aktiviert ist, vergleicht
sie die neue Adresse REQ_ADD mit der im Register 371 gespeicherten
Referenzadresse. Die Beurteilungsschaltung 373 bestimmt,
ob die neue Adresse REQ_ADD die gleiche Speicherblockadresse wie
die Referenzadresse aufweist und ob die neue Adresse REQ_ADD eine
Seitenadresse zwischen der Start- und Endseitenadresse der Referenzadresse
aufweist. Wenn die Referenzadresse die gleiche Speicherblockadresse
wie die neue Adresse REQ_ADD aufweist, und die Seitenadresse der
neuen Adresse REQ_ADD zwischen der Start- und Endseitenadresse der
kleinen Referenzblockadresse liegt, aktiviert die Beurteilungsschaltung 373 ein
Treffersignal HIT. Andernfalls deaktiviert die Beurteilungsschaltung 373 das
Treffersignal HIT und erzeugt ein Interruptsignal INT, welches bewirkt,
dass das Interruptflag im Befehls-/Adressenregister 311 gesetzt
wird.
-
Die
Zustandsmaschine 375 erzeugt eine große Blockadresse und einen Ausgabebefehl
in Reaktion auf die Aktivierung des Treffersignals HIT. Die zweite
interne Adresse wird basierend auf der nächsten Adresse NEXT_ADD erzeugt,
welche vom Adressengenerator 374 ausgegeben wird und die
keine vom Adressengenerator 374 erhöhte Adresse ist, sondern eine
Adresse, die von einem Ausgangssignal der Auswahlschaltung 372 kombiniert
mit einer Repräsentation
voriger interner und externer Adressen, die in der Zustandsmaschine
gespeichert sind, aktualisiert wird. Die zweite interne Adresse
und der Ausgabebefehl von der Zustandsmaschine 375 werden
dann über
den Schalter 350 zur Speicherschnittstellensteuerschaltung 360 übertragen.
-
5 zeigt
ein Flussdiagramm zur Darstellung von Lese-/Schreibvorgängen einer Speicherkarte 100 gemäß der Erfindung.
Nachfolgend wird die Funktionsweise der Speicherkarte 100 für den sequentiellen
Lesevorgangsmodus und den unsortierten Lesevorgangsmodus beschrieben.
In der nachfolgenden Beschreibung werden beispielhafte Verfahrensschritte
durch Klammerausdrücke
bezeichnet, um sie von beispielhaften Elementen, wie den in den 1 bis 4 dargestellten
Elementen, unterscheiden zu können.
-
Unter
Bezugnahme auf 5 werden eine aktuelle externe
Adresse CUR_ADD und ein Eingabebefehl im Befehls-/Adressenregister 311 der
Hostschnittstellensteuerschaltung 310 gespeichert und die
Hostschnittstellensteuerschaltung 310 bestimmt im Schritt
S410, ob der Eingabebefehl ein Lesebefehl ist.
-
Wenn
der Eingabebefehl kein Lesebefehl ist, setzt die Hostschnittstellensteuerschaltung 310 im Schritt
S420 das Interruptflag im Befehls-/Adressenregister 311. Andernfalls
bestimmt die Hostschnittstellensteuerschaltung 310 im Schritt
S440, ob das Hardwarebeschleunigungsflag in der Hardwarebeschleunigungsschaltung 370 gesetzt
ist, wenn der Eingabebefehl ein Lesebefehl ist. Wenn das Hardwarebeschleunigungsflag
nicht gesetzt ist, setzt die Hostschnittstellensteuerschaltung 310 im
Schritt S420 das Interruptflag.
-
Wenn
das Hardwarebeschleunigungsflag jedoch gesetzt ist, bestimmt die
Hardwarebeschleunigungsschaltung 370 im Schritt S450, ob
die von der Auswahlschaltung 372 ausgegebene Adresse REQ_ADD
innerhalb eines vorher definierten, in der Hardwarebeschleunigungsschaltung 370 gespeicherten
Adressenbereichs liegt. Insbesondere bestimmt die Hardwarebeschleunigungsschaltung 370, ob
die neue Adresse REQ_ADD den gleichen Speicherblock als Referenzadresse
aufweist und ob eine Seitenadresse zwischen einer Startseite und
einer Endseite der kleinen Referenzblockadresse liegt. Wenn die
neue Adresse REQ_ADD nicht innerhalb des in der Hardwarebeschleunigungsschaltung 370 gespeicherten
Adressenbereichs liegt, setzt die Hostschnittstellensteuerschaltung 310 das
Interruptflag im Befehls-/Adressenregister 311.
-
Wenn
das Interruptflag nach einem der Schritte S410, S440 oder S450 gesetzt
ist, konvertiert die MCU 320 im Schritt S430 die aktuelle
externe Adresse CUR_ADD in die erste interne Adresse und erzeugt
basierend auf dem Eingabebefehl den ersten Ausgabebefehl. Andernfalls
erzeugt die Hardwarebeschleunigungsschaltung 370 im Schritt
S460 die zweite interne Adresse und den zweiten Ausgabebefehl, wenn
das Interruptflag nicht nach den Schritten S410, S440 und S450 gesetzt
ist.
-
Wenn
die erste oder zweite interne Adresse und der erste oder zweite
Ausgabebefehl erzeugt sind, lässt
die Speichersteuerschaltung 140 die erste oder zweite interne
Adresse und den ersten oder zweiten Ausgabebefehl über die
Speicherschnittstellensteuerschaltung 360 zum Flashspeichermodul 120 passieren,
um im Schritt S470 einen Lesebefehl oder einen Schreibbefehl auszuführen.
-
Die
Schritte S410 und S440 werden jedes Mal ausgeführt, wenn das Hostsystem 200 einen neuen
Lesebefehl zur Speichersteuerschaltung 140 sendet. Wenn
ein vorheriger Lesebefehl ohne einen Zwischenbefehl zum Hostsystem
gesendet wurde, wird nach dem Schritt S440 der Schritt S450 ausgeführt. Dann
erzeugt die Hardwarebeschleunigungsschaltung 370, wenn
möglich,
die aktuelle große
Blockadresse entsprechend dem Schritt S460, so dass die MCU 320 keine
Adressenkonvertierung ausführen
muss.
-
Die
Speichersteuerschaltung 140 arbeitet im sequentiellen Lesevorgangsmodus
und im unsortierten Lesevorgangsmodus ähnlich. Im un sortierten Lesevorgangsmodus
wird jedoch die neue Adresse REQ_ADD aus der aktuellen externen
Adresse CUR_ADD erhalten und im sequentiellen Lesevorgangsmodus
wird die neue Adresse REQ_ADD aus der nächsten Adresse NEXT_ADD erhalten.
Zudem arbeitet im sequentiellen Lesevorgangsmodus die Beurteilungsschaltung 373,
wenn alle Daten, welche während
eines vorherigen Lesevorgangs gelesen wurden, zum Hostsystem übertragen
sind.
-
Die 6 und 7 zeigen
Timingdiagramme von Signalverläufen
zur Darstellung von Ausführungsvorteilen
durch die Verwendung der Hardwarebeschleunigungsschaltung 370,
anstatt immer mit der MCU 320 die externen Adressen in
die internen Adressen zu konvertieren. 6 zeigt
ein Timingdiagramm von Signalverläufen der Speichersteuerschaltung 140 während eines
sequentiellen Lesevorgangs, und 7 zeigt
ein Timingdiagramm von Signalverläufen der Speichersteuerschaltung 140 während eines
ungeordneten Lesevorgangs.
-
Unter
Bezugnahme auf 6 zeigt eine erste Signalform
R/n_B1 das Timing der Speichersteuerschaltung 140, wenn
das Hostsystem 200 und das Flashspeichermodul 120 beide
kleine Blockadressen benutzen. In diesem Fall besteht kein Bedarf,
die vom Hostsystem 200 bereitgestellten externen Adressen
in interne Adressen zu konvertieren.
-
Bei
der ersten Signalform R/nB1 empfängt die
Speichersteuerschaltung 140 Befehls-/Adressendaten vor
einem ersten Übergang
von einem hohen auf einen niedrigen Pegel. Die Signalform R/nB1 wechselt
dann für
ein Intervall „t1” auf den
niedrigen Pegel, während
die Speichersteuerschaltung 140 auf das Flashspeichermodul 120 zugreift
und eine Datenseite zum Pufferspeicher 380 überträgt. Dann wechselt
die Signalform R/nB1 für
ein Intervall „t2” auf einen
hohen Pegel, während
der Pufferspeicher 380 die Datenseite zum Hostsystem 200 überträgt. Da die
Speichersteuerschaltung 140 im sequentiellen Lesevorgangsmodus
ist, werden während
einer einzigen Übertragung
von Befehls-/Adressendaten mehrere
Datenseiten sequentiell vom Flashspeichermodul 120 zum
Hostsystem 200 übertragen.
-
Eine
zweite und eine dritte Signalform R/nB2 und R/nB3 zeigen das Timing
der Speichersteuerschaltung 140, wenn das Hostsystem 200 kleine
Blockadressen und das Flashspeichermodul 120 große Blockadressen
benutzen. Bei der zweiten Signalform R/nB2 konvertiert die MCU 320 jede
vom Hostsystem 200 empfangene externe Adresse in die interne Adresse,
und bei der dritten Signalform R/nB3 erzeugt die Hardwarebeschleunigungsschaltung 370 die
internen Adressen, wann immer es möglich ist.
-
Die
zweite und dritte Signalform R/nB2 und R/nB3 sind ähnlich zur
Signalform R/nB1 mit der Ausnahme, dass eine Verzögerung „t3” auftritt,
wann immer die MCU 320 erforderlich ist, um die externe Adresse
in die interne Adresse zu konvertieren. Bei der zweiten Signalform
R/nB2 tritt die Verzögerung „t3” jedes
Mal auf, wenn eine Seite vom Flashspeichermodul 120 zum
Pufferspeicher 380 übertragen wird.
Bei der dritten Signalform R/nB3 ist die Verzögerung „t3” durch die Verwendung der
Hardwarebeschleunigungsschaltung 370 beseitigt.
-
Unter
Bezugnahme auf 7 sind dort die erste, zweite
und dritte Signalform R/n_B1, R/nB2 und R/nB3 leicht modifiziert,
da die Speichersteuerschaltung 140 im unsortierten Lesevorgangsmodus ist.
Bei der Signalform R/nB1 empfängt
die Speichersteuerschaltung 140 Befehls-/Adressendaten vor einem ersten Übergang
von einem hohen auf einen niedrigen Pegel. Die Signalform R/nB1
wechselt dann für
ein Intervall „t1” auf den
niedrigen Pegel, während
die Speichersteuerschaltung 140 auf das Flashspeichermodul 120 zugreift
und eine Datenseite zum Pufferspeicher 380 überträgt. Dann
wechselt die Signalform R/nB1 für
ein Intervall „t2” auf einen hohen
Pegel, während
der Pufferspeicher 380 die Datenseite zum Hostsystem 200 überträgt.
-
Wenn
die Datenseite zum Hostsystem 200 übertragen ist, überträgt das Hostsystem
vor einem nächsten Übergang
der ersten Signalform vom hohen auf den niedrigen Pegel weitere
Befehls-/Adressendaten zur Speichersteuerschaltung 140.
Wieder wird eine Datenseite während
des Intervalls „t1” vom Flashspeichermodul 120 zum
Pufferspeicher 380 übertragen
und so weiter.
-
In 7 sind
die zweite und dritte Signalform R/nB2 und R/nB3 ebenfalls ähnlich zur
Signalform R/nB1 mit der Ausnahme, dass eine Verzögerung „t3” auftritt,
wann immer die MCU 320 erforderlich ist, um die externe
Adresse in die interne Adresse zu konvertieren. Bei der zweiten
Signalform R/nB2 tritt die Verzögerung „t3” jedes
Mal auf, wenn eine Seite vom Flashspeichermodul 120 zum
Pufferspeicher 380 übertragen
wird. Bei der dritten Signalform R/nB3 ist die Verzögerung „t3” jedoch
durch die Verwendung der Hardwarebeschleunigungsschaltung 370 beseitigt.
-
Durch
die Beseitigung des Bedarfs, die Adressenkonvertierung unter Verwendung
der MCU 320 immer auszuführen, verbessern die Ausführungsformen
der Erfindung die Leistungsfähigkeit
der Speicherkarte 100 im sequentiellen Lesevorgangsmodus
und im unsortierten Lesevorgangsmodus wesentlich.
-
8 zeigt
eine Speichersteuerschaltung 140 gemäß einem anderen Ausführungsbeispiel
der Erfindung. Die in 8 dargestellte Speichersteuerschaltung
ist identisch zur in 3 dargestellten Speichersteuerschaltung,
außer
dass eine Interruptsteuerschaltung 390 hinzugefügt ist.
-
Die
Interruptsteuerschaltung 390 ist konfiguriert, um ein Interruptsignal
zu erzeugen, wenn das Interruptflag im Befehls-/Adressenregister 311 gesetzt
ist. Wenn das Interruptsignal erzeugt ist, führt die MCU 320 eine
Adressenkonvertierung durch, wie oben ausgeführt ist.