DE102015117500A1 - Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe - Google Patents
Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe Download PDFInfo
- Publication number
- DE102015117500A1 DE102015117500A1 DE102015117500.2A DE102015117500A DE102015117500A1 DE 102015117500 A1 DE102015117500 A1 DE 102015117500A1 DE 102015117500 A DE102015117500 A DE 102015117500A DE 102015117500 A1 DE102015117500 A1 DE 102015117500A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- workload
- write
- host
- write cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 claims abstract description 180
- 230000000737 periodic effect Effects 0.000 claims abstract description 22
- 230000015654 memory Effects 0.000 claims description 116
- 238000011010 flushing procedure Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 19
- 238000013500 data storage Methods 0.000 description 11
- 239000010813 municipal solid waste Substances 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006854 communication Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 230000009850 completed effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000001976 improved effect Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000414 obstructive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000001603 reducing effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000009183 running Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
- TECHNISCHES GEBIET
- Die offenbarten Ausführungsformen beziehen sich generell auf Speichersysteme und besonders auf die Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe in einer Speichervorrichtung (z. B. umfassend eine oder mehrere Flash-Speichervorrichtungen).
- HINTERGRUND
- Halbleiter-Speichervorrichtungen, einschließlich Flash-Speicher, verwenden normalerweise Speicherzellen zum Speichern von Daten als einen elektrischen Wert, wie z. B. eine elektrische Ladung oder Spannung. Eine Flash-Speicherzelle enthält beispielsweise einen einzigen Transistor mit einem Floating-Gate (nicht angeschlossene Steuerelektrode), der zum Speichern einer Ladung verwendet wird, die einem Datenwert entspricht. Ein Flash Speicher ist eine nichtflüchtige Datenspeichervorrichtung, die elektrisch gelöscht und umprogrammiert werden kann. Noch allgemeiner hält ein nichtflüchtiger Speicher (z. B. Flash-Speicher, sowie andere Arten implementierter, nichtflüchtiger Speicher, die eine Vielzahl von Technologien einsetzen) die gespeicherten Informationen auch dann, wenn er nicht mit Strom versorgt wird, im Gegensatz zu einem flüchtigen Speicher, der zum Halten der gespeicherten Informationen Strom benötigt.
- Da bestimmte Speicherbefehle (z. B. Lese- und/oder Schreibbefehle) innerhalb eines vordefinierten Zeitraums vervollständigt werden müssen (z. B. um Qualifizierungsanforderungen zu erfüllen), ist es wichtig, die Speichermanagementprozesse zu optimieren, um die Leistung von Speichervorrichtungen zu verbessern.
- ZUSAMMENFASSUNG
- Mehrere Ausführungsformen der Systeme, Verfahren und Vorrichtungen innerhalb des Geltungsbereichs der angehängten Ansprüche haben jeweils mehrere Aspekte, wovon nicht ein einziger allein für die hierin beschriebenen Attribute verantwortlich ist. Ohne den Geltungsbereich der angehängten Ansprüche einzuschränken, nach Berücksichtigung dieser Offenbarung und besonders nach Berücksichtigung des Abschnitts mit der Überschrift „Detaillierte Beschreibung” versteht man, wie die Aspekte der verschiedenen Ausführungsformen verwendet werden, um eine Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe zu ermöglichen. In einem Aspekt wird gemäß einer Bestimmung, dass eine Arbeitslast eine nichtqualifizierte Arbeitslast ist, eine regelmäßige Leerung eines Schreibcache geplant, und gemäß der Bestimmung, dass Arbeitslast eine qualifizierte Arbeitslast ist, wird eine optimierte Leerung des Schreibcaches geplant.
- KURZBESCHREIBUNG DER ZEICHNUNGEN
- Damit diese Offenbarung detaillierter verstanden werden kann, kann unter Bezugnahme auf die Merkmale verschiedener Ausführungsformen, wovon einige in den angehängten Zeichnungen dargestellt werden, eine eingehende Beschreibung erhalten werden. Die angehängten Zeichnungen stellen allerdings lediglich sachdienliche Merkmale dieser Offenbarung dar und sind daher nicht als einschränkend zu betrachten, damit die Beschreibung andere tatsächliche Merkmale zulassen kann.
-
-
-
- Gemäß der üblichen Praxis sind die in den Zeichnungen dargestellten Merkmale nicht unbedingt maßstabsgerecht. Dementsprechend können die Abmessungen der verschiedenen Merkmale zur Klarheit beliebig vergrößert oder verkleinert sein. Außerdem ist es möglich, dass bestimmte Zeichnungen nicht alle Komponenten eines gegebenen Systems, Verfahrens oder einer Vorrichtung darstellen. Abschließend können gleiche Bezugszahlen verwendet werden, um in der gesamten Spezifikation und in den Zeichnungen gleiche Merkmale zu bezeichnen.
- DETAILLIERTE BESCHREIBUNG
- Die hierin beschriebenen verschiedenen Ausführungsformen enthalten Systeme, Verfahren, und/oder Vorrichtungen, um eine Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe zu ermöglichen. Einige Ausführungsformen enthalten Systeme, Verfahren und/oder Vorrichtungen zum Planen einer regelmäßigen Leerung eines Schreibcaches gemäß einer Bestimmung, dass eine Arbeitslast eine nichtqualifizierte Arbeitslast ist, und zum Planen einer optimierten Leerung des Schreibcaches gemäß einer Bestimmung, dass Arbeitslast eine qualifizierte Arbeitslast ist.
- (A1) Genauer enthalten einige Ausführungsformen ein Managementverfahren eines Speichersystems. In einigen Ausführungsformen enthält das Verfahren (1) Unterhalten eines Schreibcaches für die Schreibbefehle von einem Host, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, die Speichervorrichtung enthaltend eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle vom dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind, (2) Bestimmen einer Arbeitslast gemäß den Befehlen vom Host, mit dem die Speichervorrichtung operativ verbunden ist, (3) gemäß einer Bestimmung, dass eine Arbeitslast eine nichtqualifizierte Arbeitslast ist, Planen einer regelmäßigen Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält, und (4) gemäß einer Bestimmung, dass Arbeitslast eine qualifizierte Arbeitslast ist, Planen einer optimierten Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist.
- (A2) In einigen Ausführungsformen des Verfahrens von A1 enthält die regelmäßige Leerung das Ansammeln ausreichender Daten von Schreibbefehlen, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben.
- (A3) In einigen Ausführungsformen des Verfahren von einem von A1 bis A2 enthält das Verfahren nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, ferner das Ausführen von einer oder mehreren regelmäßigen Leerungen, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält.
- (A4) In einigen Ausführungsformen des Verfahrens von A3 enthält das Ausführen der einen oder mehreren regelmäßigen Leerungen das parallele Ausführen einer Vielzahl von regelmäßigen Leerungen.
- (A5) In einigen Ausführungsformen des Verfahrens von einem von A1 bis A4 enthält das Verfahren gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, ferner das Leeren des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
- (A6) In einigen Ausführungsformen des Verfahrens von einem von A1 bis A4 enthält das Verfahren gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, ferner das Leeren des ganzzahligen Vielfachen anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
- (A7) In einigen Ausführungsformen des Verfahrens von einem von A1 bis A6 umfasst die Speichervorrichtung ein oder mehrere Flash-Speichervorrichtungen.
- (A8) In einem anderen Aspekt enthält eine Speichervorrichtung (1) einen nichtflüchtigen Speicher (z. B. umfassend eine oder mehrere nichtflüchtige Speichervorrichtungen, wie z. B. Flash-Speichervorrichtungen), (2) einen oder mehrere Prozessoren, und (3) einen Controller-Speicher (z. B. ein nichtflüchtiger Speicher oder flüchtiger Speicher in oder verbunden mit dem Controller), der ein oder mehrere Programme speichert, die bei Ausführung durch den einen oder mehrere Prozessoren die Speichervorrichtung veranlassen, das Verhalten von jedem der hierin beschriebenen Verfahren A1 bis A7 auszuführen oder zu steuern.
- (A10) In noch einem anderen Aspekt wird jedes der oben beschriebenen Verfahren A1 bis A7 durch eine Speichervorrichtung ausgeführt, die über Mittel zum Ausführen jedes der hierin beschriebenen Verfahren verfügt.
- (A12) In noch einem anderen Aspekt enthält ein Speichersystem (1) ein Speichermedium (z. B. umfassend eine oder mehrere nichtflüchtige Speichervorrichtungen, wie z. B. Flash-Speichervorrichtungen), (2) einen oder mehrere Prozessoren und (3) Speicher (z. B. nichtflüchtiger Speicher oder flüchtiger Speicher im Speichersystem), der ein oder mehrere Programme speichert, die bei Ausführung durch den einen oder mehrere Prozessoren das Speichersystem veranlassen, das Verhalten von jedem der hierin beschriebenen Verfahren A1 bis A7 auszuführen oder zu steuern.
- (A13) In noch einem anderen Aspekt enthalten einige Ausführungsformen ein nichttransitorisches computerlesbares Speichermedium, das ein oder mehrere Programme speichert, die zur Ausführung des einen oder der mehreren Programme, die Anweisungen zum Ausführen jedes der hierin beschriebenen Verfahren enthalten, durch einen oder mehrere Prozessoren einer Speichervorrichtung konfiguriert sind.
- Hierin werden zahlreiche Details beschrieben, damit ein eingehendes Verständnis der beispielhaften Ausführungsformen, die in den begleitenden Zeichnungen dargestellt werden, zu ermöglichen. Allerdings können einige Ausführungsformen ohne viele der spezifischen Details genutzt werden, und der Geltungsbereich der Ansprüche ist nur durch jene Merkmale und Aspekte eingeschränkt, die in den Ansprüchen angegeben werden. Des Weiteren wurden gut bekannte Verfahren, Komponenten und Schaltkreise nicht ausführlich beschrieben, um die sachbezogenen Aspekte der hierin beschriebenen Ausführungsformen nicht unnötig zu verschleiern.
- Datenspeichersysteme, einschließlich der unten beschriebenen System, setzen eine Vielzahl von Techniken ein, um einen Datenverlust zu vermeiden, der durch eine Vielzahl von Fehlermechanismen verursacht wird, einschließlich eines Fehlers des Speichermediums, Kommunikationsfehler und Fehler auf System- und Untersystemebene. Ein gemeinsames Merkmal dieser Mechanismen ist die Verwendung von Datenredundanz zum Schutz der Daten, um tatsächliche und potenzielle Datenfehler auszugleichen (z. B. Medienfehler, verlorene Daten, Übertragungsfehler, unzugängliche Daten usw.). Eine Klasse von Redundanzmechanismen ist bekannt als Fehlerkorrekturcodes (ECCs). Zahlreiche Arten von Fehlerkorrekturcodes sind gut bekannt (z. B. BCH, LDPC, Reed-Solomon usw.), wie auch zahlreiche Schemata zu deren Speicherung mit oder in Verbindung mit den Daten, die geschützt werden. Eine andere Klasse von Redundanzmechanismen sind Löschcodes (z. B. Pyramid, Fountain, teilweises MDS, lokal reparierbar, einfach regenerierend usw.)
- Eine andere Art bzw. Ebene von Redundanzmechanismen wird normalerweise als RAID bezeichnet (Redundant Array of Independent Disks), selbst wenn das Speichermedium keine „Festplatten” im herkömmlichen Sinne sind. Es gibt zahlreiche Formen von RAID oder RAID-Schemata, die einen unterschiedlichen Datenschutzgrad bieten (z. B. RAID-1, RAID-5, RAID-6, RAID-10 usw.). Normalerweise werden in Systemen, die RAID verwenden, „Streifen” von Daten, die an vielen verschiedenen Speicherorten gespeichert sind, als Satz behandelt und mit ausreichend redundanten Daten gespeichert, dass alle Daten in einem Streifen, die bei einem teilweisen oder kompletten Ausfall eines der Speicherorte verlorengegangen sind, anhand der anderen Daten im Streifen, die möglicherweise die redundanten Daten enthalten sind, wiederhergestellt werden.
-
100 gemäß einiger Ausführungsformen darstellt. Während einige beispielhafte Merkmale dargestellt werden, wurden verschiedene andere Merkmale aus Gründen der Kürze, und um sachbezogene Aspekte der hierin offenbarten, beispielhaften Ausführungsformen nicht zu verschleiern, nicht dargestellt. As nichteinschränkendes Beispiel enthält ein Datenspeichersystem100 demensprechend eine Speichervorrichtung120 (also manchmal bezeichnet als eine Informationspeichervorrichtung, oder eine Datenspeichervorrichtung, oder eine Speichervorrichtung), die einen Speicher-Controller124 , einen oder mehrere Controller für nichtflüchtige Speicher (NVM)130 , wie z. B. Flash-Controller, und einen nichtflüchtigen Speicher (z. B. eine oder mehrere NVM-Vorrichtungen140 ,142 , wie z. B. eine oder mehrere Flash-Speichervorrichtungen) enthält, und die in Verbindung mit einem Rechnersystem110 verwendet wird. In einigen Ausführungsformen enthält die Speichervorrichtung120 eine einzige NVM-Vorrichtung, während die Speichervorrichtung120 in anderen Ausführungsformen eine Vielzahl von NVM-Vorrichtungen enthält. In einigen Ausführungsformen enthalten die NVM-Vorrichtungen140 ,142 einen Flash-Speicher vom Typ NAND oder einen Flash-Speicher vom Typ NOR. Ferner sind die NVM-Controller130 in einigen Ausführungsformen Controller für Solid-State-Laufwerk (SSD). Allerdings können gemäß den Aspekten einer großen Vielzahl von Ausführungsformen andere Arten von Speichermedien enthalten sein (z. B. PCRAM, ReRAM, STT-RAM usw.). In einigen Ausführungsformen enthält eine Flash-Speichervorrichtung einen oder mehrere Flash-Speicher-Chip, ein oder mehrere Flash-Speicherpakete, einen oder mehrere Flash-Speicherkanäle oder Ähnliches. In einigen Ausführungsformen kann ein Datenspeichersystem100 ein oder mehrere Speichervorrichtungen120s enthalten. - Ein Rechnersystem
110 ist mit dem Speicher-Controller124 über Datenverbindungen101 verbunden. In einigen Ausführungsformen enthält das Rechnersystem110 allerdings einen Speicher-Controller124 , oder einen Teil des Speicher-Controllers124 als eine Komponente und/oder ein Untersystem. Beispielsweise werden in einigen Ausführungsformen einige oder alle der Funktionen des Speicher-Controllers124 durch die ausgeführte Software auf dem Rechnersystem110 implementiert. Das Rechnersystem110 kann jede geeignete Rechnervorrichtung sein, wie z. B. ein Computer, ein Laptop-Computer, ein Tablet-Gerät, ein Netbook, ein Internet Kiosk, ein persönlicher digitaler Assistent (PDA), ein Mobiltelefon, ein Smartphone, eine Spielevorrichtung, ein Computerserver oder jede andere EDV-Vorrichtung. Das Rechnersystem110 wird manchmal als ein Host, Host-System, Client, oder Client-System bezeichnet. In einigen Ausführungsformen ist das Rechnersystem110 ein Serversystem, wie z. B. ein Serversystem in einem Rechenzentrum. In einigen Ausführungsformen enthält das Rechnersystem110 einen oder mehrere Prozessoren, eine oder mehrere Speicherarten, einen Bildschirm und/oder andere Benutzeroberflächenkomponenten, wie z. B. eine Tastatur, einen Touchscreen-Bildschirm, eine Maus, ein Trackpad, eine Digitalkamera und/oder jede Anzahl von ergänzenden Vorrichtungen, um Funktionen hinzuzufügen. In einigen Ausführungsformen hat das Rechnersystem110 keinen Bildschirm und andere Benutzeroberflächenkomponenten. - Der eine oder die mehreren NVM-Controller
130 sind mit dem Speicher-Controller124 über Verbindungen103 verbunden. Die Verbindungen103 werden manchmal als Datenverbindungen bezeichnet, aber normalerweise übertragen sie zusätzlich zu den Daten Befehle, und optional übertragen sie Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu den Datenwerten, die in den NVM-Vorrichtungen140 ,142 gespeichert werden sollen, und Datenwerte, die aus den NVM-Vorrichtungen140 ,142 ausgelesen werden. In einigen Ausführungsformen jedoch sind der Speicher-Controller124 , der eine oder die mehreren NVM-Controller130 und die NVM-Vorrichtungen140 ,142 in derselben Vorrichtung als Komponenten davon enthalten (d. h. eine integrierte Vorrichtung). In einigen Ausführungsformen sind ferner der Speicher-Controller124 , der eine oder die mehreren NVM-Controller130 und die NVM-Vorrichtungen140 ,142 in ein Host-Gerät (z. B. Rechnersystem110 ) eingebettet, wie z. B. ein Mobilgerät, Tablet, anderer Rechner oder rechnergesteuerte Vorrichtung, und die hierin beschriebenen Verfahren werden zumindest teilweise durch den eingebetteten Speicher-Controller ausgeführt. - In einigen Ausführungsformen enthält die Speichervorrichtung
120 NVM-Vorrichtungen140 ,142 wie z. B. Flash-Speichervorrichtungen (z. B. NVM-Vorrichtungen140-1 bis140-n und NVM-Vorrichtungen142-1 bis142-k ) und die NVM-Controller130 (z. B. NVM-Controller130-1 bis130-m ). Anders gesehen enthält die Speichervorrichtung120 m Speicherkanäle, wovon jeder einen NVM-Controller130 und eine Reihe von NVM-Vorrichtungen140 oder142 hat, die mit dem NVM-Controller130 verbunden sind, wobei m eine Ganzzahl größer als eins ist. In einigen Ausführungsformen jedoch teilen sich zwei oder mehr Speicherkanäle einen NVM-Controller130 . In beiden Beispielen hat jeder Speicherkanal seinen eigen unterscheidenden Satz von NVM-Vorrichtungen140 oder142 . In einem nicht einschränkenden Beispiel ist die Anzahl der Speicherkanäle in einer typischen Speichervorrichtung 8, 16 oder 32. In einem anderen nicht einschränkenden Beispiel ist die Anzahl der NVM-Vorrichtungen140 oder142 pro Speicherkanal normalerweise 8, 16, 32 oder 64. Ferner ist in einigen Ausführungsformen die Anzahl der NVM-Vorrichtungen140 /142 bei verschiedenen Speicherkanälen unterschiedlich. - In einigen Ausführungsformen enthält jeder NVM-Controller der NVM-Controller
130 eine oder mehrere Prozessoreinheiten (manchmal auch bezeichnet als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller), die dazu konfiguriert sind, Anweisungen in einem oder mehreren Programmen auszuführen (z. B. in den NVM-Controllern130 ). In einigen Ausführungsformen werden der eine oder die mehreren Prozessoren von einer oder mehreren Komponenten innerhalb und in einigen Fällen über die Funktion der NVM-Controller130 hinaus geteilt. Die NVM-Vorrichtungen140 ,142 werden mit den NVM-Controllern130 über Verbindungen verbunden, die normalerweise zusätzlich zu den Daten Befehle übertragen, und optional Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu den Datenwerten übertragen, die in den NVM-Vorrichtungen140 ,142 gespeichert werden sollen, sowie Datenwerte, die aus den NVM-Vorrichtungen140 ,142 ausgelesen werden. Die NVM-Vorrichtungen140 ,142 jede Anzahl (d. h. eine oder mehrere) von Speichervorrichtungen enthalten, einschließlich und ohne Einschränkung nichtflüchtige Halbleiter-Speichervorrichtungen, wie z. B. Flash-Speichervorrichtung(en). - Die Flash-Speichervorrichtung(en) (z. B. NVM-Vorrichtungen
140 ,142 ) können beispielsweise für Unternehmensspeicher, geeignet für Anwendungen wie z. B. Cloud Computing, für Datenbankanwendungen, Primär- und/oder Sekundärspeicherung, oder zum Cachen gespeicherter (oder zu speichernder Daten) in der Sekundärspeicherung, wie z. B. Festplatten, konfiguriert werden. Zusätzlich und/oder alternativ können die Flash-Speichervorrichtung(en) (z. B. NVM-Vorrichtungen140 ,142 ) auch für kleinere Anwendungen, wie z. B. persönliche Flash-Laufwerk- oder Festplatten-Ersetzungen für PCs, Laptops und Tablets konfiguriert werden. Obwohl die Flash-Speichervorrichtungen und Flash-Controller hier als ein Beispiel verwendet werden, enthält die Speichervorrichtung120 in einigen Ausführungsformen andere nichtflüchtige Speichervorrichtung(en) und entsprechende nichtflüchtige Speicher-Controller. - In einigen Ausführungsformen sind die NVM-Vorrichtungen
140 ,142 in eine Anzahl von adressierbaren und individuell auswählbaren Blöcken aufgeteilt. In einigen Ausführungsformen sind die individuell auswählbaren Blöcke die löschbaren Einheiten der kleinsten Größe in einer Flash-Speichervorrichtung. In anderen Worten gesagt, jeder Block enthält die kleinste Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können. Jeder Block ist normalerweise ferner in eine Vielzahl von Seiten und/oder Wortzeilen unterteilt, wobei jede Seite oder Wortzeile normalerweise eine Dateninstanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Ausführungsformen (z. B. bei Verwendung einiger Arten von Flash-Speichern), ist die kleinste individuell zugängliche Einheit eines Datensatzes jedoch ein Sektor, was die Untereinheit einer Seite ist. Das heißt, ein Block enthält eine Vielzahl von Sektoren und jeder Sektor ist die kleinste Dateneinheit zum Auslesen von Daten aus der Flash-Speichervorrichtung. - Während, wie oben gesagt, die Datenspeicherdichten von nichtflüchtigen Halbleiter-Speichervorrichtungen generell größer werden, ist ein Nachteil der zunehmenden Speicherdichte, dass die gespeicherten Daten mehr dazu neigen, falsch gespeichert und/oder gelesen zu werden. In einigen Ausführungsformen kann eine Fehlerkontrollcodierung verwendet werden, um die Anzahl von unkorrigierbaren Fehlern zu begrenzen, die durch elektrische Schwankungen, Defekte im Speichermedium, Betriebsbedingungen, die Vorgeschichte der Vorrichtung, Schreib-/Leseschaltkreise usw., oder eine Kombination dieser und anderer Faktoren eingeleitet werden.
- In einigen Ausführungsformen enthält der Speicher-Controller
124 ein Managementmodul121-1 , eine Host-Schnittstelle129 , eine Speichermedium-Schnittstelle (E/A)128 und Zusatzmodul(e)125 . Der Speicher-Controller124 kann mehrere zusätzliche Merkmale enthalten, die aus Gründen der Kürze, und um sachbezogene Aspekte der hierin offenbarten, beispielhaften Ausführungsformen nicht zu verschleiern, nicht dargestellt sind, und eine verschiedene Anordnung der Merkmale kann möglich sein. - Die Host-Schnittstelle
129 stellt eine Schnittstelle zum Rechnersystem110 über Datenverbindungen101 bereit. Ähnlich stellt die Speichermedium-Schnittstelle128 eine Schnittstelle zu den NVM-Controllern130 über Verbindungen103 bereit. In einigen Ausführungsformen enthält die Speichermedium-Schnittstelle128 Lese- und Schreibschaltkreise, einschließlich der Schaltkreise, die den NVM-Controllern130 Auslesesignale bereitstellen können (z. B. Auslesen von Schwellenspannungen für Flash-Speicher vom Typ NAND). In einigen Ausführungsformen sind die Verbindungen101 und Verbindungen103 als ein Kommunikationsmedium implementiert, über das Befehle und Daten unter Verwendung eines Protokolls, wie z. B. DDR3, SCSI, SATA, SAS oder Ähnliche mitgeteilt werden. In einigen Ausführungsformen enthält der Speicher-Controller124 eine oder mehrere Prozessoreinheiten (manchmal auch bezeichnet als CPU oder Prozessoren oder Mikroprozessoren oder Mikrocontroller), die zur Ausführung von Anweisungen in einem oder mehreren Programmen (z. B. in Speicher-Controller124 ) konfiguriert sind. In einigen Ausführungsformen werden der eine oder die mehreren Prozessoren von einer oder mehrere Komponenten innerhalb und in einigen Fällen über die Funktion des NVM-Controllers124 hinaus geteilt. - In einigen Ausführungsformen enthält das Managementmodul
121-1 ein oder mehrere Prozessoreinheiten (CPUs, manchmal auch bezeichnet als Prozessoren oder Mikroprozessoren oder Mikrocontroller)122 , die zur Ausführung von Anweisungen in einem oder mehreren Programmen (z. B. im Managementmodul121-1 ) konfiguriert sind. In einigen Ausführungsformen werden die eine oder die mehreren CPUs122 von einer oder mehreren Komponenten innerhalb und in einigen Fällen über die Funktion des NVM-Controllers124 hinaus geteilt. Das Managementmodul121-1 ist mit der Host-Schnittstelle129 , dem/den Zusatzmodul(en)125 und der Speichermedium-Schnittstelle128 verbunden, um den Betrieb dieser Komponenten zu koordinieren. In einigen Ausführungsformen sind ein oder mehrere Module des Managementmoduls121-1 im Managementmodul121-2 des Rechnersystems110 implementiert. In einigen Ausführungsformen sind ein oder mehrere Prozessoren des Rechnersystems110 (nicht gezeigt) dazu konfiguriert, die Anweisungen in einem oder mehreren Programmen auszuführen (z. B. in Managementmodul121-2 ). Das Managementmodul121-2 ist mit der Speichervorrichtung120 verbunden, um den Betrieb der Speichervorrichtung120 zu verwalten. - Zusatzmodul(e)
125 sind mit der Speichermedium-Schnittstelle128 , Host-Schnittstelle129 und dem Managementmodul121-1 verbunden. Das/die Zusatzmodul(e)125 können ein Fehlerkontrollmodul enthalten, um die Anzahl unkorrigierbarer Fehler zu begrenzen, die unbeabsichtigt beim Schreiben auf den Speicher und/oder Auslesen aus dem Speicher in die Daten eingeleitet wurden. In einigen Ausführungsformen werden das/die Zusatzmodul(e)125 in der Software durch die eine oder die mehreren CPUs122 des Managementmoduls121-1 ausgeführt, und in anderen Ausführungsformen werden die Zusatzmodul(e)125 ganz oder teilweise unter Verwendung spezieller Schaltkreise implementiert (z. B. zur Ausführung von Codier- und Decodierfunktionen). In einigen Ausführungsformen werden das/die Zusatzmodul(e)125 ganz oder teilweise durch ausgeführte Software im Rechnersystem110 implementiert. - In einigen Ausführungsformen enthält ein Fehlerkontrollmodul, das in dem/den Zusatzmodul(en)
125 enthalten ist, einen Codierer und einen Decodierer. In einigen Ausführungsformen codiert der Codierer Daten durch Anwendung eines Fehlerkontrollcodes (FCC) zum Erzeugen eines Codeworts, das nachfolgend in den NVM-Vorrichtungen140 ,142 gespeichert wird. Wenn codierte Daten (z. B. ein oder mehrere Codewörter) aus den NVM-Vorrichtungen140 ,142 ausgelesen werden, wendet der Decodierer einen Decodierprozess auf die codierten Daten an, um die Daten wiederherzustellen, und um Fehler in den wiederhergestellten Daten innerhalb der Fehlerkorrekturmöglichkeiten des Fehlerkontrollcodes zu korrigieren. Der Fachmann auf dem Gebiet versteht, dass die verschiedenen Fehlerkontrollcodes unterschiedliche Fehlererkennungs- und Fehlerkorrekturmöglichkeiten haben, und dass besondere Codes für verschiedene Anwendungen aus Gründen gewählt werden, die über den Geltungsbereich dieser Offenbarung hinausgehen. Somit ist hierin keine ausführliche Besprechung der verschiedenen Arten von Fehlerkontrollcodes enthalten. Des Weiteren versteht der Fachmann auf dem Gebiet, dass jede Art oder Familie von Fehlerkontrollcodes Codier- und Decodieralgorithmen haben kann, die spezifisch für die Art oder Familie von Fehlerkontrollcodes sind. Andererseits können einige Algorithmen zumindest in gewissem Maße bei der Decodierung einer Anzahl unterschiedlicher Arten oder Familien von Fehlerkontrollcodes verwendet werden. Als solche ist aus Gründen der Kürze hierin keine ausführliche Beschreibung der verschiedenen Arten von Codier- und Decodieralgorithmen, die den Fachleuten auf dem Gebiet allgemein verfügbar und bekannt sind, enthalten. - In einigen Ausführungsformen erhält die Host-Schnittstelle
129 bei einem Schreibvorgang Daten vom Rechnersystem110 , die in den NVM-Vorrichtungen140 ,142 gespeichert werden sollen. Die von der Host-Schnittstelle129 erhaltenen Daten werden einem Codierer (z. B. in Zusatzmodul(en)125 ) bereitgestellt, der die Daten codiert, um ein oder mehrere Codewörter zu erzeugen. Das eine oder die mehreren Codewörter werden der Speichermedium-Schnittstelle128 bereitgestellt, die das eine oder die mehreren Codewörtern für NVM-Vorrichtungen140 ,142 (z. B. über NVM-Controller130 ) unabhängig von der Art des verwendeten Speichermediums bereitstellt. - In einigen Ausführungsformen wird ein Lesevorgang eingeleitet, wenn das Rechnersystem (Host)
110 ein oder mehrere Host-Lesebefehle (z. B. über die Datenverbindungen101 , oder alternativ eine separate Steuerleitung oder einen Steuerbus) an den Speicher-Controller124 sendet und Daten von den NVM-Vorrichtungen140 ,142 anfordert. Der Speicher-Controller124 sendet einen oder mehrere Lesezugriffbefehle an die NVM-Vorrichtungen140 ,142 (z. B. über NVM-Controller130 ) über die Speichermedium-Schnittstelle128 , um rohe Lesedaten gemäß den Speicherorten (Adressen) zu erhalten, die durch den einen oder die mehreren Lesebefehle des Hosts definiert werden. Die Speichermedium-Schnittstelle128 stellt die rohen Lesedaten (z. B. umfassend ein oder mehrere Codewörter) einem Decodierer (z. B. in Zusatzmodulen)125 ) bereit. Wenn die Decodierung erfolgreich ist, werden die decodierten Daten der Host-Schnittstelle129 bereitgestellt, wo die decodierten Daten dem Rechnersystem110 bereitgestellt werden. - Wenn die Decodierung nicht erfolgreich ist, kann der Speicher-Controller
124 in einigen Ausführungsformen auf eine Reihe von Abhilfemaßnahmen zurückgreifen, oder einen Hinweis auf einen unlösbaren Fehlerzustand liefern. - Wie oben erläutert, ist ein Speichermedium (z. B. NVM-Vorrichtungen
140 ,142 ) in eine Anzahl von adressierbaren und individuell auswählbaren Blöcke unterteilt, und jeder Block ist optional (aber normalerweise) ferner in eine Vielzahl von Seiten und/oder Wortzeilen und/oder Sektoren unterteilt. Während das Löschen eines Speichermediums auf einer Blockbasis ausgeführt wird, wird das Lesen und Programmieren des Speichermediums in vielen Ausführungsformen auf einer kleineren Untereinheit eines Blocks ausgeführt (z. B. auf einer Seitenbasis, Wortzeilenbasis oder Sektorbasis). In einigen Ausführungsformen besteht die kleinere Untereinheit eines Blocks aus vielfachen Speicherzellen (z. B. einstufige Zellen oder vielstufige Zellen). In einigen Ausführungsformen wird das Programmieren auf einer ganzen Seite ausgeführt. In einigen Ausführungsformen hat ein NAND-Flash mit Multi-Level-Cell (MLC) normalerweise vier mögliche Zustände pro Zelle und trägt zwei Informationsbits pro Zelle. Ferner hat ein MLC NAND in einigen Ausführungsformen zwei Seitenarten: (1) eine untere Seite (manchmal bezeichnet als schnelle Seite), und (2) eine obere Seite (manchmal bezeichnet als langsame Seite). In einigen Ausführungsformen hat ein NAND-Flash mit Triple-Level-Cell (TLC) acht mögliche Zustände pro Zelle und trägt drei Informationsbits pro Zelle. Obwohl die Beschreibung hierin TLC, MLC und SLC als Beispiele verwendet, verstehen die Fachleute auf dem Gebiet, dass die hierin beschriebenen Ausführungsformen auf Speicherzellen ausgeweitet werden können, die mehr als acht mögliche Zustände pro Zelle haben und mehr als drei Informationsbits pro Zelle tragen können. In einigen Ausführungsformen wird ist das Codierungsformat auf dem Speichermedium (d. h. TLC, MLC, oder SLC und/oder eingewählter Datenredundanzmechanismus) eine Wahl, die getroffen wird, wenn die Daten eigentlich auf das Speichermedium geschrieben werden. - Wenn beispielsweise Daten in Seiten auf Speichermedium geschrieben werden, das Speichermedium aber in Blöcken gelöscht wird, können die Seiten im Speichermedium ungültige (z. B. veraltete) Daten enthalten, aber diese Seiten können erst dann gelöscht werden, wenn der gesamte Block, der diese Seiten enthält, gelöscht wird. Um auf die Seiten mit ungültigen Daten zu schreiben, werden die Seiten (wenn vorhanden) mit gültigen Daten in diesem Block gelesen und neu in einen neuen Block geschrieben und der alte Block wird gelöscht (oder in eine Schlange zum Löschen gestellt). Dieser Vorgang wird als automatische Speicherbereinigung bezeichnet. Nach der automatischen Speicherbereinigung enthält der neue Block die Seiten mit gültigen Daten und kann viele freie Seiten haben, die zum Schreiben neuer Daten verfügbar sind, und der alte Block kann gelöscht werden, damit er für das Schreiben neuer Daten verfügbar ist. Da der Flash-Speicher nur in einer begrenzten Anzahl programmiert und gelöscht werden kann, hat die Effizienz des verwendeten Algorithmus zur Auswahl des/der nächsten Blöcke zum erneuten Schreiben und Löschen eine bedeutende Auswirkung auf die Haltbarkeit und Zuverlässigkeit von Flash-basierten Speichersystemen.
- Der Schreibfaktor ist ein Phänomen, wo die tatsächliche physische Menge geschriebener Daten auf ein Speichermedium (z. B. NVM-Vorrichtungen
140 ,142 in der Speichervorrichtung120 ) ein Vielfaches der logischen Menge geschriebener Daten von einem Host (z. B. das Rechnersystem110 , manchmal bezeichnet als ein Host) auf das Speichermedium. Wenn, wie oben besprochen, ein Block des Speichermediums gelöscht werden muss, bevor er neu geschrieben werden kann, führt der Prozess der automatischen Speicherbereinigung zur Ausführung dieser Abläufe zu einem einmaligen oder mehrmaligen Neuschreiben der Daten. Dieser Multiplizierungseffekt erhöht die Anzahl von Schreibvorgängen, die über die Lebensdauer in einem Speichermedium notwendig werden, was die Zeit verkürzt, in der es zuverlässig funktioniert. Die Formel zum Berechnen des Schreibfaktors eines Speichersystem wird durch die folgende Gleichung ausgedrückt:Menge der auf ein Speichermedium geschriebenen Daten / Menge der von einem Host geschriebenen Daten - Eine der Zielsetzungen bei jeder auf Flash-Speicher beruhenden Datenspeichersystem-Architektur ist es, den Schreibfaktor so weit wie möglich so zu reduzieren, dass die verfügbare Lebensdauer verwendet wird, um die Zuverlässigkeits- und Garantievorgaben an das Speichermedium zu erfüllen. Eine höhere Systemlebensdauer führt auch zu niedrigeren Kosten, weil das Speichersystem weniger Over-Provisioning benötigt. Durch Verringerung des Schreibfaktors wird die Lebensdauer des Speichermediums erhöht und die Gesamtkosten des Speichersystems werden verringert. Generell wird die automatische Speicherbereinigung zur besten Leistung und für den besten Schreibfaktor zum Löschen von Blöcken mit der geringsten Anzahl von gültigen Seiten durchgeführt.
- Flash-Speichervorrichtungen verwenden Speicherzellen zum Speichern von Daten als elektrische Werte, wie z. B. elektrische Ladungen oder Spannungen. Jede Flash-Speicherzelle enthält normalerweise einen einzigen Transistor mit einem Floating-Gate, der zum Speichern einer Ladung verwendet wird, die die Schwellenspannung des Transistors ändert (d. h. die erforderliche Spannung zum Einschalten des Transistors). Die Größe der Ladung und die entsprechende Schwellenspannung, die die Ladung erzeugt, werden zur Darstellung eines oder mehrerer Datenwerte verwendet. In einigen Ausführungsformen wird während eines Lesevorgangs eine Lese-Schwellenspannung auf das Gate des Transistors angelegt, und die resultierende abgetastete Stromstärke oder Spannung wird auf einen Datenwert gemappt.
- Die Begriffe „Zellspannung” und „Speicherzellenspannung” bedeutet im Zusammenhang mit Flash-Speicherzellen die Schwellenspannung der Speicherzelle, was die Mindestspannung ist, die am Gate des Transistors der Speicherzelle angelegt werden muss, damit der Transistor Strom leitet. Auf ähnliche Art und Weise sind die angewendeten Lese-Schwellenspannungen (manchmal auch bezeichnet als Lesesignale und Lesespannungen) auf Flash-Speicherzellen die Gate-Spannungen, die auf die Gates der Flash-Speicherzellen angewendet werden, um zu bestimmen, ob die Speicherzellen bei der Gate-Spannung Strom leiten. Wenn der Transistor einer Flash-Speicherzelle in einigen Ausführungsformen bei einer gegebenen Lese-Schwellenspannung Strom leitet, bedeutet dies, dass die Zellspannung niedriger als die Lese-Schwellenspannung ist, der Rohdatenwert für diesen Lesevorgang eine „1” ist und sonst der Rohdatenwert eine „0” ist.
-
121-1 gemäß einiger Ausführungsformen wie gezeigt in121-1 enthält normalerweise eine oder mehrere Prozessoreinheiten (manchmal bezeichnet als CPUs oder Prozessoren)122-1 zum Ausführen von Modulen, Programmen und/oder Anweisungen, die im Speicher206 gespeichert sind, und somit zum Ausführen von Verarbeitungsvorgängen, den Speicher206 (manchmal bezeichnet als Controller-Speicher), und einen oder mehrere Datenbusse208 zum Verbinden dieser Komponenten. Der eine oder die mehreren Datenbusse208 enthalten optional Schaltkreise (manchmal bezeichnet als ein Chipsatz), die die Kommunikationen zwischen den Systemkomponenten verbinden und steuern. Das Managementmodul121-1 ist mit der Host-Schnittstelle129 , dem/den Zusatzmodul(en)125 und dem Speichermedium (E/A)128 durch den einen oder die mehreren Datenbusse208 verbunden. Der Speicher206 enthält einen Hochgeschwindigkeits-Direktzugriffsspeicher, wie z. B. DRAM, SRAM, DDR RAM oder andere Direktzugriffs-Solid-State-Speichervorrichtungen, und kann einen nichtflüchtigen Speicher, wie z. B. eine oder mehrere magnetische Laufwerk-Speichervorrichtungen, optische Laufwerk-Speichervorrichtungen, Flash-Speichervorrichtungen, oder andere nichtflüchtige Solid-State-Speichervorrichtungen enthalten. Der Speicher206 enthält optional eine oder mehrere Speichervorrichtungen, die entfernt von der/den CPUs122-1 angeordnet sind. Der Speicher206 , oder alternativ die nichtflüchtige(n) Speichervorrichtung(en) im Speicher206 umfasst ein nichttransitorisches computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher206 oder das nichttransitorische computerlesbare Speichermedium des Speichers206 die folgenden Programme, Module und Datenstrukturen, oder einen Untersatz oder Supersatz davon: - • eine Translationstabelle
212 , die für das Mapping der logischen Adressen in physische Adressen verwendet wird; - • ein Datenlesemodul
214 , das zum Lesen von Daten aus einem oder mehreren Codewörtern, Seiten oder Blöcken in einem Speichermedium (z. B. NVM-Vorrichtungen140 ,142 , - • ein Datenschreibmodul
216 , das zum Schreiben von Daten in ein oder mehrere Codewörter, Seiten oder Blöcke in einem Speichermedium (z. B. NVM-Vorrichtungen140 ,142 , - • ein Datenlöschmodul
218 , das zum Löschen von Daten aus einem oder mehreren Blöcken in einem Speichermedium (z. B. NVM-Vorrichtungen140 ,142 , - • ein automatisches Speicherbereinigungsmodul
220 , das zur automatischen Speicherbereinigung für einen oder mehrere Blöcke in einem Speichermedium (z. B. NVM-Vorrichtungen140 ,142 , - • ein Befehlempfangsmodul
222 , das zum Empfang einer Vielzahl von Befehlen (z. B. Unmapp-Befehle und E/A-Befehle, wie z. B. Schreibanforderungen und/oder Leseanforderung) von einem Host; - • ein Arbeitslastmodul
224 , das zur Bestimmung einer Arbeitslast (oder Änderungen in der Arbeitslast) gemäß den Befehlen von einem Host (z. B. Rechnersystem110 , - • ein Schreibcachemodul
236 das zum Unterhalten, Leeren und/oder Planen einer Leerung (z. B. eine regelmäßige Leerung und/oder an optimierte Leerung) eines Schreibcaches (z. B. Schreibcache238 ); und - • ein Schreibcache
238 , das eine Sammlung von Datenstrukturen entsprechend den Schreibbefehlen von einem Host. - Jedes der oben identifizierten Elemente kann in einem oder mehreren der vorher erwähnten Speichervorrichtungen gespeichert werden und entspricht einem Anweisungssatz zur Ausführung einer oben beschrieben Funktion. Die oben identifizierten Module oder Programme (d. h. Anweisungssätze) müssen nicht als separate Softwareprogramme, Verfahren oder Module implementiert werden, und somit können mehrere Untersätze dieser Module in verschiedenen Ausführungsformen kombiniert oder anderweitig neu angeordnet werden. In einigen Ausführungsformen kann der Speicher
206 einen Untersatz der oben identifizierten Module und Datenstrukturen speichern. Des Weiteren kann der Speicher206 zusätzliche Module und Datenstrukturen speichern, die oben nicht beschrieben werden. In einigen Ausführungsformen stellen die Programme, Module und Datenstrukturen, die im Speicher206 gespeichert sind, oder das nichttransitorisches computerlesbare Speichermedium des Speichers206 Anweisungen zur Implementierung einiger der unten beschriebenen Verfahren bereit. In einigen Ausführungsformen können einige oder alle diese Module mit speziellen Hardware-Schaltkreisen implementiert werden, die einen Teil oder alle der Modulfunktionen subsumieren. - Obwohl die
121-1 gemäß einiger Ausführungsformen zeigt, dient die121-1 vorhanden sein können, als denn ein Strukturschema der hierin beschriebenen Ausführungsformen. In der Praxis und anerkannt durch den Fachmann auf dem Gebiet könnten die getrennt gezeigten Programme, Module und Datenstrukturen kombiniert, und einige Programme, Module und Datenstrukturen könnten getrennt sein. - Bei einer gemischten Lese/Schreib-Random Arbeitslast (z. B. 30% Schreiben und 70% Lesen) mit niedriger Queue-Tiefe (z. B. Queue-Tiefe von 4) können Schreibbefehle von einem Host in einigen Ausführungsformen Lesebefehle vom Host blockieren, weil Schreibvorgänge langsamer sind (es dauert z. B. bedeutend länger, sie abzuschließen) als Lesevorgänge, was dazu führt, dass der Host kontinuierlich anhält und wartet, bis das Schreiben abgeschlossen ist. Die hierin beschriebenen verschiedenen Ausführungsformen enthalten Systeme, Verfahren, und/oder Vorrichtungen, um eine Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe zu ermöglichen (manchmal bezeichnet als qualifizierte Arbeitslasten). In einigen Ausführungsformen arbeitet die Speichervorrichtung, die eine oder mehrere nichtflüchtige Speichervorrichtungen (z. B. NVM-Vorrichtungen
140 ,142 , -
300 zum Verwalten eines Speichersystems gemäß einiger Ausführungsformen. In mindestens einigen Ausführungsformen wird das Verfahren300 von einer Speichervorrichtung (z. B. Speichervorrichtung120 ,124 , NVM-Controller130 und/oder NVM-Vorrichtungen140 ,142 ,110 ,300 von Anweisungen gesteuert, die in einem nichttransitorischen computerlesbaren Speichermedium gespeichert sind, und die von einem oder mehreren Prozessoren einer Vorrichtung ausgeführt werden, wie die eine oder die mehreren Prozessoreinheiten (CPUs)122-1 des Managementmodul121-1 , gezeigt in den300 von einem Speichersystem (z. B. Datenspeichersystem100 ,110 und/oder Speichervorrichtung120 ,300 auf einem Host (z. B. Rechnersystem110 ,120 ,300 zumindest teilweise von Anweisungen gesteuert, die in einem nichttransitorischen computerlesbaren Speichermedium gespeichert sind, und die von einem oder mehreren Prozessoren eines Hosts (nicht gezeigt in300 beschrieben, wie es von einer Speichervorrichtung (z. B. Speichervorrichtung120 ,300 beschriebenen Vorgänge in anderen Ausführungsformen von einem Host (z. B. Rechnersystem110 , - Eine Speichervorrichtung (z. B. Speichervorrichtung
120 ,100 ,302 ) ein Schreibcache (z. B. Schreibcache228 ,110 ,140 ,142 ,228 , - In einigen Ausführungsformen enthält die Speichervorrichtung (
304 ) eine oder mehrere Flash-Speichervorrichtungen. In einigen Ausführungsformen enthält die Speichervorrichtung ein Speichermedium (z. B. NVM-Vorrichtungen140 ,142 ,140 ,142 , - Die Speichervorrichtung bestimmt (
306 ) eine Arbeitslast gemäß den Befehlen von dem Host, mit dem die Speichervorrichtung operativ verbunden ist. In einigen Ausführungsformen wird die Arbeitslast gemäß einer Queue-Tiefe von anstehenden befehlen von dem Host bestimmt. In einigen Ausführungsformen wird die Arbeitslast gemäß einem Prozentsatz von Schreibbefehlen von dem Host im Verhältnis zu einem Prozentsatz von Lesebefehlen von dem Host bestimmt. In einigen Ausführungsformen wird ein Arbeitslastmodul (z. B. Arbeitslastmodul224 , - Die Speichervorrichtung plant (
308 ) gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, eine regelmäßige Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache (z. B. ein Datenblock) zu einer nichtflüchtigen Speichereinheit (z. B. NVM-Vorrichtung140-1 ,140 ,142 ,226 , - Die Speichervorrichtung plant (
310 ) gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, eine optimierte Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist. In einigen Ausführungsformen enthält eine optimierte Leerung des Schreibcaches beispielsweise das Leeren von n Datenblöcken zu n nichtflüchtigen Speichereinheiten (z. B. das Leeren eines Datenblocks zu jedem der NVM-Vorrichtung140-1 , NVM-Vorrichtung140-2 , ... NVM-Vorrichtung140-n ). In einigen Ausführungsformen ist das erste Vielfache eine Ganzzahl größer als 7 (d. h. 8 oder größer), und normalerweise hat es einen Wert zwischen 8 und 32. In einigen Ausführungsformen besteht eine qualifizierte Arbeitslast, wenn die Queue-Tiefe kleiner oder gleich wie ein vordefinierter Tiefen-Schwellenwert ist. In einigen Ausführungsformen besteht beispielsweise dann eine qualifizierte Arbeitslast, wenn die Queue-Tiefe „niedrig” ist (z. B. Queue-Tiefe von 1 bis 32). In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul226 , - In einigen Ausführungsformen enthält die regelmäßige Leerung (
312 ) das Ansammeln ausreichender Daten von Schreibbefehlen, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben. In einigen Ausführungsformen enthält die regelmäßige Leerung beispielsweise das Ansammeln ausreichender Daten von Schreibbefehlen, um einen Datenblock auf die eine nichtflüchtige Speichereinheit zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um n Datenblöcke auf n nichtflüchtige Speichereinheiten zu schreiben, wobei n eine Ganzzahl größer als eins ist. In einigen Ausführungsformen ist die entsprechende Anzahl gleich wie das erste Vielfache, oder die entsprechende Anzahl gleich wie das erste Vielfache geteilt durch eine ganzzahlige Potenz von zwei ist (z. B. wenn zwei oder mehr Abschnitt der nichtflüchtigen Speichereinheit parallel programmiert werden können). - In einigen Ausführungsformen führt die Speichervorrichtung (
314 ) nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, eine oder mehrere regelmäßige Leerungen durch, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul226 , - In einigen Ausführungsformen enthält die Durchführung der einen oder mehreren regelmäßigen Leerungen (
314 ) die Durchführung (316 ) einer Vielzahl von regelmäßigen parallelen Leerungen (316 ). In einigen Ausführungsformen oder unter gewissen Umständen werden alle regelmäßigen Leerungen im Vorgang314 parallel durchgeführt. In einigen Ausführungsformen ist die Durchführung mehrfacher Schreibcache-Leerungen „parallel” definiert, was die Durchführung des mehrfachen Schreibcaches während mindestens teilweise überlappender Zeiten bedeutet. - In einigen Ausführungsformen leert die Speichervorrichtung optional (
318 ) gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, das Schreibcache zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. In einigen Ausführungsformen führt die Speichervorrichtung gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, eine regelmäßige Leerung durch. In einigen Ausführungsformen oder unter gewissen Umständen (z. B. wo das Schreibcache ausreichende Daten zur Durchführung einer optimierten Leerung speichert) führt die Speichervorrichtung gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, eine optimierte Leerung durch. In einigen Ausführungsformen leert die Speichervorrichtung gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, die Gesamtheit des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul226 , - In einigen Ausführungsformen leert die Speichervorrichtung optional (
320 ) gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, das ganzzahlige Vielfache anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. Wenn in einigen Ausführungsformen das Schreibcache beispielsweise zweieinhalb Datenblöcke enthält, leert die Speichervorrichtung zwei Datenblöcken zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten. In einigen Ausführungsformen wird ein Schreibcache-Modul (z. B. Schreibcache-Modul226 , - Es ist verstanden, dass obwohl hierin die Begriffe „erste”, „zweite” usw. dazu verwendet werden können, um die verschiedenen Elemente zu beschreiben, diese Elemente nicht hierauf begrenzt werden dürfen. Diese Begriffe werden nur verwendet, um ein Element vom anderen zu unterscheiden. Eine erste Region kann beispielsweise als zweite Region bezeichnet werden, und auf ähnliche Weise könnte eine zweite Region als erste Region bezeichnet werden, ohne damit die Bedeutung der Beschreibung zu ändern, solange jedes Vorkommen der „ersten Region” durchgängig umbenannt wird, und jedes Vorkommen der „zweiten Region” durchgängig umbenannt wird. Die erste Region und die zweite Region sind zwar beide Regionen, aber nicht dieselbe Region.
- Die hierin verwendete Terminologie dient nur den Zwecken der Beschreibung besonderer Ausführungsformen und ist nicht dazu beabsichtigt, die Ansprüche einzuschränken. Die Einzahlformen von „ein” und „der, die, das”, wie sie in der Beschreibung der Ausführungsformen und in den angehängten Ansprüchen verwendet werden, sind so beabsichtigt, dass sie auch die Pluralformen enthalten sollen, es sei denn, aus dem Kontext geht dies eindeutig anders hervor. Es ist gleichfalls verstanden, dass der Begriff „und/oder”, wie er hierin verwendet wird, sich auf alle möglichen Kombinationen von einer oder mehreren der jeweils aufgelisteten Elemente bezieht und diese umfasst. Es ist ferner verstanden, dass die Begriffe „umfassen” und/oder „umfassend”, wenn sie in dieser Spezifikation verwendet werden, das Vorhandensein der angegebenen Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten spezifiziert, dass sie aber nicht das Vorhandensein oder Hinzufügen von einem oder mehreren Merkmale, Ganzzahlen, Schritte, Vorgängen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
- Der Ausdruck „mindestens eines von A, B und C”, wie er hierin verwendet wird, muss so ausgelegt werden, dass eines oder mehrere der aufgelisteten Elemente erforderlich sind, und dieser Ausdruck liest sich als nur eine einzige Einheit von A, nur eine einzige Einheit von B oder nur eine einzige Einheit von C, während er auch Kombinationen der aufgelisteten Elemente umfasst, wie z. B. „eines oder mehrere von und eines oder mehrere von B ohne jedes von C” und Ähnliches.
- Der Begriff „wenn”, wie er hierin verwendet wird, muss so ausgelegt werden, dass er „falls” oder „bei” oder „als Antwort auf die Feststellung” oder „gemäß einer Feststellung” oder „als Antwort auf die Feststellung” bedeutet, dass je nach Zusammenhang ein vorher angegebener Zustand wahr ist. Auf ähnliche Weise kann der Ausdruck „wenn festgestellt wird [ein vorher angegebener Zustand wahr ist]” oder „wenn [ein vorher angegebener Zustand wahr ist]” oder „falls [ein vorher angegebener Zustand wahr ist]” so ausgelegt werden kann, dass er bedeutet „bei Feststellung” oder „als Antwort auf die Feststellung” oder „gemäß einer Feststellung” oder „bei Feststellung” oder „als Antwort auf die Feststellung”, dass je nach Zusammenhang ein vorher angegebener Zustand wahr ist.
- Die vorstehende Beschreibung zu Erläuterungszwecken wurde unter Bezugnahme auf spezifische Ausführungsformen beschrieben. Allerdings sind die illustrativen obigen Besprechungen nicht dazu beabsichtigt, erschöpfend zu sein, oder die Ansprüche auf präzise offenbarte Formen zu beschränken. Viele Modifikationen und Variationen der obigen Lehren sind möglich. Die Ausführungsformen wurden gewählt und beschrieben, um die Funktionsprinzipien und praktischen Anwendungen bestmöglich zu beschrieben, um sie dadurch anderen Fachleuten auf dem Gebiet zu ermöglichen.
Claims (15)
- Verfahren zum Verwalten eines Speichersystems, das Verfahren umfassend: Unterhalten eines Schreibcaches für Schreibbefehle von einem Host, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, und die Speichervorrichtung enthält eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle von dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind; Bestimmen einer Arbeitslast gemäß den Befehlen von dem Host, mit dem die Speichervorrichtung operativ verbunden ist; gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, Planen einer regelmäßigen Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält; und gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, Planen einer optimierten Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist.
- Verfahren nach Anspruch 1, wobei die regelmäßige Leerung das Ansammeln ausreichender Daten von Schreibbefehlen enthält, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und die optimierte Leerung enthält das Ansammeln ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben.
- Verfahren nach einem der Ansprüche 1–2, ferner umfassend nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, das Ausführen von einer oder mehreren regelmäßigen Leerungen, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält.
- Verfahren nach Anspruch 3, wobei das Ausführen der einen oder mehreren regelmäßigen Leerungen das parallele Ausführen einer Vielzahl von regelmäßigen Leerungen enthält.
- Verfahren nach einem der Ansprüche 1–4, ferner umfassend gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, das Leeren des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
- Verfahren nach einem der Ansprüche 1–4, ferner umfassend gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält, das Leeren des ganzzahligen Vielfachen anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten.
- Verfahren nach einem der Ansprüche 1–6, wobei die Speichervorrichtung eine oder mehrere Flash-Speichervorrichtungen umfasst.
- Speichervorrichtung umfassend: Mittel zum Unterhalten eines Schreibcaches für Schreibbefehle von einem Host, mit dem eine Speichervorrichtung des Speichersystems operativ verbunden ist, und die Speichervorrichtung enthält eine Vielzahl von nichtflüchtigen Speichereinheiten, wobei das Schreibcache Schreibbefehle von dem Host enthält, die zur Speicherung in der Vielzahl von nichtflüchtigen Speichereinheiten gemappt, aber noch nicht in den nichtflüchtigen Speichereinheiten gespeichert sind; Mittel zum Bestimmen einer Arbeitslast gemäß den Befehlen von dem Host, mit dem die Speichervorrichtung operativ verbunden ist; Mittel zum Planen gemäß einer Bestimmung, dass die Arbeitslast eine nichtqualifizierte Arbeitslast ist, einer regelmäßigen Leerung des Schreibcaches, wobei die regelmäßige Leerung das Leeren einer vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält; und Mittel zum Planen gemäß einer Bestimmung, dass die Arbeitslast eine qualifizierte Arbeitslast ist, einer optimierten Leerung des Schreibcaches, wobei die optimierte Leerung das Leeren eines ersten Vielfachen der vordefinierten Datenmenge zu einer entsprechenden Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten enthält, wobei das erste Vielfache eine Ganzzahl größer als eins ist.
- Speichervorrichtung nach Anspruch 8, enthaltend Mittel zum Durchführen der regelmäßigen Leerung, einschließlich des Ansammelns ausreichender Daten von Schreibbefehlen, um die vordefinierte Datenmenge auf die eine nichtflüchtige Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben, und Mittel zum Durchführen der optimierten Leerung, einschließlich des Ansammelns ausreichender Daten von Schreibbefehlen, um das erste Vielfache von der vordefinierten Datenmenge auf die entsprechende Anzahl der Vielzahl von nichtflüchtigen Speichereinheiten zu schreiben.
- Speichervorrichtung nach Anspruch 8, enthaltend ferner Mittel zum Durchführen einer oder mehrerer Leerungen nach der Bestimmung, dass sich die Arbeitslast von einer qualifizierten Arbeitslast auf eine nichtqualifizierte Arbeitslast geändert hat, wobei jede regelmäßige Leerung das Leeren der vordefinierten Datenmenge aus dem Schreibcache zu einer nichtflüchtigen Speichereinheit der Vielzahl von nichtflüchtigen Speichereinheiten enthält.
- Speichervorrichtung nach Anspruch 10, wobei die Mittel zum Durchführen der einen oder mehreren regelmäßigen Leerungen Mittel zum parallelen Durchführen einer Vielzahl von regelmäßigen Leerungen enthalten.
- Speichervorrichtung nach einem der Ansprüche 8–11, ferner umfassend Mittel zum Leeren des Schreibcaches zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist.
- Speichervorrichtung nach einem der Ansprüche 8–11, ferner umfassend Mittel zum Leeren des ganzzahligen Vielfachen anders als null der vordefinierten Datenmenge zu einer oder mehreren der Vielzahl von nichtflüchtigen Speichereinheiten gemäß einer Bestimmung, dass der Host über mindestens einen vordefinierten Zeitraum ungenutzt ist, und gemäß einer Bestimmung, dass das Schreibcache mindestens ein ganzzahliges Vielfaches anders als null der vordefinierten Datenmenge enthält.
- Speichervorrichtung nach einem der Ansprüche 8–13, wobei die Speichervorrichtung eine oder mehrere Flash-Speichervorrichtungen enthält.
- Nichttransitorisches computerlesbares Speichermedium, das ein oder mehrere Programme speichert, die zur Ausführung des einen oder der mehreren Programme, die Anweisungen zum Ausführen des Verfahren nach einem der Ansprüche 1–7 enthalten, durch einen oder mehrere Prozessoren einer Speichervorrichtung konfiguriert sind
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462069241P | 2014-10-27 | 2014-10-27 | |
US62/069,241 | 2014-10-27 | ||
US14/677,662 US9952978B2 (en) | 2014-10-27 | 2015-04-02 | Method for improving mixed random performance in low queue depth workloads |
US14/677,662 | 2015-04-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102015117500A1 true DE102015117500A1 (de) | 2016-04-28 |
Family
ID=55698626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102015117500.2A Withdrawn DE102015117500A1 (de) | 2014-10-27 | 2015-10-14 | Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe |
Country Status (3)
Country | Link |
---|---|
US (1) | US9952978B2 (de) |
CN (1) | CN105718213B (de) |
DE (1) | DE102015117500A1 (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017081794A1 (ja) * | 2015-11-12 | 2017-05-18 | オリンパス株式会社 | サーバ、クライアント、通信システム、通信方法、およびプログラム |
US10474582B2 (en) * | 2017-04-28 | 2019-11-12 | Seagate Technology Llc | NAND flash storage device and methods using non-NAND storage cache |
CN107870744A (zh) * | 2017-10-27 | 2018-04-03 | 上海新储集成电路有限公司 | 一种非同步镜像的混合硬盘阵列存储系统及方法 |
CN108920313A (zh) * | 2018-06-21 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种raid的测试方法、装置、设备及介质 |
CN110908591B (zh) * | 2018-09-17 | 2023-05-30 | 群联电子股份有限公司 | 存储器管理方法、存储器储存装置及存储器控制电路单元 |
CN110989918B (zh) * | 2018-10-03 | 2023-03-28 | 慧荣科技股份有限公司 | 写入控制方法以及数据存储装置及其控制器 |
US11841871B2 (en) * | 2021-06-29 | 2023-12-12 | International Business Machines Corporation | Managing extract, transform and load systems |
Family Cites Families (127)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4586167A (en) | 1983-01-24 | 1986-04-29 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory device |
EP0376285B1 (de) | 1988-12-27 | 1994-03-09 | Nec Corporation | Mikrorechner mit einem elektrisch löschbaren und programmierbaren nichtflüchtigen Speicher |
US5559988A (en) | 1993-12-30 | 1996-09-24 | Intel Corporation | Method and circuitry for queuing snooping, prioritizing and suspending commands |
US5909559A (en) | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
US6209072B1 (en) | 1997-05-06 | 2001-03-27 | Intel Corporation | Source synchronous interface between master and slave using a deskew latch |
US6449709B1 (en) | 1998-06-02 | 2002-09-10 | Adaptec, Inc. | Fast stack save and restore system and method |
KR100306882B1 (ko) | 1998-10-28 | 2001-12-01 | 박종섭 | 반도체메모리소자에서데이터스트로브신호를버퍼링하기위한방법및장치 |
US6952682B1 (en) | 1999-07-02 | 2005-10-04 | Ariba, Inc. | System and method for matching multi-attribute auction bids |
US6401213B1 (en) | 1999-07-09 | 2002-06-04 | Micron Technology, Inc. | Timing circuit for high speed memory |
US6944731B2 (en) | 2001-12-19 | 2005-09-13 | Agere Systems Inc. | Dynamic random access memory system with bank conflict avoidance feature |
US6792516B2 (en) | 2001-12-28 | 2004-09-14 | Intel Corporation | Memory arbiter with intelligent page gathering logic |
US6922754B2 (en) * | 2002-12-09 | 2005-07-26 | Infabric Technologies, Inc. | Data-aware data flow manager |
US7631138B2 (en) | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
KR100632940B1 (ko) | 2004-05-06 | 2006-10-12 | 삼성전자주식회사 | 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치 |
KR100616214B1 (ko) | 2005-06-30 | 2006-08-28 | 주식회사 하이닉스반도체 | 멀티-레벨 셀을 가지는 플래시 메모리 장치의 프로그램제어 회로 및 그 프로그램 제어 방법 |
US20070156998A1 (en) | 2005-12-21 | 2007-07-05 | Gorobets Sergey A | Methods for memory allocation in non-volatile memories with a directly mapped file storage system |
US8286159B2 (en) | 2005-12-22 | 2012-10-09 | Alan Joshua Shapiro | Method and apparatus for gryphing a data storage medium |
US20070233937A1 (en) | 2006-03-31 | 2007-10-04 | Coulson Richard L | Reliability of write operations to a non-volatile memory |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US20110264851A1 (en) | 2006-12-07 | 2011-10-27 | Tae-Keun Jeon | Memory system and data transmitting method thereof |
KR100843280B1 (ko) | 2006-12-07 | 2008-07-04 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 전송 방법 |
KR101354152B1 (ko) | 2006-12-18 | 2014-01-27 | 삼성전자주식회사 | 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치 |
US8122202B2 (en) | 2007-02-16 | 2012-02-21 | Peter Gillingham | Reduced pin count interface |
US7987332B2 (en) | 2007-03-21 | 2011-07-26 | Sandisk Technologies Inc. | Methods for storing memory operations in a queue |
US20080235480A1 (en) | 2007-03-21 | 2008-09-25 | Shai Traister | Systems for storing memory operations in a queue |
US20080291204A1 (en) | 2007-05-22 | 2008-11-27 | International Business Machines Corporation | Coupled placement of items using stable marriage techniques |
US8341623B2 (en) | 2007-05-22 | 2012-12-25 | International Business Machines Corporation | Integrated placement planning for heterogenous storage area network data centers |
US8621137B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
US20090177943A1 (en) | 2008-01-09 | 2009-07-09 | Broadcom Corporation | Error correction coding using soft information and interleaving |
US8285940B2 (en) * | 2008-02-29 | 2012-10-09 | Cadence Design Systems, Inc. | Method and apparatus for high speed cache flushing in a non-volatile memory |
DE102008022831B4 (de) | 2008-05-08 | 2015-09-10 | Fujitsu Technology Solutions Intellectual Property Gmbh | Arbeitsverfahren für ein Speichersubsystem und Vorrichtungen zur Durchführung des Arbeitsverfahrens |
US9123422B2 (en) | 2012-07-02 | 2015-09-01 | Super Talent Technology, Corp. | Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells |
US8010738B1 (en) | 2008-06-27 | 2011-08-30 | Emc Corporation | Techniques for obtaining a specified lifetime for a data storage device |
US7855931B2 (en) | 2008-07-21 | 2010-12-21 | Micron Technology, Inc. | Memory system and method using stacked memory device dice, and system using the memory system |
US8289760B2 (en) | 2008-07-02 | 2012-10-16 | Micron Technology, Inc. | Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes |
US7969809B2 (en) | 2008-08-05 | 2011-06-28 | Sandisk Il Ltd. | Power consumption-oriented management of a storage system |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
US20100174845A1 (en) | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
KR20100082185A (ko) | 2009-01-08 | 2010-07-16 | 삼성전자주식회사 | 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치 |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
US8250328B2 (en) | 2009-03-24 | 2012-08-21 | Micron Technology, Inc. | Apparatus and method for buffered write commands in a memory |
US8429498B1 (en) | 2009-03-25 | 2013-04-23 | Apple Inc. | Dual ECC decoder |
US8055816B2 (en) | 2009-04-09 | 2011-11-08 | Micron Technology, Inc. | Memory controllers, memory systems, solid state drives and methods for processing a number of commands |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
EP2284714A1 (de) | 2009-08-14 | 2011-02-16 | Nxp B.V. | Speichersteuerung mit externem Auffrischungsmechanismus |
US8266501B2 (en) * | 2009-09-29 | 2012-09-11 | Micron Technology, Inc. | Stripe based memory operation |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8213255B2 (en) | 2010-02-19 | 2012-07-03 | Sandisk Technologies Inc. | Non-volatile storage with temperature compensation based on neighbor state information |
US8164967B2 (en) | 2010-03-24 | 2012-04-24 | Apple Inc. | Systems and methods for refreshing non-volatile memory |
US20110252215A1 (en) | 2010-04-09 | 2011-10-13 | International Business Machines Corporation | Computer memory with dynamic cell density |
US8397101B2 (en) | 2010-06-03 | 2013-03-12 | Seagate Technology Llc | Ensuring a most recent version of data is recovered from a memory |
CN103080917B (zh) | 2010-06-18 | 2014-08-20 | Lsi公司 | 可扩展存储装置 |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8862807B2 (en) | 2010-08-20 | 2014-10-14 | Samsung Electronics Co., Ltd. | Semiconductor storage device and method of throttling performance of the same |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8539139B1 (en) | 2010-12-17 | 2013-09-17 | Teradota Us, Inc. | Managing device wearout using I/O metering |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US8397023B2 (en) | 2010-12-18 | 2013-03-12 | Lsi Corporation | System and method for handling IO to drives in a memory constrained environment |
US8595415B2 (en) | 2011-02-02 | 2013-11-26 | Micron Technology, Inc. | At least semi-autonomous modules in a memory system and methods |
US8472274B2 (en) | 2011-03-02 | 2013-06-25 | Apple Inc. | Using temperature sensors with a memory device |
US8918595B2 (en) | 2011-04-28 | 2014-12-23 | Seagate Technology Llc | Enforcing system intentions during memory scheduling |
US8954689B2 (en) | 2011-06-30 | 2015-02-10 | Seagate Technology Llc | Limiting activity rates that impact life of a data storage media |
CN103858116B (zh) | 2011-08-09 | 2015-09-02 | Lsi公司 | I/o设备及计算主机互操作 |
KR101900423B1 (ko) | 2011-09-19 | 2018-09-21 | 삼성전자주식회사 | 반도체 메모리 장치 |
US8321627B1 (en) | 2011-10-06 | 2012-11-27 | Google Inc. | Memory operation command latency management |
US8886872B1 (en) | 2011-10-06 | 2014-11-11 | Google Inc. | Memory command dispatch in a data storage device |
US8255618B1 (en) | 2011-10-06 | 2012-08-28 | Google Inc. | Performance isolation in a shared memory device |
US8683309B2 (en) | 2011-10-28 | 2014-03-25 | Lsi Corporation | Systems and methods for ambiguity based decode algorithm modification |
US8443271B1 (en) | 2011-10-28 | 2013-05-14 | Lsi Corporation | Systems and methods for dual process data decoding |
KR101861184B1 (ko) | 2011-11-02 | 2018-05-28 | 삼성전자주식회사 | 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치 |
KR101824949B1 (ko) | 2011-11-23 | 2018-02-05 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 |
US8825967B2 (en) | 2011-12-08 | 2014-09-02 | Conversant Intellectual Property Management Inc. | Independent write and read control in serially-connected devices |
US9082489B2 (en) | 2012-01-13 | 2015-07-14 | Stec, Inc. | Programming algorithm for improved flash memory endurance and retention |
US8949512B2 (en) | 2012-02-17 | 2015-02-03 | Apple Inc. | Trim token journaling |
US8892811B2 (en) | 2012-03-01 | 2014-11-18 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Reducing write amplification in a flash memory |
JP5853899B2 (ja) | 2012-03-23 | 2016-02-09 | ソニー株式会社 | 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法 |
US9135192B2 (en) | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
US9337865B2 (en) | 2012-05-04 | 2016-05-10 | Seagate Technology Llc | Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders |
US9218281B2 (en) | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
US9053808B2 (en) | 2012-06-21 | 2015-06-09 | Sandisk Technologies Inc. | Flash memory with targeted read scrub algorithm |
US9477591B2 (en) | 2012-07-06 | 2016-10-25 | Seagate Technology Llc | Memory access requests in hybrid memory system |
JP5788369B2 (ja) | 2012-09-12 | 2015-09-30 | 株式会社東芝 | メモリシステム、コンピュータシステム、およびメモリ管理方法 |
US8965383B2 (en) | 2012-11-28 | 2015-02-24 | China Mobile Communications Corporation | Load balancing method and device |
US8595590B1 (en) | 2012-12-03 | 2013-11-26 | Digital PowerRadio, LLC | Systems and methods for encoding and decoding of check-irregular non-systematic IRA codes |
US20140173239A1 (en) | 2012-12-19 | 2014-06-19 | Apple Inc. | Refreshing of memory blocks using adaptive read disturb threshold |
US20140229655A1 (en) | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure |
US9552288B2 (en) | 2013-02-08 | 2017-01-24 | Seagate Technology Llc | Multi-tiered memory with different metadata levels |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US20140241071A1 (en) | 2013-02-26 | 2014-08-28 | Seagate Technology Llc | Fast Power Loss Recovery By Swapping Boot and Recovery Data Sets in a Memory |
US20140244897A1 (en) | 2013-02-26 | 2014-08-28 | Seagate Technology Llc | Metadata Update Management In a Multi-Tiered Memory |
US9183137B2 (en) | 2013-02-27 | 2015-11-10 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US8984376B1 (en) | 2013-03-14 | 2015-03-17 | Pmc-Sierra Us, Inc. | System and method for avoiding error mechanisms in layered iterative decoding |
US9136874B2 (en) | 2013-03-15 | 2015-09-15 | Ibiquity Digital Corporation | Method and apparatus for transmission and reception of in-band on-channel radio signals including complementary low density parity check coding |
US10209904B2 (en) | 2013-04-09 | 2019-02-19 | EMC IP Holding Company LLC | Multiprocessor system with independent direct access to bulk solid state memory resources |
US9311326B2 (en) | 2013-04-12 | 2016-04-12 | Alterante, Inc. | Virtual file system for automated data replication and review |
US9128825B1 (en) | 2013-05-17 | 2015-09-08 | Google Inc. | Optimizing allocation of flash memory to file groups |
US9507733B2 (en) * | 2013-06-21 | 2016-11-29 | Microsoft Technology Licensing, Llc | Cache destaging for virtual storage devices |
WO2015008356A1 (ja) | 2013-07-17 | 2015-01-22 | 株式会社日立製作所 | ストレージコントローラ、ストレージ装置、ストレージシステム、半導体記憶装置 |
US20160170831A1 (en) | 2013-07-25 | 2016-06-16 | Hewlett-Packard Development Company, L.P. | Response Control for Memory Modules That Include or Interface With Non-Compliant Memory Technologies |
US9590916B2 (en) | 2013-09-04 | 2017-03-07 | Aruba Networks, Inc. | Method and system for dynamically prioritizing user connections on network |
US9201728B2 (en) | 2013-09-12 | 2015-12-01 | Seagate Technology Llc | Memory device with variable code rate |
KR102102224B1 (ko) | 2013-10-01 | 2020-04-20 | 삼성전자주식회사 | 저장 장치 및 그것의 프로그램 방법 |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US20150186278A1 (en) * | 2013-12-26 | 2015-07-02 | Sarathy Jayakumar | Runtime persistence |
US9170876B1 (en) | 2013-12-31 | 2015-10-27 | Pmc-Sierra Us, Inc. | Method and system for decoding encoded data stored in a non-volatile memory |
US20150261473A1 (en) | 2014-03-11 | 2015-09-17 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
US20150262632A1 (en) * | 2014-03-12 | 2015-09-17 | Fusion-Io, Inc. | Grouping storage ports based on distance |
KR102318478B1 (ko) | 2014-04-21 | 2021-10-27 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
KR102321501B1 (ko) | 2014-05-14 | 2021-11-05 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것을 포함하는 스토리지 장치의 동작 방법 |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9645744B2 (en) | 2014-07-22 | 2017-05-09 | Sandisk Technologies Llc | Suspending and resuming non-volatile memory operations |
US9612957B2 (en) | 2014-07-30 | 2017-04-04 | Qualcomm Innovation Center, Inc. | Read disturb and data retention handling for NAND devices |
US9582220B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system |
KR20160028680A (ko) | 2014-09-04 | 2016-03-14 | 삼성전자주식회사 | 데이터 저장 장치와 이의 작동 방법 |
US9362000B2 (en) | 2014-09-05 | 2016-06-07 | Kabushiki Kaisha Toshiba | Memory system and management method thereof |
US9753649B2 (en) | 2014-10-27 | 2017-09-05 | Sandisk Technologies Llc | Tracking intermix of writes and un-map commands across power cycles |
KR20160049200A (ko) | 2014-10-27 | 2016-05-09 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법 |
US9558125B2 (en) | 2014-10-27 | 2017-01-31 | Sandisk Technologies Llc | Processing of un-map commands to enhance performance and endurance of a storage device |
US9916087B2 (en) | 2014-10-27 | 2018-03-13 | Sandisk Technologies Llc | Method and system for throttling bandwidth based on temperature |
CN105701021B (zh) | 2014-12-10 | 2021-03-02 | 慧荣科技股份有限公司 | 数据储存装置及其数据写入方法 |
US20160210060A1 (en) | 2015-01-21 | 2016-07-21 | HGST Netherlands B.V. | Dynamic resource allocation within storage devices |
KR102291803B1 (ko) | 2015-04-07 | 2021-08-24 | 삼성전자주식회사 | 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법 |
US9645765B2 (en) | 2015-04-09 | 2017-05-09 | Sandisk Technologies Llc | Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
US20160371394A1 (en) | 2015-06-22 | 2016-12-22 | The Governing Council Of The University Of Toronto | Indoor localization using crowdsourced data |
-
2015
- 2015-04-02 US US14/677,662 patent/US9952978B2/en active Active
- 2015-10-14 DE DE102015117500.2A patent/DE102015117500A1/de not_active Withdrawn
- 2015-10-15 CN CN201510666998.3A patent/CN105718213B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105718213B (zh) | 2019-01-15 |
CN105718213A (zh) | 2016-06-29 |
US20160117253A1 (en) | 2016-04-28 |
US9952978B2 (en) | 2018-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102015117500A1 (de) | Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe | |
DE112015004863T5 (de) | Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen | |
DE112014004761B4 (de) | Beeinflussung des Wear-Leveling in Speichersystemen | |
DE112014004778B4 (de) | Vorrichtung und Verfahren zum Verwalten von Chipgruppen | |
DE112018000834T5 (de) | System und verfahren zur adaptiven befehlsabruf-aggregation | |
DE112011103295B4 (de) | Decodieren in Solid-State-Speichereinheiten | |
DE112015004873T5 (de) | Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung | |
DE102019123709A1 (de) | Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen | |
DE102020130044A1 (de) | Techniken zum verhindern von lese-störung in nand-speicher | |
DE112016004629T5 (de) | Datencodiertechniken für eine Vorrichtung | |
DE112015000378T5 (de) | Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher | |
DE102018123805A1 (de) | Vorgang für verteiltes Programmieren | |
DE112020002792B4 (de) | Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern | |
DE112020006139T5 (de) | Vor-lese-und lese-schwellenspannungsoptimierung | |
DE102017114078A1 (de) | Fehlerabschwächung für 3d-nand-flash-speicher | |
DE102012112354A1 (de) | Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon | |
DE102013109235A1 (de) | Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung | |
DE102018123880A1 (de) | Adaptive Verwaltung von Zwischenspeichern | |
DE102017128941A1 (de) | Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung | |
DE102020202379A1 (de) | Speichersystem, speicher-controller und deren betriebsverfahren | |
DE112019000161T5 (de) | Speicher-cache-verwaltung | |
DE112020005502T5 (de) | Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke | |
DE112021000776T5 (de) | Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels | |
DE102017120826A1 (de) | Verfahren und Vorrichtung zum Überwachen von Speicher unter Verwendung einer Hintergrundmedienabtastung | |
DE112016002305T5 (de) | Reduktion der Schreibverstärkung in einem Objektspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES INC., PLANO, US Free format text: FORMER OWNER: SANDISK ENTERPRISE IP LLC, MILPITAS, CALIF., US Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US Free format text: FORMER OWNER: SANDISK ENTERPRISE IP LLC, MILPITAS, CALIF., US |
|
R082 | Change of representative |
Representative=s name: PROCK, THOMAS, DIPL.-ING. (FH) DR., GB Representative=s name: MARKS & CLERK LLP, GB Representative=s name: DEHNS, DE Representative=s name: DEHNS GERMANY, DE |
|
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES LLC, PLANO, US Free format text: FORMER OWNER: SANDISK TECHNOLOGIES INC., PLANO, TEX., US |
|
R082 | Change of representative |
Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE Representative=s name: MARKS & CLERK LLP, GB Representative=s name: DEHNS, DE Representative=s name: DEHNS GERMANY, DE |
|
R082 | Change of representative |
Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE Representative=s name: DEHNS, DE Representative=s name: DEHNS GERMANY, DE |
|
R082 | Change of representative |
Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE Representative=s name: DEHNS GERMANY, DE |
|
R016 | Response to examination communication | ||
R082 | Change of representative |
Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |