CN107704324A - 一种面向多核确定性的基于硬件的内存隔离方法 - Google Patents
一种面向多核确定性的基于硬件的内存隔离方法 Download PDFInfo
- Publication number
- CN107704324A CN107704324A CN201710596016.7A CN201710596016A CN107704324A CN 107704324 A CN107704324 A CN 107704324A CN 201710596016 A CN201710596016 A CN 201710596016A CN 107704324 A CN107704324 A CN 107704324A
- Authority
- CN
- China
- Prior art keywords
- thread
- page
- memory
- physical memory
- privately owned
- 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
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
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 (3)
1.一种面向多核确定性的基于硬件的内存隔离方法,其特征在于步骤包括:
1)多核系统上运行的多线程程序初始化时,为进程分配虚拟内存空间,并且按照内存页面为单位进行管理和映射。其中,进程中的多个线程共享相同的虚拟内存地址,但是映射到不同的,线程私有的物理内存地址上,以此形成线程间的内存隔离。
2)程序运行时,以同步点为分割标准,被划分为并行阶段和串行阶段,两个阶段交替进行。并行阶段时,每个线程对内存的操作均在私有的物理内存上进行;串行阶段时,每个线程按照某种确定性的顺序,依次将私有内存合并到共享内存中。
2.根据权利要求1所述的面向多核确定性的基于硬件的内存隔离方法,其特征在于,所述步骤1)中,多个线程共享相同的虚拟内存地址而映射到不同的私有物理内存,这种映射方式由改进后的MMU来实现。具体来说,改进后的MMU在创建改进的页表中的页表项时,增加了线程编号作为参数。同一个虚拟内存页面编号对应不同的物理内存页面,只有使用虚拟内存页面编号和线程编号才能唯一确定一个物理内存页面编号。CPU访存的具体步骤如下:
S1)CPU提出访问虚拟内存的请求时,需要同时给出虚拟内存地址和线程编号。
S2)改进后的MMU获取需要访问的虚拟内存地址和线程编号,根据虚拟内存地址得到虚拟内存页面编号,再使用虚拟内存页面编号和线程编号查询改进的页表,得到线程私有的物理内存页面编号,与原始的虚拟内存地址合成物理内存地址。
3.根据权利要求1和2所述的面向多核确定性的基于硬件的内存隔离方法,其特征在于,进程中的线程共享虚拟内存地址空间,但是实际可能映射到不同的物理内存地址上,而其实现的方式对程序编程者是透明的。所述步骤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 true CN107704324A (zh) | 2018-02-16 |
CN107704324B 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) |
Cited By (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 | 哈尔滨工业大学 | 一种新型缓存优化多线程确定性方法 |
CN110083445A (zh) * | 2019-04-21 | 2019-08-02 | 哈尔滨工业大学 | 一种基于弱内存一致性的多线程确定性执行方法 |
CN112199678A (zh) * | 2020-09-25 | 2021-01-08 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
WO2021173623A1 (en) * | 2020-02-28 | 2021-09-02 | Apple Inc. | On-demand memory allocation |
CN114327828A (zh) * | 2021-12-29 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种共享数据的并发访问方法、装置、设备及介质 |
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 |
---|
FENGKAI YUAN ET AL.: "Replication-aware Cache Management for CMPs with Private LLCs", 《2016 2ND IEEE INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATIONS (ICCC)》 * |
FENGKAI YUAN ET AL.: "Set-Granular Regional Distributed Cooperative Caching", 《IEEE COMPUTER ARCHITECTURE LETTERS》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109471734A (zh) * | 2018-10-27 | 2019-03-15 | 哈尔滨工业大学(威海) | 一种新型缓存优化多线程确定性方法 |
CN109582474A (zh) * | 2018-11-02 | 2019-04-05 | 哈尔滨工业大学 | 一种新型缓存优化多线程确定性方法 |
CN110083445A (zh) * | 2019-04-21 | 2019-08-02 | 哈尔滨工业大学 | 一种基于弱内存一致性的多线程确定性执行方法 |
CN110083445B (zh) * | 2019-04-21 | 2023-04-25 | 哈尔滨工业大学 | 一种基于弱内存一致性的多线程确定性执行方法 |
WO2021173623A1 (en) * | 2020-02-28 | 2021-09-02 | Apple Inc. | On-demand memory allocation |
GB2607778A (en) * | 2020-02-28 | 2022-12-14 | Apple Inc | On-demand memory allocation |
CN112199678A (zh) * | 2020-09-25 | 2021-01-08 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
CN112199678B (zh) * | 2020-09-25 | 2024-04-09 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
CN114327828A (zh) * | 2021-12-29 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种共享数据的并发访问方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107704324B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704324A (zh) | 一种面向多核确定性的基于硬件的内存隔离方法 | |
CN105678378B (zh) | 间接访问样本数据以在并行处理系统中执行多卷积操作 | |
CN106407156B (zh) | 一个bootrom引导多核cpu启动的方法及系统 | |
US8972995B2 (en) | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads | |
US7844802B2 (en) | Instructions for ordering execution in pipelined processes | |
JP6008515B2 (ja) | グラフィックス処理 | |
US9727338B2 (en) | System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
CN106445398A (zh) | 一种基于新型存储器的嵌入式文件系统及其实现方法 | |
US20220237041A1 (en) | Parallel processing system performing in-memory processing | |
US7999808B1 (en) | Parallel processing system, method, and computer program product for executing node traversal or primitive intersection | |
US8072454B1 (en) | Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing | |
US10599638B2 (en) | System and method for identifying maximal independent sets in parallel | |
CN106293736B (zh) | 用于粗粒度多核计算系统的两级编程装置及其计算方法 | |
US9772864B2 (en) | Methods of and apparatus for multidimensional indexing in microprocessor systems | |
Cheng et al. | EASY: Efficient arbiter SYnthesis from multi-threaded code | |
US20090133022A1 (en) | Multiprocessing apparatus, system and method | |
CN116909741A (zh) | 一种基于新一代申威众核处理器提高从核并行写共享主存临界资源速度的方法及系统 | |
CN110945485B (zh) | 直接内存地址转换的有效测试 | |
CN102193867B (zh) | 一种面向MPSoC的事务内存的实现方法 | |
CN105988952A (zh) | 为内存控制器分配硬件加速指令的方法和装置 | |
US11263131B2 (en) | System and method for allocating memory space | |
US11157330B2 (en) | Barrier-free atomic transfer of multiword data | |
CN105453062B (zh) | 实现硬件自动设备操作启动器的方法和控制器 | |
CN103003796B (zh) | 线程级推测中的动态数据同步 |
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 |