CN104169891A - 一种访问内存的方法及设备 - Google Patents
一种访问内存的方法及设备 Download PDFInfo
- Publication number
- CN104169891A CN104169891A CN201380004536.4A CN201380004536A CN104169891A CN 104169891 A CN104169891 A CN 104169891A CN 201380004536 A CN201380004536 A CN 201380004536A CN 104169891 A CN104169891 A CN 104169891A
- Authority
- CN
- China
- Prior art keywords
- physical memory
- memory addresses
- data
- equipment
- access
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 1080
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000006870 function Effects 0.000 description 13
- 230000005055 memory storage Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000008929 regeneration Effects 0.000 description 7
- 238000011069 regeneration method Methods 0.000 description 7
- 238000000151 deposition Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种访问内存的方法及设备,涉及计算机领域,有效提高系统内存的安全性。本发明实施例提供的方法包括:获取第一设备请求访问第一内存区域的数据访问请求,其中,数据访问请求包含第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,物理内存地址信息包含与第一内存区域的物理内存地址对应的物理内存地址;若确定第一设备请求访问的数据的物理内存地址在I/O虚拟化控制器设备中的物理内存地址信息中,则访问第一内存区域。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种访问内存的方法及设备。
背景技术
在计算机系统的物理内存中,既有用于存放计算机操作系统的系统内存,也有用于存放计算机实现特定功能时存储数据的专用功能性内存,专用功能性内存与系统内存是无隔离的分布在物理内存中的,例如,在中央处理器(Central Processing Unit,简称CPU)配合现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)实现数据包的转发系统中,从物理内存中分配出一片内存用来作为转发内存(专用功能性内存),用来存储消息队列(Queue)、数据缓存(Buffer)、消息指针,转发内存及系统内存无隔离的分布在物理内存中,CPU和FPGA通过消息队列实现数据缓存位置的交互,然后通过获取的消息队列内容获取对应的数据。
发明人发现现有技术至少存在以下缺陷:由于专用功能性内存和系统内存之间没有任何的隔离和保护,一旦访问专用功能性内存的地址发生错误,就有可能踩到系统内存,容易造成系统复位或者挂死引起事故;随着计算机系统的应用越来越广泛,计算机所能实现的功能也将越来越多,对物理内存的访问量也会大幅提高,这样则增大了系统内存被误踩的可能性,降低了系统内存的安全性。
发明内容
本发明的实施例提供一种访问内存的方法及设备,有效提高系统内存的安全性。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种访问内存的方法,包括,
获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
根据所述第一设备请求访问的数据的物理内存地址查询输入/输出I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
结合第一方面,在第一方面的第一种可能的实现方式中,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,所述方法还包括,
将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
将所述第一内存区域的物理内存地址映射至所述第一设备中。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息,包括:
根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
第二方面,提供一种访问内存的设备,包括,
获取单元,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
查询单元,用于根据所述获取单元获取的所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
访问单元,用于若查询单元确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
结合第二方面,在第二方面的第一种可能的实现方式中,所述设备还包括,
映射单元,用于在所述获取单元获取所述第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
所述映射单元还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述查询单元具体用于,
根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述设备还包括,
丢弃单元,用于若所述查询单元确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述设备还包括,
记录单元,用于若所述查询单元确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
第三方面,提供一种访问内存的设备,包括,
处理器,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
I/O虚拟化控制器设备,用于根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
第一设备,用于若I/O虚拟化控制器设备确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
结合第三方面,在第三方面的第一种可能的实现方式中,所述处理器具体用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
所述处理器具体还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述I/O虚拟化控制器设备还用于,
根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述I/O虚拟化控制器设备还用于,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述I/O虚拟化控制器设备还用于,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
第四方面,提供一种物理机,包括,访问内存的设备以及物理内存,其中,所述访问内存的设备包含第一设备以及I/O虚拟化控制器设备;
所述访问内存的设备用于,
获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
结合第四方面,在第四方面的第一种可能的实现方式中,所述访问内存的设备还用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
所述访问内存的设备还用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述访问内存的设备具体用于,
根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
结合第四方面或第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述访问内存的设备还用于,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
本发明实施例提供的一种访问内存的方法及设备,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域;有效的提高了系统内存的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种访问内存的方法的流程示意图;
图2A为本发明实施例提供的一种物理内存的内部结构示意图;
图2B为本发明实施例提供的一种消息指针与消息队列的场景示意图;
图3为本发明实施例提供的一种CPU配合FPGA数据包转发系统的场景示意图;
图4为本发明实施例提供的另一种访问内存的方法的流程示意图;
图5为本发明实施例提供的再一种访问内存的方法的流程示意图;
图6为本发明实施例多个设备访问内存时的场景示意图;
图7为本发明实施例提供的又一种访问内存的方法的流程示意图;
图8为本发明实施例提供的一种访问内存的设备的装置结构示意图;
图9为本发明实施例提供的另一种访问内存的设备的装置结构示意图;
图10为本发明实施例提供的再一种访问内存的设备的装置结构示意图;
图11A为本发明实施例提供的一种物理机的装置结构示意图;
图11B为本发明实施例提供的另一种物理机的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种访问内存的方法,参见图1,该方法可以包括:
101、获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
其中,第一设备为通过访问计算机的物理内存实现特定功能的设备,例如,在X86系统的CPU配合FPGA数据包转发系统中,第一设备为FPGA;或者,第一设备可以为虚拟化平台中虚拟机的外设;本发明对第一设备的类型不进行具体限定;
第一内存区域是在物理内存中分配的第一设备实现对应功能的专用物理内存区域,例如,参见图2A,第一内存区域包含于物理内存中,第一内存区域至少包含有数据缓存、消息队列及消息指针;
其中,数据缓存用于储存第一设备实现对应功能过程中访问的数据,该数据可以以数据包的形式存储在数据缓存中;
消息队列可以是循环队列,消息队列中包含以队列形式排列的数据信息,每个数据信息分别用于存储数据缓存中对应的数据的相关信息,例如,可以包含数据在数据缓存中存放的位置的物理内存地址和数据特征,例如,数据特征可以包含数据的类型、大小、长度等,对于数据信息中包含的数据特征的具体内容,可以根据需要进行设置,本发明不进行具体限定;
消息队列的深度是指消息队列可以用来存储数据信息的容量,每一个消息队列可以是一个深度确定并且有限的循环队列,且消息队列的深度可以小于数据缓存的容量;
需要说明的是,当消息队列的深度小于数据缓存的容量时,数据缓存中存储的每个数据对应的数据信息可能一部分数据信息存储于消息队列中,一部分数据信息将等待消息队列有空闲位置时再生成并存储;
消息指针用于指示消息队列中数据信息的位置,消息指针分为头指针和尾指针,例如,可以用头指针来指示消息队列中最后一个非空闲位置,可以用尾指针来指示消息队列中第一个空闲位置,这样,通过消息指针的指示,可以明确得出消息队列中存放数据的位置和空闲的位置;当第一设备从消息队列中读取数据信息时,可以根据消息队列的基准地址加上消息指针头指针指示的消息队列位置获取到数据信息存放的实际物理内存地址;
当需要往消息队列中存入数据信息时,首先根据消息指针判断消息队列是否已满,若已满,则等待空位置;若未满,则将需要存放的数据信息存入消息指针的尾指针指示的第一个空闲位置,再更新消息指针将消息指针的尾指针+1,即保持让消息指针的尾指针指示在消息队列中第一个空闲位置;
其中,根据消息指针判断消息队列是否已满,一般令消息队列的第(消息队列深度-1)个位置不存放数据信息为空,可以采用判断消息指针的尾指针位置+1是否等于头指针位置判断,若等于,则判断消息队列已满,若不等于,则判断消息队列未满;当然,由于消息队列为循环队列,当尾指针指向(消息队列深度-1)位置时,再将尾指针+1回到位置0,故本发明所有实施例中的指针位置+1一般定义为(指针位置+1)%消息队列深度,其中%为取余运算符号;
需要说明的是,本发明只是以上述消息指针对消息队列的指示方法以及判断消息队列是否已满的方法为例来说明消息指针与消息队列的位置的指示关系,当然,消息指针对消息队列的指示方法以及判断消息队列是否已满的方法还可以采用其他方法,不会影响本发明的结果,本发明对此不进行具体限定;
例如,在图2B所示的深度为10的消息队列,该消息队列中位置0存放数据信息1、位置1存放数据信息2、位置2存放数据信息3,其余消息队列位置均为空,那么此时,参见图2B,消息指针的头指针指示在该消息队列的位置0,尾指针指示在该消息队列的位置3;当在该消息队列中存入数据信息4时,首先判定消息队列未满,故将数据信息4存入尾指针指示的消息队列位置3,并更新消息队列的尾指针+1指示到消息队列位置4;当从该队列读取数据信息时,读取头指针指示的消息队列位置0存放的数据信息1,并将消息指针的头指针更新+1指示到消息队列位置1;
例如,数据缓存中存储有N个数据(以数据包的形式存储),分别记为数据包1,数据包2、……数据包N;
则,对应的可以有N个数据信息,分别记为数据信息1,数据信息2、……数据信息N,每个数据信息分别对应一个数据包,每个数据信息可以包含与该数据信息对应的数据包在数据缓存中存放的位置的物理内存地址和数据特征;
假设,消息队列的深度为S且该消息队列为空,该消息队列的位置可以记为消息队列位置0、消息队列位置1、……消息队列位置S-1,其中,S远远大于N,从消息队列位置0开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息N,对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置N;
再假设,消息队列的深度为Y且该消息队列为空,该消息队列的位置可以记为消息队列位置0、消息队列位置1、……、消息队列位置Y-1,其中,Y小于N,从消息队列位置0开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息Y-1,那么,数据信息Y、……数据信息N将等待消息队列有空闲位置再生成并存储;对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置Y-1。
其中,数据访问请求可以由第一设备生成,下面分别以第一设备读取第一内存区域中的数据包和第一设备向第一内存区域存储数据包为例说明数据访问请求的生成过程;
1、第一设备读取第一内存区域中的数据包;
例如,第一设备实时获取消息指针中数据信息的物理内存地址,假设当前第一设备获取到数据信息2的物理内存地址,第一设备生成访问消息队列的数据访问请求,该数据访问请求包含数据信息2的物理内存地址;
假设第一设备根据数据信息2的物理内存地址从消息队列中获取数据信息2,根据该数据信息2获取数据包2的物理内存地址,第一设备生成访问数据缓存的数据访问请求,该数据访问请求包含数据包2的物理内存地址。
2、第一设备向第一内存区域存储数据包。
例如,当第一设备需要向第一内存区域保存数据X时,第一设备向第一内存区域申请存储数据包X所需要的数据缓存,获取内存分配给该数据包X在数据缓存中的物理内存地址;
第一设备根据内存分配给该数据包X在数据缓存中的物理内存地址生成数据访问请求,该数据访问请求包含内存分配给该数据包X在数据缓存中的物理内存地址。
102、根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
进一步的,在步骤101之前,所述方法还可以包括,
将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中,形成物理内存地址信息;
其中,第一内存区域的物理内存地址包含数据缓存、消息队列及消息指针的物理内存地址。
将第一内存区域的物理内存地址映射至所述第一设备中。
其中,物理内存地址信息是通过将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中形成的,物理内存地址信息在I/O虚拟化控制器设备中的可以按照表格形式存在,参见表1,也可以按照其他形式存在,物理内存地址信息的形式不影响本发明的结果,本发明对此不进行限制;
表1
物理内存地址1 |
物理内存地址2 |
物理内存地址3 |
…… |
物理内存地址N |
可选的,I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;
示例性的,当多个设备同时访问物理内存时,物理内存中则会分配多个内存区域,当然,不同的设备可以对应同一个内存区域;通过将每个内存区域的物理内存地址映射至I/O虚拟化控制器设备中多个形成物理内存信息,则I/O虚拟化控制器设备中包含多个物理内存信息组成的物理内存信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域,不同的设备可以对应同一个物理内存地址信息;
物理内存地址信息库中的多个物理内存地址信息分别与多个内存区域一一对应,物理内存地址信息库在I/O虚拟化控制器设备中可以以表格的形式存在,参见表2,当然,物理内存地址信息库在I/O虚拟化控制器设备中也可以按照其他形式存在,物理内存地址信息库的形式不影响本发明的结果,本发明对此不进行限制;
表2
第一设备 | 第一设备的物理内存地址信息 |
第二设备 | 第二设备的物理内存地址信息 |
第三设备 | 第三设备的物理内存地址信息 |
…… | …… |
第N设备 | 第N设备的物理内存地址信息 |
需要说明的是,多个设备可以对应同一个内存区域,在I/O虚拟化控制器设备中的物理内存地址信息库中,多个设备可以对应同一个物理内存地址信息,例如,表2所示的第一设备的物理内存地址信息可以与第N设备的物理内存地址信息相同;
相应的,根据第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息,可以包括,
根据第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取第一设备对应的内存区域对应的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
103、若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
示例性的,若数据访问请求中包含的第一设备请求访问的数据的物理内存地址在I/O虚拟化控制器设备中的物理内存地址信息内,则说明第一设备发送的请求访问第一内存区域的数据访问请求可以正确访问第一内存区域,不会对系统内存误踩,即不会影响系统内存的安全性。
进一步的,所述方法还可以包括,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
可选的,所述方法还可以包括,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
本发明实施例提供的一种访问内存的方法,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域;有效的提高了系统内存的安全性。
实施例二
本发明实施例二提供一种访问内存的方法,以在X86系统中,CPU配合FPGA数据包转发系统中FPGA向内存存储数据为例,对图1所示的访问内存的方法进行详细描述,该访问内存的方法的具体过程可以由物理内存所在的物理机来完成;
需要说明的是,参见图3,在X86系统的CPU配合FPGA数据包转发系统中,FPGA与物理内存交互数据包括FPGA向物理内存存储数据和读取数据,本发明实施例仅以FPGA作为第一设备向物理内存存储数据为例对访问内存的方法进行描述,其他设备访问内存的方法与FPGA访问内存的方法相似,此处不再进行赘述。
参见图4,该方法可以包括:
401、在物理内存中分配第一内存区域;
根据CPU配合FPGA数据包转发系统的需求,在物理内存中分配出CPU和FPGA对应的专用物理内存区域,即第一内存区域,定义为转发内存;
例如,CPU配合FPGA数据包转发系统需要1千比特(KiloByte,简称KB)物理内存用于实现数据包转发功能,则在物理内存中分配1KB物理内存作为转发内存,起始物理内存地址为2001H,则转发内存的物理内存地址为2001H~2400H;
需要说明的是,本实施例以在物理内存中分配连续的物理内存区域作为转发内存为例进行说明,对于分配物理内存的哪部分作为转发内存,本发明对此不进行具体限定。
402、将转发内存的物理内存地址映射至内存直接存取重映射(Direct Memory Access Remapping,简称DMA Remapping)结构中,形成物理内存地址信息;同时将转发内存的物理内存地址映射至FPGA;
其中,DMA Remapping为配合X86系统中的I/O虚拟化控制器设备,本实施例仅以X86为例对访问内存的方法进行说明,对于I/O虚拟化控制器设备的类型本发明实施例不进行具体限定,只需保证I/O虚拟化控制器设备与本发明方法所使用的系统配套即可;凡是通过I/O虚拟化控制器设备访问内存的方法均属于本发明保护范围;
例如,将转发内存的物理内存地址2001H~2400H映射至DMARemapping结构中,形成的物理内存地址信息如表3所示;
表3
2001H |
2002H |
2003H |
…… |
2400H |
当转发内存的物理内存地址分别映射至DMA Remapping结构和FPGA中后,则完成了转发内存、DMA Remapping结构和FPGA三者之间的映射关系;此后,FPGA与转发内存之间的交互数据中包含的物理内存地址都会通过DMA Remapping结构的监测和控制。
403、定义转发内存中消息队列的基准地址和消息队列深度;
其中,根据CPU配合FPGA数据包转发系统的需求,在转发内存中分配出作为消息队列的物理内存区域,包含分配消息队列的基准地址和消息队列深度;
例如,CPU配合FPGA数据包转发系统需要深度为10的消息队列,根据该需求,在转发内存中,定义基准地址为2001H,深度为10的消息队列;则,消息队列中的位置可以记为消息队列位置0、消息队列位置1、消息队列位置2、……消息队列位置9;
因此,从物理内存读取数据包的设备可以根据消息指针中头指针指示的消息队列位置与消息队列的基准地址得出存放数据信息的消息队列的物理内存地址;
相应的,转发内存中除了消息队列、消息指针外的区域则为数据缓冲区域。
404、发起存储请求,获取物理内存地址;
例如,若FPGA接收到一个大小为1字节(Byte,简称B)的数据包X,需要将该数据包X转发出去,首先需要将数据包X存入转发内存中;
发起存储请求,申请长度为1B的物理内存,用来存放数据包X;假设,获取到长度为1B的物理内存,该获取到的长度为1B的物理内存对应的物理内存地址为2300H。
405、获取申请访问转发内存的数据访问请求,其中数据访问请求包含步骤404获取的物理内存地址;
其中,在步骤404中获取到用于存储数据包X的物理内存后,需要生成数据访问请求,申请将数据包X存入步骤404获取的物理内存内;
例如,获取申请访问转发内存的数据访问请求,该数据访问请求包含步骤404获取的物理内存地址,即申请将数据包X存入物理内存中物理内存地址为2300H的位置。
406、根据数据访问请求中包含的物理内存地址查询DMARemapping结构的物理内存地址信息,检测数据访问请求中包含的物理内存地址是否在DMA Remapping结构的物理内存地址信息中;若是,则执行步骤407;若否,则执行步骤409;
例如,步骤405中获取到数据访问请求,该数据访问请求中包含步骤404获取的物理内存的物理内存地址,即2300H;则根据获取的数据访问请求中包含的物理内存地址2300H查询表3所示的物理内存地址信息,检测获取的数据访问请求中包含的物理内存地址2300H是否在DMA Remapping结构的物理内存地址信息中;
由于表3所示的物理内存地址信息中包含的物理内存地址为2001H~2400H,而获取的数据访问请求中包含的物理内存地址为2300H,经过检测,可以确定获取的数据访问请求中包含的物理内存地址2300H在DMA Remapping结构的物理内存地址信息中;
再例如,若步骤404获取的物理内存地址为2600H,步骤405中获取到的数据访问请求,该数据访问请求中包含步骤404获取的物理内存的物理内存地址,即2600H,;则根据获取的数据访问请求中包含的物理内存地址2600H查询表3所示的物理内存地址信息,检测获取的数据访问请求中包含的物理内存地址2600H是否在DMARemapping结构的物理内存地址信息中;
由于表3所示的物理内存地址信息中包含的物理内存地址为2001H~2400H,而获取的数据访问请求中包含的物理内存地址为2600H,经过检测,可以确定获取的数据访问请求中包含的物理内存地址2600H不在DMA Remapping结构的物理内存地址信息中。
407、将需要转发的数据包存放至数据访问请求中包含的物理内存地址所对应的物理内存位置中;
例如,步骤406根据获取的数据访问请求中包含的物理内存地址2300H查询表3所示的物理内存地址信息,确定获取的数据访问请求中包含的物理内存地址2300H在DMA Remapping结构的物理内存地址信息中,则将数据包X存入物理内存中物理内存地址地址为2300H的位置。
408、生成数据信息,并将数据信息存入消息队列中,且更新消息指针;
其中,数据信息包含存放所述数据包的物理内存地址及数据特征;
数据包的数据特征可以包括数据大小、数据类型、数据长度等数据特征,本发明对此不进行具体限定;
需要说明的是,将数据信息存放到消息队列中之前,首先判断消息队列是否已满;若消息队列已满,则等待消息队列有空闲位置后再生成数据信息;对于判断消息队列是否已满的方法已经在实施例一进行了详细描述,此处不再进行赘述;
若消息队列未满,则生成消息信息存入消息队列,本实施例以消息队列未满为例进行说明;
若消息队列未满一般选择转发内存中消息队列中的第一个空闲位置,即消息指针中尾指针指示的位置;当然,也可以选择消息队列中其他空闲的位置存放空闲位置存放所述数据包的物理内存地址及数据特征,具体位置不进行限定;
进一步的,将数据信息存入消息队列的第一个空闲位置后,更新消息指针中尾指针指示的位置,使得消息指针中尾指针指示的位置+1;
例如,将数据包X存入物理内存中物理内存地址为2300H的位置后,将数据包X存放的位置即物理内存地址2300H和数据包X的数据特征生成数据信息X;将数据信息X存放到转发内存中消息队列的第一个空闲位置即消息指针中尾指针指示的位置;
假设此时消息指针的尾指针指示消息队列中第一个空闲位置为消息队列位置4,则将数据信息存入该位置;
并更新消息指针中的尾指针指示消息队列位置5;
需要说明的是,在生成数据信息X的过程中,有可能将错误的物理内存地址包含到数据信息X中,即数据信息X中包含的物理内存地址不是数据包X实际保存的位置;类似这种错误都可以在第一设备访问物理内存读取数据包的过程中通过本发明所述的访问内存的方法检测并纠正。
409、丢弃数据访问请求;
例如,在步骤406中查询表3可确定数据访问请求中包含的物理内存地址不在DMA Remapping结构的物理内存地址信息中,故不能将数据包X存入物理内存中物理内存地址为2600H的位置,将数据访问请求丢弃;
当丢弃数据访问请求后,重新执行步骤404获取用来存放数据包X的物理内存的物理内存地址;
410、记录错误访问信息。
例如,若丢弃数据访问请求,记录此次错误访问信息,以便于访问内存的设备对访问问题的定位,可以提高系统的可维护性;
需要说明的是,上述向物理内存存储数据包过程中,此实施例仅以申请将数据包X存入物理内存时的请求作为数据访问请求为例进行说明,在实际使用中,向物理内存存储数据过程中包含有物理内存地址的任何请求均可以作为数据访问请求,本发明对此不进行限定,都属于本发明保护的范围。
本发明实施例提供的一种访问内存的方法,通过获取请求访问转发内存的数据访问请求,其中,数据访问请求包含请求存放数据包X的物理内存地址;根据请求存放数据包X的物理内存地址查询DMARemapping结构中的物理内存地址信息;若确定请求存放数据包X的物理内存地址在DMA Remapping结构中的物理内存地址信息中,则访问转发内存;检测请求存放数据包X的物理内存地址是否在分配的专用的物理内存区域,防止该请求存放数据包X的物理内存地址若不在分配的专用的物理内存区域中时将数据包X错误的存储在系统内存中影响系统内存的安全性;有效的提高了系统内存的安全性。
实施例三
本发明实施例三提供一种访问内存的方法,以从物理内存读取数据包为例,对图1所示的访问内存的方法进行详细描述,该访问内存的方法的具体过程可以由物理内存所在的物理机完成。
对于分配第一内存区域和第一内存区域的物理内存地址映射以及消息队列的定义的方法与实施例二中步骤401、步骤402和步骤403描述的方法类似,本实施例对此在此不再进行赘述;
在本实施例中,假设:在第一内存区域的物理地址为2001H~2400H;消息队列深度10,基准地址为2001H;数据包X存放的位置的物理地址为2300H;数据包X对应的数据信息X存放在消息队列的消息队列位置4,且此时消息指针的头指针指示在消息队列的位置4;
下面以上述假设为背景,详细描述从物理内存中读取数据包X的方法的详细过程,参见图5,该方法可以包括:
501、实时获取第一内存区域中消息指针中头指针指示的消息队列位置得到存放数据信息X的物理内存地址;
例如,实时的获取第一内存区域中的消息指针中头指针指示的最后一个非空消息队列位置为消息队列位置4,根据消息队列的基准地址2001H可以得出存放数据信息X的消息队列的物理内存地址为2005H。
502、获取数据信息X;
例如,根据步骤501得到的存放数据信息X的物理内存地址,在物理内存中物理内存地址2005H指示的位置获取该位置存放的数据信息X。
503、根据步骤502获取的数据信息X获取数据包所存放的数据缓存的物理内存地址;
例如,根据在物理内存中物理内存地址2005H位置获取的数据信息X,获取到数据包X存放的位置,即物理内存中物理内存地址2300H的位置;
或者,假设在向物理内存存放数据包X过程中,在生成数据信息X时,生成的数据信息X中包含的物理内存地址不是保存数据包X的实际位置时,而是系统内存的位置2701H,此时,在物理内存中物理内存地址2005H位置获取到数据信息X,则获取到数据包X存放的位置为物理内存中物理内存地址2701H的位置。
504、获取申请访问第一内存区域的数据访问请求,其中数据访问请求包含步骤503获取的物理内存地址;
例如,获取申请访问第一内存区域的数据访问请求,该数据访问请求包含步骤503获取的物理内存地址2300H,即申请读取物理内存中物理内存地址2300H指示的位置存放的数据;
或者,获取申请访问第一内存区域的数据访问请求,该数据访问请求包含步骤503获取的物理内存地址2701H,即申请读取物理内存中物理内存地址2701H指示的位置存放的数据。
505、根据数据访问请求中包含的物理内存地址查询DMARemapping结构的物理内存地址信息,检测数据访问请求中包含的物理内存地址是否在DMA Remapping结构的物理内存地址信息中;若是,则执行步骤506;若否,则执行步骤507;
例如,根据数据访问请求中包含的物理内存地址2300H查询表3所示的物理内存地址信息,检测数据访问请求中包含的物理内存地址2300H是否在DMA Remapping结构的物理内存地址信息中;
由于表3所示的物理内存地址信息中包含的物理内存地址为2001H~2400H,而获取的数据访问请求中包含的物理内存地址为2300H,经过检测,可以确定获取的数据访问请求中包含的物理内存地址2300H在DMA Remapping结构的物理内存地址信息中,则执行步骤506;
或者,根据获取的数据访问请求中包含的物理内存地址2701H查询表3所示的物理内存地址信息,检测获取的数据访问请求中包含的物理内存地址2701H是否在DMA Remapping结构的物理内存地址信息中;
由于表3所示的物理内存地址信息中包含的物理内存地址为2001H~2400H,而获取的数据访问请求中包含的物理内存地址为2701H,经过检测,可以确定获取的数据访问请求中包含的物理内存地址2701H不在DMA Remapping结构的物理内存地址信息中,则执行步骤507。
506、读取数据访问请求中包含的物理内存地址所对应的物理内存位置存储的数据包,并更新消息指针;
例如,步骤503根据获取的数据访问请求中包含的物理内存地址2300H查询表3所示的物理内存地址信息,确定数据访问请求中包含的物理内存地址2300H在DMA Remapping结构的物理内存地址信息中,则读取数据访问请求中包含的物理内存地址2300H所对应的物理内存位置存储的数据包X;
进一步的,更新消息指针中头指针指示的位置,使得消息指针中头指针指示的位置+1,即更新消息指针中的头指针指示消息队列位置5。
507、丢弃数据访问请求;
例如,若步骤505中确定数据访问请求中包含的物理内存地址不在DMA Remapping结构的物理内存地址信息中,则不能进行此次访问内存,丢弃数据访问请求;
当丢弃数据访问请求后,重新执行步骤501获取消息指针中头指针指示的位置。
508、记录错误访问信息。
例如,若丢弃数据访问请求,记录此次错误访问信息,以便于访问内存的设备对访问问题的定位,可以提高系统的可维护性。
需要说明的是,上述从物理内存中读取数据过程中,此实施例仅以申请访问物理内存地址中的数据包X的请求作为数据访问请求为例进行说明,在实际使用中,从物理内存中读取数据过程中任何包含有物理内存地址的请求均可以作为数据访问请求,本发明对此不进行限定,都属于本发明保护的范围。
本发明实施例提供的一种访问内存的方法,通过获取请求访问转发内存的数据访问请求,其中,数据访问请求包含请求读取的数据的物理内存地址;根据请求读取的数据的物理内存地址查询DMARemapping结构中的物理内存地址信息;若确定请求读取的数据的物理内存地址在DMA Remapping结构中的物理内存地址信息中,则访问转发内存;通过检测请求读取的数据的物理内存地址是否在分配的专用的物理内存区域,防止读取的数据包所存放的物理内存的物理内存地址不在分配的专用的物理内存区域中时将系统内存的数据包读取接收,影响系统内存的安全性有效的提高了系统内存的安全性。
实施例四
本发明实施例四提供一种访问内存的方法,以X86系统中N个设备同时访问内存为例,对图1所示访问内存的方法进行详细描述;
参见图6,在X86系统中,有N个设备访问内存,分别记为设备1、设备2、设备3、……设备N,本实施例描述设备1、设备2、设备3、……设备N访问内存的方法;
参见图7,所述方法可以包括:
701、在物理内存中给每个设备分配专用内存区域;
例如,在物理内存中给设备1、设备2、设备3、……设备N分别分配内存区域1、内存区域2、内存区域3、……内存区域N;当然,多个设备可以对应同一个内存区域,所以,在分配内存区域1、内存区域2、内存区域3、……内存区域N内可以有相同的内存区域存在,此实施例以内存区域1、内存区域2、内存区域3、……内存区域N全部都不相同为例进行说明。
702、将N个内存区域的物理内存地址分别映射至DMARemapping结构中形成物理内存地址信息;
例如,将内存区域1、内存区域2、内存区域3、……内存区域N的物理内存地址分别映射至DMA Remapping结构中,形成N个物理内存地址信息,记为物理内存地址信息1、物理内存地址信息2、物理内存地址信息3、……物理内存地址信息N;
设备、内存区域、物理内存地址信息三者之间相互对应;
物理内存地址信息1、物理内存地址信息2、物理内存地址信息3、……物理内存地址信息N组成DMA Remapping结构中的物理内存地址信息库。
703、获取第一设备发送的申请访问第一内存区域的数据访问请求,其中,数据访问请求包含第一设备申请访问的数据的物理内存地址;
例如,获取到设备N发送的申请访问内存区域N的数据访问请求,其中,该访问请求包含设备N申请访问的数据的物理内存地址。
704、根据第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取第一内存区域对应的物理内存地址信息;
例如,根据设备N发送的申请访问内存区域N的数据访问请求查询物理内存地址信息库,获取第一设备对应的第一内存区域对应的物理内存地址信息N。
705、根据第一设备请求访问的数据的物理内存地址查询步骤704获取的物理内存地址信息,检测第一设备请求访问的数据的物理内存地址是否在DMA Remapping结构中与第一设备对应的物理内存地址信息中;若是,则执行步骤706;若否,则执行步骤707;
例如,根据设备N发送的申请访问内存区域N的数据访问请求中包含的设备N申请访问的数据的物理内存地址查询物理内存地址信息N,确定设备N请求访问的数据的物理内存地址是否在DMARemapping结构中与设备N对应的物理内存地址信息N中。
706、访问第一内存区域中申请访问的数据;
例如,若步骤705确定设备N请求访问的数据的物理内存地址在DMA Remapping结构中与设备N对应的物理内存地址信息N中,则访问内存区域N中申请访问的数据。
707、丢弃数据访问请求;
例如,丢弃设备N发送的数据访问请求。
708、记录错误访问信息。
例如,若丢弃数据访问请求,记录此次错误访问信息,以便于设备N对访问问题的定位,可以提高系统的可维护性。
本发明实施例提供的一种访问内存的方法,当有多个设备访问内存时,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;根据第一设备请求访问的数据的物理内存地址查询物理内存地址信息库,获取第一内存区域对应的物理内存地址信息;根据第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的第一内存区域对应的物理内存地址信息;若确定第一设备请求访问的数据的物理内存地址在I/O虚拟化控制器设备中的物理内存地址信息中,则访问第一内存区域;有效的提高了系统内存的安全性。
实施例五
本发明实施例五提供一种访问内存的设备80,参见图8,该设备80可以包括:
获取单元801,用于获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
其中,第一设备为通过访问计算机的物理内存实现特定功能的设备,例如,在CPU配合FPGA数据包转发系统中,第一设备为CPU或者FPGA;或者,第一设备可以为虚拟化平台中虚拟机的外设;本发明对第一设备的类型不进行具体限定;
第一内存区域是在物理内存中分配的第一设备实现对应功能的专用物理内存区域,例如,参见图2,第一内存区域包含于物理内存中,第一内存区域至少包含有数据缓存、消息队列及消息指针;
其中,数据缓存用于储存第一设备实现对应功能过程中访问的数据,该数据可以以数据包的形式存储在数据缓存中;
消息队列可以是循环队列,消息队列中包含以队列形式排列的数据信息,每个数据信息分别用于存储数据缓存中对应的数据的相关信息,例如,可以包含数据在数据缓存中存放的位置的物理内存地址和数据特征,例如,数据特征可以包含数据的类型、大小、长度等,对于数据信息中包含的数据特征的具体内容,可以根据需要进行设置,本发明不进行具体限定;
消息队列的深度是指消息队列可以用来存储数据信息的容量,每一个消息队列可以是一个深度确定并且有限的循环队列,且消息队列的深度可以小于数据缓存的容量;
需要说明的是,当消息队列的深度小于数据缓存的容量时,数据缓存中存储的每个数据对应的数据信息将可能一部分数据信息存储于消息队列中,一部分数据信息将等待消息队列有空闲位置时再生成并存储;
消息指针用于指示消息队列中数据信息的位置,消息指针分为头指针和尾指针,例如,可以用头指针来指示消息队列中最后一个非空闲位置,可以用尾指针来指示消息队列中第一个空闲位置,这样,通过消息指针的指示,可以明确得出消息队列中存放数据的位置和空闲的位置;当第一设备从消息队列中读取数据信息时,可以根据消息队列的基准地址加上消息指针头指针指示的消息队列位置获取到数据信息存放的实际物理内存地址;
例如,数据缓存中存储有N个数据(以数据包的形式存储),分别记为数据包1,数据包2、……数据包N。
则,对应的可以有N个数据信息,分别记为数据信息1,数据信息2、……数据信息N,每个数据信息分别对应一个数据包,每个数据信息可以包含与该数据信息对应的数据包在数据缓存中存放的位置的物理内存地址和数据特征;
假设,消息队列的深度为S且该消息队列为空,该消息队列的位置可以记为消息队列位置0、消息队列位置1、……消息队列位置S-1,其中,S远远大于N,从消息队列位置0开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息N,对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置N;
再假设,消息队列的深度为Y且该消息队列为空,该消息队列的位置可以记为消息队列位置0、消息队列位置1、……、消息队列位置Y-1,其中,Y小于N,从消息队列位置0开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息Y-1,那么,数据信息Y、……数据信息N将等待消息队列有空闲位置再生成并存储;对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置Y-1。
其中,数据访问请求可以由第一设备生成,下面分别以第一设备读取第一内存区域中的数据包和第一设备向第一内存区域存储数据包为例说明数据访问请求的生成过程;
1、第一设备读取第一内存区域中的数据包;
例如,第一设备实时获取消息指针中数据信息的物理内存地址,假设当前第一设备获取到数据信息2的物理内存地址,第一设备生成访问消息队列的数据访问请求,该数据访问请求包含数据信息2的物理内存地址;
假设第一设备根据数据信息2的物理内存地址从消息队列中获取数据信息2,根据该数据信息2获取数据包2的物理内存地址,第一设备生成访问数据缓存的数据访问请求,该数据访问请求包含数据包2的物理内存地址。
2、第一设备向第一内存区域存储数据包。
例如,当第一设备需要向第一内存区域保存数据X时,第一设备向第一内存区域申请存储数据包X所需要的数据缓存,获取内存分配给该数据包X在数据缓存中的物理内存地址;
第一设备根据内存分配给该数据包X在数据缓存中的物理内存地址生成数据访问请求,该数据访问请求包含内存分配给该数据包X在数据缓存中的物理内存地址。
查询单元802,用于根据所述获取单元801获取的所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
进一步的,参见图9,所述设备还可以包括,
映射单元804,用于在所述获取单元801获取所述第一设备请求访问第一内存区域的数据访问请求之前,将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中,形成物理内存地址信息;
其中,第一内存区域的物理内存地址包含数据缓存、消息队列及消息指针的物理内存地址。
映射单元804还可以用于,将第一内存区域的物理内存地址映射至所述第一设备中。
其中,物理内存地址信息是通过将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中形成的,物理内存地址信息在I/O虚拟化控制器设备中的可以按照表格形式存在,参见表1,也可以按照其他形式存在,物理内存地址信息的形式不影响本发明的结果,本发明对此不进行限制;
可选的,I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;
示例性的,当多个设备同时访问物理内存时,物理内存中则会分配多个内存区域,当然,不同的设备可以对应同一个内存区域;通过将每个内存区域的物理内存地址映射至I/O虚拟化控制器设备中多个形成物理内存信息,则I/O虚拟化控制器设备中包含多个物理内存信息组成的物理内存信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域,不同的设备可以对应同一个物理内存地址信息;
物理内存地址信息库中的多个物理内存地址信息分别与多个内存区域一一对应,物理内存地址信息库在I/O虚拟化控制器设备中可以以表格的形式存在,参见表2,当然,物理内存地址信息库在I/O虚拟化控制器设备中也可以按照其他形式存在,物理内存地址信息库的形式不影响本发明的结果,本发明对此不进行限制;
相应的,查询单元802具体可以用于:
根据第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取第一设备对应的内存区域对应的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息;
访问单元803,用于若查询单元802确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域;
示例性的,若数据访问请求中包含的第一设备请求访问的数据的物理内存地址在I/O虚拟化控制器设备中的物理内存地址信息内,则说明第一设备发送的请求访问第一内存区域的数据访问请求可以正确访问第一内存区域,不会对系统内存误踩,即不会影响系统内存的安全性。
进一步的,所述设备80还可以包括,
丢弃单元805,用于若所述查询单元802确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
可选的,所述设备80还可以包括,
记录单元806,用于若所述查询单元802确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
本发明实施例提供的一种访问内存的设备80,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域;有效的提高了系统内存的安全性。
实施例六
本发明实施例六提供一种访问内存的设备100,参见图10,该设备100可以包括:
处理器1001、I/O虚拟化控制器设备1002,第一设备1003,至少一个通信总线1004,用于实现这些装置之间的连接和相互通信;
处理器1001可以是一个中央处理器(英文:central processingunit,简称为CPU);
其中,处理器1001,用于获取第一设备1003请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
其中,第一设备为通过访问计算机的物理内存实现特定功能的设备,例如,在CPU配合FPG A数据包转发系统中,第一设备为CPU或者FPGA;或者,第一设备可以为虚拟化平台中虚拟机的外设;本发明对第一设备的类型不进行具体限定;
第一内存区域是在物理内存中分配的第一设备实现对应功能的专用物理内存区域,例如,参见图2,第一内存区域包含于物理内存中,第一内存区域至少包含有数据缓存、消息队列及消息指针;
其中,数据缓存用于储存第一设备实现对应功能过程中访问的数据,该数据可以以数据包的形式存储在数据缓存中;
消息队列可以是循环队列,消息队列中包含以队列形式排列的数据信息,每个数据信息分别用于存储数据缓存中对应的数据的相关信息,例如,可以包含数据在数据缓存中存放的位置的物理内存地址和数据特征,例如,数据特征可以包含数据的类型、大小、长度等,对于数据信息中包含的数据特征的具体内容,可以根据需要进行设置,本发明不进行具体限定;
消息队列的深度是指消息队列可以用来存储数据信息的容量,每一个消息队列可以是一个深度确定并且有限的循环队列,且消息队列的深度可以小于数据缓存的容量;
需要说明的是,当消息队列的深度小于数据缓存的容量时,数据缓存中存储的每个数据对应的数据信息将可能一部分数据信息存储于消息队列中,一部分数据信息将等待消息队列有空闲位置时再生成并存储;
消息指针用于指示消息队列中数据信息的位置,消息指针分为头指针和尾指针,例如,可以用头指针来指示消息队列中最后一个非空闲位置,可以用尾指针来指示消息队列中第一个空闲位置,这样,通过消息指针的指示,可以明确得出消息队列中存放数据的位置和空闲的位置;当第一设备从消息队列中读取数据信息时,可以根据消息队列的基准地址加上消息指针头指针指示的消息队列位置获取到数据信息存放的实际物理内存地址;
例如,数据缓存中存储有N个数据(以数据包的形式存储),分别记为数据包1,数据包2、……数据包N。
则,对应的可以有N个数据信息,分别记为数据信息1,数据信息2、……数据信息N,每个数据信息分别对应一个数据包,每个数据信息可以包含与该数据信息对应的数据包在数据缓存中存放的位置的物理内存地址和数据特征;
假设,消息队列的深度为S且该消息队列为空,该消息队列的位置可以记为消息队列位置0、消息队列位置1、……消息队列位置S-1,其中,S远远大于N,从消息队列位置0开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息N,对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置N;
再假设,消息队列的深度为Y且该消息队列为空,该消息队列的位置可以记为消息队列位置0、消息队列位置1、……、消息队列位置Y-1,其中,Y小于N,从消息队列位置0开始存放数据信息,消息队列中存储有数据信息1,数据信息2、……数据信息Y-1,那么,数据信息Y、……数据信息N将等待消息队列有空闲位置再生成并存储;对应的消息指针中的头指针指示消息队列位置0,而尾指针指示消息队列位置Y-1。
其中,数据访问请求可以由第一设备生成,下面分别以第一设备读取第一内存区域中的数据包和第一设备向第一内存区域存储数据包为例说明数据访问请求的生成过程;
1、第一设备读取第一内存区域中的数据包;
例如,第一设备实时获取消息指针中数据信息的物理内存地址,假设当前第一设备获取到数据信息2的物理内存地址,第一设备生成访问消息队列的数据访问请求,该数据访问请求包含数据信息2的物理内存地址;
假设第一设备根据数据信息2的物理内存地址从消息队列中获取数据信息2,根据该数据信息2获取数据包2的物理内存地址,第一设备生成访问数据缓存的数据访问请求,该数据访问请求包含数据包2的物理内存地址。
2、第一设备向第一内存区域存储数据包。
例如,当第一设备需要向第一内存区域保存数据X时,第一设备向第一内存区域申请存储数据包X所需要的数据缓存,获取内存分配给该数据包X在数据缓存中的物理内存地址;
第一设备根据内存分配给该数据包X在数据缓存中的物理内存地址生成数据访问请求,该数据访问请求包含内存分配给该数据包X在数据缓存中的物理内存地址。
I/O虚拟化控制器设备1002,用于根据所述第一设备1003请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备1002中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
进一步的,所述处理器1001具体可以用于,在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
其中,第一内存区域的物理内存地址包含数据缓存、消息队列及消息指针的物理内存地址。
所述处理器1001具体还可以用于,将所述第一内存区域的物理内存地址映射至所述第一设备中。
其中,物理内存地址信息是通过将第一内存区域的物理内存地址映射至I/O虚拟化控制器设备中形成的,物理内存地址信息在I/O虚拟化控制器设备中的可以按照表格形式存在,参见表1,也可以按照其他形式存在,物理内存地址信息的形式不影响本发明的结果,本发明对此不进行限制;
可选的,I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;
示例性的,当多个设备同时访问物理内存时,物理内存中则会分配多个内存区域,当然,不同的设备可以对应同一个内存区域;通过将每个内存区域的物理内存地址映射至I/O虚拟化控制器设备中多个形成物理内存信息,则I/O虚拟化控制器设备中包含多个物理内存信息组成的物理内存信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域,不同的设备可以对应同一个物理内存地址信息;
物理内存地址信息库中的多个物理内存地址信息分别与多个内存区域一一对应,物理内存地址信息库在I/O虚拟化控制器设备中可以以表格的形式存在,参见表2,当然,物理内存地址信息库在I/O虚拟化控制器设备中也可以按照其他形式存在,物理内存地址信息库的形式不影响本发明的结果,本发明对此不进行限制;
相应的,所述I/O虚拟化控制器设备1002还可以用于,
根据所述第一设备1003请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域对应的物理内存地址信息;
根据所述第一设备1003请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备1002中的所述第一内存区域对应的物理内存地址信息。
第一设备1003,用于若I/O虚拟化控制器设备1002确定所述第一设备1003请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备1002中的物理内存地址信息中,则访问所述第一内存区域;
示例性的,若数据访问请求中包含的第一设备请求访问的数据的物理内存地址在I/O虚拟化控制器设备中的物理内存地址信息内,则说明第一设备发送的请求访问第一内存区域的数据访问请求可以正确访问第一内存区域,不会对系统内存误踩,即不会影响系统内存的安全性。
进一步的,所述I/O虚拟化控制器设备1002还可以用于,
若确定所述第一设备1003请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备1002中的物理内存地址信息中,将所述数据访问请求丢弃。
可选的,所述I/O虚拟化控制器设备1002还可以用于,
若确定所述第一设备1003请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,记录异常信息。
本发明实施例提供的一种访问内存的设备100,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域,有效的提高了系统内存的安全性。
实施例七
本发明实施例七提供一种物理机110,参见图11A和图11B,该物理机110可以包括:
上述任一实施例所述的访问内存的设备80或90;
物理内存1101,可以包括只读存储器和随机存取存储器,用来存储访问内存的设备80或90的数据;物理内存1101的一部分还可以包括非易失行随机存取存储器(NVRAM)。
其中,所述访问内存的设备包含第一设备以及I/O虚拟化控制器设备;
所述访问内存的设备80或90可以用于,
获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;
根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;
若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域。
进一步的,所述访问内存的设备80或90还可以用于:在所述获取第一设备请求访问第一内存区域的数据访问请求之前,将所述第一内存区域的物理内存地址映射至所述I/O虚拟化控制器设备中,形成所述物理内存地址信息;
将所述第一内存区域的物理内存地址映射至所述第一设备中。
可选的,所述I/O虚拟化控制器设备中包含由至少一个物理内存地址信息组成的物理内存地址信息库,其中,每一个物理内存地址信息分别对应一个不同的内存区域;相应的,所述访问内存的设备80或90具体用于,
根据所述第一设备请求访问第一内存区域的数据访问请求查询物理内存地址信息库,获取所述第一设备对应的内存区域的物理内存地址信息;
根据所述第一设备请求访问的数据的物理内存地址查询所述I/O虚拟化控制器设备中的所述第一内存区域对应的物理内存地址信息。
进一步的,访问内存的设备80或90还可以用于,
若确定所述第一设备请求访问的数据的物理内存地址不在所述I/O虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
本发明实施例提供的一种物理机110,通过获取第一设备请求访问第一内存区域的数据访问请求,其中,所述数据访问请求包含所述第一设备请求访问的数据的物理内存地址;所述第一内存区域为第一设备对应的专用物理内存区域;根据所述第一设备请求访问的数据的物理内存地址查询I/O虚拟化控制器设备中的物理内存地址信息;其中,所述物理内存地址信息包含与所述第一内存区域的物理内存地址对应的物理内存地址;若确定所述第一设备请求访问的数据的物理内存地址在所述I/O虚拟化控制器设备中的物理内存地址信息中,则访问所述第一内存区域,有效的提高了系统内存的安全性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (19)
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虚拟化控制器设备中的物理内存地址信息中,将所述数据访问请求丢弃。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/086167 WO2015061970A1 (zh) | 2013-10-29 | 2013-10-29 | 一种访问内存的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104169891A true CN104169891A (zh) | 2014-11-26 |
CN104169891B CN104169891B (zh) | 2017-07-21 |
Family
ID=51912346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380004536.4A Active CN104169891B (zh) | 2013-10-29 | 2013-10-29 | 一种访问内存的方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104169891B (zh) |
WO (1) | WO2015061970A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360955A (zh) * | 2014-12-08 | 2015-02-18 | 山东工商学院 | 一种应用独立缓存系统及方法 |
CN106295267A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
CN107239407A (zh) * | 2016-03-29 | 2017-10-10 | 华为技术有限公司 | 一种内存的无线访问方法和装置 |
CN107329790A (zh) * | 2017-06-30 | 2017-11-07 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN109308269A (zh) * | 2017-07-26 | 2019-02-05 | 华为技术有限公司 | 一种内存管理方法及装置 |
CN110008726A (zh) * | 2019-04-09 | 2019-07-12 | 杨力祥 | 一种运行时访问控制装置和方法 |
CN110162965A (zh) * | 2019-04-09 | 2019-08-23 | 杨力祥 | 一种运行时访问控制方法及计算装置 |
CN110968599A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 一种基于Impala的查询方法和装置 |
WO2020248088A1 (zh) * | 2019-06-10 | 2020-12-17 | 华为技术有限公司 | 安全访问方法及电子设备 |
CN113360420A (zh) * | 2020-03-06 | 2021-09-07 | 北京机械设备研究所 | 一种内存控制方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144420A1 (en) * | 2003-12-25 | 2005-06-30 | Shohei Michimoto | Data processing apparatus and compiler apparatus |
CN101149717A (zh) * | 2007-11-16 | 2008-03-26 | 威盛电子股份有限公司 | 计算机系统及直接内存访问传输方法 |
CN101231619A (zh) * | 2008-02-22 | 2008-07-30 | 浙江大学 | 一种基于非连续页的动态内存管理方法 |
US7426644B1 (en) * | 2001-12-05 | 2008-09-16 | Advanced Micro Devices, Inc. | System and method for handling device accesses to a memory providing increased memory access security |
CN102331977A (zh) * | 2011-09-07 | 2012-01-25 | 上海交通大学 | 内存控制器、处理器系统及内存访问控制方法 |
-
2013
- 2013-10-29 CN CN201380004536.4A patent/CN104169891B/zh active Active
- 2013-10-29 WO PCT/CN2013/086167 patent/WO2015061970A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426644B1 (en) * | 2001-12-05 | 2008-09-16 | Advanced Micro Devices, Inc. | System and method for handling device accesses to a memory providing increased memory access security |
US20050144420A1 (en) * | 2003-12-25 | 2005-06-30 | Shohei Michimoto | Data processing apparatus and compiler apparatus |
CN101149717A (zh) * | 2007-11-16 | 2008-03-26 | 威盛电子股份有限公司 | 计算机系统及直接内存访问传输方法 |
CN101231619A (zh) * | 2008-02-22 | 2008-07-30 | 浙江大学 | 一种基于非连续页的动态内存管理方法 |
CN102331977A (zh) * | 2011-09-07 | 2012-01-25 | 上海交通大学 | 内存控制器、处理器系统及内存访问控制方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360955A (zh) * | 2014-12-08 | 2015-02-18 | 山东工商学院 | 一种应用独立缓存系统及方法 |
CN104360955B (zh) * | 2014-12-08 | 2018-08-14 | 山东工商学院 | 一种应用独立缓存系统及方法 |
CN106295267B (zh) * | 2015-06-09 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
CN106295267A (zh) * | 2015-06-09 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种访问电子设备的物理内存中私密数据的方法和装置 |
US10719456B2 (en) | 2015-06-09 | 2020-07-21 | Alibaba Group Holding Limited | Method and apparatus for accessing private data in physical memory of electronic device |
CN107239407B (zh) * | 2016-03-29 | 2021-01-12 | 华为技术有限公司 | 一种内存的无线访问方法和装置 |
CN107239407A (zh) * | 2016-03-29 | 2017-10-10 | 华为技术有限公司 | 一种内存的无线访问方法和装置 |
CN107329790B (zh) * | 2017-06-30 | 2021-01-15 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN107329790A (zh) * | 2017-06-30 | 2017-11-07 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN109308269B (zh) * | 2017-07-26 | 2021-02-23 | 华为技术有限公司 | 一种内存管理方法及装置 |
CN109308269A (zh) * | 2017-07-26 | 2019-02-05 | 华为技术有限公司 | 一种内存管理方法及装置 |
CN110968599A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 一种基于Impala的查询方法和装置 |
CN110968599B (zh) * | 2018-09-30 | 2023-04-07 | 北京国双科技有限公司 | 一种基于Impala的查询方法和装置 |
CN110162965A (zh) * | 2019-04-09 | 2019-08-23 | 杨力祥 | 一种运行时访问控制方法及计算装置 |
CN110008726A (zh) * | 2019-04-09 | 2019-07-12 | 杨力祥 | 一种运行时访问控制装置和方法 |
CN110008726B (zh) * | 2019-04-09 | 2021-08-20 | 杨力祥 | 一种运行时访问控制装置和方法 |
WO2020248088A1 (zh) * | 2019-06-10 | 2020-12-17 | 华为技术有限公司 | 安全访问方法及电子设备 |
CN113360420A (zh) * | 2020-03-06 | 2021-09-07 | 北京机械设备研究所 | 一种内存控制方法和装置 |
CN113360420B (zh) * | 2020-03-06 | 2024-05-17 | 北京机械设备研究所 | 一种内存控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015061970A1 (zh) | 2015-05-07 |
CN104169891B (zh) | 2017-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104169891A (zh) | 一种访问内存的方法及设备 | |
US11714553B2 (en) | Namespaces allocation in non-volatile memory devices | |
US11354230B2 (en) | Allocation of distributed data structures | |
US20220027054A1 (en) | Namespace Management in Non-volatile Memory Devices | |
US10705952B2 (en) | User space data storage management | |
US9229751B2 (en) | Apparatus and method for managing virtual memory | |
US9966152B2 (en) | Dedupe DRAM system algorithm architecture | |
CN103324533B (zh) | 分布式数据处理方法、装置及系统 | |
EP2645259A1 (en) | Method, device and system for caching data in multi-node system | |
CN102725753A (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN103488588A (zh) | 一种内存保护方法、系统及网络接口控制器 | |
US11989588B2 (en) | Shared memory management method and device | |
CN111782135A (zh) | 数据存储方法、系统、数据节点和计算机可读存储介质 | |
US7761683B2 (en) | Variable width memory system and method | |
CN115269450A (zh) | 内存协同管理系统和方法 | |
CN114327270B (zh) | 一种请求处理方法、装置、设备及可读存储介质 | |
CN104714898B (zh) | 一种Cache的分配方法和装置 | |
CN113157606A (zh) | 一种缓存器实现方法、装置和数据处理设备 | |
CN106919342A (zh) | 基于自动精简配置的存储资源分配方法和装置 | |
CN108804355B (zh) | 使用目标协作的快速排序写入的方法和系统 | |
CN110308865A (zh) | 存储器系统、计算系统及其操作方法 | |
CN105765542A (zh) | 访问文件的方法、分布式存储系统和存储节点 | |
CN111026890A (zh) | 基于索引表的图片数据存储方法、系统、装置和存储介质 | |
CN105677585A (zh) | 一种数据处理方法、电子设备 | |
CN117234811B (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 | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231204 Address after: No. 1-9, 24th Floor, Unit 2, Building 1, No. 28, North Section of Tianfu Avenue, High tech Zone, Chengdu, Sichuan Province, 610000 Patentee after: Sichuan Huakun Zhenyu Intelligent Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |