CN111124946A - 电路和方法 - Google Patents

电路和方法 Download PDF

Info

Publication number
CN111124946A
CN111124946A CN201911005362.9A CN201911005362A CN111124946A CN 111124946 A CN111124946 A CN 111124946A CN 201911005362 A CN201911005362 A CN 201911005362A CN 111124946 A CN111124946 A CN 111124946A
Authority
CN
China
Prior art keywords
data
data item
memory locations
circuit
memory
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
Application number
CN201911005362.9A
Other languages
English (en)
Inventor
胡德哈法·布兹古鲁
纪尧姆·博尔贝内斯
艾迪·拉皮雷
吕克·俄里翁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN111124946A publication Critical patent/CN111124946A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及电路和方法。电路包括:存储器电路,提供多个存储器位置;位置选择电路,用于根据数据项的属性与一个或多个存储器位置的集合之间的映射关系,来选择通过其访问数据项的一个或多个存储器位置的集合;位置选择电路被配置为在数据项由存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对该数据项的分配操作,该分配操作包括用新近存储的数据项替换一个或多个存储器位置的集合中的一个或多个其他数据项的至少一个子集的操作;以及检测器电路,用于检测数据访问冲突,其中,具有不同的相应属性的两个或更多个数据项的群组通过映射关系被映射到相同的一个或多个存储器位置的集合。

Description

电路和方法
技术领域
本公开涉及电路和方法。
背景技术
在一些数据处理应用中,所谓的分支预测被用于预测非线性程序流的实例,例如,来自有条件的程序流分支指令的结果(采用分支或不采用分支)。
在一些示例中,分支预测过程在指令执行之前运行,以及时推测性地提供指令来避免所谓的饥饿,如果未及时提取(接下来要执行的)足够的指令来执行则可能发生。
为了预测分支在给定程序代码部分中的存在,诸如所谓的分支目标缓冲器(BTB)之类的历史数据存储可以在特定程序计数器(PC)值处提供对先前采取的分支的指示。例如,代表先前采取的分支的数据项的属性,例如,PC值或其一部分,可以用作数据项与BTB中的存储位置之间映射的基础。
发明内容
在示例布置中,提供了电路,该电路包括:
存储器电路,提供多个存储器位置;
位置选择电路,用于根据数据项的属性与一个或多个存储器位置的集合之间的映射关系,来选择通过其访问数据项的一个或多个存储器位置的集合;
位置选择电路被配置为在数据项由存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对该数据项的分配操作,该分配操作包括用新近存储的数据项替换一个或多个存储器位置的集合中的一个或多个其他数据项的至少一个子集的操作;以及
检测器电路,用于检测数据访问冲突,在数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过映射关系被映射到一个或多个存储器位置的同一集合;
位置选择电路被配置为响应于检测器电路检测到数据访问冲突,改变适用于两个或更多个数据项的群组中的至少一个数据项的属性的映射关系。
在另一示例布置中,提供了一种缓存存储器,包括如上定义的电路;其中:
数据项表示在相应存储地址处的较高等级存储器的内容的版本;并且
数据项的属性至少部分取决于该数据项的存储地址。
在另一示例布置中,提供了一种数据处理器,包括:
处理元件,用于执行数据处理指令;以及
提取电路,用于提取由提取队列中的条目定义的指令以供执行;以及
预测电路,用于针对提取队列生成定义了要提取的一个或多个下一数据处理指令的条目;
预测电路包括如上定义的电路,该电路提供分支目标存储装置以存储一个或多个数据项,每个数据项至少包括程序计数器值的一部分以及定义先前采用的分支指令的相应分支目标地址的信息,其中,数据项的属性至少取决于程序计数器值。
在另一示例布置中,提供了电路,该电路包括:
存储器装置,提供多个存储器位置;
选择装置,用于根据数据项的属性与一个或多个存储器位置的集合之间的映射关系来选择通过其访问数据项的一个或多个存储器位置的集合;
选择装置可操作来在数据项由存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对该数据项的分配操作,该分配操作包括用新近存储的数据项替换一个或多个存储器位置的集合中的一个或多个其他数据项的至少一个子集的操作;以及
用于检测数据访问冲突的检测装置,在数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过映射关系被映射到一个或多个存储器位置的同一集合;
选择装置可操作来:响应于检测装置检测到数据访问冲突,改变适用于两个或更多个数据项的群组中的至少一个数据项的属性的映射关系。
在另一示例布置中,提供了一种方法,包括:
根据数据项的属性与一个或多个存储器位置的集合之间的映射关系从多个存储器位置选择通过其访问数据项的一个或多个存储器位置的集合;
在数据项由存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对该数据项的分配操作,该分配操作包括用新近存储的数据项替换一个或多个存储器位置的集合中的一个或多个其他数据项的至少一个子集的操作;以及
检测数据访问冲突,在数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过映射关系被映射到一个或多个存储器位置的同一集合;
响应于检测到数据访问冲突,改变适用于两个或更多个数据项的群组中的至少一个数据项的属性的映射关系。
本技术的其他各个方面和特征由所附权利要求限定。
附图说明
将参考如在附图中图示的本技术的实施例仅通过示例的方式来进一步描述本技术,其中:
图1示意性地示出了数据处理电路的示例;
图2示意性地示出了一系列数据处理指令;
图3示意性地示出了预测电路;
图4示意性地示出了寻址信息的生成;
图5和图6示意性地示出了分支目标缓冲器;
图7示意性地示出了混叠(aliasing)监测;
图8、图9A和图9B示意性地示出了映射函数的变化;
图10示意性地示出了标签生成;
图11示意性地示出了数据处理器;以及
图12是示出方法的示意性流程图。
具体实施方式
图1是数据处理电路100的示意性示例,该数据处理电路100包括用于执行程序代码指令的处理元件(PE)110、用于从存储器和/或缓存130(例如,指令缓存)提取包含用于执行的指令的块的提取电路120。由提取队列140定义要提取的块。数据处理电路还包括预测电路150,用于预测将提取的一个或多个下一块,并将预测的下一块作为提取队列条目添加到提取队列140。
预测电路150参考分支目标存储装置(至少包括分支目标缓冲器(BTB)160)和分支预测缓冲器(BPB)170。为附图的清楚起见它们被分开绘制,但它们可以视为预测电路150的一部分。在指令是分支指令的情况下,BTB 160提供将要执行的指令的程序计数器(PC)值与相关联的分支目标进行关联的信息。BPB 170存储关于分支指令的先前实例的结果(采用分支或未采用分支)的历史数据,该历史数据允许预测电路150得出对采用还是不采用由BTB160指示的特定分支指令的预测。
预测电路150可以使用各种机制来预测预期分支指令的“采用”或“未采用”状态。在US 15/806,605和https://en.wikipedia.org/wiki/Branch_predictor中提供了这种技术的示例,其中的每一个的内容通过引用合并于此。预测电路150使用这种技术来预测要提取的程序代码的块(或部分、区组(granule)、甚至在极端示例中为各个指令),并基于先进先出来将标识这种块的数据添加到提取队列140。提取电路120以相同的基础从提取队列140中检索这种数据(也就是说,提取电路120检索在提取队列140中最近添加的一个或多个条目),并发起提取由这些条目指示的块。所需的块可能在缓存130中,或者可能需要从主存储器或更高等级的缓存(图1中未示出)中检索。
在适当的时候,处理元件110执行所提取的程序代码块。一般而言,该系统旨在其执行之前提取程序代码,使处理本身不会因缺乏要执行的代码而无法保持。因此,在这方面,提取是推测性的并且单纯基于预测电路所做的预测。当相关的分支指令最终被执行或解决时,分支预测结果将被证明是正确的或不正确的。如果预测不正确,则可能是提取了错误的分支目标代码(或已经提取了分支目标处的代码,但在解决时实际没有采用分支),并且必须清除提取和执行流水线,这在提取正确的程序代码块以执行时产生延迟。
处理元件可以将与执行期间实际遇到的分支指令及其实际结果有关的信息180提供回给BTB 160和BPB 170。在执行期间遇到分支指令的情况下(至少针对实际上采用分支的分支指令,但可能针对所有分支指令),可以将与该分支指令的目标有关的信息存储在BTB 160中。与分支指令的结果(采用/未采用)有关的信息还可以存储在BPB 170中。
图1因此提供了数据处理器100的示例,其具有:处理元件110,用于执行数据处理指令;提取电路120,用于提取由提取队列140中的条目定义的指令以供执行(例如,包含指令的各个指令或块、区组等);以及预测电路150、160、170,用于生成用于提取队列定义将提取的一个或多个下一数据处理指令的条目;预测电路包括如下定义的电路,其中,在至少一些示例中,该电路提供分支目标存储装置以存储一个或多个数据项,每个数据项至少包括程序计数器值的一部分以及定义先前采用的分支指令的相应分支目标地址的信息,其中,数据项的属性至少取决于程序计数器值。
图2示意性地示出了形成程序代码块、部分或区组200的示例的一系列数据处理指令。在图2的示意性表示中,示出了六个指令,但在本公开的示例实施例中,指令块可以具有一致的基长度(以字节为单位),例如,2的幂或至少2的倍数,并且在存储器中被地址对齐到表示基长度的倍数的位置。例如,每个部分可以具有16字节的基长度,并且这些部分可以与存储器中的16字节边界对齐。
在图2中,连续指令表示为“X”或“BR”。“X”指令是非分支指令,并以这种示意性方式表示以表明其与本讨论中它们是什么类型的指令无关。“BR”指令是条件分支指令,其可能基于采用哪个分支决策根据一个或多个参数而在程序流中导致非线性变化。
参考第一示例分支指令210,如果采用该指令表示的分支,则程序流转移到另一程序计数器值A。如果否,则程序流继续到下一顺序指令220。类似地,如果采用分支指令230处的分支,则程序流转移到程序计数器值B,但如果否,则程序流继续到下一顺序指令240。因此,作为执行部分200的结果,程序流可以:
·重定向到程序计数器值A;
·重定向到程序计数器值B;或者
·继续下一程序计数器值C(在下一区组中,未示出)。
注意,分支目标或目的地不必与部分(例如,部分200)的开头对齐。实际上,来自其他地方的分支可以在任何指令位置(例如,传入分支250的指令220)进入部分200。
图3示意性地示出了包括BTB 160和BPB 170的功能的预测电路150的操作的示例。
关于BTB 160,其接收分支地址300或程序计数器(PC)值,例如,参考图2描述的序列中的下一PC值。区域表310将分支地址(并且在一些示例中,处理器上下文320)映射到标识(ID)值330上,例如,通过提供分支地址的存储器页面标识符或最高有效位(MSB)集合与ID值之间的映射。因此,为了检索ID值,区域表利用分支地址300的子集。
注意,在本技术中,使用区域表是可选的。如果使用区域表或类似功能,则数据项的属性(从中映射存储位置,请参见下文)可以是例如从区域表导出的ID值和/或数据项地址(例如,分支地址)的一个或多个LSB。然而,如果未使用区域表,则可以再次将LSB用作属性,并且(例如)MSB例如作为标签的一部分而存储在BTB中,或者替代地,可以在部分标记的情况下忽略MSB。因此,应根据区域表的可选性质及其ID值的生成来考虑以下示例。无论使用哪种信息作为映射到存储位置的基础,都被视为所讨论的数据项的属性。
BTB 160还利用分支地址的子集,在该示例中为最低有效位(LSB)集合,并且包含多个条目,每个条目将(ID、LSB集合)的排列映射到预测分支目标地址340。
在其中在BTB 160内存在适当条目的任何情况下,BTB 160将输出预测分支目标地址340,也就是说,至少在该示例中,BTB 160对预测分支目标地址340的输出与对是否将实际采用相关分支的预测(将在下面讨论)无关。
关于对是否实际采用分支的预测,可以使用各种技术,例如,图3中以示例的方式示出的技术,该技术涉及使用所谓的模式历史表(PHT)350,其形成上述BPB 170的至少一部分。
PHT 350提供所谓的自适应分支预测,其中,使用是否采用分支的最近历史来选择由PHT 350存储的预测信息的相应版本以用于当前分支指令。
例如,为了提供预测,可以使用两位饱和计数器,代表具有四个状态的状态机:
00 强烈不采用
01 不采用
10 采用
11 强烈采用
在本文,术语“强烈”仅表示利用饱和计数器方案,其将采用该预测的不正确的两个连续实例以便更改由饱和计数器表示的预测,因此从00(强烈不采用)移动到10(采用),在由饱和计数器的状态表示的实际预测从“未采用”预测变为“采用”预测之前,需要饱和计数器的两个连续增量。
响应于分支指令的实际解决来更新饱和计数器。如果相关的分支指令的解决是“采用”,则饱和计数器增加,饱和于值11。如果相关的分支指令的解决是“未采用”,则饱和计数器减少,饱和于值00。
在其自适应操作方面,PHT 350存储(并针对给定分支指令从中选择)多个条目,每个条目代表例如上述类型的两位饱和计数器。PHT 350根据将在下面讨论的寻址信息360访问相关条目,并将该计数器值提供给映射电路355,该映射电路355应用上表中给出的映射以根据所寻址的PHT条目的内容输出“采用”(对于计数器值10或11)或“未采用”(对于计数器值00或01)的预测370。
当该分支指令的解决确定时,将解决传送380到PHT 350(如图1中的信息180示意性所示),并且相关的饱和计数器被再次寻址并根据是否采用分支来通过增量或减量进行更新。以这种方式,预测电路被配置为根据由给定分支指令表示的分支(与所存储的条目相关)是否被采用的解决来修改所存储的预测数据。
如上所述,PHT 350提供多个条目,并且根据寻址信息360选择单个条目。
各种可能性可用于生成寻址信息360。在图4中示意性地示出的示例中,历史寄存器400保持分支指令执行的最近结果的历史,从最近结果402到次最近(在历史寄存器400的大小方面)结果404。当分支指令被解决时,其结果被插入到最近结果位置402处,并且历史寄存器的其他内容被移向次最近结果位置404。在实践中,这可以使用循环缓冲和移动指针来实现,但效果如上所述。在图4中,历史结果被示为T(采用)或NT(未采用),但可以将它们存储为相应的位值,例如,1、0。
历史寄存器400可以是全局历史寄存器,使得存储在历史寄存器400中的结果与所有所执行的分支指令相关,或者可以是本地历史寄存器,使得所存储的分支结果与特定分支地址(PC值)处的分支指令的结果相关。在当前示例中,历史寄存器400是全局历史寄存器。历史寄存器400的位的子集410,例如,在相对于历史寄存器中的最近402位置和次最近404位置的预定位置处,可以用作生成寻址信息360的输入。
因此,在本地历史寄存器的这些示例中,每个预测寄存器条目包括多个预测数据值,并且预测电路被配置为根据给定分支指令所表示的分支是否被采用的最新解决的排列来选择预测数据值之一以用作给定分支指令的预测数据。
对寻址信息360的另一可能贡献是分支地址300、或其位的至少一个子集。这些输入中的一个或两个可以由组合器420组合以生成寻址信息360。例如,组合器可以包括逻辑异或(XOR)函数。在其他示例中,组合器420可以包括散列(hashing)函数。
在这种情况下,散列函数是将数据输入映射到数据输出的通用函数。在访问PHT中的条目的上下文中,合适的散列函数的期望特征是相对相似的分支地址被映射到PHT内相对不同的条目或位置。
图5示意性地示出了BTB 160的操作的各方面。BTB 160是n向关联结构,在该示例中为4向关联,其中,在BTB 160中存在对应于单个位置的n个不同条目162(如图5中所示的行)。
根据应用散列函数的位置选择电路500,分支地址300的LSB被用于确定BTB 160内的位置,这提供了其中位置选择电路被配置为通过将散列函数应用于数据项的属性来为数据项选择一个或多个存储器位置的集合的示例。在这种情况下,散列函数是将数据输入映射到数据输出的通用函数。在访问PHT中的条目的上下文中,合适的散列函数的期望特征是相对相似的分支地址被映射到BTB内相对不同的条目或位置。
因此,根据分支地址300的LSB集合选择行(如图所示),并且将BTB条目写入该行中的四个(在该示例中)条目162之一。
实际条目510包括标签512(由标签生成器520生成),该标签至少包括由区域表310提供的页面标识符(IDE)330以及与所讨论的分支有关的目标地址514。当在处理元件110执行程序代码时遇到分支指令(或至少采用的分支指令)时,存储该信息。
因此,BTB 160提供了提供多个存储器位置的存储器电路的示例,并且图5的布置提供了包括存储器电路(BTB)160、位置选择电路(例如,位置选择电路500,用于根据数据项的属性(例如,分支地址的LSB或另一组位)与一个或多个存储器位置的集合之间的映射关系(例如,位置选择电路500所实现的散列函数),选择通过其访问数据项的一个或多个存储器位置的集合(例如,如图5所示的行))的电路的示例。
位置选择电路500还被配置为当该数据项将由存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个数据项占用时,发起针对该数据项的分配操作。换句话说,如果当前分支地址LSB的散列所指向的行已经满,则执行分配操作。分配操作包括用新近存储的数据项替换一个或多个存储器位置的该集合中的一个或多个其他(已存储的)数据项的至少一个子集的操作
由位置选择电路500递增的散列函数将LSB集合映射到BTB 160中的(可能较小)范围的位置或行上的事实意味着可能发生所谓的混叠,使得两个或更多个不同的分支地址碰巧被映射到BTB 160中的同一位置。由于BTB是n路关联的,因此它可以在同一散列位置处存储多个条目(使得属性映射到两个或更多个存储器条目),但总的来说,发生混叠可能意味着在特定散列位置存在大量的信息周转,因为存在竞争同一散列位置的两个或更多个分支地址对现有的存储信息的频繁驱逐和替换。以下将这种情况称为数据访问冲突,在数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过映射关系(例如,散列函数)被映射到一个或多个存储器位置的同一集合(例如,在BTB 160中)。注意,这种数据访问冲突可能意味着许多分支地址被映射或分配到BTB 160中的同一位置或索引,但也可能是BTB 160中的保持未使用的一些索引或位置(如图所示的行),这可能浪费BTB 160中的存储空间。
在从BTB 160的读取操作处,位置选择电路500应用同一散列函数,并且标签生成器520重新生成标签。对应于散列地址的BTB 160的位置(如图所示的行)中的BTB条目被读出,并且针对其存储标签512与标签生成器520新近重新生成的标签相匹配的条目被选择以供比较器和选择器540来输出530。
图6示意性地示出了一种布置,该布置可以至少部分地缓解由于混叠而引起的针对BTB位置的竞争问题。
在图6中,检测器/控制器电路600被配置为检测上述类型的数据访问冲突,并且在示例实施例中,被配置为控制位置选择电路的操作,以便响应于检测到数据访问冲突来改变适用于数据访问冲突所涉及的两个或更多个数据项的群组中的至少一个数据项的属性的映射关系。
将参考图7进一步讨论检测器/控制器电路600的操作,图7示出了包括检测器700和控制器710的检测器/控制器电路600,其被配置为与如图7的右侧所示的混叠监测数据表705(例如,由检测器700存储)交互。
混叠监测数据表存储标签字段720、有效性标志724、值“Nb_alloc”726(指示所检测到的该BTB索引中的分配的数量)、值“条目(Entries)”730(指示当前程序代码块中尝试分配的分支的数量)、重新映射有效(remap_valid)标志(R)732和重新映射锁定(remap_lock)值734。重新映射锁定值如下所述由检测器电路用于禁止对与针对其检测到冲突的数据项相关联的指示符数据的进一步改变,直到位置选择电路已经至少执行了预定数量的后续分配操作为止。
分配
在分配时,对于未命中的每个BTB分配(即条目尚未在BTB中),将预测块地址(在这种情况下,分支地址300)分配给混叠监测表705。在BTB 160中选择受害者条目以进行替换。如果受害者条目被重新映射锁定(值734大于零),则值734递减。这允许在将来的某个时刻释放重新映射的条目,并避免快速改变映射和重新映射。
更新
为了更新,每次对BTB的分配命中该索引时,值726都会增加。值730被更新以指示当前程序代码块中有多少分支(具有分支地址的公共部分)正在尝试分配。该信息被用于检测其若干活动分支都竞争销售者而超过BTB的关联性的一个程序代码块的情况。
当值726超过阈值(例如,16)时,重新映射有效标志732被设置,并且重新映射锁定值734被设置为预定常数(例如,64或128)。然后建立将在下面讨论的重新映射操作,提供被配置为响应于位置选择电路针对给定数据项执行至少预定数量的连续分配操作来检测数据访问冲突的检测器电路的示例。重新映射有效标志保持设置,直到重新映射锁定值达到零为止。
在一些示例中,检测器电路被配置为改变与从由以下各项组成的列表中选择的数据项相关联的指示符数据的状态:(i)位置选择电路针对其已经改变了映射关系的数据项;以及(ii)被检测为针对其已经检测到数据访问冲突的一个或多个数据项的群组的一部分的数据项。换句话说,可以针对重新映射的数据项或未重新映射的数据项更改重新映射有效标志。
查找
在查找时,查询混叠监测数据表,并且如果设置了重新映射有效标志732,则可以使用不同的映射来访问该条目的BTB。
图8示意性地示出了使用多个不同的散列函数800、810的布置,使得数据项的属性(例如,分支地址的一部分)由两个散列函数和用于选择散列值之一的重新映射有效标志732来处理,以指定位置822访问BTB 160中的该数据项。
在图9A所示的另一示例中,通过组合逻辑900(例如,提供XOR运算的逻辑)或通过级联逻辑,将重新映射有效标志732与要散列的属性进行组合,并将所得的组合提供给散列函数910以生成位置920。
在图9B的另一示例中,将要散列的属性提供给散列函数930,并且通过将逻辑940与重新映射有效标志732进行组合来组合散列输出,以生成所需位置950。
因此,图8、图9A和图9B提供了其中位置选择电路被配置为改变适用于至少给定数据项的属性的映射关系的示例。
在诸如图10中所示的示例之类的一些示例中,可以通过提供级联逻辑1002来修改标签生成器520,该级联逻辑1002将重新映射有效标志与由标签生成器524生成的标签进行级联,作为存储标签1010存储在字段512中。
上述技术与分支目标缓冲器有关,但也完全适用于缓存存储器(例如,图11的缓存存储器1100,作为提供多个存储器位置的存储器电路的示例),并且尤其是n路组关联缓存存储器,以便将属性(例如,要缓存的数据项的地址或地址的一部分)映射到n个存储器位置。例如,缓存存储器1100可以提供图1的缓存存储器130的示例,以便提供低延迟存储装置以供处理元件110访问,可能利用转换后备缓冲器/页表遍历转换电路1110的地址转换。缓存存储器1100可以与可包括较高等级缓存存储器1130和/或主存储器1140的较高等级存储器1120进行通信。因此,图11提供了包括如上定义的电路的缓存存储器1100的示例,其中:数据项表示在相应存储器地址处的较高等级存储器的内容的版本;并且数据项的属性至少部分取决于该数据项的存储器地址。
图12是示出一种方法的示意性流程图,该方法包括:
根据数据项的属性与一个或多个存储器位置的集合之间的映射关系从多个存储器位置选择(步骤1200)通过其访问数据项的一个或多个存储器位置的集合;
当该数据项将由存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起(步骤1210)针对该数据项的分配操作,该分配操作包括用新近存储的数据项替换一个或多个存储器位置的集合中的一个或多个其他数据项的至少一个子集的操作;
检测(步骤1220)数据访问冲突,在数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过映射关系被映射到一个或多个存储器位置的同一集合;以及
响应于检测到数据访问冲突,改变(步骤1230)适用于两个或更多个数据项的群组中的至少一个数据项的属性的映射关系。
在本申请中,词语“被配置为……”用来表示设备的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”是指硬件或软件的互连的布置或方式。例如,该设备可以具有提供所定义的操作的专用硬件,或者可以被编程为执行该功能的处理器或其他处理设备。“被配置为”并不意味着需要以任何方式改变设备元件以提供所定义的操作。
尽管本文已经参考附图详细描述了本发明的说明性实施例,但应当理解,本发明不限于这些精确的实施例,并且本领域技术人员可以在其中进行各种改变、增加和修改,而不脱离所附权利要求书所限定的本发明的范围和精神。例如,在不脱离本发明的范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。

Claims (12)

1.一种电路,包括:
存储器电路,提供多个存储器位置;
位置选择电路,用于根据数据项的属性与一个或多个存储器位置的集合之间的映射关系,来选择通过其访问所述数据项的所述一个或多个存储器位置的集合;
所述位置选择电路被配置为在数据项由所述存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对所述数据项的分配操作,所述分配操作包括用新近存储的数据项替换所述一个或多个存储器位置的集合中的所述一个或多个其他数据项的至少一个子集的操作;以及
检测器电路,用于检测数据访问冲突,在所述数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过所述映射关系被映射到一个或多个存储器位置的同一集合;
所述位置选择电路被配置为响应于所述检测器电路检测到数据访问冲突,改变适用于所述两个或更多个数据项的群组中的至少一个数据项的所述属性的所述映射关系。
2.根据权利要求1所述的电路,其中,所述检测器电路被配置为响应于所述位置选择电路针对给定数据项执行至少预定数量的连续分配操作来检测数据访问冲突。
3.根据权利要求2所述的电路,其中,所述位置选择电路被配置为改变适用于至少所述给定数据项的所述属性的所述映射关系。
4.根据权利要求1所述的电路,其中,所述检测器电路被配置为改变与从由以下各项组成的列表中选择的数据项相关联的指示符数据的状态:
(i)所述位置选择电路针对其已经改变了所述映射关系的数据项;以及
(ii)被检测为针对其已经检测到数据访问冲突的一个或多个数据项的群组的一部分的数据项。
5.根据权利要求4所述的电路,其中,所述位置选择电路被配置为通过将散列函数应用于数据项的所述属性来选择用于所述数据项的一个或多个存储器位置的集合。
6.根据权利要求5所述的电路,其中,所述位置选择电路被配置为将所述散列函数应用于所述属性和所述指示符数据的组合。
7.根据权利要求4所述的电路,其中,所述检测器电路被配置为禁止对与针对其已经检测到数据访问冲突的所述数据项相关联的所述指示符数据的进一步改变,直到所述位置选择电路已经执行了至少预定数量的后续分配操作为止。
8.根据权利要求1所述的电路,其中,所述存储器位置的集合包括两个或更多个存储器位置。
9.一种缓存存储器,包括根据权利要求1所述的电路;其中:
所述数据项表示在相应存储地址处的较高等级存储器的内容的版本;并且
数据项的所述属性至少部分取决于该数据项的所述存储器地址。
10.一种数据处理器,包括:
处理元件,用于执行数据处理指令;
提取电路,用于提取由提取队列中的条目定义的指令以供执行;以及
预测电路,用于针对所述提取队列生成定义了要提取的一个或多个下一数据处理指令的条目;
所述预测电路包括根据权利要求1所述的电路,所述电路提供分支目标存储装置以存储一个或多个数据项,每个数据项至少包括程序计数器值的一部分以及定义先前采用的分支指令的相应分支目标地址的信息,其中,数据项的所述属性至少取决于所述程序计数器值。
11.一种电路,包括:
存储器装置,提供多个存储器位置;
选择装置,用于根据数据项的属性与一个或多个存储器位置的集合之间的映射关系来选择通过其访问所述数据项的所述一个或多个存储器位置的集合;
所述选择装置可操作来在数据项由所述存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对所述数据项的分配操作,所述分配操作包括用新近存储的数据项替换所述一个或多个存储器位置的集合中的所述一个或多个其他数据项的至少一个子集的操作;以及
用于检测数据访问冲突的检测装置,在所述数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过所述映射关系被映射到一个或多个存储器位置的同一集合;
所述选择装置可操作来:响应于所述检测装置检测到数据访问冲突,改变适用于所述两个或更多个数据项的群组中的至少一个数据项的所述属性的所述映射关系。
12.一种方法,包括:
根据数据项的属性与一个或多个存储器位置的集合之间的映射关系从多个存储器位置选择通过其访问所述数据项的所述一个或多个存储器位置的集合;
在数据项由所述存储器电路新近存储并且所选择的一个或多个存储器位置的集合已经被一个或多个其他数据项占用时,发起针对所述数据项的分配操作,所述分配操作包括用新近存储的数据项替换所述一个或多个存储器位置的集合中的所述一个或多个其他数据项的至少一个子集的操作;
检测数据访问冲突,在数据访问冲突中,具有不同的相应属性的两个或更多个数据项的群组通过所述映射关系被映射到一个或多个存储器位置的同一集合;以及
响应于检测到数据访问冲突,改变适用于所述两个或更多个数据项的群组中的至少一个数据项的所述属性的所述映射关系。
CN201911005362.9A 2018-10-30 2019-10-22 电路和方法 Pending CN111124946A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1817689.1A GB2578574B (en) 2018-10-30 2018-10-30 Circuitry and method
GB1817689.1 2018-10-30

Publications (1)

Publication Number Publication Date
CN111124946A true CN111124946A (zh) 2020-05-08

Family

ID=64655607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911005362.9A Pending CN111124946A (zh) 2018-10-30 2019-10-22 电路和方法

Country Status (3)

Country Link
US (1) US11080184B2 (zh)
CN (1) CN111124946A (zh)
GB (1) GB2578574B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0427041D0 (en) * 2004-12-09 2005-01-12 Sony Uk Ltd Information handling
CN101241476A (zh) * 2008-01-30 2008-08-13 中国科学院计算技术研究所 一种虚拟存储系统和方法
CN106201919A (zh) * 2015-06-01 2016-12-07 Arm 有限公司 缓存一致性

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630097A (en) * 1991-06-17 1997-05-13 Digital Equipment Corporation Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses
US5860095A (en) * 1996-01-02 1999-01-12 Hewlett-Packard Company Conflict cache having cache miscounters for a computer memory system
US5752261A (en) * 1996-11-07 1998-05-12 Ncr Corporation Method and apparatus for detecting thrashing in a cache memory
US6874056B2 (en) * 2001-10-09 2005-03-29 Agere Systems Inc. Method and apparatus for reducing cache thrashing
US7844785B2 (en) * 2007-10-22 2010-11-30 Qimonda Ag Method and apparatus for memory access optimization
US7925871B2 (en) * 2008-02-19 2011-04-12 Arm Limited Identification and correction of cyclically recurring errors in one or more branch predictors
US8219751B2 (en) * 2010-02-26 2012-07-10 Red Hat, Inc. Methods for optimizing performance of transient data calculations
US8767501B2 (en) * 2012-07-17 2014-07-01 International Business Machines Corporation Self-reconfigurable address decoder for associative index extended caches
WO2015116141A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Identifying memory regions that contain remapped memory locations
US9910785B2 (en) * 2014-12-14 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory budgeted by ways based on memory access type
US9842051B1 (en) * 2015-03-25 2017-12-12 Marvell International Ltd. Managing aliasing in a virtually indexed physically tagged cache
US20170153894A1 (en) * 2015-11-27 2017-06-01 Arm Limited Apparatus and method for branch prediction
US10296457B2 (en) * 2017-03-30 2019-05-21 Intel Corporation Reducing conflicts in direct mapped caches
US10481914B2 (en) 2017-11-08 2019-11-19 Arm Limited Predicting detected branches as taken when cumulative weight values in a weight table selected by history register bits exceed a threshold value

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0427041D0 (en) * 2004-12-09 2005-01-12 Sony Uk Ltd Information handling
CN101241476A (zh) * 2008-01-30 2008-08-13 中国科学院计算技术研究所 一种虚拟存储系统和方法
CN106201919A (zh) * 2015-06-01 2016-12-07 Arm 有限公司 缓存一致性

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张延松;王占伟;孙妍;王珊;: "内存数据库可控的page-color优化技术研究", 计算机研究与发展, no. 3, 15 September 2011 (2011-09-15) *

Also Published As

Publication number Publication date
GB201817689D0 (en) 2018-12-19
GB2578574A (en) 2020-05-20
US20200133851A1 (en) 2020-04-30
US11080184B2 (en) 2021-08-03
GB2578574B (en) 2021-03-10

Similar Documents

Publication Publication Date Title
US6438673B1 (en) Correlated address prediction
US6425055B1 (en) Way-predicting cache memory
US7721066B2 (en) Efficient encoding for detecting load dependency on store with misalignment
US20080065809A1 (en) Optimized software cache lookup for simd architectures
US9823932B2 (en) Branch prediction
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
TW201423584A (zh) 提取寬度預測器
US10481914B2 (en) Predicting detected branches as taken when cumulative weight values in a weight table selected by history register bits exceed a threshold value
US10740248B2 (en) Methods and systems for predicting virtual address
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
KR20210019584A (ko) 다중 테이블 분기 타겟 버퍼
US11288209B2 (en) Controlling cache entry replacement based on usefulness of cache entry
US20090063831A1 (en) Branch predictor for branches with asymmetric penalties
US7711904B2 (en) System, method and computer program product for executing a cache replacement algorithm
GB2577051A (en) Branch prediction circuitry
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
US6412050B1 (en) Memory record update filtering
US20170153894A1 (en) Apparatus and method for branch prediction
US20200133673A1 (en) Circuitry and method
US20200285477A1 (en) Branch predictor
US11080184B2 (en) Circuitry and method
US10860324B1 (en) Apparatus and method for making predictions for branch instructions

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