CN112379929B - 一种指令替换方法、装置、处理器、电子设备及存储介质 - Google Patents
一种指令替换方法、装置、处理器、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112379929B CN112379929B CN202011275098.3A CN202011275098A CN112379929B CN 112379929 B CN112379929 B CN 112379929B CN 202011275098 A CN202011275098 A CN 202011275098A CN 112379929 B CN112379929 B CN 112379929B
- Authority
- CN
- China
- Prior art keywords
- cache line
- cache
- instruction
- target
- instructions
- 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 40
- 239000012634 fragment Substances 0.000 claims abstract description 48
- 230000015654 memory Effects 0.000 claims description 27
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000006467 substitution reaction Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement 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/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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
-
- 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/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种指令替换方法、装置、处理器、电子设备及存储介质。方法包括:接收分支片段信息,分支片段信息包括至少一组指令和每组指令对应的第一地址信息;针对每组指令利用预设替换规则从指令缓存中确定目标缓存行,将指令写入目标缓存行中以替换目标缓存行中原有的指令;预设替换规则包括:判断指令缓存中是否存在包括第一地址信息相同的缓存行;若包括,则将包括第一地址信息的缓存行作为目标缓存行;若不包括,则判断指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为目标缓存行。本申请实施例从一定程度上保证了指令缓存中分支片段的完整性,提高了指令缓存的可用性。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种指令替换方法、装置、处理器、电子设备及存储介质。
背景技术
现有技术中,为了提高处理器前端的性能,可以从处理器前端取指令的带宽和取指令的延时两方面进行改进。Moksha中采用的指令缓存Uop Cache来缓存最近一段时间内经常使用的指令,在取指令时,若发现一段时间Uop Cache一直命中,处理器将从IC Decode模式切换到Uop Cache模式,由Uop Cache直接发送指令到Dispatch,不需要经过IC和Decode模块。相比于IC Decode模式,Uop Cache模式有更大的带宽和更小的延时。
由于Uop Cache中的存储空间有限,当Uop Cache的容量被占满,又有新的指令需要存入Uop Cache中时,则需要将已经存入Uop Cache中的部分指令取出,将新的指令存入对应的位置。Uop Cache的替换策略是关系到Uop Cache性能的关键算法。如果指令能尽量多的由Uop Cache提供给执行单元,那处理器的处理速度就会提升。
现有的Uop Cache多采用LRU替换算法,即在进行替换时,先从Uop Cache中查找地址信息(tag)相同的行(way)作为目标缓存行;如果没有tag相同的缓存行,再找最近最少使用的缓存行作为目标缓存行。用新的指令替换掉目标缓存行中的指令。
这种方案在替换过程中选中的目标缓存行可能属于不同的分支片段,而UopCache中缓存的内容具有连续性,即如果一个缓存在Uop Cache中的分支片段中的一部分被替换掉,那么该分支片段在Uop Cache中的其他部分都是无效的。因此,最近最少使用(Least Recently Used,LRU)的替换算法会导致Uop Cache中的多个分支无效,从而降低了Uop Cache的可用性。
发明内容
本申请实施例的目的在于提供一种指令替换方法、装置、处理器、电子设备及存储介质,用以解决现有技术中Uop Cache可用性低的问题。
第一方面,本申请实施例提供一种指令替换方法,包括:接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包含第一地址信息相同的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
本申请实施例中,若有指令需要写入Uop Cache中时,优先选择地址信息相同的缓存行,若没有地址信息相同的缓存行则将Uop Cache中不可用的缓存行为目标缓存行,降低了打破Uop Cache中存储的分支片段的可能,提高了Uop Cache的可用性。
进一步地,所述预设替换规则还包括:若所述指令缓存中不包括被标记为不可用的缓存行,则根据最近最少使用LRU缓存机制从所述指令缓存中确定目标缓存行。本申请实施例通过优先选择地址信息相同或被标记为不可用的缓存行,若没有地址相同和被标记为不可用的缓存行的情况下再根据LRU机制从Uop Cache中确定目标缓存行,从而一方面降低了Uop Cache中分支片段被打破的可能,另一方面保证了Uop Cache中有位置来写入分支片段信息中的指令。
进一步地,在将所述指令写入所述目标缓存行中之后,所述方法还包括:若所述目标缓存行没有被标记为不可用,则获取与所述目标缓存行属于同一分支片段的其他缓存行,将所述其他缓存行标记为不可用。本申请实施例中,由于目标缓存行中存储的原来的指令会被新的指令替换掉,因此,与目标缓存行属于同一分支片段的其他指令也无法被调用,因此,将其他指令对应的缓存行设置为不可用,以便于后续新的指令替换已经无法被调用的分支片段所在的缓存行,降低了Uop Cache中无效分支片段的数量。
进一步地,所述指令缓存中的每个缓存行中均存储有对应指令的开始地址和结束地址;所述获取与所述目标缓存行属于同一分支片段的其他缓存行,包括:从所述目标缓存行中存储的指令的开始地址向前以及结束地址向后查找地址连续的缓存行,将地址连续的缓存行确定为与所述目标缓存行属于同一分支片段的其他缓存行。本申请实施例中,由于属于同一分支片段的指令对应的地址是连续的,因此可以通过开始地址和结束地址来快速准确的查找属于同一分支片段的缓存行。
进一步地,所述接收分支片段信息,包括:接收第一分支片段,并根据所述指令缓存中每个缓存行的容量大小对所述第一分支片段中的指令进行划分,获得所述分支片段信息。由于Uop Cache中每个缓存行的容量有限,对于较大的第一分支片段,可以将其按照缓存行的容量大小进行预先分割,以便能够将分支片段信息中的指令写入Uop Cache中。
进一步地,所述利用预设替换规则从指令缓存中确定目标缓存行,包括:根据所述第一地址信息确定所述指令缓存中的目标组;利用所述预设替换规则从所述目标组中确定目标缓存行。对于Uop Cache中包括多个组的情况,可以先确定分支片段信息要写入的组,然后再确定对应的缓存行。
第二方面,本申请实施例提供一种指令替换装置,包括:接收模块,用于接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;替换模块,用于针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包括第一地址信息的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
第三方面,本申请实施例提供一种处理器,包括指令缓存,所述指令缓存用于执行第一方面的方法。
第四方面,本申请实施例提供一种电子设备,第三方面所述的处理器、处理器和总线,其中,所述处理器和所述存储器通过所述总线完成相互间的通信,所述处理器调用所述程序指令能够执行第一方面的方法。
第五方面,本申请实施例提供一种非暂态计算机可读存储介质,包括:所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为Uop Cache中某个set的存储状态示意图;
图2为对比方案提供的替换后的set的存储状态示意图;
图3为本申请实施例提供的一种指令替换方法流程示意图;
图4为本申请实施例提供的替换后的set的存储状态示意图;
图5为本申请实施例提供的替换装置结构示意图;
图6为本申请实施例提供的电子设备实体结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了便于理解本申请的技术方案,下面先介绍本申请中涉及到的相关概念:
Uop Cache与cache memory类似,Uop Cache中存储的是Decode译码后的指令。当CPU需要取指令时,如果该指令已经存放在Uop Cache中,可以由Uop Cache直接提供,不需要重新译码。Uop Cache通常由相联存储器实现。相联存储器的每一个存储块都具有额外的存储信息,称为标签(tag)。当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。另外,Cache分为全相联Cache、直接映像Cache和组相联Cache。
处理器中处理指令的两种模式,即IC Decode模式和Uop Cache模式。
IC Decode模式为处理器将前端的指令发送给后端执行模块的常用模式,该模式主要由两个模块完成,即Instruction Cache(IC)模块和Decode模块,IC模块用于存储二进制的分支片段,Decode模块从IC模块中读取二进制的分支片段,并对读取的分支片段进行逐条指令的译码,获取后端执行模块可识别的指令。IC Decode模式中在将译码后的指令向后端执行模块发送的同时,还会向Uop Cache中发送。
Uop Cache模式,Uop Cache中预先存储有译码后的指令。当有分支片段需要执行时,先判断是否在Uop Cache中,如果存在,则在该模式下可以直接将译码后的指令发送给后端执行模块,并且可以一次取多条指令发送给后端执行模块。
由上可知,Uop Cache模式能够更快的将指令发送给后端执行模块,不需要逐个字节进行译码。
图1为Uop Cache中某个组的存储状态示意图,如图1所示,Uop Cache为8路组相联结构,可以理解的是,Uop Cache还可以为4路组相联或6路组相联结构等,本申请实施例不对Uop Cache的具体结构进行限定。Uop Cache存储有三个分支片段Branch#0,Branch#1,Branch#2。其中Branch#0需要三个缓存行存放(a,b,c),Branch#1需要两个缓存行存放(a,b),Branch#2需要三个缓存行存放(a,b,c)。Uop Cache为8路组相连结构,图1中的组按照Branch#0-a,Branch#0-b,Branch#0-c,Branch#1-a,Branch#1-b,Branch#2-a,Branch#2-b,Branch#2-c的顺序缓存了三个分支片段。LRU缓存行指向缓存行0的位置,用于表征缓存行0中存储的指令为最近最少使用的指令。已知新来的分支片段Branch#n需要两个缓存行存放(a,b),其中Branch#n-a的地址信息tag跟Uop Cache中缓存行6相同。
对于现有的替换算法,由于Branch#n-a的tag跟Uop Cache中缓存行6相同,那么,Branch#n-a会存储在缓存行6中,以替换缓存行6中原来存储的指令。在图1中,没有与Branch#n-b的tag相同的缓存行,因此按照LRU挑选出最近最少使用的缓存行0来存放。并且按照Uop Cache中组中指令的调用情况将最近最少使用的指针指向下一个缓存行。图2为对比方案提供的替换后的组的存储状态示意图,如图2所示,Branch#0中的第一组指令被替换掉,Branch#2中的第二组指令被替换掉,因此,Branch#0和Branch#2都变为无效片段,即在执行Branch#0和Branch#2时,均无法利用Uop Cache模式进行指令的传输。从图2中可以看出set中包括了多个缓存行都是无效的。
为了解决上述问题,本申请实施例提供了一种指令替换方法,如图3所示,执行该方法的主体为指令缓存Uop Cache,该方法包括:
步骤301:接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;
步骤302:针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;
其中,所述预设替换规则包括:
判断所述指令缓存中是否存在包括第一地址信息的缓存行;
若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;
若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;
若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
在具体的实施过程中,分支片段信息中包括至少一组指令,具体指令的组数可以根据第一分支片段的小大和Uop Cache中每个缓存行的容量确定。分支片段信息中包括的至少一组指令为经过Decode模块对二进制指令进行译码后形成的,并且,每组指令对应的第一地址信息为根据对应指令在内存中的地址确定,例如可以将指令在内存中地址的前八位作为该组指令对应的第一地址信息。
在将指令写入Uop Cache中时,针对每组指令,都需要根据预设替换规则为其确定Uop Cache中存放的缓存行。每一个缓存行都有其对应的第二地址信息;仍以图1中所示的组的存储状态为例,若Branch#n-a对应的第一地址信息与缓存行6对应的第二地址信息相同,则将Branch#n-a写入缓存行6中,写入之后,缓存行5和缓存行7变为不可用的,在为Branch#n-b确定目标缓存行时,组中没有与Branch#n-b对应的第一地址信息相同的第二地址信息,又由于缓存行5和缓存行7为不可用的,则从缓存行5和缓存行7中任意挑选一个缓存行作为目标缓存行,用Branch#n-b来替换Branch#2-a。如图4所示,将缓存行5作为目标缓存行来存储Branch#n-b。
将图2与图4进行对比发现,本申请实施例提供的预设替换规则确定目标缓存行只破坏了Branch#2,当程序再执行Branch#0这段指令时,由于Branch#0完整的存放在UopCache中,因此,可以命中。
本申请实施例中,若有指令需要写入Uop Cache中时,优先选择地址信息相同的缓存行,若没有地址信息相同的缓存行则将Uop Cache中不可用的缓存行为目标缓存行,降低了打破Uop Cache中存储的分支片段的可能,提高了Uop Cache的可用性。
在上述实施例的基础上,所述预设替换规则还包括:
若所述指令缓存中不包括被标记为不可用的缓存行,则根据最近最少使用LRU缓存机制从所述指令缓存中确定目标缓存行。
在具体的实施过程中,对于一组指令,若Uop Cache中没有包括与该指令对应的第一地址信息相同的第二地址信息,并且Uop Cache中也没有包括被标记为不可用的缓存行,那么可以根据LRU缓存机制从Uop Cache中选择最近最少使用的缓存行作为目标缓存行。仍以图1为例,新的分支片段Branch#m需要三个缓存行(a,b,c)存放,并且Branch#m-a的tag与Branch#1-a的tag相同。在写入Branch#m-a时,根据预设替换规则,将Branch#m-a写入缓存行3中,以替换Branch#1-a,那么Branch#1片段对应的存储Branch#1-b的缓存行4变为不可用;在写入Branch#m-b时,根据预设替换规则,Uop Cache中没有与Branch#m-b的tag相同的缓存行,但是有不可用的缓存行,即缓存行4,因此,可以将Branch#m-b写入缓存行4中,以替换Branch#1-b;在写入Branch#m-c时,根据预设替换规则,Uop Cache中没有与Branch#m-c的tag相同的缓存行,也没有不可用的缓存行,因此,可以将Uop Cache中最近最少使用的缓存行0作为目标缓存行,将Branch#m-c写入缓存行0中,以替换Branch#0-a。
本申请实施例通过优先选择地址信息相同或被标记为不可用的缓存行,若没有地址相同和被标记为不可用的缓存行的情况下再根据LRU机制从Uop Cache中确定目标缓存行,从而一方面降低了Uop Cache中分支被打破的可能,另一方面保证了Uop Cache中有位置来写入分支片段信息中的指令。
在上述实施例的基础上,在将所述指令写入所述目标缓存行中之后,所述方法还包括:
若所述目标缓存行没有被标记为不可用,则获取与所述目标缓存行属于同一分支片段的其他缓存行,将所述其他缓存行标记为不可用。
在具体的实施过程中,仍以图1为例,在写入新的分支片段之前,图1中的缓存行0-缓存行7中均为可用的,在将新的分支片段Branch#n-a写入与其tag相同的缓存行6中之后,由于缓存行6为有效的,那么与缓存行6属于同一个分支片段的缓存行5和缓存行7也为有效的,但实际上由于缓存行6中写入了Branch#n-a,那么缓存行6对应的原来的分支片段被破坏掉,缓存行5和缓存行7变为不可用,因此可以将缓存行5和缓存行7标记为不可用的,具体可以是在Uop Cache的set中增加一个字段,该字段用于表征缓存行是否可用,例如,可以用0表示不可用,用1表示可用。
本申请实施例中,由于目标缓存行中存储的原来的指令会被新的指令替换掉,因此,与目标缓存行属于同一分支片段的其他指令也无法被调用,因此,将其他指令对应的缓存行设置为不可用,以便于后续新的指令替换已经无法被调用的分支片段所在的缓存行,降低了Uop Cache中无效分支片段的数量。
在上述实施例的基础上,所述指令缓存中的每个缓存行中均存储有对应指令的开始地址和结束地址;所述获取与所述目标缓存行属于同一分支片段的其他缓存行,包括:
从所述目标缓存行中存储的指令的开始地址向前以及结束地址向后查找地址连续的缓存行,将地址连续的缓存行确定为与所述目标缓存行属于同一分支片段的其他缓存行。
在具体的实施过程中,由于同一个分支片段中多组指令的地址都是连续的,因此,为了找出Uop Cache中与目标缓存行属于同一个分支片段的其他缓存行,可以获取目标缓存行的开始地址和结束地址,从目标缓存行的开始地址向前查找,以及从目标缓存行的结束地址向后查找。可以理解的是,在向前查找时,可以查找Uop Cache中各个缓存行的结束地址是否与目标缓存行的开始地址连续;在向后查找时,可以查找Uop Cache中各个缓存行的开始地址是否与目标缓存行的结束地址连续。
本申请实施例中,由于属于同一分支片段的指令对应的地址是连续的,因此可以通过开始地址和结束地址来快速准确的查找属于同一分支片段的缓存行。
在上述实施例的基础上,所述利用预设替换规则从指令缓存中确定目标缓存行,包括:
根据所述第一地址信息确定所述指令缓存中的目标组;
利用所述预设替换规则从所述目标组中确定目标缓存行。
在具体的实施过程中,对于包括多个set的Uop Cache来说,在接收到分支片段信息后,需要先确定要将该分支片段信息中的指令存入哪个set中,具体可以是利用指令在内存中的地址信息,将该地址信息中预设的某几位作为索引,或者将某几位进行哈希运算后获得的值作为索引,根据索引确定组。例如:Uop Cache中包括4个组,每个组中包括8个缓存行,地址信息共48位,那么将第0-7位作为第一地址信息,将第8-9位作为索引。先根据索引确定组,然后根据第一地址信息结合预设替换规则确定目标缓存行。
图5为本申请实施例提供的替换装置结构示意图,该装置可以是电子设备上的模块、程序段或代码。应理解,该装置与上述图3方法实施例对应,能够执行图3方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该替换装置包括:接收模块501和替换模块502,其中:
接收模块501用于接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;替换模块502用于针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包括第一地址信息的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
在上述实施例的基础上,所述预设替换规则还包括:
若所述指令缓存中不包括被标记为不可用的缓存行,则根据最近最少使用LRU缓存机制从所述指令缓存中确定目标缓存行。
在上述实施例的基础上,该装置还包括标记模块,用于:
若所述目标缓存行没有被标记为不可用,则获取与所述目标缓存行属于同一分支片段的其他缓存行,将所述其他缓存行标记为不可用。
在上述实施例的基础上,所述指令缓存中的每个缓存行中均存储有对应指令的开始地址和结束地址;标记模块具体用于:
从所述目标缓存行中存储的指令的开始地址向前以及结束地址向后查找地址连续的缓存行,将地址连续的缓存行确定为与所述目标缓存行属于同一分支片段的其他缓存行。
在上述实施例的基础上,接收模块501具体用于:
接收第一分支片段,并根据所述指令缓存中每个缓存行的容量大小对所述第一分支片段中的指令进行划分,获得所述分支片段信息。
在上述实施例的基础上,替换模块502具体用于:
根据所述第一地址信息确定所述指令缓存中的目标组;
利用所述预设替换规则从所述目标组中确定目标缓存行。
在另一实施例中,本申请提供一种处理器,该处理器中包括指令缓存,该指令缓存用以执行上述各方法实施例所提供的方法,例如包括:接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包括第一地址信息的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
图6为本申请实施例提供的电子设备实体结构示意图,如图6所示,所述电子设备,包括:处理器(processor)601、存储器(memory)602和总线603;其中,
所述处理器601和存储器602通过所述总线603完成相互间的通信;
所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包括第一地址信息的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
处理器601可以是一种集成电路芯片,具有信号处理能力。上述处理器601可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器602可以为上述实施例提供的包括指令缓存的存储器,当然,还可以包括随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)等。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包括第一地址信息的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;其中,所述预设替换规则包括:判断所述指令缓存中是否存在包括第一地址信息的缓存行;若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;若包括,则将被标记为不可用的缓存行作为所述目标缓存行。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种指令替换方法,其特征在于,包括:
接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;
针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;
其中,所述预设替换规则包括:
判断所述指令缓存中是否存在包括所述第一地址信息的缓存行;
若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;
若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;
若包括,则将被标记为不可用的缓存行作为所述目标缓存行;
在将所述指令写入所述目标缓存行中之后,所述方法还包括:
若所述目标缓存行没有被标记为不可用,则获取与所述目标缓存行属于同一分支片段的其他缓存行,将所述其他缓存行标记为不可用;
所述指令缓存中的每个缓存行中均存储有对应指令的开始地址和结束地址;所述获取与所述目标缓存行属于同一分支片段的其他缓存行,包括:
从所述目标缓存行中存储的指令的开始地址向前以及结束地址向后查找地址连续的缓存行,将地址连续的缓存行确定为与所述目标缓存行属于同一分支片段的其他缓存行。
2.根据权利要求1所述的方法,其特征在于,所述预设替换规则还包括:
若所述指令缓存中不包括被标记为不可用的缓存行,则根据最近最少使用LRU缓存机制从所述指令缓存中确定目标缓存行。
3.根据权利要求1所述的方法,其特征在于,所述接收分支片段信息,包括:
接收第一分支片段,并根据所述指令缓存中每个缓存行的容量大小对所述第一分支片段中的指令进行划分,获得所述分支片段信息。
4.根据权利要求1所述的方法,其特征在于,所述利用预设替换规则从指令缓存中确定目标缓存行,包括:
根据所述第一地址信息确定所述指令缓存中的目标组;
利用所述预设替换规则从所述目标组中确定目标缓存行。
5.一种指令替换装置,其特征在于,包括:
接收模块,用于接收分支片段信息,所述分支片段信息包括至少一组指令和每组指令对应的第一地址信息;
替换模块,用于针对每组指令,利用预设替换规则从指令缓存中确定目标缓存行,将所述指令写入所述目标缓存行中,以替换目标缓存行中原有的指令;
其中,所述预设替换规则包括:
判断所述指令缓存中是否存在包括所述第一地址信息的缓存行;
若包括,则将包括所述第一地址信息的缓存行作为所述目标缓存行;
若不包括,则判断所述指令缓存中是否包括被标记为不可用的缓存行;
若包括,则将被标记为不可用的缓存行作为所述目标缓存行;
该装置还包括标记模块,用于:
若所述目标缓存行没有被标记为不可用,则获取与所述目标缓存行属于同一分支片段的其他缓存行,将所述其他缓存行标记为不可用;
所述指令缓存中的每个缓存行中均存储有对应指令的开始地址和结束地址;标记模块具体用于:
从所述目标缓存行中存储的指令的开始地址向前以及结束地址向后查找地址连续的缓存行,将地址连续的缓存行确定为与所述目标缓存行属于同一分支片段的其他缓存行。
6.一种处理器,其特征在于,包括指令缓存,所述指令缓存用于执行如权利要求1-4任一项所述的方法。
7.一种电子设备,其特征在于,包括:存储器、如权利要求6所述的处理器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令被计算机运行时,使所述计算机执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011275098.3A CN112379929B (zh) | 2020-11-13 | 2020-11-13 | 一种指令替换方法、装置、处理器、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011275098.3A CN112379929B (zh) | 2020-11-13 | 2020-11-13 | 一种指令替换方法、装置、处理器、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112379929A CN112379929A (zh) | 2021-02-19 |
CN112379929B true CN112379929B (zh) | 2023-09-08 |
Family
ID=74584007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011275098.3A Active CN112379929B (zh) | 2020-11-13 | 2020-11-13 | 一种指令替换方法、装置、处理器、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379929B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349198A (zh) * | 2023-11-30 | 2024-01-05 | 摩尔线程智能科技(北京)有限责任公司 | 缓存行替换方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US8527707B2 (en) * | 2009-12-25 | 2013-09-03 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
CN104679481B (zh) * | 2013-11-27 | 2020-04-28 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
CN105095116B (zh) * | 2014-05-19 | 2017-12-12 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
GB2562062B (en) * | 2017-05-02 | 2019-08-14 | Advanced Risc Mach Ltd | An apparatus and method for managing capability metadata |
-
2020
- 2020-11-13 CN CN202011275098.3A patent/CN112379929B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112379929A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8131951B2 (en) | Utilization of a store buffer for error recovery on a store allocation cache miss | |
US9519588B2 (en) | Bounded cache searches | |
US8533422B2 (en) | Instruction prefetching using cache line history | |
KR100962057B1 (ko) | 캐시 치환 폴리시의 간이화한 구현을 갖춘 멀티스레드 캐시의 방법 및 장치 | |
KR100962058B1 (ko) | 스레드 식별자에 기초한 캐시 축출을 갖춘 멀티스레드 캐시의 방법 및 장치 | |
US7987322B2 (en) | Snoop request management in a data processing system | |
KR102575913B1 (ko) | 비대칭 세트 결합된 캐시 | |
KR101898322B1 (ko) | 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템 | |
CN107818053B (zh) | 用于存取高速缓存的方法与装置 | |
US7937536B2 (en) | Handling direct memory accesses | |
JP2007299423A (ja) | キャッシュメモリおよびその制御方法 | |
US9720847B2 (en) | Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed | |
KR20180008507A (ko) | 캐시 태그 압축을 위한 방법 및 장치 | |
US10275358B2 (en) | High-performance instruction cache system and method | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
US20100100684A1 (en) | Set associative cache apparatus, set associative cache method and processor system | |
CN112379929B (zh) | 一种指令替换方法、装置、处理器、电子设备及存储介质 | |
US10489300B1 (en) | Increasing caching efficiency using cache data patterns | |
US6480940B1 (en) | Method of controlling cache memory in multiprocessor system and the multiprocessor system based on detection of predetermined software module | |
US20140136785A1 (en) | Enhanced cache coordination in a multilevel cache | |
US9311099B2 (en) | Systems and methods for locking branch target buffer entries | |
CN112433765B (zh) | 一种数据存储方法、装置、处理器及电子设备 | |
US11645148B2 (en) | Method and apparatus for caching MTE and/or ECC data | |
CN117971731A (zh) | Lru近似算法的硬件实现装置、lru值的更新方法及装置 | |
US10977176B2 (en) | Prefetching data to reduce cache misses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Huayuan Industrial Zone, Binhai New Area, Tianjin 300450 Applicant after: Haiguang Information Technology Co.,Ltd. Address before: 100082 industrial incubation-3-8, North 2-204, 18 Haitai West Road, Huayuan Industrial Zone, Haidian District, Beijing Applicant before: Haiguang Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |