DE112016004527T5 - Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers - Google Patents

Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers Download PDF

Info

Publication number
DE112016004527T5
DE112016004527T5 DE112016004527.1T DE112016004527T DE112016004527T5 DE 112016004527 T5 DE112016004527 T5 DE 112016004527T5 DE 112016004527 T DE112016004527 T DE 112016004527T DE 112016004527 T5 DE112016004527 T5 DE 112016004527T5
Authority
DE
Germany
Prior art keywords
write
cache
memory
write cache
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016004527.1T
Other languages
English (en)
Inventor
Robert Galbraith
Daniel Moertl
Adrian Gerhard
Joseph Edwards
Rick Weckwerth
Brian Bakke
Gowrisankar RADHAKRISHNAN
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 DE112016004527T5 publication Critical patent/DE112016004527T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0806Multiuser, multiprocessor or multiprocessing cache 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
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0893Caches characterised by their organisation or structure
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F3/0656Data buffering arrangements
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Verfahren und ein Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter und eine Gestaltungsstruktur, in der sich die betreffende Controllerschaltung befindet, werden bereitgestellt. Der Controller enthält eine Hardware-Steuerkomponente des Schreibcachespeichers, die eine Hardware-Beschleunigung für das Management des Speicher-Schreibcachespeichers implementiert. Der Controller verwaltet Schreibcachespeicherdaten und Metadaten bei minimaler oder ohne Firmware-Beteiligung, um die Leistungsfähigkeit erheblich zu verbessern.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf das Gebiet der Datenverarbeitung und insbesondere auf ein Verfahren und einen Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter und auf eine Gestaltungsstruktur, in der sich die betreffende Controllerschaltung befindet.
  • Beschreibung der verwandten Technik
  • Speicheradapter werden zum Verbinden eines Host-Computersystems mit peripheren Speicher-E/A-Einheiten verwendet, beispielsweise Festplattenlaufwerke, Halbleiter-Datenträger, Bandlaufwerke, Compact-Disc-Laufwerke und dergleichen. Gegenwärtig bestehen verschiedene schnelle Systemverbindungen darin, das Host-Computersystem mit dem Speicheradapter zu verbinden und den Speicheradapter mit den Speicher-E/A-Einheiten zu verbinden, z.B. Peripheral Component Interconnect Express (PCIe), Serial Attach SCSI (SAS), Fiber Channel und InfiniBand.
  • Speicheradapter und Speicherteilsysteme enthalten häufig einen Schreibcachespeicher, um die Leistung zu verbessern. Der Schreibcachespeicher ist üblicherweise nichtflüchtig, zum Beispiel unter Verwendung eines Flash-gesicherten DRAM, und wird verwendet, um die Schreib-Sanktionen zu maskieren, die durch redundante Arrays von Stapeln von unabhängigen Laufwerken (RAID) wie RAID-5 und RAID-6 eingeführt werden. Ein Schreibcachespeicher kann außerdem die Speicherleistung verbessern, indem mehrere Host-Operationen, die im Schreibcachespeicher abgelegt sind, in einer einzigen Auslagerungsoperation zusammengeführt werden, die dann von der RAID-Schicht und den Platteneinheiten verarbeitet wird. Aus Gründen der Redundanz können Schreibcachespeicherdaten und Verzeichnis oder Metadaten auf einen zweiten oder Doppel-Adapter gespiegelt werden, der vorteilhafterweise im Fall eines Adapterfehlers verwendet wird.
  • In einem vollständig assoziativen oder anderen komplexen Cachespeicher, der in einem Speicherteilsystem zum Zwischenspeichern von Benutzer- oder Hostdaten verwendet wird, sind üblicherweise viele CPU-Zyklen erforderlich, um die erforderlichen Metadaten zu aktualisieren, um Daten in den Schreibcachespeicher zu stellen. Zu diesen Metadaten gehören Cachespeicher-Leitungs- (CL-) Strukturen, eine Hashwert-Tabelle für schnelles Suchen und eine LRU Warteschlange (Least Recently Used) zum Auffinden der ältesten Daten. Die Metadaten werden zum Aufrechterhalten der Kohärenz verwendet, halten das Cachespeicher-Verzeichnis nichtflüchtig und ermöglichen ein Auffinden von Daten, die aus dem Cachespeicher entfernt werden sollen.
  • Es besteht ein Bedarf an einem effektiven Verfahren und einem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers. Es besteht ein Bedarf, ein solches Verfahren und einen Controller bereitzustellen, die eine hardwarebeschleunigte Ausführung mit einer Hardware-Steuerkomponente des Schreibcachespeichers bereitstellen, die die Schreibcachespeicherdaten und Metadaten mit einem Minimum an oder ohne Firmware-Beteiligung verwaltet, um die Leistung erheblich zu verbessern.
  • Die in der folgenden Beschreibung und den Ansprüchen verwendeten Begriffe Controller und Controller-Schaltung sollten so verstanden werden, dass sie einen Eingabe/Ausgabe- (EA-) Adapter (EAA) und einen EA-RAID-Adapter beinhalten, der verschiedene Anordnungen eines Host-Computersystems und periphere Speicher-E/A-Einheiten verbindet, darunter Festplattenlaufwerke, Halbleiter-Datenträger, Bandlaufwerke, CD-Laufwerke und dergleichen.
  • Die in der folgenden Beschreibung und den Ansprüchen verwendeten Begriffe: im Wesentlichen ohne Verwendung von Firmware, mit minimaler, einem Minimum an oder ohne Firmware-Beteiligung sollten so verstanden werden, dass sie Operationen und Funktionen beinhalten, die von Hardware ausgeführt werden und eine Operation oder Steuerung enthalten können, die von einer Firmware stammt oder zu dieser leitet.
  • Kurzdarstellung der Erfindung
  • Hauptaspekte der vorliegenden Erfindung sind Bereitstellen eines Verfahrens und eines Controllers zum Implementieren eines verbesserten Managements Schreibcachespeichers in einem Speicheradapter und einer Gestaltungsstruktur, in der sich die betreffende Controller-Schaltung befindet. Andere wichtige Aspekte der vorliegenden Erfindung bestehen darin, ein solches Verfahren, einen solchen Controller und eine derartige Gestaltung im Wesentlichen ohne negative Auswirkungen bereitzustellen, und die viele der Nachteile von Anordnungen nach dem Stand der Technik überwinden.
  • Kurz gesagt, ein Verfahren und ein Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter und eine Gestaltungsstruktur, in der sich die betreffende Controller-Schaltung befindet, werden bereitgestellt. Der Controller enthält eine Hardware-Steuerkomponente des Schreibcachespeichers, die die Hardware-Beschleunigung für das Management des Schreibcachespeichers in einem Speicheradapter implementiert. Der Controller verwaltet Schreibcachespeicherdaten und Metadaten bei minimaler oder ohne Firmware-Beteiligung, um die Leistung erheblich zu verbessern.
  • Figurenliste
  • Die vorliegende Erfindung wird zusammen mit den obigen und anderen Aufgaben und Vorteilen am besten aus der folgenden genauen Beschreibung der bevorzugten Ausführungsformen der Erfindung verstanden, die in den Zeichnungen dargestellt sind, wobei:
    • Die 1A und 1B eine schematische bzw. eine Blockdarstellung sind, die jeweils ein beispielhaftes System mit Doppel-Controllern und einem Eingabe/Ausgabe- (EA-) Adapter zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform veranschaulichen;
    • die 2A und 2B jeweils einen beispielhaften RAID-Stapel mit Übersetzung der logischen Blockadresse (LBA-Übersetzung) veranschaulichen, der in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter der 1A und 1B enthalten ist, wobei der Schreibcachespeicher in dem RAID-Stapel von 2A oberhalb der (RAID-) Schichten Dynamic Tier (Easy Tier), Data-Striping und Parity-Striping angeordnet ist, wobei Schreiben in den Cachespeicher (Caching) auf der Grundlage einer Array-ID/Array-LBA gemäß der bevorzugten Ausführungsform durchgeführt wird;
    • 3 beispielhafte Leseoperationen veranschaulicht, die in Hardware unterstützt werden, darunter die beispielhafte Übersetzung der logischen Blockadresse (LBA) der 2A und 2B, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • 4 beispielhafte Leseoperationen veranschaulicht, die in Hardware unterstützt werden, darunter die beispielhafte Übersetzung der logischen Blockadresse (LBA) der 2A und 2B, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter der 1A und 1B gemäß der bevorzugten Ausführungsform enthalten ist, wobei der Schreibcachespeicher in dem RAID-Stapel über den (RAID-) Schichten Dynamic Tier (Easy Tier), Data-Striping und Parity-Striping angeordnet ist;
    • 5 beispielhafte Auslagerungsoperationen veranschaulicht, die in Hardware unterstützt werden, darunter die beispielhafte Übersetzung der logischen Blockadresse (LBA) der 2A und 2B gemäß der bevorzugten Ausführungsform, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter enthalten ist;
    • 6 eine beispielhafte Cachespeicher-Leitungs- (CL-) Struktur im Steuerspeicher (CS) veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • 7 eine beispielhafte Cachespeicher-Leitungs- (CL-) Struktur im Steuerspeicher (CS) für automatisches Spiegeln (auto mirror) in Datenspeicher (DS) veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • 8 eine beispielhafte Cachespeicher-Leitungs- (CL-) Struktur im Datenspeicher (DS) veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • 9 einen beispielhaften lokalen SAS- und einen entfernten SAS-Cachespeicher-Leitungs- (CL-) Steuerspeicher (CS) zum Spiegeln oder SAS-Spiegellöschen im Datenspeicher (DS) veranschaulicht, der in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • Die 10A und 10B beispielhafte Transaktionen bei Cachespeicher-Leitungs- (CL-) Zuständen in Hardware veranschaulichen, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • Die 11A und 11B beispielhafte Cachespeicher-Leitungs- (CL-) Ketten mit derselben Array-ID/LBA in Hardware veranschaulichen, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • Die 12A, 12B, 12C, und 12D jeweils eine beispielhafte, auf einem Steuerblock- (CB-) beruhende Kette von Operationen in Steuerkomponenten für Schreibvorgänge, nichtoptimierte oder vorläufige Schreib-, Lese- und Auslagerungsoperationen veranschaulichen, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 13 ein Ablaufplan ist, der beispielhafte Operationen eines Schreibprozesses veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 14 eine beispielhafte Operation XOR-Merge bei einem schnellen Schreibvorgang mit Überlagerung veranschaulicht, die die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • 15 ein Ablaufplan ist, der beispielhafte Operationen eines Schreibprozesses veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 16 ein Ablaufplan ist, der beispielhafte Operationen eines Auslagerungs-Build-Prozesses veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 17 ein Ablaufplan ist, der beispielhafte Operationen eines Prozesses einer einzelnen Auslagerung veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 18 ein Ablaufplan ist, der beispielhafte Operationen eines Prozesses einer Mehrfach-Auslagerung veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 19 ein Ablaufplan ist, der beispielhafte Operationen eines Umgehungsprozesses veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 20 ein beispielhaftes in Hardware ausgeführtes, auf Registern beruhendes Leerungs-Hilfs-Toolkit veranschaulicht, das in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist;
    • Die 21 und 22 Ablaufpläne sind, die beispielhafte Operationen eines Prozesses einer Leerungs-Steuerkomponente veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 23 beispielhafte Hardware-Zähler und Statistiken veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • Die 24 und 25 beispielhafte CL-Grenzwerte und Schwellenwerte veranschaulichen, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 26 ein Ablaufplan ist, der beispielhafte Operationen zur Verarbeitung globaler Ereignisse veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • 27 ein Ablaufplan ist, der beispielhafte Schritte einer Pro-Array-Verarbeitung veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind;
    • Die 28 und 29 beispielhafte globale Auslösevorgänge bzw. Pro-Array-Auslösevorgänge veranschaulichen, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind; und
    • 30 ein Ablaufplan eines Gestaltungsprozesses ist, der beim Entwerfen, Herstellen und/oder Prüfen von Halbleitern verwendet wird.
  • Genaue Beschreibung bevorzugter Ausführungsformen
  • In der folgenden detaillierten Beschreibung von Ausführungsformen der Erfindung wird auf die beigefügten Zeichnungen Bezug genommen, die beispielhafte Ausführungsformen veranschaulichen, mit denen die Erfindung praktiziert werden kann. Es sollte klar sein, dass andere Ausführungsformen verwendet und strukturelle Änderungen vorgenommen werden können, ohne vom Umfang der Erfindung abzuweichen.
  • Die hier verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll die Erfindung nicht beschränken. Wie hierin verwendet, sollen die Singularformen „ein“ und „der/die/das“ auch die Pluralformen einschließen, sofern im Kontext nicht ausdrücklich anders festgelegt. Es ist ferner klar, dass die Ausdrücke „umfassen“ und/oder „umfassend“, bei Verwendung in dieser Beschreibung das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht das Vorhandensein oder Hinzufügen eines oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon ausschließen.
  • Gemäß Merkmalen der Erfindung werden ein Verfahren und ein Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter und eine Gestaltungsstruktur bereitgestellt, auf der sich die betreffende Controller-Schaltung befindet. Das Verfahren und der Controller der Erfindung enthalten eine Hardware-Steuerkomponente des Schreibcachespeichers, die den Schreibcachespeicher verwaltet und ein im Wesentlichen atomares Aktualisieren eines Cachespeicher-Verzeichnisses bereitstellt. Sowohl ein Schreiben in den als auch ein Lesen von dem Schreibcachespeicher wird unter Verwendung der Hardware-Steuerkomponente des Schreibcachespeichers ohne Verwendung von Firmware durchgeführt, wobei Hardware-Steuerkomponenten miteinander verkettet werden.
  • Bei Bezugnahme auf die Zeichnungen veranschaulichen die 1A und 1B jeweils ein beispielhaftes System, das allgemein durch das Bezugszeichen 100 angegeben ist, mit Doppel-Controllern und einem Eingabe/Ausgabe- (EA-) Adapter, der allgemein durch das Bezugszeichen 102 angegeben ist, zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß bevorzugten Ausführungsformen. Das System 100 enthält einen ersten Eingabe/Ausgabe-Adapter (EAA) oder Controller 102, EAA Nr.1 und einen zweiten Eingabe/Ausgabe-Adapter (EAA) oder Controller 102, EAA Nr.2 mit Schreibcachespeicherdaten und Verzeichnis oder Metadaten, die zu dem Doppel-EAA gespiegelt wurden, die im Fall eines Adapterfehlers verwendet werden können. Das System 100 enthält ein Host-System 104 mit den EAAs Nr.1 und Nr.2, Controller 102, die über einen Peripheral Component Interconnect Express- (PCIE-) Bus mit dem Host-System 104 direkt verbunden sind oder optional über einen PCIE-Switch 106 mit dem Host-System 104 verbunden sind. Das System 100 enthält eine Mehrzahl von Speichereinheiten 108 wie beispielsweise Festplattenlaufwerke (HDDs) oder Laufwerke 108 und Halbleiter-Datenträger (SSDs) 108, darunter z.B. ein redundantes Array von unabhängigen Laufwerken (RAID), das optional durch einen entsprechenden Expander 110 über ein oder mehrere seriell angeschlossene SCSI- (SAS-) Verbindungen mit den EAAs Nr.1 und Nr.2 verbunden sind, wobei SAS-Verbindungen zwischen den EAAs Nr.1 und Nr.2, Controllern 102 bestehen.
  • In 1B sind weitere beispielhafte Komponenten von jedem der EAAs Nr.1 und Nr.2, die Controller 102 in dem Datenspeichersystem 100 gemäß bevorzugten Ausführungsformen gezeigt. Der Controller 102 enthält einen oder mehrere Prozessoren oder Zentraleinheiten (CPUs) 120, einen Schreibcachespeicher 122 mit wenigstens einem Datenspeicher (DS) 124 und einem Steuerspeicher (CS) 126 wie beispielsweise einen dynamischen Direktzugriffsspeicher (DRAM). Der Controller 102 enthält einen Flash-Speicher 128 und einen nichtflüchtigen Direktzugriffsspeicher (NVRAM) 130.
  • Der Controller 102 enthält eine Schreibcachespeicher-Steuerkomponente 132 gemäß bevorzugten Ausführungsformen. Der Controller 102 enthält eine Peripheral-Component-Interconnect-Express- (PCIE-) Schnittstelle 134, die über den PCIE-Bus mit dem Host-System verbunden ist, und ein Serial-Attach-SCSI-Steuerelement (SAS CTRL) 136, das mit jeder aus einer Mehrzahl von Speichereinheiten 108 verbunden ist.
  • Die EAAs Nr.1 und Nr.2, die Controller 102 und die Schreibcachespeicher-Steuerkomponente 132, die eine Mehrzahl von Hardware-Steuerkomponenten enthält, beispielsweise zum Implementieren eines Verfahrens zum Verketten von Hardware-Steuerkomponenten, verwenden keine Firmware, um einen Schreibvorgang oder ein Schreiben mit Überlagerung in den Schreibcachespeicher auszuführen; und verwenden zum Implementieren eines Verfahrens zum Verketten von Hardware-Steuerkomponenten keine Firmware, um einen Lesevorgang von dem Schreibcachespeicher auszuführen.
  • Gemäß Merkmalen der Erfindung erzeugen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, die die Schreibcachespeicher-Steuerkomponente 132 enthalten, eine Kette von Operationen unter Verwendung verschiedener Hardware-Steuerkomponenten, um einen Schreibvorgang oder ein Schreiben mit Überlagern in den Schreibcachespeicher auszuführen, ohne Firmware zu verwenden. Der Controller 102 und die Schreibcachespeicher-Steuerkomponente 132 implementieren das Verfahren durch Ausführen der Schritte: Zuordnen von nichtflüchtigen (NV) Puffern, Speicherdirektzugriff (DMA) zum Speicherdirektzugreifen auf Daten vom Host, Ermitteln, ob im Cachespeicher vorhandene Daten möglicherweise überlagert wurden, wenn Cachespeicher-Leitungs- (CL-) Zustände aktualisiert wurden, Mischen von Nicht-4K-Daten am Beginn und Ende der Schreiboperation, Bereitstellen von Daten per DMA an einen fernen Adapter, während außerdem CLs in einem lokalen und fernen NV-Speicher aktualisiert werden, Löschen von CLs für überlagerte Daten in dem lokalen und dem fernen NV-Speicher, letzte Aktualisierungen an den CL-Zuständen, Aufheben der Zuordnung von NV-Puffern für alle überlagerte Daten und Senden einer Antwort auf den Host-Befehl.
  • Gemäß Merkmalen der Erfindung erzeugen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, die die Schreibcachespeicher-Steuerkomponente 132 enthalten, eine Kette von Operationen unter Verwendung verschiedener Hardware-Steuerkomponenten, um einen teilweisen Lesetreffer von dem Schreibcachespeicher auszuführen, ohne Firmware zu verwenden. Der Controller 102 und die Schreibcachespeicher-Steuerkomponente 132 implementieren das Verfahren durch Ausführen der Schritte: Zuordnen von Vol-Puffern, Durchsuchen des Schreibcachespeichers nach einem Lesetreffer, Lesen/Mischen von Daten von HDDs/SSDs für die teilweisen Lesetreffer, Speicherdirektzugreifen auf Daten zum Host, Aufheben der Zuordnung von Vol-Puffern, letzte Aktualisierungen an den CL-Zuständen, Aufheben der Zuordnung von NV-Puffern für alle Daten, die gleichzeitig vom Cachespeicher ausgelagert wurden, und Senden einer Antwort auf den Host-Befehl.
  • Gemäß Merkmalen der Erfindung erzeugen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, die die Schreibcachespeicher-Steuerkomponente 132 enthalten, eine Kette von Operationen unter Verwendung verschiedener Hardware-Steuerkomponenten, um einen teilweisen Lesetreffer von dem Schreibcachespeicher auszuführen, ohne Firmware zu verwenden. Der Controller 102 und die Schreibcachespeicher-Steuerkomponente 132 implementieren das Verfahren durch Ausführen der Schritte: Zuordnen von Vol-Puffern, Durchsuchen des Schreibcachespeichers nach einem Lesetreffer, Lesen/Mischen von Daten von HDDs/SSDs für die teilweisen Lesetreffer, Speicherdirektzugreifen auf Daten zum Host, Aufheben der Zuordnung von Vol-Puffern, letzte Aktualisierungen an den CL-Zuständen, Aufheben der Zuordnung von NV-Puffern für alle Daten, die gleichzeitig vom Cachespeicher ausgelagert wurden, und Senden einer Antwort auf den Host-Befehl.
  • Gemäß Merkmalen der Erfindung erzeugen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, die die Schreibcachespeicher-Steuerkomponente 132 enthalten, eine Kette von Operationen unter Verwendung verschiedener Hardware-Steuerkomponenten, um einen teilweisen Lesetreffer von dem Schreibcachespeicher bei minimaler Verwendung von Firmware auszuführen. Der Controller 102 und die Schreibcachespeicher-Steuerkomponente 132 unterstützen das Erzeugen der Auslagerungsoperation mit Optionen zum Beginnen entweder an der LRU oder einer spezifizierten Array-LBA und zum Anhalten entweder an einer maximal geforderten Größe/Spanne oder am Ende einer 256-K-Stripe-Grenze.
  • Gemäß Merkmalen der Erfindung setzen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, der die Schreibcachespeicher-Steuerkomponente 132 enthält, einen Satz von Strategien um, die ermöglichen, dass ein Host-Lesevorgang und eine Cachespeicher-Auslagerung für dieselben CLs gleichzeitig erfolgen. Auftretende Kollisionen werden durch die Hardware in Warteschlangen eingereiht und versendet.
  • Gemäß Merkmalen der Erfindung verwenden ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, der die Schreibcachespeicher-Steuerkomponente 132 enthält, eine Op-Build-Number oder eine Sequenznummer in einer (CL), um ein garantiert korrektes Erkennen von älteren gegenüber neueren Daten im Cachespeicher für dieselbe logische Blockadresse (LBA) des Array zu ermöglichen.
  • Gemäß Merkmalen der Erfindung setzen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, die die Schreibcachespeicher-Steuerkomponente 132 enthalten, Hardware-Turn-Offs zum Verwenden beim Durchführen oder Zurücknehmen von Aktualisierungen bei CLs für Schreibvorgänge, Lesevorgänge und Auslagerungsoperationen um.
  • Gemäß Merkmalen der Erfindung enthalten ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter die Schreibcachespeicher-Steuerkomponente 132, die eine eindeutige Hardware-Steuerkomponente implementiert, die zum Kennzeichnen und Aktualisieren von CLs für einen LBA-Bereich eines Arrays verwendet wird, die aus dem Cachespeicher gelöscht werden sollen.
  • Gemäß Merkmalen der Erfindung enthalten ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter die Schreibcachespeicher-Steuerkomponente 132, die eine XOR- (Exklusiv-ODER-) Verknüpfungsfunktion beispielsweise bei einem schnellen Schreibvorgang mit Überlagerung implementiert.
  • Gemäß Merkmalen der Erfindung enthalten ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter die Schreibcachespeicher-Steuerkomponente 132, die ein auf Auslöseereignisse gestütztes Verfahren implementiert zum dynamischen Optimieren der Cachespeicher-Auslagerungsrate und Anpassen der Schwellenwertbildung und Begrenzen von Daten im Cachespeicher für jedes Array unter Verwendung von durch Hardware bereitgestellten Eingängen (Registern) und Ausgängen (Registern und Ereignissen) zur Unterstützung der Firmware.
  • Gemäß Merkmalen der Erfindung enthalten ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter die Schreibcachespeicher-Steuerkomponente 132, die ein High-Level-Framework der Gestaltung mit beschleunigter Hardware implementiert, die die Schreibcachespeicherdaten und Metadaten (Verzeichnis) mit einem Minimum an oder ohne Firmware-Beteiligung verwaltet, wodurch die Leistung erheblich verbessert wird.
  • Gemäß Merkmalen der Erfindung stellen ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, der die Schreibcachespeicher-Steuerkomponente 132 enthält, eine Hardware-Veränderung von CLs (Cachespeicher-Leitungen), der Hashwert-Tabelle und LRU-Warteschlangen pro Array bereit. Das erfolgt auf pseudoatomare Weise, so dass Aktualisierungen an diesen Strukturen diese entweder unverändert lassen oder diese jedes Mal, wenn die Hardware-Steuerkomponente ausgeführt wird, vollständig aktualisiert werden. Alle Einträge, die geändert werden, werden z.B. in einen Cachespeicher ausgecheckt (Checked-Out), ein- oder mehrmals geändert und dann bei Erfolg gruppenweise eingecheckt (Checked-In). Nur die CLs werden nichtflüchtig gehalten, und es ist möglich, dass eine Teilmenge der CLs modifiziert wird, wenn ein Adapterfehler auftritt.
  • Gemäß Merkmalen der Erfindung enthalten ein Verfahren und ein Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter die Schreibcachespeicher-Steuerkomponente 132, die eine CL-Definition enthält, die das Verfolgen folgender Zustände erlaubt: Overlay In Progress (OIP) während einer Operation Schreibvorgang mit Überlagerung; Read In Progress (RIP) während einer Leseoperation; und Destage In Progress (DIP) während einer Auslagerungsoperation. RIP und DIP sind gleichzeitig zugelassen, um Kollisionen auf einem minimalen Wert zu halten, was bei herkömmlichen Gestaltungen nicht möglich ist.
  • Gemäß Merkmalen der Erfindung enthalten ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter die Schreibcachespeicher-Steuerkomponente 132, die Schreibvorgänge, nichtoptimierte oder vorläufige Schreibvorgänge, Lesevorgänge und Auslagerungsoperationen implementiert, wodurch eine verbesserte Leistung bereitgestellt wird.
  • Unter Bezugnahme auf die 2A und 2B implementiert der Controller 102, der allgemein durch das Bezugszeichen 200 angegeben ist, wie in 2A gezeigt eine beispielhafte Übersetzung einer logischen Blockadresse (LBA) eines RAID-Stapels zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter. 2B veranschaulicht eine Host-LBA-Übersetzung mit (VSet) Volume Set (d.h. eine logische Einheit, die durch den Host gelesen und beschrieben werden kann), die allgemein durch das Bezugszeichen 220 angegeben ist.
  • In 2A implementiert der Controller 102 eine Host-LBA- und AFDASD-(Advanced Function DASD-) Übersetzung 202, die mit dem Betriebssystem IBM i verwendet wird. AFDASD stellt ein RAID-fähiges physisches Gerät dar, das vom Betriebssystem IBM i gelesen und beschrieben werden kann. Die Host-LBA- und AFDASD-Übersetzung 202 startet mit AFDASD, um im Block 204 Data-Striping einzurichten oder umzukehren, wodurch Array-LBA und Array-ID bei 206 mit Lese/Schreib-Cachespeicher 208 bereitgestellt wird, der Array-LBA und Array-ID bei 210 bereitstellt. Der Lese/Schreib-Cachespeicher 208 wird in dem RAID-Stapel 200 oberhalb und über der (RAID-) Schicht Data-Striping 212, die logische Geräte LBAs und LDNs (Logical Device Numbers) 214 bereitstellt, und Parity-Striping 216 angeordnet, die physikalische Einheiten LBAs und LDNs 218 bereitstellt, wobei Schreiben in einen Cachespeicher auf der Grundlage einer Array-ID/Array-LBA gemäß der bevorzugten Ausführungsform durchgeführt wird. Der RAID-Stapel 200 zum Übersetzen der logischen Blockadresse (LBA) verringert die Komplexität und verringert die Verzögerung im Vergleich zu früheren Ausführungen, bei denen der Schreibcachespeicher unterhalb von Dynamic Tier und Data-Striping lag, wobei das Schreiben in einen Cachespeicher auf Grundlage einer LBA der Einheit durchgeführt wurde.
  • 2B veranschaulicht den RAID-Stapel 220 der Host-LBA-Übersetzung mit VSet 222, das mit Advanced Interactive Executive (AIX), Unix, Linus und anderen gängigen Betriebssystemen verwendet wird, beginnend mit VSet auf Array 224, das Array-LBA und Array-ID bei 226 mit Lese/Schreib-Cachespeicher 228 bereitstellt, der Matrix-LBA und Array-ID bei 230 bereitstellt. Der RAID-Stapel 220 enthält Dynamic-Tier- oder Easy-Tier-Remapping 232, die bei 234 neu zugeordnete Array-LBA(s)/ID bereitstellt, gefolgt von Common-Code- (RAID-) Schichten DataStriping 212, die LBAs für logische Einheiten und LDNs (Logical Device Numbers) bereitstellt 214 und Parity-Striping 216, die LBAs und LDNs 218 für physische Einheiten bereitstellt.
  • Gemäß Merkmalen der Erfindung implementieren ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, die die Schreibcachespeicher-Steuerkomponente 132 enthalten, automatische Lesevorgänge am Schreibcachespeicher, führen einen vollständigen oder teilweisen Lesetreffer vom Schreibcachespeicher üblicherweise ohne Firmware-Beteiligung oder bis hin zu Speichereinheiten 108 aus.
  • In den 3, 4 und 5 sind beispielhafte Lese-, Schreib- und Auslagerungsoperationen gezeigt, wobei Blöcke, die in der Blockecke einen Punkt haben, angeben, wo die Hardware HW die Steuerung zum Ausführen einer Operation an Firmware FW übergibt.
  • In 3 sind beispielhafte, allgemein durch das Bezugszeichen 300 angegebene Leseoperationen gezeigt, die durch Hardware unterstützt werden, die den entsprechenden beispielhaften RAID-Stapel zum Übersetzen der logischen Blockadresse (LBA) der 2A und 2B enthält, der in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Für einen Host-LBA- und AFDASD-RAID-Stapel sind der gelesene LBA-Abschnitt in den Blöcken 302, 304 und die Sprungmaske (skip mask) in den Blöcken 306, 308 gezeigt. Ein AFDASD zum Einrichten oder Umkehren des Data-Striping-Blocks 310 stellt Data-Stripe-Blöcke 312, 314, 316, 318, 320, 322, 324, 326 wie gezeigt bereit, die an den Schreib/Lese-Cachespeicher 328 angelegt werden. Für den Host-LBA- und Vset-RAID-Stapel ist der gelesene LBA-Abschnitt in den Blöcken 330, 332 gezeigt, die Sprungmaske ist in den Blöcken 334 und 336 und größer als 32 Bit bei LBA 338 gezeigt. Ein VSet an einen Array-Block 340 stellt einen No-Offset-Block 342, einen Nicht-Null-Offset-Block 344, ein vergangenes Ende des Vset-Blocks 346 und einen Block 348 mit einem Abschnitt kleiner als 256 K bereit, der an den Schreib/Lesecachespeicher 328 angelegt wird. Wie gezeigt stellt der Schreib/Lese-Cachespeicher 328 einen Volltreffer, 4 K ausgerichtet 350, Volltreffer, Sprung 352, Volltreffer, keine 4 K ausgerichtet Beginn und Ende 354, Volltreffer, keine 4K ausgerichtet Beginn 356 und Volltreffer, keine 4 K ausgerichtet Ende 358 bereit. Wie gezeigt stellt der Schreib/Lesecachespeicher 328 kein Treffer, 4 K ausgerichtet 350, kein Treffer, Sprung 362, kein Treffer, keine 4 K ausgerichtet Beginn und Ende 364, in Treffer, keine 4 K ausgerichtet Beginn 366 und kein Treffer, keine 4 K ausgerichtet Ende 368 bereit. Wie gezeigt stellt der Schreib/Lesecachespeicher 328 teilweiser Treffer, 4 K ausgerichtet 370, Teilweiser Treffer, Sprung 372, teilweiser Treffer, keine 4 K ausgerichtet Beginn und Ende 374, teilweiser Treffer, keine 4K ausgerichtet Beginn 376 und teilweiser Treffer, keine 4 K ausgerichtet Ende 378 bereit.
  • Wie gezeigt stellt der Schreib/Lese-Cachespeicher 328 Read in Progress (RIP), Mirror in Progress (MIP) und Overlay in Progress (OIP) im Block 380, 65 Cachespeicher-Leitungen (CLs) im Block 382, teilweiser Treffer in einer CL kleiner als 4 K im Block 384 und teilweiser Treffer Chicken-Switch im Block 368 bereit, um eine Ausnahmesituation zu berücksichtigen. Wie im Block 387 angegeben, geht der Lesevorgang ohne Cachespeicher und ohne Schicht Dynamic Tier im Block 388 zum Data-Striping-Block 389, der wie gezeigt Data-Stripe-Blöcke 312, 314, 316, 318, 320, 322, 324, 326, 327 und 329 bereitstellt. Andernfalls stellt ein Block Dynamic Tier 390 No Swap im Block 391, Swap-dieselbe Redundanzgruppe (RG) im Block 392, No-Swap-andere RG im Block 393, Swap in Progress im Block 394 und/oder Kreuzbänder im Block 395 bereit. Der Data-Striping-Block 389 stellt ein Kreuz-Teilarray im Block 396 und/oder ein für Treffer offenes Laufwerk (hit exposed drive) im Block 398 bereit.
  • Gemäß Merkmalen der Erfindung implementieren ein Verfahren und der Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter, der die Schreibcachespeicher-Steuerkomponente 132 enthält, Operationen automatischer Lesevorgang (Auto Write), die in HW unterstützt werden, wobei die Hardware eine Kette von Operationen unter Verwendung verschiedener Steuerblöcke oder Hardware-Steuerkomponenten erzeugt, um einen Schreibvorgang oder ein Schreiben-mit Überlagerung in den Schreibcachespeicher üblicherweise ohne Firmware-Beteiligung auszuführen.
  • In 4 sind beispielhafte, allgemein durch das Bezugszeichen 400 angegebene Schreiboperationen dargestellt, die in Hardware unterstützt werden, darunter der jeweilige beispielhafte RAID-Stapel zum Übersetzen der logischen Blockadresse (LBA) der 2A und 2B, der in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Für einen Host-LBA- und AFDASD-RAID-Stapel sind der Schreibvorgang-LBA-Abschnitt in den Blöcken 402, 404 und die Sprungmaske in den Blöcken 406, 408 gezeigt. Ein AFDASD zum Einrichten oder Umkehren eines Data-Striping-Blocks 410 stellt wie gezeigt Data-Stripe-Blöcke 412, 414 bereit, die an den Schreib/Lese-Cachespeicher 415 angelegt werden. Für den Host-LBA- und Vset-RAID-Stapel wird der gelesene LBA-Abschnitt in den Blöcken 416, 418 gezeigt, die Sprungmaske ist in den Blöcken 420, 422 und eine LBA größer als 32 Bit ist im Block 424 gezeigt. Ein Block VSet an Array 426 stellt einen No-Offset-Block 428, 430, einen Nicht-Null-Offset-Block 432, ein vergangenes Ende des Vset-Blocks 432 und einen Block 434 eines Abschnitts größer als 256 K bereit, die an den Schreib/Lesecachespeicher 415 angelegt werden. Wie gezeigt stellt der Schreib/Lesecachespeicher 415 schnelles Schreiben, 4 K ausgerichtet 438, schnelles Schreiben, Sprung 440, schnelles Schreiben, keine 4 K ausgerichtet Beginn und Ende 442, schnelles Schreiben, keine 4 K ausgerichtet Beginn 444, schnelles Schreiben, keine 4 K ausgerichtet Ende 446 bereit. Wie gezeigt stellt der Schreib/Lesecachespeicher 415 schnelles Schreiben (FW) mit Überlagerung (Ov), 4 K ausgerichtet 448, schnelles Schreiben (FW) mit Überlagerung (Ov), Sprung 450, schnelles Schreiben (FW) mit Überlagerung (Ov), keine 4 K ausgerichtet Beginn und Ende 452, schnelles Schreiben (FW) mit Überlagerung (Ov), keine 4 K ausgerichtet Beginn 454, schnelles Schreiben (FW) mit Überlagerung (Ov), keine 4 K ausgerichtet Ende 456 bereit. Wie gezeigt stellt der Schreib/Lese-Cachespeicher 415 Read in Progress (RIP), Mirror in Progress (MIP) und Overlay in Progress (OIP) im Block 458 bereit. Wie im Block 460 angegeben, geht der Schreibvorgang ohne Cachespeicher und ohne Dynamic Tier im Block 462 und ohne einzelnes Laufwerk 0 im Block 464 zum Data-Striping-Block 466, der einen Data-R0-1-Stripe-Block 468 bereitstellt.
  • In 5 sind beispielhafte, allgemein durch das Bezugszeichen 500 angegebene Auslagerungsoperationen gezeigt, die in Hardware unterstützt werden, darunter die beispielhafte Übersetzung der logischen Blockadresse (LBA) der 2A und 2B, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Wie im Block 502 gezeigt beginnt eine Auslagerungssuche entweder bei LRU (verknüpfte Liste, die im Array verwendet wird) oder einem Array-Offset (Array-LBA); und die Auslagerungssuche endet bei einer maximal geforderten Größe oder Spanne oder am Ende einer 256-K-Stripe-Grenze (64 CLs). CLs mit gesetzten Werten von DIP, MIP oder OIP werden notiert, aber ansonsten ignoriert. Wie im Block 504 gezeigt werden die Auslagerungsoperationen mit oder ohne den Doppel-Controller 102 bereitgestellt. Im Gegensatz zu Lese- und Schreiboperationen 300, 400 wird Firmware verwendet, um Ketten von Hardwareoperationen zu erzeugen, um eine Gesamtauslagerung durchzuführen. Dies geschieht, da die Anzahl der Variationen für Auslagerungsvorgänge aufgrund der Unterstützung vieler verschiedener RAID-Level und anderer Komplexitäten zu groß ist, als dass die Hardware ohne Firmware-Unterstützung auskommen könnte. Ein Schreib/Lese-Cachespeicher 505 ist mit einem Block 506 mit 4 K LBA/Abschnitt und einem Block 508 mit LBA größer als 32 Bit gezeigt. Zu Auslagerungsoperationen gehören Auslagern, 4 K ausgerichtet 510, Auslagerungssprung 512, Auslagern, keine 4 K ausgerichtet Beginn und Ende 514, Auslagern, keine 4 K ausgerichtet Beginn 516 und Auslagern, keine 4 K ausgerichtet Ende 518. Ein Block 520 Dynamic Tier Remapping stellt No Swap im Block 524, Swap bei derselben RG im Block 526, Swap bei anderer RG im Block 526, Swap in Progress im Block 528 und/oder Kreuzbänder im Block 530 bereit. Wie im Block 532 angegeben, geht der Auslesevorgang ohne dynamische Stufe (no dynamic tier) zum Data-Striping-Block 534, der wie gezeigt Data-Stripe-Blöcke 536, 538, 540, 542, 544, 546, 548, 550, 552, 554 bereitstellt. Der Data-Stripe-Block 534 stellt ein Kreuz-Teilarray im Block 556 und/oder ein für Treffer offenes Laufwerk im Block 558 bereit.
  • In 6 ist eine beispielhafte, allgemein mit dem Bezugszeichen 600 angegebene Cachespeicher-Leitungs- (CL-) Struktur im Steuerspeicher (SC) gezeigt, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Die Cachespeicher-Leitungs- (CL-) Struktur 600 enthält Bytes 0 bis 7 mit folgenden SC-Zustandsdefinitionen:
    • 7= zugewiesene CL, eingestellt durch Allocate Engine (Zuordnungs-Steuerroutine)
    • 6= Lokalitäts-Bit
    • 5= PIP (Purge in Progress, Löschvorgang läuft) aktiviert und Zähler inkrementieren, wenn CL zum Löschen markiert ist (Dekrementieren eines Zählers beim Aufheben der Zuordnung)
    • 4= MIP (Mirror in Progress, Spiegeln läuft), in HASH, in LRU
    • 3= HASH-Links gültig (möglicherweise in LRU)
    • 2= RIP (Read in Progress, Lesevorgang läuft) möglicherweise in LRU
    • 1= DIP (Destage in Progress, Auslagerungsvorgang läuft) nicht in LRU
    • 0= OIP (Overlay Remove after Mirror, Combine Mask Merge in progress, Überlagerung nach Spiegeln entfernen, Kombinieren Maskenzusammenführung läuft) Nicht in LRU.
  • Die CL-Zustandsdefinitionen ermöglichen ein Verfolgen folgender Zustände: Mirror In Progress (MIP), während einer Schreiboperation beim Spiegeln von Daten/Verzeichnis in einen lokalen/fernen NV-Speicher; Overlay In Progress (OIP), während einer Operation Schreibvorgang mit Überlagerung; Read In Progress (RIP), während einer Leseoperation; und Destage In Progress (DIP), während einer Auslagerungsoperation. Die Operation- (OP-) Build-Number wird mit jedem Cachespeicher-Eintrag inkrementiert. Beim CS-Adressen-Aufwärtszeiger für LRU sind die unteren 6 Bits = 0 und beim CS-Adressen-Abwärts- oder nächsten Zeiger für LRU sind die unteren 6 Bits = 0. Beim vorherigen CS-Adressen-Zeiger für den Hash-Wert sind die unteren 6 Bits gleich 0 und bei dem nächsten CS-Adressen-Zeiger für den Hash-Wert sind unteren 6 Bits = 0. Die Cachespeicher-Leitungs- (CL-) Struktur 600 enthält Kompressionsindexwerte.
  • Das Bit Lokalität wird gesetzt, und bei einer Operation NV Allocate wird ein Zähler für alle CLs nach der ersten inkrementiert. Der Zähler wird bei einer Operation NV Deallocate für jede CL dekrementiert, bei der das Bit Lokalität gesetzt ist. Dieser Zähler wird durch FW verwendet, wenn festgelegt wird, wie voll der Schreibcachespeicher (WC) vor dem Beginn einer Auslagerungsoperation sein darf. Ein hoher Zählwert Lokalität ermöglicht einen volleren WC.
  • In 4 ist eine beispielhafte, allgemein mit dem Bezugszeichen 700 angegebene Cachespeicher-Leitungs- (CL-) Struktur im Steuerspeicher (CS) zum automatischen Spiegeln in den Datenspeicher (DS) gezeigt, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Die Cachespeicher-Leitungs- (CL-) Struktur im Steuerspeicher (CS) zum automatischen Spiegeln in den Datenspeicher (DS) 700 enthält Array-ID, Maske, 6B-Array-Offset, 0x80 oder C0, Operation- (OP-) Build-Number und Kompressionsindexwerte.
  • In 8 ist eine beispielhafte, allgemein mit dem Bezugszeichen 800 angegebene Cachespeicher-Leitungs- (CL-) Struktur im Datenspeicher (DS) veranschaulicht, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Wie gezeigt enthält die CL im DS 800 die minimalen Angaben, die erforderlich sind, um zu erkennen, dass die CL gültig (d.h. zugeordnet) ist, für welche Array-ID und LBA die Daten vorgesehen sind, die OP-Build-Number und die Kompression betreffende Angaben.
  • In 9 ist ein beispielhafter, allgemein mit dem Bezugszeichen 900 angegebener lokaler SAS- und ferner SAS-Cachespeicher-Leitungs- (CL-) Steuerspeicher (CS) zum Spiegeln oder SAS-Spiegellöschen im Datenspeicher (DS) gezeigt, der in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Ein lokaler SAS-Cachezeilen- (CL-) Steuerspeicher (CS) 902 enthält einen lokalen SAS-Spiegel- oder SAS-Spiegellöschpfad 904 zu einem lokalen Datenspeicher DS 906. Eine SAS-Verbindung 908 wird zu einem fernen SAS-Cachespeicher-Leitungs- (CL-) Steuerspeicher (CS) 910 und einem fernen Datenspeicher DS 912 bereitgestellt. Ein ferner SAS-Spiegel- oder SAS-Spiegellöschpfad 914 wird von dem lokalen CS 902 zu dem fernen Datenspeicher DS 912 bereitgestellt.
  • Die 10A und 10B veranschaulichen beispielhafte, allgemein mit dem Bezugszeichen 1000 angegebene Transaktionen bei Cachespeicher-Leitungs- (CL-) Zuständen in Hardware, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. Zu Transaktionen 1000 bei Cachespeicher-Leitungs- (CL-) Zuständen gehören Free Pool 1002, Allocated 1004, Mirror 1006 mit HASH und LRU gültig, und Idle 1008 mit HASH-Liste gültig und LRU-Liste gültig. Jede von Free Pool 1002, Allocated 1004, Mirror 1006, und Idle 1008 enthält CL-Zustände 7= Zugeordnete CL, eingestellt durch Allocate Engine, 6 = Bit Lokalität, 5 = Lösch-Status, 4 = MIP, 3 = HASH-Verknüpfungen gültig, 2 = RIP, 1 = DIP, und 0 = OIP, wie gezeigt. Zu Cachespeicher-Leitungs- (CL-) Zustandstransaktionen 1000 gehören HASHV & OIP & LRU = NULL 1010, HASHV, & DIP & LRU = NULL 1012, und HASHV & DIP & LRU = VALID 1014, HASHV & RIP & DIP & LRU = NULL 1016, und RIP & LRU/HASH = NULL 1018. Unter einer Zeile mit der Bezeichnung 1020 sind HASHV, RIP, DIP, OIP nur aufgeführt, wenn sie gesetzt sind.
  • Bei Bezugnahme außerdem auf 10B mit entsprechenden Zeilen 1A bis 9B der CL-Zustandstransaktionen von 10A gehört zu den Cachespeicher-Leitungs-(CL-) Zustandstransaktionen 1000 Install bei 1022, das Wiederholen dieses Steuerblocks (CB) beinhaltet, wenn 1B MIP/RIP/DIP/OIP als gesetzt ermittelt werden. Wie bei Zeile 1A gezeigt wird eine Seitenliste gelesen, und für jede CL werden MIP & HASHV aufeinander abgestimmt, wobei LRU und HASH hinzugefügt werden. Wie bei Zeile 1B gezeigt wird eine nächste CL in HASH für dieselbe Array-ID & Array-Offset gesucht, für jede gefundene CL Aktivieren von OIP, Entfernen von LRU, Setzen von SAS-Löschen auf CL-Spiegel-Seitenliste. Wie bei 1024 gezeigt Deaktivieren von MIP & OIP. Wie bei Zeile 2A gezeigt Lies Seitenliste, für jede CL Deaktivieren von MIP. Wie bei Zeile 2B gezeigt Lies nächste CL, wenn OIP gesetzt ist und dieselbe Array-ID & Array-Offset, für jede gefundene CL Deaktivieren OIP, Deaktivieren HASHV, Entfernen aus HASH, Setzen auf Deallocate Page List.
  • Wie bei 1026 gezeigt Undo Install. Wie bei Zeile 3A gezeigt wird die Seitenliste gelesen, für jede CL Deaktivieren MIP, Deaktivieren HASHV und Entfernen aus HASH. Wie bei Zeile 3B gezeigt wird die nächste CL gelesen, Deaktivieren OIP, Deaktivieren PURGE und in LRU wieder hinzufügen. Wie bei 1028 gezeigt Lesen der Suchschleife dieses CB nach WQ, wenn „4“ MIP/RIP/OIP findet. Wie bei Zeile 4 gezeigt Durchsuchen von HASH nach Übereinstimmung bei Array-ID und Array-Offset, bei jeder gefundenen CL Aktivieren RIP, Setzen auf Combo-HDMA2h-Seitenliste; und ansonsten Schreiben von Volume-Index in Combo-Page-List.
  • Bei 1030 ist gezeigt Deaktiviere RIP; Lies Combo-Page-List, Verwende Sprungmaske. Wie bei Zeile 5A gezeigt bei jeder gefundenen CL mit aktiviertem HASHV Deaktiviere RIP. Bei jeder gefundenen CL mit deaktiviertem HASHV deaktiviere RIP, Setze auf Deallocate Page List wie bei Zeile 5B gezeigt. Wie bei 1032 gezeigt Auslagern, Ignoriere DIP/MIP/OIP. Wie bei Zeile 6 gezeigt Durchsuche HASH nach einem 256KB-Bereich des Array-Offset, für jede gefundene CL Aktiviere DIP, Entferne aus LRU, Setze auf Page-List. Wie bei 1034 gezeigt Deaktiviere DIP, Lies Page-List. Wie bei Zeile 7A gezeigt für jede gefundene CL mit deaktiviertem RIP Deaktiviere DIP, Aktiviere HASHV, Entferne aus HASH, Setze auf Deallocate Page List. Wie bei Zeile 7B gezeigt für jede gefundene CL mit deaktiviertem RIP Deaktiviere DIP, Deaktiviere HASHV, Entferne aus HASH.
  • Bei 1036 ist gezeigt Undo Destage. Wie bei Zeile 8 gezeigt Lies Page-List, Deaktiviere DIP, Deaktiviere Purge Status und füge LRU wieder hinzu. Bei 1038 ist gezeigt Purge, Ignoriere MIP oder Allocate = 0 oder 4:0 = 0 oder wenn Purge Status = 1. Wie bei Zeile 9A gezeigt für jede gefundene CL mit deaktiviertem OIP/DIP und aktiviertem HASHV Aktiviere Purge Status, Aktiviere DIP ein und Entferne aus LRU, Setze auf Deallocate Page-List. Wie bei Zeile 9B gezeigt für jede gefundene CL mit aktiviertem OIP/DIP oder deaktiviertem HASHV Aktiviere Purge Status.
  • In den FIUREN 11A und 11B sind beispielhafte, allgemein mit dem Bezugszeichen 1100, 1120 angegebene Cachespeicher-Leitungs- (CL-) Ketten, die jeweils dieselben Array-ID/LBA haben, gezeigt, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. In 11A gehören zu beispielhaften CL-Ketten 1100 im Steuerspeicher (CS) mit derselben Array-ID/LBA IDLE 1102 mit Allocate = 1, LOC = 0/1, HASHV = 1, (LRU = gültig); RIP 1104 mit Allocate = 1, LOC = 0/1, HASHV = 1, (LRU = gültig), RIP = 1; DIP 1106 mit Allocate = 1, LOC = 0/1, HASHV = 1, DIP = 1; RIP/DIP 1108 mit Allocate = 1, LOC = 0/1, HASHV = 1, RIP = 1, DIP = 1; ALLOCATED 1110 mit Allocate = 1 und IDLE 1112 mit Allocate = 1, LOC = 0/1, HASHV = 1, (LRU = gültig); und MIP 1114 mit Allocate = 1, LOC = 0/1, MIP = 1, HASHV = 1 (LRU = gültig) und OIP 1116 mit Allocate = 1, LOC = 0/1, HASHV = 1, wie gezeigt ist.
  • In 11B gehören zu beispielhaften CL-Ketten 1100 im Steuerspeicher (CS) mit derselben Array-ID/LBA ALLOCATED 1122 mit Allocate = 1 und Op Build Nr. = N + X + Y; ALLOCATED 1124 mit Allocate = 1 und Op build Nr. = N + X; und ALLOCATED 1126 mit Allocate = 1 und Op build Nr. = N
  • Die 12A, 12B, 12C bzw. 12D veranschaulichen eine beispielhafte, auf einem Steuerblock (CB) beruhende Kette von Operationen in Hardware-Steuerkomponenten für Schreibvorgänge, nichtoptimierte oder vorläufige Schreibvorgänge, Lesevorgänge und Auslagerungsoperationen, die in dem Controller zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind.
  • In 12A enthält der beispielhafte Schreibprozess, der allgemein durch das Bezugszeichen 1200 angegeben ist, Zuordnen von NV-Seiten 1202, das beinhaltet: Zuordnen einer Seitenliste A im Datenspeicher (DS); eines Host-DMA zum DS mit Kompression 1204 für DMA-Daten vom Host in die Seitenliste A; eine Schreibcachespeicher- (WC-) Überlagerungssuche und Installieren 1026 zum Ermitteln, ob im Cachespeicher vorhandene Daten möglicherweise überlagert wurden beim Aktualisieren von CL-Zuständen (aktiviere MIP und erzeuge OIP-Liste oder Seitenliste B, ermittle, ob Sektor EA erforderlich ist); XOR-Sektor E/A-Zusammenfügen 1208, es werden keine 4-K-Daten am Beginn und Ende der Schreiboperation zusammengefügt; SAS-Spiegeln 1210, das neue Daten der Seitenliste A zum lokalen NV-DS und zum fernen NV-DS spiegelt; SAS-Spiegellöschen 1212 Spiegellöschen der Seitenliste B; Deaktivieren MIP & OIP Deaktivieren von MIP für Seitenliste A und Erzeugen einer neuen Liste von OIP oder Seitenliste C und Deaktivieren von MIP & OIP Rückgängig machen, z.B. wenn SAS-Spiegeln oder SAS-Spiegellöschen fehlschlägt; NV-Deallocate 1216 Aufheben der Zuordnung von überlagerten Seiten oder Seitenliste C; und SIS-Send 1218 Senden einer Antwort an den Host.
  • In 12A enthält der beispielhafte, nichtoptimierte oder vorläufige Schreibprozess, der allgemein durch das Bezugszeichen 1220 angegeben ist, eine XOR-Verknüpfung von Vol mit NV Kopieren ohne Kompression 1222.
  • In 12C enthält der beispielhafte Leseprozess, der allgemein durch das Bezugszeichen 1224 angegeben ist, Vol Allocate 1126; WC Lesen Suche 1228; SAS Read (oder teilweiser Lesetreffer) 1230; HDMA von DS mit Dekomprimierung 1232; Vol Deallocate 1234; Deaktivieren RIP 1236; NV Deallocate 1238 zum Beispiel für bereits ausgelagerte Daten; und Send SIS 1240.
  • In 12D enthält der beispielhafte Auslagerungsprozess, der allgemein durch das Bezugszeichen 1242 angegeben ist, Auslagerungssuche 1244; XOR Dekomprimieren 1246; Ausführen verschiedener Assists, die mit RAID-Auslagerung 1248 verbunden sind, wie z.B. Zuordnen/Freigeben von Datenträgern, PSL-Sperren/Entsperren, Festlegen/Aktualisieren/Löschen der Paritätsaktualisierungsspuren (PUFP), SAS-Operationen; SAS Spiegellöschen 1250; Deaktivieren DIP 1252, und Deaktivieren DIP rückgängig machen, wenn beispielsweise die Auslagerung fehlschlägt, und NV Deallocate 1254.
  • In 13 ist ein Ablaufplan gezeigt, der beispielhafte, allgemein durch das Bezugszeichen 1300 angegebene Operationen eines Schreibprozesses veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind, der an einem Block 1302 beginnt. Ein Prüfen nach bereitgestellten flüchtigen Seiten (x2) wird ausgeführt, wie in einem Entscheidungsblock 1304 angegeben. Wenn flüchtige Seiten bereitgestellt werden, erfolgt ein Umleiten, wie in einem Block 1306 angegeben und ein Schreiben über AMGR, wie in einem Block 1308 angegeben. Wenn dagegen keine flüchtigen Seiten bereitgestellt werden, wird Prüfen nach möglichen Daten im Cachespeicher ausgeführt, wie in einem Entscheidungsblock 1310 angegeben. Wenn mögliche Daten im Cachespeicher erkannt werden, wird Prüfen auf Sprung- oder WC-Überlagerungsausnahme ausgeführt, wie in einem Entscheidungsblock 1312 angegeben. Wenn Sprung- oder WC-Überlagerungsausnahme erkannt wird, werden ein flüchtiges Zuordnen (x2) oder ein vorläufiges Zuordnen (preallocated), wie in einem Block 1316 angegeben, ein Host-Direktspeicherzugriff (HDMA), wie in einem Block 1318 angegeben, ein Schreiben über AMGR, wie in einem Block 1310 angegeben und Vol Deallocate ausgeführt, wie in einem Block 1322 angegeben. Wie in einem Block 1323 angegeben, wird SIS Send bereitgestellt, wodurch eine Antwort an den Host gesendet wird.
  • Wenn andernfalls die Sprung- oder WC-Überlagerungsausnahme nicht erkannt wird, wird ein Schreibvorgang im Schreibcachespeicher gemäß den bevorzugten Ausführungsformen durchgeführt, indem in der HW verkettete Schritte durchgeführt werden: Allocate NV Pages 1324, durch Zuordnen einer A Page List im Datenspeicher (DS); Host DMA to DS mit Komprimierung 1226 für DMA-Behandlung von Daten vom Host in die A Page List; ein Write Cache (WC) Overlay Search and Install 1328, wobei ermittelt wird, ob vorhandene Daten im Cachespeicher überlagert wurden, während CL-Zustände aktualisiert werden (MIP aktivieren und OIP List oder B Page List erzeugen, Ermitteln, ob Sektor EA benötigt wird); XOR Sector I/O Merge 1330, Verknüpfen von Nicht-4-K-Daten am Anfang und am Ende der Schreiboperation; SAS Mirror 1332 Spiegeln von neuen Daten der A Page List an den lokalen NV DS und/oder zum Entfernen NV DS; SAS Mirror Delete 1334, Spiegellöschen B Page List; Turn off MIP & OIP 1336, Deaktivieren von MIP für A Page Liste und Erzeugen neuer Liste von OIP oder C Page List; NV Deallocate 1338, Freigeben von überlagerten Seiten oder C Page List; und SIS Send 1323, Senden einer Antwort an den Host.
  • 14 veranschaulicht eine beispielhafte XOR-Verknüpfung beim schnellen Schreiben mit Überlagerung, die allgemein durch das Bezugszeichen 1400 angegeben ist, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Die XOR-Verknüpfung beim schnellen Schreiben mit der Überlagerung 1400 enthält einen Puffer A, der Mirror in Progress (MIP) und neue Daten 1402 enthält, und einen Puffer B, der Overlay in Progress (OIP) und alte Daten 1404 enthält, die im Puffer A verknüpft werden, der MIP und verknüpfte Daten 1406 enthält.
  • 15 zeigt einen Ablaufplan, der beispielhafte, allgemein mit dem Bezugszeichen 1500 angegebene Operationen eines Leseprozesses veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind, beginnend mit einem Block 1502. Ein Prüfen auf flüchtige Seiten (x2), die bereitgestellt werden, wird ausgeführt, wie in einem Entscheidungsblock 1504 angegeben. Wenn flüchtige Seiten bereitgestellt werden, werden sie umgangen, wie in einem Block 1506 angegeben und über AMGR gelesen, wie in einem Block 1508 angegeben. Wenn andernfalls keine flüchtigen Seiten bereitgestellt werden, wird Prüfen auf mögliche Daten im Cachespeicher ausgeführt, wie in einem Entscheidungsblock 1510 angegeben. Wenn im Cachespeicher mögliche Daten erkannt werden, wird Prüfen auf Sprung- oder Lesensuche-Ausnahme ausgeführt, wie in einem Entscheidungsblock 1512 angegeben. Wenn Sprung- oder Lesensuche-Ausnahme erkannt wird, werden flüchtiges Zuordnen (x2) oder Vorab-Zuordnen wie in einem Block 1516 angegeben, Lesen AMGR, wie in einem Block 1518 angegeben, Host-Speicherdirektzugriff (HDMA) wie in einem Block 1520 angegeben und VOL Deallocate, wie in einem Block 1522 angegeben ausgeführt. Wie in einem Block 1523 angegeben, wird SIS Send bereitgestellt, wodurch eine Antwort an den Host gesendet wird.
  • Wenn andernfalls keine Sprung- oder Lesensuche-Ausnahme erkannt wird, wird ein Lesen aus dem Schreibcachespeicher gemäß den bevorzugten Ausführungsformen durchgeführt, indem HW-verkettete Schritte ausgeführt werden: Vol Allocate 1524, das A-Vol bereitstellt; WC Read Search 1526, wobei B, Vol-Indizes von A und NV-Indizes für Daten im Cachespeicher enthält, Sprungbits werden außerdem erzeugt; Read via AMGR (2 Operationen der Cross 256KB Begrenzung) 1528; HDMA vom DS mit Dekompression 1530, wodurch B-NVv empfangen wird; Vol Deallocate 1532 (oder No Op) wodurch A-Vol empfangen wird; Turn Off RIP 1534, wodurch B-NVv empfangen wird und C-CLr bei deaktiviertem RIP für Indizes bereitstellt wird, bei denen Sprung-Bits gesetzt sind; NV Deallocate 1536, indem z.B. C-CLr bereitstellt wird, da bereits durch einen Auslagerungsvorgang gelöscht, daher müssen lediglich die NV-Indizes freigegeben werden; und SIS Send 1523.
  • In 16 ist ein Ablaufdiagramm gezeigt, das beispielhafte, allgemein mit dem Bezugszeichen 1600 angegebene Operationen eines Auslagern-Build-Prozesses veranschaulicht, der in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist und in einem Block 1602 beginnt.
  • Gemäß Merkmalen der Erfindung unterstützt eine Hardware-Steuerkomponente Erzeugen einer Auslagerungsoperation mit Optionen zum Beginnen an der LRU oder einer bestimmten LBA des Arrays und zum Beenden bei einer maximal geforderten Größe/Spanne oder am Ende einer 256-K-Stripe-Grenze. Wie in einem Block 1604 angegeben, wird eine Auslagerungssuche (Destage Search) mit HardwareUnterstützung aufgerufen, die den Schreibcachespeicher über die Hash-Tabelle und/oder die LRU-Warteschlange durchsucht, um eine Auslagerung (Aktivieren DIP) mit Optionen zum Beginnen an der LRU oder einer spezifischen LBA des Arrays oder wie gezeigt beginnend bei LRU (mit Lücken für HDD, ohne Lücken für SSD) zu erzeugen. Das Prüfen auf gefundene volle 256 K und zulässiges Full Stripe Write (FSW) werden durchgeführt, wie in einem Entscheidungsblock 1606 angegeben. Wenn volle 256 K gefunden werden und FSW nicht zulässig ist, kann das Prüfen nach Op nicht durchgeführt werden, da eine einzelne Operation am Laufwerk ausgeführt wird, wie in einem Entscheidungsblock 1608 angezeigt. Wenn Op nicht ausgeführt werden kann, da eine Einzeloperation am Laufwerk festgestellt wird, werden die überlappten oder serialisierten Auslagerungen ausgeführt, wie im Block 1610 angegeben, beispielsweise wegen Lücken, wenn Laufwerke keine Sprungoperationen unterstützen oder CL Sektor-E/A mit möglichen Lücken enthalten. Wenn Op nicht ausgeführt werden kann, wenn keine Einzeloperation am Laufwerk festgestellt wird, wird ein einzelnes Auslagern durchgeführt, wie im Block 1612 angegeben.
  • Wenn gefunden volle 256 K und FSW zulässig erkannt werden, wird wie bei einem Entscheidungsblock 1614 angegeben checking beginning of major parity stripe durchgeführt. Wenn checking beginning of major parity stripe nicht festgestellt wird, wird eine einzelne Auslagerung durchgeführt, wie in einem Block 1616 angegeben. Wenn beginning of major parity stripe festgestellt wird, werden Auslagerungs-Suchvorgänge beginnend bei Array-Offsets aufgerufen, wie in Block 1618 angegeben. Das Prüfen zusätzlicher Suchvorgänge wird bei jeweils vollen 256 oder nicht durchgeführt, wie in einem Entscheidungsblock 1620 angegeben. Wenn das der Fall ist, werden mehrere Auslagerungsvorgänge durchgeführt, wie in einem Block 1622 angegeben. Wenn das nicht der Fall ist, werden zusätzliche Auslagerungsvorgänge oder eine Warteschlange für eine spätere Tätigkeit rückgängig gemacht, wie im Block 1624 angegeben. Dann wird eine einzelne Auslagerung durchgeführt, wie in einem Block 1626 angegeben.
  • 17 ist ein Ablaufplan, der beispielhafte, allgemein mit dem Bezugszeichen 1700 angegebene Operationen eines Prozesses einer einzelnen Auslagerung veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind und in einem Block 1702 beginnen. Prüfen auf RAID 5 oder 6 wird durchgeführt, wie in einem Entscheidungsblock 1704 angegeben. Wenn RAID 5/6 erkannt wird, werden die folgenden HW-Operationsschritte gemäß der bevorzugten Ausführungsform ausgeführt, darunter: Vol Allocate (2X Puffer) 1706, XOR Decompress 1708, Write via AMGR 1710, Vol Deallocate 1712, SAS MIRROR Delete (lokal und/oder fern) 1714, Empfangen von B-DIP (Destage in Progress), Deaktivieren DIP 1716, Empfangen B-DIP und Bereitstellen C-CLr (Deaktivieren DIP Rückgängig machen zum Beispiel, wenn Destage fehlschlägt), NV Deallocate 1718, Empfangen C-CLr und Operationen beendet, wie im Block 1720 angegeben durchgeführt
  • Wenn RAID 5/6 nicht erkannt wird, werden die folgenden HW-Operationsschritte gemäß der bevorzugten Ausführungsform durchgeführt, darunter: Read No Dest (XOR-Dekomprimieren) 1722, Write via AMGR 1724 und weiter mit SAS MIRROR Delete (lokal und/oder fern) 1714, Empfangen B-DIP (Destage in Progress), Turn Off DIP 1716, Empfangen von B-DIP und Bereitstellen von C-CLr (Turn Off DIP beispielsweise Rückgängigmachen, wenn Destage fehlschlägt), NV Deallocate 1718, Empfangen von C-CLr und Operationen, die im Block 1720 abgeschlossen werden.
  • In 18 ist ein Ablaufplan gezeigt, der beispielhafte, allgemein durch das Bezugszeichen 1800 angegebene Operationen eines Mehrfach-Auslagerungsprozesses veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind und in einem Block 1802 beginnen. Die folgenden HW-Operationsschritte gemäß der bevorzugten Ausführungsform werden ausgeführt, darunter: Vol Allocate (2X Puffer) 1804, Strip Write via AMGR 1806, Vol Deallocate 1808, SAS MIRROR Delete (lokal und/oder fern) 1810, Empfangen von B-DIP, Turn Off DIP * N 1812 Empfangen von B-DIP und Bereitstellen C-CLr, NV Deallocate * N 1814 Empfangen von C-CLr und Operationen beendet, wie im Block 1816 angegeben.
  • In 19 ist ein Ablaufplan gezeigt, der beispielhafte, allgemein durch das Bezugszeichen 1900 angegebene Operationen eines Umgehungsprozesses veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind und in einem Block 1902 beginnen. Eine Auslagerungssuche wird beginnend an dem Array-Offset für Größe/Spanne von Op aufgerufen, wie in einem Block 1904 angegeben. Prüfen auf ODER-Verknüpfung von Zustandsbits = 0 UND-Verknüpfung Anzahl von geschriebenen Indizes = 0 wird wie in einem Entscheidungsblock 1906 angegeben durchgeführt. Wenn das der Fall ist, werden Operationen ausgeführt, wie im Block 1908 angegeben. Wenn das dagegen nicht der Fall ist, wird geprüft, ob Anzahl der geschriebenen Indizes = 0 ist, wie in einem Entscheidungsblock 1910 angegeben. Wenn die Anzahl der geschriebenen Indizes = 0 ist, wird eine Verzögerung bereitgestellt, wie bei Block 1912 angezeigt, und die Operationen kehren zum Block 1904 zurück, in dem eine Auslagerungssuche aufgerufen und der Ablauf fortgesetzt wird. Wenn die Anzahl der geschriebenen Indizes nicht gleich 0 ist, wird, wie in Block 1914 angegeben, geprüft, ob Op nicht als eine Einzeloperation am Laufwerk, z.B. wegen der Lücken ausgeführt werden kann, da jedoch Laufwerke keine Sprungoperationen unterstützen oder CL Sektor I/O mit möglichen Lücken enthält. Wenn Op nicht als eine Einzeloperation am Laufwerk ausgeführt werden kann, werden überlappende oder serialisierte Auslagerungen durchgeführt, wie in einem Block 1916 angegeben. Wenn Op als eine Einzeloperation am Laufwerk ausgeführt werden kann, wird eine einzelne Auslagerung durchgeführt, wie bei 1918 angegeben. Die Operationen kehren zum Block 1904 zurück, in dem eine Auslagerungssuche aufgerufen und der Ablauf fortgesetzt wird.
  • 20 veranschaulicht zeigt ein beispielhaftes, allgemein mit einem Bezugszeichen 2000 angegebenes, auf Registern beruhendes Entleerungs-Toolkit zur Hardwareunterstützung, das in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten ist. Wie in einem Block 2002 angegeben, liest die WC-Hardware alle CLs, bei jenen, die mit diesem Bereich übereinstimmen, erfolgt Folgendes: Wenn Allocate = 1, PIP = 0, MIP = 0 und HASHV = 1, wird PIP aktiviert und der Zähler erhöht. Wenn der Zähler erhöht wird, DIP = 0 und OIP = 0, DIP aktivieren, aus LRU entfernen und CL in die Seitentabellenliste setzen. Die WC-Steuerkomponente kann CB während dieser Zeit verarbeiten, wobei diese Funktion mit der CB-Verarbeitung verschachtelt wird. FW-geladene Register 2004 2004 enthalten:
    • Array ID(7:0) 2006
    • Starting Array Offset(44:0), bits(2:0)=0 since must be 4KB aligned 2008
    • Ending Array Offset Size(44:0), bits(2:0)=0 since must be 4KB multiple 2010
    • Page Table List pointer(31:0) 2012
    • Page Table Size(11:0), up to 4K-1 entries 2014
    • Page Table current Size(11:0) 2016
    • Current CL Index(24:0), 2018 (may be set to zero at start, held after a pause)
    • Max CL Index(24:0) 2020
    • Active bit, Page Table Interrupt bit 2022; and
    • Current Purge counter(24:0) 2024, deallocate will decrement for any CL with PIP bit set.
  • CL 2026 enthält PIP (Purge in Progress) Bit 2028 (Increments Purge Pending Count wenn eingestellt, Decrement Purge Pending Count beim Aufheben der Zuordnung). EventQ Entries 2030 enthalten die oben genannten Unterbrechungen, wenn die Page Table list voll ist, und send a Purge Page List EventQ entry 2032; when Purge ein Sweep beendet und wenn die Page Table list nicht leer ist, dann Send a Purge Page List EventQ entry 2034 (11:10=type=11 b), Beachte: Muss neu gestartet werden; und nachdem sowohl Purge beendet wird und der Zähler null ist, dann Send a Purge Done EventQ entry 2036 (11:10=type=10b). Es wird angemerkt, dass FW eine Auslagerungssuche verwendet, um Cachespeicherdaten für einen kleinen Bereich von LBAs zu löschen. Die Lösch-Steuerkomponente sollte für größere Bereiche von LBAs verwendet werden.
  • Die 21 und 22 sind Ablaufpläne, die beispielhafte, allgemein mit dem Bezugszeichen 2100 bzw. 2200 angegebene Operationen eines Prozesses einer Lösch-Steuerkomponente veranschaulichen, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. In 21 prüft der im Block 2102 beginnende Prozess der Lösch-Steuerkomponente, ob sich die WC-Steuerkomponente im Leerlauf befindet, wie in einem Entscheidungsblock 2104 angegeben. Wenn erkannt wird, dass sich die WC-Steuerkomponente im Leerlauf befindet, wird Prüfen nach allen verarbeiteten CLs ausgeführt, wie in einem Entscheidungsblock 2106 angegeben. Wenn das nicht der Fall ist, wird die CL verarbeitet, wie in einem Block 2108 angegeben, und ein Prüfen nach einer vollen Seitenliste wird ausgeführt, wie in einem Entscheidungsblock 2110 angegeben. Wenn die Seitenliste nicht voll ist, wird ein Prüfen, ob eine 256-K-Grenze vorliegt, ausgeführt, wie in einem Entscheidungsblock 2112 angegeben. Wenn das der Fall ist, kehren die Operationen zurück zum Prüfen im Entscheidungsblock 2104, ob sich die WC-Steuerkomponente im Leerlauf befindet, und der Ablauf wird fortgesetzt. Wenn dagegen die Seitenliste voll ist, wird eine Teil-Entleerung angegeben, wobei die Anzahl von gültigen Indizes bereitgestellt, wird wie in einem Block 2114 angegeben. Wenn alle CLs verarbeitet wurden, wird ein Prüfen nach einer leeren Seitenliste ausgeführt, wie in einem Entscheidungsblock 2116 angegeben. Wenn die Seitenliste nicht leer ist, wird die Teil-Entleerung angegeben, wobei die Anzahl von gültigen Indizes im Block 2114 bereitgestellt wird. Wenn die Seitenliste leer ist, wird Prüfen nach einem Null-Entleerungszähler ausgeführt, wie in einem Entscheidungsblock 2118 angegeben. Wenn das der Fall ist, wird Entleerung erfolgt angegeben, wie in einem Block 2120 angegeben. Andernfalls erfolgen Operationen, wie im Block 2122 angegeben.
  • In 22 enthält eine Leerungsanforderung, die im Block 2202 beginnt, Prüfen nach einem Vorgang Purge in Progress, der momentan ausgeführt wird, wie in einem Entscheidungsblock 2204 angegeben. Wenn das der Fall ist, wird die Leerungsanforderung in eine Warteschlange gesetzt, wie in einem Block 2205 angegeben. Andernfalls wird eine Routine der Leerungs-Steuerkomponente für eine Array-ID und einen LBA-Bereich aufgerufen, wie in einem Block 2206 angegeben. Prüfen nach gefundenem Index/gefundenen Indizes und Leerungs-Steuerkomponente unterbrochen wird ausgeführt, wie in einem Entscheidungsblock 2208 angegeben. Wenn das der Fall ist, wird SAS-Mirror Delete (lokal und/oder fern) ausgeführt, wie in einem Block 2210 angegeben. DIP wird deaktiviert, wie in einem Block 2212 angegeben, und NV Deallocate wird bereitgestellt, wie in einem Block 2214 angegeben. Die Leerungs-Steuerkomponente wird neu gestartet (Unterbrechung aufgehoben), wie in einem Block 2216 angegeben, und Prüfen nach gefundenem Index/gefundenen Indizes und Leerungs-Steuerkomponente unterbrochen wird an den Entscheidungsblock 2208 zurückgegeben und der Ablauf wird fortgesetzt. Wenn ein Index/mehrere Indizes gefunden werden und Leerungs-Steuerkomponente unterbrochen nicht erkannt wird, erfolgt Leerung, wie in einem Block 2218 angegeben. Dann erfolgt Prüfen, ob eine Leerungs-Anforderung in der Warteschlange vorhanden ist, wie in einem Block 2220 angegeben. Wenn das der Fall ist, kehrt der Ablauf zu Operationen zurück, um die Routine der Leerungs-Steuerkomponente für Array-ID und LBA-Bereich in den Blöcken aufzurufen und der Ablauf wird fortgesetzt. Andernfalls erfolgen Operationen, wie im Block 2222 angegeben.
  • In 23 sind beispielhafte, durch das Bezugszeichen 2300 angegebene Hardware-Zähler und statistische Angaben gezeigt, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. Die Hardware-Zähler und statistische Angaben 2300 werden durch HW für jede Array-ID geführt, darunter:
    • Aktueller Zählerwert CL 2302
    • Aktueller Zählerwert Lokalitäts-Bit 2304
    • HWM CL 2306
    • HWM Lokalitäts-Bit 2308
    • LWM CL 2310
    • LWM Lokalitäts-Bit 2312
    • LRU UP, ältester CL-Eintrag in der LRU, zero=null 2314
    • LRU DOWN, nächste Position ein neuer Wert CL wird eingesetzt, zero= null 2316
    • Aktueller Zählerwert WC installiert Gesamtzahl 2318
    • Aktueller Zählerwert WC installiert mit Überlagerung 2320
    • Aktueller Zählerwert WC liest Gesamtzahl 2322; und
    • Aktueller Zählerwert WC liest bei vollem Cachespeicher Lesetreffer 2324.
  • Gemäß den Merkmalen der Erfindung wäre es bei einem Großteil der Cachespeicherverwaltung unter Hardwaresteuerung für die Firmware schwierig, das Management der Cachespeicher-Schwellenwerte pro Array (d.h. die gewünschte Datenmenge im Cachespeicher pro Array) und der Cachespeichergrenzwerte pro Array (d.h. maximale Datenmenge im Cachespeicher pro Array) ohne Hilfe durch die Hardware zu unterstützen. Es gibt außerdem Gesamt- (Nicht-Array-) Schwellenwerte und zu verwaltende Grenzen. Die Hardware stellt Eingänge (Register) von der Firmware und Ausgänge (Register und Ereignisse) zur Firmware bereit, um die Cachespeicher-Schwellenwerte und Grenzwerte zu verwalten.
  • Gemäß Merkmalen der Erfindung wird ein neues, auf Auslöseereignisse gestütztes Verfahren zum dynamischen Optimieren der Auslagerungsrate bereitgestellt. Das neue auf Auslöseereignisse gestützte Verfahren verwendet einen Satz von Registern für Cachespeicher-Seiten mit oberen und unteren Auslöseereignisse und Cachespeicher-CLs mit oberen und unteren Auslöseereignissen. Die Hardware verwaltet Zähler für jedes dieser Zählereignisse, und wenn die Hardware-Zähler eines dieser oberen oder unteren Auslöseereignisse überschreitet, erzeugt sie ein zu verarbeitendes Ereignis für die Firmware. Wenn diese Auslösewerte überschritten und diese Ereignisse verarbeitet werden, passt die Firmware die Tiefe der Auslagerungswarteschlange entsprechend an. Wenn die obere Grenze der Cachespeicherseiten oder der Cachespeicher-CLs überschritten wird, kann die Tiefe der Auslagerungswarteschlange erhöht werden. Gleichzeitig werden die Werte der Register für die oberen und unteren Werte der Cachespeicherseiten und/oder der Cachespeicher-CLs erhöht, um das nächste Überschreiten zu erkennen. Wenn die untere Grenze der Cachespeicherseiten oder CLs überschritten wird, kann die Tiefe der Auslagerungswarteschlange zusammen mit der Einstellung der unteren und oberen Grenze verringert werden. Die Auslagerungsrate wird durch den höheren Wert von Cachespeicherseiten und Cachespeicher-CLs festgelegt. Um ein Übermaß an Ereignissen zu vermeiden, wenn entweder die Cachespeicherseiten oder die Cache-CLs die obere Grenze überschreiten, wird die obere Grenze für beide nach oben verschoben. Es ist jedoch lediglich wichtig, die untere Grenze der am stärksten genutzten Ressource zu verschieben. Im Wesentlichen ist die Ressource, die die höhere Auslagerungsrate verursacht, die einzige Ressource, für die die untere Grenze überwacht werden muss, um zu erkennen, wann die Auslagerungsrate gesenkt werden kann.
  • Wenn gemäß Merkmalen der Erfindung eine untere Grenze von Cachespeicherseiten oder CLs überschritten wird, wird die Auslagerungsrate, wenn es um die schwächere Ressource handelt, nicht geändert, und lediglich die untere Grenze für diese Ressource muss nach unten geändert werden. Wenn es sich um die stärkere Ressource handelt, muss die schwächer verwendete Ressourcenebene überprüft werden, um zu ermitteln, ob sie zu der stärker verwendeten Ressource geworden ist. Die Auslagerungsrate wird dann auf der Grundlage der stärkeren Ressource festgelegt. Außerdem werden beide oberen Grenzen auf der Grundlage der stärkeren Ressource festgelegt. Anschließend muss die untere Grenze für die stärkere Ressource auf den Auslösepunkt für die nächstniedrigere Auslagerungsrate gesetzt werden. Wenn schließlich die untere Grenze für die schwächere Ressource höher liegt als die neue Einstellung für die stärkere Ressource, muss sie ebenfalls gesenkt werden.
  • Gemäß Merkmalen der Erfindung handelt es sich um ein auf Auslöseereignisse pro Array gestütztes Verfahren zum dynamischen Einstellen von Grenzwerten pro Ressource. Dieses verwendet einen Satz von Registern für obere oder untere Auslöseereignisse der Cachespeicher-CLs pro Ressource und für obere oder untere Auslöseereignisse des Locality-Zählwertes pro Ressource. Die Hardware verwaltet Zähler für jeden dieser Zählvorgänge und wenn die Hardware-Zähler eines dieser oberen oder unteren Auslöseereignisse überschreiten, erzeugt sie ein zu verarbeitendes Ereignis für die Firmware. Im Wesentlichen werden diese Auslöseereignisse verwendet, um das Verhältnis von CLs zu Lokalität-Zählwert zu überwachen und den Grenzwert pro Ressource anzupassen. Wenn der CL-Zählwert die obere Grenze überschreitet, sollte der Grenzwert verringert werden. Gleichzeitig sollten die oberen und unteren Grenzen für CLs vergrößert werden. Wenn der Lokalität-Zählwert die oberen Grenzen überschreitet, sollte der Grenzwert erhöht werden, und die oberen und unteren Grenzen für den Lokalität-Zählwert sollten erhöht werden. Wenn der CL-Zählwert die untere Grenze überschreitet, sollte der Grenzwert erhöht werden, und die oberen und unteren CL-Grenzen sollten verringert werden. Wenn der Lokalität-Zählwert die untere Grenze überschreitet, sollte der Grenzwert verringert werden, und die oberen und unteren Grenzen für den Lokalität-Zählwert sollten verringert werden.
  • Die 24 und 25 veranschaulichen beispielhafte, allgemein durch die Bezugszeichen 2400 bzw. 2500 angegebene CL-Grenzwerte und Schwellenwerte, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind.
  • In 24 sind CL-Grenzwerte und Schwellenwerte 2400 Gesamtgrenzwert für NV-4-K-Indizes (Größe des Cachespeicher-Verzeichnisses) und Gesamtschwellenwert für NV-4-K-Indizes (nn% des Grenzwertes) bei 2402 dargestellt und Gesamtgrenzwert für NV-Indizes 528 (Größe des echten Cachespeichers) und Gesamtschwellenwert für NV-Indizes 528 (nn% des Grenzwertes) bei 2404 mit beispielhaften oberen Grenzen (HWM) und unteren Grenzen (LWM) dargestellt. Wie am Array Nr. 1, 2406, Array Nr. 2, 2408, Array Nr. 3 2410 bzw. Array Nr. 4 2412 gezeigt sind ein beispielhafter Grenzwert pro Array in gestrichelten Linien und ein Schwellenwert pro Array in Bezug auf HWM und LWM in gepunkteten Linien dargestellt.
  • In 25 enthalten Grenzwerte und Schwellenwerte 2500 Eingaben vor der HW 2502 von Registern 2504, darunter
    • CL Zählwert (pro Array-ID)
    • CL Lokalität-Zählwert (per array ID),
    • NV 4K freie Indizes (über Kopf/Ende-Zeiger), und
    • NV 528 freie Indizes (über Kopf/Ende-Zeiger). Eingaben von HW 2502 von Ereignissen 2506 enthalten:
    • NV 4K über HWM, NV 4-K unter LWM, NV 528 über HWM
    • NV 528 unter LWM
    • Ein Array-CL-Zählwert über HWM
    • Ein Array-CL-Zählwert unter LWM
    • Ein Array-CL-Lokalität-Zählwert über HWM
    • Ein Array-CL-Lokalität-Zählwert unter LWM
  • Eine FW-Grenzwert- und Schwellenwert-Berechnungsfunktion 1508 empfängt die Eingaben von HW2502 und stellt Ausgaben an HW2510 bereit, darunter Aktualisieren des CL-Grenzwertes (pro Array) 2512. Das erfolgt mit einer Addition oder Subtraktion unter Verwendung eines Wait Q Aktualisierungsanschlusses. Zu Ausgaben an HW 2510 gehören Update of HWMs/LWMs für arraygestützte CL-Zählwerte und CL-Lokalität-Zählwerte 2514. Es wird angemerkt, dass die HWMs/LWMs für die freien Indizes NV 4K und NV 528 nicht routinemäßig geändert werden. Zu weiteren Ausgaben 2516 gehört die Auslagerungsrate 2518.
  • In 26 ist ein Ablaufplan gezeigt, der beispielhafte, allgemein durch das Bezugszeichen 2600 angegebene Operationen der globalen Ereignisverarbeitung veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. Wie in einem Entscheidungsblock 2602 angegeben, wird die HWM oder LWM erkannt. Für die HWM wird, wie in einem Entscheidungsblock 2604 angegeben, eine Seite oder CL erkannt. Wie in einem Block 2606 angegeben, werden die Seite und die CL-HWM für die erkannte Seite erhöht. Wie in einem Block 2608 angegeben, wird die Seiten-LWM erhöht. Wie in einem Block 2610 angegeben, werden die Seite und die CL-HWM für die erkannte CL erhöht. Wie in einem Block 2612 angegeben, wird die CL-LWM erhöht. Die Auslagerungsrate wird erhöht, wie in einem Block 2614 angegeben. Für die LWM wird, wie in einem Entscheidungsblock 2615 angegeben, eine Seite oder CL erkannt. Wie in einem Block 2616 angegeben, wird ein Prüfen durchgeführt, ob für die erkannte Seite die Seiten größer als CLs sind. Wenn Seiten größer als CLs sind, werden die Seite und die CL-HWM verringert, wie in einem Block 2620 angegeben. Wenn Seiten nicht größer als CLs sind, wird die LWM der Seite auf Null gesetzt, und die CL-LWM wird gesetzt, wie im Block 2622 angegeben. Ein Prüfen wird durchgeführt, um eine Notwendigkeit zu erkennen, die Auslagerungsrate zu senken, wie in einem Entscheidungsblock 2624 angegeben. Wenn die Auslagerungsrate nicht verringert werden muss, wird die Verarbeitung des globalen Ereignisses durchgeführt, wie im Block 2626 angegeben. Eine obere Ressourcen-LWM wird verringert, wie es in einem Block 2628 angegeben. Die Auslagerungsrate wird verringert, wie in einem Block 2630 angegeben, und dann wird die globale Ereignisverarbeitung im Block 2626 durchgeführt. Wie in einem Entscheidungsblock 2632 angegeben, wird für die erkannte CL geprüft, ob Seiten kleiner als CLs sind. Wenn Seiten kleiner als CLs sind, werden die Seite und die CL-HWM im Block 2620 verringert. Wenn Seiten nicht kleiner als CLs sind, wird die CL-LWM auf Null gesetzt, und die LWM der Seite wird gesetzt, wie im Block 2634 angegeben. Ein Prüfen wird durchgeführt, um eine Notwendigkeit zu erkennen, die Auslagerungsrate zu senken, wie in einem Entscheidungsblock 2636 angegeben. Wenn die Auslagerungsrate nicht verringert werden muss, erfolgt die globale Ereignisverarbeitung im Block 2626. Dann wird die Auslagerungsrate verringert, wie im Block 2630 angegeben, und dann erfolgt die globale Ereignisverarbeitung im Block 2626.
  • 27 ist ein Ablaufplan, der beispielhafte, allgemein durch das Bezugszeichen 2700 angegebene Schritte einer Verarbeitung pro Array veranschaulicht, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. Wie in einem Entscheidungsblock 2702 angegeben, wird HWM oder LWM erkannt. Für die HWM wird eine Lokalität oder CL erkannt, wie in einem Entscheidungsblock 2704 angegeben. Wie in einem Block 2706 angegeben, werden die HWM und LWM der CL für die erkannte CL erhöht. Wie in einem Block 2708 angegeben, wird ein Array-CL-Grenzwert verringert. Wie in einem Block 2710 angegeben, werden die Lokalität-HWM und LWM für die erkannte Lokalität erhöht. Wie bei einem Block 2712 angegeben, wird ein Array-CL-Grenzwert erhöht. Dann wird, wie in einem Entscheidungsblock 2714 angegeben, ein Prüfen durchgeführt, um zu ermitteln, ob der CL-Zählwert eine höhere Auslagerungsrate erfordert. Wenn der CL-Zählwert eine höhere Auslagerungsrate erfordert, wird die Auslagerungsrate des Arrays erhöht, wie in einem Block 2716 angegeben, und die Verarbeitung pro Array endet, wie in einem Block 2718 angegeben. Für die LWM wird, wie in einem Entscheidungsblock 2720 angezeigt, eine Lokalität oder CL erkannt. Wie in einem Block 2722 angegeben, werden die CL-HWM und LWM für die erkannte CL verringert. Wie in einem Block 2724 angegeben, wird ein Array-CL-Grenzwert erhöht. Wie in einem Block 2726 angegeben, werden die Lokalität-HWM und LWM für die erkannte Lokalität verringert. Wie in einem Block 2728 angegeben, wird ein Array-CL-Grenzwert verringert. Dann kehrt die Operation zum Entscheidungsblock 2714 zurück, wobei ein Prüfen zum Ermitteln durchgeführt wird, ob der CL-Zählwert eine höhere Auslagerungsrate erfordert, und der Ablauf wird fortgesetzt.
  • In den 28 und 29 sind beispielhafte, allgemein durch das Bezugszeichen 2800 angegebene globale Auslösevorgänge und allgemein durch das Bezugszeichen 2900 angegebene Pro-Array-Auslösevorgänge gezeigt, die in dem Controller 102 zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter gemäß der bevorzugten Ausführungsform enthalten sind. In 28 gehören zu globalen Auslösevorgängen Auslagerungsrate und relativer Füllstand, die an der vertikalen Achse dargestellt sind, wobei die Zeit an der horizontalen Achse dargestellt ist. In 29 gehören zu Pro-Array-Auslösevorgängen Auslagerungsrate und Anzahl von CLs/Lokalität/Grenzwert, die an der vertikalen Achse dargestellt sind, wobei die Zeit an der horizontalen Achse dargestellt ist, gemeinsam mit Bereichen für umfangreiche/sequenzielle Operationen (large/sequential Ops) und zufälligen Operation (random Ops). In 29 ist der CL-Zählwert mit einer durchgehenden Linie dargestellt, der Lokalität-Zählwert ist mit einer gepunkteten Linie dargestellt, und der CL-Grenzwert ist wie gezeigt mit einer gestrichelten Linie dargestellt.
  • 30 zeigt eine Blockdarstellung eines beispielhaften Gestaltungsablaufs (design flow) 3000. Der Gestaltungsablauf 3000 kann in Abhängigkeit vom Typ der integrierten Schaltung (IC) variieren, die entwickelt wird. Ein Gestaltungsablauf 3000 zum Bilden einer anwendungsspezifischen integrierten Schaltung (ASIC) kann sich beispielsweise von einem Gestaltungsablauf 3000 zum Entwickeln einer Standardkomponente unterscheiden. Bei der Gestaltungsstruktur 3002 handelt es sich vorzugsweise um eine Eingabe in einen Gestaltungsprozess 3004, und sie kann von einem IP-Anbieter, einem Kernentwickler oder einer anderen Gestaltungsfirma stammen oder kann durch die Bedienperson des Gestaltungsablaufs erzeugt werden oder von weiteren Quellen stammen. Die Gestaltungsstruktur 3002 weist einen EAA oder einen Controller 102 in Form von Schemata oder HDL, eine Hardware-Beschreibungssprache, z.B. Verilog, VHDL, C oder dergleichen auf. Die Gestaltungsstruktur 3002 kann auf einem oder mehreren maschinenlesbaren Medien enthalten sein. Bei der Gestaltungsstruktur kann es sich z.B. um eine Textdatei oder eine grafische Darstellung des Controllers 102 und einer Leistungszustandsmaschine 200 handeln. Vorzugsweise synthetisiert oder übersetzt der Gestaltungsprozess den Controller 102 in eine Netzliste 3006, wobei es sich bei der Netzliste beispielsweise um eine Liste von Leitungen, Transistoren, Logikgattern, Steuerschaltungen, E/A-Komponenten, Modellen usw. handelt, die die Verbindungen mit anderen Elementen und Schaltungen bei der Entwicklung einer integrierten Schaltung beschreibt und auf wenigstens einem maschinenlesbaren Medium aufgezeichnet ist. Dabei kann es sich um einen iterativen Prozess handeln, bei dem die Netzliste 3006 in Abhängigkeit von den Entwicklungsspezifikationen und Parametern für die Schaltung ein- oder mehrmalig neu synthetisiert wird.
  • Der Gestaltungsprozess 3004 kann Verwenden von einer Vielzahl von Eingaben beinhalten; beispielsweise Eingaben von Bibliothekselementen 3008, die einen Satz von üblicherweise verwendeten Elementen, Schaltungen und Einheiten beherbergen, darunter Modelle, Layouts und symbolische Darstellungen für eine bestehende Herstellungstechnologie wie beispielsweise unterschiedliche Technologieknoten, 32 nm, 45 nm, 90 nm und dergleichen, Gestaltungsspezifikationen 3010, Kennzeichnungsdaten 3012, Verifikationsdaten 3014, Gestaltungsregeln 3016 und Prüfdatendateien, die Prüfmuster und andere Prüfangaben enthalten können. Der Gestaltungsprozess 3004 kann ferner beispielsweise Standardprozesse der Schaltungsentwicklung enthalten wie beispielsweise Zeitablaufanalyse, Verifikation, Prüfen von Entwicklungsregeln, Platzieren und Lenken von Operationen und dergleichen. Ein Fachmann auf dem Gebiet der Entwicklung von integrierten Schaltungen kann das Ausmaß möglicher elektronischer Gestaltungsautomatisierungs-Tools und -anwendungen erkennen, die in dem Gestaltungsprozess 504 verwendet werden, ohne vom Umfang und Geist der Erfindung abzuweichen. Die Gestaltungsstruktur der Erfindung ist nicht auf einen spezifischen Gestaltungsablauf beschränkt.
  • Der Gestaltungsprozess 3004 übersetzt vorzugsweise eine Ausführungsform der Erfindung wie in den 1A und 1B gezeigt zusammen mit einem zusätzlichen integrierten Schaltungsentwurf oder Daten (wenn vorhanden) in eine zweite Gestaltungsstruktur 3020. Die Gestaltungsstruktur 3020 befindet sich auf einem Speichermedium in einem Datenformat, das für das Austauschen von Layout-Daten integrierter Schaltungen verwendet wird, z.B. Informationen, die in einem Format GDSII (GDS2), GL1, OASIS oder einem anderen geeigneten Format zum Speichern derartiger Gestaltungsstrukturen gespeichert werden. Die Gestaltungsstruktur 3020 kann Informationen aufweisen wie z.B. Prüfdatendateien, Gestaltungsinhaltdateien, Herstellungsdaten, Layout-Parameter, Leitungen, Ebenen von Metallen, Durchkontaktierungen, Formen, Daten zum Lenken durch die Fertigungslinie und alle weiteren Daten, die für einen Halbleiterhersteller erforderlich sind, um eine Ausführungsform der Erfindung zu erzeugen wie in den 1A und 1B gezeigt. Die Gestaltungsstruktur 3020 kann dann zu einer Stufe 3022 gehen, in der beispielsweise die Gestaltungsstruktur 3020 ausgelagert wird, zur Herstellung freigegeben wird, zu einer Maskenstelle freigegeben wird, zu einer anderen Gestaltungsstelle gesendet wird, an den Kunden zurückgeschickt wird und dergleichen.
  • Zwar wurde die vorliegende Erfindung unter Bezugnahme auf die in der Zeichnung gezeigten Einzelheiten der Ausführungsformen der Erfindung beschrieben, diese Einzelheiten sollen jedoch nicht den Umfang der Erfindung beschränken, der in den angefügten Ansprüchen beansprucht wird.

Claims (20)

  1. Datenspeichersystem, das aufweist: einen Controller, der einen Speicheradapter für ein verbessertes Management von Speicher-Schreibcachespeichern implementiert, wobei der Controller aufweist eine Hardware-Steuerkomponente des Schreibcachespeichers zum Implementieren einer Hardware-Beschleunigung des Schreibcachespeichers; und wobei die Hardware-Steuerkomponente des Schreibcachespeichers Schreibcachespeicherdaten und Metadaten im Wesentlichen ohne Verwenden von Firmware verwaltet.
  2. Datenspeichersystem nach Anspruch 1, wobei Verwalten von Schreib-Cachespeicherdaten und Metadaten durch die Hardware-Steuerkomponente des Schreibcachespeichers Bereitstellen des Schreibcachespeichers in einem redundanten Array eines Stapels von unabhängigen Laufwerken (RAID) beinhaltet, wobei das Schreiben in einen Cachespeicher auf der Grundlage einer Array-ID/einer Array-LBA (Logical Block Address) ausgeführt wird.
  3. Datenspeichersystem nach Anspruch 2, wobei die Hardware-Steuerkomponente des Schreibcachespeichers eine Hardware-Veränderung von CLs (Cachespeicher-Leitungen) bereitstellt.
  4. Datenspeichersystem nach Anspruch 2, wobei die Hardware-Steuerkomponente des Schreibcachespeichers eine CL- (Cachespeicher-Leitungs-) Definition verwendet, um Zustände von Cachespeicher-Leitungen während einer Schreiboperation, einer Leseoperation und einer Auslagerungsoperation zu verfolgen.
  5. Datenspeichersystem nach Anspruch 1, wobei die Hardware-Steuerkomponente des Schreibcachespeichers einen Schreibvorgang in den Speicher-Schreibcachespeicher ausführt, wobei der Schreibvorgang ein Spiegeln der Hardware-Steuerkomponente des Schreibcachespeichers von einem Steuerspeicher (SC) des Schreibcachespeichers in einen Datenspeicher (DS) des Schreibcachespeichers beinhaltet.
  6. Datenspeichersystem nach Anspruch 5, wobei das Spiegeln der Hardware-Steuerkomponente des Schreibcachespeichers von einem Steuerspeicher (SC) des Schreibcachespeichers in einen Datenspeicher (DS) des Schreibcachespeichers ein lokales Spiegeln in den Controller und entferntes Spiegeln in einen Doppel-Controller beinhaltet.
  7. Datenspeichersystem nach Anspruch 1, wobei die Hardware-Steuerkomponente des Schreibcachespeichers einen Lesevorgang von dem Speicher-Schreibcachespeicher ausführt, der einen vollständigen oder teilweisen Lesetreffer von dem Speicher-Schreibcachespeicher beinhaltet.
  8. Datenspeichersystem nach Anspruch 6, wobei die Hardware-Steuerkomponente des Schreibcachespeichers ein Auslagern von dem Speicher-Schreibcachespeicher ausführt, das beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers eine Auslagerungsoperation erzeugt, die aus dem Speicher-Schreibcachespeicher unter Verwendung einer Hashwert-Tabelle und einer zuletzt verwendeten (LRU) Warteschlange ausgesucht wird.
  9. Verfahren zum Implementieren des Managements eines Schreibcachespeichers eines Speicheradapters in einem Datenspeichersystem, wobei das Verfahren aufweist: Bereitstellen eines Controllers, der eine Hardware-Steuerkomponente des Schreibcachespeichers aufweist; Bereitstellen der Hardware-Steuerkomponente des Schreibcachespeichers zum Implementieren der Hardware-Beschleunigung des Schreibcachespeichers; und Bereitstellen der Hardware-Steuerkomponente des Schreibcachespeichers zum Verwalten von Schreib-Cachespeicherdaten und Metadaten im Wesentlichen ohne Verwenden von Firmware.
  10. Verfahren nach Anspruch 9, das Bereitstellen des Speicher-Schreibcachespeichers in einem redundanten Array eines Stapels von unabhängigen Laufwerken (RAID) beinhaltet, wobei ein Schreiben in einen Cachespeicher auf der Grundlage einer Array-ID/einer Array-LBA (Logical Block Address) ausgeführt wird.
  11. Verfahren nach Anspruch 9, das beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers eine Hardware-Veränderung von CLs (Cachespeicher-Leitungen) bereitstellt.
  12. Verfahren nach Anspruch 9, das beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers eine CL- (Cachespeicher-Leitungs-) Definition verwendet und CL-Zustände während einer Schreiboperation, einer Leseoperation und einer Auslagerungsoperation verfolgt.
  13. Verfahren nach Anspruch 9, das beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers einen Schreibvorgang in den Speicher-Schreibcachespeicher ausführt, der beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers ein Spiegeln von einem Steuerspeicher (CS) des Schreibcachespeichers in einen Datenspeicher (DS) des Schreibcachespeichers in dem Controller und ein entferntes Spiegeln in einen Doppel-Controller durchführt.
  14. Verfahren nach Anspruch 9, das beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers einen Lesevorgang von dem den Speicher-Schreibcachespeicher ausführt, der einen vollständigen oder teilweisen Lesetreffer von dem Speicher-Schreibcachespeicher beinhaltet.
  15. Verfahren nach Anspruch 9, das beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers einen Auslagerungsvorgang von dem Speicher-Schreibcachespeicher ausführt, der beinhaltet, dass die Hardware-Steuerkomponente des Schreibcachespeichers eine Auslagerungsoperation erzeugt, die aus dem Speicher-Schreibcachespeicher unter Verwendung einer Hashwert-Tabelle und einer zuletzt verwendeten (LRU) Warteschlange ausgesucht wird.
  16. Gestaltungsstruktur, die in einem maschinenlesbaren Medium verkörpert ist, das in einem Gestaltungsprozess verwendet wird, wobei die Gestaltungsstruktur aufweist: eine Controllerschaltung, die in dem im Gestaltungsprozess verwendeten maschinenlesbaren Medium materiell verkörpert ist, wobei die Controllerschaltung zum Implementieren eines verbesserten Managements eines Schreibcachespeichers in einem Speicheradapter eines Datenspeichersystems dient, wobei die Controllerschaltung aufweist: eine Hardware-Steuerkomponente des Schreibcachespeichers, die eine Hardware-Beschleunigung eines Schreibcachespeichers implementiert; und die Hardware-Steuerkomponente des Schreibcachespeichers die Schreibcachespeicherdaten und Metadaten im Wesentlichen ohne Verwenden von Firmware verwaltet, wobei die Gestaltungsstruktur, wenn sie gelesen und bei der Herstellung eines Halbleiterchips verwendet wird, einen Chip erzeugt, der die Controllerschaltung aufweist.
  17. Gestaltungsstruktur nach Anspruch 16, wobei sich die Gestaltungsstruktur auf dem Speichermedium als ein Datenformat befindet, das für Austauschen von Layout-Daten integrierter Schaltungen verwendet wird.
  18. Gestaltungsstruktur nach Anspruch 16, wobei die Gestaltungsstruktur Prüfdaten-Dateien und/oder Kennzeichnungsdaten und/oder Verifikationsdaten und/oder Entwicklungsspezifikationen enthält.
  19. Gestaltungsstruktur nach Anspruch 16, wobei die Gestaltungsstruktur eine Netzliste aufweist, die die Controllerschaltung beschreibt.
  20. Gestaltungsstruktur nach Anspruch 16, wobei die Hardware-Steuerkomponente des Cachespeichers, die Schreibcachespeicherdaten und Metadaten verwaltet, beinhaltet, dass die Hardware-Steuerkomponente des Cachespeichers in den Speicher-Schreibcachespeicher schreibt und aus dem Speicher-Schreibcachespeicher liest.
DE112016004527.1T 2015-11-09 2016-11-07 Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers Pending DE112016004527T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562252749P 2015-11-09 2015-11-09
US62/252,749 2015-11-09
PCT/IB2016/056677 WO2017081593A1 (en) 2015-11-09 2016-11-07 Implementing hardware accelerator for storage write cache management

Publications (1)

Publication Number Publication Date
DE112016004527T5 true DE112016004527T5 (de) 2018-07-12

Family

ID=58663375

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016004527.1T Pending DE112016004527T5 (de) 2015-11-09 2016-11-07 Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers

Country Status (6)

Country Link
US (13) US9940252B2 (de)
JP (1) JP6842620B2 (de)
CN (1) CN108351832B (de)
DE (1) DE112016004527T5 (de)
GB (1) GB2561108B (de)
WO (1) WO2017081593A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940252B2 (en) * 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for reads with partial read hits from storage write cache
US10191775B2 (en) * 2015-12-20 2019-01-29 Sqream Technologies Ltd. Method for executing queries on data chunks using graphic processing units
GB201709499D0 (en) * 2017-06-15 2017-08-02 Microsoft Technology Licensing Llc Memory management in non-volatile memory
US11151037B2 (en) 2018-04-12 2021-10-19 International Business Machines Corporation Using track locks and stride group locks to manage cache operations
US10606776B2 (en) 2018-04-16 2020-03-31 International Business Machines Corporation Adding dummy requests to a submission queue to manage processing queued requests according to priorities of the queued requests
US10776013B2 (en) 2018-04-27 2020-09-15 International Business Machines Corporation Performing workload balancing of tracks in storage areas assigned to processing units
US10884849B2 (en) 2018-04-27 2021-01-05 International Business Machines Corporation Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
US10831597B2 (en) 2018-04-27 2020-11-10 International Business Machines Corporation Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
US10509723B1 (en) 2018-06-12 2019-12-17 International Business Machines Corporation Expedited cache destage for power interruption in a virtual storage appliance
CN108958656B (zh) * 2018-06-27 2021-01-08 北京计算机技术及应用研究所 基于raid5固态硬盘阵列的动态条带系统设计方法
US10901906B2 (en) 2018-08-07 2021-01-26 International Business Machines Corporation Write data allocation in storage system
US10725738B2 (en) 2018-08-31 2020-07-28 International Business Machines Corporation Adaptive sort accelerator sharing first level processor cache
US10579332B1 (en) 2018-08-31 2020-03-03 International Business Machines Corporation Hardware sort accelerator sharing first level processor cache
US11347653B2 (en) * 2018-08-31 2022-05-31 Nyriad, Inc. Persistent storage device management
CN109274550B (zh) * 2018-09-07 2020-07-31 电信科学技术第五研究所有限公司 一种iSCSI自适应IO队列深度匹配方法
US11645174B2 (en) * 2019-10-28 2023-05-09 Dell Products L.P. Recovery flow with reduced address lock contention in a content addressable storage system
US11803485B2 (en) * 2021-03-11 2023-10-31 International Business Machines Corporation Microservice system with global context cache
JP7232281B2 (ja) 2021-03-29 2023-03-02 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
CN113377288B (zh) * 2021-04-30 2024-03-12 深圳大普微电子科技有限公司 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘
CN117420968B (zh) * 2023-12-19 2024-03-12 苏州元脑智能科技有限公司 存储控制器、存储设备的访问控制方法和存储系统

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4768148A (en) * 1986-06-27 1988-08-30 Honeywell Bull Inc. Read in process memory apparatus
US5542066A (en) 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
US5668948A (en) * 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5581737A (en) * 1994-09-12 1996-12-03 International Business Machines Corporation Method and apparatus for expansion, contraction, and reapportionment of structured external storage structures
US6119209A (en) * 1998-02-03 2000-09-12 International Business Machines Corporation Backup directory for a write cache
US6192450B1 (en) * 1998-02-03 2001-02-20 International Business Machines Corporation Destage of data for write cache
US6134624A (en) * 1998-06-08 2000-10-17 Storage Technology Corporation High bandwidth cache system
US6460122B1 (en) * 1999-03-31 2002-10-01 International Business Machine Corporation System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment
US6574709B1 (en) * 1999-09-30 2003-06-03 International Business Machine Corporation System, apparatus, and method providing cache data mirroring to a data storage system
US6438651B1 (en) * 1999-11-01 2002-08-20 International Business Machines Corporation Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer
US6839827B1 (en) * 2000-01-18 2005-01-04 International Business Machines Corporation Method, system, program, and data structures for mapping logical blocks to physical blocks
US6728818B2 (en) 2001-06-27 2004-04-27 International Business Machines Corporation Dual storage adapters utilizing clustered adapters supporting fast write caches
EP1595363B1 (de) 2001-08-15 2016-07-13 The Board of Governors for Higher Education State of Rhode Island and Providence Plantations Scsi-zu-ip-cache-speichereinrichtung und -verfahren
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US6857045B2 (en) 2002-01-25 2005-02-15 International Business Machines Corporation Method and system for updating data in a compressed read cache
US6928524B2 (en) * 2002-12-05 2005-08-09 International Business Machines Corporation Data processing system with naked cache line write operations
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7380059B2 (en) * 2003-05-16 2008-05-27 Pillar Data Systems, Inc. Methods and systems of cache memory management and snapshot operations
US20050144509A1 (en) * 2003-12-24 2005-06-30 Fernando Zayas Cache search accelerator method
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7360021B2 (en) 2004-04-15 2008-04-15 International Business Machines Corporation System and method for completing updates to entire cache lines with address-only bus operations
JP2006244123A (ja) * 2005-03-03 2006-09-14 Fujitsu Ltd データストレージシステム及びデータストレージ制御装置
WO2007012921A2 (en) 2005-07-27 2007-02-01 Adaptec, Inc. Parity update footprints kept on disk
US7424577B2 (en) * 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
US7395377B2 (en) * 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US8332370B2 (en) * 2006-05-09 2012-12-11 Hewlett-Packard Development Company, L.P. Maintaining commonly named client-specific file content in hard disk drive emulation
US9015501B2 (en) * 2006-07-13 2015-04-21 International Business Machines Corporation Structure for asymmetrical performance multi-processors
CN101110094A (zh) * 2006-07-20 2008-01-23 美国博通公司 硬盘驱动器设计系统及其设计方法
US7555599B2 (en) * 2006-09-06 2009-06-30 International Business Machines Corporation System and method of mirrored RAID array write management
US7996609B2 (en) * 2006-12-20 2011-08-09 International Business Machines Corporation System and method of dynamic allocation of non-volatile memory
CN100492274C (zh) * 2007-08-17 2009-05-27 杭州华三通信技术有限公司 存储控制系统及其处理节点
US7979655B2 (en) 2008-03-04 2011-07-12 International Business Machines Corporation Dynamic optimization of device limits and thresholds in a write cache
CN102150147A (zh) * 2008-07-03 2011-08-10 惠普开发有限公司 存储器服务器
US20100199039A1 (en) * 2009-01-30 2010-08-05 International Business Machines Corporation Systems and Methods for Optimizing Host Reads and Cache Destages in a Raid System
DE112011102487T5 (de) * 2010-07-27 2013-05-29 International Business Machines Corporation Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
US20120079212A1 (en) * 2010-09-23 2012-03-29 International Business Machines Corporation Architecture for sharing caches among multiple processes
US8762609B1 (en) * 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
US8732410B2 (en) * 2010-12-07 2014-05-20 Advanced Micro Devices, Inc. Method and apparatus for accelerated shared data migration
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US8868828B2 (en) 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
US8495259B2 (en) * 2011-05-24 2013-07-23 International Business Machines Corporation Implementing storage adapter performance optimization with hardware chains to select performance path
US8544029B2 (en) * 2011-05-24 2013-09-24 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US8656213B2 (en) * 2011-05-24 2014-02-18 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path
US8495258B2 (en) * 2011-05-24 2013-07-23 International Business Machines Corporation Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA
US8886881B2 (en) * 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
US8516164B2 (en) * 2011-05-24 2013-08-20 International Business Machines Corporation Implementing storage adapter performance optimization with enhanced hardware and software interface
US8990504B2 (en) * 2011-07-11 2015-03-24 International Business Machines Corporation Storage controller cache page management
US8661196B2 (en) 2011-08-15 2014-02-25 International Business Machines Corporation Optimizing locations of data accessed by client applications interacting with a storage system
US8688914B2 (en) * 2011-11-01 2014-04-01 International Business Machines Corporation Promotion of partial data segments in flash cache
US8856479B2 (en) 2012-04-20 2014-10-07 International Business Machines Corporation Implementing storage adapter performance optimization with hardware operations completion coalescence
US9110815B2 (en) * 2012-05-07 2015-08-18 International Business Machines Corporation Enhancing data processing performance by cache management of fingerprint index
US9135173B2 (en) * 2013-01-22 2015-09-15 International Business Machines Corporation Thinly provisioned flash cache with shared storage pool
JP6160173B2 (ja) * 2013-03-28 2017-07-12 富士通株式会社 ストレージ装置、割当解放制御方法及び割当解放制御プログラム
US9361241B2 (en) * 2013-04-03 2016-06-07 International Business Machines Corporation Grouping tracks for destaging
US9298617B2 (en) * 2013-04-16 2016-03-29 International Business Machines Corporation Parallel destaging with replicated cache pinning
US9058267B2 (en) * 2013-06-11 2015-06-16 Avago Technologies General IP Singapore) Pte Ltd I/O path selection
US9235517B2 (en) 2013-08-12 2016-01-12 Globalfoundries Inc. Implementing dynamic cache enabling and disabling based upon workload
US9582426B2 (en) 2013-08-20 2017-02-28 International Business Machines Corporation Hardware managed compressed cache
US10558569B2 (en) * 2013-10-31 2020-02-11 Hewlett Packard Enterprise Development Lp Cache controller for non-volatile memory
CN104503923B (zh) * 2014-11-21 2017-08-11 华中科技大学 一种非对称磁盘阵列高速缓存调度方法
US9569118B2 (en) * 2014-12-30 2017-02-14 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US9940252B2 (en) * 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for reads with partial read hits from storage write cache

Also Published As

Publication number Publication date
US20170132151A1 (en) 2017-05-11
US20170132142A1 (en) 2017-05-11
US20170132146A1 (en) 2017-05-11
US20170132137A1 (en) 2017-05-11
JP6842620B2 (ja) 2021-03-17
CN108351832B (zh) 2022-07-29
GB201808972D0 (en) 2018-07-18
US9940249B2 (en) 2018-04-10
US9940253B2 (en) 2018-04-10
US9940250B2 (en) 2018-04-10
US9940254B2 (en) 2018-04-10
US9940252B2 (en) 2018-04-10
US20170131909A1 (en) 2017-05-11
JP2018537765A (ja) 2018-12-20
US9940258B2 (en) 2018-04-10
US9940251B2 (en) 2018-04-10
US9658968B1 (en) 2017-05-23
US9940257B2 (en) 2018-04-10
US20170132138A1 (en) 2017-05-11
US20170132153A1 (en) 2017-05-11
US20180089097A1 (en) 2018-03-29
US9864695B2 (en) 2018-01-09
US10078595B2 (en) 2018-09-18
US20170132154A1 (en) 2017-05-11
CN108351832A (zh) 2018-07-31
GB2561108A (en) 2018-10-03
GB2561108B (en) 2021-08-11
WO2017081593A1 (en) 2017-05-18
US20170132143A1 (en) 2017-05-11
US9940256B2 (en) 2018-04-10
US9940255B2 (en) 2018-04-10
US20170132145A1 (en) 2017-05-11
US20170132155A1 (en) 2017-05-11
US20170132152A1 (en) 2017-05-11

Similar Documents

Publication Publication Date Title
DE112016004527T5 (de) Implementieren eines Hardware-Beschleunigers für das Management eines Speicher-Schreibcachespeichers
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112012001611B4 (de) Optimierung der Leistung von Speicheradaptern
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE102017113439A1 (de) Abbildungstabellen für Speichervorrichtungen
DE102012201154B4 (de) Transaktionsspeicher
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102012216034A1 (de) Direkte speicheradressierung for solid-state-laufwerke
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112015003536T5 (de) Host-Verwalter nicht flüchtiger Speicher
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
DE112020006443T5 (de) Storage class memory
DE112018005768T5 (de) Copy-source-to-target-verwaltung in einem datenspeichersystem
DE102016004276A1 (de) Gebietspartitionierung in festplatten
DE112020004641T5 (de) Heterogene speichertypen verwendender duplikatkopie-cache

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence