操作方法、存储器控制器、系统及电子设备
文献发布时间:2024-05-31 01:29:11
技术领域
本申请涉及数据存储技术领域,尤其涉及一种存储器控制器的操作方法、存储器控制器、系统及电子设备。
背景技术
在存储系统中,某些工作模式的切换会导致存储系统包含的存储器控制器中正在使用的数据的丢失,比如,在切换到启停单元(SSU,Stop Start Unit)模式或自动待机(Auto-standby)模式或写加速(WB,Write Booster)模式时,在存储器控制器包含的缓存中的重要数据可能会丢失,尤其是冗余校验需要的数据。由于数据备份是容灾的基础,因此,需要对数据进行备份,以备后续数据重建时使用。目前使用的数据备份方式使得存储系统的预留空间(OP,Over Provisioning)比较少,影响编程性能。
发明内容
有鉴于此,本申请实施例提供一种存储器控制器的操作方法、存储器控制器、系统及电子设备,以解决上述问题。
为此,本申请的技术方案是这样实现的:
第一方面,本申请实施例提供一种存储器控制器的操作方法,所述存储器控制器包含在存储系统;所述存储系统还包括具有存储阵列且被所述存储器控制器控制的存储器;所述操作方法包括:响应于工作模式切换命令,确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态;所述冗余校验数据用于所述存储阵列中对应存储区的数据恢复;将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区。
第二方面,本申请实施例提供一种存储器控制器,所述存储器控制器包含在存储系统;所述存储系统还包括具有存储阵列且被所述存储器控制器控制的存储器;所述存储器控制器包括:处理器、冗余校验缓存;其中,
所述处理器,被配置为:响应于工作模式切换命令,确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态;所述冗余校验数据用于所述存储阵列中对应存储区的数据恢复;
将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区。
第三方面,本申请实施例提供一种存储系统,包括:一个或多个存储器;所述一个或多个存储器包含存储阵列;
以及与所述一个或多个存储器耦接且用于控制所述一个或多个存储器的存储器控制器;其中,
所述存储器控制器,包括:与主机耦接的第一通信接口、处理器、冗余校验缓存及与所述一个或多个存储器耦接的第二通信接口;其中;
所述第一通信接口,被配置为:接收所述主机发送的工作模式切换命令;
所述处理器,被配置为:响应于所述工作模式切换命令,确定位于所述存储器控制器包含的冗余校验缓存内的每一个冗余校验数据的状态;所述每一个冗余校验数据用于所述存储阵列中对应存储区的故障数据恢复;生成携带有所述状态为更新状态的所述冗余校验数据写入命令;
所述第二通信接口,被配置为:向所述一个或多个存储器发送所述写入命令;所述写入命令使所述一个或多个存储器将所述状态为更新状态的所述冗余校验数据写入到所述存储阵列的备份区。
第四方面,本申请还提供一种电子设备,包括:存储系统;所述存储系统包括一个或多个存储器,所述一个或多个存储器包含存储阵列;以及与所述一个或多个存储器耦接且用于控制所述一个或多个存储器的存储器控制器;
及与所述存储系统耦接的主机;其中,
所述主机,与所述存储器控制器的第一通信接口耦接,被配置为:通过所述第一通信接口向所述存储器控制器发送工作模式切换命令;
所述存储器控制器,通过包含的第二通信接口与所述一个或者多个存储器耦接,被配置为:通过所述第一通信接口接收所述工作模式切换命令;响应于所述工作模式切换命令,确定位于所述存储器控制器包含的冗余校验缓存内的每一个冗余校验数据的状态;所述每一个冗余校验数据用于所述存储阵列中对应存储区的故障数据恢复;生成携带有所述状态为更新状态的所述冗余校验数据写入命令;通过所述第二通信接口向所述一个或多个存储器发送所述写入命令;
所述一个或多个存储器,被配置为:响应于所述写入命令,将所述状态为更新状态的所述冗余校验数据写入到所述存储阵列的备份区。
本申请实施例提供一种存储器控制器的操作方法、存储器控制器、系统及电子设备。其中,所述操作方法包括:响应于工作模式切换命令,确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态;所述冗余校验数据用于所述存储阵列中对应存储区的数据恢复;将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区。本申请实施例提供的冗余校验数据的备份方式使得备份时无需将所有冗余校验数据全部备份,不会使得备份区的写入量及使用量增大,节省了备份区,能够使得预留空间增多,从而提高产品的性能和耐久性。
附图说明
图1示出具有存储系统的示例性系统的示意图;
图2示出具有存储器的示例性存储卡的示意图;
图3示出具有存储器的示例性固态硬盘(SSD)的示意图;
图4示出包含外围电路的示例性存储器的示例图;
图5示出包含存储阵列和外围电路的示例性存储器的示意图;
图6示出本申请提供的虚构的小小SSD的示意图;
图7示出本申请提供的一种存储器控制器的操作方法的流程示意图;
图8示出本申请提供的与主机耦接的包含存储系统的设备为UFS时包含的7种功耗模式之间通过SSU命令进行切换的关系示意图;
图9示出本申请提供的一种RAIN的示意图;
图10示出本申请提供的主机与存储系统之间的数据交互的示意图;
图11示出本申请提供的用户数据池对应的存储区的逻辑页与标志位之间的示例性关系;
图12示出本申请提供的存储器控制器因执行第一操作时生成与冗余校验数据对应的标志信息的流程示意图;
图13示出本申请提供的将冗余校验缓存中处于更新状态的冗余校验数据备份至备份区的具体流程示意图;
图14示出本申请提供的存储器控制器的一种硬件结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请公开的示例性实施方式。虽然附图中显示了本申请的示例性实施方式,然而应当理解,可以以各种形式实现本申请,而不应被这里阐述的具体实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本申请,并且能够将本申请公开的范围完整的传达给本领域的技术人员。
在下文的描述中,给出了大量具体的细节以便提供对本申请更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本申请可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本申请发生混淆,对于本领域公知的一些技术特征未进行描述;即,这里不描述实际实施例的全部特征,不详细描述公知的功能和结构。
在附图中,为了清楚,层、区、元件的尺寸以及其相对尺寸可能被夸大。自始至终相同附图标记表示相同的元件。
应当明白,当元件或层被称为“在……上”、“与……相邻”、“连接到”或“耦合到”其它元件或层时,其可以直接地在其它元件或层上、与之相邻、连接或耦合到其它元件或层,或者可以存在居间的元件或层。相反,当元件被称为“直接在……上”、“与……直接相邻”、“直接连接到”或“直接耦合到”其它元件或层时,则不存在居间的元件或层。应当明白,尽管可使用术语第一、第二、第三等描述各种元件、部件、区、层和/或部分,这些元件、部件、区、层和/或部分不应当被这些术语限制。这些术语仅仅用来区分一个元件、部件、区、层或部分与另一个元件、部件、区、层或部分。因此,在不脱离本申请教导之下,下面讨论的第一元件、部件、区、层或部分可表示为第二元件、部件、区、层或部分。而当讨论的第二元件、部件、区、层或部分时,并不表明本申请必然存在第一元件、部件、区、层或部分。
空间关系术语例如“在……下”、“在……下面”、“下面的”、“在……之下”、“在……之上”、“上面的”等,在这里可为了方便描述而被使用从而描述图中所示的一个元件或特征与其它元件或特征的关系。应当明白,除了图中所示的取向以外,空间关系术语意图还包括使用和操作中的器件的不同取向。例如,如果附图中的器件翻转,然后,描述为“在其它元件下面”或“在其之下”或“在其下”元件或特征将取向为在其它元件或特征“上”。因此,示例性术语“在……下面”和“在……下”可包括上和下两个取向。器件可以另外地取向(旋转90度或其它取向)并且在此使用的空间描述语相应地被解释。
在此使用的术语的目的仅在于描述具体实施例并且不作为本申请的限制。在此使用时,单数形式的“一”、“一个”和“所述/该”也意图包括复数形式,除非上下文清楚指出另外的方式。还应明白术语“组成”和/或“包括”,当在该说明书中使用时,确定所述特征、整数、步骤、操作、元件和/或部件的存在,但不排除一个或更多其它的特征、整数、步骤、操作、元件、部件和/或组的存在或添加。在此使用时,术语“和/或”包括相关所列项目的任何及所有组合。
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
图1示出具有存储系统的示例性电子设备的块图。在图1中,电子设备100可以是移动电话、台式计算机、膝上型计算机、平板计算机、车辆计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(VR,Virtual Reality)设备、增强现实(AR,Argument Reality)设备或者其中具有储存器的任何其他合适的电子设备。如图1所示,电子设备100可以包括主机108和存储系统102,其中,存储系统102具有一个或多个存储器104和存储器控制器106;主机108可以是电子设备的处理器,如中央处理单元(CPU,CentralProcessing Unit)或者片上系统(SoC,System of Chip),其中,片上系统例如可以为应用处理器(AP,Application Processor)。主机108可以被配置为将数据通过存储器控制器106发送到存储器104或从存储器104通过存储器控制器106接收数据。具体的,存储器104可以是本申请中公开的任何存储器。比如,相变随机存取存储器(PCRAM,Phase Change RandomAccess Memory)、三维NAND闪存等等。
根据一些实施方式,存储器控制器106耦合到存储器104和主机108。并且被配置为控制存储器104。存储器控制器106可以管理存储在存储器104中的数据,并与主机108通信。在一些实施例中,存储器控制器106被设计为用于在低占空比环境中操作,比如在安全数字(SD,Secure Digital)卡、紧凑型闪存(CF,Compact Flash)卡、通用串行总线(USB,Universal Serial Bus)闪存驱动器、或用于在诸如个人计算器、数字相机、移动电话等低占空比环境的电子设备中使用的其他介质。在一些实施例中,存储器控制器106被设计为用于在高占空比环境中操作,比如固态驱动器(SSD,Solid State Drive)或嵌入式多媒体卡(eMMC,embedded Muti Media Card),其中SSD或eMMC用作诸如智能电话、平板计算机、膝上型计算机等高占空比环境的移动设备的数据储存器以及企业存储阵列。存储器控制器106可以被配置为控制存储器104的操作,例如读取、擦除和编程操作。
在一些实施例中,存储器控制器106还可以被配置为管理关于存储在或要存储在存储器104中的数据的各种功能,其中,这些功能包括但不限于坏块管理、垃圾收集、逻辑到物理地址转换、损耗均衡等。在一些实施方式中,存储器控制器106还被配置为处理关于从存储器104读取的或者被写入到存储器104的数据的纠错码(ECC,Error CorrectionCode)。在一些实施例中,存储器控制器106还可以执行任何其他合适的功能,例如,格式化存储器104。存储器控制器106可以根据特定通信协议与外部设备(例如,主机108)通信。例如,存储器控制器106可以通过各种接口协议中的至少一种与外部设备通信,接口协议例如USB协议、MMC协议、外围部件互连(PCI,Peripheral Component Interconnection)协议、PCI高速(PCI-E,PCI Express)协议、高级技术附件(ATA,Advanced TechnologyAttachmnet)协议、串行ATA协议、并行ATA协议、小型计算机小型接口(SCSI,SmallComputer Small Interface)协议、增强型小型磁盘接口(ESDI,Enhanced Small DiskInterface)协议、集成驱动电子设备(IDE,Integrated Drive Electronics)协议、Firewire协议等。这些接口也可称之为前端接口。在一些实施例中,存储器控制器106通过配置的多个通道与存储器104进行命令/数据的交互。这些通道也称之为后端接口。
在一些实施例中,存储器控制器106和一个或多个存储器104可以集成到各种类型的存储设备中,例如,包括在相同封装(例如,通用闪存存储(UFS,Universal FlashStorage)封装或eMMC封装)中。也就是说,存储系统102可以实施并且封装到不同类型的终端电子产品中。在如图2所示的一个示例中,存储器控制器106和单个存储器104可以集成到存储器卡202中。存储器卡可以包括PC卡(PCMCIA,个人计算机存储器卡国际协会)、CF卡、智能媒体(SM)卡、存储器棒、多媒体卡(MMC、RS-MMC、MMCmicro)、SD卡(SD、miniSD、microSD、SDHC)、UFS等。存储器卡还可以包括将存储器卡与主机(例如,图1中的主机108)耦合的存储器卡连接器204。
在如图3所示的另一示例中,存储器控制器106和多个存储器104可以集成到SSD302中。SSD还可以包括将SSD与主机(例如,图1中的主机108)耦合的SSD连接器304。在一些实施方式中,SSD的存储容量和/或操作速度大于存储器卡的存储容量和/或操作速度。
在一些实施例中,存储器104的结构可以如图4示出包含外围电路的示例性存储器。在图4所示,存储器104可以包括存储阵列401和耦合在所述存储阵列401的外围电路402,其中,存储阵列401可以是NAND闪存存储阵列,其中,存储单元406以NAND存储器串408的阵列的形式提供,每个NAND存储器串408在衬底(未示出)上方垂直地延伸。在一些实施例中,每个NAND存储器串408包括串联耦合并且垂直地堆叠的多个存储单元406。每一个存储单元406可以保持连续模拟值,例如,电压或电荷,其取决于在存储单元406的存储区内捕获的电子的数量。每一个存储单元406可以是包括浮栅晶体管的浮栅类型的存储单元,或者是包括电荷捕获晶体管的电荷捕获类型的存储单元。
在一些实施例中,每个存储单元406是具有两种可能的数据状态并且因此可以存储一位数据的单级单元(SLC,Single Level Cell),例如,第一数据状态“0”可以对应第一电压范围,并且第二数据状态“1”可以对应于第二电压范围。在一些实施例中,所述第一电压范围和第二电压范围可以称之为存储单元的阈值电压分布。在一些实施例中,每个存储单元406具有多于四个数据状态并且存储多位数据的多级单元(MLC,Multi Level Cell),例如,MLC可以每存储单元存储两位,每存储单元存储三位(又被称为三级单元(TLC,Trinary Level Cell),或者每存储单元存储四位(又被称为四级单元(QLC,QuadrupleLevel Cell)等等。其中,不论何种类型的存储单元的数据状态均包括擦除态和编程态。在一些实施例中,在对存储单元执行编程操作时,是处于擦除态的存储单元编程至某一编程态,一般来说,存储单元的编程态对应的电压范围中的电压值比较大。
如图4所示,每个NAND存储器串408可以包括在其源极端处的源极选择栅极(SSG)410和在其漏极端处的漏极选择栅极(DSG)412。SSG 410和DSG 412可以被配置为在读取和编程(或写入)操作期间激活选中的NAND存储器串408(阵列的列)。在一些实施例中,同一块404中的NAND存储器串408的源极通过同一源极线(SL)414(比如,公共SL)耦合。换句话说,根据一些实施方式,同一块404中的所有NAND存储器串408具有阵列公共源极(ACS)。根据一些实施方式,每个NAND存储器串408的DSG412耦合到相应的位线416,可以经由输出总线(未示出)从位线416读取和写入数据。在一些实施例中,每个NAND存储器串408被配置为通过经由一个或多个DSG线413将选择电压(比如,高于具有DSG412晶体管的阈值电压)或取消选择电压(比如,0伏特(V))施加到相应的DSG412和/或经由一个或多个SSG线415将选择电压(比如,高于具有SSG410的晶体管的阈值电压)或取消选择电压(比如,0V)施加到相应的SSG410而被选择或被取消选择。
如图4所示,NAND存储器串408可以被组织为多个块404,多个块404的每一个可以具有公共源极线414(比如,耦合到地)。在一些实施例中,每个块404是具有擦除操作的基本数据单位,即,同一块404上的所有存储单元406同时被擦除。为了擦除选定块404中的存储单元406,可以用擦除电压(Vers)(比如,高正电压20V或更高)偏置耦合到选定块404以及与选定块404同一面(Plane)中的未选定块404的源极线414。应该理解,在一些示例中,可以在半块级、在四分之一块级耦或者具有任何合适数量的块或块的任何合适的分数的级执行擦除操作。相邻NAND存储器串408的存储单元406可以通过字线418耦合,字线418选择存储单元406的哪一行接收读取和编程操作。在一些实施例方式中,耦合在同一字线418的存储单元406称之为页420。页420是用于编程操作或读取操作的基本数据单位,以位为单元的一页420的大小可以与一个块404中由字线418耦合的NAND存储器串408的数量相关。每个字线418可以包括在相应页420中的每一个存储单元406处的多个控制栅极(栅极电极)以及耦合控制栅极的栅极线。
返回参考图4,外围电路402可以通过位线416、字线418、源极线414、SSG线415和DSG线413耦合到存储阵列401。外围电路402可以包括任何合适的模拟、数字以及混合信号电路,以用于通过经由位线416、字线418、源极线414、SSG线415和DSG线413将电压信号和/或电流信号施加到每个目标存储单元406以及从每个目标存储单元406感测电压信号和/或电流信号来促进存储阵列401的操作。外围电路402可以包括使用金属-氧化物-半导体(MOS)技术形成的各种类型的外围电路。例如,图5示出了一些示例性外围电路,外围电路402包括页缓冲器/感测放大器504、列解码器/位线驱动器506、行解码器/字线驱动器508、电压发生器510、控制逻辑单元512、寄存器514、接口516和数据总线518。应当理解,在一些示例中,还可以包括图5中未示出的附加外围电路。
在一些实施例中,页缓冲器/感测放大器504可以被配置为根据来自控制逻辑单元512的控制信号从存储阵列401读取数据以及向存储阵列401编程(写入)数据。在一个示例中,页缓冲器/感测放大器504可以存储要被编程到存储阵列401的一个页420中的一页编程数据(写入数据)。在另一示例中,页缓冲器/感测放大器504可以执行编程验证操作,以确保数据已经被正确地编程到耦合到选定字线418的存储单元406中。在又一示例中,页缓冲器/感测放大器504还可以感测来自位线416的表示存储在存储单元406中的数据位的低功率信号,并且在读取操作中将小电压摆幅放大到可识别的逻辑电平。列解码器/位线驱动器506可以被配置为由控制逻辑单元512控制,并且通过施加从电压发生器510生成的位线电压来选择一个或多个NAND存储器串408。
行解码器/字线驱动器508可以被配置为由控制逻辑单元512控制,并且选择/取消选择存储阵列401的块404并且选择/取消选择块404的字线418。行解码器/字线驱动器508还可以被配置为使用从电压发生器510生成的字线电压来驱动字线418。在一些实施方式中,行解码器/字线驱动器508还可以选择/取消选择并且驱动SSG线415和DSG线413。在一些实施例中,行解码器/字线驱动器508被配置为对耦合到(一个或多个)选定字线418的存储单元406执行擦除操作。电压发生器510可以被配置为由控制逻辑单元512控制,并且生成要被供应到存储阵列401的字线电压(例如,读取电压、编程电压、通过电压、局部电压、验证电压等)、位线电压和源极线电压。
控制逻辑单元512可以耦合到上文描述的每个外围电路,并且被配置为控制每个外围电路的操作。寄存器514可以耦合到控制逻辑单元512,并且包括状态寄存器、命令寄存器和地址寄存器,以用于存储用于控制每个外围电路的操作的状态信息、命令操作码(OP码)和命令地址。接口516可以耦合到控制逻辑单元512,并且充当控制缓冲器,以缓冲从主机(未示出)接收的控制命令并且并将其中继到控制逻辑单元512,以及缓冲从控制逻辑单元512接收的状态信息并且将其中继到主机。接口516还可以经由数据总线518耦合到列解码器/位线驱动器506,并且充当数据I/O接口和数据缓冲器,以缓冲数据并且将其中继到存储阵列401或从存储阵列401中继或缓冲数据。也即是,这里的接口516就是与前述存储器控制器的后端接口耦接的接口,也就是,接口516还可以是存储器与存储器控制器通信的接口。
图4中对于存储阵列的介绍是基于存储器实际物理结构的示例。换句话说,图4中的存储阵列是实际存储数据的位置,因此,这里存储数据的地址为物理地址(PA,PhysicalAddress),也可以称之为存储阵列的实际地址。在实际应用中,如图1所示的电子设备,用户可以通过主机108包含的操作系统(OS,Operating System)分配逻辑地址(LA,LogicalAddress),经由存储系统102中的闪存转换层(FTL,Flash Translation Layer)的逻辑地址与物理地址之间的转换算法实现对将数据写入存储阵列的相应物理地址,或者从存储阵列相应的物理地址读取数据。
在实际应用过程中,电子设备100包含的存储系统的存储阵列包括的Block数量是固定的。通常,在存储设备(比如前述的SSD或UFS)出厂前,制造商按照用途将存储设备包含的存储阵列进行划分。在一些实施例中,存储设备的存储阵列被划分为用户数据池(UserData Pool)和系统池(System Pool),其中,用户数据池又包括存储区和预留空间(OP),所述存储区就是存储阵列中用于存储用户数据的区域。该区域的容量又称之为用户容量。用户可将数据写入该区域,也可以从该区域中读取数据,也即,用户可以进行访问。OP可以是指制造商在存储设备出厂前预留的、并未规划用途的区域,这一部分区域无法由用户进行访问,并且主机OS也不会显示一部分的容量,完全供SSD的存储器控制器使用。
这里,系统池可以是指所述存储设备中被规划为存储管理数据的区域。所说的管理数据可以但不限于包括:FTL算法需要使用的逻辑地址到物理地址转换(L2P,Logicaladdress To Physical address)映射表、存储器控制器的缓存数据备份等等。
在一些实施例中,用户数据池、系统池与预留空间之间存在以下关系:存储设备的实际容量一定时,分配到系统池的容量越大,分配到用户数据池的容量就越小,此时,若在保证用户容量不变的情况下,预留空间就会越小;反之,存储设备的实际容量一定时,分配到系统池的容量越小,分配到用户数据池的容量就越大,此时,若在保证用户容量不变的情况下,预留空间就会越大。在实际使用过程中,具有较大的预留空间的存储设备能够改善性能并常常可以提高存储设备的耐久性,有助于增大存储设备的使用寿命。基于上述关系,在存储设备的实际容量一定时,在保证用户容量的情况下,为了提升存储设备的性能及耐久性,可以适当降低分配给系统池的容量。
举例来说,如图6所示虚构的小小SSD。如图6所示,假设一个SSD包含4个通道(CH0-CH3),其连接着4个Die(每一个通道上的Die可并行操作),假设每个Die有6个闪存块(Block0-Block5),SSD共包含24个闪存块(Block)。每个闪存块内有9个小方块,每一个小方块的大小与逻辑页大小一样。在该场景下,一种规划方式可以如下:在前述的24个闪存块中,假设其中的12个闪存块(比如,Block0-Block2)大小为SSD容量(或者用户容量),这部分容量的闪存块用户可以进行访问。另外4个闪存块(Block3)被分配给系统池;此时,预留空间(OP)包含8个闪存块(Block4-Block5)。若用户容量不变仍为12个闪存块,若分配给系统池8个闪存块(假设Block3-Block4),此时,预留空间(OP)仅剩余4个闪存块(假设Block5)。
基于前述的存储设备及电子设备,在存储设备包含的存储器控制器在接收到某些工作模式切换命令后且在进行工作模式切换之前,会将存储器控制器的缓存中的数据进行备份,以防数据丢失。比如,在遇到上述工作模式切换情况时,存储器控制器的冗余校验缓存中的冗余校验数据就需备份至存储阵列,以防数据丢失造成用户数据的无法读取。然目前采用的对于冗余校验数据的备份方式使得备份的冗余校验数据占用备份区的容量较大,由于备份区被划分为系统池,因此,使得被分配至系统池的Block数量比较多,进而分配到用户数据池的Block数量会减少,在保证用户容量的前提下,使得预留空间减少,不利于存储系统的编程性能(Program Performance)的提升及包含存储系统的存储设备的耐久性降低。
为了解决上述的技术问题,参看图7,本申请实施例提供一种存储器控制器的操作方法。需要说明的是,所述存储器控制器包含在存储系统;所述存储系统还包括具有存储阵列且被所述存储器控制器控制的存储器。具体地,所述操作方法可以包括:
S701:响应于工作模式切换命令,确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态;所述冗余校验数据用于所述存储阵列中对应存储区的数据恢复;
S702:将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区。
需要说明的是,本申请实施例提供的操作方法可以是在存储器控制器(Controller)侧执行。上述操作的过程具体可以包括:存储器控制器响应于工作模式切换命令,确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态;然后,将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区。具体地,存储器控制器在接收到工作模式切换命令后,还未将存储系统的工作模式切换到目标模式之前,先将存储器控制器包含的冗余校验缓存中处于更新状态的冗余校验数据备份至存储阵列的备份区。这种仅将处于更新状态的冗余校验数据备份到备份区的备份方式,与将冗余校验缓存中的全部冗余校验数据进行备份,不仅能够排除重复备份情况的发生;并且由于备份数据量降低,使得备份区使用量减少,由于备份区属于前述的系统池,基于此,分配给系统池的block数量可以适当的减少,分配给用户数据池的block数量就增加了,那么,在保证用户容量的前提下,能够增大存储阵列的预留空间,使得写加速比较小,能够提高了存储设备的寿命。并且为了快速备份,备份区的存储单元被配置为SLC类型,在备份数据量降低后,备份区的擦除次数(EC,Erase Count)降低,从而提高包含该存储器控制器的存储设备的性能和耐久性。
这里,所述工作模式切换命令可以包括以下之一:启停单元SSU模式切换命令、待机模式切换命令、写加速WB模式切换命令。
其中,SSU模式切换命令是主机用来切换与之耦接的包含存储系统的设备的功耗模式的。比如,在与主机耦接的存储设备为UFS时,UFS定义了4种基本功耗模式:Active,Idle,Power Down和Sleep(简称AIDS),外加3个过渡功耗模式:Pre-Active,Pre-Sleep和Pre-Power Down,一共是7种功耗模式。其中,Active模式:UFS设备在执行命令或者做后台任务(Background Operation)时处于这种状态;Idle模式:UFS设备空闲时,即既没有来自UFS主机的命令,自身也没有后台任务需要处理,设备就处于该状态;Sleep模式:处于Idle模式达到一定时间后,进行睡眠模式;在睡眠模式下,VCC电源可能被切断(取决UFS设备设计),即切断闪存供电。Power Down模式:掉电模式,也就是,给UFS供电的电源停止给UFS供电了。在掉电模式下,所有电源供电比如VCC,VCCQ和VCCQ2都可能被掐断(取决UFS设备设计),该模式是最省电的功耗模式了。
上述7种功耗模式之间的切换,如图8所示,大多数是利用上述描述的SSU命令进行切换。其中,bInitPowerMode参数定义了存储设备在完成初始化阶段后应转换到的电源模式,在该bInitPowerMode=00h时,指示存储设备经Pre-Sleep自动的进入Sleep模式。图8中的各种功耗模式之间的转换符合制定的相关协议,基于本申请的研究重点及篇幅的限制,对于具体的协议内容在此不再赘述。需要知道的是,在UFS切换到比较省电模式(Idle模式、Sleep模式、Power Down模式)时,UFS中的一些功能是不能实现的,比如,存储器控制器对存储器的写入操作、读取操作、擦除操作等功能是不能实现的。又由于存储器控制器的缓存大部分是易失性存储结构,为了使得数据不丢失,需要对存储器控制器中还有效的数据进行备份,比如,存储器控制器的冗余校验缓存内处于更新状态的冗余校验数据。
其中,待机模式,也就是,Auto-standby,在该模式下,与主机耦接的存储系统也处于省电模式。此时,也需在存储系统进入待机模式之前,将需要备份的数据进行备份。
其中,写加速模式,也就是,Write Booster(WB)模式。Write Booster模式是在UFS2.2和UFS3.1规范中引入的新功能,通过缓存写入的方式来提高UFS的写性能。在存储系统技术领域,MLC/TLC/QLC NAND的写性能明显低于SLC NAND,因为逻辑定义的MLC/TLC/QLC位需要更多的编程步骤,纠错概率更高。在一些实施例中,为了提高写性能,若存储系统中的存储阵列为MLC/TLC/QLC NAND时,通过将一部分的存储单元配置为SLC NAND,并用作写缓冲区(或者称为Write Booster Buffer),以较低的延迟处理写请求,以提高整体写性能。那么,在存储系统切换到WB模式之前,需要以MLC/TLC/QLC形式写入存储阵列的数据,需要进行备份。比如,存储器控制器的冗余校验缓存内处于更新状态的冗余校验数据在正常情况下可能需要以MLC/TLC/QLC编程形式写入存储阵列,存储器控制器在接收到WB模式切换命令后,需要将这些处于更新状态的冗余校验数据先备份到存储阵列的备份区。
也就是说,存储器控制器在接收到以上之一的工作模式切换命令后,存储器控制器所在存储系统不是会进入省电的工作模式就是要进入将数据以SLC的编程方式先写入写缓冲区的工作模式,此时,为了保证存储器控制器的缓存内的数据不丢失,需要将数据进行备份。
这里,所说的冗余校验缓存可以是指存储器控制器中用于存储冗余校验数据的区域。在实际应用过程中,存储器控制器包含的冗余校验缓存至少包括用于缓存L2 Parity的L2校验缓存和用于缓存GC Parity的GC校验缓存;其中,L2 Parity可以是指因与该存储器控制器耦接的主机发送的写入命令而产生的冗余校验数据,并且将存储器控制器响应于该写入命令使存储器执行的写入操作简称为L2 Write;L2 Parity在存储器控制器暂存的区域为L2校验缓存。GC Parity可以是指因垃圾回收(GC,Garbage Collection)而产生的冗余校验数据,并且将存储器控制器响应于GC过程中的写入命令使存储器执行的写入操作简称为GC Write;GC Parity在存储器控制器中暂存的区域为GC校验缓存。在一些实施例中,L2Write和GC Write统称后续的第一操作。
本申请实施例所说的冗余校验数据包括L2 Parity和GC Parity两种冗余校验数据。在实际应用过程中,对于L2 Parity和GC Parity会备份至不同的备份区。
基于此,本申请实施例中确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态可以包括:确定L2校验缓存中的L2 Parity的状态和确定GC校验缓存中的GCParity的状态。对应的,所说的将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区可以包括:将处于更新状态的L2 Parity备份至系统池中用于备份L2Parity的备份区(可以简称为L2 Swap VB)和将处于更新状态的GC Parity备份至系统池中用于备份GC Parity的备份区(可以简称为GC Swap VB)。
在一些实施例中,当存储设备出现的错误位数超过ECC纠错能力范围后,ECC纠错就不能保证数据的准确了。在一些企业级以及越来越多的消费级存储设备均采用了类似于独立冗余磁盘阵列(RAID,Redundant Arrays of Independent Disks)的独立NAND冗余阵列(RAIN)纠错技术。需要说明的是,存储设备的RIAN方式可以根据存储设备中包含的存储阵列的架构或者设计人员决定。
为了理解RIAN,一种示例性结构如下面图9所示。需要说明的是,图9所示可以是TLC类型的存储阵列中分配用于存储用户数据的一个Block,也可以称之为一个Fund,也就是说,该Block属于用户数据池。假设该Block包含Die0和Die1两个Die,每一个Die包括四个Plane(简称PL),比如,Die0包括:PL0、PL1、PL2及PL3;再比如,Die1包括:PL0、PL1、PL2及PL3。并且假设该Block包含128根字线,若每个字线包含18个逻辑页(在存储单元为TLC的情况下,属于6个物理页),这样整个Block总共包含2304个逻辑页(data page,也即图9所示的每一个小方块)。并且将这Block包含的2304个逻辑页划分成288个pageline,分别为:p0至p287,每一个pageline耦接8个data page,形成16个写入轮(Write round)。基于此,如图9所示,可以采用的RAIN方式如下:采用每一写入轮对应位置的几个pageline对应的127个逻辑页写入的数据进行冗余计算,获得对应的Parity,并将Parity存入该Block(或者Fund)末尾,比如,图9所示Die1中的最后一个PL(也即PL3)中右下角的写有P的逻辑页。
举例说明,假设在Write round 0写入时,若p0耦接的8个data page写入数据后,利用该p0的数据与其他轮对应位置(比如,p18、……、p270)对应的数据计算一个L2Parity,然后存储在p270的最右侧的逻辑页中。再比如,若在Write round 1写入时,若p18耦接的8个逻辑页写入数据后,利用该p18的数据与其他轮(比如,p0、……、p270)对应的位置的数据计算L2 Parity。依次类推。需要说明的是,这里描述的写入顺序为顺序写入,也即按照Write round 0、Write round 1、……等顺序写入。
需要说明的是,图9仅是示例性描述RAIN技术的内容。实际上,存储设备可以根据实际容量及结构确定具体的RAIN的方式。
在一些实施例中,L2 Parity是在存储器控制器中产生的并且暂时存储在冗余校验缓存中。然后,从冗余校验缓存写入存储阵列的存储区;所述存储区属于用户数据池。也就是说,在存储设备采用了冗余纠错技术,它需要额外的空间存储冗余校验数据,因此,必然会消耗一些用户空间。
为了方便理解,L2 Parity的产生与存储。如图10所示,其示出主机与存储系统之间的数据交互的示意图。在图10中,主机通过存储器控制器向存储器写入一笔用户数据(比如写入一个逻辑页的数据,该逻辑页对应前述的存储区)时,存储器控制器会通过包含的冗余计算单元计算得到该笔数据对应的L2Parity,并且将该L2 Parity暂存到冗余校验缓存中的L2校验缓存,然后,在将该L2 Parity写入到存储阵列的属于用户数据池的指定的存储区,以备后续纠错使用。图10中还示出了,在GC过程中,当需要将存储阵列中的一笔用户数据(垃圾回收的有效数据)重新写入新的逻辑页时,存储器控制器会读取该笔用户数据,对该笔用户数据重新编码后,通过冗余计算单元重新为该笔用户数据计算Parity,此时的Parity称之为GC Parity。之后,将GC Parity暂存于GC校验缓存,之后,重新存储到存储阵列的指定的存储区。需要说明的是,图10中以逻辑页Page0至Page126构建RAIN,在Page127中存储L2 Parity仅是一个示例。在实际中,还有其他RAIN方式及L2 Parity存储方式。
本申请中为实现将更新状态的冗余校验数据备份,在一些实施例中,所述确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态,可以包括:
获得所述冗余校验数据对应的标志信息;
基于所述标志信息确定所述冗余校验数据的状态。
在一些实施例中,所述标志信息包括第一标志或第二标志;所述基于所述标志信息确定所述冗余校验数据的状态,包括:
在所述标志信息包括第一标志时,确定对应的所述冗余校验数据的状态为未更新状态;
在所述标志信息包括第二标志时,确定对应的所述冗余校验数据的状态为更新状态。
在一些实施例中,所述标志信息包括第二标志;所述操作方法还包括:
将所述冗余校验缓存中因执行第一操作产生的冗余校验数据对应的标志信息置为所述第二标志;其中,所述第二标志对应的冗余校验数据的状态为更新状态。
前面描述的过程是,存储器控制器通过获得冗余校验数据对应的标志信息来确定冗余校验数据的状态。在标志信息为第一标志时,冗余校验数据的状态为未更新状态;在标志信息为第二标志时,冗余校验数据的状态为更新状态。其中,在因执行第一操作时产生的冗余校验数据对应的标志信息被置为第二标志。
在一些实施例中,所述第一操作包括:与所述存储系统耦接的主机触发的写入操作和/或所述存储器控制器触发的写入操作。其中,与所述存储系统耦接的主机触发的写入操作可以是存储器控制器响应于与该存储器控制器耦接的主机发送的写入命令而使存储器执行的写入操作,也就是前述的L2 Write。所述存储器控制器触发的写入操作可以是指存储器控制器在实现GC过程中生成的写入命令而使存储器执行的写入操作,也即前述的GCWrite。
也就是说,为了实现本申请的备份策略,本申请实施例设置标志位。该标志位用于存储冗余校验数据对应的标志信息;该标志信息用于指明对应的冗余校验数据的状态(更新状态或未更新状态)。
具体举例来说,假设采用前述图9所描述的RAIN方式时,标志位设置可以参见图11所示。具体来说,图11示出用户数据池对应的逻辑页与标志位之间的示例性关系。基于图9所示的RAIN,本申请实施例一共设置18个标志位(tag),分别为:tag0~tag17,其中,每一个Write round均包括tag0~tag17。因此,基于对图9所描述的RAIN方式,每写入一个逻辑页的数据后,存储器控制器会计算一个Parity,此时该逻辑页对应的tag就会被置为第二标志。
举例来说,如图11所示,假设上一轮(Round 0)的写入过程已经完成,并且响应于工作模式切换命令时,存储器控制器中的L2 Parity已经备份或者存储到用户数据池的相应位置。在这一轮(也即Round 1)中假设仅写入p18至p20三个逻辑页的数据,此时,p18对应的tag0会被置为第二标志;p19对应的tag1会被置为第二标志;p20对应的tag2会被置为第二标志,基于此,p18对应数据与其他写入轮(比如,p0、……、p270)对应位置的数据进行冗余计算,获得的L2 Parity即处于更新状态;p19对应数据与其他写入轮(比如,p1、……、p271)对应位置的数据进行冗余计算,获得的L2 Parity即处于更新状态;p20对应数据与其他写入轮(比如,p2、……、p272)对应位置的数据进行冗余计算,获得的L2 Parity即处于更新状态,其余的p0等对应的tag应该为第一标志,对应的L2 Parity处于未更新状态。
也即是,在一些实施例中,所述标志信息还包括第一标志;所述操作方法还包括:
在因执行所述第一操作产生的冗余校验数据被备份之后,将所述因执行第一操作产生的冗余校验数据对应的标志信息置为所述第一标志;其中,所述第一标志对应的冗余校验数据的状态为未更新状态。
在一些实施例中,所述操作方法还可以包括:
维护冗余校验状态表;所述冗余校验状态表包括所述冗余校验缓存内的冗余校验数据与标志信息之间的映射关系;
所述获得所述冗余校验数据对应的标志信息,包括:
根据所述冗余校验状态表获得所述冗余校验数据对应的标志信息。
需要说明的是,这里描述了一种确定冗余校验数据对应标志信息的方式。具体实现可以包括:在存储器控制器使所述存储器执行第一操作时,确定冗余校验缓存中的冗余校验数据与标志信息之间映射关系,并且将该映射关系集中存储在一个链表(也即冗余校验状态表)中。然后,在备份过程中,存储器控制器可以以冗余校验数据为索引,在存储的冗余校验状态表查找冗余校验数据对应的标志信息。其中,标志信息中的第一标志可以为0或1,对应的,标志信息中的第二标志可以为1或0。只要第一标志和第二标志可以标识两种状态即可。
在一些实施例中,所述将所述状态为更新状态的所述冗余校验数据备份至所述存储阵列的备份区,可以包括:
逐步遍历所述冗余校验缓存中的冗余校验数据,将标志信息为所述第二标志的冗余校验数据备份至所述存储阵列的备份区;跳过标志信息为所述第一标志的冗余校验数据不进行备份,直到遍历完所述冗余校验缓存中的冗余校验数据为止。
需要说明的是,这里所说的逐步遍历所述校验缓存内的冗余校验数据,可以是指分别遍历L2校验缓存中的L2 Parity和GC校验缓存中的GC Parity。
在实际使用过程中,存储器控制器对于L2 Parity和GC Parity分别维护一张冗余检验数据存储表,比如,L2存储表和GC存储表。对于每一个存储表的遍历方式相似。这里仅以L2存储表为例说明。该L2存储表可以为链表。基于此,L2存储表的每一个节点存储着L2Parity对应的在L2校验缓存中的存储地址信息及执向下一节点的指针。在这种情况下,遍历L2校验缓存中的L2 Parity可以包括:从L2存储表的根节点起,基于每一个节点上存储的指针,逐一查找所述L2存储表中的节点上存储的地址信息,并获得地址信息对应的L2Parity,遇到更新状态的L2 Parity备份至待L2备份区,遇到未更新状态的L2Parity不进行备份,直到遍历完所述L2校验缓存中所有的L2 Parity为止。以此,将遍历并获得L2校验缓存中的全部L2 Parity,进而将L2校验缓存中的处于更新状态的L2 Parity备份至L2备份区。对于GC校验缓存中的GC Parity的遍历可参考前述描述的L2校验缓存中的全部L2Parity备份,最终将处于更新状态的GC Parity备份至GC备份区。
为了理解本申请,参看图12和图13,其中,图12示出本申请提供的存储器控制器因执行第一操作时生成与冗余校验数据对应的标志信息的流程示意图;图13示出本申请提供的将冗余校验缓存中处于更新状态的冗余校验数据备份至备份区的具体流程示意图。
如图12所示,存储器控制器控制存储器执行第一操作(L2 Write和/或GC Write)时,判断一逻辑页的用户数据是否完全写入,若没有,则继续写入;若已经完全写入,则将该逻辑页对应的标志位置为第二标志。也就是,在L2 Write和/或GC Write时,一个逻辑页的用户数据完全写入后,该数据页对应的标志位置为第二标志,对应的,该逻辑页存储的用户数据对应的冗余校验数据的标志信息为第二标志,也即是,该逻辑页存储的用户数据对应的冗余校验数据处于更新状态。
如图13所示,存储器控制器在响应于以下三种工作模式SSU、Auto-standby、WriteBooster之一的工作模式切换命令,在对冗余校验缓存内的冗余校验数据进行备份到备份区的过程中,遍历所述冗余校验缓存中的冗余校验数据,获得每一个待备份的冗余校验数据,检查所述待备份的冗余校验数据对应的标志信息,在标志信息为第二标志时,对应的待备份的冗余校验数据的状态是更新状态,备份该对应的待备份的冗余校验数据至备份区,并且将该待备份的冗余校验数据对应的逻辑页的标志位重新置为第一标志;在标志信息为第一标志时,跳过该待备份的冗余校验数据,不进行备份,直到遍历完所述冗余校验缓存中所有的冗余校验数据为止。需要说明的是,如前述所描述,GC Parity和L2 Parity分开备份至不同的备份区。
本申请实施例提供一种存储器控制器的操作方法,通过仅将更新状态的冗余校验数据备份,无需将所有冗余校验数据全部备份,不会使得备份区的写入量及使用量增大,节省了备份区,能够使得预留空间增多。并且,由于备份区的存储单元的类型通常为SLC类型,通过上述仅备份更新状态的冗余校验数据,备份区的使用量的降低,备份区的擦除次数也会降低,从而提高产品的性能和耐久性。
基于相同的发明构思,本申请还提供一种存储器控制器,所述存储器控制器包含在存储系统;所述存储系统还包括具有存储阵列且被所述存储器控制器控制的存储器;所述存储器控制器包括:处理器、冗余校验缓存;其中,
所述处理器,被配置为:响应于工作模式切换命令,确定位于所述存储器控制器的冗余校验缓存内的冗余校验数据的状态;所述冗余校验数据用于所述存储阵列中对应状态的所述存储区的数据恢复;将所述状态为更新冗余校验数据备份至所述存储阵列的备份区。
在一些实施例中,所述处理器,还被配置为:获得所述冗余校验数据对应的标志信息;基于所述标志信息确定所述冗余校验数据的状态。
在一些实施例中,所述标志信息包括第一标志或第二标志;所述处理器,还被配置为:在所述标志信息包括第一标志时,确定对应的所述冗余校验数据的状态为未更新状态;
在所述标志信息包括第二标志时,确定对应的所述冗余校验数据的状态为更新状态。
在一些实施例中,所述标志信息包括第二标志;所述处理器,还被配置为:将所述冗余校验缓存中因执行第一操作产生的冗余校验数据对应的标志信息置为所述第二标志;其中,所述第二标志对应的冗余校验数据的状态为更新状态。
在一些实施例中,所述标志信息还包括第一标志;所述处理器,还被配置为:在因执行所述第一操作产生的冗余校验数据被备份之后,将所述因执行第一操作产生的冗余校验数据对应的标志信息置为所述第一标志;其中,所述第一标志对应的冗余校验数据的状态为未更新状态。
在一些实施例中,所述处理器,还被配置为:维护冗余校验状态表;所述冗余校验状态表包括所述冗余校验缓存内的冗余校验数据与标志信息之间的映射关系;
所述处理器,还被配置为:根据所述冗余校验状态表获得所述冗余校验数据对应的标志信息。
在一些实施例中,所述处理器,还被配置为:逐步遍历所述冗余校验缓存中的冗余校验数据,将标志信息为所述第二标志的冗余校验数据备份至所述存储阵列的备份区;跳过标志信息为所述第一标志的冗余校验数据不进行备份,直到遍历完所述冗余校验缓存中的冗余校验数据为止。
在一些实施例中,所述存储器控制器还包括与主机耦接的第一通信接口;所述第一通信接口被配置为接收所述主机发送的所述工作模式切换命令。
在一些实施例中,所述存储器控制器还包括与所述存储器耦接的第二通信接口;所述第二通信接口被配置为向所述存储器发送携带有所述状态为更新状态的所述冗余校验数据的写入命令。
这里,第一通信接口可以为前述示例中的前端接口;第二通信接口可以为前述示例中的后端接口。
需要说明的是,该存储器控制器与前述的存储器控制器的操作方法属于同一发明构思。该存储器控制器中出现的名词在前述的操作方法及存储器控制器中均已详细解释,在此同样适用,在此不再一一赘述。应该理解的是,这里仅描述的是与本申请技术方案最相关的存储器控制器的结构。对于如图1至3中所示的存储器控制器的结构及描述,本申请提供的存储器控制器也是包含及适用的。存储器控制器还包括未示出但是存储系统正常工作所需的结构,鉴于申请文件的篇幅,本申请不再一一赘述。
举例说明,如图14所示,其示出本申请提供的一种存储器控制器的硬件结构示意图。该存储器控制器106包括:至少一个处理器1401、冗余校验缓存1402和至少一个通信接口1403(如前述的第一通信接口和第二通信接口),存储器控制器106中的各个组件通过总线系统1404耦合在一起,可理解,总线系统1404用于实现这些组件之间的连接通信。总线系统1404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图14中将各种总线都标为总线系统1404。
可以理解,冗余校验缓存1402可以是指一级缓存(L1 Cache)、二级缓存(L2Cache)、三级缓存(L3 Cache)任一或三种的任意组合。按照使用功能来说,校验缓存1402至少包括L2校验缓存和GC校验缓存。
该存储器控制器106中还可能包含其他存储结构,这些存储结构统称为内存。内存可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagneticrandom access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,SynchronousStatic Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random AccessMemory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random AccessMemory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data RateSynchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的冗余校验缓存1402旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的冗余校验缓存1402用于存储各种类型的数据以支持存储器控制器106的操作。这些数据的示例包括:用于在存储器控制器106上操作的任何计算机程序,如冗余校验数据可以包含在冗余校验缓存1402中。
上述本发明实施例揭示的方法可以应用于处理器1401中,或者由处理器1401实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,存储器控制器106可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行上述方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
基于前述方案,本申请还提供一种存储系统,包括:一个或多个存储器;所述一个或多个存储器包含存储阵列;
以及与所述一个或多个存储器耦接且用于控制所述一个或多个存储器的存储器控制器;其中,
所述存储器控制器,包括:与主机耦接的第一通信接口、处理器、冗余校验缓存及与所述一个或多个存储器耦接的第二通信接口;其中;
所述第一通信接口,被配置为:接收所述主机发送的工作模式切换命令;
所述处理器,被配置为:响应于所述工作模式切换命令,确定位于所述存储器控制器包含的冗余校验缓存内的每一个冗余校验数据的状态;所述每一个冗余校验数据用于所述存储阵列中对应存储区的故障数据恢复;生成携带有所述状态为更新状态的所述冗余校验数据写入命令;
所述第二通信接口,被配置为:向所述一个或多个存储器发送所述写入命令;
所述一个或多个存储器,被配置为:响应于所述写入命令,将所述状态为更新状态的所述冗余校验数据写入到所述存储阵列的备份区。
在一些实施例中,所述存储系统包含在以下之一:固态硬盘SSD、存储卡。
这里,第一通信接口可以为前述示例中的前端接口;第二通信接口可以为前述示例中的后端接口。
需要说明的是,该存储系统与前述的存储器控制器的操作方法属于同一发明构思。该存储系统包含前述的存储器控制器,因此,此处出现的名词在前述的操作方法及存储器控制器中均已详细解释,在此同样适用,在此不再一一赘述。应该理解的是,这里仅描述的是与本申请技术方案最相关的存储器控制器的结构。对于如图1至6中所示的存储系统的结构及描述,本申请提供的存储系统也是包含及适用的。存储系统还包括未示出但是存储系统正常工作所需的结构,鉴于申请文件的篇幅,本申请不再一一赘述。
本申请还提供一种电子设备,包括:存储系统;所述存储系统包括一个或多个存储器,所述一个或多个存储器包含存储阵列;以及与所述一个或多个存储器耦接且用于控制所述一个或多个存储器的存储器控制器;
及与所述存储系统耦接的主机;其中,
所述主机,与所述存储器控制器的第一通信接口耦接,被配置为:通过所述第一通信接口向所述存储器控制器发送工作模式切换命令;
所述存储器控制器,通过包含的第二通信接口与所述一个或者多个存储器耦接,被配置为:通过所述第一通信接口接收所述工作模式切换命令;响应于所述工作模式切换命令,确定位于所述存储器控制器包含的冗余校验缓存内的每一个冗余校验数据的状态;所述每一个冗余校验数据用于所述存储阵列中对应存储区的故障数据恢复;生成携带有所述状态为更新状态的所述冗余校验数据写入命令;通过所述第二通信接口向所述一个或多个存储器发送所述写入命令;
所述一个或多个存储器,被配置为:响应于所述写入命令,将所述状态为更新状态的所述冗余校验数据写入到所述存储阵列的备份区。
在一些实施例中,所述存储器控制器,还被配置为:将因所述一个或多个存储器执行第一操作产生的冗余校验数据对应的标志信息置为第二标志;其中,所述第一操作包括:所述主机触发的写入操作和/或所述存储器控制器触发的写入操作;在所述标志信息为第二标志时,对应的冗余校验数据的状态为更新状态。
这里,第一通信接口可以为前述示例中的前端接口;第二通信接口可以为前述示例中的后端接口。
需要说明的是,该电子设备与前述的存储器控制器的操作方法属于同一发明构思。该电子设备包含前述的存储系统,因此,此处出现的名词在前述的操作方法及存储器控制器中均已详细解释,在此同样适用,在此不再一一赘述。应该理解的是,这里仅描述的是与本申请技术方案最相关的结构。对于如图1中所示的存电子设备的结构及描述,本申请提供的电子设备也是包含及适用的。电子设备还包括未示出但是电子设备正常工作所需的结构,鉴于申请文件的篇幅,本申请不再一一赘述。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
- 存储器系统、存储器控制器及其操作方法
- 存储器控制器、包括存储器控制器的存储器系统和应用处理器
- 存储器系统以及存储器系统的操作方法
- 存储器系统以及存储器系统的操作方法
- 存储器控制器及其操作方法
- 存储器控制器及操作方法,及含存储器控制器的电子设备
- 存储器控制器及操作方法,及含存储器控制器的电子设备