CN103324269A - 一种降低多线程程序功耗的方法及系统 - Google Patents
一种降低多线程程序功耗的方法及系统 Download PDFInfo
- Publication number
- CN103324269A CN103324269A CN2013102334017A CN201310233401A CN103324269A CN 103324269 A CN103324269 A CN 103324269A CN 2013102334017 A CN2013102334017 A CN 2013102334017A CN 201310233401 A CN201310233401 A CN 201310233401A CN 103324269 A CN103324269 A CN 103324269A
- Authority
- CN
- China
- Prior art keywords
- power consumption
- thread
- lock
- critical section
- consumption mode
- 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
Landscapes
- Power Sources (AREA)
Abstract
本发明涉及一种降低多线程程序功耗的方法及系统,在锁预测表中记录执行线程第一次访问锁的锁信息。对已经记录的锁和临界区进行访问时,执行线程一进入临界区就开始计时,而其他需要访问的线程先后进入锁队列。根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,控制未进入临界区的线程相应处理器核进入合适的低功耗模式。当接近锁持有时间预测表中的记录时,及时恢复将要进入临界区的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行。当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间。当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
Description
技术领域
本发明涉及在多核处理器上降低多线程程序功耗技术领域,尤其涉及到降低多线程程序锁机制导致的功耗开销。
背景技术
随着芯片集成了越来越多的晶体管,设计单核高性能处理器变得越来越复杂和难于验证,而设计由若干简单的处理器核组成的片上多核处理器CMPs(Chip multi processors)却是一种高效且简单的方法。CMPs是高性能处理器设计的趋势。在程序编译或运行阶段,CMPs开发了程序更粗粒度的并行(线程或进程级),而不是传统的指令级并行。
降低功耗已经成为高性能处理器设计的一个非常重要的目标。高功耗不仅限制了便携设备的续航能力,也使得在大规模的计算设备上的散热和供电变得复杂。尽管在并行多线程程序中,程序的整体性能依赖于所有的线程,可是在任何时间点,关键路径可能只依赖于某些线程。所以,在某些情况下,降低非关键路径的功耗不会影响程序的性能。
在多线程程序运行过程中,现有技术存在锁机制导致的功耗损失。
在多线程程序中,各个线程分别执行同一个程序的不同部分,并通过共享内存进行交互。为了保证程序的正确性,多个线程不允许同时更新共享数据,这就是互斥原则。在多线程程序中,通常使用同步原语(比如,锁)将包含有对共享数据访问的代码保护起来,其中被保护起来的代码段称为临界区(图中阴影方框部分为锁持有时间)。这意味着,在同一时间内,只能有一个线程进入临界区,而其他需要访问该临界区的线程必须忙等待或者阻塞,直到该线程离开临界区才能进入,如图1所示,图中斜线方框部分为忙等待时间。
很多商用处理器提供了各种低功耗模式,每一种低功耗模式实现了不同程度的功耗降低和由此产生的相应的越渡时间。
发明内容
为了解决上述问题,本发明的目的在于公开一种降低多线程程序功耗的方法及系统,使用锁持有时间预测表记录锁持有时间,指导下一次使用相同锁和执行相同临界区的线程相应处理器核进入合适的低功耗模式,从而降低多线程程序功耗。本发明公开了一种降低多线程程序功耗的方法,包括多线程抢锁步骤:
(1)在锁预测表中记录执行线程第一次访问锁的锁信息,包括锁地址、临界区起始指令的PC值、线程号和锁持有时间;
(2)当多线程对已经记录的相同锁和临界区进行访问时,执行线程一进入临界区就开始计时;
(3)被阻塞线程先后进入锁队列,根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,控制被阻塞线程相应处理器核分别进入合适的低功耗模式;
所述降低多线程程序功耗的方法,还包括多线程释放锁步骤:
(4)当执行线程的计时接近锁持有时间预测表中的记录时,也就是当执行线程即将离开临界区时,及时恢复被阻塞的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行,从而保证在不影响多线程程序性能的前提下降低功耗;
(5)当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间;
(6)当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
所述降低多线程程序功耗的方法,该功耗模式包括关闭处理器核的时钟门控或者降低供给电压,用于降低功耗。
或该功耗模式包括执行一条Halt指令而导致的轻度低功耗模式。
所述降低多线程程序功耗的方法,该锁预测表为共同索引锁预测表。
本发明还公开了一种降低多线程程序功耗的系统,包括:
(1)锁信息记录模块,用于在锁预测表中记录多线程执行中第一次访问锁的锁信息,包括锁地址、临界区起始指令的PC值、线程号和锁持有时间;
(2)临界区时间记录模块,用于当多线程对已经记录的相同锁和临界区进行访问时,执行线程一进入临界区就开始计时;
(3)控制模块,用于被阻塞线程先后进入锁队列,根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,控制被阻塞线程相应处理器核分别进入合适的低功耗模式;
(4)恢复模块,用于当执行线程的计时接近锁持有时间预测表中的记录时,及时恢复被阻塞的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行,从而保证在不影响多线程程序性能的前提下降低功耗;
(5)更新模块,用于当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间;
(6)功耗模式调节模块,用于当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
所述降低多线程程序功耗的系统,活跃线程的数量小于处理器核的数量。
本发明还包括一种采用上述降低多线程程序功耗的方法的处理器及采用上述降低多线程程序功耗的系统的处理器。
本发明的效果在于:通过记录上一次对锁的持有时间,预测下一次对同一把锁的持有时间。根据对锁持有时间的预测以及线程的优先级,控制未进入临界区的线程相应处理器核进入合适的低功耗模式,从而降低整个片上多核处理器功耗。
附图说明
图1为多线程访问临界区示意图;
图2为保护相同临界区的锁持有时间的连续4次变化示意图;
图3为本发明流程图;
图4为本发明所述的锁持有时间预测表示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明的实现进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在多线程程序中,由于程序代码的不同,不同锁的持有时间有很大的不同。然而,保护相同临界区的同一把锁的持有时间非常相似,图2为保护相同临界区的锁持有时间的连续4次变化示意图。
图2中,线程第i次对锁1、2、3的持有时间和线程第i+1次、i+2次、i+3次对锁1、2、3的持有时间几乎没有变化。从直观上看,这一现象也很容易理解。尽管有可能受输入数据的影响,但是目前大部分的并行程序是单程序多数据SPMD(single program,multiple data)类型的,因此各个线程的临界区的代码是相同的。本发明使用锁地址、锁保护的临界区的起始指令PC和线程号共同索引锁持有时间预测表。这些参数都是很容易获取的。
图3所示本发明的流程图。
多线程抢锁流程:在多线程程序的执行过程中,当第一次访问锁时,在锁持有时间预测表中记录锁地址,临界区起始指令的PC值,线程号,锁持有时间,如图4所示。
如果锁持有时间预测表中没有记录,则记录进入临界区线程的锁地址,临界区起始指令的PC值,线程号,锁持有时间;对已经记录的锁和临界区进行访问时,执行线程一进入临界区就开始计时,而其他需要访问该临界区的线程先后进入锁队列。根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,指导未进入临界区的其他线程相应处理器核分别进入合适的低功耗模式。
通常情况下,处理器核都有多种功耗模式可供选择。关闭处理器核的某些部件(比如,关闭时钟门控)或者降低供给电压都可以降低功耗。尽管较大力度的功耗模式(比如,关闭处理器核的caches)能节省更多的功耗,可是它也将耗费更多的时间降低或恢复到指定的功耗模式。
比如Intel Pentium处理器采用三种可供选择的功耗模式Sleep1、2、3。Sleep1是执行一条Halt指令而导致的轻度低功耗模式。Sleep2和Sleep3是较深度的低功耗模式,尽管它们仍然保存了处理器核和caches的内容,可是它们不支持外部协议请求服务。Sleep3和Sleep2的不同之处在于,Sleep3降低了供给电压,这将减少漏电。节省的功耗(相对TDPmax而言)和越渡时间(transition latencies),如下表1所示。
下表1为功耗模式表。
状态 | 功耗降低 | 越渡时间 | 降压 |
Sleep1 | 70% | 10us | 否 |
Sleep2 | 79% | 15us | 否 |
Sleep3 | 97% | 35us | 是 |
从正常功耗模式调节到低功耗模式,从低功耗模式恢复到正常功耗模式,都会带来延迟。这样的延迟通常在微秒量级,取决于PLL(Phase Locking Loop)的稳定时间等。因此,只有当存在比较长时间的忙等待时,才将未进入临界区的线程相应处理器核调节到低功耗模式,否则,该线程继续忙等待。这意味着能预测锁持有时间是非常重要的。
多线程释放锁流程:
当进入临界区的线程的计时接近锁持有时间预测表中的记录时,也就是当执行线程即将离开临界区时,及时恢复将要进入临界区的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行,从而保证在不影响多线程程序性能的前提下降低功耗。
当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间。
当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
本发明还公开一种降低多线程程序功耗的系统,包括:
(1)锁信息记录模块,用于在锁预测表中记录多线程执行中第一次访问锁的锁信息,包括锁地址、临界区起始指令的PC值、线程号和锁持有时间;
(2)临界区时间记录模块,用于当多线程对已经记录的相同锁和临界区进行访问时,执行线程一进入临界区就开始计时;
(3)控制模块,用于被阻塞线程先后进入锁队列,根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,控制被阻塞线程相应处理器核分别进入合适的低功耗模式;
(4)恢复模块,用于当执行线程的计时接近锁持有时间预测表中的记录时,及时恢复被阻塞的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行,从而保证在不影响多线程程序性能的前提下降低功耗;
(5)更新模块,用于当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间;
(6)功耗模式调节模块,用于当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
所述降低多线程程序功耗的系统,活跃线程的数量小于处理器核的数量。
在多线程程序中,常用的锁类型为自旋锁和互斥锁。对于自旋锁,本发明通过预测锁持有时间进行高效的功耗管理,使得未进入临界区的线程减少或避免忙等待。对于互斥锁,抢锁没有成功的线程会进入阻塞状态,但是,当锁可用时,调度策略不能保证被阻塞的相应线程能够立即被唤醒进入临界区执行。这很可能会导致关键线程的执行时间变长,从而降低多线程程序性能。本发明通过预测锁持有时间,使得被阻塞线程相应处理器核能预先恢复到正常的功耗模式,线程可以迅速进入临界区正常执行。通常情况下,活跃线程数小于处理器核数。所以线程被阻塞之后,并没有可供调度的其他阻塞线程,该处理器核则处于空闲状态。
本发明还包括一种采用上述降低多线程程序功耗的方法的处理器及采用上述降低多线程程序功耗的系统的处理器。该处理器核调节到低功耗模式,能较大程度地降低多线程程序功耗,从而整个片上多核处理器的功耗降低。
Claims (10)
1.一种降低多线程程序功耗的方法,其特征在于,包括多线程抢锁步骤:
(1)在锁预测表中记录执行线程第一次访问锁的锁信息,包括锁地址、临界区起始指令的PC值、线程号和锁持有时间;
(2)当多线程对已经记录的相同锁和临界区进行访问时,执行线程一进入临界区就开始计时;
(3)被阻塞线程先后进入锁队列,根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,控制被阻塞线程相应处理器核分别进入合适的低功耗模式。
2.如权利要求1所述降低多线程程序功耗的方法,其特征在于,步骤(3)后还包括多线程释放锁步骤:
(4)当执行线程的计时接近锁持有时间预测表中的记录时,及时恢复被阻塞的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行,从而保证在不影响多线程程序性能的前提下降低功耗;
(5)当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间;
(6)当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
3.如权利要求1或2所述降低多线程程序功耗的方法,其特征在于,该功耗模式包括关闭处理器核的时钟门控或者降低供给电压,用于降低功耗。
4.如权利要求1或2所述降低多线程程序功耗的方法,其特征在于,该功耗模式包括执行一条Halt指令而导致的轻度低功耗模式。
5.如权利要求1或2所述降低多线程程序功耗的方法,其特征在于,该锁预测表为共同索引锁预测表。
6.一种降低多线程程序功耗的系统,其特征在于,包括:
(1)锁信息记录模块,用于在锁预测表中记录多线程执行中第一次访问锁的锁信息,包括锁地址、临界区起始指令的PC值、线程号和锁持有时间;
(2)临界区时间记录模块,用于当多线程对已经记录的相同锁和临界区进行访问时,执行线程一进入临界区就开始计时;
(3)控制模块,用于被阻塞线程先后进入锁队列,根据锁持有时间预测表中记录的锁持有时间,同时考虑线程的优先级,控制被阻塞线程相应处理器核分别进入合适的低功耗模式。
7.如权利要求6所述降低多线程程序功耗的系统,其特征在于,还包括:
(4)恢复模块,用于当执行线程的计时接近锁持有时间预测表中的记录时,及时恢复被阻塞的优先级最高线程相应处理器核的功耗模式,使得该线程在临界区正常执行,从而保证在不影响多线程程序性能的前提下降低功耗;
(5)更新模块,用于当执行线程离开临界区时,更新锁持有时间预测表中相应的锁持有时间;
(6)功耗模式调节模块,用于当被选中的线程进入临界区时,调节锁队列中优先级最高的线程相应处理器核的功耗模式。
8.如权利要求6或7所述降低多线程程序功耗的系统,其特征在于,活跃线程的数量小于处理器核的数量。
9.一种采用权利要求1所述降低多线程程序功耗的方法的处理器。
10.一种采用权利要求6所述降低多线程程序功耗的系统的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310233401.7A CN103324269B (zh) | 2013-06-13 | 2013-06-13 | 一种降低多线程程序功耗的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310233401.7A CN103324269B (zh) | 2013-06-13 | 2013-06-13 | 一种降低多线程程序功耗的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103324269A true CN103324269A (zh) | 2013-09-25 |
CN103324269B CN103324269B (zh) | 2016-01-27 |
Family
ID=49193070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310233401.7A Active CN103324269B (zh) | 2013-06-13 | 2013-06-13 | 一种降低多线程程序功耗的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324269B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932933A (zh) * | 2014-03-21 | 2015-09-23 | 华为技术有限公司 | 一种获取自旋锁的方法及装置 |
CN108874446A (zh) * | 2018-04-12 | 2018-11-23 | 武汉斗鱼网络科技有限公司 | 多线程访问方法及装置 |
CN109906437A (zh) * | 2016-11-01 | 2019-06-18 | 微软技术许可有限责任公司 | 基于线程重要性的处理器核停止和频率选择 |
CN110221923A (zh) * | 2019-06-06 | 2019-09-10 | 北京字节跳动网络技术有限公司 | 数据访问方法、装置及设备 |
CN111052094A (zh) * | 2017-09-07 | 2020-04-21 | 阿里巴巴集团控股有限公司 | 使用c状态和睿频加速提高用户空间的自旋锁效率 |
CN112306703A (zh) * | 2019-07-29 | 2021-02-02 | 华为技术有限公司 | 一种numa系统中的临界区执行方法及装置 |
CN113076299A (zh) * | 2021-04-27 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种基于操作类型的锁耗时统计方法及装置 |
CN116225970A (zh) * | 2023-05-08 | 2023-06-06 | 麒麟软件有限公司 | 一种多线程程序分析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006129767A1 (ja) * | 2005-06-02 | 2006-12-07 | Keio University | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN102918474A (zh) * | 2009-05-13 | 2013-02-06 | 苹果公司 | 功率管理锁优化 |
-
2013
- 2013-06-13 CN CN201310233401.7A patent/CN103324269B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006129767A1 (ja) * | 2005-06-02 | 2006-12-07 | Keio University | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN102918474A (zh) * | 2009-05-13 | 2013-02-06 | 苹果公司 | 功率管理锁优化 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932933A (zh) * | 2014-03-21 | 2015-09-23 | 华为技术有限公司 | 一种获取自旋锁的方法及装置 |
CN104932933B (zh) * | 2014-03-21 | 2018-11-13 | 华为技术有限公司 | 一种获取自旋锁的方法及装置 |
CN109906437A (zh) * | 2016-11-01 | 2019-06-18 | 微软技术许可有限责任公司 | 基于线程重要性的处理器核停止和频率选择 |
CN109906437B (zh) * | 2016-11-01 | 2023-07-07 | 微软技术许可有限责任公司 | 基于线程重要性的处理器核停止和频率选择 |
CN111052094B (zh) * | 2017-09-07 | 2024-04-02 | 阿里巴巴集团控股有限公司 | 使用c状态和睿频加速提高用户空间的自旋锁效率 |
CN111052094A (zh) * | 2017-09-07 | 2020-04-21 | 阿里巴巴集团控股有限公司 | 使用c状态和睿频加速提高用户空间的自旋锁效率 |
CN108874446B (zh) * | 2018-04-12 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 多线程访问方法及装置 |
CN108874446A (zh) * | 2018-04-12 | 2018-11-23 | 武汉斗鱼网络科技有限公司 | 多线程访问方法及装置 |
CN110221923A (zh) * | 2019-06-06 | 2019-09-10 | 北京字节跳动网络技术有限公司 | 数据访问方法、装置及设备 |
CN112306703A (zh) * | 2019-07-29 | 2021-02-02 | 华为技术有限公司 | 一种numa系统中的临界区执行方法及装置 |
CN113076299A (zh) * | 2021-04-27 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种基于操作类型的锁耗时统计方法及装置 |
CN116225970A (zh) * | 2023-05-08 | 2023-06-06 | 麒麟软件有限公司 | 一种多线程程序分析方法 |
CN116225970B (zh) * | 2023-05-08 | 2023-08-04 | 麒麟软件有限公司 | 一种多线程程序分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103324269B (zh) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324269A (zh) | 一种降低多线程程序功耗的方法及系统 | |
Mutlu et al. | Research problems and opportunities in memory systems | |
CN110729006B (zh) | 存储器控制器中的刷新方案 | |
CN100337206C (zh) | 使用监视-存储器等待来监视锁定的方法、装置和系统 | |
US8954775B2 (en) | Power gating functional units of a processor | |
CN101763285B (zh) | 零开销切换多线程处理器及其线程切换方法 | |
CN104011704B (zh) | 具有相同的指令集架构(isa)的非对称性能多核架构 | |
US9021207B2 (en) | Management of cache size | |
US9183063B2 (en) | Power-constrained compiler code generation and scheduling of work in a heterogeneous processing system | |
CN101639817B (zh) | 一种存储器的控制方法、存储器控制器和存储器控制系统 | |
CN108027772A (zh) | 用于逻辑处理器的不同的系统寄存器 | |
CN102591722B (zh) | 片上网络多核处理器多线程的资源分配处理方法和系统 | |
CN103842933B (zh) | 多核平台中的受约束引导技术 | |
US20140006817A1 (en) | Performing Local Power Gating In A Processor | |
CN103744644A (zh) | 采用四核结构搭建的四核处理器系统及数据交换方法 | |
Sassone et al. | Matrix scheduler reloaded | |
US20140359591A1 (en) | Dynamic optimization of pipelined software | |
CN104272277A (zh) | 用于快速缓存断电的设备和方法 | |
Fallin et al. | The heterogeneous block architecture | |
US10659396B2 (en) | Joining data within a reconfigurable fabric | |
CN102521049A (zh) | 多核间内存调度方法 | |
Mutlu et al. | The main memory system: Challenges and opportunities | |
Abellán et al. | A g-line-based network for fast and efficient barrier synchronization in many-core cmps | |
US20160092182A1 (en) | Methods and systems for optimizing execution of a program in a parallel processing environment | |
CN103336571B (zh) | 一种降低多线程程序功耗的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |