CN101542412A - 用于多线程处理器中自动低功率模式调用的装置和方法 - Google Patents

用于多线程处理器中自动低功率模式调用的装置和方法 Download PDF

Info

Publication number
CN101542412A
CN101542412A CNA2006800167747A CN200680016774A CN101542412A CN 101542412 A CN101542412 A CN 101542412A CN A2006800167747 A CNA2006800167747 A CN A2006800167747A CN 200680016774 A CN200680016774 A CN 200680016774A CN 101542412 A CN101542412 A CN 101542412A
Authority
CN
China
Prior art keywords
thread
instruction
blocked
bifurcated
processor
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
Application number
CNA2006800167747A
Other languages
English (en)
Other versions
CN101542412B (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 CN101542412A publication Critical patent/CN101542412A/zh
Application granted granted Critical
Publication of CN101542412B publication Critical patent/CN101542412B/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • 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/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/485Task life-cycle, e.g. stopping, restarting, resuming 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/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)
  • Microcomputers (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)

Abstract

一种处理器,包括执行多个线程的处理器内核。分叉的线程调度器包括内部处理器内核部件和外部处理器内核部件。该所述分叉的线程调度器识别何时多个线程的全部被阻断,并在此之后自动进入默认的低功率休眠模式。

Description

用于多线程处理器中自动低功率模式调用的装置和方法
技术领域
本发明一般涉及多线程处理器中的功率管理。具体地说,本发明涉及一种用于自动调用低功率模式处理器状态的技术。
背景技术
微处理器设计者采用多种技术来提高微处理器性能。大多数微处理器利用以固定频率运行的时钟信号工作。微处理器的电路在每个时钟周期执行其各自的功能。微处理器性能的一个度量是执行一个程序或程序集合所需要的时间。从该方面来说,微处理器的性能是其时钟频率、执行一条指令所需要的时钟周期的平均数目(或者换句话说,每个时钟周期所执行的指令的平均数量)、以及在该程序或程序集合中所执行的指令的数量的函数。
半导体科学家和工程师不断地使得微处理器可以以更快的时钟频率运行,这主要是通过减小晶体管尺寸而实现,从而导致更快的开关时间。所执行的指令的数量很大程度上由程序要执行的任务来确定,尽管其也受到微处理器的指令集体系结构的影响。体系结构和组织概念、诸如并行性已经实现了很大的性能提高。
已经改进微处理器每个时钟周期的指令以及时钟频率的并行性概念之一是流水线技术,该技术在微处理器的多个流水线级中交叠多个指令的执行。在理想情况中,在每个时钟周期,一条指令沿着流水线移动到新一级,该新一级对该指令执行不同的功能。由此,尽管每个单独指令需要多个时钟周期来完成,但是因为各个指令的多个周期交叠,所以每个指令的时钟周期的平均数量被减少。流水线的性能改进可以被实现到程序中的指令所允许的程度,即被实现到指令的执行与其前任无关并因此可以与其前任并行执行的程度,这通常被称为指令级别并行性。当前微处理器使用指令级别并行性的另一种方式是每个时钟周期发布多个指令用以执行。这些微处理器通常被称为超标量微处理器。
上面的讨论适用于单个指令级别的并行性。但是,通过利用指令级别并行性可以实现的性能改进是有限的。由有限的指令级别并行性所产生的各种约束以及其它性能约束近来重新引起了对开发块级别、或序列级别、或指令流级别的并行性的兴趣,它们统称为线程级别并行性。线程就是序列、或流、或程序指令。多线程微处理器根据某种调度策略并行地执行多个线程,该调度策略指示各个线程的指令的读取和发布,诸如细粒度多线程(interleaved multithreading)、粗粒度多线程(blocked multithreading)或同时多线程(simultaneousmultithreading)。多线程微处理器典型地允许多个线程以并发方式共享微处理器的功能单元(例如指令读取和解码单元,缓存器,分支预测单元,和加载/存储,整数,浮点,SIMD等执行单元)。但是,多线程微处理器包括多组资源或语境用以存储每个线程的唯一状态,诸如多个程序计数器和通用寄存器组,以有助于在读取指令和发布指令的线程之间快速切换的能力。
多线程微处理器所解决的性能约束问题的一个例子是缓存器未命中(cache miss)通常具有比较长的等待时间。当前基于微处理器的计算机系统的存储器存取时间普遍在大于缓存器命中存取时间的一个和两个数量级之间。取决于缓存器中数据缺失的指令在流水线中停止,以等待来自存储器的数据。因此,单线程微处理器的一些或全部流水线级可能在多个时钟周期中无意义地执行无用的工作。多线程微处理器可以通过在存储器读取等待时间期间发布来自其它线程的指令来解决该问题,由此使流水线级继续执行有用的工作,某种程度上类似于操作系统对页失效执行任务转换,但是粒度更为精细。多线程微处理器所解决的性能约束的问题的其他例子是由于数据依赖性;或者由于诸如除法指令、浮点指令等的长等待时间指令;或者由于有限硬件资源冲突而导致的流水线停止及其伴随而来的空闲周期。多线程微处理器向否则空闲的流水线级发布来自其它线程的指令的能力又可以明显减少执行包括该线程的程序或程序集合所需要的时间。
通过多线程和其它技术所实现的微处理器性能改进导致微处理器功耗增加。功耗在很多应用中是很重要的因素。因此,越来越重视功率管理技术。大多数功率管理技术基于对处理器状态的抢先理解。也就是说,根据对处理器运行的全局理解并通过对各种处理吞吐量和功率管理折衷方案进行权衡来调用功率管理操作。这样的技术依赖复杂的控制机制。非常希望通过依赖于比较少的关于处理器状态的信息的简单的控制机制来实现功率节省。理想情况下,这种技术可以以牺牲最低处理器性能为代价而被自动调用。
发明内容
本发明包括处理器,其具有执行多个线程的处理器内核。分叉(bifurcated)线程调度器包括内部处理器内核部件和外部处理器内核部件。分叉线程调度器识别多个线程中所有线程何时被阻断,并随后自动进入默认的低功率休眠模式。在一个实施例中,分叉线程调度器被配置为识别被阻断的线程何时经历:等待指令,放弃(yield)指令,阻断线程间通信(ITC)存取,以及来自外部处理器内核部件的已停止的优先权请求。优选地,分叉线程调度器被配置为进入默认的低功率休眠模式,而不发布等待指令。分叉线程调度器可以在进入默认的低功率休眠模式之前执行内务处理功能。
本发明还包括一种机算系统中的功率管理方法。执行多个线程。当这多个线程中全部线程被识别为被阻断时,自动进入默认的低功率休眠模式。当线程不再被阻断时,自动退出低功率休眠模式。
附图说明
结合以下参考附图所进行的详细描述会更完整地理解本发明,附图中:
图1示出可以根据本发明实施例使用的多线程微处理器。
图2示出根据本发明实施例使用的分叉调度器,包括配送调度器(dispatch scheduler)和策略管理器。
图3示出可以与图2的分叉调度器一起使用的配送调度器。
图4示出与图3的配送调度器相关联的处理操作。
图5示出可以与图2的分叉调度器一起使用的策略管理器。
图6示出与图5的策略管理器相关联的处理操作。
在所有附图中,相似的附图标记代表对应的部件。
具体实施方式
图1示出根据本发明实施例的流水线多线程微处理器100。该示例性多线程微处理器100用于公开本发明的概念。应当理解,本发明的概念也可被应用于替代的多线程微处理器设计。
微处理器100被配置为并发地执行多个线程。线程在此也被称为执行线程、或指令流,其包括序列、或流或、程序指令。线程可以来自在微处理器100上执行的不同程序,或者可以是来自在微处理器100上执行的同一程序的不同部分的指令流,或者它们的组合。
每个线程具有相关联的线程语境(TC)。线程语境包括诸如寄存器或锁存器的存储元件的集合,和/或微处理器100的存储元件中描述线程执行状态的位。也就是说,线程语境描述对于相应线程唯一的该线程的状态,而不是与在微处理器100上并行执行的其它线程共享的状态。通过在线程语境中存储每个线程的状态,微处理器100被配置为在取指令和发布指令的线程之间快速切换。在一个实施例中,每个线程语境包括程序计数器(PC)、通用寄存器组和线程控制寄存器,它们都被包括在微处理器100的寄存器文件112中。
微处理器100根据指示读取和发布各个线程的指令的调度策略来并发地执行这些线程。在此描述了用于调度来自多个线程的指令的配送的各种实施例。术语指令“发布”和“配送”在此可互换使用。多线程微处理器100允许多个线程以并发方式共享微处理器100的功能单元(例如取指令和解码单元,缓存器,分支预测单元,和执行单元,诸如加载/存储,整数,浮点,SIMD和其它执行单元)。
微控制器100包括用于缓存从包括微处理器100的系统的系统存储器所读取的程序指令-尤其是各种线程的指令-的指令缓存器102。微处理器100还包括取指令器104、或取指令流水线104,其被耦接以从指令缓存器102和/或系统存储器并发地取多个线程的指令到与取指令器104耦接的指令/滑动(skid)缓冲器106。在一个实施例中,取指令流水线104包括4级流水线。指令/滑动缓冲器106向指令调度器108或线程调度器108提供指令。在一个实施例中,每个线程具有其自己的指令/滑动缓冲器106。在每个时钟周期,调度器108选择来自线程之一的指令并发布该指令以用于在微处理器100流水线的执行级内执行。寄存器文件112被耦接到调度器108,并向执行指令的执行单元114提供指令操作数。微处理器100还包括与执行单元114耦接的数据缓存器118。执行单元114可以包括、但不限于整数执行单元、浮点执行单元、SIMD执行单元、加载/存储单元和分支执行单元。
在一个实施例中,整数执行单元流水线包括4级:存取寄存器文件112的寄存器文件(RF)存取级、地址产生(AG)级、执行(EX)级、和存储器第二(MS)级。在EX级中,执行简单的ALU操作(诸如加法、减法、移位等)。另外,数据缓存器118是在EX级中第一时钟周期期间被存取并且在MS中第二时钟周期期间被存取的两周期缓存器。每个线程语境包括其自己的寄存器文件112,每个寄存器文件包括其自己的程序计数器、通用寄存器组和线程控制寄存器。取指令器104基于每个线程语境的程序计数器值来取线程的指令。要注意,一些执行单元114可以是流水线式的,一些可以是外延的。微处理器100流水线还包括将指令结果回写到寄存器文件112中的回写级116。在一个实施例中,微处理器100流水线还包括耦接在执行单元114和回写级116之间的异常解决级。
在一个实施例中,执行单元114产生与每个线程语境关联的TC_instr_committed信号124,以指明指定线程的指令已经交付执行。如果保证指令不被微处理器100流水线刷新,而是被交付给产生结果并更新微处理器100的体系结构状态的最终完全执行,则该指令已经被交付执行。在一个实施例中,每个时钟周期可以提交多个指令,而且TC_instr_committed信号124指示在该时钟周期内提交给线程语境的指令个数。TC_instr_committed信号124被提供给调度器108。响应于TC_instr_committed信号124,调度器108更新由调度器108的线程调度策略用于完成所需要的服务质量的线程的虚拟水平指示符,如下所述。
TC_instr_committed信号124还被提供给各指令/滑动缓冲器106。响应于TC_instr_committed信号124,指令/滑动缓冲器106更新指针,以有效地从缓冲器106中删除该指令。在传统的微处理器中,指令从传统的指令缓冲器中被删除并被发布用于执行。但是,指令/滑动缓冲器106在指令已经被发布用于执行之后继续存储这些指令。这些指令不被从指令/滑动缓冲器106中删除,直到执行单元114指示已经通过相应的TC_instr_committed信号124提交指令用于执行为止。
调度器108向执行单元114提供可运行的TC信号132。可运行的TC信号132指定哪些线程语境是可运行的,即调度器108当前可以发布来自哪些线程语境的指令。在一个实施例中,如果线程语境是活动的而且没有被其他条件(诸如暂停,等待,挂起或放弃)阻断,则该线程语境是可运行的。具体地说,执行单元114使用可运行的TC信号132来确定停止的线程语境是否是仅有的可运行线程语境,以确定是否刷新停止的线程语境的指令。
执行单元114向调度器108提供停止事件信号126。停止事件信号126指示在执行单元114中一个指令由于具体停止事件信号126所指定的原因而已经停止、或者本来要停止。此外,停止事件信号126包括标识已停止的指令的线程语境的标识符。执行单元114还向调度器108提供非停止事件信号128。响应于停止事件信号126,调度器108停止发布已停止的线程语境的指令,直到相关的非停止事件信号128被发送为止。
会导致执行单元114响应于一条指令而停止的事件的例子包括但不限于下面所述的。首先,指令可能取决于不可获得的数据,诸如来自在数据缓存器118中缺失的加载指令的数据。例如,加法指令可能指定不可获得的操作数,因为在数据缓存器118中缺失在先加载指令,并且还没有从系统存储器中取出操作数。其次,指令可能取决于来自长运行(long-running)指令的数据,诸如例如除法指令或其它长算术指令,或者从协处理器寄存器中移动数值的指令。
第三,指令可能引入有限硬件资源的冲突。例如,在一个实施例中,微处理器100包括单个除法器电路。如果除法器已经正在执行一条除法指令,则第二条除法指令必须停止,以等待第一条除法指令结束。对其它示例,在一个实施例中,微处理器100指令集包括一组用于执行指令缓存器102的低级别管理操作的指令。如果一条指令缓存管理指令已经正在被执行,则第二条指令缓存管理指令必须停止,以等待第一条结束。对于其它示例,在一个实施例中,微处理器100包括加载队列,其中加载队列包括较少数量的时隙(slot)用于存储正在进行中的数据缓存器118补充物。当在数据缓存器118中缺失加载指令时,分配加载队列项,并启动处理器总线事务,以从系统存储器获得缺失的数据。当数据返回到总线上时,其被存入加载队列中,并随后被写入数据缓存器118。当总线事务结束并且所有数据都被写到数据缓存器118之后,释放该加载队列项。但是,当加载队列是满的时,加载缺失导致流水线停止。
第四,指令可能遵循EHB指令。在一个实施例中,微处理器100指令集包括EHB(Execution Hazard Barrier:执行危险屏蔽)指令,其被软件用于停止指令执行直到所有执行危险都已经被清除为止。典型地,遵循EHB指令的指令将在流水线中停止,直到EHB指令被撤消为止。
第五,指令可能遵循在相同线程语境中寻址到线程间通信(ITC)空间的加载或存储指令。在一个实施例中,微处理器100支持到包括同步存储的ITC空间的加载和存储,这可以在任意长的时间上阻止使相同线程语境中遵循ITC加载或存储的指令停止。
相反,非停止事件128的例子包括但不限于以下内容:在数据缓存器118中缺失的加载数据被返回;释放有限的硬件资源,诸如除法器电路、指令缓存器102或加载队列时隙;EHB指令、长运行指令或到线程间通信(ITC)空间的加载/存储指令结束。
执行单元114还产生与每个线程语境相关联的TC_flush信号122,以指示流水线的执行部分(即调度器108下方的流水线部分)中指定线程的指令已被刷新或被无效。在一个实施例中,刷新或无效指令包括在流水线中清除与该指令相关联的有效位,这防止流水线响应于该指令的结果更新微处理器100的体系结构状态。执行单元114可能产生TC_flush信号122的原因之一是线程的指令可能如上所述在执行单元114中停止。无效或刷新该指令就消除了停止该指令的原因,因为为该指令所产生的结果将被忽视并因此不必是正确的。有利地,通过刷新停止指令,其它线程的指令可以继续执行并利用执行流水线的执行带宽,由此可能提高微处理器100的总性能,如下面更详细描述的。在一个实施例中,只有停止线程的指令被刷新,根据来自执行单元114流水线中存在的各线程的指令的组成,这可以有利地减少由刷新所引入的流水线气泡的数量,而且在一些情况下可能只产生一个与停止指令相关联的气泡。在一个实施例中,TC_flush信号122指示线程语境的所有未提交指令已被刷新。在另一实施例中,执行单元114可以刷新少于执行单元114中存在的未提交指令数量的未提交指令,即停止指令和停止线程语境的任何更新指令,但是不刷新线程语境的比停止指令更早的未提交指令。在该实施例中,TC_flush信号122还指示由执行单元114刷新的指令的数量。
TC_flush信号122由执行单元114提供给它们各自的指令/滑动缓冲器106。指令/滑动缓冲器106使用TC_flush信号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包括9个线程语境用于存储与多达9个执行线程相关联的状态。此外,该实施例使微处理器100可以被配置为多达两个虚拟处理元件(VPE)。在一个实施例中,微处理器100基本上符合MIPS32或MIPS64指令集体系结构(ISA),而且包括控制协处理器0,在表格1中被称为CP0,其包括基本上符合在MIPS特权资源体系结构(PRA)和MIPS多线程特定用途扩展(MT ASE)中所指定的协处理器0的线程控制寄存器。表格1中所描述的若干信号被用于存取CP0寄存器。
Figure A20068001677400131
Figure A20068001677400141
表格1
下面详细描述在表格1中所指定的策略管理器接口628的一些具体信号。策略管理器604通过PM_TC_priority 652输出向配送调度器602指定各线程语境的优先权。在一个实施例中,PM_TC_priority652包括两个位,配送调度器602允许策略管理器604为线程语境指定4个不同优先权之一。策略管理器604通过产生各PM_TC_block654输出的真值来指示配送调度器602停止发布用于线程语境的指令。由此,策略管理器604可以通过PM_TC_priority 652和PM_TC_block654输出来影响配送调度器602如何发布用于各种线程语境的指令。
处理器内核606向策略管理器604提供PM_gclk 658,其使策略管理器604可以基于PM_gclk 658周期地调整PM_TC_priority 652。配送调度器602通过相应的PM_TC_state 642输入来传送每个线程语境的状态。如表格1所示,线程语境可以是下列8个状态之一。非活动:配送调度器602不能发布线程语境的指令,因为线程语境目前不与执行线程相关联。活动:线程语境目前与执行线程相关联;因此,如果没有其它阻断条件存在,则配送调度器602可以发布线程语境的指令用于执行。放弃:配送调度器602不能发布线程语境的指令用于执行,因为线程已经执行YIELD(放弃)指令,这使线程语境在指定事件上被阻断。暂停:配送调度器不能发布线程语境的指令用于执行,因为线程语境已经被其自己或被另一线程暂停。挂起:配送调度器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_inst_issued 646通知),PM_TC_instr_committed 644输入向策略管理器604提供关于已执行指令的信息,这可能是不同的,因为一些指令可能是推测配送而从未完成。这可能是与策略管理器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不发布指令。策略管理器604维持RELAX_LEVEL计数器(每VPE),该计数器与下面描绘的TC_LEVEL 918类似地运行,不同之处在于其使用RELAX_RATE用于递增,并在松弛指令时隙结束时递减。在一个实施例中,微处理器100包括每VPE的VPE调度寄存器,其类似于使软件能够指定RELAX_RATE的TC调度寄存器902。松弛功能通过表格1中所指定的PM_vpe_relax_enable信号被使能或禁用,松弛线程语境优先权通过PM_vpe_relax_priority信号指定。
在一个实施例中,配送调度器602还向策略管理器604提供异常功能,其目的在于使异常线程语境能具有自己的与正常线程语境无关的优先权。策略管理器维持EXC_LEVEL计数器(每VPE),该计数器与下面描绘的TC_LEVEL 918计数器类似地运行,不同之处在于其使用EXC_RATE用于递增,并在异常指令时隙结束时递减。当异常模式被使能并且对VPE采取异常时,VPE的线程语境将全部被设置到异常优先级。在一个实施例中,软件通过VPE调度寄存器指定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来选择指令206和具有最高DS_TC_priority208值的DS_TC_priority 208。所选择的指令206和DS_TC_priority208沿着该树传播,直到最后一个复用器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_priority 652产生循环指示符。例如,图3示出这样的实施例,其中策略管理器604可以指定4个可能的PM_TC_priority 652之一;因此循环逻辑712在配送调度器602中被实例化4次,并产生4个相应的循环指示符。
在一个实施例中,循环指示符对微处理器100的每个线程语境包括一位。循环指示符的与其各自线程语境相关联的位作为循环位748被提供。如果循环位748为真,则在循环机制中,在当前处于同一PM_TC_priority 652的其它线程语境中轮到发布该线程语境。
可发布指令逻辑708从图1的执行单元114接收非停止事件信号128和停止事件信号126,从图2的策略管理器604接收PM_TC_block654信号,从指令/滑动缓冲器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_block 654和空318信号为假,则指令是可发布的。
可发布746位、PM_TC_priority 652位以及循环位748组合起来以产生DS_TC_priority 208。在图3的实施例中,可发布位746是最高有效位,循环位748是最低有效位,PM_TC_priority 652是两个中间有效位。可以看到,由于可发布位746是DS_TC_priority 652的最高有效位,因此非可发布指令的优先级低于所有可发布指令。相反,如果超过一个线程语境具有可发布指令而且具有相同的最高PM_TC_priority 652,则循环位748只用于选择线程。
下面参照图4,示出说明根据本发明的图3的配送调度器602的操作的流程图。流程从块802开始。
在块802,配送调度器6022初始化用于每个PM_TC_priority 65的每个循环指示符。流程跳至块804。
在块804,配送调度器602针对每个线程语境确定该线程语境是否具有可发布指令206。也就是说,每个线程语境的可发布指令逻辑708产生可发布746信号上的值。在一个实施例中,可发布指令逻辑708仅在TC状态信号742表明线程语境在活动状态中并且没有被其他条件(诸如暂停、等待、挂起或放弃)阻断,停止指示符704为假,并且PM_TC_block 654和空318信号为假时才生成可发布信号746上的真信号。流程跳至判决块806。
在判决块806,配送调度器602通过检查每个线程语境的可发布746信号,确定是否存在任何具有可发布指令206的线程语境。如果没有,则进入默认的低功率休眠模式807。在一些实施例中,在进入低功率休眠模式之前,执行某些内务处理任务。例如,内务处理任务可以包括刷新来自缓冲器的未决事务或者完成长运行操作(例如除法)。低功率休眠模式可以被实施为任何功率减小状态。在一个实施例中,低功率休眠模式通过不执行任何流水线操作来降低功率。
流程然后返回块804,直到至少一个线程语境具有可发布指令为止。在可发布指令的情况下,如果需要,默认的低功率休眠模式被退出808。
在块810,配送调度器602基于线程语境的可发布746位、线程语境的PM_TC_priority以及线程语境的PM_TC_priority 652的循环位748来产生用于每个线程语境的指令206的DS_TC_priority208。流程跳至块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。
由此,图4示出本发明包括自动进入默认低功率休眠模式的技术。注意到,该模式是基于简单标准(即线程的阻断状态)而进入的。因此,不需要复杂的控制技术。还注意到,默认低功率休眠模式导致功率节约,但是没有降低处理器性能,因为所有线程已经在阻断状态中。
本发明的各种实施方式都是可能的。例如,在一种实施中,仅当所有单元都空闲而且不存在可运行的线程语境时,顶级时钟选通器(clock gater)才关闭时钟。在一个实施例中,公开了利用来自MIPS3234K处理器内核系列指令集的指令,在不满足以下条件中任何之一时可以运行线程语境:执行WAIT指令,执行YIELD指令,设置暂停位,没有设置闲置位,线程语境正等待线程间通信(ITC)存取。该实施例要求在放弃和ITC接口上的至少一些逻辑处于自激处理器时钟(例如gfclk)上,从而这些块中的外部活动能启动内核。
下面参照图5,其示出根据本发明的图2的策略管理器604和TC调度寄存器902的框图。
微处理器100包括用于每个线程语境的TC调度寄存器902。TC调度寄存器902是软件可编程的,并提供软件装置用于向策略管理器604提供线程调度提示。在一个实施例中,TC调度寄存器902包含在上面参照图2和表格1所讨论的协处理器0寄存器内,而且具体地说包含在策略管理器604中。TC调度寄存器902包括6个字段:TC_LEVEL_PARAM1 908,TC_LEVEL_PARAM2 906,TC_LEVEL_PARAM3 904,TC_RATE 912,OV 914,PRIO 916。在图5的实施例中,TC_LEVEL_PARAM1 908,TC_LEVEL_PARAM2 906,TC_LEVEL_PARAM3 904,TC_RATE912字段包括4个位,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指示线程语境的期望执行速率,即每单位时间完成的指令数目。在图5的实施例中,TC_RATE 912指明每16个时钟周期应当完成的线程的指令数目。尽管上面列出的逻辑在图5中只示出一次,但是该逻辑在策略管理器604中针对每个线程语境重复,以为每个线程语境产生PM_TC_block 654和PM_TC_priority 652信号并接收PM_TC_state642、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递减。由此,软件可以通过调整线程的TC调度寄存器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,该控制逻辑924基于TC_LEVEL918落入哪个虚拟水压范围内来产生PM_TC_priority 652。如通过图5的漏桶所示,如果TC_LEVEL 918的最高有效半字节高于TC_LEVEL_PARAM3 904值,则控制逻辑924产生的PM_TC_priority 652值为3(最高优先级);如果TC_LEVEL 918的最高有效半字节介于TC_LEVEL_PARAM3 904值和TC_LEVEL_PARAM2 906值之间,则控制逻辑924产生的PM_TC_priority 652值为2;如果TC_LEVEL 918的最高有效半字节介于TC_LEVEL_PARAM2 906值和TC_LEVEL_PARAM1 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字段编程的。此外,不同的线程可能需要不同的分辨率,即测量指令执行速率的时间段。也就是说,尽管一些线程可能不需要高的执行速率,但是其可能不希望超过最低时间段的指令执行。也就是说,线程需要特殊的服务质量。可以从图5及其解释看出,可以采用TC_LEVEL_PARAM904/906/908来完成每个线程所需要的分辨率。通过分配彼此相对接近的TC_LEVEL_PARAM 904/906/908,可以完成较高的分辨率;而通过分配彼此相对远离的TC_LEVEL_PARAM 904/906/908,就产生较低的分辨率。由此,通过调整针对每个线程语境的TC_LEVEL_PARAM 904/906/908以达到指令执行速率上需要的分辨率,软件可以由策略管理器604实现期望的服务质量。
如果设置了OV位914,则控制逻辑924忽略TC_LEVEL_PARAM 904/906/908、TC_RATE 912和TC_LEVEL 918的值,并产生等于在PRIO字段916中所指定的值的PM_TC_priority652信号上的值。这使得软件可以绕过漏桶策略,并直接控制一个或多个线程语境的优先级,如果需要的话。
在一个实施例中,如果TC_LEVEL 918饱和到对预定数量的时钟周期的最大值,则微处理器100发出中断以使软件可以以更高水平进行线程调度调整,特别是通过更改一个或多个TC调度寄存器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_priority 652输出都是相同的值。在另一实施例中,策略管理器604采用对时间分片线程调度策略,其中以时间分片方式对每个线程语境,对于一个线程语境,对于在该线程语境的TC调度寄存器902中所指定的多个连续时钟周期,PM_TC_priority 652输出被提高到最高优先级,然后对另一线程语境,对于在该线程语境的TC调度寄存器902中所指定的也许不同的多个连续时钟周期,PM_TC_priority 652输出被提高到最高优先级,等等。
在一个实施例中,微处理器100指令集包括FORK指令,用于分配可用线程语境和在新分配的线程语境中调度新线程的执行。在一个实施例中,当线程语境FORK是新线程语境时,父线程语境的TC_RATE 912在它自己和子线程语境之间平均分配,即新TC_RATE912是老TC_RATE 912除以2。其优点是防止线程语境要求比原始分配的更多的处理带宽。
从上可以看出,使调度器108分叉可以使包含在处理器内核606中的配送调度器602比较简单,这使得配送调度器602可以在面积和功率方面比较简单,并且将线程调度策略的特定于应用的复杂度放置在位于处理器内核606之外的策略管理器604中。这是很有利的,因为一些应用可能不需要复杂的策略管理器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。
虽然已经描述了本发明的各种实施例,但是应当理解它们是通过举例的方式而非限制的方式呈现的。计算机领域的技术人员应当理解在不脱离本发明精神和范围的情况下可以进行形式和细节上的各种更改。
例如,除了用硬件实施的低功率虚拟线程(例如在中央处理单元(CPU)、微处理器、微控制器、数字信号处理器、处理器内核、芯片上系统(SOC)或任何其他可编程器件内或与之连接)之外,实施还可以用例如在计算机可使用(例如可读)介质中安装的软件体现(例如计算机可读代码,程序代码,以任意方式安装的指令和/或数据,如源、对象或机器语言),该介质配置为存储所述软件。这些软件例如可以实现在此描述的装置和方法的功能、组装、模型化、仿真、描述和/或测试。例如,这可以通过采用通用编程语言(例如C、C++)、GDSII数据库、包括Verilog HDL、VHDL等等的硬件描述语言(HDL)或其它可用程序、数据库和/或电路(即示意图)捕获工具来完成。这些软件可以安装在任何公知的计算机可使用介质中,包括半导体、磁盘、光盘(例如CD-ROM、DVD-ROM等)和作为计算机数据信号体现在计算机可用(例如可读)传输介质中(例如载波或任何其他介质,包括数字、光的或模拟介质)。这样,软件可以通过包括互联网和企业内部网的通信网络传送。
可以理解,在此描述的装置和方法可以包含在半导体知识产权内核中,如微处理器内核(如体现为HDL)并在生产集成电路时转换为硬件。另外,在此描述的装置和方法可以用软件和硬件的组合来体现。由此,本发明不应当通过任何上述示例性实施例来限制,而是只跟据所附权利要求及其等价物来定义。

Claims (17)

1.一种计算系统中的功率管理方法,包括:
执行多个线程;
识别所述多个线程中所有线程何时被阻断;
响应于所述识别,自动进入默认的低功率休眠模式;
确定所述多个线程之一何时不再被阻断;以及
响应于所述确定,自动退出所述低功率休眠模式。
2.根据权利要求1所述的方法,其中所述识别包括识别被阻断的线程何时经历等待指令。
3.根据权利要求1所述的方法,其中所述识别包括识别被阻断的线程何时经历放弃指令。
4.根据权利要求1所述的方法,其中所述识别包括识别被阻断的线程何时经历阻断线程间通信(ITC)存取。
5.根据权利要求1所述的方法,其中所述识别包括识别被阻断的线程何时经历来自策略管理器的被停止的优先级请求。
6.根据权利要求1所述的方法,其中所述自动进入默认的低功率休眠模式包括进入等待状态而不发布等待指令。
7.根据权利要求1所述的方法,还包括在自动进入所述默认的低功率休眠模式之前执行内务处理。
8.一种处理器,包括:
执行多个线程的处理器内核;和
分叉的线程调度器,包括内部处理器内核部件和外部处理器内核部件,其中所述分叉的线程调度器识别所述多个线程中所有线程何时被阻断,并在此之后自动进入默认的低功率休眠模式。
9.根据权利要求8所述的处理器,其中所述分叉的线程调度器被配置为识别被阻断的线程何时经历等待指令。
10.根据权利要求8所述的处理器,其中所述分叉的线程调度器被配置为识别被阻断的线程何时经历放弃指令。
11.根据权利要求8所述的处理器,其中所述分叉的线程调度器被配置为识别被阻断的线程何时经历阻断线程间通信(ITC)存取。
12.根据权利要求8所述的处理器,其中所述分叉的线程调度器被配置为识别被阻断的线程何时经历来自所述外部处理器内核部件的被停止的优先级请求。
13.根据权利要求8所述的处理器,其中所述分叉的线程调度器被配置为进入所述默认的低功率休眠模式而不发布等待指令。
14.根据权利要求8所述的处理器,其中所述处理器被配置为在进入所述默认的低功率休眠模式之前执行内务处理功能。
15.一种计算机可读介质,包括可执行指令,所述指令用于:
限定处理器内核执行多个线程;和
指定包括内部处理器内核部件和外部处理器内核部件的分叉的线程调度器,其中所述分叉的线程调度器识别所述多个线程中所有线程何时被阻断,并此后自动进入默认的低功率休眠模式。
16.一种使计算机能够产生处理器的方法,包括:
选择可执行的指令,其中所述指令:
限定处理器内核执行多个线程;和
指定包括内部处理器内核部件和外部处理器内核部件的分叉的线程调度器,其中所述分叉的线程调度器识别所述多个线程中所有线程何时被阻断,并在此之后自动进入默认的低功率休眠模式;以及
将所述可执行指令通过网络发送到指定的计算机。
17.一种在传输介质中实现的计算机数据信号,包括:
用于使计算机用
执行多个线程的处理器内核;和
包括内部处理器内核部件和外部处理器内核部件的分叉的线程调度器,
来描述处理器的可执行指令,其中所述分叉的线程调度器识别所述多个线程中所有线程何时被阻断,并在此之后自动进入默认的低功率休眠模式。
CN200680016774.7A 2005-04-14 2006-03-28 用于多线程处理器中自动低功率模式调用的装置和方法 Active CN101542412B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/107,492 2005-04-14
US11/107,492 US7627770B2 (en) 2005-04-14 2005-04-14 Apparatus and method for automatic low power mode invocation in a multi-threaded processor
PCT/US2006/011327 WO2006113068A2 (en) 2005-04-14 2006-03-28 Apparatus and method for automatic low power mode invocation in a multi-threaded processor

Publications (2)

Publication Number Publication Date
CN101542412A true CN101542412A (zh) 2009-09-23
CN101542412B CN101542412B (zh) 2016-01-20

Family

ID=37109964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680016774.7A Active CN101542412B (zh) 2005-04-14 2006-03-28 用于多线程处理器中自动低功率模式调用的装置和方法

Country Status (6)

Country Link
US (1) US7627770B2 (zh)
EP (1) EP1869536B1 (zh)
JP (1) JP5081143B2 (zh)
KR (1) KR101100470B1 (zh)
CN (1) CN101542412B (zh)
WO (1) WO2006113068A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541661A (zh) * 2010-12-02 2012-07-04 微软公司 等待地址同步接口
CN102541511A (zh) * 2010-12-30 2012-07-04 世意法(北京)半导体研发有限责任公司 用于可乱序执行指令的处理器的流水线排空
CN102955555A (zh) * 2011-08-19 2013-03-06 苏州简约纳电子有限公司 一种多线程处理方法和装置
CN102955716A (zh) * 2011-08-19 2013-03-06 苏州简约纳电子有限公司 一种多线程处理器和处理方法
CN103336571A (zh) * 2013-06-13 2013-10-02 中国科学院计算技术研究所 一种降低多线程程序功耗的方法及系统
CN106233225A (zh) * 2014-04-22 2016-12-14 高通股份有限公司 用于控制处理器核心的电力模式的基于延时的电力模式单元以及相关方法及系统
CN114721726A (zh) * 2022-06-10 2022-07-08 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961595B2 (en) 2002-08-08 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for operating mobile nodes in multiple states
US7363039B2 (en) 2002-08-08 2008-04-22 Qualcomm Incorporated Method of creating and utilizing diversity in multiple carrier communication system
US8190163B2 (en) 2002-08-08 2012-05-29 Qualcomm Incorporated Methods and apparatus of enhanced coding in multi-user communication systems
WO2004075442A2 (en) 2003-02-19 2004-09-02 Flarion Technologies, Inc. Methods and apparatus of enhanced coding in multi-user communications systems
US8593932B2 (en) 2003-05-16 2013-11-26 Qualcomm Incorporated Efficient signal transmission methods and apparatus using a shared transmission resource
US7925291B2 (en) 2003-08-13 2011-04-12 Qualcomm Incorporated User specific downlink power control channel Q-bit
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
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
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
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
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
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
US20070174411A1 (en) 2006-01-26 2007-07-26 Brokenshire Daniel A Apparatus and method for efficient communication of producer/consumer buffer status
US20070204268A1 (en) * 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US7721127B2 (en) * 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor
PL2515587T3 (pl) * 2007-01-11 2021-04-19 Qualcomm Incorporated Stosowanie DTX i DRX w systemie łączności bezprzewodowej
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US8214662B2 (en) * 2007-04-09 2012-07-03 Panasonic Corporation Multiprocessor control unit, control method performed by the same, and integrated circuit
JP2008276331A (ja) * 2007-04-25 2008-11-13 Toshiba Corp マルチプロセッサの制御装置及び方法
WO2008155806A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited バリア同期方法、装置、及びマルチコアプロセッサ
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8452947B2 (en) 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8015379B2 (en) 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8127080B2 (en) * 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8788795B2 (en) 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8225120B2 (en) * 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8612977B2 (en) 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8640141B2 (en) 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8250396B2 (en) 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8386822B2 (en) 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8880853B2 (en) * 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8261276B2 (en) * 2008-03-31 2012-09-04 International Business Machines Corporation Power-efficient thread priority enablement
US8458722B2 (en) * 2008-06-09 2013-06-04 International Business Machines Corporation Thread selection according to predefined power characteristics during context switching on compute nodes
US8156287B2 (en) * 2009-01-15 2012-04-10 International Business Machines Corporation Adaptive data prefetch
US8230201B2 (en) 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8082315B2 (en) 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8145723B2 (en) 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8677361B2 (en) * 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
CA2843320A1 (en) 2011-07-25 2013-01-31 Servergy, Inc. Method and system for building a low power computer system
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
US9317297B2 (en) * 2012-09-27 2016-04-19 Intel Corporation Replay execution of instructions in thread chunks in the chunk order recorded during previous execution
EP3019952A4 (en) 2013-07-09 2017-03-29 NXP USA, Inc. Method and apparatus for controlling an operating mode of a processing module
US10043230B2 (en) * 2013-09-20 2018-08-07 Nvidia Corporation Approach to reducing voltage noise in a stalled data pipeline
US9965320B2 (en) 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US9619012B2 (en) * 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
KR102154080B1 (ko) 2014-07-25 2020-09-09 삼성전자주식회사 전력 관리 시스템, 이를 포함하는 시스템 온 칩 및 모바일 기기
US9898409B2 (en) * 2014-10-09 2018-02-20 The Regents Of The University Of Michigan Issue control for multithreaded processing
CN115100016A (zh) * 2015-06-10 2022-09-23 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
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
WO2018182813A1 (en) * 2017-03-31 2018-10-04 Mcafee, Llc Asynchronous data objects for an event driven programming language
US11042213B2 (en) 2019-03-30 2021-06-22 Intel Corporation Autonomous core perimeter for low power processor states

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US6308279B1 (en) * 1998-05-22 2001-10-23 Intel Corporation Method and apparatus for power mode transition in a multi-thread processor
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6594755B1 (en) 2000-01-04 2003-07-15 National Semiconductor Corporation System and method for interleaved execution of multiple independent threads
US7137117B2 (en) * 2000-06-02 2006-11-14 Microsoft Corporation Dynamically variable idle time thread scheduling
US7043538B2 (en) 2000-07-06 2006-05-09 Nms Communication Corporation Thin instant messaging proxy interface with persistent sessions
KR100613201B1 (ko) * 2000-08-28 2006-08-18 마이크로코넥트 엘엘씨 씨피유 사용량 측정 방법
US6687838B2 (en) * 2000-12-07 2004-02-03 Intel Corporation Low-power processor hint, such as from a PAUSE instruction
US6986066B2 (en) * 2001-01-05 2006-01-10 International Business Machines Corporation Computer system having low energy consumption
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7318164B2 (en) * 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
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
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
US7194385B2 (en) 2002-11-12 2007-03-20 Arm Limited Performance level setting of a data processing system
WO2004049152A1 (en) * 2002-11-26 2004-06-10 Mplicity Ltd. A processor capable of multi-threaded execution of a plurality of instruction-sets
AU2003283550A1 (en) 2003-01-13 2004-08-10 Arm Limited Data processing performance control
US7152170B2 (en) * 2003-02-20 2006-12-19 Samsung Electronics Co., Ltd. Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
US7401207B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7788669B2 (en) * 2003-05-02 2010-08-31 Microsoft Corporation System for isolating first computing environment from second execution environment while sharing resources by copying data from first portion to second portion of memory
US7448037B2 (en) * 2004-01-13 2008-11-04 International Business Machines Corporation Method and data processing system having dynamic profile-directed feedback at runtime
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US20060168254A1 (en) * 2004-11-01 2006-07-27 Norton Scott J Automatic policy selection
US7526661B2 (en) * 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7506140B2 (en) 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
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
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
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
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
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
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
US7434072B2 (en) * 2005-04-25 2008-10-07 Arm Limited Integrated circuit power management control

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782674B2 (en) 2010-12-02 2014-07-15 Microsoft Corporation Wait on address synchronization interface
CN102541661B (zh) * 2010-12-02 2016-05-18 微软技术许可有限责任公司 实现等待地址同步接口的方法和设备
CN102541661A (zh) * 2010-12-02 2012-07-04 微软公司 等待地址同步接口
CN102541511B (zh) * 2010-12-30 2015-07-08 世意法(北京)半导体研发有限责任公司 用于可乱序执行指令的处理器的流水线排空
CN102541511A (zh) * 2010-12-30 2012-07-04 世意法(北京)半导体研发有限责任公司 用于可乱序执行指令的处理器的流水线排空
CN102955716A (zh) * 2011-08-19 2013-03-06 苏州简约纳电子有限公司 一种多线程处理器和处理方法
CN102955555A (zh) * 2011-08-19 2013-03-06 苏州简约纳电子有限公司 一种多线程处理方法和装置
CN102955716B (zh) * 2011-08-19 2016-05-18 苏州简约纳电子有限公司 一种多线程处理器和处理方法
CN103336571A (zh) * 2013-06-13 2013-10-02 中国科学院计算技术研究所 一种降低多线程程序功耗的方法及系统
CN103336571B (zh) * 2013-06-13 2016-02-03 中国科学院计算技术研究所 一种降低多线程程序功耗的方法及系统
CN106233225A (zh) * 2014-04-22 2016-12-14 高通股份有限公司 用于控制处理器核心的电力模式的基于延时的电力模式单元以及相关方法及系统
CN106233225B (zh) * 2014-04-22 2017-10-10 高通股份有限公司 用于控制处理器核心的电力模式的基于延时的电力模式单元以及相关方法及系统
CN114721726A (zh) * 2022-06-10 2022-07-08 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN114721726B (zh) * 2022-06-10 2022-08-12 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备

Also Published As

Publication number Publication date
US7627770B2 (en) 2009-12-01
KR101100470B1 (ko) 2011-12-29
JP2008538436A (ja) 2008-10-23
JP5081143B2 (ja) 2012-11-21
KR20070121840A (ko) 2007-12-27
EP1869536A2 (en) 2007-12-26
WO2006113068A3 (en) 2009-04-09
EP1869536A4 (en) 2010-03-03
US20060236136A1 (en) 2006-10-19
EP1869536B1 (en) 2012-03-21
WO2006113068A2 (en) 2006-10-26
CN101542412B (zh) 2016-01-20

Similar Documents

Publication Publication Date Title
CN101542412B (zh) 用于多线程处理器中自动低功率模式调用的装置和方法
US7600135B2 (en) Apparatus and method for software specified power management performance using low power virtual threads
US7613904B2 (en) Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7752627B2 (en) Leaky-bucket thread scheduler in a multithreading microprocessor
US7657891B2 (en) Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7853777B2 (en) Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US8078840B2 (en) Thread instruction fetch based on prioritized selection from plural round-robin outputs for different thread states
EP1658563B1 (en) Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US7664936B2 (en) Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7509447B2 (en) Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US20060179283A1 (en) Return data selector employing barrel-incrementer-based round-robin apparatus
Kissell MIPS MT: A multithreaded RISC architecture for embedded real-time processing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: BRIDGE DECK LLC

Free format text: FORMER OWNER: MIPS TECHNOLOGIES INC.

Effective date: 20141208

Owner name: ARM FINANCE OVERSEAS LTD.

Free format text: FORMER OWNER: BRIDGE DECK LLC

Effective date: 20141208

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

Effective date of registration: 20141208

Address after: cambridge

Applicant after: ARM Overseas Finance Co.,Ltd.

Address before: American New Jersey

Applicant before: Overpass Bridge Co.,Ltd.

Effective date of registration: 20141208

Address after: American New Jersey

Applicant after: Overpass Bridge Co.,Ltd.

Address before: American California

Applicant before: MIPS Technologies, Inc.

C14 Grant of patent or utility model
GR01 Patent grant