CN100440151C - 用于并行多线程处理的方法和装置 - Google Patents

用于并行多线程处理的方法和装置 Download PDF

Info

Publication number
CN100440151C
CN100440151C CNB038024640A CN03802464A CN100440151C CN 100440151 C CN100440151 C CN 100440151C CN B038024640 A CNB038024640 A CN B038024640A CN 03802464 A CN03802464 A CN 03802464A CN 100440151 C CN100440151 C CN 100440151C
Authority
CN
China
Prior art keywords
programme
engine
multitask
context
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB038024640A
Other languages
English (en)
Other versions
CN1820253A (zh
Inventor
M·阿迪莱塔
D·伯恩斯坦恩
H·威尔金森
G·沃尔里奇
M·罗森布鲁斯
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1820253A publication Critical patent/CN1820253A/zh
Application granted granted Critical
Publication of CN100440151C publication Critical patent/CN100440151C/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, look ahead
    • 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
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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

Abstract

本发明描述了一种基于硬件的并行多线程处理的方法。该方法包括将用以包处理的任务分配给可编程引擎并在编程阶段建立响应可编程引擎的流水线。该方法还包括了建立用于可编程引擎上所分配的任务的上下文,并使用诸如CAM的软件控制的高速缓冲存储器以便在驻留在可编程引擎中的下一个临近寄存器之间转移数据。

Description

用于并行多线程处理的方法和装置
技术领域
本发明涉及上下文的流水线操作。
背景技术
并行处理在计算处理中是一种高效的并发事件信息处理的方式。并行处理在计算机中需要同时处理很多程序,而不是顺序处理。在一个并行处理器的上下文中,并行包括了同一时间内处理不止一件事情。与所有的任务都在单个的工作站中顺序地执行的串行处理范例或在特定工作站中执行任务的流水线机器不同,在并行处理中,提供有多台工作站,其中的每个都能同时执行不同的任务。大量工作站同时工作并独立于相同或共用的计算任务的元件。因此,使用或提供并行处理能解决计算任务。
发明内容
本发明旨在解决上述问题。
根据本发明的一种并行多线程处理方法包括:建立编程阶段,每个编程阶段包括至少一个可编程引擎;并且在每个编程阶段:在所述至少一个可编程引擎中分配一个或多个包以供处理,管理多任务的平行处理,包括为多任务的每一个建立上下文,其中所述多任务中至少一个要求多指令执行,基于指令的执行,从多任务中一个的处理切换到多任务中另一个的处理,以及一旦完成了多任务,则将与多任务相关的数据传递给后续的编程阶段。
根据本发明的一种并行多线程处理器包括:在编程阶段中分配的可编程引擎,在每个编程阶段,至少一个可编程引擎执行:接收任务以处理,管理多任务的平行处理,包括为多任务的每一个建立上下文,其中所述多任务中的至少一个要求多指令执行,基于指令的执行,从多任务中一个的处理切换到任务中另一个的处理,以及一旦完成了多任务,则将与多任务相关的数据传递给后续的编程阶段。
附图说明
图1是使用基于硬件的多线程处理器的一种通信系统的结构图。
图2是在图1中基于硬件的多线程处理器中使用的的可编程引擎功能单元的框图。
图3是一个上下文状态改变的框图。
图4是一个上下文寻址存储器(CAM)的框图。
图5是一个CAM处理的说细的框图。
图6是一个上下文流水线处理的简单的框图。
具体实施方式
体系结构
参考图1,一个计算机处理系统10包括一个并行的、基于硬件的多线程网络处理器12。该基于硬件的多线程处理器12被连接到一个存储器系统或存储资源14。存储器系统14包括动态随机存取存储器(DRAM)14a和静态随机存取存储器(SRAM)14b。该处理系统10适用于可被分割成并行的子任务或功能的任务。特别地,该基于硬件的多线程处理器12用于面向带宽而不是面向等待时间的任务。该基于硬件的多线程处理器12具有多个功能微引擎或可编程引擎16,其每个都具有多个由硬件控制的能同时工作并独立工作于特定任务的线程。
可编程引擎16每个都保留了硬件的程序计数器和与程序计数器关联的状态。事实上,虽然在每个可编程引擎16上上下文或线程的相应组能同时激活,但在任何时间只有一个被实际操作。
在此实例中,图1示出了8个可编程引擎16a-16h。可编程引擎16a-16h的每个引擎处理8个硬件线程或上下文。这8个可编程引擎16a-16h与包括了存储资源14和总线接口(未示出)的共享资源一起执行。基于硬件的多线程处理器12包括了一个动态随机存取存储器(DRAM)控制器18a和一个静态随机存取存储器(SRAM)控制器18b。DRAM存储器14a和DRAM控制器18a典型地被用于处理大容量的数据,例如,处理从网络包来的网络有效载荷。SRAM存储器14b和SRAM控制器18b在联网实现中用于低等待时间、快速访问的任务,例如,访问查找表,访问用于核心处理器20的存储器等等。
这8个可编程引擎16a-16h基于数据特性访问DRAM存储器14a或SRAM存储器14b。因此,低等待时间,低带宽的数据被存储在SRAM存储器14b中并从中取出,而对等待时间不重要的更高带宽数据则被存储在DRAM存储器14a中并从中取出。可编程引擎16a-16h可为DRAM控制器18a或SRAM控制器18b执行存诸参考指令。
基于硬件的多线程处理器12还包括了一个用以加载为可编程引擎16a-16h的微码控制的处理核心20。在本实例中,该处理核心20是一个基于XScaleTM的构架。
该处理核心20执行通用目的计算机类型的功能例如处理协议,异常事件,同时额外支持包处理,其中可编程引擎16例如在临界条件下将该包停止以便进行更详细的处理。
该处理核心20有一个操作系统(未示出)。通过该操作系统(OS),处理核心20能调用功能来在可编程引擎16a-16h上运行。该处理核心20能使用任何所支持的OS,特别是,实时OS。由于该处理核心20以一个XScaleTM的构架来实现,因此可以使用诸如Micorosoft NT real-time,VXWorks和μCOS的操作系统,或通过因特网得到的免费OS的操作系统。
硬件多线程的优点可通过SRAM或DRAM存储器访问来解释。作为一个实例,一个来自可编程引擎16之一的由上文(例如,Thread_0)请求的SRAM访问将使得SRAM控制器18b启动一个对SRAM存储器14b的访问。该SRAM控制器18b访问该SRAM存储器14b,从该SRAM存储器14b中取出数据,并将数据返回到请求的可编程引擎16。
在一个SRAM访问期间,如果可编程引擎16a-16h之一仅有一个能操作的线程,那么该可编程引擎将处在睡眠状态直到数据从SRAM存储器14b中返回。
通过在每个可编程引擎16a-16h中使用硬件上下文交换,该硬件上下文交换使其他具有唯一程序计数器的上下文在同一个可编程引擎中执行。这样,另一个线程,例如Thread_1,就能当第一个线程Thread_0正等待返回读数据时被执行。在执行期间,Thread_1可以访问DRAM存储器14a。当Thread_1在DRAM单元运行时,一个新的线程,例如Threaed_2,能立即在可编程引擎16中运行。Thread_2能运行一定时间直到它需要访问存储器或执行其他一些长等待时间的操作,例如对部线接口的访问。因此,同时地,该多线程处理器12能有一个总线操作,一个SRAM操作,和一个DRAM操作,这些所有的均能通过一个可编程引擎16完成或操作并具有更多的可用线程或上下文来处理更多的工作。
硬件上下文交换也与任务的完成同步。例如,两个线程能访问共享的存储器资源。例如,SRAM存储器14b。每个单独的功能单元之一,例如SRAM控制器18b和DRAM控制器18a,当它们完成来自一个可编程引擎线或上下文的任务时就返回一个操作完成的标志信令。当可编程引擎16a-16h接收到该标志时,可编程引擎16a-16h就能确定开启哪个线程。
基于硬件的多线程处理器12的一个应用实例是作为一个网络处理器。作为一个网络处理器,基于硬件的多线程处理器12与诸如媒体访问控制器(MAC)设备,例如10/100BaseT OctalMAC13a或千兆以太网设备13b的网络设备连接。总地来说,作为一个网络处理器,基于硬件的多线程处理器12能与任何类型的能信设备或接收或发送大量数据的接口连接。能用在联网应用中的计算机处理系统10能接收网络包并能以并行的方式处理这些包。
编程引擎
参考图2,示出了来自可编程引擎16a-16h的一个示范性的编程引擎16a。该可编程引擎16a包括一个控制存储器30,其在一个实例中包括一个具有4096个40比特宽的指令的RAM。该RAM存储了该可编程引擎16a执行的微程序。在控制存储器30中的微程序可通过处理器核心20(图1)加载。
除了对执行线程本地的事件信号外,该可编程引擎16a使用全局的信令状态。根据信令的状态,一个执行线程能将一个信号状态广播给所有的可编程引擎16a-16h。在可编程引擎中的任何一个以及所有的线程都能按这些信令的状态而分叉。这些信令状态可被用来确定一个资源的可用性或一个资源是否适于服务。上下文事件逻辑对这8个线程有一个仲裁。在一个实例中,该仲裁是一个循环机制。其他可以使用的技术包括优先队列或加权公平队列。
如上所述的,可编程引擎16a支持8个上下文的多线程执行。这使得一个线程刚在另一个线程发出一个存储参考信号之后就开始执行并且必须等待直到该参考信号完成才能做更多的工作。多线程执行是保持可编程引擎16高效的硬件执行的关键,这是因为存储等待时间是很重要的。多线程执行允许该可编程引擎16通过执行几个线程中的有用的独立工作来隐藏存储等待时间。
为允许高效的上下文交换,可编程引擎16a具有自己的寄存器组、程序计数器和上下文特定本地寄存器。每个上下文都有一个副本,这降低了从共享存储器和用于每个上下文交换的可编程引擎寄存器中来回移动上下文特定信息的需求。快速上下文交换允许当其他的上下文在等待完成输入-输出(I/O),典型地为外部存储器访问,或等待来自另一个上下文或硬件单元的信号时一个上下文进行计算。
例如,可编程引擎16a通过保留8个程序计数器和寄存器的8个上下文关联组来执行这8个上下文。存在有6个不同类型的上下文关联寄存器,即,通用寄存器(GPR)32,内部程序代理寄存器(未示出),静态随机存取存储器(SRAM)输入转移寄存器34,动态随机存取存储器(DRAM)输入转移寄存器36,SRAM输出转移寄存器38,DRAM输出转移寄存器40。
GPR32用于通用编程目的。该GPR32在程序的控制下排他地读和写。GPR32,当在指令中作为一个来源时,给执行的数据通路44提供操作数。当在指令中作为一个目的地时,GPR32用执行数据路径44的结果写入。可编程引擎16a还包括I/O转移寄存器34,36,38和40,这些寄存器被用来在可编程引擎16a和可编程引擎16a的外部的位置,例如DRAM存储器14a,SRAM存储器14b等,之间来回转移数据。
还使用了本地存储器42。本地存储器42是位于可编程引擎16a中的可寻址存储器。本地存储器42在程序控制下排他地读和写。本地存储器42还包括了通过所有的可编程引擎16a-16h共享的变量。共享的变量在各种分配的任务中由可编程引擎16a-16h在功能流水线阶段改变,其将在下面说明。该共享的变量包括一个关键部分,它定义了读一修改一写的时间。该关键部分在计算处理系统10中的执行和使用也将在下面描述。
可编程引擎上下文
可编程引擎16a的每个支持8个上下文的多线程执行。这样做的一个原因是允许一个线程刚在另一个线程发出一个存储参考信号之后就开始执行并且必须等待直到该参考信号完成才能做更多的工作。这个行为是保持可编程引擎16a-16f高效的硬件执行的关键,因为存储等待时间是很重要的。不同的是,如果只支持单个线程的执行,那么可编程引擎将为等待要完成的参考信号的大量周期而空闲,并因此而减低了总计算的吞吐量。多线程执行允许一个可编程引擎通过执行跨几个线程中的的有用的独立工作来隐藏存储等待时间。
可编程引擎16a-16h的每个具有8个可用的上下文。为允许高效的上下文交换,在可编程引擎中8个上下文的每个,都具有自己的寄存器组、程序计数器和上下文特定本地寄存器。每个上下文都有一个副本,这就降低了从共享存储器和用于每个上下文交换的可编程引擎寄存器中来回移动上下文特定信息的需求。快速上下文交换允许一个上下文当其他的上下文在等待I/O,典型地为外部存储器访问,或等待来自另一个上下文或硬件单元的信号时进行计算。
因此,图3显示了用于一个上下文的状态改变100。8个上下文中的每个均是以上描述的状态中的一种。最多,一个上下文在同一时间能处于一种执行状态而许多上下文可处于其他状态的一种:
1)非活动状态(100a)-由于一些应用程序可以不需要所有的8个上下文,因此当一个上下文的CTX_Enable(上下文激活)控制和状态寄存器(CSR)的启用位为“0”时,该上下文处在非活动状态。
2)准备状态(100b)-在这个状态中,虽然上下文作好了执行的准备,但该上下文由于一个不同的上下文仍在执行而不能进行。当执行的上下文转到睡眠状态时,可编程引擎的上下文仲裁器从所有处在准备状态的上下文中选择下一个上下文,从而转到执行状态。该仲裁是一个循环。
3)执行状态(100c)-当一个上下文的数在Active_CTX_Status CSR中时则该上下文是执行状态。执行上下文的程序计数器(未示出)被用来从控制存储器50中取出指令。上下文保持执行状态直到其执行导致它进入睡眠状态的指令。最多,一个上下文在任何时间都能是执行状态。
4)睡眠状态(100d)-上下文等待在CTX_#_Wakeup_Events CSR中指定的外部事件来发生,其中#表示8个不同的上下文例如上下#0到#7,典型地但不限于—个I/O访问。在此状态中,不将该上下文裁决为进入执行状态。
回到图2,每个可编程引擎22包括四种如下所述的32比特的数据路径寄存器。256个通用目的寄存器,12个临近寄存器,512个转移寄存器,以及640个32比特字本地存储器。
通用目的寄存器
可编程引擎16a包括了通用目的寄存器(GPR)52,其用于通用编程的目的。它们在程序的控制下排他地读和写。GPR52,当在指令中用做—个来源时,给执行的数据通路56提供操作数。当在指令中用做一个目的地时,GPR52用执行数据路径56的结果写入。GPR52被物理和逻辑地包括在两个存储体GPR A 52a和GPR B 52b中,如图3所示。
转移寄存器
可编程引擎16a还包括了转移寄存器58和60。转移寄存器4,36,38和40被用来在可编程引擎16和如DRAM,SRAM等的可编程引擎的外部的位置之间来回转移数据。在图2中例举了四种类型的转移寄存器,即输入转移寄存器和输出转移寄存器。
当该输入转移寄存器在指令中用做一个来源时,给执行的数据通路44提供操作数。当输出转移寄存器在指令中用做一个目的地时,用执行数据路径44的结果写入其中。
本地控制和状态寄存器(CSR)
本地控制和状态寄存器(CSR)66在执行数据通路56的外部并保留有特定目的信息。其能由特定的指令(local_csr_re和local_csr_wr)读和写,同时典型地比数据路径寄存器的访问频率低。
临近寄存器
可编程引擎16a还包括128个临近(NN)寄存器54。每个NN寄存器54当在指令中用做一个来源时,也给执行的数据通路44提供操作数。该NN寄存器54要么通过一个外部实体来写入,但不限于一个临近可编程引擎,要么通过相同的驻留有NN寄存器54的可编程引擎16a来写入。该特定寄存器由一个与上下文关联的操作选取,其中该寄存器的数字在指令中被编码,或者作为一个循环操作,通过诸如在CSR寄存器中的NN_Put(NN写地址)和NN_Get(NN读地址)选取。
当先前的临近可编程引擎与作为目的地的NN_Put一起执行一条指令时使用NN_Put寄存器。由此寄存器中的值所选取的NN寄存器被写入,然后增加NN_Put中的值(值到127后转回到0)。在此寄存器中的值与在NN_Get寄存器中的值比较以确定何时断言NN_Full和NN_Empty状态信号。
当NN寄存器54作为一个来源而被访问时使用NN_Get寄存器,其在指令中的来源字段中指定。由此寄存器中的值所选取的NN寄存器54被读出,然后增加NN_Put中的值(值到127后转回到0)。在此寄存器中的值与在NN_Put寄存器中的值比较以确定何时断言NN_Full和NN_Empty状态信号。
特别地,当NN寄存器54作为一个指令的目标时,该指令结果数据就从可编程引擎16a发送到,典型地是到另一个,临近可编程引擎。另一方面,当NN寄存器54作为一个指令的目的地时,该指令结果数据写入到在可编程引擎16a中选择的NN寄存器54。该数据并不象NN寄存器54被用作目的地时那样从该可编程引擎22f中发送出去。该NN寄存器54用在一个上下文流水线方法中,如下所描述。
本地寄存器
可编程引擎16a在本地存储器42中包括了640个32比特字。本地寄存器42是位于可编程引擎16a中的可寻址存储器。本地存储器42在程序控制下排他地读和写。本地存储器42将操作数提供给执行数据路径44作为一个来源,同时接收结果作为一个目的地。特定本地存储器位置的选取是基于一个LM_Addr寄存器53中的值,该值是通过local_CSR_wr指令写入的。每个上下文及其每个工作副本都有两个LM_Addr寄存器53。当一个上下文转到睡眠状态100d时,将工作副本的值放到LM_Addr的上下文副本中。当上下文转到执行状态时,将LM_Addr的副本中的值放到工作副本中。LM_Addr_0或LM_Addr_1的选择在该指令中被选取。通过设置CTX_Enable[LM_Addr_0_Global]和/或CTX_Enable[LM_Addr_1_Global]来使用这两个或一个LM_Addr作为全局也是可能的。当全局使用时,所有的上下文都使用LM_Addr的工作副本以代替它们自己的上下文特定副本。
本地存储器42还包括了可编程引擎16a-16h共享的变量。共享的变量在各种分配的任务中由可编程引擎16a-16h在功能流水线阶段改变。该共享的变量包括一个关键部分,它定义了读-修改-写的时间。
关键部分
可编程引擎16a-16h的流水线阶段包括了由在共享的变量的关键部分和后续包的到达时间之间的差所定义的最小解。分配给关键部分的时间必需少于后结包到达的时间,其确定了流水线阶段的最小解。存储器读的等待时间远远超出了用以最小尺寸包的包到达率,这里存储器读后面跟着用于修改变量的指令,然后跟着存储器写。因此,该关键部分必须保持比后续包的到达时间少。
执行数据路径
可编程引擎16a还包括了执行数据路径44,它能取走一个或两个操作数,执行一个操作,并任选地写回一个结果。来源和目的地可以是GPR32,转移寄存器34、36,38和40,NN寄存器54,以及本地存储器42。该操作是移位,加/减,逻辑运算,乘法,字节排列,和找到第一比特。执行数据路径44还包括一个内容可寻址存储器(CAM)64。
上下文可寻址存储器(CAM)
图4示出了一个CAM结构图102。可编程引擎16a包括了16个具有关联控制逻辑104的条目CAM64。每个条目存储一个32比特值,其能与一个来源操作数相比较。所有的条目并行比较,并且查找结果是一个6比特的值。该6比特的值包括一个与4比特条目数连接的2比特码。查找108的可能结果是两层。第一个结果是一个miss(0)110,其中该查找值不在CAM64中并且该条目数是最近最少使用(LRU)的条目,它可用做一个用于代替的所建议的条目。第二个结果可以是一个hit(1)112,其中查找值是在CAM64中,并且该条目数是一个已经匹配的条目。
LRU逻辑104保留一个用于CAM64的条目使用的时间顺序表。当一个条目被加载或与一个查找108匹配时,其被标记为MRU(最近最常使用)。错过的查找并不修改LRU表。
参考图5,显示的是一个典型的CAM处理120。例如,可编程引擎16a,使用一个16条目的高速缓冲存储器或具有一个LRU代替策略的CAM64来存储在同一时间工作在8个活动上下文或线程上的最近所使用变量的列表。这些线程按序执行,使用一个读阶段122和一个修改-写的阶段(未示出)。在该读阶段122期间,上下文请求一个变量并且该CAM64被检测以了解是否所需的变量已被高速缓冲存储(124)。如果该CAM64表示命中,则不需要读并且CAM64的内容给出了在该CAM中的变量的位置(126)。此外,当此上下文在其修改-写阶段变有效时,变量的更新值将存入高速缓冲存储器中,同时该上下文从CAM64中直接读出该值(128)。
另一方面,如果CAM64表示在读阶段122期间未命中,则开始读取所需变量(130)。因此,剩余7个上下文的执行时间被用来完全隐藏该读(132)的等待时间。而且,该变量在此上下文的修改-写阶段是可用的。由于如果最近被使用过则该变量在CAM64中已经是有效的了,因此就避免了该关键部分的写等待时间。接着,CAM被写或更新(134)。CAM64的内容提供LRU高速缓冲存储器变量的位置,同时新的变量覆盖先前使用的变量(136)。
接着,上下文直接从CAM64(136)中读出其值,并且该上下文返回到读阶段的开始(122)。因此,每个可编程引擎成为了一个流水线阶段,执行包处理的特定任务,同时监视用以特定任务的上下文或变量。
上下文流水线操作
参考图6,一个上下文流水线130流程示出了被分配给一个包或者单元的处理任务的特定部分的可编程引擎16a-16h。该用以特定任务的上下文保留在使用了CAM64a-64c的可编程引擎16a-16h中。该包以一个流水线方式处理,其类似于使用NN寄存器54a-54c的装配线来使数据从一个可编程引擎传到后面临近的可编程引擎。数据从流水线的一个阶段132a传到后面的阶段132b,并接着从阶段132b传到流水线的阶段132c,诸如此类。换句话说,数据传给流水线的下一阶段,以使得处理步骤能在处理器中循环交替。特别地,当一个指令被执行时,下一个指令能被取出,其意味着在任何时间在“管道”中都可以有超过一条的指令,且每个均在不同的处理阶段。
例如,数据能从一个可编程引擎16向前传送到下一个在流水线中使用了NN寄存器54a-54c的可编程引擎16。这种执行流水线处理的方法的优点是,包括在AM64a-64c中的用于每阶段132a-c的信息对流水线阶段的所有8个上下文都是始终有效的。当来自被处理的包的最小数据必须要优先通过上下文流水线130时,可以使用该上下文流水线方法。
其他实施例
可以理解的是,虽然以上的实例已经被详细描述,但前面的描述只是例举而并不限制本发明的范围,本发明的范围由所附权利要求的范围加以限定。其他的方面,优点,和修改均在以下权利要求的范围之内。

Claims (25)

1.一种并行多线程处理方法,包括:
建立编程阶段,每个编程阶段包括至少一个可编程引擎;并且在每个编程阶段:
在所述至少一个可编程引擎中分配一个或多个任务以供处理,
管理多任务的平行处理,包括为多任务的每一个建立上下文,其中所述多任务中的至少一个要求多指令执行,
基于指令的执行,从多任务中一个的处理切换到多任务中另一个的处理,以及
一旦完成了多任务,则将与多任务相关的数据传递给后续的编程阶段。
2.如权利要求1的方法,其中建立用于分配的任务的上下文包括提供一个软件控制的高速缓冲存储器。
3.如权利要求2的方法,其中软件控制的高速缓冲存储器是一个上下文寻址存储器CAM。
4.如权利要求1的方法,进一步包括形成至少一个驻留在可编程引擎的每一个中的下一临近寄存器。
5.如权利要求4的方法,还包括建立多个流水线,其包括将数据从至少一个驻留在可编程引擎之一中的下一临近寄存器转移到驻留在与多个可编程引擎之一中的临近的可编程引擎中的后续下一临近寄存器。
6.如权利要求5的方法,所述其中一个可编程引擎保留有所述流水线当前操作的编程阶段,而临近可编程引擎保留有多个流水线的后续编程阶段。
7.如权利要求1的方法,进一步包括所述可编程引擎在编程阶段中使用的分配的任务中修改变量,其中该变量是由所述可编程引擎的编程阶段使用的共享变量,并包括了用来定义共享变量的读-修改-写时间的关键部分。
8.如权利要求7的方法,进一步包括定义一个通过在共享变量的关键部分和后续包到达时间之间的差所定义的编程阶段的最小解,其中该关键部分少小于后续包到达的时间。
9.如权利要求3的方法,其中所述可编程引擎的每个同时执行多个上下文。
10.如权利要求9的方法,其中该多个上下文顺序执行。
11.如权利要求10的方法,其中该顺序包括一个读阶段和一个写一修改阶段。
12.如权利要求11的方法,其中该上下文寻址存储器CAM包括多个用以监视最近最少被使用的变量的项。
13.如权利要求12的方法,其中读阶段包括:确定该上下文寻址存储器CAM中的共享变量的高速缓冲存储器状态,并且如果该共享变量在该上下文寻址存储器CAM中被高速缓冲存储则更新用于该共享变量的值。
14.如权利要求12的方法,其中该读阶段在多个上下文中的至少一个中从本地存储器读出共享变量。
15.如权利要求14的方法,其中其余的多个上下文通过执行为处理包而分配的其他任务,从而隐藏了读的等待时间。
16.如权利要求14的方法,其中该共享的变量在该上下文寻址存储器CAM中被高速缓冲存储,并对于在多个上下文的至少一个中的修改-写阶段上的处理是可用的。
17.如权利要求1的方法,其中所述至少一个可编程引擎执行与多任务中的第一个任务相关联的指令,并且当与多任务中的第一个任务相关联的指令包含长延迟时间操作的时候,切换到多任务中的第二个任务。
18.如权利要求1的方法,其中所述至少一个可编程引擎执行与多任务中的第一个任务相关联的指令,并且当与多任务中的第一个任务相关联的指令要求对存储器的访问的时候,切换到多任务中的第二个任务。
19.一种并行多线程处理器,包括:
在编程阶段中分配的可编程引擎,在每个编程阶段,至少一个可编程引擎执行:
接收任务以处理,
管理多任务的平行处理,包括为多任务的每一个建立上下文,其中所述多任务中的至少一个要求多指令执行,
基于指令的执行,从多任务中一个的处理切换到多任务中另一个的处理,以及
一旦完成了多任务,则将与多任务相关的数据传递给后续的编程阶段。
20.如权利要求19的处理器,其中可编程引擎中的每个包括下一临近寄存器,用来将数据从驻留在最近执行的可编程引擎中的下一个临近寄存器转移到驻留在临近可编程引擎中的随后的下一个临近寄存器。
21.如权利要求20的处理器,其中所述可编程引擎中的每个进一步包括一个上下文寻址存储器CAM。
22.如权利要求21的处理器,其中该上下文寻址存储器CAM包括多个用以临视最近最少被使用的变量的项。
23.如权利要求21的处理器,进一步包括由所述多个可编程引擎的编程阶段使用的共享变量,该共享变量包括了用来定义共享变量的读-修改-写时间的关键部分。
24.如权利要求23的处理器,进一步包括由在共享变量的关键部分和后续包的到达时间之间的差所定义的编程阶段的最小解,其中该关键部分少小于后续包的到达时间。
25.如权利要求21的处理器,其中该多个上下文按顺序执行,该顺序包括一个读阶段和一个写-修改阶段,其中该读阶段包括在该上下文寻址存储器CAM中确定共享变量的高速缓冲存储器状态并且如果该共享变量在该上下文寻址存储器CAM中被高速缓冲存储则更新用于共享变量的值,其中该读阶段在多个上下文的至少一个中从本地存储器读出共享变量。
CNB038024640A 2002-01-25 2003-01-16 用于并行多线程处理的方法和装置 Expired - Fee Related CN100440151C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/057,723 US7181594B2 (en) 2002-01-25 2002-01-25 Context pipelines
US10/057,723 2002-01-25

Publications (2)

Publication Number Publication Date
CN1820253A CN1820253A (zh) 2006-08-16
CN100440151C true CN100440151C (zh) 2008-12-03

Family

ID=27609476

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038024640A Expired - Fee Related CN100440151C (zh) 2002-01-25 2003-01-16 用于并行多线程处理的方法和装置

Country Status (11)

Country Link
US (1) US7181594B2 (zh)
EP (1) EP1481323B1 (zh)
KR (1) KR100613923B1 (zh)
CN (1) CN100440151C (zh)
AT (1) ATE375552T1 (zh)
AU (1) AU2003209290A1 (zh)
CA (1) CA2473551C (zh)
DE (1) DE60316774T2 (zh)
HK (1) HK1072298A1 (zh)
TW (1) TWI231914B (zh)
WO (1) WO2003065207A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US20040034858A1 (en) * 2002-08-14 2004-02-19 Kushlis Robert J. Programming a multi-threaded processor
US9330060B1 (en) * 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US20060236011A1 (en) * 2005-04-15 2006-10-19 Charles Narad Ring management
US7853951B2 (en) * 2005-07-25 2010-12-14 Intel Corporation Lock sequencing to reorder and grant lock requests from multiple program threads
US20070044103A1 (en) * 2005-07-25 2007-02-22 Mark Rosenbluth Inter-thread communication of lock protected data
US20070124728A1 (en) * 2005-11-28 2007-05-31 Mark Rosenbluth Passing work between threads
US7624250B2 (en) 2005-12-05 2009-11-24 Intel Corporation Heterogeneous multi-core processor having dedicated connections between processor cores
US20070140282A1 (en) * 2005-12-21 2007-06-21 Sridhar Lakshmanamurthy Managing on-chip queues in switched fabric networks
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
JP5256685B2 (ja) * 2007-10-18 2013-08-07 日本電気株式会社 情報処理装置
US7926013B2 (en) * 2007-12-31 2011-04-12 Intel Corporation Validating continuous signal phase matching in high-speed nets routed as differential pairs
JP5514120B2 (ja) * 2008-11-14 2014-06-04 株式会社日立メディコ 超音波診断装置及び超音波画像生成方法
US8127262B1 (en) * 2008-12-18 2012-02-28 Xilinx, Inc. Communicating state data between stages of pipelined packet processor
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10353826B2 (en) * 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913059A (en) * 1996-08-30 1999-06-15 Nec Corporation Multi-processor system for inheriting contents of register from parent thread to child thread
WO2001016702A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
WO2001048606A2 (en) * 1999-12-28 2001-07-05 Intel Corporation Allocation of data to threads in multi-threaded network processor

Family Cites Families (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) * 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) * 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
BE795789A (fr) * 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
IT986411B (it) * 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
US4130890A (en) * 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) * 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) * 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4745544A (en) * 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US5297260A (en) * 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4866664A (en) * 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US5142683A (en) * 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
WO1989008883A1 (en) * 1988-03-14 1989-09-21 Unisys Corporation Record lock processor for multiprocessing data system
US5155854A (en) * 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) * 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5168555A (en) * 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) * 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) * 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
DE69132495T2 (de) * 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5347648A (en) * 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
AU630299B2 (en) * 1990-07-10 1992-10-22 Fujitsu Limited A data gathering/scattering system in a parallel computer
US5367678A (en) * 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
US5255239A (en) * 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) * 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) * 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
US5557766A (en) * 1991-10-21 1996-09-17 Kabushiki Kaisha Toshiba High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank
US5452437A (en) * 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) * 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5459842A (en) * 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) * 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
ATE188559T1 (de) * 1992-12-23 2000-01-15 Centre Electron Horloger Multi-tasking-steuerungsgerät mit geringem energieverbrauch
JPH08506198A (ja) * 1993-01-22 1996-07-02 ユニバーシティ コーポレイション フォーアトモスフェリック リサーチ 多重パイプライン多重プロセッサシステム
US5404464A (en) * 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5448702A (en) * 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5522069A (en) * 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
CA2122182A1 (en) * 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
CA2107299C (en) * 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5450351A (en) * 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US5490204A (en) * 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
US5835755A (en) * 1994-04-04 1998-11-10 At&T Global Information Solutions Company Multi-processor computer system for operating parallel client/server database processes
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5542088A (en) * 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5721870A (en) * 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5544236A (en) * 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) * 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5781774A (en) * 1994-06-29 1998-07-14 Intel Corporation Processor having operating modes for an upgradeable multiprocessor computer system
JP3810449B2 (ja) * 1994-07-20 2006-08-16 富士通株式会社 キュー装置
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5550816A (en) * 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5784712A (en) * 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for locally generating addressing information for a memory access
US5649157A (en) * 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5886992A (en) * 1995-04-14 1999-03-23 Valtion Teknillinen Tutkimuskeskus Frame synchronized ring system and method
US5592622A (en) * 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5828746A (en) * 1995-06-07 1998-10-27 Lucent Technologies Inc. Telecommunications network
US5828863A (en) * 1995-06-09 1998-10-27 Canon Information Systems, Inc. Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5680641A (en) * 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5940612A (en) * 1995-09-27 1999-08-17 International Business Machines Corporation System and method for queuing of tasks in a multiprocessing system
US5689566A (en) * 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
US5809530A (en) * 1995-11-13 1998-09-15 Motorola, Inc. Method and apparatus for processing multiple cache misses using reload folding and store merging
KR0150072B1 (ko) * 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
US5796413A (en) * 1995-12-06 1998-08-18 Compaq Computer Corporation Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering
US5940866A (en) * 1995-12-13 1999-08-17 International Business Machines Corporation Information handling system having a local address queue for local storage of command blocks transferred from a host processing side
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
EP0870386B1 (de) 1995-12-29 2000-04-12 Tixi.Com GmbH Telecommunication Verfahren und mikrocomputersystem zur automatischen, sicheren und direkten datenübertragung
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5809235A (en) * 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5797043A (en) * 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5784649A (en) * 1996-03-13 1998-07-21 Diamond Multimedia Systems, Inc. Multi-threaded FIFO pool buffer and bus transfer control system
KR100219597B1 (ko) * 1996-03-30 1999-09-01 윤종용 씨디-롬 드라이브에서의 큐잉 제어 방법
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5946487A (en) * 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
KR980004067A (ko) * 1996-06-25 1998-03-30 김광호 멀티프로세서 시스템의 데이터 송수신장치 및 방법
JP3541335B2 (ja) 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
US5937187A (en) * 1996-07-01 1999-08-10 Sun Microsystems, Inc. Method and apparatus for execution and preemption control of computer process entities
US6023742A (en) 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5745913A (en) * 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US5812868A (en) * 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
US5860158A (en) * 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US5854922A (en) * 1997-01-16 1998-12-29 Ford Motor Company Micro-sequencer apparatus and method of combination state machine and instruction memory
US5961628A (en) 1997-01-28 1999-10-05 Samsung Electronics Co., Ltd. Load and store unit for a vector processor
US5742587A (en) * 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US5905889A (en) * 1997-03-20 1999-05-18 International Business Machines Corporation Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use
US5983274A (en) 1997-05-08 1999-11-09 Microsoft Corporation Creation and use of control information associated with packetized network data by protocol drivers and device drivers
US6006321A (en) * 1997-06-13 1999-12-21 Malleable Technologies, Inc. Programmable logic datapath that may be used in a field programmable device
US5887134A (en) * 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US5938736A (en) * 1997-06-30 1999-08-17 Sun Microsystems, Inc. Search engine architecture for a high performance multi-layer switch element
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6014729A (en) 1997-09-29 2000-01-11 Firstpass, Inc. Shared memory arbitration apparatus and method
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US5948081A (en) * 1997-12-22 1999-09-07 Compaq Computer Corporation System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed
US5970013A (en) 1998-02-26 1999-10-19 Lucent Technologies Inc. Adaptive addressable circuit redundancy method and apparatus with broadcast write
US6067300A (en) * 1998-06-11 2000-05-23 Cabletron Systems, Inc. Method and apparatus for optimizing the transfer of data packets between local area networks
US6327650B1 (en) * 1999-02-12 2001-12-04 Vsli Technology, Inc. Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
US6745317B1 (en) * 1999-07-30 2004-06-01 Broadcom Corporation Three level direct communication connections between neighboring multiple context processing elements
US6665755B2 (en) * 2000-12-22 2003-12-16 Nortel Networks Limited External memory engine selectable pipeline architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913059A (en) * 1996-08-30 1999-06-15 Nec Corporation Multi-processor system for inheriting contents of register from parent thread to child thread
WO2001016702A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
WO2001048606A2 (en) * 1999-12-28 2001-07-05 Intel Corporation Allocation of data to threads in multi-threaded network processor

Also Published As

Publication number Publication date
CA2473551C (en) 2009-01-06
EP1481323A2 (en) 2004-12-01
HK1072298A1 (en) 2005-08-19
TWI231914B (en) 2005-05-01
TW200307214A (en) 2003-12-01
US20030145173A1 (en) 2003-07-31
KR100613923B1 (ko) 2006-08-18
CA2473551A1 (en) 2003-08-07
US7181594B2 (en) 2007-02-20
AU2003209290A1 (en) 2003-09-02
WO2003065207A2 (en) 2003-08-07
EP1481323B1 (en) 2007-10-10
ATE375552T1 (de) 2007-10-15
KR20040017251A (ko) 2004-02-26
DE60316774T2 (de) 2008-08-28
WO2003065207A3 (en) 2004-05-27
DE60316774D1 (de) 2007-11-22
CN1820253A (zh) 2006-08-16

Similar Documents

Publication Publication Date Title
CN100440151C (zh) 用于并行多线程处理的方法和装置
US7302549B2 (en) Processing packet sequence using same function set pipelined multiple threads spanning over multiple processing engines and having exclusive data access
US7000048B2 (en) Apparatus and method for parallel processing of network data on a single processing thread
KR100422491B1 (ko) 내장형 프로세서 복합체, 네트워크 프로세싱 시스템 및인스트럭션 실행 제어 방법
EP1381939B1 (en) Registers for data transfers within a multithreaded processor
EP1582980B1 (en) Context switching method, device, program, recording medium, and central processing unit
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
US7376952B2 (en) Optimizing critical section microblocks by controlling thread execution
US7240164B2 (en) Folding for a multi-threaded network processor
WO2001016758A9 (en) Double shift instruction for micro engine used in multithreaded parallel processor architecture
WO2004044742A2 (en) Method and apparatus for serialized mutual exclusion
WO2014188073A1 (en) Memory unit for emulated shared memory architectures
CN114827048A (zh) 一种动态可配高性能队列调度方法、系统、处理器及协议
EP1680743A2 (en) Dynamically caching engine instructions for on demand program execution
EP1504349B1 (en) Signal aggregation
Ostheimer Parallel Functional Computation on STAR: DUST—
WO2001016697A2 (en) Local register instruction for micro engine used in multithreadedparallel processor architecture

Legal Events

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

Granted publication date: 20081203

Termination date: 20180116