非易失性文件更新介质的制作方法

文档序号:18861548发布日期:2019-10-14 15:55阅读:199来源:国知局
非易失性文件更新介质的制作方法

实施例一般涉及存储系统。更具体地,实施例涉及非易失性文件更新介质。



背景技术:

计算系统可以包括具有处理器、系统存储器和各种外围设备的主机。示例计算系统可以包括诸如台式计算机、膝上型计算机、平板计算机等的个人计算机,以及诸如服务器的企业计算机。许多这样的计算系统可以包括连接的大容量存储设备,例如硬盘驱动器(hdd)和/或固态驱动器(ssd)。

附图说明

通过阅读以下说明书和所附权利要求并参考以下附图,实施例的各种优点对于本领域技术人员而言将显而易见,其中:

图1是根据实施例的电子处理系统的示例的框图;

图2是根据实施例的大容量存储装置的示例的框图;

图3是根据实施例的半导体装置的示例的框图;

图4是根据实施例的控制存储的方法的示例的流程图。

图5是根据实施例的主机计算装置的示例的框图;

图6是根据实施例的半导体装置的另一示例的框图;

图7是根据实施例的管理存储的方法的示例的流程图;以及

图8是根据实施例的电子处理系统的另一示例的框图。

具体实施方式

本文描述的各种实施例可以包括存储器组件和/或到存储器组件的接口。这样的存储器组件可以包括易失性和/或非易失性存储器。非易失性存储器可以是不需要电力来维持由介质存储的数据状态的存储介质。在一个实施例中,存储器设备可以包括块可寻址存储器设备,诸如基于nand或nor技术的那些。存储器设备还可以包括下一代非易失性设备,诸如三维(3d)交叉点存储器设备、或其他字节可寻址的就地写非易失性存储器设备。在一个实施例中,存储器设备可以是或可以包括使用硫属化物玻璃的存储器设备、多阈值级别nand闪存、nor闪存、单级或多级相变存储器(pcm)、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(fetram)、反铁电存储器、采用忆阻器技术的磁阻随机存取存储器(mram)存储器、包括金属氧化物基极、氧空位基极的电阻存储器和导电桥随机存取存储器(cb-ram)、或自旋转移力矩(stt)-mram、基于自旋电子磁结存储器的器件、基于磁隧道结(mtj)的器件、基于dw(畴壁)和sot(自旋轨道转移)的器件、基于晶闸管的存储器设备、或任何上述的组合、或其他存储器。存储器设备可以指管芯本身和/或封装的存储器产品。在特定实施例中,具有非易失性存储器的存储器组件可符合联合电子设备工程委员会(jedec)颁布的一个或多个标准,例如jesd218、jesd219、jesd220-1、jesd223b、jesd223-1或其他合适的标准(此处引用的jedec标准可在jedec.org上获得)。

易失性存储器可以是需要电力以维持由介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的ram,诸如动态随机存取存储器(dram)或静态随机存取存储器(sram)。可以在存储器模块中使用的一种特定类型的dram是同步动态随机存取存储器(sdram)。在特定实施例中,存储器组件的dram可符合jedec颁布的标准,例如用于ddrsdram的jesd79f、用于ddr2sdram的jesd79-2f、用于ddr3sdram的jesd79-3f、用于ddr4sdram的jesd79-4a、用于低功率ddr(lpddr)的jesd209、用于lpddr2的jesd209-2、用于lpddr3的jesd209-3和用于lpddr4的jesd209-4(这些标准可在www.jedec.org上获得)。这些标准(和类似标准)可以被称为基于ddr的标准,并且实现这种标准的存储设备的通信接口可以被称为基于ddr的接口。

现在转向图1,电子处理系统10的实施例可包括主机装置11,主机装置11包括主机处理器12、通信地耦合到主机处理器12的主机存储器13,以及通信地耦合到主机处理器12的主机逻辑14,以及通信地耦合到主机装置11的大容量存储设备和通信地耦合到第一和第二非易失性介质16、17的存储控制器逻辑18。例如,与第一非易失性介质16相比,第二非易失性介质17可以提供相对较大的写粒度。在一些实施例中,主机逻辑14可以被配置为基于针对文件系统相关的访问请求的粒度大小来向大容量存储设备15提供针对文件系统相关的访问请求的指示,并且存储控制器逻辑18可以被配置为基于来自主机逻辑14的指示将来自主机装置11的访问请求指向第一非易失性介质16和第二非易失性介质17中的一个。

在一些实施例中,主机逻辑14还可以被配置为将大容量存储设备15的第一非易失性介质16用作写回高速缓存。可替代地或另外地,主机逻辑14可以被配置为提供针对用于将相关联的写请求指向第一非易失性介质16的活动文件更新的指示。例如,主机逻辑14还可以被配置为提供针对用于将相关联的写请求指向第一非易失性介质16的活动文件更新相对应的元数据的指示。在一些实施例中,主机逻辑14还可以被配置为确定文件关闭事件是否对应于先前指向大容量存储设备15的第一非易失性介质的数据,并向大容量存储设备15提供用于将与关闭的文件相关联的数据从第一非易失性介质16移动到第二非易失性介质17的指示。在一些实施例中,主机逻辑14可以位于各种组件中,或者与各种组件共同定位,所述各种组件包括主机处理器12(例如,在同一管芯上)。

