CN117075968A - 指令预测方法、装置、系统及计算机可读存储介质 - Google Patents

指令预测方法、装置、系统及计算机可读存储介质 Download PDF

Info

Publication number
CN117075968A
CN117075968A CN202210866647.7A CN202210866647A CN117075968A CN 117075968 A CN117075968 A CN 117075968A CN 202210866647 A CN202210866647 A CN 202210866647A CN 117075968 A CN117075968 A CN 117075968A
Authority
CN
China
Prior art keywords
instruction
processor
candidate execution
ibs
execution path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210866647.7A
Other languages
English (en)
Inventor
韩冰
陈永瑜
李楠
田太徐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to TW112116005A priority Critical patent/TW202349201A/zh
Priority to US18/314,655 priority patent/US20230367596A1/en
Priority to EP23172233.1A priority patent/EP4276611A1/en
Publication of CN117075968A publication Critical patent/CN117075968A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本申请公开了一种指令预测方法、装置、系统及计算机可读存储介质,涉及计算机技术领域。该方法包括:处理器获取待执行的多个第一IB,任一个第一IB包括顺序执行的至少一条指令,该至少一条指令包括一条分支指令;基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与多个第一IB对应的候选执行路径,任一条候选执行路径指示多个第二IB之间的跳转关系,该与多个第一IB对应的候选执行路径指示的跳转关系中包括多个第一IB之间的跳转关系;基于多个第一IB之间的跳转关系预测各个第一IB包括的分支指令对应的下一条指令。基于候选执行路径指示的跳转关系来确定分支指令对应的下一条指令,预测下一条指令的效率较高。

Description

指令预测方法、装置、系统及计算机可读存储介质
本申请要求于2022年5月10日提交的申请号为202210504984.1、发明名称为“数据处理方法、装置和网络系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请实施例中。
技术领域
本申请涉及计算机技术领域,尤其涉及一种指令预测方法、装置、系统及计算机可读存储介质。
背景技术
指令流水线是一种将指令的执行过程分解为多个相关联的阶段,各个阶段由专门的电路完成的技术。指令流水线至少包括:取指令阶段和执行阶段。取指令阶段用于取出要执行的指令,执行阶段用于执行取指令阶段取出的指令,确定所要执行的下一条指令。若要执行的指令为条件分支指令,该条件分支指令之后通常具有两路分支,不同分支对应的下一条指令不同。由于在执行阶段才能够确定所要执行的是哪个分支对应的下一条指令,因此需要一种指令预测方法,以在确定出所要执行的下一条指令之前,先预测出下一条指令是哪个分支对应的指令,从而能够提前将该分支对应的指令送入取指令阶段,提高指令的执行效率。
相关技术中,将条件分支指令的某一路分支对应的指令固定的作为所要执行的下一条指令。然而,由于一次仅能预测一条条件分支指令对应的下一条指令,相关技术的预测效率较低。并且,对于不同的条件分支指令,由于后续所要执行的下一条指令可能不同,相关技术的预测准确性较低。
发明内容
本申请提出一种指令预测方法、装置、系统及计算机可读存储介质,用于提高指令预测的效率以及准确性。
第一方面,提供了一种指令预测方法,该方法应用于处理器,该方法包括:处理器获取待执行的多个第一指令块(instruction block,IB),该多个第一IB中的任一个第一IB包括顺序执行的至少一条指令,该至少一条指令包括一条分支指令;然后,基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与多个第一IB对应的候选执行路径,该至少一条候选执行路径中的任一条候选执行路径指示多个第二IB之间的跳转关系,该与多个第一IB对应的候选执行路径指示的跳转关系中包括该多个第一IB之间的跳转关系;最后,基于该多个第一IB之间的跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
该方法能够适用于业务随机性较高的网络处理器和CPU等处理器,适用范围较广。再有,该方法基于多个第一IB包括的分支指令,获取与多个第一IB对应的候选执行路径。由于该候选执行路径指示的跳转关系中包括该多个第一IB之间的跳转关系,基于该多个第一IB之间的跳转关系能够直接对各个第一IB包括的分支指令对应的下一条指令进行预测,从而预测各个第一IB包括的分支指令对应的下一条指令的效率较高。由于多个第一IB之间的跳转关系是通过该多个第一IB对应的候选执行路径指示的,该多个第一IB之间的跳转关系可以不同。与相关技术中将某一路分支对应的指令固定的作为所要执行的下一条指令的方式相比,该方法获取到的多个第一IB之间的跳转关系的准确性较高,从而预测各个第一IB包括的分支指令对应的下一条指令的准确性较高,指令的执行效率较高。
在一种可能的实现方式中,基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与多个第一IB对应的候选执行路径,包括:基于多个第一IB包括的分支指令获取多个第一IB对应的关键字,不同关键字对应不同的候选执行路径;在至少一条候选执行路径中查找与该关键字对应的候选执行路径,将与该关键字对应的候选执行路径作为与该多个第一IB对应的候选执行路径。由于关键字是基于多个第一IB包括的分支指令获取的,该方法能够降低查找与多个第一IB对应的候选执行路径所需的资源,从而提高查找与多个第一IB对应的候选执行路径的效率。
在一种可能的实现方式中,至少一条候选执行路径以及与至少一条候选执行路径各自对应的索引存储在存储器中,至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字存储在内存中;在至少一条候选执行路径中查找与关键字对应的候选执行路径,包括:将关键字输入内存,获取内存输出的与关键字对应的目标索引,在存储器存储的至少一条候选执行路径中查找与目标索引对应的候选执行路径,将与目标索引对应的候选执行路径作为与关键字对应的候选执行路径。该方法中查找与关键字对应的候选执行路径的过程可以基于多级存储实现,查找与关键字对应的候选执行路径的方式较为灵活。由于内存的查找速度较快但存储资源较为有限,存储器的查找速度较慢但存储资源较为充足,该方法通过以多级存储的方式实现查找与关键字对应的候选执行路径,能够在保证有较为充足的存储空间来存储至少一条候选执行路径的同时,提高查找与关键字对应的候选执行路径的效率。
在一种可能的实现方式中,该方法还包括:基于在至少一条候选执行路径中未查找到与多个第一IB对应的候选执行路径,处理器确定多个第一IB之间的跳转关系为参考跳转关系;基于参考跳转关系预测各个第一IB包括的分支指令对应的下一条指令。在未能查找到与多个第一IB对应的候选执行路径的情况下,该方法也能够对各个第一IB包括的分支指令对应的下一条指令进行预测,提高获取各个第一IB包括的分支指令对应的下一条指令的效率,该方法能够灵活适用于不同的情况。
在一种可能的实现方式中,处理器确定多个第一IB之间的跳转关系为参考跳转关系,包括:处理器在各个第一IB之间添加目标指令,目标指令用于指示各个第一IB之间的跳转关系为该参考跳转关系。通过在各个第一IB之间添加用于指示各个第一IB之间的跳转关系为参考跳转关系的目标指令,处理器通过执行目标指令即可完成各个第一IB之间的跳转,该方法指示各个第一IB之间的跳转关系的方式较为简便。
在一种可能的实现方式中,处理器确定多个第一IB之间的跳转关系之后,该方法还包括:处理器基于多个第一IB之间的跳转关系,将多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,执行顺序信息用于指示多个第一IB包括的指令的执行顺序,存储地址信息用于指示多个第一IB包括的指令的存储地址;从IB队列中依次获取多个第一IB的执行顺序信息和存储地址信息;按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,执行获取到的指令。通过将多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,处理器能够按照IB队列中多个第一IB的顺序,依次获取各个第一IB的执行顺序信息和存储地址信息,确定需要获取执行顺序信息和存储地址信息的第一IB的效率较高,并且,获取该第一IB的执行顺序信息和存储地址信息的效率也较高。
在一种可能的实现方式中,该方法还包括:对于获取到的指令为分支指令,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,处理器基于所需执行的下一条指令获取待执行的至少一个第三IB,预测至少一个第三IB包括的分支指令对应的下一条指令。如果预测的分支指令对应的下一条指令与所需执行的下一条指令不同,说明待执行的多条指令中的某些指令不是所需执行的指令。在该情况下,通过基于所需执行的下一条指令获取待执行的至少一个第三IB,该方法能够获取正确的待执行的指令,保证待执行的指令的准确性。
在一种可能的实现方式中,该方法还包括:对于获取到的指令为分支指令,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,处理器删除IB队列中存储的多个第一IB的执行顺序信息和存储地址信息。通过删除IB队列中存储的信息,能够避免错误的信息占用存储空间,造成存储空间的浪费。
在一种可能的实现方式中,处理器支持至少两个线程,处理器在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
在一种可能的实现方式中,处理器在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作,包括:处理器在资源空闲时,在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。通过仅在资源空闲时执行基于存储地址获取指令的操作,能够在获取的指令不是所需执行的指令的情况下,避免在该线程上执行的获取指令的操作对在其他线程上执行的获取指令的操作造成影响,实现指令获取错误零惩罚。该指令获取错误零惩罚是指:在该线程上执行获取错误的指令的操作时,未占用在其他线程上执行获取指令的操作所需的资源。
第二方面,提供了一种指令预测装置,该装置应用于处理器,该装置包括:
获取模块,用于获取待执行的多个第一指令块IB,任一个第一IB包括顺序执行的至少一条指令,至少一条指令包括一条分支指令;
查找模块,用于基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与多个第一IB对应的候选执行路径,任一条候选执行路径指示多个第二IB之间的跳转关系,与多个第一IB对应的候选执行路径指示的跳转关系中包括多个第一IB之间的跳转关系;
预测模块,用于基于多个第一IB之间的跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
在一种可能的实现方式中,查找模块,用于基于多个第一IB包括的分支指令获取多个第一IB对应的关键字,不同关键字对应不同的候选执行路径;在至少一条候选执行路径中查找与关键字对应的候选执行路径,将与关键字对应的候选执行路径作为与多个第一IB对应的候选执行路径。
在一种可能的实现方式中,至少一条候选执行路径以及与至少一条候选执行路径各自对应的索引存储在存储器中,至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字存储在内存中;查找模块,用于将关键字输入内存,获取内存输出的与关键字对应的目标索引,在存储器存储的至少一条候选执行路径中查找与目标索引对应的候选执行路径,将与目标索引对应的候选执行路径作为与关键字对应的候选执行路径。
在一种可能的实现方式中,查找模块,还用于基于在至少一条候选执行路径中未查找到与多个第一IB对应的候选执行路径,确定多个第一IB之间的跳转关系为参考跳转关系;基于参考跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
在一种可能的实现方式中,查找模块,用于在各个第一IB之间添加目标指令,目标指令用于指示各个第一IB之间的跳转关系为该参考跳转关系。
在一种可能的实现方式中,获取模块,还用于基于多个第一IB之间的跳转关系,将多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,执行顺序信息用于指示多个第一IB包括的指令的执行顺序,存储地址信息用于指示多个第一IB包括的指令的存储地址;从IB队列中依次获取多个第一IB的执行顺序信息和存储地址信息;按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,执行获取到的指令。
在一种可能的实现方式中,获取模块,还用于对于获取到的指令为分支指令,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,基于所需执行的下一条指令获取待执行的至少一个第三IB,预测至少一个第三IB包括的分支指令对应的下一条指令。
在一种可能的实现方式中,获取模块,还用于对于获取到的指令为分支指令,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,删除IB队列中存储的多个第一IB的执行顺序信息和存储地址信息。
在一种可能的实现方式中,处理器支持至少两个线程,该获取模块,用于在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
在一种可能的实现方式中,该获取模块,用于在资源空闲时,在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
第三方面,提供了一种计算机系统,包括处理器,该处理器用于执行程序指令或代码,以使所述计算机设备实现第一方面中任一的指令预测方法。可选地,该计算机系统还包括存储器,所述存储器用于存储所述程序指令或代码。
第四方面,提供了一种计算机可读存储介质,存储介质中存储有至少一条程序指令或代码,程序指令或代码由计算机执行时以使计算机实现第一方面中任一的指令预测方法。
第五方面,提供了一种通信装置,该装置包括:收发器、存储器和处理器。其中,收发器、存储器和处理器通过内部连接通路互相通信,存储器用于存储指令,处理器用于执行存储器存储的指令,以控制收发器接收信号,并控制收发器发送信号,并且当处理器执行存储器存储的指令时,使得处理器执行第一方面中任一的指令预测方法。
示例性地,处理器为一个或多个,存储器为一个或多个。
示例性地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
第六方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序指令或代码,当该计算机程序指令或代码被计算机运行时,使得计算机执行第一方面中任一的指令预测方法。
第七方面,提供了一种芯片,包括处理器,用于执行程序指令或代码,使得包含该芯片的设备执行第一方面中任一的指令预测方法。
示例性地,该芯片还包括:输入接口、输出接口和存储器,该输入接口、该输出接口、该处理器以及该存储器之间通过内部连接通路相连,所述存储器用于存储所述程序指令或代码。
应当理解的是,本申请实施例的第二方面至第七方面的技术方案及对应的可能的实现方式所取得的有益效果可以参见上述对第一方面及其对应的可能的实现方式的技术效果,此处不再赘述。
附图说明
图1是本申请实施例提供的一种转发程序包括的指令的示意图;
图2是本申请实施例提供的一种IB group的示意图;
图3是本申请实施例提供的一种指令预测方法的实施环境示意图;
图4是本申请实施例提供的一种指令预测方法的流程图;
图5是本申请实施例提供的一种查找与关键字对应的候选执行路径的过程示意图;
图6是本申请实施例提供的一种获取多个第一IB对应的候选执行路径的过程示意图;
图7是本申请实施例提供的一种指令流水线的示意图;
图8是本申请实施例提供的一种获取至少一个第三IB对应的执行路径的过程示意图;
图9是本申请实施例提供的一种处理器的取指令阶段获取指令的过程示意图;
图10是本申请实施例提供的一种指令预测装置的结构示意图;
图11是本申请实施例提供的一种网络设备的结构示意图;
图12是本申请实施例提供的另一种网络设备的结构示意图;
图13是本申请实施例提供的另一种网络设备的结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的实施例进行解释,而非旨在限定本申请。下面结合附图,对本申请的实施例进行描述。
程序中通常包括多种类型的指令,分支指令(jump,JMP)便是其中的一种。示例性地,该分支指令可以为条件分支指令。该条件分支指令之后通常具有两路后续执行分支,一路为不采取(not taken)跳转分支,另一路为采取(taken)跳转分支。在执行不采取跳转分支的情况下,所需执行的下一条指令为在该程序中按照顺序位于该条件分支指令之后的第一条指令。在执行采取跳转分支的情况下,所需执行的下一条指令为与该条件分支指令不相邻的其他指令,例如,跳转执行其他程序内存中的指令。
处理器可以应用指令流水线来完成指令的执行过程,指令流水线至少包括:取指令阶段(fetch stage)和执行阶段(execution stage)。取指令阶段用于取出所要执行的指令,执行阶段用于执行取指令阶段取出的指令,确定所要执行的下一条指令。如果处理器等待分支指令通过了执行阶段,再将所要执行的下一条指令送入取指令阶段,等待过程将导致流水线停顿(pipeline stalled),造成时间浪费。因此,需要一种指令预测方法,以在确定出所要执行的下一条指令之前,先预测出所要执行的下一条指令,从而能够提前将该指令送入取指令阶段。
相关技术中,基于局部性原理提出了适用于中央处理器(central processingunit,CPU)等通用处理器的指令预测方法。局部性原理是指处理器在访问数据时,存在短时间内重复访问某些数据或者访问位置的情况。对于CPU程序而言,由于其中存在大量循环结构、前一条条件分支指令对应的下一条指令与后一条条件分支指令对应的下一条指令相关、两条类型相同且条件相反的条件分支指令对应的下一条指令相关,该CPU程序适用于局部性原理,从而CPU适用于基于局部性原理提供的指令预测方法。
然而,由于网络处理器的业务的随机性远大于CPU程序,相关技术中以CPU程序的特点设计的指令预测方法不适合网络处理器的业务。从微观上看,CPU的单个处理核长时间运行一个程序,具有典型的局部性。而网络处理器对于单个数据包的转发流程很短,一个处理核会处理所有类型的数据包,相邻的两个数据包的转发流程可能完全不同,使得前一个数据包的处理结果对于处理后一个数据包不具有参考价值,不适用于局部性原理。从宏观上看,对于接入网/城域网的节点设备,由于节点设备接入的网络的类型较为多样,不同接口的配置差异较大,报文的类型差异也较大。对于该节点设备而言,接收到的报文的类型较为平均,不会出现某一类的报文的转发流程占绝大多数的情况。从而,对于该节点设备中用于执行转发流程的网络处理器,也不会出现某一类的数据包的转发流程占绝大多数的情况,不适用于局部性原理。
再有,基于图1所示的本申请实施例提供的转发程序包括的指令的示意图,该图1示出的指令仅为转发程序包括的指令中的一部分,一个椭圆代表一条指令,箭头用于指示指令的执行顺序。由图1可以看出转发程序的流程是线性向下的,不具备CPU程序的特征,以CPU程序的特点设计的指令预测方法不适用于网络处理器。
本申请实施例提供了一种指令预测方法,能够适用于处理随机性高的业务的网络处理器和CPU等处理器,适用范围较广。该网络处理器可以为实时通信(real timecommunication,RTC)类网络处理器。为了便于理解,首先对本申请实施例中涉及的名词进行解释:
IB:也称为基本块(basic block),IB具有如下特点:(1)只有一个入口(entry),该IB中的各条指令均按照顺序执行,其他IB的分支指令仅能跳转执行该IB的第一条指令;(2)只有一个出口,只有IB中的最后一条指令执行完毕之后,程序才能够开始在不同的IB中执行代码。也就是说,对于一个IB而言,只要执行该IB中的第一条指令,该IB中的其余指令就必须按顺序执行一次。IB的entry是其他一个或多个IB最后的分支指令跳转的目标,IB的出口是一个去往其他IB的分支指令。
IB组(IB group):是指存在前后继关系的一段连续的IB,该前后继关系也可称为跳转关系。示例性地,对于任意两个IB,若前一个IB以执行不采取跳转分支或执行采取跳转分支的方式执行后一个IB,则称该两个IB存在跳转关系。基于执行的分支的情况,该两个IB之间的跳转关系包括但不限于如下两种情况:如果执行的分支为不采取跳转分支,则前一个IB和后一个IB的跳转关系为前一个IB执行不采取跳转分支以执行后一个IB;如果执行的分支为采取跳转分支,则前一个IB和后一个IB的跳转关系为前一个IB执行采取跳转分支以执行后一个IB。示例性地,若前一个IB以执行无条件跳转的方式执行后一个IB,也即该前一个IB仅具有该后一个IB这一路分支,这两个IB之间也存在跳转关系。这两个IB之间的跳转关系即为前一个IB执行无条件跳转以执行后一个IB。图2为本申请实施例提供的一种IBgroup的示意图,图2中示出了10个IB,分别为IB1、IB2、…、IB10。以IB1为例,若IB1执行不采取跳转分支,则执行IB2,若IB1执行采取跳转分支,则执行IB3,IB2和IB3均为IB1的后续分支,也即IB1分别与IB2和IB3存在跳转关系。对于IB5,IB5执行无条件跳转以执行IB9,该IB5和IB9存在跳转关系。图2中其他IB之间的跳转关系原理相同,此处不再赘述。由此,图2示出的10个IB共构成了5个IB group。为便于说明,分别称为IB group1、IB group2、…、IBgroup5。其中,IB group1为IB1→IB2→IB4→IB8,IB group2为IB1→IB2→IB4→IB9,IBgroup3为IB1→IB2→IB5→IB9,IB group4为IB1→IB3→IB6→IB10,IB group5为IB1→IB3→IB7→IB10。一个IB group可以称为一条执行路径,例如,对于IB group1,IB1→IB2→IB4→IB8称为一条由IB1到IB8的执行路径,各个IB之间的跳转关系为:IB1执行不采取跳转分支以执行IB2、IB2执行不采取跳转分支以执行IB4、IB4执行不采取跳转分支以执行IB8。其他IB group与该IB group1原理相同,此处不再赘述。
本申请实施例提供的指令预测方法可应用于图3示出的实施环境。如图3所示,该实施环境包括计算机系统,比如网络设备301,该网络设备301包括处理器3011和存储器3012。处理器3011与存储器3012连接,存储器3012用于存放程序包括的指令,处理器3011用于调用并执行存储器3012中的指令,以执行本申请实施例提供的指令预测方法。图3示出的处理器3011和存储器3012的数量仅为本申请实施例举例说明的数量,本申请实施例对此不加以限定。
本申请实施例提供的指令预测方法可如图4所示,接下来,结合图3示出的实施场景,对本申请实施例提供的指令预测方法进行说明。如图4所示,该方法包括但不限于S401至S403。
S401,处理器获取待执行的多个第一IB,任一个第一IB包括顺序执行的至少一条指令,该至少一条指令包括一条分支指令。
在一种可能的实现方式中,程序上下文中包括待执行的多条指令,该多条指令中包括分支指令。处理器从程序上下文中获取待执行的多条指令,进而得到待执行的多个第一IB。例如,程序上下文可以与数据包的类型相对应。该处理器接收到数据包后,执行转发程序以转发该数据包,转发程序包括多条指令。对于不同类型的数据包,处理器执行转发程序的过程中可以得到不同的程序上下文,该程序上下文包括的多条指令为转发程序包括的多条指令中的全部或者部分。
示例性地,在获取待执行的多条指令之后,处理器基于该多条指令中的分支指令获取多个第一IB。本申请实施例不对获取多个第一IB的方式进行限定,例如,处理器识别多条指令中的分支指令,基于识别到的分支指令将多条指令划分为多个第一IB。对于该多个第一IB中的任一个第一IB,该任一个第一IB包括的最后一条指令为分支指令。本申请不对各个第一IB包括的指令的数量加以限定,也即,对于该多个第一IB中的任一个第一IB,该任一个第一IB包括至少一条指令,该至少一条指令包括一条分支指令。
S402,处理器基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与该多个第一IB对应的候选执行路径,任一条候选执行路径指示多个第二IB之间的跳转关系,与该多个第一IB对应的候选执行路径指示的跳转关系中包括该多个第一IB之间的跳转关系。
示例性地,对于至少一条候选执行路径中的任一条候选执行路径,该任一条候选执行路径为一个IB group。也就是说,对于该任一条候选执行路径而言,该IB group包括的多个IB为多个第二IB,该IB group中各个IB之间的跳转关系为该任一条候选执行路径指示的多个第二IB之间的跳转关系。例如,该至少一条候选执行路径包括上述5个IB group中的IB group1、IB group3和IB group4,也即该至少一条候选执行路径包括IB1→IB2→IB4→IB8,IB1→IB2→IB4→IB9和IB1→IB3→IB6→IB10。根据图1示出的转发程序包括的指令可以看出转发程序非常复杂,该转发程序包括的IB group的数量极其庞大。由此,产品人员可以根据需求选择需要保证性能的场景,将该选择的场景对应的IB group确定为该至少一条候选执行路径。由于该至少一条候选执行路径可以是产品人员确定出的,该至少一条候选执行路径的准确性较高。该至少一条候选执行路径可以存储在存储器中,从而处理器可以基于存储器获取与多个第一IB对应的候选执行路径。
在一种可能的实现方式中,该存储器中除至少一条候选执行路径以外,还存储有与至少一条候选执行路径各自对应的关键字,则处理器可以基于该存储器中存储的与至少一条候选执行路径各自对应的关键字,实现获取与多个第一IB对应的候选执行路径。示例性地,基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与该多个第一IB包括的分支指令对应的候选执行路径,包括:基于多个第一IB包括的分支指令获取该多个第一IB对应的关键字(key),不同关键字对应不同的候选执行路径;在至少一条候选执行路径中查找与该关键字对应的候选执行路径,将与该关键字对应的候选执行路径作为与该多个第一IB对应的候选执行路径。
示例性地,基于该多个第一IB包括的分支指令获取该多个第一IB对应的关键字,包括:将该多个第一IB包括的分支指令进行组合,得到该多个第一IB对应的关键字。本申请实施例不对将分支指令进行组合得到关键字的方式进行限定。处理器可以直接将各个分支指令进行组合得到关键字,也可以先对各个分支指令进行处理,将处理得到的结果进行组合得到关键字。例如,处理器先对各个分支指令进行计算,获得各个分支指令的标识值,将各个分支指令的标识值进行组合得到关键字。
本申请实施例对在至少一条候选执行路径中查找与该关键字对应的候选执行路径的方式也不加以限定。例如,处理器将关键字作为一个整体,在至少一条候选执行路径中查找与该关键字对应的候选执行路径;或者,处理器按照关键字的各个部分,分级查找至少一条候选执行路径中与该关键字对应的候选执行路径。分级查找是指通过逐步缩小查找范围来查找与该关键字对应的候选执行路径的方式。例如,该关键字包括三个部分,则处理器可以基于第一个部分,在至少一条候选执行路径中查找与该第一个部分对应的候选执行路径;再基于第二个部分,在第一个部分对应的候选执行路径中查找与该第二个部分对应的候选执行路径;再基于第三个部分,在该第二个部分对应的候选执行路径中查找与该第三个部分对应的候选执行路径,将与该第三个部分对应的候选执行路径作为与该关键字对应的候选执行路径。
图5为本申请实施例提供的一种查找与关键字对应的候选执行路径的过程示意图,其中,关键字为各个分支指令直接组合得到的。图5示出了三个关键字,该三个关键字对应于多个第一IB的三种情况。例如,按照从上到下的顺序,分别对应于多个第一IB包括IB1、IB2和IB4的情况、多个第一IB包括IB1和IB2的情况以及多个第一IB包括IB1和IB3的情况。如图5所示,按照从上到下的顺序,第一个关键字为IB1的分支指令(jump,JMP)、IB2的JMP和IB4的JMP组成的关键字,第二个关键字为IB1的JMP和IB2的JMP组成的关键字,第三个关键字为IB1的JMP和IB3的JMP组成的关键字。以该第一个关键字为例,对该查找过程进行说明,处理器可以按照该关键字包括的IB1的JMP、IB2的JMP和IB4的JMP在至少一个候选执行路径中查找与该关键字对应的候选执行路径。如图5所示,该至少一个候选执行路径中,与该IB1的JMP、IB2的JMP、IB4的JMP对应的候选执行路径为IB1→IB2→IB4→IB8,也即图5示出的候选执行路径中的IB组1,该IB组1指示的多个第一IB之间的跳转关系包括:IB1执行不采取跳转分支以执行IB2、IB2执行不采取跳转分支以执行IB4和IB4执行不采取跳转分支以执行IB8。图5中其余的关键字以及与关键字对应的候选执行路径与该第一个关键字的相关内容原理相同,此处不再赘述。由图5可以看出,与多个第一IB对应的候选执行路径指示的跳转关系中包括该多个第一IB之间的跳转关系。例如,在多个第一IB包括IB1、IB2和IB4,与该多个第一IB对应的候选执行路径为IB组1的情况下,该IB组1指示的跳转关系包括IB1与IB2之间的跳转关系以及IB2与IB4之间的跳转关系。
在一种可能的实现方式中,至少一条候选执行路径以及与至少一条候选执行路径各自对应的关键字以多级存储的方式实现。示例性地,该存储有至少一条候选执行路径的存储器中还存储有与至少一条候选执行路径各自对应的索引,至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字存储在该存储器以外的其他内存中。则处理器可以基于该内存和该存储器,执行在至少一条候选执行路径中查找与该关键字对应的候选执行路径的操作。
示例性地,在至少一条候选执行路径中查找与该关键字对应的候选执行路径,包括:将该关键字输入该内存,获取该内存输出的与该关键字对应的目标索引;在该存储器存储的至少一条候选执行路径中查找与该目标索引对应的候选执行路径,将与该目标索引对应的候选执行路径作为与该关键字对应的候选执行路径。该内存可以为三重内容可寻址内存(ternary content addressable memory,TCAM),从而基于该TCAM能够快速获取与该关键字对应的目标索引。
图6为本申请实施例提供的一种获取多个第一IB对应的候选执行路径的过程示意图,该图6示出了处理器由获取多个第一IB直到获取多个第一IB对应的候选执行路径的整体过程。如图6所示,处理器从程序上下文中获取多个第一IB,基于该多个第一IB包括的分支指令获取该多个第一IB对应的关键字;将该关键字输入TCAM,获取TCAM输出的与该关键字对应的目标索引,该TCAM中存储有至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字;使用该目标索引访问存储有至少一条候选执行路径以及与该至少一条候选执行路径各自对应的索引的存储器,在存储器中查找与该目标索引对应的候选执行路径,将与该目标索引对应的候选执行路径作为与该关键字对应的候选执行路径,从而将该候选执行路径作为与该多个第一IB对应的候选执行路径。
示例性地,该TCAM包括至少一个entry,一个entry对应一个关键字。该存储器包括至少一个entry,一个entry对应一条候选执行路径,且该存储器包括的entry与该TCAM包括的entry数量相同。该处理器获取关键字的逻辑可以是由编译器编译转发程序后生成的,TCAM的配置数据和该存储器中存储的内容也可以是由编译器生成并分别预先加载在TCAM和该存储器中的,本申请实施例对此不加以限定。
由于该至少一条候选执行路径是基于需要保证性能的场景确定的,并且确定出的候选执行路径并非基于实际确定出的所要执行的指令得到的,可能存在某些分支指令对应的下一条指令只有在实际执行之后才能得到的情况,因此,该至少一条候选执行路径可以不需要包括该程序中的所有执行路径。相应的,TCAM中也可以不需要存储所有执行路径各自对应的索引以及与各个索引对应的关键字,存储器中也不需要存储所有执行路径各自对应的索引以及与各个索引对应的关键字。从而能够避免过多的分支指令组合在一起导致关键字过长,减少对存储资源的占用,减少获取多个第一IB对应的候选执行路径的实现代价。再有,由于TCAM的成本较高,该存储有至少一条候选执行路径以及与至少一条候选执行路径各自对应的索引的存储器可以为除TCAM之外的其他存储器,从而节约成本。
S403,处理器基于该多个第一IB之间的跳转关系,预测各个第一IB包括的分支指令对应的下一条指令。
示例性地,对于任一第一IB,该任一第一IB包括的分支指令对应的下一条指令为下一个第一IB包括的第一条指令。例如,该多个第一IB包括IB1、IB2和IB4,该多个第一IB对应的候选执行路径为IB1→IB2→IB4→IB8。则对于IB1,该IB1包括的分支指令对应的下一条指令为IB2包括的第一条指令。对于IB2,该IB2包括的分支指令对应的下一条指令为IB4包括的第一条指令。对于IB4,该IB4包括的分支指令对应的下一条指令为IB8包括的第一条指令。
对于在至少一条候选执行路径中未查找到与多个第一IB对应的候选执行路径的情况,本申请实施例提供的方法也能够对各个第一IB包括的分支指令对应的下一条指令进行预测,以灵活适用于不同的情况。在一种可能的实现方式中,该方法还包括:基于在该至少一条候选执行路径中未查找到与多个第一IB对应的候选执行路径,处理器确定该多个第一IB之间的跳转关系为参考跳转关系;基于参考跳转关系预测各个第一IB包括的分支指令对应的下一条指令。示例性地,该参考跳转关系为不采取跳转。
基于前文说明,对于条件分支指令来说,在执行不采取跳转分支的情况下,处理器执行在程序中按照顺序位于该条件分支指令之后的第一条指令,在执行采取跳转分支的情况下,处理器执行其他程序内存中的指令。由于处理器由执行一个程序内存中的指令转为执行其他程序内存中的指令时需要时间,例如,需要等待配置指令的执行环境,在配置完毕后才能执行其他程序内存中的指令,因此,在将参考跳转关系为不采取跳转的情况下,如果基于该不采取跳转预测到的下一条指令为实际所需执行的下一条指令,处理器能够减少转为执行其他程序内存中的指令的次数,从而减少等待时间,提高指令的执行效率。
在一种可能的实现方式中,处理器确定该多个第一IB之间的跳转关系为参考跳转关系,包括:处理器在各个第一IB之间添加目标指令,该目标指令用于指示各个第一IB之间的跳转关系为该参考跳转关系。例如,在处理器获取到的多个第一IB包括IB1、IB3和IB7的情况下,该处理器未在至少一条候选执行路径中查找到与该IB1、IB3和IB7对应的候选执行路径。则处理器在IB1和IB3之间添加一条目标指令,该条目标指令用于指示IB1和IB3之间的跳转关系为参考跳转关系;在IB3和IB7之间添加一条目标指令,该条目标指令用于指示IB3和IB7之间的跳转关系为参考跳转关系。本申请实施例不对处理器添加目标指令的方式进行限定,处理器可以在各个第一IB的开端或者末尾添加该目标指令。例如,上述情况中,处理器可以分别在IB1和IB3的第一条指令之前添加该目标指令,也可以分别在IB1和IB3的最后一条指令之后添加该目标指令。本申请实施例对目标指令的指令类型也不加以限定。
在一种可能的实现方式中,处理器确定该多个第一IB之间的跳转关系之后,该方法还包括:处理器基于该多个第一IB之间的跳转关系,将多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,该执行顺序信息用于指示多个第一IB包括的指令的执行顺序,该存储地址信息用于指示多个第一IB包括的指令的存储地址;从该IB队列中依次获取多个第一IB的执行顺序信息和存储地址信息;按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,执行获取到的指令。示例性地,对于执行顺序相邻的两条指令,处理器执行获取到的前一条指令之前的操作不早于基于后一条指令的存储地址获取后一条指令的操作。也就是说,处理器在基于前一条指令确定出所需执行的下一条指令之前,执行基于后一条指令的存储地址获取后一条指令的操作。
示例性地,对于IB队列中存储的多个第一IB的执行顺序信息和存储地址信息,处理器先从IB队列中获取一个第一IB的执行顺序信息和存储地址信息,按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,直到该第一IB包括的指令取完,再从IB队列中获取下一个第一IB的执行顺序信息和存储地址信息,执行与上一个第一IB类似的操作。
在一种可能的实现方式中,该多个第一IB的存储地址信息包括各个第一IB对应的起始指令计数器(start program counter,start PC)信息和大小(size)信息。对于任一个第一IB,该起始PC信息用于指示该第一IB中的第一条指令的存储地址,该大小信息用于指示该第一IB包括的指令数量。由于该IB队列中存储有各个第一IB的起始PC信息和大小信息,该IB队列也可以称为多PC队列(multiple PC queue,MPC queue)。
示例性地,执行顺序信息包括递增取值,对于获取到执行顺序信息和存储地址信息的第一IB,处理器获取指令的过程包括:处理器基于该第一IB的起始PC信息指示的存储地址开始递增取指,直到该第一IB包括的指令取完。示例性地,基于起始PC信息指示的存储地址开始递增取指,包括:基于起始PC信息指示的存储地址获取第一条指令,将该起始PC信息增加参考值,基于通过增加参考值得到的PC信息指示的存储地址获取第二条指令,重复执行增加参考值,基于通过增加参考值得到的PC信息指示的存储地址获取指令的操作。参考值可以根据经验或实际需求确定,本申请实施例对此不加以限定。示例性地,指令的存储地址存储在指令计数器(program counter,PC)中,也即处理器从PC中获取指令的存储地址,进而基于该存储地址获取该指令。
在一种可能的实现方式中,处理器基于指令流水线执行基于存储地址依次获取指令,执行获取到的指令的操作。例如,对于执行顺序相邻的两条指令,处理器在取指令阶段执行基于前一条指令的存储地址获取该前一条指令的操作,再将获取到的前一条指令送入执行阶段。并且,处理器在将该前一条指令送入执行阶段之前或者在将该前一条指令送入执行阶段的同时,在取指令阶段执行基于后一条指令的存储地址获取该后一条指令的操作。
图7为本申请实施例提供的一种指令流水线的示意图。如图7所示,该指令流水线包括五个阶段,分别为取指令(fetch)阶段、译码(decode)阶段、执行(execute)阶段、访存(access)阶段和回写(write-back)阶段,一个阶段均对应一个时钟周期(cycle)。取指令阶段用于从PC中获取指令的存储地址,基于该存储地址获取指令,将获取的指令送入译码阶段。译码阶段用于将指令翻译为具体的功能操作,将完成译码的指令送入执行阶段。执行阶段用于执行该完成译码的指令。访存阶段用于访问存储器,例如,从存储器中读出数据。回写阶段用于将执行结果写入寄存器或内存。结合图7示出的指令流水线,对处理器在各个cycle执行的操作进行说明。处理器在第一个cycle从PC中获取指令的存储地址,基于该存储地址获取该指令,并预测所要执行的下一条指令。处理器在第二个cycle将该获取到的指令送入译码阶段,并且从PC中获取下一条指令的存储地址,基于该存储地址获取该下一条指令。依次类推,处理器在其他cycle执行的阶段原理相同,此处不再赘述。
在一种可能的实现方式中,对于获取到的指令为分支指令的情况,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,该方法还包括:基于所需执行的下一条指令获取待执行的至少一个第三IB,预测至少一个第三IB包括的分支指令对应的下一条指令。如果预测的分支指令对应的下一条指令与所需执行的下一条指令不同,说明多个第一IB中的某些指令不是需要执行的指令,则在该情况下,该方法能够获取新的待执行的多条指令。进而获取待执行的至少一个第三IB,再预测至少一个第三IB包括的分支指令对应的下一条指令。
示例性地,处理器在获取指令之后,为该指令添加属性信息,该属性信息用于指示该指令是为预测出的所需执行的指令,还是为实际确定出的所需执行的指令。在本申请实施例中,预测出的所需执行的指令的属性信息为预测的(predicted),实际确定出的所需执行的指令的属性信息为准确的(accurate)。从而,处理器能够在执行阶段基于接收到的指令的属性信息确定该指令为哪种指令,进而在确定接收的指令为预测出的所需执行的指令的情况下,确定该预测出的所需执行的指令与实际所需执行的指令是否相同。
示例性地,对于获取到的指令为分支指令的情况,响应于预测的该分支指令对应的下一条指令与所需执行的下一条指令不同,处理器删除IB队列中存储的多个第一IB的执行顺序信息和存储地址信息。该删除的操作也可称为冲刷(flush)。例如,在预测出的所需执行的指令与实际所需执行的指令不同的情况下,处理器中执行阶段对应的电路将实际所需执行的指令的存储地址反馈给处理器中取指令阶段对应的电路,取指令阶段对应的电路接收到该反馈后,冲刷IB队列中存储的多个第一IB的执行顺序信息和存储地址信息。进而取指令阶段对应的电路能够基于实际所需执行的指令的存储地址获取该实际所需执行的指令,执行获取至少一个第三IB的操作。
示例性地,在预测出的所需执行的指令与实际所需执行的指令不同的情况下,处理器将预测出的所需执行的指令的执行结果标记为不回写状态,该不回写状态用于指示回写阶段对应的电路不回写该指令的执行结果。对于后续送入执行阶段的指令,处理器仍将该指令的执行结果标记为不回写状态,直到取指令阶段对应的电路获取的指令为实际所需执行的指令为止。相应的,该方法还可以包括:对于任一条指令,处理器基于该指令的执行结果的标记情况确定是否将该执行结果写入寄存器或内存。例如,处理器的回写阶段对应的电路在接收到执行结果后,响应于该执行结果被标记为不回写状态,不将该执行结果写入寄存器或内存;响应于该执行结果未被标记为不回写状态,将该执行结果写入寄存器或内存。通过标记执行结果,处理器能够实现不回写该执行结果,从而避免该执行结果占用寄存器或内存的存储空间,造成存储空间浪费。
在一种可能的实现方式中,处理器基于指令的执行结果更新程序上下文,从更新后的程序上下文中获取待执行的至少一个第三IB。随着处理器执行各条指令,处理器能够基于各条指令的执行结果更新该程序的上下文,更新后的程序上下文中包括新的待执行的多条指令。进而,处理器能够预测至少一个第三IB包括的分支指令对应的下一条指令。处理器获取待执行的至少一个第三IB,预测至少一个第三IB包括的分支指令对应的下一条指令的方式与前文中处理器获取多个第一IB,预测各个第一IB包括的分支指令对应的下一条指令的方式原理相同,此处不再赘述。
图8为本申请实施例提供的一种获取至少一个第三IB对应的执行路径的过程示意图。通过获取至少一个第三IB对应的执行路径,处理器能够预测各个第三IB包括的分支指令对应的下一条指令。如图8所示,该图8左侧为程序包括的多条指令,处理器获取的待执行的多个第一IB包括IB1、IB2和IB4,获取到的该多个第一IB对应的候选执行路径为IB1→IB2→IB4→IB8→IB11,也即图8右侧示出的IB组6。在一种可能的实现方式中,处理器执行IB2的分支指令时确定实际所需执行的下一条指令为IB5的第一条指令,在该情况下,处理器基于该IB5的第一条指令获取待执行的至少一个第三IB,该至少一个第三IB包括IB5和IB9,获取IB5和IB9对应的执行路径,获取到的执行路径为图8示出的IB组7,也即为IB5→IB9。
在另一种可能的实现方式中,处理器执行IB1的分支指令时确定实际所需执行的下一条指令为IB3的第一条指令,在该情况下,处理器基于该IB3的第一条指令获取待执行的至少一个第三IB,该至少一个第三IB包括IB3、IB6和IB10,获取该IB3、IB6和IB10对应的执行路径,获取到的执行路径为图8示出的IB组8,也即为IB3→IB6→IB10。
在又一种可能的实现方式中,处理器执行IB3的分支指令时确定实际所需执行的下一条指令为IB7的第一条指令,在该情况下,处理器基于该IB7的第一条指令获取待执行的至少一个第三IB,该至少一个第三IB仅包括IB7。相应的,获取到的执行路径仅包括IB7,也即图8示出的IB组9。
在一种可能的实现方式中,该处理器能够与多线程技术结合。也就是说,处理器支持至少两个线程的调用。则处理器可以调用至少两个线程中的任一个线程,在该任一个线程上,执行基于存储地址获取指令的操作。例如,在处理器支持调用2个线程的情况下,处理器可以在该2个线程中的任一个线程上,执行基于存储地址获取指令的操作。
对于该处理器中用于执行基于存储地址获取指令的操作的资源,可以采用可抢占的线程调度。处理器仅在资源空闲时,在该至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。图9为本申请实施例提供的一种处理器的取指令阶段获取指令的过程示意图。该处理器支持调用2个线程,分别为线程(thread,TH)0和TH1。该MPC队列包括PC0至PCN,该PC0至PCN依次对应各个第一IB的存储地址信息,该存储地址信息包括起始PC信息,N为整数。按照存储地址信息指示的存储地址获取的指令称为预测指令,按照实际所需执行的指令的存储地址获取的指令称为准确指令。
如图9所示,该处理器在未在TH1上执行获取准确指令的操作,该TH1的状态(state)为空闲(idle)时,在TH0上执行获取预测指令的操作。从而按照时间先后,该处理器的取指令阶段先在TH0上执行获取准确指令的操作,之后,在TH0上执行获取预测指令的操作,再在TH1上执行获取准确指令的操作,最后,在TH0上执行获取预测指令的操作。通过仅在资源空闲时执行获取预测指令的操作,能够避免执行获取预测指令的操作对执行获取准确指令的操作造成影响,实现指令获取错误零惩罚(penalty)。
示例性地,该处理器包括至少一个内核。本申请实施例提供的方法中,处理器的功能可以由该处理器中的内核实现。例如,该处理器中的任一个内核可以调用2个线程。
本申请实施例提供的方法中,通过在至少一个候选执行路径中查找与多个第一IB对应的候选执行路径,基于多个第一IB对应的候选执行路径指示的多个第一IB之间的跳转关系,能够预测各个第一IB包括的分支指令对应的下一条指令,该方法能够适用于业务随机性较高的网络处理器和CPU等处理器,适用范围较广。
并且,该方法基于多个第一IB包括的分支指令,获取与多个第一IB对应的候选执行路径。由于该候选执行路径指示的跳转关系中包括该多个第一IB之间的跳转关系,基于该多个第一IB之间的跳转关系能够直接对各个第一IB包括的分支指令对应的下一条指令进行预测,从而预测各个第一IB包括的分支指令对应的下一条指令的效率较高。
再有,由于多个第一IB之间的跳转关系是通过该多个第一IB对应的候选执行路径指示的,该多个第一IB之间的跳转关系可以不同。与相关技术中将某一路分支对应的指令固定的作为所要执行的下一条指令的方式相比,该方法获取到的多个第一IB之间的跳转关系的准确性较高,从而预测各个第一IB包括的分支指令对应的下一条指令的准确性较高,指令的执行效率较高。
另外,在处理器的功能由该处理器中的内核实现,一个内核调用2线程的情况下,以该方法实现的指令预测能够使得内核效率从55%提升到90%以上。从而对于所需达到的内核效率,处理器所需的内核数量较少,处理器所需的面积、实现代价、功耗和延时均较低。
图10是本申请实施例提供的一种指令预测装置的结构示意图。示例性地,该装置应用于上述图4所示的处理器。基于图10所示的如下多个模块,该图10所示的指令预测装置能够执行该处理器所执行的全部或部分操作。应理解到,该装置可以包括比所示模块更多的附加模块或者省略其中所示的一部分模块,本申请实施例对此不进行限制。如图10所示,该装置包括:
获取模块1001,用于获取待执行的多个第一指令块IB,任一个第一IB包括顺序执行的至少一条指令,该至少一条指令包括一条分支指令;
查找模块1002,用于基于多个第一IB包括的分支指令,在至少一条候选执行路径中查找与多个第一IB对应的候选执行路径,任一条候选执行路径指示多个第二IB之间的跳转关系,与多个第一IB对应的候选执行路径指示的跳转关系中包括多个第一IB之间的跳转关系;
预测模块1003,用于基于多个第一IB之间的跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
在一种可能的实现方式中,查找模块1002,用于基于多个第一IB包括的分支指令获取多个第一IB对应的关键字,不同关键字对应不同的候选执行路径;在至少一条候选执行路径中查找与关键字对应的候选执行路径,将与关键字对应的候选执行路径作为与多个第一IB对应的候选执行路径。
在一种可能的实现方式中,至少一条候选执行路径以及与至少一条候选执行路径各自对应的索引存储在存储器中,至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字存储在内存中;查找模块1002,用于将关键字输入内存,获取内存输出的与关键字对应的目标索引,在存储器存储的至少一条候选执行路径中查找与目标索引对应的候选执行路径,将与目标索引对应的候选执行路径作为与关键字对应的候选执行路径。
在一种可能的实现方式中,查找模块1002,还用于基于在至少一条候选执行路径中未查找到与多个第一IB对应的候选执行路径,确定多个第一IB之间的跳转关系为参考跳转关系;基于参考跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
在一种可能的实现方式中,查找模块1002,用于在各个第一IB之间添加目标指令,目标指令用于指示各个第一IB之间的跳转关系为该参考跳转关系。
在一种可能的实现方式中,获取模块1001,还用于基于多个第一IB之间的跳转关系,将多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,执行顺序信息用于指示多个第一IB包括的指令的执行顺序,存储地址信息用于指示多个第一IB包括的指令的存储地址;从IB队列中依次获取多个第一IB的执行顺序信息和存储地址信息;按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,执行获取到的指令。
在一种可能的实现方式中,获取模块1001,还用于对于获取到的指令为分支指令,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,基于所需执行的下一条指令获取待执行的至少一个第三IB,预测至少一个第三IB包括的分支指令对应的下一条指令。
在一种可能的实现方式中,获取模块1001,还用于对于获取到的指令为分支指令,响应于预测的分支指令对应的下一条指令与所需执行的下一条指令不同,删除IB队列中存储的多个第一IB的执行顺序信息和存储地址信息。
在一种可能的实现方式中,处理器支持至少两个线程,获取模块1001,用于在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
在一种可能的实现方式中,获取模块1001,用于在资源空闲时,在至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
本申请实施例提供的装置中,通过在至少一个候选执行路径中查找与多个第一IB对应的候选执行路径,基于多个第一IB对应的候选执行路径指示的多个第一IB之间的跳转关系,能够预测各个第一IB包括的分支指令对应的下一条指令,该装置能够适用于业务随机性较高的网络处理器和CPU等处理器,适用范围较广。
并且,该装置基于多个第一IB包括的分支指令,获取与多个第一IB对应的候选执行路径。由于该候选执行路径指示的跳转关系中包括该多个第一IB之间的跳转关系,基于该多个第一IB之间的跳转关系能够直接对各个第一IB包括的分支指令对应的下一条指令进行预测,从而预测各个第一IB包括的分支指令对应的下一条指令的效率较高。
再有,由于多个第一IB之间的跳转关系是通过该多个第一IB对应的候选执行路径指示的,该多个第一IB之间的跳转关系可以不同。与相关技术中将某一路分支对应的指令固定的作为所要执行的下一条指令的方式相比,该方法获取到的多个第一IB之间的跳转关系的准确性较高,从而预测各个第一IB包括的分支指令对应的下一条指令的准确性较高,指令的执行效率较高。
应理解的是,上述图10提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述实施例中的装置的具体硬件结构如图11所示的计算机系统,比如网络设备1500,包括收发器1501、处理器1502和存储器1503。收发器1501、处理器1502和存储器1503之间通过总线1504连接。其中,收发器1501用于发送数据和接收数据,存储器1503用于存放指令或程序代码,处理器1502用于调用存储器1503中的指令或程序代码使得设备执行上述方法实施例中处理器的相关处理步骤。在具体实施例中,本申请实施例的网络设备1500可对应于上述各个方法实施例中的处理器,网络设备1500中的处理器1502读取存储器1503中的指令或程序代码,使图11所示的网络设备1500能够执行处理器所执行的全部或部分操作。
网络设备1500还可以对应于上述图10所示的装置,例如,图10中所涉及的获取模块1001、查找模块1002和预测模块1003相当于处理器1502。
参见图12,图12示出了本申请一个示例性实施例提供的计算机系统,比如网络设备2000的结构示意图。图12所示的网络设备2000用于执行上述图4所示的指令预测方法所涉及的操作。该网络设备2000例如是交换机、路由器等。
如图12所示,网络设备2000包括至少一个处理器2001、存储器2003以及至少一个通信接口2004。
处理器2001例如是CPU、数字信号处理器(digital signal processor,DSP)、网络处理器(network processer,NP)、图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processing units,NPU)、数据处理单元(data processingunit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器2001包括专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。PLD例如是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种逻辑方框、模块和电路。所述处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,DSP和微处理器的组合等等。
可选的,网络设备2000还包括总线。总线用于在网络设备2000的各组件之间传送信息。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。图12中网络设备2000的各组件之间除了采用总线连接,还可采用其他方式连接,本发明实施例不对各组件的连接方式进行限定。
存储器2003例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器2003例如是独立存在,并通过总线与处理器2001相连接。存储器2003也可以和处理器2001集成在一起。
通信接口2004使用任何收发器一类的装置,用于与其它设备或通信网络通信,通信网络可以为以太网、无线接入网(RAN)或无线局域网(wireless local area networks,WLAN)等。通信接口2004可以包括有线通信接口,还可以包括无线通信接口。具体的,通信接口2004可以为以太(ethernet)接口、快速以太(fast ethernet,FE)接口、千兆以太(gigabit ethernet,GE)接口,异步传输模式(asynchronous transfer mode,ATM)接口,无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合。以太网接口可以是光接口,电接口或其组合。在本申请实施例中,通信接口2004可以用于网络设备2000与其他设备进行通信。
在具体实现中,作为一种实施例,处理器2001可以包括一个或多个CPU,如图12中所示的CPU0和CPU1。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备2000可以包括多个处理器,如图12中所示的处理器2001和处理器2005。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备2000还可以包括输出设备和输入设备。输出设备和处理器2001通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器2001通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器2003用于存储执行本申请方案的程序代码2010,处理器2001可以执行存储器2003中存储的程序代码2010。也即是,网络设备2000可以通过处理器2001以及存储器2003中的程序代码2010,来实现方法实施例提供的指令预测方法。程序代码2010中可以包括一个或多个软件模块。可选地,处理器2001自身也可以存储执行本申请方案的程序代码或指令。
在具体实施例中,本申请实施例的网络设备2000可对应于上述各个方法实施例中的处理器,网络设备2000中的处理器2001读取存储器2003中的程序代码2010或处理器2001自身存储的程序代码或指令,使图12所示的网络设备2000能够执行处理器所执行的全部或部分操作。
网络设备2000还可以对应于上述图10所示的装置,图10所示的装置中的每个功能模块采用网络设备2000的软件实现。换句话说,图10所示的装置包括的功能模块为网络设备2000的处理器2001读取存储器2003中存储的程序代码2010后生成的。例如,图10中所涉及的获取模块1001、查找模块1002和预测模块1003相当于处理器2001和/或处理器2005。
其中,图4所示的方法的各步骤通过网络设备2000的处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
参见图13,图13示出了本申请另一个示例性实施例提供的计算机系统,比如网络设备2100的结构示意图。图13所示的网络设备2100用于执行上述图4所示的指令预测方法所涉及的全部或部分操作。该网络设备2100例如是交换机、路由器等,该网络设备2100可以由一般性的总线体系结构来实现。如图13所示,网络设备2100包括:主控板2110和接口板2130。
主控板也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板2110用于对网络设备2100中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板2110包括:中央处理器2111和存储器2112。
接口板2130也称为线路接口单元卡(line processing unit,LPU)、线卡(linecard)或业务板。接口板2130用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(packet over SONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(flexible ethernet clients,FlexE Clients)。接口板2130包括:中央处理器2131网络处理器2132、转发表项存储器2134和物理接口卡(physical interface card,PIC)2133。
接口板2130上的中央处理器2131用于对接口板2130进行控制管理并与主控板2110上的中央处理器2111进行通信。
网络处理器2132用于实现报文的转发处理。网络处理器2132的形态可以是转发芯片。转发芯片可以是网络处理器(network processor,NP)。在一些实施例中,转发芯片可以通过专用集成电路(application-specific integrated circuit,ASIC)或现场可编程门阵列(field programmable gate array,FPGA)实现。具体而言,网络处理器2132用于基于转发表项存储器2134保存的转发表转发接收到的报文,如果报文的目的地址为报文处理设备2100的地址,则将该报文上送至CPU(如中央处理器2131)处理;如果报文的目的地址不是网络设备2100的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理可以包括:报文入接口的处理,转发表查找;下行报文的处理可以包括:转发表查找等等。在一些实施例中,中央处理器也可执行转发芯片的功能,比如基于通用CPU实现软件转发,从而接口板中不需要转发芯片。
物理接口卡2133用于实现物理层的对接功能,原始的流量由此进入接口板2130,以及处理后的报文从该物理接口卡2133发出。物理接口卡2133也称为子卡,可安装在接口板2130上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器2132处理。在一些实施例中,中央处理器2131也可执行网络处理器2132的功能,比如基于通用CPU实现软件转发,从而物理接口卡2133中不需要网络处理器2132。
示例性地,网络设备2100包括多个接口板,例如网络设备2100还包括接口板2140,接口板2140包括:中央处理器2141、网络处理器2142、转发表项存储器2144和物理接口卡2143。接口板2140中各部件的功能和实现方式与接口板2130相同或相似,在此不再赘述。
示例性地,网络设备2100还包括交换网板2120。交换网板2120也可以称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板的情况下,交换网板2120用于完成各接口板之间的数据交换。例如,接口板2130和接口板2140之间可以通过交换网板2120通信。
主控板2110和接口板耦合。例如。主控板2110、接口板2130和接口板2140,以及交换网板2120之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板2110和接口板2130及接口板2140之间建立进程间通信协议(inter-processcommunication,IPC)通道,主控板2110和接口板2130及接口板2140之间通过IPC通道进行通信。
在逻辑上,网络设备2100包括控制面和转发面,控制面包括主控板2110和中央处理器2111,转发面包括执行转发的各个组件,比如转发表项存储器2134、物理接口卡2133和网络处理器2132。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护网络设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器2132基于控制面下发的转发表对物理接口卡2133收到的报文查表转发。控制面下发的转发表可以保存在转发表项存储器2134中。在有些实施例中,控制面和转发面可以完全分离,不在同一网络设备上。
值得说明的是,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的报文处理设备的数据接入和处理能力要大于集中式架构的报文处理设备。示例性地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态的网络设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
在具体实施例中,网络设备2100对应于上述图10所示的指令预测装置。在一些实施例中,图10所示的指令检测装置中的获取模块1001、查找模块1002和预测模块1003相当于网络设备2100中的中央处理器2111或网络处理器2132。
应理解的是,上述处理器可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
进一步地,在一种可选的实施例中,上述存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data dateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。
还提供了一种计算机可读存储介质,存储介质中存储有至少一条程序指令或代码,所述程序指令或代码由处理器加载并执行时以使计算机实现图4中的指令预测方法。
本申请提供了一种计算机程序(产品),当计算机程序被计算机执行时,可以使得处理器或计算机执行上述方法实施例中对应的各个步骤和/或流程。
提供了一种芯片,包括处理器,用于从存储器中调用并运行所述存储器中存储的指令,使得安装有所述芯片的网络设备执行上述各方面中的方法。
示例性地,该芯片还包括:输入接口、输出接口和所述存储器,所述输入接口、输出接口、所述处理器以及所述存储器之间通过内部连接通路相连。
还提供了一种设备,该设备包括上述芯片。可选地,该设备为网络设备。示例性地,该设备为路由器或交换机或服务器。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid statedisk,SSD))等。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和模块,能够以软件、硬件、固件或者其任意组合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。作为示例,本申请实施例的方法可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本申请实施例的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的指令预测装置的处理器,使得程序代码在被计算机或其他可编程的指令预测装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本申请实施例的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质等等。
信号的示例可以包括电、光、无线电、声音或其它形式的传播信号,诸如载波、红外信号等。
机器可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、设备和模块的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、设备或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”、“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一设备可以被称为第二设备,并且类似地,第二设备可以被称为第一设备。第一设备和第二设备都可以是任一类型的网络设备,并且在某些情况下,可以是单独且不同的网络设备。
还应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
还应理解,术语“若”和“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“若确定...”或“若检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。

Claims (26)

1.一种指令预测方法,其特征在于,包括:
处理器获取待执行的多个第一指令块IB,任一个第一IB包括顺序执行的至少一条指令,所述至少一条指令包括一条分支指令;
基于所述多个第一IB包括的分支指令,在至少一条候选执行路径中查找与所述多个第一IB对应的候选执行路径,任一条候选执行路径指示多个第二IB之间的跳转关系,所述与所述多个第一IB对应的候选执行路径指示的跳转关系中包括所述多个第一IB之间的跳转关系;
基于所述多个第一IB之间的跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
2.根据权利要求1所述的方法,其特征在于,所述基于所述多个第一IB包括的分支指令,在至少一条候选执行路径中查找与所述多个第一IB对应的候选执行路径,包括:
基于所述多个第一IB包括的分支指令获取所述多个第一IB对应的关键字,不同关键字对应不同的候选执行路径;
在所述至少一条候选执行路径中查找与所述关键字对应的候选执行路径,将与所述关键字对应的候选执行路径作为所述与所述多个第一IB对应的候选执行路径。
3.根据权利要求2所述的方法,其特征在于,所述至少一条候选执行路径以及与所述至少一条候选执行路径各自对应的索引存储在存储器中,所述至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字存储在内存中;
所述在所述至少一条候选执行路径中查找与所述关键字对应的候选执行路径,包括:
将所述关键字输入所述内存,获取所述内存输出的与所述关键字对应的目标索引,在所述存储器存储的所述至少一条候选执行路径中查找与所述目标索引对应的候选执行路径,将与所述目标索引对应的候选执行路径作为与所述关键字对应的候选执行路径。
4.根据权利要求1-3任一所述的方法,其特征在于,所述方法还包括:
基于在所述至少一条候选执行路径中未查找到与所述多个第一IB对应的候选执行路径,所述处理器确定所述多个第一IB之间的跳转关系为参考跳转关系;
基于所述参考跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
5.根据权利要求4所述的方法,其特征在于,所述处理器确定所述多个第一IB之间的跳转关系为参考跳转关系,包括:
处理器在各个第一IB之间添加目标指令,所述目标指令用于指示各个第一IB之间的跳转关系为该参考跳转关系。
6.根据权利要求1-5任一所述的方法,其特征在于,所述处理器确定所述多个第一IB之间的跳转关系之后,所述方法还包括:
所述处理器基于所述多个第一IB之间的跳转关系,将所述多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,所述执行顺序信息用于指示所述多个第一IB包括的指令的执行顺序,所述存储地址信息用于指示所述多个第一IB包括的指令的存储地址;
从所述IB队列中依次获取所述多个第一IB的执行顺序信息和存储地址信息;
按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,执行获取到的指令。
7.根据权利要求6所述的方法,其特征在于,还包括:
对于所述获取到的指令为分支指令,响应于预测的所述分支指令对应的下一条指令与所需执行的下一条指令不同,所述处理器基于所述所需执行的下一条指令获取待执行的至少一个第三IB,预测所述至少一个第三IB包括的分支指令对应的下一条指令。
8.根据权利要求6或7所述的方法,其特征在于,还包括:
对于所述获取到的指令为分支指令,响应于预测的所述分支指令对应的下一条指令与所需执行的下一条指令不同,所述处理器删除所述IB队列中存储的所述多个第一IB的执行顺序信息和存储地址信息。
9.根据权利要求6-8任一所述的方法,其特征在于,所述处理器支持至少两个线程,所述处理器在所述至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
10.根据权利要求9所述的方法,其特征在于,所述处理器在所述至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作,包括:
所述处理器在资源空闲时,在所述至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
11.一种指令预测装置,其特征在于,所述装置应用于处理器,所述装置包括:
获取模块,用于获取待执行的多个第一指令块IB,任一个第一IB包括顺序执行的至少一条指令,所述至少一条指令包括一条分支指令;
查找模块,用于基于所述多个第一IB包括的分支指令,在至少一条候选执行路径中查找与所述多个第一IB对应的候选执行路径,任一条候选执行路径指示多个第二IB之间的跳转关系,所述与所述多个第一IB对应的候选执行路径指示的跳转关系中包括所述多个第一IB之间的跳转关系;
预测模块,用于基于所述多个第一IB之间的跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
12.根据权利要求11所述的装置,其特征在于,所述查找模块,用于基于所述多个第一IB包括的分支指令获取所述多个第一IB对应的关键字,不同关键字对应不同的候选执行路径;在所述至少一条候选执行路径中查找与所述关键字对应的候选执行路径,将与所述关键字对应的候选执行路径作为所述与所述多个第一IB对应的候选执行路径。
13.根据权利要求12所述的装置,其特征在于,所述至少一条候选执行路径以及与所述至少一条候选执行路径各自对应的索引存储在存储器中,所述至少一条候选执行路径各自对应的索引以及与各个索引对应的关键字存储在内存中;所述查找模块,用于将所述关键字输入所述内存,获取所述内存输出的与所述关键字对应的目标索引,在所述存储器存储的所述至少一条候选执行路径中查找与所述目标索引对应的候选执行路径,将与所述目标索引对应的候选执行路径作为与所述关键字对应的候选执行路径。
14.根据权利要求11-13任一所述的装置,其特征在于,所述查找模块,还用于基于在所述至少一条候选执行路径中未查找到与所述多个第一IB对应的候选执行路径,确定所述多个第一IB之间的跳转关系为参考跳转关系;基于所述参考跳转关系预测各个第一IB包括的分支指令对应的下一条指令。
15.根据权利要求14所述的装置,其特征在于,所述查找模块,用于在各个第一IB之间添加目标指令,所述目标指令用于指示各个第一IB之间的跳转关系为该参考跳转关系。
16.根据权利要求11-15任一所述的装置,其特征在于,所述获取模块,还用于基于所述多个第一IB之间的跳转关系,将所述多个第一IB的执行顺序信息和存储地址信息存储在IB队列中,所述执行顺序信息用于指示所述多个第一IB包括的指令的执行顺序,所述存储地址信息用于指示所述多个第一IB包括的指令的存储地址;从所述IB队列中依次获取所述多个第一IB的执行顺序信息和存储地址信息;按照获取的执行顺序信息指示的执行顺序,基于获取的存储地址信息指示的存储地址依次获取指令,执行获取到的指令。
17.根据权利要求16所述的装置,其特征在于,所述获取模块,还用于对于所述获取到的指令为分支指令,响应于预测的所述分支指令对应的下一条指令与所需执行的下一条指令不同,基于所述所需执行的下一条指令获取待执行的至少一个第三IB,预测所述至少一个第三IB包括的分支指令对应的下一条指令。
18.根据权利要求16或17所述的装置,其特征在于,所述获取模块,还用于对于所述获取到的指令为分支指令,响应于预测的所述分支指令对应的下一条指令与所需执行的下一条指令不同,删除所述IB队列中存储的所述多个第一IB的执行顺序信息和存储地址信息。
19.根据权利要求16-18任一所述的装置,其特征在于,所述处理器支持至少两个线程,所述获取模块,用于在所述至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
20.根据权利要求19所述的装置,其特征在于,所述获取模块,用于在资源空闲时,在所述至少两个线程中的任一个线程上,执行基于存储地址获取指令的操作。
21.一种计算机系统,其特征在于,包括:处理器,当所述处理器执行程序指令或代码时,所述计算机系统实现如权利要求1-10中任一所述的方法。
22.根据权利要求21所述的计算机系统,其特征在于,还包括存储器,所述存储器用于存储所述程序指令或代码。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序指令或代码,所述程序指令或代码由计算机执行时以使所述计算机实现如权利要求1-10中任一所述的方法。
24.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序指令或代码,当其被计算机运行时,使得所述计算机实现如权利要求1-10中任一所述的方法。
25.一种芯片,其特征在于,包括处理器,所述处理器用于运程序指令或代码,使得包含所述芯片的设备执行如权利要求1-10中任一所述的方法。
26.根据权利要求25所述的芯片,其特征在于,还包括:输入接口、输出接口和存储器,所述输入接口、所述输出接口、所述处理器以及所述存储器之间通过内部连接通路相连,所述存储器包含所述程序指令或代码。
CN202210866647.7A 2022-05-10 2022-07-22 指令预测方法、装置、系统及计算机可读存储介质 Pending CN117075968A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW112116005A TW202349201A (zh) 2022-05-10 2023-04-28 指令預測方法、裝置、系統及計算機可讀取儲存媒體
US18/314,655 US20230367596A1 (en) 2022-05-10 2023-05-09 Instruction prediction method and apparatus, system, and computer-readable storage medium
EP23172233.1A EP4276611A1 (en) 2022-05-10 2023-05-09 Instruction prediction method and system, and computer-readable storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2022105049841 2022-05-10
CN202210504984 2022-05-10

Publications (1)

Publication Number Publication Date
CN117075968A true CN117075968A (zh) 2023-11-17

Family

ID=88714057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210866647.7A Pending CN117075968A (zh) 2022-05-10 2022-07-22 指令预测方法、装置、系统及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117075968A (zh)

Similar Documents

Publication Publication Date Title
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
US9824016B2 (en) Device and processing method
US8751737B2 (en) Method and apparatus for using a shared ring buffer to provide thread synchronization in a multi-core processor system
CN105378683B (zh) 用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制
CN105393240A (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
US20110231612A1 (en) Pre-fetching for a sibling cache
CN105634958A (zh) 基于多核系统的报文转发方法和装置
CN108694089B (zh) 使用非贪婪调度算法的并行计算架构
CN101154169A (zh) 多处理器系统
US9244734B2 (en) Mechanism of supporting sub-communicator collectives with o(64) counters as opposed to one counter for each sub-communicator
CN108027794B (zh) 用于数据通信的计算设备、方法和机器可读存储介质
CN110958193A (zh) 用于软件虚拟交换机的数据平面语义
US20090228663A1 (en) Control circuit, control method, and control program for shared memory
US20180293114A1 (en) Managing fairness for lock and unlock operations using operation prioritization
US20150268961A1 (en) Decoupling l2 btb from l2 cache to accelerate search for miss after miss
WO2019019719A1 (zh) 分支预测方法及装置
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
EP4425327A1 (en) Decoding method, processor, chip, and electronic device
US10445096B2 (en) Managing lock and unlock operations using traffic prioritization
CN110908996B (zh) 一种数据处理的方法和装置
CN117075968A (zh) 指令预测方法、装置、系统及计算机可读存储介质
US20230367596A1 (en) Instruction prediction method and apparatus, system, and computer-readable storage medium
US9417882B2 (en) Load synchronization with streaming thread cohorts
KR101862799B1 (ko) 메모리 컨트롤러 및 메모리 컨트롤 방법
US20230096015A1 (en) Method, electronic deviice, and computer program product for task scheduling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication