CN103455283B - 一种混合存储*** - Google Patents
一种混合存储*** Download PDFInfo
- Publication number
- CN103455283B CN103455283B CN201310362037.4A CN201310362037A CN103455283B CN 103455283 B CN103455283 B CN 103455283B CN 201310362037 A CN201310362037 A CN 201310362037A CN 103455283 B CN103455283 B CN 103455283B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- memory
- control module
- write
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种混合存储***,属于计算机存储领域,解决现有混合存储***需要多个控制器且各控制器所控制的存储介质单一导致的***复杂和成本高的问题。本发明由N个存储器和一个控制器构成,每个存储器包括控制器通信模块、存储介质和存储器信息模块;控制器包括主机通信模块、负载控制模块、阵列控制模块、地址映射模块、存储器控制模块和缓存。控制器能够识别主机到达的读写请求并判断写请求的冷热程度与大小,进行负载控制,实现多种存储器的混合存储,由于存储器为存储介质芯片和简单的信息存储芯片,降低混合存储***替换成本;利用控制器中的阵列控制模块进行数据恢复,提高混合存储***性能和寿命,降低混合存储***组建以及使用的成本。
Description
技术领域
本发明属于计算机存储领域,具体涉及一种混合存储***。
背景技术
存储***是计算机***的一个重要组成部分。近几十年,计算机硬件技术的各个领域都在高速发展,处理器性能和内存容量都提升了近千倍,而存储器也不断地提高速度和容量,但是由于传统机械硬盘的自身局限性,使得硬盘的读写速度提升难度越来越大,存储***的瓶颈愈显突出。
闪存(FLASHMemory)是一种电可擦除的非易失性半导体存储器,尤其与非型闪存(NANDFLASH)具有存储密度大、功耗低以及抗震性能好等优点,所以基于闪存的固态存储器(SolidStateDrive,SSD)应运而生,SSD恰好弥补了机械硬盘的诸多不足,能够提供高速度、低功耗以及抗震耐摔等优良特性,是解决目前存储领域发展难题的方案之一。
然而,目前SSD有三大制约因素:(1)由于闪存介质是通过对浮栅中注入或擦除电荷来存储信息,这种反复的注入和擦除电荷的操作会使其工作变得不稳定,从而使得擦除一定次数后无法继续用来存储数据。随着多层存储单元(Multi-LevelCell,MLC)的应用以及制程的降低,虽然闪存成本逐渐下降,但闪存存储单元容许的擦除次数不断降低,目前25nm工艺的MLC闪存的擦除次数只有3000次,这意味着闪存的使用寿命十分有限。(2)由于闪存具有页读写、块擦除,先擦除后写的特性,所以闪存的读写速度并不一致,让基于闪存的固态存储器在一些应用中性能并不理想。(3)目前闪存芯片比机械硬盘的存储单位价格要高出约一个数量级,由于闪存的特性,为了在其成本与可靠性上进行平衡并以不损失速度为代价,SSD需要更完善的控制器。控制器成本已经占SSD成本的30%以上。
随着时间推移,固态存储***并不局限于闪存作为存储介质,也可采用相变随机存储器(PCM)等其他非易失性存储介质。PCM利用硫族化合物在不同相态下电阻率不同来存储数据,能够按位寻址,读写速率比闪存快两个数量级。这类半导体存储器没有NANDFLASH的不足,并且读写速率更高,然而由于目前工艺问题,PCM的位存储成本比闪存更高。
现场可编程门阵列(FPGA)作为一种专用集成电路(ASIC)领域的一种半定制电路,具有设计周期短、开发费用低、风险小等优势,并且内部有丰富的逻辑资源,可以通过编写硬件描述语言综合各种硬件功能器件。特别是基于静态随机存储器(SRAM)编程技术的FPGA,其内部全部或部分逻辑资源可以实现动态的功能变换,所谓可重构技术,能够很好的节省FPGA内部逻辑资源空间,减少能耗,同时降低产品成本。
随着各类半导体存储器件的发展,存储架构将会发展为采用各类半导体存储器构成的固态存储***与传统硬盘混合使用的混合存储***。现有混合存储***采用SSD与磁盘混合使用,SSD用于作为磁盘的缓存,见“混合存储***将推动固态硬盘应用”,《电脑迷》,2010.11;惠普公司将全闪存阵列服务器与SAS硬盘服务器在软件层进行融合,达到高性能、高容量的分层存储,见《中国金融电脑》,2012.5。它们均需要多个控制器进行处理,且控制器对于写入数据控制不合理,不能发挥SSD的优势,在磁盘或者SSD失效时,替换成本高,存储***的升级和功耗成本会非常不理想。PCM加入存储***以后,异构存储介质的控制变得非常复杂,而混合存储***失效后的替换成本居高不下,因此,市场未没有出现使用PCM等新型存储介质的混合存储产品。市场急需一种高性能、低成本的混合存储***。
为便于理解本发明,以下对有关概念进行解释:
闪存的层次:闪存由六个层次组成:通道(Channel)、闪存芯片(chip)、晶圆(die)、分组(plane)、块(block)、页(page);为了提升闪存的速度与容量,通常将多个闪存芯片构成一个通道(Channel),一个或多个通道构成闪存。
闪存芯片结构如图7所示,每个闪存芯片内部有多个晶圆,每个晶圆内部有多个分组,每个分组内部有多个块,每个块内部有多个页。
RAID0:RAID0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,***有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。RAID0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。
RAID1:RAID1又称为镜像(Mirror或Mirroring),它的宗旨是最大限度的保证用户数据的可用性和可修复性。RAID1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上,成为镜像数据。由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID1提供最高的数据安全保障,但磁盘利用率为50%,故成本最高。Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。
RAID5:RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID5至少需要使用3块硬盘组建,当有数据写入时,将数据分成两个部分,同时将两部分数据进行异或运算,形成冗余数据作为校验值,两份数据和一份校验值交错存放在多块磁盘中,当其中1块硬盘出现损坏的时候,从另外2块硬盘上存储的数据可以计算出第3块硬盘的数据内容。
RAID5可以为***提供数据安全保障,但保障程度要比RAID1低而磁盘空间利用率要比RAID1高。RAID5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较低。
发明内容
本发明提供一种混合存储***,其包括多种存储器和单独控制器,解决现有混合存储***需要多个控制器且各控制器所控制的存储介质单一导致的***复杂和成本高的问题。
本发明所提供的一种混合存储***,由N个存储器和一个控制器构成,N=1~128,其特征在于:
A.每个存储器包括控制器通信模块、存储介质和存储器信息模块,控制器通信模块分别与存储介质、存储器信息模块电信号连接;
A1.所述控制器通信模块由高速串行总线和低速串行总线构成;
高速串行总线将存储器控制模块的存储器通信子模块发送的数据包解析为控制信号,发送给存储介质;将存储介质读出的数据封装为数据包,发送至存储器控制模块;
低速串行总线接收存储器通信子模块发送的读信号,从存储器信息模块读出存储器的基本信息发送至存储器通信子模块;接收存储器通信子模块发送的写信号和数据,将数据写入存储器通信子模块;
A2.所述存储介质用于存放数据,为闪存、PCM和磁盘中的一种或多种;
A3.所述存储器信息模块存放存储器的基本信息,包括存储器容量、存储介质类型和存储器状态;存储器容量表示存储器内存储介质总容量大小,存储介质类型表示存储器内存储介质类型为闪存、PCM或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效;
B.所述控制器包括主机通信模块、负载控制模块、阵列控制模块、地址映射模块、存储器控制模块和缓存;存储器控制模块包含通过内部总线一一对应连接的N个可编程子模块和N个存储器通信子模块,并具有一个存储器参数表,各存储器通信子模块由高速串行总线和低速串行总线构成;
主机通信模块、负载控制模块、阵列控制模块和地址映射模块依次两两之间通过内部总线连接,地址映射模块与存储器控制模块的N个可编程子模块通过内部总线连接,所述缓存分别与主机通信模块、负载控制模块、阵列控制模块、地址映射模块通过内部总线连接;
每个存储器通信子模块的高速串行总线和低速串行总线分别对应连接存储器的控制器通信模块的高速串行总线和低速串行总线,每个存储器通信子模块的高速串行总线将可编程子模块的控制信号封装成数据包,发送给存储器的控制器通信模块;将来自控制器通信模块的数据包按照Aurora通信协议解析成数据,发送至可编程子模块;
每个存储器通信子模块的低速串行总线为IIC总线,将存储器控制模块发送的写信号和数据发送至存储器的控制器通信子模块;将存储器控制模块发送的读信号发送至存储器的控制器通信子模块;
当存储器的存储介质类型分别为闪存、PCM和磁盘时,存储器控制模块中对应的可编程子模块分别配置为闪存控制单元、PCM控制单元或磁盘控制单元;
所述存储器参数表为N×4的数组,其中N为存储器的序号,每个存储器对应4个表项:存储器通信子模块状态、存储器容量、存储介质类型和存储器状态,存储器通信子模块状态分为连接和未连接,表示存储器通信子模块是否与存储器的控制器通信模块连接,存储器容量表示存储器的存储介质总容量大小,存储介质类型表示存储器的存储介质类型为PCM、闪存或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效;
所述缓存为SDRAM构成的存储空间,为待写入数据、读取数据的缓冲区;
B1.所述主机通信模块执行如下操作:
B1-1.按照主机通信协议标准,对主机发送的请求数据包解析为写请求或读请求;所述请求数据包包括请求地址、请求长度、读写标志、内存地址;读写标志为0,执行B1-2;读写标志为1,执行B1-3;
B1-2.将内存地址中请求长度的数据存放在缓存中,作为待写入数据,然后将请求数据包解析为写请求,分别将请求数据包中请求地址、请求长度、内存地址作为写请求的写数据地址、写数据长度、内存地址,将数据存放在缓存中的地址作为写请求的缓存地址,再将写请求发送至负载控制模块;
B1-3.将请求数据包解析为读请求,分别将请求数据包中请求地址、请求长度、内存地址作为读请求的读数据地址、读数据长度、内存地址;再将读请求发送至地址映射模块,等待地址映射模块发送来的读请求完成包,将其封装成请求完成数据包发送给主机;
B2.所述负载控制模块执行如下操作:
B2-1.定义长度为m个单元的数组M,各单元内容初始化为0,m≥1024;
B2-2.当收到写请求时,其中的写数据地址,通过哈希函数集合H中的k个独立哈希函数得到k个哈希值,每个哈希值对应数组M的一个单元地址;将k个哈希值所对应数组M的k个单元内容加1,然后判断所述k个单元内容是否都大于阈值T,是则该写请求对应的写入数据为热数据,否则该写请求对应的写入数据为冷数据,T≥10;
所述哈希函数集合H={h1,h2,…,hk},k<m,哈希值的值域为[0~m-1];
B2-3.判断对所述写请求中写数据长度是否大于W,是则该写请求对应的写入数据为大块数据,否则该写请求对应的写入数据为小块数据,W=256KB~4MB;
B2-4.经过上述操作,将写请求对应的写入数据分为大块热数据、小块热数据、大块冷数据或小块冷数据,并针对不同类型的写入数据,将对应的写请求中写数据地址转换为存储器地址,加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块;
B3.所述阵列控制模块执行如下操作:
B3-1.根据用户设置的RAID0、RAID1或RAID5阵列类型,从存储器控制模块读取存储器参数表,对不同存储介质的存储器,将负载控制模块送来的第二层写请求中的存储器地址重映射为写数据逻辑地址,将写数据逻辑地址加入第二层写请求中,形成第三层写请求,再将第三层写请求送到地址映射模块;组建RAID0、RAID1或RAID5的PCM阵列,组建RAID0、RAID1或RAID5的闪存阵列,组建RAID0、RAID1或RAID5的磁盘阵列;
B3-2.某存储器失效时,待用户以新的存储器替换该失效存储器后,根据存储器控制模块发送的数据恢复指令,按照阵列类型,阵列控制模块对新的存储器进行有选择的数据恢复:对于RAID0阵列,数据无法恢复,阵列控制模块运行结束;对于RAID1阵列,阵列控制模块将镜像数据拷贝到新的存储器中;对于RAID5阵列,阵列控制模块通过冗余存储器的数据以及校验值,进行异或操作,得到恢复数据,存放入新的存储器中;
B4.所述地址映射模块执行如下操作:
地址映射模块维护一个地址映射表,地址映射表包含一一对应的数据逻辑地址和数据物理地址;
B4-1.收到第三层写请求时,判断写数据逻辑地址是否在闪存的地址空间,是则执行B4-1a,否则执行B4-1b;
B4-1a.将第三层写请求中的写数据逻辑地址按照地址映射算法转换为存储介质物理地址,然后在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与所述写数据地址相同的数据逻辑地址对应的数据物理地址更新为所述存储介质数据物理地址,并将原数据物理地址标记为失效;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的存储介质物理地址;将所述存储介质物理地址发送至存储器控制模块,执行B4-1c;
B4-1b.在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与写数据地址相同的数据逻辑地址对应的数据物理地址更新为第三层写请求中的写数据逻辑地址;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的写数据逻辑地址;将所述写数据逻辑地址发送至存储器控制模块,执行B4-1c;
B4-1c.根据第三层写请求中的缓存地址,对缓存中的待写入数据通过校验算法生成校验值,将待写入数据加入校验值后发送至存储器控制模块;
最后向存储器控制模块发送写数据指令;
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控制单元或磁盘控制单元,然后向阵列控制模块发送数据恢复指令。
所述的混合存储***,其进一步特征在于,所述负载控制模块的操作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.将存储器地址加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块。
所述的混合存储***,其进一步特征在于:
(1)所述地址映射模块的操作B4-1a中,在将写数据逻辑地址按照地址映射算法转换为存储介质物理地址时,所述地址映射算法包括下述步骤:
(1-1)计算写数据逻辑地址对应闪存的通道号A1:
式中,LA为写数据逻辑地址,AN1为一个晶圆内的分组数量,AN2为芯片内的晶圆数量,AN3为通道内芯片数量,AN4为通道数量;
(1-2)计算写数据逻辑地址对应通道内的芯片号A2:
A2=LA%AN3;
(1-3)计算写数据逻辑地址对应芯片内的晶圆号A3:
(1-4)计算写数据逻辑地址对应晶元内的分组号A4:
(1-5)通过写数据逻辑地址的计算找到A1通道,在A1通道内找到A2芯片,在A2芯片中找到A3晶圆,在A3晶圆中找到A4分组,在A4分组中顺序分配一个空闲的物理地址,作为存储介质物理地址;
(2)所述地址映射模块的操作B4-1c和B4-2b中,所述校验算法包括下述步骤:
(2-1)置CP0~CP5为0、置RP0~RP15为0、置I0、I1为1;
其中,6比特CP0~CP5为列校验值,16比特RP0~RP15为行校验值,2比特I0、I1为空闲位,共计24比特构成3字节校验值;
(2-2)对每流过的8比特数据,通过二进制数据计数器C进行计数,同时计算列校验值:
CP0=B0∧B2∧B4∧B6∧CP0,
CP1=B1∧B3∧B5∧B7∧CP1,
CP2=B0∧B1∧B4∧B5∧CP2,
CP3=B2∧B3∧B6∧B7∧CP3,
CP4=B0∧B1∧B2∧B3∧CP4,
CP5=B4∧B5∧B6∧B7∧CP5;
其中待写入数据或读取数据位宽均为8比特,各比特记为:B0~B7;
所述二进制数据计数器C具有8比特位,各比特位记为:C0~C7,计数范围0~255;
(2-3)通过对B0~B7进行异或运算,得到字节校验和K,同时计算行校验值:
K=B0∧B1∧B2∧B3∧B4∧B5∧B6∧B7;
判断C0是否为0,是则RP0=K∧RP0;否则RP1=K∧RP1;
判断C1是否为0,是则RP2=K∧RP2;否则RP3=K∧RP3;
判断C2是否为0,是则RP4=K∧RP4;否则RP5=K∧RP5;
判断C3是否为0,是则RP6=K∧RP6;否则RP7=K∧RP7;
判断C4是否为0,是则RP8=K∧RP8;否则RP9=K∧RP9;
判断C5是否为0,是则RP10=K∧RP10;否则RP11=K∧RP11;
判断C6是否为0,是则RP12=K∧RP12;否则RP13=K∧RP13;
判断C7是否为0,是则RP14=K∧RP14;否则RP15=K∧RP15;
(2-4)判断是否C0~C7全为1,是则生成3字节校验值,否则转(2-2);
(3)所述地址映射模块的操作B4-2b中,检验新校验值是否与所述校验值相同,具体操作为:
将新校验值中6比特列校验值及16比特行校验值分别对应与所述校验值中6比特列校验值及16比特行校验值进行异或运算,判断各异或运算结果是否均为0,是则新校验值与所述校验值相同,否则新校验值与所述校验值不相同;
(4)所述地址映射模块的操作B4-2c,具体包括下述步骤:
(4-1)将新的行校验值RP0′~RP15′和新的列校验值CP0′~CP5′分别对应与数据写入时加入的行校验值RP0~RP15和列校验值CP0~CP5进行异或运算,判断异或运算结果为1的个数是否为11,是则表示读取数据可以纠错,执行(4-2),否则表示读取数据出现无法纠正的错误,向主机通信模块发送读请求完成包,表明读请求失败;
(4-2)读取数据存在1个比特位错误,对于256字节数据,先确定出错字节E1:
E1=(RP15′∧RP15)(RP13′∧RP13)(RP11′∧RP11)(RP9′∧RP9)(RP7′∧RP7)(RP5′∧RP5)(RP3′∧RP3)(RP1′∧RP1);
再确定该字节中出错的比特位E2:
E2=(CP5′∧CP5)(CP3′∧CP3)(CP1′∧CP1);
(4-3)对读取数据的E1字节中E2比特位的数值进行取反运算,得到纠错后读取数据,将其存入缓存中,向主机通信模块发送读请求完成包,表明读请求成功。
所述的混合存储***,其进一步特征在于:
所述存储器控制模块的操作B5-1具体过程如下:
B5-1a.置存储器通信子模块计数变量i=1;
B5-1b.检测第i个存储器通信子模块是否连接存储器的控制器通信模块,是则将存储器参数表中序号i对应的存储器通信子模块状态设置为已连接,然后执行B5-1c,否则执行B5-1e;
B5-1c.读取存储器信息模块中的存储器容量和存储器介质类型信息,写入存储器参数表中序号i对应的存储器容量和存储介质类型中,将存储器状态设置为正常,执行B5-1d;
B5-1d.根据存储器参数表中序号i中存储介质类型,将可编程子模块i配置为闪存控制单元、PCM控制单元或磁盘控制单元,执行B5-1e;
B5-1e.i=i+1,判断是否i≤N,是则执行B5-1b,否则执行结束;
所述存储器控制模块的操作B5-4具体过程如下:
B5-4a.通过中断信息获得新的存储器对应的存储器通信子模块号j,执行B5-4b;
B5-4b.读取新的存储器的存储器信息模块中的存储器容量和存储器介质类型信息,更新存储器参数表中序号j对应的存储器容量和存储介质类型,将存储器参数表中序号j对应的存储器状态设置为失效,执行B5-4c;
B5-4c.根据存储器参数表中序号j中存储介质类型,将可编程子模块j配置为闪存控制单元、PCM控制单元或磁盘控制单元,执行B5-4d;
B5-4d.向阵列控制模块发送数据恢复指令,然后将存储器参数表中序号j对应的存储器状态设置为正常,执行结束。
本发明中,所述可编程子模块为一块基于静态随机存储器(SRAM)的可编程逻辑阵列内部的一片区域,其静态随机存储器内部存放实现闪存控制单元、PCM控制单元和磁盘控制单元的比特流,存储器控制模块对实现三种控制单元的比特流进行切换,可以将可编程子模块配置为闪存控制单元、PCM控制单元或磁盘控制单元;
所述闪存控制单元包括地址寄存器、数据寄存器、指令寄存器、状态寄存器和命令状态机,完成从闪存对应物理地址写入数据或读出数据;状态寄存器表示闪存读数据和写数据是否完成;命令状态机在指令寄存器写入读数据指令和写数据指令的时候进行译码,读数据指令的状态转移过程为:空闲状态→指令译码→送入读数据指令→送入读数据地址→等待读数据完成→读出数据→空闲状态;写数据指令的状态转移过程为:空闲状态→指令译码→送入写数据指令→送入写数据地址→送入写入数据→等待写数据完成→空闲状态;命令状态机根据不同的状态将控制信号发送至存储器通信子模块中;
所述PCM控制单元包括地址寄存器、数据寄存器、指令寄存器、状态寄存器和命令状态机,完成从PCM对应的物理地址写入数据和读出数据;状态寄存器表示PCM的读写命令是否完成;命令状态机在指令寄存器写入读数据指令和写数据指令的时候进行译码,读数据指令的状态转移过程为:空闲状态→指令译码→送入读数据指令→送入读数据地址→读出数据→空闲状态;写数据指令的状态转移过程为:空闲状态→指令译码→送入写数据指令→送入写数据地址和写入数据→等待写数据完成→空闲状态;命令状态机根据不同的状态将控制信号发送至存储器通信子模块中;
所述磁盘控制单元包括地址寄存器、数据寄存器、指令寄存器、状态寄存器和命令控制知识产权核,完成从磁盘对应的物理地址写入数据和读出数据;所述知识产权核可以使用北京奇作电子有限公司的IP-SATA主控制器(http://www.sizoom.com/index.php/products/ipproducts/12-sata)、美国CEVA公司的CEVA-SATAIP(http://www.ceva-dsp.com/CEVA-SATA)、美国Xilinx公司的SATAI/IIHostController(http://china.xilinx.com/products/intellectual-property/ASICSWS_SATA_H1.htm)或者美国Altera公司的IntelliPropSATAHostCore(http://www.altera.com/products/ip/iup/additional_functions_iup/m-intelliprop-sata-host.html?GSA_pos=1&WT.oss_r=1&WT.oss=sata)。
本发明包含控制器和多种存储器,控制器与多种存储器分离设计,控制器能够识别主机到达的读写请求并判断写请求的冷热程度与大小,进行负载控制,实现多种存储器的混合存储,可以通过存储控制模块中的可编程子模块对不同介质类型的存储器进行控制,提高混合存储***的可扩展性及性能;当存储器存储介质失效时只需要使用新的存储器替换失效存储器,而不需要更换控制器;并且由于存储器为存储介质芯片和简单的信息存储芯片,能够有效降低混合存储***替换成本;能够利用控制器中的阵列控制模块进行数据恢复,有效提高混合存储***性能和寿命,降低混合存储***组建以及使用的成本。
附图说明
图1为本发明实施例的结构示意图;
图2为本发明实施例的控制器结构示意图;
图3为本发明实施例的存储器结构示意图;
图4为存储器控制模块结构示意图;
图5为负载控制模块操作流程示意图;
图6为地址映射模块操作流程示意图;
图7为存储器控制模块操作流程示意图;
图8为存储器控制模块初始化配置流程示意图;
图9为存储器控制模块在存储器失效后配置流程示意图;
图10为闪存芯片中存储部分结构示意图。
具体实施方式
以下结合实施例和附图对本发明做进一步说明。
如图1所示,本发明实施例由3个存储器和一个控制器构成,控制器与3个存储器分别通过外部接口进行连接,连接方式包括插槽、子母卡或者线缆;
如图2所示,控制器由主机通信模块、负载控制模块、阵列控制模块、缓存、地址映射模块和存储器控制模块构成;
主机通信模块按照主机通信协议标准,对接收的数据包解析为写请求和读请求,分别发送至负载控制模块和地址映射模块,本发明实施例通信协议标准为PCIe;负载控制模块获得当前连接的存储器存储介质类型和大小等参数,对到来的写请求中写入数据地址进行冷热数据识别和大小识别,然后进行地址转换,将地址转换后的写请求地址封装成为第二层写请求发送至阵列控制模块;阵列控制模块读取存储器参数表中的存储介质类型,对不同存储介质类型的存储器分别组建阵列,并生成第三层写请求;地址映射模块在写请求到达后判断第三层的写数据逻辑地址,并根据写入存储介质的不同分别加入地址映射表,同时对读请求通过地址映射表查询物理地址;存储器控制模块内通过多种类型存储介质的控制单元完成对存储器的存储介质的读写;
如图3所示,存储器包含控制器通信模块、存储器信息模块和存储介质;控制器通信模块与控制器的存储器通信子模块连接,分别具备高速串行总线与低速串行总线;存储器信息模块用于存储存储器的基本信息;存储介质为存储数据的设备,为闪存、PCM或磁盘中的一种或多种;
本发明实施例有三个存储器,存储器的存储介质分别为闪存、PCM和磁盘;
如图4所示,存储器控制模块内部包含了3个可编程子模块和3个存储器通信子模块,每个可编程子模块与存储器通信子模块相对应,存储器通信子模块包含高速串行总线和低速串行总线,与存储器的控制器通信子模块连接;本发明实施例中三个可编程子模块初始化被配置成为闪存控制单元、PCM控制单元和磁盘控制单元;
如图5所示,负载控制模块的操作流程具体步骤如下:
B2-1.定义数组M[m],用于写数据地址冷热识别,本实施例中m=1024;
B2-2.收到写请求后,通过哈希函数集合H中的k个独立哈希函数得到k个哈希值,每个哈希值对应数组M的一个单元地址;
将k个哈希值所对应数组M的k个单元内容加1,然后判断所述k个单元内容是否都大于阈值T,是则该写请求对应的写入数据为热数据,否则该写请求对应的写入数据为冷数据,本实施例中T=50,执行B2-3;
B2-3.判断对所述写请求中写数据长度是否大于W,是则该写请求对应的写入数据为大块数据,否则该写请求对应的写入数据为小块数据,本实施例中W=512KB;
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.将存储器地址加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块,执行结束;
如图6所示,地址映射模块操作流程具体步骤如下:
B4-1.收到第三层写请求时,判断写数据逻辑地址是否在闪存的地址空间,是则执行B4-1a,否则执行B4-1b;
B4-1a.将第三层写请求中的写数据逻辑地址按照地址映射算法转换为存储介质物理地址,然后在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与所述写数据地址相同的数据逻辑地址对应的数据物理地址更新为所述存储介质数据物理地址,并将原数据物理地址标记为失效;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的存储介质物理地址;将所述存储介质物理地址发送至存储器控制模块,执行B4-1c;
B4-1b.在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与写数据地址相同的数据逻辑地址对应的数据物理地址更新为第三层写请求中的写数据逻辑地址;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的写数据逻辑地址;将所述写数据逻辑地址发送至存储器控制模块,执行B4-1c;
B4-1c.根据第三层写请求中的缓存地址,对缓存中的待写入数据通过校验算法生成校验值,将待写入数据加入校验值后发送至存储器控制模块;
最后向存储器控制模块发送写数据指令;
B4-2.收到主机通信模块发来的读请求时,在地址映射表的表项数据逻辑地址中检测是否存在读请求中的读数据地址,是则执行B4-2a,否则读取状态标志设置为-2,向主机通信模块发送读请求完成包,表明读请求错误;
B4-2a.将与读数据地址相同的数据逻辑地址对应的数据物理地址发送至存储器控制模块,然后向存储器控制模块发送读数据指令;
B4-2b.待收到存储器控制模块读出数据后,对读取数据通过校验算法生成新校验值,检验新校验值是否与所述校验值相同,是则将读取数据存入缓存中,读取状态标志设置为0,向主机通信模块发送读请求完成包,表明读请求成功;否则进行B4-2c;
B4-2c.根据新校验值和所述校验值,判断读取数据是否能纠错,是则进行纠错,将纠错后的读取数据存入缓存中,读取状态标志设置为0,向主机通信模块发送读请求完成包,表明读请求成功;否则读取状态标志设置为-1,向主机通信模块发送读请求完成包,表明读请求失败;
图7所示为存储器控制模块操作流程示意图。
图8所示为存储器控制模块初始化配置流程示意图。
图9所示为存储器控制模块在存储器失效后配置流程示意图。
以上通过具体实施例子对本发明做了说明性描述,本发明提出的混合存储***中控制器可以单纯通过FPGA实现,亦可以通过ASIC加上FPGA、CPLD加上嵌入式处理器实现。本领域的技术人员可以根据需要研究适合更多存储介质的控制单元,以支持更多类型存储介质的存储器。所以,这些变化都不能认为是脱离本发明的设计思想,都应包含在本发明的范围内。
Claims (5)
1.一种混合存储***,由N个存储器和一个控制器构成,N=1~128,其特征在于:
A.每个存储器包括控制器通信模块、存储介质和存储器信息模块,控制器通信模块分别与存储介质、存储器信息模块电信号连接;
A1.所述控制器通信模块由高速串行总线和低速串行总线构成;
高速串行总线将存储器控制模块的存储器通信子模块发送的数据包解析为控制信号,发送给存储介质;将存储介质读出的数据封装为数据包,发送至存储器控制模块;
低速串行总线接收存储器通信子模块发送的读信号,从存储器信息模块读出存储器的基本信息发送至存储器通信子模块;接收存储器通信子模块发送的写信号和数据,将数据写入存储器通信子模块;
A2.所述存储介质用于存放数据,为闪存、PCM和磁盘中的一种或多种;
A3.所述存储器信息模块存放存储器的基本信息,包括存储器容量、存储介质类型和存储器状态;存储器容量表示存储器内存储介质总容量大小,存储介质类型表示存储器内存储介质类型为闪存、PCM或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效;
B.所述控制器包括主机通信模块、负载控制模块、阵列控制模块、地址映射模块、存储器控制模块和缓存;存储器控制模块包含通过内部总线一一对应连接的N个可编程子模块和N个存储器通信子模块,并具有一个存储器参数表,各存储器通信子模块由高速串行总线和低速串行总线构成;
主机通信模块、负载控制模块、阵列控制模块和地址映射模块依次两两之间通过内部总线连接,地址映射模块与存储器控制模块的N个可编程子模块通过内部总线连接,所述缓存分别与主机通信模块、负载控制模块、阵列控制模块、地址映射模块通过内部总线连接;
每个存储器通信子模块的高速串行总线和低速串行总线分别对应连接存储器的控制器通信模块的高速串行总线和低速串行总线,每个存储器通信子模块的高速串行总线将可编程子模块的控制信号封装成数据包,发送给存储器的控制器通信模块;将来自控制器通信模块的数据包按照Aurora通信协议解析成数据,发送至可编程子模块;
每个存储器通信子模块的低速串行总线为IIC总线,将存储器控制模块发送的写信号和数据发送至存储器的控制器通信子模块;将存储器控制模块发送的读信号发送至存储器的控制器通信子模块;
当存储器的存储介质类型分别为闪存、PCM和磁盘时,对应的可编程子模块分别配置为闪存控制单元、PCM控制单元或磁盘控制单元;
所述存储器参数表为N×4的数组,其中N为存储器的序号,每个存储器对应4个表项:存储器通信子模块状态、存储器容量、存储介质类型和存储器状态,存储器通信子模块状态分为连接和未连接,表示存储器通信子模块是否与存储器的控制器通信模块连接,存储器容量表示存储器的存储介质总容量大小,存储介质类型表示存储器的存储介质类型为闪存、PCM或磁盘,存储器状态分为正常或失效,表示存储器的存储介质正常或失效;
所述缓存为SDRAM构成的存储空间,为待写入数据、读取数据的缓冲区;
B1.所述主机通信模块执行如下操作:
B1-1.按照主机通信协议标准,对主机发送的请求数据包解析为写请求或读请求;所述请求数据包包括请求地址、请求长度、读写标志、内存地址;读写标志为0,执行B1-2;读写标志为1,执行B1-3;
B1-2.将内存地址中请求长度的数据存放在缓存中,作为待写入数据,然后将请求数据包解析为写请求,分别将请求数据包中请求地址、请求长度、内存地址作为写请求的写数据地址、写数据长度、内存地址,将数据存放在缓存中的地址作为写请求的缓存地址,再将写请求发送至负载控制模块;
B1-3.将请求数据包解析为读请求,分别将请求数据包中请求地址、请求长度、内存地址作为读请求的读数据地址、读数据长度、内存地址;再将读请求发送至地址映射模块,等待地址映射模块发送来的读请求完成包,将其封装成请求完成数据包发送给主机;
B2.所述负载控制模块执行如下操作:
B2-1.定义长度为m个单元的数组M,各单元内容初始化为0,m≥1024;
B2-2.当收到写请求时,其中的写数据地址,通过哈希函数集合H中的k个独立哈希函数得到k个哈希值,每个哈希值对应数组M的一个单元地址;将k个哈希值所对应数组M的k个单元内容加1,然后判断所述k个单元内容是否都大于阈值T,是则该写请求对应的写入数据为热数据,否则该写请求对应的写入数据为冷数据,T≥10;
所述哈希函数集合H={h1,h2,…,hk},k<m,哈希值的值域为[0~m-1];
B2-3.判断对所述写请求中写数据长度是否大于W,是则该写请求对应的写入数据为大块数据,否则该写请求对应的写入数据为小块数据,W=256KB~4MB;
B2-4.经过上述操作,将写请求对应的写入数据分为大块热数据、小块热数据、大块冷数据或小块冷数据,并针对不同类型的写入数据,将对应的写请求中写数据地址转换为存储器地址,加入到写请求中,同时写请求中其它项不变,形成第二层写请求,再将第二层写请求发送到阵列控制模块;
B3.所述阵列控制模块执行如下操作:
B3-1.根据用户设置的RAID0、RAID1或RAID5阵列类型,从存储器控制模块读取存储器参数表,对不同存储介质的存储器,将负载控制模块送来的第二层写请求中的存储器地址重映射为写数据逻辑地址,将写数据逻辑地址加入第二层写请求中,形成第三层写请求,再将第三层写请求送到地址映射模块,组建RAID0、RAID1或RAID5的PCM阵列,组建RAID0、RAID1或RAID5的闪存阵列,组建RAID0、RAID1或RAID5的磁盘阵列;
B3-2.某存储器失效时,待用户以新的存储器替换该失效存储器后,根据存储器控制模块发送的数据恢复指令,按照阵列类型,阵列控制模块对新的存储器进行有选择的数据恢复:对于RAID0阵列,数据无法恢复,阵列控制模块运行结束;对于RAID1阵列,阵列控制模块将镜像数据拷贝到新的存储器中;对于RAID5阵列,阵列控制模块通过冗余存储器的数据以及校验值,进行异或操作,得到恢复数据,存放入新的存储器中;
B4.所述地址映射模块执行如下操作:
地址映射模块维护一个地址映射表,地址映射表包含一一对应的数据逻辑地址和数据物理地址;
B4-1.收到第三层写请求时,判断写数据逻辑地址是否在闪存的地址空间,是则执行B4-1a,否则执行B4-1b;
B4-1a.将第三层写请求中的写数据逻辑地址按照地址映射算法转换为存储介质物理地址,然后在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与所述写数据地址相同的数据逻辑地址对应的数据物理地址更新为所述存储介质数据物理地址,并将原数据物理地址标记为失效;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的存储介质物理地址;将所述存储介质物理地址发送至存储器控制模块,进行B4-1c;
B4-1b.在地址映射表的表项数据逻辑地址中检测是否存在第三层写请求中的写数据地址,是则将与写数据地址相同的数据逻辑地址对应的数据物理地址更新为第三层写请求中的写数据逻辑地址;否则在地址映射表的表项数据逻辑地址和数据物理地址中分别加入所述写数据地址及其对应的写数据逻辑地址;将所述写数据逻辑地址发送至存储器控制模块,进行B4-1c;
B4-1c.根据第三层写请求中的缓存地址,对缓存中的待写入数据通过校验算法生成校验值,将待写入数据加入校验值后发送至存储器控制模块;
最后向存储器控制模块发送写数据指令;
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-1a中,在将写数据逻辑地址按照地址映射算法转换为存储介质物理地址时,所述地址映射算法包括下述步骤:
(1-1)计算写数据逻辑地址对应闪存的通道号A1:
式中,LA为写数据逻辑地址,AN1为一个晶圆内的分组数量,AN2为芯片内的晶圆数量,AN3为通道内芯片数量,AN4为通道数量;
(1-2)计算写数据逻辑地址对应通道内的芯片号A2:
A2=LA%AN3;
(1-3)计算写数据逻辑地址对应芯片内的晶圆号A3:
(1-4)计算写数据逻辑地址对应晶元内的分组号A4:
(1-5)通过写数据逻辑地址的计算找到A1通道,在A1通道内找到A2芯片,在A2芯片中找到A3晶圆,在A3晶圆中找到A4分组,在A4分组中顺序分配一个空闲的物理地址,作为存储介质物理地址;
(2)所述地址映射模块的操作B4-1c和B4-2b中,所述校验算法包括下述步骤:
(2-1)置CP0~CP5为0、置RP0~RP15为0、置I0、I1为1;
其中,6比特CP0~CP5为列校验值,16比特RP0~RP15为行校验值,2比特I0、I1为空闲位,共计24比特构成3字节校验值;
(2-2)对每流过的8比特数据,通过二进制数据计数器C进行计数,同时计算列校验值:
CP0=B0∧B2∧B4∧B6∧CP0,
CP1=B1∧B3∧B5∧B7∧CP1,
CP2=B0∧B1∧B4∧B5∧CP2,
CP3=B2∧B3∧B6∧B7∧CP3,
CP4=B0∧B1∧B2∧B3∧CP4,
CP5=B4∧B5∧B6∧B7∧CP5;
其中待写入数据或读取数据位宽均为8比特,各比特记为:B0~B7;
所述二进制数据计数器C具有8比特位,各比特位记为:C0~C7,计数范围0~255;
(2-3)通过对B0~B7进行异或运算,得到字节校验和K,同时计算行校验值:
K=B0∧B1∧B2∧B3∧B4∧B5∧B6∧B7;
判断C0是否为0,是则RP0=K∧RP0;否则RP1=K∧RP1;
判断C1是否为0,是则RP2=K∧RP2;否则RP3=K∧RP3;
判断C2是否为0,是则RP4=K∧RP4;否则RP5=K∧RP5;
判断C3是否为0,是则RP6=K∧RP6;否则RP7=K∧RP7;
判断C4是否为0,是则RP8=K∧RP8;否则RP9=K∧RP9;
判断C5是否为0,是则RP10=K∧RP10;否则RP11=K∧RP11;
判断C6是否为0,是则RP12=K∧RP12;否则RP13=K∧RP13;
判断C7是否为0,是则RP14=K∧RP14;否则RP15=K∧RP15;
(2-4)判断是否C0~C7全为1,是则生成3字节校验值,否则转(2-2);
(3)所述地址映射模块的操作B4-2b中,检验新校验值是否与所述校验值相同,具体操作为:
将新校验值中6比特列校验值及16比特行校验值分别对应与所述校验值中6比特列校验值及16比特行校验值进行异或运算,判断各异或运算结果是否均为0,是则新校验值与所述校验值相同,否则新校验值与所述校验值不相同;
(4)所述地址映射模块的操作B4-2c,具体包括下述步骤:
(4-1)将新的行校验值RP0′~RP15′和新的列校验值CP0′~CP5′分别对应与数据写入时加入的行校验值RP0~RP15和列校验值CP0~CP5进行异或运算,判断异或运算结果为1的个数是否为11,是则表示读取数据可以纠错,执行(4-2),否则表示读取数据出现无法纠正的错误,向主机通信模块发送读请求完成包,表明读请求失败;
(4-2)读取数据存在1个比特位错误,对于256字节数据,先确定出错字节E1:
E1=(RP15′∧RP15)(RP13′∧RP13)(RP11′∧RP11)(RP9′∧RP9)(RP7′∧RP7)(RP5′∧RP5)(RP3′∧RP3)(RP1′∧RP1);
再确定该字节中出错的比特位E2:
E2=(CP5′∧CP5)(CP3′∧CP3)(CP1′∧CP1);
(4-3)对读取数据的E1字节中E2比特位的数值进行取反运算,得到纠错后读取数据,将其存入缓存中,向主机通信模块发送读请求完成包,表明读请求成功。
4.如权利要求1或2所述的混合存储***,其特征在于:
所述存储器控制模块的操作B5-1具体过程如下:
B5-1a.置存储器通信子模块计数变量i=1;
B5-1b.检测第i个存储器通信子模块是否连接存储器的的控制器通信模块,是则将存储器参数表中序号i对应的存储器通信子模块状态设置为已连接,然后执行B5-1c,否则执行B5-1e;
B5-1c.读取存储器信息模块中的信息,写入存储器参数表中序号i对应的存储介质类型和存储器容量,将存储器状态设置为正常,执行B5-1d;
B5-1d.根据存储器参数表中序号i中存储介质类型,将可编程子模块i配置为闪存控制单元、PCM控制单元或磁盘控制单元,执行B5-1e;
B5-1e.i=i+1,判断是否i≤N,是则执行B5-1b,否则执行结束;
所述存储器控制模块的操作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-1a.置存储器通信子模块计数变量i=1;
B5-1b.检测第i个存储器通信子模块是否连接存储器的控制器通信模块,是则将存储器参数表中序号i对应的存储器通信子模块状态设置为已连接,然后执行B5-1c,否则执行B5-1e;
B5-1c.读取存储器信息模块中的信息,写入存储器参数表中序号i对应的存储介质类型和存储器容量,将存储器状态设置为正常,执行B5-1d;
B5-1d.根据存储器参数表中序号i中存储介质类型,将可编程子模块i配置为闪存控制单元、PCM控制单元或磁盘控制单元,执行B5-1e;
B5-1e.i=i+1,判断是否i≤N,是则执行B5-1b,否则执行结束;
所述存储器控制模块的操作B5-4具体过程如下:
B5-4a.通过中断信息获得新的存储器对应的存储器通信子模块号j,执行B5-4b;
B5-4b.读取新的存储器的存储器信息模块中的信息,更新存储器参数表中序号j对应的存储介质类型和存储器容量,将存储器参数表中序号j对应的存储器状态设置为失效,执行B5-4c;
B5-4c.根据存储器参数表中序号j中存储介质类型,将可编程子模块j配置为闪存控制单元、PCM控制单元或磁盘控制单元,执行B5-4d;
B5-4d.向阵列控制模块发送数据恢复指令,然后将存储器参数表中序号j对应的存储器状态设置为正常,执行结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310362037.4A CN103455283B (zh) | 2013-08-19 | 2013-08-19 | 一种混合存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310362037.4A CN103455283B (zh) | 2013-08-19 | 2013-08-19 | 一种混合存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455283A CN103455283A (zh) | 2013-12-18 |
CN103455283B true CN103455283B (zh) | 2016-01-20 |
Family
ID=49737707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310362037.4A Active CN103455283B (zh) | 2013-08-19 | 2013-08-19 | 一种混合存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455283B (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778095B (zh) * | 2014-01-08 | 2016-09-28 | 无锡众志和达数据计算股份有限公司 | 一种基于FPGA芯片的sata扩展架构 |
CN103777905B (zh) * | 2014-02-14 | 2017-04-12 | 华中科技大学 | 一种软件定义的固态盘融合存储方法 |
CN104407997B (zh) * | 2014-12-18 | 2017-09-19 | 中国人民解放军国防科学技术大学 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
KR102309471B1 (ko) * | 2014-12-19 | 2021-10-07 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법 |
CN104834484B (zh) * | 2015-05-11 | 2018-10-23 | 上海新储集成电路有限公司 | 基于嵌入式可编程逻辑阵列的数据处理***及处理方法 |
KR102397582B1 (ko) * | 2015-06-22 | 2022-05-13 | 삼성전자주식회사 | 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법 |
CN104881259B (zh) * | 2015-06-29 | 2018-07-24 | 北京联想核芯科技有限公司 | 一种数据处理方法和装置以及存储设备 |
CN106326133B (zh) * | 2015-06-29 | 2020-06-16 | 华为技术有限公司 | 存储***、存储管理装置、存储器、混合存储装置及存储管理方法 |
US9870158B2 (en) * | 2015-11-10 | 2018-01-16 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Rack mountable computer system that includes microarray storage systems |
KR20170099437A (ko) * | 2016-02-23 | 2017-09-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US10733107B2 (en) | 2016-10-07 | 2020-08-04 | Via Technologies, Inc. | Non-volatile memory apparatus and address classification method thereof |
CN106897026B (zh) * | 2016-10-07 | 2020-02-07 | 威盛电子股份有限公司 | 非易失性存储器装置及其地址分类方法 |
CN106911776B (zh) * | 2017-02-24 | 2020-02-07 | 郑州云海信息技术有限公司 | 一种云存储设备的管理方法及装置 |
CN107301455B (zh) * | 2017-05-05 | 2020-11-03 | 中国科学院计算技术研究所 | 用于卷积神经网络的混合立方体存储***及加速计算方法 |
CN107291392A (zh) * | 2017-06-21 | 2017-10-24 | 郑州云海信息技术有限公司 | 一种固态硬盘及其读写方法 |
EP3660681B1 (en) | 2017-09-30 | 2023-01-11 | Huawei Technologies Co., Ltd. | Memory fault detection method and device, and server |
CN107678697A (zh) * | 2017-10-24 | 2018-02-09 | 江苏都万电子科技有限公司 | 一种数据非对称备份存储方法及存储器 |
CN108255417B (zh) * | 2017-11-30 | 2020-11-24 | 平安科技(深圳)有限公司 | 数据访问方法、电子装置及可读存储介质 |
CN108595125A (zh) * | 2018-04-27 | 2018-09-28 | 江苏华存电子科技有限公司 | 一种纠正闪存写入错误处理方法 |
CN108958453B (zh) * | 2018-07-03 | 2020-06-05 | 中国人民解放军国防科技大学 | 一种寄存器堆的低功耗访问方法及装置 |
CN110209343B (zh) * | 2018-07-23 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、服务器及存储介质 |
CN109491613B (zh) * | 2018-11-13 | 2021-11-02 | 深圳龙岗智能视听研究院 | 一种持续数据保护存储***及其使用该***的存储方法 |
CN109933547B (zh) * | 2019-01-29 | 2023-03-10 | 山东华芯半导体有限公司 | 一种ssd主控中的raid被动加速装置和加速方法 |
CN110647479B (zh) * | 2019-09-03 | 2020-11-10 | 宜鼎国际股份有限公司 | 双信道数据储存*** |
CN110908603B (zh) * | 2019-11-01 | 2024-01-19 | 惠州市德赛西威汽车电子股份有限公司 | 一种数据存储防错处理***及方法 |
CN113392036B (zh) * | 2020-03-11 | 2024-02-02 | 深圳星火半导体科技有限公司 | 固态存储器及其数据写入方法、装置 |
CN112286843B (zh) * | 2020-08-12 | 2022-04-08 | 深圳安捷丽新技术有限公司 | 数据存储***的***和方法 |
CN114546267B (zh) * | 2022-02-14 | 2022-11-18 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘*** |
CN114817093B (zh) * | 2022-06-30 | 2022-12-02 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、***、装置及存储介质 |
CN116955241B (zh) * | 2023-09-21 | 2024-01-05 | 杭州智灵瞳人工智能有限公司 | 兼容多类型存储介质的存储芯片 |
CN117033267B (zh) * | 2023-10-07 | 2024-01-26 | 深圳大普微电子股份有限公司 | 混合存储主控制器及混合存储器 |
CN117407928B (zh) * | 2023-12-13 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 存储装置、存储装置的数据保护方法、计算机设备及介质 |
CN117420965B (zh) * | 2023-12-18 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388358A (zh) * | 2011-09-30 | 2012-03-21 | 华为技术有限公司 | 在混合存储环境下配置存储设备的方法和*** |
CN102541466A (zh) * | 2011-10-27 | 2012-07-04 | 忆正存储技术(武汉)有限公司 | 一种混合存储控制***和方法 |
CN102831087A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据读写处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157756A1 (en) * | 2007-12-15 | 2009-06-18 | Hitachi Global Storage Technologies Netherlands, B.V. | File System For Storing Files In Multiple Different Data Storage Media |
-
2013
- 2013-08-19 CN CN201310362037.4A patent/CN103455283B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388358A (zh) * | 2011-09-30 | 2012-03-21 | 华为技术有限公司 | 在混合存储环境下配置存储设备的方法和*** |
CN102541466A (zh) * | 2011-10-27 | 2012-07-04 | 忆正存储技术(武汉)有限公司 | 一种混合存储控制***和方法 |
CN102831087A (zh) * | 2012-07-27 | 2012-12-19 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据读写处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
一种面向SSD-HDD混合存储的热区跟踪替换算法;刘圣卓 等;《小型微型计算机***》;20121031;第33卷(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103455283A (zh) | 2013-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455283B (zh) | 一种混合存储*** | |
US10725956B2 (en) | Memory device for a hierarchical memory architecture | |
CN103176746B (zh) | 用于数据存储***中增强的控制器架构的***和方法 | |
US9176810B2 (en) | Bit error reduction through varied data positioning | |
AU2014236657B2 (en) | Synchronous mirroring in non-volatile memory systems | |
US10157012B2 (en) | Zero read on trimmed blocks in a non-volatile memory system | |
US10133483B2 (en) | Memory system and method for differential thermal throttling | |
CN108628777A (zh) | 动态和自适应中断合并的***和方法 | |
US20170123991A1 (en) | System and method for utilization of a data buffer in a storage device | |
Greenan et al. | Building flexible, fault-tolerant flash-based storage systems | |
CN108139970A (zh) | 用于直接写入多级单元存储器的***和方法 | |
CN107967187A (zh) | 物理页、逻辑页及码字对应 | |
US20150143027A1 (en) | Solid state drive with raid functions | |
CN103218270B (zh) | 具有多个固态盘的计算机 | |
CN106445843A (zh) | 使物理页面地址相关用于软判决解码 | |
US9658790B2 (en) | Memory system and method for power-based operation scheduling | |
CN103488432A (zh) | 一种混合磁盘阵列及其延迟写入校验方法和数据恢复方法 | |
KR102133316B1 (ko) | 메모리 시스템 관리 | |
US20180059943A1 (en) | Media Controller and Method for Management of CPU-Attached Non-Volatile Memory | |
US10642746B2 (en) | Controlling cached/non-cached memory access decisions based on memory access queue fill levels | |
CN110799934A (zh) | 用于执行基于文件的固件命令和收集响应数据的存储***和方法 | |
Cui et al. | Exploiting disturbance-aware read redirection for performance improvement in 3D flash memory | |
US20210181980A1 (en) | Storage System and Method for Improving Utilization of a Communication Channel between a Host and the Storage System | |
US11544107B2 (en) | Storage system and method for multiprotocol handling | |
US11487449B2 (en) | Data storage device and method for enabling higher lane utilization in run time via device hints on workload patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |