一种访问内存的方法及设备的制作方法

文档序号:6532614阅读:188来源:国知局
一种访问内存的方法及设备的制作方法
【专利摘要】本发明实施例公开了一种访问内存的方法及设备,涉及计算机领域,有效提高系统内存的安全性。本发明实施例提供的方法包括:获取第一设备请求访问第一内存区域的数据访问请求,其中,数据访问请求包含第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,物理内存地址信息包含与第一内存区域的物理内存地址对应的物理内存地址;若确定第一设备请求访问的数据的物理内存地址在I/O虚拟化控制器设备中的物理内存地址信息中,则访问第一内存区域。
【专利说明】一种访问内存的方法及设备

【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种访问内存的方法及设备。

【背景技术】
[0002]在计算机系统的物理内存中,既有用于存放计算机操作系统的系统内存,也有用于存放计算机实现特定功能时存储数据的专用功能性内存,专用功能性内存与系统内存是无隔离的分布在物理内存中的,例如,在中央处理器(Central Processing Unit,简称CPU)配合现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)实现数据包的转发系统中,从物理内存中分配出一片内存用来作为转发内存(专用功能性内存),用来存储消息队列(Queue)、数据缓存(Buffer)、消息指针,转发内存及系统内存无隔离的分布在物理内存中,CPU和FPGA通过消息队列实现数据缓存位置的交互,然后通过获取的消息队列内容获取对应的数据。
[0003]发明人发现现有技术至少存在以下缺陷:由于专用功能性内存和系统内存之间没有任何的隔离和保护,一旦访问专用功能性内存的地址发生错误,就有可能踩到系统内存,容易造成系统复位或者挂死引起事故;随着计算机系统的应用越来越广泛,计算机所能实现的功能也将越来越多,对物理内存的访问量也会大幅提高,这样则增大了系统内存被误踩的可能性,降低了系统内存的安全性。


【发明内容】

[0004]本发明的实施例提供一种访问内存的方法及设备,有效提高系统内存的安全性。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]第一方面,提供一种访问内存的方法,包括,
[0007]获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
[0008]根据所述第一设备请求访问的数据的物理内存地址查询输入/输出I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
[0009]若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
[0010]结合第一方面,在第一方面的第一种可能的实现方式中,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,所述方法还包括,
[0011]将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
[0012]将所述第一内存区域的物理内存地址映射至所述第一设备中。
[0013]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述I/o虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述根据所述第一设备请求访问的数据的物理内存地址查询I/o虚拟化控制器设备中的物理内存地址信息,包括:
[0014]根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
[0015]根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
[0016]结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括,
[0017]若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
[0018]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括,
[0019]若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
[0020]第二方面,提供一种访问内存的设备,包括,
[0021]获取单元,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
[0022]查询单元,用于根据所述获取单元获取的所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
[0023]访问单元,用于若查询单元确定所述第一设备请求访问的数据的物理内存地址在所述I/o虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
[0024]结合第二方面,在第二方面的第一种可能的实现方式中,所述设备还包括,
[0025]映射单元,用于在所述获取单元获取所述第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/o虚拟化控制器设备中,形成所述物理内存地址信息;
[0026]所述映射单元还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
[0027]结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述I/o虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述查询单元具体用于,
[0028]根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
[0029]根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
[0030]结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述设备还包括,
[0031]丢弃单元,用于若所述查询单元确定所述第一设备请求访问的数据的物理内存地址不在所述I/o虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
[0032]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述设备还包括,
[0033]记录单元,用于若所述查询单元确定所述第一设备请求访问的数据的物理内存地址不在所述I/o虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
[0034]第三方面,提供一种访问内存的设备,包括,
[0035]处理器,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
[0036]I/O虚拟化控制器设备,用于根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
[0037]第一设备,用于若I/O虚拟化控制器设备确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
[0038]结合第三方面,在第三方面的第一种可能的实现方式中,所述处理器具体用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
[0039]所述处理器具体还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
[0040]结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述I/o虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述I/o虚拟化控制器设备还用于,
[0041 ] 根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
[0042]根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
[0043]结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述I/o虚拟化控制器设备还用于,
[0044]若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
[0045]结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述I/o虚拟化控制器设备还用于,
[0046]若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
[0047]第四方面,提供一种物理机,包括,访问内存的设备以及物理内存,其中,所述访问内存的设备包含第一设备以及I/o虚拟化控制器设备;
[0048]所述访问内存的设备用于,
[0049]获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
[0050]根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
[0051]若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
[0052]结合第四方面,在第四方面的第一种可能的实现方式中,所述访问内存的设备还用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/o虚拟化控制器设备中,形成所述物理内存地址信息;
[0053]所述访问内存的设备还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
[0054]结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述I/o虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述访问内存的设备具体用于,
[0055]根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域的物理内存地址信息;
[0056]根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
[0057]结合第四方面或第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述访问内存的设备还用于,
[0058]若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
[0059]本发明实施例提供的一种访问内存的方法及设备,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据所述第一设备请求访问的数据的物理内存地址查询I/o虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;若确定所述第一设备请求访问的数据的物理内存地址在所述I/o虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域;有效的提高了系统内存的安全性。

【专利附图】

【附图说明】
[0060]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0061]图1为本发明实施例提供的一种访问内存的方法的流程示意图;
[0062]图2A为本发明实施例提供的一种物理内存的内部结构示意图;
[0063]图2B为本发明实施例提供的一种消息指针与消息队列的场景示意图;
[0064]图3为本发明实施例提供的一种CPU配合FPGA数据包转发系统的场景示意图;
[0065]图4为本发明实施例提供的另一种访问内存的方法的流程示意图;
[0066]图5为本发明实施例提供的再一种访问内存的方法的流程示意图;
[0067]图6为本发明实施例多个设备访问内存时的场景示意图;
[0068]图7为本发明实施例提供的又一种访问内存的方法的流程示意图;
[0069]图8为本发明实施例提供的一种访问内存的设备的装置结构示意图;
[0070]图9为本发明实施例提供的另一种访问内存的设备的装置结构示意图;
[0071]图10为本发明实施例提供的再一种访问内存的设备的装置结构示意图;
[0072]图1lA为本发明实施例提供的一种物理机的装置结构示意图;
[0073]图1lB为本发明实施例提供的另一种物理机的装置结构示意图。

【具体实施方式】
[0074]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0075]实施例一
[0076]本发明实施例一提供一种访问内存的方法,参见图1,该方法可以包括:
[0077]101、获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
[0078]其中,第一设备为通过访问计算机的物理内存实现特定功能的设备,例如,在X86系统的CPU配合FPGA数据包转发系统中,第一设备为FPGA ;或者,第一设备可以为虚拟化平台中虚拟机的外设;本发明对第一设备的类型不进行具体限定;
[0079]第一内存区域是在物理内存中分配的第一设备实现对应功能的专用物理内存区域,例如,参见图2A,第一内存区域包含于物理内存中,第一内存区域至少包含有数据缓存、消息队列及消息指针;
[0080]其中,数据缓存用于储存第一设备实现对应功能过程中访问的数据,该数据可以以数据包的形式存储在数据缓存中;
[0081]消息队列可以是循环队列,消息队列中包含以队列形式排列的数据信息,每个数据信息分别用于存储数据缓存中对应的数据的相关信息,例如,可以包含数据在数据缓存中存放的位置的物理内存地址和数据特征,例如,数据特征可以包含数据的类型、大小、长度等,对于数据信息中包含的数据特征的具体内容,可以根据需要进行设置,本发明不进行具体限定;
[0082]消息队列的深度是指消息队列可以用来存储数据信息的容量,每一个消息队列可以是一个深度确定并且有限的循环队列,且消息队列的深度可以小于数据缓存的容量;
[0083]需要说明的是,当消息队列的深度小于数据缓存的容量时,数据缓存中存储的每个数据对应的数据信息可能一部分数据信息存储于消息队列中,一部分数据信息将等待消息队列有空闲位置时再生成并存储;
[0084]消息指针用于指示消息队列中数据信息的位置,消息指针分为头指针和尾指针,例如,可以用头指针来指示消息队列中最后一个非空闲位置,可以用尾指针来指示消息队列中第一个空闲位置,这样,通过消息指针的指示,可以明确得出消息队列中存放数据的位置和空闲的位置;当第一设备从消息队列中读取数据信息时,可以根据消息队列的基准地址加上消息指针头指针指示的消息队列位置获取到数据信息存放的实际物理内存地址;
[0085]当需要往消息队列中存入数据信息时,首先根据消息指针判断消息队列是否已满,若已满,则等待空位置;若未满,则将需要存放的数据信息存入消息指针的尾指针指示的第一个空闲位置,再更新消息指针将消息指针的尾指针+1,即保持让消息指针的尾指针指示在消息队列中第一个空闲位置;
[0086]其中,根据消息指针判断消息队列是否已满,一般令消息队列的第(消息队列深度-1)个位置不存放数据信息为空,可以采用判断消息指针的尾指针位置+1是否等于头指针位置判断,若等于,则判断消息队列已满,若不等于,则判断消息队列未满;当然,由于消息队列为循环队列,当尾指针指向(消息队列深度-1)位置时,再将尾指针+1回到位置0,故本发明所有实施例中的指针位置+1 —般定义为(指针位置+1)%消息队列深度,其中%为取余运算符号;
[0087]需要说明的是,本发明只是以上述消息指针对消息队列的指示方法以及判断消息队列是否已满的方法为例来说明消息指针与消息队列的位置的指示关系,当然,消息指针对消息队列的指示方法以及判断消息队列是否已满的方法还可以采用其他方法,不会影响本发明的结果,本发明对此不进行具体限定;
[0088]例如,在图2B所示的深度为10的消息队列,该消息队列中位置O存放数据信息1、位置I存放数据信息2、位置2存放数据信息3,其余消息队列位置均为空,那么此时,参见图2B,消息指针的头指针指示在该消息队列的位置0,尾指针指示在该消息队列的位置3 ;当在该消息队列中存入数据信息4时,首先判定消息队列未满,故将数据信息4存入尾指针指示的消息队列位置3,并更新消息队列的尾指针+1指示到消息队列位置4;当从该队列读取数据信息时,读取头指针指示的消息队列位置O存放的数据信息1,并将消息指针的头指针更新+1指示到消息队列位置I ;
[0089]例如,数据缓存中存储有N个数据(以数据包的形式存储),分别记为数据包1,数据包2、......数据包N;
[0090]贝IJ,对应的可以有N个数据信息,分别记为数据信息1,数据信息2、……数据信息N,每个数据信息分别对应一个数据包,每个数据信息可以包含与该数据信息对应的数据包在数据缓存中存放的位置的物理内存地址和数据特征;
[0091]假设,消息队列的深度为S且该消息队列为空,该消息队列的位置可以记为消息队列位置O、消息队列位置1、……消息队列位置S-1,其中,S远远大于N,从消息队列位置O开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息N,对应的消息指针中的头指针指示消息队列位置O,而尾指针指示消息队列位置N ;
[0092]再假设,消息队列的深度为Y且该消息队列为空,该消息队列的位置可以记为消息队列位置O、消息队列位置1、……、消息队列位置Y-1,其中,Y小于N,从消息队列位置O开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息Y-1,那么,数据信息Y、……数据信息N将等待消息队列有空闲位置再生成并存储;对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置Y-1。
[0093]其中,数据访问请求可以由第一设备生成,下面分别以第一设备读取第一内存区域中的数据包和第一设备向第一内存区域存储数据包为例说明数据访问请求的生成过程;
[0094]1、第一设备读取第一内存区域中的数据包;
[0095]例如,第一设备实时获取消息指针中数据信息的物理内存地址,假设当前第一设备获取到数据信息2的物理内存地址,第一设备生成访问消息队列的数据访问请求,该数据访问请求包含数据信息2的物理内存地址;
[0096]假设第一设备根据数据信息2的物理内存地址从消息队列中获取数据信息2,根据该数据信息2获取数据包2的物理内存地址,第一设备生成访问数据缓存的数据访问请求,该数据访问请求包含数据包2的物理内存地址。
[0097]2、第一设备向第一内存区域存储数据包。
[0098]例如,当第一设备需要向第一内存区域保存数据X时,第一设备向第一内存区域申请存储数据包X所需要的数据缓存,获取内存分配给该数据包X在数据缓存中的物理内存地址;
[0099]第一设备根据内存分配给该数据包X在数据缓存中的物理内存地址生成数据访问请求,该数据访问请求包含内存分配给该数据包X在数据缓存中的物理内存地址。
[0100]102、根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
[0101]进一步的,在步骤101之前,所述方法还可以包括,
[0102]将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中,形成物理内存地址信息;
[0103]其中,第一内存区域的物理内存地址包含数据缓存、消息队列及消息指针的物理内存地址。
[0104]将第一内存区域的物理内存地址映射至所述第一设备中。
[0105]其中,物理内存地址信息是通过将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中形成的,物理内存地址信息在I/o虚拟化控制器设备中的可以按照表格形式存在,参见表1,也可以按照其他形式存在,物理内存地址信息的形式不影响本发明的结果,本发明对此不进行限制;
[0106]表1
[0107]

【权利要求】
1.一种访问内存的方法,其特征在于,包括, 获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域; 根据所述第一设备请求访问的数据的物理内存地址查询输入/输出I/o虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址; 若确定所述第一设备请求访问的数据的物理内存地址在所述I/o虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
2.根据权利要求1所述的访问内存的方法,其特征在于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,所述方法还包括, 将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息; 将所述第一内存区域的物理内存地址映射至所述第一设备中。
3.根据权利要求1或2所述的访问内存的方法,其特征在于,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述根据所述第一设备请求访问的数据的物理内存地址查询I/o虚拟化控制器设备中的物理内存地址信息,包括, 根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域的物理内存地址信息; 根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
4.根据权利要求1-3任一项所述的访问内存的方法,其特征在于,所述方法还包括, 若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
5.根据权利要求4所述的访问内存的方法,其特征在于,所述方法还包括, 若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
6.—种访问内存的设备,其特征在于,包括: 获取单元,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域; 查询单元,用于根据所述获取单元获取的所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址; 访问单元,用于若查询单元确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
7.根据权利要求6所述的访问内存的设备,其特征在于,所述设备还包括, 映射单元,用于在所述获取单元获取所述第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/o虚拟化控制器设备中,形成所述物理内存地址信息; 所述映射单元还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
8.根据权利要求6或7所述的访问内存的设备,其特征在于,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述查询单元具体用于, 根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息; 根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
9.根据权利要求6-8任一项所述的访问内存的设备,其特征在于,所述设备还包括, 丢弃单元,用于若所述查询单元确定所述第一设备请求访问的数据的物理内存地址不在所述I/o虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
10.根据权利要求9所述的访问内存的设备,其特征在于,所述设备还包括, 记录单元,用于若所述查询单元确定所述第一设备请求访问的数据的物理内存地址不在所述I/o虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
11.一种访问内存的设备,其特征在于,包括 处理器,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域; I/o虚拟化控制器设备,用于根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址; 第一设备,用于若I/o虚拟化控制器设备确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
12.根据权利要求11所述的访问内存的设备,其特征在于,所述处理器具体用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息; 所述处理器具体还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
13.根据权利要求11或12所述的访问内存的设备,其特征在于,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述I/O虚拟化控制器设备还用于, 根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息; 根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
14.根据权利要求11-13任一项所述的访问内存的设备,其特征在于,所述I/O虚拟化控制器设备还用于, 若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
15.根据权利要求14所述的访问内存的设备,其特征在于,所述I/O虚拟化控制器设备还用于, 若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
16.一种物理机,其特征在于,包括,访问内存的设备以及物理内存,其中,所述访问内存的设备包含第一设备以及I/O虚拟化控制器设备; 所述访问内存的设备用于, 获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域; 根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址; 若确定所述第一设备请求访问的数据的物理内存地址在所述I/o虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
17.根据权利要求16所述的物理机,其特征在于,所述访问内存的设备还用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息; 将所述第一内存区域的物理内存地址映射至所述第一设备中。
18.根据权利要求16或17所述的物理机,其特征在于,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述访问内存的设备具体用于, 根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域的物理内存地址信息; 根据所述第一设备请求访问的数据的物理内存地址查询所述I/o虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
19.根据权利要求16-18任一项所述的物理机,其特征在于,所述访问内存的设备还用于, 若确定所述第一设备请求访问的数据的物理内存地址不在所述I/o虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
【文档编号】G06F13/16GK104169891SQ201380004536
【公开日】2014年11月26日 申请日期:2013年10月29日 优先权日:2013年10月29日
【发明者】姚传群, 王俊杰, 彭伟林 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1