CN101814019A - 一种前瞻失效的线程识别方法 - Google Patents
一种前瞻失效的线程识别方法 Download PDFInfo
- Publication number
- CN101814019A CN101814019A CN201010132001A CN201010132001A CN101814019A CN 101814019 A CN101814019 A CN 101814019A CN 201010132001 A CN201010132001 A CN 201010132001A CN 201010132001 A CN201010132001 A CN 201010132001A CN 101814019 A CN101814019 A CN 101814019A
- Authority
- CN
- China
- Prior art keywords
- thread
- prediction
- outlook
- parameter value
- mentioned
- 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
Images
Abstract
本发明公开了一种前瞻失效的线程识别方法,其步骤:(1)构造识别结构;(2)判断上述识别结构中前瞻部分所存储的前瞻参数值是否正确,若实际执行部分中所存储的线程号已计算出该参数的实际值,且该值与对应的识别结构中的前瞻参数值相同,则表示前瞻有效,转步骤(3);若不相同,则表示前瞻失效,若前瞻失效,转步骤(4);(3)若前瞻有效,引用这个前瞻参数的线程结果有效;(4)若线程失效,前瞻引用部分的若干线程号和线程列表标识位组中的n个二进制位进行一一对应,对于数值为“1”的二进制位对应的线程号所指的线程需要重启。该方法在前瞻线程的重启判断中能够及时找出与之相关的线程,并启动重启程序,提高并行线程的执行效率。
Description
技术领域
本发明涉及计算机领域,提出了一种前瞻失效的线程识别方法。
背景技术
在个人计算机中,随着单处理机性能开发面临高功耗和硬件设计异常困难等棘手问题,从而使得单片多核处理器(Chip Multi-Processors,CMP)技术成为主流。CMP在一个芯片上集成多个微处理器核心,每个核心实质上都是一个相对简单的微处理器,多个核心并行执行程序代码。具有较高线程级并行性的应用可以很好地利用这种结构来提高性能。采用并行程序设计语言设计的应用程序虽从CMP技术获益颇多。然而,并行程序设计和调试难度极大;串行程序虽易于设计和调试,却难以利用CMP技术的并行特性。在串行程序资源丰富的情况下,串行程序的划分方法受到了广泛的重视,将串行程序划分为若干线程,将这些线程放入CMP中并行执行,能提升整个串行程序的运行效率。但是划分后的许多线程间存在数据相关,阻碍了线程的并行执行,为此,引入了线程级前瞻(Thread-Level Speculative,TLS)技术,来突破该瓶颈。TLS技术是在线程引入的参数还无法确定的情况下,通过数据推测方法,推断参数值,提前执行线程,从而保证线程的并行执行。其中,被推测的参数即为前瞻参数,引用前瞻参数的线程为前瞻线程。
采用线程级前瞻技术能提高线程的执行效率,屏蔽长延时操作。但当某个线程中引入的前瞻参数失效时,必须利用一个证实其失效的正确参数重启上述某个线程,以确保整个程序结果正确。但是重启某一线程需要额外花费时间和资源,如果重启的线程较多,将导致并行线程的执行效率非常低,甚至低于其在单片单核处理器执行效率。因此,通过识别前瞻失效的线程,及时找出与之相关的线程并启动重启程序,在前瞻技术中显得尤为重要。
发明内容
为解决上述现有技术存在的技术问题,本发明的目的是提供一种前瞻失效的线程识别方法,该识别方法在前瞻线程的重启判断中能够利用前瞻参数与失效线程的关系及时找出与之相关的线程,并启动重启程序,提高并行线程的执行效率。
为达到上述目的,本发明的构思是:在前瞻线程的重启判断中,根据前瞻参数及其在线程中的使用情况涉及一种用于及时认出前瞻失效的线程识别方法,及时找出与之相关的线程,并启动重启程序。
根据上述的发明构思,本发明采用下述技术方案:
一种前瞻失效的线程识别方法,其步骤包括如下:
(1)、构造识别结构;
(2)、判断上述识别结构中前瞻部分所存储的前瞻参数值是否正确,查询上述识别结构中实际执行部分中所存储的实际计算出该前瞻参数值的线程号是否已计算出该参数值,若实际执行部分中所存储的线程号已计算出该参数的实际值,且该值与对应的识别结构中的前瞻参数值相同,则表示前瞻有效,转步骤(3);若不相同,则表示前瞻失效,若前瞻失效,转步骤(4);
(3)、若前瞻有效,引用这个前瞻参数的线程结果有效;
(4)、若前瞻失效,前瞻引用部分的若干线程号和上述线程列表标识位组中的n个二进制位进行一一对应,对于数值为“1”的二进制位对应的线程号所指的线程需要重启。
上述步骤(1)所述的构造识别结构,其各组成部分如下:
(11),前瞻部分,用于存储前瞻参数值;
(12),实际执行部分,用于存储实际计算出上述前瞻部分中的前瞻参数值的线程号,该线程号所指线程通过计算得出参数值,并与上述前瞻参数值相比较,从其比较结果确定前瞻成功或前瞻失效;
(13),前瞻引用部分,用于存储引入上述前瞻部分中的前瞻参数值,作为线程参数的若干个线程号;
(14),上述线程列表标识位组,由n个二进制位组成,n代表上述前瞻引用部分中存储的线程号的个数。
本发明的一种前瞻失效的线程识别方法与现有的技术相比具有如下优点是:该识别方法应用于单片多核处理器平台,在引用了前瞻技术的多线程并行执行时,能及时跟踪前瞻参数的正确性,对前瞻失效的参数及时找出与之相关的线程并判定该线程是否失效;该方法在线程级前瞻的使用过程中,某一个线程可以派生出若干个前瞻线程,形成前瞻与被前瞻的关系,使得所有线程间的关系交错复杂,该方法理清了前瞻参数与前瞻线程以及前瞻线程互相之间的关系,该识别方法通过识别结构二进制位的运用,在前瞻线程的重启判断中能够及时找出与之相关的线程,并启动重启程序,提高并行线程的执行效率。
附图说明
图1是本发明的一种前瞻失效的线程识别方法的流程图;
图2是图1中构造的的识别结构示意图;
具体实施方式
下面结合说明书附图和具体实施方式对本发明作进一步详细的说明。
本实施例所述方案的应用环境是面向多核处理器的线程级并行执行环境如图1、2所示,一种前瞻失效的线程识别方法,其步骤包括如下:
(1)、构造识别结构,其各组成部分如下:
(11),前瞻部分,用于存储前瞻参数值,该前瞻参数值是根据待划分的串行程序代码的附带信息、串行程序上下文关系等进行参数推测,得出的还没出计算结果的推测值;
(12),实际执行部分,用于存储实际计算出上述前瞻部分中的前瞻参数值的线程号,该线程号所指线程通过计算得出参数值,并与上述前瞻参数值相比较,从其比较结果确定前瞻成功或前瞻失效;
(13),前瞻引用部分,用于存储引入上述前瞻部分中的前瞻参数值,作为线程参数的若干个线程号;
(14),上述线程列表标识位组,由n个二进制位组成,n代表上述前瞻引用部分中存储的线程号的个数,每个二进制位分别对应于前瞻引用部分的其中一个线程号所指向的线程,二进制值描述了需要重启的线程范围,标识位组中的n个二进制位初始化全部为0。
(2)、判断上述识别结构中前瞻部分所存储的前瞻参数值是否正确。查询上述识别结构中实际执行部分中所存储的实际计算出该前瞻参数值的线程号是否已计算出该参数值,若实际执行部分中所存储的线程号已计算出该参数的实际值,且该值与对应的识别结构中的前瞻参数值相同,则表示前瞻有效,转步骤(3),若不相同,则表示前瞻失效;若前瞻失效,转步骤(4);
(3)、若前瞻有效,引用这个前瞻参数的线程结果有效;
(4)、若前瞻失效,前瞻引用部分的若干线程号和上述线程列表标识位组中的n个二进制位进行一一对应,对于数值为“1”的二进制位对应的线程号所指的线程需要重启。前瞻线程受其所引入的前瞻参数的影响,若该参数失效,参数所对应的前瞻线程也会失效。在线程的执行过程中,存在对内存块、寄存器的值的修改,若前瞻参数失效,可能引起其他线程也失效,上述这种影响被称为前瞻值的扩散。n个二进制位分别对应的n个线程在执行过程中,若某线程的前瞻值扩散至其他线程,则将该线程所对应的二进制位置1。在前瞻失效的情况下,将前瞻引用部分中的若干线程号和线程列表标识位组中的n个二进制位进行一一对应。若某二进制位为0,表示该位所对应的线程须重启;若某二进制位为1,表示该位所对应的线程的前瞻值已扩散至其他线程,该二进制位所对应的线程和受前瞻值扩散影响的其他线程都须重启。
以上对本发明的一种前瞻失效的线程识别方法进行了详细说明,本发明的具体实施例的阐述只是用于帮助理解本发明的方法;对于本领域的一般技术人员,依据本发明的方法,在具体实施方式和应用范围上均会有改变之处,因此,本发明的实施例不应理解为对本发明的限制。
Claims (2)
1.一种前瞻失效的线程识别方法,其特征在于该方法步骤包括如下:
(1)、构造识别结构;
(2)、判断上述识别结构中前瞻部分所存储的前瞻参数值是否正确。查询上述识别结构中实际执行部分中所存储的实际计算出该前瞻参数值的线程号是否已计算出该参数值,若实际执行部分中所存储的线程号已计算出该参数的实际值,且该值与对应的识别结构中的前瞻参数值相同,则表示前瞻有效,转步骤(3),若不相同,则表示前瞻失效;若前瞻失效,转步骤(4);
(3)、若前瞻有效,引用这个前瞻参数的线程结果有效;
(4)、若前瞻失效,前瞻引用部分的若干线程号和上述线程列表标识位组中的n个二进制位进行一一对应,对于数值为“1”的二进制位对应的线程号所指的线程需要重启。
2.根据权利要求1所述的一种前瞻失效的线程识别方法,其特征在于,上述步骤(1)所述的构造识别结构,其各组成部分如下:
(11),前瞻部分,用于存储前瞻参数值;
(12),实际执行部分,用于存储实际计算出上述前瞻部分中的前瞻参数值的线程号,该线程号所指线程通过计算得出参数值,并与上述前瞻参数值相比较,从其比较结果确定前瞻成功或前瞻失效;
(13),前瞻引用部分,用于存储引入上述前瞻部分中的前瞻参数值,作为线程参数的若干个线程号;
(14),上述线程列表标识位组,由n个二进制位组成,n代表上述前瞻引用部分中存储的线程号的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010132001 CN101814019B (zh) | 2010-03-25 | 2010-03-25 | 一种前瞻失效的线程识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010132001 CN101814019B (zh) | 2010-03-25 | 2010-03-25 | 一种前瞻失效的线程识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101814019A true CN101814019A (zh) | 2010-08-25 |
CN101814019B CN101814019B (zh) | 2013-03-06 |
Family
ID=42621282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010132001 Expired - Fee Related CN101814019B (zh) | 2010-03-25 | 2010-03-25 | 一种前瞻失效的线程识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101814019B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063291A (zh) * | 2011-01-13 | 2011-05-18 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
CN102073482A (zh) * | 2011-02-25 | 2011-05-25 | 上海大学 | 一种前瞻失效线程的划分方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144602A1 (en) * | 2003-12-12 | 2005-06-30 | Tin-Fook Ngai | Methods and apparatus to compile programs to use speculative parallel threads |
CN101655783A (zh) * | 2009-05-08 | 2010-02-24 | 上海大学 | 前瞻多线程划分方法 |
-
2010
- 2010-03-25 CN CN 201010132001 patent/CN101814019B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144602A1 (en) * | 2003-12-12 | 2005-06-30 | Tin-Fook Ngai | Methods and apparatus to compile programs to use speculative parallel threads |
CN101655783A (zh) * | 2009-05-08 | 2010-02-24 | 上海大学 | 前瞻多线程划分方法 |
Non-Patent Citations (5)
Title |
---|
《小型微型计算机系统》 20020630 黄震春 等 填补存储器间距的一种方法--前瞻性Cache 全文 1-2 第23卷, 第6期 * |
J.GREGORY STEFFAN ET AL.: "The Potential for Using Thread-Level Data Speculation to Facilitate Automatic Parallelization", 《HIGH-PERFORMANCE COMPUTER ARCHITECTURE,1998.PROCEEDINGS.,1998 FOURTH INTERNATIONAL SYMPOSIUM ON》, 4 February 1998 (1998-02-04) * |
鲁建壮 等: "面向SCMP的多线程前瞻控制分析与设计", 《计算机工程与科学》, vol. 28, no. 10, 31 December 2006 (2006-12-31) * |
鲁建壮 等: "面向线程级前瞻的线程划分方法浅析", 《计算机科学》, vol. 33, no. 5, 31 December 2006 (2006-12-31) * |
黄震春 等: "填补存储器间距的一种方法——前瞻性Cache", 《小型微型计算机系统》, vol. 23, no. 6, 30 June 2002 (2002-06-30) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063291A (zh) * | 2011-01-13 | 2011-05-18 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
CN102063291B (zh) * | 2011-01-13 | 2013-08-28 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
CN102073482A (zh) * | 2011-02-25 | 2011-05-25 | 上海大学 | 一种前瞻失效线程的划分方法 |
CN102073482B (zh) * | 2011-02-25 | 2013-11-20 | 上海大学 | 一种前瞻失效线程的划分方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101814019B (zh) | 2013-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101807144B (zh) | 一种前瞻多线程并行执行优化方法 | |
CN102103484B (zh) | 用于启用处理器等待状态的指令 | |
US7882381B2 (en) | Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop | |
TWI564804B (zh) | 用於使處理元件提早離開深度睡眠狀態的處理器和方法 | |
AU2013387185B2 (en) | Allocation of alias registers in a pipelined schedule | |
KR20120117020A (ko) | 동적 전력 관리를 위한 도메인 특정 언어, 컴파일러 및 jit | |
US20200409703A1 (en) | Methods, devices, and media for processing loop instruction set | |
US9665466B2 (en) | Debug architecture for multithreaded processors | |
CN110704112B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN103488536A (zh) | 任务调度方法、装置及操作系统 | |
CN105824709B (zh) | 一种临界区访问方法及装置 | |
CN101814019B (zh) | 一种前瞻失效的线程识别方法 | |
CN111813515A (zh) | 基于多进程的任务调度方法、装置、计算机设备及介质 | |
CN102880473A (zh) | 基于quartz框架的任务执行方法及装置 | |
US9785538B2 (en) | Arbitrary instruction execution from context memory | |
US20090178054A1 (en) | Concomitance scheduling commensal threads in a multi-threading computer system | |
CN102541738A (zh) | 加速多核cpu抗软错误测试的方法 | |
CN102063291B (zh) | 一种前瞻线程的多级并行执行方法 | |
JP2013061783A (ja) | マルチコア・プロセッサ | |
GB2611964A (en) | Managing asynchronous operations in cloud computing environments | |
CN101520724B (zh) | 重启优化的前瞻线程颗粒及其重启优化方法 | |
CN101526894A (zh) | 控制前瞻线程颗粒重启优化的结构 | |
US20110320781A1 (en) | Dynamic data synchronization in thread-level speculation | |
CN100541362C (zh) | 一种基于汽车电控领域模型的自动状态机构造方法 | |
CN102012841B (zh) | 一种前瞻失效线程重启调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130306 Termination date: 20160325 |