CN104423929A - 一种分支预测方法及相关装置 - Google Patents

一种分支预测方法及相关装置 Download PDF

Info

Publication number
CN104423929A
CN104423929A CN201310367653.9A CN201310367653A CN104423929A CN 104423929 A CN104423929 A CN 104423929A CN 201310367653 A CN201310367653 A CN 201310367653A CN 104423929 A CN104423929 A CN 104423929A
Authority
CN
China
Prior art keywords
instruction
branch
prediction
register
reading
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.)
Granted
Application number
CN201310367653.9A
Other languages
English (en)
Other versions
CN104423929B (zh
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.)
Institute of Computing Technology of CAS
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201310367653.9A priority Critical patent/CN104423929B/zh
Priority to PCT/CN2014/083882 priority patent/WO2015024452A1/zh
Publication of CN104423929A publication Critical patent/CN104423929A/zh
Application granted granted Critical
Publication of CN104423929B publication Critical patent/CN104423929B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

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

本发明实施例公开了一种分支预测方法及相关装置,应用于处理器中,上述处理器包括:存储寄存器标识与预测目标跳转地址的一一对应关系信息的第一BTAC,和存储程序计数器的字段与预测目标跳转地址的一一对应关系信息的第二BTAC,其中,一种分支预测方法包括:从指令缓存中读取指令;若确定该指令满足寄存器预测条件,则:根据该指令的寄存器标识,从第一BTAC中获取该指令的预测目标跳转地址;若确定该指令不满足寄存器预测条件,则根据该指令的程序计数器,从第二BTAC中获取该指令的预测目标跳转地址,本发明提供的技术方案能够有效解决在共享BTAC时影响分支预测的准确率的问题。

Description

一种分支预测方法及相关装置
技术领域
本发明涉及计算机***领域,尤其涉及一种分支预测方法及相关装置。
背景技术
目前的处理器多采用流水线的结构,使得顺序执行的指令流可以并行地执行。这种处理指令的方式在很大程度上提高了处理器的执行效率。在理想情况下,流水线的每个Stage(即流水线层)仅占用一个时钟周期,所以每个时钟周期都可以完成一条指令。但是实际情况并非如此理想,因为指令之间可能存在着相互的依赖关系从而影响指令执行的并行度。比如数据依赖、控制依赖(比如分支指令)、资源竞争、中断等等因素,都会影响指令的并行度。
实际程序中包括分支指令,分支指令的分支行为往往到等到流水线的后端才能确定,因此,分支指令可能产生控制冒险从而导致流水线停顿,同时,处理器也不能确定从哪个地址开始取下一条指令直到这条分支指令执行完为止。大部分的处理器都采用了不同形式的分支预测机制,让条件分支指令的目标跳转方向和目标跳转地址可以在流水线的前端被预测,使得处理器可以预测性地取指令并执行指令。如果分支预测正确或者正确率较高的话,可以大幅提高处理器的性能和功耗,如果分支预测错误的话,意味着预测取出的指令不能被执行,错误的指令需要从缓冲区中清除,然后从正确的地址处再重新取指令并执行。
分支目标地址缓存(BTAC,Branch Target Address Cache)用于对间接跳转分支指令的目标跳转地址进行预测。BTAC采用缓存的结构,以指令的程序计数器(PC,Program Counter)的一部分作为index(即索引),一部分作为tag(即标签),如以PC的低8位作为index,以PC的高8位作为tag。BTAC的每个Entry(即表项)对应于一个index和一个tag,并且,BTAC的每个Entry都设置一个有效位,用于记录这个Entry是否存放了有效的历史信息(历史信息即为预测的目标跳转地址),其中,Entry存放的目标跳转地址是虚拟地址(VA,Virtual Address)。如果BTAC满了,像Cache一样,也需要根据一定的替换算法决定哪个最近最少使用的Entry中存放的内容可以被替换掉。
在多线程处理器中,对BTAC的设置有两种方式:
一种是共享的BTAC,多个线程共享同一块BTAC,每个线程各自用自己的PC去索引BTAC当中存放的内容。这种方式虽然节约了面积,但是由于BTAC的索引地址是每个线程的PC,而不同线程的PC有可能一样,因此,不同线程之间的历史信息存放在同一块BTAC中,将影响分支预测的准确率;
另一种是独享的BTAC,每个线程各自设置一块BTAC,BTAC为相应的线程提供预测分支目标跳转地址的服务。这种方式虽然相比共享的方法在一定程度上提高了预测准确率,但是极大浪费了硬件资源和面积。
无论是共享的BTAC还是独享的BTAC,它们有一个共同的特点:只要BTAC不满,就以分支指令的PC作为索引记录所有和分支指令相关的历史信息。但是在实际的程序中,存在如下情况的几率很大:多个不同的分支指令跳转到同样的目标地址,比如类似C++中“Printf”这种标准的库函数,由经过编译之后得到的汇编指令可以看出,不同的分支指令总是跳转到相同的目标地址。那么使用传统的BTAC结构,这些不同的分支指令虽然跳转到同一个目标地址,但是仍将占用BTAC当中的多个Entry来记录其相关历史信息。
由上可见,在多线程处理器当中,BTAC的资源共享、分支预测的准确率之间的矛盾极为突出。
发明内容
本发明各个方面提供了一种分支预测方法及相关装置,用于解决在共享BTAC时影响分支预测的准确率的问题。
为解决上述技术问题,提供以下技术方案:
本发明第一方面提供了一种分支预测方法,应用于处理器中,上述处理器包括:第一分支目标地址预测缓存器和第二分支目标地址预测缓存器,上述第一分支目标地址预测缓存器存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,上述第二分支目标地址预测缓存器存储着:程序计数器的字段与预测目标跳转地址的一一对应关系信息,其中,上述分支预测方法,包括:从指令缓存中读取指令;
若确定读取的上述指令满足寄存器预测条件,则:
根据读取的上述指令的寄存器标识,从上述第一分支目标地址预测缓存器中获取读取的上述指令的预测目标跳转地址;
若确定读取的上述指令不满足上述寄存器预测条件,则:
则根据读取的上述指令的程序计数器,从上述第二分支目标地址预测缓存器中获取读取的上述指令的预测目标跳转地址;
其中,上述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
基于第一方面,在第一种可能的实现方式中,上述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识;
上述确定读取的上述指令满足寄存器预测条件,具体为:
当上述指令的类型为无条件间接跳转分支指令,且上述指令中的寄存器标识为特定的寄存器标识时,确定读取的上述指令满足寄存器预测条件;
上述确定读取的上述指令不满足上述寄存器预测条件,具体为:
当上述指令的类型不为无条件间接跳转分支指令,或者,上述指令中的寄存器标识不为特定的寄存器标识时,确定读取的上述指令不满足寄存器预测条件。
基于第一方面,或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,上述从上述指令缓存中读取指令之前包括:
对待读取的指令进行预译码,得到上述待读取的指令的类型信息;
上述读取指令之后包括:根据上述得到的指令的类型信息,判定当前读取的指令的类型是否为无条件间接跳转分支指令。
基于第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在上述读取指令之前,若对高级语言进行编译时调用的函数为标准库函数,则,将编译后的指令的类型指定为无条件间接跳转分支指令。
本发明第二方面提供了一种分支预测装置,应用于处理器中,上述处理器包括:第一分支目标地址预测缓存器和第二分支目标地址预测缓存器,上述第一分支目标地址预测缓存器存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,上述第二分支目标地址预测缓存器存储着:程序计数器的部分字段与预测目标跳转地址的一一对应关系信息,或者,程序计数器的全部字段与预测目标跳转地址的一一对应关系信息,其中,上述分支预测装置,包括:
读取单元,用于从指令缓存中读取指令;
预测获取单元,用于当确定上述读取单元读取的指令满足寄存器预测条件时,根据上述读取单元读取的上述指令的寄存器标识,从上述第一分支目标地址预测缓存器中获取上述读取单元读取的上述指令的预测目标跳转地址;当确定上述读取单元读取的指令不满足上述寄存器预测条件时,根据上述读取单元读取的上述指令的程序计数器,从上述第二分支目标地址预测缓存器中获取上述读取单元读取的上述指令的预测目标跳转地址;
其中,上述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
基于本发明第二方面,在第一种可能的实现方式中,上述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识;
上述分支预测装置还包括:
确定单元,用于当上述读取单元读取的指令的类型为无条件间接跳转分支指令,且上述读取单元读取的指令中的寄存器标识为特定的寄存器标识时,确定上述读取单元读取的指令满足寄存器预测条件;当上述读取单元读取的指令的类型不为无条件间接跳转分支指令,或者,上述读取单元读取的指令中的寄存器标识不为特定的寄存器标识时,确定读取的上述指令不满足寄存器预测条件。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,在第二种可能的实现方式中,上述分支预测装置还包括:
预译码单元,用于对上述读取单元待读取的指令进行预译码,得到上述读取单元待读取的指令的类型信息;
判定单元,用于在上述读取单元读取上述指令后,根据上述预译码单元得到的指令的类型信息,判定上述读取单元当前读取的指令的类型是否为无条件间接跳转分支指令。
基于本发明第二方面,或者本发明第二方面的第一种可能的实现方式,在第三种可能的实现方式中,上述分支预测装置还包括:
编译单元,用于对高级语言进行编译;
指定单元,用于当上述编译单元对高级语言进行编译时调用的函数为标准库函数时,将编译后的指令的类型指定为无条件间接跳转分支指令。
由上可见,本发明实施例中设置第一BTAC和第二BTAC,第一BTAC中使用寄存器标识作为索引(即在第一BTAC中存储寄存器标识与预测目标跳转地址的一一对应关系信息),第二BTAC中使用PC作为索引(即在第二BTAC中存储程序计数器的部分字段与预测目标跳转地址的一一对应关系信息),当读取的指令满足寄存器预测条件时,使用第一BTAC进行分支预测,否则,使用第二BTAC进行分支预测。由于寄存器标识相同的无条件间接跳转分支指令的目标跳转地址必然相同,因此,即使将目标跳转地址相同的多个无条件间接跳转分支指令的历史信息存储在第一BTAC的同一个Entry中,也不会影响分支预测的准确率,换言之,本发明提供的技术方案能够在共享第一BTAC时不对分支预测的准确率产生影响,从而使得在保证分支预测的准确率的前提下实现BTAC的资源共享成为可能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种分支预测方法一个实施例流程示意图;
图2为本发明提供的一种分支预测方法另一个实施例流程示意图;
图3为本发明提供的一种分支预测方法再一个实施例流程示意图;
图4为本发明提供的一种分支预测装置一个实施例结构示意图;
图5为本发明提供的一种分支预测装置另一个实施例结构示意图。
具体实施方式
本发明实施例提供了一种分支预测方法及相关装置。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的各个其他实施例,都属于本发明保护的范围。
下面对本发明实施例提供的一种分支预测方法进行描述,本发明实施例中的分支预测方法应用于处理器中,上述处理器包括:第一BTAC和第二BTAC,上述第一BTAC存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,上述第二BTAC存储着:PC的字段与预测目标跳转地址的一一对应关系信息,可选地,在上述第二BTAC中存储PC的部分字段与预测目标跳转地址的一一对应关系信息,或者,在上述第二BTAC中存储PC的全部字段与预测目标跳转地址的一一对应关系信息。请参阅图1,本发明实施例中的分支预测方法,包括:
101、从指令缓存中读取指令;
在本发明实施例中,步骤101读取的指令有可能为分支指令,也有可能为非分支指令。通常,分支指令可以有如下两种划分方式:一种是针对跳转条件,将分支指令的类型划分为条件分支指令和无条件分支指令,其中,条件分支指令在满足一定条件时才执行分支跳转,无条件分支指令则不需要满足任何条件,总是执行分支跳转;另一种是针对目标跳转地址,将分支指令的类型划分为直接跳转分支指令和间接跳转分支指令,其中,直接跳转分支指示的目标跳转地址的偏移量直接在指令当中用立即数(即,在立即寻址方式指令中给出的数)指定,目标跳转地址就是用分支指令本身的PC加上立即数的偏移量计算得到,而间接跳转分支指令的目标跳转地址是在寄存器当中指定的。
一条指令在从二级缓存或者内存取到指令缓存之前,需要对指令进行预译码,以便将指令的部分预译码结果作为分支预测的指导。比如,当分支指令在从二级缓存或者内存取到指令缓存之前,需要通过预译码阶段识别出该分支指令的类型(如是否为条件分支指令、是否为间接跳转分支指令等),以便根据分支指令的类型执行相应地分支预测。在预译码之后,预译码结果(如指令的类型信息)和指令会被一同保存在指令缓存中。需要说明的是,上述对指令的预译码操作可以由分支预测装置执行,或者,也可以由其它装置执行,此处不作限定。
其中,上述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
102、当读取的指令满足寄存器预测条件时,根据上述读取的指令中的寄存器标识,从第一BTAC中获取上述读取的指令的预测目标跳转地址。
103、当读取的指令不满足寄存器预测条件时,根据上述读取的指令中的程序计数器,从第二BTAC中获取上述读取的指令的预测目标跳转地址。
本发明实施例在处理器中设置第一BTAC,为便于描述,下面将第一BTAC描述为SBTAC,将第二BTAC简称为BTAC。SBTAC的硬件构造与BTAC相类似,不同的是,BTAC是以PC的一部分字段或者全部字段作为索引,而SBTAC是以寄存器标识作为索引。由于SBTAC中存储着寄存器标识与预测目标跳转地址的一一对应关系信息,因此,分支预测装置能够根据上述指令中的寄存器标识,从SBTAC中找到与该寄存器标识相对应的预测目标跳转地址。
在一种应用场景中,在步骤101之前,若对高级语言进行编译时调用的函数为标准库函数,则,分支预测装置将编译后的指令的类型指定为无条件间接跳转分支指令,如将编译后的指令的类型指定为分支与链接寄存器(BLR,Branch and Link Register)指令,BLR指令为一条无条件间接跳转分支指令,它为一个子程序调用或者函数调用引起且一定会返回,返回的地址存放在Link Register(即链接寄存器)中。需要说明的是,本发明实施例中的高级语言主要是相对于汇编语言而言,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件***,用人们更易理解的方式编写程序。本发明实施例中的高级语言并不特指某一种具体的语言,可以包括很多编程语言,如java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言等等,本发明实施例中的标准库函数是指由一些按照高级语言标准预先编写的基本函数组成的库。
需要说明的是,本发明实施例中的寄存器标识可以为寄存器号,或者,寄存器标识也可以是其它能够用于指示寄存器的代码或者符号等,本发明实施例中的分支预测方法可以应用于多线程处理器中,也可以应用于单线程处理器中,此处不作限定。
由上可见,本发明实施例中设置第一BTAC和第二BTAC,第一BTAC中使用寄存器标识作为索引(即在第一BTAC中存储寄存器标识与预测目标跳转地址的一一对应关系信息),第二BTAC中使用PC作为索引(即在第二BTAC中存储程序计数器的部分字段与预测目标跳转地址的一一对应关系信息),当读取的指令满足寄存器预测条件时,使用第一BTAC进行分支预测,否则,使用第二BTAC进行分支预测。由于寄存器标识相同的无条件间接跳转分支指令的目标跳转地址必然相同,因此,目标跳转地址相同的多个无条件间接跳转分支指令的历史信息能够存储在第一BTAC的同一个Entry而不影响分支预测的准确率,从而能够在保证分支预测的准确率的前提下实现BTAC的资源共享。
上述实施例中使用全部寄存器的寄存器标识作为SBTAC中的预测目标跳转地址的索引,本发明实施例也可以只使用部分寄存器的寄存器标识作为SBTAC中的预测目标跳转地址的索引,则上述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识,在当读取的指令的类型为无条件间接跳转分支指令,且读取指令中的寄存器标识为特定的寄存器标识时,确定读取的指令满足寄存器预测条件,当读取的指令的类型不为无条件间接跳转分支指令,或者,读取的指令中的寄存器标识不为特定的寄存器标识时,确定读取的指令不满足寄存器预测条件。如图2所示,本发明实施例中的分支预测方法,包括:
201、从指令缓存中读取指令;
一条指令在从二级缓存或者内存取到指令缓存之前,需要对指令进行预译码,以便将指令的部分预译码结果作为分支预测的指导。比如,当分支指令在从二级缓存或者内存取到指令缓存之前,需要通过预译码阶段识别出该分支指令的类型(如是否为条件分支指令、是否为间接跳转分支指令等),以便根据分支指令的类型执行相应地分支预测。在预译码之后,预译码结果和指令会被一同保存在指令缓存中。需要说明的是,上述对指令的预译码操作可以由分支预测装置执行,或者,也可以由其它装置执行,此处不作限定。
202、当读取的指令的类型为无条件间接跳转分支指令时,判断上述读取的指令中的寄存器标识是否为特定的寄存器标识;
若分支预测装置判断出上述读取的指令中的寄存器标识为特定的寄存器标识,则执行步骤203,若分支预测装置判断出上述读取的指令中的寄存器标识不为特定的寄存器标识,则执行步骤204。
203、根据上述读取的指令中的寄存器标识,从第一BTAC中获取上述读取的指令的预测目标跳转地址;
其中,上述第一BTAC中存储着:寄存器标识与预测目标跳转地址的一一对应关系信息。
204、当读取的指令的类型不为无条件间接跳转分支指令时,根据上述读取的指令中的程序计数器,从第二BTAC中获取上述读取的指令的预测目标跳转地址。
在一种应用场景中,在步骤201之前,若对高级语言进行编译时调用的函数为标准库函数,则,分支预测装置将编译后的指令的类型指定为无条件间接跳转分支指令,如将编译后的指令的类型指定为BLR指令。BLR指令为一条无条件间接跳转分支指令,它为一个子程序调用或者函数调用引起且一定会返回,返回的地址存放在Link Register(即链接寄存器)中。需要说明的是,本发明实施例中的高级语言主要是相对于汇编语言而言,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件***,用人们更易理解的方式编写程序。本发明实施例中的高级语言并不特指某一种具体的语言,可以包括很多编程语言,如java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言等等,本发明实施例中的标准库函数是指由一些按照高级语言标准预先编写的基本函数组成的库。
需要说明的是,本发明实施例中的寄存器标识可以为寄存器号,或者,寄存器标识也可以是其它能够用于指示寄存器的代码或者符号等,本发明实施例中的分支预测方法可以应用于多线程处理器中,也可以应用于单线程处理器中,此处不作限定。
由上可见,本发明实施例中设置第一BTAC和第二BTAC,第一BTAC中使用寄存器标识作为索引(即在第一BTAC中存储寄存器标识与预测目标跳转地址的一一对应关系信息),第二BTAC中使用PC作为索引(即在第二BTAC中存储程序计数器的部分字段与预测目标跳转地址的一一对应关系信息),当读取的指令满足寄存器预测条件时,使用第一BTAC进行分支预测,否则,使用第二BTAC进行分支预测。由于寄存器标识相同的无条件间接跳转分支指令的目标跳转地址必然相同,因此,即使将目标跳转地址相同的多个无条件间接跳转分支指令的历史信息存储在第一BTAC的同一个Entry中,也不会影响分支预测的准确率,换言之,本发明提供的技术方案能够在共享第一BTAC时不对分支预测的准确率产生影响,从而使得在保证分支预测的准确率的前提下实现BTAC的资源共享成为可能。
对于标准库函数下的分支指令,分支指令的目标跳转地址通常不会改变,因此,为了保证SBTAC的内容不会因为软件进程的切换而出现更新或者无效的操作,本发明实施例中对标准库函数下的分支指令使用SBTAC进行分支预测,如图3所示,本发明实施例中的分支预测方法,包括:
301、对高级语言进行编译。
302、判断是否调用标准库函数;
在编译过程中可以确定是否调用标准库函数,若没有调用标准库函数,则执行步骤303,若调用了标准库函数,则执行步骤304。
303、将编译后的指令的类型指定为其它指令存储在二级缓存或者内存中。
304、将编译后的指令的类型指定为BLR指令存储在二级缓存或者内存中。
步骤305~308与图2所示实施例中的步骤201~204类似,其具体实现方式可以参照相应步骤中的描述,此处不再赘述。
需要说明的是,本发明实施例中的寄存器标识可以为寄存器号,或者,寄存器标识也可以是其它能够用于指示寄存器的代码或者符号等,本发明实施例中的分支预测方法可以应用于多线程处理器中,也可以应用于单线程处理器中,此处不作限定。
由上可见,本发明实施例中设置第一BTAC和第二BTAC,第一BTAC中使用寄存器标识作为索引(即在第一BTAC中存储寄存器标识与预测目标跳转地址的一一对应关系信息),第二BTAC中使用PC作为索引(即在第二BTAC中存储程序计数器的部分字段与预测目标跳转地址的一一对应关系信息),当读取的指令满足寄存器预测条件时,使用第一BTAC进行分支预测,否则,使用第二BTAC进行分支预测。由于寄存器标识相同的无条件间接跳转分支指令的目标跳转地址必然相同,因此,即使将目标跳转地址相同的多个无条件间接跳转分支指令的历史信息存储在第一BTAC的同一个Entry中,也不会影响分支预测的准确率,换言之,本发明提供的技术方案能够在共享第一BTAC时不对分支预测的准确率产生影响,从而使得在保证分支预测的准确率的前提下实现BTAC的资源共享成为可能。
本发明实施例还提供了一种分支预测装置,应用于处理器中,上述处理器包括:第一BTAC和第二BTAC,上述第一BTAC存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,上述第二BTAC存储着:PC的字段与预测目标跳转地址的一一对应关系信息,可选地,在上述第二BTAC中存储PC的部分字段与预测目标跳转地址的一一对应关系信息,或者,在上述第二BTAC中存储PC的全部字段与预测目标跳转地址的一一对应关系信息,如图4所示,本发明实施例中的分支预测装置400,包括:
读取单元401,用于从指令缓存中读取指令;
一条指令在从二级缓存或者内存取到指令缓存之前,需要对指令进行预译码,以便将指令的部分预译码结果作为分支预测的指导。比如,当分支指令在从二级缓存或者内存取到指令缓存之前,需要通过预译码阶段识别出该分支指令的类型(如是否为条件分支指令、是否为间接跳转分支指令等),以便根据分支指令的类型执行相应地分支预测。在预译码之后,预译码结果(如指令的类型信息)和指令会被一同保存在指令缓存中。在一种实现方式中,上述对指令的预译码操作可以由分支预测装置执行,则本发明实施例中的分支预测装置还可以包括:预译码单元,用于对读取单元401待读取的指令进行预译码,得到上述待读取的指令的类型信息;判定单元,用于在读取单元401读取指令后,根据预译码单元得到的该指令的类型信息,判定该指令的类型是否为无条件间接跳转分支指令。当然,上述对读取单元401待读取的指令的预译码操作也可以由其它装置执行,此处不作限定。
预测获取单元402,用于当确定读取单元401读取的指令满足寄存器预测条件时,根据读取单元401读取的指令中的寄存器标识,从第一BTAC中获取读取单元401读取的指令的预测目标跳转地址。当确定读取单元401读取的指令不满足上述寄存器预测条件时,根据读取单元401读取的指令的PC,从第二BTAC中获取读取单元401读取的指令的预测目标跳转地址;其中,上述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
可选地,上述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识。则分支预测装置400还包括:确定单元,用于当读取单元401读取的指令的类型为无条件间接跳转分支指令,且读取单元401读取的指令中的寄存器标识为特定的寄存器标识时,确定读取单元401读取的指令满足寄存器预测条件;当读取单元401读取的指令的类型不为无条件间接跳转分支指令,或者,读取单元401读取的指令中的寄存器标识不为特定的寄存器标识时,确定读取的指令不满足寄存器预测条件。
在一种应用场景中,在对高级语言进行编译时,若对高级语言进行编译时调用的函数为标准库函数,则,分支预测装置将编译后的指令的类型指定为BLR。则在图4所示的分支预测装置的基础上,分支预测装置还可以包括:编译单元,用于对高级语言进行编译;指定单元,用于当上述编译单元对高级语言进行编译时调用的函数为标准库函数时,将编译后的指令的类型指定为无条件间接跳转分支指令,如将编译后的指令的类型指定为BLR指令。需要说明的是,本发明实施例中的高级语言主要是相对于汇编语言而言,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件***,用人们更易理解的方式编写程序。本发明实施例中的高级语言并不特指某一种具体的语言,可以包括很多编程语言,如java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言等等,本发明实施例中的标准库函数是指由一些按照高级语言标准预先编写的基本函数组成的库。
需要说明的是,本发明实施例中的寄存器标识可以为寄存器号,或者,寄存器标识也可以是其它能够用于指示寄存器的代码或者符号等,本发明实施例中的分支预测方法可以应用于多线程处理器中,也可以应用于单线程处理器中,此处不作限定。
需要说明的是,本发明实施例中的分支预测装置可以如上述方法实施例中的分支预测装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中设置第一BTAC和第二BTAC,第一BTAC中使用寄存器标识作为索引(即在第一BTAC中存储寄存器标识与预测目标跳转地址的一一对应关系信息),第二BTAC中使用PC作为索引(即在第二BTAC中存储程序计数器的部分字段与预测目标跳转地址的一一对应关系信息),当读取的指令满足寄存器预测条件时,使用第一BTAC进行分支预测,否则,使用第二BTAC进行分支预测。由于寄存器标识相同的无条件间接跳转分支指令的目标跳转地址必然相同,因此,即使将目标跳转地址相同的多个无条件间接跳转分支指令的历史信息存储在第一BTAC的同一个Entry中,也不会影响分支预测的准确率,换言之,本发明提供的技术方案能够在共享第一BTAC时不对分支预测的准确率产生影响,从而使得在保证分支预测的准确率的前提下实现BTAC的资源共享成为可能。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的在一种分支预测方法和分支预测装置的部分或全部布置。
本发明实施例提供另一个分支预测装置,如图5所示,本发明实施例中的分支预测装置500,包括:
输入装置501、输出装置502、存储器503以及处理器504(分支预测装置的处理器的数量可以是一个或者多个,图5以一个处理器为例)。在本发明的一些实施例中,输入装置501、输出装置502、存储器503以及处理器504可以通过总线或其它方式连接,如图5所示以通过总线连接为例。存储器503中用来储存从输入装置502输入的数据,且还可以储存处理器504处理数据的必要文件等信息;输入装置501和输出装置502可以包括分支预测装置500与其他设备通信的端口,且还可以包括分支预测装置500外接的输出设备比如显示器、键盘、鼠标和打印机等,具体地输入装置502可以包括鼠标和键盘等,而输出装置501包括显示器等。
其中,处理器504包括:第一BTAC和第二BTAC,上述第一BTAC存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,上述第二BTAC存储着:PC的字段与预测目标跳转地址的一一对应关系信息,可选地,在上述第二BTAC中存储PC的部分字段与预测目标跳转地址的一一对应关系信息,或者,在上述第二BTAC中存储PC的全部字段与预测目标跳转地址的一一对应关系信息。
处理器504执行如下步骤:
从指令缓存中读取指令;
若确定读取的上述指令满足寄存器预测条件,则:
根据读取的上述指令的寄存器标识,从上述第一分支目标地址预测缓存器中获取读取的上述指令的预测目标跳转地址;
若确定读取的上述指令不满足上述寄存器预测条件,则:
则根据读取的上述指令的程序计数器,从上述第二分支目标地址预测缓存器中获取读取的上述指令的预测目标跳转地址;
其中,上述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
可选地,上述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识。
需要说明的是,本发明实施例中的寄存器标识可以为寄存器号,或者,寄存器标识也可以是其它能够用于指示寄存器的代码或者符号等,本发明实施例中的分支预测方法可以应用于多线程处理器中,也可以应用于单线程处理器中,此处不作限定。
需要说明的是,本发明实施例中的分支预测装置可以如上述方法实施例中的分支预测装置,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。
由上可见,本发明实施例中设置第一BTAC和第二BTAC,第一BTAC中使用寄存器标识作为索引(即在第一BTAC中存储寄存器标识与预测目标跳转地址的一一对应关系信息),第二BTAC中使用PC作为索引(即在第二BTAC中存储程序计数器的部分字段与预测目标跳转地址的一一对应关系信息),当读取的指令满足寄存器预测条件时,使用第一BTAC进行分支预测,否则,使用第二BTAC进行分支预测。由于寄存器标识相同的无条件间接跳转分支指令的目标跳转地址必然相同,因此,即使将目标跳转地址相同的多个无条件间接跳转分支指令的历史信息存储在第一BTAC的同一个Entry中,也不会影响分支预测的准确率,换言之,本发明提供的技术方案能够在共享第一BTAC时不对分支预测的准确率产生影响,从而使得在保证分支预测的准确率的前提下实现BTAC的资源共享成为可能。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以理解上述实施例中的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质例如可以包括:只读存储器、随机存储器、磁盘或光盘等。
以上对本发明所提供的一种分支预测方法及相关装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种分支预测方法,其特征在于,应用于处理器中,所述处理器包括:第一分支目标地址预测缓存器和第二分支目标地址预测缓存器,所述第一分支目标地址预测缓存器存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,所述第二分支目标地址预测缓存器存储着:程序计数器的字段与预测目标跳转地址的一一对应关系信息,其中,所述分支预测方法,包括:
从指令缓存中读取指令;
若确定读取的所述指令满足寄存器预测条件,则:
根据读取的所述指令的寄存器标识,从所述第一分支目标地址预测缓存器中获取读取的所述指令的预测目标跳转地址;
若确定读取的所述指令不满足所述寄存器预测条件,则:
则根据读取的所述指令的程序计数器,从所述第二分支目标地址预测缓存器中获取读取的所述指令的预测目标跳转地址;
其中,所述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
2.根据权利要求1所述的方法,其特征在于,
所述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识;
所述确定读取的所述指令满足寄存器预测条件,具体为:
当所述指令的类型为无条件间接跳转分支指令,且所述指令中的寄存器标识为特定的寄存器标识时,确定读取的所述指令满足寄存器预测条件;
所述确定读取的所述指令不满足所述寄存器预测条件,具体为:
当所述指令的类型不为无条件间接跳转分支指令,或者,所述指令中的寄存器标识不为特定的寄存器标识时,确定读取的所述指令不满足寄存器预测条件。
3.根据权利要求1或2所述的方法,其特征在于,
所述从所述指令缓存中读取指令之前包括:
对待读取的指令进行预译码,得到所述待读取的指令的类型信息;
所述读取指令之后包括:根据所述得到的指令的类型信息,判定当前读取的指令的类型是否为无条件间接跳转分支指令。
4.根据权利要求1至3任一项所述的方法,其特征在于,
在所述读取指令之前,若对高级语言进行编译时调用的函数为标准库函数,则,将编译后的指令的类型指定为无条件间接跳转分支指令。
5.一种分支预测装置,其特征在于,应用于处理器中,所述处理器包括:第一分支目标地址预测缓存器和第二分支目标地址预测缓存器,所述第一分支目标地址预测缓存器存储着:寄存器标识与预测目标跳转地址的一一对应关系信息,所述第二分支目标地址预测缓存器存储着:程序计数器的部分字段与预测目标跳转地址的一一对应关系信息,或者,程序计数器的全部字段与预测目标跳转地址的一一对应关系信息,其中,所述分支预测装置,包括:
读取单元,用于从指令缓存中读取指令;
预测获取单元,用于当确定所述读取单元读取的指令满足寄存器预测条件时,根据所述读取单元读取的所述指令的寄存器标识,从所述第一分支目标地址预测缓存器中获取所述读取单元读取的所述指令的预测目标跳转地址;当确定所述读取单元读取的指令不满足所述寄存器预测条件时,根据所述读取单元读取的所述指令的程序计数器,从所述第二分支目标地址预测缓存器中获取所述读取单元读取的所述指令的预测目标跳转地址;
其中,所述寄存器预测条件包括:指令的类型为无条件间接跳转分支指令。
6.根据权利要求5所述的分支预测装置,其特征在于,
所述寄存器预测条件还包括:指令中的寄存器标识为特定的寄存器标识;
所述分支预测装置还包括:
确定单元,用于当所述读取单元读取的指令的类型为无条件间接跳转分支指令,且所述读取单元读取的指令中的寄存器标识为特定的寄存器标识时,确定所述读取单元读取的指令满足寄存器预测条件;当所述读取单元读取的指令的类型不为无条件间接跳转分支指令,或者,所述读取单元读取的指令中的寄存器标识不为特定的寄存器标识时,确定读取的所述指令不满足寄存器预测条件。
7.根据权利要求5或6所述的分支预测装置,其特征在于,
所述分支预测装置还包括:
预译码单元,用于对所述读取单元待读取的指令进行预译码,得到所述读取单元待读取的指令的类型信息;
判定单元,用于在所述读取单元读取所述指令后,根据所述预译码单元得到的指令的类型信息,判定所述读取单元当前读取的指令的类型是否为无条件间接跳转分支指令。
8.根据权利要求5或6所述的分支预测装置,其特征在于,
所述分支预测装置还包括:
编译单元,用于对高级语言进行编译;
指定单元,用于当所述编译单元对高级语言进行编译时调用的函数为标准库函数时,将编译后的指令的类型指定为无条件间接跳转分支指令。
CN201310367653.9A 2013-08-21 2013-08-21 一种分支预测方法及相关装置 Active CN104423929B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310367653.9A CN104423929B (zh) 2013-08-21 2013-08-21 一种分支预测方法及相关装置
PCT/CN2014/083882 WO2015024452A1 (zh) 2013-08-21 2014-08-07 一种分支预测方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310367653.9A CN104423929B (zh) 2013-08-21 2013-08-21 一种分支预测方法及相关装置

Publications (2)

Publication Number Publication Date
CN104423929A true CN104423929A (zh) 2015-03-18
CN104423929B CN104423929B (zh) 2017-07-14

Family

ID=52483061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310367653.9A Active CN104423929B (zh) 2013-08-21 2013-08-21 一种分支预测方法及相关装置

Country Status (2)

Country Link
CN (1) CN104423929B (zh)
WO (1) WO2015024452A1 (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105867880A (zh) * 2016-04-01 2016-08-17 中国科学院计算技术研究所 一种面向间接跳转分支预测的分支目标缓冲器及设计方法
WO2016155623A1 (zh) * 2015-03-30 2016-10-06 上海芯豪微电子有限公司 基于信息推送的信息***和方法
CN106155928A (zh) * 2015-04-13 2016-11-23 上海芯豪微电子有限公司 一种存储层次预取***和方法
CN108062236A (zh) * 2016-11-07 2018-05-22 杭州华为数字技术有限公司 一种软硬件协同分支指令预测方法及装置
WO2019019719A1 (zh) * 2017-07-28 2019-01-31 华为技术有限公司 分支预测方法及装置
CN110347432A (zh) * 2019-06-17 2019-10-18 海光信息技术有限公司 处理器、分支预测器及其数据处理方法、分支预测方法
CN111026442A (zh) * 2019-12-17 2020-04-17 天津国芯科技有限公司 一种cpu中用于消除程序无条件跳转开销的方法及装置
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN111209044A (zh) * 2018-11-21 2020-05-29 展讯通信(上海)有限公司 指令压缩方法及装置
CN111258649A (zh) * 2020-01-21 2020-06-09 Oppo广东移动通信有限公司 处理器、芯片和电子设备
CN111538535A (zh) * 2020-04-28 2020-08-14 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
CN111625280A (zh) * 2019-02-27 2020-09-04 上海复旦微电子集团股份有限公司 指令控制方法及装置、可读存储介质
CN111638913A (zh) * 2019-09-19 2020-09-08 中国科学院信息工程研究所 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置
CN112613039A (zh) * 2020-12-10 2021-04-06 海光信息技术股份有限公司 一种针对幽灵漏洞的性能优化方法及装置
CN115480826A (zh) * 2022-09-21 2022-12-16 海光信息技术股份有限公司 分支预测器、分支预测方法、装置和计算设备
WO2023029912A1 (zh) * 2021-09-03 2023-03-09 苏州睿芯集成电路科技有限公司 用于直接跳转的超前预测的方法及分支指令追踪高速缓存
CN117389629A (zh) * 2023-11-02 2024-01-12 北京市合芯数字科技有限公司 分支预测方法、装置、电子设备及介质

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
CN114265623A (zh) * 2021-11-29 2022-04-01 中电科申泰信息科技有限公司 一种嵌入式处理器的分支预测器
CN117093272B (zh) * 2023-10-07 2024-01-16 飞腾信息技术有限公司 指令发送方法及处理器
CN117762493A (zh) * 2023-12-27 2024-03-26 江苏华创微***有限公司 一种支持dsp处理器的内核屏蔽非法地址的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835754A (en) * 1996-11-01 1998-11-10 Mitsubishi Denki Kabushiki Kaisha Branch prediction system for superscalar processor
US20070294518A1 (en) * 2006-06-14 2007-12-20 Shen-Chang Wang System and method for predicting target address of branch instruction utilizing branch target buffer having entry indexed according to program counter value of previous instruction
CN102117198A (zh) * 2009-12-31 2011-07-06 上海芯豪微电子有限公司 一种分支处理方法
CN102662640A (zh) * 2012-04-12 2012-09-12 苏州睿云智芯微电子有限公司 双重分支目标缓冲器和分支目标处理***及处理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832418B2 (en) * 2009-08-28 2014-09-09 Via Technologies, Inc. Efficient branch target address cache entry replacement
US8959320B2 (en) * 2011-12-07 2015-02-17 Apple Inc. Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835754A (en) * 1996-11-01 1998-11-10 Mitsubishi Denki Kabushiki Kaisha Branch prediction system for superscalar processor
US20070294518A1 (en) * 2006-06-14 2007-12-20 Shen-Chang Wang System and method for predicting target address of branch instruction utilizing branch target buffer having entry indexed according to program counter value of previous instruction
CN102117198A (zh) * 2009-12-31 2011-07-06 上海芯豪微电子有限公司 一种分支处理方法
CN102662640A (zh) * 2012-04-12 2012-09-12 苏州睿云智芯微电子有限公司 双重分支目标缓冲器和分支目标处理***及处理方法

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016155623A1 (zh) * 2015-03-30 2016-10-06 上海芯豪微电子有限公司 基于信息推送的信息***和方法
CN106155928A (zh) * 2015-04-13 2016-11-23 上海芯豪微电子有限公司 一种存储层次预取***和方法
CN105867880B (zh) * 2016-04-01 2018-12-04 中国科学院计算技术研究所 一种面向间接跳转分支预测的分支目标缓冲器及设计方法
CN105867880A (zh) * 2016-04-01 2016-08-17 中国科学院计算技术研究所 一种面向间接跳转分支预测的分支目标缓冲器及设计方法
CN108062236A (zh) * 2016-11-07 2018-05-22 杭州华为数字技术有限公司 一种软硬件协同分支指令预测方法及装置
WO2019019719A1 (zh) * 2017-07-28 2019-01-31 华为技术有限公司 分支预测方法及装置
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN111209044A (zh) * 2018-11-21 2020-05-29 展讯通信(上海)有限公司 指令压缩方法及装置
CN111209044B (zh) * 2018-11-21 2022-11-25 展讯通信(上海)有限公司 指令压缩方法及装置
CN111625280A (zh) * 2019-02-27 2020-09-04 上海复旦微电子集团股份有限公司 指令控制方法及装置、可读存储介质
CN111625280B (zh) * 2019-02-27 2023-08-04 上海复旦微电子集团股份有限公司 指令控制方法及装置、可读存储介质
CN110347432A (zh) * 2019-06-17 2019-10-18 海光信息技术有限公司 处理器、分支预测器及其数据处理方法、分支预测方法
CN111638913A (zh) * 2019-09-19 2020-09-08 中国科学院信息工程研究所 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置
CN111638913B (zh) * 2019-09-19 2023-05-12 中国科学院信息工程研究所 一种基于随机化索引的处理器芯片分支预测器安全增强方法及电子装置
CN111026442A (zh) * 2019-12-17 2020-04-17 天津国芯科技有限公司 一种cpu中用于消除程序无条件跳转开销的方法及装置
CN111026442B (zh) * 2019-12-17 2022-08-02 天津国芯科技有限公司 一种cpu中用于消除程序无条件跳转开销的方法及装置
CN111258649A (zh) * 2020-01-21 2020-06-09 Oppo广东移动通信有限公司 处理器、芯片和电子设备
CN111538535B (zh) * 2020-04-28 2021-09-21 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
CN111538535A (zh) * 2020-04-28 2020-08-14 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
CN112613039B (zh) * 2020-12-10 2022-09-09 成都海光微电子技术有限公司 一种针对幽灵漏洞的性能优化方法及装置
CN112613039A (zh) * 2020-12-10 2021-04-06 海光信息技术股份有限公司 一种针对幽灵漏洞的性能优化方法及装置
WO2023029912A1 (zh) * 2021-09-03 2023-03-09 苏州睿芯集成电路科技有限公司 用于直接跳转的超前预测的方法及分支指令追踪高速缓存
CN115480826A (zh) * 2022-09-21 2022-12-16 海光信息技术股份有限公司 分支预测器、分支预测方法、装置和计算设备
CN115480826B (zh) * 2022-09-21 2024-03-12 海光信息技术股份有限公司 分支预测器、分支预测方法、装置和计算设备
CN117389629A (zh) * 2023-11-02 2024-01-12 北京市合芯数字科技有限公司 分支预测方法、装置、电子设备及介质
CN117389629B (zh) * 2023-11-02 2024-06-04 北京市合芯数字科技有限公司 分支预测方法、装置、电子设备及介质

Also Published As

Publication number Publication date
WO2015024452A1 (zh) 2015-02-26
CN104423929B (zh) 2017-07-14

Similar Documents

Publication Publication Date Title
CN104423929A (zh) 一种分支预测方法及相关装置
CN107092467B (zh) 用于增强分支预测效率的指令序列缓冲器
EP2628076B1 (en) An instruction sequence buffer to store branches having reliably predictable instruction sequences
US9298467B2 (en) Switch statement prediction
CN102103483B (zh) 汇聚和散布多个数据元素
US7487296B1 (en) Multi-stride prefetcher with a recurring prefetch table
US8578136B2 (en) Apparatus and method for mapping architectural registers to physical registers
KR20130033476A (ko) 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치
CN101373427A (zh) 程序执行控制装置
EP3850480B1 (en) Controlling accesses to a branch prediction unit for sequences of fetch groups
US11550588B2 (en) Branch target filtering based on memory region access count
CN101763249A (zh) 对非控制流指令减少分支检验
US20040006683A1 (en) Register renaming for dynamic multi-threading
GB2506902A (en) Jump position and frame shifting in list based prefetching
CN102591621B (zh) 使用计算历史进行预测
CN114020441B (zh) 一种多线程处理器的指令预测方法及相关装置
US11204875B1 (en) Software assisted data address prefetch
US11269634B2 (en) Data structure relinquishing
US9223580B2 (en) Systems, methods and computer products for cross-thread scheduling
Hasan et al. An improved pipelined processor architecture eliminating branch and jump penalty
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
US11966619B2 (en) Background processing during remote memory access
US20090216983A1 (en) Method and system for accessing memory using an auxiliary memory
Bournoutian et al. Mobile ecosystem driven application-specific low-power control microarchitecture
Ganesan Register Renaming Algorithm for Fast Branch Misprediction Recovery in Superscalar Processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220906

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Patentee after: Institute of Computing Technology, Chinese Academy of Sciences

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences