CN103488588A - 一种内存保护方法、系统及网络接口控制器 - Google Patents

一种内存保护方法、系统及网络接口控制器 Download PDF

Info

Publication number
CN103488588A
CN103488588A CN201310467169.3A CN201310467169A CN103488588A CN 103488588 A CN103488588 A CN 103488588A CN 201310467169 A CN201310467169 A CN 201310467169A CN 103488588 A CN103488588 A CN 103488588A
Authority
CN
China
Prior art keywords
address
virtual
memory
list item
actual situation
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
Application number
CN201310467169.3A
Other languages
English (en)
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201310467169.3A priority Critical patent/CN103488588A/zh
Publication of CN103488588A publication Critical patent/CN103488588A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明提供一种内存保护方法、系统及网络接口控制器。所述方法包括:由可信实体在应用程序发送的访存指令中插入KEY,所述KEY与分配给该应用程序的虚拟内存空间相对应;以及,由网络接口控制器参照内存保护表判断所述访存指令是否具有访存权限,以决定是否允许访存指令的执行。本发明为多计算机节点系统中的各个节点提供了内存保护,防止应用程序因误操作或者恶意操作而产生的不良后果;此外,本发明还提高了I/O操作的性能。

Description

一种内存保护方法、系统及网络接口控制器
技术领域
本发明涉及高性能用户级通信技术领域,特别涉及一种内存保护方法、系统及网络接口控制器。
背景技术
在多计算机节点系统中,节点间通过间接网络或者直接网络互连。由于计算机节点之间经常需要进行通信和数据交换,且消息传递的性能会影响通信的性能,因而灵活高效地将消息数据从一个节点的内存复制到另一个节点的内存中,能够为多计算机节点系统提供的强大的通信能力。由处理器直接处理内存数据的存取会带来巨大的处理器开销,而直接内存存取(DMA)技术能够避免处理器将处理能力浪费在简单重复的内存读写操作中,因此多计算机节点系统中各节点间通信时通常采用DMA技术(如远程直接内存存取RDMA)。
在计算机操作系统的内存管理技术中,程序通常直接使用虚拟地址(也叫线性地址)对内存进行读写操作,这些虚拟地址在运行时被转换成物理地址。由虚拟地址构成的虚拟内存空间通常划分为页,一个典型的页面大小是4KB,也有4MB甚至1GB的大页面。计算机中的内存管理单元(MMU)使用页表(page table)记录应用程序的虚拟地址到物理地址的映射,并在程序运行时进行转换。
传统的DMA方式首先要将DMA操作的虚拟地址通过MMU转成物理地址,然后应用程序再向I/O设备发起DMA请求,告知要通过I/O设备发送的数据的物理地址或者I/O设备接收到的数据可存储的物理地址。然而,这样做可能存在应用程序误操作或者恶意操作,例如发起一个对不允许访问的内存地址的访问,从而引起不良后果;同时,虚拟地址转换成物理地址是一个处理器参与的过程,增加了I/O操作的延迟,影响了I/O性能。
发明内容
针对现有技术中存在的问题,本发明提供一种内存保护方法、系统和网络接口控制器。
根据本发明的一个实施例,提供一种内存保护方法,所述方法包括:
步骤1)、由可信实体在应用程序发送的访存指令中插入KEY,所述KEY与分配给该应用程序的虚拟内存空间相对应;
步骤2)、由网络接口控制器参照内存保护表判断所述访存指令是否具有访存权限,以决定是否允许访存指令的执行;所述内存保护表中的每个表项描述应用程序的KEY与分配给该应用程序的虚拟内存空间的映射。
在一个实施例中,步骤1)之前还包括:
步骤0)、在检测到应用程序申请注册虚拟内存空间时,由系统为该应用程序注册虚拟内存空间,由可信实体为该应用程序分配与该虚拟内存空间相对应的KEY,并且将分配给该应用程序的虚拟内存空间信息写入内存保护表和虚实地址映射表中;其中所述虚实地址映射表描述虚拟页面到物理页框的页面映射。
在进一步的实施例中,步骤0)之前还包括:构建内存保护表和虚实地址映射表。
在进一步的实施例中,步骤0)包括:
步骤i)、应用程序申请注册虚拟内存空间,向系统输入描述该虚拟内存空间相关属性的参数,包括但不限于其起始虚拟地址、大小和访问权限;
步骤ii)、检测到所述应用程序申请注册虚拟内存空间,由系统为该应用程序注册虚拟内存空间,由可信实体为该应用程序分配与该虚拟内存空间相对应的KEY;
步骤iii)、将该虚拟内存空间所占页面和物理页框的映射写入所述虚实地址映射表,将记录该虚拟内存空间的虚实地址映射的第一个表项的物理地址作为该虚拟内存空间对应虚实地址映射的起始物理地址,连同该虚拟内存空间的起始地址、大小和访问权限写入所述内存保护表中与分配的KEY值相对应的表项里。
在一个实施例中,步骤2)之前还包括:将最近查询过的内存保护表表项及虚实地址映射表表项分别存储到所述网络接口控制器中的内存保护表cache和虚实地址映射表cache。
在进一步的实施例中,步骤2)包括:
步骤21)、根据访存指令中的KEY查询所述内存保护表cache,如果所述内存保护表cache不存在有效的匹配表项,则执行步骤22),否则执行步骤23);
步骤22)、根据所述内存保护表起始物理地址和访存指令中KEY指示的偏移地址查询所述内存保护表中对应的表项,如果该表项的状态标志位指示有效,则将查询得到的表项写入所述内存保护表cache并且执行步骤23),否则结束并返回一个非法访问的指示;
步骤23)、如果访存指令要访问的虚拟内存空间在查询得到的表项的虚拟内存空间范围之内,并且访问类型与查询得到的虚拟内存空间的访问权限匹配,则进行虚实地址转换;否则结束并返回一个非法访问的指示。
在一个实施例中,在步骤23)中,进行虚实地址转换包括:
步骤a)、根据系统页面大小、起始虚地址以及访存指令中的虚拟地址偏移,得到要访问的虚拟地址的页内偏移、页面偏移和所占的页面数目;用所述虚实地址映射表的起始物理地址加上页面偏移得到所述虚拟地址所对应的物理页面起始地址在所述虚实地址映射表中的索引;如果是从所述内存保护表cache中获得所述虚拟内存空间对应虚实地址映射的起始物理地址,则执行步骤b),否则执行步骤c);
步骤b)、根据索引查询所述虚实地址映射表cache中与页面数目相应的表项,如果该表项是查找的表项且其状态标志位指示有效,则该表项中指示的物理地址是虚拟地址对应页面的起始物理地址,且执行步骤d),否则执行步骤c);
步骤c)、根据索引查询所述虚实地址映射表中对应的表项,如果该表项的状态标志位指示有效,则该表项中指示的物理地址是虚拟地址对应页面的起始物理地址,将得到的起始物理地址写入所述虚实地址映射表cache相应的表项中;
d)、得到虚拟地址对应的物理地址。
根据本发明的一个实施例,提供一种网络接口控制器,包括内存管理模块,用于参照内存保护表判断所述访存指令是否具有访存权限,以决定是否允许访存指令的执行;所述内存保护表中的每个表项描述应用程序的KEY与分配给该应用程序的虚拟内存空间的映射。
在一个实施例中,所述网络接口控制器还包括主机接口模块,用于和主机互连。
在一个实施例中,所述网络接口控制器还包括网络接口模块,用于将数据发送到网络以及从网络接收数据。
在一个实施例中,所述网络接口控制器还包括下传模块,用于接收和处理应用程序以虚拟地址发起的访存指令。
在一个实施例中,所述网络接口控制器还包括上传模块,用于从所述网络接口模块接收和处理远程应用程序发起的访存指令。
在进一步的实施例中,所述内存管理模块还用于在确定访存指令具有访存权限后,参照虚实地址映射表进行虚实地址转换;其中,所述虚实地址映射表描述虚拟页面到物理页框的页面映射。
在进一步的实施例中,所述内存管理模块还包括:
内存保护表cache,用于存储最近查询过的内存保护表表项;以及
虚实地址映射表cache,用于存储最近查询过的虚实地址映射表表项。
根据本发明的一个实施例,还提供一种内存保护系统,包括上述网络接口控制器。
本发明可使应用程序能够高效地操作I/O设备访问它所申请授权的内存区域、为多计算机节点系统中的各个节点提供了内存保护,防止应用程序因误操作或者恶意操作而产生的不良后果。此外,由网络接口控制器来提供虚实地址转换,提高了I/O操作性能。
附图说明
图1是用于实施本发明提供的内存保护方法的计算机系统中根节点和网络接口控制器之间的通信示意图;
图2是根据本发明一个实施例的内存保护方法的示意图;
图3是根据本发明一个实施例的内存保护方法的流程图;
图4是根据本发明一个实施例的生成KEY方法的流程图;
图5是根据本发明一个实施例的RDMA PUT和RDMA GET包头的结构框图;
图6是根据本发明一个实施例的网络接口控制器进行访存权限验证的方法的流程图;
图7是根据本发明一个实施例的网络接口控制器进行虚实地址转换的方法的流程图。以及
图8是根据本发明一个实施例的支持本发明提供的内存保护方法的网络接口控制器的结构框图。
具体实施方式
为了使本发明的目的、技术方案更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在描述本发明提供的内存保护方法、系统及网络接口控制器之前,首先对用于实施本发明的计算机系统中根节点和网络接口控制器之间的通信方法进行说明。
在根节点上运行的应用程序和网络接口控制器之间的通信大致分为两种:一种是通过软硬件接口进行通信,如通过图1中的用户编程接口;另一种是直接内存访问DMA。以图1所示的通信方法进行说明,当应用程序启动注册一个连续的虚拟内存空间时,系统将为该应用程序分配一块虚拟内存空间,该连续的虚拟内存空间实际被离散地映射到物理内存的不同页框。同时,为该应用程序分配一组工作队列QP,QP对应的用户编程接口将被内存映射到该应用程序的虚拟内存空间。其中,一个QP由一个发送工作队列和一个接收工作队列组成。用户编程接口对于网络接口控制器而言其可以是一组寄存器,对于应用程序而言其可以是该应用程序的虚拟内存空间的一组虚拟地址。应用程序通过访问该虚拟地址即可访问到网络接口控制器上对应的寄存器。
现代计算机系统间的高性能通信通常使用门铃机制(Doorbell)来实现旁路操作系统零拷贝通信,参见申请号为200910083454.9的中国专利申请。所述门铃机制指当应用程序要发送数据时,应用程序将由RDMA描述符的内存首地址和RDMA描述符的长度组成的消息写入其对应的用户编程接口中的门铃寄存器doorbell;网络接口控制器收到门铃写入动作后,即从门铃消息携带的内存地址中读取完整的RDMA描述符,启动相应的RDMA操作。常见的RDMA指令包括RDMA GET和PUT,其中RDMA PUT指示从本地内存读取数据写入远端内存中,RDMA GET指示从远端内存读取数据写入本地内存中。当网络接口控制器接收到RDMA GET指令时,会将其转换为RDMA PUT指令,从内存读取数据写入发起者的内存空间里。由于没有操作系统的参与,应用程序发起RDMA操作的源/目的虚拟地址可以是任意的,可映射于任何物理地址。如果应用程序误操作或者恶意操作,使用一个不允许访问的虚拟地址发起RDMA操作,在网络接口控制器执行RDMA操作时,可能导致系统出错甚至崩溃。
为解决上述问题,根据本发明的一个实施例,提供一种内存保护方法。图2是该方法的示意图,图3给出了该方法的流程图。概括而言,该方法包括:当应用程序申请注册虚拟内存空间时,为其分配授权KEY;在应用程序发送的访存指令中插入该KEY,且由网络接口控制器判断该访存指令是否具有访存权限。下文中将详细描述该方法的步骤:
第一步、为申请注册虚拟内存空间的应用程序分配授权KEY
当系统中的可信实体检测到应用程序申请注册虚拟内存空间时,由系统为该应用程序注册虚拟内存空间,并且由可信实体为其分配授权KEY(即访问内存空间的钥匙)。用于分配授权KEY的可信实体可以是硬件、软件,或者硬件和软件的任何组合。在一个实施例中,在注册虚拟内存空间成功后,还要将应用程序注册的虚拟内存空间信息写入预先创建好的内存保护表MPT和虚实地址映射表AMT。
为实现地址保护,系统具有两张内存映射的表:内存保护表MPT和虚实地址映射表AMT。其中,MPT建立了KEY到其所对应的虚拟内存空间的映射,它以KEY为索引。MPT的每个表项对应一个应用程序的虚拟内存空间,其包括但不限于:该虚拟内存空间的状态标志位、起始虚拟地址、空间大小、访问权限(这里的访问权限包括但不限于:本地读/写,远程读/写,原子操作等),以及其物理地址映射条目在AMT中的起始物理地址。应用程序在申请注册内存空间时,可信实体将分配一个KEY来映射该应用程序对应的虚拟内存空间,并将分配给该应用程序的虚拟内存空间的信息填写到KEY对应的MPT表项中。
虚实地址映射表AMT描述了逻辑页面到物理页框的页面映射。应用程序申请注册的一个虚拟内存空间可能映射于物理空间的多个页框,也就可能对应多个AMT表项。MPT表项中描述的AMT起始物理地址指的是对应虚拟内存空间包含的第一个AMT表项所在的物理地址。
在进一步的实施例中,为了加速将在下文中描述的访存权限的判断及虚实转换的过程,可在网络接口控制器中设置内存保护表cache和虚实地址映射表cache,分别存储最近查询过的MPT表项及AMT表项。
在一个实施例中,KEY可以是一个随机数值,每个KEY对应一个虚拟内存空间,不同虚拟内存空间对应不同的KEY。图4描述了本发明提供的内存保护方法中生成KEY的方法的一个实施例,包括以下子步骤:
首先,系统运行的应用程序申请虚拟内存空间,向系统输入用于描述虚拟内存空间相关属性的参数,包括但不限于虚拟内存空间的起始虚拟地址,要申请的虚拟内存空间的大小及访问权限等信息。这里的访问权限包括但不限于:本地读/写,远程读/写,原子操作等。
接着,系统接收应用程序的注册申请,为应用程序注册虚拟内存空间,成功后返回所述虚拟内存空间的起始地址、所对应的物理页框的起始地址等。
然后,系统中的可信实体为所述虚拟内存空间分配KEY,一个KEY对应一个内存空间,不同内存空间对应不同的KEY。
最后,系统将应用程序成功注册的虚拟内存空间的相关信息分别写入MPT和AMT对应表项(条目)中。其中,将所述虚拟内存空间所占页面和物理页框的映射写入AMT表,然后将记录所述虚拟内存空间的AMT映射的第一个条目的物理地址作为该虚拟内存空间对应虚实地址映射的起始物理地址,并连同所述虚拟内存空间的起始地址、大小、访问权限等信息写入MPT中系统分配的KEY值对应的条目里。
第二步、由可信实体在应用程序发送的访存指令中插入KEY,所述KEY即为先前注册虚拟内存空间时分配给该应用程序的KEY。
图5描述了应用程序访存指令RDMA PUT/GET包头的结构,RDMAPUT指示从本地节点一块连续的虚拟内存空间读取数据写入远端节点一块连续的虚拟内存空间,RDMA GET指示了从远端节点一块连续的虚拟内存空间读取数据写入本地节点一块连续的虚拟内存空间。其中,每个指令包括:
头信息控制块:定义了包类型等信息,如RDMA PUT或者RDMAGET;
L_KEY:即由可信实体插入的KEY,其指示了要访问的本地虚拟内存空间,如RDMA PUT中的L_KEY定义了从本地读取的源数据对应的虚拟内存空间,RDMA GET中的L_KEY定义了从远程读取的源数据写入本地对应的目标虚拟内存空间;
SrcVAddr_offset:定义了要访问的源虚拟内存空间的偏移;
Src_length:定义了要访问的源虚拟内存空间大小;
R_KEY:即由可信实体插入的KEY,其指示了要访问的远程虚拟内存空间,如RDMA PUT中的R_KEY定义了从本地读取的源数据要写入的远程目标虚拟内存空间,RDMA GET中的R_KEY定义了从远程读取的源数据所对应的远程源虚拟内存空间;
DrcVAddr_offset:定义了要访问的目标虚拟内存空间的偏移;
Drc_length:定义了要访问的目标虚拟内存空间大小。
第三步、网络接口控制器判断访存指令是否具有访存权限
网络接口控制器根据接收到的访存指令中的KEY查询MPT对应表项中记录的虚拟内存空间。接着,网络接口控制器根据查询到的MPT表项判断该指令是否具有访存权限,如果通过授权,则允许本次访存指令的执行,否则拒绝本次访存指令的执行。其中,访存权限的判断包括但不限于:访存地址范围的比较以及访存类型的比较。
在一个实施例中,当网络接口控制器接收到应用程序发来的RDMA指令时,将首先根据指令中的L_KEY查询MPT表对应表项记录的虚拟内存空间,如果所述MPT表项不存在相应的虚拟内存空间,则拒绝此次内存访问操作。如果所述MPT表项存在相应的虚拟内存空间,则网络接口控制器提取表项内容与访存指令中描述的访问信息进行访存权限的比较,包括比较指令指示的要访问的虚拟内存空间及偏移是否在查询获得的虚拟内存空间范围之内,以及其访问类型与查询获得的虚拟内存空间的访问权限是否匹配。如果没通过访存权限验证,则拒绝此次内存访问。如果通过访存权限验证,则授权此次内存访问。
图6描述了具有内存保护表cache和虚实地址映射表cache的网络接口控制器进行访存权限验证的方法的一个实施例,包括以下子步骤:
a、根据接收到的RDMA指令中的KEY,首先查询内存保护表cache,如果内存保护表cache存在有效的匹配表项,即KEY对应的表项的状态标志位指示有效,则转向步骤d;否则转向步骤b;
b、向网络接口控制器所指示的MPT的起始物理地址和接收到的指令中的KEY值指示的偏移地址读取对应的MPT表项。如果该表项的状态标志位指示有效,转向c,否则转向步骤f;
c、将读取到的MPT表项写入内存保护表cache;
d、提取表项内容,与RDMA指令中描述的要访问的信息进行访存权限的比较验证。包括比较指令要访问的虚拟内存空间是否在查询获得的虚拟内存空间范围之内,以及其访问类型与查询获得的虚拟内存空间的访问权限是否匹配。如果通过访存权限验证(具有访存权限),则转向步骤e,否则转向步骤f;
e、提取所获得的匹配内存保护表表项中指示的起始虚地址、虚实地址映射表的起始物理地址,用于进行下一步的虚实地址转换;
f、向接收该指令的网络接口控制器返回一个非法访问的指示。
第四步、如果通过访存权限验证,由网络接口控制器进行虚实地址转换,接着向转换后的物理地址空间发起接入访问。
判断指令指示的内存访问具有访存权限后,网络接口控制器根据查询MPT获得的对应表项记录的所述虚拟内存空间对应的AMT表的起始物理地址,来进行虚实地址转换。由于MPT表项记录的AMT起始物理地址是该MPT表项描述的虚拟内存空间对应的第一个物理页面的起始地址,因此在进行虚实地址转换时,首先要确定待转换的虚拟地址所在的物理页面在所述虚拟内存空间对应的物理页面数中的偏移PPoffset和所述虚拟地址在其所在物理页面内的偏移OffsetInPage,以及确定要读取或者写入的数据块所占据页面数目PPnum。然后网络接口控制器向AMT起始物理地址和PPoffset指示的AMT表位置,提取PPnum个表项。根据提取的PPnum个物理地址和计算获得的OffestInPage即可得到要访问的虚拟内存区域对应的物理地址。最后,网络接口控制器向转换后的物理地址发起相应的内存访问,即可执行并完成此次应用程序的指令操作。
图7描述了具有内存保护表cache和虚实地址映射表cache的网络接口控制器进行虚实地址转换流程的一个实施例,包括以下子步骤:
a、根据接收到的RDMA指令中的虚拟地址偏移、网络接口控制器指示的系统页面大小以及访存权限校验过程中获得的匹配内存保护表项中的起始虚地址,计算出要访问的虚拟地址在对应的物理页面内的地址偏移、其对应的物理页面在其对应的内存空间的所包含的物理页面数目的页面偏移,以及要读取或者写入的数据块所占据的页面数目;使用获得的匹配内存保护表项中的AMT起始物理地址加上计算出的页面偏移,即得到所述虚拟地址所对应的物理页面起始地址在虚实地址映射表中的索引。如果当前所述虚实地址映射表的物理地址是从内存保护表cache中获得的,则转向b进行虚实地址映射表查找;否则,转向c进行虚实地址映射表查找;
b、根据计算出的虚实地址映射表索引提取虚实地址映射表cache中与计算出的页面数目相应的表项。如果表项的状态标志位指示有效且该表项是要查找的表项,则表项中指示的物理地址即是虚拟地址对应页面的起始物理地址,转向e;否则转向c;
c、向计算出的虚实地址映射表索引所指示的内存地址查询虚实地址映射表项,所述计算出的虚实地址映射表索引可能是步骤a中计算出的索引,也可能是步骤b中不存在的表项的索引值;
d、如果表项的状态标志位有效,则表项中指示的物理地址即是虚拟地址对应页面的起始物理地址;并将读取到的起始物理地址写入虚实地址映射表cache相应的表项中;
e、虚实地址转换,如果指令中指示的数据块只包含在一个页面内,则使用查找得到的起始物理地址加上步骤a中所述计算出的页内地址偏移,即虚拟地址对应的物理地址。
根据本发明的一个实施例,还提供一种网络接口控制器,包括:主机接口模块、网络接口模块、内存管理模块、下传模块(或称RDMA下传模块)和上传模块(或称RDMA上传模块)。图8示出了该网络接口控制器的结构,其中,主机接口模块用于和主机进行互连;网络接口模块用于向网络发送数据以及从网络接收数据;内存管理模块用于实现本发明提供的内存保护方法;RDMA下传模块用于接收和处理应用程序发起的RDMA指令;RDMA上传模块用于从网络接口模块接收并处理远程应用程序发起的RDMA指令。下面将分别描述其中四个模块。
一、主机接口模块
主机接口模块除了实现了I/O设备必须的编程接口(如与主机连接的PCIe编程接口、状态控制寄存器编程接口)之外,还定义了与应用程序通信的用户级通信编程接口。用户级通信编程接口包括系统控制接口和用户控制接口:
系统控制接口用于控制操作系统中所有应用程序对应的用户级通信的统一属性和行为,包括但不限于系统使用的页面大小、系统建立的MPT表的起始物理地址。当MPT初始化时,系统将通过系统控制接口告知网络接口控制器系统使用的页面大小及MPT的起始物理地址。当应用程序使用虚拟地址发起指令,网络接口控制器对该指令的访存权限进行查询时,通过向系统编程接口指示的MPT起始物理地址和指令中描述的KEY值指示的偏移地址发起内存读,即可获得所述KEY值对应的虚拟内存空间的信息。
用户控制接口用于控制各应用程序对应的用户级通信的独立信息和行为,包括但不限于各应用程序向网络接口控制器发送指令的doorbell接口。如当应用程序注册时,系统将为应用程序分配doorbell,并将该doorbell内存映射到应用程序的地址空间。应用程序通过该doorbell接口即可和网络接口控制器进行通信。
二、内存管理模块
内存管理模块实现对内存的访存权限进行查询验证,并且完成虚实地址转换。在一个实施例中,为了加速访存权限的查询及虚实转换的过程,内存管理模块还包括内存保护表cache和虚实地址映射表cache两个子模块,分别存储了最近查询过的MPT表项及AMT表项。当网络接口控制器收到应用程序的访存指令要进行访存权限校验和虚实地址转换时,内存管理模块首先查找内存保护表cache和虚实地址映射表cache,如果不存在相应的条目,再根据KEY值读取内存保护表以及虚实地址映射表中的条目,并且将相应的映射信息存入内存保护表cache和虚实地址映射表cache中。三、RDMA下传模块
RDMA下传模块接收并处理应用程序以虚拟地址发起的RDMA指令。所述应用程序包括但不限于本地应用程序发起的RDMA指令,如RDMAPUT;它还可能是远程应用程序发起的RDMA指令,例如,远程应用程序发出的RDMA GET指令将被转换成RDMA PUT指令,经RDMA下传模块提取数据返回给远程应用程序。RDMA指令通常指从源虚拟内存空间读取数据发送的指令,也可能是立即数指令(指已经携带了数据、直接发送的指令)。如果RDMA下传模块接收到类似于立即数的指令,则将要发送的数据和指令中与指示对方接收相关的信息传递给网络接口模块封装成网络包,并发送到互连网络。如果RDMA下传模块接收到从本地一个虚拟内存空间读取数据的指令,RDMA下传模块将提取指令中的L_KEY值和源虚拟地址偏移,传递给内存管理模块进行内存读写取权限验证及虚实地址转换。如果内存管理模块返回通过授权的标识及匹配的物理地址,则向该匹配的物理地址和指令中长度域指示的内存空间读取源数据,然后将读取的数据和指令中与指示对方接收相关的信息传递给网络接口模块封装成网络包,发送到互联网络中;否则,如果内存管理模块返回一个非法访问的指示,则向该操作指令的发起方返回一个非法访问的指示。
四、RDMA上传模块
RDMA上传模块从网络接口模块接收并处理远程应用程序发起的操作指令,所述指令通常指示写入数据到指定的虚拟内存空间,也可能是向无指定地址写数据的指令。如果接收到没指定目标地址的数据包,则将数据包中的数据写入本地系统预先指定的内存地址。如果接收到向本地一个虚拟地址指示的内存空间写数据的指令,则首先提取指令中的R_KEY值和要访问的目的虚拟地址偏移DstVAddr_offset,传递给内存管理模块进行内存读写权限验证及虚实地址转换。如果内存保护模块返回通过授权的标识及匹配的物理地址,则向该匹配的物理地址和指令中长度域指示的内存空间写入数据;否则,如果内存保护模块返回一个非法访问的指示,则向该操作指令的发起方返回一个非法访问的指示。
根据本发明的一个实施例,还提供一种内存保护系统,包括上述网络接口控制器。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。

Claims (15)

1.一种内存保护方法,包括:
步骤1)、由可信实体在应用程序发送的访存指令中插入KEY,所述KEY与分配给该应用程序的虚拟内存空间相对应;
步骤2)、由网络接口控制器参照内存保护表判断所述访存指令是否具有访存权限,以决定是否允许访存指令的执行;所述内存保护表中的每个表项描述应用程序的KEY与分配给该应用程序的虚拟内存空间的映射。
2.根据权利要求1所述的方法,其中,步骤1)之前还包括:
步骤0)、在检测到应用程序申请注册虚拟内存空间时,由系统为该应用程序注册虚拟内存空间,由可信实体为该应用程序分配与该虚拟内存空间相对应的KEY,并且将分配给该应用程序的虚拟内存空间信息写入内存保护表和虚实地址映射表中;其中所述虚实地址映射表描述虚拟页面到物理页框的页面映射。
3.根据权利要求2所述的方法,其中,步骤0)之前还包括:
构建内存保护表和虚实地址映射表。
4.根据权利要求2或3所述的方法,其中,步骤0)包括:
步骤i)、应用程序申请注册虚拟内存空间,向系统输入描述该虚拟内存空间相关属性的参数;
步骤ii)、检测到所述应用程序申请注册虚拟内存空间,由系统为该应用程序注册虚拟内存空间,由可信实体为该应用程序分配与该虚拟内存空间相对应的KEY;
步骤iii)、将该虚拟内存空间所占页面和物理页框的映射写入所述虚实地址映射表,将记录该虚拟内存空间的虚实地址映射的第一个表项的物理地址作为该虚拟内存空间对应虚实地址映射的起始物理地址,连同该虚拟内存空间的起始地址、大小和访问权限写入所述内存保护表中与分配的KEY值相对应的表项里。
5.根据权利要求2或3所述的方法,其中,步骤2)之前还包括:
将最近查询过的内存保护表表项及虚实地址映射表表项分别存储到所述网络接口控制器中的内存保护表cache和虚实地址映射表cache。
6.根据权利要求5所述的方法,其中,步骤2)包括:
步骤21)、根据访存指令中的KEY查询所述内存保护表cache,如果所述内存保护表cache不存在有效的匹配表项,则执行步骤22),否则执行步骤23);
步骤22)、根据所述内存保护表起始物理地址和访存指令中KEY指示的偏移地址查询所述内存保护表中对应的表项,如果该表项的状态标志位指示有效,则将查询得到的表项写入所述内存保护表cache并且执行步骤23),否则结束并返回一个非法访问的指示;
步骤23)、如果访存指令要访问的虚拟内存空间在查询得到的表项的虚拟内存空间范围之内,并且访问类型与查询得到的虚拟内存空间的访问权限匹配,则进行虚实地址转换;否则结束并返回一个非法访问的指示。
7.根据权利要求6所述的方法,在步骤23)中,进行虚实地址转换包括:
步骤a)、根据系统页面大小、起始虚地址以及访存指令中的虚拟地址偏移,得到要访问的虚拟地址的页内偏移、页面偏移和所占的页面数目;用所述虚实地址映射表的起始物理地址加上页面偏移得到所述虚拟地址所对应的物理页面起始地址在所述虚实地址映射表中的索引;如果是从所述内存保护表cache中获得所述虚拟内存空间对应虚实地址映射的起始物理地址,则执行步骤b),否则执行步骤c);
步骤b)、根据索引查询所述虚实地址映射表cache中与页面数目相应的表项,如果该表项是查找的表项且其状态标志位指示有效,则该表项中指示的物理地址是虚拟地址对应页面的起始物理地址,且执行步骤d),否则执行步骤c);
步骤c)、根据索引查询所述虚实地址映射表中对应的表项,如果该表项的状态标志位指示有效,则该表项中指示的物理地址是虚拟地址对应页面的起始物理地址,将得到的起始物理地址写入所述虚实地址映射表cache相应的表项中;
d)、得到虚拟地址对应的物理地址。
8.一种网络接口控制器,包括:
内存管理模块,用于参照内存保护表判断所述访存指令是否具有访存权限,以决定是否允许访存指令的执行;所述内存保护表中的每个表项描述应用程序的KEY与分配给该应用程序的虚拟内存空间的映射。
9.根据权利要求8所述的网络接口控制器,还包括:
主机接口模块,用于和主机互连。
10.根据权利要求8或9所述的网络接口控制器,还包括:
网络接口模块,用于将数据发送到网络以及从网络接收数据。
11.根据权利要求8或9所述的网络接口控制器,还包括:
下传模块,用于接收和处理应用程序以虚拟地址发起的访存指令。
12.根据权利要求8或9所述的网络接口控制器,还包括:
上传模块,用于从所述网络接口模块接收和处理远程应用程序发起的访存指令。
13.根据权利要求8或9所述的网络接口控制器,其中,所述内存管理模块还用于在确定访存指令具有访存权限后,参照虚实地址映射表进行虚实地址转换;其中,所述虚实地址映射表描述虚拟页面到物理页框的页面映射。
14.根据权利要求8或9所述的网络接口控制器,其中,所述内存管理模块还包括:
内存保护表cache,用于存储最近查询过的内存保护表表项;以及
虚实地址映射表cache,用于存储最近查询过的虚实地址映射表表项。
15.一种内存保护系统,包括如权利要求8-14中任何一个所述的网络接口控制器。
CN201310467169.3A 2013-10-09 2013-10-09 一种内存保护方法、系统及网络接口控制器 Pending CN103488588A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310467169.3A CN103488588A (zh) 2013-10-09 2013-10-09 一种内存保护方法、系统及网络接口控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310467169.3A CN103488588A (zh) 2013-10-09 2013-10-09 一种内存保护方法、系统及网络接口控制器

Publications (1)

Publication Number Publication Date
CN103488588A true CN103488588A (zh) 2014-01-01

Family

ID=49828834

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310467169.3A Pending CN103488588A (zh) 2013-10-09 2013-10-09 一种内存保护方法、系统及网络接口控制器

Country Status (1)

Country Link
CN (1) CN103488588A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335306A (zh) * 2014-06-30 2016-02-17 华为技术有限公司 一种内存控制方法和装置
WO2017020194A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 一种文件系统保护方法、装置及存储设备
CN107168894A (zh) * 2017-06-30 2017-09-15 联想(北京)有限公司 内存共享访问方法及电子设备
CN107341115A (zh) * 2017-06-30 2017-11-10 联想(北京)有限公司 虚拟机内存访问方法、系统和电子设备
CN107368354A (zh) * 2017-08-03 2017-11-21 致象尔微电子科技(上海)有限公司 一种虚拟机安全隔离方法
CN107526693A (zh) * 2017-08-11 2017-12-29 致象尔微电子科技(上海)有限公司 一种基于线性映射表的内存隔离方法
CN107562515A (zh) * 2017-08-04 2018-01-09 致象尔微电子科技(上海)有限公司 一种在虚拟化技术中管理内存的方法
CN107579892A (zh) * 2017-08-29 2018-01-12 郑州云海信息技术有限公司 一种基于RapidIO协议和RDMA技术的通信方法
CN108491716A (zh) * 2018-01-29 2018-09-04 中国电子科技网络信息安全有限公司 一种基于物理页地址分析的虚拟机内存隔离性检测方法
CN109154963A (zh) * 2016-07-14 2019-01-04 华为技术有限公司 一种防止内存数据泄露的设备及方法
CN110209603A (zh) * 2019-05-31 2019-09-06 龙芯中科技术有限公司 地址转换方法、装置、设备及计算机可读存储介质
CN110554911A (zh) * 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 内存访问与分配方法、存储控制器及系统
CN114741740A (zh) * 2022-06-09 2022-07-12 睿思芯科(深圳)技术有限公司 基于risc-v的物理内存保护方法、系统和相关设备
WO2022233174A1 (zh) * 2021-05-07 2022-11-10 华为技术有限公司 计算机设备及内存注册方法
WO2023044715A1 (zh) * 2021-09-24 2023-03-30 华为技术有限公司 电子装置和安全访问软件的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6345347B1 (en) * 1999-09-27 2002-02-05 International Business Machines Corporation Address protection using a hardware-defined application key
CN1959654A (zh) * 2005-11-03 2007-05-09 乐金电子(中国)研究开发中心有限公司 存储器访问保护系统及其存储器访问保护方法
US20090158085A1 (en) * 2007-12-13 2009-06-18 Spansion Llc Power safe translation table operation in flash memory
CN102081393A (zh) * 2010-12-20 2011-06-01 东风汽车股份有限公司 基于html的plc控制的生产线设备信息发布装置
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6345347B1 (en) * 1999-09-27 2002-02-05 International Business Machines Corporation Address protection using a hardware-defined application key
CN1959654A (zh) * 2005-11-03 2007-05-09 乐金电子(中国)研究开发中心有限公司 存储器访问保护系统及其存储器访问保护方法
US20090158085A1 (en) * 2007-12-13 2009-06-18 Spansion Llc Power safe translation table operation in flash memory
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统
CN102081393A (zh) * 2010-12-20 2011-06-01 东风汽车股份有限公司 基于html的plc控制的生产线设备信息发布装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335306B (zh) * 2014-06-30 2018-02-13 华为技术有限公司 一种内存控制方法和装置
CN105335306A (zh) * 2014-06-30 2016-02-17 华为技术有限公司 一种内存控制方法和装置
WO2017020194A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 一种文件系统保护方法、装置及存储设备
CN109154963B (zh) * 2016-07-14 2021-01-29 华为技术有限公司 一种防止内存数据泄露的设备及方法
CN109154963A (zh) * 2016-07-14 2019-01-04 华为技术有限公司 一种防止内存数据泄露的设备及方法
CN107168894A (zh) * 2017-06-30 2017-09-15 联想(北京)有限公司 内存共享访问方法及电子设备
CN107341115A (zh) * 2017-06-30 2017-11-10 联想(北京)有限公司 虚拟机内存访问方法、系统和电子设备
CN107168894B (zh) * 2017-06-30 2020-08-25 联想(北京)有限公司 内存共享访问方法及电子设备
CN107368354B (zh) * 2017-08-03 2021-02-02 海光信息技术股份有限公司 一种虚拟机安全隔离方法
CN107368354A (zh) * 2017-08-03 2017-11-21 致象尔微电子科技(上海)有限公司 一种虚拟机安全隔离方法
CN107562515A (zh) * 2017-08-04 2018-01-09 致象尔微电子科技(上海)有限公司 一种在虚拟化技术中管理内存的方法
CN107562515B (zh) * 2017-08-04 2021-09-07 海光信息技术股份有限公司 一种在虚拟化技术中管理内存的方法
CN107526693A (zh) * 2017-08-11 2017-12-29 致象尔微电子科技(上海)有限公司 一种基于线性映射表的内存隔离方法
CN107579892A (zh) * 2017-08-29 2018-01-12 郑州云海信息技术有限公司 一种基于RapidIO协议和RDMA技术的通信方法
CN108491716A (zh) * 2018-01-29 2018-09-04 中国电子科技网络信息安全有限公司 一种基于物理页地址分析的虚拟机内存隔离性检测方法
CN110554911A (zh) * 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 内存访问与分配方法、存储控制器及系统
CN110209603A (zh) * 2019-05-31 2019-09-06 龙芯中科技术有限公司 地址转换方法、装置、设备及计算机可读存储介质
WO2022233174A1 (zh) * 2021-05-07 2022-11-10 华为技术有限公司 计算机设备及内存注册方法
WO2023044715A1 (zh) * 2021-09-24 2023-03-30 华为技术有限公司 电子装置和安全访问软件的方法
CN114741740A (zh) * 2022-06-09 2022-07-12 睿思芯科(深圳)技术有限公司 基于risc-v的物理内存保护方法、系统和相关设备
CN114741740B (zh) * 2022-06-09 2022-09-02 睿思芯科(深圳)技术有限公司 基于risc-v的物理内存保护方法、系统和相关设备

Similar Documents

Publication Publication Date Title
CN103488588A (zh) 一种内存保护方法、系统及网络接口控制器
CN102473139B (zh) 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元
KR101667772B1 (ko) 프리페칭을 갖는 변환 색인 버퍼
US6510496B1 (en) Shared memory multiprocessor system and method with address translation between partitions and resetting of nodes included in other partitions
US5895499A (en) Cross-domain data transfer using deferred page remapping
US6854032B2 (en) System for accessing a region of memory using remote address translation and using a memory window table and a memory region table
US8402248B2 (en) Explicitly regioned memory organization in a network element
US9256545B2 (en) Shared memory access using independent memory maps
US7861095B2 (en) Data processing apparatus security
US9612975B2 (en) Page cache device and method for efficient mapping
CN103907099B (zh) 高速缓存一致性计算机系统中未缓存的短地址转换表
CN101326501A (zh) 电桥、处理器单元、信息处理装置以及存取控制方法
US20090031142A1 (en) System, Method and Computer Program Product for Processing a Memory Page
CN102918515B (zh) 将数据存储在存储器控制器中的多个缓冲器的任何中
CN103744799A (zh) 一种内存数据访问方法、装置和系统
US10241934B2 (en) Shared memory controller, shared memory module, and memory sharing system
US20170228164A1 (en) User-level instruction for memory locality determination
US20200334168A1 (en) Virtual memory pool within a network which is accessible from multiple platforms
CN103595720B (zh) 卸载数据传输方法、装置和客户端
CN105446889A (zh) 一种内存管理方法、装置以及内存控制器
US20200042463A1 (en) System architecture with query based address translation for access validation
JP2021507362A (ja) 間接アクセスメモリコントローラ向けの保護機能を追加するための機器
EP4272081A1 (en) Migrating pages of memory accessible by input-output devices
KR20180041037A (ko) 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
CN103262052A (zh) 具有共享的输入/输出的安全分区

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140101