DE102021130730A1 - Speichercontroller und Speicherungsvorrichtung, die jeweils ein Fragmentierungsverhältnis verwenden, und Betriebsverfahren dafür - Google Patents

Speichercontroller und Speicherungsvorrichtung, die jeweils ein Fragmentierungsverhältnis verwenden, und Betriebsverfahren dafür Download PDF

Info

Publication number
DE102021130730A1
DE102021130730A1 DE102021130730.9A DE102021130730A DE102021130730A1 DE 102021130730 A1 DE102021130730 A1 DE 102021130730A1 DE 102021130730 A DE102021130730 A DE 102021130730A DE 102021130730 A1 DE102021130730 A1 DE 102021130730A1
Authority
DE
Germany
Prior art keywords
memory
page
data
fragmentation
valid page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021130730.9A
Other languages
English (en)
Inventor
Dongeun Shin
Jonghwa Kim
Alain Tran
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102021130730A1 publication Critical patent/DE102021130730A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Memory System (AREA)

Abstract

Ein Betriebsverfahren eines Speichercontrollers, der konfiguriert ist, um eine Speichervorrichtung zu steuern, die Speicherblöcke beinhaltet, die jeweils eine Mehrzahl von Seiten speichern, wird bereitgestellt. Das Betriebsverfahren beinhaltet ein Übertragen eines Programmierbefehls an die Speichervorrichtung, basierend auf einer Schreibanforderung von einem Host, ein Aktualisieren einer gültigen Seitenbitmap, die die Gültigkeit einer Mehrzahl von Seiten darstellt, basierend auf einer von der Speichervorrichtung empfangenen gültigen Seiteninformation, ein Berechnen eines Fragmentierungsverhältnisses, das einen Segmentierungsgrad zwischen mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblockes darstellt, basierend auf der gültigen Seitenbitmap, ein Bestimmen von Quellenblöcken unter den Speicherblöcken in aufsteigender Reihenfolge der Fragmentierungsverhältnisse und ein Durchführen einer Speicherbereinigung an den Quellenblöcken.

Description

  • Querverweis auf die verwandte Anmeldung
  • Diese Anmeldung basiert auf und beansprucht eine Priorität gemäß 35 U.S.C. §119 der koreanischen Patentanmeldung Nr. 10-2020-0185208 , die am 28. Dezember 2020 beim koreanischen Amt für geistiges Eigentum eingereicht wurde, deren Offenbarung durch Verweis in vollem Umfang hierin aufgenommen ist.
  • Technisches Gebiet
  • Diese Erfindung betrifft allgemein ein Betriebsverfahren einer Speicherungsvorrichtung und insbesondere Techniken zum effizienten Entfernen/Überschreiben von unnötigen Daten („Speicherbereinigung“) während des Betriebs von Speicherungsvorrichtungen.
  • Diskussion des Standes der Technik
  • Speicherungsvorrichtungen wie Solid State Drive (SSD), Non-Volatile Memory Express (NVMe), Embedded Multimedia Card (eMMC) und Universal Flash Storage (UFS), die eine nichtflüchtige Speichervorrichtung verwenden, sind in den heutigen elektronischen Vorrichtungen weit verbreitet.
  • Da Daten kontinuierlich über ein Programm in den Flash-Speicher geschrieben werden, können gültige Daten (das heißt Daten, die für das Programm noch relevant sind und noch nicht überschrieben werden sollen) in Einheiten wie Seiten über den gesamten Flash-Speicher verteilt sein bzw. werden. Die Speicherblöcke können jeweils eine Mehrzahl von Seiten speichern. Indes muss eine alte Seite von Daten, die mit einer neuen Seite überschrieben wird, nicht unbedingt sofort gelöscht und durch die neue Seite am selben Speicherplatz ersetzt werden. Stattdessen kann die neue Seite in einem anderen Speicherblock gespeichert werden.
  • Ein freier Speicherblock ist ein Bereich, der völlig frei ist (das heißt in dem derzeit keine Daten gespeichert sind), um das Schreiben einer oder mehrerer Dateneinheiten, wie z. B. Seiten, zu ermöglichen. Wenn sich ein erster Speicherblock in einem unfreien Zustand befindet, in dem bereits gültige und ungültige Seiten gespeichert sind, kann er in einen freien Speicherblock umgewandelt werden, indem die gültigen Seiten in einen zweiten Speicherblock „bewegt“ werden. Dazu werden die gültigen Seiten in den zweiten Speicherblock kopiert und anschließend die ungültigen und gültigen Seiten im ersten Speicherblock gelöscht. Dieser Prozess wird als Speicherbereinigung bezeichnet.
  • Ein gegenwärtiges Verfahren zur Speicherbereinigung verwendet eine Anzahl gültiger Seiten für Speicherblöcke, die ausgewählt werden können, um freie Speicherblöcke zu werden. Wenn die Anzahl der gültigen Seiten (die Anzahl der im Speicherblock gespeicherten gültigen Seiten) eines Speicherblockkandidaten über einem Schwellenwert liegt, kann er zur Umwandlung in einen freien Speicherblock ausgewählt werden. Während dieses Verfahren die Effizienz der Speicherbereinigung verbessern kann, wird für die Verarbeitung von E/A-Daten bei hohen Geschwindigkeiten ein Speicherbereinigungsverfahren mit einer relativ höheren Effizienz der Dateneingabe/-ausgabe (E/A) benötigt.
  • Kurzfassung
  • Ausführungsformen des erfindungsgemäßen Konzepts stellen ein Betriebsverfahren eines Speichercontrollers bereit, das die Speicherbereinigung effizient durch Bestimmen von „Fragmentierungsverhältnissen“ durchführt, die jeweils einen Segmentierungsgrad eines Kandidaten-Speicherblocks basierend auf der Gruppierung gültiger Seiten in dem Kandidaten-Speicherblock darstellen; und Auswählen eines Quellenblocks unter den Kandidatenblöcken basierend auf den Fragmentierungsverhältnissen. Ausführungsformen beinhalten eine Speicherungsvorrichtung und ein Betriebsverfahren davon, die basierend auf solchen Fragmentierungsverhältnissen effizient eine Speicherbereinigung durchführen.
  • Gemäß einem Aspekt des erfindungsgemäßen Konzepts wird ein Betriebsverfahren eines Speichercontrollers bereitgestellt, der konfiguriert ist, um eine Speichervorrichtung zu steuern, die Speicherblöcke enthält, die jeweils eine Mehrzahl von Seiten speichern, wobei das Betriebsverfahren das Übertragen eines Programmierbefehls an die Speichervorrichtung basierend auf einer Schreibanforderung von einem Host, das Aktualisieren einer gültigen Seitenbitmap, die die Gültigkeit einer Mehrzahl von Seiten der Speicherblöcke darstellt, basierend auf einer von der Speichervorrichtung empfangenen gültigen Seiteninformation, das Berechnen eines Fragmentierungsverhältnisses, das einen Segmentierungsgrad zwischen mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblocks unter den Speicherblöcken darstellt, basierend auf der gültigen Seitenbitmap, das Bestimmen von Quellenblöcken unter den Speicherblöcken in aufsteigender Reihenfolge der Fragmentierungsverhältnisse, und das Durchführen einer Speicherbereinigung an den Quellenblöcken beinhaltet.
  • Gemäß einem weiteren Aspekt des erfindungsgemäßen Konzepts ist ein Betriebsverfahren einer Speicherungsvorrichtung bereitgestellt, das eine Speichervorrichtung, die Speicherblöcke jeweils zum Speichern einer Mehrzahl von Seiten beinhaltet, und einen Speichercontroller beinhaltet, der zum Steuern der Speichervorrichtung konfiguriert ist, wobei das Betriebsverfahren das Ausführen von Vorgängen durch den Speichercontroller beinhaltet, einschließlich: Empfangen von Daten und einer Schreibanforderung von einem Host, Übertragen eines Programmierbefehls an die Speichervorrichtung. Die Speichervorrichtung kann die Daten in eine Seiteneinheit schreiben und gültige Seiteninformationen erzeugen, die darstellen, ob eine Seite, die der Seiteneinheit mit den darin geschriebenen Daten entspricht, gültig ist. Der Speichercontroller kann ferner folgende Vorgänge durchführen: Aktualisieren einer gültigen Seitenbitmap, die die Gültigkeit der Mehrzahl von Seiten darstellt, basierend auf einer von der Speichervorrichtung empfangenen gültigen Seiteninformation, Berechnen eines Fragmentierungsverhältnisses, das einen Segmentierungsgrad einer gültigen Seite und einer ungültigen Seite darstellt, basierend auf der gültigen Seitenbitmap, und Durchführen einer Speicherbereinigung, basierend auf dem Fragmentierungsverhältnis.
  • Gemäß einem weiteren Aspekt des erfindungsgemäßen Konzepts wird eine Speicherungsvorrichtung bereitgestellt, die eine Speichervorrichtung mit einer Mehrzahl von Speicherblöcken jeweils zum Speichern mehrerer Seiten beinhaltet, wobei die Speichervorrichtung so konfiguriert ist, dass sie gültige Seiteninformationen über die Mehrzahl von Speicherblöcken bereitstellt, und einen Speichercontroller, die so konfiguriert ist, dass sie ein Fragmentierungsverhältnis berechnet, das einen Segmentierungsgrad zwischen mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblocks basierend auf den gültigen Seiteninformationen darstellt, und dass sie Daten innerhalb der Mehrzahl von Speicherblöcken basierend auf dem Fragmentierungsverhältnis in einem Speicherbereinigungsprozess neu anordnet und löscht.
  • Ein weiterer Aspekt des erfindungsgemäßen Konzepts stellt ein Betriebsverfahren eines Speichercontrollers bereit, der konfiguriert ist, um eine Speichervorrichtung zu steuern, die Speicherblöcke enthält, die jeweils eine Mehrzahl von Seiten beinhalten. Das Betriebsverfahren umfasst: Übertragen eines Programmierbefehls an die Speichervorrichtung basierend auf einer Schreibanforderung von einem Host; Aktualisieren einer gültigen Seitenbitmap, die die Gültigkeit einer Mehrzahl von Seiten darstellt, basierend auf von der Speichervorrichtung empfangenen gültigen Seiteninformationen; und Berechnen von Fragmentierungsverhältnissen (FRs) basierend auf der gültigen Seitenbitmap. Jeder FR stellt einen Segmentierungsgrad eines jeweiligen Speicherblocks unter den Speicherblöcken dar. Jeder Segmentierungsgrad entspricht einer Anzahl von gültigen Seitengruppen des jeweiligen Speicherblocks. Jede gültige Seitengruppe ist eine Gruppe benachbarter gültiger Seiten innerhalb des Speicherblocks, bei der die erste Seite der gültigen Seitengruppe und die letzte Seite der gültigen Seitengruppe nicht an eine vorherige gültige Seite bzw. an eine nachfolgende gültige Seite des jeweiligen Speicherblocks angrenzt. Ein Quellenblock wird unter den Speicherblöcken als ein Block bestimmt, der ein niedrigeres Fragmentierungsverhältnis aufweist als die anderen Speicherblöcke. Die Speicherbereinigung wird an dem Quellenblock durchgeführt.
  • Figurenliste
  • Ausführungsformen des erfindungsgemäßen Konzepts werden aus der folgenden detaillierten Beschreibung in Verbindung mit der beigefügten Zeichnung klarer verstanden, in denen:
    • 1 ein Blockdiagramm ist, das eine Speicherungsvorrichtung gemäß einer Ausführungsform veranschaulicht;
    • 2 ein Blockdiagramm ist, das einen Speichercontroller gemäß einer Ausführungsform veranschaulicht;
    • 3 ein Blockdiagramm ist, das eine Speicherungsvorrichtung gemäß einer Ausführungsform veranschaulicht;
    • 4 ein Blockdiagramm ist, das eine Speichervorrichtung gemäß einer Ausführungsform veranschaulicht;
    • 5 ein Blockdiagramm ist, das eine Speicherungsvorrichtung gemäß einer Ausführungsform veranschaulicht;
    • 6 ein Flussdiagramm ist, das ein Betriebsverfahren eines Speichercontrollers gemäß einer Ausführungsform beschreibt;
    • 7 ein konzeptionelles Diagramm ist, das eine Struktur von in einer Speichervorrichtung gespeicherten Daten gemäß einer Ausführungsform veranschaulicht;
    • 8 ein konzeptionelles Diagramm ist, das die in einer Speichervorrichtung gemäß einer Ausführungsform durchgeführte Speicherbereinigung beschreibt;
    • 9 ein Konzeptdiagramm ist, das ein Fragmentierungsverhältnis beschreibt, das in einem Speichercontroller gemäß einer Ausführungsform berechnet wird;
    • 10 ein Flussdiagramm ist, das ein Betriebsverfahren eines Speichercontrollers gemäß einer Ausführungsform beschreibt;
    • 11 ein konzeptionelles Diagramm ist, das eine gültige Seitenbitmap gemäß einer Ausführungsform beschreibt;
    • 12 ein konzeptionelles Diagramm ist, das ein in einem Speichercontroller gemäß einer Ausführungsform berechnetes Fragmentierungsverhältnis beschreibt;
    • 13 ist ein Flussdiagramm, das ein Betriebsverfahren eines Speichercontrollers gemäß einer Ausführungsform beschreibt;
    • 14 konzeptionelles Diagramm ein, das einen in einem Speichercontroller gemäß einer Ausführungsform berechneten Fragmentierungsgrad beschreibt;
    • 15 ein konzeptionelles Diagramm ist, das die Speicherbereinigung beschreibt, die gemäß einer Ausführungsform unter Verwendung eines Fragmentierungsverhältnisses und eines Fragmentierungsgrades durchgeführt wird;
    • 16 ein Flussdiagramm ist, das ein Betriebsverfahren einer Speicherungsvorrichtung gemäß einer Ausführungsform beschreibt;
    • 17 ein Blockdiagramm ist, das ein Speichersystem gemäß einer Ausführungsform veranschaulicht;
    • 18 ein Blockdiagramm ist, das ein Speichersystem veranschaulicht, an dem eine Speicherungsvorrichtung gemäß einer Ausführungsform angelegt ist;
    • 19 ein Blockdiagramm ist, das ein Speichersystem gemäß einer Ausführungsform veranschaulicht;
    • 20 ein Blockdiagramm ist, das ein universelles Flash-Speichersystem (UFS) gemäß einer Ausführungsform beschreibt;
    • 21 eine Querschnittsansicht einer Struktur einer Speichervorrichtung ist, die gemäß einer Ausführungsform auf eine Speicherungsvorrichtung anwendbar ist; und
    • 22 ein Blockdiagramm ist, das einen Datensektor veranschaulicht, auf den eine Speicherungsvorrichtung gemäß einer Ausführungsform angewendet wird.
  • Detaillierte Beschreibung der Ausführungsformen
  • Nachfolgend werden die Ausführungsformen unter Verweis auf die beigefügte Zeichnung im Detail beschrieben.
  • 1 ist ein Blockdiagramm, das eine Speicherungsvorrichtung 10 gemäß einer Ausführungsform veranschaulicht. Die Speicherungsvorrichtung 10 kann Daten in einem Speicherbereich speichern. Hierin kann der Begriff „Speicherbereich“ verwendet werden, um einen internen logischen oder physischen Speicherbereich der Speicherungsvorrichtung 10, wie einen Sektor, eine Seite oder einen Block, zu bezeichnen. So sind Ausdrücke wie „Speichern von Daten auf einer Seite“ so zu verstehen, dass Daten in einer Seiteneinheit in einem physischen Speicherbereich gespeichert werden.
  • Gemäß einer Ausführungsform kann die Speicherungsvorrichtung 10 ein Fragmentierungsverhältnis auf der Grundlage der Gültigkeit der Seiten, auf denen Daten gespeichert sind, berechnen und eine Neuausrichtung der Daten auf der Grundlage des Fragmentierungsverhältnisses durchführen. Hierin wird eine Formulierung wie „auf der Grundlage der Gültigkeit einer Dateneinheit“ so verstanden, dass sie „auf der Grundlage dessen, ob die Dateneinheit gültig oder ungültig ist“ bedeutet.
  • Wenn eine Seite für ein Programm relevant ist, handelt es sich dabei um eine gültige Seite. Wenn ein Programm zum Beispiel Daten überschreiben will, indem es neue Daten anstelle der alten Daten speichert (die alten Daten überschreibt), ist die Seite, die die neuen Daten enthält, eine gültige Seite. Die Seite, die in diesem Prozess überschrieben werden soll, ist eine ungültige Seite. Wie bereits erwähnt, kann ein Verfahren zum Verschieben gültiger Seiten und Löschen ungültiger Seiten als Speicherbereinigung bezeichnet werden. Ein Prozess der Speicherbereinigung kann die Freigabe eines gesamten ersten Speicherblocks beinhalten, der sowohl gültige als auch ungültige Seiten enthält. Dies kann durch Kopieren der gültigen Seiten des ersten Speicherblocks in einen zweiten Speicherblock und anschließendes Löschen aller Seiten innerhalb des ersten Speicherblocks geschehen. Neue gültige Seiten können dann in dem freigewordenen (ersten) Speicherblock gespeichert werden.
  • In einer Ausführungsform kann die Speicherungsvorrichtung 10 ein Speichersystem oder einen in ein Speichersystem eingebetteten Speicher beinhalten. In einer Ausführungsform kann die Speicherungsvorrichtung 10 eine eingebettete Multimedia-Karte (eMMC) oder einen eingebetteten Universal-Flash-Speicher (UFS) beinhalten. In einer Ausführungsform kann die Speicherungsvorrichtung 10 einen externen Speicher beinhalten, der an das Speichersystem angeschlossen bzw. von diesem abgenommen werden kann. Die Speicherungsvorrichtung 10 kann zum Beispiel eine UFS-Speicherkarte, Compact Flash (CF), Secure Digital (SD), Micro Secure Digital (Micro-SD), Mini Secure Digital (Mini-SD), Extreme Digital (xD) oder einen Memory Stick beinhalten, ist aber nicht darauf beschränkt.
  • Die Speicherungsvorrichtung 10 kann einen Speichercontroller 100 und eine Speichervorrichtung 200 beinhalten. Der Speichercontroller 100 kann einen Rechner für das Fragmentierungsverhältnis (FR) (oder einen FR-Rechner) 330 beinhalten, und die Speichervorrichtung 200 kann eine Mehrzahl von Speicherblöcken BLK 210 beinhalten.
  • Der Speichercontroller 100 kann die Speicherungsvorrichtung 10 insgesamt steuern. In Reaktion auf eine Lese- oder Schreibanforderung von einem Host kann der Speichercontroller 100 in der Speichervorrichtung 200 gespeicherte Daten lesen oder die Speichervorrichtung 200 steuern, um Daten in der Speichervorrichtung 200 zu programmieren. In einer Ausführungsform kann der Speichercontroller 100 der Speichervorrichtung 200 eine Adresse, einen Befehl und ein Steuersignal bereitstellen und so einen Programmiervorgang, einen Lesebefehl und einen Löschvorgang in der Speichervorrichtung 200 steuern. Außerdem können Daten, die auf einer Anforderung des Hosts basieren und in der Speichervorrichtung 200 programmiert werden sollen, und gelesene Daten zwischen dem Speichercontroller 100 und der Speichervorrichtung 200 übertragen und empfangen werden.
  • Der FR-Rechner 330 kann einen FR auf der Grundlage der Gültigkeit einer Seite, auf der Daten gespeichert sind, berechnen. Gemäß einer Ausführungsform kann ein Fragmentierungsverhältnis FR einen Segmentierungsgrad von Daten bezeichnen. Genauer gesagt, kann das Fragmentierungsverhältnis FR einen Segmentierungsgrad von mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblocks darstellen. Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR der Anzahl der Speicherdirektzugriff (DMA)-Operationen entsprechen, die in einer Reihe von Prozessen betrieben werden, bei denen Daten an einen Seitenpuffer (nicht dargestellt) der Speichervorrichtung 200 übertragen werden.
  • In einer Ausführungsform: Jeder FR kann einen Segmentierungsgrad eines entsprechenden Speicherblocks unter den Speicherblöcken BLK darstellen. Jeder Segmentierungsgrad kann einer Anzahl von gültigen Seitengruppen des jeweiligen Speicherblocks entsprechen. Jede gültige Seitengruppe kann eine Gruppe benachbarter gültiger Seiten innerhalb des Speicherblocks sein, wobei die erste Seite der gültigen Seitengruppe und die letzte Seite der gültigen Seitengruppe nicht an eine vorherige gültige Seite bzw. an eine nachfolgende gültige Seite des jeweiligen Speicherblocks angrenzt. Mit Verweis auf 9 werden einige Beispiele für FRs gezeigt. Für einen Speicherblock, in dem eine bestimmte Anzahl von Seiten gespeichert ist, ist der FR und damit die Segmentierung des Speicherblocks relativ höher, wenn es relativ viele Gruppen gültiger Seiten gibt. Dies wird später im Detail erklärt. Zu beachten ist, dass eine gültige Seitengruppe auch nur eine einzige gültige Seite aufweisen kann.
  • Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR auf der Grundlage einer gültigen Seitenbitmap berechnet werden. In einer Ausführungsform kann die gültige Seitenbitmap die Gültigkeit jeder einzelnen einer Mehrzahl von Seiten darstellen. Gemäß einer Ausführungsform kann die Gültigkeit als „0“ oder „1“ ausgedrückt werden. Zum Beispiel kann eine gültige Seite als ein Bit „1“ in einer gültigen Seitenbitmap ausgedrückt werden, und eine ungültige Seite kann als ein Bit „0“ in der gültigen Seitenbitmap ausgedrückt werden, oder umgekehrt.
  • Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR eines Speicherblocks gleich der Anzahl der gültigen Seitengruppen des Speicherblocks sein. (Dies wird im Folgenden anhand des Beispiels von 9 veranschaulicht.)
  • Gemäß einer Ausführungsform kann der FR-Rechner 330 einen „Fragmentierungsgrad“ (FD) berechnen. Der Fragmentierungsgrad wird weiter unten in Verbindung mit dem Beispiel von 14 erläutert. Gemäß einer Ausführungsform kann der Fragmentierungsgrad der Anzahl der gültigen Seitengruppen und ungültigen Seitengruppen entsprechen, die aneinandergrenzend sind und die „gleiche Gültigkeitsbedingung“ aufweisen. Zwei oder mehr Seitengruppen, die die gleiche Gültigkeitsbedingung aufweisen, sind entweder alle gültig oder alle ungültig. Beispielsweise kann der FR-Rechner 330 sequentielle Bits eines Speicherblocks in einer gültigen Seitenbitmap erkennen, die sequentiellen Bits gruppieren und die Anzahl der Gruppen berechnen, die dieselbe Gültigkeitsbedingung aufweisen, wodurch ein Fragmentierungsgrad berechnet wird.
  • Die Speicherungsvorrichtung 10 kann die Neuausrichtung von Daten auf der Grundlage eines FR und eines FD durchführen. In einer Ausführungsform kann die Speicherungsvorrichtung 10, wenn der FR von Kandidatenspeicherblöcken (für die Auswahl eines Quellenspeicherblocks) innerhalb eines Satzes von Speicherblöcken gleich ist, eine Datenneuausrichtung auf der Grundlage des Fragmentierungsgrads FD durchführen.
  • Ein Prozess des Berechnens eines FR unter Verwendung des FR-Rechners 330 wird im Folgenden unter Bezugnahme auf die 5 und 9 detailliert beschrieben.
  • Die Speichervorrichtung 200 kann eine nichtflüchtige Speichervorrichtung beinhalten. In einer Ausführungsform kann die Speichervorrichtung 200 eine Vorrichtung beinhalten, an der verschiedene Arten von Speichern, wie NAND-Flash-Speicher, magnetischer RAM (MRAM), Spin-Transfer-Torque-MRAM, Conductive-Bridging-RAM (CBRAM), ferroelektrischer RAM (FeRAM), Phasen-RAM (PRAM), resistiver RAM (RRAM), Nano-Röhren-RAM, Polymer-RAM (PoRAM), Nano-Floating-Gate-Speicher (NFGM), holografischer Speicher, molekularelektronischer Speicher) und Isolator-Widerstandsänderungsspeicher angelegt sind.
  • In einer Ausführungsform kann die Speichervorrichtung 200 einen Flash-Speicher beinhalten, und der Flash-Speicher kann ein zweidimensionales (2D) NAND-Speicher-Array oder ein dreidimensionales (3D) (oder vertikales) NAND (VNAND)-Speicher-Array beinhalten. Das 3D-Speicher-Array kann eine Schaltung sein, die Arrays von Speicherzellen einschließlich eines aktiven Bereichs beinhaltet, der auf einem Siliziumsubstrat angeordnet ist und mit einem Betrieb jeder der Speicherzellen assoziiert ist, und kann in einem monolithischen Typ auf mindestens einer physikalischen Ebene einer Schaltung konfiguriert sein, die auf oder in dem Substrat bereitgestellt ist. Der Begriff „monolithischer Typ“ kann bedeuten, dass Schichten von Ebenen, die das Array konfigurieren, einfach auf Schichten von unteren Ebenen des Arrays gestapelt sind. In einer Ausführungsform kann das 3D-Speicher-Array eine Mehrzahl von vertikalen NAND-Strings beinhalten, die in vertikaler Richtung angeordnet sind, damit mindestens eine Speicherzelle auf einer anderen Speicherzelle angeordnet werden kann. Die mindestens eine Speicherzelle kann eine Schicht zum Auffangen von Ladungen beinhalten. Die US-Patentveröffentlichungen Nr. 7,679,133, 8,553,466, 8,654,587 und 8,559,235 sowie die US-Patentanmeldung Nr. 2011/0233648 offenbaren geeignete Elemente eines 3D-Speicherzellen-Arrays, die eine Mehrzahl von Ebenen beinhalten und bei denen Wortleitungen und/oder Bitleitungen zwischen der Mehrzahl von Ebenen gemeinsam genutzt werden.
  • Die Speichervorrichtung 200 kann eine Mehrzahl von Speicherblöcken BLK 210 beinhalten. Jede der Mehrzahl von Speicherblöcken kann mindestens eine Seite beinhalten, und jede der mindestens einen Seite kann eine Mehrzahl von Speicherzellen beinhalten, die mit einer Mehrzahl von Wortleitungen verbunden sind. In einer Ausführungsform kann die Speichervorrichtung 200 eine Mehrzahl von Ebenen beinhalten, die eine Mehrzahl von Speicherblöcken BLK 210 beinhalten, und insbesondere kann sie eine Mehrzahl von Speicherchips beinhalten, die jeweils eine Mehrzahl von Ebenen beinhalten. Gemäß einer Ausführungsform kann die Speichervorrichtung 200 einen Schreibvorgang oder einen Lesevorgang durch Seiteneinheiten betreiben, und ein Löschvorgang kann durch Blockeinheiten durchgeführt werden.
  • Gemäß einer Ausführungsform kann die Speichervorrichtung 200 Daten auf der Grundlage einer Anforderung des Speichercontrollers 100 speichern und dem Speichercontroller 100 gültige Seiteninformationen bereitstellen, die die Gültigkeit einer Seite darstellen, auf der Daten gespeichert sind. Gemäß einer Ausführungsform kann die Speichervorrichtung 200 die Gültigkeit einer Seite, auf der Daten gespeichert sind, prüfen, gültige Seiteninformationen erzeugen und die gültigen Seiteninformationen dem Speichercontroller 100 in jedem bestimmten Zeitraum, jedes Mal, wenn das Schreiben von Daten endet, oder auf der Grundlage einer Anforderung des Speichercontrollers 100 bereitstellen.
  • Die Speichervorrichtung 200 kann eine Single-Level-Zelle (SLC) beinhalten, die 1-Bit-Daten speichert, und eine Multi-Level-Zelle (MLC), die Multi-Bit-Daten (z. B. 2 oder mehr Bits) speichert. Die Speichervorrichtung 200 kann z. B. eine Dreistufenstelle (TLC) zum Speichern von 3-Bit-Daten oder eine Quadraturstufenstelle (QLC) zum Speichern von 4-Bit-Daten beinhalten oder eine Speicherzelle zum Speichern von 5 oder mehr Bit-Daten).
  • In einer Ausführungsform kann der Host einen Befehl an die Speicherungsvorrichtung 10 bereitstellen und Daten übertragen oder empfangen. In einer Ausführungsform kann der Host einen Schreibbefehl bereitstellen und Daten in die Speicherungsvorrichtung 10 schreiben. In einer Ausführungsform kann der Host einen Lesebefehl an die Speicherungsvorrichtung 10 übermitteln und kann mit gelesenen Daten von der Speicherungsvorrichtung 10 bereitgestellt werden. Die vom Host bereitgestellten Daten können verschiedene Eigenschaften aufweisen.
  • Der Host kann einen oder mehrere Prozessorkerne beinhalten oder als Ein-Chip-System (SoC) implementiert sein. Der Host kann zum Beispiel einen allgemein verwendeten Prozess und einen speziellen Prozessor beinhalten. Der Host kann ein Prozessor sein oder einer elektronischen Vorrichtung oder einem System entsprechen, das einen Prozessor beinhaltet. In einer Ausführungsform kann der Host einer zentralen Verarbeitungseinheit (CPU), einem Prozessor, einem Mikroprozessor oder einem Anwendungsprozessor (AP) entsprechen.
  • Der Host und die Speichervorrichtung 200 können auf der Grundlage eines vorbestimmten Protokolls Daten übertragen und empfangen (das heißt eine Schnittstelle bilden). Eine Schnittstelle für die Kommunikation zwischen der Speichervorrichtung 200 und dem Host kann verschiedene Schnittstellenschemata verwenden, wie Advanced Technology Attachment (ATA), Serial ATA (SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Parallel Advanced Technology Attachment (PATA), Peripheral Component Interconnection (PCI), PCI-Express (PCI-E), IEEE 1394, Universal Serial Bus (USB), Secure Digital (SD) Card, Multimedia Card (MMC), Embedded Multimedia Card (eMMC), Compact Flash (CF) Card Schnittstelle, Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE) und Mobile Industry Processor Interface (MIPI), aber das erfindungsgemäße Konzept ist nicht darauf beschränkt.
  • Der Speichercontroller 100 und die Speichervorrichtung 200 können einen Befehl, eine Adresse und Daten über einen oder mehrere Kanäle übertragen/empfangen. Dass ein vom Host übertragener Befehl in einem bestimmten Bereich einer Speichervorrichtung über einen bestimmten Kanal durchgeführt werden soll, kann durch eine vom Host übertragene logische Adresse oder eine logische Blockadresse (LBA) definiert werden.
  • 2 ist ein Blockdiagramm, das einen Speichercontroller 100 gemäß einer Ausführungsform veranschaulicht.
  • Auf 2 wird in Verbindung mit 1 verwiesen. Der Speichercontroller 100 kann eine von einem Host bereitgestellte Anforderung empfangen und in Reaktion auf die Anforderung auf eine Speichervorrichtung (200 von 1) zugreifen. Im Einzelnen kann der Speichercontroller 100 in Reaktion auf die Anforderung, die vom Host beaufschlagt wird, einen Lesevorgang, einen Programmiervorgang oder einen Löschvorgang der Speichervorrichtung 200 steuern. Die Anforderung kann eine Leseanforderung, eine Schreibanforderung und eine Löschanforderung beinhalten. Basierend auf der Schreibanforderung des Hosts kann der Speichercontroller 100 eine Steuerung durchführen, um Daten direkt in der Speichervorrichtung 200 zu programmieren, oder er kann eine Steuerung durchführen, um eine Programmierung durchzuführen, nachdem die programmierten Daten gelöscht wurden.
  • Der Speichercontroller 100 kann eine Host-Schnittstelle (Host I/F) 110, einen Prozessor 120, einen Direktzugriffsspeicher (RAM) 130, einen Festwertspeicher (ROM) 140, eine Energieverwaltungsschaltung 150 und eine NAND-Schnittstelle (NAND I/F) 160 beinhalten. Die Host-Schnittstelle 110, der Prozessor 120, der RAM 130, der ROM 140, die Stromversorgungsschaltung 150 und die NAND-Schnittstelle 160 können über einen Bus 170 elektrisch miteinander verbunden sein. Der Bus 170 kann einen Übertragungspfad für die Übertragung von Informationen zwischen den Elementen des Speichercontrollers 100 bezeichnen. Der Speichercontroller 100 kann zusätzlich zu den aufgeführten Elementen noch weitere Elemente für einen Speicherbetrieb beinhalten.
  • Die Host-Schnittstelle 110 kann ein Datenaustauschprotokoll zwischen dem Host und dem Speichercontroller 100 beinhalten. Daher können verschiedene Vorrichtungen als Host auf die Host-Schnittstelle 110 zugreifen. In einer Ausführungsform kann die Host-Schnittstelle 110 eine Schnittstelle mit dem Speichercontroller 100 auf der Grundlage eines Busformats des Hosts bereitstellen. Die Host-Schnittstelle 110 kann USB, SCSI, PCIe, ATA, PATA, SATA und SAS als Bus (ein Busformat) des Hosts beinhalten. In einer Ausführungsform kann die Host-Schnittstelle 110 ein nichtflüchtiges Speicher-Express-Protokoll (NVMe) beinhalten, das in einer Host-Vorrichtung installiert ist, die Daten auf der Grundlage von PICe austauscht.
  • Der Prozessor 120 kann den gesamten Betrieb einer Speicherungsvorrichtung (10 von 1) steuern. Beispielsweise kann der Prozessor 120 die Speicherungsvorrichtung 10 so steuern, dass sie die vom Host empfangene Anforderung dekodiert und basierend auf einem dekodierten Ergebnis einen Betrieb durchführt.
  • In Reaktion auf die Leseanforderung kann der Prozessor 120 beim Durchführen des Lesevorgangs einen Lesebefehl und eine Adresse an eine Speichervorrichtung (200 von 1) liefern, und in Reaktion auf die Schreibanforderung kann der Prozessor 120 beim Durchführen eines Schreibvorgangs der Speichervorrichtung 200 einen Schreibbefehl, eine Adresse und Schreibdaten liefern.
  • Der Prozessor 120 kann einen Vorgang zur Übersetzung einer vom Host empfangenen logischen Adresse in eine physische Seitenadresse durchführen, indem er im Speichercontroller 100 gespeicherte Metadaten verwendet. Hier können die Metadaten als Verwaltungsinformationen verstanden werden, die von der Speicherungsvorrichtung (10 von 1) erzeugt werden, um die Speichervorrichtung (200 von 1) zu verwalten. Die Metadaten können Mapping-Tabelleninformationen beinhalten, die verwendet werden, um eine logische Adresse in eine physikalische Seitenadresse jedes der Flash-Speicher 310 bis 330 zu übersetzen, und können darüber hinaus Stücke von Informationen zur Verwaltung eines Speicherbereichs der Speichervorrichtung (200 von 1) beinhalten.
  • Im Einzelnen kann der Prozessor 120 einen Vorgang zur Übersetzung einer logischen Adresse, die vom Host zusammen mit einer Lese-/Schreibanforderung empfangen wurde, in eine physikalische Adresse für einen Lese-/Schreibbetrieb der Speichervorrichtung 200 betreiben. Der Vorgang der Umwandlung der logischen Adresse in die physikalische Adresse kann in einer Flash-Übersetzungsschicht (FTL) 300 durchgeführt werden. Der Prozessor 120 kann Firmware ausführen, die in den ROM 140 geladen wurde, und somit können Adresszuordnung, Verschleißausgleich oder Speicherbereinigung zur Verwaltung der Speichervorrichtung 200 in der FTL 300 durchgeführt werden.
  • Im RAM 130 können vom Host übertragene Daten, vom Prozessor 120 erzeugte Daten und/oder aus der Speichervorrichtung (200 von 1) gelesene Daten vorübergehend gespeichert werden. Firmware oder Software für den Betrieb der Speicherungsvorrichtung kann aus dem ROM 140 in den RAM 130 geladen werden. Auch die aus der Speichervorrichtung (200 von 1) ausgelesenen Metadaten können im RAM 130 gespeichert werden. Der RAM 130 kann als dynamischer RAM (DRAM), statischer RAM (SRAM) oder ähnliches ausgeführt sein.
  • Der RAM 130 kann die Flash-Übersetzungsschicht 300 beinhalten. Die Flash-Übersetzungsschicht 300 kann ein Element sein, das jede Adresse zwischen einem Dateisystem und einer Speichervorrichtung abbildet. In einer Ausführungsform kann die Flash-Übersetzungsschicht 300 eine logische Blockadresse (LBA) des Hosts in eine physikalische Blockadresse (PBA) der Speichervorrichtung 200 übersetzen. Die Flash-Übersetzungsschicht 300 wird weiter unten unter Bezugnahme auf 5 im Detail beschrieben.
  • Bei dem ROM 140 kann es sich um einen fest zugeordneten Speicher handeln, in dem ein vom Prozessor 120 ausgeführtes Programm gespeichert ist. Das ROM 140 kann ein Programm zur Realisierung eines Betriebsverfahrens des Speichercontrollers 100 oder eine Firmware mit dem darin aufgezeichneten Programm speichern.
  • Die Schaltung 150 zur Energieverwaltung kann jedem Element der Speicherungsvorrichtung 10 Energie oder einen dafür benötigten Takt zuführen. Die NAND-Schnittstelle 160 kann so konfiguriert sein, dass sie Signale zur Ansteuerung der Speichervorrichtung (200 von 1) steuert und auf die Speichervorrichtung (200 von 1) auf der Grundlage der Steuerung durch den Prozessor 120 zugreift. Die NAND-Schnittstelle 160 kann so konfiguriert sein, dass sie selektiv Software- und Hardware-Verschachtelungsbetriebe über mindestens einen Kanal durchführt.
  • Obwohl nicht dargestellt, können verschiedene weitere Elemente für einen effizienten Betrieb der Speicherungsvorrichtung 10 bereitgestellt werden. Zum Beispiel kann die Speicherungsvorrichtung 10 darüber hinaus maschinelles Lernen als geistige Eigenschaft (IP) beinhalten (nicht dargestellt). Das geistige Eigentum des maschinellen Lernens kann einen oder mehr Prozessoren zur Beschleunigung von Rechenoperationen beinhalten, die von Modellen eines neuronalen Netzes betrieben werden, und kann darüber hinaus einen separaten Speicher zum Speichern eines Programms beinhalten, das den Modellen des neuronalen Netzes entspricht. Zum Beispiel kann der Prozessor, der im IP für maschinelles Lernen enthalten ist, einer Verarbeitungseinheit für neuronale Netze (NPU) entsprechen und eine feste Funktionsmaschine zur Ausführung einer Faltungsschicht und eine programmierbare Schicht zur Ausführung einer Nicht-Faltungsschicht beinhalten. Als weiteres Beispiel kann der Prozessor, der in der IP für maschinelles Lernen enthalten ist, als mindestens eine grafische Verarbeitungseinheit (GPU) für parallele Hochgeschwindigkeitsverarbeitung und eine Tensor-Verarbeitungseinheit (TPU) basierend auf einer anwendungsspezifischen integrierten Schaltung (ASIC) für parallele Verarbeitung, die einen Vektor- oder einen Matrixbetrieb durchführt, implementiert sein. Gemäß verschiedenen Ausführungsformen kann die maschinelle Lernvorrichtung verschiedene Bezeichnungen beinhalten, darunter eine neuronale Netzwerkverarbeitungsvorrichtung, eine integrierte Schaltung für ein neuronales Netzwerk, eine neuromorphe Recheneinheit oder eine Deep-Learning-Vorrichtung. Beim maschinellen Lernen können verschiedene Arten von Netzwerkmodellen verwendet werden, wie z. B. GoogleNet®, AlexNet®, neuronales Faltungsnetzwerk (CNN) wie VGG-Netzwerk, neuronales Netzwerk mit Bereichsfaltung (R-CNN), neuronales Netzwerk mit Bereichsvorschlag (RPN), rekurrentes neuronales Netzwerk (RNN), auf Stapelung basierendes tiefes neuronales Netzwerk (S-DNN), dynamisches neuronales Netzwerk mit Zustandsraum (S-SDNN), Dekonvolutionsnetzwerk, tiefes Glaubensnetzwerk (DBN), eingeschränkte Boltzman-Maschine (RBM), vollständig faltbares Netzwerk, Netzwerk mit langem Kurzzeitspeicher (LSTM), Klassifizierungsnetzwerk, tiefes Q-Netzwerk (DQN), doppeltes DQN, duellierendes DQN, Verteilungs-Verstärkungslernen, mehrstufiges Lernen, priorisierte Erfahrungswiedergabe (PER), verrauschtes DQN, kategorisches DQN, Regenbogen-DQN, dezentralisiertes Policy-Netzwerk (DPN), tiefes dezentralisiertes Policy-Netzwerk (DDPN), modellbasiertes Lernen, Monte Carlo, SARSA, Policy Search, Actor-Critic und A3C, ist aber nicht darauf beschränkt.
  • 3 ist ein Blockdiagramm, das eine Speicherungsvorrichtung 10 gemäß einer Ausführungsform veranschaulicht. Die Speicherungsvorrichtung 10 kann einen Speichercontroller 100 und eine Speichervorrichtung 200 beinhalten. Der Speichercontroller 100 und die Speichervorrichtung 200 von 3 können dieselben Funktionen wie die des Speichercontrollers 100 und der Speichervorrichtung 200 von 1 durchführen, so dass auf wiederholte Beschreibungen in einem Bereich des erfindungsgemäßen Konzepts verzichtet wird. Die Speicherungsvorrichtung 10 kann eine Mehrzahl von Kanälen CH1 bis CHm tragen, und die Speichervorrichtung 200 kann über die Mehrzahl von Kanälen CH1 bis CHm mit dem Speichercontroller 100 verbunden sein. Die Speicherungsvorrichtung 10 kann beispielsweise als eine Speicherungsvorrichtung, wie eine SSD, ausgeführt sein.
  • Die Speichervorrichtung 200 kann eine Mehrzahl von NVM-Vorrichtungen NVM11 bis NVMmn beinhalten. Jede der NVM-Vorrichtungen NVM11 bis NVMmn kann mit einem der Mehrzahl von Kanälen CH1 bis CHm über einen diesem entsprechenden Weg verbunden sein. Beispielsweise können die NVM-Vorrichtungen NVM11 bis NVM1n mit einem ersten Kanal CH1 über die Wege W11 bis W1n verbunden sein, und die NVM-Vorrichtungen NVM21 bis NVM2n können mit einem zweiten Kanal CH2 über die Wege W21 bis W2n verbunden sein. In einer Ausführungsform kann jede der NVM-Vorrichtungen NVM11 bis NVMmn als eine beliebige Speichereinheit implementiert werden, die auf einen individuellen Befehl des Speichercontrollers 100 hin betrieben werden kann. Zum Beispiel kann jede der NVM-Vorrichtungen NVM11 bis NVMmn als Chip oder Die implementiert sein, aber das erfindungsgemäße Konzept ist darauf nicht beschränkt.
  • Der Speichercontroller 100 kann über die Mehrzahl der Kanäle CH1 bis CHm Signale an die Speichervorrichtung 200 senden und von dieser empfangen. Zum Beispiel kann der Speichercontroller 100 Befehle CMDa bis CMDm, Adressen ADDRa bis ADDRm und Daten DATENa bis DATENm über die Kanäle CH1 bis CHm an die Speichervorrichtung 200 senden oder die Daten DATENa bis DATENm von der Speichervorrichtung 200 empfangen.
  • Der Speichercontroller 100 kann eine der NVM-Vorrichtungen NVM11 bis NVMmn, die mit jedem der Kanäle CH1 bis CHm verbunden ist, auswählen, indem er einen entsprechenden der Kanäle CH1 bis CHm verwendet, und Signale an die ausgewählte NVM-Vorrichtung senden und von ihr empfangen. Beispielsweise kann der Speichercontroller 100 die NVM-Vorrichtung NVM 11 aus den NVM-Vorrichtungen NVM 11 bis NVM In auswählen, die mit dem ersten Kanal CH1 verbunden sind. Der Speichercontroller 100 kann den Befehl CMDa, die Adresse ADDRa und die Daten DATENa über den ersten Kanal CH1 an die ausgewählte NVM-Vorrichtung NVM11 übertragen oder die Daten DATENa von der ausgewählten NVM-Vorrichtung NVM 11 empfangen.
  • Der Speichercontroller 100 kann parallel über andere Kanäle Signale an die Speichervorrichtung 200 senden und von ihr empfangen. So kann der Speichercontroller 100 beispielsweise einen Befehl CMDb über den zweiten Kanal CH2 an die Speichervorrichtung 200 senden, während er einen Befehl CMDa über den ersten Kanal CH1 an die Speichervorrichtung 200 sendet. Zum Beispiel kann der Speichercontroller 100 Daten DATENb von der Speichervorrichtung 200 über den zweiten Kanal CH2 empfangen, während er Daten DATENa von der Speichervorrichtung 200 über den ersten Kanal CH1 empfängt.
  • Der Speichercontroller 100 kann alle Vorgänge der Speichervorrichtung 200 steuern. Der Speichercontroller 100 kann ein Signal an die Kanäle CH1 bis CHm übertragen und jede der NVM-Vorrichtungen NVM 11 bis NVMmn, die mit den Kanälen CH1 bis CHm verbunden sind, steuern. Der Speichercontroller 100 kann beispielsweise den Befehl CMDa und die Adresse ADDRa an den ersten Kanal CH1 übertragen und eine der NVM-Vorrichtungen NVM11 bis NVM In steuern.
  • Jede der NVM-Vorrichtungen NVM11 bis NVMmn kann über die Steuerung des Speichercontrollers 100 betrieben werden. Zum Beispiel kann die NVM Vorrichtung NVM11 die Daten DATENa basierend auf dem Programmierbefehl CMDa, der Adresse ADDRa und den Daten DATENa, die dem ersten Kanal CH1 bereitgestellt werden, programmieren. Beispielsweise kann die NVM-Vorrichtung NVM21 die Daten DATENb basierend auf dem Befehl CMDb und der Adresse ADDb, die dem zweiten Kanal CH2 bereitgestellt werden, lesen und die gelesenen Daten DATENb an den Speichercontroller 100 übertragen.
  • Obwohl 3 ein Beispiel veranschaulicht, in dem die Speichervorrichtung 200 mit dem Speichercontroller 100 über m Kanäle kommuniziert und n NVM-Vorrichtungen beinhaltet, die jedem der Kanäle entsprechen, kann die Anzahl der Kanäle und die Anzahl der mit einem Kanal verbundenen NVM-Vorrichtungen auf verschiedene Weise geändert werden.
  • 4 ist ein Blockdiagramm, das eine Speichervorrichtung 200 gemäß einer Ausführungsform veranschaulicht.
  • Bezug nehmend auf 4 mit Bezug auf 2 kann die Speichervorrichtung 200 eine Steuerlogik 230, ein Speicherzellen-Array 220, einen Seitenpuffer 240, einen Spannungsgenerator 250 und einen Zeilendecoder 260 beinhalten. Obwohl in 4 nicht dargestellt, kann die Speichervorrichtung 200 außerdem eine in 4 gezeigte Schaltung für die Speicherschnittstelle beinhalten. Zusätzlich kann die Speichervorrichtung 200 eine Spaltenlogik, einen Vordecoder, einen Temperatursensor, einen Befehlsdecoder und/oder einen Adressdecoder beinhalten.
  • Die Steuerlogik 230 kann alle verschiedenen Vorgänge der Speichervorrichtung 200 steuern. Die Steuerlogik 230 kann verschiedene Steuersignale in Reaktion auf Befehle CMD und/oder Adressen ADDR von der Schaltung der Speicherschnittstelle ausgeben. Beispielsweise kann die Steuerlogik 230 ein Spannungssteuersignal CTRL_vol, eine Zeilenadresse X-ADDR und eine Spaltenadresse Y-ADDR ausgeben.
  • Das Speicherzellen-Array 220 kann eine Mehrzahl von Speicherblöcken BLK1 bis BLKz (hier ist z eine positive ganze Zahl) beinhalten, von denen jeder eine Mehrzahl von Speicherzellen beinhalten kann. Das Speicherzellen-Array 220 kann über Bitleitungen BL mit dem Seitenpuffer 240 verbunden sein und über Wortleitungen WL, String-Auswahlleitungen SSL und Masse-Auswahlleitungen GSL mit dem Zeilendecoder 260 verbunden sein.
  • In einer beispielhaften Ausführungsform kann das Speicherzellen-Array 220 ein 3D-Speicherzellen-Array beinhalten, das eine Mehrzahl von NAND-Strings beinhaltet. Jeder der NAND-Strings kann Speicherzellen beinhalten, die jeweils mit Wortleitungen verbunden sind, die vertikal auf einem Substrat gestapelt sind. Die Erfindungen der US Pat. Nrn. 7,679,133; 8,553,466; 8,654,587; 8,559,235 ; und US Pat. Pub. Nr. 2011/0233648 sind hierin durch Verweis enthalten. In einer beispielhaften Ausführungsform kann das Speicherzellen-Array 220 ein 2D-Speicherzellen-Array beinhalten, das eine Mehrzahl von NAND-Strings beinhaltet, die in einer Zeilenrichtung und einer Spaltenrichtung angeordnet sind.
  • Der Seitenpuffer 240 kann eine Mehrzahl von Seitenpuffern PB1 bis PBn (hier ist n eine ganze Zahl größer oder gleich 3) beinhalten, die jeweils über eine Mehrzahl von Bitleitungen BL mit den Speicherzellen verbunden sein können. Der Seitenpuffer 240 kann mindestens eine der Bitleitungen BL in Reaktion auf die Spaltenadresse Y-ADDR auswählen. Der Seitenpuffer 240 kann je nach Betriebsart als Schreibtreiber oder als Leseverstärker betrieben werden. Zum Beispiel kann der Seitenpuffer 240 während eines Programmierbetriebs eine Bitleitungsspannung, die den zu programmierenden Daten entspricht, an die ausgewählte Bitleitung anlegen. Während eines Lesevorgangs kann der Seitenpuffer 240 den Strom oder die Spannung der ausgewählten Bitleitung BL erfassen und die in der Speicherzelle gespeicherten Daten lesen.
  • Der Spannungsgenerator 250 kann basierend auf dem Steuersignal CTRL_vol verschiedene Arten von Spannungen für Programmier-, Lese- und Löschvorgänge erzeugen. Zum Beispiel kann der Spannungsgenerator 250 eine Programmierspannung, eine Lesespannung, eine Programmierverifikationsspannung und eine Löschspannung als Wortleitungsspannung VWL erzeugen.
  • Der Zeilendecoder 260 kann in Reaktion auf die Zeilenadresse X-ADDR eine aus einer Mehrzahl von Wortleitungen WL und eine aus einer Mehrzahl von Stringauswahlleitungen SSL auswählen. Beispielsweise kann der Zeilendecoder 260 während eines Programmierbetriebs die Programmierspannung und die Programmierprüfspannung an die ausgewählte Wortleitung WL anlegen und während eines Lesevorgangs die Lesespannung an die ausgewählte Wortleitung WL anlegen.
  • 5 ist ein Blockdiagramm, das eine Speicherungsvorrichtung 10 gemäß einer Ausführungsform veranschaulicht. Die Speicherungsvorrichtung 10 von 5 kann dieselbe Funktion wie die Speicherungsvorrichtung 10 von 1 und 2 durchführen, und daher wird auf wiederholte Beschreibungen in einem Bereich des erfindungsgemäßen Konzepts verzichtet. Nachfolgend wird ein Beispiel beschrieben, bei dem die Speichervorrichtung 200 eine Flash-Speichervorrichtung (das heißt ein nichtflüchtiger Speicher (NVM)) ist. Der Speichercontroller 100 kann eine Flash-Übersetzungsschicht 300 beinhalten, wie oben beschrieben.
  • In einer Ausführungsform kann die Flash-Übersetzungsschicht 300 eine Schnittstelle zum Verbergen eines Löschvorgangs der Speichervorrichtung 200 zwischen einem Dateisystem eines Hosts und einer Speichervorrichtung 200 bereitstellen. Durch Verwenden der Flash-Übersetzungsschicht 300 kann ein Problem der Speichervorrichtung 200 gelöst werden, bei dem Löschen-vor-Schreiben und eine Nichtübereinstimmung zwischen einer Löscheinheit und einer Schreibeinheit und ein Problem, bei dem es eine maximale Löschanzahl von Flash-Speicher gibt. Durch Ausführen mindestens eines Abschnitts der Flash-Übersetzungsschicht 300 unter Verwendung eines Prozessors (120 von 2) kann der folgende Vorgang von der Flash-Übersetzungsschicht 300 durchgeführt werden.
  • In der Flash-Übersetzungsschicht 300 kann eine Zuordnung einer logischen Adresse LBA, die von einem Dateisystem erzeugt wird, zu einer physikalischen Adresse PBA der Speichervorrichtung 200 vorgenommen werden. Die Flash-Übersetzungsschicht 300 kann die Anzahl der Schreibvorgänge pro Block der Speichervorrichtung 200 zählen und einen Abnutzungsausgleich durchführen, um die Verteilung so vorzunehmen, dass der Schreibgrad zwischen einer Mehrzahl von Blöcken gleichmäßig ist. Außerdem kann die Flash-Übersetzungsschicht 300 eine Speicherbereinigung zur Neuausrichtung von Daten durchführen, um eine Erhöhung eines ungültigen Bereichs (das heißt Müll) zu beheben, der durch das Schreiben oder Löschen von Daten verursacht wird, die in einem Speicherbereich wiederholt werden.
  • Gemäß einer Ausführungsform kann der Speichercontroller 100 ein Fragmentierungsverhältnis FR auf der Grundlage von Seiteninformationen berechnen, die einem Speicherbereich entsprechen und in die Speichervorrichtung 200 geschrieben werden, und eine Speicherbereinigung auf der Speichervorrichtung 200 auf der Grundlage des Fragmentierungsverhältnisses FR durchführen, wodurch ein ungültiger Bereich des Speicherbereichs in einen gültigen Bereich umgewandelt wird.
  • Die Flash-Übersetzungsschicht 300 kann eine Ein-/Ausgabe-Schnittstelle (E/A) 310, einen FR-Rechner 330 und einen Speicherbereinigungsmanager (GC) 350 beinhalten.
  • Die E/A-Schnittstelle 310 kann in Reaktion auf eine Schreibanforderung eines Hosts zu schreibende Daten DATEN (im Folgenden einfach „DATEN“) und die logische Adresse LBA der DATEN empfangen und der Speichervorrichtung 200 die der logischen Adresse LBA entsprechende physikalische Adresse PBA auf der Grundlage einer im RAM (130 von 2) oder ROM (140 von 2) bereitgestellten Zuordnungstabelle zur Verfügung stellen. Gemäß einer Ausführungsform kann die E/A-Schnittstelle 310 die physikalische Adresse PBA an eine Steuerlogik 230 und die DATEN an einen Seitenpuffer 240 bereitstellen.
  • Die Speichervorrichtung 200 kann auf der Grundlage der von der E/A-Schnittstelle 310 empfangenen physikalischen Adresse PBA einen Schreibbetrieb zum Einschreiben der DATEN in einen Speicherbereich der Speichervorrichtung 200 (z. B. eine Mehrzahl von nichtflüchtigen Speichern NVM1 bis NVMn (wobei n eine natürliche Zahl von 2 oder mehr ist) betreiben.
  • Gemäß einer Ausführungsform kann die Steuerlogik 230 die physikalische Adresse PBA empfangen und eine Zeilenadresse (X-ADDR von 4) und eine Spaltenadresse (Y-ADDR von 4) eines Speicherzellen-Arrays (220 von 4) ausgeben, so dass die DATEN in einen Speicherbereich geschrieben werden, der der physikalischen Adresse PBA entspricht.
  • Gemäß einer Ausführungsform können DATEN in das Speicherzellen-Array 220 geschrieben werden. Eine Übertragungsbandbreite von Daten, die gleichzeitig übertragen werden können, kann beschränkt sein, und daher können DATEN im Seitenpuffer 240 gepuffert werden und dann in Reaktion auf ein Signal der Spaltenadresse Y-ADDR, das von der Steuerlogik 230 ausgegeben wird, in einem bestimmten Speicherbereich (z. B. einer Seite) unter einer Mehrzahl von Speicherblöcken 210 sequentiell gespeichert werden.
  • Gemäß einer Ausführungsform kann, wenn DATEN in einen Speicherbereich geschrieben werden, die Gültigkeit einer Seite, die in jedem der Mehrzahl von Speicherblöcken 210 der Speichervorrichtung 200 enthalten ist, variieren, bevor DATEN darin geschrieben werden. Da Daten wiederholt in eine Seite geschrieben werden und ein Block, der eine Seite beinhaltet, gelöscht wird, können einige Seiten der Speichervorrichtung 200 in ungültige Seiten geändert werden, die nicht in der Lage sind, Daten zu speichern. Gemäß einer Ausführungsform kann die Steuerlogik 230 die Flash-Übersetzungsschicht 300 mit gültigen Seiteninformationen VI versorgen, die Informationen über die Gültigkeit der Seiten enthalten, die in der Mehrzahl der Speicherblöcke 210 enthalten sind.
  • Der FR-Rechner 330 kann die gültige Seiteninformation VI empfangen und das Fragmentierungsverhältnis FR auf der Grundlage der gültigen Seiteninformation VI berechnen. Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR einen Segmentierungsgrad einer gültigen Seite und einer ungültigen Seite bezeichnen. Gemäß einer Ausführungsform kann der FR-Rechner 330 eine Mehrzahl von Seiten, die einen Speicherblock konfigurieren, auf der Grundlage der Gültigkeit klassifizieren (gruppieren) und das Fragmentierungsverhältnis FR berechnen, das der Anzahl gültiger Seitengruppen unter den gültigen Seitengruppen und ungültigen Seitengruppen entspricht.
  • Gemäß einer Ausführungsform kann der FR-Rechner 330 das Fragmentierungsverhältnis FR auf der Grundlage einer gültigen Seitenbitmap berechnen. In einer Ausführungsform kann die gültige Seitenbitmap eine Bitmap sein, die die Gültigkeit jeder einzelnen einer Mehrzahl von Seiten darstellt.
  • Die gültige Seitenbitmap kann als Spaltengröße die Anzahl der Speicherblöcke aufweisen, die in der Speichervorrichtung 200 enthalten sind, und kann als Zeilengröße die Anzahl der Seiten aufweisen, die in einem Speicherblock BLK enthalten sind, ist aber nicht darauf beschränkt.
  • Wie bereits erwähnt, kann die Gültigkeit jeder Seite einer Mehrzahl von Seiten, die in einem Speicherblock enthalten sind, durch ein Bit „0“ oder ein Bit „1“ ausgedrückt werden. Zum Beispiel kann eine gültige Seite als Bit „1“ in einer gültigen Seitenbitmap ausgedrückt werden, und eine ungültige Seite kann als Bit „0“ in der gültigen Seitenbitmap ausgedrückt werden, oder umgekehrt.
  • Gemäß einer Ausführungsform kann der FR-Rechner 330 einen Fragmentierungsgrad berechnen. Gemäß einer Ausführungsform kann der Fragmentierungsgrad der Anzahl der gültigen Seitengruppen und ungültigen Seitengruppen entsprechen, die aneinandergrenzend dieselbe Gültigkeitsbedingung aufweisen. Beispielsweise kann der FR-Rechner 330 sequentielle Bits eines Speicherblocks in einer gültigen Seitenbitmap erkennen, die sequentiellen Bits gruppieren und die Anzahl der Gruppen mit gleicher Gültigkeitsbedingung berechnen, wodurch ein Fragmentierungsgrad FD (wie in 14 veranschaulicht) berechnet wird. Der FR-Rechner 330 kann dem GC-Manager 350 das Fragmentierungsverhältnis FR oder das Fragmentierungsverhältnis FR und einen Fragmentierungsgrad FD bereitstellen.
  • Der GC-Manager 350 kann Daten, die in einer gültigen Seite eines Quellenblocks BLK_S211 zur Speicherbereinigung unter der Mehrzahl von Speicherblöcken 210 gespeichert sind, auf eine freie Seite eines Zielblocks BLK D 213 kopieren und den Quellenblock BLK S 211 löschen.
  • Da kontinuierlich Daten in die Speichervorrichtung 200 geschrieben oder aus ihr gelöscht werden, kann ein Teilbereich eines Speicherbereichs ungültig werden. Um einen freien Speicherblock zu sichern, der mindestens einem gültigen Bereich entspricht, der ein Speicherbereich ist, in den Daten geschrieben werden können, ist es wünschenswert, dass eine gültige Seite mindestens eines Speicherblocks in einen anderen Speicherblock „bewegt“ wird (durch Kopieren der Daten in den anderen Speicherblock) und eine Speicherbereinigung GC zum Durchführen eines Löschvorgangs auf einem entsprechenden Speicherblock durchgeführt wird. Gemäß einer Ausführungsform kann der GC-Manager 350 die Speicherbereinigung GC auf der Grundlage des Fragmentierungsverhältnisses FR durchführen, um den Quellenblock 211 effizienter auszuwählen.
  • Die Speicherbereinigung basierend auf einer gültigen Seite VPC kann verwendet werden, ist aber möglicherweise kein optimales Verfahren zur Auswahl des Quellenblocks BLK_S211. Gemäß einer Ausführungsform kann dem GC-Manager 350 das Fragmentierungsverhältnis FR basierend auf der Seitengültigkeitsinformation VI, die eine Gültigkeitsinformation über eine Seite ist, die einem Speicherbereich entspricht, der DATEN speichert, bereitgestellt werden, ein Block mit einem niedrigsten Fragmentierungsverhältnis FR als Quellenblock BLK_S211 ausgewählt werden und die Speicherbereinigung GC in aufsteigender Reihenfolge der Fragmentierungsverhältnisse FR durchgeführt werden. Daher kann die Speicherungsvorrichtung 10 gemäß einer Ausführungsform die Speicherbereinigung GC auf einem optimierten Quellenblock BLK_S 211 durchführen, wodurch die E/A-Effizienz maximiert wird. Außerdem kann die Speicherungsvorrichtung 10 gemäß einer Ausführungsform die Speicherbereinigung sequentiell von einem Speicherblock mit einem niedrigen Fragmentierungsverhältnis durchführen und somit das sequentielle Lesen der Speicherungsvorrichtung 10 sicherstellen und die E/A-Effizienz auf der Grundlage des sequentiellen Lesens verbessern. Darüber hinaus kann die Speicherungsvorrichtung 10 gemäß einer Ausführungsform die Anzahl der Durchführungen der Speicherbereinigung verringern. Gemäß einer Ausführungsform kann die Leistung der Speicherbereinigung verbessert und somit ein Schreibverstärkungsfaktor (WAF) reduziert werden. Daher kann die Lebensdauer oder Leistung der Speicherungsvorrichtung 10, die die Speichervorrichtung 200 beinhaltet, verbessert werden. Außerdem kann die Leistung eines Schreibbetriebs der Speicherungsvorrichtung 10 verbessert und die Lebensdauer der Speicherungsvorrichtung 10 verlängert werden. In einer Ausführungsform kann der WAF basierend auf einem Verhältnis zwischen den vom Host angeforderten Daten und den tatsächlich in die Speichervorrichtung 200 geschriebenen Daten berechnet werden.
  • In einer Ausführungsform kann davon ausgegangen werden, dass ein Verfahren zur Verbesserung der E/A-Effizienz der Speicherungsvorrichtung 10 durch Durchführen der Speicherbereinigung basierend auf einem Fragmentierungsverhältnis FR erreicht wird, aber das erfindungsgemäße Konzept ist darauf nicht beschränkt. Gemäß einer Ausführungsform kann die E/A-Effizienz der Speicherungsvorrichtung 10 auf der Abhängigkeit zwischen einer Mehrzahl von Befehlen, die vom Speichercontroller 100 an die Speichervorrichtung 200 übertragen werden, einem Zustand des Hosts, einer Anforderungshistorie des Hosts und einer Befehlsausgabehistorie des Speichercontrollers 100 basieren. Die Speicherungsvorrichtung 10 kann die Speicherbereinigung auf der Grundlage der Abhängigkeit zwischen der Mehrzahl von Befehlen, dem Zustand des Hosts, der Anforderungshistorie des Hosts und der Befehlsausgabehistorie des Speichercontrollers 100 durchführen, wodurch die E/A-Effizienz erhöht wird.
  • 6 ist ein Flussdiagramm, das ein Betriebsverfahren eines Speichercontrollers gemäß einer Ausführungsform beschreibt. Auf 6 wird in Verbindung mit 5 verwiesen.
  • In Vorgang S110 kann der Speichercontroller 100 eine Daten-Schreibanforderung von einem Host empfangen. Der Host kann dem Speichercontroller 100 DATEN und eine logische Adresse LBA von DATEN bereitstellen. Gemäß einer Ausführungsform kann die E/A-Schnittstelle (310 von 5) des Speichercontrollers 100 einen der Schreibanforderung entsprechenden Vorgang durchführen. Zum Beispiel kann die E/A-Schnittstelle 310 die logische Adresse LBA in eine physikalische Adresse PBA übersetzen und die physikalische Adresse PBA der Speichervorrichtung 200 bereitstellen.
  • In Vorgang S120 kann der Speichercontroller 100 einen Befehl zur Programmierung der Daten DATEN in der Speichervorrichtung 200 erteilen. Gemäß einer Ausführungsform kann der Speichercontroller 100 einen Schreibbefehl ausgeben und den Schreibbefehl der Speichervorrichtung 200 bereitstellen, wodurch die Speichervorrichtung 200 angewiesen wird, einen Schreibvorgang auszuführen. Die Steuerlogik (230 von 5) der Speichervorrichtung 200 kann mit der physikalischen Adresse PBA bereitgestellt werden, und der Seitenpuffer (250 von 5) kann DATEN puffern. Die gepufferten Daten können sequentiell auf eine gültige Seite unter einer Mehrzahl von Speicherblöcken (210 von 5) geschrieben werden.
  • In Vorgang S130 kann der Speichercontroller 100 eine gültige Seitenbitmap aktualisieren. Gemäß einer Ausführungsform kann die Steuerlogik 230 dem Speichercontroller 100 Seiteninformationen VI bereitstellen, bei denen es sich um Informationen über die Gültigkeit einer Seite handelt, auf der DATEN geschrieben sind, und der Speichercontroller 100 kann die gültige Seitenbitmap auf der Grundlage der Seiteninformationen VI aktualisieren. Die gültige Seitenbitmap kann eine Bitmap sein, die die Gültigkeit jeder Seite einer Mehrzahl von Seiten darstellt, und die Gültigkeit kann als Bit „0“ oder „1“ ausgedrückt werden.
  • In Vorgang S 140 kann der Speichercontroller 100 ein Fragmentierungsverhältnis FR berechnen. Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR eine Mehrzahl von Seiten, die einen Speicherblock konfigurieren, auf der Grundlage der Gültigkeit der Seite klassifizieren (gruppieren) und kann der Anzahl der gültigen Seitengruppen unter den gültigen Seitengruppen und ungültigen Seitengruppen entsprechen. (Siehe z.B. die in 9 gezeigten Beispiele für FR.) Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR der Anzahl der Speicherdirektzugriffe (DMA) entsprechen, die in einer Reihe von Prozessen durchgeführt werden, bei denen Daten an einen Seitenpuffer (nicht gezeigt) der Speichervorrichtung 200 übertragen werden.
  • In Vorgang S150 kann der Speichercontroller 100 die Speicherbereinigung GC auf der Grundlage des Fragmentierungsverhältnisses FR durchführen. Gemäß einer Ausführungsform kann der Speichercontroller 100 einen Quellenblock BLK_S sequentiell aus einem Speicherblock auswählen, der ein niedriges Fragmentierungsverhältnis FR aufweist, so dass ein sequentielles Lesen sichergestellt werden kann, wodurch die E/A-Effizienz der Speicherungsvorrichtung 10, die den Speichercontroller 100 beinhaltet, verbessert werden kann.
  • 7 ist ein konzeptionelles Diagramm, das eine Struktur von in einer Speichervorrichtung gespeicherten Daten gemäß einer Ausführungsform veranschaulicht. Auf 7 wird in Verbindung mit 5 verwiesen.
  • Eine Speichervorrichtung (200 von 5) kann eine Mehrzahl von Speicherblöcken BLK 210 beinhalten. Jede der Mehrzahl von Speicherblöcken BLK 210 kann mindestens eine Seite beinhalten, und jede Seite kann eine Mehrzahl von Speicherzellen beinhalten, die mit einer Mehrzahl von Wortzeilen verbunden sind. Jede der Speicherzellen kann mindestens einen Transistor beinhalten, und der Transistor kann ein Elektron auffangen, um Daten zu speichern.
  • Die Speichervorrichtung 200 kann mindestens einen Speicherblock BLK beinhalten. Zum Beispiel kann die Speichervorrichtung 200 M beinhalten (wobei M eine natürliche Zahl von Speicherblöcken ist (erster bis M-ter Speicherblock) BLK 0 bis BLK M-1. In einer Speicherungsvorrichtung (10 von 5) kann ein Lesevorgang und ein Schreibvorgang von Seiten- (oder Sektor-) Einheiten betrieben werden, und ein Löschvorgang kann von Blockeinheiten durchgeführt werden.
  • Ein Speicherblock BLK kann eine Anzahl von N Seiten beinhalten (erste bis N-te Seite) Seite 0 bis Seite N-1. In der Speicherungsvorrichtung (10 von 5) geschriebene DATEN können auf einer gültigen oder freien Seite gespeichert werden, die sich in einem von einem oder mehreren Blöcken BLK der Speichervorrichtung 200 befindet.
  • Eine Seite kann in einen Datenbereich, in dem Daten gespeichert sind, und einen Reservebereich, in dem keine Daten gespeichert sind, unterteilt sein. In einer Ausführungsform können dem Datenbereich 2 KB (Kilobyte) und dem Reservebereich 64 B (Byte) zugewiesen werden, aber das erfindungsgemäße Konzept ist darauf nicht beschränkt.
  • 8 ist ein konzeptionelles Diagramm, das die in einer Speichervorrichtung 200 gemäß einer Ausführungsform durchgeführte Speicherbereinigung beschreibt.
  • Zur Vereinfachung der Beschreibung kann davon ausgegangen werden, dass sich vier Seiten Page0 bis Page3 in jedem der ersten bis dritten Speicherblöcke BLK1 bis BLK3 eines Bereichs einer Speichervorrichtung (200 von 5) befinden. Die ersten bis dritten Speicherblöcke BLK1 bis BLK3 von 8 können einige der ersten bis M-ten Speicherblöcke BLK0 bis BLK(M-1) von 7 sein.
  • Die erste Seite Page0 des ersten Speicherblocks BLK1 kann ein gültiger Bereich sein, in den Daten gültig geschrieben werden können, die zweite Seite Page1 davon kann ein freier Bereich sein, und die dritte Seite Page2 und die vierte Seite Page3 davon können jeweils ein ungültiger Bereich basierend auf dem wiederholten Schreiben/Löschen von Daten sein.
  • Ebenso kann die erste Seite Page0 des zweiten Speicherblocks BLK2 ein gültiger Bereich sein, die zweite Seite Page1 und die vierte Seite Page3 davon können jeweils ein ungültiger Bereich sein, und die dritte Seite Page2 davon kann ein freier Bereich sein. Die erste Seite Page0 und die zweite Seite Page1 des dritten Speicherblocks BLK3 können ein freier Bereich sein, und die dritte Seite Seite2 und die vierte Seite Seite3 davon können jeweils ein gültiger Bereich sein.
  • In Reaktion auf ein Signal, das die Speicherbereinigung GC angibt, kann die Speicherbereinigung in der Speichervorrichtung (200 von 5) durchgeführt werden, und die im Speicherblock BLK gespeicherten Daten können neu ausgerichtet werden. Gemäß einer Ausführungsform kann der zweite Speicherblock BLK2, in dem eine Anzahl ungültiger Bereiche bereitgestellt wird, als Quellenblock BLK_S bestimmt werden, und der dritte Speicherblock BLK3, in dem eine Anzahl freier Bereiche bereitgestellt wird, kann als Zielblock BLK D bestimmt werden.
  • Gemäß einer Ausführungsform können Daten, die auf der ersten Seite Page0 des zweiten Speicherblocks BLK2 gespeichert sind, auf die zweite Seite Page1 des dritten Speicherblocks BLK3 kopiert werden, was zur Folge hat, dass im zweiten Speicherblock BLK2 gespeicherte Datenstücke möglicherweise nicht von Bedeutung sind. Daher kann eine Speicherungsvorrichtung (10 von 5) den zweiten Speicherblock BLK2 löschen, und somit kann der gesamte zweite Speicherblock BLK2 wieder in einen beschreibbaren Zustand versetzt werden. Mit anderen Worten: Es kann eine Speicherbereinigung durchgeführt werden.
  • 9 ist ein konzeptionelles Diagramm, das ein Fragmentierungsverhältnis beschreibt, das in einer Speichervorrichtung gemäß einer Ausführungsform berechnet wird. Auf 9 wird in Verbindung mit 5 verwiesen.
  • In 9 kann davon ausgegangen werden, dass sich fünf Seiten PAGE0 bis PAGE4 in einem Speicherblock befinden. Das erfindungsgemäße Konzept ist jedoch nicht auf die beschriebene Anzahl von Seiten beschränkt.
  • Ein Fragmentierungsverhältnis FR, wie oben beschrieben, kann eine Mehrzahl von Seiten, die einen Speicherblock konfigurieren, auf der Grundlage ihrer Gültigkeit klassifizieren (gruppieren) und kann der Anzahl gültiger Seitengruppen unter den gültigen Seitengruppen und ungültigen Seitengruppen entsprechen.
  • Wenn alle fünf Seiten (z. B. erste bis fünfte Seite) PAGE0 bis PAGE4, die einen Speicherblock konfigurieren, gültig sind, können die ersten bis fünften Seiten PAGE0 bis PAGE4, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen, zu einer gültigen Seitengruppe zusammengefasst werden. In diesem Fall kann die Anzahl der gültigen Seitengruppen eins sein, und das Fragmentierungsverhältnis FR kann somit 1 sein.
  • Wenn mindestens eine der fünf Seiten PAGE0 bis PAGE4, die einen Speicherblock konfigurieren, ungültig ist, werden möglicherweise zwei oder mehr gültige Seitengruppen erzeugt. Da ein sequentielles Lesen sichergestellt werden soll, kann das Auftreten einer ungültigen Seite zu einer Erhöhung des Fragmentierungsverhältnisses FR führen.
  • Gemäß einer Ausführungsform, wenn die erste Seite PAGE0 und die dritte bis fünfte Seite PAGE2 bis PAGE4 gültig sind, die zweite Seite PAGE1 jedoch ungültig ist, kann die Anzahl der gültigen Seitengruppen 2 betragen. Das heißt, das Fragmentierungsverhältnis FR kann 2 betragen.
  • In ähnlicher Weise, wenn die erste Seite PAGE0, die vierte Seite PAGE3 und die fünfte Seite PAGE4 gültig sind, aber die zweite Seite PAGE1 und die dritte Seite PAGE2 ungültig sind, kann die Anzahl der gültigen Seitengruppen 2 und das Fragmentierungsverhältnis FR 2 betragen. Wenn die erste Seite PAGE0 und die fünfte Seite PAGE4 gültig sind, aber die zweite bis vierte Seite PAGE1 bis PAGE2 ungültig sind, kann die Anzahl der gültigen Seitengruppen 2 und das Fragmentierungsverhältnis FR 2 betragen.
  • Gemäß einer Ausführungsform kann die Anzahl der gültigen Seitengruppen 3 betragen, wenn die erste Seite PAGE0, die dritte Seite PAGE2 und die fünfte Seite PAGE4 gültig sind, aber die zweite Seite PAGE1 und die vierte Seite PAGE3 ungültig sind. Das heißt, das Fragmentierungsverhältnis FR kann 3 betragen.
  • Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR eines Speichers der Anzahl der gültigen Seitengruppen des betreffenden Speicherblocks entsprechen.
  • 10 ist ein Flussdiagramm, das ein Betriebsverfahren eines Speichercontrollers 100 gemäß einer Ausführungsform beschreibt. 10 ist ein Flussdiagramm, das den Vorgang S130 von 6 detaillierter beschreibt. Auf 10 wird in Verbindung mit 5 verwiesen.
  • In Vorgang S131, nachdem Vorgang S121 durchgeführt wurde, kann der Speichercontroller 100 gültige Seiteninformationen VI von der Speichervorrichtung 200 empfangen. Die gültige Seiteninformation VI kann eine Information über die Gültigkeit der Seiten sein, die in der Mehrzahl der Speicherblöcke 210 enthalten sind.
  • In Vorgang S132 kann der Speichercontroller 100 auf der Grundlage der gültigen Seiteninformation VI eine gültige Seite auf ein Bit „1“ und eine ungültige Seite, die nicht gültig ist, auf ein Bit „0“ einstellen. Gemäß einer Ausführungsform kann die gültige Seiteninformation VI die gültige Seite darstellen, und der Speichercontroller 100 kann eine Bitmap verwenden, um die Gültigkeit einer Seite schematisch darzustellen.
  • In Vorgang S133 kann der Speichercontroller 100 eine gültige Seitenbitmap auf der Grundlage der gültigen Seiteninformation VI aktualisieren. Gemäß einer Ausführungsform kann der Speichercontroller 100 eine Bitmap, die der gültigen Seiteninformation VI entspricht, in die gültige Seitenbitmap schreiben. Gemäß einer Ausführungsform kann ein Bit an einer Position einer Bitmap aktualisiert werden, die einem Speicherbereich entspricht, in den Daten geschrieben werden. Zum Beispiel kann ein Bit, das die Gültigkeit einer Seite darstellt, an einer bestimmten Position einer Bitmap aktualisiert werden, die einer Seite und einem Speicherblock entspricht, in den DATEN geschrieben werden.
  • Anschließend kann der Vorgang S140 durchgeführt werden.
  • 11 ist ein konzeptionelles Diagramm, das eine gültige Seitenbitmap gemäß einer Ausführungsform beschreibt. Auf 11 wird in Verbindung mit 10 verwiesen.
  • Bezug nehmend auf 11 können die ersten bis vierten Speicherblöcke BLK1 bis BLK4 jeweils vier Seiten beinhalten (z. B. die ersten bis vierten Seiten) PAGE0 bis PAGE3.
  • Gemäß einer Ausführungsform können die erste Seite PAGE0, die dritte Seite PAGE2 und die vierte Seite PAGE3 des ersten Speicherblocks BLK1 gültig sein, während die zweite Seite PAGE1 ungültig sein kann. Gemäß einer Ausführungsform können alle ersten bis vierten Seiten PAGE0 bis PAGE3 des zweiten Speicherblocks BLK2 gültig sein. Gemäß einer Ausführungsform können die erste Seite PAGE0 und die vierte Seite PAGE3 des dritten Speicherblocks BLK3 gültig sein, während die zweite Seite PAGE 1 und die dritte Seite PAGE2 ungültig sein können. Gemäß einer Ausführungsform kann die erste Seite PAGE0 des vierten Speicherblocks BLK4 gültig sein, aber die zweite bis vierte Seite PAGE1 bis PAGE3 können ungültig sein.
  • Gemäß einer Ausführungsform kann ein Speicherblock einer Spalte einer gültigen Seitenbitmap entsprechen. Gemäß einer Ausführungsform kann eine gültige Seite als Bit „1“ und eine ungültige Seite als Bit „0“ zugewiesen werden, oder umgekehrt.
  • Gemäß einer Ausführungsform kann eine erste Spalte einer gültigen Seitenbitmap, die dem ersten Speicherblock BLK1 entspricht, die Bits „1, 0, 1 und 1“ beinhalten, eine zweite Spalte einer gültigen Seitenbitmap, die dem zweiten Speicherblock BLK2 entspricht, die Bits „1, 1, 1 und 1“ beinhalten, eine dritte Spalte einer gültigen Seitenbitmap, die dem dritten Speicherblock BLK3 entspricht, kann die Bits „1, 0, 0 und 1“ beinhalten, und eine vierte Spalte einer gültigen Seitenbitmap, die dem vierten Speicherblock BLK4 entspricht, kann die Bits „1, 0, 0 und 1“ beinhalten.
  • 12 ist ein konzeptionelles Diagramm, das ein Fragmentierungsverhältnis beschreibt, das in einem Speichercontroller 100 gemäß einer Ausführungsform berechnet wird. Auf 12 wird in Verbindung mit 5 und 11 verwiesen.
  • Der FR-Rechner 330 kann sequentielle Bits eines Speicherblocks in einer gültigen Seitenbitmap erkennen und die sequentiellen Bits gruppieren. Eine in 12 bestimmte oder aktualisierte gültige Seitenbitmap kann verwendet werden, um ein Fragmentierungsverhältnis FR unter Verwendung des FR-Rechners 330 zu berechnen.
  • Wenn das Lesen sequentiell aus einer obersten Zeile der gültigen Seitenbitmap durchgeführt wird, kann eine erste Spalte der gültigen Seitenbitmap die Bits „1, 0, 1 und 1“ beinhalten. In diesem Fall kann die Anzahl der aufeinanderfolgenden Bits eins zu 1, eins zu 0 und zwei zu 1 sein. Die Anzahl der gültigen Bitmap-Gruppen kann zwei betragen, und somit kann das Fragmentierungsverhältnis FR 2 sein.
  • In ähnlicher Weise kann eine zweite Spalte der gültigen Seitenbitmap die Bits „1, 1, 1 und 1“ beinhalten, wobei die Anzahl der aufeinanderfolgenden Bits vier in 1 betragen kann und somit die Anzahl der gültigen Bitmap-Gruppen eins sein kann und das Fragmentierungsverhältnis FR 1 sein kann.
  • In ähnlicher Weise kann eine dritte Spalte der gültigen Seitenbitmap die Bits „1, 0, 0 und 1“ beinhalten, und die Anzahl der aufeinanderfolgenden Bits kann eins zu 1, zwei zu 0 und eins zu 1 betragen. In diesem Fall kann die Anzahl der gültigen Bitmap-Gruppen zwei betragen und das Fragmentierungsverhältnis FR kann 2 betragen.
  • In ähnlicher Weise kann eine vierte Spalte der gültigen Seitenbitmap die Bits „1, 0, 0 und 0“ beinhalten, die Anzahl der sequentiellen Bits kann eins zu 1 und drei zu 0 betragen, und die Anzahl der gültigen Bitmap-Gruppen kann eins sein, aber nicht die gleiche Gültigkeitsbedingung aufweisen wie die zweite Spalte. Daher kann das Fragmentierungsverhältnis FR 2 betragen.
  • 13 ist ein Flussdiagramm, das ein Betriebsverfahren eines Speichercontrollers 100 gemäß einer Ausführungsform beschreibt. 13 ist ein Flussdiagramm, das den Vorgang S140 von 6 detaillierter beschreibt. Auf 13 wird in Verbindung mit 5 verwiesen.
  • In Vorgang S141, nachdem Operation S130 betrieben wurde, kann der Speichercontroller 100 ein Fragmentierungsverhältnis FR analysieren, das ein Segmentierungsgrad einer gültigen Seitenbitmap ist.
  • In Vorgang S142 kann der Speichercontroller 100 prüfen, ob irgendwelche Speicherblöcke ein minimales Fragmentierungsverhältnis unter einer Mehrzahl von Speicherblöcken (210 von 5) aufweisen, die in der Speichervorrichtung 200 beinhaltet sind, und kann prüfen, ob es nur einen Speicherblock gibt, der das minimale Fragmentierungsverhältnis aufweist.
  • In Vorgang S143, wenn nur ein Speicherblock das minimale Fragmentierungsverhältnis aufweist, kann der Speichercontroller 100 diesen Speicherblock als Quellenblock BLK_S 211 auswählen. (Dieser Quellenblock kann ein erster Quellenblock in einem Speicherbereinigungsverfahren sein, in dem Quellenblöcke in einer aufsteigenden Reihenfolge der Fragmentierungsverhältnisse bestimmt werden.)
  • In Vorgang S144, wenn es nicht nur einen Speicherblock mit dem minimalen Fragmentierungsverhältnis gibt, kann der Speichercontroller 100 einen Speicherblock mit einem relativ niedrigen Fragmentierungsgrad (siehe unten) als Quellenblock auswählen (211 in 5). Gemäß einer Ausführungsform kann der Fragmentierungsgrad der Anzahl der gültigen Seitengruppen und ungültigen Seitengruppen entsprechen, die aneinandergrenzend dieselbe Gültigkeitsbedingung aufweisen. Beispielsweise kann der Fragmentierungsgrad aus der Anzahl der Gruppen mit gleicher Gültigkeitsbedingung unter aufeinanderfolgenden Bits eines Speicherblocks in einer gültigen Seitenbitmap berechnet werden. Ein Fragmentierungsgrad wird weiter unten mit Verweis auf 14 beschrieben.
  • Anschließend kann der Vorgang S150 durchgeführt werden.
  • 14 ist ein konzeptionelles Diagramm, das einen Fragmentierungsgrad beschreibt, der in einem Speichercontroller 100 gemäß einer Ausführungsform berechnet wird.
  • Gemäß einer Ausführungsform kann ein Fragmentierungsgrad FD der Anzahl gültiger Seitengruppen und ungültiger Seitengruppen entsprechen, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen. Beispielsweise kann der Fragmentierungsgrad FD aus der Anzahl der Gruppen mit gleicher Gültigkeitsbedingung unter einer Mehrzahl von Seitengruppen berechnet werden, die durch Gruppierung aufeinander folgender Bits eines Speicherblocks in einer gültigen Seitenbitmap erhalten werden.
  • Im Beispiel von 14 beträgt der Fragmentierungsgrad FD einer jeden ersten, dritten und vierten Spalte der gültigen Seitenbitmap 2. Wie veranschaulicht, kann die erste Spalte der gültigen Seitenbitmap insgesamt drei Seitengruppen beinhalten (z. B. zwei gültige Seitengruppen und eine ungültige Seitengruppe), und somit kann der Fragmentierungsgrad FD 3 betragen. In ähnlicher Weise kann die dritte Spalte der gültigen Seitenbitmap insgesamt drei Seitengruppen beinhalten (z. B. zwei gültige Seitengruppen und eine ungültige Seitengruppe), so dass der Fragmentierungsgrad FD 3 betragen kann. In ähnlicher Weise kann die vierte Spalte der gültigen Seitenbitmap insgesamt zwei Seitengruppen beinhalten (z. B. eine gültige und eine ungültige Seitengruppe), so dass der Fragmentierungsgrad FD 2 betragen kann.
  • 15 ist ein konzeptionelles Diagramm zur Beschreibung der Speicherbereinigung, die gemäß einer Ausführungsform unter Verwendung eines Fragmentierungsverhältnisses FR und eines Fragmentierungsgrades FD durchgeführt wird. Auf 15 wird in Verbindung mit 5 verwiesen.
  • Gemäß einer Ausführungsform kann der GC-Manager 350 einen zweiten Speicherblock BLK2, der ein niedriges Fragmentierungsverhältnis FR aufweist, als Quellenblock BLK_S (211 von 5) verwenden. Der zweite Speicherblock BLK2 kann eine erste Speicherbereinigung auf dem Quellenblock BLK_S durchführen, und somit kann der zweite Speicherblock BLK2 gelöscht werden.
  • Anschließend kann eine zweite Speicherbereinigung erforderlich sein. Ein erster Speicherblock BLK1, ein dritter Speicherblock BLK3 und ein vierter Speicherblock BLK4 können das gleiche Fragmentierungsverhältnis FR (=2) aufweisen.
  • Gemäß einer Ausführungsform kann der vierte Speicherblock BLK4 ein Fragmentierungsverhältnis FR von 2 aufweisen und somit einen Fragmentierungsgrad FD haben, der relativ niedriger ist als der des ersten Speicherblocks BLK1 oder des dritten Speicherblocks BLK3 und als Quellenblock BLK_S für die zweite Speicherbereinigung ausgewählt werden kann.
  • 16 ist ein Flussdiagramm, das ein Betriebsverfahren einer Speicherungsvorrichtung 10 gemäß einer Ausführungsform beschreibt. Auf 16 wird in Verbindung mit 5 verwiesen.
  • In Vorgang S210 kann ein Speichercontroller 100 eine Schreibanforderung und Daten DATEN, die der Schreibanforderung entsprechen, von einem Host empfangen.
  • In Vorgang S220 kann der Speichercontroller 100 einen Programmierbefehl ausgeben und den Programmierbefehl an die Speichervorrichtung 200 übertragen.
  • Im Vorgang S230 kann eine Speichervorrichtung 200 in Reaktion auf den Programmierbefehl DATEN in eine freie Seite eines Speicherblocks schreiben. Gemäß einer Ausführungsform können die Daten DATEN durch einen Seitenpuffer (250 von 5) gepuffert und bereitgestellt werden.
  • In Vorgang S240 kann die Speichervorrichtung 200 einen Zustand eines Speicherblocks bereitstellen. Gemäß einer Ausführungsform kann der Zustand des Speicherblocks die gültige Seiteninformation VI beinhalten, die die Gültigkeit einer Seite ist, die DATEN speichert.
  • In Vorgang S250 kann der Speichercontroller 100 eine gültige Seitenbitmap aktualisieren. Gemäß einer Ausführungsform kann der Speichercontroller 100 Gültigkeitsinformationen über eine Seite empfangen, auf der Daten geschrieben sind, und Informationen über eine geänderte Seite aktualisieren.
  • In Vorgang S260 kann der Speichercontroller 100 ein Fragmentierungsverhältnis FR auf der Grundlage der gültigen Seiteninformation VI berechnen. Gemäß einer Ausführungsform kann das Fragmentierungsverhältnis FR basierend auf der Bitkontinuität der gültigen Seitenbitmap berechnet werden und kann einer gültigen Seitengruppe unter einer Mehrzahl von Gruppen entsprechen, die Bits beinhalten, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen.
  • In Vorgang S270 kann der Speichercontroller 100 einen Speicherblock mit einem niedrigen Fragmentierungsverhältnis FR als Quellenblock BLK_S (211 von 1) bestimmen. Gemäß einer Ausführungsform kann der Speichercontroller 100 die Fragmentierungsverhältnisse FR in aufsteigender Reihenfolge anordnen und einen Speicherblock mit einem niedrigen Fragmentierungsverhältnis FR nacheinander als Quellenblock BLK S 211 auswählen.
  • In Vorgang S280 kann der Speichercontroller 100 die Speichervorrichtung 200 anweisen, die Speicherbereinigung durchzuführen. Gemäß einer Ausführungsform kann der Speichercontroller 100 einen Speicherblock mit einem niedrigen Fragmentierungsverhältnis FR als Quellenblock BLK_S 211 auswählen und eine Speicherbereinigung an dem Quellenblock BLK_S 211 durchführen, wodurch die E/A-Effizienz erhöht wird.
  • In Vorgang S290 kann die Speichervorrichtung 200 den Quellenblock BLK_S 211 auf einen Zielblock BLK D kopieren, um eine Speicherbereinigung durchzuführen. Gemäß einer Ausführungsform kann die Speichervorrichtung 200 eine gültige Seite des Quellenblocks BLK_S 211 auf eine freie Seite des Zielblocks BLK D (213 von 5) kopieren.
  • 17 ist ein Blockdiagramm, das ein Speichersystem 1 gemäß einer Ausführungsform veranschaulicht. Ein in 17 veranschaulichtes Speichersystem 500 kann funktionell ähnlich wie die Speicherungsvorrichtung 10 von 5 sein, weshalb auf eine wiederholte Beschreibung verzichtet wird.
  • Ein Host-System 400 und das Speichersystem 500 können das Speichersystem 1 konfigurieren. In einer Ausführungsform kann das Speichersystem 1 einen Computer, einen ultramobilen Personal Computer (PC) (UMPC), eine Workstation, einen Net-Book-Computer, einen persönlichen digitalen Assistenten (PDA), einen tragbaren Computer, ein Web-Tablet, einen Tablet-Computer, ein drahtloses Telefon, ein Mobiltelefon, ein Smartphone, ein E-Book, einen tragbaren Multimedia-Player (PMP), einen tragbaren Spielautomaten, eine Navigationsvorrichtung, eine Blackbox, eine Digitalkamera, einen digitalen Multimedia-Broadcasting-Player (DMB), ein dreidimensionales Fernsehgerät, ein intelligentes Fernsehgerät, einen digitalen Audiorekorder, einen digitalen Audio-Player konfigurieren, ein digitaler Bildrekorder, ein digitaler Bildspieler, ein digitaler Videorekorder, ein digitaler Videoplayer, ein einen Datensektor konfigurierender Speicher, eine Vorrichtung zum Senden oder Empfangen von Informationen in einer drahtlosen Umgebung, eine von verschiedenen elektronischen Vorrichtungen, die ein Heimnetzwerk konfigurieren, eine von verschiedenen elektronischen Vorrichtungen, die ein Computernetzwerk konfigurieren, eine von verschiedenen elektronischen Vorrichtungen, die ein Telematiknetzwerk konfigurieren, eine RFID-Vorrichtung (Radio Frequency Identification) oder eine von verschiedenen elektronischen Vorrichtungen, die ein Computersystem konfigurieren.
  • Das Host-System 400 kann mindestens ein Betriebssystem (OS) 410 beinhalten, und das OS 410 kann insgesamt eine Funktion und einen Betrieb des Hosts verwalten und steuern und kann einen gegenseitigen Betrieb zwischen dem Host und einem Benutzer, der das Speichersystem 1 verwendet, bereitstellen.
  • Dabei kann das Betriebssystem 410 eine Funktion und einen Betrieb unterstützen, die dem Verwendungszweck und der Benutzerfreundlichkeit eines Benutzers entsprechen, und kann beispielsweise auf der Grundlage der Mobilität der Host Vorrichtung 200 in ein allgemeines Betriebssystem und ein mobiles Betriebssystem unterteilt werden. Das allgemeine Betriebssystem im OS 410 kann in ein persönliches Betriebssystem und ein Unternehmens-OS unterteilt werden. Das persönliche Betriebssystem kann beispielsweise ein System sein, das darauf spezialisiert ist, eine Service-Providing-Funktion für allgemeine Benutzer zu unterstützen, und Windows und Chrome beinhalten kann, und das Unternehmens-Betriebssystem kann ein System sein, das darauf spezialisiert ist, hohe Leistung zu sichern und zu unterstützen, und Windows Server, Linux und Unix beinhalten kann.
  • Das mobile Betriebssystem im OS 410 kann ein System sein, das darauf spezialisiert ist, eine Funktion zur Bereitstellung eines mobilen Dienstes für Benutzer und eine Energiesparfunktion eines Systems zu unterstützen und kann Android, iOS und Windows Mobile beinhalten. In einer Ausführungsform kann der Host eine Mehrzahl von Betriebssystemen beinhalten und kann auch ein Betriebssystem zum Durchführen eines Betriebs mit dem Speichersystem 1 entsprechend einer Benutzeranforderung ausführen. Dabei kann der Host eine Mehrzahl von Befehlen, die einer Benutzeranforderung entsprechen, an das Speichersystem 1 übertragen, und somit kann das Speichersystem 1 einen Vorgang (das heißt einen Vorgang, der einer Benutzeranforderung entspricht) entsprechend den Anweisungen durchführen.
  • Eine Leseanforderung und eine Schreibanforderung des Host-Systems 400 können von Dateieinheiten durchgeführt werden. Das heißt, basierend auf einer Datei-Leseanforderung READ_F und einer Datei-Schreibanforderung WRITE_F können Daten durch das Host-System 400 im Speichersystem 500 gespeichert werden, oder die im Speichersystem 500 gespeicherten Daten können durch das Host-System 400 gelesen werden.
  • Das Speichersystem 500 kann beispielsweise mit einem Personal Computer (PC), einem Datenserver, einem Netzwerkspeicher (NAS), einer Vorrichtung für das Internet der Dinge (IoT) oder einer tragbaren elektronischen Vorrichtung implementiert werden. Beispiele für tragbare elektronische Geräte können Laptops, Mobiltelefone, Smartphones, Tablet-PCs, persönliche digitale Assistenten (PDA), digitale Assistenten für Unternehmen (EDA), digitale Fotokameras, digitale Videokameras, Audiogeräte, tragbare Multimedia-Player (PMP), persönliche Navigationsgeräte (PND), MP3-Player, tragbare Spielkonsolen, E-Books und tragbare Vorrichtungen beinhalten.
  • Das Speichersystem 500 kann eine Host-Schnittstellenschicht 510, eine Flash-Übersetzungsschicht 520, eine Flash-Schnittstellenschicht 530 und einen nichtflüchtigen Speicher 540 beinhalten.
  • Die Host-Schnittstelle 510 kann ein logischer Bereich sein, in dem die Verbindung zwischen dem Host-System 400 und dem Speichersystem 500 durchgeführt wird.
  • Die Flash-Übersetzungsschicht 520 kann als eine andere Art der Flash-Übersetzungsschicht 300 von 5 verstanden werden, eine E/A-Schnittstelle 521 kann die gleiche Funktion wie die der E/A-Schnittstelle 310 von 5 bereitstellen, ein FR-Rechner 522 kann die gleiche Funktion wie die des FR-Rechners 330 von 5 bereitstellen, und ein GC-Manager 523 kann die gleiche Funktion wie die des GC-Managers 350 von 5 bereitstellen. Daher wird auf wiederholte Beschreibungen verzichtet.
  • Die Host-Schnittstelle 510 und die Flash-Übersetzungsschicht 520 können Daten in Sektoreinheiten schreiben oder lesen. Das heißt, basierend auf einer Lese-/Schreibanforderung eines Host-Systems kann die Host-Schnittstellenschicht 510 eine Lese-/Schreibanforderung READ_S/WRITE_S von der Flash-Übersetzungsschicht 520 anfordern.
  • Die Flash-Schnittstellenschicht 530 kann eine Schnittstelle zwischen der Flash-Übersetzungsschicht 520 und dem nichtflüchtigen Speicher 540 bereitstellen. Gemäß einer Ausführungsform kann das Lesen von READ_P von Daten und das Schreiben von WRITE_P von Daten von Seiteneinheiten durchgeführt werden, das Löschen von ERASE_B von Daten kann jedoch von Blockeinheiten durchgeführt werden.
  • Der nichtflüchtige Speicher 540 kann als die Speichervorrichtung 200 von 5 verstanden werden, und daher wird auf wiederholte Beschreibungen verzichtet.
  • Das Speichersystem 1 gemäß einer Ausführungsform kann unter Verwendung verschiedener Arten von Gehäusen montiert werden. Beispielsweise kann das Speichersystem 1 gemäß einer Ausführungsform als ein Typ wie Package-on-Package (PoP), Ball-Grid-Arrays (BGAs), Chip-Scale-Packages (CSPs), Plastic-Leaded-Chip-Carrier (PLCC), Plastic-Dual-In-Line-Package (PDIP), Chip in Waffle-Pack montiert werden, Chip in Waffelform, Chip on Board (COB), Keramik-Dual-Inline-Package (CERDIP), metrisches Kunststoff-Quad-Flat-Pack (MQFP), Thin-Quad-Flat-Pack (TQFP), Small-Outline-Package (SOIC), Shrink-Small-Outline-Package (SSOP), Thin-Small-Outline-Package (TSOP), System-In-Package (SIP) und Multi-Chip-Package.
  • 18 ist ein Blockdiagramm, das ein Speichersystem 1000 gemäß einer Ausführungsform veranschaulicht.
  • 18 ist ein Blockdiagramm, das das Speichersystem 1000 veranschaulicht, an dem eine Speicherungsvorrichtung (z.B. 10 aus 5) gemäß einer Ausführungsform angelegt ist. 18 ist ein Diagramm eines Speichersystems 1000, an dem eine Speicherungsvorrichtung gemäß einer Ausführungsform angelegt ist. Das Speichersystem 1000 von 18 kann grundsätzlich ein mobiles System sein, wie etwa ein tragbares Kommunikationsendgerät (z.B. ein Mobiltelefon), ein Smartphone, ein Tablet-PC, eine tragbare Vorrichtung, eine Vorrichtung für das Gesundheitswesen oder eine Vorrichtung für das Internet der Dinge (IOT). Das Speichersystem 1000 von 18 ist jedoch nicht notwendigerweise auf das mobile System beschränkt und kann ein PC, ein Laptop, ein Server, ein Mediaplayer oder eine automobile Vorrichtung (das heißt, ein Navigationsgerät) sein.
  • Bezug nehmend auf 18 kann das Speichersystem 1000 einen Hauptprozessor 1100, Speicher (z.B. 1200a und 1200b) und Speicherungsvorrichtungen (z.B. 1300a und 1300b) beinhalten. Darüber hinaus kann das Speichersystem 1000 mindestens eine Bilderfassungsvorrichtung 1410, eine Benutzereingabevorrichtung 1420, einen Sensor 1430, eine Kommunikationsvorrichtung 1440, ein Display 1450, einen Lautsprecher 1460, eine Stromzuführungsvorrichtung 1470 und eine Verbindungsschnittstelle 1480 beinhalten.
  • Der Hauptprozessor 1100 kann alle Vorgänge des Speichersystems 1000 steuern, insbesondere die Vorgänge anderer Komponenten, die in dem Speichersystem 1000 enthalten sind. Der Hauptprozessor 1100 kann als Allzweckprozessor, als dedizierter Prozessor oder als Anwendungsprozessor implementiert sein.
  • Der Hauptprozessor 1100 kann mindestens einen CPU-Kern 1110 beinhalten und darüber hinaus einen Controller 1120 konfigurieren, um die Speicher 1200a und 1200b und/oder die Speicherungsvorrichtungen 1300a und 1300b zu steuern. In einigen Ausführungsformen kann der Hauptprozessor 1100 ferner einen Beschleuniger 1130 beinhalten, der eine dedizierte Schaltung für einen Hochgeschwindigkeits-Datenbetrieb ist, wie z. B. einen Datenbetrieb mit künstlicher Intelligenz (AI). Der Beschleuniger 1130 kann eine Grafikverarbeitungseinheit (GPU), eine neuronale Verarbeitungseinheit (NPU) und/oder eine Datenverarbeitungseinheit (DPU) beinhalten und als Chip implementiert sein, der physikalisch von den anderen Komponenten des Hauptprozessors 1100 getrennt ist.
  • Die Speicher 1200a und 1200b können als Hauptspeichervorrichtungen des Speichersystems 1000 verwendet werden. Obwohl jeder der Speicher 1200a und 1200b einen flüchtigen Speicher, wie z.B. einen statischen Direktzugriffsspeicher (SRAM) und/oder einen dynamischen RAM (DRAM) beinhalten kann, kann jeder der Speicher 1200a und 1200b einen nichtflüchtigen Speicher, wie z.B. einen Flash-Speicher, einen Phasenänderungs-RAM (PRAM) und/oder einen resistiven RAM (RRAM) beinhalten. Die Speicher 1200a und 1200b können in demselben Gehäuse wie der Prozessor 1100 untergebracht sein.
  • Die Speicherungsvorrichtungen 1300a und 1300b können als nichtflüchtige Speicherungsvorrichtungen konfiguriert sein, um Daten unabhängig davon zu speichern, ob ihnen Strom zugeführt wird, und ein größeres Fassungsvermögen aufweisen als die Speicher 1200a und 1200b. Die Speicherungsvorrichtungen 1300a und 1300b können jeweils Speicherungscontroller (STRG CTRL) 1310a und 1310b und NVMs (nichtflüchtige Speicher) 1320a und 1320b beinhalten, die so konfiguriert sind, dass sie Daten über die Steuerung der Speicherungscontroller 1310a und 1310b speichern. Obwohl die NVMs 1320a und 1320b V-NAND-Flash-Speicher mit einer zweidimensionalen (2D) oder einer dreidimensionalen (3D) Struktur aufweisen können, können die NVMs 1320a und 1320b auch andere Arten von NVMs beinhalten, wie PRAM und/oder RRAM.
  • Die Speicherungsvorrichtungen 1300a und 1300b können physisch vom Hauptprozessor 1100 getrennt und im Speichersystem 1000 beinhaltet sein oder im selben Gehäuse wie der Hauptprozessor 1100 implementiert sein. Zusätzlich können die Speicherungsvorrichtungen 1300a und 1300b Typen von Solid-State-Vorrichtungen (SSDs) oder Speicherkarten aufweisen und über eine Schnittstelle, wie die unten beschriebene Verbindungsschnittstelle 1480, mit anderen Komponenten des Systems 100 entfernbar verbunden sein. Bei den Speicherungsvorrichtungen 1300a und 1300b kann es sich um Vorrichtungen handeln, auf die ein Standardprotokoll, wie z. B. ein universeller Flash-Speicher (UFS), eine eingebettete Multimediakarte (eMMC) oder ein NVM-Express (NVMe), angelegt wird, ohne darauf beschränkt zu sein.
  • Die Bilderfassungsvorrichtung 1410 kann Standbilder oder bewegliche Bilder aufnehmen. Die Bilderfassungsvorrichtung 1410 kann eine Kamera, einen Camcorder und/oder eine Webcam beinhalten.
  • Die Benutzereingabevorrichtung 1420 kann verschiedene Arten von Daten empfangen, die von einem Benutzer des Speicherungssystems 1000 eingegeben werden, und ein Touchpad, ein Tastenfeld, eine Tastatur, eine Maus und ein Mikrofon beinhalten.
  • Der Sensor 1430 kann verschiedene Arten von physikalischen Mengen erfassen, die von der Außenseite des Speichersystems 1000 erhalten werden können, und die erfassten physikalischen Mengen in elektrische Signale umwandeln. Der Sensor 1430 kann einen Temperatursensor, einen Drucksensor, einen Beleuchtungsstärkesensor, einen Positionssensor, einen Beschleunigungssensor, einen Biosensor und/oder einen Gyroskopsensor beinhalten.
  • Die Kommunikationsvorrichtung 1440 kann Signale zwischen anderen Vorrichtungen außerhalb des Speichersystems 1000 gemäß verschiedenen Kommunikationsprotokollen senden und empfangen. Die Kommunikationsvorrichtung 1440 kann eine Antenne, einen Transceiver oder ein Modem beinhalten.
  • Das Display 1450 und der Lautsprecher 1460 können als Ausgabevorrichtungen dienen, die so konfiguriert sind, dass sie dem Benutzer des Speichersystems 1000 visuelle bzw. akustische Informationen ausgeben.
  • Die Stromzuführungsvorrichtung 1470 kann die von einer in das Speicherungssystem 1000 eingebetteten Batterie (nicht dargestellt) und/oder einer externen Stromquelle gelieferte Energie in geeigneter Weise umwandeln und die umgewandelte Energie den einzelnen Komponenten des Speicherungssystems 1000 zuführen.
  • Die Verbindungsschnittstelle 1480 kann eine Verbindung zwischen dem Speichersystem 1000 und einer externen Vorrichtung bereitstellen, die mit dem Speichersystem 1000 verbunden ist und in der Lage ist, Daten an das Speichersystem 1000 zu senden und von diesem zu empfangen. Die Verbindungsschnittstelle 1480 kann unter Verwendung verschiedener Schnittstellenschemata implementiert werden, wie etwa Advanced Technology Attachment (ATA), Serial ATA (SATA), External SATA (e-SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnection (PCI), PCI express (PCIe), NVMe, IEEE 1394, eine Universal Serial Bus (USB)-Schnittstelle, eine Secure Digital (SD)-Kartenschnittstelle, eine Multi-Media-Card (MMC)-Schnittstelle, eine eMMC-Schnittstelle, eine UFS-Schnittstelle, eine Embedded UFS (eUFS)-Schnittstelle und eine Compact Flash (CF)-Kartenschnittstelle.
  • 19 ist ein Blockdiagramm, das ein Speichersystem 20 gemäß einer Ausführungsform veranschaulicht.
  • 19 ist ein Blockdiagramm eines Speichersystems 10 gemäß einer Ausführungsform. Bezug nehmend auf 19, kann das Speichersystem 10 eine Speichervorrichtung 200 und einen Speichercontroller 100 beinhalten. Die Speichervorrichtung 200 kann einer der NVM-Vorrichtungen NVM11 bis NVMmn entsprechen, die mit einem Speichercontroller 200 basierend auf einem der Mehrzahl von Kanälen CH1 bis CHm von 3 kommunizieren. Der Speichercontroller 100 kann dem Speichercontroller 200 von 3 entsprechen.
  • Die Speichervorrichtung 200 kann erste bis achte Pins P11 bis P18, eine Speicherschnittstellenschaltung 270, eine Steuerlogikschaltung 230 und ein Speicherzellen-Array 220 beinhalten.
  • Die Speicherschnittstellenschaltung 270 kann ein Chip-Freigabesignal nCE vom Speichercontroller 100 über den ersten Pin P11 empfangen. Die Speicherschnittstellenschaltung 270 kann in Reaktion auf das Chip-Freigabesignal nCE über den zweiten bis achten Pin P12 bis P18 Signale an den Speichercontroller 100 senden und von diesem empfangen. Wenn sich das Chip-Freigabesignal nCE beispielsweise in einem Freigabezustand (das heißt auf einem niedrigen Pegel) befindet, kann die Speicherschnittstellenschaltung 270 über die zweiten bis achten Pins P12 bis P18 Signale an den Speichercontroller 100 senden und von diesem empfangen.
  • Die Speicherschnittstellenschaltung 270 kann über die zweiten bis vierten Pins P12 bis P14 ein Befehlsverriegelungsfreigabesignal CLE, ein Adressverriegelungsfreigabesignal ALE und ein Schreibfreigabesignal nWE von dem Speichercontroller 100 empfangen. Die Schaltung der Schnittstelle 270 zum Speicher kann über den siebten Pin P17 ein Daten-Signal DQ vom Speichercontroller 100 empfangen oder das Daten-Signal DQ an den Speichercontroller 100 senden. Über das Datensignal DQ können ein Befehl CMD, eine Adresse ADDR und Daten übertragen werden. Beispielsweise kann das Datensignal DQ über eine Mehrzahl von Datensignalleitungen übertragen werden. In diesem Fall kann der siebte Pin P17 eine Mehrzahl von Pins beinhalten, die jeweils einer Mehrzahl von Datensignalen DQ entsprechen.
  • Die Speicherschnittstellenschaltung 270 kann den Befehl CMD aus dem Datensignal DQ erhalten, das in einem Freigabeabschnitt (z.B. einem hohen Freigabezustand) des Befehlslatch-Freigabesignals CLE basierend auf Umschaltzeitpunkten des Schreibfreigabesignals nWE empfangen wird. Die Speicherschnittstellen-Schaltung 270 kann die Adresse ADDR aus dem Daten-Signal DQ erhalten, das in einem Freigabeabschnitt (z.B. einem hohen Freigabezustand) des Adressverriegelungs-Freigabesignals ALE empfangen wird, basierend auf den Umschaltzeitpunkten des Schreibfreigabesignals nWE.
  • In einer Ausführungsform kann das Freigabesignal nWE auf einem statischen Zustand (das heißt, einem hohen oder niedrigen Pegel) aufrechterhalten werden und zwischen dem hohen und dem niedrigen Pegel umgeschaltet werden. Zum Beispiel kann das Freigabesignal nWE in einem Abschnitt, in dem der Befehl CMD oder die Adresse ADDR übertragen wird, umschalten. So kann die Speicherschnittstellenschaltung 270 den Schreibbefehl CMD oder die Adresse ADDR basierend auf den Umschaltzeitpunkten des Freigabesignals nWE erhalten.
  • Die Speicherschnittstellenschaltung 270 kann ein Lesefreigabesignal nRE vom Speichercontroller 100 über den fünften Pin P15 empfangen. Die Speicherschnittstellenschaltung 270 kann über den sechsten Pin P16 ein Daten-Strobe-Signal DQS vom Speichercontroller 100 empfangen oder das Daten-Strobe-Signal DQS an den Speichercontroller 100 senden.
  • In einem Daten (DATEN)-Ausgabebetrieb der Speichervorrichtung 200 kann die Speicherschnittstellenschaltung 270 das Lesefreigabesignal nRE empfangen, das über den fünften Pin P15 umschaltet, bevor sie die DATEN ausgibt. Die Speicherschnittstellenschaltung 270 kann das Daten-Strobe-Signal DQS erzeugen, das basierend auf dem Umschalten des Lesefreigabesignals nRE umschaltet. Beispielsweise kann die Speicherschnittstellenschaltung 270 ein Daten-Strobe-Signal DQS erzeugen, das basierend auf einer Umschaltstartzeit des Lesefreigabesignals nRE nach einer vorbestimmten Verzögerung (z.B. tDQSRE) umzuschalten beginnt. Die Schaltung der Schnittstelle 270 des Speichers kann das Daten-Signal DQ, das DATEN beinhaltet, basierend auf einem Umschaltzeitpunkt des Daten-Strobe-Signals DQS übertragen. So kann das DATEN-Signal mit dem Umschaltzeitpunkt des Daten-Strobe-Signals DQS abgeglichen und an den Speichercontroller 100 übertragen werden.
  • Wenn in einem DATEN-Eingabebetrieb der Speichervorrichtung 200 das Daten-Signal DQ, das den DATEN beinhaltet, vom Speichercontroller 100 beaufschlagt wird, kann die Speicherschnittstellenschaltung 270 das Daten-Strobe-Signal DQS, das umschaltet, zusammen mit dem DATEN vom Speichercontroller 100 empfangen. Die Schaltung der Speicherschnittstelle 270 kann die DATEN aus dem Daten Signal DQ basierend auf den Umschaltzeitpunkten des Daten Strobe Signals DQS erhalten. Beispielsweise kann die Schaltung der Speicherschnittstelle 270 das Datensignal DQ bei steigenden und fallenden Flanken des Daten-Strobe-Signals DQS abtasten und die DATEN erhalten.
  • Die Speicherschnittstellen-Schaltung 270 kann über den achten Pin P18 ein Ausgangssignal nR/B für Bereitschaft/Belegt an den Speichercontroller 100 übertragen. Die Schaltung der Speicherschnittstelle 270 kann Zustandsinformationen der Speichervorrichtung 200 über das Bereit/Belegt-Ausgangssignal nR/B an den Speichercontroller 100 übertragen. Wenn sich die Speichervorrichtung 200 in einem belegten Zustand befindet (das heißt, wenn in der Speichervorrichtung 200 Operationen durchgeführt werden), kann die Speicherschnittstellenschaltung 270 ein Bereit/Belegt-Ausgangssignal nR/B, das den belegten Zustand angibt, an den Speichercontroller 100 übertragen. Wenn sich die Speichervorrichtung 200 in einem Bereitschaftszustand befindet (das heißt, wenn in der Speichervorrichtung 200 keine Operationen durchgeführt oder abgeschlossen werden), kann die Speicherschnittstellenschaltung 270 ein Bereit/Belegt-Ausgangssignal nR/B, das den Bereitschaftszustand angibt, an den Speichercontroller 100 senden. Während die Speichervorrichtung 200 beispielsweise DATEN aus dem Speicherzellen-Array 220 in Reaktion auf einen Lesebefehl für eine Seite liest, kann die Speicherschnittstellen-Schaltung 270 ein Bereit/Besetzt-Ausgangssignal nR/B, das einen Besetzt-Zustand (das heißt einen niedrigen Pegel) angibt, an den Speichercontroller 100 übertragen. Während beispielsweise die Speichervorrichtung 200 in Reaktion auf einen Programmierbefehl DATEN in das Speicherzellen-Array 220 programmiert, kann die Speicherschnittstellen-Schaltung 270 ein Bereit/Besetzt-Ausgangssignal nR/B, das den Besetzt-Zustand angibt, an den Speichercontroller 100 senden.
  • Die Steuerlogikschaltung 230 kann alle Vorgänge der Speichervorrichtung 200 steuern. Die Steuerlogikschaltung 230 kann den Befehl/die Adresse CMD/ADDR empfangen, den/die sie von der Schaltung der Speicherschnittstelle 270 erhält. Die Steuerlogikschaltung 230 kann in Reaktion auf den empfangenen Befehl/die empfangene Adresse CMD/ADDR Steuersignale zur Steuerung anderer Komponenten der Speichervorrichtung 200 erzeugen. So kann die Steuerlogikschaltung 230 beispielsweise verschiedene Steuersignale zum Programmieren von DATEN in das Speicherzellen-Array 220 oder zum Auslesen der DATEN aus dem Speicherzellen-Array 220 erzeugen.
  • Das Speicherzellen-Array 220 kann die von der Speicherschnittstellen-Schaltung 270 erhaltenen DATEN über die Steuerung der Steuerlogikschaltung 230 speichern. Das Speicherzellen-Array 220 kann die gespeicherten DATEN an die Speicherschnittstellen-Schaltung 270 über die Steuerung der Steuerlogikschaltung 230 ausgeben.
  • Das Speicherzellen-Array 220 kann eine Mehrzahl von Speicherzellen beinhalten. Bei der Mehrzahl der Speicherzellen kann es sich beispielsweise um Flash-Speicherzellen handeln. Das erfindungsgemäße Konzept ist jedoch nicht darauf beschränkt, und die Speicherzellen können RRAM-Zellen, FRAM-Zellen, PRAM-Zellen, Thyristor-RAM-Zellen (TRAM) oder MRAM-Zellen sein. Im Folgenden wird hauptsächlich eine Ausführungsform beschrieben, bei der die Speicherzellen NAND-Flash-Speicherzellen sind.
  • Der Speichercontroller 100 kann erste bis achte Pins P21 bis P28 und eine NAND-Schnittstellenschaltung 160 beinhalten. Die ersten bis achten Pins P21 bis P28 können jeweils den ersten bis achten Pins P11 bis P18 der Speichervorrichtung 200 entsprechen.
  • Die NAND-Schnittstellenschaltung 160 kann ein Chip-Freigabesignal nCE über den ersten Pin P21 an die Speichervorrichtung 200 übertragen. Die NAND-Schnittstelle 160 kann über die zweiten bis achten Pins P22 bis P28 Signale an die und von der Speichervorrichtung 200 senden und empfangen, die durch das Freigabesignal nCE ausgewählt wird.
  • Die NAND-Schnittstellenschaltung 160 kann das Freigabesignal CLE für den Befehlsspeicher, das Freigabesignal ALE für den Adressenspeicher und das Schreibfreigabesignal nWE über die zweiten bis vierten Pins P22 bis P24 an die Speichervorrichtung 200 übertragen. Die NAND-Schnittstellen-Schaltung 160 kann das Daten-Signal DQ über den siebten Pin P27 an die Speichervorrichtung 200 senden oder von ihr empfangen.
  • Die NAND-Schnittstellenschaltung 160 kann das Datensignal DQ, das den Befehl CMD oder die Adresse ADDR beinhaltet, zusammen mit dem Freigabesignal nWE, das umschaltet, an die Speichervorrichtung 200 übertragen. Die NAND-Schnittstellenschaltung 160 kann das Datensignal DQ einschließlich des Befehls CMD an die Speichervorrichtung 200 übertragen, indem sie ein Befehlslatch-Freigabesignal CLE überträgt, das einen Freigabezustand aufweist. Außerdem kann die NAND-Schnittstellenschaltung 160 das Datensignal DQ, das die Adresse ADDR beinhaltet, an die Speichervorrichtung 200 übertragen, indem sie ein Freigabezustand aufweisendes Adressverriegelungssignal ALE überträgt.
  • Die NAND-Schnittstellenschaltung 160 kann das Lesefreigabesignal nRE über den fünften Pin P25 an die Speichervorrichtung 200 übertragen. Die NAND-Schnittstellenschaltung 160 kann das Daten-Strobe-Signal DQS über den sechsten Pin P26 von der Speichervorrichtung 200 empfangen oder an diese senden.
  • In einem DATEN-Ausgabevorgang der Speichervorrichtung 200 kann die NAND-Schnittstellenschaltung 160 ein Lesefreigabesignal nRE erzeugen, das umschaltet, und das Lesefreigabesignal nRE an die Speichervorrichtung 200 übertragen. Beispielsweise kann die NAND-Schnittstellenschaltung 160 vor der Ausgabe von DATEN ein Lesefreigabesignal nRE erzeugen, das von einem statischen Zustand (das heißt, einem hohen oder niedrigen Pegel) in einen umschaltenden Zustand übergeht. So kann die Speichervorrichtung 200 basierend auf dem Lesefreigabesignal nRE ein Daten-Strobe-Signal DQS erzeugen, das umschaltet. Die NAND-Schnittstellenschaltung 160 kann das Daten-Signal DQ, das das DATEN-Signal beinhaltet, zusammen mit dem Daten-Strobe-Signal DQS, das umschaltet, von der Speichervorrichtung 200 empfangen. Die NAND-Schnittstellenschaltung 160 kann die Daten DATEN aus dem Datensignal DQ basierend auf einem Umschaltzeitpunkt des Daten-Strobe-Signals DQS erhalten.
  • Bei einem Daten (DATEN)-Eingabevorgang in die Speichervorrichtung 200 kann die NAND-Schnittstellenschaltung 160 ein Daten-Strobe-Signal DQS erzeugen, das umschaltet. Beispielsweise kann die NAND-Schnittstellenschaltung 160 vor der Übertragung von Daten DATEN ein Daten-Strobe-Signal DQS erzeugen, das von einem statischen Zustand (das heißt, einem hohen oder niedrigen Pegel) in einen Wechselzustand übergeht. Die NAND-Schnittstellen-Schaltung 160 kann das Daten-Signal DQ, das die Daten DATEN beinhaltet, basierend auf den Umschaltzeitpunkten des Daten-Strobe-Signals DQS an die Speichervorrichtung 200 übertragen.
  • Die NAND-Schnittstellenschaltung 160 kann über den achten Pin P28 ein Ausgangssignal nR/B für Bereitschaft/Belegt von der Speichervorrichtung 200 empfangen. Die NAND-Schnittstellenschaltung 160 kann basierend auf dem Bereitschafts-/Belegt-Ausgangssignal nR/B Zustandsinformationen der Speichervorrichtung 200 bestimmen.
  • 20 ist ein Blockdiagramm, das ein universelles Flash-Speichersystem (UFS) 2000 gemäß einer Ausführungsform beschreibt.
  • Das UFS-System 2000 kann ein System sein, das einem vom Joint Electron Device Engineering Council (JEDEC) angekündigten UFS-Standard entspricht und einen UFS-Host 2100, eine UFS-Vorrichtung 2200 und eine UFS-Schnittstelle 2300 beinhaltet. Die obige Beschreibung des Systems 1000 von 1 kann auch auf das UFS-System 2000 von 20 in einem Bereich angelegt werden, der nicht im Widerspruch zur folgenden Beschreibung von 20 steht.
  • Bezug nehmend auf 20 kann der UFS-Host 2100 mit der UFS-Vorrichtung 2200 über die UFS-Schnittstelle 2300 verbunden sein. Wenn der Hauptprozessor 1100 von 1 ein AP ist, kann der UFS-Host 2100 als ein Abschnitt des AP implementiert werden. Der UFS-Host-Controller 2110 und der Host-Speicher 2140 können jeweils dem Controller 1120 des Hauptprozessors 1100 und den Speichern 1200a und 1200b von 1 entsprechen. Die UFS-Vorrichtung 2200 kann der Speicherungsvorrichtung 1300a und 1300b von 1 entsprechen, und ein UFS-Gerätecontroller 2210 und ein NVM 2220 können den Speicherungscontrollern 1310a und 1310b bzw. den NVMs 1320a und 1320b von 1 entsprechen.
  • Der UFS-Host 2100 kann einen UFS-Host-Controller 2110, eine Anwendung 2120, einen UFS-Treiber 2130, einen Host-Speicher 2140 und eine UFS-Verbindungsschicht (UIC) 2150 beinhalten. Die UFS-Vorrichtung 2200 kann den UFS-Gerätecontroller 2210, den NVM 2220, eine Speicherschnittstelle 2230, einen Gerätespeicher 2240, eine UIC-Schicht 2250 und einen Regler 2260 beinhalten. Der NVM 2220 kann eine Mehrzahl von Speichereinheiten 2221 beinhalten. Obwohl jede der Speichereinheiten 2221 einen V-NAND-Flash-Speicher mit einer 2D-Struktur oder einer 3D-Struktur beinhalten kann, kann jede der Speichereinheiten 2221 eine andere Art von NVM beinhalten, wie PRAM und/oder RRAM. Der UFS-Gerätecontroller 2210 kann über die Speicherschnittstelle 2230 mit dem NVM 2220 verbunden sein. Die Speicherschnittstelle 2230 kann so konfiguriert sein, dass sie einem Standardprotokoll, wie Toggle oder ONFI, entspricht.
  • Die Anwendung 2120 kann sich auf ein Programm beziehen, das mit der UFS Vorrichtung 2200 kommunizieren möchte, um Funktionen der UFS Vorrichtung 2200 zu verwenden. Die Anwendung 2120 kann Eingabe/Ausgabe-Anforderungen (IORs) an den UFS-Treiber 2130 für Eingabe/Ausgabe (E/A)-Vorgänge auf der UFS-Vorrichtung 2200 übermitteln. Die IORs können sich auf eine Daten-Leseanforderung, eine Daten-Speicher- (oder Schreib-) Anforderung und/oder eine Daten-Lösch- (oder Verwerf-) Anforderung beziehen, ohne darauf beschränkt zu sein.
  • Der UFS-Treiber 2130 kann den UFS Host Controller 2110 über eine UFS-Host Controller Schnittstelle (UFS-HCI) verwalten. Der UFS-Treiber 2130 kann den von der Anwendung 2120 erzeugten IOR in einen durch den UFS-Standard definierten UFS-Befehl umwandeln und den UFS-Befehl an den UFS-Host-Controller 2110 übermitteln. Ein IOR kann in eine Mehrzahl von UFS-Befehlen umgewandelt werden. Obwohl der UFS-Befehl grundsätzlich durch einen SCSI-Standard definiert sein kann, kann der UFS-Befehl ein spezieller Befehl für den UFS-Standard sein.
  • Der UFS-Host-Controller 2110 kann den vom UFS-Treiber 2130 umgewandelten UFS-Befehl über die UIC-Schicht 2150 und die UFS-Schnittstelle 2300 an die UIC-Schicht 2250 der UFS-Vorrichtung 2200 übertragen. Während der Übertragung des UFS-Befehls kann ein UFS-Host-Register 2111 des UFS-Host-Controllers 2110 als Befehlswarteschlange (CQ) dienen.
  • Die UIC-Schicht 2150 auf der Seite des UFS-Host 2100 kann eine MIPI M-PHY Schnittstelle 2151 und eine MIPI UniPro 2152 beinhalten, und die UIC-Schicht 2250 auf der Seite der UFS Vorrichtung 2200 kann ebenfalls eine MIPI M-PHY 2251 und eine MIPI UniPro 2252 beinhalten.
  • Die UFS-Schnittstelle 2300 kann eine Leitung beinhalten, die so konfiguriert ist, dass sie ein Referenztaktsignal REF_CLK überträgt, eine Leitung, die so konfiguriert ist, dass sie ein Hardware-Rücksetzsignal RESET_n für die UFS-Vorrichtung 2200 überträgt, ein Leitungspaar, das so konfiguriert ist, dass es ein Paar differentieller Eingangssignale DIN_t und DIN_c überträgt, und ein Leitungspaar, das so konfiguriert ist, dass es ein Paar differentieller Ausgangssignale DOUT_t und DOUT_c überträgt.
  • Eine Frequenz eines Taktsignals REF CLK, das vom UFS-Host 2100 der UFS Vorrichtung 2200 bereitgestellt wird, kann eine von 19,2 MHz, 26 MHz, 38,4 MHz und 52 MHz sein, ohne darauf beschränkt zu sein. Der UFS-Host 2100 kann die Frequenz des Taktsignals REF CLK während eines Vorgangs, d. h. während der Datenübertragungs-/Empfangsoperationen zwischen dem UFS-Host 2100 und der UFS-Vorrichtung 2200, ändern. Die UFS Vorrichtung 2200 kann Taktsignale mit verschiedenen Frequenzen aus dem vom UFS-Host 2100 bereitgestellten Referenztaktsignal REF_CLK erzeugen, indem sie eine phasenstarre Schleife (PLL) verwendet. Außerdem kann der UFS-Host 2100 eine Datenrate zwischen dem UFS-Host 2100 und der UFS Vorrichtung 2200 einstellen, indem er die Frequenz des Taktsignals REF_CLK verwendet. Das heißt, die Datenrate kann in Abhängigkeit von der Frequenz des Referenztaktsignals REF CLK bestimmt werden.
  • Die UFS-Schnittstelle 2300 kann eine Mehrzahl von Spuren unterstützen, von denen jede als ein Paar von Differenzleitungen implementiert sein kann. Zum Beispiel kann die UFS-Schnittstelle 2300 mindestens eine Empfangsspur und mindestens eine Übertragungsspur beinhalten. In 20 kann ein Leitungspaar, das so konfiguriert ist, dass es ein Paar von differentiellen Eingangssignalen DIN_T und DIN C überträgt, eine Empfangsspur bilden, und ein Leitungspaar, das so konfiguriert ist, dass es ein Paar von differentiellen Ausgangssignalen DOUT_T und DOUT_C überträgt, kann eine Übertragungsspur bilden. Obwohl in 20 eine Sende- und eine Empfangsspur veranschaulicht sind, kann die Anzahl der Sende- und Empfangsspuren geändert werden.
  • Die Empfangsspur und die Übertragungsspur können Daten basierend auf einem seriellen Kommunikationsschema empfangen. Die Vollduplex-Kommunikation zwischen dem UFS-Host 2100 und der UFS-Vorrichtung 2200 kann durch eine Struktur ermöglicht werden, bei der die Empfangsspur von der Übertragungsspur getrennt ist. Das heißt, während die UFS-Vorrichtung 2200 über die Empfangsspur Daten vom UFS-Host 2100 empfängt, kann sie über die Übertragungsspur Daten an den UFS-Host 2100 senden. Darüber hinaus können Steuerdaten (das heißt ein Befehl) vom UFS-Host 2100 an die UFS-Vorrichtung 2200 und Benutzerdaten, die vom UFS-Host 2100 im NVM 2220 der UFS-Vorrichtung 2200 gespeichert oder daraus gelesen werden sollen, über dieselbe Spur übertragen werden. Dementsprechend muss zwischen dem UFS-Host 2100 und der UFS-Vorrichtung 2200 möglicherweise keine zusätzliche Spur für die Datenübertragung getrennt sein, zusätzlich zu einem Paar Empfangsspuren und einem Paar Übertragungsspuren.
  • Der UFS-Gerätecontroller 2210 der UFS-Vorrichtung 2200 kann alle Vorgänge der UFS-Vorrichtung 2200 steuern. Der UFS-Gerätecontroller 2210 kann den NVM 2220 verwalten, indem er eine logische Einheit (LU) 2211 verwendet, die eine logische Speichereinheit für Daten ist. Die Anzahl der LUs 2211 kann 8 betragen, ohne darauf beschränkt zu sein. Der UFS-Gerätecontroller 2210 kann eine FTL beinhalten und eine logische Datenadresse (z.B. eine logische Blockadresse (LBA)), die vom UFS-Host 2100 empfangen wurde, in eine physikalische Datenadresse (z.B. eine physikalische Blockadresse (PBA)) umwandeln, indem er Adressabbildungsinformationen der FTL verwendet. Ein logischer Block, der zum Speichern von Benutzerdaten im UFS-System 2000 konfiguriert ist, kann eine Größe in einem vorbestimmten Bereich aufweisen. Beispielsweise kann eine Mindestgröße des logischen Blocks auf 4 KByte eingestellt werden.
  • Wenn ein Befehl vom UFS-Host 2100 über die UIC-Schicht 2250 an die UFS Vorrichtung 2200 angelegt wird, kann der UFS-Gerätecontroller 2210 einen Vorgang in Reaktion auf den Befehl durchführen und eine Abschlussantwort an den UFS-Host 2100 senden, wenn der Vorgang abgeschlossen ist.
  • Wenn der UFS-Host 2100 beispielsweise beabsichtigt, Benutzerdaten in der UFS-Vorrichtung 2200 zu speichern, kann der UFS-Host 2100 einen Befehl zur Datenspeicherung an die UFS-Vorrichtung 2200 übermitteln. Wenn von der UFS-Vorrichtung 2200 eine Reaktion (eine „Übertragungsbereitschafts“-Antwort) empfangen wird, die angibt, dass der UFS-Host 2100 bereit ist, Benutzerdaten zu empfangen (Übertragungsbereitschaft), kann der UFS-Host 2100 Benutzerdaten an die UFS-Vorrichtung 2200 übertragen. Der UFS-Gerätecontroller 2210 kann die empfangenen Benutzerdaten vorübergehend im Vorrichtungsspeicher 2240 speichern und die Benutzerdaten, die vorübergehend im Vorrichtungsspeicher 2240 gespeichert sind, an einer ausgewählten Position des NVM 2220 basierend auf den Adresszuordnungsinformationen der FTL speichern.
  • Ein weiteres Beispiel: Wenn der UFS-Host 2100 beabsichtigt, die in der UFS Vorrichtung 2200 gespeicherten Benutzerdaten zu lesen, kann der UFS-Host 2100 einen Lesebefehl für Daten an die UFS Vorrichtung 2200 senden. Der UFS-Gerätecontroller 2210, der den Befehl empfangen hat, kann die Benutzerdaten basierend auf dem Lesebefehl für Daten aus dem NVM 2220 lesen und die gelesenen Benutzerdaten vorübergehend im Vorrichtungsspeicher 2240 speichern. Während des Lesevorgangs kann der UFS-Gerätecontroller 2210 einen Fehler in den gelesenen Benutzerdaten erkennen und korrigieren, indem er eine darin eingebettete ECC-Engine (nicht dargestellt) verwendet. Genauer gesagt kann die ECC-Engine Paritätsbits für Schreibdaten erzeugen, die in den NVM 2220 geschrieben werden sollen, und die erzeugten Paritätsbits können im NVM 2220 zusammen mit den Schreibdaten gespeichert werden. Während des Lesens von Daten aus dem NVM 2220 kann die ECC-Engine einen Fehler in gelesenen Daten korrigieren, indem sie die aus dem NVM 2220 gelesenen Paritätsbits zusammen mit den gelesenen Daten verwendet, und fehlerbereinigte gelesene Daten ausgeben.
  • Zusätzlich kann der UFS-Gerätecontroller 2210 Benutzerdaten, die vorübergehend im Vorrichtungsspeicher 2240 gespeichert sind, an den UFS-Host 2100 übertragen. Zusätzlich kann der UFS-Gerätecontroller 2210 eine AES-Engine beinhalten (nicht gezeigt). Die AES-Engine kann mindestens einen Verschlüsselungsbetrieb und einen Entschlüsselungsbetrieb an Daten durchführen, die an den UFS-Gerätecontroller 2210 übertragen werden, indem sie einen symmetrischen Schlüsselalgorithmus verwendet.
  • Der UFS-Host 2100 kann Befehle, die an die UFS Vorrichtung 2200 übertragen werden sollen, sequentiell im UFS-Host-Register 2111 speichern, das als übliche Warteschlange dienen kann, und die Befehle sequentiell an die UFS Vorrichtung 2200 übertragen. In diesem Fall kann der UFS-Host 2100 einen nächsten Befehl, der in der CQ in Bereitschaft steht, an die UFS Vorrichtung 2200 übermitteln, selbst wenn ein zuvor übermittelter Befehl noch von der UFS Vorrichtung 2200 verarbeitet wird, das heißt noch bevor er eine Benachrichtigung empfängt, dass der zuvor übermittelte Befehl von der UFS Vorrichtung 2200 verarbeitet wurde. Auf diese Weise kann die UFS Vorrichtung 2200 während des Prozesses der Verarbeitung des zuvor übermittelten Befehls ebenfalls einen nächsten Befehl vom UFS-Host 2100 empfangen. Eine maximale Anzahl (oder Warteschlangentiefe) von Befehlen, die in der CQ gespeichert werden können, kann beispielsweise 32 betragen. Die CQ kann auch als zirkuläre Warteschlange implementiert werden, in der ein Anfang und ein Ende einer in einer Warteschlange gespeicherten Befehlszeile durch einen Kopfzeiger und einen Endzeiger angegeben werden.
  • Jede der Mehrzahl von Speichereinheiten 2221 kann ein Speicherzellen-Array (nicht dargestellt) und eine Steuereinheit (nicht dargestellt) beinhalten, die so konfiguriert ist, dass sie einen Vorgang des Speicherzellen-Arrays steuert. Das Speicherzellen-Array kann ein 2D-Speicherzellen-Array oder ein 3D-Speicherzellen-Array beinhalten. Das Speicherzellen-Array kann eine Mehrzahl von Speicherzellen beinhalten. Obwohl jede der Speicherzellen eine Single-Level-Zelle (SLC) ist, die so konfiguriert ist, dass sie 1-Bit-Informationen speichert, kann jede der Speicherzellen eine Zelle sein, die so konfiguriert ist, dass sie Informationen von 2 Bits oder mehr speichert, wie z. B. eine Multi-Level-Zelle (MLC), eine Dreistufenstelle (TLC) und eine Quadruple-Level-Zelle (QLC). Das 3D-Speicherzellen-Array kann eine vertikale NAND-Kette beinhalten, in der mindestens eine Speicherzelle vertikal ausgerichtet ist und sich auf einer anderen Speicherzelle befindet.
  • Die Spannungen VCC, VCCQ und VCCQ2 können als Stromspannungen an die UFS-Vorrichtung 2200 angelegt werden. Die Spannung VCC kann eine Hauptstromversorgungsspannung für die UFS-Vorrichtung 2200 sein und in einem Bereich von 2,4 V bis 3,6 V liegen. Die Spannung VCCQ kann eine Stromversorgungsspannung zur Zuführung einer niedrigen Spannung hauptsächlich an den UFS-Gerätecontroller 2210 sein und in einem Bereich von 1,14 V bis 1,26 V liegen. Die Spannung VCCQ2 kann eine Stromversorgungsspannung zum Zuführen einer Spannung, die niedriger als die Spannung VCC und höher als die Spannung VCCQ ist, hauptsächlich zu einer E/A-Schnittstelle, wie der MIPI M-PHY 2251, sein und in einem Bereich von 1,7 V bis 1,95 V liegen. Die Stromversorgungsspannungen können über den Regler 2260 den jeweiligen Komponenten der UFS-Vorrichtung 2200 zugeführt werden. Der Regler 2260 kann als ein Satz von Einheitsreglern implementiert werden, die jeweils mit einer anderen der oben beschriebenen Stromspannungen verbunden sind.
  • 21 ist eine Querschnittsansicht einer Struktur einer Speichervorrichtung, die gemäß einer Ausführungsform auf eine Speicherungsvorrichtung 10 anwendbar ist.
  • Bezug nehmend auf 21 kann eine Speichervorrichtung 600 eine Chip-zu-Chip-Struktur (C2C) aufweisen. Die C2C-Struktur kann sich auf eine Struktur beziehen, die gebildet wird, indem ein oberer Chip, der einen Zellbereich (CELL) enthält, auf einem ersten Wafer hergestellt wird, ein unterer Chip, der einen Peripherieschaltungsbereich (PERI) enthält, auf einem zweiten Wafer, der vom ersten Wafer getrennt ist, hergestellt wird und dann der obere Chip und der untere Chip miteinander verbunden werden. Dabei kann das Bondverfahren ein Verfahren zur elektrischen Verbindung eines auf einer obersten Metallschicht des oberen Chips gebildeten Bondmetalls und eines auf einer obersten Metallschicht des unteren Chips gebildeten Bondmetalls beinhalten. Wenn die Verbindungsmetalle beispielsweise Kupfer (Cu) beinhalten, kann ein Cu-zu-Cu-Bonden verwendet werden. Andere Implementierungen sind ebenfalls möglich. Die Verbindungsmetalle können zum Beispiel auch aus Aluminium (Al) oder Wolfram (W) gebildet sein.
  • Sowohl der Peripherieschaltungsbereich PERI als auch der Zellbereich CELL der Speichervorrichtung 600 können einen externen Pad-Bonding-Bereich PA, einen Wortleitungs-Bond-Bereich WLBA und einen Bitleitungs-Bonding-Bereich BLBA beinhalten.
  • Der Peripherieschaltungsbereich PERI kann ein erstes Substrat 710, eine isolierende Zwischenschicht 715, eine Mehrzahl von Schaltungselementen 720a, 720b und 720c, die auf dem ersten Substrat 710 gebildet sind, erste Metallschichten 730a, 730b und 730c, die jeweils mit der Mehrzahl von Schaltungselementen 720a, 720b und 720c verbunden sind, und zweite Metallschichten 740a, 740b und 740c beinhalten, die auf den ersten Metallschichten 730a, 730b und 730c gebildet sind. In einer beispielhaften Ausführungsform können die ersten Metallschichten 730a, 730b und 730c aus Wolfram mit einem relativ hohen elektrischen Widerstand gebildet sein, und die zweiten Metallschichten 740a, 740b und 740c können aus Kupfer mit einem relativ niedrigen elektrischen Widerstand gebildet sein.
  • In einer in 21 veranschaulichten Ausführungsform sind zwar nur die ersten Metallschichten 730a, 730b und 730c und die zweiten Metallschichten 740a, 740b und 740c dargestellt und beschrieben, doch ist die Ausführungsform nicht darauf beschränkt, und eine oder mehr zusätzliche Metallschichten können auf den zweiten Metallschichten 740a, 740b und 740c weiter ausgebildet sein. Mindestens ein Teil der einen oder mehreren zusätzlichen Metallschichten, die auf den zweiten Metallschichten 740a, 740b und 740c ausgebildet sind, kann aus Aluminium oder ähnlichem mit einem niedrigeren elektrischen Widerstand als dem von Kupfer, das die zweiten Metallschichten 740a, 740b und 740c bildet, aufweisen.
  • Die isolierende Zwischenschicht 715 kann auf dem ersten Substrat 710 angeordnet sein und die Mehrzahl der Schaltungselemente 720a, 720b und 720c, die ersten Metallschichten 730a, 730b und 730c und die zweiten Metallschichten 740a, 740b und 740c abdecken. Die isolierende Zwischenschicht 715 kann ein isolierendes Material wie Siliziumoxid, Siliziumnitrid oder Ähnliches beinhalten.
  • Auf der zweiten Metallschicht 740b im Wortleitungs-Bonding-Bereich WLBA können untere Bondmetalle 771b und 772b ausgebildet sein. Im Wortleitungsbondbereich WLBA können die unteren Bondmetalle 771b und 772b im Peripherieschaltungsbereich PERI mit den oberen Bondmetallen 871b und 872b des Zellbereichs CELL elektrisch verbunden sein. Die unteren Bondmetalle 771b und 772b und die oberen Bondmetalle 871b und 872b können aus Aluminium, Kupfer, Wolfram oder ähnlichem ausgebildet sein. Ferner können die oberen Verbindungsmetalle 871b und 872b im Zellbereich CELL als erste Metallpads und die unteren Verbindungsmetalle 771b und 772b im Peripherieschaltungsbereich PERI als zweite Metallpads bezeichnet werden.
  • Der Zellbereich CELL kann mindestens einen Speicherblock beinhalten. Der Zellbereich CELL kann ein zweites Substrat 810 und eine übliche Sourceleitung 820 beinhalten. Auf dem zweiten Substrat 810 kann eine Mehrzahl von Wortleitungen 831 bis 838 (das heißt, 830) in einer Richtung (einer Z-Achsen-Richtung) senkrecht zu einer oberen Oberfläche des zweiten Substrats 810 gestapelt sein. Mindestens eine String-Auswahlleitung und mindestens eine Masse-Auswahlleitung können auf bzw. unterhalb der Mehrzahl von Wortleitungen 830 angeordnet sein, und die Mehrzahl von Wortleitungen 830 kann zwischen der mindestens einen String-Auswahlleitung und der mindestens einen Masse-Auswahlleitung angeordnet sein.
  • In dem Bitleitungs-Bonding-Bereich BLBA kann sich eine Kanalstruktur CH in einer Richtung (einer Z-Achsenrichtung) senkrecht zu der oberen Oberfläche des zweiten Substrats 810 erstrecken und die Mehrzahl von Wortleitungen 830, die mindestens eine Zeichenfolgenauswahlleitung und die mindestens eine Erdungsauswahlleitung durchqueren. Die Kanalstruktur CH kann eine Datenspeicherschicht, eine Kanalschicht, eine vergrabene Isolierschicht und dergleichen beinhalten, und die Kanalschicht kann mit einer ersten Metallschicht 850c und einer zweiten Metallschicht 860c elektrisch verbunden sein. Zum Beispiel kann die erste Metallschicht 850c ein Bitleitungskontakt sein, und die zweite Metallschicht 860c kann eine Bitleitung sein. In einer Ausführungsform kann sich die Bitleitung 860c in einer ersten Richtung (Y-Achsenrichtung) erstrecken, die parallel zur oberen Oberfläche des zweiten Substrats 810 verläuft.
  • In einer in 21 veranschaulichten Ausführungsform kann ein Bereich, in dem die Kanalstruktur CH, die Bitleitung 860c und dergleichen angeordnet sind, als der Bitleitungs-Bonding-Bereich BLBA definiert werden. In dem Bitleitungs-Bonding-Bereich BLBA kann die Bitleitung 860c elektrisch mit den Schaltungselementen 720c verbunden sein, die einen Seitenpuffer 893 in dem Peripherieschaltungsbereich PERI bereitstellen. Die Bitleitung 860c kann mit oberen Bondmetallen 871c und 872c im Zellbereich CELL verbunden sein, und die oberen Bondmetalle 871c und 872c können mit unteren Bondmetallen 771c und 772c verbunden sein, die mit den Schaltungselementen 720c des Seitenpuffers 893 verbunden sind. In einer Ausführungsform kann ein Programmierbetrieb basierend auf einer Seiteneinheit ausgeführt werden, da Schreibdaten der Seiteneinheit in dem Seitenpuffer 893 gespeichert sind, und ein Lesevorgang kann basierend auf einer Unterseiteneinheit ausgeführt werden, da Lesedaten der Unterseiteneinheit in dem Seitenpuffer 893 gespeichert sind. Außerdem können beim Programmierbetrieb und beim Lesevorgang die über Bitleitungen übertragenen Dateneinheiten voneinander verschieden sein.
  • Im Bereich der Wortleitungsverbindung WLBA kann sich die Mehrzahl der Wortleitungen 830 in einer zweiten Richtung (einer X-Achsen-Richtung) erstrecken, die parallel zur oberen Oberfläche des zweiten Substrats 810 und senkrecht zur ersten Richtung verläuft, und kann mit einer Mehrzahl von Zell-Kontaktstopfen 841 bis 847 (das heißt, 840) verbunden sein. Die Mehrzahl von Wortleitungen 830 und die Mehrzahl von Zell-Kontaktstopfen 840 können in Pads miteinander verbunden sein, die durch mindestens einen Abschnitt der Mehrzahl von Wortleitungen 830 bereitgestellt werden, die sich in der zweiten Richtung in unterschiedlichen Längen erstrecken. Eine erste Schicht aus Metall 850b und eine zweite Schicht aus Metall 860b können mit einem oberen Abschnitt der Mehrzahl von Kontaktstopfen 840 verbunden sein, die mit der Mehrzahl von Wortleitungen 830 verbunden sind, und zwar nacheinander. Die Mehrzahl der Kontaktstopfen 840 kann mit dem Peripherieschaltungsbereich PERI durch die oberen Verbindungsmetalle 871b und 872b des Zellbereichs CELL und die unteren Verbindungsmetalle 771b und 772b des Peripherieschaltungsbereichs im Bereich der Wortleitungen WLBA verbunden sein.
  • Die Mehrzahl der Kontaktstopfen der Zellen 840 kann elektrisch mit den Schaltungselementen 720b verbunden sein, die einen Zeilendecoder 894 im Peripherieschaltungsbereich PERI bilden. In einer Ausführungsform können die Betriebsspannungen der Schaltungselemente 720b des Zeilendecoders 894 eine andere sein als die Betriebsspannungen der den Seitenpuffer 893 bildenden Schaltungselemente 720c. Beispielsweise können die Betriebsspannungen der Schaltungselemente 720c, die den Seitenpuffer 893 bilden, größer sein als die Betriebsspannungen der Schaltungselemente 720b, die den Zeilendecoder 894 bilden.
  • Ein üblicher Sourceleitungskontaktstopfen 880 kann in dem externen Pad-Bonding-Bereich PA angeordnet sein. Der übliche Sourceleitungskontaktstopfen 880 kann aus einem leitfähigen Material wie einem Metall, einer Metallverbindung, Polysilizium oder ähnlichem gebildet sein und kann mit der üblichen Sourceleitung 820 elektrisch verbunden sein. Eine erste Schicht aus Metall 850a und eine zweite Schicht aus Metall 860a können auf einem oberen Abschnitt des üblichen Sourceleitungskontaktstopfens 880 nacheinander aufgeschichtet sein. Beispielsweise kann ein Bereich, in dem der übliche Sourceleitungskontaktstopfen 880, die erste Metallschicht 850a und die zweite Metallschicht 860a angeordnet sind, als der externe Pad-Bonding-Bereich PA definiert werden.
  • Die Ein-/Ausgabe-Pads 705 und 805 können in dem externen Pad-Bonding-Bereich PA angeordnet sein. Bezug nehmend auf 21 kann eine untere isolierende Schicht 701, die eine untere Oberfläche des ersten Substrats 710 abdeckt, unterhalb des ersten Substrats 710 ausgebildet sein, und ein erstes Eingabe-Ausgabe-Pad 705 kann auf der unteren isolierenden Schicht 701 ausgebildet sein. Das erste Eingabe-Ausgabe-Pad 705 kann mit mindestens einem der Mehrzahl von Schaltungselementen 720a, 720b und 720c, die in dem Peripherieschaltungsbereich PERI angeordnet sind, über einen ersten Eingabe-Ausgabe-Kontaktstopfen 703 verbunden sein und kann von dem ersten Substrat 710 durch die untere isolierende Schicht 701 getrennt sein. Zusätzlich kann eine seitliche isolierende Schicht zwischen dem ersten Eingangs-Ausgangs-Kontaktstopfen 703 und dem ersten Substrat 710 angeordnet sein, um den ersten Eingangs-Ausgangs-Kontaktstopfen 703 und das erste Substrat 710 elektrisch zu trennen.
  • Bezug nehmend auf 21 kann eine obere isolierende Schicht 801, die die obere Oberfläche des zweiten Substrats 810 abdeckt, auf dem zweiten Substrat 810 ausgebildet sein, und ein zweites Eingabe-Ausgabe-Pad 805 kann auf der oberen isolierenden Schicht 801 angeordnet sein. Das zweite Eingabe-Ausgabe-Pad 805 kann mit mindestens einem der Mehrzahl von Schaltungselementen 720a, 720b und 720c, die in dem Peripherieschaltungsbereich PERI angeordnet sind, über einen zweiten Eingabe-Ausgabe-Kontaktstopfen 803 verbunden sein. In der beispielhaften Ausführungsform ist der zweite Eingangs-/Ausgangskontaktstopfen 805 elektrisch mit einem Schaltungselement 720a verbunden.
  • Gemäß einer Ausführungsform kann das zweite Substrat 810 und die übliche Sourceleitung 820 nicht in einem Bereich angeordnet sein, in dem der zweite Eingangs-Ausgangs-Kontaktstopfen 803 angeordnet ist. Außerdem kann das zweite Eingabe-Ausgabe-Pad 805 die Wortleitungen 830 in der dritten Richtung (der Z-Achsenrichtung) nicht überlappen. Bezug nehmend auf 21 kann der zweite Eingabe-Ausgabe-Kontaktstopfen 303 von dem zweiten Substrat 810 in einer Richtung parallel zur oberen Oberfläche des zweiten Substrats 810 getrennt sein und die Zwischenschicht-Isolierschicht 815 des Zellbereichs CELL durchqueren, um mit dem zweiten Eingabe-Ausgabe-Pad 805 verbunden zu sein.
  • Gemäß Ausführungsformen können das erste Eingangs-Ausgangs-Pad 705 und das zweite Eingangs-Ausgangs-Pad 805 selektiv ausgebildet sein. Zum Beispiel kann die Speichervorrichtung 600 nur das erste Eingabe-Ausgabe-Pad 705 beinhalten, das auf dem ersten Substrat 710 angeordnet ist, oder das zweite Eingabe-Ausgabe-Pad 805, das auf dem zweiten Substrat 810 angeordnet ist. Alternativ dazu kann die Speichervorrichtung 600 sowohl das erste Eingabe-Ausgabe-Pad 705 als auch das zweite Eingabe-Ausgabe-Pad 805 beinhalten.
  • Ein Metallmuster, das auf einer obersten Metallschicht bereitgestellt wird, kann als Dummy-Muster bereitgestellt sein, oder die oberste Metallschicht kann fehlen, in jedem von dem externen Pad-Bonding-Bereich PA und dem Bitleitungs-Bonding-Bereich BLBA, die jeweils im Zellbereich CELL und im Peripherieschaltungsbereich PERI enthalten sind.
  • In dem externen Pad-Bonding-Bereich PA kann die Speichervorrichtung 600 in einer obersten Metallschicht des Peripherieschaltungsbereichs PERI ein unteres Metallmuster 773a beinhalten, das einem oberen Metallmuster 872a entspricht, das in einer obersten Metallschicht des Zellbereichs CELL gebildet ist, und das dieselbe Querschnittsgestalt wie das obere Metallmuster 872a des Zellbereichs CELL aufweist, so dass es miteinander verbunden ist. Im Peripherieschaltungsbereich PERI kann das untere Metallmuster 773a, das in der obersten Metallschicht des Peripherieschaltungsbereichs PERI ausgebildet ist, nicht mit einer Verbindung verbunden sein. In ähnlicher Weise kann in dem externen Pad-Bonding-Bereich PA ein oberes Metallmuster 872a, das dem in einer obersten Metallschicht des Peripherieschaltungsbereichs PERI gebildeten unteren Metallmuster 773a entspricht und die gleiche Gestalt wie ein unteres Metallmuster 773a des Peripherieschaltungsbereichs PERI aufweist, in einer obersten Metallschicht des Zellbereichs CELL ausgebildet sein.
  • Die unteren Bondmetalle 771b und 772b können auf der zweiten Metallschicht 740b im Wortleitungs-Bonding-Bereich WLBA ausgebildet sein. Im Wortleitungs-Bonding-Bereich WLBA können die unteren Bondmetalle 771b und 772b des Peripherieschaltungsbereichs PERI mit den oberen Bondmetallen 871b und 872b des Zellbereichs CELL durch ein Cu-zu-Cu-Bonden elektrisch verbunden sein.
  • Ferner kann im Bitleitungs-Bonding-Bereich BLBA ein oberes Metallmuster 892, das einem in der obersten Metallschicht des Peripherieschaltungsbereichs PERI ausgebildeten unteren Metallmuster 752 entspricht und die gleiche Querschnittsgestalt wie das untere Metallmuster 752 des Peripherieschaltungsbereichs PERI aufweist, in einer obersten Metallschicht des Zellbereichs CELL ausgebildet sein. Ein Kontakt kann nicht auf dem oberen Metallmuster 892 ausgebildet sein, das in der obersten Metallschicht des Zellbereichs CELL ausgebildet ist.
  • In einer beispielhaften Ausführungsform, die einem Metallmuster entspricht, das in einer obersten Metallschicht in einem von dem Zellbereich CELL und dem Peripherieschaltungsbereich PERI ausgebildet ist, kann ein Verstärkungsmetallmuster, das die gleiche Querschnittsgestalt wie das Metallmuster aufweist, in einer obersten Metallschicht in dem anderen von dem Zellbereich CELL und dem Peripherieschaltungsbereich PERI ausgebildet ist. Ein Kontakt kann nicht auf dem verstärkenden Metallmuster ausgebildet sein.
  • 22 ist ein Blockdiagramm, das einen Datensektor 3000 veranschaulicht, an dem eine Speicherungsvorrichtung 10 gemäß einer Ausführungsform angelegt ist.
  • Bezug nehmend auf 22 kann das Datencenter 3000 eine Einrichtung sein, die verschiedene Arten von Stücken von Daten sammelt und Dienstleistungen bereitstellt und als Datenspeicherzentrum bezeichnet wird. Das Datencenter 3000 kann ein System zum Betrieb einer Suchmaschine und einer Datenbank sein, und es kann ein rechnerisches System sein, das von Unternehmen, wie z. B. Banken, oder Regierungsbehörden verwendet wird. Das Datencenter 3000 kann Anwendungsserver 3100 bis 3100n und Speicherserver 3200 bis 3200m beinhalten. Die Anzahl der Anwendungsserver 3100 bis 3100n und die Anzahl der Speicherserver 3200 bis 3200m können gemäß einer Ausführungsform unterschiedlich gewählt werden. Die Anzahl der Anwendungsserver 3100 bis 3100n kann sich von der Anzahl der Speicherserver 3200 bis 3200m unterscheiden.
  • Der Anwendungsserver 3100 oder der Speicherserver 3200 kann mindestens einen der Prozessoren 3110 und 3210 und die Speicher 3120 und 3220 beinhalten. Der Speicherserver 3200 wird nun als Beispiel beschrieben. Der Prozessor 3210 kann alle Vorgänge des Speicherservers 3200 steuern, auf den Speicher 3220 zugreifen und Anweisungen und/oder Daten ausführen, die in den Speicher 3220 geladen wurden. Der Speicher 3220 kann ein synchroner DRAM mit doppelter Datenrate (DDR SDRAM), ein Speicher mit hoher Bandbreite (HBM), ein hybrider Speicherwürfel (HMC), ein Dual-Inline-Speichermodul (DIMM), ein Optane-DIMM oder ein nichtflüchtiges DIMM (NVMDIMM) sein. In einigen Ausführungsformen kann die Anzahl der Prozessoren 3210 und Speicher 3220, die im Speicherserver 3200 enthalten sind, unterschiedlich gewählt werden. In einer Ausführungsform können der Prozessor 3210 und der Speicher 3220 ein Prozessor-Speicher-Paar bereitstellen. In einer Ausführungsform kann die Anzahl der Prozessoren 3210 anders sein als die Anzahl der Speicher 3220. Der Prozessor 3210 kann einen Single-Core-Prozessor oder einen Multi-Core-Prozessor beinhalten. Die obige Beschreibung des Speicherservers 3200 kann in ähnlicher Weise auf den Anwendungsserver 3100 angelegt werden. In einigen Ausführungsformen kann der Anwendungsserver 3100 keine Speicherungsvorrichtung 3150 beinhalten. Der Speicherserver 3200 kann mindestens eine Speicherungsvorrichtung 3250 beinhalten. Die Anzahl der Speicherungsvorrichtungen 3250, die in dem Speicherserver 3200 enthalten sind, kann gemäß einer Ausführungsform unterschiedlich gewählt werden.
  • Die Anwendungsserver 3100 bis 3100n können mit den Speicherservern 3200 bis 3200m über ein Netzwerk 3300 kommunizieren. Das Netzwerk 3300 kann durch Verwenden eines Faserkanals (FC) oder Ethernet implementiert werden. In diesem Fall kann der FC ein Medium sein, das für die Übertragung von Daten mit relativ hoher Geschwindigkeit verwendet wird und einen optischen Schalter mit hoher Leistung und hoher Verfügbarkeit verwendet. Die Speicherserver 3200 bis 3200m können je nach Zugriffsverfahren des Netzwerks 3300 als Dateispeicher, Blockspeicher oder Objektspeicher bereitgestellt werden.
  • In einer Ausführungsform kann das Netzwerk 3300 ein speicherdezidiertes Netzwerk sein, wie z. B. ein Storage Area Network (SAN). Beispielsweise kann das SAN ein FC-SAN sein, das ein FC-Netzwerk verwendet und gemäß einem FC-Protokoll (FCP) implementiert ist. Ein weiteres Beispiel ist ein Internetprotokoll (IP)-SAN, das ein TCP/IP-Netzwerk verwendet und nach einem SCSI-over-TCP/IP- oder Internet-SCSI-Protokoll (iSCSI) implementiert ist. In einer anderen Ausführungsform kann das Netzwerk 3300 ein allgemeines Netzwerk sein, z. B. ein TCP/IP-Netzwerk. Beispielsweise kann das Netzwerk 3300 gemäß einem Protokoll wie FC over Ethernet (FCoE), Network Attached Storage (NAS) und NVMe over Fabrics (NVMe-oF) implementiert sein.
  • Nachfolgend werden hauptsächlich der Anwendungsserver 3100 und der Speicherserver 3200 beschrieben. Eine Beschreibung des Anwendungsservers 3100 kann auf einen anderen Anwendungsserver 3100n angelegt werden, und eine Beschreibung des Speicherservers 3200 kann auf einen anderen Speicherserver 3200m angelegt werden.
  • Der Anwendungsserver 3100 kann Daten, die von einem Benutzer oder einem Client zur Speicherung angefordert werden, über das Netzwerk 3300 in einem der Speicherserver 3200 bis 3200m speichern. Auch kann der Anwendungsserver 3100 Daten, die vom Benutzer oder dem Client zum Lesen angefordert werden, über das Netzwerk 3300 von einem der Speicherserver 3200 bis 3200m erhalten. Der Anwendungsserver 3100 kann zum Beispiel als Webserver oder als Datenbankmanagementsystem (DBMS) implementiert sein.
  • Der Anwendungsserver 3100 kann über das Netzwerk 3300 auf einen Speicher 3120n oder eine Speicherungsvorrichtung 3150n zugreifen, die in einem anderen Anwendungsserver 3100n enthalten ist. Alternativ kann der Anwendungsserver 3100 über das Netzwerk 3300 auf Speicher 3220 bis 3220m oder Speicherungsvorrichtungen 3250 bis 3250m zugreifen, die in den Speicherservern 3200 bis 3200m enthalten sind. So kann der Anwendungsserver 3100 verschiedene Vorgänge mit den in den Anwendungsservern 3100 bis 3100n und/oder den Speicherservern 3200 bis 3200m gespeicherten Daten durchführen. Zum Beispiel kann der Anwendungsserver 3100 einen Befehl zum Bewegen oder Kopieren von Daten zwischen den Anwendungsservern 3100 bis 3100n und/oder den Speicherservern 3200 bis 3200m ausführen. In diesem Fall können die Daten von den Speicherungsvorrichtungen 3250 bis 3250m der Speicherserver 3200 bis 3200m direkt oder über die Speicher 3220 bis 3220m der Speicherserver 3200 bis 3200m in die Speicher 3120 bis 3120n des Anwendungsservers 3100 bis 3100n bewegt werden. Die über das Netz 3300 bewegten Daten können aus Sicherheits- oder Datenschutzgründen verschlüsselt sein.
  • Der Speicherserver 3200 wird nun als Beispiel beschrieben. Eine Schnittstelle 3254 kann eine physische Verbindung zwischen einem Prozessor 3210 und einem Controller 3251 und eine physische Verbindung zwischen einer Netzwerkschnittstellenkarte (NIC) 3240 und dem Controller 3251 bereitstellen. Die Schnittstelle 3254 kann beispielsweise unter Verwendung eines Direct Attached Storage (DAS) Schemas implementiert werden, bei dem die Speicherungsvorrichtung 3250 direkt mit einem dedizierten Kabel verbunden ist. Beispielsweise kann die Schnittstelle 3254 unter Verwendung verschiedener Schnittstellenschemata implementiert werden, wie ATA, SATA, e-SATA, SCSI, SAS, PCI, PCIe, NVMe, IEEE 1394, eine USB-Schnittstelle, eine SD-Karten-Schnittstelle, eine MMC-Schnittstelle, eine eMMC-Schnittstelle, eine UFS-Schnittstelle, eine eUFS-Schnittstelle und eine CF-Karten-Schnittstelle.
  • Der Speicherserver 3200 kann ferner einen Schalter 3230 und den NIC (Network InterConnect) 3240 beinhalten. Der Schalter 3230 kann selektiv den Prozessor 3210 mit der Speicherungsvorrichtung 3250 verbinden oder selektiv den NIC 3240 mit der Speicherungsvorrichtung 3250 über die Steuerung des Prozessors 3210 verbinden.
  • In einer Ausführungsform kann die Netzwerkschnittstellenkarte 3240 eine Netzwerkschnittstellenkarte und einen Netzwerkadapter beinhalten. Die NIC 3240 kann mit dem Netzwerk 3300 über eine verkabelte Schnittstelle, eine drahtlose Schnittstelle, eine Bluetooth-Schnittstelle oder eine optische Schnittstelle verbunden sein. Der NIC 3240 kann einen internen Speicher, einen digitalen Signalprozessor (DSP) und eine Host-Bus-Schnittstelle beinhalten und ist über die Host-Bus-Schnittstelle mit dem Prozessor 3210 und/oder dem Schalter 3230 verbunden. Die Host-Bus-Schnittstelle kann als eines der vorgenannten Beispiele für die Schnittstelle 3254 implementiert werden. In einer Ausführungsform kann der NIC 3240 mindestens in den Prozessor 3210, den Schalter 3230 und die Speicherungsvorrichtung 3250 integriert sein.
  • In den Speicherservern 3200 bis 3200m oder den Anwendungsservern 3100 bis 3100n kann ein Prozessor einen Befehl an die Speicherungsvorrichtungen 3150 bis 3150n und 3250 bis 3250m oder die Speicher 3120 bis 3120n und 3220 bis 3220m senden und Daten programmieren oder lesen. In diesem Fall können die Daten Daten sein, deren Fehler durch eine ECC-Engine korrigiert werden. Die Daten können Daten sein, an denen ein Datenbus-Inversionsbetrieb (DBI) oder ein Datenmaskierungsbetrieb (DM) betrieben wird, und können zyklische Redundanzcode-Informationen (CRC) beinhalten. Die Daten können aus Sicherheits- oder Datenschutzgründen verschlüsselt sein.
  • Die Speicherungsvorrichtungen 3150 bis 3150n und 3250 bis 3250m können in Reaktion auf einen vom Prozessor empfangenen Lesebefehl ein Steuersignal und ein Befehls-/Adressensignal an die NAND-Flash-Speichervorrichtungen 3252 bis 3252m übertragen. Wenn also Daten aus den NAND-Flash-Speichervorrichtungen 3252 bis 3252m gelesen werden, kann ein Lesefreigabesignal (RE) als Steuersignal für die Datenausgabe beaufschlagt werden, so dass die Daten an einen DQ-Bus ausgegeben werden können. Unter Verwendung des RE-Signals kann ein Daten-Strobe-Signal DQS erzeugt werden. Der Befehl und das Adressensignal können in einem Seitenpuffer in Abhängigkeit von einer steigenden oder fallenden Flanke eines Freigabesignals (WE) zwischengespeichert werden.
  • Der Controller 3251 kann alle Vorgänge der Speicherungsvorrichtung 3250 steuern. In einer Ausführungsform kann der Controller 3251 SRAM beinhalten. Der Controller 3251 kann in Reaktion auf einen Schreibbefehl Daten in die NAND-Flash Speichervorrichtung 3252 schreiben oder in Reaktion auf einen Lesebefehl Daten aus der NAND-Flash Speichervorrichtung 3252 lesen. Der Schreibbefehl und/oder der Lesebefehl kann beispielsweise vom Prozessor 3210 des Speicherservers 3200, dem Prozessor 3210m eines anderen Speicherservers 3200m oder den Prozessoren 3110 und 3110n der Anwendungsserver 3100 und 3100n bereitgestellt werden. Der DRAM 3253 kann vorübergehend Daten speichern (oder puffern), die in die NAND-Flash-Speichervorrichtung 3252 geschrieben werden sollen, oder Daten, die aus der NAND-Flash-Speichervorrichtung 3252 gelesen werden. Im DRAM 3253 können auch Metadaten gespeichert werden. Bei den Metadaten kann es sich um Benutzerdaten oder um Daten handeln, die vom Controller 3251 zur Verwaltung der NAND-Flash-Speichervorrichtung 3252 erzeugt werden. Die Speicherungsvorrichtung 3250 kann ein Secure Element (SE) für Sicherheit oder Datenschutz beinhalten.
  • Während das erfindungsgemäße Konzept insbesondere unter Bezugnahme auf Ausführungsformen davon gezeigt und beschrieben wurde, versteht es sich, dass verschiedene Änderungen in Form und Details darin gefertigt werden können, ohne von dem Gedanken und dem Umfang der folgenden Ansprüche und ihrer Äquivalente abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • KR 1020200185208 [0001]
    • WO 7679133 [0028]
    • WO 8553466 [0028]
    • WO 8654587 [0028]
    • WO 8559235 [0028]
    • US 2011/0233648 [0028, 0061]
    • US 7679133 [0061]
    • US 8553466 [0061]
    • US 8654587 [0061]
    • US 8559235 [0061]

Claims (20)

  1. Betriebsverfahren eines Speichercontrollers, der konfiguriert ist, um eine Speichervorrichtung zu steuern, die Speicherblöcke beinhaltet, die jeweils eine Mehrzahl von Seiten speichern, wobei das Betriebsverfahren beinhaltet: Übertragen eines Programmierbefehls an die Speichervorrichtung, basierend auf einer Schreibanforderung von einem Host; Aktualisieren einer gültigen Seitenbitmap, die die Gültigkeit einer Mehrzahl von Seiten der Speicherblöcke darstellt, basierend auf einer von der Speichervorrichtung empfangenen gültigen Seiteninformation; Berechnen eines Fragmentierungsverhältnisses, das einen Segmentierungsgrad zwischen mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblocks unter den Speicherblöcken darstellt, basierend auf der gültigen Seitenbitmap; Bestimmen von Quellenblöcken unter den Speicherblöcken in aufsteigender Reihenfolge der Fragmentierungsverhältnisse; und Durchführen einer Speicherbereinigung an den Quellenblöcken.
  2. Betriebsverfahren nach Anspruch 1, wobei das Berechnen der Fragmentierungsverhältnisse das Gruppieren einer Mehrzahl von Seiten aufweist, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen.
  3. Betriebsverfahren nach Anspruch 2, wobei das Fragmentierungsverhältnis basierend auf der Anzahl der gültigen Seitengruppen unter den gruppierten Seiten der gültigen Seitenbitmap berechnet wird.
  4. Betriebsverfahren nach Anspruch 1, wobei in der gültigen Seitenbitmap eine gültige Seite der Mehrzahl von Seiten als Bit „1“ ausgedrückt wird und eine ungültige Seite der Mehrzahl von Seiten als Bit „0“ ausgedrückt wird, oder umgekehrt.
  5. Betriebsverfahren nach Anspruch 1, wobei das Bestimmen der Quellenblöcke aufweist: Auswählen des gegebenen Speicherblocks als einen ersten Quellenblock der Quellenblöcke, wenn ein gegebener Speicherblock aus einer Menge von Speicherblöcken der einzige Speicherblock ist, der ein minimales Fragmentierungsverhältnis aufweist.
  6. Betriebsverfahren nach Anspruch 1, wobei das Bestimmen der Quellenblöcke aufweist: Prüfen, ob es unter einer Menge von Speicherblöcken nur einen einzigen Speicherblock gibt, der ein minimales Fragmentierungsverhältnis aufweist; und wenn es nicht nur einen Speicherblock mit dem minimalen Fragmentierungsverhältnis gibt, Auswählen eines Speicherblocks, der einen niedrigen Fragmentierungsgrad aufweist, der basierend auf einer Bitkontinuität eines Speicherblocks der gültigen Seitenbitmap berechnet wird, als ein erster Quellenblock des Quellenblöcke.
  7. Betriebsverfahren nach Anspruch 6, wobei der Fragmentierungsgrad der Anzahl ungültiger Seitengruppen und gültiger Seitengruppen entspricht, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen.
  8. Betriebsverfahren nach Anspruch 1, wobei das Aktualisieren der gültigen Seitenbitmap aufweist: Empfangen der gültigen Seiteninformation, die angibt, ob eine Seite, die einem Speicherplatz mit darin geschriebenen Daten entspricht, gültig ist; und Aktualisieren der gültigen Seiteninformation in der gültigen Seitenbitmap.
  9. Betriebsverfahren einer Speicherungsvorrichtung, die eine Speichervorrichtung, die Speicherblöcke beinhaltet, die jeweils eine Mehrzahl von Seiten speichern, und einen Speichercontroller aufweist, der zum Steuern der Speichervorrichtung konfiguriert ist, wobei das Betriebsverfahren aufweist: Ausführen von Vorgängen durch den Speichercontroller, die Folgendes aufweisen: Empfangen von Daten und einer Schreibanforderung von einem Host; Übermitteln eines Programmierbefehls an die Speichervorrichtung; Schreiben der Daten in einen Speicherplatz durch Verwenden der Speichervorrichtung und Erzeugen gültiger Seiteninformation, die angibt, ob eine Seite, die dem Speicherplatz mit den darin geschriebenen Daten entspricht, gültig ist; ferner Ausführen von Vorgängen durch den Speichercontroller, die aufweisen: Aktualisieren einer gültigen Seitenbitmap, die die Gültigkeit der Mehrzahl von Seiten darstellt, basierend auf einer von der Speichervorrichtung empfangenen gültigen Seiteninformation; Berechnen eines Fragmentierungsverhältnisses, das einen Segmentierungsgrad zwischen mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblockes unter den Speicherblöcken darstellt, basierend auf der gültigen Seitenbitmap; und Durchführen einer Speicherbereinigung basierend auf dem Fragmentierungsverhältnis.
  10. Betriebsverfahren nach Anspruch 9, wobei das Berechnen des Fragmentierungsverhältnisses das Gruppieren einer Mehrzahl von Seiten aufweist, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen.
  11. Betriebsverfahren nach Anspruch 9, wobei das Fragmentierungsverhältnis basierend auf der Anzahl der gültigen Seitengruppen unter den gruppierten Seiten der gültigen Seitenbitmap berechnet wird.
  12. Betriebsverfahren nach Anspruch 9, wobei das Durchführen der Speicherbereinigung aufweist: Ausrichten von Fragmentierungsverhältnissen in aufsteigender Reihenfolge der Größenordnungen; und Bestimmen eines Quellenblocks in aufsteigender Reihenfolge der Fragmentierungsverhältnisse.
  13. Betriebsverfahren nach Anspruch 9, wobei das Durchführen der Speicherbereinigung aufweist: Festlegen eines Speicherblockes, der ein niedriges Fragmentierungsverhältnis aufweist, als Quellenblock; Kopieren von im Quellenblock gespeicherten Daten auf einen Zielblock; und Löschen des Quellenblocks.
  14. Betriebsverfahren nach Anspruch 9, wobei das Durchführen der Speicherbereinigung aufweist: Erkennen eines gegebenen Speicherblockes, der ein niedrigstes Fragmentierungsverhältnis aufweist; und Prüfen, ob der gegebene Speicherblock mit dem niedrigsten Fragmentierungsverhältnis der einzige Speicherblock unter einer Menge von Speicherblöcken ist, der das niedrigste Fragmentierungsverhältnis aufweist.
  15. Betriebsverfahren nach Anspruch 14, ferner aufweisend das Auswählen des gegebenen Speicherblocks, der das niedrigste Fragmentierungsverhältnis aufweist, als Quellenblock, wenn der gegebene Speicherblock der einzige Speicherblock aus der Menge der Speicherblöcke ist, der das niedrigste Fragmentierungsverhältnis aufweist.
  16. Betriebsverfahren nach Anspruch 14, ferner aufweisend, wenn es nicht nur einen Speicherblock mit dem minimalen Fragmentierungsverhältnis gibt, Auswählen eines Speicherblocks, der einen niedrigen Fragmentierungsgrad aufweist, berechnet basierend auf einer Bitkontinuität eines Speicherblocks der gültigen Seitenbitmap, als Quellenblock.
  17. Betriebsverfahren nach Anspruch 16, wobei der Fragmentierungsgrad der Anzahl ungültiger Seitengruppen und gültiger Seitengruppen entspricht, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen.
  18. Betriebsverfahren nach Anspruch 17, wobei die gültige Seitengruppe eine Menge von Seiten ist, bei denen die Gültigkeit einer Seite mit „1“ ausgedrückt wird und die aneinandergrenzend sind, und die ungültige Seitengruppe eine Menge von Seiten ist, bei denen die Gültigkeit einer Seite als „0“ ausgedrückt wird und die aneinandergrenzend sind.
  19. Speicherungsvorrichtung, aufweisend: eine Speichervorrichtung, die eine Mehrzahl von Speicherblöcken beinhaltet, jeweils zum Speichern mehrerer Seiten, wobei die Speichervorrichtung konfiguriert ist, um gültige Seiteninformation über die Mehrzahl von Speicherblöcken bereitzustellen; und einen Speichercontroller, der konfiguriert ist, um ein Fragmentierungsverhältnis zu berechnen, das einen Segmentierungsgrad zwischen mindestens einer gültigen Seite und mindestens einer ungültigen Seite eines Speicherblockes der Mehrzahl von Speicherblöcken basierend auf der gültigen Seiteninformation darstellt, und um Daten innerhalb der Mehrzahl von Speicherblöcken, basierend auf dem Fragmentierungsverhältnis in einem Prozess der Speicherbereinigung, neu anzuordnen und zu löschen.
  20. Speicherungsvorrichtung nach Anspruch 19, wobei der Speichercontroller konfiguriert ist, um: wenn das Fragmentierungsverhältnis unter einer Menge von Speicherblöcken gleich ist, die Speicherbereinigung basierend auf der Anzahl von gültigen Seitengruppen und ungültigen Seitengruppen unter einer Mehrzahl von Seiten, die aneinandergrenzend sind und die gleiche Gültigkeitsbedingung aufweisen, durchzuführen.
DE102021130730.9A 2020-12-28 2021-11-24 Speichercontroller und Speicherungsvorrichtung, die jeweils ein Fragmentierungsverhältnis verwenden, und Betriebsverfahren dafür Pending DE102021130730A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0185208 2020-12-28
KR1020200185208A KR20220093982A (ko) 2020-12-28 2020-12-28 파편화율을 이용하는 메모리 컨트롤러, 및 스토리지 장치 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
DE102021130730A1 true DE102021130730A1 (de) 2022-06-30

Family

ID=81972513

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021130730.9A Pending DE102021130730A1 (de) 2020-12-28 2021-11-24 Speichercontroller und Speicherungsvorrichtung, die jeweils ein Fragmentierungsverhältnis verwenden, und Betriebsverfahren dafür

Country Status (4)

Country Link
US (2) US11698855B2 (de)
KR (1) KR20220093982A (de)
CN (1) CN114691535A (de)
DE (1) DE102021130730A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240036739A1 (en) * 2022-07-26 2024-02-01 Silicon Motion, Inc. Method and apparatus for performing data fragmentation reduction control of memory device in predetermined communications architecture with aid of fragmentation information detection, and associated computer-readable medium
CN116049021B (zh) * 2022-08-29 2023-10-20 荣耀终端有限公司 存储空间管理方法、电子设备及计算机可读存储介质
CN117093515A (zh) * 2023-10-09 2023-11-21 荣耀终端有限公司 存储器、终端设备及存储系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7679133B2 (en) 2007-11-08 2010-03-16 Samsung Electronics Co., Ltd. Vertical-type non-volatile memory devices
US20110233648A1 (en) 2010-03-26 2011-09-29 Samsung Electronics Co., Ltd. Three-Dimensional Semiconductor Memory Devices And Methods Of Fabricating The Same
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US8559235B2 (en) 2010-08-26 2013-10-15 Samsung Electronics Co., Ltd. Nonvolatile memory device, operating method thereof and memory system including the same
US8654587B2 (en) 2010-08-11 2014-02-18 Samsung Electronics Co., Ltd. Nonvolatile memory devices, channel boosting methods thereof, programming methods thereof, and memory systems including the same

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799561B2 (en) 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US9501393B2 (en) * 2014-01-27 2016-11-22 Western Digital Technologies, Inc. Data storage system garbage collection based on at least one attribute
KR102317599B1 (ko) 2014-05-26 2021-10-26 삼성전자 주식회사 전자 장치 및 전자 장치의 단편화 분석 방법
KR101501717B1 (ko) 2014-10-29 2015-03-12 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
US10353814B2 (en) 2016-02-08 2019-07-16 Wipro Limited Method and system for optimized garbage collection in a storage device
KR102570367B1 (ko) * 2016-04-21 2023-08-28 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
US10621084B2 (en) 2018-03-05 2020-04-14 International Business Machines Corporation Efficient garbage collection in the presence of block dependencies
KR102659036B1 (ko) 2018-07-11 2024-04-22 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200033459A (ko) * 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10838859B2 (en) 2018-09-25 2020-11-17 Western Digital Technologies, Inc. Recency based victim block selection for garbage collection in a solid state device (SSD)
KR102645142B1 (ko) 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들
KR20210092988A (ko) * 2020-01-17 2021-07-27 에스케이하이닉스 주식회사 가비지 콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7679133B2 (en) 2007-11-08 2010-03-16 Samsung Electronics Co., Ltd. Vertical-type non-volatile memory devices
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US20110233648A1 (en) 2010-03-26 2011-09-29 Samsung Electronics Co., Ltd. Three-Dimensional Semiconductor Memory Devices And Methods Of Fabricating The Same
US8654587B2 (en) 2010-08-11 2014-02-18 Samsung Electronics Co., Ltd. Nonvolatile memory devices, channel boosting methods thereof, programming methods thereof, and memory systems including the same
US8559235B2 (en) 2010-08-26 2013-10-15 Samsung Electronics Co., Ltd. Nonvolatile memory device, operating method thereof and memory system including the same

Also Published As

Publication number Publication date
CN114691535A (zh) 2022-07-01
US20230333979A1 (en) 2023-10-19
US11698855B2 (en) 2023-07-11
KR20220093982A (ko) 2022-07-05
US20220206938A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
CN107193486B (zh) 数据存储设备和包括该数据存储设备的数据处理系统
US10664171B2 (en) Memory systems and methods including training, data organizing, and/or shadowing
DE102021130730A1 (de) Speichercontroller und Speicherungsvorrichtung, die jeweils ein Fragmentierungsverhältnis verwenden, und Betriebsverfahren dafür
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE102009026178A1 (de) Mehrstufiger Controller mit intelligentem Speicher-Transfer-Manager zum Verschachteln mehrfacher Ein-Chip-Flash-Speichereinheiten
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
US20210248069A1 (en) Storage device and operating method of memory controller
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102021118940A1 (de) Speichersteuerung und speichereinrichtung mit derselben
DE102018123494A1 (de) Speichervorrichtung, die zum aktualisieren einesfeldprogrammierbaren gate-arrays ausgestaltetist, und betriebsverfahren dafür
DE102021123711A1 (de) Testverfahren von Speichervorrichtung implementiert in Multi-Chip-Packages (MCP) und Herstellungsverfahren eines MCP umfassend das Testverfahren
DE112020005395T5 (de) Kapazitätserweiterung für speicher-untersysteme
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102017120971A1 (de) Pipelineverzögerungsdetektion während des Decodierens durch eine Datenspeichereinrichtung
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
US10942667B2 (en) Storage device having variable erase unit size and storage system including the same
US20230350578A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
DE112020006053T5 (de) Aktiver eingabe/ausgabe-expander eines speicher-untersystems
DE102021119290A1 (de) Speichereinrichtung zum Ausführen von Verarbeitungscode und Betriebsverfahren dieser Speichereinrichtung
DE102022004129A1 (de) Zurückkopier-lösch-befehl zur durchführung einer scan- und leseoperation in einer speichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed