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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000013519 translation Methods 0.000 claims abstract description 29
- 239000007787 solid Substances 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims description 196
- 230000008569 process Effects 0.000 claims description 63
- 238000012546 transfer Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 15
- 238000004064 recycling Methods 0.000 claims description 13
- 230000007704 transition Effects 0.000 claims description 9
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 claims description 3
- 238000003860 storage Methods 0.000 description 97
- 210000004027 cell Anatomy 0.000 description 85
- 239000000758 substrate Substances 0.000 description 24
- 238000013459 approach Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 239000004065 semiconductor Substances 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 10
- 238000003491 array Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000012795 verification Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 210000000352 storage cell Anatomy 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 239000002184 metal Substances 0.000 description 5
- 239000003990 capacitor Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 229910052581 Si3N4 Inorganic materials 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- HQVNEWCFYHHQES-UHFFFAOYSA-N silicon nitride Chemical compound N12[Si]34N5[Si]62N3[Si]51N64 HQVNEWCFYHHQES-UHFFFAOYSA-N 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 1
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 1
- 208000033748 Device issues Diseases 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 150000004767 nitrides Chemical class 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 1
- 229920005591 polysilicon Polymers 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 235000012239 silicon dioxide Nutrition 0.000 description 1
- 239000000377 silicon dioxide Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear 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
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 Speicherungsvorrichtung100 aus1 , das weitere Einzelheiten der Steuerung122 darstellt. -
3 ist eine perspektivische Ansicht einer Speichervorrichtung300 , die einen Satz von Blöcken in einer beispielhaften 3D-Konfiguration der Speicherstruktur126 von1 aufweist. -
4 stellt einen beispielhaften Transistor420 dar. -
5 stellt eine beispielhafte Ansicht von NAND-Ketten in einem Block BLK0 dar, die mit3 ü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 Steuerung122 von1 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 mit7 . -
9 stellt beispielhafte Prozesse der Steuerung122 und des Hosts140 von1 dar. -
10A stellt ein Beispiel der Hostdateisystem-Tabelle900 von9 dar. -
10B stellt ein Beispiel der L2P-Tabelle 910 von9 dar. -
10C stellt ein Beispiel der Gültigkeitsbitmap911 von9 dar. -
10C stellt ein Beispiel der Abnutzungstabelle912 von9 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 von11 übereinstimmt, dar. -
12B stellt einen beispielhaften Befehl zum Synchronisieren einer L2P-Tabelle, der mit dem zweiten Befehl von11 übereinstimmt, dar. -
12C stellt einen beispielhaften Befehl zum Synchronisieren einer Gültigkeitsbitmap, der mit dem dritten Befehl von11 übereinstimmt, dar. -
12D stellt einen beispielhaften Befehl zum Synchronisieren einer Abnutzungstabelle, der mit dem vierten Befehl von11 ü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 von13A 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 von13C ist, dar. -
14A stellt den Transfer von FTL-Daten zwischen einem Host und einer SSD übereinstimmend mit13A -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 in5 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 in6A 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 Speichervorrichtung100 wie ein nichtflüchtiges Speichersystem kann ein oder mehrere Speicherelemente108 einschließen. Der Speicher-Die108 oder Chip schließt eine Speicherstruktur126 aus Speicherzellen, wie eine Speicherzellenanordnung, eine Steuerschaltung110 und Lese/Schreib-Schaltungen128 ein. Die Speicherstruktur126 ist durch Wortleitungen über einen Zeilendecoder124 und durch Bitleitungen über einen Spaltendecoder132 adressierbar. Die Lese-/Schreibschaltungen128 schließen mehrere Abtastblöcke51 ,52 ,... 53 (Abtastschaltkreis) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Üblicherweise ist eine Steuerung122 in der gleichen Speichervorrichtung100 (z. B. einer entfernbaren Speicherkarte) wie das eine oder die mehreren Speicherchips108 enthalten. Die Steuerung kann von dem Speicher-Die getrennt sein. Befehle und Daten werden zwischen dem Host140 und der Steuerung122 über einen Datenbus120 und zwischen der Steuerung und dem einen oder den mehreren Speicherchips108 über Leitungen118 ü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-/Schreibschaltungen128 zusammen, um Speichervorgänge auf der Speicherstruktur126 durchzuführen, und schließt eine Zustandsmaschine, einen On-Chip-Adressdecodierer114 und ein Leistungssteuerungsmodul115 (Leistungssteuerungsschaltung) ein. Eine Speicherregion113 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 Decodierern124 und132 verwendet wird, bereit. Das Leistungssteuerungsmodul115 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 Steuerschaltung110 , einer Zustandsmaschine112 , Decodierern114 und132 , einem Leistungssteuermodul115 , Abtastblöcken51 ,52 , ...,53 , Lese-/Schreibschaltungen128 , einer Steuerung122 und so weiter einschließen. - Die Off-Chip-Steuerung
122 (die in einer Ausführungsform eine elektrische Schaltung ist) kann einen Prozessor122e , einen Speicher wie ROM122a und RAM122b und eine Fehlerkorrekturcode-Engine (ECC-Engine)245 aufweisen. Die ECC-Engine kann eine Reihe von Lesefehlern korrigieren. Der RAM122b 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 Steuerschaltkreis110 (oder einer beliebigen anderen Komponente des Speicherchips) über die Speicherschnittstelle122d Befehle erteilen. - Der Speicher in der Steuerung
122 , wie ROM122a und RAM122b weisen einen Code auf, wie einen Satz von Anweisungen, und der Prozessor122c 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 Teilmenge126a 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 ROM122a oder der Teilmenge126a der Speicherstruktur zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den RAM122b . 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 Prozessor141 und einen Speicher142 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 Speicherungsvorrichtung100 (Speichervorrichtung) aus1 , das weitere Einzelheiten der Steuerung122 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-Die108 kann eine beliebige geeignete Flash-Schnittstelle sein. In einer Ausführungsform kann die Speicherungsvorrichtung100 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 Steuerung122 und dem nichtflüchtigen Speicher-Die108 ein, wobei der hier beschriebene Gegenstand nicht darauf beschränkt ist, einen einzelnen Speicherkanal zu haben. - Die Steuerung
122 schließt ein Frontend-Modul208 , das mit einem Host verbunden ist, ein Backend-Modul210 , das mit dem einen oder den mehreren nichtflüchtigen Speicherchips108 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 in1 dargestellten Komponenten der Steuerung122 (z. B. den RAM, den ROM, den Prozessor, die Schnittstelle) verwenden kann (aber nicht muss). - Die Steuerung
122 kann eine Rekonditionierungsschaltung212 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-/Bussteuerung214 Puffer im Direktzugriffsspeicher (RAM)216 und steuert die interne Buszuteilung der Steuerung122 . 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 in2 als von der Steuerung getrennt angeordnet veranschaulicht sind, können in anderen Ausführungsformen der RAM216 und/oder der ROM218 innerhalb der Steuerung angeordnet sein. In noch anderen Ausführungsformen können sich Teile des RAM und des ROM sowohl innerhalb der Steuerung122 als auch außerhalb der Steuerung befinden. Weiterhin können in einigen Implementierungen die Steuerung122 , der RAM216 und der ROM218 auf separaten Halbleiterchips angeordnet sein. - Das Frontend-Modul
208 beinhaltet eine Host-Schnittstelle220 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-Schnittstelle220 kann von dem Typ des verwendeten Speichers abhängen. Beispiele für die Host-Schnittstellen220 schließen SATA, SATA Express, SAS, Fibre Channel, USB, PCle und NVMe ein, ohne jedoch darauf beschränkt zu sein. Die Host-Schnittstelle220 unterstützt üblicherweise die Übertragung von Daten, Steuersignalen und Taktsignalen. - Das Backend-Modul
210 schließt eine Engine224 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 Befehlssequenzer226 erzeugt Befehlssequenzen wie Programmier- und Löschbefehlssequenzen zum Übertragen an den nichtflüchtigen Speicher-Die108 . 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 Speicherungsvorrichtung100 geschrieben werden. In einigen Fällen kann das RAID-Modul228 Teil der ECC-Engine224 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 Speicherschnittstelle230 stellt die Befehlssequenzen für den nichtflüchtigen Speicherchip108 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherchip. Eine Flash-Steuerschicht232 steuert den Gesamtbetrieb des Backend-Moduls210 . - 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-Die108 durchführt. Das Speichersystem schließt auch andere diskrete Komponenten240 ein, wie beispielsweise externe elektrische Schnittstellen, einen externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung122 über eine Schnittstelle verbunden sein können. In alternativen Ausführungsformen sind eine oder mehrere der Physical-Layer-Schnittstelle222 , des RAI D-Moduls228 und der Pufferverwaltungs-/Bussteuerung214 optionale Komponenten, die in der Steuerung122 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 Chips108 ü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 Speicherchips108 verbunden sein. In einer Ausführungsform implementieren die Steuerung und mehrere Speicher-Dies (welche zusammen die Speicherungsvorrichtung100 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 Speichervorrichtung300 , die einen Satz von Blöcken in einer beispielhaften 3D-Konfiguration der Speicherstruktur126 von1 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 Peripheriebereich304 verläuft entlang einer Kante jedes Blocks, während sich der Peripheriebereich305 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 Substrat301 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 Zwischenregion302 der Speichervorrichtung ausgebildet. In einer oberen Region303 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 Transistor420 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 mit3 ü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-Ketten500n ,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-Ketten500n ,510n ,520n und530n 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 und530n weisen Kanäle500a ,510a ,520a bzw.530a auf. Zusätzlich schließt die NAND-Kette500n den SGS-Transistor501 , die Dummy-Speicherzelle502 , die Datenspeicherzellen503 bis514 , die Dummy-Speicherzelle515 und den SGD-Transistor516 ein. Die NAND-Kette510n schließt den SGS-Transistor521 , die Dummy-Speicherzelle522 , die Datenspeicherzellen523 bis534 , die Dummy-Speicherzelle535 und den SGD-Transistor536 ein. Die NAND-Kette520n schließt den SGS-Transistor541 , die Dummy-Speicherzelle542 , die Datenspeicherzellen543 bis554 , die Dummy-Speicherzelle555 und den SGD-Transistor556 ein. Die NAND-Kette530n schließt den SGS-Transistor561 , die Dummy-Speicherzelle562 , die Datenspeicherzellen563 bis574 , die Dummy-Speicherzelle575 und den SGD-Transistor576 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. In6A und6B 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-Verteilung600 dargestellt. Die dem Er-Zustand zugeordneten Speicherzellen werden nach abgeschlossener Programmierung weiterhin durch die Vth-Verteilung600 repräsentiert. Die Speicherzellen, die den A-G Zuständen zugeordnet sind, werden auf die Vth-Verteilungen601 bis607 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-Verteilung620 und eine programmierte Zustands-Vth-Verteilung621 . 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 Steuerung122 von1 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 in8 dargestellt. Eine beispielhafte Gruppe700 schließt PUs701 bis704 ein und eine beispielhafte Gruppe710 schließt PUs711 bis714 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 Blockadressraum800 , der mit7 konsistent ist. Details der Gruppe700 sind dargestellt, einschließlich der PUs701 bis704 . 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 PU701 Datenblöcke (CH)801 und802 ein. Der Datenblock801 wiederum schließt die LBAs810 und811 ein und der Block802 schließt die LBAs812 und813 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 Steuerung122 und des Hosts140 von1 dar. Wie zuvor in Verbindung mit2 erörtert, kann die FTL238 der Steuerung122 verschiedene Prozesse zum Verwalten der Blöcke von Speicherzellen implementieren. Zum Beispiel kann die FTL eine logisch-physische (L2P) Abbildungstabelle910 , die logische Adressen auf physische Adressen abbildet, eine Gültigkeitsbitmap911 , die gültige und ungültige Seiten in einem Block identifiziert, eine Abnutzungstabelle912 , die eine Anzahl von Programmier-Lösch-Zyklen (P-E-Zyklen) oder eine andere Abnutzungsmetrik jedes physischen Blocks führt, und einen Speicherbereinigungsprozess913 , 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-Engine224 und das RAID-Modul228 aus2 einschließt. Eine Medienhaltungsverwaltungskomponente930 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-Tabelle900 von9 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 von9 dar. Die Tabelle schließt eine Spalte für die logische Adresse des Hosts ein, die mit10A ü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ültigkeitsbitmap911 von9 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 Abnutzungstabelle912 von9 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 bis10D 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 (siehe12A) 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 (siehe12B) , 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 (siehe12C ) 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 (siehe12D ) 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 Befehl1200 zum Umschalten des Modus einer SSD dar, der mit dem ersten Befehl von11 ü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 Befehl1210 zum Synchronisieren einer L2P-Tabelle, der mit dem zweiten Befehl von11 übereinstimmt, dar. In einem Satz von aufeinanderfolgenden Bits identifiziert ein Satz von 32 Bits (Teilmenge1211 ) 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 in8 . 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 Befehl1220 zum Synchronisieren einer Gültigkeitsbitmap, der mit dem dritten Befehl von11 übereinstimmt, dar. In einem Satz von aufeinanderfolgenden Bits identifiziert ein Satz von 32 Bits (Teilmenge1221 ) 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 (Teilmenge1222 ) identifiziert eine Übertragungsrichtung der Gültigkeitsbitmap und ist analog zu dem Bit1212 von12B . Ein letzter Satz von 32 Bits (Teilmenge1223 ) 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 DWORD11 in der Open-Channel Solid-State Drives Specification implementiert werden. -
12D stellt einen beispielhaften Befehl1230 zum Synchronisieren einer Abnutzungstabelle, der mit dem vierten Befehl von11 übereinstimmt, dar. In einem Satz von aufeinanderfolgenden Bits identifiziert ein Satz von 32 Bits (Teilmenge1231 ) einen SGL-Eintrag der Abnutzungstabelle. Eine Steuerung kann den SGL-Eintrag verwenden, um als zusammenhängender Bytesatz auf die Abnutzungstabelle zuzugreifen. Ein anderes Bit (Teilmenge1232 ) identifiziert eine Übertragungsrichtung der Abnutzungstabelle und ist analog zu dem Bit1212 von12B . Ein letzter Satz von 32 Bits (Teilmenge1233 ) 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 bis12D 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 Bits1211 bis1214 auf, in dem eine erste vorbestimmte Teilmenge1211 des Satzes von aufeinanderfolgenden Bits für den Streusammellisteneintrag reserviert ist, eine zweite vorbestimmte Teilmenge1213 der Menge aufeinanderfolgender Bits für die maximale logische Blockadresse reserviert ist und eine dritte vorbestimmte Teilmenge1214 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 Bits1221 bis1223 auf, wobei eine erste vorbestimmte Teilmenge1221 des Satzes von aufeinanderfolgenden Bits für den Streusammellisteneintrag reserviert ist und eine zweite vorbestimmte Teilmenge1223 des Satzes von aufeinanderfolgenden Bits für eine Größe der Gültigkeitsbitmap reserviert ist. -
13A und13B stimmen mit11A überein, und13C und13D stimmen mit11 B überein. -
13A stellt einen beispielhaften Prozess an einem Host zum Übergehen einer SSD von einer herkömmlichen SSD zu einer OCSSD dar. In Schritt1300 überträgt der Host einen Schaltmodus-Befehl (wie in12A) an die SSD, um von einer herkömmlichen SSD zu einer OCSSD überzugehen. In Schritt1301 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 in12B bis12D dargestellt, können verwendet werden. In Schritt1302 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 Entscheidungsschritt1303 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte1301 und1302 wiederholt. Wenn es keinen weiteren Befehl gibt, markiert der Host alle Blöcke zum Recycling in Schritt1304 . Bei Schritt1305 wartet der Host darauf, dass die Blöcke recycelt werden. Der Host sendet in Schritt1306 eine Bestätigung an die SSD, die angibt, dass der Übergang abgeschlossen ist. In Schritt1307 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 von13A ist. In Schritt1310 empfängt die SSD einen Umschaltmodus-Befehl vom Host, um von einer herkömmlichen SSD zu einer OCSSD überzugehen. In Schritt1311 überträgt die SSD einen Befehl an den Host, um FTL-Daten mit dem Host zu synchronisieren. In Schritt1312 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 Entscheidungsschritt1313 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte1311 und1312 wiederholt. Wenn es keinen weiteren Befehl gibt, empfängt die SSD in Schritt1314 eine Bestätigung vom Host, die angibt, dass der Übergang abgeschlossen ist. In Schritt1315 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 Schritt1320 überträgt der Host einen Schaltmodus-Befehl an die SSD, um von OCSSD zu einer herkömmlichen SSD überzugehen. In Schritt1321 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 Schritt1322 überträgt der Host einen Befehl an die SSD, um FTL-Daten mit der SSD zu synchronisieren. In Schritt1323 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 Entscheidungsschritt1324 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte1322 und1323 wiederholt. Wenn es keinen weiteren Befehl gibt, empfängt der Host in Schritt1325 eine Bestätigung von der SSD, die angibt, dass der Übergang abgeschlossen ist. In Schritt1326 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 von13C ist, dar. In Schritt1330 empfängt die SSD einen Umschaltmodus-Befehl vom Host, um von einer OCSSD zu einer herkömmlichen SSD überzugehen. In Schritt1331 empfängt die SSD einen Befehl vom Host, um FTL-Daten mit der SSD zu synchronisieren. In Schritt1332 ü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 Entscheidungsschritt1333 bestimmt, ob es einen nächsten Befehl in dem Modusumschaltungsprozess gibt. Wenn es einen nächsten Befehl gibt, werden die Schritte1331 und1332 wiederholt. Wenn es keinen weiteren Befehl gibt, markiert die SSD alle Blöcke zum Recycling in Schritt1334 . Bei Schritt1335 wartet die SSD darauf, dass die Blöcke recycelt werden. In Schritt1336 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 Schritt1337 ü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 mit13A -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 Speicherstruktur126 von1 , einen ersten Satz von Blöcken1500 und einen zweiten Satz von Blöcken1510 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 und1510 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)
- 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.
- 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. - Einrichtung gemäß
Anspruch 1 oder2 , 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. - 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. - Einrichtung gemäß
Anspruch 3 oder4 , 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. - Einrichtung gemäß einem der
Ansprüche 1 bis5 , wobei der Befehl zum Synchronisieren der Gültigkeitsbitmap Folgendes identifiziert: einen Streusammellisteneintrag (1221) der Gültigkeitsbitmap; und eine Größe (1223) der Gültigkeitsbitmap. - 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. - Einrichtung gemäß
Anspruch 6 oder7 , 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. - Einrichtung gemäß einem der
Ansprüche 1 bis8 , 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. - 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. - Einrichtung gemäß einem der
Ansprüche 1 bis10 , 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. - Einrichtung gemäß einem der
Ansprüche 1 bis11 , wobei: die Befehle unter Verwendung reservierter Datenwörter in einer Schnittstellenspezifikation übertragen werden, die den Host mit der Festkörpervorrichtung verbindet. - 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.
- 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. - Verfahren gemäß
Anspruch 13 oder14 , 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.
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)
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)
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开放通道模式固件的方法及系统 |
-
2019
- 2019-06-24 US US16/449,718 patent/US10860228B1/en active Active
- 2019-12-17 WO PCT/US2019/067001 patent/WO2020263324A1/en active Application Filing
- 2019-12-17 CN CN201980079334.3A patent/CN113168291B/zh active Active
- 2019-12-17 DE DE112019005369.8T patent/DE112019005369T5/de active Pending
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 |