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

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

【技术实现步骤摘要】

本专利技术涉及处理器
,具体涉及一种多线程处理器的线程取指调度方法、系统和多线程处理器
技术介绍
多线程处理器可以让同一个处理器上的多个线程同步执行并共享处理器上的运算和访存资源,可最大限度的实现多发射、乱序的处理,提高处理器运算资源的利用率,缓和由于同个线程内指令的数据依赖或访存缺失带来的延时。由于有多个线程需要执行,因此,多线程处理器前端需要选择合适的调度策略选择如何轮流为线程取指,如:某个处理器有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.一种多线程处理器的线程取指调度方法,其特征在于,包括:
为第一线程进行取指;
判断当前取到的指令是否包括第一类指令,如果是,暂停为所述第一线
程在所述第一类指令之后的取指;所述第一类指令为能改变指令流且无法预
知目标地址的指令。
2.根据权利要求1所述的方法,其特征在于,在所述采用预先设置的策
略为第一线程进行取指之前,所述方法还包括:
在指令进入指令缓存之前,对指令进行预译码,将其中的第一类指令打
上标记。
3.根据权利要求2所述的方法,所述判断当前取到的指令是否包括第一
类指令包括:
判断所述当前取到的指令是否包括带有标记的指令。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述暂停对所述
第一线程在所述第一类指令之后的取指包括:将所述第一线程的准备好ready
标识置为无效和/或将降低所述第一线程的取指调度优先级。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
判断所述第一类指令是否执行完毕,如果是,将所述第一线程的准备好
ready标识置为有效和/或将提高所述第一线程的取指调度优先级。
6.一种多线程处理器的线程取指调度系统,其特征在于,包括:
取指单元,用于为第一线程进行取指;
第一判断单元,用...

【专利技术属性】
技术研发人员:李晔侯锐冯煜晶王曦爽
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1