CN107704324B - 一种面向多核确定性的基于硬件的内存隔离方法 - Google Patents
一种面向多核确定性的基于硬件的内存隔离方法 Download PDFInfo
- Publication number
- CN107704324B CN107704324B CN201710596016.7A CN201710596016A CN107704324B CN 107704324 B CN107704324 B CN 107704324B CN 201710596016 A CN201710596016 A CN 201710596016A CN 107704324 B CN107704324 B CN 107704324B
- Authority
- CN
- China
- Prior art keywords
- thread
- memory page
- memory
- page
- physical memory
- 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.)
- Active
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种面向多核确定性的基于硬件的内存隔离方法,步骤包括:多线程程序初始化时,每个线程的虚拟内存均映射到相同的物理内存;程序运行时,分并行阶段和串行阶段;并行阶段中,各线程独立执行,只有在线程对某虚拟内存页面进行了写操作,才生成该线程私有的物理内存页面,并将该线程的该虚拟内存页面映射至新生成的私有物理内存页面之上;串行阶段中,按照确定性顺序,将私有物理内存页面中修改的内容提交到共享物理内存页面中。本发明能够消除多线程程序中的并行错误,保证并行阶段的独立执行,且执行效率高,空间消耗少。另外,本方法的实现机制对程序编写者来说是透明的,能够提高编程效率。
Description
技术领域
本发明涉及多核***确定性执行领域,尤其涉及一种面向多核确定性的基于硬件的内存隔离方法。
背景技术
近年来,随着IC设计生产技术中单核CPU性能瓶颈的出现,人们选择了发展单芯片多核处理器技术,由此,越来越多的计算机采用了多核体系结构来提升性能。但是,采用单芯片多核处理器技术的多核体系结构在带来数倍的性能提升的同时,也给多线程线程带来了更为严峻的并行错误,典型的如数据竞争,互斥锁竞争及死锁。这些并行错误给程序的编写,调试带来了巨大的挑战。
上面所述并行错误,皆是由于在多核体系结构中,单进程中的共享内存的多个线程能够同时在多个处理器核心上执行,从而造成多个线程对内存的操作的顺序不能确定。而传统的通过程序编写者手动添加诸多同步语句的方式,既繁琐,又无法完全避开并行错误,而且存在不可复制性。多核确定性技术的发展给解决并行错误带来了有效的方法,其中传统的内存隔离技术通过将多线程程序划分为并行阶段和串行阶段交替进行方式,旨在为两种阶段提供内存隔离保护和内存操作顺序的可控性。
发明内容
基于背景技术存在的技术问题,本发明提出了一种面向多核确定性的基于硬件的内存隔离方法。
本发明公开了一种面向多核确定性的基于硬件的内存隔离方法,步骤包括:多线程程序初始化时,为每个线程分配相同虚拟内存,并以页面为单位进行管理,并通过本发明改进的MMU进行内存地址映射,其中多个线程中,相同虚拟内存地址的虚拟内存页面映射到相同的物理内存页面(也即程序中所有线程共享的物理内存页面);程序运行时,分并行阶段和串行阶段;并行阶段中,各线程独立执行,若线程对虚拟内存页面只进行读,则不改变内存地址映射,若线程对某虚拟内存页面进行了写操作,那么生成该线程私有的物理内存页面,并使改进的MMU将该线程的该虚拟内存页面映射至新生成的私有物理内存页面之上,故而此阶段其后,该线程对该虚拟内存页面进行的所有读写操作均实际在该线程私有物理内存页面上进行;串行阶段中,多线程程序依照某种确定性的顺序,将私有物理内存页面中修改的部分内容提交到共享物理内存页面中。
本发明能够消除多线程程序中的并行错误,保证并行阶段的独立执行和串行阶段的确定提交,并且在此基础上,采用改进MMU的方式,保证本方法的实现机制对程序编写者来说是透明的,而且使得本文明提出的内存隔离方法,在执行时效率更高,空间消耗也能得到有效的减少。
附图说明
图1为本发明提出的一种面向多核确定性的基于硬件的内存隔离方法的步骤流程图。
具体实施方式
下面结合具体实施例对本发明作进一步解说。
实施例
参考图1,本实施例提出了一种面向多核确定性的基于硬件的内存隔离方法,步骤包括:多线程程序初始化时,为每个线程分配相同虚拟内存,并以页面为单位进行管理,并通过本发明改进的MMU进行内存地址映射,其中多个线程中,相同虚拟内存地址的虚拟内存页面映射到相同的物理内存页面(也即程序中所有线程共享的物理内存页面);程序运行时,分并行阶段和串行阶段;并行阶段中,各线程独立执行,若线程对虚拟内存页面只进行读,则不改变内存地址映射,若线程对某虚拟内存页面进行了写操作,那么生成该线程私有的物理内存页面,并使改进的MMU将该线程的该虚拟内存页面映射至新生成的私有物理内存页面之上,故而此阶段其后,该线程对该虚拟内存页面进行的所有读写操作均实际在该线程私有物理内存页面上进行;串行阶段中,多线程程序依照某种确定性的顺序,将私有物理内存页面中修改的部分内容提交到共享物理内存页面中。
本发明能够消除多线程程序中的并行错误,保证并行阶段的独立执行和串行阶段的确定提交,并且在此基础上,采用改进MMU的方式,保证本方法的实现机制对程序编写者来说是透明的,而且使得本文明提出的内存隔离方法,在执行时效率更高,空间消耗也能得到有效的减少。
本实施例中,多核***中,基于改进后的MMU的内存隔离方法的步骤具体如下:
1)多核***上运行的多线程程序初始化时,为进程分配虚拟内存空间,并且按照内存页面为单位进行管理和映射。其中,进程中的多个线程共享相同的虚拟内存地址,但是映射到不同的,线程私有的物理内存地址上,以此形成线程间的内存隔离。
2)程序运行时,以同步点为分割标准,被划分为并行阶段和串行阶段,两个阶段交替进行。并行阶段时,每个线程对内存的操作均在私有的物理内存上进行;串行阶段时,每个线程按照某种确定性的顺序,依次将私有内存合并到共享内存中。
所述步骤1)中,多个线程共享相同的虚拟内存地址而映射到不同的私有物理内存,这种映射方式由改进后的MMU来实现。具体来说,改进后的MMU在创建改进的页表中的页表项时,增加了线程编号作为参数。同一个虚拟内存页面编号对应不同的物理内存页面,只有使用虚拟内存页面编号和线程编号才能唯一确定一个物理内存页面编号。CPU访存的具体步骤如下:
S1)CPU提出访问虚拟内存的请求时,需要同时给出虚拟内存地址和线程编号。
S2)改进后的MMU获取需要访问的虚拟内存地址和线程编号,根据虚拟内存地址得到虚拟内存页面编号,再使用虚拟内存页面编号和线程编号查询改进的页表,得到线程私有的物理内存页面编号,与原始的虚拟内存地址合成物理内存地址。
进程中的线程共享虚拟内存地址空间,但是实际可能映射到不同的物理内存地址上,而其实现的方式对程序编程者是透明的。故而所述步骤2)中,详细步骤如下:
S1)并行阶段开始时,进程中的所有线程共享内存,改进的MMU将改进的页表中,相同虚拟内存页面编号的页表项中的物理内存页面编号设置为相同的,即上一次串行阶段结束后形成的唯一的内存版本。
S2)并行阶段中,一个线程第一次写数据到某个内存页面中时,为该线程生成一个私有物理内存页面,该私有物理内存页面中的内容与原始的共享物理内存页面一致。之后,将改进的页表中相应页表项中物理页面编号,修改为新生成的私有物理内存页面编号。本次并行阶段中,该线程对该虚拟内存页面中的读写操作均在新生成的私有物理内存页面中进行,不再影响原始的共享物理内存页面。
S3)并行阶段结束后,切换至串行阶段时,按照某个确定性的顺序,每个线程将私有物理内存页面中修改的部分内容提交到共享物理内存页面中。
本实施例中,将本发明提出的一种面向多核确定性的基于硬件的内存隔离方法使用改进MMU的方式来实现,使得内存隔离对多线程程序的确定性执行更为有效,时空性能也均有所提升。同时,由于本实施例解决了并行错误,而且对上层程序是透明的。故而程序编写者不需要实现细节,只需当做在普通的单核体系结构上编写程序,从而减轻了程序编写者的程序编写和调试负担。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (1)
1.一种面向多核确定性的基于硬件的内存隔离方法,其特征在于步骤包括:
1)多核***上运行的多线程程序初始化时,为进程分配虚拟内存空间,并且按照内存页面为单位进行管理和映射;其中,进程中的多个线程共享相同的虚拟内存地址,但是映射到不同的,线程私有的物理内存地址上,以此形成线程间的内存隔离;
2)程序运行时,以同步点为分割标准,被划分为并行阶段和串行阶段,两个阶段交替进行;并行阶段时,每个线程对内存的操作均在私有的物理内存上进行;串行阶段时,每个线程按照确定性的顺序,依次将私有内存合并到共享内存中;
在所述步骤1)中,多个线程共享相同的虚拟内存地址而映射到不同的私有物理内存,这种映射方式由MMU来实现;具体来说,MMU在创建页表中的页表项时,增加了线程编号作为参数;同一个虚拟内存页面编号对应不同的物理内存页面,只有使用虚拟内存页面编号和线程编号才能唯一确定一个物理内存页面编号;CPU访存的具体步骤如下:
S1)CPU提出访问虚拟内存的请求时,需要同时给出虚拟内存地址和线程编号;
S2)MMU获取需要访问的虚拟内存地址和线程编号,根据虚拟内存地址得到虚拟内存页面编号,再使用虚拟内存页面编号和线程编号查询页表,得到线程私有的物理内存页面编号,与原始的虚拟内存地址合成物理内存地址;在所述步骤2)中,详细步骤如下:
S1)并行阶段开始时,进程中的所有线程共享内存,MMU将页表中,相同虚拟内存页面编号的页表项中的物理内存页面编号设置为相同的,即上一次串行阶段结束后形成的唯一的内存版本;
S2)并行阶段中,一个线程第一次写数据到某个内存页面中时,为该线程生成一个私有物理内存页面,该私有物理内存页面中的内容与原始的共享物理内存页面一致;之后,将页表中相应页表项中物理页面编号,修改为新生成的私有物理内存页面编号;本次并行阶段中,该线程对该虚拟内存页面中的读写操作均在新生成的私有物理内存页面中进行,不再影响原始的共享物理内存页面;
S3)并行阶段结束后,切换至串行阶段时,按照确定性的顺序,每个线程将私有物理内存页面中修改的部分内容提交到共享物理内存页面中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710596016.7A CN107704324B (zh) | 2017-07-20 | 2017-07-20 | 一种面向多核确定性的基于硬件的内存隔离方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710596016.7A CN107704324B (zh) | 2017-07-20 | 2017-07-20 | 一种面向多核确定性的基于硬件的内存隔离方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107704324A CN107704324A (zh) | 2018-02-16 |
CN107704324B true CN107704324B (zh) | 2020-02-07 |
Family
ID=61170752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710596016.7A Active CN107704324B (zh) | 2017-07-20 | 2017-07-20 | 一种面向多核确定性的基于硬件的内存隔离方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107704324B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471734A (zh) * | 2018-10-27 | 2019-03-15 | 哈尔滨工业大学(威海) | 一种新型缓存优化多线程确定性方法 |
CN109582474A (zh) * | 2018-11-02 | 2019-04-05 | 哈尔滨工业大学 | 一种新型缓存优化多线程确定性方法 |
CN110083445B (zh) * | 2019-04-21 | 2023-04-25 | 哈尔滨工业大学 | 一种基于弱内存一致性的多线程确定性执行方法 |
US11829298B2 (en) * | 2020-02-28 | 2023-11-28 | Apple Inc. | On-demand memory allocation |
CN112199678B (zh) * | 2020-09-25 | 2024-04-09 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
CN114327828B (zh) * | 2021-12-29 | 2022-10-11 | 科东(广州)软件科技有限公司 | 一种共享数据的无锁并发访问方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541619A (zh) * | 2010-12-23 | 2012-07-04 | 国际商业机器公司 | 虚拟机管理装置和方法 |
CN104657225A (zh) * | 2015-01-13 | 2015-05-27 | 北京航空航天大学 | 基于OKL4的嵌入式虚拟化平台跨Cell数据传输*** |
-
2017
- 2017-07-20 CN CN201710596016.7A patent/CN107704324B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541619A (zh) * | 2010-12-23 | 2012-07-04 | 国际商业机器公司 | 虚拟机管理装置和方法 |
CN104657225A (zh) * | 2015-01-13 | 2015-05-27 | 北京航空航天大学 | 基于OKL4的嵌入式虚拟化平台跨Cell数据传输*** |
Non-Patent Citations (2)
Title |
---|
Replication-aware Cache Management for CMPs with Private LLCs;Fengkai Yuan et al.;《2016 2nd IEEE International Conference on Computer and Communications (ICCC)》;20161017;2829-2834 * |
Set-Granular Regional Distributed Cooperative Caching;Fengkai Yuan et al.;《IEEE Computer Architecture Letters》;20140422;75-78 * |
Also Published As
Publication number | Publication date |
---|---|
CN107704324A (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704324B (zh) | 一种面向多核确定性的基于硬件的内存隔离方法 | |
EP3030967B1 (en) | Dynamic address negotiation for shared memory regions in heterogeneous muliprocessor systems | |
US9727471B2 (en) | Method and apparatus for stream buffer management instructions | |
TWI607377B (zh) | 於脈絡之間共享轉譯後備緩衝區對映之方法、處理器和系統 | |
EP2834744B1 (en) | System and method for memory management | |
US11403214B2 (en) | Memory management in non-volatile memory | |
US20150212839A1 (en) | Tracking transformed memory pages in virtual machine chain migration | |
US20140244891A1 (en) | Providing Dynamic Topology Information in Virtualized Computing Environments | |
CN106844048B (zh) | 基于硬件特性的分布式共享内存方法及*** | |
US20140310484A1 (en) | System and method for globally addressable gpu memory | |
TW201432453A (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TW201432570A (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
US9448934B2 (en) | Affinity group access to global data | |
US8006055B2 (en) | Fine granularity hierarchiacal memory protection | |
US11500828B1 (en) | Method and device for constructing database model with ID-based data indexing-enabled data accessing | |
CN112368688A (zh) | 作为用于虚拟化的gpu任务容器的vmid | |
US20080244221A1 (en) | Exposing system topology to the execution environment | |
US9323539B2 (en) | Constructing persistent file system from scattered persistent regions | |
US11030714B2 (en) | Wide key hash table for a graphics processing unit | |
CN113986775B (zh) | 一种risc-v cpu验证中页表项生成方法、***及装置 | |
CN107832238B (zh) | 一种基于龙芯处理器平台的高速缓存作内存的方法 | |
US10496555B2 (en) | Implementing per-thread memory access permissions | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
CN112346879B (zh) | 进程管理方法、装置、计算机设备及存储介质 | |
US8904406B2 (en) | Coordination of tasks executed by a plurality of threads using two synchronization primitive calls |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |