CN113360190A - 可调整分支预测方法和微处理器 - Google Patents
可调整分支预测方法和微处理器 Download PDFInfo
- Publication number
- CN113360190A CN113360190A CN202110851066.1A CN202110851066A CN113360190A CN 113360190 A CN113360190 A CN 113360190A CN 202110851066 A CN202110851066 A CN 202110851066A CN 113360190 A CN113360190 A CN 113360190A
- Authority
- CN
- China
- Prior art keywords
- branch
- microprocessor
- adjustable
- predictor
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000008859 change Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
- G06F7/584—Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本申请涉及可调整分支预测方法和微处理器。在一个实施例中,一种微处理器包括:预测逻辑,其包括分支预测器,所述分支预测器包括一组多集关联表,各个表与不同长度的分支模式历史相对应;以及控制逻辑,其被配置为提供针对所述预测逻辑的可调整写入策略。
Description
技术领域
本发明通常涉及微处理器,并且具体地涉及微处理器中的分支预测。
背景技术
微处理器如今使用流水线处理方案来操作,由此编程指令被分解为在流水线的多个级中并发执行的步骤。指令通常(例如,编程代码的10-20%)包括分支指令或简单的分支,其中包括无条件分支(例如,始终采取的分支)和条件分支(例如,根据对指定条件的评估而采取或不采取)。直到计算出条件并且条件跳转经过指令流水线中的执行级之前,通常不确定地知道采取还是不采取条件跳转,这可能导致获取下一条指令的延迟。已经开发了分支预测器以试图在流水线的前端猜测条件分支将去向哪个方向(采取、不采取)以及到达哪个目标地址,并且这样改善了整个流水线中的指令流。
在微处理器中常用的一个分支预测器被称为分支目标地址高速缓存(BTAC)。BTAC包括硬件逻辑,该硬件逻辑可以包括使用过去的分支指令行为的全局历史模式来实现对所拾取的分支指令的目标地址的预测。一般而言,用于BTAC的分支预测器可以包括与多个经常用字母表示的、多集关联的高速缓存存储器或边(诸如在BTAC的两个高速缓存存储器的情况下,边A和边B等)相结合使用的多个预测器表。各边可以包括多个路(例如2路、4路等)。用于一些示例BTAC阵列的信息可以在美国专利No.8,832,418和No.7,707,397中找到。对于给定的高速缓存取指(例如,指令高速缓存中的高速缓存行的十六(16)字节取指),可能存在多于单个的分支指令。对于具有边A和边B的BTAC以及包括两个分支指令的高速缓存取指,可以分别在边A和边B中找到针对这两个分支指令的信息(例如,目标地址、方向等)。
对于条件分支预测,BTAC可以使用标签几何(TAGE)预测器,其包括各自具有不同长度的全局分支历史模式的多个表。学术上对TAGE预测器、并且具体地对基于表的错误预测的更新要采取的推荐动作(例如,写入策略或分配)已经有广泛的著作。然而,由于一些微处理器使用TAGE预测器的硬件实现,因此声称改善性能的推荐在给定的芯片流片(tape-out)之后不容易实现。
发明内容
在一个实施例中,一种微处理器,包括:预测逻辑,其包括分支预测器,所述分支预测器至少包括第一边和第二边,所述第一边和所述第二边各自包括一组多集关联表,所述一组多集关联表中的各表与不同长度的分支模式历史相对应;以及控制逻辑,其被配置为针对预测逻辑提供可调整写入策略。
在检查以下附图和详细描述时,本发明的其它系统、方法、特征和优点对于本领域的技术人员将是明显的或变得明显。所有这样的附加系统、方法、特征和优点旨在被包括在本说明书内、本发明的范围内,并且受所附权利要求的保护。
附图说明
参考以下附图,可以更好地理解本发明的各个方面。不必按比例绘制附图中的组件,而是将重点放在清楚地例示本发明的原理上。此外,在附图中,相同的附图标记在多个视图中表示相应部件。
图1A是示出实现可调整分支预测系统的实施例的微处理器的示例分支单元流水线的框图。
图1B是示出图1A中所示的分支单元流水线的示例前端的示意图。
图2A是示出示例可调整分支预测系统的实施例的示意图。
图2B是示出在图2A的可调整分支预测系统中使用的示例控制逻辑的实施例的示意图。
图2C是示出在图2A的可调整分支预测系统中使用的示例伪随机生成器的实施例的示意图。
图3是示出示例可调整分支预测方法的实施例的流程图。
图4是示出另一示例可调整分支预测方法的实施例的流程图。
具体实施方式
公开了可调整分支预测系统和方法的某些实施例,该可调整分支预测系统和方法被配置为针对在微处理器的分支预测流水线中使用的预测逻辑提供可调整写入策略。在一个实施例中,可调整分支预测系统包括可编程特征控制寄存器,该可编程特征控制寄存器可由微代码配置(如可以经由补丁代码调整)以使得即使在微处理器芯片流片之后也能够针对多个预测表选择多个写入策略其中之一。因此,与对分配方案的最新研究一致,针对错误预测的多个写入策略各自的分配方案可以针对微处理器的分支预测器的特定硬件实现来定制和/或针对微处理器旨在用于的特定应用来定制。
另外,经常使用软件来进行对一些分支预测方案(如TAGE)的研究,在软件中可以更容易地实现调整。在分支预测的硬件实现中,改变特别是如果在流片之后发生改变可能是昂贵的。相反,可调整分支预测系统的某些实施例实现了预测器表的写入策略的微代码驱动的调整,从而实现了基于硬件的分支预测的更大灵活性。
已经总结了本发明的可调整分支预测系统的某些特征,现在将详细参考如附图中所示的可调整分支预测系统的描述。虽然将结合这些附图描述可调整分支预测系统,但是不旨在将其限制为本文所公开的一个或多个实施例。即,虽然本发明容许修改和替代形式,但是其具体实施例在附图中以示例的方式示出并且本文将详细描述为足以使本领域技术人员理解。然而,应当理解,附图及其详细描述不旨在将本发明限制为所公开的特定形式。相反,本发明将覆盖落在由所附权利要求限定的本发明的精神和范围内的所有修改、等同物和替代物。如贯穿本申请所使用的,词语“可以”是以许可的意义(即,意味着具有潜在性)而不是强制的意义(即,意味着必须)来使用的。类似地,词语“包括”意味着包括但不限于。
各种单元、模块、电路、逻辑或其它组件可以被描述为“被配置为”进行一个或多个任务。在这样的背景下,“被配置为”是结构的广泛叙述,该结构通常意味着“具有电路或其它物理结构”,该电路或其它物理结构在操作期间进行或能够进行一个或多个任务。电路可以是专用电路,或者是在编码指令的控制下操作的更通用的处理电路。即,在描述本发明的各种实现的某些方面或特征时,本文可以使用如“单元”、“模块”、“电路”、“逻辑”和“组件”的术语。本领域技术人员将理解,利用电路来实现相应的特征,无论该电路是专用电路还是在微编码指令控制下操作的更通用的电路。
此外,单元/模块/电路/逻辑/组件可以被配置为即使在该单元/模块/电路/逻辑/组件当前不在操作中时也进行任务。叙述被配置为进行一个或多个任务的单元/模块/电路/逻辑/组件明确地不旨在针对该单元/模块/电路/逻辑/组件进行功能性限定。对此,本领域技术人员将了解,电路元件的具体结构或互连将通常由设计自动化工具的编译器(诸如寄存器传送语言(RTL)编译器等)来确定。RTL编译器对非常类似于汇编语言代码的脚本进行操作,以将脚本编译成用于最终电路的布局或制造的形式。
即,使用更高级软件工具来设计集成电路(诸如本发明的集成电路等),以对电路的期望功能操作进行建模。如众所周知的,“电子设计自动化”(或EDA)是用于设计电子系统(诸如集成电路等)的软件工具的类别。EDA工具还用于将设计功能编程到现场可编程门阵列(FPGA)中。如Verilog和甚高速集成电路(VHDL)的硬件描述语言(HDL)被用于创建电路的高级表示,从该高级表示可以得到低级表示和最终的实际布线。实际上,由于现代半导体芯片可以具有数十亿个组件,因此EDA工具被认为对于它们的设计是必要的。实际上,电路设计者使用如C/C++的编程语言来指定操作功能。EDA软件工具将该指定功能转换成RTL。然后,硬件描述语言(例如Verilog)将RTL转换成离散的门网表。该网表定义由例如铸造厂生产的实际电路。实际上,这些工具因其在促进电子和数字系统的设计工艺中的作用和用途而众所周知和理解,因此本文不需要描述。
图1A示出微处理器10的示例性分支单元流水线的实施例。应当了解,为了简洁以及易于解释和说明,本文省略了微处理器10的某些已知组件。如已知的,流水线架构提供在执行中重叠的多个指令,其中各个级称为管道级。分支单元流水线中所示的框可以各自根据一个或多个级来实施,这些级在框的左侧示出并且在所描绘的实施例中由从上至下按顺序前进并且被重定向(如箭头所示)的大写字母C、I、B、U、L、M、F、G、W、X、E、S、W、Y和Z表示。本领域的普通技术人员应了解,图1A中所描绘的级的数量和/或布置仅说明一个示例性实施例,并且在一些实施例中,可以实现级的不同数量和/或布置,因此预期在本发明的范围内。本领域的普通技术人员还应了解,框提供对分支流水线的功能性的一般描述,并且为了简洁,本文省略了本领域的普通技术人员已知的相关联逻辑或电路。例如,本领域的普通技术人员应了解,如已知的,流水线的各级可以由时钟流水线寄存器或锁存器分开。作为另一示例,虽然图1A中未明确示出,但本领域的普通技术人员应了解,前端处的操作涉及与指令高速缓存的数据交换或交互。
指令高速缓存是微处理器内的随机存取存储器装置,微处理器将最近从较大高速缓存(例如,L2高速缓存、L3高速缓存)或系统存储器获取和/或预获取(例如,通过总线接口单元从DRAM获取和/或预获取)并且由微处理器在运行ISA机器语言程序的过程中进行的ISA机器语言程序的指令(诸如x86 ISA机器语言指令等)放入指令高速缓存中。ISA定义保持要进行的下一ISA指令的存储器地址(由x86 ISA定义为指令指针(IP),但有时称为程序计数器(PC))的指令地址寄存器,并且微处理器在其运行机器语言程序以控制程序的流程时更新指令地址寄存器内容。为了随后在下一次机器语言程序流执行时基于指令地址寄存器内容从指令高速缓存而不是从系统存储器更快地拾取ISA指令的目的,对ISA指令进行高速缓存,使得寄存器保持指令高速缓存中所存在的ISA指令的存储器地址。特别地,基于保持在指令地址寄存器中的存储器地址(例如,IP)而非排他性地基于由加载或存储指令指定的存储器地址来访问指令高速缓存。因此,将ISA指令保持为数据(诸如可存在于采用软件转译器的系统的硬件部分中等)、并且排他地基于加载/存储地址而不是通过指令地址寄存器值来访问的专用数据高速缓存不是指令高速缓存。此外,为了本发明的目的,对指令和数据进行高速缓存(即,基于指令地址寄存器值和加载/存储地址,而不是排他地基于加载/存储地址所访问)的统一高速缓存旨在被包括在指令高速缓存的定义中。
特别注意图1A的微处理器10的分支单元流水线,微处理器10包括流水线微处理器,在一个实施例中,该流水线微处理器的指令集基本上符合x86架构指令集。如本领域的普通技术人员从本文提供的描述中将了解的,本发明可以以各种不同的电路结构和架构来实现,并且图1A中所示的架构仅是许多合适的架构之一。示例性微处理器10包括快速预测器12、分支目标地址高速缓存(BTAC)14、指令字节队列(XIB)16、分支解码器18、格式指令队列(FIQ)/循环队列20、指令转译器22、寄存器别名表(RAT)/保留站(RS)24、功能单元(例如,整数单元、浮点单元等)26、以及分支表更新28。微处理器10的各附图标记的框对应于在相应的多个级C、I、B、U、L、M、F、G、W、X、E、S、W、Y和Z上实现的逻辑电路,其中流水线架构在每个级启用不同指令组。在一个实施例中,可以在每个级处运行四个或更多个指令,其中控制信号沿着流水线标记各级。与快速预测器12、BTAC 14和XIB 16相关联的级涉及对指令高速缓存(I高速缓存,图1A中未示出)的访问。
快速预测器12包括单周期分支预测器,该单周期分支预测器提供单周期预测(例如,花费一个周期来产生目标地址,在一个实施例中在I级提供该预测)。在一个实施例中,快速预测器12包括存储先前执行的分支指令的分支目标地址的表(本文也被称为阵列或目标阵列),该表在随后遇到所存储的分支指令时实现分支预测。在一个实施例中,表包括128个条目,但是在一些实施例中可以使用其它大小(例如,64个条目、32个条目等)的表。该表被组织为n路(例如,n是大于1的整数)的集关联高速缓存。一般而言,n路的集关联高速缓存在这里也称为多集关联高速缓存。在一个实施例中,各条目存储八(8)个3位计数器和当前局部分支模式,该计数器是由3位局部分支模式而选择的。快速预测器12还包括条件分支预测器,该条件分支预测器与该表并行地被访问并且为条件分支提供采取/不采取的方向。快速预测器还包括返回堆栈,该返回堆栈可以提供目标而不是表。在一个实施例中,返回堆栈包括四(4)个条目,并且为返回指令提供目标。注意,以上列出的规范仅用于说明,并且一些实施例可以在不同的规范下进行,因此预期在本发明的范围内。快速预测器12被配置为立即(在单个周期内)递送预测分支目标,而没有采用分支惩罚。在一些实施例中,快速预测器12可以根据其预测机制和/或表配置的其它规范来操作,或者在一些实施例中,可以省略快速预测器12。大多数分支被快速预测器12正确地预测。在一些实施例中,在快速预测器12基于同一所获取的分支指令而提供与BTAC 14的分支预测不同(例如,在方向和/或目标上不同)的分支预测的情况下,BTAC 14利用BTAC 14所提供的分支预测信息(例如,方向、目标地址、分支预测类型)来在BTAC 14的一组级内(例如,在U级)重写快速预测器12的分支预测并更新快速预测器表。
I级和/或B级对应于对分支单元流水线的各种表(包括I高速缓存、标签阵列、转译后备缓存器(TLB)阵列、BTAC阵列、返回堆栈阵列等)的访问、(例如,基于标签)通过多路复用给出方向或路、以及读出指令。
BTAC 14保持其用于预测后续执行期间的目标地址、方向和类型的与先前执行分支指令有关的信息。BTAC 14包括比快速预测器12的表大得多的一个或多个表。在一个实施例中,BTAC 14包括4k条目、m路的集关联表(这里也称为阵列或目标阵列),其中m是大于1的整数。类似于n路集关联表,m路集关联表在这里也可以被称为多集关联表。BTAC 14的各条目包括有效位、分支目标地址预测、方向预测和分支类型。分支类型指定分支指令是呼叫/返回、是间接分支、是条件相对分支、还是无条件相对分支。在一个实施例中,BTAC 14包括具有多条目(例如,12k)的基于标签几何(TAGE)的条件分支预测器的条件相对分支预测器(或者简称为条件分支预测器)、多个表、多位(例如,3位)、采取/不采取(T/NT)计数器以及多位全局分支历史,或者与上述这些协作。也就是说,如已知的,TAGE条件分支预测器包括具有几何上增加的分支历史长度的标签表。作为另一示例,间接预测包括多条目(例如,1.5k)TAGE预测器,并且将表条目用于静态间接分支。在一个实施例中,使用了两个TAGE条件分支预测器,一个用于预测器阵列中的边A,以及一个用于预测器阵列中的边B。TAGE条件分支预测器可以是BTAC的一部分或与BTAC 14结合使用。
在一个实施例中,BTAC 14包括具有比TAGE条件分支预测器低的复杂度的第二类型的条件分支预测器(例如与预测器阵列的边C相关联的gshare预测器)或与之协作。gshare条件分支预测器可以是BTAC 14的一部分或与BTAC 14结合使用。gshare条件分支预测器包括在快速预测器12的复杂度与TAGE条件分支预测器的复杂度之间的复杂度(例如,大约TAGE条件分支预测器的大小的1/10)。在一个实施例中,gshare条件分支预测器包括单个表(例如,包括最后m个执行的分支指令的分支模式的m位全局历史寄存器,其中,m通常为10-12位,但不限于该数量)。gshare条件分支预测器使用全局分支历史和分支指令的位置(例如IP)来(经由XOR逻辑运算)创建到计数器(例如2位计数器)的表中的索引,其中索引的结果是针对当前分支的预测。由于TAGE和gshare类型的条件分支预测器在本领域中是已知的,因此为简洁起见,在此省略对其的进一步描述。此外,尽管这里强调了边A、B和C,但是在一些实施例中,可以使用更少的或额外的边。注意,在一些实施例中,可以使用其它类型的预测机制,包括基于相关性的预测机制、使用全局和局部分支历史的组合的条件分支预测器等。对于指令高速缓存的高速缓存行的各部分或各取指单位(quantum)(例如,16字节),BTAC 14可以保持三个条目(例如,边A、B和C,尽管在一些实施例中可以使用更少的边来存储针对更少的分支指令的预测信息),该三个条目可以保持针对可能存在于高速缓存行的一部分中的多达三个分支指令的预测信息。BTAC 14包括通过一组级(例如,I级、B级和U级)的操作。实际上,分支指令的U级用作目标的C级(例如,从B级到C级的箭头反映B级处的分支指令的情况,并且下一个时钟是目标的C级,或者在这里也是高速缓存地址),从而导致BTAC预测的二时钟延迟。
BTAC 14具有二时钟采取惩罚(two-clock taken penalty),这也揭示快速预测器12通过立即将新高速缓存地址引导为目标来提供快速分支预测(无采取惩罚)的益处。在一个实施例中,BTAC 14大于快速预测器12且具有更复杂的分支预测机制,其被配置为(例如,总是)在分支预测中存在不一致(例如,BTAC 14确定的分支预测与快速预测器12所确定的采取判断和/或分支目标地址不同)时重写快速预测器12的分支预测。在一些实施例中,BTAC 14被配置为通过将分支预测信息写入到快速预测器12的表中(且还写入BTAC 14的表中)来在BTAC级其中之一(例如,U级)期间更新快速预测器12。在一些实施例中,延迟对BTAC14的更新,直到分支被执行或引退为止,其中对BTAC 14的更新涉及对BTAC 14的预测器表的写入。在一个实施例中,更新涉及目标信息更新和/或计数器更新。更新包括将错误预测条件分支信息写入到边A、B或C其中之一。在一些实施例中,根据与相应TAGE条件分支预测器相对应的边A和边B的多个可选择写入策略其中之一来进行更新。然而,对快速预测器12的更新不等待那么久,而在BTAC级期间发生。注意,不在快速预测器12中的分支在两个周期之后在与BTAC级相对应的时间(例如,在BTAC级期间)被写入快速预测器12中。
XIB 16是条目队列,各条目保持来自指令高速缓存的16个字节的数据。例如,来自XIB 16的高速缓存数据仅是采用16个字节的块的指令字节流,并且鉴于指令具有可变长度,给定x86指令在流内或给定块内在何处开始或结束是未知的。XIB 16包括用以确定和标记各指令在流内的开始和结束字节、从而将字节流分解成x86指令流的已知逻辑,其中该x86指令流被提供给FIQ/循环队列20并存储在FIQ/循环队列20中以供微处理器流水线的其余部分处理。在L(长度)级,XIB 16确定指令长度。在一个实施例中,预解码器(图1A中未示出)在U级处实现,并且被配置为检测潜在分支指令并且在队列中针对各指令字节来如此地标记它们。注意,在该级,存在关于给定字节是否为指令的开始的模糊性。如果字节是在稍后(M级)确定的分支指令的操作码字节,则该指令被确认为分支指令。例如,分支解码器18包括用于在多路复用或M级中对指令进行多路复用的指令多路复用(未示出),其中分支指令被这样确认。注意,关于分支解码的附加信息可以在美国专利8,473,726中找到,其全文在与本发明一致的程度上通过引用结合在此。
在F级中,如以上所说明的对这些指令进行格式化。在一个实施例中,格式化指令包括基本上符合x86架构指令集的指令。此外,在M级确定给定指令(可能由预解码器预先标记)是否确实是分支。例如,在快速预测器12或BTAC 14中发生未命中的情况下(例如,在初始启动时),分支解码器18(例如,指令多路复用)决定为当前指令是分支,向BOT写入,并且在G级将高速缓存地址重定向到新目标并更新微处理器10的前端中的表。实际上,当在快速预测器12或BTAC 14处未命中时,分支解码器18提供分支预测,其中分支指令在C级转向目标。在一些情况下,诸如在BTAC 14处针对各取指存在多于有限或预定最大数量的分支(例如,针对各16字节取指存在多于三个分支)的情况下,延迟额外分支的分支预测,直到解码时间为止。
FIQ/循环队列20接收格式化指令并且对它们进行缓存,直到它们可以被转译成微指令为止。FIQ/循环队列20还提供初步解码和快速循环功能(例如,在BTAC循环分支上,循环队列被激活并且循环指令被重复发送),后者由框20右侧的箭头表示。
W级提供可选的额外定时时钟。
在X级,指令转译器22(在X级或转译级中)将存储在FIQ/循环队列20中的格式化指令转译成微指令。
指令以程序顺序被提供至寄存器别名表/保留表(RAT/RS)24。RAT/RS 24的RAT功能维持和生成针对各指令的依赖性信息。RAT/RS 24的RAT功能将指令的源和目的地重命名到内部寄存器上,并且将指令分派到RAT/RS 24的保留站,该保留站(可能不按照程序顺序)向功能单元26发出指令。包括整数单元的功能或执行单元26在E(执行)级执行分支指令。执行单元、分支单元和整数单元是本文中可互换使用的术语。在一个实施例中,执行单元26(例如,两个执行单元)在单个时钟周期中执行两个分支。执行单元26还指示BTAC 14是否已正确地预测分支指令。
在一个实施例中,将执行的结果提供给重排序缓存器(未示出),该重排序缓存器包括与已经执行的指令有关的信息。众所周知,重排序缓存器在指令发出之后保持指令的原始程序顺序,并允许在退出级期间对结果进行序列化。在一个实施例中,可以将重排序缓存器的信息中的一些存储在沿着流水线的其它地方,诸如在解码器18处等。存储在重排序缓存器中的信息可以包括分支信息,诸如分支的类型、分支模式、目标、预测中使用的表以及高速缓存替换策略信息(例如,最近最少使用或LRU)等。
分支表更新28包括S、W、Y和Z级,并且被配置为用与完全解码和执行的分支指令有关的信息(例如,分支的最终结果)来(例如,在S级处)对前端的各种表(例如,BTAC、TAGE)进行更新。在S、W、Y和Z级,更新可能涉及表读取、目标地址写入以及计数器递增或递减,这可能涉及一些延迟。在一个实施例中,分支表更新28针对给定条件分支指令和缓存有该条件分支指令的边(例如,A、B或C)提供错误预测的指示。
现在参考图1B并继续参考图1A,示出在针对图1A的微处理器10示出的分支单元流水线的前端30处使用的示例快速预测器12和其它示例性源。前端30包括获取单元32(例如,包括多路复用和时钟寄存器)、转译后备缓存器(TLB)34、指令高速缓存(I高速缓存数据)36、I高速缓存标签38(或标签阵列)、BTAC 14以及快速预测器12。获取单元32接收多个高速缓存指令地址源,包括顺次的指令地址(例如,来自I级)、经校正指令地址(例如,来自S级)、解码时间指令地址(例如,来自G级)以及来自BTAC 14和快速预测器12的地址。获取单元32的输出是作为对TLB 34、I高速缓存数据36、I高速缓存标签38、BTAC 14和用于访问I高速缓存数据36的下一指令的快速预测器12的输入而提供的高速缓存地址。
TLB 34在存储器管理单元(未示出)的管理下提供如已知的虚拟到物理页地址转译。即,TLB 34存储最近使用的虚拟地址的物理地址。TLB 34从分段单元(其将来自程序的逻辑地址转换成线性地址)接收线性地址,并且将该线性地址的一部分与TLB 34的条目进行比较以查找匹配。如果存在匹配,则根据TLB条目计算物理地址。如果不存在匹配,则拾取来自存储器的页表条目且将该页表条目放置到TLB 34中。
I高速缓存数据36包括已经从L2、L3或主存储器拾取或预拾取的指令的1级高速缓存。I高速缓存数据36包括多个时钟寄存器。
I高速缓存标签38包括与I高速缓存数据36中的指令相对应的标签阵列,并且包括多个时钟寄存器,并且用于确定与所拾取的高速缓存指令相关联的信息(例如,高速缓存地址的标签或部分)与I高速缓存数据36和BTAC 14之间的匹配。
上文结合图1A说明了BTAC 14,并且该BTAC 14具有多个时钟寄存器和二(2)时钟采取惩罚。同样在上文中说明的快速预测器12具有零(0)时钟采取惩罚。例如,假定沿着I高速缓存以每周期16个字节进行拾取,并且假设高速缓存地址20至高速缓存地址95的分支指令。注意,在该示例中由地址描述暗示十六进制表示法(例如,0x0、0x10、0x20等)。由此,取指在高速缓存地址0、高速缓存地址10、高速缓存地址20(分支指令,但由于BTAC 14跨越多个周期进行读取和多路复用因而尚未解决,其中在一些实施例中,该多个周期是与I高速缓存相同的定时)、高速缓存地址30(相对时钟1)、高速缓存地址40(相对时钟2)、然后在第3时钟(相对时钟3)上发生,高速缓存指令取指被重定向到缓存地址95。因此在该示例中采取的分支惩罚包括两个时钟周期,因为高速缓存地址30和40发生在分支之后。换言之,在没有快速预测器12的情况下,对于该特定设计示例,采用的分支惩罚总是两个时钟。利用更小且更快的快速预测器12,高速缓存地址获取(在以上示例中)包括0、10、20和95,对高速缓存地址没有延迟且采取的惩罚为零。如上所述,在一些实施例中,快速预测器12可以被省略。
转向注意图2A,其示出示例可调整分支预测系统40的实施例。在一个实施例中,可调整分支预测系统40包括具有或耦合到条件分支预测表42的BTAC 14、分支表更新28、及控制逻辑44,控制逻辑44包括写入策略调整逻辑46、伪随机生成器(PRG)48、及高速缓存条目替换逻辑50、和/或与这些协作。注意,为了简洁起见,这里省略了流水线的其它部分,但是应当理解,流水线如以上结合图1A-1B描述的那样起作用。在一些实施例中,更少的或额外的组件可以被视为包括可调整分支预测系统40和/或控制逻辑44。在一个实施例中,分支预测表42(或简称为表)包括第一边(A)、第二边(B)和第三边(C),但在一些实施例中可以使用不同数量的边。第一边A和第二边B各自包括与相应第一条件分支预测器(或更具体地,TAGE条件分支预测器,一个用于边A,一个用于边B)相对应的一组多集关联表。第三边包括包含单个条件分支预测器(例如,gshare条件分支预测器)的单个表,但在一些实施例中,第三边可省略或与不同的条件分支预测器和/或多个表相关联。多个表T0-TN在相应的边A和B中,其中N是大于一的整数,并且典型地在不同复杂度全局分支模式中为五(或者如果对路计数则实际上更多)。所属领域的普通技术人员应理解,BTAC 14和条件分支预测器(TAGE、gshare)都具有多边阵列(各自具有边A、B和C)。例如,如果分支存在于BTAC 14的边B中,则分支也存在于条件预测器的边B中。如图2A所示,预测表42的边A、B各自具有单独的TAGE条件预测器,并且边C具有gshare条件分支预测器。注意,这里对预测逻辑的引用包括预测表(包括它们的特定结构和/或布置、读取和写入策略以及预测算法或方法)。
如图2A中所示,分支表更新28向控制逻辑44提供信息,包括给定条件分支指令是否被错误预测以及违规(错误预测)的条件分支指令被高速缓存在何处(例如,哪个边、哪路)。控制逻辑44与写入策略调整逻辑46、PRG 48和高速缓存条目替换逻辑50协作以将分支指令信息写入到边A、B或C。例如,对于TAGE条件分支预测器,(下面结合图2B进一步描述的)写入策略调整逻辑46控制对错误预测所采取的写入策略的选择,其中,可以部分地根据由伪随机生成器48提供的表的分配百分比值来分派对表的分配。高速缓存条目替换逻辑50包括利用多个已知高速缓存条目替换方案之一的阵列。例如,在一个实施例中,使用最近最少使用(LRU)替换算法。当控制逻辑44更新(写入)表42(例如,在边A或边B之间选择)时,高速缓存条目替换逻辑50控制地址多路复用器(未示出)选择更新地址。高速缓存条目替换逻辑50存储边A、B和C各自的替换信息。由此,高速缓存条目替换逻辑50是在表42的边之间共享的全局资源。在一个实施例中,替换信息包括用于指示边中的哪个边和各边的路中的哪个路是最近最少使用的位,该位由控制逻辑44使用以进行向表42的写入。控制逻辑44还控制对高速缓存条目替换逻辑50的LRU阵列的更新。
在继续参考图2A的情况下关注图2B,其示出策略调整逻辑46的实施例。本领域的普通技术人员从本发明应理解,图2B中所示的示例是一个说明性示例,并且在一些实施例中,可以使用不同电路来进行类似功能。策略调整逻辑46包括熔丝库52、补丁存储器(例如,补丁只读存储器或补丁ROM)54、微代码存储器(例如,微代码ROM)56、可编程特征控制寄存器(FCR)58以及多路复用器选择60。通常,FCR 58选择多个写入策略其中之一,这允许经由补丁ROM 54对TAGE预测器的微代码驱动调整(并且即使在流片之后也允许这种调整)。补丁ROM 54包括特权代码(例如,授权的或监督的)。熔丝库52包括多个(例如,数百个、数千个等)物理熔丝,这些物理熔丝通过从实体(例如,芯片设计制造商、芯片制造商等)接收到过流信号而选择性地熔断或断裂。微代码ROM 56被配置为对熔丝库52进行读取并且相应地设置FCR 58的寄存器。熔丝库52和微代码ROM 56包括已知技术,并且因此为了简洁起见,这里省略对其的进一步描述。补丁ROM 54包括用于替换微代码ROM 56中的微代码的部分的微代码。通过该替换,可以不同地处理指令。为了FCR 58的目的,可以(例如,在流片时)初始设置各种逻辑功能的默认值。补丁ROM 54可以替换微代码ROM 56的部分,微代码ROM 56进而选择性地读取熔丝库52的熔丝中的一个或熔丝的组合来对FCR 58进行调整以修改或调整默认值,并且在本实施例中,以提示TAGE条件分支预测器写入策略的改变。因此,通过策略调整逻辑46的实现,可以在芯片制造时和运行时(例如,当在测试环境中启动芯片时)设置和重置(例如,调整)默认值。
通过各种位设置,FCR 58的输出可以得到微处理器10中的多个不同逻辑功能(例如,循环队列检测、间接表写入策略等)的更改后的功能。在本实施例中,使用两个位来控制多路复用器选择60对四个不同写入策略的选择(例如,使用RTL设置)。换句话说,在错误预测时选择与四个不同写入策略各自相关联的分配方案其中之一,其中分配针对下一个更高表或表的一些混合。在一个实施例中,在表1中示出了基于五(5)个TAGE表T0-T4的四个不同写入策略,应理解的是,在一些实施例中,针对错误预测的动作、写入策略的数目、和/或各表的比例分配的变化可以不同:
表1
写入策略 | 针对错误预测的动作 |
WP0 | 总是分配到下一个更高表 |
WP1 | 分配到多个表:50%(T1、T3),25%(T2、T4) |
WP2 | 分配到下一个表(75%)和“下一个+1”表(25%) |
WP3 | 分配到下一个表(50%)、“下一个+1”表(25%)、“下一个+2”表(25%) |
注意,表复杂度从T0-T4增加。作为示例,如果选择WP0并且错误预测来自表T0,则用于更新的分配总是到下一个更高表(例如,T1)。高速缓存条目替换逻辑50确定该分配是到边A还是到边B。注意,对术语分配(或类似地,“进行分配”等)的引用是指选择用来放入预测的预测表和在该表中的条目。例如,如果分支仅在TAGE条件分支预测器的T0中具有条目,并且其进行了错误预测,则分配是到下一个更高表(如T1)中的新条目(假设写入策略0或WP0)。更高表包括更长的分支模式并且平均起来更准确,但是由于空间约束,不是每个分支都可以被分配到更高表。此外,在一些实施例中,表0(T0)中的条目进行保持(其中计数器被更新以反映分支方向)。注意,表的数目是一个示例实施例的说明,并且在一些实施例中,可以使用其它数目。
使用对各个表的百分比分配的写入策略(例如,WP1-WP3)的实现依赖于伪随机生成器48,在图2C中示出了伪随机生成器48的示例。即,在选择了写入策略之后使用伪随机生成器48。例如,假设FCR生成的2位值导致由多路复用器选择60选择写入策略2(WP2,其中分配在75%的时间是到下一个表以及在25%的时间是到“下一个+1”表)。伪随机生成器48用于伪随机地创建75%的信号。注意,组成伪随机生成器48的逻辑提供比仅使用简单的计数器(该简单的计数器例如使4个状态中的3个状态启动以在75%的时间中发信号)更好的结果,这是因为简单的计数器可能与某个分支调协并且总是以一种或另一种方式发信号。在一个实施例中,伪随机生成器48包括线性反馈移位寄存器(LFSR)62、处理逻辑64和特征控制寄存器(FCR)66。在一个实施例中,LFSR 62包括被馈送到处理逻辑64的七(7)位,在一个实施例中,处理逻辑64包括反相器。注意,七位的使用仅是一个示例的说明,并且在一些实施例中,可以使用其它大小的寄存器。实际上,LFSR 62和处理逻辑64产生7位的每个可能值(例如,以伪随机顺序循环通过所有2^7个状态(除了全零))。位的一部分(例如,5位采样,但不限于此)被提供给FCR 66,FCR 66以伪随机方式选择期望的百分比值。在一个实施例中,FCR 66是(例如,经由物理或软件/微代码调整)可编程的。
鉴于以上描述,本领域的普通技术人员应理解,一种可调整分支预测方法(以图3中的方法68表示并且在一个实施例中由控制逻辑44实现),包括:用补丁替换微代码(70);用来自该补丁的微代码对熔丝库进行读取(72);基于该读取设置特征控制寄存器的位(74);使用所设置的位来实现对涉及一个或多个预测表的多个写入策略其中之一的多路复用选择(76);以及基于错误预测,根据所选择的写入策略对一个或多个预测表进行写入(78)。
已经描述了可调整分支预测系统40(图2A-2C)和方法68(图3)的某些实施例,应当理解,可调整分支预测方法的一个实施例(表示为图4中的方法80)在具有包括预测器的预测逻辑的微处理器中实现,该预测器包括一组多集关联表,各表与不同长度的分支模式历史相对应。可调整分支预测方法80包括:接收写入策略控制信号(82);以及基于写入策略控制信号针对预测逻辑选择多个可选择写入策略其中之一(84)。
流程图中的任何处理描述或框应被理解为表示代码的模块、段、逻辑或部分(其包括用于在过程中实现特定逻辑功能或步骤的一个或多个可执行指令),并且替代实现包括在实施例的范围内,其中如本发明领域技术人员将理解的,功能可以不按所示或讨论的顺序地执行(包括基本上并发执行或以不同顺序执行),这取决于所涉及的功能。
虽然已经在附图和前面的描述中详细示出和描述了本发明,但是这样的示出和描述应被认为是说明性的或示例性的而不是限制性的;本发明不限于所公开的实施例。本领域技术人员通过研究附图、公开内容和所附权利要求书,在实践要求保护的发明时可以理解并实现所公开的实施例的其它变化。
注意,可以使用所公开的实施例的不同组合,因此参考实施例或一个实施例并不意味着排除来自该实施例的特征与来自其它实施例的特征一起使用。在权利要求书中,词语“包括”不排除其它元件或步骤。
Claims (20)
1.一种微处理器,包括:
预测逻辑,其包括分支预测器,所述分支预测器包括一组多集关联表,所述一组多集关联表中的各表与不同长度的分支模式历史相对应;以及
控制逻辑,其被配置为针对所述预测逻辑提供可调整写入策略。
2.根据权利要求1所述的微处理器,其中,所述控制逻辑被配置为在流片之后实现所述可调整写入策略。
3.根据权利要求1所述的微处理器,其中,所述可调整写入策略包括从涉及所述一组多集关联表中的一个或多个表的多个分配方案中选择的分配方案。
4.根据权利要求3所述的微处理器,其中,由所述预测逻辑基于所选择的分配方案而做出的条件分支预测是基于错误预测来进行的。
5.根据权利要求3所述的微处理器,其中,所述控制逻辑包括伪随机生成器,所述控制逻辑被配置为根据对各个多集关联表的百分比分配来实现所述分配方案。
6.根据权利要求1所述的微处理器,其中,所述控制逻辑包括特征控制寄存器和多路复用选择逻辑,所述多路复用选择逻辑被配置为基于所述特征控制寄存器的位设置来选择多个写入策略其中之一。
7.根据权利要求6所述的微处理器,其中,所述控制逻辑包括熔丝库和微代码存储器,所述微代码存储器被配置为对所述熔丝库进行读取并且基于所述读取来提供所述特征控制寄存器的位设置的改变。
8.根据权利要求7所述的微处理器,其中,所述熔丝库包括能够经由特权微代码单独选择的多个熔丝设置。
9.根据权利要求8所述的微处理器,其中,所述控制逻辑还包括补丁存储器,所述补丁存储器被配置为替换所述特权微代码的选择部分。
10.根据权利要求1所述的微处理器,其中,所述分支预测器包括TAGE条件分支预测器。
11.一种在微处理器中实现的可调整分支预测方法,所述微处理器具有包括分支预测器的预测逻辑,所述分支预测器包括一组多集关联表,所述一组多集关联表中的各表与不同长度的分支模式历史相对应,所述可调整分支预测方法包括:
接收写入策略控制信号;以及
基于所述写入策略控制信号针对所述预测逻辑来选择多个可选择写入策略其中之一。
12.根据权利要求11所述的可调整分支预测方法,其中,在流片之后进行所述接收和所述选择。
13.根据权利要求11所述的可调整分支预测方法,还包括实现与写入策略中的所选择的写入策略相对应的分配方案,所述分配方案涉及所述一组多集关联表中的一个或多个表。
14.根据权利要求13所述的可调整分支预测方法,还包括基于错误预测来进行根据所选择的分配方案的条件分支预测。
15.根据权利要求13所述的可调整分支预测方法,还包括根据对各个多集关联表的伪随机生成的百分比分配来实现所述分配方案。
16.根据权利要求11所述的可调整分支预测方法,还包括基于特征控制寄存器的位设置来选择多个写入策略其中之一。
17.根据权利要求16所述的可调整分支预测方法,还包括对熔丝组进行读取,并且基于所述读取提供所述特征控制寄存器的位设置的改变。
18.根据权利要求17所述的可调整分支预测方法,还包括经由特权微代码选择多个熔丝设置中的一个或多个熔丝设置。
19.根据权利要求18所述的可调整分支预测方法,还包括使用来自补丁存储器的代码来替换所述特权微代码的选择部分。
20.根据权利要求11所述的可调整分支预测方法,其中,所述分支预测器包括TAGE条件分支预测器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/092,683 | 2020-11-09 | ||
US17/092,683 US11275686B1 (en) | 2020-11-09 | 2020-11-09 | Adjustable write policies controlled by feature control registers |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113360190A true CN113360190A (zh) | 2021-09-07 |
Family
ID=77540443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110851066.1A Pending CN113360190A (zh) | 2020-11-09 | 2021-07-27 | 可调整分支预测方法和微处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11275686B1 (zh) |
CN (1) | CN113360190A (zh) |
TW (1) | TWI788912B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230315475A1 (en) * | 2022-03-30 | 2023-10-05 | Advanced Micro Devices, Inc. | Managing large tage histories |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9244686B2 (en) * | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
WO2012138952A1 (en) * | 2011-04-07 | 2012-10-11 | Via Technologies, Inc. | Conditional store instructions in an out-of-order execution microprocessor |
US9507597B2 (en) * | 2013-06-10 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Selective accumulation and use of predicting unit history |
US9983878B2 (en) * | 2014-05-15 | 2018-05-29 | International Business Machines Corporation | Branch prediction using multiple versions of history data |
CN105988774A (zh) * | 2015-02-20 | 2016-10-05 | 上海芯豪微电子有限公司 | 一种多发射处理器系统和方法 |
CN105204819A (zh) * | 2015-10-12 | 2015-12-30 | 北京北大众志微系统科技有限责任公司 | 一种基于分组全局历史的分支预测方法及系统 |
US10838730B2 (en) * | 2018-05-24 | 2020-11-17 | Arm Limited | Saving and restoring branch prediction state |
US11442727B2 (en) * | 2020-06-08 | 2022-09-13 | Advanced Micro Devices, Inc. | Controlling prediction functional blocks used by a branch predictor in a processor |
-
2020
- 2020-11-09 US US17/092,683 patent/US11275686B1/en active Active
-
2021
- 2021-07-12 TW TW110125572A patent/TWI788912B/zh active
- 2021-07-27 CN CN202110851066.1A patent/CN113360190A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW202219749A (zh) | 2022-05-16 |
US11275686B1 (en) | 2022-03-15 |
TWI788912B (zh) | 2023-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5864697A (en) | Microprocessor using combined actual and speculative branch history prediction | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
TWI783582B (zh) | 利用間接有效表的Spectre修復的方法和微處理器 | |
WO2007019001A1 (en) | Call return stack way prediction repair | |
CN113515310A (zh) | 微处理器和分支预测控制方法 | |
TWI807371B (zh) | 利用預測器模式標籤的Spectre修復方法和微處理器 | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
TWI780804B (zh) | 微處理器和預取指調整方法 | |
TWI788912B (zh) | 可調整分支預測方法和微處理器 | |
CN113448626B (zh) | 推测分支模式更新方法和微处理器 | |
TWI844775B (zh) | 快速預測器覆寫方法和微處理器 | |
TWI786691B (zh) | 微處理器和分支處理方法 | |
TWI773391B (zh) | 微處理器和分支處理方法 |
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 |