在一些实施例中,存储控制器逻辑18可以被配置为向主机装置11的操作系统(os)提供针对第一非易失性介质16的字节粒度输入/输出(io)接口。存储控制器逻辑18可以附加地或替代地被配置为基于所请求的访问是指向第一非易失性介质16还是第二非易失性介质17来在逻辑到物理(l2p)转换表中提供指示。在一些实施例中,存储控制器逻辑18还可以被配置为基于来自主机装置11的os的指示将数据从第一非易失性介质16移动到第二非易失性介质17,和/或基于功率转换的指示,将数据从第一非易失性介质16移动到第二非易失性介质17。例如,第一非易失性介质16可以包括电容器支持的dram、电容器支持的sram和pcm中的一个或多个。

上述主机装置11、主机处理器12、主机存储器13、主机逻辑14、大容量存储设备15、第一非易失性介质16、第二非易失性介质17、存储控制器逻辑18以及其他系统组件中的每个的实施例可以用硬件、软件或其任何合适的组合来实现。例如,硬件实现可以包括可配置逻辑,例如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)或使用电路技术的固定功能逻辑硬件,例如,专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术,或其任何组合。

可替代地或另外地,这些组件的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。例如,主机存储器13、永久存储介质或其他系统存储器可以存储一组指令,所述一组指令当由主机处理器12执行时,使得系统10实现系统10的一个或多个组件、特征或方面(例如,主机逻辑14、基于针对文件系统相关的访问请求的粒度大小,向大容量存储设备提供针对文件系统相关的访问请求的指示,等等)。

现在转到图2,大容量存储装置20的实施例可以包括第一非易失性介质21、第二非易失性介质22,其中与第一非易失性介质21相比,第二非易失性介质22提供相对较大的写粒度,以及通信地耦合到第一和第二非易失性介质21、22的逻辑23,其用于基于来自os的指示将访问请求指向第一非易失性介质21和第二非易失性介质22中的一个。在一些实施例中,逻辑23可以被配置为向os提供针对第一非易失性介质21的字节粒度io接口。另外或替代地,逻辑23可以被配置为基于所请求的访问是指向第一非易失性介质21还是第二非易失性介质22来在l2p转换表中提供指示。在一些实施例中,逻辑23还可以被配置为基于来自os的另一指示和功率转换的指示中的一个或多个将数据从第一非易失性介质21移动到第二非易失性介质22。例如,第一非易失性介质21可以包括电容器支持的dram、电容器支持的sram和pcm中的一个或多个。

第一非易失性介质21、第二非易失性介质22、逻辑23以及大容量存储装置20的其他组件的实施例可以以硬件、软件或其任何组合来实现,包括以硬件形式的至少部分实现。例如,硬件实现可以包括可配置逻辑,例如,pla、fpga、cpld或使用电路技术的固定功能逻辑硬件,例如asic、cmos或ttl技术,或其任何组合。另外,可替代地或另外地,这些组件的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如ram、rom、prom、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。

现在转到图3,半导体装置30的实施例可包括一个或多个衬底31,以及耦合到一个或多个衬底31的逻辑32,其中逻辑32至少部分地在可配置逻辑和固定功能硬件中的一个或多个中实现。耦合到一个或多个衬底31的逻辑32可以被配置为基于来自os的指示将访问请求指向第一非易失性介质和第二非易失性介质中的一个。在一些实施例中,逻辑32可以被配置为向os提供针对第一非易失性介质的字节粒度io接口。另外或替代地,逻辑32可以被配置为基于所请求的访问是指向第一非易失性介质还是第二非易失性介质来在l2p转换表中提供指示。在一些实施例中,逻辑32还可以被配置为基于来自os的另一指示和功率转换的指示中的一个或多个将数据从第一非易失性介质移动到第二非易失性介质。例如,第一非易失性介质可以包括电容器支持的dram、电容器支持的sram和pcm中的一个或多个。在一些实施例中,耦合到一个或多个衬底31的逻辑32可以包括位于一个或多个衬底31内的晶体管沟道区域。

逻辑32和装置30的其他组件的实施例可以以硬件、软件或其任何组合来实现,包括以硬件形式的至少部分实现。例如,硬件实现可以包括可配置逻辑,例如,pla、fpga、cpld或使用电路技术的固定功能逻辑硬件,例如asic、cmos或ttl技术,或其任何组合。另外,这些组件的一部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如ram、rom、prom、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。

装置30可以实现方法40(图4)或本文所讨论的任何实施例的一个或多个方面。在一些实施例中,所示装置30可包括一个或多个衬底31(例如,硅、蓝宝石、砷化镓)和耦合到衬底31的逻辑32(例如,晶体管阵列和其他集成电路/ic组件)。逻辑32可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现。在一个示例中,逻辑32可以包括定位(例如,嵌入)在衬底31内的晶体管沟道区。因此,逻辑32和衬底31之间的界面可以不是突变结。逻辑32还可以被认为包括在衬底31的初始晶片上生长的外延层。

现在转到图4,控制存储的方法40的实施例可以包括在框41处,基于来自os的指示来确定访问请求是指向存储设备的第一非易失性介质还是存储设备的第二非易失性介质,并且在框42处,基于来自os的指示,将访问请求指向第一非易失性介质和第二非易失性介质中的一个。方法40的一些实施例还可以包括在框43处向os提供针对第一非易失性介质的字节粒度io接口。方法40可以附加地或替代地包括在框44处基于所请求的访问是指向第一非易失性介质还是第二非易失性介质来在l2p转换表中提供指示。方法40的一些实施例还可以包括在框45处基于来自os的另一指示以及功率转换的指示中的一个或多个将数据从第一非易失性介质移动到第二非易失性介质。例如,在框46处,第一非易失性介质可以包括电容器支持的dram、电容器支持的sram和pcm中的一个或多个。

方法40的实施例可以在系统、装置、计算机、设备等中实现,例如,诸如本文描述的那些。更具体地,方法40的硬件实现可以包括可配置逻辑,例如,pla、fpga、cpld或使用电路技术的固定功能逻辑硬件,例如asic、cmos或ttl技术,或其任何组合。另外,这些组件的一部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如ram、rom、prom、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。

例如,方法40可以在结合下面的示例26至30描述的计算机可读介质上实现。方法40的实施例或部分可以在固件、应用程序(例如,通过应用程序编程接口(api))或在os上运行的驱动程序软件中实现。

现在转到图5,主机计算装置50的实施例可包括处理器51、通信地耦合到处理器51的存储器52,以及通信地耦合到处理器51的逻辑53,其用于向基于针对文件系统相关的访问请求的粒度大小来向大容量存储设备提供针对文件系统相关的访问请求的指示。在一些实施例中,逻辑53可以被配置为利用大容量存储设备的第一非易失性介质作为写回高速缓存,并且针对其他访问请求利用大容量存储设备的第二非易失性介质,其中大容量存储设备的第二非易失性介质的写粒度可以大于大容量存储设备的第一非易失性介质的写粒度。可替代地或另外地,逻辑53可以被配置为提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示(其中,大容量存储设备的第一非易失性介质的粒度可以小于大容量存储设备的第二非易失性介质的粒度)。例如,逻辑53还可以被配置为提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。在一些实施例中,逻辑53还可以被配置为确定文件关闭事件是否对应于先前指向大容量存储设备的第一非易失性介质的数据,并向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

处理器51、存储器52、逻辑53和主机计算装置50的其他组件的实施例可以以硬件、软件或其任何组合来实现,包括以硬件形式的至少部分实现。例如,硬件实现可以包括可配置逻辑,例如,pla、fpga、cpld或使用电路技术的固定功能逻辑硬件,例如asic、cmos或ttl技术,或其任何组合。另外,可替代地或另外地,这些组件的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如ram、rom、prom、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。

现在转向图6,半导体装置60的实施例可包括一个或多个衬底61,以及耦合到一个或多个衬底61的逻辑62,其中逻辑62至少部分地实现在可配置逻辑和固定功能硬件逻辑中的一个或多个中。耦合到一个或多个衬底61的逻辑62可以被配置为基于针对文件系统相关的访问请求的粒度大小来向大容量存储设备提供针对文件系统相关的访问请求的指示。在一些实施例中,逻辑62可以被配置为利用大容量存储设备的第一非易失性介质作为写回高速缓存,并且针对其他访问请求利用大容量存储设备的第二非易失性介质,其中大容量存储设备的第二非易失性介质的写粒度可以大于大容量存储设备的第一非易失性介质的写粒度。可替代地或另外地,逻辑62可以被配置为提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示(其中,大容量存储设备的第一非易失性介质的粒度可以小于大容量存储设备的第二非易失性介质的粒度)。例如,逻辑62还可以被配置为提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。在一些实施例中,逻辑62还可以被配置为确定文件关闭事件是否对应于先前指向大容量存储设备的第一非易失性介质的数据,并向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。在一些实施例中,耦合到一个或多个衬底61的逻辑62可以包括位于一个或多个衬底61内的晶体管沟道区域。

逻辑62和装置60的其他组件的实施例可以以硬件、软件或其任何组合来实现,包括以硬件形式的至少部分实现。例如,硬件实现可以包括可配置逻辑,例如,pla、fpga、cpld或使用电路技术的固定功能逻辑硬件,例如asic、cmos或ttl技术,或其任何组合。另外,可替代地或另外地,这些组件的全部或部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如ram、rom、prom、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。

装置60可以实现方法70(图7)或本文所讨论的任何实施例的一个或多个方面。在一些实施例中,所示装置60可包括一个或多个衬底61(例如,硅、蓝宝石、砷化镓)和耦合到衬底61的逻辑62(例如,晶体管阵列和其他集成电路/ic组件)。逻辑62可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现。在一个示例中,逻辑62可以包括定位(例如,嵌入)在衬底61内的晶体管沟道区。因此,逻辑62和衬底61之间的界面可以不是突变结。逻辑62还可以被认为包括在衬底61的初始晶片上生长的外延层。

现在转到图7,管理存储的方法70的实施例可以包括在框71处,确定针对文件系统相关的访问请求的粒度大小,并且在框72处基于针对文件系统相关的访问请求的粒度大小来向大容量存储设备提供针对文件系统相关的访问请求的指示。方法70的一些实施例还可以包括在框73处利用大容量存储设备的第一非易失性介质作为写回高速缓存,并且在框74处针对其他访问请求利用大容量存储设备的第二非易失性介质,其中大容量存储设备的第二非易失性介质的写入粒度可以大于大容量存储设备的第一非易失性介质的写入粒度。可替代地或另外地,方法70可以包括在框75处提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示,其中,大容量存储设备的第一非易失性介质的粒度可以小于大容量存储设备的第二非易失性介质的粒度。例如,方法70可以包括在框76处提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。方法70的一些实施例可以包括在框77处确定文件关闭事件是否对应于先前指向大容量存储设备的第一非易失性介质的数据,并在框78处向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

方法70的实施例可以在系统、装置、计算机、设备等中实现,例如,诸如本文描述的那些。更具体地,方法70的硬件实现可以包括可配置逻辑,例如,pla、fpga、cpld或使用电路技术的固定功能逻辑硬件,例如asic、cmos或ttl技术,或其任何组合。另外,这些组件的一部分可以在一个或多个模块中实现为存储在机器或计算机可读存储介质中的由处理器或计算设备执行的一组逻辑指令,所述机器或计算机可读存储介质诸如ram、rom、prom、固件、闪存等。例如,用于执行组件的操作的计算机程序代码可以以一种或多种os适用/适当的编程语言的任何组合来编写,包括诸如python、perl、java、smalltalk、c++、c#等的面向对象的编程语言,和传统的过程编程语言,例如“c”编程语言或类似的编程语言。

例如,方法70可以在结合下面的示例51至55描述的计算机可读介质上实现。方法70的实施例或部分可以在固件、应用程序(例如,通过应用程序编程接口(api))或在os上运行的驱动程序软件中实现。

一些实施例可以有利地提供高速、非易失性文件更新缓冲器。不限于操作理论,对于诸如文字处理器、电子表格、图像和音频操纵等的一些应用,用户可以经常保存增量变化。这些更新通常可以仅是相对较少的字节长度,但是对于主机计算设备可以附接到基于nand的固态驱动器(sdd)的一些其他系统,主机可以写整个逻辑块地址(lba)/扇区,因为这是可以写到连接到主机的基于块的设备的最小粒度。文件系统还可以将对应于用户数据写的元数据写到不同的lba。在一些系统中,块写也可以小于内部nand间接粒度或页面大小。例如,在文字处理应用程序中打开的文件的200字节(200b)用户更新可能导致由文件系统进行的两个不连续的五百十二字节(512b)写,一个用于用户数据,而另一个用于相关联的元数据。这两个单扇区写可能会变成ssd内部的8千字节(8kb)读-修改-写操作(例如,在此示例情况下,这可能是前景性能和耐久性开销的大约四十倍(40x),不对内部读进行计数)。当用户继续修改相同的文件,需要更新相同的lba时,净耐久性惩罚可能会成倍增加。有利地,一些实施例可以提供用于解决前述问题的成本有效的技术。

一些其他存储系统可以向ssd提供字节粒度io。虽然这可以减少通过存储互连总线传输的数据量,但是字节粒度io可能不会减少非易失性存储器(nvm)所需的io量。一些其他存储系统可以提供多个间接单元(iu)-粒度ssd和相关联的文件系统。使用这些技术,可以向较小的iu区域发出小的文件系统元数据写,并且可以向较大的iu区域发出较大的用户数据写。这样的系统可以仅解决与元数据写有关的开销。一些其他存储系统可以提供具有混合文件系统的多介质ssd,其可以仅解决与元数据写相关联的开销,同时引起在ssd中包括pcm和nand介质的一些额外成本。在存储系统领域之外,一些os/文件系统可以利用易失性存储器来进行各种小粒度写缓冲/高速缓存任务(例如,在dram中)。但是,这可能会导致电源故障时数据损坏或数据丢失。

一些实施例可以有利地扩展存储设备以提供允许系统将活动文件更新和对应的元数据写到ssd内的小粒度、就地可写、有效非易失性介质的操作。在一些实施例中,小粒度介质可以包括快速的、可字节寻址的非易失性存储器,例如pcm或3d交叉点(例如,包括intel3dxpoint存储器)。在一些实施例中,小粒度介质可以是易失性存储器,例如dram或sram,其通过提供合适的电源来维持小粒度介质的内容直到这些内容可以被传送到其他nvm(例如,ssd的基于nand的介质)从而被有效地制成非易失性的。例如,适当大小的电容器可以提供足够的功率以在意外的功率损耗时适应传输。通过向小粒度介质写活动更新,一些实施例可以消除在每次更新时将这样的更新写到基于nand的介质的需要,而这导致显著的延迟改进和写放大减少。对于小粒度介质包括易失性存储的实施例,当用户关闭文件时,或者在电源事件时,一些实施例可以将易失性存储的内容刷新到非易失性介质。

一些实施例可以有利地针对用户指定的文件提供小粒度、快速介质的益处。用户可能会在文件更新时遇到明显更低的延迟,并且驱动生命周期也可能会提高。一些实施例可以与文件系统扩展一起在ssd设备中实现。例如,存储设备的实施例的硬件实现可以包括两个有效的非易失性介质,包括大粒度介质(lm)和小粒度介质(sm)。在一些实施例中,lm可以包括nand存储器设备,并且还可以提供大的存储容量(例如,千兆字节(gb)、太字节(tb)等)。在一些实施例中,sm可以包括电容器支持的dram、电容器支持的sram或3d交叉点存储器,并且与lm相比通常可以提供更小的存储容量。lm可以在内部(例如,本地地)具有4kb或8kb的写粒度以及512b的暴露写粒度。sm可以具有一(1)字节的写粒度(例如,或诸如字、双字等的一些其他较小粒度)。

一些实施例可以针对os提供文件系统扩展以利用存储系统的结构。例如,os可以知道ssd中的两种不同类型的介质,并且os和/或应用可以相应地利用两种不同类型的介质。例如,一些实施例可以利用示例api命令向主机提供字节粒度io接口,例如:

status<-writepartial(lbal,offsetx,intn,byte*pdata);以及

status<-readpartial(lbal,offsetx,intn,byte*pdata)

在一些实施例中,主机可以将sm用作小型写的写回高速缓存。例如,代替对lm的读-修改-写,一些实施例可以利用sm作为用于小型写的、以及用于与lm的本机粒度不对齐的大型写的部分的写回高速缓存。其他写可以发送到lm。用于写回高速缓存的任何合适的插入/逐出高速缓存技术、策略和/或高速缓存行大小可以与sm一起使用。当sm用作写回高速缓存时,不需要将读从lm插入到sm。写到lm必须检查sm中的重叠范围元素。如果找到重叠的范围元素,则lm可以将重叠的范围元素逐出/清除作为lm写的一部分。读必须检查sm中的重叠范围元素,并且如果需要,读可以执行来自lm和sm的数据的读合并,以向主机提供正确的数据。在一些实施例中,存储设备可以向主机提供提示能力(例如,在高速缓存中固定数据或在文件关闭时将其驱逐)。

在一些实施例中,可以在lm和sm之间划分数据。例如,一些实施例可以确保特定lba可以在lm或sm区域中,但不在两者中。在一些实施例中,sm可以被视为lm中的数据层。例如,一些实施例可以包括l2p转换表中的信息,其可以指示lba是在sm中还是在lm中。

一些实施例可以在每个l2p转换表条目中保持一位,其指示特定iu是被写到lm还是sm区域。例如,如果l2p条目的最高有效位是“1”,则剩余的位可以表示lm的nand地址。否则,剩余的位可以表示sm的dram地址。read或readpartial命令将从相对应的介质返回数据。小型写(例如包括使用writepartial命令编写的那些)可以检查地址范围是否在sm中,如果是,则在sm中完成请求。否则,小型写可能需要从lm读,合并,然后写到sm,然后进行l2p转换表条目更新以指定数据现在在sm中(例如,以及lm中该数据的可选的修整)。如果sm中的地址范围没有重叠,则可以直接向lm发出大型写,否则可能需要从sm读,合并以及随后写到lm,然后进行l2p转换表条目更新以指定数据现在在lm中。

即使间接表l2p可以用于sm中的数据,也可以不需要垃圾收集或碎片整理,因为在一些实施例中,sm可以是就地写存储器。sm可以仅需要空间跟踪,在一些实施例中,可以使用单个链表实现空间跟踪以跟踪sm中的所有干净页面地址。如果iu被删除或从sm移动到lm,则sm中的相对应的页面可以添加到列表的尾部。如果将iu添加到sm,则存储设备可以从列表的头部分配新页面。在lm和sm之间划分数据的一些实施例可能比利用sm作为写回高速缓存更快,因为划分数据可能不需要对每个io进行复杂的高速缓存命中/未命中检查,以及相对应的复杂插入/逐出策略、高速缓存关联策略等。然而,在lm和sm之间划分数据的一些实施例可以提供sm空间的较低效使用(例如,因为有效插入粒度可以是iu大小)。在一些实施例中,仍然可以向主机提供用于向存储设备提示关于sm的插入和驱逐的能力(例如,因此存储设备可以在文件关闭时驱逐sm条目)。

代替使用l2p转换表条目中的位,一些实施例在数据的最新副本在sm中时用令牌替换l2p条目。例如,令牌可以是在lm的nand上没有物理表示的数字范围,例如带0。有利地,令牌可以不影响现有的l2p技术(例如,优选地在物理表征的范围的底部或顶部)。通过利用l2p条目中的令牌,一些实施例可能仅需要单个额外比较而不是针对每个l2p查找的两个比较。令牌值可以映射到sm中的dram地址。一些实施例可以包括另一个表,其具有用于dram中的每个iu的位,用于指示哪个部分是脏的,并且是否已经从介质读了非脏部分的标记。

对于使用sm作为写回高速缓存的技术和在sm和lm之间划分数据的技术,可以提供主机软件(例如,文件系统)的实施例以直接向存储设备发出小型写,而不是将小型写对齐到扇区,并且可选地但优选地在文件关闭时向存储设备发出逐出提示。鉴于本说明书和附图的益处,本领域技术人员将想到用于将sm和lm区域暴露给主机的其他粒度和技术。可以经由快速nvm(nvme)或类似于上面的示例api命令的其他协议命令来公开命令。在一些实施例中,lm和sm可以在单独的设备上提供,其中合适的逻辑在与lm和/或sm相关联的硬件或软件控制器中。当lm和sm被提供在同一存储设备上时(例如,在一个外壳中),在一些实施例中,控制器逻辑也可以在存储设备的内部。替代地或另外地,在一些实施例中,控制器逻辑可以放置在外部(例如,在存储设备的外壳之外),其中lm和sm由存储设备暴露给外部控制器逻辑。对于外部控制器逻辑,存储设备还可以提供命令以更有效地在lm和sm之间移动数据。

现在转向图8,电子处理系统80的实施例可包括通信地耦合到ssd82的主机81。主机81可以运行os83,os包括文件系统和应用84。ssd82可以包括ssd控制器85,其从主机81接收访问请求并将访问请求指向sm86和lm87。ssd82还可以包括功率损耗即将到来(pli)功率88技术(例如,在意外断电时用于向ssd提供功率的储能电容器)。在系统80的一些实施例中,ssd82可以将lm87和sm86都暴露给主机81。ssd82可以向lm87提供发现、读、写和修整接口。ssd82可以向sm86提供发现readpartial、writepartial、trim和movesmtolm接口。例如,两个介质可以以不同名称空间的形式或作为单独的设备公开(例如,使用多功能设备方法)。

主机81可以有利地将sm86用于不仅仅是文件元数据。主机还可以利用sm86以用于对包括文件内容的打开文件进行所有小型写操作。例如,当主机81正在处理高速文件时,主机81可以选择将lba或与文件相关联的字节读/写到sm86区域。目标为sm86的所有更改和更新都可以快速完成,而无需更慢的非易失性介质完成。在主机81完成文件之后,相对应的数据可以明确地(例如,如下所述)或隐式地(例如,当sm86中的数据老化时)移动到lm87。

对于显式场景,当文件被关闭时,在一些实施例中,主机81可以经由读和写将相对应的写从sm86传送到lm87。在一些实施例中,主机81可替代地利用ssd82向主机81提供的移动命令,诸如movesmtolm(lbasrclba、offsetsrcoffset、lbadestlba、offsetdestoffset、lengthinbytesn)。movesmtolm命令可以将n个字节从sm86写到lm87,从指定的源地址(lba和偏移组合)写到指定的目的地地址。在一些实施例中,ssd82可以根据需要执行内部读-修改-写命令以处理来自主机81的movesmtolm命令。

在系统80的一些实施例中,可以直接向lm87发出大型写,而可以首先将小型写写到sm86,然后最终在后台被移动到lm87。例如,取决于sm86的介质类型,ssd82可以被配置为在后台、以及在关机和停电等电源事件时,自动将数据从sm86刷新到lm87(例如,如果数据在sm86和lm87之间进行划分)。

附加说明和示例:

示例1可以包括一种电子处理系统,包括主机装置,主机装置包括主机处理器、通信地耦合到主机处理器的主机存储器,以及通信地耦合到主机处理器的主机逻辑,以及通信地耦合到主机的大容量存储设备,该大容量存储设备包括第一非易失性介质、第二非易失性介质,以及通信地耦合到第一和第二非易失性介质的存储控制器逻辑,其中,与第一非易失性介质相比,第二非易失性介质提供相对较大的写粒度,其中主机逻辑用于基于针对文件系统相关的访问请求的粒度大小向大容量存储设备提供针对文件系统相关的访问请求的指示,并且其中存储控制器逻辑用于基于来自主机逻辑的将来自主机装置的访问请求指向第一非易失性介质和第二非易失性介质中的一个。

示例2可以包括示例1的系统,其中主机逻辑还用于将大容量存储设备的第一非易失性介质用作写回高速缓存。

示例3可以包括示例1的系统,其中主机逻辑还提供针对用于将相关联的写请求指向第一非易失性介质的活动文件更新的指示。

示例4可以包括示例3的系统,其中主机逻辑还用于提供针对与用于将相关联的写请求指向第一非易失性介质的活动文件更新相对应的元数据的指示。

示例5可以包括示例3的系统,其中主机逻辑还用于确定文件关闭事件是否与先前指向大容量存储设备的第一非易失性介质的数据相对应,并向该大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

示例6可以包括示例1的系统,其中存储控制器逻辑还用于向主机装置的操作系统提供针对第一非易失性介质的字节粒度输入/输出接口。

示例7可以包括示例1的系统,其中存储控制器逻辑还用于基于所请求的访问是指向第一非易失性介质还是第二非易失性介质,在逻辑到物理转换表中提供指示。

示例8可以包括示例1的系统,其中存储控制器逻辑还用于基于来自主机装置的操作系统的指示将数据从第一非易失性介质移动到第二非易失性介质。

示例9可以包括示例1的系统,其中存储控制器逻辑还用于基于功率转换的指示将数据从第一非易失性介质移动到第二非易失性介质。

示例10可以包括示例1至9中任一个的系统,其中第一非易失性介质包括以下中的一个或多个:电容器支持的动态随机存取存储器、电容器支持的静态随机存取存储器和相变存储器。

示例11可以包括一种大容量存储装置,包括第一非易失性介质、第二非易失性介质,其中与第一非易失性介质相比,第二非易失性介质提供相对更大的写粒度,以及通信地耦合到第一和第二非易失性介质的逻辑,其用于基于来自操作系统的指示将访问请求指向第一非易失性介质和第二非易失性介质中的一个。

示例12可以包括示例11的装置,其中该逻辑还用于向操作系统提供针对第一非易失性介质的字节粒度输入/输出接口。

示例13可以包括示例11的装置,其中该逻辑还用于基于所请求的访问是指向第一非易失性介质还是第二非易失性来在逻辑到物理转换表中提供指示。

示例14可以包括示例11的装置,其中该逻辑还用于基于来自操作系统的另一指示和功率转换的指示中的一个或多个将数据从第一非易失性介质移动到第二非易失性介质。

示例15可以包括示例11至14中任一示例的装置,其中第一非易失性介质包括以下中的一个或多个:电容器支持的动态随机存取存储器、电容器支持的静态随机存取存储器和相变存储器。

示例16可以包括一种半导体装置,包括一个或多个衬底,以及耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,逻辑耦合到一个或多个衬底,用于基于来自操作系统的指示将访问请求指向第一非易失性介质和第二非易失性介质中的一个。

示例17可以包括示例16的装置,其中该逻辑还用于向操作系统提供针对第一非易失性介质的字节粒度输入/输出接口。

示例18可以包括示例16的装置,其中该逻辑还用于基于所请求的访问是指向第一非易失性介质还是第二非易失性来在逻辑到物理转换表中提供指示。

示例19可以包括示例16的装置,其中该逻辑还用于基于来自操作系统的指示和功率转换的指示中的一个或多个将数据从第一非易失性介质移动到第二非易失性介质。

示例20可包括示例16至19中任一示例的装置,其中耦合到一个或多个衬底的逻辑包括位于一个或多个衬底内的晶体管沟道区域。

示例21可以包括一种控制存储的方法,包括基于来自操作的指示来确定访问请求是指向存储设备的第一非易失性介质还是存储设备的第二非易失性介质,并基于来自操作系统的指示将访问请求指向第一非易失性介质和第二非易失性介质中的一个。

示例22可以包括示例21的方法,还包括向操作系统提供针对第一非易失性介质的字节粒度输入/输出接口。

示例23可以包括示例21的方法,还包括基于所请求的访问是指向第一非易失性介质还是第二非易失性介质,在逻辑到物理转换表中提供指示。

示例24可以包括示例21的方法,还包括基于来自操作系统的另一指示以及功率转换的指示中的一个或多个将数据从第一非易失性介质移动到第二非易失性介质。

示例25可以包括示例21至24中任一个的方法,其中第一非易失性介质包括以下中的一个或多个:电容器支持的动态随机存取存储器、电容器支持的静态随机存取存储器和相变存储器。

示例26可以包括至少一个计算机可读介质,包括一组指令,所述指令当由计算设备执行时,使得计算设备用于基于来自操作系统的指示确定访问请求是指向存储设备的第一非易失性介质还是存储设备第二非易失性介质,并基于来自操作系统的指示将访问请求指向第一非易失性介质和第二非易失性介质中的一个。

示例27可以包括示例26的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于向操作系统提供针对第一非易失性介质的字节粒度输入/输出接口。

示例28可以包括示例26的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于基于所请求的访问是指向第一非易失性介质还是第二非易失性介质,而在逻辑到物理转换表中提供指示。

示例29可以包括示例26的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于基于来自操作系统的另一指示以及功率转换的指示中的一个或多个将数据从第一非易失性介质移动到第二非易失性介质。

示例30可包括示例26至29中任一示例的至少一个计算机可读介质,其中第一非易失性介质包括以下中的一个或多个:电容器支持的动态随机存取存储器、电容器支持的静态随机存取存储器和相变存储器。

示例31可以包括一种存储控制器装置,包括用于基于来自操作系统的指示来确定访问请求是指向存储设备的第一非易失性介质还是存储设备的第二非易失性介质的单元,以及用于基于来自操作系统的指示将访问请求指向第一非易失性介质和第二非易失性介质中的一个的单元。

示例32可以包括示例31的装置,还包括用于向操作系统提供针对第一非易失性介质的字节粒度输入/输出接口的单元。

示例33可以包括示例31的装置,还包括用于基于所请求的访问是指向第一非易失性介质还是第二非易失性介质来在逻辑到物理转换表中提供指示的单元。

示例34可以包括示例31的装置,还包括用于基于来自操作系统的另一指示以及功率转换的指示中的一个或多个来将数据从第一非易失性介质移动到第二非易失性介质的单元。

示例35可包括示例31至34中任一示例的装置,其中第一非易失性介质包括以下中的一个或多个:电容器支持的动态随机存取存储器、电容器支持的静态随机存取存储器和相变存储器。

示例36可以包括一种主机计算装置,包括处理器,通信地耦合到处理器的存储器,以及通信地耦合到处理器的逻辑,用于基于针对文件系统相关的访问请求的粒度大小向大容量存储设备提供针对文件系统相关的访问请求的指示。

示例37可以包括示例36的装置,其中该逻辑还用于将大容量存储设备的第一非易失性介质用作写回高速缓存,并且针对其他访问请求利用大容量存储的第二非易失性介质,其中,大容量存储设备的第二非易失性介质的写粒度大于大容量存储设备的第一非易失性介质的写粒度。

示例38可以包括示例36的装置,其中该逻辑还用于提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示,其中大容量存储设备的第一非易失性介质的粒度小于大容量存储设备的第二非易失性介质的粒度。

示例39可以包括示例38的装置,其中该逻辑还用于提供与用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。

示例40可以包括示例38的装置,其中该逻辑还用于确定文件关闭事件是否与先前指向大容量存储设备的第一非易失性介质的数据相对应,并向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

示例41可以包括一种半导体装置,包括一个或多个衬底,以及耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,逻辑耦合到一个或多个衬底,以基于针对文件系统相关的访问请求的粒度大小向大容量存储设备提供针对文件系统相关的访问请求的指示。

示例42可以包括示例41的装置,其中,逻辑还用于将大容量存储设备的第一非易失性介质用作写回高速缓存,并且针对其他访问请求利用大容量存储的第二非易失性介质,其中,大容量存储设备的第二非易失性介质的写粒度大于大容量存储设备的第一非易失性介质的写粒度。

示例43可以包括示例41的装置,其中该逻辑还用于提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示,其中大容量存储设备的第一非易失性介质的粒度小于大容量存储设备的第二非易失性介质的粒度。

示例44可以包括示例43的装置,其中该逻辑还用于提供针对与用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。

示例45可以包括示例43的装置,其中该逻辑还用于确定文件关闭事件是否与先前指向大容量存储设备的第一非易失性介质的数据相对应,并向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

示例46可以包括一种管理存储的方法,包括确定针对文件系统相关的访问请求的粒度大小,以及基于针对文件系统相关的访问请求的所确定的粒度大小向大容量存储设备提供针对文件系统相关的访问请求的指示。

示例47可以包括示例46的方法,还包括利用大容量存储设备的第一非易失性介质作为写回高速缓存,并且针对其他访问请求利用大容量存储设备的第二非易失性介质,其中大容量存储设备的第二非易失性介质的写粒度大于大容量存储设备的第一非易失性介质的写粒度。

示例48可以包括示例46的方法,还包括提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示,其中大容量存储设备的第一非易失性介质的粒度小于大容量存储设备的第二非易失性介质的粒度。

示例49可以包括示例48的方法,还包括提供针对与用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。

示例50可以包括示例48的方法,还包括确定文件关闭事件是否对应于先前指向大容量存储设备的第一非易失性介质的数据,并向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

示例51可以包括至少一个计算机可读介质,包括一组指令,所述指令当由计算设备执行时,使得计算设备用于确定针对文件系统相关的访问请求的粒度大小,并且基于针对文件系统相关的访问请求的确定的粒度大小来向大容量存储设备提供针对文件系统相关的访问请求的指示。

示例52可以包括示例51的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于利用大容量存储设备的第一非易失性介质作为写回高速缓存,并且针对其他访问请求利用大容量存储设备的第二非易失性介质,其中大容量存储设备的第二非易失性介质的写粒度可以大于大容量存储设备的第一非易失性介质的写粒度。

示例53可以包括示例51的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示,其中,大容量存储设备的第一非易失性介质的粒度可以小于大容量存储设备的第二非易失性介质的粒度。

示例54可以包括示例53的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示。

示例55可以包括示例53的至少一个计算机可读介质,包括另一组指令,所述指令当由计算设备执行时,使得计算设备用于确定文件关闭事件是否对应于先前指向大容量存储设备的第一非易失性介质的数据,并向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示。

示例56可以包括一种存储管理器装置,包括用于确定针对文件系统相关的访问请求的粒度大小的单元,以及用于基于针对文件系统相关的访问请求的粒度大小来向大容量存储设备提供针对文件系统相关的访问请求的指示的单元。

示例57可以包括示例56的装置,还包括用于利用大容量存储设备的第一非易失性介质作为写回高速缓存的单元,以及用于针对其他访问请求利用大容量存储设备的第二非易失性介质的单元,其中大容量存储设备的第二非易失性介质的写粒度可以大于大容量存储设备的第一非易失性介质的写粒度。

示例58可以包括示例56的装置,还包括用于提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新的指示的单元,其中,大容量存储设备的第一非易失性介质的粒度可以小于大容量存储设备的第二非易失性介质的粒度。

示例59可以包括示例58的装置,还包括用于提供针对用于将相关联的写请求指向大容量存储设备的第一非易失性介质的活动文件更新相对应的元数据的指示的单元。

示例60可以包括示例58的装置,还包括用于确定文件关闭事件是否对应于先前指向大容量存储设备的第一非易失性介质的数据的单元,以及用于向大容量存储设备提供用于将与关闭的文件相关联的数据从第一非易失性介质移动到第二非易失性介质的指示的单元。

实施例适用于所有类型的半导体集成电路(“ic”)芯片。这些ic芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。另外,在一些附图中,信号导线用线表示。一些可以是不同的,以指示更多组成信号路径,具有数字标签,以指示多个组成信号路径,和/或在一端或多端具有箭头,以指示主要信息流方向。然而,这不应以限制方式解释。而是,可以结合一个或多个示例性实施例使用这种附加细节,以便于更容易地理解电路。任何表示的信号线,无论是否具有附加信息,实际上可以包括可以在多个方向上行进的一个或多个信号,并且可以用任何合适类型的信号方案来实现,例如,利用差分对、光纤线路和/或单端线路实现的数字或模拟线路。

可以给出示例尺寸/模型/值/范围,但是实施例不限于此。随着制造技术(例如,光刻)随着时间的推移而成熟,预期可以制造更小尺寸的器件。另外,为了简化说明和讨论,并且为了不使实施例的某些方面模糊,可以在图中示出或不示出与ic芯片和其他组件的公知的电源/接地连接。此外,可以以框图形式示出布置以避免模糊实施例,并且还考虑到关于这种框图布置的实现的细节高度依赖于实现该实施例的平台的事实,即,这些细节应该在本领域技术人员的知识范围内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,对于本领域技术人员来说显而易见的是,可以在没有或具有这些具体细节的变化的情况下实践实施例。因此,该描述被认为是说明性的而非限制性的。

术语“耦合”在本文中可用于指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电气、机械、流体、光学、电磁、机电或其他连接。另外,除非另有说明,否则这里可以使用术语“第一”、“第二”等仅仅是为了便于讨论,并且不带有特定的时间或时间顺序。

如在本申请和权利要求中所使用的,由术语“一个或多个”连接的项目列表可以表示所列术语的任何组合。例如,短语“a、b和c中的一个或多个”和短语“a、b或c中的一个或多个”都可以表示a;b;c;a和b;a和c;b和c;或a、b和c。

通过前面的描述,本领域技术人员将意识到,实施例的广泛技术可以以各种形式实现。因此,虽然已经结合其具体示例描述了实施例,但是实施例的真实范围不应受此限制,因为在研究了附图、说明书和所附权利要求之后,其他修改对于本领域技术人员将变得显而易见。

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