CN116185565A - 一种内存数据隔离和共享的系统和方法 - Google Patents
一种内存数据隔离和共享的系统和方法 Download PDFInfo
- Publication number
- CN116185565A CN116185565A CN202211705156.0A CN202211705156A CN116185565A CN 116185565 A CN116185565 A CN 116185565A CN 202211705156 A CN202211705156 A CN 202211705156A CN 116185565 A CN116185565 A CN 116185565A
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- data
- space
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明涉及内存管理领域,特别是涉及一种内存数据隔离和共享的系统和方法。主要包括:第一映射模块址和虚拟内存地址进行映射;边界处理模块根据指定的地址访问边界对每次读写的数据量进行拆分;每个第二映射模块根据IAMT映射表获取每个虚拟内存地址对应的物理内存块,其中,物理内存块与读写指令的发起者对应,每个物理内存块之间相互隔离;处理单元根据外部程序的读写指令将源地址传入地址处理序列,并根据地址处理序列处理后的数据地址得到虚拟内存地址对应的物理内存块,按照物理内存块的颗粒对物理内存进行数据读写。本发明以物理内存块为单位进行数据读写实现数据隔离,通过对相同物理内存块的读写实现数据共享。
Description
技术领域
本发明涉及内存管理领域,特别是涉及一种内存数据隔离和共享的系统和方法。
背景技术
当前使用的计算机系统或云计算系统中,通常同时运行多个程序,甚至运行多个虚拟机系统,多程序同时运行已经成为一个常态化操作。在实际运行过程中,操作系统会为每个程序或每个虚拟机系统分配一块内存,以供该程序或虚拟机进行数据缓冲。
由于多个应用程序或虚拟机申请与使用的内存空间的隔离性不强,攻击者可以从一个程序内存中,通过跨域攻击和虚拟机逃逸攻击获得同一簇共享物理内存中的所有数据,影响数据安全。另一方面,如果对每个程序或者虚拟机系统做硬件隔离,会对上层应用程序敏感数据造成严重的泄露,若它们申请的内存空间动态变化,管理也非常不方便;如果它们之间需要交互数据,需要通过其它方式中转,效率很低。
鉴于此,如何克服现有技术所存在的缺陷,解决内存中的数据隔离和数据共享相矛盾的现象,是本技术领域待解决的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明解决了内存中的数据隔离和数据共享相矛盾的问题。
本发明实施例采用如下技术方案:
第一方面,本发明提供了一种内存数据隔离和共享的方法,具体为:包括一个或多个处理单元、一个或多个第一映射模块、一个或多个边界处理模块和一个或多个第二映射模块,具体的:所述第一映射模块根据读写指令的源地址和外部程序的虚拟内存地址,将源地址和虚拟内存地址进行映射;所述边界处理模块根据指定的地址访问边界对每次读写的数据量进行拆分,使每次读写的数据大小与物理内存块大小匹配;每个所述第二映射模块中都包含一张IAMT映射表,根据IAMT映射表获取每个虚拟内存地址对应的物理内存块,其中,所述物理内存块与读写指令的发起者对应,每个物理内存块之间相互隔离;一个处理单元、一个第一映射模块、一个边界处理模块和一个第二映射模块依次连接,作为一个地址处理序列,所述处理单元以隔离空间的最大值为间隔对外部程序分配虚拟内存空间,根据外部程序的读写指令将源地址传入地址处理序列,并根据地址处理序列处理后的数据地址得到虚拟内存地址对应的物理内存块,按照物理内存块的颗粒对物理内存进行数据读写。
优选的,所述将源地址和虚拟内存地址进行映射,具体包括:将源地址按照隔离空间的最大值统一偏移到0x0地址作为归零化地址,再将该归零化地址对应的虚拟内存空间ID配置为源地址至归零化地址范围中包含的隔离空间个数的最大值。
优选的,所述边界处理模块根据指定的地址访问边界对每次读写的数据量进行拆分,具体包括:当写操作的数据首地址和末地址跨越了指定边界值的整数倍,进行连续写操作时,将数据写入首地址至指定边界值整数倍的地址区间,再从指定边界值整数倍的位置开始写入剩下的数据;当读操作的数据首地址和末地址跨越了指定边界值的整数倍,进行连续读操作时,读取数据首地址至指定边界值整数倍区间的数据,再从指定边界值整数倍的位置开始读取至数据末地址,待收到所有的数据后,将所有数据依次拼接为一组数据后返回给上游。
优选的,所述根据IAMT映射表获取每个虚拟内存地址对应的物理内存块,具体包括:每个虚拟内存空间对应一个IAMT链表,所有虚拟内存空间的IAMT链表组合为IAMT映射表保存在第二映射模块中;第二映射模块查询IAMT映射表,将每个虚拟内存地址的访问映射到对应的物理内存块中。
优选的,所述IAMT链表包括内存块个数和内存块编号,具体的:所述内存块个数指示该虚拟内存空间分配的内存中物理内存块的个数;所述内存块编号指示该虚拟内存空间使用的物理内存块编号,内存块编号在IAMT链表中保持从低位到高位从小到大顺序排列。
另一方面,将物理内存划分为至少二个互相独立的隔离空间,每个隔离空间中包含一个或多个物理内存块;为每个需要进行读写操作的外部程序分配一段虚拟地址空间,每个虚拟地址空间对应一个相同或不同的ID,不同ID的虚拟地址空间只能访问不同的隔离空间,相同的ID允许访问同一个隔离空间;将外部程序读写指令的源地址输入所述地址处理序列中,并依次对地址进行处理,直至根据IAMT映射表获取到源地址对应的物理内存块,使用物理内存块为单位进行数据读写。
优选的,所述将物理内存划分为至少二个互相独立的隔离空间,具体包括:每个隔离空间首次申请时,至少申请一个物理内存块的颗粒值整数倍的空间;当隔离空间的内存地址不足时,再次申请物理内存块的颗粒值整数倍的空间;当隔离空间中的部分或全部内存地址不再使用时,释放不再使用的内存空间,每次释放的内存空间大小为物理内存块的颗粒值的整数倍。
优选的,所述每个隔离空间中包含一个或多个物理内存块,具体包括:每个隔离空间的大小与隔离空间的最大值一致,且包含整数个物理内存块;一个隔离空间中的物理内存块的物理在访问上连续,在物理地址上连续和/或离散。
优选的,所述为每个需要进行读写操作的外部程序分配一段虚拟地址空间,具体包括:为每个外部程序分配虚拟地址空间,每个外部程序的虚拟地址空间按照隔离空间的最大值作为首地址的间隔;并对外部程序进行权限分配,使管理员用户运行的外部程序能够访问整个物理存储空间的权限,其它外部程序仅能访问自己的虚拟地址空间的地址对应的物理内存块。
优选的,所述依次对地址进行处理,具体包括:第一映射模块将内存读写访问请求中的地址重映射为虚拟内存地址,同时生成虚拟内存地址的ID和权限标识符,虚拟内存地址经过边界处理模块的边界处理后,由第二映射模块查找IAMT映射表映射到对应的物理内存块中。
与现有技术相比,本发明实施例的有益效果在于:将物理内存划分为多个互相隔离的物理内存块,通过IAMT映射表将应用程序的数据地址映射到物理内存块上,以物理内存块为单位进行数据读写实现数据隔离,通过对相同物理内存块的读写实现数据共享,并通过调整IAMT映射表中对应关系的方式实现地址的灵活映射,解决了现有技术中数据隔离和数据共享的矛盾。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存数据隔离和共享的系统结构示意图;
图2为本发明实施例提供的IAMT映射表的示意图;
图3为本发明实施例提供的一种内存数据隔离和共享的方法流程图;
图4为本发明实施例提供的一种内存数据隔离和共享的方法使用场景示意图;
图5为本发明实施例提供的另一种内存数据隔离和共享的方法使用场景示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
为了解决上面对于内存共享和隔离矛盾的问题,本实施例提出了一种内存数据隔离和共享的系统,系统中包括一个或多个处理单元、一个或多个第一映射模块、一个或多个边界处理模块和一个或多个第二映射模块。
本实施例中,以图1为例,提供了本实施例提供的具备数据共享和隔离的内存重映射能力的系统。该系统可以在任意计算设备中集成,包括但不限于个人计算机,移动设备,便携式计算机,服务器,显卡,人工智能计算设备等。优选方案中,图1中的系统可以作为一个的片上系统(System On Chip,简写为SoC)的部分结构,以提高系统的集成度和易用性。
图1中,除了总线和物理内存外,每行的一个处理单元、一个第一映射模块、一个边界处理模块和一个第二映射模块依次连接,作为一个地址处理序列,对读写指令中的源地址进行依次加工,获得实际访问内存时的物理地址。
第一映射模块根据读写指令的源地址和外部程序的虚拟内存地址,将源地址和虚拟内存地址进行映射。本实施例中,外部程序可以为用户应用程序也可以为虚拟机,每个虚拟机中也可以包含多个用户应用程序。系统运行前,为每个外部程序分配一段虚拟地址空间用于访问内存。每个虚拟内存空间对应一个ID,虚拟机/应用程序之间可以用不同的ID,也可以用相同的ID,不同的ID访问不同的内存物理地址区域,相同的ID访问同一片内存物理区域,本实施例中,以物理内存块对访问的内存物理区域进行划分和隔离。读写指令中的源地址进入第一映射模块和第二映射模块,第一映射模块完成虚拟地址到ID的映射,第二映射模块根据预先存放好的ID地址映射表(ID address match table,简写为IAMT),就可以将虚拟机/应用程序映射到不同的物理内存区域中进行访问。具体的,当源地址为虚拟地址时,还需要将源地址按照隔离空间的最大值统一偏移到0x0地址作为归零化地址,再将该归零化地址对应的虚拟内存空间ID配置为源地址至归零化地址范围中包含的隔离空间个数的最大值,具体的,计算方式为:(源地址-归零化地址)/隔离空间,以除法结果的正整数解作为虚拟内存空间ID,然后将权限标识符配置为0,最终归零化地址、ID、权限标识符一起发送给后级处理。对于物理地址,它不会被修改,第一映射模块会据此将ID配置为0,权限标识符配置为1,送给后级处理
边界处理模块根据指定的地址访问边界对每次读写的数据量进行拆分,使每次读写的数据大小与物理内存块大小匹配。本实施例中,以物理内存块作为读写和隔离的单位,但外部程序的数据需求并不一定为物理内存块的整数倍,为了避免读写时内存越界,需要使用边界处理模块对数据的边界进行处理,以满足后续内存访问操作中访问物理上非连续内存空间的需求。
具体的,当写操作的数据首地址和末地址跨越了指定边界值的整数倍,进行连续写操作时,将数据写入首地址至指定边界值整数倍的地址区间,再从指定边界值整数倍的位置开始写入剩下的数据。当读操作的数据首地址和末地址跨越了指定边界值的整数倍,进行连续读操作时,本次读操作会被拆分成2次读操作,读取数据首地址至指定边界值整数倍区间的数据,再从指定边界值整数倍的位置开始读取至数据末地址,待收到所有的数据后,将所有数据依次拼接为一组数据后返回给上游。通过上述拆分操作,即可将数据拆分为首地址为边界值整数倍的数据块,在进行数据读写时,只需根据边界值的整数倍进行地址偏移寻址即可,不会因越界而造成数据冲突或数据越界。
例如,在某个具体实施场景中,以4KB为地址访问的边界值。如果一个写操作跨越了4KB的倍数地址进行连续写操作,将其拆分成2次写操作,第一次写到4KB的整数倍地址,第二次从4KB的整数倍地址开始写。如果一个读操作跨越了4KB的倍数的地址进行连续读操作,将其拆分成2次读操作,第一次读到4KB的整数倍地址,第二次从4KB的整数倍地址开始读,待收到2组读数据后,对这2组数据拼接为1组数据,返回给上游。
每个第二映射模块中都包含一张IAMT映射表,根据IAMT映射表获取每个虚拟内存地址对应的物理内存块,其中,物理内存块与读写指令的发起者对应,每个物理内存块之间根据指定规则进行数据隔离和共享,每个物理内存块之间相互隔离。本实施例中,通过IAMT映射表完成虚拟内存地址与物理地址块之间的映射,每个虚拟内存地址都可以映射为一个或多个物理内存块,每个虚拟内存地址的ID对应一个物理地址块,使用同一虚拟内存地址ID的外部程序可以访问同一物理地址块实现数据共享,不同虚拟内存ID的外部程序只能访问不通过的物理地址块,实现了数据隔离。通过调整IAMT映射表中的内容,可以实现不同ID映射到不同的物理地址,也可以实现不同ID映射到相同的物理地址,或者不同ID中的两块地址在物理地址中具有部分重叠,从而实现地址的灵活映射方案,以达到数据共享和隔离的内存地址灵活重映射。
具体映射过程为:每个虚拟内存空间对应一个IAMT链表,所有虚拟内存空间的IAMT链表组合为IAMT映射表保存在第二映射模块中,第二映射模块查询IAMT映射表,将每个虚拟内存地址的访问映射到对应的物理内存块中。第二映射模块收到归零化地址、虚拟内存地址的ID和权限标识符后,首先会查询权限标识符,如果是1,表示为物理地址,直接进行发送。如果是0,表示为虚拟地址,根据ID查询IAMT映射表,将对虚拟内存地址的访问映射到各自的物理内存块中。
在某个具体实例中,IAMT映射表如图2所示,每个ID都会有1个IAMT链表,所有的IAMT链表合在一起组成IAMT映射表。在IAMT链表中,内存块个数(bl_num)指示该虚拟内存空间分配的内存中物理内存块的个数,内存块编号(phy_num)指示该虚拟内存空间使用的物理内存块编号,内存块编号在IAMT链表中保持从低位到高位从小到大顺序排列。bit4-0为bl_num指示该ID分配的内存中有多少个内存块,0x0表示有1个内存块,0x1f表示有32个内存块。中间是32个7bit的phy_num,并不是每个phy_num都会使用,它们的有效数量为bl_num+1。内存块编号指示了该ID使用了哪些物理内存块,如果phy_num为0,表示使用了0内存块,如果phy_num为1,表示使用了1内存块。内存块编号在链表中从低位到高位从小到大顺序排列。不管是增加还是减小内存块个数,bl_num会相应调整,内存块编号也会再次从小到大的顺序重新排列。
例如,在某个具体实施场景中,虚拟内存空间中第1个0.25GB地址映射到IAMT链表中bit11-5的编号对应的物理块内存,虚拟内存空间中第2个0.25GB地址映射到IAMT链表中bit18-12的编号对应的物理块内存,虚拟内存空间中第32个0.25GB地址映射到IAMT链表中bit228-222的编号对应的物理块内存。Bit255-229为预留位。
处理单元以物理内存块的颗粒最大值为间隔对外部程序分配虚拟内存空间,根据外部程序的读写指令将源地址传入地址处理序列,并根据地址处理序列处理后的数据地址得到虚拟内存地址对应的物理内存块,按照指定的物理内存块的颗粒值对物理内存进行数据读写。本实施例的实际实施中,处理单元可以使用所有能进行数据读写管理的器件,比如:CPU、GPU、VIDEO CODEC、DMA和APU等,处理单元中可以运行管理员(administrator)程序,也可以运行多个应用程序,还可以运行多个虚拟机,每个虚拟机中也可以运行多个应用程序。
在实际实施中,为了系统的完整性,SoC还包含了总线和物理内存存储器。具体实施中,物理内存存储器一般是片外的高速动态随机存储器DDR等,比如:DDR3/4/5、LPDDR3/4/5以及GDDR3/4/5/6等。
本实施例提供的内存数据隔离和共享的系统具有以下有益效果:
1、实现多个应用程序和虚拟机在物理内存访问上的隔离与共享;
2、实现多个应用程序和虚拟机在映射到物理内存上的灵活配置;
3、实现物理内存访问上多种隔离与共享方式;
4、一个应用程序可以实现在多个隔离空间中的访问;
5、多个应用程序和虚拟机分配内存上动态加减内存空间。
本实施例中还提供了一种内存数据隔离和共享的方法。
如图3所示,本发明实施例提供的方法具体步骤如下:
步骤101:将物理内存划分为至少二个互相独立的隔离空间,每个隔离空间中包含一个或多个物理内存块。
每个隔离内存空间中运行的是一个应用程序,或者一个虚拟机系统,或者多个需要放在同一块内存中运行的应用程序,或者多个需要放在同一块内存中运行的虚拟机系统,或者多个需要放在同一块内存中运行的应用程序与虚拟机的组合。
进一步的,为了避免内存浪费,每个隔离空间无需一次性分配。每个隔离空间首次申请时,至少申请物理内存块的颗粒值整数倍的空间。当隔离空间的内存地址不足时,再次申请物理内存块的颗粒值整数倍的空间。当隔离空间中的部分或全部内存地址不再使用时,释放不再使用的内存空间,每次释放的内存空间大小为物理内存块的颗粒值的整数倍。通过该方法,每个隔离空间在运行初期可以只申请很小的一块内存空间,在运行中,可以不断的申请新的内存空间,也可以释放不再用的内存空间,以避免内存不足或占用过多内存。但是,首次分配的内存、再次分配的内存和释放的内存都必须满足物理内存块的颗粒值整数倍条件,且总内存大小范围在物理内存块的最大值和最小值之间,以确保隔离空间和物理内存块的匹配。
在某个具体实施场景中,设定物理内存块的颗粒值为0.25GB,如果系统物理内存是8GB,则共有32个物理内存块;如果系统物理内存是16GB,则共有64个物理内存块;如果系统物理内存是32GB,则共有128个物理内存块。对于每个物理内存块可以依次进行编号,例如系统物理内存为32GB时,可依次其编号为0、1、2...、127,通过编号,可以方便IAMT映射表中进行映射。
每个隔离空间的大小根据物理内存大小或操作系统的内存管理能力进行设置,且都为物理内存块颗粒值的整数倍。每个隔离空间的大小与物理内存块的颗粒最大值一致,且包含整数个物理内存块。本实施例中,为了便于说明,下文中将每个隔离空间的最小值设置为域物理内存块颗粒值相同的0.25GB(256MB),最大值设置为8GB。一个隔离空间可以是最多任意32个物理内存块(8GB)的组合。为了使内存分配时更灵活,一个隔离空间中的物理内存块的物理在访问上连续,在物理地址上连续或离散。对物理地址块进行本实施例中提供的映射后,每个隔离空间在访问上看起来是一段连续的,最大为8GB的空间,但是经过重映射功能后,实际在物理上可以是离散的不同的内存块的组合。
步骤102:为每个需要进行读写操作的外部程序分配一段虚拟地址空间,每个虚拟地址空间对应一个相同或不同的ID,不同ID的虚拟地址空间只能访问不同的隔离空间,相同的ID允许访问同一个隔离空间。
在运行开始之前,对外部程序进行权限分配,使管理员用户运行的外部程序能够访问整个物理存储空间的权限,其它外部程序仅能访问自己的虚拟地址空间地址对应的物理内存块。权限分配后,administrator可以访问整个物理存储空间,它直接使用物理空间地址。其它应用程序或者虚拟机系统则由administrator给它们分配虚拟地址空间的地址。
每个隔离空间中的应用程序或者虚拟机系统在运行时都会分配虚拟地址空间的地址,每个外部程序的虚拟地址空间按照物理内存块的颗粒最大值作为首地址的间隔。例如,隔离空间的最大值为8GB时,按照0x10_0000_0000-0x11_ffff_ffff,0x12_0000_0000-0x13_ffff_ffff,0x14_0000_0000-0x15_ffff_ffff……即间隔8GB的方式进行分配。
本实施例中,由于每个隔离空间中可以包含多个物理内存块,因此可以实现多种方式的共享和隔离。当存在m号空间和n号空间两个隔离空间时,可以实现以下共享和隔离方式:
(1)m号空间与n号空间完全隔离;
(2)m号空间的部分空间与n号空间的部分空间实现共享,其它实现隔离;
(3)n号空间完全与m号空间实现共享,m号其它位置与n号空间实现隔离(n与m可以互换);
(4)m号空间与n号空间完全共享。
步骤103:将外部程序读写指令的源地址输入所述地址处理序列中,并依次对地址进行处理,直至根据IAMT映射表获取到源地址对应的物理内存块,使用物理内存块为单位进行数据读写。
第一映射模块将内存读写访问请求中的地址重映射为虚拟内存地址,同时生成虚拟内存地址的ID和权限标识符。具体的:应用程序或者虚拟机发出的内存读写访问请求会先进入第一映射模块。第一映射模块对内存读写访问请求做1级地址重映射,得到新的地址,同时生成ID号,和权限标识符。
在具体实施场景中,CPU中的Administer、应用程序、虚拟机中的应用程序访问的内存数据,GPU中的Administer、应用程序、虚拟机中的应用程序访问的内存数据等,都会先进入相对应的第一映射模块。第一映射模块识别进入的是物理地址还是虚拟地址,如果发现是虚拟地址,则提前地址的bit36及更高位。对于物理地址,它不会被修改,第一映射模块会据此将ID配置为0,权限标识符配置为1,送给后级处理。对于虚拟地址进,它将行归零化处理,8GB任意地址空间统一偏移到0x0地址,比如0x10_ffff_ffff-0x11_ffff_ffff偏移到0x0-0x01_ffff_ffff,0x12_0000_0000-0x13_ffff_ffff偏移到0x0-0x01_ffff_ffff,0x14_0000_0000-0x15_ffff_ffff偏移到0x0-0x01_ffff_ffff,在此步处理完之后,第一映射模块将ID配置为(源地址-归零化地址)/0x2_000_0000,比如0x10_ffff_ffff-0x11_ffff_ffff的ID配置为0,0x12_0000_0000-0x13_ffff_ffff的ID配置为1,0x14_0000_0000-0x15_ffff_ffff的ID配置为2,然后将权限标识符配置为0,最终归零化地址、ID、权限标识符一起发送给边界处理模块进行处理。
虚拟内存地址经过边界处理模块的边界处理后,由第二映射模块查找IAMT映射表映射到对应的物理内存块中。具体的:经过边界处理模块后,第二映射模块获取前面的地址重映射数据,查找IAMT映射表,做2级地址重映射,将地址读写请求映射到物理内存中的指定区域,通过指定区域的相交和不相交,实现内存数据的共享和隔离。
经过本实施例中提供的步骤101-步骤103后,即可使用上述实施例提供的系统基础上实现数据的隔离和共享。
本实施例提供了一个具体实施场景中的执行实例。当读写指令中的源地址为物理地址时,administrator发出来物理地址,它的任意地址直通第一映射模块,经过边界处理模块处理后,再直通第二映射模块,通过总线直接访问对应的物理内存地址。
本具体实例中,运行多个应用程序,比如4个应用程序,应用程序0和1运行在虚拟地址空间0x10_0000_0000-0x11_ffff_ffff中,分配的内存是1GB,实际分配的虚拟内存空间是0x10_0000_0000-0x10_3fff_ffff;应用程序2和3运行在虚拟地址空间0x12_0000_0000-0x13_ffff_ffff中,分配的内存是2GB,实际分配的虚拟内存空间是0x12_0000_0000-0x12_7fff_ffff。IAMT映射表中配置ID0的链表为bl_num是0x3,物理内存块号是0,2,4,6;ID1的链表为bl_num是0x7,物理内存块号是1,3,5,7,8,9,10,11,ID0与ID1没有重复的编号物理块。应用程序0/1的内存访问经过第一映射模块后,生成归零化地址0x0-0x3fff_ffff,ID为0,权限标识符为0。应用程序0/1的内存访问经过第二映射模块后,映射到编号为0,2,4,6的物理内存上。即应用程序0/1最终使用的物理地址是0x0-0x0fff_ffff,0x2000_0000-0x2fff_ffff,0x4000_0000-0x4fff_ffff,0x6000_0000-0x6fff_ffff。同样的,应用程序2/3映射到编号为1,3,5,7,8,9,10,11的物理内存上,最终使用的物理地址是0x1000_0000-0x1fff_ffff,0x3000_0000-0x3fff_ffff,0x5000_0000-0x5fff_ffff,0x7000_0000-0xbfff_ffff。应用程序0/1和应用程序2/3在内存访问上实现了物理隔离。
如图4所示,为一种m号空间与n号空间完全隔离的示例。系统中运行多个应用程序,比如4个应用程序,应用程序0和1运行在虚拟地址空间0x10_0000_0000-0x11_ffff_ffff中,分配的内存是1GB,实际分配的虚拟内存空间是0x10_0000_0000-0x10_3fff_ffff;应用程序2和3运行在虚拟地址空间0x12_0000_0000-0x13_ffff_ffff中,分配的内存是2GB,实际分配的虚拟内存空间是0x12_0000_0000-0x12_7fff_ffff。IAMT映射表中配置ID0的链表为bl_num是0x3,物理内存块号是0,2,4,6;ID1的链表为bl_num是0x7,物理内存块号是1,2,5,6,8,9,10,11,ID0与ID1重复的编号物理块是2号和6号。同样的,应用程序0/1映射到编号为0,2,4,6的物理内存上,最终使用的物理地址是0x0-0x0fff_ffff,0x2000_0000-0x2fff_ffff,0x4000_0000-0x4fff_ffff,0x6000_0000-0x6fff_ffff。同样的,用程序2/3映射到编号为1,2,5,6,8,9,10,11的物理内存上,最终使用的物理地址是0x1000_0000-0x2fff_ffff,0x5000_0000-0x6fff_ffff,0x8000_0000-0xbfff_ffff。应用程序0/1和应用程序2/3在内存访问上有2个0.25GB物理内存块(共计0.5GB物理内存)的共享。应用程序0/1对应的2号物理块内存是0x10_1000_0000-0x10_1fff_ffff,应用程序2/3对应的2号物理块内存是0x12_1000_0000-0x12_1fff_ffff,它们在物理内存0x1000_0000-0x1fff_ffff上进行共享。应用程序0/1对应的6号物理块内存是0x10_3000_0000-0x10_3fff_ffff,应用程序2/3对应的6号物理块内存是0x12_3000_0000-0x12_3fff_ffff,它们在物理内存0x6000_0000-0x6fff_ffff上进行共享。应用程序0/1和应用程序2/3在上述这些范围的地址上实现了物理共享,而在其它地址上现实了物理隔离。
如图5所示,为一种m号空间与n号空间部分隔离,部分共享的示例。系统中运行多个应用程序,比如4个应用程序,应用程序0和1运行在虚拟地址空间0x10_0000_0000-0x11_ffff_ffff中,分配的内存是1GB,实际分配的虚拟内存空间是0x10_0000_0000-0x10_3fff_ffff;应用程序2和3运行在虚拟地址空间0x12_0000_0000-0x13_ffff_ffff中,分配的内存是2GB,实际分配的虚拟内存空间是0x12_0000_0000-0x12_7fff_ffff。IAMT映射表中配置ID0的链表为bl_num是0x3,物理内存块号是0,2,4,6;ID1的链表为bl_num是0x7,物理内存块号是0,1,2,3,4,5,6,7,ID0与ID1重复的编号物理块是0,2,4,6号。同样的,应用程序0/1映射到编号为0,2,4,6的物理内存上,最终使用的物理地址是0x0-0x0fff_ffff,0x2000_0000-0x2fff_ffff,0x4000_0000-0x4fff_ffff,0x6000_0000-0x6fff_ffff。同样的,用程序2/3映射到编号为0,1,2,3,4,5,6,7的物理内存上,最终使用的物理地址是0x0-0x7fff_ffff。应用程序0/1和应用程序2/3在内存访问上有4个0.25GB物理内存块(共计1GB物理内存)的共享。应用程序0/1对应的0号物理块内存是0x10_0000_0000-0x10_0fff_ffff,应用程序2/3对应的0号物理块内存是0x12_0000_0000-0x12_0fff_ffff,它们在物理内存0x0-0x0fff_ffff上进行共享。应用程序0/1对应的2号物理块内存是0x10_1000_0000-0x10_1fff_ffff,应用程序2/3对应的2号物理块内存是0x12_2000_0000-0x12_2fff_ffff,它们在物理内存0x2000_0000-0x2fff_ffff上进行共享。应用程序0/1对应的4号物理块内存是0x10_2000_0000-0x10_2fff_ffff,应用程序2/3对应的4号物理块内存是0x12_4000_0000-0x12_4fff_ffff,它们在物理内存0x4000_0000-0x4fff_ffff上进行共享。应用程序0/1对应的6号物理块内存是0x10_3000_0000-0x10_3fff_ffff,应用程序2/3对应的6号物理块内存是0x12_6000_0000-0x12_6fff_ffff,它们在物理内存0x6000_0000-0x6fff_ffff上进行共享。应用程序0/1对于应用程序2/3来说是完全物理共享的,而应用程序2/3不仅可以访问这些物理共享内存,也可以访问应用程序0/1访问不到的其它的物理内存。
由上述实例可知,上述实施例提供的方案,可以通过简单的方法,同时实现不同外部程序的数据隔离和共享。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种内存数据隔离和共享的系统,其特征在于,包括一个或多个处理单元、一个或多个第一映射模块、一个或多个边界处理模块和一个或多个第二映射模块;
所述第一映射模块根据读写指令的源地址和外部程序的虚拟内存地址,将源地址和虚拟内存地址进行映射;
所述边界处理模块根据指定的地址访问边界对每次读写的数据量进行拆分,使每次读写的数据大小与物理内存块大小匹配;
每个所述第二映射模块中都包含一张IAMT映射表,根据IAMT映射表获取每个虚拟内存地址对应的物理内存块,其中,所述物理内存块与读写指令的发起者对应,每个物理内存块之间相互隔离;
一个处理单元、一个第一映射模块、一个边界处理模块和一个第二映射模块依次连接,作为一个地址处理序列,所述处理单元以隔离空间的最大值为间隔对外部程序分配虚拟内存空间,根据外部程序的读写指令将源地址传入地址处理序列,并根据地址处理序列处理后的数据地址得到虚拟内存地址对应的物理内存块,按照物理内存块的颗粒对物理内存进行数据读写。
2.根据权利要求1所述的内存数据隔离和共享的系统,其特征在于,所述将源地址和虚拟内存地址进行映射包括:
将源地址按照隔离空间的最大值统一偏移到0x0地址作为归零化地址,再将该归零化地址对应的虚拟内存空间ID配置为源地址至归零化地址范围中包含的隔离空间个数的最大值。
3.根据权利要求1所述的内存数据隔离和共享的系统,其特征在于,所述边界处理模块根据指定的地址访问边界对每次读写的数据量进行拆分包括:
当写操作的数据首地址和末地址跨越了指定边界值的整数倍,进行连续写操作时,将数据写入首地址至指定边界值整数倍的地址区间,再从指定边界值整数倍的位置开始写入剩下的数据;
当读操作的数据首地址和末地址跨越了指定边界值的整数倍,进行连续读操作时,读取数据首地址至指定边界值整数倍区间的数据,再从指定边界值整数倍的位置开始读取至数据末地址,待收到所有的数据后,将所有数据依次拼接为一组数据后返回给上游。
4.根据权利要求1所述的内存数据隔离和共享的系统,其特征在于,所述根据IAMT映射表获取每个虚拟内存地址对应的物理内存块包括:
每个虚拟内存空间对应一个IAMT链表,所有虚拟内存空间的IAMT链表组合为IAMT映射表保存在第二映射模块中;
第二映射模块查询IAMT映射表,将每个虚拟内存地址的访问映射到对应的物理内存块中。
5.根据权利要求4所述的内存数据隔离和共享的系统,其特征在于,所述IAMT链表包括内存块个数和内存块编号,其中:
所述内存块个数指示该虚拟内存空间分配的内存中物理内存块的个数;
所述内存块编号指示该虚拟内存空间使用的物理内存块编号,内存块编号在IAMT链表中保持从低位到高位从小到大顺序排列。
6.一种内存数据隔离和共享的方法,其特征在于,使用权利要求1-5中任一项所述的内存数据隔离和共享的系统,其中:
将物理内存划分为至少二个互相独立的隔离空间,每个隔离空间中包含一个或多个物理内存块;
为每个需要进行读写操作的外部程序分配一段虚拟地址空间,每个虚拟地址空间对应一个相同或不同的ID,不同ID的虚拟地址空间只能访问不同的隔离空间,相同的ID允许访问同一个隔离空间;
将外部程序读写指令的源地址输入所述地址处理序列中,并依次对地址进行处理,直至根据IAMT映射表获取到源地址对应的物理内存块,使用物理内存块为单位进行数据读写。
7.根据权利要求6所述的内存数据隔离和共享的方法,其特征在于,所述将物理内存划分为至少二个互相独立的隔离空间包括:
每个隔离空间首次申请时,至少申请一个物理内存块的颗粒值整数倍的空间;
当隔离空间的内存地址不足时,再次申请物理内存块的颗粒值整数倍的空间;
当隔离空间中的部分或全部内存地址不再使用时,释放不再使用的内存空间,每次释放的内存空间大小为物理内存块的颗粒值的整数倍。
8.根据权利要求6所述的内存数据隔离和共享的方法,其特征在于,所述每个隔离空间中包含一个或多个物理内存块包括:
每个隔离空间的大小与隔离空间的最大值一致,且包含整数个物理内存块;
一个隔离空间中的物理内存块的物理在访问上连续,在物理地址上连续和/或离散。
9.根据权利要求6所述的内存数据隔离和共享的方法,其特征在于,所述为每个需要进行读写操作的外部程序分配一段虚拟地址空间包括:
为每个外部程序分配虚拟地址空间,每个外部程序的虚拟地址空间按照隔离空间的最大值作为首地址的间隔;
并对外部程序进行权限分配,使管理员用户运行的外部程序能够访问整个物理存储空间的权限,其它外部程序仅能访问自己的虚拟地址空间的地址对应的物理内存块。
10.根据权利要求6所述的内存数据隔离和共享的方法,其特征在于,所述依次对地址进行处理包括:
第一映射模块将内存读写访问请求中的地址重映射为虚拟内存地址,同时生成虚拟内存地址的ID和权限标识符,虚拟内存地址经过边界处理模块的边界处理后,由第二映射模块查找IAMT映射表映射到对应的物理内存块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211705156.0A CN116185565A (zh) | 2022-12-29 | 2022-12-29 | 一种内存数据隔离和共享的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211705156.0A CN116185565A (zh) | 2022-12-29 | 2022-12-29 | 一种内存数据隔离和共享的系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185565A true CN116185565A (zh) | 2023-05-30 |
Family
ID=86435698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211705156.0A Pending CN116185565A (zh) | 2022-12-29 | 2022-12-29 | 一种内存数据隔离和共享的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185565A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117132450A (zh) * | 2023-10-24 | 2023-11-28 | 芯动微电子科技(武汉)有限公司 | 一种可实现数据共享的计算模块和图形处理器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309819A (zh) * | 2013-05-30 | 2013-09-18 | 苏州亮智科技有限公司 | 嵌入式系统及其中的内存安全管理方法 |
CN105975407A (zh) * | 2016-03-22 | 2016-09-28 | 华为技术有限公司 | 一种内存地址的映射方法及设备 |
WO2017219250A1 (zh) * | 2016-06-21 | 2017-12-28 | 华为技术有限公司 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
CN110659219A (zh) * | 2018-06-29 | 2020-01-07 | 畅想科技有限公司 | 虚拟内存管理 |
CN111324553A (zh) * | 2018-12-17 | 2020-06-23 | 恩德莱斯和豪瑟尔分析仪表两合公司 | 在嵌入式系统上实现虚拟地址空间的方法 |
-
2022
- 2022-12-29 CN CN202211705156.0A patent/CN116185565A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309819A (zh) * | 2013-05-30 | 2013-09-18 | 苏州亮智科技有限公司 | 嵌入式系统及其中的内存安全管理方法 |
CN105975407A (zh) * | 2016-03-22 | 2016-09-28 | 华为技术有限公司 | 一种内存地址的映射方法及设备 |
WO2017219250A1 (zh) * | 2016-06-21 | 2017-12-28 | 华为技术有限公司 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
CN110659219A (zh) * | 2018-06-29 | 2020-01-07 | 畅想科技有限公司 | 虚拟内存管理 |
CN111324553A (zh) * | 2018-12-17 | 2020-06-23 | 恩德莱斯和豪瑟尔分析仪表两合公司 | 在嵌入式系统上实现虚拟地址空间的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117132450A (zh) * | 2023-10-24 | 2023-11-28 | 芯动微电子科技(武汉)有限公司 | 一种可实现数据共享的计算模块和图形处理器 |
CN117132450B (zh) * | 2023-10-24 | 2024-02-20 | 芯动微电子科技(武汉)有限公司 | 一种可实现数据共享的计算装置和图形处理器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107636625B (zh) | 用于共享系统高速缓存的虚拟化控制的方法和装置 | |
KR102363526B1 (ko) | 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법 | |
US9547535B1 (en) | Method and system for providing shared memory access to graphics processing unit processes | |
US10089238B2 (en) | Method and apparatus for a shared cache with dynamic partitioning | |
US8255593B2 (en) | Direct memory access with striding across memory | |
US9612970B2 (en) | Method and apparatus for flexible cache partitioning by sets and ways into component caches | |
JP2019520660A (ja) | 柔軟なアドレスデコード機能を備えるメモリコントローラ | |
US8395631B1 (en) | Method and system for sharing memory between multiple graphics processing units in a computer system | |
CN109977037B (zh) | 一种dma数据传输方法及系统 | |
US10430327B2 (en) | Virtual machine based huge page balloon support | |
US10146440B2 (en) | Apparatus, system and method for offloading collision check operations in a storage device | |
TWI788476B (zh) | 用於機器學習的系統及方法 | |
CN116185565A (zh) | 一种内存数据隔离和共享的系统和方法 | |
CN115729849A (zh) | 内存管理方法及计算设备 | |
JP2018136922A (ja) | メモリープールを有するコンピューティングシステムのためのメモリー分割 | |
US10185501B2 (en) | Method and apparatus for pinning memory pages in a multi-level system memory | |
KR102142509B1 (ko) | 고체 상태 디바이스를 위한 다중 어드레스 레지스터를 위한 장치 및 방법 | |
US10089706B1 (en) | GPU virtual device driver for offload processing in a storage array | |
EP3506112A1 (en) | Multi-level system memory configurations to operate higher priority users out of a faster memory level | |
US20220276966A1 (en) | Data processors | |
US11960410B2 (en) | Unified kernel virtual address space for heterogeneous computing | |
US8041851B2 (en) | Generic DMA memory space mapping | |
CN116795743A (zh) | 并行处理系统中的高带宽扩展存储器 | |
CN117667376A (zh) | 内存管理方法、装置、系统及计算机可读存储介质 | |
KR20190143214A (ko) | 가상화 시스템의 메모리 관리 장치 및 그 방법 |
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 |