首页> 中国专利> 同步多线程处理器的浮点指令处理方法及装置

同步多线程处理器的浮点指令处理方法及装置

摘要

一种同步多线程处理器的浮点指令处理方法及装置,所述方法包括:当在取指阶段同时得到可变延迟指令和固定延迟指令时,将所述可变延迟指令单独发射至后续流水级进行流水处理,其中,所述可变延迟指令来自于第一线程,所述固定延迟指令来自于第二线程;当所述可变延迟指令经所述后续流水级的流水处理完成后,重新将所述可变延迟指令进行发射,并在重新发射所述可变延迟指令的同一指令发射周期向所述第二线程插入气泡指令,使得所述第二线程的固定延迟指令与所述第一线程的下一个指令一同在下一个指令发射周期进行发射。上述方案可确保属于同一线程的可变延迟指令与固定延迟指令的执行结果按顺序写回。

著录项

  • 公开/公告号CN108255519A

    专利类型发明专利

  • 公开/公告日2018-07-06

    原文格式PDF

  • 申请/专利权人 展讯通信(上海)有限公司;

    申请/专利号CN201611250580.5

  • 发明设计人 李亦欧;

    申请日2016-12-29

  • 分类号

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人张振军

  • 地址 201203 上海市浦东新区浦东张江高科技园区祖冲之路2288弄展讯中心1号楼

  • 入库时间 2023-06-19 05:48:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-14

    授权

    授权

  • 2018-07-31

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

    实质审查的生效

  • 2018-07-06

    公开

    公开

说明书

技术领域

本发明涉及处理器结构技术领域,特别是涉及一种同步多线程处理器的浮点指令处理方法及装置。

背景技术

同步多线程(SMT)是一种在单个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上,同步多线程是一种将基于多CPU的线程级并行处理转化为基于同一CPU的指令级并行处理的方法。同步多线程技术可以实现单个物理处理器从多个硬件线程上下文同时分派指令。本文所称的同步多线程处理器为使用同步多线程技术的处理器。

同步多线程处理器处理的指令包括浮点指令和定点指令,其中,浮点指令包括可变延迟指令(variable latency instruction)和固定延迟指令(fixed latencyinstruction)。目前同步多线程处理器在处理浮点指令时,在浮点流水线的两个流水单元被两个线程共享的情况下,所述可变延迟指令和固定延迟指令一同发射时,存在处于同一线程的可变延迟指令与固定延迟指令的执行结果不按顺序写回的问题。

发明内容

本发明解决的技术问题是提供一种同步多线程处理器的浮点指令处理方法及装置,确保在所述可变延迟指令和固定延迟指令一同发射时,属于同一线程的可变延迟指令与固定延迟指令的执行结果按顺序写回。

为解决上述技术问题,本发明实施例提供一种同步多线程处理器的浮点指令处理方法,所述浮点指令包括可变延迟指令和固定延迟指令,所述处理器为双线程处理器,所述处理器的浮点流水线的两个流水单元被两个线程共享,所述方法包括:

当在取指阶段同时得到可变延迟指令和固定延迟指令时,将所述可变延迟指令单独发射至后续流水级进行流水处理,其中,所述可变延迟指令来自于第一线程,所述固定延迟指令来自于第二线程;

当所述可变延迟指令经所述后续流水级的流水处理完成后,重新将所述可变延迟指令进行发射,并在重新发射所述可变延迟指令的同一指令发射周期向所述第二线程插入气泡指令,使得所述第二线程的固定延迟指令与所述第一线程的下一个指令一同在下一个指令发射周期进行发射,其中,重新发射的所述可变延迟指令在所述后续流水级进行流水处理时,并不执行所述可变延迟指令所涉及的浮点运算,而使用单独发射后进行流水处理得到的运算结果

可选地,以伪指令的方式重新发射所述可变延迟指令。

可选地,所述后续流水级包括译码阶段、执行阶段、访存阶段和写回阶段。

可选地,所述可变延迟指令包括浮点除指令。

可选地,所述固定延迟指令包括浮点加指令、浮点减指令。

本发明实施例还提供一种同步多线程处理器的浮点指令处理装置,所述浮点指令包括可变延迟指令和固定延迟指令,所述处理器为双线程处理器,所述处理器的浮点流水线的两个流水单元被两个线程共享,所述装置包括:

第一发射单元,适于当在取指阶段同时得到可变延迟指令和固定延迟指令时,将所述可变延迟指令单独发射至后续流水级进行流水处理,其中,所述可变延迟指令来自于第一线程,所述固定延迟指令来自于第二线程;

第二发射单元,适于当所述可变延迟指令经所述后续流水级的流水处理完成后,重新将所述可变延迟指令进行发射,并在重新发射所述可变延迟指令的同一指令发射周期向所述第二线程插入气泡指令,使得所述第二线程的固定延迟指令与所述第一线程的下一个指令一同在下一个指令发射周期进行发射,其中,重新发射的所述可变延迟指令在所述后续流水级进行流水处理时,并不执行所述可变延迟指令所涉及的浮点运算,而使用单独发射后进行流水处理得到的运算结果。

可选地,以伪指令的方式重新发射所述可变延迟指令。

可选地,所述后续流水级包括译码阶段、执行阶段、访存阶段和写回阶段。

可选地,所述可变延迟指令包括浮点除指令。

可选地,所述固定延迟指令包括浮点加指令、浮点减指令。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

本发明技术方案中,当取指得到第一线程的可变延迟指令和第二线程的固定延迟指令时,通过将可变延迟指令单独发射到后续流水级中进行流水处理得到执行结果但并不写回,而将所述可变延迟指令重新发射,并在第二线程中插入气泡,使得第二线程的固定延迟指令与第一线程的下一个固定延迟指令在下一个指令发射周期发射,从而实现在连续写回周期内按顺序分别写回第一线程的可变延迟指令和下一个固定延迟指令的执行结果。由此可以避免现有技术中,在两条流水线的流水单元共享时,第一线程的可变延迟指令与第二线程的固定延迟指令一同发射,第二线程的固定延迟指令提前执行完,第一线程的下一条固定延迟指令进入第二线程的固定延迟指令所在流水线的流水单元,且在该流水线的流水单元提前得到执行结果并提前写回寄存器,而造成第一线程的可变延迟指令和固定延迟指令不按顺序写回的问题。

附图说明

图1是本发明实施例中的一种同步多线程处理器的浮点指令处理方法的流程图;

图2是本发明实施例中的一种同步多线程处理器的浮点指令处理装置的结构示意图。

具体实施方式

如前所述,同步多线程处理器处理的指令包括浮点指令和定点指令,其中,浮点指令包括可变延迟指令(variable latency instruction)和固定延迟指令(fixed latencyinstruction)。目前同步多线程处理器在处理浮点指令时,在浮点流水线的两个流水单元被两个线程共享的情况下,所述可变延迟指令和固定延迟指令一同发射时,存在处于同一线程的可变延迟指令与固定延迟指令的执行结果不按顺序写回的问题。

为说明现有技术存在的技术问题,下面举例进行分析。现有技术中,假设取指得到T0线程的浮点除指令(例如,FDIV)和T1线程的浮点加指令(例如,FADD),T0线程的下一条指令为浮点减指令(例如,FSUB),其中,浮点除指令为可变延迟指令,浮点加指令和浮点减指令为固定延迟指令,处理器有两条流水线分别为流水线A和流水线B,流水线A的流水单元和流水线B的流水单元为两个共享线程,取指发射时T0线程的FDV指令所在流水线为A,T1线程的FADD所在流水线为B。上述指令中,由于浮点除指令为可变延迟指令,流水处理结束的时间不确定,当T1线程的固定延迟指令(也即FADD指令)提前执行完,由于流水单元存在共用,T0线程的下一条固定延迟指令(也即FSUB指令)将进入FADD所在的流水线B,一旦FSUB指令在流水线B执行完,而此时FDIV指令在流水线A还没有得到执行结果,则FSUB指令的执行结果将提前写回寄存器。这样,本应提前写回执行结果的FDIV指令在FSUB指令之后写回,造成FDIV指令的执行结果和FSUB指令的执行结果写回顺序出错。

本发明实施例中,当取指得到第一线程的可变延迟指令和第二线程的固定延迟指令时,通过将可变延迟指令单独发射到后续流水级中进行流水处理得到执行结果但并不写回,而将所述可变延迟指令重新发射,并在第二线程中插入气泡,使得第二线程的固定延迟指令与第一线程的下一个固定延迟指令在下一个指令发射周期发射,从而实现在连续写回周期内按顺序分别写回第一线程的可变延迟指令和下一个固定延迟指令的执行结果。由此可以避免现有技术中,在两条流水线的流水单元共享时,第一线程的可变延迟指令与第二线程的固定延迟指令一同发射,第二线程的固定延迟指令提前执行完,第一线程的下一条固定延迟指令进入第二线程的固定延迟指令所在流水线的流水单元,且在该流水线的流水单元提前得到执行结果并提前写回寄存器,而造成第一线程的可变延迟指令和固定延迟指令不按顺序写回的问题。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

图1是本发明实施例中的一种同步多线程处理器的浮点指令处理方法的流程图。下面结合图1所示的步骤对同步多线程处理器的浮点指令处理方法进行说明。

步骤S101:当在取指阶段同时得到可变延迟指令和固定延迟指令时,将所述可变延迟指令单独发射至后续流水级进行流水处理,其中,所述可变延迟指令来自于第一线程,所述固定延迟指令来自于第二线程。

在本发明实施例中,所述同步多线程处理器为双线程处理器,所述处理器的浮点流水线的两个流水单元被两个线程共享,两个线程分别为第一线程和第二线程。在发射指令时,可以同时发射第一线程和第二线程的执行,也可以发射其中一条线程的指令。

在同步多线程处理器所处理的指令中,包括定点指令和浮点指令,本文所描述的指令处理为浮点执行的处理。其中,所述浮点指令包括可变延迟指令(variable latencyinstruction)和固定延迟指令(fixed latency instruction),所述可变延迟指令为每个阶段执行时间不固定的指令,而固定延迟指令则为每个阶段执行时间固定的指令。

所述可变延迟指令可以包括浮点除指令,所述固定延迟指令可以包括浮点加指令和浮点减指令等。

在本发明实施例中,处理浮点执行的流水线可以包括取指和发射阶段、译码阶段、执行阶段、访存阶段和写回阶段。

当在取指阶段同时得到的两条指令为可变延迟指令和固定延迟指令时,将可变延迟指令单独发射至后续流水级进行流水处理。其中,可变延迟指令来自第一线程,固定延迟指令来自第二线程。所述后续流水级为取指阶段以后的流水阶段,可以包括译码阶段、执行阶段、访存阶段和写回阶段。

需要说明的是,在其他流水级的设计中,所述后续流水级别可以包括其他阶段。

步骤S102:当所述可变延迟指令经所述后续流水级的流水处理完成后,重新将所述可变延迟指令进行发射,并在重新发射所述可变延迟指令的同一指令发射周期向所述第二线程插入气泡(bubble)指令,使得所述第二线程的固定延迟指令与所述第一线程的下一个指令一同在下一个指令发射周期进行发射。

其中,重新发射的所述可变延迟指令在所述后续流水级进行流水处理时,并不执行所述可变延迟指令所涉及的浮点运算,而使用单独发射后进行流水处理得到的运算结果。

经过本实施例的步骤S101得到了取指阶段获取的可变延迟指令的执行结果,而在本步骤S102中,重新发射该可变延迟指令至所述后续流水级,在后续流水级的处理过程中,并不执行该可变延迟指令所涉及的浮点运算,即重新发射该可变延迟指令后,并不实际进行浮点计算。

在重新发射所述可变延迟指令的同时,在第二线程插入气泡(bubble)指令,具体而言,在重新发射可变延迟指令时,并不发射原取指得到的第二线程的固定延迟指令,而是于指令发射周期在第二线程插入气泡。原取指得到的第二线程的固定延迟指令将与第一线程的下一个指令在下一个指令周期同时发射。

在具体实施中,以伪指令的方式重新发射所述可变延迟指令。

下面结合表1和表2举例说明上述实施方式。本例中,假设第一线程为T0,第二线程为T1。当前取指阶段得到T0线程的可变延迟指令浮点除FDIV指令和T1线程的固定延迟指令浮点加FADD指令,T0线程的下一条指令为固定延迟指令FSUB指令。

发射阶段译码阶段执行阶段访存阶段写回阶段第一周期T0FDIV第二周期T0FDIV第三周期T0FDIV第四周期T0FDIV第五周期T0FDIV

表1

表2

按上述实施方式,请参见表1,当取指得到T0线程的FDIV指令和T1线程的FADD指令,单独发射T0线程的FDIV指令至T0线程的后续流水线进行流水处理得到FDIV指令的执行结果。此时,请参见表2,重新将T0线程的FDIV指令重新进行发射,并在同一指令发射周期向T1线程插入气泡(Bubble)指令,使得T1线程的FADD指令与T0线程的下一个执行FSUB指令在下一个指令发射周期(第二周期)进行发射,其中,以伪指令(fake instruction)的方式重新发射FDIV指令在后续流水处理过程中,并不实际进行浮点除运算,而是使用单独发射时得到的浮点除的运算结果,具体而言,在表一中所示阶段得到的运算结果在表二中的写回阶段写回。

由此,在写回阶段,可按顺序依次写回T0线程的FDIV指令的执行结果、和T0线程的FSUB执行的执行结果。避免现有技术中,由于两条流水线的流水单元互相共享,T1线程的FADD指令执行完后,T0线程的FSUB指令进入FADD指令所在的流水线通过流水执行并可能提前FDIV指令写回时得到执行结果,从而提前FDIV指令的执行结果写回寄存器。因而本发明实施例确保了T0线程的FIDV指令和FSUB指令从第五周期起的连续周期按正确的顺序写回,从而保证可在后续计算中准确地从寄存器中取得写回的正确数据。

图2是本发明实施例中的一种同步多线程处理器的浮点指令处理装置的结构示意图。如图2所示的同步多线程处理器的浮点指令处理装置可以包括:

第一控制发射单元201,适于当在取指阶段同时得到可变延迟指令和固定延迟指令时,将所述可变延迟指令单独发射至后续流水级进行流水处理,其中,所述可变延迟指令来自于第一线程,所述固定延迟指令来自于第二线程;

第二控制发射单元202,适于当所述可变延迟指令经所述后续流水级的流水处理完成后,重新将所述可变延迟指令进行发射,并在重新发射所述可变延迟指令的同一指令发射周期向所述第二线程插入气泡指令,使得所述第二线程的固定延迟指令与所述第一线程的下一个指令一同在下一个指令发射周期进行发射,其中,重新发射的所述可变延迟指令在所述后续流水级进行流水处理时,并不执行所述可变延迟指令所涉及的浮点运算,而使用单独发射后进行流水处理得到的运算结果。

在具体实施中,以伪指令的方式重新发射所述可变延迟指令。

在具体实施中,所述后续流水级包括译码阶段、执行阶段、访存阶段和写回阶段。

在具体实施中,所述可变延迟指令包括浮点除指令。

在具体实施中,所述固定延迟指令包括浮点加指令、浮点减指令。

有关同步多线程处理器的浮点指令处理装置的有益效果的说明可对应参照所述同步多线程处理器的浮点指令处理方法的描述,在此不再赘述。

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

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号