公开/公告号CN116583830A
专利类型发明专利
公开/公告日2023-08-11
原文格式PDF
申请/专利权人 微软技术许可有限责任公司;
申请/专利号CN202180084268.6
申请日2021-12-02
分类号G06F12/14(2006.01);
代理机构北京市金杜律师事务所 11256;北京市金杜律师事务所 11256;
代理人李辉;辛鸣
地址 美国华盛顿州
入库时间 2024-01-17 01:22:22
法律状态公告日
法律状态信息
法律状态
2023-08-29
实质审查的生效 IPC(主分类):G06F12/14 专利申请号:2021800842686 申请日:20211202
实质审查的生效
2023-08-11
公开
国际专利申请公布
技术领域
本公开涉及管理易失性和非易失性字节可寻址存储器层之间的数据的通信的系统、方法和设备。
背景技术
常规的计算机系统主要利用两个种类的可写数据存储介质:除非正在被主动刷新否则丢失其内容的易失性字节可寻址存储器(例如,动态随机存取存储器或DRAM)、以及即使在没有电能的情况下也保持其内容的非易失性块可寻址(例如,512字节、4k字节等的块)存储设备,诸如硬盘驱动器(HDD),固态驱动器(SSD)等。通常,易失性字节可寻址存储器的特征在于比非易失性块可寻址存储设备低的访问延迟和高的带宽。在操作中,计算机系统通常依赖于易失性字节可寻址存储器作为存储与执行代码相关联的运行时数据的系统随机存取存储器(RAM),并且期望这一系统RAM在计算机系统被断电或重新启动时被清除,并且计算机系统通常依赖于非易失性块可寻址存储设备用于长期持久数据存储,并且有时作为用于在可用系统RAM短缺时临时存储数据(例如,冷存储器页面)的地方。
虽然易失性DRAM在历史上一直是可用字节可寻址存储器的主要形式,但最近的硬件开发已经产生了实用形式的非易失性字节可寻址存储器。各种形式的非易失性字节可寻址存储器被称为持久存储器(PMEM)或非易失性随机存取存储器(NVRAM),并且示例技术包括相变存储器(PCM)、铁电随机存取存储器(FeRAM)、磁阻随机存取存储器(MRAM)和电阻随机存取存储器(ReRAM)。与诸如DRAM的易失性字节可寻址存储器不同,非易失性字节可寻址存储器在没有电源的情况下不会丢失其内容。虽然性能特性各不相同,但非易失性字节可寻址存储器技术的延迟和带宽通常介于易失性字节可寻址存储器(例如,DRAM)与非易失性块可寻址存储设备(例如,HDD、SSD等)的延迟和带宽之间。此外,一些非易失性字节可寻址存储器技术的每单位容量的成本小于DRAM。
发明内容
由于非易失性字节可寻址存储器(例如,PMEM、NVRAM等)的性能和成本特性,最近的研究和开发关注于扩展系统RAM的概念,以包括非易失性字节可寻址存储器和易失性字节可寻址存储器(例如,DRAM)的组合。一些技术使得启发应用(enlightened application)能够发现非易失性字节可寻址存储器池的存在,并且请求从该池向应用的存储器空间中的直接存储器分配,以用于在应用认为合适时使用。其他技术利用非易失性字节可寻址存储器池,以通过将高速缓存的存储器数据的部分从系统RAM自动卸载到非易失性字节可寻址存储器来透明地提高存储器管理和应用性能(例如,作为丢弃高速缓存的存储器数据或将高速缓存的存储器数据分页到基于块的设备的备选)。
然而,由于它们是非易失性的,被存储在非易失性字节可寻址存储器上的数据在系统重新启动/重新引导和断电时幸存。这可能会违反开发应用时的预期,即,如果电源中断(例如,当系统被重新启动、重新引导或断电时;如果RAM硬件被物理移除等),则系统RAM的内容将被清除,并且因此,在系统RAM中存储敏感数据是相对安全的。因而,大多数应用因此将数据放置在系统RAM中,并且假定这些数据不会被“静止(at rest)”地存储,并且因此没有必要对这些数据应用密码保护。
本文中的至少一些实施例操作以使得能够与系统RAM相结合来使用非易失性字节可寻址存储器,同时确保被存储在非易失性字节可寻址存储器上的数据受到密码保护。在实施例中,当数据的一部分要从易失性字节可寻址存储器被复制到非易失性字节可寻址存储器时,存储器管理器考虑与该数据相关联的密码策略、以及非易失性字节可寻址存储器的密码能力(如果有的话),并且如果非易失性字节可寻址存储器本身没有提供足够的密码保护,则使用软件加密来确保被放置在非易失性字节可寻址存储器上的数据根据密码策略受到保护。这样,存储器管理器智能地操作以在非易失性字节可寻址存储器的密码能力足够时利用非易失性字节可寻址存储器的密码能力、并且在非易失性字节可寻址存储器的密码能力不足时使用软件加密来保护数据来保护从易失性可寻址存储器被复制到非易失性字节可寻址存储器的数据。
在一些实施例中,方法、系统和计算机程序产品在对易失性和非易失性字节可寻址存储器的分层时确保数据安全性。在实施例中,对易失性和非易失性字节可寻址存储器分层表示布置这些存储器,从而使得易失性字节可寻址存储器是主存储器层,并且非易失性字节可寻址存储器是辅存储器层。在这种布置中,应用与主存储器层(即,易失性字节可寻址存储器)交互,而操作系统(OS)将高速缓存数据从主存储器层卸载到辅存储器层(即,非易失性字节可寻址存储器)。这些实施例提供计算环境(或在其内操作),该计算环境包括处理器、字节可寻址并且易失性的第一存储器和字节可寻址并且非易失性的第二存储器,并且这些实施例操作以在将数据从第一存储器复制到第二存储器时确保数据安全性。这些实施例标识被存储在第一存储器中的、要被复制到第二存储器的高速缓存数据的一个或多个部分。高速缓存数据的每个部分与用于将高速缓存数据的部分存储在非易失性存储装置上的对应的一组密码要求相关联。这些实施例还标识第二存储器的一组密码能力。针对要被复制到第二存储器的高速缓存数据的一个或多个部分中的每个部分,这些实施例执行以下之一:(i)当对应的该组密码要求中的每个要求被该组密码能力满足时,将高速缓存数据的部分复制到第二存储器,同时依赖于第二存储器来对高速缓存数据的部分加密,或者(ii)当对应的该组密码要求中的至少一个要求未被该组密码能力满足时,对高速缓存数据的部分加密以生成高速缓存数据的加密部分并且将高速缓存数据的加密部分复制到第二存储器。
提供本发明内容是为了以简化的形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在确定所要求保护的主题的关键特征或基本特征,也不旨在用作确定所要求保护主题的范围的辅助。
附图说明
为了描述能够获取本发明的上述和其他优点和特征的方式,将通过参考附图中所示的本发明的具体实施例来对上文简要描述的本发明进行更具体的描述。理解这些附图仅描述了本发明的典型实施例,并且因此不应当被认为是对其范围的限制,将使用附图以附加的具体性和细节来描述和解释本发明,在附图中:
图1图示了促进在对易失性和非易失性字节可寻址存储器分层时确保数据安全性的示例计算机架构;
图2图示了分层存储器管理器的示例;
图3A图示了用于在将数据从字节可寻址并且易失性的第一存储器复制到字节可寻址并且非易失性的第二存储器时确保数据安全性的示例方法的流程图;以及
图3B图示了用于在将数据从字节可寻址并且易失性的第一存储器复制到字节可寻址并且非易失性的第二存储器时确保数据安全性的示例方法的流程图。
具体实施方式
图1图示了促进在对易失性和非易失性字节可寻址存储器分层时确保数据安全性的示例计算机架构100。如所示,计算机架构100包括计算机系统101,计算机系统101又包括处理器102(即,一个或多个处理器)、易失性字节可寻址存储器103(例如,DRAM)、非易失性字节可寻址存储器104(例如,PMEM、NVRAM等)和非易失性块可寻址存储装置105(例如,HDD、SSD等),它们中的每个通过总线106(或多个总线)被互连。
通常,计算机系统101被配置为以分层方式管理易失性字节可寻址存储器103和非易失性字节可寻址存储器104,其中易失性字节可寻址存储器103是主存储层,并且非易失性字节可寻址存储器104是辅存储器层。特别地,图1示出了非易失性块可寻址存储装置105包括与OS 111对应的计算机可执行指令和数据结构,OS 111包括分层存储器管理器112。在实施例中,分层存储器管理器112将易失性字节可寻址存储器103作为系统RAM呈现给应用113,这将是常规的,这表示应用113的执行导致高速缓存数据107的部分108(例如,部分108a至部分108n)被存储在易失性字节可寻址存储器103中。
在实施例中,该高速缓存数据107包括已经被这些应用113使用的存储器页面(例如,作为部分108),包括例如从非易失性块可寻址存储装置105加载到应用的存储器空间中的数据。在一个示例性实施例(本文中被称为“修剪存储器”实施例)中,高速缓存数据107包括存储器页面(例如,作为部分108),这些存储器页面在应用113的执行期间的某个时刻已经被应用113访问,但是后来已经从这些应用的工作集被修剪或取消映射。在修剪存储器实施例中,高速缓存数据107包括备用列表、非活动队列等,其中存储器页面(例如,部分108)从最近访问(即,最热)到最近访问最少(即,最低)进行布置。常规地,如果应用稍后访问这些存储器页面,则这些存储器页面可以再次被重新映射到应用的工作集,或者当需要无法从空闲存储器完成的存储器分配时,这些存储器页面被丢弃并且重新调节用途(例如,从最冷的存储器页面开始)到活动存储器。
在另一示例实施例(本文中被称为“存储器分页”实施例)中,高速缓存数据107包括已经被应用113访问并且仍然被映射到这些应用的工作集的存储器页面(例如,作为部分108)。常规地,当易失性字节可寻址存储器103中的可用存储器上存在压力时,这些存储器页面可以从非易失性块可寻址存储装置105(例如,作为页面文件或页面分区)被调出以供以后访问;在很多实现中,该页面文件/分区在非易失性块可寻址存储装置105上以块级别加密(例如,使用BITLOCKER、FILEVAULT等),从而在被调出的存储器页面被静止存储时保护被调出的存储器页面。
值得注意的是,各种实施例个体地实现修剪存储器实施例,个体地实现存储器分页实施例,或者并发地实现修剪存储器实施例和存储器分页实施例。
在实施例中,分层存储器管理器112使用非易失性字节可寻址存储器104通过将高速缓存数据107的部分108从易失性字节可寻址存储器103卸载到非易失性字节可寻址存储104来自动并且透明地(即,到应用113,并且甚至到OS 111的部分)改进存储器管理和应用性能(表示为被存储在非易失性字节可寻址存储器104中的高速缓存数据109的部分,包括部分110a至部分110n)。
继续修剪存储器实施例,代替当需要从空闲存储器以其他方式无法完成的存储器分配时将冷存储器页面丢弃并且重新调节用途,分层存储器管理器112将这些冷存储器页面移动到非易失性字节可寻址存储器104。通过将冷存储器页面移动到非易失性字节可寻址存储器104,分层存储器管理器112可以将这些存储器页面视为保持“驻留”在系统RAM中(而不是像以前那样被丢弃)。此外,如果稍后需要将存储器页面映射到应用的工作集,则可以使用计算上相对便宜的处理器绑定的基于字节的存储器复制操作将存储器页面从非易失性字节可寻址存储器104快速恢复到易失性字节可寻址存储器103。
继续存储器分页实施例,代替将存储器页面分页到非易失性块可寻址存储装置105上的页面文件/分区(在块级别发生的计算上相对昂贵的操作),分层存储器管理器112使用字节级操作将这些存储器页面移动到非易失性字节可寻址存储器104。同样,如果稍后需要将这些存储器页面映射到应用的工作集,则可以使用计算上相对便宜的处理器绑定的基于字节的存储器复制操作将这些存储器页面从非易失性字节可寻址存储器104快速恢复到易失性字节可寻址存储器103。在一些实现中,非易失性块可寻址存储装置105被用作位于易失性字节可寻址存储器103与非易失性块可寻址存储装置105之间的回写高速缓存。这表示,当存储器页面被分页到非易失性块可寻址存储装置105而不是非易失性块可寻址存储装置105时,该操作可以在不完成相对较慢的基于块的盘操作的情况下完成,并且存储器页面然后可以被延迟地写入非易失性块可寻址存储装置105。
值得注意的是,应用通常在以下假定下操作:系统RAM(即,易失性字节可寻址存储器103)是易失性的,并且因此,如果系统RAM的电源中断(例如,当系统重新启动、重新引导或断电时;如果RAM硬件被物理移除等),则系统RAM的内容将被清除。因此,大多数应用将数据放置在系统RAM中,并且假定这些数据不会被“静止”存储,并且因此没有必要对这些数据应用密码保护。然而,由于由非易失性字节可寻址存储器104存储的数据在功率损失之后仍然有效,如果分层存储器管理器112将高速缓存数据107的部分108卸载到非易失性字节可寻址存储器104(使用修剪存储器实施例或存储器分页实施例中的任一个),则分层存储器管理器112可能违反这些假定,并且使恶意方可以访问潜在的机密数据。因此,在本文中的实施例中,分层存储器管理器112被配置为智能地操作以保护从易失性字节可寻址存储器103复制到非易失性字节可寻址存储器104的数据。
为了说明分层存储器管理器112的操作,图2详述图1的分层存储器管理程序112的另外的内部组件。如所示,分层存储器管理器112包括高速缓存部分标识组件201、密码要求标识组件202、密码能力发现组件203、高速缓存部分保护组件204、软件加密组件205、数据移动组件206、密码能力应用程序编程接口(API)207、密码策略API 208和密码策略存储库209中的一个或多个,它们每个表示分层存储器管理器112根据本文中描述的各种实施例而实现的功能。将理解的是,所描绘的包括其是否和布置的组件仅作为描述本文中描述的分层存储器管理器112的各种实施例的辅助而呈现,并且这些组件不限于软件和/或硬件如何实现本文中描述的分层存储器管理器112或其特定功能的各个实施例。
高速缓存部分标识组件201标识被存储在易失性字节可寻址存储器103中的高速缓存数据107的一个或多个部分108,这些部分要被复制到非易失性字节可寻址存储器104(即,作为高速缓存数据109的部分110中的一个或多个)。在一些实施例中,部分108包括存储器页面(例如,作为部分108),这些存储器页面在应用113的执行期间的某个时刻已经被应用113访问,但是后来已经从这些应用的工作集(即,修剪存储器实施例)被修剪或取消映射。在附加或替代实施例中,部分108包括已经被应用113访问并且仍然被映射到这些应用的工作集的存储器页面(例如,作为部分108)(即,存储器分页实施例)。
密码要求标识组件202确定适用于保护由高速缓存部分标识组件201标识的一个或多个部分108的一个或多个密码要求。在实施例中,这些密码要求包括密码密钥寿命(例如,直到系统重新引导的时间长度等)、密码密钥长度(例如,128位、192位、256位等)、密码算法(例如,AES、Triple DES、Twofish等)等。在一些实施例中,密码要求标识组件202标识适用于从易失性字节可寻址存储器103复制到非易失性字节可寻址存储器104的所有数据的单独的一组密码要求。
在其他实施例中,密码要求标识组件202标识多组密码要求,其中每组适用于从易失性字节可寻址存储器103复制到非易失性字节可寻址存储器104的数据的子集。例如,在图2中,密码策略存储库209表示存储不同组密码要求的分层存储器管理器112的功能,并且这些不同组密码要求由密码要求标识组件202访问。例如,在一些实施例中,密码策略存储库209存储用于应用113中的不同应用的不同组密码要求,并且因此密码要求标识组件202基于这些部分108对应于应用113中的哪些来标识用于部分108中的不同部分的不同组密码要求。在一些实施例中,如由密码策略API 208所表示的,分层存储器管理器112提供API,以使得应用能够指定密码要求。
如果存在,则密码能力发现组件203发现非易失性字节可寻址存储器104的一个或多个基于硬件的密码能力(如果有的话)。在一些实现中,非易失性字节可寻址存储器104包括(例如,通过存储器控制器)自动加密复制到非易失性字节可寻址存储器104的数据的某种能力。因此,在一些实施例中,密码能力发现组件203发现非易失性字节可寻址存储器104的一组一个或多个密码能力。在实施例中,这些密码能力包括密码密钥寿命(例如,直到系统重新引导的时间长度等)、密码密钥长度(例如,128位、192位、256位等)、密码算法(例如,AES、Triple DES、Twofish等)等。在其他实现中,非易失性字节可寻址存储器104缺乏任何自动加密复制到非易失性字节可寻址存储器104的数据的能力。因此,在一些实施例中,密码能力发现组件203没有发现非易失性字节可寻址存储器104的密码能力(即,密码能力的空集)。
高速缓存部分保护组件204考虑高速缓存数据107的哪个(哪些)部分108被高速缓存部分标识组件201标识、哪组(哪些组)密码要求被密码要求标识组件202标识为与所标识的(多个)部分108相关、以及密码能力发现组件203标识了哪个(哪些)密码能力(如果有的话)。高速缓存部分保护组件204然后确定如何确保当部分108被复制到非易失性字节可寻址存储器104时与由高速缓存部分保护组件204标识的每个部分108相关联的一组密码要求得到满足。
在实施例中,当针对给定部分108的每个密码要求被非易失性字节可寻址存储器104的密码能力满足时,数据移动组件206将该部分108复制到非易失性字节可寻址存储器104。在这些实施例中,高速缓存部分保护组件204依赖于非易失性字节可寻址存储器104本身来在持久地存储部分108之前对部分108加密。在这些实施例中,分层存储器管理器112提供了一种技术效果,即,在利用非易失性字节可寻址存储器104的基于性能良好硬件的密码能力的同时,当以满足对该数据的密码要求的方式从易失性字节可寻址存储器103复制数据时,确保该数据在静止时受到保护。
在实施例中,当针对给定部分108的至少一个密码要求未被非易失性字节可寻址存储器104的密码能力满足时,软件加密组件205使用处理器102对该部分108加密,然后数据移动组件206将该加密部分108复制到非易失性字节可寻址存储器104。虽然本文中被称为“软件加密”,但在一些实施例中,软件加密组件205依赖于一个或多个硬件加密加速器,诸如加密处理器扩展(例如,INTEL AES-NI(商标))。在这些实施例中,分层存储器管理器112提供了一种技术效果,即,即使在非易失性字节可寻址存储器104缺乏任何密码能力的情况下,或者当非易失性字节可寻址存储器104缺乏足够的密码能力时,当以满足对该数据的密码要求的方式从易失性字节可寻址存储器103复制数据时,确保该数据在静止时受到保护。
在一些实施例中,分层存储器管理器112还使得启发应用能够请求非易失性字节可寻址存储器104的直接分配。因此,分层存储器管理器112被示出为可能包括密码能力API组件207。在实施例中,当被查询时,密码能力API组件207返回使用密码能力发现组件203获取的非易失性字节可寻址存储器104的密码能力(如果有的话)。在实施例中,启发应用被允许基于这些密码能力来决定是否要请求存储器分配。在其他实施例中,如果密码能力不满足特定一组密码要求,则分层存储器管理器112拒绝给启发应用的分配。
下面的讨论现在涉及很多方法和方法动作。尽管方法动作可以按特定顺序讨论,或者可以在流程图中示出为按特定顺序发生,但除非特别说明,否则不需要特定顺序,或者因为一个动作依赖于另一动作在该动作执行之前完成而需要特定顺序。
图3A图示了用于在将数据从字节可寻址并且易失性的第一存储器复制到字节可寻址并且非易失性的第二存储器时确保数据安全性的示例方法300a的流程图。将针对计算机架构100的组件和数据来描述方法300a。
方法300a包括动作301,即,标识与(多个)密码要求相关联并且要被复制到非易失性字节可寻址存储器的易失性字节可寻址存储器中的(多个)高速缓存部分。在一些实施例中,动作301包括标识被存储在第一存储器中的、要被复制到第二存储器的高速缓存数据的一个或多个部分,高速缓存数据中的每个部分与用于将高速缓存数据的部分存储在非易失性存储装置上的对应的一组密码要求相关联。在一个示例中,高速缓存部分标识组件201标识被存储在易失性字节可寻址存储器103中的高速缓存数据107的一个或多个部分108。如修剪存储器实施例中讨论的,高速缓存数据的一个或多个部分可以包括备用列表中的一个或多个修剪存储器页面,其中(多个)最冷存储器页面被复制到第二存储器(即,非易失性字节可寻址存储器104)而不是被丢弃。如在存储器分页实施例中讨论的,高速缓存数据的一个或多个部分可以包括复制到被存储在第二存储器(即,非易失性字节可寻址存储器104)上的页面文件的一个或多个存储器页面。
如密码策略存储库209所表示的,这些部分108与一组或多组密码要求相关联,诸如密码密钥寿命、密码密钥长度或密码算法中的一个或多个,并且由密码要求标识组件202可标识。在一些实施例中,高速缓存数据的每个部分与公共的一组密码要求相关联。在这些实施例中,密码策略存储库209存储适用于所有高速缓存数据107的单独的一组密码要求。在其他实施例中,高速缓存数据107的不同部分108与不同组密码要求相关联,诸如在每个应用的基础上,使得高速缓存数据的一个或多个部分包括(i)与对应的第一组密码要求相关联的高速缓存数据的第一部分,以及(ii)与对应的第二组密码要求相关联的高速缓存数据的第二部分。
在实施例中,方法300a包括动作302,即,标识非易失性字节可寻址存储器的密码能力。在一些实施例中,动作302包括标识第二存储器的一组密码能力。在一个示例中,密码能力发现组件203发现非易失性字节可寻址存储器104的密码能力(如果有的话)。在实施例中,密码能力包括密码密钥寿命、密码密钥长度或密码算法中的一项或多项。在非易失性字节可寻址存储器104缺乏任何密码能力的实施例中,在动作302中,该组密码能力是空集。
在实施例中,方法300a包括动作303,即,针对每个高速缓存部分,确定密码能力是否满足每个密码要求。在一些实施例中,动作303包括对于要被复制到第二存储器的高速缓存数据的一个或多个部分中的每个部分,确定对应的该组密码要求中的每个要求是否被该组密码能力满足。在一个示例中,针对每个高速缓存部分,高速缓存部分保护组件204确定针对高速缓存部分的(多个)密码要求是否被非易失性字节可寻址存储器104的密码能力满足。如所示,动作303是决策块,该决策块包括当对应的该组密码要求中的至少一个要求未被该组密码能力满足时到动作304和动作305的“否”路径、或者当对应的该组密码需求中的每个要求被该组密码能力满足时到动作306的“是”路径。因此,基于动作303中的确定结果,方法300a采取到动作304和动作305的“否”路径或到动作306的“是”路径中的一个。值得注意的是,通过根据非易失性字节可寻址存储器104的密码能力采取不同路径,动作303促进在非易失性字节可寻址存储器104的高效硬件密码能力足够时利用这些密码能力的创造性步骤,同时确保当非易失性字节可寻址存储器104的硬件密码能力不足以满足该策略时根据该策略来保护数据。
当遵循来自动作303的“否”路径时(即,当对应的该组密码要求中的至少一个要求未被该组密码能力满足时),方法300a包括动作304,即,使用软件来对高速缓存部分加密。在一些实施例中,动作304包括对高速缓存数据的部分加密以生成高速缓存数据的加密部分。在一个示例中,高速缓存部分保护组件204指示软件加密组件205使用处理器102加密高速缓存部分。因此,在实施例中,动作304包括在处理器处执行一个或多个软件指令以加密高速缓存数据的部分。如所解释的,在实施例中,软件加密可以利用硬件加速器。因此,在实施例中,一个或多个软件指令利用处理器的硬件加密加速能力。当遵循来自动作303的“否”路径时,方法300a还包括动作305,即,将加密的高速缓存部分复制到非易失性字节可寻址存储器。在一些实施例中,动作305包括将高速缓存数据的加密部分复制到第二存储器。在一个示例中,数据移动组件206将加密的高速缓存部分(即,其在动作304中生成)复制到非易失性字节可寻址存储器104。值得注意的是,与将数据复制到非易失性块可寻址存储装置105不同,在实施例中,在动作305中将高速缓存数据的加密部分复制到第二存储器是处理器绑定的存储器复制操作。在动作304和305中,分层存储器管理器112提供了一种技术效果,即,即使在非易失性字节可寻址存储器104缺乏任何密码能力的情况下,或者当非易失性字节可寻址存储器104缺乏足够的密码能力时,当以满足对该数据的密码要求的方式从易失性字节可寻址存储器103复制数据时,确保该数据在静止时受到保护。
备选地,当遵循来自动作303的“是”路径时(即,当对应的该组密码要求中的每个要求被该组密码能力满足时),方法300a包括动作306,即,将高速缓存部分复制到非易失性字节可寻址存储器,依赖于非易失性字节可寻址存储器的密码能力来保护高速缓存部分。在一些实施例中,动作306包括将高速缓存数据的部分复制到第二存储器,同时依赖于第二存储器来对高速缓存数据的部分加密。在一个示例中,数据移动组件206将未加密的高速缓存部分复制到非易失性字节可寻址存储器104,依赖于非易失性字节可寻址存储器104来对高速缓存部分加密。值得注意的是,与将数据复制到非易失性块可寻址存储装置105不同,在实施例中,在动作306中将高速缓存数据的部分复制到第二存储器是处理器绑定的存储器复制操作。在动作306中,分层存储器管理器112提供了一种技术效果,即,在利用非易失性字节可寻址存储器104的基于性能良好硬件的密码能力的同时,当以满足对该数据的密码要求的方式从易失性字节可寻址存储器103复制数据时,确保该数据在静止时受到保护。
值得注意的是,在高速缓存数据107的不同部分108与不同组密码要求相关联的实施例中,诸如在每个应用的基础上,方法300a可以对一些高速缓存部分采取来自动作303的“否”路径,而对其他高速缓存部分采取来自动作303的“是”路径。例如,在一些实施例中,方法300a包括以下两者:(i)基于对应的第一组密码要求中的至少一个要求被该组密码能力满足,将高速缓存数据的第一部分复制到第二存储器,同时依赖于第二存储器来对高速缓存数据的第一部分加密,以及(ii)基于对应的第二组密码要求中的至少一个要求未被该组密码能力满足,对高速缓存数据的第二部分加密以生成高速缓存数据的加密的第二部分,并且将高速缓冲数据的加密的第二部分复制到第二存储器。
如结合图2所述,分层存储器管理器112的一些实施例包括使得启发应用能够发现非易失性字节可寻址存储器104的能力的密码能力API组件207。因此,在一些实施例中,方法300a还包括向在处理器处执行的至少一个应用呈现第一API,第一API标识该组密码能力的至少一部分。此外,如结合图2所述,分层存储器管理器112的一些实施例包括使得应用能够指定其密码要求的密码策略API 208。因此,在实施例中,方法300a还包括向在处理器处执行的至少一个应用呈现第二API,第二API启用对至少一组密码要求的规定。
值得注意的是,在图3A中,动作302、303和306以虚线示出,以表明在一些实施例中,这些动作是可选的或被省略。也就是说,在一些实施例中,方法300a在非易失性字节可寻址存储器104缺乏必要的(或任何)密码能力的假定下操作,并且总是执行软件加密。在这些实施例中,分层存储器管理器112可以省略密码能力发现组件203(如图2中的虚线所示)。为了更明确地说明本实施例,图3B图示了用于在将数据从字节可寻址并且易失性的第一存储器复制到字节可寻址并且非易失性第二存储器时确保数据安全性的示例方法300b的流程图。图3B,方法300b包括方法300a的动作301、304和305,但缺少动作302、303和306。
因此,本文中的实施例操作以使得能够在连接系统RAM中使用非易失性字节可寻址存储器,同时确保被存储在非易失性字节可寻址存储器上的数据受到密码保护。当数据的一部分要从易失性字节可寻址存储器复制到非易失性字节可寻址存储器时,实施例考虑与该数据相关联的密码策略、以及非易失性字节可寻址存储器的密码能力(如果有的话),并且如果非易失性字节可寻址存储器本身没有提供足够的密码保护,则使用软件加密来确保放置在非易失性字节可寻址存储器上的数据根据密码策略受到保护。这样,实施例智能地操作以在非易失性字节可寻址存储器的密码能力足够时利用非易失性字节可寻址存储器的密码能力并且在非易失性字节可寻址存储器的密码能力不足时使用软件加密来保护数据来保护从易失性可寻址存储器复制到非易失性字节可寻址存储器的数据。
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但应当理解,所附权利要求中限定的主题不一定限于以上描述的特征或动作、或上述动作的顺序。相反,所描述的特征和动作被公开作为实现权利要求的示例形式。
本发明的实施例可以包括或利用专用或通用计算机系统,该系统包括计算机硬件,例如一个或多个处理器和系统存储器,如下面更详细地讨论的。本发明范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质是计算机存储介质。携带计算机可执行指令和/或数据结构的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质是存储计算机可执行指令和/或数据结构的物理存储介质。物理存储介质包括计算机硬件,诸如RAM、ROM、EEPROM、固态驱动器(“SSD”)、闪存、相变存储器(“PCM”)、光盘存储、磁盘存储或其他磁存储设备、或者可以用于以计算机可执行指令或数据结构的形式存储程序代码的(多个)任何其他硬件存储设备,该程序代码可以由通用或专用计算机系统访问和执行以实现本发明公开的功能。
传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以用于以计算机可执行指令或数据结构的形式携带程序代码,并且可以由通用或专用计算机系统访问。“网络”被定义为一个或多个数据链路,该数据链路使得能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据。当信息通过网络或另一通信连接(硬接线、无线、或硬接线或无线的组合)传输或提供给计算机系统时,计算机系统可以将该连接视为传输介质。上述各项的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码可以自动从传输介质传输到计算机存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓冲在网络接口模块(例如,“NIC”)内的RAM中,然后最终传输到计算机系统RAM和/或计算机系统处的易失性较低的计算机存储介质。因此,应当理解,计算机存储介质可以被包括在也(甚至主要)利用传输介质的计算机系统组件中。
例如,计算机可执行指令包括指令和数据,该指令和数据当在一个或多个处理器上执行时引起通用计算机系统、专用计算机系统或专用处理设备执行特定功能或功能组。例如,计算机可执行指令可以是二进制文件、诸如汇编语言等中间格式指令、或者甚至是源代码。
本领域技术人员将理解,本发明可以在具有很多类型的计算机系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程消费电子产品、网络PC、小型计算机,大型计算机、移动电话、PDA、平板电脑、寻呼机、路由器、交换机等。本发明还可以在分布式系统环境中实践,其中通过网络链接(通过硬连线数据链路、无线数据链路、或通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。因此,在分布式系统环境中,计算机系统可以包括多个组成计算机系统。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
本领域技术人员还将理解,本发明可以在云计算环境中实践。云计算环境可以是分布式的,尽管这不是必需的。当是分布式的时,云计算环境可以在一个组织内进行国际分布和/或具有跨多个组织而拥有的组件。在本说明书和以下权利要求中,“云计算”被定义为用于实现对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义并不局限于在适当部署时可以从这样的模型中获取的其他众多优点。
云计算模型可以由各种特性组成,诸如按需自助服务、广泛的网络访问、资源池、快速弹性、被测量的服务等。云计算模型也可以以各种服务模型的形式出现,例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。云计算模型也可以使用不同部署模型来部署,诸如私有云、社区云、公共云、混合云等。
一些实施例(诸如云计算环境)可以包括系统,该系统包括一个或多个主机,每个主机能够运行一个或多个虚拟机。在操作期间,虚拟机模拟操作计算系统,以支持操作系统以及可能的一个或多个其他应用。在一些实施例中,每个主机包括管理程序,该管理程序使用从虚拟机的视图中抽象的物理资源来仿真虚拟机的虚拟资源。管理程序还提供了虚拟机之间的适当隔离。因此,从任何给定虚拟机的角度来看,管理程序提供了虚拟机正在与物理资源接口的错觉,即使虚拟机仅与物理资源的外观(例如,虚拟资源)接口。物理资源的示例包括处理能力、存储器、磁盘空间、网络带宽、媒体驱动器等。
本发明可以在不偏离其基本特征的情况下以其他特定形式体现。所描述的实施例在所有方面仅被认为是说明性的,而不是限制性的。因此,本发明的范围由所附权利要求而不是由前述描述来指示。在权利要求的含义和等效范围内的所有变化都应当被包括在其范围内。当在所附权利要求中引入元素时,冠词“一个(a)”、“一个(an)”、“该(the)”和“上述(said)”旨在表示存在一个或多个元素。术语“包括(comprising)”、“包括(including)”和“具有(having)”旨在是包括性的,并且表示可以存在除所列要素之外的其他要素。
机译: 一种训练样本有效性检测方法、计算机设备及计算机非易失性存储介质
机译: 非易失性半导体存储器件,从非易失性半导体存储器件读取数据的方法以及用于将数据写入非易失性半导体存储器件的方法
机译: 非易失性半导体存储器件,用于从非易失性半导体存储器件读取数据的方法以及用于将数据写入非易失性半导体存储器件的方法