DE112012001611T5 - Optimizing the performance of storage adapters - Google Patents

Optimizing the performance of storage adapters Download PDF

Info

Publication number
DE112012001611T5
DE112012001611T5 DE112012001611.4T DE112012001611T DE112012001611T5 DE 112012001611 T5 DE112012001611 T5 DE 112012001611T5 DE 112012001611 T DE112012001611 T DE 112012001611T DE 112012001611 T5 DE112012001611 T5 DE 112012001611T5
Authority
DE
Germany
Prior art keywords
control block
chain
event queue
hardware
predefined
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112012001611.4T
Other languages
German (de)
Other versions
DE112012001611B4 (en
Inventor
Robert Galbraith
Adrian Gerhard
Brian Bakke
Gowrisankar RADHAKRISHNAN
Donald Ziebarth
Michael Carnevale
Murali Iyer
Rick Weckwerth
Brian Bowles
Mark Moran
Daniel Moertl
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 DE112012001611T5 publication Critical patent/DE112012001611T5/en
Application granted granted Critical
Publication of DE112012001611B4 publication Critical patent/DE112012001611B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/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

Abstract

Ein Verfahren und eine Steuereinheit zum Realisieren der Leistungsoptimierung von Speicheradaptern mit verketteten Hardwareoperationen, die die Interaktionen zwischen Hardware und Firmware minimieren, sowie eine Schaltungsentwurfsstruktur, auf der sich die Schaltung der betreffenden Steuereinheit befindet. Die Steuereinheit weist eine Vielzahl von Hardwaremodulen auf; und einen oder mehrere Prozessoren. Eine Ereigniswarteschlange ist mit mindestens einem Prozessor verbunden und benachrichtigt den Prozessor über eine Vielzahl von vordefinierten Ereignissen. Ein Steuerblock dient zur Steuerung einer Operation in einem der Vielzahl von Hardwaremodulen, wozu auch das Schreiben eines Ereigniswarteschlangeneintrags durch das Hardwaremodul gehört. Eine Vielzahl der Steuerblöcke ist selektiv in einer vordefinierten Kette angeordnet, um das Schreiben von Ereigniswarteschlangeneinträgen auf den Prozessor durch das Hardwaremodul zu minimieren.A method and a control unit for implementing the performance optimization of memory adapters with concatenated hardware operations that minimize the interactions between hardware and firmware, and a circuit design structure on which the circuit of the relevant control unit resides. The control unit has a plurality of hardware modules; and one or more processors. An event queue is connected to at least one processor and notifies the processor of a variety of predefined events. A control block is used to control an operation in one of the plurality of hardware modules, which also includes the writing of an event queue entry by the hardware module. A plurality of the control blocks are selectively arranged in a predefined chain to minimize the writing of event queue entries to the processor by the hardware module.

Description

Gebiet der ErfindungField of the invention

Die vorliegende Erfindung betrifft allgemein das Gebiet der Datenverarbeitung und insbesondere ein Verfahren und eine Steuereinheit zum Realisieren der Leistungsoptimierung von Speicheradaptern mit verketteten Hardwareoperationen, die die Interaktionen zwischen Hardware und Firmware minimieren, sowie eine Schaltungsentwurfsstruktur, auf der sich die Schaltung der betreffenden Steuereinheit befindet.The present invention relates generally to the field of data processing, and more particularly to a method and controller for implementing performance optimization of memory adapters with chained hardware operations that minimize hardware-firmware interactions, and a circuit design structure that houses the circuitry of that particular control unit.

Beschreibung des Stands der TechnikDescription of the Related Art

Speicheradapter werden verwendet, um ein Host-Computersystem mit peripheren Speicher-E/A-Einheiten wie zum Beispiel Festplattenlaufwerken, Halbleiterlaufwerken, Bandlaufwerken, Compact-Disk-Laufwerken und Ähnlichem zu verbinden. Gegenwärtig werden verschiedene schnelle Verbindungssysteme wie zum Beispiel Peripheral Component Interconnect Express (PCIe), Serial Attach SCSI (SAS), Fibre Channel und InfiniBand verwendet, um das Host-Computersystem mit dem Speicheradapter und den Speicheradapter mit den E/A-Speichereinheiten zu verbinden.Storage adapters are used to connect a host computer system to peripheral storage I / O devices such as hard disk drives, solid state drives, tape drives, compact disk drives, and the like. Currently, various fast connection systems such as Peripheral Component Interconnect Express (PCIe), Serial Attach SCSI (SAS), Fiber Channel, and InfiniBand are used to connect the host computer system with the storage adapter and the storage adapter with the I / O storage units.

Schon seit vielen Jahren bilden Festplattenlaufwerke (Hard Disk Drive, HDD) oder rotierende Laufwerke die vorherrschende Speicher-E/A-Einheit zur dauerhaften Speicherung von Computerdaten, die einen Online-Zugriff erfordern. Seit Kurzem finden Halbleiterlaufwerke (Solid State Drive, SSD) wegen ihrer überragenden Leistungsfähigkeit immer größere Verbreitung. Insbesondere sind SSDs normalerweise in der Lage, mehr E/A-Operationen pro Sekunde (I/Os per seconds, IOPS) als HDDs durchzuführen, selbst wenn ihre maximale Übertragungsgeschwindigkeit nicht immer höher als die von HDDs ist.For many years, Hard Disk Drive (HDD) or rotating disk drives have been the predominant storage I / O unit for the permanent storage of computer data requiring online access. Recently, Solid State Drives (SSDs) are gaining in popularity due to their superior performance. In particular, SSDs are usually capable of performing more I / Os per second (IOPS) than HDDs, even though their maximum transmission speed is not always higher than that of HDDs.

US20040162926A1 beschreibt einen Festplattenlaufwerksadapter für ein Computersystem. Ein Zwischenadapter nutzt für den Datenaustausch zwischen dem Zentralprozessor und den Festplattenlaufwerken ein Serial Advanced Technology Attachment (ATA). Der Zwischenadapter realisiert im Wesentlichen eine automatische Festplattenlaufwerksspiegelung über ein unmittelbares RAID 1 oder eine andere Übertragung von Plattendaten über serielles ATA. US20040162926A1 describes a hard disk drive adapter for a computer system. An intermediate adapter uses a Serial Advanced Technology Attachment (ATA) for data exchange between the central processor and the hard disk drives. The intermediate adapter essentially implements an automatic disk drive mirroring via an immediate RAID 1 or other transfer of disk data via serial ATA.

US20100199039 offenbart ein Verfahren, mit dem ein Speicheradapter ein redundantes Array unabhängiger Platten (Redundant Array of Independent Disks, RAID) steuert. Das Verfahren weist das Untersuchen von Leistungskurven eines Speicheradapters mit einem Schreib-Zwischenspeicher auf, das Ermitteln, ob eine Menge von Daten, die in den Schreib-Zwischenspeicher des Speicheradapters gelangt, einen Schwellenwert überschritten hat, und das Umsetzen einer Strategie auf der Grundlage der Ermittlungsoperation. US20100199039 discloses a method by which a storage adapter controls a redundant array of independent disks (RAID). The method includes examining performance curves of a memory adapter with a write buffer, determining whether an amount of data entering the memory buffer's write buffer has exceeded a threshold, and implementing a policy based on the discovery operation ,

Vom Gesichtspunkt des Betriebsverhaltens aus betrachtet würde ein idealer Speicheradapter für das System keinesfalls einen Leistungsengpass bilden. In Wirklichkeit stellen Speicheradapter jedoch oftmals einen Leistungsengpass für das Computersystem dar. Eine Auswirkung der zunehmenden Verbreitung von SSDs besteht darin, dass der Speicheradapter immer häufiger der Leistungsengpass im Computersystem ist.From an operational standpoint, an ideal storage adapter for the system would not be a bottleneck in performance. In reality, however, storage adapters often present a performance bottleneck for the computer system. One effect of the increasing popularity of SSDs is that the storage adapter is becoming an increasingly bottleneck in the computer system.

Es besteht ein Bedarf an einem effizienten Verfahren und einer effizienten Steuereinheit zur Realisierung einer Leistungsoptimierung von Speicheradaptern. Es besteht ein Bedarf an einem derartigen Verfahren und an einer derartigen Steuereinheit, die in Verbindung mit entweder HDDs oder SSDs verwendet werden und die die für eine E/A-Operation benötigte Zeit erheblich verringern, während gleichzeitig die benötigten Funktionen des Speicheradapters für verschiedene Anordnungen des Speicheradapters und der E/A-Einheiten des Speichers, zum Beispiel die Nutzung des Zwischenspeicherns von Schreibvorgängen, Konfigurationen mit zwei Steuereinheiten und Schreib- und Leseoperationen bei einem redundanten Array aus kostengünstigen Laufwerken (RAID), wirksam und effizient aufrechterhalten werden.There is a need for an efficient method and an efficient control unit for implementing performance optimization of memory adapters. There is a need for such a method and controller that are used in conjunction with either HDDs or SSDs, and which significantly reduce the time required for an I / O operation while preserving the required functions of the memory adapter for various arrangements of the present invention Memory adapters and I / O devices of the memory, such as the use of caching of writes, two-controller configurations, and write and read operations on a redundant array of low cost drives (RAID), can be effectively and efficiently maintained.

Die in der folgenden Beschreibung und in den Ansprüchen verwendeten Begriffe „Steuereinheit” und „Steuereinheitenschaltung” sind in einem breiten Sinne so zu verstehen, dass sie einen Eingangs- und Ausgangsadapter (Input/Output Adapter, IOA) und einen IO-RAID-Adapter einschließen, mit denen verschiedene Anordnungen eines Host-Computersystems und peripherer Speicher-E/A-Einheiten, unter anderem Festplattenlaufwerke, Halbleiterlaufwerke, Bandlaufwerke, Compact-Disk-Laufwerke und Ähnliches verbunden sind.The terms "controller" and "controller circuit" as used in the following description and claims are to be understood in a broad sense to include an input and output adapter (IOA) and an IO-RAID adapter to which various arrangements of a host computer system and peripheral storage I / O units, among others, hard disk drives, semiconductor drives, tape drives, compact disk drives and the like are connected.

Kurzdarstellung der ErfindungBrief description of the invention

Die vorliegende Erfindung soll ein Verfahren und eine Steuereinheit zur Realisierung der Leistungsoptimierung von Speicheradaptern mit verketteten Hardwareoperationen bereitstellen, die die Interaktionen zwischen Hardware und Firmware minimieren, sowie eine Schaltungsentwurfsstruktur, auf der sich die Schaltung der betreffenden Steuereinheit befindet. Die vorliegende Erfindung soll ein derartiges Verfahren, eine derartige Steuereinheit und Schaltungsentwurfsstruktur ohne negative Auswirkungen bereitstellen, wobei viele der Nachteile der Anordnungen überwunden werden, die dem Stand der Technik entsprechen.The present invention is intended to provide a method and control unit for realizing the performance optimization of memory adapters with chained hardware operations that minimize the hardware-firmware interactions, and a circuit design structure that houses the circuitry of that control unit. The present invention seeks to provide such a method, control unit and circuit design structure without adverse effects, overcoming many of the disadvantages of the prior art arrangements.

Kurz gesagt sollen ein Verfahren und eine Steuereinheit zur Realisierung der Leistungsoptimierung von Speicheradaptern mit verketteten Hardwareoperationen bereitgestellt werden, die die Interaktionen zwischen Hardware und Firmware minimieren, sowie eine Schaltungsentwurfsstruktur, auf der sich die Schaltung der betreffenden Steuereinheit befindet. Die Steuereinheit weist eine Vielzahl von Hardwaremodulen und einen Prozessor auf. Eine Ereigniswarteschlange, die den Prozessor über eine Vielzahl von vordefinierten Ereignissen benachrichtigt, ist mit dem Prozessor verbunden. Ein Steuerblock dient zur Steuerung einer Operation in einem der Vielzahl von Hardwaremodulen, wozu auch das Schreiben eines Ereigniswarteschlangeneintrags durch das Hardwaremodul gehört. Eine Vielzahl der Steuerblöcke ist selektiv in einer vordefinierten Kette angeordnet, um das Schreiben von Ereigniswarteschlangeneinträgen auf den Prozessor durch das Hardwaremodul zu minimieren. Briefly, it is intended to provide a method and controller for implementing performance optimization of memory adapters with chained hardware operations that minimize hardware-firmware interactions, and a circuit design structure that houses the circuitry of that particular controller. The control unit has a plurality of hardware modules and a processor. An event queue that notifies the processor of a variety of predefined events is connected to the processor. A control block is used to control an operation in one of the plurality of hardware modules, including the writing of an event queue entry by the hardware module. A plurality of the control blocks are selectively arranged in a predefined chain to minimize the writing of event queue entries to the processor by the hardware module.

Gemäß Merkmalen der Erfindung weist jede vordefinierte Kette aufeinanderfolgende Steuerblöcke auf, die in einem zusammenhängenden Speicherbereich gespeichert sind. Jeder Steuerblock kann mit einem beliebigen anderen Steuerblock oder mehreren anderen Steuerblöcken verknüpft sein, die eine Kette von Operationen definieren. Jede vordefinierte Kette definiert Steuerelemente, die auf entsprechende Hardwaremodule angewendet werden. Jede vordefinierte Kette ist änderbar, um Steuerelemente selektiv zu definieren, die auf die betreffenden Hardwaremodule angewendet werden.In accordance with features of the invention, each predefined chain has consecutive control blocks stored in a contiguous memory area. Each control block may be linked to any other control block or to several other control blocks that define a chain of operations. Each predefined chain defines controls that are applied to appropriate hardware modules. Each predefined chain is modifiable to selectively define controls that are applied to the respective hardware modules.

Gemäß Merkmalen der Erfindung weist jeder Steuerblock einen gemeinsamen Kopf einschließlich einer Steuerblockkennung, einer Kettenposition und einer Kennung des nächsten Steuerblocks auf. Die Kettenposition des Steuerblocks kennzeichnet einen Steuerblock als ersten in der Kette, letzten in der Kette, mittleren in der verknüpften Kette oder als eigenständig. Der gemeinsame Kopf weist einen vordefinierten Hardware-Ereigniswarteschlangeneintrag auf, der selektiv geschrieben wird, wenn der Block beendet wird. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag wird geschrieben, wenn ein eigenständiger Steuerblock beendet wird und wenn der letzte Steuerblock in der Kette beendet wird. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag wird geschrieben, wenn ein Steuerblock mit einem Fehler fehlschlägt.According to features of the invention, each control block has a common header including a control block identifier, a chain position and an identifier of the next control block. The control block's chain position identifies a control block as first in the chain, last in the chain, middle in the linked chain, or as stand-alone. The shared header has a predefined hardware event queue entry that is selectively written when the block is terminated. The predefined hardware event queue entry is written when a standalone control block terminates and when the last control block in the chain terminates. The predefined hardware event queue entry is written when a control block fails with an error.

Gemäß Merkmalen der Erfindung wird die vordefinierte Kette der Vielzahl der Steuerblöcke ohne jegliche Firmware-Interaktion zwischen der anfänglichen Einrichtung und der Beendigung der Reihe von Operationen ausgeführt. Die vordefinierte Kette minimiert die Interaktion zwischen den Hardwaremodulen und dem Prozessor und stellt eine erhebliche Verringerung des Codepfades für Einrichtung und Beendigung jeder Host-Operation bereit.In accordance with features of the invention, the predefined chain of the plurality of control blocks is executed without any firmware interaction between the initial device and the completion of the series of operations. The predefined chain minimizes the interaction between the hardware modules and the processor and provides a significant reduction in the code path for establishing and terminating each host operation.

Kurzbeschreibung der ZeichnungenBrief description of the drawings

Im Folgenden werden Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die beigefügten Zeichnungen beispielhaft beschrieben, wobei:Embodiments of the present invention will now be described by way of example with reference to the accompanying drawings, in which:

1 ein schematisches Blockschaltbild ist, das ein beispielhaftes System zur Realisierung der Leistungsoptimierung von Speicheradaptern mit verketteten Hardwareoperationen veranschaulicht, wodurch gemäß der bevorzugten Ausführungsform Interaktionen zwischen Hardware und Software minimiert werden; 1 12 is a schematic block diagram illustrating an exemplary system for implementing performance optimization of memory adapters with chained hardware operations, thereby minimizing hardware-software interactions in accordance with the preferred embodiment;

2A beispielhafte verkettete Hardwareoperationen veranschaulicht, wodurch gemäß der bevorzugten Ausführungsform Interaktionen zwischen Hardware und Software minimiert werden; 2A illustrative chained hardware operations thereby minimizing hardware-software interactions according to the preferred embodiment;

2B Hardware- und Firmware-Interaktionen eines herkömmlichen Speicheradapters nach dem Stand der Technik veranschaulicht; 2 B Illustrates hardware and firmware interactions of a conventional prior art memory adapter;

3A eine beispielhafte Struktur eines Steuerspeichers (Control Store, CS) mit einer Vielzahl aufeinanderfolgender Steuerblöcke gemäß der bevorzugten Ausführungsform veranschaulicht; 3A illustrates an example structure of a control store (CS) having a plurality of consecutive control blocks according to the preferred embodiment;

3B eine erweiterte Hardware- und Firmware-Schnittstelle (HW- bzw. FW-Schnittstelle) mit einer Vielzahl beispielhafter Hardware-Arbeitswarteschlangen (HW-Arbeitswarteschlangen) und einer HW-Ereigniswarteschlange veranschaulicht, die gemäß der bevorzugten Ausführungsform im Steuerspeicher (CS) gespeichert sind; 3B an enhanced hardware and firmware (HW) interface with a plurality of exemplary hardware work queues (HW work queues) and a HW event queue stored in the control store (CS) according to the preferred embodiment;

4A einen beispielhaften gemeinsamen Kopf eines Steuerblocks gemäß der bevorzugten Ausführungsform veranschaulicht; 4A illustrates an exemplary common header of a control block according to the preferred embodiment;

4B eine Vielzahl beispielhafter Steuerblöcke gemäß der bevorzugten Ausführungsform veranschaulicht; 4B illustrate a variety of exemplary control blocks according to the preferred embodiment;

die 5A und 5B einen Ablauf von Operationen der Hardwarelogik und einen Ablaufplan wiedergeben, die beispielhafte Operationen veranschaulichen, die von einer vordefinierten Kette einer Vielzahl der Steuerblöcke durchgeführt werden, die selektiv angeordnet sind, um eine beispielhafte normale RAID-5-Paritätsaktualisierung gemäß der bevorzugten Ausführungsform zu realisieren;the 5A and 5B describe a flow of hardware logic operations and a flowchart illustrating the exemplary operations illustrate that are performed by a predefined chain of a plurality of the control blocks selectively arranged to realize an exemplary normal RAID 5 parity update according to the preferred embodiment;

die 6A und 6B einen Ablauf von Operationen der Hardwarelogik und einen Ablaufplan wiedergeben, die beispielhafte Operationen veranschaulichen, die von einer vordefinierten Kette einer Vielzahl der Steuerblöcke durchgeführt werden, die selektiv angeordnet sind, um eine beispielhafte normale RAID-6-Paritätsaktualisierung gemäß der bevorzugten Ausführungsform zu realisieren;the 6A and 6B depicting a flow of hardware logic operations and a flowchart illustrating exemplary operations performed by a predefined chain of a plurality of the control blocks selectively arranged to implement an exemplary normal RAID 6 parity update according to the preferred embodiment;

die 7A und 7B einen Ablauf von Operationen der Hardwarelogik und einen Ablaufplan wiedergeben, die beispielhafte Operationen veranschaulichen, die von einem Paar vordefinierter Ketten einer Vielzahl der Steuerblöcke durchgeführt werden, die selektiv angeordnet sind, um einen beispielhaften RAID-5/6-Stripe-Schreibvorgang (Stripe = einheitenübergreifend gespeicherter Datenblock) mit Cache-Zwischenspeicher gemäß der bevorzugten Ausführungsform zu realisieren; undthe 7A and 7B illustrate a flow of hardware logic operations and a flow chart illustrating exemplary operations performed by a pair of predefined chains of a plurality of the control blocks selectively arranged to perform an exemplary RAID 5/6 stripe write (Stripe) stored data block) with cache buffer according to the preferred embodiment; and

8 ein Ablaufplan eines Entwurfsprozesses ist, der beim Entwurf, bei der Fertigung und/oder beim Test von Halbleitern verwendet wird. 8th is a flowchart of a design process used in the design, fabrication and / or testing of semiconductors.

Ausführliche Beschreibung der bevorzugten AusführungsformenDetailed Description of the Preferred Embodiments

In der folgenden ausführlichen Beschreibung von Ausführungsformen der Erfindung wird Bezug auf die beigefügten Zeichnungen genommen, die beispielhafte Ausführungsformen veranschaulichen, mit deren Hilfe die Erfindung in die Praxis umgesetzt werden kann. Es versteht sich, dass andere Ausführungsformen genutzt und strukturelle Änderungen vorgenommen werden können, ohne vom Schutzbereich der Erfindung abzuweichen.In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings, which illustrate exemplary embodiments by means of which the invention may be practiced. It is understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the invention.

Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. Die hier verwendeten Einzahlformen „ein/eine” und „der/die/das” schließen auch die Pluralformen ein, sofern im Kontext nicht ausdrücklich etwas anderes angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf bzw. „aufweisen/aufweisend” bei Verwendung in der vorliegenden Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.The terminology used herein is intended solely to describe particular embodiments and is not intended to limit the invention. The singular forms "a / a" and "the" used here also include plurals, unless expressly stated otherwise in the context. It is further understood that the terms "having / having" as used in the present specification refer to the presence of specified features, integers, steps, operations, elements and / or components, but the presence or addition of a or one or more other features, integers, steps, operations, elements, components and / or groups thereof.

Gemäß Merkmalen der Erfindung werden ein Verfahren und eine Steuereinheit bereitgestellt, die ein verbessertes Betriebsverhalten und eine Leistungsoptimierung von Speicheradaptern mit verketteten Hardwareoperationen realisieren, die die Interaktionen zwischen Hardware und Firmware minimieren, sowie eine Schaltungsentwurfsstruktur, auf der sich die Schaltung der betreffenden Steuereinheit befindet.In accordance with features of the invention, a method and controller are provided that realize improved performance and performance optimization of memory adapters with chained hardware operations that minimize hardware-firmware interactions, and a circuit design structure that houses the circuitry of that particular controller.

Unter Bezugnahme auf die Zeichnungen ist in 1 ein Eingangs-/Ausgangsadapter bzw. eine Eingangs-/Ausgangssteuereinheit gemäß der bevorzugten Ausführungsform gezeigt, der bzw. die allgemein mit dem Bezugszeichen 100 bezeichnet ist. Die Steuereinheit 100 weist einen Halbleiterchip 102 auf, der mit mindestens einem Prozessorkomplex 104 verbunden ist, der einen oder mehrere Prozessoren oder eine oder mehrere Zentralprozessoreinheiten (Central Processor Units, CPUs) 106 aufweist. Die Steuereinheit 100 weist einen Steuerspeicher (CS) 108 wie zum Beispiel einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) nahe der CPU 106 auf, der Steuerblock-, Arbeitswarteschlangen- und Ereigniswarteschlangen-Speicher bereitstellt. Die Steuereinheit 100 weist einen nichtflüchtigen Sicherungsspeicher (NV-Sicherungsspeicher) 110 und einen Datenspeicher (DS) 112 auf, die Daten- und Arbeitspuffer zur Einrichtung und Verarbeitung von Steuerblöcken bereitstellen, die zum Beispiel durch Hardware ausgeführt werden. Die Steuereinheit 100 weist einen nichtflüchtigen Direktzugriffsspeicher (Non-volatile Random Access Memory, NVRAM) 114 und einen Flash-Speicher 116 auf.With reference to the drawings, in 1 an input / output adapter and / or an input / output control unit according to the preferred embodiment, shown generally by the reference numeral 100 is designated. The control unit 100 has a semiconductor chip 102 on that with at least one processor complex 104 associated with one or more processors or one or more central processor units (CPUs). 106 having. The control unit 100 has a control store (CS) 108 such as dynamic random access memory (DRAM) near the CPU 106 which provides control block, work queue, and event queue storage. The control unit 100 has a non-volatile backup storage (NV backup storage) 110 and a data store (DS) 112 which provide data and work buffers for setting up and processing control blocks that are executed by, for example, hardware. The control unit 100 has a nonvolatile random access memory (NVRAM) 114 and a flash memory 116 on.

Gemäß Merkmalen der Erfindung realisiert die Steuereinheit 100 Verfahren, die in einzigartiger Weise Hardwareoperationen miteinander verketten, um Interaktionen zwischen Hardware und Firmware mit dem Ziel zu minimieren, die Leistung zu maximieren. Die Hardwareverkettung (HW-Verkettung) ist völlig uneinheitlich; asynchron, erfordert keine Synchronisierung oder festgelegte Zeitfenster für Operationen; weist eine völlig freie Form auf, wobei beliebige HW-Module mit beliebigen HW-Modulen verkettet sind und eine Verarbeitungsrichtlinie in der Firmware (FW) HW-Geschwindigkeiten zuteilt.According to features of the invention, the control unit realizes 100 Techniques that uniquely concatenate hardware operations to minimize hardware-firmware interactions with the goal of maximizing performance. The hardware chaining (HW chaining) is completely uneven; asynchronous, requires no synchronization or fixed time window for operations; has a completely free form with any HW modules concatenated with arbitrary HW modules and a processing policy in firmware (FW) allocating HW speeds.

Der Steuergeräte-Halbleiterchip 102 weist eine Vielzahl von Hardwaremodulen 120 auf, zum Beispiel ein Hardware-Direktspeicherzugriffsmodul (HDMA-Modul) (HDMA = Hardware Direct Memory Access) 120, ein SIS-Modul 120, ein Zuordnungs- und Zuordnungsaufhebungsmodul 120, ein XOR- bzw. SOP-Modul (SOP = Sum of Products, Summe der Produkte) 120, ein SAS-Modul (SAS = Serial Attach SCSI) 120, ein Modul zum Setzen/Aktualisieren/Löschen/Spiegeln des Speicherbedarfs („S/U/C/M FP”-Modul) (S/U/C/M FP = Set/Update/Clear/Mirror Footprint) 120 und ein Komprimierungs- und Dekomprimierungsmodul (COMP/DECOMP-Modul) 120.The ECU semiconductor chip 102 has a variety of hardware modules 120 on, for example, a Hardware Direct Memory Access (HDMA) Module (HDMA). 120 , an SIS module 120 , an assignment and assignment cancellation module 120 , an XOR or SOP module (SOP = sum of products, sum of products) 120 , a SAS module (SAS = Serial Attach SCSI) 120 , a module for setting / updating / deleting / mirroring the memory requirement ("S / U / C / M FP" module) (S / U / C / M FP = Set / Update / Clear / Mirror Footprint) 120 and a compression and decompression module (COMP / DECOMP module) 120 ,

Gemäß Merkmalen der Erfindung wird der größte Teil der herkömmlichen Firmwarefunktion auf HW-Operationen verlagert, die durch die Hardwaremodule 120 durchgeführt werden. Die Hardwaremodule 120 sind völlig uneinheitlich und durch Verkettung beliebiger Module mit beliebigen anderen aktivierten Modulen voll erweiterbar.In accordance with features of the invention, most of the conventional firmware functionality relocates to HW operations performed by the hardware modules 120 be performed. The hardware modules 120 are completely non-uniform and can be fully expanded by linking any modules with any other activated modules.

Wie gezeigt weist der Steuergeräte-Halbleiterchip 102 eine entsprechende PCIe-Schnittstelle (PCIe = Peripheral Component Interconnect Express) 128 mit einer schnellen PCIe-Systemverbindung zwischen dem Steuergeräte-Halbleiterchip 102 und dem Prozessorkomplex 104 und eine SAS-Steuereinheit 130 mit einer schnellen SAS-Systemverbindung zwischen dem Steuergeräte-Halbleiterchip 102 und jeder der Vielzahl von Speichereinheiten 132 wie zum Beispiel den Festplattenlaufwerken (HDDs) oder rotierenden Laufwerken 132 und Halbleiterlaufwerken (SSDs) 132 auf. Ein Host-System 134 ist über eine schnelle PCIe-Systemverbindung mit der Steuereinheit 100 verbunden. As shown, the controller semiconductor chip 102 a corresponding PCIe interface (PCIe = Peripheral Component Interconnect Express) 128 with a fast PCIe system connection between the ECU semiconductor chip 102 and the processor complex 104 and a SAS control unit 130 with a fast SAS system connection between the ECU semiconductor chip 102 and each of the plurality of storage units 132 such as hard disk drives (HDDs) or rotating drives 132 and solid state drives (SSDs) 132 on. A host system 134 is via a fast PCIe system connection to the control unit 100 connected.

Beispielsweise speichert DS 112, 8 GB DRAM, flüchtige oder nichtflüchtige Seiten mit Daten wie zum Beispiel eine 4-kB-Seite von Daten oder 8·528 Bytes nutzbare Daten oder 64 CAS-Zugriffe (66-Byte), eine 32-Byte-Cachezeile (Cache Line, CL), wobei sich eine CL für jede nichtflüchtige Seite des Schreibcache in einem zusammenhängenden Bereich des DS und einen 32-Byte-Speicherbedarf zur Paritätsaktualisierung (Parity Update Footprint, PUFP) einem zusammenhängenden Bereich des DS nach dem CL-Bereich befinden.For example, DS stores 112 , 8 GB DRAM, volatile or non-volatile pages containing data such as a 4 kB page of data or 8 x 528 bytes of usable data or 64 CAS accesses (66 bytes), a 32-byte cache line (cache line, CL), where there is a CL for each non-volatile page of the write cache in a contiguous area of the DS and a 32-byte parity update footprint (PUFP) memory space on a contiguous area of the DS after the CL area.

Der Steuerspeicher (Control Store, CS) 108 speichert andere Strukturen und Steuerblöcke wie in den 3A und 3B und in den 4A und 4B veranschaulicht und unter Bezugnahme auf diese Figuren beschrieben. Der Steuerspeicher (CS) 108 weist einen Steuerblockpufferbereich (CB-Puffer) (CB = Control Block) mit zum Beispiel 8 MB Größe und 8 MB Ausrichtung, eine HW-Ereigniswarteschlange mit zum Beispiel 4 MB Größe und 4 MB Ausrichtung auf, die 1 Million Einträge von je 4 Byte bereitstellt, eine SIS-SENDEN-Warteschlange mit zum Beispiel 64 kB Größe und 64 kB Ausrichtung, die 4000 Einträge von je 16 Byte bereitstellt, eine „Liste freier Indizes, flüchtig” und eine „Liste freier Indizes, nichtflüchtig” mit zum Beispiel je 4 MB Größe und 4 MB Ausrichtung, die 1 Million Einträge von je 4 Byte bereitstellen, HW-Arbeitswarteschlangen (HW-WQ) (WQ = Work Queue) mit zum Beispiel 512 kB Größe und 512 kB Ausrichtung, die 32 WQ von je 16 kB bereitstellen. Andere Strukturen im CS 108 weisen Seitentabellenindex-Listen von zum Beispiel 4 B und 1 bis N Einträge von je 4 B auf, die sich an einer beliebigen Stelle im 256-MB-Raum befinden können und sich oftmals innerhalb des CS-Pufferbereiches von 8 MB befinden, CS-Zielpuffer von 128 B Ausrichtung, bei denen jeder 1 kB beträgt und sich an einer beliebigen Stelle in dem 256-MB-Raum befinden kann, und einen HW-CB von 64 B Ausrichtung, die sich innerhalb des CS-Pufferbereiches von 8 MB befinden, wie zum Beispiel in 3A veranschaulicht.The control store (Control Store, CS) 108 stores other structures and control blocks as in the 3A and 3B and in the 4A and 4B illustrated and described with reference to these figures. The control store (CS) 108 has a control block buffer area (CB) (CB) with, for example, 8 MB size and 8 MB alignment, a HW event queue with, for example, 4 MB size and 4 MB alignment, which provides 1 million entries of 4 bytes each , a SIS SEND queue of, for example, 64KB size and 64KB alignment, providing 4000 entries of 16 bytes each, a "list of free indices, volatile" and a "list of free indices, non-volatile" with, for example, 4MB each Size and 4 MB alignment, which provide 1 million entries of 4 bytes each, Work Queue (HQ) work queue (WQ) with, for example, 512 kB size and 512 kB alignment providing 32 WQ of 16 kB each. Other structures in the CS 108 For example, page table index lists of, for example, 4 B and 1 to N have entries of 4 B each, which may be anywhere in the 256 MB space and are often within the CS buffer area of 8 MB, CS destination buffers of 128B alignment, where each is 1KB and can be anywhere in the 256MB space, and an HW-CB of 64B alignment that is within the CS buffer area of 8MB, such as for example in 3A illustrated.

Unter Bezugnahme auf 2A sind dort beispielhafte verkettete und allgemein mit dem Bezugszeichen 200 bezeichnete Hardwareoperationen veranschaulicht, die gemäß der bevorzugten Ausführungsform Interaktionen zwischen Hardware und Software minimieren. Die verketteten Hardwareoperationen 200 weisen eine Kette 202 einer Vielzahl aufeinanderfolgender Operationen durch die Hardware (HW) 204 mit einer anfänglichen Interaktion mit Code oder Firmware (FW) 206 bei der anfänglichen Einrichtung und einer weiteren Interaktion mit der FW 208 bei Beendigung der Aufeinanderfolge oder Kette 202 von Operationen durch die HW 204 auf.With reference to 2A There are exemplary chained and generally with the reference numeral 200 illustrates hardware operations that minimize interactions between hardware and software, in accordance with the preferred embodiment. The chained hardware operations 200 have a chain 202 a multitude of consecutive operations by the hardware (HW) 204 with an initial interaction with code or firmware (FW) 206 at the initial setup and further interaction with the FW 208 upon completion of the sequence or chain 202 of operations by the HW 204 on.

Gemäß Merkmalen der Erfindung gehören zu den Arten verketteter Operationen die Operationen „Puffer zuordnen”, „Pufferzuordnung aufheben”, „SAS-Lesen-XOR”, „SAS schreiben” und „Speicherbedarf zur Paritätsaktualisierung (PUFP) setzen”, „PUFP löschen”, „Gespiegeltes Schreiben eines PUFP auf einen entfernt angeordneten Adapter”, „Gespiegeltes Schreiben von Cache-Zwischenspeicherdaten auf einen entfernt angeordneten Adapter” und dergleichen. Das Folgende ist ein Beispiel verketteter Operationen bei einem RAID-5-Schreibvorgang: a) Puffer zuordnen, b) Lesen-XOR von Daten, c) Setzen des PUFP, d) Schreiben von Daten, e) Paritätsspeicherbedarf aktualisieren, f) Lesen-XOR der Parität, g) Schreiben der Parität, h) Löschen des PUFP und i) Pufferzuordnung aufheben.According to features of the invention, the types of concatenated operations include the operations "allocate buffer", "unblock buffer", "read SAS read XOR", "write SAS" and "set memory requirement for parity update (PUFP)", "delete PUFP", "Mirrored Writing of a PUFP to a Remote Adapter", "Mirrored Writing of Cache Buffer Data to a Remote Adapter," and the like. The following is an example of concatenated operations in a RAID 5 write: a) allocating buffers, b) reading XOR of data, c) setting the PUFP, d) writing data, e) updating parity storage needs, f) reading XOR parity, g) write the parity, h) delete the PUFP and i) cancel buffer allocation.

2B veranschaulicht Interaktionen zwischen der Hardware und Firmware eines dem Stand der Technik entsprechenden Speicheradapters, zu denen bei jeder der mehreren IOA-Operationen die Interaktion zwischen einem Code oder Firmware (FW) und Hardware gehört. Wie in 2A gezeigt, verringern die verketteten Hardwareoperationen 200 der Erfindung die Länge des Firmwarepfades erheblich, der bei einer EIA-Operation erforderlich ist. Die verketteten Hardwareoperationen 200 der Erfindung sind so angeordnet, dass sie Interaktionen zwischen Hardware und Firmware minimieren, um die Leistung zu maximieren. 2 B FIG. 4 illustrates interactions between the hardware and firmware of a prior art memory adapter, which in each of the multiple IOA operations involves interaction between a code or firmware (FW) and hardware. As in 2A shown, reduce the chained hardware operations 200 The invention significantly reduces the length of the firmware path required in an EIA operation. The chained hardware operations 200 of the invention are arranged to minimize interactions between hardware and firmware to maximize performance.

Unter Bezugnahme auf 3A ist dort eine allgemein mit dem Bezugszeichen 300 bezeichnete Steuerspeicherstruktur (CS-Struktur) gemäß der bevorzugten Ausführungsform gezeigt. Die CS-Struktur weist vordefinierte Felder auf, zu denen ein Offset 302, eine Größe 304 und eine Definition 306 gehören. Die CS-Struktur 300 weist eine Vielzahl aufeinander folgender Steuerblöcke (HW-CB) Nr. 1 bis 17, 308, auf, die zum Beispiel selektiv in einer vordefinierten Kette angeordnet sind, um die Interaktion zwischen Hardware und Firmware zu minimieren, sodass die Hardwaremodule 120 nur ein Minimum an Ereigniswarteschlangeneinträgen auf den Prozessorkomplex 104 schreiben.With reference to 3A there is a generally by the reference numeral 300 designated control storage structure (CS structure) according to the preferred embodiment shown. The CS structure has predefined fields, including an offset 302 , a size 304 and a definition 306 belong. The CS structure 300 has a plurality of sequential control blocks (HW-CB) Nos. 1 to 17, 308 , which are selectively arranged in a predefined chain, for example, to minimize the interaction between hardware and firmware, so that the hardware modules 120 only a minimum of event queue entries to the processor complex 104 write.

Gemäß Merkmalen der Erfindung weist jede vordefinierte Kette aufeinanderfolgende Steuerblöcke 308 auf, die in einem zusammenhängenden Speicher CS 108 gespeichert sind, wie in 3A veranschaulicht. Jede vordefinierte Kette definiert Steuerelemente, die auf entsprechende Hardwaremodule 120 angewendet werden. Jeder Steuerblock 308 kann mit einem beliebigen anderen Steuerblock 308 verknüpft sein, der eine Kette von Operationen definiert. Zum Beispiel ist jeder Puffer in der CS-Struktur 2 kB groß. Die FW übergibt diese Puffer an die HW, indem sie CS-Indizes auf die globale Hardware-Arbeitswarteschlange schreibt. Die HW gibt eine Reaktion an die FW zurück, indem sie auf die HW-Ereigniswarteschlange schreibt, wie in 3B veranschaulicht und unter Bezugnahme darauf beschrieben.According to features of the invention, each predefined chain has successive ones control blocks 308 on that in a contiguous memory CS 108 are stored as in 3A illustrated. Each predefined chain defines controls based on corresponding hardware modules 120 be applied. Every control block 308 can with any other control block 308 be linked, which defines a chain of operations. For example, each buffer in the CS structure is 2 kb in size. The FW passes these buffers to the HW by writing CS indices to the global hardware work queue. The HW returns a response to the FW by writing to the HW event queue, as in 3B illustrated and described with reference thereto.

Unter Bezugnahme auf 3B ist dort eine allgemein mit dem Bezugszeichen 350 bezeichnete Schnittstelle zwischen Hardware (HW) und Firmware (FW) gemäß der bevorzugten Ausführungsform gezeigt. Die HW/FW-Schnittstelle 350 weist einen HW-Block 352 mit der Vielzahl von HW-Modulen 120 in dem Steuereinheitenchip 102 und einen Firmware-Block 354 auf, der mit der CPU 106 im Prozessorkomplex 104 bereitgestellt wird. Die HW/FW-Schnittstelle 350 weist eine globale Hardware-Arbeitswarteschlange 356 wie zum Beispiel ein kleines eingebettetes Array im Steuereinheitenchip 102 auf. Die globale HW-Arbeitswarteschlange 356 ist mit jeder einer Vielzahl von Hardware-Arbeitswarteschlangen 358 verbunden.With reference to 3B there is a generally by the reference numeral 350 designated interface between hardware (HW) and firmware (FW) according to the preferred embodiment shown. The HW / FW interface 350 has a HW block 352 with the variety of HW modules 120 in the controller chip 102 and a firmware block 354 on that with the cpu 106 in the processor complex 104 provided. The HW / FW interface 350 has a global hardware work queue 356 such as a small embedded array in the controller chip 102 on. The global HW work queue 356 is with each of a variety of hardware work queues 358 connected.

Jede der Vielzahl von Hardware-Arbeitswarteschlangen 358 wird auf entsprechende Hardwaremodule 1 bis N 120 im Chip 102 angewendet. Eine HW-Ereigniswarteschlange 360 ist mit der Firmware (FW) 354 verbunden und stellt dem Prozessorkomplex 104 Abschlussergebnisse bereit. Ein Arbeitswarteschlangenmanager 362 im Steuereinheitenchip 102 ist mit jeder der Vielzahl von Hardware-Arbeitswarteschlangen 358 und jedem der Vielzahl von Hardwaremodulen 1 bis N 120 sowie mit der HW-Ereigniswarteschlange 360 verbunden. Die globale HW-Arbeitswarteschlange 356 weist einen Warteschlangeneingang auf, der mit der FW 354 im Prozessorkomplex 104 verbunden ist, und einen Warteschlangeneingang, der mit dem Arbeitswarteschlangenmanager 362 im Steuereinheitenchip 102 verbunden ist. Der Arbeitswarteschlangenmanager 362 und die globale HW-Arbeitswarteschlange 356 stellen der HW-Ereigniswarteschlange 360 einen Eingang bereit. Die HW-Arbeitswarteschlangen 358 und die HW-Ereigniswarteschlange 360 sind im Steuerspeicher (CS) 108 gespeichert.Each of the variety of hardware work queues 358 is to appropriate hardware modules 1 to N 120 in the chip 102 applied. A HW event queue 360 is with the firmware (FW) 354 connected and puts the processor complex 104 Final results ready. A work queue manager 362 in the control unit chip 102 is with each of the variety of hardware work queues 358 and each of the plurality of hardware modules 1 to N 120 and the HW event queue 360 connected. The global HW work queue 356 has a queuing input associated with the FW 354 in the processor complex 104 is connected, and a queue input that is connected to the work queue manager 362 in the control unit chip 102 connected is. The work queue manager 362 and the global HW work queue 356 set the HW event queue 360 an entrance ready. The HW work queues 358 and the HW event queue 360 are in the control store (CS) 108 saved.

Die Hardwaremodule 120 sind so ausgelegt, dass sie Daten aus dem Host-System 134 per DMA auf die Steuereinheit 100 abrufen. Das HDMA-Modul 120 ruft Daten aus dem Host-System 134 per DMA auf den CS 108 oder den DS 112 ab und benachrichtigt anschließend die FW über die HW-Ereigniswarteschlange 360. Die Hardwaremodule 120 sind so ausgelegt, dass sie einige Funktionen parallel ausführen, zum Beispiel 8 oder 12 SAS-Module 120, 4 Host-DMA-Module 120 und dergleichen. Die Hardwaremodule 120 sind so ausgelegt, dass sie bei unterschiedlichen Schritten derselben Funktion mehrere Operationen ausführen, zum Beispiel ruft ein HDMA-Modul 120 Daten vom Host-System 134 zum selben Zeitpunkt ab, zu dem ein anderes HDMA-Modul 120 per DMA andere Daten auf das Host-System 134 abruft.The hardware modules 120 are designed to receive data from the host system 134 via DMA to the control unit 100 recall. The HDMA module 120 gets data from the host system 134 by DMA on the CS 108 or the DS 112 and then notifies the FW of the HW event queue 360 , The hardware modules 120 are designed to perform some functions in parallel, for example, 8 or 12 SAS modules 120 , 4 host DMA modules 120 and the same. The hardware modules 120 are designed to perform multiple operations on different steps of the same function, for example calling an HDMA module 120 Data from the host system 134 at the same time as another HDMA module 120 via DMA other data on the host system 134 retrieves.

Gemäß Merkmalen der Erfindung weist jeder Steuerblock 308 einen gemeinsamen Kopf einschließlich einer Steuerblockkennung, einer Kettenposition und einer Kennung des nächsten Steuerblocks auf. Die Kettenposition des Steuerblocks kennzeichnet einen Steuerblock als ersten in der Kette, letzten in der Kette, mittleren in der verknüpften Kette oder als eigenständig. Der gemeinsame Kopf weist einen vordefinierten Hardware-Ereigniswarteschlangeneintrag auf, der selektiv geschrieben wird, wenn der Block beendet wird. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag wird geschrieben, wenn ein eigenständiger Steuerblock beendet wird und wenn der letzte Steuerblock in der Kette beendet wird. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag wird geschrieben, wenn der Steuerblock mit einem Fehler fehlschlägt.According to features of the invention, each control block 308 a common header including a control block identifier, a chain position and an identifier of the next control block. The control block's chain position identifies a control block as first in the chain, last in the chain, middle in the linked chain, or as stand-alone. The shared header has a predefined hardware event queue entry that is selectively written when the block is terminated. The predefined hardware event queue entry is written when a standalone control block terminates and when the last control block in the chain terminates. The predefined hardware event queue entry is written if the control block fails with an error.

Unter Bezugnahme auch auf 4A ist dort ein allgemein mit dem Bezugszeichen 400 bezeichneter üblicher Kopf des Steuerblocks 308 gemäß der bevorzugten Ausführungsform gezeigt. Jeder Steuerblockkopf 400 weist ein Byte 0, 402, auf, zum Beispiel eine Reserviert-Kennung oder Laufwerkskennung.With reference also to 4A there is a generally by the reference numeral 400 designated common head of the control block 308 shown in the preferred embodiment. Each control block header 400 has a byte 0, 402 , for example, a reserved identifier or drive identifier.

Jeder Steuerblockkopf 400 weist ein Byte 1, 404, auf, zum Beispiel „HW-Ereigniswarteschlangeneintrag selektiv schreiben”. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag 404 wird selektiv geschrieben, wenn der Block beendet wird. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag 404 wird geschrieben, wenn ein eigenständiger Steuerblock beendet wird oder wenn ein letzter Steuerblock in der Kette beendet wird. Der vordefinierte Hardware-Ereigniswarteschlangeneintrag 404 wird geschrieben, wenn der Steuerblock mit einem Fehler fehlschlägt.Each control block header 400 has a byte 1, 404 , for example, "selectively write HW event queue entry". The predefined hardware event queue entry 404 is selectively written when the block is terminated. The predefined hardware event queue entry 404 is written when a self-contained control block is terminated or when a last control block in the chain is terminated. The predefined hardware event queue entry 404 is written if the control block fails with an error.

Jeder Steuerblockkopf 400 weist ein Byte 2, 406, einschließlich eines „HW-Ereigniswarteschlangeneintrag aktualisieren” und einer Kennung (ID) 406 des nächsten Steuerblockmoduls auf. Die in 3B gezeigte HW-Ereigniswarteschlange 360 ist ein First-In-First-Out-Ringpuffer (FIFO) im CS 108. Die HW-Ereigniswarteschlange 360 ist an einer 4-MB-Adressgrenze ausgerichtet und 4 MB groß. Diese Größe ermöglicht der Warteschlange, den Verlauf der letzten 1 Millionen Ereignisse aufzunehmen. Zu jedem Ereignis schreibt die HW 4-Byte-Einträge 406 in die HW-Ereigniswarteschlange. Die FW liest die Einträge in regelmäßigen Abständen und entfernt sie aus der HW-Ereigniswarteschlange.Each control block header 400 has a byte 2, 406 including a "Update HW event queue entry" and an identifier (ID) 406 of the next control block module. In the 3B HW event queue shown 360 is a first-in-first-out ring buffer (FIFO) in the CS 108 , The HW event queue 360 is aligned with a 4 MB address boundary and is 4 MB in size. This size allows the queue to record the history of the last 1 million events. For each event, the HW writes 4-byte entries 406 in the HW event queue. The FW reads the entries periodically and removes them from the HW event queue.

Jeder Steuerblockkopf 400 weist ein Byte 3, 408, einschließlich einer Steuerblockmodul-Kennung und einer Kettenposition 408 auf, und er weist eine Kopfadresse (ADR) 410 auf. Die Kettenposition 408 des Steuerblocks kennzeichnet eine Kettenposition des Steuerblocks als ersten in der Kette, letzten in der Kette, mittleren in der verknüpften Kette oder als eigenständig.Each control block header 400 has a byte 3, 408 including a control block module identifier and a chain position 408 on, and he has a head address (ADR) 410 on. The chain position 408 of the control block identifies a chain position of the control block as first in the chain, last in the chain, middle in the linked chain, or as stand-alone.

Die Ausführung verketteter oder eigenständiger CBs beginnt, wenn ein Eintrag aus der globalen HW-Arbeitswarteschlange 356 und durch den Arbeitswarteschlangenmanager 362 an eine der HW-Arbeitswarteschlangen gesendet wird, die mit einem der Hardwaremodule 120 verbunden sind. Die Hardwaremodule 120 in 3B können eine Kette von Steuerblöcken, HW-CB Nr. 1 bis 17, 308, ausführen, wie in 3A gezeigt und in den 4A und 4B ferner veranschaulicht. Der HW-CB 308 stellt eine Verknüpfung zur nächsten Operation in der vordefinierten Kette her, wenn das aktuelle Modul 120 die Ausführung seiner Operation in der vordefinierten Kette beendet. Der Mechanismus, um die Ausführung des nächsten HW-CB 308 in einer entsprechenden vordefinierten Kette schließlich zu starten, wird durch das entsprechende Hardwaremodul 120 ausgelöst. Das Hardwaremodul 120 fügt beim Beenden der Ausführung seines HW-CB 308 in der Kette 64 zu seiner aktuellen CB-Adresse im CS 108 hinzu, die dann die neue CB-Adresse im CS 108 bildet, die direkt auf den nächsten 64-Bytes-Offset 302 in der in 3A gezeigten Kette verweist. Diese neue CB-Adresse wird durch das Hardwaremodul 120 zusammen mit dem Feld „Kennung des nächsten verknüpften CB” an den Arbeitswarteschlangenmanager 362 übergeben. Der Arbeitswarteschlangenmanager 362 fügt anschließend einen neuen Eintrag zur globalen HW-WQ 356 hinzu. Wenn dieser Eintrag aus der globalen HW-WQ 356 entfernt wird, wird anschließend der nächste CB in der vordefinierten Kette ausgeführt und an eine HW-Arbeitswarteschlangen 358 gesendet.Running chained or standalone CBs begins when an entry is made from the global HW work queue 356 and through the work queue manager 362 sent to one of the HW work queues connected to one of the hardware modules 120 are connected. The hardware modules 120 in 3B can use a chain of control blocks, HW-CB Nos. 1 to 17, 308 , perform as in 3A shown and in the 4A and 4B further illustrated. The HW-CB 308 Links to the next operation in the predefined chain if the current module 120 finished the execution of its operation in the predefined chain. The mechanism to the execution of the next HW-CB 308 Finally, starting in a corresponding predefined chain is done by the appropriate hardware module 120 triggered. The hardware module 120 adds on completion of running its HW-CB 308 in the chain 64 to his current CB address in the CS 108 then added the new CB address in the CS 108 forms directly to the next 64-byte offset 302 in the in 3A shown chain refers. This new CB address is provided by the hardware module 120 along with the field labeled "ID of the next linked CB" to the work queue manager 362 to hand over. The work queue manager 362 then adds a new entry to the global HW-WQ 356 added. If this entry is from the global HW-WQ 356 then the next CB in the predefined chain is executed and sent to a HW work queue 358 Posted.

Unter Bezugnahme auf 4B ist dort eine Vielzahl beispielhafter Steuerblöcke gemäß der bevorzugten Ausführungsform gezeigt. Die Steuerblöcke 308 weisen auf:
Speicherbedarf setzen/aktualisieren/löschen/spiegeln – F
CL setzen/löschen/spiegeln – M
SAS-Op senden – S
Zugeordnete Seiten freigeben – D
SOP-Modul ausführen – X
Seiten zuordnen – A
HDMA-Op senden – H und
Komp/Dekompression – C
With reference to 4B There is shown a variety of exemplary control blocks according to the preferred embodiment. The control blocks 308 indicate:
Set / update / delete / mirror memory requirements - F
Set / delete / mirror CL - M
Send SAS-Op - p
Release assigned pages - D
Execute SOP module - X
Assign Pages - A
Send HDMA Op - H and
Comp / decompression - C

Beim Steuerblock „Speicherbedarf setzen/aktualisieren/löschen/spiegeln – F” 308 gehören zu den CS-Aktionen, die vom HW-Modul oder vom „Speicherbedarf setzen/aktualisieren/löschen/spiegeln”-Modul 120 durchgeführt werden, zum Beispiel beim Setzen das Lesen von 32 Bytes aus dem CS 108, bei jeweils 4 K das Lesen von 32 Bytes, Schreiben von 32 Bytes auf den DS 112 und das Schreiben von 32 Bytes auf den NVRAM 114 und wahlweise das Spiegeln auf eine entfernt angeordnete Steuereinheit; beim Aktualisieren das Lesen von 32 Bytes aus dem CS 108 oder DS 112, das Schreiben von 32 Bytes auf den DS 112 und das Schreiben von 32 Bytes auf den NVRAM 114 und wahlweise das Spiegeln auf eine entfernt angeordnete Steuereinheit; sowie beim Löschen das Schreiben von 32 Bytes auf den DS 112 und das Schreiben von 32 Bytes auf den NVRAM 114 und wahlweise das Spiegeln auf eine entfernt angeordnete Steuereinheit.Set / refresh / delete / mirror memory block - F " 308 are among the CS actions taken by the HW module or the "Set / Update / Delete / Mirror Memory" module 120 for example, when setting the reading of 32 bytes from the CS 108 , reading 4 bytes each, reading 32 bytes, writing 32 bytes to the DS 112 and writing 32 bytes to the NVRAM 114 and optionally, mirroring to a remotely located controller; when updating the reading of 32 bytes from the CS 108 or DS 112 , writing 32 bytes to the DS 112 and writing 32 bytes to the NVRAM 114 and optionally, mirroring to a remotely located controller; as well as deleting the writing of 32 bytes on the DS 112 and writing 32 bytes to the NVRAM 114 and optionally mirroring to a remote control unit.

Beim Steuerblock „CL setzen/löschen/spiegeln – M” 308 gehören zu den CS-Aktionen, die vom HW-Modul oder vom „CL setzen/löschen/spiegeln”-Modul 120 durchgeführt werden, zum Beispiel beim Setzen das Lesen von 32 Bytes aus dem CS 108, bei jeweils 4 K das Lesen von 32 Bytes, Schreiben von 32 Bytes auf den DS 112 und bei jeweils 4 K das Lesen des 4-Byte-Index und unter Umständen das Lesen von 4 K aus dem DS 112 und wahlweise das Spiegeln auf eine entfernt angeordnete Steuereinheit; und beim Löschen bei jeweils 4 K das Lesen des 4-Byte-Index und Schreiben von 32 Bytes auf den DS 112 und wahlweise das Spiegeln auf eine entfernt angeordnete Steuereinheit.At the control block "CL set / delete / mirror - M" 308 are among the CS actions taken by the HW module or by the "CL set / delete / mirror" module 120 for example, when setting the reading of 32 bytes from the CS 108 , reading 4 bytes each, reading 32 bytes, writing 32 bytes to the DS 112 and at 4K each, reading the 4-byte index and possibly reading 4K from the DS 112 and optionally, mirroring to a remotely located controller; and when clearing at 4K each, reading the 4-byte index and writing 32 bytes to the DS 112 and optionally mirroring to a remote control unit.

Beim Steuerblock „SAS-Op – S” 308 und bei dem „HDMA-Op senden – H”, gehören zu den CS-Aktionen, die vom Hardwaremodul oder dem entsprechenden SAS-Modul 120 und dem HDMA-Modul 120 durchgeführt werden zum Beispiel bei jeweils 4 K das Lesen des 4-Byte-Index durch das SAS-Modul 120 und das HDMA-Modul 120, und das HDMA-Modul 120 liest oder schreibt 4 K vom/auf den DS 112, und das SAS-Modul liest und schreibt unter Umständen 4 K vom/auf den DS 112. Das HDMA-Modul 120 bewegt Daten zwischen dem DS 112 und dem Host-System 134, und das SAS-Modul 120 bewegt Daten zwischen dem DS 112 und den Speichereinheiten 132.At the control block "SAS-Op - S" 308 and the "Send HDMA Op - H" are among the CS actions taken by the hardware module or the corresponding SAS module 120 and the HDMA module 120 For example, at 4K each, the 4-byte index is read by the SAS module 120 and the HDMA module 120 , and the HDMA module 120 reads or writes 4K from / to the DS 112 , and the SAS module may read and write 4K to / from the DS 112 , The HDMA module 120 moves data between the DS 112 and the host system 134 , and the SAS module 120 moves data between the DS 112 and the storage units 132 ,

Bei den Steuerblöcken „Zugeordnete Seiten freigeben – D” und „Seiten zuordnen – A” 308 gehören zu den CS-Aktionen, die vom HW- oder dem „Zuordnen/Zuordnung aufheben”-Modul 120 durchgeführt werden, zum Beispiel bei jeweils 4 K das Lesen von 4 Bytes und das Schreiben von 4 Bytes.For the control blocks "Release Assigned Pages - D" and "Assign Pages - A" 308 belong to the CS Actions that pick up from the HW or the "Mapping / Mapping" module 120 for example, 4K each reading 4 bytes and writing 4 bytes.

Beim Steuermodul „SOP-Modul ausführen – X” 308 gehören zu den CS-Aktionen, die vom HW- oder vom XOR-Modul 120 durchgeführt werden zum Beispiel bei jeweils 4 K der Quelle (bei jeder Quelle) das Lesen von 4 Bytes und das Lesen von 4 K des DS 112; und bei jeweils 4 K des Ziels (bei jedem Ziel) das Lesen von 4 Bytes und das Schreiben von 4 K von DS 112. Das Summe-der-Produkte-Modul (SOP-Modul) 120 nimmt als Eingangsgröße 0 bis N Quellseitenlisten und 0 bis M Zielseitenlisten sowie ein N×M-Array aus Multiplikatoren. Beispiel: N = 18 und M = 2. Bei jeweils 4 K wird die erste Quellseite vom DRAM gelesen, und die erste Menge von M Multiplikatoren wird auf jedes Byte angewandt. Die entstandenen Daten werden auf Summierpuffern des Chips in M abgelegt. Jede nachfolgende Quellenseite wird mit ihren zugehörigen M Multiplikatoren multipliziert, und das Produkt wird über XOR mit den entsprechenden Summierpuffern verknüpft. Nachdem jede Quelle verarbeitet wurde, werden die Summierpuffer auf die entsprechenden M Zielpuffer herausgeschrieben. Anschließend werden die nächsten 4 K gestartet. Dies ermöglicht die Berechnung eines XOR mit N Eingängen, sodass die RAID-5-Parität berechnet werden kann, oder bei RAID-6-P- und Q-Redundanzdaten auf Reed-Solomon-Basis die gleichzeitige Multiplizieren-XOR-Verknüpfung von M Gleichungen (bei N Eingängen).With the control module "Execute SOP module - X" 308 belong to the CS actions, those from the HW or XOR module 120 be carried out for For example, with 4K of the source (for each source) reading 4 bytes and reading 4K of the DS 112 ; and at 4K each of the target (at each target) reading 4 bytes and writing 4K from DS 112 , The sum-of-products module (SOP module) 120 takes as input 0 to N source page lists and 0 to M destination page lists as well as an N × M array of multipliers. For example, N = 18 and M = 2. For each 4K, the first source page is read by the DRAM and the first set of M multipliers is applied to each byte. The resulting data is stored on summation buffers of the chip in M. Each subsequent source page is multiplied by its associated M multipliers, and the product is XORed to the corresponding summation buffers. After each source has been processed, the summing buffers are written out to the appropriate M destination buffers. Afterwards the next 4 K will be started. This allows the calculation of an XOR with N inputs so that the RAID 5 parity can be calculated, or in the case of RAID 6 P and Q redundancy data on Reed Solomon basis, the simultaneous multiply XOR of M equations ( at N inputs).

Beim Steuerblock „Komp/Dekompression – C” 308 gehören zu den CS-Aktionen, die vom HW- oder vom „Komp/Dekomp”-Modul 120 durchgeführt werden, zum Beispiel bei jeweils 4 K (komprimierte Daten können < 4 K sein) das Lesen von 4 Bytes und das Lesen von 4 K (oder weniger bei der Dekompression) von DS 112 und das Schreiben von 4 K (oder weniger bei der Dekompression) von DS 112, und wahlweise können andere Operationen durchgeführt werden.At the control block "Comp / Decompression - C" 308 belong to the CS actions that come from the HW or the "Komp / Decomp" module 120 for example, each 4K (compressed data may be <4K) reading 4 bytes and reading 4K (or less in decompression) of DS 112 and writing 4K (or less in decompression) from DS 112 , and optionally, other operations may be performed.

Eine entsprechende beispielhafte Kette von Steuerblöcken 308 gemäß der bevorzugten Ausführungsform ist in den 5A, 6A und 7A veranschaulicht und unter Bezugnahme auf jede dieser Figuren beschrieben.A corresponding exemplary chain of control blocks 308 according to the preferred embodiment is in the 5A . 6A and 7A illustrated and described with reference to each of these figures.

Unter Bezugnahme auf die 5A und 5B sind dort ein allgemein mit dem Bezugszeichen 500 bezeichneter Ablauf von Operationen der Hardwarelogik und in 5B ein Ablaufplan wiedergegeben, die beispielhafte Operationen veranschaulichen, die von einer allgemein mit dem Bezugszeichen 520 bezeichneten vordefinierten Kette einer Vielzahl der Steuerblöcke durchgeführt werden, die selektiv angeordnet sind, um eine beispielhafte normale RAID-5-Paritätsaktualisierung gemäß der bevorzugten Ausführungsform zu realisieren. In 5A gehören zur Kette 520 des Steuerblocks 308 die Steuerblöcke A1, S2, F3, S4, F5, S6, S7, F8, D9, M10 und D11, wie in 4B zusammen mit den entsprechenden Schritten 1 bis 11 definiert, die in den 5A und 5B gezeigt sind.With reference to the 5A and 5B There are a generally by the reference numeral 500 designated sequence of operations of hardware logic and in 5B a flow chart illustrating exemplary operations that are generally indicated by a reference numeral 520 designated predefined chain of a plurality of the control blocks, which are selectively arranged to realize an exemplary normal RAID 5 parity update according to the preferred embodiment. In 5A belong to the chain 520 of the control block 308 the control blocks A1, S2, F3, S4, F5, S6, S7, F8, D9, M10 and D11, as in 4B defined together with the appropriate steps 1 to 11, which in the 5A and 5B are shown.

5A weist einen lokalen CS 502 einer ersten oder lokalen Steuereinheit 100A auf, der über ein HW-Modul 505 mit einem entfernt angeordneten DS 504 und einem entfernt angeordneten NVRAM 506 einer zweiten oder entfernt angeordneten Steuereinheit 100B verbunden ist. Der lokale CS 502 ist über das HW-Modul 505 mit einem lokalen NVRAM 508 und mit einem lokalen DS 510 der ersten Steuereinheit 100A verbunden. Eine Vielzahl von Puffern einer ersten Steuereinheit 100A, zu der Puffer A 512, Puffer B 514 und Puffer C 516, gehören, ist mit einer Platte P 518 und einer Platte X 520 verbunden. 5A has a local CS 502 a first or local control unit 100A up, over a HW module 505 with a remote DS 504 and a remote NVRAM 506 a second or remote control unit 100B connected is. The local CS 502 is via the HW module 505 with a local NVRAM 508 and with a local DS 510 the first control unit 100A connected. A plurality of buffers of a first control unit 100A to the buffer A 512 , Buffer B 514 and buffer C 516 , belong, is with a plate P. 518 and a plate X 520 connected.

In Schritt 1 werden die A-Liste und B-Liste für Puffer A 512 und Puffer B 514 bei Steuerblock A1 der Kette 520 in CS-lokal 502 in 5A und wie bei einem Block 540 in 5B angegeben zugeordnet oder gefüllt. Als Nächstes werden in Schritt 2 Daten von der Platte X 520 gelesen und mit dem Puffer C 516 über XOR verknüpft, und das Ergebnis wird bei Steuerblock S2 der Kette 520 bei 2 XOR in 5A und wie bei einem Block 542 in 5B angegeben in Puffer B 514 abgelegt. In Schritt 3 werden bei Steuerblock F3 der Kette 520 das Setzen des durch das HW-Modul 505, Zeile 3, gelesenen Speicherbedarfs aus dem HW-Modul 505 auf dem DS 510 und NVRAM 508 an der lokalen Steuereinheit 100A und das Setzen des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B aus dem HW-Modul 505 auf dem DS 504 und NVRAM 506 in 5A und wie bei einem Block 544 in 5B angegeben durchgeführt.In step 1, the A list and B list for buffer A become 512 and buffer B 514 at control block A1 of the chain 520 in CS local 502 in 5A and like a block 540 in 5B assigned or filled. Next, in step 2, data from the disk X becomes 520 read and with the buffer C 516 linked via XOR, and the result is at control block S2 of the chain 520 at 2 XOR in 5A and like a block 542 in 5B indicated in buffer B 514 stored. In step 3, control block F3 becomes the chain 520 the setting of the through the HW module 505 , Line 3, read memory requirement from the HW module 505 on the DS 510 and NVRAM 508 at the local control unit 100A and setting the memory requirement at the remote control unit 100B from the HW module 505 on the DS 504 and NVRAM 506 in 5A and like a block 544 in 5B specified performed.

In Schritt 4 wird das Schreiben von Daten aus dem Puffer C 516 auf die Platte X 520 bei Steuerblock S4 der Kette 520, Zeile 4, aus dem Puffer C 516 auf die Platte X 520 in 5A und wie bei einem Block 546 in 5B angegeben durchgeführt. Als Nächstes werden in Schritt 5 bei Steuerblock F5 der Kette 520 das Aktualisieren des durch das HW-Modul 505, Zeile 5, gelesenen Speicherbedarfs aus dem HW-Modul 505 auf dem DS 510 und NVRAM 508 an der lokalen Steuereinheit 100A und das Aktualisieren des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B aus dem HW-Modul 505 auf dem DS 504 und NVRAM 506 in 5A und wie bei einem Block 547 in 5B angegeben durchgeführt. Als Nächstes werden in Schritt 6 Daten von der Platte P 518 gelesen und mit dem Puffer B 514 über XOR verknüpft, und das Ergebnis wird bei Steuerblock S6 der Kette 520 bei 6 XOR in 5A und wie bei einem Block 548 in 5B angegeben in Puffer A 512 abgelegt. Als Nächstes wird in Schritt 7 das Schreiben von Daten aus dem Puffer A 512 auf die Platte P 518 bei Steuerblock S7 der Kette 520 in Zeile 7 aus dem Puffer A 512 auf die Platte P 518 in 5A und wie bei einem Block 550 in 5B angegeben durchgeführt.In step 4, the writing of data from the buffer C 516 on the plate X 520 at control block S4 of the chain 520 , Line 4, from the buffer C 516 on the plate X 520 in 5A and like a block 546 in 5B specified performed. Next, in step 5, at control block F5, the chain 520 updating the through the HW module 505 , Line 5, Read memory requirement from the HW module 505 on the DS 510 and NVRAM 508 at the local control unit 100A and updating the memory requirement at the remote control unit 100B from the HW module 505 on the DS 504 and NVRAM 506 in 5A and like a block 547 in 5B specified performed. Next, in step 6, data from the disk P 518 read and with the buffer B 514 linked via XOR, and the result is at control block S6 of the chain 520 at 6 XOR in 5A and like a block 548 in 5B indicated in buffer A 512 stored. Next, in step 7, the writing of data from the buffer A becomes 512 on the plate P 518 at control block S7 of the chain 520 in line 7 from the buffer A 512 on the plate P 518 in 5A and like a block 550 in 5B specified performed.

In Schritt 8 werden durch das HW-Modul 505 das Löschen des Speicherbedarfs durchgeführt, indem bei Steuerblock F8 der Kette 520 in Zeile 8 Nullen aus dem HW-Modul 505 auf den DS 510 und NVRAM 508 an der lokalen Steuereinheit 100A geschrieben werden, und das Löschen des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B bei Zeile 8 aus dem HW-Modul 505 auf dem DS 504 und NVRAM 506 in 5A und wie bei einem Block 552 in 5B angegeben durchgeführt. In Schritt 9 wird die Zuordnung der A-Liste und B-Liste für Puffer A 512 und Puffer B 514 bei Steuerblock D9 der Kette 520 in CS-lokal 502 in 5A und wie bei einem Block 554 in 5B angegeben aufgehoben, oder die Listen werden geleert. In Schritt 10 wird durch das HW-Modul 505 für den Cache-Zwischenspeicher das Senden von „Gespiegelte löschen” durchgeführt, indem Nullen geschrieben werden, um die CL im lokalen DS 510 zu löschen und die CL im entfernt angeordneten DS 504 bei Steuerblock M10 der Kette 520, in Zeile 10 angezeigt, aus dem HW-Modul 505 auf dem lokalen DS 510 und dem entfernt angeordneten DS 504 in 5A und wie bei Block 556 in 5B angegeben zu löschen. In Schritt 11 wird die Zuordnung von Seitenlisten für Puffer C 516 bei Steuerblock D11 der Kette 520 in CS-lokal 502 in 5A und wie bei einem Block 558 in 5B angegeben aufgehoben, oder die Listen werden geleert.In step 8, the HW module 505 deleting the memory required, by at control block F8 of the chain 520 in line 8 zeros from the HW module 505 on the DS 510 and NVRAM 508 at the local control unit 100A and clearing the memory requirement at the remote control unit 100B at line 8 from the HW module 505 on the DS 504 and NVRAM 506 in 5A and like a block 552 in 5B specified performed. In step 9, the assignment of the A list and B list for buffer A becomes 512 and buffer B 514 at control block D9 of the chain 520 in CS local 502 in 5A and like a block 554 in 5B specified or the lists are emptied. In step 10, the HW module 505 for the cache buffer, sending "Mirrored Clear" is performed by writing zeros to the CL in the local DS 510 delete and the CL in the remote DS 504 at control block M10 of the chain 520 , displayed in line 10, from the HW module 505 on the local DS 510 and the remotely located DS 504 in 5A and as with block 556 in 5B specified to delete. In step 11, the allocation of page lists for buffer C 516 at control block D11 of the chain 520 in CS local 502 in 5A and like a block 558 in 5B specified or the lists are emptied.

Unter Bezugnahme auf die 6A und 6B sind dort ein allgemein mit dem Bezugszeichen 600 bezeichneter Ablauf von Operationen der Hardwarelogik und in 6B ein Ablaufplan wiedergegeben, die beispielhafte Operationen veranschaulichen, die von einer allgemein mit dem Bezugszeichen 630 bezeichneten vordefinierten Kette einer Vielzahl der Steuerblöcke durchgeführt werden, die selektiv angeordnet sind, um eine beispielhafte normale RAID-6-Paritätsaktualisierung gemäß der bevorzugten Ausführungsform zu realisieren. In 6A gehören zur Kette 630 des Steuerblocks 308 die Steuerblöcke A1, S2, F3, S4, S5, S6, S7, F8, S9, S10, F11, D12, M13 und D14, wie in 4B zusammen mit den entsprechenden Schritten 1 bis 14 definiert, die in den 6A und 6B gezeigt sind.With reference to the 6A and 6B There are a generally by the reference numeral 600 designated sequence of operations of hardware logic and in 6B a flow chart illustrating exemplary operations that are generally indicated by a reference numeral 630 designated predefined chain of a plurality of the control blocks, which are selectively arranged to realize an exemplary normal RAID 6 parity update according to the preferred embodiment. In 6A belong to the chain 630 of the control block 308 the control blocks A1, S2, F3, S4, S5, S6, S7, F8, S9, S10, F11, D12, M13 and D14, as in FIG 4B together with the corresponding steps 1 to 14 defined in the 6A and 6B are shown.

6A weist einen lokalen CS 602 einer ersten oder lokalen Steuereinheit 100A auf, der über ein Hardwaremodul 605 mit einem entfernt angeordneten DS 604 und einem entfernt angeordneten NVRAM 606 einer zweiten oder entfernt angeordneten Steuereinheit 100B verbunden ist. Der lokale CS 602 ist über das Hardwaremodul 605 mit einem lokalen NVRAM 608 und mit einem lokalen DS 610 der ersten Steuereinheit 100A verbunden. Eine Vielzahl von Puffern einer ersten Steuereinheit 100A, zu der Puffer A 612, Puffer B 614 und Puffer C 616, gehören, ist mit einer Platte P 618, einer Platte X 620 und einer Platte Q 620 verbunden. 6A has a local CS 602 a first or local control unit 100A on top of a hardware module 605 with a remote DS 604 and a remote NVRAM 606 a second or remote control unit 100B connected is. The local CS 602 is about the hardware module 605 with a local NVRAM 608 and with a local DS 610 the first control unit 100A connected. A plurality of buffers of a first control unit 100A to the buffer A 612 , Buffer B 614 and buffer C 616 , belong, is with a plate P. 618 , a plate X 620 and a plate Q 620 connected.

In Schritt 1 werden die A-Liste und B-Liste für Puffer A 612 und Puffer B 614 bei Steuerblock A1 der Kette 630 in CS-lokal 602 in 6A und wie bei einem Block 640 in 6B angegeben zugeordnet oder gefüllt. Als Nächstes werden in Schritt 2 Daten von der Platte X 620 gelesen und mit dem Puffer C 616 über XOR verknüpft, und das Ergebnis wird bei Steuerblock S2 der Kette 630 bei 2 XOR in 6A und wie bei einem Block 642 in 6B angegeben in Puffer B 614 abgelegt. In Schritt 3 werden bei Steuerblock F3 der Kette 630 das Setzen des durch das HW-Modul 605, Zeile 3, gelesenen Speicherbedarfs aus dem HW-Modul 605 auf dem DS 610 und NVRAM 608 an der lokalen Steuereinheit 100A und das Setzen des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B aus dem HW-Modul 605 auf dem DS 604 und NVRAM 606 in 6A und wie bei einem Block 644 in 6B angegeben durchgeführt.In step 1, the A list and B list for buffer A become 612 and buffer B 614 at control block A1 of the chain 630 in CS local 602 in 6A and like a block 640 in 6B assigned or filled. Next, in step 2, data from the disk X becomes 620 read and with the buffer C 616 linked via XOR, and the result is at control block S2 of the chain 630 at 2 XOR in 6A and like a block 642 in 6B indicated in buffer B 614 stored. In step 3, control block F3 becomes the chain 630 the setting of the through the HW module 605 , Line 3, read memory requirement from the HW module 605 on the DS 610 and NVRAM 608 at the local control unit 100A and setting the memory requirement at the remote control unit 100B from the HW module 605 on the DS 604 and NVRAM 606 in 6A and like a block 644 in 6B specified performed.

In Schritt 4 wird das Schreiben von Daten aus dem Puffer C 616 auf die Platte X 630 bei Steuerblock S4 der Kette 630, Zeile 4, aus dem Puffer C 616 auf die Platte X 630 in 6A und wie bei einem Block 646 in 6B angegeben durchgeführt. Als Nächstes werden in Schritt 5 Daten von der Platte P 618 gelesen und mit dem Puffer B 614 über XOR mit multiplizierten Daten aus dem Puffer B 614 verknüpft, und das Ergebnis wird bei Steuerblock S5 der Kette 630 bei 5 XOR in 6A und durch eine Multiplizieren-Lesen-XOR-Verknüpfung B mit A wie bei einem Block 648 in 6B angegeben in Puffer A 612 abgelegt. In Schritt 6 werden bei Steuerblock F6 der Kette 630 das Aktualisieren des durch das HW-Modul 605, Zeile 6, gelesenen Speicherbedarfs aus dem HW-Modul 605 auf dem DS 610 und NVRAM 608 an der lokalen Steuereinheit 100A und das Aktualisieren des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B, Zeile 6, aus dem HW-Modul 605 auf dem DS 604 und NVRAM 606 in 6A und wie bei einem Block 650 in 6B angegeben durchgeführt.In step 4, the writing of data from the buffer C 616 on the plate X 630 at control block S4 of the chain 630 , Line 4, from the buffer C 616 on the plate X 630 in 6A and like a block 646 in 6B specified performed. Next, in step 5, data from the disk P 618 read and with the buffer B 614 over XOR with multiplied data from buffer B 614 linked, and the result is at control block S5 of the chain 630 at 5 XOR in 6A and a multiply-read XOR link B with A as in a block 648 in 6B indicated in buffer A 612 stored. In step 6, control block F6 becomes the chain 630 updating the through the HW module 605 , Line 6, Read memory requirement from the HW module 605 on the DS 610 and NVRAM 608 at the local control unit 100A and updating the memory requirement at the remote control unit 100B , Line 6, from the HW module 605 on the DS 604 and NVRAM 606 in 6A and like a block 650 in 6B specified performed.

Als Nächstes wird in Schritt 7 das Schreiben von Daten aus dem Puffer A 612 auf die Platte P 618 bei Steuerblock S7 der Kette 630 in Zeile 7 aus dem Puffer A 612 auf die Platte P 618 in 6A und wie bei einem Block 652 in 6B angegeben durchgeführt. In Schritt 8 werden bei Steuerblock F8 der Kette 630 das Aktualisieren des durch das HW-Modul 605, Zeile 8, gelesenen Speicherbedarfs aus dem HW-Modul 605 auf dem DS 610 und NVRAM 608 an der lokalen Steuereinheit 100A und das Aktualisieren des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B, Zeile 8, aus dem HW-Modul 605 auf dem entfernt angeordneten DS 604 und entfernt angeordneten NVRAM 606 in 6A und wie bei einem Block 654 in 6B angegeben durchgeführt. Als Nächstes werden in Schritt 9 Daten von der Platte Q 622 gelesen und über XOR mit multiplizierten Daten aus dem Puffer B 614 verknüpft, und das Ergebnis wird bei Steuerblock S9 der Kette 630 bei 9 XOR in 6A und durch eine Multiplizieren-Lesen-XOR-Verknüpfung von B mit A wie bei einem Block 656 in 6B angegeben in Puffer A 612 abgelegt. Als Nächstes wird in Schritt 10 das Schreiben von Daten aus dem Puffer A 612 auf die Platte Q 622 bei Steuerblock S10 der Kette 630 in Zeile 10 aus dem Puffer A 612 auf die Platte Q 622 in 6A und wie bei einem Block 658 in 5B angegeben durchgeführt.Next, in step 7, the writing of data from the buffer A becomes 612 on the plate P 618 at control block S7 of the chain 630 in line 7 from the buffer A 612 on the plate P 618 in 6A and like a block 652 in 6B specified performed. In step 8, control block F8 becomes the chain 630 updating the through the HW module 605 , Line 8, Read memory requirement from the HW module 605 on the DS 610 and NVRAM 608 at the local control unit 100A and updating the memory requirement at the remote control unit 100B , Line 8, from the HW module 605 on the remote DS 604 and remotely located NVRAM 606 in 6A and like a block 654 in 6B specified performed. Next, in step 9, data from the disk Q 622 read and XOR with multiplied data from buffer B 614 linked, and that The result is at control block S9 of the chain 630 at 9 XOR in 6A and by multiplying-reading-XORing B to A as in a block 656 in 6B indicated in buffer A 612 stored. Next, in step 10, the writing of data from the buffer A becomes 612 on the plate Q 622 at control block S10 of the chain 630 in line 10 from the buffer A 612 on the plate Q 622 in 6A and like a block 658 in 5B specified performed.

In Schritt 11 werden durch das HW-Modul 505 das Löschen des Speicherbedarfs durchgeführt, indem bei Steuerblock F11 der Kette 630 in Zeile 11 Nullen aus dem HW-Modul 605 auf den DS 610 und NVRAM 608 an der lokalen Steuereinheit 100A geschrieben werden, und das Löschen des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B in Zeile 11 aus dem HW-Modul 605 auf dem entfernt angeordneten DS 604 und entfernt angeordneten NVRAM 606 in 6A und wie bei einem Block 660 in 6B angegeben durchgeführt. In Schritt 11 werden die Zuordnungen der A-Liste und B-Liste für Puffer A 612 und Puffer B 614 bei Steuerblock D12 der Kette 630 in CS-lokal 602 in 6A und wie bei einem Block 662 in 6B angegeben aufgehoben, oder die Listen werden geleert. In Schritt 13 wird durch das HW-Modul 505 für den Cache-Zwischenspeicher das Senden von „Gespiegelte löschen” durchgeführt, indem Nullen geschrieben werden, um die CL im lokalen DS 610 zu löschen und die CL im entfernt angeordneten DS 604 bei Steuerblock M13 der Kette 630 in Zeile 13 aus dem HW-Modul 605 auf dem lokalen DS 610 und dem entfernt angeordneten DS 604 in 6A und wie bei Block 664 in 6B angegeben zu löschen. In Schritt 14 wird die Zuordnung von Seitenlisten für Puffer C 616 bei Steuerblock D14 der Kette 630 in CS-lokal 610 in 6A und wie bei einem Block 666 in 6B angegeben aufgehoben, oder die Listen werden geleert.In step 11, the HW module 505 the memory requirement is cleared by the control block F11 of the chain 630 in line 11 zeros from the HW module 605 on the DS 610 and NVRAM 608 at the local control unit 100A and clearing the memory requirement at the remote control unit 100B in line 11 from the HW module 605 on the remote DS 604 and remotely located NVRAM 606 in 6A and like a block 660 in 6B specified performed. In step 11, the allocations of the A list and B list for buffer A become 612 and buffer B 614 at control block D12 of the chain 630 in CS local 602 in 6A and like a block 662 in 6B specified or the lists are emptied. In step 13, the HW module 505 for the cache buffer, sending "Mirrored Clear" is performed by writing zeros to the CL in the local DS 610 delete and the CL in the remote DS 604 at control block M13 of the chain 630 in line 13 from the HW module 605 on the local DS 610 and the remotely located DS 604 in 6A and as with block 664 in 6B specified to delete. In step 14, the allocation of page lists for buffer C 616 at control block D14 of the chain 630 in CS local 610 in 6A and like a block 666 in 6B specified or the lists are emptied.

Unter Bezugnahme auf die 7A und 7B sind dort ein allgemein mit dem Bezugszeichen 700 bezeichneter Ablauf von Operationen der Hardwarelogik und in 7B ein Ablaufplan wiedergegeben, die beispielhafte Operationen veranschaulichen, die von einem allgemein mit dem Bezugszeichen 720 bezeichneten vordefinierten Kettenpaar einer Vielzahl der Steuerblöcke durchgeführt werden, die selektiv angeordnet sind, um einen beispielhaften RAID-5/6-Stripe-Schreibvorgang mit Cache-Zwischenspeicher gemäß der bevorzugten Ausführungsform zu realisieren. In 7A gehören zum Kettenpaar 720 des Steuerblocks 308 die Steuerblöcke A1, X2, F3, S4 und die Steuerblöcke F6, D7, M8 und D9, die durch eine Interaktion der Firmware (FW) 5 mit den Steuerblöcken 308 getrennt sind, wie in 4B zusammen mit den entsprechenden Schritten 1 bis 9 definiert, die in den 7A und 7B gezeigt sind.With reference to the 7A and 7B There are a generally by the reference numeral 700 designated sequence of operations of hardware logic and in 7B a flow chart illustrating exemplary operations that are generally indicated by a reference numeral 720 designated predefined chain pair of a plurality of the control blocks, which are selectively arranged to realize an exemplary RAID 5/6 stripe cache memory write according to the preferred embodiment. In 7A belong to the chain pair 720 of the control block 308 the control blocks A1, X2, F3, S4 and the control blocks F6, D7, M8 and D9, by an interaction of the firmware (FW) 5 with the control blocks 308 are separated, as in 4B together with the corresponding steps 1 to 9 defined in the 7A and 7B are shown.

7A weist einen lokalen CS 702 einer ersten oder lokalen Steuereinheit 100A auf, der über ein Hardwaremodul 705 mit einem entfernt angeordneten DS 704 und einem entfernt angeordneten NVRAM 706 einer zweiten oder entfernt angeordneten Steuereinheit 100B verbunden ist. Der lokale CS 702 ist über das HW-Modul 705 mit einem lokalen NVRAM 708 und mit einem lokalen DS 710 der ersten Steuereinheit 100A verbunden. Cache-Zwischenspeicherdaten 712 der ersten Steuereinheit sind mit einer Vielzahl von Laufwerken 714 und einem Summe-der-Produkte-Modul (SOP-Modul) verbunden, das über die Paritätspuffer 718 mit einem Paar der Laufwerke 714 verbunden ist. Bei RAID-6 gibt es zwei Paritätspuffer 718 und zwei Laufwerke 714, während bei RAID-5 ein Paritätspuffer 718 und ein Laufwerk 714 genutzt werden können. 7A has a local CS 702 a first or local control unit 100A on top of a hardware module 705 with a remote DS 704 and a remote NVRAM 706 a second or remote control unit 100B connected is. The local CS 702 is via the HW module 705 with a local NVRAM 708 and with a local DS 710 the first control unit 100A connected. Cache memory data 712 The first control unit comes with a variety of drives 714 and a sum-of-products module (SOP module) connected via the parity buffer 718 with a pair of drives 714 connected is. RAID-6 has two parity buffers 718 and two drives 714 while RAID-5 has a parity buffer 718 and a drive 714 can be used.

In Schritt 1 werden bei Bedarf Seitenlisten bei Steuerblock A1 des Kettenpaares 720 in CS-lokal 702 in 7A und wie bei einem Block 730 in 7B angegeben zugeordnet oder gefüllt. Als Nächstes wird in Schritt 2 „SOP-Modul ausführen” durchgeführt und Paritäts- oder P- und Q-Redundanzdaten bei Steuerblock X2 des Kettenpaares 720 bei 2 SOP 716 in 7A und wie bei einem Block 732 in 7B angegeben erzeugt.In step 1, if necessary, page lists at control block A1 of the chain pair 720 in CS local 702 in 7A and like a block 730 in 7B assigned or filled. Next, in step 2, "execute SOP module" and parity or P and Q redundancy data is performed on control block X2 of the chain pair 720 at 2 SOP 716 in 7A and like a block 732 in 7B specified generated.

In Schritt 3 werden bei Steuerblock F3 des Kettenpaares 720 das Setzen des durch das HW-Modul 705, Zeile 3, gelesenen Speicherbedarfs aus dem HW-Modul 705 auf dem DS 710 und NVRAM 708 an der lokalen Steuereinheit 100A und das Setzen des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B, Zeile 3, aus dem HW-Modul 705 auf dem entfernt angeordneten DS 704 und NVRAM 706 in 7A und wie bei einem Block 734 in 7B angegeben durchgeführt.In step 3, at control block F3 of the chain pair 720 the setting of the through the HW module 705 , Line 3, read memory requirement from the HW module 705 on the DS 710 and NVRAM 708 at the local control unit 100A and setting the memory requirement at the remote control unit 100B , Line 3, from the HW module 705 on the remote DS 704 and NVRAM 706 in 7A and like a block 734 in 7B specified performed.

In Schritt 4 wird das Durchführen des überlappten Schreibens von Daten auf mehrere Laufwerke 714, wie bei mehreren parallelen Steuerblöcken S4 des Kettenpaares 720, Zeile 4, angegeben, aus Cache-Zwischenspeicherdaten 712 auf mehrere Laufwerke 714 in 7A und wie bei Block 736 in 7B angegeben bereitgestellt. Die Firmware übernimmt wahlweise das Erfassen von Beendigungen der mehreren SAS-Operationen, wie bei einem Block FW 5 zwischen dem Kettenpaar 720 angegeben und wie bei einem Block 738 in 7B angegeben. Die Firmwareoperation bei FW 5 könnte bei einem anderen Hardwaremodul 120 implementiert sein.In step 4, performing the overlapped writing of data on multiple drives 714 , as with several parallel control blocks S4 of the chain pair 720 , Line 4, from cache staging data 712 on multiple drives 714 in 7A and as with block 736 in 7B provided. Optionally, the firmware accepts the detection of completions of the multiple SAS operations, as with a block FW 5 between the pair of chains 720 indicated and like a block 738 in 7B specified. The firmware operation on FW 5 might be on a different hardware module 120 be implemented.

In Schritt 6 werden durch das HW-Modul 705 das Löschen des Speicherbedarfs durchgeführt, indem bei Steuerblock F6 der Kette 720 in Zeile 6 Nullen aus dem HW-Modul 705 auf den DS 710 und NVRAM 708 an der lokalen Steuereinheit 100A geschrieben werden, und das Löschen des Speicherbedarfs an der entfernt angeordneten Steuereinheit 100B in Zeile 6 aus dem HW-Modul 705 auf dem entfernt angeordneten DS 704 und entfernt angeordneten NVRAM 706 in 7A und wie bei einem Block 740 in 7B angegeben durchgeführt. In Schritt 7 wird bei Bedarf die Zuordnung von Seitenlisten bei Steuerblock D7 der Kette 720 in CS-lokal 702 in 7A und wie bei einem Block 742 in 7B angegeben aufgehoben, oder die Listen werden geleert. In Schritt 8 wird das Aktualisieren des Cache-Zwischenspeichers zum Löschen der CL durchgeführt, indem das Hardwaremodul 705 Nullen auf dem lokalen DS 710 und zum Löschen der CL auf dem entfernt angeordneten DS 704 bei Steuerblock M8 des Kettenpaares 720 in Zeile 8 aus dem Hardwaremodul 705 auf den lokalen DS 710 und den entfernt angeordneten DS 704 in 7A und wie bei Block 744 in 7B angegeben schreibt. In Schritt 9 wird die Zuordnung von Cache-Seitenlisten bei Steuerblock D9 des Kettenpaares 720 in CS-lokal 710 in 7A und wie bei einem Block 746 in 7B angegeben aufgehoben, oder die Listen werden geleert.In step 6, the HW module 705 the deletion of the memory required carried out by at control block F6 of the chain 720 in line 6 zeros from the HW module 705 on the DS 710 and NVRAM 708 at the local control unit 100A and clearing the memory requirement at the remote control unit 100B in line 6 from the HW module 705 on the remote DS 704 and remotely located NVRAM 706 in 7A and like a block 740 in 7B specified performed. In step 7, if necessary, the assignment of page lists at control block D7 of the chain 720 in CS local 702 in 7A and like a block 742 in 7B specified or the lists are emptied. In step 8, updating the cache to clear the CL is performed by the hardware module 705 Zeros on the local DS 710 and clear the CL on the remote DS 704 at control block M8 of the chain pair 720 in line 8 from the hardware module 705 on the local DS 710 and the remotely located DS 704 in 7A and as with block 744 in 7B specified writes. In step 9, the allocation of cache page lists at control block D9 of the chain pair 720 in CS local 710 in 7A and like a block 746 in 7B specified or the lists are emptied.

8 zeigt ein Blockschaltbild eines beispielhaften Entwurfsablaufes 800. Der Entwurfsablauf 800 kann je nach der Art des zu entwerfenden ICs variieren. Zum Beispiel kann sich ein Entwurfsablauf 800 zum Aufbau eines anwendungsspezifischen ICs (ASIC) von einem Entwurfsablauf 800 für den Entwurf einer Standardkomponente unterscheiden. Die Entwurfstruktur 802 ist vorzugsweise eine Eingangsgröße für einen Entwurfsprozess 804 und kann von einem IP-Anbieter, einem Unternehmen zur Entwicklung von Kernen oder von einem anderen Entwicklungsunternehmen kommen, oder sie kann vom Verantwortlichen für den Entwurfsablauf oder aus anderen Quellen kommen. Die Entwurfsstruktur 802 weist die Schaltungen 100, 200, 300, 308, 350, 400, 500, 600, 700 in Form von Schemata oder HDL, einer Hardwarebeschreibungssprache, auf, zum Beispiel Verilog, VHDL, C und dergleichen. Die Entwurfstruktur 802 kann in einem oder mehreren maschinenlesbaren Medien enthalten sein. Zum Beispiel kann die Entwurfstruktur eine Textdatei oder eine grafische Darstellung der Schaltungen 100, 200, 300, 308, 350, 400, 500, 600, 700 sein. Vorzugsweise stellt der Entwurfsprozess 804 die Schaltung 100 synthetisch in einer Netzliste 806 dar bzw. setzt die Schaltung 100 in eine Netzliste 806 um, wobei es sich bei der Netzliste 806 zum Beispiel um eine Liste von Leitungen, Transistoren, Logikgattern, Steuerschaltungen, E/As, Modellen usw. handelt, die die Verbindungen zu anderen Elementen und Schaltungen im Entwurf einer integrierten Schaltung beschreibt und auf mindestens einem maschinenlesbaren Medium aufgezeichnet ist. Hierbei kann es sich um einen iterativen Prozess handeln, bei dem die Netzliste 806 je nach den Entwurfsvorgaben und Parametern für die Schaltung synthetisch einmal oder mehrmals neu erzeugt wird. 8th shows a block diagram of an exemplary design process 800 , The design process 800 may vary depending on the type of IC to be designed. For example, a design flow may be 800 to build an application specific IC (ASIC) from a design flow 800 for the design of a standard component. The design structure 802 is preferably an input to a design process 804 and may come from an IP provider, a cores development company, or another development company, or may come from the designer or from other sources. The design structure 802 assigns the circuits 100 . 200 . 300 . 308 . 350 . 400 . 500 . 600 . 700 in the form of schemas or HDL, a hardware description language, for example, Verilog, VHDL, C, and the like. The design structure 802 may be included in one or more machine-readable media. For example, the design structure may be a text file or a graphical representation of the circuits 100 . 200 . 300 . 308 . 350 . 400 . 500 . 600 . 700 be. Preferably, the design process 804 the circuit 100 synthetic in a netlist 806 represents or sets the circuit 100 into a netlist 806 um, which is the netlist 806 for example, is a list of lines, transistors, logic gates, control circuits, I / Os, models, etc., which describes the connections to other elements and circuits in the integrated circuit design and is recorded on at least one machine-readable medium. This can be an iterative process involving the netlist 806 synthetically regenerated once or several times depending on the design specifications and parameters for the circuit.

Der Entwurfsprozess 804 kann die Nutzung einer Vielfalt von Eingangsgrößen aufweisen; zum Beispiel Eingangswerte aus Bibliothekselementen 808, die eine Menge aus häufig genutzten Elementen enthalten können, Schaltungen und Einheiten einschließlich Modellen, Layouts und symbolischen Darstellungen für eine bestimmte Fertigungstechnologie wie zum Beispiel unterschiedlicher Technologieknoten, 32 nm, 45 nm, 90 nm und dergleichen, Entwurfsvorgaben 810, Beschreibungsdaten 812, Überprüfungsdaten 814, Entwurfsregeln 816 und Prüfdatendateien 818, zu denen Prüfmuster und andere Prüfinformationen gehören können. Zum Entwurfsprozess 804 können ferner zum Beispiel Standardprozesse des Schaltungsentwurfs wie die Analyse und Nachprüfung der Taktung, Überprüfung von Entwurfsregeln, Operationen im Zusammenhang mit Platzierung und Leitungsführung und dergleichen gehören. Dem Fachmann auf dem Gebiet des Entwurfs integrierter Schaltungen ist der Umfang möglicher elektronischer Hilfsmittel und Anwendungen zur Entwurfsautomatisierung klar, die beim Entwurfsprozess 804 verwendet werden, ohne vom Schutzbereich und Grundgedanken der Erfindung abzuweichen. Die Entwurfstruktur der Erfindung ist nicht auf einen beliebigen bestimmten Entwurfsablauf beschränkt.The design process 804 can have the use of a variety of inputs; for example, input values from library elements 808 which may contain a lot of frequently used elements, circuits and units including models, layouts and symbolic representations for a particular manufacturing technology such as different technology nodes, 32nm, 45nm, 90nm and the like, design specifications 810 , Description data 812 , Verification data 814 , Design rules 816 and audit data files 818 which may include test samples and other test information. To the design process 804 may further include, for example, standard circuit design processes such as timing analysis and verification, design rule checking, placement and routing operations, and the like. Those skilled in the art of integrated circuit design will appreciate the scope of possible electronic aids and design automation applications that are involved in the design process 804 may be used without departing from the scope and spirit of the invention. The design structure of the invention is not limited to any particular design process.

Der Entwurfsprozess 804 setzt vorzugsweise eine in den 1, 2A, 3A, 3B, 4A, 4B, 5A, 5B, 6A, 6B, 7A und 7B gezeigte Ausführungsform der Erfindung zusammen mit beliebigen anderen Entwürfen oder Daten integrierter Schaltungen (sofern zutreffend) in eine zweite Entwurfsstruktur 820 um. Die Entwurfsstruktur 820 befindet sich auf einem Speichermedium in einem Datenformat, das für den Austausch von Layoutdaten integrierter Schaltungen verwendet wird, zum Beispiel als im Format GDSII (GDS2), GL1, OASIS oder in einem beliebigen anderen geeigneten Format gespeicherte Informationen, das zum Speichern derartiger Entwurfsstrukturen geeignet ist. Die Entwurfsstruktur 820 kann Informationen wie zum Beispiel Prüfdatendateien, Entwurfsinhaltsdateien, Fertigungsdaten, Layoutparameter, Leitungen, Metallebenen, Durchkontaktierungen, Formen, Daten für den Wegverlauf durch die Fertigungslinie und beliebige andere Daten aufweisen, die von einem Halbleiterhersteller benötigt werden, um eine der in den 1, 2A, 3A, 3B, 4A, 4B, 5A, 5B, 6A, 6B, 7A und 7B gezeigten Ausführungsformen der Erfindung herzustellen. Die Entwurfsstruktur 820 kann anschließend in ein Stadium 822 übergehen, in dem die Entwurfsstruktur 820 auf Band ausgegeben, zur Fertigung freigegeben, für ein Unternehmen zu Maskenherstellung freigegeben, an ein anderes Entwurfsunternehmen gesendet, zurück an den Kunden gesendet wird und dergleichen.The design process 804 preferably one in the 1 . 2A . 3A . 3B . 4A . 4B . 5A . 5B . 6A . 6B . 7A and 7B 4 shows an embodiment of the invention together with any other designs or data of integrated circuits (if applicable) in a second design structure 820 around. The design structure 820 resides on a storage medium in a data format used for the exchange of integrated circuit layout data, for example information stored in GDSII (GDS2), GL1, OASIS or any other suitable format suitable for storing such design structures , The design structure 820 may include information such as inspection data files, design content files, manufacturing data, layout parameters, conduits, metal levels, vias, shapes, routing data, and any other data needed by a semiconductor manufacturer to obtain one of 1 . 2A . 3A . 3B . 4A . 4B . 5A . 5B . 6A . 6B . 7A and 7B shown embodiments of the invention produce. The design structure 820 can then go to a stage 822 go over in which the design structure 820 issued on tape, released for manufacturing, released for a mask making business, sent to another design company, sent back to the customer, and the like.

Obwohl die vorliegende Erfindung unter Bezugnahme auf die Einzelheiten der in der Zeichnung gezeigten Ausführungsformen der Erfindung beschrieben wurde, sind diese Einzelheiten nicht als Einschränkung des in den beigefügten Ansprüchen beanspruchten Schutzbereiches der Erfindung gedacht.Although the present invention has been described with reference to the details of the embodiments of the invention shown in the drawings, these details are not intended to limit the scope of the invention claimed in the appended claims.

Claims (25)

Datenspeichersystem, aufweisend: eine Steuereinheit, aufweisend eine Vielzahl von Hardwaremodulen; einen Prozessor; eine mit dem Prozessor verbundene Ereigniswarteschlange, die den Prozessor über eine Vielzahl von vordefinierten Ereignissen benachrichtigt; einen Steuerblock zur Steuerung einer Operation in einem der Vielzahl von Hardwaremodulen, wozu auch das Schreiben eines Ereigniswarteschlangeneintrags durch das Hardwaremodul gehört; und eine Vielzahl der Steuerblöcke, die selektiv in einer vordefinierten Kette angeordnet sind, um das Schreiben von Ereigniswarteschlangeneinträgen auf den Prozessor durch das Hardwaremodul zu minimieren.Data storage system, comprising: a control unit comprising a variety of hardware modules; a processor; an event queue associated with the processor that notifies the processor of a variety of predefined events; a control block for controlling an operation in one of the plurality of hardware modules, including the writing of an event queue entry by the hardware module; and a plurality of the control blocks selectively arranged in a predefined chain to minimize the writing of event queue entries to the processor by the hardware module. Datenspeichersystem nach Anspruch 1, bei dem die vordefinierte Kette aufeinanderfolgende Steuerblöcke aufweist, die in einem zusammenhängenden Speicherbereich gespeichert sind.The data storage system of claim 1, wherein the predefined chain comprises successive control blocks stored in a contiguous storage area. Datenspeichersystem nach Anspruch 1 oder Anspruch 2, bei dem jeder Steuerblock selektiv mit einem beliebigen anderen Steuerblock verbunden ist.The data storage system of claim 1 or claim 2, wherein each control block is selectively connected to any other control block. Datenspeichersystem nach einem der vorhergehenden Ansprüche, bei dem der Steuerblock selektiv mit einer Vielzahl anderer Steuerblöcke verbunden ist, Steuerelemente parallel zu versenden, die auf entsprechende Hardwaremodule angewendet werden.A data storage system as claimed in any one of the preceding claims, wherein the control block is selectively connected to a plurality of other control blocks for parallel sending of controls applied to corresponding hardware modules. Datenspeichersystem nach einem der vorhergehenden Ansprüche, bei dem die vordefinierte Kette Steuerelemente definiert, die auf entsprechende Hardwaremodule angewendet werden.The data storage system of any of the preceding claims, wherein the predefined chain defines controls that are applied to corresponding hardware modules. Datenspeichersystem nach einem der vorhergehenden Ansprüche, bei dem der Steuerblock einen gemeinsamen Steuerblockkopf mit einer Steuerblockkennung, einer Kettenposition des Steuerblocks und einer Kennung des nächsten Steuerblocks aufweist.The data storage system of any one of the preceding claims, wherein the control block comprises a common control block header having a control block identifier, a control block's chain position, and an identifier of the next control block. Datenspeichersystem nach Anspruch 6, bei dem die Steuerblockkennung eines der Vielzahl von Hardwaremodulen kennzeichnet und die Kennung des nächsten Steuerblocks eines der Vielzahl von Hardwaremodulen kennzeichnet.The data storage system of claim 6, wherein the control block identifier identifies one of the plurality of hardware modules and the identifier of the next control block identifies one of the plurality of hardware modules. Datenspeichersystem nach Anspruch 6 oder Anspruch 7, bei dem die Kettenposition des Steuerblocks einen Steuerblock als ersten in der Kette, letzten in der Kette, mittleren in der verknüpften Kette oder als eigenständig kennzeichnet.The data storage system of claim 6 or claim 7, wherein the control block's chain position identifies a control block as first in the chain, last in the chain, middle in the linked chain, or as standalone. Datenspeichersystem nach einem der Ansprüche 6 bis 8, bei dem der gemeinsame Steuerblockkopf einen vordefinierten Hardware-Ereigniswarteschlangeneintrag aufweist, der selektiv geschrieben wird, wenn der Steuerblock beendet wird.The data storage system of any one of claims 6 to 8, wherein the common control block header has a predefined hardware event queue entry which is selectively written when the control block is terminated. Datenspeichersystem nach einem der Ansprüche 6 bis 9, bei dem der gemeinsame Steuerblockkopf einen vordefinierten Hardware-Ereigniswarteschlangeneintrag aufweist, wobei der vordefinierte Hardware-Ereigniswarteschlangeneintrag geschrieben wird, wenn ein eigenständiger Steuerblock beendet wird oder wenn ein letzter Steuerblock in der Kette beendet wird.The data storage system of any one of claims 6 to 9, wherein the common control block header has a predefined hardware event queue entry, wherein the predefined hardware event queue entry is written when a stand-alone control block terminates or when a last control block in the chain is terminated. Datenspeichersystem nach einem der Ansprüche 6 bis 10, bei dem ein vordefinierter Hardware-Ereigniswarteschlangeneintrag geschrieben wird, wenn ein Steuerblock mit einem Fehler fehlschlägt.The data storage system of any one of claims 6 to 10, wherein a predefined hardware event queue entry is written if a control block fails with an error. Datenspeichersystem nach einem der vorhergehenden Ansprüche, bei dem die vordefinierte Kette der Vielzahl der Steuerblöcke durch entsprechende Hardwaremodule ohne jegliche Prozessor-Interaktion ausgeführt wird.The data storage system of any one of the preceding claims, wherein the predefined chain of the plurality of control blocks is executed by corresponding hardware modules without any processor interaction. Verfahren zum Realisieren der Optimierung der Leistung von Speicheradaptern in einem Datenspeichersystem, aufweisend: Bereitstellen einer Steuereinheit, die eine Vielzahl von Hardwaremodulen; und einen Prozessor aufweist; Bereitstellen einer mit dem Prozessor verbundenen Ereigniswarteschlange, die den Prozessor über eine Vielzahl von vordefinierten Ereignissen benachrichtigt; Bereitstellen eines Steuerblocks zur Steuerung einer Operation in einem der Vielzahl von Hardwaremodulen, wozu auch das Schreiben eines Ereigniswarteschlangeneintrags durch das Hardwaremodul gehört; und Bereitstellen einer Vielzahl der Steuerblöcke, die selektiv in einer vordefinierten Kette angeordnet sind, um das Schreiben von Ereigniswarteschlangeneinträgen auf den Prozessor durch das Hardwaremodul zu minimieren.A method for implementing the optimization of the performance of memory adapters in a data storage system, comprising: Providing a control unit comprising a plurality of hardware modules; and a processor; Providing an event queue associated with the processor that notifies the processor of a plurality of predefined events; Providing a control block for controlling an operation in one of the plurality of hardware modules, including the writing of an event queue entry by the hardware module; and Providing a plurality of the control blocks selectively arranged in a predefined chain to minimize the writing of event queue entries to the processor by the hardware module. Verfahren nach Anspruch 13, bei dem das Bereitstellen eines Steuerblocks das Bereitstellen eines gemeinsamen Steuerblockkopfes mit einer Steuerblockkennung, einer Kettenposition des Steuerblocks und einer Kennung des nächsten Steuerblocks aufweist.The method of claim 13, wherein providing a control block comprises providing a common control block header having a control block identifier, a control block's chain position, and an identifier of the next control block. Verfahren nach Anspruch 13 oder Anspruch 14, bei dem zum Bereitstellen einer Ereigniswarteschlange auch das Schreiben eines Ereigniswarteschlangeneintrags als Reaktion auf die Beendigung eines eigenständigen Steuerblocks und als Reaktion auf die Beendigung eines letzten Steuerblocks in der Kette gehört. The method of claim 13 or claim 14, wherein providing an event queue also includes writing an event queue entry in response to the termination of a self-contained control block and in response to the completion of a last control block in the chain. Verfahren nach einem der Ansprüche 13 bis 15, bei dem das Bereitstellen einer Ereigniswarteschlange das Schreiben eines Ereigniswarteschlangeneintrags als Reaktion darauf aufweist, dass ein Steuerblock mit einem Fehler fehlschlägt.The method of claim 13, wherein providing an event queue comprises writing an event queue entry in response to a control block failing with an error. Verfahren nach einem der Ansprüche 13 bis 16, bei dem das Bereitstellen einer Vielzahl der Steuerblöcke, die selektiv in einer vordefinierten Kette angeordnet sind, das Speichern aufeinanderfolgender Steuerblöcke in einem dynamischen Direktzugriffsspeicher (DRAM) aufweist.The method of any of claims 13 to 16, wherein providing a plurality of the control blocks selectively arranged in a predefined chain comprises storing consecutive control blocks in dynamic random access memory (DRAM). Verfahren nach einem der Ansprüche 13 bis 17, bei dem das Bereitstellen einer Vielzahl der Steuerblöcke aufweist, dass entsprechende Hardwaremodule die Vielzahl der Steuerblöcke in der vordefinierten Kette ohne jegliche Prozessor-Interaktion ausführen.The method of claim 13, wherein providing a plurality of the control blocks comprises corresponding hardware modules executing the plurality of control blocks in the predefined chain without any processor interaction. Steuereinheit zum Realisieren der Optimierung der Leistung von Speicheradaptern in einem Datenspeichersystem, aufweisend: einen Prozessor; eine Vielzahl von Hardwaremodulen; eine mit dem Prozessor verbundene Ereigniswarteschlange, die den Prozessor über eine Vielzahl von vordefinierten Ereignissen benachrichtigt; einen Steuerblock zur Steuerung einer Operation in einem der Vielzahl von Hardwaremodulen, wozu auch das Schreiben eines Ereigniswarteschlangeneintrags durch das Hardwaremodul gehört; und eine Vielzahl der Steuerblöcke, die selektiv in einer vordefinierten Kette angeordnet sind; wobei die vordefinierte Kette durch entsprechende Hardwaremodule ohne jegliche Prozessor-Interaktion ausgeführt wird.A controller for realizing optimization of performance of storage adapters in a data storage system, comprising: a processor; a variety of hardware modules; an event queue associated with the processor that notifies the processor of a variety of predefined events; a control block for controlling an operation in one of the plurality of hardware modules, including the writing of an event queue entry by the hardware module; and a plurality of the control blocks selectively arranged in a predefined chain; wherein the predefined chain is executed by corresponding hardware modules without any processor interaction. Steuereinheit nach Anspruch 19, bei der der Steuerblock einen gemeinsamen Steuerblockkopf mit einer Steuerblockkennung, einer Kettenposition des Steuerblocks und einer Kennung des nächsten Steuerblocks aufweist.The control unit of claim 19, wherein the control block comprises a common control block header having a control block identifier, a control block's chain position, and an identifier of the next control block. Steuereinheit nach Anspruch 19 oder Anspruch 20, bei der die vordefinierte Kette aufeinanderfolgende Steuerblöcke aufweist, die in einem zusammenhängenden Speicherbereich gespeichert sind.A control unit according to claim 19 or claim 20, wherein the predefined chain comprises successive control blocks stored in a contiguous storage area. Entwurfsstruktur, die in einem maschinenlesbarem Medium verkörpert ist, das bei einem Entwurfsprozess verwendet wird, wobei die Entwurfsstruktur aufweist: eine Steuereinheitenschaltung, die materiell auf dem maschinenlesbarem Medium verkörpert ist, das beim Entwurfsprozess verwendet wird, wobei die Steuereinheitenschaltung zum Realisieren der Optimierung der Leistung von Speicheradapter in einem Speichersystem dient und die Steuereinheitenschaltung aufweist: eine Vielzahl von Hardwaremodulen; einen Prozessor; eine mit dem Prozessor verbundene Ereigniswarteschlange, die den Prozessor über eine Vielzahl von vordefinierten Ereignissen benachrichtigt; einen Steuerblock zur Steuerung einer Operation in einem der Vielzahl von Hardwaremodulen, wozu auch das Schreiben eines Ereigniswarteschlangeneintrags durch das Hardwaremodul gehört; und eine Vielzahl der Steuerblöcke, die selektiv in einer vordefinierten Kette angeordnet sind, um das Schreiben von Ereigniswarteschlangeneinträgen auf den Prozessor durch das Hardwaremodul zu minimieren, wobei die Entwurfsstruktur, wenn sie bei der Fertigung eines Halbleiterchips gelesen und verwendet wird, einen Chip erzeugt, der die Steuereinheitenschaltung aufweist.A design structure embodied in a machine-readable medium used in a design process, the design structure comprising: a controller circuit materially embodied on the machine-readable medium used in the design process, the controller circuit serving to optimize the performance of storage adapters in a storage system and comprising the controller circuitry: a variety of hardware modules; a processor; an event queue associated with the processor that notifies the processor of a variety of predefined events; a control block for controlling an operation in one of the plurality of hardware modules, including the writing of an event queue entry by the hardware module; and a plurality of the control blocks selectively arranged in a predefined chain to minimize the writing of event queue entries to the processor by the hardware module, wherein the design structure, when read and used in the manufacture of a semiconductor chip, generates a chip comprising the chip Control unit circuit has. Entwurfsstruktur nach Anspruch 22, bei der die Entwurfsstruktur eine Netzliste aufweist die die Steuereinheitenschaltung beschreibt.The design structure of claim 22, wherein the design structure comprises a netlist describing the controller circuitry. Entwurfsstruktur nach Anspruch 22 oder Anspruch 23, bei der sich die Entwurfsstruktur auf einem Speichermedium als Datenformat befindet, das zum Austausch von Layoutdaten integrierter Schaltungen verwendet wird.A design structure according to claim 22 or claim 23, wherein the design structure is on a storage medium as a data format used for exchanging integrated circuit layout data. Entwurfsstruktur nach einem der Ansprüche 22 bis 24, bei der die Entwurfsstruktur mindestens Eines von Prüfdatendateien, Beschreibungsdaten, Überprüfungsdaten oder Entwurfsvorgaben aufweist.A design structure according to any one of claims 22 to 24, wherein the design structure comprises at least one of test data files, description data, verification data, or design specifications.
DE112012001611.4T 2011-05-24 2012-05-03 Optimizing the performance of storage adapters Active DE112012001611B4 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
USUS-13/114,107 2011-05-24
US13/114,107 US8544029B2 (en) 2011-05-24 2011-05-24 Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions
US13/114,107 2011-05-24
PCT/EP2012/058162 WO2012159863A1 (en) 2011-05-24 2012-05-03 Storage adapter performance optimization

Publications (2)

Publication Number Publication Date
DE112012001611T5 true DE112012001611T5 (en) 2014-12-11
DE112012001611B4 DE112012001611B4 (en) 2021-05-27

Family

ID=46085911

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012001611.4T Active DE112012001611B4 (en) 2011-05-24 2012-05-03 Optimizing the performance of storage adapters

Country Status (4)

Country Link
US (1) US8544029B2 (en)
DE (1) DE112012001611B4 (en)
GB (1) GB2506046B (en)
WO (1) WO2012159863A1 (en)

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8868828B2 (en) 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
US8886881B2 (en) * 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9158698B2 (en) 2013-03-15 2015-10-13 International Business Machines Corporation Dynamically removing entries from an executing queue
US9122413B2 (en) 2013-08-15 2015-09-01 International Business Machines Corporation Implementing hardware auto device operations initiator
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9836245B2 (en) * 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9940258B2 (en) * 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for merging data with existing data on fast writes to storage write cache
US9858146B2 (en) 2015-12-21 2018-01-02 International Business Machines Corporation Reducing latency for raid destage operations
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
CN109376020B (en) * 2018-09-18 2021-02-12 中国银行股份有限公司 Data processing method, device and storage medium under multi-block chain interaction concurrence
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2066566C (en) 1989-09-08 2001-12-25 David Hitz Multiple facility operating system architecture
US5644789A (en) 1995-01-19 1997-07-01 Hewlett-Packard Company System and method for handling I/O requests over an interface bus to a storage disk array
US5812877A (en) * 1996-03-15 1998-09-22 Adaptec, Inc. I/O command block chain structure in a memory
US20040236877A1 (en) 1997-12-17 2004-11-25 Lee A. Burton Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices in a fully buffered dual in-line memory module format (FB-DIMM)
US6324599B1 (en) 1999-01-11 2001-11-27 Oak Technology Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor
US6684270B1 (en) 2000-06-02 2004-01-27 Nortel Networks Limited Accelerated file system that recognizes and reroutes uncontested read operations to a second faster path for use in high-capacity data transfer systems
US6912612B2 (en) 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
US20040162926A1 (en) 2003-02-14 2004-08-19 Itzhak Levy Serial advanced technology attachment interface
US20050114561A1 (en) 2003-11-24 2005-05-26 Ho-Keng Lu Method for performing DMA transfers with dynamic descriptor structure
US7484016B2 (en) 2004-06-30 2009-01-27 Intel Corporation Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
US7496695B2 (en) 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
US7844752B2 (en) * 2005-11-30 2010-11-30 International Business Machines Corporation Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions
US9015501B2 (en) * 2006-07-13 2015-04-21 International Business Machines Corporation Structure for asymmetrical performance multi-processors
US7555599B2 (en) 2006-09-06 2009-06-30 International Business Machines Corporation System and method of mirrored RAID array write management
JP4356765B2 (en) 2007-04-20 2009-11-04 ソニー株式会社 Information processing apparatus and method, and program
US7743191B1 (en) * 2007-12-20 2010-06-22 Pmc-Sierra, Inc. On-chip shared memory based device architecture
US7979655B2 (en) 2008-03-04 2011-07-12 International Business Machines Corporation Dynamic optimization of device limits and thresholds in a write cache
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

Also Published As

Publication number Publication date
WO2012159863A1 (en) 2012-11-29
US20120304198A1 (en) 2012-11-29
GB2506046B (en) 2014-12-03
GB201322050D0 (en) 2014-01-29
GB2506046A (en) 2014-03-19
US8544029B2 (en) 2013-09-24
DE112012001611B4 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
DE112012001611B4 (en) Optimizing the performance of storage adapters
DE102019122363A1 (en) PROGRAMMABLE DOUBLE-ROW WORK MEMORY MODULE ACCELERATOR CARD (DIMM ACCELERATOR CARD)
DE102013205973B4 (en) &#34;Data storage system, method, controller, and design structure for realizing performance optimization on storage adapters by performing hardware operations collectively
DE112016004527T5 (en) Implement a hardware accelerator for the management of a memory write cache
DE102017104150B4 (en) Wear compensation in memory devices
DE102019116213A1 (en) Quality of service-based arbitration optimized for enterprise semiconductor drives
DE102017104448A1 (en) Data storage device
DE102011075814B4 (en) Memory buffer with accessible information after a write error
US20150347012A1 (en) System and method of interleaving data retrieved from first and second buffers
DE102005006176A1 (en) Transaction processing systems and methods that use non-disk persistent storage
DE10348326A1 (en) Permanent storage device connected to a communication link
DE112014005266T5 (en) Method and system for forward reference logging in a persistent data store
DE112018003524T5 (en) DYNAMIC DATA MOVEMENT USING LIBRARIES ON A CLOUD BASE
DE102013205571B4 (en) Method, computer program product and apparatus for migrating data carriers with lean memory allocation in multilayer memory architectures
DE102013209318B4 (en) Perform asynchronous delete scans with caching and paging operations
DE112007001135T5 (en) Sharing data through partitions in a partitionable system
DE112018005121T5 (en) STORAGE SYSTEM USING CLOUD STORAGE AS A STORAGE BANK
DE112012000282T5 (en) Application recovery in a file system
DE112016005988T5 (en) BREAKING BLOCKS STORE STACK
DE112012002796T5 (en) Transfer deduplicated data organized in virtual media to a target set of physical media
DE112019005392T5 (en) INCREASING DATA PERFORMANCE BY TRANSFERRING DATA BETWEEN STORAGE LEVELS USING WORKLOAD CHARACTERISTICS
DE102015005817A1 (en) System and method for caching solid state read request results
DE102020211544A1 (en) CONTROL, OPERATING PROCEDURES OF THE CONTROL AND STORAGE DEVICE WITH THE SAME
DE102020115969A1 (en) STORAGE DEVICES, STORAGE SYSTEMS, AND METHODS OF OPERATING STORAGE DEVICES
US20120303886A1 (en) Implementing storage adapter performance optimization with hardware chains to select performance path

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0013280000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0013280000

Effective date: 20141212

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final