CN1117319C - 在多线程处理器中改变线程优先级的方法和装置 - Google Patents

在多线程处理器中改变线程优先级的方法和装置 Download PDF

Info

Publication number
CN1117319C
CN1117319C CN98810355A CN98810355A CN1117319C CN 1117319 C CN1117319 C CN 1117319C CN 98810355 A CN98810355 A CN 98810355A CN 98810355 A CN98810355 A CN 98810355A CN 1117319 C CN1117319 C CN 1117319C
Authority
CN
China
Prior art keywords
thread
priority
instruction
threads
register
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
CN98810355A
Other languages
English (en)
Other versions
CN1276890A (zh
Inventor
约翰·M·博克哈根
威廉·T·弗林
安德鲁·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.)
Google LLC
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 CN1276890A publication Critical patent/CN1276890A/zh
Application granted granted Critical
Publication of CN1117319C publication Critical patent/CN1117319C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

在多线程处理器中改变线程 优先级的方法和装置
本发明涉及下列美国专利申请,这些申请的主题在此被纳入作为参考:(1)美国专利申请,题为“在多线程处理器中选择线程切换事件的方法和装置,系列号08/958,716,于1997年10月23日递交,与本申请同时递交;(2)美国专利申请,题为“多线程处理器系统中的线程切换控制”,系列号08/957,002,于1997年10月23日与本申请同时递交;(3)美国专利申请,题为“在多线程处理器中保证前进的装置和方法,系列号08/956,875,于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)寄存器、浮点状态和控制寄存器、计数寄存器、链路寄存器、异常寄存器、保存/恢复寄存器、以及专用寄存器。再有,特殊的缓存器,如段后备缓存器,可被复制或每个入口可以用线程号作标记,如果不如此做,则可在每次线程切换时清仓。还有,一些分支预测机制,例如相关寄存器和返回堆栈,也应被复制。幸运的是,不需要复制处理器的某些更大的功能,例如一级指令高速缓存(L1 I-高速缓存)、一级数据高速缓存(L1 D-高速缓存)、指令缓存器、存储队列、指令调度器、功能或执行单元、流水线、翻译后备缓存器(TLB)、以及分支历史表。当一个线程遇到延迟时,处理器迅速切换到另一线程。这一线程的执行复盖了在第一线程上的存储器延迟。
现有的多线程技术在一高速缓存缺失或一存储器查访上描述切换线程。在“Sparcle:大规模多处理器的一种变革性设计”(Agarwal等,IEEE微(Micro)卷13、No.3,pp48-60,1993年6月)中回顾了这一技术的主要实例。如在RISC体系结构中应用的那样,通常用于支持功能调用的多寄存器集被修改成用于维持多线程。8个重叠的寄存器窗口被修改成4个不重叠的寄存器集,其中每个寄存器集是为捕获和消息处理所作的保留。这一系统揭示出一个线程切换,它发生在每次远程存储器请
求中所造成的一级高速缓存缺失时。尽管这一系统代表了技术上的一种进步,但现代处理器设计经常利用附加在处理器上的多级高速缓存和高速存储器。该处理器系统利用某种公知的算法以确定每级高速缓存内将加载的主存储器的那个部分,这样,每当发生存储器访问时,如果它不在第一级高速缓存中,则处理器必须试图从第二级或更高级高速缓存中得到那个存储器访问内容。
欧洲专利EP-A-0 527 392提出在一多任务操作系统中抢先和不抢先地调度和执行程序线程。该发明通过为程序线程指定参数以允许应用程序影响从应用程序中提取出的程序线程的执行表。这些参数指示每个线程的优先级和线程所在的分配类别。
题为“个人计算机确定性优先级变换方法”(IBM技术说明汇编,vol.38,no.5,1995年5月,第271-276页)的文章提供了个人计算机(PC)确定性优先级变换方法的软件实现。
题为“通用Unix脱级(off-level)中断处理调用算法”(IBM技术说明汇编,vol.33,no.9,1991年2月1日,第446-447页)的文章中说明了一个程序,它描述的技术启动在一个UNIX或其他多任务操作系统环境中的脱级(off-level)中断处理器。
题为“以核线程满足实时性能目标”(实时杂志,1997年4月-6月,Real-Time(实时)Consult(咨询),比利时,no.2,第51-54页)的文章对实时操作系统中管理线程优先级进行了一般性讨论。该文章还叙述了当硬件和软件中断交互作用时会发生优先级变换。该文章描述了使用核线程和线程化的优先级追踪,以解决优先级变换问题。
题为“线程优先化:多重关系(multiple-Context)平行处理器中的线程调度机制”(未来一代计算机系统,vol.11,no.6,1995年10月,第503-518页)的文章提供了把实现线程优先级化作为指导调度活动的手段。
题为“在非重叠多寄存器组支持的RISC结构中用优先级策略分配任务”(IEEE环太平洋通信会议会报,计算机与信号处理,vol.1,1993年5月19-21日,第141-144页)的文章讨论了在实时、多任务应用中与状态交换操作关联的高开销处理。该文章叙述了通过非重叠多寄存器组(NMRS)组织来支持基于RISC的处理器能减小开销。
这样,本发明的一个目标是提供一种改进的数据处理系统,它能利用多线程数据处理系统中实现的硬件逻辑和寄存器在一多级高速缓存系统中减小由于存储器等待时间造成的延迟。
本发明通过提供一个能在两个指令线程之间切换执行的多线程处理器和在带有可选的对线程切换条件进行软件改写的硬件寄存器中实现的线程切换逻辑来实现这一目标。处理各种指令线程的各种状态允许优化处理器在各线程当中的使用。当处理器为第一线程从各种存储器部件,例如第一线程的高速缓存、存储器、外部I/O、直接存取存储器,检索必要的数据和/或指令时,允许该处理器去执行第二指令线程从而提高对处理器的利用程度,否则它会是空闲的。线程切换的条件对于每个线程可以是不同的,或者可以通过利用一个软件线程控制管理器在处理过程中改变线程切换条件。
当第一线程具有要求大量周期来完成的等待时间事件例如高速缓存缺失时,可处理第二线程,在此期间第二线程可能遇到在同一或不同高速缓存级上的高速缓存缺失,但它可在短得多的时间内完成。通过本发明实现一个前进计数寄存器和允许一个可编程最大线程切换次数的方法(在超过此最大次数之后处理器停止切换线程直至一个线程能够执行),可以避免翻来复去地重复,其中每个线程被锁在切换线程的一个重复周期中而没有任何指令在执行的情况。前进寄存器及其阈值监视在没有指令执行的情况下已发生的线程切换次数,并当这个次数等于阈值时便不再发生线程切换,直至一条指令被执行。前进计数寄存器的一个附加优点是能对某些等待时间的事件定制寄存器和阈值,例如一个阈
值用于像访问外部计算机网络那样的等待时间很长的事件;而另一个前进阈值用于像高速缓存缺失那样的等待时间较短的事件。
在等待由一线程切换超时寄存器中指定的周期数之后迫使一线程切换可以防止对一线程的计算机处理在一个超常的时间段内处于不活动状态。计算机处理系统不会由于急用共享资源而遭到挂起。实现了在线程之间公平分配处理器周期,而且限定了对外部中断及处理器外部其他事件的最大响应等待时间。
快速线程切换是由硬件寄存器实现的,这些寄存器存储线程状态、线程优先级、以及线程切换条件。
利用线程切换硬件寄存器能改变处理器中一个或多个线程的优先级。来自中断请求的信号或者软件指令都能用于修改指示每个线程优先级的状态寄存器中的位。然后,根据每个线程的优先级,可以发生线程切换,以允许较高优先级的线程有更多的处理周期。改变优先级的好处在于允许改变线程切换频率,增加至关重要的任务的执行周期数,减小由于线程切换等待时间造成的高优先级线程丢失的处理周期数。
本发明的另一方面是在数据处理系统中完成多线程操作的一种计算机方法,作法是在与至少一个存储器单元相连的多线程处理器中执行多个指令线程中的至少一个,每个指令线程有一个优先级,并改变这多个线程中一个或多个的优先级。根据所有这些线程的优先级,该多重处理器能从一个线程切换到另一线程。优先级或者可由来自中断的信号改变,或者可由称作线程切换管理器的硬件和软件结构安排来改变。线程优先级意味着一个线程的优先级能高于另一个,但这些线程也能有相等的优先级。提出了一种优先级方案,其中每个线程能有3个优先级之一。当第二线程处于准备好状态时,能从较低优先级的第一线程离开的切换。当高优先级线程有一个缺失是来自一级高速缓存或其他有快速响应时间的存储器时,能取消从这个有较高优先级的第一线程离开的切换。
简言之,本发明是根据处理器中所有线程的相对优先级在此多线程处理器中对多个指令线程的每一个分配处理器周期的计算机处理方法。
线程切换管理器是一种硬件和软件的结构安排,它有至少一个优先级切换指令,在一个第一寄存器(如机器状态寄存器和/或线程切换控制寄存器)中的至少一个线程切换优先级位,以及在一个第二寄存器(如线程状态寄存器)中的多个状态位,其中优先级切换指令能改变这多个优先级状态位中的任何一位。在一个有不只一个线程的多线程处理系统中,正在执行的线程称作活动线程。优先级切换指令能改变与多线程处理系统中的活动线程或任何其他线程相对应的优先级状态位。然后,如果一个线程切换优先级位是有效的,则多线程处理器把处理从活动线程切换出去,以响应于该活动线程或另一线程优先级的变化。
为把一现有的处理器改造成能容纳线程切换管理器,该优先级切换指令不应改变多线程处理器中被纳入结构的多个寄存器中的任何一个,还应在多线程处理器上执行并且没有非法指令中断,例如该优先级切换指令可以是一个优选的空操作(no op)指令。
在本发明还是一个计算机处理系统,包括处理多个指令线程的装置;存储这多个线程中每个优先级状态的装置;改变这多个线程中每个的优先级状态的装置,以及响应于该装置使处理装置能把处理从多个线程中的第一线程切换到多个线程中的第二线程的装置。
从下面对最佳实施例及附图的详细描述,将清楚看出本发明的其他目标、特性和特征;其结构的相关元件的方法、操作和功能;部件的组合;以及制造的经济方面,所有这些都构成本发明的一部分,其中在各图中相似参考数字标明相应的部件。
然而,参考下文中结合附图阅读示例性实施例的详细描述,将会最好地理解发明本身及其最佳使用方式,以及其他目标和优点,其中,
图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最好包括一个一级数据高速缓存(L1 D-高速缓存)120,一个二级L2高速缓存130,一个主存储器140,以及一个一级指令高速缓存(L1 I-高速缓存)150,所有这些都在操作上利用各种总线连接连至存储控制单元200。如图1中所示,存储控制单元200包括用于互连L1 D-高速缓存120和L2高速缓存130的过渡高速缓存210、主存储器140、以及多个执行单元。L1D-高速缓存120和L1 I-高速缓存150最好作为处理器100的一部分在芯片上提供,而主存储器140和L2高速缓存130可在芯片外提供。存储器系统140准备用于代表随机存取主存储器(它可以在处理器核100内部,也可以不在)以及在处理器核100外部的其他数据缓存器和高速缓存(如果有的话),以及其他外部存储器,例如DASD 170、带驱动器172及工作站176,如图1中所示。L2高速缓存130最好是比主存储器140速度更高的存储器系统,通过把选定的数据存储在L2高速缓存130中,能将由于访问主存储器140而发生的存储器等待时间减至最小。如图1所示,L2高速缓存130和主存储器140经由存储控制单元200直接连至L1 I-高速缓存150和指令单元220二者。
来自L1 I-高速缓存150的指令最好输出到指令单元220,根据本发明的方法和系统,指令单元220控制由各种子处理单元(如分支单元260、定点单元270、存储控制单元200、浮点单元280以及其他单元)执行多个线程,这些单元由数据处理系统10的结构指定。除了图1中描述的各种执行单元外,本领域技术人员会理解,现代超标量微处理器系统常常包括每个这种执行单元的多种版本,可以增加它们而不离开本发明的实质和范围。这些单元大多数将有来自各种寄存器(如通用寄存器GPR 272、浮点寄存器FPR 282)的操作数信息,作为输入源。此外,可以利用多个专用寄存器SPR 274。如图1所示,存储控制单元200和过渡高速缓存210直接与通用寄存器272及浮点寄存器282相连。通用寄存器272与专用寄存器274相连。
在只有这个多线程处理器100才有的各功能硬件单元当中,是线程切换逻辑400和过渡高速缓存210。线程切换逻辑400含有各种寄存器,它们确定哪个线程将是活动的或执行的线程。线程切换逻辑400在操作上与存储控制单元200、执行单元260、270和280、以及指令单元220相连。在存储控制单元200内部的过渡高速缓存210必须能实现多线程。存储控制单元200和过渡高速缓存210最好允许每线程至少一个未完成的数据请求。这样,当第一线程响应于例如L1 D-高速缓存缺失的发生而被挂起时,第二线程将能访问L1 D-高速缓存以得到那里存在的数据。如果这第二线程也造成L1 D-高速缓存缺失,则将发出另一个数据请求,这样在存储控制单元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,它在功能上与L1 D-高速缓存120、多路复用器360、L2高速缓存130以及主存储器140相连。再有,过渡高速缓存210从排序器350接收控制信号。排序器350包括多个排序器,最好是3个,用于处理指令和/或数据的取请求。排序器350还向过渡高速缓存210及L2高速缓存130输出控制信号,并对主存储器140收、发控制信号。
图3所示存储控制单元200中的多路复用器360从L1 D-高速缓存120、过渡高速缓存210、L2高速缓存130及主存储器140接收数据,如果数据是要存储到存储器的话,则还从执行单元270和280接收数据。多路复用器360对来自这些源的数据进行选择,并响应于一个从排序器350收到的选择控制信号,把数据输出到L1 D-高速缓存120或执行单元。再有,如图3所示,排序器350输出一个选择信号去控制第二多路复用器370。多路复用器370根据从排序器350收到的这个选择信号,把来自L2高速缓存130或主存储器140的数据输出到L1 I-高速缓存150或指令单元220。在产生上文讨论的控制和选择信号时,排序器350访问和更新L1 D-高速缓存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)遇到一个L1 D-高速缓存缺失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)事项。最后,但不限于此,线程切换控制器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中,或者数据或指令本身不在L1 D-高速缓存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代表这样的线程状态,其中在处理器内该线程的执行被停止,因为该线程在等待或者数据返回到L1 D-高速缓存120中或者指令返回到L1 I-高速缓存150中;状态11代表该线程在等待数据返回到L2高速缓存130;状态01表明在翻译后备缓存器250上有一缺失,即虚拟地址错或不可用,称作“表游走(table walk)”。在图5中还显示出线程状态的层次结构,其中状态00指示该线程已准备好供执行,具有最高优先级。短等待时间的事件最好赋予较高优先级。
图5还显示了当从各种源提取数据时状态的变化。正常的无中断地执行线程T0在块510中表示为状态00。如果发生L1 D-高速缓存或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高速缓存缺失,例如L1 I-高速缓存缺失和L1 D-高速缓存缺失二者,则可对每个高速缓存类型赋予单独的状态。另一种作法是可以赋予单个线程状态来代表不只一个事件或事件发生。
给出了一个线程切换算法的实例,它针对有相等优先级的两个线程,用于确定是否要切换线程。能根据本发明的原理扩展和修改该算法,从而适用于更多的线程和线程切换条件。线程状态寄存器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缺失,如果所请求的指令不在该高速缓存中的话;但当指令返回时,所请求的数据可能在L1 D-高速缓存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遇到一个较长的执行等待时间,例如一个L2高速缓存缺失或从计算机系统外部的源提取数据,则处理器仍将放弃对线程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)由于L1 D-高速缓存加载数据缺失而切换;(2)由于L1 D-高速缓存存储数据缺失而切换;(3)由于L1 I-高速缓存指令取缺失而切换;(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 (15)

1.一种计算机处理方法,其中在多线程处理器(100)中执行多个指令线程中的至少一个,每个线程具有一个优先级,其特征在于所述方法进一步包括:
改变这多个线程中一个或多个的优先级,其中由硬件产生的信号改变一个或多个线程的优先级,所述信号由多线程处理器(100)外部的一个事件造成;以及
基于每个线程的优先级从多个线程中的一个切换到这多个线程中的另一个。
2.权利要求1的方法,其中当所述多个线程中的一个第一线程(T0)的优先级低于所述多个线程中的一个第二线程(T1)的优先级,而且第二线程(T1)处于准备好状态时,发生从第一线程(T0)到第二线程(T1)的切换。
3.权利要求1或2中任何一个的方法,其中对于由指定多个线程切换事件的至少一个线程切换控制寄存器所指定的线程切换事件,不允许从多个线程中优先级高于多个线程中另一线程的那个线程向其他线程切换。
4.用于计算机处理系统的线程切换管理器(460),其特征在于包括:
一个多线程处理器;
多个指令线程,包括至少一个在多线程处理器中的活动线程;
至少一个优先级切换指令;
在第一寄存器(410)中的至少一个线程切换优先级位,用于存储与指定线程有关的优先级信息;
在第二寄存器(440)中的多个优先级状态位,用于定义指定的线程切换事件和存储与使其有效和无效的事件有关的信息,其中优先级切换指令能改变这多个优先级状态位中的任何一位。
5.权利要求4的线程切换管理器(460),其特征在于:
所述优先级切换指令改变多个优先级状态位之一,在多线程处理器(100)中多个指令线程中至少一个改变优先级。
6.权利要求5的线程切换管理器(460),其中如果至少一个线程切换优先级位为有效的,则多线程处理器(100)响应于这至少一个指令线程优先级的变化,把处理从该活动线程切换到其他线程。
7.权利要求4中任何一个的线程切换管理器(460),其中多个优先级状态位包括多个设置,这些设置中每个对应于多个指令线程中的相应一个。
8.权利要求4的线程切换管理器(460),其中所述第一寄存器(410)和所述第二寄存器(440)是一个整体。
9.权利要求5的线程切换管理器(460),其中在第一寄存器(410)中的至少一个线程切换优先级位是在操作上与多线程处理器(100)相连的线程切换控制寄存器中的至少一个线程切换控制位。
10.权利要求5的线程切换管理器(460),其中第二寄存器(440)包括一个操作上与多线程处理器(100)相连的线程状态寄存器(442,444),该线程状态寄存器(442,444)存储这多个指令线程中至少一个的状态。
11.权利要求4的线程切换管理器(460),其中优先级切换指令不改变多线程处理器(100)内多个纳入结构的寄存器的任何一个。
12.权利要求4的线程切换管理器(460),其中优先级切换指令能在多线程处理器(100)上执行而不发生非法指令中断。
13.权利要求4的线程切换管理器(460),其中优先级切换指令是一个空操作(no op)指令。
14.一个计算机处理器(100),包括:
(a)处理多个指令线程的装置;
(b)存储这多个线程中每个的优先级状态的装置;
(c)改变这多个线程中每个的优先级状态的装置,其中所述改变优先级状态的装置包括至少一个软件指令以操纵至少一个硬件寄存器中的优先级位;
(d)响应改变装置,是使处理装置能把处理从这多个线程中的一个第一线程切换到多个线程中的一个第二线程的装置。
15.一个计算机数据处理系统,包括:
一个多线程处理器(100),能处理至少一个指令线程和在至少两个指令线程之间切换;
多个内部存储器单元(120、130、140、150);
把内部存储器单元彼此连接和与多线程处理器连接的系统总线;
多个外部连接(155),把多线程处理器与一个或多个下列外部装置相连:存储器装置(170)、通信装置(164)、计算机网络(168)及输入/输出装置(178);
总线接口(152)把外部连接与多线程处理器相连;以及
线程切换管理器(460),在操作上与多线程处理器相连以响应于至少一个设置从而改变至少一个指令线程的优先级,该设置包括:(a)一个来自中断请求的信号,以及(b)至少一个软件指令以操纵至少一个硬件寄存器中的优先级位。
CN98810355A 1997-10-23 1998-10-14 在多线程处理器中改变线程优先级的方法和装置 Expired - Lifetime CN1117319C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/958,718 US6212544B1 (en) 1997-10-23 1997-10-23 Altering thread priorities in a multithreaded processor
US08/958,718 1997-10-23

Publications (2)

Publication Number Publication Date
CN1276890A CN1276890A (zh) 2000-12-13
CN1117319C true CN1117319C (zh) 2003-08-06

Family

ID=25501232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN98810355A Expired - Lifetime CN1117319C (zh) 1997-10-23 1998-10-14 在多线程处理器中改变线程优先级的方法和装置

Country Status (7)

Country Link
US (1) US6212544B1 (zh)
EP (1) EP1027650B1 (zh)
JP (1) JP3714598B2 (zh)
CN (1) CN1117319C (zh)
IL (1) IL135460A0 (zh)
TW (1) TW432327B (zh)
WO (1) WO1999021089A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1947095B (zh) * 2004-04-28 2011-05-04 松下电器产业株式会社 数据处理方法
CN101661386B (zh) * 2009-09-24 2013-03-20 成都市华为赛门铁克科技有限公司 多硬件线程处理器的业务处理装置及其业务处理方法
CN101334721B (zh) * 2004-09-23 2013-06-19 英特尔公司 线程活锁单元
CN101681261B (zh) * 2007-06-20 2014-07-16 富士通株式会社 运算处理装置及其控制方法

Families Citing this family (266)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE59710317D1 (de) * 1996-12-27 2003-07-24 Pact Inf Tech Gmbh VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US8686549B2 (en) * 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
JP3027845B2 (ja) * 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
DE19757876C2 (de) * 1997-12-24 2002-06-20 Bosch Gmbh Robert Verfahren zur Ermittlung der Auslastung eines Rechengeräts
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6477562B2 (en) * 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US7370325B1 (en) * 1999-02-19 2008-05-06 Lucent Technologies Inc. Eager evaluation of tasks in a workflow system
US6874144B1 (en) * 1999-04-05 2005-03-29 International Business Machines Corporation System, method, and program for implementing priority inheritance in an operating system
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US7644439B2 (en) * 1999-05-03 2010-01-05 Cisco Technology, Inc. Timing attacks against user logon and network I/O
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6631009B1 (en) * 1999-09-24 2003-10-07 Xerox Corporation Avoiding deadlock situations in a printing system using a locking time-out mechanism
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence 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
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) * 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6832265B1 (en) * 2000-01-07 2004-12-14 Cisco Technology, Inc. Methods and apparatus for moving data elements within a data communications device
US7099855B1 (en) 2000-01-13 2006-08-29 International Business Machines Corporation System and method for electronic communication management
US8041754B1 (en) * 2000-01-22 2011-10-18 Intel Corporation Establishing thread priority in a processor or the like
US7299194B1 (en) * 2000-02-22 2007-11-20 International Business Machines Corporation Method and system for researching sales effects of advertising using association analysis
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6810432B1 (en) * 2000-04-03 2004-10-26 Hewlett-Packard Development Company, L.P. Method for guaranteeing a device minimun bandwidth on a usb bus
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US6408277B1 (en) 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
US8290768B1 (en) 2000-06-21 2012-10-16 International Business Machines Corporation System and method for determining a set of attributes based on content of communications
US9699129B1 (en) 2000-06-21 2017-07-04 International Business Machines Corporation System and method for increasing email productivity
JP2004518183A (ja) 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2002241767A1 (en) * 2000-10-23 2002-06-18 Xyron Corporation Concurrent-multitasking processor
US6467033B2 (en) * 2000-12-12 2002-10-15 International Business Machines Corporation Method and apparatus for implementing locking of non-data page operations
US7644057B2 (en) * 2001-01-03 2010-01-05 International Business Machines Corporation System and method for electronic communication management
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US20030014474A1 (en) * 2001-05-30 2003-01-16 Mckaig Ray S. Alternate zero overhead task change circuit
US6651158B2 (en) * 2001-06-22 2003-11-18 Intel Corporation Determination of approaching instruction starvation of threads based on a plurality of conditions
US7454600B2 (en) 2001-06-22 2008-11-18 Intel Corporation Method and apparatus for assigning thread priority in a processor or the like
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20060218556A1 (en) * 2001-09-28 2006-09-28 Nemirovsky Mario D Mechanism for managing resource locking in a multi-threaded environment
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
WO2003065214A1 (en) * 2002-01-30 2003-08-07 Real Enterprise Solutions Development B.V. Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
EP2043000B1 (de) * 2002-02-18 2011-12-21 Richter, Thomas Bussysteme und Rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
AU2003231945A1 (en) * 2002-05-31 2003-12-19 Guang R. Gao Method and apparatus for real-time multithreading
US20030225816A1 (en) 2002-06-03 2003-12-04 Morrow Michael W. Architecture to support multiple concurrent threads of execution on an arm-compatible processor
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
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US20040034759A1 (en) * 2002-08-16 2004-02-19 Lexra, Inc. Multi-threaded pipeline with context issue rules
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7065596B2 (en) * 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
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
US6965986B2 (en) * 2002-09-19 2005-11-15 International Business Machines Corporation Method and apparatus for implementing two-tiered thread state multithreading support with high clock rate
US7984268B2 (en) * 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US7653906B2 (en) * 2002-10-23 2010-01-26 Intel Corporation Apparatus and method for reducing power consumption on simultaneous multi-threading systems
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
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
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7849465B2 (en) * 2003-02-19 2010-12-07 Intel Corporation Programmable event driven yield mechanism which may activate service threads
JP2006524850A (ja) * 2003-04-04 2006-11-02 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理方法およびデータ処理装置
US7278141B2 (en) * 2003-04-23 2007-10-02 International Business Machines Corporation System and method for adding priority change value corresponding with a lock to a thread during lock processing
US7000047B2 (en) * 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
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
US7363625B2 (en) * 2003-04-24 2008-04-22 International Business Machines Corporation Method for changing a thread priority in a simultaneous multithread processor
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
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
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US20050187913A1 (en) * 2003-05-06 2005-08-25 Yoram Nelken Web-based customer service interface
US8495002B2 (en) * 2003-05-06 2013-07-23 International Business Machines Corporation Software tool for training and testing a knowledge base
EP1634182A2 (en) * 2003-06-17 2006-03-15 PACT XPP Technologies AG Data processing device and method
JP3892829B2 (ja) * 2003-06-27 2007-03-14 株式会社東芝 情報処理システムおよびメモリ管理方法
US7380247B2 (en) * 2003-07-24 2008-05-27 International Business Machines Corporation System for delaying priority boost in a priority offset amount only after detecting of preemption event during access to critical section
EP1676208A2 (en) 2003-08-28 2006-07-05 PACT XPP Technologies AG Data processing device and method
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US20060212874A1 (en) * 2003-12-12 2006-09-21 Johnson Erik J Inserting instructions
US8694976B2 (en) * 2003-12-19 2014-04-08 Intel Corporation Sleep state mechanism for virtual multithreading
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US8643659B1 (en) 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US20050166177A1 (en) * 2004-01-27 2005-07-28 Ylian Saint-Hilaire Thread module chaining
US20050198475A1 (en) * 2004-02-06 2005-09-08 Infineon Technologies, Inc. Thread selection unit and method to fairly allocate processor cycles in a block multithreaded processor
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
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
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
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
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers 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
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
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
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
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US7546308B1 (en) * 2004-09-17 2009-06-09 Symantec Operating Corporation Model and method of an n-tier quality-of-service (QoS)
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US9626194B2 (en) 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US8789051B2 (en) 2004-11-18 2014-07-22 Hamilton Sundstrand Corporation Operating system and architecture for embedded system
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7721292B2 (en) * 2004-12-16 2010-05-18 International Business Machines Corporation System for adjusting resource allocation to a logical partition based on rate of page swaps and utilization by changing a boot configuration file
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
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
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657891B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
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
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
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
US7752627B2 (en) * 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a 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
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7921365B2 (en) * 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
CN102968302B (zh) * 2005-03-02 2016-01-27 英特尔公司 利用同步开销以改善多线程性能的机制
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US7917907B2 (en) * 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US7765550B2 (en) * 2005-05-26 2010-07-27 Hewlett-Packard Development Company, L.P. System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region
US7631125B2 (en) * 2005-09-30 2009-12-08 Intel Corporation Dynamically migrating channels
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US8250503B2 (en) * 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US7584344B2 (en) * 2006-05-02 2009-09-01 Freescale Semiconductor, Inc. Instruction for conditionally yielding to a ready thread based on priority criteria
US8065459B2 (en) 2006-05-17 2011-11-22 Nxp B.V. Multi-processing system and a method of executing a plurality of data processing tasks
US8495649B2 (en) * 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US20080022283A1 (en) * 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
US20100192199A1 (en) 2006-09-07 2010-07-29 Cwi International, Llc Creating and using a specific user unique id for security login authentication
WO2008031050A2 (en) * 2006-09-07 2008-03-13 Black Lab Security Systems, Inc. Method of controlling a 32/64-bit parallel thread execution within a microsoft pc or server operating system utility program
US7961745B2 (en) * 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7773621B2 (en) * 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
US8479201B2 (en) * 2006-09-18 2013-07-02 Innovasic, Inc. Processor with hardware solution for priority inversion
JP2008123045A (ja) * 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
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
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced 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
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US7560945B2 (en) * 2007-02-06 2009-07-14 International Business Machines Corporation Integrated circuit failure prediction
US7779235B2 (en) * 2007-02-06 2010-08-17 International Business Machines Corporation Using performance data for instruction thread direction
US7895454B2 (en) 2007-02-06 2011-02-22 International Business Machines Corporation Instruction dependent dynamic voltage compensation
US7936153B2 (en) * 2007-02-06 2011-05-03 International Business Machines Corporation On-chip adaptive voltage compensation
US7865750B2 (en) * 2007-02-06 2011-01-04 International Business Machines Corporation Fan speed control from adaptive voltage supply
US8615767B2 (en) * 2007-02-06 2013-12-24 International Business Machines Corporation Using IR drop data for instruction thread direction
US8022685B2 (en) * 2007-02-06 2011-09-20 International Business Machines Corporation Temperature dependent voltage source compensation
US7714635B2 (en) * 2007-02-06 2010-05-11 International Business Machines Corporation Digital adaptive voltage supply
US7971035B2 (en) * 2007-02-06 2011-06-28 International Business Machines Corporation Using temperature data for instruction thread direction
WO2008109870A1 (en) * 2007-03-07 2008-09-12 Spinealign Medical, Inc. Transdiscal interbody fusion device and method
GB2448118B (en) * 2007-04-03 2011-08-24 Advanced Risc Mach Ltd Error recovery following erroneous execution with an instruction processing pipeline
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
US8832702B2 (en) * 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
EP2159692A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd Information processor and load cancellation control method
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8005880B2 (en) * 2007-08-24 2011-08-23 International Business Machines Corporation Half width counting leading zero circuit
US8185572B2 (en) * 2007-08-24 2012-05-22 International Business Machines Corporation Data correction circuit
US7797131B2 (en) 2007-08-24 2010-09-14 International Business Machines Corporation On-chip frequency response measurement
US8972958B1 (en) 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
JP2009080690A (ja) * 2007-09-26 2009-04-16 Nec Corp 情報記録再生システム,情報記録再生方法及びプログラム
DE112008003643A5 (de) * 2007-11-17 2010-10-28 Krass, Maren Rekonfigurierbare Fliesskomma- und Bit- ebenen Datenverarbeitungseinheit
US8151008B2 (en) * 2008-07-02 2012-04-03 Cradle Ip, Llc Method and system for performing DMA in a multi-core system-on-chip using deadline-based 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
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
US8640133B2 (en) 2008-12-19 2014-01-28 International Business Machines Corporation Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms
WO2011051011A1 (en) * 2009-10-29 2011-05-05 International Business Machines Corporation A method, system and program to manage scheduling of processes
US8930907B2 (en) * 2009-12-01 2015-01-06 Microsoft Corporation Concurrency software testing with probabilistic bounds on finding bugs
US8700943B2 (en) * 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
WO2011161830A1 (ja) * 2010-06-25 2011-12-29 富士通株式会社 マルチコアシステムおよびスケジューリング方法
US20120005682A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Holistic task scheduling for distributed computing
US8789065B2 (en) * 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9465670B2 (en) 2011-12-16 2016-10-11 Intel Corporation Generational thread scheduler using reservations for fair scheduling
US9372478B2 (en) * 2012-01-04 2016-06-21 General Electric Company Control system for a power application
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US10275251B2 (en) 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9286068B2 (en) 2012-10-31 2016-03-15 International Business Machines Corporation Efficient usage of a multi-level register file utilizing a register file bypass
US8972803B2 (en) * 2012-11-14 2015-03-03 Alcatel Lucent Run-time default detection in a component associated with an application programming interface platform
US9569260B2 (en) 2013-05-31 2017-02-14 Microsoft Technology Licensing, Llc Efficient priority-aware thread scheduling
US9652284B2 (en) * 2013-10-01 2017-05-16 Qualcomm Incorporated GPU divergence barrier
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US10101889B2 (en) 2014-10-10 2018-10-16 Salesforce.Com, Inc. Dashboard builder with live data updating without exiting an edit mode
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
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
US10049141B2 (en) 2014-10-10 2018-08-14 salesforce.com,inc. Declarative specification of visualization queries, display formats and bindings
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US20180003614A1 (en) * 2015-01-30 2018-01-04 Hewlett-Packard Development Company, L.P. Multi-threaded fluid parameter signal processing
US10248463B2 (en) * 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
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
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10248457B2 (en) 2016-08-10 2019-04-02 International Business Machines Corporation Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task
US10275280B2 (en) 2016-08-10 2019-04-30 International Business Machines Corporation Reserving a core of a processor complex for a critical task
US10311047B2 (en) 2016-10-19 2019-06-04 Salesforce.Com, Inc. Streamlined creation and updating of OLAP analytic databases
US10248464B2 (en) 2016-10-24 2019-04-02 International Business Machines Corporation Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex
US10223164B2 (en) 2016-10-24 2019-03-05 International Business Machines Corporation Execution of critical tasks based on the number of available processing entities
CN107391248B (zh) * 2017-07-28 2019-10-25 四川华泰电气股份有限公司 用于stm32系统的多级反馈队列调度方法
CN109726006B (zh) * 2017-10-27 2023-06-06 伊姆西Ip控股有限责任公司 用于控制存储系统的方法、装置和计算机存储介质
KR102327878B1 (ko) * 2017-11-07 2021-11-17 삼성전자주식회사 반도체 장치 및 반도체 시스템
US11068274B2 (en) * 2017-12-15 2021-07-20 International Business Machines Corporation Prioritized instructions in an instruction completion table of a simultaneous multithreading processor
CN109298942B (zh) * 2018-10-09 2022-07-12 Oppo广东移动通信有限公司 图片处理方法及电子装置
US11144318B2 (en) * 2019-08-26 2021-10-12 Arm Limited Method and apparatus for application thread prioritization
CN112579278B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 用于同步多线程的中央处理单元、方法、设备及存储介质
CN114227716B (zh) * 2021-12-30 2024-06-04 重庆特斯联智慧科技股份有限公司 支持控制逻辑云调用的机器人系统及其方法
CN114490074B (zh) * 2022-01-30 2024-09-13 上海阵量智能科技有限公司 仲裁系统、方法、电子设备、存储介质及芯片
CN115080577B (zh) * 2022-05-27 2024-08-27 平安银行股份有限公司 数据统计周期切换方法、装置、设备及存储介质

Family Cites Families (57)

* 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
US4384324A (en) 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level
US4493020A (en) 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
US4532587A (en) 1981-08-26 1985-07-30 Texas Instruments Incorporated Single chip processor connected to an external memory chip
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
EP0473714A1 (en) 1989-05-26 1992-03-11 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
DE69129569T2 (de) 1990-09-05 1999-02-04 Philips Electronics N.V., Eindhoven Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69130723T2 (de) 1990-10-05 1999-07-22 Koninklijke Philips Electronics N.V., Eindhoven 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
DE69325785T2 (de) 1992-12-29 2000-02-17 Koninklijke Philips Electronics N.V., Eindhoven Verbesserte Architektur für Prozessor mit sehr langem Befehlswort
DE69429204T2 (de) 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1947095B (zh) * 2004-04-28 2011-05-04 松下电器产业株式会社 数据处理方法
CN101334721B (zh) * 2004-09-23 2013-06-19 英特尔公司 线程活锁单元
CN101681261B (zh) * 2007-06-20 2014-07-16 富士通株式会社 运算处理装置及其控制方法
CN101661386B (zh) * 2009-09-24 2013-03-20 成都市华为赛门铁克科技有限公司 多硬件线程处理器的业务处理装置及其业务处理方法

Also Published As

Publication number Publication date
EP1027650B1 (en) 2012-06-20
IL135460A0 (en) 2001-05-20
CN1276890A (zh) 2000-12-13
WO1999021089A1 (en) 1999-04-29
EP1027650A1 (en) 2000-08-16
TW432327B (en) 2001-05-01
JP3714598B2 (ja) 2005-11-09
US6212544B1 (en) 2001-04-03
JP2001521219A (ja) 2001-11-06

Similar Documents

Publication Publication Date Title
CN1117319C (zh) 在多线程处理器中改变线程优先级的方法和装置
CN1112636C (zh) 在多线程处理器中选择线程切换事件的方法和装置
CN1127017C (zh) 线程切换控制方法及用于该方法的线程状态寄存器
CN1188794C (zh) 到一个共享的协处理器资源的多个逻辑接口
US7979680B2 (en) Multi-threaded parallel processor methods and apparatus
CN101896886B (zh) 一种用于计算机系统的资源分配方法及进程执行方法
CN1308825C (zh) 用于在smt处理器中进行cpi负载平衡的系统和方法
US6105051A (en) Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
CN1308826C (zh) 用于smt处理器上的cpi调度的系统和方法
US6076157A (en) Method and apparatus to force a thread switch in a multithreaded processor
US20040172631A1 (en) Concurrent-multitasking processor
CN1316367C (zh) 增强调度线程的优先级引导的系统、设备和方法
US20030195920A1 (en) Apparatus and method for minimizing lock contention in a multiple processor system with multiple run queues
CN101031877A (zh) 线程活锁单元
CN1582428A (zh) 用于在非均衡存储器存取计算机系统中调度任务的方法和设备
JPH03144847A (ja) マルチプロセッサ・システムおよびそのプロセス同期方法
JP2004110795A (ja) 二層マルチスレッド化構造で最適パフォーマンスのためにスレッドの置き換えを実施する方法および装置
CN108920267A (zh) 任务处理装置
Kim et al. Using DVFS and task scheduling algorithms for a hard real-time heterogeneous multicore processor environment
WO2002046887A2 (en) Concurrent-multitasking processor
CN1384431A (zh) 上下文保存
CN117931437A (zh) 一种多线程处理器动态优先级切换方法
CN117971429A (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
ASS Succession or assignment of patent right

Owner name: GOOGLE INC.

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORP.

Effective date: 20120301

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

Effective date of registration: 20120301

Address after: American California

Patentee after: Google Inc.

Address before: American New York

Patentee before: International Business Machines Corp.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.

CX01 Expiry of patent term

Granted publication date: 20030806

CX01 Expiry of patent term