CN108351832B - 实现用于存储写入高速缓存管理的硬件加速器 - Google Patents
实现用于存储写入高速缓存管理的硬件加速器 Download PDFInfo
- Publication number
- CN108351832B CN108351832B CN201680065411.6A CN201680065411A CN108351832B CN 108351832 B CN108351832 B CN 108351832B CN 201680065411 A CN201680065411 A CN 201680065411A CN 108351832 B CN108351832 B CN 108351832B
- Authority
- CN
- China
- Prior art keywords
- write cache
- hardware
- storage
- data
- engine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/285—Redundant cache memory
- G06F2212/286—Mirrored cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于实现增强存储适配器写入高速缓存管理的方法和控制器,以及主体控制器电路驻留在其上的设计结构。该控制器包括硬件写入高速缓存引擎,实现用于存储写入高速缓存管理的硬件加速。该控制器以最少的或不需要固件参与的方式管理写入高速缓存数据和元数据,大大提高了性能。
Description
技术领域
本发明总体上涉及数据处理领域,并且更具体地涉及用于实现增强存储适配器写入高速缓存管理的方法和控制器,以及主体控制器电路驻留于其上的设计结构。
背景技术
存储适配器用于将主计算机系统连接到外围存储I/O设备,如硬盘驱动器,固态驱动器,磁带驱动器,光盘驱动器等。目前,各种高速系统互连将主计算机系统连接到存储适配器,并将存储适配器连接到存储I/O设备,例如快速外设组件互连(PCIe),串行连接SCSI(SAS),光纤通道和InfiniBand。
存储适配器和存储子系统通常包含写入高速缓存以提高性能。写入高速缓存通常是非易失性的,例如,使用支持闪存的DRAM,用于屏蔽冗余独立磁盘阵列(RAID)(如RAID-5和RAID-6)引入的写入损失。写入高速缓存还可以通过将放置在写入缓存中的多个主机操作合并成单个降级(destage)操作,然后由RAID层和磁盘设备进行处理来提高存储性能。为了冗余,可以将写入高速缓存数据和目录或元数据镜像到第二个或双适配器,其在适配器故障的情况下有利地被利用。
在存储子系统中用于高速缓存用户或主机数据的完全关联或其他复杂高速缓存中,通常需要许多CPU周期来更新所需元数据以将数据放入写入高速缓存。此元数据包括高速缓存行(CL)结构,用于快速搜索的散列(hash)表以及用于查找最旧数据的最近最少使用(LRU)队列。元数据用于保持一致性,使高速缓存目录保持非易失性,并使查找数据能够从高速缓存中删除。
需要一种用于实现增强的存储写入高速缓存管理的有效方法和控制器。需要提供这样的方法和控制器,其提供硬件加速设计,包括硬件写入高速缓存引擎,其以最少或没有固件参与来管理写入高速缓存数据和元数据以大大提高性能。
如在下面的描述和权利要求中所使用的,术语控制器和控制器电路应该被广义地理解为包括输入/输出(IO)适配器(IOA)并且包括连接主计算机系统和外围存储器I/O设备的各种布置的IO RAID适配器,外围存储器I/O设备包括硬盘驱动器,固态驱动器,磁带驱动器,光盘驱动器等。
如在下面的描述和权利要求中所使用的,术语:基本上不使用固件,具有最小的,最少的或没有固件参与,应该广义地理解为包括由硬件执行的操作和功能,并且可以包括从固件传递或传递给固件的操作或控制。
发明内容
本发明的主要方面是将提供一种用于实现存储适配器增强的写入高速缓存管理的方法和控制器,以及主体控制器电路驻留于其上的设计结构。本发明的其他重要方面是将提供这样的基本上没有负面影响的方法,控制器和设计结构,并且克服了现有技术布置的许多缺点。
简而言之,提供了用于实现增强存储适配器写入高速缓存管理的方法和控制器,以及主体控制器电路驻留于其上的设计结构。该控制器包括硬件写入高速缓存引擎,其实现用于存储写入高速缓存管理的硬件加速。该控制器以最少的或不需要固件参与来管理写入高速缓存数据和元数据,大大提高了性能。
附图说明
本发明连同上述和其他目的和优点可以从下面对附图中所示的本发明的优选实施例的详细描述中最好地理解,其中:
图1A和图1B是分别示出根据优选实施例的具有用于实现存储适配器增强写入高速缓存管理的双控制器和输入/输出(IO)适配器的示例系统的示意图和框图。
图2A和2B分别示出了根据优选实施例的用于实现图1A和图1B的存储适配器增强写入高速缓存管理的控制器所包括的示例逻辑块地址(LBA)转换RAID堆栈,在图2A中,写入高速缓存被置于高位的RAID堆栈中,在Dynamic Tier(Easy Tier),数据条带化和奇偶条带化(RAID)层之上,在阵列ID/阵列LBA的基础上执行高速缓存。
图3示出了根据优选实施例的硬件支持的示例读取操作,包括用于实现存储适配器增强写入高速缓存管理的控制器所包括的图2A和2B的示例逻辑块地址(LBA)转换。
图4示出了根据优选实施例的硬件支持的示例写入操作,包括用于实现图1A和图1B的存储适配器增强写入高速缓存管理的控制器所包括的图2A和2B的示例逻辑块地址(LBA)转换,写入高速缓存被置于高位的RAID堆栈中,在动态层(Dynamic Tier)(EasyTier),数据条带化和奇偶条带化(RAID)层之上。
图5示出了根据优选实施例的硬件支持的示例降级操作,包括用于实现存储适配器增强写入高速缓存管理的控制器所包括的图2A和2B的示例逻辑块地址(LBA)转换。
图6示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的控制存储(CS)中的示例高速缓存线(CL)结构。
图7示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的用于自动镜像到数据存储(DS)的控制存储(CS)中的示例高速缓存行(CL)结构。
图8示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的数据存储(DS)中的示例高速缓存行(CL)结构。
图9示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的示例本地SAS和远程SAS高速缓存行(CL)控制存储(CS)镜像或SAS镜像删除到数据存储(DS)。
图10A和10B示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的硬件中的高速缓存行(CL)状态中的示例事务。
图11A和图11B示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的硬件中具有相同阵列ID/LBA的示例高速缓存行(CL)链。
图12A,12B,12C和12D分别示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的用于写入,非优化或临时写入,读取以及降级操作的硬件引擎中的基于控制框(CB)的示例操作链。
图13是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的写入过程的示例操作的流程图。
图14示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的具有叠加的快速写入上的示例XOR合并。
图15是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的读取处理的示例操作的流程图。
图16是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的降级构建处理的示例操作的流程图。
图17是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的单个降级处理的示例操作的流程图。
图18是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的多个降级处理的示例操作的流程图。
图19是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的绕过(BYPASS)处理的示例操作的流程图。
图20示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的示例基于寄存器的清除硬件辅助工具包。
图21和图22是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的清除引擎处理的示例操作的流程图。
图23示出了根据优选实施例的用于实施存储适配器增强写入高速缓存管理的控制器所包括的示例硬件计数器和统计。
图24和图25示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的示例CL限制和阈值。
图26是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的全局事件处理的示例操作的流程图。
图27是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的每阵列处理的示例步骤的流程图。
图28和图29分别示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的示例全局触发器和每阵列触发器;以及
图30是在半导体设计,制造和/或测试中使用的设计过程的流程图。
具体实施方式
在本发明的实施例的以下详细描述中,参考附图,附图示出了可以实施本发明的示例实施例。应该理解的是,可以利用其他实施例并且可以进行结构改变而不偏离本发明的范围。
这里使用的术语仅用于描述特定实施例的目的,而不意图限制本发明。如本文所使用的,除非上下文另外清楚地指出,否则单数形式“一”,“一个”和“该”旨在也包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合。
根据本发明的特征,提供了一种用于实现存储适配器增强写入高速缓存管理的方法和控制器,以及主体控制器电路驻留于其上的设计结构。本发明的方法和控制器包括管理写入高速缓存并提供高速缓存目录的基本原子更新的写入高速缓存硬件引擎。使用写入高速缓存硬件引擎执行向写入高速缓存写入和从写入高速缓存读取两者,而不使用固件,将硬件引擎链接在一起。
现在参考附图,图1A和1B分别示出了根据优选实施例的用于实现存储适配器增强的写入高速缓存管理的由参考字符100总体指定的具有双控制器和由参考字符102总体指定的输入/输出(IO)适配器的示例系统。系统100包括系统100包括具有镜像到双IOA的写入高速缓存数据和目录或元数据的第一输入/输出适配器(IOA)或控制器102,IOA#1和第二输入/输出适配器(IOA)或控制器102,IOA#2,这可以在适配器故障的情况下使用。系统100包括具有IOA#1和#2控制器102的主机系统104,IOA#1和#2控制器102经由外围组件互连高速(PCIE)总线直接耦合到主机系统104或可选地经由PCIE交换机106耦合到主机系统104。系统100包括诸如硬盘驱动器(HDDs)或旋转驱动器108的多个存储设备108以及包括例如独立驱动器的冗余阵列(RAID)的固态驱动器(SSD)108,其经由具有IOA#1和#2,控制器102之间的SAS连接的一个或多个串行连接的SCSI(SAS)连接,可选地通过相应的扩展器110耦合到IOA#1和#2,控制器102。
在图1B中,示出了根据优选实施例的数据存储系统100中的IOA#1和#2,控制器102的每一个的的其他示例组件。控制器102包括一个或多个处理器或中央处理器单元(CPUs)120,至少包括数据存储(DS)124的写入高速缓存122,以及诸如动态随机存取存储器(DRAM)的控制存储(CS)126。控制器102包括闪存128和非易失性随机存取存储器(NVRAM)130。
根据优选实施例,控制器102包括写入高速缓存引擎132。控制器102包括经由PCIE总线连接到主机系统的外围组件互连快速(PCIE)接口134和连接到多个存储设备108的每一个的串行连接SCSI控制(SAS CTLR)136。
IOA#1和#2,控制器102和写入高速缓存引擎132,其包括多个硬件引擎,例如用于实现将硬件引擎链接在一起的方法,不使用固件来执行在写入高速缓存中写入或覆盖写入;以及用于实现将硬件引擎链接在一起的方法,不使用固件来执行从写入高速缓存的读取。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,使用不同硬件引擎生成操作链,以执行不使用固件的写入或覆盖写入到写入高速缓存中。控制器102和写入高速缓存引擎132通过执行以下步骤来实现该方法:分配非易失性(NV)缓冲器,用于从主机DMA数据的直接存储器访问(DMA),确定在更新高速缓存行(CL)状态时,是否已经覆盖了高速缓存中的现有数据,在写入操作开始和结束时合并非4K数据,DMA数据到远程适配器,同时还更新本地和远程NV存储器中的CL,清除本地和远程NV存储器中用于覆盖数据的CL,最终更新到CL状态,取消用于任何重叠数据的NV缓冲区分配,并向主机命令发送响应。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,使用不同硬件引擎生成操作链,以不使用固件从写入高速缓存执行读取。控制器102和写入高速缓存引擎132通过执行以下步骤来执行该方法:分配Vol缓冲区,在写入高速缓存中搜索读取命中,向主机DMA数据,重新分配Vol缓冲区,最终更新到CL状态,为正被读取的从高速缓存中并发地降级的任何数据重新分配NV缓冲区,以及向主机命令发送响应。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,使用不同硬件引擎生成操作链,以不使用固件从写入高速缓存执行部分读取命中。控制器102和写入高速缓存引擎132通过执行以下步骤来执行该方法:分配Vol缓冲器,在写入高速缓存中搜索读取命中,从HDDs/SSDs读取/合并用于部分读取命中的数据,向主机DMA数据,解除分配Vol缓冲区,最终更新到CL状态,为正被读取的从高速缓存中并发地降级的任何数据取消分配NV缓冲区,并向主机命令发送响应。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,使用不同硬件引擎生成操作链,以使用最少固件从写入高速缓存执行降级操作。控制器102和写入高速缓存引擎132帮助生成具有选项的降级操作,以在LRU或指定的阵列LBA处开始,并且在以最大请求的大小/跨度或256K条带边界的末端停止。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,其实现允许用于相同CLs的主机读取和高速缓存降级同时发生的一组策略。发生的冲突由硬件排队并分派。
根据本发明的特征,用于实现存储适配器增强型写入高速缓存管理的方法和控制器102包括写入高速缓存引擎132,其使用(CL)内的操作构建编号(Op Build Number)或序列号以能够保证正确识别用于相同的阵列逻辑块地址(LBA)的高速缓存中的较旧数据和较新数据。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,实现用于写入,读取和降级操作的在完成或撤消CL更新中使用的硬件关闭。
根据本发明的特征,用于实现存储适配器增强型写入高速缓存管理的方法和控制器102包括写入高速缓存引擎132,该写入高速缓存引擎132实现用于识别和更新用于将被从高速缓存中清除的阵列LBA范围的CLs的唯一硬件引擎。
根据本发明的特征,用于实现存储适配器增强型写入高速缓存管理的方法和控制器102包括写入高速缓存引擎132实现XOR(异或)合并功能,例如在利用叠加进行快速写入时。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102实现基于触发器的方法以动态优化高速缓存器降级速率并调整用于每个阵列的高速缓存中数据的阈值和限制,使用硬件提供的输入(寄存器)和输出(寄存器和事件)来协助固件。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102实现硬件加速设计的高级架构,以最少的固件参与或没有固件参与来管理写入高速缓存数据和元数据(目录),极大地提高了性能。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,其提供CLs(高速缓存线),哈希表和每阵列LRU队列的硬件操纵。这是以伪原子方式完成的,以便对这些结构的更新要么保持不变,要么在每次执行硬件引擎时都完全被更新。例如,所有正被修改的条目都被签出到缓存中,更改一次或多次,然后如果成功则突然签入(Checked-In)。只有CL保持非易失性,并且在发生适配器故障时可以修改CL的子集。
根据本发明的特征,用于实现存储适配器增强型写入高速缓存管理的方法和控制器102包括写入高速缓存引擎132,该写入高速缓存引擎132包括允许跟踪以下状态的CL定义:覆盖进行中(OIP),在使用覆盖操作写入期间;读取操作期间读取进行中(RIP);和降级操作期间降级(destage)运行中(DIP)。同时允许RIP和DIP以减少碰撞,这在传统设计中是不可能的。
根据本发明的特征,用于实现存储适配器增强型写入高速缓存管理的方法和控制器102包括写入高速缓存引擎132实现写入,非优化或临时写入,读取和降级操作,提供增强的性能。
现在参考图2A和2B,如图2A所示的用于实现存储适配器增强型写入高速缓存管理的控制器102实现了通常由参考字符200指定的示例逻辑块地址(LBA)翻译RAID堆栈。图2B示出了通常由参考字符220指定的(VSet)卷集(即,可由主机读取和写入的逻辑设备)的主机LBA转换。
在图2A中,控制器102实现与IBM i操作系统一起使用的主机LBA和AFDASD(高级功能DASD)转换202。AFDASD代表一个可以由IBM i操作系统读取和写入的支持RAID的物理设备。主机LBA和AFDASD转换202以在框204的AFDASD到阵列或反向数据条带化开始,在206提供阵列LBA和阵列ID,在210读取/写入缓存208提供阵列LBA和阵列ID。将读/写高速缓存208放置在RAID堆栈200中的高位,并且高于(RAID)层数据条带化212之上,提供逻辑设备LBAs和LDNs(逻辑设备号)214以及奇偶条带216,其提供物理设备LBA和LDN 218,其中根据优选实施例,在阵列ID/阵列LBA的基础上执行高速缓存。逻辑块地址(LBA)转换RAID堆栈200降低了复杂性,并且比先前将写入高速缓存置于动态层和数据条带化之下的现有设计减少了延迟,其中在设备LBA基础上完成高速缓存。
图2B示出具有VSet 222的主机LBA转换的RAID堆栈220,以VSet到阵列224开始,在226提供阵列LBA和阵列ID,在230用读取/写入高速缓存228提供阵列LBA和阵列ID,VSet222与高级交互式执行(AIX),Unix,Linus和其他常见操作系统一起使用。RAID堆栈220包括在234处提供重映射阵列LBA(s)/ID的动态层或简单层重映射232,接着是数据条带化212的公共代码(RAID)层,提供逻辑设备LBAs和LDNs(逻辑设备号)214以及提供物理设备LBA和LDN 218的奇偶校验条带化216。
根据本发明的特征,一种用于实现存储适配器增强写入高速缓存管理的方法和控制器102,包括写入高速缓存引擎132,实现自动读取以写入到高速缓存,通常在没有固件参与的情况下或一直到存储设备108,从写入高速缓存执行完整或部分读取命中。
参考图3、4和5,这里示出了示例性的读取,写入和降级操作,其中在框拐角中具有点的框表示硬件HW将控制传递给固件FW以处理操作的位置。
现在参考图3,这里示出了根据优选实施例的硬件支持的通常由参考字符300指定的示例读取操作,该硬件包括图2A和图2B的相应示例逻辑块地址(LBA)转换RAID堆栈,其被包含在用于实施存储适配器增强写入高速缓存管理的控制器102中。对于主机LBA和AFDASDRAID堆栈,在框302、304处示出读取LBA长度,并且在框306、308示出跳过掩码。如图所示,FDDASD到阵列或反向数据条带化框310提供被应用到写入/读取高速缓存328的数据条带框312、314、316、318、320、324、326。对于主机LBA和Vset RAID堆栈,读取LBA长度在框330、332处示出,跳过掩码在框334、336以及在LBA 338处大于32位示出。VSet到阵列框340提供无偏移框342,非零偏移框344,Vset框346的过去末端和应用到写入/读取高速缓存328的小于256K长度框348。如所示,写入高速缓存328提供全部命中,4K对齐350,全部命中,跳过352,全部命中,而非4K对齐开始和结束354,全部命中,而非4K对齐开始356,以及全部命中,而不是4K对齐结束358。如所示出的,写入读取高速缓存328提供没命中,4K对齐360,没命中,跳过362,没命中,非4K对齐开始和结束364,没命中,非4K对齐开始366,以及没命中,非4K对齐结束368。如所示出的,写入读取高速缓存328提供部分命中,4K对齐370,局部命中,跳过372,部分命中,非4K对齐的开始和结束374,部分命中,非4K对齐开始376,以及部分命中,非4K对齐结束378。
如所示出的,写入读取高速缓存328在框380处提供进行中的读取(RIP),进行中的镜像(MIP)和进行中的叠加(OIP),在框382处提供65个高速缓存行(CLs),在框384小于4KCL中提供部分命中和在框386处提供部分命中chicken切换,以适应异常情况。如没有高速缓存的框387以及没有动态层的框388所示出的,读取进入数据条带化框389,其提供数据条带框如312、314、316、318、320、322、324、326、327和329所示。否则,动态层框390在框391不提供交换,在框392提供交换相同的冗余组(RG),在框393不提供交换不同的RG,在框394提供在进行中的交换,和/或在框395提供交叉带。数据条带框389在框396提供交叉子阵列,和/或在框398提供命中的暴露的驱动器。
根据本发明的特征,包括写入高速缓存引擎132的用于实现存储适配器增强写入高速缓存管理的方法和控制器102,实现硬件中支持的自动写入操作,其中所述硬件使用不同的控制框或硬件引擎生成操作链以通常在没有固件参与的情况下执行写入或覆盖写入到所述写入高速缓存。
现在参考图4,这里示出了根据优选实施例的硬件支持的通常由参考字符400指定的示例写入操作,该硬件包括图2A和图2B的相应示例逻辑块地址(LBA)转换RAID堆栈,其被包含在用于实施存储适配器增强写入高速缓存管理的控制器102中。对于主机LBA和AFDASDRAID堆栈,写入LBA长度在框402、404处示出,并且跳过掩码在框406、408处示出。如所示出的,AFDASD到阵列或反向数据条带化框410提供应用到写入/读取高速缓存415的数据条带框412、414。对于主机LBA和Vset RAID堆栈,在框416,418处示出读取LBA长度,在框420,422处示出跳过掩码,并且在框424处示出大于32位的LBA。VSet到阵列框426提供无偏移框428,430,非零偏移框432,Vset框432的过去末端以及应用到写入/读取高速缓存415的大于256K长度的框434。如图所示,写入高速缓存415提供快速写入,4K对齐438,快速写入,跳过440,快速写入,非4K对齐的开始和结束442,快速写入,非4K对齐开始444,快速写入,非4K对齐结束446。如图所示,写入读取高速缓存415提供具有覆盖(Ov)的快速写入(FW),4K对齐448,具有覆盖(Ov)的快速写入(FW),跳过450,具有覆盖(Ov)的快速写入(FW),非4K对齐开始和结束452,具有覆盖(Ov)的快速写入(FW),非4K对齐开始454,具有覆盖(Ov)的快速写入(FW),非4K对齐结束456。如所示出的,写入读取高速缓存415在框458处提供进行中的读取(RIP),进行中的镜像(MIP)和进行中的叠加(OIP)。如所示出的,在框460没有高速缓存,以及在框462没有动态层,以及在框464具有非单个驱动器RAID-0,所述写入进行到数据条带化框466,其提供数据R0-1条带框468。
现在参考图5,这里示出了根据优选实施例的通常由参考字符500所指定的硬件支持的示例性降级操作,包括图2A和图2B的示例逻辑块地址(LBA)转换,图2A和图2B被包括在用于实施存储适配器增强写入高速缓存管理的控制器102中。如方框502所示,降级搜索或者在LRU(在阵列中使用的链表)或者在阵列偏移(阵列LBA)开始;并且降级搜索在最大请求大小或跨度或256K条带边界(64个CLs)的末端结束。带有DIP/MIP/OIP的CLs被注意,否则被忽略。如框504所示,在有或没有双控制器102的情况下提供降级操作。与读取和写入操作300、400不同,固件用于产生硬件操作链以执行总体降级。这是因为由于支持许多不同的RAID级别和其他复杂性而造成的降级变化的次数太多,硬件无法在没有固件协助的情况下处理。示出具有4K LBA/长度框506和大于32位LBA框508的写入/读取缓存505。降级操作包括降级,4K对齐510,降级跳过512,降级非4K对齐开始和结束514,降级,非4K对齐开始516和降级,非4K对齐结束518。动态层重新映射框520在框522处不提供交换,在框524提供交换相同的RG,在框526提供交换不同的RG,在框528提供进行中的交换,和/或在框530提供交叉带。如没有动态层的框532所示,降级进行到数据条带化框534,其提供如图所示的数据条带框536、538、540、542、544、546、548、550、552和554。数据条带框534在框556提供交叉子阵列,和/或在框558提供命中的暴露的驱动器。
现在参考图6,其示出了根据优选实施例的控制存储(CS)中的示例性高速缓存行(CL)结构,通常由参考字符600来指定,并被包括在用于实现存储适配器增强写入高速缓存管理的控制器102中。高速缓存行(CL)结构600包括具有CS状态定义的字节0-7,如下所示:7=分配的CL,由分配引擎设置
6=位置位
5=PIP(清除进行中)打开并在CL被标记用于清除时递增计数器(在取消分配时递减计数器)
4=MIP(镜像在进行中),在HASH中,在LRU中
3=HASH链接有效(可能或可能不在LRU中)
2=RIP(读取在进行中)可能或不可能在LRU中
1=DIP(降级在进行中)不在LRU中
0=OIP(在镜像后移除覆盖,合并掩码在进行中)不在LRU中。
CL状态定义允许跟踪以下状态:在将数据/目录镜像到本地/远程NV内存时的写入操作期间,镜像在进行中(MIP);在使用覆盖操作进行写入期间,覆盖在进行中(OIP);在读取操作期间,读取在进行中(RIP);在降级操作期间,降级在进行中(DIP)。操作(OP)构建号会随着每个缓存条目而增加。用于LRU的CS地址Up指针,较低6位=0,以及用于LRU的CS地址Down或下一指针,较低6位=0。用于散列的CS地址先前指针,较低6位=0,以及用于散列的CS地址下一个指针,较低6位=0。高速缓存行(CL)结构600包括压缩索引值。
在NV分配操作中,位置位被设置并且对于所有CLs在第一个CL之后递增计数器。对于每个CL,计数器递减,NV位取消分配中设置了位置位。当FW确定在启动降级操作之前应该允许写入高速缓存达到多完整时,FW就会使用此计数器。较高的位置计数允许更完整的WC。
现在参考图7,这里示出了用于自动镜像到数据存储(DS)的控制存储(CS)中的示例性高速缓存行(CL)结构,通常由参考字符700来指定,并被包括在根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器中。用于自动镜像700到数据存储器(DS)的控制存储器(CS)中的高速缓存行(CL)结构包括阵列ID,掩码,6B阵列偏移,0x80或C0,操作(OP)构建号和压缩索引值。
现在参考图8,其示出了根据优选实施例的数据存储(DS)中的示例性高速缓存行(CL)结构,通常由参考字符800来指定,并被包括在用于实现存储适配器增强写入高速缓存管理的控制器中。如图所示,DS 800中的CL具有标识CL是有效的(即分配的)所需的最少信息,数据用于哪个阵列ID和LBA,op构建号以及压缩相关信息。
现在参考图9,这里示出了根据优选实施例的示例本地SAS和远程SAS高速缓存行(CL)控制存储(CS)镜像或SAS镜像删除到数据存储(DS),通常由参考字符900来指定,并被包括在用于实现存储适配器增强写入高速缓存管理的控制器中。本地SAS高速缓存行(CL)控制存储(CS)902包括到本地数据存储DS 906的本地SAS镜像或SAS镜像删除路径904。将SAS互连908提供给远程SAS高速缓存行(CL)控制存储(CS)910和远程数据存储DS 912。从本地CS 902向远程数据存储DS 912提供远程SAS镜像或SAS镜像删除路径914。
现在参考图10A和10B,其示出根据优选实施例的硬件中的高速缓存行(CL)状态中的示例事务,通常由参考字符1000来指定,并被包括在用于实现存储适配器增强写入高速缓存管理的控制器中。高速缓存行CL状态事务1000包括具有HASH和LRU有效的空闲池1002,分配1004,具有HASH和LRU有效的镜像1006以及具有HASH列表有效和LRU列表有效的空闲1008。如图所示,空闲池1002,分配1004,镜像1006和空闲1008中的每一个包括7=分配的CL的CL状态,由分配引擎设置,6=局部位,5=清除状态,4=MIP,3=HASH链接有效,2=RIP,1=DIP,0=OIP。高速缓存行CL状态事务1000包括HASHV&OIP&LRU=NULL 1010,HASHV,&DIP&LRU=NULL 1012,以及HASHV&DIP&LRU=VALID 1014,HASHV&RIP&DIP&LRU=NULL 1016,以及RIP&LRU/HASH=NULL1018。在标有1020的行下面,HASHV,RIP,DIP,OIP仅在设置时被列出。
还参考图10B连同图10A中的相应的CL状态事务行1A-9B,如果1B发现MIP/RIP/DIP/OIP被设置,则高速缓存行CL状态事务1000包括在1022处的安装包括循环该控制框(CB)。如第1A行所示,读取一个页表,并且对于每个CL,MIP和HASHV被打开,一起加入到LRU和HASH中。如第1B行所示,在HASH中搜索下一个CL以获得相同的阵列ID和阵列偏移量,对于找到的每个CL,打开OIP,从LRU移除,放入SAS删除CL镜像页面清单。如1024所示,关闭MIP&OIP。如第2A行所示,读取页面清单,为每个CL关闭MIP。如第2B行所示,如果OIP设置以及相同的阵列ID&阵列偏移读取下一个CL,每个找到的CL关闭OIP,关闭HASHV,从HASH删除放在取消配置页面清单上。
如1026所示,撤消安装。如第3A行所示,读取页面清单,对于每个CL,关闭MIP,关闭HASHV,并从HASH移除。如第3B行所示,读取下一个CL,关闭OIP,关闭PURGE,然后重新加入LRU。如1028所示,如果“4”发现MIP/RIP/OIP,则读取搜索循环该CB到WQ。如第4行所示,搜索HASH以获得匹配的阵列ID和阵列偏移量,每个找到的CL打开RIP,放置组合HDMA2h页面清单;否则,将卷索引写入到组合页面清单。
如1030所示,关闭RIP;阅读组合页面清单,使用跳过掩码。如第5A行所示,每个找到的CL用HASHV开启,关闭RIP。如第5B行所示,在HASHV关闭的情况下找到每个CL,关闭RIP,放上取消分配页面清单。如1032所示,降级,忽略DIP/MIP/OIP。如第6行所示,在HASH中搜索一个256KB范围的阵列偏移量,为每个CL找到打开的DIP,从LRU中删除,放在页面清单中。如1034所示,关闭DIP,阅读页面清单。如第7A行所示,对于在RIP关闭的情况下发现的每个CL,关闭DIP,打开HASHV,从HASH移除,放到取消分配页面清单。如第7B行所示,对于RIP打开的情况下发现的每个CL,关闭DIP,关闭HASHV,从HASH中移除。
如1036所示,撤消降级。如第8行所示,读取页面清单,关闭DIP,关闭清除状态,并将其添加回LRU。如在1038处所示,清除,忽略MIP或分配=0或4:0=0或者如果清除状态=1。如第9A行所示,对于在OIP/DIP关闭和HASHV打开的情况下找到的每个CL,打开清除状态,打开DIP并从LRU移除,放在降级页面清单上。如第9B行所示,对于在OIP/DIP打开或HASHV关闭时发现的每个CL,打开清除状态。
现在参考图11A和11B,这里示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的具有相同阵列ID/LBA的示例高速缓存行(CL)链,其一般分别由参考字符1100、1120指定。在图11A中,如图所示,具有相同阵列ID/LBA的控制存储(CS)中的示例CL链1100包括空闲1102,其包括分配=1,LOC=0/1,HASHV=1(LRU=有效);包括Allocate=1,LOC=0/1,HASHV=1(LRU=有效),RIP=1的RIP 1104;包括分配=1,LOC=0/1,HASHV=1,DIP=1的DIP 1106;包括Allocate=1,LOC=0/1,HASHV=1,RIP=1,DIP=1的RIP/DIP 1108;包括Allocate=1和包括Allocate=1,LOC=0/1,HASHV=1(LRU=有效)的空闲1112的ALLOCATED 1110;以及包括Allocate=1,LOC=0/1,MIP=1,HASHV=1(LRU=有效)的MIP 1114以及包括分配=1,LOC=0/1,HASHV=1的OIP 1116。
在图11B中,具有相同阵列ID/LBA的数据存储(DS)中的示例CL链1100包括分配的1122,分配的1122包括分配=1和Op构建#=N+X+Y;分配的1124包括Allocate=1和Opbuild#=N+X;和分配的1126包括Allocate=1和Op build#=N.
现在参考图12A,图12B,图12C和图12D分别示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器所包括的用于写入,非优化或临时写入,读取以及降级操作的硬件引擎中的基于控制框(CB)的示例操作链。
在图12A中,通常由参考字符1200指定的示例写入处理包括:分配NV页1202,分配数据存储(DS)中的A页清单;主机DMA到DS压缩1204,用于将数据从主机DMA到A页面列表;写入缓存(WC)覆盖搜索和安装1026,确定在更新CL状态时是否已经覆盖了高速缓存中的现有数据(打开MIP并生成OIP清单或B页清单,确定是否需要扇区IO);XOR扇区I/O合并1208在写入操作的开始和结束时合并非4K数据;SAS镜像1210将页面清单新数据镜像到本地NV DS和远程NV DS;SAS镜像删除1212镜像删除B页面清单;例如,如果SAS镜像或SAS镜像删除失败,关闭MIP&OIP 1214,关闭用于页面清单的MIP并生成OIP的新清单或C页面清单,并关闭MIP&OIP撤消;NV取消分配1216取消分配重叠页面或C页面清单;和SIS发送1218向主机发送响应。
在图12A中,通常由参考字符1220指定的示例非优化或临时写入处理包括在不压缩的情况下XOR Vol到NV拷贝1222。
在图12C中,通常由参考字符1224指定的示例读取处理包括Vol分配1126;WC阅读搜寻1228;SAS读取(或部分读取命中)1230;从DS解压HDMA 1232;VOL取消分配1234;关闭RIP 1236;NV取消分配1238,例如,已经降级的数据;和SIS发送1240。
在图12D中,通常由参考字符1242指定的示例性降级处理包括降级搜索1244;XOR解压缩1246;执行RAID降级参与的各种协助,例如Vol分配/取消分配,PSL锁定/解锁,设置/更新/清除奇偶更新足迹(PUFP),SAS操作;SAS镜像删除1250;例如,如果Destage失败,关闭DIP 1252,以及关闭DIP撤消;和NV取消分配1254。
现在参考图13,这里示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的通常由参考字符1300指定的写入过程的示例操作的流程图,开始于框1302。如判定框1304所示执行对于所提供的易失性页(x2)的检查。当提供易失性页时,然后如框1306所示绕过,并如框1308所示通过AMGR写入。否则,当不提供易失性页时,如判定框1310所示的那样执行高速缓存中可能的数据的检查。当识别出高速缓存中的可能数据时,则如判定框1312所示的执行用于跳过或WC覆盖异常的检查。当识别跳过或WC覆盖异常时,那么如框1316所示,提供易失性分配(x2)或预分配,如框1318所示的主机直接存储器访问(HDMA)如框1320所示通过AMGR写入,以及如框1322所示的Vol取消分配。如方框1323所示,则提供SIS发送,向主机发送响应。
否则,当跳过或WC覆盖异常未被识别时,则根据优选实施例通过执行硬件链接步骤来执行到写入高速缓存的写入:分配在数据存储(DS)中分配A页面清单的NV页面1324;主机DMA到DS压缩1226,用于从主机DMA数据到A页面清单;写入缓存(WC)覆盖层搜索和安装1328确定在更新CL状态时是否覆盖了缓存中的现有数据(打开MIP并生成OIP清单或B页面清单,确定是否需要扇区IO);XOR扇区I/O合并1330在写入操作的开始和结束时合并非4K数据;SAS镜像1332镜像页面清单新数据到本地NV DS和/或到远程NV DS;SAS镜像删除1334镜像删除B页面清单;关闭MIP&OIP 1336关闭用于A页面清单的MIP并生成新的OIP清单或C页面清单;NV取消分配1338重新分配重叠页面或C页面清单;和SIS发送1323向主机发送响应。
现在参考图14,其示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的通常由参考字符1400指定的具有叠加的快速写入上的示例XOR合并。XOR在快速写入上与覆盖层1400合并包括包括处理中的镜像(MIP)和新数据1402的缓冲区A和包括处理中的覆盖层(OIP)的缓冲区B和合并到包括MIP和合并数据1406的缓冲区A中的旧数据1404。
现在参考图15,这里示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的读取处理的通常由参考字符1500指定的示例操作的流程图,开始于框1502。如判定框1504所示执行对于所提供的易失性页(x2)的检查。当提供易失性页时,然后如框1506所示绕过并如框1508所示经由AMGR读取。否则,当不提供易失性页时,如判定框1510所示执行高速缓存中对于可能的数据的检查。当识别出高速缓存中可能的数据时,则如判定框1512所示执行对应跳过或读取搜索异常的检查。当识别跳过或读取搜索异常时,那么如框1516所示提供易失性分配(x2)或预分配,如框1518所示读取AMGR,如方框1520所示主机直接存储访问(HDMA),并且如框1522所示Vol取消分配。如方框1523所示,则提供SIS发送,向主机发送响应。
否则,当跳过或读取搜索异常未被识别时,则根据优选实施例通过执行HW链接步骤来执行从写入高速缓存的读取:Vol Allocate 1524提供A-Vol;WC读取搜索1526,其中B包含来自A的Vol索引和用于缓存中的数据的NV索引,也产生跳过位;通过AMGR读取(2个交叉256KB边界op)1528;从DS解压HDMA1530接收B-NVv;Vol取消分配1532(或无op)接收A-Vol;关闭RIP 1534接收B-NVv并为已设置跳跃位的索引提供关闭RIP的C-CLr;NV取消分配1536,例如提供C-CLr,由于已经通过降级清除,所以只需要取消分配NV索引;和SIS发送1523。
现在参考图16,这里示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的降级构建处理的通常由参考字符1600指定的示例操作的流程图,其开始于框1602。
根据本发明的特征,硬件引擎协助产生具有在或者LRU或者指定的阵列LBA开始的选项的降级操作,并且或者在最大请求的大小/跨度或者在256K条带边界的末端停止。如方框1604所示,通过硬件辅助来调用降级搜索,该硬件辅助将通过散列(hash)表和/或LRU队列搜索写入高速缓存,以便生成降级(打开DIP),如所示出的,其具有或者在LRU或者在指定的阵列LBA开始的选项,或在LRU开始(具有用于HDD的间隙,没有用于SSD的间隙)。如判定框1606所示,执行对于发现的完整256K及允许的完整条带写入(FSW)的检查。当找到完整的256K并且没有找到允许的FSW时,如判定框1608所示,执行对于Op作为单个op驱动不能被完成的检查。当Op作为单个op驱动不能被完成被找到时,如框1610所示执行重叠或串行化的降级,例如,由于当驱动器不支持跳过操作或CL包含具有可能的间隙的扇区I/O时的间隙。当Op作为单个op驱动不能被完成没有找到时,则如框1612所示执行单一降级。
当找到的完整的256K和允许的FSW被识别,则如判定框1614所示执行主要奇偶校验条带开始的检查。当未找到主要奇偶校验条带的开始时,则如框1616所示执行单个降级。当找到主要奇偶校验条带的开始时,如方框1618所示,开始在阵列偏移处调用降级搜索。如判定框1620所示,执行对于所有完整的256或没有的额外的搜索的检查。如果是,则如框1622所示执行多个降级。如果不是,则如方框1624所示,撤消附加的降级或为以后的工作排队。然后如方框1626所示执行单个降级。
现在参考图17是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的单一降级处理的通常由参考字符1700指定的示例操作的流程图,开始于框1702。如在判定框1704所指示执行检查RAID 5或6。如果识别出RAID 5/6,则执行根据优选实施例的以下HW操作步骤,包括:Vol分配(2X缓冲器)1706,XOR解压缩1708,通过AMGR 1710写入,Vol取消分配1712,SAS镜像删除(本地和/或远程)1714,接收B-DIP(降级在进行中),关闭DIP 1716接收B-DIP,并提供C-CLr(例如如果降级失败关闭DIP撤消),NV取消分配1718接收C-CLr,并且如框1720所示完成操作。
如果RAID 5/6未被识别,则执行根据优选实施例的以下HW操作步骤,包括:读取NODEST(XOR解压缩)1722,通过AMGR 1724写入,并继续进行SAS镜像删除(本地和/或远程)1714,接收B-DIP(降级在进行中),关闭接收B-DIP的DIP 1716,并提供C-CLr(例如,如果降级失败则关闭DIP撤消),NV取消分配1718接收C-CLr,以及在框1720完成操作。
现在参考图18,这里示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的多个降级处理的通常由参考字符1800指定的示例操作的流程图,开始于框1802。根据优选实施例执行如下HW操作步骤包括:Vol分配(2X缓冲器)1804,经由AMGR的条带写入1806,Vol取消分配1808,SAS镜像删除(本地和/或远程)1810,接收B-DIP,关闭DIP*N 1812接收B-DIP,并且提供C-CLr,NV取消分配*N 1814接收C-CLr,并且如框1816所示完成操作。
现在参考图19,这里示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的绕过处理的示例操作的流程图,通常由参考字符1900指定,开始于框1902。如框1904所示,在阵列偏移处开始调用降级搜索,以确定OP的大小/跨度。如判定框1906所示,执行对于状态位的OR=0以及写入的索引#=0的检查。如果是,则操作是如框1908所示完成。否则,如果否,则如判定框1910所示,执行写入的索引#是否=0的检查。如果写入的索引#=0,则如框1912所示提供延迟,并且操作返回到框1904,调用降级搜索并继续。如果写入的索引的#不等于0,则如框1914所示执行是否op作为单个op来驱动不能被完成的检查,例如由于间隙,但驱动器不支持跳过操作或CL包含具有可能的间隙的扇区I/O。如果op作为单个来驱动不能被完成,那么如框1916所示执行重叠或串行化的降级。如果op作为单个op来驱动可以被完成,则如1918所示执行单个降级。操作返回到框1904调用降级搜索并继续。
现在参考图20,其示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的示例的基于寄存器的清除硬件辅助工具包,通常由参考字符2000指定。如框2002所示,WC硬件读取所有的CL,任何匹配此范围的将发生以下情况:如果分配=1,PIP=0,MIP=0并且HASHV=1,则打开PIP并递增计数器。如果递增计数器,DIP=0,OIP=0,则打开DIP,从LRU中移除,并将CL放在页表清单中。WC引擎可以在此期间处理CB,此功能将与CB处理交错。FW装载寄存器2004包括:
阵列ID(7:0)2006
由于必须是4KB对齐,开始阵列偏移(44:0),位(2:0)=02008,由于必须是4KB多个,结束阵列偏移大小(44:0),位(2:0)=02010,
页表清单指针(31:0)2012
页表大小(11:0),最高4K-1条目2014
页表当前尺寸(11:0)2016
当前的CL索引(24:0),2018(可以在开始时设置为零,在暂停之后保持)
Max CL索引(24:0)2020
有效位,页表中断位2022;和
当前清除计数器(24:0)2024,对于设置了PIP位的任何CL,取消分配将会递减。
CL 2026包括PIP(正在清除)位2028(设置时递增清除待定计数,递减清除取消分配的待定计数)。事件Q条目2030在页表列表完整并发送清除页面列表事件条目2032时包括上述暂停;当Purge完成扫描并且页表清单不为空时,发送清除页面清单EventQ条目2034(11:10=type=11b),注意:必须重新启动;并且在清除完成并且计数器为零之后,发送清除完成EventQ条目2036(11:10=类型=10b)。值得注意的是FW使用降级搜索来清除用于小范围的LBAs的高速缓存数据。清除引擎应该用于更大范围的LBA。
现在参考图21和22是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的清除引擎处理的示例操作的流程图,通常由参考字符2100指定。在图21中,清除引擎处理开始于框2102,如判定框2104所示,执行WC引擎处于空闲的检查。当WC引擎处于空闲被识别时,如判定框2106所示执行对所有处理的CL的检查。如果不是,则如框2108所示处理CL,并且如判定框2110所示执行页面清单完整的检查。如果页面清单不完整,则如判定框2112所示,执行是否在256K边界的检查。如果是,则操作返回到判定框2104检查WC引擎空闲并继续。否则,如果页面清单是完整的,则如框2114所示,提供用有效的索引#来指示部分清除。当处理所有CL时,如判定框2116所示执行检查空白页面清单。如果页面清单不是空的,那么用在框2114提供的有效索引#来指示部分清除。如果页面清单为空,那么如判定框2118所示执行零清除计数器的检查。如果是的,如方框2120所示,指示清除完成。否则如方框2122所示操作完成。
参考图22所示,在方框2202处开始的清除请求包括检查如判定框2204所示的当前正被执行的清除过程。如果是,则清除请求如方框2205所示排队。否则如方框2206所示,用于阵列ID和LBA范围的清除引擎例程被调用。如判定框2208所示,执行对于所找到的索引和暂停的清除引擎的检查。如果是,则如方框2210所示执行SAS镜像删除(本地和/或远程)。如框2212所示DIP被关闭,并且如框2214所示提供NV取消分配。如框2216所示,清除引擎重新启动(未暂停),并检查找到的索引以及暂停的清除引擎,返回到判定框2208并继续。当找到的索引以及暂停的清除引擎未被识别时,如框2218所示清除完成。然后如判定框2220所示执行是否有排队的清除请求的检查。如果是,则操作在框2206处返回以调用针对阵列ID和LBA范围的清除引擎例程并继续。否则,操作如框2222所示完成。
现在参考图23,示出了根据优选实施例的用于实施存储适配器增强写入高速缓存管理的控制器102所包括的示例硬件计数器和统计,通常由参考字符2300指定。硬件计数器和统计数据2300由HW在每个阵列ID基础上维护,包括:
当前计数器值CL 2302
当前计数器值位置位2304
HWM CL 2306
HWM位置位2308
LWM CL 2310
LWM位置位2312
LRU UP,LRU上最旧的CL条目,零=空2314
LRU DOWN,下一个位置将放置新的CL,零=空2316
当前计数器值WC安装总计2318
当前计数器值WC使用重叠进行安装2320
当前计数器值WC读取总计2322;和
当前计数器值WC用全部缓存读取命中读取2324
根据本发明的特征,对于大多数硬件控制下的高速缓存管理,固件很难帮助管理每个阵列高速缓存阈值(即,每个阵列的高速缓存中所需的数据级别)和每个阵列高速缓存限制(即在每个阵列高速缓存中的最大数据量)而无需硬件帮助。还有总体(非阵列)阈值和管理限制。硬件提供从固件和输出(寄存器和事件)到固件的输入(寄存器),以帮助管理高速缓存阈值和限制。
根据本发明的特征,提供了一种新的基于触发器的方法来动态优化降级速率。新的基于触发器的方法使用一组寄存器来缓存页面高低触发器和高速缓存CLs的高低触发器。硬件维护这些计数中的每一个的计数器,并且当硬件计数器跨越这些高或低触发器中的任何一个时,它产生固件要处理的事件。当这些触发值被越过并且这些事件被处理时,固件随后相应地调整降级队列深度。如果高速缓存页或高速缓存cls高水位标记(watermark)被越过,则可以增加降级队列深度。同时,高和低高速缓存页面和/或高速缓存CL的寄存器值将增加以检测下一个交叉点。如果高速缓存页面或CL低水位标记被越过,则降级速率可能会随着高位和低水位标记的设置而降低。降级速率将由高速缓存页面或高速缓存CLs决定。为避免过多事件,当或者高速缓存页面或者高速缓存CLs超过高水位标记时,两者的高水位标记都会上移。但是,移动利用率最高的资源的低水位标记是非常重要的。从本质上讲,造成更高降级率的资源是必须监测低水位以检测何时可以降低降级率的唯一资源。
根据本发明的特征,当高速缓存页面或CL低水位标记被越过时,如果它是较低资源,则降级速率将不会改变,并且只有该资源的低水位必须被调低。如果是较高的资源,则必须检查较低的已用资源级别以确定它是否已成为较高使用率的资源。则降级率将基于较高的资源来被设置。而且,两个高水位标记都是基于较高的资源设置的。接下来,较高资源的低水位标记必须设置在下一个较低降级率的触发点。最后,如果较低资源的低水位较较高资源的新设置在更高的点,则它也必须降低。
根据本发明的特征,每个基于阵列触发器的方法动态调整每个资源限制。这为每个资源高速缓存CLs高低触发器以及每个资源位置计数高低触发器使用一组寄存器。硬件维护这些计数中的每一个的计数器,并且当硬件计数器跨越这些高或低触发器中的任何一个时,它产生固件要处理的事件。基本上这些触发器用于监视CLs与位置计数的比率并调整每个资源限制。如果CL计数越过高水位标记,那么应该降低极限。同时,应增加CLs的高低水位。如果位置计数越过高水位标记,则应增加限制,并增加用于位置计数的高和低水位标记。如果CL计数超过了低水位标记,那么应该增加该限制,并且应该降低CLs的高和低水位标记。如果局部计数超过了低水位标记,那么应该减少这个界限,并且应该降低位置计数的高低水位。
现在参考图24和图25,其示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的示例CL限制和阈值,通常分别由参考字符2400,2500指定。
在图24中,在2402处示出用于NV 4K索引(缓存目录的大小)的总体限制和用于NV4K索引的总体阈值(限制的nn%)的CL限制和阈值2400,以及在2404用示例高水位标志(HWM)和低水位标志(LWM)示出用于NV 528索引的总体限制(实际高速缓存的大小)和用于NV 528索引(极限的n%)的总体阈值。如阵列#1,2406,阵列#2,2408,阵列#3,2410和阵列#4,2412所示,相应示例每阵列限制以虚线示出并且每阵列阈值相对于HWM和LWM以虚线示出。
在图25中,CL限制和阈值2500包括来自寄存器2504的来自HW 2502的输入,包括
CL计数(每阵列ID)
CL位置计数(每阵列ID)
NV 4K自由索引(通过头/尾指针)以及
NV 528自由索引(通过头/尾指针)。来自事件2506的来自HW 2502的输入包括:
NV 4K在HWM以上
NV 4K在HWM以下
NV 528在HWM以上
NV 528在HWM以下
阵列CL计数在HWM以上
阵列CL计数在HWM以下
阵列CL位置计数在HWM以上
阵列CL位置计数在LWM以下
FW限制和阈值计算功能1508接收来自HW 2502的输入并将输出提供给HW 2510,包括CL限制(每个阵列)2512的更新。这通过使用FW阵列等待Q更新端口的加或减来完成。到HW2510的输出包括用于基于CL计数和CL位置计数的阵列的HWMs/LWMs的更新2514。注意用于NV 4K和NV 528自由索引的HWMs/LWMs不经常改变。其他输出2516包括降级率2518。
现在参考图26中,这里示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的全局事件处理的示例操作的流程图,通常由参考字符2600指定。如判定框2602所示,识别HWM或LWM。对于HWM,如判定框2604所示,识别页面或CL。如框2606所示,页面和CL HWM针对所识别的页面增加。如框2608所示,页面LWM增加。如框2610所示,页面和CL HWM针对所识别的CL增加。如框2612所示,CL LWM增加。如框2614所示,降级率增加。对于LWM,如判定框2615所示,识别页面或CL。如框2616所示,针对所识别的页面执行页面是否大于CL的检查。如框2620所示如果页面大于CL时,页面和CL HWM减小。当页面不大于CL时,页面LWM被置零,并且如框2622所示CL LWM被设置。如判定框2624所示执行检查以识别降低降级速率的需要。当需要降低降级速率未被识别时,则如框2626所示全局事件处理完成。如框2628所示顶级资源LWM降低。如框2630所示降级速率减少,然后全局事件处理在框2626完成。如判定框2632所示,执行针对所标识的CL的页面是否小于CLs的检查。当页面小于CLs时,页面和CL HWM在框2620减小。当页面不小于CL时,CL LWM被置为零,并且页面LWM被设置为如框2634所示。如判定框2636所示执行检查以识别降低降级速率的需要。当需要降低降级速率未被标识时,则在框2626完成全局事件处理。如框2630所示,然后降级速率降低,然后降级全局事件处理在框2626处完成。
现在参考图27,其是示出根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的每阵列处理的示例步骤的流程图,通常由参考字符2700指定。如判定框2702所示,HWM或LWM被识别。对于HWM,如判定框2704所示,识别地点或CL。如框2706所示,CL HWM和LWM针对所识别的CL而增加。如框2708所示,阵列CL限制减少。如框2710所示,针对所识别的地点增加地点HWM和LWM。如框2712所示,阵列CL限制增加。然后,如判定框2714所示,执行检查以确定CL计数是否需要更高的降级率。如果CL计数需要较高的降级率,则如方框2716所示增加阵列降级率,并且如框2718所示每一阵列处理结束。对于LWM,如判定方框2720所示,位置或CL被识别。如框2722所示,针对所识别的CL,CL HWM和LWM减少。如框2724所示,增加了阵列CL限制。如框2726所示,对于所识别的位置,位置HWM和LWM减少。如框2728所示,阵列CL限制减小。然后操作返回到判定框2714,执行检查以确定CL计数是否需要更高的降级率,并且继续。
现在参考图28和图29,这里分别示出了根据优选实施例的用于实现存储适配器增强写入高速缓存管理的控制器102所包括的通常由参考字符2800指定的示例全局触发器和通常由参考字符2900指定的每阵列触发器。在图28中,全局触发器2800包括相对于垂直轴全部示出的降级率和相对百分比,相对于水平轴示出时间。在图29中,每阵列触发器2900包括相对于垂直轴示出的降级率和CL数量/位置/限制,相对于水平轴示出的时间以及大的/顺序的Ops的区域以及随机Ops。在图29中,如所示出的,CL计数用实线示出,位置计数用虚线示出,CL限制用虚线示出。
图30示出了示例设计流程3000的框图。设计流程3000可以根据正在设计的IC的类型而变化。例如,用于构建应用专用IC(ASIC)的设计流程3000可以不同于用于设计标准组件的设计流程3000。设计结构3002优选地是对设计过程3004的输入并且可以来自IP提供商,核心开发商或其他设计公司,或者可以由设计流程的运营商或者从其他来源产生。设计结构3002包括原理图或HDL形式的IOA或控制器102,硬件描述语言,例如Verilog,VHDL,C等。设计结构3002可以包含在一个或多个机器可读介质上。例如,设计结构3002可以是控制器102和性能状态机200的文本文件或图形表示。设计过程3004优选地将控制器102合成或转换成网表3006,其中网表3006例如是导线,晶体管,逻辑门,控制电路,I/O,模型等的列表,其描述与集成电路设计中其他元件和电路的连接并被记录在机器可读介质的至少一个上。这可能是一个迭代过程,其中网表3006根据电路的设计规格和参数被重新合成一次或多次。
设计过程3004可以包括使用各种输入;例如来自库元件3008的输入,所述库元件3008可以容纳用于给定制造技术的一组常用元件,电路和设备,包括模型,布局和符号表示,诸如不同技术节点,32nm,45nm,90nm等,设计规范3010,特征数据3012,验证数据3014,设计规则3016和测试数据文件3018,其可以包括测试模式和其他测试信息。设计过程3004可以进一步包括例如标准电路设计过程,例如定时分析,验证,设计规则检查,布局和布线操作等。集成电路设计领域的普通技术人员可以理解在设计过程504中使用的可能的电子设计自动化工具和应用的程度,而不偏离本发明的范围和精神。本发明的设计结构不限于任何特定的设计流程。
设计过程3004连同任何附加的集成电路设计或数据(如果适用的话),优选地转换如图1A和1B所示的本发明的实施例到第二设计结构3020中。设计结构3020驻留在用于交换集成电路的布局数据的数据格式的存储介质上,例如,以GDSII(GDS2),GL1,OASIS或用于存储这种设计结构的任何其他合适的格式存储的信息。设计结构3020可以包括诸如例如测试数据文件,设计内容文件,制造数据,布局参数,导线,金属级别,通孔,形状,用于通过制造线路线的数据以及由制造如图1A和1B所示的本发明实施例的半导体制造商需要的任何其他数据的信息。设计结构3020然后可以进行到阶段3022,在阶段3022中,例如,设计结构3020继续到出带,被释放到制造,被释放到掩模室,被发送到另一个设计室,被发回到客户,等等。
尽管已经参考附图中所示的本发明的实施例的细节描述了本发明,但是这些细节并不旨在限制如所附权利要求所要求保护的本发明的范围。
Claims (18)
1.一种数据存储系统,包括:
实现用于存储写入高速缓存的存储适配器增强存储写入高速缓存管理的控制器,包括:
实现存储写入高速缓存硬件加速的硬件写入高速缓存引擎;并且
所述硬件写入高速缓存引擎基本上不使用固件来管理存储写入高速缓存数据和元数据;其中硬件写入高速缓存引擎管理存储写入高速缓存数据和元数据包括在独立驱动器冗余阵列(RAID)堆栈中提供所述存储写入高速缓存,其中基于阵列ID/阵列LBA(逻辑块地址)执行写入高速缓存。
2.如权利要求1所述的数据存储系统,其中所述硬件写入高速缓存引擎提供CL(高速缓存行)的硬件操作。
3.如权利要求1所述的数据存储系统,其中所述硬件写入高速缓存引擎在写入操作,读取操作和降级操作期间使用CL(高速缓存行)定义以跟踪CL状态。
4.如权利要求1所述的数据存储系统,其中所述硬件写入高速缓存引擎执行向所述存储写入高速缓存的写入,包括所述硬件写入高速缓存引擎从存储写入高速缓存控制存储(CS)到存储写入高速缓存数据存储(DS)的镜像。
5.根据权利要求4所述的数据存储系统,其中所述硬件写入高速缓存引擎从存储写入高速缓存控制存储(CS)到存储写入高速缓存数据存储(DS)的镜像包括在所述控制器中的本地镜像以及到双控制器的远程镜像。
6.如权利要求1所述的数据存储系统,其中所述硬件写入高速缓存引擎从所述存储写入高速缓存执行读取,包括来自所述存储写入高速缓存的全部或部分读取命中。
7.如权利要求5所述的数据存储系统,其中所述硬件写入高速缓存引擎从所述存储写入高速缓存执行降级,包括所述硬件写入高速缓存引擎使用散列表和最近最少使用(LRU)队列中的一个从所述存储写入高速缓存生成降级操作搜索。
8.一种在数据存储系统中实现存储适配器增强存储写入高速缓存管理的方法,包括:
提供包括硬件写入高速缓存引擎的控制器;
提供用于实现存储写入高速缓存硬件加速的所述硬件写入高速缓存引擎;和
提供用于基本上不使用固件来管理存储写入高速缓存数据和元数据的所述硬件写入高速缓存引擎;
在独立驱动器冗余阵列(RAID)堆栈中提供所述存储写入高速缓存,其中基于阵列ID/阵列LBA(逻辑块地址)执行写入高速缓存。
9.如权利要求8所述的方法,包括所述硬件写入高速缓存引擎提供CL(高速缓存行)的硬件操作。
10.如权利要求8所述的方法,包括所述硬件写入高速缓存引擎在写入操作,读取操作和降级操作期间,使用CL(高速缓存行)定义并跟踪CL状态。
11.如权利要求8所述的方法,包括所述硬件写入高速缓存引擎执行向所述存储写入高速缓存的写入,包括所述硬件写入高速缓存引擎从存储写入高速缓存控制存储(CS)到所述控制器中的存储写入高速缓存数据存储(DS)的镜像以及到双控制器的远程镜像。
12.如权利要求8所述的方法,包括所述硬件写入高速缓存引擎从所述存储写入高速缓存执行读取,包括来自所述存储写入高速缓存的全部或部分读取命中。
13.如权利要求8所述的方法,包括所述硬件写入高速缓存引擎从所述存储写入高速缓存执行降级,包括所述硬件写入高速缓存引擎使用散列表和最近最少使用(LRU)队列中的一个从所述存储写入高速缓存生成降级操作搜索。
14.一种机器可读介质,其上存储有机器可读程序指令,所述机器可读程序指令在机器上运行时使得所述机器执行在数据存储系统中实现存储适配器增强存储写入高速缓存管理的方法,所述方法包括:
提供包括硬件写入高速缓存引擎的控制器;
提供用于实现存储写入高速缓存硬件加速的所述硬件写入高速缓存引擎;和
提供用于基本上不使用固件来管理存储写入高速缓存数据和元数据的所述硬件写入高速缓存引擎;
在独立驱动器冗余阵列(RAID)堆栈中提供所述存储写入高速缓存,其中基于阵列ID/阵列LBA(逻辑块地址)执行写入高速缓存。
15.如权利要求14的机器可读介质,其中所述机器可读介质还存储用于交换集成电路的布局数据的数据格式。
16.如权利要求14的机器可读介质,其中所述机器可读介质还存储测试数据文件,特征数据,验证数据或设计规范中的至少一个。
17.如权利要求14的机器可读介质,其中所述机器可读介质还存储描述所述控制器电路的网表。
18.如权利要求14的机器可读介质,其中所述硬件写入高速缓存引擎管理存储写入高速缓存数据和元数据,包括所述硬件写入高速缓存引擎向存储写入高速缓存写入和从所述存储写入高速缓存读取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562252749P | 2015-11-09 | 2015-11-09 | |
US62/252,749 | 2015-11-09 | ||
PCT/IB2016/056677 WO2017081593A1 (en) | 2015-11-09 | 2016-11-07 | Implementing hardware accelerator for storage write cache management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108351832A CN108351832A (zh) | 2018-07-31 |
CN108351832B true CN108351832B (zh) | 2022-07-29 |
Family
ID=58663375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680065411.6A Active CN108351832B (zh) | 2015-11-09 | 2016-11-07 | 实现用于存储写入高速缓存管理的硬件加速器 |
Country Status (6)
Country | Link |
---|---|
US (13) | US9940250B2 (zh) |
JP (1) | JP6842620B2 (zh) |
CN (1) | CN108351832B (zh) |
DE (1) | DE112016004527T5 (zh) |
GB (1) | GB2561108B (zh) |
WO (1) | WO2017081593A1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9940250B2 (en) * | 2015-11-09 | 2018-04-10 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management for writes to storage write cache |
US10191775B2 (en) * | 2015-12-20 | 2019-01-29 | Sqream Technologies Ltd. | Method for executing queries on data chunks using graphic processing units |
GB201709499D0 (en) * | 2017-06-15 | 2017-08-02 | Microsoft Technology Licensing Llc | Memory management in non-volatile memory |
US11151037B2 (en) | 2018-04-12 | 2021-10-19 | International Business Machines Corporation | Using track locks and stride group locks to manage cache operations |
US10606776B2 (en) | 2018-04-16 | 2020-03-31 | International Business Machines Corporation | Adding dummy requests to a submission queue to manage processing queued requests according to priorities of the queued requests |
US10776013B2 (en) | 2018-04-27 | 2020-09-15 | International Business Machines Corporation | Performing workload balancing of tracks in storage areas assigned to processing units |
US10831597B2 (en) | 2018-04-27 | 2020-11-10 | International Business Machines Corporation | Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data |
US10884849B2 (en) | 2018-04-27 | 2021-01-05 | International Business Machines Corporation | Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data |
US10509723B1 (en) | 2018-06-12 | 2019-12-17 | International Business Machines Corporation | Expedited cache destage for power interruption in a virtual storage appliance |
CN108958656B (zh) * | 2018-06-27 | 2021-01-08 | 北京计算机技术及应用研究所 | 基于raid5固态硬盘阵列的动态条带系统设计方法 |
US10901906B2 (en) | 2018-08-07 | 2021-01-26 | International Business Machines Corporation | Write data allocation in storage system |
US10579332B1 (en) | 2018-08-31 | 2020-03-03 | International Business Machines Corporation | Hardware sort accelerator sharing first level processor cache |
US10725738B2 (en) | 2018-08-31 | 2020-07-28 | International Business Machines Corporation | Adaptive sort accelerator sharing first level processor cache |
US11347653B2 (en) | 2018-08-31 | 2022-05-31 | Nyriad, Inc. | Persistent storage device management |
CN109274550B (zh) * | 2018-09-07 | 2020-07-31 | 电信科学技术第五研究所有限公司 | 一种iSCSI自适应IO队列深度匹配方法 |
US11645174B2 (en) * | 2019-10-28 | 2023-05-09 | Dell Products L.P. | Recovery flow with reduced address lock contention in a content addressable storage system |
CN113326020A (zh) * | 2020-02-28 | 2021-08-31 | 北京百度网讯科技有限公司 | 缓存器件、缓存器、系统、数据处理方法、装置及介质 |
US11803485B2 (en) * | 2021-03-11 | 2023-10-31 | International Business Machines Corporation | Microservice system with global context cache |
JP7232281B2 (ja) | 2021-03-29 | 2023-03-02 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
CN113377288B (zh) * | 2021-04-30 | 2024-03-12 | 深圳大普微电子科技有限公司 | 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘 |
CN117420968B (zh) * | 2023-12-19 | 2024-03-12 | 苏州元脑智能科技有限公司 | 存储控制器、存储设备的访问控制方法和存储系统 |
CN118244996B (zh) * | 2024-05-28 | 2024-08-09 | 山东云海国创云计算装备产业创新中心有限公司 | 硬盘读写方法、装置、电子设备、可读存储介质及产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5668948A (en) * | 1994-09-08 | 1997-09-16 | International Business Machines Corporation | Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports |
CN101110094A (zh) * | 2006-07-20 | 2008-01-23 | 美国博通公司 | 硬盘驱动器设计系统及其设计方法 |
CN101131624A (zh) * | 2007-08-17 | 2008-02-27 | 杭州华三通信技术有限公司 | 存储控制系统及其处理节点 |
CN102150147A (zh) * | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4768148A (en) * | 1986-06-27 | 1988-08-30 | Honeywell Bull Inc. | Read in process memory apparatus |
US5542066A (en) | 1993-12-23 | 1996-07-30 | International Business Machines Corporation | Destaging modified data blocks from cache memory |
US5581737A (en) * | 1994-09-12 | 1996-12-03 | International Business Machines Corporation | Method and apparatus for expansion, contraction, and reapportionment of structured external storage structures |
US6119209A (en) * | 1998-02-03 | 2000-09-12 | International Business Machines Corporation | Backup directory for a write cache |
US6192450B1 (en) * | 1998-02-03 | 2001-02-20 | International Business Machines Corporation | Destage of data for write cache |
US6134624A (en) * | 1998-06-08 | 2000-10-17 | Storage Technology Corporation | High bandwidth cache system |
US6460122B1 (en) * | 1999-03-31 | 2002-10-01 | International Business Machine Corporation | System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment |
US6574709B1 (en) * | 1999-09-30 | 2003-06-03 | International Business Machine Corporation | System, apparatus, and method providing cache data mirroring to a data storage system |
US6438651B1 (en) * | 1999-11-01 | 2002-08-20 | International Business Machines Corporation | Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer |
US6839827B1 (en) * | 2000-01-18 | 2005-01-04 | International Business Machines Corporation | Method, system, program, and data structures for mapping logical blocks to physical blocks |
US6728818B2 (en) | 2001-06-27 | 2004-04-27 | International Business Machines Corporation | Dual storage adapters utilizing clustered adapters supporting fast write caches |
EP1595363B1 (en) | 2001-08-15 | 2016-07-13 | The Board of Governors for Higher Education State of Rhode Island and Providence Plantations | Scsi-to-ip cache storage device and method |
US7275135B2 (en) * | 2001-08-31 | 2007-09-25 | Intel Corporation | Hardware updated metadata for non-volatile mass storage cache |
US6857045B2 (en) | 2002-01-25 | 2005-02-15 | International Business Machines Corporation | Method and system for updating data in a compressed read cache |
US6928524B2 (en) * | 2002-12-05 | 2005-08-09 | International Business Machines Corporation | Data processing system with naked cache line write operations |
US7010645B2 (en) | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US7380059B2 (en) * | 2003-05-16 | 2008-05-27 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US20050144509A1 (en) * | 2003-12-24 | 2005-06-30 | Fernando Zayas | Cache search accelerator method |
US7356651B2 (en) | 2004-01-30 | 2008-04-08 | Piurata Technologies, Llc | Data-aware cache state machine |
US7360021B2 (en) | 2004-04-15 | 2008-04-15 | International Business Machines Corporation | System and method for completing updates to entire cache lines with address-only bus operations |
JP2006244123A (ja) * | 2005-03-03 | 2006-09-14 | Fujitsu Ltd | データストレージシステム及びデータストレージ制御装置 |
WO2007012921A2 (en) | 2005-07-27 | 2007-02-01 | Adaptec, Inc. | Parity update footprints kept on disk |
US7424577B2 (en) * | 2005-08-26 | 2008-09-09 | Network Appliance, Inc. | Dynamic optimization of cache memory |
US7395377B2 (en) * | 2006-04-20 | 2008-07-01 | International Business Machines Corporation | Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management |
US8332370B2 (en) * | 2006-05-09 | 2012-12-11 | Hewlett-Packard Development Company, L.P. | Maintaining commonly named client-specific file content in hard disk drive emulation |
US9015501B2 (en) * | 2006-07-13 | 2015-04-21 | International Business Machines Corporation | Structure for asymmetrical performance multi-processors |
US7555599B2 (en) * | 2006-09-06 | 2009-06-30 | International Business Machines Corporation | System and method of mirrored RAID array write management |
US7996609B2 (en) * | 2006-12-20 | 2011-08-09 | International Business Machines Corporation | System and method of dynamic allocation of non-volatile memory |
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 |
GB2496798B (en) * | 2010-07-27 | 2016-10-12 | Ibm | Logical to physical address mapping in storage systems comprising solid state memory devices |
US20120079212A1 (en) * | 2010-09-23 | 2012-03-29 | International Business Machines Corporation | Architecture for sharing caches among multiple processes |
US8762609B1 (en) * | 2010-11-03 | 2014-06-24 | Pmc-Sierra Us, Inc. | System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator |
US8732410B2 (en) * | 2010-12-07 | 2014-05-20 | Advanced Micro Devices, Inc. | Method and apparatus for accelerated shared data migration |
WO2012106362A2 (en) * | 2011-01-31 | 2012-08-09 | Fusion-Io, Inc. | Apparatus, system, and method for managing eviction of data |
US8495259B2 (en) * | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware chains to select performance path |
US8544029B2 (en) * | 2011-05-24 | 2013-09-24 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations minimizing hardware/firmware interactions |
US8886881B2 (en) * | 2011-05-24 | 2014-11-11 | International Business Machines Corporation | Implementing storage adapter performance optimization with parity update footprint mirroring |
US8656213B2 (en) * | 2011-05-24 | 2014-02-18 | International Business Machines Corporation | Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path |
US8495258B2 (en) * | 2011-05-24 | 2013-07-23 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA |
US8868828B2 (en) | 2011-05-24 | 2014-10-21 | International Business Machines Corporation | Implementing storage adapter performance optimization with cache data/directory mirroring |
US8516164B2 (en) * | 2011-05-24 | 2013-08-20 | International Business Machines Corporation | Implementing storage adapter performance optimization with enhanced hardware and software interface |
US8990504B2 (en) * | 2011-07-11 | 2015-03-24 | International Business Machines Corporation | Storage controller cache page management |
US8661196B2 (en) | 2011-08-15 | 2014-02-25 | International Business Machines Corporation | Optimizing locations of data accessed by client applications interacting with a storage system |
US8688914B2 (en) * | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Promotion of partial data segments in flash cache |
US8856479B2 (en) | 2012-04-20 | 2014-10-07 | International Business Machines Corporation | Implementing storage adapter performance optimization with hardware operations completion coalescence |
US9110815B2 (en) * | 2012-05-07 | 2015-08-18 | International Business Machines Corporation | Enhancing data processing performance by cache management of fingerprint index |
US9135173B2 (en) * | 2013-01-22 | 2015-09-15 | International Business Machines Corporation | Thinly provisioned flash cache with shared storage pool |
JP6160173B2 (ja) * | 2013-03-28 | 2017-07-12 | 富士通株式会社 | ストレージ装置、割当解放制御方法及び割当解放制御プログラム |
US9361241B2 (en) * | 2013-04-03 | 2016-06-07 | International Business Machines Corporation | Grouping tracks for destaging |
US9298617B2 (en) * | 2013-04-16 | 2016-03-29 | International Business Machines Corporation | Parallel destaging with replicated cache pinning |
US9058267B2 (en) * | 2013-06-11 | 2015-06-16 | Avago Technologies General IP Singapore) Pte Ltd | I/O path selection |
US9235517B2 (en) | 2013-08-12 | 2016-01-12 | Globalfoundries Inc. | Implementing dynamic cache enabling and disabling based upon workload |
US9582426B2 (en) | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
WO2015065449A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Cache controller for non-volatile memory |
CN104503923B (zh) * | 2014-11-21 | 2017-08-11 | 华中科技大学 | 一种非对称磁盘阵列高速缓存调度方法 |
US9569118B2 (en) * | 2014-12-30 | 2017-02-14 | International Business Machines Corporation | Promoting consistent response times in a data storage system having multiple data retrieval mechanisms |
US9940250B2 (en) * | 2015-11-09 | 2018-04-10 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management for writes to storage write cache |
-
2015
- 2015-11-12 US US14/939,589 patent/US9940250B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,649 patent/US9940251B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,762 patent/US9940252B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,516 patent/US9940249B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/940,021 patent/US9940257B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,838 patent/US9940253B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,990 patent/US9940256B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,961 patent/US9940255B2/en active Active
- 2015-11-12 US US14/940,050 patent/US9940258B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/940,035 patent/US9864695B2/en not_active Expired - Fee Related
- 2015-11-12 US US14/939,254 patent/US9658968B1/en active Active
- 2015-11-12 US US14/939,917 patent/US9940254B2/en not_active Expired - Fee Related
-
2016
- 2016-11-07 CN CN201680065411.6A patent/CN108351832B/zh active Active
- 2016-11-07 DE DE112016004527.1T patent/DE112016004527T5/de active Pending
- 2016-11-07 JP JP2018521653A patent/JP6842620B2/ja active Active
- 2016-11-07 GB GB1808972.2A patent/GB2561108B/en active Active
- 2016-11-07 WO PCT/IB2016/056677 patent/WO2017081593A1/en active Application Filing
-
2017
- 2017-11-26 US US15/822,189 patent/US10078595B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5668948A (en) * | 1994-09-08 | 1997-09-16 | International Business Machines Corporation | Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports |
CN101110094A (zh) * | 2006-07-20 | 2008-01-23 | 美国博通公司 | 硬盘驱动器设计系统及其设计方法 |
CN101131624A (zh) * | 2007-08-17 | 2008-02-27 | 杭州华三通信技术有限公司 | 存储控制系统及其处理节点 |
CN102150147A (zh) * | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351832B (zh) | 实现用于存储写入高速缓存管理的硬件加速器 | |
US20180356984A1 (en) | Memory system and method of controlling memory system | |
US8539150B2 (en) | Storage system and management method of control information using a cache memory with multiple cache partitions | |
US8495258B2 (en) | Implementing storage adapter performance optimization with hardware accelerators offloading firmware for buffer allocation and automatically DMA | |
US20140189204A1 (en) | Information processing apparatus and cache control method | |
US20070033341A1 (en) | Storage system for controlling disk cache | |
TWI417724B (zh) | 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品 | |
CN113495692A (zh) | 数据存储的方法和键值存储设备 | |
US8495259B2 (en) | Implementing storage adapter performance optimization with hardware chains to select performance path | |
US11397528B2 (en) | Consistent IO performance on undefined target devices in a cascaded snapshot environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |