DE112011100564B4 - Einfügen eines Flash-Zwischenspeichers in große Speichersysteme - Google Patents

Einfügen eines Flash-Zwischenspeichers in große Speichersysteme Download PDF

Info

Publication number
DE112011100564B4
DE112011100564B4 DE112011100564.4T DE112011100564T DE112011100564B4 DE 112011100564 B4 DE112011100564 B4 DE 112011100564B4 DE 112011100564 T DE112011100564 T DE 112011100564T DE 112011100564 B4 DE112011100564 B4 DE 112011100564B4
Authority
DE
Germany
Prior art keywords
cache
data
flash
processor complex
adapter
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.)
Active
Application number
DE112011100564.4T
Other languages
English (en)
Other versions
DE112011100564T5 (de
Inventor
Roman Pletka
Evangelos Eleftheriou
Robert Haas
Xiao-Yu Hu
Yu-Cheng Hsu
Lokesh Mohan Gupta
Joseph Smith Hyde II
Michael Thomas Ben-Hase
Alfred Emilio Sanchez
Kevin John Ash
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 DE112011100564T5 publication Critical patent/DE112011100564T5/de
Application granted granted Critical
Publication of DE112011100564B4 publication Critical patent/DE112011100564B4/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/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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • G06F2212/2146Solid state disk being detachable, e.g.. USB memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

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)

Abstract

Vorrichtung für das Einfügen eines Flash-basierten Caches in ein Speichersystem (200), wobei die Vorrichtung Folgendes umfasst:ein Eingabe-/Ausgabe(E/A)-Gehäuse (202a-n) mit einer Vielzahl von Steckplätzen für die Aufnahme von Hostadapters (208a-n) und Einheitenadapters (210a-n);einen Hostadapter, der in einem ersten Steckplatz des E/A-Gehäuses so eingesetzt ist, dass sich der Hostadapter in einem Innenraum des E/A-Gehäuses befindet, wobei der Hostadapter konfiguriert ist, um einen Host (204a-n) mit dem E/A-Gehäuse zu verbinden;einen Einheitenadapter (210a-n), der in einem zweiten Steckplatz des E/A-Gehäuses so eingesetzt ist, dass sich der Einheitenadapter in dem Innenraum des E/A-Gehäuses befindet, wobei der Einheitenadapter konfiguriert ist, um eine Speichereinheit (206a-n) mit dem E/A-Gehäuse zu verbinden;eine Flash-basierte Caching-Einheit („Flash-Cache“) (220an), die in einem dritten Steckplatz des E/A-Gehäuses so eingesetzt ist, dass sich der Flash-Cache in dem Innenraum des E/A-Gehäuses befindet, wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der Flash-Cache in Bereiche unterteilt ist, die umfassen: einen Lese-Cachebereich (304), der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, einen Schreib-Cachebereich (302), der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, einen Zusatz-Lese-Cachebereich (306), der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich (308) für das Speichern von Daten, die nicht in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden;einen primären Prozessorkomplex (214a) außerhalb des E/A-Gehäuses, der Datenanforderungen verwaltet, welche durch das E/A-Gehäuse verarbeitet werden, wobei der primäre Prozessorkomplex mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um die Datenanforderungen zu verwalten, wobei der primäre Prozessorkomplex einen ersten DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) (216a) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert;einen sekundären Prozessorkomplex (214b) außerhalb des E/A-Gehäuses, der als eine sekundäre Verwaltungseinheit für Datenanforderungen dient, welche durch das E/A-Gehäuse verarbeitet werden, wobei der sekundäre Prozessorkomplex mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten, wobei der sekundäre Prozessorkomplex einen zweiten DRAM-Cache (216b) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert.

