CN110083445B - 一种基于弱内存一致性的多线程确定性执行方法 - Google Patents
一种基于弱内存一致性的多线程确定性执行方法 Download PDFInfo
- Publication number
- CN110083445B CN110083445B CN201910320893.0A CN201910320893A CN110083445B CN 110083445 B CN110083445 B CN 110083445B CN 201910320893 A CN201910320893 A CN 201910320893A CN 110083445 B CN110083445 B CN 110083445B
- Authority
- CN
- China
- Prior art keywords
- thread
- threads
- serial
- parallel
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明提出了基于弱内存一致性的多线程确定性执行方法。包括弱内存一致性模型,串行阶段线程并行化模块和性能指导标记模块。本方法使用TSO弱内存一致性概念,并且提出了两点创新性技术,包括串行阶段部分线程并行化技术和帮助长并行距离线程跳过同步点的性能指导标记技术。本发明可以解决现有确定性方法全局同步造成的性能下降问题,并且通过让一些并行阶段较长的线程跳过指定的同步点,有效的解决了并行阶段负载不均衡问题,使确定性技术在性能上有很大提升。
Description
技术领域
本发明应用于多线程环境下提升确定性系统并行度,改善确定性系统性能。
背景技术
众所周知,近些年来,摩尔定律所定义的芯片性能增长规律渐渐遇到瓶颈,芯片集成度逐渐受到物理规律的限制,芯片频率的提升带来了严峻能耗问题和散热问题。并行计算和片上多核处理器(CMP,Chip Multiprocessor)的做法是将两个或者两个以上的处理器核心集成在同一块芯片上,这一技术的出现在一定程度上满足了人们对处理器性能提升的迫切需求。与传统的单核处理器不同,多核处理器中,多个任务在多个处理器核心上同时执行,它们共享总线和部分Cache,从而增加了芯片的整体处理能力和运行效率。但是,随之而来的是,给并行程序的开发和调试带来了严重的挑战,它比编写串行程序要困难许多。在多核平台上编写的并行程序通常使用多个执行体(例如线程)在多核处理器同时执行程序代码,这些执行体往往并不是多个串行程序的简单组合,而是为了互相配合完成同一个任务。因此,各个执行体之间就会广泛存在复杂的竞争,同步以及干扰关系。此时,并行程序的多个执行体由于系统调度执行的时刻不确定而产生不同的交织顺序(interleavings),就极有可能影响到上述竞争,同步,干扰关系,进而影响输出结果。
目前,确定性执行技术被认为是应对确定性问题的关键核心技术。确定性执行技术能够使程序在相同的输入下运行时,按照相同的调度产生相同输出结果。确定性执行技术的核心是控制并行执行体之间的同步、竞争和干扰,使执行体之间按照一定的规则和顺序进行交互,从而确保每次执行都能按照这种规则和顺序,使程序即使在不同的环境中执行也能得到相同的结果,但是为了获取确定性,系统需要付出大量的额外开销,因此如何提升确定性系统的性能就成了当前的研究热点。
发明内容
基于背景技术存在的技术问题,本发明提出了一种基于弱内存一致性的多线程弱确定性执行方法。
本发明提出的一种基于弱内存一致性的多线程弱确定性执行方法,所述系统包括弱内存一致性模型,串行阶段并行化模块和性能指导标记模块;弱内存一致性模块用于在保证多线程确定性执行的基础上,对线程实行内存隔离,延后线程向内存提交操作;串行阶段并行化模块,用于提升串行阶段线程并行度,让获取非互斥锁资源两组线程可以在串行阶段并行执行,缩短串行阶段耗时,提升性能;性能指导标记模块用于通过提供一个性能指导标记,标记长并行距离的线程,在确定的位置开始,跳过指定个数的串行阶段;避免在并行阶段中,并行距离较短的线程长时间等待长并行距离的线程,造成并行阶段效率不高。
优选地,所述弱内存一致性模型用于负责隔离线程,保证线程顺利执行并行、串行阶段,包括如下步骤:
步骤1:在并行阶段,将线程对内存的提交存储到各个线程的栈内存;
步骤2:线程在并行阶段并行执行;
步骤3:将线程向内存提交的操作推迟到同步点;
步骤4:在串行阶段,线程按照事先确定的顺序依次向内存提交修改;
步骤5:将内存备份提交给各个线程,为下次执行做准备。
优选地,所述串行阶段并行化模块,用于为非互斥关系线程在串行阶段并行运行提供环境;本模块允许让不存在互斥关系的线程并行执行,提升并行度缩短串行执行时间,通过将申请获取同一个资源锁的线程认定为具有互斥关系的线程,根据线程间的关系,为具有非互斥关系的线程划分到一个线程组;对于每一个互斥锁,都设置一个对应的互斥锁队列。此外还设置一个通用队列。线程在并行阶段执行到某一个同步操作,等待进入串行阶段时,确定性执行系统将其加入到对应队列的队尾位置。对于同步条件的嵌套规定,若一个线程申请本线程组之外的锁资源,那么该线程就会被暂停执行,该相关线程组内还未轮到执行的线程也将不会继续执行,直到其他所有线程组内的线程均执行完同步操作或者同样遇到互斥锁嵌套的情况,此时,各个线程组按照确定的顺序依次将线程组共享内存提交到全局共享内存,然后剩余的线程严格按照串行的方式执行同步操作,并且其中对共享内存的读操作也不再做缓冲,而是直接作用在全局共享内存。
优选地,所述性能指导标记模块,用于帮助长并行距离线程跳过指定的同步点,避免并行阶段短并行距离线程的长时间等待,该模块定义一个性能指导标记Bypass函数,能够指定一个线程需要跳过几个串行阶段;并行阶段确定性执行系统遇到Bypass函数时,先获取内部锁,保证执行的原子性;然后将该线程放入一个Bypass队列中,减少后续串行阶段需要等待的线程数;再将该线程设置为Bypass状态,并在线程实体中设置一个Bypass倒数计数器;当确定性执行系统将要从并行阶段切换到串行阶段时,需要维护Bypass队列;首先依次检查Bypass队列中的线程,将Bypass倒数计数器的值减1;然后检测其Bypass倒数计数器是否为零,若为零,则该线程需要加入当前即将要进入的串行阶段,将该线程移出Bypass队列,并且清除线程的Bypass状态,增加串行阶段等待线程数,最后等待该线程执行到同步操作;否则,该线程不需要加入当前即将要进入的串行阶段,则该线程继续并行执行。
本发明中,弱内存一致性模型为线程在串行阶段和并行阶段运行提供环境支撑,隔离线程共享内存;串行阶段并行化模块为非互斥关系的线程提供并行化运行的许可,提升系统并行度。性能指导标记模块为长并行距离的线程跳过指定的同步点提供指导,在提升性能的同时保证确定性。
附图说明
图1为整体流程图;
图2为串行阶段并行执行流程图;
图3为性能指导标记算法流程图。
具体实施方式
下面结合具体实施例对本发明作进一步解说。
实施例
参考图2,开始时,判断同步操作是否嵌套,如果有嵌套,则需等待其他所有线程结束后,进入严格串行执行;否则,进入正常执行流程。正常执行流程中,线程被放入对应的相关线程组的等待队列,然后等待令牌,获得令牌后进行内存提交,执行原始同步操作。此时,若本线程是相关线程组等待队列中的最后一个线程,那么额外将线程组共享内存提交到全局共享内存。最后所有线程都需要等待整个串行阶段的结束。
参考图3,首先依次检查Bypass队列中的线程,将Bypass倒数计数器的值减一。然后检测其Bypass倒数计数器是否为零,若为零,意味着该线程需要加入当前即将要进入的串行阶段,那么将该线程移出Bypass队列,并且清除线程的Bypass状态,增加串行阶段等待线程数,最后等待该线程执行到同步操作;否则,意味着该线程不需要加入当前即将要进入的串行阶段,则该线程继续并行执行。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (4)
1.一种基于弱内存一致性的多线程确定性执行方法,其特征在于:采用弱内存一致性模型,在保证多线程确定性执行的基础上,对线程实行内存隔离,延后线程向内存提交操作;
串行阶段并行化模块,用于提升串行阶段线程并行度,让获取非互斥锁资源两组线程可以在串行阶段并行执行;
性能指导标记模块,用于通过提供一个性能指导标记,标记长并行距离的线程,在确定的位置开始,跳过指定个数的串行阶段。
2.根据权利要求1所述的基于弱内存一致性的多线程确定性执行方法,其特征在于,所述弱内存一致性模型,
该模型负责隔离线程,保证线程顺利执行并行、串行阶段,所述方法包括如下步骤;
步骤1:在并行阶段,将线程对内存的提交存储到各个线程的栈内存;
步骤2:线程在并行阶段并行执行;
步骤3:将线程向内存提交的操作推迟到同步点;
步骤4:在串行阶段,线程按照事先确定的顺序依次向内存提交修改;
步骤5:将内存备份提交给各个线程,为下次执行做准备。
3.根据权利要求1所述的基于弱内存一致性的多线程确定性执行方法,其特征在于,串行阶段并行化模块,用于为非互斥关系线程在串行阶段并行运行提供环境;
通过将申请获取同一个资源锁的线程认定为具有互斥关系的线程,根据线程间的关系,为具有非互斥关系的线程划分到一个线程组;
对于每一个互斥锁,都设置一个对应的互斥锁队列;线程在并行阶段执行到同步操作,等待进入串行阶段时,确定性执行系统将其加入到对应队列的队尾位置;对于同步条件的嵌套规定,若一个线程申请本线程组之外的锁资源,该线程就会被暂停执行,线程组内还未轮到执行的线程也将不会继续执行,直到其他所有线程组内的线程均执行完同步操作或者同样遇到互斥锁嵌套的情况;此时,各个线程组按照确定的顺序依次将线程组共享内存提交到全局共享内存,然后剩余的线程严格按照串行的方式执行同步操作,并且其中对共享内存的读操作也不再做缓冲,而是直接作用在全局共享内存。
4.根据权利要求1所述的基于弱内存一致性的多线程确定性执行方法,其特征在于,性能指导标记模块,该模块定义一个性能指导标记Bypass函数,能够指定一个线程需要跳过几个串行阶段;并行阶段确定性执行系统遇到Bypass函数时,先获取内部锁,保证执行的原子性,然后将该线程放入一个Bypass队列中,减少后续串行阶段需要等待的线程数;再将该线程设置为Bypass状态,并在线程实体中设置一个Bypass倒数计数器;当确定性执行系统将要从并行阶段切换到串行阶段时,需要维护Bypass队列;首先依次检查Bypass队列中的线程,将Bypass倒数计数器的值减1;然后检测其Bypass倒数计数器是否为零,若为零,则该线程需要加入当前即将要进入的串行阶段,将该线程移出Bypass队列,并且清除线程的Bypass状态,增加串行阶段等待线程数,最后等待该线程执行到同步操作;否则,该线程不需要加入当前即将要进入的串行阶段,则该线程继续并行执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910320893.0A CN110083445B (zh) | 2019-04-21 | 2019-04-21 | 一种基于弱内存一致性的多线程确定性执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910320893.0A CN110083445B (zh) | 2019-04-21 | 2019-04-21 | 一种基于弱内存一致性的多线程确定性执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083445A CN110083445A (zh) | 2019-08-02 |
CN110083445B true CN110083445B (zh) | 2023-04-25 |
Family
ID=67415809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910320893.0A Active CN110083445B (zh) | 2019-04-21 | 2019-04-21 | 一种基于弱内存一致性的多线程确定性执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083445B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114518884A (zh) * | 2020-11-19 | 2022-05-20 | 华为技术有限公司 | 修复弱内存序问题的方法及装置 |
CN115705194A (zh) * | 2021-08-13 | 2023-02-17 | 华为技术有限公司 | 一种硬件内存序架构下的代码处理方法及相应装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156260A (zh) * | 2014-08-07 | 2014-11-19 | 北京航空航天大学 | 一种基于任务窃取的并发队列访问控制方法及系统 |
CN105354011A (zh) * | 2015-12-08 | 2016-02-24 | 中国人民解放军国防科学技术大学 | 面向多核并行程序的确定性懒惰释放一致性实现方法 |
CN107704324A (zh) * | 2017-07-20 | 2018-02-16 | 哈尔滨工业大学(威海) | 一种面向多核确定性的基于硬件的内存隔离方法 |
CH713111A2 (de) * | 2016-11-07 | 2018-05-15 | Luc Blaeser Hochschule Fuer Technik Rapperswil | Statische Erkennung von Nebenläufigkeitsfehlern in Computerprogrammen. |
CN109471734A (zh) * | 2018-10-27 | 2019-03-15 | 哈尔滨工业大学(威海) | 一种新型缓存优化多线程确定性方法 |
CN109582474A (zh) * | 2018-11-02 | 2019-04-05 | 哈尔滨工业大学 | 一种新型缓存优化多线程确定性方法 |
-
2019
- 2019-04-21 CN CN201910320893.0A patent/CN110083445B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104156260A (zh) * | 2014-08-07 | 2014-11-19 | 北京航空航天大学 | 一种基于任务窃取的并发队列访问控制方法及系统 |
CN105354011A (zh) * | 2015-12-08 | 2016-02-24 | 中国人民解放军国防科学技术大学 | 面向多核并行程序的确定性懒惰释放一致性实现方法 |
CH713111A2 (de) * | 2016-11-07 | 2018-05-15 | Luc Blaeser Hochschule Fuer Technik Rapperswil | Statische Erkennung von Nebenläufigkeitsfehlern in Computerprogrammen. |
CN107704324A (zh) * | 2017-07-20 | 2018-02-16 | 哈尔滨工业大学(威海) | 一种面向多核确定性的基于硬件的内存隔离方法 |
CN109471734A (zh) * | 2018-10-27 | 2019-03-15 | 哈尔滨工业大学(威海) | 一种新型缓存优化多线程确定性方法 |
CN109582474A (zh) * | 2018-11-02 | 2019-04-05 | 哈尔滨工业大学 | 一种新型缓存优化多线程确定性方法 |
Non-Patent Citations (2)
Title |
---|
"Static Analysis of the Determinism of Multithreaded Programs ";Pietro Ferrara;《2008 Sixth IEEE International Conference on Software Engineering and Formal Methods》;20081114;全文 * |
《确定性并行技术》;周旭等;《计算机学报》;20150515;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110083445A (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9811558B1 (en) | Apparatus and method for parallel processing of a query | |
US10095657B2 (en) | Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
Cintra et al. | Design space exploration of a software speculative parallelization scheme | |
CN103729480B (zh) | 一种多核实时操作系统多个就绪任务快速查找及调度方法 | |
EP0813145B1 (en) | Pipelined instruction dispatch unit in a superscalar processor | |
CN101807144B (zh) | 一种前瞻多线程并行执行优化方法 | |
CN105700941B (zh) | 三维调度器模型的调度方法 | |
CN104011705A (zh) | 多形异构性多核架构 | |
CN110083445B (zh) | 一种基于弱内存一致性的多线程确定性执行方法 | |
CN107463442B (zh) | 一种星载多核SoC任务级负载均衡并行调度方法 | |
EP3398065B1 (en) | Data driven scheduler on multiple computing cores | |
US10528354B2 (en) | Performance-aware instruction scheduling | |
CN101989192A (zh) | 一种程序自动并行化的方法 | |
CN104657111A (zh) | 一种并行计算方法和装置 | |
EP2782004B1 (en) | Opportunistic multi-thread method and processor | |
JP6464982B2 (ja) | 並列化方法、並列化ツール、車載装置 | |
CN115061803A (zh) | 一种多核处理系统及其任务调度方法、芯片、存储介质 | |
CN101286138A (zh) | 基于数据划分的多线程共享多核处理器二级缓存的方法 | |
US9652301B2 (en) | System and method providing run-time parallelization of computer software using data associated tokens | |
US20160320984A1 (en) | Information processing device, parallel processing program and method for accessing shared memory | |
CN112559440A (zh) | 多小芯片系统中实现串行业务性能优化的方法及装置 | |
CN112765088A (zh) | 利用数据标签提高多计算单元平台上数据共享的方法 | |
JP6933001B2 (ja) | 並列化方法、並列化ツール | |
CN112363816B (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 |