在逻辑驱动器模型下呈现直接存取的存储设备的制作方法

文档序号:6485202阅读:228来源:国知局
在逻辑驱动器模型下呈现直接存取的存储设备的制作方法
【专利摘要】根据本文所公开的实施例,提供方法、系统、机制、技术和设备,其用于在逻辑驱动器模型下呈现直接存取的存储设备;用于实现协作NVM数据保护的分布式体系结构;用于一致SSD等待时间的数据镜像;用于在DIF支持下经由同步RAID处理提升控制器的性能和RAS;用于实现门铃机制的仲裁和资源方案,包括攻击拥塞的公平性和预防的门铃仲裁;以及用于通过使用中断合并方案利用控制器中的消息传递单元和NTB实现多中断生成。
【专利说明】在逻辑驱动器模型下呈现直接存取的存储设备
[0001]版权声明
本专利文件的公开的一部分包含受版权保护的资料。版权拥有者不反对任何人拓制出现在专利商标局的专利文件或记录中的专利文件或专利公开,但是无论如何另外保留所有版权权利。
【技术领域】
[0002]一般来说,实施例涉及计算领域,更具体来说,涉及在逻辑驱动器模型下呈现直接存取的存储设备,包括用于实现在逻辑驱动器模型下呈现直接存取的存储设备的方法、系统和设备以及与基于直接存储器存取(DMA)的存储技术有关的其它补充解决方案,例如改进的独立盘冗余阵列(RAID)支持、分布式RAID支持、用于改进装置等待时间一致性的本地块镜像、改进的门铃合并和仲裁方案,因为这些改进都与基于DMA的存储技术有关。
【背景技术】
[0003]不应只是因为在【背景技术】中提及而认为【背景技术】中所论述的主题就是现有技术。类似地,不应认为在【背景技术】中提及或者与【背景技术】的主题相关联的问题在现有技术中之前已经意识到了。【背景技术】中的主题只是表示不同的方法,其中它们本身也可以对应于所公开的实施例。
[0004]在计算领域中,最常见的是具有由操作系统(OS)配合中央处理单元(CPU)直接存取和管理的存储机制,OS驻留在计算装置上并通过CPU的执行能力启用。但是,也存在备选机制,例如基于DMA (直接存储器存取)的机制和直接存取存储装置,它们独立于主机及其操作系统和文件系统操作,从而例如使得能够对在主机上执行的托管应用进行直接存取,而无需这些托管应用通过主机或其操作系统和/或文件系统传送存取请求。
[0005]在标准存储接口之前(大约在20世纪80年代中期),需要程序员写入代码以便特别处理对硬盘驱动器的数据读取和写入。需要这种代码来标识硬盘驱动器(HDD)上的柱面、磁头、磁道和扇区以作为读取和写入操作的一部分。标识这些细节以作为对HDD的读取和写入操作的一部分需要对OS进行改变以便支持任何新的HDD,其中假设柱面、磁头、磁道和扇区必然与之前所支持的有所不同。
[0006]随着开发和采用了标准存储接口,例如SCS1、ATA、SAS、SATA、FC等,于是可以对程序员隐藏HDD的基本柱面、磁头、磁道和扇区布局并向HDD呈现一致接口,而不管其基本物理结构。因此,这些标准存储接口允许程序员在通过标准存储接口发送的命令中简单地标识逻辑地址,然后实现标准存储接口的硬盘驱动器中的固件将逻辑地址转译为执行读取和/或写入操作所必需的对应柱面、磁头、磁道和扇区,将读取/写入磁头移动到柱面上的正确位置等,并根据命令读取或写入实际数据。
[0007]操作系统中包括支持这些标准存储接口的装置驱动器,以使得驻留在OS上的应用可以利用标准OS调用来经由标准存储接口存取任何HDD,而不管HDD的基本物理结构。尽管标准存储接口和操作系统内的支持装置驱动器对于标识HDD的基本柱面、磁头、磁道和扇区的复杂性提供了解决方案,但是标准存储接口和支持装置驱动器本身增加了复杂度以及计算开销,并且因此效率低下,从而会减慢性能。
[0008]因此,现有技术水平可以得益于本文所阐述的教导。
【专利附图】

【附图说明】
[0009]举例而非限制性地示出实施例,并且结合附图参考以下详细描述时将能更加全面地理解实施例,附图中:
图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描绘根据公开实施例在深度优先填充算法和优化的宽度优先型填充操作之间的对比。
[0010]图4F和图4G描绘根据公开实施例用于改进的RAID 5/6性能的双罐数据流以及对实例性RAID 5/6 10+2配置的所得性能分析;
图5A描绘根据公开实施例供主机以有限数量的门铃处理主机门铃写入而不会压制主机门铃写入或从I/O装置的门铃空间中溢出的实例性体系结构概况;
图5B描绘根据公开实施例供主机处理主机门铃的备选实例性体系结构概况;
图5C描绘根据公开实施例供主机处理主机门铃的另一备选实例性体系结构概况;
图描绘根据公开实施例的门铃提交、排队和仲裁机制的高级过程流503 ;图6A描绘根据公开实施例用于实现中断合并方案以便减小中断服务例程(ISR)开销、同时通过对错误状况进行通知来改善RAS的实例性体系结构概况;
图6B描绘根据公开实施例用于实现中断合并方案的备选实例性体系结构概况601 ;
图6C描绘根据公开实施例用于实现中断合并方案的备选实例性体系结构概况;以及 图7示出根据公开实施例以计算机系统的实例性形式的宿主机的图形表示。
【具体实施方式】
[0011]本文描述用于在逻辑驱动器模型下呈现直接存取的存储设备的系统、装置、设备、技术、机制和方法以及与基于DMA的存储技术有关的其它补充解决方案。
[0012]近年来,随着SSD (固态驱动器)技术的出现并作为大容量存储装置并入到计算机系统中,便有了机会消除与传统HDD型驱动器相关联的一些开销。例如,SSD装置利用固态存储器而不是柱面、磁头、磁道和扇区。因此,标准存储接口无需将经由程序员提供的逻辑地址转译为与特定的读取/写入命令相关联的基本柱面、磁头、磁道和扇区。然而,虽然存在上文提到的效率低下,但是仍保留了在标准存储接口中使用这些转译机制以便对旧的传统系统提供向后兼容性。去除或绕过上述标准存储接口需要新的解决方案和创新,以使得现代的操作系统能够与基于SSD的存储装置通信。这些解决方案和创新将经由下文提供的教导加以公开,并在本文中要求其权利。
[0013]图1A阐述示出SSD 001的实施例的体系结构099,其中SSD 001具有SATA总线 002、SATA接口 003、SATA-NAND控制器004、NAND闪存通道O至NAND闪存通道/?以及NAND闪速存储器007和008。SATA接口 003是实例性标准存储接口。但是,SATA接口 003便于对基本NAND闪速存储器007和008进行读取和写入操作,基本NAND闪速存储器007和008两者均不利用柱面、磁头、磁道和扇区型标识方案。另外,SATA-NAND控制器004提供进一步解译以便将SATA特定命令和指令以及寻址信息转换为NAND闪速存储器007和008兼容的方案。因此,希望消除以上计算效率低下和开销中的一些缺点。但是,解决方案和创新必须旨在补偿这些传统通信方案(例如,标准存储接口和装置驱动器等)的去除或绕过。
[0014]直接存储器存取(DMA)是允许计算机内的某些子系统独立于中央处理单元并且潜在地独立于托管操作系统存取系统存储器以进行读取和/或写入的现代计算机和微处理器的特征。启用和支持DMA能力的系统可以包括例如盘驱动器控制器、图形卡、网络卡和声卡。DMA能力会是有益的,因为它们卸载了主机计算装置的OS的责任和开销。但是,利用DMA会带来其它问题,其中的若干问题另外是本申请的主题,并且本文将介绍、教导其解决方案并要求其权利。
[0015]例如,申请者在本文中教导了以下解决方案:1)在逻辑驱动器模型下呈现直接存取的存储设备;2)用于协作NVM (非易失性存储器)数据保护的分布式体系结构;3)用于一致SSD (固态驱动器)等待时间的数据镜像;4)用于在DIF (数据完整性字段)支持下经由同步RAID (独立盘冗余阵列)处理来提升控制器的性能和RAS (可靠性、可用性和可服务性)的解决方案和方法;5)门铃机制的仲裁和资源方案,包括攻击拥塞的公平性和预防的门铃仲裁;以及6)利用控制器中的消息传递单元和NTB (非透明桥接)的多中断生成的解决方案和方法。
[0016]图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/0接口)模块、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接口模块用于接收门铃条目以便提交给工作引擎队列,完成队列具有用于将之前排队的完成的工作合并为工作引擎队列中的排队工作的空间,并且完成队列中断机制用于基于与完成队列相关联的状态启动中断。
[0017]例如,图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和额外详细地加以描述。并且,图1还在要素194处描绘中断合并机制,它通过有条件地合并(例如,采集、分组、排队等)到控制器105的请求的正常完成来减小中断服务例程(ISR)开销,同时通过对错误状况进行通知来改善RAS。这种概念将关于图6A、6B和6C额外详细地加以描述。
[0018]在以下描述中,阐述了众多具体细节,例如特定系统、语言、组件等的实例,以便提供对各种实施例的充分理解。但是,本领域技术人员将明白,无需采用这些具体细节也可以实践本文所公开的实施例。在其它情况下,没有详细描述公知的素材或方法,以免不必要地使公开实施例晦涩难懂。
[0019]除了附图中所描绘并在本文中加以描述的各种硬件组件之外,实施例还包括下文描述的各种操作。根据这些实施例描述的操作可以由硬件组件来执行,或者可以用机器可执行指令来实施,这些指令可用于导致用这些指令编程的通用或专用处理器执行这些操作。或者,这些操作可以由硬件和软件的组合来执行。
[0020]实施例还涉及用于执行本文所公开的操作的设备。该设备可以为了需要的目的专门构造,或者它可以是通过存储在计算机中的计算机程序选择性地激活或再配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,例如但不限于:任何类型的盘,包括软盘、光盘、CD-ROM和磁-光盘;只读存储器(ROM)、随机存取存储器(RAM)、EPR0M、EEPR0M、磁或光卡;或任何类型的适合存储电子指令的介质,每种介质耦合到计算机系统总线。
[0021]本文介绍的算法和显示并不与任何特定计算机或其它设备固有地相关。根据本文的教导,各种通用系统可以与程序配合使用,或者构造更加专用的设备来执行所需的方法步骤经证实是便利的。各种这些系统的所需结构将如以下描述中所阐述地那样出现。另外,没有参考任何特定编程语言来描述实施例。将明白,可以使用各种编程语言来实现如本文所描述的实施例的教导。
[0022]实施例可以作为计算机程序产品或软件来提供,它可以包括其上存储有指令的机器可读介质,指令可用于将计算机系统(或其它电子装置)编程以便执行根据公开实施例的过程。机器可读介质包括用于存储或传送机器(如计算机)可读形式的信息的任何机构。例如,机器可读(如计算机可读)介质包括机器(如计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪速存储器装置等)、机器(如计算机)可读传输介质(电、光、声)等。
[0023]所公开的任何实施例可以单独使用,或者以任何组合彼此一起使用。尽管各种实施例可能部分地是因为常规技术和方法的缺点而激发的,其中一些实施例在本说明书中加以描述或提及,但是这些实施例不一定要解决或解答这些缺点中的任何缺点,而是可以只解决其中的一些缺点、不解决任何缺点或针对没有直接论述的不同缺点和问题。
[0024]图1C示出各种公开实施例可以在其中操作并且这些实施例与之相关的实例性体系结构101。体系结构101描绘具有能够在其上操作和/或执行的主机操作系统120的主机119,主机操作系统120中具有应用102、动词(verb)103和一个或多个驱动程序104。还描绘了控制器105,控制器105中具有接口 106、管理(管理的或管理员)命令管理器107、1/
O(输入和输出)管理器108、元数据管理模块109、写入路径IlOA和读取路径110B、写入聚合机构111、数据保护机构112、冲洗机构113、垃圾收集机构114、数据恢复机构115和后端I/O机构116。还描绘不受主机操作系统120的文件系统控制或管理的直接存取的存储设备117。在直接存取的存储设备117内有多个直接存取的存储设备子模块118,这些直接存取的存储设备子模块118可以具有任何众多变化,而不管本文中是否特别举例说明,只要它们符合不受主机操作系统120的本地文件系统控制或管理的非常规存储设备的描述即可。
[0025]图1D描绘根据公开实施例经启用以便在逻辑驱动器模型下呈现给主机操作系统120的直接存取的存储设备117和子模块118的备选实例性体系结构概况102。
[0026]根据公开实施例,在逻辑驱动器模型下呈现直接存取的存储设备提供了用于作为逻辑卷呈现用于直接映射的存储设备118的存储空间的机制,从而使得该空间能够出现在标准操作系统工具和视图中。本文所使用的术语“直接存取的存储设备”和“直接存储设备”是指不通过这种操作系统的本地或内部文件系统支持而存取的存储设备118。
[0027]提供标准OS可读驱动器分区130,它可作为块存储进行存取并用于呈现代表直接存储设备的存在以及分配给直接存储设备的存储空间的量的逻辑卷(驱动器)(例如,经由LBA 134)。这种技术导致“直接映射的存储设备”。
[0028]直接映射的存储设备137提供可供应用以及OS直接存取的存储设备。但是,直接映射的存储设备137并不是利用诸如NTFS (新技术文件系统)的标准文件系统来组织的。如果存储空间对于OS 120看起来并不像逻辑卷(例如,LBA 134),那么不能使用主机操作系统120的标准工具(例如,本地支持的工具)来查看直接存取的存储设备117是否存在,操作系统也不能确定分配给直接存取的存储设备117多少存储空间、有多少空间是可用的、目iu使用了多少空间等等。
[0029]因此,使得非常规存储设备(例如,未示出的利用逻辑驱动器的存储设备)对于主机操作系统所熟悉的传统公用程序可存取,同时实现了诸多好处,正是为了这些好处而选择这种非常规存储设备,并且这些好处由操作系统在其上操作和执行的主机计算装置的设计者来实现。
[0030]目前可用的解决方案无论如何没有提供通过操作系统的本地文件支持能力和公用程序可直接存取直接存储设备137的区域的机制。而且,目前可用的解决方案无论如何没有提供作为逻辑块存取(LBA)的存储设备134来部分或全部地存取这种非常规存储设备(例如,直接存取的存储设备)的机制。此外,目前可用的解决方案无论如何没有提供可使得分区数据(例如,MBR/分区表133或逻辑分区131中的元数据)对于主机操作系统可用的机制,其中分区数据代表在缺乏本文所描述的技术的情况下否则不可用并且因此对于主机操作系统120而言实际上不可见的直接存储设备的存在和用于直接存储设备的存储的量。
[0031]所描述的技术还可以通过使用存储装置或阵列132来进一步扩展,存储装置或阵列132提供LBA和直接存取的存储设备117的组合,其中使得这两种类型的存储设备能够看起来像是来自相同存储装置或存储阵列的逻辑卷。
[0032]使用标准分区、同时结合提供对应于直接存取的存储装置的逻辑块存取(LBA)的顺应装置134以使得标准OS工具能够直接读取和解译分区数据而无需修改或扩大OS工具具有特别的好处,因为可以提供逆兼容性,而不必检修用于在操作系统控制下管理、存取和查看传统存储空间的这种主机操作系统熟悉的工具。在没有这种机制的情况下,用于直接存取的存储的量对于利用标准OS工具的用户而言并不可见(在不检修OS的情况下)。例如,如果用户具有500GB (千兆字节)存储装置,其中200GB用于LBA存储,而300GB用于直接存取存储,那么在缺乏所描述的技术的情况下,在标准OS工具下,只有用于LBA存储的200GB可看见以用于盘管理,留下剩余部分对于用户和OS实际上是不可见的。
[0033]这些技术可以特别用于适应管理或映射某些FLASH驱动器的方法以及其它介质类型的直接存取的存储设备117。
[0034]直接存取的存储设备117的适配器(例如,经由例如控制器105或其它有能力的装置提供的存储设备适配器199)代表直接存取存储设备117提供分区表133,其中主机OS120利用逻辑块存取(LBA)131存取分区表133。由控制器105或等效机构提供的逻辑存储装置134包括LBA存储的至少一小部分,即使直接存取存储设备117的大部分只用于直接存取存储,例如由实例Q所描绘的,其中直接存取存储设备117的大部分作为直接存取存储设备117保留,只有非常小一部分呈现给主机OS 120。
[0035]作为外来文件系统呈现直接存取存储设备117有助于防止主机OS 120尝试存取相关联的数据。存储设备的分区数据通常保留在存储装置本身上,但是通过直接存取存储设备驱动程序(例如,驱动程序104或其它合适的驱动程序)使其同步化也是可能的。
[0036]直接存取存储设备117的出现随之而来的是这样一种学习曲线,它可以带来采用该技术的障碍。本文所描述的实施例通过使得直接存取存储设备117解决方案在技术上与在主机OS 120下进行硬盘驱动器和RAID (虚拟驱动器)管理的现有模型兼容而使得直接存取存储设备117解决方案的可用性成为可能,从而使得直接存取存储设备117对于用户更容易理解和接受,用户可以是计算装置的最终用户或是这类主机119计算装置的设计者。
[0037]所公开的技术可以实现,并且根据一些实施例,可以至少部分地经由存储在直接存取存储设备117上的数据以及可传达到控制器105等内的存储设备适配器199实现的链路/接口 /钩来实现。此外,开放源软件与第三方接口和解决方案可用于存取实现数据,可用于存取用于直接存取存储设备117的介质上的数据的存储,并且可以利用在合适的权利、允许和许可下共同提供所描述的特征的机制。
[0038]图2A描绘根据公开实施例用于经由作为协作直接存取存储装置217操作的端点存储装置的集合实现协作NVM数据保护和恢复方案的分布式体系结构和补充方法的实例性体系结构概况200。尽管关于特定存储介质类型进行论述,但是所公开的实施例可以推广至NVM或具有相同基本优点的任何其它类型的存储设备(例如,旋转介质)。
[0039]根据公开实施例,协作NVM (非易失性存储器)数据保护的分布式体系结构提供这样一种机制,它用于确保数据保护并进一步在诸如存储设备的固态驱动器(SSD)的共同体中分配数据保护和数据恢复215的任务。所公开的机制和实例性实施例利用PCIe(外围组件互连Express)250的特征,包括例如PCIe 250的多播能力,并且因此使得能够在主机119和基于PCIe 250或与PCIe 250兼容的SSD之间均衡I/O织构。尽管作为实例描述了 PCIe250,但是提供多播能力的任何通信介质都可以实现公开的实施例。例如,支持多播能力和协作通信方案的基于互联网协议(IP)的存储系统可以得益于所描述的技术。
[0040]公开在SSD的共同体中分配功能性的数据保护和恢复215体系结构和补充机制。由于SSD并入EEC (纠错码)和XOR (异或和/或XOR门)操作,所以这种方法再度使用现有硬件,并将主机或控制器上的数据保护和恢复115的责任推给能够实现分布式数据保护和恢复215的存储装置299或SSD,因为加速已经驻留在这种基于PCIe 250或与PCIe 250兼容的SSD装置和存储装置299内。
[0041]通过实践这些公开实施例,还可以在该体系结构上以分布式方式实现RAID,从而将数据恢复115责任从主机119卸载到作为能够执行分布式数据保护和恢复技术215的存储装置299操作的主机119的端点驱动器。在之前可用的数据保护体系结构中,主机119将数据聚合以便生成XOR保护信息,并在驱动器集合上写入“带(band)”。带是每个驱动器的数据集合以及写入到驱动器的保护条带,其中每个带包括写入到不同驱动器(例如,不是存储原始数据或数据部分的驱动器)以便在驱动器集合间平衡保护数据的数据保护条带。
[0042]本文公开这样一种机制,通过该机制,不是通过主机119或甚至控制器115或实现用于与直接存取的存储装置117通信的DMA存储技术的其它控制器来生成或检查XOR保护信息,而是通过基于PCIe或与PCIe兼容的分布式SSD和存储装置299本身来检查XOR保护信息。更具体来说,用于执行和确保这种XOR保护的责任从主机119或主机RAID控制器卸载到基于PCIe或与PCIe兼容的端点SSD存储装置299上。
[0043]对于基于PCIe或与PCIe兼容的驱动器集合间的每个带写入,主机119或主机OS120确定对于该特定带哪个驱动器将充当数据保护条带。在一个实施例中,主机119经由PCIe多播将每个驱动器条带(例如,对于该带每个驱动器的代表性部分集合)写入到它的代表性驱动器以及保护驱动器。这种方法允许基于PCIe或与PCIe兼容的每个目标驱动器接收其数据以用于存储,而且还使得该写入序列的当前指定的保护驱动器能够接收XOR生成所必需的数据。作为写入事务的部分,每个驱动器知道它是该特定事务的数据存储驱动器还是反之是XOR生成目标驱动器,在后一情况下,它用作该特定写入事务的指定保护驱动器(例如,主机119可以发信号通知每个驱动器对于该写入事务它的作用是数据存储还是XOR生成,或者每个驱动器可以从例如报头、标志或其它合适的消息传递操作得出它的合适的作用)。
[0044]特别对于数据存储目标驱动器,写入事务仅仅存储在该驱动器中以便存储指向特定目标数据存储驱动器的数据。
[0045]但是,对于XOR生成目标驱动器(例如,该带的指定保护驱动器),驱动器收集执行XOR生成所必需的数据(该带内的所有其它数据),然后等待下一个多播写入请求以便基于所收集的数据执行XOR生成操作。RAID模块298 (图2B)可以协调XOR生成。作为多播方案的益处,XOR生成所必需的数据仅仅是由XOR生成目标驱动器看到的该带的所有其它多播接收数据。
[0046]在备选实施例中,主机119或控制器105将单个I/O事务写入到存储装置299,并且存储装置的RAID模块298适当地将写入事务的数据分区块,并启动多播功能,以使得所有驱动器接收必需的数据区块,并使得XOR目标驱动器可以基于依靠多播操作看到的数据区块生成XOR数据。
[0047]取3+1 RAID集合为例,其中执行三次多播写入。在该实例中,三个驱动器接收数据以作为目标或指定的数据存储驱动器,而一个/单个指定的保护驱动器经由多播接收/收集每个写入,以便从与以数据保护驱动器为目标、但是依靠多播操作对于指定的保护驱动器“看见”或可见的这三次写入相关联的数据生成或计算X0R,从而导致对于该特定带写入事务适合作为数据保护条带存储在指定保护驱动器上的RAID奇偶校验位数据的XOR生成或计算。
[0048]如上所述,这种方案从主机119卸载了计算负担,因为主机119、其OS 120、其操作软件、甚至是主机的RAID 298控制器都无需计算奇偶校验位数据,这是由于将负担分配给了已经天然拥有这种能力的该带写入事务的指定保护驱动器或存储装置299 (例如,如上所述的在通道上在内部生成XOR的实例性SSD装置)。主机119可以基于诸如循环法的不同方法或者鉴于驱动器的I/O负载、驱动器的任何排队时间、或合适的其它特性将不同的可用驱动器指定为多个这种写入事务中的每个写入事务的保护驱动器,或者这种存储装置299内的RAID模块298可以协调数据目标驱动器和XOR奇偶校验位计算目标驱动器的选择和指定。
[0049]由于之前可用的解决方案需要通过主机119或其主机OS 120软件来执行数据保护和恢复,所以必需提供XOR计算的足够加速以便防止基于I/O的操作的瓶颈或性能降级。在这类之前技术不能提供硬件加速的情况下,必须提供软件算法,其中由于主机119的处理器上的极端计算负担导致主机119的显著性能降低。
[0050]由于公开的体系结构和技术经由将数据多播给目标数据存储驱动器而将数据保护和恢复负担推给驱动器或存储装置299本身,所以使得RAID模块298能够在驱动器处计算或者已经计算了合适的奇偶校验位数据,然后存储这些奇偶校验位数据。通过这些技术,可以获得显著的性能增加,而主机119不必对基于主机119的XOR计算或基于控制器的XOR计算实现任何特定的硬件加速机制。在一个实施例中,用带信息标注写入数据,以使得可用驱动器可以自行生成XOR数据,以便从标注的数据导出它们的作用指定(例如,作为特定写入事务的数据存储目标驱动器或指定的保护驱动器),用合适的方法围绕驱动器旋转以便使读取性能降级问题减至最小。
[0051]必要时,也可以在驱动器级执行数据恢复操作,而使主机不必执行XOR重构操作。例如,在可用驱动器以对等方式与其对等驱动器通信的情况下,使得对等驱动器能够利用XOR重构数据,然后将数据提交回给主机,从而利用可用驱动器的分布式能力来执行这种数据恢复能力并因此从主机119卸载这种责任。
[0052]反之,目前可用的解决方案将数据保护和恢复的工作集中在单个实体(通常是主机119、其主机OS 120)上,或者甚至经由主机RAID控制器来集中。本文所描述的技术并没有集中这些负担,而是将工作/计算开销的负载分配给以协作方式工作的端点驱动器,从而允许在主机卸载的情况下进行RAID保护,并且进一步提供具有重要的增值特征的有能力的装置,例如本文所公开的实例性SSD型存储装置299。例如,实例性SSD对于PCIe支持多播294 (图2B),它可用于将数据分配给端点SSD存储装置299,并且进一步支持在SSD驱动器之间执行对等事务的能力以便实现数据恢复的目的(例如,为了丢失数据的XOR重构的目的读取数据),并且因而允许在指定的保护驱动器上生成和存储RAID奇偶校验位以便有效地计算XOR奇偶校验位/保护数据并在多个写入事务上的旋转基础上将其放到指定的端点驱动器上(或者在必要时,通过利用之前存储的XOR奇偶校验位/保护数据来提供数据恢复)。
[0053]图1C中所描绘的数据恢复机制115视情况从控制器105卸载或从主机119卸载并且改为分配给图1C中所描绘的直接存取存储装置117,直接存取存储装置117作为现在如图2A中所述的协作直接存取存储装置217在存储设备299内操作。在一个实施例中,直接存取存储装置117包括在其上提供基本的非暂时性存储能力的一个或多个基本闪存阵列218或闪速存储器组件。每个这样的闪存阵列218具有补充驱动器I/F (接口)216,可以经由补充驱动器I/F (接口)216与基本闪存阵列218通信。
[0054]例如,代替如图1C中所述的基于主机119的固件或基于主机OS 120的软件,将提供数据保护和恢复操作115的功能性卸载给使得能够进行上述分布式数据保护215A和数据恢复215B方法的协作直接存取存储装置217。
[0055]图2B描绘用于实现协作NVM数据保护和恢复方案的分布式体系结构和补充方法的备选实例性体系结构概况201。
[0056]图2B描绘如协作直接存取存储装置217所提供的协作数据保护方案的更详细的表示。例如,在所示实例中,第三个驱动器指定为该带的保护驱动器或XOR驱动器296,并且作为PCIe多播操作的部分接收所有区块。很清楚,指定的保护驱动器/XOR驱动器296接收并收集(例如,“看到”)发送给目标数据存储驱动器的所有数据,尽管不是明确的目标数据存储驱动器。充当数据存储驱动器的所有其它驱动器接收它们的区块295并将其存储在它们的闪存阵列218 (或适用的基本非暂时性物理存储介质)中,并且在该特定实例中对于该特定写入事务,第三个驱动器从所接收的收集的多播数据构造XOR区块,并将生成的XOR区块存储在它自己的闪存阵列218中,如存储在其上的XOR 296所描绘。注意,XOR驱动器随每个事务改变/旋转,以免使可用驱动器的整体读取性能降级。
[0057]在一个实施例中,RAID模块298提供将数据分成多个区块295的能力,并且在协调努力中对协作直接存取存储装置217进一步启动合适的多播294操作。根据一个实施例,RAID模块298以及协作直接存取存储装置217集成在单个存储设备299中,例如集成在SSD驱动器内。数据可以从例如写入聚合机构111(例如,示为位于控制器105内的写入聚合机构111)到达。
[0058]图2C描绘用于构造协作数据恢复方案的分布式体系结构和补充方法的另一备选实例性体系结构概况202。
[0059]图2C描绘同样通过将这种负担分配给可用端点装置的共同体并从主机119卸载这种计算负担来整体在驱动器的共同体内执行的实例性数据恢复路径。在该实例中,对驱动器之一的读取280标识需要对故障块读取280进行修复的故障(块损坏或其它错误)。可以经由在例如控制器105内的读取路径IlOB启动读取。遭遇故障块读取280的驱动器(例如,涂黑的区块281)响应地向驱动器的共同体发出多播读取,其中每个驱动器基于所读取的特定条带用它们的对应数据部分做出应答。这里示出,经由多播返回两个数据区块281,并且还返回具有用于恢复故障数据区块(涂黑的区块281)所必需的计算的奇偶校验位数据的XOR区块282。然后,遭遇错误或故障块读取的驱动器重构数据,并在合适时将重构/恢复的数据返回给主机119或返回给请求用户或应用。在一些实施例中,驱动器另外还返回发生读取故障的消息或指示,该消息或指示与响应一起联运或作为独立的通知。
[0060]除了经由作为协作直接存取存储装置217操作的分布式端点装置提供这些特征的能力之外,所描述的技术还可以进行服务以便减少主机119的成本和复杂性,这是因为经由硬件加速、软件或控制器,这样的主机119不再需要它自己的基于RAID的能力;并且所描述的实施例还通过有能力的SSD装置或其它兼容的端点装置提供这种协作数据保护特征的能力对这些装置引入额外的价值。此外,由于所公开的实施例的分布式特性,所以在多个装置间对计算负载进行了负载平衡,从而潜在地提供比基于集中化(例如,基于主机119)的解决方案改进的性能和速度。另外,均衡端点装置的分布式方法还使得在PCIe织构内传送的数据的量减至最少,从而通过减少对PCIe织构资源的竞争而提高I/O性能。例如,将写入多播给目标驱动器和数据保护驱动器,而不是为任何特定区块281个别发送,因此在3+1RAID配置(例如,如上所述的配置)中,只执行三次(3x)多播写入,而不是四次(4x)典型的非多播写入,其中第四次非多播写入是指向该特定条带写入的指定奇偶校验位驱动器或保护驱动器的XOR区块。
[0061]由于还从主机119卸载了数据恢复负担,所以当驱动器检测到发生了内部数据错误(例如,通过其本地内部奇偶校验位)时,讨论中的驱动器从集合中的对等驱动器读取数据以便对发出的读取请求做出响应,并且另外在本地自动地更新其数据以便校正该错误,从而再次地不只导致主机119上的减轻的负担,而且还导致PCIe织构的减轻的I/O负担。
[0062]在又一个实施例中,还从主机119卸载驱动器重建,并且还经由协作直接存取存储装置217以分布式协作方式执行驱动器重建。例如,在传统的RAID系统中,主机119进入重建模式以便从RAID集合中的所有剩余驱动器读取数据,接着重新生成丢失数据,然后将丢失数据写回到正在重构的新驱动器上。该过程在主机119上以及在主机119与其存储设备之间的通信接口上造成了巨大的计算负担。
[0063]反之,根据本文所描述的公开实施例,集合中的每个协作直接存取存储装置217协作地执行新驱动器的重建(每个驱动器商定或协调它将为正在重构的新驱动器重新生成哪些区块281)。以此方式,每个协作直接存取存储装置217对RAID集合中的其它驱动器执行多播读取以便重建丢失数据,然后将丢失数据写入到新驱动器,所有这些都可以在不涉及主机119的情况下执行,并且因此,没有对主机119施加任何计算负担,主机119因此可以进行其它操作。由于经由RAID集合中的每个剩余的协作直接存取存储装置217进行驱动器的重构,所以重构更加快速地进行,并且使重建窗最小化,从而经由该RAID集合进一步降低双故障模式并发的风险并且因此潜在地降低持久数据丢失或不可恢复数据丢失的风险(例如,其中对于双并发恢复,存储“P”模式并发数据,而无需额外的基于“Q”的奇偶校验位)。例如,在驱动器发生故障或者用即将重构的驱动器取代驱动器的情况下,如果在完全重构新驱动器之前发生第二次故障,那么由于这第二次故障,不存在足以重构第二驱动器的数据。因此,重构时间的任何减少都会降低双并发故障情形的风险。
[0064]图3A描绘根据公开实施例用于实现数据镜像以便确保一致的SSD (固态驱动器)301等待时间的体系结构的实例性体系结构概况300。根据公开实施例,所描绘的SSD装置可以作为根据公开实施例的直接存取存储装置117操作,或者可以备选地作为在主机119或主机OS 120的控制和管理下操作的基于NAND 310的SSD 301端点存储装置操作。
[0065]根据公开实施例,用于一致SSD (固态驱动器)等待时间的数据镜像提供一种用于经由固态驱动器(SSD)301来确保一致等待时间和数据镜像的机制,其中SSD 301递送比机械硬盘驱动器(HDD)更低等待时间的存储。
[0066]基于NAND (与非或与非门)310的闪速存储器是用于SSD 301的基本非暂时性物理存储介质的一种类型。目前可用的NAND 310技术需要一定的管理开销来使它用于存储。例如,必须一次擦除装置的大块,以便可以将新数据写入到NAND装置。执行块擦除会花费很长的时间,并且在擦除操作进行中时,NAND装置不能允许在这种擦除周期期间(例如,擦除指定块所花费的时间)对装置上的数据进行任何存取。如果将读取请求呈现给NAND装置,那么它必须延迟或排队,直到NAND装置完成它的擦除操作,从而导致对装置存取存在潜在显著的等待时间延迟。
[0067]尽管这种擦除操作很少发生并且在利用这种基于NAND的装置时不常遇到,但是它们无论如何都会发生,并且在进行中时,它们可能会在读取请求与处理块擦除之间造成以上竞争/冲突,从而导致将其它数据指向正在擦除的相同装置的任何I/O的高等待时间周期。这种场景造成到SSD的I/O等待时间的高可变性。
[0068]为了补偿这种问题,本文公开用于管理SSD装置中的基于NAND的FLASH的机制,以使得对于所有数据块(例如,镜像块)存在复本块,然后采用使得可以在任何时间、即使在由于特定NAND装置上的擦除块操作而导致请求的块的第一副本不可存取时仍可以存取任何数据块的一个副本的方式管理NAND装置。通过实践公开的体系结构、方法和公开的实施例,到基于NAND的SSD (或具有类似限制的其它存储装置)的I/O的可变性得以大大减小,从而对于等待时间敏感的应用产生更一致且可预测的装置。
[0069]图3A描绘具有附连到控制器315的NAND装置的阵列305的基于NAND的SSD的简化框图。控制器315经由诸如SATA、SAS、PCIe等的I/O对接技术与主机119连接。或者,NAND装置的控制器可以连接到控制器105,而控制器105又与主机119连接。
[0070]图3B描绘根据公开实施例用于实现数据镜像以便确保一致的SSD (固态驱动器)301等待时间的体系结构的备选实例性体系结构概况302。具体来说,图3B描绘具有读取请求312的基于NAND 310的单个SSD存储装置,其中读取请求312由于目前在相同的基于NAND的SSD存储装置中进行有效擦除操作311而阻塞,从而导致对该装置上的块的I/O请求313延迟,因而导致装置存取的高度可变且不一致的等待时间。
[0071]图3C描绘根据公开实施例用于实现数据镜像以便确保一致的SSD (固态驱动器)等待时间的体系结构的另一备选实例性体系结构概况303。更具体来说,所存储的每个数据块的副本或镜像分布在SSD装置中的NAND装置的阵列中,从而导致所存储的任何数据块的镜像冗余度,以使得在擦除操作导致I/O请求阻塞的情况下,公开的体系结构和方法使得能够改为存取数据块的镜像数据块或副本,而不必等待块擦除周期完成。
[0072]例如,图中描绘了 NAND-m 398和NAND-m,399 (NAND-m 一撇),它们每个都存储了相同数据块的镜像或复本。镜像数据块312存储在两个装置中,以使得一个副本可以在任何时间存取,而不管待处理的擦除操作是否在进行中,否则擦除操作将导致I/O请求313延迟。公开的机制还对各种NAND装置的擦除活动提供管理,以使得存储有相同数据块的两个副本的两个NAND装置(NAND-m和NAND-m’)决不会同时擦除,例如经由SSD 301的块镜像逻辑。管理擦除周期的开始和完成允许SSD装置的NAND控制器确保总是可以以一致的等待时间存取任何数据块,从而由于实践所公开的用于管理NAND装置阵列的方法和体系结构而导致对SSD装置的存取请求具有大得多的可预测性和显著减轻的可变性。
[0073]在图3C所阐述的描绘中,NAND-m 398示为由于所描绘的对镜像数据块的一个副本的擦除操作而不可用。尽管存在对NAND-m 398装置的目前擦除操作,但是NAND-m’ 399(NAND-m—撇)仍保持可用,并且因此,镜像数据块对于来自镜子NAND-m’ 399的I/O存取请求仍保持可用。因此,通过实践公开的机制,可以在正常较低的NAND等待时间以及可预测并且一致的NAND装置存取等待时间的情况下完成对数据块“X”的I/O请求(例如,对于镜像数据块的这两个副本或镜像中的哪一个不可知)。
[0074]公开的机制的实例性算法如下:
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读取提供服务。
[0075]尽管目前的基于NAND的SSD装置实现了使得擦除操作冲突造成等待时间不一致和增加的可变性的概率最小化的复杂算法,但是没有一种算法能够完全消除擦除操作冲突。由于与高得多的容量和每千兆字节更低成本的HDD相比,基于NAND的SSD装置的就每千兆字节成本比的成本,以本文所教导的方式镜像或复制所有数据块并不直观。这种解决方案之所以不直观是因为,提出的解决方案消耗了空间以作为保证一致等待时间的权衡。然而,存在这样的应用,其中与基于NAND的SSD装置的容量相比,基于NAND的SSD装置的一致可预测并且较低的等待时间更重要,并且因此,公开的方法解决了对于I/O存取请求等待时间周期高度敏感的这种目标应用的需要。将优先级放在通过使用数据块镜像或存储数据块副本来使等待时间可变性最小化之上将目前公开的实施例与使得这种擦除操作冲突最小化但不保证消除这种擦除操作冲突的更复杂的算法加以区分。
[0076]图4A描绘根据公开实施例用于实现改进的RAID 5/6性能的体系结构的实例性体系结构概况400。所描绘的基本装置可以作为根据公开实施例的直接存取存储装置117操作,或者备选地可以作为基本端点存储装置操作,这些基本端点存储装置在主机119或主机OS 120、或代表主机119或在例如实现所公开的体系结构、机制和方法以便实现如所公开的改进的RAID 5/6性能的控制器105内操作的主机RAID控制器的控制和管理下操作。
[0077]根据公开实施例,用于在DIF支持下经由同步RAID处理提升控制器的性能和RAS的解决方案和方法提供一种通过控制器中的专用芯片组硬件来提供最高性能的机制,该专用芯片组硬件能够在多个源间执行奇偶校验位字段的计算,具体来说是执行RAID 5/6命名法中的XOR (异或)和GF (伽罗瓦域)乘法运算。
[0078]在诸如数据库、文件存储和其它关键领域的存储技术中已经使用独立盘冗余阵列(RAID)的概念来增加数据存储系统的可用性。基于硬件的RAID通过普遍在专用控制器中实现以便在多个源间计算奇偶校验位字段的专用芯片组硬件来提供最高性能。在RAID 5/6命名法中,这种基于硬件的功能性包括XOR和GF乘法运算。数据完整性是企业和业务部门中的存储系统的重要特征。数据完整性字段或DIF提供保护主机适配器和存储装置之间的通信以便实现真实的端对端数据完整性的系统解决方案。尽可能早地进行坏数据的隔离和/或校正,从而具有对系统完整性和性能的最小影响。利用TlO型DIF允许将保护范围和DIF操作扩展为包括DIF插入、DIF验证和DIF删除操作。
[0079]当用RAID传送数据时,如果系统不具有合适的错误检测方案,那么数据破坏的可能性很大。RAID系统保证考量的设计考量的至少两个方面是对于高端存储实现增加介质上的实现的适应性和适宜性。具体来说是,I)高吞吐量;以及2)高RAS (可靠性、可用性和可服务性)能力。
[0080]在故障容忍RAID配置中发生的静默数据破坏否定了具有RAID实现的价值,因为RAID接着存储不可用的破坏数据。为了消除这种缺陷并改进RAID系统的整体RAS,本文公开DIF和具有DIF能力的RAID的概念以作为用于提供和利用端到端CRC (循环冗余检查)能力的机制。DIF (数据完整性字段)和DIX (数据完整性扩展)436是用于通过TlO型CRC和/或校验和能力来保卫数据的机制。
[0081]但是,根据各种实施例如本文所公开的具有DIF的RAID的实现需要更加复杂的逻辑结合RAID处理引擎来一前一后地执行DIF校验上的操作和更新438操作。
[0082]之前已知的基于RAID的算法实现了将数据从主机传送到本地高速缓存、对本地数据执行奇偶校验位计算、然后将数据和奇偶校验位结果写入到盘的串行过程。
[0083]本文公开一种通过专用硬件芯片组的同步流体系结构,其中使得该专用硬件芯片组能够实现同步流以便实现改进的RAID算法,这将在下文额外详细地加以描述。例如,可以利用可从本申请的合法受让者Intel公司购得的DMA (直接存储器存取)芯片组或CBDMA(Crystal Beach DMA)芯片组来实现用于如本文所公开的改进的RAID存储解决方案的公开的同步流体系结构和方法,由此优化数据传送功能和奇偶校验位计算功能,从而潜在地导致更高的总应用带宽、更低的功率、改进的RAS和减少的存储器利用率。
[0084]公开的用于改进的RAID存储解决方案的同步流体系结构和方法还提供额外的优点,例如减少软件开销并进一步启用小生境操作,例如对于存储设备IOP (集成式I/O处理器)应用的双播,从而导致硅面积的节省。
[0085]对存储系统的容量、速度和可用性的增加的需求提供了对廉价盘冗余阵列(RAID)行业范围的出现的推动。RAID-5和RAID-6 (例如,RAID 5/6)方法分别对单模式故障和双模式故障(有时又称为单并发和双并发故障模式、单驱动器和双驱动器故障模式等)提供了数据保护。RAID 5使得能够通过实现单个P奇偶校验位数据来从单个驱动器上的灾难性损失进行完整恢复,而RAID 6使得能够通过实现P奇偶校验位数据和普遍称为Q奇偶校验位数据的额外实现来从两个独立的同步驱动器故障上的灾难性损失进行完整恢复。RAID 5/6的概念并不新,而是本文公开用于改进的RAID存储解决方案的同步流体系结构和方法以便在之前所知的基础上优化RAID 5/6。
[0086]RAID高速缓存410代表待写入到构成盘阵列437处的目标RAID集合的基本盘的最新写入数据。之前已知的RAID 5/6实现遭受受到系统存储器432限制并且因此成为瓶颈的流式写入性能。作为同步流体系结构和方法的部分,本文公开利用DMA能力来将数据从应用系统存储器区域移动到本地系统存储器区域以便实现RAID 5/6和数据完整性检查。这种优化消除了读取/写入操作,从而增强了系统性能。因此,与本文所描述的改进的同步流体系结构和方法相比,之前已知的机制需要额外的读取/写入操作,并且因此不那么有效。
[0087]通过使用如本文所公开的用于改进的RAID的同步流体系结构和方法,并且另外通过使用基于DMA的能力,可以实现数据加速和增加的RAS覆盖范围,从而对于根据公开实施例的一个或多个公开实施例操作的基本RAID实现提高整体写入吞吐量。此外,所公开的体系结构和方法导致从主机119系统的CPU (中央处理单元)卸载计算开销,从而经由实现硬件提供诸如RAID 5/6处理、数据完整性计算和多播的专用芯片组硬件功能性。[0088]之前已知的通过I/O存储控制器执行的RAID 5/6流式写入操作涉及将源数据(对于写入)从主机119传送到主机的本地存储器。反之,本文所公开的同步流体系结构和方法利用存储控制器中的DMA引擎来从本地存储器读取所传送的数据以便计算奇偶校验位并将它写回到本地存储器。即使在利用基于DMA的体系结构的情况下,I/O存储控制器的DMA引擎仍从本地存储器读取所传送的数据以便计算奇偶校验位,然后将奇偶校验位数据写回到本地存储器,如434处的DIF #2操作所描绘,即拉数据并将数据写回到RAID高速缓存410,在此之后,DMA引擎将接着对所传送的数据和之前写入的计算的奇偶校验位数据执行读取操作,然后将所有数据写入到构成盘阵列437处的目标RAID集合的存储装置。可见,这种之前已知的技术涉及存储器接口间的多次读取/写入,从而导致对资源的高需求,并造成与竞争相同的有限资源的其它应用和系统操作的竞争。
[0089]本文所公开的同步流体系结构和方法利用DIF通过将源数据传送和奇偶校验位计算组合到单个操作中的能力、从而与如上文所描述的之前已知的技术相比消除了读取/写入操作来对于流式数据集合提供存储器带宽的显著改进。因此,同步流体系结构和方法使得能够以更少的I/o资源需求将计算的奇偶校验位和传送的数据写入到它们的最终目的地(例如,写入到构成RAID集合的目标目的地驱动器,例如HDD、SCSI驱动器(小型计算机系统接口驱动器)、或基于闪存或SSD的驱动器,例如那些可以例如作为直接存取的存储设备117实现或作为端点驱动器实现的驱动器,端点驱动器在主机119、主机OS 120、或代表主机操作的控制器(例如,实现如本文所公开的同步流体系结构和方法的存储控制器或控制器105)的控制下)。
[0090]在利用用于改进的RAID存储解决方案的同步流体系结构和方法的公开实施例中,DMA复制操作使得在同步计算奇偶校验位的情况下将数据从主机119的应用缓冲器写入到I/O处理器的RAID高速缓存(本地存储器),从而使得能够在不延迟写入到盘的情况下完成对主机119的I/O操作,同时使得否则将与额外的读取/写入操作相关联的存储器开销最小化,因而提高应用数据吞吐量。
[0091]图4A还示出从容易理解的高级角度描绘同步流体系结构和方法的ROL (负载上RAID)实现或ROC (芯片上RAID)实现的具有DIF (DIX) 436的RAID。例如,在ROL和ROC的情况下,主机OS 120的应用驱动器将DIX格式的数据存储在主机119的系统存储器432中。但是,在一些情况下,也可以在主机119上创建499 DIF格式(例如,标为“步骤O”)。因此,在这样的实施例中,系统存储器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加以组合。
[0092]对于其中写入数据小于RAID条带的一般I/O写入情形,需要对盘进行读取修改写入(RMW)操作。但是,在发出多个相继写入的较大流式写入的实施例中,可以收集整个数据条带,以使得不需要对盘进行RMW。在这种实施例中,根据从主机复制的新数据计算新的奇偶校验位。因此,RAID堆栈不需要等待累积足以创建完整条带的I/O写入请求。在该实施例中,对于XOR计算形成描述符,其中通常将源数据从I/O (主机)复制到存储器,并且通常计算XOR结果并将其存储在系统存储器432中。
[0093]诸如在盘复制过程中发生的大型I/O写入操作的一个实例是到盘的25GB HD-DVD复制,其中单个I/o至少是条带长度那么大或大于条带长度。在该实例中,RAID堆栈不需要累积多个I/O请求便可发出DMA/X0R操作并在执行XOR时将数据复制到高速缓存。同步流体系结构和方法使得X0R/PQ操作的这种新能力成为可能,其中它将数据复制和RAID加
以组合。
[0094]补充RAID软件在准备组合的DMA/X0R操作之前管理I/O请求的逻辑-物理转译。这种改进的特征可以直接对RAID软件堆栈或合适的扩展实现,其中与I/O缓存相关联的任务因而涉及与XOR处理组合。
[0095]通过对于RAID计算消除一次从存储器的读取来达到更高吞吐量,以便减少存储器带宽需求。这种改进可以直接转化为流式写入以及已知的当利用之前已知的技术时受到存储器限制的大型写入工作负载的可以计量的基准性能改进。
[0096]通过从主机119的CPU卸载计算需求而在DMA支持体系结构中同步执行RAID-5/6和数据完整性检查438,达到了更高的RAS覆盖范围,并且因此提高了 IPC (每个时钟的指令),消除了 SSE LI抖动,并改善了高速缓存未命中,所有这些都导致增强的RAS覆盖范围。 [0097]对于变动大小的随机服务器工作负载,条带大小(例如,RAID-5/6阵列的8KB)必须等于或小于预期的I/o大小,以便能看到这种基准化改进。因此,必须相应地调谐系统以便消除奇偶校验位的RMW,并使特定服务器工作负载的存储性能最大化,从而得出以上性能益处。
[0098]表1捕获根据一些实施例经由所公开的用于改进的RAID存储解决方案(包括正常数据、DIF编码数据和自动转换为DIF的DIX编码数据)的同步流体系结构和方法提供的各种创新。表中的lb、lc、2c、3a处所表示的星形(*)选项代表由所公开的同步流体系结构和方法提供、而利用之前已知的RAID 5/6处理机制无法达到的新创新。
[0099]表1-具有DIF/DIX的RAID优化功能
【权利要求】
1.一种设备,包括: 到直接存取的存储设备的输入/输出接口( I/o接口)模块;以及 存储设备适配器,用于代表所述直接存取的存储设备提供分区表,其中所述分区表实现通过所述I/o接口模块对所述直接存取的存储设备的逻辑块存取(LBA存取)。
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.一种存储设备,包括: 多个协作存储装置,所述多个协作存储装置中的每个装置包括: 多播接口,用于与所述多个协作存储装置的剩余协作存储装置通信, 纠错码(ECC)模块,以及 异或(XOR)模块; RAID (独立盘冗余阵列)模块,用于从在通信上与所述存储设备链接的外部装置接收单个I/O事务,并基于所述单个I/O事务对经由所述多播接口跨越所述多个协作存储装置分成条带的多个数据区块进一步执行多个ECC操作和至少一个XOR功能。
12.如权利要求11所述的存储设备: 其中来自所述外部装置的所述单个I/O事务包括指定即将存储在所述存储设备上的数据的写入I/O事务;其中所述写入I/o事务没有为所述指定的数据提供奇偶校验位数据或XOR保护信息;其中所述RAID模块将所述单个I/O事务的所述指定的数据分为多个数据区块并启动将所述多个数据区块多播到所述多个协作存储装置中的指定目标驱动器; 其中所述多个协作存储装置中的非指定目标驱动器经由所述多播接收所述多个数据区块,基于经由所述多播接收的所述多个数据区块生成XOR保护信息,并将所述生成的XOR保护信息作为XOR区块加以存储。
13.如权利要求11所述的存储设备: 其中来自所述外部装置的所述单个I/o事务包括指定即将从所述存储设备检索的数据的读取I/o事务; 其中所述读取I/o事务指定用于检索的数据块,而无需为所述指定的数据块指定数据区块位置或XOR区块位置; 其中所述RAID模炔基于指定用于检索的所述数据块确定所述指定数据块的数据区块位置和XOR区块位置; 其中所述RAID模块确定,如所述多个协作存储装置之一的相应ECC模块所报道,所述多个数据区块位置之一没有通过ECC检查; 其中所述RAID模块执行XOR操作以便利用剩余数据区块位置和所述XOR区块位置经由在所述多个协作存储装置中的多播读取重构经确定没有通过所述ECC检查的所述一个数据区块位置;并且 其中所述存储设备在履行所述单个I/O事务中将所述指定的数据块返回到所述外部>j-U ρ?α装直。
14.如权利要求11所述的存储设备: 其中所述存储装置是其中集成了所述多个协作存储装置的SSD (固态驱动器);并且其中所述SSD将通过经由所述单个I/O事务指定的I/O读取请求所触发的XOR操作错误报道回给所述外部装置。
15.如权利要求11所述的存储设备,其中所述多个协作存储装置构成协作直接存取存储装置,所述协作直接存取存储装置独立于主机、主机操作系统和/或主机管理的文件系统操作,并且不受所述主机、所述主机操作系统和/或所述主机管理的文件系统的管理或控制。
16.如权利要求15所述的存储设备,其中所述协作直接存取存储设备可经由应用直接存取,所述应用由所述主机或所述主机操作系统托管并在所述主机或所述主机操作系统上执行。
17.如权利要求16所述的存储设备,其中所述协作直接存取存储装置在通信上与控制器对接,所述控制器具有与所述协作直接存取存储装置通信的输入/输出接口(I/O接口)模块,并且其中所述协作直接存取存储装置通过代表所述控制器在本地提供本地数据保护和本地数据恢复能力而从所述控制器卸载数据保护和数据恢复责任。
18.如权利要求17所述的存储设备,其中所述控制器包括这样的控制器,所述控制器中包含: 本地控制器中央处理器单元(CPU); 本地控制器存储器;PCIe (外围组件互连Express)接口,用于在通信上链接所述控制器和宿主机;以及 控制器接口模块,用于经由所述PCIe接口与所述宿主机进行I/O操作和指令通信,所述通信的I/O操作将转播给所述协作直接存取存储装置。
19.如权利要求11所述的存储设备,其中所述多个协作存储装置构成协作端点存储装置,所述协作端点存储装置在主机、主机操作系统和/或主机管理的文件系统的控制下操作,并且受所述主机、所述主机操作系统和/或所述主机管理的文件系统的管理或控制。
20.如权利要求19所述的存储设备,其中所述协作端点存储装置在通信上与宿主机对接,所述宿主机具有与所述协作端点存储装置通信的输入/输出接口(I/o接口 )模块,并且其中所述协作端点存储装置通过代表所述宿主机在本地提供本地数据保护和本地数据恢复能力而从所述宿主机卸载数据保护和数据恢复责任。
21.一种存储设备,包括: 布置到多个NAND (与非)阵列中的多个基于NAND的闪速存储器组件; 在通信上与所述多个NAND阵列对接的NAND控制器;以及 用于建立写入到所述存储设备的每个数据块的镜像副本的块镜像逻辑,每个镜像副本将存储在所述多个NAND阵列之一内。
22.如权利要求21所述的存储设备,其中用于建立写入到所述存储设备的每个数据块的所述镜像副本的所述块镜像逻辑包括用于在所述多个NAND阵列中的一个NAND阵列内存储每个数据块的每个镜像副本的块镜像逻辑,其中所述多个NAND阵列的所述一个NAND阵列不同于所述多个NAND阵列中的其上存储每个镜像副本的对应数据块的NAND阵列。
23.如权利要求21所述的存储设备: 其中所述块镜像逻辑将所述多个基于NAND的闪速存储器组件之一指定为第一 NAND位置以用于存储数据块;并且 其中所述块镜像逻辑将所述多个基于NAND的闪速存储器组件的第二组件指定为第二NAND位置(NAND位置一撇)以用于存储在所述第一 NAND位置内所存储的所述数据块的所述镜像副本。
24.如权利要求23所述的存储设备,其中所述块镜像逻辑还在所述多个NAND阵列中为对应于任何数据块和所述数据块的镜像副本的每个第一 NAND位置和第二 NAND位置一撇维持排他性。
25.如权利要求21所述的存储设备: 其中所述NAND控制器还在通信上链接到外部装置; 其中所述NAND控制器用于从所述外部装置接收I/O事务;并且 其中所述存储设备经由所述NAND控制器结合经由所述多个NAND阵列的所述块镜像逻辑履行来自所述外部装置的所述I/O事务。
26.如权利要求25所述的存储设备: 其中来自所述外部装置的所述I/O事务包括用于指定即将存储在所述存储设备上的数据块的写入I/O事务; 其中所述块镜像逻辑用于将所述指定的数据块写入到所述多个NAND阵列中的第一NAND阵列;并且 其中所述块镜像逻辑用于将所述指定的数据块的镜像副本写入到所述多个NAND阵列中的第二 NAND阵列,其中所述多个NAND阵列中的所述第一 NAND阵列和所述多个NAND阵列中的所述第二 NAND阵列不同。
27.如权利要求25所述的存储设备: 其中来自所述外部装置的所述I/O事务包括用于指定即将从所述存储设备检索的数据块的读取I/o事务; 其中所述块镜像逻辑用于确定其上存储所述指定的数据块的所述多个NAND阵列的第一NAND阵列; 其中所述块镜像逻辑用于确定其上存储所述指定的数据块的所述多个NAND阵列的所述第一 NAND阵列正在处理有效擦除操作并且不可用于检索所述指定的数据块; 其中所述块镜像逻辑用于确定其上存储所述指定数据块的所述镜像副本的所述多个NAND阵列的第二 NAND阵列;并且 其中所述块镜像逻辑用于在履行所述读取I/O事务中从所述多个NAND阵列的所述第二NAND阵列检索所述指定数据块的所述镜像副本。
28.如权利要求27所述的存储设备,其中所述块镜像逻辑防止同时向其上存储所述指定数据块的所述多个NAND阵列的所述第一 NAND阵列和其上存储所述指定数据块的所述镜像副本的所述多个NAND阵列的所述第二 NAND阵列发出有效擦除操作,以便保证所述指定数据块或所述指定数据块的所述镜像副本始终可用。
29.权利要求21所述的存储设备: 其中所述存储装置是SSD (固态驱动器),在所述SSD中集成了布置到所述多个NAND阵列中的所述多个基于NAND的闪速存储器组件,并且在所述SSD中还集成了所述NAND控制器;并且 其中所述SSD的所述NAND控制器用于实现所述SSD的所述块镜像逻辑,并且 其中所述SSD用于作为以下之一进行操作: 1)直接存取存储装置,它独立于主机、主机操作系统和/或主机管理的文件系统操作并且不受所述主机、所述主机操作系统和/或所述主机管理的文件系统的管理或控制,所述直接存取存储装置可经由应用直接存取,所述应用由所述主机或所述主机操作系统托管并在所述主机或所述主机操作系统上执行,其中所述直接存取存储装置在操作上与外部控制器对接,所述外部控制器作为与所述SSD的所述NAND控制器通信的所述外部装置操作;或 2)端点存储装置,它在所述主机、所述主机操作系统和/或所述主机管理的文件系统的控制下操作并且受所述主机、所述主机操作系统和/或所述主机管理的文件系统的管理和控制,其中所述端点存储装置在通信上与所述主机对接,所述主机作为与所述SSD的所述NAND控制器通信的所述外部装置操作。
30.如权利要求21所述的存储设备: 其中所述存储装置是SSD (固态驱动器);并且 其中所述外部装置包括控制器,所述控制器中包含: 本地控制器中央处理器单元(CPU); 本地控制器存储器; PCIe (外部组件互连Express)接口,用于在通信上链接所述控制器和宿主机;以及控制器接口模块,用于经由所述PCIe接口与所述宿主机进行I/O操作和指令通信,所述通信的I/O操作将转播给所述SSD。
31.一种设备,包括: 到宿主机的第一输入/输出接口(I/O接口)模块,所述第一 I/O接口模块用于接收包括即将存储的数据和所述即将存储的数据的DIF或DIX (数据完整性字段或数据完整性扩展)数据的I/O事务; DMA (直接存储器存取)模块,用于将所述即将存储的数据以及所述即将存储的数据的DIF或DIX数据从所述宿主机的存储器移动到位于所述设备本地的存储器,并基于所述DIF或DIX数据同步地计算所述即将存储的数据的奇偶校验位;以及 到多个存储设备的第二 I/O接口模块,所述第二 I/O接口模块用于将所述即将存储的数据以及所述即将存储的数据的所述计算的奇偶校验位从位于所述设备本地的所述存储器移动到所述多个存储设备。
32.如权利要求31所述的设备: 其中所述DMA模块还中断位于所述设备本地的中央处理单元核(CPU核);并且 其中位于所述设备本地的所述CPU核响应地将完成通知投寄到所述宿主机的所述存储器中。
33.如权利要求32所述的设备: 其中位于所述设备本地的所述CPU核还构建供盘控制器处理的命令,所述盘控制器在通信上经由到所述多个存储设备的所述第二 I/o接口模块与所述设备对接; 其中位于所述设备本地的所述CPU核将所述命令投寄到位于所述设备本地的消息传递单元;并且 其中位于所述设备本地的所述CPU核将到所述命令的链路投寄到所述盘控制器中。
34.如权利要求33所述的设备: 其中响应于投寄到所述盘控制器中的所述命令,所述盘控制器提取到投寄到所述盘控制器的所述命令的所述链路;并且 其中响应于将所述即将存储的数据以及所述即将存储的数据的所述计算的奇偶校验位从位于所述设备本地的所述存储器移动到所述多个存储设备,所述第二 I/O接口还将第二完成通知投寄到所述消息传递单元;并且 其中所述第二 I/O接口还中断位于所述设备本地的所述CPU核。
35.如权利要求31所述的设备,其中包括即将存储的数据和所述即将存储的数据的DIF或DIX数据的所述I/O事务包括数据流,所述数据流具有编码到所述流上的所述即将存储的数据以及所述即将存储的数据的所述DIF或DIX数据。
36.如权利要求31所述的设备,其中用于基于所述DIF或DIX数据同步地计算所述即将存储的数据的奇偶校验位的所述DMA模块还包括这样的DMA模块,它在同步计算所述即将存储的数据的所 述奇偶校验位的同时插入DIF数据或检查编码数据的DIF数据或将DIX数据转换为DIF数据。
37.如权利要求31所述的设备,其中用于基于所述DIF或DIX数据同步地计算所述即将存储的数据的奇偶校验位的所述DMA模块包括用于计算P和Q奇偶校验位的DMA模块,其中P奇偶校验位代表基于XOR (异或)操作的奇偶校验位计算,并且其中Q奇偶校验位代表基于伽罗瓦域(GF)乘法运算的奇偶校验位计算,P和Q奇偶校验位的所述计算足以实现对于双并发故障模式可复原的RAID-6。
38.如权利要求31所述的设备,其中用于将所述即将存储的数据以及所述即将存储的数据的所述计算的奇偶校验位从位于所述设备本地的所述存储器移动到所述多个存储设备的所述第二 I/O接口模块包括用于跨越所述多个存储设备实现宽度优先填充操作的第二I/o接口模块。
39.如权利要求31所述的设备,其中在控制器内实现所述设备,所述控制器包括: 位于所述控制器本地的中央处理单元核(CPU核); 位于所述控制器本地的缓存存储器; PCIe (外围组件互连Express)接口,用于实现到所述宿主机的所述第一输入/输出接口模块并在通信上链接所述控制器和所述宿主机;以及 控制器接口模块,用于经由所述PCIe接口与所述宿主机进行指令通信。
40.如权利要求1所述的设备,其中所述多个存储设备中的每个存储设备作为独立于所述宿主机、宿主机操作系统和/或宿主机管理的文件系统操作的直接存取存储装置操作,其中每个直接存取存储装置不受所述宿主机、所述宿主机操作系统和/或所述宿主机管理的文件系统的管理或控制,每个直接存取存储装置可经由应用直接存取,所述应用由所述宿主机或所述宿主机操作系统托管并在所述宿主机或所述宿主机操作系统上执行,并且其中每个直接存取存 储装置在通信上经由到所述多个存储设备的所述第二 I/o接口模块与所述控制器对接。
41.一种设备,包括: 具有排队工作的门铃空间的工作引擎队列; 到宿主机的输入/输出接口(I/O接口)模块,所述I/O接口模块用于接收门铃条目以便提交给所述工作引擎队列; 位于所述工作引擎队列内的第一队列结构,用于利用仲裁方案从所述工作引擎队列释放门铃条目; 位于所述工作引擎队列内的第二队列结构,用于利用所述仲裁方案从所述工作引擎队列释放额外的门铃条目; 其中当所述第一队列结构中的门铃条目的数量低于服务队列条目(SQE)的阈值数量时,在所述第一队列结构内将所述门铃条目排队并从所述第一队列结构释放所述门铃条目;并且 其中当所述第一队列结构中的门铃条目的数量大于SQE的所述阈值数量时,在所述第二队列结构内将所述额外门铃条目排队。
42.如权利要求41所述的设备,还包括位于所述工作引擎队列内的管理队列结构,用于存储和释放作为管理门铃消息经由所述输入/输出接口模块从所述主机到达的管理工作。
43.如权利要求41所述的设备,还包括到直接存取存储装置的第二I/O接口模块;并且 其中经接收以便提交给所述工作引擎队列的所述门铃条目包括对所述直接存取存储装置请求I/O事务的存储设备处理工作。
44.如权利要求43所述的设备,其中所述直接存取的存储装置独立于所述主机、主机操作系统和/或主机管理的文件系统操作,并且不受所述主机、所述主机操作系统和/或所述主机管理的文件系统的管理或控制。
45.如权利要求44所述的设备,其中所述直接存取的存储设备可依据经由所述工作引擎队列提交对所述直接存取存储装置请求I/O事务的所述存储设备处理工作经由应用直接存取,所述应用由所述主机或所述主机操作系统托管并在所述主机或所述主机操作系统上执行。
46.如权利要求41所述的设备,其中对于出错或恶意的门铃条目请求对所述第一队列结构的门铃条目进行错误检查,并且在通过所述错误检查时将其放到所述第一队列结构中,或者在没有通过所述错误检查时将其从进一步的排队、处理和仲裁中丢弃。
47.如权利要求41所述的设备,其中对所述第二队列结构的门铃条目进行CAM检查(针对“内容可寻址存储器”进行检查)以便基于与所述相应的门铃条目的服务队列标识符(SQid)匹配的CAM条目确定在所述第二队列结构内是否存在所述相应门铃条目的所述匹配的SQid,并且一旦通过所述CAM检查,便将其放到所述第二队列结构中,或者如果没有通过所述CAM检查,那么将其从进一步的排队、处理和仲裁中丢弃。
48.如权利要求41所述的设备,还包括用于维持在所述第一队列结构中所允许的最大SQE数量的配置空间以及用于存储在所述第一队列结构中目前排队的多个SQE的存储器空间;并且 其中将经接收以便提交给所述工作引擎队列的所有门铃条目放到所述第一队列结构中,直到所述第一队列结构达到如所述配置空间内所维持的在所述第一队列结构中所允许的最大SQE数量,并且其 中将经接收以便提交给所述工作引擎队列的额外门铃条目放到所述第二队列结构中,直到所述第一队列结构中的SQE的数量下降为低于在所述第一队列结构中所允许的SQE的阈值数量。
49.如权利要求41所述的设备,其中在控制器内实现所述设备。
50.如权利要求49所述的设备,其中所述控制器包括这样的控制器,所述控制器包括: 本地控制器中央处理器单元(CPU); 本地控制器存储器; PCIe (外围组件互连Express)接口,用于在通信上链接所述控制器和所述主机; 控制器接口模块,用于经由所述PCIe接口与所述主机进行指令和I/O事务请求通信; 到直接存取存储装置的第二 I/O接口模块;并且 其中所述控制器接口模块将I/O事务请求呈现给所述第二 I/O接口模块以便经由在通信上与所述控制器对接的所述直接存取存储装置履行所述I/O事务请求。
51.一种设备,包括: 位于所述设备本地的中央处理器单元(CPU); 具有排队工作的门铃空间的工作引擎队列; 到宿主机的输入/输出接口(I/O接口)模块,所述I/O接口模块用于接收门铃条目以便提交给所述工作引擎队列; 完成队列,具有用于将之前排队的完成的工作合并为所述工作引擎队列中的排队工作的空间;以及完成队列中断机构,用于基于与所述完成队列相关联的状态启动中断。
52.如权利要求51所述的设备,其中所述完成队列中断机构包括: 本地CPU中断机构,用于基于与所述完成队列相关联的所述状态中断位于所述设备本地的所述CPU;以及 宿主机CPU中断机构,用于基于与所述完成队列相关联的所述状态中断所述宿主机的CPU。
53.如权利要求52所述的设备,其中宿主机CPU中断机构对于所述宿主机实现MSI(消息信令中断)或MS1-X (消息信令中断扩展)。
54.如权利要求53所述的设备,其中对所述宿主机的所述MSI或MS1-X结合对应于所述宿主机CPU中断机构以及另外对应于宿主机CPU错误中断机构的每一者的专用地址和数据向量操作。
55.如权利要求51所述的设备,还包括错误中断机构,用于基于对与所述设备相关联的驱动器有影响或对所述设备的消息传递单元有影响的错误的通知立即启动错误中断。
56.如权利要求55所述的设备,其中所述错误中断机构包括: 本地CPU错误中断机构,用于基于所述错误的通知立即中断位于所述设备本地的所述CPU ;以及 宿主机CPU错误中断机构,用于基于所述错误的通知立即中断所述宿主机的CPU,其中所述宿主机CPU错误中断机构经由NTB (非透明桥接)对所述宿主机实现MSI (消息信令中断)或MS1-X (消息信令中断扩展)。
57.如权利要求51所述的设备,其中用于基于与所述完成队列相关联的所述状态启动所述中断的所述完成队列中断机构包括用于基于所述完成队列启动所述中断的队列中断机构,所述完成队列合并了在不启动所述中断的情况下超过指定即将在所述完成队列中维持的最大完成工作数的合并数的多个完成工作。
58.如权利要求51所述的设备,其中用于基于与所述完成队列相关联的所述状态启动所述中断的所述完成队列中断机构包括用于基于所述完成队列启动所述中断的队列中断机构,所述完成队列合并了在不启动所述中断的情况下超过指定用于合并所述完成队列中的完成工作的最大时间周期的合并计时器的时间周期的完成工作。
59.如权利要求58所述的设备,其中在启动中断之前,所述合并计时器实现最小和最大延迟,其中如果就在为完成工作投寄新的完成条目之前所述合并计时器到期,那么将观察到最小时间周期,其中将使所述新完成条目与随后启动的中断相关联。
60.如权利要求51所述的设备,其中所述控制器包括这样的控制器,所述控制器包括: 位于所述设备本地的中央处理器单元(CPU)以作为本地控制器CPU ; 本地控制器存储器; PCIe (外围组件互连Express)接口,用于经由到所述宿主机的所述输入/输出接口模块在通信上链接所述控制器和所述宿主机; 控制器接口模块,用于经由所述PCIe接口与所述宿主机进行指令和I/O事务请求通信; 到直接存取存储装置的第二 I/o接口模块;并且 其中所述控制器接口模块将I/o事务请求呈现给所述第二 I/O接口模块以便经由在通信上与所述控制器对接的所述直接存取存储装置履行所述I/o事务请求。
61.如权利要求51所述的设备,其中用于基于与所述完成队列相关联的所述状态启动所述中断的所述完成队列中断机构包括经由非透明桥接将主机中断注入到所述宿主机的NTB门铃机构(非透明桥接门铃机构)。
62.如权利要求61所述的设备,其中通过在所述设备的到所述宿主机的所述I/O接口模块处实现的PCIe下游端口(外围组件互连Express下游端口)经由对所述宿主机的MSI(消息信令中断)或 MS1-X (消息信令中断扩展)实现所述NTB门铃机构。
【文档编号】G06F13/14GK104040515SQ201180075095
【公开日】2014年9月10日 申请日期:2011年9月30日 优先权日:2011年9月30日
【发明者】T.M.斯莱特, S.拉哈克里什南, M.A.施米索尔, P.库马, S.蒙达尔, 陈信森, D.C.李, M.T.琼斯, G.R.埃迪里苏里亚, B.A.伯雷斯, B.M.莱特纳, K.C.哈伦, M.T.克林尔史密斯, M.R.威尔科克斯, E.J.达伦 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1