多线程处理器及其多线程处理方法

文档序号:6610014阅读:247来源:国知局
专利名称:多线程处理器及其多线程处理方法
技术领域
本发明涉及处理器,具体地说涉及在处理器中进行多线程并行处理。
背景技术
处理器,特别是嵌入式处理器,越来越广泛地应用在移动通信、 数字消费电子和智能控制设备等领域,其功能已由单一走向多元化。 在同一个处理器中往往需要运行处理能力和特性均有所不同的应用程 序。以便携式数字信息产品来说,既有大量实时的数字音频和视频处 理,同时还要运行系统软件,处理通信协议/信令及用户交互信息, 图1示意了一种现有技术的双处理器核架构。该架构包括一个微处理
器核(MCU)和一个数字信号处理器(DSP)核。微处理器核在低功 耗下运行实时操作系统,进行通信和交互等多种处理。DSP核进行高 速实时数字运算。CPU核和DSP核之间往往需要通信。然而,这样的 体系存在一定的功能重叠,比如CPU核和DSP核各自有自己的存储器、 寄存器文件、通用寄存器(GPR)、存取单元、取指令单元、指令发射 单元和总线等等,存在一定的硬件资源浪费。其次,在运行的时候, 往往出现一个处理器核空闲而另一个处理器核忙的情形,直接限制了 处理性能。第三,在双核环境下用户无法像开发单处理器程序一样去 开发双核应用系统,需要在不同的平台上分别完成CPU核和DSP核的 编程、调试、编译优化和连;t几测试的过程。
因此,迫切地需要有一种能够克服以上问题的新的处理器架构。

发明内容
根据第一方面,本发明提供一种并行处理多个线程的处理器,其 中所述多个线程具有指令并行性;所述处理器包括架构性存储,分别 为多个线程提供独立的指令和数据存放;指令发射单元,读取所述多 个线程的指令并且将其发射到执行引擎;执行引擎,为多个线程共享, 对来自指令发射单元的指令加以执行。
根据本发明的第二方面,提供一种处理器并行处理多个线程的方 法,其中所述多个线程具有指令并行性,所述处理器包括为多个线程
提供独立的指令和数据存放的架构性存储,指令发射单元和执行引擎; 所述方法包括指令发射单元发射所述多个线程的指令;执行引擎以多 个线程共享的方式执行发射的指令。
优选地,所述多个线程来自不同应用程序。
本发明避免了在双核方案中复制执行流水线的需要,允许硬件资 源的较好利用,在多个处理线程之间达到了较好的负载平衡,使芯片 的成本大为降低。


下面将参照附图对本发明的优选实施方案进行更详细的说明,其

图1示意了一种现有技术的双处理器核架构;
图2是根据本发明一个实施方案的双线程处理器核的结构框图3是对分支指令进行处理的示意图4是根据本发明一个实施方案的双线程控制和管理的示意以及
图5是根据本发明的一个实施方案的片上系统(SoC系统)的结构图。
具体实施例方式
本发明的处理器采用了基于单个可编程引擎进行多线程处理的集 成模型。它没有采用两个分离的MCU和DSP核来进行不同应用的处理。 与之相反,本发明在单个核内以多线程模式进行有关处理。
为简化说明起见,下文以双线程模式为例来描述本发明的各个具 体实施方案。
图2是根据本发明一个实施方案的双线程处理器核的结构框图。 该处理器核经配置可以同时处理来自不同应用程序的两个线程,即线 程0和线程1。线程0和线程1的指令分别独立存储在指令高速緩冲 存储器(简称指令高速緩存)的不同区域。换句话说,不同线程的指 令高速緩存或其区域应当在物理或逻辑上是分离的。
如图2所示,处理器核包括取指单元210、指令发射单元230和共 享的执行引擎250。取指单元210从指令高速緩存202分别取出线程0 和1的指令。指令发射单元230从中选择可执行的指令,送往执行引 擎250执行。
指令高速緩存202可以集成于处理器核内,也可以位于处理器核外。
下文进一步说明处理器核的具体结构。
取指单元210包括两个程序计数器(PC ) PCO和PC1、取指逻辑单 元212、指令緩冲单元214、和PC控制器216。
PCO和PC1产生分别指明线程0和线程1的下一组指令地址的程序 计数(PC)值。PC0和PC1可以是能够产生程序计数值的常规设计的 计数器,也可以包括增量计数器、分支检测逻辑和其它并非本发明关 键的特征。在一个例子中,PC0和PC1分别由start — pcO和start-pel 信号提供初始PC值。
取指逻辑单元212对PCO和PC1产生的PC值进行处理,并且将处 理后的PC值送往指令高速緩存。所述处理可以是交替选择PC值,也 可以是将PC值并行送往指令高速緩存。
在一个优选实施方案中,取指逻辑单元212是一个多路选择器, 用于在每个时钟周期交替从PC0和PC1产生的两个PC值中选择一个 PC值,并且将之送往指令高速緩存。
指令高速緩存202根据接收到的PC值,取出相应的指令,并且将 之送给指令緩冲单元214。优选地,当指令高速緩存未命中时,可以 从外部SDRAM存储器提取指令。另外,处理器核可以为每个线程配备 进出指令高速緩存202的专用线路,以避免这2个线程发生冲突。
指令緩冲单元214接收和存放来自指令高速緩存的线程0和线程1 的指令,维持每个线程的程序次序并且为指令发射单元230提供每个 线程的指令。在一个优选实施方案中,指令緩冲单元210为每个线程 提供数个(比如4)指令緩冲区。如此,即便在由于分支预测或指令 高速緩存未命中而导致指令提取停顿的时候,指令緩冲区也保持足够 的指令供执行用。
如果指令緩冲单元214发现某个线程的指令緩冲区满,则发该线 程緩沖区满信号buf-full给PC控制器216。后者将指示该线程对应 的程序计数器,PC0或PC1,使之暂停计数。
指令发射单元230从指令緩沖单元214接收线程0和线程1的指 令,并且对线程0和线程1的指令进行沖突检查;然后将通过冲突检 查的指令发射给执行引擎250。指令发射单元230可以选择任一线程 的指令,而不管上一次选择的指令来自哪一个线程。
执行引擎250包括存取单元(LS ) 252,算术逻辑/存取(ALU/LS ) 单元254,算术逻辑(ALU) 256,乘法累加单元(MAC) 258和固定功 能单元260。固定功能单元260包含专用运算硬件,执行比如快速傅 立叶变换(FFT)。
执行引擎250可以包括任意数量的执行单元,每个执行单元可以 采用 一般意义上的常规设计。
对于不同的待执行指令,处理器核可以选择不同的指令执行单元 接收该指令并且加以执行。根据指令选择指令执行单元属于常规技术, 不是本发明的关键所在。
在一个优选实施方案中,双线程处理器核是一个多发射超标量机。 比如,指令发射单元可以将例如4个指令同时送往不同的执行单元。 多发射特征可以令处理器核利用现有的指令级并行(ILP)来实现性 能目标,而不需要过高的时钟频率。在一个例子中,每个时钟周期发 射的指令可以按任意需要的组合从候选线程的指令中选取,比如可以 限定为每个时钟周期每线程一个指令,也可以允许从同一线程发射多 个指令。
在一个优选实施方案中,算术逻辑/存取(ALU/LS )单元254通过 连接线向PC控制器216提供信号,指示PC控制器216条件分支此前 被错误预测并且需要恢复正确的PC值。需要说明,算术逻辑/存取 (ALU/LS )单元254也可以由具有算术逻辑功能的其它指令执行单元 代替。
处理器核也包括两个通用寄存器组GPRO和GPR1,分别存放两个线 程的操作数,便于执行单元读取。另外,也可以供执行单元回写两个 线程的执行结果。GPRO例如是由32个32比特寄存器构成的寄存器组, 用于线程0。 GPR1例如是由32个16比特的寄存器构成的寄存器组, 为线程1所用。处理器核IOO还可以包括两个控制寄存器(CR),或 者其它的架构性存储。 在一个优选实施方案中,取指单元210包括线程控制器240,它根 据某个线程的运行线程(active-thread)信号控制与该线程相关PC 值的产生与指令的提取。在进一步优选的实施方案中,如果当前运行 的线程(比如线程0)判断有新的独立线程(比如线程1)需要执行的 时候,则产生运行线程信号。这样,线程控制器240通知前述的取指 逻辑单元212与指令緩冲单元214,允许取指逻辑单元212选择与该 线程有关的PC值,将之送往指令高速緩存202,并且允许指令緩冲单 元214接收该线程的指令。
由上文可见,本发明采用独立的架构性存储为2个线程提供各自 指令和数据的存放,同时流水线被统一而且为2个线程共享,从而取 得较好的负栽平衡和硬件利用。
普通技术人员知道,线程中不可避免存在着一些分支指令。图3 是对分支指令进行处理的示意图。
如图3所示,当发现分支指令的时候,分支预测逻辑320预测分 支的目标地址,并且将其发往PC控制器230中的PC值多路选择器330。
算术逻辑单元ALU340在执行分支指令后将确认该预测是否正确, 并且将确认信号发送给PC值多路选择器330。算术逻辑单元ALU340 可以是任何具有ALU功能的执行单元。
同时,PC控制器230还包括一个PC备份部分332和PC增量部分 334。 PC备份部分332保存有此前所取指令PC值的备份,PC增量部分 334存储正常的PC增量值。
如果预测正确,表明预测的地址有效,则确认信号指示PC值多路 选择器330选择预测的目标地址,将之送往PC310加以更新。如果预 测错误,则选择备份的PC值。在没有分支发生的情况下,PC310按正 常方式工作,选择正常的PC增量值并且将之加到当前PC值上,产生 新的PC值。
在从SRAM取指令的情况下,鉴于SRAM的访问时间与时钟周期相 比并不算短,加上从预测到确认分支的时间,有可能会超过一个时钟 周期,难以使PC在同一个时钟周期内进行正确的变更,因此有可能导 致在下一时钟周期所取指令被作废。如前文所述,通过线程O和线程 l交替取指,即便发生分支,相应的PC也能够及时变更,避免时钟周 期空转。
为了达到双核设计上最高的MIPS数,在一个实施方案中,处理器 核采用了从取指令到结果回写的多发射指令(例如4个发射)路径。 有时难以在实施于典型处理器上的任何正常应用程序中找到如此高的 指令级并行ILP。然而,本发明的处理器核是双线程机,每个线程代 表通常运行于两个不同核上的两个独立应用程序之一。结果,在每个 线程的应用程序上所需的并行度实际上是2而不是4,这样更易于完
全开发硬件的峰值发射率。
图4是该实施方案的双线程控制和管理的示意图。 如图4所示,在每个周期,来自线程0和线程1之一的4个指令 从指令高速緩存取出,送入该线程的指令緩冲区410或420之内。如 前文所述,线程0和线程1指令的提取可以是交替进行的。指令緩冲 区即便在由于分支预测或指令高速緩存错失而导致指令提取停顿的时 候也保持足够的指令供执行用。
然后,从两个线程的指令緩冲区410和420中读取指令到指令发 射单元220。
在一个优选实施方案中,处理器核是一个顺序机器,只有最早的 一条或多条指令将被读取,以查看它们能否被发射。
在一个优选实施方案中,从不同线程的指令緩冲区读取的指令数 不同。设定从线程0读取的指令数为2,从线程1读取的指令数为3。 这样做是为了因应线程所需性能的不同。
指令发射单元220包括两个冲突检查单元430和440,分别对线程 0的指令和线程1的指令进行冲突检查。冲突检查的结果chk stats 将送往线程选择器460。
线程选择器460根据各个指令的沖突检查结果chk stats,产生发 射选择信号,并且用之控制发射多路选择器450。线程选择器460可 以按各种方式配置,在线程0和线程1之间作出选择,
在一个优选实施方案中,线程选择器460包括优先级逻辑电路 462,它基于线程的类型和/或特点,为线程设定不同的处理优先级。 在一个例子中,线程1相比线程0而言有较高的优先级。如果所有条 件都相同,也就是所有的5个指令不存在危险,那么来自线程1的3 个指令和来自线程o的i个指令将会被发射往执行单元。线程0的另
一个指令由于优先级低而需要等待到下一时钟周期。在另一个例子中,
优先级逻辑电路462经配置为线程0和1提供同等的优先级,例如, 交替地选择线程0和1。在又一个例子中,优先级逻辑电路462可以 选择线程0和1中有效时间最久的线程。
发射多路选择器450根据发射选择信号选择待执行指令,送往执 行引擎,供相关执行单元执行。
如前文所述,线程0的指令数例如为2,线程1的指令数例如为3。 由于在大部分时间会有来自线程0和线程1的指令可供选择,因此依 然有较高的概率实现来自线程O和线程1的4个指令的最大发射率。
执行引擎包含5个执行单元,以支持每个周期发射给它们的4个 指令。
为了减少在发射阶段进行寄存器端口争用检查的复杂性,两个线 程的寄存器文件将配有充足的端口,为这2个线程的每一个提供最大 的发射率。如果假定每个指令有2个源操作数和l个目的操作数,线 程0的32x32比特寄存器文件将会有4个读端口和2个写端口,以支 持为线程O所发射的2个指令。同样地,线程1的16x32比特寄存器 文件将会有6个读端口和3写端口 ,支持3个常规RISC指令或者2个 常规RISC指令加上一对16比特的MAC指令(这实际上等于对于线程 1而言有4个发射)。
图5是根据本发明的一个实施方案的片上系统(SoC系统)的结构 图。如图5所示,SoC系统包括双线程处理器核500,启动只读存储器 (BootRom) 510,指令高速緩存(I-Cache) 520,数据高速緩存 (Data-Cache) 530,静态随机存储器(SRAM) 540,中断控制器550, DMA560,系统管理单元570和外部接口 580。
双线程处理器核500可以同时执行两个线程的处理。这两个线程 可以来自彼此独立的应用程序,也可以来自同一个应用程序。在一个 例子中,处理器核500采用线程O进行基带处理,线程l进行操作系 统和其它的L2/L3处理。
指令高速緩存520可以采用任何常规设计。它分为两部分,分别 存储待执行线程O和线程1的指令。这两部分彼此应当独立。
数据高速緩存530用于存放与待执行线程指令有关的数据。
处理器核500分别与指令高速緩存520和数据高速緩存530相连, 从指令高速緩存520和数据高速緩存530中读取线程指令和相关数据, 从而进行相应的线程处理。
此外,静态随机存储器(SRAM) 540起内存作用,存放待执行的线 程指令和数据;中断控制器550为处理器核500提供矢量化中断方案; 系统管理单元570广播复位信号;BootRom510供系统内部启动用; DMA560提供存储器和外部设备之间的直接存储器访问;外部接口 580 作用在于将处理器核500连接到系统和外部设备总线,使之能够访问 外部系统资源。
SoC系统还可以配备系统总线接口子系统,即AMBA-AHB总线模块, 在其上可以连接外部接口控制器、SDRAM存储器控制器、静态存储器 控制器(FLASH/SDRAM) 、 ABB接口控制器、RFIC接口控制器等。
SoC系统还可以配备外围设备总线子系统,即AMBA-APB模块,在 其上可以连接APB桥接器接口控制器、UART接口控制器、SIM卡接口 控制器、小键盘接口控制器、P頻接口控制器等。
上文结合双线程模式对本发明进行了描述。需要指出,这仅是举 例,本发明可以适用于两个以上线程的多线程模式。
低成本和低功耗是处理器设计的两个最为重要的目标。在整个设 计过程中,从架构到实施都需要有效地解决这两个问题。因此,面积 利用率是非常重要的因素,因为面积小即意味着低成本和低功耗。
本发明的处理器采用了基于单个可编程引擎进行多线程处理的集 成模型。采用本发明,避免了在双核方案中复制执行流水线的需要, 允许硬件资源的较好利用,在多个处理线程之间达到了较好的负载平 衡,使芯片的成本大为降低。本发明处理器核的多线程模型对编程人 员来说是透明的,它们仍然可以继续将多个线程视为在多个不同硬件 资源上运行的分离任务。
此外,在统一的平台上独立开发一套指令集,该指令集包括典型 的RISC指令集,常用DSP指令,基带专用长指令,协处理器指令,节 约代码大小的16比特指令子集。这套指令集有助于自由地较低成本地 满足目标应用需求。另外,无需在不同的平台上分别完成CPU核和DSP 核的编程、调试、编译优化和连机测试的过程。
本发明的多线程处理器核及其多线程处理方法可以并行处理来自 不同应用程序的多个线程,比如视频和基带处理程序,或者音频和基 带处理程序。它还可以并行处理同 一应用程序的彼此独立的不同线程,本发明的多线程处理器核不仅可以作为嵌入式处理器应用在移动 通信终端、数字消费电子终端和智能控制设备等领域,还可以在其它 领域广泛应用。
显而易见,在此描述的本发明可以有许多变化。比如,根据目标 应用的特点和拟处理线程数,执行引擎中不同的执行单元有不同的数
量(比如,包括两组ALU、 LS, 一个MAC)。
这种变化不能认为偏离本发明的精神和范围。因此,所有对本领 域技术人员显而易见的改变,都包括在本权利要求书的涵盖范围之内。
权利要求
1.一种并行处理多个线程的处理器,所述多个线程具有指令并行性,所述处理器包括架构性存储,分别为多个线程提供独立的指令和数据存放;指令发射单元,读取所述多个线程的指令并且将其发射到执行引擎;执行引擎,为多个线程共享,对来自指令发射单元的指令加以执行。
2. 如权利要求1所述的处理器,其特征在于所述处理器包括指令 緩沖单元,它包含多个指令緩冲区,每个指令緩冲区存放来自指令高 速緩冲存储器的所述多个线程中一个线程的指令。
3. 如权利要求1所述的处理器,其特征在于所述架构性存储包括 多个程序计数器,每个程序计数器产生指示所述多个线程的一个线程 的地址的程序计数值。
4. 如权利要求3所述的处理器,其特征在于所述处理器包括取指 逻辑单元,对来自多个程序计数器的程序计数值进行选择,并且将选择结果送往指令高速緩存。
5. 如权利要求4所述的处理器,其特征在于所述取指逻辑单元是 一个多路选择器,交替选择多个线程的程序计数值。
6. 如权利要求1所述的处理器,其特征在于所述架构性存储包括 多个通用寄存器组,每个通用寄存器组存放与所述多个线程中一个线 程的指令有关的数据。
7. 如权利要求1所述的处理器,其特征在于所述架构性存储包括 多个指令高速緩冲存储部分或单元,每个指令高速緩冲存储部分或单 元存储所述多个线程中一个线程的指令。
8. 如权利要求1所述的处理器,其特征在于所述执行引擎包括存 取单元,算术逻辑/存取单元,算术逻辑单元,乘法累加单元和固定功 能单元中的一部分或全部。
9. 如权利要求1所述的处理器,其特征在于所述处理器包括线程 控制器,根据运行线程信号控制与之相关的线程指令的提取。
10. 如权利要求1所述的处理器,其特征在于所述处理器包括程序 计数控制器,控制程序计数器的计数。
11. 如权利要求1所述的处理器,其特征在于所述指令发射单元包 括多个线程冲突检查单元,分别产生多个线程的指令的冲突检查结果;线程选择器,根据多个线程的指令的冲突检查结果,产生发射选择信号;发射多路选择器,根据发射选择信号,选择指令送往执行引擎。
12. 如权利要求1所述的处理器,其特征在于所述线程选择器包括 一个线程类型优先级逻辑电路,赋予不同线程不同的优先级。
13. 如权利要求1所述的处理器,其特征在于指令发射单元以超标量模式发射指令。
14. 如权利要求1所述的处理器,其特征在于包括分支预测逻辑单 元,基于分支指令预测目标地址;算术逻辑单元,判断预测是否正确, 并且产生确认信号;程序计数选择器,基于预测目标地址和确认信号 产生程序计数值,并且将之用于更新程序计数器。
15. 如权利要求1所述的处理器,其特征在于所述多个线程来自不 同应用程序。
16. 如权利要求1所述的处理器,其特征在于所述多个线程来自同 一应用程序的不同独立部分。
17. —种处理器并行处理多个线程的方法,其中所述多个线程具有 指令并行性,所述处理器包括为多个线程提供独立的指令和数据存放的架构性存储,指令发射单元和执行引擎;所述方法包括指令发射单 元发射所述多个线程的指令;执行引擎以多个线程共享的方式执行发 射的指令。
18. 如权利要求17所述的方法,其特征在于架构性存储包括指令高 速緩存,分别存储多个线程的指令;所述方法包括交替利用与多个线 程有关的程序计数值,从指令高速緩存中提取指令的步骤。
19. 如权利要求17所述的方法,其特征在于所述发射的步骤包括对 多个线程的指令进行冲突检查;从通过冲突检查的指令中选择指令发 射。
20. 如权利要求17所述的方法,其特征在于所述发射的步骤包括基 于线程优先级从所述多个线程的指令选择指令的步骤。
全文摘要
本发明披露了一种并行处理多个线程的处理器和处理器并行处理多个线程的方法。在并行处理多个线程的处理器中,所述多个线程可以来自不同应用程序。所述处理器包括架构性存储,分别为多个线程提供独立的指令和数据存放;指令发射单元,读取所述多个线程的指令并且将其发射到执行引擎;执行引擎,为多个线程共享,对来自指令发射单元的指令加以执行。本发明避免了在双核方案中复制执行流水线的需要,允许硬件资源的较好利用,在多个处理线程之间达到了较好的负载平衡,使芯片的成本大为降低。
文档编号G06F9/38GK101344842SQ200710118588
公开日2009年1月14日 申请日期2007年7月10日 优先权日2007年7月10日
发明者梅思行 申请人:北京简约纳电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1