CN1112636C - 在多线程处理器中选择线程切换事件的方法和装置 - Google Patents

在多线程处理器中选择线程切换事件的方法和装置 Download PDF

Info

Publication number
CN1112636C
CN1112636C CN98810356A CN98810356A CN1112636C CN 1112636 C CN1112636 C CN 1112636C CN 98810356 A CN98810356 A CN 98810356A CN 98810356 A CN98810356 A CN 98810356A CN 1112636 C CN1112636 C CN 1112636C
Authority
CN
China
Prior art keywords
thread
processor
register
instruction
switching controls
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN98810356A
Other languages
English (en)
Other versions
CN1276888A (zh
Inventor
约翰·M·博肯哈根
理查德·J·埃克梅亚
威廉·T·弗林
谢尔登·B·莱文斯坦
安德鲁·H·沃特灵
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1276888A publication Critical patent/CN1276888A/zh
Application granted granted Critical
Publication of CN1112636C publication Critical patent/CN1112636C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • 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, 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

Abstract

在数据处理系统(10)中完成计算机处理操作的系统和方法包括多线程处理器(100)和线程切换逻辑(400)。多线程处理器能在两个或更多个能被独立执行的指令线程之间切换。每个线程在线程状态寄存器(440)中有一个决定于它的执行状态的相应状态。线程切换逻辑包含一个线程切换控制寄存器(410),存储将发生一线程的条件。线程切换逻辑有一超时寄存器(430),当在多线程处理器中活动线程的执行超过了一个可编程的时间段时,该超时寄存器迫使发生一个线程切换。线程切换逻辑还有一个前进计数寄存器(420)以防止在多线程处理器中在线程之间返复地进行线程切换。线程切换逻辑还响应于一个能改变不同线程优先级的软件管理器(460),从而替代线程切换事件。

Description

在多线程处理器中选择 线程切换事件的方法和装置
本发明涉及下列美国专利申请,这些申请的主题在此被纳入作为参考:(1)美国专利申请,题为“多线程处理器系统中的线程切换控制”,系列号08/957,002,于1997年10月23日与本申请同时递交;(2)美国专利申请,题为“多线程处理器中保证前进的装置和方法”,系列号08/956,875,于1997年10月23日与本申请同时递交;(3)美国专利申请,题为“在多线程处理器中改变线程优先级”,系列号08/958,718,于1997年10月23日与本申请同时递交;(4)美国专利申请,题为“在多线程处理器中强行线程切换的方法和装置”,系列号08/956,577,于1997年10月23日递交,与本申请同时递交,(5)美国专利申请,题为“在多线程处理器中后台完成指令及相关的取请求”,系列号773,572,于1996年12月27日递交;(6)美国专利申请,题为“多入口全相关过渡高速缓存”,系列号761,378,于1996年12月9日递交;(7)美国专利申请,题为“对从命令源到命令容纳点的命令设定优先级和路由的方法和装置”,系列号761,380,于1996年12月9日受理;(8)美国专利申请,题为“命令追踪处理过程的方法和装置”,系列号761,379,于1996年12月9日递交;(9)美国专利申请,题为“通过减小存储器访问等待延迟以增强数据处理系统中多线程操作的方法和系统”,系列号473,692,于1995年6月7日递交;(10)美国专利5,778,243号,题为“存储器的多线程单元”,1998年7月7日发布。
一般而言,本发明涉及用于计算机数据处理系统的一种改进的方法和装置,具体而言,本发明涉及在处理器硬件中实现的一种改进的高性能多线程计算机数据处理系统和方法。
现代计算机的基本结构包括与外部世界进行信息通信的外围装置;这些外围装置可以是键盘、监视器、磁带驱动器、与网络连接的通信线路等。在计算机的基本结构中还包括从外部世界接收这种信息,处理这种信息及向外部世界发布这种信息所必须的硬件,包括总线(bus)、存储器单元、输入/输出(I/O)控制器、存储装置、以及至少一个中央处理单元(CPU)等。CPU是系统的大脑。它执行包括计算机程序的指令,指挥其他系统部件的操作。
从计算机硬件的角度看,大多数系统以基本相同的方式操作。处理器实际上是快速完成非常简单的操作,如算术和逻辑比较以及从一地到另一地移动数据。指挥计算机完成大量这种简单操作的程序给人一种错觉,似乎计算机在做复杂的事情。用户感觉到的计算机系统的新的或改善的能力实际上都可能是机器完成同样的简单操作,但快得多。所以,对计算机系统的不断改进需要使这些系统比以往更快。
对计算机系统总速度的一种度量,也称作通过量,是由每单位时间完成的运算次数来度量的。从概念上讲,对系统速度的所有可能的改进中最简单的是提高各组成部分的时钟速度,特别是处理器的时钟速度。于是,如果每个部件以两倍速度运行而工作方式完全不变,则系统将在一半时间内完成给定任务。多年以前由分离元件构成的计算机处理器通过缩小尺寸和减少元件数量使其运行速度显著加快;最终使整个处理器作为一个集成电路组装到单个芯片上。这种尺寸减小使有可能提高处理器的时钟速度,从而提高系统速度。
尽管由集成电路得到了速度的巨大改进,但仍然存在对更快计算机系统的需求。硬件设计者们通过更大规模的集成和其他技术、进一步减小电路尺寸,已能进一步改善速度。然而,设计者们认为,物理尺寸的减小不能无限地继续下去,而且继续提高处理器时钟速度也是有限的。所以,为进一步改善计算机系统的总体速度,其注意力已指向其他途径。
不改变时钟速度,利用多处理器仍能改善系统速度。组装在集成电路芯片上的单个处理器成本适中,使得使用多处理器成为实际可行的。使用从属处理器,通过把工作从CPU卸载到从属处理器,相当大地改善了系统速度。例如,从属处理器常规地执行重复的和单一专用目的的程序,例如输入/输出装置通信和控制。还可能把多个CPU放入单一计算机系统,典型情况是同时服务于多用户的基于主机的系统。每个不同的CPU能代表不同的用户单独执行不同的任务,从而提高系统同时执行多个任务的总体速度。然而,要改善单个任务(例如一个应用系统)的执行速度则困难得多。在多个CPU当中协调各功能的执行和发送结果,这是一个需要技巧的事。对于从属I/O处理器,这不那么困难,因为功能是预先确定的和有限的,然而对于执行通用应用程序的多CPU,要协调各功能则困难得多,部分原因是设计者们事先不知道程序的详细情况。大多数应用程序遵循由处理器完成的单一路径或步骤流程。但有时可能打破这一单一路径,变成多个平行的路径,这样做的通用性应用还处于研究之中。一般地说,把一个长的任务分配成较短的任务让多处理器平行处理是由根据每个具体情况来编写代码的软件工程师完成的。这种专门特定方案对于执行那些不一定会重复或不一定可预测的商业事务是特别有问题的。
这样,尽管多处理器能改善总体系统性能,但仍有许多理由要改善单个CPU的速度。如果CPU时钟速度是给定的,但通过增加每个时钟周期的平均运算次数,仍能进一步提高CPU速度,即增加每秒执行的运算次数。高性能单芯片微处理器的一般结构是简化指令集计算机(RISC)结构,其特点是一个快速执行的常用指令小型简化集合,即前面提到的那些快速完成的简单运算。随着半导体技术的进步,RISC结构的目标已经是开发能在每个机器时钟周期执行一个或多个指令的处理器。增加每个时钟周期执行的平均运算次数的另一途径是修改CPU内部的硬件。这一通过量度量,即每条指令的时钟周期数,通常用于表征高性能处理器的结构的性能。指令流水线和高速缓存存储器是能实现这一点的计算机结构特征。流水线指令执行允许在完成先前发出的指令之前开始执行其后的指令。高速缓存存储器存储经常使用的以及靠近存储器的其他数据,并在大多数情况下允许指令继续执行而无需等待主存储器的完全访问时间。利用向前看硬件找出要平行执行的指令,从而多执行单元也已表现出某些改进。
在超标量(superscalar)计算机和甚长指令字(VLIW)计算机中能进一步提高传统RISC处理器的性能,这两种计算机在每个处理器周期平行地执行多于1条指令。在这种结构中提供了多功能单元或多执行单元以平行地运行多个流水线。在超标量结构中,指令可以按顺序完成和不按顺序完成。按顺序完成的意思是在其前面已安排的所有指令已经完成之前没有任何指令能完成。不按顺序完成的意思是允许在其前面的所有指令完成之前来完成该指令,只要能满足预先定义的规则即可。
为了在超标量系统中按顺序和不按顺序完成指令,在某些环境下流水线将停止。如果一条指令依赖于先前分配的未完成指令的结果,则会造成流水线停止。例如,一些指令所依赖的加载/存储指令中所需数据未在高速缓存中,即高速缓存缺失(miss),则在高速缓存中能得到数据之前便不能完成这些指令。在高速缓存中保持为继续执行所需的数据,并维持高命中率,即对数据的请求次数与在高速缓存中准备好可用数据的次数之比,对于特别是涉及大数据结构的计算而言,可不是小事。高速缓存缺失能造成流水线停止达几个周期,而且如果在大部分时间里不能得到数据,则存储器等待时间总量将是严重的。虽然主存储器所用存储器装置的速度在变得更快,但这种存储器芯片和高端处理器之间的这种速度差距都不断增大。于是,在当前的高端处理器设计中有大量执行时间量花费在等待解决高速缓存缺失,而这些存储器访问延迟用去了处理器执行时间中越来越多的部分。
改进CPU内硬件效率的又一种技术是把处理任务分配成可独立执行的指令序列,称作线程(thread)。这一技术涉及把一较大任务分配成较小的任务而由不同的处理器执行,唯其其中这些线程是由同一处理器执行。于是,当由于多种理由中的任何一个使CPU不能继续处理或执行这些线程之一时,该CPU便切换到去执行另一线程。在计算机结构领域中定义的术语“多线程(multithreading)”不同于该术语在软件方面的应用,在软件使用中该术语的意思是一个任务分成多个相关线程。在结构定义中,线程可以是独立的。所以,“硬件多线程”常用于区分该术语的两种应用。本发明引入术语“多线程”,含有硬件多线程的意思。
当对当前线程检测到流水线停止条件时,多线程允许处理器的流水线在不同的线程上作有用的工作。多线程还允许在检测到当前线程的停止条件时让实现非流水线结构的处理器为一单独的线程去做有用的工作。有两种基本的多线程形式。一种传统的形式是在处理器中保持N个线程或状态,并在逐个周期的基础上使这些线程相互交错。这要消除所有流水线的依赖关系,因为在单一线程中的指令是彼此分离的。多线程的另一种形式,即本发明中要考虑的一种形式,是对某些长等待时间事件交错其线程。
多线程的传统形式涉及对每个线程复制处理器寄存器。例如,以商品名PowerPCTM售出的实现该结构的处理器,为实现多线程,处理器必须维持N个状态以运行N个线程。于是下列寄存器被复制N次:通用寄存器、浮点寄存器、条件(condition)寄存器、浮点状态和控制寄存器、计数寄存器、链路寄存器、异常寄存器、保存/恢复寄存器、以及专用寄存器。再有,特殊的缓存器,如段后备缓存器,可被复制或每个入口可以用线程号作标记,如果不如此做,则可在每次线程切换时清仓。还有,一些分支预测机制,例如相关寄存器和返回堆栈,也应被复制。幸运的是,不需要复制处理器的某些更大的功能,例如一级指令高速缓存(L1I-高速缓存)、一级数据高速缓存(L1D-高速缓存)、指令缓存器、存储队列、指令调度器、功能或执行单元、流水线、翻译后备缓存器(TLB)、以及分支历史表。当一个线程遇到延迟时,处理器迅速切换到另一线程。这一线程的执行复盖了在第一线程上的存储器延迟。
现有的多线程技术在一高速缓存缺失或一存储器查访上描述切换线程。在“Sparcle:大规模多处理器的一种变革性设计”(Agarwal等,IEEE微(Micro)卷13、No.3,pp48-60,1993年6月)中回顾了这一技术的主要实例。如在RISC体系结构中应用的那样,通常用于支持功能调用的多寄存器集被修改成用于维持多线程。8个重叠的寄存器窗口被修改成4个不重叠的寄存器集,其中每个寄存器集是为捕获和消息处理所作的保留。这一系统揭示出一个线程切换,它发生在每次远程存储器请求中所造成的一级高速缓存缺失时。尽管这一系统代表了技术上的一种进步,但现代处理器设计经常利用附加在处理器上的多级高速缓存和高
速存储器。该处理器系统利用某种公知的算法以确定每级高速缓存内将加载的主存储器的那个部分,这样,每当发生存储器访问时,如果它不在第一级高速缓存中,则处理器必须试图从第二级或更高级高速缓存中得到那个存储器访问内容。
授予Chesson等人的美国专利5,524,250号,题为“利用专属通用寄存器处理多个线程的中央处理单元和提供对这些寄存器访问的屏蔽寄存器”,是针对数据流和协议处理的问题。Chesson等人提供了对通用和专用寄存器的多重设置,以改善CPU在不同环境之间切换的速度。Chesson等人还提供了一种流水线控制器、调度器(scheduler)、事件系统、和屏蔽寄存器,它们有助于有效的线程调度、分支延迟和消除存储后的延迟片,这些都提高了性能和带宽。
这样,本发明的一个目标是提供一种改进的数据处理系统,它能利用多线程数据处理系统中实现的硬件逻辑和寄存器在一多级高速缓存系统中减小由于存储器等待时间造成的延迟。
本发明通过提供一个能在两个指令线程之间切换执行的多线程处理器和在带有可选的对线程切换条件进行软件改写的硬件寄存器中实现的线程切换逻辑来实现这一目标。处理各种指令线程的各种状态允许优化处理器在各线程当中的使用。当处理器为第一线程从各种存储器部件,例如第一线程的高速缓存、存储器、外部I/O、直接存取存储器,检索必要的数据和/或指令时,允许该处理器去执行第二指令线程从而提高对处理器的利用程度,否则它会是空闲的。线程线换的条件对于每个线程可以是不同的,或者可以通过利用一个软件线程控制管理器在处理过程中改变线程切换条件。
本发明提供了一个硬件线程切换控制寄存器,它所包含的位能被启动去实现这些事件并使多线程处理器切换线程。这一硬件寄存器的又一好处是改善处理器性能,因为它比软件线程切换控制快得多。
本发明的另一方面是一个有多线程处理器的计算机系统,当该多线程处理器遇到多个处理器等待时间事件之一时能在至少两个指令线切换处理。该计算机系统还有至少一个在操作上与多线程处理器相连的线程状态寄存器,以存储指令线程的状态,其中当处理器把处理切换到每个线程时每个指令线程的状态发生变化。该系统还有至少一个在操作上与线程状态寄存器及多线程处理器相连的线程切换控制寄存器,以存储多个线程切换控制事件,这些线程切换控制事件由设置相应的多个使能位来使其生效。该计算机系统还包含多个,把多线程处理器连到多个存储器部件的内部连接。多线程处理器对任何一个存储器部件的访问都会引起一个处理器等待时间事件,本发明还有至少一个,把多线程处理器连接到外部存储器装置、通信装置、计算机网络、或输入/输出装置的外部连接,其中由多线程处理器访问任何这些装置或网络也会引起多个处理器等待时间事件。当由于一个处理器等待时间事件使多线程处理器中正在执行的一个线程不能继续执行时而且当那个处理器等待时间事件是一个其位有效的线程切换控制事件时,多线程处理器把执行切换到另一个线程。
线程切换控制寄存器有多个位,每位唯一地与这多个线程切换控制事件之一相关联,如果这些位中有一位被置为有效,则与该位相关联的线程切换控制事件使多线程处理器从一个指令线程切换到另一个指令线程。线程切换控制寄存器是可编程的。再有。可由操作软件或线程之一中的指令动态地改变一特定位的有效性状态(enablement)。
计算机处理系统可以有不只一个线程切换控制寄存器,其中一个线程切换控制寄存器的位值不同于所述另一个所述线程切换控制寄存器的位值。
通常,可以有多个线程切换控制事件,例如,由下列中至少一个造成的数据缺失:L1-数据高速缓存、L2高速缓存、穿过双字边界的数据存储,或由下列中至少一个造成的指令缺失:L1-指令高速缓存、翻译后备缓存器,或者由主存储器造成的数据和/或指令缺失,或数据和/或指令的地址翻译错。访问处理器外部的I/O装置或访问另一处理器也可能是线程切换控制事件。其他线程切换控制事件包含前进计数和超时时段,前进计数是所述多个线程之一从一个的没有执行多个线程之一任何指令的多线程处理器切换出来的次数,而超时时段是指在此期间至少一个处理器没有做有用的工作。
本发明的计算机处理系统包含处理多个指令线程的装置;指示何时由于线程之一遇到处理器等待时间事件而使处理装置停止的装置;寄存多个线程切换控制事件的装置;以及确定该处理器等待时间事件是否为多个线程切换控制事件之一的装置。该处理系统可能还包含在处理器等待时间事件是一线程切换控制事件时使处理装置能把处理切换到另一线程的装置。
本发明还是确定线程切换控制寄存器内容的方法,包含以下步骤:对由于处理器等待时间事件使多线程处理器停止的第一个处理器周期数进行计数和对多线程处理器把第一指令线程的处理切换到第二指令线程所需的第二个处理器周期数进行计数,然后,如果第一个数大于第二个数则通过设置线程切换控制寄存器中的一个使能位把该处理器等待时间事件指定为一个线程切换控制事件。然后,如果该使能位是有效的,则该方法包含当多线程处理器遇到该线程切换控制事件而且如果使能位为有效时,输出一个信号以切换线程。
本发明的计算机处理方法还包含如下步骤:把线程的状态存储到线程状态寄存器中和把多个线程切换控制事件存储到线程切换控制寄存器中。然后,当线程状态变化时,向线程状态寄存器输出一个信号,并把该变化了线程的状态与多个线程切换控制事件作比较。如果这变化了的状态是由一线程切换控制事件造成的,则向多线程处理器发出一个信号以把执行从该线程切换出去。
从下面对最佳实施例及附图的详细描述,将清楚看出本发明的其他目标、特性和特征;其结构的相关元件的方法、操作和功能;部件的组合;以及制造的经济方面,所有这些都构成本发明的一部分,其中在各图中相似参考数字标明相应的部件。
然而,参考下文中结合附图阅读示例性实施例的详细描述,将会最好地理解发明本身及其最佳使用方式,以及其他目标和优点,其中,
图1是能实现其中描述的发明的计算机系统方框图。
图2显示根据本发明的多线程数据处理系统的高层次方框图。
图3显示图2的存储控制单元的方框图。
图4显示图2的线程切换逻辑、存储控制单元及指令单元的方框图。
图5显示当线程遇到图4所示不同线程切换事件时该线程状态的变化。
图6是本发明的前进计数的流程图。
现在参考附图,具体参考图1,图中描述了计算机数据处理系统10的高极方框图,该系统可用于实现本发明的方法和系统。能利用本发明的计算机数据处理系统10的主要硬件及相互连接示于图1。用于处理指令的中央处理单元(CPU)100与高速缓存120、130及150相连。指令高速缓存150存储供CPU 100执行的指令。数据高速缓存120存储CPU100所用数据,而高速缓存130能存储由CPU 100使用的数据和指令二者,例如高速缓存130能是一个L2高速缓存。高速缓存与主存储器140中的随机存取存储器通信。CPU 100和主存储器140还经由总线接口152与系统总线155通信。各种输入/输出处理器(IOP)160-168附加在系统总线155上并支持与各种存储装置及输入/输出(I/O)装置通信,例如直接存取存储装置(DASD)170、带驱动器172、远程通信线路174、工作站176、及打印机178。应该理解,图1是要在高一级上描述计算机数据处理系统10的代表性组成部件,这些组成部件的数量和类型可以变化。
在CPU 100内部,处理器核110包括专门化的功能单元,它们每个完成基本的操作,如对指令排序、执行涉及整数的运算、执行涉及实数的运算、在可编址存储器和逻辑寄存器阵列之间传送数值。图2显示处在计算机数据处理系统10的其他组成部件环境中的处理器核110的细节。在一个最佳实施例中,数据处理系统10的处理器核110是一个单个集成电路、构成流水线的超标量微处理器,它可利用任何计算机结构实现,如以商品名PowerPCTM出售的RISC处理器系列;例如由IBM出售的PowerPCTM 604微处理器芯片。
如下文中要讨论的那样,数据处理系统10最好包括各种单元、寄存器、缓存器、存储器及其他部分,它们都最好由集成电路构成。应该理解,在图中各数据路径已被简化;在实际上,有许多单独的和平行的数据路径进出各部件。此外,与其中描述的发明关系不密切的各种部件已被略去,但应该理解,处理器含有额外的单元用于额外的功能。数据处理系统10可根据简化指令集计算(RISC)技术或其他计算技术进行操作。
如图2所示,数据处理系统10的处理器核100最好包括一个一级数据高速缓存(L1D-高速缓存)120,一个二级L2高速缓存130,一个主存储器140,以及一个一级指令高速缓存(L1I-高速缓存)150,所有这些都在操作上利用各种总线连接连到存储控制单元200。如图1中所示,存储控制单元200包括用于互连L1D-高速缓存120和L2高速缓存130的过渡高速缓存210、主存储器140、以及多个执行单元。L1D-高速缓存120和L1I-高速缓存150最好作为处理器100的一部分在芯片上提供,而主存储器140和L2高速缓存130可在芯片外提供。存储器系统140准备用于代表随机存取主存储器(它可以在处理器核100内部,也可以不在)以及在处理器核100外部的其他数据缓存器和高速缓存(如果有的话),以及其他外部存储器,例如DASD 170、带驱动器172及工作站176,如图1中所示。L2高速缓存130最好是比主存储器140速度更高的存储器系统,通过把选定的数据存储在L2高速缓存130中,能将由于访问主存储器140而发生的存储器等待时间减至最小。如图1所示,L2高速缓存130和主存储器140经由存储控制单元200直接连至L1I-高速缓存150和指令单元220二者。
来自L1I-高速缓存150的指令最好输出到指令单元220,根据本发明的方法和系统,指令单元220控制由各种子处理器单元(如分支单元260、定点单元270、存储控制单元200、浮点单元280以及其他由数据处理系统10的结构指定的单元)执行多个线程。除了图1中描述的各种执行单元外,本领域技术人员会理解,现代超标量微处理器系统常常包括每个这种执行单元的多种版本,可以增加它们而不离开本发明的实质和范围。这些单元大多数具有来自各种寄存器(如通用寄存器GPR 272、浮点寄存器FPR 282)的操作数信息,作为输入源操作数信息。此外,可以利用多个专用寄存器SPR 274。如图2所示,存储控制单元200和过渡高速缓存210直接与通用寄存器272及浮点寄存器282相连。通用寄存器272与专用寄存器274相连。
在只有这个多线程处理器100才有的各功能硬件单元当中,是线程切换逻辑400和过渡高速缓存210。线程切换逻辑400含有各种寄存器,它们确定哪个线程将是活动的或执行的线程。线程切换逻辑400在操作上与存储控制单元200、执行单元260、270和280、以及指令单元220相连。在存储控制单元200内部的过渡高速缓存210必须能实现多线程。存储控制单元200和过渡高速缓存210最好允许每线程至少一个未完成的数据请求。这样,当第一线程响应于例如L1D-高速缓存缺失的发生而被挂起时,第二线程将能访问L1D-高速缓存以得到那里存在的数据。如果这第二线程也造成L1D-高速缓存缺失,则将发出另一个数据请求,这样在存储控制单元200和过渡高速缓存210中必须保持多个数据请求。过渡缓存210最好是递交美国专利申请系列号08/761,378的过渡高速缓存,该申请于1996年12月9日递交,题为“多入口全相关过渡高速缓存”,其中作为参考引入。存储控制单元200、执行单元260、270和280以及指令单元220都在操作上与线程切换逻辑400相连。由它确定要执行哪个线程。
如图2所示,在存储控制单元200和指令单元220之间提供了总线205,用于例如把数据请求传送给存储控制单元200和把L2高速缓存130缺失传送给指令单元220。再有,提供了一个翻译后备缓存器TLB 250,它含有虚拟到实际地址映射。虽然在本发明中未予说明,但可以提供各种附加的高级存储器映射缓存器,如段后备缓存器,它的工作方式与翻译后备缓存器250相同。
图3更详细地显示存储控制单元200,如它的名称表明的那样,这一单元控制从各种存储单元输入和输出的数据和指令,它们包括各种高速缓存、缓存器以及主存储器。如图3所示,存储控制单元200包括过渡高速缓存210,它在功能上与L1D-高速缓存120、多路复用器360、L2高速缓存130以及主存储器140相连。再有,过渡高速缓存210从排序器350接收控制信号。排序器350包括多个排序器,最好是3个,用于处理指令和/或数据的取请求。排序器350还向过渡高速缓存210及L2高速缓存130输出控制信号,并对主存储器140收、发控制信号。
图3所示存储控制单元200中的多路复用器360从L1D-高速缓存120、过渡高速缓存210、L2高速缓存130及主存储器140接收数据,如果数据是要存储到存储器的话,则还从执行单元270和280接收数据。多路复用器360对来自这些源的数据进行选择,并响应于一个从排序器350收到的选择控制信号,把数据输出到L1D-高速缓存120或执行单元。再有,如图3所示,排序器350输出一个选择信号去控制第二多路复用器370。多路复用器370根据从排序器350收到的这个选择信号,把来自L2高速缓存130或主存储器140的数据输出到L1I-高速缓存150或指令单元220。在产生上文讨论的控制和选择信号时,排序器350访问和更新L1D-高速缓存120的L1目录320及L2高速缓存130的L2目录。
关于其中描述的处理器的多线程能力,存储控制单元200的排序器350还向线程切换逻辑400输出信号,这些信号指出数据和指令请求的状态。于是,来自高速缓存120、130和150、主存储器140以及过渡后备缓存器250的反馈被送到排序器350,然后传送到线程切换逻辑400,它可以造成线程切换,如下文讨论的那样。请注意,如果在任何装置中发生能在多线程处理器中造成线程切换的事件,则它在操作上与排序器350相连。
图4是线程切换逻辑硬件400的逻辑表示和方框图,该硬件400确定是否一个线程将被切换,如果是,是哪个线程。存储控制单元200和指令单元220与线程切换逻辑400互连。线程切换逻辑400最好容纳在指令单元220中,但如果有许多线程,则线程切换逻辑400的复杂性会增加,因此该逻辑对指令单元220而言是外部的。为易于解释,图示的线程切换逻辑400对指令单元220是外部的。
在本实施例中会造成一个线程被切换的事件在线470、472、474、476、478、480、482、484及486上从存储控制单元200的排序器350向线程切换逻辑400传送。其他等待事件能引起线程切换;这个清单不想全包括;相反,它只是表示如何能实现线程切换。由第一线程T0或第二线程T1请求一个未在指令单元220中的指令,则造成一个能引起线程切换的事件,在图4中分别由470和472表示。线474指示何时活动线程(不论是T0还是T1)遇到一个L1D-高速缓存缺失120。L2高速缓存130对于线程T0或T1的高速缓存缺失分别由线476和478表示。当为T0线程或为T1线程返回数据时线480和482分别被激活。翻译后备缓存器缺失和完成表游动(table walk)分别由线484和486指示。
这些事件都被馈送到线程切换逻辑400,更具体地说是馈送到线程状态寄存器440和线程切换控制器450。线程切换逻辑400对每个线程有一个线程状态寄存器。在其中描述的实施例中表现出两个线程,所以有T0状态寄存器442用于第一线程T0和T1状态寄存器444用于第二线程T1,其中将对它们进行描述。线程切换逻辑400包括线程切换控制寄存器410,它控制哪些事件将造成线程切换。例如,线程切换控制寄存器410能锁住会引起状态变化的事件,使线程切换控制器450看不到这些事件,从而使一线程不会由于被锁住事件的结果而被切换。线程状态寄存器和改变线程逻辑是题为“多线程处理器系统中的线程切换控制”的美国专利申请的主题,该专利申请系列号为08/957,002,于1997年10月23日与本申请同时递交,其中作为参考引入。线程切换控制寄存器410是题为“在多线程处理器中选择线程切换事件的方法和装置”的美国专利申请的主题,该申请的系列号是08/958,716,1997年10月23日递交,与本申请同时递交,其中作为参考引入。前进计数寄存器420用于防止翻来复去地重复,它可以包括在线程切换控制寄存器410中。前进计数寄存器420是题为“在多线程处理器中保证前进的装置和方法”的美国专利申请的主题,该申请的系列号是08/956,875,1997年10月23日递交,与本申请同时递交,其中作为参考引入。线程切换超时寄存器430是题为“在多线程处理器中迫使线程切换的方法和装置”的美国专利申请的主题,该申请的系列号是08/956,577,1997年10月23日递交,与本申请同时递交,其中作为参考引入。线程切换超时寄存器430分配公平性和实际锁定(live lock)事项。再有,利用软件460能改变线程优先级,这是题为“在多线程处理器中改变线程优先级”的美国专利申请的主题,该申请系列号是08/958,718,1997年10月23日受理,与本申请同时受理,其中作为参考引入。最后,但不限于此,线程切换控制器450包括无数个逻辑门,它们代表了所有逻辑的终极,这些逻辑实际确定是否一个线程被切换,哪个线程以及在什么环境下被切换。将进一步详细给出这些逻辑部件及其功能。
线程状态寄存器
线程状态寄存器440包括每个线程的一个状态寄存器,如其名称所表明的那样,它存储相应线程的状态;在这一情况中是T0线程状态寄存器442和T1线程状态寄存器444。对于具体的结构和线程切换优先级方案,可以定制位数和特定位的位置以描述每个线程的状态。在下表中列出对具有两个线程的多线程处理器在其线程状态寄存器442和444中各位的分配。
                              线程状态寄存器位分配
             (0)           指令/数据
                           0=指令
                           1=数据
             (1:2)        缺失类型排序器
                           00=无缺失
                           01=翻译后备缓存器缺失(检验位0判定I/D)
                           10=L1高速缓存缺失
                           11=L2高速缓存缺失
             (3)           过渡
                           0=到当前状态的过渡不造成线程切换
                           1=到当前状态的过渡造成线程切换
             (4:7)        保留
             (8)           0=加载
                           1=存储
             (9:14)       保留
             (15:17)      前进计数器
                           111=复位(在这一线程中指令已完成)
                           000=该线程W/0指令第一次执行完成
                           001=该线程W/0指令第二次执行完成
                           010=该线程W/0指令第三次执行完成
                           011=该线程W/0指令第四次执行完成
                           100=该线程W/0指令第五次执行完成
              (18:19)     优先级(可由软件设置)
                           00=中等
                           01=低
                           10=高
                           11=<非法>
              (20:31)     保留
              (32:63)     保留,如果是64位实现的话
在其中描述的实施例中,位0标识缺失或处理器停止执行的理由是否是一个请求指令或数据的结果。位1和2指示所请求的信息能否得到,如果如此,是从哪个硬件,即所翻译的数据或指令地址是否不在翻译后备缓存器250中,或者数据或指令本身不在L1D-高速缓存120或L2高速缓存130中,在图5的描述中将进一步解释。位3指示是否一线程状态的改变会造成线程切换。一个线程可以改变其状态而不造成线程切换。例如,如果当线程T1遇到一个L1高速缓存缺失时发生了线程切换,那么如果线程T1遇到一个L2高速缓存缺失则将不会有线程切换,因为该线程已由于L1高速缓存缺失而切换了。然而,T1的状态仍然改变。另一种情况是,如果通过选择,线程切换逻辑400被配置或编程,使得在L1高速缓存缺失时不切换,那么当一线程确实遇到L1高速缓存缺失时,即使该线程改变其状态,将没有线程切换。线程状态寄存器442和444的位8被分配为特定线程请求的信息是要加载到处理器核中还是从处理器核中存储到高速缓存或主存储器中。位15至17被分配为防止翻来复去的重复,下文中将参考前进计数寄存器420加以讨论。位18和19能在硬件中设定,或能由软件设定,以指示线程优先级。
图5代表本实施例中由数据处理系统10处理的一个线程的4种状态,这些状态存储在线程状态寄存器440中,位的位置是1:2。状态00代表“准备好”状态,即该线程已准备好供处理,因为所需要的所有数据和指令都能得到;状态10代表这样的线程状态,其中在处理器内该线程的执行被停止,因为该线程在等待或者数据返回到L1D-高速缓存120中或者指令返回到L1I-高速缓存150中;状态11代表该线程在等待数据返回到L2高速缓存130;状态01表明在翻译后备缓存器250上有一缺失,即虚拟地址错或不可用,称作“表游走(table walk)”。在图5中还显示出线程状态的层次结构,其中状态00指示该线程已准备好供执行,具有最高优先级。短等待时间的事件最好赋予较高优先级。
图5还显示了当从各种源提取数据时状态的变化。正常的无中断地执行线程T0在块510中表示为状态00。如果发生L1D-高速缓存或I-高速缓存缺失,则线程状态变为状态10,如在块512中表示的,遵循分别在线474(图4)上由存储器控制单元200发出的信号和在线470(图4)上由指令单元200发出的信号。如果所需的数据或指令在L2高速缓存130中并被提取,则在块510恢复T0的正常执行。类似地,图5的块514代表L2高速缓存缺失,它把T0或T1线程的状态改变为状态11,此时存储控制单元200在线476或478(图4)上通知这一缺失。当如线480和482(图4)上所指示的那样,从主存储器140中取出指令或数据到L2高速缓存中,并将其加载到处理器核100,则在块510,状态再变回到状态00。当所请求信息的虚拟地址在翻译后备缓存器250中不可用时,存储控制单元200在线484(图4)上与线程寄存器440通信,如块516所示,作为TLB缺失或状态01。当该地址变为可用的或者如果存在一个由存储控制单元200在线486(图4)上通告的数据存储中断指令,则该线程的状态返回到状态00,意思是已准备好供执行。
状态数和每个状态代表什么,可由计算机结构自由选定。例如,如果一线程有多个L1高速缓存缺失,例如L1I-高速缓存缺失和L1D-高速缓存缺失二者,则可对每个高速缓存类型赋予单独的状态。另一种作法是可以赋予单个线程状态来代表不只一个事件或事件发生。
给出了一个线程切换算法的实例,它针对有相等优先级的两个线程,用于确定是否要切换线程。能根据本发明的原理扩展和修改该算法,从而适用于更多的线程和线程切换条件。线程状态寄存器440(图4)中存储的每个线程的状态与线程切换算法给出的每个线程优先级二者之间的相互作用在每个周期要动态地被询问。如果活动线程T0有一个L1缺失,则该算法将使线程切换到休眠的线程T1,除非休眠线程T1在等待一个L2缺失的解决。如果未曾发生切换而且活动线程T0的L1高速缓存缺失转变成了L2高速缓存缺失,则该算法指示处理器切换到休眠线程T1而不管T1的状态如何。如果这两个线程都在等待一个L2高速缓存缺失的解决,则首先使L2缺失得到解决的那个线程成为活动线程。在每个切换决定时刻,在大多数情况下采取的行动是最佳化的,造成最好的性能。请注意,由L2高速缓存缺失造成的线程切换以其他线程的状态为条件,如果不是这样,则额外的线程切换就会发生,造成性能降低。
线程切换控制寄存器
在任何多线程处理器中,都存在与切换线程相关联的等待时间和性能代价。在其中描述的最佳实施例中的多线程处理器中,这种等待时间包括使当前线程完成到它能被中断并在其后被调用时能正确地重新启动的那一点所需要的时间,把针对该线程的硬件设施从当前线程的状态切换到新线程的状态所需要的时间,以及重新启动新线程和开始其执行所需要的时间。以本发明可操作的针对线程的硬件设施最好包括前面描述的线程状态寄存器和在美国专利5,778,243号中描述的存储器单元,该专利题为“存储器的多线程单元”,其中作为参考引入。为了在一个“粗粒的”多线程数据处理系统中实现最佳性能,与通常的单线程方式相反,在多线程方式中产生线程切换的事件的等待时间必须大于与切换线程相关联的性能损失。
用于产生线程切换的事件的等待时间依赖于硬件和软件二者。例如,在多线程处理器中特别的硬件考虑包括实现处理器芯片外部L2高速缓存所用外部SRAM的速度。在L2高速缓存中的快SRAM减小L1缺失的平均等待时间,而较慢的SRAMS增加L1缺失的平均等待时间。这样,如果在外部L2高速缓存数据访问等待时间大于线程切换代价的硬件中把一个线程切换事件定义为一个L1高速缓存缺失,则性能得到增强。作为特定软件代码特性如何影响线程切换事件等待时间的一例,考虑代码的L2高速缓存命中与缺失之比,即在L2高速缓存中能准确得到数据的次数与由于数据不在L2高速缓存中而必须从主存储器中提取数据的次数之比。L2命中与缺失之比高则减小L2高速缓存缺失的平均等待时间,因为L1高速缓存缺失很少会造成更长的L2缺失等待时间。L2命中与缺失之比低则增加L1缺失的平均等待时间,因为更多的L1缺失造成更长等待时间的L2缺失。这样,如果执行代码的L2命中与缺失之比高,则一个L1高速缓存缺失可不作为线程切换事件,因为L2高速缓存数据访问等待时间小于线程切换代价。当执行的软件代码具有低L2命中与缺失之比时,L1高速缓存缺失将被启动为线程切换事件,因为L1高速缓存缺失多半能导致更长等待时间的L2高速缓存缺失。
某些类型的等待事件是不容易被检测到的。例如,在某些系统中,当发生一高速缓存缺失时L2高速缓存向指令单元输出一个信号。然而,其他L2高速缓存不输出这种信号,例如,如果L2高速缓存控制器在处理器以外的单独芯片上,于是处理器不能容易地确定一个状态变化。在这些结构中,该处理器可对每个待决L1高速缓存缺失有一个周期计数器。如果在预定周期数之后缺失数据尚未从L2高速缓存返回,则处理器的行动犹如已发生了一个L2高速缓存缺失并相应地改变线程状态。这一算法可应用于有不只一种独特等待时间类型的其他场合。只作为一例,对于一个处理器中的L2高速缓存缺失,从主存储器取得数据的等待时间可能显著地不同于从另一处理器取得数据的等待时间。在线程状态寄存器中可对这两种事件赋予不同的状态。如果没有信号去区分这些状态,则可用一计数器去确定在它遇到L2高速缓存缺失之后该线程应为哪一状态。
线程切换控制寄存器410是一个软件可编程的寄存器,它选择事件以确定线程切换,并对每个定义的线程切换控制事件有一个单独的启动位。虽然其中描述的实施例未对每个线程实施单独的线程切换控制寄存器410,但能对每个线程实施单独的线程切换控制寄存器410,从而以更多的硬件和复杂性为代价提供更大的灵活性和更高的性能。再有,在一个线程切换控制寄存器中的线程切换控制事件不需要与任何其他线程切换控制寄存器中的线程切换控制事件完全相同。
线程切换控制寄存器410能由服务处理器以软件写入,例如在美国专利5,079,725号中说明的动态扫描通信接口,该专利题为“与扫描设计系统和扫描测试技术一起使用的芯片识别方法”,或者由处理器本身用软件系统代码写入。线程切换控制器450使用线程切换控制寄存器410的内容去使能允许或不允许产生一个线程切换。在寄存器410中的值1使与该位关联的线程切换控制事件能产生一个线程切换。在线程切换控制寄存器410中的值零不允许与该位关联的线程切换控制事件产生一个线程切换。当然,在执行线程过程中的一条指令能使那个特定线程或其他线程的任何一个或全部线程切换条件变为“不能”。下表显示线程切换事件和它们在寄存器410中的使能位之间的关联。
线程切换控制寄存器位赋值
(0)L1数据高速缓存取缺失时切换
(1)L1数据高速缓存存储缺失时切换
(2)L1指令高速缓存缺失时切换
(3)指令TLB缺失时切换
(4)L2高速缓存取缺失时切换
(5)L2高速缓存存储缺失时切换
(6)L2指令高速缓存缺失时切换
(7)数据TLB/段后备缓存器缺失时切换
(8)L2高速缓存缺失而且休眠线程无L2高速缓存缺失时切换
(9)当达到线程切换超时值时切换
(10)当L2高速缓存数据返回时切换
(11)IO外部访问时切换
(12)双X存储:两个中第一缺失(*)时切换
(13)双X存储:两个中第二个缺失(*)时切换
(14)存储多重/串:任何访问缺失时切换
(15)加载多重/串:任何访问缺失时切换
(16)保留
(17)双X加载:两个中第一个缺失(*)时切换
(18)双X加载:两个中第二个缺失(*)时切换
(19)如果机器状态寄存器(问题状态)位,msr(pr)=1则当“或”1,1,1指令时切换。允许软件优先级变化不依赖于msr(pr)。如果位19为1,“或”1,1,1指令设为低优先级。如果位19为0,在“或”1,1,1指令被执行时,只有当msr(pr)=0时优先级才设为低优先级。见下文要讨论的“以软件改变为优先级”。
(20)保留
(21)线程切换优先级使能
(22:29)保留
(30:31)前进计数
(32:63)在64位寄存器实现中保留
(*)双X加载/存储是指加载或存储一个基本半字、字或双字,它们穿过一个双字边界。在本文范围内的双X加载/存储不是加载或存储多个字或字串。线程切换超时寄存器
如前文讨论的那样,粗粒多线程处理器依靠长等待时间的事件去触发线程切换。有时在执行过程中在一多处理器环境中的一个处理器或在一多线程结构中的一个后台线程有一资源的所有权,该资源只能有单一所有者,而另一处理器或活动线程需要访问该资源,然后它才能前进。实例包括更新存储器页面表或从任务分配器得到一任务。该活动线程不能得到对该资源的所有权时不造成线程切换事件,尽管如此,线程在一个循环中绕圈,不能做有用的工作。在这种情况中,握有资源的后台线程不能得到对处理器的访问以释放资源,因为它从未遇到一个线程切换事件,因而不能成为活动线程。
在各线程当中分配处理周期是另一个关心的问题;如果与在同一处理器中其他线程上运行的软件代码相比,在一个线程上运行的软件代码很少遇到长等待时间的切换事件。那么该线程得到的处理周期便多于它的公平分享的处理周期。而可能超过最大可接受时间的另一种过度延迟是在一有限时间段内等待服务于一外部中断或在处理器外部的某些其他事件的一个不活动线程的等待时间。这样,如果没有有用的处理要完成以防止系统挂起的话,最好在某一时间之后迫使一线程切换到休眠线程。
在一时间段之后迫使一线程切换的逻辑是线程切换超时寄存器430(图4),一个减量器,以及一个减量器寄存器用于保持被减量的值。该线程切换超时寄存器430保持线程切换超时值。在本实施例中使用的线程切换超时寄存器430的实现示于下表:
                 线程切换超时寄存器位
(0:21)保留
(22:31)线程切换超时值
其中描述的本发明实施例不对每个线程实现一个单独的线程切换超时寄存器430,当然可以那样做以提供更大的灵活性。类似地,如果有多个线程,每个线程不需要有相同的线程切换超时值。每次发生线程切换时,由硬件把线程切换超时值从线程切换超时寄存器430加载到减量寄存器中。减量寄存器每周期减量一次,直至减量寄存器值等于零为止,然后一个信号发送到线程切换控制器450,它迫使产生一个线程切换,除非没有任何其他线程准备好处理指令。例如,如果系统中所有其他线程由于高速缓存缺失而在等待因而没有准备好去执行指令,则线程切换控制器450不迫使产生一个线程切换。如果当减量寄存器中之值达到零时没有其他线程准备好处理指令,则被减量的值冻结在零直至另一线程准备好处理指令,在这一点上便发生一个线程切换,减量寄存器重新加载那个线程的线程切换超时值。类似地,减量寄存器也能同样容易地命名为增量寄存器,当一线程在执行时,该寄存器可增量至某一预先确定值,此时将迫使产生线程切换。
线程切换超时寄存器430可如前述由一服务处理器写入,或由处理器本身用软件代码写入。可根据特定的硬件配置和/或特定的软件代码来专门确定加载到线程切换超时寄存器430中的线程切换超时值,从而使不必要的线程切换造成的周期浪费达到最小。当活动线程等待由另一线程掌握的资源时,或者如果一个外部中断290或处理器外部的其他事件的响应等待时间太长,则线性切换超时寄存器430中的值太高会造成性能下降。如果一个线程遇到的线程切换事件次数高而其他线程不是,则太高的超时值还会防碍公平性。推荐的线程切换超时值为长于最频繁的最长等待时间事件(例如访问主存储器)的2倍至若干倍。在等待由线程切换超时寄存器430中指定的周期数之后迫使产生一个线程切换,这防止了系统由于争夺共享资源而挂起,坚持了线程间处理器周期分配的公平性,并限制了对外部中断及处理器外部其他事件的响应等待时间。前进保证
在某些情况下,例如当一个单一指令产生多个高速缓存访问和/或多个高速缓存缺失时,每次发出线程切换和新线程变为活动线程时必须至少有一个指令被执行的限制太强了。例如,一个取指令可能引起L1I-高速缓存150缺失,如果所请求的指令不在该高速缓存中的话;但当指令返回时,所请求的数据可能在L1D-高速缓存120中得不到。类似地,翻译后备缓存器250中的缺失也能造成数据高速缓存缺失。因此,如果严格地强迫向前进,则在其后访问时的缺失不会造成线程切换。第二个问题是某些高速缓存缺失可能需要大量周期去完成,在此期间可能有另一线程在同一高速缓存级别上遇到高速缓存缺失,而这一缺失能在短得多的时间内完成。如果在返回第一线程时强迫严格的前进,则处理器便不能切换到有较短高速缓存缺失的线程。
翻来复去重复即在那种情况下每个线程被锁在切换线程重复周期中而没有执行任何指令,为了补救这一问题,存在一个前进计数寄存器420(图4),它允许达到可编程的最大线程切换次数,称作前进阈值值。在最大线程切换次数之后,一条指令必须被完成,然后才能再发生切换。这样,防止了翻来复去的重复。前进计数寄存器420实际上可以是线程切换控制寄存器410中的30:31位,或该处理器的软件可编程前进阈值寄存器。前进计数逻辑使用线程状态寄存器442、444的位15:17,它们指示线程的状态并被分配一个线程在没有指令执行的情况下已遇到的线程切换数。于是,这些位最好包括前进计数器。
当一线程改变状态而启动线程切换算法时,如果在该活动线程中已完成了至少一个指令,则该活动线程的前进计数器复位,而线程切换算法继续比较处理器中各线程之间的线程状态。如果没有完成任何指令,则在活动线程的线程状态寄存器中的前进计数器值与前进阈值比较。如果计数器值不等于阈值,由线程切换算法继续评估处理器中各线程的线程状态。然后,如果发生线程切换,则前进计数器增量。然而,如果计数器值或状态等于阈值,则在能执行一条指令之前将不发生线程切换,即直到发生前进时才会发生线程切换。请注意,如果阈值寄存器有零值,则在切换到另一线之前在该活动线程内必须完成至少一条指令。如果每次线程切换需要3个处理器周期,而且如果存在两个线程,而且如果线程切换逻辑被编程为5次尝试之后停止尝试切换线程,则处理器将在30个周期内翻来复去地重复。本领域技术人员会理解,在一方面由于没有前进而禁止线程切换和另一方面由于已超过超时计数而迫使线程切换这二者之间存在潜在的冲突。这种冲突能根据结构和软件容易地解决。
图6是线程切换逻辑400的前进计数特性的流程图,这防止翻来复去重复。在块610,在从属于线程T0的线程状态寄存器442中的位15:17被复位为状态111。在块620试图执行这一线程,于是状态变为000。如果对线程T0成功地执行了一条指令,则线程T0的状态变回为111并保持此状态。然而,如果线程T0不能执行一条指令,则线程T1发生线程切换,或者切换到另一后台线程,如果在处理器结构中允许两个以上线程的话。当发生离开T1或其他后台线程的线程切换并使执行返回到线程T0时,则发生执行线程T0的第二次尝试,于是线程T0的状态在块630变为001。如果线程T0遇到线程切换事件,则处理器的控制再次从线程T0切换到另一线程。类似地,每当发生离开另一线程(例如T1)返回线程T0的线程切换,则在这第3次尝试执行T0时T0的状态变为010(块640);在第4次尝试执行T0时变为011(块650),并在第5次尝试执行T0时变为状态100(块660)。
在这一实现中,有5次试图切换到线程T0。在第5次尝试之后,或每当线程状态寄存器(TSR)442中位15:17的值等于线程切换控制寄存器(TSC)410中位30:31之值加1的时候,即每当TSC(30:31)+1=TSR(15:17)时,则不会发生从线程T0离开的线程切换。可以理解,5次尝试是一个任意数;由于不成功执行而允许切换的最大次数,即前进阈值,是可编程的,而且在某些结构中可能认为5次切换太多,而在另一些结构中5次又太少。不管怎样,在无指令执行的情况下试图切换到一线程的次数必须与一阈值比较,而且一旦已达到那一阈值值,则不会再发生离开那个线程的线程切换,其中处理器将等待直至与那个线性关联的等待时间被化解为止。在其中描述的实施例中,由线程状态寄存器442的位15:17代表的线程状态与线程切换控制寄存器410中的位30:31比较。对于有特别长等待时间的特殊事件,如与输入/输出装置的相互作用,进行特殊处理以防止由前进逻辑过早地锁住线程切换,从而改善了处理器性能。处置这些特别长等待时间事件的一种方式是锁住前进计数器增量,或者忽略前进计数器与阈值比较的输出信号,如果数据尚未返回的话。处理特别长等待时间事件的另一方式是对这些特殊事件使用单独的更长的前进计数。分配给处理器的所有软件线程的线程状态最好如所描述的那样保持在图4中的线性状态寄存器442和444中。在单一处理器中在一个时刻一个线程执行它的指令而其他线程在休眠。当相对于前进寄存器420、线程切换控制寄存器410或线性切换超时寄存器430而言,该活动线程遇到了一个长等待时间事件,则执行从活动线程切换到一个休眠线程。与哪个线程是活动线程无关,这些硬件寄存器使用的条件在执行过程中不发生动态变化。
由线程切换管理器灵活地改变线程切换条件改善了系统的总体性能。一个软件线程切换管理器能改变线程切换频率,增大至关重要任务可得到的执行周期数和减小由于线程切换等待时间造成的总周期损失。线程切换管理器或者可在编译时或者可在执行过程中由操作系统编程,例如,一个闭锁循环能改变线程切换频率;或者由于处在较低优先级的休眠线程在等待一个外部中断或否则已准备好,则可以把一操作系统任务分配。不允许或降低离开一活动线程的线程切换,从而使当前指令流的性能不受进出于它的切换所造成的等待时间的影响,这可能是有利的。另一种作法是,通过基本上降低其优先级,一个线程能放弃一些或全部它的执行周期,结果降低了进入它的切换频率或增加了离开该线程的切换频率,以增强系统的总体性能。线程切换管理器还能无条件地迫使或禁止一线程切换,或者影响下一次选择哪个线程去执行。
多优先级线程切换方案对每个线程赋予一个优先级值,以使引起切换的条件定量化。还可能希望在某些情况下有由硬件改变线程优先级。例如,一个低优先级线程可能在等待某一事件,而当该事件发生时,该硬件能提高该线程的的优先级以影响该线程对该事件(例如一个外部中断290)的响应时间。各线程间的相对优先级或某一线程的优先级将影响对这一事件的处理。线程的优先级可由硬件响应于一个事件来调节,或由线程切换管理器软件使用一个或多个指令来调节。线程切换管理器改变硬件线程切换逻辑完成的行动,以有效地改变线程的相对优先级。
对于其中描述的有两线程的实施例使用了3个优先级,这3个优先级足以区分线程以允许对性能调优而不会使系统性能变坏。利用3个优先级,两个线程能有相等的中等优先级状态,对两个线程选择3个优先级这种做法不想成为一种限制。在某些结构中,一个“正常”状态可能是有一个线程的优先级总是高于其他线程。在本发明的范围内想要复盖多于两个执行线程,具有一个或多个优先级,它们可在硬件中设定或由软件编程。
每个线程的3个优先级是高、中、低。当线程T0的优先级与线程T1的优先级相同时,这对线程切换逻辑无影响。两个线程都有相等的优先级,则哪一个也没有优先的执行时间。当线程T0的优先级大于线程T1的优先级时,对某些线程切换事件,即所有L1高速缓存缺失(即数据加载、数据存储和指令取),便不能由T0切换到T1,因为L1高速缓存缺失的解决要比其他条件(例如L2缺失和翻译)快得多。对于线程T0给以更好的机会,接受比线程T1更多的执行周期,这允许线程T0继续进行,只要它不浪费过多的执行周期数即可。然而,如果T0遇到一个较长的执行等待时间的话,处理器仍将放弃对线程T1的控制。从线程T1到T0的线程切换不受影响,除非当休眠线程T0准备好而在这种情况中线程T0优先于线程T1时发生切换。当由于一L2高速缓存缺失或翻译请求使线程T0被切换开,而当线程T1在执行时这一条件在后台得以解决,这时预计会发生这种情况。线程T0的优先级低于线程T1的情况类似于上述情况,只是指定的线程相反。
有几种不同的可能途径去实现通过改变线程优先级来管理线程切换。对处理器结构可以增加新指令。有所希望的行动的那些有副作用的现存处理器指令也能使用。若干因素影响在允许软件控制各种方法当中进行选择:(a)重新定义结构以包括新指令的容易程度和结构改变对现有处理器的影响;(b)在不同版本处理器上运行同一软件的需要;(c)在使用新的专用指令与重用现有指令并确定造成的副作用二者之间作性能权衡;(d)所希望的软件控制水平,例如能否由某些现有指令的每次执行(例如特殊的加载或存储)造成这种作用,或者是否需要通过向指令流中增加指令来增加控制以特别造成这种作用。
其中描述的结构最好利用未用过的指令,它的值不改变处理器中纳入结构的通用寄存器;这一特性对于把多线程能力改进到一个处理器结构中是至关重要的。否则可对特殊指令编码。这个指令是一个“优选的空操作”“或0,0,0”;然而,其他指令能有效地用作空操作。空操作(no-op或nop)是这样一条指令,它的执行使计算机进入下一个要执行的指令而不完成任何操作。在一个最佳结构实施例中,通过使用不同版本的“或”指令,“或0,0,0”或“1,1,1”或任何现有的能把额外的优先权切换意义加到它上面以改变线程优先级的指令,这同一指令流可在一处理器上执行而不产生坏作用,例如非法指令中断。当试图执行一个非法指令,或不由本实现提供的保留指令或可选指令时,便会产生非法指令中断。一个扩展利用机器状态寄存器的状态去改变这些指令的意义。例如,可能不希望允许用户对部分或全部这些线程优先级指令进行编码并访问它们提供的功能。它们提供的特殊功能可能被规定为只在某些执行方式中发生,而在其他方式中它们没有作用而且将作为一个“空操作”正常执行。
一种可能的实现,利用双线程的多线程处理器,使用3个指令,这些指令成为执行软件本身的一部分,以改变本身的优先级:tsop1“或1,1,1”-切换到休眠线程tsop2“或1,1,1”-置活动线程于低优先级
              -切换到休眠线程
              -注意:只在特权模式下有效,除非TSC〔19〕
              =1Tsop3“或2,2,2”-置活动线程于中等优先级Tsop4“或3,3,3”-置活动线程于高优先级
              -注意:只在特权模式下有效
指令tsop1和tsop2可为同一指令,如在其中实现为“或1,1,1”,但它们也可以各为单独的指令。如其中描述的那样,这些指令与线程切换控制寄存器410的19和21位以及机器状态寄存器的问题/特权位相互作用。如果线程切换控制寄存器410的位21位有值1,则线程切换管理器能把它的线程优先级置为线程状态寄存器中位18:19中代表的3个优先级之一。如果线程切换控制寄存器410的位19有值0,则指令tsop2的线程切换与线程优先级设置由机器状态寄存器的问题/特权位控制。另一方面,如果线程切换控制寄存器410的位19有值1,或者如果机器状态寄存器的问题/特权位有值0而且在代码中出现指令“或1,1,1”,则该活动线程的优先级设为低而且执行立即切换到休眠或后台线程,如果该休眠线程被允许的话。指令“或2,2,2”置活动线程的优先级于中等,不管机器状态寄存器的问题/特权位的值如何。而当机器状态寄存器的问题/特权位有值0时,指令“或3,3,3”置活动线程的优先级于高。如果线程切换控制寄存器320的位21为零,则两个线程的优先级都置于中等,而且“或X,X,X,”指令时优先级的作用被锁住。如果一个外部中断请求有效,而且如果相应线程的优先级为低,则把该线程的优先级置于中等。
被线程优先级改变的事件是:(1)由于L1D-高速缓存加载数据缺失而切换;(2)由于L1D-高速缓存存储数据缺失而切换;(3)由于L1I-高速缓存指令取缺失而切换;(4)如果休眠线程处于准备好状态而切换。此外,外部中断生效可能改变相应线程的优先级。下表显示优先级对引起线程切换的条件的影响。在第3和第4列中的简单的TSC条目的意思是利用线程切换控制(TSC)寄存器410中提出的条件去启动一次线程切换。把TSC〔0:2〕条目作为0对待的意思是线程切换控制寄存器410的位0:2被看作是对那个线程这些位的值犹如零,而线程切换控制寄存器410中的其他位按原样定义引起线程切换的条件。在第4列中的短语“当线程T0准备好时”的意思是一旦线程T0不再等待使它切换出去的缺失事件时便发生到线程T0的切换。在第3列中的短语“当线程T1准备好时”的意思是一旦线程T1不再等待使它切换出去的缺失事件时便发生到线程T1的切换。如果这缺失事件是一个线程切换超时,则不保证在一较高优先级线程切换回来之前较低优先级事件能完成一条指令。
  T0优先级   T1优先级 T0线程切换条件 T1线程切换条件
    高     高 TSC TSC
    高     中 TSC〔0:2〕被看作是0 TSC或如果T0准备好
    高     低 TSC〔0:2〕被看作是0 TSC或如果T0准备好
    中     高 TSC或如果T1准备好 TSC〔0:2〕被看作是0
    中     中 TSC TSC
    中     低 TSC〔0:2〕被看作是0 TSC或如果T0准备好
    低     高 TSC或如果T1准备好 TSC〔0:2〕被看作是0
    低     中 TSC或如果T1准备好 TSC〔0:2〕被看作是0
  低   低     TSC     TSC
建议给予做无产出工作的线程以低优先级以避免损失性能,即使在闲循环中的每条指令引起线程切换也如此。然而,仍然重要的是,如果一个设在低先级的线程请求一外部中断,则应允许硬件改变线程优先级。在这种情况下,该线程被提高到中等优先级以允许更快地响应中断。这允许一个等待外部事件的线程把它本身设为低优先级,它将停留在那里直至该事件被通知出去。
尽管已联系当前认为最实际的和最佳的实施例描述了本发明,但应该理解,本发明不限于所说明的实施例,而是相反,本发明要复盖在所附各权利要求的实质和范围内包括的各种修改和等价安排。

Claims (13)

1.一种计算机处理器,包括:
至少一个多线程处理器(100)在多个指令线程之间切换执行;以及
至少一个软件可编程线程切换控制寄存器(410),所述寄存器(410)有多个位,每个所述位唯一地关联于多个线程切换控制事件之一,该至少一个软件可编程线程切换控制寄存器(410)与多线程处理器相连。
2.权利要求1的处理器,其中如果各位中的一位是有效的,则与该位相关联的线程切换控制事件使至少一个多线程处理器(100)从多个线程之一切换到所述多个线程中的另一个。
3.权利要求1至2中之一的处理器,其中至少一条指令能使软件可编程线程切换控制器(410)中的各位中至少一位变为无效。
4.权利要求1的处理器,其中一个软件可编程线程切换控制寄存器(410)的位值不同于所述多个软件可编程线程切换控制寄存器(410)中的另一个的位值。
5.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括来自下列当中至少一个的数据缺失:L1-数据高速缓存,L2高速缓存,翻译后备缓存器。
6.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括来自下列当中至少一个的指令缺失:L1-指令高速缓存,翻译后备缓存器。
7.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括数据和/或指令的地址翻译错。
8.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括对所述处理器外部的I/O装置的访问。
9.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括对另一处理器的访问。
10.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括前进计数,所述前进计数是多个线程之一从至少一个没有执行多个线程之一的任何指令的多线程处理器切换出来的次数。
11.权利要求1至2中之一的处理器,其中多个线程切换控制事件包括超时时段。
12.一种确定软件可编程线程切换控制寄存器(410)内容的方法,包括以下步骤:
对由于处理器等待事件使多线程处理器(100)停止的第一个处理器周期数进行计数;
对多线程处理器(100)把第一指令线程的处理切换到第二指令线程所需要的第二个处理器周期数进行计数;
如果第一个数大于第二个数则通过设置软件可编程线程切换控制寄存器(410)中的一个使能位,把该处理器等待时间事件指定为一个线程切换控制事件。
13.权利要求12的方法,还包括:
当多线程处理器(100)遇到该线程切换控制事件而且如果使能位为有效时,输出一个信号以切换线程。
CN98810356A 1997-10-23 1998-10-14 在多线程处理器中选择线程切换事件的方法和装置 Expired - Lifetime CN1112636C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/958,716 1997-10-23
US08/958,716 US6697935B1 (en) 1997-10-23 1997-10-23 Method and apparatus for selecting thread switch events in a multithreaded processor

Publications (2)

Publication Number Publication Date
CN1276888A CN1276888A (zh) 2000-12-13
CN1112636C true CN1112636C (zh) 2003-06-25

Family

ID=25501230

Family Applications (1)

Application Number Title Priority Date Filing Date
CN98810356A Expired - Lifetime CN1112636C (zh) 1997-10-23 1998-10-14 在多线程处理器中选择线程切换事件的方法和装置

Country Status (11)

Country Link
US (1) US6697935B1 (zh)
EP (1) EP1029269B1 (zh)
JP (1) JP4006180B2 (zh)
KR (1) KR100403658B1 (zh)
CN (1) CN1112636C (zh)
CA (1) CA2299348C (zh)
HU (1) HUP0100013A3 (zh)
IL (1) IL134823A (zh)
PL (1) PL193285B1 (zh)
TW (1) TW409227B (zh)
WO (1) WO1999021081A1 (zh)

Families Citing this family (160)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010800A (ja) * 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US7370325B1 (en) * 1999-02-19 2008-05-06 Lucent Technologies Inc. Eager evaluation of tasks in a workflow system
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6748556B1 (en) * 2000-08-15 2004-06-08 International Business Machines Corporation Changing the thread capacity of a multithreaded computer processor
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7478394B1 (en) * 2001-06-04 2009-01-13 Hewlett-Packard Development Company, L.P. Context-corrupting context switching
US6944736B2 (en) * 2001-06-28 2005-09-13 Hewlett-Packard Development Company, L.P. Managing latencies in accessing memory of computer systems
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
US6892331B2 (en) * 2002-01-17 2005-05-10 International Business Machines Corporation Method and system for error detection in a managed application environment
ES2305216T3 (es) 2002-01-30 2008-11-01 Real Enterprise Solutions Development B.V. Metodo para establecer niveles de prioridad en un sistema de computo de multiprogramacion con planificacion por prioridades, sistema de computo de multiprogramacion y programa para esto.
JP2003271551A (ja) * 2002-03-18 2003-09-26 Fujitsu Ltd マイクロコンピュータ、バス制御回路およびマイクロコンピュータにおけるデータアクセス方法
US7523455B2 (en) * 2002-05-03 2009-04-21 Hewlett-Packard Development Company, L.P. Method and system for application managed context switching
US8024735B2 (en) * 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7096470B2 (en) * 2002-09-19 2006-08-22 International Business Machines Corporation Method and apparatus for implementing thread replacement for optimal performance in a two-tiered multithreading structure
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
JP3864250B2 (ja) * 2002-10-31 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 排他制御装置、排他制御方法、プログラム、及び記録媒体
US20040128488A1 (en) * 2002-12-26 2004-07-01 Thimmannagari Chandra M. R. Strand switching algorithm to avoid strand starvation
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US7216346B2 (en) * 2002-12-31 2007-05-08 International Business Machines Corporation Method and apparatus for managing thread execution in a multithread application
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7181741B2 (en) * 2003-01-30 2007-02-20 Hewlett-Packard Development Company, L.P. Apparatus and method to minimize blocking overhead in upcall based MxN threads
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7013400B2 (en) * 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US20040268093A1 (en) * 2003-06-26 2004-12-30 Samra Nicholas G Cross-thread register sharing technique
US7130986B2 (en) * 2003-06-30 2006-10-31 Intel Corporation Determining if a register is ready to exchange data with a processing element
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7836450B2 (en) * 2003-08-28 2010-11-16 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
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
JP4740851B2 (ja) * 2003-08-28 2011-08-03 ミップス テクノロジーズ インコーポレイテッド 仮想プロセッサリソースの動的構成のための機構体
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US20050060517A1 (en) * 2003-09-12 2005-03-17 Morrow Michael W. Switching processor threads during long latencies
CN100340976C (zh) * 2003-10-10 2007-10-03 华为技术有限公司 一种实现计算机多线程控制的方法及装置
US7631307B2 (en) * 2003-12-05 2009-12-08 Intel Corporation User-programmable low-overhead multithreading
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US7617499B2 (en) * 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7669203B2 (en) * 2003-12-19 2010-02-23 Intel Corporation Virtual multithreading translation mechanism including retrofit capability
US8694976B2 (en) * 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
JP4502650B2 (ja) * 2004-02-03 2010-07-14 日本電気株式会社 アレイ型プロセッサ
JP4728581B2 (ja) * 2004-02-03 2011-07-20 日本電気株式会社 アレイ型プロセッサ
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
JP4327008B2 (ja) 2004-04-21 2009-09-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20050246461A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
US7216223B2 (en) 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7533248B1 (en) * 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
JP4956891B2 (ja) * 2004-07-26 2012-06-20 富士通株式会社 演算処理装置,情報処理装置および演算処理装置の制御方法
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7827555B2 (en) * 2004-09-13 2010-11-02 Integrated Device Technology, Inc. Scheduler for a multiprocessing computing system
US7634774B2 (en) * 2004-09-13 2009-12-15 Integrated Device Technology, Inc. System and method of scheduling computing threads
JP4170364B2 (ja) * 2004-09-17 2008-10-22 松下電器産業株式会社 プロセッサ
US7188346B2 (en) * 2004-11-29 2007-03-06 International Business Machines Corporation Method, system and program product for correlating data between operating environments
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
DE102004059972B4 (de) * 2004-12-13 2010-07-01 Infineon Technologies Ag Thread-Scheduling-Verfahren, und Thread-List-Scheduler-Vorrichtung
JP4609070B2 (ja) * 2004-12-28 2011-01-12 沖電気工業株式会社 マルチ呼処理スレッド処理方法
US7921365B2 (en) * 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7917907B2 (en) * 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US7823158B2 (en) * 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US7617380B2 (en) * 2005-08-25 2009-11-10 Broadcom Corporation System and method for synchronizing translation lookaside buffer access in a multithread processor
US7631125B2 (en) 2005-09-30 2009-12-08 Intel Corporation Dynamically migrating channels
US20070079294A1 (en) * 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US7870307B2 (en) * 2006-01-30 2011-01-11 Sony Computer Entertainment Inc. DMA and graphics interface emulation
US20070226454A1 (en) * 2006-03-01 2007-09-27 Marius Stoian Highly scalable MIMD machine for java and .net processing
US20080177979A1 (en) * 2006-03-01 2008-07-24 Gheorghe Stefan Hardware multi-core processor optimized for object oriented computing
US7437539B2 (en) 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7434033B2 (en) 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US8521993B2 (en) * 2007-04-09 2013-08-27 Intel Corporation Providing thread fairness by biasing selection away from a stalling thread using a stall-cycle counter in a hyper-threaded microprocessor
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US7926035B2 (en) * 2007-04-24 2011-04-12 Microsoft Corporation Testing multi-thread software using prioritized context switch limits
US20080313652A1 (en) * 2007-06-15 2008-12-18 Microsoft Corporation Notifying user mode scheduler of blocking events
US8627030B2 (en) * 2007-11-07 2014-01-07 Intel Corporation Late lock acquire mechanism for hardware lock elision (HLE)
US7904623B2 (en) * 2007-11-21 2011-03-08 Microchip Technology Incorporated Ethernet controller
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US20100017583A1 (en) * 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US8285973B2 (en) 2008-08-04 2012-10-09 International Business Machines Corporation Thread completion rate controlled scheduling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US7873816B2 (en) * 2008-11-20 2011-01-18 International Business Machines Corporation Pre-loading context states by inactive hardware thread in advance of context switch
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US8560814B2 (en) * 2010-05-04 2013-10-15 Oracle International Corporation Thread fairness on a multi-threaded processor with multi-cycle cryptographic operations
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
KR102013582B1 (ko) 2012-09-07 2019-08-23 삼성전자 주식회사 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9983880B2 (en) * 2014-09-26 2018-05-29 Intel Corporation Method and apparatus for improved thread selection
US9348644B2 (en) 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
US10049141B2 (en) 2014-10-10 2018-08-14 salesforce.com,inc. Declarative specification of visualization queries, display formats and bindings
US9396018B2 (en) * 2014-10-10 2016-07-19 Salesforce.Com, Inc. Low latency architecture with directory service for integration of transactional data system with analytical data structures
US9600548B2 (en) 2014-10-10 2017-03-21 Salesforce.Com Row level security integration of analytical data store with cloud architecture
US10101889B2 (en) 2014-10-10 2018-10-16 Salesforce.Com, Inc. Dashboard builder with live data updating without exiting an edit mode
US9449188B2 (en) 2014-10-10 2016-09-20 Salesforce.Com, Inc. Integration user for analytical access to read only data stores generated from transactional systems
GB2537115B (en) * 2015-04-02 2021-08-25 Advanced Risc Mach Ltd Event monitoring in a multi-threaded data processing apparatus
JP6477216B2 (ja) 2015-05-08 2019-03-06 富士通株式会社 演算装置、スレッド切替方法、及びマルチスレッドプログラム
US10115213B2 (en) 2015-09-15 2018-10-30 Salesforce, Inc. Recursive cell-based hierarchy for data visualizations
US10089368B2 (en) 2015-09-18 2018-10-02 Salesforce, Inc. Systems and methods for making visual data representations actionable
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
US10311047B2 (en) 2016-10-19 2019-06-04 Salesforce.Com, Inc. Streamlined creation and updating of OLAP analytic databases
CA3053391A1 (en) * 2017-02-20 2018-08-23 Intensivate Inc. Super-thread processor
KR101865332B1 (ko) 2017-03-27 2018-06-07 송성범 난방코일 일체형 가습기를 구비한 공기조화기
US10452586B2 (en) 2017-04-17 2019-10-22 Intel Corporation Avoid thread switching in cache management
US11586443B2 (en) * 2020-10-20 2023-02-21 Micron Technology, Inc. Thread-based processor halting
CN112306657A (zh) * 2020-10-30 2021-02-02 上海二三四五网络科技有限公司 一种基于优先级排序实现多个事件的线性倒计时的控制方法及装置
CN112437074B (zh) * 2020-11-17 2022-11-22 北京金山云网络技术有限公司 计数处理方法、装置、电子设备及存储介质
CN112463723A (zh) * 2020-12-17 2021-03-09 王志平 一种微内核阵列的实现方法
US11755361B2 (en) 2021-10-15 2023-09-12 Nxp B.V. Freedom from interference for aggregated communication channel handling using event-based processor extensions
CN116627857B (zh) * 2023-05-25 2023-11-24 合芯科技有限公司 一种处理器核外缓存模型及模拟方法

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3566357A (en) 1966-07-05 1971-02-23 Rca Corp Multi-processor multi-programed computer system
DE1549531A1 (de) 1966-08-16 1971-04-01 Scient Data Systems Inc Digitale Rechenanlage
US3568173A (en) 1968-08-19 1971-03-02 Scient Data Systems Inc Memory stroage element drive circuit
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3728692A (en) 1971-08-31 1973-04-17 Ibm Instruction selection in a two-program counter instruction unit
US3916383A (en) 1973-02-20 1975-10-28 Memorex Corp Multi-processor data processing system
FR2253428A5 (zh) 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
IT1000638B (it) 1973-12-28 1976-04-10 Olivetti & Co Spa Calcolatore elettronico con dispo sitivo di deviazione dei micropro grammi
US3980992A (en) 1974-11-26 1976-09-14 Burroughs Corporation Multi-microprocessing unit on a single semiconductor chip
US4047161A (en) * 1976-04-30 1977-09-06 International Business Machines Corporation Task management apparatus
US4229790A (en) 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4320453A (en) 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
FR2471631B1 (fr) 1979-12-11 1986-02-21 Cii Honeywell Bull Dispositif de synchronisation et d'affectation de processus entre plusieurs processeurs dans un systeme de traitement de l'information
US4493020A (en) 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
US4384324A (en) 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level
US4532587A (en) 1981-08-26 1985-07-30 Texas Instruments Incorporated Single chip processor connected to an external memory chip
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US4680698A (en) 1982-11-26 1987-07-14 Inmos Limited High density ROM in separate isolation well on single with chip
GB8309770D0 (en) 1983-04-11 1983-05-18 Inmos Ltd Microcomputer
US5103394A (en) 1984-04-30 1992-04-07 Hewlett-Packard Company Software performance analyzer
US4829425A (en) 1986-10-21 1989-05-09 Intel Corporation Memory-based interagent communication mechanism
JPS63123218A (ja) 1986-11-12 1988-05-27 Nec Corp タイマ/カウンタ回路
US4853849A (en) 1986-12-17 1989-08-01 Intel Corporation Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction
US5159686A (en) 1988-02-29 1992-10-27 Convex Computer Corporation Multi-processor computer system having process-independent communication register addressing
US5050070A (en) 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US5148536A (en) 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
US5353418A (en) 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
GB2234613B (en) 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US5079725A (en) 1989-11-17 1992-01-07 Ibm Corporation Chip identification method for use with scan design systems and scan testing techniques
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5197138A (en) 1989-12-26 1993-03-23 Digital Equipment Corporation Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5339415A (en) 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
EP0474297B1 (en) 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
DE69130723T2 (de) 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
JP2743608B2 (ja) 1991-03-27 1998-04-22 日本電気株式会社 共有レジスタ制御方式
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5530866A (en) 1991-07-30 1996-06-25 Tera Computer Company Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring
US5247675A (en) 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5630128A (en) 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5524250A (en) 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5287508A (en) 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5553305A (en) 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
JP3309425B2 (ja) 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
US5515538A (en) 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5423008A (en) 1992-08-03 1995-06-06 Silicon Graphics, Inc. Apparatus and method for detecting the activities of a plurality of processors on a shared bus
ATE188559T1 (de) * 1992-12-23 2000-01-15 Centre Electron Horloger Multi-tasking-steuerungsgerät mit geringem energieverbrauch
DE69325785T2 (de) 1992-12-29 2000-02-17 Koninkl Philips Electronics Nv Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
EP0617361B1 (en) 1993-03-26 2001-11-28 Cabletron Systems, Inc. Scheduling method and apparatus for a communication network
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5490272A (en) 1994-01-28 1996-02-06 International Business Machines Corporation Method and apparatus for creating multithreaded time slices in a multitasking operating system
US5613114A (en) 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5630136A (en) 1995-06-09 1997-05-13 Sun Microsystems, Inc. Method and apparatus for serializing access to multithreading unsafe resources
US5826081A (en) 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5996058A (en) * 1996-08-19 1999-11-30 Samsung Electronics Company, Ltd. System and method for handling software interrupts with argument passing
US5867644A (en) * 1996-09-10 1999-02-02 Hewlett Packard Company System and method for on-chip debug support and performance monitoring in a microprocessor
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US5864701A (en) * 1997-02-14 1999-01-26 Integrated Device Technology, Inc. Apparatus and method for managing interrupt delay associated with mask flag transition
US5809450A (en) * 1997-11-26 1998-09-15 Digital Equipment Corporation Method for estimating statistics of properties of instructions processed by a processor pipeline
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US20100292325A1 (en) * 2007-12-21 2010-11-18 Edward Tak Wei P-menthawe-3-carboxylic acid esters to treat airways diseases

Also Published As

Publication number Publication date
CA2299348A1 (en) 1999-04-29
TW409227B (en) 2000-10-21
HUP0100013A3 (en) 2004-03-29
WO1999021081A1 (en) 1999-04-29
KR20010031167A (ko) 2001-04-16
PL340095A1 (en) 2001-01-15
IL134823A0 (en) 2001-05-20
PL193285B1 (pl) 2007-01-31
JP2001521215A (ja) 2001-11-06
IL134823A (en) 2004-01-04
US6697935B1 (en) 2004-02-24
EP1029269A1 (en) 2000-08-23
CN1276888A (zh) 2000-12-13
CA2299348C (en) 2004-10-19
EP1029269B1 (en) 2003-09-24
KR100403658B1 (ko) 2003-10-30
HUP0100013A2 (hu) 2001-05-28
JP4006180B2 (ja) 2007-11-14

Similar Documents

Publication Publication Date Title
CN1112636C (zh) 在多线程处理器中选择线程切换事件的方法和装置
CN1117319C (zh) 在多线程处理器中改变线程优先级的方法和装置
CN1127017C (zh) 线程切换控制方法及用于该方法的线程状态寄存器
CN1188794C (zh) 到一个共享的协处理器资源的多个逻辑接口
CN1308825C (zh) 用于在smt处理器中进行cpi负载平衡的系统和方法
US6076157A (en) Method and apparatus to force a thread switch in a multithreaded processor
CN1308826C (zh) 用于smt处理器上的cpi调度的系统和方法
CN101539798B (zh) 多核和功率的中断平衡
CN101334721B (zh) 线程活锁单元
CN101896886B (zh) 一种用于计算机系统的资源分配方法及进程执行方法
CN1975663A (zh) 具有用于不同线程的非对称硬件多线程支持的装置
WO1999021088A1 (en) An apparatus and method to guarantee forward progress in a multithreaded processor
CN1316367C (zh) 增强调度线程的优先级引导的系统、设备和方法
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
CN1914597A (zh) 处理单元的动态加载和卸载
WO2002097622A2 (en) A resource management method
CN1928811A (zh) 处理操作管理系统和方法
Clemente et al. An approach to manage reconfigurations and reduce area cost in hard real-time reconfigurable systems
Kim et al. Using DVFS and task scheduling algorithms for a hard real-time heterogeneous multicore processor environment
CN1256677C (zh) 用于动态管理保存的处理器状态的方法和系统
CN1384431A (zh) 上下文保存

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20030625