包含使用认证逻辑产生用于存储器区的存取代码的实例的存储器系统和装置
文献发布时间:2024-04-18 19:56:02
相关申请的交叉引用
本申请要求2020年12月1日提交的美国非临时申请第17/108,934号的提交权益。此申请以全文引用的方式且出于所有目的并入本文中。
技术领域
本公开的实施例大体上涉及存储器,且更具体地,在所示出实施例中的一或多个中,涉及使用认证逻辑产生用于存储器装置的存储器区的存取代码,包含使用存取代码来存取存储器装置。
背景技术
新兴存储器架构被设计成处理存储器存取请求的范围,并且可包含具有不同特征的存储器。举例来说,存储器可包含动态随机存取存储器(DRAM)和相变存储器(PCM)。非易失性存储器可为高度不均匀的。举例来说,某些NAND快闪存储器(例如,基于页类型)可比其它NAND快闪存储器更快地读取或写入,其中时延随着它们耗损而改变,或在不同NAND快闪存储器当中具有不同层级的单元(例如,多层级单元(MLC))。新兴存储器架构还可利用非易失性双列直插式存储器模块(NVDIMM),例如NVDIMM-P或NVDIMM-F。NVDIMM通常包含非易失性存储器装置和易失性存储器装置两者。非易失性存储器(例如NAND存储器)通常甚至在暂时或永久地去除电力时仍保留其内含物。当从装置永久地或在一些情况下暂时地去除电力时,易失性存储器通常将丢失其内含物。
发明内容
本文中描述了示例方法和设备。在本公开的方面中,一种示例方法包含:在包括认证逻辑的存储器控制器处部分地基于所配给密钥而产生多个存取代码,多个存取代码中的每一存取代码用于多个存储器装置中的存储器装置的多个存储器区中的相应存储器区;将多个存取代码写入到耦合到存储器控制器的高速缓存器;以及经由存储器总线将多个存取代码中的每一相应存取代码写入到存储器装置的高速缓存器。
另外或替代地,进一步包含:从存储器控制器的计数器获得重置指示和计数值以重置多个存取代码;响应于重置指示,部分地基于所配给密钥和计数值而产生多个其它存取代码,多个其它存取代码中的每一其它存取代码用于多个存储器区中的相应存储器区。
另外或替代地,进一步包含:从存储器控制器的高速缓存器擦除多个存取代码;以及将多个其它存取代码存储在存储器控制器的高速缓存器中。
另外或替代地,进一步包含:从耦合到存储器控制器的主机计算装置获得重置指示,以在存储器控制器和存储器装置处重置多个存取代码;响应于重置指示,在认证逻辑处重新产生用于存储器装置的多个存储器区的多个存取代码,以更新存储在存储器控制器和存储器装置处的多个存取代码。
另外或替代地,认证逻辑包括基于散列的消息认证码(HMAC)。
另外或替代地,进一步包含:从主机计算装置获得与多个存储器装置中的存储器装置相关联的存储器存取请求,存储器存取请求包括存储器装置的存储器地址和存取代码;响应于存储器存取请求:在认证逻辑处将存取代码与存储器控制器的高速缓存器中的多个所存储存取代码进行比较;以及响应于与存取代码匹配,执行与存储器存取请求相关联的存储器存取操作。
另外或替代地,在认证逻辑处将存取代码与存储器控制器的高速缓存器中的多个所存储存取代码进行比较包含:将存取代码与多个所存储存取代码中的一个匹配;以及基于所匹配存取代码而认证存储器命令,存储器命令包含与所匹配存取代码相关联的对应存储器区中的物理存储器地址。
另外或替代地,响应于存储器存取请求,基于存储在存储器控制器的高速缓存器中的查找表而将存储器装置的作为逻辑存储器地址的存储器地址翻译成与所匹配存取代码相关联的对应存储器区中的物理地址。
另外或替代地,进一步包含:从主机计算装置获得存储器存取请求,存储器存取请求包括与多个存储器装置中的一个相关联的存储器地址;以及利用所配给密钥和作为认证流密码的初始化向量的存储器地址以产生用于存储器装置的多个存储器区中的至少相应存储器区的多个存取代码。
在本公开的另一方面中,一种示例设备可包含:存储器装置,其包括多个存储器区;存储器控制器,其被配置成控制存储器装置;以及存储器总线,其将存储器控制器耦合到存储器装置,其中存储器控制器进一步被配置成经由存储器总线提供包含多个存取代码中的至少一个存取代码的存储器存取请求。存储器控制器进一步包含:认证逻辑,其被配置成产生多个存取代码,多个存取代码中的每一存取代码用于多个存储器区中的至少相应存储器区;以及高速缓存器,其被配置成存储多个存取代码,每一存取代码与存储器装置的多个存储器区中的对应存储器区相关联。
另外或替代地,存储器装置包括NAND存储器装置,并且存储器总线被配置成根据NVDIMM协议操作。
另外或替代地,认证逻辑进一步被配置成经由PCIe总线从主机计算装置获得包括存储器地址和存取代码的存储器存取请求。
另外或替代地,认证逻辑进一步被配置成将存取代码与高速缓存器中的多个存取代码进行比较。在存取代码与高速缓存器中的多个存取代码中的一个匹配后,存储器控制器就被配置成将存储器存取请求提供到存储器装置。
另外或替代地,存储器控制器进一步包含翻译逻辑,其被配置成将存储器存取请求的存储器地址翻译成与多个存储器区中的至少一个存储器区相关联的物理存储器地址。
另外或替代地,在存取代码与高速缓存器中的多个存取代码中的一个匹配后,存储器控制器就进一步被配置成将物理存储器地址和存取代码作为存储器命令提供到多个存储器装置中的存储器装置的存取逻辑。
另外或替代地,存储器控制器进一步包含计数器,其被配置成在计数器改变计数时提供重置指示以重置多个存取代码。
在本公开的另一方面中,一种示例存储器可包含:处理器;存储器阵列;高速缓存寄存器,其被配置成存储用于存储器阵列的存取代码;以及非暂时性计算机可读媒体,其存储有可执行指令,所述可执行指令在由处理器执行时使存储器执行包括以下各者的操作:在存取逻辑处获得存储器命令,所述存储器命令包括与包含存储器的多个存储器的多个存储器区中的特定存储器区相关联的物理存储器地址和所提供存取代码;在存取逻辑处将所提供存取代码与存储在高速缓存寄存器中的存取代码进行比较以确定所述存取代码匹配;以及响应于匹配确定,将物理存储器地址提供到耦合到存储器阵列的I/O控制单元。
另外或替代地,操作进一步包含经由I/O控制单元获得用于存储器阵列的存取代码。
另外或替代地,存储器经由被配置成根据NVDIMM协议操作的总线耦合到存储器控制器。
另外或替代地,操作进一步包含在存储器的控制逻辑处获得指示存储器命令的控制信号。
另外或替代地,操作进一步包含:在控制逻辑的命令锁存器启用(CLE)引脚处获得指示存储器命令的控制信号。
另外或替代地,操作进一步包含:响应于匹配确定,在存储器的控制逻辑处获得指示待在物理存储器地址处存取数据的额外控制信号。
另外或替代地,操作进一步包含:响应于额外控制信号指示,确证控制逻辑的就绪/忙碌(R/B)引脚。
附图说明
图1A为根据本文中所描述的实例布置的系统的示意性图示。
图1B为根据本文中所描述的实例进行交互的存储器系统的示意性图示。
图1C为根据本文中所描述的实例进行交互的存储器系统的示意性图示。
图2为根据本文中所描述的实例的方法的示意性图示。
图3为根据本文中所描述的实例的方法的示意性图示。
图4为根据本文中所描述的实例的方法的示意性图示。
图5A为根据本文中所描述的实例布置的存储器系统的示意性图示。
图5B为根据本文中所描述的实例布置的存储器系统的示意性图示。
图6为根据本文中所描述的实例进行交互的存储器系统的示意性图示。
图7为根据本文中所描述的实例的方法的示意性图示。
图8为根据本文中所描述的实例的方法的示意性图示。
图9为根据本文中所描述的实例布置的存储器系统的示意性图示。
图10为根据本文中所描述的实例的方法的示意性图示。
具体实施方式
存储器装置可利用错误校正译码(ECC)。一般来说,错误校正译码技术可用额外经编码位对原始数据进行编码以保护旨在被存储、检索和/或传输的原始位。
加密方法可使用块密码来为数据提供安全性,例如,使用加密密钥来认证数据。举例来说,加密密钥可在加密时将数据从明文转换成密文;并且在解密时将数据从密文转换成明文。块密码提供信息位的块转换以对数据进行加密(或相反地,解密)。举例来说,高级加密标准(AES)为块密码的类型。另外,块密码可在加密装置/方法内在不同模式下操作,例如,作为使用计数器的“流密码”。举例来说,计数器可用作更改由块密码使用的基础加密密钥以使得加密密钥随时间而改变,继而更改经加密数据流中的数据的基础。举例来说,伽罗瓦/计数器模式(GCM)为流密码的类型。
其可为复杂且繁琐的以确保NVDIMM装置的安全。
加密方法还可使用基于散列的消息认证码(HMAC),其还可使用加密密钥来对数据进行加密和解密。举例来说,如在加密技术或方法中实施的HMAC可应用加密散列函数,其使用加密密钥来将数据加密成密文。散列函数可包含SHA-2或SHA-3。由HMAC加密的数据的安全性取决于基础加密密钥的安全程度。举例来说,如果黑客要获取加密密钥,则数据可能被破解,因为所述数据可用已知的加密密钥进行解密。因此,例如在加密密钥被发现或被入侵的情况下需要确保数据的完整性。
本文中所描述的系统和方法的实例提供用于在存储器控制器和/或存储器装置中使用认证逻辑产生用于存储器装置的存储器区的存取代码,并且用于使用存取代码存取存储器装置。定期存取存储器装置的计算装置可通过存储器控制器执行这一操作。举例来说,主机计算装置可产生存储器存取请求,所述存储器存取请求通过控制对各种经耦合存储器装置的存取的存储器控制器路由。使用本文中所描述的系统和方法,存储器控制器和/或经耦合存储器装置可产生存取代码,主机计算装置可将所述存取代码包含在存储器存取请求中以存取存储器装置的一或多个存储器区。举例来说,存储器控制器的认证逻辑可利用密钥(例如,磁盘加密密钥(DEK))和计数值以产生用于存储器装置的多个存储器区中的相应区的多个存取代码。
可使用所配给密钥和计数值根据基于散列的消息认证码(HMAC)产生存取代码。有利地,存取代码可经加密且可用于提供对存储器装置的具体存储器区的认证存取以存取与存储器存取请求相关联的数据。因此,由主机计算装置读取或写入到存储器装置的各种存储器区的数据可以认证方式存取,例如,使用经加密的所产生存取代码来存取。举例来说,对于存储器装置(例如,NAND存储器装置)的存储器区,可仅根据存取代码(类似于用于所读取或写入的数据的加密密钥)来存取所读取或写入的数据。在实例中,在执行与存储器存取请求相关联的存储器存取操作之前,存储器控制器的认证逻辑和/或存储器装置处的存取逻辑可比较所存储存取代码(例如,在本地高速缓存器处)以确定与存储器存取请求一起获得的存取代码是否匹配。
另外且有利地,所产生存取代码可为存储器装置的数据读取或写入的存储器区提供安全性。在所产生存取代码存储在本地高速缓存器中的示例实施方案中,存取代码可周期性地更新,例如,在存储器控制器和存储器装置处获得重置指示的情况下。因此,如果黑客要窃听或侵入所产生存取代码中的一或多个,则存储器的其它区(例如,同一存储器装置的区)可保持安全,因为仅经发现或经侵入存取代码会被破解。进一步另外且有利地,本文中所描述的系统和方法可为存储器装置的具体存储器区提供安全性,因为存取代码周期性地更新(例如,基于所获得重置指示)或根据来自计数器的经更新计数值而更新。
另外或替代地,存储器控制器为来自另一计算装置(例如,主机计算装置)的存储器存取请求中的存储器地址提供地址翻译。如本文中所描述,有利地,存储器控制器可至少部分地同时(例如,至少部分地并行)处理地址翻译,同时还产生经加密存取代码,由此改进存储器控制器处的存储器存取请求的处理速度,所述存储器控制器还利用经加密存取代码。由存储器控制器进行地址翻译还可包含由存储器控制器进行的存储器控制的其它方面,例如存储器耗损均衡、垃圾收集和写入放大。在使用NAND存储器装置实施存储器装置的一些实施方案中,用于地址翻译的写入时延可包含擦除操作,例如,在写入到那些存储器单元之前擦除NAND存储器单元。有利地,对用于安全数据的存取代码进行加密可与用于NAND存储器装置(例如,读取或写入操作)的地址翻译并行发生。因此,与可依序地址翻译且对存取代码进行加密的存储器控制器相比,本文中所描述的系统和方法的实例可改进存储器控制器处的存储器存取请求的处理速度,因为地址翻译和存取代码的产生可至少部分地并行发生。
此外,本文中所描述的系统和方法可提供错误校正,所述错误校正可用于耦合到非易失性存储器装置(例如,NAND存储器装置)的存储器控制器中。有利地,错误校正还可在用于写入操作的地址翻译之后(或在用于读取操作的地址翻译之前)执行以改进存储器控制器处的存储器存取请求的处理速度;同时存储器控制器还产生经加密存取代码,由此改进存储器控制器处的存储器存取请求的处理速度。举例来说,因为对存取代码进行加密可引发具体时延,所以取决于所利用的认证流密码,存储器存取请求中的数据的错误校正还可与存取代码的所述加密至少部分地并行执行。因此,与可依序对存储器存取请求的数据进行错误校正且对存取代码进行加密的存储器控制器相比,本文中所描述的系统和方法的实例可改进利用流密码的存储器控制器处的存储器存取请求的处理速度,因为错误校正和存取代码的产生可至少部分地并行发生。
图1A为根据本文中所描述的实例布置的系统100的示意性图示。系统100包含耦合到存储器控制器102的主机计算装置104,所述存储器控制器可控制一或多个存储器装置112。在一些实例中,存储器控制器102体现在主机计算装置104中或为所述主机计算装置的元件。在此类情况下,主机计算装置104可为SOC、CPU、GPU、FPGA等,并且存储器控制器102可为此类SOC、CPU、GPU或FPGA的逻辑、电路系统或组件。在一些实例中,主机计算装置104为一个物理装置,并且存储器控制器102为单独物理装置(例如,每一物理装置可为小芯片的系统中的小芯片)。在一些情况下,存储器控制器102和存储器装置112为模块(例如,DIMM、卡或驱动器)的元件,并且主机计算装置104为单独处理器。
存储器控制器102可包含主机接口114,所述主机接口可耦合到主机总线122以用于连接到主机计算装置104。主机接口114耦合到处理器106或处理资源和/或可使用所述处理器或处理资源实施,所述处理器或处理资源可为SOC、ASIC、FPGA等,并且可与主机计算装置104的元件分离(如上文所描述)。处理器106可包含认证逻辑108和翻译逻辑110。举例来说,主机接口114和处理器106还可经由内部存储器控制器总线耦合到高速缓存器116。处理器106经由存储器接口118和相应存储器总线124耦合到存储器装置112。存储器接口118也例如经由内部存储器控制器总线耦合到高速缓存器116。高速缓存器116耦合到错误校正逻辑120,所述错误校正逻辑可对传达到高速缓存器116/从所述高速缓存器传达的数据执行错误校正。
存储器装置112可存储由主机计算装置104检索和/或由所述主机计算装置存取的数据。作为实例,在操作中,主机计算装置104可处理数据集(例如,图像或内容数据集)以供主机计算装置104上托管的一或多个神经网络使用。数据集可存储在存储器装置112上。举例来说,处理器106可通过主机总线122从一或多个存储器装置112获得数据集。存储器装置112可包含在一或多个计算装置中和/或可存储用于一或多个计算装置的数据,所述计算装置为例如但不限于数据中心或个人计算装置中的计算装置。处理器106可将数据集(例如,图像)存储在存储器装置112中的一或多个中(例如,数据集可分布在存储器装置112当中)。处理器106可将数据集的离散单元(例如,图像或视频帧)存储在存储器装置112中。
存储器装置112可响应于从存储器控制器102接收的存储器存取请求,例如,由处理器106从主机计算装置104路由或处理的存储器存取请求而存储并提供信息(例如,数据和指令)。在操作中,存储器装置112可处理存储器存取请求以基于存储器存取请求而存储和/或检索信息。举例来说,主机计算装置102可包含主机处理器,其可执行请求存储器装置112处的所存储数据和/或所存储指令(和/或存储数据/指令)的用户应用程序。当经执行时,用户应用程序可产生存储器存取请求以存取存储器装置112中的数据或指令。一般来说,存储器存取请求可为或包含命令和地址,例如,存储器命令和存储器地址。在各种实施方案中,存储器存取请求可为或包含用于存储器装置112处的读取操作、写入操作、激活操作或刷新操作的命令和地址。一般来说,所接收的命令和地址可促进存储器装置112处的存储器存取操作的执行,所述操作是例如用于存储器装置112的读取操作、写入操作、激活操作和/或刷新操作。因此,存储器存取请求可为或包含存储器装置112中的一或多个的存储器地址。在写入操作的实例中,存储器存取请求还可包含例如除命令和地址之外的数据。经由主机总线122将来自主机计算装置104的存储器存取请求提供到处理器106。
在处理器106处接收到用于存储器装置112的一或多个存储器存取请求后,存储器控制器102就可利用存储器地址作为认证流密码的初始化向量以例如使用认证逻辑108产生存取代码。至少部分地同时(例如,并行或在存储器控制器102处的处理时间上重叠),存储器控制器102可例如使用错误校正逻辑120对与存储器存取请求相关联的数据执行错误校正以产生经错误校正数据。另外或替代地,同样与利用存储器地址作为认证流密码的初始化向量至少部分地同时,存储器控制器102可使用存储器存取请求(例如,命令和地址)执行地址翻译以将逻辑存储器地址翻译成物理存储器地址。举例来说,存储器地址请求中的存储器地址可为逻辑地址,例如,如在主机计算装置104处执行的用户应用程序已知的。存储器控制器102可被配置成使用翻译逻辑110将所述存储器地址翻译成存储器装置112中的一个的物理地址。
为了在存储器控制器102的处理器106处处理存储器存取请求,存储器控制器102可例如响应于接收到命令和/或地址而基于包含命令和地址的存储器存取请求执行地址翻译。因此,翻译逻辑110可使用查找表(例如,块表)将作为逻辑存储器地址的存储器地址翻译成存储器装置112中的一个的物理存储器地址。翻译逻辑110还可执行与存储器控制器102的地址翻译相关联的操作,例如存储器耗损均衡、垃圾收集和/或写入放大。举例来说,为了执行与垃圾收集相关联的操作,翻译逻辑110可使用存储在高速缓存器116处的不良块查找表识别存储器装置112的不良块,使得读取和写入操作可不在与存储器装置112的不良块相关联的物理存储器地址处执行。因此,翻译逻辑110可在存储器控制器102中执行与将逻辑存储器地址翻译成物理存储器地址相关联的地址翻译操作。
另外或替代地,在存储器控制器102的处理器106处处理存储器存取请求时,存储器控制器102可例如响应于接收到命令和/或地址而使用错误校正逻辑120执行对与存储器存取请求相关联的数据的错误校正。举例来说,在写入操作的上下文中,在使用翻译逻辑110执行地址翻译之后,处理器106可使用错误校正逻辑120控制与存储器存取请求相关联的数据的错误校正。任选地,如将更详细地描述,在已根据所产生存取代码对数据进行加密之后,还可使用错误校正逻辑120发生对与写入操作相关联的数据的错误校正。在读取操作的上下文中,在已根据所产生存取代码对数据进行解密之后,处理器106可控制在错误校正逻辑120处针对存储器存取请求从存储器装置112读取的错误校正数据。任选地,如更详细地将描述,在读取数据的物理存储器地址已经翻译成用于存储器地址请求的逻辑存储器地址之后且在读取数据自身的解密之前,还可使用错误校正逻辑120发生对与读取操作相关联的数据的错误校正。
无论是读取操作还是写入操作,错误校正逻辑120可对与所述操作相关联的数据进行错误校正。错误校正逻辑120可对从存储器装置112获得的数据或信息进行错误校正。举例来说,错误校正逻辑120可根据存储器装置112的操作的所要位错误率(BER)对数据进行错误校正。举例来说,错误校正逻辑120可包含低密度奇偶校验校正逻辑,其可根据低密度奇偶校验(LDPC)码对数据进行错误校正。因此,错误校正逻辑120可包含LDPC编码器。另外或替代地,错误校正逻辑120可包含单个奇偶校验(SPC)编码器,和/或代数错误校正电路,例如包含以下各者的群组中的一个:博斯-乔赫里-霍克文黑姆(BCH)编码器和/或里德所罗门ECC编码器,以及其它类型的错误校正电路。在利用错误校正逻辑120时,存储器控制器102可校正在存储器装置112处的存储器检索或存储期间数据可能发生的错误。所要BER可由主机计算装置104或在主机计算装置104处执行用户应用程序的用户指定。
错误校正逻辑120可使用例如专用集成电路(ASIC)或其它电路系统等离散组件来实施,或组件可反映由存储器控制器102内的电路系统提供的功能性,其未必具有与存储器控制器102的其它部分分离的离散物理形式。尽管示出为图1A中存储器控制器120内的组件,但错误校正逻辑120可在存储器控制器102外部,或具有位于存储器控制器102内的数个组件和位于存储器控制器102外部的数个组件。
在操作中,对于待使用错误校正逻辑120进行错误校正的数据,高速缓存器116可将数据(例如,从存储器装置112获得的数据)提供到错误校正逻辑120以对所述数据进行错误校正,并且随后从错误校正逻辑120接收经错误校正数据。在一些实施方案中,高速缓存器116可直接耦合到作为主机计算装置104的部分的存储装置,比如SRAM或DRAM存储装置,并且直接从所述存储装置获得数据。举例来说,提供到主机接口114的存储器存取请求可包含存储器存取命令,所述存储器存取命令提供到高速缓存器以存取主机计算装置104上的存储装置,以获得与存储器存取请求相关联的数据。在各种实施方案中,高速缓存器116可为动态存储器装置,比如DRAM,并且可与处理器106交互。举例来说,高速缓存器116可为数据高速缓存器,其包含或对应于L1、L2、L3、L4的一或多个高速缓存层级(例如,作为多层级高速缓存器)或任何其它高速缓存层级。在读取操作的上下文中,从存储器装置112检索的数据可存储在高速缓存器116处(例如,在缓冲器或队列中),使得错误校正逻辑120对数据进行错误校正以作为存储器存取请求中的读取操作的部分。
与存储器地址的任何地址翻译和/或与存储器存取请求相关联数据的错误校正同时,存储器控制器102可例如响应于接收到命令和/或地址而利用存储器地址作为认证流密码的初始化向量以产生存取代码。在处理器106获得存储器存取请求后,认证逻辑108就可使用存储器地址作为认证流密码的初始化向量(IV)。举例来说,认证逻辑108可包含AES-伽罗瓦-计数器模式(AES-GCM)管线,使得认证逻辑108使用存储器地址作为IV基于认证流密码而产生存取代码。GCM使用基础密钥(例如,DEK)和作为IV的存储器地址来产生经加密存取代码的认证标签。虽然在一些实例中描述AES-GCM,但应理解,还可使用其它认证流密码。
在存储器存取请求内的写入操作的上下文中,所产生存取代码与数据组合以产生待写入到存储器装置112的密文。举例来说,将所产生存取代码与存储器存取请求的明文数据组合可包含使用认证逻辑108将明文数据和所产生存取代码组合为XOR操作的部分。举例来说,认证逻辑108可实施XOR逻辑以组合明文数据和所产生存取代码。在组合存取代码和明文数据时,认证逻辑108可将明文数据加密为密文数据以用于利用所述密文执行写入操作。此外,认证逻辑108可利用GCM来产生待与密文相关联的认证标签,例如,用于在稍后检索为明文后就认证数据。为了产生认证标签,认证逻辑108可将密文与自身组合,例如,作为另一XOR操作的部分。认证标签和/或存取代码可由处理器106存储在高速缓存器116中。因此,经加密存取代码可用于提供存储器控制器102与同存储器存取请求相关联的数据之间的认证存取。因此,由主机计算装置104写入到各种存储器装置112的数据可通过认证存取,例如,使用基于与所述数据相关联的存储器地址由流密码加密的所产生存取代码。有利地,所产生存取代码可为由计算装置写入到存储器装置中的一个的所述具体存储器地址的数据提供安全性。在执行写入操作的各种实施方案中,认证逻辑108可使用如存储在高速缓存器116中或由错误校正逻辑120提供的经错误校正数据。因此,待与所产生存取代码组合的明文数据可为经错误校正数据。有利地,由错误校正逻辑120进行的错误校正可改进存储器控制器102处的存储器存取请求的处理速度,所述错误校正可在使用翻译逻辑110对写入操作进行地址翻译之后执行;同时存储器控制器102还产生经加密存取代码,由此改进存储器控制器102处的存储器存取请求的处理速度。举例来说,因为对存取代码进行加密可引发具体时延,这取决于所利用的认证流密码(例如,AES-GCM管线),所以待在存储器存取请求中写入的数据的错误校正还可与存取代码的所述加密并行或至少部分地并行执行。
任选地且替代地,对于写入操作,在认证逻辑108产生待写入到存储器装置112中的至少一个的密文之后,数据可由错误校正逻辑120进行错误校正。
在存储器存取请求内的读取操作的上下文中,响应于存储器存取请求,所产生存取代码与从存储器装置112中的一个读取的密文数据组合以产生明文数据。举例来说,将所产生存取代码与从存储器装置112中的一个读取的密文数据组合可包含使用认证逻辑108将密文数据和所产生存取代码组合为XOR操作的部分。举例来说,认证逻辑108可实施XOR以组合密文数据和所产生存取代码。在组合存取代码和密文数据时,认证逻辑108可将密文数据解密为所请求的明文数据以用于执行读取操作。此外,认证逻辑108的GCM还可检索与密文相关联的认证标签,例如,以将数据认证为所请求的明文数据。认证逻辑108可将密文与自身组合,例如,作为另一XOR操作的部分,以将所述XOR操作的结果与所存储认证标签进行比较。在实例中,用于所请求数据的所存储认证标签可能已由处理器106存储在高速缓存器116中。因此,经加密存取代码可用于提供存储器控制器102与同存储器存取请求相关联的数据之间的认证存取。因此,由主机计算装置104从各种存储器装置112读取的数据可通过认证存取,例如,使用基于与所述数据相关联的存储器地址由流密码加密的所产生存取代码。有利地,所产生存取代码可为由计算装置从具体存储器地址读取的数据提供安全性。在执行读取操作的各种实施方案中,认证逻辑108可将明文数据提供到高速缓存器116,使得明文数据可由错误校正逻辑120进行错误校正或直接到达错误校正逻辑120以供错误校正。有利地,由错误校正逻辑120进行的错误校正可改进存储器控制器102处的存储器存取请求的处理速度,所述错误校正可在使用翻译逻辑110对读取操作进行地址翻译之前执行。存储器控制器102还产生经加密存取代码,这可改进存储器控制器102处的存储器存取请求的处理速度。举例来说,可至少部分地在通过存取代码的加密引发的时延期间执行错误校正。
任选地且替代地,对于读取操作,在认证逻辑108对密文进行解密且认证明文数据之前,数据可由错误校正逻辑120进行错误校正。在实例中,待与所产生存取代码组合的密文数据可为经错误校正密文数据。
在一些实施方案中,当在处理器106处接收到对存储器装置112的一或多个存储器存取请求时,处理器106可在高速缓存器116处的队列或缓冲器(例如,请求、处理或数据缓冲器)中路由或存储一或多个存储器存取请求的至少部分。待在错误校正逻辑120处经错误校正的数据可存储在高速缓存器116处的数据缓冲器中。另外或替代地,存储器存取请求可存储在队列或缓冲器中以用于由处理器106处理,和/或处理存储器存取请求的部分可存储在处理缓冲器中。举例来说,处理器106可基于存储器存取请求而识别存储器存取请求的存储器地址待存储在NAND装置中。为了将数据存储在NAND装置中,处理器106可首先控制存储器装置112的NAND存储器装置以擦除物理地址(例如,如由翻译逻辑110翻译的存储器地址)处的数据。因此,在擦除操作的处理之后,处理器106可将待执行的写入操作存储在处理缓冲器中。
在操作中,响应于包含读取操作的一或多个存储器存取请求,存储器装置112提供对所请求数据的存取,使得作为明文数据的读取数据经由主机总线122从存储器控制器102提供到主机计算装置104。存储器接口118可通过存储器总线124和存储器接口118与高速缓存器116之间的内部存储器控制器总线提供数据,例如,以存储在高速缓存器116中以用于由认证逻辑108存取(例如,以对读取密文数据进行解密);和/或用于由错误校正逻辑120存取(例如,以在密文解密之前对读取数据进行错误校正或在解密为明文数据之后进行错误校正)。因此,高速缓存器116可从存储器装置112和其相应存储器总线124获得所请求数据。因此,存储器控制器102促进使用经加密存取代码执行读取操作以将来自高速缓存器116的数据读取为明文,例如,在对密文数据进行解密和/或对密文数据进行错误校正之后。
在操作中,响应于写入操作,存储器装置112可提供对所请求数据的存取。可将作为密文数据的所请求数据从存储器接口118提供到存储器装置112。存储器接口118可通过存储器总线124提供密文,例如从高速缓存器116提供密文,所述密文从认证逻辑108存储在所述高速缓存器中(例如,待写入为密文数据的经加密明文数据);和/或从错误校正逻辑120提供密文(例如,在加密为密文之前的经错误校正明文数据或在加密为密文数据之后的经错误校正数据)。因此,高速缓存器116可经由其相应存储器总线124提供待写入到存储器装置112的所请求数据。因此,存储器控制器102可促进使用经加密存取代码执行写入操作以将来自高速缓存器116的数据写入为密文,例如,在对明文数据进行加密和/或对明文数据进行错误校正之后。
有利地,与可依序对存储器存取请求的数据进行错误校正且对存取代码进行加密的存储器控制器相比,本文中所描述的系统和方法改进存储器控制器102处的存储器存取请求的处理速度,因为错误校正和存取代码的产生可至少部分地并行发生(例如,重叠)。
在本文中所描述的实例中,存储器装置112可为例如NAND存储器装置的非易失性存储器装置,或易失性存储器装置。一般来说,与非易失性存储器相比,易失性存储器可具有一些改进特征(例如,易失性存储器可更快)。存储器装置112还可包含一或多种类型的存储器,包含但不限于:DRAM、SRAM、三层级单元(TLC)NAND、单层级单元(SLC)NAND、SSD或3DXPoint存储器装置。可经由存储器总线124从存储器控制器102传达存储在存储器装置112中的数据或待从所述存储器装置存取的数据。举例来说,存储器总线124可为根据NVMe协议操作的PCIe总线。
在示例实施方案中,处理器106可包含任何类型的微处理器、中央处理单元(CPU)、ASIC、实施为现场可编程门阵列(FPGA)的部分的数字信号处理器(DSP)、芯片上系统(SoC)或其它硬件。举例来说,处理器106可使用例如专用集成电路(ASIC)或其它电路系统等离散组件来实施,或组件可反映由存储器控制器102内的电路系统提供的功能性,其未必具有与存储器控制器102的其它部分分离的离散物理形式。处理器106的部分可由离散组件的组合实施。举例来说,翻译逻辑110可实施为ASIC,而认证逻辑108可实施为具有指定配置中的各个阶段的FPGA。尽管示出为图1A中存储器控制器120内的组件,但处理器106可在存储器控制器102外部,或具有位于存储器控制器102内的数个组件和位于存储器控制器102外部的数个组件。
在各种实施方案中,存储器控制器102可为NVMe存储器控制器,其可经由主机总线122耦合到主机计算装置104。主机总线122可实施为根据NVMe协议操作的PCIe总线。在根据NVMe协议操作的实例中,存储器总线124可为NVMe总线。举例来说,在此类实施方案中,存储器装置112可使用NAND存储器装置实施,所述NAND存储器装置经由根据NVMe协议操作的相应PCIe总线耦合到NVMe存储器控制器102。因此,存储器总线124可被称为NVMe存储器总线。有利地,与可经由耦合到主机计算装置104的单个主机总线存取NAND存储器装置的存储器系统相比,系统100可通过连接到相应存储器装置124的数个NVMe存储器总线124增加处理速率和处理量。因此,在处理器106为FPGA的实施例中,系统100可被称为“加速”存储器存取和存储装置,因为系统100增加通过存储器总线124的数据传送的可用性。
另外或替代地,存储器控制器102可为NVDIMM存储器控制器,其经由主机总线122耦合到主机计算装置104。主机总线122可根据NVDIMM协议,例如NVDIMM-F、NVDIMM-N、NVDIMM-P或NVDIMM-X操作。举例来说,在此类实施方案中,存储器装置112可为NAND存储器装置或3D XPoint存储器装置。因此,在此类实施方案中,存储器装置112可作为用于高速缓存器116的永久性存储装置操作,所述高速缓存器可为易失性存储器装置,和/或作为用于存储器控制器102或主机计算装置104上的任何易失性存储器的永久性存储装置操作。
图1B为根据本文中所描述的实例进行交互的存储器系统的示意性图示。图1B为根据本文中所描述的实例进行交互的存储器系统的示意性图示。在图1B中,类似命名的元件可具有如关于图1A所描述的类似操作或功能。举例来说,翻译逻辑128可类似于翻译逻辑110操作。如关于图1A所描述,存储器控制器102中的处理器106的离散组件可经由不同类型的电路系统实施。因此,在图1B的上下文中,翻译逻辑128可实施为ASIC,而认证逻辑134可实施为具有指定配置中的各个阶段的FPGA,所述阶段为例如阶段1 136、阶段2 138和阶段n140,其中n可为能够包含在FPGA架构中的任何数目个阶段。
主机计算装置104可将存储器写入请求126提供到存储器控制器102以将数据写入到存储器装置148(例如,存储器装置112中的一个)。举例来说,存储器写入请求可为或包含写入命令和与写入命令相关联的地址。在存储器控制器102的示例实施方案中,存储器写入请求126可经由主机总线122路由到处理器106。因此,至少部分地同时,可在存储器控制器102的翻译逻辑128处获得包括待写入的存储器地址和数据的存储器写入请求126,而可在认证逻辑134处获得存储器地址。因此,可至少部分地同时在存储器控制器102中处理存储器写入请求126的不同方面。在存储器写入请求126的上下文中,待写入的数据可被称为明文132,因为其将根据所产生存取代码进行加密。
继续存储器写入请求126的处理,一旦在翻译逻辑128处获得,翻译逻辑128就将逻辑存储器地址翻译成存储器装置148的物理存储器地址。在翻译存储器写入请求126的存储器地址之后,可任选地在错误校正逻辑130处对存储器写入请求126的待写入的数据自身进行错误校正。在一些实施方案中,代替在翻译逻辑128之后待写入的明文数据的错误校正,错误校正可在错误校正逻辑146处相对于密文144发生。因此,因为错误校正可在加密之前或之后发生,所以错误校正逻辑130和错误校正逻辑146在图1B中所展示的存储器控制器102的实施方案中的某一点是任选的(如虚线所描绘)。另外或替代地,在一些实施方案中,可包含错误校正逻辑160和错误校正逻辑176两者:错误校正逻辑130可对待写入的明文132进行错误校正,而错误校正逻辑146可对所产生认证标签152进行错误校正。
继续图1B中所描绘的存储器控制器102的实施方案,至少部分地同时,可在认证逻辑134的各个阶段处处理在认证逻辑134处获得的存储器地址。举例来说,阶段1 136、阶段2138和阶段n 140可表示AES-GCM管线的阶段,其中存储器地址经加密且经产生为待写入到存储器装置148的明文132的存取代码。举例来说,认证逻辑134可使用存储器地址作为认证流密码的IV,使得认证逻辑134使用存储器地址作为IV基于认证流密码而产生存取代码。一旦产生,XOR逻辑单元142就可组合明文132数据和所产生存取代码。举例来说,组合可为明文132和所产生存取代码的输入之间的XOR操作。在组合存取代码和明文数据时,XOR逻辑单元142可将明文132加密为密文144。虽然参考图1B描述XOR操作,但可在其它实例中使用其它组合操作。
一旦加密为密文144,另一XOR逻辑单元150就可将密文144与自身组合以产生认证标签152。认证标签152可与密文144相关联(例如,在高速缓存器116处的查找表中),使得认证标签152可在从存储器装置148读取时认证密文144数据。虽然参考图1B描述XOR操作,但可在其它实例中使用其它组合操作。
在所描绘的实施方案中,密文144经写入到存储器装置148且可通过认证存取,例如,使用基于与所述数据相关联的存储器地址由流密码加密的所产生存取代码。因此,存储器写入请求126可实施在存储器控制器102中,使得至少部分地同时执行存取存储器和产生经加密存取代码的方面。在一些实施方案中,有利地,处理存储器写入请求126的不同方面的时延可经拆分,使得将明文132加密为密文144的XOR逻辑单元142操作引发较少时延(例如,单个时钟时延)。作为实例,在翻译逻辑128和错误校正逻辑130处处理存储器写入请求126可引发十四(14)个时钟时延;并且可存在实施在认证逻辑134中的AES-GCM管线的n=14个阶段(例如,阶段n 140为阶段14)。在此类情况下,明文132和所产生存取代码可在XOR逻辑单元142处组合,而不具有进一步时延。有利地,如果在翻译逻辑128和错误校正逻辑130处处理存储器写入请求126引发多于十四(14)个时钟时延,则额外时延可引入到XOR逻辑单元142的组合,使得当明文132准备好在XOR逻辑单元142处进行组合时,所产生存取代码可经处理。举例来说,可能引发XOR逻辑单元142处的单个时钟时延(例如,所产生存取代码传递通过延迟单元),使得同时接收到XOR逻辑单元142的输入。
图1C为根据本文中所描述的实例进行交互的存储器系统的示意性图示。图1C为根据本文中所描述的实例进行交互的存储器系统的示意性图示。在图1C中,类似命名的元件可具有如关于图1A所描述的类似操作或功能。举例来说,翻译逻辑156可类似于翻译逻辑110操作。如关于图1A所描述,存储器控制器102中的处理器106的离散组件可经由不同类型的电路系统实施。因此,在图1C的上下文中,翻译逻辑156可实施为ASIC,而认证逻辑164可实施为具有指定配置中的各个阶段的FPGA,所述阶段为例如阶段1 166、阶段2 168和阶段n170,其中n可为能够包含在FPGA架构中的任何数目个阶段。
主机计算装置104可将存储器读取请求154提供到存储器控制器102以从存储器装置158(例如,存储器装置112中的一个)读取数据。举例来说,存储器读取请求可为或包含读取命令和与读取命令相关联的地址。在存储器控制器102的示例实施方案中,存储器读取请求154可经由主机总线122路由到处理器106。因此,至少部分地同时,可在存储器控制器102的翻译逻辑156处获得包括存储器地址的存储器读取请求154,而可在认证逻辑164处获得存储器地址。因此,可至少部分地同时在存储器控制器102中处理存储器读取请求154的不同方面。在存储器读取请求154的上下文中,从存储器装置158读取的数据可被称为密文162,因为其将根据所产生存取代码解密。
继续存储器读取请求154的处理,一旦在翻译逻辑156处获得,翻译逻辑156就将逻辑存储器地址翻译成存储器装置158的物理存储器地址。在翻译存储器读取请求154的存储器地址之后,可任选地在错误校正逻辑160处对存储器读取请求154的待写入的数据自身进行错误校正。在一些实施方案中,代替在翻译逻辑156之后待读取的明文数据的错误校正,错误校正可在错误校正逻辑176处相对于明文174发生。因此,因为错误校正可在解密之前或之后发生,所以错误校正逻辑160和错误校正逻辑176在图1B中所展示的存储器控制器102的实施方案中的某一点是任选的(如虚线所描绘)。另外或替代地,在一些实施方案中,可包含错误校正逻辑160和错误校正逻辑176两者:错误校正逻辑160可对读取的密文162进行错误校正,而错误校正逻辑176可对写入或从存储器控制器102上的高速缓存器检索的认证标签180进行错误校正。
在一些实施方案中,一旦从存储器装置158读取,密文162就可与存储在高速缓存器(例如,存储器控制器102的高速缓存器116)中的认证标签180相关联且与读取的存储器地址相关联。举例来说,高速缓存器116可将认证标签与存储器读取请求154的逻辑存储器地址一起存储在高速缓存器的查找表中。因此,密文162可与所存储认证标签相关联,使得这两者被处理为到XOR逻辑单元172的输入。
继续图1C中所描绘的存储器控制器102的实施方案,至少部分地同时,可在认证逻辑164的各个阶段处处理在认证逻辑164处获得的存储器地址。举例来说,阶段1 166、阶段2168和阶段n 170可表示AES-GCM管线的阶段,其中存储器地址经加密且经产生为从存储器装置158读取的密文162的存取代码。举例来说,认证逻辑164可使用存储器地址作为认证流密码的IV,使得认证逻辑164使用存储器地址作为IV基于认证流密码而产生存取代码。一旦产生,XOR逻辑单元172可组合密文162数据和所产生存取代码。举例来说,组合可为密文162和所产生存取代码的输入之间的XOR操作。在组合存取代码和明文数据时,XOR逻辑单元172可将密文162解密为明文174。虽然参考图1C描述XOR操作,但可在其它实例中使用其它组合操作。
一旦解密为明文174,另一XOR逻辑单元178可将密文162与自身组合以产生认证标签180。虽然参考图1C描述XOR操作,但可在其它实例中使用其它组合操作。将所述认证标签180与前述所存储认证标签进行比较以确定它们是否彼此匹配。如果所存储认证标签与认证标签180匹配,则存储器控制器102可认证待从存储器装置158读取的明文174,使得所述明文可提供到外部计算装置(例如,主机计算装置104)。
在所描绘的实施方案中,明文174从存储器装置158读取且可通过认证存取,例如,使用基于与所述数据相关联的存储器地址由流密码加密的所产生存取代码。因此,存储器读取请求154可实施在存储器控制器102中,使得至少部分地同时执行存取存储器和产生经加密存取代码的方面。在一些实施方案中,有利地,处理存储器读取请求154的不同方面的时延可经拆分,使得将密文162解密为明文174的XOR逻辑单元172操作引发较少时延(例如,单个时钟时延)。作为实例,在翻译逻辑156和认证逻辑164处处理存储器读取请求154可引发十四(14)个时钟时延;并且可存在实施在认证逻辑164中的AES-GCM管线的n=14个阶段(例如,阶段n 140为阶段14)。在此类情况下,密文162和所产生存取代码可在XOR逻辑单元172处组合,而不具有进一步时延。有利地,如果在翻译逻辑156和错误校正逻辑176处处理存储器读取请求154引发多于十四(14)个时钟时延,则额外时延可引入到XOR逻辑单元172的组合,使得当密文162准备好在XOR逻辑单元172处进行组合时,所产生存取代码可经处理。举例来说,可能引发XOR逻辑单元172处的单个时钟时延(例如,所产生存取代码传递通过延迟单元),使得同时接收到XOR逻辑单元172的输入。
图2为根据本文中所描述的实例的方法200的示意性图示。可使用例如处理器106来执行示例方法200,所述处理器执行可执行指令以经由相应存储器总线124与存储器装置112交互。方法200的全部或部分可使用认证逻辑和/或翻译逻辑110实施。举例来说,框202-210中所描述的操作可作为计算机可执行指令存储在可由处理器106存取的计算机可读媒体中。在实施方案中,可由处理器106存取的计算机可读媒体可为存储器装置112中的一个。举例来说,可执行指令可存储在存储器装置112中的一个上,并且由存储器控制器102检索,以便处理器106执行可执行指令以用于执行方法200。另外或替代地,可执行指令可存储在耦合到主机计算装置104的存储器上,并且由处理器106检索以执行用于执行方法200的可执行指令。
方法200可在框202中开始。在框202中,方法可包含从主机计算装置获得与多个存储器装置相关联的存储器存取请求。存储器存取请求可为或包含命令和存储器地址。因此,框202可包含从主机计算装置接收用于一或多个存储器装置的命令和地址。在存储器控制器102的示例实施方案中,经由主机总线122例如从主机计算装置104接收存储器存取请求。举例来说,主机总线122可为将处理器106耦合到主机计算装置104的PCIe总线,使得主机计算装置104可将数据从在主机处理器上执行的用户应用程序提供到处理器106,所述主机处理器产生存储器存取请求。因此,在包含存储器装置112的读取或写入操作的存储器存取请求的各种实施方案中,在框202处,处理器106获得与存储器装置112相关联的存储器存取请求。
框202可后接框204。在框204中,方法可包含响应于存储器存取请求,执行地址翻译以将存储器存取请求中的逻辑存储器地址翻译成物理存储器地址。在存储器控制器102的示例实施方案中,翻译逻辑110可使用查找表(例如,块表)将作为逻辑存储器地址的存储器地址翻译成存储器装置112中的一个的物理存储器地址。在执行地址翻译时,翻译逻辑110还可执行与存储器控制器102的地址翻译相关联的操作,例如存储器耗损均衡、垃圾收集和/或写入放大。
框204可后接框206。在框206中,方法可包含例如响应于命令和/或地址而对与存储器存取请求相关联的数据执行错误校正以产生经错误校正数据。在存储器控制器102的示例实施方案中,高速缓存器116可提供来自存储器装置112的数据(例如,在写入操作中)或从所述存储器装置获得数据(例如,在读取操作中),以将所述数据提供到错误校正逻辑120以供错误校正。错误校正逻辑120可对所述所提供数据进行错误校正,并且随后,将所述经错误校正数据从错误校正逻辑120提供到高速缓存器116。在一些写入操作的情况下在明文数据的错误校正之后,或在一些读取操作的情况下在密文数据的错误校正之后,存储器控制器102可使用经错误校正数据来分别用所产生存取代码对待写入或读取的数据进行加密或解密。
框204和/或206可与框208至少部分地同时发生。在框208中,方法包含例如响应于命令和/或地址而利用存储器地址作为认证流密码的初始化向量以产生存取代码。举例来说,框208的操作可与框204和206中的任一个或两个至少部分地同时发生,使得存储器地址的地址翻译或数据的错误校正可与存取代码的加密并行执行。在存储器控制器102的示例实施方案中,处理器106利用认证逻辑108以使用存储器地址作为认证流密码的初始化向量(IV)。举例来说,认证逻辑108可具有伽罗瓦-计数器模式以使用AES加密产生具有流密码的存取代码,使得所产生存取代码也经加密。
框206和208可后接框210。在框210中,方法包含使用存取代码执行与存储器存取请求相关联的存储器存取操作。在读取操作作为存储器存取操作的上下文中,存储器装置112提供对所请求数据的存取,使得作为明文数据的读取数据经由主机总线122从存储器控制器102提供到主机计算装置104。在写入操作作为存储器存取操作的上下文中,存储器装置112提供对所请求数据的存取,使得待写入为密文数据的数据从存储器接口118提供到存储器装置112。因此,框210包含使用存取代码执行与命令相关联的存储器存取操作,无论是读取、写入、激活还是刷新。在处理器106的示例实施方案中,一旦存取代码由认证逻辑108产生,处理器106就执行可执行指令以将存储器存取请求提供到存储器装置124/从所述存储器装置提供存储器存取请求。在提供存储器存取请求时,处理器106可将供存储器控制器(例如,存储器控制器102)识别至少一个存储器存取请求待提供到的存储器装置112的信息包含在至少一个存储器存取请求中。举例来说,处理器106可将物理存储器地址和/或与所请求数据相关联的存储器装置识别(例如,作为标头信息)包含在每一至少一个存储器存取请求中。举例来说,标头信息可包含在命令中。方法200可在框210完成之后结束。
包含在所描述示例方法200中的框是出于说明的目的。在一些实施例中,这些框可以不同次序执行。在一些其它实施例中,可消除各种框。在又其它实施例中,各种框可被划分成额外框、以其它框补充或一起组合为更少的框。举例来说,相对于框206,对于写入操作,可直到框210之后才执行对与存储器存取请求相关联的数据执行错误校正,例如,可在认证逻辑108产生待写入到存储器装置112中的至少一个的密文之后通过错误校正逻辑120对数据进行错误校正。预期这些具体框的其它变体,包含框的次序的改变、框的内容拆分或组合成其它框的改变等。
图3为根据本文中所描述的实例的方法300的示意性图示。可使用例如处理器106来执行示例方法300,所述处理器执行可执行指令以经由相应存储器总线124与存储器装置112交互。在一些实例中,方法300的全部或部分可通过认证逻辑108和/或翻译逻辑110实施。举例来说,框302-308中所描述的操作可作为计算机可执行指令存储在可由处理器106存取的计算机可读媒体中。在实施方案中,可由处理器106存取的计算机可读媒体可为存储器装置112中的一个。举例来说,可执行指令可存储在存储器装置112中的一个上,并且由存储器控制器102检索,以便处理器106执行可执行指令以用于执行方法300。另外或替代地,可执行指令可存储在耦合到主机计算装置104的存储器上,并且由处理器106检索以执行用于执行方法300的可执行指令。
示例方法300可以框302开始,所述框开始方法的执行且包含从主机计算装置获得与多个存储器装置相关联的存储器读取请求,存储器读取请求可为或包含读取命令和存储器地址。因此,框302可包含从主机计算装置接收用于一或多个存储器装置的读取命令和地址。在示例实施方案中,可类似于方法200的框202执行框302。举例来说,在存储器控制器102的实施方案中,经由主机总线122例如从主机计算装置104获得存储器读取请求。
框302可后接框304。在框304中,方法包含响应于存储器读取请求,例如,响应于读取命令和/或地址,在存储器地址处将与存储器读取请求相关联的数据读取为密文。在示例实施方案中,可类似于方法200的框204和/或框206执行框302。因此,在存储器控制器102的示例实施方案中,框302可包含使用存储器读取请求执行地址翻译以将存储器地址的逻辑存储器地址翻译成物理存储器地址,以及对与存储器存取请求相关联的数据执行错误校正以产生经错误校正数据。举例来说,存储器控制器102可利用地址翻译逻辑110,并且高速缓存器116可基于经翻译物理地址从存储器装置112获得数据;以将所述数据提供到错误校正逻辑120以供错误校正。
框304可与框306至少部分地同时发生。在框306中,方法进一步包含例如响应于读取命令和/或地址而利用存储器地址作为认证流密码的初始化向量以产生存取代码。在示例实施方案中,可类似于方法200的框208执行框304。举例来说,框306的操作可与框304至少部分地同时发生,使得存储器地址的地址翻译或数据的错误校正可与存取代码的加密并行执行。处理器106可利用认证逻辑108以使用存储器读取请求的存储器地址作为认证流密码的初始化向量(IV),使得存取代码经产生以与从存储器装置112读取的数据组合。
框304和306可后接框308。在框308中,方法进一步包含使用存取代码执行与存储器读取请求相关联的读取操作以将数据读取为明文。在示例实施方案中,可类似于方法200的框210执行框308。举例来说,响应于存储器读取请求,所产生存取代码与从存储器装置112中的一个读取的密文数据组合以产生明文数据。将所产生存取代码与从存储器装置112中的一个读取的密文数据组合可包含在认证逻辑108中将密文数据和所产生存取代码组合为XOR操作的部分。由此,存储器装置112提供对所请求数据的存取,使得作为明文数据的读取数据经由主机总线122从存储器控制器102提供到主机计算装置104。因此,框308包含使用存取代码执行与读取命令相关联的读取操作。方法300可在框308完成之后结束。
包含在所描述示例方法300中的框是出于说明的目的。在一些实施例中,这些框可以不同次序执行。在一些其它实施例中,可消除各种框。在又其它实施例中,各种框可被划分成额外框、以其它框补充或一起组合为更少的框。举例来说,相对于框304,可能直到框308之后才执行对与存储器读取请求相关联的数据执行错误校正以产生经错误校正数据,例如,可能直到解密为明文数据之后才将所读取的数据提供到错误校正逻辑120以进行错误校正。预期这些具体框的其它变体,包含框的次序的改变、框的内容拆分或组合成其它框的改变等。
图4为根据本文中所描述的实例的方法400的示意性图示。可使用例如处理器106来执行示例方法400,所述处理器执行可执行指令以经由相应存储器总线124与存储器装置112交互。在一些实例中,方法400可完全或部分地通过认证逻辑108和/或翻译逻辑110实施。举例来说,框402-408中所描述的操作可作为计算机可执行指令存储在可由处理器106存取的计算机可读媒体中。在实施方案中,可由处理器106存取的计算机可读媒体可为存储器装置112中的一个。举例来说,可执行指令可存储在存储器装置112中的一个上,并且由存储器控制器102检索,以便处理器106执行可执行指令以用于执行方法400。另外或替代地,可执行指令可存储在耦合到主机计算装置104的存储器上,并且由处理器106检索以执行用于执行方法400的可执行指令。
示例方法400可以框402开始,所述框开始方法的执行且包含从主机计算装置获得与多个存储器装置相关联的存储器写入请求,存储器写入请求可为或包含写入命令和存储器地址。因此,框402可包含从主机计算装置接收用于一或多个存储器装置的写入命令和地址。在示例实施方案中,可类似于方法200的框202执行框402。举例来说,在存储器控制器102的实施方案中,经由主机总线122例如从主机计算装置104获得存储器写入请求。
框402可后接框404。在框402中,方法进一步包含响应于存储器写入请求,例如,响应于写入命令和/或地址,利用存储器地址作为认证流密码的初始化向量以产生存取代码。在示例实施方案中,可类似于方法200的框208执行框402。举例来说,以下框406的并发操作可与框404同时发生,使得存储器地址的地址翻译或数据的错误校正可与存取代码的加密并行执行。处理器106可执行认证逻辑108以使用存储器写入请求的存储器地址作为认证流密码的初始化向量(IV),使得存取代码经产生以与待写入到存储器装置112的数据组合。
框404可与框406至少部分地同时发生。在框406中,方法进一步包含例如响应于写入命令和/或地址而准备在存储器地址处将与存储器写入请求相关联的数据写入为明文。在示例实施方案中,可类似于方法200的框204和/或框206执行框404。因此,在存储器控制器102的示例实施方案中,框406可包含使用存储器写入请求执行地址翻译以将存储器地址的逻辑存储器地址翻译成物理存储器地址,以及对与存储器存取请求相关联的数据执行错误校正以产生待写入的经错误校正数据。举例来说,存储器控制器102可利用地址翻译逻辑110,并且高速缓存器116可基于经翻译物理地址而将来自存储器装置112的数据提供到错误校正逻辑120以供错误校正。
框404和406可后接框408。在框408中,方法进一步包含使用存取代码执行与存储器写入请求相关联的写入操作以将数据写入为密文。在示例实施方案中,可类似于方法200的框210执行框408。举例来说,所产生存取代码与数据组合以产生待写入到存储器装置112的密文。将所产生存取代码与存储器存取请求的明文数据组合可包含在认证逻辑108中将明文数据和所产生存取代码组合为XOR操作的部分。由此,存储器装置112提供对所请求数据的存取,待写入为密文数据的此类数据从存储器接口118提供到存储器装置112。因此,框308包含使用存取代码执行与写入命令相关联的写入操作。方法400可在框408完成之后结束。
包含在所描述示例方法400中的框是出于说明的目的。在一些实施例中,这些框可以不同次序执行。在一些其它实施例中,可消除各种框。在又其它实施例中,各种框可被划分成额外框、以其它框补充或一起组合为更少的框。预期这些具体框的其它变体,包含框的次序的改变、框的内容拆分或组合成其它框的改变等。
图5A为根据本文中所描述的实例布置的存储器系统500a的示意性图示。系统500a包含获得重置指示518的存储器控制器502和存储器装置510。存储器控制器502在认证逻辑504处获得重置指示518,并且存储器装置510在存取逻辑512处获得重置指示518。在获得重置指示518后,认证逻辑504就可产生用于存储器装置510的存储器区的存取代码508或更新已产生的存取代码508。类似地,在获得重置指示518后,存取逻辑512还可产生用于存储器装置510的存储器区的存取代码516或更新已产生的存取代码516。认证逻辑504和存取逻辑512两者使用相同所配给密钥来产生相应存取代码,使得由认证逻辑504产生的存取代码508和由存取逻辑512产生的存取代码516是相同的。在操作期间,存储器控制器502可产生存储器存取请求,所述存储器存取请求包含用于与存储器存取请求有关的存储器区的一或多个存取代码508。当存储器请求中的存取代码(选自存取代码508)与存储在存储器装置处(存储为存取代码516)的用于存储器区的对应存取代码匹配时,存储器控制器可成功地存取存储器存取请求中所指定的存储器区。
在产生存取代码508和存取代码516时,除在存储器控制器502和存储器装置510两者处使用所配给密钥之外,认证逻辑504和存取逻辑512还可分别从计数器506或计数器514获得计数值。计数值可与所配给密钥结合使用以产生用于存储器装置510的存储器区的存取代码。在示例实施方案中,计数器506和计数器514两者可最初地(例如,在生产或制造时)设置为相同计数值(例如,计数值=0)。在接收到重置指示518后,认证逻辑504和存取逻辑512就可各自从其相应计数器506或计数器514获得计数值,使得经更新的存取代码508和存取代码516在存储器控制器502和存储器装置510两者处相同。有利地,系统500a可为存储器装置510的具体存储器区提供安全性,因为存取代码508和存取代码516周期性地更新(例如,基于所获得重置指示518)或根据来自相应计数器506或计数器514的经更新计数值而更新。因此,如果黑客要窃听或侵入所产生存取代码中的一或多个,则存储器装置510的其它区可保持安全,因为仅经发现或经侵入存取代码会被破解。因此,系统500a可为存储器装置510的各种存储器区提供安全性,同时还在存储器控制器502和存储器装置510处获得重置指示518后就产生存取代码。
在各种实施方案中,计数器506或计数器514可使用集成电路实施。举例来说,如本文中大体上所描述,计数器,比如计数器506或计数器514,可使用级联触发器(例如,级联D触发器)实施。各种类型的计数器可用于本文中所描述的系统和方法中,所述计数器包含但不限于异步计数器、同步计数器、十进制计数器、上/下计数器、环计数器、约翰逊计数器、级联计数器或模数计数器。如可了解,各种电路系统、逻辑电路或集成电路可用于实施计数器506或计数器514。
图5B为根据本文中所描述的实例布置的存储器系统500b的示意性图示。在图5B中,类似命名的元件可具有如关于图1A所描述的类似操作或功能。举例来说,翻译逻辑530可类似于翻译逻辑110操作。如关于图1A所描述,存储器控制器102中的处理器106的离散组件可经由不同类型的电路系统,比如存储器控制器524中的处理器526的电路系统实施。因此,在图5B的上下文中,翻译逻辑530可实施为ASIC,而认证逻辑528可实施为具有指定配置中的各个阶段的FPGA。另外,图5B的存储器装置540和存储器装置544可类似于图1A的存储器装置112操作。因此,存储器装置540和存储器装置544可为例如NAND存储器装置的非易失性存储器装置,或易失性存储器装置。存储器装置540和存储器装置544还可包含一或多种类型的存储器,包含但不限于:DRAM、SRAM、三层级单元(TLC)NAND、单层级单元(SLC)NAND、SSD或3D XPoint存储器装置。可经由存储器总线538从存储器控制器524传达存储在存储器装置540和存储器装置544中的数据或待从所述存储器装置存取的数据。举例来说,存储器总线538可为根据NVMe协议操作的PCIe总线。
系统500b包含耦合到存储器控制器524的主机计算装置520,所述存储器控制器可控制存储器装置540和/或存储器装置544。每一存储器装置540和存储器装置544可包含存储器的不同区,使得存储器控制器524可将存储器命令发布和提供到存储器装置540和存储器装置544的具体存取区。在一些实施方案中,存储器装置540和存储器装置544可包含如由存储器控制器524存取的存储器的共享区,使得从存储器控制器524提供的存储器命令可针对同一存储器存取请求存取存储器装置540或存储器装置544中的任一个。每一存储器装置可包含相应的存取逻辑546和存取逻辑548以产生用于存储器装置540和/或存储器装置544中的存储器的区的存取代码。
存储器控制器524包含主机接口534,所述主机接口可耦合到主机总线542以用于连接到主机计算装置520。主机接口534耦合到处理器526和/或可使用所述处理器实施。处理器526包含认证逻辑528和翻译逻辑530。举例来说,主机接口534和处理器526还可经由内部存储器控制器总线耦合到高速缓存器536。处理器526经由存储器接口532和相应存储器总线538耦合到存储器装置540和存储器装置544。存储器接口532也例如经由内部存储器控制器总线耦合到高速缓存器536。
存储器控制器524还包含计数器522,其也例如经由内部存储器控制器总线耦合到处理器526以与认证逻辑528交互。计数器522可例如在存储器控制器524处获得重置指示(例如,重置指示518)后就向认证逻辑528提供计数值。在一些实施方案中,存储器装置540和存储器装置544还可从计数器522获得计数值,例如,如经由存储器接口532和相应存储器总线538从处理器526提供的计数值。举例来说,存储器装置540和存储器装置544可使用来自计数器522的计数值,而非使用从存储器装置540或存储器装置544自身获得的计数值。然而,如可了解,存储器装置540或存储器装置544可包含计数器或计数功能性(例如,如由相应的存储器装置540或存储器装置544的晶体管实施)以独立于计数器522获得计数值。存储器装置540、存储器装置544和存储器控制器524可使用计数值来产生和/或更新用于存储器装置540和/或存储器装置544的存储器区的存取代码,例如,在操作中类似于存储器控制器502和存储器装置510获得重置指示518且使用来自相应的计数器506和计数器514的计数值。虽然在图5B的上下文中描述为实施在存储器控制器中的计数器522,但计数器522可为本文中所描述的任何计数器中的一个(例如,如参考计数器506或计数器514的实施方案所描述)。举例来说,计数器522可为不同于存储器控制器524的集成电路,但仍将计数值提供到认证逻辑528以用于由处理器526产生存取代码。
在存储器控制器524和/或存储器装置540和存储器装置544的操作初始化后(例如,在引导或启动时),认证逻辑528就可基于作为制造的部分存储在高速缓存器536中的所配给密钥而产生用于存储器装置540或存储器装置544的存储器区的存取代码。举例来说,所配给密钥可为磁盘加密密钥(DEK)。类似地,存储器装置540和/或存储器装置544可包含所存储的所配给密钥(例如,在数据寄存器或易失性高速缓存存储器中),所述所存储的所配给密钥可用于在存储器装置540或存储器装置544的操作初始化后产生相同的存取代码。举例来说,存储器装置540和存储器装置544可经由存储器总线538接收存储器控制器524正被初始化以用于操作的初始化信号,并且因此存储器装置540、544也被初始化。
为了在存储器控制器524和/或存储器装置540和存储器装置544处产生存取代码(例如,在操作初始化后),存储器控制器524还可识别多个存储器区,将在存储器装置540和/或存储器装置544处处理对所述多个存储器区的存储器存取请求。举例来说,存储器装置540和/或存储器装置544可将每一相应存储器装置内的存储器区的查找表提供到高速缓存器536。在实施为NAND存储器装置的存储器装置540或存储器装置544的上下文中,存储器区可对应于块、页或单元中的一个。在其它实例中还可使用其它区,包含不规则区。一般来说,存储器容量可被划分成多个存储器区(例如,行和/或列的区域)。因此,在实例中,如果区对应于NAND存储器装置的块,则存取代码可基于所配给密钥和存储器的区(例如,NAND存储器装置的块)而产生以用于存储器装置540或存储器装置544的每一块。认证逻辑528可获得查找表以基于所提供查找表而识别存储器区,并且结合所配给密钥可产生用于每一存储器区的多个存取代码。类似地,存取逻辑546和/或存取逻辑548可使用存储器装置540和/或存储器装置544的多个所识别存储器区以及所配给密钥,以在存储器装置540、544自身处产生相同的存取代码。
在产生用于存储器装置540或存储器装置544的存储器区的存取代码后,处理器526就可将所产生存取代码存储在高速缓存器536处,例如,用于将所产生存取代码与来自主机计算装置520的包含存取代码的存储器存取请求进行比较,如本文中所描述。另外,在一些实施方案中,处理器526可将所产生存取代码提供到存储器装置540和存储器装置544。举例来说,在存储器装置540、544并不独立地(例如,在装置自身上)产生存取代码的实施方案中,处理器526可使用存储器接口532经由存储器总线538将所产生存取代码提供到存储器装置540、544。提供到存储器装置540或存储器装置544的存取代码可存储在本地高速缓存器或数据寄存器中以用于与来自存储器控制器524的包含存取代码的存储器命令进行比较。
存储器控制器524可经由主机总线542将所产生存取代码提供到主机计算装置520,使得主机计算装置520可使用存储器存取请求中的存取代码来存取存储器装置540和/或存储器装置544。举例来说,如果主机计算装置520请求存储器装置540或存储器装置544的数据存取(例如,读取、写入或擦除),则存储器存取请求(例如,读取、写入和/或擦除命令)可包含存取代码,使得数据存取可由存储器控制器524(例如,在认证逻辑528处)和/或存取逻辑546和存取逻辑548中的一个或两个认证。如本文中所描述,有利地,存储器控制器524和/或存储器装置540、544可用于提供对存储器装置540、544的具体存储器区的认证存取以存取与存储器存取请求相关联的数据。因此,在系统500b的操作中,对于存储器装置540、544的存储器区,可仅根据类似于用于所读取或写入的数据的加密密钥的存取代码来存取所读取或写入的数据。
在主机计算装置520提供至少包含存储器地址和存取代码(例如,由存储器控制器524提供的多个中的至少一个)的存储器存取请求的示例实施方案中,主机计算装置520可经由主机总线542将存储器存取请求提供到主机接口534。在处理器526处获得对存储器装置540或存储器装置544的一或多个存储器存取请求后,存储器控制器524就可实施处理器526以处理存储器存取请求,使得存储器存取请求的存储器地址被路由到翻译逻辑530以用于存储器地址的翻译。处理器526还可将存储器存取请求的存取代码路由到高速缓存器536以用于将存取代码与所存储存取代码(例如,用于存储器装置540或存储器装置544的区的所产生存取代码)进行比较。在实例中,在执行与存储器存取请求相关联的存储器存取操作之前,存储器控制器524的认证逻辑528可比较所存储存取代码(例如,在高速缓存器536处)以确定与存储器存取请求一起获得的存取代码是否匹配。举例来说,认证逻辑528可实施方法800,以基于所匹配存取代码而认证存储器命令,且执行与存储器存取请求相关联的存储器存取操作。
另外或替代地,存储器装置540的存取逻辑546和/或存储器装置544的存取逻辑548可将所存储存取代码(例如,在存储器装置的高速缓存器或数据寄存器处)与在存储器存取请求中接收到的存取代码进行比较。可在执行与存储器存取请求相关联的存储器存取操作之前执行所述比较。可仅在存储器存取请求中接收到的存取代码与存储在存储器装置处的用于对应存储器区的存取代码匹配的情况下由存储器装置执行存储器存取操作。举例来说,存储器控制器524可包含被包含在存储器存取请求中作为存储器命令的部分的存取代码;使得存储器命令经由存储器总线538提供到包含存取代码的存储器装置540和/或存储器装置544。存取逻辑546或存取逻辑548可获得包含所提供存取代码的存储器命令以实施比较以认证存储器命令。举例来说,当存取代码与存储器装置540或存储器装置544处的所存储存取代码匹配时,存取逻辑546或存取逻辑548可实施方法1000以认证存储器命令且执行存储器存取操作。
在存储器控制器102的处理器106处处理存储器存取请求时,存储器控制器102还可基于包含存储器地址的存储器存取请求而执行地址翻译。如所描述,翻译逻辑530可类似于翻译逻辑110操作。因此,翻译逻辑530可使用查找表(例如,块表)将作为逻辑存储器地址的存储器地址翻译成存储器装置540或存储器装置544中的一个的物理存储器地址。
在一些实例中,存储器控制器524和/或存储器装置540、544可获得重置指示(例如,重置指示518)。举例来说,计数器522可在计数器改变计数(例如,将计数递增一(1))时提供重置指示以重置多个存取代码。类似于如关于图5A所描述的操作,存储器控制器524在认证逻辑528处从计数器522获得重置指示;并且存储器装置540和存储器装置544分别在存取逻辑546和存取逻辑548处获得重置指示。在认证逻辑528处获得重置指示后,认证逻辑528就可重新产生用于存储器装置540和存储器装置544的存储器区的存取代码以更新存取代码(例如,高速缓存器536中的所存储存取代码)。类似地,在存取逻辑546和/或存取逻辑548处获得重置指示后,存取逻辑546和/或存取逻辑548也可重新产生用于存储器装置540或存储器装置544的存取代码以更新存取代码。在存储器装置540或存储器装置544并不独立地(例如,在装置自身上)产生存取代码的一些实施方案中,可使用存储器接口532经由存储器总线538将由认证逻辑528重新产生的存取代码提供到存储器装置540、544。
在重新产生存取代码时,除使用所配给密钥之外,认证逻辑528还可从计数器522获得计数值。举例来说,计数值可包含在来自计数器522的重置指示中。类似于关于图5A所描述的,计数值可与所配给密钥结合使用以重新产生用于存储器装置540或存储器装置544的存储器区的存取代码。有利地,系统500b可为存储器装置540和/或存储器装置544的具体存储器区提供安全性,因为存取代码周期性地(例如,基于所获得重置指示)更新或根据来自计数器522的经更新计数值而更新。另外或替代地,可例如在主机计算装置520的用户重置对存储器装置540或存储器装置544的存取的情况下从主机计算装置520获得重置指示。在此类实施方案中,可例如在认证逻辑528处如本文中所描述地重新产生存取代码。
存储器控制器524可为NVDIMM存储器控制器,其经由主机总线542耦合到主机计算装置520。主机总线542可根据NVDIMM协议,例如NVDIMM-F、NVDIMM-N、NVDIMM-P或NVDIMM-X操作。举例来说,在此类实施方案中,存储器装置540和存储器装置544可为NAND存储器装置或3D XPoint存储器装置。因此,在此类实施方案中,存储器装置540和存储器装置544可作为高速缓存器536的永久性存储装置操作,所述高速缓存器可为易失性存储器装置,和/或作为用于存储器控制器524或主机计算装置520上的任何易失性存储器的永久性存储装置操作。
图6为根据本文中所描述的实例进行交互的存储器系统600的示意性图示。在图6中,类似命名的元件可具有如关于图5A或图5B所描述的类似操作或功能。举例来说,计数器610可类似于计数器506或计数器522操作。作为另一实例,HMAC认证逻辑606可类似于认证逻辑504或认证逻辑528操作。如关于图5BA所描述,存储器控制器524中的处理器526的离散组件可经由不同类型的电路系统实施。因此,在图6的上下文中,翻译逻辑612可实施为ASIC,而HMAC认证逻辑606可实施为具有指定配置中的各个阶段的FPGA。
可部分地基于存储器装置(例如,存储器装置624)的区而产生用于存储器装置的区的存取代码。因此,HMAC认证逻辑606可利用所配给密钥和存储器装置(例如,被描绘为指示区可由HMAC认证逻辑606使用的虚线轮廓的存储器装置624)的区。当单独使用所配给密钥和存储器的区来产生存取代码时,所产生存取代码616可被称为区存取代码。在实例中,HMAC认证逻辑606可获得存储器装置624的区的查找表以处理存储器装置624的区和所配给密钥以产生区存取代码616。因此,HMAC认证逻辑606可利用HMAC算法,例如HMAC-SHA256或HMACSHA3-256,来对用于存储器装置624的存储器区中的每一区的存取代码进行加密。
继续图6的示例实施方案,计数器610可将计数值提供到HMAC认证逻辑606。在各种实施方案中,在存储器控制器602处,当存储器控制器602获得重置指示(例如,比如图5A的重置指示518)时,计数器610可提供计数值。在一些实施方案中,重置指示可为提供来自计数器610的计数值自身。举例来说,计数器610可按增量更新其计数,由此将重置指示和计数值提供到HMAC认证逻辑606。产生的区存取代码616可由HMAC认证逻辑606使用区存取代码和计数值来更新。在一些实施方案中,更新存取代码618可包含使用存储器的区、所配给密钥和计数值将存取代码重新产生为经更新存取代码618。因此,HMAC认证逻辑606可利用HMAC算法,例如HMAC-SHA 256或HMACSHA3-256,以基于存储器的区、所配给密钥和/或由计数器610提供的计数值而对用于存储器装置624的存储器区中的每一区的存取代码进行加密。
在存储器系统600的示例交互中,存储器控制器602可在处理器604处获得存储器写入请求608。处理器604可通过将存储器地址提供到翻译逻辑612以供翻译来处理包含存取代码、存储器地址和数据的存储器写入请求608。在将存储器地址(例如,逻辑存储器地址)翻译成存储器装置624的物理存储器地址之后,可将至少包含物理存储器地址和存取代码的存储器存取请求提供到高速缓存器614。在实例中,存储器写入请求608的数据可存储在数据缓冲器中,同时由HMAC认证逻辑606对存取代码和物理存储器地址进行额外处理。在实例中,HMAC认证逻辑606通过将存取代码与所存储存取代码进行比较,例如,如虚线中描绘为所存储存取代码==存取代码?620,来认证存储器存取请求的存取代码。举例来说,HMAC认证逻辑606可实施方法800以基于所匹配存取代码而认证存储器命令,以发布包含物理存储器地址和数据的存储器写入命令622。在存储器装置624进一步认证存储器写入命令622的一些实施方案中,存储器写入命令622还可包含存取代码作为存储器装置624的所提供存取代码。因此,在系统600中,可至少使用所配给密钥、存储器的区和/或计数值根据HMAC产生或更新存取代码616。有利地,存取代码可经加密且可用于提供对存储器装置624的具体存储器区的认证存取以存取与存储器写入请求608相关联的数据。
图7为根据本文中所描述的实例的方法的示意性图示。可使用例如处理器526来执行示例方法700,所述处理器执行可执行指令以经由相应存储器总线538与存储器装置540和存储器装置544交互(例如,在引导或启动时)。在一些实例中,方法500可完全或部分地由认证逻辑528和/或结合翻译逻辑530实施。举例来说,框702-708中所描述的操作可作为计算机可执行指令存储在可由处理器526存取的计算机可读媒体中。在实施方案中,可由处理器526存取的计算机可读媒体可为存储器装置540和存储器装置544中的一个。举例来说,可执行指令可存储在存储器装置540和存储器装置544中的一个上,并且由存储器控制器524检索,以便处理器526执行可执行指令以用于执行方法700。另外或替代地,可执行指令可存储在耦合到主机计算装置520的存储器上,并且由处理器526检索以执行用于执行方法700的可执行指令。
示例方法700可以框702开始,所述框开始方法700的执行且包含在存储器控制器处部分地基于所配给密钥而产生多个存取代码,每一存取代码用于存储器装置的多个存储器区中的至少相应存储器区。在示例实施方案中,存储器控制器524可识别多个存储器区,将在存储器装置540和/或存储器装置544处处理对所述多个存储器区的存储器存取请求。在识别区且从存储装置(例如,在高速缓存器536中)存取所配给密钥的情况下,处理器526可实施认证逻辑528以产生用于每一存储器区的多个存取代码。在实例中,认证逻辑528可使用HMAC来产生多个存取代码。
框702可后接框704。在框704中,方法进一步包含将多个存取代码存储在存储器控制器的高速缓存器中,例如,将存取代码写入到存储器控制器524中的高速缓存器536。在示例实施方案中,处理器526可将所产生存取代码存储在高速缓存器536处,例如,用于将所产生存取代码与来自主机计算装置520的包含存取代码的存储器存取请求进行比较。在一些实施方案中,框704可包含将多个存取代码写入到耦合到存储器控制器的高速缓存器。举例来说,可将存取代码写入到存储器控制器524外部的高速缓存器,例如耦合到存储器控制器524的存储器系统500b(未描绘)中的另一高速缓存器。此类比较可由处理器526例如在执行如本文所描述的方法800中执行。
框704可后接框706。在框706中,方法进一步包含将多个存取代码中的每一相应存取代码提供到存储器装置的高速缓存器。在示例实施方案中,处理器526还可使用存储器接口532例如经由存储器总线538将所产生存取代码提供到存储器装置540和存储器装置544。在存储器装置540和存储器装置544实施存取逻辑546或存取逻辑548的实施方案中,所提供存取代码可存储在本地高速缓存器或数据寄存器中以用于与包含存取代码的存储器命令进行比较,例如,以认证存储器命令。因此,框706可包含经由存储器总线将多个存取代码中的每一相应存取代码写入到相应存储器装置的高速缓存器。当存取逻辑546或存取逻辑548执行方法1000时,可实施存储器装置540或存储器装置544中的比较。
框706可后接决策框708。在决策框708中,方法包含确定处理器526是否已获得重置指示以重置多个存取代码。如果处理器526确定已获得重置指示(例如,比如重置指示518),则方法700过程的流程沿着“是”路线返回到产生存取代码的框702。举例来说,如果重置指示包含计数值,则可基于所配给密钥、存储器的区和/或计数值而重新产生或更新存取代码。在各种实施方案中,为了重置多个存取代码,存储器控制器524可擦除存储在高速缓存器536中的存取代码,使得经重新产生或经更新存取代码可存储在高速缓存器536中的同一位置中。另外或替代地,可在不具有计数值的情况下从主机计算装置520获得重置指示,指示用户已请求对存储器装置540和存储器装置544的存取用所产生的新存取代码重置。如果处理器526确定尚未获得重置指示,则方法700可结束。
包含在所描述示例方法700中的框是出于说明的目的。在一些实施例中,这些框可以不同次序执行。在一些其它实施例中,可消除各种框。在又其它实施例中,各种框可被划分成额外框、以其它框补充或一起组合为更少的框。预期这些具体框的其它变体,包含框的次序的改变、框的内容拆分或组合成其它框的改变等。
图8为根据本文中所描述的实例的方法的示意性图示。可使用例如处理器526来执行示例方法800,所述处理器执行可执行指令以在从主机计算装置520获得存储器存取请求时与存储器装置540和存储器装置544交互。在一些实例中,方法800可完全或部分地由认证逻辑528实施。举例来说,框802-808中所描述的操作可作为计算机可执行指令存储在可由处理器526存取的计算机可读媒体中。在实施方案中,可由处理器526存取的计算机可读媒体可为存储器装置540和存储器装置544中的一个。举例来说,可执行指令可存储在存储器装置540和存储器装置544中的一个上,并且由存储器控制器524检索,以便处理器526执行可执行指令以用于执行方法800。另外或替代地,可执行指令可存储在耦合到主机计算装置520的存储器上,并且由处理器526检索以执行用于执行方法800的可执行指令。
示例方法800可以框802开始,所述框开始方法800的执行且包含从主机计算装置获得与存储器装置相关联的存储器存取请求,存储器存取请求包括存储器装置的存储器地址和存取代码。在示例实施方案中,主机计算装置520可将至少包含存储器地址和存取代码的存储器存取请求提供到存储器控制器524,例如,经由主机总线542提供到主机接口534。因此,处理器526可获得存储器存取请求以供处理,例如存储器地址的翻译和存取代码的认证。
框802可后接框804。在框804中,方法进一步包含响应于存储器写入请求,在认证逻辑处将存取代码与存储器控制器的高速缓存器中的多个所存储存取代码进行比较。在示例实施方案,比如图6的示例实施方案中,HMAC认证逻辑606可将高速缓存器614处的所存储存取代码与存储器存取请求的所获得存取代码进行比较。举例来说,在存储器写入请求608的上下文中,可将存取代码提供到高速缓存器536以用于与所存储存取代码进行比较。在各种实施方案中,可比较存取代码直到存在所匹配存取代码,例如,所存储存取代码的所有位与所获得存取代码匹配。另外地或替代地,额外比较算法可由HMAC认证逻辑606实施,所述算法是例如k最近邻算法(“k-nn”算法),其中逐位维度空间中所存储的数个所匹配代码被选择为“最接近”所获得存取代码。一旦获得所匹配存取代码,方法800的流程前进到框806。
框804可后接框806。在框806中,方法进一步包含基于所匹配存取代码而认证存储器命令。在示例实施方案中,处理器604可基于所匹配存取代码而认证待从存储器控制器602发布到存储器装置(例如,存储器装置624)的存储器命令。在操作中类似于图6,HMAC认证逻辑606可确定是否所存储存取代码==存取代码?620,使得在匹配后,HMAC认证逻辑606就将基于存储器存取请求的存储器命令可由存储器控制器602发布到存储器装置624的指示提供到处理器604。所述指示可被称为认证指示,使得存储器控制器602将存储器命令提供到存储器装置624。
框806可后接框808。在框808中,方法进一步包含响应于与存取代码匹配,执行与存储器存取请求相关联的存储器存取操作。在示例实施方案中,一旦将存储器命令提供到存储器装置624,存储器装置624就可基于存储器存取请求而执行存储器存取操作。举例来说,可由存储器装置624执行读取、写入或擦除操作,其中存储器装置624与存储器控制器602交互以执行存储器存取操作,例如,读取操作可涵盖存储器装置624将读取数据提供回到存储器控制器602。方法800可在框808完成之后结束。
包含在所描述示例方法800中的框是出于说明的目的。在一些实施例中,这些框可以不同次序执行。在一些其它实施例中,可消除各种框。在又其它实施例中,各种框可被划分成额外框、以其它框补充或一起组合为更少的框。预期这些具体框的其它变体,包含框的次序的改变、框的内容拆分或组合成其它框的改变等。
图9为根据本文中所描述的实例布置的存储器系统的示意性图示。系统900包含经由存储器总线918耦合到存储器控制器902的存储器装置904。存储器装置904包含处理器906,其包含存取逻辑908,所述处理器经由存储器总线918耦合到存储器控制器902。处理器906还经由输入/输出(I/O)总线920耦合到I/O控制单元910,并且经由控制总线922耦合到控制逻辑912。控制逻辑912通过数据寄存器916和高速缓存寄存器924与包含存储器阵列914的存储器装置904的其它元件交互。I/O控制单元910还与存储器阵列914交互,例如,当在控制逻辑912处启用某些控制引脚时。举例来说,图9中所描绘的某些控制引脚(例如,Eni、CE#、CLE、ALE、WE#、RE#、WP#)可接收控制信号,所述控制信号使得I/O控制单元910能够与所述控制引脚功能性相对应地操作。在各种实施方案中,存储器装置904可为NAND存储器装置,并且存储器阵列914可为NAND快闪存储器阵列。除存储器装置904的编号元件之外,如所属领域的技术人员将了解,存储器装置(例如,NAND存储器装置)的其它特征也可包含在存储器装置904中,例如可用于存储器装置904的元件的各种电压(例如,Vpp、Vrefq、Vcc、Vss、Vccq和/或Vssq)。举例来说,如所描绘,地址寄存器可与I/O控制单元910交互以存储和/或提供存储器地址以在存储器阵列914处使用耦合到存储器阵列914的行解码器和列解码器存取。同样如所描绘,状态寄存器可与I/O控制单元910和控制逻辑912交互以存储和/或提供存储器装置904中的某些存储器元件的状态。并且,命令寄存器可与I/O控制单元910和控制逻辑912交互以存储来自I/O控制单元910的命令和/或将所述命令提供到控制逻辑912。
存储器装置904可经由存储器总线918从存储器控制器902获得包含用于存储器阵列914的存储器区的存取代码的存储器命令。存储器装置904在操作中可类似于存储器装置540或存储器装置544,因为存储器装置904可包含存储器区,例如存储器阵列914的块、存储器阵列914的页或存储器阵列914的个别存储器单元。因此,存储器命令中的每一所获得存取代码可对应于可由存储器装置904在存取逻辑908处认证的具体区。如关于图5B所描述,存取逻辑546和/或存取逻辑548可使用存储器阵列914的存储器区和存储在本地高速缓存器(例如,高速缓存寄存器924)中的所配给密钥,以在存储器装置904处产生与可由存储器控制器902使用的所产生存取代码的存取代码相同的存取代码。举例来说,存取逻辑908可基于所配给密钥和存储器阵列914的区使用HMAC来产生相同存取代码。
在存储器装置904处产生的存取代码还可使用计数值以用于产生或更新存取代码(例如,归因于重置指示,比如重置指示518)。举例来说,计数器可实施在控制逻辑912中且计数值存储在状态寄存器中。在实例中,如关于计数器506或计数器514所描述,计数器可使用集成电路,比如级联触发器,实施在控制逻辑912中。I/O控制单元910可获得存储在状态寄存器中的计数值,以提供到存取逻辑908作为用于产生存取代码的计数值。举例来说,存取逻辑908可基于所配给密钥、存储器阵列914的区和存储在状态寄存器中的计数值使用HMAC来产生相同存取代码。
在存储器装置904并不产生相同存取代码的一些实施方案中,存储器控制器902可将所产生存取代码提供到存储器装置904的高速缓存寄存器924。在任何情况下,存储器装置904可存储存取代码以认证包含用于存储器阵列914的区的存取代码的所获得存储器命令。在示例实施方案中,类似于HMAC认证逻辑606比较所存储存取代码的功能性,存取逻辑908可将存储器命令的所获得存取代码与所存储存取代码进行比较。举例来说,用于存储器阵列914的区的存取代码可存储在高速缓存寄存器924中。如通过存取逻辑908实施,可将所获得存取代码提供到高速缓存寄存器924以用于与所存储存取代码进行比较。如通过存取逻辑908实施,可比较存取代码,直到存在所匹配存取代码,例如,所存储存取代码的所有位与所获得存取代码匹配。根据所匹配存取代码,存取逻辑908将指示提供到处理器906。所述指示可被称为认证指示,使得存取逻辑908将存储器地址(例如,存储器阵列914中的位置的物理存储器地址)提供到I/O控制单元910,同时还提供指示存储器阵列914可经由控制总线922存取到控制逻辑912的控制信号。因此,基于所述认证指示,存取逻辑908可将物理存储器地址提供到I/O控制单元910以用于存取存储器阵列914的存储器区,所述存储器区对应于在来自存储器控制器902的存储器命令中匹配且获得的存取代码。
有利地,所产生存取代码可为存储器装置904的数据读取或写入的存储器区提供安全性。在所产生存取代码存储在高速缓存寄存器924中的示例实施方案中,存取代码可周期性地更新,例如,在存储器装置904处获得重置指示的情况下。因此,如果黑客要窃听或侵入所产生存取代码中的一或多个,则存储器的其它区(例如,同一存储器装置的区)可保持安全,因为仅经发现或经侵入存取代码会被破解。进一步另外且有利地,系统900可为存储器阵列914的具体存储器区提供安全性,因为存取代码周期性地更新(例如,基于所获得重置指示)或根据来自计数器的经更新计数值而更新。
提供到存取逻辑908的一或多个控制信号可包含经由控制总线922提供到控制逻辑912的控制逻辑引脚(例如控制逻辑引脚:WE#、CLE和/或ALE)的控制信号。因此,控制逻辑912可基于包含存取代码的所获得存储器命令而从存取逻辑908获得一或多个控制信号。在实例中,在控制逻辑912的命令锁存器启用(CLE)引脚处获得控制信号可指示已获得存储器命令的存储器装置904。因此,控制逻辑912可激活晶体管的栅极,所述晶体管控制指示存储器阵列914的就绪/忙碌状态的R/B#引脚输出。举例来说,在CLE引脚处获得控制信号时,控制逻辑912可将栅极信号提供到晶体管,使得晶体管的漏极(例如,如果n型晶体管)设置为高,指示存储器阵列914处的忙碌状态。因此,响应于指示包含存取代码的所获得存储器命令的一或多个所获得控制信号,控制逻辑912可提供内部控制信号以控制各种存储器存取电路执行存储器存取操作(例如,读取、写入、编程)。举例来说,内部控制信号可包括执行存储器存取操作的一或多个存储器存取请求。存储器存取请求可包含待在执行存储器存取操作时存取的单元的存储器地址。
各种存储器存取电路在此类存储器存取操作期间使用,并且通常可包含例如行和列解码器、电荷泵电路、信号线驱动器、I/O控制单元910、数据寄存器916和高速缓存寄存器924等电路。可通过使用各种信号线,例如,全局字线(GWL)、局部字线(LWL)和位线(BL),存取存储器阵列914中的存储器单元。存储器单元可为非易失性存储器单元,例如NAND或NOR快闪单元、相变存储器单元,或通常可为任何类型的存储器单元。存储器单元可为被配置成存储一位数据的数据的单层级单元。存储器单元也可为被配置成存储多于一位数据的数据的多层级单元。
一般来说,命令、地址信息和写入数据可作为通过耦合I/O控制单元910和存储器阵列914的各种总线传输的顺序I/O的集合而提供到存储器阵列914。DQS信号(例如,在DQS引脚处)可用于提供定时信息以用于将数据传送到存储器阵列914或从存储器阵列914传送数据。耦合到I/O控制单元910的地址寄存器可由待暂时存储的I/O控制单元910提供地址信息。
图10为根据本文中所描述的实例的方法的示意性图示。可使用例如存储器装置904的处理器906来执行示例方法1000,所述处理器当从存储器控制器902获得存储器命令时执行可执行指令。在一些实例中,方法1000可完全或部分地由存取逻辑908实施。举例来说,框1002-1006中所描述的操作可作为计算机可执行指令存储在可由处理器906存取的计算机可读媒体中。举例来说,可执行指令可存储在存储器阵列914自身处,并且由处理器906的I/O控制单元910检索以执行用于执行方法1000的可执行指令。
示例方法1000可以框1002开始,所述框开始方法1000的执行且包含在存取逻辑处获得存储器命令,所述存储器命令包括与多个存储器区中的特定存储器区相关联的物理存储器地址和所提供存取代码。在示例实施方案中,存储器装置904可经由存储器总线918从存储器控制器902获得存储器命令,所述存储器命令包含用于存储器阵列914的存储器区的存取代码。因此,处理器906可获得存储器命令以供由存取逻辑908认证。
框1002可后接框1004。在框1004中,方法进一步包含在存取逻辑处将所提供存取代码与存储在高速缓存寄存器中的存取代码进行比较以确定存取代码匹配。在示例实施方案中,存取逻辑908可将存储器命令的所获得存取代码与所存储存取代码进行比较。举例来说,用于存储器阵列914的区的存取代码可存储在高速缓存寄存器924中。可比较存取代码,如由存取逻辑908所实施,直到存在所匹配存取代码。根据所匹配存取代码,存取逻辑908将指示提供到处理器906。一旦获得所匹配存取代码,方法1000的流程前进到框1006。
框1004可后接框1006。在框1006中,方法进一步包含响应于匹配确定,将物理存储器地址提供到耦合到存储器阵列的I/O控制单元。在示例实施方案中,基于所述认证指示,存取逻辑908可将物理存储器地址提供到I/O控制单元910以用于存取存储器阵列914的存储器区。存储器区对应于所匹配的存取代码(例如,在来自存储器控制器902的存储器命令中获得的存取代码)。存取代码匹配的存储器区也是存储器阵列914中的存储器命令的物理存储器地址经存取的区。因此,方法1000可促进对产生存取代码所针对的存储器区的安全存取。方法1000可在框1006完成之后结束。
包含在所描述示例方法1000中的框是出于说明的目的。在一些实施例中,这些框可以不同次序执行。在一些其它实施例中,可消除各种框。在又其它实施例中,各种框可被划分成额外框、以其它框补充或一起组合为更少的框。预期这些具体框的其它变体,包含框的次序的改变、框的内容拆分或组合成其它框的改变等。
虽然已在使用所配给密钥和/或计数值来产生用于存储器装置的区的存取代码的上下文中描述图5-10,但可了解,存储器控制器的认证逻辑(例如,存储器控制器502的认证逻辑504)或存储器装置的存取逻辑(例如,存储器装置510的存取逻辑512)可利用额外参数来产生用于存储器装置的存储器区的存取代码。在使用关于图1A-4所描述的系统和方法的方面的示例实施方案中,认证逻辑504还可结合或替代于所配给密钥和计数值使用存储器地址作为认证流密码的额外参数(例如,作为初始化向量)以产生存取代码。举例来说,认证流密码可产生第一存取代码以用作存储器控制器502和存储器装置510的所配给密钥。因此,用于存储器装置的存储器区的所产生存取代码还可部分地基于存储器地址请求中的存储器地址。在示例实施方案中,存储器控制器502和存储器装置510可使用存储器存取请求中的存储器地址来产生用于需要额外安全性的具体存储器存取请求的存取代码,例如,使得仅在存储器地址自身包含在存储器存取请求中时存取存储器地址处的待存取的数据。因此,关于图1A-4所描述的系统和方法的实例可用于产生用于存储器装置的存储器区的存取代码,以有利地提供关于在存储器装置中的存储器区的具体存储器地址处存取的数据的额外安全性。关于图1A-4所描述的系统和方法的实例可例如用于产生图5A的存取代码508和/或存取代码516。
上文阐述某些细节以提供对所描述实例的充分理解。然而,所属领域的技术人员将明白,可在不具有这些特定细节的情况下实践所述实例。本文中结合附图的描述描述了示例配置,并且不表示可实施或在权利要求书的范围内的所有实例。本文中可使用的术语“示例性”和“实例”意谓“充当实例、例子或说明”,并且不“优选于”或“优于其它实例”。出于提供对所描述技术的理解的目的,具体实施方式包含具体细节。然而,可在不具有这些具体细节的情况下实践这些技艺。在一些例子中,以框图形式展示众所周知的结构和组件,以免混淆所描述实例的概念。
可使用多种不同技艺和技术中的任一个来表示本文中所描述的信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文中所描述的功能的任何组合来实施或执行结合本公开描述的各种说明性块和模块。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合(例如,DSP与微处理器的组合、多个微处理器、结合DSP核心的一或多个微处理器,或任何其它此类配置)。
本文中所描述的功能可以硬件、由处理器执行的软件、固件或其任何组合实施。如果以由处理器执行的软件实施,则功能可作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体包含非暂时性计算机存储媒体和通信媒体两者,所述通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。非暂时性存储媒体可为可由通用或专用计算机存取的任何可用媒体。借助于实例而非限制,非暂时性计算机可读媒体可包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、或光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构形式的所要程序代码构件且可由通用或专用计算机或通用或专用处理器存取的任何其它非暂时性媒体。
同样,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技艺从网站、服务器或其它远程源传输软件,则所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技艺包含在媒体的定义中。以上的组合还包含在计算机可读媒体的范围内。
其它实例和实施方案在本公开和所附权利要求书的范围内。举例来说,由于软件的本质,上文所描述的功能可使用由处理器执行的软件、硬件、固件、硬连线或这些中的任一个的组合来实施。实施功能的特征还可物理上位于各种位置处,包含经分布以使得功能的各部分在不同物理位置处实施。
同样,如本文中(包含在权利要求书中)所使用,如在项列表(例如,以例如“中的至少一个”或“中的一或多个”的短语开头的项列表)中所使用的“或”指示包含性列表,使得例如A、B或C中的至少一个的列表意谓A或B或C或AB或AC或BC或ABC(即,A和B和C)。同样,如本文中所使用,短语“基于”不应解释为指代封闭条件集合。举例来说,在不脱离本公开的范围的情况下,描述为“基于条件A”的示例性步骤可基于条件A和条件B两者。换句话说,如本文中所使用,短语“基于”应以相同方式解释为短语“至少部分地基于”。
从前述内容应了解,尽管本文已出于说明的目的描述具体实例,但可进行各种修改,同时仍保持所要求技艺的范围。提供本文中的描述以使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将易于了解对本公开的各种修改,并且本文中所定义的一般原理可应用于其它变体而不脱离本公开的范围。因此,本公开不限于本文中所描述的实例和设计,而是被赋予与本文中所公开的原理和新颖特征一致的最宽范围。
- 电子存储器设备和用于存取存储器单元的方法
- 包含存储器块之间的共享选择栅极连接件的3D存储器装置
- 在存储器单元与导电存取线之间包括无源材料的半导体装置,及相关电子装置
- 用于从存储器位胞元读取数据的存储器系统和方法
- 存储系统及用于其的存储器模块和半导体存储器件
- 包含存取存储器且使用经验证流密码来产生存取代码的实例的存储器系统和装置
- 在系统逻辑器件中使用随机存取存储器来优化计算机系统中的数据流的方法和装置