一种机密计算协处理器的内存扩展系统和内存扩展方法转让专利

申请号 : CN202211118592.8

文献号 : CN115202892B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邵乐希蓝晏翔王嘉平

申请人 : 粤港澳大湾区数字经济研究院(福田)

摘要 :

本发明涉及机密计算协处理器技术领域,具体是涉及一种机密计算协处理器的内存扩展系统和内存扩展方法。本发明首先根据机密计算协处理器运行应用所需要的存储容量,得到需要扩展的内存大小。然后将需要扩展的内存大小发送给宿主机,宿主机将其内部的内存划分出来一部分作为机密计算协处理器的内存,以协助机密计算协处理器的运行。从上述分析,本发明是根据机密计算协处理器所需的存储量大小而将宿主机的内存扩展为机密计算协处理器的内存,从而实现了动态扩展机密计算协处理器的内存。另外使用宿主机扩展协处理器的内存,能够提高协处理器访问扩展的内存的速度。

权利要求 :

1.一种机密计算协处理器的内存扩展系统,其特征在于,包括如下组成部分:机密计算协处理器,为待扩展的协处理器;

控制器,与所述机密计算协处理器双向电连接,用于根据所述机密计算协处理器运行应用所需的内存存储容量,得到所述机密计算协处理器需扩展的内存;

宿主机,与所述控制器双向电连接,用于为所述机密计算协处理器提供需扩展的内存;

所述机密计算协处理器,包括如下组成部分:

块设备内核模块,用于输入扩展内存的请求;

第一通信模块,与所述块设备内核模块电连接,与所述控制器双向电连接,用于将扩展内存的请求传送至所述控制器;

所述控制器,包括如下组成部分:

协议处理模块,与所述第一通信模块双向电连接,用于将扩展内存的请求传送至所述宿主机以及将所述宿主机针对扩展内存的请求应答传送至所述第一通信模块;

页管理模块,与所述宿主机电连接,用于管理所述宿主机为所述机密计算协处理器提供的扩展内存。

2.如权利要求1所述的机密计算协处理器的内存扩展系统,其特征在于,所述控制器还包括加解密模块,所述加解密模块分别与所述第一通信模块、所述宿主机双向电连接,用于对所述机密计算协处理器需写入所述宿主机的数据加密、对所述机密计算协处理器需读取所述宿主机的数据解密。

3.如权利要求2所述的机密计算协处理器的内存扩展系统,其特征在于,所述宿主机,包括如下组成部分:第二通信模块,分别与所述协议处理模块、所述页管理模块、所述加解密模块电连接,用于使所述宿主机与所述控制器通信;

内存管理内核模块,分别与所述第二通信模块、所述页管理模块电连接,用于管理分配给所述机密计算协处理器的扩展内存。

4.一种机密计算协处理器的内存扩展方法,其特征在于,包括:获取机密计算协处理器运行应用所需的内存存储容量,记为所需内存容量;

依据所述所需内存容量,得到宿主机应分配给所述机密计算协处理器的常驻内存;

将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展;

所述依据所述所需内存容量,得到宿主机应分配给所述机密计算协处理器的常驻内存,包括:将所述所需内存容量传输至所述宿主机的内存管理内核模块,得到所述内存管理内核模块控制所述宿主机分配给所述机密计算协处理器的常驻内存;

所述将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展,包括:接收所述内存管理内核模块经所述宿主机的第二通信模块传输的内存信息中的内存总页数和内存地址信息;

针对接收的所述内存总页数和所述内存地址信息建立页管理结构,所述页管理结构用于记录内存页与所述内存地址信息的对应关系,各个所述内存页构成分配给所述机密计算协处理器的常驻内存;

建立所述页管理结构之后,将所述内存总页数和所述内存地址信息经所述机密计算协处理器的第一通信模块发送至块设备内核模块,完成所述机密计算协处理器的内存扩展,所述块设备内核模块位于机密计算协处理器上。

5.如权利要求4所述的机密计算协处理器的内存扩展方法,其特征在于,将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展,之后还包括:接收所述机密计算协处理器请求写入的目标页所对应的所述内存地址信息和写入内容,所述目标页位于所述宿主机分配给所述机密计算协处理器的所述内存页中;

依据所述内存地址信息,得到所述内存地址信息中的位于所述宿主机上的IOMMU地址;

将所述写入内容和所述IOMMU地址发送至所述宿主机。

6.如权利要求5所述的机密计算协处理器的内存扩展方法,其特征在于,所述将所述写入内容和所述IOMMU地址发送至所述宿主机,包括:加密所述写入内容,得到加密之后的所述写入内容;

将所述IOMMU地址和加密之后的所述写入内容通过远程直接数据存取方法发送至所述宿主机。

7.如权利要求5所述的机密计算协处理器的内存扩展方法,其特征在于,所述将所述写入内容和所述IOMMU地址发送至所述宿主机,之后还包括:接收所述宿主机完成将所述写入内容写入到目标页的写反馈指令;

接收到所述写反馈指令之后和接收到所述机密计算协处理器反馈的当前内存大于设定内存时,向所述机密计算协处理器发出卸载交换设备的指令,所述交换设备位于所述机密计算协处理器上,所述交换设备用于访问所述宿主机。

8.如权利要求5所述的机密计算协处理器的内存扩展方法,其特征在于,所述将所述写入内容和所述IOMMU地址发送至所述宿主机,之后还包括:接收到销毁请求之后,销毁所述写入内容;

销毁所述写入内容之后,发送销毁指令至所述宿主机。

9.如权利要求8所述的机密计算协处理器的内存扩展方法,其特征在于,所述接收到销毁请求之后,销毁所述写入内容,之前还包括:控制所述宿主机将所述宿主机中的所述写入内容写回至所述机密计算协处理器;

控制所述机密计算协处理器保存写回的所述写入内容。

10.如权利要求4所述的机密计算协处理器的内存扩展方法,其特征在于,所述将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展,之后还包括:接收所述机密计算协处理器请求读取的目标页;

依据请求读取的所述目标页,得到所述内存地址信息中与所述目标页所对应的位于所述宿主机上的IOMMU地址;

将请求读取的所述目标页所对应的所述IOMMU地址发送至所述宿主机;

接收所述宿主机发送的读取内容,所述读取内容位于与请求读取的所述IOMMU地址所对应的目标页上;

将接收的所述读取内容发送至所述机密计算协处理器。

11.一种机密计算协处理器的内存扩展装置,其特征在于,所述装置包括如下组成部分:数据处理模块,用于运行机密计算协处理器的应用程序,并获取应用程序所需的内存存储容量,记为所需内存容量;

通信管理模块,用于管理数据处理模块通信,并针对根据所需内存容量得到的扩展常驻内存进行管理;

将所述所需内存容量传输至宿主机的内存管理内核模块,得到所述内存管理内核模块控制所述宿主机分配给所述机密计算协处理器的常驻内存;

接收所述内存管理内核模块经所述宿主机的第二通信模块传输的内存信息中的内存总页数和内存地址信息;

针对接收的所述内存总页数和所述内存地址信息建立页管理结构,所述页管理结构用于记录内存页与所述内存地址信息的对应关系,各个所述内存页构成分配给所述机密计算协处理器的常驻内存;

建立所述页管理结构之后,将所述内存总页数和所述内存地址信息经所述机密计算协处理器的第一通信模块发送至块设备内核模块,完成所述机密计算协处理器的内存扩展,所述块设备内核模块位于机密计算协处理器上。

说明书 :

一种机密计算协处理器的内存扩展系统和内存扩展方法

技术领域

[0001] 本发明涉及机密计算协处理器技术领域,具体是涉及一种机密计算协处理器的内存扩展系统和内存扩展方法。

背景技术

[0002] 随着协处理器技术的发展,CPU能卸载特定任务到协处理器(机密计算协处理器)上以通过协处理器处理特定任务,释放CPU算力到上层应用。当前常见的协处理器有GPU(图形处理单元)和DPU(数据处理单元)。协处理器一般体积较小,每个协处理器的内存资源在出厂后都是固定的,若使用时发现内存资源不足,一般需要通过购买新的协处理器解决内存资源不足的问题。
[0003] 综上所述,现有的机密计算协处理器的内存固定不变难以扩展。
[0004] 因此,现有技术还有待改进和提高。

发明内容

[0005] 为解决上述技术问题,本发明提供了一种机密计算协处理器的内存扩展系统和内存扩展方法,解决了现有的机密计算协处理器的内存固定不变难以扩展的问题。
[0006] 为实现上述目的,本发明采用了以下技术方案:
[0007] 第一方面,本发明提供一种机密计算协处理器的内存扩展系统,其中,包括如下组成部分:
[0008] 机密计算协处理器,为待扩展的协处理器;
[0009] 控制器,与所述机密计算协处理器双向电连接,用于根据所述机密计算协处理器运行应用所需的内存存储容量,得到所述机密计算协处理器需扩展的内存;
[0010] 宿主机,与所述控制器双向电连接,用于为所述机密计算协处理器提供需扩展的内存。
[0011] 在一种实现方式中,所述机密计算协处理器,包括如下组成部分:
[0012] 块设备内核模块,用于输入扩展内存的请求;
[0013] 第一通信模块,与所述块设备内核模块电连接,与所述控制器双向电连接,用于将扩展内存的请求传送至所述控制器。
[0014] 在一种实现方式中,所述控制器,包括如下组成部分:
[0015] 协议处理模块,与所述第一通信模块双向电连接,用于将扩展内存的请求传送至所述宿主机以及将所述宿主机针对扩展内存的请求应答传送至所述第一通信模块;
[0016] 页管理模块,与所述宿主机电连接,用于管理所述宿主机为所述机密计算协处理器提供的扩展内存;
[0017] 加解密模块,分别与所述第一通信模块、所述宿主机双向电连接,用于对所述机密计算协处理器需写入所述宿主机的数据加密、对所述机密计算协处理器需读取所述宿主机的数据解密。
[0018] 在一种实现方式中,包括如下组成部分:
[0019] 第二通信模块,分别与所述协议处理模块、所述页管理模块、所述加解密模块电连接,用于使所述宿主机与所述控制器通信;
[0020] 内存管理内核模块,分别与所述第二通信模块、所述页管理模块电连接,用于管理分配给所述机密计算协处理器的扩展内存。
[0021] 第二方面,本发明实施例还提供一种机密计算协处理器的内存扩展方法,其中,包括:
[0022] 获取机密计算协处理器运行应用所需的内存存储容量,记为所需内存容量;
[0023] 依据所述所需内存容量,得到宿主机应分配给所述机密计算协处理器的常驻内存;
[0024] 将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展。
[0025] 在一种实现方式中,所述依据所述所需内存容量,得到宿主机应分配给所述机密计算协处理器的常驻内存,包括:
[0026] 将所述所需内存容量传输至所述宿主机的内存管理内核模块,得到所述内存管理内核模块控制所述宿主机分配给所述机密计算协处理器的常驻内存。
[0027] 在一种实现方式中,所述将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展,包括:
[0028] 接收所述内存管理内核模块经所述宿主机的第二通信模块传输的内存信息中的内存总页数和内存地址信息;
[0029] 针对接收的所述内存总页数和所述内存地址信息建立页管理结构,所述页管理结构用于记录内存页与所述内存地址信息的对应关系,各个所述内存页构成分配给所述机密计算协处理器的常驻内存;
[0030] 建立所述页管理结构之后,将所述内存总页数和所述内存地址信息经所述机密计算协处理器的第一通信模块发送至块设备内核模块,完成所述机密计算协处理器的内存扩展,所述块设备内核模块位于机密计算协处理器上。
[0031] 在一种实现方式中,将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展,之后还包括:
[0032] 接收所述机密计算协处理器请求写入的目标页所对应的所述内存地址信息和写入内容,所述目标页位于所述宿主机分配给所述机密计算协处理器的所述内存页中;
[0033] 依据所述内存地址信息,得到所述内存地址信息中的位于所述宿主机上的IOMMU地址;
[0034] 将所述写入内容和所述IOMMU地址发送至所述宿主机。
[0035] 在一种实现方式中,所述将所述写入内容和所述IOMMU地址发送至所述宿主机,包括:
[0036] 加密所述写入内容,得到加密之后的所述写入内容;
[0037] 将所述IOMMU地址和加密之后的所述写入内容通过远程直接数据存取方法发送至所述宿主机。
[0038] 在一种实现方式中,所述将所述写入内容和所述IOMMU地址发送至所述宿主机,之后还包括:
[0039] 接收所述宿主机完成将所述写入内容写入到目标页的写反馈指令;
[0040] 接收到所述写反馈指令之后和接收到所述机密计算协处理器反馈的当前内存大于设定内存时,向所述机密计算协处理器发出卸载交换设备的指令,所述交换设备位于所述机密计算协处理器上,所述交换设备用于访问所述宿主机。
[0041] 在一种实现方式中,所述将所述写入内容和所述IOMMU地址发送至所述宿主机,之后还包括:
[0042] 接收到销毁请求之后,销毁所述写入内容;
[0043] 销毁所述写入内容之后,发送销毁指令至所述宿主机。
[0044] 在一种实现方式中,所述接收到销毁请求之后,销毁所述写入内容,之前还包括:
[0045] 控制所述宿主机将所述宿主机中的所述写入内容写回至所述机密计算协处理器;
[0046] 控制所述机密计算协处理器保存写回的所述写入内容。
[0047] 在一种实现方式中,所述将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展,之后还包括:
[0048] 接收所述机密计算协处理器请求读取的目标页;
[0049] 依据请求读取的所述目标页,得到所述内存地址信息中与所述目标页所对应的位于所述宿主机上的IOMMU地址;
[0050] 将请求读取的所述目标页所对应的所述IOMMU地址发送至所述宿主机;
[0051] 接收所述宿主机发送的读取内容,所述读取内容位于与请求读取的所述IOMMU地址所对应的目标页上;
[0052] 将接收的所述读取内容发送至所述机密计算协处理器。
[0053] 第三方面,本发明实施例还提供一种机密计算协处理器的内存扩展装置,其中,所述装置包括如下组成部分:
[0054] 数据处理模块,用于运行机密计算协处理器的应用程序,并获取应用程序所需的内存存储容量,记为所需内存容量;
[0055] 通信管理模块,用于管理数据处理模块通信,并针对根据所需内存容量得到的扩展常驻内存进行管理。
[0056] 有益效果:本发明首先根据机密计算协处理器运行应用所需要的存储容量,得到需要扩展的内存大小。然后将需要扩展的内存大小发送给宿主机,宿主机将其内部的内存划分出来一部分作为机密计算协处理器的内存,以协助机密计算协处理器的运行。从上述分析,本发明是根据机密计算协处理器所需的存储量大小而将宿主机的内存扩展为机密计算协处理器的内存,即机密计算协处理器需要扩展多大的内存,宿主机就会给机密计算协处理器分配多大的内存,从而实现了动态扩展机密计算协处理器的内存。另外,本发明使用宿主机为机密计算协处理器扩展内存而不是使用固态硬盘,由于机密计算协处理器访问宿主机的速度要远大于访问固态硬盘的速度,因此使用宿主机扩展协处理器的内存,能够提高协处理器访问扩展的内存的速度。

附图说明

[0057] 图1为本发明的内存扩展系统的结构图;
[0058] 图2为本发明的扩展内存的流程图。

具体实施方式

[0059] 以下结合实施例和说明书附图,对本发明中的技术方案进行清楚、完整地描述。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0060] 经研究发现,随着协处理器技术的发展,CPU能卸载特定任务到协处理器(机密计算协处理器)上以通过协处理器处理特定任务,释放CPU算力到上层应用。当前常见的协处理器有GPU(图形处理单元)和DPU(数据处理单元)。协处理器一般体积较小,每个协处理器的内存资源在出厂后都是固定的,若使用时发现内存资源不足,一般需要通过购买新的协处理器解决内存资源不足的问题,即现有的机密计算协处理器的内存固定不变难以扩展。
[0061] 为解决上述技术问题,本发明提供了一种机密计算协处理器的内存扩展系统和内存扩展方法,解决了现有的机密计算协处理器的内存固定不变难以扩展的问题。具体实施时,首先获取机密计算协处理器运行应用所需的内存存储容量,然后依据所需内存容量,得到宿主机应分配给机密计算协处理器的常驻内存,之后将常驻内存的内存信息发送至机密计算协处理器,完成机密计算协处理器的内存扩展。
[0062] 举例说明,当需要在机密计算协处理器上运行一个应用时,而运行该应用需要很大的内存,机密计算协处理器现有的内存不足以运行该应用,因此本实施例将机密计算协处理器需要扩展内存的请求发送到宿主机上,宿主机将自己的内存划分出一部分给机密计算协处理器使用,实现扩大机密计算协处理器内存的目的。而且本实施例是根据所需要运行的应用需要占用的内存动态从宿主机上划分出一部分内存给机密计算协处理器使用,实现了动态扩展内存。
[0063] 示例性系统
[0064] 一种机密计算协处理器的内存扩展系统,如图1所示,包括如下组成部分:
[0065] 机密计算协处理器(SPU),为待扩展的协处理器;
[0066] 控制器(FPGA),与所述机密计算协处理器双向电连接,用于根据所述机密计算协处理器运行应用所需的内存存储容量,得到所述机密计算协处理器需扩展的内存;
[0067] 宿主机(HOST),与所述控制器双向电连接,用于为所述机密计算协处理器提供需扩展的内存。
[0068] 下面对机密计算协处理器、控制器、宿主机分别进行说明:
[0069] 机密计算协处理器包括块设备内核模块、与块设备内核模块电连接的第一通信模块。
[0070] 控制器包括与第一通信模块(PCIE通信模块)双向电连接的协议处理模块、与所述宿主机电连接的页管理模块、分别与所述第一通信模块以及所述宿主机双向电连接的加解密模块。
[0071] 宿主机包括分别与所述协议处理模块和所述页管理模块以及所述加解密模块电连接的第二通信模块(PCIE通信模块)、分别与所述第二通信模块以及所述页管理模块电连接的内存管理内核模块。
[0072] 当需要扩展机密计算协处理器的内存时,首先在块设备内核模块上输入扩展内存的请求,该扩展内存的请求经第一通信模块传送至协议处理模块,协议处理模块将SPU扩展内存的请求发送给宿主机的第二通信模块,第二通信模块将SPU扩展内存的请求传输至内存管理内核模块,内存管理内核模块按照SPU请求扩展内存的大小申请将宿主机的一部分常驻内存用于扩展SPU的内存,同时内存管理内核模块将该部分的常驻内存的IOMMU地址信息经第二通信模块传输至FPGA的页管理模块,页管理模块对宿主机分配给SPU的常驻内存所包含的内存页的页编号、每个内存页所对应的IOMMU地址信息、内存页的校验值进行统一管理(页编号、IOMMU地址信息、校验值三者一一对应),并将页编号经第一通信模块发送给SPU的块设备内核模块,此时完成了对SPU的内存扩展。本实施例中,之所以只将页编号发送给SPU而将IOMMU地址信息、校验值保存在控制器中,是因为通过页编号就可以在FPGA中找到对应的IOMMU地址信息、校验值,从而在宿主机中找到对应的内存页,当SPU需要对宿主机中的目标内存页进行读写操作时,根据页编号就可以找到对应的目标内存页。同时,只将页编号保存在SPU中,能够减少对SPU内存的占用,以充分发挥SPU处理任务的性能。
[0073] 上述完成扩展SPU内存的操作,之后SPU就可以对宿主机分配给SPU的常驻内存(记为已扩展内存)进行读写操作:
[0074] 当SPU需要读取宿主机的已扩展内存上的内容时,首先通过SPU的操作系统向块设备内核模块输入读请求以及页编码,块设备内核模块将读请求以及页编码通过第一通信模块发送给FPGA的页管理模块,协议处理模块从页管理模块中根据页编码找到对应的IOMMU地址信息、校验值,之后协议处理模块根据IOMMU地址信息找到宿主机上的常驻内存中的目标页,然后读取目标页的内容至加解密模块,加解密模块根据校验值对读取的内容进行解密,加解密模块将解密之后的内容经第一通信模块发送至SPU的存储单元。
[0075] 当SPU需要向已扩展内存写入内容时,SPU的操作系统向SPU的块设备内核模块输入写请求和需写入的目标页的页编号以及需要写入的内容,块设备内核模块将写请求、目标页的页编号以及需要写入的内容发送给控制器的协议处理模块,协议处理模块根据目标页的页编号从页管理模块中查询到与页编号对应的DMA地址(Direct Memory Access,直接存储器访问),再根据DMA地址查询到与页编号对应的IOMMU地址(input/output memory management unit输入输出内存管理单元),根据IOMMU地址找到目标页,之后协议处理模块将需要写入的内容传送至加解密模块进行加密,协议处理模块将加密之后的写入内容写入到宿主机的目标页上。
[0076] 本实施例,在SPU的读写过程中,所有存放到HOST侧的页内容均进行了加密处理,并在FPGA中保存了校验值用于校验数据是否被篡改,保证了内容的完整性和安全性。另外,由FPGA控制SPU的读写操作而不是由SPU控制自身的读写操作,前者能够减少读写操作对SPU内存的占用,从而提高了SPU处理任务的性能。
[0077] 本实施例中,机密计算协处理器SPU、控制器FPGA、宿主机HOST三部分的功能如下:
[0078] 机密计算协处理器SPU的块设备内核模块:实现基于操作系统页大小的块设备读写操作,利用操作系统的swap内存机制,将HOST端的内存作为SPU的扩展内存。
[0079] 当SPU执行读操作时,根据操作系统的读请求,封装目标页编号到FPGA通信协议,发送读请求给FPGA,并等待FPGA答复。
[0080] 当SPU执行写操作时,根据操作系统的写请求,封装目标页编号到FPGA通信协议以及页面内容,发送写请求给FPGA,由FPGA写入HOST对应内存地址中。
[0081] 机密计算协处理器SPU 的PCIE通信模块(第一通信模块):负责机密计算协处理器SPU和FPGA之间的通信。
[0082] 控制器FPGA的协议处理模块:初始化时,将SPU侧请求内存的协议传递给HOST方,并将HOST方的答复返回给SPU。运行中时,根据SPU传入的内容,提取需要操作的HOST页号。从页管理模块中查询对应的DMA地址。根据读或者写请求,对DMA地址进行读取或者写入的操作。
[0083] 控制器FPGA的页管理模块:管理HOST内存页,包括页编号、对应的IOMMU地址、页的校验值。
[0084] 控制器FPGA的加解密模块:若请求为读请求,则对从HOST中读取的页内容和页管理模块中保存的校验值进行解密;若请求为写请求,则对传入的页内容进行加密(采用AES‑GCM256加密方式),并把校验值存到页管理模块中。
[0085] 宿主机HOST的PCIE通信模块(第二通信模块):同SPU内的通信模块,实现宿主机和FPGA之间的通信。
[0086] 宿主机HOST的内存管理内核模块:初始化时,接收SPU侧的内存请求,按请求的大小申请主机端常驻内存,并将IOMMU地址信息传给FPGA。
[0087] 示例性方法
[0088] 本实施例的一种机密计算协处理器的内存扩展方法可应用于终端设备中,所述终端设备可为计算功能的终端产品,比如电脑等。在本实施例中,如图2中所示,所述机密计算协处理器的内存扩展方法具体包括如下步骤:
[0089] S100,获取机密计算协处理器运行应用所需的内存存储容量,记为所需内存容量。
[0090] 本实施例中,机密计算协处理器SPU每运行一个应用时,就计算该应用所需要占用SPU的容量,当SPU内存不足时,针对每个应用需要占用的容量将宿主机上对应的容量大小的常驻内存划分给SPU用。在一个实施例,宿主机划分给SPU的常驻内存的容量大于SPU运行应用所需要的内存容量,以保证SPU能够快速的运行该应用。
[0091] S200,依据所述所需内存容量,得到宿主机应分配给所述机密计算协处理器的常驻内存。
[0092] 本实施例中,机密计算协处理器SPU通过PCIE模块(插接件)插接在宿主机HOST上,以此方便连接SPU和宿主机。
[0093] 本实施例中,机密计算协处理器SPU的内部安装有块设备内核模块,用户通过SPU的操作系统将所需内存容量输入至块设备内核模块,块设备内核模块通过第一通信模块将所需内存容量传送给控制器进行加密后发送至宿主机,宿主机的内存管理内核模块根据所需内存容量分配对应容量的常驻内存。比如所需内存容量为10MB,每个内存页的容量为3MB,那么内存管理内核模块就需要控制宿主机划分4个内存页作为SPU的扩展内存,4个内存页构成了常驻内存。
[0094] 在一个实施例中,将所述所需内存容量传输至所述宿主机的内存管理内核模块,得到所述内存管理内核模块控制所述宿主机分配给所述机密计算协处理器的常驻内存。该实施例中,控制器的协议处理模块将从SPU的块设备内核模块接收到的所需内存容量传输至宿主机的内存管理内核模块(即SPU的块设备内核模块),将所需内存大小经PCIE通信和FPGA模块传递给HOST的内存管理模块),内存管理内核模块向宿主机的内存管理单元申请与所需内存容量相匹配的常驻内存作为SPU的扩展内存,即这部分常驻内存只用于SPU,以此保证SPU运行应用对内存的需求,其次能够防止SPU的数据与宿主机内部的数据相互干扰。
[0095] S300,将所述常驻内存的内存信息发送至所述机密计算协处理器,完成所述机密计算协处理器的内存扩展。
[0096] 步骤S300包括如下的步骤:
[0097] S301,接收所述内存管理内核模块经所述宿主机的第二通信模块传输的内存信息中的内存总页数和内存地址信息。
[0098] S302,针对接收的所述内存总页数和所述内存地址信息建立页管理结构,所述页管理结构用于记录内存页与所述内存地址信息的对应关系,各个所述内存页构成分配给所述机密计算协处理器的常驻内存。
[0099] S303,建立所述页管理结构之后,将所述内存总页数和所述内存地址信息经所述机密计算协处理器的第一通信模块发送至块设备内核模块,完成所述机密计算协处理器的内存扩展,所述块设备内核模块位于机密计算协处理器上。
[0100] 本实施例中,是在控制器中建立页管理结构之后,将内存总页数和内存地址信息都发送给SPU,当SPU需要执行读写操作时,直接在SPU中输入被执行读写操作的目标内存页的内存地址信息以及对应的读写内容,就可以直接在宿主机的目标内存页上执行读写内容的操作,该实施例能够准确找到对应的目标内存页以针对其执行读写操作;
[0101] 在另一个实施例中,内存地址信息包括内存页在宿主机中的IOMMU地址和内存页的页编号。建立页管理结构是为了记录IOMMU地址、页编号、校验值之间的对应关系,页管理结构根据起止页地址和总页数进行管理,即通过起止页地址+偏移量进行管理。成功建立页管理结构之后将内存总页数发送至SPU,当SPU需要执行读写操作时,将需要执行的读写操作的目标页的页编号发送至控制器,控制器就能根据页编号在页管理结构中找到对应的IOMMU地址,进而在IOMMU地址所在的内存目标页上执行读写操作,该实施例中,SPU只保存了页编号而没有保存IOMMU地址和校验值,节省了SPU的内存,从而提高了SPU运行应用的性能。
[0102] 步骤S200使得内存管理内核模块控制宿主机分配给SPU相应的常驻内存以扩展SPU的内存,之后内存管理内核模块就将申请的常驻内存所包含的内存页的总页数、每个内存页在宿主机中的IOMMU地址、内存页的页编号经第二通信模块发送给控制器的页管理模块,页管理模块就会建立页管理结构,页管理结构用于记录常驻内存所包含的内存页的总页数、每个内存页在页管理结构中的DMA地址(DMA地址与IOMMU地址相对应,即一个DMA地址对应一个IOMMU地址,当SPU需要向宿主机的内存页执行读写操作时,SPU将该内存页的页编号发送给控制器,控制器根据页编号找到DMA地址,再根据DMA地址找到IOMMU地址),完成建立页管理结构之后,控制器会答复SPU块设备驱动模块(即块设备内核模块),SPU收到成功的答复后将该块设备挂载为操作系统的swap块(交换设备),供操作系统使用,以保证SPU在成功建立页管理结构之后才会驱动块设备内核模块执行对宿主机内的常驻内存执行读写操作,以防止在没有成功建立页管理结构之前就执行读写操作而导致的错误读写。
[0103] 通过步骤S100至S300完成了对SPU内存扩展的操作,即完成了对SPU的初始化,之后当SPU执行读写操作时,而SPU侧自带的内存又紧张时,宿主机的操作系统会触发换页,将宿主机的系统中较不常用的内存页存放到swap分区中,以腾出更多的内存页供SPU使用;待被存在swap分区中的内存页被需要时,则从swap分区中把需要的内存页加载给SPU使用。
[0104] 在一个实施例中,当SPU执行写操作(即将SPU中的内容写入至宿主机)时,包括如下步骤S401至S404:
[0105] S401,接收所述机密计算协处理器请求写入的目标页所对应的所述内存地址信息和写入内容,所述目标页位于所述宿主机分配给所述机密计算协处理器的所述内存页中。
[0106] 本实施例中,内存地址信息指与IOMMU地址所对应的页编号。SPU的块设备内核模块收到写请求后,封装FPGA通信协议,将写入的目标页的页编号和页内容写到FPGA通信包中。通过PCIE通信模块将包发送给FPGA模块。SPU块设备内核模块答复SPU的操作系统写请求已完成。控制器FPGA收到SPU发送的该包中所包含的页编号和写入内容。
[0107] S402,依据所述内存地址信息,得到所述内存地址信息中的位于所述宿主机上的IOMMU地址。
[0108] 由于FPGA的页管理结构中保存了页编号与IOMMU地址对应关系,因此根据页编号就可以找到IOMMU地址。
[0109] S403,加密所述写入内容,得到加密之后的所述写入内容。
[0110] S404,将所述IOMMU地址和加密之后的所述写入内容通过远程直接数据存取方法(RDMA)发送至所述宿主机。
[0111] FPGA的加解密模块用AES‑GCM256方式对写入内容加密,得到一个加密后的tag,存到页管理模块对应的页信息中,并获取该页在HOST侧的IOMMU地址。使用RDMA将加密后的页内容(加密之后的写入内容)写入到HOST侧的目标内存页中。释放时,将页管理模块中的信息销毁,并通知宿主机的内存管理内核模块释放内存。所谓释放是指FGPA将页管理模块中对应tag的页内容进行清零,并发送释放内存的请求给宿主机以便宿主机释放被占用的内存,这样可以防止写入内容所涉及的信息外泄。
[0112] 在一个实施例中,当SPU执行读操作(即从宿主机中读取内容至SPU)时,包括如下步骤S501至S505:
[0113] S501,接收所述机密计算协处理器请求读取的目标页。
[0114] 当SPU的操作系统通过块设备内核模块输入需要读取的宿主机目标页的页编号,块设备内核模块收到读请求后,封装FPGA通信协议,将读取的目标页号的页编号写到FPGA通信包中。通过PCIE通信模块(第一通信模块)将包发送给FPGA的页管理模块,并等待FPGA模块的答复。
[0115] S502,依据请求读取的所述目标页,得到所述内存地址信息中与所述目标页所对应的位于所述宿主机上的IOMMU地址。
[0116] FPGA的页管理模块接收到请求读取的目标页的页编号之后,页管理结构获取目标页在HOST侧的IOMMU地址和校验值。
[0117] S503,将请求读取的所述目标页所对应的所述IOMMU地址发送至所述宿主机。
[0118] S504,接收所述宿主机发送的读取内容,所述读取内容位于与请求读取的所述IOMMU地址所对应的目标页上。
[0119] S505,将接收的所述读取内容发送至所述机密计算协处理器。
[0120] FPGA的页管理模块将目标页的IOMMU地址发送给宿主机,宿主机接收到需要读取的IOMMU地址,就会将IOMMU地址对应的目标页上的内容发送至FPGA,FPGA再将该内容发送至SPU的内存页上(SPU在发送读请求的同时还发送了SPU本地的目标内存页的指针,FPGA根据该指针就可以将读取的内容发送至SPU本地目标内存页,从而保证了将读取的内容保存至SPU指定的内存页上)。
[0121] 在另一个实施例中,FPGA将读取的宿主机目标内存页上的加密内容和FPGA中保存的校验值进行解密,并将解密内容、解密结果写到FPGA通信包中,返回给SPU侧。SPU块设备通过PCIE通信模块读取到FPGA答复的包,若解密成功,则将解密后的目标内存页内容拷贝到SPU操作系统指定的本地目标内存页中,并答复操作系统读请求已完成。若解密失败,则向操作系统返回读请求执行失败。
[0122] 在一个实施例中,当SPU侧使用完毕宿主机HOST的内存时或者HOST侧需要回收分配给SPU的内存时,SPU的块设备(块设备内核模块)判断SPU当前内存是否足够,若足够,则卸载该swap设备。该实施例包括如下过程:
[0123] 接收所述宿主机完成将所述写入内容写入到目标页的写反馈指令;接收到所述写反馈指令之后和接收到所述机密计算协处理器反馈的当前内存大于设定内存时,向所述机密计算协处理器发出卸载交换设备的指令,所述交换设备(swap设备)位于所述机密计算协处理器上,所述交换设备用于访问所述宿主机。
[0124] 在另一个实施例中,控制所述宿主机将所述宿主机中的所述写入内容写回至所述机密计算协处理器;控制器控制所述机密计算协处理器保存写回的所述写入内容,当控制器接收到销毁请求之后,销毁所述写入内容;控制器在销毁所述写入内容之后,发送销毁指令至所述宿主机。
[0125] 该实施例中,SPU的操作系统会将HOST端有效的内存页写回到SPU本地的内存页中,之所以要写回到SPU本地的内存页是基于如下原因:
[0126] 将HOST端有效的内存页写回SPU是为了避免HOST端将数据销毁后造成数据丢失,即Host端的内存为SPU的内存扩展区域,SPU会将较少访问的内存页(如不活跃的守护进程的内存页)放到Host端以腾出更多本地内存资源供计算任务使用。Host端内存存储的有效内存页仍是在使用的状态。当SPU侧计算任务执行完毕需释放Host端内存时,需将Host端的有效内存页回写到SPU内,否则当该部分资源需要被访问时(如不活跃的守护进程被触发时),会引起系统异常。因此写回到SPU本地的内存页可以防止系统异常。
[0127] SPU的操作系统将HOST端有效的内存页写回到SPU本地的内存页后,SPU侧块设备内核模块将销毁请求(释放资源的请求)按协议填写到FPGA通信包中。FPGA收到销毁请求后,将页管理结构中的所有页内容通过RDMA写清零,清除自身页管理结构,并将释放资源的请求(销毁指令)加密后发送给HOST侧的第二通信管理模块进行解密后,内存管理模块根据解密后的销毁指令释放占用的常驻内存。
[0128] 综上,本发明首先根据机密计算协处理器运行应用所需要的存储容量,得到需要扩展的内存大小。然后将需要扩展的内存大小发送给宿主机,宿主机将其内部的内存划分出来一部分作为机密计算协处理器的内存,以协助机密计算协处理器的运行。从上述分析,本发明是根据机密计算协处理器所需的存储量大小而将宿主机的内存扩展为机密计算协处理器的内存,即机密计算协处理器需要扩展多大的内存,宿主机就会给机密计算协处理器分配多大的内存,从而实现了动态扩展机密计算协处理器的内存。另外,本发明使用宿主机为机密计算协处理器扩展内存而不是使用固态硬盘,由于机密计算协处理器访问宿主机的速度要远大于访问固态硬盘的速度,因此使用宿主机扩展协处理器的内存,能够提高协处理器访问扩展的内存的速度。
[0129] 另外,使用HOST侧的内存对机密计算协处理器SPU的内存进行扩展,在SPU本身内存不足的时候,可以使用HOST侧的相对不常用的内存页作为SPU的扩展内存,以达到扩展SPU内存的效果。SPU可以较为灵活地运用HOST侧的内存资源加速其运算过程,在不使用的时候则释放回给HOST。由于内存的访问速度和PCIE通信本身的速度远大于固态硬盘的访问速度,所以本发明对SPU的运行效率影响小于使用固态硬盘作为swap内存时的影响。同时协处理器上的固态硬盘也是有限资源,所以本发明在尽可能小影响协处理器处理效率的情况下节约了协处理器的制作成本。
[0130] 示例性装置
[0131] 本实施例还提供一种机密计算协处理器的内存扩展装置,所述装置包括如下组成部分:
[0132] 数据处理模块,用于运行机密计算协处理器的应用程序,并获取应用程序所需的内存存储容量,记为所需内存容量;
[0133] 通信管理模块,用于管理数据处理模块通信,并针对根据所需内存容量得到的扩展常驻内存进行管理。
[0134] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0135] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。