DE112019005369T5 - Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust - Google Patents

Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust Download PDF

Info

Publication number
DE112019005369T5
DE112019005369T5 DE112019005369.8T DE112019005369T DE112019005369T5 DE 112019005369 T5 DE112019005369 T5 DE 112019005369T5 DE 112019005369 T DE112019005369 T DE 112019005369T DE 112019005369 T5 DE112019005369 T5 DE 112019005369T5
Authority
DE
Germany
Prior art keywords
host
command
ssd
data
memory
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.)
Pending
Application number
DE112019005369.8T
Other languages
English (en)
Inventor
Jameer Mulani
Anindya Rai
Saugata Das Purkayastha
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE112019005369T5 publication Critical patent/DE112019005369T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)

Abstract

Es werden Vorrichtungen und Techniken zum Umschalten einer Festkörpervorrichtung (SSD) zwischen einem herkömmlichen SSD-Modus und einem Open-Channel-SSD-Modus (OCSSD-Modus) bereitgestellt. Unter einem Gesichtspunkt wird ein Befehlssatz zum Kommunizieren unterschiedlicher Datentypen von einer Flash-Übersetzungsschicht (FTL) zwischen dem Host und der SSD definiert. Die Befehle können unterschiedliche vorbestimmte Sätze von Bits einschließen, die unterschiedliche Arten von FTL-DATEN in einem standardisierten Format tragen. Die Befehle können unter Verwendung reservierter Datenwörter in einer Schnittstellenspezifikation übertragen werden, die den Host mit der SSD verbindet. Die Befehle können Befehle zum Übertragen einer logisch-physischen Adresstabelle, einer Gültigkeitsbitmap und einer Abnutzungstabelle einschließen. Ein Umschaltmodus-Befehl kann ein Bit einschließen, das angibt, ob der Modus von herkömmlicher SSD zu OCSSD oder von OCSSD zu herkömmlicher SSD umgeschaltet werden soll.

Description

  • HINTERGRUND
  • Die vorliegende Technologie bezieht sich auf den Betrieb von Speicherungs- und Speichervorrichtungen.
  • Halbleiterspeichervorrichtungen sind zur Verwendung in verschiedenen elektronischen Vorrichtungen beliebter geworden. Zum Beispiel wird ein nichtflüchtiger Halbleiterspeicher in Mobiltelefonen, Digitalkameras, persönlichen digitalen Assistenten, mobilen Rechenvorrichtungen, nichtmobilen Rechenvorrichtungen und anderen Vorrichtungen verwendet.
  • Ein Ladungsspeichermaterial wie ein Floating-Gate oder ein Ladungsfängermaterial kann in solchen Speichervorrichtungen verwendet werden, um eine Ladung zu speichern, die einen Datenzustand darstellt. Ein Ladungsfängermaterial kann vertikal in einer dreidimensionalen (3D) gestapelten Speicherstruktur oder horizontal in einer zweidimensionalen (2D) Speicherstruktur angeordnet sein. Ein Beispiel für eine 3D-Speicherstruktur ist die Bit-Cost-Scalable-Architektur (BiCS-Architektur), die einen Stapel alternierender leitender und dielektrischer Schichten aufweist.
  • Eine Speichervorrichtung schließt Speicherzellen ein, die beispielsweise in Reihe, in NAND-Ketten, angeordnet sein können, wobei Auswahlgatetransistoren an den Enden einer NAND-Kette bereitgestellt sind, um einen Kanal der NAND-Kette wahlweise mit einer Sourceleitung oder einer Bitleitung zu verbinden. Beim Betrieb solcher Speichervorrichtungen ergeben sich jedoch verschiedene Herausforderungen.
  • Figurenliste
    • 1 ist ein Blockdiagramm einer beispielhaften Speicherungsvorrichtung.
    • 2 ist ein Blockdiagramm der beispielhaften Speicherungsvorrichtung 100 aus 1, das weitere Einzelheiten der Steuerung 122 darstellt.
    • 3 ist eine perspektivische Ansicht einer Speichervorrichtung 300, die einen Satz von Blöcken in einer beispielhaften 3D-Konfiguration der Speicherstruktur 126 von 1 aufweist.
    • 4 stellt einen beispielhaften Transistor 420 dar.
    • 5 stellt eine beispielhafte Ansicht von NAND-Ketten in einem Block BLK0 dar, die mit 3 übereinstimmt.
    • 6A stellt eine beispielhafte Vth-Verteilung von Speicherzellen dar, wobei acht Datenzustände in einem Beispiel der MLC-Programmierung verwendet werden.
    • 6B stellt eine beispielhafte Vth-Verteilung von Speicherzellen dar, wobei zwei Datenzustände in der SLC-Programmierung verwendet werden.
    • 7 stellt eine beispielhafte Anordnung der Steuerung 122 von 1 dar, die mit Blöcken von Speicherzellen in Gruppen von parallelen Einheiten (PU) im OCSSD-Modus kommuniziert.
    • 8 stellt einen beispielhaften logischen Blockadressraum dar, übereinstimmend mit 7.
    • 9 stellt beispielhafte Prozesse der Steuerung 122 und des Hosts 140 von 1 dar.
    • 10A stellt ein Beispiel der Hostdateisystem-Tabelle 900 von 9 dar.
    • 10B stellt ein Beispiel der L2P-Tabelle 910 von 9 dar.
    • 10C stellt ein Beispiel der Gültigkeitsbitmap 911 von 9 dar.
    • 10C stellt ein Beispiel der Abnutzungstabelle 912 von 9 dar.
    • 11A stellt die Kommunikation von Befehlen zwischen dem Host und der SSD in einem Prozess zum Umschalten des Modus der SSD von einer herkömmlichen SSD zu einer Open-Channel-SSD (OCSSD) dar.
    • 11 B stellt die Kommunikation von Befehlen zwischen dem Host und der SSD in einem Prozess zum Umschalten des Modus der SSD von einer Open-Channel-SSD (OCSSD) zu einer herkömmlichen SSD dar.
    • 12A stellt einen beispielhaften Befehl zum Umschalten des Modus einer SSD, der mit dem ersten Befehl von 11 übereinstimmt, dar.
    • 12B stellt einen beispielhaften Befehl zum Synchronisieren einer L2P-Tabelle, der mit dem zweiten Befehl von 11 übereinstimmt, dar.
    • 12C stellt einen beispielhaften Befehl zum Synchronisieren einer Gültigkeitsbitmap, der mit dem dritten Befehl von 11 übereinstimmt, dar.
    • 12D stellt einen beispielhaften Befehl zum Synchronisieren einer Abnutzungstabelle, der mit dem vierten Befehl von 11 übereinstimmt, dar.
    • 13A stellt einen beispielhaften Prozess an einem Host zum Übergehen einer SSD von einer herkömmlichen SSD zu einer OCSSD dar.
    • 13B stellt einen beispielhaften Prozess an einer SSD dar, der ein Gegenstück zu dem Prozess von 13A ist.
    • 13C stellt einen beispielhaften Prozess an einem Host zum Übergehen einer SSD von einer OCSSD zu einer herkömmlichen SSD dar.
    • 13D stellt einen beispielhaften Prozess an einer SSD, der ein Gegenstück zu dem Prozess von 13C ist, dar.
    • 14A stellt den Transfer von FTL-Daten zwischen einem Host und einer SSD übereinstimmend mit 13A -13D dar.
    • 14B stellt den Transfer von FTL-Daten zwischen dem Host und einer anderen Anwendung dar.
    • 15 stellt unterschiedliche Teile einer Speicherzellenanordnung dar, die in SSD- und OCSSD-Modi verwendet wird.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Einrichtungen und Techniken zum Umschalten einer Festkörpervorrichtung (SSD) zwischen einem herkömmlichen SSD-Modus und einem Open-Channel-SSD-Modus bereitgestellt.
  • In einer Speichervorrichtung können Speicherzellen in Blöcken angeordnet sein, wie in 3 dargestellt. Die Speicherzellen können z. B. in NAND-Ketten zusammengefügt werden, wie in 5 dargestellt. Ferner können die Speicherzellen in einer 2D- oder 3D-Struktur angeordnet sein. Bei einer 3D-Speicherstruktur können die Speicherzellen in vertikalen NAND-Ketten in einem Stapel angeordnet sein, wobei der Stapel alternierende leitende und dielektrische Schichten aufweist. Die leitenden Schichten wirken als Wortleitungen, die mit den Speicherzellen verbunden sind. Jede NAND-Kette kann die Form einer Säule haben, die sich mit den Wortleitungen schneidet, um die Speicherzellen zu bilden. In einer 2D-Speicherstruktur können die Speicherzellen in horizontalen NAND-Ketten auf einem Substrat angeordnet sein.
  • Die Speicherzellen in einem Block können Programmier-, Lese- und Löschvorgänge durchlaufen. Ein Programmiervorgang kann einen oder mehrere Sätze zunehmender Programmierspannungen einschließen, oder Pulse, die in entsprechenden Programmierschleifen oder Programmierungs-Verifizierungs-Iterationen an eine Wortleitung angelegt werden. Verifizierungstests können nach jeder Programmierspannung durchgeführt werden, um zu bestimmen, ob die Speicherzellen ein Programmieren abgeschlossen haben. Wenn ein Programmieren für eine Speicherzelle abgeschlossen ist, kann sie von einem weiteren Programmieren ausgeschlossen werden, während ein Programmieren für andere Speicherzellen in nachfolgenden Programmierschleifen fortgeführt wird.
  • Jede Speicherzelle kann einem Datenzustand gemäß Schreibdaten in einem Programmierbefehl zugeordnet sein. Basierend auf ihrem Datenzustand bleibt eine Speicherzelle entweder in dem gelöschten Zustand (Er-Zustand) oder wird in einen programmierten Zustand programmiert. Zum Beispiel gibt es in einem Block mit einem Bit pro Zelle, auch als SLC (Single-Level-Cell)-Block bezeichnet, zwei Datenzustände einschließlich des gelöschten Zustands und des programmierten Zustands, wie in 6B dargestellt. In einem Block mit zwei Bits pro Zelle gibt es vier Datenzustände einschließlich des gelöschten Zustands und drei programmierten Datenzuständen, die als die Datenzustände A, B und C bezeichnet werden. In einem Block mit drei Bits pro Zelle gibt es acht Datenzustände einschließlich des gelöschten Zustands und sieben programmierten Datenzuständen, die als A-, B-, C-, D-, E-, F- und G-Datenzustände bezeichnet werden, wie in 6A dargestellt. In einem Block mit vier Bits pro Zelle gibt es sechzehn Datenzustände einschließlich des gelöschten Zustands S0 und fünfzehn programmierten Datenzuständen S1 bis S15. Jeder Datenzustand kann durch einen Bereich von Schwellenspannungen (Vth) in den Speicherzellen dargestellt werden. Ein Block mit zwei oder mehr Bits pro Zelle wird als MLC-Block (Multi-Level-Cell-Block) bezeichnet.
  • Nachdem die Speicherzellen programmiert sind, können die Daten in einem Lesevorgang zurückgelesen werden. Ein Lesevorgang kann ein Anlegen einer Reihe von Lesespannungen an eine Wortleitung beinhalten, während ein Abtastschaltkreis bestimmt, ob Zellen, die mit der Wortleitung verbunden sind, in einem leitenden (eingeschalteten) oder nichtleitenden (ausgeschalteten) Zustand sind. Wenn eine Zelle in einem nichtleitenden Zustand ist, überschreitet die Vth der Speicherzelle die Lesespannung. Die Lesespannungen werden auf Pegel eingestellt, von denen erwartet wird, dass sie zwischen den Schwellenwertspannungspegeln von benachbarten Datenzuständen liegen. Darüber hinaus werden während des Lesevorgangs die Spannungen der nichtausgewählten Wortleitungen auf einen Lesedurchgangspegel oder Einschaltpegel hochgefahren, der ausreichend hoch ist, um die nichtausgewählten Speicherzellen in einen stark leitenden Zustand zu versetzen, um ein Stören des Abtastens der ausgewählten Speicherzellen zu vermeiden. Eine Wortleitung, die programmiert oder gelesen wird, wird als ausgewählte Wortleitung, WLn, bezeichnet.
  • Darüber hinaus können die Speicherzellen in einer Speicherungsvorrichtung, wie einer Festkörpervorrichtung (SSD), angeordnet sein. Die SSD ist in der Regel konfiguriert, um Prozesse zum Anordnen und Verwalten der Blöcke von Speicherzellen unter Verwendung eines Mechanismus zu implementieren, der als Flash-Übersetzungsschicht (FTL) bezeichnet wird. Die FTL kann beispielsweise durch Firmware in der Steuerung implementiert sein. Die FTL kann für Prozesse, wie das Verwalten der Schreibvorgänge auf Backend-NAND-Vorrichtungen mit Abnutzungsausgleich, das Führen einer logisch-physischen (L2P) Abbildungstabelle und das Bereitstellen einer logischen Blocknummernschnittstelle für einen Host verwendet werden. In einer herkömmlichen SSD implementiert und steuert die SSD die FTL.
  • Verschiedene Vorteile können jedoch durch Implementieren oder Steuern einiger der FTL-Prozesse am Host anstatt an der SSD erzielt werden. In diesem Fall wird die SSD als Open-Channel-SSD (OCSSD) bezeichnet. Zum Beispiel kann der Host die L2P-Tabelle und den Abnutzungsausgleich der NAND-Speicherzellen verwalten. In diesem Fall ist die SSD verantwortlich für Prozesse wie Übertragungen auf niedriger Ebene zu und von den Speicherzellen und Bereitstellen einer physischen Seitennummernschnittstelle für den Host.
  • Eine SSD ist zum Zeitpunkt der Herstellung in der Regel als eine herkömmliche SSD oder eine OCSSD konfiguriert, so dass eine nachfolgende Änderung der Funktionalität von einer herkömmlichen SSD zu einer OCSSD oder von einer OCSSD zu einer herkömmlichen SSD zu einem Datenverlust führt. Insbesondere muss die SSD vollständig neuformatiert werden, sobald ihre Rolle umgeschaltet wird, da FTL-Metadaten, wie sie vom Host im Fall von OCSSD oder von SSD im Falle einer herkömmlichen SSD verwaltet werden, möglicherweise nicht kompatibel sind. Der Grund dafür, dass die FTL-Metadaten zwischen der SSD und dem Host inkompatibel sind, ist, dass in der Regel die Datenstrukturen für die FTL-Metadaten für den Host unabhängig von den Datenstrukturen für die FTL-Metadaten für die SSD entwickelt wurden. Die Host-und SSD-Konstrukteure entwickeln ihre Datenstrukturen basierend auf ihren jeweiligen Ressourcen und Betriebsumgebungen. Zum Beispiel können die Datenstrukturen für den Host die in der Regel größeren Hardwareressourcen am Host gegenüber der SSD nutzen.
  • Das Format der FTL-Datenstrukturen kann durch viele Variablen gekennzeichnet sein. Eine mögliche Variable ist, ob die Daten komprimiert oder unkomprimiert sind und welche Art der Komprimierung verwendet wird, falls zutreffend. Eine weitere mögliche Variable ist eine Art der Zeichencodierung, z. B. ASCII, Unicode oder UTF-8.
  • Eine weitere mögliche Variable ist eine des Art des Speicherungsformats wie XML, CSV oder TSV. Extensible Markup Language (XML) ist eine Markup-Sprache, die einen Satz von Regeln zum Codieren von Dokumenten in einem Format definiert, das sowohl für Menschen als auch für Maschinen lesbar ist. Eine Datei für kommagetrennte Werte (CSV) ist eine begrenzte Textdatei, die ein Komma verwendet, um Werte zu trennen. Eine CSV-Datei speichert tabellarische Daten (Nummern und Text) in Nur-Text. Jede Zeile der Datei ist ein Datensatz und jeder Satz weist ein oder mehrere Felder auf, die durch Kommas getrennt sind. Eine Datei mit tab-getrennten Werten (TSV) ist ein Textformat zum Speichern von Daten in einer tabellarischen Struktur. Jeder Datensatz in der Tabelle ist eine Zeile der Textdatei. Jeder Feldwert eines Datensatzes ist vom nächsten durch ein Tabulatorzeichen getrennt. Das CSV- und TSV-Format sind Beispiele für ein trennzeichengetrenntes Format.
  • Eine weitere mögliche Variable ist eine Art von Fehlerkorrekturcode. Eine weitere mögliche Variable ist eine jedem Datenwert zugeordnete Anzahl von Bits oder Bytes. Eine weitere mögliche Variable ist, ob die Daten in einer Big-Endian-Byte-Reihenfolge gespeichert werden, in der das höchstwertige Byte der Daten auf das Byte mit der niedrigsten Adresse gesetzt wird, oder in der Little-Endian-Byte-Reihenfolge gespeichert werden, in der das niedrigstwertige Byte der Daten auf das Byte mit der niedrigsten Adresse gesetzt wird.
  • Techniken, die hierin bereitgestellt werden, befassen sich mit den obigen und anderen Problemen. In einem Ansatz werden Techniken zum Übergehen einer SSD von einer herkömmlichen SSD, in der eine Steuerschaltung der SSD Flash-Übersetzungsschichtprozesse für eine Vielzahl von Blöcken von Speicherzellen verwaltet, zu einer OCSSD, in der ein Host mindestens einige der Flash-Übersetzungsschichtprozesse verwaltet, bereitgestellt. In einem anderen Ansatz werden Techniken zum Übergehen einer SSD von einer OCSSD zu einer herkömmlichen SSD bereitgestellt. Ein Satz von Befehlen ist definiert, um unterschiedliche Arten von FTL-Daten zwischen dem Host und der SSD zu kommunizieren. Die Befehle können unterschiedliche vorbestimmte Sätze von Bits einschließen, die unterschiedliche Arten von Informationen tragen. Die Befehle können unter Verwendung reservierter Datenwörter in einer Schnittstellenspezifikation, wie der Open-Channel Solid-State Drives Specification, die den Host mit der Festkörpervorrichtung verbindet, übertragen werden. Ungeachtet der Verwendung unterschiedlicher Datenstrukturen im Host und der SSD ermöglichen die hierin beschriebenen Techniken, dass die FTL-Daten zwischen dem Host und der SSD in einem verständlichen Standardformat kommuniziert werden, wodurch Kompatibilität bereitgestellt wird.
  • Zum Beispiel kann ein Befehl zum Übertragen einer logisch-physischen Adresstabelle einen Streusammellisteneintrag der logisch-physischen Adresstabelle, eine maximale logische Blockadresse, eine Größe der logisch-physischen Adresstabelle und ein Bit einschließen, das angibt, ob die logisch-physische Adresstabelle in den Host oder die SSD kopiert werden soll. Ein Befehl zum Übertragen einer Gültigkeitsbitmap kann einen Streusammellisteneintrag der Gültigkeitsbitmap, eine Größe der Gültigkeitsbitmap und ein Bit einschließen, das angibt, ob die Gültigkeitsbitmap in den Host oder die SSD kopiert werden soll. Ein Befehl zum Übertragen einer Abnutzungstabelle kann Bits, die einen Streusammellisteneintrag der Abnutzungstabelle identifizieren, Bits, die eine Größe der Abnutzungstabelle angeben, und ein Bit, das angibt, ob die Abnutzungstabelle in den Host kopiert werden soll, einschließen. Ein Umschaltmodus-Befehl kann ein Bit einschließen, das angibt, ob der Modus von herkömmlicher SSD zu OCSSD oder von OCSSD zu herkömmlicher SSD umgeschaltet werden soll.
  • In einer beispielhaften Anwendung können die Techniken in einem Datenzentrum verwendet werden, in denen Petabyte-Speicherungen in Form mehrerer OCSSDs angehängt sind. Zu Wartungszwecken müssen möglicherweise einige OCSSDs offline platziert oder zu einem anderen Server mit einer anderen globalen FTL bewegt werden. Die hierin bereitgestellten Techniken ermöglichen dies, ohne Daten zu verlieren. Sie stellen Flexibilität bereit, um eine OCSSD von einem Server zu einem anderen Server ohne Datenverlust zu verschieben, und beseitigen die Abhängigkeit von einem bestimmten Server. Da die gleiche SSD in beiden Modi verwendet werden kann, stellt sie darüber hinaus Flexibilität bereit, um aus einer Reihe von Anwendungsfällen zu wählen. Je nach Art der auszuführenden Anwendung kann der Host entscheiden, wie viel E/A-Befehlslatenzbestimmungen erforderlich sind, und konfiguriert dann Sätze von SSDs als OCSSDs oder herkömmliche SSDs.
  • Dieser Modusübergangsmechanismus kann auch bei Flash-Speicheranordnungen verwendet werden. Abhängig von Latenzanforderungen einer Anwendung könnte der Host eine Anordnung teilweise als OCSSD (wobei der Host die FTL-Daten verwaltet) und teilweise als herkömmliche Flash-Anordnung verwenden, wobei die Anordnung die FTL-Daten verwaltet. Der Host kann die Speicherung, die jeder Laufzeit zugewiesen ist, basierend auf der Latenzanforderung und der L2P-Speicherung, die während der Laufzeit verfügbar ist, ohne Datenverlust ändern.
  • Diese und andere Merkmale werden unten weiter erläutert.
  • 1 ist ein Blockdiagramm einer beispielhaften Speicherungsvorrichtung. Die Speichervorrichtung 100 wie ein nichtflüchtiges Speichersystem kann ein oder mehrere Speicherelemente 108 einschließen. Der Speicher-Die 108 oder Chip schließt eine Speicherstruktur 126 aus Speicherzellen, wie eine Speicherzellenanordnung, eine Steuerschaltung 110 und Lese/Schreib-Schaltungen 128 ein. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilendecoder 124 und durch Bitleitungen über einen Spaltendecoder 132 adressierbar. Die Lese-/Schreibschaltungen 128 schließen mehrere Abtastblöcke 51, 52,... 53 (Abtastschaltkreis) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Üblicherweise ist eine Steuerung 122 in der gleichen Speichervorrichtung 100 (z. B. einer entfernbaren Speicherkarte) wie das eine oder die mehreren Speicherchips 108 enthalten. Die Steuerung kann von dem Speicher-Die getrennt sein. Befehle und Daten werden zwischen dem Host 140 und der Steuerung 122 über einen Datenbus 120 und zwischen der Steuerung und dem einen oder den mehreren Speicherchips 108 über Leitungen 118 übertragen.
  • Die Speicherstruktur kann 2D oder 3D sein. Die Speicherstruktur kann ein oder mehrere Arrays von Speicherzellen aufweisen, einschließlich eines 3D-Arrays. Die Speicherstruktur kann eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherebenen oberhalb von (und nicht in) einem einzelnen Substrat wie einem Wafer ohne dazwischen liegende Substrate ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellenanordnungen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Siliciumsubstrat angeordnet ist. Die Speicherstruktur kann sich in einer nichtflüchtigen Speichervorrichtung befinden, die Schaltlogik aufweist, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich die zugehörige Schaltlogik oberhalb oder innerhalb des Substrats befindet.
  • Die Steuerschaltlogik 110 arbeitet mit den Lese-/Schreibschaltungen 128 zusammen, um Speichervorgänge auf der Speicherstruktur 126 durchzuführen, und schließt eine Zustandsmaschine, einen On-Chip-Adressdecodierer 114 und ein Leistungssteuerungsmodul 115 (Leistungssteuerungsschaltung) ein. Eine Speicherregion 113 kann bereitgestellt werden, z. B. für Betriebsparameter und Software/Code. In einer Ausführungsform ist die Zustandsmaschine durch die Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert.
  • Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen derjenigen, die von dem Host oder einer Speichersteuerung verwendet wird, zu der Hardwareadresse, die von den Decodierern 124 und 132 verwendet wird, bereit. Das Leistungssteuerungsmodul 115 steuert die Leistung und die Spannungen, die den Wortleitungen, Auswahlgateleitungen, Bitleitungen und Sourceleitungen während Speichervorgängen zugeführt werden. Es kann Treiber für Wortleitungen, SGS- und SGD-Transistoren und Sourceleitungen einschließen. Die Abtastblöcke können in einem Ansatz Bitleitungstreiber einschließen.
  • In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 126 unterscheiden, als mindestens eine Steuerschaltung betrachtet werden, die dazu eingerichtet ist, die hierin beschriebenen Techniken einschließlich der Schritte der hierin beschriebenen Verfahren durchzuführen. Zum Beispiel kann eine Steuerschaltung eine beliebige der Komponenten oder eine Kombination aus einer Steuerschaltung 110, einer Zustandsmaschine 112, Decodierern 114 und 132, einem Leistungssteuermodul 115, Abtastblöcken 51, 52, ..., 53, Lese-/Schreibschaltungen 128, einer Steuerung 122 und so weiter einschließen.
  • Die Off-Chip-Steuerung 122 (die in einer Ausführungsform eine elektrische Schaltung ist) kann einen Prozessor 122e, einen Speicher wie ROM 122a und RAM 122b und eine Fehlerkorrekturcode-Engine (ECC-Engine) 245 aufweisen. Die ECC-Engine kann eine Reihe von Lesefehlern korrigieren. Der RAM 122b kann beispielsweise ein DRAM sein. Eine Kopie der zu programmierenden Daten wird von dem Host empfangen und vorübergehend in dem RAM gespeichert, bis die Programmierung erfolgreich zu Blöcken in der Speichervorrichtung abgeschlossen ist. Der RAM kann eine oder mehrere Wortleitungen von Daten speichern.
  • Eine Speicherschnittstelle 122d kann auch bereitgestellt werden. Die Speicherschnittstelle, die mit dem ROM, RAM und dem Prozessor in Kommunikation steht, ist eine elektrische Schaltung, die eine elektrische Schnittstelle zwischen der Steuerung und dem Speicher-Die bereitstellt. Zum Beispiel kann die Speicherschnittstelle das Format oder die Zeitsteuerung von Signalen verändern, einen Puffer bereitstellen, von Spitzen isolieren, ein E/A zwischenspeichern und so weiter. Der Prozessor kann dem Steuerschaltkreis 110 (oder einer beliebigen anderen Komponente des Speicherchips) über die Speicherschnittstelle 122d Befehle erteilen.
  • Der Speicher in der Steuerung 122, wie ROM 122a und RAM 122b weisen einen Code auf, wie einen Satz von Anweisungen, und der Prozessor 122c ist betreibbar, um den Satz von Anweisungen auszuführen und die hierin beschriebene Funktionalität bereitzustellen. Alternativ oder zusätzlich kann der Prozessor auf Code von einer Teilmenge 126a der Speicherstruktur zugreifen, wie einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
  • Der Code kann zum Beispiel von der Steuerung verwendet werden, um auf die Speicherstruktur zuzugreifen, wie etwa für Programmier-, Lese- und Löschvorgänge. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Befehlen) einschließen. Der Bootcode ist eine Software, die die Steuerung während eines Boot- oder Startvorgangs initialisiert und der Steuerung ermöglicht, auf die Speicherstruktur zuzugreifen. Der Code kann von der Steuerung verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. Beim Hochfahren ruft der Prozessor 122e den Bootcode aus dem ROM 122a oder der Teilmenge 126a der Speicherstruktur zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM 122b. Sobald der Steuercode in den RAM geladen ist, wird er durch den Prozessor ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie etwa Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
  • Im Allgemeinen kann der Steuercode Anweisungen einschließen, um die hierin beschriebenen Funktionen einschließlich der weiter unten erläuterten Schritte der Flussdiagramme durchzuführen. Eine Steuerschaltung kann dazu eingerichtet sein, die Anweisungen auszuführen, um die hierin beschriebenen Funktionen durchzuführen.
  • Der Host 140 kann einen Prozessor 141 und einen Speicher 142 zum Durchführen der hierin beschriebenen Funktionen einschließen.
  • In einer Ausführungsform ist der Host eine Rechenvorrichtung (z. B. ein Laptop, ein Desktop, ein Smartphone, ein Tablet, eine Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, Flash-Speicher, Festplattenlaufwerk, Solid-State-Memory) einschließt, die einen prozessorlesbaren Code (z. B. eine Software) zum Programmieren der einen oder der mehreren Prozessoren speichert, um die hierin beschriebenen Verfahren durchzuführen. Der Host kann auch einen zusätzlichen Systemspeicher, eine oder mehrere Eingabe-/Ausgabeschnittstellen und/oder eine oder mehrere Eingabe-/Ausgabevorrichtungen einschließen, die mit dem einem oder den mehreren Prozessoren in Kommunikation stehen.
  • Andere Arten von nichtflüchtigen Speichern zusätzlich zu NAND-Flash-Speichern können ebenfalls verwendet werden.
  • Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie etwa Dynamic Random Access Memory-Vorrichtungen (DRAM-Vorrichtungen) oder Static Random Access Memory-Vorrichtungen (SRAM-Vorrichtungen), nichtflüchtige Speichervorrichtungen, wie etwa Resistive Random Access Memory (ReRAM), Electrically Erasable Programmable Read Only Memory (EEPROM), Flash-Speicher (der auch als Untergruppe eines EEPROM betrachtet werden kann), Ferroelectric Random Access Memory (FRAM) und Magnetoresistive Random Access Memory (MRAM), und andere Halbleiterelemente, die Informationen speichern können. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nichteinschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein widerstandsschaltendes Speicherelement wie ein Anti-Fuse- oder Phasenwechselmaterial und gegebenenfalls ein Lenkelement wie eine Diode oder einen Transistor einschließen. Weiterhin schließen als nichteinschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich enthalten, wie etwa ein Floating-Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial.
  • Mehrere Speicherelemente können derart eingerichtet sein, dass sie in Reihe geschaltet sind, oder derart, dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Kette ist ein Beispiel für einen Satz von in Reihe geschalteten Transistoren, aufweisend Speicherzellen und SG-Transistoren.
  • Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind Beispiele, und Speicherelemente können anderweitig eingerichtet sein.
  • Die Halbleiterspeicherelemente, die innerhalb eines und/oder über einem Substrat liegen, können in zwei oder drei Dimensionen angeordnet sein, wie als eine zweidimensionale Speicherstruktur oder eine dreidimensionale Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzigen Ebene oder einer einzigen Speichervorrichtungsebene angeordnet. Üblicherweise sind Speicherelemente bei einer 2D-Speicherstruktur in einer Ebene (z. B. in einer x-y-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem diese gebildet werden. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silicium, einschließen.
  • Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
  • Ein 3D-Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wobei die z-Richtung im Wesentlichen senkrecht und die x- und y-Richtung im Wesentlichen parallel zu der Hauptoberfläche des Substrats sind).
  • Als ein nichteinschränkendes Beispiel kann eine 3D-Speicherstruktur vertikal als Stapel mehrerer 2D-Speichervorrichtungsebenen angeordnet sein. Als ein weiteres nichteinschränkendes Beispiel kann ein 3D-Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats erstrecken, d. h. in der y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente hat. Die Spalten können in einer 2D-Konfiguration angeordnet sein, z. B. in einer x-y-Ebene, was eine 3D-Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen ergibt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein 3D-Speicherarray bilden.
  • Als ein nichteinschränkendes Beispiel können die Speicherelemente in einem 3D-NAND-Speicherarray miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzigen horizontalen (z. B. x-y) Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere 3D-Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzigen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. 3D-Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.
  • Üblicherweise werden in einem monolithischen 3D-Speicherarray eine oder mehrere Speichervorrichtungsebenen oberhalb eines einzigen Substrats gebildet. Gegebenenfalls kann das monolithische 3D-Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einzigen Substrats haben. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silicium, einschließen. In einem monolithischen 3D-Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen 3D-Speicherarrays können jedoch gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen haben.
  • 2D-Arrays können getrennt gebildet und dann zusammengepackt werden, um eine nichtmonolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Zum Beispiel können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder aus den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfangs über getrennten Substraten gebildet werden, sind die sich ergebenden Speicherarrays keine monolithischen 3D-Speicherarrays. Weiterhin können mehrere 2D-Speicherarrays oder 3D-Speicherarrays (monolithisch oder nichtmonolithisch) auf getrennten Chips gebildet und dann zusammengepackt werden, um eine Speichervorrichtung mit gestapelten Chips zu bilden.
  • Eine zugehörige Schaltung ist üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen, wie Programmieren und Lesen, auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
  • Ein Fachmann wird erkennen, dass diese Technologie nicht auf die beschriebenen beispielhaften 2D- und 3D-Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Technologie abdeckt, wie hierin beschrieben und wie es von einem Fachmann verstanden wird.
  • 2 ist ein Blockdiagramm der beispielhaften Speicherungsvorrichtung 100 (Speichervorrichtung) aus 1, das weitere Einzelheiten der Steuerung 122 darstellt. Wie hierin verwendet, ist eine Flashspeichersteuerung eine Vorrichtung, die auf dem Flashspeicher gespeicherte Daten verwaltet und mit einem Host kommuniziert, wie beispielsweise einem Computer oder einer elektronischen Vorrichtung. Eine Flashspeichersteuerung kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität haben. Zum Beispiel kann die Flashspeichersteuerung den Flashspeicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flashspeicherzellen auszugrenzen und Ersatzspeicherzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um die Flashspeichersteuerung zu betreiben und andere Merkmale zu implementieren. Im Betrieb, wenn ein Host Daten aus dem Flashspeicher lesen oder Daten in diesen schreiben muss, kommuniziert der Host mit der Flashspeichersteuerung. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann die Flashspeichersteuerung die vom Host empfangene logische Adresse in eine physische Adresse in der Flashspeichersteuerung umwandeln. Alternativ kann der Host die physische Adresse bereitstellen. Die Flashspeichersteuerung kann auch verschiedene Speicherverwaltungsfunktionen durchführen, wie, ohne darauf beschränkt zu sein, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, Bewegen ausschließlich der gültigen Datenseiten zu einem neuen Block, so dass der volle Block gelöscht und wiederverwendet werden kann).
  • Die Schnittstelle zwischen der Steuerung 122 und dem nichtflüchtigen Speicher-Die 108 kann eine beliebige geeignete Flash-Schnittstelle sein. In einer Ausführungsform kann die Speicherungsvorrichtung 100 ein kartenbasiertes System sein, wie eine sichere digitale (SD) oder eine sichere digitale Mikro-Karte (Mikro-SD). In einer alternativen Ausführungsform kann das Speichersystem Teil eines eingebetteten Speichersystems sein. Zum Beispiel kann der Flash-Speicher im Host eingebettet sein, wie etwa in Form eines SSD-Laufwerks (Solid State Disk), das in einem Personalcomputer installiert ist.
  • In einigen Ausführungsformen schließt die Speicherungsvorrichtung 100 einen einzelnen Kanal zwischen der Steuerung 122 und dem nichtflüchtigen Speicher-Die 108 ein, wobei der hier beschriebene Gegenstand nicht darauf beschränkt ist, einen einzelnen Speicherkanal zu haben.
  • Die Steuerung 122 schließt ein Frontend-Modul 208, das mit einem Host verbunden ist, ein Backend-Modul 210, das mit dem einen oder den mehreren nichtflüchtigen Speicherchips 108 verbunden ist, und verschiedene andere Module, die Funktionen durchführen, die nun ausführlich beschrieben werden, ein.
  • Die Komponenten der Steuerung können die Form einer gepackten funktionellen Hardwareeinheit (z. B. einer elektrischen Schaltung), konzipiert zur Verwendung mit anderen Komponenten, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware) ausführbar durch einen Prozessor, z. B. einen Mikroprozessor, oder eine Verarbeitungsschaltlogik, die üblicherweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer abgeschlossenen Hardware- oder Softwarekomponente, die eine Schnittstelle zum Beispiel mit einem größeren System hat, annehmen. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein anwenderprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen Prozessor für die Steuerung zu programmieren, um die hierin beschriebenen Funktionen auszuführen. Die in 2 dargestellte Architektur ist eine beispielhafte Implementierung, welche die in 1 dargestellten Komponenten der Steuerung 122 (z. B. den RAM, den ROM, den Prozessor, die Schnittstelle) verwenden kann (aber nicht muss).
  • Die Steuerung 122 kann eine Rekonditionierungsschaltung 212 einschließen, die zum Rekonditionieren von Speicherzellen oder Speicherblöcken verwendet wird. Die Rekonditionierung kann das Auffrischen von Daten an ihrem aktuellen Standort oder das Neuprogrammieren von Daten in eine neue Wortleitung oder einen neuen Block als Teil der Durchführung einer fehlerhaften Wortleitungspflege, wie nachfolgend beschrieben, einschließen.
  • Unter erneuter Bezugnahme auf Module der Steuerung 122 verwaltet eine Pufferverwaltungs-/Bussteuerung 214 Puffer im Direktzugriffsspeicher (RAM) 216 und steuert die interne Buszuteilung der Steuerung 122. Der RAM kann DRAM und/oder SRAM einschließen. Ein DRAM oder dynamischer Speicher mit wahlfreiem Zugriff ist ein Typ eines Halbleiterspeichers, in dem der Speicher in Form einer Ladung gespeichert ist. Jede Speicherzelle in einem DRAM besteht aus einem Transistor und einem Kondensator. Die Daten werden in dem Kondensator gespeichert. Kondensatoren verlieren Ladung aufgrund von Leckage, und daher sind DRAMs flüchtige Vorrichtungen. Zum Halten der Daten in den Speicher muss die Vorrichtung regelmäßig aktualisiert werden. Im Gegensatz dazu behält SRAM oder statischer Speicher mit wahlfreiem Zugriff einen Wert bei, solange Strom zugeführt wird.
  • Ein Nur-Lese-Speicher (ROM) 218 speichert Systemhochfahrcode (Boot-Code). Obwohl sie in 2 als von der Steuerung getrennt angeordnet veranschaulicht sind, können in anderen Ausführungsformen der RAM 216 und/oder der ROM 218 innerhalb der Steuerung angeordnet sein. In noch anderen Ausführungsformen können sich Teile des RAM und des ROM sowohl innerhalb der Steuerung 122 als auch außerhalb der Steuerung befinden. Weiterhin können in einigen Implementierungen die Steuerung 122, der RAM 216 und der ROM 218 auf separaten Halbleiterchips angeordnet sein.
  • Das Frontend-Modul 208 beinhaltet eine Host-Schnittstelle 220 und eine Physical-Layer-Schnittstelle (PHY) 222, welche die elektrische Schnittstelle mit dem Host oder der Speichersteuerung der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 220 kann von dem Typ des verwendeten Speichers abhängen. Beispiele für die Host-Schnittstellen 220 schließen SATA, SATA Express, SAS, Fibre Channel, USB, PCle und NVMe ein, ohne jedoch darauf beschränkt zu sein. Die Host-Schnittstelle 220 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen.
  • Das Backend-Modul 210 schließt eine Engine 224 zur Fehlerkorrektursteuerung (ECC-Engine) ein, welche die vom Host empfangenen Datenbytes kodiert und die aus dem nichtflüchtigen Speicher gelesenen Datenbytes dekodiert und Fehler korrigiert. Ein Befehlssequenzer 226 erzeugt Befehlssequenzen wie Programmier- und Löschbefehlssequenzen zum Übertragen an den nichtflüchtigen Speicher-Die 108. Ein RAID-Modul (Redundant Array of Independent Dies-Modul) 228 verwaltet die Generierung einer RAID-Parität und die Wiederherstellung ausgefallener Daten. Die RAID-Parität kann als zusätzliche Ebene des Integritätsschutzes für die Daten verwendet werden, die in die Speicherungsvorrichtung 100 geschrieben werden. In einigen Fällen kann das RAID-Modul 228 Teil der ECC-Engine 224 sein. Es ist zu beachten, dass die RAID-Parität als zusätzliche(s) Die oder Dies hinzugefügt werden kann, wie durch den gebräuchlichen Namen impliziert, aber sie kann auch innerhalb des bestehenden Dies hinzugefügt werden, z. B. als zusätzliche Ebene oder zusätzlicher Block oder zusätzliche Wortzeilen innerhalb eines Blocks. Eine Speicherschnittstelle 230 stellt die Befehlssequenzen für den nichtflüchtigen Speicherchip 108 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip. Eine Flash-Steuerschicht 232 steuert den Gesamtbetrieb des Backend-Moduls 210.
  • Zusätzliche Komponenten der Speicherungsvorrichtung 100 schließen eine Flash-Übersetzungsschicht (FTL) 238 ein, die Prozesse wie einen Abnutzungsausgleich von Speicherzellen des nichtflüchtigen Speicher-Die 108 durchführt. Das Speichersystem schließt auch andere diskrete Komponenten 240 ein, wie beispielsweise externe elektrische Schnittstellen, einen externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 122 über eine Schnittstelle verbunden sein können. In alternativen Ausführungsformen sind eine oder mehrere der Physical-Layer-Schnittstelle 222, des RAI D-Moduls 228 und der Pufferverwaltungs-/Bussteuerung 214 optionale Komponenten, die in der Steuerung 122 nicht erforderlich sind.
  • Eine FTL, die auch als Medienverwaltungsschicht (MML) bezeichnet wird, kann als Teil der Flash-Verwaltung integriert sein, die Flash-Fehler behandeln und mit dem Host interagieren kann. Insbesondere kann die FTL ein Modul in der Flash-Verwaltung sein und für die Interna der NAND-Verwaltung verantwortlich sein. Die FTL kann einen Algorithmus in der Firmware der Speichervorrichtung einschließen, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur 126 z.B. den Flash-Speicher, des Chips 108 übersetzt. Die FTL kann die weiter unten erörterten Dateisystemtabellen implementieren. Die FTL kann erforderlich sein, weil: 1) der Flash-Speicher eine begrenzte Lebensdauer haben kann; 2) der Flash-Speicher nur in Vielfachen von Seiten geschrieben werden kann; und/oder 3) der Flash-Speicher nicht geschrieben werden kann, es sei denn, er wird als Block gelöscht. Die FTL versteht diese potentiellen Beschränkungen des Flash-Speichers, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die FTL, die Schreibvorgänge von dem Host in Schreibvorgänge in den Flash-Speicher zu übersetzen. Fehlerhafte Bits können unter Verwendung der FTL identifiziert und aufgezeichnet werden. Diese Aufzeichnung von fehlerhaften Bits kann zur Bewertung des Zustands von Blöcken und/oder Wortleitungen (den Speicherzellen auf den Wortleitungen) verwendet werden.
  • Weitere Einzelheiten der FTL und anderer Prozesse, siehe auch 9.
  • Die Steuerung 122 kann mit einem oder mehreren Speicherchips 108 verbunden sein. In einer Ausführungsform implementieren die Steuerung und mehrere Speicher-Dies (welche zusammen die Speicherungsvorrichtung 100 aufweisen) ein Solid-State-Laufwerk, das eine Festplatte in einem Host emulieren, ersetzen oder an deren Stelle als netzwerkverbundene Speichervorrichtung (Network Attached Storage, NAS) usw. verwendet werden kann. Zusätzlich muss das Solid-State-Laufwerk nicht dazu veranlasst werden, als eine Festplatte zu arbeiten.
  • 3 ist eine perspektivische Ansicht einer Speichervorrichtung 300, die einen Satz von Blöcken in einer beispielhaften 3D-Konfiguration der Speicherstruktur 126 von 1 aufweist. Auf dem Substrat befinden sich Beispielblöcke BLK0, BLK1, BLK2 und BLK3 von Speicherzellen (Speicherelementen) und Peripheriebereiche mit Schaltlogik zur Verwendung durch die Blöcke. Der Peripheriebereich 304 verläuft entlang einer Kante jedes Blocks, während sich der Peripheriebereich 305 an einem Ende des Satzes von Blöcken befindet. Der Schaltkreis kann Spannungstreiber einschließen, die mit Steuergateschichten, Bitleitungen und Sourceleitungen der Blöcke verbunden werden können. Bei einem Ansatz werden Steuergateschichten auf einer gemeinsamen Höhe in den Blöcken gemeinsam angesteuert. Das Substrat 301 kann auch eine Schaltlogik unter den Blöcken und eine oder mehrere untere Metallschichten tragen, die in Leiterbahnen strukturiert sind, um Signale der Schaltlogik zu tragen. Die Blöcke sind in einer Zwischenregion 302 der Speichervorrichtung ausgebildet. In einer oberen Region 303 der Speichervorrichtung sind eine oder mehrere obere Metallschichten in Leiterbahnen strukturiert, um Signale der Schaltlogik zu tragen. Jeder Block weist einen gestapelten Bereich von Speicherzellen auf, wobei alternierende Ebenen des Stapels Wortleitungen darstellen. In einem möglichen Ansatz hat jeder Block gegenüberliegende abgestufte Seiten, von denen sich vertikale Kontakte nach oben zu einer oberen Metallschicht erstrecken, um Verbindungen zu Leiterbahnen herzustellen. Während vier Blöcke beispielhaft dargestellt sind, können zwei oder mehr Blöcke verwendet werden, die sich in x - und/oder y-Richtung erstrecken.
  • In einem möglichen Ansatz befinden sich die Blöcke in einer Ebene und die Länge der Ebene in x-Richtung stellt eine Richtung dar, in der sich Signalpfade zu Wortleitungen in der einen oder den mehreren oberen Metallschichten erstrecken (eine Wortleitungs- oder SGD-Leitungsrichtung), und die Breite der Ebene in der y-Richtung stellt eine Richtung dar, in der sich Signalpfade zu Bitleitungen in der einen oder den mehreren oberen Metallschichten (einer Bitleitungsrichtung) erstrecken. Die z-Richtung stellt eine Höhe der Speichervorrichtung dar. Die Blöcke könnten auch in mehreren Ebenen angeordnet sein.
  • 4 stellt einen beispielhaften Transistor 420 dar. Der Transistor weist ein Steuergate CG, einen Drain D, eine Source S und einen Kanal CH auf und kann zum Beispiel eine Speicherzelle oder einen Auswahlgatetransistor darstellen. Das Drain-Ende des Transistors ist mit einer Bitleitung BL verbunden, optional über einen oder mehrere andere Transistoren in einer NAND-Kette, und das Sourceende des Transistors ist mit einer Sourceleitung SL verbunden, optional über einen oder mehrere andere Transistoren in einer NAND-Kette,
  • In einem Ansatz weist der Block von Speicherzellen einen Stapel von alternierenden Steuer-Gate- und dielektrischen Schichten auf und die Speicherzellen sind in sich vertikal erstreckenden Speicherlöchern in dem Stapel angeordnet.
  • Eine Reihe von Schichten kann entlang der Seitenwände des Speicherlochs und/oder innerhalb jeder Wortleitungsschicht abgeschieden werden, um Speicherzellen zu bilden. Die Schichten können eine Blockierungsoxidschicht, eine Ladungsfängerschicht oder -film, wie Siliciumnitrid (Si3N4) oder ein anderes Nitrid, eine Tunnelschicht (z. B. ein Gateoxid) und einen Kanal (z. B. aufweisend Polysilicium) einschließen. Ein dielektrischer Kern (z. B. aufweisend Siliciumdioxid) kann einen zentralen Kern jedes Speicherlochs füllen.
  • Obwohl das obige Beispiel auf eine 3D-Speichervorrichtung mit vertikal verlaufenden NAND-Ketten gerichtet ist, sind die hierin bereitgestellten Techniken auch auf eine 2D-Speichervorrichtung anwendbar, bei der die NAND-Ketten horizontal auf einem Substrat verlaufen.
  • 5 stellt eine beispielhafte Ansicht von NAND-Ketten in einem Block BLK0 dar, die mit 3 übereinstimmt. Die NAND-Ketten sind in Unterblöcken des Blocks in einer 3D-Einrichtung angeordnet. Jeder Teilblock schließt mehrere NAND-Ketten ein, wobei eine beispielhafte NAND-Kette dargestellt ist. Zum Beispiel weisen SB0, SB1, SB2 und SB3 beispielhafte NAND-Ketten 500n, 510n, 520n bzw. 530n auf. Die NAND-Ketten weisen Datenwortleitungen, Dummy-Wortleitungen und Auswahl-Gate-Leitungen auf. Jeder Unterblock weist einen Satz von NAND-Ketten auf, die sich in der x-Richtung erstrecken und die eine gemeinsame SGD-Leitung oder Steuer-Gate-Schicht haben. Die NAND-Ketten 500n, 510n, 520n und 530n befinden sich in Unterblöcken SB0, SB1, SB2 bzw. SB3. Die Programmierung des Blocks kann basierend auf einer Wortleitungsprogrammierreihenfolge erfolgen. Eine Möglichkeit besteht darin, die Speicherzellen in unterschiedlichen Abschnitten einer Wortleitung zu programmieren, die sich in den unterschiedlichen Unterblöcken befinden, jeweils ein Unterblock nacheinander, bevor die Speicherzellen der nächsten Wortleitung programmiert werden. Dies kann zum Beispiel das Programmieren von WL0 in SB0, SB1, SB2 und dann SB2, dann das Programmieren von WL1 in SB0, SB1, SB2 und dann SB2 usw. beinhalten. Die Wortleitungsprogrammierreihenfolge kann bei WL0, der Source-End-Wortleitung, beginnen und beispielsweise bei WL95, der Drainend-Wortleitung, enden.
  • Die NAND-Ketten 500n, 510n, 520n und 530n weisen Kanäle 500a, 510a, 520a bzw. 530a auf. Zusätzlich schließt die NAND-Kette 500n den SGS-Transistor 501, die Dummy-Speicherzelle 502, die Datenspeicherzellen 503 bis 514, die Dummy-Speicherzelle 515 und den SGD-Transistor 516 ein. Die NAND-Kette 510n schließt den SGS-Transistor 521, die Dummy-Speicherzelle 522, die Datenspeicherzellen 523 bis 534, die Dummy-Speicherzelle 535 und den SGD-Transistor 536 ein. Die NAND-Kette 520n schließt den SGS-Transistor 541, die Dummy-Speicherzelle 542, die Datenspeicherzellen 543 bis 554, die Dummy-Speicherzelle 555 und den SGD-Transistor 556 ein. Die NAND-Kette 530n schließt den SGS-Transistor 561, die Dummy-Speicherzelle 562, die Datenspeicherzellen 563 bis 574, die Dummy-Speicherzelle 575 und den SGD-Transistor 576 ein.
  • Dieses Beispiel stellt einen SGD-Transistor am Drain-Ende jeder NAND-Kette und einen SGS-Transistor am Source-Ende jeder NAND-Kette dar. Die SGS-Transistoren in SB0, SB1, SB2 und SB3 können in einem Ansatz durch separate Steuerleitungen SGS(0), SGS(1), SGS(2) bzw. SGS(3) angesteuert werden. In einem anderen Ansatz können mehrere SGD- und/oder SGS-Transistoren in einer NAND-Kette bereitgestellt werden.
  • 6A stellt eine beispielhafte Vth-Verteilung von Speicherzellen dar, wobei acht Datenzustände in einem Beispiel der MLC-Programmierung verwendet werden. In 6A und 6B stellt die vertikale Achse eine Anzahl von Speicherzellen auf einer logarithmischen Skala dar und die horizontale Achse stellt eine Vth der Speicherzellen auf einer linearen Skala dar. In einem Ansatz befinden sich die Speicherzellen zu Beginn eines Programmvorgangs alle in dem gelöschten Zustand (Er), wie durch die Vth-Verteilung 600 dargestellt. Die dem Er-Zustand zugeordneten Speicherzellen werden nach abgeschlossener Programmierung weiterhin durch die Vth-Verteilung 600 repräsentiert. Die Speicherzellen, die den A-G Zuständen zugeordnet sind, werden auf die Vth-Verteilungen 601 bis 607 programmiert, jeweils unter Verwendung von Verifizierungsspannungen von VvA-VvG in Programmierverifizierungstests. Lesespannungen VrA bis VrG können zum Lesen der Zustände der Speicherzellen in einem Lesevorgang verwendet werden.
  • In einem Löschvorgang gehen die Datenspeicherzellen von den Vth-Verteilungen der programmierten Datenzustände, z. B. Zustände A bis G, in den gelöschten Zustand über. Der Löschvorgang schließt eine Löschphase ein, in der die Speicherzellen zum Löschen vorgespannt werden, gefolgt von einem Löschverifizierungstest. Der Löschverifizierungstest kann eine Löschverifizierungsspannung, VvEr, verwenden, die an die Wortleitungen angelegt wird.
  • Die Er-G-Zustände sind Beispiele für zugeordnete Datenzustände und die A-G-Zustände sind Beispiele für programmierte Datenzustände, in diesem Beispiel acht Zustände. Die Anzahl der Datenzustände könnte größer oder kleiner als acht Datenzustände sein.
  • 6B stellt eine beispielhafte Vth-Verteilung von Speicherzellen dar, wobei zwei Datenzustände in der SLC-Programmierung verwendet werden. Dargestellt sind eine Löschzustands-Vth-Verteilung 620 und eine programmierte Zustands-Vth-Verteilung 621. Die Verifizierungsspannung ist Vv und die Lesespannung ist Vr.
  • Die Blöcke in einer Speichervorrichtung können als SLC- oder MLC-Blöcke zugewiesen sein. SLC-Blöcke haben eine höhere Zuverlässigkeit und Dauerhaftigkeit, während MLC-Blöcke eine höhere Datendichte, aber eine geringere Dauerhaftigkeit haben. SLC-Blöcke können z. B. als Steuerblöcke verwendet werden, die in der Regel eine hohe Zuverlässigkeit erfordern, oder zufällige Datenblöcke oder Sicherungsblöcke, die in der Regel eine hohe Dauerhaftigkeit erfordern. MLC-Blöcke werden hauptsächlich als Kapazitätsblöcke, z. B. Blöcke verwendet, welche die primäre Langzeitspeicherungskapazität der Speichervorrichtung bereitstellen.
  • 7 stellt eine beispielhafte Anordnung der Steuerung 122 von 1 dar, die mit Blöcken von Speicherzellen in Gruppen von parallelen Einheiten (PU) im OCSSD-Modus kommuniziert. Zur Eingangs/Ausgangsisolation werden unabhängige parallele Einheiten von Blöcken zugeordnet, wobei eine Gruppe von PUs über einen gemeinsamen Bus Daten überträgt. Jede PU kann eine Anzahl von Blöcken von Speicherzellen aufweisen, wie in 8 dargestellt. Eine beispielhafte Gruppe 700 schließt PUs 701 bis 704 ein und eine beispielhafte Gruppe 710 schließt PUs 711 bis 714 ein. Dieser Ansatz stellt eine vorhersagbare Latenz für den Host bereit. Ein- und Ausgänge können für die unterschiedlichen parallelen Einheiten synchron sein, und die erforderliche Zugriffszeit auf die parallelen Einheiten ist explizit definiert.
  • 8 zeigt einen beispielhaften logischen Blockadressraum 800, der mit 7 konsistent ist. Details der Gruppe 700 sind dargestellt, einschließlich der PUs 701 bis 704. Jede PU schließt eine Anzahl von Blöcken ein und jeder Datenblock weist eine Anzahl von logischen Blockadressen (LBAs) auf, Zum Beispiel schließt die PU 701 Datenblöcke (CH) 801 und 802 ein. Der Datenblock 801 wiederum schließt die LBAs 810 und 811 ein und der Block 802 schließt die LBAs 812 und 813 ein. Ein Datenblock ist ein Bereich von LBAs, in denen Schreibvorgänge sequentiell sein müssen, und entspricht einem oder mehreren Blöcken von Speicherzellen. Ein Datenblock kann sich in einem von vier Zuständen befinden: frei, offen, geschlossen oder offline. Wenn das Schreiben in einen Datenblock fehlschlägt, wird der Datenblock als schlecht markiert.
  • 9 stellt beispielhafte Prozesse der Steuerung 122 und des Hosts 140 von 1 dar. Wie zuvor in Verbindung mit 2 erörtert, kann die FTL 238 der Steuerung 122 verschiedene Prozesse zum Verwalten der Blöcke von Speicherzellen implementieren. Zum Beispiel kann die FTL eine logisch-physische (L2P) Abbildungstabelle 910, die logische Adressen auf physische Adressen abbildet, eine Gültigkeitsbitmap 911, die gültige und ungültige Seiten in einem Block identifiziert, eine Abnutzungstabelle 912, die eine Anzahl von Programmier-Lösch-Zyklen (P-E-Zyklen) oder eine andere Abnutzungsmetrik jedes physischen Blocks führt, und einen Speicherbereinigungsprozess 913, der Prozesse wie Recycling von Seiten von Speicherzellen durchführt, einschließen.
  • Die Steuerung kann auch eine Medienfehlerhandhabungskomponente 920 einschließen, die Komponenten wie die ECC-Engine 224 und das RAID-Modul 228 aus 2 einschließt. Eine Medienhaltungsverwaltungskomponente 930 kann verwendet werden, um den Datenerhalt in den Speicherzellen zu verwalten.
  • Die Konfiguration erfolgt für den herkömmlichen SSD-Modus. Der nach oben gerichtete Pfeil steht für die FTL-Prozesse, die auf den Host verschoben werden, um den OCSSD-Modus bereitzustellen.
  • 10A stellt ein Beispiel der Hostdateisystem-Tabelle 900 von 9 dar. Wenn der Host Daten von einer herkömmlichen SSD liest, weiß der Host nicht, wo die Daten in der SSD gespeichert sind. In ähnlicher Weise kennt der Host in einem Programmiervorgang den physischen Speicherort in der
  • SSD, in welche die Daten geschrieben werden, nicht. Stattdessen werden die Daten durch den Host unter Verwendung einer oder mehrerer logischer Adressen identifiziert, die durch ein Dateisystem auf physische oder virtuelle Orte, z. B. Block und Wortleitungen innerhalb des Blocks, abgebildet werden. Die Hostdateisystem-Tabelle verweist Dateien von Daten auf logische Blockadressen (LBAs). Zum Beispiel kann die Datei in Sektoren unterteilt sein. Eine Datei kann ein Video, ein Bild, ein Textverarbeitungsdokument, eine Anwendung oder andere Daten sein.
  • Die Tabelle kann die LBAs auf physische oder virtuelle Blöcke und Seiten in der Speicherstruktur 126 verweisen. Es kann eine direkte oder indirekte Abbildung von den LBAs auf physische Adressen erfolgen. In einem Beispiel für indirekte Abbildung wird die LBA des Hosts auf eine virtuelle Adresse in der Speichervorrichtung verwiesen, und die virtuelle Adresse in der Speichervorrichtung wird auf eine physische Adresse verwiesen. Eine Adresse, die auf eine andere Adresse abgebildet wird oder auf diese verweist, zeigt auf die andere Adresse.
  • Die Tabelle schließt eine Spalte für einen Dateinamen und eine Spalte für eine logische Adresse ein. Die Dateinamen identifizieren unterschiedliche Dateien und deren Sektoren. Jeder Sektor zeigt auf eine entsprechende logische Adresse. In diesem vereinfachten Beispiel sind die logischen Adressen fortlaufende Zahlen, 0-8. Außerdem weist jede Datei die gleiche Anzahl von Sektoren auf. In anderen Fällen sind die logischen Adressen nicht aufeinanderfolgend und unterschiedliche Dateien können eine unterschiedliche Anzahl von Sektoren haben. Datei 1, Sektoren 0-2 sind jeweils logischen Adressen 0-2 zugeordnet. Datei 2, Sektoren 0-2 sind jeweils logischen Adressen 3-5 zugeordnet. Datei 3, Sektoren 0-2 sind jeweils logischen Adressen 6-8 zugeordnet.
  • 10B stellt ein Beispiel der L2P-Tabelle 910 von 9 dar. Die Tabelle schließt eine Spalte für die logische Adresse des Hosts ein, die mit 10A übereinstimmt, und eine Spalte für eine entsprechende physische Adresse an der SSD. Zum Beispiel werden die Daten, die logischen Adressen 0-2 am Host zugeordnet sind, jeweils in Block 0, Seiten 0-2, gespeichert. Die Daten, die den logischen Adressen 3-8 am Host zugeordnet sind, werden jeweils in Block 1, Seiten 0-5, gespeichert. Die Tabelle wird daher durch logische Seitennummern indiziert und jeder Eintrag identifiziert eine physische Seitennummer, in der die logische Seite gespeichert wurde.
  • 10C stellt ein Beispiel der Gültigkeitsbitmap 911 von 9 dar. Die Gültigkeitsbitmap kann ein Bit für jede physische Seite in einem Block einschließen. Beispielsweise zeigt ein Bit von 1 an, dass die physische Seite derzeit gültige Daten speichert, und ein Bit von 0 zeigt an, dass die physische Seite derzeit ungültige Daten speichert. Ungültige Daten können Daten einschließen, die durch neue Daten auf einer anderen Seite ersetzt wurden. Ungültige Seiten werden für das Recycling in einem Speicherbereinigungsprozess markiert. In diesem Beispiel wird Block 1, Seite 0 als ungültig markiert, was z. B. angibt, dass die logische Seite überschrieben wurde, und die übrigen Seiten sind gültig. Eine Gültigkeitsbitmap kann für jeden Löschblock oder jede Datenblockdatenstruktur bereitgestellt werden, um die gültigen logischen Seiten innerhalb dieses Löschblocks oder -datenblocks zu identifizieren.
  • 10C stellt ein Beispiel der Abnutzungstabelle 912 von 9 dar. Die erste Spalte identifiziert einen Block und eine zweite Spalte identifiziert eine entsprechende Anzahl von P-E-Zyklen oder eine andere Abnutzungsmetrik. Zum Beispiel haben die Blöcke 0-3 jeweils 1200, 1250, 1175 und 1190 P-E-Zyklen. Die Abnutzungstabelle kann für jeden Block oder Datenblock einen Eintrag haben, der die derzeitige Abnutzung des Blocks bzw. Datenblocks angibt. Es könnte sich um eine Anzahl von P-E-Zyklen in einer FTL-Konstruktion oder eine andere Metrik in einer anderen FTL-Konstruktion handeln.
  • Die Datenstrukturen von 10B bis 10D können am Host oder der SSD beibehalten werden, je nach derzeitigem Modus.
  • 11A stellt die Kommunikation von Befehlen zwischen dem Host und der SSD in einem Prozess zum Umschalten des Modus der SSD von einer herkömmlichen SSD auf eine Open-Channel-SSD (OCSSD) dar. Zum Beispiel kann ein erster Befehl ein Umschaltmodus-Befehl sein, der den Modus der SSD von einer herkömmlichen SSD zu einer OCSSD ändert. Dieser Prozess beinhaltet das Kopieren von FTL-Daten von der SSD zum Host. Ein zweiter Befehl kann ein L2P-Tabellen-Synchronisationsbefehl sein, der den Host veranlasst, eine L2P-Tabelle von einer Adresse oder Adressen zu lesen, die von der SSD bereitgestellt werden. Ein dritter Befehl kann ein Gültigkeitsbitmap-Synchronisationsbefehl sein, der den Host veranlasst, eine Gültigkeitsbitmap aus einer Adresse oder Adressen zu lesen, die von der SSD bereitgestellt werden. Ein vierter Befehl kann ein Abnutzungstabellen-Synchronisationsbefehl sein, der den Host veranlasst, eine Abnutzungstabelle von einer Adresse oder Adressen zu lesen, die von der SSD bereitgestellt werden. Die Adressen identifizieren Speicherplätze im Speicher an der SSD, aus denen die FTL-Daten vom Host gelesen werden können.
  • Die Befehle können in einem Format bereitgestellt werden, in dem für unterschiedliche Arten von FTL-Daten unterschiedliche vorbestimmte Bits oder Teilmengen von Bits in einer Bitfolge verwendet werden.
  • 11B stellt die Kommunikation von Befehlen zwischen dem Host und der SSD in einem Prozess zum Umschalten des Modus der SSD von einer Open-Channel-SSD (OCSSD) zu einer herkömmlichen SSD dar. In einem Ansatz gibt der Host einen Befehl aus, der den Modus der SSD umschaltet. Alternativ gibt die SSD oder eine andere Vorrichtung den Befehl aus. Zum Beispiel kann ein erster Befehl ein Umschaltmodus-Befehl (siehe 12A) sein, der den Modus der SSD von einer OCSSD zu einer herkömmlichen SSD ändert. Dieser Prozess beinhaltet das Kopieren von FTL-Daten vom Host zur SSD. Ein zweiter Befehl kann ein L2P-Tabellen-Synchronisationsbefehl sein (siehe 12B), der die SSD veranlasst, eine L2P-Tabelle von einer Adresse oder Adressen zu lesen, die von dem Host bereitgestellt werden. Ein dritter Befehl kann ein Gültigkeitsbitmap-Synchronisationsbefehl (siehe 12C) sein, der die SSD veranlasst, eine Gültigkeitsbitmap aus einer Adresse oder Adressen zu lesen, die von dem Host bereitgestellt werden. Ein vierter Befehl kann ein Abnutzungstabellen-Synchronisationsbefehl (siehe 12D) sein, der die SSD veranlasst, eine Abnutzungstabelle von einer Adresse oder Adressen zu lesen, die von dem Host bereitgestellt werden. Die Adressen identifizieren Speicherplätze im Speicher an dem Host, aus denen die FTL-Daten von der SSD gelesen werden können. Diese Befehle sind Beispiele, da auch andere Befehle verwendet werden können.
  • 12A stellt einen beispielhaften Befehl 1200 zum Umschalten des Modus einer SSD dar, der mit dem ersten Befehl von 11 übereinstimmt. Ein erstes Bit (Bit 0) kann auf 0 gesetzt werden, um eine Modusumschaltung von OCSSD zu SSD anzugeben, oder 1, um eine Modusumschaltung von SSD zu OCSSD anzugeben. Die restlichen Bits werden für andere Zwecke reserviert. Dieser beispielhafte Modusumschalt-Befehl verwendet 32 Bits oder 4 Bytes. Er kann z. B. unter Verwendung des Befehls DWORD 10 in der Open-Channel Solid-State Drives Specification, Revision 2.0, vom 29. Jan. 2018 (LightNVM) implementiert werden.
  • 12B stellt einen beispielhaften Befehl 1210 zum Synchronisieren einer L2P-Tabelle, der mit dem zweiten Befehl von 11 übereinstimmt, dar. In einem Satz von aufeinanderfolgenden Bits identifiziert ein Satz von 32 Bits (Teilmenge 1211) einen Streusammellisteneintrag (SGL-Eintrag) der L2P-Tabelle. Ein SGL wird verwendet, um Daten in einer zusammenhängenden Weise bereitzustellen, auch wenn die Daten in nicht zusammenhängenden Segmenten eines Speichers gespeichert sind. Ein SGL-Eintrag speichert die jeweiligen Startadressen der nicht zusammenhängenden Segmente des Speichers, in dem die Daten gespeichert sind. Eine Steuerung kann den SGL-Eintrag verwenden, um zum Beispiel als zusammenhängender Bytesatz auf die L2P-Tabellendaten zuzugreifen.
  • Ein anderes Bit (Teilmenge 1212) identifiziert eine Übertragungsrichtung der L2P-Tabelle. Eine „1“ kann das Kopieren oder Synchronisieren von der SSD zum Host bezeichnen, und eine „0“ kann das Kopieren oder Synchronisieren vom Host zu der SSD bezeichnen. Dies ermöglicht die Verwendung der gleichen Befehlsstruktur für beide Arten der Modusumschaltung - von herkömmlicher SSD zu OCSSD und von OCSSD zu herkömmlicher SSD.
  • Ein Satz von 31 Bits (Teilmenge 1213) identifiziert eine maximale logische Blockadresse (LBA), wie im Adressraum in 8. Die maximale LBA gibt die maximale logische Blocknummer des Benutzers an, die von der FTL zulässig ist, und setzt indirekt die Überbereitstellung oder die Anzahl der Extrablöcke.
  • Ein letzter Satz von 32 Bits (Teilmenge 1214) identifiziert eine Größe der L2P-Tabelle.
  • Der Befehl kann eine Quell- oder Zieladresse in einer Speichervorrichtung, wie einem RAM im Host oder der SSD, und eine Größe der Daten, die kopiert werden sollen, bereitstellen. Sobald die Übertragung der L2P-Tabelle oder anderer FTL-Daten durch den Host oder die SSD abgeschlossen ist, kann dieser eine Bestätigungsnachricht an die andere Komponente (die SSD bzw. den Host) senden.
  • Dieser beispielhafte L2P-Tabellen-Synchronisationsbefehl verwendet 96 Bits oder 12 Bytes. Er kann z. B. unter Verwendung der Befehle DWORD 10, DWORD 11 und DWORD 12 in der Open-Channel Solid-State Drives Specification implementiert werden. DWORD bezeichnet ein Doppelwort, aufweisend 4 Bytes oder 32 Bits.
  • 12C stellt einen beispielhaften Befehl 1220 zum Synchronisieren einer Gültigkeitsbitmap, der mit dem dritten Befehl von 11 übereinstimmt, dar. In einem Satz von aufeinanderfolgenden Bits identifiziert ein Satz von 32 Bits (Teilmenge 1221) einen SGL-Eintrag der Gültigkeitsbitmap. Eine Steuerung kann den SGL-Eintrag verwenden, um als zusammenhängender Bytesatz auf die Gültigkeitsbitmapdaten zuzugreifen. Ein anderes Bit (Teilmenge 1222) identifiziert eine Übertragungsrichtung der Gültigkeitsbitmap und ist analog zu dem Bit 1212 von 12B. Ein letzter Satz von 32 Bits (Teilmenge 1223) identifiziert eine Größe der Gültigkeitsbitmap. Für jeden Block oder Datenblock kann eine Gültigkeitsbitmap bereitgestellt werden.
  • Dieser beispielhafte Gültigkeitsbitmap-Synchronisationsbefehl verwendet 64 Bits oder 8 Bytes. Er kann z. B. unter Verwendung der Befehle DWORD 10 und DWORD 11 in der Open-Channel Solid-State Drives Specification implementiert werden.
  • 12D stellt einen beispielhaften Befehl 1230 zum Synchronisieren einer Abnutzungstabelle, der mit dem vierten Befehl von 11 übereinstimmt, dar. In einem Satz von aufeinanderfolgenden Bits identifiziert ein Satz von 32 Bits (Teilmenge 1231) einen SGL-Eintrag der Abnutzungstabelle. Eine Steuerung kann den SGL-Eintrag verwenden, um als zusammenhängender Bytesatz auf die Abnutzungstabelle zuzugreifen. Ein anderes Bit (Teilmenge 1232) identifiziert eine Übertragungsrichtung der Abnutzungstabelle und ist analog zu dem Bit 1212 von 12B. Ein letzter Satz von 32 Bits (Teilmenge 1233) identifiziert eine Größe der Abnutzungstabelle.
  • Dieser beispielhafte Abnutzungstabellen-Synchronisationsbefehl verwendet 64 Bits oder 8 Bytes. Er kann z. B. unter Verwendung der Befehle DWORD 10 und DWORD 11 in der Open-Channel Solid-State Drives Specification implementiert werden.
  • Die Befehle von 12A bis 12D können händlerspezifische Befehle sein. Das heißt, für eine gegebene Vorrichtung, wie ein Host oder eine SSD, kann der Hersteller oder Händler der Vorrichtung die Befehle unter Verwendung eines Formats definieren, das sich von dem Format anderer Hersteller oder Händler unterscheidet. In anderen Beispielen kann eine Kombination von händlerspezifischen Befehlen, Steuerungsregister-Schreibvorgängen und Seitenbandsignalen verwendet werden, um die SSD anzuweisen, ihren Modus zu ändern. In einem anderen Beispiel kann der Host händlerdefinierte Protokollseitenschreibvorgänge verwenden, um die L2P-Tabelle mit der oder auf die SSD zu synchronisieren/zu übertragen.
  • In einem Ansatz identifizieren die Befehle unterschiedliche Datentypen der Flash-Übersetzungsschichtprozesse und jeweilige Adressen der unterschiedlichen Datentypen an der Festkörpervorrichtung.
  • Die Befehle können einen Satz aufeinanderfolgender Bits aufweisen, in dem unterschiedliche vorbestimmte Teilmengen des Satzes aufeinanderfolgender Bits für unterschiedliche Arten von FTL-Daten reserviert sind. Zum Beispiel weist in 12B der Befehl zum Synchronisieren der logisch-physischen Adresstabelle einen Satz von aufeinanderfolgenden Bits 1211 bis 1214 auf, in dem eine erste vorbestimmte Teilmenge 1211 des Satzes von aufeinanderfolgenden Bits für den Streusammellisteneintrag reserviert ist, eine zweite vorbestimmte Teilmenge 1213 der Menge aufeinanderfolgender Bits für die maximale logische Blockadresse reserviert ist und eine dritte vorbestimmte Teilmenge 1214 des Satzes aufeinanderfolgender Bits für die Größe der logisch-physischen Adresstabelle reserviert ist.
  • In 12C weist der Befehl zum Synchronisieren der Gültigkeitsbitmap einen Satz von aufeinanderfolgenden Bits 1221 bis 1223 auf, wobei eine erste vorbestimmte Teilmenge 1221 des Satzes von aufeinanderfolgenden Bits für den Streusammellisteneintrag reserviert ist und eine zweite vorbestimmte Teilmenge 1223 des Satzes von aufeinanderfolgenden Bits für eine Größe der Gültigkeitsbitmap reserviert ist.
  • 13A und 13B stimmen mit 11A überein, und 13C und 13D stimmen mit 11 B überein.
  • 13A stellt einen beispielhaften Prozess an einem Host zum Übergehen einer SSD von einer herkömmlichen SSD zu einer OCSSD dar. In Schritt 1300 überträgt der Host einen Schaltmodus-Befehl (wie in 12A) an die SSD, um von einer herkömmlichen SSD zu einer OCSSD überzugehen. In Schritt 1301 empfängt der Host einen Befehl von der SSD, um FTL-Daten zu synchronisieren (sync) oder zum Host zu kopieren. Wie erörtert, schließen Beispiele für FTL eine L2P-Tabelle, eine Gültigkeitsbitmap und eine Abnutzungstabelle ein. Befehle, wie in 12B bis 12D dargestellt, können verwendet werden. In Schritt 1302 sendet der Host als Reaktion auf den Befehl eine Leseanforderung für FTL-Daten an die SSD und empfängt die Daten als Reaktion auf die Anforderung. Ein Entscheidungsschritt 1303 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte 1301 und 1302 wiederholt. Wenn es keinen weiteren Befehl gibt, markiert der Host alle Blöcke zum Recycling in Schritt 1304. Bei Schritt 1305 wartet der Host darauf, dass die Blöcke recycelt werden. Der Host sendet in Schritt 1306 eine Bestätigung an die SSD, die angibt, dass der Übergang abgeschlossen ist. In Schritt 1307 aktualisiert der Host eine Konfigurationsdatei, um anzugeben, dass der OCSSD-Modus aktiv ist.
  • 13B stellt einen beispielhaften Prozess an einer SSD dar, der ein Gegenstück zu dem Prozess von 13A ist. In Schritt 1310 empfängt die SSD einen Umschaltmodus-Befehl vom Host, um von einer herkömmlichen SSD zu einer OCSSD überzugehen. In Schritt 1311 überträgt die SSD einen Befehl an den Host, um FTL-Daten mit dem Host zu synchronisieren. In Schritt 1312 empfängt die SSD in Verbindung mit dem Befehl eine Leseanforderung für FTL-Daten vom Host und überträgt die angeforderten Daten an den Host. Ein Entscheidungsschritt 1313 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte 1311 und 1312 wiederholt. Wenn es keinen weiteren Befehl gibt, empfängt die SSD in Schritt 1314 eine Bestätigung vom Host, die angibt, dass der Übergang abgeschlossen ist. In Schritt 1315 aktualisiert die SSD eine Konfigurationsdatei, um den derzeitigen Modus in der OCSSD zu setzen. Dies gibt an, dass sich eine Rolle der SSD von einer herkömmlichen Festkörpervorrichtung zu einer Open-Channel-Festkörpervorrichtung geändert hat.
  • 13C stellt einen beispielhaften Prozess an einem Host zum Übergehen einer SSD von einer OCSSD zu einer herkömmlichen SSD dar. In Schritt 1320 überträgt der Host einen Schaltmodus-Befehl an die SSD, um von OCSSD zu einer herkömmlichen SSD überzugehen. In Schritt 1321 bereitet der Host Daten der Flash-Übersetzungsschicht (FTL) zur Synchronisation vor (z. B. L2P-Tabelle, Gültigkeitsbitmap für jeden Datenblock von Daten und Abnutzungstabelle). In Schritt 1322 überträgt der Host einen Befehl an die SSD, um FTL-Daten mit der SSD zu synchronisieren. In Schritt 1323 empfängt der Host in Verbindung mit dem Befehl eine Leseanforderung von der SSD für die FTL-Daten und überträgt die Daten als Reaktion an die SSD. Ein Entscheidungsschritt 1324 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte 1322 und 1323 wiederholt. Wenn es keinen weiteren Befehl gibt, empfängt der Host in Schritt 1325 eine Bestätigung von der SSD, die angibt, dass der Übergang abgeschlossen ist. In Schritt 1326 aktualisiert der Host eine Konfigurationsdatei, um anzugeben, dass der OCSSD-Modus nicht aktiv ist.
  • 13D stellt einen beispielhaften Prozess an einer SSD, der ein Gegenstück zu dem Prozess von 13C ist, dar. In Schritt 1330 empfängt die SSD einen Umschaltmodus-Befehl vom Host, um von einer OCSSD zu einer herkömmlichen SSD überzugehen. In Schritt 1331 empfängt die SSD einen Befehl vom Host, um FTL-Daten mit der SSD zu synchronisieren. In Schritt 1332 überträgt die SSD in Verbindung mit dem Befehl eine Leseanforderung an den Host für die FTL-Daten und empfängt die Daten als Reaktion von dem Host. Ein Entscheidungsschritt 1333 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte 1331 und 1332 wiederholt. Wenn es keinen weiteren Befehl gibt, markiert die SSD alle Blöcke zum Recycling in Schritt 1334. Bei Schritt 1335 wartet die SSD darauf, dass die Blöcke recycelt werden. In Schritt 1336 aktualisiert die SSD eine Konfigurationsdatei, um den derzeitigen Modus auf herkömmliche SSD zu setzen. Dies gibt an, dass sich eine Rolle der SSD von einer OCSSD zu einer herkömmlichen SSD geändert hat. In Schritt 1337 überträgt die SSD eine Bestätigung an den Host, die angibt, dass der Übergang abgeschlossen ist.
  • Während des Recyclings der Blöcke kann die SSD Leseanforderungen bedienen, jedoch müssen Schreibanforderungen bis zum Abschluss des Recyclings warten. Durch den Recyclingschritt wird sichergestellt, dass alle Datenblöcke mit den aktualisierten FTL-Metadaten in einem Format, das mit der SSD kompatibel ist, neu geschrieben werden. Während des Recyclings wird die Gültigkeitsbitmap verwendet, um Seiten zu identifizieren, die aus dem Datenblock recycelt werden sollen. Völlig ungültige Datenblöcke werden als frei gesetzt und können kurz vor der nächsten Programmierung gelöscht werden.
  • Im Allgemeinen wird beim Ändern der Rolle auf der SSD auch die Rolle auf der Host-Seite geändert. Der Host kann von keine FTL-Daten aufweisend zu einige oder alle FTL-Daten aufweisend wechseln.
  • 14A stellt den Transfer von FTL-Daten zwischen einem Host und einer SSD übereinstimmend mit 13A -13D dar. In den hierin beschriebenen Techniken können die FTL-Daten, auch als Datenstrukturen oder Metadaten bezeichnet, zwischen dem Host und der SSD in einem Standardformat übertragen werden, das sowohl für den Host als auch für die SSD erkennbar ist. Die Figur stellt ein Host-FTL-Format, ein Standard-FTL-Format und ein SSD-FTL-Format in unterschiedlichen Blöcken dar. Die Pfeile zwischen den Blöcken stehen für eine Übertragung von FTL-Daten während einer Modusumschaltung. Der Host ist frei, die FTL-Daten in einem spezifischen Format zu speichern, das sich von einem Format unterscheidet, in dem die SSD die FTL-DATEN speichert.
  • Beispiele für FTL-Datenformatvariablen wurden vorstehend erörtert. In einem Beispiel speichert der Host die FTL-Daten in einem komprimierten Format, und das Standard-FTL-Format ist für unkomprimierte Daten. In diesem Fall dekomprimiert der Host die FTL-Daten und stellt diese als unkomprimierte FTL-Daten der SSD im Standard-FTL-Format zur Verfügung. Wenn die SSD die FTL-Daten empfängt und speichert, kann diese sie in dem unkomprimierten Format speichern, in dem sie empfangen werden, oder sie unter Verwendung ihres eigenen Komprimierungsformats komprimieren und speichern, das gleich oder verschieden von dem Komprimierungsformat des Hosts sein kann.
  • In einem anderen Beispiel speichert der Host die FTL-Daten unter Verwendung eines ersten Komprimierungsformats, und das Standard-FTL-Format ist für ein zweites Komprimierungsformat. In diesem Fall wandelt der Host die FTL-Daten vom ersten Komprimierungsformat in das zweite Komprimierungsformat um und stellt diese im zweiten Komprimierungsformat dem SSD zur Verfügung. Wenn die SSD die FTL-Daten empfängt und speichert, kann diese sie in dem zweiten Komprimierungsformat speichern, in dem sie empfangen werden, oder sie unter Verwendung ihres eigenen Komprimierungsformats komprimieren und speichern, das gleich oder verschieden von dem ersten Komprimierungsformat des Hosts sein kann.
  • In einem anderen Beispiel speichert der Host die FTL-Daten unter Verwendung der Big-Endian-Byte-Reihenfolge und das Standard-FTL-Format ist für die Little-Endian-Byte-Reihenfolge. In diesem Fall wandelt der Host die FTL-Daten von der Big-Endian-Byte-Reihenfolge in die Little-Endian-Byte-Reihenfolge um, bevor die FTL-Daten der SSD bereitgestellt werden. Wenn die SSD die FTL-Daten empfängt und speichert, kann diese sie in der Little-Endian-Byte-Reihenfolge, in der sie empfangen werden, oder unter Verwendung der Big-Endian-Byte-Reihenfolge speichern.
  • Ähnliche Beispiele können für die Übertragung von FTL-Daten von der SSD zum Host gelten. Viele andere Beispiele sind ebenfalls möglich.
  • Die Übertragung der FTL-Daten kann z. B. Befehle verwenden, die mit der NVM Express (TM)-Schnittstelle kompatibel sind. Diese Schnittstelle ermöglicht es Host-Software, mit einem nichtflüchtigen Speicheruntersystem zu kommunizieren. Diese Schnittstelle ist für Enterprise- und Client-Festkörperlaufwerke optimiert, die in der Regel als Registerebenen-Schnittstelle an die PCI-Express-Schnittstelle angefügt werden. [00146] Sobald die FTL-Metadaten übertragen wurden, kann diese verwendet werden, um ein vollständiges Laufwerk-Recycling durchzuführen, um die Blöcke im kompatiblen Format wiederherzustellen. Auf diese Weise wird eine Modusumschaltung ohne Datenverlust erreicht. Außerdem ist ein externes Backup der FTL-Daten nicht erforderlich, das zuweilen nicht machbar ist.
  • 14B stellt den Transfer von FTL-Daten zwischen dem Host und einer anderen Anwendung dar. Eine andere Anwendung als die, die derzeit am Host verwendet wird, um die Funktionen des OCSSD-Modus durchzuführen, kann beginnen, die Funktionen des OCSSD-Modus durchzuführen, wenn sie mit der SSD interagiert. Zum Beispiel kann der Host ein Server sein, der anfänglich die Funktionen des OCSSD-MODUS durchführt. Anschließend übernimmt eine andere Anwendung, die sich auf demselben Server wie der Host oder auf einem anderen Server oder einer anderen Rechenvorrichtung befinden kann, die Funktionen des OCSSD-Modus. In einem Ansatz kann der Host die FTL-Daten unter Verwendung des Standard-FTL-Formats an die andere Anwendung übertragen. Dies ermöglicht es der anderen Anwendung, die FTL-Daten im Standardformat zu empfangen und zur Verwendung in ihrem eigenen Format umzuwandeln.
  • In einem anderen Ansatz kann der Host die FTL-Daten unter Verwendung des gleichen Formats, wie es vom Host verwendet wird, an die andere Anwendung übertragen, wenn der Host weiß, dass die andere Anwendung das gleiche Format verwendet. 15 stellt unterschiedliche Teile einer Speicherzellenanordnung dar, die in SSD- und OCSSD-Modi verwendet wird. Wie bereits erwähnt, könnte abhängig von Latenzanforderungen einer Anwendung der Host eine Anordnung teilweise als OCSSD (wobei der Host die FTL-Daten verwaltet) und teilweise als herkömmliche Flash-Anordnung verwenden, wobei die Anordnung die FTL-Daten verwaltet. Zum Beispiel kann eine Speicherzellenanordnung, wie die Speicherstruktur 126 von 1, einen ersten Satz von Blöcken 1500 und einen zweiten Satz von Blöcken 1510 aufweisen. Der erste Satz von Blöcken kann zum Beispiel im SSD-Modus verwendet werden, während der zweite Satz von Blöcken zum Beispiel im OCSSD-Modus verwendet wird. Oder der erste Satz von Blöcken kann im OCSSD-Modus verwendet werden während der zweite Satz von Blöcken zum Beispiel im SSD-Modus verwendet wird.
  • In jedem Fall können FTL-Daten für den ersten Satz von Blöcken getrennt von FTL-Daten für den zweiten Satz von Blöcken geführt werden. Wenn sich zum Beispiel der erste Satz von Blöcken im SSD-Modus befindet, werden jeweilige FTL-Daten zum Beispiel durch die Steuerung 122 beibehalten. Wenn sich der zweite Satz von Blöcken im OCSSD-Modus befindet, werden zum Beispiel jeweilige FTL-Daten durch den Host geführt.
  • Außerdem kann sich die Anzahl der Blöcke in den Sätzen 1500 und 1510 mit der Zeit ändern.
  • Dementsprechend ist ersichtlich, dass in einer Implementierung eine Einrichtung aufweist: eine Vielzahl von Blöcken von Speicherzellen und eine Steuerschaltung, die in einer Festkörpervorrichtung angeordnet ist, wobei die Steuerschaltung Flash-Übersetzungsschichtprozesse für die Vielzahl von Blöcken verwaltet, und die Steuerschaltung, um das Verwalten der Flash-Übersetzungsschichtprozesse von der Festkörpervorrichtung zu einem Host zu überführen, konfiguriert ist zum: Übertragen eines Befehls an den Host, um eine logisch-physische Adresstabelle zu synchronisieren; und Übertragen eines Befehls an den Host, um eine Gültigkeitsbitmap zu synchronisieren.
  • In einer anderen Implementierung weist ein Verfahren auf: Empfangen eines ersten Befehls an einer Festkörpervorrichtung, um eine logisch-physische Adresstabelle eines Hosts zu synchronisieren, wobei der erste Befehl einen Streusammellisteneintrag jeweiliger Adressen der logisch-physischen Adresstabelle aufweist; als Reaktion auf den ersten Befehl, Lesen der logisch-physischen Adresstabelle aus dem Host unter Verwendung der jeweiligen Adressen; Empfangen eines zweiten Befehls an der Festkörpervorrichtung, um eine Gültigkeitsbitmap des Hosts zu synchronisieren, wobei der zweite Befehl einen Streusammellisteneintrag jeweiliger Adressen der Gültigkeitsbitmap aufweist; als Reaktion auf den zweiten Befehl, Lesen der Gültigkeitsbitmap aus dem Host unter Verwendung der jeweiligen Adressen; Recyceln einer Vielzahl von Blöcken von Speicherzellen der Festkörpervorrichtung; und als Reaktion auf den Abschluss des Recyclings, Aktualisieren einer Konfigurationsdatei, um anzugeben, dass sich eine Rolle der Festkörpervorrichtung von einer Open-Channel-Festkörpervorrichtung, in der Flash-Übersetzungsschichtprozesse durch den Host verwaltet werden, zu einer herkömmlichen Festkörpervorrichtung, in der die Flash-Übersetzungsschichtprozesse durch die Festkörpervorrichtung verwaltet werden, geändert hat.
  • In einer anderen Implementierung weist ein Verfahren an einem Host auf: Übertragen eines Befehls an eine Festkörpervorrichtung, um die Festkörpervorrichtung von einer herkömmlichen Festkörpervorrichtung, in der Flash-Übersetzungsschichtprozesse durch die Festkörpervorrichtung verwaltet werden, zu einer Open-Channel-Festkörpervorrichtung, in der die Flash-Übersetzungsschichtprozesse durch den Host verwaltet werden, zu überführen; als Reaktion auf den Befehl zum Überführen der Festkörpervorrichtung von der herkömmlichen Festkörpervorrichtung zu der Open-Channel-Festkörpervorrichtung, Empfangen, von der Festkörpervorrichtung, von Befehlen, die unterschiedliche Datentypen der Flash-Übersetzungsschichtprozesse und jeweilige Adressen der unterschiedlichen Datentypen an der Festkörpervorrichtung identifizieren; als Reaktion auf die Befehle, Lesen der unterschiedlichen Datentypen aus der Festkörpervorrichtung unter Verwendung der jeweiligen Adressen; und Verwalten der Flash-Übersetzungsschichtprozesse unter Verwendung der unterschiedlichen Datentypen der Flash-Übersetzungsschicht.
  • In einer anderen Implementierung weist ein Verfahren auf: Empfangen eines Befehls an einer Festkörpervorrichtung, um die Festkörpervorrichtung von einer herkömmlichen Festkörpervorrichtung, in der Flash-Übersetzungsschichtprozesse durch die Festkörpervorrichtung verwaltet werden, zu einer Open-Channel-Festkörpervorrichtung, in der die Flash-Übersetzungsschichtprozesse durch einen Host verwaltet werden, zu überführen; und als Reaktion auf den Befehl, die Festkörpervorrichtung von der herkömmlichen Festkörpervorrichtung zu der Open-Channel-Festkörpervorrichtung zu überführen, Übertragen, von der Festkörpervorrichtung zu dem Host, von Befehlen, die unterschiedliche Datentypen der Flash-Übersetzungsschichtprozesse identifizieren, und jeweilige Adressen der unterschiedlichen Datentypen an der Festkörpervorrichtung, um es dem Host zu ermöglichen, die unterschiedlichen Datentypen von der Festkörpervorrichtung unter Verwendung der jeweiligen Adressen zu lesen und die Flash-Übersetzungsschichtprozesse unter Verwendung der unterschiedlichen Datentypen der Flash-Übersetzungsschicht zu verwalten.
  • Die vorhergehende detaillierte Beschreibung der Erfindung wurde zu Zwecken der Veranschaulichung und Beschreibung präsentiert. Sie soll nicht erschöpfend sein oder die Erfindung auf die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind im Lichte der obigen Lehren möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der Erfindung und ihre praktische Anwendung am besten zu erklären, um dadurch anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, wie sie für die jeweilige beabsichtigte Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Schutzumfang der Erfindung durch die hieran angehängten Ansprüche definiert wird.

Claims (15)

  1. Einrichtung, aufweisend: eine Vielzahl von Blöcken (BLK0 bis BLK3) von Speicherzellen (503 bis 514, 523 bis 534, 543 bis 554, 563 bis 574) und eine Steuerschaltung (122), die in einer Festkörpervorrichtung angeordnet ist, wobei die Steuerschaltung Flash-Übersetzungsschichtprozesse für die Vielzahl von Blöcken verwaltet und die Steuerschaltung, um das Verwalten der Flash-Übersetzungsschichtprozesse von der Festkörpervorrichtung zu einem Host (140) übergehen zu lassen, konfiguriert ist zum: Übertragen eines Befehls (1210) an den Host, um eine logisch-physische Adresstabelle (910) zu synchronisieren; und Übertragen eines Befehls (1220) an den Host, um eine Gültigkeitsbitmap (911) zu synchronisieren.
  2. Einrichtung gemäß Anspruch 1, wobei: die Steuerschaltung konfiguriert ist, um als Reaktion auf eine Bestätigung von dem Host, die angibt, dass der Übergang abgeschlossen ist, eine Konfigurationsdatei zu aktualisieren, um anzugeben, dass sich eine Rolle der Festkörpervorrichtung von einer herkömmlichen Festkörpervorrichtung zu einer Open-Channel-Festkörpervorrichtung geändert hat.
  3. Einrichtung gemäß Anspruch 1 oder 2, wobei der Befehl zum Synchronisieren der logisch-physischen Adresstabelle Folgendes identifiziert: einen Streusammellisteneintrag (1221) der logisch-physischen Adresstabelle; eine maximale logische Blockadresse (1213); und eine Größe (1214) der logisch-physischen Adresstabelle.
  4. Einrichtung gemäß Anspruch 3, wobei der Befehl zum Synchronisieren der logisch-physischen Adresstabelle aufweist: ein Bit (1212), das angibt, dass die logisch-physische Adresstabelle in den Host kopiert werden soll.
  5. Einrichtung gemäß Anspruch 3 oder 4, wobei: der Befehl zum Synchronisieren der logisch-physischen Adresstabelle einen Satz von aufeinanderfolgenden Bits (1211 bis 1214), auf dem eine erste vorbestimmte Teilmenge (1211) des Satzes von aufeinanderfolgenden Bits für den Streusammellisteneintrag reserviert ist, eine zweite vorbestimmte Teilmenge (1213) des Satzes aufeinanderfolgender Bits für die maximale logische Blockadresse reserviert ist und eine dritte vorbestimmte Teilmenge (1214) des Satzes aufeinanderfolgender Bits für die Größe der logisch-physischen Adresstabelle reserviert ist.
  6. Einrichtung gemäß einem der Ansprüche 1 bis 5, wobei der Befehl zum Synchronisieren der Gültigkeitsbitmap Folgendes identifiziert: einen Streusammellisteneintrag (1221) der Gültigkeitsbitmap; und eine Größe (1223) der Gültigkeitsbitmap.
  7. Einrichtung gemäß Anspruch 6, wobei der Befehl zum Synchronisieren der Gültigkeitsbitmap aufweist: ein (1222) Bit, das angibt, dass die Gültigkeitsbitmap in den Host kopiert werden soll.
  8. Einrichtung gemäß Anspruch 6 oder 7, wobei: der Befehl zum Synchronisieren der Gültigkeitsbitmap einen Satz von aufeinanderfolgenden Bits (1221 bis 1223) aufweist, wobei eine erste vorbestimmte Teilmenge (1221) des Satzes von aufeinanderfolgenden Bits für den Streusammellisteneintrag reserviert ist und eine zweite vorbestimmte Teilmenge (1223) des Satzes von aufeinanderfolgenden Bits für eine Größe der Gültigkeitsbitmap reserviert ist.
  9. Einrichtung gemäß einem der Ansprüche 1 bis 8, wobei die Steuerschaltung, um das Verwalten der Flash-Übersetzungsschichtprozesse von der Festkörpervorrichtung zu dem Host zu überführen, konfiguriert ist, um einen Befehl (1230) zu dem Host zu übertragen, um eine Abnutzungstabelle der Flash-Übersetzungsschicht zu synchronisieren, wobei der Befehl zum Synchronisieren der Abnutzungstabelle aufweist: Bits (1231), die einen Streusammellisteneintrag der Abnutzungstabelle identifizieren; und Bits (1233), die eine Größe der Abnutzungstabelle angeben.
  10. Einrichtung gemäß Anspruch 9, wobei der Befehl zum Synchronisieren der Abnutzungstabelle aufweist: ein Bit (1232), das angibt, dass die Abnutzungstabelle in den Host kopiert werden soll.
  11. Einrichtung gemäß einem der Ansprüche 1 bis 10, wobei: die Steuerschaltung konfiguriert ist, um als Reaktion auf das Empfangen eines Schaltmodus-Befehls (1200) von dem Host mit dem Übergang des Verwaltens der Flash-Übersetzungsschichtprozesse zu beginnen, wobei der Schaltmodus-Befehl ein Bit aufweist, das angibt, dass das Verwalten der Flash-Übersetzungsschichtprozesse von der Festkörpervorrichtung zu dem Host übergehen soll.
  12. Einrichtung gemäß einem der Ansprüche 1 bis 11, wobei: die Befehle unter Verwendung reservierter Datenwörter in einer Schnittstellenspezifikation übertragen werden, die den Host mit der Festkörpervorrichtung verbindet.
  13. Verfahren, aufweisend: Empfangen eines ersten Befehls (1210) an einer Festkörpervorrichtung, um eine logisch-physische Adresstabelle eines Hosts zu synchronisieren, wobei der erste Befehl einen Streusammellisteneintrag (1211) jeweiliger Adressen der logisch-physischen Adresstabelle aufweist; als Reaktion auf den ersten Befehl, Lesen der logisch-physischen Adresstabelle aus dem Host unter Verwendung der jeweiligen Adressen; Empfangen eines zweiten Befehls (1220) an der Festkörpervorrichtung, um eine Gültigkeitsbitmap des Hosts zu synchronisieren, wobei der zweite Befehl einen Streusammellisteneintrag (1221) jeweiliger Adressen der Gültigkeitsbitmap aufweist; als Reaktion auf den zweiten Befehl, Lesen der Gültigkeitsbitmap aus dem Host unter Verwendung der jeweiligen Adressen; Recyceln einer Vielzahl von Blöcken (BLK0 bis BLK3) von Speicherzellen der Festkörpervorrichtung; und als Reaktion auf den Abschluss des Recyclings, Aktualisieren einer Konfigurationsdatei, um anzugeben, dass sich eine Rolle der Festkörpervorrichtung von einer Open-Channel-Festkörpervorrichtung, in der Flash-Übersetzungsschichtprozesse durch den Host verwaltet werden, zu einer herkömmlichen Festkörpervorrichtung, in der die Flash-Übersetzungsschichtprozesse durch die Festkörpervorrichtung verwaltet werden, geändert hat.
  14. Verfahren gemäß Anspruch 13, wobei: durch das Recycling sichergestellt wird, dass die Vielzahl von Blöcken von Speicherzellen unter Verwendung der logisch-physikalischen Adresstabelle und der Gültigkeitsbitmap in einem mit der Festkörpervorrichtung kompatiblen Format umgeschrieben wird.
  15. Verfahren gemäß Anspruch 13 oder 14, weiterhin aufweisend: während des Recyclings, Verwenden der Gültigkeitsbitmap zum Identifizieren von Seiten von Daten, die aus einem Datenblock von Daten (801, 802) recycelt werden sollen, wobei der Datenblock von Daten einen oder mehrere Blöcke der Vielzahl von Blöcken aufweist.
DE112019005369.8T 2019-06-24 2019-12-17 Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust Pending DE112019005369T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/449,718 US10860228B1 (en) 2019-06-24 2019-06-24 Method to switch between traditional SSD and open-channel SSD without data loss
US16/449,718 2019-06-24
PCT/US2019/067001 WO2020263324A1 (en) 2019-06-24 2019-12-17 Method to switch between traditional ssd and open-channel ssd without data loss

Publications (1)

Publication Number Publication Date
DE112019005369T5 true DE112019005369T5 (de) 2021-07-15

Family

ID=73653562

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019005369.8T Pending DE112019005369T5 (de) 2019-06-24 2019-12-17 Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust

Country Status (4)

Country Link
US (1) US10860228B1 (de)
CN (1) CN113168291B (de)
DE (1) DE112019005369T5 (de)
WO (1) WO2020263324A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102705754B1 (ko) * 2019-03-05 2024-09-12 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작방법
US11294825B2 (en) * 2019-04-17 2022-04-05 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20200122086A (ko) 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치
KR20210001546A (ko) 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법
US11487674B2 (en) 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
KR20200139913A (ko) * 2019-06-05 2020-12-15 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치
WO2020243244A1 (en) * 2019-05-28 2020-12-03 John Rankin Supporting a virtual memory area at a remote computing machine
KR20210039872A (ko) * 2019-10-02 2021-04-12 삼성전자주식회사 프리 블록의 할당을 관리하는 호스트 시스템, 이를 포함하는 데이터 처리 시스템 및 호스트 시스템의 동작방법
KR20210039871A (ko) * 2019-10-02 2021-04-12 삼성전자주식회사 메타 데이터를 관리하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작방법
CN112114750B (zh) * 2020-09-11 2023-01-10 苏州浪潮智能科技有限公司 一种元数据卷位图数据冲突处理方法及相关组件
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
US12014052B2 (en) 2021-03-22 2024-06-18 Google Llc Cooperative storage architecture
EP4273703A1 (de) * 2022-05-06 2023-11-08 Samsung Electronics Co., Ltd. Rechnersystem zur erzeugung von kartendaten und verfahren zum betrieb davon
EP4276634A1 (de) * 2022-05-09 2023-11-15 Samsung Electronics Co., Ltd. Speichervorrichtung, rechenvorrichtung mit der speichervorrichtung und speichervorrichtung sowie betriebsverfahren der rechenvorrichtung
US20230418482A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Storage device pool management based on storage device logical to physical (l2p) table information

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100845552B1 (ko) 2006-12-18 2008-07-10 (재)대구경북과학기술연구원 Ftl의 어드레스 매핑 방법
US20150261446A1 (en) * 2014-03-12 2015-09-17 Futurewei Technologies, Inc. Ddr4-onfi ssd 1-to-n bus adaptation and expansion controller
US20150331624A1 (en) 2014-05-19 2015-11-19 Kabushiki Kaisha Toshiba Host-controlled flash translation layer snapshot
US10331364B2 (en) 2015-10-16 2019-06-25 Cnex Labs, Inc. Method and apparatus for providing hybrid mode to access SSD drive
CN109074318B (zh) 2016-05-31 2023-07-04 桑迪士克科技有限责任公司 用于执行转换层表的自适应主机存储器缓冲区高速缓存的系统和方法
US10331352B2 (en) 2016-06-06 2019-06-25 Toshiba Memory Corporation Dynamic processing of storage command based on internal operations of storage system
US9990134B2 (en) * 2016-06-15 2018-06-05 Seagate Technology Llc Command tunneling in a hybrid data storage device
US10180875B2 (en) 2016-07-08 2019-01-15 Toshiba Memory Corporation Pool-level solid state drive error correction
KR102618699B1 (ko) * 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
US10542089B2 (en) * 2017-03-10 2020-01-21 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
US10521375B2 (en) * 2017-06-22 2019-12-31 Macronix International Co., Ltd. Controller for a memory system
JP2019008730A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム
US10635584B2 (en) * 2017-06-29 2020-04-28 Western Digital Technologies, Inc. System and method for host system memory translation
US10678446B2 (en) * 2017-07-11 2020-06-09 Western Digital Technologies, Inc. Bitmap processing for log-structured data store
CN107391391B (zh) * 2017-07-19 2019-05-14 深圳大普微电子科技有限公司 在固态硬盘的ftl实现数据拷贝的方法、系统及固态硬盘
US20190034306A1 (en) * 2017-07-31 2019-01-31 Intel Corporation Computer System, Computer System Host, First Storage Device, Second Storage Device, Controllers, Methods, Apparatuses and Computer Programs
JP6982468B2 (ja) 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
KR102624911B1 (ko) * 2018-06-13 2024-01-12 삼성전자주식회사 개선된 메타 데이터 관리를 통한 플래시 메모리의 내구성 향상 방법
CN109445821A (zh) * 2018-11-01 2019-03-08 郑州云海信息技术有限公司 一种批量刷新双模ssd开放通道模式固件的方法及系统

Also Published As

Publication number Publication date
US20200401331A1 (en) 2020-12-24
CN113168291B (zh) 2024-06-21
CN113168291A (zh) 2021-07-23
WO2020263324A1 (en) 2020-12-30
US10860228B1 (en) 2020-12-08

Similar Documents

Publication Publication Date Title
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102018105529B4 (de) Managementschema zur Vermeidung einer Lösch- und Programmierstörung von Subblöcken im nichtflüchtigen Datenspeicher
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE102020105946A1 (de) Speicherzellen-fehlform-abschwächung
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE102021107340A1 (de) Speichersystem und verfahren für eine ausgeglichene quad-level- cell(qlc)-codierung mit spielraum für einen internal-data-load(idl)-lesevorgang
DE112019007666T5 (de) Schreibpuffersteuerung in einem verwalteten Speichersystem
DE102021107436A1 (de) Speichersystem und Verfahren zum direkten Quad-Level-Cell-Programmieren (QLC-Programmieren)
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CALIF., US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US