CN1195135A - 多线程处理器中用于降低线程切换时延的方法和装置 - Google Patents
多线程处理器中用于降低线程切换时延的方法和装置 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000003247 decreasing effect Effects 0.000 title abstract 2
- 238000012545 processing Methods 0.000 claims abstract description 12
- 230000015572 biosynthetic process Effects 0.000 claims description 92
- 230000015654 memory Effects 0.000 claims description 27
- 230000000694 effects Effects 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving 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所述的装置,其特征在于,所述分配装置包括:
一个多路器,其中一个输入与所述基本指令队列相连,另一个输入与所述线程切换指令队列相连。
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)
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)
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)
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 |
-
1997
- 1997-03-28 US US08/829,518 patent/US5907702A/en not_active Expired - Fee Related
- 1997-11-21 TW TW086117440A patent/TW362194B/zh not_active IP Right Cessation
- 1997-12-02 KR KR1019970065342A patent/KR100274268B1/ko not_active IP Right Cessation
-
1998
- 1998-02-23 GB GB9803618A patent/GB2324392B/en not_active Expired - Lifetime
- 1998-02-26 SG SG1998000434A patent/SG63818A1/en unknown
- 1998-03-05 JP JP05326798A patent/JP3573943B2/ja not_active Expired - Fee Related
- 1998-03-06 CN CN98106048A patent/CN1092360C/zh not_active Expired - Fee Related
- 1998-12-02 HK HK98112653A patent/HK1011567A1/xx not_active IP Right Cessation
Cited By (8)
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 |