CN101322111A - 每个线程具有多个并发流水线的多线程处理器 - Google Patents

每个线程具有多个并发流水线的多线程处理器 Download PDF

Info

Publication number
CN101322111A
CN101322111A CNA2005800157030A CN200580015703A CN101322111A CN 101322111 A CN101322111 A CN 101322111A CN A2005800157030 A CNA2005800157030 A CN A2005800157030A CN 200580015703 A CN200580015703 A CN 200580015703A CN 101322111 A CN101322111 A CN 101322111A
Authority
CN
China
Prior art keywords
instruction
thread
multiline procedure
procedure processor
processor
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.)
Pending
Application number
CNA2005800157030A
Other languages
English (en)
Inventor
埃德姆·赫凯内克
梅安·穆德基尔
麦克尔·J.·舒尔特
C.·约翰·格罗斯尼尔
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.)
Sandbridge Technologies Inc
Original Assignee
Sandbridge Technologies Inc
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 Sandbridge Technologies Inc filed Critical Sandbridge Technologies Inc
Publication of CN101322111A publication Critical patent/CN101322111A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

一种多线程处理器,包括多个硬件线程单元、与线程单元耦合用来解码从线程单元接收的指令的指令解码器、以及用于执行解码的指令的多个执行单元。所述多线程处理器被配置用来控制与各个硬件线程单元相关的线程的指令发布顺序。在给定处理器时钟周期,只有指定的一个线程被允许发布一个或多个指令,但是根据指令发布顺序,被允许发布指令的指定线程在多个时钟周期上变化。以至少允许给定一个线程支持多个并发指令流水线的方式,流水线化所述指令。

Description

每个线程具有多个并发流水线的多线程处理器
相关申请
本申请要求2004年4月7日提交的名称为“Processor PipelineWith Multithreaded Support”的美国临时申请第60/560,199的优先权,在此通过引用而将其并入。
本申请还涉及2004年5月7日提交的名称为“ProcessorReduction Unit for Accumulation of Multiple Operands With orWithout Saturation”的美国专利申请第10/841,261,在此通过引用而将其并入。
技术领域
本发明一般涉及数字数据处理器领域,并且尤其涉及用在数字信号处理器(DSP)或其它类型的数字数据处理器中的多线程和流水线技术。
背景技术
流水线是公知的处理器实施技术,由此多个指令被重叠执行。传统的流水线技术在例如2003年加州旧金山的Morgan Kaufmann出版公司John L.Hennessy和David A.Patterson的“ComputerArchitecture:A Quantitative Approach”的第三版中有描述。
图1A示出了包括没有任何重叠的两个指令的执行的例子。在该例中,两个指令是整数加法指令addi r0、r2、8和整数乘法指令mulir8、r3、4。第一个指令addi执行寄存器r2的内容和立即值8的加法,并且存储结果到寄存器r0。假设为了说明的简单和清楚,每个指令包括相同的四个流水线阶段,以取指令(IF)、读取(RD)、执行(EX)和回写(WB)表示。
在第一阶段(IF),指令被从存储器中取出并解码。在第二阶段(RD),运算数被从寄存器组中读出。在第三阶段(EX)执行加法。最后,在第四阶段(WB),结果在位置r0被回写到寄存器组。当addi指令完成后,开始下一个指令muli。muli指令执行寄存器r3的内容和立即值4的加法,并且存储结果到寄存器r8。
图1B示出了相同的两个指令,但是描述了如何使用传统的流水线技术来重叠它们。每个流水线阶段(IF、RD、EX和WB)通常在时钟边界上执行。第二个指令muli可以在第二个时钟周期开始,无需额外的硬件。在两个指令之间共享与IF、RD、EX和WB阶段相关的硬件,但是一个指令的阶段在时间上相对于另一个指令的阶段移位。
图2示出了在流水线实施中可能出现的新问题。在该例中,muli指令需要寄存器r0的内容作为运算数,并且因此在addi指令计算并且将加法运算结果回写到r0以前,无法读取r0。muli指令的处理在addi指令开始之后的下一个时钟周期开始,但是该处理必须停止并且等待addi指令的执行和回写阶段完成。muli指令必须等待其运算数变为可用的空闲周期通常被称为流水线中的“气泡”。
在单线程处理器中,减少流水线气泡的常用方法被称为旁路,由此将结果直接转发给需要它的处理器执行单元,而不是在WB阶段将计算的值回写到寄存器组。这减少但并没有消除深度流水线机器中的气泡。同样,它通常需要相关性校验和旁路硬件,会不适当地增加处理器成本和复杂性。
还可以通过使用多线程来减少流水线停止。多线程处理器是支持同时执行多个不同指令序列或“线程”的处理器。传统的线程技术在例如1995年马萨诸塞州波士顿Jones and Bartlett出版社的M.J.Flynn的“Computer Architecture:Pipelined and Parallel Processor Design”和1997年马萨诸塞州里丁镇Addison-Wesley出版社G.A.Blaauw和Frederick P.Brooks的“Computer Architecture:Concepts andEvolution”中有描述,两者在此通过引用而并入。
然而,这些和其它传统方法通常不允许每个线程多个并发流水线,它们也不支持流水线移位。
因此,需要可以在多线程数字数据处理器中提供改进的流水线的技术。
发明内容
本发明在说明性实施例中提供了一种多线程处理器,其方便地允许每个线程多个并发流水线,并且还支持流水线移位。
根据本发明的一个方面,多线程处理器包括多个硬件线程单元、与线程单元耦合用来解码从其接收的指令的指令解码器、和用于执行解码的指令的多个执行单元。多线程处理器被配置用来控制与各个硬件线程单元相关的线程的指令发布顺序。在给定处理器时钟周期内,只有指定的一个线程被允许发布一个或多个指令,但是根据指令发布顺序,被允许发布指令的指定线程在多个时钟周期上变化。以至少允许一个给定线程支持多个并发指令流水线的方式来流水线化指令。
在说明性实施例中,使用令牌触发线程方法来确定指令发布顺序。更准确地说,在处理器支持N个线程的安排中,在N个连续处理器时钟周期序列上,允许N个线程的每一个在N个连续处理器时钟周期的仅相应一个上发布指令。
说明性实施例允许每一个线程在其相应一个处理器时钟周期上发布多达三个指令。指令被流水线化,使得可以对不同线程并发执行至少五个单独的指令流水线。
说明性实施例中流水线化的指令包括加载/存储指令、算术逻辑单元指令、整数乘法指令、向量乘法指令和向量乘法和归约指令。
根据本发明的另一方面,使用大于处理器线程总数的多个阶段来流水线化向量乘法和归约指令。例如,向量乘法和归约指令可以包括具有至少11个阶段的流水线,包括指令解码阶段、向量寄存器组读取阶段、至少两个乘法阶段、至少两个加法阶段、累加器读取阶段、多个归约阶段和累加器回写阶段。累加器读取阶段可以与另一个诸如加法阶段的阶段合并。各向量乘法和归约指令的流水线可以彼此相对移位多个流水线阶段。
本发明在说明性实施例中提供了超过传统技术的多个明显优势。例如,提供了比使用传统方法实现的更高程度的并发性。同样,因为保证了计算结果在被来自相同线程的下一个指令需要之前被写回到适当的寄存器组,消除了对相关性校验和旁路硬件的需要。此外,所述技术帮助限制处理器的功耗。
附图说明
图1A和1B示出了使用传统方法的指令执行的例子。
图2示出了在传统处理器流水线中可能发生延迟的方式。
图3示出了在本发明的实施例中多线程流水线处理器的流水线的例子。
图4示出了其中可以实施本发明的多线程处理器的例子。
图5示出了可以用于本发明的实施例的令牌触发多线程方法的例子。
图6示出了本发明的实施例中的多个示例流水线。
图7示出了根据本发明的一个实施例,其中流水线可以被移位以允许长于发布周期的计算周期的方式。
具体实施方式
将在示范多线程处理器的情况下对本发明进行描述。然而应该理解,本发明不需要示出的特定安排,并且可以使用其它类型的数字数据处理器和相关的处理电路来实施。
如在此描述的给定处理器可以以一个或多个集成电路的形式实施。
本发明在说明性实施例中,提供了适合用在多线程处理器中的流水线技术。使用该技术,可以以有效方式并发执行来自多个线程的多个指令。如将在下面更详细地描述的,说明性实施例使用可变长度执行流水线、交错执行和循环开始执行来提供并发执行,同时保持低功率操作。说明性实施例提供比使用传统方法可实现的更高程度的并发性。
图3示出了消除了通过流水线执行引入的“气泡”的多线程流水线的例子。如在此的前一个例子,假设为了本例子说明的简单和清楚,发布的指令的每一个包括相同的四个流水线阶段,即,IF、RD、EX和WB。进一步假设有三个线程,并且因此三个硬件线程单元或“上下文(context)”以顺序方式发布指令。在多线程处理器的典型实施中,给定线程通常可以从硬件和软件方面来看。因此,在此与给定线程相关的特定处理器硬件通常被称为硬件线程单元或简单地“上下文”。
在本例中,整数加法指令addi r0、r2、8最初由第一个上下文在第一时钟周期上发布。另外两个上下文在各后续时钟周期上发布指令。每个上下文需要总共三个时钟周期来发布一条指令。在第四个时钟周期,第一上下文发布另一个指令,即整数乘法指令muli r8、r0、4。
更准确地说,在周期1,对于addi指令执行线程1的IF阶段。在周期2,执行线程2的IF阶段,同时执行线程1的RD阶段。在周期3,执行线程3的IF阶段,执行线程2的RD阶段并且执行线程1的EX阶段。在周期4,并发执行muli指令的线程1的IF阶段和addi指令的WB阶段。同时,执行线程2的EX阶段并且执行线程3的RD阶段。
从这个例子中可以看到,来自相同和不同线程的多个指令重叠和并发执行。还可以看到,尽管muli指令需要addi指令的结果,但是流水线中没有气泡。因此,图3的例子用来说明通过适当配置的流水线和充分数量的线程,所有硬件上下文可以并发执行,尽管每个周期每个上下文仅发布单个指令。特定数量的线程和流水线阶段仅作为说明用途,并且不打算反映优选的实施。给出在此提供的教导,本领域技术人员将容易地确定特定应用的线程和流水线阶段的适当数量。
如前面指出的,本发明可以有利地在多线程处理器中实施。可以在其中实施本发明的多线程处理器的更加具体的例子在2002年10月11日提交的并且题目是“Multithreaded Processor With EfficientProcessing For Convergence Device Applications”的美国专利申请第10/269,372中有描述,其通常以此指定并且在此通过引用而并入。可以配置该多线程处理器来执行基于RISC的控制代码、DSP代码、Java代码和网络处理代码。它包括单指令多数据(SIMD,single instructionmultiple data)向量处理单元、归约单元和长指令字(LIW,longinstruction word)复合指令执行。线程的例子和适合用于示范多线程处理器的流水线技术在2002年10月11日提交的并且题目是“Methodand Apparatus for Token Triggered Multithreading”的美国专利申请第10/269,245中有描述,其现在作为美国专利第6,842,848公布,其通常以此指定并且在此通过引用而并入。
本发明可以在其它多线程处理器或通常其它类型数字数据处理器中实施。现在将参阅图4来描述另一个这种处理器。
图4示出了包括归约单元402和累加器寄存器组406的多线程处理器400的例子。处理器400通常与美国专利申请第10/269,372中描述的类似,但是包括如在上面所引的美国专利申请第10/841,261中描述配置的归约单元402和累加器寄存器组406。
除其它元件外,多线程处理器400包括多线程高速缓冲存储器410、多线程数据存储器412、指令缓冲器414、指令解码器416、寄存器组418和内存管理单元(MMU,memory management unit)420。多线程高速缓冲存储器410包括多个线程高速缓冲存储器410-1,410-2,...,410-N,其中N通常表示由多线程处理器400支持的线程的数量,并且在该特定例子中被定为N=4。当然,如将对本领域的技术人员不难显而易见的,可以使用其它N值。
每个线程因此在多线程高速缓冲存储器410中具有与之相关的相应线程高速缓冲存储器。同样地,数据存储器412包括N个不同的数据存储器实例,如图所示以数据存储器412-1,412-2,...,412-N表示。
多线程高速缓冲存储器410经由MMU 420与处理器400外部的主存储器(未示出)连接。和高速缓冲存储器410一样,MMU 420包括由处理器支持的N个线程的每一个的单独实例。MMU 420确保来自主存储器的适当指令被加载到多线程高速存储器410中。
数据存储器412通常也直接连接到上述外部主存储器,尽管此连接也没有被明确地在图中示出。数据缓冲器430也和数据存储器412相关。
通常,多线程高速缓冲存储器410用来存储由多线程处理器400执行的指令,而数据存储器412存储由指令运算的数据。指令解码器416从多线程高速缓冲存储器410取出指令并且解码。如将在下面描述的,根据指令类型,指令解码器416可以将给定指令或相关信息转发到处理器内的各种其它单元。
处理器400包括分支指令队列(IQ,instruction queue)440和程序计数器(PC,program counter)寄存器442。程序计数器寄存器442包括每个线程的一个实例。分支指令队列440接收来自指令解码器416的指令,并且和程序计数器寄存器442一起提供输入到加法器组件444,该加法器组件444说明性地包括进位传播加法器(CPA,carry-propagate adder)。元件440、442和444共同构成处理器400的分支单元。尽管未在图中示出,处理器400中还可以包括辅助寄存器。
寄存器组418提供整数结果的临时存储。从指令解码器416转发到整数指令队列(IQ)450的指令被解码,并且通过使用位移单元452来选择正确的硬件线程单元,示出的位移单元452包括每个线程的单独实例。位移单元452将显位插入到寄存器组地址,使得独立线程数据不被破坏。对于给定线程,这些显位可以包括例如相应的线程标识符。
如图所示,寄存器组418与输入寄存器RA和RB耦合,寄存器RA和RB的输出耦合到可能包括加法器的运算逻辑单元(ALU,arithmetic logic unit)组件454。输入寄存器RA和RB被用于实施指令流水线。ALU组件454的输出耦合到数据存储器412。
寄存器组418、整数指令队列450、位移单元452、元件RA和RB以及ALU组件454共同构成示范整数单元。
可以在处理器400中执行的指令类型包括分支、加载、存储、整数和向量/SIMD指令类型。如果给定指令没有指定分支、加载、存储或者整数运算,则它是向量/SIMD指令。可以同样或者可替换地使用其它指令类型。整数和向量/SIMD指令类型是通常在此分别被称为整数和向量指令类型的例子。
向量IQ 456接收转发自指令解码器416的向量/SIMD指令。作为包括用于每个线程的单独实例示出的相应位移单元458用于插入适当的位以确保独立线程数据不被破坏。
处理器400的向量单元460被分为N个不同的并行部分,并且包括被同样分开的向量组462。向量组462包括以VR00到VR31表示的32个寄存器。向量组462基本用于与寄存器组418相同的目的,除了前者运算向量/SIMD指令类型。
向量单元460说明性地包括向量指令队列456、位移单元458、向量组462和与之相关的运算和存储元件。
向量单元460的运算如下。从向量组462读取作为分数或整数数据类型编码的向量/SIMD块并且存储到结构性可见的寄存器VRA、VRB、VRC中。从那里,流程前进通过执行向量/SIMD数据的并行并发乘法的乘法器(MPY)。包括跳跃进位加法器(CSA,carry-skipadder)和CPA的加法器单元可以执行附加的算术运算。例如,如本领域的技术人员将意识到的,一个或者多个CSA可以被用来将来自向量寄存器组的累加器值相加,并且一个或者多个CPA可以被用来执行最后的加法以便完成乘法运算。计算结果被存储到结果寄存器464中,并且作为输入运算数提供到归约单元102’。归约单元102’以这种方式对输入运算数求和,使得产生的求和结果与如果串联执行每个运算得到的相同。归约的和被存储到累加器寄存器组406中用于进一步的处理。
当执行向量点积时,MPY组件并行执行四次乘法,CSA和CPA单元执行附加运算或者简单地传递乘法结果以便存储到结果寄存器464中,并且归约单元402将乘法结果连同存储在累加器寄存器组106’中的累加器值一起求和。由归约单元生成的结果然后被存储到累加器寄存器组中,以便以前面描述的方式用在下一次迭代中。
此例中的累加器寄存器组406包括总共16个以ACC00到ACC15表示的累加器寄存器。
多线程处理器400可以使用基于线程访问寄存器组的方法,如在2002年10月11日提交、题目是“Method and Apparatus for RegisterFile Port Reduction in a Multithreaded Processor”的美国专利申请第10/269,373中描述的,其通常以此指定并且在此通过引用而并入。
如在上面所引的美国专利申请第10/841,261中描述的,多线程处理器400非常适合用于执行向量点积和其它类型的并行向量乘法和归约运算。
本发明的说明性实施例使用被称为令牌触发线程的方法。令牌触发线程在上面所引的美国专利申请第10/269,245中有描述,该申请现在作为美国专利第6,842,848公布。令牌触发线程通常向多线程处理器的多个线程的每一个分配不同的令牌。例如,令牌触发线程可以使用令牌与当前处理器时钟周期相关地识别将被允许为后续时钟周期发布指令的处理器的一个特定线程。
图5示出了用于实施多线程处理器的令牌触发线程的例子,其中线程的数量N是8。通常,所有线程同时运算,并且每一个访问线程高速缓冲存储器100的相应实例和数据存储器112。如图5所示,8个线程以线程0、线程1、线程2、......线程7表示,并且被示出为以环形串行相互连接。
根据图5所示的令牌触发线程,所有硬件线程单元或上下文被允许同时执行指令,但是在处理器的特定时钟周期,只有一个上下文可以发布指令。换句话说,所有上下文同时执行,但是在特定时钟周期只有一个上下文被激活。因此,如果总共有C个上下文,则将需要C个时钟周期从所有上下文发布指令。每个时钟周期,上下文的一个发布指令,并且由令牌指示发布指令的下一个线程。
在图5的例子中,以顺序或循环方式来安排令牌,使得上下文将顺序发布指令。尽管如此,可以使用诸如交替奇偶方式的其它方式来安排指示发布指令的下一个上下文的令牌。同样,如上所述,可以结合本发明使用其它类型的线程。
尽管令牌触发线程被用于说明性实施例,本发明不需要此特定类型的多线程,并且可以使用其它类型的多线程技术。
图6示出了根据本发明在多线程处理器400中示例指令功能可以被流水线化的方式。在本发明的说明性实施例中,此类型流水线方法最好结合前面描述的令牌触发线程使用,但是将意识到,多个其它流水线方法和线程的组合可以用于实施本发明。
所述图描述了用于加载/存储(Ld/St)、算术逻辑单元(ALU)、整数乘法(I_Mil)、向量乘法(V_Mul)和向量乘法和归约(V_MulReduce)指令的示例流水线。在此实施中,可以同时开始多达三个流水线,并且所有五个可以同时处于不同的执行阶段。
Ld/St流水线具有九个阶段,以阶段0到阶段8表示。在第一阶段-阶段0(Inst Dec),指令被取出并解码。该阶段对于所有五个流水线是共同的并且确定指令应该发送到哪个队列。在阶段1(RFRead),读取寄存器组运算数。这将形成用于加载或存储运算的基地址。在存储指令的情况下,还读取将被存储的数据。在阶段2(Agen),任何立即值被添加到地址中并且生成完整地址。在阶段3(Xfer),计算的地址被发送到存储器子系统。在阶段4(Int/Ext),对存储器访问是内部还是外部存储器做出决定。在阶段5-7(Mem0、Mem1、Mem2),值被从存储器中读取或写到存储器中。在阶段8(WB),加载指令从存储器读取的值被写到寄存器组中。
ALU流水线具有七个阶段,以阶段0到阶段6表示。如在Ld/St流水线中,第一阶段-阶段0(Inst Dec)取出并解码所有指令。在阶段1(Wait),等待周期被插入。这允许Ld/St和ALU硬件共享相同的寄存器组读数端口。在下一个阶段,阶段2(RF Read),从寄存器组中读取运算函数的运算数。阶段3和4(Exec1、Exec2)然后计算运算结果(例如,加、比较、位移等等)。在阶段5(Xfer),结果被发送到寄存器组。在阶段6(WB),结果被回写到寄存器组。
I_Mul流水线与ALU流水线类似,因为它们共享共同结构的资源。所述图指示除了I_Mul流水线中的附加执行阶段(Exec 3)外,所述流水线阶段是相同的。因此,附加周期可用于计算乘法的结果。
V_Mul流水线使用与前面描述的ALU和I_Mul流水线不同结构的资源。它因此可以与那些指令同时执行而不会发生资源冲突。阶段0(Inst Dec)在所有指令中并且允许将解码的指令发送到正确的流水线。在阶段1(VRF Read),读取向量寄存器组运算数。阶段2-5(MPY1、MPY2、Add1、Add2)执行多元向量运算。存在两个加法阶段,以便将乘法结果从进位存储格式转换回2的补码格式。此外,如果向量仅需要简单的运算,则这可以在加法阶段执行。在阶段6(Xfer),结果被发送回向量寄存器组,并且在阶段7(WB),结果被回写。
除了要执行额外的归约运算外,V_Mul Reduce流水线与V_Mul流水线类似。归约取4个向量元乘积,连同累加器运算数一起,并且将它们归约为单个标量元。这通常包括将所有的乘积加到累加器或者从累加器减去所有的乘积,尽管其它组合也是可能的。V_Mul和V_Mul Reduce流水线直到阶段5都是相同的。在阶段5(Add2、ACCRead),附加结构的累加器寄存器组被读取。该值与向量元进行算术上的合并并且归约为单个标量。四个阶段(Reduce1、Reduce2、Reduce3、Reduce4)专用于此归约,并且然后在阶段10(ACC WB)标量值被回写到累加器寄存器组(例如,来自向量寄存器组的不同结构的空间)。
如果如图2单个线程每个周期发布指令,将在流水线中引起气泡。然而,正如在图3所示仅有一种类型的流水线的简化情况下,在说明性实施例中,所有五个处理器流水线被交错并且形成多线程以避免气泡。每个硬件线程单元根据图5所示的令牌触发线程发布多达三个指令。这确保了没有线程延迟并且所有线程将完成而没有死锁。
如上所述,在该实施中,所有五个处理器流水线可以由来自多个硬件线程单元的指令同时激活。这使用来自其它线程单元的工作填充流水线中的潜在气泡。
应该注意到,给定V_Mul Reduce流水线可以被从V_Mul流水线位置移位,因为V_Mul Reduce流水线的背靠背归约运算不引起气泡。看来这种移位可能导致流水线气泡,因为V_Mul Reduce流水线的持续时间长于硬件线程单元的数量(在本实施中为8)。换句话说,流水线的计算周期(V_Mul Reduce的11个时钟周期)长于发布周期(每个线程每8个时钟周期发布一次)。事实上,因为累加器寄存器组读取阶段被从V_Mul流水线计算移位,所以这种情况不会发生。
图7示出了多个V_Mul Reduce流水线可以彼此相对移位以便允许长于发布周期的计算周期的方式。注意该图从第一V_Mul Reduce指令的周期5开始。因为在本实施中有八个线程单元,下一个V_MulReduce指令将在周期8发布。如图所示,累加器寄存器组在周期10被回写。尽管如此,运算数不被第二个指令读取直到周期13。第二V_Mul Reduce流水线可以被认为是从第一V_Mul Reduce流水线的位置移位。这允许延长执行阶段而不会引起流水线中的气泡。
上面描述的说明性实施例方便地允许每个线程多个并发流水线,并且在深度多线程流水线中提供流水线移位。它还消除了对相关性校验和旁路硬件的需要,因为保证结果在来自相同线程的下一个指令需要它们之前被回写到寄存器组。
应该注意到,图中所示的特定处理器、多线程、流水线和位移安排仅作为说明性示例给出,并且如将对本领域的技术人员显而易见的,可以包括没有明确示出的附加或可替换的元件。
还应该强调,本发明不需要如图4所示的特定多线程处理器配置。本发明可以在广泛的多种其它类型多线程处理器配置中实施。
因此,上面描述的本发明的实施例仅打算是说明性的,并且在所附权利要求范围内的许多可替换的实施例将对本领域的技术人员显而易见。例如,如图4所示的硬件线程单元的特定安排、指令解码器和执行单元可以在其它实施例中被改变,并且本发明不应被解释为需要这种元件的任何特定类型或安排。同样,如上所述,流水线配置、线程类型和指令格式可以变化以适应特定应用的特定需要。

Claims (20)

1.一种多线程处理器,包括:
多个硬件线程单元;
与线程单元耦合的指令解码器,用来解码从线程单元接收的指令;以及
用于执行解码的指令的多个执行单元;
其中,所述多线程处理器被配置用来控制与各个硬件线程单元相关的多个线程的指令发布顺序;
其中,在给定处理器时钟周期,只有指定的一个线程被允许发布一个或多个指令,根据指令发布顺序,被允许发布指令的指定线程在多个时钟周期上变化;以及
其中,以至少允许给定一个线程支持多个并发指令流水线的方式来流水线化所述指令。
2.根据权利要求1所述的多线程处理器,其中,使用令牌触发线程来确定所述指令发布顺序。
3.根据权利要求2所述的多线程处理器,其中,所述处理器支持N个线程,并且在N个连续处理器时钟周期序列上,允许N个线程的每一个在N个连续处理器时钟周期的仅相关一个上发布指令。
4.根据权利要求1所述的多线程处理器,其中,所述线程的每一个被允许在其相关一个处理器时钟周期上发布两个或多个指令。
5.根据权利要求1所述的多线程处理器,其中,所述线程的每一个被允许在其相关一个处理器时钟周期上发布多达三个指令。
6.根据权利要求1所述的多线程处理器,其中,所述指令被流水线化,使得在给定时钟周期内可以发布多达三个指令。
7.根据权利要求1所述的多线程处理器,其中,所述指令被流水线化,使得对于不同线程,可以同时执行至少5个单独的指令流水线。
8.根据权利要求1所述的多线程处理器,其中,所述流水线化指令包括加载/存储指令、算术逻辑单元指令、整数乘法指令、向量乘法指令和向量乘法和归约指令中的至少一个。
9.根据权利要求8所述的多线程处理器,其中,所述算术逻辑单元指令具有流水线,该流水线在其指令解码阶段和寄存器组读取阶段之间包括至少一个等待阶段,所述等待阶段允许加载/存储指令和算术逻辑指令共享一组寄存器组读取端口。
10.根据权利要求8所述的多线程处理器,其中,所述整数乘法指令具有流水线,该流水线在其指令解码阶段和寄存器组读取阶段之间包括至少一个等待阶段,所述等待阶段允许整数乘法指令和算术逻辑指令共享一组寄存器组读取端口。
11.根据权利要求8所述的多线程处理器,其中,所述向量乘法指令使用与算术逻辑单元和整数乘法指令不同的执行单元资源组,并且因此可以与所述指令中的任一个同时执行。
12.根据权利要求8所述的多线程处理器,其中,使用多于处理器线程总数的多个阶段,流水线化所述向量乘法和归约指令。
13.根据权利要求8所述的多线程处理器,其中,所述向量乘法和归约指令包括具有至少11个阶段的流水线。
14.根据权利要求13所述的多线程处理器,其中,所述向量乘法和归约指令包括指令解码阶段、向量寄存器组读取阶段、至少两个乘法阶段、至少两个加法阶段、累加器读取阶段、多个归约阶段和累加器回写阶段。
15.根据权利要求14所述的多线程处理器,其中,所述累加器读取阶段与一个加法阶段合并。
16.根据权利要求8所述的多线程处理器,其中,用于各向量乘法和归约指令的流水线彼此相对移位多个流水线阶段。
17.根据权利要求1所述的多线程处理器,其中,所述流水线指令包括向量乘法和归约指令,其具有计算周期长于多线程处理器的发布周期的流水线。
18.根据权利要求1所述的多线程处理器,其中,所述处理器包括集成电路。
19.一种集成电路,包括:
存储器;和
与存储器耦合的多线程处理器;
所述多线程处理器包括:
多个硬件线程单元;
与线程单元耦合用来解码从线程单元接收的指令的指令解码器;以及
用于执行解码的指令的多个执行单元;
其中,所述多线程处理器被配置用来控制与各个硬件线程单元相关的多个线程的指令发布顺序;
其中,在给定处理器时钟周期,只有指定的一个线程被允许发布一个或多个指令,根据指令发布顺序,被允许发布指令的指定线程在多个时钟周期上变化;以及
其中,以至少允许给定一个线程支持多个并发指令流水线的方式,来流水线化所述指令。
20.一种用于多线程处理器的方法,所述多线程处理器包括与各线程相关的多个硬件线程单元、与线程单元耦合用来解码从线程单元接收的指令的指令解码器、和用于执行解码的指令的多个执行单元,所述方法包括下列步骤:
在给定处理器时钟周期,仅允许指定的一个线程发布一个或多个指令;
根据指令发布顺序,改变被允许在多个时钟周期上发布指令的指定线程;以及
以至少允许给定一个线程支持多个并发指令流水线的方式,流水线化所述指令。
CNA2005800157030A 2005-04-07 2005-04-07 每个线程具有多个并发流水线的多线程处理器 Pending CN101322111A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2005011614 2005-04-07

Publications (1)

Publication Number Publication Date
CN101322111A true CN101322111A (zh) 2008-12-10

Family

ID=40181267

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2005800157030A Pending CN101322111A (zh) 2005-04-07 2005-04-07 每个线程具有多个并发流水线的多线程处理器

Country Status (1)

Country Link
CN (1) CN101322111A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876892A (zh) * 2010-05-20 2010-11-03 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
CN103221938A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 移动数据的方法和装置
WO2015035870A1 (zh) * 2013-09-13 2015-03-19 华为终端有限公司 多cpu调度方法及装置
CN104699460A (zh) * 2013-12-04 2015-06-10 美国亚德诺半导体公司 线程偏差计数器
CN108255519A (zh) * 2016-12-29 2018-07-06 展讯通信(上海)有限公司 同步多线程处理器的浮点指令处理方法及装置
CN109257280A (zh) * 2017-07-14 2019-01-22 深圳市中兴微电子技术有限公司 一种微引擎及其处理报文的方法
CN109697084A (zh) * 2017-10-22 2019-04-30 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
CN113138900A (zh) * 2021-04-27 2021-07-20 上海淇玥信息技术有限公司 一种数据采集处理方法、装置和电子设备
CN113986585A (zh) * 2021-12-29 2022-01-28 深圳微品致远信息科技有限公司 报文处理方法、装置、计算机设备和存储介质

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876892A (zh) * 2010-05-20 2010-11-03 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
CN101876892B (zh) * 2010-05-20 2013-07-31 复旦大学 面向通信和多媒体应用的单指令多数据处理器电路结构
CN103221938A (zh) * 2010-11-18 2013-07-24 德克萨斯仪器股份有限公司 移动数据的方法和装置
CN103221938B (zh) * 2010-11-18 2016-01-13 德克萨斯仪器股份有限公司 移动数据的方法和装置
WO2015035870A1 (zh) * 2013-09-13 2015-03-19 华为终端有限公司 多cpu调度方法及装置
CN104699460A (zh) * 2013-12-04 2015-06-10 美国亚德诺半导体公司 线程偏差计数器
US9697005B2 (en) 2013-12-04 2017-07-04 Analog Devices, Inc. Thread offset counter
CN104699460B (zh) * 2013-12-04 2017-11-14 美国亚德诺半导体公司 数字信号处理器、计算机可读存储介质和执行流水线多阶段循环的方法
CN108255519A (zh) * 2016-12-29 2018-07-06 展讯通信(上海)有限公司 同步多线程处理器的浮点指令处理方法及装置
CN108255519B (zh) * 2016-12-29 2020-08-14 展讯通信(上海)有限公司 同步多线程处理器的浮点指令处理方法及装置
CN109257280A (zh) * 2017-07-14 2019-01-22 深圳市中兴微电子技术有限公司 一种微引擎及其处理报文的方法
CN109697084A (zh) * 2017-10-22 2019-04-30 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
CN109697084B (zh) * 2017-10-22 2021-04-09 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
CN113138900A (zh) * 2021-04-27 2021-07-20 上海淇玥信息技术有限公司 一种数据采集处理方法、装置和电子设备
CN113138900B (zh) * 2021-04-27 2023-06-16 上海淇玥信息技术有限公司 一种数据采集处理方法、装置和电子设备
CN113986585A (zh) * 2021-12-29 2022-01-28 深圳微品致远信息科技有限公司 报文处理方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
KR101253549B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드프로세서
JP3547482B2 (ja) 情報処理装置
US9830158B2 (en) Speculative execution and rollback
CN101322111A (zh) 每个线程具有多个并发流水线的多线程处理器
EP0473420A2 (en) Virtual long instruction word memory architecture for digital signal processor
JP3745039B2 (ja) 遅延命令を有するマイクロプロセッサ
EP3513281A1 (en) Vector multiply-add instruction
TW201203110A (en) Mapping between registers used by multiple instruction sets
JP2007533006A (ja) 複合命令形式および複合オペレーション形式を有するプロセッサ
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
JPH03174626A (ja) データ処理装置
JP3510729B2 (ja) 命令実行方法および命令実行装置
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
EP3433724B1 (en) Processing vector instructions
JP2861234B2 (ja) 命令処理装置
Kong Interrupt Support on the ρ-VEX 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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20081210