DE112010005870B4 - Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien - Google Patents
Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien Download PDFInfo
- Publication number
- DE112010005870B4 DE112010005870B4 DE112010005870.9T DE112010005870T DE112010005870B4 DE 112010005870 B4 DE112010005870 B4 DE 112010005870B4 DE 112010005870 T DE112010005870 T DE 112010005870T DE 112010005870 B4 DE112010005870 B4 DE 112010005870B4
- Authority
- DE
- Germany
- Prior art keywords
- trim
- memory
- management program
- blocks
- cluster
- 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.)
- Active
Links
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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Abstract
Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf einem nichtflüchtigen Speichermedium (SM), das über einen Hostbus (HB) an ein Hostsystem (HS) angeschlossen ist, in dessen Dateisystem (FS) Daten zur Freigabe gekennzeichnet sind, und im nichtflüchtigen Speichermedium (SM) die Daten von einem Speichermanagementprogramm in einem Speichercontroller (MC) in physikalischen Speicherblöcken (PB) mit jeweils einer Beschreibungsstruktur (DS) verwaltet werden und eine Zuordnung von logischen Datenblöcken (LB) zu physikalischen Speicherblöcken (PB) durch eine Zuordnungstabelle (AT) erfolgt, mit den Schritten:
- das Hostsystem (HS) informiert das Speichermanagementprograrnm über das mögliche Löschen von logischen Datenblöcken (LB) mittels eines TRIM-Kommandos (TR),
- das Speichermanagementprogramm bildet aus den zu den logischen Datenblöcken (LB) zugeordneten Speicherbereichen TRIM-Cluster (TC), die jeweils eine Untermenge eines Speicherblocks (PB) darstellen,
- und nimmt in die Beschreibungsstruktur (DS) der physikalischen Speicherblöcke (PB) eine TRIM-Maske (TM) mit Elementen zu den TRIM-Clustern (TC) des Speicherblocks (PB) auf, zu denen die Löschinformation des TRIM-Kommandos (TR) über die Zuordnungstabelle (AT) zugeordnet ist, wobei die Elemente der TRIM-Maske (TM) pro TRIM-Cluster (TC) ein TRIM-Bit (TB) enthalten, wobei über die Position des TRIM-Bits in der TRIM-Maske ein Zeiger auf den TRIM-Cluster (TP) identifiziert wird,
- und aktualisiert die TRIM-Masken (TM) fortlaufend in allen Aktualisierungsoperationen und Speicherbereinigungen der Speicherblöcke (PB).
- das Hostsystem (HS) informiert das Speichermanagementprograrnm über das mögliche Löschen von logischen Datenblöcken (LB) mittels eines TRIM-Kommandos (TR),
- das Speichermanagementprogramm bildet aus den zu den logischen Datenblöcken (LB) zugeordneten Speicherbereichen TRIM-Cluster (TC), die jeweils eine Untermenge eines Speicherblocks (PB) darstellen,
- und nimmt in die Beschreibungsstruktur (DS) der physikalischen Speicherblöcke (PB) eine TRIM-Maske (TM) mit Elementen zu den TRIM-Clustern (TC) des Speicherblocks (PB) auf, zu denen die Löschinformation des TRIM-Kommandos (TR) über die Zuordnungstabelle (AT) zugeordnet ist, wobei die Elemente der TRIM-Maske (TM) pro TRIM-Cluster (TC) ein TRIM-Bit (TB) enthalten, wobei über die Position des TRIM-Bits in der TRIM-Maske ein Zeiger auf den TRIM-Cluster (TP) identifiziert wird,
- und aktualisiert die TRIM-Masken (TM) fortlaufend in allen Aktualisierungsoperationen und Speicherbereinigungen der Speicherblöcke (PB).
Description
- Die Erfindung beschreibt ein Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf einem nichtflüchtigen Speichermedium, das über einen Hostbus an ein Hostsystem angeschlossen ist, in dessen Dateisystem Daten zur Freigabe gekennzeichnet sind, und im nichtflüchtigen Speichermedium die Daten von einem Speichermanagementprogramm in einem Speichercontroller in physikalischen Speicherblöcken mit jeweils einer Beschreibungsstruktur verwaltet werden und eine Zuordnung von logischen Datenblöcken zu physikalischen Speicherblöcken durch eine Zuordnungstabelle erfolgt. Die Erfindung betrifft des Weiteren ein solches Speichermanagementprogramm selbst, einen Speichercontroller mit einem solchen Speichermanagementprogram, sowie ein nichtflüchtiges Speichermedium mit einem solchen Speichercontroller.
- Die weit verbreiteten nichtflüchtigen Speichermedien (Flash-Speicher) sind HalbleiterSpeicher, die keine Spannungsquelle benötigen, um ihre Information zu behalten. Flash-Speicher finden ihre Anwendung als Speicherkarten für Digital-Kameras, Mobiltelefone, PDAs und Multi-Media Abspielgeräte. Darüber hinaus werden sie heute zunehmend in Computersystemen als Massenspeichermedien eingesetzt, insbesondere in Form sogenannter Solid State Drives (SSD), die sich gegenüber dem Computersystem wie die herkömmlichen magnetischen Festplatten verhalten und vom Betriebssystem des Computers angesprochen werden können. Im Inneren besteht das SSD im Wesentlichen aus einem Speichercontroller und einer von der Speichergröße abhängigen Anzahl aus Flash-Speicherelementen. Der Speichercontroller steuert, wie die Daten aus den Zellen der Flash-Speicherelemente gelesen bzw. geschrieben werden,
und verwaltet die Flash-Speicherzellen. Dabei werden die Flash-Speicherzellen in Speicherblöcke und diese wiederum in Pages organisiert, wobei es Pages mit einer Größe von 4 KB gibt, die einzeln gelesen und geschrieben werden können, und Speicherblöcke mit einer Größe zwischen 128 KB und 512 KB, die gelöscht werden können. Die Flash-Speicher besitzen die technisch bedingte Eigenschaft, dass Informationen nur Page-weise in vorher gelöschte Pages geschrieben werden können.
Das Löschen erfolgt jeweils für einen ganzen Speicherblock für alle Pages gemeinsam. - Betriebssysteme löschen nicht den Dateiinhalt einer gelöschten Datei selbst, sondern entfernen lediglich den Eintrag der Datei im Inhaltsverzeichnis des Dateisystems. Das beschleunigt den Löschvorgang, wodurch große Datenmengen sehr schnell gelöscht werden können, ermöglicht aber auch eine Wiederherstellung der gelöschten Datei. Bisher war es so, dass der Speichercontroller des SSD keine Information über derart gelöschte oder anderweitig freigewordene Speicherbereiche, die nicht mehr vom Dateisystem benutzt werden, erhalten hat. Dadurch müssen bei jeder Aktualisierung oder Speicherbereinigung der Speicherblöcke die von den Inhalten der eigentlich gelöschten Dateifragmente belegten Pages weiterhin mitgeschrieben werden, auch wenn die Daten nie wieder vom Computersystem verwendet werden. Um dieser Situation abzuhelfen, kann das Betriebssystem durch das neue TRIM-Kommando, das als Teil des ATA-Standards durch das Standardisierungsgremium T13 Technical Committee des INCITS im Rahmen der ATA8-ACS-2 Spezifikation standardisiert ist (http://t13.org/Documents/MinutesDefaultaspx?keyword=TRIM), dem SSD beim Löschen von Dateien mitteilen, dass es die davon belegten Speicherbereiche als ungültig markieren kann, anstelle deren Daten weiter vorzuhalten. Die Inhalte werden mit mehr weiter mitgeschrieben, wodurch die Schreibzugriffe auf das Laufwerk beschleunigt und zudem die Abnutzungseffekte der Flash-Speicher verringert werden. Die ungültig markierten Speicherblöcke werden dann beim nächsten Löschen ihres Speicherblocks frei. Beispielsweise unterstützen derzeit die Betriebssysteme Windows 7, Windows Server 2008 R2 und Linux ab Version 2.6.33 das TRIM-Kommando.
- Das TRIM-Kommando selbst ist nicht für das Löschen der Flash-Speicherzellen verantwortlich, sondern übermittelt lediglich einen zusätzlichen Status über die Nutzung der Speicherblöcke. Die Verwaltung der Speicherblöcke erfolgt dann über den Speichercontroller über die entsprechenden Garbage-Collection- bzw. Wear-Leveling-Algorithmen direkt durch das Speichermedium. Die Funktionsweise des TRIM.Kommandos ist beispielsweise in den Dokumenten „From write() down to the flash chips“ von Louis Gerbarg (http://www.devwhy.com/blog/2009/8/4/from-write-down-to-the-flash-chips.html) beschrieben.
- In der Patentschrift
US 2009/0010066 A1 - In der internationalen Patentanmeldung
WO 2008/154216 A1 LBA ) assoziiert sind, von dem Host-System in dem Massenspeichersystem; Zuteilen eines Blocks zusammenhängender Speicher-LBA -Adressen zum Adressieren der Daten, die mit den Host-LBA -Adressen assoziiert sind, wobei der Block zusammenhängender Speicher-LBA -Adressen nach der Zuteilung nur unbeschriebenen Speicherraum adressiert; und neues Zuordnen jeder der Host-LBA -Adressen für die empfangenen Daten in den Block zusammenhängender Speicher-LBA -Adressen, wobei jede Speicher-LBA -Adresse in zusammenhängender Form den empfangenen Daten in einer Reihenfolge, in der die empfangenen Daten empfangen werden, ungeachtet der Host-LBA -Adresse sequentiell zugewiesen wird. - Es ist Aufgabe der Erfindung, ein Verfahren und Vorrichtungen zu offenbaren, die es erlauben, die Informationen des TRIM-Kommandos welche Daten nicht mehr benötigt werden, vererbbar durch eine Vielzahl von physikalischen Speicherblock Generationen zu machen und diese Informationen auch nach dem Schreiben von Daten in diesen Speicherblock verfügbar zu halten.
- Diese Aufgabe wird durch die Lehre der unabhängigen Ansprüche gelöst. Ausführungsformen der Erfindung sind in den Unteransprüchen beschrieben.
- Eine Ausgestaltung der Erfindung sieht ein nichtflüchtiges Speichermedium vor, das über einen Hostbus mit einem Hostsystem verbunden ist. Ein solches Speichermedium ist in der Regel mit einem S-ATA- bzw. ATA-Interface ausgestattet, so dass es als Flash-Laufwerk vorwiegend in mobilen Computersystemen eingesetzt werden kann. Auf diesem Interface wird ein ATA-basierendes Software-Protokoll für den Datentransfer zwischen dem Speichermedium bzw. Laufwerk und dem Hostsystem bzw. Computer eingesetzt. Dadurch kann das Dateisystem des Hostsystems über den Hostbus mit dem Speichermedium wie mit einer herkömmlichen magnetischen Festplatte kommunizieren und mittels ATA-Kommandos ansprechen. Mit der aktuellen Erweiterung des ATA-Standards ist es nun möglich, dass das Hostsystem dem Speichermedium mittels des TRIM-Kommandos mitteilen kann, welche Dateien im Dateisystem vom Benutzer gelöscht wurden und damit nicht mehr benötigt werden.
- Das Speichermedium umfasst im Wesentlichen einen Speichercontroller und eine Vielzahl von Flash-Speicherelementen, die von der Speichergröße des Speichermediums abhängt. Dabei verwaltet ein Speichermanagementprogramm in dem Speichercontroller die physikalischen Speicherblöcke der Flash-Speicherelemente mit jeweils einer Beschreibungsstruktur im Speicherblock. In jedem der Speicherblöcke selbst ist wiederum eine Vielzahl von Pages organisiert, die einzeln gelesen und geschrieben werden. Das Löschen hingegen erfolgt technisch bedingt jeweils für einen ganzen Speicherblock. Nach der Initialisierung des Speichermediums kann der Speichercontroller mit vollem Tempo in freie Blöcke schreiben. Mit zunehmender Nutzungsdauer des Speichermediums schwinden jedoch die verfügbaren freien Blöcke. Der Speichercontroller muss dann immer öfter vor jedem Schreibvorgang Speicherblöcke einlesen und prüfen, ob die Daten noch in Gebrauch sind, bevor er sie löschen kann, was zusätzliche Zeit kostet und die Anzahl freier Speicherblöcke reduziert.
- Das TRIM-Kommando übernimmt diese Aufgabe im Vorfeld der Schreibvorgänge und teilt dem Speichermedium ungenutzte oder ungültige Datenblöcke mit, die zum Zweck der späteren Wiederbeschreibung markiert werden können. Dabei setzt der Speichercontroller die im TRIM-Kommando mitgeteilten logischen Datenblöcke durch eine Zuordnungstabelle in die physikalischen Speicherblöcke des Speichermediums um. Besonders vorteilhaft werden dabei TRIM-Cluster gebildet, die eine Untermenge eines Speicherblockes darstellen. Ein TRIM-Cluster umfasst eine oder mehrere Pages, bei einer derzeit aktuellen Speicherblockgröße von 64 oder 128 Pages sind dies 2 oder 4 Pages pro TRIM-Cluster. Dadurch ist ein physikalischer Speicherblock in mehrere TRIM-Cluster unterteilt. Eine vorteilhafte Ausführung der Erfindung definiert eine TRIM-Maske mit Elementen zu den TRIM-Clustern des Speicherblocks und speichert die TRIM-Maske innerhalb der jeweiligen Beschreibungsstruktur des Speicherblocks.
Durch den Speichercontroller werden die Löschinformationen des TRIM-Kommandos über die Zuordnungstabelle in die Elemente der TRIM-Maske umgesetzt, wobei die TRIM-Maske pro TRIM-Cluster ein TRIM-Bit enthält. Die Position des TRIM-Bits in der TRIM-Maske definiert implizit einen Zeiger auf den TRIM-Cluster. Wie viele Pages zu einem TRIM-Cluster gehören, hängt von der Anzahl Pages pro Speicherblock und der Länge in Bits der TRIM-Maske ab. Vorteilhaft wird dadurch die ganze Löschinformation des TRIM-Kommandos verdichtet, umgesetzt in Speicherblock basierende Informationen und für alle Löschelemente des TRIM-Kommandos sich vererbend in die Beschreibungsstruktur des Speicherblocks geschrieben. Zusätzlich wird eine Protokolldatei auf dem Flash-Speichermedium mitgeschrieben, die die vom TRIM-Kommando erhaltenen Informationen verfolgt und dauerhaft für den Einsatz nach einem möglichen unerwarteten Abschaltvorgang bereitstellt. - Die TRIM-Masken werden fortlaufend in allen Aktualisierungsoperationen und Speicherbereinigungsoperationen der Speicherblöcke aktualisiert. So wird nach dem Empfang des TRIM-Kommandos, das eine Liste mit logischen Datenblöcken enthält, für alle umgesetzten TRIM-Cluster das jeweilige TRIM-Bit auf 1 gesetzt. Bei einer Aktualisierung der Daten im Speicherblock werden die entsprechenden TRIM-Bits bei dem TRIM-Cluster gelöscht, in dem die neuen Daten geschrieben wurden. Dadurch wird der Inhalt bereits aktualisierter Pages permanent gemacht. Besonders vorteilhaft sieht die Erfindung vor, dass bei einer Speicherbereinigung nur die Pages eines alten Speicherblocks in einen neuen physikalischen Speicherblock kopiert werden, deren TRIM-Bit in der TRIM-Maske auf 0 gesetzt ist. Hingegen werden Pages eines TRIM-Clusters, deren entsprechendes TRIM-Bit auf 1 gesetzt ist, nicht in den neuen Speicherblock übertragen. Nach dem Löschen des alten Speicherblockes, beispielsweise über einen Garbage-Collection- oder Wear-Leveling-Algorithmus, sind diese Pages für eine Wiederbeschreibung frei. Vorteilhaft werden dadurch alle unnötigen Page Programmierungen vermieden, wodurch die Lebensdauer und Schreibgeschwindigkeit der Flash-Speicherelemente erhöht wird.
- Zum Produktionszeitpunkt werden bei der Initialisierung des Flash-Speichermediums alle TRIM-Bits in allen für Nutzerdaten vorgesehenen Speicherblöcken auf 1 gesetzt.
- Die Ausgestaltung der Erfindung wird anhand der Figuren beispielhaft erläutert.
-
1 zeigt ein Blockdiagramm des mit einem Hostsystem verbundenen Speichermediums -
2 zeigt ein Blockdiagramm der Struktur des TRIM-Kommandos -
3 zeigt ein Blockdiagramm der Umsetzung der Löschinformation des TRIM-Kommandos -
4 zeigt ein Blockdiagramm der Organisation der physikalischen Speicherblöcke -
5 zeigt ein Blockdiagramm der Struktur der TRIM-Maske -
6 zeigt ein Flussdiagramm zur Bearbeitung des TRIM-Kommandos -
7 zeigt ein Flussdiagramm zur Bearbeitung der Daten-Aktualisierung -
1 zeigt eine Übersicht eines mit einem HostsystemHS verbunden nichtflüchtigen SpeichermediumsSM , die über einen HostbusHB miteinander verbunden sind. Über den HostbusHB kommuniziert das DateisystemFS des HostsystemsHS mit dem SpeichercontrollerMC im SpeichermediumSM , wobei mittels des TRIM-KommandosTR dem SpeichermediumSM mitgeteilt wird, welche Daten nicht mehr benötigt werden. Der SpeichercontrollerMC kann dann auf Basis der erhaltenen Informationen die freigewordenen Flash-Speicherzellen in den SpeicherelementenFM zurücksetzen und damit den Schreibvorgang für neue Daten beschleunigen. - In
2 ist die Struktur des TRIM-KommandosTR gezeigt, wie er in der derzeit aktuellen ATA8-ACS-2 Spezifikation beschrieben ist. Derzeit ist lediglich das TRIM-Feature (Bit0 ) im Request Command spezifiziert. Der TRIM Request Data Bereich enthält einen oder mehrere logische Datenblöcke als Entry Einträge in einer Liste, jeweils eine logische BlockadresseLBA und eine Bereichslänge umfassend. Die Datenblöcke können sich überlappen und sie müssen nicht sortiert sein. - In
3 ist die Umsetzung der Löschinformationen des TRIM-KommandosTR in die physikalische Speicherblockstruktur des SpeichermediumsSM durch den SpeichercontrollerMC dargestellt. Oberhalb der Doppelpfeile ist die logische EbeneLL des Dateisystems auf dem HostsystemHS dargestellt. Unterhalb der Doppelpfeile ist physikalische EbenePL des SpeichercontrollersMC auf dem SpeichermediumSM gezeigt. - Eine Datei des Dateisystems
FS ist dabei in einem oder mehreren logischen BlöckenLB0..x organisiert, die jeweils durch eine logische BlockadresseLBA0..x adressiert werden. Beim Löschen einer Datei durch das Dateisystem wird im TRIM-KommandoTR eine Liste mit Entry EinträgenEN0..x der logischen DatenblöckeLB0..x übertragen, die die Daten der Datei beinhalten die nun nicht mehr benötigt werden. Über die ZuordnungstabelleAT werden vom Speichermanagementprogramm des SpeichercontrollersMC die logischen DatenblöckeLB0..x in die physikalische SpeicherblöckePB0..n umgesetzt, die jeweils durch eine physikalische BlockadressePBA0..n adressiert werden. Dabei umfasst ein physikalischer SpeicherblockPB0..n eine oder mehrere PagesPG0..y , die wiederum vorteilhaft zu einem oder mehreren TRIM-Clustern TC0.1 mit jeweils 2 oder 4 PagesPG0..y zusammengefasst werden. Für jeden TRIM-ClusterTC0..i ist ein assoziiertes TRIM-Bit in der TRIM-Maske hinterlegt, wobei über die Position des TRIM-Bits die Zeiger auf die TRIM-ClusterTP0..i identifiziert werden. -
4 zeigt eine Übersicht der Organisation der physikalischen SpeicherblöckePB0..n innerhalb des SpeichermediumsSM . Dabei enthält das SpeichermediumSM einen oder mehrere physikalische SpeicherblöckePB0..n , die über eine physikalische BlockadressePBA0..n adressiert werden. In jedem der SpeicherblöckePB0..n sind wiederum mehrere PagesPG0..y organisiert, die einzeln gelesen und geschrieben werden können. - Zu jedem Speicherblock
PB0..n gehört eine BeschreibungsstrukturDS , in der das Speichermanagement des SpeichercontrollersMC seine Daten zum Verwalten der PagesPG0..y speichert, wie beispielsweise die ZuordnungstabelleAT . Die jeweilige BeschreibungsstrukturDS der physikalischen SpeicherblöckePB0..n umfasst auch die erfinderische TRIM-MaskeTM , die TRIM-BitsTB0..i und damit Zeiger auf TRIM-ClusterTP0..i enthält. Dabei ist der jeweilige physikalische SpeicherblockPB0..n in mehrere TRIM-ClusterTC0..i unterteilt, wobei ein TRIM-ClusterTC0..i eine oder mehrere PagesPG0..y umfasst, die Daten bzw. Datenfragmente der zu löschenden Datei des HostsystemsHS enthalten. Die BeschreibungsstrukturDS ist vorteilhaft als Teil der AdresszuordnungstabelleAT angeordnet. - In
5 ist eine Ausführungsform der erfinderischen TRIM-MaskeTM gezeigt. Die TRIM-MaskeTM enthält pro TRIM-ClusterTC0.1 ein TRIM-BitTB0..i . Die TRIM-ClusterTC0.1 werden über die Position des TRIM-BitsTB0.1 in der TRIM-MaskeTM identifiziert. Die Anzahl der zu einem TRIM-ClusterTC0.1 gehörenden Pages hängt von der Anzahl Pages pro SpeicherblockPB0..n und der Länge in Bits der TRIM-MaskeTM ab. Hieraus folgend definiert sich der Zeiger auf den assoziierten TRIM-ClusterTP0..i . - Ein auf 1 gesetztes TRIM-Bit
TB0..i zeigt an, dass die PagesPG0..y des zugehörigen TRIM-ClusterTC0..i beim nächsten Speicherbereinigungsvorgang des physikalischen SpeicherblocksPB0..n nicht übertragen werden und folglich gelöscht werden bzw. zum Löschen freigegeben werden. Ein auf 0 gesetztes TRIM-BitTB0..i hingegen veranlasst ein Kopieren der PagesPG0..y des zugehörigen SpeicherblockesPB0..n . - In
6 ist der Ablauf der TRIM-Operation zur Bearbeitung des TRIM-KommandosTR im SpeichercontrollerMC des SpeichermediumsSM dargestellt. Nach dem Empfangen des ATA-Kommandos „TRIM“ vom Hostsystem werden die Informationen des ATA-Kommandos eingelesen. Zuerst wird geprüft, ob im Feature Element das Bit0 auf 1 gesetzt ist, wodurch die Verwendung dieses ATA-Kommandos als TRIM-Kommando festgelegt ist. - Falls ein TRIM-Kommando gesendet ist, werden alle in der Entry-Liste des TRIM-Kommandos enthaltenen logischen Blockadressen und die jeweiligen Bereichslängen umgesetzt in Speicherblock basierende TRIM-Masken Informationen. Falls darin wenigstens ein kompletter TRIM-Cluster enthalten ist, wird dieser TRIM-Cluster in die TRIM-Maske der Beschreibungsstruktur des physikalischen Speicherblocks geschrieben, indem das assoziierte TRIM-Bit des TRIM-Clusters in der TRIM-Maske gesetzt wird.
- In
7 ist der Ablauf der Daten-Aktualisierung in den physikalischen SpeicherblöckenPB0..n gezeigt. Hierfür wird zuerst ein frisch gelöschter Pufferblock für die Verwendung reserviert. Danach wird die Beschreibungsstruktur des zu aktualisierenden Speicherblocks eingelesen. Die neuen Daten der Daten-Aktualisierung werden in den Pufferblock geschrieben, wobei die entsprechenden TRIM-Bits bei dem TRIM-Cluster gelöscht werden, in dem neue Daten geschrieben wurden. - Falls im späteren Verlauf der Daten-Aktualisierung der Pufferblock aufgelöst wird, werden alle Pages, bei denen kein entsprechendes TRIM-Bit in der TRIM-Maske gesetzt ist und die mit neuen Daten aktualisiert sind, in einen neuen physikalischen Speicherblock kopiert. Hingegen werden alle anderen Pages, bei denen ein entsprechendes TRIM-Bit gesetzt ist, nicht in den neuen Speicherblock übertragen. Anschließend erfolgt die Freigabe des alten Speicherblocks zum Löschen.
- Bezugszeichenliste
-
- AT
- Zuordnungstabelle
- DS
- Beschreibungsstruktur des Speicherblocks
- EN
- Entry
- EN0..x
- Entry 0 bis x
- FM
- Flash-Speicherelemente
- FS
- Dateisystem
- HB
- Hostbus
- HS
- Hostsystem
- LB
- Logischer Datenblock
- LB0..x
- Logischer Datenblock 0 bis x
- LBA
- Logisch Blockadresse
- LBA0..x
- Logische Blockadresse 0 bis x
- LL
- Logische Ebene
- MC
- Speichercontroller
- PB
- Physikalischer Speicherblock
- PB0..n
- Physikalischer Speicherblock 0 bis n
- PBA
- Physikalische Blockadresse
- PBA0..n
- Physikalische Blockadresse 0 bis n
- PG
- Page
- PG0..y
- Page 0 bis y
- PL
- Physikalische Ebene
- SM
- Speichermedium
- TB
- TRIM-Bit für TRIM-Cluster
- TB0..i
- TRIM-Bit für TRIM-Cluster 0 bis i
- TC
- TRIM-Cluster
- TC0..i
- TRIM-Cluster 0 bis i
- TCS
- Satz von TRIM-Clustern
- TM
- TRIM-Maske
- TP
- Zeiger auf TRIM-Cluster
- TP0..i
- Zeiger auf TRIM-Cluster 0 bis i
- TR
- TRIM-Kommando
Claims (17)
- Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf einem nichtflüchtigen Speichermedium (SM), das über einen Hostbus (HB) an ein Hostsystem (HS) angeschlossen ist, in dessen Dateisystem (FS) Daten zur Freigabe gekennzeichnet sind, und im nichtflüchtigen Speichermedium (SM) die Daten von einem Speichermanagementprogramm in einem Speichercontroller (MC) in physikalischen Speicherblöcken (PB) mit jeweils einer Beschreibungsstruktur (DS) verwaltet werden und eine Zuordnung von logischen Datenblöcken (LB) zu physikalischen Speicherblöcken (PB) durch eine Zuordnungstabelle (AT) erfolgt, mit den Schritten: - das Hostsystem (HS) informiert das Speichermanagementprograrnm über das mögliche Löschen von logischen Datenblöcken (LB) mittels eines TRIM-Kommandos (TR), - das Speichermanagementprogramm bildet aus den zu den logischen Datenblöcken (LB) zugeordneten Speicherbereichen TRIM-Cluster (TC), die jeweils eine Untermenge eines Speicherblocks (PB) darstellen, - und nimmt in die Beschreibungsstruktur (DS) der physikalischen Speicherblöcke (PB) eine TRIM-Maske (TM) mit Elementen zu den TRIM-Clustern (TC) des Speicherblocks (PB) auf, zu denen die Löschinformation des TRIM-Kommandos (TR) über die Zuordnungstabelle (AT) zugeordnet ist, wobei die Elemente der TRIM-Maske (TM) pro TRIM-Cluster (TC) ein TRIM-Bit (TB) enthalten, wobei über die Position des TRIM-Bits in der TRIM-Maske ein Zeiger auf den TRIM-Cluster (TP) identifiziert wird, - und aktualisiert die TRIM-Masken (TM) fortlaufend in allen Aktualisierungsoperationen und Speicherbereinigungen der Speicherblöcke (PB).
- Verfahren nach
Anspruch 1 , dadurch gekennzeichnet, dass die Speicherbereiche des physikalischen Datenblocks (PB) Pages (PG) sind. - Verfahren nach
Anspruch 2 , dadurch gekennzeichnet, dass eine oder mehrere Pages (PG) zu einem TRIM-Cluster (TC) gruppiert sind. - Verfahren nach
Anspruch 1 , dadurch gekennzeichnet, dass die Informationen des TRIM-Kommandos (TR) eine Liste von einem oder mehreren logischen Blockadressen (LBA) umfasst, die über die Zuordnungstabelle (AT) zu TRIM-Clustern (TC) zugeordnet werden, und für den jeweiligen TRIM-Cluster (TC) das zugehörige TRIM-Bit (TB) auf 1 gesetzt wird. - Verfahren nach
Anspruch 1 , dadurch gekennzeichnet, dass bei einer Aktualisierung der Daten des Speicherblocks (PB) die TRIM-Bits (TB) für den jeweils geänderten TRIM-Cluster (TC) auf 0 gelöscht werden. - Verfahren nach
Anspruch 1 , dadurch gekennzeichnet, dass bei einer Speicherbereinigung des Speicherblocks (PB) nur die Pages (PG) eines alten Speicherblocks (PB) in einen neuen Speicherblock kopiert werden, deren TRIM-Bit (TB) in der TRIM-Maske (TM) auf 0 gesetzt sind. - Verfahren nach
Anspruch 1 , dadurch gekennzeichnet, dass bei der Initialisierung des Flash-Speichermediums (SM) alle TRIM-Bits (TB) in allen für Nutzerdaten vorgesehenen Speicherblöcken (PB) auf 1 gesetzt werden. - Speichermanagementprogramm für einen Speichercontroller (MC) zur Steuerung eines nichtflüchtigen Speichermediums (SM), wobei im Speichermedium (SM) die Daten von dem Speichermanagementprogramm im Speichercontroller (MC) in physikalischen Speicherblöcken (PB) mit jeweils einer Beschreibungsstruktur (DS) verwaltet werden und eine Zuordnung von logischen Datenblöcken (LB) zu physikalischen Speicherblöcken (PB) durch eine Zuordnungstabelle (AT) erfolgt, wobei das Speichermanagementprogramm konfiguriert ist, den Speichercontroller (MC) zu veranlassen, die folgenden Schritte zur Freigabe nicht länger benötigter Speicherbereiche auf dem nichtflüchtigen Speichermedium (SM) auszuführen, wenn dieses über einen Hostbus (HB) an ein Hostsystem (HS) angeschlossen ist, in dessen Dateisystem (FS) Daten zur Freigabe gekennzeichnet sind: - Empfangen, von dem Hostsystem (HS), von Informationen über das mögliche Löschen von logischen Datenblöcken (LB) mittels eines TRIM-Kommandos (TR), - Bilden von TRIM-Clustern (TC) aus den zu den logischen Datenblöcken (LB) zugeordneten Speicherbereichen, wobei die TRIM-Cluster jeweils eine Untermenge eines Speicherblocks (PB) darstellen, - Aufnehmen einer TRIM-Maske (TM) mit Elementen zu den TRIM-Clustern (TC) des Speicherblocks (PB) in die Beschreibungsstruktur (DS) der physikalischen Speicherblöcke (PB), zu denen die Löschinformation des TRIM-Kommandos (TR) über die Zuordnungstabelle (AT) zugeordnet ist, wobei die Elemente der TRIM-Maske (TM) pro TRIM-Cluster (TC) ein TRIM-Bit (TB) enthalten, wobei über die Position des TRIM-Bits in der TRIM-Maske ein Zeiger auf den TRIM-Cluster (TP) identifiziert wird, und - Aktualisieren der TRIM-Masken (TM) fortlaufend in allen Aktualisierungsoperationen und Speicherbereinigungen der Speicherblöcke (PB).
- Speichermanagementprogramm nach
Anspruch 8 , dadurch gekennzeichnet, dass die Speicherbereiche des physikalischen Datenblocks (PB) Pages (PG) sind. - Speichermanagementprogramm nach
Anspruch 9 , dadurch gekennzeichnet, dass das Speichermanagementprogramm des Weiteren konfiguriert ist, den Speichercontroller (MC) zu veranlassen, eine oder mehrere Pages (PG) zu einem TRIM-Cluster (TC) zu gruppieren. - Speichermanagementprogramm nach
Anspruch 10 , dadurch gekennzeichnet, dass das Speichermanagementprogramm des Weiteren konfiguriert ist, den Speichercontroller (MC) zu veranlassen, die Elemente der TRIM-Maske (TM) so zu festzulegen, dass sie pro TRIM-Cluster (TC) ein TRIM-Bit (TB) enthalten, und über die Position des TRIM-Bits in der TRIM-Maske ein Zeiger auf den TRIM-Cluster (TP) zu identifizieren. - Speichermanagementprogramm nach
Anspruch 8 , dadurch gekennzeichnet, die Informationen des TRIM-Kommandos (TR) eine Liste von einem oder mehreren logischen Blockadressen (LBA) umfasst, die über die Zuordnungstabelle (AT) zu TRIM-Clustern (TC) zugeordnet werden, und dass das Speichermanagementprogramm des Weiteren konfiguriert ist, den Speichercontroller (MC) zu veranlassen, für den jeweiligen TRIM-Cluster (TC) das zugehörige TRIM-Bit (TB) auf 1 zu setzen. - Speichermanagementprogramm nach
Anspruch 8 , dadurch gekennzeichnet, dass das Speichermanagementprogramm des Weiteren konfiguriert ist, den Speichercontroller (MC) zu veranlassen, bei einer Aktualisierung der Daten des Speicherblocks (PB) die TRIM-Bits (TB) für den jeweils geänderten TRIM-Cluster (TC) auf 0 zu löschen. - Speichermanagementprogramm nach
Anspruch 8 , dadurch gekennzeichnet, dass das Speichermanagementprogramm des Weiteren konfiguriert ist, den Speichercontroller (MC) zu veranlassen, bei einer Speicherbereinigung des Speicherblocks (PB) nur die Pages (PG) eines alten Speicherblocks (PB) in einen neuen Speicherblock zu kopieren, deren TRIM- Bit (TB) in der TRIM-Maske (TM) auf 0 gesetzt sind. - Speichermanagementprogramm nach
Anspruch 8 , dadurch gekennzeichnet, dass das Speichermanagementprogramm des Weiteren konfiguriert ist, den Speichercontroller (MC) zu veranlassen, bei der Initialisierung des Flash-Speichermediums (SM) alle TRIM-Bits (TB) in allen für Nutzerdaten vorgesehenen Speicherblöcken (PB) auf 1 zu setzen. - Speichercontroller (MC) mit einem Speichermanagementprogramm gemäß einem der
Ansprüche 8 bis15 . - Nichtflüchtiges Speichermedium (SM) mit einem Speichercontroller (MC) gemäß
Anspruch 16 .
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/DE2010/075124 WO2012062233A1 (de) | 2010-11-08 | 2010-11-08 | Verfahren zur freigabe nicht länger benötigter speicherbereiche auf nichtflüchtigen speichermedien |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112010005870A5 DE112010005870A5 (de) | 2013-07-25 |
DE112010005870B4 true DE112010005870B4 (de) | 2019-10-10 |
Family
ID=44483744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112010005870.9T Active DE112010005870B4 (de) | 2010-11-08 | 2010-11-08 | Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE112010005870B4 (de) |
WO (1) | WO2012062233A1 (de) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012022728A1 (de) | 2012-11-21 | 2014-05-22 | Unify Gmbh & Co. Kg | Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens |
DE102013100820B4 (de) | 2013-01-28 | 2018-05-30 | Fujitsu Technology Solutions Intellectual Property Gmbh | Verfahren zum sicheren Löschen eines nichtflüchtigen Halbleiter-Massenspeichers, Computersystem sowie Computerprogrammprodukt |
CN103123609B (zh) * | 2013-03-13 | 2015-07-15 | 中国科学院上海微系统与信息技术研究所 | 存储器的分块管理方法 |
US9619158B2 (en) | 2014-12-17 | 2017-04-11 | International Business Machines Corporation | Two-level hierarchical log structured array architecture with minimized write amplification |
US9606734B2 (en) | 2014-12-22 | 2017-03-28 | International Business Machines Corporation | Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008154216A1 (en) | 2007-06-08 | 2008-12-18 | Sandisk Corporation | Method and system for storage address re-mapping for a memory device |
US20090010066A1 (en) | 2007-07-02 | 2009-01-08 | Samsung Electronics Co., Ltd. | Flash memory device and method in which trim information is stored in memory cell array |
US20100211737A1 (en) * | 2006-12-06 | 2010-08-19 | David Flynn | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
-
2010
- 2010-11-08 DE DE112010005870.9T patent/DE112010005870B4/de active Active
- 2010-11-08 WO PCT/DE2010/075124 patent/WO2012062233A1/de active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211737A1 (en) * | 2006-12-06 | 2010-08-19 | David Flynn | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
WO2008154216A1 (en) | 2007-06-08 | 2008-12-18 | Sandisk Corporation | Method and system for storage address re-mapping for a memory device |
US20090010066A1 (en) | 2007-07-02 | 2009-01-08 | Samsung Electronics Co., Ltd. | Flash memory device and method in which trim information is stored in memory cell array |
Non-Patent Citations (2)
Title |
---|
ATA-ACS2 Spezifikation * |
From write() down to the flash chips * |
Also Published As
Publication number | Publication date |
---|---|
WO2012062233A1 (de) | 2012-05-18 |
DE112010005870A5 (de) | 2013-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19782041B4 (de) | Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher | |
DE60316171T2 (de) | Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem | |
DE69635962T2 (de) | Flash-Speicher-Massenspeichersystem und Verfahren dafür | |
DE60319407T2 (de) | Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems | |
DE102017104150B4 (de) | Abnutzungsausgleich in Speichervorrichtungen | |
DE102019116520A1 (de) | Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind | |
DE69034191T2 (de) | EEPROM-System mit aus mehreren Chips bestehender Blocklöschung | |
DE60317551T2 (de) | Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem | |
DE102020107659A1 (de) | Zonenbildung für gezonte namensräume | |
DE102012216034B4 (de) | Direkte Speicheradressierung für Solid-State-Laufwerke | |
DE112010002663B4 (de) | Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt | |
DE112020005060T5 (de) | Ratengrenze für den übergang von zonen zum öffnen | |
DE112020000139T5 (de) | Nicht sequentiell in zonen aufgeteilte namensräume | |
DE102008036822A1 (de) | Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem | |
EP2923261B1 (de) | VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS | |
DE112010005870B4 (de) | Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien | |
DE102008033518B4 (de) | Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement | |
DE112006004187T5 (de) | Initativer Abnutzungsausgleich für einen nicht-flüchtigen Speicher | |
DE102010018765A1 (de) | Speichervorrichtung und Speicherverfahren | |
DE112010004667T5 (de) | Speichervorrichtung und Speichersteuerung | |
DE112017005955T5 (de) | Speichersystem und verfahren zur schlanken speicherzuweisung | |
DE69820164T2 (de) | Speichervorrichtung sowie Datenlese- und Schreibverfahren | |
DE112020005787T5 (de) | Verbesserte dateisystem-unterstützung für zonen-namespace-speicher | |
DE112017005782T5 (de) | Warteschlange für Speichervorgänge | |
DE102018123670A1 (de) | Speicherungssystem, Rechensystem und Verfahren dafür |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0012020000 Ipc: G11C0008000000 |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0012020000 Ipc: G11C0008000000 Effective date: 20140314 |
|
R016 | Response to examination communication | ||
R082 | Change of representative |
Representative=s name: WALLINGER RICKER SCHLOTTER TOSTMANN PATENT- UN, DE |
|
R082 | Change of representative |
Representative=s name: WALLINGER RICKER SCHLOTTER TOSTMANN PATENT- UN, DE |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |