CN1195135A - 多线程处理器中用于降低线程切换时延的方法和装置 - Google Patents

多线程处理器中用于降低线程切换时延的方法和装置 Download PDF

Info

Publication number
CN1195135A
CN1195135A CN98106048A CN98106048A CN1195135A CN 1195135 A CN1195135 A CN 1195135A CN 98106048 A CN98106048 A CN 98106048A CN 98106048 A CN98106048 A CN 98106048A CN 1195135 A CN1195135 A CN 1195135A
Authority
CN
China
Prior art keywords
instruction
thread
formation
switching command
stand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN98106048A
Other languages
English (en)
Other versions
CN1092360C (zh
Inventor
威廉姆·托马斯·弗里恩
菲力普·罗格斯·黑列三世
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 CN1195135A publication Critical patent/CN1195135A/zh
Application granted granted Critical
Publication of CN1092360C publication Critical patent/CN1092360C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

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

一种用于降低多处理器中的线程切换时延的方法和装置。其在基本指令队列中存储活动线程的指令,在线程切换指令队列中存储待用线程的指令。在活动线程执行期间,从基本指令队列中分配指令以执行。发生线程切换时,从线程切换指令队列中分配指令以执行。同时,存储在线程切换指令队列中的指令被传输给基本指令队列。从而,消除了将待用线程的指令重新填充到基本指令队列的总时间。

Description

多线程处理器中用于 降低线程切换时延的方法和装置
本发明一般涉及多线程处理器中用于降低线程切换时延的方法和装置。
现在,用于高性能、单片微处理器的最常用的结构是采用精简指令集计算机的RISC结构。由于半导体技术的发展,RISC结构的目标已成为开发出差不多在每个机器的时钟周期都能启动一条指令的处理器设计。这种每条指令时钟周期数或称为CPI的度量标准被经常用于表征高性能处理器的结构。指令流水线技术及高速缓冲存储器结构特征已使得CPI的改善成为可能。流水线指令的执行使得后面的指令在前面已发出的指令执行完之前就可开始执行。高速缓冲存储器使得在大多数情况下,不需等待一个完整的主存储器存取时间,就可使指令继续执行。
尽管用作主存储器的存储器设备的速度不断提高,但是这种存储器芯片与高档处理器之间的速度差距却在不断加大。因此当前设计的高档处理器的相当多的执行时间浪费在等待高速缓冲存储器的未命中上,可以预见,除非实现存储器时延容许技术,否则存储器访问延时将占用越来越多的处理器执行时间的比率。
一种已知的容许存储器时延的技术是多线程。目前有两种多线程技术:硬件多线程和软件多线程。硬件多线程技术所采用的处理器在芯片上要保持若干个任务或线程的状态,它一般涉及为每个线程复制处理器的寄存器。
有两种基本的硬件多线程技术形式。常规的方式是在处理器中保持N个线程或状态并以周期(cycle-by-cycle)为基础将线程交错。这种方式由于处于一个线程中的指令被分离开,从而消除了流水线所存在的相关性问题。硬件多线程技术的另一种形式是对一些长时延事件进行线程切换。本发明的一种实施例就是使用硬件多线程技术并对一些长时延事件执行线程间的切换处理。
但是,线程切换本身需要占用一些时钟周期。由于线程切换所导致的时延其相当一部分是由于要求开始执行一个新的线程的取指令操作的结果。图1示出了用于由一个多线程处理器的多个流水线进行处理而分配指令的现有技术的结构。如图1所示,指令传送多路器8具有第一和第二输入。第一输入与一个存有多条指令的指令高速缓冲存储器4相连。存储在指令高速缓冲存储器4中的指令属于活动态的线程(active thread),即当前被执行的线程,及一个或多个等待执行的线程(dormant thread),即当前不被执行的线程。指令传送多路器8的第二个输入与主存储器和/或存储器子系统2相连。主存储器存储每个线程的所有指令,而存储器子系统例如二级高速缓冲存储器可以存储的指令数小于各线程所有的指令数但大于指令高速缓冲存储器4中的指令数。如图1所示,指令高速缓冲存储器4也与主存储器和/或存储器子系统2相连。
根据从控制逻辑6所接收的线路填充旁路信号,指令传送多路器8输出由控制逻辑6所寻址的来自于指令高速缓冲存储器4或主存储器和/或存储器子系统的指令。指令传送多路器8向基本指令队列10输出指令。基本指令队列10所存储的多条指令被输出分配给多个处理流水线以供多线程处理器执行。
发生线程切换时,基本指令队列10中的指令是无效的,并且在第一时钟周期,由控制逻辑6生成正在成为活动线程的待用线程的指令地址。在第二个时钟周期,根据新生成的指令地址对指令进行寻址,并且控制逻辑6输出一个线路填充旁路信号,使得指令传送多路器8选择与指令高速缓冲存储器4相连的输入。若被寻址的指令驻留在指令高速缓冲存储器4中,则在第三个时钟周期,指令传送多路器8向基本指令队列10输出这些指令,基本指令队列10输出这些指令以分配给处理流水线。相应地,正在成为活动线程的待用线程的指令驻留在指令高速缓冲存储器4中时,将占用三个时钟周期以完成线程切换。
当然,如果指令高速缓冲存储器4中没有包含由控制逻辑6所寻址的,即将成为活动线程的待用线程的指令,则完成线程切换的时间将根据解决指令高速缓冲存储器未命中问题所需要的时间而增加。
本发明的一个目的是提供一种用于降低多线程处理器中线程切换时延的方法和装置。
本发明另一个目的是提供一种用于降低多线程处理器中线程切换时延的方法和装置,它能从需要执行一个线程切换的时间中消除重新填充基本指令队列的时间。
本发明的这些以及其它目的将通过除了提供一个用于存储活动线程的基本指令队列外还提供一个线程切换指令队列来实现,其中该队列用于存储待用线程指令。当发生线程切换时,存储在线程切换指令队列中的指令被输出以供执行,从而消除了由于必须等待基本指令队列被重新填充而导致的线程切换时延。
另外,与即将成为活动线程的待用线程指令从线程切换指令队列中输出的同时,存储在线程切换指令队列中的一些指令被传输给基本指令队列。从线程切换指令队列中最先输出的指令输出之后,用于执行的指令会再一次从基本指令队列中输出。由于基本指令队列中已被预先填充进最初存储在线程切换指令队列中的指令,因此进一步消除了因填充基本指令队列而造成的延时。
本发明其它目的,特征和特点;方法、操作及相关结构部件的功能;或其组合及构造的经济性通过以下结合附图的实施例的详细描述将更清楚。其中实施例及附图均属于本说明书的一部分,不同的附图中的相应部分用相同的参考标记。
本发明通过以下的详细叙述及附图将更易理解,它们仅用于说明本发明,而不是用于限制本发明。
其中:
图1是用于分配指令的现有技术结构;
图2是根据本发明用于分配指令的结构。
根据本发明的用于分配指令的结构包括一个与指令传送多路器相连的线程切换指令队列及与一个基本指令队列并行的输出多路器。线程切换指令队列存储待用线程指令,而基本指令队列存储活动线程指令。发生线程切换时,存储在线程切换指令队列中的指令被输出多路器输出以备执行,从而消除了因必须等待基本指令队列被重新填充而导致的线程切换时延。
另外,正在成为活动线程的待用线程的指令是由输出多路器输出时,其中一些指令被传输给基本指令队列。从线程切换指令队列获取初始指令输出之后,输出多路器再一次输出从基本指令队列中获取的指令,以备执行。由于基本指令队列中已被预先填充进最初存储在线程切换指令队列中的指令,故又进一步消除了由于填充基本指令队列而导致的延时。
现在将参考图2详细地讨论根据本发明的分配指令的结构。如图2所示,按照与上述所讨论的与现有技术的指令分配结构相同的方式连接指令传送多路器8,控制逻辑6,指令高速缓冲存储器4,及主存储器和/或存储器子系统2。同样的,控制逻辑6向指令传送多路器8输出一个线路填充旁路信号,该信号表明指令传送多路器8应该输出来自于指令高速缓冲存储器4的指令还是来自于主存储器和/或存储器子系统2的指令。
根据本发明的用于分配指令的结构还包括一个指令填充多路器12,一个线程切换指令队列14及一个输出多路器16。指令填充多路器12具有一个第一和第二输入。第一输入与指令传送多路器8的输出相连。指令填充多路器12的第二输入与输出多路器16的输出相连。指令填充多路器12根据从控制逻辑6所接收的指令切换信号将来自于指令传送多路器8或输出多路器16的指令输出给基本指令队列10。
线程切换指令队列14也接收指令传送多路器8的输出,线程切换指令队列14及基本指令队列10将他们的输出传送给输出多路器16。输出多路器16根据由控制逻辑6所生成的线程切换信号选择性地输出来自于基本指令队列10或线程切换指令队列14的输出指令。由指令多路器16输出的指令被分配给多线程处理器的多个处理流水线。
在活动线程的执行期间,线程切换信号保持低电平状态,从而使指令填充多路器12输出从指令传送多路器8所接收的指令以填充基本指令队列10,输出多路器16输出从基本指令队列10所接收的指令。
进一步地,在活动线程执行期间,待用线程的指令被预先读取并存储在线程切换指令队列14中。为了预先读取待用线程指令并将其存储到线程切换指令队列14中,控制逻辑6使用用于预先读取存储在基本指令队列10中的活动线程的指令的时钟周期。控制逻辑6在以下的几种情况下盗用这些时钟周期:(1)线程切换指令队列14还没有装入待用线程指令;(2)还未处理由于预读取待用线程的指令而造成的指令高速缓冲存储器未命中;(3)没有需要访问指令高速缓冲存储器4的位于基本指令队列10中的分支指令及由多个处理流水线所处理的指令。若满足这些条件,则控制逻辑6生成待用线程指令的地址,并访问来自于至少是指令高速缓冲存储器4或主存储器和/或存储器子系统2的指令,并输出一个线路填充旁路信号,使得指令传送多路器8输出预读取的待用线程指令。控制逻辑6还使线程切换指令队列14能存储这些指令,而基本指令队列10不能存储这些指令。为了清楚起见,未示出从控制逻辑6到基本指令队列10及线程切换指令队列14的使能/禁止控制线路。
可以根据所需的操作特征设置基本指令队列10的大小及线程切换指令队列14的大小。但是,在一个优选实施例中,所设置的线程切换指令队列14的大小使得线程切换指令队列14所存储的指令多于在一个时钟周期内可被多个处理流水线接收的指令。
当发生线程切换时,控制逻辑6在一个时钟周期内将线程切换信号的状态从低电平变为高电平。结果,输出多路器16输出由线程切换指令队列14所存储的指令。由于线程切换指令队列14所存储的指令多于可被多个处理流水线所接收的指令数,因此没有分配给多个处理流水线的指令被指令填充多路器12所接收。指令填充多路器12根据线程切换信号的状态变化,输出由输出多路器16输出到基本指令队列10的指令。因此,在一个时钟周期内,从待用线程成为活动线程的指令被分配给处理流水线并传输给基本指令队列10。
在该时钟周期的结束,线程切换信号恢复它的低电平状态,指令被再一次从基本指令队列10中分配给处理流水线。另外,控制逻辑6开始预读取指令以填充基本指令队列10及线程切换指令队列14。
与现有技术的结构不一样,根据本发明的指令分配结构省去了填充所需要的和开始从指令队列中分配指令的总线程切换时延总时间。因此,本发明与现有技术相比在线程切换时延上减少了两个周期。
应当理解到,本发明不限于图2的实施例。例如,本发明仅是根据执行两个线程的多线程处理器描述的。但是,多线程处理器,可以执行多个线程,其中,控制逻辑6在线程切换指令队列14中存储若发生线程切换时最可能成为活动线程的待用线程指令。进一步地,可以提供每个对应于一个待用线程的线程切换指令队列,扩大指令填充多路器12及输出多路器16以适应于增加的线程切换指令队列。
尽管本发明是根据当前被认为是最实用且最优选的实施例进行描述的,但是应该理解,本发明不限于所公开的实施例,相反,它覆盖了在所附的权利要求书的精神和范围内的各种修改和等价物。

Claims (15)

1.一种用于降低多线程处理器中的线程切换时延的方法,包括:
(a)将一个活动线程的指令存入一个基本指令队列,所述活动线程是当前被所述多线程处理器所执行的线程;
(b)将一个待用线程的指令存入一个线程切换指令队列,所述待用线程是当前不被所述多线程处理器执行的线程;
(c)在所述活动线程执行期间分配所述基本指令队列中用于执行的指令;及
(d)在发生线程切换时分配所述线程切换指令队列中用于执行的指令。
2.如权利要求1所述的方法,其特征在于,
所述步骤(d)分配存储在所述线程切换指令队列中的所述指令的一部分,并进一步包括:
(e)在发生线程切换时将所述线程切换指令队列中未在步骤(d)分配的指令发送到所述基本指令队列中。
3.如权利要求1所述的方法,其特征在于,进一步包括:
(e)至少从指令高速缓冲及主存储器其中之一中预先读取用于存储在所述线程切换指令队列中的所述待用线程的指令。
4.如权利要求3所述的方法,其特征在于,所述步骤(e)包括:
(e1)判定所述基本指令队列中是否有分支指令或要被分配以执行的指令需要访问所述指令高速缓冲存储器;
(e2)判定由于待用线程指令的预读取而导致的指令高速缓冲存储器未命中事件是否正在被处理;及
(e3)当所述步骤(e1)判定出所述基本指令队列中没有分支指令或没有被分配的用于执行的指令需要访问所述指令高速缓冲存储器,及所述步骤(e2)判定出由于待用线程指令的预读取而导致的指令高速缓冲存储器未命中事件没有正在被处理时,预先读取所述待用线程的指令而不是所述活动线程的指令。
5.如权利要求1所述的方法,其特征在于,所述线程切换指令队列所存储的指令数多于在单个处理周期可被分配以执行的指令数。
6.如权利要求1所述的方法,其特征在于,所述步骤(b)存储多个待用线程之一的指令。
7.如权利要求1所述的方法,其特征在于,所述步骤(b)存储位于多个线程切换指令队列中的多个待用线程的指令,每个线程切换指令队列与所述多个待用线程之一相关;及
所述步骤(d)分配所述线程切换指令队列中与由于线程切换而成为活动的所述待用线程相关的指令。
8.一种用于分配指令以令多线程处理器执行的装置,它降低了线程切换时延,包括:
一个存储活动线程的指令的基本指令队列,所述活动线程是当前被所述多线程处理器执行的线程;
至少一个存储待用线程指令的线程切换指令队列,所述待用线程是当前不被所述多线程处理器执行的线程;及
分配装置,用于在所述活动线程执行期间分配基本指令队列中的指令以执行,及用于在发生线程切换时,分配所述线程切换指令队列中的指令以执行。
9.如权利要求8所述的装置,其特征在于,所述分配装置分配存储在所述线程切换队列中的所述指令的一部分以执行,并且当发生线程切换时,将所述线程切换指令队列中未分配以执行的指令传输到所述基本指令队列。
10.如权利要求9所述的装置,其特征在于,所述分配装置包括:
第一多路器,用于接收所述基本指令队列的输出及所述线程切换指令队列的输出,并根据表明一个线程切换的线程切换信号输出所述基本指令队列的所述输出及所述线程切换指令队列的所述输出之一;及
第二多路器,用于接收所述第一多路器的输出及用于存储在所述基本指令队列中的指令,并根据所述线程切换信号输出所述第一多路器及用于存储在所述基本指令队列中的指令之一。
11.如权利要求8所述的装置,其特征在于,所述线程切换指令队列至少存储预先从指令高速缓冲存储器及主存储器之一读取的所述待用线程的指令。
12.如权利要求8所述的装置,其特征在于,所述线程切换指令队列存储的指令数多于在单个处理周期能被分配以执行的指令数。
13.如权利要求8所述的装置,其特征在于,所述线程切换指令队列存储多个待用线程之一的指令。
14.如权利要求8所述的装置,其特征在于,进一步包括:
存储多个待用线程的多个线程切换指令队列,每个线程切换指令队列与所述多个待用线程之一相关;及
所述分配装置分配所述多个线程切换指令队列之一中由于线程切换而成为活动态的所述待用线程的指令。
15.如权利要求8所述的装置,其特征在于,所述分配装置包括:
一个多路器,其中一个输入与所述基本指令队列相连,另一个输入与所述线程切换指令队列相连。
CN98106048A 1997-03-28 1998-03-06 多线程处理器中用于降低线程切换时延的方法和装置 Expired - Fee Related CN1092360C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/829,518 US5907702A (en) 1997-03-28 1997-03-28 Method and apparatus for decreasing thread switch latency in a multithread processor
US829518 2001-04-09

Publications (2)

Publication Number Publication Date
CN1195135A true CN1195135A (zh) 1998-10-07
CN1092360C CN1092360C (zh) 2002-10-09

Family

ID=25254763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN98106048A Expired - Fee Related CN1092360C (zh) 1997-03-28 1998-03-06 多线程处理器中用于降低线程切换时延的方法和装置

Country Status (8)

Country Link
US (1) US5907702A (zh)
JP (1) JP3573943B2 (zh)
KR (1) KR100274268B1 (zh)
CN (1) CN1092360C (zh)
GB (1) GB2324392B (zh)
HK (1) HK1011567A1 (zh)
SG (1) SG63818A1 (zh)
TW (1) TW362194B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1296818C (zh) * 1999-09-01 2007-01-24 英特尔公司 用于多线程并行处理器的指令
CN1316357C (zh) * 2000-11-24 2007-05-16 凯萨罗恩产品公司 通过虚拟线程执行计算机多任务的方法及装置
CN101238441B (zh) * 2005-08-10 2010-10-13 诺基亚公司 计算装置中的可抢占语境切换方法
US8099533B2 (en) 2004-08-03 2012-01-17 Nxp B.V. Controller and a method for controlling the communication between a processor and external peripheral device
CN102426553A (zh) * 2011-11-11 2012-04-25 中国科学技术大学 基于双缓存预读的向用户传输数据的方法和装置
CN104081343A (zh) * 2012-01-31 2014-10-01 国际商业机器公司 事务存储器的主分支指令

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6044447A (en) * 1998-01-30 2000-03-28 International Business Machines Corporation Method and apparatus for communicating translation command information in a multithreaded environment
US6457064B1 (en) * 1998-04-27 2002-09-24 Sun Microsystems, Inc. Method and apparatus for detecting input directed to a thread in a multi-threaded process
US20010032307A1 (en) * 1998-12-30 2001-10-18 Joseph Rohlman Micro-instruction queue for a microprocessor instruction pipeline
KR100678930B1 (ko) * 1999-10-11 2007-02-07 삼성전자주식회사 디지털 시그널 프로세서를 위한 실시간 제어 시스템
US6629236B1 (en) 1999-11-12 2003-09-30 International Business Machines Corporation Master-slave latch circuit for multithreaded processing
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US7093109B1 (en) 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7139898B1 (en) * 2000-11-03 2006-11-21 Mips Technologies, Inc. Fetch and dispatch disassociation apparatus for multistreaming processors
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
US7149880B2 (en) * 2000-12-29 2006-12-12 Intel Corporation Method and apparatus for instruction pointer storage element configuration in a simultaneous multithreaded processor
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US6965982B2 (en) * 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
AU2003231945A1 (en) * 2002-05-31 2003-12-19 Guang R. Gao Method and apparatus for real-time multithreading
US7275247B2 (en) * 2002-09-19 2007-09-25 International Business Machines Corporation Method and apparatus for handling threads in a data processing system
US7062606B2 (en) * 2002-11-01 2006-06-13 Infineon Technologies Ag Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US7076616B2 (en) 2003-03-24 2006-07-11 Sony Corporation Application pre-launch to reduce user interface latency
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7653904B2 (en) * 2003-09-26 2010-01-26 Intel Corporation System for forming a critical update loop to continuously reload active thread state from a register storing thread state until another active thread is detected
US8140829B2 (en) * 2003-11-20 2012-03-20 International Business Machines Corporation Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US7360064B1 (en) 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7441101B1 (en) * 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
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
US7206922B1 (en) 2003-12-30 2007-04-17 Cisco Systems, Inc. Instruction memory hierarchy for an embedded processor
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US20050246461A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Scheduling threads in a multi-processor computer
US20050270297A1 (en) * 2004-06-08 2005-12-08 Sony Corporation And Sony Electronics Inc. Time sliced architecture for graphics display system
US7487503B2 (en) 2004-08-12 2009-02-03 International Business Machines Corporation Scheduling threads in a multiprocessor computer
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
US7913255B2 (en) * 2005-10-20 2011-03-22 Qualcomm Incorporated Background thread processing in a multithread digital signal processor
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
US9170968B2 (en) * 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
JP2015106167A (ja) * 2013-11-28 2015-06-08 ソニー株式会社 情報処理装置、情報処理方法および記憶媒体
US20160283233A1 (en) * 2015-03-24 2016-09-29 Freescale Semiconductor, Inc. Computer systems and methods for context switching
CN113168328B (zh) * 2018-12-11 2024-01-26 三垦电气株式会社 处理器和管线处理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901230A (en) * 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
EP0381655A3 (en) * 1989-01-31 1992-12-02 International Business Machines Corporation Method for synchronizing the dispatching of tasks among multitasking operating systems
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
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
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5109512A (en) * 1990-05-31 1992-04-28 International Business Machines Corporation Process for dispatching tasks among multiple information processors
US5452452A (en) * 1990-06-11 1995-09-19 Cray Research, Inc. System having integrated dispatcher for self scheduling processors to execute multiple types of processes
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
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
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1296818C (zh) * 1999-09-01 2007-01-24 英特尔公司 用于多线程并行处理器的指令
CN1316357C (zh) * 2000-11-24 2007-05-16 凯萨罗恩产品公司 通过虚拟线程执行计算机多任务的方法及装置
US8099533B2 (en) 2004-08-03 2012-01-17 Nxp B.V. Controller and a method for controlling the communication between a processor and external peripheral device
CN101238441B (zh) * 2005-08-10 2010-10-13 诺基亚公司 计算装置中的可抢占语境切换方法
CN102426553A (zh) * 2011-11-11 2012-04-25 中国科学技术大学 基于双缓存预读的向用户传输数据的方法和装置
CN102426553B (zh) * 2011-11-11 2014-05-28 中国科学技术大学 基于双缓存预读的向用户传输数据的方法和装置
CN104081343A (zh) * 2012-01-31 2014-10-01 国际商业机器公司 事务存储器的主分支指令
CN104081343B (zh) * 2012-01-31 2016-08-17 国际商业机器公司 事务存储器的主分支指令

Also Published As

Publication number Publication date
GB9803618D0 (en) 1998-04-15
HK1011567A1 (en) 1999-07-16
KR19980079506A (ko) 1998-11-25
KR100274268B1 (ko) 2000-12-15
US5907702A (en) 1999-05-25
SG63818A1 (en) 1999-03-30
JPH10283203A (ja) 1998-10-23
TW362194B (en) 1999-06-21
CN1092360C (zh) 2002-10-09
GB2324392B (en) 2001-09-05
JP3573943B2 (ja) 2004-10-06
GB2324392A (en) 1998-10-21

Similar Documents

Publication Publication Date Title
CN1092360C (zh) 多线程处理器中用于降低线程切换时延的方法和装置
US7028160B2 (en) Processing device with prefetch instructions having indicator bits specifying cache levels for prefetching
US6131155A (en) Programmer-visible uncached load/store unit having burst capability
US5179372A (en) Video Random Access Memory serial port access
RU2405189C2 (ru) Расширение блока стековых регистров с помощью теневых регистров
KR100678372B1 (ko) 고속 프로세서 시스템, 이를 이용한 방법, 및 기록 매체
US5121360A (en) Video random access memory serial port access
EP0972246A1 (en) Computer cache memory windowing
KR100936601B1 (ko) 멀티 프로세서 시스템
KR100404672B1 (ko) 슈퍼스칼라프로세서의로드버퍼와저장버퍼우선순위동적전환방법및장치
US5253353A (en) System and method for efficiently supporting access to I/O devices through large direct-mapped data caches
KR920003474B1 (ko) 정보처리장치
US6253290B1 (en) Multiprocessor system capable of circumventing write monitoring of cache memories
Govindarajan et al. Design and performance evaluation of a multithreaded architecture
US20040095355A1 (en) Computer chipsets having data reordering mechanism
CA1272295A (en) Multi-channel shared resource processor
US5689670A (en) Data transferring system with multiple port bus connecting the low speed data storage unit and the high speed data storage unit and the method for transferring data
CA1160351A (en) Virtual memory terminal
KR100334298B1 (ko) 기억 소자
Quammen et al. Register window management for a real-time multitasking RISC
US6694423B1 (en) Prefetch streaming buffer
US5933856A (en) System and method for processing of memory data and communication system comprising such system
EP4160423B1 (en) Memory device, memory device operating method, and electronic device including memory device
Amamiya et al. Datarol: a parallel machine architecture for fine-grain multithreading
JPH06274450A (ja) データ転送システム

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20021009

Termination date: 20110306