数据存储设备和包括该数据存储设备的数据处理系统的制作方法

文档序号:11285642阅读:226来源:国知局
数据存储设备和包括该数据存储设备的数据处理系统的制造方法与工艺

相关申请的交叉引用

本申请要求于2016年3月14日提交的韩国专利申请no.10-2016-0030241的优先权,其公开内容通过引用的方式完整地并入本文。

本发明构思的实施例涉及一种数据存储设备,更具体地,涉及一种包括非易失性随机存取存储器的数据存储设备和包括该数据存储设备的数据处理系统。



背景技术:

大容量存储设备通常包括多个存储器设备。存储器设备用于存储数据,并且可以分为易失性存储器设备和非易失性存储器设备。闪存设备是电可擦除可编程只读存储器(eeprom)的示例,其中在单个编程操作中对多个存储器单元进行擦除或编程。对每个页执行编程或读操作,并且对每个块执行擦除操作。块可以包括多个页。一种类型的闪存设备是nand闪存设备。

同时,在存储设备故障或电源故障的情况下,经常使用数据复制来进行数据恢复。



技术实现要素:

根据本发明构思的一些实施例,提供了一种数据存储设备,其包括多个固态盘(ssd)和被配置为控制ssd的控制器。所述控制器可以被配置为响应于主机的第一写请求而将第一数据段和第一数据段的复制数据写入所述多个ssd中的两个相应ssd的第一类型存储器,可以被配置为响应于主机的第二写请求而将第二数据段和第二数据段的复制数据写入所述多个ssd中的两个相应ssd的第一类型存储器,并且可以被配置为将基于第一数据段的复制数据和第二数据段的复制数据所产生的奇偶校验数据写入所述多个ssd中的奇偶校验ssd的第一类型存储器和第二类型存储器中的任何一个。

根据本发明构思的其他实施例,提供了一种数据处理系统,其包括主机和连接到主机的数据存储设备以及控制器,所述数据存储设备包括第一至第nssd,其中n是至少为2的整数,所述控制器被配置为控制第一至第nssd。

所述控制器可以被配置为将与从主机接收的多个写请求相对应的数据段的每一个存储在第一至第(n-1)ssd中相应的ssd的第一类型存储器中,可以被配置为将基于至少一些所述数据段的复制数据存储在第nssd的第一类型存储器中,并且可以被配置为将基于所有所述数据段的奇偶校验数据存储在第nssd的第一类型存储器或第二类型存储器中。

根据本发明构思的另外实施例,提供了一种操作数据存储设备的方法,所述数据存储设备包括控制器、缓冲器和多个ssd。所述方法包括:从主机接收第一写请求;响应于第一写请求而将第一数据段写入缓冲器;将第一数据段写入所述多个ssd中的第一ssd;将第一数据段写入所述多个ssd中的第nssd;将对第一写请求的响应发送到主机;从主机接收第二写请求;响应于第二写请求而将第二数据段写入缓冲器;将第二数据段写入第二ssd;将基于第二数据段的复制数据写入第nssd;以及将对第二写请求的响应发送到主机。

根据本发明构思的另外实施例,提供了一种数据存储设备,其包括:多个固态盘(ssd),至少包括第一ssd、第二ssd和奇偶校验ssd,其中,每个ssd包括至少一个第一类型存储器和至少一个第二类型存储器;以及控制器,被配置为控制所述多个ssd的操作,其中,所述控制器被配置为响应于从主机接收的第一写命令而将第一数据段写入第一ssd的第一类型存储器,响应于从主机接收的第二写命令而将第二数据段写入第二ssd的第一类型存储器,并且还响应于从主机接收的第一写命令和第二写命令中的至少一个而将基于第一数据段和第二数据段的数据写入奇偶校验ssd的第一类型存储器,并且随后将至少从第一数据段和第二数据段产生的奇偶校验数据写入奇偶校验ssd的第一类型存储器和第二类型存储器中的至少一个。

附图说明

通过参照附图详细描述本发明构思的示例性实施例,本发明构思的上述及其他特点和优点将变得更清楚。

图1是根据本发明构思的一些实施例的数据处理系统的框图。

图2是根据本发明构思的一些实施例的图1所示的主机和控制器的框图。

图3是图1所示的数据存储设备的实施例的框图。

图4a、图4b和图4c是图3所示的第一固态驱动器或固态盘(ssd)的示例的框图。

图5a是根据本发明构思的一些实施例的nand型闪存设备的二维存储器单元阵列的示图。

图5b是根据本发明构思的一些实施例的nand型闪存设备的三维存储器单元阵列的示图。

图6是用于解释根据本发明构思的一些实施例的数据存储设备的操作的示图。

图7是用于解释根据本发明构思的其他实施例的数据存储设备的操作的示图。

图8是用于解释根据本发明构思的另外实施例的数据存储设备的操作的示图。

图9a、图9b、图9c和图9d示出了根据本发明构思的一些实施例的控制器向ssd发出的命令。

图10是根据本发明构思的一些实施例的复制数据的方法的流程图。

图11是根据本发明构思的其他实施例的复制数据的方法的流程图。

图12是根据本发明构思的一些实施例的数据处理系统的框图。

具体实施方式

本发明构思的一些实施例提供了一种数据存储设备,其可以包括多个固态驱动器或固态盘(ssd),每个ssd包括用于主复制(例如,raid1复制)的第一类型存储器(例如,非易失性随机存取存储器(nvram))和用于辅复制(例如,raid5/6复制)的第二类型存储器(例如,nand(例如,nand闪存))。

图1是根据本发明构思的一些实施例的数据处理系统100的框图。图2是根据本发明构思的一些实施例的图1所示的主机200和控制器310的框图。

参考图1和图2,数据处理系统100可以包括主机200和通过接口110与主机200传送命令和/或数据的数据存储设备300。数据处理系统100可以被实现为个人计算机(pc)、工作站、数据中心、互联网数据中心(idc)、存储区域网络(san)、网络附属存储器(nas)或移动计算设备,但是本发明构思不限于这些示例。移动计算设备可以被实现为膝上型计算机、蜂窝电话、智能电话、平板pc、个人数字助理(pda)、企业数字助理(eda)、数字静止相机、数字视频相机、便携式多媒体播放器(pmp)、个人导航设备或便携式导航设备(pnd)、手持式游戏控制台、移动互联网设备(mid)、可穿戴计算机、物联网(iot)设备、物联网(ioe)设备、无人机或电子书,但是本发明构思不限于这些示例。

接口110可以是串行高级技术附件(sata)接口、sata快速(satae)接口、sas(串行附件小型计算机系统接口(scsi))、外围组件互连高速(pcie)接口、非易失性存储器快速(nvme)接口、高级主机控制器接口(ahci)或多媒体卡(mmc)接口,但不限于此。接口110可以传输电信号或光信号。

主机200可以经由接口110控制数据存储设备300的数据处理操作(例如,写操作或读操作)。主机200可以指主机控制器。

数据存储设备300可以包括控制器310、缓冲器360和多个存储器设备410至450。数据存储设备300还可以包括电源管理集成电路(pmic)370,如图2所示。图1中的多个存储器设备410至450可以统称为存储器群集400,并且图2中的存储器设备410至430可以称为存储器群集400a。存储器群集400和400a均可以包括n个ssd,其中n是至少为2的任何整数。尽管在图1所示的实施例中n为5(包括ssd410至450)以及在图2所示的实施例中n为3(包括ssd410至430),但是本发明构思不限于那些实施例,ssd的数量可以改变。

数据存储设备300可以是基于闪存的存储器设备,但不限于此。数据存储设备300可以被实现为ssd、嵌入式ssd(essd)、通用闪速存储器(ufs)、mmc、嵌入式mmc(emmc)或受管理的nand,但是本发明构思不限于这些示例。基于闪存的存储器设备可以包括存储器单元阵列。存储器单元阵列可以包括多个存储器单元。存储器单元阵列可以包括二维存储器单元阵列或三维存储器单元阵列。

三维存储器单元阵列可以单片地形成在具有设置在硅衬底上或上方的有源区的存储器单元阵列中的一个或多个物理层级处,并且可以包括存储器单元的操作所涉及的电路。所述电路可以形成在硅衬底中、硅衬底上或上方。术语“单片”意指阵列中的每一层级的层直接沉积在阵列中的下层级的层上。三维存储器单元阵列可以包括竖直取向的竖直nand串,使得至少一个存储器单元置于另一存储器单元上或上方。所述至少一个存储器单元可以包括电荷俘获层。

以下专利文献(通过引用并入本文)描述了用于三维存储器阵列的适当构造,其中三维存储器阵列被构造为多个层级,并在层级之间共享字线和/或位线:美国专利no.7,679,133;8,553,466;8,654,587;8,559,235;以及美国专利公开no.2011/0233648。

备选地,数据存储设备300可以被实现为硬盘驱动器(hdd)、相变随机存取存储器(pram)设备、磁阻ram(mram)设备、自旋转移力矩mram(stt-mram)设备、铁电ram(fram)设备或电阻ram(rram)设备,但是本发明构思不限于这些实例。

控制器310可以控制主机200、缓冲器360和存储器群集400之间的命令和/或数据的传输或处理。控制器310可以实现在集成电路(ic)或片上系统(soc)中。

参考图2,主机200可以包括总线架构210、中央处理单元(cpu)220和第一接口设备230。控制器310可以包括总线架构311、内部存储器(例如,静态随机存取存储器(sram))315、第二接口设备320、cpu330、缓冲器控制器340和第三接口设备350。

cpu220和第一接口设备230可以经由总线架构210彼此传送命令和/或数据。尽管在图2所示的实施例中主机200包括总线架构210、cpu220和第一接口设备230,但是本发明构思不限于图2所示的主机200。主机200可以被实现为ic、主板、soc、应用处理器(ap)、移动ap、网络服务器、数据服务器或数据库服务器,但是本发明构思不限于这些示例。

总线架构210可以被实现为高级微控制器总线架构(amba)、高级高性能总线(ahb)、高级外围总线(apb)、高级可扩展接口(axi)、高级系统总线(asb)、axi一致性扩展(age)或其组合,但是本发明构思不限于这些示例。

cpu220可以产生用于控制数据存储设备300的写操作的写请求或用于控制数据存储设备300的读操作的读请求。写请求可以包括写地址(例如,逻辑地址),读请求可以包括读地址(例如,逻辑地址)。cpu220可以包括至少一个内核。请求可以指代命令。

第一接口设备230可以改变要发送给数据存储设备300的命令和/或数据的格式,并且可以通过接口110将格式改变的命令和/或数据发送给数据存储设备300。第一接口设备230还可以改变从数据存储设备300接收的响应和/或数据的格式,并且可以通过总线架构210将格式改变的响应和/或数据发送给cpu220。第一接口设备230可以包括发送和接收命令和/或数据的收发器。第一接口设备230的结构和操作可以被配置为与接口110兼容。

总线架构311可以被实现为amba、ahb、apb、axi、asb、ace或其组合,但是本发明构思不限于这些示例。

内部存储器315可以存储控制器310的操作所需的数据和/或从由控制器310执行的数据处理操作(例如,写操作或读操作)产生的数据。内部存储器315可以存储可以由cpu330执行的第一闪存转换层(ftl)代码。ftl代码可以简称为ftl。当数据存储设备300被启动时,第一ftl代码可以从存储器群集400加载到内部存储器315并且可以由cpu330执行。内部存储器315可以被实现为ram、动态ram(dram)、sram、缓冲器、缓冲存储器、高速缓存或紧耦合存储器(tcm),但是本发明构思不限于这些示例。

第二接口设备320可以改变要发送给主机200的响应和/或数据的格式,并且可以通过接口110将格式改变的响应和/或数据发送给主机200。第二接口设备320还可以从主机200接收命令和/或数据,改变命令和/或数据的格式,并且将改变格式的命令和/或数据发送给cpu330和/或缓冲器控制器340。第二接口设备320可以包括发送和接收信号和/或数据的收发器。

第二接口设备320的结构和操作可以被配置为与接口110兼容。第二接口设备320可以是sata接口、satae接口、sas、pcie接口、nvme接口、ahci、mmc接口、nand型闪存接口或nor型闪存接口,但不限于此。

cpu330可以通过总线架构311控制内部存储器315、第二接口设备320、缓冲器控制器340和第三接口设备350。cpu330可以包括至少一个内核。cpu330还可以控制pmic370。

根据cpu330的控制,缓冲器控制器340可以向缓冲器360写入数据和/或从缓冲器360读取数据。缓冲器控制器340可以控制对缓冲器360的写操作和读操作。缓冲器控制器340还可以被称为控制器或缓冲器管理器。

第三接口设备350可以根据cpu330的控制通过主通道cha、chb和chc中的一个控制针对存储器群集400a的数据处理操作(例如,写操作或读操作)。第三接口设备350可以是sata接口、satae接口、sas、pcie接口、nvme接口、ahci、mmc接口、nand型闪存接口或nor型闪存接口,但不限于此。

第三接口设备350可以包括纠错码(ecc)引擎(未示出)。ecc引擎可以校正要存储在存储器群集400a中的数据和/或从存储器群集400a输出的数据中的错误。ecc引擎可以实现在控制器310中的任何地方。

缓冲器360可以根据缓冲器控制器340的控制来写入从主机200接收的数据或读取所存储的数据。缓冲器360可以被实现为诸如缓冲存储器、ram、sram或dram之类的易失性存储器,但是本发明构思不限于这些示例。

缓冲器360可以包括:第一区域,存储用于相对于多个ssd410至450的逻辑地址到物理地址转换的映射表;以及第二区域,用作高速缓存,但是本发明构思不限于当前实施例。

当控制器310和缓冲器360分别形成在不同的半导体芯片中时,控制器310和缓冲器360可以实现在诸如层叠封装(pop)、多芯片封装(mcp)或系统内封装(sip)的单个封装中,但是本发明构思不限于这些示例。可以使用堆叠球(stackball)将包括缓冲器360的第一芯片堆叠在包括控制器310的第二芯片上方。

pmic370可以控制施加到控制器310、缓冲器360和/或存储器群集400a的操作电压。施加到控制器310的第一操作电压、施加到缓冲器360的第二操作电压和施加到存储器群集400a的第三操作电压可以彼此相同或不同。

如上所述,存储器群集400a可以包括ssd410、420和430。第一ssd410可以连接到第一主通道cha,第二ssd420可以连接到第二主通道chb,第三ssd430可以连接到第三主通道chc。将参考图3和图4a至图4c详细描述ssd410至450的每个的结构。ssd410至450可以具有彼此相同的结构或彼此相似的结构。

这里,主通道可以指存在于控制器310的第三接口设备350和一个ssd之间的独立数据路径。数据路径可以包括传输数据和/或控制信号的传输线。

图3是图1所示的数据存储设备300的示例实施例的框图。图4a至图4c是图3所示的第一ssd410的示例410a、410b和410c的框图。参考图3至图4c,ssd410、420和450中的每一个包括至少一个第一类型存储器412、422或452以及至少一个第二类型存储器415、425或455。第一类型存储器412、422和452可以是非易失性ram(nvram),第二类型存储器415、425和455可以是非易失性存储器。有利地,第二类型存储器415、425和455可以是不同于nvram的不同类型的存储器。例如,第二类型存储器415、425和455可以是nand型闪存(nand)。然而,本发明构思不限于此。第一类型存储器412、422或452可以被实现为pram、mram、stt-mram、fram或rram。ssd410、420和450中的每一个的结构和操作与其他ssd的结构和操作基本上相同或相似。因此,将代表性地描述第一ssd410的结构和操作。

参考图4a,第一ssd410a可以包括ssd控制器411、至少一个nvram412a和至少一个非易失性存储器件415。有利地,非易失性存储器件415可以是不同于nvram的不同类型的存储器。例如,非易失性存储器件415可以是nand型闪存设备nand。ssd控制器411可以响应于控制器310的命令来控制第一ssd410a的操作。ssd控制器411可以连接到第一主通道cha、通道ch11和ch12以及nvram412a。通道ch11和ch12中的每一个可以连接到非易失性存储器件nand。例如,非易失性存储器件416可以连接到通道ch11,非易失性存储器件417可以连接到通道ch12。虽然在图4a中仅示出了两个通道ch11和ch12,但是在其他实施例中,通道的数量可以不同。

每个非易失性存储器件nand可以是nand型闪存或受管理的nand闪存,但不限于此。通道ch11和ch12中的每一个可以是存在于ssd控制器411和非易失性存储器件416或417之间的独立数据路径。

nvram412a可以被实现为支持电容器的dram。nvram412a可以包括dram413和电容器414a。电容器414a可以接收和存储从外部提供的输入电源电压,并且可以在外部电源电压被切断时为dram413提供电源电压。即使当外部电源电压被切断时,dram413也可以保留数据。ssd控制器411可以通过通道ch11和ch12中的每一个控制非易失性存储器件nand的操作。

参考图4b,第一ssd410b可以包括ssd控制器411、至少一个nvram412b和至少一个非易失性存储器件415,例如nand型闪存设备nand。图4b所示的第一ssd410b的结构和操作类似于图4a所示的第一ssd410a的结构和操作。为了避免冗余,将重点描述ssd410a和410b之间的差异。

nvram412b可以被实现为支持电池的dram。nvram412b可以包括dram413和电池414b。当外部电源电压被切断时,电池414b可以向dram413供电。因此,即使当外部电源电压被切断时,dram413也可以保留数据。

参考图4c,第一ssd410c可以包括ssd控制器411、至少一个第一类型存储器412c和至少一个第二类型存储器件415,例如nand型闪存设备nand。与第二类型存储器415相比,第一类型存储器412c可以具有更快的存取时间(例如,写入时间)。在第一类型存储器412c和第二类型存储器件415是nand型闪存的情况下,第一类型存储器412c可以是具有单级存储器单元的闪存,并且第二类型存储器件415可以是具有多级存储器单元的闪存。图4c所示的第一ssd410c的结构和操作类似于图4a所示的第一ssd410a或图4b所示的第一ssd410b的结构和操作。为了避免冗余,将重点描述ssd410a、410b和410c之间的差异。

参考图4c,第一类型存储器412c可以被实现为nand型闪存设备nand。nand型闪存设备nand可以包括二维存储器单元阵列或三维存储器单元阵列。

三维存储器单元阵列可以单片地形成在具有设置在硅衬底上或上方的有源区的存储器单元阵列中的一个或多个物理层级处,并且可以包括存储器单元的操作所涉及的电路。所述电路可以形成在硅衬底中、硅衬底上或上方。术语“单片”意指阵列中的每一层级的层直接沉积在阵列中的下层级的层上。三维存储器单元阵列可以包括竖直取向的竖直nand串,使得至少一个存储器单元置于另一存储器单元上或上方。所述至少一个存储器单元可以包括电荷俘获层。

图5a是根据本发明构思的一些实施例的nand型闪存设备的二维存储器单元阵列20的示图。参考图5a,存储器单元阵列20包括多个nand存储器单元串20-1、20-2、...、20-m,其中“m”是自然数。nand存储器单元串20-1至20-m中的每一个包括彼此串联连接的多个非易失性存储器单元21和虚设(dummy)单元25。nand存储器单元串20-1到20-m可以布置或实现在二维的一个平面或层上。

nand存储器单元串20-1包括在连接到位线bl1的第一选择晶体管(或串选择晶体管)st1和连接到公共源极线(csl)的第二选择晶体管(或地选择晶体管)st2之间串联连接的多个非易失性存储器单元21和虚设单元25。

第一选择晶体管st1的栅极连接到串选择线(ssl)。各个非易失性存储器单元21的栅极分别连接到多条字线wl0至wl63。第二选择晶体管st2的栅极连接到地选择线(ssl)。各个虚设单元25的栅极分别连接到虚设字线dwl0和dwl1。

nand存储器单元串20-2至20-m的结构与nand存储器单元串20-1的结构基本上相同。

尽管为了描述清楚在图5a和图5b中示出了64条字线wl0至wl63和两条虚设字线dwl0和dwl1,但是本发明构思的思想不受字线和虚设字线的数量的限制。虚设字线dwl0和dwl1分别位于64条字线wl0至wl63的组的两端,即,虚设字线dwl0和dwl1分别与ssl和gsl相邻,但是虚设字线的位置不限于所示实施例。在其他实施例中,可以省略虚设字线dwl0和dwl1。

包括在nand存储器单元串20-1至20-m中的每个非易失性存储器单元21可以存储一个或多个比特。因此,每个非易失性存储器单元21可以由存储一个比特或至少一个比特的nand闪存单元(例如,单级单元(slc)或多级单元(mlc))实现。

图5b是根据本发明构思的一些实施例的nand型闪存设备的三维存储器单元阵列20′的示图。参考图5b,nand存储器单元串20′-1、20′-2、...、20′-k(其中“k”是自然数)可以布置在三维的不同平面上。此时,可以访问nand存储器单元串20′-1至20′-k中的每一个的存取电路可以被nand存储器单元串20′-1至20′-k共享。

第一nand存储器单元串20′-1可以布置在第一层21-1上,第二nand存储器单元串20′-2可以布置在与第一层21-1不同的第二层21-2上,并且第knand存储器单元串20′-k可以布置在与第二层21-2不同的第k层21-k上。层21-1至21-k可以形成为晶片堆叠、芯片堆叠或单元堆叠。层21-1至21-k可以使用硅通孔(tsv)、凸块或引线接合彼此连接。层21-1至21-k中的每一个包括多个单元串。

第一层21-1上的第一nand存储器单元串20′-1包括串联连接在多个选择晶体管st11和st21之间的多个非易失性存储器单元(例如,nand闪存单元)21和虚设单元25。第二层21-2上的第二nand存储器单元串20′-2包括串联连接在多个选择晶体管st12和st22之间的多个非易失性存储器单元(例如,nand闪存单元)21和虚设单元25。第k层21-k上的第knand存储器单元串20′-2包括串联连接在多个选择晶体管st1k和st2k之间的多个非易失性存储器单元(例如,nand闪存单元)21和虚设单元25。

如图5b所示,nand存储器单元串20′-1至20′-k可以彼此共享字线wl0至wl63、csl和位线bl1。换句话说,在各个层21-1至21-k中的对应位置处实现的nand存储器单元串可以连接到页缓冲器和感测放大器块70中包括的页缓冲器71-1至71-m中的一个。

图6是用于解释根据本发明构思的一些实施例的数据存储设备的操作的示图。图6所示的操作可以由参考图1至图4c描述的数据存储设备300执行。这里,假定ssd的数量n为4。

参考图1至图6,控制器310可以从主机200接收多个写请求。写请求可以存储在写请求队列中。写请求队列可以实现在第一类型存储器(例如,nvram)412、422或452中或单独的模块中。图6至图8所示的写请求队列中的各种形状(即星形、三角形、圆形、六边形等等)表示与写请求之一相对应的数据段。

控制器310将由星形表示且对应于第一写请求的第一数据段存储在第一ssd410中。第一ssd410可以将第一数据段(即,星形)存储在第一ssd410中的第一类型存储器(例如,nvram)412中。控制器310还可以将第一数据段(即,星形)的复制数据存储在第nssd中,用于复制第一数据段。复制数据可以是这样的数据,该数据被存储以便在多个ssd中的ssd发生故障或者由一个或多个ssd存储的数据丢失的情况下恢复丢失的数据。由于假定n为4,所以控制器310可以将第一数据段(即,星形)存储在第四ssd440中。第一数据段(即,星形)的复制数据可以与第一数据段相同,但是本发明构思不限于此。例如,第一数据段的复制数据可以是基于第一数据段的逻辑操作所产生的用来恢复第一数据段的数据。

如上所述,控制器310将第一数据段(即,星形)存储在第一ssd410的第一类型存储器412和第四ssd440的第一类型存储器442中,从而执行第一数据段(即,星形)的主复制。将第一数据段(即,星形)存储在第一ssd410的第一类型存储器412中的操作和将第一数据段(即,星形)存储在第四ssd440的第一类型存储器442中的操作可以被并行或顺序地执行。

由控制器310使用的用于将第一数据段(即,星形)存储在第一ssd410中的命令可以与由控制器310使用的用于将第一数据段(即,星形)存储在第四ssd440中的命令相同或不同。例如,当控制器310将第一数据段(即,星形)存储在第一ssd410中时,可以不指定第一数据段(即,星形)是否将被刷新到第二类型存储器415。另一方面,当控制器310将第一数据段(即,星形)的复制数据存储在第四ssd440中时,控制器310可以指定第一数据段(即,星形)将不被刷新到第二类型存储器。

图9a示出了控制器310向ssd发出的新命令。控制器310向ssd410、420、430和440发出命令“writenv(lba,data,flush_manually)”。括号中的因子是命令行参数。命令“writenv(lba,data,flush_manually)”可以指示数据应被写入ssd的第一类型存储器的指定逻辑块地址(lba)。此时,可以使用参数“flush_manually”来设置是否将数据从第一类型存储器刷新到第二类型存储器。当“flush_manually”的值为“0”时,意味着控制器310不指定是否刷新数据。因此,ssd可以自身确定是否以及何时将数据从第一类型存储器刷新到第二类型存储器而无需控制器310的介入。当“flush_manually”的值为“1”时,意味着控制器310指示不应将数据从第一类型存储器刷新到第二类型存储器。因此,在没有来自控制器310的刷新命令的情况下,ssd不将数据从第一类型存储器刷新到第二类型存储器。

由控制器310发出的命令“deletenv(lba)”可以指示ssd应从第一类型存储器的指定地址lba中删除数据。

控制器310可以在将第一数据段(即,星形)存储在第一ssd410中时将“flush_manually”的值设置为“0”,并且在将第一数据段(即,星形)存储在第四ssd440中时将“flush_manually”的值设置为“1”。在这种情况下,第一ssd410可以在随机点处将第一数据段(即,星形)从第一类型存储器412刷新到第二类型存储器415。一旦第一数据段(即,星形)被存储在第二类型存储器415中,则可以从第一类型存储器412中删除第一数据段,即星形。同时,第四ssd440可以不将第一数据段(即,星形)从第一类型存储器442刷新到第二类型存储器445,除非它从控制器310接收到单独的命令或请求。

控制器310可以通过与第一数据段(即,星形)类似的方式处理由三角形表示且对应于第二写请求的第二数据段。控制器310将第二数据段(即,三角形)存储在第二ssd420的第一类型存储器422中。另外,控制器310将第二数据段(即,三角形)存储在第四ssd440的第一类型存储器442中。换句话说,控制器310通过将第二数据段(即,三角形)存储在第二ssd420的第一类型存储器422和第四ssd440的第一类型存储器442中来执行第二数据段(即,三角形)的主复制。将第二数据段(即,三角形)存储在第二ssd420的第一类型存储器422中的操作和将第二数据段(即,三角形)存储在第四ssd440的第一类型存储器442中的操作可以被并行或顺序地执行。

控制器310可以通过与第一数据段(即,星形)和第二数据段(即,三角形)类似的方式处理由圆形表示且对应于第三写请求的第三数据段。控制器310将第三数据段(即,圆形)存储在第三ssd430的第一类型存储器432中。另外,控制器310将第三数据段(即,圆形)存储在第四ssd440的第一类型存储器442中。换句话说,控制器310通过将第三数据段(即,圆形)存储在第三ssd430的第一类型存储器432和第四ssd440的第一类型存储器442中来执行第三数据段(即,圆形)的主复制。将第三数据段(即,圆形)存储在第三ssd430的第一类型存储器432中的操作和将第三数据段(即,圆形)存储在第四ssd440的第一类型存储器442中的操作可以被并行或顺序地执行。

主复制可以是raid1复制,但不限于此。当存储在多个ssd中的数据形成预定数据组时,控制器310可以向奇偶校验ssd(即其中已经存储了复制数据的ssd(例如,第四ssd440))发出奇偶校验产生和存储命令。预定数据组可以是raid条带(stripe)。预定数据组(例如,raid条带)可以被定义为在其上执行raid恢复操作的基本单元。raid条带可以包括用于产生奇偶校验的多个数据段(例如,页)。例如,当存储在第一至第nssd中的数据完成单个raid条带时,控制器310可以向奇偶校验ssd(即其中已经存储了复制数据的ssd)发出奇偶校验产生和存储命令。

图9b示出了由控制器310向第四ssd440发出的奇偶校验产生和存储命令的示例。本发明构思不限于这些示例。

由控制器310发出的命令“calculate_parity_and_writel(datasize,startlba,endlba,destinationlba)”可以指示第四ssd440针对在第一类型存储器442中从起始地址startlba到结束地址endlba的范围内具有预定数据大小datasize的数据产生奇偶校验,并将奇偶校验写入目的地址destinationlba。换句话说,命令“calculate_parity_and_write1(datasize,startlba,endlba,destinationlba)”指定将要计算奇偶校验数据的数据段的起始地址startlba和结束地址endlba,并且还指定将要存储奇偶校验数据的区域的地址destinationlba。当数据段被存储在顺序逻辑块地址(lba)处时,可以使用该命令。

由控制器310发出的命令“calculate_parity_and_write2(datasize,firstlba,secondlba,...,lastlba,destinationlba)”可以指示第四ssd440针对在第一类型存储器442中从第一地址firstlba到最后地址lastlba的范围内具有预定数据大小datasize的数据产生奇偶校验,并将奇偶校验写入目的地址destinationlba。换句话说,命令“calculate_parity_and_write2(datasize,firstlba,secondlba,...,lastlba,destinationlba)”指定将要计算奇偶校验数据的每个数据段的数据大小和地址lba。当数据段被存储在非顺序lba处时,可以使用该命令。

由控制器310发出的命令“calculate_parity_and_write3(datasize,startlba,offset,destinationlba)”可以指示第四ssd440针对在第一类型存储器442中从起始地址startlba到预定偏移offset的范围内具有预定数据大小datasize的数据产生奇偶校验,并将奇偶校验写入目的地址destinationlba。换句话说,命令“calculate_parity_and_write3(datasize,startlba,offset,destinationlba)”指定数据大小datasize、起始地址startlba和偏移offset,以限定要用于计算奇偶校验数据的数据范围。

奇偶校验ssd440可以基于存储在第一类型存储器442中的复制数据(即,第一至第三数据段,即星形、三角形和圆形)产生由五边形表示的奇偶校验数据,并且可以响应于奇偶校验产生和存储命令将奇偶校验数据存储在第二类型存储器445中。奇偶校验ssd440可以通过对第一至第三数据段(即星形、三角形和圆形)执行xor运算来产生奇偶校验数据,即五边形,但是本发明构思不限于此。一旦奇偶校验数据(即,五边形)被存储在第二类型存储器445中,则奇偶校验ssd440可以从第一类型存储器442中删除复制数据,即第一至第三数据段(即星形、三角形和圆形)。

如上所述,当用于第一至第三数据段(即星形、三角形和圆形)的奇偶校验数据(即五边形)被存储在第二类型存储器445中时,执行辅复制。辅复制可以是raid5/6复制,但不限于此。

参考图6,形成raid条带的每个数据段被主要存储在ssd410、420和430之一的第一类型存储器中,即nvram中。每个数据段(即每个数据段的复制数据)被主要存储在奇偶校验ssd440的第一类型存储器中,即nvram中。当控制器310发出奇偶校验产生和存储命令时,存储在奇偶校验ssd440的第一类型存储器442中的数据经过xor运算以产生奇偶校验数据,并且奇偶校验数据被存储在第二类型存储器445中。

在第一至第三ssd410、420和430的每一个中的第一类型存储器nvram中存储的数据可以在各种时间被刷新到第二类型存储器。数据可以在被存储在第一类型存储器nvram中之后,或者在被存储在第一类型存储器nvram中之后的预定时间之后,或者当在被存储在第一类型存储器nvram中之后发生特定事件时,被刷新到第二类型存储器。该特定事件可以是当前ssd的电源故障、超过预定阈值的缓冲器或垃圾收集,但不限于此。

在图6所示的实施例中,在奇偶校验数据被产生之前,所有数据段(即第一至第三数据段,即星形、三角形和圆形)的复制数据被存储在第四ssd440的第一类型存储器442中,然后控制器310向第四ssd440发出奇偶校验产生和存储命令。

图7是用于解释根据本发明构思的一些实施例的数据存储设备的操作的示图。图7所示的操作可以由参考图1至图4c描述的数据存储设备300执行。假定ssd的数量n为4。图7所示的操作类似于图6所示的操作。因此,将重点描述差异。

参考图7,控制器310不将第一至第三数据段(即,星形、三角形和圆形)的复制数据存储在第四ssd440的第一类型存储器442中,而是仅将最新的奇偶校验数据存储在第一类型存储器442中。详细地,控制器310将第一数据段(即,星形)存储在第四ssd440的第一类型存储器442中,但是在第四ssd440的第一类型存储器442中仅存储用于下一数据段(即,三角形和圆形)的奇偶校验数据,而不在第四ssd440的第一类型存储器442中存储复制数据(即,三角形和圆形)。

对于此操作,控制器310可以与第二数据段(即,三角形)一起向第四ssd440发送奇偶校验产生和存储命令。换句话说,控制器310可以在向第四ssd440发送第二数据段(即,三角形)时指定产生奇偶校验数据所需的区域。第四ssd440可以基于从控制器310接收的第二数据段(即,三角形)和存储在第一类型存储器442中的第一数据段(即,星形)产生部分奇偶校验数据(即,正方形),并且可以将该部分奇偶校验数据(即,正方形)存储在第一类型存储器442中。一旦该部分奇偶校验数据(即,正方形)被存储在第一类型存储器442中,则奇偶校验ssd440可以从第一类型存储器442中删除复制数据,即第一数据段(即星形)。

控制器310还可以与第三数据段(即,圆形)一起向第四ssd440发送奇偶校验产生和存储命令。换句话说,控制器310可以在向第四ssd440发送第三数据段(即,圆形)时指定产生奇偶校验数据所需的区域。

图9c示出了包括数据段且由控制器310向第四ssd440发出的奇偶校验产生和存储命令的示例。本发明构思不限于这些示例。

由控制器310发出的命令“write_and_calc_parity1(data,datasize,startlba,endlba,destinationlba)”可以指示第四ssd440针对在第一类型存储器442中从起始地址startlba到结束地址endlba的范围内具有预定数据大小datasize的数据和新数据data产生奇偶校验,并将奇偶校验写入目的地址destinationlba。当将要产生奇偶校验数据的所有复制数据未存储在奇偶校验ssd440中时,可以使用该命令。换句话说,当奇偶校验ssd440中仅存储了将要产生奇偶校验数据的一部分复制数据时,发出该命令以发送用于产生奇偶校验数据的新的或附加的数据,并指定已经存储在奇偶校验ssd440中的数据。

命令“write_and_calc_parity2(data,datasize,firstlba,secondlba,...,lastlba,destinationlba)”类似于命令“calculate_parity_and_write2(datasize,firstlba,secondlba,...,lastlba,destinationlba)”,但不同之处在于前者还包括新数据data。命令“write_and_calc_parity3(data,datasize,startlba,offset,destinationlba)”类似于命令“calculate_parity_and_write3(datasize,startlba,offset,destinationlba)”,但不同之处在于前者还包括新数据data。

当控制器310指定产生奇偶校验数据所需的区域并向第四ssd440发送第三数据段(即,圆形)时,第四ssd440可以基于从控制器310接收的第三数据段(即,圆形)和存储在第一类型存储器442中的部分奇偶校验数据(即,正方形)产生奇偶校验数据(即,五边形),并且可以将奇偶校验数据(即,五边形)存储在第二类型存储器445中。一旦奇偶校验数据(即,五边形)被存储在第二类型存储器445中,则奇偶校验ssd440可以从第一类型存储器442中删除部分奇偶校验数据,即正方形。

在图7所示的实施例中,奇偶校验ssd440不两次存储数据段,而是仅存储最新的奇偶校验数据,从而节省第一类型存储器442的空间。

图8是用于解释根据本发明构思的另外实施例的数据存储设备的操作的示图。图8所示的操作可以由参考图1至图4c描述的数据存储设备300执行。假定ssd的数量n为4。图8所示的操作类似于图7所示的操作。因此,将重点描述差异。参考图8,当在写请求队列处累积了许多写请求时,控制器310从要被复制的数据产生奇偶校验数据,并将奇偶校验数据存储在奇偶校验ssd440中。

在图7所示的实施例中,在将第一数据段(即,星形)的复制数据存储在第四ssd440的第一类型存储器442中之后,控制器310仅在第一类型存储器442中产生和存储最新的奇偶校验数据。然而,在图8所示的实施例中,控制器310针对第一和第二数据段(即,星形和三角形)产生部分奇偶校验数据(即,正方形),并将该部分奇偶校验数据(即,正方形)存储在第四ssd440的第一类型存储器442中。此后,对于下一数据段(即,圆形),控制器310可以向第四ssd440发送包括第三数据段(即,圆形)在内的奇偶校验产生和存储命令。换句话说,控制器310可以在向第四ssd440发送第三数据段(即,圆形)时指定产生奇偶校验数据所需的区域。

图9d示出了包括数据段且由控制器310向第四ssd440发出的奇偶校验产生和存储命令的示例。本发明构思不限于这些示例。

命令“calculate_parity_and_write_nv(prevlba,data,datasize,datalba)”是控制器310向奇偶校验ssd440发出的命令的另一示例。当控制器310在奇偶校验ssd440中存储奇偶校验数据的更新而不复制数据时,可以使用命令“calculate_parity_and_write_nv(prevlba,data,datasize,datalba)”。

命令“calculate_parity_and_write_nv(prevlba,data,datasize,datalba)”指定已经存储在第四ssd440的第一类型存储器442中的数据段或部分奇偶校验数据的现有lbaprevlba,并指定新数据data、数据大小datasize和要存储的数据的lba值datalba。第四ssd440可以使用存储在第四ssd440的第一类型存储器442中的数据段或部分奇偶校验数据以及新数据data来产生奇偶校验数据,并且可以响应于命令“calculate_parity_and_write_nv(prevlba,data,datasize,datalba)”将奇偶校验数据存储在lba值datalba处。详细地,第四ssd440可以基于现有lbaprevlba从第一类型存储器442读取数据,使用新数据data和与数据大小datasize相对应的读取数据来计算奇偶校验数据,并且将奇偶校验数据存储在lba值datalba处。lba值datalba可以与现有lbaprevlba相同。

根据图8所示的实施例,一些复制数据不需要存储在奇偶校验ssd440的第一类型存储器442中,使得可以减少奇偶校验ssd440的第一类型存储器nvram中的存储空间开销。

根据本发明构思的一些实施例,数据存储设备300使用第一类型存储器(例如,ssd中的nvram)作为用于存储复制数据(例如,针对主复制的数据)的存储空间,使得除ssd外的单独的nvram不必存储复制数据。结果,可以增加系统的存储密度。此外,由于不需要用于数据复制的单独的存储器设备(例如,nvram设备),所以可以节省诸如用于安装存储器设备的插槽之类的硬件资源。结果,可以降低功率和成本。

图10是根据本发明构思的一些实施例的复制数据的方法的流程图。图10所示的方法可以由参考图1至图4c描述的数据存储设备300执行。这里,假定ssd的数量n为5。

参考图1至图4c和图10,控制器310可以接收多个写请求req1至reqk,其中“k”是至少为2的整数。写请求req1至reqk可以顺序地存储在写请求队列中。在操作s101-1中,控制器310从主机200接收第一写请求req1,并且在操作s103-1中,首先将与第一写请求req1相对应的第一数据段dat1写入缓冲器360。

在操作s105-1中,控制器310还响应于第一写请求req1将第一数据段dat1写入第一ssd410。第一ssd410可以在其第一类型存储器(例如,nvram412)中存储第一数据段dat1。在操作s107-1中,控制器310还可以将第一数据段dat1的复制数据存储在第nssd450中。第nssd450可以在其第一类型存储器(例如,nvram452)中存储第一数据段dat1。

如上所述,控制器310可以通过将第一数据段dat1写入第一ssd410的第一类型存储器412和第nssd450的第一类型存储器452来执行第一数据段dat1的主复制。操作s105-1和s107-1可以被并行或顺序地执行。由控制器310使用的用于请求第一ssd410存储第一数据段dat1的命令可以与由控制器310使用的用于请求奇偶校验ssd(即,第nssd450)存储第一数据段dat1的命令相同或不同。控制器310可以向相关ssd发送图9a所示的命令writenv,以写入第一数据段dat1。在操作s109-1中,控制器310向主机200发送对第一写请求req1的响应resp1。

控制器310可以通过与第一写请求req1类似的方式处理从主机200接收的第二写请求req2。详细地,在操作s101-2中,控制器310从主机200接收第二写请求req2,并且在操作s103-2中,首先将与第二写请求req2相对应的第二数据段dat2写入缓冲器360。

在操作s105-2中,控制器310还响应于第二写请求req2将第二数据段dat2写入第二ssd420。在操作s107-2中,控制器310还可以将第二写请求req2写入第nssd450的第一类型存储器452。换句话说,控制器310通过将第二数据段dat2写入第二ssd420的第一类型存储器422和第nssd450的第一类型存储器452来执行第二数据段dat2的主复制。操作s105-2和s107-2可以被并行或顺序地执行。在操作s109-2中,控制器310向主机200发送对第二写请求req2的响应resp2。

控制器310可以通过与第一写请求req1和第二写请求req2类似的方式处理其他写请求(例如req3至reqk),直到与从主机200接收的多个写请求相对应的数据段形成预定数据组。虽然未示出,但是控制器310可以通过与第一写请求req1和第二写请求req2类似的方式处理第三写请求req3。

控制器310还可以通过与第一写请求req1和第二写请求req2类似的方式处理第k写请求reqk。详细地,在操作s101-k中,控制器310从主机200接收第k写请求reqk,并且在操作s103-k中,首先将与第k写请求reqk相对应的第k数据段datk写入缓冲器360。

在操作s105-k中,控制器310还响应于第k写请求reqk将第k数据段datk写入第kssd440的第一类型存储器442。在操作s107-k中,控制器310还可以将第k写请求reqk写入第nssd450的第一类型存储器452。换句话说,控制器310通过将第k数据段datk写入第kssd440的第一类型存储器442和第nssd450的第一类型存储器452来执行第k数据段datk的主复制。操作s105-k和s107-k可以被并行或顺序地执行。在操作s109-k中,控制器310向主机200发送对第k写请求reqk的响应respk。这里,“k”可以是n-1,但不限于此。主复制可以是raid1复制。

当存储在ssd410至440中的数据形成预定数据组时,控制器310可以在操作s110中向ssd450(即,存储了复制数据的奇偶校验ssd450)发送奇偶校验产生和存储命令parity_write_nv。控制器310向第nssd450发出的奇偶校验产生和存储命令parity_write_nv可以是图9b所示的命令之一。

响应于奇偶校验产生和存储命令parity_write_nv,奇偶校验ssd450可以基于存储在第一类型存储器452中的复制数据(即,第一数据段dat1至第k数据段datk)产生奇偶校验数据,并将奇偶校验数据存储在第一类型存储器452或第二类型存储器455中。奇偶校验ssd450可以通过对第一数据段dat1至第k数据段datk执行xor运算来产生奇偶校验数据,但是本发明构思不限于此。一旦奇偶校验数据被存储在第二类型存储器455中,则奇偶校验ssd450可以从ssd450的第一类型存储器452中删除复制数据(即第一数据段dat1至第k数据段datk)。

参考图10,形成raid条带的每个数据段主要存储在ssd410至440之一的第一类型存储器中,例如nvram中。当每个数据段(即,每个数据段的复制数据)被写入奇偶校验ssd450时,其主要存储在第一类型存储器452中。当奇偶校验ssd450从控制器310接收到奇偶校验产生和存储命令时,存储在奇偶校验ssd450的第一类型存储器452中的数据可以用于产生奇偶校验数据,然后奇偶校验数据最终被存储在第一类型存储器452或第二类型存储器455中。当奇偶校验数据被存储在第二类型存储器455中时,可以删除存储在第一类型存储器452中的复制数据和/或奇偶校验数据。

图11是根据本发明构思的其他实施例的复制数据的方法的流程图。图11所示的方法可以由参考图1至图4c描述的数据存储设备300执行。这里,假定ssd的数量n为5。图11所示的方法类似于图10所示的方法。因此,将重点描述方法之间的差异。在图11所示的实施例中,代替在奇偶校验ssd450中存储每个数据段的复制数据,控制器310在奇偶校验ssd450中仅存储预定数据组(例如,raid条带)中的一个数据段(例如,第一数据段dat1)的复制数据,然后针对从第二数据段dat2开始的后续数据段在奇偶校验ssd450中存储奇偶校验数据的更新。

参考图1至图4c和图11,控制器310可以接收多个写请求req1至reqk,其中“k”是至少为2的整数。写请求req1至reqk可以顺序地存储在写请求队列中。控制器310可以通过与参考图10所描述的方式相同的方式(即,操作s101-1、s103-1、s105-1、s107-1和s109-1)处理第一写请求req1。

响应于第二写请求req2,在操作s103-2中,控制器310首先将第二数据段dat2写入缓冲器360,并且在操作s105-2中,还将第二数据段dat2写入第二ssd420。在操作s207-2中,控制器310可以将第二数据段dat2以及奇偶校验产生和存储命令cal_parity2发送给第nssd450。换句话说,控制器310可以在向第nssd450发送第二数据段dat2时指定产生奇偶校验数据所需的区域。对于该操作,控制器310可以使用图9c所示的命令之一作为奇偶校验产生和存储命令cal_parity2。

第nssd450可以基于从控制器310接收的第二数据段dat2和存储在第一类型存储器452中的第一数据段dat1产生奇偶校验数据,并且可以将奇偶校验数据存储在第二类型存储器455中。虽然未示出,但是控制器310可以通过与第二写请求req2类似的方式处理从主机200接收的第三写请求req3。

控制器310还可以通过与第二写请求req2和第三写请求req3类似的方式处理第k写请求reqk。详细地,响应于第k写请求reqk,在操作s103-k中,控制器310首先将第k数据段datk写入缓冲器360,并且在操作s105-k中,还将第k数据段datk写入第kssd440。

在操作s207-k中,控制器310可以将第k数据段datk以及奇偶校验产生和存储命令cal_parityk发送给第nssd450。换句话说,控制器310可以在向第nssd450发送第k数据段datk时指定产生奇偶校验数据所需的区域。第nssd450可以基于从控制器310接收的第k数据段datk和存储在第一类型存储器452中的数据段dat1、dat2和dat3产生奇偶校验数据,并且可以将奇偶校验数据存储在指定地址处。

在操作s210中,控制器310可以向第nssd450发送命令以在第二类型存储器455中永久地存储已存储在第一类型存储器452中的最终奇偶校验数据。在图11所示的实施例中,控制器310向奇偶校验ssd450发送奇偶校验产生和存储命令parity_write_nv,并且奇偶校验ssd450响应于命令parity_write_nv产生奇偶校验数据。

然而,在其他实施例中,控制器310可以产生奇偶校验数据并将奇偶校验数据写入奇偶校验ssd450。例如,控制器310可以使用至少两个数据段来产生奇偶校验数据,并将奇偶校验数据写入奇偶校验ssd450的第一类型存储器452。控制器310还可以使用至少一个新数据段和现有奇偶校验数据来产生新的奇偶校验数据或更新奇偶校验数据,并且可以将更新的奇偶校验数据写入奇偶校验ssd450的第一类型存储器452。

图12是根据本发明构思的一些实施例的数据处理系统500的框图。参考图1至图12,数据处理系统500可以包括数据库520、数据库服务器530、第二网络540以及多个客户端计算机550和551。数据库520和数据库服务器530可以包括在数据中心510中。数据中心510可以是互联网数据中心或云数据中心。

数据库520可以包括多个数据存储设备300。数据存储设备300可以安装在机架中。数据存储设备300的结构和操作与以上参考图1至图11描述的数据存储设备300的结构和操作基本上相同或相似。

数据库服务器530可以控制每个数据存储设备300的操作。数据库服务器530可以用作图1所示的主机200。数据库服务器530可以经由第一网络535(例如,局域网(lan))连接到第二网络540,例如互联网或wi-fi。客户端计算机550和551可以经由第二网络540连接到数据库服务器530。

如上所述,根据本发明构思的一些实施例,数据存储设备使用第一类型存储器(例如,ssd中的nvram)作为用于存储复制数据(例如,针对主复制的数据)的存储空间,使得除ssd外的单独的nvram不必存储复制数据。结果,可以增加系统的存储密度。此外,由于不需要用于数据复制的另一存储器设备(例如,nvram设备),所以可以不需要诸如用于插入存储器设备的插槽之类的硬件资源。结果,可以实现功率和成本降低。

尽管已经参考本发明构思的示例性实施例具体示出和描述了本发明构思,但本领域普通技术人员将理解,在不脱离所附权利要求所限定的本发明构思的精神和范围的情况下,可以进行形式和细节上的多种改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1