用于在非易失性存储设备中以冗余方式存储数据块的存储控制器和系统技术方案

技术编号:8983416 阅读:169 留言:0更新日期:2013-08-01 02:15
一种在多个物理上不同的非易失性存储设备中存储多个数据块的方法,每个非易失性存储设备被独立地写入或从中读取,其中,每个数据块是能够从非易失性存储设备中读取或向该设备写入的最小数据量。该方法包括根据多个数据块生成一个或多个错误校验数据块;并且在多个不同的物理非易失性存储设备中存储所述数据的多个块和一个或多个错误校验数据块,其中数据块在不同的物理存储设备中。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种用于冗余并高效地存储多个数据块的方法,特别在数据块是随机的情况下,在多个独立的可读/写非易失性存储设备中,所述设备把数据块作为可以从该存储设备中读取或向该设备写入的最小数据量。所述方法存储多个数据块以及一个或多个与所述多个数据块相关联的错误校验数据块,其中每个数据块存储于单独的非易失性存储设备中,其中建立对块的存储进行链接(link)的关联映射(map)。本专利技术还涉及一种执行前述方法的存储控制器和具有执行该方法的存储控制器的存储系统。
技术介绍
每次存储或读取诸如一页数据的数据块的非易失性存储设备是本领域所熟知的。例如,典型地,在每次读/写操作中,NAND存储设备可以在设备中存储诸如4千字节的一页数据。每次存储或读取数据块的其他类型的非易失性存储设备,包括所谓的托管NAND(managed NAND)存储设备,诸如可向 Santa Clara California 的 Greenliant Systems,Inc.购买的NANDrive存储设备。在诸如NANDrive存储设备的托管NAND存储设备中,控制器对原始(或非托管的)NAND存储设备进行控制,以使得诸如SATA (串行ATA)的标准接口可用于与NANDrive存储设备对接。如本文使用的,术语“NAND存储设备”指的是原始和托管NAND存储设备二者。在NAND存储设备中,非易失性存储设备只能以每次多个数据块的方式被写入或从中读取。由于它们每次 读回数据块的能力,NAND存储设备对存储大量数据是有用的。在现有技术中,因为NAND存储设备容易出现错误,所以数据连同错误校验比特一起被存入NAND存储设备中。因而,从多个数据比特生成的一种已知的错误校验比特是奇偶校验比特。其他类型的错误比特包括里德所罗门错误比特和其他已知的类型。数据比特和从数据比特所生成的错误比特被提供给多个NAND存储设备。一种存储数据比特块的现有技术的方法是将数据块分成多个相等的数据子块,其中提供到物理上不同的NAND存储设备的每个数据子块彼此不同。该关联的错误比特(用于多个数据子块)被提供到另一个物理上不同的NAND存储设备。因而,所有的数据比特和错误比特块都被提供到物理上不同的NAND存储设备。被提供到每个不同的NAND存储设备的数据子块能以两种方式之一被存储。首先,当在NAND存储设备的缓冲器中接收到数据子块时,该数据子块被存储在NAND存储单元块中以用于存储。这是浪费的,因为该存储块只包含子块数据量。可替换地,数据子块能被保存在缓冲器中直到接收到另一个子块(来自不同的数据块),以此类推,直到在缓冲器中接收到等于一个块的数据量时,在该情况下缓冲器中的整个数据块(包括来自不同数据块的多个子块)可以存储在一个存储块中。这种替代方法也不是最优的,因为数据被保存在缓冲器中,并且由于缓冲器通常是易失性存储器,因此存在电源故障导致数据丢失的可能性。在读回时,一旦从一个NAND存储设备读出了存储块,必须对从该存储块中读取的数据进行解析以恢复所选择的数据子块。从物理上不同的NAND存储设备读出与选择的块相关联的多个数据子块(与相关联的错误比特一起)。把来自所有数据块的数据与来自错误块的数据相比较以确定是否出现了错误。为了这种方法正确地操作,在现有技术中,数据块被分成多个子块,然后带有错误比特块,降低了存储和读取的数据的大小,这反过来降低了读写效率。例如,如果数据块为4千字节,并且被存储在8个NAND设备中。每个数据子块为0.5千字节并且被存储在NAND设备的每一块中。当读出时,如果需要8个数据块或32千字节,则八(8)个NAND设备中的每一个必须被读取8次。来自八(8)个NAND设备的每一个中的每个子块(0.5千字节)的数据量必须组合成一个4千字节的块。然而,读取NAND设备所需的时间量归因于建立命令操作所需的时间、读取非易失性存储单元阵列所需的时间和来自每个NAND设备的0.5千字节的实际传送时间。建立命令操作的时间量和读取阵列所需的时间量几乎相同,不考虑要传送的数据量。由于NAND设备的块大小是增大的,使用把数据块分为子块并且把子块存储到NAND设备的块的现有技术方法在读取操作期间需要更多的时间。参见图1,示出了现有技术的存储系统10的示意性框图以及其在存储多个数据块中出现的问题。图1示出了具有“逻辑地址1”、“逻辑地址2”、“逻辑地址3”等逻辑地址的八(8)个数据块。存储系统10还具有八个NAND存储设备20 (a_h),分别示为“设备I”、“设备2”、“设备3”和“设备8”,以及用于存储奇偶校验比特的第九NAND存储设备20i。存储控制器(未示出)控制设备20 (a-h)的操作,以及数据块到各个设备20 (a-h)的定向,生成奇偶校验比特并且将奇偶校验比特存入设备20i。在现有技术中,当接收到数据块时,诸如具有逻辑地址I的数据块,存储控制器将数据块分为八个子块,并且将每个子块存入不同的NAND设备20 (a-h)中。从而,如图1所示,具有逻辑地址I并且具有物理地址A的块被分为八(8)个子块,其中每个子块存储于不同的存储设备20 (a-h)中。存储控制器根据来自逻辑地址I的八个数据子块生成奇偶校验比特子块,并且将奇偶校验比特子块存入设备9 20i。来自具有逻辑地址I的数据块的所有八(8)个数据子块(包括奇偶校验比特子块则是九个)都被存储于具有物理地址A的NAND设备的块中,虽然具有物理地址A的块全都在不同的存储器NAND设备20 (a-1)中,但是具有相同的物理地址。以相同的方式来存储具有逻辑地址2的第二数据块。数据块被分为八(8)个子块,但是都具有物理地址B,并且被存储于NAND设备20 (a-h)中,其中与八(8)个数据子块相关联的奇偶校验比特被存储于NAND设备20 ( i )中。在读出时,假定希望读取具有逻辑地址3的逻辑地址的块,那么存储控制器使每个NAND存储设备20 (a-h)从非易失性存储单元中在与逻辑地址3相关联的物理地址C读取数据块并且进入在每个NAND存储设备20 (a-h)内的各自的缓冲器。其后,根据读取的八个数据子块来对具有逻辑地址3的逻辑地址的数据块进行组合,并且将该数据与来自设备20i的奇偶校验比特进行比较,来确定是否存在任何错误。此外,如果设备(a-h)中的任何一个检测到错误,则从NAND存储设备20i中读取与具有逻辑地址3的数据块相关联的奇偶校验比特块,并且将其存入该设备的缓冲器。然后校正错误,并且写回到有错误的NAND存储设备,并且从存储系统10提供校正后的数据。如果不存在错误,则从存储系统10提供来自具有逻辑地址3的逻辑地址的块的未校正的数据。如前所讨论, 这些数据块的存储的问题是当NAND设备20提高了数据传送速度并且降低了存储读取延迟时,读取开销使存储系统的性能急剧下降。这导致读取大量小数据块的增大的时间和开销。用以上作为示例,如果希望从存储系统10中读取具有逻辑地址(1-8)的八(8)个数据块,然后由上述讨论可以看出,每个NAND设备20 (x)必须被读取8次(即使我们假定所有八(8)个存储设备20 (a-h)-包括用于存储奇偶校验比特的NAND存储设备20 (i))可以被同时读取。八(8)个小块读取操作的每一本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:S阿亚
申请(专利权)人:格林莱恩特有限责任公司
类型:
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1