-
QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität gemäß 35 U.S.C. §119(a) der am 27. Oktober 2014 eingereichten Koreanischen Patentanmeldung Nr.
KR 10-2014-0145651 , deren Offenbarung in ihrer Gesamtheit hiermit mit eingebaut wird.
-
HINTERGRUND
-
1. Gebiet
-
Zumindest einige beispielhafte Ausführungsformen der erfinderischen Konzepte beziehen sich auf eine Datenspeichervorrichtung und insbesondere auf eine Datenspeichervorrichtung, die Informationen über eine Verarbeitungszeit für einen Schreibbefehl an einen Host übertragen kann, auf ein Verfahren zum Betreiben der Datenspeichervorrichtung und auf eine mobile Rechenvorrichtung, welche die Lese-Latenzzeit auf der Grundlage der Information einstellen kann.
-
2. Verwandte Technik
-
Anders als ein dynamischer Direktzugriffsspeicher (DRAM) oder ein Festplattenlaufwerk (HDD) kann ein Flash-Speicher möglicherweise keine Inplace-Update-Operation an Daten durchführen. Nachdem ein Programmcode in einen NOR-Flash-Speicher geschrieben wurde, kann ein Update in dem NOR-Flash-Speicher kaum erzeugt werden. Da jedoch ein Update an Daten in einem NAND-Flash-Speicher häufig durchgeführt wird, wird eine Lösch-Operation für ein Update benötigt.
-
Um bei dem NAND-Flash-Speicher in einen Speicherbereich geschriebene Daten zu aktualisieren, muss eine Lösch-Operation zum Löschen der in den Speicherbereich geschriebenen Daten durchgeführt werden. Die Lösch-Operation kann länger dauern als eine Schreiboperation (oder eine Programmieroperation) oder eine Lese-Operation, und eine Größe des Speicherbereichs oder der Daten, der/die der Lösch-Operation unterzogen werden, kann größer sein als eine Größe eines Speicherbereichs oder der Daten, die der Schreib-Operation oder der Lese-Operation unterzogen werden. Im Allgemeinen wird die Schreib-Operation oder die Lese-Operation auf einer Seitenbasis durchgeführt und wird die Lösch-Operation auf einer Blockbasis durchgeführt. Dabei enthält ein Block eine Mehrzahl von Seiten.
-
Wenn eine Aktualisierungsanforderung für eine Seite oder für in einen ersten Speicherbereich geschriebene Seitendaten eines Flash-Speichers auftritt, schreibt der Flash-Speicher, ohne die Seite sofort zu löschen, eine zu aktualisierende Seite in einen zweiten Speicherbereich des Flash-Speichers und macht dann die in den ersten Speicherbereich geschriebene Seite ungültig und mappt die zu aktualisierende Seite unter Verwendung einer Mapping-Tabelle neu.
-
Wenn die Anzahl an ungültigen Seiten in dem Flash-Speicher erhöht wird, wird ein Speicherbereich oder ein freier Block zum Schreiben neuer Seiten ungenügend werden. Dementsprechend führt der Flash-Speicher periodisch eine Löschoperation an dem Block durch. Dabei führt der Flash-Speicher eine Operation des Kopierens von gültigen Seiten, die in einem entsprechenden Block gespeichert sind, in einen anderen Speicherbereich durch, bevor eine Löschoperation an dem entsprechenden Block durchgeführt wird. Dies wird als Speicherbereinigung bezeichnet.
-
KURZFASSUNG
-
Eine technische Aufgabe von zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte ist es, einen Host bereitzustellen, der in der Lage ist, einen Befehl, der anfordert, ob oder ob nicht eine Hintergrundoperation durchgeführt wird, um so eine Lese-Latenzzeit adaptiv einzustellen, an eine Datenspeichervorrichtung zu übertragen, sowie ein Verfahren zum Betreiben des Host bereitzustellen.
-
Eine technische Aufgabe von zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte ist es, eine Datenspeichervorrichtung bereitzustellen, die in der Lage ist, eine Antwort an einen Host zu übertragen, ob oder ob nicht eine Hintergrundoperation durchgeführt wird, als Antwort auf einen Befehl, welcher anfordert, ob oder ob nicht die Hintergrundoperation durchgeführt wird, sowie ein Verfahren zum Betreiben der Datenspeichervorrichtung bereitzustellen. Die Datenspeichervorrichtung enthält ein dreidimensionales Speicherarray, wobei das dreidimensionale Speicherarray einen nichtflüchtigen Speicher aufweist, der monolithisch auf zwei oder mehreren physikalischen Ebenen von Speicherzellen ausgebildet ist, welche über einem Siliziumsubstrat angeordnete aktive Bereiche besitzen.
-
Eine technische Aufgabe von zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte ist es, eine mobile Rechenvorrichtung bereitzustellen, welche einen Host enthält, der in der Lage ist, einen Befehl an eine Datenspeichervorrichtung zu übertragen, der anfordert, ob oder ob nicht eine Hintergrundoperation durchgeführt wird, um so adaptiv eine Lese-Latenzzeit einzustellen, und die Datenspeichervorrichtung bereitzustellen, die in der Lage ist, eine Antwort an den Host zu übertragen, welche wiedergibt, ob oder ob nicht die Hintergrundoperation durchgeführt wird, sowie ein Verfahren zum Betreiben der mobilen Rechenvorrichtung bereitzustellen.
-
Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte enthält ein Verfahren zum Betreiben einer Datenspeichervorrichtung: ein Empfangen eines von einem Host übertragenen ersten Befehls mit einem gesetzten Bit; ein Speichern des gesetzten Bit in einem Register als Antwort auf den ersten Befehl; ein Empfangen eines ersten Zustandsprüfbefehls von dem Host; und ein Übertragen einer Antwort, welche Zustandsinformation der Datenspeichervorrichtung sowie Verarbeitungsinformation enthält, welche einem Schreibbefehl für die Datenspeichervorrichtung entspricht, an den Host auf der Grundlage des ersten Zustandsprüfbefehls und des in dem Register gespeicherten gesetzten Bit.
-
Das Verfahren kann weiter ein Erzeugen, durch die Datenspeichervorrichtung, einer Antwort aufweisen, so dass die Verarbeitungsinformation Information über eine Latenzzeit eines in der Datenspeichervorrichtung zu verarbeitenden Schreibbefehls enthält.
-
Das Verfahren kann weiter ein Erzeugen der Antwort durch die Datenspeichervorrichtung aufweisen, so dass die Verarbeitungsinformation Information über Speicherbereinigung enthält, welche in der Datenspeichervorrichtung durchgeführt wird.
-
Das Verfahren enthält weiter ein Empfangen eines Lesebefehls von dem Host, während die Speicherbereinigung durchgeführt wird; ein Stoppen der Speicherbereinigung als Antwort auf den Lesebefehl; ein Übertragen von Lesedaten an den Host als Antwort auf den Lesebefehl; und ein Wiederaufnehmen der gestoppten Speicherbereinigung.
-
Das Verfahren enthält weiter ein Übertragen einer Antwort, die einen Abschluss der Speicherbereinigung anzeigt, an dem Host als Antwort auf einen zweiten Zustandsprüfbefehl, der von dem Host nach dem Abschluss der Speicherbereinigung übertragen wird; und ein Empfangen eines Schreibbefehls sowie von Schreibdaten von dem Host und Speichern der Schreibdaten in einem Speicher basierend auf dem Schreibbefehl.
-
Das Verfahren enthält weiter, wenn die Speicherbereinigung in einer Mehrzahl von Schritten durchgeführt wird und die Mehrzahl von Schritten verschiedene Ausführungszeiten besitzen, ein Erzeugen der Antwort durch die Datenspeichervorrichtung, so dass die Antwort die Verarbeitungsinformation mit Bits enthält, welche jedem der Mehrzahl von Schritten entsprechen.
-
Die Datenspeichervorrichtung kann eine embedded Multimedia Card (eMMC) sein, der erste Befehl kann ein SWITCH-Befehl (CMD6) mit dem gesetzten Bit sein, das Register kann ein EXT_CSD-Register sein, das Speichern des gesetzten Bit kann ein Speichern des gesetzten Bit in einem herstellerspezifischen Feld des EXT_CSD-Registers sein und der erste Zustandsprüfbefehl ist CMD13.
-
Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte enthält ein Verfahren zum Betreiben einer mobilen Rechenvorrichtung mit einem Host und einer Datenspeichervorrichtung: ein Bestimmen einer Lese-Latenzzeit eines in der Datenspeichervorrichtung durchzuführenden Lesebefehls durch den Host; ein Übertragen eines ersten Befehls durch den Host an die Speichervorrichtung gemäß einem Ergebnis der Bestimmung, wobei der erste Befehl ein gesetztes Bit enthält; ein Speichern des gesetzten Bit durch die Datenspeichervorrichtung in einem Register als Antwort auf den ersten Befehl; ein Übertragen eines ersten Zustandsprüfbefehls durch den Host an die Datenspeichervorrichtung; und ein Übertragen entweder einer ersten Antwort oder einer zweiten Antwort an den Host durch die Datenspeichervorrichtung, basierend auf dem ersten Zustandsprüfbefehl und dem in dem Register gespeicherten gesetzten Bit.
-
Das Verfahren kann weiter enthalten: ein Erzeugen der ersten Antwort, so dass die erste Antwort eine Zustandsinformation der Datenspeichervorrichtung enthält sowie ein Erzeugen der zweiten Antwort, so dass die zweite Antwort die Zustandsinformation der Datenspeichervorrichtung sowie Verarbeitungsinformation enthält, welche einem Schreibbefehl für die Datenspeichervorrichtung entspricht.
-
Das Verfahren kann weiter ein Rescheduling durch den Host von zumindest einem von einem Lesebefehl und einem Schreibbefehl, die an die Datenspeichervorrichtung übertragen werden sollen, auf der Grundlage der zweiten Antwort, enthalten.
-
Das Verfahren kann weiter enthalten ein Einstellen, durch einen Host, eines Übertragungsintervalls eines Warteschlangenbereitschafts-Prüfbefehls, der an die Datenspeichervorrichtung übertragen werden soll, basierend auf der zweiten Antwort.
-
Das Verfahren kann weiter enthalten: ein Erzeugen der Verarbeitungsinformation, so dass die Verarbeitungsinformation zumindest eine von einer Information über die Latenzzeit eines nächsten in der Datenspeichervorrichtung zu verarbeitenden Schreibbefehls und einer Information enthält, die eine Hintergrundoperation anzeigt, welche in der Datenspeichervorrichtung verarbeitet wird.
-
Die Hintergrundoperation kann zumindest eine Speicherbereinigung, ein Wear-Leveling und eine Leserückholoperation enthalten.
-
Das Verfahren kann weiter enthalten: ein Empfangen eines ersten Lesebefehls durch eine Datenspeichervorrichtung von dem Host, während die Speicherbereinigung durchgeführt wird; ein Stoppen der Speicherbereinigung durch die Datenspeichervorrichtung als Antwort auf den ersten Lesebefehl; ein Übertragen von Lesedaten durch die Datenspeichervorrichtung an den Host als Antwort auf den ersten Lesebefehl; und ein Wiederaufnehmen der gestoppten Speicherbereinigung durch die Datenspeichervorrichtung.
-
Das Verfahren enthält weiter: ein Übertragen eines dritten Befehls, der einen Abschluss der Speicherbereinigung anzeigt, durch die Datenspeichervorrichtung an den Host als Antwort auf einen zweiten Zustandsprüfbefehl, wobei der zweite Zustandsprüfbefehl ein Prüfbefehl ist, der von dem Host übertragen wird, nachdem die Speicherbereinigung abgeschlossen ist; und ein Empfangen eines ersten Schreibbefehls und von Schreibdaten durch die Datenspeichervorrichtung von dem Host und ein Speichern der Schreibdaten in einem Speicher basierend auf dem ersten Schreibbefehl.
-
Die Datenspeichervorrichtung kann eine embedded Multimedia Card (eMMC) sein, der erste Befehl ist ein SWITCH-Befehl (CMD6) mit dem gesetzten Bit, das Register ist ein EXT_CSD-Register, das Speichern des gesetzten Bit enthält ein Speichern des gesetzten Bit in einem herstellerspezifischen Feld des EXT_CSD-Registers und der erste Zustandsprüfbefehl ist CMD13.
-
Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte enthält ein Verfahren zum Betreiben eines Host: ein Bestimmen, bei dem Host, einer Lese-Latenzzeit einer Datenspeichervorrichtung; ein Erzeugen, bei dem Host, eines gesetzten Indikators, so dass ein Wert des gesetzten Indikators basierend auf der bestimmten Lese-Latenzzeit ausgewählt wird; ein Übertragen eines Zustandsprüfbefehls von dem Host an die Datenspeichervorrichtung; ein Empfangen, bei dem Host, einer ersten Antwort von der Datenspeichervorrichtung, wobei ein Antworttyp der ersten Antwort ein erster Typ oder ein zweiter Typ ist; ein Bestimmen, ob eine Reihenfolge der Datenzugriffsbefehle in einem Befehls-Schedule des Host neu angeordnet wird oder nicht, basierend auf dem Antworttyp der ersten Antwort; und ein Senden eines ersten Datenzugriffsbefehls von dem Host an die Datenspeichervorrichtung, basierend auf dem Befehls-Schedule.
-
Das Bestimmen, ob die Reihenfolge von Datenzugriffsbefehlen neu angeordnet wird oder nicht, enthält, wenn der Antworttyp der ersten Antwort der zweite Antworttyp ist, ein Neuanordnen der Reihenfolge der Datenzugriffsbefehle in einem Befehls-Schedule des Host, so dass ein Lesebefehl in dem Befehls-Schedule eingezogen wird von einem Schreibbefehl in dem Befehls-Schedule und wenn der Antworttyp der ersten Antwort der erste Typ ist, ein Aufrechterhalten einer gegenwärtigen Reihenfolge des Befehls-Schedule, ohne Neuanordnen des Befehls-Schedule.
-
Das Erzeugen des gesetzten Indikators kann ein Erzeugen des gesetzten Indikators derart, dass er einen ersten Wert besitzt, wenn die bestimmte Latenzzeit über einem Referenzwert ist, und ein Erzeugen des gesetzten Indikators derart, dass er einen zweiten Wert besitzt, wenn die bestimmte Latenzzeit nicht über dem Referenzwert ist, enthalten.
-
Das Empfangen der ersten Antwort von der Datenspeichervorrichtung kann ein Empfangen der ersten Antwort mit dem zweiten Antworttyp, wenn der gesetzte Indikator den ersten Wert besitzt, und ein Empfangen der ersten Antwort mit dem ersten Antworttyp, wenn der gesetzte Indikator den zweiten Wert besitzt, enthalten.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die obigen und weitere Merkmale und Vorteile der beispielhaften Ausführungsformen der erfinderischen Konzepte werden offenkundig durch Beschreiben von beispielhaften Ausführungsformen der erfinderischen Konzepte im Detail mit Bezug auf die beigefügten Zeichnungen. Die begleitenden Zeichnungen sind dazu gedacht, beispielhafte Ausführungsformen der erfinderischen Konzepte darzustellen und sollten nicht derart interpretiert werden, dass sie den beabsichtigten Umfang der Ansprüche beschränken. Die begleitenden Zeichnungen sollen nicht als maßstabsgerecht gezeichnet betrachtet werden, außer es ist explizit vermerkt.
-
1 ist ein schematisches Blockdiagramm eines Datenverarbeitungssystems gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte;
-
2 ist ein Datenflussdiagramm, das einen Zeitablaufplanungsvorgang eines Eingang-/Ausgangs-Scheduler darstellt, welcher in dem in 1 gezeigten Datenverarbeitungssystem durchgeführt wird, gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte;
-
3 ist eine Zeichnung, welche einen Betrieb des in 1 gezeigten Datenverarbeitungssystems gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte darstellt;
-
4 ist eine Zeichnung des Betriebs des in 1 gezeigten Datenverarbeitungssystems gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte;
-
5 ist ein Datenflussdiagramm, das den Betrieb des in 1 gezeigten Datenverarbeitungssystems gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte darstellt;
-
6 ist ein Konzeptdiagramm, das ein Verfahren des Einstellen eines Übertragungsintervalls eines Warteschlangenbereitschafts-Prüfbefehls gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte beschreibt; und
-
7 ist ein Blockdiagramm eines Systems, welches das in 1 gezeigte Datenverarbeitungssystem enthält.
-
DETALLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Detaillierte beispielhafte Ausführungsformen der erfinderischen Konzepte werden hier offenbart. Jedoch sind hier offenbarte bestimmte strukturelle und funktionelle Details nur repräsentativ zum Zwecke des Beschreibens von beispielhaften Ausführungsformen der erfinderischen Konzepte. Beispielhafte Ausführungsformen der erfinderischen Konzepte können jedoch in vielen alternativen Formen ausgebildet sein und sollten nicht als nur auf die hier ausgeführten Ausführungsformen beschränkt ausgelegt werden.
-
Dementsprechend, während beispielhafte Ausführungsformen der erfinderischen Konzepte verschiedene Abwandlungen und alternative Formen annehmen können, werden Ausführungsformen davon nur beispielhaft in den Zeichnungen gezeigt und werden hier im Detail beschrieben werden. Es sollte jedoch verstanden werden, dass es nicht beabsichtigt ist, beispielhafte Ausführungsformen der erfinderischen Konzepte auf bestimmte offenbarte Formen zu beschränken, sondern im Gegenteil, sollen beispielhafte Ausführungsformen der erfinderischen Konzepte alle Abwandlungen, Äquivalente und Alternativen abdecken, die innerhalb des Umfangs der beispielhaften Ausführungsformen der erfinderischen Konzepte fallen. Gleiche Zahlen beziehen sich in der Beschreibung der Figuren durchgehend auf gleiche Elemente.
-
Es wird verstanden werden, dass obwohl die Begriffe erster/erste/erstes, zweiter/zweite/zweites usw. hier verwendet werden können zum Beschreiben verschiedener Elemente, diese Elemente nicht durch diese Begriffe beschränkt sein sollen. Diese Begriffe werden nur verwendet zum Unterscheiden eines Elementes von einem anderen. Zum Beispiel könnte ein erstes Element ein zweites Element genannt werden und genauso könnte ein zweites Element ein erstes Element genannt werden, ohne von dem Umfang der beispielhaften Ausführungsformen der erfinderischen Konzepte abzuweichen. Wie hier verwendet, enthält der Begriff „und/oder” irgendeinen und alle Kombinationen von einem oder mehreren der zusammen aufgelisteten Gegenstände.
-
Es wird verstanden werden, dass, wenn ein Element als „verbunden mit” oder „gekoppelt mit” einem anderen Element bezeichnet wird, es direkt verbunden mit oder gekoppelt mit dem anderen Element sein kann oder dazwischenliegende Elemente vorhanden sein können. Wenn dagegen ein Element als „direkt verbunden mit” oder „direkt gekoppelt mit” einem anderen Element bezeichnet wird, sind keine dazwischenliegenden Elemente vorhanden. Andere zum Beschreiben des Verhältnisses zwischen Elementen verwendete Worte sollten in gleicher Art und Weise verwendet werden (z. B. „zwischen”, „gegenüber”, „unmittelbar dazwischen”, „benachbart”, „gegenüber”, „direkt benachbart” usw.).
-
Die hier verwendete Terminologie ist nur zum Zwecke des Beschreibens bestimmter Ausführungsformen und nicht dafür gedacht, beispielhafte Ausführungsformen der erfinderischen Konzepte zu beschränken. Wie sie hier verwendet werden, sind die Singularformen „einer/eine/eines” und „der/die/das” dazu gedacht, auch die Pluralformen zu umfassen, außer der Kontext zeigt eindeutig anderes an. Es wird weiter verstanden werden, dass die Begriffe „umfasst”, „umfassend”, „enthält” und/oder „enthaltend”, wenn sie hier verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, aber nicht das Vorhandensein oder Hinzufügen von einem oder mehreren Merkmalen, einer oder mehreren anderen Ganzzahlen, einem oder mehreren Schritten, einer oder mehreren Operationen, einem oder mehreren Elementen, einer oder mehreren Komponenten und/oder Gruppen davon ausschließen.
-
Es sollte auch bemerkt werden, dass bei einigen alternativen Implementierungen die angegebenen Funktionen/Handlungen in einer anderen als in der in den Figuren angegebenen Reihenfolge vorgesehenen sein können. Zum Beispiel können zwei aufeinanderfolgende Figuren im Wesentlichen gleichzeitig ausgeführt werden oder können manchmal in umgekehrter Reihenfolge ausgeführt werden, in Abhängigkeit von den beteiligten Funktionalitäten/Handlungen.
-
Beispielhafte Ausführungsformen der erfinderischen Konzepte werden hier beschrieben mit Bezug auf schematische Darstellungen von idealisierten Ausführungsformen (und Zwischenstrukturen) der erfinderischen Konzepte. Als solches sind Abweichungen von den Formen der Darstellungen als ein Ergebnis von z. B. Herstellungstechniken und/oder Toleranzen zu erwarten. Somit sollten beispielhafte Ausführungsformen der erfinderischen Konzepte nicht ausgelegt werden als die besonderen Formen der hier dargestellten Bereiche beschränkend, sondern sollen Abweichungen in Formen als Ergebnis z. B. der Herstellung mit enthalten.
-
Obwohl entsprechende Draufsichten und/oder perspektivische Ansichten von einigen Querschnittsansichten möglicherweise nicht gezeigt sind, stellen die Querschnittsansichten von Vorrichtungsstrukturen, die hier dargestellt sind, eine Unterstützung für eine Mehrzahl von Vorrichtungsstrukturen dar, die sich entlang von zwei verschiedenen Richtungen erstrecken, wenn sie in Draufsicht dargestellt würden, und/oder sich in drei verschiedenen Richtungen erstrecken, wenn sie in einer perspektivischen Ansicht dargestellt würden. Die zwei verschiedenen Richtungen können orthogonal zueinander sein oder nicht. Die drei verschiedenen Richtungen können eine dritte Richtung enthalten, die orthogonal zu den zwei verschiedenen Richtungen sein kann. Die Mehrzahl von Vorrichtungsstrukturen kann in derselben elektronischen Vorrichtung integriert sein. Zum Beispiel, wenn eine Vorrichtungsstruktur (z. B. eine Speicherzellenstruktur oder eine Transistorstruktur) in einer Querschnittsansicht dargestellt ist, kann eine elektronische Vorrichtung eine Mehrzahl der Vorrichtungsstrukturen (z. B. Speicherzellstrukturen oder Transistorstrukturen) enthalten, wie es durch eine Draufsicht der elektronischen Vorrichtung dargestellt würde. Die Mehrzahl von Vorrichtungsstrukturen kann in einem Array und/oder in einem zweidimensionalen Muster angeordnet sein.
-
Wie oben diskutiert, führt ein Flash-Speicher eine Operation des Kopierens von in einem entsprechenden Block gespeicherten gültigen Seiten in einen anderen Speicherbereich durch, bevor eine Löschoperation an dem entsprechenden Block durchgeführt wird. Dies wird als eine Speicherbereinigung bezeichnet. Bei dem Flash-Speicher wird eine Antwortzeit für den Schreibbefehl verlängert, wenn die Speicherbereinigung durchgeführt wird, während eine Schreiboperation gemäß einem Schreibbefehl durchgeführt wird. Das bedeutet, dass der Flash-Speicher einem Schreibbefehl entsprechende Schreibdaten nach einem Abschluss der Speicherbereinigung in einen Speicherbereich schreibt und eine Schreibabschlussantwort nach einem Abschluss einer Schreiboperation an einen Host überträgt. Selbst wenn der Host beabsichtigt, eine Leseoperation an einem Flash-Speicher durchzuführen, kann der Host die Leseoperation an dem Flash-Speicher nicht durchführen bis der Host eine Schreibabschlussantwort empfängt. Dementsprechend ist die Lese-Latenzzeit für eine Leseoperation erhöht.
-
1 ist ein schematisches Blockdiagramm eines Datenverarbeitungssystems gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte. Bezugnehmend auf 1 enthält ein Datenverarbeitungssystem 100 einen Host 200 und eine Datenspeichervorrichtung 300, die miteinander durch eine Schnittstelle 110 verbunden sind. Das Datenverarbeitungssystem 100 kann als ein Personalcomputer (PC), ein Desktoprechner, ein Laptopcomputer, ein Arbeitsplatzcomputer oder eine mobile Rechenvorrichtung ausgebildet sein.
-
Die mobile Rechenvorrichtung kann ausgebildet sein als ein Mobiltelefon, ein Smartphone, ein Tablet-PC, ein persönlicher digitaler Assistent (PDA), ein Enterprise Digital Assistant (EDA), eine digitale Fotokamera, eine digitale Videokamera, ein tragbarer Multimediaplayer (PMP), eine Multimediavorrichtung, eine persönliche Navigationsvorrichtung oder eine tragbare Navigationsvorrichtung (PND), eine Handspielkonsole, eine mobile Internetvorrichtung (MID), eine tragbare Vorrichtung (oder tragbarer Computer), ein Internet-of-Things(IoT)-Vorrichtung, eine Internet-of-Everything(IoE)-Vorrichtung oder ein E-Book.
-
Der Host 200 kann eine Verarbeitungsschaltung 201 und einen ersten Speicher 203 enthalten. Die Verarbeitungsschaltung kann ein Prozessor sein oder einen Prozessor enthalten. Der Begriff „Prozessor”, wie er hier verwendet wird, kann sich z. B. auf eine Hardware-implementierte Datenverarbeitungsvorrichtung mit einer Schaltung beziehen, die physikalisch aufgebaut ist zum Ausführen gewünschter Operationen einschließlich z. B. von Operationen, die als Code und/oder in einem Programm enthaltenen Anweisungen wiedergegeben werden. Beispiele der oben erwähnten Hardware-implementierten Datenverarbeitungsvorrichtung enthalten, aber sind nicht beschränkt auf einen Mikroprozessor, eine Zentralverarbeitungseinheit, eine zentrale Verarbeitungseinheit (CPU), einen Prozessorkern, einen Multiprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC) und ein feldprogrammierbares Gatearray (FPGA).
-
Der Host 200 kann ausgebildet sein als eine integrierte Schaltung (IC), ein Anwendungsprozessor (AP), ein mobiler AP oder ein Ein-Chip-System (SoC), jedoch ist der Host nicht darauf beschränkt. Gemäß zumindest einigen beispielhaften Ausführungsformen der erfinderischen Konzepte kann der Host 200 ausgebildet sein als ein Package-on-Package (PoP), ein System-on-Package (SoP) oder ein System-in-Package (SiP), jedoch ist der Host nicht darauf beschränkt.
-
Wenn ein erstes Gehäuse die Verarbeitungsschaltung 201, die als ein IC, ein AP, ein mobiler AP oder ein SoC ausgebildet ist, und ein zweites Gehäuse den Speicher (oder Speicherchip) 203 enthält, kann die Verarbeitungsschaltung 201 an eine Platine (PCB) mit Flip-Chip-Montage angebracht sein oder kann mit der PCB durch Bonding-Drähte verbunden sein. Das zweite Gehäuse kann über das erste Gehäuse gestapelt sein durch an dem PCB angebrachte Stack-Balls.
-
Die Verarbeitungsschaltung 201 kann eine erste CPU 210, eine Vorrichtungsschnittstelle 220 und einen Speichercontroller 230 enthalten. Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte kann die Verarbeitungsschaltung 201 ein Chip oder ein Die sein.
-
Die erste CPU 210, die Vorrichtungsschnittstelle 220 und der Speichercontroller 230 können Daten durch eine Busarchitektur 205 übertragen oder empfangen. Die Busarchitektur 205 kann ein Advanced-Microcontroller-Bus-Architecture(AMBA)-Busprotokoll, ein Advanced-High-Performance-Bus(AHB)-Protokoll, ein Advanced-Peripheral-Bus(APB)-Protokoll oder ein Advanced-Extensible-Interface(AXI)-Busprotokoll unterstützen, jedoch ist die Busarchitektur nicht darauf beschränkt.
-
Die erste CPU 210 kann ein Betriebssystem (OS) 212 und eine Firmware (z. B. mit einem oder mehreren Programmen) implementieren, welche in den vorliegenden Unterlagen beschriebene Aktionen durchführen. Zum Beispiel können das OS 212 und die von der ersten CPU 210 implementierte Firmware definiert sein durch Anweisungen, welche z. B. in dem ersten Speicher 203 gespeichert sein können und von der CPU 210 ausgeführt werden. Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte können in den vorliegenden Unterlagen beschriebene Operationen, wie sie von dem OS 212 oder der Firmware durchgeführt werden, durch die erste CPU 210 durchgeführt werden, welche die durch das OS 212 und/oder die Firmware definierten Anweisungen ausführt. Das von der ersten CPU 210 ausgeführte OS 212 kann einen Eingabe/Ausgabe-Scheduler 214 und einen Vorrichtungstreiber 216 enthalten. Während 1 ein Beispiel darstellt, bei dem das OS 212 den Eingabe/Ausgabe-Scheduler 214 und den Vorrichtungstreiber 216 gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte enthält, könnte das OS 212 eines oder beide von dem Eingabe/Ausgabe-Scheduler 214 und dem Vorrichtungstreiber 216 nicht enthalten, und kann das OS 212 den Eingabe/Ausgabe-Scheduler 214 und den Vorrichtungstreiber 216 steuern, selbst wenn es nicht den Eingabe/Ausgabe-Scheduler 214 und den Vorrichtungstreiber 216 enthält. Anweisungen (z. B. ein Code), welche das OS 212 oder die Firmware definieren, können von dem ersten Speicher 203 in die erste CPU 210 geladen werden, um ausgeführt zu werden. Die erste CPU 210 kann einen oder mehrere Kerne enthalten.
-
Die Vorrichtungsschnittstelle 220 kann Daten oder Signale an eine Datenspeichervorrichtung 300 senden oder von dieser empfangen gemäß einer Steuerung der ersten CPU 210.
-
Der Speichercontroller 230 kann gemäß einer Steuerung der ersten CPU 210 Daten in den ersten Speicher 203 schreiben oder Daten von dem ersten Speicher 203 lesen. Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte kann der Speichercontroller 230 eine Funktion eines Direktspeicherzugriffs(DMA)-Controllers durchführen.
-
Der erste Speicher 203 kann ausgebildet sein als ein flüchtiger Speicher und/oder als ein nichtflüchtiger Speicher. Der flüchtige Speicher kann ausgebildet sein als ein Direktzugriffsspeicher (RAM), ein dynamischer RAM (DRAM) oder ein statischer RAM (SRAM). Der nichtflüchtige Speicher kann ausgebildet sein als ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), ein Flash-Speicher, ein magnetischer RAM (MRAM), ein Spin-Transfer-Torque-MRAM, ein ferroelektrischer RAM (FeRAM), ein Phasenänderungs-RAM (PRAM) oder ein resistiver RAM.
-
Zum Beispiel kann der erste Speicher 203 ausgebildet sein als ein Festplattenlaufwerk (HDD), eine Smartcard, eine Secure Digital (SD) Card, eine Multimedia Card (MMC), eine embedded MMC (eMMC), ein embedded Multi-Chip-Package (eMCP), ein Perfect-Page-NAND (PPN), ein Universal-Flash-Speicher (UFS), ein Festkörperlaufwerk (SSD) oder ein embedded SSD (eSSD). Darüber hinaus kann der erste Speicher 203 als ein fester Speicher oder als ein Wechselspeicher ausgebildet sein.
-
Zur Vereinfachung der Beschreibung in 1 sind ein erster Speicher 203 und ein Speichercontroller 230 gezeigt, jedoch kann der erste Speicher 203 aus einer Mehrzahl von Speichern bestehen und kann der erste Controller 230 aus einer Mehrzahl von Speichercontrollern bestehen, welche der Mehrzahl von Speichern entspricht. Die Mehrzahl von Speichern kann verschiedene Arten von Speichern enthalten.
-
Die Datenspeichervorrichtung 300 kann einen Controller 310 und zumindest einen zweiten Speicher 330 enthalten. Zum Beispiel ist die Datenspeichervorrichtung 300 eine dreidimensionale nichtflüchtige Speichervorrichtung. Die Datenspeichervorrichtung 300 kann von dem Host 200 ausgegebene Daten speichern. Die Datenspeichervorrichtung 300 kann als eine Smartcard, eine Secure Digital (SD) Card, eine Multimedia Card (MMC), eine embedded MMC (eMMC), ein embedded Multi-Chip-Package (eMCP), ein Perfect-Page-NAND (PPN), ein Universal-Flash-Speicher (UFS), ein USB-Flash-Laufwerk, ein Festkörperlaufwerk (SSD) oder ein embedded SSD (eSSD) ausgebildet sein.
-
Der Controller 310 kann ein Datenübertragen oder -empfangen zwischen dem Host 200 und dem zumindest einen zweiten Speicher 330 steuern. Der Controller 310 kann eine Host-Schnittstelle 312, eine zweite CPU 314, einen Puffer 316 und eine Speicherschnittstelle 318 enthalten.
-
Die Host-Schnittstelle 312, die zweite CPU 314, der Puffer 316 und die Speicher-Schnittstelle 318 können Daten oder Signale aneinander übertragen oder voneinander empfangen durch eine Busarchitektur 311. Gemäß zumindest einigen beispielhaften Ausführungsformen der erfinderischen Konzepte kann jede von den Schnittstellen 110, 220 und 312 ausgebildet sein als eine Schnittstelle, die ein Peripheral-Component-Interconnect-Express(PCIe)-Protokoll unterstützt, eine Schnittstelle, die ein Serial-Advanced-Technology-Attachment(SATA)-Protokoll unterstützt oder eine Schnittstelle, die ein Serial-Attached-Small-Computer-System-Interface(SCSI)-Protokoll unterstützt; jedoch sind die Schnittstellen 110, 220 und 312 nicht auf die oben beschriebenen beispielhaften Protokolle beschränkt.
-
Die zweite CPU 314 kann Firmware oder ein Computerprogramm ausführen, die/das einen Betrieb der Datenspeichervorrichtung 300 steuern kann. Obwohl eine zweite CPU 314 in 1 gezeigt ist, kann der Controller 310 jedoch eine CPU enthalten, welche einen Befehl und/oder eine Datenausgabe von dem Host 200 verarbeitet und eine weitere CPU enthalten, die eine Zugriffsoperation, z. B. eine Schreiboperation, eine Leseoperation und/oder eine Löschoperation in dem zweiten Speicher 330 gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte steuert.
-
Der Puffer 316 kann zwischen dem Host 200 und dem zweiten Speicher 330 übertragene oder empfangene Daten puffern. Zum Beispiel kann der Puffer 316 als ein SRAM ausgebildet sein.
-
Die Speicher-Schnittstelle
318 kann eine Funktion eines Speichercontrollers durchführen. Dementsprechend kann die Speicher-Schnittstelle
318 die Zugriffsoperation, z. B. eine Schreiboperation, eine Leseoperation und/oder eine Löschoperation in dem zweiten Speicher
330 gemäß einer Steuerung der zweiten CPU
314 oder einer Steuerung der Firmware FB steuern, die von der zweiten CPU
314 implementiert sein kann. Zum Beispiel können die Firmware FW definierende Anweisungen in dem zweiten Speicher
330 gespeichert werden und von der zweiten CPU
314 ausgeführt werden und alle als durch die Firmware FW der Datenspeichervorrichtung
300 ausgeführt beschriebenen Operationen können durch die zweite CPU
314 durchgeführt werden, welche die Anweisungen ausführt, die die Firmware FW definieren. Der zweite Speicher
330 enthält ein zweidimensionales (2D) Speicherarray oder ein dreidimensionales (3D) Speicherarray. Das 2D- oder 3D-Speicherarray enthält eine Mehrzahl von Blöcken. Jeder der Mehrzahl von Blöcken enthält eine Mehrzahl von Seiten. Jede der Mehrzahl von Seiten enthält eine Mehrzahl von Speicherzellen. Jede der Speicherzellen kann eine Single-Level-Zelle (SLC), welche Information eines Bit speichert, oder eine Multi-Level-Zelle (MLC) sein, welche Information von zumindest zwei Bit speichert. Das 3D-Speicherarray ist monolithisch in einer oder zwei physikalischen Ebenen eines Arrays von Speicherzellen mit einem über einem Siliziumsubstrat angeordneten aktiven Bereich und einer mit dem Betrieb dieser Speicherzellen verknüpften Schaltung ausgebildet, unabhängig davon, ob die verknüpfte Schaltung über oder innerhalb eines solchen Substrates ist. Der Term „monolithisch” bedeutet, dass Schichten jeder Ebene des Arrays direkt auf den Schichten jeder darunterliegenden Ebene des Arrays angeordnet sind. Bei einer Ausführungsform des vorliegenden erfinderischen Konzepts enthält das 3D-Speicherarray vertikale große NAND-Ketten, die vertikal ausgerichtet sind, so dass zumindest eine Speicherzelle über einer anderen Speicherzelle angeordnet ist. Die zumindest eine Speicherzelle kann eine Ladungsspeicherschicht aufweisen. Die folgenden Patentschriften, die durch Verweis hier mit aufgenommen sind, beschreiben geeignete Konfigurationen für dreidimensionale Speicherarrays, bei denen die dreidimensionalen Speicherarrays in einer Mehrzahl von Ebenen konfiguriert sind, mit Wortleitungen und/oder Bitleitungen, die von den Ebenen geteilt werden:
US 7,679,133 ;
US 8,535,466 ;
US 8,654,587 ;
US 8,559,235 ; und
US 2011/0233648 .
-
Ein Betrieb des Ein-/Ausgabe-Scheduler 214, der durch die erste CPU 210 des Host 200 implementiert ist, und ein Betrieb der Firmware FW, die durch die zweite CPU 314 der Datenspeichervorrichtung 300 implementiert ist, wird im Detail mit Bezug auf die 2 bis 6 beschrieben werden.
-
Der Eingangs/Ausgangs-Scheduler 214, der von der ersten CPU 210 implementiert ist, kann bestimmen, wann ein Ein-/Ausgangs-Befehl, z. B. ein Lesebefehl und ein Schreibbefehl, an die Datenspeichervorrichtung 300 auszugeben ist, basierend auf einer von der Datenspeichervorrichtung 300 übertragenen zweiten Antwort.
-
Darüber hinaus kann der Ein-/Ausgabe-Scheduler 214 eine Ausgabesequenz von ursprünglich geplanten Befehlen, basierend auf einer von der Datenspeichervorrichtung 300 gesendeten zweiten Antwort ändern. Zusätzlich kann der Ein-/Ausgabe-Scheduler 214 ein Sendeintervall oder ein Polling-Intervall eines ursprünglich geplanten Warteschlangenbereitschafts-Prüfbefehls, basierend auf der von der Datenspeichervorrichtung 300 gesendeten zweiten Antwort anpassen.
-
2 ist ein Datenflussdiagramm, das einen Scheduling-Betrieb eines Ein-/Ausgabe-Schedulers beschreibt, welcher in dem in 1 gezeigten Datenverarbeitungssystem gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte ausgeführt wird. Wenn die Datenspeichervorrichtung eine Antwort mit einer Information, die eine Zeit zum Verarbeiten eines Schreibbefehls identifiziert, an den Host 200 sendet, kann der Host 200 einen Schedule für einen Lesebefehl, basierend auf der Antwort, ändern. Entsprechend kann der Host 200 die Antwort verwenden zum Verringern der Lese-Latenzzeit.
-
Bezugnehmend auf die 1 und 2 kann die erste CPU 210 des Host 200 in Schritt S110 eine Lese-Latenzzeit bestimmen. Darüber hinaus kann die erste CPU 210 in Schritt S110 bestimmen, ob die Lese-/Latenzzeit wichtig ist oder nicht oder verbessert werden muss. Zum Beispiel kann die erste CPU 210 in Schritt S110 bestimmen, ob ein Zeitpunkt, zu dem die Lese-Latenzzeit als wichtig bestimmt wird, oder kann einen Zeitpunkt bestimmen, zu dem die Leseleistungsfähigkeit als zu verbessern bestimmt wird. Die Bestimmung kann durchgeführt werden durch die Firmware oder den Ein-/Ausgabe-Scheduler 214, der durch die erste CPU 210 implementiert ist.
-
In Schritt S112 sendet die erste CPU 210 einen Befehl mit einem gesetzten Bit SB auf der Grundlage der Bestimmung in Schritt S110. Wenn die erste CPU 210 in Schritt S110 stimmt, dass die Lese-Latenzzeit wichtig ist oder verbessert werden muss, kann die erste CPU 210 des Host 200 in Schritt S112 einen Befehl mit einem gesetzten Bit SB mit einem ersten Wert, z. B. einem High-Pegel oder einer logischen 1, an die zweite CPU 314 der Datenspeichervorrichtung 300 durch die Komponenten 205, 220, 110, 312 und 311 senden. Wenn jedoch die erste CPU 210 in Schritt S110 bestimmt, dass die Lese-Latenzzeit nicht wichtig ist oder verbessert werden muss, kann die erste CPU 210 des Host 200 in Schritt 112 einen Befehl mit einem gesetzten Bit SB mit einem zweiten Wert z. B. einem Low-Pegel oder einer logischen 0, an die zweite CPU 314 der Datenspeichervorrichtung 300 senden durch die Komponenten 205, 220, 110, 312 und 311. Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte, kann der Befehl ein SWITCH-Befehl CMD6 sein und kann das gesetzte Bit SB in dem SWITCH-Befehl CMD6 enthalten sein, wenn die Datenspeichervorrichtung 300 ein eMMC ist.
-
Die Speicher-Schnittstelle 318 kann das von dem Host 200 gesendete gesetzte Bit SB in einem Register (nicht dargestellt) speichern gemäß einer Steuerung der zweiten CPU 314 oder der durch die zweite CPU 314 implementierten Firmware FW (S114). Wenn der Datenspeicher 300 ein eMMC ist, kann das Register ein EXT_CSD-Register sein. Zum Beispiel kann das EXT_CSD-Register ein Speicherbereich des zweiten Speichers 330 sein, jedoch ist das EXT_CSD nicht darauf beschränkt.
-
Die erste CPU 210 des Host 200 kann einen Zustandsprüfbefehl SCC erzeugen und kann den Zustandsprüfbefehl SCC an die zweite CPU 314 der Datenspeichervorrichtung 300 durch die Komponenten 205, 220, 110, 312 und 311 übertragen (S116). Wenn die Datenspeichervorrichtung 300 ein eMMC ist, kann der Zustandsprüfbefehl SCC ein CMD13 sein.
-
Beispielhafte Beschreibungen der eMMCs, auf die in den vorliegenden Unterlagen Bezug genommen wird, sowie Definitionen der mit dem eMMC verknüpften Begriffe, welche in den vorliegenden Unterlagen verwendet werden, können in dem Dokument JESD84-B50 (überarbeitete Fassung JESD84-B451, Juni 2012) gefunden werden, d. h. in dem embedded-Multi-Media-Card(eMMC)-Electrical-Standard (5.0).
-
Die zweite CPU 314 oder die durch die zweite CPU 314 implementierte Firmware FW kann einen Wert des in einem Register gespeicherten gesetzten Bit SB prüfen oder Bezug darauf nehmen und kann einen Betriebszustand der Datenspeichervorrichtung 300 gemäß einem Ergebnis des Prüfens des Werts des gesetzten Bit prüfen oder bestimmen (S118).
-
Der in Schritt S118 bestimmte Betriebszustand kann ein Zustand sein, der anzeigt, ob ein Hintergrundbetrieb von der Datenspeichervorrichtung 300 durchgeführt wird (oder in Kürze durchgeführt werden wird) und der Hintergrundbetrieb kann eine Speicherbereinigung, Wear-Leveling und/oder eine Leserückholoperation enthalten, jedoch ist der Hintergrundbetrieb nicht auf die oben diskutierten Beispiele beschränkt. Die Leserückholoperation kann ein Kopieren oder Übertragen von gültigen Daten in einem Speicherblock eines zweiten Speicherbereichs des zweiten Speichers 330 zu einem oder mehreren Speicherblöcken eines ersten Speicherbereichs des zweiten Speichers 330 aufweisen.
-
Wenn ein Wert des in einem Register gespeicherten gesetzten Bit SB ein erster Wert, z. B. eine logische 1 ist (JA in S120), kann die zweite CPU 314 oder die von der zweiten CPU 314 implementierte Firmware FW eine zweite Antwort RES2 an die erste CPU 210 durch die Komponenten 311, 312, 110, 220 und 205 übertragen, basierend auf dem Betriebszustand (z. B. dem in Schritt S118 bestimmten Betriebszustand) (S122). Hierbei kann die zweite Antwort RES2 Zustandsinformation der Datenspeichervorrichtung 300 und Verarbeitungsinformation über einen Schreibbefehl für die Datenspeichervorrichtung 300 enthalten. Die Verarbeitungsinformation kann Information enthalten, welche den Betriebszustand anzeigt.
-
Zum Beispiel, wenn die Datenspeichervorrichtung 300 ein eMMC ist, können die Zustandsinformationen in einem EXT_CSD-Register gespeicherte Zustandswerte sein oder enthalten. Die Verarbeitungsinformation kann Information über eine Latenzzeit eines Schreibbefehls, der in der Datenspeichervorrichtung 300 verarbeitet werden soll, oder Information über einen Hintergrundbetrieb (z. B. Speicherbereinigung, Wear-Leveling und/oder eine Leserückholoperation) sein, die in der Datenspeichervorrichtung 300 durchgeführt wird oder durchgeführt werden wird.
-
Das bedeutet, dass die Verarbeitungsinformation Information enthalten kann, die eine Schreiboperation (oder eine Zeit zum Durchführen einer Schreiboperation) anzeigt, welche einem nächsten Schreibbefehl entspricht, länger sein wird (z. B. länger als ein Referenzwert, welcher gemäß Präferenzen eines Bedieners oder Herstellers der Datenspeichervorrichtung 300 festgelegt ist), Information enthalten kann, die anzeigt, dass ein Hintergrundbetrieb derzeit in der Datenspeichervorrichtung 300 durchgeführt wird oder Information enthalten kann, die anzeigt, dass der Hintergrundbetrieb in der Datenspeichervorrichtung 300 durchgeführt werden wird.
-
Der Ein-/Ausgabe-Scheduler 214, der in der ersten CPU 210 läuft, kann zumindest einen von einem Lesebefehl oder einem Schreibbefehl, die an die Datenspeichervorrichtung 300 übertragen werden sollen, neu planen, basierend auf der zweiten Antwort RES2 oder auf einem Analysieren eines Ergebnisses der zweiten Antwort RES2 (S124). Zum Beispiel kann der Ein-/Ausgabe-Scheduler 214 eine Ausgabesequenz (oder Ausgabereihenfolge) von ursprünglichen Befehlen (z. B. einem Lesebefehl und einem Schreibbefehl), die an die Datenspeichervorrichtung 300 übertragen werden sollen, auf der Grundlage der zweiten Antwort RES2 ändern (S124). Zum Beispiel kann die zweite Antwort RES2 ein oder mehrere Bit enthalten, die einer Verarbeitungsinformation entsprechen. Zum Beispiel können ein oder mehrere Bit in einem herstellerspezifischen Feld des EXT_CSD enthalten sein.
-
Wenn der Hintergrundbetrieb, z. B. eine Speicherbereinigung, in einer Mehrzahl von Schritten durchgeführt wird und die Mehrzahl von Schritten verschiedene Ausführungszeiten besitzen, kann die Verarbeitungsinformation ein oder mehrere Bit enthalten, welche für jeden der Mehrzahl von Schritten stehen. Das bedeutet, dass der Ein-/Ausgabe-Scheduler 214, der in der ersten CPU 210 läuft, zumindest einen von einem Lesebefehl und einem Schreibbefehl, welche an die Datenspeichervorrichtung 300 übertragen werden sollen, neu plant oder ändert, basierend auf der zweiten Antwort RES2 mit der Verarbeitungsinformation (S124).
-
Wenn der Ein-/Ausgabe-Scheduler 214 den Lesebefehl oder den Schreibbefehl, der neu geplant oder geändert ist, auf der Grundlage der zweiten Antwort RES2 mit der Verarbeitungsinformation an den Vorrichtungstreiber 216 überträgt, kann der Vorrichtungstreiber 216 den von den Ein-/Ausgabe-Scheduler 214 übertragenen Lesebefehl oder Schreibbefehl durch die Komponenten 205, 220, 210, 312 und 311 an die zweite CPU 314 übertragen (S126).
-
In Schritt S128 kann die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware die Speicherschnittstelle 318 steuern, um den durch die Komponenten 205, 220, 110, 312 und 311 empfangenen Lesebefehl oder Schreibbefehl durchzuführen.
-
Wenn der Vorrichtungstreiber 216 in Schritt S126 einen Lesebefehl überträgt, kann die Speicherschnittstelle 318 in Schritt S128 Daten, die dem Lesebefehl entsprechen, von dem zweiten Speicher 330 lesen, und die gelesenen Daten können durch Komponenten 311, 312 und 110 an den Host übertragen werden, während eine dem Lesebefehl entsprechende Leseoperation durchgeführt wird.
-
Darüber hinaus, wenn der Vorrichtungstreiber 216 in Schritt S126 einen Schreibbefehl überträgt, kann die Speicherschnittstelle 318 in Schritt S126 durch Komponenten 110, 312 und 311 empfangene Schreibdaten in einen Speicherbereich des zweiten Speichers 330, der einer in dem Schreibbefehl enthaltenen Adresse entspricht, während einer dem Schreibbefehl entsprechenden Schreiboperation schreiben oder programmieren.
-
Wenn ein Wert des in einem Register gespeicherten gesetzten Bit SB ein zweiter Wert (z. B. logisch 0) ist (NEIN in S120), kann die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware FW eine erste Antwort RES1 durch die Komponenten 311, 312, 110, 220 und 205 an die erste CPU 210 übertragen (S130). Anders als die zweite Antwort RES2 kann die erste Antwort RES1 nur Zustandsinformation der Datenspeichervorrichtung 300 enthalten (z. B. kann die erste Antwort RES1 die oben bezüglich der zweiten Antwort RES2 diskutierte Verarbeitungsinformation ausschließen). Zum Beispiel, wenn die Datenspeichervorrichtung 300 die eMMC ist, können die Zustandsinformationen in dem EXT_CSD-Register gespeicherte Zustandswerte sein.
-
Der Ein-/Ausgabe-Scheduler 214 kann einen ursprünglichen Schedule für den an die Datenspeichervorrichtung 300 zu übertragenden Lesebefehl und Schreibbefehl auf der Grundlage der ersten Antwort RES1 aufrechterhalten (S132). Das bedeutet, dass der Ein-/Ausgabe-Scheduler 214 die Ausgabesequenz (oder die Ausgabereihenfolge) der Befehle (z. B. ein Lesebefehl und ein Schreibbefehl), die an die Datenspeichervorrichtung 300 basierend auf der ersten Antwort RES1 übertragen werden sollen, nicht ändert (S132).
-
Wenn der Ein-/Ausgabe-Scheduler 214 einen ursprünglichen Lesebefehl oder Schreibbefehl an den Vorrichtungstreiber 216 basierend auf der ersten Antwort RES1 überträgt, kann der Vorrichtungstreiber 216 den von dem Ein-/Ausgabe-Scheduler 214 übertragenen Lesebefehl oder Schreibbefehl durch die Komponenten 205, 220, 110, 312 und 311 an die zweite CPU 314 übertragen (S134).
-
Die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware FW kann die Speicherschnittstelle 318 steuern, um den durch die Komponenten 205, 220, 110, 312 und 311 empfangenen Lesebefehl oder Schreibbefehl durchzuführen.
-
Während einer dem Lesebefehl entsprechenden Leseoperation kann die Speicherschnittstelle 318 dem Lesebefehl entsprechende Lesedaten von dem zweiten Speicher 330 lesen, und können die Lesedaten durch die Komponenten 311, 312 und 110 an den Host 200 übertragen werden (S136). Während einer dem Schreibbefehl entsprechenden Schreiboperation kann die Speicherschnittstelle 318 die durch die Komponenten 110, 312 und 311 empfangenen Schreibdaten in einen Speicherbereich des zweiten Speichers 330 schreiben, der einer in dem Schreibbefehl enthaltenen Adresse entspricht (S136).
-
Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte, wenn das Ergebnis des Schritts S120 JA ist, werden Schritte S122 bis S128 durchgeführt und werden Schritte S130 bis S136 nicht durchgeführt; und wenn das Ergebnis des Schritts S120 NEIN ist, werden Schritte S130 bis S136 durchgeführt und werden Schritte S122 bis S128 nicht durchgeführt.
-
3 ist eine Zeichnung, welche einen Betrieb des in 1 gezeigten Datenverarbeitungssystems 100 gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte beschreibt. In dem in 3 dargestellten Beispiel wird angenommen, dass der Scheduler 214 zeitlich terminiert, einen Schreibbefehl WC vor einem Lesebefehl RC auszugeben, und ein gesetztes Bit SB mit einem ersten Wert (z. B. einem High-Pegel oder logisch 1) wird in einem bestimmten Feld eines Registers gesetzt. Wie oben beschrieben kann das Register, in dem das gesetzte Bit SB gesetzt wird, ein EXT_CSD-Register der eMMC sein. Bezugnehmend auf die 1 bis 3 kann die erste CPU 210 einen Zustandsprüfbefehl SCC an die Datenspeichervorrichtung 300 übertragen.
-
Die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware FW kann den Zustandsprüfbefehl SCC interpretieren oder dekodieren, und einen Wert des in einem Register gespeicherten gesetzten Bit SB gemäß einem Ergebnis der Interpretation oder Dekodierung bestimmen. Da der Wert des gesetzten Bit SB ein erster Wert ist, kann die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware FW die zweite Antwort RES2 an den Host 200 ausgeben.
-
Der Ein-/Ausgabe-Scheduler 214 kann eine Bestimmung, wie sie basierend auf der zweiten Antwort RES2 folgt, durchführen. Das bedeutet, dass der Ein-/Ausgabe-Scheduler 214 bestimmen kann, dass eine Antwortzeit für den Schreibbefehl WC verlängert oder länger sein wird, wenn eine dem Schreibbefehl WC entsprechende Schreiboperation in der Datenspeichervorrichtung 300 durchgeführt wird, da ein Hintergrundbetrieb (z. B. eine Speicherbereinigung) in der Datenspeichervorrichtung 300 ausgeführt werden muss.
-
Dementsprechend kann der Ein-/Ausgabe-Scheduler 214 den Lesebefehl RC an den Vorrichtungstreiber 216 vor dem Ausgeben des Schreibbefehls WC an den Vorrichtungstreiber 216 basierend auf der zweiten Antwort RES2 ausgeben. Zum Beispiel kann der Ein-/Ausgabe-Scheduler 214 die Ausgabesequenz des Schreibbefehls WC und des Lesebefehls RC ändern und den Lesebefehl RC an den Vorrichtungstreiber 216 vor dem Ausgeben oder Abgeben des Schreibbefehls WC an den Vorrichtungstreiber 216 ausgeben oder abgeben, um so die Leseleistungsfähigkeit oder Leseantwortzeit zu verbessern.
-
Die zweite CPU 314 kann die Speicherschnittstelle 318 als Antwort auf den von dem Host 200 abgegebenen Lesebefehl RC steuern. Die Speicherschnittstelle 318 kann dem Lesebefehl RC entsprechende Daten RDATA von dem zweiten Speicher lesen. Die Lesedaten RDATA können an den Host 200 übertragen werden. Wenn eine Verarbeitung für den Lesebefehl RC abgeschlossen ist, kann der Ein-/Ausgabe-Scheduler 214 den Schreibbefehl WC an den Vorrichtungstreiber 216 ausgeben oder abgeben. Der Host 200 kann den Schreibbefehl WC und die Schreibdaten WDATA durch die Schnittstelle 110 an die Datenspeichervorrichtung 300 übertragen.
-
Die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware FW kann die Speicherschnittstelle 318 basierend auf dem Schreibbefehl WC steuern. Die Speicherschnittstelle 318 kann die Schreibdaten WDATA in den zweiten Speicher 330 schreiben. Die Speicherbereinigung kann durchgeführt werden, während die Schreibdaten WDATA in den zweiten Speicher geschrieben werden. Zum Beispiel, wenn ein freier Block des zweiten Speichers 330 ungenügend ist, während die Schreibdaten WDATA in den zweiten Speicher 330 geschrieben werden, kann die Speicherbereinigung durchgeführt werden.
-
4 ist eine Zeichnung, welche den Betrieb des in 1 gezeigten Datenverarbeitungssystems gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte beschreibt. Wenn die Speicherbereinigung durchgeführt wird in der Datenspeichervorrichtung 300, während die Speicherbereinigung und eine Schreiboperation getrennt voneinander sind, oder ein Hintergrundbetrieb durchgeführt wird, kann der Ein-/Ausgabe-Scheduler 124 nur einen Lesebefehl ausgeben ohne einen Schreibbefehl auszugeben.
-
Es wird angenommen, dass der Scheduler 214 zeitlich terminiert, den Schreibbefehl WC vor dem Lesebefehl RC auszugeben und das gesetzte Bit SB mit dem ersten Wert in einem Register gesetzt wird.
-
Bezugnehmend auf die 1, 2 und 4 kann die erste CPU 210 des Host 200, während die Speicherbereinigung in der Datenspeichervorrichtung 300 durchgeführt wird, einen ersten Zustandsprüfbefehl SCC1 an die Datenspeichervorrichtung 300 abgeben. Die Datenspeichervorrichtung 300 kann an den Host 200 eine zweite Antwort RES2 mit Verarbeitungsinformation übertragen, welche anzeigt, dass die Speicherbereinigung gegenwärtig in der Datenspeichervorrichtung 300 durchgeführt wird, als Antwort auf den ersten Zustandsprüfbefehl SCC1.
-
Während die Speicherbereinigung kontinuierlich durchgeführt wird in der Datenspeichervorrichtung 300, kann die erste CPU 210 des Host 200 einen zweiten Zustandsprüfbefehl SCC2 an die Datenspeichervorrichtung 300 abgeben. Die Datenspeichervorrichtung 300 kann eine zweite Antwort RES2 mit Verarbeitungsinformation, welche wiedergibt, dass die Speicherbereinigung gegenwärtig in der Speichervorrichtung 300 durchgeführt wird, als Antwort auf den zweiten Zustandsprüfbefehl SCC2 an den Host 200 übertragen.
-
Wenn eine Leseoperation in der Datenspeichervorrichtung 300 benötigt wird, kann die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 die Ausgabereihenfolge eines Schreibbefehls WC und eines Lesebefehls RC ändern und den Lesebefehl RC an den Vorrichtungstreiber 216 gemäß einer geänderten Ausgabereihenfolge übertragen.
-
Die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware FW kann die Speicherschnittstelle 318 steuern, um die Speicherbereinigung auf der Grundlage des von dem Vorrichtungstreiber 216 übertragenen Lesebefehls RC zu stoppen. Dementsprechend wird die Speicherbereinigung gestoppt (G/C STOP).
-
Die Speicherschnittstelle 318 kann dem Lesebefehl RC entsprechende Daten RDATA von dem zweiten Speicher 330 lesen gemäß einer Steuerung der zweiten CPU 314 oder der durch die zweite CPU 314 ausgeführten Firmware FW. Die Lesedaten RDATA können an den Host 200 übertragen werden. Wenn eine Leseoperation für die Daten RDATA abgeschlossen ist gemäß dem Lesebefehl RC, kann die zweite CPU 314 oder die von der zweiten CPU 314 ausgeführte Firmware die Speicherschnittstelle 318 steuern, um die Speicherbereinigung fortzusetzen. Dementsprechend wird die Speicherbereinigung fortgesetzt.
-
Wenn die Speicherbereinigung durchgeführt wird in der Datenspeichervorrichtung 300, kann die erste CPU 210 des Host einen dritten Zustandsprüfbefehl SCC3 an die Datenspeichervorrichtung 300 ausgeben. Die Datenspeichervorrichtung 300 kann an den Host 200 als Antwort auf den dritten Zustandsprüfbefehl SCC3 die zweite Antwort RES2 mit Verarbeitungsinformation übertragen, welche anzeigt, dass die Speicherbereinigung gegenwärtig in der Datenspeichervorrichtung 300 durchgeführt wird.
-
Wenn die Speicherbereinigung kontinuierlich durchgeführt wird in der Datenspeichervorrichtung 300, kann die erste CPU 210 des Host 200 einen vierten Zustandsprüfbefehl SCC4 an die Datenspeichervorrichtung 300 ausgeben. Die Datenspeichervorrichtung 300 kann an den Host 200 als Antwort auf den vierten Zustandsprüfbefehl SCC4 die zweite Antwort RES2 mit Verarbeitungsinformation übertragen, welche wiedergibt, dass die Speicherbereinigung in der Datenspeichervorrichtung 300 noch durchgeführt wird.
-
Nachdem die Speicherbereinigung in der Datenspeichervorrichtung 300 abgeschlossen ist, kann die erste CPU 210 des Host 200 einen fünften Zustandsprüfbefehl SCC5 an die Datenspeichervorrichtung 300 abgeben. Die Datenspeichervorrichtung 300 kann an den Host 200 als Antwort auf den fünften Zustandsprüfbefehl SCC5 eine zweite Antwort RES2' mit Verarbeitungsinformation übertragen, welche anzeigt, dass die Speicherbereinigung in der Datenspeichervorrichtung 300 gegenwärtig nicht durchgeführt wird.
-
Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann einen Schreibbefehl WC gemäß der geänderten Ausgabereihenfolge basierend auf der zweiten Antwort RES2' an den Vorrichtungstreiber 216 ausgeben. Der Host 200 kann Schreibdaten WDATA, welche dem Schreibbefehl WC entsprechen, durch die Schnittstelle 110 an die Datenspeichervorrichtung 300 übertragen.
-
Die zweite CPU 314 oder die Firmware FW kann die Speicherschnittstelle 318 als Antwort auf den Schreibbefehl WC steuern. Die Speicherschnittstelle 318 kann eine Schreiboperation des Schreibens der Schreibdaten WDATA in den zweiten Speicher 330 durchführen. Nachdem die Schreiboperation abgeschlossen ist, kann die erste CPU 210 des Host 200 einen sechsten Zustandsprüfbefehl SCC6 an die Datenspeichervorrichtung 300 abgeben.
-
Die 3 und 4 veranschaulichen Beispiele, bei denen die Datenspeichervorrichtung 300 als eine synchrone Datenspeichervorrichtung verwendet wird. 5 ist ein Datenflussdiagramm, welches den Betrieb des in 1 gezeigten Datenverarbeitungssystems gemäß zumindest einer anderen beispielhaften Ausführungsform der erfinderischen Konzepte darstellt. Zum Beispiel kann die Datenspeichervorrichtung 300 als eine asynchrone Datenspeichervorrichtung verwendet werden.
-
Bezugnehmend auf die 1, 2 und 5 kann die erste CPU 210 in Schritt S110 eine Lese-Latenzzeit bestimmen. Darüber hinaus kann die erste CPU 210 in Schritt S110 bestimmen, ob oder ob nicht die Lese-Latenzzeit wichtig ist oder verbessert werden muss. Zum Beispiel kann die erste CPU 210 in Schritt S110 einen Zeitpunkt bestimmen, zu dem eine Lese-Latenzzeit als wichtig bestimmt wird, oder kann einen Zeitpunkt bestimmen, zu dem bestimmt wird, dass eine Leseleistungsfähigkeit verbessert werden muss. Die Bestimmung kann durchgeführt werden durch Firmware, welche durch die erste CPU 210 implementiert ist, oder durch den Ein-/Ausgabe-Scheduler 214.
-
In Schritt S112 überträgt die erste CPU 210 einen Befehl mit einem gesetzten Bit SB basierend auf der Bestimmung in Schritt S110. Wenn die erste CPU 210 in Schritt S110 bestimmt, dass die Lese-Latenzzeit wichtig ist oder verbessert werden muss, kann die erste CPU 210 in Schritt S112 einen Befehl mit einem gesetzten Bit SB mit einem ersten Wert, z. B. einem High-Pegel oder logisch 1, an die zweite CPU 314 übertragen. Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte kann die erste CPU 210 in Schritt S112 einen Befehl mit einem gesetzten Bit SB mit einem ersten Wert, z. B. einem High-Pegel oder logisch 1, durch die Komponenten 205, 220, 110, 312 und 311 nur zu dem Zeitpunkt an die zweite CPU 314 übertragen (S112), zu dem bestimmt wird, dass die Leseleistungsfähigkeit verbessert werden muss. Wenn jedoch die erste CPU 210 in Schritt S110 bestimmt, dass die Lese-Latenzzeit nicht wichtig ist oder nicht verbessert werden muss, kann die erste CPU 210 in Schritt S112 einen Befehl mit einem gesetzten Bit SB mit einem zweiten Wert, z. B. einem Low-Pegel oder logisch 0, durch die Komponenten 205, 220, 110, 312 und 311 an die zweite CPU 314 übertragen.
-
Die Speicherschnittstelle 318 kann das gesetzte Bit SB mit einem ersten Wert oder einem zweiten Wert in einem Register speichern gemäß einer Steuerung der zweiten CPU 314 oder der durch die zweite CPU 314 implementierten Firmware (S114). Die erste CPU 210 kann einen Zustandsprüfbefehl an die Datenspeichervorrichtung 300 übertragen, um einen Betriebszustand der Datenspeichervorrichtung 300 zu bestimmen (S116).
-
Die zweite CPU 314 oder die durch die zweite CPU 314 implementierte Firmware FW kann einen Wert des gesetzten Bit SB, das in einem in der Datenspeichervorrichtung 300 ausgebildeten Register gespeichert ist, prüfen oder bestimmen, und kann einen Betriebszustand der Datenspeichervorrichtung 300 als Antwort auf einen Zustandsprüfbefehl SCC prüfen oder bestimmen (S118). Wie oben beschrieben kann der Betriebszustand anzeigen, ob ein Hintergrundbetrieb durchgeführt wird oder nicht, und kann der Hintergrundbetrieb Speicherverarbeitung, Wear-Leveling und/oder eine Leserückholoperation enthalten, jedoch ist der Hintergrundbetrieb nicht darauf beschränkt.
-
Wenn ein Wert des in einem Register gespeicherten gesetzten Bit SB ein erster Wert, z. B. logisch 1, ist (JA in S120), kann die zweite CPU 314 oder die durch die zweite CPU 314 implementierte Firmware FW die zweite Antwort RES2 durch die Komponenten 311, 312, 110, 220 und 205 an die erste CPU 210 basierend auf dem Betriebszustand (z. B. dem in Schritt S118 bestimmten Betriebszustand) übertragen (S122). Die zweite Antwort RES2 kann Zustandsinformation der Datenspeichervorrichtung 300 sowie Verarbeitungsinformation über einen Schreibbefehl für die Datenspeichervorrichtung 300 enthalten.
-
Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann ein Übertragungsintervall oder ein Polling-Intervall eines Warteschlangenbereitschafts-Prüfbefehls anpassen zum Prüfen, ob eine Warteschlange bereit ist oder nicht, basierend auf der zweiten Antwort RES2 (S210). Wenn das Übertragungsintervall oder das Polling-Intervall verlängert wird, nimmt der Gebrauch der ersten CPU 210 ab. Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann einen Warteschlangenbereitschafts-Prüfbefehl QRCi an die Datenspeichervorrichtung 300 in angepassten Übertragungsintervallen oder angepassten Polling-Intervallen übertragen (S212).
-
Wenn jedoch ein Wert des in einem Register gespeicherten gesetzten Bit SB ein zweiter Wert, z. B. logisch 0, ist (NEIN in S120), kann die zweite CPU 314 oder die Firmware FW die zweite Antwort RES2 an die erste CPU 210 übertragen durch die Komponenten 311, 312, 110, 220 und 205 basierend auf dem Betriebszustand (S130). Zu dieser Zeit kann die zweite Antwort RES2 möglicherweise nur Zustandsinformation der Datenspeichervorrichtung 300 enthalten.
-
Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 halten das Übertragungsintervall oder das Polling-Intervall des Warteschlangenbereitschaftsprüfbefehls aufrecht zum Prüfen, ob eine Warteschlange so wie sie ist bereit ist oder nicht (S220). Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann den Warteschlangenbereitschaftsprüfbefehl QRCi an die Datenspeichervorrichtung 300 in ursprünglichen Übertragungsintervallen oder ursprünglichen Polling-Intervallen übertragen (S220).
-
Gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte werden, wenn das Ergebnis des Schritts S120 JA ist, Schritte S122, S210 und S212 durchgeführt und werden Schritte nicht durchgeführt, und wenn das Ergebnis des Schritts S120 NEIN ist, werden Schritte S130, S220 und S222 durchgeführt und werden Schritte S122, S210 und S212 nicht durchgeführt.
-
6 ist ein konzeptionelles Diagramm, das ein Verfahren des Anpassen eines Übertragungsintervalls oder eines Warteschlangenbereitschafts-Prüfbefehls gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte darstellt. Es wird angenommen, dass der Scheduler 214 anfänglich zeitlich terminiert, einen Warteschlangenbereitschaftsprüfbefehl zu jedem Zeitpunkt T1, T2, T3 und T4 auszugeben, und das gesetzte Bit SB mit einem ersten Wert in einem Register gesetzt wird. Dabei wird angenommen, dass Intervalle zwischen zwei Zeitpunkten T1 und T2, T2 und T3 sowie T3 und T4 jeweils gleich zueinander sind.
-
Bezugnehmend auf die 1, 5 und 6 wird angenommen, dass ein Schreib-Warteschlangen-Befehl SCHREIBE Q erzeugt wird gemäß einer Host-Schreibanforderung HOST-SCHREIB-ANFORDERUNGEN, die in der ersten CPU 210 erzeugt wird, und der Schreib-Warteschlangen-Befehl SCHREIBE Q erzeugt wird gemäß den Befehlen CM1 und CM2 und in einer Warteschlangenposition „0” einer Warteschlange 250 gespeichert wird. Während ein Hintergrundbetrieb, z. B. eine Speicherbereinigung, durchgeführt wird in der Datenspeichervorrichtung 300, kann die erste CPU 210 einen ersten Zustandsprüfbefehl SCC1 an die Datenspeichervorrichtung 300 abgeben.
-
Die zweite CPU 314 oder die Firmware FW kann die zweite Antwort RES2 mit Zustandsinformation der Datenspeichervorrichtung 300 sowie Verarbeitungsinformation, welche anzeigt, dass die Speicherbereinigung gegenwärtig in der Datenspeichervorrichtung 300 durchgeführt wird, an den Host 200 als Antwort auf den ersten Zustandsprüfbefehl SCC1 übertragen. Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 können einen ersten Warteschlangenbereitschafts-Prüfbefehl QRC1 an die Datenspeichervorrichtung 300 zu einem ersten Zeitpunkt T1 übertragen.
-
Dann wird angenommen, dass ein Lese-Warteschlangen-Befehl LESE Q erzeugt wird gemäß einer Host-Leseanforderung HOST-LESE-ANFORDERUNG, die in der ersten CPU 210 erzeugt wurde, und der Lese-Warteschlangen-Befehl LESE Q erzeugt wird gemäß den Befehlen CM3 und CM4 und an einer Warteschlangenposition „1” der Warteschlange 250 gespeichert wird. Es wird genommen, dass „W” in der Warteschlangenposition „0” eine Schreiboperation ist und „R” an der Warteschlangenposition „1” eine Leseoperation ist.
-
Die Datenspeichervorrichtung 300 stoppt die Speicherbereinigung G/C als Antwort auf den Lese-Warteschlangen-Befehl LESE Q (G/C STOP). Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann einen zweiten Warteschlangenbereitschafts-Prüfbefehl QRC2 an die Datenspeichervorrichtung 300 zu einem Intervall-angepassten zweiten Zeitpunkt T2' übertragen. Die zweite CPU 314 der Datenspeichervorrichtung 300 oder der Firmware FW kann eine Lesebereitschaftsantwort RR an den Host 200 als Antwort auf einen zweiten Warteschlangenbereitschafts-Prüfbefehl QRC2 senden. Hierbei kann die Lesebereitschaftsantwort RR eine Antwort zum Durchführen einer Leseoperation sein, welche dem Warteschlangenelement R an der Warteschlangenposition „1” entspricht.
-
Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann einen Lesebefehl RC an die Datenspeichervorrichtung 300 basierend auf der Lesebereitschaftsantwort RR übertragen. Die Speicherschnittstelle 318 der Datenspeichervorrichtung 300 kann in dem zweiten Speicher 330 gespeicherte Daten RDATA gemäß einer Steuerung der zweiten CPU 314 oder der Firmware, welche gemäß dem Lesebefehl RC arbeiten, lesen. Die Lesedaten RDATA können an den Host 200 übertragen werden.
-
Nachdem die Leseoperation für den Lesebefehl RC abgeschlossen oder beendet ist, kann die Datenspeichervorrichtung 300 die Speicherbereinigung G/C fortsetzen. Während die Speicherbereinigung G/C durchgeführt wird, kann die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 einen dritten Warteschlangenbereitschafts-Prüfbefehl QRC3 an die Datenspeichervorrichtung 300 zu einem Intervall-angepassten dritten Zeitpunkt T3' übertragen.
-
Nachdem die Speicherbereinigung G/C abgeschlossen ist, kann die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 einen vierten Warteschlangenbereitschafts-Prüfbefehl QRC4 an die Datenspeichervorrichtung 300 zu einem Intervall-angepassten vierten Zeitpunkt T4' übertragen. Die zweite CPU 314 der Datenspeichervorrichtung 300 oder die Firmware FW kann eine Schreibbereitschaftsantwort WR als Antwort auf den vierten Warteschlangenbereitschafts-Prüfbefehl QRC4 an den Host 200 übertragen. Hierbei kann die Schreibbereitschaftsantwort WR eine Antwort zum Durchführen einer Schreiboperation sein, welche dem Warteschlangenelement W an der Warteschlangenposition „0” entspricht.
-
Die erste CPU 210 oder der Ein-/Ausgabe-Scheduler 214 kann einen Schreibbefehl WC und Schreibdaten WDATA basierend auf der Schreibbereitschaftsantwort WR an die Datenspeichervorrichtung 300 übertragen. Die zweite CPU 314 der Datenspeichervorrichtung 300 oder die Firmware FW kann die Speicherschnittstelle 318 gemäß dem Schreibbefehl WC steuern. Die Speicherschnittstelle 318 kann die Schreibdaten WDATA in dem zweiten Speicher 330 speichern.
-
7 ist ein Blockdiagramm eines Systems, welches das in 1 gezeigte Datenverarbeitungssystem enthält. Bezugnehmend auf die 1 bis 7 kann ein System 400 zumindest einen Client-Computer 410, einen Server oder Web-Server 420, ein Netzwerk 430 und eine Datenverarbeitungsvorrichtung 440 enthalten. Die Datenverarbeitungsvorrichtung 440 kann einen Datenbank-Server 450 und eine Datenbank 460 enthalten. Zum Beispiel kann das System 400 ein Suchportal, ein Datenzentrum oder ein Internetdatenzentrum (IDC) sein.
-
Der Client-Computer 410 kann mit dem Server 420 über ein Netzwerk kommunizieren. Der Client-Computer 410 kann als ein PC, ein Laptop-Computer, ein Smartphone, ein Tablet-PC, ein PDA, ein MID, ein tragbarer Computer, eine IoT-Vorrichtung oder eine IoE-Vorrichtung ausgebildet sein. Der Server 420 kann mit dem Datenbankserver 450 über das Netzwerk 430 kommunizieren. Der Datenbankserver 450 kann eine Funktion des Host 200 aus 1 durchführen.
-
Der Datenbankserver 450 kann einen Betrieb der Datenbank 460 steuern. Der Datenbankserver 450 kann auf zumindest eine Datenbank 460 zugreifen. Die zumindest eine Datenbank 460 kann zumindest eine Datenspeichervorrichtung 300 enthalten. Ein Aufbau und ein Betrieb der zumindest einen Datenspeichervorrichtung 300 kann im Wesentlichen gleich oder ähnlich dem mit Bezug auf die 1 bis 6 beschrieben Aufbau und Betrieb der Datenspeichervorrichtung 300 sein. Der Server 420 und der Datenbankserver 450 können Daten zueinander übertragen oder Daten voneinander empfangen über das Netzwerk 430. Das Netzwerk 430 kann ein drahtgebundenes Netzwerk, ein drahtloses Netzwerk, das Internet, Wi-Fi oder ein Mobiltelefonnetzwerk sein.
-
Ein Host und ein Verfahren zum Betreiben des Host gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte können einen Befehl, welcher Information anfordert, die anzeigt, ob ein Hintergrundbetrieb durchgeführt wird oder nicht, an eine Datenspeichervorrichtung übertragen, um eine Lese-Latenzzeit adaptiv anzupassen. Eine Datenspeichervorrichtung und ein Verfahren zum Betreiben der Datenspeichervorrichtung gemäß beispielhaften Ausführungsformen der erfinderischen Konzepte kann eine Antwort, welche darstellt, ob ein Hintergrundbetrieb durchgeführt wird oder nicht, an den Host übertragen als Antwort auf den von einem Host übertragenen Befehl, welcher anfordert, ob der Hintergrundbetrieb durchgeführt wird oder nicht.
-
Der Host gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte kann eine Ausgabesequenz (oder eine Ausgabereihenfolge) von an die Datenspeichervorrichtung übertragenen Befehlen ändern, um eine Lese-Latenzzeit zu verringern basierend auf einer von einer Datenspeichervorrichtung übertragenen Antwort. Der Host gemäß zumindest einer beispielhaften Ausführungsform der erfinderischen Konzepte kann ein Übertragungsintervall oder ein Polling-Intervall eines Warteschlangenbereitschafts-Prüfbefehls einstellen basierend auf einer von der Datenspeichervorrichtung übertragenen Antwort.
-
Beispielhafte Ausführungsformen der erfinderischen Konzepte wurden somit beschrieben, es wird offensichtlich sein, dass dieselben auf verschiedene Art und Weise variiert werden können. Solche Variationen sind nicht als Abweichung von dem beabsichtigten Gedanken und Umfang der beispielhaften Ausführungsformen der erfinderischen Konzepte anzusehen, und alle diese Abwandlungen, die für einen Fachmann ersichtlich sein würden, sind beabsichtigt, innerhalb des Umfangs der folgenden Ansprüche enthalten zu sein.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- KR 10-2014-0145651 [0001]
- US 7679133 [0065]
- US 8535466 [0065]
- US 8654587 [0065]
- US 8559235 [0065]
- US 2011/0233648 [0065]