CN111625478A - 管理存储器标签的技术 - Google Patents
管理存储器标签的技术 Download PDFInfo
- Publication number
- CN111625478A CN111625478A CN202010128967.3A CN202010128967A CN111625478A CN 111625478 A CN111625478 A CN 111625478A CN 202010128967 A CN202010128967 A CN 202010128967A CN 111625478 A CN111625478 A CN 111625478A
- Authority
- CN
- China
- Prior art keywords
- memory
- page
- data
- processing system
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/653—Page colouring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据处理系统包括对子页粒度的存储器标签的支持。该数据处理系统包括至少一个核、响应于核的存储器控制器、响应于存储器控制器的随机存取存储器(RAM)以及位于存储器控制器中的存储器保护模块。存储器保护模块使得存储器控制器能够使用作为存储器地址的部分提供的存储器标签值来保护存储在基于作为存储器地址的另一部分提供的位置值的位置处的数据。该数据处理系统还包括操作系统(OS),OS当在数据处理系统中执行时通过使用存储器标签映射(MTM)对被换出的数据页内的各自子页应用存储器标签来管理将数据页从RAM换出到非易失性存储设备(NVS)。还描述其它实施例并要求其它实施例的权利保护。
Description
技术领域
一般来说,本公开涉及数据处理系统,并且尤其,涉及用于管理计算机存储器的技术。
背景技术
典型的数据处理系统包括特定大小的随机存取存储器(RAM)。然而,通过使用所谓的“虚拟存储器”,数据处理系统中的操作系统(OS)可提供比实际物理存储器更大的表观(apparent)或虚拟存储器空间。
传统OS在固定大小的块(称为“页”)的基础上组织虚拟存储器,并且OS使用页表将虚拟存储器地址映射到物理存储器地址。因此,虚拟存储器允许不同的应用使用相同的虚拟地址来访问不同的物理地址。当某个数据近来没有被访问并且针对其它数据需要存储器空间时,OS也可将该数据从RAM换出到磁盘(或其它大容量存储装置)。当OS将数据从RAM换出到磁盘时,它一次换出一个完整的数据页。
2017年12月,英特尔公司发布了题为“Intel® Architecture MemoryEncryption Technologies Specification,”(Ref:#336907-001US, Rev: 1.1)的文档(下文称为“MET规范”)。MET规范讨论了“总存储器加密”(TME),它是“利用单个短暂的密钥进行存储器加密的基线能力”。MET规范还讨论了“多密钥总存储器加密”(MKTME),它“建立在TME基础上,并增加了对多个加密密钥的支持”。因此,MKTME涉及“用于页粒度的存储器加密的多个密钥”。MKTME还涉及“对软件预备的密钥的额外支持”。
利用MKTME,数据处理系统可使用不同的密钥来加密不同的存储器页。因此,与TME相比,MKTME在更细粒度(more granular)或更细微细节的基础上提供存储器保护,因为可利用不同的密钥来保护不同的存储器页,而不是利用单个密钥来保护所有页。
本公开涉及在比MKTME更细粒度的基础上提供存储器保护的技术。
附图说明
本发明的特征和优点将根据随附权利要求、以下对一个或多个示例实施例的详细描述和对应附图中变得明显,附图中:
图1是包括用于管理存储器标签的技术的数据处理系统的示例实施例的框图。
图2是示出供图1的数据处理系统用于管理存储器标签的各种数据结构的框图。
图3A-3D呈现用于管理存储器标签的过程的示例实施例的流程图。
具体实施方式
出于本公开的目的,1024个连续字节可统称为“千字节”;1024千字节(KB)(即,1,048,576字节)可称为“兆字节”(MB);1024 MB可称为“千兆字节”(GB);依此类推是太字节(TB)、拍字节(PB)、艾字节(EB)等。各种传统的处理器支持4 KB、8 KB、64 KB、256 KB、1 MB、4 MB、16 MB、256 MB、2 GB以及甚至更高的页大小。另外,一些传统的处理器支持64位存储器地址。在64位的情况下,有可能指定多达18.4艾字节的存储器地址。然而,几乎没有任何传统的数据处理系统实际包含18.4艾字节的RAM。因此,64位地址的一些高阶位可能一直包含0。出于本公开的目的,此类位可称为“未使用”。
然而,如MET规范中所描述,数据处理系统可使用那些未使用地址位中的一个或多个来指定位置以外的数据属性。例如,数据处理系统可使用此类位来存储即将用于对存储在由地址的其它位指定的存储器位置处的数据进行加密和解码的密钥的密钥标识符(KeyID)。备选地,如下文更详细地描述,可使用未使用的位来存储其它类型的信息,以便保护存储在由地址的其它位指定的存储器位置处的数据。
本公开涉及在比页级粒度更细粒度或更细微细节的基础上提供存储器保护的技术。尤其,如下文更详细地描述,数据处理系统可使用存储器标签来为页内的不同细分部分提供多种不同类型的保护。
出于本公开的目的,用于指定位置以外的数据属性的存储器地址中的一个或多个位的序列可称为“存储器标签”、“标签段”或简称为“标签”。相比之下,存储器地址中指定存储器位置的位可称为“地址位”或“地址段”。并且,驻留在存储器标签中的值可称为“标签值”或“标签颜色”,并且驻留在地址段中的值可称为“地址值”。例如,一个2位存储器标签可支持4个不同的标签值或颜色(即,标签值0到3)。
如下文更详细地描述,存储器控制器可基于在存储器地址的标签段中指定的标签值来保护或管理驻留于在该存储器地址的地址段中指定的位置处的数据。例如,如下文更详细地描述,存储器控制器可使用标签值来检索与在存储器地址的地址段中指定的位置相关联的元数据,并且存储器控制器可基于该元数据来保护驻留在该位置处的数据。
如上文所指示,传统的OS将虚拟存储器组织成页,以便使用页表将虚拟存储器映射到物理存储器,并且一次一个页地将数据从RAM换出到磁盘。但是,处理器和存储器控制器可对比页更小的存储器段进行操作。例如,当向或从处理器高速缓存复制数据时,存储器控制器可使用比页更小的块大小。该块大小可称为“高速缓存行”。因此,当存储器控制器对高速缓存进行读写时,它可一次复制一个高速缓存行,并且每个高速缓存行可以是页大小的一部分。
出于本公开的目的,当一个页细分成(或包含)两个或更多个细分部分时,每个细分部分一般可称为“子页”。并且尤其,当子页的大小与数据处理系统中的高速缓冲存储器的高速缓存行的大小相同时,可将该子页称为“行”。出于图示的目的,本公开频繁地提到行。然而,本领域技术人员将明白,本教导也可供其它类型的子页使用。
如下文更详细地描述,数据处理系统可使用存储器标签来对物理页内的不同行提供保护。因此,数据处理系统可提供子页粒度的访问控制,因为数据处理系统在比页更小的块的基础上控制访问。并且,数据处理系统可为软件应用提供对不同的存储器块指派不同的存储器标签或颜色的能力。
在以子页粒度提供存储器保护的数据处理系统中,可利用不同的存储器标签来保护物理页的不同行。因此,可能需要来自OS和/或其它软件的某些功能性,以使得OS能够执行诸如物理页的写时复制(COW)和换入/换出(SI/SO)的内核操作。例如,OS和/或其它软件可能需要维持每个进程的存储器标签映射(MTM),以便指示哪些标签值与该进程的不同存储器行相关联。在一个实施例中,软件结合存储器分配操作将正确的标签值保存到MTM,并且软件可结合解除存储器分配的操作(诸如由“释放”功能执行的操作)从MTM去除标签值。MTM可将每个存储器标签与对应的虚拟地址、对应的物理地址或两者相关联。
如下文更详细地描述,在一个实施例或场景中,OS可使用基于软件的行处理来在较细粒度的保护的情况下读写页以便进行COW和SI/SO。换句话说,当OS内核对物理存储器的页执行COW或SI/SO规程时,OS可个别地读或写每一行,以便指定行的地址以及该行的标签值。这种方法可称为“基于软件的行处理”。尤其,OS可使用循环以利用来自MTM的正确标签值来读或写每一行,直到处理完整个物理页为止。利用基于软件的行处理,OS可正确地读写页的每一行,即使不同的行通过不同的标签进行保护。然而,基于软件的行处理可能会招致显著的性能开销。例如,如果MTM没有将标签与物理地址相关联,那么OS可能需要将每一行的物理地址转换成对应的虚拟地址,以便获得与该虚拟地址相关联的标签。
备选地,硬件可提供使得OS内核能够有效地读写页的指令,同时硬件为页内的每一行提供适当的标签值。这种方法可称为“基于硬件的行处理”。尤其,在一个实施例中,处理器支持将内容写入到具有指定的标签值的页的“write_tagged_page”指令以及读取具有适当的标签值的受保护页的“read_tagged_page”指令。基于硬件的行处理可使得数据处理系统能够直接计算即将从RAM读取或即将写入到RAM的每一行的标签,而无需将每一行的物理地址转换成虚拟地址。而是,OS可指定(a)页的物理地址和(b)该页在MTM中的标签的位置,并且作为响应,硬件可自动计算(a)页中的每一行的物理地址和(b)每一行的对应标签。类似地,硬件可提供用于读取或写入单个行而不是整个页的细粒度的指令。此外,这些指令可仅仅提供一种让软件使用物理地址来读取每个高速缓存行的标签的方法(例如,使存储器控制器返回与给定的物理地址相关联的标签的设施)。一旦读取了标签,软件便可使用那些标签来读取相关联的行。因此,基于硬件的行处理可提供与基于软件的行处理相同或类似的功能性,但是具有更好的性能。此外,这些指令可提供不同的粒度,从页粒度到高速缓存行粒度或甚至是子高速缓存行粒度。这些指令可以是本地指令集体系结构(ISA)或供软件使用的包装器(wrapper)的部分。如果指令是包装器的部分,那么底层实现可仅仅由软件库与一定的硬件支持的组合提供。出于本公开的目的,一般可使用术语“设施”来指此类指令、包装器等。
以下段落提供具有用于管理存储器标签的技术的数据处理系统的一个或多个示例实施例的额外细节。
图1是包括用于管理存储器标签的技术的数据处理系统10的示例实施例的框图。如图所示,数据处理系统10包括处理器12、RAM 14和非易失性存储设备(NVS)18。NVS 18可实现为硬盘驱动器(HDD)或实现为任何其它合适类型的大容量存储装置。在所示的实施例中,处理器12包括多个核20A和20B、存储器控制器30和高速缓冲存储器40。高速缓冲存储器40又可简称为高速缓存40。在一个实施例中,诸如核20A、核20B、高速缓存40和存储器控制器30的组件都可驻留在单个芯片或衬底中,它们可称为“片上系统”(SoC)。在其它实施例中,那些组件中的两个或更多个组件可驻留在不同的芯片中,这些芯片可连接在单个芯片封装内或跨分开的封装连接。
出于图示的目的,以相对简单的配置描绘数据处理系统10。然而,本教导不限于所示的配置,而是可用于在具有各种各样配置的数据处理系统中获利。例如,尽管只示出单个高速缓存40,但是在其它实施例中,数据处理系统可使用多级高速缓存系统,并且在其它实施例中,许多其它类型的细节可不同。类似地,核20B可具有与核20A相同种类的特征,或者具有不同的特征集合。例如,核20B可以是在异构处理环境中与大核耦合的现场可编程门阵列(FPGA)、集成图形处理单元上通用计算(GPGPU)、超低功率微处理器(例如,Intel Atom®处理器)等。
在图1的实施例中,NVS包括OS 70与多个应用50和60。处理器12可将OS 70与应用50和60从NVS 18复制到RAM 14以用于执行。
当在核20A或核20B上运行的软件请求从RAM 14读取或向RAM 14写入时,存储器控制器30调解那些读和写。此外,存储器控制器30将数据从RAM复制到高速缓存40中,并更新高速缓存40中的数据,因为访问高速缓存40可比访问RAM 14快得多。尤其,如上文所指示,存储器控制器30使用称为“高速缓存行”的预定块大小对高速缓存40进行读和写。在所示的实施例中,每个高速缓存行的大小是64字节。其它实施例可使用更大或更小的高速缓存行。
出于图示的目的,图1描绘这样一种假设性场景,其中应用50是防病毒程序,并且应用60是web浏览器。例如,数据处理系统10可配置成在开启时自动启动应用50。在图1中,OS 70已启动应用50作为进程50A。OS 70还例如响应于用户输入(例如,点击应用60的图标、点击超链接等)启动应用60作为进程60A。还有,进程60A分叉创建进程60B。
如图所示,OS 70为每个进程维持不同的页表。在图1中,进程50A、60A和60B的页表分别示为页表54A、64A和64B。每个进程的页表将该进程的虚拟地址(VA)映射到物理地址(PA)。可使用任何合适的数据结构或数据结构集来实现页表,包括但不限于层级页表。并且,尽管图1描绘包含虚拟地址的页表,但是页表也可配置成使用虚拟地址作为对物理地址的索引,而无需将虚拟地址实际保存在页表中。出于本公开的目的,页表中使得核能够将虚拟地址转换为物理地址的信息一般可称为“页表条目”或“转换”。
在图1的实施例中,每个核包括转换后备缓冲器(TLB),TLB包括来自页表的页表条目的子集。换句话说,核使用TLB来缓存来自页表的映射,以便存储虚拟地址到物理地址转换。因此,如果TLB已经包含了来自某个进程的虚拟地址的转换,那么核使用它的TLB来将该来自某个进程的虚拟地址转换为对应的物理地址,而无需求助于该进程的页表。出于本公开的目的,TLB中使得核能够将虚拟地址转换为物理地址的信息一般可称为“TLB条目”或“转换”。例如,在图1的实施例中,核20A包括TLB 22A,并且TLB 22A将虚拟地址映射到物理地址。另外,尽管图1中只描绘了单个转换集合,但是核中的TLB可针对在该核上运行的每个进程包含不同的转换集合。例如,一个TLB条目可包括虚拟地址(例如,虚拟页码)的至少一部分以及用于标识与该虚拟地址相关联的进程的进程标识符(PID)。
如上文所指示,传统的OS在页的基础上组织虚拟存储器,并且当某个数据近来没有被访问并且针对其它数据需要存储器空间时,OS也可将该数据从存储器换出到磁盘(或另一个大容量存储装置)。在图1的实施例中,OS 70可将页换出到交换空间74。在所示的实施例中,OS 70使用4 KB的页大小来管理物理存储器和虚拟存储器。其它实施例可使用更大或更小的页大小。如上文所指示,在所示的实施例中,存储器控制器30使用64字节的高速缓存行大小来管理高速缓冲存储器40。并且,4 KB的存储器页可细分成64个行,每一行包含64字节。数据处理系统10使用存储器标签来为存储器页内的不同行(或其它细分部分)提供多种不同类型的保护。例如,在一个实施例或场景中,一个进程可为分配给该进程的不同行(或子页)指派不同的标签。不同的存储器标签使得存储器控制器30为与不同标签相关联的行提供不同类型的保护。例如,不同的标签可标识用于加密不同行的不同密钥。备选地,如下文更详细地描述,可使用标签来提供其它类型的保护。在图1的实施例中,用于基于存储器标签实施保护的控制逻辑中的一些或全部被实现为存储器控制器30中的存储器保护模块34。
在一个实施例或场景中,每个进程维持它自己的MTM,以便记录将哪些标签指派给虚拟存储器的哪些行。在图1中,将进程50A、60A和60B的MTM分别描绘为MTM 52A、62A和62B。因此,每个进程可使用它的MTM来将不同的存储器标签值与该进程的虚拟存储器的不同行相关联。出于本公开的目的,由进程维护的MTM可称为“用户MTM”。
另外地或备选地,数据处理系统的一个或多个其它组件可为与进程相关联的标记的存储器行维持一个或多个MTM。例如,OS 70可维持一个或多个MTM,如下文更详细地描述。此类MTM一般可称为“内核MTM”。在图1中,RAM 14包括称为“交换后的MTM”76的内核MTM。OS70可使用交换后的MTM 76来保存页的对应虚拟和/或物理地址以及存储器标签值,所述页针对某个进程从RAM中换出。
另外地或备选地,核可维持一个或多个MTM。此类MTM一般可称为“系统MTM”。如图1所示,在一个实施例中,核20A将系统MTM 80存储在RAM 14的预留用于错误检测和/或纠正目的的部分(诸如一个或多个纠错码(ECC)存储器芯片或模块)中。在图1中,将此类存储器描绘为纠错存储器(ECM)16。在一个实施例中,当核20A对RAM 14写入时,核20A将标签指定为存储器地址的部分,但是存储器保护模块34将标签剥离出来并将它存储在ECM 16中。因此,存储器保护模块34使用系统MTM 80来存储分配有存储器标签保护的每一行(在每个物理页中)的标签。因此,从核20A的角度来看,存储器控制器30仅仅存储与数据内联的标签,因为存储器控制器30将64B的数据写入到物理地址并且还有与该物理地址相关联的1B标签(响应于来自核20A的单个写入请求)。类似地,存储器控制器30可配置成将数据和标签保存为单个写入操作的部分。另外,核20A可允许OS 70通过使用特殊的请求值来寻址存储器控制器而获得指定的物理地址的标签值。因此,在不同的实施例或场景中,可将MTM可存储在例如:(a) 可通过应用或OS读取的存储器中,或(b) 应用或OS不能读取的存储器中(例如,存储在ECM中)。另外地或备选地,应用和/或OS可能不知道MTM的存储位置,但是处理器可提供ISA扩展、应用编程接口(API)或某个其它设施,应用和/或OS可通过它们获得标签,以便例如提供寻呼和COW。
可使用任何合适类型的数据结构(例如,列表、表等)来实现MTM。并且,对存储器标签可使用任何合适的格式。例如,如图2所示,页表54A中的每个虚拟地址和每个物理地址都包含跨越8个位并占用高阶字节的标签段。因此,在页大小为4K并且行大小为64字节的数据处理系统中,MTM 52A将每个存储器标签存储在一个字节中。因此,可使用作为页大小的1/64的MTM来保存页的标签。在其它实施例中,标签段可以更小或更大,并且它可占用虚拟地址和物理地址的不同部分。另外,标签段可包括两个或更多个子段。例如,8位标签段可包括高阶半字节中的标签类型子段和低阶半字节中的标签值子段。
还有,可优化MTM以使得单个条目能够覆盖一定范围的行,而不是针对每个行具有单独的条目。例如,如果对整个页使用单个标签,那么MTM针对该页可能只包含单个条目,从而减少MTM所需的存储。
在图1的实施例中,进程50A利用存储器来存储程序数据。另外,较低级组件(例如,OS 70)使用其它类型的数据来管理进程50A用于存储程序数据的存储器。出于本公开的目的,一般可使用术语“元数据”来指较低级组件用来管理存储器的数据,诸如进程50A的程序利用所述存储器来存储程序数据。也可将与实际程序数据有关的元数据存储在存储器中。例如,MTM中的数据可称为元数据。元数据的示例包括标签、KeyID、消息认证码(MAC)、ECC和/或与以比页粒度更细的粒度进行管理的行(或其它子页)相关联的其它数据。因此,MTM中的数据可包括例如keyID以及基于该keyID计算的MAC。备选地,MTM条目可包括基于来自存储器地址的标签值的MAC,但是该标签值可能不存储在MTM条目中。
图2是示出供数据处理系统10用于管理存储器标签的各种数据结构的示例实施例的框图。例如,图2示出来自图1的MTM 52A和页表54A的更多细节。图2还图示那些数据结构中的数据如何与已经分配给进程50A的存储器的不同部分有关。那些存储器部分可能使用像下文关于图3A描述的过程的过程而被分配。
尤其,在图2的假设性场景中,进程50A动态地分配了三个不同的虚拟存储器块,它们具有不同类型的存储器标签保护。那些块中的一个块(描绘为“行A”)恰巧是一个行的大小(即,64字节),并且它被分配有空或零标签值(0x0)。那些块中的另一个块恰巧是两个行的大小(即,128字节),并它被分配有标签值0x1。将那个块描绘为“行B”和“行C”。那些块中的另一个块(描绘为“行D”)分配有标签值0xD。
在图2中,在进程50A的虚拟存储器90中描绘了行A到D。出于图示的目的,图2示出作为在虚拟存储器90内不同单元的被分配的存储器的每个不同行。换句话说,虚拟存储器90中示出的每个块或行与高速缓存行的大小相同。因此,将那些块描绘为行A、行B、行C、行D等。并且,在每一行中示出不同类型的填充,以便指示与每一行相关联的不同标签,其中针对标签值0x0使用无填充,针对标签值0x1使用虚线填充,并且针对标签值0xD使用垂直线。
然而,当进程50A分配每个存储器块时,进程50A可能不会特别请求一个行(或多个行),而是可仅仅请求特定数量的字节。另外,进程50A在请求分配存储器时可能会忽略页边界。因此,例如,行A可驻留在一个虚拟页中,行B和C可驻留在另一个虚拟页中,并且行D可驻留在另一个虚拟页中。由于存储器标签占用虚拟存储器地址的高阶位,所以具有不同标签的行将不会最终在虚拟存储器的相同页中。不过,具有不同标签的行可最终驻留在物理存储器的相同页中,如下文更详细地描述那样。当数据处理系统允许将多个虚拟页映射到相同物理页时,这些虚拟页可视为是“别名”,并且可以说数据处理系统支持“页别名使用”。
如图2所示,进程50A还维持MTM 52A,以使得MTM 52A将特定标签与行A到D中的每个行相关联。尤其,MTM 52A将标签值0x0与行A相关联,将标签值0x1与行B和C相关联,将标签值0xD与行D相关联,等等。下文结合图3A提供关于维持MTM 52A的更多细节。
并且,在图2的实施例中,当OS 70管理页表54A时,OS 70可在每个虚拟地址和每个物理地址中均包含标签段和位置段。标签段包括用于该虚拟或物理地址的标签值。例如,关于图2中的行B,下文以十六进制和二进制表示提供该行的完整的64位虚拟地址(其中前缀“0x”表示十六进制表示,前缀“0b”表示二进制表示,并且为了可读性,在二进制表示中每16位集合之后插入空格):
0x10000000FFFFCFC0
0b0001000000000000 0000000000000000 1111111111111111 1100111111000000
(如本领域技术人员所了解,由于十六进制表示中的每个字符描绘4个位,所以可以用16个十六进制字符来表示64位地址)。在诸如页表和TLB的转换设施中包含存储器标签作为物理地址的部分的做法可称为“显式标签转换”。
在另一个实施例中,数据处理系统可使用本文中称为“TLB旁路”的做法来处置来自应用的存储器访问请求。在TLB旁路下,OS仍然在每个虚拟地址中包含标签段和位置段,并且OS将标签值存储在标签段中。但是,OS不会将标签值存储在页表或TLB中的物理地址中。而是,在进行地址转换以便确定对应的物理地址时,核忽略标签,然后核将来自虚拟地址的标签插入到发送给存储器控制器的物理地址中。换句话说,核将标记的物理地址发送给存储器控制器。然后,存储器控制器从存储器地址中剥离标签,并使用没有标签的存储器地址(即,“未标记的地址”)来访问数据。但是,存储器控制器仍然使用标签来保护存储器。例如,当标签是KeyID时,存储器控制器可使用对应的密钥来对该位置处的数据进行加密或解密。另外地或备选地,存储器控制器可基于该密钥生成诸如MAC的完整性信息。或者,当标签是不同类型的值时,存储器控制器可确定来自核的标签值是否适当。尤其,存储器控制器可通过将标签值(由核结合访问指定的物理位置的请求而提供)与先前存储在当前进程的MTM或系统MTM中的标签值进行比较来确定该标签值是否适当。出于本公开的目的,存储在MTM中的标签值可称为“原始的”标签值或“适当的”标签值。例如,如果行B具有与它相关联的标签值0x1,但是核20A试图使用标签值0x2访问行B,那么存储器控制器30将报道访问控制违规(由于标签不匹配)。备选地,当标签是KeyID时,存储器控制器30将使用该标签来选择加密密钥。当核20A提供不正确的标签时,存储器控制器30将选择不正确的密钥,这将导致加密完整性失败。因此,存储器控制器30可报道访问控制违规。
并且,为了支持标签验证,对于使用标签进行存储器保护的每个进程,数据处理系统可维持MTM以便标识分配给该进程的受保护存储器的每个物理行的适当标签。例如,标签可绑定到内核MTM或系统MTM中的物理地址。
并且,如上文所指示,在图2的假设性场景中,行B的虚拟地址是0x10000000FFFFCFC0。并且,行C的虚拟地址是0x10000000FFFFD000。因此,行B和行C相邻,其中行B占用一个虚拟页的最后64个字节,并且行C从下一个虚拟页的起点开始。并且,行B和行C各自具有标签值0x1。然而,如图所示,OS 70可能会碰巧将行B和行C映射到物理存储器的相同页。实际上,在图2的场景中,OS 70已经将行A到D映射到相同的物理页。然而,应注意,出于图示的目的,页表54描绘完整的物理地址,但是实际上,页表可只包括物理地址的部分(例如,用于标识物理存储器的页的帧编号),并且核可使用虚拟地址来计算物理地址的剩余部分(例如,偏移)。
当进程50A随后访问任何行(例如,行D)时,进程50A自动提供适当的标签值(例如,值0xD),这是因为该标签值嵌入在供进程50A用于访问该行的虚拟地址中。因此,存储器保护模块34使用适当的标签值来管理对通过进程50A从RAM 14读取以及写入到RAM 14的数据的保护。例如,如果标签充当KeyID,当存储器控制器30将行D从高速缓存40写入到RAM 14时,存储器保护模块34可使用由值0xD标识的密钥来加密来自进程50A的数据,并且当存储器控制器30将行D从RAM 14读取到高速缓存40中时,存储器保护模块34也可使用该密钥来解密数据。还有,存储器控制器30可使用该密钥来生成完整性数据,如上文所指示。并且如果对于读取,完整性数据与先前在将程序数据写入到RAM 14时生成并存储在MTM中的完整性数据不匹配,那么存储器控制器30可报道标签不匹配。并且,当进程50A使用虚拟地址来访问存储器时,核20A和/或存储器控制器30可使用任何合适的技术来结转(carryforward)适当的标签以便访问与指定的虚拟地址相关联的物理地址。例如,如题为“Convolutional Memory Integrity”的美国专利申请公开2017/0285976中所描述,核和/或存储控制器可使用页级别名来创建映射到相同存储器位置的不同的地址池(或范围),同时具有改变标签的效果,这可对关键域(key domain)信息进行编码。
如下文更详细地描述,在所示的实施例中,当OS 70对分配给某个进程的页执行COW和SI/SO时,OS 70使用该进程的MTM来获得正确的标签值,以便对页内的每一行进行读或写。
图3A至3D呈现了用于管理存储器标签的过程的示例实施例的流程图。出于图示的目的,本文中关于涉及在数据处理系统10中运行的OS 70的假设性场景描述图3A至3D。尤其,图3A示出这样的假设性场景,其涉及OS 70启动应用50作为进程50A,并且进程50A为分配给进程50A的不同存储器段指派不同的标签。
图3A的过程可从OS 70确定是否应当启动应用开始,如方框110所示。例如,如上文所指示,在所示的实施例中,应用50是防病毒应用,并且数据处理系统10配置成在开启时启动应用50。因此,作为开启过程的部分,OS 70可确定应当启动应用50。响应于该确定,OS 70可为进程50A分配预定大小的初始虚拟存储器块,如方框112所示。然后,OS 70可将应用50的代码加载到初始存储器块中,并且OS 70可接着启动应用50作为进程50A,如方框114和116所示。
如方框130所示,进程50A可请求在运行时为它自己动态地分配额外的标记的存储器。例如,进程50A可使用来自静态链接库或动态链接库(DLL)(诸如glibc)的存储器分配函数来请求分配指定大小的存储器块以便添加到进程50A的堆中。在一个实施例或场景中,该存储器分配函数与malloc函数类似,但是增强了对存储器标签的支持。出于本公开的目的,此类增强的存储器分配函数可称为“malloct”。作为malloct请求的部分,进程50A可指定与被分配的存储器块相关联的存储器标签值。备选地,进程50A可使用具有(相对于传统的malloc函数)增强的malloc函数的库来在进程50A动态地分配存储器的任何时候自动使用存储器标签。malloc函数可使用任何合适的技术来选择标签值或要使用的值,包括但不限于轮循(round-robin)技术。出于本公开的目的,用于分配存储器的函数或程序(例如,malloc或malloct)、用于释放存储器的函数或程序等一般可称为“存储器管理器”。响应于存储器分配请求,存储器管理器可将请求的大小的虚拟存储器块分配给进程50A,如方框132所示,并且存储器管理器可将该块的起点的虚拟地址返回给进程50A。此外,如图2所示,虚拟地址可包括:标签段,其包括供存储器管理器使用的标签值(例如,由进程50A对malloc指定的标签或由malloc自动选择的标签);以及位置段,以标识分配的存储器的位置。换句话说,用指定的存储器标签值对存储器管理器返回给进程50A的虚拟地址进行编码。
接着,如方框134所示,进程50A可更新MTM 52A,以便标识与刚刚分配的虚拟存储器的每一行相关联的存储器标签。另外地或备选地,每当OS 70将分配的虚拟存储器映射到物理存储器时,核20A和/或存储器控制器30可自动更新系统MTM 80,以便将该物理存储器的每一行与适当的存储器标签值相关联。
然后,图3A的过程可经由页连接符A返回到方框130。接着,数据处理系统10可重复在方框132和134中描绘的操作,以便响应于来自进程50A的进一步的分配请求而将额外的虚拟存储器块分配给进程50A。如上文所指示,当进程50A随后访问任何行时,进程50A自动提供适当的标签值,这是因为该标签值嵌入在供进程50A用于访问该行的虚拟地址中。因此,存储器保护模块34使用适当的标签值来管理对由进程50A从RAM 14读取以及写入到RAM14的数据的保护。
再次参考图3A的方框130,在启动进程50A之后,如果数据处理系统确定进程50A当前没有使用某个存储器区域,那么OS 70可确定是否应当换出进程50A的存储器的任何物理页(例如,为即将换入到物理存储器的不同虚拟存储器页腾出空间),如方框140所示。如果不需要换出页,那么OS 70可确定是否需要换入页,如方框150所示。例如,响应于进程50A试图对换出的页进行读或写,OS 70可确定页需要被换入。如果没有页需要被换入,那么OS 70可确定是否对进程50A的页触发了写时复制(COW),如方框160所示。
关于COW,当一个进程分叉创建第二个进程时,例如当进程60A分叉创建进程60B时,替代为进程60B创建全新的物理页集合,OS 70可为进程60B创建将进程60B的虚拟地址(其可与进程60A的虚拟地址匹配)映射到与进程60A所使用的页相同的物理地址的页表条目。如果两个进程都未曾修改那些页中的任何页,那么就没有必要实际复制那些物理页。出于本公开的目的,以这种方式由两个不同的进程共享的物理页可称为“共享页”。然而,当其中一个进程(例如,进程60A)对它的页之一确实进行写入时,OS 70可接着创建新的物理页,以使得进程60A可访问该页的修改版本,而进程60B可访问该页的未修改版本。因此,OS 70可响应于检测到进程对共享页进行写入而确定触发了COW。
再次参考图3的方框160,如果没有触发COW,那么过程可返回到方框130,并且OS70可继续留意(a)对更多存储器的请求、(b)将页换入或换出的需要、或(c)对COW的需要,如上文所指示。
但是,再次参考方框140,如果需要换出物理页,那么过程通过页连接符B转到图3B。
图3B描绘对于进程50A将标记的存储器的页从RAM 14换出的过程的示例实施例。出于图示的目的,图3B中描绘的实施例包括与特定数据结构和操作有关的许多细节。然而,如下文更详细地描述,其它实施例可对一个或多个操作提供增强的低级支持,从而简化即将由OS执行的操作。
图3B的过程可从OS 70将用于将要被换出的物理页(“退出页”)与虚拟页进行链接的页表条目作废开始,如方框210所示。换句话说,OS 70从页表54A解除退出页的映射以作为RAM中不存在的页。如方框212所示,OS 70还转储清除TLB 22A和任何相关的高速缓存。
OS 70还执行与上文提到并且下文将更详细描述的read_tagged_page指令有关的各种步骤。例如,如方框214所示,OS 70将退出页的物理地址存储在本文中称为“Source_Page_Address”的变量或寄存器中。换句话说,再次参考图2,OS 70将物理地址的位置段加载到Source_Page_Address。另外,如图3B的方框216所示,OS 70确定退出页的MTM的相关部分的物理地址,并将该物理地址存储在本文中称为“Tag_Map_Address”的变量或寄存器中。例如,OS 70可以用系统MTM 80中与退出页有关的段的地址加载Tag_Map_Address。
如方框218所示,OS 70可分配新的物理页以充当临时存储。出于本公开的目的,该新的物理页可称为“目标页”。然后,OS 70将目标页的物理地址存储在本文中称为“Destination_Page_Address”的变量或寄存器中,如方框220所示。
如方框222所示,OS 70接着调用特殊的标签管理指令,以便将数据页从源页复制到临时目标页。出于本公开的目的,该指令可称为“read_tagged_page”指令。如下文更详细地描述,OS 70为read_tagged_page指令提供Source_Page_Address、Tag_Map_Address和Destination_Page_Address。然后,read_tagged_page指令使用每个行的适当的标签来将数据从源页中的每一行复制到目标页中的对应行。例如,如果标签是KeyID,那么read_tagged_page指令使用每一行的适当密钥来解密从源页读取的数据,然后再将该数据复制到目标页。
以下“Read_Tagged_Page”表在左列中呈现示例伪代码,并在右列中呈现对应的注解,以便说明read_tagged_page指令的示例实施例的进一步细节。
read_tagged_page (source_page_addr, tag_map_addr, destination_page_addr): | 用于使用给定的标签映射读取标记的页 |
for i = 0 to 63 do | 对于具有64行的页 |
tag <- tag_map_addr[i] | 从标签映射获得当前源行的标签 |
source_line_addr <- source_page_addr + i*64 | 计算源页内的当前源行的地址 |
tagged_line_addr <- set_tag (source_line_addr, tag) | 将标签添加到当前源行的地址的标签段 |
data <- read_data(tagged_line_addr) | 使用(具有标签的)完整地址从源页读取当前数据行 |
destination_line_addr <- destination_page_addr + i*64 | 计算目标页内的当前目标行的地址 |
write_data (destination_line_addr, data) | 将数据行写入到当前目标行 |
Done |
在以上伪代码中,i*64表示对源页内的当前行的偏移,因为示例实施例中的每一行的大小是64字节。因此,页内的第0行从偏移0开始,下一行在偏移64(0x40)开始,再下一行在128(0x80)开始,依此类推,最后一行在偏移4032(0xFC0)开始。因此,read_tagged_page指令在页中迭代64行(0到63),并且在每次迭代中,它对当前地址增加64,因为这是以字节为单位的行大小。然而,那些数字在使用不同粒度或不同页大小的实施例中将发生变化。
因此,read_tagged_page指令使得OS 70能够读取RAM 14中以多个不同标签进行保护的完整数据页,并将该数据保存到存储器中的另一个位置(例如,对于COW)或磁盘(或其它NVS)(例如,对于存储器映射文件)。并且,read_tagged_page指令包括适当的标签作为被读取的每一行的物理地址的部分,以使得存储器保护模块34可在从RAM 14读取每一数据行时(例如,当执行以上伪代码中示出的“read_data”函数时)使用适当的标签。并且,以上伪代码还示出read_tagged_page指令,该指令使用tag_map_addr来查找被读取的每个行的有关标签。但是,如上文所指示,在一个实施例中,核20A和/或存储器控制器30可将标记的存储器的每个页中的每个行的标签存储在系统MTM 80。在此类实施例中,可从read_tagged_page指令省略tag_map_addr参数,并且该指令可仅仅基于source_page_addr确定适当的标签。
如方框224所示,OS 70接着将数据从临时目标页复制到NVS 18中的交换空间74。另外,由于目标页中的数据未受保护,所以OS 70可例如通过用不同密钥对该数据进行加密来保护该数据,或使用本地加密(例如,通过使用提供完整磁盘加密的技术,诸如由Microsoft Corporation以“BitLocker”起的名称或商标提供的技术)来固有地保护该数据,然后将该数据复制到交换空间74。但是,在另一个实施例中,OS可使用read_tagged_page指令的变体来执行直接到磁盘的直接存储器访问(DMA),从而消除临时目标页。例如,如果交换文件是存储器映射的,那么read_tagged_page指令可使得OS能够指定要接收被换出的数据的交换文件的部分的位置,并且像上文称为“write_data (destination_line_addr, data)”的操作那样的操作可将数据复制到NVS而不是存储器。
如方框226所示,OS 70可对被保存好的数据的标签进行保存,以使得OS 70可在随后将页换回到RAM 14中时使用那些标签。OS 70可使用任何合适的技术来保存那些标签。例如,再次参考图1,OS 70可将那些标签保存在交换后的MTM 76中,交换后的MTM 76可存储在RAM 14和/或NVS 18中。交换后的MTM 76可标识对于任何进程被换出的标记的存储器的每个页中的每个行的标签。
然后,图3B的过程可通过页连接符A返回到图3A。接着,OS 70可继续监测状况,并确定是否请求更多的存储器、是否应当换出另一个页、是否应当换入页、或是否触发了COW,如上文所指示那样。如果OS 70确定应当换入页,那么过程可通过页连接符C从方框150转到图3C。
图3C描绘用于将标记的存储器的页换回到RAM 14中的过程的示例实施例。与图3B一样,出于图示的目的,图3C中描绘的实施例包括与特定数据结构和操作有关的许多细节。然而,如下文更详细地描述,其它实施例可对一个或多个操作提供增强的低级支持,从而简化即将由OS执行的操作。
如方框310所示,图3C的过程可从OS 70分配新的物理页以便充当临时存储开始。(或者,如下文更详细地描述,如果使用DMA,那么可能不需要临时存储)。出于本公开的目的,该新的物理页可称为“源页”。然后,OS 70将源页的物理地址存储在本文中称为“Source_Page_Address”的变量或寄存器中,如方框312所示。如方框314所示,OS 70接着将即将换入的页的数据从交换空间74复制到刚刚分配的临时源页。并且,如果OS 70在将数据保存到交换空间74之前对数据进行了加密,那么OS 70可在将数据存储到源页之前对数据进行解密。
如方框316所示,OS 70接着用RAM 14中用于接收被换回的数据页的位置的物理地址(即,“返回页”的物理地址)填充在本文中称为“Destination_Page_Address”的变量或寄存器。例如,OS 70可以用即将使用的物理页的地址填充Destination_Page_Address的位置段,同时在目标页地址的标签段中存储零。如方框318所示,OS 70还将返回页的MTM的相关部分的物理地址存储在本文中称为“Tag_Map_Address”的变量或寄存器中。例如,在一个实施例中,OS 70使用MTM 52A的地址或与返回页对应的MTM 52A的部分的地址。备选地,OS 70可使用交换后的MTM 76的地址。
如方框320所示,OS 70接着调用特殊的标签管理指令,以便将数据页从临时源页复制到目标页。出于本公开的目的,该指令可称为“write_tagged_page”指令。如下文更详细地描述,OS 70为write_tagged_page指令提供Source_Page_Address、Tag_Map_Address和Destination_Page_Address。
以下“Write_Tagged_Page”表在左列中呈现示例伪代码,并在右列中呈现对应的注解,以便说明write_tagged_page指令的示例实施例的进一步细节。
write_tagged_page (source_page_addr, tag_map_addr, destination_page_addr): | 用于使用给定的标签映射写入标记的页 |
for i = 0 to 63 do | 对于具有64行的页 |
source_line_addr <- source_page_addr + i*64 | 计算源页内的当前源行的地址 |
data <- read_data (source_line_addr) | 从当前源行读取数据 |
tag <- tag_map_addr[i] | 从标签映射获得当前目标行的标签 |
destination_line_addr <- destination_page_addr + i*64 | 计算目标页内的当前目标行的地址 |
tagged_line_addr < set_tag (destination_line_addr, tag) | 将标签添加到目标页内的当前目标行的地址 |
write_data (tagged_line_addr, data) | 将标记的数据写入到目标行地址 |
Done |
因此,write_tagged_page指令使得OS 70能够将完整数据页换入到RAM 14中,同时将适当的标签应用到该页内的每一行。另外,如果OS 70对交换空间74中的数据进行了加密,那么在以上伪代码中示出的“read_data”函数可对该数据进行解密,如果数据在保存到源页之前没有解密的话。然后,如果行的标签表示KeyID,那么以上伪代码中示出的“write_data”函数可利用由该KeyID标识的密钥来对该数据进行加密。
然而,与read_tagged_page指令一样,在另一个实施例中,OS可使用write_tagged_page指令的变体来直接从磁盘执行DMA,从而消除临时源页。例如,如果交换文件是存储器映射的,那么write_tagged_page指令可使得OS能够指定包含被换入的数据的交换文件的部分的位置,并且像上文称为“read_data (source_line_addr)”的操作那样的操作可从NVS而不是从存储器读取数据。
如方框322所示,OS 70、核20A和/或存储器控制器30可接着更新系统MTM 80,以便标识进入页中的每一行的适当的标签值。如方框324所示,OS 70可接着更新页表54A,以便将进入页映射到所述一个或多个适当的虚拟地址。
然后,图3C的过程可通过页连接符A返回到图3A。OS 70可接着继续监测状况,并确定是否请求了更多的存储器、是否应当换出另一个页、是否应当换入页、或是否触发了COW。如果OS 70确定触发了COW,那么过程可通过页连接符D从方框160转到图3D。
图3D描绘用于处置对标记的存储器的页进行COW的过程的示例实施例。出于图示的目的,下文关于涉及进程60A和60B共享物理存储器的页的假设性场景描述该过程,如上文所指示。可响应于进程60A执行对该“共享页”进行写入的指令而触发图3B的过程。如方框408所示,OS 70可接着分配新的物理存储器页。如方框410所示,OS 70可接着转储清除进程60A和60B的TLB以及任何有关的高速缓存。
如方框412所示,OS 70可接着从系统MTM 80读取共享页的标签。并且,由于传统的加载/存储指令不能够寻址ECM 16以便显式地读取或修改存储在那里的存储器标签,所以在一个实施例中,给定数据的特定物理地址,核20A和存储器控制器30支持用于从ECM 16(或从对于OS不直接可见的另一种形式的隐藏或隐蔽存储器)读取存储器元数据的特权指令(例如,“read_memory_metadata”)。例如,read_memory_metadata (phys_addr)返回位于存储器中的物理位置“phys_addr”处的行的元数据。如上文所指示,该元数据可包含诸如keyID、MAC等的标签值。另外地或备选地,OS 70可使用特殊的标签值来告诉存储器控制器不读取寻址的存储器位置的实际数据内容,而是读取给定的寻址的存储器的相关联的ECC存储器(或从另一种形式的隐藏或隐蔽存储器读取)并返回该元数据。该特殊的标签值(或存储器范围)可能会受到限制,以使得只有OS、虚拟机监视程序(VMM)或其它特权软件才可使用它来获得页的标签值,从而防止低特权的恶意软件函数正好读取其它的标签指派。
如方框414所示,一旦OS 70获得共享页的标签(或其它元数据),OS 70便可接着使用那些标签来读取共享页,一次一个行。例如,标签是KeyID,存储器保护模块34可在读取每一行时使用由该行的KeyID标识的密钥来对每个行进行解密。如方框416所示,OS 70也可接着使用那些标签来将内容写入到新页,一次一个行。例如,如果标签是KeyID,那么存储器保护模块34可在写入每一行时使用由该行的KeyID标识的密钥来对每一行进行加密。如方框418所示,OS 70可接着更新页表64A,以便将新的物理页映射到进程60A的一个或多个虚拟页。如方框420所示,OS 70可接着允许原本由进程60A请求的写入以便更新新页。
软件可使用根据本公开的存储器颜色或存储器标签实现的解决方案或保护中的一些包括以下:物理损坏检测,越界检测,释放后使用检测,堆覆盖(具有库支持),栈覆盖(具有编译器支持),进程间/虚拟机(VM)损坏检测,和内核/虚拟机监视程序(VMM)损坏检测。如前所述,可将存储器标签指定为是虚拟存储器地址和/或物理存储器地址的部分,并且可将存储器标签和/或其它存储器元数据存储在位于RAM中和/或位于ECM或其它隐蔽存储器中的MTM中。
此外,如前所述,数据处理系统可以按子页粒度提供存储器保护。此外,在处置诸如SI/SO和COW的操作时,数据处理系统可以按子页的粒度维持存储器保护。
尽管本文中描述了某些示例实施例,但是本领域技术人员将了解,那些示例实施例可容易地划分、组合或以其它方式改变,以便实现额外实施例。因此,本教导不限于本文中描述的实施例和/或场景,而是可用于在各种各样的实施例和场景中获利。例如,在另一个实施例或场景中,数据处理系统可配置成启动这样的进程,其中具有对供该进程使用的所有存储器而不只是动态分配的存储器的存储器标签保护。在此类实施例中,OS可在启动进程之前将存储器标签值指派给进程的初始块。
本发明提供一组技术方案,如下:
1. 一种支持子页粒度的存储器标签的数据处理系统,所述数据处理系统包括:
至少一个核;
响应于所述核的存储器控制器;
响应于所述存储器控制器的随机存取存储器(RAM);以及
位于所述存储器控制器中的存储器保护模块;
其中所述存储器保护模块使得所述存储器控制器能够使用作为存储器地址的部分提供的存储器标签值,来保护存储在基于作为所述存储器地址的另一部分提供的位置值的位置处的数据;并且
其中所述存储器控制器使得所述数据处理系统中的操作系统(OS)能够通过使用存储器标签映射(MTM)对要从所述RAM被换出的数据页内的各自子页应用存储器标签值,而将所述数据页从所述RAM换出到非易失性存储设备(NVS)。
2. 如技术方案1所述的数据处理系统,其中所述存储器控制器使得所述OS能够通过对被换回到RAM中的所述数据页内的各自子页应用存储器标签值,而将所述数据页换回到所述RAM中。
3. 如技术方案1所述的数据处理系统,其中所述存储器控制器使得所述OS能够通过以下步骤来管理写时复制(COW):
响应于确定对RAM中的共享数据页触发了COW,其中所述共享页由第一进程和第二进程共享,使用与在所述共享数据页内的各自子页相关联的存储器标签值来将所述数据复制到RAM中的新页;以及
更新所述第一进程的页表,以便将所述新页映射到所述第一进程的虚拟地址空间。
4. 如技术方案1所述的数据处理系统,其中所述核配置成自动维持系统MTM,所述系统MTM为映射到虚拟页的标记的存储器的每个物理行标识适当的存储器标签值。
5. 如技术方案4所述的数据处理系统,进一步包括:
响应于所述存储器控制器的隐蔽存储器,其中所述隐蔽存储器对于所述OS不可直接访问;并且
其中所述存储器控制器配置成将所述系统MTM存储在所述隐蔽存储器中。
6. 如技术方案5所述的数据处理系统,其中所述隐蔽存储器包括纠错码(ECC)存储器。
7. 如技术方案5所述的数据处理系统,其中所述核支持特权read_memory_metadata指令,所述指令在被执行时使得所述核能够响应于为所述read_memory_metadata指令供应RAM中的子页的物理地址,而从所述隐蔽存储器中的所述系统MTM获得所述RAM中的子页的存储器标签值。
8. 如技术方案1所述的数据处理系统,其中所述核支持read_tagged_page指令,所述指令在被执行时使得所述核能够:
使用存储器标签值来从指定的源页内的标记的存储器的多个子页读取数据;以及
将所述数据复制到指定的目标页。
9. 如技术方案8所述的数据处理系统,其中:
所述存储器标签值包括至少一个密钥标识符(KeyID);
使用存储器标签值来从所述指定的源页内的标记的存储器的多个子页读取数据的所述操作包括使用对应于所述KeyID的密钥来对所述数据进行解密;并且
将所述数据复制到所述指定的目标页的所述操作包括将所述解密后的数据复制到所述指定的目标页。
10. 至少一种非暂时性机器可访问介质,包括用于支持子页粒度的存储器标签的计算机指令,其中所述计算机指令响应于在数据处理系统上执行而使得所述数据处理系统能够:
使用作为存储器地址的部分供应的存储器标签值,来指定对存储在所述数据处理系统的随机存取存储器(RAM)中的数据页内的位置处的数据的保护,其中所述位置基于作为所述存储器地址的另一部分供应的位置值,其中所述RAM响应于所述数据处理系统中的存储器控制器,并且其中所述存储器控制器中的存储器保护模块使得所述存储器控制器能够基于所述存储器标签值来保护RAM中的所述数据;以及
通过使用存储器标签映射(MTM)对要从所述RAM被换出的所述数据页内的各自子页应用存储器标签值,而将所述数据页从所述RAM换出到所述数据处理系统的非易失性存储设备(NVS)。
11. 如技术方案10所述的至少一种机器可访问介质,其中所述指令在被执行时进一步使得所述数据处理系统能够通过对被换回到RAM中的所述数据页内的各自子页应用存储器标签值,而将所述数据页换回到所述RAM中。
12. 如技术方案10所述的至少一种机器可访问介质,其中所述指令在被执行时进一步使得所述数据处理系统能够通过以下步骤来管理写时复制(COW):
自动确定是否对RAM中的共享数据页触发了COW,其中所述共享页由第一进程和第二进程共享;
响应于确定对所述共享数据页触发了COW,使用与所述共享数据页相关联的存储器标签值来将所述数据复制到新页;以及
更新所述第一进程的页表,以便将所述新页映射到所述第一进程的虚拟地址空间。
13. 一种用于在数据处理系统中管理子页粒度的存储器标签的方法,所述方法包括:
结合将数据页从所述数据处理系统中的随机存取存储器(RAM)换出到所述数据处理系统中的非易失性存储设备(NVS),使用存储器标签映射(MTM)来对被换出的所述页内的各自子页应用存储器标签值;以及
结合将所述数据页从NVS换回到RAM中,对被换回到RAM中的所述页内的各自子页应用存储器标签值。
14. 如技术方案13所述的方法,进一步包括当进程访问所述页内的特定子页时:
所述进程包括作为那个特定子页的虚拟地址的部分的那个特定子页的所述存储器标签值;并且
所述进程还包括作为那个特定子页的所述虚拟地址的部分的位置值。
15. 如技术方案13所述的方法,其中:
所述存储器标签值中的至少一个存储器标签值包括由在所述数据处理系统上的进程中运行的应用指定的标签值;并且
使用所述MTM对被换出的所述页内的各自子页应用存储器标签值的所述操作至少部分地由在所述数据处理系统上运行的操作系统执行。
16. 如技术方案13所述的方法,进一步包括:
自动确定是否对RAM中的共享数据页触发了写时复制(COW),其中所述共享页由第一进程和第二进程共享;
响应于确定对所述共享数据页触发了COW,使用与所述共享数据页内的各自子页相关联的存储器标签值来将所述数据复制到RAM中的新页;以及
更新所述第一进程的页表,以便将所述新页映射到所述第一进程的虚拟地址空间。
17. 如技术方案13所述的方法,进一步包括:
自动维持系统MTM,所述系统MTM为被映射到虚拟页的标记的存储器的每个物理行标识适当的存储器标签值。
18. 如技术方案17所述的方法,其中所述系统MTM存储在所述数据处理系统的响应于所述存储器控制器的隐蔽存储器中,其中所述隐蔽存储器对于所述数据处理系统中的操作系统(OS)不可直接访问。
19. 如技术方案17所述的方法,进一步包括:
响应于为read_memory_metadata指令供应RAM中的子页的物理地址,使用特权read_memory_metadata指令从所述隐蔽存储器中的所述系统MTM获得所述RAM中的所述子页的存储器标签值。
20. 如技术方案13所述的方法,进一步包括:
使用read_tagged_page指令来使用存储器标签值从指定的源页内的标记的存储器的多个子页读取数据;以及
使用从所述源页读取的所述数据来更新指定的目标页。
在本公开中,诸如“实施例”、“一个实施例”和“另一个实施例”的表述意在一般参考实施例的可能性。这些表述并不是要将本发明局限于特定的实施例配置。如本文中所使用,这些表述可引用相同的实施例或不同的实施例,并且那些实施例可组合成其它实施例。鉴于本文中描述和说明的原理和示例实施例,将意识到,在不脱离本文中描述和/或说明的原理的情况下,可在布置和细节方面对所示的实施例进行修改。
并且,如上文所描述,一种装置可包括在由处理器访问时使该装置执行特定操作的指令和其它数据。出于本公开的目的,使装置执行操作的指令一般可称为软件。软件和类似的东西又可称为控制逻辑。在引导过程期间使用的软件可称为固件。存储在非易失性存储器中的软件也可称为固件。软件可使用任何合适的结构或结构的组合进行组织。因此,像程序和模块这样的术语一般可用于覆盖广泛范围的软件构造,包括但不限于应用程序、子程序、例行程序、函数、规程、驱动程序、库、数据结构、进程、微代码和其它类型的软件组件。并且,应了解,软件模块可包括多于一个组件,并且那些组件可协同以便完成模块的操作。并且,软件使装置执行的操作可包括创建操作上下文、实例化特定的数据结构等。可使用任何合适的操作环境和编程语言(或操作环境和编程语言的组合)来实现本文中描述的软件组件。
一种包含数据并允许另一个组件获得该数据的介质可称为机器可访问介质或机器可读介质。在一个实施例中,用于多个组件的软件存储在一个机器可读介质中。在其它实施例中,可使用两个或更多个机器可读介质来存储一个或多个组件的软件。例如,一个组件的指令可存储在一个介质中,并且另一个组件的指令可存储在另一个介质中。或者,一个组件的指令的一部分可存储在一个介质中,并且该组件的指令的剩余部分(以及其它组件的指令)可存储在一个或多个其它介质中。类似地,上文在一个实施例中描述为驻留在特定装置上的软件可在其它实施例中驻留在一个或多个其它装置上。例如,在分布式环境中,一些软件可存储在本地,并且一些软件可远程存储。类似地,上文在一个实施例中描述为在一个特定装置上执行的操作可在其它实施例中由一个或多个其它装置执行。因此,备选实施例包括包含用于执行本文中描述的操作的指令的机器可读介质。此类介质一般可称为设备,并且尤其称为程序产品。此类介质可包括但不限于:有形的非暂时性存储组件,诸如磁盘、光盘、动态RAM、静态RAM、只读存储器(ROM)等;以及包括数据存储设施的处理器、控制器和其它组件。出于本公开的目的,术语“ROM”一般可用于指非易失性存储器装置,诸如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速ROM、闪速存储器等。
还应了解,本文中描绘的硬件和软件组件代表合理地自包含以使得每个元件可大体上独立于其它元件设计、构造或更新的功能元件。在备选实施例中,许多组件可实现为用于提供本文中描述和说明的功能性的硬件、软件或硬件和软件的组合。在一些实施例中,用于实现描述的操作的控制逻辑的一些或全部可在硬件逻辑中实现(例如,作为集成电路芯片中的微代码、作为可编程门阵列(PGA)、作为专用集成电路(ASIC)等)。
另外,本教导可用于在许多不同种类的数据处理系统中获利。此类数据处理系统可包括但不限于:加速器,片上系统(SOC),可穿戴装置,手持装置,智能电话,电话,诸如音频装置、视频装置、音频/视频装置(例如,电视和机顶盒)的娱乐装置,车辆处理系统,个人数字助理(PDA),平板计算机,膝上型计算机,便携式计算机,个人计算机(PC),工作站,服务器,客户端-服务器系统,分布式计算系统,超级计算机,高性能计算系统,计算集群,大型计算机,微型计算机,以及用于处理或传送信息的其它装置。因此,除非另外明确规定或上下文要求,否则提到任何特定类型的数据处理系统(例如,PC)可理解为也涵盖其它类型的数据处理系统。数据处理系统又可称为设备。数据处理系统的组件也可称为设备。
并且,除非另外明确规定,否则描述为彼此耦合、彼此通信、响应于彼此等的组件不需要彼此连续通信,并且不需要彼此直接耦合。同样地,除非另外明确规定,否则当将一个组件描述为从另一个组件接收数据或向另一个组件发送数据时,该数据可通过一个或多个中间组件发送或接收。另外,数据处理系统的一些组件可实现为具有用于与总线通信的接口(例如,连接器)的适配器卡。备选地,装置或组件可使用诸如可编程或不可编程逻辑装置或阵列、ASIC、嵌入式计算机、智能卡等的组件而实现为嵌入式控制器。出于本公开的目的,术语“总线”包括可由多于两个装置共享的通路以及点到点通路。类似地,诸如“线路”、“引脚”等的术语应理解为指代线、线的集合或任何其它合适的导体或导体集合。例如,总线可包括一个或多个串行链路,串行链路可包括一个或多个路线,路线可由一个或多个差分信令对组成,并且那些导体携带的电力的变化特性可称为线路上的信号。并且,出于本公开的目的,术语“处理器”表示能够执行软件的硬件组件。例如,处理器可实现为中央处理单元(CPU)、处理核或任何其它合适类型的处理元件。CPU可包括一个或多个处理核,并且装置可包括一个或多个CPU。
并且,尽管关于按照特定顺序执行的特定操作描述了一个或多个示例过程,但是可对那些过程应用众多修改,以便衍生出本发明的众多备选实施例。例如,备选实施例可包括使用少于所有公开的操作的过程、使用额外操作的流程以及在其中将本文中公开的个别操作进行组合、细分、重新排列或以其它方式更改的过程。用于管理存储器标签的技术的实施例包括以下示例。
示例A1是一种支持子页粒度的存储器标签的数据处理系统。该数据处理系统包括:至少一个核;响应于核的存储器控制器;响应于存储器控制器的RAM;以及位于存储器控制器中的存储器保护模块。存储器保护模块使得存储器控制器能够使用作为存储器地址的部分提供的存储器标签值来保护存储在基于作为存储器地址的另一部分提供的位置值的位置处的数据。存储器控制器使得数据处理系统中的OS能够通过使用MTM对从RAM换出的数据页内的各自子页应用存储器标签值而将数据页从RAM换出到NVS。
示例A2是根据示例A1的数据处理系统,其中存储器控制器使得OS能够通过对换回到RAM中的数据页内的各自子页应用存储器标签值而将数据页换回到RAM中。
示例A3是根据示例A1的数据处理系统,其中存储器控制器使得OS能够通过以下步骤来管理COW:(a) 响应于确定对RAM中的共享数据页触发了COW,其中共享页由第一进程和第二进程共享,使用与在共享数据页内的各自子页相关联的存储器标签值来将数据复制到RAM中的新页;以及(b) 更新第一进程的页表,以便将新页映射到第一进程的虚拟地址空间。示例A3还可包括示例A2的特征。
示例A4是根据示例A1的数据处理系统,其中核配置成自动维持系统MTM,系统MTM为映射到虚拟页的标记的存储器的每个物理行标识适当的存储器标签值。示例A4还可包括示例A2-A3中的任何一个或多个示例的特征。
示例A5是根据示例A4的数据处理系统,它进一步包括响应于存储器控制器的隐蔽存储器,其中隐蔽存储器对于OS不可直接访问。并且,存储器控制器配置成将系统MTM存储在隐蔽存储器中。
示例A6是根据示例A5的数据处理系统,其中隐蔽存储器包括ECC存储器。
示例A7是根据示例A6的数据处理系统,其中核支持特权read_memory_metadata指令,该指令在执行时使得核响应于为read_memory_metadata指令供应RAM中的子页的物理地址而从隐蔽存储器中的系统MTM获得RAM中的该子页的存储器标签值。示例A7还可包括示例A6的特征。
示例A8是根据示例A1的数据处理系统,其中核支持read_tagged_page指令,该指令在执行时使得核能够:(a) 使用存储器标签值来从指定的源页内的标记的存储器的多个子页读取数据;以及(b) 将数据复制到指定的目标页。示例A8还可包括示例A2-A7中的任何一个或多个示例的特征。
示例A9是根据示例A8的数据处理系统,其中:(a) 存储器标签值包括至少一个KeyID;使用存储器标签值来从指定的源页内的标记的存储器的多个子页读取数据的操作包括使用对应于KeyID的密钥来对数据进行解密;并且将数据复制到指定的目标页的操作包括将解密后的数据复制到指定的目标页。
示例B1是至少一种非暂时性机器可访问介质,它包括用于支持子页粒度的存储器标签的计算机指令。这些计算机指令响应于在数据处理系统上执行而使得数据处理系统能够:(a) 使用作为存储器地址的部分供应的存储器标签值来指定对存储在数据处理系统的RAM中的数据页内的位置处的数据的保护,其中位置基于作为存储器地址的另一部分供应的位置值,其中RAM响应于数据处理系统中的存储器控制器,并且其中存储器控制器中的存储器保护模块使得存储器控制器能够基于存储器标签值来保护RAM中的数据;以及(b) 通过使用MTM对从RAM换出的数据页内的各自子页应用存储器标签值而将数据页从RAM换出到数据处理系统的NVS。
示例B2是根据示例B1的至少一种机器可访问介质,其中指令在执行时进一步使得数据处理系统能够通过对换回到RAM中的数据页内的各自子页应用存储器标签值而将数据页换回到RAM中。
示例B3是根据示例B1的至少一种机器可访问介质,其中指令在执行时进一步使得数据处理系统能够通过以下步骤来管理COW:(a) 自动确定是否对RAM中的共享数据页触发了COW,其中共享页由第一进程和第二进程共享;(b) 响应于确定对共享数据页触发了COW,使用与共享数据页相关联的存储器标签值来将数据复制到新页;以及(c) 更新第一进程的页表,以便将新页映射到第一进程的虚拟地址空间。示例B3还可包括示例B2的特征。
示例C1是一种用于在数据处理系统中管理子页粒度的存储器标签的方法。该方法包括:(a)结合将数据页从数据处理系统中的RAM换出到数据处理系统中的NVS,使用MTM来对换出的页内的各自子页应用存储器标签值;以及(b)结合将数据页从NVS换回到RAM中,对换回到RAM中的页内的各自子页应用存储器标签值。
示例C2是根据示例C1的方法,它进一步包括当某个进程访问页内的特定子页时:(a) 该进程包括作为该特定子页的虚拟地址的部分的该特定子页的存储器标签值;并且(b) 该进程还包括作为该特定子页的虚拟地址的部分的位置值。
示例C3是根据示例C1的方法,其中:(a) 至少一个存储器标签值包括由在数据处理系统上的进程中运行的应用指定的标签值;并且(b) 使用MTM对换出的页内的各自子页应用存储器标签值的操作至少部分地由在数据处理系统上运行的操作系统执行。示例C3还可包括示例C2的特征。
示例C4是根据示例C1的方法,它进一步包括:(a) 自动确定是否对RAM中的共享数据页触发了COW,其中共享页由第一进程和第二进程共享;(b) 响应于确定对共享数据页触发了COW,使用与共享数据页内的各自子页相关联的存储器标签值来将数据复制到RAM中的新页;以及(c) 更新第一进程的页表,以便将新页映射到第一进程的虚拟地址空间。示例C4还可包括示例C2-C3中的任何一个或多个示例的特征。
示例C5是根据示例C1的方法,它进一步包括:自动维持系统MTM,系统MTM为映射到虚拟页的标记的存储器的每个物理行标识适当的存储器标签值。示例C5还可包括示例C2-C4中的任何一个或多个示例的特征。
示例C6是根据示例C5的方法,其中系统MTM存储在数据处理系统的响应于存储器控制器的隐蔽存储器中,其中隐蔽存储器对于数据处理系统中的OS不可直接访问。
示例C7是根据示例C5的方法,它进一步包括:响应于为特权read_memory_metadata指令供应RAM中的子页的物理地址,使用特权read_memory_metadata指令从隐蔽存储器中的系统MTM获得RAM中的该子页的存储器标签值。示例C7还可包括示例C6的特征。
示例C8是根据示例C1的方法,它进一步包括:(a) 使用read_tagged_page指令来使用存储器标签值从指定的源页内的标记的存储器的多个子页读取数据;以及(b) 使用从源页读取的数据来更新指定的目标页。示例C8还可包括示例C2-C7中的任何一个或多个示例的特征。
鉴于可从本文中描述的示例实施例容易地衍生出的各种各样的有用置换,本详细描述意指为只是说明性的,并且不应视为限制覆盖范围。
Claims (21)
1.一种支持子页粒度的存储器标签的数据处理系统,所述数据处理系统包括:
至少一个核;
响应于所述核的存储器控制器;
响应于所述存储器控制器的随机存取存储器(RAM);以及
位于所述存储器控制器中的存储器保护模块;
其中所述存储器保护模块使得所述存储器控制器能够使用作为存储器地址的部分提供的存储器标签值,来保护存储在基于作为所述存储器地址的另一部分提供的位置值的位置处的数据;并且
其中所述存储器控制器使得所述数据处理系统中的操作系统(OS)能够通过使用存储器标签映射(MTM)对要从所述RAM被换出的数据页内的各自子页应用存储器标签值,而将所述数据页从所述RAM换出到非易失性存储设备(NVS)。
2.如权利要求1所述的数据处理系统,其中所述存储器控制器使得所述OS能够通过对被换回到RAM中的所述数据页内的各自子页应用存储器标签值,而将所述数据页换回到所述RAM中。
3.如权利要求1所述的数据处理系统,其中所述存储器控制器使得所述OS能够通过以下步骤来管理写时复制(COW):
响应于确定对RAM中的共享数据页触发了COW,其中所述共享页由第一进程和第二进程共享,使用与在所述共享数据页内的各自子页相关联的存储器标签值来将所述数据复制到RAM中的新页;以及
更新所述第一进程的页表,以便将所述新页映射到所述第一进程的虚拟地址空间。
4.如权利要求1所述的数据处理系统,其中所述核配置成自动维持系统MTM,所述系统MTM为映射到虚拟页的标记的存储器的每个物理行标识适当的存储器标签值。
5.如权利要求4所述的数据处理系统,进一步包括:
响应于所述存储器控制器的隐蔽存储器,其中所述隐蔽存储器对于所述OS不可直接访问;并且
其中所述存储器控制器配置成将所述系统MTM存储在所述隐蔽存储器中。
6.如权利要求5所述的数据处理系统,其中所述隐蔽存储器包括纠错码(ECC)存储器。
7.如权利要求5所述的数据处理系统,其中所述核支持特权read_memory_metadata指令,所述指令在被执行时使得所述核能够响应于为所述read_memory_metadata指令供应RAM中的子页的物理地址,而从所述隐蔽存储器中的所述系统MTM获得所述RAM中的子页的存储器标签值。
8.如权利要求1所述的数据处理系统,其中所述核支持read_tagged_page指令,所述指令在被执行时使得所述核能够:
使用存储器标签值来从指定的源页内的标记的存储器的多个子页读取数据;以及
将所述数据复制到指定的目标页。
9.如权利要求8所述的数据处理系统,其中:
所述存储器标签值包括至少一个密钥标识符(KeyID);
使用存储器标签值来从所述指定的源页内的标记的存储器的多个子页读取数据的所述操作包括使用对应于所述KeyID的密钥来对所述数据进行解密;并且
将所述数据复制到所述指定的目标页的所述操作包括将所述解密后的数据复制到所述指定的目标页。
10.一种用于在数据处理系统中管理子页粒度的存储器标签的方法,所述方法包括:
结合将数据页从所述数据处理系统中的随机存取存储器(RAM)换出到所述数据处理系统中的非易失性存储设备(NVS),使用存储器标签映射(MTM)来对被换出的所述页内的各自子页应用存储器标签值;以及
结合将所述数据页从NVS换回到RAM中,对被换回到RAM中的所述页内的各自子页应用存储器标签值。
11.如权利要求10所述的方法,进一步包括当进程访问所述页内的特定子页时:
所述进程包括作为那个特定子页的虚拟地址的部分的那个特定子页的所述存储器标签值;并且
所述进程还包括作为那个特定子页的所述虚拟地址的部分的位置值。
12.如权利要求10所述的方法,其中:
所述存储器标签值中的至少一个存储器标签值包括由在所述数据处理系统上的进程中运行的应用指定的标签值;并且
使用所述MTM对被换出的所述页内的各自子页应用存储器标签值的所述操作至少部分地由在所述数据处理系统上运行的操作系统执行。
13.如权利要求10所述的方法,进一步包括:
自动确定是否对RAM中的共享数据页触发了写时复制(COW),其中所述共享页由第一进程和第二进程共享;
响应于确定对所述共享数据页触发了COW,使用与所述共享数据页内的各自子页相关联的存储器标签值来将所述数据复制到RAM中的新页;以及
更新所述第一进程的页表,以便将所述新页映射到所述第一进程的虚拟地址空间。
14.如权利要求10所述的方法,进一步包括:
自动维持系统MTM,所述系统MTM为被映射到虚拟页的标记的存储器的每个物理行标识适当的存储器标签值。
15.如权利要求14所述的方法,其中所述系统MTM存储在所述数据处理系统的响应于所述存储器控制器的隐蔽存储器中,其中所述隐蔽存储器对于所述数据处理系统中的操作系统(OS)不可直接访问。
16.如权利要求15所述的方法,进一步包括:
响应于为read_memory_metadata指令供应RAM中的子页的物理地址,使用特权read_memory_metadata指令从所述隐蔽存储器中的所述系统MTM获得所述RAM中的所述子页的存储器标签值。
17.如权利要求15所述的方法,其中所述隐蔽存储器包括纠错码(ECC)存储器。
18.如权利要求10所述的方法,进一步包括:
使用read_tagged_page指令来使用存储器标签值从指定的源页内的标记的存储器的多个子页读取数据;以及
使用从所述源页读取的所述数据来更新指定的目标页。
19.如权利要求18所述的方法,其中:
所述存储器标签值包括至少一个密钥标识符(KeyID);
使用存储器标签值来从所述指定的源页内的标记的存储器的多个子页读取数据的所述操作包括使用对应于所述KeyID的密钥来对所述数据进行解密;并且
将更新所述指定的目标页的所述操作包括将所述解密后的数据复制到所述指定的目标页。
20.至少一种机器可访问介质,包括计算机指令,所述计算机指令当在数据处理系统上执行时使得所述数据处理系统能够执行权利要求10到19中任一项所述的方法。
21.一种支持子页粒度的存储器标签的数据处理系统,所述数据处理系统包括用于执行权利要求10到19中任一项所述的方法的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/288,844 US11003584B2 (en) | 2019-02-28 | 2019-02-28 | Technology for managing memory tags |
US16/288844 | 2019-02-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625478A true CN111625478A (zh) | 2020-09-04 |
Family
ID=66949538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010128967.3A Pending CN111625478A (zh) | 2019-02-28 | 2020-02-28 | 管理存储器标签的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11003584B2 (zh) |
EP (1) | EP3702924B1 (zh) |
CN (1) | CN111625478A (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884952B2 (en) * | 2016-09-30 | 2021-01-05 | Intel Corporation | Enforcing memory operand types using protection keys |
US11868273B2 (en) | 2019-06-29 | 2024-01-09 | Intel Corporation | Memory protection with hidden inline metadata to indicate data type |
US20210144170A1 (en) * | 2019-11-09 | 2021-05-13 | Indian Institute Of Science | System and method for protection against side channel attacks |
GB2594062B (en) * | 2020-04-14 | 2022-07-27 | Advanced Risc Mach Ltd | Data integrity check for granule protection data |
EP3916568A1 (en) * | 2020-05-29 | 2021-12-01 | ARM Limited | Tag checking apparatus and method |
CN112817775A (zh) * | 2020-08-19 | 2021-05-18 | 北京辰信领创信息技术有限公司 | 多个实体高效同时利用有限共享的方法 |
TWI764771B (zh) * | 2021-06-29 | 2022-05-11 | 群聯電子股份有限公司 | 跨框編碼管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN113434331B (zh) * | 2021-07-05 | 2023-07-25 | 群联电子股份有限公司 | 跨框编码管理方法、存储器存储装置及存储器控制电路 |
US20230029331A1 (en) * | 2021-07-26 | 2023-01-26 | Microsoft Technology Licensing, Llc | Dynamically allocatable physically addressed metadata storage |
US11940927B2 (en) * | 2022-06-14 | 2024-03-26 | Intel Corporation | Technologies for memory tagging |
WO2024082232A1 (zh) * | 2022-10-20 | 2024-04-25 | 华为技术有限公司 | 一种内存访问控制方法和装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4922414A (en) * | 1982-12-17 | 1990-05-01 | Symbolics Inc. | Symbolic language data processing system |
US5335334A (en) * | 1990-08-31 | 1994-08-02 | Hitachi, Ltd. | Data processing apparatus having a real memory region with a corresponding fixed memory protection key value and method for allocating memories therefor |
US7734926B2 (en) * | 2004-08-27 | 2010-06-08 | Microsoft Corporation | System and method for applying security to memory reads and writes |
US10489309B2 (en) | 2014-10-21 | 2019-11-26 | Intel Corporation | Memory protection key architecture with independent user and supervisor domains |
US9870467B2 (en) * | 2015-03-27 | 2018-01-16 | Intel Corporation | Apparatus and method for implementing a forked system call in a system with a protected region |
US9904805B2 (en) * | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
US10594491B2 (en) | 2015-12-24 | 2020-03-17 | Intel Corporation | Cryptographic system memory management |
US9990249B2 (en) * | 2015-12-24 | 2018-06-05 | Intel Corporation | Memory integrity with error detection and correction |
US10585809B2 (en) | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
US10235304B2 (en) | 2016-10-01 | 2019-03-19 | Intel Corporation | Multi-crypto-color-group VM/enclave memory integrity method and apparatus |
US10387305B2 (en) | 2016-12-23 | 2019-08-20 | Intel Corporation | Techniques for compression memory coloring |
US10896267B2 (en) * | 2017-01-31 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Input/output data encryption |
US10540297B2 (en) * | 2017-08-03 | 2020-01-21 | Arm Limited | Memory organization for security and reliability |
US10678636B2 (en) | 2018-02-28 | 2020-06-09 | Intel Corporation | Techniques for detecting and correcting errors in data |
US10684945B2 (en) | 2018-03-29 | 2020-06-16 | Intel Corporation | System, apparatus and method for providing key identifier information in a non-canonical address space |
US10838773B2 (en) | 2018-03-30 | 2020-11-17 | Intel Corporation | Techniques for dynamic resource allocation among cryptographic domains |
US11630920B2 (en) * | 2018-06-29 | 2023-04-18 | Intel Corporation | Memory tagging for side-channel defense, memory safety, and sandboxing |
US10877897B2 (en) * | 2018-11-02 | 2020-12-29 | Intel Corporation | System, apparatus and method for multi-cacheline small object memory tagging |
US11288213B2 (en) * | 2019-03-29 | 2022-03-29 | Intel Corporation | Memory protection with hidden inline metadata |
-
2019
- 2019-02-28 US US16/288,844 patent/US11003584B2/en active Active
-
2020
- 2020-01-27 EP EP20153932.7A patent/EP3702924B1/en active Active
- 2020-02-28 CN CN202010128967.3A patent/CN111625478A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20190196977A1 (en) | 2019-06-27 |
US11003584B2 (en) | 2021-05-11 |
EP3702924B1 (en) | 2023-01-04 |
EP3702924A1 (en) | 2020-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3702924B1 (en) | Technology for managing memory tags | |
US11636049B2 (en) | Memory protection with hidden inline metadata | |
US20210374069A1 (en) | Method, system, and apparatus for page sizing extension | |
US11630920B2 (en) | Memory tagging for side-channel defense, memory safety, and sandboxing | |
KR930009062B1 (ko) | 가상 메모리 장치를 갖는 계산장치 | |
US7213125B2 (en) | Method for patching virtually aliased pages by a virtual-machine monitor | |
US8190914B2 (en) | Method and system for designating and handling confidential memory allocations | |
US8719548B2 (en) | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor | |
US6789156B1 (en) | Content-based, transparent sharing of memory units | |
US20160188911A1 (en) | Process authenticated memory page encryption | |
US7512767B2 (en) | Data compression method for supporting virtual memory management in a demand paging system | |
US7383374B2 (en) | Method and apparatus for managing virtual addresses | |
US10387305B2 (en) | Techniques for compression memory coloring | |
US6785790B1 (en) | Method and apparatus for storing and retrieving security attributes | |
US10877897B2 (en) | System, apparatus and method for multi-cacheline small object memory tagging | |
JP2021512400A (ja) | メモリ・アクセスにおける保護タグ・チェックの制御 | |
TWI648625B (zh) | 管理位址獨立的頁面屬性 | |
US20160041917A1 (en) | System and method for mirroring a volatile memory of a computer system | |
US20200201791A1 (en) | System, method and apparatus for fine granularity access protection | |
JP2023039697A (ja) | メモリシステム | |
US11836094B2 (en) | Cryptographic data objects page conversion | |
US20220123930A1 (en) | Process object re-keying during process creation in cryptographic computing | |
KR20070096538A (ko) | 메모리 보호 영역의 정보 보호 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |