CN104040515B - 在逻辑驱动器模型下呈现直接存取的存储设备 - Google Patents
在逻辑驱动器模型下呈现直接存取的存储设备 Download PDFInfo
- Publication number
- CN104040515B CN104040515B CN201180075095.8A CN201180075095A CN104040515B CN 104040515 B CN104040515 B CN 104040515B CN 201180075095 A CN201180075095 A CN 201180075095A CN 104040515 B CN104040515 B CN 104040515B
- Authority
- CN
- China
- Prior art keywords
- storage device
- host
- nand
- data
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- 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
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/061—Improving I/O performance
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0661—Format or protocol conversion 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/0688—Non-volatile semiconductor memory arrays
-
- 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
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0032—Serial ATA [SATA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
根据本文所公开的实施例,提供方法、系统、机制、技术和设备,其用于在逻辑驱动器模型下呈现直接存取的存储设备;用于实现协作NVM数据保护的分布式体系结构;用于一致SSD等待时间的数据镜像;用于在DIF支持下经由同步RAID处理提升控制器的性能和RAS;用于实现门铃机制的仲裁和资源方案,包括攻击拥塞的公平性和预防的门铃仲裁;以及用于通过使用中断合并方案利用控制器中的消息传递单元和NTB实现多中断生成。
Description
版权声明
本专利文件的公开的一部分包含受版权保护的资料。版权拥有者不反对任何人拓制出现在专利商标局的专利文件或记录中的专利文件或专利公开,但是无论如何另外保留所有版权权利。
技术领域
一般来说,实施例涉及计算领域,更具体来说,涉及在逻辑驱动器模型下呈现直接存取的存储设备,包括用于实现在逻辑驱动器模型下呈现直接存取的存储设备的方法、系统和设备以及与基于直接存储器存取(DMA)的存储技术有关的其它补充解决方案,例如改进的独立盘冗余阵列(RAID)支持、分布式RAID支持、用于改进装置等待时间一致性的本地块镜像、改进的门铃合并和仲裁方案,因为这些改进都与基于DMA的存储技术有关。
背景技术
不应只是因为在背景技术中提及而认为背景技术中所论述的主题就是现有技术。类似地,不应认为在背景技术中提及或者与背景技术的主题相关联的问题在现有技术中之前已经意识到了。背景技术中的主题只是表示不同的方法,其中它们本身也可以对应于所公开的实施例。
在计算领域中,最常见的是具有由操作系统(OS)配合中央处理单元(CPU)直接存取和管理的存储机制,OS驻留在计算装置上并通过CPU的执行能力启用。但是,也存在备选机制,例如基于DMA(直接存储器存取)的机制和直接存取存储装置,它们独立于主机及其操作系统和文件系统操作,从而例如使得能够对在主机上执行的托管应用进行直接存取,而无需这些托管应用通过主机或其操作系统和/或文件系统传送存取请求。
在标准存储接口之前(大约在20世纪80年代中期),需要程序员写入代码以便特别处理对硬盘驱动器的数据读取和写入。需要这种代码来标识硬盘驱动器(HDD)上的柱面、磁头、磁道和扇区以作为读取和写入操作的一部分。标识这些细节以作为对HDD的读取和写入操作的一部分需要对OS进行改变以便支持任何新的HDD,其中假设柱面、磁头、磁道和扇区必然与之前所支持的有所不同。
随着开发和采用了标准存储接口,例如SCSI、ATA、SAS、SATA、FC等,于是可以对程序员隐藏HDD的基本柱面、磁头、磁道和扇区布局并向HDD呈现一致接口,而不管其基本物理结构。因此,这些标准存储接口允许程序员在通过标准存储接口发送的命令中简单地标识逻辑地址,然后实现标准存储接口的硬盘驱动器中的固件将逻辑地址转译为执行读取和/或写入操作所必需的对应柱面、磁头、磁道和扇区,将读取/写入磁头移动到柱面上的正确位置等,并根据命令读取或写入实际数据。
操作系统中包括支持这些标准存储接口的装置驱动器,以使得驻留在OS上的应用可以利用标准OS调用来经由标准存储接口存取任何HDD,而不管HDD的基本物理结构。尽管标准存储接口和操作系统内的支持装置驱动器对于标识HDD的基本柱面、磁头、磁道和扇区的复杂性提供了解决方案,但是标准存储接口和支持装置驱动器本身增加了复杂度以及计算开销,并且因此效率低下,从而会减慢性能。
因此,现有技术水平可以得益于本文所阐述的教导。
附图说明
举例而非限制性地示出实施例,并且结合附图参考以下详细描述时将能更加全面地理解实施例,附图中:
图1A示出SSD装置的实施例;
图1B示出各种公开实施例可在其中操作并且这些实施例与之有关的实例性体系结构;
图1C示出各种公开实施例可在其中操作并且这些实施例与之有关的实例性体系结构;
图1D描绘根据公开实施例经启用而在逻辑驱动器模型下呈现给主机操作系统的直接存取的存储设备和子模块的备选实例性体系结构概况;
图2A描绘根据公开实施例用于实现协作NVM数据保护和恢复方案的分布式体系结构和补充方法的实例性体系结构概况;
图2B描绘用于实现协作NVM数据保护和恢复方案的分布式体系结构和补充方法的备选实例性体系结构概况;
图2C描绘用于进行协作数据恢复方案的分布式体系结构和补充方法的另一备选实例性体系结构概况;
图3A描绘根据公开实施例用于实现数据镜像以便确保一致SSD(固态驱动器)等待时间的体系结构的实例性体系结构概况;
图3B描绘根据公开实施例用于实现数据镜像以便确保一致SSD(固态驱动器)等待时间的体系结构的备选实例性体系结构概况;
图3C描绘根据公开实施例用于实现数据镜像以便确保一致SSD(固态驱动器)等待时间的体系结构的另一备选实例性体系结构概况;
图4A描绘根据公开实施例用于实现改进的RAID 5/6性能的体系结构的实例性体系结构概况;
图4B和图4C分别描绘未经优化的RAID 5/6操作(4B)对优化的RAID 5/6操作(4C)之间的对比,优化的RAID 5/6操作利用根据公开实施例的同步流体系结构和方法;
图4D和图4E描绘根据公开实施例在深度优先填充算法和优化的宽度优先型填充操作之间的对比。
图4F和图4G描绘根据公开实施例用于改进的RAID 5/6性能的双罐数据流以及对实例性RAID 5/6 10+2配置的所得性能分析;
图5A描绘根据公开实施例供主机以有限数量的门铃处理主机门铃写入而不会压制主机门铃写入或从I/O装置的门铃空间中溢出的实例性体系结构概况;
图5B描绘根据公开实施例供主机处理主机门铃的备选实例性体系结构概况;
图5C描绘根据公开实施例供主机处理主机门铃的另一备选实例性体系结构概况;
图5D描绘根据公开实施例的门铃提交、排队和仲裁机制的高级过程流503;
图6A描绘根据公开实施例用于实现中断合并方案以便减小中断服务例程(ISR)开销、同时通过对错误状况进行通知来改善RAS的实例性体系结构概况;
图6B描绘根据公开实施例用于实现中断合并方案的备选实例性体系结构概况601;
图6C描绘根据公开实施例用于实现中断合并方案的备选实例性体系结构概况;以及
图7示出根据公开实施例以计算机系统的实例性形式的宿主机的图形表示。
具体实施方式
本文描述用于在逻辑驱动器模型下呈现直接存取的存储设备的系统、装置、设备、技术、机制和方法以及与基于DMA的存储技术有关的其它补充解决方案。
近年来,随着SSD(固态驱动器)技术的出现并作为大容量存储装置并入到计算机系统中,便有了机会消除与传统HDD型驱动器相关联的一些开销。例如,SSD装置利用固态存储器而不是柱面、磁头、磁道和扇区。因此,标准存储接口无需将经由程序员提供的逻辑地址转译为与特定的读取/写入命令相关联的基本柱面、磁头、磁道和扇区。然而,虽然存在上文提到的效率低下,但是仍保留了在标准存储接口中使用这些转译机制以便对旧的传统系统提供向后兼容性。去除或绕过上述标准存储接口需要新的解决方案和创新,以使得现代的操作系统能够与基于SSD的存储装置通信。这些解决方案和创新将经由下文提供的教导加以公开,并在本文中要求其权利。
图1A阐述示出SSD 001的实施例的体系结构099,其中SSD 001具有SATA总线002、SATA接口003、SATA-NAND控制器004、NAND闪存通道0至NAND闪存通道n以及NAND闪速存储器007和008。SATA接口003是实例性标准存储接口。但是,SATA接口003便于对基本NAND闪速存储器007和008进行读取和写入操作,基本NAND闪速存储器007和008两者均不利用柱面、磁头、磁道和扇区型标识方案。另外,SATA-NAND控制器004提供进一步解译以便将SATA特定命令和指令以及寻址信息转换为NAND闪速存储器007和008兼容的方案。因此,希望消除以上计算效率低下和开销中的一些缺点。但是,解决方案和创新必须旨在补偿这些传统通信方案(例如,标准存储接口和装置驱动器等)的去除或绕过。
直接存储器存取(DMA)是允许计算机内的某些子系统独立于中央处理单元并且潜在地独立于托管操作系统存取系统存储器以进行读取和/或写入的现代计算机和微处理器的特征。启用和支持DMA能力的系统可以包括例如盘驱动器控制器、图形卡、网络卡和声卡。DMA能力会是有益的,因为它们卸载了主机计算装置的OS的责任和开销。但是,利用DMA会带来其它问题,其中的若干问题另外是本申请的主题,并且本文将介绍、教导其解决方案并要求其权利。
例如,申请者在本文中教导了以下解决方案:1)在逻辑驱动器模型下呈现直接存取的存储设备;2)用于协作NVM(非易失性存储器)数据保护的分布式体系结构;3)用于一致SSD(固态驱动器)等待时间的数据镜像;4)用于在DIF(数据完整性字段)支持下经由同步RAID(独立盘冗余阵列)处理来提升控制器的性能和RAS(可靠性、可用性和可服务性)的解决方案和方法;5)门铃机制的仲裁和资源方案,包括攻击拥塞的公平性和预防的门铃仲裁;以及6)利用控制器中的消息传递单元和NTB(非透明桥接)的多中断生成的解决方案和方法。
图1B示出各种公开实施例可在其中操作并且这些实施例与之相关的实例性体系结构100,本文中特别公开这样的机构,这些机构包括:1)设备,其中具有到直接存取的存储设备的输入/输出接口(I/O接口)模块以及用于代表直接存取的存储设备提供分区表的存储设备适配器,其中分区表实现通过I/O接口模块对直接存取的存储设备的逻辑块存取(LBA存取);2)存储设备,其中具有多个协作存储装置,所述多个协作存储装置的每个装置中具有用于与所述多个协作存储装置的剩余协作存储装置通信的多播接口、纠错码(ECC)模块以及异或(XOR)模块,并且其中存储设备还包括RAID(独立盘冗余阵列)模块,RAID模块用于从在通信上与存储设备链接的外部装置接收单个I/O事务并基于这单个I/O事务对经由多播接口跨越所述多个协作存储装置分成条带的多个数据区块进一步执行多个ECC操作和至少一个XOR功能;3)存储设备,其中具有布置到多个NAND阵列中的多个基于NAND(与非)的闪速存储器组件、在通信上与所述多个NAND阵列对接的NAND控制器以及用于建立写入到存储设备的每个数据块的镜像副本的块镜像逻辑,其中每个镜像副本将存储在所述多个NAND阵列之一内;4)设备,其中具有到宿主机的第一输入/输出接口(I/O接口)模块、DMA(直接存储器存取)模块和到多个存储设备的第二I/O接口模块,其中第一I/O接口模块用于接收包括即将存储的数据和即将存储的数据的DIF或DIX(数据完整性字段或数据完整性扩展)数据的I/O事务,DMA模块用于将即将存储的数据和即将存储的数据的DIF或DIX数据从宿主机的存储器移动到设备本地的存储器并基于DIF或DIX数据同步地计算即将存储的数据的奇偶校验位,并且第二I/O接口模块用于将即将存储的数据以及为即将存储的数据计算的奇偶校验位从设备本地的存储器移动到所述多个存储设备;5)设备,其中具有工作引擎队列、到宿主机的输入/输出接口(I/O接口)模块,工作引擎队列具有用于排队工作的门铃空间,I/O接口模块用于接收门铃条目以便提交给工作引擎队列,其中工作引擎队列内的第一队列结构利用仲裁方案从工作引擎队列释放门铃条目,工作引擎队列内的第二队列结构利用仲裁方案从工作引擎队列释放额外的门铃条目,其中当第一队列结构中的门铃条目的数量低于服务队列条目(SQE)的阈值数量时,在第一队列结构内将门铃条目排队并从第一队列结构释放门铃条目,并且其中当第一队列结构中的门铃条目的数量大于SQE的阈值数量时,在第二队列结构内将额外的门铃条目排队并从第二队列结构释放额外的门铃条目;以及6)设备,其中具有设备本地的中央处理器单元(CPU)、工作引擎队列、到宿主机的输入/输出接口(I/O接口)模块、完成队列和完成队列中断机制,其中工作引擎队列具有用于排队工作的门铃空间,I/O接口模块用于接收门铃条目以便提交给工作引擎队列,完成队列具有用于将之前排队的完成的工作合并为工作引擎队列中的排队工作的空间,并且完成队列中断机制用于基于与完成队列相关联的状态启动中断。
例如,图1B描绘其中具有主机操作系统(OS)120的主机119,它在通信上与控制器105对接。而控制器105又在通信上与其中具有多个直接存取的存储设备子模块118的直接存取的存储设备117对接。如要素199处所描绘,控制器105内的存储设备适配器提供分区表以便使直接存取的存储设备117对于主机OS 120可见。这种概念将关于图1D额外详细地加以描述。如要素198处所描绘,直接存取的存储设备子模块提供它们自己的协作数据保护和恢复。这种概念将关于图2A、2B和2C额外详细地加以描述。图1还在要素197处描绘直接存取的存储设备子模块提供它们自己的块级镜像以便确保一致的低等待时间。这种概念将关于图3A、3B和3C额外详细地加以描述。图1还在要素196处描绘标为DIF #2的操作,它从本地存储器进行读取,计算奇偶校验位,并写回到本地存储器,以便以更少的总体输入/输出操作实现改进的RAID 5/6算法,并且因此更加有效。这种概念将关于图4A、4B、4C、4D、4E、4F和4G额外详细地加以描述。图1还在要素195处描绘对到控制器105的进入请求实现仲裁和优先化的门铃队列。这种概念将关于图5A、5B、5C和5D额外详细地加以描述。并且,图1还在要素194处描绘中断合并机制,它通过有条件地合并(例如,采集、分组、排队等)到控制器105的请求的正常完成来减小中断服务例程(ISR)开销,同时通过对错误状况进行通知来改善RAS。这种概念将关于图6A、6B和6C额外详细地加以描述。
在以下描述中,阐述了众多具体细节,例如特定系统、语言、组件等的实例,以便提供对各种实施例的充分理解。但是,本领域技术人员将明白,无需采用这些具体细节也可以实践本文所公开的实施例。在其它情况下,没有详细描述公知的素材或方法,以免不必要地使公开实施例晦涩难懂。
除了附图中所描绘并在本文中加以描述的各种硬件组件之外,实施例还包括下文描述的各种操作。根据这些实施例描述的操作可以由硬件组件来执行,或者可以用机器可执行指令来实施,这些指令可用于导致用这些指令编程的通用或专用处理器执行这些操作。或者,这些操作可以由硬件和软件的组合来执行。
实施例还涉及用于执行本文所公开的操作的设备。该设备可以为了需要的目的专门构造,或者它可以是通过存储在计算机中的计算机程序选择性地激活或再配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,例如但不限于:任何类型的盘,包括软盘、光盘、CD-ROM和磁-光盘;只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡;或任何类型的适合存储电子指令的介质,每种介质耦合到计算机系统总线。
本文介绍的算法和显示并不与任何特定计算机或其它设备固有地相关。根据本文的教导,各种通用系统可以与程序配合使用,或者构造更加专用的设备来执行所需的方法步骤经证实是便利的。各种这些系统的所需结构将如以下描述中所阐述地那样出现。另外,没有参考任何特定编程语言来描述实施例。将明白,可以使用各种编程语言来实现如本文所描述的实施例的教导。
实施例可以作为计算机程序产品或软件来提供,它可以包括其上存储有指令的机器可读介质,指令可用于将计算机系统(或其它电子装置)编程以便执行根据公开实施例的过程。机器可读介质包括用于存储或传送机器(如计算机)可读形式的信息的任何机构。例如,机器可读(如计算机可读)介质包括机器(如计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪速存储器装置等)、机器(如计算机)可读传输介质(电、光、声)等。
所公开的任何实施例可以单独使用,或者以任何组合彼此一起使用。尽管各种实施例可能部分地是因为常规技术和方法的缺点而激发的,其中一些实施例在本说明书中加以描述或提及,但是这些实施例不一定要解决或解答这些缺点中的任何缺点,而是可以只解决其中的一些缺点、不解决任何缺点或针对没有直接论述的不同缺点和问题。
图1C示出各种公开实施例可以在其中操作并且这些实施例与之相关的实例性体系结构101。体系结构101描绘具有能够在其上操作和/或执行的主机操作系统120的主机119,主机操作系统120中具有应用102、动词(verb)103和一个或多个驱动程序104。还描绘了控制器105,控制器105中具有接口106、管理(管理的或管理员)命令管理器107、I/O(输入和输出)管理器108、元数据管理模块109、写入路径110A和读取路径110B、写入聚合机构111、数据保护机构112、冲洗机构113、垃圾收集机构114、数据恢复机构115和后端I/O机构116。还描绘不受主机操作系统120的文件系统控制或管理的直接存取的存储设备117。在直接存取的存储设备117内有多个直接存取的存储设备子模块118,这些直接存取的存储设备子模块118可以具有任何众多变化,而不管本文中是否特别举例说明,只要它们符合不受主机操作系统120的本地文件系统控制或管理的非常规存储设备的描述即可。
图1D描绘根据公开实施例经启用以便在逻辑驱动器模型下呈现给主机操作系统120的直接存取的存储设备117和子模块118的备选实例性体系结构概况102。
根据公开实施例,在逻辑驱动器模型下呈现直接存取的存储设备提供了用于作为逻辑卷呈现用于直接映射的存储设备118的存储空间的机制,从而使得该空间能够出现在标准操作系统工具和视图中。本文所使用的术语“直接存取的存储设备”和“直接存储设备”是指不通过这种操作系统的本地或内部文件系统支持而存取的存储设备118。
提供标准OS可读驱动器分区130,它可作为块存储进行存取并用于呈现代表直接存储设备的存在以及分配给直接存储设备的存储空间的量的逻辑卷(驱动器)(例如,经由LBA 134)。这种技术导致“直接映射的存储设备”。
直接映射的存储设备137提供可供应用以及OS直接存取的存储设备。但是,直接映射的存储设备137并不是利用诸如NTFS(新技术文件系统)的标准文件系统来组织的。如果存储空间对于OS 120看起来并不像逻辑卷(例如,LBA 134),那么不能使用主机操作系统120的标准工具(例如,本地支持的工具)来查看直接存取的存储设备117是否存在,操作系统也不能确定分配给直接存取的存储设备117多少存储空间、有多少空间是可用的、目前使用了多少空间等等。
因此,使得非常规存储设备(例如,未示出的利用逻辑驱动器的存储设备)对于主机操作系统所熟悉的传统公用程序可存取,同时实现了诸多好处,正是为了这些好处而选择这种非常规存储设备,并且这些好处由操作系统在其上操作和执行的主机计算装置的设计者来实现。
目前可用的解决方案无论如何没有提供通过操作系统的本地文件支持能力和公用程序可直接存取直接存储设备137的区域的机制。而且,目前可用的解决方案无论如何没有提供作为逻辑块存取(LBA)的存储设备134来部分或全部地存取这种非常规存储设备(例如,直接存取的存储设备)的机制。此外,目前可用的解决方案无论如何没有提供可使得分区数据(例如,MBR/分区表133或逻辑分区131中的元数据)对于主机操作系统可用的机制,其中分区数据代表在缺乏本文所描述的技术的情况下否则不可用并且因此对于主机操作系统120而言实际上不可见的直接存储设备的存在和用于直接存储设备的存储的量。
所描述的技术还可以通过使用存储装置或阵列132来进一步扩展,存储装置或阵列132提供LBA和直接存取的存储设备117的组合,其中使得这两种类型的存储设备能够看起来像是来自相同存储装置或存储阵列的逻辑卷。
使用标准分区、同时结合提供对应于直接存取的存储装置的逻辑块存取(LBA)的顺应装置134以使得标准OS工具能够直接读取和解译分区数据而无需修改或扩大OS工具具有特别的好处,因为可以提供逆兼容性,而不必检修用于在操作系统控制下管理、存取和查看传统存储空间的这种主机操作系统熟悉的工具。在没有这种机制的情况下,用于直接存取的存储的量对于利用标准OS工具的用户而言并不可见(在不检修OS的情况下)。例如,如果用户具有500GB(千兆字节)存储装置,其中200GB用于LBA存储,而300GB用于直接存取存储,那么在缺乏所描述的技术的情况下,在标准OS工具下,只有用于LBA存储的200GB可看见以用于盘管理,留下剩余部分对于用户和OS实际上是不可见的。
这些技术可以特别用于适应管理或映射某些FLASH驱动器的方法以及其它介质类型的直接存取的存储设备117。
直接存取的存储设备117的适配器(例如,经由例如控制器105或其它有能力的装置提供的存储设备适配器199)代表直接存取存储设备117提供分区表133,其中主机OS 120利用逻辑块存取(LBA)131存取分区表133。由控制器105或等效机构提供的逻辑存储装置134包括LBA存储的至少一小部分,即使直接存取存储设备117的大部分只用于直接存取存储,例如由实例Q所描绘的,其中直接存取存储设备117的大部分作为直接存取存储设备117保留,只有非常小一部分呈现给主机OS 120。
作为外来文件系统呈现直接存取存储设备117有助于防止主机OS 120尝试存取相关联的数据。存储设备的分区数据通常保留在存储装置本身上,但是通过直接存取存储设备驱动程序(例如,驱动程序104或其它合适的驱动程序)使其同步化也是可能的。
直接存取存储设备117的出现随之而来的是这样一种学习曲线,它可以带来采用该技术的障碍。本文所描述的实施例通过使得直接存取存储设备117解决方案在技术上与在主机OS 120下进行硬盘驱动器和RAID(虚拟驱动器)管理的现有模型兼容而使得直接存取存储设备117解决方案的可用性成为可能,从而使得直接存取存储设备117对于用户更容易理解和接受,用户可以是计算装置的最终用户或是这类主机119计算装置的设计者。
所公开的技术可以实现,并且根据一些实施例,可以至少部分地经由存储在直接存取存储设备117上的数据以及可传达到控制器105等内的存储设备适配器199实现的链路/接口/钩来实现。此外,开放源软件与第三方接口和解决方案可用于存取实现数据,可用于存取用于直接存取存储设备117的介质上的数据的存储,并且可以利用在合适的权利、允许和许可下共同提供所描述的特征的机制。
图2A描绘根据公开实施例用于经由作为协作直接存取存储装置217操作的端点存储装置的集合实现协作NVM数据保护和恢复方案的分布式体系结构和补充方法的实例性体系结构概况200。尽管关于特定存储介质类型进行论述,但是所公开的实施例可以推广至NVM或具有相同基本优点的任何其它类型的存储设备(例如,旋转介质)。
根据公开实施例,协作NVM(非易失性存储器)数据保护的分布式体系结构提供这样一种机制,它用于确保数据保护并进一步在诸如存储设备的固态驱动器(SSD)的共同体中分配数据保护和数据恢复215的任务。所公开的机制和实例性实施例利用PCIe(外围组件互连Express)250的特征,包括例如PCIe 250的多播能力,并且因此使得能够在主机119和基于PCIe 250或与PCIe 250兼容的SSD之间均衡I/O织构。尽管作为实例描述了PCIe 250,但是提供多播能力的任何通信介质都可以实现公开的实施例。例如,支持多播能力和协作通信方案的基于互联网协议(IP)的存储系统可以得益于所描述的技术。
公开在SSD的共同体中分配功能性的数据保护和恢复215体系结构和补充机制。由于SSD并入EEC(纠错码)和XOR(异或和/或XOR门)操作,所以这种方法再度使用现有硬件,并将主机或控制器上的数据保护和恢复115的责任推给能够实现分布式数据保护和恢复215的存储装置299或SSD,因为加速已经驻留在这种基于PCIe 250或与PCIe 250兼容的SSD装置和存储装置299内。
通过实践这些公开实施例,还可以在该体系结构上以分布式方式实现RAID,从而将数据恢复115责任从主机119卸载到作为能够执行分布式数据保护和恢复技术215的存储装置299操作的主机119的端点驱动器。在之前可用的数据保护体系结构中,主机119将数据聚合以便生成XOR保护信息,并在驱动器集合上写入“带(band)”。带是每个驱动器的数据集合以及写入到驱动器的保护条带,其中每个带包括写入到不同驱动器(例如,不是存储原始数据或数据部分的驱动器)以便在驱动器集合间平衡保护数据的数据保护条带。
本文公开这样一种机制,通过该机制,不是通过主机119或甚至控制器115或实现用于与直接存取的存储装置117通信的DMA存储技术的其它控制器来生成或检查XOR保护信息,而是通过基于PCIe或与PCIe兼容的分布式SSD和存储装置299本身来检查XOR保护信息。更具体来说,用于执行和确保这种XOR保护的责任从主机119或主机RAID控制器卸载到基于PCIe或与PCIe兼容的端点SSD存储装置299上。
对于基于PCIe或与PCIe兼容的驱动器集合间的每个带写入,主机119或主机OS120确定对于该特定带哪个驱动器将充当数据保护条带。在一个实施例中,主机119经由PCIe多播将每个驱动器条带(例如,对于该带每个驱动器的代表性部分集合)写入到它的代表性驱动器以及保护驱动器。这种方法允许基于PCIe或与PCIe兼容的每个目标驱动器接收其数据以用于存储,而且还使得该写入序列的当前指定的保护驱动器能够接收XOR生成所必需的数据。作为写入事务的部分,每个驱动器知道它是该特定事务的数据存储驱动器还是反之是XOR生成目标驱动器,在后一情况下,它用作该特定写入事务的指定保护驱动器(例如,主机119可以发信号通知每个驱动器对于该写入事务它的作用是数据存储还是XOR生成,或者每个驱动器可以从例如报头、标志或其它合适的消息传递操作得出它的合适的作用)。
特别对于数据存储目标驱动器,写入事务仅仅存储在该驱动器中以便存储指向特定目标数据存储驱动器的数据。
但是,对于XOR生成目标驱动器(例如,该带的指定保护驱动器),驱动器收集执行XOR生成所必需的数据(该带内的所有其它数据),然后等待下一个多播写入请求以便基于所收集的数据执行XOR生成操作。RAID模块298(图2B)可以协调XOR生成。作为多播方案的益处,XOR生成所必需的数据仅仅是由XOR生成目标驱动器看到的该带的所有其它多播接收数据。
在备选实施例中,主机119或控制器105将单个I/O事务写入到存储装置299,并且存储装置的RAID模块298适当地将写入事务的数据分区块,并启动多播功能,以使得所有驱动器接收必需的数据区块,并使得XOR目标驱动器可以基于依靠多播操作看到的数据区块生成XOR数据。
取3+1 RAID集合为例,其中执行三次多播写入。在该实例中,三个驱动器接收数据以作为目标或指定的数据存储驱动器,而一个/单个指定的保护驱动器经由多播接收/收集每个写入,以便从与以数据保护驱动器为目标、但是依靠多播操作对于指定的保护驱动器“看见”或可见的这三次写入相关联的数据生成或计算XOR,从而导致对于该特定带写入事务适合作为数据保护条带存储在指定保护驱动器上的RAID奇偶校验位数据的XOR生成或计算。
如上所述,这种方案从主机119卸载了计算负担,因为主机119、其OS 120、其操作软件、甚至是主机的RAID 298控制器都无需计算奇偶校验位数据,这是由于将负担分配给了已经天然拥有这种能力的该带写入事务的指定保护驱动器或存储装置299(例如,如上所述的在通道上在内部生成XOR的实例性SSD装置)。主机119可以基于诸如循环法的不同方法或者鉴于驱动器的I/O负载、驱动器的任何排队时间、或合适的其它特性将不同的可用驱动器指定为多个这种写入事务中的每个写入事务的保护驱动器,或者这种存储装置299内的RAID模块298可以协调数据目标驱动器和XOR奇偶校验位计算目标驱动器的选择和指定。
由于之前可用的解决方案需要通过主机119或其主机OS 120软件来执行数据保护和恢复,所以必需提供XOR计算的足够加速以便防止基于I/O的操作的瓶颈或性能降级。在这类之前技术不能提供硬件加速的情况下,必须提供软件算法,其中由于主机119的处理器上的极端计算负担导致主机119的显著性能降低。
由于公开的体系结构和技术经由将数据多播给目标数据存储驱动器而将数据保护和恢复负担推给驱动器或存储装置299本身,所以使得RAID模块298能够在驱动器处计算或者已经计算了合适的奇偶校验位数据,然后存储这些奇偶校验位数据。通过这些技术,可以获得显著的性能增加,而主机119不必对基于主机119的XOR计算或基于控制器的XOR计算实现任何特定的硬件加速机制。在一个实施例中,用带信息标注写入数据,以使得可用驱动器可以自行生成XOR数据,以便从标注的数据导出它们的作用指定(例如,作为特定写入事务的数据存储目标驱动器或指定的保护驱动器),用合适的方法围绕驱动器旋转以便使读取性能降级问题减至最小。
必要时,也可以在驱动器级执行数据恢复操作,而使主机不必执行XOR重构操作。例如,在可用驱动器以对等方式与其对等驱动器通信的情况下,使得对等驱动器能够利用XOR重构数据,然后将数据提交回给主机,从而利用可用驱动器的分布式能力来执行这种数据恢复能力并因此从主机119卸载这种责任。
反之,目前可用的解决方案将数据保护和恢复的工作集中在单个实体(通常是主机119、其主机OS 120)上,或者甚至经由主机RAID控制器来集中。本文所描述的技术并没有集中这些负担,而是将工作/计算开销的负载分配给以协作方式工作的端点驱动器,从而允许在主机卸载的情况下进行RAID保护,并且进一步提供具有重要的增值特征的有能力的装置,例如本文所公开的实例性SSD型存储装置299。例如,实例性SSD对于PCIe支持多播294(图2B),它可用于将数据分配给端点SSD存储装置299,并且进一步支持在SSD驱动器之间执行对等事务的能力以便实现数据恢复的目的(例如,为了丢失数据的XOR重构的目的读取数据),并且因而允许在指定的保护驱动器上生成和存储RAID奇偶校验位以便有效地计算XOR奇偶校验位/保护数据并在多个写入事务上的旋转基础上将其放到指定的端点驱动器上(或者在必要时,通过利用之前存储的XOR奇偶校验位/保护数据来提供数据恢复)。
图1C中所描绘的数据恢复机制115视情况从控制器105卸载或从主机119卸载并且改为分配给图1C中所描绘的直接存取存储装置117,直接存取存储装置117作为现在如图2A中所述的协作直接存取存储装置217在存储设备299内操作。在一个实施例中,直接存取存储装置117包括在其上提供基本的非暂时性存储能力的一个或多个基本闪存阵列218或闪速存储器组件。每个这样的闪存阵列218具有补充驱动器I/F(接口)216,可以经由补充驱动器I/F(接口)216与基本闪存阵列218通信。
例如,代替如图1C中所述的基于主机119的固件或基于主机OS 120的软件,将提供数据保护和恢复操作115的功能性卸载给使得能够进行上述分布式数据保护215A和数据恢复215B方法的协作直接存取存储装置217。
图2B描绘用于实现协作NVM数据保护和恢复方案的分布式体系结构和补充方法的备选实例性体系结构概况201。
图2B描绘如协作直接存取存储装置217所提供的协作数据保护方案的更详细的表示。例如,在所示实例中,第三个驱动器指定为该带的保护驱动器或XOR驱动器296,并且作为PCIe多播操作的部分接收所有区块。很清楚,指定的保护驱动器/XOR驱动器296接收并收集(例如,“看到”)发送给目标数据存储驱动器的所有数据,尽管不是明确的目标数据存储驱动器。充当数据存储驱动器的所有其它驱动器接收它们的区块295并将其存储在它们的闪存阵列218(或适用的基本非暂时性物理存储介质)中,并且在该特定实例中对于该特定写入事务,第三个驱动器从所接收的收集的多播数据构造XOR区块,并将生成的XOR区块存储在它自己的闪存阵列218中,如存储在其上的XOR 296所描绘。注意,XOR驱动器随每个事务改变/旋转,以免使可用驱动器的整体读取性能降级。
在一个实施例中,RAID模块298提供将数据分成多个区块295的能力,并且在协调努力中对协作直接存取存储装置217进一步启动合适的多播294操作。根据一个实施例,RAID模块298以及协作直接存取存储装置217集成在单个存储设备299中,例如集成在SSD驱动器内。数据可以从例如写入聚合机构111(例如,示为位于控制器105内的写入聚合机构111)到达。
图2C描绘用于构造协作数据恢复方案的分布式体系结构和补充方法的另一备选实例性体系结构概况202。
图2C描绘同样通过将这种负担分配给可用端点装置的共同体并从主机119卸载这种计算负担来整体在驱动器的共同体内执行的实例性数据恢复路径。在该实例中,对驱动器之一的读取280标识需要对故障块读取280进行修复的故障(块损坏或其它错误)。可以经由在例如控制器105内的读取路径110B启动读取。遭遇故障块读取280的驱动器(例如,涂黑的区块281)响应地向驱动器的共同体发出多播读取,其中每个驱动器基于所读取的特定条带用它们的对应数据部分做出应答。这里示出,经由多播返回两个数据区块281,并且还返回具有用于恢复故障数据区块(涂黑的区块281)所必需的计算的奇偶校验位数据的XOR区块282。然后,遭遇错误或故障块读取的驱动器重构数据,并在合适时将重构/恢复的数据返回给主机119或返回给请求用户或应用。在一些实施例中,驱动器另外还返回发生读取故障的消息或指示,该消息或指示与响应一起联运或作为独立的通知。
除了经由作为协作直接存取存储装置217操作的分布式端点装置提供这些特征的能力之外,所描述的技术还可以进行服务以便减少主机119的成本和复杂性,这是因为经由硬件加速、软件或控制器,这样的主机119不再需要它自己的基于RAID的能力;并且所描述的实施例还通过有能力的SSD装置或其它兼容的端点装置提供这种协作数据保护特征的能力对这些装置引入额外的价值。此外,由于所公开的实施例的分布式特性,所以在多个装置间对计算负载进行了负载平衡,从而潜在地提供比基于集中化(例如,基于主机119)的解决方案改进的性能和速度。另外,均衡端点装置的分布式方法还使得在PCIe织构内传送的数据的量减至最少,从而通过减少对PCIe织构资源的竞争而提高I/O性能。例如,将写入多播给目标驱动器和数据保护驱动器,而不是为任何特定区块281个别发送,因此在3+1 RAID配置(例如,如上所述的配置)中,只执行三次(3x)多播写入,而不是四次(4x)典型的非多播写入,其中第四次非多播写入是指向该特定条带写入的指定奇偶校验位驱动器或保护驱动器的XOR区块。
由于还从主机119卸载了数据恢复负担,所以当驱动器检测到发生了内部数据错误(例如,通过其本地内部奇偶校验位)时,讨论中的驱动器从集合中的对等驱动器读取数据以便对发出的读取请求做出响应,并且另外在本地自动地更新其数据以便校正该错误,从而再次地不只导致主机119上的减轻的负担,而且还导致PCIe织构的减轻的I/O负担。
在又一个实施例中,还从主机119卸载驱动器重建,并且还经由协作直接存取存储装置217以分布式协作方式执行驱动器重建。例如,在传统的RAID系统中,主机119进入重建模式以便从RAID集合中的所有剩余驱动器读取数据,接着重新生成丢失数据,然后将丢失数据写回到正在重构的新驱动器上。该过程在主机119上以及在主机119与其存储设备之间的通信接口上造成了巨大的计算负担。
反之,根据本文所描述的公开实施例,集合中的每个协作直接存取存储装置217协作地执行新驱动器的重建(每个驱动器商定或协调它将为正在重构的新驱动器重新生成哪些区块281)。以此方式,每个协作直接存取存储装置217对RAID集合中的其它驱动器执行多播读取以便重建丢失数据,然后将丢失数据写入到新驱动器,所有这些都可以在不涉及主机119的情况下执行,并且因此,没有对主机119施加任何计算负担,主机119因此可以进行其它操作。由于经由RAID集合中的每个剩余的协作直接存取存储装置217进行驱动器的重构,所以重构更加快速地进行,并且使重建窗最小化,从而经由该RAID集合进一步降低双故障模式并发的风险并且因此潜在地降低持久数据丢失或不可恢复数据丢失的风险(例如,其中对于双并发恢复,存储“P”模式并发数据,而无需额外的基于“Q”的奇偶校验位)。例如,在驱动器发生故障或者用即将重构的驱动器取代驱动器的情况下,如果在完全重构新驱动器之前发生第二次故障,那么由于这第二次故障,不存在足以重构第二驱动器的数据。因此,重构时间的任何减少都会降低双并发故障情形的风险。
图3A描绘根据公开实施例用于实现数据镜像以便确保一致的SSD(固态驱动器)301等待时间的体系结构的实例性体系结构概况300。根据公开实施例,所描绘的SSD装置可以作为根据公开实施例的直接存取存储装置117操作,或者可以备选地作为在主机119或主机OS 120的控制和管理下操作的基于NAND 310的SSD 301端点存储装置操作。
根据公开实施例,用于一致SSD(固态驱动器)等待时间的数据镜像提供一种用于经由固态驱动器(SSD)301来确保一致等待时间和数据镜像的机制,其中SSD 301递送比机械硬盘驱动器(HDD)更低等待时间的存储。
基于NAND(与非或与非门)310的闪速存储器是用于SSD 301的基本非暂时性物理存储介质的一种类型。目前可用的NAND 310技术需要一定的管理开销来使它用于存储。例如,必须一次擦除装置的大块,以便可以将新数据写入到NAND装置。执行块擦除会花费很长的时间,并且在擦除操作进行中时,NAND装置不能允许在这种擦除周期期间(例如,擦除指定块所花费的时间)对装置上的数据进行任何存取。如果将读取请求呈现给NAND装置,那么它必须延迟或排队,直到NAND装置完成它的擦除操作,从而导致对装置存取存在潜在显著的等待时间延迟。
尽管这种擦除操作很少发生并且在利用这种基于NAND的装置时不常遇到,但是它们无论如何都会发生,并且在进行中时,它们可能会在读取请求与处理块擦除之间造成以上竞争/冲突,从而导致将其它数据指向正在擦除的相同装置的任何I/O的高等待时间周期。这种场景造成到SSD的I/O等待时间的高可变性。
为了补偿这种问题,本文公开用于管理SSD装置中的基于NAND的FLASH的机制,以使得对于所有数据块(例如,镜像块)存在复本块,然后采用使得可以在任何时间、即使在由于特定NAND装置上的擦除块操作而导致请求的块的第一副本不可存取时仍可以存取任何数据块的一个副本的方式管理NAND装置。通过实践公开的体系结构、方法和公开的实施例,到基于NAND的SSD(或具有类似限制的其它存储装置)的I/O的可变性得以大大减小,从而对于等待时间敏感的应用产生更一致且可预测的装置。
图3A描绘具有附连到控制器315的NAND装置的阵列305的基于NAND的SSD的简化框图。控制器315经由诸如SATA、SAS、PCIe等的I/O对接技术与主机119连接。或者,NAND装置的控制器可以连接到控制器105,而控制器105又与主机119连接。
图3B描绘根据公开实施例用于实现数据镜像以便确保一致的SSD(固态驱动器)301等待时间的体系结构的备选实例性体系结构概况302。具体来说,图3B描绘具有读取请求312的基于NAND 310的单个SSD存储装置,其中读取请求312由于目前在相同的基于NAND的SSD存储装置中进行有效擦除操作311而阻塞,从而导致对该装置上的块的I/O请求313延迟,因而导致装置存取的高度可变且不一致的等待时间。
图3C描绘根据公开实施例用于实现数据镜像以便确保一致的SSD(固态驱动器)等待时间的体系结构的另一备选实例性体系结构概况303。更具体来说,所存储的每个数据块的副本或镜像分布在SSD装置中的NAND装置的阵列中,从而导致所存储的任何数据块的镜像冗余度,以使得在擦除操作导致I/O请求阻塞的情况下,公开的体系结构和方法使得能够改为存取数据块的镜像数据块或副本,而不必等待块擦除周期完成。
例如,图中描绘了NAND-m 398和NAND-m’ 399(NAND-m一撇),它们每个都存储了相同数据块的镜像或复本。镜像数据块312存储在两个装置中,以使得一个副本可以在任何时间存取,而不管待处理的擦除操作是否在进行中,否则擦除操作将导致I/O请求313延迟。公开的机制还对各种NAND装置的擦除活动提供管理,以使得存储有相同数据块的两个副本的两个NAND装置(NAND-m和NAND-m’)决不会同时擦除,例如经由SSD 301的块镜像逻辑。管理擦除周期的开始和完成允许SSD装置的NAND控制器确保总是可以以一致的等待时间存取任何数据块,从而由于实践所公开的用于管理NAND装置阵列的方法和体系结构而导致对SSD装置的存取请求具有大得多的可预测性和显著减轻的可变性。
在图3C所阐述的描绘中,NAND-m 398示为由于所描绘的对镜像数据块的一个副本的擦除操作而不可用。尽管存在对NAND-m 398装置的目前擦除操作,但是NAND-m’ 399(NAND-m一撇)仍保持可用,并且因此,镜像数据块对于来自镜子NAND-m’ 399的I/O存取请求仍保持可用。因此,通过实践公开的机制,可以在正常较低的NAND等待时间以及可预测并且一致的NAND装置存取等待时间的情况下完成对数据块“X”的I/O请求(例如,对于镜像数据块的这两个副本或镜像中的哪一个不可知)。
公开的机制的实例性算法如下:
1. 块“M”需要擦除;
2. 在主要的NAND-m装置398上擦除块“M”;
3. 在擦除操作过程中,从NAND-m’(NAND-m一撇)399处的镜像装置为所有新的I/O读取提供服务;
4. 当擦除操作完成时,在NAND-m’装置399(NAND-m一撇)上执行擦除;以及
5. 在NAND-m’(NAND-m一撇)399的擦除操作过程中,从NAND-m 398处的主要装置为所有新的I/O读取提供服务。
尽管目前的基于NAND的SSD装置实现了使得擦除操作冲突造成等待时间不一致和增加的可变性的概率最小化的复杂算法,但是没有一种算法能够完全消除擦除操作冲突。由于与高得多的容量和每千兆字节更低成本的HDD相比,基于NAND的SSD装置的就每千兆字节成本比的成本,以本文所教导的方式镜像或复制所有数据块并不直观。这种解决方案之所以不直观是因为,提出的解决方案消耗了空间以作为保证一致等待时间的权衡。然而,存在这样的应用,其中与基于NAND的SSD装置的容量相比,基于NAND的SSD装置的一致可预测并且较低的等待时间更重要,并且因此,公开的方法解决了对于I/O存取请求等待时间周期高度敏感的这种目标应用的需要。将优先级放在通过使用数据块镜像或存储数据块副本来使等待时间可变性最小化之上将目前公开的实施例与使得这种擦除操作冲突最小化但不保证消除这种擦除操作冲突的更复杂的算法加以区分。
图4A描绘根据公开实施例用于实现改进的RAID 5/6性能的体系结构的实例性体系结构概况400。所描绘的基本装置可以作为根据公开实施例的直接存取存储装置117操作,或者备选地可以作为基本端点存储装置操作,这些基本端点存储装置在主机119或主机OS 120、或代表主机119或在例如实现所公开的体系结构、机制和方法以便实现如所公开的改进的RAID 5/6性能的控制器105内操作的主机RAID控制器的控制和管理下操作。
根据公开实施例,用于在DIF支持下经由同步RAID处理提升控制器的性能和RAS的解决方案和方法提供一种通过控制器中的专用芯片组硬件来提供最高性能的机制,该专用芯片组硬件能够在多个源间执行奇偶校验位字段的计算,具体来说是执行RAID 5/6命名法中的XOR(异或)和GF(伽罗瓦域)乘法运算。
在诸如数据库、文件存储和其它关键领域的存储技术中已经使用独立盘冗余阵列(RAID)的概念来增加数据存储系统的可用性。基于硬件的RAID通过普遍在专用控制器中实现以便在多个源间计算奇偶校验位字段的专用芯片组硬件来提供最高性能。在RAID 5/6命名法中,这种基于硬件的功能性包括XOR和GF乘法运算。数据完整性是企业和业务部门中的存储系统的重要特征。数据完整性字段或DIF提供保护主机适配器和存储装置之间的通信以便实现真实的端对端数据完整性的系统解决方案。尽可能早地进行坏数据的隔离和/或校正,从而具有对系统完整性和性能的最小影响。利用T10型DIF允许将保护范围和DIF操作扩展为包括DIF插入、DIF验证和DIF删除操作。
当用RAID传送数据时,如果系统不具有合适的错误检测方案,那么数据破坏的可能性很大。RAID系统保证考量的设计考量的至少两个方面是对于高端存储实现增加介质上的实现的适应性和适宜性。具体来说是,1)高吞吐量;以及2)高RAS(可靠性、可用性和可服务性)能力。
在故障容忍RAID配置中发生的静默数据破坏否定了具有RAID实现的价值,因为RAID接着存储不可用的破坏数据。为了消除这种缺陷并改进RAID系统的整体RAS,本文公开DIF和具有DIF能力的RAID的概念以作为用于提供和利用端到端CRC(循环冗余检查)能力的机制。DIF(数据完整性字段)和DIX(数据完整性扩展)436是用于通过T10型CRC和/或校验和能力来保卫数据的机制。
但是,根据各种实施例如本文所公开的具有DIF的RAID的实现需要更加复杂的逻辑结合RAID处理引擎来一前一后地执行DIF校验上的操作和更新438操作。
之前已知的基于RAID的算法实现了将数据从主机传送到本地高速缓存、对本地数据执行奇偶校验位计算、然后将数据和奇偶校验位结果写入到盘的串行过程。
本文公开一种通过专用硬件芯片组的同步流体系结构,其中使得该专用硬件芯片组能够实现同步流以便实现改进的RAID算法,这将在下文额外详细地加以描述。例如,可以利用可从本申请的合法受让者Intel公司购得的DMA(直接存储器存取)芯片组或CBDMA(Crystal Beach DMA)芯片组来实现用于如本文所公开的改进的RAID存储解决方案的公开的同步流体系结构和方法,由此优化数据传送功能和奇偶校验位计算功能,从而潜在地导致更高的总应用带宽、更低的功率、改进的RAS和减少的存储器利用率。
公开的用于改进的RAID存储解决方案的同步流体系结构和方法还提供额外的优点,例如减少软件开销并进一步启用小生境操作,例如对于存储设备IOP(集成式I/O处理器)应用的双播,从而导致硅面积的节省。
对存储系统的容量、速度和可用性的增加的需求提供了对廉价盘冗余阵列(RAID)行业范围的出现的推动。RAID-5和RAID-6(例如,RAID 5/6)方法分别对单模式故障和双模式故障(有时又称为单并发和双并发故障模式、单驱动器和双驱动器故障模式等)提供了数据保护。RAID 5使得能够通过实现单个P奇偶校验位数据来从单个驱动器上的灾难性损失进行完整恢复,而RAID 6使得能够通过实现P奇偶校验位数据和普遍称为Q奇偶校验位数据的额外实现来从两个独立的同步驱动器故障上的灾难性损失进行完整恢复。RAID 5/6的概念并不新,而是本文公开用于改进的RAID存储解决方案的同步流体系结构和方法以便在之前所知的基础上优化RAID 5/6。
RAID高速缓存410代表待写入到构成盘阵列437处的目标RAID集合的基本盘的最新写入数据。之前已知的RAID 5/6实现遭受受到系统存储器432限制并且因此成为瓶颈的流式写入性能。作为同步流体系结构和方法的部分,本文公开利用DMA能力来将数据从应用系统存储器区域移动到本地系统存储器区域以便实现RAID 5/6和数据完整性检查。这种优化消除了读取/写入操作,从而增强了系统性能。因此,与本文所描述的改进的同步流体系结构和方法相比,之前已知的机制需要额外的读取/写入操作,并且因此不那么有效。
通过使用如本文所公开的用于改进的RAID的同步流体系结构和方法,并且另外通过使用基于DMA的能力,可以实现数据加速和增加的RAS覆盖范围,从而对于根据公开实施例的一个或多个公开实施例操作的基本RAID实现提高整体写入吞吐量。此外,所公开的体系结构和方法导致从主机119系统的CPU(中央处理单元)卸载计算开销,从而经由实现硬件提供诸如RAID 5/6处理、数据完整性计算和多播的专用芯片组硬件功能性。
之前已知的通过I/O存储控制器执行的RAID 5/6流式写入操作涉及将源数据(对于写入)从主机119传送到主机的本地存储器。反之,本文所公开的同步流体系结构和方法利用存储控制器中的DMA引擎来从本地存储器读取所传送的数据以便计算奇偶校验位并将它写回到本地存储器。即使在利用基于DMA的体系结构的情况下,I/O存储控制器的DMA引擎仍从本地存储器读取所传送的数据以便计算奇偶校验位,然后将奇偶校验位数据写回到本地存储器,如434处的DIF #2操作所描绘,即拉数据并将数据写回到RAID高速缓存410,在此之后,DMA引擎将接着对所传送的数据和之前写入的计算的奇偶校验位数据执行读取操作,然后将所有数据写入到构成盘阵列437处的目标RAID集合的存储装置。可见,这种之前已知的技术涉及存储器接口间的多次读取/写入,从而导致对资源的高需求,并造成与竞争相同的有限资源的其它应用和系统操作的竞争。
本文所公开的同步流体系结构和方法利用DIF通过将源数据传送和奇偶校验位计算组合到单个操作中的能力、从而与如上文所描述的之前已知的技术相比消除了读取/写入操作来对于流式数据集合提供存储器带宽的显著改进。因此,同步流体系结构和方法使得能够以更少的I/O资源需求将计算的奇偶校验位和传送的数据写入到它们的最终目的地(例如,写入到构成RAID集合的目标目的地驱动器,例如HDD、SCSI驱动器(小型计算机系统接口驱动器)、或基于闪存或SSD的驱动器,例如那些可以例如作为直接存取的存储设备117实现或作为端点驱动器实现的驱动器,端点驱动器在主机119、主机OS 120、或代表主机操作的控制器(例如,实现如本文所公开的同步流体系结构和方法的存储控制器或控制器105)的控制下)。
在利用用于改进的RAID存储解决方案的同步流体系结构和方法的公开实施例中,DMA复制操作使得在同步计算奇偶校验位的情况下将数据从主机119的应用缓冲器写入到I/O处理器的RAID高速缓存(本地存储器),从而使得能够在不延迟写入到盘的情况下完成对主机119的I/O操作,同时使得否则将与额外的读取/写入操作相关联的存储器开销最小化,因而提高应用数据吞吐量。
图4A还示出从容易理解的高级角度描绘同步流体系结构和方法的ROL(负载上RAID)实现或ROC(芯片上RAID)实现的具有DIF(DIX)436的RAID。例如,在ROL和ROC的情况下,主机OS 120的应用驱动器将DIX格式的数据存储在主机119的系统存储器432中。但是,在一些情况下,也可以在主机119上创建499 DIF格式(例如,标为“步骤0”)。因此,在这样的实施例中,系统存储器432中存储有App数据441和DIX 436。当将在主机119处创建的DIF数据复制到RAID高速缓存410上时(其中,现在复制DIF数据标为要素434处的DIF #2),RAID高速缓存410中存储有App数据441和虚拟LBA DIF 451。DMA体系结构将检查或验证DIF信息或DIX 436(例如,由DIF #1项表示),并执行更新或转换操作438。DIF #2处还描绘具有在双并发数据保护方案的情况下创建P和Q奇偶校验位的DIF操作的RAID。最后,SAS控制器(串行附连SCSI总线控制器)执行由要素433处的DIF #3所表示的DMA操作,以便检查所生成的DIF数据源和P/Q奇偶校验位数据并将其移动到RAID集合的目标盘或盘阵列437。因此,盘阵列437中存储有App数据441和物理LBA DIF 431。所公开的同步流体系结构和方法可以在运行中将用于检查和更新的DIF #1的操作与RAID奇偶校验位生成操作DIF #2 434加以组合。
对于其中写入数据小于RAID条带的一般I/O写入情形,需要对盘进行读取修改写入(RMW)操作。但是,在发出多个相继写入的较大流式写入的实施例中,可以收集整个数据条带,以使得不需要对盘进行RMW。在这种实施例中,根据从主机复制的新数据计算新的奇偶校验位。因此,RAID堆栈不需要等待累积足以创建完整条带的I/O写入请求。在该实施例中,对于XOR计算形成描述符,其中通常将源数据从I/O(主机)复制到存储器,并且通常计算XOR结果并将其存储在系统存储器432中。
诸如在盘复制过程中发生的大型I/O写入操作的一个实例是到盘的25GB HD-DVD复制,其中单个I/O至少是条带长度那么大或大于条带长度。在该实例中,RAID堆栈不需要累积多个I/O请求便可发出DMA/XOR操作并在执行XOR时将数据复制到高速缓存。同步流体系结构和方法使得XOR/PQ操作的这种新能力成为可能,其中它将数据复制和RAID加以组合。
补充RAID软件在准备组合的DMA/XOR操作之前管理I/O请求的逻辑-物理转译。这种改进的特征可以直接对RAID软件堆栈或合适的扩展实现,其中与I/O缓存相关联的任务因而涉及与XOR处理组合。
通过对于RAID计算消除一次从存储器的读取来达到更高吞吐量,以便减少存储器带宽需求。这种改进可以直接转化为流式写入以及已知的当利用之前已知的技术时受到存储器限制的大型写入工作负载的可以计量的基准性能改进。
通过从主机119的CPU卸载计算需求而在DMA支持体系结构中同步执行RAID-5/6和数据完整性检查438,达到了更高的RAS覆盖范围,并且因此提高了IPC(每个时钟的指令),消除了SSE L1抖动,并改善了高速缓存未命中,所有这些都导致增强的RAS覆盖范围。
对于变动大小的随机服务器工作负载,条带大小(例如,RAID-5/6阵列的8KB)必须等于或小于预期的I/O大小,以便能看到这种基准化改进。因此,必须相应地调谐系统以便消除奇偶校验位的RMW,并使特定服务器工作负载的存储性能最大化,从而得出以上性能益处。
表1捕获根据一些实施例经由所公开的用于改进的RAID存储解决方案(包括正常数据、DIF编码数据和自动转换为DIF的DIX编码数据)的同步流体系结构和方法提供的各种创新。表中的1b、1c、2c、3a处所表示的星形(*)选项代表由所公开的同步流体系结构和方法提供、而利用之前已知的RAID 5/6处理机制无法达到的新创新。
表1-具有DIF/DIX的RAID优化功能
公开的方法可以备选地集成到处理器的DMA引擎中以便与在例如主机119的处理器上运行的基于软件的RAID堆栈配合使用。
考虑利用所公开的同步流体系结构和方法的以下性能分析实例。首先,假设在简单的RAID-5写入配置中是例如具有三个(3x)源盘加上一个(1x)用于奇偶校验的盘的3+1配置。对于三个源,令3x是从主机到CBDMA的总进入数据BW,其中“x”是到主机119的PCIe链路上的每个源BW。
因此,未优化的RAID导致:3x从主机的DMA读取和3x到本地存储器的写入;3x从本地存储器的DMA读取和1x(P)到本地存储器的写入;4x从本地存储器的盘控制器读取以便写入到存储介质;因此,总的存储器BW(R&W)总共是3x+3x+1x+4x=11x。
现在相反地考虑根据公开实施例的优化的RAID流,其中有3x从主机的DMA读取和3x(数据)+1x(P)到本地存储器的写入;4x从本地存储器的盘控制器读取以便写入到存储介质。因此,优化后的总的存储器BW(R&W)总共是3x+1x+4x=8x,从而由于之前论述以及在未优化实例中得到证实的消除的读取/写入循环而实现了减少。
因此,与未优化的技术相比,得到11x/8x=1.375的应用带宽增益或大于37%的改进。此外,与未优化的技术相比,本地存储器带宽减少是3x/11x=0.272或减少大约~27%开销。
通过实践利用同步流体系结构和方法的公开实施例,还可达成功率节省。例如,对于未优化的RAID配置,实例性存储器控制器的DDR3物理层(I/O)功率耗散大约是~1.5W @70%(最大)利用率。在优化的情况下利用率下降27%经计算是1.1W或减少400mW。这种减少是显著的,并且可用于使否则不顺应的TDP(热设计功率)包线在界限内。此外,通过芯片组中的减少的活动达成了核逻辑功率减少。
使得能够在RAID 5/6奇偶校验位计算过程中在运行中进行DIF/DIX检查和转换比不足的体系结构提供这些改进之处,不足的体系结构不能够执行DIF检查,从而导致必须通过主机119的处理器来执行这种DIF检查,因而导致计算开销,并且通过扩展,对于托管应用还有效降低RAID流式带宽吞吐量。
在一个整体中进行数据传送和奇偶校验位计算的优化(组合)操作减少了存储器带宽,削减了动态功率(因为对更少电路加电),需要更少的描述符,并且提高了总体存储器利用率和RAID-5/6性能,同时通过对流式数据的内置式DIF检查提升了系统的RAS能力。
图4B和图4C分别描绘图4B中的未优化RAID 5/6操作401对图4C中的优化RAID 5/6操作402之间的对比,其中优化的RAID 5/6操作402利用根据公开实施例的同步流体系结构和方法。
对于图4B和图4C中的每个图,描绘具有闪速存储设备的控制器480(例如,IOP控制器)。IOP控制器480具有多个组件,包括L2高速缓存455(例如,描绘128K到1M)、到CPU的H-单元460(对于前端总线)接口、到DDR3存储器425的B-单元接口、DMA 440引擎(或CBDMA引擎)、消息传递单元445、A-单元/IOSF织构429(芯片上可缩放系统织构)和IOSF 430、用于互连主机119的PCIe Gen3 x8/x4端口450、盘存储控制器466(例如,NAND盘控制器等)、SPI 435、UART 470、传统块475(例如,计时器、APIC、RTC)、PCIe 4 x2 Root 465、D-单元420和B-单元415。
与未优化的RAID 5/6操作401相比,优化的RAID 5/6操作402削减了整体事务所需的读取/写入步骤的数量,从而导致更高的写入吞吐量和降低的本地存储器利用率。此外,根据公开实施例和优化的RAID 5/6操作402,DMA引擎可以在执行RAID奇偶校验位计算的同时插入DIF,或者检查编码数据的DIF并可选地将DIX转换为DIF 438。
图4B中的未优化RAID 5/6操作401描绘以下操作:1)I/O请求491,其中主机119在主机存储器中构建I/O请求,并在实现控制器的消息传递单元(例如,控制器105消息传递单元445或另一个实现控制器的消息单元)中投寄I/O请求,消息传递单元445将命令从主机存储器传送到实现控制器的本地存储器并中断核,响应于此,核在控制器的本地存储器中构建和投寄描述符,然后将请求发送给DMA单元440。2)DMA数据传送492:DMA单元440将数据从主机存储器移动到消息传递单元445并中断核。3)完成493:核在主机存储器中投寄完成并中断主机119。4)设置DMA描述符494:核在本地存储器中构建奇偶校验位相关的描述符并将其投寄给实现控制器,并将请求投寄给DMA单元。5)DMA奇偶校验位生成495:DMA在实现控制器的本地存储器中生成奇偶校验位,并中断核。6)盘控制器请求496:核在消息传递单元445中构建和投寄命令(例如,NAND命令),并将链接命令投寄给盘控制器。7)盘控制器命令提取操作497。8)盘控制器数据/奇偶校验位传送操作498:盘控制器将数据和奇偶校验位从实现控制器的本地存储器移动到基本RAID存储盘集合,然后将完成投寄到实现控制器的本地存储器中,并中断核。
图4C中的优化RAID 5/6操作402描绘以下操作:1)I/O请求481,其中主机119在主机存储器中构建I/O请求,并在实现控制器的消息传递单元(例如,控制器105的消息传递单元(MU)或另一个实现控制器的消息单元)中投寄I/O请求,消息传递单元将命令从主机存储器传送到实现控制器的本地存储器并中断核,响应于此,核在控制器的本地存储器中构建和投寄描述符,然后将请求发送给DMA单元。2)具有奇偶校验位的DMA优化数据传送482:DMA单元将数据从主机存储器移动到实现控制器的本地存储器并同步计算奇偶校验位,然后中断核。3)完成483:核在主机存储器中投寄完成并中断主机119,从而从描绘未优化的RAID5/6方法的图4B的操作401中消除项目“4”和“5”的需要。4)盘控制器请求484:核在消息传递单元445中构建和投寄命令,并将链接命令投寄给盘控制器。5)盘控制器命令提取操作485。6)盘控制器数据/奇偶校验位传送操作486。例如,ANC将数据和奇偶校验位从消息传递单元移动到基本RAID存储盘集合,然后将完成投寄到消息传递单元中,并中断核(ANC代表“应用优化的非易失性存储器”,例如基于ANC的闪速存储器装置和控制器,包括NAND存储器阵列的ANC)。
图4D和图4E描绘根据公开实施例的深度优先填充算法403和优化的带宽优先型填充操作404之间的对比。
当利用DMA硬件来进行RAID处理时,基于软件的RAID堆栈可以采用深度优先填充417算法403来将每页填充为最大条带大小,然后相继切换到下一个盘,例如,先填充要素411处的S1,接着相继填充要素412处的下一个盘S2,然后填充要素413处的S3。要素414处描绘了该实例的奇偶校验盘P。这种方法由于需要的描述符的数量而造成较大的开销。例如,对于如图4D处所描绘的跨越3个盘的第一条带需要96个描述符,其中每个盘有32个描述符,以便填充每个盘中的128K块416(这里特别关于要素411处的S1示出)。
反之,图4E中所描绘的优化的带宽优先型填充418填充操作404利用RAID优化描述符,通过RAID优化描述符,所需的总描述符减少为总共32个描述符,如图所示。这里,填充操作404跨越要素411处的S1、要素412处的S2、要素413处的S3和要素414处的用于P的奇偶校验盘中的所有填充“带宽优先”418,以作为带宽优先填充418填充操作404的部分。所得的3:1减少提高了基于软件的RAID堆栈的操作效率,从而使得如利用RAID优化描述符的图4E所描绘的那样更加有效,因而导致改善的带宽。
图4F和图4G描绘根据公开实施例用于改进的RAID 5/6性能的双罐数据流405和对实例性RAID 5/6 10+2配置的所得性能分析406。
如图所示的双罐数据流405(例如,在例如Briarwood控制器或其它有能力的控制器中实现)涉及双播。对于该特定双罐数据流405操作描绘两个实例性控制器,该特定双罐数据流405操作分别作用于实例性控制器461和实例性控制器462。还描绘实例性系统存储器463,其中分别示出A写入高速缓存和A写入镜像之间以及B写入镜像和B写入高速缓存之间的不同路径。利用优化的RAID DMA引擎,操作2a、2b和3组合到单个描述符中,在该描述符上将奇偶校验结果传送给本地存储器,同时通过到其它伙伴节点的NTB(非透明桥接)节省数据,而不必从存储器再读取数据。这消除了特殊多播逻辑的需要。下面阐述的数据路径映射表464提供关于双罐数据流405的各种描绘路径的注解,这些路径包括如两个实例性控制器461和462之间所表示的所示数据路径“1”、“2A”、“2B”、“3A”、“3B”和数据路径“4”中的每一路径。
性能分析表406描绘对于所描绘的10+2盘存储系统的Briarwood RAID 5/6的有效带宽的所示20%改善。性能分析表406描绘经由实践公开实施例而所示的若干个值,包括MaxDRAM BW 469、效率471、应用使用472、可用DRAM BW 473、RAID-6 BW(RTF)474、RAID-6 BW(存储器[单罐])476、RAID-6 BW(存储器[双罐])477、RAID-5 BW(存储器[单罐])478和RAID-5 BW(存储器[双罐])479。因此,对于实践本文阐述的公开实施例的其它类似的有能力的控制器,预期会有类似结果。改善了软件堆栈RAID操作,获得了系统存储器使用的减少,通过允许使用bin-1存储器速度来获得与非优化数据流相同的性能,在简化RAID堆栈软件的同时达成整体RAID性能(每秒的I/O操作)。该方法可以运用于SAS、SSD或任何其它存储技术,只要通过提供超过RAID阵列的条带长度的数据传送大小,应用便能够利用它。
利用RAID优化的双播有助于避免更加复杂且面积密集的其它硬件方法,例如PCIe或切换多播方法。此外,使得能够通过对流式数据同步执行DIF编码检查实现高端RAS能力,从而通过不需要额外的存储器读取而从主机119的CPU排除额外循环。
图5A描绘根据公开实施例供主机119以有限数量的门铃处理主机门铃写入而不会压制主机门铃写入或从I/O装置的门铃空间中溢出的实例性体系结构概况500。
根据公开实施例,包括用于攻击拥塞的公平性和预防的门铃仲裁在内的门铃机制的仲裁和资源方案提供了以有限数量的门铃处理主机门铃写入而不会压制主机门铃写入或从I/O装置的门铃空间中溢出的机制。例如,主机119在主机存储器中创建工作队列,并告知I/O装置以便通过写入到在I/O装置中实现的门铃来处理它们。在主机119在主机工作队列中添加条目的任何时间,主机将尾指针写入到I/O门铃空间。由于I/O装置中的门铃空间的量有限,所以根据公开实施例,如本文所教导的公开机制使得能够以有限数量的门铃处理主机门铃写入而不会压制主机门铃写入或从I/O装置的门铃空间中溢出。此外,通过实践公开实施例,以公平的方式处理门铃写入。
两种类型的工作从主机119到达诸如控制器105的卡。一种类型是作为Admin(管理)门铃消息到达Admin队列(AQ)590的admin工作。第二种类型是作为提交队列门铃到达的常规存储处理工作。可以拾取并发送admin工作或常规存储处理工作(门铃)以用于处理585。
图5A描绘这种队列结构(Q结构)的两个级别,具体来说是Q结构1级SQ_x(包括1级High(高)550、1级medium(中等)555和1级low(低)560)和2级SQ_x(包括2级High(高)535、2级medium(中等)540和2级Low(低)545)。在1级SQ_x(560、555和550)中,条目包含关于门铃中有多少个SQ条目的信息,并且在1级SQ_x模式中,到达的所有门铃将按照顺序排到1级SQ_x Q结构中(在错误检查505、510和515之后),并将根据配置空间中所指定的权(Weight_AQ)进行仲裁580,该权指定在切换到其它SQ(服务队列)之前最大可以处理多少个工作。Weight_SQ_High(参数、配置或其它阈值)指定在切换到SQ_Medium之前最大可以处理多少个工作,依此类推。1级仲裁575规定,将门铃排到Qs中,直到1级SQ_x(560、555和550)填满。
在2级SQ_x(535、540和545)中,来自主机119的新门铃将不只通过错误检查505、510和515,而且还将针对2级SQ_x利用SQid(服务队列标识符)进行CAM检查(针对“内容可寻址存储器”或“CAM”进行检查)520、525和530,以便确保在将到达的门铃推到2级SQ_x中之前,来自相同SQ的之前门铃没有是待处理的。因此,将丢弃565找到匹配CAM命中的新门铃。
图5B描绘根据公开实施例供主机119处理主机门铃的备选实例性体系结构概况501。具体来说,根据所描绘的实施例,通过连续处理1级SQ High(高)门铃,可以可选地整个绕过1级SQ High 550,从而消除1级SQ High 550排队的需要(例如,空间开始并且可以保持为空)。这里所描绘的操作最初示出,所有1级SQ_x和2级SQ_x空间/位置都是空的。来自主机119的新门铃通过错误检查(例如,CAM匹配),由此检查具有相同值和门铃翻转的重复门铃。当检测到错误时,与具有错误的门铃或明显恶意的门铃相关联的SQ将被禁用并从进一步仲裁移除。
在错误检查之后,接着将门铃(例如,假设对于该实例SQ数量为“n”)推到1级SQ_High中。该过程继续,直到1级SQ_High完全填满为止。在填充1级SQ_High空间之后,在2级SQ_High空间中放入其它高优先级门铃。例如,如果在1级SQ_High填满之后SQ n再多发送10个(10x)门铃,那么只将第一个门铃放在2级SQ_High中,其它九个门铃则丢弃。此时,还将来自SQ medium(中等)的门铃放到2级SQ_High空间中。
将为1级SQ_High中的门铃连续地提供服务,直到1级SQ_High空间中没有待处理的门铃(例如,配合1级SQ_Medium和1级SQ_Low旋转方法使用加权循环法)。接下来,将为来自2级SQ_High的待处理门铃提供服务,如图5B所描绘。
从2级SQ_High拾取的门铃可能只具有如MAX_JOB_SQH值或配置空间中的其它合适配置的阈值所确定的接受服务的最大数量的工作。剩下的工作导致将该实例中的来自SQ n的门铃放在2级SQ_High空间的末端,以便等待下一轮门铃服务。
1级SQ仲裁机制实现了需要严格按照主机119发送到I/O装置的顺序处理提交的门铃的请求实体或平台。提供2级SQ是为了防止任何门铃溢出。优选地,根据公开实施例严格控制软件的行为,以使得不会或者很少发生溢出。
图5C描绘根据公开实施例供主机处理主机门铃的另一备选实例性体系结构概况502。根据其中请求实体或平台认为门铃处理的顺序不是关键的实施例,那么接着可以将1级SQ结构配置到绕过模式中,并且可以完全禁用1级仲裁(566),以使得2级SQ和对应的仲裁是作用于排队门铃的唯一仲裁,如图5C参考SQ high空间所描绘。取决于软件行为以及期望的队列处理和仲裁行为,对于每个优先级Q结构,可以个别禁用1级SQ结构和仲裁。注意,每个1级SQ_x队列空间都不见了,包括在例如图5A处所描绘的1级High 550、1级 medium 555和1级low 560。
2级SQ_x的大小应当优选地设置成等于主机119中的SQ的数量。在2级SQ_x的大小小于主机119中的SQ的数量的情况下,那么实现软件需要制定指派给指定优先化的Q的SQ的数量不会大于2级SQ_x的条目大小的保证,以免队列结构溢出。
另外,1级SQ_x的大小需要足够大以使得无需经常触发特别是2级SQ_x仲裁和其它有效仲裁方案。否则,1级SQ仲裁将提供更少的益处,并且可能是完全禁用的候选。因此,调谐考虑对1级SQ_x结构或空间的大小保证小心的关注。
因为控制器105允许通过应用将门铃直接发送给I/O装置,所以主机119可能看不到提交的门铃请求,或者可以简单地从管理提交的门铃请求的路径或责任移除,并且因此,合适的仲裁和排队方案是有利的,这不仅是因为从主机119卸载了责任,而且仍然可以获得合适的门铃队列和处理优先级管理。相关体系结构包括绕过主机OS 120的文件系统和存储设备堆栈的体系结构,其中例如使得控制器105能够直接写入到直接存取的存储设备117,而无需来自主机119的管理或甚至无需来自主机119或主机OS 120、主机119的文件系统等的任何介入。
根据公开实施例,实现硬件(例如,控制器105内的实现硬件)仲裁和拉取/接收来自主机119的工作,并将它们投寄到本地实现固件中。除了将对所有门铃请求进行仲裁以便递送最小服务等级的保证公平性外,而且还以使得滥用的应用无法压倒Q结构或仲裁机制而获得优于其它表现更良好的应用的不公平的服务优点的方式,防止主机119侧上的软件(例如,恶意软件)的任何错误行为。例如,滥用的应用将使不必要重复的门铃完全丢弃,并且将巨大得不成比例的门铃请求降低优先级至更低Q结构,直到其它到达的门铃具有对公平门铃处理的足够存取。
根据公开实施例的实践,上述1级SQ_x结构和2级SQ_x结构对于本领域来说是新的,尤其在结合其中使得应用能够直接提交门铃的主机绕过方法时更是如此。1级和2级仲裁的组合以及在1级和2级仲裁之间来回切换对于本领域来说也是新的,尤其是在结合这种主机绕过场景的情况下更是如此。取决于软件要求和行为将某个SQ(如SQ high)设置到1级和2级仲裁中、同时对于其它优先级SQ禁用1级仲裁另外增加了本领域的新能力,如同对于门铃的2级再排队的能力(在处理完最大数量的SQE(工作)之后)。
图5D描绘根据公开实施例的门铃提交、排队和仲裁机制的高级过程流503。例如,方框570描绘启用空闲1级SQ仲裁机制,由此对于到达的门铃前往方框572,在方框572,对门铃进行错误检查以便检查是否存在出错的、恶意的、或基于攻击的错误。如果是,即存在错误,那么过程流继续进行至方框574,在方框574,SQ将禁止具有错误的门铃进行进一步仲裁。反之,如果在572处不存在错误,那么过程流继续进行至方框576,在方框576,将门铃与关于待处理或存在的SQE的数量的信息一起放到1级SQ_x中。对于到达的门铃,过程流继续进行至方框598,并且如果1级SQ_x已满,那么过程流继续进行至方框584,在方框584,在2级SQ_x空间中创建条目。反之,在方框598,如果1级SQ_x没有满,那么过程流返回到错误检查方框572。从方框584,对于到达的门铃,过程流可以继续进行至方框588,以便执行错误检查操作。如果是,即存在错误,那么过程流继续进行至方框599,并禁止SQ进行进一步仲裁。反之,如果没有错误,那么过程流从错误检查方框588移动到方框591,在方框591,确定2级SQ_x中是否已经存在来自相同SQ的门铃(例如,经由针对门铃的SQid的CAM匹配)。如果否,那么过程流从方框591继续进行退后至方框584。如果是,即在2级SQ_x中已经存在相同SQ,那么过程流继续进行至方框593,它用新的工作编号更新原始门铃,由此,继续进行至方框596,以便等待新的门铃,并且当新门铃到达时,过程流返回到方框588进行错误检查。
现在返回参考方框576,备选分支前往方框578,它继续服务于1级SQ_x空间中的门铃,然后继续进行至方框582,在方框582,检查1级SQ_x空间以便查看它是否是空的。如果否,即不是空的,那么过程流继续进行回到方框570处的开始。如果是,即是空的,那么过程流继续进行至方框586,并进行检查以便确定2级SQ_x是否是空的。过程流也可以从上文没有寻址的方框584的备选分支前进到方框586,在方框586,进行检查以便确定2级SQ_x是否是空的。从方框586,如果是,即在检查时2级SQ_x是空的,那么过程流返回到方框570处的开始。或者,从方框586,如果否,即2级SQ_x不是空的,那么过程流前进到方框592,在方框592,经由合适配置的阈值检查每个门铃所允许的最大数量的SQE(工作)上的服务。前进到方框594,如果SQ具有多于允许的SQE最大值的工作(当是时),那么前进到方框597,将门铃再排队,然后过程流前进到方框595。或者,如果SQ不具有多于允许的SQE最大值的工作,那么过程流直接前进到方框595,而不必将门铃再排队。在方框595,进行检查以便确定2级SQ_x是否是空的。如果否,即2级SQ_x不是空的,那么过程流返回到方框592,在方框592,再次检查每个门铃所允许的最大数量的SQE(工作)上的服务。或者,如果是,即2级SQ_x是空的,那么过程流继续进行回到方框570处的开始。
图6A描绘根据公开实施例的实例性体系结构概况600,它用于实现中断合并方案以便减少中断服务例程(ISR)开销,同时通过对错误状况进行通知来改善RAS。
根据公开实施例,利用控制器105或其它控制器480中的消息传递单元和NTB的多中断生成的解决方案和方法提供了这样一种机制,它实现中断合并方案以便减少ISR开销,同时通过对错误状况进行通知来改善RAS。公开的实施例解决了如何从控制器105的消息传递单元向主机119和主机的本地CPU有效地呈现中断以使得它可以应对正常完成和错误的问题。根据公开实施例,实现中断合并方案以便减少ISR开销,同时通过对错误状况进行通知来改善RAS。
此外,对于主机119的中断合并方案利用NTB(非透明桥接)端口的能力。通过利用多个MSI-X(消息信令中断和消息信令中断扩展)向量和NTB端口门铃机制,可以将消息传递单元完成处理传送给主机和本地主机119系统以便处理工作队列624(例如,经由API工作队列引擎617),从而导致利用RAID堆栈的托管应用的更高的系统性能以及更好地处理错误状况。
如图6A所描绘的实例性存储控制器480(例如,控制器实现105)由可示例化ANC(例如,基于ANC的闪速存储器装置和控制器,如NAND存储器阵列的ANC)的IOP(集成式I/O处理器)以及控制器105的消息传递单元组成。在该实施例中,IOP控制器或其它有能力的实现控制器480包括多个组件,包括L2高速缓存455(例如,描绘的是128K到1M)、用于I/O处理RAID堆栈的F/W和管理606、H-单元460、B-单元接口415、具有ECC的DDR3存储器425、D-单元607(例如,写回高速缓存的DRAM;RAID缓冲和具有电源故障检测和支持复制-闪速模式的F/W表)、DMA 603引擎或CBDMA引擎(例如,用于以DIF实现RAID计算)、消息传递单元617(例如,用于实现API工作队列引擎的消息传递单元)、A-单元/IOSF织构429(芯片上可缩放系统织构)和IOSF 430、到主机119或宿主机700(图7)并用于互连该主机119的PCIe端口666(例如,实现主机接口PCIe端点上行链路)、SPI 435、UART 470、传统块475(例如,计时器、APIC、RTC)、3 PCIe Gen2 x8 Root 604(例如,在芯片组集成器中具有本地PCIe模式的链路)以及CPU(例如,具有DDR3存储器的8GB的双核1.6GHz原子核)。提供用于连接至主机119的NTB端口和3×8根端口,3×8根端口可用于传送到ANC或SCU控制器和消息传递单元,消息传递单元与驱动器交互以便处理提交队列并投寄完成。IOP或其它实现控制器480通过NTB经由NTB-根端口配置连接到主机119。
图6B描绘根据公开实施例用于实现中断合并方案的备选实例性体系结构概况601。如图所描绘,消息传递单元(如图所示的MU 628和633,其中MU 628是用于读取的消息传递单元DMA,而MU 633是用于写入的消息传递单元DMA)负责将在主机119的存储器中所投寄的提交队列(SQ)条目(例如,工作队列结构624中的SQ条目)移动到控制器105的存储器或另一实现控制器的存储器(例如,控制器480等),并负责将完成状态转发给位于主机119的存储器中的完成队列(CQ)625中。在一个实施例中,消息传递单元支持多个SQ和CQ,例如每个1024×1024条目。在消息传递单元628、633内采用仲裁方案(例如,如通过消息传递单元仲裁器627以每个WQ的优先级所实现),以便选择不同队列之一以用于通过IOP的CPU经由控制器固件637进行处理。通过驱动器经由例如AC的F/W工作列表622或另一有能力的实现控制器的这类工作列表将这些队列归类为不同类型,例如Admin(管理)、高、中和低优先级工作队列,以用于处置。
主机119通过投寄SQ条目并将尾指针写入到SQ门铃寄存器626来启动操作,在SQ门铃寄存器626中将消息传递单元门铃映射到保护域的页面。消息传递单元检查保护域标识符629(例如,具有数据附加的消息传递单元保护域和存取验证检查)以及SQ上下文查找(例如,经由WQ上下文630和/或允许表631),并且如果检查失败,那么将坏(例如,出错)门铃值记入日志,并丢弃门铃635(例如,经由NTB)。或者,如果检查通过,那么消息传递单元检查对应的优先级工作列表622头部和尾部,并从主机119提取SQ条目。消息传递单元执行必需的簿记(例如,经由完成仲裁器632),对SQ条目进行更新,并将工作列表条目投寄给控制器105的存储器中的工作列表地址。
控制器固件处理工作列表条目,投寄完成623(例如,I/O或Admin(管理)型门铃),并告知消息传递单元。消息传递单元处理待处理的完成队列,并将对应完成投寄给主机119的存储器中的完成队列625。
消息传递单元对于主机119 CPU和控制器105或IOP控制器或其它实现控制器480的本地CPU实现MSI-X中断621和636。两个MSI-X数据结构集合支持主机119 CPU和本地CPU。具体来说,两种类型的主机MSI-X中断是:1)经由MSI-X中断机制636的完成队列中断(正常中断),它们可以在消息传递单元将完成投寄给主机119的完成队列时进行。根据公开实施例,将这些第一类型的“完成队列中断”合并(例如,经由中断合并控制寄存器634),这将在下文额外详细地论述。2)第二种类型是经由MSI-X中断机制621的错误中断,它指示发生了将影响驱动器和消息传递单元的操作的错误状况。根据公开实施例,错误中断类型造成立即中断。
根据备选实施例,可以在主机119中经由主机119母板的跳线设置来禁用EXPROM,或者主机119的BIOS可以配置成在它加载驱动程序之后不启用EXPROM。
根据一个实施例,MSI-X能力使得消息传递单元能够对于主机119的CPU生成一个错误中断和32个正常中断。在一个实例性实施例中,MSI-X表的条目0-31指派给正常中断,而条目32指派给错误中断。在该实施例中,消息传递单元具有1024个正常中断源,但是这个量显然可以改变。可以利用控制器105中的专用映射寄存器来将这些正常中断源映射到这32个正常中断中的任何一个中断。类似地,可以利用类似的映射寄存器来将消息传递单元错误源映射到错误中断。
通过使用32个中断合并控制寄存器来控制“合并数量”并使用指派给完成的32个MSI-X中断向量的“合并计时器”,中断合并能力实现了供消息传递单元使用的合并算法,以使得只有当未解决的完成的数量超过在“中断合并控制寄存器”634中所定义的合并数量或者合并计时器到期时,才断言对驱动器的中断。
合并计时器字段指定在发出中断之前的最小/最大延迟。该时间是基于自由运行计时器的,因此,如果在投寄完成条目之后计时器刚好到期,那么将观察到最小范围,并且如果在投寄完成条目之前计时器刚好到期,那么将观察到最大范围。
图6C描绘根据公开实施例用于实现中断合并方案的备选实例性体系结构概况602。
当启用消息信令中断(MSI)或MSI-X(MSI扩展)时,经由NTB/NTB-RP 671能力的中断生成与主机119的处理器672(例如,外部CPU/eCPU,如主机或主机的次级远程CPU)协同操作。消息传递单元负责对NTB(位于消息传递单元外部)执行对等写入以便生成合适的MSI或MSI-X。
NTB具有为如主机119所见的用于实现来自外部侧的门铃请求673的控制器105的外部端点所定义的DOORBELL(门铃)寄存器。DOORBELL寄存器包含用于将消息传递单元映射到主机119的完成队列和错误中断的33个位。另外,DOORBELL寄存器具有用于发信号通知主机在完成所有初始化之后控制器105(或其它控制器,例如IOP控制器或控制器480等)准备好操作的专用字段。
在系统初始化过程中,MSI-X兼容的系统的配置软件将经由例如NTB-PCIe下游端口678在NTB的“MSI-X能力寄存器”中读取MSI-X表大小以便确定支持33个唯一中断消息。配置软件还将读取NTB PCIe配置空间的“MSI-X表偏移寄存器”和“MSI-X待处理位阵列偏移寄存器”以便确定这些结构的位置。
配置软件将通过写入消息地址寄存器(并且,如果消息地址大于4千兆字节可寻址边界,那么还写入消息上部地址寄存器)、消息数据寄存器和向量控制寄存器来初始化MSI-X表以便揭露表条目。MSI-X的配置通过在NTB的“MSI-X能力寄存器”中设置MSI-X启用来完成。
来自消息传递单元的本地MSI-X生成对于实现控制器的本地CPU(例如,位于例如控制器105内的原子处理器)支持两种类型的中断。1)作为第一类型的正常中断包括:a) 对于任何优先级工作列表添加新优先级工作条目的MSI-X;b) 对于Admin工作列表添加新的Admin工作条目的MSI-X;c) 当待处理的完成队列(PCQ)从满状态转变为不满状态时的MSI-X;以及d) 当Admin PCQ从满状态转变为不满状态时的MSI-X。
作为第二类型的错误中断指示发生了将影响消息传递单元的操作的一个或多个错误状况。实例包括不正确的读取/写入操作、错误的初始化错误、不正确的区域等。
因此,内部CPU 674(例如,iCPU,如实现控制器的主要的本地CPU)可经由例如如图所示的来自其中触发Door Bell_IP 653的iEP 651的中断676中断。门铃请求还可以来自内部侧675,例如来自实现控制器内部。eEP 652处的门铃(eEP)654示为是MBAR01_XLAT 655,根据公开实施例,它编程为零,以便经由例如中断677使控制器退出外部侧。
在某些实施例中,定义MSI-X地址空间以便通过为每种类型的中断指派专用地址和数据向量来提高系统性能。
消息传递单元通常可以为它所完成的每个提交队列生成1000s中断。因此,根据公开实施例,如本文所公开的中断合并方案提供一种再映射机制,以便通过可由固件管理的MSI-X向量的更小子集来减少这些大型提交队列完成。此外,中断合并方案所使用的硬件提供了用于中断合并的设施以便减少ISR调用开销并且因此从所涉及的CPU去除计算压力,所涉及的CPU包括主机119的CPU以及实现控制器的CPU,例如控制器105内的CPU。另外,控制器105内的NTB端口可以用兼容的门铃机制扩大以便在一个到一个的基础上映射这些向量以用于通知的目的。
利用中断合并方案实践公开实施例提供了解决通过之前的体系结构(例如,IA32)进行大型MSI-X向量处理的缺点的解决方案,并且因此更具伸缩性。中断合并方案通过隔离错误和指派唯一中断提供了改进的RAS。通过上述再映射设施,可以将来自完成队列的大量中断约束为更小子集,并通过NTB端口经由门铃机制发送。另外,由于与在一个接一个基础上处理单个或各个中断相关联的开销的减少(此时不一定这样做),同时允许对错误状况进行立即中断触发,对此一个接一个通知方案可能更合适,中断合并改善了整体系统性能。
利用中断合并方案实践公开实施例还改善了芯片上RAID(ROC)以及具有处理工作队列提交并需要通知给CPU的消息传递单元的外部存储平台的使用。存储设备可以是在主机119的管理之外操作的直接存取的存储设备117类型的存储设备,或者可以是在主机119的控制下操作的存储设备类型的存储设备。
图7示出根据一个实施例在实例性形式的计算机系统中的宿主机700的图形表示,在该实例性形式的计算机系统内可以执行指令集,以便使宿主机/计算机系统700与本文所论述的任何一个或多个方法协作地执行。在备选实施例中,该机器可以连接(例如,联网)到局域网(LAN)、内联网、外联网或互联网中的其它机器。该机器可以在客户端-服务器网络环境中的服务器或客户端机器的容量内操作,在对等(或分布式)网络环境中作为对等机器操作,在按需服务环境内作为服务器或服务器系列操作。该机器的某些实施例可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web器具、服务器、网络路由器、交换器或桥接器、计算系统或能够(顺序或按其它方式)执行指定将通过该机器采取的动作的指令集的任何机器的形式。此外,尽管只示出单个机器,但是术语“机器”还应当视为是包含个别或联合执行指令集(或多个指令集)以便执行本文所论述的任何一个或多个方法的机器(例如,计算机)的任何合集。
实例性计算机系统700包括处理器702、主存储器704(例如,只读存储器(ROM)、闪速存储器、诸如同步动态随机存取存储器(SDRAM)或Rambus DRAM(RDRAM)等的DRAM、诸如闪速存储器、静态随机存取存储器(SRAM)、易失性但高数据速率RAM等的静态存储器等)和二级存储器718(例如,非暂时性且非易失性的物理存储装置,包括硬盘驱动器),它们经由总线730彼此通信。主存储器704包括在宿主机700上操作和执行的一个或多个托管应用724。主存储器704还包括使得主机能够与各种外围联合体通信的驱动程序723,外围联合体可以是例如在通信上与宿主机700的总线730对接并且在通信上还与如图7所描绘的外部控制器对接的PCIe接口734(例如,到控制器105或其它控制器480的PCIe通信接口等)。主存储器704及其子元件(例如,723和724)可结合处理逻辑726和处理器702操作以便执行本文所论述的方法并与所描述的各种方法协作地操作。
处理器702代表诸如微处理器、中央处理单元等的一个或多个通用处理装置。更具体来说,处理器702可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、非常长指令字(VLIW)微处理器、实现其它指令集的处理器或实现指令集的组合的处理器。处理器702还可以是一个或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理器702配置成执行处理逻辑726以便执行本文所论述的操作和功能性。
计算机系统700还可以包括网络接口卡708。计算机系统700还可以包括用户接口710(例如,视频显示单元、液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置712(例如,键盘)、光标控制装置714(例如,鼠标)和信号生成装置716(例如,集成扬声器)。计算机系统700还可以包括外围装置736(例如,无线或有线通信装置、存储器装置、存储装置、音频处理装置、视频处理装置等)。
二级存储器718可以包括其上存储有实施本文所描述的任何一个或多个方法或功能的一个或多个指令集(例如,软件722)的非暂时性机器可读或计算机可读存储介质731。软件722还可以在通过计算机系统700执行期间全部或至少部分地驻留在主存储器704和/或处理器702内,主存储器704和处理器702也构成机器可读存储介质。软件722还可以通过网络720经由网络接口卡708传送或接收。
尽管用特定实施例举例描述了本文所公开的主题,但是将了解,要求权利的实施例不限于所公开的明确列举的实施例。相反地,希望本公开涵盖对于本领域技术人员来说显而易见的各种修改和类似布置。因此,应当给予随附权利要求的范围最广的解释,以便涵盖所有这些修改和类似布置。将了解,希望以上描述是说明性的而不是限制性的。在阅读和理解以上描述之后,许多其它实施例将对于本领域技术人员来说显而易见。因此,所公开的主题的范围将参考随附权利要求以及给予这些权利要求的等效物的全部范围来确定。
Claims (20)
1.一种设备,包括:
到直接存取的存储设备的输入/输出接口(I/O接口)模块;以及
存储设备适配器,用于代表所述直接存取的存储设备提供分区表,其中所述分区表实现通过所述I/O接口模块对所述直接存取的存储设备的逻辑块存取(LBA存取),
其中,所述直接存取的存储设备包括多个直接存取的存储器设备子模块,它们提供其自己的块级镜像以确保一致的低等待时间,
其中,所述直接存取的存储设备配置成从外部装置接收单个I/O事务并基于所述单个I/O事务对多个数据区块执行多个纠错码(ECC)操作和至少一个XOR功能,
其中,所述单个I/O事务包括指定要被存储在所述存储设备上的数据的写入I/O事务,或者指定要被从所述存储设备检索的数据的读取I/O事务,并且
其中,所述写入I/O事务没有为指定的数据提供奇偶校验位数据或XOR保护信息,并且所述读取I/O事务指定用于检索的数据,而无需为指定的数据指定数据区块位置或XOR区块位置。
2.如权利要求1所述的设备,其中所述直接存取的存储设备独立于主机、主机操作系统和/或主机管理的文件系统操作,并且不受所述主机、所述主机操作系统和/或所述主机管理的文件系统管理或控制。
3.如权利要求2所述的设备,其中所述直接存取的存储设备可经由应用直接存取,所述应用由所述主机或所述主机操作系统托管并在所述主机或所述主机操作系统上执行。
4.如权利要求1所述的设备,其中所述存储设备适配器还向在通信上与所述设备对接的主机呈现LBA存取装置,所述LBA存取装置支持对所述直接存取的存储设备的主机发起的逻辑块存取请求(LBA请求)。
5.如权利要求1所述的设备,其中用于代表所述直接存取的存储设备提供所述分区表的存储设备适配器包括用于实现、维护和存储所述分区表的存储设备适配器。
6.如权利要求1所述的设备,其中用于提供所述分区表的存储设备适配器包括用于在直接存取驱动器到所述直接存取存储设备的方向上合成所述分区表的存储设备适配器。
7.如权利要求1所述的设备,其中在控制器内实现所述设备。
8.如权利要求7所述的设备,其中所述控制器包括控制器。
9.如权利要求7所述的设备,其中所述控制器包括:
本地控制器中央处理器单元(CPU);
本地控制器存储器;
PCIe(外围组件互连Express)接口,用于在通信上链接所述控制器和宿主机;以及
控制器接口模块,用于经由所述PCIe接口与所述宿主机进行指令通信。
10.如权利要求9所述的设备:
其中所述控制器接口模块从所述宿主机接收对存储在所述直接存取存储设备上的数据的LBA请求;并且
其中所述控制器经由所述存储设备适配器的通过所述控制器的所述I/O接口模块实现的对所述直接存取的存储设备的LBA存取来履行来自所述宿主机的所述LBA请求。
11.一种存储设备,包括:
布置到多个NAND(与非)阵列中的多个基于NAND的闪速存储器组件;
在通信上与所述多个NAND阵列对接的NAND控制器;以及
用于建立写入到所述存储设备的每个数据块的镜像副本的块镜像逻辑,每个镜像副本将存储在所述多个NAND阵列之一内,
其中,所述多个NAND阵列配置成从外部装置接收单个I/O事务并基于所述单个I/O事务对多个数据区块执行多个纠错码(ECC)操作和至少一个XOR功能,
其中,所述单个I/O事务包括指定要被存储在所述存储设备上的数据的写入I/O事务,或者指定要被从所述存储设备检索的数据的读取I/O事务,并且
其中,所述写入I/O事务没有为指定的数据提供奇偶校验位数据或XOR保护信息,并且所述读取I/O事务指定用于检索的数据,而无需为指定的数据指定数据区块位置或XOR区块位置。
12.如权利要求11所述的存储设备,其中用于建立写入到所述存储设备的每个数据块的所述镜像副本的所述块镜像逻辑包括用于在所述多个NAND阵列中的一个NAND阵列内存储每个数据块的每个镜像副本的块镜像逻辑,其中所述多个NAND阵列的所述一个NAND阵列不同于所述多个NAND阵列中的其上存储每个镜像副本的对应数据块的NAND阵列。
13.如权利要求11所述的存储设备:
其中所述块镜像逻辑将所述多个基于NAND的闪速存储器组件之一指定为第一NAND位置以用于存储数据块;并且
其中所述块镜像逻辑将所述多个基于NAND的闪速存储器组件的第二组件指定为第二NAND位置(NAND位置一撇)以用于存储在所述第一NAND位置内所存储的所述数据块的所述镜像副本。
14.如权利要求13所述的存储设备,其中所述块镜像逻辑还在所述多个NAND阵列中为对应于任何数据块和所述数据块的镜像副本的每个第一NAND位置和第二NAND位置一撇维持排他性。
15.如权利要求11所述的存储设备:
其中所述NAND控制器还在通信上链接到外部装置;
其中所述NAND控制器用于从所述外部装置接收I/O事务;并且
其中所述存储设备经由所述NAND控制器结合经由所述多个NAND阵列的所述块镜像逻辑履行来自所述外部装置的所述I/O事务。
16.如权利要求15所述的存储设备:
其中来自所述外部装置的所述I/O事务包括用于指定即将存储在所述存储设备上的数据块的写入I/O事务;
其中所述块镜像逻辑用于将所述指定的数据块写入到所述多个NAND阵列中的第一NAND阵列;并且
其中所述块镜像逻辑用于将所述指定的数据块的镜像副本写入到所述多个NAND阵列中的第二NAND阵列,其中所述多个NAND阵列中的所述第一NAND阵列和所述多个NAND阵列中的所述第二NAND阵列不同。
17.如权利要求15所述的存储设备:
其中所述块镜像逻辑用于确定其上存储所述指定的数据块的所述多个NAND阵列的第一NAND阵列;
其中所述块镜像逻辑用于确定其上存储所述指定的数据块的所述多个NAND阵列的所述第一NAND阵列正在处理有效擦除操作并且不可用于检索所述指定的数据块;
其中所述块镜像逻辑用于确定其上存储所述指定数据块的所述镜像副本的所述多个NAND阵列的第二NAND阵列;并且
其中所述块镜像逻辑用于在履行所述读取I/O事务中从所述多个NAND阵列的所述第二NAND阵列检索所述指定数据块的所述镜像副本。
18.如权利要求17所述的存储设备,其中所述块镜像逻辑防止同时向其上存储所述指定数据块的所述多个NAND阵列的所述第一NAND阵列和其上存储所述指定数据块的所述镜像副本的所述多个NAND阵列的所述第二NAND阵列发出有效擦除操作,以便保证所述指定数据块或所述指定数据块的所述镜像副本始终可用。
19.如权利要求11所述的存储设备:
其中所述存储装置是SSD(固态驱动器),在所述SSD中集成了布置到所述多个NAND阵列中的所述多个基于NAND的闪速存储器组件,并且在所述SSD中还集成了所述NAND控制器;并且
其中所述SSD的所述NAND控制器用于实现所述SSD的所述块镜像逻辑,并且
其中所述SSD用于作为以下之一进行操作:
1) 直接存取存储装置,它独立于主机、主机操作系统和/或主机管理的文件系统操作并且不受所述主机、所述主机操作系统和/或所述主机管理的文件系统管理或控制,所述直接存取存储装置可经由应用直接存取,所述应用由所述主机或所述主机操作系统托管并在所述主机或所述主机操作系统上执行,其中所述直接存取存储装置在操作上与外部控制器对接,所述外部控制器作为与所述SSD的所述NAND控制器通信的所述外部装置操作;或
2) 端点存储装置,它在所述主机、所述主机操作系统和/或所述主机管理的文件系统的控制下操作并且受所述主机、所述主机操作系统和/或所述主机管理的文件系统管理和控制,其中所述端点存储装置在通信上与所述主机对接,所述主机作为与所述SSD的所述NAND控制器通信的所述外部装置操作。
20.如权利要求11所述的存储设备:
其中所述存储装置是SSD(固态驱动器);并且
其中所述外部装置包括控制器,所述控制器中包含:
本地控制器中央处理器单元(CPU);
本地控制器存储器;
PCIe(外部组件互连Express)接口,用于在通信上链接所述控制器和宿主机;以及
控制器接口模块,用于经由所述PCIe接口与所述宿主机进行I/O操作和指令通信,所述通信的I/O操作将转播给所述SSD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610305654.4A CN106021147B (zh) | 2011-09-30 | 2011-09-30 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/054313 WO2013048451A1 (en) | 2011-09-30 | 2011-09-30 | Presentation of direct accessed storage under a logical drive model |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610305654.4A Division CN106021147B (zh) | 2011-09-30 | 2011-09-30 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104040515A CN104040515A (zh) | 2014-09-10 |
CN104040515B true CN104040515B (zh) | 2018-05-11 |
Family
ID=47996184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075095.8A Active CN104040515B (zh) | 2011-09-30 | 2011-09-30 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
Country Status (4)
Country | Link |
---|---|
US (4) | US9417821B2 (zh) |
EP (2) | EP3438839A1 (zh) |
CN (1) | CN104040515B (zh) |
WO (1) | WO2013048451A1 (zh) |
Families Citing this family (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9154942B2 (en) * | 2008-11-26 | 2015-10-06 | Free Stream Media Corp. | Zero configuration communication between a browser and a networked media device |
US8813144B2 (en) * | 2011-01-10 | 2014-08-19 | Time Warner Cable Enterprises Llc | Quality feedback mechanism for bandwidth allocation in a switched digital video system |
CN104040515B (zh) | 2011-09-30 | 2018-05-11 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
US9306843B2 (en) | 2012-04-18 | 2016-04-05 | Nicira, Inc. | Using transactions to compute and propagate network forwarding state |
TW201411358A (zh) * | 2012-09-10 | 2014-03-16 | Accusys Inc | 透過PCIe介面連接於一主機系統的儲存裝置和方法 |
US9348758B2 (en) * | 2012-09-24 | 2016-05-24 | Sk Hynix Memory Solutions Inc. | Virtual addressing with multiple lookup tables and RAID stripes |
US9639457B1 (en) * | 2012-12-20 | 2017-05-02 | Datadirect Networks, Inc. | Data storage system and method for data migration between high-performance computing architectures and data storage devices using storage controller with distributed XOR capability |
US9298648B2 (en) * | 2013-05-08 | 2016-03-29 | Avago Technologies General Ip (Singapore) Pte Ltd | Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch |
US20140359612A1 (en) * | 2013-06-03 | 2014-12-04 | Microsoft Corporation | Sharing a Virtual Hard Disk Across Multiple Virtual Machines |
US9348537B2 (en) * | 2013-09-10 | 2016-05-24 | Qualcomm Incorporated | Ascertaining command completion in flash memories |
US9973424B1 (en) * | 2013-12-31 | 2018-05-15 | Sanmina Corporation | Storage system with flow based services for flash storage |
WO2015130314A1 (en) | 2014-02-28 | 2015-09-03 | Hewlett-Packard Development Company, L.P. | Mapping mode shift |
KR102238650B1 (ko) * | 2014-04-30 | 2021-04-09 | 삼성전자주식회사 | 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법 |
US9891993B2 (en) * | 2014-05-23 | 2018-02-13 | International Business Machines Corporation | Managing raid parity stripe contention |
US9959203B2 (en) | 2014-06-23 | 2018-05-01 | Google Llc | Managing storage devices |
US9874910B2 (en) | 2014-08-28 | 2018-01-23 | Intel Corporation | Methods and apparatus to effect hot reset for an on die non-root port integrated device |
KR102330391B1 (ko) | 2014-09-11 | 2021-11-24 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법 |
CN104268031B (zh) * | 2014-09-28 | 2017-07-21 | 安徽中科大国祯信息科技有限责任公司 | 一种用于磁盘阵列存储系统中固态硬盘的擦除码配置方法 |
KR102238652B1 (ko) | 2014-11-12 | 2021-04-09 | 삼성전자주식회사 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US9841904B2 (en) | 2015-03-02 | 2017-12-12 | Samsung Electronics Co., Ltd. | Scalable and configurable non-volatile memory module array |
US10275310B2 (en) | 2015-03-09 | 2019-04-30 | Western Digital Technologies, Inc. | Updating exclusive-or parity data |
CN104731527B (zh) * | 2015-03-17 | 2018-09-07 | 中国科学院计算技术研究所 | 一种三条带状态转换方法 |
CN104731526B (zh) * | 2015-03-17 | 2017-11-03 | 中国科学院计算技术研究所 | 一种不满条带写的方法及装置 |
US20160275026A1 (en) * | 2015-03-20 | 2016-09-22 | Intel Corporation | Weakly ordered doorbell |
US9559968B2 (en) * | 2015-03-23 | 2017-01-31 | Cisco Technology, Inc. | Technique for achieving low latency in data center network environments |
US10824362B2 (en) | 2015-03-27 | 2020-11-03 | Hewlett Packard Enterprise Development Lp | File migration to persistent memory |
CN104881246B (zh) * | 2015-03-30 | 2018-01-12 | 北京华胜天成软件技术有限公司 | 应用于集群存储系统的输出入传递方法及系统 |
CN107209720B (zh) | 2015-04-02 | 2020-10-13 | 慧与发展有限责任合伙企业 | 用于页面高速缓存的系统及方法以及存储介质 |
US9923760B2 (en) | 2015-04-06 | 2018-03-20 | Nicira, Inc. | Reduction of churn in a network control system |
CN106257434B (zh) * | 2015-06-16 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种基于增强型外设互连协议总线的数据传输方法及装置 |
JP6527054B2 (ja) * | 2015-08-28 | 2019-06-05 | 東芝メモリ株式会社 | メモリシステム |
US10204122B2 (en) | 2015-09-30 | 2019-02-12 | Nicira, Inc. | Implementing an interface between tuple and message-driven control entities |
US9965417B1 (en) * | 2016-01-13 | 2018-05-08 | Xilinx, Inc. | Use of interrupt memory for communication via PCIe communication fabric |
US10078455B2 (en) * | 2016-01-20 | 2018-09-18 | Microsoft Technology Licensing, Llc | Predicting solid state drive reliability |
US10460825B2 (en) | 2016-01-28 | 2019-10-29 | International Business Machines Corporation | Sorting non-volatile memories |
US10705907B1 (en) * | 2016-03-24 | 2020-07-07 | EMC IP Holding Company LLC | Data protection in a heterogeneous random access storage array |
US9857990B1 (en) | 2016-03-24 | 2018-01-02 | EMC IP Holding Company LLC | Fast startup for modular storage systems |
US9904485B2 (en) * | 2016-03-31 | 2018-02-27 | Intel Corporation | Secure memory controller |
US11019167B2 (en) | 2016-04-29 | 2021-05-25 | Nicira, Inc. | Management of update queues for network controller |
KR102573301B1 (ko) | 2016-07-15 | 2023-08-31 | 삼성전자 주식회사 | Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법 |
US10614903B2 (en) | 2016-07-18 | 2020-04-07 | International Business Machines Corporation | Testing non-volatile memories |
US9588976B1 (en) | 2016-07-22 | 2017-03-07 | Red Hat, Inc. | Delayed allocation for a direct access non-volatile file system |
US9886449B1 (en) | 2016-07-22 | 2018-02-06 | Red Hat, Inc. | Delayed allocation for data object creation |
US10423487B2 (en) * | 2016-08-19 | 2019-09-24 | Samsung Electronics Co., Ltd. | Data protection offloads using SSD peering |
KR102558947B1 (ko) * | 2016-08-25 | 2023-07-25 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 |
KR102631351B1 (ko) * | 2016-10-07 | 2024-01-31 | 삼성전자주식회사 | 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 |
US10261705B2 (en) * | 2016-12-15 | 2019-04-16 | Alibaba Group Holding Limited | Efficient data consistency verification for flash storage |
US10846126B2 (en) * | 2016-12-28 | 2020-11-24 | Intel Corporation | Method, apparatus and system for handling non-posted memory write transactions in a fabric |
US10459795B2 (en) | 2017-01-19 | 2019-10-29 | International Business Machines Corporation | RAID systems and methods for improved data recovery performance |
WO2018140316A1 (en) | 2017-01-24 | 2018-08-02 | Arizona Board Of Regents On Behalf Of The University Of Arizona | A method and system utilizing quintuple parity to provide fault tolerance |
US10496293B2 (en) | 2017-03-14 | 2019-12-03 | International Business Machines Corporation | Techniques for selecting storage blocks for garbage collection based on longevity information |
US10509569B2 (en) | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
CN110073323B (zh) * | 2017-03-24 | 2022-10-25 | 西部数据技术公司 | 使用控制器存储器缓冲区进行推测性执行命令的系统和方法 |
US10466903B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for dynamic and adaptive interrupt coalescing |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10725859B2 (en) | 2017-05-25 | 2020-07-28 | Western Digital Technologies, Inc. | Parity generation offload using peer-to-peer data transfers in data storage system |
US10761929B2 (en) * | 2017-05-25 | 2020-09-01 | Western Digital Technologies, Inc. | Data storage drive rebuild with parity generation offload using peer-to-peer data transfers |
US10990291B2 (en) * | 2017-06-12 | 2021-04-27 | Dell Products, L.P. | Software assist memory module hardware architecture |
US10606484B2 (en) * | 2017-06-23 | 2020-03-31 | Google Llc | NAND flash storage device with NAND buffer |
US10496335B2 (en) * | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
US20190034306A1 (en) * | 2017-07-31 | 2019-01-31 | Intel Corporation | Computer System, Computer System Host, First Storage Device, Second Storage Device, Controllers, Methods, Apparatuses and Computer Programs |
US10705129B2 (en) * | 2017-09-13 | 2020-07-07 | Toshiba Memory Corporation | Techniques for testing PLP capacitors |
TWI679534B (zh) * | 2017-09-18 | 2019-12-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及資料儲存方法 |
KR102340287B1 (ko) * | 2017-09-20 | 2021-12-20 | 삼성전자주식회사 | 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법 |
CN109597564B (zh) * | 2017-09-30 | 2022-01-25 | 上海川源信息科技有限公司 | 分布式储存装置 |
US11347667B2 (en) * | 2018-01-10 | 2022-05-31 | Qualcomm Incorporated | Bus controller and related methods |
US11157356B2 (en) | 2018-03-05 | 2021-10-26 | Samsung Electronics Co., Ltd. | System and method for supporting data protection across FPGA SSDs |
US11144481B2 (en) | 2018-04-11 | 2021-10-12 | Apple Inc. | Techniques for dynamically adjusting the manner in which I/O requests are transmitted between a computing device and a storage device |
CN110413197B (zh) * | 2018-04-28 | 2023-06-27 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、设备和计算机程序产品 |
US10866764B2 (en) * | 2018-07-23 | 2020-12-15 | SK Hynix Inc. | Memory system with parity cache scheme and method of operating such memory system |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10901848B2 (en) * | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US10649843B2 (en) | 2018-08-03 | 2020-05-12 | Western Digital Technologies, Inc. | Storage systems with peer data scrub |
US10607712B1 (en) * | 2018-09-28 | 2020-03-31 | Toshiba Memory Corporation | Media error reporting improvements for storage drives |
US20200117623A1 (en) * | 2018-10-10 | 2020-04-16 | PetaIO Inc. | Adaptive Interrupt Coalescing |
CN109521961B (zh) * | 2018-11-13 | 2021-10-26 | 深圳忆联信息系统有限公司 | 一种提升固态硬盘读写性能的方法及其系统 |
US11119909B2 (en) | 2018-12-11 | 2021-09-14 | Texas Instmments Incorporated | Method and system for in-line ECC protection |
KR102648790B1 (ko) * | 2018-12-19 | 2024-03-19 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US10769092B2 (en) * | 2018-12-20 | 2020-09-08 | Dell Products, L.P. | Apparatus and method for reducing latency of input/output transactions in an information handling system using no-response commands |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
CN109840434A (zh) * | 2019-01-24 | 2019-06-04 | 山东华芯半导体有限公司 | 一种基于国密芯片的安全存储方法 |
US11537317B2 (en) | 2019-03-27 | 2022-12-27 | Microsoft Technology Licensing, Llc | Docking assembly with multi-mode drive control |
US11023322B2 (en) | 2019-09-27 | 2021-06-01 | Dell Products L.P. | Raid storage-device-assisted parity update data storage system |
US11023321B2 (en) * | 2019-09-27 | 2021-06-01 | Dell Products L.P. | Raid storage-device-assisted deferred parity data update system |
CN111290869B (zh) * | 2020-05-09 | 2020-09-29 | 北京国科天迅科技有限公司 | 一种多节点主从式网络系统及其中断处理方法 |
CN111857576B (zh) * | 2020-06-24 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种以太网管理的存储系统 |
US11561733B2 (en) * | 2021-02-05 | 2023-01-24 | Micron Technology, Inc. | Interrupt mode or polling mode for memory devices |
US11573853B2 (en) * | 2021-03-31 | 2023-02-07 | Advanced Micro Devices, Inc. | Error checking data used in offloaded operations |
US11461052B1 (en) * | 2021-04-08 | 2022-10-04 | Western Digital Technologies, Inc. | Storage system with dual submission queue doorbell registers and method for use in a multi-tenant system |
US20230120600A1 (en) * | 2021-10-20 | 2023-04-20 | Western Digital Technologies, Inc. | Data Storage Devices, Systems, and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices |
CN113986126B (zh) * | 2021-10-26 | 2023-07-04 | 深圳忆联信息系统有限公司 | 基于固态硬盘的tcg数据删除方法、装置及计算机设备 |
US20230176988A1 (en) * | 2021-12-03 | 2023-06-08 | Pixart Imaging Inc. | Detection system sending calculated data and raw data |
US11922026B2 (en) | 2022-02-16 | 2024-03-05 | T-Mobile Usa, Inc. | Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447242A (zh) * | 2002-03-25 | 2003-10-08 | 太和科技股份有限公司 | 可适用于快闪存储卡的控制装置及其建构方法 |
WO2010071655A1 (en) * | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5617425A (en) | 1993-05-26 | 1997-04-01 | Seagate Technology, Inc. | Disc array having array supporting controllers and interface |
US5742752A (en) * | 1995-12-29 | 1998-04-21 | Symbios Logic Inc. | Method for performing a RAID stripe write operation using a drive XOR command set |
CN1223444A (zh) | 1997-11-14 | 1999-07-21 | 日本电气株式会社 | 具有错误校验和校正电路的半导体存储器件 |
US6606651B1 (en) * | 2000-05-03 | 2003-08-12 | Datacore Software Corporation | Apparatus and method for providing direct local access to file level data in client disk images within storage area networks |
US20020078117A1 (en) * | 2000-12-19 | 2002-06-20 | Wang Baldonado Michelle Q. | System for creating efficient multi-step document conversion services |
US6779063B2 (en) | 2001-04-09 | 2004-08-17 | Hitachi, Ltd. | Direct access storage system having plural interfaces which permit receipt of block and file I/O requests |
US7543290B2 (en) * | 2001-04-11 | 2009-06-02 | Mellanox Technologies Ltd. | Multiple queue pair access with single doorbell |
US20030212859A1 (en) | 2002-05-08 | 2003-11-13 | Ellis Robert W. | Arrayed data storage architecture with simultaneous command of multiple storage media |
CN100417071C (zh) | 2003-05-30 | 2008-09-03 | 西安通视数据有限责任公司 | 一种单向广播文件传输中的前向纠错方法 |
JP2005149082A (ja) * | 2003-11-14 | 2005-06-09 | Hitachi Ltd | ストレージ制御装置、及びストレージ制御装置の制御方法 |
JP4581518B2 (ja) * | 2003-12-19 | 2010-11-17 | 株式会社日立製作所 | スナップショット取得方法 |
US7873782B2 (en) * | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
TWI285313B (en) * | 2005-06-22 | 2007-08-11 | Accusys Inc | XOR circuit, RAID device capable of recover a plurality of failures and method thereof |
US7444466B2 (en) | 2006-02-23 | 2008-10-28 | International Business Machines Corporation | Implementing feedback directed deferral of nonessential DASD operations |
US7836379B1 (en) | 2006-04-03 | 2010-11-16 | Marvell International Ltd. | Method for computing buffer ECC |
US7644204B2 (en) * | 2006-10-31 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | SCSI I/O coordinator |
US7822921B2 (en) * | 2006-10-31 | 2010-10-26 | Netapp, Inc. | System and method for optimizing write operations in storage systems |
US8037266B2 (en) * | 2007-01-02 | 2011-10-11 | Sandisk Il Ltd. | Apparatus and method for archiving digital content |
US8087027B2 (en) * | 2007-03-29 | 2011-12-27 | International Business Machines Corporation | Computer program product and system for deferring the deletion of control blocks |
US7873803B2 (en) * | 2007-09-25 | 2011-01-18 | Sandisk Corporation | Nonvolatile memory with self recovery |
US7818470B2 (en) * | 2007-09-27 | 2010-10-19 | Integrated Device Technology, Inc. | Adaptive interrupt on serial rapid input/output (SRIO) endpoint |
US7945752B1 (en) | 2008-03-27 | 2011-05-17 | Netapp, Inc. | Method and apparatus for achieving consistent read latency from an array of solid-state storage devices |
US20100125695A1 (en) * | 2008-11-15 | 2010-05-20 | Nanostar Corporation | Non-volatile memory storage system |
JP2010079445A (ja) * | 2008-09-24 | 2010-04-08 | Toshiba Corp | Ssd装置 |
TWI467370B (zh) * | 2009-01-23 | 2015-01-01 | Infortrend Technology Inc | 執行儲存虛擬化之儲存子系統及儲存系統架構及其方法 |
TWI371686B (en) * | 2009-04-02 | 2012-09-01 | Lsi Corp | System and method to reduce drive overhead using a mirrored cache volume in a storage array |
TWI417893B (zh) * | 2009-05-06 | 2013-12-01 | Silicon Motion Inc | 資料存取裝置及資料存取方法 |
US8074038B2 (en) * | 2009-05-12 | 2011-12-06 | Microsoft Corporation | Converting luns into files or files into luns in real time |
EP2251807A1 (en) | 2009-05-14 | 2010-11-17 | METADAT IT-Beratungs- und Entwicklungs-GmbH | Computer system to improve the control of access to data |
WO2010137067A1 (en) * | 2009-05-27 | 2010-12-02 | Hitachi, Ltd. | Storage system, control method therefor, and program |
US20110004728A1 (en) * | 2009-07-02 | 2011-01-06 | Ocz Technology Group, Inc. | On-device data compression for non-volatile memory-based mass storage devices |
KR101411566B1 (ko) | 2009-10-09 | 2014-06-25 | 바이올린 메모리 인코포레이티드 | Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법 |
CN101997646B (zh) * | 2010-05-25 | 2012-11-28 | 锐骐(厦门)电子科技有限公司 | 基于usb和nand flash的数据打包和传输的方法 |
CN101829234B (zh) | 2010-05-27 | 2011-10-05 | 骆书祥 | 一种治疗烧烫伤的蛤蟆灯笼草药膏及其制备方法 |
US8892980B2 (en) * | 2010-06-15 | 2014-11-18 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
JP5388976B2 (ja) * | 2010-09-22 | 2014-01-15 | 株式会社東芝 | 半導体記憶制御装置 |
US8463991B2 (en) * | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
CN102063348B (zh) * | 2010-12-27 | 2012-10-03 | 成都市华为赛门铁克科技有限公司 | 分区表信息备份方法和装置以及存储系统 |
CN102169419A (zh) | 2011-04-02 | 2011-08-31 | 无锡众志和达存储技术有限公司 | 基于sata控制器的raid数据块拆分、组装方法 |
US9037770B2 (en) * | 2011-05-05 | 2015-05-19 | International Business Machines Corporation | Accelerator engine emulation over an interconnect link |
US8887013B2 (en) * | 2011-07-01 | 2014-11-11 | Avalanche Technology, Inc. | Mapping of random defects in a memory device |
CN104040515B (zh) * | 2011-09-30 | 2018-05-11 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
-
2011
- 2011-09-30 CN CN201180075095.8A patent/CN104040515B/zh active Active
- 2011-09-30 WO PCT/US2011/054313 patent/WO2013048451A1/en active Application Filing
- 2011-09-30 US US13/976,262 patent/US9417821B2/en active Active
- 2011-09-30 EP EP18196396.8A patent/EP3438839A1/en not_active Ceased
- 2011-09-30 EP EP11873475.5A patent/EP2761481A4/en not_active Ceased
-
2016
- 2016-07-29 US US15/224,006 patent/US20160335208A1/en not_active Abandoned
-
2020
- 2020-07-22 US US16/936,078 patent/US11604746B2/en active Active
-
2023
- 2023-02-08 US US18/107,465 patent/US12079149B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447242A (zh) * | 2002-03-25 | 2003-10-08 | 太和科技股份有限公司 | 可适用于快闪存储卡的控制装置及其建构方法 |
WO2010071655A1 (en) * | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
Also Published As
Publication number | Publication date |
---|---|
US9417821B2 (en) | 2016-08-16 |
US11604746B2 (en) | 2023-03-14 |
US20230185747A1 (en) | 2023-06-15 |
EP2761481A4 (en) | 2015-06-17 |
US12079149B2 (en) | 2024-09-03 |
EP3438839A1 (en) | 2019-02-06 |
US20200349100A1 (en) | 2020-11-05 |
US20160335208A1 (en) | 2016-11-17 |
EP2761481A1 (en) | 2014-08-06 |
US20140189212A1 (en) | 2014-07-03 |
WO2013048451A1 (en) | 2013-04-04 |
CN104040515A (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104040515B (zh) | 在逻辑驱动器模型下呈现直接存取的存储设备 | |
CN106021147A (zh) | 在逻辑驱动器模型下呈现直接存取的存储设备 | |
CN103597451B (zh) | 用于高可用性的存储器镜像和冗余生成 | |
CN101965559B (zh) | 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器 | |
US8719520B1 (en) | System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity | |
JP6067230B2 (ja) | 観測可能クライアント側メモリアクセスを用いる高性能データストレージ | |
US9886736B2 (en) | Selectively killing trapped multi-process service clients sharing the same hardware context | |
CN104025036B (zh) | 低时延集群计算 | |
JP5582418B2 (ja) | トランザクションメモリ | |
CN102446073A (zh) | 延迟对操作的确认直至操作完成的方法和系统 | |
CN106462510A (zh) | 具有独立直接接入大量固态存储资源的多处理器系统 | |
CN104937564B (zh) | 组表格的数据冲洗 | |
US11436086B2 (en) | Raid storage-device-assisted deferred parity data update system | |
US11287988B2 (en) | Autonomous raid data storage device locking system | |
JP2007524932A (ja) | パリティデータを生成するための方法、システム、及びプログラム | |
US20240012585A1 (en) | Drive-assisted raid system | |
US10496284B1 (en) | Software-implemented flash translation layer policies in a data processing system | |
CN108804355A (zh) | 使用目标协作的快速排序写入的方法和系统 | |
US11003391B2 (en) | Data-transfer-based RAID data update system | |
US11422740B2 (en) | Raid storage-device-assisted data update system | |
US10437471B2 (en) | Method and system for allocating and managing storage in a raid storage system | |
CN106557429A (zh) | 一种内存数据的迁移方法和节点控制器 | |
US20240378160A1 (en) | Presentation of direct accessed storage under a logical drive model | |
EP4227790B1 (en) | Systems, methods, and apparatus for copy destination atomicity in devices | |
CN100442248C (zh) | 用于避免竞争的计算机系统同步单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |