CN102473137B - 线程节流 - Google Patents
线程节流 Download PDFInfo
- Publication number
- CN102473137B CN102473137B CN201080032322.4A CN201080032322A CN102473137B CN 102473137 B CN102473137 B CN 102473137B CN 201080032322 A CN201080032322 A CN 201080032322A CN 102473137 B CN102473137 B CN 102473137B
- Authority
- CN
- China
- Prior art keywords
- thread
- kernel
- memory set
- execution
- temperature
- 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.)
- Expired - Fee Related
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/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
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/20—Cooling means
- G06F1/206—Cooling means comprising thermal management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了用于调度计算机系统中运行的线程的技术。示例计算机系统可以包括但不限于多处理器,多处理器具有第一和第二内核、操作系统和用于存储数据的存储器组。示例方法可以包括但不限于:测量存储器组的温度,如果存储器组的温度超过预定温度,确定线程是否包括对于存储器组中存储的数据的请求。方法还可以包括但不限于:一旦确定线程包括对于数据的请求,减慢线程的执行。
Description
相关申请的引用
本申请与下述共同待审申请相关:2009年7月23日提交的申请序列号12/508,552(代理案卷号HVW01-016-US),题为“Selection ForApplications Running On Multiprocessor Systems Based On CoreCharacteristics”。
背景技术
微处理器的功率密度每隔几年翻倍,预期提高速率会持续增长。微处理器消耗的能量转换为热,因此功率密度的增加造成热密度的相应升高,导致可靠性和制造成本方面的困难。由于功率耗散在空间上是不均匀的,所以局部化加热比芯片范围上的加热发生得更快。造成的“热点”进一步增加热密度的升高。
大多数处理热密度升高和热点的设计技术关注于热封装,例如热沉和热扇。也已经考虑了在包括芯片架构级别的所有系统级上的温度意识设计。温度意识设计利用功率管理技术,可以直接瞄准工作温度的空间和时间行为。
发明内容
在第一方面,本公开总体上描述了一种对计算机系统中线程的运行进行调度的方法,包括:测量计算机系统中存储器组的温度;如果存储器组的温度超过预定温度,确定线程是否包括对于存储器组中存储的数据的请求;以及如果确定线程包括对于存储器组中存储的数据的请求,进行调度以减慢线程在计算机系统的第一内核上的执行。
在第二方面,本公开总体上描述了一种计算机程序产品,具有在计算机可读介质中编码的软件,用于对计算机系统中线程的运行进行调度。软件包括指令,当被执行时,操作为:测量计算机系统中存储器组的温度;如果存储器组的温度超过预定温度,确定线程是否包括对于存储器组中存储的数据的请求;以及如果确定线程包括对于存储器组中存储的数据的请求,进行调度以减慢线程在计算机系统的第一内核上的执行。
在第三方面,本公开总体上描述了一种计算机系统,具有第一和第二内核、操作性耦接至第一和第二内核的存储器组、以及操作性耦接至第一和第二内核的计算机可读介质。计算机可读介质包括计算机可执行指令,当由计算机系统执行时,指令将计算机系统配置为:测量存储器组的温度,以确定温度是否超过预定温度;当确定存储器组的温度超过预定温度时,确定计算机系统中的至少一个线程是否包括对于存储器组中存储的数据的请求;以及当确定所述至少一个线程包括对于存储器组中存储的数据的请求时,进行调度以减慢所述至少一个线程在计算机系统的第一内核上的执行。
以上发明内容仅仅是说明性的,而绝不是限制性的。除了上述示例性的各方案、各实施例和各特征之外,参照附图和以下详细说明,将清楚其他方案、其他实施例和其他特征。
附图说明
结合附图,根据以下说明书和所附权利要求,可以更好理解本公开。图中的组件不一定是按照比例绘制的,而是要强调所公开主题的原理。应认识到这些附图仅仅示出了根据本公开的一些示例且因此不应被认为是限制本公开范围,通过使用附图更加具体和详细地描述本公开。
图1示出了根据本公开至少一些实施例布置的计算机系统。
图2示出了根据本公开至少一些实施例的由操作系统执行的应用程序。
图3示出了根据本公开至少一些实施例的将应用程序划分成线程的示意表示,其中线程发布发送给存储器控制器的请求。
图4示出了根据本公开至少一些实施例布置的流程图。
具体实施方式
下面描述给出了多种示例以及具体细节,以提供对所要求保护的主题的充分理解。然而,本领域技术人员将理解,可以在没有本文公开的一些或更多具体细节的情况下实施要求保护的主题。此外,在一些情况下,不详细描述已知的方法、过程、系统、部件和/或电路,以避免不必要地模糊要求保护的主题。在以下详细说明中,参考了作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。具体实施方式部分、附图和权利要求书中记载的示例性实施例并不是限制性的。在不脱离在此所呈现主题的精神或范围的情况下,可以利用其他实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方案可以多种不同配置来设置、替换、组合和设计,它们全部都在本公开中明确考虑并形成本公开一部分。
本公开标识出DRAM存储器系统是CMP系统中多个处理内核之间的主要共享资源。当访问该共享资源时,可以将特定内核分配给特定应用或应用内的特定线程以执行。每个应用或线程可以产生对于存储器内数据的请求,具体地,对于存储器内特定存储器组内数据的请求。对于特定存储器组内数据的过多请求会造成该特定存储器组的热度过高,并最终导致该存储器组的工作失灵。操作系统可以将对于特定存储器组发出过多请求的一个或多个特定内核减慢,以防止该特定存储器组的过热。
根据本公开,认识到减慢特定内核以防止存储器组过热可能是次优的,因为这些内核可能仍然用于不需要访问存储器组的其他任务。因此,本公开认识到可能希望在不必减慢特定内核的情况下防止存储器组过热。
本公开可以利用如下发现:通过响应于应用或线程使用的存储群组的工作温度,对应用或应用内的线程进行调度,可以防止存储器组过热,而不必减慢特定内核。。
图1示出了根据本公开至少一些实施例布置的计算机系统。图1示出了计算机100包括处理器110、存储器120和一个或多个驱动130。驱动130及其关联的计算机存储介质可以配置成为计算机100提供对计算机可读指令、数据结构、程序模块和其他数据的存储。驱动130可以包括操作系统140、应用程序150、程序模块160和数据库180。操作系统140和/或应用程序150例如可以包括使计算机100执行图4所示的功能和/或操作的程序指令,例如线程调度算法152。计算机100可以包括用户输入设备190,通过用户输入设备190,用户可以输入命令和数据。输入设备可以包括电子数字化仪、麦克风、键盘和指定设备(指定设备通常称为鼠标、轨迹球或触摸板)。其他输入设备可以包括操纵杆、游戏板、圆盘卫星天线、扫描仪等。
上述和其他输入设备可以通过用户输入接口耦接至处理器110,用户输入接口可以耦接至系统总线,或者可以通过其他接口或总线结构(例如并行端口、游戏端口或通用串行总线(USB)等)连接。计算机100可以包括外围输出设备,例如扬声器、打印机或显示器202,外围输出设备可以通过输出外围接口194等连接。
计算机100可以配置为在使用至一个或多个计算机(例如连接至网络接口196的远程计算机)的逻辑连接的联网环境中操作。远程计算机可以是个人计算机(PC)、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且可以包括上述相对于计算机100所述的元件中的许多或者全部。
联网环境可以包括办公室、企业广域网(WAN)、局域网(LAN)、内联网和互联网。在一个示例中,计算机100可以是数据从其迁移的源机器,而远程计算机可以包括目的地机器,反之亦然。源和目的地机器可以不通过网络108或任何其他手段连接,而是数据可以经由任何能够由源平台写入并由目的地平台读取的介质来迁移。在LAN或WLAN联网环境中,计算机100可以通过网络接口196或适配器连接至LAN或WAN。在WAN联网环境中,计算机100可以包括调制解调器或用于通过例如互联网或网络108等WAN建立通信的其他手段。可以使用在计算机之间建立通信链接的其他手段。
计算机外围设备可以包括通过系统总线耦接至计算机100的处理器110和存储器120的任何设备。计算机外围设备可以包括与输出外围接口连接的任何设备,包括显示器202、打印机、扬声器、驱动130、用户输入设备190以及网络接口196,用户输入设备190例如包括键盘、鼠标和麦克风。计算机外围设备的部件可以包括计算机外围设备内的任何设备,该设备可以使用电能并且可以是任何设备,例如扬声器、照明元件(例如发光二极管或用于为显示器提供照明的背光)、显示元件(例如LCD、LED、OLED、CRT或等离子体显示器)、或者半导体芯片(例如中央处理器(CPU)、图像处理单元(GPU)、存储器)。根据实施例,计算机100可以连接在联网环境中,使得处理器110和/或程序模块160可以执行功率减小和节省,而对用户体验的损害最小。
在一些示例中,公开了对计算机系统中运行的线程进行调度的方法。计算机系统(例如,计算机100)可以包括具有第一和第二内核的多处理器、操作系统、和/或用于存储数据的存储器组。方法可以包括:测量存储器组的温度;以及如果存储器组的温度超过预定温度,确定线程是否包括对于存储器组中存储的数据的请求。方法可以包括:当确定线程包括对于数据的请求时,减慢线程的执行。
在其他示例中,描述了对计算机系统中运行的线程进行调度的方法,其中计算机系统(例如,计算机100)可以包括具有第一和第二内核的多处理器、操作系统、和用于存储数据的第一和第二存储器组。方法可以包括:测量第一存储器组的第一温度和第二存储器组的第二温度,并确定第一和第二存储器组中任何一个的温度是否超过预定温度。方法可以包括:当确定线程包括对于温度超过预定温度的存储器组中存储的数据的请求时,减慢线程的执行。
在其他示例中,描述了对计算机系统中运行的线程进行调度的方法,其中计算机系统(例如,计算机100)可以包括具有第一和第二内核的多处理器、操作系统、和用于存储数据的存储器组。存储器组的温度可以超过预定温度。方法可以包括使用操作系统来减慢线程的执行。
图2示出了根据本公开至少一些实施例布置的由操作系统执行应用程序。如图2所示,操作系统140可以执行来自驱动130的应用程序150。操作系统140和/或应用程序150可以包括用于使计算机100执行图4所指定的功能和/或操作的程序指令。应用程序150可以是可由多处理器111中的操作系统140执行的任何应用、程序、程序部分或线程。应用程序150可以使用存储器控制器210将数据230加载到存储器120中以及从存储器120存取数据。应用程序150可以布置为运行多个子应用调用的线程220,以完成任务,例如使用一个或多个请求226向存储器120的存储器组122加载数据230和从存储器120的存储器组122存取数据230。线程220可以由应用程序150执行。应用程序150可以布置为按照应用程序的需求将任务的执行划分成多个线程220来完成该任务。例如,如果应用程序150是针对具有多页的文档的word处理程序,并且应用程序150配置为完成每页文档的拼写检查任务,则应用程序150可以布置为将文档拼写检查任务划分成多个线程220,使得每个线程220可以对文档的一部分进行拼写检查。可以将每个线程220发送给多处理器111以便执行。当在多处理器111内执行时,每个线程220可以产生对存储器120内数据230的请求226。可以将请求226发送至存储器控制器210,存储器控制器210可以对请求226进行组织,使得多处理器111可以配置为高效操作。
在一些实施例中,如图2所示,多处理器111可以包括可以同时执行多于一个线程220的处理器。多处理器111可以包括称作内核412和512的多个处理器,或者包括称为多线程处理器的可以同时运行多个线程220的单个处理器(只有412和512之一)。图2示出了包括两个内核412和512的示例多处理器111,但是不限于任何具体的内核数目。术语“内核”可以用在本文中指可以处理单个线程的任何装置,并且可以指可以处理单个线程的处理器或处理器内的一部分。多线程处理器可以指具有多个内核的处理器。包括多个处理器的计算机100在本文中可以称为具有多个内核的计算机100。还存在温度传感器700,例如热电偶或液体温度计,用于测量存储器组122的温度。
图3示出了根据本公开至少一些实施例的将应用程序划分成线程的示意表示,其中线程可以发布发送给存储器控制器的请求。如图3所示,应用150可以划分成多个线程220a-220n,其中n可以表示线程220的数目,并且每个线程可以执行应用150的任务,并可以在例如图2的多处理器111上执行每个线程。多处理器可以配置为从应用程序150单独地或同时接收并执行多个线程220a-220n。在多处理器上执行的每个线程220可以与每个其他线程220相独立地执行,并且可以发布对于存储器120中存储的数据230的多个请求220a1-220no,其中第一索引(a...n)可以表示与请求226关联的线程220,第二索引(1...o)可以表示与具体线程220关联的请求226的数目。
每个线程220可以发布对于存储器120中存储的数据230的请求226,在一个示例中,请求226是对于存储器120内存储器组122a-122m中存储的数据230的请求,其中索引(a,b...m)可以表示存储器组122的数目。存储器120可以包括多个存储器组122a到122m,多个存储器组122a到122m可以配置为如果多个未决存储器请求226要求来自不同存储器组的数据230,则允许这些请求226并行进行。由此,在接收到对于数据230的请求226时,存储器控制器210可以同时访问第一存储器组122a和第二存储器122b。
每个存储器组122可以是二维阵列,包括列C1到Ci以及行R1到Rj,其中索引(1...i)可以表示列数,索引(1...j)可以表示行数。行可以在连续存储位置中存储数据,并且大小可以例如是近似1-2千字节(KB)。可以从最多包含一行的行缓冲器RB访问存储器组122中的数据230。在一个示例中,每个存储器组122可以包含一个行缓冲器RB。对每个数据230请求226进行服务所需的时间可以依据每个行缓冲器RB的状态,并且可以落入三个类别之一。第一类别可以是行命中,其中请求226针对每个行缓冲器RB中当前开启的行,这允许存储器控制器210只发布至相应存储器组122的读或写命令,造成组访问等待时间tCL。
第二类别可以是行关闭,其中行缓冲器RB可能没有开启的行,从而存储器控制器210需要首先发布开启所需行的激活命令,然后发布读/写命令,造成总等待时间tRCD+tCL,tRCD是针对激活命令的等待时间,tCL是针对读/写命令的等待时间。第三类别可以是行冲突,其中请求226针对与相应行缓冲器RB中的当前行不同的行,从而存储器控制器210需要首先发布预充电命令并开启所需行(通过激活该行),并发布针对所需行中数据的读/写命令。这些访问导致最大的总等待时间tRP+tRCD+tCL,tRP是针对行预充电(以关闭该行)的等待时间,tRCD是针对激活命令的等待时间,tCL是针对读/写命令的等待时间。
存储器控制器210可以布置为与存储器120和多处理器通信,并且可以位于沿系统的任何位置,包括在多处理器内。存储器控制器210可以包括存储器请求缓冲器211,存储器请求缓冲器211可以布置为在请求226等待被服务时缓冲请求226和数据230。存储器控制器210可以包括调度器212,调度器212可以配置为选择要被服务的下一请求226[6,2,3]。在一些实施例中,调度器212可以具有两级。当选择要被服务的下一请求226时,调度器212可以配置为考虑存储器组122a-122m的状态、将存储器控制器210与每个存储器组122连接的存储器总线214a-214m的状态、以及请求226的状态。如果针对请求226的存储器命令的调度不引起任何资源(例如存储器组122a-122m和地址/数据/系统总线)冲突,并且不违反任何存储器时序制约,则调度器212可以调度该针对请求226的存储器命令。可以认为不引起任何冲突的存储器命令准备好了。
在一些实施例中,如图1、2和3所示,计算机100可以包括多处理器110或111、以及存储器组122,多处理器可以包括多个内核412和512。
图4示出了根据本公开的至少一些实施例的流程图。如图所示,为防止存储器组过热或最小化功率使用,可以使用线程调度算法600,由操作系统或应用程序来调度线程。可以在框601发起线程调度算法600。线程调度算法600可以由操作系统或应用程序发起。
一旦发起线程调度算法600,可以在框602测量存储器组的温度。可以使用测量温度的远程传感器在存储器组上测量温度,或者使用测量温度的嵌入式传感器在存储器组内测量温度。传感器可以是任何温度传感器,例如热电偶或液体温度计。线程调度算法600可以布置为在框604确定测量的温度是否超过预定温度。
预定温度可以是如下温度:超过该温度,存储器组无法可靠地工作,或者超过该温度,会发生存储器组的热损坏;在超过该预定温度的温度下操作存储器组并从而操作存储器,对存储器和存储器组有害,并会降低存储器组内存储的数据的可靠性。备选地,该预定温度可以是存储器组可靠地工作的最高温度。当最小化功率使用时,可以由用户设定该预定温度,或者可以由用户、应用程序或操作系统根据制造商预先确定的滑尺来选择该预定温度,例如,该滑尺可以指示多种功率使用水平。
如果测量的温度未超过预定温度,则线程调度算法600可以从框604返回到框602。如果存储器组的温度超过预定温度,线程调度算法600可以从框604前进到框606。在框606,线程调度算法600可以确定线程是否包括对于存储器组中数据的请求。如果确定线程包括对于存储器组中数据的请求,并且存储器组的温度超过预定温度,则线程调度算法600可以在框608减慢线程的执行。如果线程不包括对于存储器组中数据的请求,则线程调度算法600可以在框610结束。
线程调度算法600可以按照多种方式来减慢线程的执行。在一些实施例中,第一和第二内核412,512(图2)可以布置为执行第一和第二任务集合。每个任务集合可以包括单个线程或多个线程。线程调度算法600可以配置为通过确定第一和第二任务集合中哪个任务集合预期可以首先完成,并将线程调度为在执行预期不会首先完成的任务集合的内核上运行,来减慢线程的执行。
在一些实施例中,线程调度算法600可以配置为通过降低线程执行的优先级,来减慢线程的执行。例如,操作系统典型地向每个线程分配具有对应于较高优先级的较大值的优先级值,例如值1-5或1-100;优先级越高,内核时间中专用于执行该线程的部分就越大。例如,优先级值的降低量可以是优先级值的一部分,例如大致1%到99%,包括优先级值的大致10%、20%、30%、40%、50%、60%、70%、80%和90%。备选地,可以将优先级值降低单个优先级值单位,或者可以将优先级值降低到最小优先级值。
在一些实施例中,线程调度算法600可以配置为通过对调度线程在内核上运行进行延迟,例如,通过对调度线程在第一和第二内核412,512(图2)之一上运行进行延迟,并在该延迟之后调度线程在第一和第二内核412,512(图2)之一上运行,来减慢线程的执行。延迟量例如可以是线程执行所花费的标称时间的一部分,例如大致1%到99%,包括大致10%、20%、30%、40%、50%、60%、70%、80%和90%。备选地,延迟量可以是线程执行所花费的标称时间的倍数,例如线程执行所花费的标称时间的1到1000倍,包括线程执行所花费的标称时间的大致2、5、10、15、20、50、100、200、500、600、700、800和900倍。
在一些实施例中,一旦减慢了线程执行,线程调度算法600可以配置为再测量存储器组的温度,例如通过再次开始线程调度算法600。如果存储器组的温度低于预定温度,线程调度算法600可以配置为在内核中调度线程,而不减慢线程的执行。
在多个实施例中,公开的方法可以实现为与计算机系统一起使用的计算机程序产品。这种实现可以包括计算机指令序列,该计算机指令可以固定在有形介质上,例如在计算机可读介质(例如,软盘、CD-ROM、ROM或硬盘)上,或者是经由调制解调器或其他接口设备(例如通过介质连接至网络的通信适配器)可传输至计算机系统的。介质可以是有形介质(例如光或模拟通信线路),或者以无线技术(例如,微波、红外线或其他传输技术)实现的介质。计算机指令序列具体体现了在前相对于系统描述的全部功能性或其中一部分。本领域技术人员应该理解,这种计算机程序可以多种编程语言来编写,以与许多计算机架构或操作系统一起使用。此外,这种指令可以存储在任何存储器设备中,例如半导体、磁、光或其他存储器设备,并且可以使用任何通信技术来传输,例如光、红外线、微波或其他传输技术。预期的是这种计算机程序产品可以作为可移除介质连同印刷或电子的文档(例如,收缩包装的软件)一起分发,预加载到计算机系统(例如,系统上ROM或硬盘),或者通过网络(例如,互联网或万维网)从服务器或电子公告板分发。当然,所公开的主题的一些实施例可以实现为软件(例如,计算机程序产品)和硬件的组合。所公开的主题的其他实施例可以完全实现为硬件或完全实现为软件(例如,计算机程序产品)。
本公开所述的主题有时说明不同部件包含在不同的其他部件内或者不同部件与不同的其他部件相连。应当理解,这样描述的架构只是示例,事实上可以实现许多能够实现相同功能的其他架构。在概念上,有效地“关联”用以实现相同功能的部件的任意设置,从而实现所需功能。因此,这里组合实现具体功能的任意两个部件可以被视为彼此“关联”从而实现所需功能,而无论架构或中间部件如何。同样,任意两个如此关联的部件也可以看作是彼此“可操作地连接”或“可操作地耦合”以实现所需功能,且能够如此关联的任意两个部件也可以被视为彼此“能可操作地耦合”以实现所需功能。能可操作地耦合的具体示例包括但不限于物理上可配对和/或物理上交互的部件,和/或无线交互和/或可无线交互的部件,和/或逻辑交互和/或可逻辑交互的部件。
至于本文中任何关于多数和/或单数术语的使用,本领域技术人员可以从多数形式转换为单数形式,和/或从单数形式转换为多数形式,以适合具体环境和/或应用。为清楚起见,在此明确声明多种单数/多数置换。
本领域技术人员应当理解,一般而言,所使用的术语,特别是所附权利要求中(例如,在所附权利要求的主体部分中)使用的术语,一般地应理解为“开放”术语(例如,术语“包括”应解释为“包括但不限于”,术语“具有”应解释为“至少具有”等)。本领域技术人员还应理解,如果意在所引入的权利要求中标明具体数目,则这种意图将在该权利要求中明确指出,而在没有这种明确标明的情况下,则不存在这种意图。例如,为帮助理解,所附权利要求可能使用了引导短语“至少一个”和“一个或多个”来引入权利要求中的特征。然而,这种短语的使用不应被解释为暗示着由不定冠词“一”或“一个”引入的权利要求特征将包含该特征的任意特定权利要求限制为仅包含一个该特征的实施例,即便是该权利要求既包括引导短语“一个或多个”或“至少一个”又包括不定冠词如“一”或“一个”(例如,“一”和/或“一个”应当被解释为意指“至少一个”或“一个或多个”);在使用定冠词来引入权利要求中的特征时,同样如此。另外,即使明确指出了所引入权利要求特征的具体数目,本领域技术人员应认识到,这种列举应解释为意指至少是所列数目(例如,不存在其他修饰语的短语“两个特征”意指至少两个该特征,或者两个或更多该特征)。另外,在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。
尽管描述了所公开主题的多个实施例,但是本领域技术人员会明白在本公开的范围内可以存在其他实施例和实现方式。因此,除了根据所附权利要求及其等同物之外,所公开的主题不受限制。
Claims (12)
1.一种对计算机系统中线程的运行进行调度的方法,包括:
接收执行所述线程的请求;
测量计算机系统中存储器组的温度;
确定存储器组的温度是否超过特定温度,并确定线程是否包括对于存储器组中存储的数据的请求;以及
响应于对所述存储器组的温度超过所述特定温度的确定,并响应于对所述线程包括所述存储器组中存储的数据的请求的确定,来减慢线程的执行,
其中减慢线程的执行包括:
确定在第一内核上执行的第一任务集合和在计算机系统的第二内核上执行的第二任务集合中的哪一个任务集合将首先完成,哪一个任务集合将在后完成,基于确定的将在后完成的任务集合,调度线程在第一内核和第二内核之一上运行,或
降低线程的优先级值,其中,所述优先级值越大,内核时间中专用于执行该线程的部分越大。
2.根据权利要求1所述的方法,其中降低优先级值包括:将优先级值降低到最小优先级值。
3.根据权利要求1所述的方法,其中降低优先级值包括:将优先级值降低1%到99%。
4.根据权利要求1所述的方法,其中:
进行调度以减慢线程的执行是由操作系统来执行的,
计算机系统包括操作性耦接至第一内核的计算机可读介质,以及
操作系统编码在计算机可读介质中。
5.根据权利要求1所述的方法,其中进行调度以减慢线程的执行包括:在延迟之后,调度线程在第一内核上运行。
6.根据权利要求1所述的方法,其中特定温度是存储器组可靠地工作的最高温度。
7.根据权利要求1所述的方法,其中:
由应用程序根据指示了功率使用水平的滑尺来选择特定温度,以及
计算机系统包括操作性耦接至第一内核的计算机可读介质,以及
所述应用程序编码在计算机可读介质中。
8.根据权利要求1所述的方法,其中由热电偶测量温度。
9.一种用于对计算机系统中线程的执行进行调度的装置,该装置包括:
接收执行所述线程的请求的单元;
测量所述计算机系统中存储器组的温度的单元;
确定存储器组的温度是否超过特定温度,并且确定线程是否包括对于存储器组中存储的数据的请求的单元;以及
响应于对所述存储器组的温度超过所述特定温度的确定,并响应于对所述线程包括所述存储器组中存储的数据的请求的确定,来减慢线程的执行的单元,
其中为了减慢线程的执行,所述减慢线程的执行的单元被配置为:
确定在第一内核上执行的第一任务集合和在计算机系统的第二内核上执行的第二任务集合中的哪一个任务集合将首先完成,哪一个任务集合将在后完成,基于确定的将在后完成的任务集合,调度线程在第一内核和第二内核之一上运行,或
降低线程的优先级值,其中,所述优先级值越大,内核时间中专用于执行该线程的部分越大。
10.根据权利要求9所述的装置,其中降低线程的优先级值的单元包括:将线程的优先级值降低1%到99%的单元。
11.根据权利要求9所述的装置,该装置还包括操作系统。
12.根据权利要求9所述的装置,其中进行调度以减慢线程的执行的单元包括:在延迟之后,调度线程在第一内核上运行的单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/507,952 | 2009-07-23 | ||
US12/507,952 US8819686B2 (en) | 2009-07-23 | 2009-07-23 | Scheduling threads on different processor cores based on memory temperature |
PCT/US2010/039939 WO2011011156A1 (en) | 2009-07-23 | 2010-06-25 | Thread throttling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102473137A CN102473137A (zh) | 2012-05-23 |
CN102473137B true CN102473137B (zh) | 2015-07-15 |
Family
ID=43498401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080032322.4A Expired - Fee Related CN102473137B (zh) | 2009-07-23 | 2010-06-25 | 线程节流 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8819686B2 (zh) |
JP (1) | JP5553392B2 (zh) |
KR (1) | KR101373947B1 (zh) |
CN (1) | CN102473137B (zh) |
WO (1) | WO2011011156A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006044476A2 (en) | 2004-10-12 | 2006-04-27 | Robert Vernon Vanman | Method of and system for mobile surveillance and event recording |
US20090213218A1 (en) | 2008-02-15 | 2009-08-27 | Andrew Cilia | System and method for multi-resolution storage of images |
US9286256B2 (en) * | 2009-09-28 | 2016-03-15 | Nvidia Corporation | Sharing data crossbar for reads and writes in a data cache |
US8548639B2 (en) * | 2010-07-15 | 2013-10-01 | Seagate Technology Llc | Temperature monitoring systems and methods |
US8719828B2 (en) * | 2011-10-14 | 2014-05-06 | Intel Corporation | Method, apparatus, and system for adaptive thread scheduling in transactional memory systems |
JP6041610B2 (ja) | 2012-10-02 | 2016-12-14 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体 |
US20140188302A1 (en) * | 2012-12-28 | 2014-07-03 | Vasudevan Srinivasan | Priority based intelligent platform passive thermal management |
KR20150050135A (ko) | 2013-10-31 | 2015-05-08 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법 |
KR101538458B1 (ko) * | 2014-01-03 | 2015-07-23 | 연세대학교 산학협력단 | 3차원 매니코어 프로세서를 위한 전압섬 형성 방법 |
US9886326B2 (en) * | 2014-02-13 | 2018-02-06 | Advanced Micro Devices, Inc. | Thermally-aware process scheduling |
US9557797B2 (en) | 2014-05-20 | 2017-01-31 | Qualcomm Incorporated | Algorithm for preferred core sequencing to maximize performance and reduce chip temperature and power |
US10095286B2 (en) | 2014-05-30 | 2018-10-09 | Apple Inc. | Thermally adaptive quality-of-service |
US10203746B2 (en) | 2014-05-30 | 2019-02-12 | Apple Inc. | Thermal mitigation using selective task modulation |
US9575537B2 (en) * | 2014-07-25 | 2017-02-21 | Intel Corporation | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states |
US9898071B2 (en) | 2014-11-20 | 2018-02-20 | Apple Inc. | Processor including multiple dissimilar processor cores |
US9958932B2 (en) | 2014-11-20 | 2018-05-01 | Apple Inc. | Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture |
US9928115B2 (en) | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
TWI564807B (zh) | 2015-11-16 | 2017-01-01 | 財團法人工業技術研究院 | 排程方法及應用其的處理裝置 |
US10341605B1 (en) | 2016-04-07 | 2019-07-02 | WatchGuard, Inc. | Systems and methods for multiple-resolution storage of media streams |
US10445099B2 (en) | 2016-04-19 | 2019-10-15 | Xiaolin Wang | Reconfigurable microprocessor hardware architecture |
US9910673B2 (en) * | 2016-04-19 | 2018-03-06 | Xiaolin Wang | Reconfigurable microprocessor hardware architecture |
US10133610B2 (en) | 2016-08-16 | 2018-11-20 | International Business Machines Corporation | System, method and recording medium for temperature-aware task scheduling |
US10459517B2 (en) * | 2017-03-31 | 2019-10-29 | Qualcomm Incorporated | System and methods for scheduling software tasks based on central processing unit power characteristics |
US10700954B2 (en) * | 2017-12-20 | 2020-06-30 | Advanced Micro Devices, Inc. | Scheduling memory bandwidth based on quality of service floorbackground |
US11568236B2 (en) | 2018-01-25 | 2023-01-31 | The Research Foundation For The State University Of New York | Framework and methods of diverse exploration for fast and safe policy improvement |
US10671453B1 (en) | 2019-04-29 | 2020-06-02 | EMC IP Holding Company LLC | Data storage system employing two-level scheduling of processing cores |
US11005970B2 (en) | 2019-07-24 | 2021-05-11 | EMC IP Holding Company LLC | Data storage system with processor scheduling using distributed peek-poller threads |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
US11635911B2 (en) | 2020-01-07 | 2023-04-25 | SK Hynix Inc. | Processing-in-memory (PIM) system and operating methods of the PIM system |
KR102291912B1 (ko) * | 2020-11-25 | 2021-08-23 | 오픈엣지테크놀로지 주식회사 | 메모리 컨트롤러 및 이를 이용한 메모리 열 쓰로틀링 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1993765A (zh) * | 2004-07-02 | 2007-07-04 | 高通股份有限公司 | 通过温度测量改善半导体存储装置中的动态刷新的设备和方法 |
CN101275977A (zh) * | 2007-03-22 | 2008-10-01 | 英特尔公司 | 半导体器件的功率估计 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2272085A (en) * | 1992-10-30 | 1994-05-04 | Tao Systems Ltd | Data processing system and operating system. |
US5480772A (en) * | 1993-02-03 | 1996-01-02 | Brandeis University | In vitro activation of a nucleus |
JPH09167141A (ja) * | 1995-12-18 | 1997-06-24 | Hitachi Ltd | 負荷分散制御方法 |
US6298370B1 (en) * | 1997-04-04 | 2001-10-02 | Texas Instruments Incorporated | Computer operating process allocating tasks between first and second processors at run time based upon current processor load |
US6021076A (en) * | 1998-07-16 | 2000-02-01 | Rambus Inc | Apparatus and method for thermal regulation in memory subsystems |
US6772352B1 (en) | 2000-09-29 | 2004-08-03 | Intel Corporation | Method and apparatus for reducing the rate of commands being issued if the rate exceeds a threshold which is based upon a temperature curve |
US7140016B2 (en) * | 2000-11-29 | 2006-11-21 | Texas Instruments Incorporated | Media accelerator quality of service |
JP3817449B2 (ja) * | 2001-07-30 | 2006-09-06 | 株式会社ルネサステクノロジ | データ処理装置 |
DE10313605B4 (de) * | 2003-03-26 | 2009-03-19 | Qimonda Ag | Vorrichtung und Verfahren zum Steuern mehrerer Speicherbausteine |
JP2004355435A (ja) | 2003-05-30 | 2004-12-16 | Canon Inc | アクセス調停装置 |
JP4213572B2 (ja) * | 2003-11-28 | 2009-01-21 | 株式会社東芝 | 電子機器およびプロセッサ速度制御方法 |
JP3870189B2 (ja) | 2003-12-15 | 2007-01-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリアクセスに関する設定を行うデータ転送レート制御装置、情報処理装置、制御方法、プログラム、及び記録媒体 |
US7984442B2 (en) * | 2004-01-29 | 2011-07-19 | Klingman Edwin E | Intelligent memory device multilevel ASCII interpreter |
JP3862715B2 (ja) * | 2004-06-01 | 2006-12-27 | 株式会社ソニー・コンピュータエンタテインメント | タスク管理方法、タスク管理装置、半導体集積回路、電子装置、およびタスク管理システム |
JP4197672B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
JP2006209525A (ja) * | 2005-01-28 | 2006-08-10 | Matsushita Electric Ind Co Ltd | メモリシステム |
JP4367856B2 (ja) * | 2005-07-07 | 2009-11-18 | レノボ シンガポール プライヴェート リミテッド | プロセス制御システム及びその制御方法 |
US7412353B2 (en) * | 2005-09-28 | 2008-08-12 | Intel Corporation | Reliable computing with a many-core processor |
US7590473B2 (en) * | 2006-02-16 | 2009-09-15 | Intel Corporation | Thermal management using an on-die thermal sensor |
US7596430B2 (en) * | 2006-05-03 | 2009-09-29 | International Business Machines Corporation | Selection of processor cores for optimal thermal performance |
US7406407B2 (en) * | 2006-06-01 | 2008-07-29 | Microsoft Corporation | Virtual machine for operating N-core application on M-core processor |
US20070294693A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Scheduling thread execution among a plurality of processors based on evaluation of memory access data |
US7493477B2 (en) * | 2006-06-30 | 2009-02-17 | Intel Corporation | Method and apparatus for disabling a processor core based on a number of executions of an application exceeding a threshold |
US7830690B2 (en) * | 2006-10-30 | 2010-11-09 | Intel Corporation | Memory module thermal management |
US7596714B2 (en) * | 2006-11-20 | 2009-09-29 | Intel Corporation | Methods and apparatus to manage throttling in computing environments |
US8001338B2 (en) * | 2007-08-21 | 2011-08-16 | Microsoft Corporation | Multi-level DRAM controller to manage access to DRAM |
US8332865B2 (en) * | 2008-02-21 | 2012-12-11 | International Business Machines Corporation | Adjunct processor load balancing |
US8161304B2 (en) * | 2009-01-20 | 2012-04-17 | Microsoft Corporation | Power management for large memory subsystems |
US8055805B2 (en) * | 2009-03-31 | 2011-11-08 | Intel Corporation | Opportunistic improvement of MMIO request handling based on target reporting of space requirements |
-
2009
- 2009-07-23 US US12/507,952 patent/US8819686B2/en not_active Expired - Fee Related
-
2010
- 2010-06-25 KR KR1020117030823A patent/KR101373947B1/ko active IP Right Grant
- 2010-06-25 WO PCT/US2010/039939 patent/WO2011011156A1/en active Application Filing
- 2010-06-25 JP JP2012521653A patent/JP5553392B2/ja not_active Expired - Fee Related
- 2010-06-25 CN CN201080032322.4A patent/CN102473137B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1993765A (zh) * | 2004-07-02 | 2007-07-04 | 高通股份有限公司 | 通过温度测量改善半导体存储装置中的动态刷新的设备和方法 |
CN101275977A (zh) * | 2007-03-22 | 2008-10-01 | 英特尔公司 | 半导体器件的功率估计 |
Also Published As
Publication number | Publication date |
---|---|
JP5553392B2 (ja) | 2014-07-16 |
US8819686B2 (en) | 2014-08-26 |
JP2012533828A (ja) | 2012-12-27 |
CN102473137A (zh) | 2012-05-23 |
KR20120017455A (ko) | 2012-02-28 |
WO2011011156A1 (en) | 2011-01-27 |
US20110023039A1 (en) | 2011-01-27 |
KR101373947B1 (ko) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102473137B (zh) | 线程节流 | |
CN102473109B (zh) | 利用批调度的线程调度方法及装置 | |
CN102725734B (zh) | 基于隔离的线程批调度方法 | |
CN102473110B (zh) | 基于内核和应用特性针对多处理器系统上运行的应用的内核选择 | |
US7546393B2 (en) | System for asynchronous DMA command completion notification wherein the DMA command comprising a tag belongs to a plurality of tag groups | |
KR102353782B1 (ko) | NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 | |
Paolieri et al. | An analyzable memory controller for hard real-time CMPs | |
CN100504790C (zh) | 用于使用处理任务调度实现热量管理的方法和设备 | |
CN102939596B (zh) | 用于多核处理器的多线程应用识别存储器调度方案 | |
KR101973731B1 (ko) | 버퍼 충만도에 기초한 캐시에 대한 프리페치 | |
US9417684B2 (en) | Mechanism for facilitating power and performance management of non-volatile memory in computing devices | |
US9183063B2 (en) | Power-constrained compiler code generation and scheduling of work in a heterogeneous processing system | |
CN102334103A (zh) | 具有对于多个虚拟服务器间的共享资源分配的软件控制的微处理器 | |
JP2008508586A (ja) | 非対称型異種混合マルチプロセッサ環境(asymmetricheterogeneousmultiprocessorenvironment)におけるメモリバリア要素(Primitive) | |
CN101127015A (zh) | 控制处理环境的数据传输的方法和系统 | |
CN102063405B (zh) | 多处理器计算机系统及操作方法 | |
US10345884B2 (en) | Mechanism to provide workload and configuration-aware deterministic performance for microprocessors | |
CN102484130A (zh) | 存储器请求调度的应用程序选择 | |
WO2014031384A1 (en) | Power management of multiple compute units sharing a cache | |
EP4060505A1 (en) | Techniques for near data acceleration for a multi-core architecture | |
JP5932261B2 (ja) | メモリ制御装置、メモリ制御方法 | |
CN101192204A (zh) | 数据存取方法 | |
Fang et al. | Improving the performance of heterogeneous multi-core processors by modifying the cache coherence protocol | |
Ramasamy | Design and implementation of non-volatile memory express | |
Becker | Efficient Resource Management for Many-Core based Industrial Real-Time Systems |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150715 Termination date: 20200625 |
|
CF01 | Termination of patent right due to non-payment of annual fee |