CN1841314A - 双线程处理器 - Google Patents

双线程处理器 Download PDF

Info

Publication number
CN1841314A
CN1841314A CNA2006100653319A CN200610065331A CN1841314A CN 1841314 A CN1841314 A CN 1841314A CN A2006100653319 A CNA2006100653319 A CN A2006100653319A CN 200610065331 A CN200610065331 A CN 200610065331A CN 1841314 A CN1841314 A CN 1841314A
Authority
CN
China
Prior art keywords
processor
thread
register
processor thread
instruction
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
CNA2006100653319A
Other languages
English (en)
Other versions
CN100440139C (zh
Inventor
H-Y·陈
S·苏塔迪亚
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.)
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN1841314A publication Critical patent/CN1841314A/zh
Application granted granted Critical
Publication of CN100440139C publication Critical patent/CN100440139C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)

Abstract

本发明提供了一种流水线处理器架构或结构、处理器、和方法。在一个实施方案中,所提供的处理器包括:取指令单元,该单元可运行以取出与多个处理器线程相关联的指令;响应于所述取指令单元的译码器;响应于所述译码器的发令逻辑;和寄存器文件,该寄存器文件包括对应于所述多个处理器线程的多个存储体(bank)。每个存储体可运行从而存储与对应的处理器线程相关联的数据。所述处理器可包括对应于多个处理器线程中每个线程的一组寄存器。组中的每个寄存器可以位于所述处理器的流水线级之前或之后。

Description

双线程处理器
技术领域
[0001]以下的公开内容涉及处理电路和系统。
背景技术
[0002]常规的操作系统典型地支持多任务,多任务是一种调度机制,该机制允许不只一个处理器线程(processor thread)共享共同的处理资源。处理器线程代表处理器内的架构状态(architectural state),其跟踪软件程序的执行。如果计算机具有单个处理器,在任何给定的时间点就只处理一个处理器线程,这就意味着处理器现在正在有效地执行与单个处理器线程相关联的指令。从一个处理器线程重新分配处理器到另一个线程的操作称为上下文切换或环境切换(context switch)。
[0003]在常规的流水线处理器中,上下文切换通常是通过硬件中断和中断服务例程发生的。中断服务例程通常具有相联的执行时间或中断开销,从而消耗宝贵的处理器时间。另外,在常规的流水线处理器中,上下文切换通常只以固定的间隔(例如,每100微秒)发生,如例如操作系统的供应商所确定的那样。
发明内容
[0004]大体上,在一个方面,本说明书描述了一种包括流水线级或流水线阶段的处理器。所述流水线级包括第一输入寄存器、第二输入寄存器、第一输出寄存器,和第二输出寄存器。所述处理器进一步包括与所述第一输入寄存器和所述第二输入寄存器通信的第一选择器、和与所述第一输出寄存器和所述第二输出寄存器通信的第二选择器。所述处理器也包括控制器,该控制器可运行以控制所述第一和第二选择器的切换,以使在正在处理第一处理器线程的时间期间,与第一处理器线程相关联的数据传递通过所述第一输入寄存器、所述流水线级、和所述第一输出寄存器,而在正在处理第二处理器线程的时间期间,与第二处理器线程相关联的数据传递通过所述第二输入寄存器、所述流水线级、和所述第二输出寄存器。所述第一输入寄存器和所述第一输出寄存器可运行以存储所述第一处理器线程的状态,而且所述第二输入寄存器和所述第二输出寄存器可运行以存储第二处理器线程的状态。
[0005]特定的实施方式可包括一个或多个以下特征。所述第一选择器可包括多路复用器,而所述第二选择器可包括多路分解器。所述流水线级可包括取指令单元、译码逻辑、发令逻辑(issue logic)、执行单元、读逻辑、或写逻辑中的一个。所述控制器可基于确定分配到所述第一和第二处理器线程的每个线程的处理器时间的输入,来控制所述第一和第二选择器的切换。所述控制器可以在执行程序期间动态地控制所述第一和第二选择器的切换,或基于先前确立的针对所述第一和第二处理器线程每个线程的处理器时间分配静态地控制所述第一和第二选择器的切换。
[0006]所述处理器可进一步包括第一中断处理例程,以处理与所述第一处理器线程相关联的中断请求;和第二中断处理例程,以处理与所述第二处理器线程相关联的中断请求。所述第一中断处理例程和所述第二处理例程可具有各自的入口点(entry point)。所述处理器可进一步包括第一异常处理例程,以处理与所述第一处理器线程相关联的异常请求;和第二异常处理例程,以处理与所述第二处理器线程相关联的异常请求。所述处理器可进一步包括单个异常处理例程或单个中断处理例程,以分别处理与所述第一和第二处理器线程都相关联的基本上所有的异常请求或基本上所有的中断请求。
[0007]所述处理器可进一步包括对应于多个处理器线程中每个线程的一组寄存器。组中的每个寄存器可以位于所述处理器的流水线级之前或之后。所述控制器可以在所述多个处理器线程之间执行上下文切换,包括在对应的寄存器组中存储当前执行的处理器线程的状态,和将来自对应的寄存器组的另一处理器线程的状态载入以允许处理另一处理器线程。
[0008]大体上,在另一方面,本说明书描述的处理器包括对应于多个处理器线程中每个线程的一组寄存器。组中的每个寄存器可以位于所述处理器的流水线级之前或之后。所述处理器进一步包括可编程控制器,用来在所述多个处理器线程之间中执行上下文切换,包括在对应的寄存器组中存储当前执行的处理器线程的状态,和将来自对应的寄存器组的另一处理器线程的状态载入以允许处理另一处理器线程。
[0009]特定的实施方式包括一个或多个以下的特征。所述可编程控制器可以在指令周期的结束(end)执行上下文切换。所述处理器可进一步包括寄存器文件或寄存器堆或集(register file),该寄存器文件具有对应于所述多个处理器线程中每个线程的多个存储体或组(bank)。每个存储体可存储与对应的处理器线程相关联的数据。所述处理器可以进一步包括多个程序计数器,每个程序计数器可运行以指示对应的处理器线程的执行状态。所述处理器可进一步包括对应于所述多个处理器线程的多个中断处理例程,其中每个中断处理例程处理与对应的处理器线程相关联的中断请求。所述多个中断处理例程的每一个可以具有分离的入口点。所述处理器可进一步包括对应于所述多个处理器线程的多个异常处理器例程,其中每个异常处理例程处理与对应的处理器线程相关联的异常请求。所述处理器可包括单个异常处理例程或单个中断处理例程以分别处理与所述多个处理器线程相关联的基本上所有的异常请求或基本上所有的中断请求。
[0010]大体上,在另一方面,本说明书描述的一种方法包括提供用于指令执行的第一处理器线程;提供用于指令执行的第二处理器线程;处理所述第一处理器线程;和执行从所述第一处理器线程到所述第二处理器线程的上下文切换。执行上下文切换包括在对应于所述第一存储器线程的第一组寄存器内存储所述第一处理器线程的状态,和将来自对应于所述第二处理器线程的第二组寄存器的、所述第二处理器线程的状态载入。
[0011]特定的实施方式可包括一个或多个以下的特征。在对应的寄存器组内存储给定处理器线程的状态包括存储对应于处理器流水线级的数据。所述方法进一步包括接收改变所述处理器时间分配的输入、和基于改变的处理器时间分配执行在所述第一和第二处理器线程中之间的上下文切换。执行上下文切换可包括在执行程序期间动态地执行上下文切换,或基于先前确立的针对所述第一和第二处理器线程每个线程的处理器时间分配静态地执行上下文切换。所述方法进一步包括使用第一中断处理例程来处理与所述第一处理器线程相关联的中断请求、和使用第二中断处理例程来处理与所述第二处理器线程相关联的中断请求。所述方法进一步包括使用第一异常处理例程,以处理与所述第一处理器线程相关联的异常请求;和使用第二异常处理例程,以处理与所述第二处理器线程相关联的异常请求。所述方法进一步包括使用单个异常处理例程或单个中断处理例程,以分别处理与所述第一和第二处理器线程相关联的基本上所有的异常请求或基本上所有的中断请求。
[0012]大体上,在另一个方面,本说明书描述的处理器包括:取指令单元,该单元可运行以取出与多个处理器线程相关联的指令;响应于所述取指令单元的译码器;响应于所述译码器的发令逻辑;和寄存器文件,该寄存器文件包括对应于所述多个处理器线程的多个存储体或组(bank)。每个存储体可运行从而只存储与对应的处理器线程相关联的数据。
[0013]特定的实施方式可包括一个或多个以下特征。所述数据可包括与给定的处理器线程相关联的被执行指令的操作数或结果。所述处理器进一步包括与所述取指令单元通信的控制器。所述控制器可以确定处理器线程,从该处理器线程中,可以由所述取指令单元读取下一个指令。所述处理器进一步包括对应于所述多个线程的每个线程的一组寄存器。组中的每个寄存器可以位于所述处理器的流水线级之前或之后。所述控制器可以在所述多个处理器线程之间执行上下文切换,包括在对应的寄存器组中存储当前执行的处理器线程的状态,和将来自对应的寄存器组的另一处理器线程的状态载入以允许处理另一处理器线程。所述控制器可包括对应于所述多个处理器线程的多个线程分配计数器。每个线程分配计数器可包含一个数值,该数值代表有多少处理器时间将分配给各自的处理器线程。所述控制器可执行上下文切换,其包括切换与所述取指令单元通信的选择器。所述选择器可包括多路复用器和多路分解器。
[0014]大体上,在一个方面,本说明书描述的处理器包括贯穿整个流水线级执行指令的装置。用于执行指令的所述装置包括用于存储数据的第一输入装置,用于存储数据的第二输入装置,用于存储数据的第一输出装置,和用于存储数据的第二输出装置。所述处理器进一步包括与用于存储数据的所述第一输入装置和用于存储数据的所述第二输入装置通信的第一选择装置;和与用于存储数据的所述第一输出装置和用于存储数据的所述第二输出装置通信的第二选择装置。所述处理器也包括用于控制所述第一和第二选择装置的切换的装置,使得在正在处理第一处理器线程的时间期间,与所述第一处理器线程相关联的数据通过用于存储数据的所述第一输入装置、所述执行装置、和用于存储数据的所述第一输出装置,而在正在处理第二处理器线程的时间期间,与所述第二处理器线程相关联的数据通过用于存储数据的所述第二输入装置、所述执行装置、和用于存储数据的所述第二输出装置。用于存储数据的所述第一输入装置和用于存储数据的所述第一输出装置可运行以存储所述第一处理器线程的状态,而用于存储数据的所述第二输入装置和用于存储数据的所述第二输出装置可运行以存储所述第二处理器线程的状态。
[0015]大体上,在另一方面,本说明书描述的处理器包括对应于多个处理器线程中每个线程的数据存储装置。每个数据存储装置可以位于所述处理器的流水线级装置之前或之后。所述处理器进一步包括用于在所述多个处理器线程之间执行上下文切换的装置,其包括用于在对应的数据存储装置组内存储当前执行的处理器线程的状态、并将来自对应的数据存储装置组的另一处理器线程的状态载入以允许处理另一处理器线程的装置。
[0016]大体上,在另一方面,本发明描述的控制器包括:用于取出与多个处理器线程相关联的指令的装置;用于对取出的指令进行译码的装置;用于发出译码指令的装置;和用于在对应的存储装置内存储与对应的处理器线程相关联的数据的装置。
[0017]特定的实施方式可包括一个或多个以下特征。所述数据可包括与给定处理器线程相关联的被执行指令的操作数或结果。所述处理器进一步包括确定处理器线程的装置,从该处理器线程,将取出下一个指令。所述处理器进一步包括对应于所述多个处理器线程中每个线程的数据存储装置。每个数据存储装置可以位于所述处理器的流水线级装置之前或之后。所述处理器可包括用于在所述多个处理器线程之间执行上下文切换的装置,其包括用于在对应的数据存储装置内存储当前执行的处理器线程的状态、并将来自对应的数据存储装置的另一处理器线程的状态载入以允许处理另一处理器线程的装置。
[0018]用于执行上下文切换的所述装置可包括用于存储数值的装置,该数值代表有多少处理器时间将分配给各个处理器线程。用于执行上下文切换的所述装置可包括用于切换选择器的装置,该选择器与所述取指令装置通信。
[0019]实施方式可包括一个或多个以下特征。流水线处理器被构造成在没有与硬件中断相关联的任何中断开销,例如中断服务例程的情况下执行上下文切换。在一个实施方案中,上下文切换自动地发生,并主要通过硬件,例如,使用可编程的线程分配控制器。在一个实施方案中,流水线处理器将第一处理器线程的状态保存到位于所述流水线处理器每个流水线级之间的第一组寄存器,并将来自也位于所述流水线处理器每个流水线级之间的第二组寄存器的第二处理器线程的状态载入。所述寄存器的位置允许快速的上下文切换时间。
[0020]用户,例如,网络管理员可以定制分配给每个处理器线程多少时间。在一个实施方式中,确立了初始处理器时间分配后,用户可进一步动态地改变处理器时间分配。用户可以保留对处理器时间分配的完全控制,而不是放弃对操作系统的控制。
[0021]一个或多个实施方式的细节在附图和下面的说明中给出。通过说明和附图以及权利要求,其它的特征和优点会很清楚。
附图说明
[0022]图1是一种流水线处理器架构的框图。
[0023]图2是在图1的流水线处理器结构或架构中运行的方法。
[0024]图3是根据图1中流水线处理器结构的一种流水线处理器的框图。
[0025]图4是一种流水线处理器结构的框图。
[0026]图5是根据图4中流水线处理器结构的一种流水线处理器的框图。
[0027]图6是在图1和图4的流水线处理器结构中执行异常处理的方法。
[0028]图7是在图1和图4的流水线处理器结构中执行中断处理的方法。
[0029]在各个附图中相同的附图标记表示相同的元件。
具体实施方式
[0030]图1是流水线处理器结构100的框图,该结构可运行以处理两个或更多个处理器线程T1、T2...Tn。处理器线程T1、T2...Tn每个都代表流水线处理器结构100内跟踪对应的软件程序执行的一种结构状态。软件程序的指令可以从,例如,指令高速缓冲存储器(例如指令高速缓冲存储器102)中检索到。在一个实施方案中,流水线处理器结构100包括两个或多个程序计数器(未示出),每个计数器对应处理器线程T1、T2...Tn。每个程序计数器指示流水线处理器结构100关于指令序列的位置(针对对应的处理器线程T1、T2...Tn)。程序计数器在下面将结合图3和图5更详细地讨论。
[0031]在一个实施方案中,流水线处理器结构100包括六个流水线级。六个流水线级包括取指令级(instruction fetch stage,IF)、译码指令级(instruction decode stage,ID)、发出指令级(instruction issue stage,IS)、执行指令级(instruction execution stage,EX)、读取数据存储器级(data memory read stage,MEM)、和回写级(write back stage,WB)。然而,流水线处理器结构100可包括不同数量的流水线级。流水线处理器结构100进一步包括取指令单元(instruction fetch unit,IFU)104、译码逻辑106、发令逻辑108、寄存器文件110、执行单元112、读逻辑114、写逻辑116、和可编程线程分配控制器118。
[0032]取指令单元104从例如,指令高速缓冲存储器102取回程序指令。译码逻辑106将程序指令译码并产生将要被执行单元112执行的译码指令。在一个实施方案中,译码指令是固定长度的微操作(micro-op)指令。发令逻辑108向执行单元112发出译码指令用于执行。执行单元112可以是载入执行单元、存储执行单元、算术逻辑单元(ALU)、乘法和累加单元(MAC)、或组合载入/存储执行单元,如发明人为Hong-yiChen和Jensen Tjeng,名称为“Variable Length Pipeline ProcessorArchitecture”的美国专利申请(代理人案卷号为MP0634/13361-140001)所描述的那样,该申请在此全体参考引入。读逻辑114从,例如,数据高速缓冲存储器(未示出)读数据。写逻辑116将执行指令的结果回写到,例如,数据高速缓冲存储器、寄存器文件110、或重排序缓冲器(re-order buffer)(未示出)。
[0033]寄存器文件110存储与每个处理器线程T1、T2...Tn相关联的数据。在一个实施方案中,寄存器文件110包括分离的存储体(例如,存储体T1、T2...Tn),这些存储体存储与对应的处理器线程T1、T2...Tn相关联的数据。例如,如果写逻辑116正在将与处理器线程T2相关联的数据回写到寄存器文件110,那么写逻辑116就会将数据写到寄存器文件110的存储体T2。可以选择地,可以在流水线处理器结构110中实现分离的寄存器文件(未示出),用于存储对应于每个处理器线程T1、T2...Tn的数据。
[0034]可编程线程分配控制器118可以被编程以存储已经为每个处理器线程T1、T2...Tn定义的处理器时间分配,即,哪部分处理器时间将专用于每个处理器线程T1、T2...Tn。在一个实施方案中,例如来自用户的输入通过图形用户界面(未示出)被接收,该输入定义了分配给多个处理器线程(例如,处理器线程T1、T2...Tn)中每个线程的处理器时间部分。例如,针对双线程流水线处理器,用户可以将处理器时间的95%分配给第一处理器线程,并将处理器时间的5%分配给第二处理器线程。在一个实施方案中,为每个处理器线程(例如,处理器线程T1、T2...Tn)定义的处理器时间分配可以被用户或优选地被软件程序(例如,将被执行的软件程序)动态地改变,即,在程序执行中改变。可以选择地,每个处理器线程的处理器时间分配可以被静态地设定,即,在程序执行期间不改变。
[0035]在一个实施方案中,可编程线程分配控制器118通过确定从其中读取(例如,被取指令单元104读取)下一条指令的处理器线程,来自动执行上下文切换。在一个实施方案中,可编程线程分配控制器118通过切换一个或多个选择器来执行上下文切换,其中所述选择器例如为与取指令单元104通信的多路复用器和/或多路分解器(未示出)。包括多路复用器和多路分解器来执行上下文切换的处理器的一个实施方案在下面结合图3、4和5讨论。当上下文切换发生时,与下一个处理器线程相关联的指令被取指令单元104读取。虽然流水线处理器结构100的流水线级(例如,流水线级IF、ID、IS、EX、MEM、WB)可以包含与两个或更多个处理器线程相关联的指令,但与每个给定处理器线程相关联的数据通过寄存器文件110被分别保存,因而与每个处理器线程相关的数据的完整性得以保持。与需要中断服务例程的常规流水线处理器不同,可编程线程分配控制器118没有与执行上下文切换相关联的任何中断开销。
[0036]图2示出了通过流水线处理器结构(例如,流水线处理器结构100)处理处理器线程的一种方法200。接收输入(步骤202),该输入确定了分配给多个处理器线程中每个线程的处理器时间部分。在一个实施方案中,来自用户的输入分配是通过图形用户界面被接收的。分配给每个处理器线程的处理器时间可以被存储在可编程线程分配控制器(例如,可编程线程分配控制器118)中。在一个实施方案中,处理器时间是基于CPU(中央处理器)周期、时钟周期和/或指令周期分配的。
[0037]每个线程根据分配给每个线程的处理器时间被流水线处理器处理(步骤204)。在一个实施方案中,上下文切换根据存储在所述可编程线程分配控制器中的、分配给每个线程的处理器时间而自动发生。在一个实施方案中,可编程线程分配控制器控制一个或多个多路复用器和/或多路分解器的切换,所述多路复用器和/或多路分解器与取指令单元(例如取指令单元104)通信。在一个实施方案中,可编程线程分配控制器控制一个或多个多路复用器和/或多路分解器的切换来进行上下文切换,所述多路复用器和/或多路分解器定位在流水线处理器的每个流水线级之前和之后,如以下更详细地讨论的那样。在这个实施方案中,处理器线程的状态被存入寄存器并从寄存器载入,这些寄存器位于流水线处理器中每个流水线级之前和之后。在一个实施方案中,上下文切换发生在给定指令周期的结尾或结束。
[0038]作出(例如通过可编程线程分配控制器118)是否接收了动态改变处理器时间分配的输入的决定(步骤206)。如果分配给每个处理器线程的处理器时间没有被动态地改变,那么根据先前确立的处理器时间分配来处理每个处理器线程,方法200返回到步骤204。如果处理器时间分配已经被动态地改变,那么每个处理器线程就根据改变的处理器时间分配被处理(步骤208)。步骤208之后,方法200返回到步骤206,如以上讨论的那样。
[0039]图3示出了一种流水线处理器300的框图,该处理器300根据流水线处理器结构100而构造,能处理(n)个处理器线程T1、T2...Tn。在一个实施方案中,流水线处理器300包括取指令单元304、译码器306、寄存器文件308、发令逻辑310、两级执行单元312、重排序缓冲器314、和可编程线程分配控制器316。流水线处理器300进一步包括分别对应于处理器线程T1、T2...Tn的寄存器T1-Tn和程序计数器T1-Tn。流水线处理器300进一步包括多路复用器350。
[0040]在一个实施方案中,在取指令(IF)级中,取指令单元304从,例如指令高速缓冲存储器302,检索将被执行的指令。取指令单元304根据程序计数器T1、T2...Tn检索指令。在一个实施方案中,程序计数器T1指示处理器线程T1的执行状态(即,相对于与处理器线程T1相关联的指令序列,流水线处理器300的位置),程序计数器T2指示与处理器线程T2相关联的执行状态,程序计数器Tn指示与处理器线程Tn相关联的执行状态。
[0041]在译码指令的级(ID)中,由取指令单元304检索的指令被译码。
[0042]在发出指令级(IS)中,在一个实施方案中,译码后的指令被发送到重排序缓冲器314(通过发令逻辑310)。重排序缓冲器314存储译码后的指令直到译码后的指令被发送用于执行。在一个实施方案中,重排序缓冲器314是循环缓冲器。
[0043]重排序缓冲器314也可以存储执行指令的结果,直到执行的指令准备退出,例如,退到寄存器文件308内。在一个实施方案中,寄存器文件308包括存储体(例如,存储体T1、T2...Tn),这些存储体对应于被处理器300处理的每个处理器线程(例如,处理器线程T1、T2...Tn)。存储体T1保存与处理器线程T1相关联的数据,存储体T2保存与处理器线程T2相关联的数据,存储体Tn保存与处理器线程Tn相关联的数据。数据可以包括与给定处理器线程相关联的执行指令的操作数和/或结果。在一个实施方案中,流水线处理器300不包括重排序缓冲器314。
[0044]在执行级EX1、EX2中,执行单元312执行从发令逻辑310发送的译码指令。执行单元312可以是任何类型的执行单元,如以上讨论的那样。虽然所示的执行单元312具有两个流水线级,但执行单元312可以具有不同数量的流水线级。在一个实施方案中,执行指令的结果被回写到重排序缓冲器314,然后退到寄存器文件308。
[0045]可编程线程分配控制器316可以被编程从而存储针对每个处理器线程T1、T2...Tn的处理器时间分配,即,多少处理器时间将专用于每个处理器线程T1、T2...Tn。在一个实施方案中,例如来自用户的输入通过图形用户界面(未示出)被接收,该输入为每个处理器线程T1、T2...Tn分配部分处理器时间。在一个实施方案中,每个处理器线程T1、T2...Tn的处理器时间分配可以被用户动态地改变。在一个实施方案中,每个处理器线程T1、T2...Tn的处理器时间分配通过由处理器300正处理的软件应用被动态地改变。
[0046]在一个实施方案中,通过切换与取指令单元304通信的多路复用器350,可编程线程分配控制器316自动地执行处理器线程T1、T2...Tn之间的上下文切换。例如,在流水线处理器300正在处理处理器线程T1的时间期间,多路复用器350被控制以将与处理器线程T1相关联的指令传递通过流水线处理器300的流水线级。当从处理器线程T1发生上下文切换时,多路复用器350被控制以传递通过与另一处理器线程,例如,处理器线程T2,相关联的指令。在一个实施方案中,多路复用器350是n-对-1的多路复用器。
[0047]在一个实施方案中,可编程线程分配控制器316包括多个线程分配计数器(例如,线程分配计数器T1-Tn),这些计数器确定对应于分配给每个处理器线程的处理器时间的加权。例如,在一个实施方案中,线程分配计数器T1-Tn中的每个计数器都包含一数值,该数值代表多少CPU周期被分配给每个线程。例如,如果线程分配计数器T1包含的数值为256,线程分配计数器T2包含的数值为16,而线程分配计数器Tn包含的数值为零,那么首先从处理器线程T1取出的指令用于256个CPU周期,然后从处理器线程T2取出的指令用于16个CPU周期,而从处理器线程Tn取出零个指令。然后从处理器线程T1和T2取出的指令重新分别用于另外256个CPU周期和16个CPU周期,如此等等。取指令可以这样继续直到一个或多个线程分配计数器内的数值被改变。随着每个线程分配计数器T1-Tn达到零值,可编程线程分配计数器316切换多路复用器350以将与下一个处理器线程相关联的指令传递给取指令单元304用于处理。
[0048]图4是一种流水线处理器结构400的框图,该结构可运行以处理两个或多个处理器线程T1、T2...Tn。与处理器线程T1、T2...Tn相关的指令可以从,例如,指令高速缓冲存储器(例如,指令高速缓冲存储器402)检索。
[0049]在一个实施方案中,流水线处理器结构400包括六个流水线级。这六个流水线级包括取指令级(IF)、译码指令级(ID)、发出指令级(IS)、执行指令级(EX)、读数据存储器级(MEM)、和回写级(WB)。然而流水线处理器结构400可以包括不同数量的流水线级。流水线处理器结构400进一步包括取指令单元(IFU)404、译码逻辑406、发令逻辑408、执行单元410、读逻辑412、写逻辑414、和可编程线程分配控制器416。流水线处理器结构400类似于图1的流水线处理器结构,然而,流水线处理器结构400进一步包括位于每个流水线级(在每个级之前和之后的一个)之间的一组寄存器(例如,寄存器A1-A7、B1-B7、N1-N7)用于在上下文切换期间存储对应的处理器线程T1、T2...Tn的状态。
[0050]寄存器A1-A7存储处理器线程T1的状态。以类似的方式,寄存器B1-B7存储处理器线程T2的状态,而寄存器N1-N7储存处理器线程Tn的状态。在一个实施方案中,每个寄存器A1-A7、B1-B7、N1-N7存储对应的处理器线程的状态,包括存储流水线处理器结构400的对应的流水线级在给定指令周期的结尾产生的数据的状态。例如,当处理与处理器线程T1相关的指令时,在指令周期的结尾,寄存器A3可以存储从译码逻辑406接收的用于处理器线程T1的数据的状态,而寄存器A5可以存储从执行单元410接收的数据的状态。寄存器A1-A7、B1-B7、N1-N7之所以有助于上下文切换,是因为它们允许对应的处理器线程的状态直接从给定的寄存器载入(或存储到给定的寄存器)。在一个实施方案中,每组寄存器A1-A7、B1-B7、N1-N7的位置相对靠近流水线处理器结构400内的功能单元(例如,在每个流水线级之间),从而允许快速的上下文切换时间。
[0051]在一个实施方案中,可编程线程分配控制器416通过切换位于每个流水线级(例如,流水线级IF、ID、IS、EX、MEM、WB)之前和之后的一个或多个多路复用器和/或多路分解器(未示出),来自动地执行上下文切换。包括多路复用器和多路分解器以执行上下文切换的处理器的一个实施方案在下面将会结合图5进行讨论。当上下文切换发生时,与从其要发生上下文切换的当前处理器线程(例如,处理器线程T1)相关联的一组寄存器(例如,寄存器A1-A7)存储当前处理器线程的状态。为了完成上下文切换,将来自与下一个处理器线程相关联的一组不同的寄存器(例如,寄存器B1-B7)的下一个处理器线程(例如,处理器线程T2)的状态载入。流水线处理器在接下来的指令周期内处理下一个处理器线程。在一个实施方案中,上下文切换发生在指令周期的结尾(即,在来自流水线级的数据已经被存到相关的寄存器后)从而允许无缝上下文切换。
[0052]图5示出流水线处理器500的框图,处理器500根据流水线处理器结构400构造,能够处理两个线程T1、T2。在一个实施方案中,流水线处理器500包括取指令单元504、译码器506、寄存器文件508、发令逻辑510、两级执行单元512、重排序缓冲器514、和可编程线程分配控制器516。流水线处理器500进一步包括对应于处理器线程T1的第一组寄存器A1-A6,和对应于处理器线程T2的第二组寄存器B1-B6。流水线处理器500进一步包括程序计数器T1、T2、多路复用器550、和多路分解器552。
[0053]在一个实施方案中,在取指令(IF)级,取指令单元504从,例如指令高速缓冲存储器502,检索将被执行的指令。取指令单元504根据程序计数器T1、T2检索指令。在一个实施方案中,程序计数器T1指示处理器线程T1的执行状态(即,相对于与处理器线程T1相关联的指令序列,流水线处理器500的位置),程序计数器T2指示与处理器线程T2相关联的执行状态。
[0054]在译码指令级(ID)中,由取指令单元504检索的指令被译码。
[0055]在发出指令级(IS)中,在一个实施方案中,译码后的指令被发送到重排序缓冲器514(通过发令逻辑510)。重排序缓冲器514存储译码后的指令直到译码后的指令被发送用于执行。在一个实施方案中,重排序缓冲器514是循环缓冲器。
[0056]重排序缓冲器514也可以存储执行指令的结果,直到执行的指令准备退出,例如,退到寄存器文件508内。在一个实施方案中,寄存器文件508包括两个存储体T1、T2。存储体T1保存与处理器线程T1相关联的数据,存储体T2保存与处理器线程T2相关联的数据。寄存器文件508可包括线程索引(未示出)以指示将从哪个寄存器载入数据。线程索引确保来自与当前执行的处理器线程相关的寄存器的数据被载入到寄存器文件508内。
[0057]在执行级EX1、EX2中,执行单元512执行从发令逻辑510发送的译码后的指令。执行单元512可以是任何类型的执行单元,如以上讨论的那样。虽然所示的执行单元512具有两个流水线级,但执行单元512可以具有不同数量的流水线级。在一个实施方案中,执行指令的结果被回写到重排序缓冲器514,然后退到寄存器文件508。
[0058]可编程线程分配控制器516可以被编程从而存储针对每个处理器线程T1、T2的处理器时间分配。在一个实施方案中,可编程线程分配控制器516通过切换分别位于流水线处理器500的每个流水线级(例如,流水线级IF、ID、IS、EX1、EX2)之前和之后的多路复用器550和多路分解器552,来自动执行处理器线程T1、T2之间的上下文切换。例如,当流水线处理器500正在处理处理器线程T1时,多路复用器550和多路分解器552被控制以传递与处理器线程T1相关联的指令(通过流水线处理器500的流水线级)。处理器线程T2的状态信息被存储在寄存器B1-B6中。当从处理器线程T1发生上下文切换时,寄存器A1-A6存储处理器线程T1的状态,来自寄存器B1-B6的处理器线程T2的状态被载入(通过多路复用器550和多路分解器552)并被流水线处理器500处理。在一个实施方案中,每个多路复用器550是2-对-1的多路复用器,而每个多路分解器552是1-对-2的多路分解器。
异常处理
[0059]当根据流水线处理器结构100、400构造的处理器(例如,处理器300、500)检测到异常时,正常的指令执行顺序被中止。异常就是引起正常程序执行中止的事件。异常的种类包括,例如,寻址异常、数据异常、操作异常、溢出异常、保护异常、下溢异常等等。异常可以是由硬件或软件产生的。
[0060]图6示出了在根据流水线处理器结构100、400实施的处理器中执行异常处理的一种方法。当正在执行给定线程的指令i时发生异常请求(步骤602)。与处理器流水线内当前指令的状态一起,与每个处理器线程相关联的程序计数器的值被保存(步骤604)。在一个实施方案中,处理器流水线内所有的指令被终止或刷新。处理器跳转到与给定线程相关的异常处理例程(步骤606)。在一个实施方案中,每个处理器线程都有相关的异常处理例程,该异常处理例程是分离的并独立于与其它处理器线程相关的异常处理例程。在一个实施方案中,单个异常处理例程执行针对几乎所有的处理器线程的异常请求。
[0061]异常请求是由给定的异常处理例程执行的(步骤608)。处理器已经执行异常请求后,程序计数器的值在处理器的程序计数器内被恢复,(异常请求之前的)指令的状态在处理器的流水线内被恢复(步骤610)。从异常处理例程返回后,处理器继续下一条指令(例如,指令i+1)的程序执行(步骤612)。在步骤612,如果指令要被重新执行处理器就恢复在指令i处的程序指令。
中断处理
[0062]根据流水线处理器结构100、400实施的处理器中的中断以类似于异常处理的方式被处理。图7示出了在根据流水线处理器结构100、400实施的处理器中处理中断的一种方法。
[0063]当正在执行给定的线程的指令i时发生中断(步骤702)。连同处理器流水线内当前指令的状态,与每个处理器线程相关联的程序计数器的值被保存(步骤704)。处理器跳转到与给定线程相关的中断处理例程(步骤706)。在一个实施方案中,每个处理器线程都有相关的中断处理例程,该中断处理例程的入口点是分离的并独立于与其它处理器线程相关的中断处理例程。入口点是中断处理例程的开始地址。在一个实施方案中,单个中断处理例程(具有单个入口点)执行针对几乎所有的处理器线程的中断。
[0064]中断是由给定的中断处理例程执行的(步骤708)。处理器已经执行中断后,程序计数器的值在处理器的程序计数器内被恢复,(中断请求之前的)指令的状态在处理器的流水线内被恢复(步骤710)。从中断处理例程返回后处理器继续下一条指令(例如,指令i+1)的程序执行(步骤712)。
[0065]根据流水线处理器结构100、400构造的流水线处理器可以用于广泛的应用中。实例性的应用包括数据存储应用、无线应用、和计算机系统应用。
[0066]已经描述了若干实施方式。但是,应该理解的是可以在不背离本发明的精神和范围的前提下进行各种改进。例如,上述的方法的步骤可以以不同的顺序来执行而仍能获得所需的结果。因此,其它的实施方式仍然在所附的权利要求的保护范围内。

Claims (27)

1.一种处理器,包括:
流水线级,该流水线级包括,
第一输入寄存器,
第二输入寄存器,
第一输出寄存器,
第二输出寄存器;
第一选择器,其与所述第一输入寄存器和所述第二输入寄存器通信;
第二选择器,其与所述第一输出寄存器和所述第二输出寄存器通信;和
控制器,该控制器可运行以控制所述第一和第二选择器的切换,以使在正在处理第一处理器线程的时间期间,与第一处理器线程相关联的数据传递通过所述第一输入寄存器、所述流水线级、和所述第一输出寄存器,而在正在处理第二处理器线程的时间期间,与第二处理器线程相关联的数据传递通过所述第二输入寄存器、所述流水线级、和所述第二输出寄存器,
其中所述第一输入寄存器和所述第一输出寄存器可运行以存储所述第一处理器线程的状态,而且所述第二输入寄存器和所述第二输出寄存器可运行以存储第二处理器线程的状态。
2.如权利要求1所述的处理器,其中所述控制器基于确定分配到所述第一和第二处理器线程的每个线程的处理器时间的输入,来控制所述第一和第二选择器的切换。
3.如权利要求1所述的处理器,进一步包括:
第一中断处理例程,其处理与所述第一处理器线程相关联的中断请求;和
第二中断处理例程,其处理与所述第二处理器线程相关联的中断请求。
4.如权利要求3所述的处理器,其中所述第一中断处理例程和所述第二处理例程具有各自的入口点。
5.如权利要求1所述的处理器,进一步包括:
第一异常处理例程,其处理与所述第一处理器线程相关联的异常请求;和
第二异常处理例程,其处理与所述第二处理器线程相关联的异常请求。
6.如权利要求1所述的处理器,进一步包括单个异常处理例程或单个中断处理例程,它们分别处理与所述第一和第二处理器线程都相关联的几乎所有的异常请求或几乎所有的中断请求。
7.如权利要求1所述的处理器,进一步包括:
一组寄存器,其对应于多个处理器线程中的每个线程,所述多个处理器线程包括所述第一处理器线程和所述第二处理器线程,组中的每个寄存器可以位于所述处理器的流水线级之前或之后;和
其中所述控制器包括可编程控制器,该控制器可运行以在所述多个处理器线程之间执行上下文切换,包括在对应的寄存器组中存储当前执行的处理器线程的状态,和将来自对应的寄存器组的另一处理器线程的状态载入以允许处理另一处理器线程。
8.如权利要求7所述的处理器,进一步包括寄存器文件,该寄存器文件包括对应于所述多个处理器线程中每个线程的多个存储体,每个存储体可存储与对应的处理器线程相关联的数据。
9.如权利要求7所述的处理器,进一步包括多个程序计数器,每个程序计数器可运行以指示对应的处理器线程的执行状态。
10.如权利要求1所述的处理器,进一步包括:
取指令单元,该单元可运行以取出与多个处理器线程相关联的指令,所述多个处理器线程包括所述第一处理器线程和所述第二处理器线程;
译码器,其响应于所述取指令单元;
发令逻辑,其响应于所述译码器;和
寄存器文件,其包括对应于所述多个处理器线程的多个存储体,每个存储体可运行从而只存储与对应的处理器线程相关联的数据。
11.如权利要求10所述的处理器,其中所述数据包括与给定处理器线程相关联的执行指令的操作数或结果。
12.如权利要求10所述的处理器,进一步包括:与所述取指令单元通信的控制器,所述控制器可以确定由所述取指令单元从其中读取下一个指令的处理器线程。
13.如权利要求10所述的处理器,进一步包括:
一组寄存器,其对应于所述多个处理器线程的每个线程,组中的每个寄存器可以位于所述处理器的流水线级之前或之后,
其中所述控制器可以在所述多个处理器线程之间执行上下文切换,包括在对应的寄存器组中存储当前执行的处理器线程的状态,和将来自对应的寄存器组的另一处理器线程的状态载入以允许处理另一处理器线程。
14.如权利要求10所述的处理器,其中所述控制器可包括对应于所述多个处理器线程的多个线程分配计数器,每个线程分配计数器可包含一个数值,该数值代表有多少处理器时间要分配给各自的处理器线程。
15.如权利要求10所述的处理器,其中所述控制器可执行上下文切换,其包括切换与所述取指令单元通信的选择器。
16.如权利要求15所述的处理器,其中所述控制器可以在执行程序期间,动态地控制与所述取指令单元通信的所述选择器的切换。
17.如权利要求15所述的处理器,其中所述控制器可以基于先前确定的针对所述多个处理器线程的每个线程的处理器时间分配,静态地控制与所述取指令单元通信的所述选择器的切换。
18.一种方法,包括:
提供用于指令执行的第一处理器线程;
提供用于指令执行的第二处理器线程;
处理所述第一处理器线程;和
执行从所述第一处理器线程到所述第二处理器线程的上下文切换,执行上下文切换包括,
在对应于所述第一处理器线程的第一组寄存器内存储所述第一处理器线程的状态;和
将来自对应于所述第二处理器线程的第二组寄存器的、所述第二处理器线程的状态载入。
19.如权利要求18所述的方法,其中在对应的寄存器组内存储给定处理器线程的状态包括存储对应于处理器流水线级的数据。
20.如权利要求18所述的方法,进一步包括:
接收改变所述处理器时间分配的输入;和
基于改变的处理器时间分配在所述第一和第二处理器线程之间执行上下文切换。
21.如权利要求18所述的方法,其中执行上下文切换包括在执行程序期间,动态地执行上下文切换。
22.如权利要求18所述的方法,其中执行上下文切换包括基于先前确定的针对所述第一和第二处理器线程的每个线程的处理器时间分配,静态地执行上下文切换。
23.如权利要求18所述的方法,其中执行上下文切换包括在指令周期的结尾执行上下文切换。
24.如权利要求18所述的方法,进一步包括在寄存器文件的对应的存储体中存储与给定处理器线程相关联的数据。
25.如权利要求18所述的方法,进一步包括指示对应的处理器线程的执行状态。
26.如权利要求18所述的方法,进一步包括:
读取与多个处理器线程相关的指令,所述多个处理器线程包括第一处理器线程和所述第二处理器线程;
译码所述指令;
将所述指令发送到执行单元;和
将与给定处理器线程的发送的指令相关的数据存储到寄存器文件的对应的存储体中,其中每个存储体只存储与对应的处理器线程相关联的数据。
27.如权利要求26所述的方法,进一步包括确定从其中读取下一条指令的处理器线程。
CNB2006100653319A 2005-03-18 2006-03-17 双线程处理器和方法 Active CN100440139C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/084,364 US8195922B2 (en) 2005-03-18 2005-03-18 System for dynamically allocating processing time to multiple threads
US11/084,364 2005-03-18

Publications (2)

Publication Number Publication Date
CN1841314A true CN1841314A (zh) 2006-10-04
CN100440139C CN100440139C (zh) 2008-12-03

Family

ID=36577509

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100653319A Active CN100440139C (zh) 2005-03-18 2006-03-17 双线程处理器和方法

Country Status (6)

Country Link
US (2) US8195922B2 (zh)
EP (1) EP1703377A3 (zh)
JP (2) JP2006260571A (zh)
CN (1) CN100440139C (zh)
SG (1) SG126072A1 (zh)
TW (1) TWI315848B (zh)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763285B (zh) * 2010-01-15 2013-03-20 西安电子科技大学 零开销切换多线程处理器及其线程切换方法
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9575762B2 (en) 2013-03-15 2017-02-21 Soft Machines Inc Method for populating register view data structure by using register template snapshots
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9811377B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9823930B2 (en) 2013-03-15 2017-11-21 Intel Corporation Method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9858080B2 (en) 2013-03-15 2018-01-02 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9886416B2 (en) 2006-04-12 2018-02-06 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9891915B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method and apparatus to increase the speed of the load access and data return speed path using early lower address bits
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9898412B2 (en) 2013-03-15 2018-02-20 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9921845B2 (en) 2011-03-25 2018-03-20 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9934042B2 (en) 2013-03-15 2018-04-03 Intel Corporation Method for dependency broadcasting through a block organized source view data structure
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9946538B2 (en) 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code
US9965281B2 (en) 2006-11-14 2018-05-08 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US10031784B2 (en) 2011-05-20 2018-07-24 Intel Corporation Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10169045B2 (en) 2013-03-15 2019-01-01 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
CN109697111A (zh) * 2017-10-20 2019-04-30 图核有限公司 在多线程处理器中调度任务
US10521239B2 (en) 2011-11-22 2019-12-31 Intel Corporation Microprocessor accelerated code optimizer

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
CN101325063B (zh) * 2007-06-12 2011-02-16 建兴电子科技股份有限公司 全息储存系统中寻找定位点位置的方法
US8725991B2 (en) * 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
US8656145B2 (en) 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
JP5173714B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
WO2010097847A1 (ja) 2009-02-24 2010-09-02 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
JP5411587B2 (ja) 2009-06-09 2014-02-12 トヨタ自動車株式会社 マルチスレッド実行装置、マルチスレッド実行方法
JP5653431B2 (ja) * 2010-07-02 2015-01-14 パナソニックIpマネジメント株式会社 マルチプロセッサシステム
TW201237630A (en) * 2011-03-01 2012-09-16 Wistron Corp Method and computer system for processing data in a memory
JP5283739B2 (ja) * 2011-09-27 2013-09-04 インテル・コーポレーション プロセッサ内のマルチスレッド間通信
JP5819184B2 (ja) * 2011-12-28 2015-11-18 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US10732976B2 (en) 2013-01-10 2020-08-04 Nxp Usa, Inc. Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
CN103916915B (zh) * 2014-04-10 2018-07-31 泉州旭辉电子有限公司 一种模数自适应切换的无线通信系统设计方法
CN104516775A (zh) * 2014-09-05 2015-04-15 深圳市华讯方舟科技有限公司 基于多核、多线程实现ap和sta的接入方法
US9996354B2 (en) * 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
US11461334B2 (en) * 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
GB2565338B (en) * 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US11645178B2 (en) 2018-07-27 2023-05-09 MIPS Tech, LLC Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors
US10997058B2 (en) * 2018-07-30 2021-05-04 EMC IP Holding Company LLC Method for performance analysis in a continuous integration pipeline
US10884785B2 (en) 2018-11-29 2021-01-05 International Business Machines Corporation Precise accounting of processor time for multi-threaded time-critical applications
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes

Family Cites Families (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6314243A (ja) 1986-07-03 1988-01-21 Fujitsu Ltd 演算処理装置
JPH0199132A (ja) 1987-10-12 1989-04-18 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH01234123A (ja) 1988-03-11 1989-09-19 Showa Alum Corp 排熱回収装置用ヒートパイプ式熱交換器の製造法
JPH01249808A (ja) 1988-03-31 1989-10-05 Nippon Shokubai Kagaku Kogyo Co Ltd 耐塩性吸水性樹脂微粒子の製造方法
JP2595662B2 (ja) 1988-06-06 1997-04-02 株式会社明電舎 四輪駆動車用ダイナモメータの制御方式
JP2881776B2 (ja) 1988-08-31 1999-04-12 アイシン精機株式会社 スロットル制御装置
JPH0282815A (ja) 1988-09-20 1990-03-23 Fujitsu Ltd カウンタチェック方式
JPH02226458A (ja) 1989-02-28 1990-09-10 Fujitsu Ltd 並列処理計算機パイプライン処理方式
JPH03167748A (ja) 1989-11-28 1991-07-19 Toshiba Lighting & Technol Corp バックライト用けい光ランプ
JP2579008B2 (ja) 1989-12-18 1997-02-05 松下電器産業株式会社 時分割マルチタスク実行装置
JP2591200B2 (ja) 1989-12-18 1997-03-19 松下電器産業株式会社 プログラム先取り装置
JPH03241980A (ja) 1990-02-20 1991-10-29 Fujitsu General Ltd フィルムスキャナ装置
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
JPH04234123A (ja) 1990-12-28 1992-08-21 Fuji Xerox Co Ltd 半導体装置の製造方法
US5148546A (en) * 1991-04-22 1992-09-15 Blodgett Greg A Method and system for minimizing power demands on portable computers and the like by refreshing selected dram cells
JPH0525749A (ja) 1991-07-10 1993-02-02 Toyota Autom Loom Works Ltd 織機におけるクロスロール交換装置の織布巻き付け機構
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
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US6430592B1 (en) * 1994-06-02 2002-08-06 International Business Machines Corporation System for sharing CPU time amongst multiple users
WO1996018940A1 (en) * 1994-12-16 1996-06-20 Elonex Technologies, Inc. Management of data before zero volt suspend in computer power management
US6182108B1 (en) * 1995-01-31 2001-01-30 Microsoft Corporation Method and system for multi-threaded processing
US5659749A (en) * 1995-05-08 1997-08-19 National Instruments Corporation System and method for performing efficient hardware context switching in an instrumentation system
US5828880A (en) * 1995-07-06 1998-10-27 Sun Microsystems, Inc. Pipeline system and method for multiprocessor applications in which each of a plurality of threads execute all steps of a process characterized by normal and parallel steps on a respective datum
US5805479A (en) * 1995-09-25 1998-09-08 United Microelectronics Corp. Apparatus and method for filtering digital signals
JPH09171462A (ja) * 1995-12-20 1997-06-30 Matsushita Electric Ind Co Ltd 演算装置
JPH09190348A (ja) 1996-01-09 1997-07-22 Matsushita Electric Ind Co Ltd 命令プリフェッチバッファ制御方法、命令プリフェッチバッファ制御装置、及び命令プリフェッチバッファフラッシュ方法
JPH10177774A (ja) * 1996-12-16 1998-06-30 Fujitsu Ltd ディスク装置及び携帯型電子装置
US6184906B1 (en) * 1997-06-30 2001-02-06 Ati Technologies, Inc. Multiple pipeline memory controller for servicing real time data
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6385638B1 (en) * 1997-09-04 2002-05-07 Equator Technologies, Inc. Processor resource distributor and method
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US5987492A (en) * 1997-10-31 1999-11-16 Sun Microsystems, Inc. Method and apparatus for processor sharing
JPH11161505A (ja) * 1997-12-01 1999-06-18 Matsushita Electric Ind Co Ltd メディア送出装置
EP1062812B1 (en) 1998-03-16 2005-05-25 Intertrust Technologies Corp. Streaming media player with continuous control and protection of media content
EP0943995A3 (en) 1998-03-20 2000-12-06 Texas Instruments Incorporated Processor having real-time external instruction insertion for debug functions without a debug monitor
JPH11272627A (ja) * 1998-03-23 1999-10-08 Nec Corp パイプライン型マルチプロセッサシステム
US6560628B1 (en) * 1998-04-27 2003-05-06 Sony Corporation Apparatus, method, and recording medium for scheduling execution using time slot data
US6088044A (en) * 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
US6119091A (en) * 1998-06-26 2000-09-12 Lsi Logic Corporation DVD audio decoder having a direct access PCM FIFO
CN1254877A (zh) 1998-08-24 2000-05-31 世韩情报系统株式会社 一种具有多种功能的便携式mp3播放机
KR100321437B1 (ko) 1998-11-02 2002-05-13 이상훈 자동차엠피쓰리플레이어
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6826749B2 (en) * 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US7065762B1 (en) * 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6061306A (en) * 1999-07-20 2000-05-09 James Buchheim Portable digital player compatible with a cassette player
US6496692B1 (en) * 1999-12-06 2002-12-17 Michael E. Shanahan Methods and apparatuses for programming user-defined information into electronic devices
US7308686B1 (en) * 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US7925869B2 (en) * 1999-12-22 2011-04-12 Ubicom, Inc. Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6922845B2 (en) * 2000-04-25 2005-07-26 The Directtv Group, Inc. Multi-processor DVR
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7137117B2 (en) * 2000-06-02 2006-11-14 Microsoft Corporation Dynamically variable idle time thread scheduling
US6420903B1 (en) * 2000-08-14 2002-07-16 Sun Microsystems, Inc. High speed multiple-bit flip-flop
US7302684B2 (en) * 2001-06-18 2007-11-27 Microsoft Corporation Systems and methods for managing a run queue
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US7117497B2 (en) * 2001-11-08 2006-10-03 Honeywell International, Inc. Budget transfer mechanism for time-partitioned real-time operating systems
JP2003167748A (ja) 2001-11-30 2003-06-13 Fujitsu Ltd マルチスレッド計算機
US7487504B2 (en) * 2002-02-06 2009-02-03 International Business Machines Corporation Thread dispatch for multiprocessor computer systems
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
WO2003088036A1 (en) 2002-04-12 2003-10-23 Koninklijke Philips Electronics N.V. System and method for instruction level multithreading
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
US7181742B2 (en) * 2002-11-19 2007-02-20 Intel Corporation Allocation of packets and threads
US7716668B2 (en) * 2002-12-16 2010-05-11 Brooktree Broadband Holding, Inc. System and method for scheduling thread execution
JP2004234123A (ja) * 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) 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
US6862027B2 (en) 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7472389B2 (en) * 2003-10-29 2008-12-30 Honeywell International Inc. Stochastically based thread budget overrun handling system and method
DE10353267B3 (de) * 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7617499B2 (en) * 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US7475399B2 (en) * 2004-01-13 2009-01-06 International Business Machines Corporation Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7681199B2 (en) * 2004-08-31 2010-03-16 Hewlett-Packard Development Company, L.P. Time measurement using a context switch count, an offset, and a scale factor, received from the operating system
US20060212853A1 (en) 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads

Cited By (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289605B2 (en) 2006-04-12 2019-05-14 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US11163720B2 (en) 2006-04-12 2021-11-02 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9886416B2 (en) 2006-04-12 2018-02-06 Intel Corporation Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US9965281B2 (en) 2006-11-14 2018-05-08 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
US10585670B2 (en) 2006-11-14 2020-03-10 Intel Corporation Cache storing data fetched by address calculating load instruction with label used as associated name for consuming instruction to refer
CN104699457B (zh) * 2009-12-17 2019-02-15 英特尔公司 用于在单个指令中执行移位和异或运算的方法和装置
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US10684855B2 (en) 2009-12-17 2020-06-16 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
CN101763285B (zh) * 2010-01-15 2013-03-20 西安电子科技大学 零开销切换多线程处理器及其线程切换方法
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US10564975B2 (en) 2011-03-25 2020-02-18 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US11204769B2 (en) 2011-03-25 2021-12-21 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9921845B2 (en) 2011-03-25 2018-03-20 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9990200B2 (en) 2011-03-25 2018-06-05 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9934072B2 (en) 2011-03-25 2018-04-03 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US10372454B2 (en) 2011-05-20 2019-08-06 Intel Corporation Allocation of a segmented interconnect to support the execution of instruction sequences by a plurality of engines
US10031784B2 (en) 2011-05-20 2018-07-24 Intel Corporation Interconnect system to support the execution of instruction sequences by a plurality of partitionable engines
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US10521239B2 (en) 2011-11-22 2019-12-31 Intel Corporation Microprocessor accelerated code optimizer
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10248570B2 (en) 2013-03-15 2019-04-02 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US11656875B2 (en) 2013-03-15 2023-05-23 Intel Corporation Method and system for instruction block to execution unit grouping
US9934042B2 (en) 2013-03-15 2018-04-03 Intel Corporation Method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US10146576B2 (en) 2013-03-15 2018-12-04 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US10146548B2 (en) 2013-03-15 2018-12-04 Intel Corporation Method for populating a source view data structure by using register template snapshots
US10169045B2 (en) 2013-03-15 2019-01-01 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10180856B2 (en) 2013-03-15 2019-01-15 Intel Corporation Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9898412B2 (en) 2013-03-15 2018-02-20 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10198266B2 (en) 2013-03-15 2019-02-05 Intel Corporation Method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9891915B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method and apparatus to increase the speed of the load access and data return speed path using early lower address bits
CN105210040B (zh) * 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9965285B2 (en) 2013-03-15 2018-05-08 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US10255076B2 (en) 2013-03-15 2019-04-09 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9858080B2 (en) 2013-03-15 2018-01-02 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9823930B2 (en) 2013-03-15 2017-11-21 Intel Corporation Method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US10503514B2 (en) 2013-03-15 2019-12-10 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10552163B2 (en) 2013-03-15 2020-02-04 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9811377B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for executing multithreaded instructions grouped into blocks
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US10740126B2 (en) 2013-03-15 2020-08-11 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9575762B2 (en) 2013-03-15 2017-02-21 Soft Machines Inc Method for populating register view data structure by using register template snapshots
US9946538B2 (en) 2014-05-12 2018-04-17 Intel Corporation Method and apparatus for providing hardware support for self-modifying code
CN109697111A (zh) * 2017-10-20 2019-04-30 图核有限公司 在多线程处理器中调度任务
CN109697111B (zh) * 2017-10-20 2023-05-02 图核有限公司 在多线程处理器中调度任务

Also Published As

Publication number Publication date
US8195922B2 (en) 2012-06-05
US8468324B2 (en) 2013-06-18
EP1703377A2 (en) 2006-09-20
JP2006260571A (ja) 2006-09-28
JP2008047145A (ja) 2008-02-28
TWI315848B (en) 2009-10-11
SG126072A1 (en) 2006-10-30
US20060212687A1 (en) 2006-09-21
CN100440139C (zh) 2008-12-03
EP1703377A3 (en) 2007-11-28
US20120239908A1 (en) 2012-09-20
TW200710723A (en) 2007-03-16
JP4610593B2 (ja) 2011-01-12

Similar Documents

Publication Publication Date Title
CN1841314A (zh) 双线程处理器
CN1127687C (zh) 带外部协处理器可访问的上下文切换寄存器组的risc处理器
US7360064B1 (en) Thread interleaving in a multithreaded embedded processor
US8245014B2 (en) Thread interleaving in a multithreaded embedded processor
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
KR100436675B1 (ko) 멀티쓰레드 프로세서에서 공유 파이프라인 및 다른파이프라인 스테이지의 선택적인 플러쉬
US9529596B2 (en) Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
CN100489784C (zh) 多线程微处理器及其新线程的创建方法和多线程处理系统
US20040215932A1 (en) Method and logical apparatus for managing thread execution in a simultaneous multi-threaded (SMT) processor
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
TWI467479B (zh) 用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法
US20080046689A1 (en) Method and apparatus for cooperative multithreading
US20060004995A1 (en) Apparatus and method for fine-grained multithreading in a multipipelined processor core
US8006069B2 (en) Inter-processor communication method
JP2001350638A (ja) 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法
WO2014051771A1 (en) A new instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
JP2011525008A (ja) リアルタイムデータ処理のための方法&装置
KR20150041740A (ko) 다수의 마이크로 오퍼레이션에 대응한 복합 프로그램 명령어의 디코딩
CN105027075B (zh) 具有共享前端单元的处理核
US20080209164A1 (en) Microprocessor Architectures
US7203821B2 (en) Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands
US20040216103A1 (en) Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment
EP2159686A1 (en) Information processor
CN114090077A (zh) 调取指令的方法及装置、处理装置及存储介质
US10503541B2 (en) System and method for handling dependencies in dynamic thread spawning for a multi-threading processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1094258

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1094258

Country of ref document: HK

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201217

Address after: Shin ha Po

Patentee after: Marvell Asia Pte. Ltd.

Address before: Grand Cayman Islands

Patentee before: Kavim International Inc.

Effective date of registration: 20201217

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Michaele

Patentee before: MARVELL WORLD TRADE Ltd.

Effective date of registration: 20201217

Address after: Grand Cayman Islands

Patentee after: Kavim International Inc.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.