DE112012005222T5 - Halbleiter-Datenspeicherverwaltung - Google Patents

Halbleiter-Datenspeicherverwaltung Download PDF

Info

Publication number
DE112012005222T5
DE112012005222T5 DE112012005222.6T DE112012005222T DE112012005222T5 DE 112012005222 T5 DE112012005222 T5 DE 112012005222T5 DE 112012005222 T DE112012005222 T DE 112012005222T DE 112012005222 T5 DE112012005222 T5 DE 112012005222T5
Authority
DE
Germany
Prior art keywords
address
data storage
physical
semiconductor
logical address
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.)
Ceased
Application number
DE112012005222.6T
Other languages
English (en)
Inventor
c/o IBM Corporation Jagmohan Ashish
c/o IBM Corporation Franceschini Michele Martino
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012005222T5 publication Critical patent/DE112012005222T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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
    • 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
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/7211Wear leveling

Abstract

Halbleiter-Datenspeicherverwaltung für ein System, das eine Hauptplatine enthält, wobei eine von der Hauptplatine getrennte Halbleiter-Datenspeicherplatine bereitgestellt wird. Die Halbleiter-Datenspeicherplatine enthält eine Halbleiter-Arbeitsspeichereinheit und Halbleiter-Datenspeichereinheiten. Das System ist so konfiguriert, dass es ein Verfahren durchführt, das eine Übereinstimmung beinhaltet, die von einem auf der Hauptplatine befindlichen Software-Modul zwischen einer ersten logischen Adresse und einer ersten physischen Adresse in den Halbleiter-Datenspeichereinheiten hergestellt wird. Die Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse wird an einer Position in der Halbleiter-Arbeitsspeichereinheit gespeichert. Das Verfahren beinhaltet ferner ein Übersetzen der ersten logischen Adresse in die erste physische Adresse. Die Übersetzung wird von einem Adressübersetzermodul durchgeführt, das sich auf der Halbleiter-Datenspeicherplatine befindet, und beruht auf der zuvor hergestellten Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Computerdatenspeicher und insbesondere auf Halbleiter-Datenspeicherverwaltung.
  • Halbleiterlaufwerke (solid-state drives, SSDs) sind Datenspeichereinheiten, die Halbleiter-Arbeitsspeicher zum Speichern von persistenten Daten verwenden. SSDs sind zumeist über eine Hochgeschwindigkeitsverbindung mit einem Host-Computer verbunden. SSDs führen in der Regel eine Form der Verwaltung des Datenspeichermediums aus, d. h. der zugrunde liegenden Halbleiter-Datenspeichereinheiten. Eine solche Verwaltung beinhaltet in der Regel ein Übersetzen von einem logischen Adressraum in einen physischen Adressraum. Viele SSDs verwenden einen Flash-Arbeitsspeicher auf der Grundlage von ”not-and” (nicht-und) (NAND), der blockweise gelöscht werden muss, bevor neue Daten hineingeschrieben werden. Adressübersetzung wird aufgrund der Schwierigkeit von Löschoperationen häufig bei NAND-Flash-Einheiten verwendet.
  • Bei einigen aktuellen Systemen, die NAND-Flash-Einheiten verwenden, wird die gesamte Verwaltungsfunktionalität auf dem Host-Computer durchgeführt. Bei diesen Systemen wird die Adressübersetzungstabelle in dem Hauptspeicher des Host-Computers untergebracht, so dass der Host-Computer während einer Leseoperation die physische Adresse ermittelt, die der logischen Leseadresse entspricht (Adressübersetzung). Der Host-Computer bestimmt während einer Schreiboperation die physische Schreibadresse, auf die die Daten geschrieben werden (physische Datenplatzierung), und protokolliert die Übereinstimmung zwischen logischer und physischer Adresse in der Adressübersetzungstabelle. Ein Nachteil dieses Ansatzes besteht darin, dass Rechenzyklen und Hauptspeicher beim Host aufgewendet werden müssen, um die Adressübersetzung durchzuführen. Der Ansatz eignet sich somit gut für Computersysteme mit großem dynamischem Arbeitsspeicher (DRAM) und vielen Verarbeitungsfunktionen, und er eignet sich weniger für kostengünstige Systeme mit begrenztem DRAM und begrenzten Verarbeitungsfunktionen oder für große datenorientierte Systeme mit hohen Verhältnissen von Datenspeicher zu Systemspeicher.
  • Andere aktuelle Systeme bringen die gesamte Verwaltungsfunktionalität auf der physischen SSD-Platine unter. In diesem Fall führt das SSD sowohl die Datenplatzierung als auch die Adressübersetzung durch. Ein Nachteil dieses Ansatzes besteht darin, dass das Kosten-Leistungs-Verhältnis schlecht ist, da der Host-Prozessor nicht genutzt wird und stattdessen ein anderer Prozessor in das SSD integriert werden muss.
  • KURZDARSTELLUNG
  • Bei einer Ausführungsform handelt es sich um ein System, das eine Hauptplatine und eine von der Hauptplatine getrennte Halbleiter-Datenspeicherplatine enthält. Die Hauptplatine ist über einen Schnittstellenbus mit der Halbleiter-Datenspeicherplatine verbunden. Die Halbleiter-Datenspeicherplatine beinhaltet eine Halbleiter-Arbeitsspeichereinheit und Halbleiter-Datenspeichereinheiten. Die Halbleiter-Datenspeichereinheiten beinhalten eine Vielzahl von physischen Speicherpositionen, die von physischen Adressen identifiziert werden. Das System ist so konfiguriert, dass es ein Verfahren durchführt, welches eine Herstellung einer Übereinstimmung zwischen einer ersten logischen Adresse und einer ersten physischen Adresse in den Halbleiter-Datenspeichereinheiten beinhaltet. Das Herstellen der Übereinstimmung wird von einem Software-Modul durchgeführt, das sich auf der Hauptplatine befindet. Die Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse wird an einer Position in der Halbleiter-Arbeitsspeichereinheit gespeichert, die sich auf der Halbleiter-Datenspeicherplatine befindet. Das Verfahren beinhaltet ferner ein Übersetzen der ersten logischen Adresse in die erste physische Adresse. Die Übersetzung wird von einem Adressübersetzermodul durchgeführt, das sich auf der Halbleiter-Datenspeicherplatine befindet, und beruht auf der zuvor hergestellten Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse.
  • Andere Ausführungsformen beinhalten ein Verfahren und ein Computerprogrammprodukt zum Herstellen einer Übereinstimmung zwischen einer ersten logischen Adresse und einer ersten physischen Adresse in Halbleiter-Datenspeichereinheiten, die sich auf einer Halbleiter-Datenspeicherplatine befinden. Die Halbleiter-Datenspeichereinheiten beinhalten eine Vielzahl von physischen Speicherpositionen, die von physischen Adressen identifiziert werden, und das Herstellen einer Übereinstimmung wird von einem Software-Modul durchgeführt, das sich auf einer Hauptplatine befindet, die von der Halbleiter-Datenspeicherplatine getrennt ist. Die Hauptplatine ist über einen Schnittstellenbus mit der Halbleiter-Datenspeicherplatine verbunden. Die Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse wird an einer Position in einer Halbleiter-Arbeitsspeichereinheit gespeichert, auf die ein Adressübersetzermodul zugreifen kann, das sich auf der Halbleiter-Datenspeicherplatine befindet. Die Halbleiter-Arbeitsspeichereinheit befindet sich auf der Halbleiter-Datenspeicherplatine. Die erste logische Adresse wird auf der Grundlage der zuvor hergestellten Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse von dem Adressübersetzermodul in die erste physische Adresse übersetzt.
  • Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung umgesetzt. Weitere Ausführungsformen und Aspekte der Erfindung werden hierin im Einzelnen beschrieben und als Teil der beanspruchten Erfindung angesehen. Zu einem besseren Verständnis der Erfindung mit den Vorteilen und Merkmalen sei auf die Beschreibung und die Zeichnungen verwiesen.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Der Gegenstand, der als die Erfindung betrachtet wird, wird in den Ansprüchen am Ende der Beschreibung besonders hervorgehoben und ausdrücklich beansprucht. Das Vorstehende und andere Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen, in denen:
  • 1 ein Schaubild eines Systems einer Flash-Steuereinheit gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 2 ein Schaubild eines Prozesses zum Durchführen einer Flash-Leseoperation gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 3 ein Schaubild eines Prozesses zum Durchführen einer Flash-Schreiboperation gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 4 ein Schaubild eines Prozesses zum Durchführen einer Flash-Speicherbereinigungsoperation gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
  • 5 ein Schaubild eines Prozesses zum Durchführen einer Flash-Operation zum Lesen einer physischen Adresse gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht; und
  • 6 ein Schaubild eines Prozesses zum Durchführen einer Flash-Löschoperation gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Erfindung stellen Lösungen zur Verwaltung von hochleistungsfähigen Halbleiterlaufwerken (SSD) für kostengünstige oder große datenorientierte Computersysteme bereit. Ausführungsformen beinhalten insbesondere eine innovative Aufteilung der Komplexität einer Flash-Arbeitsspeicherverwaltung zwischen einem Host-System und einer SSD-Platine, die hierin auch als Hardware-Modul oder Halbleiter-Datenspeicherplatine bezeichnet wird. Speziell ein Host-Systemprozessor führt ein Software-Modul aus, das Systemressourcen verwendet, um eine spezifische Teilmenge der mit einer SSD-Verwaltung verbundenen Aufgaben durchzuführen, während die übrigen Aufgaben direkt von der SSD-Platine durchgeführt und beschleunigt werden. Das Hardware-Modul enthält ein Steuereinheit-Untermodul sowie einen ”not-and”-(NAND)-Flash-Arbeitsspeicher sowie einige Hochgeschwindigkeits-Arbeitsspeicher wie einen dynamischen Arbeitsspeicher (DRAM), einen Phasenwechselspeicher (phase-change memory, PCM) und/oder einen Spin-Torque-Transfer-Arbeitsspeicher (STT-RAM). Das Software-Modul führt komplexe Operationen zur Flash-Arbeitsspeicherverwaltung durch, darunter, ohne darauf beschränkt zu sein: Speicherbereinigung, Abnutzungsausgleich (wear leveling), Datenplatzierung und -planung, nachrangige Fehlerkorrekturcodierung (error correction coding, ECC), Verwaltung einer redundanten Anordnung unabhängiger Festplatten (redundant array of independent disks, RAID) und Flash-Wiederherstellung. Das Hardware-Steuereinheitmodul wiederum führt eine einfache Buchhaltung der Flash-Übersetzungsschicht (flash translation layer, FTL) (die FTL ist die Adressübersetzungstabelle in NAND-Flash-Systemen) und Flash-Befehls-Routing durch sowie hardware-freundliche Operationen wie beispielsweise RAID-Beschleunigung und vorrangige ECC unter Verwendung von algebraischen Codes.
  • Hierin beschriebene Ausführungsformen haben einen sehr geringen Platzbedarf in dem Host-System und Prozessor in Bezug auf Verarbeitungsleistung und Host-Arbeitsspeicher. Selbst die komplexesten Flash-Buchhaltungsoperationen benötigen nur einen Bruchteil der Rechenleistung eines typischen modernen Host-Prozessors, während sich eine vollständige Flash-Verwaltung erheblich auf die Belegung des Systemspeichers und damit auf die Systemleistung auswirkt. Ausführungsformen können somit in Systemen mit kostengünstigen Arbeitsspeicherteilsystemen und relativ kostengünstigen Prozessoren oder in Systemen verwendet werden, bei denen Leistungsfähigkeit an erster Stelle steht und die meisten Arbeitsspeicherressourcen von der Hautbenutzeranwendung beansprucht werden, sowie in großen datenorientierten Systemen, die mehrere Rechenknoten und/oder Mikroserver mit geringem Energiebedarf verwenden. Das einfache Hardware-Modul ermöglicht zudem FTL-Transaktionen mit niedriger Latenzzeit und großer Bandbreite und die Bereitstellung von Flash-Befehlen für die Flash-Arbeitsspeichereinheiten. Selbst bei Systemen, auf denen unabhängige, durchsatzstarke, speicherintensive Anwendungen gleichzeitig ausgeführt werden, ermöglichen das System und das Verfahren somit, dass eine sehr hohe Leistung erreicht wird. Aufgrund der einfachen Hardware wird diese Leistung zudem mit relativ günstigen Kosten erzielt. Das Verhältnis von Kosten/Leistung von beispielhaften Ausführungsformen in Bezug auf Kosten/Gigabyte (GB) zum Beispiel oder Kosten/Bandbreite ist erheblich besser als bei herkömmlichen Lösungen. Hierin beschriebene Ausführungsformen eignen sich zum Bereitstellen einer hohen Leistung zu niedrigen Kosten für Systeme mit begrenzt zur Verfügung stehenden Ressourcen.
  • Mit Bezug nunmehr auf 1 ist allgemein eine Ausführungsform eines Systems einer Flash-Steuereinheit dargestellt. Das System beinhaltet einen Host-Computer 100, der über eine Schnittstelle 104 mit einem Hardware-Modul 102 verbunden ist. Bei einer Ausführungsform handelt es sich bei dem Host-Computer 100 um ein Computersystem mit einer Hauptplatine und einer Verbindung zu einem oder mehreren Hochgeschwindigkeitsbussen, die als Schnittstelle 104 zu dem Hardware-Modul 102 dienen. Der Host-Computer 100 beinhaltet auf der Hauptplatine (z. B. einer Steuerplatine) befindliche Hardware wie beispielsweise einen Prozessor und einen Arbeitsspeicher, die Software, darunter das Software-Modul 106, ausführen. Bei einer Ausführungsform ist ein Software-Modul 106 für die meisten der komplexen Verwaltungsfunktionen der Flash-Steuereinheit wie Speicherbereinigung, Abnutzungsausgleich, Optimieren von Datenplatzierung und -planung, RAID-Verwaltung, Flash-Wiederherstellung nach einem Ausfall und ECC-Funktionalität einer höheren Schicht verantwortlich.
  • Bei einer Ausführungsform handelt es sich bei dem Hardware-Modul 102 um eine physische Einheit, die im Wesentlichen für das Beherbergen eines Flash-Moduls 110, eines Steuereinheit-Untermoduls 108 und eines schnellen Arbeitsspeichermoduls 112 verantwortlich ist. Der Begriff ”Hardware-Modul” wird hierin synonym mit dem Begriff ”Halbleiter-Datenspeicherplatine” verwendet. Bei einer Ausführungsform greift das Steuereinheit-Untermodul 108 auf die FTL zu, die sich in einer oder mehreren Halbleiter-Arbeitsspeichereinheiten wie beispielsweise einem DRAM 112 oder einem anderen flüchtigen oder nichtflüchtigen Hochgeschwindigkeitsarbeitsspeicher in dem Hardware-Modul 102 befindet. Die FTL beinhaltet nach dem Stand der Technik ein Abbilden zwischen logischen Adressen und physischen Adressen. Das Flash-Modul 110 beinhaltet Flash-Arbeitsspeichereinheiten (z. B. Chips) 118, die sich in dem Hardware-Modul 102 befinden. Eine Flash-Arbeitsspeichereinheit ist ein Beispiel einer Art von Halbleiter-Datenspeichereinheit, die durch beispielhafte Ausführungsformen ausgeführt werden kann. Zu anderen Beispielen von Halbleiter-Datenspeichereinheiten, die ausgeführt werden können, gehören ein PCM, ein magnetischer RAM und ein resistiver RAM.
  • Zu den Hauptfunktionen des Hardware-Moduls 102 gehören die wirksame Übersetzung von logischen in physische Adressen, um das Lesen aus den Flash-Arbeitsspeichereinheiten 118 zu erleichtern, sowie die Bereitstellung von Flash-Befehlen für die Flash-Arbeitsspeichereinheiten 118 mit niedriger Latenzzeit und hoher Bandbreite. Zu diesem Zweck beinhaltet das Hardware-Modul 102 auch Schnittstellenverwaltungsfunktionen, die eine schnelle Arbeitsspeicherschnittstelle 114 zwischen einem schnellen FTL-Arbeitsspeichermodul 112 und dem Flash-Modul 110 verwalten. Das Hardware-Modul 102 ist darüber hinaus für einige einfache für eine Hardware-Beschleunigung geeignete Operationen verantwortlich, die auf dem Steuereinheit-Untermodul 108 ausgeführt werden, so beispielsweise primärer Fehlerkorrekturcode (ECC) und einige RAID-Beschleunigungsoperationen. Das Steuereinheit-Untermodul 108 ist über eine Flash-Schnittstelle 116 mit dem Flash-Modul 110 verbunden. Das Hardware-Modul 102 unterstützt zudem die Wiederherstellung der Abbildung von der physischen auf die logische Adresse, um eine wirksame Funktion von Verwaltungsalgorithmen zu ermöglichen, darunter Datenplatzierungs- und Speicherbereinigungsalgorithmen, wie sie von dem Software-Modul 106 ausgeführt werden. Bei einer Ausführungsform sind das Hardware-Modul 102 und das Software-Modul 106 auf dem Host-Computer 100 unter Verwendung der Schnittstelle 104 verbunden. Bei einer Ausführungsform handelt es sich bei der Schnittstelle 104 um eine Hochgeschwindigkeitsschnittstelle der Host-Hardware wie beispielsweise eine Peripheral Component Interconnect Express(PCIe)-Hochgeschwindigkeitsschnittstelle (Peripheral Component Interconnect Express = schnelle periphere Komponentenverbindung).
  • Die in 1 dargestellte Ausführungsform für die SSD-Verwaltung verwendet eine innovative Aufteilung der Verwaltungsfunktionalität der Flash-Steuereinheit zwischen dem Software-Modul 106 (z. B. einem Treiber, der auf dem Host-Computer 100 ausgeführt wird) und dem Hardware-Modul 102 (z. B. das auf einer Karte mit geeigneter Hardware ausgeführt wird, beispielsweise eine feldprogrammierbare Gatteranordnung oder ”FPGA” (field programmable gate array) oder eine anwendungsspezifische integrierte Steuereinheit-Schaltung oder ”ASIC” (application specific integrated circuit)). Bei einer Ausführungsform befinden sich Hardware für die Beschleunigung spezifischer Funktionalitäten wie beispielsweise ECC und eine Tabelle für die Übersetzung zwischen logischen Adressen und physischen Adressen in dem Hardware-Modul 102, und Flash-Verwaltungsprozesse wie beispielsweise Datenplatzierung, Abnutzungsausgleich und -steuerung (z. B. auf der Grundlage einer Messung der Abnutzung) sowie Speicherbereinigung und Metadaten wie beispielsweise Abnutzungsdaten und Seitenstatus befinden sich in dem Host-Computer 100. Die Einfachheit der Anordnung und der Hardware verringert sowohl die Kosten des benötigten Host-Computersystems als auch die Komplexität der Konzeption des Hardware-Moduls 102. Bei der in 1 dargestellten Ausführungsform muss das Hardware-Modul zum Beispiel keine allgemeine Prozessorkernfunktionalität ausführen, wie dies nach dem Stand der Technik üblich ist.
  • Die Aufteilung der Funktionalität der Flash-Steuereinheit zwischen dem Host-Computer 100 und dem Hardware-Modul 102 ermöglicht eine hohe Leistung. Dies ist darauf zurückzuführen, dass das Software-Modul 106 auf dem Host-Computer 100 die komplexen Flash-Operationen steuert, wobei der Host-Computer 100 genügend Datenverarbeitungssystemressourcen für die Operationen aufweist. Im Gegensatz dazu steht das Durchführen von komplexen Flash-Operationen vollständig in dem Hardware-Modul 102, wobei die Ressourcen in dem Hardware-Modul 102 einen Engpass zur Ausführung von komplexen Operationen verursachen können. Die in 1 dargestellte Ausführungsform spart ebenfalls teure Systemressourcen wie beispielsweise Hauptspeicher auf dem Host-Computer 100 ein, indem das FTL-Arbeitsspeichermodul 112 in dem Hardware-Modul 102 untergebracht wird. Daher werden Ausführungsformen verwendet, um hochleistungsfähige Flash-E/A in neuen Anwendungen wie beispielsweise Mikroserver in Datenzentrumnetzwerken zu ermöglichen, wo Systemressourcen wie beispielsweise der Hauptspeicher begrenzt sind, wobei aufgrund der Einfachheit des Hardware-Moduls 102 eine beschleunigte Entwicklung möglich ist. Eine Beschreibung der Art und Weise, wie beispielhafte Flash-Operationen gemäß Ausführungsformen durchgeführt werden, ist in den 2 bis 6 dargestellt.
  • 2 ist ein Blockschaubild eines Prozesses zum Durchführen einer Flash-Leseoperation (auch Flash-Operation zum Lesen einer logischen Adresse genannt) gemäß einer Ausführungsform. Bei einem ersten Block 200 wird eine Leseanforderung eines Benutzers für ein SSD wie beispielsweise eine Flash-Arbeitsspeichereinheit 118 von dem Host-Computer 100 empfangen. Bei Block 202 wird die Leseanforderung in physische Leseeinheiten aufgeteilt, wobei jede Einheit über ihre eigene logische Adresse verfügt. Die Anforderungen werden anschließend bei Block 204 in eine abgehende Anforderungswarteschlange gestellt. Bei Block 206 wird das Hardware-Modul 102 entweder direkt oder durch Erschließen seines Status auf der Grundlage der vorherigen Befehls- und Anforderungshistorie und der Funktionen des Hardware-Moduls 102 selbst geprüft, um festzustellen, ob es bereit ist, die Leseanforderungen zu senden (cleared to send, CTS). Das Hardware-Modul 102 zeigt Sendebereitschaft an, wenn es frei ist, um Befehle auszuführen oder anzunehmen. Wenn das Hardware-Modul 102 sendebereit ist, werden die Anforderungen wie bei Block 208 gezeigt an das Hardware-Modul 102 gesendet. Wenn das Modul bei Block 210 nicht bereit ist, wartet das System, bis das Hardware-Modul 102 anzeigt, dass es bereit ist. Bei einer Ausführungsform werden die Blöcke 200 bis 210 von dem Host-Computer 100 durchgeführt, und die Blöcke 212 bis 220 werden von dem Hardware-Modul 102 durchgeführt.
  • Bei Block 212 werden die Leseanforderungen für jede der logischen Adressen empfangen. Bei Block 214 ermittelt das Hardware-Modul 102, ob es eine ausstehende Leseanforderung gibt, zum Beispiel bei der gleichen Hardware-Ressource (zu möglichen Hardware-Ressourcen gehören ein Flash-Modul, eine Arbeitsspeichereinheit oder ein flacher Chip, ein Die), wo die Leseoperation durchgeführt werden muss. Wenn es ausstehende Leseanforderungen gibt, wartet das Modul wie bei Block 215 gezeigt. Wenn keine ausstehenden Leseanforderungen vorhanden sind, wird Block 216 durchgeführt, um das schnelle FTL-Arbeitsspeichermodul 112 (auch als ”FTL” bezeichnet) an der angegebenen logischen Adresse zu lesen, um die physische Adresse zu ermitteln, die der logischen Adresse entspricht. Bei Block 218 wird ein Lesebefehl an die von der FTL ermittelte physische Adresse gesendet. Die FTL führt die Übersetzung der logischen Adresse in die physische Adresse in dem Hardware-Modul 102 durch. Wenn der Lesevorgang abgeschlossen ist, werden die Daten bei Block 220 zusammen mit der logischen Adresse dem Host-Computer 100 von dem Hardware-Modul 102 über die Schnittstelle 104 bereitgestellt. Bei einer anderen Ausführungsform wird die physische Adresse ebenfalls über die Schnittstelle an den Host-Computer 100 gesendet.
  • 3 ist ein Blockschaubild eines Prozesses für eine Flash-Schreiboperation gemäß einer Ausführungsform. Bei Block 300 empfängt der Host-Computer 100 eine Schreibanforderung eines Benutzers. Bei Block 302 wird die Schreibanforderung in physische Schreibeinheiten aufgeteilt, wobei jede Einheit über eine logische Adresse verfügt. Bei Block 304 ermittelt ein Datenplatzierungsalgorithmus eine physische Adresse für jede logische Adresse. Der Datenplatzierungsalgorithmus wird in dem Software-Modul 106 des Host-Computers 100 ausgeführt und ermittelt die physische Adresse auf der Grundlage von ausgewählten Daten (z. B. Metadaten) auf dem Host-Computer 100 wie beispielsweise Abnutzungsinformationen und andere Flash-Einheiteninformationen. Bei einer Ausführungsform wird die von dem Platzierungsalgorithmus ermittelte physische Schreibposition ausgewählt, um Abnutzung über verschiedene physische Positionen unter Verwendung in der Technik bekannter Ermittlungsalgorithmen auszugleichen. Bei einer anderen Ausführungsform ist die von dem Platzierungsalgorithmus ermittelte physische Position dergestalt, dass der Schreibfaktor (write amplification) von künftigen Speicherbereinigungsoperationen verringert wird; die Algorithmen zum Ermitteln einer solchen physischen Position sind in der Technik bekannt. Bei einer anderen Ausführungsform beinhalten die Halbleiter-Datenspeichereinheiten eine Mischung von Einheiten mit unterschiedlichen Leistungsmerkmalen, zum Beispiel Single-Level-Zellen(SLC)- und Multi-Level-Zellen(MLC)-Flash. In diesem Fall berücksichtigt der Platzierungsalgorithmus beim Ermitteln der physischen Position die physischen Merkmale von Einheiten. Daten, die zum Beispiel erwartungsgemäß häufig neu geschrieben werden, werden in einer Einheit mit hoher Beständigkeit wie einem SCL-Flash platziert, während unregelmäßig aktualisierte Daten in Einheiten mit niedriger Beständigkeit wie MLC-Flash platziert werden. Bei einer Ausführungsform wird das Herstellen einer Übereinstimmung zwischen einer logischen Adresse und einer physischen Adresse als Reaktion auf mindestens eine Messung der Abnutzung von mindestens einer der Halbleiter-Datenspeichereinheiten, die voraussichtliche Leistung der Hauptplatine oder die Merkmale von mindestens einer der Halbleiter-Datenspeichereinheiten durchgeführt. Bei einer Ausführungsform wird das Herstellen einer Übereinstimmung zwischen einer logischen Adresse und einer physischen Adresse als Reaktion auf die vorherige Ausgabe eines ECC-Decoders durchgeführt. Beim Entscheiden über eine physische Position für die Daten werden somit Informationen über die Position vorheriger Fehler berücksichtigt.
  • Die Anforderungen werden anschließend bei Block 306 in eine abgehende Anforderungswarteschlange gestellt. Bei Block 308 wird das Hardware-Modul 102 geprüft, um festzustellen, ob es bereit ist, Schreibanforderungen zu senden. Wenn das Modul bei Block 310 nicht bereit ist, wartet das System, bis das Hardware-Modul 102 anzeigt, dass es bereit ist. Wenn das Hardware-Modul 102 sendebereit ist, werden die Anforderungen mit den zu schreibenden Daten zusammen mit den logischen und physischen Adressen wie bei Block 312 gezeigt an das Hardware-Modul 102 gesendet. Bei einer Ausführungsform werden die Blöcke 300 bis 312 von dem Host-Computer 100 durchgeführt, und die Blöcke 314 bis 322 werden von dem Hardware-Modul 102 durchgeführt.
  • Bei Block 314 werden die Schreibanforderungen für jede der logischen und physischen Adressen empfangen. Bei Block 316 ermittelt das Hardware-Modul 102, ob es ausstehende Schreibanforderungen gibt, zum Beispiel bei der gleichen Hardware-Ressource (zu möglichen Hardware-Ressourcen gehören ein Flash-Modul, eine Speichereinheit oder ein flacher Chip, ein Die), wo die Schreiboperation durchgeführt werden muss. Wenn es ausstehende Schreibanforderungen gibt, wartet das Modul wie bei Block 317 gezeigt. Wenn es keine ausstehenden Schreibanforderungen gibt, schreibt das Hardware-Modul 102 wie bei Block 318 gezeigt zum Aktualisieren der FTL an der angegebenen logischen Adresse für jede physische Adresse. Bei Block 320 wird der Schreibbefehl an die Flash-Arbeitsspeichereinheit oder physische Adresse des Arbeitsspeichers gesendet, wobei die physische Adresse mit der bei Block 318 in die FTL geschriebenen Adresse übereinstimmt. Bei Block 322 wird eine Schreibbeendigungsbestätigung an den Host-Computer 100 gesendet.
  • 4 ist ein Blockschaubild eines Prozesses für eine Speicherbereinigungsoperation gemäß einer Ausführungsform. Bei Block 400 findet der Host-Computer 100 den besten Kandidatendatenblock, der während der Operation gelöscht werden soll. Bei einer Ausführungsform ist der beste Kandidat der Block mit der kleinsten Anzahl von gültigen Seiten. Bei einer anderen Ausführungsform wird der Kandidat ausgewählt, weil er die geringste Abnutzung aufweist. Der Host-Computer 100 kann Metadaten und andere auf dem Host-Computer 100 gespeicherte Informationen verwenden, die Merkmale des Flash-Arbeitsspeichers beschreiben, um den Kandidaten für die Löschoperation zu ermitteln. Die Metadaten auf dem Host-Computer 100 stellen zudem auch die physischen Adressen des zum Löschen ausgewählten Datenblocks bereit. Zu den beim Host gespeicherten Metadaten gehören eines oder mehrere von Folgendem: gültiger Status jeder physischen Seite, Status jedes Blocks, möglicherweise mit aktueller Schreibseite, Löschstatus, Löschzählung, entweder genau oder ungefähr, und gegebenenfalls aktuell durchgeführte Operation. Bei einer Ausführungsform werden diese Informationen von einem unabhängigen Ausführungs-Thread verarbeitet. Bei weiteren Ausführungsformen werden diese Informationen verarbeitet, wenn eine Speicherbereinigungsoperation ausgelöst wird.
  • Bei Block 402 wird eine Flash-Operation zum Lesen einer physischen Adresse wie nachstehend in 5 beschrieben für gültige Seiten innerhalb des bei Block 400 identifizierten Datenblocks in eine Warteschlange gestellt. Bei einer Ausführungsform werden die physischen Adressen der gültigen Seiten ermittelt, indem ein Korrekturwert von der physischen Anfangsadresse des Datenblocks verwendet wird, der durch den Speicherbereinigungsprozess gelöscht werden soll. Die physischen Adressen der zu löschenden gültigen Seiten werden in eine Warteschlange gestellt, und bei Block 404 werden das Schreiben der gültigen Seiten und die von dem physischen Lesevorgang zurückgesendeten logischen Adressen in eine Warteschlange gestellt. Die zu einer physischen Seite gehörige logische Adresse wird während der Schreibzeit von den Metadaten ermittelt, die den Seiteninhalten angehängt sind, und zusammen mit den Seiteninhalten beim Durchführen einer Leseoperation abgerufen. Bei Block 406 werden die Löschanforderungen für den zu löschenden Datenblock in eine Warteschlange gestellt, nachdem alle gültigen Seiten bei Block 404 auf eine andere Position geschrieben (d. h. kopiert) wurden. Der Prozess behält die logische Adresse bei, wenn die physischen Adressen von gültigen Seiten geändert werden, wobei die FTL mit der neuen Adresse für die Daten aktualisiert wird. Bei einer Ausführungsform wird die in 4 dargestellte Verarbeitung von dem Host-Computer 100 durchgeführt.
  • 5 ist ein Blockschaubild eines Prozesses für eine Flash-Operation zum Lesen einer physischen Adresse gemäß einer Ausführungsform. Bei Block 500 wird eine Anforderung zum Lesen von Daten von einer physischen Adresse in die abgehende Anforderungswarteschlange des Host-Computers 100 gestellt. Bei Block 502 wird das Hardware-Modul 102 geprüft, um festzustellen, ob es bereit ist, die Leseanforderungen zu senden. Wenn das Modul bei Block 506 nicht bereit ist, wartet das System, bis das Hardware-Modul 102 anzeigt, dass es bereit ist. Wenn das Hardware-Modul 102 sendebereit ist, werden die Leseanforderungen und die entsprechenden physischen Adressen wie in Block 504 gezeigt an das Hardware-Modul 102 gesendet. Bei einer Ausführungsform werden die Blöcke 500 bis 504 von dem Host-Computer 100 durchgeführt, und die Blöcke 508 bis 514 werden von dem Hardware-Modul 102 durchgeführt.
  • Bei Block 508 werden die Leseanforderungen für jede der physischen Adressen empfangen. Bei Block 510 ermittelt das Hardware-Modul 102, ob es eine ausstehende Anforderung zum Lesen einer physischen Adresse gibt. Wenn es ausstehende Leseanforderungen gibt, wartet das Modul wie bei Block 511 gezeigt. Wenn keine ausstehenden Anforderungen vorhanden sind, wird der Lesebefehl bei Block 512 an die angegebene physische Adresse gesendet. Nachdem die Daten an der angegebenen physischen Adresse gelesen wurden, werden die Daten und die logische Adresse dem Host-Computer 100 von dem Hardware-Modul 102 bereitgestellt. Die Operation zum Lesen einer physischen Adresse kann durchgeführt werden, wenn der Host-Computer 100 die physische Adresse der Daten kennt, die er beispielsweise für eine Speicherbereinigungsoperation wie oben in 4 beschrieben anfordert.
  • Bei weiteren beispielhaften Ausführungsformen wird dem Host-Computer 100 nach dem Lesen der Daten nur eine Bestätigung bereitgestellt. Die Lesedaten werden in dem Hardware-Modul 102 zum Beispiel in einem Puffer in dem Steuereinheit-Untermodul 108 oder in einem anderen Arbeitsspeicher gespeichert, der im Hardware-Modul 102 zur Verfügung steht. Bei weiteren Ausführungsformen wird die zu dem Seitenlesevorgang gehörige logische Adresse zurück zu dem Host-Computer 100 übermittelt. Bei weiteren Ausführungsformen wird die logische Adresse in einem Puffer gespeichert, der in dem Hardware-Modul 102 zur Verfügung steht. Wenn die Daten in einem Puffer in dem Hardware-Modul 102 gespeichert werden, beinhaltet die Schreiboperation, die zum Speichern der zu löschenden Seite benötigt wird, kein Übermitteln der Seitendaten von dem Host-Computer 100, sondern nur die Anforderung, dass die in der Schreiboperation verwendeten Daten aus dem Puffer in dem Hardware-Modul 102 ermittelt werden.
  • 6 ist ein Blockschaubild eines Prozesses für eine Flash-Löschoperation gemäß einer Ausführungsform. Bei Block 600 wird eine physische Adresse des zu löschenden Datenblocks in dem Flash ermittelt. Bei Block 602 wird die Löschanforderung zu der abgehenden Anforderungswarteschlange gesendet. Bei Block 604 wird das Hardware-Modul 102 geprüft, um festzustellen, ob es bereit ist, die Löschanforderungen zu senden. Wenn das Modul bei Block 608 nicht bereit ist, wartet das System, bis das Hardware-Modul 102 anzeigt, dass es bereit ist. Wenn das Hardware-Modul 102 sendebereit ist, werden die Löschanforderungen und die entsprechenden physischen Adressen wie in Block 610 gezeigt an das Hardware-Modul 102 gesendet. Bei einer Ausführungsform werden die Blöcke 600, 602, 604, 608 und 610 von dem Host-Computer 100 durchgeführt, und die Blöcke 612, 614, 616 und 618 werden von dem Hardware-Modul 102 durchgeführt.
  • Bei Block 612 werden die Löschanforderungen für jede der physischen Adressen empfangen. Bei Block 614 ermittelt das Hardware-Modul 102, ob es eine ausstehende Löschanforderung gibt. Wenn es keine ausstehenden Löschanforderungen gibt, wartet das Modul wie in Block 615 gezeigt. Wenn eine ausstehende Anforderung vorhanden ist, wird der Löschbefehl bei Block 616 an die angegebene physische Adresse und die Flash-Arbeitsspeichereinheit 118 gesendet. Nachdem die Daten an der angegebenen physischen Adresse gelöscht wurden, wird eine Bestätigung hinsichtlich der gelöschten Daten von dem Hardware-Modul 102 an den Host-Computer 100 übermittelt. Die Löschoperation kann durchgeführt werden, wenn der Host-Computer die physische Adresse der Daten kennt, die er beispielsweise für eine Speicherbereinigungsoperation wie oben in 4 beschrieben zum Löschen anfordert.
  • Ausführungsformen stellen eine hochleistungsfähige Lösung zur Verwaltung einer Halbleiter-Einheit bereit, die bei kostengünstigen Volumenprozessoren verwendet werden kann. Ausführungsbeispiele beinhalten insbesondere eine Aufteilung der Komplexität einer Flash-Verwaltung zwischen einem Software-Modul, das auf einem Host-Prozessor ausgeführt wird, und einem Hardware-Modul, das den Flash-Arbeitsspeicher beinhaltet. Bei Ausführungsformen befinden sich der Host-Prozessor und das System auf einer Hauptplatine eines Computersystems, wobei das Hardware-Modul eine Karte ist, die den Flash-Arbeitsspeicher, ein Steuereinheit-Untermodul und ein schnelles Arbeitsspeichermodul enthält. Das schnelle Arbeitsspeichermodul (einschließlich der FTL) in dem Hardware-Modul beherbergt Host-Informationen, die für die Übersetzung von logischer in physische Adresse benötigt werden (z. B. eine Tabelle), um eine schnelle Leseoperationsleistung bereitzustellen. Indem die Adressübersetzungsinformationen in dem Hardware-Modul untergebracht werden, wird wertvoller Arbeitsspeicher auf dem Host gespart. Andere Metadaten, die den Flash-Arbeitsspeicher beschreiben, befinden sich auf dem Host, um den Host-Prozessor zu verwenden. Operationen, die auf dem Host unter Verwendung der Metadaten auf dem Host durchgeführt werden, verwenden den Host-Prozessor und wirken sich nicht negativ auf die Leistung der mit dem Flash verbundenen Hardware-Steuereinheit aus. Die Aufteilung von Daten und Operationen zwischen dem Host und dem Hardware-Modul vereinfacht auch das System, während Kosten dadurch verringert werden, dass kein Prozessor in dem Modul vorhanden ist.
  • Für den Fachmann ist ersichtlich, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Aspekte der vorliegenden Erfindung können daher die Form einer kompletten Hardware-Ausführung, einer kompletten Software-Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform haben, bei der Hardware- und Software-Aspekte kombiniert sind, die allgemein hierin als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Aspekte der vorliegenden Erfindung können des Weiteren die Form eines Computerprogrammprodukts haben, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, die über einen darin enthaltenen computerlesbaren Programmcode verfügen.
  • Es können beliebige Kombinationen von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder eine geeignete Kombination davon handeln, ohne darauf beschränkt zu sein. Zu genauen Beispielen (einer nicht vollständigen Liste) für das computerlesbare Speichermedium gehören wie folgt: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computer-Diskette, eine Festplatte, ein Arbeitsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges physisches Medium handeln, das ein Programm enthalten oder speichern kann, welches von oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen verwendet wird.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit darin enthaltenem computerlesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen haben, darunter elektromagnetische, optische Formen oder eine geeignete Kombination davon, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weitergegeben oder transportieren kann.
  • In einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übermittelt werden, das drahtlos, drahtgebunden, ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination davon sein kann, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen in Verbindung mit Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnliche Programmiersprachen gehören. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über ein beliebiges Netzwerk mit dem Computer des Benutzers verbunden sein, zum Beispiel über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder es kann die Verbindung zu einem externen Computer hergestellt werden (beispielsweise über das Internet durch einen Internetdienstanbieter).
  • Nachstehend werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Ablaufplandarstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder in den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalrechners, Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten steuern kann, um auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich der Anweisungen erzeugen, die die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegte Funktion/Maßnahme umsetzen.
  • Die Computerprogrammanweisungen können ferner in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Funktionsschritten auszulösen, die auf dem Computer, in der anderen programmierbaren Vorrichtung oder den anderen Einheiten durchgeführt werden, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder in der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse bereitstellen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, Segment oder einen Teil eines Codes darstellen, das/der eine oder mehrere ausführbare Anweisungen zur Umsetzung der festgelegten Logikfunktion(en) aufweist. Es ist ferner darauf hinzuweisen, dass die im Block angegebenen Funktionen bei einigen alternativen Ausführungen in einer anderen Reihenfolge als in den Figuren dargestellt ablaufen können. Zwei aufeinanderfolgend dargestellte Blöcke können zum Beispiel tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach entsprechender Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Des Weiteren ist darauf hinzuweisen, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellung sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die angegebenen Funktionen oder Maßnahmen durchführen, oder durch Kombinationen von spezieller Hardware und Computeranweisungen.
  • Die hierin verwendete Terminologie dient lediglich zum Zweck des Beschreibens von speziellen Ausführungsformen und soll die Erfindung nicht einschränken. Wie hierin verwendet, sollen die Singularformen ”ein/eine/einer/eines” und ”der/die/das” ebenfalls die Pluralformen umfassen, es sei denn, der Zusammenhang zeigt eindeutig etwas anderes auf. Es versteht sich ferner, dass die Ausdrücke ”aufweisen” und/oder ”aufweisend”, wenn sie in dieser Beschreibung verwendet werden, die Anwesenheit von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht die Anwesenheit oder Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • Die entsprechenden Strukturen, Materialien, Maßnahmen und Äquivalente aller Mittel oder Schritt-plus-Funktion-Elemente in den nachfolgenden Ansprüchen sollen alle Strukturen, Materialien oder Maßnahmen zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen umfassen, wie dies speziell beansprucht wird. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgestellt, soll jedoch nicht erschöpfend oder auf die Erfindung in der offenbarten Form beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Schutzumfang der Erfindung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten ein Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen Änderungen zu ermöglichen, wie sie für die jeweils beabsichtigte Verwendung geeignet sind.
  • Die hierin abgebildeten Ablaufplandarstellungen sind nur ein Beispiel. Es kann viele Abwandlungen für diese Darstellung oder die darin beschriebenen Schritte (oder Operationen) geben, ohne vom Grundgedanken der Erfindung abzuweichen. Die Schritte können zum Beispiel in einer anderen Reihenfolge durchgeführt werden, oder es können Schritte hinzugefügt, weggelassen oder geändert werden. Alle diese Abwandlungen gelten als Teil der beanspruchten Erfindung.
  • Obwohl die beispielhafte Ausführungsform der Erfindung beschrieben worden ist, versteht sich, dass der Fachmann sowohl heute als auch in Zukunft verschiedene Verbesserungen und Erweiterungen vornehmen kann, die in den Schutzumfang der nachfolgenden Ansprüche fallen. Diese Ansprüche sollten so ausgelegt werden, dass der richtige Schutz für die ursprünglich beschriebene Erfindung aufrechterhalten wird.

