CN104252334B - 分支目标地址获取方法和装置 - Google Patents
分支目标地址获取方法和装置 Download PDFInfo
- Publication number
- CN104252334B CN104252334B CN201310270207.6A CN201310270207A CN104252334B CN 104252334 B CN104252334 B CN 104252334B CN 201310270207 A CN201310270207 A CN 201310270207A CN 104252334 B CN104252334 B CN 104252334B
- Authority
- CN
- China
- Prior art keywords
- entry
- branch
- target address
- branch instruction
- btac
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 403
- 230000008569 process Effects 0.000 claims abstract description 363
- 238000005516 engineering process Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 210000004209 hair Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种分支目标地址获取方法和装置,通过根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目;判断当前分支指令的进程号和当前分支指令的程序计数PC值的高位是否与当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和分支指令的PC的高位相同;若相同,则获取与当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为当前分支指令的分支目标地址。本发明相当于将第一分支目标地址缓存BTAC中与当前分支指令的进程号、程序计数PC值的高位和中位都相同的分支指令的分支目标地址作为了当前分支指令的分支目标地址,因此,避免了进程间干扰的问题。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种分支目标地址获取方法和装置。
背景技术
目前的处理器多采用流水线的结构,使得顺序执行的指令流可以并行地执行,从而提高处理器的执行效率。然而,进程中往往会包含分支指令,分支指令会打断流水线中指令的处理,因为处理器无法确定该分支指令的下一条指令的地址,直到分支指令处理完毕,才能获得该分支的分支目标地址(下一条指令的地址),这样,会影响处理器的执行效率。因此,现有技术中通过对分支目标地址预测的方法,获取分支目标地址,从而提高处理器的执行效率。
现有技术中,通过分支目标地址缓存(Branch Target Address Cache,以下简称:BTAC)存储分支指令的分支目标地址,BTAC包含多个条目(entry),每一个条目包含3个字段,分别为标签(tag)字段,目标程序计数(Program Counter,以下简称:PC)字段,有效(valid)字段。同一个进程中的每条分支指令对应一个唯一的程序计数PC值,程序计数PC值由N个比特表示,定义前N1个比特为程序计数PC值的高位,中间N2个比特为程序计数PC值的中位,剩下的N3个比特为程序计数PC值的低位,N1、N2、N3的和为N。BTAC的条目通过程序计数PC值的中位索引,每一个条目的tag字段存储的为分支指令的程序计数PC值的高位,目标PC字段存储的为分支指令的分支目标地址,valid字段标识该条目中的信息是否有效。在指令处理过程中,指令经过译码之后,即可确定该指令是否为分支指令,若为分支指令,则通过该指令对应的程序计数PC值的中位确定BTAC中与该指令对应的条目,确定条目之后,利用程序计数PC值的高位与确定的条目中的tag字段进行匹配,并判断valid字段是否为有效,若PC的高位与条目中的tag字段存储的分支指令的程序计数PC值的高位相同且valid字段为有效,则获取该条目中的目标PC字段中的程序计数PC值作为该分支指令的分支目标地址,从而完成分支指令的分支目标地址获取。
然而,由于不同的进程中可能存在程序计数PC值的高位和中位都相同指令,因此,采用现有技术的方法,会存在进程间干扰的问题。
发明内容
本发明实施例提供一种分支目标地址获取方法和装置,以避免进程间干扰的问题。
本发明实施例第一方面提供一种分支目标地址获取方法,包括:
根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;
其中,所述第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的程序计数PC值的高位,所述目标PC字段存储所述分支指令的分支目标地址;
判断所述当前分支指令的进程号和所述当前分支指令的程序计数PC值的高位是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和所述分支指令的程序计数PC值的高位相同;
若相同,则获取与所述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为所述当前分支指令的分支目标地址。
结合第一方面,在第一种可能的实现方式中,所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目包括:
判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;
若不为空,则确定所述第一条目为与所述当前分支指令对应的第一条目;
若为空,则执行所述当前分支指令获取所述当前分支指令的分支目标地址,并将所述当前分支指令的进程号、程序计数PC值和所述分支目标地址写入所述第一分支目标地址缓存BTAC中与所述当前分支指令程序计数PC值的中位对应的第一条目中。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目之前,还包括:
判断是否从第一进程切换到第二进程;
若不从第一进程切换到第二进程,则执行所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;
若从第一进程切换到第二进程,则将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空所述第一分支目标地址缓存BTAC中存储的所述标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容;
判断所述第二分支目标地址缓存BTAC中是否具有与所述第二进程的进程号相同的第二条目;
若所述第二分支目标地址缓存BTAC中具有与所述第二进程的进程号相同的第二条目,则将所述与所述第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置;
若所述第二分支目标地址缓存BTAC中不具有与所述第二进程的进程号相同的第二条目,则在执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述在执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中,包括:
若确定所述第二进程中的其中一条指令为分支指令;
则在处理完所述分支指令后,将所述第二进程的进程号和所述分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与所述分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将所述分支指令的分支目标地址写入与所述分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
结合第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,所述第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储所述分支指令的分支目标地址;
将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中包括:
将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将所述第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述将所述与所述第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置包括:
根据所述与所述第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及所述第一条目中的标签字段的内容,根据所述与所述第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到所述第一条目中的目标PC字段的内容。
结合第一方面或第一方面的第一种至第五种可能的实现方式,在第六种可能的实现方式中,所述第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,所述有效字段用于标识其所在第一条目中的内容是否有效。
本发明实施例第二方面提供一种分支目标地址获取装置,包括:
确定模块,用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;
其中,所述第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的程序计数PC值的高位,所述目标PC字段存储所述分支指令的分支目标地址;
第一处理模块,用于判断所述当前分支指令的进程号和所述当前分支指令的程序计数PC值的高位是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和所述分支指令的程序计数PC值的高位相同;若相同,则获取与所述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为所述当前分支指令的分支目标地址。
结合第二方面,在第一种可能的实现方式中,确定模块具体用于判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;若不为空,则确定所述第一条目为与所述当前分支指令对应的第一条目;若为空,则执行所述当前分支指令获取所述当前分支指令的分支目标地址,并将所述当前分支指令的进程号、程序计数PC值和所述分支目标地址写入所述第一分支目标地址缓存BTAC中与所述当前分支指令程序计数PC值的中位对应的第一条目中。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:第二处理模块,用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目之前,判断是否从第一进程切换到第二进程;若不从第一进程切换到第二进程,则执行所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;若从第一进程切换到第二进程,则将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空所述第一分支目标地址缓存BTAC中存储的所述标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容;判断所述第二分支目标地址缓存BTAC中是否具有与所述第二进程的进程号相同的第二条目;若所述第二分支目标地址缓存BTAC中具有与所述第二进程的进程号相同的第二条目,则将所述与所述第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置;若所述第二分支目标地址缓存BTAC中不具有与所述第二进程的进程号相同的第二条目,则在执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述第二处理模块具体用于若确定所述第二进程中的其中一条指令为分支指令;则在处理完所述分支指令后,将所述第二进程的进程号和所述分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与所述分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将所述分支指令的分支目标地址写入与所述分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
结合第二种可能的实现方式或第三种可能的实现方式,在第四种可能的实现方式中,所述第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储所述分支指令的分支目标地址;
所述第二处理模块具体用于将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将所述第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述第二处理模块具体用于根据所述与所述第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及所述第一条目中的标签字段的内容,根据所述与所述第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到所述第一条目中的目标PC字段的内容。
结合第二方面或第二方面的第一种至第五种可能的实现方式,在第六种可能的实现方式中,所述第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,所述有效字段用于标识其所在第一条目中的内容是否有效。
本发明实施例提供的分支目标地址获取方法和装置,通过根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;其中,所述第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的程序计数PC值的高位,所述目标PC字段存储所述分支指令的分支目标地址;判断所述当前分支指令的进程号和所述当前分支指令的程序计数PC值的高位是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和所述分支指令的PC的高位相同;若相同,则获取与所述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为所述当前分支指令的分支目标地址。由于第一分支目标地址缓存BTAC的标签字段中存储了分支指令的进程号和分支指令的程序计数PC值的高位,因此,本发明的方法相当于将第一分支目标地址缓存BTAC中与当前分支指令的进程号、程序计数PC值的高位和中位都相同的分支指令的分支目标地址作为了当前分支指令的分支目标地址,因此,避免了进程间干扰的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明分支目标地址获取方法实施例一的流程示意图;
图2为本发明分支目标地址获取方法实施例一的第一分支目标地址缓存BTAC结构示意图;
图3为本发明分支目标地址获取方法实施例二的流程示意图;
图4为本发明分支目标地址获取方法实施例二的第二分支目标地址缓存BTAC结构示意图;
图5为本发明分支目标地址获取方法实施例二的应用场景图;
图6为本发明分支目标地址获取装置实施例一的结构示意图;
图7为本发明分支目标地址获取装置实施例二的结构示意图;
图8为本发明分支目标地址获取装置实施例三的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在同一个进程中,每条指令对应唯一的程序计数PC值,程序计数PC值一般由N个比特表示,定义前N1个比特为程序计数PC值的高位,中间N2个比特为程序计数PC值的中位,剩下的N3个比特为程序计数PC值的低位,N1、N2、N3的和为N。在不同的进程中,可能存在程序计数PC值的高位和中位都相同的指令,因此,也就可能存在程序计数PC值的高位和中位都相同的分支指令,如果不对BTAC中的分支指令的信息进行进程的区分的话,则会存在进程间干扰的问题,本发明正是为了避免BTAC中不同进程的分支指令的信息之间的进程干扰问题,在BTAC的第一条目中的标签字段增加了进程号,以区分上述分支指令的信息属于哪个进程,从而避免进程间干扰的问题。
下面以几个具体的实施例对本发明的技术方案进行详细的描述。
图1为本发明分支目标地址获取方法实施例一的流程示意图,本实施例的执行主体可以是手机、个人计算机(Personal computer,以下简称:PC)、平板电脑(PAD)、无线手持设备、MP3播放器、MP4播放器等各种类型的终端设备,具体可以是各种终端设备中具有程序处理功能的模块,例如:中央处理器(Central Processing Unit,以下简称:CPU)等,如图1所示,本实施例的方法包括:
S101:根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与上述当前分支指令对应的第一条目。
其中,第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,上述标签字段中存储上述分支指令的进程号和上述分支指令的程序计数PC值的高位,上述目标PC字段存储所述分支指令的分支目标地址。分支目标地址是处理器要执行的下一条指令的程序计数PC值;如图2所示,图2为本发明分支目标地址获取方法实施例一的第一分支目标地址缓存BTAC的结构示意图。
当前分支指令是指处理器将要处理的指令,处理器先取指令,然后,对对指令解码,解码之后即可确定该指令是否为分支指令,若该指令为分支指令则根据该分支指令(当前分支指令)的程序计数PC值的中位从第一分支目标地址缓存BTAC中确定与该指令对应对应的第一条目。
作为一种可行的实现方式:判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;若不为空,则确定上述第一条目为与所述当前分支指令对应的第一条目;若为空,则执行上述当前分支指令获取上述当前分支指令的分支目标地址,并将上述当前分支指令的进程号、程序计数PC值和所述分支目标地址写入所述第一分支目标地址缓存BTAC中与所述当前分支指令程序计数PC值的中位对应的第一条目中。
S102:判断上述当前分支指令的进程号和上述当前分支指令的程序计数PC值的高位是否与上述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和上述分支指令的程序计数PC值的高位相同;若是,则执行S103,若否,则执行S104。
当前分支指令的进程号即为上述分支指令所属的进程的进程号,进程号一般也称为进程ID,不同的进程具有不同的进程号,可以通过进程号区分不同的进程。在S101确定了当前分支指令对应的第一条目之后,判断当前分支指令的进程号和程序计数PC值的高位是否与所确定的第一条目中的标签字段中的分支指令的进程号和分支指令的程序计数PC值的高位相同,若相同,则说明该第一条目中存储的为上述当前分支指令的信息,则执行S103。若不相同,则说明该第一条目中存储的不为上述当前分支指令的信息,也说明,第一分支目标地址缓存BTAC中未存储上述当前分支指令的信息,则执行S104。
S103:获取与上述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为上述当前分支指令的分支目标地址。
S104:其他操作。
作为一种可行的实现方式,执行上述当前分支指令获取分支目标地址。
作为另一种可行的实现方式,清空上述第一条目中的内容,并执行上述当前分支指令获取分支目标地址,然后将上述当前分支指令的信息写入到上述第一条目中,具体地写入方法可以是,将当前分支指令的程序计数PC值的高位和进程号写入上述第一条目的标签字段中,将当前分支指令的分支目标地址写入上述第一条目的目标PC字段中。
本实施例中,通过根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与上述当前分支指令对应的第一条目;其中,上述第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,上述标签字段中存储上述分支指令的进程号和上述分支指令的程序计数PC值的高位,上述目标PC字段存储上述分支指令的分支目标地址;判断上述当前分支指令的进程号和上述当前分支指令的程序计数PC值的高位是否与上述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和上述分支指令的程序计数PC值的高位相同;若相同,则获取与上述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为上述当前分支指令的分支目标地址。由于第一分支目标地址缓存BTAC的标签字段中存储了分支指令的进程号和分支指令的程序计数PC值的高位,因此,本发明的方法相当于将第一分支目标地址缓存BTAC中与当前分支指令的进程号、程序计数PC值的高位和中位都相同的分支指令的分支目标地址作为了当前分支指令的分支目标地址,因此,避免了进程间干扰的问题。
图3为本发明分支目标地址获取方法实施例二的流程示意图,如图3所示,图3是在图1所示实施例的基础上,在执行图1所示实施例的步骤之前,还包括:
S301:判断是否从第一进程切换到第二进程;若否,则执行S302,若是,则执行S303。
引起进程切换的原因很多,例如时钟中断、输出输出(IN/OUT,以下简称:I/O)中断和内存失效等,其中,时钟中断是引起进程切换的最常见的原因。进程切换的频率也很高,一般为平均1ms依次,相当于在1Ghz的处理器当中,折合大约每100,0000转就发生依次进程切换。这里所说的第一进程和第二进程只是为区分切换前的进程和切换后的进程,也就是切换前的进程称作第一进程,切换后的进程称作第二进程。
S302:根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与上述当前分支指令对应的第一条目。
若不进行进程切换,则在确定当前指令为分支指令之后,即可根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与上述当前分支指令对应地第一条目,然后,采用图1所示实施例的方法获取上述当前分支指令的分支目标地址。
S303:将上述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与上述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空上述第一分支目标地址缓存BTAC中存储的上述标签字段中的进程号与上述第一进程的进程号相同的第一条目的内容。
若要进行进程切换,则第一分支目标地址缓存BTAC中存储的切换前的第一进程的分支指令的信息对于切换后的第二进程没有任何意义,因此,可以将第一分支目标地址缓存BTAC中存储的与上述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,其中,第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储上述分支指令的分支目标地址;如图4所示,图4为本发明分支目标地址获取方法实施例二的第二分支目标地址缓存BTAC结构示意图。
将上述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与上述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中具体为:
将上述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与上述第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将上述第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
本步骤可通过发送指令指导硬件完成,例如发送“BTAC invalidate BY ASID”指令指导硬件完成。
S304:判断上述第二分支目标地址缓存BTAC中是否具有与上述第二进程的进程号相同的第二条目;若是,则执行S305,若否,则执行S306。
若第二分支目标地址缓存BTAC中具有与第二进程的进程号相同的第二条目,则说明第二进程不是第一次执行,在之前的执行过程中,已经获取了第二进程中的各分支指令的信息,因此,可通过执行S305恢复第二进程的各分支指令的信息,而无需再执行一遍,提高处理器的处理效率。若第二分支目标地址缓存BTAC中不具有与第二进程的进程号相同的第二条目,则说明第二进程是第一次执行,或者,之前执行过但是存储的分支指令的信息已被删除,需要重新获取第二进程中各分支指令的信息。
S305:将与第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置。
具体地,根据与第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及上述第一条目中的标签字段的内容,根据与第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到上述第一条目中的目标PC字段的内容。
也可以认为第二进程的各分支指令的信息为第二进程的上下文信息,因此,将与第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置,也可以认为是恢复第二进程的上下文信息的过程。
该过程也可以通过发送指令指导硬件完成,例如发送“BTAC recovery from thesecond BTAC based on ASID”。
S306:执行上述第二进程的过程中将上述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
作为一种可行的实现方式:若确定上述第二进程中的其中一条指令为分支指令;则在处理完上述分支指令后,将上述第二进程的进程号和上述分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与上述分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将上述分支指令的分支目标地址写入与上述分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
在本实施例中,第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,上述有效字段用于标识其所在第一条目中的内容是否有效。例如:有效字段的内容可用一个比特表示,例如“1”表示有效,“0”表示无效,一般在BTAC中valid在初始化时,通过将有效字段的内容全部置为0实现,也可以将某一个第一条目中的有效字段的内容置为0来表示该第一条目的内容的无效,也可以将某一进程对应的第一条目中的有效字段都置为0来表示该进程对应的第一条目的内容都是无效的。
图5为本发明分支目标地址获取方法实施例二的应用场景图,如图5所示,本发明的第一分支目标地址缓存BTAC的外围逻辑需要支持多种操作:例如,第一分支目标地址缓存BTAC的比较逻辑电路接收“BTAC Invalidate By ASID”指令,则控制通过比较逻辑电路将第一分支目标地址缓存BTAC中基于ASID的第一条目无效掉,若该指令还通过一个比特指示将第一分支目标地址缓存BTAC基于ASID的条目无效掉之后,将第一分支目标地址缓存BTAC中无效掉的的内容保存在第二分支目标地址缓存BTAC当中,则第一分支目标地址缓存BTAC通过第二分支目标地址缓存BTAC的控制逻辑电路将无效掉的内容保存到第二分支目标地址缓存BTAC中。第一分支目标地址缓存BTAC接收“BTAC Invalidate all”指令,则将第一分支目标地址缓存BTAC中所有的第一条目无效掉,若该指令中还通过一个比特指示无效掉的所有第一条目的内容保存在第二分支目标地址缓存BTAC当中,则通过第二分支目标地址缓存BTAC的控制逻辑电路将无效掉的第一条目保存在第二分支目标地址缓存BTAC中。第一分支目标地址缓存BTAC接收“BTAC recovery from the second BTAC based on ASID”,则通过第二分支目标地址缓存BTAC的控制逻辑电路将第二分支目标地址缓存BTAC中基于ASID的内容恢复到第一BATC中。
本实施例中,由于第一分支目标地址缓存BTAC的标签字段中存储了分支指令的进程号和分支指令的程序计数PC值的高位,因此,本发明的方法相当于将第一分支目标地址缓存BTAC中与当前分支指令的进程号、程序计数PC值的高位和中位都相同的分支指令的分支目标地址作为了当前分支指令的分支目标地址,因此,避免了进程间干扰的问题。并且,通过判断是否从第一进程切换到第二进程,若否,则根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与上述当前指令对应的第一条目;若是,则将第一分支目标地址缓存BTAC中存储的标签字段中的进程号与上述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空上述第一分支目标地址缓存BTAC中存储的上述标签字段中的进程号与上述第一进程的进程号相同的第一条目的内容。进一步地判断上述第二分支目标地址缓存BTAC中是否具有与上述第二进程的进程号相同的第二条目,若是,则将与第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置,若否,则执行第二进程的过程中将上述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。可见采用本发明的技术方案,第一分支目标地址缓存BTAC中只存储于切换后的BTAC的各分支指令的信息,也就是第一分支目标地址缓存BTAC中只存储一个进程的各分支指令的信息,因此,第一分支目标地址缓存BTAC的大小只跟一个进程中的分支指令的大小有关,不必设置较大的BTAC,从而提高BTAC空间的利用率。
图6为本发明分支目标地址获取装置实施例一的结构示意图,如图6所示,本实施例的装置包括确定模块61和第一处理模块62,其中,确定模块61用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目;其中,第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,标签字段中存储分支指令的进程号和分支指令的程序计数PC值的高位,目标PC字段存储分支指令的分支目标地址;第一处理模块62用于判断当前分支指令的进程号和当前分支指令的程序计数PC值的高位是否与当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和分支指令的程序计数PC值的高位相同;若相同,则获取与当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为当前分支指令的分支目标地址。
在上述实施例中,确定模块61具体用于判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;若不为空,则确定第一条目为与当前分支指令对应的第一条目;若为空,则执行当前分支指令获取当前分支指令的分支目标地址,并将当前分支指令的进程号、程序计数PC值和分支目标地址写入第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中。
本实施例的装置可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明分支目标地址获取装置实施例二的结构示意图,图7是在图6所示实施例的基础上,进一步地,还包括第二处理模块63,如图7所示,第二处理模块63用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目之前,判断是否从第一进程切换到第二进程;若不从第一进程切换到第二进程,则执行根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目;若从第一进程切换到第二进程,则将第一分支目标地址缓存BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空第一分支目标地址缓存BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目的内容;判断第二分支目标地址缓存BTAC中是否具有与第二进程的进程号相同的第二条目;若第二分支目标地址缓存BTAC中具有与第二进程的进程号相同的第二条目,则将与第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置;若第二分支目标地址缓存BTAC中不具有与第二进程的进程号相同的第二条目,则在执行第二进程的过程中将第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
在上述实施例中,第二处理模块63具体用于若确定第二进程中的其中一条指令为分支指令;则在处理完分支指令后,将第二进程的进程号和分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将分支指令的分支目标地址写入与分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
在上述实施例中,第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储分支指令的分支目标地址;
第二处理模块63具体用于将第一分支目标地址缓存BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
在上述实施例中,第二处理模块63具体用于根据与第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及第一条目中的标签字段的内容,根据与第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到第一条目中的目标PC字段的内容。
在上述实施例中,第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,有效字段用于标识其所在第一条目中的内容是否有效。
本实施例的装置可用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图8为本发明分支目标地址获取装置实施例三的结构示意图,如图8所示,本实施例的装置包括确定器81和处理器82,其中,确定器81用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目;其中,第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,标签字段中存储分支指令的进程号和分支指令的程序计数PC值的高位,目标PC字段存储分支指令的分支目标地址;处理器82用于判断当前分支指令的进程号和当前分支指令的程序计数PC值的高位是否与当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和分支指令的程序计数PC值的高位相同;若相同,则获取与当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为当前分支指令的分支目标地址。
在上述实施例中,确定器81具体用于判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;若不为空,则确定第一条目为与当前分支指令对应的第一条目;若为空,则执行当前分支指令获取当前分支指令的分支目标地址,并将当前分支指令的进程号、程序计数PC值和分支目标地址写入第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中。
本实施例的装置可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例中,处理器82还用于用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目之前,判断是否从第一进程切换到第二进程;若不从第一进程切换到第二进程,则执行根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与当前分支指令对应的第一条目;若从第一进程切换到第二进程,则将第一分支目标地址缓存BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空第一分支目标地址缓存BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目的内容;判断第二分支目标地址缓存BTAC中是否具有与第二进程的进程号相同的第二条目;若第二分支目标地址缓存BTAC中具有与第二进程的进程号相同的第二条目,则将与第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置;若第二分支目标地址缓存BTAC中不具有与第二进程的进程号相同的第二条目,则在执行第二进程的过程中将第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
在上述实施例中,处理器82具体用于若确定第二进程中的其中一条指令为分支指令;则在处理完分支指令后,将第二进程的进程号和分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将分支指令的分支目标地址写入与分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
在上述实施例中,第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储分支指令的分支目标地址;
处理器82具体用于将第一分支目标地址缓存BTAC中存储的标签字段中的进程号与第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
在上述实施例中,处理器82具体用于根据与第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及第一条目中的标签字段的内容,根据与第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到第一条目中的目标PC字段的内容。
在上述实施例中,第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,有效字段用于标识其所在第一条目中的内容是否有效。
本实施例的装置可用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种分支目标地址获取方法,其特征在于,包括:
根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;
其中,所述第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的程序计数PC值的高位,所述目标PC字段存储所述分支指令的分支目标地址;
判断所述当前分支指令的进程号和所述当前分支指令的程序计数PC值的高位是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和所述分支指令的程序计数PC值的高位相同;
若相同,则获取与所述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为所述当前分支指令的分支目标地址。
2.根据权利要求1所述的方法,其特征在于,所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目包括:
判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;
若不为空,则确定所述第一条目为与所述当前分支指令对应的第一条目;
若为空,则执行所述当前分支指令获取所述当前分支指令的分支目标地址,并将所述当前分支指令的进程号、程序计数PC值和所述分支目标地址写入所述第一分支目标地址缓存BTAC中与所述当前分支指令程序计数PC值的中位对应的第一条目中。
3.根据权利要求2所述的方法,其特征在于,所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目之前,还包括:
判断是否从第一进程切换到第二进程;
若不从第一进程切换到第二进程,则执行所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;
若从第一进程切换到第二进程,则将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空所述第一分支目标地址缓存BTAC中存储的所述标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容;
判断所述第二分支目标地址缓存BTAC中是否具有与所述第二进程的进程号相同的第二条目;
若所述第二分支目标地址缓存BTAC中具有与所述第二进程的进程号相同的第二条目,则将所述与所述第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置;
若所述第二分支目标地址缓存BTAC中不具有与所述第二进程的进程号相同的第二条目,则在执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
4.根据权利要求3所述的方法,其特征在于,所述在执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中,包括:
若确定所述第二进程中的其中一条指令为分支指令;
则在处理完所述分支指令后,将所述第二进程的进程号和所述分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与所述分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将所述分支指令的分支目标地址写入与所述分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
5.根据权利要求4所述的方法,其特征在于,所述第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储所述分支指令的分支目标地址;
将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中包括:
将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将所述第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
6.根据权利要求5所述的方法,其特征在于,所述将所述与所述第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置包括:
根据所述与所述第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及所述第一条目中的标签字段的内容,根据所述与所述第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到所述第一条目中的目标PC字段的内容。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,所述有效字段用于标识其所在第一条目中的内容是否有效。
8.一种分支目标地址获取装置,其特征在于,包括:
确定模块,用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;
其中,所述第一分支目标地址缓存BTAC包含至少一个第一条目,每一个第一条目对应一个分支指令的程序计数PC值的中位,每个第一条目中包含标签字段和目标PC字段,所述标签字段中存储所述分支指令的进程号和所述分支指令的程序计数PC值的高位,所述目标PC字段存储所述分支指令的分支目标地址;
第一处理模块,用于判断所述当前分支指令的进程号和所述当前分支指令的程序计数PC值的高位是否与所述当前分支指令对应的第一条目中的标签字段中存储的分支指令的进程号和所述分支指令的程序计数PC值的高位相同;若相同,则获取与所述当前分支指令对应的第一条目中的目标PC字段中的分支目标地址作为所述当前分支指令的分支目标地址。
9.根据权利要求8所述的装置,其特征在于,确定模块具体用于判断第一分支目标地址缓存BTAC中与当前分支指令程序计数PC值的中位对应的第一条目中的标签字段和目标PC字段的内容是否为空;若不为空,则确定所述第一条目为与所述当前分支指令对应的第一条目;若为空,则执行所述当前分支指令获取所述当前分支指令的分支目标地址,并将所述当前分支指令的进程号、程序计数PC值和所述分支目标地址写入所述第一分支目标地址缓存BTAC中与所述当前分支指令程序计数PC值的中位对应的第一条目中。
10.根据权利要求9所述的装置,其特征在于,还包括:第二处理模块,用于根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目之前,判断是否从第一进程切换到第二进程;若不从第一进程切换到第二进程,则执行所述根据当前分支指令的程序计数PC值的中位确定第一分支目标地址缓存BTAC中与所述当前分支指令对应的第一条目;若从第一进程切换到第二进程,则将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容存储于第二分支目标地址缓存BTAC中,并清空所述第一分支目标地址缓存BTAC中存储的所述标签字段中的进程号与所述第一进程的进程号相同的第一条目的内容;判断所述第二分支目标地址缓存BTAC中是否具有与所述第二进程的进程号相同的第二条目;若所述第二分支目标地址缓存BTAC中具有与所述第二进程的进程号相同的第二条目,则将所述与所述第二进程的进程号相同的第二条目恢复到第一分支目标地址缓存BTAC中相应的位置;若所述第二分支目标地址缓存BTAC中不具有与所述第二进程的进程号相同的第二条目,则在执行所述第二进程的过程中将所述第二进程中的分支指令的信息写入第一分支目标地址缓存BTAC中。
11.根据权利要求10所述的装置,其特征在于,所述第二处理模块具体用于若确定所述第二进程中的其中一条指令为分支指令;则在处理完所述分支指令后,将所述第二进程的进程号和所述分支指令的程序计数PC值的高位写入第一分支目标地址缓存BTAC中与所述分支指令的程序计数PC值的中位对应的第一条目的标签字段中,并将所述分支指令的分支目标地址写入与所述分支指令的程序计数PC值的中位对应的第一条目的目标PC字段中。
12.根据权利要求11所述的装置,其特征在于,所述第二分支目标地址缓存BTAC包括至少一个第二条目,每一个第二条目中包含第一字段和第二字段,其中,第一字段用于存储分支指令的程序计数PC值的高位、中位以及进程号,第二字段用于存储所述分支指令的分支目标地址;
所述第二处理模块具体用于将所述第一分支目标地址缓存BTAC中存储的标签字段中的进程号与所述第一进程的进程号相同的第一条目对应的程序计数PC值的中位、标签字段中的程序计数PC值的高位以及进程号存储于第二分支目标地址缓存BTAC的第一字段中,将所述第一条目中的目标PC字段的分支目标地址存储于第二分支目标地址缓存BTAC的第二字段中。
13.根据权利要求12所述的装置,其特征在于,所述第二处理模块具体用于根据所述与所述第二进程的进程号相同的第二条目中的第一字段的内容确定恢复到第一分支目标地址缓存BTAC中对应的第一条目以及所述第一条目中的标签字段的内容,根据所述与所述第二进程的进程号相同的第二条目中的第二字段的内容确定恢复到所述第一条目中的目标PC字段的内容。
14.根据权利要求8-13中任一项所述的装置,其特征在于,所述第一分支目标地址缓存BTAC中的每个第一条目中还包括有效字段,所述有效字段用于标识其所在第一条目中的内容是否有效。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310270207.6A CN104252334B (zh) | 2013-06-29 | 2013-06-29 | 分支目标地址获取方法和装置 |
PCT/CN2014/080090 WO2014206222A1 (zh) | 2013-06-29 | 2014-06-17 | 分支目标地址获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310270207.6A CN104252334B (zh) | 2013-06-29 | 2013-06-29 | 分支目标地址获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104252334A CN104252334A (zh) | 2014-12-31 |
CN104252334B true CN104252334B (zh) | 2017-07-07 |
Family
ID=52141032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310270207.6A Active CN104252334B (zh) | 2013-06-29 | 2013-06-29 | 分支目标地址获取方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104252334B (zh) |
WO (1) | WO2014206222A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005737A (zh) * | 2015-07-31 | 2015-10-28 | 天津大学 | 一种面向分支预测攻击的微体系结构级安全防护方法 |
CN111898119A (zh) * | 2020-06-28 | 2020-11-06 | 中国科学院信息工程研究所 | 控制流完整性保护方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447231A (zh) * | 2002-03-22 | 2003-10-08 | 中国科学院计算技术研究所 | 分支转移预测方法 |
US6721876B1 (en) * | 2000-05-25 | 2004-04-13 | Advanced Micro Devices, Inc. | Branch predictor index generation using varied bit positions or bit order reversal |
CN101501635A (zh) * | 2006-08-16 | 2009-08-05 | 高通股份有限公司 | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 |
CN101916184A (zh) * | 2009-08-28 | 2010-12-15 | 威盛电子股份有限公司 | 更新微处理器中的分支目标地址快取的方法及其微处理器 |
CN102662631A (zh) * | 2012-03-15 | 2012-09-12 | 龙芯中科技术有限公司 | 间接分支指令处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100688503B1 (ko) * | 2004-11-02 | 2007-03-02 | 삼성전자주식회사 | 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 |
US7707396B2 (en) * | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
-
2013
- 2013-06-29 CN CN201310270207.6A patent/CN104252334B/zh active Active
-
2014
- 2014-06-17 WO PCT/CN2014/080090 patent/WO2014206222A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721876B1 (en) * | 2000-05-25 | 2004-04-13 | Advanced Micro Devices, Inc. | Branch predictor index generation using varied bit positions or bit order reversal |
CN1447231A (zh) * | 2002-03-22 | 2003-10-08 | 中国科学院计算技术研究所 | 分支转移预测方法 |
CN101501635A (zh) * | 2006-08-16 | 2009-08-05 | 高通股份有限公司 | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 |
CN101916184A (zh) * | 2009-08-28 | 2010-12-15 | 威盛电子股份有限公司 | 更新微处理器中的分支目标地址快取的方法及其微处理器 |
CN102662631A (zh) * | 2012-03-15 | 2012-09-12 | 龙芯中科技术有限公司 | 间接分支指令处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104252334A (zh) | 2014-12-31 |
WO2014206222A1 (zh) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102483703B (zh) | 计算机线程至异构资源的映射 | |
US10445211B2 (en) | Logging trace data for program code execution at an instruction level | |
CN108805272A (zh) | 一种基于fpga的通用卷积神经网络加速器 | |
US11042469B2 (en) | Logging trace data for program code execution at an instruction level | |
CN104423576A (zh) | 虚拟助理操作项目的管理 | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN104424122B (zh) | 一种电子设备及内存划分方法 | |
CN106663072A (zh) | 用于配置中断的集合的装置和方法 | |
CN106575220B (zh) | 多个经集群极长指令字处理核心 | |
CN103631624A (zh) | 读写请求的处理方法和装置 | |
CN108121628B (zh) | 一种读写速度的测试方法、装置及电子设备 | |
CN108089822A (zh) | 存储芯片的管理方法、系统、设备及存储介质 | |
CN104111870A (zh) | 一种中断处理装置及中断处理方法 | |
CN101866277B (zh) | 数据排序方法和装置 | |
CN113127382A (zh) | 用于追加写的数据读取方法、装置、设备和介质 | |
CN104346404B (zh) | 一种访问数据的方法、设备及系统 | |
CN104252334B (zh) | 分支目标地址获取方法和装置 | |
CN104484132B (zh) | 数据缩减的方法及装置 | |
CN106445472B (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
CN103902471B (zh) | 数据缓存处理方法和装置 | |
CN107977577A (zh) | 访存指令访问检测方法及装置 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
CN106658117A (zh) | 音/视频数据的处理方法及装置 | |
CN109298809A (zh) | 一种触控动作识别方法、装置及终端设备 |
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 |