Description

  • Technisches Gebiet
  • Diese Erfindung bezieht sich auf Speichersysteme und insbesondere auf das Einfügen eines Flash-basierten Caches in große Speichersysteme.
  • Hintergrundinformationen
  • Das Aufkommen von Flash-basierten Solid-State-Laufwerken (Solid-State Drives, SDDs) revolutioniert die Hauptspeicher-Computerarchitektur von Notebooks bis hin zu Unternehmensspeichersystemen. Flash-basierte SSDs stellen eine Leistung bei wahlfreien E/A-Zugriffen sowie Zugriffslatenzzeiten bereit, die um Größenordnungen besser sind als diejenigen von sich drehenden Festplattenlaufwerken (Hard-Disk Drives, HDDs). Zudem weisen Flash-basierte SSDs einen deutlich geringeren Stromverbrauch auf.
  • Flash-basierte Speichererweiterungskarten treten als Werkzeuge für die Speichererweiterung und -verbesserung sogar in Netzwerkumgebungen in Erscheinung. Üblicherweise werden diese Erweiterungskarten unter Verwendung von PCI-e-Steckplätzen (Peripheral Component Interconnect Express) direkt in Hosts eingesetzt, wodurch die Karten näher beim Prozessor des Hosts als bei den Speicherplatten angeordnet werden, auf die der Host über ein Netzwerk zugreift. Indem die Erweiterungskarten näher beim Prozessor angeordnet werden, werden zusätzliche Latenzzeiten durch Disk-Array-Controller und Netzwerkprotokolle vermieden.
  • Obwohl Flash-basierte SSDs und Flash-basierte Speichererweiterungskarten eine Leistung bei wahlfreien E/A-Zugriffen und eine Zugriffslatenzzeit bereitstellen, die um Größenordnungen besser ist als diejenige von HDDs, hängt die Leistung bei wahlfreien Lese/Schreib-E/A-Zugriffen stark von der Architektur der Halbleiterspeichercontroller ab, die einer Einheit zugehörig sind. So liegen die Lese- und Schreibzugriffszeiten von Flash-basierten SSDs wie erwähnt in der Regel um zwei Größenordnungen unter denen von HDDs, wobei die Latenzzeit für einen DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) in großen Speichersystemen wie z.B. Unternehmensspeichersystemen, die HDDs für die Speicherung verwenden, dennoch zwei Größenordnungen besser ist als diejenige von Flash-basierten SSDs.
  • Die Gesamtsystemleistung, ausgedrückt in E/A-Operationen pro Sekunde (I/O Operations Per Second, IOPS) und Latenzzeit, hängt nicht nur von der internen Architektur des Halbleiterspeichercontrollers, sondern auch stark von der Gesamt-Systemarchitektur ab, z.B. davon, wie eine Flash-basierte Speichererweiterung in ein System eingefügt ist und welche Schnittstellen bereitgestellt werden.
  • 1 ist eine schematische Darstellung, die eine Ausführungsform eines herkömmlichen Speichersystems 100 gemäß dem Stand der Technik abbildet. Das System 100 beinhaltet eine Vielzahl von E/A-Gehäusen 102a-n, die eine Schnittstelle zwischen einem oder mehreren Hosts 104a-n und einer oder mehreren Speichereinheiten 106a-n bereitstellen. Die Speichereinheiten 106a-n können in einem Gehäuse wie z.B. einem Plattengehäuse untergebracht sein, in dem eine oder mehrere HDDs untergebracht sind.
  • Ein E/A-Gehäuse, wie es hier verwendet wird, bezieht sich auf eine Einheit, in der verschiedene E/A-Adapter und Verbindungseinheiten untergebracht sind, die eine Datenübertragung zwischen Prozessoren der E/A-Speichereinheit und den E/A-Adaptern bereitstellen. In der Regel sind die E/A-Gehäuse 102a-n paarweise installiert, um einen Redundanzschutz bereitzustellen. Bei den in einem E/A-Gehäuse enthaltenen E/A-Adaptern handelt es sich in der Regel entweder um einen Hostadapter 108a-n oder um einen Einheitenadapter 110a-n. Ein E/A-Gehäuse weist eine Vielzahl von verfügbaren Steckplätzen auf, mit denen ein Hostadapter 108a-n oder ein Einheitenadapter 110a-n verbunden sein kann. In vielen Fällen bleibt jedoch ein E/A-Gehäuse mit mehreren offenen Steckplätzen für die Erweiterung oder für anderweitige Verwendungszwecke übrig.
  • Ein Hostadapter 108a-n ist ein Adapter, der eine Verbindung zwischen einem Host 104a-n und dem E/A-Gehäuse 102a-n bereitstellt. Die Hosts 104a-n sind in der Regel über ein Netzwerk 112 mit den Hostadaptern 108a-n verbunden, das verschiedene Einheiten wie Router, Switches und ähnliches umfasst. Die Hosts 104a-n sind in der Regel unter Verwendung einer Netzwerktechnologie wie Fibre Channel, Fibre Connectivity (FICON), Enterprise Systems Connection (ESCON) oder eines anderweitigen Verbindungsprotokolls, das dem Fachmann bekannt ist, mit einem Hostadapter 108a-n verbunden. Bei einem Einheitenadapter 110a-n handelt es sich um eine Einheit, die eine Verbindung zwischen einer Einheit, wie z.B. einer Speichereinheit 106a-n, und dem E/A-Gehäuse 102a-n bereitstellt. Bei einer Ausführungsform können die Einheitenadapter 110a-n FC-AL-Einheitenadapter (Fibre Channel Arbitrated Loop) sein. Bei einer typischen Ausführungsform kann jeder Einheitenadapter 110a-n zwei getrennt geschaltete Netzwerke verbinden, die eine Datenübertragung mit den Speichereinheiten 106a-n bereitstellen. Wenn ein Einheitenadapter 110a-n mit einer Speichereinheit 106a-n verbunden ist, kann er eine geschaltete Verbindung verwenden, um die Daten über den kürzest möglichen Pfad zu übertragen. Die Datenübertragung zwischen den verschiedenen Bestandteilen des Systems 100 wird durch einen oder mehrere Prozessorkomplexe 114a-b ermöglicht. Bei einer gemeinsamen Architektur, wie sie in typischen Unternehmensspeichersystemen realisiert ist, werden zwei Prozessorkomplexe 114a-b verwendet, um die Zuverlässigkeit zu erhöhen und die Leistung zu verbessern. Ein Prozessorkomplex 114a-b ist üblicherweise mit jedem E/A-Gehäuse 102a-n verbunden und beinhaltet die Logik, die notwendig ist, um eine Datenübertragung zwischen den Hostadaptern 108a-n und den Einheitenadaptern 110a-n bereitzustellen und so einem Host 104a-n, der mit einem Hostadapter 108a-n verbunden ist, zu ermöglichen, über einen Einheitenadapter 110a-n auf eine Speichereinheit 106a-n zuzugreifen. Ein Prozessorkomplex 114a-n kann hier auch als zentrale Elektronik (Central Electronics Complex, CEC) bezeichnet werden.
  • In herkömmlichen Systemen beinhaltet der Prozessorkomplex in der Regel einen flüchtigen Speicher wie den DRAM 116a-b und einen nicht flüchtigen Speicher, der als NVS (Non-Volatile Storage) 118a-b bezeichnet wird und üblicherweise als batteriegepufferter DRAM konfiguriert ist. Die Speicher 116, 118 der Prozessorkomplexe werden üblicherweise verwendet, um Daten zwischenzuspeichern, die Datenanforderungen zugehörig sind, welche von dem System 100 verarbeitet werden.
  • Während des Betriebs werden Lese- und Schreibanforderungen von den Hosts 104a-n zuerst von einem Hostadapter 108a-n verarbeitet, der wiederum mit einem Prozessorkomplex 114a interagiert. Der Prozessorkomplex 114a verwaltet alle Lese- und Schreibanforderungen an die logischen Datenträger der Speichereinheiten 106a-n. Bei Schreibanforderungen kann der Prozessorkomplex 114a eine Fast-Write-Operation verwenden, bei der die Daten in dem flüchtigen Speicher 116a eines Prozessorkomplexes 114a zwischengespeichert und außerdem in den permanenten Speicher 118b des anderen Prozessorkomplexes 114b geschrieben werden. Der Prozessorkomplex 114a kann den Schreibvorgang dann bereits als abgeschlossen melden, bevor die Daten tatsächlich auf den Datenträger geschrieben wurden. Dies stellt eine Fast-Write-Latenz bereit. Allerdings können Einschränkungen bei Größe, Zeit und Leistung die Leistungsfähigkeit der Prozessorkomplexspeicher 116, 118 beeinträchtigen, wenn diese als Datencache verwendet werden.
  • Wenn ein Host 104a-n eine Lese-Operation durchführt, ruft ein Prozessorkomplex 114a-b die Daten unter Verwendung der Hochleistungs-Koppelnetzarchitektur aus den Speichereinheiten 106a-n ab. Wenn die Daten abgerufen und an einen Host 104a-n übergeben wurden, können sie auch in dem flüchtigen Speicher 116a-b zwischengespeichert werden, falls sie bei einer künftigen Leseanforderung erneut benötigt werden sollten. Bei einer Ausführungsform versuchen die Prozessorkomplexe 114a-b, künftige Leseanforderungen vorherzusehen, indem sie Algorithmen wie z.B. Sequential Pre-fetching in Adaptive Replacement Cache (SARC) verwenden. Bei Verwendung derartiger Algorithmen werden die Daten so lange wie möglich im Cache gehalten. Wenn ein Cachetreffer auftritt, bei dem die angeforderten Daten bereits im Cache vorhanden sind, muss der Host 104a-n nicht darauf warten, dass sie aus den Speichereinheiten 106a-n abgerufen werden. Allerdings ist aufgrund von Einschränkungen bei Größe, Zeit und Leistung der Prozessorkomplexspeicher 116, 118 die Cache-Fähigkeit dieser Speicher unter Umständen nicht in jedem Fall zufriedenstellend.
  • US-Patent 7 421 552-B2 (Long, M., „Techniques for Managing Data within a Data Storage System using a Flash-based Memory Vault“) offenbart Methoden für das Verwalten von Daten innerhalb eines Datenspeichersystems, das einen Flash-basierten Speicher verwendet, das Durchführen von Datenspeicheroperationen für eine Gruppe von Hosts unter Verwendung eines flüchtigen Cachespeichers sowie für eine Gruppe von Magnetplattenlaufwerken, während das Datenspeichersystem von einer primären Energiequelle mit Strom versorgt wird.
  • Aus diesem Grund besteht in der Technik ein Bedarf, das oben genannte Problem zu lösen.
  • Die US 2008/0244188 A1 betrifft Eine Vorrichtung zum Aufzeichnen von Informationen, umfassend: ein plattenförmiges Aufzeichnungsmedium; einen Cache-Speicher, der so konfiguriert ist, dass er als Cache für das plattenförmige Aufzeichnungsmedium dient; einen nichtflüchtigen Speicher mit einer Geschwindigkeit des Schreibens und Auslesens von Informationen, die langsamer als der Cache-Speicher ist, und der so konfiguriert ist, dass er ein Cache für das plattenförmige Aufzeichnungsmedium ist; und eine Steuereinheit, die so konfiguriert ist, dass sie die gegenseitige Übertragung von Informationen zwischen jedem der plattenförmigen Aufzeichnungsmedien, dem Cache-Speicher und dem nichtflüchtigen Speicher und dem Äußeren steuert, die gegenseitige Übertragung von Informationen zwischen dem plattenförmigen Aufzeichnungsmedium, dem Cache-Speicher und dem nichtflüchtigen Speicher steuert und ein Einstellen eines Ersatzbereichs, der einem in dem plattenförmigen Aufzeichnungsmedium erzeugten Defektbereich entspricht, in dem nichtflüchtigen Speicher steuert.
  • Die US 7634585 B2 betrifft ein abnehmbares Speichermodul, das zwischen einen Host und ein Plattenlaufwerk geschaltet wird. Das Speichermodul umfasst ein nichtflüchtiges Festkörperlaufwerk, das zum Zwischenspeichern von Daten verwendet wird, die vom Host zur Speicherung im Plattenlaufwerk gesendet werden. Das Caching findet unter der Kontrolle eines Speicher-Controllers im Speichermodul statt und kann für den Host transparent sein. Das Plattenlaufwerk kann beim Zwischenspeichern der Daten ausgefahren bleiben, wodurch Strom gespart wird. Der Bestimmungsort für Host-Daten kann auf Grundlage der gewünschten Geschwindigkeit, der Stromversorgung und des erwarteten Bedarfs an diesen Daten ermittelt werden. Ein Host kann spezifische Befehle an das Speichermodul senden, um zusätzliche Funktionen zu aktivieren.
  • Die US 2007/0255898 A1 betrifft ein Schreibmedium, das so ausgewählt wird, dass es die schnellste Operation realisiert, nachdem Daten, die einen Schreibbefehl beinhalten, vom Host-Gerät empfangen wurden. Ein Speichergerät umfasst eine Host-Schnittstelle, eine Cache-Speicherschnittstelle, eine Festplattenschnittstelle, eine Flash-Speicherschnittstelle, einen Befehlsanalysierungsabschnitt, der den Inhalt eines von der Host-Schnittstelle eingegebenen Befehls analysiert, einen Zustandsbestimmungsabschnitt, der auf Grundlage der Beziehung zwischen der Schreibdatengröße und dem freien Platz des CacheSpeichers bestimmt, in welchen der Cache-Speicher und Flash-Speicher Daten schneller geschrieben werden können, wenn der im Befehlsanalysierungsabschnitt analysierte Befehl ein Schreibbefehl ist, und einen Medienauswahlabschnitt, der ein Datenschreibziel entsprechend dem Bestimmungsergebnis des Zustandsbestimmungsabschnitts bestimmt.
  • KURZE ZUSAMMENFASSUNG
  • Aus der obigen Erörterung sollte deutlich werden, dass ein Bedarf an einer Vorrichtung, einem System und Verfahren für die Verbesserung bestehender Speicherarchitekturen und Systeme für die Datenzwischenspeicherung besteht. Zweckdienlicherweise würde eine derartige Vorrichtung, ein System und Verfahren Flash-basierte Speichereinheiten in einen oder mehrere freie Steckplätze eines E/A-Gehäuses einfügen, um Caching- und Speicherfähigkeiten bereitzustellen, welche die Architektur- und Caching-Fähigkeiten nach dem Stand der Technik verbessern.
  • Die vorliegende Erfindung wurde als Reaktion auf den gegenwärtigen Stand der Technik und insbesondere als Reaktion auf die Probleme und Erfordernisse entwickelt, die durch derzeit verfügbare Speichersystemarchitekturen noch nicht vollständig gelöst bzw. erfüllt werden. Entsprechend werden Vorrichtungen gemäß den Ansprüchen 1 und 3, Verfahren gemäß den Ansprüchen 7 und 10 und ein Computerprogrammprodukt gemäß dem Anspruch 11 für das Einfügen eines Flash-basierten Caches in ein Speichersysteme bereitgestellt, die/das viele oder alle der oben erwähnten Nachteile des Stands der Technik beseitigt. Bevorzugte Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
  • Eine beispielhafte Vorrichtung zum Einfügen eines Flash-basierten Caches wird mit einer Vielzahl von Modulen und Einheiten bereitgestellt. Diese Module und Einheiten in den beschriebenen Ausführungsformen beinhalten ein Eingabe-/Ausgabe(E/A)-Gehäusemodul, einen Hostadapter, einen Einheitenadapter, eine Flash-basierte Caching-Einheit („Flash-Cache) und einen primären Prozessorkomplex.
  • In einem Beispiel beinhaltet das E/A-Gehäusemodul ein oder mehrere E/A-Gehäuse mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten. Der Hostadapter ist mit einem ersten Steckplatz des E/A-Gehäusemoduls verbunden und so konfiguriert, dass er einen Host mit dem E/A-Gehäuse verbindet. Der Einheitenadapter ist mit einem zweiten Steckplatz des E/A-Gehäusemoduls verbunden und so konfiguriert, dass er eine Speichereinheit mit dem E/A-Gehäusemodul verbindet. Der Flash-Cache ist mit einem dritten Steckplatz des E/A-Gehäusemoduls verbunden und beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden. Der primäre Prozessorkomplex verwaltet Datenanforderungen, die durch das E/-A-Gehäusemodul verarbeitet werden, indem er mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um die Datenanforderungen zu verwalten.
  • In einem Beispiel umfasst der primäre Prozessorkomplex ferner einen DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) für das vorübergehende Zwischenspeichern von Daten, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden. Bei einer weiteren Ausführungsform umfasst der primäre Prozessorkomplex ferner einen NVS-Cache (Non-Volatile Storage, nicht flüchtiger Speicher), der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten beinhaltet, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden. Bei einer Ausführungsform ist der primäre Prozessorkomplex so konfiguriert, dass er Daten, die in dem DRAM-Cache oder in dem NVS-Cache zwischengespeichert sind, in den Flash-Cache auslagert.
  • In einem Beispiel ist die Vorrichtung ferner so konfiguriert, dass sie einen sekundären Prozessorkomplex beinhaltet, der als sekundäre Verwaltungseinheit für Datenanforderungen dient, die durch das E/A-Gehäusemodul verarbeitet werden, so dass der sekundäre Prozessorkomplex mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten. Bei einer weiteren Ausführungsform beinhaltet der zweite Prozessorkomplex einen DRAM-Cache für das vorübergehende Zwischenspeichern von Daten, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden. Bei einer weiteren Ausführungsform umfasst der zweite Prozessorkomplex ferner einen NVS-Cache, der eine nicht flüchtige Speichereinheit umfasst, um Daten zwischenzuspeichern, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden.
  • In einem Beispiel ist der Flash-Cache genau einem Komplex des primären Prozessorkomplexes und eines sekundären Prozessorkomplexes zugeordnet, wobei sowohl der primäre als auch der sekundäre Prozessorkomplex so konfiguriert ist, dass er Datenanforderungen verwaltet, die durch das E/A-Gehäuse verarbeitet werden. Bei einer weiteren Ausführungsform wird der mindestens eine Flash-Cache, der zunächst dem primären Prozessorkomplex zugeordnet ist, als Reaktion auf einen Ausfall des primären Prozessorkomplexes dem sekundären Prozessorkomplex zugeordnet.
  • Bei einer beispielhaften Vorrichtung ist der Flash-Cache in Bereiche unterteilt, die einen Lese-Cachebereich, der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, und einen Schreib-Cachebereich, der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, umfassen. Bei einer weiteren Ausführungsform ist der Flash-Cache ferner in einen Zusatz-Lese-Cachebereich, der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich, der Daten speichert, die nicht in einen Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden, unterteilt.
  • In einem Beispiel ist der primäre Prozessorkomplex so konfiguriert, dass er für Caching-Operationen, die durch das E/A-Gehäusemodul verarbeitet werden, ausschließlich den Flash-Cache nutzt, so dass der primäre Prozessorkomplex für Caching-Operationen keinen getrennten DRAM-Cache und/oder NVS-Cache verwendet.
  • In einem weiteren Beispiel wird ein System vorgestellt, das einen Flash-basierten Cache in ein Speichersystem einfügt. Das Verfahren der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung oben dargelegten Funktionen durchzuführen. Das System kann in verschiedenen Konfigurationen ausgeführt sein, um einen Flash-Cache in einen zusätzlichen Steckplatz eines E/A-Gehäuses aufzunehmen.
  • Insbesondere beinhaltet das System in einem Beispiel ein E/A-Gehäusemodul mit einem oder mehreren E/A-Gehäusen, die über eine Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten verfügen. Vorzugsweise weist es mindestens einen Hostadapter auf, der mit einem ersten Steckplatz des E/A-Gehäusemoduls verbunden ist, wobei der Hostadapter so konfiguriert ist, dass er einen Host mit dem E/A-Gehäusemodul verbindet. Dabei ist mindestens ein Host mit dem mindestens einen Hostadapter verbunden. Mindestens ein Einheitenadapter ist mit einem zweiten Steckplatz des E/A-Gehäusemoduls verbunden, und der Einheitenadapter ist so konfiguriert, dass er eine Speichereinheit mit dem E/A-Gehäusemodul verbindet.
  • In einem Beispiel beinhaltet das System außerdem mindestens eine Speichereinheit, die mit dem mindestens einen Einheitenadapter verbunden ist. Das System beinhaltet des Weiteren mindestens eine Flash-basierte Caching-Einheit („Flash-Cache), die mit einem dritten Steckplatz des E/A-Gehäusemoduls verbunden ist. Der Flash-Cache beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden. Das System kann ferner einen primären Prozessorkomplex beinhalten, der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden. Der primäre Prozessorkomplex tauscht mit dem mindestens einen Hostadapter, dem mindestens einen Einheitenadapter und dem mindestens einen Flash-Cache Daten aus, um die Datenanforderungen zu verwalten.
  • Bei einer beispielhaften Implementierung des Systems ist der Host ein Computersystem, wobei das Computersystem mindestens einen Prozessor und einen Speicher beinhaltet. Bei einer weiteren Ausführungsform beinhaltet die Speichereinheit ein oder mehrere Festplattenlaufwerke und ein Magnetbandlaufwerk.
  • Ferner wird ein Verfahren der vorliegenden Erfindung vorgestellt, mit dem ein Flash-basierter Cache in ein Speichersystem eingefügt wird. Das Verfahren der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung und des Systems oben dargelegten Funktionen durchzuführen.
  • In einem weiteren Beispiel beinhaltet das Verfahren das Verbinden von mindestens einer Flash-basierten Caching-Einheit („Flash-Cache“) mit einem E/A-Gehäusemodul, wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden. Das Verfahren kann ferner das Empfangen einer Datenanforderung in einem Hostadapter beinhalten, der mit einem ersten Steckplatz eines E/A-Gehäusemoduls verbunden ist. Der Hostadapter ist so konfiguriert, dass er einen Host mit dem E/A-Gehäusemodul verbindet. Das E/A-Gehäusemodul beinhaltet ein oder mehrere E/A-Gehäuse mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten, und das E/A-Gehäusemodul verfügt über mindestens einen Einheitenadapter, der mit einem zweiten Steckplatz des E/A-Gehäusemoduls verbunden ist. Der Einheitenadapter ist so konfiguriert, dass er eine Speichereinheit mit dem E/A-Gehäusemodul verbindet.
  • Das beispielhafte Verfahren kann auch das Übertragen der Datenanforderung an einen primären Prozessorkomplex, der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden, sowie das Zugreifen auf mindestens eine Flash-basierte Caching-Einheit („Flash-Cache“) beinhalten, um eine oder mehrere Caching-Operationen durchzuführen, die der Datenanforderung zugehörig sind. Der Flash-Cache ist mit einem dritten Steckplatz des E/A-Gehäusemoduls verbunden. Der Flash-Cache beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden.
  • Bei einer weiteren beispielhaften Implementierung des Verfahrens kann die Datenanforderung eine Leseanforderung sein, und das Zugreifen auf den mindestens einen Flash-Cache zur Durchführung einer oder mehrerer Caching-Operationen kann das Abrufen von Daten aus dem Flash-Cache beinhalten. Bei einer weiteren Ausführungsform kann die Datenanforderung eine Schreibanforderung sein, und das Zugreifen auf den mindestens einen Flash-Cache zur Durchführung einer oder mehrerer Caching-Operationen kann das Speichern von Daten, die der Schreibanforderung zugehörig sind, in dem Flash-Cache beinhalten. Bei einer weiteren Ausführungsform kann das Verfahren ferner das Auslagern von in dem Flash-Cache gespeicherten Daten in die Speichereinheit beinhalten, die mit dem Einheitenadapter verbunden ist.
  • In einem weiteren Beispiel wird ein Computerprogramm bereitgestellt, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines digitalen Computers geladen werden kann, welches Softwarecode-Teile umfasst, die, wenn das Programm auf einem Computer ausgeführt wird, die Schritte der oben erwähnten Verfahren durchführen.
  • Figurenliste
  • Im Folgenden wird die vorliegende Erfindung lediglich beispielhaft und mit Bezug auf bevorzugte Ausführungsformen beschrieben, wie sie in den folgenden Figuren dargestellt werden:
    • 1 ist eine schematische Darstellung, die eine Ausführungsform eines herkömmlichen Speichersystems gemäß dem Stand der Technik zeigt, in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung realisiert werden kann;
    • 2 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems mit einem eingefügten Flash-basierten Cache gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
    • 3 ist eine schematische Darstellung, die eine Ausführungsform einer Flash-basierten Caching-Einheit gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
    • 4 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems mit einem eingefügten Flash-basierten Cache und ohne einen nicht flüchtigen Speicher-Cache gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
    • 5 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems, das ausschließlich einen eingefügten Flash-basierten Cache verwendet, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt;
    • 6 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens für das Einfügen eines Flash-Caches in ein Speichersystem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt; und
    • 7 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens für das Verarbeiten von Datenanforderungen in einem Speichersystem mit einem Flash-Cache gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Der Fachmann weiß, dass Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Entsprechend können Aspekte der vorliegenden Erfindung in Gestalt einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder in Gestalt einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte, die zusammenfassend als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können, miteinander vereint. Zudem können Aspekte der vorliegenden Erfindung in Gestalt eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, auf denen computerlesbarer Programmcode enthalten ist.
  • Viele der in dieser Beschreibung erläuterten Funktionseinheiten wurden als Module bezeichnet, um ihre Realisierungsunabhängigkeit zu unterstreichen. So kann ein Modul z.B. als Hardwareschaltung realisiert werden, die kundenspezifische VLSI-Schaltungen oder Gate Arrays, vorgefertigte Halbleiter wie Logikchips, Transistoren oder andere diskrete Bestandteile umfasst. Alternativ kann ein Modul als programmierbare Hardware-Einheiten wie z.B. Field Programmable Gate Arrays (FPGA), Programmable Array Logic (PAL), programmierbare Logikeinheiten oder Ähnliches realisiert sein.
  • Module können auch in Software realisiert und von verschiedenen Arten von Prozessoren ausgeführt werden. Ein bestimmtes Modul von ausführbarem Code kann z.B. einen oder mehrere physische oder logische Blöcke von Computerbefehlen umfassen, die z.B. als Objekt, Prozedur oder Funktion aufgebaut sein können. Dessen ungeachtet muss der ausführbare Code eines bestimmten Moduls nicht physisch an einer einzigen Stelle vorliegen, sondern kann auch unterschiedliche Befehle umfassen, die an verschiedenen Stellen gespeichert werden und die, wenn sie logisch miteinander verbunden werden, das Modul umfassen und den vorgesehenen Zweck für das Modul erzielen.
  • Tatsächlich kann ein Modul von ausführbarem Code ein einziger Befehl oder viele Befehle sein und sogar über mehrere verschiedene Codesegmente innerhalb verschiedener Programme und über mehrere Speichereinheiten hinweg verteilt sein. Ebenso können Betriebsdaten hier innerhalb von Modulen kenntlich gemacht und dargestellt sowie in jeder beliebigen geeigneten Form realisiert werden und innerhalb einer beliebigen geeigneten Art von Datenstruktur organisiert sein. Dabei können die Betriebsdaten als ein einziger Datensatz zusammengestellt sein, oder sie können auf verschiedene Stellen, darunter verschiedene Speichereinheiten, verteilt sein, und sie können zumindest teilweise als bloße elektronische Signale in einem System oder Netzwerk vorhanden sein. Wenn ein Modul oder Teile eines Moduls in Software realisiert werden, sind die Softwareteile auf einem oder mehreren computerlesbaren Medien gespeichert.
  • Dabei kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien genutzt werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z.B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem bzw. eine entsprechende Vorrichtung oder Einheit oder aber eine beliebige geeignete Kombination der vorgenannten Elemente sein, ohne jedoch auf diese beschränkt zu sein.
  • Konkretere Beispiele des computerlesbaren Speichermediums würden Folgendes beinhalten (wobei dies eine nicht vollständige Liste darstellt): eine elektrische Verbindung mit einem oder mehreren Leitern, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen Lichtwellenleiter, eine tragbare CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination der vorgenannten Elemente. In Verbindung mit diesem Dokument kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm enthalten oder speichern kann, welches von oder in Zusammenhang mit einem System, einer Vorrichtung oder Einheit für die Befehlsausführung verwendet wird.
  • Ein computerlesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem computerlesbaren Programmcode beinhalten, z.B. als Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form von unterschiedlichen Formen annehmen, darunter, ohne darauf beschränkt zu sein, eine elektromagnetische Form, eine optische Form oder auch jede geeignete Kombination hiervon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm austauschen, weiterleiten oder übertragen kann, welches für die Nutzung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zur Befehlsausführung vorgesehen ist. Auf einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlose, drahtgebundene, Lichtwellenleiterkabel-, Funk- und andere Medien oder eine beliebige Kombination der vorgenannten Medien.
  • Computerprogrammcode für das Ausführen der Arbeitsschritte für Aspekte der vorliegenden Erfindung können in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
  • Im Folgenden werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf schematische Ablaufdiagramme und/oder schematische Darstellungen von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen sowie Kombinationen von Blöcken in den schematischen Ablaufdiagrammen und/oder den schematischen Darstellungen durch Computerprogrammbefehle realisiert werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen angegeben werden.
  • Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsartikel hervorbringen, der Befehle enthält, mit denen die Funktion/Handlung, die in dem Block bzw. den Blöcken der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen angegeben ist, realisiert wird.
  • Die Computerprogrammbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Betriebsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder den anderen Einheiten ausgeführt wird, um einen auf einem Computer realisierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderweitigen Datenverarbeitungsvorrichtung ausgeführt werden, Prozesse bereitstellen, mit denen die Funktionen/Handlungen, die in dem Block bzw. den Blöcken des Ablaufplans und/oder Blockschaltbilds angegeben sind, realisiert werden.
  • Die schematischen Ablaufdiagramme und/oder schematischen Darstellungen in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Vorrichtungen, Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der schematischen Ablaufdiagramme und/oder der schematischen Darstellungen ein Modul, ein Segment oder einen Code-Teil darstellen, der einen oder mehrere ausführbare Befehle umfasst, mit denen sich die angegebene(n) logische(n) Funktion(en) realisieren lässt/lassen.
  • Zu beachten ist ferner, dass bei manchen alternativen Ausführungsformen die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten können. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Auch sind andere Schritte und Verfahren vorstellbar, die hinsichtlich Funktion, Logik oder Auswirkung gleichwertig mit einem oder mehreren Blöcken oder Teilen hiervon aus den dargestellten Figuren sind.
  • 2 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems 200 mit einer eingefügten Flash-basierten Caching-Einheit („Flash-Cache“) 220a-n gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt.
  • Das System 200 beinhaltet eine Gruppe von einem oder mehreren E/A-Gehäusen 202a-n, die eine Schnittstelle zwischen einem oder mehreren Hosts 204a-n und einer oder mehreren Speichereinheiten 206a-n bereitstellen. Die Speichereinheiten 206a-n können in einem Gehäuse wie z.B. einem Plattengehäuse untergebracht sein, in dem eine oder mehrere HDDs oder andere Arten von Speichereinheiten wie z.B. Magnetbandlaufwerke oder optische Laufwerke untergebracht sind. Bei einer Ausführungsform können die Speichereinheiten 206a-n eine Anordnung von Platten beinhalten, die so konfiguriert sein können, dass sie verschiedene Arten von Redundanzschutz bereitstellen.
  • Wie hier verwendet, kann die Gruppe von E/A-Gehäusen auch gemeinsam als ein E/A-Gehäusemodul 201 bezeichnet werden. Ein E/A-Gehäuse 202a-n im hier verwendeten Sinne bezieht sich auf eine Einheit, in der verschiedene E/A-Adapter 208a-n, 210a-n sowie Verbindungseinheiten untergebracht sind, um eine Datenübertragung zwischen den E/A-Speichereinheits-Prozessoren 214a-b und den E/-Adaptern 208a-n, 210a-n bereitzustellen. Üblicherweise sind die E/A-Gehäuse 102a-n paarweise installiert, um einen Redundanzschutz bereitzustellen. Bei den in einem E/A-Gehäuse 202-n enthaltenen E/A-Adaptern 208a-n, 210a-n handelt es sich üblicherweise entweder um einen Hostadapter 208a-n oder um einen Einheitenadapter 210a-n. Ein E/A-Gehäuse 202a-n weist in der Regel eine Vielzahl von verfügbaren Steckplätzen auf, mit denen ein Hostadapter 208a-n oder ein Einheitenadapter 210a-n verbunden sein kann. Wie oben erwähnt, kann ein E/A-Gehäuse 202a-n mit mehreren offenen Steckplätzen konfiguriert sein, um eine Erweiterung um zusätzliche Adapter oder anderweitige Zwecke zu ermöglichen.
  • Ein Hostadapter 208a-n ist ein Adapter, der eine Verbindung zwischen einem Host 204a-n und dem E/A-Gehäuse 202a-n bereitstellt. Ein Host 204a-n ist üblicherweise eine Datenverarbeitungsmaschine wie z.B. ein Personalcomputer, ein Laptop, ein Client oder ähnliches, die auf das Speichersystem 200 zugreift, indem sie Datenanforderungen durch das E/A-Gehäuse 202a-n an verschiedene Speichereinheiten 206a-n oder Teilsysteme stellt. Die Hosts 204a-n sind üblicherweise über das Netzwerk 212 mit den Hostadaptern 208a-n verbunden, und das Netzwerk 212 beinhaltet in der Regel verschiedene Einheiten wie Router, Switches und Ähnliches. Die Hosts 204a-n können unter Verwendung einer Netzwerktechnologie wie Fibre Channel, Fibre Connectivity („FICON“), Enterprise Systems Connection („ESCON“) oder eines anderweitigen Verbindungsprotokolls, das dem Fachmann bekannt ist, mit einem Hostadapter 108a-n verbunden sein.
  • Ein Einheitenadapter 210a-n ist eine Einheit, die eine Verbindung zwischen einer Einheit wie z.B. einer Speichereinheit 206a-n und dem E/A-Gehäuse 202a-n bereitstellt. Bei einer Ausführungsform können die Einheitenadapter 210a-n FC-AL(Fibre Channel Arbitrated Loop)-Einheitenadapter sein. Bei einer typischen Ausführungsform kann jeder Einheitenadapter 210a-n zwei getrennt geschaltete Netzwerke verbinden, die eine Datenübertragung mit den Speichereinheiten 206a-n bereitstellen. Wenn bei einer Ausführungsform ein Einheitenadapter 210a-n eine Verbindung mit einer Speichereinheit 206a-n bereitstellt, kann er eine geschaltete Verbindung verwenden, um die Daten über den kürzest möglichen Pfad zu übertragen. Wie der Fachmann weiß, sind selbstverständlich auch andere Arten von Verbindungen und Datenübertragungsprotokollen denkbar.
  • Die Datenübertragung zwischen den verschiedenen Bestandteilen des Systems 200 wird durch einen oder mehrere Prozessorkomplexe 214a-b ermöglicht. Bei einer gemeinsamen Architektur, wie sie in typischen Unternehmensspeichersystemen realisiert ist, werden zwei Prozessorkomplexe 214a-b verwendet, um die Zuverlässigkeit zu erhöhen und die Leistung zu verbessern. Üblicherweise ist einer der primäre Prozessorkomplex 214a und der andere der sekundäre Prozessorkomplex 214b. Beide Prozessorkomplexe 214a-b sind üblicherweise mit jedem E/A-Gehäuse 202a-n verbunden und beinhalten die Logik, die notwendig ist, um eine Datenübertragung zwischen den Hostadaptern 208a-n und den Einheitenadaptern 110a-n bereitzustellen und so einem Host 204a-n, der mit einem Hostadapter 208a-n verbunden ist, zu ermöglichen, über einen Einheitenadapter 210a-n auf eine Speichereinheit 206a-n zuzugreifen. Ein Prozessorkomplex 214an kann hier auch als zentrale Elektronik (Central Electronics Complex, CEC) bezeichnet werden.
  • Bei der abgebildeten Ausführungsform beinhaltet der Prozessorkomplex 214a-b einen flüchtigen Speicher wie den dynamischen Arbeitsspeicher (Dynamic Random Access Memory, DRAM) 216a-b und einen nicht flüchtigen Speicher, der als NVS (Non-Volatile Storage) 218a-b bezeichnet wird und üblicherweise als batteriegepufferter DRAM konfiguriert ist. Selbstverständlich können bei anderen Ausführungsformen andere Arten von flüchtigen und nicht flüchtigen Speichern durch den Prozessorkomplex verwendet werden, wie für den Fachmann offensichtlich ist. Der Speicher 216, 218 der Prozessorkomplexe 214a-b dient in der Regel zum Zwischenspeichern von Daten, die Datenanforderungen zugehörig sind, welche durch das System 200 verarbeitet werden.
  • Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung enthält das System 200 einen Flash-Cache 220a-n in einem freien Steckplatz des E/A-Gehäusemoduls 201. Vorzugsweise kann eine Vielzahl von Flash-Caches 220a-n verwendet werden, und jeder Flash-Cache 220a-n kann einem bestimmten Prozessorkomplex 214a-b zugeordnet sein. Der Flash-Cache 220a-n beinhaltet einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul 201 verarbeitet werden. Bei einer denkbaren Ausführungsform kann sich ein „Flash-basierter“ Speicher auch auf andere Arten von Halbleiterspeichern beziehen, wie z.B. Phasenwechselspeicher (Phase Change Memory, PCM), die ähnliche Eigenschaften wie ein Flash-Speicher haben können, die jedoch - je nach Konfiguration und Architektur des Systems 200 - bessere Leistungseigenschaften aufweisen können. Zusätzlich könnte bei manchen Ausführungsformen ein Flash-Cache 220a in zwei oder mehrere Partitionen aufgeteilt sein, die jeweils von einem der Prozessorkomplexe 214a-b verwaltet werden könnten. Dies würde die Verwendung von weniger Flash-Caches 220a-n ermöglichen und damit die Gesamtkosten senken. Bei einer derartigen Ausführungsform kann in einem zweiten Flash-Cache 220c eines zweiten E/A-Gehäuses 202b eine Datenredundanz bereitgestellt werden.
  • Indem ein Flash-Cache 220a-n in einen freien Steckplatz des E/A-Gehäusemoduls 201 eingesetzt wird, verbessert der Flash-Cache 220a-n die Leistung (z.B. durch eine höhere Cache-Trefferquote) des Systems 200, während er sich gleichzeitig ohne bedeutsame Änderungen an den Einheiten und Bestandteilen des Systems 200 nahtlos in bestehende Architekturen einfügt. Zudem ist der Flash-Cache 220a-n skalierbar und kann erheblich größer werden als der DRAM-Cache 216a-b und der NVS-Cache 214a-b herkömmlicher Systeme.
  • Bei der abgebildeten Ausführungsform dient der Flash-Cache 220a-n als Zwischenspeicher und bildet zusammen mit dem DRAM-Cache 216a-b und dem NVS-Cache 218a-b ein zweischichtiges Caching-System.. So können Daten z.B. zuerst in dem DRAM-Cache 216a-b zwischengespeichert und dann in den Flash-Cache 220a-n ausgelagert werden, bevor sie weiter in die Speichereinheiten 206a-n ausgelagert werden. Dies ermöglicht eine Verbesserung der Architektur mit mindestens denselben Leistungsmerkmalen hinsichtlich der Befehle pro Sekunde und der Latenzzeit, während gleichzeitig der verfügbare Cache vergrößert wird, um die Cache-Trefferquote zu verbessern.
  • 3 ist eine schematische Darstellung, die eine Ausführungsform einer Flash-basierten Caching-Einheit 220a bzw. eines Flash-Caches gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt, kann der Flash-Cache 220a in verschiedene Bereiche unterteilt werden, um verschiedene Caching-Operationen zu verarbeiten. Die abgebildete Ausführungsform zeigt einen Schreibbereich 302, einen Lesebereich 304, einen Zusatz-Lesebereich 306 und einen Speicherbereich 308. Obwohl die abgebildete Ausführungsform vier verschiedene Bereiche zeigt, ist denkbar, dass ein Flash-Cache 220a mit nur einer anderen Bereichsart bereitgestellt wird. Im Allgemeinen wird der Lesebereich 304 zur Speicherung einer gespiegelten Datenkopie verwendet, wobei die andere Kopie entweder in einem DRAM-Cache 216a, einem NVS-Cache 218a oder einem Flash-Cache 220a vorhanden ist, während der Zusatz-Lesebereich 306 zwischengespeicherte Daten enthält, die nicht in einen anderen Cache gespiegelt werden müssen. Bei einer bevorzugten Ausführungsform wird die Verwaltung des Lesebereichs 304 durch einen der Prozessorkomplexe 214a-b gesteuert, und die Verwaltung des Zusatz-Lesebereichs 306 erfolgt intern durch den Flash-Cache 200a-n.
  • Der Schreibbereich 302 ist so konfiguriert, dass er vorübergehend Daten speichert, die einer Schreibanforderung zugehörig sind. Üblicherweise werden die Schreibdaten entweder in eine Speichereinheit 206a-n oder in einen Lesebereich des Flash-Caches 220a ausgelagert. Der Lesebereich 304 speichert Daten für Leseanforderungen, so dass die Daten nicht aus den Speichereinheiten 206a-n abgerufen werden müssen, sondern stattdessen direkt aus dem Lesebereich 304 des Flash-Caches abgerufen werden. Vorzugsweise kann ein Hostadapter 208a-n in demselben E/A-Gehäuse 202a-n wie der entsprechende Flash-Cache 220a-n direkt auf den Lesebereich 304 zugreifen. Der Zusatz-Lesebereich 306 dient zur Erweiterung des verfügbaren Lese-Bereichsspeichers, um so die Wahrscheinlichkeit eines Cachetreffers bei einer Leseanforderung zu erhöhen.
  • Der Speicherbereich 308 ist vorzugsweise so konfiguriert, dass er sich ähnlich wie eine Speichereinheit der Speicherstufe 0 verhält. So kann der Speicherbereich 308 z.B. zum Speichern von Daten verwendet werden, die nie auf Platten ausgelagert werden, z.B. Metadaten, die von den Prozessorkomplexen 214a-b verwendet werden, oder Daten, die vorzugsweise in einem Flash-Cache 220a-n gespeichert werden. Bei einer Ausführungsform kann der Speicherbereich 308 des Flash-Caches 220a einer Nummer der logischen Einheit (Logical Unit Number, LUN) zugewiesen werden, um auf den Bereich als eine Speichereinheit zuzugreifen.
  • Bei manchen Ausführungsformen können Daten, die in dem Speicherbereich 308 eines Flash-Caches 220a gespeichert sind, in den Speicherbereich eines anderen Flash-Caches 220b ausgelagert werden, um einen Redundanzschutz bereitzustellen. Somit kann eine Schreibanforderung Daten in dem Schreibbereich eines ersten Flash-Caches 220a und dem Schreibbereich eines zweiten Flash-Caches 220c speichern. Vorzugsweise befinden sich der erste und zweite Flash-Cache 220a, 220c in verschiedenen E/A-Gehäusen 202a-n. Darauffolgende Leseanforderungen können die Daten dann direkt aus dem Schreibbereich der Flash-Caches 220a, 220c abrufen. Vorzugsweise ruft eine von einem Hostadapter 208a empfangene Schreibanforderung Daten aus einem Flash-Cache 220a ab, der innerhalb desselben E/A-Gehäuses 202a wie dieser selbst konfiguriert ist.
  • Während des Betriebs verarbeitet das System 200 mit einem Prozessorkomplex-Cache 216a-b, 218a-b und einem Flash-Cache 220a-n sowohl Lese- als auch Schreibanforderungen auf eine verbesserte Art und Weise.
  • Mit Blick auf eine Schreibanforderung wird diese von einem Hostadapter 208a empfangen, und der Hostadapter 208a fragt den primären Prozessorkomplex 214a, wo die Daten gespeichert werden sollen. Der Prozessorkomplex 214a sendet eine Antwort zurück, die einen Speicherort angibt, an den die Daten verschoben werden sollen. In der Regel antwortet der Prozessorkomplex mit zwei Speicherorten, einem flüchtigen DRAM-Cache-Speicherort 216a und einem nicht flüchtigen Speicherort entweder in dem NVS-Cache 218b des sekundären Prozessorkomplexes 214b oder einem oder zwei Speicherorten in Schreibbereichen der Flash-Caches 220a-n. Wenn der primäre Prozessorkomplex 214a nicht erreichbar ist, kann bei einer Ausführungsform der sekundäre Prozessorkomplex 214b gefragt werden, und der sekundäre Prozessorkomplex 214b wird der neue primäre Prozessorkomplex 214a.
  • Der primäre Prozessorkomplex 214a antwortet auf eine Schreibanforderung, indem er Platz in seinem DRAM-Cache 216a zuweist. Üblicherweise wird der Platz in dem NVS-Cache 218b des sekundären Prozessorkomplexes 214b ebenfalls zugewiesen, um als Sicherung für die zwischengespeicherten Daten zu dienen. Danach verlagert der Hostadapter 208a die Daten an die von dem primären Prozessorkomplex 214a angegebenen Speicherorte, darunter den DRAM-Cache 216a und den NVS-Cache 218b.
  • Zu einem späteren Zeitpunkt kann der Prozessorkomplex 214a-b die Daten dann aus dem DRAM-Cache 216a und dem NVS-Cache 218b in den Flash-Cache 220a-n auslagern. Danach kann der Prozessorkomplex 214a-b die Daten aus dem Flash-Cache 220a-n in die Speichereinheiten 206a-n auslagern. Hierfür wird ein Einheitenadapter 210a informiert, und der Einheitenadapter 210a lagert die Daten aus dem Flash-Cache 220a-n an die Speichereinheit 206a-n aus, die mit dem Einheitenadapter 210a verbunden ist. Dabei wird vorzugsweise ein Einheitenadapter 210a-n verwendet, der sich in demselben E/A-Gehäuse 202a-n befindet, in dem die Daten in dem Flash-Cache 220a-n gespeichert werden. In manchen Fällen können die Daten direkt aus dem DRAM-Cache 216a oder NVS-Cache 218b an die Speichereinheit 206a-n ausgelagert werden. Sobald die Auslagerungsoperation abgeschlossen ist, informiert der Einheitenadapter 210a den Prozessorkomplex 214a über den Abschluss der Operation.
  • Sobald die Daten aus dem Flash-Cache 220a-n an die Speichereinheiten 206a-n ausgelagert sind, kann der primäre Prozessorkomplex 214a die Daten entweder in dem Schreibbereich 302 des Flash-Caches 220a-n freigeben oder sie für einen künftigen Zugriff gemäß Leseanforderungen, die eben diese Daten anfordern, virtuell in einen Zusatz-Lesebereich 306 des Flash-Caches 220a verschieben. Auf diese Weise kann der Flash-Cache 220a-n interne Zuordnungseinträge ungültig machen und somit Schreib-Vervielfachungen verringern. Nachdem dies erledigt ist, wird eine Abschlussmeldung von dem Flash-Cache 220a-n an den Prozessorkomplex 214a gesendet.
  • Bei einer Ausführungsform erfordert das Verschieben von Daten aus einem Cachebereich (z.B. dem Schreibbereich 302) in einen anderen (z.B. dem Zusatz-Lesebereich 306) kein tatsächliches Neukopieren der Daten. Stattdessen werden die dem Flash-Cache 220a-n zugehörigen Metadaten aktualisiert, so dass sie die Bereichsänderung der Daten widerspiegeln. Bei einem Ausfall des primären Prozessorkomplexes 214a können die Metadaten an den NVS-Cache 218a-b des sekundären Prozessorkomplexes 214b oder an den Flash-Cache 220a-n selbst (z.B. in dem Speicherbereich 308) ausgegeben werden. Daraufhin kann der sekundäre Prozessorkomplex 214b übernehmen, die Metadaten entweder aus seinem NVS-Cache 218b oder aus dem Flash-Cache 220a-n abrufen und anschließend mit dem normalen Betrieb fortfahren.
  • Mit Blick auf eine Leseanforderung empfängt der Hostadapter 208a die Leseanforderung und fragt den Prozessorkomplex 214a nach dem Speicherort der angeforderten Daten. Einer oder mehrere der Prozessorkomplexe 214a-b antwortet mit dem Speicherort der Daten, der entweder in seinem lokalen DRAM-Cache 216a-b, seinem NVS-Cache 218a-b, in einem der Bereiche des Flash-Caches 220a-n, der dem Prozessorkomplex 214a-b zugeordnet ist, oder in einer Speichereinheit 206a-n sein kann, die mit dem System 200 verbunden ist. Der Hostadapter 208a ruft dann die Daten aus dem angegebenen Speicherort ab und stellt sie dem Host 204a-n bereit. Mitunter wurden die Daten unter Umständen noch nicht aus dem Schreibbereich 302 an die Lesebereiche 304, 306 verschoben. Dessen ungeachtet können die Daten auch in diesem Fall bei Bedarf direkt aus dem Schreibbereich 302 abgerufen werden. Wenn Daten aus einer der Speichereinheiten 206a-n abgerufen werden, verwendet der Prozessorkomplex 214a-b in der Regel einen Einheitenadapter 210a-n zum Abrufen der Daten.
  • 4 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems 300 mit einem eingefügten Flash-basierten Cache 220a-n und ohne einen NVS-Cache 218a-b gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Bei dieser Ausführungsform werden ebenfalls verschiedene Flash-Caches 220a-n in die freien Steckplätze des E/A-Gehäusemoduls 201 eingesetzt, wobei jedoch die üblicherweise mit den Prozessorkomplexen 214a-b verbundenen NVS-Caches 218a-b entfernt sind. Bei dieser Ausführungsform dient der Flash-Cache 220a-n als nicht flüchtiger Speicher für die Prozessorkomplexe 214a-b, so dass Kosten verringert werden können und die Wirksamkeit erhöht werden kann, indem die Notwendigkeit, den NVS-Cache 218a-b mit Strom zu versorgen, vermieden wird. Zudem wird, verglichen mit einer Ausführungsform, die den NVS-Cache 218a-b beinhaltet, weniger Fabric-Bandbreite verbraucht, während dennoch ein skalierbarer Schreibcache in Form des Flash-Caches 220a bereitgestellt wird.
  • Auch der Betrieb des Systems 300 weist geringfügige Abweichungen auf, da der NVS-Cache 218a-b aus dem System 300 entfernt wird. Mit Blick auf eine Schreibanforderung fragt der Hostadapter 208a auch hier den primären Prozessorkomplex 214a, wo die Schreibdaten zwischengespeichert werden sollen, und der primäre Prozessorkomplex 214a antwortet, indem er Platz in seinem DRAM-Cache 216a und in dem Schreibbereich 302 eines Flash-Caches 220a zuweist. Die Daten werden in beide Speicherorte geschrieben, wobei der Flash-Cache 220a nun anstelle des NVS-Caches 218b als nicht flüchtiger Speicher der Schreibdaten dient und wobei der DRAM-Cache 216a im Vergleich zu dem Flash-Cache 220a eine höhere Speicherleistung bereitstellt.
  • Bei einer Ausführungsform werden die Daten direkt aus dem DRAM-Cache 216a in die Speichereinheiten 206a-n ausgelagert. Entsprechend kann der Flash-Cache 220a-n die Schreibdaten aus seinem Schreibbereich 302 freigeben. Bei einer Ausführungsform werden die Daten aus dem Schreib-Cachebereich 302 in den Zusatz-Lesebereich 306 (oder den Lesebereich 304) verschoben, indem die dem Flash-Cache 220a zugehörigen Metadaten aktualisiert werden. Der Abschluss dieser Aktion wird dann an die Prozessorkomplexe 214a-b zurückgemeldet. Alternativ können die Daten auch aus einem Flash-Cache 220a in einen anderen Flash-Cache 220c ausgelagert werden, bevor sie in die Speichereinheiten 206a-n ausgelagert werden. So dient ein zweiter Flash-Cache 220c z.B. als Zweitebenen-Zwischenspeicher zwischen einem ersten Flash-Cache 220a und den Speichereinheiten 206a-n.
  • Weil mindestens eine Kopie der Daten in einem Flash-Cache 220a-n gespeichert wird, werden unter Umständen zusätzliche Verarbeitungseinheiten benötigt, um der im Gegensatz zu einem DRAM bedeutend höheren Schreiblatenzzeit eines Flash-basierten Speichers entgegenzuwirken. Dies kann bei einer Ausführungsform durch die Verwendung eines Ringpuffers in dem Flash-Cache erzielt werden, der entweder batteriegepuffert ist oder mit Superkondensatoren geschützt wird. Nachdem die Daten in diesen Ringpuffer verlagert wurden, kann der Flash-Cache sofort die erfolgreiche Schreiboperation melden, bevor die Daten tatsächlich in den Flash-Speicher verschoben wurden. Um Strom und Kosten zu sparen, ist der Ringpuffer im Vergleich zu dem NVS-Cache 218a-b in der Regel verhältnismäßig klein und kann von Metadaten enthaltenden Strukturen, die dem Flash-Cache 220a-n zugehörig sind, getrennt sein.
  • Abgesehen davon, dass der NVS-Cache 218a-b nicht mehr als möglicher Lese-Datenspeicherort verfügbar ist, entspricht der Lesepfad demjenigen, der oben mit Bezug auf 2 beschrieben wurde.
  • 5 ist eine schematische Darstellung, die eine Ausführungsform eines Speichersystems 400 zeigt, das ausschließlich einen Flash-Cache 220a-n ohne einen DRAM-Cache 216a-b oder einen NVS-Cache 218a-b gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet. Bei der abgebildeten Ausführungsform werden der DRAM-Cache 216a-b und der NVS-Cache 218a-b der vorherigen Ausführungsformen durch die Flash-Caches 220a-n ersetzt, die mit dem E/A-Gehäusemodul 201 verbunden sind. Bei einer Ausführungsform macht sich diese Architektur das Vorhandensein einer Peer-to-Peer-Datenübertragungsmöglichkeit zwischen den E/A-Gehäusen 202a-n zunutze, die dem System 400 ermöglicht, eine zweite Kopie von Daten in einen zweiten Flash-Cache 220c in einem anderen E/A-Gehäuse 202b zu schreiben, ohne hierfür CPU-Zyklen des Prozessorkomplexes 214a zu beanspruchen, dabei jedoch Übertragungsbandbreite des Prozessorkomplexes 214a nutzt.
  • Wenn eine Schreibanforderung durch den Hostadapter 208a empfangen wird, fragt der Hostadapter 208a bei dieser Ausführungsform den Prozessorkomplex 214a ebenfalls nach einem Speicherort, an den die Daten verschoben werden sollen. Die möglichen Speicherorte können als Metadaten 402a-b gespeichert werden. Ein erster Zielspeicherort, der einem ersten Flash-Cache 220a in einem ersten E/A-Gehäuse 202a entspricht, wird zurückgegeben, und ein zweiter Zielspeicherort, der einem zweiten Flash-Cache 220c in einem zweiten E/A-Gehäuse 202b entspricht, wird zurückgegeben. Danach überträgt der Hostadapter 208a die Schreibdaten an die zwei Speicherorte der beiden verschiedenen Flash-Cache-Speicherorte.
  • Zu einem späteren Zeitpunkt können die Daten dann auf eine ähnliche Art und Weise, wie dies oben mit Bezug auf andere Ausführungsformen beschrieben wurde, auf Datenträger ausgelagert oder in andere Bereiche des Flash-Caches 220a-n verschoben werden. Vorzugsweise können die Prozessorkomplexe 214a-b dennoch gespeicherte Metadaten 402a-b verwalten, die dem Flash-Cache 220a-n zugehörig sind. Bei einem Ausfall des primären Prozessorkomplexes 214a können die Metadaten 402a-b an den sekundären primären Komplex 214b oder den Flash-Cache 220a-n oder aber an beide ausgegeben werden.
  • 6 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens 600 für das Einfügen eines Flash-Caches 220a-n in ein Speichersystem gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Das Verfahren 600 der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung und des Systems oben dargelegten Funktionen durchzuführen.
  • Das Verfahren 600 beginnt, wenn mindestens ein Flash-Cache 220a-n mit einem E/A-Gehäusemodul 201 verbunden wird 602. Der Flash-Cache 220a-n beinhaltet vorzugsweise einen Flash-basierten Speicher, der so konfiguriert ist, dass er Daten, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul 201 verarbeitet werden, zwischenspeichert. Das E/A-Gehäusemodul 201 beinhaltet ein oder mehrere E/A-Gehäuse 2021-n mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten.
  • Eine Datenanforderung wird von einem Hostadapter 208a, der mit einem ersten Steckplatz des E/A-Gehäusemoduls 201 verbunden ist, empfangen 604. Der Hostadapter ist so konfiguriert, dass er einen Host 204a-n mit dem E/A-Gehäusemodul 201 verbindet. Das E/A-Gehäusemodul 201 verfügt über mindestens einen Einheitenadapter 210a-n, der mit einem zweiten Steckplatz des E/A-Gehäusemoduls 201 verbunden ist. Der Einheitenadapter ist so konfiguriert, dass er eine Speichereinheit 206a-n mit dem E/A-Gehäusemodul 201 verbindet.
  • Als Nächstes leitet der Hostadapter 208a die Datenanforderung an einen primären Prozessorkomplex 214a weiter 606, der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden. Der primäre Prozessorkomplex 214a greift auf den Flash-Cache zu 608, um eine oder mehrere Caching-Operationen, die der Datenanforderung zugehörig sind, durchzuführen. Der Flash-Cache 220a-n ist mit einem dritten Steckplatz des E/A-Gehäusemoduls 201 verbunden. Auf diese Weise ist ein Speichersystem in der Lage, einen Flash-basierten Cache 220a-n zu integrieren.
  • Bei einer Ausführungsform ist die Datenanforderung eine Leseanforderung, und das Zugreifen auf den mindestens einen Flash-Cache 220a-n zur Durchführung einer oder mehrerer Caching-Operationen beinhaltet das Abrufen von Daten aus dem Flash-Cache 220a-n. Bei einer anderen Ausführungsform ist die Datenanforderung eine Schreibanforderung, und das Zugreifen auf den mindestens einen Flash-Cache 220a-n zur Durchführung einer oder mehrerer Caching-Operationen beinhaltet das Speichern von Daten, die der Schreibanforderung zugehörig sind, in dem Flash-Cache 220a-n.
  • 7 ist ein schematisches Ablaufdiagramm, das eine Ausführungsform eines Verfahrens 700 für das Verarbeiten von Datenanforderungen, darunter Lese- und Schreibanforderungen, in einem Speichersystem mit einem Flash-Cache 220a-n gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zeigt. Das Verfahren 700 der offenbarten Ausführungsformen beinhaltet im Wesentlichen die Schritte, die notwendig sind, um die mit Blick auf den Betrieb der beschriebenen Vorrichtung und des Systems oben dargelegten Funktionen durchzuführen.
  • Das Verfahren 700 beginnt, wenn der Hostadapter 208a eine Datenanforderung von einem Host 204a-n empfängt 702. Dabei wird zunächst ermittelt 704, ob es sich bei der Datenanforderung um eine Leseanforderung handelt. Wenn die Datenanforderung eine Leseanforderung ist, wird als nächstes ermittelt 706, ob die der Datenanforderung entsprechenden Daten in dem Flash-Cache 220a-n verfügbar sind. Wenn die Daten in dem Flash-Cache 220a-n verfügbar sind, werden sie aus dem Flash-Cache 220a-n abgerufen 708, wobei dies vorzugsweise geschieht, ohne dass hierfür auf zusätzliche Speichereinheiten zugegriffen wird. Wenn die Daten nicht in dem Flash-Cache 220a-n verfügbar sind, werden sie aus einer Speichereinheit 206a-n abgerufen 710. Dabei ist denkbar, dass die Daten bei anderen Ausführungsformen auch aus einem flüchtigen Cache (z.B. dem DRAM-Cache 216a) oder einem nicht flüchtigen Cache (z.B. dem NVS-Cache 218a), der dem Prozessorkomplex 214a-b zugehörig ist, abgerufen werden könnten.
  • Wenn ermittelt wird 704, dass die Datenanforderung keine Leseanforderung, sondern eine Schreibanforderung ist, werden die Daten in einem Schreibbereich 302 des Flash-Caches 220a zwischengespeichert 712. Bei einer Ausführungsform können die Daten zunächst in einen nicht flüchtigen DRAM-Cache 216a geschrieben und anschließend in den Flash-Cache 220a ausgelagert werden. Bei einer weiteren Ausführungsform können Daten, die in den Schreibbereich 302 des Flash-Cache 220a geschrieben wurden, in eine Speichereinheit 206a-n ausgelagert werden 714. Auf diese Weise können Datenanforderungen unter Verwendung eines Flash-Caches, der mit minimalen Änderungen an der Architektur in ein Speichersystem eingefügt wird, verarbeitet werden. Das Verfahren verbessert die Wahrscheinlichkeit von Cachetreffern und senkt in manchen Fällen die Kosten und erhöht die Gesamtleistung des Speichersystems.

Claims (11)

  1. Vorrichtung für das Einfügen eines Flash-basierten Caches in ein Speichersystem (200), wobei die Vorrichtung Folgendes umfasst: ein Eingabe-/Ausgabe(E/A)-Gehäuse (202a-n) mit einer Vielzahl von Steckplätzen für die Aufnahme von Hostadapters (208a-n) und Einheitenadapters (210a-n); einen Hostadapter, der in einem ersten Steckplatz des E/A-Gehäuses so eingesetzt ist, dass sich der Hostadapter in einem Innenraum des E/A-Gehäuses befindet, wobei der Hostadapter konfiguriert ist, um einen Host (204a-n) mit dem E/A-Gehäuse zu verbinden; einen Einheitenadapter (210a-n), der in einem zweiten Steckplatz des E/A-Gehäuses so eingesetzt ist, dass sich der Einheitenadapter in dem Innenraum des E/A-Gehäuses befindet, wobei der Einheitenadapter konfiguriert ist, um eine Speichereinheit (206a-n) mit dem E/A-Gehäuse zu verbinden; eine Flash-basierte Caching-Einheit („Flash-Cache“) (220an), die in einem dritten Steckplatz des E/A-Gehäuses so eingesetzt ist, dass sich der Flash-Cache in dem Innenraum des E/A-Gehäuses befindet, wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der Flash-Cache in Bereiche unterteilt ist, die umfassen: einen Lese-Cachebereich (304), der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, einen Schreib-Cachebereich (302), der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, einen Zusatz-Lese-Cachebereich (306), der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich (308) für das Speichern von Daten, die nicht in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden; einen primären Prozessorkomplex (214a) außerhalb des E/A-Gehäuses, der Datenanforderungen verwaltet, welche durch das E/A-Gehäuse verarbeitet werden, wobei der primäre Prozessorkomplex mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um die Datenanforderungen zu verwalten, wobei der primäre Prozessorkomplex einen ersten DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) (216a) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert; einen sekundären Prozessorkomplex (214b) außerhalb des E/A-Gehäuses, der als eine sekundäre Verwaltungseinheit für Datenanforderungen dient, welche durch das E/A-Gehäuse verarbeitet werden, wobei der sekundäre Prozessorkomplex mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten, wobei der sekundäre Prozessorkomplex einen zweiten DRAM-Cache (216b) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert.
  2. Vorrichtung nach Anspruch 1, wobei der primäre Prozessorkomplex ferner einen ersten NVS-Cache (Non-Volatile Storage, nicht flüchtiger Speicher) (218aa) umfasst, der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche von dem E/A-Gehäuse verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache oder dem ersten NVS-Cache zwischengespeichert sind, in den Flash-Cache auslagert, und wobei der sekundäre Prozessorkomplex einen zweiten NVS-Cache (Non-Volatile Storage, nicht flüchtiger Speicher) (218b) umfasst, der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache oder dem zweiten NVS-Cache zwischengespeichert sind, in den Flash-Cache auslagert.
  3. Vorrichtung (200) für das Einfügen eines Flash-basierten Caches in ein Speichersystem, wobei die Vorrichtung Folgendes umfasst: ein Eingabe-/Ausgabe(E/A)-Gehäusemodul (201), das ein oder mehrere E/A-Gehäuse (202a-n) mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten umfasst, wobei ein erster Steckplatz des E/A-Gehäusemoduls so konfiguriert ist, dass er mindestens einen Hostadapter (208a-n) aufnimmt, ein zweiter Steckplatz des E/A-Gehäusemoduls so konfiguriert ist, dass er mindestens einen Einheitenadapter (210a-n)aufnimmt; einen Hostadapter (208a-n), der in einem ersten Steckplatz des E/A-Gehäusemodules so eingesetzt ist, dass sich der Hostadapter in einem Innenraum des E/A-Gehäusemodules befindet, wobei der Hostadapter konfiguriert ist, um einen Host (204a-n) mit dem E/A-Gehäusemodule zu verbinden; einen Einheitenadapter (210a-n), der in einem zweiten Steckplatz des E/A-Gehäusemodules so eingesetzt ist, dass sich der Einheitenadapter in dem Innenraum des E/A-Gehäusemodules befindet, wobei der Einheitenadapter konfiguriert ist, um eine Speichereinheit (206a-n) mit dem E/A-Gehäusemodule zu verbinden; mindestens eine Flash-basierte Caching-Einheit („Flash-Cache“) (220a-n), die in einem dritten Steckplatz des E/A-Gehäusemoduls so eingesetzt ist, dass sich der Flash-Cache in dem Innenraum des E/A-Gehäusemodules befindet, wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der Flash-Cache in Bereiche unterteilt ist, die umfassen: einen Lese-Cachebereich (304), der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, einen Schreib-Cachebereich (302), der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, einen Zusatz-Lese-Cachebereich (306), der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich (308) für das Speichern von Daten, die nicht in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden; und einen primären Prozessorkomplex (214a) außerhalb des E/A-Gehäusemodules für das Verwalten von Datenanforderungen, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er mit mindestens einem Hostadapter, dem mindestens einen Einheitenadapter und dem mindestens einen Flash-Cache Daten austauscht, um die Datenanforderungen zu verwalten, wobei der primäre Prozessorkomplex einen ersten DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) (216a) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert; einen sekundären Prozessorkomplex (214b) außerhalb des E/A-Gehäusemodules, der als eine sekundäre Verwaltungseinheit für Datenanforderungen dient, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er mit dem mindestens einen Hostadapter, dem mindestens einen Einheitenadapter und mindestens einem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten, wobei der sekundäre Prozessorkomplex einen zweiten DRAM-Cache (216b) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert, wobei der sekundäre Prozessorkomplex ferner einen ersten NVS-Cache (Non-Volatile Storage, nicht flüchtiger Speicher) (218b) umfasst, der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden.
  4. Vorrichtung nach Anspruch 3, wobei der primäre Prozessorkomplex ferner einen zweiten NVS-Cache (218a) umfasst, der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache oder dem ersten NVS-Cache zwischengespeichert sind, in den Flash-Cache auslagert, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache oder zweiten NVS-Cache zwischengespeichert sind, in den Flash-Cache auslagert.
  5. Vorrichtung nach Anspruch 3 oder 4, wobei der mindestens eine Flash-Cache genau einem Komplex des primären Prozessorkomplexes und eines sekundären Prozessorkomplexes zugeordnet ist, wobei sowohl der primäre Prozessorkomplex als auch der sekundäre Prozessorkomplex so konfiguriert ist, dass er Datenanforderungen verwaltet, die durch das E/A-Gehäuse verarbeitet werden.
  6. Vorrichtung nach Anspruch 5, wobei der mindestens eine Flash-Cache, der zunächst dem primären Prozessorkomplex zugeordnet ist, als Reaktion auf einen Ausfall des primären Prozessorkomplexes dem sekundären Prozessorkomplex zugeordnet wird.
  7. Verfahren (600, 700) für das Einfügen eines Flash-basierten Caches in ein Speichersystem (200), wobei das Verfahren folgende Schritte umfasst: Verbinden (602) von mindestens einer Flash-basierten Caching-Einheit („Flash-Cache“) (220a-n) mit einem E/A-Gehäusemodul (201), wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei das E/A-Gehäusemodul ein oder mehrere E/A-Gehäuse (202a-n) mit einer Vielzahl von Steckplätzen für die Aufnahme von Elektronikeinheiten umfasst, wobei ein erster Steckplatz des E/A-Gehäusemoduls so konfiguriert ist, dass er mindestens einen Hostadapter (208a-n) aufnimmt, ein zweiter Steckplatz des E/A-Gehäusemoduls so konfiguriert ist, dass er mindestens einen Einheitenadapter (210a-n) aufnimmt; Empfangen (604, 702) einer Datenanforderung in dem Hostadapter (208a-n), der mit einem ersten Steckplatz des E/A-Gehäusemoduls so verbunden ist, dass sich der Hostadapter in einem Innenraum des E/A-Gehäusemodules befindet, wobei der Hostadapter so konfiguriert ist, dass er einen Host (204a-n) mit dem E/A-Gehäusemodul verbindet, und wobei das E/A-Gehäusemodul über mindestens einen Einheitenadapter (210a-n) verfügt, der mit einem zweiten Steckplatz des E/A-Gehäusemoduls so verbunden ist, dass sich der Einheitenadapter in dem Innenraum des E/A-Gehäusemodules befindet, wobei der Einheitenadapter so konfiguriert ist, dass er eine Speichereinheit (206a-n) mit dem E/A-Gehäusemodul verbindet; Übertragen (606) der Datenanforderung an einen primären Prozessorkomplex (214a), der Datenanforderungen verwaltet, die durch das E/A-Gehäusemodul verarbeitet werden; Zugreifen (608) auf die mindestens eine Flash-basierte Caching-Einheit (220a-n), um eine oder mehrere Caching-Operationen durchzuführen, die der Datenanforderung zugehörig sind, wobei der mindestens eine Flash-Cache mit einem dritten Steckplatz des E/A-Gehäusemoduls so verbunden ist, dass sich der Flash-Cache in dem Innenraum des E/A-Gehäusemodules befindet, wobei der Flash-Cache in Bereiche unterteilt ist, die umfassen: einen Lese-Cachebereich (304), der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, einen Schreib-Cachebereich (302), der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, einen Zusatz-Lese-Cachebereich (306), der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich (308) für das Speichern von Daten, die nicht in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden; Austauschen von Daten mittels eines primären Prozessorkomplexes (214a) außerhalb des E/A-Gehäusemodules für das Verwalten von Datenanforderungen, welche durch das E/A-Gehäusemodul verarbeitet werden, mit mindestens einem Hostadapter, dem mindestens einen Einheitenadapter und dem mindestens einen Flash-Cache Daten, um die Datenanforderungen zu verwalten, wobei der primäre Prozessorkomplex einen ersten DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) (216a) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert; und Austauschen von Daten mittels eines sekundären Prozessorkomplexes (214b) außerhalb des E/A-Gehäusemodules, der als eine sekundäre Verwaltungseinheit für Datenanforderungen dient, welche durch das E/A-Gehäusemodul verarbeitet werden, mit dem mindestens einen Hostadapter, dem mindestens einen Einheitenadapter und mindestens einem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten, wobei der sekundäre Prozessorkomplex einen zweiten DRAM-Cache (216b) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert, wobei der sekundäre Prozessorkomplex ferner einen NVS-Cache (Non-Volatile Storage, nicht flüchtiger Speicher) (218b) umfasst, der eine nicht flüchtige Speichereinheit für das Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäusemodul verarbeitet werden.
  8. Verfahren nach Anspruch 7, wobei die Datenanforderung eine Leseanforderung umfasst (704) und wobei der Schritt des Zugreifens auf den mindestens einen Flash-Cache zur Durchführung von einer oder mehreren Caching-Operationen einen Schritt (708) des Abrufens von Daten aus dem Flash-Cache umfasst.
  9. Verfahren nach Anspruch 7 oder 8, wobei die Datenanforderung eine Schreibanforderung umfasst (704) und wobei der Schritt des Zugreifens auf den mindestens einen Flash-Cache zur Durchführung einer oder mehrerer Caching-Operationen einen Schritt (712) des Speicherns von Daten, die der Schreibanforderung zugehörig sind, in dem Flash-Cache umfasst.
  10. Verfahren (600, 700) für das Einfügen eines Flash-basierten Caches in ein Speichersystem (200), wobei das Verfahren folgende Schritte umfasst: Verbinden (602) einer Flash-basierten Caching-Einheit („Flash-Cache“) (220a-n) mit einem E/A-Gehäuse (202a-n) mit einer Vielzahl von Steckplätzen für die Aufnahme von Hostadapters (208a-n) und Einheitenadapters (210a-n), wobei der Flash-Cache einen Flash-basierten Speicher umfasst, der so konfiguriert ist, dass er Daten zwischenspeichert, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden; Empfangen (604, 702) einer Datenanforderung in einem Hostadapter (208a-n), der mit einem ersten Steckplatz des E/A-Gehäuses so verbunden ist, dass sich der Hostadapter in einem Innenraum des E/A-Gehäuses befindet, wobei der Hostadapter so konfiguriert ist, dass er einen Host (204an) mit dem E/A-Gehäuse verbindet, und wobei das E/A-Gehäuse über einen Einheitenadapter (210a-n) verfügt, der mit einem zweiten Steckplatz des E/A-Gehäuses so verbunden ist, dass sich der Einheitenadapter in dem Innenraum des E/A-Gehäusemodules befindet, wobei der Einheitenadapter so konfiguriert ist, dass er eine Speichereinheit (206a-n) mit dem E/A-Gehäuse verbindet; Übertragen (606) der Datenanforderung an einen primären Prozessorkomplex (214a), der Datenanforderungen verwaltet, die durch das E/A-Gehäuse verarbeitet werden; Zugreifen (608) auf die Flash-basierte Caching-Einheit (220a-n), um eine oder mehrere Caching-Operationen durchzuführen, die der Datenanforderung zugehörig sind, wobei der mindestens eine Flash-Cache mit einem dritten Steckplatz des E/A-Gehäuses so verbunden ist, dass sich der Flash-Cache in dem Innenraum des E/A-Gehäusemodules befindet, wobei der Flash-Cache in Bereiche unterteilt ist, die umfassen: einen Lese-Cachebereich (304), der Daten zwischenspeichert, die Lese-Datenanforderungen zugehörig sind, einen Schreib-Cachebereich (302), der Daten zwischenspeichert, die Schreib-Datenanforderungen zugehörig sind, einen Zusatz-Lese-Cachebereich (306), der einen Cache mit Daten verwaltet, die bereits in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Zusatz-Lese-Cachebereich abgerufen werden können, und einen Speicherbereich (308) für das Speichern von Daten, die nicht in eine Speichereinheit ausgelagert wurden, so dass die Daten aus dem Speicherbereich abgerufen werden; Austauschen von Daten mittels eines primären Prozessorkomplexes (214a) außerhalb des E/A-Gehäuses für das Verwalten von Datenanforderungen, welche durch das E/A-Gehäuse verarbeitet werden, mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten, um die Datenanforderungen zu verwalten, wobei der primäre Prozessorkomplex einen ersten DRAM-Cache (Dynamic Random Access Memory, dynamischer Arbeitsspeicher) (216a) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der primäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem ersten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert; und Austauschen von Daten mittels eines sekundären Prozessorkomplexes (214b) außerhalb des E/A-Gehäuses, der als eine sekundäre Verwaltungseinheit für Datenanforderungen dient, welche durch das E/A-Gehäuse verarbeitet werden, mit dem Hostadapter, dem Einheitenadapter und dem Flash-Cache Daten austauscht, um als Reaktion auf einen Ausfall des primären Prozessorkomplexes Datenanforderungen zu verwalten, wobei der sekundäre Prozessorkomplex einen zweiten DRAM-Cache (216b) für das vorübergehende Zwischenspeichern von Daten umfasst, die Datenanforderungen zugehörig sind, welche durch das E/A-Gehäuse verarbeitet werden, wobei der sekundäre Prozessorkomplex so konfiguriert ist, dass er Daten, die in dem zweiten DRAM-Cache zwischengespeichert sind, in den Flash-Cache auslagert.
  11. Computerprogrammprodukt für das Ermöglichen einer Anforderungsverarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt Folgendes umfasst: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, wobei die Ausführung der Befehle durch die Verarbeitungsschaltung diese zur Ausführung eines Verfahrens gemäß einem beliebigen der Ansprüche 7 bis 10 veranlasst.
DE112011100564.4T 2010-02-17 2011-01-07 Einfügen eines Flash-Zwischenspeichers in große Speichersysteme Active DE112011100564B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/707,357 US9785561B2 (en) 2010-02-17 2010-02-17 Integrating a flash cache into large storage systems
US12/707,357 2010-02-17
PCT/EP2011/050154 WO2011101178A1 (en) 2010-02-17 2011-01-07 Integrating a flash cache into large storage systems

Publications (2)

Publication Number Publication Date
DE112011100564T5 DE112011100564T5 (de) 2012-11-29
DE112011100564B4 true DE112011100564B4 (de) 2021-08-26

Family

ID=43589587

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011100564.4T Active DE112011100564B4 (de) 2010-02-17 2011-01-07 Einfügen eines Flash-Zwischenspeichers in große Speichersysteme

Country Status (5)

Country Link
US (1) US9785561B2 (de)
CN (1) CN102763091A (de)
DE (1) DE112011100564B4 (de)
GB (1) GB2490412B (de)
WO (1) WO2011101178A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719520B1 (en) * 2010-12-14 2014-05-06 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
TWI587136B (zh) * 2011-05-06 2017-06-11 創惟科技股份有限公司 快閃記憶體系統及其快閃記憶體無效資料頁資訊之管理方法與回收方法
US20130198453A1 (en) * 2012-01-26 2013-08-01 Korea Electronics Technology Institute Hybrid storage device inclucing non-volatile memory cache having ring structure
US9213642B2 (en) 2014-01-20 2015-12-15 International Business Machines Corporation High availability cache in server cluster
US9836243B1 (en) * 2016-03-31 2017-12-05 EMC IP Holding Company LLC Cache management techniques
JP2018022404A (ja) * 2016-08-05 2018-02-08 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御プログラム
CN108228088B (zh) * 2016-12-21 2020-10-23 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10380034B2 (en) * 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization
US10599579B2 (en) * 2018-06-25 2020-03-24 Intel Corporation Dynamic cache partitioning in a persistent memory module
CN109902035B (zh) * 2019-02-03 2023-10-31 成都皮兆永存科技有限公司 复合存储器
CN111722785A (zh) * 2019-03-21 2020-09-29 阿里巴巴集团控股有限公司 一种缓存更新方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056669A2 (en) 2005-11-04 2007-05-18 Sandisk Corporation Enhanced first level storage cache using nonvolatile memory
US20070255898A1 (en) 2006-04-28 2007-11-01 Kabushiki Kaisha Toshiba Storage device using nonvolatile flash memory and control method thereof
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US20080244188A1 (en) 2007-03-26 2008-10-02 Kabushiki Kaisha Toshiba Information recording apparatus and control method thereof
US7634585B2 (en) 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
JPH07504527A (ja) * 1992-03-09 1995-05-18 オースペックス システムズ インコーポレイテッド 高性能の不揮発性ram保護式の書き込みキャッシュアクセラレータシステム
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
GB2273798A (en) 1992-12-22 1994-06-29 Ibm Cache system for disk array.
US5542066A (en) 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
US6199179B1 (en) * 1998-06-10 2001-03-06 Compaq Computer Corporation Method and apparatus for failure recovery in a multi-processor computer system
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6467022B1 (en) 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US7707354B2 (en) * 1999-08-04 2010-04-27 Super Talent Electronics, Inc. SRAM cache and flash micro-controller with differential packet interface
US7610438B2 (en) * 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US20020073110A1 (en) 2000-12-12 2002-06-13 Edouard Duvillier Version collection technique implemented on an intrinsic versioning information storage and retrieval system
US6678787B2 (en) * 2000-12-21 2004-01-13 International Business Machines Corporation DASD-free non-volatile updates
US6748501B2 (en) 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US6687787B1 (en) * 2001-03-05 2004-02-03 Emc Corporation Configuration of a data storage system
US7149846B2 (en) 2002-04-17 2006-12-12 Lsi Logic Corporation RAID protected external secondary memory
CA2498154A1 (en) 2002-09-16 2004-03-25 Tigi Corporation Storage system architectures and multiple caching arrangements
US7076606B2 (en) * 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US20040225659A1 (en) 2003-05-09 2004-11-11 O'brien John Storage foundry
US7000083B2 (en) * 2003-06-06 2006-02-14 International Business Machines Corp. Resynchronization of count key data with its corresponding meta data
JP4758229B2 (ja) 2003-07-15 2011-08-24 エルピーダメモリ株式会社 半導体記憶装置
US7353339B2 (en) * 2003-12-24 2008-04-01 Intel Corporation Adaptive caching
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7219267B2 (en) 2004-01-07 2007-05-15 International Business Machines Corporation Method, system, and program for data corruption detection and fault isolation
US7472222B2 (en) 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US20060184735A1 (en) * 2005-02-15 2006-08-17 Maxwell Technologies, Inc. Methodology for effectively utilizing processor cache in an electronic system
US7640381B1 (en) * 2005-10-07 2009-12-29 Ji Zhang Input/output decoupling system method having a cache for exchanging data between non-volatile storage and plurality of clients having asynchronous transfers
KR100827677B1 (ko) 2006-06-20 2008-05-07 한국과학기술원 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법
US7549018B2 (en) * 2006-08-03 2009-06-16 International Business Machines Corporation Configurable blade enclosure
US8627002B2 (en) 2006-10-12 2014-01-07 International Business Machines Corporation Method to increase performance of non-contiguously written sectors
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US7721043B2 (en) * 2007-01-08 2010-05-18 International Business Machines Corporation Managing write requests in cache directed to different storage groups
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8112603B2 (en) 2007-10-19 2012-02-07 International Business Machines Corporation Methods, systems, and computer program products for file relocation on a data storage device
JP2009104687A (ja) * 2007-10-22 2009-05-14 Fujitsu Ltd 記憶装置及び制御回路
WO2009072101A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US7958310B2 (en) 2008-02-27 2011-06-07 International Business Machines Corporation Apparatus, system, and method for selecting a space efficient repository
US8533397B2 (en) 2009-01-06 2013-09-10 International Business Machines Corporation Improving performance in a cache mechanism by way of destaging data in partial strides
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056669A2 (en) 2005-11-04 2007-05-18 Sandisk Corporation Enhanced first level storage cache using nonvolatile memory
US7634585B2 (en) 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US20070255898A1 (en) 2006-04-28 2007-11-01 Kabushiki Kaisha Toshiba Storage device using nonvolatile flash memory and control method thereof
US20080244188A1 (en) 2007-03-26 2008-10-02 Kabushiki Kaisha Toshiba Information recording apparatus and control method thereof

Also Published As

Publication number Publication date
GB2490412B (en) 2017-12-13
WO2011101178A1 (en) 2011-08-25
CN102763091A (zh) 2012-10-31
DE112011100564T5 (de) 2012-11-29
GB2490412A (en) 2012-10-31
GB201207226D0 (en) 2012-06-06
US20110202708A1 (en) 2011-08-18
US9785561B2 (en) 2017-10-10

Similar Documents

Publication Publication Date Title
DE112011100564B4 (de) Einfügen eines Flash-Zwischenspeichers in große Speichersysteme
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102008022831B4 (de) Arbeitsverfahren für ein Speichersubsystem und Vorrichtungen zur Durchführung des Arbeitsverfahrens
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE102017113576B4 (de) Auf PCI Express basierender Speichereinsatz mit Zweifachport, der Einzelport-Speichercontroller enthält
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112013006549T5 (de) Computersystem und Datensteuerverfahren
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112013002355T5 (de) Steigern von Datenzwischenspeicherungsleistung
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112012000953T5 (de) Dynamisches Beseitigen von Leistungsungleichgewicht zur Laufzeit
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE102012218264A1 (de) Effiziente Datenbereinigung in einer komprimierten Journaldatei
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE112012004540T5 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final