DE112011102487T5 - Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen - Google Patents

Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen Download PDF

Info

Publication number
DE112011102487T5
DE112011102487T5 DE112011102487T DE112011102487T DE112011102487T5 DE 112011102487 T5 DE112011102487 T5 DE 112011102487T5 DE 112011102487 T DE112011102487 T DE 112011102487T DE 112011102487 T DE112011102487 T DE 112011102487T DE 112011102487 T5 DE112011102487 T5 DE 112011102487T5
Authority
DE
Germany
Prior art keywords
cache
address information
data
read
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112011102487T
Other languages
English (en)
Other versions
DE112011102487B4 (de
Inventor
Werner Bux
Robert Haas
Xiaoyu Hu
Roman A. Pletka
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 DE112011102487T5 publication Critical patent/DE112011102487T5/de
Application granted granted Critical
Publication of DE112011102487B4 publication Critical patent/DE112011102487B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/221Static RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Die vorliegende Idee stellt eine hohe Lese- und Schreibleistung von/in eine(r) Halbleiterspeichereinheit bereit. Der Hauptspeicher (31) der Steuereinheit (1) wird nicht durch eine vollständige Adressenzuordnungstabelle blockiert, welche die gesamte Speichereinheit (2) umfasst. Stattdessen ist eine derartige Tabelle in der Speichereinheit (2) selbst gespeichert, und lediglich ausgewählte Bereiche der Adressenzuordnungsinformationen werden in dem Hauptspeicher (31) in einem Lese-Cachespeicher (311) und einem Schreib-Cachespeicher (312) gepuffert. Eine Trennung des Lese-Cachespeichers (311) von dem Schreib-Cachespeicher (312) ermöglicht es, dass ein Adressenzuordnungseintrag aus dem Lese-Cachespeicher (311) geräumt werden kann, ohne dass ein Aktualisieren der zugehörigen Flash-Speicherseite nötig ist, die einen derartigen Eintrag in der Flash-Speichereinheit (2) speichert. Durch diese Konstruktion kann der Lese-Cachespeicher (311) vorzugsweise selbst in einem DRAM ohne Stromausfallschutz gespeichert werden, während der Schreib-Cachespeicher (312) vorzugsweise in nichtflüchtigem oder einem anderen ausfallsicheren Speicher umgesetzt sein kann. Dies führt zu einer Verringerung der Gesamtbereitstellung von nichtflüchtigem bzw. ausfallsicherem Speicher und zu einer verbesserten Skalierbarkeit und Leistungsfähigkeit.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein Speichersysteme, die Halbleiterspeichereinheiten wie zum Beispiel auf Flash-Speicher beruhende Speichereinheiten aufweisen, und Techniken zum effizienten Bereitstellen von Lese- und/oder Schreibzugriffen auf auf derartigen Speichereinheiten gespeicherte Daten, insbesondere mit Schwerpunkt auf dem Zuordnen von logischen auf physische Adressen.
  • HINTERGRUND
  • Halbleiterspeichereinheiten umfassen wiederbeschreibbare, nichtflüchtige Speichereinheiten, die elektronische Schaltungen zum Speichern von Daten verwenden. Derzeit werden herkömmliche Speichereinheiten wie Festplattenlaufwerke und optische Plattenlaufwerke in einigen Bereichen wie zum Beispiel in Massenspeicheranwendungen für Laptop-Computer oder Desktop-Computer in immer stärkerem Maße durch Halbleiterspeichereinheiten ersetzt. Halbleiterspeichereinheiten werden auch dahingehend untersucht, ob sie herkömmliche Speichereinheiten in anderen Bereichen wie in Unternehmens-Speichersystemen ersetzen können. Der Grund dafür liegt darin, dass Halbleiterspeichereinheiten eine außergewöhnlich hohe Bandbreite sowie eine ausgezeichnete wahlfreie E/A-(Eingabe/Ausgabe-)Leistung bieten, zusammen mit einer vorteilhaften Robustheit, da sie keine beweglichen Teile aufweisen.
  • Das Schreiben von Daten auf Flash-Speicher-Einheiten erfordert es jedoch, dass man Eigenheiten in der Flash-Technologie beachtet: NAND-Flash-Speicher sind in Einheiten von Seiten und Blöcken organisiert. Mehrere Seiten bilden einen Block. Während Lese- und Schreibvorgänge als kleinste Einheit eines derartigen Vorgangs auf Seiten angewendet werden können, können Löschvorgänge lediglich auf komplette Blöcke angewendet werden. Und während es in anderen Speichertechnologien möglich ist, nicht mehr aktuelle Daten einfach mit neuen Daten zu überschreiben, erfordert die Flash-Technologie einen Löschvorgang, bevor neue Daten in einen gelöschten Block geschrieben werden können.
  • Da Löschvorgänge in der Flash-Technologie erheblich länger dauern als Lese- oder Schreibvorgänge, wird eine Schreibtechnik angewendet, die man „außerhalb schreiben” (write out of place) nennt, wobei neue oder aktualisierte Daten in irgendeine von einer Zuordnungsfunktion für freie Seiten angebotene freie Seite geschrieben werden, anstatt sie in dieselbe Seite zu schreiben, wo sich die nicht mehr aktuellen Daten befinden. Die die nicht mehr aktuellen Daten enthaltende Seite wird als ungültige Seite gekennzeichnet. Zu irgendeinem Zeitpunkt gibt ein „Speicherbereinigung” genannter Prozess Blöcke für neue Schreibvorgänge frei, indem er den Inhalt aller gültigen Seiten eines Blocks auf freie Seiten in verschiedenen Blöcken verschiebt. Folglich weist der betreffende Block letztendlich lediglich ungültige Seiten auf und kann gelöscht werden. Während dieser Vorgang einige zusätzliche Schreib- und Lesevorgänge mehr erfordert, ist es offensichtlich, dass durch einen derartigen Ansatz unverzügliche sowie häufige Löschvorgänge vermieden werden, was zu einer wesentlich höheren Gesamtverarbeitung beiträgt als es durch den Aufwand einiger zusätzlicher Schreib- und Lesevorgänge der Fall wäre.
  • Es ist jedoch auch offensichtlich, dass die Vorgänge des Außerhalbschreibens und der Speicherbereinigung Unterstützung von einer Verwaltungsstruktur benötigen, um die physischen Adressen, an denen die Daten in dem Flash-Speicher gespeichert sind, in logische Adressen umzusetzen, die von Systemen auf oberen Schichten verwendet werden, die mit dem vorliegenden Speichersystem Daten austauschen, und umgekehrt. Bei einem Mittel zum Unterstützen einer derartigen Umsetzung kann es sich um eine LBA-PBA-Zuordnungstabelle (logische Blockadresse zu physischer Blockadresse) oder eine LPN-PPN-Zuordnungstabelle (logische Seitenzahl zu physischer Seitenzahl) in Abhängigkeit von einer Block- bzw. Seitenauflösung der Zuordnung handeln. Eine ein derartiges Adressenzuordnungsmittel und entsprechende Routinen aufweisende Verwaltungsstruktur kann vorteilhafterweise in einer Steuereinheit der Halbleiterspeichereinheit umgesetzt werden und wird konkret für Flash-Anwendungen Flash-Umsetzungsschicht (FTL, Flash Translation Layer) genannt. Die Flash-Umsetzungsschicht verbirgt jegliche Adressumsetzung gegenüber dem Host, so dass die Flash-Speicher-Umsetzungsschicht als eine Verwaltungsstruktur aufgefasst werden kann, welche die Flash-Speichereinheit für den Host als eine durch eine LBA zugreifbare Speichereinheit emuliert.
  • Bei einem Hauptspeicher der Speichersteuereinheit kann es sich um einen bevorzugten Ort zum Hinterlegen der Adressenzuordnungsinformationen aus verschiedenen Gründen handeln. Dies ist für kleine Flash-Speichergrößen sicherlich ausführbar. Mit zunehmender Kapazität von Flash-Speichern nehmen auch die Adressenzuordnungsinformationen bis zu einem Niveau zu, auf dem die gesamten Zuordnungsinformationen dazu führen, dass die Hauptspeichergröße über eine wirtschaftliche Effizienz hinausgeht.
  • Es werden mehrere Techniken zum Lösen dieses Problems vorgeschlagen. Konkret wird in „DFTL: A Flash Translation Layer Employing Demand-based Selective Caching of Page-level Address Mappings" von A. Gupta u. a., in ASPLOS'09, 7.–11. März 2009, Washington, DC, USA, zugegriffen auf und abgerufen über das Internet unter http://csl.cse.psu.edu/publications/dftl-asplos09.pdf am 8. Juli 2010, eine auf Bedarf beruhende Flash-Umsetzungsschicht DFTL (Demand-based Flash Translation Layer) vorgeschlagen, in der die gesamte logisch-physische Adressumsetzungsreihe in irgendeinem logisch festgelegten Bereich von Flash-Speicher gepflegt wird und globale Zuordnungstabelle genannt wird. Es kann jedoch lediglich eine kleine Anzahl dieser Zuordnungen im SRAM vorhanden sein. Diese aktiven Zuordnungen stellen die zwischengespeicherte Zuordnungstabelle (CMT, Cached Mapping Table) im SRAM dar. Da auf Flash-Speichern Aktualisierungen an anderer Stelle durchgeführt werden, werden Umsetzungsseiten physisch über den gesamten Flash-Speicher verteilt. DFTL behält den Überblick über all diese Umsetzungsseiten auf dem Flash-Speicher durch Verwendung eines globalen Umsetzungsverzeichnisses (GTD, Global Translation Directory). Wenn eine Anforderung bedient wird, wird der folgende Adressumsetzungsprozess angewendet:
    Wenn die benötigten Zuordnungsinformationen für die vorliegende Lese/Schreib-Anforderung in dem SRAM (in der CMT) vorhanden sind, werden sie direkt bedient, indem die Datenseite in dem Flash-Speicher unter Verwendung dieser Zuordnungsinformationen gelesen bzw. darauf geschrieben wird. Wenn die Informationen nicht in dem SRAM vorhanden sind, müssen sie aus dem Flash-Speicher in die CMT abgerufen werden, bevor die Datenseite in dem Flash-Speicher gelesen bzw. darauf geschrieben wird. Je nach dem Zustand der CMT und dem zum Ersetzen verwendeten Algorithmus kann dies jedoch das Entfernen von Einträgen aus dem SRAM mit sich bringen.
  • KURZFASSUNG DER ERFINDUNG
  • Gemäß einem ersten Aspekt ist die Erfindung als eine Speichersteuereinheit zum Steuern des Lesens und Schreibens von Daten von/auf eine(r) Halbleiterspeichereinheit ausgeführt. Die Speichersteuereinheit weist einen Lese-Cachespeicher zum Puffern von Adressenzuordnungsinformationen auf, die eine Teilmenge von in der Speichereinheit gespeicherten Adressenzuordnungsinformationen darstellen. Derartige Adressenzuordnungsinformationen beinhalten eine Zuordnung von logischen Adressinformationen zum Kennzeichnen von Daten in einem anfordernden Host zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit. Die Speichersteuereinheit umfasst ferner einen Schreib-Cachespeicher zum Puffern von Adressenzuordnungsinformationen, die in die Speichereinheit zu schreiben sind.
  • In Ausführungsformen kann die Speichersteuereinheit eine oder mehrere der folgenden Eigenschaften aufweisen:
    • – der Schreib-Cachespeicher wird insofern als eine von dem Lese-Cachespeicher getrennte Einheit gepflegt, als ein in dem Lese-Cachespeicher gepufferter Inhalt unabhängig von einem in dem Schreib-Cachespeicher gepufferten Inhalt durchsucht werden kann, und umgekehrt;
    • – entweder einen nichtflüchtigen Speicher oder einen flüchtigen ausfallsicheren Speicher, der den Schreib-Cachespeicher enthält, oder einen flüchtigen Speicher, der den Lese-Cachespeicher enthält;
    • – eine Zuordnungsfunktionseinheit zum Zuordnen von Cachespeicherplatz zu dem Lese-Cachespeicher und zu dem Schreib-Cachespeicher in Abhängigkeit von einer oder mehreren einer Schreibarbeitslast und einer Lesearbeitslast;
    • – einen Adressenzuordnungseintrag in dem Schreib-Cachespeicher, der die physischen Adressinformationen enthält, die den physischen Adressinformationen zugehörige logische Adressinformationen sowie einen Verweis zum Gruppieren von Adressenzuordnungseinträgen enthält, die zu einem gemeinsamen Adressenzuordnungsbereich gehören;
    • – der Verweis entspricht einem Zeiger zum Verweisen auf einen anderen Adressenzuordnungseintrag in dem Schreib-Cachespeicher, wobei der andere Adressenzuordnungseintrag als in einer gemeinsamen Seite der Speichereinheit gespeichert erkannt wird;
    • – eine in dem Schreib-Cachespeicher gespeicherte Datenstruktur, die eine Seitenkennung, einen Zähler zum Zählen der Anzahl von einer derartigen Seitenkennung zugehörigen Einträgen in dem Schreib-Cachespeicher sowie einen Eintragszeiger aufweist, der auf einen einer derartigen Seitenkennung zugehörigen Eintrag in dem Schreib-Cachespeicher verweist.
  • Gemäß einem anderen Aspekt ist die Erfindung als Speichersystem ausgeführt, aufweisend eine Speichersteuereinheit gemäß einer der Ausführungsformen einer derartigen Speichersteuereinheit sowie eine Halbleiterspeichereinheit zum Speichern von Daten und zum Speichern von Adressenzuordnungsinformationen zum Zuordnen von logischen Adressinformationen zum Kennzeichnen von Daten in dem auf das Speichersystem zugreifenden Host zu physischen Adressinformationen zum Kennzeichnen von Daten in dem Hauptspeicher.
  • Gemäß einem anderen Aspekt ist die Erfindung als Verfahren zum Lesen von Daten von einer Halbleiterspeichereinheit ausgeführt, wobei in der Speichereinheit Daten und Zuordnungsinformationen zum Zuordnen von logischen Adressinformationen zum Kennzeichnen von Daten in einem anfordernden Host zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit zu logischen Adressinformationen zum Kennzeichnen von Daten in einem anfordernden Host gespeichert sind. Es werden den zu lesenden Daten zugehörige logische Adressinformationen empfangen. Nach den logischen Adressinformationen wird entweder in einem Schreib-Cachespeicher zum Puffern von in die Speichereinheit zu schreibenden Adressenzuordnungsinformationen oder in einem Lese-Cachespeicher zum Puffern einer Teilmenge der in der Speichereinheit gespeicherten Adressenzuordnungsinformationen gesucht. Wenn die logischen Adressinformationen nicht in dem durchsuchten Cachespeicher gefunden werden, d. h. entweder in dem Schreib-Cachespeicher oder in dem Lese-Cachespeicher, wird nach den logischen Adressinformationen in dem anderen Cachespeicher gesucht, d. h. entweder in dem Lese-Cachespeicher oder in dem Schreib-Cachespeicher. Wenn die logischen Adressinformationen weder in dem Schreib-Cachespeicher noch in dem Lese-Cachespeicher gefunden werden, werden die den logischen Adressinformationen zugehörigen physischen Adressinformationen anhand der in der Speichereinheit gespeicherten Zuordnungsinformationen erkannt und gelesen, und für die erkannten physischen Adressinformationen wird ein Datenlesevorgang ausgegeben.
  • In Ausführungsformen kann das Leseverfahren ein oder mehrere der folgenden Eigenschaften aufweisen:
    • – wenn die logischen Adressinformationen in dem Schreib-Cachespeicher gefunden werden, werden die den logischen Adressinformationen zugehörigen physischen Adressinformationen aus einem entsprechenden Eintrag in dem Schreib-Cachespeicher erkannt, und für die erkannten physischen Adressinformationen wird ein Datenlesevorgang ausgegeben;
    • – wenn die logischen Adressinformationen in dem Lese-Cachespeicher gefunden werden, werden die den logischen Adressinformationen zugehörigen physischen Adressinformationen aus einem entsprechenden Eintrag in dem Lese-Cachespeicher erkannt, und für die erkannten physischen Adressinformationen wird ein Datenlesevorgang ausgegeben;
    • – die gelesenen physischen Adressinformationen werden zum Aktualisieren eines Eintrags in dem Lese-Cachespeicher verwendet
  • Gemäß einem anderen Aspekt ist die Erfindung als Verfahren zum Schreiben von Daten auf eine Halbleiterspeichereinheit ausgeführt, wobei in der Speichereinheit Daten und Zuordnungsinformationen zum Zuordnen von logischen Adressinformationen zum Kennzeichnen von Daten in einer Anforderung zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit gespeichert sind. Es werden Daten und den zu lesenden Daten zugehörige logische Adressinformationen empfangen. Die Daten werden an einen Ort der Speichereinheit geschrieben, der durch bestimmte physische Adressinformationen gekennzeichnet ist. Nach den logischen Adressinformationen wird in einem Schreib-Cachespeicher zum Puffern von in die Speichereinheit zu schreibenden Adressenzuordnungsinformationen gesucht. Wenn die logischen Adressinformationen nicht in dem Schreib-Cachespeicher gefunden werden, wird ein Adressenzuordnungseintrag zu dem Schreib-Cachespeicher hinzugefügt, der eine Zuordnung der logischen Adresseninformationen zu den physischen Adressinformationen, an der die Daten nun gespeichert sind, aufweist.
  • In Ausführungsformen kann das Schreibverfahren ein oder mehrere der folgenden Eigenschaften aufweisen:
    • – wenn die logischen Adressinformationen in dem Schreib-Cachespeicher gefunden werden, wird der entsprechende Adressenzuordnungseintrag in dem Schreib-Cachespeicher mit den physischen Adressinformationen aktualisiert, die den Daten neu zugewiesen wurden.
    • – nach den logischen Adressinformationen wird in einem Lese-Cachespeicher zum Puffern von eine Teilmenge der in der Speichereinheit gespeicherten Adressenzuordnungsinformationen darstellenden Adressenzuordnungsinformationen gesucht. Wenn die logischen Adressinformationen in dem Lese-Cachespeicher gefunden werden, wird der entsprechende Adressenzuordnungseintrag in dem Lese-Cachespeicher mit den physischen Adressinformationen aktualisiert, die den Daten neu zugewiesen wurden;
    • – nach den logischen Adressinformationen wird in dem Lese-Cachespeicher zu einem Zeitpunkt gesucht, zu dem der Schreib-Cachespeicher aktualisiert wird.
  • Gemäß einem anderen Aspekt ist die Erfindung als Computerprogrammprodukt ausgeführt, aufweisend ein durch einen Computer lesbares Medium, auf dem durch einen Computer lesbarer Programmcode enthalten ist, wobei der durch einen Computer lesbare Programmcode durch einen Computer lesbaren Programmcode aufweist, der so konfiguriert ist, dass er ein Lese- oder ein Schreibverfahren gemäß einer beliebigen der Ausführungsformen des Lese- bzw. des Schreibverfahrens durchführt.
  • Es sollte klar sein, dass Verfahrensschritte in einer anderen Reihenfolge als der in einem Verfahrensanspruch aufgeführten ausgeführt werden kann. Eine derartige andere Reihenfolge ist auch in dem Umfang eines derartigen Anspruchs enthalten, genau wie die vorliegend aufgeführte Reihenfolge der Schritte.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung und ihre Ausführungsformen wird man vollständig unter Bezugnahme auf die folgende ausführliche Beschreibung von aktuelle bevorzugten, jedoch trotzdem veranschaulichenden Ausführungsformen gemäß der vorliegenden Erfindung verstehen, wenn man diese in Verbindung mit den beigefügten Zeichnungen liest.
  • Die Figuren veranschaulichen:
  • 1 ein Blockschaltbild eines Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung,
  • 2 eine weitere Darstellung des Speichersystems aus 1,
  • 3 ein Schaubild, das einen Leseprozess gemäß einer Ausführungsform der Erfindung veranschaulicht,
  • 4 einen Ablaufplan, der einen Leseprozess gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht,
  • 5 ein Schaubild, das einen Schreibprozess gemäß einer Ausführungsform der Erfindung veranschaulicht,
  • 6 einen Ablaufplan, der einen Schreibprozess gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht,
  • 7 in Schaubild a) eine Ausführungsform von Einträgen in einem Schreib-Cachespeicher und in Schaubild b) eine Datenstruktur gemäß einer Ausführungsform der vorliegenden Erfindung zur Verwendung in einer Schreib-Cachespeicher-Bereinigungsroutine.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Als Einleitung für die folgende Beschreibung wird zunächst auf einen allgemeinen Aspekt der Erfindung hingewiesen, der eine Speichersteuereinheit zum Steuern des Lesens und Schreibens von Daten von/auf eine(r) Halbleiterspeichereinheit betrifft. Es wird ein Lese-Cachespeicher zum Puffern von Adressenzuordnungsinformationen bereitgestellt, die eine Teilmenge von in der Speichereinheit gespeicherten Adressenzuordnungsinformationen darstellen. Die Adressenzuordnungsinformationen enthalten eine Zuordnung von logischen Adressinformationen zum Kennzeichnen von Daten in einem anfordernden Host zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit. Zusätzlich zu dem Lese-Cachespeicher wird ein zweckbestimmter Schreib-Cachespeicher zum Puffern von in die Speichereinheit zu schreibenden Adressenzuordnungsinformationen bereitgestellt. Anders ausgedrückt, das vorliegende Konzept ist selbst auf Halbleiterspeichereinheiten mit riesiger Kapazität anwendbar, da die vollständigen Adressenzuordnungsinformationen in der Halbleiterspeichereinheit selbst gespeichert werden. Es werden lediglich Teile davon in einem Lese-Cachespeicher in der Steuereinheit gepuffert – wobei die Teile gemeinschaftlich eine Teilmenge der Adressenzuordnungsinformationen genannt werden. Der Lese-Cachespeicher kann vorübergehend Adressenzuordnungsinformationen puffern, die zum Beispiel als häufiger verwendet als andere Adressenzuordnungsinformationen erkannt werden, so dass eine durch einen Host ausgegebene Leseanforderung schneller bedient werden kann, da die gesuchte Adressenzuordnung aus dem Lese-Cachespeicher entnommen werden kann, wenn sie darin gefunden wird.
  • Man beachte, dass in bevorzugten Ausführungsformen eine Teilmenge von in der Speichereinheit gespeicherten Daten in einem getrennten Daten-Cachespeicher gepuffert sein können, um einen schnellen Zugriff auf derartige Daten zu erhalten. Es kann Ausführungsformen geben, in denen ein derartiger Daten-Cachespeicher – sei es auf Grund der Unterstützung des Lesens und/oder Schreibens von Daten – in demselben physischen Cachespeicher wie der Lese- und Schreib-Cachespeicher zum Puffern von Adressenzuordnungsinformationen umgesetzt sein kann, wobei jedoch der Lese-Cachespeicher für die Adressenzuordnung dann insofern logisch getrennt von dem Daten-Cachespeicher sein kann, als nach in dem Lese-Cachespeicher für die Adressenzuordnung gepufferten Inhalt unabhängig von in dem Daten-Cachespeicher gepufferten Inhalt gesucht werden kann, und umgekehrt. Der Lese-Cachespeicher in einer ersten Instanz speichert lediglich Adressenzuordnungsinformationen zum Bedienen von Leseanforderungen. In einem derartigen Szenario enthält der Lese-Cachespeicher vorzugsweise keine Adressenzuordnungsinformationen, die vorher geändert oder hinzugefügt wurden und die zum dauerhaften Speichern noch in die Speichereinheit geschrieben werden müssen. Eine derartige Adressenzuordnung wird in einem anderen Cachespeicher gepuffert, d. h. in dem Schreib-Cachespeicher. Der Schreib-Cachespeicher in einer ersten Instanz speichert lediglich Adressenzuordnungsinformationen, die zum dauerhaften Speichern noch in die Speichereinheit geschrieben werden müssen. In diesem Zusammenhang wird es bevorzugt, dass der Schreib-Cachespeicher insofern logisch getrennt von dem Lese-Cachespeicher ist, als der Schreib-Cachespeicher vorzugsweise keine Teilmenge der Adressenzuordnungsinformationen der Speichereinheit enthält, die lediglich zum Beschleunigen von Leseanforderungen dienen. Es kann Ausführungsformen geben, in denen zusätzlich ein getrennter Daten-Cachespeicher zum vorübergehenden Puffern von Daten bereitgestellt wird, die zum dauerhaften Speichern noch in die Speichereinheit geschrieben werden müssen. Ein derartiger Daten-Cachespeicher kann in demselben physischen Cachespeicher umgesetzt sein, wobei jedoch der Schreib-Cachespeicher für die Adressenzuordnung dann insofern logisch getrennt von dem Daten-Cachespeicher sein kann, als nach dem in dem Schreib-Cachespeicher für die Adressenzuordnung gepufferten Inhalt unabhängig von in dem Daten-Cachespeicher gepufferten Inhalt gesucht werden kann, und umgekehrt. Sowohl der Lese- als auch der Schreib-Cachespeicher können zum Beispiel in einer am längsten ungenutzten (LRU, least recently used) oder anderen Strategie zum Ersetzen von Zwischenspeicher und unabhängig voneinander gepflegt werden. Man beachte, dass zwischen jedem der Lese- und Schreibschritte speziell dafür vorgesehene Arbeitsschritte zum Pflegen von Cachespeicher (Zähler) ausgeführt werden können. Da diese von der verwendeten Zwischenspeicherungstechnologie abhängen, werden sie hier nicht weiter aufgeführt.
  • Die Schreib- und Lese-Cachespeicher können in einem speziell dafür vorgesehenen Hauptspeicherbereich in der Steuereinheit umgesetzt sein. Diese Cachespeicher können als Tabellen oder Hash-Zuordnungen oder in einer anderen Datenstrukturform organisiert sein. Die Einträge in dem Lese-Cachespeicher sind vorzugsweise in Metadateneinträge organisiert, wobei jeder dieser Einträge eine logische Adresse und eine der logischen Adresse zugehörige physische Adresse enthält, wobei die Einträge zusammenhängend oder nicht zusammenhängend sein können. Bei den Einträgen in dem Schreib-Cachespeicher kann es sich um einzelne logisch-physische Adressenzuordnungen handeln, die vorzugsweise in Blöcken organisiert sind, denen sie zugehören. In einer bevorzugten Ausführungsform kann der Schreib-Cachespeicher insofern ebenfalls physisch getrennt von dem Lese-Cachespeicher sein, als beide Cachespeicher verschiedene Speichertechnologien verwenden, auf denen sie beruhen. In einer Ausführungsform kann der Schreib-Cachespeicher in einem nichtflüchtigen Speicher umgesetzt sein, während der Lese-Cachespeicher in einem flüchtigen Speicher umgesetzt sein kann. In diesem Zusammenhang handelt es sich bei einem bevorzugten flüchtigen Speicher um einen SRAM oder einen DRAM und bei einem bevorzugten nichtflüchtigen Speicher um Phasenwechselspeicher (PCM, Phase Change Memories) oder MRAM. In einer anderen Ausführungsform kann der Schreib-Cachespeicher auch in einem flüchtigen Speicher umgesetzt sein, wobei es sich bei einem derartigen Speicher bzw. zumindest dem Teil des Speichers, in dem der Schreib-Cachespeicher umgesetzt ist, jedoch um einen ausfallsicheren Speicher handeln kann, der als Speicher verstanden wird, dem Ausfallsicherungselemente hinzugefügt werden, die einen Verlust von in dem Schreib-Cachespeicher gespeicherten Adressenzuordnungen als Reaktion auf ein Abschalten der Steuereinheit verhindern. Derartige Elemente können Stromausfallüberbrückungssysteme wie einen batteriegepufferten SDRAM oder Notfallroutinen für das Speichern der Adressenzuordnungen von dem flüchtigen Schreib-Cachespeicher in einen nichtflüchtigen Speicher nach einer Abschaltung für Notfälle aufweisen. In einer anderen Ausführungsform kann der komplette Hauptspeicher gemäß den Erfordernissen für den Schreib-Cachespeicher ausgeführt sein, zum Beispiel als batteriegepufferter SDRAM, PCM oder MRAM.
  • Bei der Halbleiterspeichereinheit handelt es sich vorzugsweise um eine nichtflüchtige, elektrisch wiederbeschreibbare Speichereinheit wie eine auf NAND-Flash-Speicher beruhende Speichereinheit. Es können jedoch auch andere Halbleiterspeichereinheiten wie PCM verwendet werden. Es sei darauf hingewiesen, dass der Begriff „Einheit” nicht auf einen einzelnen Speicherchip beschränkt ist. Im Gegenteil ist es bevorzugt, dass der Begriff Einheit mehrere Speicherchips beinhalten kann, die gemeinsam eine Speichereinheit bilden. Im Folgenden wird auf eine Flash-Speichereinheit als eine bevorzugte Ausführungsform verwiesen, obwohl man verstehen wird, dass alle der zusammen mit der Flash-Speichereinheit vorgestellten Eigenschaften auch in Verbindung mit anderen, in anderen Halbleitertechnologien umgesetzten Speichereinheiten offengelegt werden sollen.
  • In seiner ordnungsgemäßen Betriebsumgebung ist ein eine Speichersteuereinheit und eine Flash-Speichereinheit aufweisendes Speichersystem mit einem digitalen Host-System – kurz Host genannt – wie einem Host-Computersystem, einer Blockeinheit oder einem Dateisystem oder anderweitig verbunden. Die Flash-Speichereinheit stellt einen nichtflüchtigen Massenspeicher zur Verwendung durch den Host bereit. In der Flash-Speichereinheit zu speichernde bzw. davon zu lesende Daten werden von dem Host mit einer aus einer Vielzahl von logischen Adressinformationen wie einer logischen Blockadresse (LBA) aufgerufen. Das Speichersystem wandelt die logischen Adressinformationen entweder in eine Vielzahl von physischen Adressinformationen um, durch die auf die in der Flash-Speichereinheit gespeicherten Daten zugegriffen werden kann. Als solche wird eine Zuordnung, z. B. in Form einer Tabelle, zwischen den an dem Host verwendeten logischen Adressen und den in der Speichereinheit verwendeten physischen Adressen benötigt, wobei die Adressenzuordnungsinformationen vorzugsweise in der Flash-Speichereinheit selbst gespeichert werden. Die Adressenzuordnungsinformationen können über die gesamte Flash-Speichereinheit verteilt sein und können als solche eine verteilte Adressenzuordnungstabelle darstellen. Aus Gründen der Fehlertoleranz ist es bevorzugt, dass mehrere Kopien der vollständigen Adressenzuordnungsinformationen an verschiedenen Orten der Flash-Speichereinheit gespeichert werden können. Es ist bevorzugt, dass die gesamten Adressenzuordnungsinformationen in der Flash-Speichereinheit gespeichert sind, während aus Gründen der Leistungsfähigkeit ein Lese- und Schreib-Cachespeicher in dem Hauptspeicher der Steuereinheit gepflegt werden. Durch einen derartigen Ansatz können Speichersysteme mit einer Hochleistungs-Flash-Speichereinheit mit großer Kapazität umgesetzt werden, wobei die großen Adressenzuordnungstabelle in diesen Systemen in der Flash-Speichereinheit selbst gespeichert sind und in der Steuereinheit ein Cachespeicher des Hauptspeichers zum vorübergehenden Speichern und schnellen Zugreifen auf logisch-physische Adressenzuordnungsinformationen bereitgestellt werden kann.
  • Ein Eintrag in der in der Flash-Speichereinheit gespeicherten Adressenzuordnungstabelle weist logischen Adressinformationen physische Adressinformationen zu. Konkret weist ein Speicherchip wie ein typischer NAND-Flash-Speicherchip – sei es ein Chip mit Single-Level-Cells (SLC) für das Codieren von Binärdaten oder mit Multi-Level-Cells (MLC) für das Codieren von mehrstufigen Daten – mehrere Blöcke auf, wobei ein Block z. B. aus 64 Seiten besteht, wobei jede Seite 4 KB Speicherplatz umfasst. Daraus ergibt sich eine Blockgröße von 256 KB. Normalerweise können Flash-Seiten unter Verwendung von Adressen abgerufen werden, die in ein 32-Bit-Wort codiert sind, was die Höchstkapazität einer kompletten Flash-Speichereinheit in einer Ausführungsform auf 2^32·4 KB = 16 TB beschränkt. Die Adressenzuordnungstabelle kann einen Adresseintrag für jede Seite speichern, wobei ein Adresseintrag üblicherweise die physische (Seiten-)Adresse und die logische (Seiten-)Adresse aufweist. Somit kann ein Block der Flash-Speichereinheit, in der ausschließlich Adressinformationen gespeichert sind – auch Adressenzuordnungsblock genannt – zum Beispiel höchstens 65536 Adressenzuordnungseinträge speichern.
  • Um die nachlassende Funktionsfähigkeit eines derartigen Adressenzuordnungsblocks auszugleichen, werden diese Blöcke ebenfalls außerhalb geschrieben, und die gesamte Adressenzuordnungstabelle ist deshalb nicht zusammenhängend in der Flash-Speichereinheit gespeichert, sondern stattdessen in einzelne Teiltabellen mit Blockgröße aufgeteilt, die über die Flash-Speichereinheit verteilt sind. Es ist jedoch bevorzugt, dass ein Adressenzuordnungsinformationen enthaltender Block zusätzlich zu den Adressenzuordnungsinformationen keine Benutzerdaten speichert. Da die Adressenzuordnungsblöcke über die gesamte Flash-Speichereinheit verteilt sind, ist es bevorzugt, eine Datenstruktur zu pflegen, welche die physischen Adressen enthält, wo derartige Adressenzuordnungsblöcke gefunden werden können. Eine derartige Datenstruktur kann auch als Tabelle organisiert sein, auch bekannt als Blockzuordnungstabelle, die einer Blockadresse eines Adressenzuordnungsblocks einen Bereich von Seitenadressen zuordnet. Diese Blockzuordnungstabelle ist erheblich kleiner als die vollständige, über die Flash-Speichereinheit verteilte Adressenzuordnungstabelle. Bei einer Flash-Speichereinheit mit einer Gesamtkapazität von 2 TB nimmt die vollständige Adressenzuordnungstabelle zum Beispiel 2 GB an 4 Byte großen Zuordnungseinträgen in Anspruch, Zuordnungseinträge mit 1 K können in einer Seite gespeichert werden, und Zuordnungseinträge mit 64 K können in einem Block gespeichert werden, wodurch zum Speichern der Adressenzuordnungstabelle Blöcke mit 8 K benötigt werden. Angenommen, jeder dieser 8 K-Blöcke kann durch 4 Bytes aufgerufen werden, dann kann die Blockzuordnungstabelle 32 KB belegen, was lediglich 8 Seiten entspricht. Auf ähnliche Weise könnte in einer anderen Ausführungsform jede Seite mit Zuordnungseinträgen einzeln anstatt eines vollen Blocks aufgerufen werden, wodurch Seiten mit 512 K durch 4 Bytes aufgerufen werden, wobei 2 MB für die Blockzuordnungstabelle verwendet werden. In einer vorteilhaften Lösung wird die Blockzuordnungstabelle ganz am Anfang aus einzelnen globalen Zuordnungsblöcken aufgebaut, die sich in der Flash-Speichereinheit befinden, und in dem Hauptspeicher gepuffert, um einen schnellen Zugriff zu bieten.
  • Die Steuereinheit, auf die oben verwiesen wird, ist so ausgestaltet, dass sie durch die Flash-Speichereinheit durchgeführte Arbeitsschritte steuert. Die Steuereinheit verwaltet Daten in dem Flash-Speicher allgemein und steuert interne Verwaltungsvorgänge. In einer Ausführungsform ist die Steuereinheit von der Flash-Speichereinheit getrennt. In einer alternativen Ausführungsform ist die Steuereinheit ein Bestandteil der Flash-Speichereinheit selbst. In noch einer weiteren Ausführungsform kann die Steuereinheit physisch in eine oder mehrere Teilsteuereinheiten aufgeteilt sein, die jeweils einen Teil der Flash-Speichereinheit steuern und/oder lediglich bestimmte Flash-Verwaltungsaufgaben durchführen. In einer anderen bevorzugten Ausführungsform bezieht sich der Begriff „Steuereinheit” in der Verwendung hierin auf eine anwendungsspezifische integrierte Schaltung (ASIC, application specific integrated circuit) oder auf frei programmierbare Verknüpfungsfelder (FPGA, field programmable gate arrays), auf eine elektronische Schaltung, einen oder mehrere Prozessoren (gemeinsam genutzt, speziell dafür vorgesehen oder in Gruppen) sowie auf einen eine oder mehrere Software- oder Firmware-Programme/Algorithmen durchführenden Hauptspeicher, eine Kombinationslogikschaltung und/oder andere geeignete Komponenten, welche die beschriebene Funktionalität bereitstellen.
  • 1 veranschaulicht die Grundelemente eines Speichersystems 1 gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung. Das Speichersystem 1 enthält allgemein eine Flash-Speichereinheit 2, die mit einer Steuereinheit 3 Signale austauscht. Ein Host 4 ist mit dem Speichersystem 1 und insbesondere mit der Steuereinheit 3 des Speichersystems 1 verbunden. Bei dem Host 4 kann es sich speziell um eine beliebige Einheit handeln, die das Lesen von Daten von dem Speichersystem 1 und das Schreiben von Daten in das Speichersystem 1 anfordert.
  • Die Steuereinheit 3 steuert die notwendigen Funktionalitäten (z. B. Ausgleich nachlassender Funktionsfähigkeit, Umsetzung von logischen in physische Adressen unter Verwendung von Adressenzuordnungstabellen, Pflegen dieser Zuordnungstabellen, Speicherbereinigung, usw.) der Flash-Speichereinheit 2. Die Steuereinheit 3 weist einen Hauptspeicher 31 auf, der einen Lese-Cachespeicher 311, einen Schreib-Cachespeicher 312 und einen Hauptspeicherbereich 313 für andere Aufgaben sowie einen Prozessor 32 gemeinsam mit anderen, nicht weiter gezeigten Komponenten aufweist.
  • Die Flash-Speichereinheit 2 beinhaltet eine Reihe von Seiten 12 auf, die zusammen in Blöcke 13 gruppiert sind (z. B. 64 Seiten pro Block). Die Blöcke 13 der Flash-Speichereinheit 2 können sich physisch auf anderen Flash-Speicherchips befinden, und die Flash-Speicherchips können in Kanäle gruppiert sein, durch welche die Flash-Speicherchips von der Steuereinheit 3 gesteuert werden. Deshalb kann die Flash-Speichereinheit 2 als zusammenhängender virtueller Speicherplatz über sämtliche in der Flash-Speichereinheit 2 vorhandenen Flash-Speicherchips gesehen werden. Die Anzahl von Blöcken 13 und Seiten 12 pro Block 13 sowie die Anzahl von Chips und Kanälen können je nach Anwendung schwanken und sollten nicht auf die hierin gezeigten Konfigurationen beschränkt sein.
  • Die Flash-Speichereinheit 2 weist Metadatenstrukturen auf, die aus einer oder einer Reihe von Schlüsselinformationen bestehen, so zum Beispiel Adressenzuordnungstabellen, eine Liste mit beschädigten Blöcken, Fehlerkorrekturcodes usw. Diese Metadatenstrukturen werden in der Flash-Speichereinheit 2 gemeinsam mit normalen Daten gespeichert und beim Hochfahren wiederhergestellt.
  • In 2 ist eine andere Darstellung der Ausführungsform des Speichersystems 1 gemäß 1 veranschaulicht. 2 stellt eine Ansicht der verschiedenen beteiligten Speicher dar und zeigt durch Pfeile Aktionen zwischen den verschiedenen Speicherelementen an.
  • In einem Abschnitt unterhalb der gestrichelten Linie ist die Flash-Speichereinheit 2 durch mehrere Blöcke 13 dargestellt, die in Form von nebeneinander liegenden Säulen gezeigt sind. Jeder Block 13 enthält wiederum mehrere Seiten, die als waagrechter Strich gezeigt sind. Die Blöcke 13 sind gemäß ihrem Inhalt gekennzeichnet: Der Verweis 131 gibt Blöcke an, die Benutzerdaten oder allgemein Daten enthalten. Der Verweis 132 gibt Blöcke an, die Adressenzuordnungsinformationen enthalten, und insbesondere durchgehende LBA-PBA-Zuordnungsinformationen. Üblicherweise weist ein Adressenzuordnungsblock 132 Seiten auf, die ausschließlich LBA-PBA-Zuordnungsinformationen speichern. Vorzugsweise enthalten derartige Adressenzuordnungsblöcke 132 keine Benutzerdaten. Und der Verweis 133 gibt globale Zuordnungsblöcke an, wobei die Blöcke 133 ausschließlich Informationen darüber enthalten können, welche Blöcke der Flash-Speichereinheit 2 als Adressenzuordnungsblöcke 132 ausgeführt sind. Die globalen Zuordnungsblöcke 133 speichern somit gemeinsam die vollständigen Informationen darüber, wo Adressenzuordnungsblöcke in der Flash-Speichereinheit zu finden sind. Eine Kombination aus allen globalen Zuordnungsblöcken 133 wird auch als Blockzuordnungstabelle 5 bezeichnet. Vorzugsweise wird der Adressversatz eines Adressenzuordnungsblocks 132 implizit durch die Position in der Blockzuordnungstabelle 5 angegeben. Folglich ordnet ein globaler Zuordnungsblock 133 einen Bereich von Seitenadressen einer physischen Blockadresse zu, welche die Adressenzuordnungsinformationen für diesen Bereich speichert, und gibt somit an, an welcher physischen Adresse in der Flash-Speichereinheit der Adressenzuordnungsblock 132 beginnt. Insgesamt können die LBA-PBA-Zuordnungsinformationen gemeinsam mit Daten als protokollstrukturierte Anordnung in der Flash-Speichereinheit 2 organisiert sein, wodurch sie ebenfalls außerhalb geschrieben werden.
  • In einem Abschnitt über der gestrichelten Linie weist eine Darstellung des Hauptspeichers 31 einen Lese-Cachespeicher 311, einen Schreib-Cachespeicher 312 und einen Hauptspeicherabschnitt 313 auf. Der Lese-Cachespeicher 311 weist Adressenzuordnungsinformationen in Form von Adressenzuordnungseinträgen zum Unterstützen von Leseanforderungen auf. Zwei Blöcke 132 mit Adressenzuordnungsinformationen sind in dem Schaubild schematisch veranschaulicht. Der Schreib-Cachespeicher 312 weist Adresseninformationen auf, die in die Flash-Speichereinheit 2 zu schreiben sind. In dem Schaubild sind drei zu schreibende Blöcke 134 mit Adressenzuordnungsinformationen schematisch veranschaulicht. Der Hauptspeicherabschnitt 313 speichert eine Datenstruktur, die Blockzuordnungstabelle 5 genannt wird. Die Blockzuordnungstabelle 5 umfasst Informationen darüber, wo in der Flash-Speichereinheit 2 Adressenzuordnungsblöcke 132 zu finden sind. Beim Hochfahren werden globale Zuordnungsblöcke 133 aus der Speichereinheit 2 abgerufen und in den Hauptspeicher 31 kopiert, um das Nachschlagen von Adressenzuordnungsinformationen zu unterstützen. Pfeile von den globalen Zuordnungsblöcken 133 in der Flash-Speichereinheit 2 zu der Blockzuordnungstabelle 5 sollen das Aufbauen der Blockzuordnungstabelle 5 durch diese einzelnen globalen, in der Flash-Speichereinheit 2 gespeicherten Zuordnungsblöcke 133 veranschaulichen. Pfeile zwischen der Blockzuordnungstabelle 5 und den Adressenzuordnungsblöcken 132 in der Flash-Speichereinheit 2 sollen anzeigen, dass der (Block- und Seiten-)Inhalt der Blockzuordnungstabelle 5 auf Stellen in der Flash-Speichereinheit verweist, wo sich die Adressenzuordnungsblöcke 132 befinden. Insofern stellen die Einträge in der Blockzuordnungstabelle 5 Zeiger auf die Adressenzuordnungsblöcke 132 in der Flash-Speichereinheit 2 dar. In einer anderen Ausführungsform könnten diese Einträge Zeiger auf Seiten darstellen, die Adressenzuordnungsinformationen speichern.
  • Die Pfeile zwischen der Flash-Speichereinheit 2 und dem Lese-Cachespeicher 311 geben an, dass von den Adressenzuordnungsblöcken 132 in der Flash-Speichereinheit 2 abgerufene Adressenzuordnungsinformationen an den Lese-Cachespeicher 311 übertragen werden, sobald angenommen wird, dass derartige Informationen in dem Lese-Cachespeicher 311 von Nutzen sind. Üblicherweise können derartigen Adressenzuordnungen zugehörige Daten, auf die häufig zugegriffen wird, für ein Übertragen in den Lese-Cachespeicher 311 ausgewählt werden. Es sind viele Algorithmen zum Auswählen der am besten geeigneten Einträge zum Weiterleiten von der Speichereinheit 2 zu dem Lese-Cachespeicher 311 und wie diese Einträge aus dem Lese-Cachespeicher 311 entfernt werden bekannt, die alle auf unterschiedlichen Strategien beruhen. Als Beispiel kann ein LRU-Algorithmus (Least Recently Used, am längsten ungenutzt) zum Pflegen von Adressenzuordnungseinträgen in dem Lese-Cachespeicher 311 umgesetzt werden. Man beachte, dass es keine Notwendigkeit dafür gibt, einen Adressenzuordnungsblock 132 in seiner Gesamtheit in den Lese-Cachespeicher 311 zu übertragen; stattdessen kann eine Seitenübertragung geplant werden, da ein Lesevorgang in Flash-Speicher mit feinster Granularität eine Seite umfasst. Gemäß einer bevorzugten Ausführungsform können jedoch vollständige Adressenzuordnungsblöcke 132 von der Flash-Speichereinheit 2 in den Lese-Cachespeicher 311 übertragen werden. Pfeile zwischen dem Lese-Cachespeicher 311 und der Flash-Speichereinheit 2 geben an, dass LBA/PBA-Zuordnungseinträge in dem Lese-Cachespeicher 311 auf Datenblöcke 131 in der Flash-Speichereinheit 2 verweisen, so dass die Daten unmittelbar von der entsprechenden physischen Adresse in der Flash-Speichereinheit 2 abgerufen werden können, sobald der entsprechende Zuordnungseintrag in dem Lese-Cachespeicher 311 gefunden wird.
  • Einträge in dem Lese-Cachespeicher 311 können nach und nach nicht mehr aktuell sein. Von Zeit zu Zeit kann ein geeigneter Mechanismus zum Ersetzen angewendet werden. Falls der Lese-Cachespeicher 311 voll ist und es sich anbietet, dass ein neuer Adressenzuordnungseintrag in den Lese-Cachespeicher 311 übertragen wird, kann wiederum ein geeigneter Algorithmus angewendet werden, um zu ermitteln, welcher aktuelle Eintrag dafür aus dem Lese-Cachespeicher 311 entfernt werden kann. Es sei angemerkt, dass es vorzugsweise systematisch keine in die Flash-Speichereinheit 2 zu schreibenden Einträge in dem Lese-Cachespeicher 311 gibt.
  • Sämtliche Einträge, die noch in die Flash-Speichereinheit 2 zu schreiben sind, befinden sich in dem Schreib-Cachespeicher 312. Der Pfeil zwischen dem Schreib-Cachespeicher 312 und der Flash-Speichereinheit 2 gibt an, dass Einträge in dem Schreib-Cachespeicher 312 zu einem bestimmten Zeitpunkt in die Flash-Speichereinheit 2 geschrieben werden dürfen. Da es sich bei den Einträgen in dem Schreib-Cachespeicher 312 um Adressenzuordnungseinträge handelt, werden diese Einträge in die Adressenzuordnungsblöcke 312 geschrieben, die ausschließlich für Adressenzuordnungsinformationen reserviert sind. Da die kleinste Granularität beim Schreiben in Flash-Speicher eine Seite ist, wird mindestens eine Seite aus dem Schreib-Cachespeicher 312 in einen Adressenzuordnungsblock 312 der Speichereinheit 2 geschrieben, vorzugsweise als ein Schreibvorgang außerhalb. Gemäß einer anderen Ausführungsform der Erfindung kann der Schreib-Cachespeicher 312 jedoch auch einzelne Adressenzuordnungseinträge speichern, die in Blöcke organisiert sind, zu denen sie gehören. Dies unterstützt das Schreiben eines vollständigen Blocks in einen freien Block in der Flash-Speichereinheit 2.
  • 3 veranschaulicht einen Leseprozess gemäß einer Ausführungsform der Erfindung, beruhend auf einer Veranschaulichung, die ähnlich wie die in 2 verwendete ist. Nun sind Prozessschritte enthalten und durch Bezugszeichen angegeben.
  • Ein Host 4 gibt eine Anforderung 10 an das Speichersystem 1 zum Lesen spezifischer Daten aus der Flash-Speichereinheit 2 aus. Zum Kennzeichnen der Daten an dem Host stellt der Host zusammen mit den Daten logische Adressinformationen bereit. Als Reaktion auf ein Empfangen der logischen Adressinformationen durchsucht die Steuereinheit des Speichersystems den Schreib-Cachespeicher 312 nach einem Eintrag, der derartige logische Adressinformationen enthält, Schritt 11. Wenn derartige logische Adressinformationen in dem Schreib-Cachespeicher 312 gefunden werden, Schritt 12, enthält der entsprechende Eintrag eine der logischen Adresse zugehörige physische Adresse, wobei die physische Adresse angibt, wo in der Flash-Speichereinheit 2 sich die angeforderten Daten befinden. Die Steuereinheit kann dann einen Datenlesevorgang ausgeben, Schritt 13, um die Daten aus dieser physischen Adresse abzurufen, und den Host mit den Daten versorgen. Der Datenlesevorgang kann in Abhängigkeit von dem Betriebssystem des Speichersystems und der Schnittstelle zu dem Host einige Einzelschritte aufweisen. Wenn jedoch kein Eintrag mit den angeforderten logischen Adressinformationen in dem Schreib-Cachespeicher gefunden wird, d. h., wenn die logische Adresse nicht gefunden wird und folglich eine zugehörige physische Adresse nicht erkannt werden kann, wird der Lese-Cachespeicher 311 nach einem Eintrag durchsucht, der derartige logische Adressinformationen enthält, Schritt 14. Wenn derartige logische Adressinformationen als sich in dem Lese-Cachespeicher 311 befindlich gefunden werden, Schritt 15, enthält ein derartiger Eintrag die zugehörige physische Adresse, die angibt, wo in der Flash-Speichereinheit 2 sich die angeforderten Daten befinden. Die Steuereinheit kann dann einen Datenlesevorgang ausgeben, Schritt 13, um die Daten aus dieser physischen Adresse abzurufen, und den Host mit den Daten versorgen. Wenn jedoch kein Eintrag mit den angeforderten logischen Adressinformationen in dem Lese-Cachespeicher 311 gefunden wird, d. h., wenn die logischen Adressinformationen nicht gefunden werden und folglich zugehörige physische Adressinformationen nicht erkannt werden können, leitet die Steuereinheit eine Suche in der Blockzuordnungstabelle 5 in dem Hauptspeicher ein, Schritt 16, um den entsprechenden Adressenzuordnungsblock 132 von der Flash-Speichereinheit 2 abzurufen und die physischen Adressinformationen daraus zu erkennen, Schritt 17. Folglich wird ein Datenlesevorgang, Schritt 13, von der Steuereinheit ausgegeben, um die der erkannten physischen Adresse zugehörigen Daten abzurufen. In diesem Szenario kann es bevorzugt sein, den Lese-Cachespeicher 311 entsprechend zu aktualisieren, Schritt 18, da der Lese-Cachespeicher 311 keinen Zuordnungseintrag bereitgestellt hat, der den gerade zuvor durch den Host angeforderten Daten zugehörig ist. In Abhängigkeit von dem zum Pflegen des Lese-Cachespeichers 311 angewendeten Algorithmus kann die Steuereinheit einen Vorgang einleiten, in dem der den Daten zugehörige Adressenzuordnungseintrag – oder die/der entsprechende Seite bzw. Block – einfach zu dem Lese-Cachespeicher 311 hinzugefügt werden kann, vorausgesetzt, der Lese-Cachespeicher 311 ist noch nicht voll. Oder, falls der Lese-Cachespeicher 311 bereits voll ist, wird ein Eintrag – oder ein(e) entsprechende(r) Seite bzw. Block – erkannt, der aus dem Lese-Cachespeicher 311 zu entfernen ist und durch den obigen Adressenzuordnungseintrag ersetzt wird.
  • In dem Ablaufplan aus 4 ist ein Verfahren zum Lesen von Daten von einem Halbleiterspeicher veranschaulicht. In Schritt 20 empfängt eine Steuereinheit eines Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung eine Leseanforderung 20 von einer oberen Schicht. Die Anforderung enthält logische Adressinformationen zum Kennzeichnen der zu lesenden Daten. In Schritt 21 sucht die Steuereinheit in einem Schreib-Cachespeicher 312 nach den logischen Adressinformationen, wobei der Schreib-Cachespeicher 312 zum Puffern von in eine Flash-Speichereinheit des Speichersystems zu schreibenden Zuordnungsinformationen ausgelegt ist. Es wird ermittelt, ob die logischen Adressinformationen in dem Schreib-Cachespeicher gefunden werden, Schritt 22. Wenn sie gefunden werden, heißt das, dass die physischen Adressinformationen, die angeben, wo sich die Daten in der Flash-Speichereinheit befinden, erkannt werden, da diese physischen Adressinformationen den logischen Adressinformationen in dem entsprechenden Eintrag in dem Schreib-Cachespeicher zugeordnet sind. In einem derartigen Fall (J) gibt die Steuereinheit in Schritt 23 einen Datenlesevorgang aus. Wenn die logischen Adressinformationen nicht in dem Schreib-Cachespeicher gefunden werden (N), wird nach den von der oberen Schicht bereitgestellten logischen Adressinformationen in dem Lese-Cachespeicher gesucht, Schritt 24. Es wird ermittelt, ob die logischen Adressinformationen in dem Lese-Cachespeicher gefunden werden, Schritt 25. Wenn die gesuchten Informationen in dem Lese-Cachespeicher gefunden werden (J), gibt die Steuereinheit in Schritt 23 einen Datenlesevorgang aus, da sämtliche Informationen zum Abrufen der Daten vorliegen. Vorzugsweise enthält der Datenlesevorgang die physischen Adressinformationen als Parameter, und die Rückmeldung dieses Vorgangs sind die Daten. Wenn jedoch die gesuchten Informationen nicht in dem Lese-Cachespeicher gefunden werden (N), erkennt die Steuereinheit die den logischen Adressinformationen zugehörigen physischen Adressinformationen mit Hilfe der in der Speichereinheit gespeicherten Zuordnungsinformationen, Schritt 26. Ein derartiges Erkennen wird vorzugsweise mit Hilfe der Blockzuordnungstabelle 5 erreicht, auf die in Verbindung mit der Ausführungsform aus 3 verwiesen wurde. Schließlich gibt die Steuereinheit einen Datenlesevorgang in Bezug auf die erkannten physischen Adressinformationen aus, Schritt 23. Optional kann ein Vorgang zum Aktualisieren des Lese-Cachespeichers folgen, Schritt 27. Gemäß einer anderen Ausführungsform der Erfindung und wie als Schritt 28 in 4 abgebildet, kann das Verhältnis zwischen dem Hauptspeicherbereich, der für den Lese-Cachespeicher und dem, der für den Schreib-Cachespeicher verwendet wird, dynamisch an die aktuelle Lese- und/oder Schreibarbeitslast angepasst werden, um die Gesamtleistungsfähigkeit der Steuereinheit zu optimieren. Ein derartiges Verhältnis kann nach jedem Leseprozess ermittelt werden, und die Größen der Cachespeicher können entsprechend angepasst werden.
  • Ob zuerst der Schreib-Cachespeicher oder der Lese-Cachespeicher durchsucht wird, kann davon abhängen, wie der Schreib-Cachespeicher gepflegt wird: Falls Aktualisierungen von Einträgen in dem Schreib-Cachespeicher verzögert in dem Lese-Cachespeicher aktualisiert werden, kann es vorteilhaft sein, in einem Lesevorgang zuerst den Schreib-Cachespeicher zu durchsuchen, da es sich bei dem Schreib-Cachespeicher in einer derartigen Ausführungsform um den einzigen Ort handeln kann, an dem die aktuell gültigen Adressenzuordnungsinformationen gespeichert sind. Falls jedoch auf Aktualisierungen von Einträgen in dem Schreib-Cachespeicher unmittelbar eine entsprechende Aktualisierung in dem Lese-Cachespeicher folgt, kann der Lese-Cachespeicher in einem Lesevorgang zuerst durchsucht werden, gefolgt von einer Suche in dem Schreib-Cachespeicher, falls die gesuchten Adressenzuordnungsinformationen nicht in dem Lese-Cachespeicher gefunden werden können. Allgemein kann es bevorzugt sein, den Schreib-Cachespeicher zuerst zu durchsuchen, da er die aktuellsten Adressenzuordnungsinformationen speichert.
  • Falls die Speichersteuereinheit einen Daten-Cachespeicher enthält, kann in einer bevorzugten Ausführungsform vor dem Suchen nach einer Adressenzuordnung in dem Schreib-Cachespeicher oder in dem Lese-Cachespeicher der Daten-Cachespeicher selbst nach den Daten durchsucht werden.
  • In einer anderen bevorzugten Ausführungsform des Leseverfahrens wird die Lage von Arbeitslasten mit berücksichtigt. Die Lage einer Arbeitslast geht davon aus, dass Adressenzuordnungseinträge, auf die rechtzeitig zugegriffen wird, mit einer gewissen Wahrscheinlichkeit innerhalb einer räumlichen Lage abgerufen werden können. In dieser Ausführungsform wird nämlich untersucht, ob ein Zuordnungseintrag sowohl in dem Lese-Cachespeicher als auch in dem Schreib-Cachespeicher fehlt. Diese Informationen werden automatisch erfasst, wenn die Leseroutine ausgeführt wird und die gesuchten logischen Adressinformationen weder in dem Lese-Cachespeicher noch in dem Schreib-Cachespeicher gefunden werden. Folglich wird der Lese-Cachespeicher nicht nur mit der Seite oder dem Block aktualisiert, an dem sich die fehlenden Adressinformationen in der Flash-Speichereinheit befinden, sondern auch mit den benachbarten Adressenzuordnungsseiten bzw. -blöcken, die in den Lese-Cachespeicher geladen werden, um zukünftige Leseanforderungen besser zu bedienen. Das liegt an der Annahme, dass benachbarte LBA-PBA-Zuordnungen auf Grund der räumlichen Lage von Arbeitslasten auch in naher Zukunft verwendet werden.
  • 5 veranschaulicht einen Schreibprozess gemäß einer Ausführungsform der Erfindung, beruhend auf einer ähnlichen Veranschaulichung wie die in 2 verwendeten. Nun sind jedoch Prozessschritte enthalten und durch Bezugszeichen angegeben.
  • Ein Host 4 gibt eine Anforderung 30 an das Speichersystem zum Schreiben von Daten in die Flash-Speichereinheit 2 aus. Die Daten und die logischen Adressinformationen werden üblicherweise von dem Host gemeinsam mit der Anforderung geliefert. Bei den logischen Adressinformationen handelt es sich um die logische Adresse, unter welcher der Host derartige Daten abgelegt hat. Als Reaktion auf ein Empfangen einer derartigen Anforderung schreibt die Steuereinheit die Daten in die nächste freie Seite in der Flash-Speichereinheit 2, Schritt 31, oder alternativ in einen Daten-Cachespeicher zum Zwischenspeichern von Benutzerdaten. Wenn die Daten in die Flash-Speichereinheit geschrieben werden, werden sie üblicherweise gemäß der aktuellen, von einer Zuordnungsfunktion für freie Seiten rückgemeldeten Schreibposition in eine Seite geschrieben. Die Zuordnungsfunktion für freie Seiten bietet vorzugsweise Seiten aus einer Warteschlange mit freien Blöcken an. In jedem Fall wird der Ort, an dem die Daten nun innerhalb des Speichersystems geschrieben werden, durch irgendwelche physischen Adressinformationen angegeben.
  • Die Steuereinheit durchsucht den Schreib-Cachespeicher 312 nach einem Eintrag, der die logischen Adressinformationen enthält, Schritt 32. Wenn derartige logische Adressinformationen als sich in dem Schreib-Cachespeicher 312 befindlich erkannt werden, werden die zugehörigen physischen Adressinformationen in einem derartigen Eintrag mit den physischen Adressinformationen aktualisiert, die den Ort angeben, an dem sich die Daten neuerdings befinden. Wenn derartige Adressinformationen als sich nicht in dem Schreib-Cachespeicher 312 befindlich erkannt werden, kann ein neuer Eintrag in den Schreib-Cachespeicher 312 mit den logischen und den neuen physischen Adressinformationen eingefügt werden.
  • Zu einem gewissen Zeitpunkt wird der gesamte Schreib-Cachespeicher oder zumindest Teile davon vorzugsweise als Hintergrundaufgabe gemäß einer Strategie in die Flash-Speichereinheit geschrieben, die von einem Bereinigungsprozess für den Schreib-Cachespeicher verfolgt wird, der sich vorzugsweise von einem Algorithmus zum Pflegen des Lese-Cachespeichers unterscheidet, Schritt 33. Da ein derartiges Schreiben von Adressenzuordnungsinformationen auf den Vorgang zum Schreiben außerhalb folgen kann, können neue Adressenzuordnungsblöcke zugeordnet oder bestehende Adressenzuordnungsblöcke gelöscht und der Zuordnungsfunktion für freie Blöcke zugewiesen werden, so dass die Blockzuordnungstabelle 5 vorzugsweise in Schritt 34 aktualisiert wird. Eine derartige durch die Steuereinheit eingeleitete Aktualisierungsaktivität kann auch zu einem beliebigen Zeitpunkt als Hintergrundaufgabe ausgeführt werden.
  • In dem Ablaufplan aus 6 ist ein Verfahren zum Schreiben von Daten in einen Halbleiterspeicher veranschaulicht. In Schritt 40 empfängt eine Steuereinheit eines Speichersystems gemäß einer Ausführungsform der vorliegenden Erfindung eine Schreibanforderung von einer oberen Schicht. Die Anforderung enthält zu schreibenden Daten zugehörige logische Adressinformationen. In Schritt 41 werden die Daten entweder in einer freien Seite der Flash-Speichereinheit oder alternativ bzw. zusätzlich in einem als Daten-Cachespeicher verwendeten Hauptspeicherbereich gespeichert, Schritt 42. Die Steuereinheit sucht in einem Schreib-Cachespeicher nach den von dem Host gelieferten logischen Adressinformationen, Schritt 43, wobei der Schreib-Cachespeicher zum Puffern von in die Flash-Speichereinheit des Speichersystems zu schreibenden Zuordnungsinformationen ausgelegt ist. Es wird ermittelt, ob die logischen Adressinformationen in dem Schreib-Cachespeicher gefunden werden, Schritt 44. Wenn sie gefunden werden (J), bedeutet dies, dass ein derartiger Eintrag in dem Schreib-Cachespeicher lediglich mit den neuen physischen Adressinformationen aktualisiert werden muss, die angeben wo sich die Daten nun befinden, Schritt 450. Wenn die gesuchten logischen Adressinformationen nicht in dem Schreib-Cachespeicher gefunden werden (N), fügt die Steuereinheit in Schritt 451 einen neuen Adressenzuordnungseintrag für die Daten hinzu. Einer Schreibstrategie des Speichersystems folgend, wird der Schreib-Cachespeicher zu irgendeinem späteren Zeitpunkt in die Flash-Speichereinheit geschrieben, Schritt 46. Die Granularität von später in die Flash-Speichereinheit zu schreibenden Zuordnungsinformationen hängt von der durch den Bereinigungsprozess des Schreib-Cachespeichers verfolgten Strategie ab. Ein derartiger Prozess zum Bereinigen des Schreib-Cachespeichers kann eine Hintergrundaufgabe sein, die Einträge in dem Schreib-Cachespeicher gemäß einer bestimmten Zwischenspeicherungsstrategie periodisch in die Flash-Speichereinheit schreibt.
  • In einer anderen Aufgabe wird die Blockadressentabelle als Reaktion auf den obigen Schreibvorgang aktualisiert, Schritt 47. Gemäß einer anderen Ausführungsform der Erfindung und wie als Schritt 48 in 6 abgebildet, kann das Verhältnis zwischen dem Hauptspeicherbereich, der für den Lese-Cachespeicher und dem, der für den Schreib-Cachespeicher verwendet wird, dynamisch an die aktuelle Lese- und/oder Schreibarbeitslast angepasst werden, um die Gesamtleistungsfähigkeit der Steuereinheit zu optimieren. Ein derartiges Verhältnis kann nach jedem Prozess zum Bereinigen des Schreib-Cachespeichers ermittelt werden, und die Größen der Cachespeicher können entsprechend angepasst werden.
  • Optional wird der Lese-Cachespeicher in Schritt 49 nach den logischen Adressinformationen durchsucht, die den gemäß der Schreibanforderung des Host zu schreibenden Daten zugehörig sind. Der Hintergrund dieser Aufgabe besteht darin, dass der entsprechende Adressenzuordnungseintrag, der auf die nicht mehr aktuellen physischen Daten verweist, jedoch – unabhängig davon, ob er sich bereits in dem Schreib-Cachespeicher befindet oder nicht – auch bereits in dem Lese-Cachespeicher zwischengespeichert sein kann, um die Leseanforderung zu unterstützen. Deshalb ist es vorteilhaft, wenn der Lese-Cachespeicher gleichzeitig mit der aktuellen Schreibroutine auch nach den entsprechenden logischen Adressinformationen durchsucht wird und bei entsprechendem Fund aktualisiert wird. Falls ein derartiger Eintrag nicht in dem Lese-Cachespeicher gefunden wird, kann in Abhängigkeit von der Lese-Zwischenspeicherungsstrategie ein neuer Eintrag in den Lese-Cachespeicher eingefügt werden, um die höhere Wichtigkeit dieser bestimmten Daten auf Grund der jüngsten Schreibanforderung widerzuspiegeln. Ein derartiges Aktualisieren des Lese-Cachespeichers kann vorzugsweise in Verbindung mit dem Aktualisieren des Schreib-Cachespeichers umgesetzt werden, das so aufgefasst wird, dass es „zur selben Zeit” oder alternativ zu dem Zeitpunkt, an dem der Schreib-Cachespeicher bereinigt wird, umgesetzt wird, Schritt 49 gestrichelte Linie. Dies muss nicht unbedingt Nachteile mit sich bringen, da der Schreib-Cachespeicher zum Bedienen von Zwischenanforderungen zum Lesen dieser bestimmten Daten zuerst durchsucht wird, so dass der entsprechende Eintrag in dem Schreib-Cachespeicher bereits auf den neuen Ort verweist, an dem sich die Daten nun befinden. Es gestattet jedoch eine Auslagerung von Daten aus dem Schreib-Cachespeicher, ohne überprüfen zu müssen, ob sich die ausgelagerten Zuordnungseinträge in dem Lese-Cachespeicher befinden.
  • Wenn die Speichersteuereinheit einen Daten-Cachespeicher bereitstellt und eine Schreibanforderung empfangen wird, kann zuerst der Schreib-Cachespeicher nach einem Eintrag durchsucht werden, der angibt, dass sich derartige Daten bereits in dem Daten-Cachespeicher befinden. Wenn der Schreib-Cachespeicher einen solchen Eintrag bereitstellt, werden die neuen Daten zuerst in den Daten-Cachespeicher geschrieben und ersetzen die entsprechenden jetzt nicht mehr aktuellen Daten, und der entsprechende Eintrag in dem Schreib-Cachespeicher kann entsprechend aktualisiert werden. Ein derartiger Vorgang kann vorteilhafterweise vor dem Schreiben der neuen Daten aus dem Daten-Cachespeicher in die Flash-Speichereinheit ausgeführt werden. Sobald der Daten-Cachespeicher gemäß einer beliebigen angewendeten Strategie bereinigt werden muss, wird die vorliegende Schreibroutine insofern angewendet, als die aus dem Daten-Cachespeicher in die Flash-Speichereinheit zu schreibenden Daten und die zugehörigen logischen Adressen durch die Adressenzuordnungs-Funktionseinheit empfangen werden, die Daten werden in der Flash-Speichereinheit an einer physischen Adresse gespeichert, und der entsprechende Eintrag in dem Schreib-Cachespeicher wird durchsucht und aktualisiert.
  • In der folgenden Ausführungsform wird ein Mittel zum Unterstützen eines Bereinigungsprozesses des Schreib-Cachespeichers vorgestellt, das dem Beschleunigen eines derartigen Bereinigungsprozesses dient. Vorzugsweise enthält ein Adressenzuordnungseintrag 8 in dem Schreib-Cachespeicher 312 – wie beispielhaft in 7a gezeigt – nicht nur physische Adressinformationen 81, die logischen Adressinformationen 82 zugeordnet sind, sondern auch einen Zeiger 83 zum Verweisen auf einen anderen Adressenzuordnungseintrag in dem Schreib-Cachespeicher 312. Ein derartiger anderer Adressenzuordnungseintrag wird als in einer gemeinsamen Seite der Speichereinheit 2 gespeichert erkannt, d. h. in einer gemeinsamen Adressenzuordnungsseite in der Flash-Speichereinheit. Durch das Verknüpfen von Adressenzuordnungseinträgen, die in derselben Seite in der Flash-Speichereinheit 2 gespeichert sind, können derartige Einträge gleichzeitig während eines Prozesses zum Bereinigen des Schreib-Cachespeichers aktualisiert werden. Der Zeiger kann in einen Verweis zum Gruppieren von zu einem gemeinsamen Adressenzuordnungsbereich gehörenden Adressenzuordnungseinträgen verallgemeinert werden. Ein derartiger Adressenzuordnungsbereich kann als eine Einheit angesehen werden, die auf effiziente Weise zu aktualisieren ist. Außerdem kann vorteilhafterweise eine in dem Schreib-Cachespeicher 312 gespeicherte Datenstruktur 9 – wie in 7b gezeigt – bereitgestellt werden, die eine Seitenkennung 91, einen Zähler 92 zum Zählen der Anzahl von einer derartigen Seitenkennung 91 zugehörigen Einträgen in dem Schreib-Cachespeicher 312 sowie einen Eintragszeiger 93 aufweist, der auf einen einer derartigen Seitenkennung 91 zugehörigen Eintrag in dem Schreib-Cachespeicher verweist. Diese Datenstruktur 9 dient in einem Prozess dem Bereinigen des Schreib-Cachespeichers, um die Seiten in der Flash-Speichereinheit 2 zu erkennen, die von in die Flash-Speichereinheit 2 zu schreibenden Zuordnungseinträgen in dem Schreib-Cachespeicher 312 am stärksten betroffen sind, und wobei es bevorzugt sein kann, diese Seiten zuerst zu aktualisieren. Der Eintragszeiger 93 verweist vorzugsweise auf den ersten Adressenzuordnungseintrag in dem mit einer derartigen gemeinsamen Seite verwandten Schreib-Cachespeicher 312, von dem die anderen zu derselben Seite gehörenden Einträge in dem Schreib-Cachespeicher 312 durch den Zeiger 83 nacheinander miteinander verknüpft werden. Folglich kann die Steuereinheit in dem Prozess des Bereinigens des Schreib-Cachespeichers zunächst die Seitenkennung 91 mit dem höchsten Zählwert in dem Zähler 92 erkennen und mit dem Schreiben von Adressenzuordnungseinträgen von dort beginnen, gefolgt von dem Aktualisieren der Seitenkennung mit dem zweithöchsten Zählwert usw. Der Eintragszeiger 93 stellt entsprechend den Anfangspunkt in dem Schreib-Cachespeicher 312 bereit.
  • Ausführungsformen der vorliegenden Erfindung stellen eine hohe Lese- und Schreibleistung von/in eine(r) Halbleiterspeichereinheit bereit. Der Hauptspeicher der Steuereinheit wird nicht durch eine vollständige Adressenzuordnungstabelle blockiert, welche die gesamte Speichereinheit umfasst. Stattdessen ist eine derartige Tabelle in der Speichereinheit selbst gespeichert, und lediglich ausgewählte Bereiche der Adressenzuordnungsinformationen werden in dem Hauptspeicher in einem Lese-Cachespeicher und einem Schreib-Cachespeicher gepuffert. Eine Trennung des Lese-Cachespeichers von dem Schreib-Cachespeicher ermöglicht es, dass ein Adressenzuordnungseintrag aus dem Lese-Cachespeicher geräumt werden kann, ohne dass ein Aktualisieren der zugehörigen Flash-Speicherseite nötig ist, die einen derartigen Eintrag in der Flash-Speichereinheit speichert. Durch diese Konstruktion kann der Lese-Cachespeicher vorzugsweise selbst in einem DRAM ohne Stromausfallschutz gespeichert werden, während der Schreib-Cachespeicher vorzugsweise in nichtflüchtigem oder einem anderen ausfallsicheren Speicher umgesetzt sein kann. Dies führt zu einer Verringerung der Gesamtbereitstellung von nichtflüchtigem bzw. ausfallsicherem Speicher und zu einer verbesserten Skalierbarkeit und Leistungsfähigkeit im Vergleich zu bekannten Ansätzen.
  • Der Fachmann wird verstehen, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung, insbesondere in Form der Steuereinheit, die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindliche Software, Mikro-Code, usw.) oder einer Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren können Aspekte der vorliegenden Erfindung wie zum Beispiel die Lese- und Schreibverfahren die Form eines auf einem oder mehreren durch einen Computer lesbaren Medien enthaltenen Computerprogrammprodukts annehmen, die durch einen Computer lesbaren Programmcode enthalten.
  • Es kann jede Kombination aus einem oder mehreren durch einen Computer lesbaren Medien verwendet werden. Bei dem durch einen Computer lesbaren Medium kann es sich um ein durch einen Computer lesbares Signalmedium oder ein durch einen Computer lesbares Speichermedium handeln. Bei einem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination daraus handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Kompaktspeicherplatte–Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination daraus. In dem Kontext dieses Dokuments kann es sich bei einem durch einen Computer lesbaren Speichermedium um jedes beliebige physische Medium handeln, das ein Programm enthalten bzw. speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird.
  • Ein durch einen Computer lesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem durch einen Computer lesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form aus einer Vielfalt an Formen annehmen, darunter elektromagnetische, optische bzw. jede geeignete Kombination daraus, jedoch nicht darauf beschränkt. Bei einem durch einen Computer lesbaren Signalmedium kann es sich um ein beliebiges durch einen Computer lesbares Medium handeln, das kein durch einen Computer lesbares 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, weiterleiten bzw. transportieren kann.
  • Auf einem durch einen Computer lesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw. oder jede geeignete Kombination daraus, jedoch nicht darauf beschränkt.
  • Computerprogrammcode für das Ausführen von Arbeitsschritten für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozedurale Programmiersprachen wie die „C”-Programmiersprache oder ähnliche Programmiersprachen. Der Programmcode kann vollständig 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 fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Funktionsschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können dem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
  • Diese Computerprogrammanweisungen können auch auf einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die/den in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebene(n) Funktion/Schritt umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer, der anderen programmierbaren Vorrichtung bzw. der anderen Einheiten zu veranlassen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Schritte erzeugen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. Es sei auch angemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen.
  • 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 Nicht-Patentliteratur
    • „DFTL: A Flash Translation Layer Employing Demand-based Selective Caching of Page-level Address Mappings” von A. Gupta u. a., in ASPLOS'09, 7.–11. März 2009, Washington, DC, USA [0007]
    • http://csl.cse.psu.edu/publications/dftl-asplos09.pdf [0007]

Claims (17)

  1. Speichersteuereinheit zum Steuern des Lesens und Schreibens von Daten von/auf eine(r) Halbleiterspeichereinheit, aufweisend – einen Lese-Cachespeicher (311) zum Puffern von Adressenzuordnungsinformationen, die eine Teilmenge von in der Speichereinheit (2) gespeicherten Adressenzuordnungsinformationen darstellen, wobei die Adressenzuordnungsinformationen eine Zuordnung von logischen Adresseninformationen zum Kennzeichnen von Daten in einem anfordernden Host zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit (2) enthalten, und – einen Schreib-Cachespeicher (312) zum Puffern von Adressenzuordnungsinformationen, die in die Speichereinheit (2) zu schreiben sind.
  2. Speichersteuereinheit nach Anspruch 1, wobei der Schreib-Cachespeicher (312) insofern als von dem Lese-Cachespeicher (311) getrennte Einheit gepflegt wird, als ein in dem Lese-Cachespeicher (311) gepufferter Inhalt unabhängig von einem in dem Schreib-Cachespeicher (312) gepufferten Inhalt durchsucht werden kann, und umgekehrt.
  3. Speichersteuereinheit nach Anspruch 1 oder Anspruch 2, aufweisend einen nichtflüchtigen Speicher oder einen flüchtigen ausfallsicheren Speicher, der den Schreib-Cachespeicher (312) enthält, oder einen flüchtigen Speicher, der den Lese-Cachespeicher (311) enthält.
  4. Speichersteuereinheit nach einem der vorhergehenden Ansprüche, aufweisend eine Zuordnungsfunktionseinheit zum Zuordnen von Cachespeicherplatz zu dem Lese-Cachespeicher (311) und zu dem Schreib-Cachespeicher (312) in Abhängigkeit von einer oder mehreren einer Schreibarbeitslast und einer Lesearbeitslast.
  5. Speichersteuereinheit nach einem der vorhergehenden Ansprüche, wobei ein Adressenzuordnungseintrag in dem Schreib-Cachespeicher (312) physische Adressinformationen, die den physischen Adressinformationen zugewiesenen logischen Adressinformationen sowie einen Verweis zum Gruppieren von Adressenzuordnungseinträgen enthält, die zu einem gemeinsamen Adressenzuordnungsbereich gehören.
  6. Speichersteuereinheit nach Anspruch 5, wobei der Verweis einem Zeiger (83) zum Verweisen auf einen anderen Adressenzuordnungseintrag in dem Schreib-Cachespeicher (312) entspricht, wobei der andere Adressenzuordnungseintrag als in einer gemeinsamen Seite der Speichereinheit (2) gespeichert erkannt wird.
  7. Speichersteuereinheit nach Anspruch 6, aufweisend eine in dem Schreib-Cachespeicher (312) gespeicherte Datenstruktur (9), die eine Seitenkennung (91), einen Zähler (92) zum Zählen der Anzahl von einer derartigen Seitenkennung (91) zugehörigen Einträgen in dem Schreib-Cachespeicher (312) sowie einen Eintragszeiger (93) beinhaltet, der auf einen einer derartigen Seitenkennung (91) zugehörigen Eintrag in dem Schreib-Cachespeicher (312) verweist.
  8. Speichersystem, aufweisend – eine Speichersteuereinheit (1) nach einem der vorhergehenden Ansprüche und – eine Halbleiterspeichereinheit (2) zum Speichern von Daten und zum Speichern von Adressenzuordnungsinformationen zum Zuordnen von logischen Adressinformationen zum Kennzeichnen von Daten in einem auf das Speichersystem zugreifenden Host (4) zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit (2).
  9. Verfahren zum Lesen von Daten von einer Halbleiterspeichereinheit, wobei in der Speichereinheit (2) Daten und Zuordnungsinformationen zum Zuordnen von physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit zu logischen Adressinformationen zum Kennzeichnen von Daten in einem anfordernden Host (4) gespeichert sind, das Verfahren aufweisend: – Empfangen von den zu lesenden Daten zugehörigen logischen Adressinformationen, – Suchen nach den logischen Adressinformationen entweder in einem Schreib-Cachespeicher (312) zum Puffern von in die Speichereinheit (2) zu schreibenden Adressenzuordnungsinformationen oder in einem Lese-Cachespeicher (311) zum Puffern einer Teilmenge der in der Speichereinheit (2) gespeicherten Adressenzuordnungsinformationen, – wenn die logischen Adressinformationen nicht in dem Cachespeicher (311, 312) gefunden werden, Suchen nach den logischen Adressinformationen in dem anderen Cachespeicher (312, 311), – wenn die logischen Adressinformationen weder in dem Schreib-Cachespeicher (312) noch in dem Lese-Cachespeicher (311) gefunden werden, Erkennen und Lesen der den logischen Adressinformationen zugehörigen physischen Adressinformationen anhand der in der Speichereinheit (2) gespeicherten Zuordnungsinformationen, und – Ausgeben eines Datenlesevorgangs für die erkannten physischen Adressinformationen.
  10. Verfahren nach Anspruch 9, wobei die gelesenen physischen Adressinformationen zum Aktualisieren eines Eintrags in dem Lese-Cachespeicher verwendet werden.
  11. Verfahren nach Anspruch 9 oder 10, aufweisend – wenn die logischen Adressinformationen in dem Schreib-Cachespeicher gefunden werden, Erkennen der den logischen Adressinformationen zugehörigen physischen Adressinformationen aus einem entsprechenden Eintrag in dem Schreib-Cachespeicher, und – Ausgeben eines Datenlesevorgangs für die erkannten physischen Adressinformationen.
  12. Verfahren nach Anspruch 9 oder Anspruch 10, aufweisend – wenn die logischen Adressinformationen in dem Lese-Cachespeicher (311) gefunden werden, Erkennen der den logischen Adressinformationen zugehörigen physischen Adressinformationen aus einem entsprechenden Eintrag in dem Lese-Cachespeicher (311), und – Ausgeben eines Datenlesevorgangs für die erkannten physischen Adressinformationen.
  13. Verfahren zum Schreiben von Daten in eine Halbleiterspeichereinheit, wobei in der Speichereinheit (2) Daten und Zuordnungsinformationen zum Zuordnen von logischen Adressinformationen, die Daten in einer Anforderung kennzeichnen, zu physischen Adressinformationen zum Kennzeichnen von Daten in der Speichereinheit (2) gespeichert sind, das Verfahren aufweisend: – Empfangen der Daten und den Daten zugehöriger logischer Adressinformationen, – Schreiben der Daten an einen Ort der Speichereinheit (2), der durch physische Adressinformationen gekennzeichnet ist, – Suchen nach den logischen Adressinformationen in einem Schreib-Cachespeicher (312), der speziell zum Puffern von in die Speichereinheit (2) zu schreibenden Adressenzuordnungsinformationen vorgesehen ist, und – wenn die logischen Adressinformationen nicht in dem Schreib-Cachespeicher gefunden werden, Hinzufügen eines Adressenzuordnungseintrags zu dem Schreib-Cachespeicher (312), der eine Zuordnung der logischen Adresseninformationen aufweist.
  14. Verfahren nach Anspruch 13, aufweisend ein Aktualisieren des entsprechenden Adressenzuordnungseintrags in dem Schreib-Cachespeicher (312) mit den physischen Adressinformationen, die den Daten neu zugewiesen wurden, wenn die logischen Adressinformationen in dem Schreib-Cachespeicher (312) gefunden werden.
  15. Verfahren nach Anspruch 13 oder Anspruch 14, aufweisend ein Suchen der logischen Adressinformationen in einem Lese-Cachespeicher (311) zum Puffern von Adressenzuordnungsinformationen, die eine Teilmenge der in der Speichereinheit (2) gespeicherten Adressenzuordnungsinformationen darstellen, und, falls die logischen Adressinformationen in dem Lese-Cachespeicher (311) gefunden werden, ein Aktualisieren des entsprechenden Adressenzuordnungseintrags in dem Lese-Cachespeicher (311) mit den physischen Adressinformationen, die den Daten neu zugewiesen wurden.
  16. Verfahren nach Anspruch 15, aufweisend ein Suchen nach den logischen Adressinformationen in dem Lese-Cachespeicher (311) zu einem Zeitpunkt, zu dem der Schreib-Cachespeicher (312) aktualisiert wird.
  17. Computerprogrammprodukt, aufweisend ein durch einen Computer lesbares Medium, auf dem durch einen Computer lesbarer Programmcode enthalten ist, wobei der durch einen Computer lesbare Programmcode durch einen Computer lesbaren Programmcode aufweist, der so konfiguriert ist, dass er ein Verfahren nach einem der vorhergehenden Ansprüche 9 bis 16 durchführt.
DE112011102487.8T 2010-07-27 2011-07-25 Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen Active DE112011102487B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10170863.4 2010-07-27
EP10170863 2010-07-27
PCT/IB2011/053299 WO2012014140A2 (en) 2010-07-27 2011-07-25 Logical to physical address mapping in storage systems comprising solid state memory devices

Publications (2)

Publication Number Publication Date
DE112011102487T5 true DE112011102487T5 (de) 2013-05-29
DE112011102487B4 DE112011102487B4 (de) 2024-07-18

Family

ID=44504040

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011102487.8T Active DE112011102487B4 (de) 2010-07-27 2011-07-25 Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen

Country Status (5)

Country Link
US (1) US9256527B2 (de)
CN (1) CN103026346B (de)
DE (1) DE112011102487B4 (de)
GB (1) GB2496798B (de)
WO (1) WO2012014140A2 (de)

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856443B2 (en) * 2012-03-12 2014-10-07 Infinidat Ltd. Avoiding duplication of data units in a cache memory of a storage system
US8874850B1 (en) * 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
US20140025921A1 (en) * 2012-07-19 2014-01-23 Jmicron Technology Corp. Memory control method utilizing main memory for address mapping and related memory control circuit
US20140052899A1 (en) * 2012-08-18 2014-02-20 Yen Chih Nan Memory address translation method for flash storage system
CN103902467B (zh) * 2012-12-26 2017-02-22 华为技术有限公司 压缩内存访问控制方法、装置及系统
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US20140281157A1 (en) * 2013-03-13 2014-09-18 Kabushiki Kaisha Toshiba Memory system, memory controller and method
US9563551B2 (en) * 2013-06-20 2017-02-07 Silicon Motion, Inc. Data storage device and data fetching method for flash memory
US9727611B2 (en) 2013-11-08 2017-08-08 Samsung Electronics Co., Ltd. Hybrid buffer management scheme for immutable pages
CN103678169B (zh) * 2013-11-11 2016-04-13 华中科技大学 一种高效利用固态盘缓存的方法和系统
KR102218712B1 (ko) 2014-02-11 2021-02-22 삼성전자주식회사 저장 장치의 어드레스 맵핑 방법 및 저장 장치의 데이터 독출 방법
US9558120B2 (en) * 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory
US20160154812A1 (en) * 2014-12-02 2016-06-02 Altibase Corp. Hybrid database management system
TWI502345B (zh) * 2014-05-12 2015-10-01 Via Tech Inc 快閃記憶體控制晶片以及資料儲存裝置以及快閃記憶體控制方法
US9734066B1 (en) * 2014-05-22 2017-08-15 Sk Hynix Memory Solutions Inc. Workload-based adjustable cache size
KR102308777B1 (ko) 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
US20160162416A1 (en) * 2014-12-08 2016-06-09 Intel Corporation Apparatus and Method for Reducing Latency Between Host and a Storage Device
CN105786733B (zh) * 2014-12-26 2020-08-07 南京中兴新软件有限责任公司 一种写入tcam条目的方法及装置
CN105630404A (zh) * 2015-04-02 2016-06-01 上海磁宇信息科技有限公司 一种使用mram的固态硬盘及读写方法
US20170024326A1 (en) * 2015-07-22 2017-01-26 CNEX-Labs, Inc. Method and Apparatus for Caching Flash Translation Layer (FTL) Table
TWI569139B (zh) * 2015-08-07 2017-02-01 群聯電子股份有限公司 有效資料合併方法、記憶體控制器與記憶體儲存裝置
US20170060436A1 (en) * 2015-09-02 2017-03-02 Intel Corporation Technologies for managing a reserved high-performance memory region of a solid state drive
CN105278875B (zh) * 2015-09-16 2019-04-05 上海新储集成电路有限公司 一种混合异构nand固态硬盘
US10152424B1 (en) * 2015-09-30 2018-12-11 EMC IP Holding Company LLC Write reduction system and method
TWI646461B (zh) * 2016-10-12 2019-01-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI537729B (zh) * 2015-10-15 2016-06-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
KR20170044781A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
WO2017066601A1 (en) 2015-10-16 2017-04-20 Huang Yiren Ronnie Method and apparatus for providing hybrid mode to access ssd drive
WO2017069646A1 (en) 2015-10-19 2017-04-27 Huawei Technologies Co., Ltd. Method and device for determination of garbage collector thread number and activity management in log-structured file systems
CN105159843B (zh) * 2015-10-19 2018-07-31 深圳芯邦科技股份有限公司 一种基于超级块的多通道管理方法与系统
US9940250B2 (en) * 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for writes to storage write cache
KR20170056765A (ko) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN106776376B (zh) * 2015-11-24 2019-08-06 群联电子股份有限公司 缓冲存储器管理方法、存储器控制电路单元及存储装置
US9928924B2 (en) * 2015-12-15 2018-03-27 Qualcomm Incorporated Systems, methods, and computer programs for resolving dram defects
US9880744B1 (en) * 2015-12-22 2018-01-30 Veritas Technologies Llc Method for flash-friendly caching for CDM workloads
WO2017131752A1 (en) 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Remote direct memory access
CN107430494B (zh) 2016-01-29 2020-09-15 慧与发展有限责任合伙企业 用于远程直接存储器访问的系统、方法和介质
WO2017131751A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Remote direct memory access
US9875190B2 (en) * 2016-03-31 2018-01-23 EMC IP Holding Company LLC Delegated media translation layer in a storage appliance
CN107515723B (zh) * 2016-06-16 2020-04-24 伊姆西Ip控股有限责任公司 用于管理存储系统中的存储器的方法和系统
CN107526535B (zh) * 2016-06-22 2020-07-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和系统
CN108228646B (zh) * 2016-12-21 2022-02-08 伊姆西Ip控股有限责任公司 用于访问数据的方法和电子设备
US10915453B2 (en) * 2016-12-29 2021-02-09 Intel Corporation Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures
US10459636B2 (en) * 2017-03-24 2019-10-29 Sandisk Technologies Llc System and method for managing data in non-volatile memory systems having multiple mapping layers
CN108733576B (zh) * 2017-04-20 2022-12-09 得一微电子股份有限公司 一种固态硬盘及其内存转换层对映方法
US10339062B2 (en) * 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10732896B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and system for reading data during control sync operations
WO2018231408A1 (en) * 2017-06-15 2018-12-20 Rambus Inc. Hybrid memory module
KR102310117B1 (ko) 2017-07-07 2021-10-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2019028954A (ja) * 2017-08-04 2019-02-21 富士通株式会社 ストレージ制御装置、プログラム、及び重複排除方法
US10628326B2 (en) * 2017-08-21 2020-04-21 Micron Technology, Inc. Logical to physical mapping
US10437734B2 (en) * 2017-08-31 2019-10-08 Micron Technology, Inc. Memory constrained translation table management
US10379948B2 (en) * 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
KR20190040614A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN111433749B (zh) * 2017-10-12 2023-12-08 拉姆伯斯公司 具有dram高速缓存的非易失性物理存储器
KR102421149B1 (ko) * 2018-01-02 2022-07-14 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102456173B1 (ko) 2017-10-27 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200104601A (ko) 2019-02-27 2020-09-04 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US10409726B2 (en) * 2017-10-30 2019-09-10 Micron Technology, Inc. Dynamic L2P cache
KR102410296B1 (ko) * 2017-11-06 2022-06-20 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11354247B2 (en) 2017-11-10 2022-06-07 Smart IOPS, Inc. Devices, systems, and methods for configuring a storage device with cache
US10438092B2 (en) * 2018-01-31 2019-10-08 Analytical Graphics, Inc. Systems and methods for converting massive point cloud datasets to a hierarchical storage format
US10997066B2 (en) * 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same
TWI704454B (zh) * 2018-03-15 2020-09-11 建興儲存科技股份有限公司 固態儲存裝置的對應表管理方法
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
CN108959117B (zh) * 2018-06-22 2021-01-19 深圳忆联信息系统有限公司 H2d写操作加速方法、装置、计算机设备及存储介质
CN110633225B (zh) * 2018-06-25 2022-11-15 慧荣科技股份有限公司 实体存储对照表产生装置及方法
CN109032505A (zh) * 2018-06-26 2018-12-18 深圳忆联信息系统有限公司 带时效的数据读写方法、装置、计算机设备及存储介质
US10649776B2 (en) 2018-06-29 2020-05-12 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data
US10698816B2 (en) 2018-06-29 2020-06-30 Micron Technology, Inc. Secure logical-to-physical caching
US10642502B2 (en) 2018-06-29 2020-05-05 Western Digital Technologies, Inc. System and method for prediction of read commands to non-sequential data
TWI727185B (zh) * 2018-07-09 2021-05-11 慧榮科技股份有限公司 鏈結串列搜索裝置及方法
US10901889B2 (en) * 2018-07-25 2021-01-26 ScaleFlux, Inc. Using hybrid-software/hardware based logical-to-physical address mapping to improve the data write throughput of solid-state data storage devices
CN109144894B (zh) * 2018-08-01 2023-04-07 浙江大学 基于数据冗余的内存访问模式保护方法
CN109446117B (zh) * 2018-09-06 2023-02-28 杭州电子科技大学 一种固态硬盘页级闪存转换层设计方法
US11237970B2 (en) * 2018-11-07 2022-02-01 Micron Technology, Inc. Reduce data traffic between cache and memory via data access of variable sizes
US11042490B2 (en) 2018-11-15 2021-06-22 Micron Technology, Inc. Address obfuscation for memory
CN109491930B (zh) * 2018-11-16 2023-04-11 杭州阿姆科技有限公司 一种ssd中优化写地址分配的方法
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
TWI720400B (zh) * 2019-01-04 2021-03-01 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
KR20200088713A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN111475429B (zh) * 2019-01-24 2023-08-29 爱思开海力士有限公司 存储器访问方法
US11080189B2 (en) * 2019-01-24 2021-08-03 Vmware, Inc. CPU-efficient cache replacment with two-phase eviction
US10896131B2 (en) 2019-01-28 2021-01-19 Western Digital Technologies, Inc. System and method for configuring a storage device based on prediction of host source
US10846226B2 (en) 2019-01-28 2020-11-24 Western Digital Technologies, Inc. System and method for prediction of random read commands in virtualized multi-queue memory systems
US10725781B1 (en) 2019-02-28 2020-07-28 Western Digital Technologies, Inc. System and method for chain prediction of multiple read commands
US10719445B1 (en) 2019-02-28 2020-07-21 Western Digital Technologies, Inc. System and method for scaling a historical pattern matching data structure in a memory device
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
KR20200132047A (ko) 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
US11237973B2 (en) 2019-04-09 2022-02-01 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20200119059A (ko) * 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
CN110262982A (zh) * 2019-05-05 2019-09-20 杭州电子科技大学 一种固态硬盘地址映射的方法
US11010299B2 (en) 2019-05-20 2021-05-18 Western Digital Technologies, Inc. System and method for performing discriminative predictive read
CN113176866B (zh) * 2019-05-25 2024-03-22 森大(深圳)技术有限公司 喷墨打印机数据处理方法、装置、设备、及存储介质
US11907114B2 (en) 2019-08-18 2024-02-20 Smart IOPS, Inc. Devices, systems, and methods for dynamically remapping memory addresses
US11580030B2 (en) * 2019-08-18 2023-02-14 Smart IOPS, Inc. Devices, systems, and methods of logical-to-physical address mapping
CN110597741B (zh) * 2019-08-23 2021-09-10 苏州浪潮智能科技有限公司 一种l2p表的读写、更新方法及l2p表
KR102456176B1 (ko) 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US11568077B2 (en) * 2019-12-26 2023-01-31 Micron Technology, Inc. Memory device data security based on content-addressable memory architecture
KR102495910B1 (ko) 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11755476B2 (en) 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11314446B2 (en) * 2020-06-25 2022-04-26 Micron Technology, Inc. Accelerated read translation path in memory sub-system
CN112698986A (zh) * 2020-12-25 2021-04-23 北京浪潮数据技术有限公司 一种数据恢复方法、装置及相关设备
CN112860596B (zh) * 2021-02-07 2023-12-22 厦门壹普智慧科技有限公司 一种神经网络张量处理器的数据流高速缓存装置
US11416263B1 (en) 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns
US11513963B2 (en) 2021-03-11 2022-11-29 Western Digital Technologies. Inc. Data storage device and method for application identifier handler heads-up for faster storage response
US20230251792A1 (en) * 2022-02-04 2023-08-10 Western Digital Technologies, Inc. Memory Device Based Accelerated Deep-Learning System
EP4276639A1 (de) * 2022-05-09 2023-11-15 Samsung Electronics Co., Ltd. Rechnersystem mit speichervorrichtung und speichervorrichtung und betriebsverfahren dafür
CN117806570B (zh) * 2024-02-29 2024-05-03 深存科技(无锡)有限公司 在线内存扩展方法、装置、设备及存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
WO2004095201A2 (en) * 2003-04-09 2004-11-04 Intervideo Inc. Systems and methods for caching multimedia data
US7085909B2 (en) * 2003-04-29 2006-08-01 International Business Machines Corporation Method, system and computer program product for implementing copy-on-write of a file
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7509461B1 (en) * 2006-06-29 2009-03-24 Emc Corporation Method and apparatus for intelligent buffer cache pre-emption
US8321652B2 (en) * 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US20100057984A1 (en) * 2008-08-26 2010-03-04 Seagate Technology Llc Memory hierarchy containing only non-volatile cache
US20100082903A1 (en) * 2008-09-30 2010-04-01 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory drive, information processing apparatus and data access control method of the non-volatile semiconductor memory drive
KR101515525B1 (ko) * 2008-10-02 2015-04-28 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작 방법
KR101533744B1 (ko) * 2008-10-16 2015-07-10 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
JP2010157130A (ja) * 2008-12-27 2010-07-15 Toshiba Corp メモリシステム
US8180955B2 (en) * 2009-05-06 2012-05-15 Via Telecom, Inc. Computing systems and methods for managing flash memory device
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8463979B2 (en) * 2009-09-08 2013-06-11 Ocz Technology Group Inc. Non-volatile storage devices, methods of addressing, and control logic therefor
US8195909B2 (en) * 2009-10-05 2012-06-05 Seagate Technology Llc Data management in a data storage system
CN102576333B (zh) * 2009-10-05 2016-01-13 马维尔国际贸易有限公司 非易失性存储器中的数据高速缓存
US8595411B2 (en) * 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
JP2012221251A (ja) * 2011-04-08 2012-11-12 Toshiba Corp メモリシステムの制御方法、情報処理装置、及びプログラム
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"DFTL: A Flash Translation Layer Employing Demand-based Selective Caching of Page-level Address Mappings" von A. Gupta u. a., in ASPLOS'09, 7.-11. März 2009, Washington, DC, USA
http://csl.cse.psu.edu/publications/dftl-asplos09.pdf

Also Published As

Publication number Publication date
GB2496798A (en) 2013-05-22
CN103026346A (zh) 2013-04-03
DE112011102487B4 (de) 2024-07-18
GB2496798B (en) 2016-10-12
US9256527B2 (en) 2016-02-09
WO2012014140A2 (en) 2012-02-02
CN103026346B (zh) 2016-01-20
US20130124794A1 (en) 2013-05-16
GB201302858D0 (en) 2013-04-03
WO2012014140A3 (en) 2012-03-22

Similar Documents

Publication Publication Date Title
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
US10649910B2 (en) Persistent memory for key-value storage
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE112010003887T5 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102016013248A1 (de) Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102013106242A1 (de) Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern
DE102020104701B4 (de) System zur Lokalisierung von Cachedaten
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112010005074T5 (de) Speicher-Gerät-Beanspruchung-ausgleichende Techniken
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112017005782T5 (de) Warteschlange für Speichervorgänge

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012020000

Ipc: G06F0012080000

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence