掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

示例实施例总体上涉及半导体集成电路,并且更具体地,涉及在计算存储设备中分配和保护存储器的方法、执行分配和保护存储器的方法的计算存储设备、以及操作包括计算存储设备的存储系统的方法。

背景技术

某些类型的数据存储设备包括一个或多个半导体存储器设备。这样的数据存储设备的示例包括固态驱动器(SSD)。与硬盘驱动器(HDD)相比,这些类型的数据存储设备可以具有各种设计和/或性能优势。潜在优势的示例包括没有移动的机械部件、更高的数据访问速度、稳定性、耐用性和/或低功耗。最近,各种系统,例如膝上型计算机、汽车、飞机、无人机等,已经采用了SSD进行数据存储。

在包括存储设备和主机设备的系统中,指令(或程序)和数据被存储在存储设备中,并且指令和数据应该从存储设备发送到主机设备,以基于指令对数据执行数据处理。因此,尽管主机设备的处理速度已经增加,但是存储设备和主机设备之间的数据传输速率可能成为性能提高的瓶颈,因此系统的吞吐量可能受到限制。为了解决这个问题,已经开发了包括处理器逻辑的计算存储设备。

发明内容

本公开的至少一个示例实施例提供了一种有效分配和保护被包括在计算存储设备中并用于由计算存储设备执行的计算的存储器的方法。

本公开的至少一个示例实施例提供了一种执行分配和保护存储器的方法的计算存储设备、以及一种操作包括该计算存储设备的存储系统的方法。

根据示例实施例,在包括第一计算引擎和缓冲存储器的计算存储设备中分配和保护存储器的方法中,从布置在计算存储设备外部的主机设备接收存储器分配请求。基于存储器分配请求,执行在缓冲存储器中生成第一存储器区域并且生成与第一存储器区域相关联的第一密钥的存储器分配操作。从主机设备接收程序执行请求。基于程序执行请求,执行由第一计算引擎通过基于使用第一密钥的加密或解密访问第一存储器区域来执行第一程序的程序执行操作。

根据示例实施例,一种计算存储设备包括多个非易失性存储器、缓冲存储器和存储控制器。缓冲存储器临时存储被存储在或要被存储在多个非易失性存储器中的数据,并且用于执行数据处理功能。存储控制器控制多个非易失性存储器的操作和缓冲存储器的操作。存储控制器包括用于执行数据处理功能的第一计算引擎和用于访问缓冲存储器的安全模块。存储控制器从布置在计算存储设备外部的主机设备接收存储器分配请求,基于存储器分配请求来执行在缓冲存储器中生成第一存储器区域并且生成与第一存储器区域相关联的第一密钥的存储器分配操作,从主机设备接收程序执行请求,并且基于程序执行请求来执行由第一计算引擎通过基于使用第一密钥的加密或解密访问第一存储器区域来执行第一程序的程序执行操作。

根据示例实施例,在操作包括主机设备和计算存储设备的存储系统的方法中,计算存储设备包括存储控制器和缓冲存储器。存储控制器执行数据处理功能。由主机设备向存储控制器发送存储器分配请求。基于存储器分配请求,由存储控制器执行在缓冲存储器中生成第一存储器区域并且生成与第一存储器区域相关联的第一密钥的存储器分配操作。由主机设备向存储控制器发送程序加载请求。基于程序加载请求,由存储控制器在程序槽中加载第一程序。由主机设备向存储控制器发送程序激活请求。基于程序激活请求,由存储控制器将第一程序从程序槽发送到第一计算引擎。由主机设备向存储控制器发送程序执行请求。基于程序执行请求,由存储控制器执行由第一计算引擎通过基于使用第一密钥的加密或解密访问第一存储器区域来执行第一程序的程序执行操作。由主机设备向存储控制器发送存储器解除分配请求。基于存储器解除分配请求,由存储控制器执行在缓冲存储器中释放第一存储器区域并且删除第一密钥的存储器解除分配操作。当执行程序执行操作时,使用第一密钥对作为执行第一程序的目标的第一数据进行加密。将加密的第一数据存储在第一存储器区域中。从第一存储器区域读取加密的第一数据。通过使用第一密钥对加密的第一数据进行解密来获得第一数据。通过基于第一数据执行第一程序来获得作为执行第一程序的结果的第二数据。使用第一密钥对第二数据进行加密。将加密的第二数据存储在第一存储器区域中。从第一存储器区域读取加密的第二数据。通过使用第一密钥对加密的第二数据进行解密来获得第二数据。由存储控制器向主机设备发送第二数据。

在根据示例实施例的在计算存储设备中分配和保护存储器的方法、计算存储设备以及操作存储系统的方法中,计算存储设备可以包括用于访问缓冲存储器的安全模块。使用安全模块,可以生成和存储对应于通过存储器分配操作设置的存储器区域的密钥,可以在程序执行操作中基于使用所生成的密钥的加密或解密来访问存储器区域,并且可以在存储器解除分配操作中在释放存储器区域的设置的同时删除所生成的密钥。因此,可以容易地执行初始化存储器区域的操作,而无需诸如将模式写入存储器区域的附加操作,并且可以防止诸如先前存储在存储器区域中的数据的泄露的数据安全问题(因为通过删除所生成的密钥,对先前存储在存储器区域中的数据的访问变得不可能)。结果,计算存储设备可以提高或增强操作性能和效率。

附图说明

从结合附图的以下详细描述中,将更清楚地理解说明性的、非限制性的示例实施例。

图1是示出根据示例实施例的在计算存储设备中分配和保护存储器的方法的流程图。

图2是示出图1的在计算存储设备中分配和保护存储器的方法的示例的流程图。

图3是示出根据示例实施例的计算存储设备和包括计算存储设备的存储系统的框图。

图4是示出根据示例实施例的计算存储设备中包括的存储控制器和存储器的示例的框图。

图5是示出根据示例实施例的被包括在计算存储设备中的存储控制器中包括的安全模块的示例的框图。

图6是示出根据示例实施例的计算存储设备中包括的非易失性存储器的示例的框图。

图7A、图7B和图7C是用于描述根据示例实施例的计算存储设备中包括的非易失性存储器上设置的命名空间的示图。

图8A和图8B是用于描述图2中接收存储器分配请求和执行存储器分配操作的操作的示图。

图9是示出图2中执行存储器分配操作的示例的流程图。

图10是用于描述图9的操作的示图。

图11A和图11B是用于描述图2中接收程序执行请求和执行程序执行操作的操作的示图。

图12是示出图2中执行程序执行操作的示例的流程图。

图13是示出图2中接收程序执行请求和执行程序执行操作的示例的流程图。

图14是用于描述图13的操作的示图。

图15是示出图2中接收程序执行请求和执行程序执行操作的另一示例的流程图。

图16是用于描述图15的操作的示图。

图17是示出图2中接收程序执行请求和执行程序执行操作的又一示例的流程图。

图18是用于描述图17的操作的示图。

图19是示出图2中执行程序执行操作的另一示例的流程图。

图20是示出图1的在计算存储设备中分配和保护存储器的方法的另一示例的流程图。

图21A和图21B是用于描述图20的操作的示图。

图22是示出根据示例实施例的在计算存储设备中分配和保护存储器的方法的流程图。

图23是示出图22的在计算存储设备中分配和保护存储器的方法的示例的流程图。

图24A和图24B是用于描述图23的操作的示图。

图25是示出图23中执行存储器解除分配操作的示例的流程图。

图26是示出图22的在计算存储设备中分配和保护存储器的方法的另一示例的流程图。

图27A和图27B是用于描述图26的操作的示图。

图28是示出图1的在计算存储设备中分配和保护存储器的方法的又一示例的流程图。

图29是示出根据示例实施例的包括存储设备的数据中心的框图。

具体实施方式

将参考示出实施例的附图更全面地描述各种示例实施例。然而,本公开可以以许多不同的形式体现,并且不应该被解释为限于本文阐述的实施例。贯穿本申请,相同的附图标记指代相同的元件。

图1是示出根据示例实施例的在计算存储设备中分配和保护存储器的方法的流程图。

参考图1,根据示例实施例的分配和保护存储器的方法由包括多个非易失性存储器、缓冲存储器和存储控制器的计算存储设备执行。缓冲存储器用于执行数据处理功能。存储控制器包括用于执行数据处理功能的至少一个计算引擎和用于访问缓冲存储器的安全模块。将参考图3描述计算存储设备和包括计算存储设备的存储系统的详细配置。

在根据示例实施例的在计算存储设备中分配和保护存储器的方法中,执行基于密钥生成的存储器分配(步骤S100)。例如,可以在缓冲存储器上或针对缓冲存储器执行存储器分配,并且可以在执行存储器分配的同时一起生成用于访问缓冲存储器的密钥(例如,加密密钥或安全密钥)。

执行使用所生成的密钥的程序执行(步骤S200)。例如,程序执行可以表示使用至少一个计算引擎和缓冲存储器来执行数据处理功能的操作,并且可以通过在执行数据处理功能的同时执行使用所生成的密钥的加密和/或解密来访问缓冲存储器。

图2是示出图1的在计算存储设备中分配和保护存储器的方法的示例的流程图。

参考图1和图2,在步骤S100中,存储控制器从布置在或位于计算存储设备外部的主机设备接收存储器分配请求(步骤S110)。基于存储器分配请求,存储控制器执行在缓冲存储器中生成第一存储器区域并且生成与第一存储器区域相关联或有关的第一密钥的存储器分配操作(步骤S120)。例如,生成和存储第一密钥的操作可以由存储控制器中包括的安全模块执行。例如,尽管没有详细示出,但是在步骤S120中成功完成存储器分配操作之后,可以附加地执行向主机设备发送分配成功响应的操作。

在步骤S200中,存储控制器从主机设备接收程序执行请求(步骤S210)。基于程序执行请求,存储控制器执行由存储控制器中包括的第一计算引擎通过基于使用第一密钥的加密或解密访问第一存储器区域来执行第一程序的程序执行操作(步骤S220)。例如,使用第一密钥的加密或解密可以由存储控制器中包括的安全模块执行。例如,尽管没有详细示出,但是在步骤S220中成功完成程序执行操作之后,可以附加地执行向主机设备发送程序执行成功响应的操作。

尽管图2示出了生成一个存储器区域和对应的一个密钥并且执行一个程序的示例,但是示例实施例不限于此。例如,可以基本上同时和/或顺序地生成多个存储器区域和对应的多个密钥,并且可以基本上同时和/或顺序地执行多个程序。换句话说,步骤S110和S120可以针对不同的存储器区域被执行多次,并且步骤S210和S220可以针对不同的程序被执行多次。此外,可以调度存储器分配操作和程序执行操作,使得存储器分配操作中的一些和程序执行操作中的一些基本上同时或以任意顺序被执行。

与仅执行数据存储功能的一般存储设备不同,计算存储设备可以一起执行数据存储功能和数据处理功能。为了一起执行数据存储功能和数据处理功能,计算存储设备可以包括用于执行数据处理功能的硬件元件和/或软件程序。例如,硬件元件可以包括计算引擎、加速器、处理设备等。例如,软件程序可以以指令代码或程序例程的形式被实施,并且可以被称为应用程序。

在计算存储设备中,计算引擎可以访问缓冲存储器以执行程序。例如,缓冲存储器的部分可以被分配作为计算引擎的特定存储器区域,并且可以通过访问特定存储器区域的操作(例如,通过将与程序的执行相关联或有关的数据写入特定存储器区域和/或通过从特定存储器区域读取数据)来执行程序。例如,在分配特定存储器区域的同时,可能需要初始化特定存储器区域的操作,并且如果不执行初始化特定存储器区域的操作,则可能发生诸如先前存储在特定存储器区域中的数据的泄露的数据安全问题。传统上,通过将特定模式(例如‘0’模式)写入特定存储器区域来初始化特定存储器区域。然而,有这样的问题,即因为特定模式应该被写入整个特定存储器区域,所以初始化需要相对长的时间,并且有这样的问题,即计算性能由于不必要地占用存储带宽而降低或恶化。

在根据示例实施例的在计算存储设备中分配和保护存储器的方法中,计算存储设备可以包括用于访问缓冲存储器的安全模块。使用安全模块,可以生成和存储对应于通过存储器分配操作设置的存储器区域的密钥,可以在程序执行操作中基于使用所生成的密钥的加密或解密来访问存储器区域,并且可以在存储器解除分配操作中在释放存储器区域的设置的同时删除所生成的密钥。因此,可以容易地执行初始化存储器区域的操作,而无需诸如将模式写入存储器区域的附加操作,并且可以防止诸如先前存储在存储器区域中的数据的泄露的数据安全问题(因为通过删除所生成的密钥,对先前存储在存储器区域中的数据的访问变得不可能)。结果,计算存储设备可以提高或增强操作性能和效率。

图3是示出根据示例实施例的计算存储设备和包括计算存储设备的存储系统的框图。

参考图3,存储系统100包括主机设备200和计算存储设备300。

主机设备200控制存储系统100的整体操作。主机设备200可以包括主机处理器210和主机存储器220。

主机处理器210可以控制主机设备200的操作。例如,主机处理器210可以执行操作系统(OS)。例如,操作系统可以包括用于文件管理的文件系统和用于在操作系统级控制包括计算存储设备300的外围设备的设备驱动器。例如,主机处理器210可以包括各种处理单元(例如,中央处理单元(CPU)等)中的至少一种。

主机存储器220可以存储由主机处理器210执行和/或处理的指令和/或数据。例如,主机存储器220可以包括各种易失性存储器(例如,动态随机存取存储器(DRAM)等)中的至少一种。

由主机设备200访问计算存储设备300。计算存储设备300可以包括存储控制器310、多个非易失性存储器320和缓冲存储器330。

存储控制器310可以控制计算存储设备300的操作。例如,存储控制器310可以基于从主机设备200接收的请求(或主机命令)REQ和数据来控制多个非易失性存储器320的操作(例如,数据写入操作和/或数据读取操作),并且可以向主机设备200发送表示请求REQ的结果的响应RSP。

多个非易失性存储器320可以存储多个数据DAT。例如,多个非易失性存储器320可以存储元数据、各种用户数据等。

在一些示例实施例中,多个非易失性存储器320中的每一个可以包括NAND闪存。在其他示例实施例中,多个非易失性存储器320中的每一个可以包括电可擦除可编程只读存储器(EEPROM)、相变随机存取存储器(PRAM)、电阻式随机存取存储器(RRAM)、纳米浮栅存储器(NFGM)、聚合物随机存取存储器(PoRAM)、磁性随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)等中的一个。

缓冲存储器330可以存储由存储控制器310执行和/或处理的指令和/或数据,并且可以临时存储被存储在或要被存储在多个非易失性存储器320中的数据。例如,缓冲存储器330可以包括各种易失性存储器(例如,静态随机存取存储器(SRAM)、DRAM等)中的至少一个。在一些示例实施例中,缓冲存储器330可以被包括在存储控制器310中。

根据示例实施例,存储控制器310包括计算引擎312和安全模块316,并且缓冲存储器330包括存储器区域332。

计算存储设备300执行根据参考图1和图2描述的示例实施例的分配和保护存储器的方法。例如,当执行存储器分配操作时或在执行存储器分配操作的同时,存储控制器310可以在缓冲存储器330的一部分上设置存储器区域332,并且安全模块316可以生成和存储与存储器区域332相关联的密钥318。当执行程序执行操作时或在执行程序执行操作的同时,安全模块316可以执行使用密钥318的加密或解密,并且存储控制器310和计算引擎312可以基于使用密钥318的加密或解密来访问存储器区域332,以执行程序314。例如,当从非易失性存储器320提供的数据DAT要被存储在存储器区域332中时,安全模块316可以通过基于密钥318对数据DAT进行加密来生成加密的数据EDAT,并且加密的数据EDAT可以被存储在存储器区域332中。

此外,计算存储设备300执行根据将参考图22和图23描述的示例实施例的分配和保护存储器的方法。例如,当执行存储器解除分配操作时或在执行存储器解除分配操作的同时,存储控制器310可以释放缓冲存储器330中的存储器区域332的设置,并且安全模块316可以删除或移除与存储器区域332相关联的密钥318。

尽管没有详细示出,但是当将数据DAT写入或存储到非易失性存储器320中或者从非易失性存储器320读取或检索数据DAT时,对应于数据DAT的命令、地址等可以被发送到非易失性存储器320。类似地,当将加密的数据EDAT写入或存储到缓冲存储器330中或者从缓冲存储器330读取或检索加密的数据EDAT时,对应于加密的数据EDAT的命令、地址等可以被发送到缓冲存储器330。

在一些示例实施例中,当计算存储设备300被实施为执行数据处理功能时,程序314可以从主机设备200卸载到计算存储设备300(例如,到存储控制器310和计算引擎312),并且计算存储设备300(例如,存储控制器310和计算引擎312)可以执行从主机设备200卸载的程序314。

程序或计算的卸载表示将资源密集型计算任务转移到单独的处理器(诸如硬件加速器)或外部平台(诸如集群、网格或云)。到协处理器的卸载可以用于加速包括图像渲染和数学计算的应用。通过网络将计算卸载到外部平台可以提供计算能力并克服设备的硬件限制,诸如有限的计算能力、存储和能量。

在一些示例实施例中,计算存储设备300和/或存储控制器310可以基于非易失性存储器快速(NVMe)技术提案(TP)4091协议进行操作。NVMe TP 4091协议是由存储网络工业协会(SNIA)确立的标准,并且是为了将应用从主机设备卸载到存储设备而确立的标准。例如,当应用NVMe TP 4091协议时,可以从主机设备200一起发送计算和命令。例如,存储器区域332可以被称为计算程序存储器(CPM),并且可以存储用于执行程序314的参数数据、输入数据、输出数据、抓取数据等。

在一些示例实施例中,计算存储设备300可以是固态驱动器(SSD)。在其他示例实施例中,计算存储设备300可以是通用闪存存储(UFS)、多媒体卡(MMC)或嵌入式多媒体卡(eMMC)。在另外的其他示例实施例中,计算存储设备300可以是安全数字(SD)卡、微型SD卡、记忆棒、芯片卡、通用串行总线(USB)卡、智能卡、紧凑型闪存(CF)卡等中的一个。

在一些示例实施例中,计算存储设备300可以经由块可访问接口连接到主机设备200,该块可访问接口可以包括例如UFS、eMMC、串行高级技术附件(SATA)总线、非易失性存储器快速(NVMe)总线、串行附接SCSI(SAS)总线等。计算存储设备300可以使用对应于多个非易失性存储器320的访问大小的块可访问地址空间来向主机设备200提供块可访问接口,用于允许针对存储在多个非易失性存储器320中的数据以存储器块为单位的访问。

在一些示例实施例中,存储系统100可以是任何计算系统,诸如个人计算机(PC)、服务器计算机、数据中心、工作站、数字电视、机顶盒、导航系统等。在其他示例实施例中,存储系统100可以是任何移动系统,诸如移动电话、智能电话、平板计算机、膝上型计算机、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、便携式游戏控制台、音乐播放器、摄像机、视频播放器、导航设备、可穿戴设备、物联网(IoT)设备、万物互联(IoE)设备、电子书阅读器、虚拟现实(VR)设备、增强现实(AR)设备、机器人设备、无人机等。

图4是示出根据示例实施例的计算存储设备中包括的存储控制器和存储器的示例的框图。

参考图4,计算存储设备(例如,图3中的计算存储设备)可以包括存储控制器400、至少一个命名空间322和缓冲存储器330。存储控制器400、至少一个命名空间322和缓冲存储器330可以分别对应于图3中的存储控制器310、多个非易失性存储器320和缓冲存储器330。

至少一个命名空间322可以表示在多个非易失性存储器320上或针对多个非易失性存储器320设置的逻辑存储空间。例如,至少一个命名空间322可以存储数据DAT,并且可以与存储控制器400交换数据DAT。

缓冲存储器330可以包括根据示例实施例来分配的多个存储器区域MR_1、...、MR_N,其中N是大于或等于2的自然数。多个存储器区域MR_1至MR_N中的每一个可以与图3中的存储器区域332基本上相同。例如,多个存储器区域MR_1至MR_N中的每一个可以存储加密的数据EDAT,并且可以与存储控制器400交换加密的数据EDAT。

存储控制器400可以包括主机接口(I/F)410、处理器420、程序槽430、计算引擎440、安全模块450、缓冲存储器(BM)接口460、纠错码(ECC)引擎470和非易失性存储器(NVM)接口480。

主机接口410可以提供主机设备(例如,图3中的主机设备200)和计算存储设备之间的物理连接。主机接口410可以提供对应于主机设备的总线格式的接口,用于主机设备和计算存储设备之间的通信。例如,主机接口410可以从主机设备接收请求REQ,并且可以向主机设备发送表示请求REQ的结果的响应RSP。

在一些示例实施例中,主机接口410可以基于NVMe TP 4091协议进行操作。换句话说,主机接口410可以支持NVMe TP 4091协议。多个程序PR_1、...、PR_K可以基于NVMe TP4091协议从主机设备410卸载,其中K是大于或等于2的自然数。

处理器420可以响应于经由主机接口410从主机设备接收的请求和/或计算而控制存储控制器400的操作。例如,处理器420可以控制计算存储设备的操作,并且可以通过采用用于操作计算存储设备的固件来控制相应组件。

程序槽430可以存储多个程序PR_1至PR_K。多个程序PR_1至PR_K中的每一个可以与图3中的程序314基本上相同。例如,多个程序PR_1至PR_K可以包括各种运算符,诸如滤波、求和、字符串级联等。尽管图4示出程序槽430填充有多个程序PR_1至PR_K,但是示例实施例不限于此,并且程序槽430中的一些或全部可以是空的,如图8B所示。

计算引擎440可以基于数据DAT来执行多个程序PR_1至PR_K,并且可以生成数据DAT作为执行多个程序PR_1至PR_K的结果。计算引擎440可以包括多个计算引擎CE_1、...、CE_M,其中M是大于或等于2的自然数。多个计算引擎CE_1至CE_M中的每一个可以与图3中的计算引擎312基本上相同,并且可以执行一个或多个程序。例如,多个计算引擎CE_1至CE_M可以包括各种计算资源和/或加速器,诸如CPU、神经处理单元(NPU)、图形处理单元(GPU)、数字信号处理器(DSP)、图像信号处理器(ISP)等。

安全模块450可以生成和存储多个密钥KY_1、...、KY_N,其彼此不同并且分别对应于多个存储器区域MR_1至MR_N。安全模块450可以与图3中的安全模块316基本上相同,并且多个密钥KY_1至KY_N中的每一个可以与图3中的密钥318基本上相同。例如,密钥KY_1可以对应于存储器区域MR_1,并且可以用于访问存储器区域MR_1。将参考图5描述安全模块450的配置。

缓冲存储器接口460可以与缓冲存储器330(例如,与多个存储器区域MR_1至MR_N)交换加密的数据EDAT。例如,加密的数据EDAT可以由安全模块450使用多个密钥KY_1至KY_N来生成。

用于纠错的ECC引擎470可以使用Bose-Chaudhuri-Hocquenghem(BCH)码、低密度奇偶校验(LDPC)码、turbo码、Reed-Solomon码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、块编码调制(BCM)等来执行编码调制,或者可以使用上述码或其他纠错码来执行ECC编码和ECC解码。

非易失性存储器接口480可以与至少一个命名空间322交换数据DAT。非易失性存储器接口480可以将数据DAT转移到至少一个命名空间322,或者可以接收从至少一个命名空间322读取的数据DAT。例如,非易失性存储器接口480可以被配置为符合标准协议,诸如Toggle或开放NAND闪存接口(ONFI)。

图5是示出根据示例实施例的被包括在计算存储设备中的存储控制器中包括的安全模块的示例的框图。

参考图4和图5,安全模块450可以包括密钥生成器452、密钥存储器454、加密模块456和解密模块458。

密钥生成器452可以生成密钥KY或密钥删除信号KDEL。例如,密钥生成器452可以基于存储器分配请求(例如,图8中的存储器分配请求MA_REQ)来生成对应于存储器区域的密钥KY,并且可以基于存储器解除分配请求(例如,图24的存储器解除分配请求MDA_REQ)来生成用于从密钥存储器454删除密钥KY的密钥删除信号KDEL。

密钥存储器454可以存储对应于存储器区域的存储器区域标识(ID)和密钥KY,并且可以基于对对应存储器区域的访问请求(例如,图14中的请求RI_REQ、图16中的请求P_REQ和/或图18中的请求RO_REQ)向加密模块456和/或解密模块458提供密钥KY。

加密模块456可以接收从命名空间322和/或计算引擎440发送的数据DAT',可以接收从密钥存储器454提供的密钥KY,并且可以通过使用密钥KY对数据DAT'进行加密来生成加密的数据EDAT'。加密的数据EDAT'可以被发送到缓冲存储器330,并且可以被存储在对应存储器区域中。

解密模块458可以接收从缓冲存储器330(例如,从对应存储器区域)发送的加密的数据EDAT",并且可以通过使用与用于对数据DAT'进行加密的密钥KY相同的密钥KY对加密的数据EDAT"进行解密来生成数据DAT"。数据DAT"可以被发送到计算引擎440和/或主机设备。

在一些示例实施例中,安全模块450可以以高级加密标准(AES)引擎的形式被实施。AES引擎可以使用对称密钥算法来执行对数据的加密操作和解密操作中的至少一个。

尽管图5示出了加密模块456和解密模块458被实施为单独的模块的示例,但是示例实施例不限于此,并且加密模块456和解密模块458可以被实施为能够执行加密操作和解密操作的一个模块。

图6是示出根据示例实施例的计算存储设备中包括的非易失性存储器的示例的框图。

参考图6,非易失性存储器500包括存储器单元阵列510、地址解码器520、页缓冲电路530、数据输入/输出(I/O)电路540、电压发生器550和控制电路560。

存储器单元阵列510经由多个串选择线SSL、多个字线WL和多个地选择线GSL连接到地址解码器520。存储器单元阵列510还经由多个位线BL连接到页缓冲电路530。存储器单元阵列510可以包括连接到多个字线WL和多个位线BL的多个存储器单元(例如,多个非易失性存储器单元)。存储器单元阵列510可以被划分为多个存储器块BLK1、BLK2、...、BLKz,多个存储器块BLK1、BLK2、...、BLKz中的每一个包括存储器单元。此外,多个存储器块BLK1至BLKz中的每一个可以被划分为多个页。

在一些示例实施例中,存储器单元阵列510中包括的多个存储器单元可以被布置成二维(2D)阵列结构或三维(3D)垂直阵列结构。3D垂直阵列结构可以包括垂直取向的垂直单元串,使得至少一个存储器单元位于另一个存储器单元之上。至少一个存储器单元可以包括电荷俘获层。通过引用而整体并入本文的以下专利文档描述了包括其中三维存储器阵列被配置为多个层级(在层级之间共享字线和/或位线)的3D垂直阵列结构的存储器单元阵列的合适配置:专利号为7,679,133、8,553,466、8,654,587、8,559,235的美国专利;以及公开号为2011/0233648的美国专利。

控制电路560从外部(例如,从图3中的存储控制器310)接收命令CMD和地址ADDR,并且基于命令CMD和地址ADDR来控制非易失性存储器500的擦除、编程和读取操作。擦除操作可以包括执行擦除循环序列,并且编程操作可以包括执行编程循环序列。每个编程循环可以包括编程操作和编程验证操作。每个擦除循环可以包括擦除操作和擦除验证操作。读取操作可以包括正常读取操作和数据恢复读取操作。

例如,基于命令CMD,控制电路560可以生成用于控制电压发生器550的控制信号CON,并且可以生成用于控制页缓冲电路530的控制信号PBC,并且可以基于地址ADDR来生成行地址R_ADDR和列地址C_ADDR。控制电路560可以向地址解码器520提供行地址R_ADDR,并且可以向数据I/O电路540提供列地址C_ADDR。

地址解码器520可以经由多个串选择线SSL、多个字线WL和多个地选择线GSL连接到存储器单元阵列510。例如,在数据擦除/写入/读取操作中,基于行地址R_ADDR,地址解码器520可以将多个字线WL中的至少一个确定为所选择的字线,可以将多个串选择线SSL中的至少一个确定为所选择的串选择线,并且可以将多个地选择线GSL中的至少一个确定为所选择的地选择线。

电压发生器550可以基于电力PWR和控制信号CON来生成非易失性存储器500的操作所需的电压VS。电压VS可以经由地址解码器520被施加到多个串选择线SSL、多个字线WL和多个地选择线GSL。此外,电压发生器550可以基于电力PWR和控制信号CON来生成数据擦除操作所需的擦除电压VERS。擦除电压VERS可以直接地或经由位线BL被施加到存储器单元阵列510。

页缓冲电路530可以经由多个位线BL连接到存储器单元阵列510。页缓冲电路530可以包括多个页缓冲器。页缓冲电路530可以存储要被编程到存储器单元阵列510中的数据DAT,或者可以读取从存储器单元阵列510读出的数据DAT。换句话说,根据非易失性存储器500的操作模式,页缓冲电路530可以作为写入驱动器或读出放大器进行操作。

数据I/O电路540可以经由数据线DL连接到页缓冲电路530。基于列地址C_ADDR,数据I/O电路540可以经由页缓冲电路530将数据DAT从非易失性存储器500的外部提供给存储器单元阵列510,或者可以将数据DAT从存储器单元阵列510提供给非易失性存储器500的外部。

尽管基于NAND闪存描述了根据示例实施例的非易失性存储器,但是根据示例实施例的非易失性存储器可以是任何非易失性存储器,例如,相位随机存取存储器(PRAM)、电阻式随机存取存储器(RRAM)、纳米浮栅存储器(NFGM)、聚合物随机存取存储器(PoRAM)、磁性随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、晶闸管随机存取存储器(TRAM)等。

图7A、图7B和图7C是用于描述根据示例实施例的计算存储设备中包括的非易失性存储器上设置的命名空间的示图。

根据示例实施例的计算存储设备可以基于非易失性存储器快速(NVMe)协议进行操作,并且可以支持命名空间功能和/或分区命名空间(zoned namespace,ZNS)功能。NVMe可以是执行诸如固态驱动器(SSD)的存储设备和主机软件之间的通信的寄存器级接口。NVMe可以基于传统的外围组件互连快速(PCIe)总线(或计算快速链接(CXL)总线),并且可以是针对SSD设计或可替代地优化的接口。当使用命名空间功能时,用一个物理设备实施的存储设备可以被分割为多个逻辑设备(例如,多个命名空间),并且数据可以基于多个命名空间来管理。当使用分区命名空间功能时,一个命名空间可以被附加地分割为多个区,并且数据可以基于多个命名空间和多个区来管理。该多个命名空间和该多个区中的全部可以在物理上被包括在相同存储设备中,并且每个命名空间和每个区可以用作单独的存储空间。例如,CXL协议是针对高性能数据中心计算机设计的高速CPU到设备和CPU到存储器连接的开放标准。利用以下三个方面中的协议在PCIe物理和电气接口上建立CXL协议:I/O、存储器和高速缓存一致性。

参考图7A,示出了在多个非易失性存储器NVM1、NVM2、...、NVMp上生成和设置多个命名空间NS11、NS21、...、NSp1的示例,其中p是大于或等于2的自然数。例如,多个非易失性存储器NVM1至NVMp可以被包括在一个存储设备中,因此,多个命名空间NS11至NSp1也可以被包括在一个存储设备中。多个命名空间NS11至NSp1中的一个可以对应于图4中的命名空间322。

在图7A的示例中,可以在一个非易失性存储器上生成和设置一个命名空间。例如,可以在非易失性存储器NVM1的整个区域上生成和设置命名空间NS11。

参考图7B,示出了在多个非易失性存储器NVM1、NVM2、...、NVMp上生成和设置多个命名空间NS12、NS22、...、NSp2的另一示例。将省略与图7A重复的描述。

在图7B的示例中,可以在多个非易失性存储器NVM1至NVMp中的全部上生成和设置一个命名空间。例如,可以在多个非易失性存储器NVM1至NVMp中的全部的一些区域上生成和设置命名空间NS12。

尽管在图7A和图7B中未示出,但是可以根据示例实施例来不同地实施生成和设置命名空间的操作。例如,命名空间NS11至NSp1和NS12至NSp2的容量可以彼此基本上相同或不同。例如,命名空间NS11至NSp1和NS12至NSp2的数量和非易失性存储器NVM1至NVMp的数量可以彼此基本上相同或不同。

参考图7C,示出了在一个命名空间NS上生成和设置多个区ZN1、ZN2、...、ZNq的示例,其中q是大于或等于2的自然数。命名空间NS可以对应于图7A中的命名空间NS11至NSp1和图7B中的命名空间NS12至NSp2之一。

在一些示例实施例中,生成和设置命名空间和/或区的操作可以在初始操作时间被提前执行。在其他示例实施例中,生成和设置命名空间和/或区的操作可以实时或在运行时被执行。

在下文中,将基于第一存储器区域MR_1被分配给缓冲存储器330并且第一计算引擎CE_1使用第一存储器区域MR_1执行第一程序PR_1来描述示例实施例。

图8A和图8B是用于描述图2中接收存储器分配请求和执行存储器分配操作的操作的示图。

参考图2、图8A和图8B,在初始操作时间,程序槽430可以是空的,并且计算引擎CE_1至CE_M可以不执行和/或激活程序。

在步骤S110中,主机设备200可以向存储控制器400发送存储器分配请求MA_REQ。例如,存储器分配请求MA_REQ可以包括第一存储器区域MR_1的地址信息(例如,图10中的地址信息ADDR_1)。

在步骤S120中,存储控制器400可以基于存储器分配请求MA_REQ来执行存储器分配操作MEM_AL。例如,存储控制器400可以在缓冲存储器330中设置第一存储器区域MR_1,并且安全模块450可以生成和存储与第一存储器区域MR_1相关联的第一密钥KY_1。

在存储器分配操作MEM_AL被成功完成之后,存储控制器400可以向主机设备200发送分配成功响应MA_RSP。在根据示例实施例的计算存储设备中,可以容易地执行初始化第一存储器区域MR_1的操作,而无需诸如将模式写入第一存储器区域MR_1的附加操作。因此,在接收到存储器分配请求MA_REQ之后,分配成功响应MA_RSP可以被发送到主机设备200,而不从主机设备200接收附加的数据写入请求和附加的写入数据。

图9是示出图2中执行存储器分配操作的示例的流程图。图10是用于描述图9的操作的示图。

参考图2、图8B、图9和图10,在步骤S120中,可以在缓冲存储器330的一部分上设置第一存储器区域MR_1,并且可以设置对应于第一存储器区域MR_1的第一存储器区域ID MR_ID_1(步骤S121)。例如,第一存储器区域ID MR_ID_1可以被包括在从主机设备200发送的存储器分配请求MA_REQ中,或者可以由存储控制器400自己设置。

可以生成与第一存储器区域ID MR_ID_1相关联的第一密钥KY_1(步骤S123)。例如,安全模块450中包括的密钥生成器452可以生成第一密钥KY_1。

可以存储第一存储器区域ID MR_ID_1和第一密钥KY_1(步骤S125)。例如,安全模块450中包括的密钥存储器454可以以表的形式存储第一存储器区域ID MR_ID_1、第一密钥KY_1和与第一存储器区域MR_1相关联的第一地址信息ADDR_1之间的关系(或对应关系)。例如,第一地址信息ADDR_1可以被包括在从主机设备200发送的存储器分配请求MA_REQ中。例如,第一地址信息ADDR_1可以表示特定的地址值和/或范围,并且可以包括例如第一存储器区域MR_1的开始地址和结束地址。

图11A和图11B是用于描述图2中接收程序执行请求和执行程序执行操作的操作的示图。

参考图2、图11A和图11B,在程序执行请求PE_REQ被发送之前,第一程序PR_1可以被加载和存储在程序槽430中,并且第一程序PR_1可以被发送到第一计算引擎CE_1并由其激活。将参考图20和图21描述这样的程序加载和激活操作。

在步骤S210中,主机设备200可以向存储控制器400发送程序执行请求PE_REQ。例如,程序执行请求PE_REQ可以包括与第一程序PR_1相关联的第一程序ID、对第一存储器区域MR_1的访问请求、第一存储器区域ID MR_ID_1、地址等。

在步骤S220中,存储控制器400和缓冲存储器330可以基于程序执行请求PE_REQ来执行程序执行操作PR_EXE。例如,第一计算引擎CE_1可以通过使用第一密钥KY_1对数据DAT进行加密和/或对加密的数据EDAT进行解密以访问第一存储器区域MR_1来执行第一程序PR_1。

在程序执行操作PR_EXE被成功完成之后,存储控制器400可以向主机设备200发送程序执行成功响应PE_RSP。

图12是示出图2中执行程序执行操作的示例的流程图。

参考图2、图11B和图12,在步骤S220中,可以基于对第一存储器区域MR_1的访问请求来提供第一密钥KY_1(步骤S221)。例如,对第一存储器区域MR_1的访问请求可以被包括在从主机设备200发送的程序执行请求PE_REQ中。例如,基于对第一存储器区域MR_1的特定地址的写入请求和/或读取请求,安全模块450中包括的密钥存储器454可以向安全模块450中包括的加密模块456和/或解密模块458提供第一密钥KY_1。

可以使用第一密钥KY_1来执行对要被存储在第一存储器区域MR_1中的写入数据的加密操作和对要从第一存储器区域MR_1检索的读取数据的解密操作中的至少一个(步骤S223)。例如,安全模块450中包括的加密模块456和解密模块458可以分别执行加密操作和解密操作。

图13是示出图2中接收程序执行请求和执行程序执行操作的示例的流程图。图14是用于描述图13的操作的示图。

参考图2、图12、图13和图14,在步骤S210中,可以接收被包括在程序执行请求PE_REQ中并被包括在对第一存储器区域MR_1的访问请求中的第一请求RI_REQ(步骤S210a)。例如,第一请求RI_REQ可以是用于将作为执行第一程序PR_1的目标的第一数据DAT1存储在第一存储器区域MR_1中的请求。第一请求RI_REQ可以被称为输入数据读取请求。例如,第一数据DAT1可以被存储在命名空间322中,并且第一数据DAT1可以从命名空间322复制到第一存储器区域MR_1。例如,第一请求RI_REQ可以包括从命名空间322读取第一数据DAT1所需的第一读取地址、将对应于第一数据DAT1的加密的第一数据EDAT1写入第一存储器区域MR_1所需的第一写入地址等。

在步骤S220中,密钥存储器454可以基于第一请求RI_REQ来提供第一密钥KY_1(步骤S221a),并且可以使用第一密钥KY_1来执行对第一数据DAT1的加密操作(步骤S223a)。例如,可以基于第一写入地址将第一密钥KY_1提供给加密模块456以执行加密操作。

在步骤S223a中,存储控制器400可以基于第一读取地址从命名空间322读取和接收第一数据DAT1(步骤S223a1)。安全模块450(例如,加密模块456)可以通过使用第一密钥KY_1对第一数据DAT1进行加密来生成加密的第一数据EDAT1(步骤S223a2)。存储控制器400可以基于第一写入地址将加密的第一数据EDAT1发送到缓冲存储器330,并且加密的第一数据EDAT1可以被存储在第一存储器区域MR_1中(步骤S223a3)。

在基于第一请求RI_REQ的这样的操作被成功完成之后,存储控制器400可以向主机设备200发送第一成功响应RI_RSP。

图15是示出图2中接收程序执行请求和执行程序执行操作的另一示例的流程图。图16是用于描述图15的操作的示图。

参考图2、图12、图15和图16,在步骤S210中,还可以接收被包括在程序执行请求PE_REQ中并被包括在对第一存储器区域MR_1的访问请求中的第二请求P_REQ(步骤S210b)。例如,第二请求P_REQ可以是用于基于第一数据DAT1来执行第一程序PR_1并且用于将作为执行第一程序PR_1的结果的第二数据DAT2存储在第一存储器区域MR_1中的请求。例如,第二请求P_REQ可以包括执行第一程序PR_1所需的第一程序ID、从第一存储器区域MR_1读取对应于第一数据DAT1的加密的第一数据EDAT1所需的第二读取地址、将对应于第二数据DAT2的加密的第二数据EDAT2写入第一存储器区域MR_1所需的第二写入地址等。

在步骤S220中,密钥存储器454可以基于第二请求P_REQ来提供第一密钥KY_1(步骤S221b),并且可以使用第一密钥KY_1来进一步执行对第一数据DAT1的解密操作和对第二数据DAT2的加密操作(步骤S223b)。例如,可以基于第二读取地址和第二写入地址将第一密钥KY_1提供给解密模块458和加密模块456,以执行解密操作和加密操作。

在步骤S223b中,存储控制器400可以基于第二读取地址从第一存储器区域MR_1读取加密的第一数据EDAT1(步骤S223b1)。安全模块450(例如,解密模块458)可以通过使用第一密钥KY_1对加密的第一数据EDAT1进行解密来获得第一数据DAT1(步骤S223b2)。第一计算引擎CE_1可以通过基于第一数据DAT1执行第一程序PR_1来获得第二数据DAT2(步骤S223b3)。例如,当第一程序PR_1是滤波程序时,可以通过根据预定准则对第一数据DAT1进行滤波来生成第二数据DAT2。安全模块450(例如,加密模块456)可以通过使用第一密钥KY_1对第二数据DAT2进行加密来生成加密的第二数据EDAT2(步骤S223b4)。存储控制器400可以基于第二写入地址将加密的第二数据EDAT2发送到缓冲存储器330,并且加密的第二数据EDAT2可以被存储在第一存储器区域MR_1中(步骤S223b5)。

在基于第二请求P_REQ的这样的操作被成功完成之后,存储控制器400可以向主机设备200发送第二成功响应P_RSP。

图17是示出图2中接收程序执行请求和执行程序执行操作的又一示例的流程图。图18是用于描述图17的操作的示图。

参考图2、图12、图17和图18,在步骤S210中,还可以接收被包括在程序执行请求PE_REQ中并被包括在对第一存储器区域MR_1的访问请求中的第三请求RO_REQ(步骤S210c)。例如,第三请求RO_REQ可以是用于向主机设备200发送第二数据DAT2的请求。第三请求RO_REQ可以被称为输出数据(或结果数据)读取请求。例如,第三请求RO_REQ可以包括从第一存储器区域MR_1读取对应于第二数据DAT2的加密的第二数据EDAT2所需的第三读取地址等。

在步骤S220中,密钥存储器454可以基于第三请求RO_REQ来提供第一密钥KY_1(步骤S221c),并且可以使用第一密钥KY_1来进一步执行对第二数据DAT2的解密操作(步骤S223c)。例如,可以基于第三读取地址将第一密钥KY_1提供给解密模块458以执行解密操作。

在步骤S223c中,存储控制器400可以基于第三读取地址从第一存储器区域MR_1读取加密的第二数据EDAT2(步骤S223c1)。安全模块450(例如,解密模块458)可以通过使用第一密钥KY_1对加密的第二数据EDAT2进行解密来获得第二数据DAT2(步骤S223c2)。存储控制器400可以向主机设备200发送第二数据DAT2(步骤S223c3)。

在基于第三请求RO_REQ的这样的操作被成功完成之后,存储控制器400可以向主机设备200发送第三成功响应RO_RSP。

图19是示出图2中执行程序执行操作的另一示例的流程图。将省略与图12重复的描述。

参考图2和图19,在步骤S220中,可以检查或确定对第一存储器区域MR_1的访问请求是否是合法的或授权的访问请求(步骤S225)。仅当对第一存储器区域MR_1的访问请求是合法的访问请求时(步骤S225:是),才可以执行步骤S221和S223。当对第一存储器区域MR_1的访问请求不是合法的访问请求时(步骤S225:否),可以终止该过程,而不执行步骤S221和S223。通过执行验证操作以检查访问请求是否是合法的访问请求(例如,它是否是来自合法用户的请求),可以提高或增强安全性能。

图20是示出图1的在计算存储设备中分配和保护存储器的方法的另一示例的流程图。图21A和图21B是用于描述图20的操作的示图。将省略与图2重复的描述。

参考图1、图20、图21A和图21B,在步骤S200中,在执行步骤S210和S220之前,存储控制器400可以从主机设备200接收程序加载请求PL_REQ(步骤S230),并且可以接收对应于程序加载请求PL_REQ的第一程序PR_1。例如,程序加载请求PL_REQ可以包括与第一程序PR_1相关联的第一程序ID。存储控制器400可以基于程序加载请求PL_REQ将第一程序PR_1加载到程序槽430中(步骤S240)。在程序加载操作被成功完成之后,存储控制器400可以向主机设备200发送程序加载成功响应PL_RSP。

此后,存储控制器400可以从主机设备200接收程序激活请求PA_REQ(步骤S250)。例如,程序激活请求PA_REQ可以包括与第一程序PR_1相关联的第一程序ID和与执行第一程序PR_1的第一计算引擎CE_1相关联的信息。存储控制器400可以基于程序激活请求PA_REQ向第一计算引擎CE_1发送第一程序PR_1(步骤S260),然后可以准备第一程序PR_1的执行。在程序激活操作被成功完成之后,存储控制器400可以向主机设备200发送程序激活成功响应PA_RSP。

图22是示出根据示例实施例的在计算存储设备中分配和保护存储器的方法的流程图。将省略与图1重复的描述。

参考图22,在根据示例实施例的在计算存储设备中分配和保护存储器的方法中,在执行步骤S100和S200之后,执行基于密钥删除的存储器解除分配(步骤S300)。例如,可以在缓冲存储器上或针对缓冲存储器执行存储器解除分配,并且在执行存储器解除分配的同时,可以删除或移除用于访问缓冲存储器的密钥。

图23是示出图22的在计算存储设备中分配和保护存储器的方法的示例的流程图。图24A和图24B是用于描述图23的操作的示图。将省略与图2重复的描述。

参考图22、图23、图24A和图24B,在步骤S300中,存储控制器400从主机设备200接收存储器解除分配请求MDA_REQ(步骤S310)。例如,存储器解除分配请求MDA_REQ可以包括与第一存储器区域MR_1相关联的第一存储器区域ID MR_ID_1。基于存储器解除分配请求MDA_REQ,存储控制器400执行在缓冲存储器330中释放第一存储器区域MR_1并且删除第一密钥KY_1的存储器解除分配操作MEM_DAL(步骤S320)。例如,删除第一密钥KY_1的操作可以由存储控制器400中包括的安全模块450执行。在存储器解除分配操作MEM_DAL被成功完成之后,存储控制器400可以向主机设备200发送解除分配成功响应MDA_RSP。

图25是示出图23中执行存储器解除分配操作的示例的流程图。

参考图10、图23和图25,在步骤S320中,可以删除与对应于第一存储器区域MR_1的第一存储器区域ID MR_ID_1相关联的第一密钥KY_1(步骤S321)。例如,可以删除存储在密钥存储器454中的第一存储器区域ID MR_ID_1、第一密钥KY_1和第一地址信息ADDR_1之间的关系。可以释放缓冲存储器330中的第一存储器区域MR_1和第一存储器区域ID MR_ID_1的设置(步骤S323)。

图26是示出图22的在计算存储设备中分配和保护存储器的方法的另一示例的流程图。图27A和图27B是用于描述图26的操作的示图。将省略与图23重复的描述。

参考图22、图26、图27A和图27B,在执行步骤S310和S320之后,在步骤S100中,存储控制器400可以从主机设备200接收存储器重新分配请求MRA_REQ(步骤S130)。例如,步骤S130可以类似于步骤S110,并且存储器重新分配请求MRA_REQ可以包括与第一存储器区域MR_1相关联的第一地址信息ADDR_1。基于存储器重新分配请求MRA_REQ,存储控制器400可以执行在缓冲存储器330中生成第一存储器区域MR_1并且生成与第一存储器区域MR_1相关联的第二密钥KY_1'的存储器重新分配操作MEM_RAL。例如,步骤S140可以类似于步骤S120,并且第二密钥KY_1'可以不同于第一密钥KY_1。在存储器重新分配操作MEM_RAL被成功完成之后,存储控制器400可以向主机设备200发送重新分配成功响应MRA_RSP。例如,存储器重新分配请求MRA_REQ可以与图8A中的存储器分配请求MA_REQ基本上相同。

如上所述,当在相同的第一存储器区域MR_1上顺序地执行存储器分配操作MEM_AL、存储器解除分配操作MEM_DAL和存储器重新分配操作MEM_RAL时,通过存储器分配操作MEM_AL生成的第一密钥KY_1可以不同于通过存储器重新分配操作MEM_RAL生成的第二密钥KY_1'。因此,即使当要存储相同的数据时,使用在执行存储器分配操作MEM_AL之后要被存储在第一存储器区域MR_1中的第一密钥KY_1加密的数据可以不同于使用在执行存储器重新分配操作MEM_RAL之后要被存储在第一存储器区域MR_1中的第二密钥KY_1'加密的数据。

在根据示例实施例的计算存储设备中,安全模块450可以被添加或布置在存储控制器400中用于访问缓冲存储器330的路径上,当分配存储器区域时,可以生成对应于存储器区域的密钥,当访问存储器区域时,可以使用对应于地址的密钥来加密和/或解密数据,当解除分配存储器区域时,可以删除对应于存储器区域的密钥,以及当重新分配存储器区域时,可以生成不同于先前密钥的新密钥。这样,当解除分配和重新分配存储器区域时,先前存储在特定存储器区域中的数据可能不被识别。因此,可以防止数据泄露,并且可以提高安全性能。

图28是示出图1的在计算存储设备中分配和保护存储器的方法的又一示例的流程图。将省略与图2重复的描述。

参考图1和图28,在步骤S100和S200之间,存储控制器400可以执行对第一存储器区域MR_1的初始化操作。例如,存储控制器400可以从主机设备200接收初始化请求和初始化数据(步骤S410),并且可以将初始化数据写入第一存储器区域MR_1(步骤S420)。例如,初始化数据可以包括诸如“0”模式的特定模式。

在一些示例实施例中,图20中的步骤S230、S240、S250和S260可以在图23、图26和图28的示例中被附加地执行。在一些示例实施例中,图23中的步骤S310和S320可以在图20和图28的示例中被附加地执行。在一些示例实施例中,图28中的步骤S410和S420可以在图20、图23和图26的示例中被附加地执行。

图29是示出根据示例实施例的包括存储设备的数据中心的框图。

参考图29,数据中心3000可以是收集各种类型的数据并提供各种服务的设施,并且可以被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系统,并且可以是由诸如银行或政府机构的公司使用的计算系统。数据中心3000可以包括应用服务器3100至3100n和存储服务器3200至3200m。根据示例实施例,可以不同地选择应用服务器3100至3100n的数量和存储服务器3200至3200m的数量,并且应用服务器3100至3100n的数量和存储服务器3200至3200m的数量可以彼此不同。

应用服务器3100可以包括至少一个处理器3110和至少一个存储器3120,并且存储服务器3200可以包括至少一个处理器3210和至少一个存储器3220。将描述存储服务器3200的操作作为示例。处理器3210可以控制存储服务器3200的整体操作,并且可以访问存储器3220以执行加载在存储器3220中的指令和/或数据。存储器3220可以包括双倍数据速率(DDR)同步动态随机存取存储器(SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插式存储器模块(DIMM)、Optane DIMM、非易失性DIMM(NVDIMM)等中的至少一个。根据示例实施例,可以不同地选择存储服务器3200中包括的处理器3210的数量和存储器3220的数量。在一些示例实施例中,处理器3210和存储器3220可以提供处理器-存储器对。在一些示例实施例中,处理器3210的数量和存储器3220的数量可以彼此不同。处理器3210可以包括单核处理器或多核处理器。存储服务器3200的以上描述可以被类似地应用于应用服务器3100。应用服务器3100可以包括至少一个存储设备3150,并且存储服务器3200可以包括至少一个存储设备3250。在一些示例实施例中,应用服务器3100可以不包括存储设备3150。根据示例实施例,可以不同地选择存储服务器3200中包括的存储设备3250的数量。

应用服务器3100至3100n和存储服务器3200至3200m可以通过网络3300彼此通信。网络3300可以使用光纤通道(FC)或以太网来实施。FC可以是用于相对高速数据传输的介质,并且可以使用提供高性能和/或高可用性的光学开关。根据网络3300的访问方案,存储服务器3200至3200m可以被提供作为文件存储装置、块存储装置或对象存储装置。

在一些示例实施例中,网络3300可以是仅存储网络或专用于存储的网络,诸如存储器区域网(SAN)。例如,SAN可以是使用FC网络并根据FC协议(FCP)来实施的FC-SAN。又例如,SAN可以是使用传输控制协议/互联网协议(TCP/IP)网络并根据iSCSI(基于TCP/IP的SCSI或者互联网SCSI)协议来实施的IP-SAN。在其他示例实施例中,网络3300可以是一般或正常的网络,诸如TCP/IP网络。例如,网络3300可以根据诸如基于以太网的FC(FCoE)、网络附接存储(NAS)、基于结构的非易失性存储器快速(NVMe)(NVMe-oF)等的协议中的至少一个来实施。

在下文中,将基于应用服务器3100和存储服务器3200来描述示例实施例。应用服务器3100的描述可以被应用于其他应用服务器3100n,并且存储服务器3200的描述可以被应用于其他存储服务器3200m。

应用服务器3100可以通过网络3300将用户或客户端请求存储的数据存储到存储服务器3200至3200m之一中。此外,应用服务器3100可以通过网络3300从存储服务器3200至3200m之一获得用户或客户端请求读取的数据。例如,应用服务器3100可以被实施为网络服务器或数据库管理系统(DBMS)。

应用服务器3100可以通过网络3300访问另一个应用服务器3100n中包括的存储器3120n或存储设备3150n,和/或可以通过网络3300访问存储服务器3200至3200m中包括的存储器3220至3220m或存储设备3250至3250m。因此,应用服务器3100可以执行对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据的各种操作。例如,应用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的命令。数据可以直接或通过存储服务器3200至3200m的存储器3220至3220m从存储服务器3200至3200m的存储设备3250至3250m转移到应用服务器3100至3100n的存储器3120至3120n。例如,为了安全或隐私,通过网络3300转移的数据可以是加密的数据。

在存储服务器3200中,接口3254可以提供处理器3210和控制器3251之间的物理连接和/或网络接口卡(NIC)3240和控制器3251之间的物理连接。例如,接口3254可以基于存储设备3250与专用电缆直接连接的直接附接存储(DAS)方案来实施。例如,接口3254可以基于各种接口方案(诸如高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、外围组件互连(PCI)、PCI快速(PCIe)、NVMe、计算快速链接(CXL)、IEEE 1394、通用串行总线(USB)、安全数字(SD)卡接口、多媒体卡(MMC)接口、嵌入式MMC(eMMC)接口、通用闪存存储(UFS)接口、嵌入式UFS(eUFS)接口、紧凑型闪存(CF)卡接口等)中的至少一种来实施。

存储服务器3200还可以包括切换器(switch)3230和NIC 3240。在处理器3210的控制下,切换器3230可以选择性地将处理器3210与存储设备3250连接,或者可以选择性地将NIC 3240与存储设备3250连接。类似地,应用服务器3100还可以包括切换器3130和NIC3140。

在一些示例实施例中,NIC 3240可以包括网络接口卡、网络适配器等。NIC 3240可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络3300。NIC 3240还可以包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可以通过主机总线接口连接到处理器3210和/或切换器3230。主机总线接口可以被实施为接口3254的上述示例之一。在一些示例实施例中,NIC 3240可以与处理器3210、切换器3230和存储设备3250中的至少一个集成。

在存储服务器3200至3200m和/或应用服务器3100至3100n中,处理器可以向存储设备3150至3150n和3250至3250m或者存储器3120至3120n和3220至3220m发送命令以编程或读取数据。例如,数据可以是由纠错码(ECC)引擎纠正的纠错后数据。例如,数据可以通过数据总线倒置(Data Bus Inversion,DBI)或数据屏蔽(Data Masking,DM)来处理,并且可以包括循环冗余码(CRC)信息。例如,为了安全或隐私,数据可以是加密的数据。

存储设备3150至3150m和3250至3250m可以响应于从处理器接收的读取命令,向NAND闪存设备3252至3252m发送控制信号和命令/地址信号。当从NAND闪存设备3252至3252m读取数据时,读取使能(RE)信号可以被输入作为数据输出控制信号,并且可以用于向DQ总线输出数据。可以使用RE信号来生成数据选通信号(DQS)。可以基于写入使能(WE)信号的上升沿或下降沿将命令和地址信号锁存在页缓冲器中。

控制器3251可以控制存储设备3250的整体操作。在一些示例实施例中,控制器3251可以包括静态随机存取存储器(SRAM)。控制器3251可以响应于写入命令将数据写入NAND闪存设备3252,或者可以响应于读取命令从NAND闪存设备3252读取数据。例如,可以从存储服务器3200中的处理器3210、另一个存储服务器3200m中的处理器3210m或者应用服务器3100至3100n中的处理器3110至3110n提供写入命令和/或读取命令。DRAM 3253可以临时存储(例如,可以缓冲)要被写入NAND闪存设备3252的数据或者从NAND闪存设备3252读取的数据。此外,DRAM 3253可以存储元数据。元数据可以是由管理用户数据或NAND闪存设备3252的控制器3251生成的数据。

存储设备3250至3250m可以是根据示例实施例的计算存储设备,可以包括安全模块3255至3255m,并且可以执行根据示例实施例的分配和保护存储器的方法。

本公开可以被应用于包括计算存储设备的各种电子设备和系统。例如,本公开可以被应用于诸如个人计算机(PC)、服务器计算机、数据中心、工作站、移动电话、智能电话、平板计算机、膝上型计算机、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、便携式游戏控制台、音乐播放器、摄像机、视频播放器、导航设备、可穿戴设备、物联网(IoT)设备、万物互联(IoE)设备、电子书阅读器、虚拟现实(VR)设备、增强现实(AR)设备、机器人设备、无人机等的系统。

如在本领域中传统上的,可以按照实现所描述的功能或多个功能的块来描述和示出实施例。在本文中可以被称为单元或模块等的这些块由模拟和/或数字电路(诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等)在物理上实施,并且可以可选地由固件和/或软件驱动。电路例如可以被体现在一个或多个半导体芯片中,或者在诸如印刷电路板等的衬底支架上。构成块的电路可以由专用硬件、或者由处理器(例如,一个或多个编程的微处理器和相关联的电路)、或者由执行块的一些功能的专用硬件和执行块的其他功能的处理器的组合实施。在不脱离本公开的范围的情况下,实施例的每个块可以在物理上被分离为两个或更多个相互作用且离散的块。同样,在不脱离本公开的范围的情况下,实施例的块可以在物理上被组合为更复杂的块。实施例的一方面可以通过存储在非暂时性存储介质内并由处理器执行的指令来实现。

前述内容是示例实施例的说明,并且不会被解释为对其的限制。尽管已经描述了一些示例实施例,但是本领域技术人员将容易理解,在本质上不脱离示例实施例的新颖教导和优点的情况下,许多修改在示例实施例中是可能的。因此,所有这样的修改旨在被包括在如权利要求所定义的示例实施例的范围内。因此,将理解的是,前述内容是各种示例实施例的说明,并且不会被解释为限于所公开的特定示例实施例,并且对所公开的示例实施例以及其他示例实施例的修改旨在被包括在所附权利要求的范围内。

技术分类

06120115959173