CN103336571A - 一种降低多线程程序功耗的方法及系统 - Google Patents
一种降低多线程程序功耗的方法及系统 Download PDFInfo
- Publication number
- CN103336571A CN103336571A CN2013102327494A CN201310232749A CN103336571A CN 103336571 A CN103336571 A CN 103336571A CN 2013102327494 A CN2013102327494 A CN 2013102327494A CN 201310232749 A CN201310232749 A CN 201310232749A CN 103336571 A CN103336571 A CN 103336571A
- Authority
- CN
- China
- Prior art keywords
- fence
- time
- thread
- power consumption
- interval time
- 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
本发明公开一种降低多线程程序功耗的方法和系统,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;当最后一个线程离开第i+1个栅栏时,用此刻的时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表,从而降低整个处理器的功耗。
Description
技术领域
本发明涉及在多核处理器上降低多线程程序功耗技术领域,尤其涉及到降低多线程程序栅栏同步机制导致的功耗开销。
背景技术
随着芯片集成了越来越多的晶体管,设计单核高性能处理器变得越来越复杂和难于验证,而设计由若干简单的处理器核组成的片上多核处理器CMPs(Chip multi processors)却是一种高效且简单的方法。CMPs是高性能处理器设计的趋势。在程序编译或运行阶段,CMPs开发了程序更粗粒度的并行(线程或进程级),而不是传统的指令级并行。
降低功耗已经成为高性能处理器设计的一个非常重要的目标。高功耗不仅限制了便携设备的续航能力,也使得在大规模的计算设备上的散热和供电变得复杂。尽管在并行多线程程序中,程序的整体性能依赖于所有的线程,可是在任何时间点,关键路径可能只依赖于某些线程。所以,在某些情况下,降低非关键路径的功耗不会影响程序的性能。
在多线程程序中,各个线程分别执行同一个程序的不同部分,并通过共享内存进行交互。使用栅栏(barrier)同步是一种常用的交互方法。在多线程程序中,先到达同步点的线程需要等待其他还没有到达该同步点的线程,直到指定数量的线程都到达同步点,所有线程才执行下一个阶段的计算。先到达同步点的线程忙等待的时间在很大程度上是由最后到达该同步点的线程决定的。
图1是多线程栅栏同步示意图,描述了5个线程从栅栏i(barrier i)到达栅栏i+1(barrier i+1)的示意图,i为整数。图中,线程3最先到达栅栏i+1(barrier i+1),空方框部分为计算时间(或者运行时间),相对于正在运行的线程0、线程1、线程2、线程4,线程3就处于忙等待操作,依次等待线程2、线程1、线程0和线程4到达栅栏i+1,斜线方框部分为线程3需要忙等待时间。线程2到达栅栏i+1后,要等待线程1、线程0、线程4。线程1达到栅栏i+1后,要等待线程0、线程4……一直等到线程4到达栅栏i+1。可见,先到达同步点的线程所执行的忙等待操作,除了最后一个迭代循环检测到标志位翻转,之前的迭代循环都是无效操作,导致功耗损失。
很多商用处理器提供了各种低功耗模式,每一种低功耗模式实现了不同程度的功耗降低,但由此产生了相应的越渡时间。
发明内容
本发明的目的在于公开一种降低多线程程序功耗的方法及系统,使用栅栏间隔时间预测表记录栅栏间隔时间,用以预测下一次相同栅栏的间隔时间。根据预测的忙等待时间,控制先到达栅栏同步点的线程对应处理器核进入合适的低功耗模式,从而降低整个处理器功耗。
具体地讲,本发明公开了一种降低多线程程序功耗的方法,包括如下步骤:
(1)在多线程程序的执行过程中,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;
(2)当最后一个线程离开第i+1个栅栏时,用此刻的离开时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;
(3)将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;
(4)当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;
(5)当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
本发明还公开了一种降低多线程程序功耗的系统,包括如下模块:
(1)记录模块,用于在多线程程序的执行过程中,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;
(2)计算模块,用于当最后一个线程离开第i+1个栅栏时,用此刻的离开时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;
(3)写入模块,用于将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;
(4)控制模块,用于当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;
(5)更新模块,用于当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
本发明还公开了一种采用所述降低多线程程序功耗的方法的处理器及采用所述降低多线程程序功耗的系统的处理器。根据预测的忙等待时间,控制先到达栅栏同步点的线程对应处理器核进入合适的低功耗模式,从而降低整个处理器功耗。
附图说明
图1多线程栅栏同步示意图;
图2为任一线程连续四次经过三个栅栏的时间变化示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明的实现进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
具体地讲,本发明公开了一种降低多线程程序功耗的方法,包括如下步骤:
(1)在多线程程序的执行过程中,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;
(2)当最后一个线程离开第i+1个栅栏时,用此刻的离开时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;
(3)将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;
(4)当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;
(5)当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
多线程程序栅栏间隔时间是可以准确预测的,而且与线程无关。栅栏间隔时间是计算时间和忙等待时间之和。任意一个线程连续四次经过三个栅栏的时间变化情况,如图2所示,j为正整数。
图2中,每个柱状条都是由计算时间和忙等待时间两部分组成。
某一线程第j次到达栅栏i、栅栏i+1、栅栏i+2和线程第j+1次、j+2次、j+3次到达栅栏i、栅栏i+1、栅栏i+2的栅栏间隔时间几乎没有变化。这表明通过记录栅栏i的栅栏间隔时间,当线程再次经过栅栏i时,可以预测它将要达到栅栏i+1的时间,从而进行低功耗管理。
在多线程程序的执行过程中,当到达第i个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间。
当最后一个线程离开第i+1个栅栏时,用此刻的时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间。
将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表,如下表(实施例):
栅栏地址 | 栅栏间隔时间 |
0x2002e530 | 10000us+1500us |
当线程再次到达第i个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式。
实施例,栅栏间隔时间为10000us+1500us,减去计算时间8000us,预测忙等待时间为3500us。
栅栏地址 | 栅栏间隔时间 |
0x2002e530 | 10000us+1500us |
0x2002e536 | 17000us+3000us |
当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
更新栅栏间隔时间为8000us+3200us。
栅栏地址 | 栅栏间隔时间 |
0x2002e530 | 8000us+3200us |
0x2002e536 | 17000us+3000us |
从正常功耗模式转变成低功耗模式,从低功耗模式恢复成正常功耗模式,都会带来延迟。这样的延迟通常在微秒量级,取决于PLL(Phase Locking Loop)的稳定时间等。功耗模式转换带来的延迟可能大于先到达栅栏同步点的线程忙等待时间。在这种情况下,功耗模式转换很可能使得线程离开栅栏的时间比正常功耗模式下滞后,从而导致整个程序的运行时间延长,也就是性能降低。如果滞后的线程成为下一个栅栏的关键线程,则性能损失加剧。所以,只有当存在比较长时间的忙等待时,才将先到达栅栏同步点的线程对应的处理器核转变成低功耗模式,否则该线程继续忙等待。这意味着,能准确预测栅栏同步时间是很重要的。
通常情况下,处理器核都有多种功耗模式可供选择。关闭处理器核的某些部件(比如,关闭时钟门控)或者降低供给电压都可以降低功耗。尽管较大力度的功耗模式(比如,关闭处理器核的caches)能节省更多的功耗,可是它也将耗费更多的时间降低或恢复到指定的功耗模式。比如,Intel Pentium处理器中采用三种可供选择的功耗模式Sleep1-3。Sleep1是执行一条Halt指令而导致的轻度低功耗模式。Sleep2和Sleep3是较深度的低功耗模式,尽管它们仍然保存了处理器核和caches的内容,可是它们不支持外部协议请求服务。Sleep3和Sleep2的不同之处在于,Sleep3降低了供给电压,这将减少漏电。节省的功耗(相对TDPmax而言)和越渡时间(transition latencies),如表1所示。
下表为实施例所述的功耗模式表
状态 | 功耗降低 | 越渡时间 | 降压 |
Sleep1 | 70% | 10us | 否 |
Sleep2 | 79% | 15us | 否 |
Sleep3 | 97% | 35us | 是 |
本发明还公开了一种降低多线程程序功耗的系统,包括如下模块:
(1)记录模块,用于在多线程程序的执行过程中,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;
(2)计算模块,用于当最后一个线程离开第i+1个栅栏时,用此刻的离开时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;
(3)写入模块,用于将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;
(4)控制模块,用于当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;
(5)更新模块,用于当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
本发明还包括一种采用上述降低多线程程序功耗的方法的处理器及采用上述降低多线程程序功耗的系统的处理器。该处理器核调节到低功耗模式,能较大程度地降低多线程程序功耗,从而使整个片上多核处理器的功耗降低。
Claims (4)
1.一种降低多线程程序功耗的方法,其特征在于,包括如下步骤:
(1)在多线程程序的执行过程中,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;
(2)当最后一个线程离开第i+1个栅栏时,用此刻的离开时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;
(3)将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;
(4)当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;
(5)当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
2.一种降低多线程程序功耗的系统,其特征在于,包括如下模块:
(1)记录模块,用于在多线程程序的执行过程中,当到达第一个栅栏时,在栅栏间隔时间预测表中记录栅栏地址和最后一个线程离开栅栏的时间;
(2)计算模块,用于当最后一个线程离开第i+1个栅栏时,用此刻的离开时间减去最后一个线程离开第i个栅栏的时间,得到第i个栅栏的间隔时间;
(3)写入模块,用于将第i个栅栏的地址和间隔时间写入栅栏间隔时间预测表;
(4)控制模块,用于当线程再次到达同一个栅栏,先到达栅栏同步点的线程使用从栅栏间隔时间预测表读出的间隔时间减去计算时间,预测该线程的忙等待时间,选择进入合适的低功耗模式;
(5)更新模块,用于当该栅栏的预测间隔时间即将来临时,将之前先到达该栅栏同步点的线程恢复到正常的功耗模式,并更新栅栏间隔时间预测表。
3.一种采用权利要求1所述降低多线程程序功耗的方法的处理器。
4.一种采用权利要求2所述降低多线程程序功耗的系统的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310232749.4A CN103336571B (zh) | 2013-06-13 | 2013-06-13 | 一种降低多线程程序功耗的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310232749.4A CN103336571B (zh) | 2013-06-13 | 2013-06-13 | 一种降低多线程程序功耗的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336571A true CN103336571A (zh) | 2013-10-02 |
CN103336571B CN103336571B (zh) | 2016-02-03 |
Family
ID=49244759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310232749.4A Active CN103336571B (zh) | 2013-06-13 | 2013-06-13 | 一种降低多线程程序功耗的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336571B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932947A (zh) * | 2014-03-17 | 2015-09-23 | 华为技术有限公司 | 一种栅栏同步方法及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1732447A (zh) * | 2002-12-26 | 2006-02-08 | 英特尔公司 | 最低优先级中断的处理器功率状态知晓分配的机制 |
WO2006129767A1 (ja) * | 2005-06-02 | 2006-12-07 | Keio University | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN101542412A (zh) * | 2005-04-14 | 2009-09-23 | Mips技术公司 | 用于多线程处理器中自动低功率模式调用的装置和方法 |
CN102918474A (zh) * | 2009-05-13 | 2013-02-06 | 苹果公司 | 功率管理锁优化 |
-
2013
- 2013-06-13 CN CN201310232749.4A patent/CN103336571B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1732447A (zh) * | 2002-12-26 | 2006-02-08 | 英特尔公司 | 最低优先级中断的处理器功率状态知晓分配的机制 |
CN101542412A (zh) * | 2005-04-14 | 2009-09-23 | Mips技术公司 | 用于多线程处理器中自动低功率模式调用的装置和方法 |
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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932947A (zh) * | 2014-03-17 | 2015-09-23 | 华为技术有限公司 | 一种栅栏同步方法及设备 |
CN104932947B (zh) * | 2014-03-17 | 2018-06-05 | 华为技术有限公司 | 一种栅栏同步方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103336571B (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324269B (zh) | 一种降低多线程程序功耗的方法及系统 | |
US8954775B2 (en) | Power gating functional units of a processor | |
Abdel-Majeed et al. | Warped register file: A power efficient register file for GPGPUs | |
US20220326755A1 (en) | Processor core energy management | |
Själander et al. | Power-efficient computer architectures: Recent advances | |
CN103842933B (zh) | 多核平台中的受约束引导技术 | |
CN105867584A (zh) | 用于异构多核心系统的动态核心选择 | |
CN102591722B (zh) | 片上网络多核处理器多线程的资源分配处理方法和系统 | |
CN101320289A (zh) | 提高多内核处理器性能的方法、系统和装置 | |
TW201337771A (zh) | 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統 | |
CN108446253B (zh) | 一种针对神威体系架构的稀疏矩阵向量乘的并行计算方法 | |
Vishnu et al. | Designing energy efficient communication runtime systems for data centric programming models | |
US20140359591A1 (en) | Dynamic optimization of pipelined software | |
US9753531B2 (en) | Method, apparatus, and system for energy efficiency and energy conservation including determining an optimal power state of the apparatus based on residency time of non-core domains in a power saving state | |
CN104317770A (zh) | 用于众核处理系统的数据存储结构及数据访问方法 | |
John | Green computing strategies for improving energy efficiency in it systems | |
CN105353865A (zh) | 基于多处理器的动态调频方法 | |
CN103336571A (zh) | 一种降低多线程程序功耗的方法及系统 | |
CN102023846A (zh) | 基于单片多处理器系统的共享前端流水线结构 | |
CN104360979A (zh) | 基于图形处理器的计算机系统 | |
WO2019153684A1 (zh) | 一种低延迟指令调度器的自动管理方法 | |
Han et al. | Research on optimization and parallelization of optimal binary search tree using dynamic programming | |
Huang et al. | DLWAP-buffer: A Novel HW/SW Architecture to Alleviate the Cache Coherence on Streaming-like Data in CMP | |
DeMara et al. | Non-volatile memory trends: Toward improving density and energy profiles across the system stack | |
KR101373699B1 (ko) | 모바일 환경의 멀티 코어 멀티 스레드 시스템의 단일 프로세스 병렬화를 위한 분기 방법 |
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 |