一种混合存储系统的制作方法

文档序号:6508083阅读:218来源:国知局
一种混合存储系统的制作方法
【专利摘要】一种混合存储系统,属于计算机存储领域,解决现有混合存储系统需要多个控制器且各控制器所控制的存储介质单一导致的系统复杂和成本高的问题。本发明由N个存储器和一个控制器构成,每个存储器包括控制器通信模块、存储介质和存储器信息模块;控制器包括主机通信模块、负载控制模块、阵列控制模块、地址映射模块、存储器控制模块和缓存。控制器能够识别主机到达的读写请求并判断写请求的冷热程度与大小,进行负载控制,实现多种存储器的混合存储,由于存储器为存储介质芯片和简单的信息存储芯片,降低混合存储系统替换成本;利用控制器中的阵列控制模块进行数据恢复,提高混合存储系统性能和寿命,降低混合存储系统组建以及使用的成本。
【专利说明】ー种混合存储系统
【技术领域】
[0001]本发明属于计算机存储领域,具体涉及ー种混合存储系统。
【背景技术】
[0002]存储系统是计算机系统的ー个重要组成部分。近几十年,计算机硬件技术的各个领域都在高速发展,处理器性能和内存容量都提升了近千倍,而存储器也不断地提高速度和容量,但是由于传统机械硬盘的自身局限性,使得硬盘的读写速度提升难度越来越大,存储系统的瓶颈愈显突出。
[0003]闪存(FLASH Memory)是ー种电可擦除的非易失性半导体存储器,尤其与非型闪存(NAND FLASH)具有存储密度大、功耗低以及抗震性能好等优点,所以基于闪存的固态存储器(Solid State Drive, SSD)应运而生,SSD恰好弥补了机械硬盘的诸多不足,能够提供高速度、低功耗以及抗震耐摔等优良特性,是解决目前存储领域发展难题的方案之一。
[0004]然而,目前SSD有三大制约因素:(1)由于闪存介质是通过对浮栅中注入或擦除电荷来存储信息,这种反复的注入和擦除电荷的操作会使其工作变得不稳定,
[0005]从而使得擦除一定次数后无法继续用来存储数据。随着多层存储単元(Mult1-Level Cell, MLC)的应用以及制程的降低,虽然闪存成本逐渐下降,但闪存存储单元容许的擦除次数不断降低,目前25nmエ艺的MLC闪存的擦除次数只有3000次,这意味着闪存的使用寿命十分有限。(2)由于闪存具有页读写、块擦除,先擦除后写的特性,所以闪存的读写速度并不一致,让基于闪存的固态存储器在一些应用中性能并不理想。(3)目前闪存芯片比机械硬盘的存储单位价格要高出约ー个数量级,由于闪存的特性,为了在其成本与可靠性上进行平衡并以不损失速度为代价,SSD需要更完善的控制器。控制器成本已经占SSD成本的30%以上。
[0006]随着时间推移,固态存储系统并不局限于闪存作为存储介质,也可采用相变随机存储器(PCM)等其他非易失性存储介质。PCM利用硫族化合物在不同相态下电阻率不同来存储数据,能够按位寻址,读写速率比闪存快两个数量级。这类半导体存储器没有NANDFLASH的不足,并且读写速率更高,然而由于目前エ艺问题,PCM的位存储成本比闪存更高。
[0007]现场可编程门阵列(FPGA)作为ー种专用集成电路(ASIC)领域的ー种半定制电路,具有设计周期短、开发费用低、风险小等优势,并且内部有丰富的逻辑资源,可以通过编写硬件描述语言综合各种硬件功能器件。特别是基于静态随机存储器(SRAM)编程技术的FPGA,其内部全部或部分逻辑资源可以实现动态的功能变换,所谓可重构技术,能够很好的节省FPGA内部逻辑资源空间,減少能耗,同时降低产品成本。
[0008]随着各类半导体存储器件的发展,存储架构将会发展为采用各类半导体存储器构成的固态存储系统与传统硬盘混合使用的混合存储系统。现有混合存储系统采用SSD与磁盘混合使用,SSD用于作为磁盘的缓存,见“混合存储系统将推动固态硬盘应用”,《电脑迷》,2010.11 ;惠普公司将全闪存阵列服务器与SAS硬盘服务器在软件层进行融合,达到高性能、高容量的分层存储,见《中国金融电脑》,2012.5。它们均需要多个控制器进行处理,且控制器对于写入数据控制不合理,不能发挥SSD的优势,在磁盘或者SSD失效时,替换成本高,存储系统的升级和功耗成本会非常不理想。PCM加入存储系统以后,异构存储介质的控制变得非常复杂,而混合存储系统失效后的替换成本居高不下,因此,市场未没有出现使用PCM等新型存储介质的混合存储产品。市场急需ー种高性能、低成本的混合存储系统。
[0009]为便于理解本发明,以下对有关概念进行解释:
[0010]闪存的层次:闪存由六个层次组成:通道(Channel)、闪存芯片(chip)、晶圆(die)、分组(plane)、块(block)、页(page);为了提升闪存的速度与容量,通常将多个闪存芯片构成一个通道(Channel),ー个或多个通道构成闪存。
[0011]闪存芯片结构如图7所不,甸个闪存芯片内部有多个晶圆,甸个晶圆内部有多个分组,每个分组内部有多个块,每个块内部有多个页。
[0012]RAIDO:RAID0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。RAID0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。
[0013]RAID1:RAID1又称为镜像(Mirror或Mirroring),它的宗旨是最大限度的保证用户数据的可用性和可修复性。RAID1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外ー个硬盘上,成为镜像数据。由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID1提供最高的数据安全保障,但磁盘利用率为50%,故成本最高。Miiror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如月艮务器和数据库存储等领域。
[0014]RAID5:RAID5是ー种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID5至少需要使用3块硬盘组建,当有数据写入吋,将数据分成两个部分,同时将两部分数据进行异或运算,形成冗余数据作为校验值,两份数据和ー份校验值交错存放在多块磁盘中,当其中1块硬盘出现损坏的时候,从另外2块硬盘上存储的数据可以计算出第3块硬盘的数据内容。
[0015]RAID5可以为系统提供数据安全保障,但保障程度要比RAID1低而磁盘空间利用率要比RAID1高。RAID5具有和RAID0相近似的数据读取速度,只是多了ー个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应ー个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较低。

【发明内容】

[0016]本发明提供ー种混合存储系统,其包括多种存储器和单独控制器,解决现有混合存储系统需要多个控制器且各控制器所控制的存储介质单ー导致的系统复杂和成本高的间题。
[0017]本发明所提供的ー种混合存储系统,由N个存储器和ー个控制器构成,N = 1?128,其特征在于:
[0018]A.所述每个存储器包括控制器通信模块、存储介质和存储器信息模块,控制器通信模块分别与存储介质、存储器信息模块电信号连接;[0019]A1.所述控制器通信模块由高速串行总线和低速串行总线构成;
[0020]高速串行总线将存储器控制模块的存储器通信子模块发送的数据包解析为控制信号,发送给存储介质;将存储介质读出的数据封装为数据包,发送至存储器控制模块;
[0021]低速串行总线接收存储器通信子模块发送的读信号,从存储器信息模块读出存储器的基本信息发送至存储器通信子模块;接收存储器通信子模块发送的写信号和数据,将数据写入存储器通信子模块;
[0022]A2.所述存储介质用于存放数据,为闪存、PCM和磁盘中的ー种或多种;
[0023]A3.所述存储器信息模块存放存储器的基本信息,包括存储器容量、存储介质类型和存储器状态;存储器容量表示存储器内存储介质总容量大小,存储介质类型表示存储器内存储介质类型为闪存、PCM或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效;
[0024]B.所述控制器包括主机通信模块、负载控制模块、阵列控制模块、地址映射模块、存储器控制模块和缓存;存储器控制模块包含通过内部总线一一对应连接的N个可编程子模块和N个存储器通信子模块,并具有一个存储器參数表,各存储器通信子模块由高速串行总线和低速串行总线构成;
[0025]主机通信模块、负载控制模块、阵列控制模块和地址映射模块依次两两之间通过内部总线连接,地址映射模块与存储器控制模块的N个可编程子模块通过内部总线连接,所述缓存分别与主机通信模块、负载控制模块、阵列控制模块、地址映射模块通过内部总线连接;
[0026]每个存储器通信子模块的高速串行总线和低速串行总线分别对应连接存储器的控制器通信模块的高速串行总线和低速串行总线,每个存储器通信子模块的高速串行总线将可编程子模块的控制信号封装成数据包,发送给存储器的控制器通信模块;将来自控制器通信模块的数据包按照Aurora通信协议解析成数据,发送至可编程子模块;
[0027]每个存储器通信子模块的低速串行总线为IIC总线,将存储器控制模块发送的写信号和数据发送至存储器的控制器通信模块;将存储器控制模块发送的读信号发送至存储器通信模块;
[0028]当存储器的存储介质类型分别为闪存、PCM和磁盘时,存储器控制模块中对应的可编程子模块分别配置为闪存控制单元、PCM控制单元或磁盘控制単元;
[0029]所述存储器參数表为NX4的数组,其中N为存储器的序号,每个存储器对应4个表项:存储器通信子模块状态、存储器容量、存储介质类型和存储器状态,存储器通信子模块状态分为连接和未连接,表示存储器通信子模块是否与存储器的控制器通信模块连接,存储器容量表示存储器的存储介质总容量大小,存储介质类型表示存储器的存储介质类型为PCM、闪存或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效;
[0030]所述缓存为SDRAM构成的存储空间,为待写入数据、读取数据的缓冲区;
[0031]B1.所述主机通信模块执行如下操作:
[0032]B1-1.按照主机通信协议标准,对主机发送的请求数据包解析为写请求或读请求;所述请求数据包包括请求地址、请求长度、读写标志、内存地址;读写标志为0,执行B1-2 ;读写标志为1,执行B1-3 ;
[0033]B1-2.将内存地址中请求长度的数据存放在缓存中,作为待写入数据,然后将请求数据包解析为写请求,分别将请求数据包中请求地址、请求长度、内存地址作为写请求的写数据地址、写数据长度、内存地址,将数据存放在缓存中的地址作为写请求的缓存地址,再将写请求发送至负载控制模块;
[0034]B1-3.将请求数据包解析为读请求,分别将请求数据包中请求地址、请求长度、内存地址作为读请求的读数据地址、读数据长度、内存地址;再将读请求发送至地址映射模块,等待地址映射模块发送来的读请求完成包,将其封装成请求完成数据包发送给主机;
[0035]B2.所述负载控制模块执行如下操作:
[0036]B2-1.定义长度为m个单元的数组M,各单元内容初始化为0,m≥1024;
[0037]B2-2.当收到写请求时,其中的写数据地址,通过哈希函数集合Η中的k个独立哈希函数得到k个哈希值,姆个哈希值对应数组Μ的ー个单元地址;将k个哈希值所对应数组Μ的k个单元内容加1,然后判断所述k个单元内容是否都大于阈值T,是则该写请求对应的写入数据为热数据,否则该写请求对应的写入数据为冷数据,T≥IO;
[0038]所述哈希函数集合H = {hi, h2,..., hk}, k < m,哈希值的值域为[0-m-l];
[0039]B2-3.判断对所述写请求中写数据长度是否大于W,是则该写请求对应的写入数据为大块数据,否则该写请求对应的写入数据为小块数据,W = 256KB-4MB ;
[0040]B2-4.经过上述操作,将写请求对应的写入数据分为大块热数据、小块热数据、大块冷数据或小块冷数据,并针对不同类型的写入数据,将对应的写请求中写数据地址转换为存储器地址,加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块;
[0041]B3.所述阵列控制模块执行如下操作:
[0042]B3-1.根据用户设置的RAIDO、RAID1或RAID5阵列类型,从存储器控制模块读取存储器參数表,对不同存储介质的存储器,将负载控制模块送来的第二层写请求中的存储器地址重映射为写数据逻辑地址,将写数据逻辑地址加入第二层写请求中,形成第三层写请求,再将第三层写请求送到地址映射模块;组建RAIDO、RAID1或RAID5的PCM阵列,组建RAID0、RAID1或RAID5的闪存阵列,组建RAIDO、RAID1或RAID5的磁盘阵列;
[0043]B3-2.某存储器失效时,待用户以新的存储器替换该失效存储器后,根据存储器控制模块发送的数据恢复指令,按照阵列类型,阵列控制模块对新的存储器进行有选择的数据恢复:对于RAID0阵列,数据无法恢复,阵列控制模块运行结束;对于RAID1阵列,阵列控制模块将镜像数据拷贝到新的存储器中;对于RAID5阵列,阵列控制模块通过冗余存储器的数据以及校验值,进行异或操作,得到恢复数据,存放入新的存储器中;
[0044]B4.所述地址映射模块执行如下操作:
[0045]地址映射模块维护ー个地址映射表,地址映射表包含一一对应的数据逻辑地址和数据物理地址;
[0046]B4-1.收到第三层写请求时,判断写数据逻辑地址是否在闪存的地址空间,是则执行B4-la,否则执行B4-lb ;
[0047]B4-la.将第三层写请求中的写数据逻辑地址按照地址映射算法转换为存储介质物理地址,然后在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与所述写数据地址相同的数据逻辑地址对应的数据物理地址更新为所述存储介质数据物理地址,并将原数据物理地址标记为失效;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的存储介质物理地址;将所述存储介质物理地址发送至存储器控制模块,执行B4-lc ;
[0048]B4-lb.在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与写数据地址相同的数据逻辑地址对应的数据物理地址更新为第三层写请求中的写数据逻辑地址;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的写数据逻辑地址;将所述写数据逻辑地址发送至存储器控制模块,执行B4_lc ;
[0049]B4-lc.根据第三层写请求中的缓存地址,对缓存中的待写入数据通过校验算法生成校验值,将待写入数据加入校验值后发送至存储器控制模块;
[0050]最后向存储器控制模块发送写数据指令;
[0051]B4-2.收到主机通信模块发来的读请求时,在地址映射表的表项数据逻辑地址中检测是否存在读请求中的读数据地址,是则执行B4_2a,否则向主机通信模块发送读请求完成包,表明读请求错误;
[0052]B4-2a.将与读数据地址相同的数据逻辑地址对应的数据物理地址发送至存储器控制模块,然后向存储器控制模块发送读数据指令;
[0053]B4-2b.待收到存储器控制模块读出数据后,对读取数据通过校验算法生成新校验值,检验新校验值是否与所述校验值相同,是则将读取数据存入缓存中,向主机通信模块发送读请求完成包,表明读请求成功;否则进行B4-2c ;
[0054]B4-2c.根据新校验值和所述校验值,判断读取数据是否能纠错,是则进行纠错,将纠错后的读取数据存入缓存中,向主机通信模块发送读请求完成包,表明读请求成功;否则向主机通信模块发送读请求完成包,表明读请求失败;
[0055]所述读请求完成包包括读数据地址、读数据长度、内存地址、缓存地址和读取状态标志,读数据地址、读数据长度和内存地址分别为读请求的读数据地址、读数据长度、内存地址,缓存地址为读取数据存放在缓存的地址,读取状态标志分为成功、失败和错误三种,分别表示当前数据校验成功、当前数据校验失败以及读数据地址错误;当前数据校验失败定义为存放该待读取数据的存储器失效,提示用户更换存储器;
[0056]B5.所述存储器控制模块执行如下操作:
[0057]B5-1.当混合存储系统上电时,根据存储器的存储介质类型,将存储器控制模块中对应的可编程子模块分别配置为闪存控制单元、PCM控制单元或磁盘控制単元;
[0058]B5-2.判断来自地址映射模块的存储介质物理地址、写数据逻辑地址或数据物理地址是否存在于闪存的物理地址空间,是则执行B5-2a,否则判断所述地址是否存在于PCM的物理地址空间,是则执行B5-2b,否则执行B5-2c ;
[0059]B5-2a.对所述存储介质物理地址、写数据逻辑地址或数据物理地址进行取模运算,得到闪存控制单元号,然后将所述存储介质物理地址、写数据逻辑地址或数据物理地址存放于闪存控制单元号对应的闪存控制単元内的地址寄存器中;收到待写入数据后,将待写入数据存放于相应闪存控制単元内的数据寄存器中,执行B5-3 ;
[0060]B5-2b.对所述存储介质物理地址、写数据逻辑地址或数据物理地址进行取模运算,得到PCM控制单元号,然后将所述存储介质物理地址、写数据逻辑地址或数据物理地址存放于PCM控制单元号对应的PCM控制单元内的地址寄存器中;收到待写入数据后,将待写入数据存放于相应PCM控制单元内的数据寄存器中,执行B5-3 ;
[0061]B5-2c.对所述存储介质物理地址、写数据逻辑地址或数据物理地址进行取模运算,得到磁盘控制单元号,然后将所述存储介质物理地址、写数据逻辑地址或数据物理地址存放于磁盘控制单元号对应的磁盘控制単元内的地址寄存器中;收到待写入数据后,将待写入数据存放于相应磁盘控制単元内的数据寄存器中,执行B5-3 ;
[0062]B5-3.当收到地址映射模块的写数据指令,执行B5_3a ;当收到地址映射模块的读数据指令,执行B5-3b ;
[0063]B5-3a.闪存控制単元、PCM控制单元或磁盘控制単元生成控制信号,将其数据寄存器中的待写入数据通过存储器通信子模块的高速串行总线写入存储器的存储介质相应物理地址中;
[0064]B5-3b.闪存控制单元、PCM控制单元或磁盘控制单元生成控制信号,通过存储器通信子模块的高速串行总线从存储器的存储介质相应物理地址中读取数据,放入数据寄存器中,然后发送至地址映射模块;
[0065]B5-4.当某存储器失效时,待用户以新的存储器替换该失效存储器后,接到外部发送的中断信息,根据新的存储器的存储介质类型,将存储器控制模块中对应的可编程子模块配置为相应的闪存控制単元、PCM控制单元或磁盘控制単元,然后向阵列控制模块发送数据恢复指令。
[0066]所述的混合存储系统,其进ー步特征在干,所述负载控制模块的操作B2-4包括下述步骤:
[0067]B2-4a.从存储器控制模块读取存储器參数表,判断待写入数据的类型,小块热数据,进行B2-4b ;大块冷数据,进行B2-4c ;小块冷数据和大块热数据,进行B2_4d ;
[0068]B2-4b.判断是否存在PCM介质的存储器,是则将写请求中写数据地址转换至PCM介质的物理地址空间,作为存储器地址,进行B2-4e ;否则判断是否存在闪存介质的存储器,是则将写请求中写数据地址转换至闪存介质的物理地址空间,作为存储器地址,进行B2-4e ;否则将写请求中写数据地址转换至磁盘介质的物理地址空间,作为存储器地址,进打 B2_4e ;
[0069]B2-4c.判断是否存在磁盘介质的存储器,是则将写请求中写数据地址换至磁盘介质的物理地址空间,作为存储器地址,进行B2-4e;否则判断是否存在闪存介质的存储器,是则将写请求中写数据地址转换至闪存介质的物理地址空间,作为存储器地址,进行B2-4e ;否则将写请求中写数据地址转换至PCM介质的物理地址空间,作为存储器地址,进打 B2_4e ;
[0070]B2-4d.判断是否存在闪存介质的存储器,是则将写请求中写数据地址转换至闪存介质的物理地址空间,作为存储器地址,进行B2-4e ;否则判断是否存在PCM介质的存储器,是则将写请求中写数据地址转换至PCM介质的物理地址空间,作为存储器地址,进行B2-4e ;否则将写请求中写数据地址转换至磁盘介质的物理地址空间,作为存储器地址,进打 B2_4e ;
[0071]B2-4e.将存储器地址加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块。
[0072]所述的混合存储系统,其进ー步特征在于:[0073](1)所述地址映射模块的操作B4_la中,在将写数据逻辑地址按照地址映射算法转换为存储介质物理地址时,所述地址映射算法包括下述步骤:
[0074](1-1)计算写数据逻辑地址对应闪存的通道号A:
[0075]
【权利要求】
1.一种混合存储系统,由N个存储器和一个控制器构成,N = I-128,其特征在于: A.所述每个存储器包括控制器通信模块、存储介质和存储器信息模块,控制器通信模块分别与存储介质、存储器信息模块电信号连接; Al.所述控制器通信模块由高速串行总线和低速串行总线构成; 高速串行总线将存储器控制模块的存储器通信子模块发送的数据包解析为控制信号,发送给存储介质;将存储介质读出的数据封装为数据包,发送至存储器控制模块; 低速串行总线接收存储器通信子模块发送的读信号,从存储器信息模块读出存储器的基本信息发送至存储器通信子模块;接收存储器通信子模块发送的写信号和数据,将数据写入存储器通信子模块; A2.所述存储介质用于存放数据,为闪存、PCM和磁盘中的一种或多种; A3.所述存储器信息模块存放存储器的基本信息,包括存储器容量、存储介质类型和存储器状态;存储器容量表示存储器内存储介质总容量大小,存储介质类型表示存储器内存储介质类型为闪存、PCM或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效; B.所述控制器包括主机通信模块、负载控制模块、阵列控制模块、地址映射模块、存储器控制模块和缓存;存储器控制模块包含通过内部总线一一对应连接的N个可编程子模块和N个存储器通信子模块,并具有一个存储器参数表,各存储器通信子模块由高速串行总线和低速串行总线构成; 主机通信模块、负载控制模块、阵列控制模块和地址映射模块依次两两之间通过内部总线连接,地址映射模块与存储器控制模块的N个可编程子模块通过内部总线连接,所述缓存分别与主机通信模块、负载控制模块、阵列控制模块、地址映射模块通过内部总线连接; 每个存储器通信子模块的高速串行总线和低速串行总线分别对应连接存储器的控制器通信模块的高速串行总线和低速串行总线,每个存储器通信子模块的高速串行总线将可编程子模块的控制信号封装成数据包,发送给存储器的控制器通信模块;将来自控制器通信模块的数据包按照Aurora通信协议解析成数据,发送至可编程子模块; 每个存储器通信子模块的低速串行总线为IIC总线,将存储器控制模块发送的写信号和数据发送至存储器的控制器通信模块;将存储器控制模块发送的读信号发送至存储器通信模块; 当存储器的存储介质类型分别为闪存、PCM和磁盘时,对应的可编程子模块分别配置为闪存控制单元、PCM控制单元或磁盘控制单元; 所述存储器参数表为NX 4的数组,其中N为存储器的序号,每个存储器对应4个表项:存储器通信子模块状态、存储器容量、存储介质类型和存储器状态,存储器通信子模块状态分为连接和未连接,表示存储器通信子模块是否与存储器的控制器通信模块连接,存储器容量表示存储器的存储介质总容量大小,存储介质类型表示存储器的存储介质类型为闪存、PCM或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效; 所述缓存为SDRAM构成的存储空间,为待写入数据、读取数据的缓冲区; B1.所述主机通信模块执行如下操作: B1-1.按照主机通信协议标准,对主机发送的请求数据包解析为写请求或读请求;所述请求数据包包括请求地址、请求长度、读写标志、内存地址;读写标志为O,执行B1-2 ;读写标志为1,执行B1-3 ; B1-2.将内存地址中请求长度的数据存放在缓存中,作为待写入数据,然后将请求数据包解析为写请求,分别将请求数据包中请求地址、请求长度、内存地址作为写请求的写数据地址、写数据长度、内存地址,将数据存放在缓存中的地址作为写请求的缓存地址,再将写请求发送至负载控制模块; B1-3.将请求数据包解析为读请求,分别将请求数据包中请求地址、请求长度、内存地址作为读请求的读数据地址、读数据长度、内存地址;再将读请求发送至地址映射模块,等待地址映射模块发送来的读请求完成包,将其封装成请求完成数据包发送给主机; B2.所述负载控制模块执行如下操作: B2-1.定义长度为m个单元的数组M,各单元内容初始化为O,m3 1024 ; B2-2.当收到写请求时,其中的写数据地址,通过哈希函数集合H中的k个独立哈希函数得到k个哈希值,每个哈希值对应数组M的一个单元地址;将k个哈希值所对应数组M的k个单元内容加1,然后判断所述k个单元内容是否都大于阈值T,是则该写请求对应的写入数据为热数据,否则该写请求对应的写入数据为冷数据,T-IO; 所述哈希函数集合H = {hj_, h2,..., hk}, k < m,哈希值的值域为[O~m_l]; B2-3.判断对所述写请求中写数据长度是否大于W,是则该写请求对应的写入数据为大块数据,否则该写请求对应的写入数据为小块`数据,W = 256KB~4MB ; B2-4.经过上述操作,将写请求对应的写入数据分为大块热数据、小块热数据、大块冷数据或小块冷数据,并针对不同类型的写入数据,将对应的写请求中写数据地址转换为存储器地址,加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块; B3.所述阵列控制模块执行如下操作: B3-1.根据用户设置的RAIDO、RAIDl或RAID5阵列类型,从存储器控制模块读取存储器参数表,对不同存储介质的存储器,将负载控制模块送来的第二层写请求中的存储器地址重映射为写数据逻辑地址,将写数据逻辑地址加入第二层写请求中,形成第三层写请求,再将第三层写请求送到地址映射模块,组建RAID0、RAID1或RAID5的PCM阵列,组建RAID0、RAIDl或RAID5的闪存阵列,组建RAIDO、RAIDl或RAID5的磁盘阵列; B3-2.某存储器失效时,待用户以新的存储器替换该失效存储器后,根据存储器控制模块发送的数据恢复指令,按照阵列类型,阵列控制模块对新的存储器进行有选择的数据恢复:对于RAIDO阵列,数据无法恢复,阵列控制模块运行结束;对于RAIDl阵列,阵列控制模块将镜像数据拷贝到新的存储器中;对于RAID5阵列,阵列控制模块通过冗余存储器的数据以及校验值,进行异或操作,得到恢复数据,存放入新的存储器中; B4.所述地址映射模块执行如下操作: 地址映射模块维护一个地址映射表,地址映射表包含一一对应的数据逻辑地址和数据物理地址; B4-1.收到第三层写请求时,判断写数据逻辑地址是否在闪存的地址空间,是则执行B4-la,否则执行B4-lb ; B4-la.将第三层写请求中的写数据逻辑地址按照地址映射算法转换为存储介质物理地址,然后在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与所述写数据地址相同的数据逻辑地址对应的数据物理地址更新为所述存储介质数据物理地址,并将原数据物理地址标记为失效;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的存储介质物理地址;将所述存储介质物理地址发送至存储器控制模块,进行B4-lc ; B4-lb.在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与写数据地址相同的数据逻辑地址对应的数据物理地址更新为第三层写请求中的写数据逻辑地址;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的写数据逻辑地址;将所述写数据逻辑地址发送至存储器控制模块,进行B4-lc ; B4-lc.根据第三层写请求中的缓存地址,对缓存中的待写入数据通过校验算法生成校验值,将待写入数据加入校验值后发送至存储器控制模块; 最后向存储器控制模块发送写数据指令; B4-2.收到主机通信模块发来 的读请求时,在地址映射表的表项数据逻辑地址中检测是否存在读请求中的读数据地址,是则执行B4-2a,否则向主机通信模块发送读请求完成包,表明读请求错误; B4-2a.将与读数据地址相同的数据逻辑地址对应的数据物理地址发送至存储器控制模块,然后向存储器控制模块发送读数据指令; B4-2b.待收到存储器控制模块读出数据后,对读取数据通过校验算法生成新校验值,检验新校验值是否与所述校验值相同,是则将读取数据存入缓存中,向主机通信模块发送读请求完成包,表明读请求成功;否则进行B4-2c ; B4-2c.根据新校验值和所述校验值,判断读取数据是否能纠错,是则进行纠错,将纠错后的读取数据存入缓存中,向主机通信模块发送读请求完成包,表明读请求成功;否则向主机通信模块发送读请求完成包,表明读请求失败; 所述读请求完成包包括读取数据地址、读取数据长度、内存地址、缓存地址和读取状态标志,读取数据地址、读取数据长度和内存地址分别为读请求的读取数据地址、读取数据长度、内存地址,缓存地址为读取数据存放在缓存的地址,读取状态标志分为成功、失败和错误三种,分别表示当前数据校验成功、当前数据校验失败以及读数据地址错误;当前数据校验失败定义为存放该待读取数据的存储器失效,提示用户更换存储器; B5.所述存储器控制模块执行如下操作: B5-1.当混合存储系统上电时,根据存储器的存储介质类型,将存储器控制模块中对应的可编程子模块分别配置为PCM控制单元、闪存控制单元或磁盘控制单元; B5-2.判断来自地址映射模块的存储介质物理地址、写数据逻辑地址或数据物理地址是否存在于闪存的物理地址空间,是则执行B5-2a,否则判断所述地址是否存在于PCM的物理地址空间,是则执行B5-2b,否则执行B5-2c ; B5-2a.对所述存储介质物理地址、写数据逻辑地址或数据物理地址进行取模运算,得到闪存控制单元号,然后将所述存储介质物理地址、写数据逻辑地址或数据物理地址存放于闪存控制单元号对应的闪存控制单元内的地址寄存器中;收到待写入数据后,将待写入数据存放于相应闪存控制单元内的数据寄存器中,执行B5-3 ;B5-2b.对所述存储介质物理地址、写数据逻辑地址或数据物理地址进行取模运算,得到PCM控制单元号,然后将所述存储介质物理地址、写数据逻辑地址或数据物理地址存放于PCM控制单元号对应的PCM控制单元内的地址寄存器中;收到待写入数据后,将待写入数据存放于相应PCM控制单元内的数据寄存器中,执行B5-3 ; B5-2c.对所述存储介质物理地址、写数据逻辑地址或数据物理地址进行取模运算,得到磁盘控制单元号,然后将所述存储介质物理地址、写数据逻辑地址或数据物理地址存放于磁盘控制单元号对应的磁盘控制单元内的地址寄存器中;收到待写入数据后,将待写入数据存放于相应磁盘控制单元内的数据寄存器中,执行B5-3 ; B5-3.当收到地址映射模块的写数据指令,执行B5-3a ;当收到地址映射模块的读数据指令,执行B5-3b ; B5-3a.闪存控制单元、PCM控制单元或磁盘控制单元生成控制信号,将其数据寄存器中的待写入数据通过存储器通信子模块的高速串行总线写入存储器的存储介质相应物理地址中; B5-3b.闪存控制单元、PCM控制单元或磁盘控制单元生成控制信号,通过存储器通信子模块的高速串行总线从存储器的存储介质相应物理地址中读取数据,放入数据寄存器中,然后发送至地址映射模块; B5-4.当某存储器失 效时,待用户以新的存储器替换该失效存储器后,接到外部发送的中断信息,根据新的存储器的存储介质类型,将存储器控制模块中对应的可编程子模块配置为相应的PCM控制单元、闪存控制单元或磁盘控制单元,然后向阵列控制模块发送数据恢复指令。
2.如权利要求1所述的混合存储系统,其特征在于,所述负载控制模块的操作B2-4包括下述步骤: B2-4a.从存储器控制模块读取存储器参数表,判断待写入数据的类型,小块热数据,进行B2-4b ;大块冷数据,进行B2-4c ;小块冷数据和大块热数据,进行B2_4d ; B2-4b.判断是否存在PCM介质存储器,是则将写请求中写数据地址转换为PCM存储器的物理地址,作为存储器地址,进行B2-4e ;否则判断是否存在闪存介质存储器,是则将写请求中写数据地址转换为闪存存储器的物理地址,作为存储器地址,进行B2-4e ;否则将写请求中写数据地址转换为磁盘存储器的物理地址,作为存储器地址,进行B2-4e ; B2-4c.判断是否存在磁盘介质存储器,是则将写请求中写数据地址换为磁盘存储器的物理地址,作为存储器地址,进行B2-4e ;否则判断是否存在闪存介质存储器,是则将写请求中写数据地址转换为闪存存储器的物理地址,作为存储器地址,进行B2-4e;否则将写请求中写数据地址转换为PCM存储器的物理地址,作为存储器地址,进行B2-4e ; B2-4d.判断是否存在闪存介质存储器,是则将写请求中写数据地址转换为闪存存储器的物理地址,作为存储器地址,进行B2-4e ;否则判断是否存在PCM介质存储器,是则将写请求中写数据地址转换为PCM存储器的物理地址,作为存储器地址,进行B2-4e ;否则将写请求中写数据地址转换为磁盘存储器的物理地址,作为存储器地址,进行B2-4e ; B2-4e.将存储器地址加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块。
3.如权利要求1或2所述的混合存储系统,其特征在于:(1)所述地址映射模块的操作B4-la中,在将写数据逻辑地址按照地址映射算法转换为存储介质物理地址时,所述地址映射算法包括下述步骤: (1-1)计算写数据逻辑地址对应闪存的通道号A1:
4.如权利要求1或2所述的混合存储系统,其特征在于: 所述存储器控制模块的操作B5-1具体过程如下: B5-la.置存储器通信子模块计数变量i = 1 ; B5-lb.检测第i个存储器通信子模块是否连接存储器的的控制器通信模块,是则将存储器參数表中序号i对应的存储器通信子模块状态设置为已连接,然后执行B5-lc,否则执打 B5_le ; B5-lc.读取存储器信息模块中的信息,写入存储器參数表中序号i对应的存储介质类型和存储器容量,将存储器状态设置为正常,执行B5-ld ; B5-ld.根据存储器參数表中序号i中存储介质类型,将可编程子模块i配置为闪存控制単元、PCM控制单元或磁盘控制単元,执行B5-le ; B5-le.1 = i+1,判断是否i ( N,是则执行B5-lb,否则执行结束; 所述存储器控制模块的操作B5-4具体过程如下: B5-4a.通过中断信息获得新的存储器对应的存储器通信子模块号j,执行B5-4b ;B5-4b.读取新的存储器的存储器信息模块中的信息,更新存储器參数表中序号j对应的存储介质类型和存储器容量,将存储器參数表中序号j对应的存储器状态设置为失效,执行B5-4c ; B5-4c.根据存储器參数表中序号j中存储介质类型,将可编程子模块j配置为闪存控制単元、PCM控制单元或磁盘控制単元,执行B5-4d ; B5-4d.向阵列控制模块发送数据恢复指令,然后将存储器參数表中序号j对应的存储器状态设置为正常,执行结束。
5.如权利要求3所述的混合存储系统,其特征在于: 所述存储器控制模块的操作B5-1具体过程如下: B5-la.置存储器通信子模块计数变量i = 1 ; B5-lb.检测第i个存储器通信子模块是否连接存储器的控制器通信模块,是则将存储器參数表中序号i对应的存储器通信子模块状态设置为已连接,然后执行B5-lc,否则执行B5-le ; B5-lc.读取存储器信息模块中的信息,写入存储器參数表中序号i对应的存储介质类型和存储器容量,将存储器状态设置为正常,执行B5-ld ; B5-ld.根据存储器參数表中序号i中存储介质类型,将可编程子模块i配置为闪存控制単元、PCM控制单元或磁盘控制単元,执行B5-le ; B5-le.1 = i+1,判断是否i ( N,是则执行B5-lb,否则执行结束; 所述存储器控制模块的操作B5-4具体过程如下: B5-4a.通过中断信息获得新的存储器对应的存储器通信子模块号j,执行B5-4b ;B5-4b.读取新的存储器的存储器信息模块中的信息,更新存储器參数表中序号j对应的存储介质类型和存储器容量 ,将存储器參数表中序号j对应的存储器状态设置为失效,执行B5-4c ; B5-4c.根据存储器參数表中序号j中存储介质类型,将可编程子模块j配置为闪存控制単元、PCM控制单元或磁盘控制単元,执行B5-4d ; B5-4d.向阵列控制模块发送数据恢复指令,然后将存储器參数表中序号j对应的存储器状态设置为正常,执行结束。
【文档编号】G06F3/06GK103455283SQ201310362037
【公开日】2013年12月18日 申请日期:2013年8月19日 优先权日:2013年8月19日
【发明者】童薇, 冯丹, 刘景宁, 苏福钦, 张建权 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1