Claims (25)

  1. System, das aufweist: eine Hauptplatine und eine von der Hauptplatine getrennte Halbleiter-Datenspeicherplatine, wobei die Hauptplatine über einen Schnittstellenbus mit der Halbleiter-Datenspeicherplatine verbunden ist, wobei die Halbleiter-Datenspeicherplatine eine Halbleiter-Arbeitsspeichereinheit und Halbleiter-Datenspeichereinheiten beinhaltet, wobei die Halbleiter-Datenspeichereinheiten eine Vielzahl von physischen Speicherpositionen enthalten, die von physischen Adressen identifiziert werden, wobei das System so konfiguriert ist, dass es ein Verfahren durchführt, das aufweist: Herstellen einer Übereinstimmung zwischen einer ersten logischen Adresse und einer ersten physischen Adresse in den Halbleiter-Datenspeichereinheiten, wobei das Herstellen einer Übereinstimmung von einem Software-Modul durchgeführt wird, das sich auf der Hauptplatine befindet; Speichern der Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse, wobei das Speichern an einer Position in der Halbleiter-Arbeitsspeichereinheit durchgeführt wird, auf die ein Adressübersetzermodul zugreift, das sich auf der Halbleiter-Datenspeicherplatine befindet; und Übersetzen der ersten logischen Adresse in die erste physische Adresse in den Halbleiter-Datenspeichereinheiten, wobei das Übersetzen von dem Adressübersetzermodul durchgeführt wird, das sich auf der Halbleiter-Datenspeicherplatine befindet, wobei das Übersetzen auf der zuvor hergestellten Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse beruht.
  2. System nach Anspruch 1, wobei die Halbleiter-Datenspeichereinheiten Flash-Arbeitsspeichereinheiten beinhalten.
  3. System nach Anspruch 1 oder 2, wobei das Übersetzen als Reaktion auf ein Empfangen einer Anforderung zum Lesen von Daten durchgeführt wird, wobei die Anforderung die erste logische Adresse enthält, und das Verfahren weiterhin ein Abrufen von Daten von der ersten physischen Adresse aufweist.
  4. System nach Anspruch 1, 2 oder 3, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine Schreibanforderung durchgeführt wird, die die erste logische Adresse und Schreibdaten enthält, und das Verfahren weiterhin ein Schreiben der Schreibdaten in den Halbleiter-Datenspeichereinheiten an eine physische Position aufweist, die von der ersten physischen Adresse identifiziert wird.
  5. System nach einem der vorherigen Ansprüche, wobei sich die Hauptplatine auf einem Host-Computer befindet.
  6. System nach einem der vorherigen Ansprüche, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine Messung der Abnutzung von mindestens einer der Halbleiter-Datenspeichereinheiten durchgeführt wird.
  7. System nach einem der vorherigen Ansprüche, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine voraussichtliche Leistung der Hauptplatine durchgeführt wird.
  8. System nach einem der vorherigen Ansprüche, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf Merkmale von mindestens einer der Halbleiter-Datenspeichereinheiten durchgeführt wird.
  9. System nach einem der vorherigen Ansprüche, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine vorherige Ausgabe eines Fehlerkorrekturcodedecoders (ECC) durchgeführt wird.
  10. Verfahren, das aufweist: Herstellen einer Übereinstimmung zwischen einer ersten logischen Adresse und einer ersten physischen Adresse in Halbleiter-Datenspeichereinheiten, die sich auf einer Halbleiter-Datenspeicherplatine befinden, wobei die Halbleiter-Datenspeichereinheiten eine Vielzahl von physischen Speicherpositionen enthalten, die von physischen Adressen identifiziert werden, wobei das Herstellen einer Übereinstimmung von einem Software-Modul durchgeführt wird, das sich auf einer von der Halbleiter-Datenspeichereinheit getrennten Hauptplatine befindet, wobei die Hauptplatine über einen Schnittstellenbus mit der Halbleiter-Datenspeicherplatine verbunden ist; Speichern der Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse, wobei das Speichern an einer Position in einer Halbleiter-Arbeitsspeichereinheit durchgeführt wird, auf die ein Adressübersetzermodul zugreift, wobei sich das Adressübersetzermodul und die Halbleiter-Arbeitsspeichereinheit auf der Halbleiter-Datenspeicherplatine befinden; und Übersetzen der ersten logischen Adresse in die erste physische Adresse, wobei das Übersetzen von dem Adressübersetzermodul durchgeführt wird und auf der zuvor hergestellten Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse beruht.
  11. Verfahren nach Anspruch 10, wobei die Halbleiter-Datenspeichereinheiten Flash-Arbeitsspeichereinheiten beinhalten.
  12. Verfahren nach Anspruch 10 oder 11, wobei das Übersetzen als Reaktion auf ein Empfangen einer Anforderung zum Lesen von Daten durchgeführt wird, wobei die Anforderung die erste logische Adresse enthält, und das Verfahren weiterhin ein Abrufen von Daten von der ersten physischen Adresse aufweist.
  13. Verfahren nach Anspruch 10, 11 oder 12, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine Schreibanforderung durchgeführt wird, die die erste logische Adresse und Schreibdaten enthält, und das Verfahren weiterhin ein Schreiben der Schreibdaten in den Halbleiter-Datenspeichereinheiten an eine physische Position aufweist, die von der ersten physischen Adresse identifiziert wird.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei sich die Hauptplatine auf einem Host-Computer befindet.
  15. Verfahren nach einem der Ansprüche 10 bis 14, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine Messung der Abnutzung von mindestens einer der Halbleiter-Datenspeichereinheiten durchgeführt wird.
  16. Verfahren nach einem der Ansprüche 10 bis 15, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine voraussichtliche Leistung der Hauptplatine durchgeführt wird.
  17. Verfahren nach einem der Ansprüche 10 bis 16, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf Merkmale von mindestens einer der Halbleiter-Datenspeichereinheiten durchgeführt wird.
  18. Verfahren nach einem der Ansprüche 10 bis 17, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine vorherige Ausgabe eines Fehlerkorrekturcodedecoders durchgeführt wird.
  19. Computerprogrammprodukt, das aufweist: ein computerlesbares Speichermedium mit darin enthaltenem computerlesbarem Programmcode, wobei der computerlesbare Programmcode aufweist: computerlesbarer Programmcode, der so konfiguriert ist, dass er: eine Übereinstimmung zwischen einer ersten logischen Adresse und einer ersten physischen Adresse in Halbleiter-Datenspeichereinheiten herstellt, die sich auf einer Halbleiter-Datenspeicherplatine befinden, wobei die Halbleiter-Datenspeichereinheiten eine Vielzahl von physischen Speicherpositionen enthalten, die von physischen Adressen identifiziert werden, wobei das Herstellen einer Übereinstimmung von einem Software-Modul durchgeführt wird, das sich auf einer von der Halbleiter-Datenspeichereinheit getrennten Hauptplatine befindet, wobei die Hauptplatine über einen Schnittstellenbus mit der Halbleiter-Datenspeicherplatine verbunden ist; die Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse speichert, wobei das Speichern an einer Position in einer Halbleiter-Arbeitsspeichereinheit durchgeführt wird, auf die ein Adressübersetzermodul zugreift, wobei sich das Adressübersetzermodul und die Halbleiter-Arbeitsspeichereinheit auf der Halbleiter-Datenspeicherplatine befinden; und die erste logische Adresse in die erste physische Adresse übersetzt, wobei das Übersetzen von dem Adressübersetzermodul durchgeführt wird und auf der zuvor hergestellten Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse beruht.
  20. Computerprogrammprodukt nach Anspruch 19, wobei die Halbleiter-Datenspeichereinheiten Flash-Arbeitsspeichereinheiten beinhalten.
  21. Computerprogrammprodukt nach Anspruch 19 oder 20, wobei das Übersetzen als Reaktion auf ein Empfangen einer Anforderung zum Lesen von Daten durchgeführt wird, wobei die Anforderung die erste logische Adresse enthält, und das Verfahren weiterhin ein Abrufen von Daten von der ersten physischen Adresse aufweist.
  22. Computerprogrammprodukt nach Anspruch 19, 20 oder 21, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine Schreibanforderung durchgeführt wird, die die erste logische Adresse und Schreibdaten enthält, und das Verfahren weiterhin ein Schreiben der Schreibdaten in den Halbleiter-Datenspeichereinheiten an eine physische Position aufweist, die von der ersten physischen Adresse identifiziert wird.
  23. Computerprogrammprodukt nach einem der Ansprüche 19 bis 22, wobei sich die Hauptplatine auf einem Host-Computer befindet.
  24. Computerprogrammprodukt nach einem der Ansprüche 19 bis 23, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf mindestens eine Messung der Abnutzung von mindestens einer der Halbleiter-Datenspeichereinheiten, eine voraussichtlichen Leistung der Hauptplatine oder Merkmale von mindestens einer der Halbleiter-Datenspeichereinheiten durchgeführt wird.
  25. Computerprogrammprodukt nach einem der Ansprüche 19 bis 24, wobei das Herstellen einer Übereinstimmung zwischen der ersten logischen Adresse und der ersten physischen Adresse als Reaktion auf eine vorherige Ausgabe eines Fehlerkorrekturcodedecoders durchgeführt wird.
DE112012005222.6T 2011-12-23 2012-11-27 Halbleiter-Datenspeicherverwaltung Ceased DE112012005222T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/336,385 2011-12-23
US13/336,385 US9740439B2 (en) 2011-12-23 2011-12-23 Solid-state storage management
PCT/EP2012/073660 WO2013092121A1 (en) 2011-12-23 2012-11-27 Solid-state storage management

Publications (1)

Publication Number Publication Date
DE112012005222T5 true DE112012005222T5 (de) 2014-08-28

Family

ID=47294872

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012005222.6T Ceased DE112012005222T5 (de) 2011-12-23 2012-11-27 Halbleiter-Datenspeicherverwaltung

Country Status (5)

Country Link
US (3) US9740439B2 (de)
CN (1) CN103999060A (de)
DE (1) DE112012005222T5 (de)
GB (1) GB2511669A (de)
WO (1) WO2013092121A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9740439B2 (en) 2011-12-23 2017-08-22 International Business Machines Corporation Solid-state storage management
US20140047159A1 (en) * 2012-08-10 2014-02-13 Sandisk Technologies Inc. Enterprise server with flash storage modules
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9552288B2 (en) * 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US10444998B1 (en) 2013-10-24 2019-10-15 Western Digital Technologies, Inc. Data storage device providing data maintenance services
US9330143B2 (en) * 2013-10-24 2016-05-03 Western Digital Technologies, Inc. Data storage device supporting accelerated database operations
US20150301930A1 (en) * 2014-04-18 2015-10-22 HGST Netherlands B.V. File storage via physical block addresses
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
WO2016032817A1 (en) * 2014-08-26 2016-03-03 Marvell World Trade Ltd. Storage device controller architecture
US9875039B2 (en) * 2014-09-30 2018-01-23 Sandisk Technologies Llc Method and apparatus for wear-leveling non-volatile memory
US10318414B2 (en) * 2014-10-29 2019-06-11 SK Hynix Inc. Memory system and memory management method thereof
KR102506135B1 (ko) 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
WO2017002157A1 (ja) * 2015-06-29 2017-01-05 株式会社日立製作所 計算機システム及び計算機システムの制御方法
KR102445662B1 (ko) 2015-07-01 2022-09-22 삼성전자주식회사 스토리지 장치
CN105677595A (zh) * 2016-01-21 2016-06-15 方一信息科技(上海)有限公司 一种同时实现计算加速和pciessd存储的fpga方法
US10565101B2 (en) * 2016-01-29 2020-02-18 Hewlett Packard Enterprise Development Lp Storing data in a storage device
US9836243B1 (en) * 2016-03-31 2017-12-05 EMC IP Holding Company LLC Cache management techniques
CN111625477B (zh) * 2016-07-01 2023-09-05 北京忆恒创源科技股份有限公司 访问擦除块的读请求的处理方法与装置
US20180024751A1 (en) * 2016-07-19 2018-01-25 Western Digital Technologies, Inc. Metadata management on a storage device
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
WO2019112907A1 (en) * 2017-12-06 2019-06-13 Rambus Inc. Error-correction-detection coding for hybrid memory module
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置
US11263124B2 (en) 2018-08-03 2022-03-01 Micron Technology, Inc. Host-resident translation layer validity check
CN109491934B (zh) * 2018-09-28 2021-03-02 方一信息科技(上海)有限公司 一种集成计算功能的存储管理系统控制方法
CN109491593B (zh) * 2018-09-28 2020-11-17 方一信息科技(上海)有限公司 一种数据存储管理系统及方法
CN110968537B (zh) * 2018-09-28 2021-02-02 方一信息科技(上海)有限公司 一种基于pcie ssd的fpga搜索匹配方法
US11226907B2 (en) 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11226894B2 (en) * 2018-12-21 2022-01-18 Micron Technology, Inc. Host-based flash memory maintenance techniques
TWI724550B (zh) * 2019-09-19 2021-04-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
US20200226067A1 (en) * 2020-03-24 2020-07-16 Intel Corporation Coherent multiprocessing enabled compute in storage and memory
CN117149085B (zh) * 2023-09-07 2024-03-15 武汉麓谷科技有限公司 一种基于zns固态硬盘的快速寻址方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012135A (en) * 1994-12-01 2000-01-04 Cray Research, Inc. Computer having multiple address ports, each having logical address translation with base and limit memory management
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US7277978B2 (en) * 2003-09-16 2007-10-02 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
BRPI0418426A (pt) * 2004-01-19 2007-05-22 Trek 2000 Int Ltd dispositivo portátil de armazenamento de dados usando uma tabela de mapeamento de endereço de memória
JP4939234B2 (ja) * 2007-01-11 2012-05-23 株式会社日立製作所 フラッシュメモリモジュール、そのフラッシュメモリモジュールを記録媒体として用いたストレージ装置及びそのフラッシュメモリモジュールのアドレス変換テーブル検証方法
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US20090063895A1 (en) 2007-09-04 2009-03-05 Kurt Smith Scaleable and maintainable solid state drive
US20090180248A1 (en) 2008-01-10 2009-07-16 Karsten Roth Combination Drive
US8472199B2 (en) 2008-11-13 2013-06-25 Mosaid Technologies Incorporated System including a plurality of encapsulated semiconductor chips
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
KR101600951B1 (ko) 2009-05-18 2016-03-08 삼성전자주식회사 고체 상태 드라이브 장치
CN101923512B (zh) * 2009-05-29 2013-03-20 晶天电子(深圳)有限公司 三层闪存装置、智能存储开关和三层控制器
US8612666B2 (en) 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
US20110041005A1 (en) 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
JP5377175B2 (ja) 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置
KR101638061B1 (ko) 2009-10-27 2016-07-08 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
JP4901987B1 (ja) * 2010-09-14 2012-03-21 株式会社東芝 記憶装置、電子機器及び誤りデータの訂正方法
DE112011103208T5 (de) * 2010-09-24 2013-10-02 Texas Memory Systems, Inc. Hochgeschwindigkeits-Speichersystem
JP5581256B2 (ja) * 2011-03-28 2014-08-27 株式会社東芝 メモリシステム、コントローラ、およびメモリシステムの制御方法
US20120324143A1 (en) * 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9740439B2 (en) 2011-12-23 2017-08-22 International Business Machines Corporation Solid-state storage management

Also Published As

Publication number Publication date
CN103999060A (zh) 2014-08-20
GB201409447D0 (en) 2014-07-09
US9740439B2 (en) 2017-08-22
GB2511669A (en) 2014-09-10
US20130166822A1 (en) 2013-06-27
US9858015B2 (en) 2018-01-02
US20130166826A1 (en) 2013-06-27
US9772802B2 (en) 2017-09-26
WO2013092121A1 (en) 2013-06-27
US20140136769A1 (en) 2014-05-15

Similar Documents

Publication Publication Date Title
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE102017128952A1 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102010044531B4 (de) Autonome Speicherarchitektur
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE102013211071A1 (de) Mit geringem Mehraufwand verbundene Verbesserung der Zuverlässigkeit eines Journaling-Dateisystems unter Verwendung von Halbleiterspeicherung und Deduplizierung
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102020126663A1 (de) Speichervorrichtung zum Speichern von Daten basierend auf Schlüssel-Wert und Betriebsverfahren derselben
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112018005121T5 (de) Speichersystem unter verwendung von cloud-speicher als eine speicherbank
DE112018004247T5 (de) Datenverarbeitungsauslagerung unter verwendung einer speicherinternen codeausführung
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112010004194T5 (de) Erleichterung der Datenverdichtung während des Kopierens
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE112018005135T5 (de) Thin provisioning unter verwendung von speicherbänken auf cloud-grundlage
DE112012002796T5 (de) Übertragen von in virtuellen Datenträgern organisierten deduplizierten Daten in einen Zielsatz von physischen Medien

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final