-
HINTERGRUND
-
Solid-State-Datenspeichersysteme werden immer häufiger verwendet, um Daten für elektronische Vorrichtungen zu speichern und zu verwalten. Eine Solid-State-Datenspeicherung verwendet einen nichtflüchtigen Speicher, um Daten zu speichern. Eine typische nichtflüchtige Datenspeichervorrichtung speichert Daten als einen elektrischen Wert (z.B. Spannung) in nichtflüchtigen Speicherzellen und nützt einen oder mehrere Speicher-Controller, um Datentransaktionen über mehrere nichtflüchtige Speichervorrichtungen des Speichersystems zu verwalten.
-
Datentransaktionen in einem Solid-State-Datenspeichersystem werden im Allgemeinen ausgeführt, indem Speicherbefehle ausgeführt werden. Einige beispielhafte Speicherbefehle sind das Lesen, Schreiben und Löschen von nichtflüchtigen Speicher-Chips, z.B. NAND-Flash-Speicher-Chips. Um diesen Prozess zu vereinfachen, sind Speicher-Controller oftmals mit Befehlsreihen konstruiert, was das Ausführen von Befehlen über mehrere Speicherzellen vereinfacht. In einigen Datenspeichersystemen können mehrere Befehle parallel über mehrere Kanäle des Datenspeichersystems ausgeführt werden. Die Speicher-Controller können aber nicht dazu in der Lage sein, in einigen Szenarien aufgrund von Leistungsbeschränkung und/oder Verarbeitungsverzögerung bei der Ausführung der Speicherbefehle mit voller Geschwindigkeit zu arbeiten.
-
ZUSAMMENFASSUNG
-
Verschiedene Ausführungsformen von Systemen, Verfahren und Vorrichtungen innerhalb des Schutzumfangs der angehängten Ansprüche weisen jeweils mehrere Aspekte auf, von welchen kein einziger allein für die hierin beschriebenen Attribute verantwortlich zeichnet. Ohne den Schutzumfang der angehängten Ansprüche einzuschränken und nach Betrachtung dieser Offenbarung und insbesondere nach Betrachtung des Abschnitts mit dem Titel „Detaillierte Beschreibung“ wird man verstehen, wie die Aspekte der verschiedenen Ausführungsformen verwendet werden, um den Leistungsverbrauch in Speichervorrichtungen (z.B. Solid-State-Laufwerken, die manchmal als SSDs bezeichnet werden) zu verwalten.
-
Aspekte der vorliegenden Offenbarung stellen Systeme, Verfahren und/oder eine Vorrichtung bereit, um den Leistungsverbrauch von Speicher-Controllern in Reaktion auf das Speichersystem-Backlog in verschiedenen Situationen zu reduzieren.
-
Eine Ausführungsform der vorliegenden Offenbarung stellt eine Datenspeichervorrichtung bereit. Die Datenspeichervorrichtung umfasst eine Vielzahl von Sätzen von nichtflüchtigen Arbeitsspeichervorrichtungen (NVM), einen zentralen Controller und eine Vielzahl von Kanal-Controllern. Jeder Kanal-Controller ist mit einem eindeutigen Satz der Vielzahl von Sätzen von NVM-Vorrichtungen gekoppelt. Jeder Kanal-Controller umfasst eine Befehlsreihe, die dazu ausgelegt ist, hängige Speicherbefehle zu speichern und Backlog-Information bereitzustellen. Der zentrale Controller ist dazu ausgelegt, die Backlog-Information der Befehlsreihen der Vielzahl von Kanal-Controllern zu empfangen und eine Taktfrequenz des zentralen Controllers und eine oder mehrere Taktfrequenzen der Vielzahl von Kanal-Controllern auf der Grundlage der Backlog-Information anzupassen, so dass die hängigen Speicherbefehle in jeder der Befehlsreihen unter einem vorbestimmten Schwellenwert liegen.
-
Eine andere Ausführungsform der vorliegenden Offenbarung stellt ein Verfahren zum Betreiben einer Datenspeichervorrichtung bereit, die einen zentralen Controller und eine Vielzahl von Kanal-Controllern umfasst. Der zentrale Controller gibt Speicherbefehle an die Vielzahl von Kanal-Controllern aus. Jeder der Kanal-Controller umfasst eine Befehlsreihe zum Speichern der entsprechenden Speicherbefehle für einen eindeutigen Satz einer Vielzahl von Sätzen von nichtflüchtigen Speichervorrichtungen (NVM-Vorrichtungen) und zum Bereitstellen von Backlog-Information. Der zentrale Controller empfängt die Backlog-Information der hängigen Speicherbefehle in den Befehlsreihen und passt eine Taktfrequenz des zentralen Controllers und eine oder mehrere Taktfrequenzen der Vielzahl von Kanal-Controller auf der Grundlage der Backlog-Information an, so dass die hängigen Speicherbefehle in jeder der Befehlsreihen unter einem vorbestimmten Schwellenwert liegen.
-
Eine weitere Ausführungsform der vorliegenden Offenbarung stellt eine Datenspeichervorrichtung bereit. Die Datenspeichervorrichtung umfasst eine Vielzahl von Sätzen von nichtflüchtigen Speichervorrichtungen (NVM-Vorrichtungen) und eine Vielzahl von ersten Mitteln. Jedes erste Mittel speichert Speicherbefehle für einen eindeutigen Satz der Vielzahl von Sätzen von NVM-Vorrichtungen und stellt Backlog-Information über die hängigen Speicherbefehle bereit. Die Datenspeichervorrichtung umfasst ferner ein zweites Mittel, um die Speicherbefehle an die Vielzahl von ersten Mitteln auszugeben und um die Backlog-Information zu empfangen. Die Datenspeichervorrichtung umfasst ferner ein drittes Mittel, um einen Speicherbefehl-Verarbeitungsdurchsatz des zweiten Mittels und der Vielzahl von ersten Mitteln auf der Grundlage der Backlog-Information anzupassen, so dass die hängigen Speicherbefehle in jedem ersten Mittel unter einem vorbestimmten Schwellenwert liegen.
-
Figurenliste
-
Die vorliegende Offenbarung ist im größeren Detail zu verstehen, und eine genauere Beschreibung ist durch den Verweis auf die Merkmale der verschiedenen Ausführungsformen zu erhalten, von welchen einige in den angehängten Zeichnungen veranschaulicht sind. Die angehängten Zeichnungen veranschaulichen aber nur zugehörige Merkmale der vorliegenden Offenbarung und sind somit nicht als einschränkend auszulegen, da die Beschreibung auch andere wirksame Merkmale zulassen kann.
- 1 ist ein Blockdiagramm, das eine Implementierung eines Datenspeichersystems gemäß einiger Ausführungsformen veranschaulicht.
- 2 ist ein Ablaufdiagramm, das einen Leistungsverwaltungsprozess eines Datenspeichersystems gemäß einiger Ausführungsformen veranschaulicht.
- 3 ist ein Ablaufdiagramm und ein Betriebsdiagramm, das einen reaktiven Leistungssteuerungsprozess gemäß einiger Ausführungsformen veranschaulicht.
- Die 4 und 5 sind Ablaufdiagramme, die einen Prozess zur Steuerung einer Taktfrequenz eines zentralen Controllers gemäß einiger Ausführungsformen veranschaulichen.
- 6 ist ein Ablaufdiagramm, das einen Prozess zur Steuerung von Taktfrequenzen von Kanal-Controllern gemäß einiger Ausführungsformen veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Hierin sind zahlreiche Details beschrieben, um ein umfassendes Verständnis der in den begleitenden Zeichnungen veranschaulichten Ausführungsformen bereitzustellen. Einige Ausführungsformen können aber in der Praxis ohne viele der spezifischen Details umgesetzt werden, und der Umfang der Ansprüche ist nur durch jene Merkmale und Aspekte beschränkt, die spezifisch in den Ansprüchen angeführt sind. Darüber hinaus wurden allgemein bekannte Verfahren, Komponenten und Schaltkreise nicht im umfassenden Detail beschrieben, um nicht in nicht notwendiger Weise zugehörige Aspekte der hierin beschriebenen Ausführungsformen zu verdecken.
-
Eine Rechenvorrichtung (Host) kann eine Datenspeicherhierarchie verwenden, die eine schnellere Datenspeicherung näher zum Host und eine langsamere Speicherung weiter vom Host entfernt anordnet. Die schnellere Speicherung kann eine flüchtige Speicherung sein und wird im Allgemeinen als „Arbeitsspeicher (Memory)“ bezeichnet, und die langsamere Speicherung ist typischerweise ein zugehöriger Speicher und wird oftmals als „Datenspeicher“ bezeichnet. Einige Beispiele für einen zugehörigen Speicher sind Solid-State-Speichervorrichtungen wie ein Flash-Memory (z.B. NAND Flash). Einige Datenspeichersysteme können ein gewisses Leistungsbudget oder eine Leistungsbeschränkung aufweisen, die während des Systembetriebs nicht überschritten werden kann. In einigen Implementierungen kann ein Datenspeichersystem eine dynamische Spannungs- und Frequenzskalierung (dynamic voltage and frequency scaling, DVFS) verwenden, um Leistung nach Bedarf zu reduzieren. Die Komplexität und der Overhead, die mit der DVFS assoziiert sind, können für einige Niedrigleistungsimplementierungen gerechtfertigt und für die Hochleistungs-Solid-State-Datenspeichervorrichtung praktisch sein. Darüber hinaus können aber DVFS Lösungen in Situationen hoher Belastung und Leistungsdrosselung nicht geeignet sein.
-
In einer verteilten Datenspeicherarchitektur kann die nichtflüchtige Datenspeicherung in verschiedene Kanäle oder Gruppen organisiert sein. Jeder Kanal umfasst nichtflüchtige Speichervorrichtungen (z.B. NAND Flash-Chips), die von einem Kanal-Controller gesteuert werden. Das Datenspeichersystem kann einen zentralen Controller verwenden, um Speicheroperationen unter den Kanälen durch den Kanal-Controller zu steuern. Der zentrale Controller kann eine Host-Schnittstelle für einen Host (z.B. einen Computer) bereitstellen, um auf die Daten im Datenspeichersystem zuzugreifen. In einem solchen verteilten Datenspeichersystem muss die Belastung der mehreren stromabwärtigen Kanäle sorgfältig überlegt werden, wenn die Taktfrequenz des zentralen Controllers angepasst wird, um z.B. den Leistungsverbrauch zu reduzieren.
-
Mit Verweis nun auf die Zeichnungen sind Ausführungsformen von Systemen und Verfahren bereitgestellt, um den Leistungsverbrauch in Speichersystemen zur Datenspeicherung zu verwalten. Einige Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen, um den Leistungsverbrauch von Speicher-Controllern in Reaktion auf das Speicherbefehl-Backlog in verschiedenen Situationen zu reduzieren.
-
1 ist ein Blockdiagramm, das eine Implementierung eines Datenspeichersystems 100 gemäß einiger Ausführungsformen veranschaulicht. Während einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale aus Gründen der Kürze und, um zugehörigere Aspekte der hierin geoffenbarten beispielhaften Implementierungen nicht zu verdecken, nicht veranschaulicht.
-
Das Datenspeichersystem 100 kann eine persistente Datenspeicherung für einen Host 102 oder Computer bereitstellen. Das Datenspeichersystem umfasst einen zentralen Controller 110 und Kanal-Controller 112. Der zentrale Controller 110 umfasst verschiedene Komponenten wie z.B. einen Takterzeuger 114, einen DFS-Steuerblock (dynamische Frequenzskalierung) 116, eine Host-Schnittstelle 118, einen Speicherbefehlprozessor 120 und einen Leistungs-Credit-Zuweisungsblock 124. Die Host-Schnittstelle 118 stellt für den zentralen Controller 110 eine Schnittstelle mit einem Host 102 für die Daten- und Steuerkommunikation bereit. Der Host 102 kann ein Computer oder eine CPU (Hauptprozessor) sein, der/die Daten im Datenspeichersystem speichern kann. Der Takterzeuger 114 kann dazu ausgelegt sein, ein oder mehrere Taktsignale zu erzeugen, um verschiedene Komponenten des zentralen Controllers 110 anzutreiben. So kann der Takterzeuger 114 z.B. ein Taktsignal ausgeben, um den Speicherbefehlprozessor 120 anzutreiben. Je schneller das Taktsignal ist (d.h. höhere Frequenz), desto schneller kann der Speicherbefehlprozessor 120 Speicherbefehle verarbeiten. Eine schnellere Taktgeschwindigkeit kann aber auch den Leistungsverbrauch des Controllers erhöhen. Einige Beispiele für Speicherbefehle werden verwendet, um Daten im nichtflüchtigen Speicher (NVM) 130 des Datenspeichersystems 100 zu lesen, zu schreiben und zu löschen.
-
Der DFS-Steuerblock 116 kann ein Frequenzskalierungsfaktorsignal erzeugen, das die Taktfrequenz des Takterzeugers 114 dynamisch steuert. In einem Beispiel kann der Takterzeuger 114 eine Grundfrequenz F aufweisen. Ist der Skalierungsfaktor X, wie dies durch das Frequenzskalierungsfaktorsignal angezeigt ist, so kann die Taktfrequenz F multipliziert mit X bestimmt werden. Somit erhöht ein Skalierungsfaktor von mehr als 1 die Ausgabetaktfrequenz, während ein Skalierungsfaktor von weniger als 1 die Ausgabetaktfrequenz reduziert. Der zentrale Controller 110 kann dynamisch den Taktskalierungsfaktor ändern, um bei Bedarf die Taktfrequenz zu ändern.
-
Der Speicherbefehlprozessor 120 empfängt Speicherbefehle vom Host 102 über die Host-Schnittstelle 118. In einigen Beispielen kann die Host-Schnittstelle 118 ein Teil oder ein funktionaler Block des Speicherbefehlprozessors 120 sein. Auf der Grundlage der Befehle oder Instruktionen, die vom Host 102 empfangen werden, erzeugt der Speicherbefehlprozessor 120 entsprechende Speicherbefehle und sendet sie an die Kanal-Controller 112, um Daten im nichtflüchtigen Speicher (NVM) 130 zu schreiben, zu lesen und zu löschen. In einigen Ausführungsformen kann der NVM 130 ein NAND Flash-Speicher oder dergleichen sein.
-
Jeder Kanal-Controller 112 umfasst einen Takterzeuger 132 und eine Befehlsreihe 134. Der Takterzeuger 132 erzeugt ein oder mehrere Taktsignale, um verschiedene Komponenten des Kanal-Controllers 112 auf der Grundlage eines Frequenzskalierungsfaktorsignals anzutreiben, das vom DFS-Steuerblock 116 empfangen wird. Somit kann der zentrale Controller 110 unter Verwendung des DFS-Steuerblocks 116 dynamisch die Taktfrequenzen anpassen, die vom Takterzeuger 132 jedes Kanal-Controllers 112 ausgegeben werden. In einigen Beispielen kann die Befehlsreihe 134 ein First-In-First-Out-Puffer (FIFO) sein, der dazu ausgelegt ist, Speicherbefehle vom zentralen Prozessor 110 (z.B. dem Speicherbefehlprozessor 120) zu empfangen. Jeder Kanal-Controller 112 ist dazu ausgelegt, die in seiner Befehlsreihe 134 gespeicherten Speicherbefehle auszuführen, um die im NVM 130 gespeicherten Daten zu verwalten. Je schneller das Taktsignal ist, das vom Takterzeuger 132 erzeugt wird, desto schneller kann der Kanal-Controller 112 die Speicherbefehle in seiner Befehlsreihe 134 ausführen. So können z.B. die Speicherbefehle den Kanal-Controller 112 veranlassen, Daten im entsprechenden NVM 130 zu schreiben, zu lesen oder zu löschen.
-
Das Datenspeichersystem 100 kann einen Leistungsüberwachungsblock 140 aufweisen, der dazu ausgelegt ist, den Leistungsverbrauch des Systems zu überwachen. So kann der Leistungsüberwachungsblock 140 z.B. Sensoren und einen Schaltkreis (z.B. einen oder mehrere Stromsensoren und/oder Spannungssensoren) umfassen, die dazu ausgelegt sind, den Leistungsverbrauch verschiedener Komponenten des Datenspeichersystems 100 zu messen. In einigen Aspekten der Offenbarung, wenn der Leistungsverbrauch des Systems über einer vorbestimmten Schwelle, Grenze oder einem Leistungsbudget liegt, kann das Datenspeichersystem 100 Leistungsverwaltungsoperationen durchführen, um den Leistungsverbrauch zu reduzieren oder zu beschränken. In einigen Szenarien der Leistungsverwaltung kann die Arbeitsleistung einiger Komponenten (z.B. des NVM 130) reduziert, beschränkt oder gedrosselt werden. Das Datenspeichersystem 100 kann Komponenten und einen Schaltkreis umfassen, die dazu ausgelegt sind, Leistungsverwaltungsfunktionen durchzuführen. Der Leistungs-Credit-Zuweisungsblock 124 weist Leistungs-Credits den Kanal-Controllern 112 und dem zugehörigen NVM 130 zu, und jeder Kanal-Controller 112 weist einen Wartesteuerblock 146 und einen NVM-Steuerblock 148 auf, um die Leistungsdrosselung auf der Grundlage der zugewiesenen Leistungs-Credits zu steuern. Leistungsdrosselung bezieht sich auf Operationen, z.B. die Frequenz- und/oder Spannungsreduzierung, welche den Leistungsverbrauch des gedrosselten Schaltkreises oder der Komponenten reduzieren kann. Ein Leistungs-Credit kann einer gewissen Menge an Leistung entsprechen, die von dem Schaltkreis verwendet werden kann. Werden einem Kanal-Controller 122 und seinem zugehörigen NVM 130 eine gewisse Menge an Leistungs-Credits zugewiesen, so können der Kanal-Controller 122 und der NVM 130 eine Menge an Leistung verwenden, die den zugewiesenen Leistungs-Credits entspricht, um z.B. Speicherbefehle auszuführen.
-
2 ist ein Ablaufdiagramm, das einen Leistungsverwaltungsprozess 200 gemäß einiger Ausführungsformen veranschaulicht. Auf der Seite des zentralen Controllers weist der Leistungs-Credit-Zuweisungsblock 124 Leistungs-Credits jedem Kanal-Controller (202) zu. Auf der Seite des Kanal-Controllers kann der Wartesteuerblock 126 bestimmen (204), ob die zugewiesenen Leistungs-Credits ausreichend sind, um die Speicherbefehle, die in ihrer Befehlsreihe 134 hängig sind, durchzuführen. Der Wartesteuerblock 146 kann ein WAIT-Signal an den NVM-Steuerblock 148 ausgeben, um die Leistungsdrosselung des NVM 130 bei Bedarf zu steuern. Sind ausreichend Leistungs-Credits verfügbar, um die Speicherbefehle in der Befehlsreihe 134 durchzuführen, so kann das WAIT-Signal keine Drosselung anzeigen (206). Ansonsten, wenn die zugewiesenen Leistungs-Credits nicht ausreichend sind, kann das WAIT-Signal eine Drosselung anzeigen (208).
-
Während der Leistungsdrosselung kann der NVM-Steuerblock 148 die Geschwindigkeit des Sendens der Speicherbefehle an den NVM 130 und/oder die Operationen an dem NVM 130 verlangsamen, so dass der Leistungsverbrauch reduziert werden kann. Das Backlog der Befehlsreihe 134 kann sich erhöhen, wenn der NVM-Steuerblock 148 die Ausführung der Speicherbefehle verlangsamt. In diesem Fall weist die Befehlsreihe 134 Gegendruck oder sich erhöhenden Gegendruck auf. Der Wartesteuerblock 146 kann für den Leistungs-Credit-Zuweisungsblock 124 Feedback über das Backlog oder den Gegendruck der Befehlsreihe 134 bereitstellen. Wird der NVM 130 gedrosselt, um den Leistungsverbrauch zu reduzieren, so müssen der zentrale Controller 110 und/oder der Kanal-Controller 112 nicht bei voller Geschwindigkeit (d.h. der Nenntaktrate oder Frequenz) operieren. In diesem Fall kann der DFS-Steuerblock 116 die Taktfrequenzen des zentralen Controllers 110 und/oder es Kanal-Controllers 112 herabskalieren. Die Takte der Kanal-Controller 112 können auf verschiedene Grade, abhängig vom Gegendruck an ihren jeweiligen Befehlsreihen, herabskaliert werden.
-
3 ist ein Ablaufdiagramm, das einen reaktiven Leistungssteuerprozess 300 gemäß einiger Ausführungsformen veranschaulicht. Das Datenspeichersystem 100 kann diesen reaktiven Leistungssteuerprozess nutzen, um dynamisch die Taktfrequenzen der Controller in Reaktion auf das Ungleichgewicht im Speicherbefehl-Verarbeitungsdurchsatz zwischen dem zentralen Controller 110 und den Kanal-Controllern 112 zu ändern. Die in den Controllern eingesparte Leistung kann als Leistungs-Credits rückgewonnen werden, und somit werden für die Kanal-Controller /NVM oder um den Leistungsverbrauch insgesamt des Systems zu reduzieren, mehr Leistungs-Credits zur Verfügung gestellt.
-
Im Block 302 gibt der zentrale Controller 110 Speicherbefehle 304 an eine Vielzahl von Kanal-Controllern 112 aus. So umfasst z.B. jeder Kanal-Controller 112 eine Befehlsreihe 134, um entsprechende Speicherbefehle für einen eindeutigen Satz einer Vielzahl von Sätzen von NVM-Vorrichtungen (z.B. NVM 130) zu speichern. Die Befehlsreihe kann ein FIFO-Puffer sein, der eine gewisse Anzahl von hängigen Speicherbefehlen halten kann.
-
Im Block 306 stellt jeder Kanal-Controller 112 für den zentralen Controller 110 Backlog-Information 308 der in der Befehlsreihe 134 hängigen Speicherbefehle bereit. Jede der Befehlsreihe 134 kann eine Ausgabe aufweisen, die ihr Backlog oder ihren Gegendruck anzeigt. So kann das Signal z.B. die Anzahl an Speicherbefehlen anzeigen, die in der Befehlsreihe hängig sind, oder einen Nutzungswert der Befehlsreihen. Gegendruck erhöht sich, wenn der Kanal-Controller 112 neue Speicherbefehle schneller empfängt, als er die hängigen Speicherbefehle abschließen kann.
-
Im Block 310 passt der zentrale Controller 110 dynamisch die Taktfrequenz des zentralen Controllers 110 und/oder der jeweiligen Taktfrequenzen der Kanal-Controller 112 auf der Grundlage der Backlog-Information an, so dass die in jeweiligen Befehlsreihen hängigen Speicherbefehle unter einem vorbestimmten Schwellenwert oder in einem gewissen Bereich gehalten werden können. So kann z.B. der DFS-Steuerblock 116 geeignete Frequenzskalierungsfaktorsignale 312 an den Takterzeuger 114 in dem zentralen Controller 110 und an Takterzeuger 132 in den Kanal-Controllern 112 ausgeben, um die jeweiligen Taktfrequenzen derart festzulegen, so dass das Datenspeichersystem 100 einen erwünschten oder minimalen Verarbeitungsdurchsatz oder solche Leistungswerte erfüllen kann. Im Allgemeinen, wenn die Taktfrequenz reduziert wird, besitzt der Controller einen niedrigeren Speicherbefehl-Verarbeitungsdurchsatz. Somit sendet der zentrale Controller 110, wenn er einen niedrigeren Durchsatz hat, weniger Speicherbefehle an die Befehlsreihe 134. In diesem geschlossenen reaktiven Leistungssteuerungsprozess kann der zentrale Controller 110 die Verarbeitungsgeschwindigkeit stromaufwärts reduzieren, so dass die Controller in Hinblick auf den Speicherbefehl-Verarbeitungsdurchsatz gerade vor dem NVM bleiben. Somit kann die NVM-Schnittstelle 150 (z.B. eine Speicherschnittstelle) so vollständig besetzt gehalten werden, wie dies möglich ist, während die Controller den Leistungsverbrauch bei niedrigeren Taktfrequenzen reduzieren können.
-
Werden die Takte des zentralen Controllers 110 und/oder des Kanal-Controllers 112 dynamisch in Reaktion auf das Backlog der Befehlsreihen 134 der Kanal-Controller 112 reduziert, so kann die in den Controllern eingesparte Leistung als Leistungs-Credit rückgewonnen werden, die für den NVM 130 zur Verfügung gestellt werden. Werden mehr Leistungs-Credits dem NVM 130 zugewiesen, so muss die Leistungsdrosselung nicht erforderlich sein, oder sie kann reduziert werden. Dieser geschlossene Leistungssteuerungsprozess kann auch als reaktive Leistungsverwaltung bezeichnet werden, weil die Leistung in Reaktion auf das Ungleichgewicht in den Befehlsverarbeitungsdurchsätzen zwischen dem zentralen Controller und den Kanal-Controllern angepasst wird.
-
Im Allgemeinen arbeitet, wenn die Befehlsreihe 134 Gegendruck aufweist, der Kanal-Controller 112 so schnell wie möglich, um den Befehls-Traffic stromaufwärts des zentralen Controllers 112 aufrechterhalten zu können. In diesem Fall kann der zentrale Controller 110 ihren Takt verlangsamen, so dass weniger Speicherbefehle verarbeitet und zu den Befehlsreihen 134 an den Kanal-Controllern 112 gesendet werden. Während der wie oben beschriebenen Drosselung werden Speicheroperationen (z.B. Lesen, Schreiben, Löschen) am NVM 130 mit einem Gate gesteuert, beschränkt oder moduliert. So kann der NVM-Steuerblock 148 z.B. die Ausgabe von Sprachbefehlen an den NVM 130 durch die NVM-Schnittstelle 150 durch ein Gate steuern oder beschränken. Somit kann während der Drosselung der Kanal-Controller 112 langsamer arbeiten und dennoch mit dem NVM 130 mithalten. Dies bedeutet, dass während der Drosselung Gegendruck durch das Gating der Speicherbefehle bewirkt werden kann und nicht, weil der Kanal-Controller 112 zu langsam ist, um mit dem stromaufwärtigen zentralen Controller 110 mitzuhalten. In manchen Fällen können somit der zentrale Controller 110 und/oder der Kanal-Controller 112 sich verlangsamen, um den Leistungsverbrauch zu reduzieren, ohne den Gegendruck an den Befehlsreihen zu erhöhen. Der zentrale Controller 110 oder der Kanal-Controller 112 können die Taktfrequenz der NVM-Schnittstelle 150 halten, wenn die Taktfrequenz des zentralen Controllers 110 und/oder die Taktfrequenz jedes der Kanal-Controller 112 angepasst (z.B. reduziert) wird, so dass Speicherbefehle und/oder Daten sich über die Speicherschnittstelle 150 bewegen können, ohne langsamer zu werden.
-
4 ist ein Ablaufdiagramm, das einen Prozess 400 zum Steuern der Taktfrequenz des zentralen Controllers 110 gemäß einiger Ausführungsformen veranschaulicht. Im Block 402 bestimmt der zentrale Controller 110 die Befehlsreihenwerte aller Befehlsreihen in den Kanal-Controllern 112. So kann z.B. der DFS-Steuerblock 116 Backlog-Information von der Befehlsreihe 134 jedes Kanal-Controllers empfangen. Die Backlog-Information zeigt den Wert oder die Menge an Speicherbefehlen an, die in der Befehlsreihe 134 hängig sind. Im Entscheidungsblock 404 bestimmt der zentrale Controller, ob alle Reihenwerte (z.B. kombinierte Reihenwerte) innerhalb einer Schwellentotzone liegen. Wenn z.B. alle Reihenwerte innerhalb der Schwellentotzone liegen (d.h. dem „Ja“-Weg), so ändert der zentrale Controller 110 die Taktfrequenz des zentralen Controllers 110 nicht. Die Schwellentotzone kann ein vorbestimmter Bereich von Reihenwerten sein, in welchem der zentrale Controller seine aktuelle Taktfrequenz halten und einen vorbestimmten (z.B. minimalen) Speicherbefehl-Verarbeitungsdurchsatz unter den Kanal-Controllern erreichen kann. In einigen Beispielen können verschiedene Kanal-Controller dieselben oder verschiedene Schwellentotzonen für ihre jeweiligen Befehlsreihen aufweisen.
-
Im Entscheidungsblock 406, wenn ein oder mehrere Reihenwerte nicht innerhalb der Schwellentotzone liegen, bestimmt der zentrale Controller 110, ob alle Reihenwerte über einer vorbestimmten Schwelle liegen. Dieselbe Schwelle oder verschiedene entsprechende Schwellen können für die Kanal-Controller 112 verwendet werden. Liegen alle Reihenwerte über der vorbestimmten Schwelle, so kann dies anzeigen, dass alle Befehlsreihen Gegendruck aufweisen. Gibt es von einem der Kanal-Controller Gegendruck, ob nun bei Drosselung oder nicht, so bedeutet dies, dass die Kanal-Controller nicht Schritt halten können und somit der zentrale Controller 110 sich verlangsamen kann und noch immer mit den Kanal-Controllern 112 mithalten kann. Im Block 408 bestimmt der zentrale Controller 110, ob seine Taktfrequenz über einer minimalen Frequenz liegt. Liegt die Taktfrequenz des zentralen Controllers über der Mindestfrequenz so kann im Block 410 der zentrale Controller 110 den DFS-Steuerblock 116 verwenden, um die Taktfrequenz des zentralen Controllers zu reduzieren. So kann z.B. der DFS-Steuerblock 116 ein Frequenzskalierungsfaktorsignal an den Takterzeuger 114 ausgeben, um seine Taktfrequenz zu reduzieren.
-
Im Block 412, wenn nicht alle Reihenwerte über der Schwelle liegen, bestimmt der zentrale Controller 110, ob seine Taktfrequenz unter einer maximalen Frequenz liegt. Liegt die Taktfrequenz des zentralen Controllers unter der Maximalfrequenz, so kann im Block 414 der zentrale Controller 110 den DFS-Steuerblock 116 verwenden, um die Taktfrequenz des zentralen Controllers zu erhöhen.
-
Die 5 und 6 sind Ablaufdiagramme, die Steuerprozesse 500 und 600 zum Steuern der Taktfrequenz der Kanal-Controller 112 gemäß einiger Ausführungsformen veranschaulichen. So kann z.B. der zentrale Controller 110 den Prozess 500 durchführen, um die Taktfrequenz von N Kanal-Controllern 112 zu steuern, nachdem die Taktfrequenz des zentralen Controllers 110 unter Verwendung des Prozesses 400 der 4 angepasst wurde. Mit Verweis auf 5 kann im Block 416 der zentrale Controller 110 die Taktfrequenz eines ersten Kanal-Controllers 112 gemäß einem in 6 veranschaulichten Algorithmus steuern. Mit Verweis auf 6 bestimmt im Entscheidungsblock 602 der zentrale Controller 110, ob der Befehlsreihenwert innerhalb der Schwellentotzone liegt. Liegt der Reihenwert z.B. innerhalb der Schwellentotzone (d.h. dem „Ja“-Pfad folgend), so ändert der zentrale Controller 110 die Taktfrequenz dieses bestimmten Kanal-Controllers 112 nicht. Die Schwellentotzone kann ein vorbestimmter Bereich von Reihenwerten sein, in welchem der Kanal-Controller seine aktuelle Taktfrequenz halten kann, während er den erwünschten Speicherbefehl-Verarbeitungsdurchsatz bereitstellt. In einigen Beispielen können verschiedene Kanal-Controller dieselbe oder verschiedene Schwellentotzonen für ihre jeweiligen Befehlsreihen aufweisen.
-
Im Entscheidungsblock 604, wenn der Reihenwert nicht innerhalb der Schwellentotzone liegt, bestimmt der zentrale Controller 110, ob der Reihenwert über einer vorbestimmten Schwelle liegt. Es können dieselbe Schwelle oder verschiedene jeweilige Schwellen für verschiedene Kanal-Controller 112 verwendet werden. Liegt der Reihenwert über der vorbestimmten Schwelle, so kann dies anzeigen, dass die Befehlsreihe / der Kanal-Controller einen hohen Gegendruck hat. In diesem Fall (d.h. folgend dem „Ja“-Weg) bestimmt im Entscheidungsblock 606 der zentrale Controller 110, ob die Taktfrequenz des Kanal-Controllers unter einer maximalen Frequenz liegt. Liegt die Taktfrequenz des Kanal-Controllers unter der maximalen Frequenz, so kann im Block 608 der zentrale Controller 110 den DFS-Steuerblock 116 verwenden, um die Taktfrequenz des Kanal-Controllers zu erhöhen. Das Erhöhen der Taktfrequenz kann den Speicherbefehl-Verarbeitungsdurchsatz erhöhen, um den Gegendruck der Befehlsreihe zu reduzieren.
-
Im Entscheidungsblock 610, wenn der Reihenwert über der vorbestimmten Schwelle liegt, bestimmt der zentrale Controller 110, ob die Taktfrequenz des Kanal-Controllers über einer Mindestfrequenz liegt. Liegt die Taktfrequenz des Kanal-Controllers über der Mindestfrequenz, so kann im Block 612 der zentrale Controller 110 den DFS-Steuerblock 116 nützen, um die Taktfrequenz des Kanal-Controllers zu reduzieren. So kann z.B. der DFS-Steuerblock 116 ein Frequenzskalierungsfaktorsignal an den Takterzeuger 132 ausgeben, um die Taktfrequenz des Kanal-Controllers 112 anzupassen (z.B. zu reduzieren oder zu erhöhen). Das Reduzieren der Taktfrequenz kann den Leistungsverbrauch des Kanal-Controllers reduzieren.
-
Der zentrale Controller 110 kann den oben beschriebenen und in 6 veranschaulichten Algorithmus wiederholen, um die Taktfrequenz jedes Kanal-Controllers 112 zu steuern. Mit Verweis nun wieder auf 5 kann im Block 418 der zentrale Controller 110 denselben Algorithmus verwenden, um die Taktfrequenz eines zweiten Kanal-Controllers 112 zu steuern. Im Anschluss daran kann im Block 420 der zentrale Controller 110 den in 6 veranschaulichten Algorithmus verwenden, um die Taktfrequenz des N-ten Kanal-Controllers 112 zu steuern.
-
Wie oben beschrieben ist, werden die Taktfrequenzen des zentralen Controllers 110 und der Kanal-Controller 112 dynamisch in Reaktion auf den Gegendruck der Befehlsreihen gesteuert oder angepasst. Gibt es Gegendruck von einer der Kanal-Controller, bei Drosselung oder nicht, so bedeutet dies, dass der/die Kanal-Controller 112 nicht mithalten können und sich somit der zentrale Controller 110 verlangsamen kann und immer noch mit dem/den Kanal-Controller/n 112 mithalten kann. Wird eine Drosselung verwendet, so kann die in dem zentralen Controller eingesparte Leistung z.B. von den Kanal-Controllern 112 und/oder dem NVM 130 rückgewonnen werden, was in einer reduzierten Drosselung und erhöhter Arbeitsleistung für denselben Leistungszug resultiert. Wird keine Drosselung verwendet, kann das Gesamtsystem reduziert werden, was in einem niedrigeren Leistungsverbrauch insgesamt des Systems für dieselbe Arbeitsleistung resultiert.
-
In einigen Ausführungsformen kann jeder Kanal-Controller 112 in einer Anzahl von Leitungsstufen, einschließlich NVM 130, implementiert sein. Die Taktfrequenzen der Leitungsstufen können einzeln angepasst werden, um die Leitungsstufen im Durchsatz ausgeglichen zu halten. Wenn z.B. eine gewisse Menge an Leistung (z.B. Leistungs-Credits) für die Leitungsstufen verfügbar ist, dies aber nicht ausreichend ist, um alle Leitungsstufen gleichzeitig mit der festgelegten Frequenz zu betreiben, kann der zentrale Controller 110 die Taktfrequenz jeder Leitungsstufe oder Komponente anpassen, um dynamisch die verfügbare Leistung aufzuteilen, während sichergestellt wird, dass jede Stufe eine Mindestarbeitsleistung halten kann. Wenn z.B. aktuelle NVM-Operationen (z.B. Lesen, Schreiben, Löschen) abgeschlossen sind, kann sich die Menge an verfügbarer Leistung erhöhen und eine oder mehrere Leitungsstufen können ihre Geschwindigkeit auf eine höhere Taktfrequenz erhöhen. In einem anderen Beispiel, wenn „überschüssige“ Leistung innerhalb der Leitungsstufe gegeben ist und NVM-Operationen noch hängig sind, bedeutet dies, dass der Durchsatz der Leitungsstufen höher als der NVM ist. In diesem Fall können eine oder mehrere Leitungsstufen verlangsamt werden, um die Arbeitsleistung zwischen NVM und Leitung auszugleichen.
-
In einigen Ausführungsformen kann eine Datenspeichervorrichtung verschiedene Mittel umfassen, um die verschiedenen Funktionen und Verfahren, die obig in Bezug auf die 1-6 beschrieben sind, durchzuführen. So kann die Datenspeichervorrichtung z.B. eine Vielzahl von ersten Mitteln umfassen. Jedes erste Mittel kann die Befehlsreihe 134 sein, die Speicherbefehle für einen Satz von NVM-Vorrichtungen 130 speichern und Backlog-Information über die hängigen Speicherbefehle bereitstellen kann. Die Datenspeichervorrichtung kann ein zweites Mittel umfassen, um die Speicherbefehle an die Vielzahl von ersten Mitteln auszugeben und um die Backlog-Information zu empfangen. So kann das zweite Mittel z.B. der Speicherbefehlprozessor 120 sein. Die Datenspeichervorrichtung kann ein drittes Mittel umfassen, um einen Speicherbefehl-Verarbeitungsdurchsatz des zweiten Mittels und der Vielzahl von ersten Mitteln auf der Grundlage der Backlog-Information anzupassen, so dass die hängigen Speicherbefehle in jedem ersten Mittel unter einem vorbestimmten Schwellenwert liegen. So kann das dritte Mittel z.B. der DFS-Steuerblock (dynamische Frequenzskalierung, DFS) 116 sein.
-
In einer Ausführungsform kann der Prozess die Abfolge von Aktionen in einer anderen Reihenfolge durchführen. In einer anderen Ausführungsform kann der Prozess eine oder mehrere der Aktionen auslassen. In anderen Ausführungsformen werden eine oder mehrere der Aktionen gleichzeitig durchgeführt werden. In einigen Ausführungsformen können zusätzliche Aktionen durchgeführt werden.
-
Während die obige Beschreibung viele spezifische Ausführungsformen der Erfindung enthält, sollten diese nicht als Einschränkungen auf den Umfang der Erfindung ausgelegt werden sondern vielmehr als Beispiele für spezifische Ausführungsformen davon. Demgemäß sollte der Umfang der Erfindung nicht durch die veranschaulichten Ausführungsformen sondern durch die angehängten Ansprüche und ihre Äquivalente bestimmt werden.
-
Die verschiedenen Merkmale und Prozesse, die oben beschrieben sind, können unabhängig voneinander verwendet werden, oder sie können auf verschiedene Weise kombiniert werden. Alle möglichen Kombinationen und Teilkombinationen sollen innerhalb des Umfangs dieser Offenbarung liegen. Zusätzlich dazu können gewisse Verfahrens-, Ereignis-, Zustands- oder Prozessblöcke in einigen Implementierungen weggelassen werden. Die hierin beschriebenen Verfahren und Prozesse sollen auch nicht auf eine bestimmte Abfolge beschränkt sein, und die damit zusammenhängenden Blöcke oder Zustände können auch in anderen Abfolgen, die geeignet sind, durchgeführt werden. So können z.B. die beschriebenen Aufgaben oder Ereignisse in einer anderen Reihenfolge als jener, die spezifisch geoffenbart ist, durchgeführt werden, oder mehrere können in einem einzelnen Block oder Zustand kombiniert sein. Die beispielhaften Aufgaben oder Ereignisse können seriell, parallel oder in einer anderen geeigneten Weise durchgeführt werden. Aufgaben oder Ereignisse können zu den geoffenbarten beispielhaften Ausführungsformen hinzugefügt oder davon entfernt werden. Die beispielhaften Systeme und Komponenten, die hierin beschrieben sind, können anders als beschrieben ausgelegt sein. So können z.B. Elemente zu den geoffenbarten beispielhaften Ausführungsformen hinzugefügt, davon entfernt oder neu angeordnet werden.