CN101501635A - 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 - Google Patents
用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 Download PDFInfo
- Publication number
- CN101501635A CN101501635A CNA2007800302141A CN200780030214A CN101501635A CN 101501635 A CN101501635 A CN 101501635A CN A2007800302141 A CNA2007800302141 A CN A2007800302141A CN 200780030214 A CN200780030214 A CN 200780030214A CN 101501635 A CN101501635 A CN 101501635A
- Authority
- CN
- China
- Prior art keywords
- instruction
- target address
- branch target
- cache
- address
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000015654 memory Effects 0.000 claims description 30
- 239000000284 extract Substances 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101150064138 MAP1 gene Proteins 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明揭示一种用于减少对分支目标地址高速缓冲存储器(BTAC)进行查找的技术。在此技术中,响应于在指令高速缓冲存储器(I-cache)中查找指令地址的未中而从所述BTAC检索分支目标地址。所述分支目标地址与所述指令地址相关联。从所述BTAC检索的所述分支目标地址存储在所述指令高速缓冲存储器中。使用此所揭示的技术,以与所述BTAC不并行的方式,在所述指令高速缓冲存储器中查找后续指令地址,因此通过减少不必要的BTAC查找而节省功率。
Description
技术领域
本发明大体上涉及处理器领域,且明确地说,涉及一种通过减少在分支目标地址高速缓冲存储器中查找而改进分支预测的方法。
背景技术
微处理器在很多种应用中执行计算任务。几乎始终需要改进处理器性能,以允许更快操作和/或通过软件变化而增大功能性。在许多嵌入式应用(例如便携式电子装置)中,节省功率和更快的通过量也是处理器设计和实施中的目标。
许多现代处理器采用管线式结构,其中顺序指令(每一者具有多个执行步骤)在执行中交叠。为了获得经改进的性能,所述指令应连续流动穿过管线。任何致使指令停止于管线中的情形可不利地影响性能。如果从管线清洗且随后再提取指令,则性能和功率消耗均受损。
大多数程序包括间接分支指令,其中直到在管线深处评估所述间接分支指令才知道实际分支行为。为了避免将由于等待间接分支指令的实际评估而导致的停止,现代处理器可采用某种形式的分支预测,借此在管线中早期预测间接分支指令的分支行为。基于所预测的分支评估,处理器推测性地提取(预提取)且处理来自预测地址的指令,所述预测地址为分支目标地址(如果预测将采取所述分支)或在所述分支指令之后的下一顺序地址(如果预测将不采取所述分支)。是否将采取间接分支指令被称作确定分支方向。
常规分支预测技术包括分支目标存取高速缓冲存储器(BTAC)和分支预测逻辑,所述BTAC定位于处理器管线的提取级中。BTAC存储先前所提取的指令的目标地址且由所述指令的地址索引。指令高速缓冲存储器常规上填充有各种指令类型的指令,所述指令是从更高阶高速缓冲存储器或存储器检索的。常规上在处理器管线中进一步向下实际解析间接分支指令之后填充BTAC。
在操作中,常规分支预测技术并行地在BTAC和指令高速缓冲存储器两者中对所预提取的指令执行地址查找。如果在BTAC中存在未中,则这些常规分支技术因此已在BTAC查找中消耗功率而未找到匹配。如果在BTAC中存在命中,则所查找到的地址可视为间接分支指令。在BTAC查找之后,常规技术调用分支预测逻辑以确定是否应预测采取从BTAC检索的分支目标地址。如果所述分支预测逻辑预测采取,则分支预测逻辑通过从所述分支目标地址开始检索指令而重定向指令流动。
通常从所述管线清洗从分支指令起进入处理器管线的所有顺序指令。由BTAC查找界定的路径和后续分支预测通常为临界速度路径,因为此路径的定时越短,在重定向指令流动之前需要从处理器管线清洗的指令量也就越小。因此,此路径需要尽可能短,以最小化清洗指令所消耗的功率。
用于减小临界路径时间的常规技术包括减小BTAC的大小和/或以多路型式组织BTAC。然而,通过减小BTAC的大小,潜在命中的数目和因此在BTAC中找到分支目标地址的可能性受到减小,从而降低了BTAC的整体有效性。此外,通过将BTAC组织为多路型式,索引到BTAC中可能变得较快,但花费于比较上的时间可能有所增加。在这些情形中,BTAC可能慢于指令高速缓冲存储器,因此在临界路径的并行查找部分中变成限制性因素。因此,认识到,需要用以减少用于当在处理器管线中找到间接分支指令时重定向指令流动的时间而不会降低分支预测的有效性的设备和方法。
发明内容
本发明认识到,当并行地对指令高速缓冲存储器和BTAC进行查找且在BTAC中查找失败时,常规分支预测技术常常不必要地消耗功率。当在指令高速缓冲存储器中存在命中而在BTAC中存在未中时,此认识更为明显,这种情况可能是由于指令高速缓冲存储器通常存储所有类型的指令,且BTAC通常存储分支指令地址。
根据一个实施例,揭示一种用于减少对分支目标地址高速缓冲存储器(BTAC)进行查找的方法。在此方法中,响应于在指令高速缓冲存储器(I-cache)中查找指令地址的未中而从所述BTAC检索分支目标地址。所述分支目标地址与所述指令地址相关联。从所述BTAC检索的分支目标地址存储在所述指令高速缓冲存储器中。使用此所揭示的技术,以与所述BTAC不并行的方式,在所述指令高速缓冲存储器中有利地查找后续指令地址,因此通过减少不必要的BTAC查找而节省功率。
根据另一实施例,揭示用于将分支指令存储到指令高速缓冲存储器中的方法。此方法包括:在指令高速缓冲存储器(I-cache)中查找分支指令地址;响应于指令高速缓冲存储器未中而从分支目标地址高速缓冲存储器(BTAC)检索分支目标地址;以及将所述分支目标地址存储到所述指令高速缓冲存储器中的条目中。
另一实施例涉及一种用于减少对分支目标地址高速缓冲存储器(BTAC)进行查找的系统。所述系统包括BTAC和指令高速缓冲存储器(I-cache),所述指令高速缓冲存储器经配置以响应于当查找第一分支指令地址时的高速缓冲存储器未中而从所述BTAC检索分支目标地址。所述指令高速缓冲存储器进一步经配置以存储所述分支目标地址。
应了解,所属领域的技术人员从以下详细描述将容易明白本发明的其它实施例,其中以说明方式展示并描述本发明的各种实施例。如将了解到,本发明能够具有其它且不同的实施例,且能够在各种其它方面对其若干细节进行修改,所有这些均不脱离本发明。因此,图式和实施方式在本质上应被视作说明性的而非限制性的。
附图说明
图1为示范性处理器的功能方框图。
图2A到图2C(总称图2)说明示范性代码段的列表以及当指令高速缓冲存储器未含有来自代码段的分支指令时的指令高速缓冲存储器和BTAC的示范性内容。
图3说明在用来自BTAC的指令数据填充图1的指令高速缓冲存储器之后所述指令高速缓冲存储器的示范性内容。
图4为说明将间接分支指令存储到指令高速缓冲存储器中且从图1的指令高速缓冲存储器检索指令的方法的流程图。
图5为说明在实际分支解析时管理指令高速缓冲存储器的方法的流程图。
图6为共享共同BTAC的两个处理器的功能方框图。
具体实施方式
图1描绘示范性处理器100的功能方框图。处理器100根据控制逻辑114在指令执行管线112中执行指令。在一些实施例中,管线112可为具有多个平行管线的超标量设计,所述多个平行管线如结合图6进一步详细描述。管线112包括经组织成数个管级的各种寄存器或锁存器116A-D,以及一个或一个以上执行单元,例如算术逻辑单元(ALU)118。通用寄存器(GPR)堆120提供组成存储器分级结构的顶部的寄存器。
从数据高速缓冲存储器(D-cache)140存取数据,其中存储器地址转译和许可由主转译后备缓冲器(TLB)142管理。在各种实施例中,ITLB 124可包含TLB 142的部分的复本。或者,可整合ITLB 124与TLB142。类似地,在处理器100的各种实施例中,可整合指令高速缓冲存储器122与数据高速缓冲存储器140,或使其成为一体。指令高速缓冲存储器122和/或数据高速缓冲存储器140中的未中使得在存储器接口146的控制下存取主(芯片外)存储器144。将结合图4的论述进一步详细描述指令高速缓冲存储器122中的未中。
处理器100可包括输入/输出(I/O)接口148,其控制对各种外围装置150的存取。所属领域的技术人员将认识到,处理器100的众多变化型式是可能的。举例来说,处理器100可包括第二层(L2)高速缓冲存储器,用于指令高速缓冲存储器122和数据高速缓冲存储器140中的任一者或两者。另外,特定实施例可省略处理器100中所描绘的功能区块中的一者或一者以上。
处理器100包括分支预测系统143。分支预测系统143包括BTAC 141、分支预测器(BP)电路126、更新逻辑电路160和可选的预解码电路156。BTAC 141经配置以存储一个或一个以上条目,其中每一条目含有分支指令地址和对应于提取地址的分支目标地址。BTAC 141可存储直接分支指令地址与间接分支指令地址的组合。
当指令地址在指令高速缓冲存储器122中未中且进行经由存储器接口146从更高层存储器接收对应指令的请求时,经由充填路径152填充指令高速缓冲存储器122和BTAC141。在第一实施例中,一旦从存储器接口146接收到指令,则可选的预解码逻辑电路156经配置以确定所接收的指令是否为间接分支指令。如果是,则经由路径152在BTAC141中查找所接收指令的地址,以查看是否存在与所接收指令的地址相关联的目标地址。如果在BTAC 141中存在命中,则将所接收的指令和对应目标地址写入到指令高速缓冲存储器122。在间接分支指令经误预测的情况下,指令高速缓冲存储器122中可能发生未中且BTAC 141中可能发生命中,因此在指令高速缓冲存储器122中引起某种类型的失效。将结合图5的论述进一步详细论述指令高速缓冲存储器失效的类型。如果所接收指令的地址不在BTAC 141中(例如,未中),则将所接收指令写入到指令高速缓冲存储器122。
第二实施例移除预解码逻辑电路156。在第二实施例中,将在BTAC 141中查找通过存储器接口146接收的指令,而不管所接收的指令是否为间接分支指令。在此第二实施例中,与第一实施例相似,将指令转发到指令高速缓冲存储器122以用于存储。然而,在第一实施例中,BTAC查找限于间接分支指令。在任一实施例中,如果分支目标地址存储于BTAC 141中,则其还将被存储到指令高速缓冲存储器122。
在管线112的随后级中发生实际分支解析之后,更新控制逻辑160经由路径162将目标地址添加到BTAC 141中的条目。BTAC 141经由路径154更新指令高速缓冲存储器122以包括间接分支指令和其对应目标地址两者。术语“预测不采取”是指BP电路126预测不根据分支目标地址而重定向管线112。
在存储器地址转译和许可由指令侧转译后备缓冲器(ITLB)124管理的情况下,指令预提取单元128经由路径125从指令高速缓冲存储器(I-cache或I$)122提取指令。如果在指令高速缓冲存储器122中找到(例如,命中)所提取的指令,且所提取的指令与对应分支目标地址相关联,则BP电路126预测是否采取在所述目标地址处开始的代码路径。如果BP电路126预测应采取所述目标地址,则指令预提取单元128调整其程序计数器以开始从所述目标地址提取指令,因此根据所述分支目标地址而重定向管线112。如果BP电路126预测不应采取所述目标地址,则所述程序计数器递增以开始从下一顺序地址提取指令。将结合图4和图5的论述进一步详细描述分支预测系统143的操作。
本发明涵盖将BTAC 141与指令高速缓冲存储器122组合为一体式组件的实施例。然而,对于将BTAC和指令高速缓冲存储器分离为不同组件存在若干原因。仅在充填所述指令高速缓冲存储器期间才查询或读取所揭示的外部BTAC。每次存取所述指令高速缓冲存储器时,存取与所述指令高速缓冲存储器平行定位的常规BTAC。通过限制如目前所揭示的对BTAC的咨询,本发明通过减小BTAC中的活动性而节省功率。此外,对所述BTAC的此不频繁存取允许BTAC 141为单端口装置,因此降低设计复杂性。
图2A说明示范性代码段的列表210,其在地址0x000B处含有间接分支指令212。如所描绘,间接分支指令212的目标由寄存器1(R1)的内容界定。由于每次执行间接分支指令212时R1的内容可能变化,因此利用分支预测系统143来确定是否从R1的内容所指定的地址开始重定向过程管线112。
图2B说明指令高速缓冲存储器230的示范性内容。指令高速缓冲存储器230可适当地类似于指令高速缓冲存储器122。指令高速缓冲存储器230包括指令列232、有效位列234和分支目标地址列236。列232中的条目表示指令。根据常规,列234中的“0”值指示列236中的分支目标(如果存在)为无效的,而列234中的“1”值指示沿同一行中的列236中的分支目标为有效的。如所描绘,在程序计数器指向地址0x000B的时间点,指令高速缓冲存储器230在地址0x000B处不含有间接分支指令212的条目。
图2C说明BTAC 250的示范性内容。BTAC 250可适当地类似于BTAC 141。BTAC250包括分支指令地址列252和目标地址列254。列252可包括直接分支指令地址、间接分支指令地址或其任何组合。在程序计数器指向地址0x000B的时间点,BTAC 250含有间接分支指令地址256和其对应目标地址。因此,在指令高速缓冲存储器未中时,控制逻辑114将致使BTAC 250中的分支指令256和其对应目标地址存储指令高速缓冲存储器230。应认识到,可将其它信息存储于指令高速缓冲存储器230和BTAC 250两者中,且本发明涵盖指令高速缓冲存储器230和BTAC 250的各种组织。
图3说明在将与间接分支指令地址256相关联的间接分支指令和其对应目标地址(0x2000)存储于指令高速缓冲存储器230中的地址0x000B处之后的指令高速缓冲存储器230。因此,下次处理器的程序计数器指向地址0x000B时,指令高速缓冲存储器查找将命中,且目标地址0x2000将被指派到处理器的程序计数器以从地址0x2000处的指令开始重定向管线112。与常规BTAC相比,本发明中的指令高速缓冲存储器查找是在不在BTAC中执行查找的情况下对预提取的指令执行的,从而通过减少BTAC查找的数目而节省功率消耗。如所证明,在BTAC 250中查找限于在指令高速缓冲存储器230中未找到特定间接分支指令的情形。
图4为说明将间接分支指令存储到指令高速缓冲存储器中且从图1的指令高速缓冲存储器检索分支目标地址的方法400的流程图。方框410、420、450、455、460、465、470和480界定用以将间接分支指令和分支目标地址存储到指令高速缓冲存储器(例如图1的指令高速缓冲存储器122)中的过程。方框410、420、425、435、438、440和445界定用于从指令高速缓冲存储器检索分支目标地址的过程。在方框410处,基于指令的地址而查询指令高速缓冲存储器以获得一指令。举例来说,可利用存储于处理器的程序计数器中的指令地址来查询指令高速缓冲存储器。在方框420处,方法400确定指令高速缓冲存储器中是否存在命中。如果不存在(高速缓冲存储器未中),则方法400前进到方框450以从更高层存储器检索对应指令数据。在方框450处,从更高层存储器(例如第2层(L2)高速缓冲存储器或芯片外存储器)请求指令数据。在方框455处,接收从更高层存储器检索的指令数据。在方框460处,在BTAC中查找指令地址。在方框465处,方法400确定在BTAC中指令地址是否命中,或换句话说,确定是否与存储于BTAC中的指令地址匹配。如果在BTAC中指令地址命中,则方法400前进到方框470,在方框470处将存储于BTAC中的所预测分支目标(如果存在)添加到指令数据。在BTAC中命中时,所预测分支目标将可能存储于BTAC中,只要先前已解析间接分支指令的先前实例的分支目标地址。方法400前进到方框480,在方框480处将指令数据存储于指令高速缓冲存储器中。
返回到方框465,如果在BTAC中指令地址未中,则方法400前进到方框480。此从方框465到480的过渡指示以下情形:所查询的指令地址既不在指令高速缓冲存储器中,也不在BTAC中。在此情形中,将在解析所检索指令数据的实际分支目标之后把分支目标地址存储于BTAC中,所述解析稍后在处理器管线中发生,如结合图6进一步详细论述。举例来说,当解析实际分支目标时,更新逻辑电路160将致使BTAC和指令高速缓冲存储器两者存储所解析的分支目标。
方框465和方框475两者均前进到方框480,在方框480处将指令数据存储于指令高速缓冲存储器中。否则,程序计数器顺序递增。方法400接着前进到方框410以查询由程序计数器指定的下一地址。
返回到方框420,如果在指令高速缓冲存储器中存在命中,意味着在指令高速缓冲存储器中存在对应条目,则方法400前进到方框425。在方框425处,方法400确定指令高速缓冲存储器中的对应条目是否具有分支目标地址。在一个实施例中,方框425可通过询问对应有效位(例如存储于图2的有效位列234中的有效位)来完成。如果不存在与所述指令高速缓冲存储器命中相关联的有效分支目标地址,则指令地址不是间接分支指令。因此,方法400前进到方框445,在方框445处从指令高速缓冲存储器检索且以常规方式处理非分支指令。方法400前进到方框410以从所述程序计数器所指定的指令高速缓冲存储器查询下一地址。
如果存在对应于所述条目的有效分支目标地址,则方法400前进到方框435。在方框435处,方法400预测是否应采取存储于对应条目中的分支目标地址。在一个实施例中,分支预测电路126进行此预测。应注意,所属领域的技术人员将了解,分支预测技术可利用统计学、试探法、预定参数等。在方框438处,方法400测试是否将采取所述预测。如果是,则方法400前进到方框440,在方框440处将分支目标地址发送到例如指令预提取单元128等程序计数器,以便开始从分支目标地址提取指令。方法400前进到方框410以查询由所述程序计数器指定的下一地址,所述下一地址在穿过流程图的此路径中为分支目标地址。
返回到方框438,如果预测不采取所述路径,则方法400前进到方框445来以常规方式处理存储于高速缓冲存储器中的指令。在方框445之后,方法400前进到方框410以查询程序计数器中的下一地址,所述下一地址在穿过流程图的此路径中为跟随所述间接分支指令之后的顺序地址,例如图2A中的地址0x000C。
图5为说明在实际分支解析时管理指令高速缓冲存储器的方法500的流程图。方法500是针对以下情形执行的:第一次计算间接分支指令的实际分支目标,以及例如分支预测电路126等预测机制误预测所述间接分支指令的目标。在方框510处,解析间接分支指令的实际目标。当稍后在处理器管线中处理间接分支指令时,可执行此分支解析。
在方框520处,方法500确定实际目标是否匹配所预测目标,或者对于第一次计算实际目标的情况,不存在所预测目标。如果实际分支目标不匹配所预测分支目标,则BTAC和指令高速缓冲存储器两者均无需更新。方法500前进到方框525,在方框525处其在前进返回到方框510之前等待下一分支指令。
如果实际分支目标不匹配所预测目标,则方法500检测到误预测且前进到方框530。至少两种情形可导致不匹配。第一种情形可发生于间接分支指令在先前存储于BTAC和指令高速缓冲存储器中(无分支目标)之后第一次执行时。在第一种情形中,所述间接分支指令之后的下一顺序指令可能已加载于处理器管线中。如果所预测目标地址不同于实际解析目标地址,则可能发生第二种情形。在第二种情形中,所预测目标地址中所指示的下一指令可能已加载于处理器管线中。
在方框530处,在任一情形中,处理器管线将其指令从管线清洗以使管线恢复到分支点,在此情况下,所述分支点是间接分支指令的地址。因此,将从所述处理器管线清洗在间接分支指令之后加载于处理器管线中的指令,而不管那些指令是否从所预测目标地址或在所述间接分支指令之后的下一顺序地址开始加载的。在方框540处,更新BTAC以将实际分支目标地址存储于其分支目标地址字段(例如列254)中。
在方框550处,管理指令高速缓冲存储器。举例来说,控制逻辑电路114可包括用以实施方框550A到550C的逻辑。方框550A到550C为方框550的替代实施例。在方框550A处,对应于所预测目标地址的高速缓冲存储器线失效。在方框550B处,对应于所预测目标地址的高速缓冲存储器线的分支目标失效。在方框550C处,对应于所预测目标地址的高速缓冲存储器线的分支目标地址经更新以反映实际目标地址。当间接分支指令在先前存储于BTAC和指令高速缓冲存储器中(无分支目标)之后第一次执行时,方框550C为优选的。
图6为共享共同BTAC 611的两个处理器601和602的功能方框图。所共享的BTAC611以及处理器601和602优选地被包含在单个集成电路芯片中。处理器601包括其自身的多级处理器管线620、指令高速缓冲存储器610和分支预测电路615。在级625处,发生实际分支解析以便分别用间接分支指令和分支目标地址更新BTAC 611和指令高速缓冲存储器610,如先前在图4和图5中所描述。处理器602包括其自身的多级处理器管线640、指令高速缓冲存储器630和分支预测电路635。在级645处,发生实际分支解析以便分别用间接分支指令和分支目标地址更新BTAC 611和指令高速缓冲存储器630,如先前在图4和图5中所描述。如所描绘,可在处理器的管线中的不同级处执行实际分支解析。尽管图6说明在两个处理器之间共享共同BTAC,但请注意,本发明涵盖在三个或三个以上处理器之间共享共同BTAC。在操作期间,当从含有有效分支目标地址的指令高速缓冲存储器610或指令高速缓冲存储器630提取地址时,相应管线620和640开始从分支目标地址开始预提取指令。
结合本文中所揭示的实施例而描述的各种说明性逻辑区块、模块、电路、元件和/或组件可用经设计以执行本文中所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可被实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一个或一个以上微处理器或任何其它此类配置。
结合本文中所揭示的实施例而描述的方法可直接在硬件中、在由处理器执行的软件模块中或在所述两者的组合中体现。软件模块可驻留于RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移除盘、CD-ROM或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得所述处理器可从所述存储媒体读取信息且可将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。
尽管本发明在实施例的上下文中揭示,但应认识到,所属领域的技术人员可采用与以上论述内容和随附权利要求书一致的很多种实施方案。
Claims (18)
1.一种用于减少对分支目标地址高速缓冲存储器(BTAC)进行查找的方法,其包含:
响应于在指令高速缓冲存储器(I-cache)中查找第一指令地址的未中而从所述BTAC检索分支目标地址;以及
将来自所述BTAC的所述分支目标地址存储于所述指令高速缓冲存储器中,所述分支目标地址与所述指令高速缓冲存储器中的所述第一指令地址相关联。
2.根据权利要求1所述的方法,其进一步包含:
在所述指令高速缓冲存储器中查找所述第一指令地址;以及
在所述指令高速缓冲存储器中检索与所述第一指令地址相关联的所述分支目标地址。
3.根据权利要求2所述的方法,其进一步包含:
提取与所述第一指令地址相关联的第一指令;以及
预测待提取的第二指令与所述分支目标地址相关联。
4.根据权利要求3所述的方法,其进一步包含:
基于所述分支目标地址而提取所述第二指令。
5.根据权利要求4所述的方法,其进一步包含:
针对所述第一指令检测误预测。
6.根据权利要求5所述的方法,其进一步包含:
通过以下各项中的至少一者来管理所述指令高速缓冲存储器:使指令高速缓冲存储器线失效、使所述指令高速缓冲存储器线中的所述分支目标地址失效和更新所述指令高速缓冲存储器中的所述分支目标地址。
7.根据权利要求5所述的方法,其中针对所述第一指令检测误预测包含:
针对所述第一指令计算实际分支目标地址;以及
将所述实际分支目标地址与所述指令高速缓冲存储器中的所述分支目标地址进行比较,其中所述实际分支目标地址不匹配所述分支目标地址。
8.一种将分支指令存储到指令高速缓冲存储器(I-cache)中的方法,其包含:
在指令高速缓冲存储器(I-cache)中查找分支指令地址;
响应于指令高速缓冲存储器未中而从分支目标地址高速缓冲存储器(BTAC)检索分支目标地址;以及
将所述分支目标地址存储到所述指令高速缓冲存储器中的条目中。
9.根据权利要求8所述的方法,其进一步包含:
响应于指令高速缓冲存储器命中而从所述指令高速缓冲存储器检索所述分支目标地址。
10.根据权利要求9所述的方法,其进一步包含:
预测待提取的下一指令与所述分支目标地址相关联。
11.根据权利要求8所述的方法,其进一步包含:
在误预测时更新所述指令高速缓冲存储器中的所述分支目标地址。
12.根据权利要求11所述的方法,其中在误预测时更新所述条目中的所述分支目标地址包含:
确定所述分支指令的实际分支地址;以及
将所述实际分支地址与所述分支目标地址进行比较,其中实际分支解析不匹配所预测的目标地址。
13.根据权利要求9所述的方法,其进一步包含:
预测是否发送待提取的所述分支目标地址。
14.根据权利要求13所述的方法,其进一步包含:
发送待提取的所述分支目标地址。
15.一种用于减少对分支目标地址高速缓冲存储器(BTAC)进行查找的系统,其包含:
分支目标存取高速缓冲存储器(BTAC);以及
指令高速缓冲存储器(I-cache),其经配置以响应于当查找第一分支指令地址时的高速缓冲存储器未中而从所述BTAC检索分支目标地址,所述指令高速缓冲存储器进一步经配置以存储所述分支目标地址。
16.根据权利要求15所述的系统,其中所述指令高速缓冲存储器进一步经配置以使得查找所述指令高速缓冲存储器中的所述第一分支指令地址且使得从所述指令高速缓冲存储器检索与所述第一分支指令地址相关联的所述分支目标地址。
17.根据权利要求15所述的系统,其中所述指令高速缓冲存储器经配置以使得提取与所述第一指令地址相关联的第一指令,所述系统进一步包含:
分支预测电路,其经配置以预测待提取的第二指令与所述分支目标地址相关联。
18.根据权利要求17所述的系统,其中所述指令高速缓冲存储器经配置以使得从所述指令高速缓冲存储器提取基于所述分支目标地址的所述第二指令。
19.根据权利要求18所述的系统,其进一步包含:
更新逻辑电路,其经配置以误预测待提取的所述第二指令。
20.根据权利要求19所述的系统,其进一步包含:
控制逻辑电路,其经配置以通过以下各项中的至少一者来管理所述指令高速缓冲存储器:使指令高速缓冲存储器线失效、使所述指令高速缓冲存储器线中的所述分支目标地址失效和更新所述指令高速缓冲存储器中的所述分支目标地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/464,996 US7640422B2 (en) | 2006-08-16 | 2006-08-16 | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache |
US11/464,996 | 2006-08-16 | ||
PCT/US2007/075996 WO2008022190A1 (en) | 2006-08-16 | 2007-08-15 | Methods and apparatus for reducing lookups in a branch target address cache |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101501635A true CN101501635A (zh) | 2009-08-05 |
CN101501635B CN101501635B (zh) | 2013-10-16 |
Family
ID=38799335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800302141A Active CN101501635B (zh) | 2006-08-16 | 2007-08-15 | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 |
Country Status (13)
Country | Link |
---|---|
US (1) | US7640422B2 (zh) |
EP (1) | EP2057536B1 (zh) |
JP (1) | JP5415268B2 (zh) |
KR (1) | KR101049319B1 (zh) |
CN (1) | CN101501635B (zh) |
BR (1) | BRPI0715899A2 (zh) |
CA (1) | CA2659310C (zh) |
ES (1) | ES2676303T3 (zh) |
HU (1) | HUE039149T2 (zh) |
MX (1) | MX2009001747A (zh) |
RU (1) | RU2419835C2 (zh) |
TW (1) | TWI397816B (zh) |
WO (1) | WO2008022190A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014206222A1 (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 分支目标地址获取方法和装置 |
CN106776367A (zh) * | 2016-12-13 | 2017-05-31 | 上海高性能集成电路设计中心 | 基于位置对应关系的指令Cache一致性的实现方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844807B2 (en) * | 2008-02-01 | 2010-11-30 | International Business Machines Corporation | Branch target address cache storing direct predictions |
US7865705B2 (en) * | 2008-02-01 | 2011-01-04 | International Business Machines Corporation | Branch target address cache including address type tag bit |
CN105468334A (zh) * | 2008-12-25 | 2016-04-06 | 世意法(北京)半导体研发有限责任公司 | 对非控制流指令减少分支检验 |
CN104220980B (zh) * | 2011-12-29 | 2018-01-19 | 英特尔公司 | 经管理的指令缓存预取 |
CN110825442B (zh) * | 2019-04-30 | 2021-08-06 | 成都海光微电子技术有限公司 | 一种指令预取方法及处理器 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2534662B2 (ja) * | 1986-03-25 | 1996-09-18 | 日本電気株式会社 | 命令キヤツシユ制御方法 |
US4722050A (en) * | 1986-03-27 | 1988-01-26 | Hewlett-Packard Company | Method and apparatus for facilitating instruction processing of a digital computer |
US5136697A (en) * | 1989-06-06 | 1992-08-04 | Advanced Micro Devices, Inc. | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache |
US5093778A (en) * | 1990-02-26 | 1992-03-03 | Nexgen Microsystems | Integrated single structure branch prediction cache |
US5774710A (en) * | 1996-09-19 | 1998-06-30 | Advanced Micro Devices, Inc. | Cache line branch prediction scheme that shares among sets of a set associative cache |
US6427192B1 (en) * | 1998-09-21 | 2002-07-30 | Advanced Micro Devices, Inc. | Method and apparatus for caching victimized branch predictions |
US6324643B1 (en) * | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
US6651162B1 (en) * | 1999-11-04 | 2003-11-18 | International Business Machines Corporation | Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache |
TW564369B (en) * | 2001-07-16 | 2003-12-01 | Ip First Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7096348B2 (en) * | 2003-12-15 | 2006-08-22 | Freescale Semiconductor, Inc. | Method and apparatus for allocating entries in a branch target buffer |
KR100630702B1 (ko) * | 2004-10-05 | 2006-10-02 | 삼성전자주식회사 | 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법 |
US7418676B2 (en) * | 2005-01-19 | 2008-08-26 | Seiko Epson Corporation | Asynchronous circuit design tool and computer program product |
-
2006
- 2006-08-16 US US11/464,996 patent/US7640422B2/en active Active
-
2007
- 2007-08-15 EP EP07814118.1A patent/EP2057536B1/en active Active
- 2007-08-15 WO PCT/US2007/075996 patent/WO2008022190A1/en active Application Filing
- 2007-08-15 CA CA2659310A patent/CA2659310C/en active Active
- 2007-08-15 ES ES07814118.1T patent/ES2676303T3/es active Active
- 2007-08-15 KR KR1020097005401A patent/KR101049319B1/ko active IP Right Grant
- 2007-08-15 JP JP2009524785A patent/JP5415268B2/ja active Active
- 2007-08-15 BR BRPI0715899-8A patent/BRPI0715899A2/pt not_active Application Discontinuation
- 2007-08-15 MX MX2009001747A patent/MX2009001747A/es active IP Right Grant
- 2007-08-15 CN CN2007800302141A patent/CN101501635B/zh active Active
- 2007-08-15 HU HUE07814118A patent/HUE039149T2/hu unknown
- 2007-08-15 RU RU2009109226/08A patent/RU2419835C2/ru not_active IP Right Cessation
- 2007-08-16 TW TW096130402A patent/TWI397816B/zh active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014206222A1 (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 分支目标地址获取方法和装置 |
CN104252334B (zh) * | 2013-06-29 | 2017-07-07 | 华为技术有限公司 | 分支目标地址获取方法和装置 |
CN106776367A (zh) * | 2016-12-13 | 2017-05-31 | 上海高性能集成电路设计中心 | 基于位置对应关系的指令Cache一致性的实现方法 |
CN106776367B (zh) * | 2016-12-13 | 2020-05-12 | 上海高性能集成电路设计中心 | 基于位置对应关系的指令Cache一致性的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2057536A1 (en) | 2009-05-13 |
CN101501635B (zh) | 2013-10-16 |
KR20090042318A (ko) | 2009-04-29 |
RU2009109226A (ru) | 2010-09-27 |
JP2010501101A (ja) | 2010-01-14 |
TWI397816B (zh) | 2013-06-01 |
CA2659310C (en) | 2011-11-15 |
EP2057536B1 (en) | 2018-04-11 |
HUE039149T2 (hu) | 2018-12-28 |
US7640422B2 (en) | 2009-12-29 |
MX2009001747A (es) | 2009-02-25 |
WO2008022190A1 (en) | 2008-02-21 |
BRPI0715899A2 (pt) | 2013-07-30 |
JP5415268B2 (ja) | 2014-02-12 |
CA2659310A1 (en) | 2008-02-21 |
TW200815981A (en) | 2008-04-01 |
ES2676303T3 (es) | 2018-07-18 |
RU2419835C2 (ru) | 2011-05-27 |
KR101049319B1 (ko) | 2011-07-13 |
US20080046702A1 (en) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101479700B (zh) | 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备 | |
US7406569B2 (en) | Instruction cache way prediction for jump targets | |
US7917731B2 (en) | Method and apparatus for prefetching non-sequential instruction addresses | |
CN101501635B (zh) | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 | |
CN101460922B (zh) | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 | |
US5774710A (en) | Cache line branch prediction scheme that shares among sets of a set associative cache | |
US8677049B2 (en) | Region prefetcher and methods thereof | |
IL165987A (en) | Data processing system having external and internal instruction sets | |
CN101438237A (zh) | 基于区块的分支目标地址高速缓冲存储器 | |
US9552032B2 (en) | Branch prediction power reduction | |
US9547358B2 (en) | Branch prediction power reduction | |
US8195889B2 (en) | Hybrid region CAM for region prefetcher and methods thereof | |
US11526356B2 (en) | Prefetch mechanism for a cache structure | |
EP0798632B1 (en) | Branch prediction method in a multi-level cache system | |
US8219756B2 (en) | Systems and methods for lookahead instruction fetching for processors utilizing tagless hit instruction caches | |
US7085916B1 (en) | Efficient instruction prefetch mechanism employing selective validity of cached instructions for digital signal processor and method of operation thereof | |
Peng et al. | Signature buffer: Bridging performance gap between registers and caches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |