CN101238425B - 使用低功率虚拟线程的软件指定的电源性能管理装置和方法 - Google Patents

使用低功率虚拟线程的软件指定的电源性能管理装置和方法 Download PDF

Info

Publication number
CN101238425B
CN101238425B CN2006800167751A CN200680016775A CN101238425B CN 101238425 B CN101238425 B CN 101238425B CN 2006800167751 A CN2006800167751 A CN 2006800167751A CN 200680016775 A CN200680016775 A CN 200680016775A CN 101238425 B CN101238425 B CN 101238425B
Authority
CN
China
Prior art keywords
thread
processor
instruction
scheduler
policy manager
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
Application number
CN2006800167751A
Other languages
English (en)
Other versions
CN101238425A (zh
Inventor
达伦·M·约纳斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Arm Overseas Finance Co ltd
Overpass Bridge Co ltd
Original Assignee
MIPS Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MIPS Technologies Inc filed Critical MIPS Technologies Inc
Publication of CN101238425A publication Critical patent/CN101238425A/zh
Application granted granted Critical
Publication of CN101238425B publication Critical patent/CN101238425B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

处理器包括指定电源性能度量的软件控制模块。策略管理器响应所述软件控制模块。分派调度器响应所述策略管理器,按照所述电源性能度量运行所述处理器。

Description

使用低功率虚拟线程的软件指定的电源性能管理装置和方法
技术领域
一般说来,本发明涉及多线程处理器中的电源管理。更确切地说,本发明涉及采用策略管理器和分派调度器对多线程处理器的软件控制。
背景技术
微处理器设计者采用许多技术提高微处理器的性能。大多数微处理器运行时使用以固定频率行进的时钟信号。在每个时钟周期,微处理器的若干电路都执行其各自功能。微处理器性能的一种度量是执行某程序或程序集合所需的时间。根据这个观点,微处理器的性能是其时钟频率、执行指令所需的时钟周期的平均数目(换言之,每时钟周期所执行指令的平均数目)以及所述程序或程序集合中执行的指令的数目的函数。
半导体科学家和工程师正不断地使微处理器以更高时钟频率运行成为可能,主要通过减小晶体管尺寸而导致更快的切换时间。所执行指令的数目很大程度上由程序要执行的任务所确定,尽管它也受到微处理器指令集架构的影响。若干架构和组构概念比如并行性已经实现了性能的大幅提升。
一种已经改进了微处理器每时钟周期指令数以及时钟频率的并行性概念是流水线技术,它在微处理器流水线阶段内重叠了多条指令的执行。在理想情况下,每时钟周期一条指令在流水线内下移至一个新阶段,它执行该指令的不同功能。因此,虽然完成每条单独指令需要多个时钟周期,但是由于若干单独指令的多个周期重叠,所以减少了每条指令的平均时钟周期数。流水线技术对性能的改进可以实现到程序中这些指令允许它达到的程度,换言之,达到指令执行时不依赖于其前驱站的程度,所以能够与其前驱站并行地执行,这通常称为指令级并行。由当代微处理器使用的指令级并行中的另一种方法是对每时钟周期的执行发布多条指令。这些微处理器通常称为超标量微处理器。
以上讨论属于单指令级的并行。不过,通过开发单指令级并行可以实现的性能改进是有限的。由指令级并行有限所强加的多种约束和其他性能约束问题近来已经使在指令块、序列或流的层次中开发并行性重新受到关注,这通常称为线程级并行。线程只不过是程序指令的序列或流。多线程微处理器根据指示取回和发出多种线程指令的某种调度策略并发地执行多个线程,比如交错的、阻塞的或联立的多线程。典型情况下,多线程微处理器允许多个线程以并发的方式共享微处理器的若干功能单元(如指令的取回和译码单元、高速缓存、分支预测单元以及加载/存储、整数、浮点、SIMD等执行单元)。不过,多线程微处理器包括多个资源组即语境以存储每个线程的唯一状态,比如多个程序计数器和通用寄存器组,以易于能够在若干线程之间快速切换以便取回指令和发出指令。
由多线程微处理器涉及的性能约束问题的一个实例是,典型情况下高速缓存丢失具有相对长的等待时间。当代基于微处理器的计算机系统的存储器访问时间通常比高速缓存命中访问时间长一至两个数量级之间。依赖于在高速缓存中所没有数据的指令停滞在流水线中,等待来自存储器的数据。因此,单线程微处理器的某些或全部流水线阶段可能是空转,在许多时钟周期都不执行有用的工作。多线程微处理器通过在存储器取数的等待时间期间从其他线程中发布指令可以解决这个问题,从而使流水线阶段能够前进,执行有用的工作,有些类似于操作系统在缺页时执行任务切换,但是粒度级别比其更细。由多线程微处理器涉及的性能约束问题的其他实例是由于数据依赖;或者由于等待时间长的指令,比如除指令、浮点指令等;或者由于有限的硬件资源冲突的流水线停滞和与其相伴的空转周期。此外,多线程微处理器从其他线程向流水线阶段(否则可能会空转)发布指令的能力可以显著地减少包括这些线程的程序或程序集合所需要的执行时间。
通过多线程和其他技术实现的微处理器性能提高导致了微处理器电源消耗的增加。电源消耗在许多应用中是关键因素。所以,电源管理技术日益受到重视。现有技术集中在电压和频率调节。许多这些技术都是处理器固有的,所以用户无法以简单的方式调优。
所以,在多线程处理器中非常需要提供改进的电源管理技术。理想情况下,这样的技术将允许通过软件界面可调的电源管理,从而使用户便于控制电源管理。理想情况下,这样的技术将允许通过控制各个线程进行电源管理,否则提供与各个线程相关联的电源管理的可见性和控制。
发明内容
本发明包括具有软件控制模块的处理器,软件控制模块指定电源性能度量。策略管理器响应所述软件控制模块。分派调度器响应所述策略管理器,按照所述电源性能度量运行所述处理器。
本发明还包括具有软件控制模块的处理器,软件控制模块指定电源性能度量。分支线程调度器包括内部处理器核心组件和与软件控制模块直接通信的外部处理器核心组件。所述分支线程调度器按照电源性能度量运行所述处理器。
本发明还包括运行处理器的方法。通过软件控制指定电源性能度量。在外部处理器核心组件响应所述电源性能度量。利用响应所述外部处理器核心组件的内部处理器核心组件实施所述电源性能度量。
附图说明
与连同附图阅读以下详细说明,将会更全面地理解本发明,其中:
图1展示了根据本发明实施例可以使用的多线程微处理器;
图2展示了根据本发明实施例所采用的分支调度器,包括分派调度器和策略管理器;
图3展示了可以与图2的分支调度器使用的分派调度器;
图4展示了与图3的分派调度器相关联的若干处理操作;
图5展示了可以与图2的分支调度器使用的策略管理器;
图6展示了与图5的策略管理器相关联的若干处理操作。
相同的附图标记是指贯穿几幅附图的对应部分。
具体实施方式
图1展示了根据本发明实施例的流水线多线程处理器100。这个示范多线程微处理器100用于公开本发明的若干概念。应当理解,本发明的概念也适用于替代的多线程微处理器设计。
微处理器100被配置为并发地执行多个线程。线程—本文也称为执行线程的线程或指令流—包括程序指令的序列或流。这些线程可以来自微处理器100上执行的不同程序,也可以是来自微处理器上执行的同一程序不同部分的指令流,或者是其组合。
每个线程都具有关联的线程语境(TC)。线程语境包括若干存储单元比如若干寄存器或若干锁存器;以及/或者微处理器100若干存储单元中若干位的集合,后者描述了线程执行的状态。换言之,所述线程语境描述了其各自线程的状态,对该线程来说它是唯一的,而不是与微处理器100上并发执行的其他执行线程共享的状态。通过在线程语境中存储每个线程的状态,微处理器100被配置为在线程之间快速切换以取回和发出指令。在一个实施例中,每个线程语境包括程序计数器(PC)、通用寄存器组和若干线程控制寄存器,它们包括在微处理器100的若干寄存器列112中。
微处理器100根据命令多个线程取回指令和发出指令的调度策略并发地执行这些线程。本文介绍了从多个线程调度分派指令的多个实施例。本文可交换地使用术语指令“发出”和“分派”。多线程微处理器100允许多个线程以并发的方式共享微处理器100的若干功能单元(如指令的取回和译码单元、高速缓存、分支预测单元以及执行单元,比如加载/存储、整数、浮点、SIMD和其他执行单元)。
微处理器100包括指令高速缓存102,用于高速缓存从包括微处理器100的系统的系统存储器取回的程序指令—确切地说,不同线程的指令。微处理器100还包括指令抓取程序104,即指令取回流水线104,连接为从指令高速缓存102和/或系统存储器并发地取回多个线程的若干,并送入连接到指令抓取程序104的指令/滑动缓冲区106中。在一个实施例中,指令取回流水线104包括四阶段流水线。指令/滑动缓冲区106将若干指令提供给指令调度器108,即线程调度程序108。在一个实施例中,每个线程都具有自己的指令/滑动缓冲区106。在每个时钟周期,调度器108都从线程之一选择指令并发出该指令,以便在微处理器100流水线的执行阶段内执行。寄存器列112连接到调度器108并向执行这些指令的执行单元114提供指令操作数。微处理器100还包括连接到执行单元114的数据高速缓存118。执行单元114可以包括但是不限于整数执行单元、浮点执行单元、SIMD执行单元、加载/存储单元和分支执行单元。
在一个实施例中,整数执行单元流水线包括四个阶段:访问寄存器列112的寄存器列(RF)访问阶段、地址产生(AG)阶段、执行(EX)阶段和存储器第二(MS)阶段。在EX阶段,运行了简单的ALU运算(比如加、减、移位等)。另外,数据高速缓存118是两个周期的高速缓存,在EX阶段中的第一个时钟周期期间接受访问,而且在MS阶段中的第二个时钟周期期间也接受访问。每个线程的语境都包括其自己的寄存器列112,而每个寄存器列都包括其自己的程序计数器、通用寄存器组和若干线程控制寄存器。指令抓取程序104根据每个线程语境的程序计数器值取回若干线程的若干指令。应当指出,某些执行单元114可以被流水线化,而某些可以大范围进行。微处理器100的流水线还包括写回阶段116,它将指令结果写回到寄存器列112中。在一个实施例中,微处理器100的流水线还包括连接在执行单元114和写回阶段116之间的异常解决阶段。
在一个实施例中,执行单元114产生与每个线程语境相关联的TC指令提交信号124,以表明所指定线程的指令已经被提交以便执行。如果保证指令不会被微处理器100的流水线清除,而是被提交为最终完成执行,该指令就已经被提交以便执行,它产生结果并更新微处理器100的架构状态。在一个实施例中,每时钟周期可以提交多条指令,而TC指令提交信号124表明了该时钟周期对线程语境所提交指令的数目。TC指令提交信号124提供给调度器108。调度器108响应TC指令提交信号124,更新该线程的虚拟水位指示器,调度器108的线程调度策略使用它完成所需要的服务质量,如以下介绍。
TC指令提交信号124也提供给各自的指令/滑动缓冲区106。指令/滑动缓冲区106响应TC指令提交信号124,更新指针以便从缓冲区106中有效移出该指令。在常规的微处理器中,从常规指令缓冲区移出若干指令并发布以便执行。不过,指令/滑动缓冲区106在指令已经发布用于执行之后还会继续存储它们。在执行单元114通过各自的TC指令提交信号124表明指令已经被提交用于执行后,才从指令/滑动缓冲区106移出这些指令。
调度器108向执行单元114提供可运行的TC信号132。可运行的TC信号132指定哪些线程语境是可运行的,即调度器108当前可以从哪些线程语境发出指令。在一个实施例中,如果某线程语境是活动的并且未被其他条件(比如被暂停、等待、挂起或退让)所阻塞,该线程语境就是可运行的。确切地说,执行单元114使用可运行的TC信号132判断停滞的线程语境是不是唯一的可运行线程语境,以便决定是否清除所述停滞线程语境的若干指令。
执行单元114向调度器108提供停滞事件信号126。停滞事件信号126指明由于具体停滞事件信号126所指定的原因,在执行单元114中的某指令已经停滞,或者可能已经停滞。另外,停滞事件信号126包括识别所述停滞指令的线程语境的标识符。执行单元114还向调度器108提供解除停滞事件信号128。调度器108响应停滞事件信号126,停止发布用于停滞线程语境的指令,直到发出了相关的解除停滞事件信号128。
可能使执行单元114响应某指令而停滞的事件实例包括但不限于下列各项。第一,所述指令可能依赖于不可得到的数据,比如加载指令在数据高速缓存118中未找到的数据。例如,某加法指令可能会指定不可得到的操作数,因为在先加载指令在数据高速缓存118中未找到并且所述操作数尚未从系统存储器中取回。第二,所述指令可能依赖于长时间运行指令产生的数据,比如除法或其他长时间算术指令,或者从例如协处理器寄存器中移出数值的指令。
第三,所述指令可能会因为硬件资源有限而引发冲突。例如,在一个实施例中,微处理器100包括单一除法器电路。如果所述除法器已经在执行除法指令,那么第二条除法指令必须停滞,等待第一条除法指令完成。作为另一个实例,在一个实施例中,微处理器100的指令集包括一组指令,用于进行指令高速缓存102的低级管理操作。如果某指令高速缓存管理指令已经在执行,那么第二条指令高速缓存管理指令必须停滞,等待第一条完成。作为另一个实例,在一个实施例中,微处理器100包括一个加载队列,它包含相对少量的时间片,用于存储运行中数据高速缓存118的替换数值。当加载指令在数据高速缓存118中未找到数据时,就分配一个加载队列入口并启动处理器总线事务处理,从系统存储器中获取未找到的数据。当所述数据返回到总线上时,它被存储到加载队列中并在随后写入到数据高速缓存118中。当总线事务处理完成并将全部数据写入到数据高速缓存118后,就释放所述加载队列入口。不过,当加载队列被占满时,加载未成会引起流水线停滞。
第四,所述指令可能跟随EHB指令。在一个实施例中,微处理器100的指令集包括EHB(执行冒险屏蔽)指令,软件使用它停止指令的执行,直到已经清除了全部的执行冒险。典型情况下,跟随EHB指令的若干指令将在流水线中停滞,直到收回了EHB指令。
第五,所述指令可能跟随其地址为同一线程语境中的线程间通信(ITC)空间的加载或存储指令。在一个实施例中,微处理器100支持向包括同步存储器的ITC空间进行加载和存储,它可能阻塞任意长的时间,导致跟随ITC加载或存储之后的同一线程语境中的指令停滞。
相反,解除停滞事件信号128的实例包括但不限于下列各项:在数据高速缓存118中未找到的加载数据已返回;释放了有限的硬件资源,比如除法器电路、指令高速缓存102或加载队列时间片;完成了EHB指令、长时间运行指令或对线程间通信(ITC)空间的加载/存储指令。
执行单元114还产生与每个线程语境相关联的TC清除信号122,以指示在流水线执行部分(即在调度器108下面的流水线部分)中所指定线程的指令已经被清除或已经无效。在一个实施例中,清除指令或使指令无效包括清除与流水线中指令相关联的有效位,这就阻止了流水线响应该指令的结果而更新微处理器100的架构状态。执行单元114可以产生TC清除信号122的一个前提是当线程的指令将在执行单元114中停滞之时,如上所述。清除指令或使指令无效消除了指令将被停滞的前提,因为产生的用于指令的结果将被忽略不计,因此不必正确。优选情况下,通过清除停滞的指令,其他线程的指令可以继续执行并利用执行流水线的执行带宽,从而潜在地提高了微处理器100的整体性能,如以下更详细的介绍。在一个实施例中,仅仅清除停滞线程的指令,优选情况下,这可以减少由清除所引入的流水线气泡的数目,并且在某些情况下,可以仅仅导致与停滞指令相关联的一个气泡,取决于来自执行单元114流水线中现有多种线程的指令组成。在一个实施例中,TC清除信号122指明已经清除了所述线程语境的全部未提交指令。在另一个实施例中,执行单元114可以不清除执行单元114中现有的全部未提交指令,也就是仅仅清除停滞指令和停滞线程语境的任何更新的指令,而不清除线程语境中比停滞指令更旧的未提交指令。在这个实施例中,TC清除信号122还指明了被执行单元114所清除的许多指令。
TC清除信号122由执行单元114向它们各自的指令/滑动缓冲区106提供。所述指令/滑动缓冲区106使用TC清除信号122重算缓冲区106中的指令状态。因为所述指令/滑动缓冲区106继续存储指令,直到它们已经被提交不再被清除,所以被清除的任何指令随后都可以从所述指令/滑动缓冲区106重新发布,而不必从指令高速缓存102再次取回。这样做的优点是潜在地减少与从执行流水线清除停滞指令使来自其他线程的指令能够运行相关联的损失。减少不得不再次取回指令的似然性正在变得日益重要,因为指令取回的时间似乎在增加。这是因为除了其他因素以外,变得更常见的是指令高速缓存访问所需要的时钟周期多于更老的微处理器设计,主要由于处理器时钟周期缩短。因此,与更早的设计相比,与指令再次取回相关联的损失可能是多一个、两个或多个时钟周期。
现在参考图2,显示的框图展示了根据本发明一个实施例,图1的微处理器100内的调度器108,其中调度器108被分为二支。分支的调度器108包括分派调度器(DS)602部分和策略管理器(PM)604部分。分派调度器602部分包括在微处理器100的处理器核606之内;而策略管理器604部分却包括在处理器核606之外。处理器核606是微处理器100的一部分,客户无法进行定制;而策略管理器604却可由客户定制。在一个实施例中,处理器核606是可同步的核,也称为软核。可同步核的设计能够缩减为快捷地使用自动工具的可制造形式,这些工具通常称为合成工具。
处理器核606向策略管理器604提供了包括多个信号的接口628。在一个实施例中,对分派调度器602的输入和从分派调度器602的输出经过寄存,以方便核外的策略管理器604的逻辑能够与处理器核606接口,其方式为减轻由分支的调度器以其他方式可能引入的某些计时问题。不仅如此,接口628易于客户理解,它使调度策略的策略管理器604易于设计。
在以下的表1中,显示了根据一个实施例包括策略管理器接口628的多种信号。表1指定信号名、信号相对策略管理器604的方向以及每个信号的简短说明。在表1介绍的实施例中,微处理器100包括九个线程语境,用于存储与多达九个执行线程相关联的状态。不仅如此,所述实施例使微处理器100能够被配置为多达两个虚拟处理单元(VPE)。在一个实施例中,微处理器100实质上符合MIPS32或MIPS64的指令集架构(ISA),并且包括控制协处理器0,在表中称为CP0,它包括若干线程控制寄存器,并且实质上符合在MIPS特许资源架构(PRA)和MIPS多线程应用程序特殊扩展(MT ASE)中指定的协处理器0。表1中所描述的若干信号中的几种用于访问CP0寄存器。
Figure 2006800167751A00800101
Figure 2006800167751A00800111
表1
现在将更详细地介绍表1中指定的策略管理器界面628的某些具体信号。策略管理器604通过PM_TC_priority 652的输出向分派调度器602指定各个线程语境的优先级。在一个实施例中,PM_TC_priority652包括两位,所以分派调度器602允许策略管理器604为线程语境指定四个不同优先级之一。策略管理器604通过在各自的PM_TC_block 654输出上产生真值,命令分派调度器602停止为线程语境发布指令。因此,策略管理器604可以通过PM_TC_priority 652的输出和PM_TC_block 654的输出影响分派调度器602如何为多个线程语境发布指令。
处理器核606向策略管理器604提供PM_gclk 658,它使得策略管理器604能够根据PM_gclk 658定期调节所述PM_TC_priority652。分派调度器602通过各自的PM_TC_state 642输入传递每个线程的语境传递。如表1所示,线程语境可以处于以下八种状态之一。待用:分派调度器602不能发布线程语境的指令,因为所述线程语境当前未与执行的线程相关联。活动:所述线程语境当前与执行的线程相关联,所以,如果不存在其他阻塞条件,分派调度器602可以发布用于执行的线程语境的指令。退让:分派调度器602不能发布执行的线程语境的指令,因为所述线程已经执行了YIELD指令,它使所述线程语境在指定的事件上被阻塞。暂停:分派调度器602不能发布执行的线程语境的指令,因为所述线程已经被自己或另一个线程所暂停。挂起:分派调度器602不能发布执行的线程语境的指令,因为所述线程执行了DMT或DVPE指令,或者因为微处理器100或VPE当前正在运行异常处理。DMT指令挂起VPE的多线程操作。DVPE指令挂起整个处理器100的多线程操作。等待ITC:分派调度器602不能发布执行的线程语境的指令,因为所述线程被阻塞,等待从所述线程执行的加载/存储指令所指定的线程间通信(ITC)空间中位置加载数据,或向该位置存储数据。由于WAIT而等待:分派调度器602不能发布执行的线程语境的指令,因为所述线程已经执行了WAIT指令,它使该线程语境被阻塞,直到中断已经发生。作为SRS使用:分派调度器602不能发布执行的线程语境的指令,因为所述线程语境没有并且无法与执行的线程相关联,原因是所述线程语境的寄存器组用于进行遮蔽寄存器组的操作。
分派调度器602向策略管理器604传达它已经通过各自的PM_TC_inst_issued 646输入为每个线程语境都发布了指令。执行单元114向策略管理器604传达它们已经通过各自的PM_TC_instr_committed 644输入,提交了线程语境的指令。在一个实施例中,PM_TC_instr_committed 644信号表明指令的执行已经完成了。在另一个实施例中,PM_TC_instr_committed 644信号表明保证所述指令不被清除,换言之,直到最终完成执行,但是可能尚未完成。突出点在于,PM_TC_instr_committed 644输入向策略管理器604提供了已执行指令的有关信息,而不仅仅是已分派指令(如由PM_TC_inst_issued输入646所传达)的有关信息,由于某些指令可能是推测地分派的并且永远不会完成,它们可能是不同的。这对策略管理器604可能是重要的特征,因为应用程序中的某些线程可能需要特定的服务质量。在一个实施例中,PM_TC_instr_committed信号644是TC_instr_committed信号124的寄存版本。因此,处理器核606通过PM_TC_inst_issued 646、PM_TC_instr_committed 644和PM_TC_state 642输入,为多个线程语境和线程语境的状态提供了有关指令发布和执行的反馈。因此,所述策略管理器接收多种多样信息,允许它跟踪电源管理操作。确切地说,如以下讨论,可以由策略管理器以便于电源管理操作的粒度方式跟踪电源管理线程的使用。
在一个实施例中,分派调度器602还向策略管理器604提供了衰减函数,它的目的是当应用程序线程语境不需要处理器的完全带宽时,使微处理器100能够节省电源,而不必实际上进入休眠。所述衰减函数运行时仿佛又有一个线程语境被调度。不过,当选中了衰减线程语境进行发布时,分派调度器602不发布指令。
因此,所述衰减线程语境可以被视为低功率的虚拟线程。衰减线程语境是低功率的虚拟线程意味着又有一个线程语境被调度,但是它实际上不被选中。换言之,所述分派调度程序指定,所述低功率虚拟线程的流水线位置所对应的流水线位置中不执行任何操作。例如,不执行ALU的运算,不加载数据,在所述低功率虚拟线程所对应的流水线位置处也不执行某种其他操作,从而节省了电源。实现这种电源节省时没有对电压和频率参数进行直接调制,而是通过运行所述低功率虚拟线程间接地影响电压和频率参数,与其他电源管理技术不同。所述低功率虚拟线程使得处理器能够降低其功率消耗而不必实际上进入休眠。
因此,通过策略管理器可以调用低功率虚拟线程,以方便电源管理任务。所述策略管理器具有对线程语境进行控制的机制。所以,这种新形式的线程—低功率虚拟线程允许所述策略管理器以现有的控制技术运行而完成电源控制。换言之,所述低功率虚拟线程提供的新工具能够连同与电源管理无关的现有控制技术一起使用。从而不需要分立的电源管理技术,比如电压和频率的调整操作。
如以下将讨论的图5所示,策略管理器604保存着EXC_LEVEL计数器(每VPE),其操作类似于以下介绍的TC_LEVEL 918计数器,只不过它使用RELAX_RATE进行加1,并且当衰减指令时间片完成时进行减1。在一个实施例中,所述微处理器100包括VPESchedule寄存器(每VPE),类似于使软件能够指定RELAX_RATE的TCSchedule寄存器902。所述衰减函数通过表1中指定的PM_vpe_relax_enable信号启用或禁用,而所述衰减线程语境的优先级通过PM_vpe_relax_priority信号指定。这些信号是软件可控制的。因此,图2所示的软件控制模块660可以用于创建电源性能度量和实施所述电源性能度量的相关联RELAX信号,如以下进一步的讨论。
在一个实施例中,分派调度器602还向策略管理器604提供了异常处理函数,它的目的是使异常处理线程语境能够使其自己的优先级独立于正常的线程语境。所述策略管理器保存着EXC_LEVEL计数器(每VPE),其作用类似于以下介绍的TC_LEVEL 918计数器,只不过它使用RELAX_RATE进行加1,并且当异常处理指令时间片完成时进行减1。当启用了异常处理模式并取得了VPE的异常处理时,那么所述VPE的线程语境将全部设置为异常处理优先级。在一个实施例中,软件通过VPESchedule寄存器指定EXC_RATE。异常处理函数通过表1指定的PM_vpe_exc_enable信号启用或禁用,而所述异常处理线程语境的优先级通过PM_vpe_exc_priority信号指定。
现在参考图3,其中的框图更详细地展示了图2的分派调度器602和与指令/滑动缓冲区106相关联的指令选择逻辑202。指令选择逻辑202包括由比较器714控制的若干多路复用器724的树。每个多路复用器724都从两个不同的线程语境接收指令206。每个多路复用器724也都接收与DS_TC_priority 208相关联的指令206。与每个多路复用器724相关联的比较器714也接收两个线程语境的DS_TC_priority信号对,并且控制其关联的复用器724选择具有最高DS_TC_priority 208值的指令206和DS_TC_priority 208。所选择的指令206和DS_TC_priority 208向树的下方传播,直到最后的复用器724选中了具有最高DS_TC_priority 208的所选择的指令204以便向执行流水线提供。
图3显示了分派调度器602的逻辑,即停滞指示器704,可发布指令逻辑708和循环逻辑712。在一个实施例中,停滞指示器704和可发布指令逻辑708在每个线程语境的分派调度器602内复制,为每个线程语境产生DS_TC_priority 208。相反,循环逻辑712对每个可能的PM_TC_priority 652只例示一次,并且为每个PM_TC_priority652都产生循环指示器。例如,在图3展示的实施例中,策略管理器604可以指定四种可能的PM_TC_priority 652之一;因此,循环逻辑712在分派调度器602中被例示了四次并产生了四个各自的循环指示器。
在一个实施例中,所述循环指示器对微处理器100的每线程包括一位。与其各自线程语境相关联的循环指示器位被提供为循环位748。如果循环位748为真,那么在目前具有相同的PM_TC_priority 652的其他线程语境当中,在循环模式中轮到所述线程语境接受发布。
可发布指令逻辑708从图1的执行单元114接收解除停滞事件信号128和停滞事件信号126,从图2的策略管理器604接收PM_TC_block 654信号,从指令/滑动缓冲区106接收空信号318以及接收TC状态742信号。在一个实施例中,TC状态742信号传达的信息类似于图2的PM_TC_state 642信号。可发布指令逻辑708响应识别线程语境的停滞事件信号126,设置停滞指示器704以标明被停滞的线程语境。可发布指令逻辑708也响应停滞事件126而存储状态,以记忆停滞的原因。反之,如果解除停滞事件128与停滞的原因有关,可发布指令逻辑708响应解除停滞事件信号128,清除停滞指示器704。可发布指令逻辑708响应其输入而产生可发布746信号。如果对所述线程语境由指令/滑动缓冲区106的读指针所指向的指令206是可发布的,则可发布746信号为真。在一个实施例中,如果所述TC状态信号742指明线程语境处于活动状态且未被其他条件(比如被暂停、等待、挂起或退让)所阻塞,停滞指示器704为假,以及PM_TC_block654和空318信号为假,则指令是可发布的。
所述可发布746位、所述PM_TC_priority 652位和所述循环位748组合以创建DS_TC_priority 208。在图3的实施例中,所述可发布位是最高位,所述循环位748是最低位,而所述PM_TC_priority652是中间两位。如图中可见,因为所述可发布746位是DS_TC_priority 208的最高位,所以不可发布指令的优先级将低于全部可发布指令的优先级。相反,所述循环位748仅仅用于在不止一个线程语境具有可发布指令且具有相同的最高PM_TC_priority 652时选择线程。
现在参考图4,显示的流程图展示了根据本发明图3的分派调度器602操作。流程从方框802开始。
在方框802,分派调度器602对每个PM_TC_priority 652初始化每个循环指示器。流程继续到方框804。
在方框804,分派调度器602对每个线程语境判断所述线程语境是否具有可发布指令206。换言之,可发布指令逻辑708为每个线程语境都产生可发布746信号上的值。在一个实施例中,仅仅在所述TC状态信号742指明线程语境处于活动状态且未被其他条件(比如被暂停、等待、挂起或退让)所阻塞,停滞指示器704为假,以及PM_TC_block 654和空318信号为假时,可发布指令逻辑708才产生可发布746信号上的真信号。流程继续到决策框806。
在决策框806,分派调度器602通过为每个线程语境测验可发布746信号,判断是否存在着任何具有可发布指令206的线程语境。如果不存在,流程返回方框804,直到至少一个线程语境具有可发布指令206;否则,流程继续到方框808。
在方框808,分派调度器602根据所述线程语境的可发布746位、所述线程语境的PM_TC_priority 652以及所述线程语境的PM_TC_priority 652的循环位748,为每个线程语境的指令206产生PM_TC_priority 652。流程继续到方框812。
在方框812,分派调度器602发布具有最高DS_TC_priority 208的指令206。换言之,分派调度器602从具有可发布指令并具有最高PM_TC_priority 652的线程语境发布指令。如果多个线程语境满足这条准则,分派调度器602从线程语境的PM_TC_priority 652的循环位748指明轮到其发布的线程语境发布指令。流程继续到方框814。
在方框814,所述循环逻辑712根据选中了哪个线程语境使其指令被发布的信息,更新PM_TC_priority 652的循环指示器。流程返回到方框804。
现在参考图5,显示的框图展示了根据本发明图2的策略管理器604和TCSchedule寄存器902。
微处理器100包括用于每个线程语境的TCSchedule寄存器902。TCSchedule寄存器902是软件可编程的,并且提供了软件工具,向策略管理器604提供线程调度的提示。在一个实施例中,TCSchedule寄存器902包括在以上关于图2和表1讨论的协处理器0寄存器之内,确切地说包括在策略管理器604之内。TCSchedule寄存器902包括六个字段:TC_LEVEL_PARAM1 908、TC_LEVEL_PARAM2 906、TC_LEVEL_PARAM3 904、TC_RATE 912、OV 14和PRIO 916。在图5的实施例中,TC_LEVEL_PARAM1 908、TC_LEVEL_PARAM2 906、TC_LEVEL_PARAM3 904、TC_RATE912字段包括四位,PRIO 916字段包括两位,而OV 914字段是单一位。
图5所示的策略管理器604包括控制逻辑924;比较器922,连接为向控制逻辑924提供它们的输出;TC_LEVEL 918寄存器,连接为将其输出提供为比较器922的输入;以及三输入多路复用器926,连接为将其输出提供为TC_LEVEL 918寄存器的输入。多路复用器926在其第一输入上接收TC_LEVEL 918寄存器的输出以保留正确值。多路复用器926在其第二输入上接收减一器932的输出,后者的输入是TC_LEVEL 918寄存器的输出。多路复用器926在其第三输入上接收加一器934的输出,后者的输入是加法器936的输出,加法器936将TC_LEVEL 918寄存器的输出与将TC_RATE 912乘2的乘法器938的输出加起来。TC_RATE 912是线程语境的期望执行速率的指示,即每单位时间要完成的指令数量。软件控制模块660可以用于指定电源性能度量,比如用于低功率虚拟线程的TC_RATE 912。例如,软件控制模块660可以用于以对指令完成速率限度的形式指定用于低功率虚拟线程的电源性能度量(如在几百到几千周期的指令完成速率限度)。可以为全部线程设置电源性能度量,也可以为单独的线程设置电源性能度量,比如所述低功率虚拟线程。
在图5的实施例中,TC_RATE 912指示了每16个时钟周期所述线程应当完成的指令数量。虽然刚才列出的逻辑在图5中仅仅显示了一次,但是在策略管理器604内为每个线程语境都复制所述逻辑,为每个线程语境都产生所述PM_TC_block 654和PM TC_priority 652信号,并且接收PM_TC_state 642、PM_TC_instr_committed 644、PM_TC_inst_issued 646和PM_gclk 658信号。
策略管理器604采用修改后的泄漏存储桶算法实现调度器108的高水位线程调度策略。TC_LEVEL 918寄存器类似于存储桶中的水位。TC_LEVEL 918本质上是所述线程语境需要完成的工作量的度量。在一个实施例中,TC_LEVEL 918寄存器包括初始化为0的12位寄存器。控制逻辑924产生的控制信号928控制多路复用器926选择哪个输入。每隔32个时钟周期,多路复用器926都选择加法器936的输出,以便存储在TC_LEVEL 918寄存器中,这使TC_LEVEL 918增加(TC_RATE*2+1)的数量。在一个实施例中,基于TC_RATE 912的TC_LEVEL 918的更新之间的时钟周期数量也是可编程的。在其他时钟周期,如果PM_TC_instr_committed信号644指明线程语境的某指令已经被提交用于执行,则多路复用器926选择减一器932的输出将TC_LEVEL 918减一。因此,软件通过调节线程的TCSchedule寄存器902的TC_RATE 912数值,能够影响线程语境存储桶中的虚拟水位。在图5的实施例中,TC_RATE 912的数值指明了期望微处理器100每16个时钟周期对所述线程语境要执行的指令数量。
随着泄漏存储桶水位的提高,水压也提高了,这使得水以更高的速率泄漏。类似地,TC_LEVEL_PARAM字段904/906/908编程为定义虚拟水压范围的单调增加数值。比较器922将TC_LEVEL 918与TC_LEVEL_PARAM 904/906/908进行比较,并且将它们的结果提供给控制逻辑924,它根据TC_LEVEL 918落入的虚拟水压范围产生PM_TC_priority 652。如图5的泄漏存储桶所展示,如果TC_LEVEL918的最高半字节高于TC_LEVEL_PARAM3 904数值,控制逻辑924产生的PM_TC_priority 652数值为3(最高优先级);如果TC_LEVEL918  的最高半字节在TC_LEVEL_PARAM3 904数值与TC_LEVEL_PARAM2 906数值之间,控制逻辑924产生的PM_TC_priority 652数值为2;如果TC_LEVEL 918的最高半字节在TC_LEVEL_PARAM2 906数值与TC_LEVEL_ARAM1 908数值之间,控制逻辑924产生的PM_TC_priority 652数值为1;如果TC_LEVEL 918的最高半字节低于TC_LEVEL_PARAM1 908,控制逻辑924产生的PM_TC_priority 652数值为0(最低优先级)。类似地,提高PM_TC_priority 652的等级就提高了对分派调度器602为所述线程语境发布指令的压力,而降低PM_TC_priority 652的等级就降低了对分派调度器602为所述线程语境发布指令的压力。
如以上的讨论,在使用微处理器100的某些应用中,不同的线程可能需要不同的指令执行速率,这是使用TC_RATE 912字段可编程的。因此,通过软件控制模块660可以设置TC_RATE 912,以调整与一个或多个低功率虚拟线程相关联的电源管理性能。根据本发明的电源管理能够通过使用单一低功率虚拟线程而实现。作为替代,电源管理也能够通过使用多个低功率虚拟线程而实现。
不仅如此,不同的线程可能需要不同的分辨率,即度量指令执行速率的时间周期。换言之,虽然某些线程也许不需要执行速率高,但是也不允许指令执行的拖延超过某最小时间周期。换言之,所述线程需要特定的服务质量。软件控制模块660可以依靠连接到一个或多个低功率虚拟线程的服务质量参数调整电源管理性能。
正如从图5和对其的解释可见,TC_LEVEL_PARAM904/906/908可以用于实现每个线程所需要的分辨率。通过分配彼此相对接近的TC_LEVEL_PARAM 904/906/908,可以实现较高的分辨率;而分配相对远离的TC_LEVEL_PARAM 904/906/908将产生较低的分辨率。因此,通过策略管理器604调节每个线程语境的TC_LEVEL_PARAM 904/906/908,软件可以实现所期望的服务质量目标,在指令执行速率上实现所需要的分辨率。
如果OV位914置位,控制逻辑924就忽略TC_LEVEL_PARAM904/906/908、TC_RATE 912和TC_LEVEL 918的数值,而在PM_TC_priority 652信号上产生与PRIO字段916中所指定数值相等的数值。这就允许软件在需要时绕过所述泄漏存储桶策略并直接控制一个或多个线程语境的优先级。
在一个实施例中,如果TC_LEVEL 918在预定数量的时钟周期内饱和到其最大数值,那么微处理器100发出中断信号,以使软件能够在更高的层次做出线程调度的调整,确切地说,通过改变在一个或多个TCSchedule寄存器902中的数值。在一个实施例中,可以通过软件屏蔽所述中断。
在一个实施例中,微处理器100的指令集包括YIELD(退让)指令,线程语境可以执行它命令调度器108停止为所述线程语境发布指令,直到发生指定的事件。在一个实施例中,当线程退让时,策略管理器604会临时禁止所述线程的TC_LEVEL 918的更新,所以所述线程的PM_TC_priority被保持,直到所述线程变为解除退让。在另一个实施例中,策略管理器604继续更新所述线程的TC_LEVEL 918,很可能会使所述线程的PM_TC_priority提高,以致于当所述线程变为解除退让时,它将临时地具有高优先级,实质上帮助所述线程起动其泵。在一个实施例中,策略管理器604对于退让线程的行为可由软件编程。
应当理解,虽然在所描述的实施例中,使用了明确数量的位指定PM_TC_priority 652、TC_LEVEL_PARAM 904/906/908、TC_RATE912、TC_LEVEL 918等,但是却未以任何方式将所述调度器108限制为在所述实施例中所使用的数值;所述调度器108反而可以配置为使用多种不同数量的位、优先级、层次、速率等,按照其中使用微处理器100的具体应用所需。不仅如此,虽然策略管理器604已经介绍为采用改进的泄漏存储桶线程调度策略,但是应当理解,策略管理器604可以被配置为采用多种线程调度策略的任何一种,同时仍然具有分支调度器108的优点。本发明的低功率虚拟线程可以用任意数量的调度策略成功实现。例如,在一个实施例中,策略管理器604采用了简单的循环线程调度策略,其中对所有线程语境的PM_TC_priority652输出约束为同一数值。在另一个实施例中,策略管理器604采用了时间片线程调度策略,其中在一个线程语境的TCSchedule寄存器902中指定的多个连续时钟周期中,所述线程语境的PM_TC_priority652输出被提升到最高的优先级,然后在另一个线程语境的TCSchedule寄存器902中指定的或许数目不同的多个连续时钟周期中,所述线程语境的PM_TC_priority 652输出被提升到最高的优先级,以时间片的形式对每个线程语境依此类推。
在一个实施例中,微处理器100的指令集包括派生(FORK)指令,用于分配可用的线程语境并在新分配的线程语境内调度新线程的执行。在一个实施例中,当线程语境派生新的线程语境时,父线程语境的TC_RATE 912在自己与子线程语境之间被均匀地分开,即新的TC_RATE 912是老的TC_RATE 912除以2。这样做的优点是防止线程语境请求比原始分配的更多的处理带宽。
如从上可见,调度器108的分支使得处理器核606中包括的分派调度器602相对简单,这又使得分派调度器602在面积和功率方面相对小,并且将线程调度策略的应用特定的复杂性放置在策略管理器604中,它在处理器核606之外。这是有利的,因为某些应用也许不需要复杂的策略管理器604,所以不必负担另外的面积和功率需求,要是调度器108未被分支这些需求将被强加到所有应用,如本文所述。
现在参考图6,显示的流程图展示了根据本发明图5策略管理器604的操作。虽然在图6中显示的操作仅仅对于单一线程语境,但是图6指定的操作在策略管理器604内对每个线程语境都发生。流程从方框1002开始。
在方框1002,策略管理器604将TC_LEVEL 918初始化为0。流程继续到方框1004。
在方框1004,策略管理器604等待PM_gclk 658的一个周期。流程继续到决策框1006。
在决策框1006,策略管理器604判断自从上次流程到达决策框1006以后是否32个PM_gclk 658已经到达。如果没有,流程继续到决策框1012;否则,流程继续到方框1008。
在方框1008,将TC_LEVEL 918增加TC_RATE 912数值的两倍加1。流程继续到决策框1012。
在决策框1012,策略管理器604判断PM_TC_instr_committed644是否为真。如果不是,流程继续到决策框1016;否则,流程继续到方框1014。
在方框1014,将TC_LEVEL 918减一。流程继续到决策框1016。
在决策框1016,策略管理器604判断OV位914是否置位。如果没有,流程继续到决策框1022;否则,流程继续到方框1018。
在方框1018,策略管理器604在PM_TC_priority 652上产生等于所述PRIO 916字段的数值的数值。流程继续到方框1004。
在决策框1022,策略管理器604判断TC_LEVEL 918是否大于TC_LEVEL_PARAM3 904的数值。如果不是,流程继续到决策框1026;否则,流程继续到方框1024。
在方框1024,策略管理器604在PM_TC_priority 652上产生数值3(最高优先级)。流程返回到方框1004。
在决策框1026,策略管理器604判断TC_LEVEL 918是否大于TC_LEVEL_PARAM2 906的数值。如果不是,流程继续到决策框1032;否则,流程继续到方框1028。
在方框1028,策略管理器604在PM_TC_priority 652上产生数值2。流程返回到方框1004。
在决策框1032,策略管理器604判断TC_LEVEL 918是否大于TC_LEVEL_PARAM1 908的数值。如果不是,流程继续到决策框1036;否则,流程继续到方框1034。
在方框1034,策略管理器604在PM_TC_priority 652上产生数值1。流程返回到方框1004。
在方框1036,策略管理器604在PM_TC_priority 652上产生数值0(最低优先级)。流程返回到方框1004。
因此,所述策略管理器连同所述软件控制模块660提供了电源管理的机制。与管理电源所用的直接电压或频率调节技术不同,所公开的技术嵌套着多线程的处理。所述技术依赖现有的线程控制技术而实现新的电源管理选项。例如,本发明的技术不是使用暂停操作,比如通过使用WAIT指令,而是允许连续地、细粒度地(如逐个周期地)控制功率消耗。
软件控制模块660可以用于提供高层次的电源管理。例如,使用软件控制模块660,人们可以指定电源性能度量,然后将操作结果与电源性能目标进行对比。所述策略管理器提供了实现这样功能的接口和控制信息。优选情况下,在不改变处理器核606的分派调度器606的情况下实现这种功能。
还可以实现本发明的多种替代实施例。例如,通过策略管理器停止运转所选定线程而不是调用低功率虚拟线程可以处理所述电源性能度量。所公开的策略管理器允许逐个周期地控制各个线程,从而提供了细粒状的电源管理分辨率。
虽然已经介绍了本发明的多种实施例,但是应当理解,它们是作为实例呈现而不是限制。对于相关计算机领域的技术人员显而易见,在其中能够做出形式和细节上的多种改变而不脱离本发明的实质和范围。
例如,除以硬件(如在中央处理单元(“CPU”)、微处理器、微控制器、数字信号处理器、处理器核、片上系统(“SOC”)或任何其他可编程设备之内或与之连接的硬件)实现的低功率虚拟线程之外,若干实施例也可以以例如在配置为存储软件的计算机可用(如可读)介质中部署的软件(如以任意形式,比如源代码、目标码或机器语言部署的计算机可读代码、程序代码、指令和/或数据)实施。这样的软件能够实现本文介绍的装置和方法的例如功能、制造、模拟、仿真、描述和/或测试。例如,通过使用通用编程语言(如C、C++)、GDSII数据库、包括Verilog HDL、VHDL等的硬件描述语言(HDL)或者其他可用的程序、数据库和/或电路(即原理图)捕获工具能够实现这种过程。这样的软件可以被部署在任何已知的计算机可用介质中,包括半导体、磁盘、光盘(如CD-ROM、DVD-ROM等),并且作为在计算机可用(如可读)传输媒介(如载波或任何其他媒介,包括基于数字、光学或基于模拟的媒介)中具体体现的计算机数据信号。同样,所述软件也能够在包括因特网和内联网的通信网络上传输。
应当理解,本文介绍的装置和方法可以包括在半导体知识产权核心中,比如微处理器核(如以HDL体现)中,并且在生产集成电路时转换为硬件。另外,本文介绍的装置和方法可以实施为硬件和软件的组合。因此,本发明不应当受限于以上介绍的任何示范实施例,而是仅仅应当按照以下的权利要求书及其相当内容进行定义。

Claims (19)

1.一种处理器,包括:
指定电源性能度量的软件控制模块;
响应所述软件控制模块的策略管理器;以及
响应所述策略管理器,按照所述电源性能度量运行所述处理器的分派调度器;
其中所述分派调度器位于所述处理器的核心之内,并且所述策略管理器是可由客户定制的,且位于所述处理器的核心外部;
其中所述策略管理器响应所述电源性能度量而指定低功率虚拟线程,所述分派调度器部署所述低功率虚拟线程;
其中所述策略管理器响应所述电源性能度量命令所选定的线程停止运行,并且所述分派调度器停止运行所述选定的线程。
2.根据权利要求1的处理器,其中,所述电源性能度量是每单位时间要完成的指令数量。
3.根据权利要求1的处理器,其中,所述策略管理器跟踪所述低功率虚拟线程的运行。
4.根据权利要求1的处理器,其中,所述分派调度器指定在所述低功率虚拟线程的流水线位置中,不执行任何操作。
5.一种处理器,包括:
指定电源性能度量的软件控制模块;
响应所述软件控制模块的策略管理器;以及
响应所述策略管理器,按照所述电源性能度量运行所述处理器的分派调度器;
其中所述分派调度器位于所述处理器的核心之内,并且所述策略管理器是可由客户定制的,且位于所述处理器的核心外部;
其中,所述策略管理器响应所述电源性能度量命令所选定的线程停止运行,并且所述分派调度器停止运行所述选定的线程。
6.根据权利要求5的处理器,其中,所述策略管理器逐个周期地命令选定的线程停止运行。
7.一种处理器,包括:
指定电源性能度量的软件控制模块;
分支的线程调度器,包括内部处理器核心组件和与所述软件控制模块直接通信的外部处理器核心组件,所述分支的线程调度器按照所述电源性能度量运行所述处理器;
其中所述外部处理器核心组件响应所述电源性能度量而指定低功率虚拟线程,所述内部处理器核心组件部署所述低功率虚拟线程。
8.根据权利要求7的处理器,其中,所述电源性能度量是每单位时间要完成的指令数量。
9.根据权利要求7的处理器,其中,所述外部处理器核心组件跟踪所述低功率虚拟线程的运行。
10.根据权利要求7的处理器,其中,所述内部处理器核心组件指定在所述低功率虚拟线程的流水线位置中,不执行任何操作。
11.一种处理器,包括:
指定电源性能度量的软件控制模块;
分支的线程调度器,包括内部处理器核心组件和与所述软件控制模块直接通信的外部处理器核心组件,所述分支的线程调度器按照所述电源性能度量运行所述处理器;
其中所述外部处理器核心组件响应所述电源性能度量命令所选定的线程停止运行,并且所述内部处理器核心组件停止运行所述选定的线程。
12.根据权利要求11的处理器,其中,所述外部处理器核心组件逐个周期地命令选定的线程停止运行。
13.一种运行处理器的方法,包括:
通过软件控制指定电源性能度量;
在外部处理器核心组件响应所述电源性能度量;以及
响应所述外部处理器核心组件,用内部处理器核心组件实施所述电源性能度量;
其中响应包括响应所述电源性能度量而指定低功率虚拟线程,实施包括部署所述低功率虚拟线程。
14.根据权利要求13的方法,其中,指定包括指定每单位时间要完成的指令数量。
15.根据权利要求13的方法,进一步包括停止所述低功率虚拟线程的流水线位置中的操作。
16.一种运行处理器的方法,包括:
通过软件控制指定电源性能度量;
在外部处理器核心组件响应所述电源性能度量;以及
响应所述外部处理器核心组件,用内部处理器核心组件实施所述电源性能度量;
其中响应包括响应所述电源性能度量命令所选定的线程停止运行,其中,响应包括逐个周期地命令选定的线程停止运行。
17.一种使用计算机生成具有改进的电源管理的处理器的方法,包括:
选择可执行指令,所述可执行指令
响应来自软件控制模块的电源性能度量定义策略管理器,其中所述策略管理器是可由客户定制的,且位于所述处理器的核心外部;以及
响应所述策略管理器指定分派调度器,以按照所述电源性能度量运行处理器,其中所述分派调度器位于所述处理器的核心之内;以及
在网络上将所述可执行指令传送到指定的计算机;
其中选择可执行指令包括选择定义策略管理器使之响应所述电源性能度量而指定低功率虚拟线程的可执行指令,并且其中选择可执行指令包括选择指定分派调度器使之部署所述低功率虚拟线程的可执行指令。
18.根据权利要求17的方法,其中,选择可执行指令包括选择定义策略管理器使之跟踪所述低功率虚拟线程运行的可执行指令。
19.根据权利要求17的方法,其中,选择可执行指令包括选择指定分派调度器使之指定在所述低功率虚拟线程的流水线位置中,不执行任何操作的可执行指令。
CN2006800167751A 2005-04-14 2006-03-28 使用低功率虚拟线程的软件指定的电源性能管理装置和方法 Active CN101238425B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/107,489 US7600135B2 (en) 2005-04-14 2005-04-14 Apparatus and method for software specified power management performance using low power virtual threads
US11/107,489 2005-04-14
PCT/US2006/011326 WO2006113067A2 (en) 2005-04-14 2006-03-28 Apparatus and method for software specified power management performance using low power virtual threads

Publications (2)

Publication Number Publication Date
CN101238425A CN101238425A (zh) 2008-08-06
CN101238425B true CN101238425B (zh) 2011-11-16

Family

ID=37109963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800167751A Active CN101238425B (zh) 2005-04-14 2006-03-28 使用低功率虚拟线程的软件指定的电源性能管理装置和方法

Country Status (4)

Country Link
US (1) US7600135B2 (zh)
CN (1) CN101238425B (zh)
GB (1) GB2439253B (zh)
WO (1) WO2006113067A2 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
EP1660993B1 (en) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7721127B2 (en) * 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor
US7844839B2 (en) * 2006-12-07 2010-11-30 Juniper Networks, Inc. Distribution of network communications based on server power consumption
WO2009110884A1 (en) * 2008-03-03 2009-09-11 Hewlett-Packard Development Company, L.P. Software-based power-capping
TWI830077B (zh) * 2009-08-07 2024-01-21 日商半導體能源研究所股份有限公司 半導體裝置
FR2960314B1 (fr) * 2010-05-19 2012-07-27 Bull Sas Procede d'optimisation de gestion de veille d'un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d'ordinateur mettant en oeuvre un tel procede
US8381004B2 (en) 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system
EP2689326B1 (en) * 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8595525B2 (en) * 2011-09-22 2013-11-26 Qualcomm Incorporated On-chip thermal management techniques using inter-processor time dependent power density data for indentification of thermal aggressors
US9582284B2 (en) 2011-12-01 2017-02-28 International Business Machines Corporation Performance of processors is improved by limiting number of branch prediction levels
US9672046B2 (en) * 2012-12-28 2017-06-06 Intel Corporation Apparatus and method for intelligently powering heterogeneous processor components
US9448829B2 (en) 2012-12-28 2016-09-20 Intel Corporation Hetergeneous processor apparatus and method
US9329900B2 (en) 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method
US9639372B2 (en) 2012-12-28 2017-05-02 Intel Corporation Apparatus and method for heterogeneous processors mapping to virtual cores
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
TWI708981B (zh) 2013-08-28 2020-11-01 日商半導體能源研究所股份有限公司 顯示裝置
US9411642B2 (en) * 2014-01-17 2016-08-09 Nvidia Corporation Using high priority thread to boost CPU clock rate
US10379904B2 (en) * 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
US10558464B2 (en) * 2017-02-09 2020-02-11 International Business Machines Corporation Infinite processor thread balancing
CN108073459A (zh) * 2018-01-02 2018-05-25 联想(北京)有限公司 一种电子设备的cpu的管理方法及装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58127262A (ja) * 1982-01-25 1983-07-29 Toshiba Corp マイクロコンピユ−タ
US6343363B1 (en) 1994-09-22 2002-01-29 National Semiconductor Corporation Method of invoking a low power mode in a computer system using a halt instruction
US5805923A (en) 1995-05-26 1998-09-08 Sony Corporation Configurable power management system having a clock stabilization filter that can be enabled or bypassed depending upon whether a crystal or can oscillator is used
US5745375A (en) * 1995-09-29 1998-04-28 Intel Corporation Apparatus and method for controlling power usage
US5983356A (en) 1996-06-18 1999-11-09 National Semiconductor Corporation Power conservation method and apparatus activated by detecting shadowed interrupt signals indicative of system inactivity and excluding prefetched signals
US6662234B2 (en) 1998-03-26 2003-12-09 National Semiconductor Corporation Transmitting data from a host computer in a reduced power state by an isolation block that disconnects the media access control layer from the physical layer
US6564328B1 (en) * 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US6594755B1 (en) 2000-01-04 2003-07-15 National Semiconductor Corporation System and method for interleaved execution of multiple independent threads
US6611920B1 (en) * 2000-01-21 2003-08-26 Intel Corporation Clock distribution system for selectively enabling clock signals to portions of a pipelined circuit
US6986066B2 (en) * 2001-01-05 2006-01-10 International Business Machines Corporation Computer system having low energy consumption
US7058824B2 (en) * 2001-06-15 2006-06-06 Microsoft Corporation Method and system for using idle threads to adaptively throttle a computer
US7111179B1 (en) * 2001-10-11 2006-09-19 In-Hand Electronics, Inc. Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters
US6586911B1 (en) 2002-02-06 2003-07-01 National Semiconductor Corporation Sleep mode power management
US6710578B1 (en) 2002-08-27 2004-03-23 Motorola, Inc. Power resource management in a portable communication device
US7024568B2 (en) 2002-09-06 2006-04-04 National Semiconductor Corporation Method and system for providing self-calibration for adaptively adjusting a power supply voltage in a digital processing system
US7194385B2 (en) 2002-11-12 2007-03-20 Arm Limited Performance level setting of a data processing system
US7131015B2 (en) 2002-11-12 2006-10-31 Arm Limited Performance level selection in a data processing system using a plurality of performance request calculating algorithms
US7069189B2 (en) * 2002-12-31 2006-06-27 Intel Corporation Method and apparatus for controlling multiple resources using thermal related parameters
AU2003283550A1 (en) 2003-01-13 2004-08-10 Arm Limited Data processing performance control
US7500127B2 (en) * 2003-09-18 2009-03-03 Vulcan Portals Inc. Method and apparatus for operating an electronic device in a low power mode
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7631130B2 (en) 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7853777B2 (en) 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7657883B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7613904B2 (en) 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7506140B2 (en) 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US7664936B2 (en) 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor

Also Published As

Publication number Publication date
GB2439253B (en) 2008-11-12
GB0719536D0 (en) 2007-11-14
WO2006113067A3 (en) 2008-01-24
US20060236135A1 (en) 2006-10-19
US7600135B2 (en) 2009-10-06
WO2006113067A2 (en) 2006-10-26
GB2439253A (en) 2007-12-19
CN101238425A (zh) 2008-08-06

Similar Documents

Publication Publication Date Title
CN101238425B (zh) 使用低功率虚拟线程的软件指定的电源性能管理装置和方法
CN101542412B (zh) 用于多线程处理器中自动低功率模式调用的装置和方法
CN101133391B (zh) 多线程微处理器中的二分化线程调度器
CN100549943C (zh) 具有用于增进流水线使用效率的优化线程调度器的多线程微处理器
US7610473B2 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
CN108027771B (zh) 基于块的处理器核复合寄存器
Nemirovsky et al. Multithreading architecture
US7752627B2 (en) Leaky-bucket thread scheduler in a multithreading microprocessor
CN110249302B (zh) 在处理器核上同时执行多个程序
US20060179274A1 (en) Instruction/skid buffers in a multithreading microprocessor
JPH08212070A (ja) プロセッサ・アーキテクチャにおける分散制御のための装置および方法
US20090138880A1 (en) Method for organizing a multi-processor computer
WO2005022384A1 (en) Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
Duţu et al. Independent forward progress of work-groups
Kissell MIPS MT: A multithreaded RISC architecture for embedded real-time processing
CN109582367A (zh) 一种带有流水线时分复用调度器的处理器结构
KR100728899B1 (ko) 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서
Woo et al. Catnap: A Backoff Scheme for Kernel Spinlocks in Many-Core Systems
Zahran et al. Hierarchical multi-threading for exploiting parallelism at multiple granularities
Dua et al. A Comparative study of SMT and CMP multiprocessors
Gottschlag Stage-aware Scheduling in a Library OS

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
ASS Succession or assignment of patent right

Owner name: BRIDGE DECK LLC

Free format text: FORMER OWNER: MIPS TECHNOLOGIES INC.

Effective date: 20141210

Owner name: ARM FINANCE OVERSEAS LTD.

Free format text: FORMER OWNER: BRIDGE DECK LLC

Effective date: 20141210

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20141210

Address after: cambridge

Patentee after: ARM Overseas Finance Co.,Ltd.

Address before: American New Jersey

Patentee before: Overpass Bridge Co.,Ltd.

Effective date of registration: 20141210

Address after: American New Jersey

Patentee after: Overpass Bridge Co.,Ltd.

Address before: American California

Patentee before: MIPS Technologies, Inc.