执行并飞"异"运算的方法和系统的制作方法

文档序号:6415515阅读:148来源:国知局
专利名称:执行并飞"异"运算的方法和系统的制作方法
技术领域
本发明涉及存储系统。
一种已知的存储系统称为“RAID”,在该系统中跨越多个盘驱动器分布并存储数据,从而在这些盘驱动器中的一个或者一个或多个存储块出故障而丢失数据时能恢复数据。为了存储以后可恢复的数据,RAID系统同时记录数据以及奇偶信息,从而可由奇偶信息恢复数据。例如,在一种类型的RAID系统中,为了在称为“条”的单元中记录四块数据和一块奇偶信息使用一组为五个的盘。
现有技术中出现的一个问题是记录奇偶信息的RAID系统需要快速地和经常地计算奇偶信息。例如,写一个条的操作需要计算至少一组一奇偶信息。计算奇偶信息主要采用XOR(“异”)操作。这需要分配相当多的计算资源,例如处理机周期、超高速缓存单元以及存储器存取周期。
一种计算奇偶信息的可能技术是设置用来控制计算“异”操作的处理机的软件。这种技术具有几种设计选择方式,例如设法调度处理机指令以避免寄存器冲突、避免不必要的等待并且减少未击中超高速缓存,从而避免不必要的存储内容转储以及处理机的不必要等待。尽管该技术达到计算奇偶信息的目标,但它具有需要相当多的计算资源(处理机周期、超高速单元、转储)的缺点。
另一种可能的计算奇偶信息的技术是设置一个带有独立存储器的第二处理机,以执行“异”运算。该第二处理机利用DMA连接和主存储器(即,第一处理机使用的存储器)耦合,该DMA连接利用DMA操作从存储器中检索“异”运算的输入,从而使第一处理机去执行其它的任务。虽然该技术达到计算奇偶信息的目标,即使它使第一处理机摆脱了一些负担,它仍具有需要相当多的转储和使用系统总线的缺点。
因此,提供一种消耗较少计算资源的执行“异”运算的方法和系统应是有好处的。本发明的实施方式可达到这种好处,在本发明的实施方式中一个专用处理机观察传送到系统总线上的存储器存取和盘存取,执行“异”运算,记录“异”运算的结果并根据处理机命令输出这些“异”运算的结果。
本发明提供一种不消耗大量计算资源的执行“异”运算的方法和系统。一个专用处理机和一组盘驱动器连接到同一总线上;该专用处理机观察盘驱动器组的往来数据传送,并且在不需要单独的传送下对往返传送于盘驱动器的数据执行“异”运算。
在最佳实施方式中,该专用处理机保持一个用于“异”运算的“异”累加器,该累加器记录“异”运算的结果,并根据处理机的命令读出结果。该“异”累加器包括一组累加器寄存器,以用于一组选出的RAID条中的每个RAID条。存储器(例如按内容寻址存储器)把一组累加器寄存器和每个选出的RAID条关连起来。


图1是执行并飞“异”的系统的方块图。
图2是操作执行并飞“异”的系统的方法的流程图。
图3是第一并飞“异”部件的方块图。
图4是第二并飞“异”部件的方块图。
在下述说明中,就最佳处理步骤及数据结构说明本发明的一种最佳实施方式。然而,熟练的技术人员应理解,在研读本申请后,可以用一个或多个在程序控制下运行的通用处理机(或者适宜于具体处理步骤及数据结构的专用处理机)实现本发明的实施方式,并且利用这样的设备实现本文中所说明的最佳处理步骤以及数据结构并不需要过多的实验或其它发明。系统部件图1是执行并飞(fly-by)“异”的系统的方块图。
系统的100至少包括一个处理机110、一个存储器120以及一条用于连接处理机110和存储器120的系统总线130。虽然只示出一个处理机110,在对于某些应用为最佳的一些实施方式中,系统总线130可连接多于一个的处理机110并且在操作中这些处理机100相互协调。
系统100还包括多个盘驱动器140以及至少一个和盘驱动器140连接的盘I/O适配器150,适配器150用于控制盘驱动器140并利用底层总线160耦合盘驱动器140和系统总线130之间的数据。
在一种最佳实施方式中,底层总线160是PCI总线,PCI总线是周知的标准并利用PCI网桥170和系统总线130连接。
虽然在最佳实施方式中底层总线160是PCI总线,但本发明并不限制于使用PCI总线或者限制于使用任何其它特定类型的总线。类似地,虽然在本文中进一步把底层总线160描述为一个32位的总线,本发明并不受限于使用32位的总线,并且也可以用其它的总线宽度,例如64位的总线实现。这样的替代不需要过多的经验或创造。
一个并飞“异”部件180和底层总线160连接,从而从利用底层总线160的数据传送搜集数据。并飞“异”部件利用“异”缓冲器190保存“异”运算的部分或最终结果。
当处理机110控制存储器120和一个或多个盘驱动器140间的数据传送时,利用系统总线130、PCI网桥170以及底层总线160传送数据。当利用底层总线160传送数据时,并飞“异”部件180读数据(但不干扰数据传送)并且把数据添加到“异”缓冲器190里的多个“异”累加器(见图2)的一个中。当整条地或部分地读或写一个RAID条时,并飞“异”部件180动态地为该RAID条计算一组奇偶信息,不再需要从系统100的任何部分得到其它资源。不再需要额外的数据传送,并且不需要处理机110和存储器120执行“异”运算。
当处理机110如此控制时,并飞“异”部件180将从“异”缓冲器190里的一个“异”累加器中读出累加的奇偶信息,以把奇偶信息写到刚被读或写的该RAID条中的存储块上。来自“异”缓冲器190的累加奇偶信息还可在该RAID条中的一个盘驱动器140丢失该RAID条的整个存储块或部分存储块时,重构或修复该RAID条中的数据。系统操作图2是一种执行并飞“异”的系统的操作方法流程图。
并飞“异”部件180的操作方法200包括一系列由处理机110、盘驱动器140以及并飞“异”部件180执行的步骤。
在点210处,系统100将对其RAID条执行“异”运算。
在步骤221,处理机110在存储器120中分配一个存储缓冲区,并且建立要向或从该存储缓冲区和一个盘驱动器140进行DMA传送的数据。
在步骤222,处理机110向并飞“异”部件180发送该存储缓冲区的存储器地址,并控制并飞“异”部件180识别向该存储缓冲区传送或从其传来的数据。处理机110还分配“异”缓冲器190里各“异”累加器缓冲区中的一个缓冲区以累加“异”运算的结果。
在步骤223,执行DMA传送。并飞“异”部件180监视底层总线160并试图识别向或来自该存储缓冲区的传送。当并飞“异”部件180识别出这种传送时,它复制正在传送的数据并且(通过执行“异”运算)把数据加到相关“异”累加器缓冲区中的累加奇偶信息上。当该识别出的存储缓冲区的所有数据全都传送了时,该相关的“异”累加器缓冲区持有用于该RAID条的计算出的奇偶信息。
在步骤224,处理机110控制并飞“异”部件把累加的奇偶信息从该相关的“异”累加器缓冲区读到存储器110里的某存储缓冲区中或者读到一个盘驱动器140上的某存储块中。在这二种情况下,从并飞“异”部件180的读出是通过处理机读或通过对一个盘驱动器的DMA传送进行的。在一种最佳实施方式中,对累加的奇偶信息的读出造成把相关的“异”累加器缓冲区复位到零。
在点230,完成该RAID条的“异”运算,而系统100可以继续处理另一个RAID条。
在一种最佳实施方式中,处理机110可以实际上在不把数据从一个盘驱动器传送到存储器120的某存储缓冲区下执行“异”运算。这在本文中称为对“空”存储缓冲区的传送,因为该运算各方面上都象是对某存储缓冲区进行,唯独实际上不把数据存储在存储器120中。能向一个空存储缓冲区传送是有好处的,这是因为存在用于RAID条的盘操作,在盘操作中需要读或写少于RAID条的全部存储块的存储块(仿佛存储在盘驱动器140上),但是其中又必须为整个RAID条计算奇偶信息。
例如,当只需要写某RAID条的一个存储块时,必须写该存储块以及奇偶信息存储块两者。在已知的RAID存储系统中,必须首先从盘中读出当前奇偶信息以及数据块二者,从而处理机可接着计算新的奇偶信息。然而借助本发明,可把这些块传送到一个空存储缓冲区,从而不使用处理机110或存储器120的资源,只利用并飞“异”部件180计算奇偶信息。
此外,在一种最佳实施方式中,以较少的步骤执行只写RAID条的一个存储块(1)把老的存储块数据以及老的奇偶块数据传送到空存储缓冲区,以利用异飞“异”部件180累加奇偶信息。(2)把新的存储块数据写入到存储块,从而利用并飞“异”部件180在写存储块的同时累加奇偶信息。(3)把累加的奇偶信息从“异”缓冲器190中写入到奇偶存储块里。这些运算不需要处理机110以及存储器120的资源。
为执行对空存储缓冲区的传送,在步骤221中,处理机110不在存储器120中分配一个存储缓冲区,并且建立要在一个盘驱动器140和某不为存储器120识别的存储器地址之间进行DMA传送的数据。在步骤223,执行DMA传送并且并飞“异”部件180监视底层总线160,但存储器120不捕获任何“传送”到该空存储缓冲区的数据。第一并飞“异”部件图3是第一并飞“异”部件的方块图。
第一并飞“异”部件包括一个总线接口310、一个定时及控制部件320、一个按内容寻址存储器(CAM)330以及其它有关部件。“异”缓冲器190和并飞“异”部件180连接,并且包括一个随机存取存储器(RAM)340、一个FIFO(先进先出)队列350以及其它有关部件。虽然概念上“异”缓冲器190包括RAM340,在一种最佳实施方式中RAM340是用外部RAM电路实现的,而FIFO350以及其它有关部件是在ASIC下用并飞“异”部件180的其它电路实现的。
总线接口310和定时及控制部件320提供并飞“异”部件180和底层总线160之间的接口。该接口包括一组通路由底层总线160使用的传递控制信号的控制通路311,传递具有位0到位31的总线地址值的总线地址(BA)通路312以及传递具有位0到位31的总线数据值的总线数据(BD)通路313。采用PCI总线的通信在计算机系统设计中是周知的。
在备择的实施方式中,底层总线160不是PCI总线或不为32位宽,总线数据值具有其它位的标识符(例如位0到位63)并利用非PCI的通信协议进行通信。
“异”缓冲器190包括一个随机存取存储器(RAM)340,后者提供一组32个的“异”累加器缓冲区,每一个缓冲区为1024入口长4字节(32位)宽,即尺寸为4K字节。从而并飞“异”部件180可以同时执行32个不同的RAID条的“异”累加。
“异”缓冲器190还包括一个FIFO队列350,它输入总线数据值的各顺序字并根据这些顺序字执行“并”运算,从而在RAM340里的32个“异”累加器缓冲区中的一个里累加奇偶信息。
CAM330提供一个256个项的组,每个项把20位的总线地址值和RAM340里32个“异”累加器缓冲区中的一个缓冲区的5位相关地址联系起来。CAM330包括一个地址输入端口331,用于选择CAM330里256个项中的一项;一个20位的标记端口332,用于提供由CAM330去匹配的20位的标记;一个5位的值的端口333,用于提供5位的值,以由CAM330把该值和20位的标记联系起来;一个写控制端口34,用于接收写控制信号;以及一个匹配控制端口335,用于提供匹配控制信号。
定时及控制部件320还从匹配控制端口335接收匹配控制信号,并且提供用于对RAM340寻址的15位宽的RAM地址通路(RA)314以及用于控制CAM330的写控制通路315。
总线地址通路312的位12至位31以及总线数据通路313的位12至位31(即,各情况下的20位高位)和CAM多路复用器336的输入端连接,该多路复用器的一个输出端和CAM330的标记端口332连接。标记端口332还提供一个20位的标记,利用激励器337可把该标记耦合到总线数据通路313。值端口处333的相关5位值被耦合到“异”缓冲器190,并且利用一对激励器338还耦合到总线数据通路313。
“异”缓冲器190包括RAM340,RAM340包括一个用于接收15位RAM地址值的RAM地址端口341以及一个RAM数据端口342,RAM数据端口342用于提供存储在RAM340中相关单元里的32位RAM数据值。在概念上把RAM340划分成32个独立的“异”累加器缓冲区,每个缓冲区包含1K的32位的字(即,4K字节)并且占据RAM340中的一组单元,每个单元具有其5位的“异”累加器缓冲区号(0至31)以充当RAM地址值的(五个)高位。
值端口333处的相关5位值被耦合到RAM地址端口341,以提供RAM340中寻址字的5个高位。总线地址通路312的位2至位11(即用于寻址某4字节字的10个低位)提供RAM340中的寻址字的10个低位,并且也被耦合到RAM地址端口341。这样,RAM340在RAM地址端口341接收15位的地址,并在RAM数据端口342提供32位的输出数据字。
RAM数据端口342利用激励器351和总线数据通路313(以及FIFO队列350的一个输入端)连接,并且把FIFO多路复用器352的一个输出端以及一个FIFO寄存器353的一个输入端连接。FIFO队列350具有和一个“异”运算器354连接的输出端,“异”运算器354包括一组32个的“异”门,用于在一个完整的32位字上并行地执行“异”运算。FIFO多路复用器352和“异”运算器354的输出端以及一个“零”输入端355连接。
为了如在步骤221和步骤222中为新的RAID条分配“异”累加器缓冲区,定时及控制部件320使CAM330装入一个用于存储器120中某存储缓冲区的20位的存储器地址(或者用于某空存储缓冲区的一个20位的存储器地址),并把该20位的存储器地址和一个用于32个“异”累加器缓冲区中的一个的5位标识符联系起来。把总线地址通路312的位2至位9耦合到地址输入端口331以便为CAM330提供新项的地址。在定时及控制部件320的控制下,CAM多路复用器336选择用于连接到标记端口332的总线数据通路313。CAM330把来自总线数据通路313的位12至位31的总线数据值插入到地址输入端口331处规定的地址中作为新的20位的标记,并且把来自总线数据通路313的位0至位4的总线数据值插入为新的5位的值。处理机110出于诊断目的也可以读CAM330中某选出的项。
为了如在步骤223中那样监视底层总线223,定时及控制部件320把总线地址通路312选择成和标记端口332连接。当底层总线160上出现的某存储器地址(或者空存储缓冲区内的某地址)的20个高位和CAM330的一个20位的标记匹配时,CAM330把总线地址的位12至31以及相关的5位值和该20位的标记匹配。
相关的5位值用于选择RAM340里的32个“异”累加器缓冲器中的一个,而总线地址通路312的位2至位11用于选择RAM340里该“异”累加器缓冲区中的某个别字,从而把底层总线160上的数据值逐字地读入到FIFO队列350中。定时及控制部件320对FIFO队列350中的各字定序,连同从RAM340读到FIFO寄存器353的某对应字一起通过“异”运算器354,从而对RAM340里相关“异”累加器缓冲区中的数据以及FIFO队列350中的数据执行“异”运算。定时及控制部件320然后使“异”运算的结果被回写到RAM340里的相关“异”累加器缓冲区中。
为了如在步骤224中读出累加的奇偶信息,定时和控制部件320把总线地址通路312选择成和RAM地址端口341连接,以便按顺序地把RAM340里的“异”累加器缓冲区中的各个字读出到总线数据通路313上,同时或者对存储器120或者对一个盘驱动器140发生DMA传送。DMA传送最常见是朝向一个盘驱动器的,但若处理机110必须运行奇偶信息则也可以是朝向存储器120的。出于诊断目的或者如果出于其它原因要读出或操作位于“异”缓冲器190中的奇偶信息时,处理机110也可以直接读RAM340中的项。定时和控制部件320同时向RAM340里的“异”累加器缓冲区中的每个字写入零值,从而把“异”累加器缓冲区复位成统一的零值。
处理机110也可以直接对RAM340中选定的单元进行写,从而在“异”缓冲器190和选定的信息之间直接执行“异”运算。这类似于在步骤223中执行的“异”操作。但是,不是把从CAM330的值端口333输出的5位的值而是把总线数据通路313的位12至位16连接到RAM地址端口341上。
在一种最佳实施方式,按如表3-1中所示使用总线地址通路312上的以及总线数据通路313上的值。表3-1中,地址区间值是用十六进制表示的,并且为总线地址(BA)通路312以及总线数据(BD)通路313显示选定的位区间。表3-1地址区间 寄存器 读/写 数据/运算000000..0000FF PCI总线寄存器 读写按PCI总线协议规定010000..0103FF CAM项 读写读或写CAM项BA<2∶9>CAM项号BD<0∶4>“异”累加器号BD<12∶31>存储缓冲区地址100000..10FFFF “异”累加器缓冲区 读 读并清除“异”累加器缓冲区BA<12∶16>“异”累加器缓冲区号BD<0∶31>结果100000..10FFFF “异”累加器缓冲区 写 对“异”累加器缓冲区的直接“异”BA<12∶16>“异”累加器缓冲区号BD<0∶31>用于直接“异”的数据000000..FFFFFF “异”累加器缓冲区 X 并飞“异”,清除存储缓冲区BA<12∶31>要匹配的存储器地址BD<0∶31>用于并飞“异”的数据200000..7FFFFF空存储缓冲区 写 并飞“异”,清除空存储缓冲区BA<12∶31>要匹配的存储器地址BD<0∶31>用于并飞“异”的数据第二并飞“异”部件图4是第二种并飞“异”部件的方块图。
第二种并飞“异”部件180及“异”缓冲器190类似于第一种并飞“异”部件180及“异”缓冲器190。但是,用第一SRAM430代替CAM330,并且用第二SRAM440代替RAM340。类似于第一种并飞“异”部件180及“异”缓冲器190,虽然在概念上“异”缓冲器190包含SRAM430,但在一种最佳实施方式中SRAM430是利用SRAM电路实现的,而“异”缓冲器190的其它部件是在ASIC下用并飞“异”部件180的其它电路实现的。
第二种并飞“异”部件180的总线接口410类似于第一种并飞“异”部件180的总线接口310,第二种并飞“异”部件180的定时及控制部件420类似于第一种并飞“并”部件180的定时及控制部件320。类似地,总线接口410和定时及控制部件420提供并飞“异”部件180和底层总线160之间的接口。该接口包括一组通路由底层总线160使用的传递控制信号的控制通路411,传递具有位0到位31的总线地址值的总线地址(BA)通路412,以及传递具有位0到位31的总线数据值的总线数据(BD)通路413。
第一SRAM430包括每字为5位的1兆字的存储器,第一SRAM430还包括第一SRAM地址输入端口431;一个写控制输入端口432,用于接收写控制信号;一个5位的第一RAM数据端口433;以及一个有效控制输出端口434(一个用于SRAM430的附加数据位输出端口)用于提供一个充当有效控制信号的输出数据位。总线地址通路412的位2至位21和SRAM多路复用器435的第一输入端连接,总线地址通路412的位12至位31和SRAM多路复用器435的第二输入端连接,而SRAM多路复用器的输出端435和第一SRAM地址输入端口431连接。
定时及控制部件420还从有效控制输出端口434接收有效控制信号,并且提供用于在第二SRAM440中寻址的15位的RAM地址通路(RA)414和用于控制第一SRAM430的写控制通路415。
“异”缓冲器190包括第二SRAM440,后者包括一个用于接收15位的第二SRAM地址值的第二SRAM地址输入端口441,以及一个提供存储在在第二SRAM440的相关单元处的32位SRAM数据值的第二SRAM数据端口442。类似于RAM340,在概念上把第二SRAM440划分成32个独立的“异”累加器缓冲区每个缓冲区包含1K个32位的字(即,4K字节)并且在第二SRAM440中占据一组单元,每个单元具有5位的“异”累加器缓冲区号(从0到31),该号是第二SRAM地址的高位。
和使256个20位的标记组中的每个和一个5位的值关联起来不同,第一SRAM430保持一个表,对于每个可能的20位的标记该表具有一条项、各项的一个有效位以及用于这些带有有效位组的项的5位的值。每个20位的标记代表存储器120里某存储缓冲区中一个可能地址(或空存储缓冲区的地址)的20个高位。每个5位的值代表一个可能的“异”累加器缓冲区号。
第一SRAM数据端口433处的相关5位的值耦合到第二SRAM地址端口41,并提供第二SRAM440中寻址字的5个高位。总线地址通路412的位2至位11(即,用于对某4字节字寻址的10个低位)提供第二SRAM440中寻址字的10个低位,并且还被耦合到第二SRAM地址端口441上。从而,第二SRAM440在第二SRAM地址端口441上接收15位的地址,并提供第二SRAM数据端口442处输出的32位数据字。
第二SRAM数据端口442和第一寄存器450连接,并利用激励器451和总线数据通路413(以及还和第二寄存器452)连接。第一寄存器450以及第二寄存器452和“异”运算器453的各输入端连接,“异”运算器包括一组32个的“异”门,用于并行地在整个32位的字上执行“异”运算。“异”运算器453的输出端以及一个“零”输入端454和“异”多路复用器455的输入端连接;“异”多路复用器455的输出端还和第二SRAM数据端口442连接。
在备择实施方式中,第二寄存器452可用FIFO或其它电路结构替代,尤其当第二SRAM440不能足够快地及时向第二寄存器452准备好结果时。
为了如在步骤221和步骤222中向“异”累加器缓冲区提供新的RAID条,定时及控制部件420使第一SRAM430和存储器120里某存储缓冲区的某20位的存储器地址(或者某空存储缓冲区的某20位的存储器地址)连接,并且把某用于32个“异”累加器缓冲区中的一个缓冲区的5位标识符存储到由该20位的存储器地址规定的单元中。
在定时及控制部件420的控制下,SRAM多路复用器435选出总线地址通路412的位2至位21以连接到第一SRAM地址输入端口431,存储来自总线数据通路413的位0至位4的总线数据值以作为该单元的新的5位值,并且为该单元设置有效位。处理机110也可以出于诊断目的读第一SRAM430中选定的项。
为了如步骤223中那样监视底层总线160,定时及控制部件420选出用于连接到第一SRAM输入端口431的总线地址通路412。底层总线160上出现的存储器地址(或空存储缓冲区内的地址)的20个高位用于对第一SRAM430寻址;当为该单元设置了有效位时,第一SRAM数据端口433对和该20位的存储器地址关联的某“异”累加器缓冲区提供5位的值。
相关的5位值用于选择第二SRAM440里32个“异”累加器缓冲区中的一个缓冲区,而总线地址通路412的位2至位11用于选择第二SRAM440里该“异”累加器缓冲区中的某特定字。逐字地把第二SRAM440中的数据值读到第一寄存器,同时逐字地从底层总线160把数据值复制到第二寄存器452。“异”运算器453对带有从底层总线160移动过来的数据的“异”累加器缓冲区中的数据执行“异”操作。利用第二SRAM数据端口442把“异”运算器453的输出回写到第二SRAM440。
类似于第一种并飞“异”部件180,为了如步骤224中那样读出累加的奇偶信息,定时及控制部件420把总线地址通路选择成和第二SRAM地址端口441连接,从而顺序地把第二SRAM440里的“异”累加器缓冲区中的每个字读到总线数据通路413上,同时对存储器120或者对一个盘驱动器140进行DMA传送。类似于第一种并飞“异”部件180,出于诊断目的或者如果出于其他原因要读出或操作位于“异”缓冲器190中的奇偶信息,处理机110也可以直接读第二SRAM440的项。类似于第一种并飞“异”部件180,定时及控制部件420同时把零值写入到第二SRAM440里的“异”累加器缓冲区的各字中,从而把“异”累加器缓冲区复位成统一的零值。
类似于第一种并飞“异”部件180,处理机110还可以直接对第二SRAM440中的选定单元进行写,从而在“异”缓冲器190的内容和选定的信息之间直接执行“异”运算。
第二种并飞“异”部件180具有这样的额外特性,即,存储器120中和“异”累加器缓冲区相关的存储缓冲区(或空存储缓冲区)的数量不受限于CAM330中项的数量。这允许使用任意宽度的RAID条,并且其中可同时使用多达32个RAID条。通过改变第一SRAM数据端口433的宽度并改变第二SRAM的尺寸,可以修改第二种并飞“异”部件180以改变“异”累加器缓冲区的数量。
在一种最佳实施方式中,对总线地址通路412和总线数据通路413所采用的数值如表4-1中所示。在表4-1中,以十六进制表示地址区间值,并且示出总线地址(BA)通路312和总线数据(BD)通路313的选定的位区间。表4-1地址区间 寄存器 读/写数据/操作000000..0000FF PCI总线寄存器 读写按PCI总线协议规定010000..0103FF 表项读写读或写表项BD<0∶4>“异”累加器号BD<8>表项有效BD<12∶31>存储缓冲区地址100000..10FFFF“异”累加器缓冲区 读 读并清除“异”累加器缓冲区BA<12∶16>“异”累加器缓冲区号BD<0∶31>结果100000..10FFFF“异”累加器缓冲区 写 对“异”累加器缓冲区的直接“异”BA<12∶16>“异”累加器缓冲区号BD<0∶31>用于直接“异”的数据000000..FFFFFF“异”累加器缓冲区 X 并飞“异”,清除存储缓冲区
BA<12∶31>要匹配的存储器地址BD<0∶31>用于并飞“异”的数据200000..7FFFFF空存储缓冲区 写 并飞“异”,清除空存储缓冲区BA<12∶31>要匹配的存储器地址BD<0∶31>用于并飞“异”的数据最佳实施方式第一种并飞“异”部件和其相关的“异”缓冲器190以及第二种并飞“异”部件和其相关的“异”缓冲器190是最佳的实施方式。在研读本申请后,熟练的技术人员清楚,在某些设计限制下第一种并飞“异”部件180和其相关的“异”缓冲器190是最佳的,而在另一些设计限制下第二种并飞“异”部件180和其相关的“异”缓冲器190是最佳的。
例如,在相对小型的但复杂的CAM330比额外的相对大的外部SRAM430便宜的情况下,第一种并飞“异”部件180和其相关的“异”缓冲器190是最佳的;而在相反情况下或者RAID子系统的各条的宽度相对宽的情况下,第二种并飞“异”部件180和其相关的“异”缓冲器190是最佳的。其它的实施方式虽然本文公开最佳的实施方式,在保持在本发明的内容、范围和精神之内下各种修改是可能的,并且在研读本申请后,对于熟练的技术人员这些修改是清楚的。
权利要求书按照条约第19条的修改1.一种方法,包括步骤从一个条中读出至少一个数据块,所述条在多个大容量存储设备(140)中的每个设备上含有一个存储块,所述读出步骤包括沿某总线(130,160)传送来自所述数据块的数据的步骤;以及在执行沿所述总线传送所述数据块的所述步骤的同时,在不干扰所述传送步骤下累加“异”运算(354,453)的结果。
2.如权利要求1中的方法,其中所述读出步骤包括把所述数据块拷贝到一个利用一条存储器总线(130)和一个处理机(110)连接的存储器中;从所述数据块传送数据的所述步骤包括在一条不同于所述存储器总线的辅助总线(160)上传送数据的步骤;以及所述累加步骤响应于所述沿所述辅助总线传送所述数据块的步骤。
3.如权利要求1中的方法,其中所述读出步骤包括从所述多个大容量存储设备的一个设备启动DMA传送(223)的步骤;所述传送数据块的步骤包括执行所述DMA传送的步骤;以及所述累加步骤响应于所述DMA传送。
4.如权利要求1中的方法,其中所述读出步骤包括启动从所述多个大容量存储设备的一个设备到某选定的存储单元的DMA传送(223)的步骤;以及所述存储器忽略所述选定的存储单元,其中所述对所述选定的存储单元的所述DMA传送在不对所述存储器存储数据块下实施累加所述结果。
5.在具有一个处理机(110)、一个存储器(120)、一条和所述处理机及所述存储器连接的存储器总线(130)、多个大容量存储设备(140)以及一条把所述多个大容量存储设备和所述存储器总线连接起来的辅助总线(160)的系统中,一种方法包括步骤
启动所述多个大容量存储设备中至少一个设备和所述存储器中某缓冲区单元之间的DMA操作(223);为所述缓冲区单元中的多个地址监视所述辅助总线;在不干扰所述DMA操作下把和所述多个地址相关的数据拷贝到“异”缓冲器(190)中;以及对所述数据累加“异”运算(354,453)的结果。
6.如权利要求5中的方法,其中所述存储器忽略所述缓冲区单元,其中对所述缓冲器区单元的所述DMA操作在不对所述存储器存储数据下实施累加所述结果。
7.一种系统,包括一个处理机(110),一条和所述处理机连接的存储器总线(130)以及一个和所述存储器总线连接的存储器(120);多个大容量存储设备(140)以及一条把所述多个大容量存储设备和所述存储器总线连接起来的辅助总线(160),其中把所述辅助总线配置成对和从所述多个大容量存储设备中的一个设备传送数据;一个和所述辅助总线连接的部件(180),所述部件包括用于在不干扰所述传送操作下拷贝对和从所述多个大容量存储设备中的一个设备传送的数据的装置,以及累加对所述数据的“异”运算(354,453)的结果的装置(190)。
8.如权利要求7中的系统,其中所述拷贝装置包括多个“异”累加器缓冲区(340,440);一个存储器(330,430),其配置把某选定的存储器地址的一部分和所述多个“异”累加器缓冲区的一个匹配起来;一个和所述存储器以及和所述辅助总线连接的“异”运算器(354,453),其配置成用于对所述存储器中的数据以及和所述选定的存储器地址相关的数据执行“异”运算,和用于把所述“异”运算的结果写入到所述存储设备中。
9.如权利要求7中的系统,包括一个和所述多个大容量存储设备中的一个连接的DMA传送部件(310,320;410,420);其中所述DMA传送部件包括用于识别所述DMA传送部件执行的DMA传送的装置以及用于从所述DMA传送拷贝数据的装置;并且其中所述累加装置响应所述用于识别所述DMA传送的装置。
10.如权利要求7中的系统,包括一个和所述多个大容量存储设备中的一个设备连接的DMA传送部件(310,320;410,420),其配置成执行来自所述多个大容量存储设备中的所述一个设备和来自一个选出的存储单元的DMA传送(223);其中所述存储器忽略所述选定的存储单元,并且其中所述对所述选定的存储单元的DMA传送在不对所述存储器存储数据下实施累加所述结果。
11.在具有一个处理机(110)、一个存储器(120)、一条连接所述处理机和所述存储器的存储器总线(130)、多个大容量存储设备(140)以及一条把所述多个大容量存储设备和所述存储器总线连接起来的辅助总线(160)的系统中,一种数据结构包括多个“异”累加器缓冲区(340,440),每个缓冲区具有对数据执行“异”运算(354,453)的结果;以及一个具有多条项的表,每条项把某存储器地址的一部分和所述多个“并”累加器缓冲区中的一个缓冲区联系起来,所述存储器地址和所述数据相关。
权利要求
1.一种方法,包括步骤从一个条中读出至少一个数据块,所述条在多个大容量存储设备中的每个设备上含有一个存储块,所述读出步骤包括沿总线传送来自所述数据块的数据的步骤;以及在执行沿所述总线传送所述数据的所述步骤的同时,在不干扰所述传送步骤下累加“异”运算的结果。
2.如权利要求1中的方法,其中所述读出步骤包括把所述数据拷贝到一个存储器中,利用一条存储器总线使所述存储器和一个处理机连接;从所述数据块传送数据的所述步骤包括在不同于所述存储器总线的辅助总线上传送数据的步骤;以及所述累加步骤响应于所述沿所述辅助总线传送数据的步骤。
3.如权利要求1中的方法,其中,所述读出步骤包括从所述一个大容量存储设备启动DMA传送的步骤;所述传送数据步骤包括执行所述DMA传送的步骤;以及所述累加步骤响应于所述DMA传送。
4.如权利要求1中的方法,其中所述读出步骤包括启动从所述一个大容量存储部件到某选定的存储单元的DMA传送的步骤;以及所述存储器忽略所述选定的存储单元,其中所述对所述选定的存储单元的所述DMA传送在不对所述存储器存储数据下实施累加所述结果。
5.在具有一个处理机、一个存储器、一条和所述处理机及所述存储器连接的存储器总线、多个大容量存储设备以及一条把所述多个大容量存储设备和所述存储器总线连接起来的第二总线的系统中,一种方法包括步骤启动所述多个大容量存储设备中的至少一个设备和所述存储器中某缓冲区单元之间的DMA操作;为所述缓冲区单元中的多个地址监视所述第二总线;在不干扰所述DMA操作下把和所述多个地址相关的数据拷贝到“异”缓冲器中;以及对所述数据累加“异”运算的结果。
6.如权利要求5中的方法,其中所述存储器忽略所述缓冲区单元,其中对所述选定的存储单元的所述DMA传送在不对所述存储器存储数据下实施对所述结果的累加。
7.一种系统,包括一个处理机,一条和所述处理机连接的存储器总线以及一个和所述存储器总线连接的存储器;多个大容量存储设备以及把所述多个大容量存储设备和所述存储器总线连接起来的一条辅助总线,其中配置所述辅助总线以便向和从所述多个大容量存储设备中的一个设备传送数据;一个和所述辅助总线连接的部件,所述部件包括用于在不干扰所述传送操作下拷贝对和从所述多个大容量存储设备中的一个设备传送的数据的装置,以及用于累加对所述数据的“异”运算的结果的装置。
8.如权利要求7中的系统,其中所述拷贝装置包括多个“异”累加器缓冲区;一个存储器,其配置成把某选定的存储器地址的一部分和所述“异”累加器缓冲区中的一个匹配起来;一个和所述存储器以及和所述辅助总线连接的“异”运算器,其配置成用于对所述存储器中的数据以及和所述选定的存储器地址相关的数据执行“异”运算,和用于把所述“异”运算的结果写入到所述存储器中。
9.如权利要求7中的系统,包括一个和所述一个大容量存储设备连接的DMA传送部件;其中所述部件包括用于识别所述DMA传送部件执行的DMA传送的装置以及用于从所述DMA传送拷贝数据的装置;并且其中所述累加装置响应所述用于识别所述DMA传送的装置。
10.如权利要求7的系统,包括一个和所述一个大容量存储设备连接的DMA传送部件,该DMA传送部件执行来自所述一个大容量存储设备和一个选出的存储单元的DMA传送;其中所述存储器忽略所述选定的存储单元,并且其中所述对所述选定的存储单元的DMA传送在不对所述存储器存储数据下实施累加所述结果。
11.在具有一个处理机、一个存储器、一条连接所述处理机和所述存储器的存储器总线、多个大容量存储设备以及一条把所述多个大容量存储设备和所述存储器总线连接起来的第二总线的系统中,一种数据结构包括多个“异”累加器缓冲区,各个缓冲区具有对数据执行“异”运算的结果;以及一个具有多条项的表,每条项把某存储器地址的一部分和所述“异”累加器缓冲区中的一个缓冲区联系起来,所述存储器地址和所述数据相关。
全文摘要
本发明提供一种不需消耗大量计算资源的执行“异”运算的方法和系统。一个专用处理机和一组盘驱动器连接到相同的总线上;该专用处理机观察对和从盘驱动器的数据传送,并在不需要单独的传送下在对和从盘驱动器传送的数据执行“异”运算。该专用处理机保持一个用于“异”运算的“异”累加器,该累加器记录“异”运算的结果并在处理机的命令下读出该结果。该“异”累加器包括一组用于一组选定的RAID条中的各个RAID条的累加器寄存器。一个存储器(例如按内容寻址的存储器)把一组累加器寄存器和各个选定的RAID条联系起来。
文档编号G06F11/10GK1222986SQ98800381
公开日1999年7月14日 申请日期1998年2月27日 优先权日1997年2月28日
发明者斯蒂芬·R·克雷曼 申请人:网络装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1