首页> 中国专利> 多线程处理器的线程取指调度方法、系统和多线程处理器

多线程处理器的线程取指调度方法、系统和多线程处理器

摘要

本发明实施例涉及处理器技术领域,公开了一种多线程处理器的线程取指调度方法、系统和多线程处理器。其中,该方法包括:为第一线程进行取指;判断当前取到的指令是否包括第一类指令,如果是,暂停为所述第一线程在所述第一类指令之后的取指;所述第一类指令为能改变指令流且无法预知目标地址的指令。实施本发明实施例,可以节省处理器功耗,提高取指单元为其它线程取指的机会。

著录项

  • 公开/公告号CN104298552A

    专利类型发明专利

  • 公开/公告日2015-01-21

    原文格式PDF

  • 申请/专利号CN201310295546.X

  • 发明设计人 李晔;侯锐;冯煜晶;王曦爽;

    申请日2013-07-15

  • 分类号

  • 代理机构深圳市深佳知识产权代理事务所(普通合伙);

  • 代理人唐华明

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 04:02:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-19

    授权

    授权

  • 2015-03-04

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20130715

    实质审查的生效

  • 2015-01-21

    公开

    公开

说明书

技术领域

本发明涉及处理器技术领域,具体涉及一种多线程处理器的线程取指调 度方法、系统和多线程处理器。

背景技术

多线程处理器可以让同一个处理器上的多个线程同步执行并共享处理器 上的运算和访存资源,可最大限度的实现多发射、乱序的处理,提高处理器 运算资源的利用率,缓和由于同个线程内指令的数据依赖或访存缺失带来的 延时。

由于有多个线程需要执行,因此,多线程处理器前端需要选择合适的调 度策略选择如何轮流为线程取指,如:某个处理器有16个硬件线程,每个时 钟周期取指单元只能选择为其中的1个线程为其取指。为某个线程取指令指的 是把该线程的指令从I-Cache(Instruction Cache,指令缓存)中取出来,放入 该线程对应的指令缓冲队列(Instruction Buffer,IB)中。

目前线程取指调度策略通常有:轮询或固定优先级的线程取指调度策略。

轮询是指:每个周期固定的给某个线程取指,所有线程轮流被选中,例 如对于有16个线程的处理器(线程编号为0~15),我们可以轮流的选择线程 0→1→2→3……15→0……。如果某个时钟内被选择的线程的IB满了,则暂停 为该线程取指,取指单元(Instruction Fetch Unit,IFU)在该周期为空操作。 作为优化,现有很多的多线程处理器会检测每个线程的状态,每次都从能够 为其取指的线程中进行轮询,这样选出来的线程IB就不是满的,取指单元可 以为其进行取指。

固定优先级指:不同线程具有不同的优先级权重,若多个线程同时准备 好,则只选择其中优先级最高的线程为其服务。该优先级权重的衡量方法有 很多,如:线程IB中指令越少优先级越高、线程被停顿越久优先级越高等。

现有技术中,每个硬件线程都有独立的IB,取指单元通过检测不同线程 的状态,采用轮询或固定优先级的方法挑选出一个已准备好的线程(即该线 程IB可以填入新的指令,且该线程无ITLB miss(指令旁路转换缓冲缺失, Instruction Translation Lookup Buffer miss)或I-Cache miss(指令缓存缺失)等) 并为该线程取指,从I-Cache取出指令后放入该线程的IB中。

在大多数指令集中,有这么一类指令很特殊,它们在执行时,需要其后 面所有的指令都停顿住,直到该指令执行完成,该线程后面的指令才能发射 执行,我们就称这类指令带Barrier(拦截)语义。这类指令中有很大一部分指 令在执行时会改变指令流(即下一条指令的PC地址)而无法对该指令流向进 行预测,因此,该指令执行完后需要把其后面的指令清除,重新从正确的PC 处开始取指,该线程才能继续执行。

多线程处理器执行到某个线程中的会改变指令流而无法对该指令流向进 行预测的指令(例如ARM(Advanced RISC Machines,先进精简指令集机器) 中的ISB(Instruction Synchronization Barrier,指令同步壁垒)、HVC(Hypervisor  Call,超级管理程序调用)、SVC(Supervisor Call,操作系统调用)、SMC(Secure  Monitor Call,安全监控程序调用)等指令)时,该指令从IB中发射出去后, 剩余的指令会被阻塞在IB中,直到执行该指令的模块标识该指令执行完毕。 然后将发起清空该线程IB的请求,前端线程取指单元重新为该线程取指。

现有技术中的上述调度取指方法存在以下缺点:该方法为线程调度取指 的方式较单一,且某个线程在取到这类会改变指令流而无法对该指令流向进 行预测的指令后,如果它的优先级较高且它的IB仍然能填入新的指令,则取 指单元将继续为该线程进行取指,但由于该类指令的特性,该线程继续取到 的指令最终将会被清除掉,属于无效的取指,这样既浪费了功耗,也降低了 取指单元为其它线程取指的机会。

发明内容

本发明实施例所要解决的技术问题是提供一种多线程处理器的线程取指 调度方法、系统和多线程处理器,用于克服现有技术中存在的无效取指问题。

本发明实施例提供一种多线程处理器的线程取指调度方法,包括:

为第一线程进行取指;

判断当前取到的指令是否包括第一类指令,如果是,暂停为所述第一线 程在所述第一类指令之后的取指;所述第一类指令为能改变指令流且无法预 知目标地址的指令。

相应的,本发明实施例还提供一种多线程处理器的线程取指调度系统, 包括:

取指单元,用于为第一线程进行取指;

第一判断单元,用于判断当前取到的指令是否包括第一类指令;所述第 一类指令为能改变指令流且无法预知目标地址的指令;

所述取指单元,还用于当所述第一判断单元的判断结果为否时,暂停为 所述第一线程在所述第一类指令之后的取指。

相应的,本发明实施例还提供一种多线程处理器,所述多线程处理器包 括如上所述的多线程处理器的线程取指调度系统。

本发明实施例中提供的多线程处理器的线程取指调度方法、系统和多线 程处理器可以在为一个线程取到第一类指令之后,暂停对该线程的取指,这 样可以克服现有技术中存在的无效取指的缺点,节省处理器功耗,同时由于 暂停为第一线程取指,也提高了取指单元为其它线程取指的机会,进而提升 多线程处理器的处理效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性 劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种提供的多线程处理器的线程取指调度方 法的流程第一示意图;

图2是本发明实施例提供的一种提供的多线程处理器的线程取指调度方 法的流程第二示意图;

图3是本发明实施例提供的一种提供的多线程处理器的线程取指调度系 统的结构第一示意图;

图4是本发明实施例提供的一种提供的多线程处理器的线程取指调度系 统的结构第二示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不 是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出 创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例中提供了一种多线程处理器的线程取指调度方法、系统和 多线程处理器,其核心思想是在为某个线程取到第一类指令时,暂停为该线 程的取指,这样可以克服现有技术中的无效取指问题。以下分别进行详细说 明。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等 (如果存在)是用于区别类似的对象,而不必用于描述特定的对象、顺序或 先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述 的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实 施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不 排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或 设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的 或对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参见图1,图1是本发明实施例提供的多线程处理器的线程取指调度 方法的流程示意图。如图1所示,本发明实施例提供的多线程处理器的线程 取指调度方法可以包括以下内容:

101、为第一线程进行取指。

该实施例中,第一线程并不特指某一个特别的线程,可以指代任意一个 线程。

该实施例中,取指单元可以采用预先设定的策略(例如轮询或固定优先 级的策略)为当前的线程进行取指,将取到的指令放入该线程的IB中,每次 根据终端指向Cache Line(缓存线)位置的不同取回来的指令数目可能有所差 异,通常是0~4条。

102、判断当前取到的指令是否包括第一类指令,如果是,执行步骤103, 否则返回步骤101。

其中,第一类指令为能改变指令流且无法预知目标地址的指令。

103、暂停为上述第一线程在上述第一类指令之后的取指。

优选地,如果取指单元一次取回多个指令,其中包括第一类指令,则在 将第一类指令放入该第一线程的IB之后,可不将第一类指令之后的其它指令 放入该第一线程的IB,第一类指令之后的指令可被丢弃处理。

上述实施例提供的多线程处理器的线程取指调度方法可以在为一个线程 取到第一类指令之后,暂停对该线程的取指,这样可以克服现有技术中存在 的无效取指的缺点,节省处理器功耗,同时由于暂停为第一线程取指,也提 高了取指单元为其它线程取指的机会,进而提升多线程处理器的处理效率。

在本发明的一些实施例中,如图2所示,在上述的101之前,该方法还 可以包括:

201、在指令进入指令缓存区(I-Cache)之前,对指令进行预译码,将 其中的第一类指令打上标记。

需要说明的是,具体的,至于在第一类指令上打上何种标记,可以预先 设定,本领域技术人员可以根据实际情况进行合适的设定,在此不予具体的 限制。

这样,如图2所示,上述步骤102可具体包括:判断当前取到的指令是 否包括带标记的指令,如果是执行步骤103,否则返回步骤101。

在本发明的一些实施例中,上述步骤103可以包括:

将上述第一线程的ready(准备好)标识置为无效;和/或

降低上述第一线程的取指调度优先级。

对于取指单元采用轮询的策略为各线程取指的情况,将第一线程的ready 标识置为无效之后,则取指单元不会再为第一线程取指;

对于取指单元采用固定优先级的策略为各线程取指的情况,在将第一线 程的优先级降低之后,则取指单元则会先为其它优先级高的线程进行取指, 优选地,可将第一线程的优先级降至最低级。

在本发明的一些实施例中,在上述103之后,该方法还可包括:

202、判断上述第一类指令是否执行完毕,如果是,执行步骤203,否则 返回步骤202。

203、将第一线程的ready标识置为有效和/或将提高上述第一线程的取指 调度优先级。

对于取指单元采用轮询的策略为各线程取指的情况,将第一线程的ready 标识置为有效之后,则取指单元可以再为第一线程取指;

对于取指单元采用固定优先级的策略为各线程取指的情况,在将第一线 程的优先级提高之后,则取指单元则可优先为优先级高的第一线程进行取指, 优选地,可将第一线程的优先级恢复至降低之前的优先级,或者将第一线程 的优先级提高至最高级。

下面通过具体的实例来描述本发明提供的多线程处理器的线程取指调度 方法:

ARM中的ISB指令就是本发明中所述的能改变指令流且无法预知目标 地址的指令,本发明对ISB指令调度的方法如下:

步骤一:预译码(pre-decode)模块检测到ISB指令,把该指令的标识位 (ISB bit)置1(打上标记);

步骤二:取指单元(IFU)中含有两个组(group),上面组优先级高,下 面的组优先级低,每个组内采用轮询的方法选取准备好的线程。在该时钟周 期选择了准备好的线程1;

步骤三:在为线程1取指时,发现了一条ISB指令;

步骤四:IFU把ISB指令放入该线程1的IB后,该周期不会再将ISB 后续的指令放入该线程1的IB,并将线程1的ready标识清除(即将ready 标识置为无效),即认为该线程1没准备好;

步骤五:执行ISB的模块(I-Cache维护模块)在执行完ISB指令后, 通知IFU,让其恢复线程1的ready标识(即是将线程1的ready标识置为有 效);

步骤六:IFU置位线程1的ready位,且此时线程1的IB为空,满足高 优先级的条件,进入高优先级的组等待IFU为其取指。

请参考图3,图3是本发明提供的多线程处理器的线程取指调度系统的 结构示意图。如图3所示,本发明提供的多线程处理器的线程取指调度系统 包括:

取指单元301,用于为第一线程进行取指;

第一判断单元302,用于判断当前取到的指令是否包括第一类指令;其中, 第一类指令为能改变指令流且无法预知目标地址的指令;

取指单元301,还用于当第一判断单元302的判断结果为否时,暂停为 上述第一线程在上述第一类指令之后的取指。

需要说明的是,该实施例中,第一线程并不特指某一个特别的线程,可 以指代任意一个线程。

该实施例中,取指单元可以采用预先设定的策略(例如轮询或固定优先 级的策略)为当前的线程进行取指,将取到的指令放入该线程的IB中,每次 根据终端指向Cache Line(缓存线)位置的不同取回来的指令数目可能有所差 异,通常是0~4条。

优选地,如果取指单元一次取回多个指令,其中包括第一类指令,则在 将第一类指令放入该第一线程的IB之后,可不将第一类指令之后的其它指令 放入该第一线程的IB,第一类指令之后的其它指令可被丢弃处理。

上述实施例提供的多线程处理器的线程取指调度方法可以在为一个线程 取到第一类指令之后,暂停对该线程的取指,这样可以克服现有技术中存在 的无效取指的缺点,节省处理器功耗,同时也提高了取指单元为其它线程取 指的机会。

在本发明的一些实施例中,如图4所示,该系统还可包括:

预译码单元303,用于在指令进入指令缓存之前,对指令进行预译码, 将其中的第一类指令打上标记。

需要说明的是,具体的,至于在第一类指令上打上何种标记,可以预先 设定,本领域技术人员可以根据实际情况进行合适的设定,在此不予具体的 限制。

在本发明的一些实施例中,第一判断单元302可具体用于通过判断当前 取到的指令是否包括带标记的指令来进行当前取到的指令是否包括第一类指 令的判断。

在本发明的一些实施例中,取指单元301可具体采用如下的方法来实现 暂停对上述第一线程在上述第一类指令之后的取指:

取指单元301将上述第一线程的准备好ready标识置为无效;和/或

取指单元301降低上述第一线程的取指调度优先级。

对于取指单元采用轮询的策略为各线程取指的情况,将第一线程的ready 标识置为无效之后,则取指单元不会再为第一线程取指;

对于取指单元采用固定优先级的策略为各线程取指的情况,在将第一线 程的优先级降低之后,则取指单元则会先为其它优先级高的线程进行取指, 优选地,可将第一线程的优先级降至最低级。

在本发明的一些实施例中,如图4所示,该系统还可包括:

第二判断单元304,用于判断上述第一类指令是否执行完毕;

取指单元301还可用于当第二判断单元304的判断结果为是时,将上述 第一线程的ready标识置为有效和/或提高上述第一线程的取指调度优先级。

对于取指单元采用轮询的策略为各线程取指的情况,将第一线程的ready 标识置为有效之后,则取指单元可以再为第一线程取指;

对于取指单元采用固定优先级的策略为各线程取指的情况,在将第一线 程的优先级提高之后,则取指单元则可为优先级高的第一线程进行取指,优 选地,可将第一线程的优先级恢复至降低之前的优先级,或者将第一线程的 优先级提高至最高级。

本发明还提供一种多线程处理器,该处理器包括上述实施例描述的多线 程处理器的线程取指调度系统,具体内容可参考上述实施例的描述,在此不 予赘述。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可 读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only  Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或 光盘等。

以上对本发明实施例所提供的多线程处理器的线程取指调度方法、系统 和多线程处理器进行了详细介绍,本文中应用了具体个例对本发明的原理及 实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及 其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具 体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理 解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号