在CPU中执行指令的方法技术

技术编号:19933670 阅读:26 留言:0更新日期:2018-12-29 04:22
本说明书实施例提供一种在CPU中执行指令的方法,该方法包括,从当前线程队列中提取指令形成指令块,以送入CPU执行单元执行,上述指令块中包含单条跳转指令作为最后一条指令。还将至少一条指令补充到当前线程队列,形成待执行线程队列。并且,根据CPU执行单元的执行结果,确定上述跳转指令的目标指令。接着,判断待执行线程队列中是否包含所述目标指令;如果不包含,则清除所述待执行线程队列,获取该目标指令,并将该目标指令添加到待执行线程队列中。

【技术实现步骤摘要】
在CPU中执行指令的方法
本说明书一个或多个实施例涉及计算机硬件芯片领域,尤其涉及在CPU中执行指令的方法。
技术介绍
在当前的大数据云环境下,需要对海量数据进行存储和处理,对数据的计算速度提出了更高的要求。众所周知,计算速度的决定性因素为中央处理单元CPU的性能。为了实现更高速度的运算,CPU在各个方面,从物理工艺到逻辑控制,都在不断进行改进。例如,为了提升并行处理能力,提出CPU超线程技术,即利用特殊字符的硬件指令,把两个逻辑内核模拟成物理芯片,让单个处理器能使用线程级并行计算,从而兼容多线程并行计算。也就是说,超线程CPU可以在一个物理核的基础上,并行运行2个或更多个线程,从而得到更多可并行指令,提升总体运行性能。另一方面,为了更有效地利用CPU的时钟周期,避免流水线停顿或等待,采用指令预测的方案,进行指令预取和指令预执行。这些方案都在一定程度上提升了CPU的执行效率。然而,指令预测并不总是准确,在指令预测失误的情况下,会严重降低CPU的执行效率。因此,希望能进行进一步改进,从而进一步提升CPU效率。
技术实现思路
本说明书一个或多个实施例描述了一种CPU中执行指令的方法,在原有指令预测的基础上,避免预测错误的指令被执行,进一步提升CPU执行效率。根据第一方面,提供了一种在CPU中执行指令的方法,包括:从当前线程队列中依次提取指令形成指令块,以送入CPU执行单元执行,所述指令块中包含单条跳转指令,且该跳转指令为所述指令块中最后一条指令;将至少一条指令补充到当前线程队列,形成待执行线程队列;根据CPU执行单元的执行结果,确定所述跳转指令的目标指令;判断所述待执行线程队列中是否包含所述目标指令;在所述待执行线程队列中不包含所述目标指令的情况下,清除所述待执行线程队列,获取所述目标指令,并将所述目标指令添加到待执行线程队列中。根据一个实施例,通过以下方式形成指令块:从当前线程队列中读取预定阈值数目的指令,所述预定阈值数目依赖于所述CPU执行单元的数目;判断所述预定阈值数目的指令中是否包含跳转指令;在包含跳转指令的情况下,以该跳转指令为结尾向前截取,将截取的指令作为所述指令块。根据另一实施例,通过以下方式形成指令块:从当前线程队列中读取第一指令;在当前指令块中指令数目未达到预定阈值的情况下,将所述第一指令添加到当前指令块中,其中所述预定阈值依赖于所述CPU执行单元的数目;判断该第一指令是否为跳转指令;在该第一指令为跳转指令的情况下,将所述当前指令块作为所述指令块。在一种可能的设计中,通过以下方式补充指令到当前线程队列:根据指令预测的预测分支,将预测分支对应的至少一条指令补充到当前线程队列。在一种可能的方案中,从已解码缓存中读取对应的指令补充到当前线程队列,以形成待执行线程队列,其中已解码缓存中存储有预取并解码的多条指令。在一种可能的实施方式中,跳转指令为寄存器操作指令,所述指令块还包含至少一条内存操作指令。进一步地,在一个实施例中,在所述至少一条内存操作指令执行完毕之前,即可确定出所述跳转指令的目标指令。根据一种可能的设计,通过以下方式获取目标指令:判断已解码缓存中是否包含所述目标指令,其中已解码缓存中存储有预取并解码的多条指令;在包含的情况下,从所述已解码缓存获取所述目标指令;在不包含的情况下,从内存获取所述目标指令。根据第二方面,提供一种CPU控制器,包括:指令提取逻辑,用于从当前线程队列中依次提取指令形成指令块,以送入CPU执行单元执行,所述指令块中包含单条跳转指令,且该跳转指令为所述指令块中最后一条指令;指令补充逻辑,用于将至少一条指令补充到当前线程队列,形成待执行线程队列;目标确定逻辑,用于根据CPU执行单元的执行结果,确定所述跳转指令的目标指令;判断逻辑,用于判断所述待执行线程队列中是否包含所述目标指令;队列操作逻辑,用于在所述待执行线程队列中不包含所述目标指令的情况下,清除所述待执行线程队列,获取所述目标指令,并将所述目标指令添加到待执行线程队列中。根据第三方面,提供一种中央处理单元CPU,包含第二方面的控制器。通过本说明书实施例提供的方案,按照原有方式进行指令预取,放到已解码缓存和线程队列中,但是执行时,确保同时执行的代码块中至多在最后包含一条跳转指令,并且在跳转指令确定出目标指令之前,不再为线程队列中的后续指令进行重命名&分配可执行资源阶段。在确定出目标指令之后,比较线程队列中的指令与目标指令是否匹配,以此保证只有正确分支得到执行。如此,在利用原有指令预测方案的优势的基础上,避免预测错误的指令被执行导致的回滚耗时,提升CPU总体执行效率。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为根据一种实施方案的CPU执行过程;图2示出根据一个实施例在CPU中执行指令的方法;图3示出根据一个实施例的CPU控制器的功能框图。具体实施方式下面结合附图,对本说明书提供的方案进行描述。图1为根据一种实施方案的CPU执行过程。如图1所示,整个执行过程分为多个阶段。首先是取指令阶段。当前的主流CPU每个指令周期可以取16字节,大约每次为4条指令。接着进行指令预解码。预解码阶段的主要工作是辨别指令长度,同时标注跳转指令。通常来说,主流CPU在该阶段有5指令/周期的吞吐量。预解码之后即进入解码阶段。解码阶段主要将复杂指令转变为精简指令(固定长度),同时指定操作类型。通常该阶段也有5指令/周期的吞吐量。解码后的指令会放入到已解码缓存。已解码缓存作为一个指令缓存池,其中可以存储多条已解码的指令,供下一阶段,即线程队列,读取。已解码缓存到下一阶段的吞吐量可以达到每个周期6跳指令。如前所述,对于超线程CPU,可以存在多个线程并行执行。在执行过程中,每个线程都会读取接下来待执行的指令,形成自己的线程缓存队列,后续又称为线程队列。在已解码缓存中存在上述待执行指令的情况下,就使用已解码缓存中存储的指令,否则,从前端(内存)得到相应指令添加到队列中。在图1中示例性示出了线程A和线程B各自的线程队列,但是可以理解,超线程CPU还可以支持更多线程的并行执行。接着,从形成线程队列进入下一阶段:重命名&分配可执行资源。从线程队列到该阶段的吞吐量可以达到每个周期5跳指令。而在重命名&分配可执行资源阶段,主要工作是解决寄存器读写依赖关系,去除不必要的依赖关系,力求得到指令更多并行执行能力,同时分配执行时所需要的各种资源。在分配好执行所需资源之后,指令才会被送入到CPU的执行单元进行执行。目前CPU拥有多个执行单元,当前最普遍的CPU具有8条可以并行执行的流水线,也就是每个周期可以执行8个微操作,虽然可以乱序执行,但是最后指令提交的顺序与程序的顺序相同。如前所述,为了避免指令缺失带来的流水线停顿或等待,目前几乎所有CPU都会采用指令预测,又称为分支预测(BranchPrediction)方案进行指令的预测和预取。在每个周期结束之后,预测单元根据其包含的历史执行状态表预测将要预取的指令。如果指令没有跳转,在前述取本文档来自技高网...

【技术保护点】
1.一种在CPU中执行指令的方法,包括:从当前线程队列中提取指令形成指令块,以送入CPU执行单元执行,所述指令块中包含单条跳转指令,且该跳转指令为所述指令块中最后一条指令;将至少一条指令补充到当前线程队列,形成待执行线程队列;根据CPU执行单元的执行结果,确定所述跳转指令的目标指令;判断所述待执行线程队列中是否包含所述目标指令;在所述待执行线程队列中不包含所述目标指令的情况下,清除所述待执行线程队列,获取所述目标指令,并将所述目标指令添加到待执行线程队列中。

【技术特征摘要】
1.一种在CPU中执行指令的方法,包括:从当前线程队列中提取指令形成指令块,以送入CPU执行单元执行,所述指令块中包含单条跳转指令,且该跳转指令为所述指令块中最后一条指令;将至少一条指令补充到当前线程队列,形成待执行线程队列;根据CPU执行单元的执行结果,确定所述跳转指令的目标指令;判断所述待执行线程队列中是否包含所述目标指令;在所述待执行线程队列中不包含所述目标指令的情况下,清除所述待执行线程队列,获取所述目标指令,并将所述目标指令添加到待执行线程队列中。2.根据权利要求1所述的方法,其中从当前线程队列中提取指令形成指令块包括:从当前线程队列中读取预定阈值数目的指令,所述预定阈值数目依赖于所述CPU执行单元的数目;判断所述预定阈值数目的指令中是否包含跳转指令;在包含跳转指令的情况下,以该跳转指令为结尾向前截取,将截取的指令作为所述指令块。3.根据权利要求1所述的方法,其中将至少一条指令补充到当前线程队列,形成待执行线程队列包括:根据指令预测的预测分支,将预测分支对应的至少一条指令补充到当前线程队列。4.根据权利要求1所述的方法,其中将至少一条指令补充到当前线程队列,形成待执行线程队列包括:从已解码缓存中读取对应的指令补充到当前线程队列,其中已解码缓存中存储有预取并解码的多条指令...

【专利技术属性】
技术研发人员:马凌
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1