CN111857947B - 内存隔离方法、隔离检查电路和cpu芯片 - Google Patents

内存隔离方法、隔离检查电路和cpu芯片 Download PDF

Info

Publication number
CN111857947B
CN111857947B CN202010533641.9A CN202010533641A CN111857947B CN 111857947 B CN111857947 B CN 111857947B CN 202010533641 A CN202010533641 A CN 202010533641A CN 111857947 B CN111857947 B CN 111857947B
Authority
CN
China
Prior art keywords
memory
address
access
request
isolation
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.)
Active
Application number
CN202010533641.9A
Other languages
English (en)
Other versions
CN111857947A (zh
Inventor
姜莹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202010533641.9A priority Critical patent/CN111857947B/zh
Publication of CN111857947A publication Critical patent/CN111857947A/zh
Application granted granted Critical
Publication of CN111857947B publication Critical patent/CN111857947B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本公开涉及一种内存隔离方法,包括:接收内存访问请求,内存访问请求中包括请求访问的内存页的访问地址;在内存分页保护信息表中查找与访问地址相对应的表项,与访问地址相对应的表项的索引值根据访问地址来确定;以及基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。本公开的内存隔离方法至少具有以下技术效果之一:采用分页的方式将地址空间划分为大小相等的内存页,使得内存页的个数能够满足安全虚拟机或者虚拟机安全应用数量的需求,并且根据访问请求中的访问地址确定查找表项的索引值,能够显著提升表项的查找速率。

Description

内存隔离方法、隔离检查电路和CPU芯片
技术领域
本公开涉及虚拟机安全技术领域,具体地,涉及一种内存隔离方法、隔离检查电路和CPU芯片。
背景技术
虚拟机技术是指在一套计算机设备中模拟出具有完整硬件系统功能并且能够运行在一个完全隔离环境中的完整计算机系统的技术。在计算机中创建虚拟机时,需要将实体机的部分内存容量作为虚拟机的内存容量,虚拟机内存运行的安全性直接决定虚拟机运行的安全性。现有的虚拟化技术能够实现对虚拟机管理器(Hypervisor)的物理内存和每个虚拟机(Virtual Machine)的物理内存分别使用不同的密钥进行加密。密钥只能通过特殊的安全处理器进行管理,处理器不能直接访问密钥,这样就可以隔离不安全的虚拟机间内存互访,或者虚拟机管理器对虚拟机内存的不安全访问。然而,上述方式存在以下不足:对内存加解密会降低系统访问内存的性能;无法完全阻止虚拟机管理器访问虚拟机加密以后的内存;同一虚拟机不同应用之间无法隔离内存访问。
发明内容
在下文中将给出关于本公开的简要概述,以便提供关于本公开的某些方面的基本理解。应当理解,此概述并不是关于本公开的穷举性概述。它并不是意图确定本公开的关键或重要部分,也不是意图限定本公开的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
根据本公开的第一方面,提供了一种内存隔离方法,包括:
接收内存访问请求,内存访问请求中包括请求访问的内存页的访问地址;
在内存分页保护信息表中查找与访问地址相对应的表项,与访问地址相对应的表项的索引值根据访问地址来确定;以及
基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。
在一个实施例中,访问地址包括内存访问主体标签和请求地址,和/或,表项中的信息包括表项有效位和允许访问的内存访问主体标签。
在一个实施例中,索引值根据访问地址中的内存访问主体标签和请求地址的一部分来确定。
在一个实施例中,请求地址的一部分的位数根据内存分页保护信息表中的表项的个数来确定。
在一个实施例中,访问地址还包括隔离内存请求标识。
在一个实施例中,内存隔离方法还包括:
当隔离内存请求标识为无效时,或者表项有效位为无效时,隔离检查成功。
在一个实施例中,内存隔离方法还包括:
当隔离内存请求标识为有效,表项有效位为有效,且访问地址中的内存访问主体标签与表项中允许访问的内存访问主体标签一致时,隔离检查成功。
在一个实施例中,内存隔离方法还包括:
当请求地址未落在需要进行隔离检查的地址范围内,或者表项有效位为无效时,隔离检查成功。
在一个实施例中,内存隔离方法还包括:
当请求地址落在需要进行隔离检查的地址范围内,表项有效位为有效,且访问地址中的内存访问主体标签与表项中允许访问的内存访问主体标签一致时,隔离检查成功。
在一个实施例中,内存访问主体标签包括虚拟机、虚拟机管理器和/或虚拟机中的应用的标识。
根据本公开的第二方面,提供一种隔离检查电路,包括:
存储单元,存储有内存分页保护信息表;和
判断逻辑单元,用于
接收内存访问请求,内存访问请求包括请求访问的内存页的访问地址;
在内存分页保护信息表中查找与访问地址相对应的表项,与访问地址相对应的表项的索引值根据访问地址来确定;以及
基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。
在一个实施例中,访问地址包括内存访问主体标签和请求地址,和/或,表项中的信息包括表项有效位和允许访问的内存访问主体标签。
在一个实施例中,判断逻辑单元还用于根据访问地址中的内存访问主体标签和请求地址的一部分来确定索引值。
在一个实施例中,判断逻辑单元还用于根据内存分页保护信息表中的表项的个数来确定请求地址的一部分的位数。
在一个实施例中,访问地址还包括隔离内存请求标识。
在一个实施例中,判断逻辑单元还用于当隔离内存请求标识为无效时,或者表项有效位为无效时,判断隔离检查成功。
在一个实施例中,判断逻辑单元还用于
当隔离内存请求标识为有效,表项有效位为有效,且访问地址中的内存访问主体标签与表项中允许访问的内存访问主体标签一致时,判断隔离检查成功。
在一个实施例中,隔离检查电路还包括寄存器,用于确定需要进行隔离检查的地址范围。
在一个实施例中,判断逻辑单元还用于
当请求地址未落在需要进行隔离检查的地址范围内,或者表项有效位为无效时,判断隔离检查成功。
在一个实施例中,判断逻辑单元还用于
当请求地址落在需要进行隔离检查的地址范围内,表项有效位为有效,且访问地址中的内存访问主体标签与表项中允许访问的内存访问主体标签一致时,判断隔离检查成功。
在一个实施例中,内存访问主体标签包括虚拟机、虚拟机管理器和/或虚拟机中的应用的标识。
根据本公开的第三方面,提供一种CPU芯片,包括至少一个晶粒和安全处理器,每个晶粒包括至少一个CPU核心,CPU核心中包括第二方面的隔离检查电路。
根据本公开的第三方面,提供一种CPU芯片,包括至少一个SOC芯片,SOC芯片中包括第二方面的隔离检查电路。
在一个实施例中,SOC芯片还包括安全处理器,内存分页保护信息表由安全处理器来配置。
根据本公开的第四方面,提供一种内存隔离装置,包括:
接收单元,被配置用于接收内存访问请求,内存访问请求中包括请求访问的内存页的访问地址;
查找单元,被配置用于在内存分页保护信息表中查找与访问地址相对应的表项,与访问地址相对应的表项的索引值根据访问地址来确定;以及
隔离检查单元,被配置用于基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。
本公开的技术方案至少具有以下技术效果之一:采用分页的方式将地址空间划分为大小相等的内存页,此种划分方式使得内存页的个数能够满足安全虚拟机或者虚拟机安全应用数量的需求,并且根据内存访问请求中的访问地址确定查找表项的索引值,能够显著提升表项的查找速率。
附图说明
本公开可以通过参考下文中结合附图所给出的描述而得到更好的理解,附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分。在附图中:
图1示出了根据本公开实施例的内存隔离系统的结构框图;
图2示出了根据本公开实施例的内存隔离方法的流程示意图;
图3示出了根据本公开实施例的内存隔离装置的结构框图;
图4示出了根据本公开实施例的CPU芯片的结构框图;
图5示出了根据本公开另一实施例的CPU芯片的结构框图。
具体实施方式
在下文中将结合附图对本公开的示例性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施例的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中可以做出很多特定于实施例的决定,以便实现开发人员的具体目标,并且这些决定可能会随着实施例的不同而有所改变。
在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本公开,在附图中仅仅示出了与根据本公开的方案密切相关的装置结构,而省略了与本公开关系不大的其他细节。
应理解的是,本公开并不会由于如下参照附图的描述而只限于所描述的实施形式。在本文中,在可行的情况下,实施例可以相互组合、不同实施例之间的特征替换或借用、在一个实施例中省略一个或多个特征。
虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在计算机中创建虚拟机时,需要将实体机的部分内存容量作为虚拟机的内存容量,虚拟机内存运行的安全性直接决定虚拟机运行的安全性。现有技术中常采用分段的方式将地址空间划分为多个大小相等或者不等的内存段,并形成内存分段保护信息表,此种划分方式形成的内存段的个数有限,无法满足安全虚拟机或者虚拟机安全应用数量的需求。当隔离检查电路接收到内存访问请求时,需要在内存分段保护信息表中查找与内存访问请求中的访问地址相对应的表项,上述分段划分方式使得查找过程一般采用表项中物理地址的上、下限的方式,使得查找速率较低。本公开提供一种内存隔离方法,采用分页的方式将地址空间划分为大小相等的内存页,此种划分方式使得内存页的个数能够满足安全虚拟机或者虚拟机安全应用数量的需求,并且根据内存请求中的访问地址确定查找表项的索引值,并根据索引值来查找与访问地址对应的表项,能够显著提升表项的查找速率。
图1示出了根据本公开实施例的内存隔离系统100的结构框图。系统100包括安全处理器110、内存访问主体120、隔离检查电路130和内存模块140。下面详细描述上述每个模块的实现功能。
安全处理器110用于在隔离检查电路130启用之前,根据系统需求将内存分页保护信息表配置在隔离检查电路130中,这里,内存分页保护信息表中的表项信息可以包括表项有效位Valid、允许访问的内存访问主体标签ASID_protection和读写权限,表项对应的页大小可以为安全处理器110设置的一个固定值,例如可以为2M、4M和8M等,页大小的具体值可以根据内存使用情况灵活调整,分页应该覆盖所有需要隔离检查的内存空间。
内存访问主体120可以是虚拟机、虚拟机管理器和/或虚拟机中的应用,用于向内存模块140提出内存访问请求。这里,内存访问请求中可以包括请求访问的内存页的访问地址,该访问地址至少包括内存访问主体标签ASID_request和请求地址address,其中,内存访问主体标签ASID_request为虚拟机安全标识,用来标识虚拟机、虚拟机管理器或者虚拟机中需要区分的进程、线程或者应用,ASID_request的位数可以根据需要灵活调整。另外,该访问地址还可以包括内存加密标识c-bit,用于标识是否需要进行内存加密。在其他实施例中,该访问地址还可以包括隔离内存请求标识I-bit,隔离内存请求标识I-bit用于标识是否是需要做隔离的内存请求,其生成需要是安全的,不应受到攻击软件的篡改。
隔离检查电路130可以包括存储单元131和判断逻辑单元132,隔离检查电路130可以设置在存储管理单元、片内互联网络或者内存控制器中。这里,存储单元131用于存储内存分页保护信息表,判断逻辑单元132用于接收内存访问主体120发出的内存访问请求,并在内存分页保护信息表中查找与访问地址相对应的表项。这里,查找与访问地址相对应的表项,具体可以包括:根据访问地址中的内存访问主体标签ASID_request和请求地址address的一部分来确定索引值,并根据索引值在内存分页保护信息表中查找索引值对应的表项。进一步地,判断逻辑单元132还用于基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。具体地,判断逻辑单元132还用于当隔离内存请求标识I-bit为无效时,或者表项有效位Valid为无效时,判断隔离检查成功;或者,当隔离内存请求标识I-bit为有效,表项有效位Valid为有效,且访问地址中的内存访问主体标签ASID_request与表项中允许访问的内存访问主体标签ASID_protection一致时,判断隔离检查成功。进一步地,在其他实施例中,隔离检查成功的条件还可以包括内存访问主体的读写方向满足表项的读写权限要求。不符合以上条件的,隔离检查失败,并且拒绝执行内存访问,这里,拒绝执行内存访问的方式,包括但不限于返回无效的数据信息、产生非法访问的中断。在其他实施例中,隔离检查电路还可以包括寄存器133,该寄存器133用于表示需要进行隔离检查的地址范围;当访问地址中的请求地址落在需要进行隔离检查的地址范围内,则需要进行隔离检查,否则,不进行隔离检查。需要说明的是,访问地址为隔离检查电路所接收的地址,根据隔离检查电路所在的硬件模块不同,访问地址的定义不同,例如,当隔离检查电路放置在CPU核心逻辑地址到物理地址之前,访问地址可以是逻辑地址;当隔离检查电路放置在CPU核心逻辑地址到物理地址之后,访问地址可以是物理地址;当隔离检查电路放置在内存控制器中,访问地址可以是内存地址。
图2示出了根据本公开实施例的内存隔离方法200的流程示意图。方法200开始于步骤210,接收内存访问请求。这里,内存访问请求中包括请求访问的内存页的访问地址,该访问地址可以包括内存访问主体标签ASID_request和请求地址address,其中,内存访问主体标签ASID_request为虚拟机安全标识,用来标识虚拟机、虚拟机管理器或者虚拟机中需要区分的进程、线程或者应用,ASID_request的位数可以根据需要灵活调整;另外,该访问地址还可以包括内存加密标识c-bit,用于标识是否需要进行内存加密,当内存加密标识c-bit为有效时,需要对访问的内存进行加密。进一步地,访问地址还可以包括隔离内存请求标识I-bit,用于标识是否是需要做隔离的内存请求,其生成需要是安全的,不应受到攻击软件的篡改。这里,内存访问主体标签ASID_request可以包括虚拟机、虚拟机管理器和/或虚拟机中的应用的标识。
然后,在步骤220,在内存分页保护信息表中查找与访问地址相对应的表项。这里,与访问地址相对应的表项的索引值根据访问地址来确定。表项中的信息可以包括表项对应的表项有效位Valid、允许访问的内存访问主体标签ASID_protection和读写权限,表项对应的页大小可以为安全处理器设置的一个固定值,例如可以为2M、4M和8M等,页大小的具体值可以根据内存使用情况灵活调整,分页应该覆盖所有需要隔离检查的内存空间。这里,索引值可以根据访问地址中的内存访问主体标签ASID_request和请求地址address的一部分来确定,具体地,请求地址的一部分的位数根据内存分页保护信息表中的表项的个数来确定,当确定请求地址的一部分的位数后,在请求地址中从高位开始选取上述位数的比特位作为用于确定索引值的请求地址的一部分。例如,大小为16M的内存页,访问地址为48位,访问地址中的内存访问主体标签ASID_request为4位,使用bit[46:43],请求地址address为42位,使用bit[41:0],本实施例中确定索引值所使用的请求地址的一部分可以为bit[41:24],将ASID_request所使用的bit[46:43]作为页表偏移,和bit[41:24]组合形成索引值,则与访问地址对应的表项的索引值为{bit[46:43],bit[41:24]},请求地址的剩余部分为bit[23:0]作为页偏移。需要说明的是索引值所使用的请求地址的一部分的位数与内存页的个数相关,不同的访问地址采用上述方法确定的索引值不同,可以对应不同的表项,从而实现利用索引值查找访问地址对应的表项的目的。
然后,在步骤230,基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。
具体地,隔离检查成功的判断条件,可以为:当访问地址中的隔离内存请求标识I-bit为无效时,或者表项有效位Valid为无效时,隔离检查成功,否则隔离检查失败。这里,隔离内存请求标识I-bit和表项位Valid是否有效的表示方式不受限制,可以是I-bit,Valid,1:有效,0:无效;也可以是0:有效,1:无效。可选地,隔离检查成功的判断条件,也可以为:当隔离内存请求标识I-bit为有效,表项有效位Valid为有效,且访问地址中的内存访问主体标签ASID_request与表项中允许访问的内存访问主体标签ASID_protection一致时,隔离检查成功。进一步地,在其他实施例中,隔离检查成功的条件还可以包括内存访问主体的读写方向满足表项的读写权限要求。不符合以上条件的,隔离检查失败,并且拒绝执行内存访问,这里,拒绝执行内存访问的方式,包括但不限于返回无效的数据信息、产生非法访问的中断。
为了便于理解上述实施例内存隔离保护方法,将具体实现方法举例如下。
1)从内存访问请求中获得物理地址为48位,包括:
c-bit:1位,内存加密标识,使用bit[47];当c-bit=0,无效,当c-bit=1,有效;
ASID_request:4位,内存访问主体标签,使用bit[46:43];
I-bit:1位,隔离内存请求标识,使用bit[42],当I-bit=0,无效,当I-bit=1,有效;
address:42位,请求地址,使用bit[41:0]。
2)从表项中获得的信息包括:
表项有效位Valid,当“Valid=0”,无效,当“Valid=1”,有效;
ASID_protection:允许访问的内存访问主体标签。
3)确定物理地址对应的索引值
当页大小为16M时,将{bit[46:43],bit[41:24]}作为物理地址对应的索引值。
4)当“I-bit=0”或者“Valid=0”时,隔离检查成功,允许执行正常内存访问。
5)当“I-bit=1”,“Valid=1”且“ASID_request=ASID_protection”时,隔离检查成功,允许执行正常内存访问。
6)其他情况隔离检查失败,拒绝执行内存访问。
7)当“c-bit=0”,无需对内存进行加密;当“c-bit=1”,需要对内存进行加密。
本实施例采用分页的方式将地址空间划分为大小相等的内存页,此种划分方式使得内存页的个数能够满足安全虚拟机或者虚拟机安全应用数量的需求;基于索引值查找与访问地址对应的表项,能够显著提升表项的查找速率。
本实施例能安全隔离不同虚拟机、虚拟机与虚拟机管理器、同一虚拟机不同应用之间的内存互访,通过设置内存加密标识c-bit使得本实施例既能与内存加密技术(如虚拟化技术)共同使用又可以单独使用。如果与内存加密技术结合使用,使得虚拟机之间、虚拟机管理器和虚拟机之间、同一虚拟机不同应用之间,在安全的物理内存空间访问隔离的同时又能对内存进行加密;如果单独使用,由于不需要内存加解密环节,在取得完全隔离虚拟机管理器对虚拟机的内存访问和虚拟机之间内存互访的安全前提下,可以达到比传统虚拟化技术更好的内存访问效率。
在另一实施例中,访问地址中可以不包括隔离内存请求标识,可以设置需要进行隔离检查的地址范围,该地址范围可以利用寄存器设置在隔离检查电路中。本实施例中,访问地址包括内存访问主体标签和请求地址,和/或,表项中的信息包括:表项有效位和允许访问的内存访问主体标签;当访问地址中的请求地址未落在需要进行隔离检查的地址范围内,或者表项有效位为无效时,所述隔离检查成功;或者,当所述请求地址落在需要进行隔离检查的地址范围内,所述表项有效位为有效,且所述访问地址中的内存访问主体标签与所述表项中允许访问的内存访问主体标签一致时,所述隔离检查成功。
为了便于理解上述实施例内存隔离保护方法,现举例说明如下:
1)从内存访问请求中获得物理地址为48位,包括:
c-bit:1位,内存加密标识,使用bit[47];当c-bit=0,无效,当c-bit=1,有效;
ASID_request:4位,内存访问主体标签,使用bit[46:43];
address:43位,请求地址,使用bit[42:0]。
2)从表项中获得的信息包括:
表项有效位Valid,当“Valid=0”,无效,当“Valid=1”,有效;
ASID_protection:允许访问的内存访问主体标签。
3)确定需要进行隔离检查的地址范围[a,b]。
4)确定物理地址对应的索引值
当页大小为16M时,将{bit[46:43],bit[42:25]}作为物理地址对应的索引值。
5)当“请求地址address未落在需要进行隔离检查的地址范围[a,b]内”或者“Valid=0”时,隔离检查成功,允许执行正常内存访问。
6)当“请求地址address落在需要进行隔离检查的地址范围[a,b]内”,“Valid=1”且“ASID_request=ASID_protection”时,隔离检查成功,允许执行正常内存访问。
7)其他情况隔离检查失败,拒绝执行内存访问。
8)当“c-bit=0”,无需对内存进行加密;当“c-bit=1”,需要对内存进行加密。
上述实施例,通过设置需要进行隔离检查的地址范围的方式来确定是否需要对访问请求进行隔离检查,使得本实施例的方法实现方式更具灵活性。
图3示出了根据本公开实施例的内存隔离装置300的结构框图,装置300包括:接收单元310,被配置用于接收内存访问请求,内存访问请求中包括请求访问的内存页的访问地址。
查找单元320,被配置用于在内存分页保护信息表中查找与访问地址相对应的表项,与访问地址相对应的表项的索引值根据访问地址来确定;以及
隔离检查单元330,被配置用于基于访问地址和表项对内存访问请求进行隔离检查,当隔离检查成功时,允许访问请求访问的内存页。
本实施例中的内存隔离装置的各个单元的实现功能与前述实施例中的内存隔离方法的实现功能相同,这里不再具体描述。
本实施例采用分页的方式将地址空间划分为大小相等的内存页,此种划分方式使得内存页的个数能够满足安全虚拟机或者虚拟机安全应用数量的需求;基于索引值查找与访问地址对应的表项,能够显著提升表项的查找速率。
本公开还提供一种中央处理器(Central Processing Unit:CPU)芯片,
图4示出了根据本公开实施例的CPU芯片400的结构框图。CPU芯片400,包括至少一个晶粒410和安全处理器420,每个晶粒410包括至少一个CPU核心430,其中一个CPU核心430中包括上述的隔离检查电路。这里,隔离检查电路的具体结构和实现功能与前述实施例相同,不再具体介绍。
图5示出了根据本公开另一实施例的CPU芯片500的结构框图。CPU芯片500,包括至少一个系统芯片(System-On-Chip:SOC)510,其中一个SOC芯片510中包括上述的隔离检查电路。这里,隔离检查电路的具体结构和实现功能与前述实施例相同,不再具体介绍。进一步地,SOC芯片510还包括安全处理器,内存分页保护信息表由安全处理器配置在隔离检查电路中。
尽管已经描述了示例实施例,但是对于本领域技术人员来说显而易见的是,在不脱离本发明构思的精神和范围的情况下,可以进行各种改变和修改。因此,应当理解,上述示例实施例不是限制性的,而是说明性的。

Claims (21)

1.一种内存隔离方法,包括:
接收内存访问请求,所述内存访问请求中包括请求访问的内存页的访问地址;
在内存分页保护信息表中查找与所述访问地址相对应的表项;以及基于所述访问地址和所述表项对所述内存访问请求进行隔离检查,当所述隔离检查成功时,允许访问所述请求访问的内存页;
其中,在内存分页保护信息表中查找与所述访问地址相对应的表项,包括:
根据访问地址中的内存访问主体标签和请求地址的一部分来确定索引值,并在所述内存分页保护信息表中查找所述索引值对应的表项;
其中,根据访问地址中的内存访问主体标签和请求地址的一部分来确定所述索引值,包括:
根据所述内存分页保护信息表中的表项的个数来确定所述访问地址中的请求地址的一部分的位数;
在所述请求地址中从高位开始选取所述位数的比特位,作为所述请求地址的一部分;
将所述请求地址的一部分和所述访问地址中的内存访问主体标签组合形成所述索引值。
2.如权利要求1所述的方法,其中,所述访问地址包括内存访问主体标签和请求地址,和/或,所述表项中的信息包括表项有效位和允许访问的内存访问主体标签。
3.如权利要求2所述的方法,其中,所述访问地址还包括隔离内存请求标识。
4.如权利要求3所述的方法,所述方法还包括:
当所述隔离内存请求标识为无效时,或者所述表项有效位为无效时,所述隔离检查成功。
5.如权利要求3所述的方法,所述方法还包括:
当所述隔离内存请求标识为有效,所述表项有效位为有效,且所述访问地址中的内存访问主体标签与所述表项中允许访问的内存访问主体标签一致时,所述隔离检查成功。
6.如权利要求2所述的方法,其中,所述方法还包括:
当所述请求地址未落在需要进行隔离检查的地址范围内,或者所述表项有效位为无效时,所述隔离检查成功。
7.如权利要求2所述的方法,其中,所述方法还包括:
当所述请求地址落在需要进行隔离检查的地址范围内,所述表项有效位为有效,且所述访问地址中的内存访问主体标签与所述表项中允许访问的内存访问主体标签一致时,所述隔离检查成功。
8.如权利要求2所述的方法,所述内存访问主体标签包括虚拟机、虚拟机管理器和/或虚拟机中的应用的标识。
9.一种隔离检查电路,包括:
存储单元,存储有内存分页保护信息表;和
判断逻辑单元,用于
接收内存访问请求,所述内存访问请求中包括请求访问的内存页的访问地址;
在内存分页保护信息表中查找与所述访问地址相对应的表项;以及
基于所述访问地址和所述表项对所述内存访问请求进行隔离检查,当所述隔离检查成功时,允许访问所述请求访问的内存页;
其中,所述判断逻辑单元,具体用于根据所述访问地址中的内存访问主体标签和所述请求地址的一部分来确定索引值,并在所述内存分页保护信息表中查找与所述索引值相对应的表项;
其中,所述判断逻辑单元,在根据所述访问地址中的内存访问主体标签和所述请求地址的一部分来确定所述索引值时,具体用于:
根据所述内存分页保护信息表中的表项的个数来确定所述访问地址中的请求地址的一部分的位数,在所述请求地址中从高位开始选取所述位数的比特位,作为所述请求地址的一部分,将所述请求地址的一部分和所述访问地址中的内存访问主体标签组合形成所述索引值。
10.如权利要求9所述的隔离检查电路,所述访问地址包括内存访问主体标签和请求地址,和/或,所述表项中的信息包括表项有效位和允许访问的内存访问主体标签。
11.如权利要求10所述的隔离检查电路,其中,所述访问地址还包括隔离内存请求标识。
12.如权利要求11所述的隔离检查电路,其中,所述判断逻辑单元还用于当所述隔离内存请求标识为无效时,或者所述表项有效位为无效时,判断隔离检查成功。
13.如权利要求11所述的隔离检查电路,其中,所述判断逻辑单元还用于
当所述隔离内存请求标识为有效,所述表项有效位为有效,且所述访问地址中的内存访问主体标签与所述表项中允许访问的内存访问主体标签一致时,判断隔离检查成功。
14.如权利要求10所述的隔离检查电路,其中,所述隔离检查电路还包括寄存器,用于确定需要进行隔离检查的地址范围。
15.如权利要求14所述的隔离检查电路,其中,所述判断逻辑单元还用于
当所述请求地址未落在需要进行隔离检查的地址范围内,或者所述表项有效位为无效时,判断隔离检查成功。
16.如权利要求14所述的隔离检查电路,其中,所述判断逻辑单元还用于
当所述请求地址落在需要进行隔离检查的地址范围内,所述表项有效位为有效,且所述访问地址中的内存访问主体标签与所述表项中允许访问的内存访问主体标签一致时,判断隔离检查成功。
17.如权利要求10所述的隔离检查电路,所述内存访问主体标签包括虚拟机、虚拟机管理器和/或虚拟机中的应用的标识。
18.一种CPU芯片,包括至少一个晶粒和安全处理器,每个所述晶粒包括至少一个CPU核心,所述CPU核心中包括如权利要求9-17中任一权利要求所述的隔离检查电路。
19.一种CPU芯片,包括至少一个SOC芯片,所述SOC芯片中包括如权利要求9-17中任一权利要求所述的隔离检查电路。
20.如权利要求19所述的CPU芯片,所述SOC芯片还包括安全处理器,内存分页保护信息表由所述安全处理器来配置。
21.一种内存隔离装置,包括:
接收单元,被配置用于接收内存访问请求,所述内存访问请求中包括请求访问的内存页的访问地址;
查找单元,被配置用于在内存分页保护信息表中查找与所述访问地址相对应的表项;以及
隔离检查单元,被配置用于基于所述访问地址和所述表项对所述内存访问请求进行隔离检查,当所述隔离检查成功时,允许访问所述请求访问的内存页;
其中,所述查找单元,具体被配置用于根据访问地址中的内存访问主体标签和请求地址的一部分来确定索引值,并根据索引值在所述内存分页保护信息表中查找索引值对应的表项;
其中,所述查找单元,在根据访问地址中的内存访问主体标签和请求地址的一部分来确定索引值时,具体用于:
根据所述内存分页保护信息表中的表项的个数来确定所述访问地址中的请求地址的一部分的位数,在所述请求地址中从高位开始选取所述位数的比特位,作为所述请求地址的一部分,将所述请求地址的一部分和所述访问地址中的内存访问主体标签组合形成所述索引值。
CN202010533641.9A 2020-06-11 2020-06-11 内存隔离方法、隔离检查电路和cpu芯片 Active CN111857947B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010533641.9A CN111857947B (zh) 2020-06-11 2020-06-11 内存隔离方法、隔离检查电路和cpu芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010533641.9A CN111857947B (zh) 2020-06-11 2020-06-11 内存隔离方法、隔离检查电路和cpu芯片

Publications (2)

Publication Number Publication Date
CN111857947A CN111857947A (zh) 2020-10-30
CN111857947B true CN111857947B (zh) 2023-08-08

Family

ID=72986111

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010533641.9A Active CN111857947B (zh) 2020-06-11 2020-06-11 内存隔离方法、隔离检查电路和cpu芯片

Country Status (1)

Country Link
CN (1) CN111857947B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631720B (zh) * 2020-12-23 2023-05-23 海光信息技术股份有限公司 内存控制方法、介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526693A (zh) * 2017-08-11 2017-12-29 致象尔微电子科技(上海)有限公司 一种基于线性映射表的内存隔离方法
CN109614204A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 内存隔离保护方法、隔离检查硬件、soc芯片和存储介质
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10169244B2 (en) * 2016-07-29 2019-01-01 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107526693A (zh) * 2017-08-11 2017-12-29 致象尔微电子科技(上海)有限公司 一种基于线性映射表的内存隔离方法
CN109614204A (zh) * 2018-12-21 2019-04-12 成都海光集成电路设计有限公司 内存隔离保护方法、隔离检查硬件、soc芯片和存储介质
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肖竞华,陈建勋.计算机操作系统原理-Linux实例分析.西安电子科技大学出版社,2008,112-113. *

Also Published As

Publication number Publication date
CN111857947A (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN109002706B (zh) 一种基于用户级页表的进程内数据隔离保护方法和系统
EP3716081B1 (en) Memory protection with hidden inline metadata
US9792448B2 (en) Cryptographic protection of information in a processing system
US9141558B2 (en) Secure memory control parameters in table look aside buffer data fields and support memory array
CN110928646B (zh) 一种访问共享内存的方法、装置、处理器和计算机系统
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
US20080201540A1 (en) Preservation of integrity of data across a storage hierarchy
CN109901911A (zh) 一种信息设置方法、控制方法、装置及相关设备
CN113094764A (zh) 虚拟gpu中的可信本地存储器管理
CN106716435B (zh) 设备与安全处理环境之间的接口
WO2017052981A1 (en) Cryptographic operations for secure page mapping in a virtual machine environment
US20200192825A1 (en) Security for virtualized device
CN107526974A (zh) 一种信息密码保护装置和方法
US11526451B2 (en) Secure address translation services using bundle access control
CN113934656A (zh) 使用密码保护的主机物理地址的安全地址转换服务
US11494523B2 (en) Direct memory access mechanism
KR20150079405A (ko) 보안 처리 환경으로부터의 기능의 오프로딩
CN110188051B (zh) 标记与物理地址相关的控制信息的方法、处理系统和设备
CN111857947B (zh) 内存隔离方法、隔离检查电路和cpu芯片
US20180053017A1 (en) Programmable logic device, information processing apparatus, and processing method
CN116126463A (zh) 内存访问方法、配置方法、计算机系统及相关器件
CN112416526B (zh) 一种直接存储访问方法、装置及相关设备
CN116257368A (zh) 一种计算机系统中的通信方法及相关产品
CN115461728A (zh) 针对颗粒保护数据的数据完整性检查
US20240202289A1 (en) Using Ownership Identifiers in Metadata in a Memory for Protecting Encrypted Data Stored in the Memory

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
CB02 Change of applicant information

Address after: 300450 Tianjin Binhai New Area Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8

Applicant after: Haiguang Information Technology Co.,Ltd.

Address before: 300450 Tianjin Binhai New Area Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8

Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant